summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorInigoGutierrez <inigogf.95@gmail.com>2022-09-25 16:02:54 +0200
committerInigoGutierrez <inigogf.95@gmail.com>2022-09-25 16:02:54 +0200
commit6afdd9d74da250e47ac64d6690bd19d037045e99 (patch)
tree661f6cfb244c02bcd1fbfe8fb9b2bd9242a91394
parent93a55e61b59d20f7cd842cce02e5b18a63a23612 (diff)
parent1bdf4cdc22ae57d111efb2f7d71e405e5c7b3f11 (diff)
downloadqmk_firmware-6afdd9d74da250e47ac64d6690bd19d037045e99.tar.gz
qmk_firmware-6afdd9d74da250e47ac64d6690bd19d037045e99.zip
Merge branch 'master' into taamas
-rw-r--r--.github/dependabot.yml9
-rw-r--r--.github/workflows/api.yml5
-rw-r--r--.github/workflows/auto_tag.yml4
-rw-r--r--.github/workflows/cli.yml2
-rw-r--r--.github/workflows/develop_api.yml5
-rw-r--r--.github/workflows/develop_update.yml6
-rw-r--r--.github/workflows/docs.yml4
-rw-r--r--.github/workflows/feature_branch_update.yml6
-rw-r--r--.github/workflows/format.yml2
-rw-r--r--.github/workflows/format_push.yml8
-rw-r--r--.github/workflows/lint.yml2
-rw-r--r--.github/workflows/stale.yml2
-rw-r--r--.github/workflows/unit_test.yml2
-rw-r--r--.gitignore19
-rw-r--r--.gitmodules3
-rw-r--r--.vscode/settings.json3
-rw-r--r--Makefile7
-rw-r--r--builddefs/bootloader.mk9
-rw-r--r--builddefs/build_keyboard.mk39
-rw-r--r--builddefs/build_test.mk7
-rw-r--r--builddefs/common_features.mk167
-rw-r--r--builddefs/common_rules.mk118
-rw-r--r--builddefs/generic_features.mk2
-rw-r--r--builddefs/mcu_selection.mk72
-rw-r--r--builddefs/show_options.mk2
-rw-r--r--builddefs/testlist.mk1
-rw-r--r--data/mappings/defaults.json38
-rw-r--r--data/mappings/info_config.json12
-rw-r--r--data/mappings/info_rules.json11
-rw-r--r--data/mappings/keyboard_aliases.json17
-rw-r--r--data/schemas/api_keyboard.jsonschema1
-rw-r--r--data/schemas/definitions.jsonschema41
-rw-r--r--data/schemas/keyboard.jsonschema170
-rw-r--r--data/schemas/keymap.jsonschema7
-rw-r--r--data/templates/keyboard/readme.md2
-rw-r--r--docs/ChangeLog/20220827.md343
-rw-r--r--docs/_summary.md15
-rw-r--r--docs/api_docs.md2
-rw-r--r--docs/audio_driver.md8
-rw-r--r--docs/breaking_changes.md158
-rw-r--r--docs/breaking_changes_history.md1
-rw-r--r--docs/cli_commands.md85
-rw-r--r--docs/cli_tab_complete.md4
-rw-r--r--docs/compatible_microcontrollers.md8
-rw-r--r--docs/config_options.md33
-rw-r--r--docs/configurator_default_keymaps.md4
-rw-r--r--docs/custom_matrix.md6
-rw-r--r--docs/custom_quantum_functions.md211
-rw-r--r--docs/data_driven_config.md2
-rw-r--r--docs/driver_installation_zadig.md2
-rw-r--r--docs/eeprom_driver.md103
-rw-r--r--docs/faq_debug.md14
-rw-r--r--docs/faq_misc.md2
-rw-r--r--docs/feature_advanced_keycodes.md2
-rw-r--r--docs/feature_audio.md4
-rw-r--r--docs/feature_caps_word.md22
-rw-r--r--docs/feature_combo.md2
-rw-r--r--docs/feature_converters.md138
-rw-r--r--docs/feature_dynamic_macros.md1
-rw-r--r--docs/feature_eeprom.md134
-rw-r--r--docs/feature_encoders.md59
-rw-r--r--docs/feature_layers.md49
-rw-r--r--docs/feature_macros.md4
-rw-r--r--docs/feature_mouse_keys.md6
-rw-r--r--docs/feature_oled_driver.md2
-rw-r--r--docs/feature_pointing_device.md316
-rw-r--r--docs/feature_rgb_matrix.md39
-rw-r--r--docs/feature_rgblight.md15
-rw-r--r--docs/feature_secure.md54
-rw-r--r--docs/feature_send_string.md224
-rw-r--r--docs/feature_split_keyboard.md5
-rw-r--r--docs/feature_stenography.md123
-rw-r--r--docs/feature_tap_dance.md151
-rw-r--r--docs/feature_terminal.md107
-rw-r--r--docs/feature_unicode.md3
-rw-r--r--docs/flashing.md65
-rw-r--r--docs/flashing_bootloadhid.md2
-rw-r--r--docs/hand_wire.md33
-rw-r--r--docs/ja/_summary.md1
-rw-r--r--docs/ja/api_docs.md2
-rw-r--r--docs/ja/config_options.md8
-rw-r--r--docs/ja/custom_matrix.md6
-rw-r--r--docs/ja/faq_misc.md2
-rw-r--r--docs/ja/feature_audio.md2
-rw-r--r--docs/ja/feature_dynamic_macros.md1
-rw-r--r--docs/ja/feature_stenography.md2
-rw-r--r--docs/ja/feature_tap_dance.md1
-rw-r--r--docs/ja/feature_terminal.md112
-rw-r--r--docs/ja/flashing.md12
-rw-r--r--docs/ja/flashing_bootloadhid.md2
-rw-r--r--docs/ja/keycodes.md8
-rw-r--r--docs/ja/quantum_keycodes.md8
-rw-r--r--docs/ja/understanding_qmk.md1
-rw-r--r--docs/keycodes.md17
-rw-r--r--docs/keycodes_magic.md3
-rw-r--r--docs/keymap.md3
-rw-r--r--docs/newbs_building_firmware_workflow.md189
-rw-r--r--docs/newbs_flashing.md2
-rw-r--r--docs/newbs_getting_started.md18
-rw-r--r--docs/newbs_learn_more_resources.md1
-rw-r--r--docs/platformdev_blackpill_f411.md48
-rw-r--r--docs/platformdev_chibios_earlyinit.md4
-rw-r--r--docs/platformdev_proton_c.md77
-rw-r--r--docs/platformdev_rp2040.md125
-rw-r--r--docs/pr_checklist.md24
-rw-r--r--docs/proton_c_conversion.md91
-rw-r--r--docs/quantum_keycodes.md14
-rw-r--r--docs/quantum_painter.md54
-rw-r--r--docs/reference_info_json.md113
-rw-r--r--docs/serial_driver.md322
-rw-r--r--docs/squeezing_avr.md5
-rw-r--r--docs/understanding_qmk.md74
-rw-r--r--docs/ws2812_driver.md62
-rw-r--r--docs/zh-cn/_summary.md1
-rw-r--r--docs/zh-cn/api_docs.md2
-rw-r--r--docs/zh-cn/configurator_default_keymaps.md4
-rw-r--r--docs/zh-cn/custom_quantum_functions.md7
-rw-r--r--docs/zh-cn/flashing.md20
-rw-r--r--docs/zh-cn/flashing_bootloadhid.md2
-rw-r--r--drivers/eeprom/eeprom_i2c.h5
-rw-r--r--drivers/eeprom/eeprom_spi.c42
-rw-r--r--drivers/eeprom/eeprom_wear_leveling.c23
-rw-r--r--drivers/flash/flash_spi.c8
-rw-r--r--drivers/gpio/pca9505.c166
-rw-r--r--drivers/gpio/pca9505.h67
-rw-r--r--drivers/led/aw20216.c6
-rw-r--r--drivers/led/ckled2001-simple.c218
-rw-r--r--drivers/led/ckled2001-simple.h337
-rw-r--r--drivers/led/ckled2001.c21
-rw-r--r--drivers/led/ckled2001.h4
-rw-r--r--drivers/led/issi/is31fl3733-simple.c6
-rw-r--r--drivers/led/issi/is31fl3733.c6
-rw-r--r--drivers/led/issi/is31fl3736.c6
-rw-r--r--drivers/led/issi/is31fl3737.c6
-rw-r--r--drivers/led/issi/is31fl3741.c6
-rw-r--r--drivers/painter/gc9a01/qp_gc9a01.c9
-rw-r--r--drivers/painter/ili9xxx/qp_ili9163.c9
-rw-r--r--drivers/painter/ili9xxx/qp_ili9341.c9
-rw-r--r--drivers/painter/ili9xxx/qp_ili9488.c120
-rw-r--r--drivers/painter/ili9xxx/qp_ili9488.h37
-rw-r--r--drivers/painter/ili9xxx/qp_ili9xxx_opcodes.h1
-rw-r--r--drivers/painter/ssd1351/qp_ssd1351.c9
-rw-r--r--drivers/painter/st77xx/qp_st7735.c144
-rw-r--r--drivers/painter/st77xx/qp_st7735.h45
-rw-r--r--drivers/painter/st77xx/qp_st7735_opcodes.h31
-rw-r--r--drivers/painter/st77xx/qp_st7789.c9
-rw-r--r--drivers/painter/tft_panel/qp_tft_panel.c60
-rw-r--r--drivers/painter/tft_panel/qp_tft_panel.h16
-rw-r--r--drivers/ps2/ps2.h1
-rw-r--r--drivers/ps2/ps2_interrupt.c4
-rw-r--r--drivers/ps2/ps2_mouse.c19
-rw-r--r--drivers/sensors/adns5050.h18
-rw-r--r--drivers/sensors/adns9800.h6
-rw-r--r--drivers/sensors/cirque_pinnacle.c289
-rw-r--r--drivers/sensors/cirque_pinnacle.h111
-rw-r--r--drivers/sensors/cirque_pinnacle_gestures.c238
-rw-r--r--drivers/sensors/cirque_pinnacle_gestures.h110
-rw-r--r--drivers/sensors/cirque_pinnacle_i2c.c4
-rw-r--r--drivers/sensors/cirque_pinnacle_regdefs.h405
-rw-r--r--drivers/sensors/cirque_pinnacle_spi.c4
-rw-r--r--drivers/sensors/paw3204.c172
-rw-r--r--drivers/sensors/paw3204.h76
-rw-r--r--drivers/sensors/pimoroni_trackball.c13
-rw-r--r--drivers/sensors/pimoroni_trackball.h1
-rw-r--r--drivers/sensors/pmw3360.c567
-rw-r--r--drivers/sensors/pmw3360.h134
-rw-r--r--drivers/sensors/pmw3360_firmware.h288
-rw-r--r--drivers/sensors/pmw3389.c580
-rw-r--r--drivers/sensors/pmw3389.h135
-rw-r--r--drivers/sensors/pmw3389_firmware.h307
-rw-r--r--drivers/sensors/pmw33xx_common.c219
-rw-r--r--drivers/sensors/pmw33xx_common.h156
-rw-r--r--drivers/serial.h10
-rw-r--r--drivers/wear_leveling/wear_leveling_flash_spi.c101
-rw-r--r--drivers/wear_leveling/wear_leveling_flash_spi_config.h34
-rw-r--r--keyboards/0_sixty/base/info.json9
-rw-r--r--keyboards/0_sixty/base/rules.mk (renamed from keyboards/boardsource/microdox/.noci)0
-rw-r--r--keyboards/0_sixty/config.h13
-rw-r--r--keyboards/0_sixty/info.json6
-rw-r--r--keyboards/0_sixty/rules.mk2
-rw-r--r--keyboards/0_sixty/underglow/config.h9
-rw-r--r--keyboards/0_sixty/underglow/info.json9
-rw-r--r--keyboards/0_sixty/underglow/rules.mk1
-rw-r--r--keyboards/0_sixty/underglow/underglow.h19
-rw-r--r--keyboards/0xc7/61key/config.h1
-rw-r--r--keyboards/0xc7/61key/readme.md2
-rw-r--r--keyboards/0xcb/static/config.h1
-rw-r--r--keyboards/0xcb/static/keymaps/bongocat/keymap.c2
-rw-r--r--keyboards/0xcb/tutelpad/config.h89
-rw-r--r--keyboards/0xcb/tutelpad/info.json26
-rw-r--r--keyboards/0xcb/tutelpad/keymaps/default/keymap.c29
-rw-r--r--keyboards/0xcb/tutelpad/keymaps/via/keymap.c39
-rw-r--r--keyboards/0xcb/tutelpad/keymaps/via/rules.mk1
-rw-r--r--keyboards/0xcb/tutelpad/readme.md19
-rw-r--r--keyboards/0xcb/tutelpad/rules.mk21
-rw-r--r--keyboards/0xcb/tutelpad/tutelpad.c106
-rw-r--r--keyboards/0xcb/tutelpad/tutelpad.h35
-rw-r--r--keyboards/10bleoledhub/config.h1
-rw-r--r--keyboards/1k/config.h7
-rw-r--r--keyboards/1k/info.json8
-rw-r--r--keyboards/1k/keymaps/tap_dance/config.h1
-rw-r--r--keyboards/1upkeyboards/1up60hse/config.h1
-rw-r--r--keyboards/1upkeyboards/1up60hse/keymaps/vosechu/keymap.c2
-rw-r--r--keyboards/1upkeyboards/1up60hte/config.h1
-rw-r--r--keyboards/1upkeyboards/1up60hte/keymaps/badger/keymap.c4
-rw-r--r--keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c2
-rw-r--r--keyboards/1upkeyboards/1up60rgb/config.h1
-rw-r--r--keyboards/1upkeyboards/1up60rgb/keymaps/badger/keymap.c4
-rw-r--r--keyboards/1upkeyboards/1up60rgb/keymaps/raffle/keymap.c2
-rw-r--r--keyboards/1upkeyboards/pi40/config.h99
-rw-r--r--keyboards/1upkeyboards/pi40/halconf.h7
-rw-r--r--keyboards/1upkeyboards/pi40/info.json115
-rw-r--r--keyboards/1upkeyboards/pi40/keymaps/default/keymap.c124
-rw-r--r--keyboards/1upkeyboards/pi40/keymaps/default/rules.mk1
-rw-r--r--keyboards/1upkeyboards/pi40/keymaps/via/keymap.c268
-rw-r--r--keyboards/1upkeyboards/pi40/keymaps/via/rules.mk4
-rw-r--r--keyboards/1upkeyboards/pi40/lib/glcdfont.c231
-rw-r--r--keyboards/1upkeyboards/pi40/mcuconf.h10
-rw-r--r--keyboards/1upkeyboards/pi40/pi40.c312
-rw-r--r--keyboards/1upkeyboards/pi40/readme.md38
-rw-r--r--keyboards/1upkeyboards/pi40/rules.mk26
-rw-r--r--keyboards/1upkeyboards/super16/config.h1
-rw-r--r--keyboards/1upkeyboards/super16/keymaps/ahk_companion/keymap.c4
-rw-r--r--keyboards/1upkeyboards/super16/keymaps/nblyumberg/keymap.c2
-rw-r--r--keyboards/1upkeyboards/super16v2/config.h1
-rw-r--r--keyboards/1upkeyboards/super16v2/keymaps/mouse/keymap.c2
-rw-r--r--keyboards/1upkeyboards/super16v2/readme.md2
-rw-r--r--keyboards/1upkeyboards/sweet16/config.h5
-rw-r--r--keyboards/1upkeyboards/sweet16/info.json6
-rw-r--r--keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/config.h3
-rw-r--r--keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/keymap.c2
-rw-r--r--keyboards/1upkeyboards/sweet16/v1/config.h5
-rw-r--r--keyboards/1upkeyboards/sweet16/v1/info.json6
-rw-r--r--keyboards/1upkeyboards/sweet16/v2/promicro/config.h5
-rw-r--r--keyboards/1upkeyboards/sweet16/v2/promicro/info.json6
-rw-r--r--keyboards/1upkeyboards/sweet16/v2/proton_c/config.h5
-rw-r--r--keyboards/1upkeyboards/sweet16/v2/proton_c/info.json6
-rw-r--r--keyboards/25keys/aleth42/info.json7
-rw-r--r--keyboards/25keys/aleth42/rev0/config.h8
-rw-r--r--keyboards/25keys/aleth42/rev0/info.json5
-rw-r--r--keyboards/25keys/aleth42/rev1/config.h8
-rw-r--r--keyboards/25keys/aleth42/rev1/info.json5
-rw-r--r--keyboards/25keys/cassette42/config.h1
-rw-r--r--keyboards/25keys/zinc/info.json11
-rw-r--r--keyboards/25keys/zinc/keymaps/ginjake/keymap.c2
-rw-r--r--keyboards/25keys/zinc/keymaps/monks/keymap.c2
-rw-r--r--keyboards/25keys/zinc/keymaps/toshi0383/keymap.c4
-rw-r--r--keyboards/25keys/zinc/rev1/config.h7
-rw-r--r--keyboards/25keys/zinc/rev1/info.json9
-rw-r--r--keyboards/25keys/zinc/reva/config.h7
-rw-r--r--keyboards/25keys/zinc/reva/info.json9
-rw-r--r--keyboards/2key2crawl/config.h1
-rw-r--r--keyboards/30wer/config.h1
-rw-r--r--keyboards/3keyecosystem/2key2/config.h1
-rw-r--r--keyboards/3w6/info.json5
-rw-r--r--keyboards/3w6/rev1/config.h10
-rw-r--r--keyboards/3w6/rev1/info.json5
-rw-r--r--keyboards/3w6/rev2/config.h10
-rw-r--r--keyboards/3w6/rev2/info.json5
-rw-r--r--keyboards/40percentclub/25/config.h1
-rw-r--r--keyboards/40percentclub/4pack/config.h1
-rw-r--r--keyboards/40percentclub/4x4/config.h1
-rw-r--r--keyboards/40percentclub/5x5/config.h1
-rw-r--r--keyboards/40percentclub/6lit/config.h1
-rw-r--r--keyboards/40percentclub/foobar/config.h1
-rw-r--r--keyboards/40percentclub/gherkin/config.h1
-rw-r--r--keyboards/40percentclub/gherkin/keymaps/bbaserdem/README.md11
-rw-r--r--keyboards/40percentclub/gherkin/keymaps/bbaserdem/config.h9
-rw-r--r--keyboards/40percentclub/gherkin/keymaps/bbaserdem/keymap.c36
-rw-r--r--keyboards/40percentclub/gherkin/keymaps/bbaserdem/rules.mk13
-rw-r--r--keyboards/40percentclub/gherkin/keymaps/itsaferbie/keymap.c2
-rw-r--r--keyboards/40percentclub/gherkin/keymaps/midi/keymap.c2
-rw-r--r--keyboards/40percentclub/gherkin/keymaps/mjt/keymap.c2
-rw-r--r--keyboards/40percentclub/gherkin/keymaps/pierrec83/keymap.json2
-rw-r--r--keyboards/40percentclub/gherkin/keymaps/stevexyz/config.h2
-rw-r--r--keyboards/40percentclub/gherkin/keymaps/talljoe-gherkin/keymap.c2
-rw-r--r--keyboards/40percentclub/half_n_half/config.h1
-rw-r--r--keyboards/40percentclub/half_n_half/keymaps/Boy_314/keymap.c6
-rw-r--r--keyboards/40percentclub/i75/promicro/config.h1
-rw-r--r--keyboards/40percentclub/i75/teensy2/config.h1
-rw-r--r--keyboards/40percentclub/luddite/config.h1
-rw-r--r--keyboards/40percentclub/mf68/config.h1
-rw-r--r--keyboards/40percentclub/mf68/keymaps/delivrance/rules.mk1
-rw-r--r--keyboards/40percentclub/mf68/keymaps/mf68_ble/config.h2
-rw-r--r--keyboards/40percentclub/nano/config.h1
-rw-r--r--keyboards/40percentclub/nein/config.h1
-rw-r--r--keyboards/40percentclub/nori/config.h1
-rw-r--r--keyboards/40percentclub/nori/keymaps/default/keymap.c14
-rw-r--r--keyboards/40percentclub/nori/keymaps/wings_36key/keymap.c4
-rw-r--r--keyboards/40percentclub/polyandry/promicro/config.h1
-rw-r--r--keyboards/40percentclub/polyandry/readme.md2
-rw-r--r--keyboards/40percentclub/polyandry/teensy2/config.h1
-rw-r--r--keyboards/40percentclub/sixpack/config.h1
-rw-r--r--keyboards/40percentclub/tomato/config.h1
-rw-r--r--keyboards/40percentclub/ut47/config.h1
-rw-r--r--keyboards/40percentclub/ut47/keymaps/nordic/keymap.c4
-rw-r--r--keyboards/45_ats/config.h1
-rw-r--r--keyboards/4by3/config.h1
-rw-r--r--keyboards/4pplet/aekiso60/rev_a/config.h7
-rw-r--r--keyboards/4pplet/aekiso60/rev_a/info.json6
-rw-r--r--keyboards/4pplet/bootleg/info.json77
-rw-r--r--keyboards/4pplet/bootleg/rev_a/config.h7
-rw-r--r--keyboards/4pplet/bootleg/rev_a/info.json83
-rw-r--r--keyboards/4pplet/eagle_viper_rep/info.json76
-rw-r--r--keyboards/4pplet/eagle_viper_rep/rev_a/config.h7
-rw-r--r--keyboards/4pplet/eagle_viper_rep/rev_a/info.json82
-rw-r--r--keyboards/4pplet/perk60_iso/keymaps/default/keymap.c34
-rw-r--r--keyboards/4pplet/perk60_iso/keymaps/via/keymap.c49
-rw-r--r--keyboards/4pplet/perk60_iso/keymaps/via/rules.mk (renamed from keyboards/peej/rosaline/keymaps/via-ortho/rules.mk)0
-rw-r--r--keyboards/4pplet/perk60_iso/readme.md17
-rw-r--r--keyboards/4pplet/perk60_iso/rev_a/config.h70
-rw-r--r--keyboards/4pplet/perk60_iso/rev_a/halconf.h25
-rw-r--r--keyboards/4pplet/perk60_iso/rev_a/info.json16
-rw-r--r--keyboards/4pplet/perk60_iso/rev_a/mcuconf.h27
-rw-r--r--keyboards/4pplet/perk60_iso/rev_a/readme.md17
-rw-r--r--keyboards/4pplet/perk60_iso/rev_a/rev_a.c126
-rw-r--r--keyboards/4pplet/perk60_iso/rev_a/rev_a.h43
-rw-r--r--keyboards/4pplet/perk60_iso/rev_a/rules.mk26
-rw-r--r--keyboards/4pplet/steezy60/keymaps/4pplet/keymap.c2
-rw-r--r--keyboards/4pplet/steezy60/rev_a/config.h7
-rw-r--r--keyboards/4pplet/steezy60/rev_a/info.json6
-rw-r--r--keyboards/4pplet/waffling60/info.json5
-rw-r--r--keyboards/4pplet/waffling60/rev_a/config.h7
-rw-r--r--keyboards/4pplet/waffling60/rev_a/info.json7
-rw-r--r--keyboards/4pplet/waffling60/rev_b/config.h7
-rw-r--r--keyboards/4pplet/waffling60/rev_b/info.json7
-rw-r--r--keyboards/4pplet/waffling60/rev_c/config.h7
-rw-r--r--keyboards/4pplet/waffling60/rev_c/info.json7
-rw-r--r--keyboards/4pplet/waffling80/info.json10
-rw-r--r--keyboards/4pplet/waffling80/rev_a/config.h7
-rw-r--r--keyboards/4pplet/waffling80/rev_a/info.json16
-rw-r--r--keyboards/4pplet/waffling80/rev_a/rev_a.h2
-rw-r--r--keyboards/4pplet/yakiimo/info.json10
-rw-r--r--keyboards/4pplet/yakiimo/rev_a/config.h9
-rw-r--r--keyboards/4pplet/yakiimo/rev_a/info.json16
-rw-r--r--keyboards/4pplet/yakiimo/rev_a/mcuconf.h37
-rw-r--r--keyboards/4pplet/yakiimo/rev_a/rules.mk1
-rw-r--r--keyboards/8pack/config.h6
-rw-r--r--keyboards/8pack/info.json5
-rw-r--r--keyboards/8pack/rev11/config.h3
-rw-r--r--keyboards/8pack/rev11/info.json5
-rw-r--r--keyboards/8pack/rev12/config.h3
-rw-r--r--keyboards/8pack/rev12/info.json5
-rw-r--r--keyboards/9key/config.h1
-rw-r--r--keyboards/9key/keymaps/bcat/keymap.c2
-rw-r--r--keyboards/a_dux/config.h8
-rw-r--r--keyboards/a_dux/info.json6
-rw-r--r--keyboards/a_dux/keymaps/daliusd/keymap.c2
-rw-r--r--keyboards/a_dux/keymaps/manna-harbour_miryoku/config.h19
-rw-r--r--keyboards/a_dux/keymaps/manna-harbour_miryoku/keymap.c4
-rw-r--r--keyboards/a_dux/keymaps/manna-harbour_miryoku/rules.mk4
-rw-r--r--keyboards/a_dux/readme.md2
-rw-r--r--keyboards/abacus/config.h8
-rw-r--r--keyboards/abacus/info.json6
-rw-r--r--keyboards/abatskeyboardclub/nayeon/config.h121
-rw-r--r--keyboards/abatskeyboardclub/nayeon/info.json226
-rw-r--r--keyboards/abatskeyboardclub/nayeon/keymaps/default/keymap.c36
-rw-r--r--keyboards/abatskeyboardclub/nayeon/keymaps/iso/keymap.c36
-rw-r--r--keyboards/abatskeyboardclub/nayeon/keymaps/via/keymap.c34
-rw-r--r--keyboards/abatskeyboardclub/nayeon/nayeon.c27
-rw-r--r--keyboards/abatskeyboardclub/nayeon/nayeon.h44
-rw-r--r--keyboards/abatskeyboardclub/nayeon/readme.md2
-rw-r--r--keyboards/abatskeyboardclub/nayeon/rules.mk23
-rw-r--r--keyboards/abstract/ellipse/info.json10
-rw-r--r--keyboards/abstract/ellipse/rev1/config.h8
-rw-r--r--keyboards/abstract/ellipse/rev1/info.json16
-rw-r--r--keyboards/acekeyboard/titan60/config.h8
-rw-r--r--keyboards/acekeyboard/titan60/info.json6
-rw-r--r--keyboards/acheron/apollo/87h/87h.c16
-rw-r--r--keyboards/acheron/apollo/87h/87h.h24
-rw-r--r--keyboards/acheron/apollo/87h/delta/config.h103
-rw-r--r--keyboards/acheron/apollo/87h/delta/delta.c61
-rw-r--r--keyboards/acheron/apollo/87h/delta/delta.h38
-rw-r--r--keyboards/acheron/apollo/87h/delta/halconf.h22
-rw-r--r--keyboards/acheron/apollo/87h/delta/info.json7
-rwxr-xr-xkeyboards/acheron/apollo/87h/delta/keymaps/default/keymap.c53
-rwxr-xr-xkeyboards/acheron/apollo/87h/delta/keymaps/via/keymap.c53
-rw-r--r--keyboards/acheron/apollo/87h/delta/keymaps/via/rules.mk (renamed from keyboards/peej/rosaline/keymaps/via/rules.mk)0
-rw-r--r--keyboards/acheron/apollo/87h/delta/mcuconf.h25
-rw-r--r--keyboards/acheron/apollo/87h/delta/rules.mk26
-rw-r--r--keyboards/acheron/apollo/87h/gamma/config.h100
-rw-r--r--keyboards/acheron/apollo/87h/gamma/gamma.c146
-rw-r--r--keyboards/acheron/apollo/87h/gamma/gamma.h38
-rw-r--r--keyboards/acheron/apollo/87h/gamma/halconf.h21
-rw-r--r--keyboards/acheron/apollo/87h/gamma/info.json7
-rwxr-xr-xkeyboards/acheron/apollo/87h/gamma/keymaps/default/keymap.c53
-rwxr-xr-xkeyboards/acheron/apollo/87h/gamma/keymaps/via/keymap.c53
-rw-r--r--keyboards/acheron/apollo/87h/gamma/keymaps/via/rules.mk1
-rw-r--r--keyboards/acheron/apollo/87h/gamma/mcuconf.h22
-rw-r--r--keyboards/acheron/apollo/87h/gamma/rules.mk27
-rw-r--r--keyboards/acheron/apollo/87h/info.json106
-rw-r--r--keyboards/acheron/apollo/87h/readme.md25
-rw-r--r--keyboards/acheron/apollo/87htsc/87htsc.c47
-rw-r--r--keyboards/acheron/apollo/87htsc/87htsc.h39
-rw-r--r--keyboards/acheron/apollo/87htsc/config.h103
-rw-r--r--keyboards/acheron/apollo/87htsc/halconf.h22
-rw-r--r--keyboards/acheron/apollo/87htsc/info.json108
-rwxr-xr-xkeyboards/acheron/apollo/87htsc/keymaps/default/keymap.c53
-rwxr-xr-xkeyboards/acheron/apollo/87htsc/keymaps/via/keymap.c53
-rw-r--r--keyboards/acheron/apollo/87htsc/keymaps/via/rules.mk1
-rw-r--r--keyboards/acheron/apollo/87htsc/mcuconf.h25
-rw-r--r--keyboards/acheron/apollo/87htsc/rules.mk26
-rw-r--r--keyboards/acheron/apollo/88htsc/88htsc.c42
-rw-r--r--keyboards/acheron/apollo/88htsc/88htsc.h39
-rw-r--r--keyboards/acheron/apollo/88htsc/config.h103
-rw-r--r--keyboards/acheron/apollo/88htsc/halconf.h22
-rw-r--r--keyboards/acheron/apollo/88htsc/info.json109
-rwxr-xr-xkeyboards/acheron/apollo/88htsc/keymaps/default/keymap.c53
-rwxr-xr-xkeyboards/acheron/apollo/88htsc/keymaps/via/keymap.c53
-rw-r--r--keyboards/acheron/apollo/88htsc/keymaps/via/rules.mk1
-rw-r--r--keyboards/acheron/apollo/88htsc/mcuconf.h25
-rw-r--r--keyboards/acheron/apollo/88htsc/rules.mk27
-rw-r--r--keyboards/acheron/apollo/readme.md54
-rw-r--r--keyboards/acheron/arctic/config.h7
-rw-r--r--keyboards/acheron/arctic/info.json6
-rw-r--r--keyboards/acheron/athena/alpha/alpha.c45
-rw-r--r--keyboards/acheron/athena/alpha/alpha.h196
-rw-r--r--keyboards/acheron/athena/alpha/config.h67
-rw-r--r--keyboards/acheron/athena/alpha/halconf.h24
-rw-r--r--keyboards/acheron/athena/alpha/info.json7
-rw-r--r--keyboards/acheron/athena/alpha/keymaps/default/keymap.c51
-rw-r--r--keyboards/acheron/athena/alpha/keymaps/via/keymap.c51
-rw-r--r--keyboards/acheron/athena/alpha/keymaps/via/rules.mk1
-rw-r--r--keyboards/acheron/athena/alpha/mcuconf.h31
-rw-r--r--keyboards/acheron/athena/alpha/rules.mk25
-rw-r--r--keyboards/acheron/athena/athena.c16
-rw-r--r--keyboards/acheron/athena/athena.h24
-rw-r--r--keyboards/acheron/athena/beta/beta.c35
-rw-r--r--keyboards/acheron/athena/beta/beta.h196
-rw-r--r--keyboards/acheron/athena/beta/config.h67
-rw-r--r--keyboards/acheron/athena/beta/halconf.h24
-rw-r--r--keyboards/acheron/athena/beta/info.json7
-rw-r--r--keyboards/acheron/athena/beta/keymaps/default/keymap.c51
-rw-r--r--keyboards/acheron/athena/beta/keymaps/via/keymap.c51
-rw-r--r--keyboards/acheron/athena/beta/keymaps/via/rules.mk1
-rw-r--r--keyboards/acheron/athena/beta/mcuconf.h31
-rw-r--r--keyboards/acheron/athena/beta/rules.mk24
-rw-r--r--keyboards/acheron/athena/info.json895
-rw-r--r--keyboards/acheron/athena/readme.md25
-rw-r--r--keyboards/acheron/austin/config.h7
-rwxr-xr-xkeyboards/acheron/austin/info.json6
-rw-r--r--keyboards/acheron/elongate/beta/config.h8
-rw-r--r--keyboards/acheron/elongate/beta/info.json6
-rwxr-xr-xkeyboards/acheron/elongate/beta/readme.md2
-rwxr-xr-xkeyboards/acheron/elongate/delta/config.h7
-rw-r--r--keyboards/acheron/elongate/delta/info.json6
-rwxr-xr-xkeyboards/acheron/elongate/delta/readme.md2
-rw-r--r--keyboards/acheron/keebspcb/config.h7
-rw-r--r--keyboards/acheron/keebspcb/info.json6
-rw-r--r--keyboards/acheron/lasgweloth/config.h7
-rw-r--r--keyboards/acheron/lasgweloth/info.json6
-rw-r--r--keyboards/acheron/shark/alpha/config.h8
-rw-r--r--keyboards/acheron/shark/alpha/info.json4
-rw-r--r--keyboards/acheron/shark/beta/config.h9
-rw-r--r--keyboards/acheron/shark/beta/info.json7
-rw-r--r--keyboards/acheron/shark/beta/mcuconf.h13
-rw-r--r--keyboards/acheron/shark/beta/rules.mk1
-rw-r--r--keyboards/acheron/shark/info.json6
-rw-r--r--keyboards/acheron/shark/readme.md4
-rw-r--r--keyboards/ada/ada1800mini/config.h7
-rw-r--r--keyboards/ada/ada1800mini/info.json6
-rw-r--r--keyboards/ada/ada1800mini/readme.md2
-rw-r--r--keyboards/ada/infinity81/config.h8
-rw-r--r--keyboards/ada/infinity81/info.json6
-rw-r--r--keyboards/ada/infinity81/readme.md2
-rw-r--r--keyboards/adafruit/macropad/config.h131
-rw-r--r--keyboards/adafruit/macropad/halconf.h28
-rw-r--r--keyboards/adafruit/macropad/info.json30
-rw-r--r--keyboards/adafruit/macropad/keymaps/default/keymap.c114
-rw-r--r--keyboards/adafruit/macropad/keymaps/default/rules.mk1
-rw-r--r--keyboards/adafruit/macropad/keymaps/via/keymap.c138
-rw-r--r--keyboards/adafruit/macropad/keymaps/via/rules.mk2
-rw-r--r--keyboards/adafruit/macropad/lib/oled_driver_spi.h29
-rw-r--r--keyboards/adafruit/macropad/lib/ssd1306_sh1106.c827
-rw-r--r--keyboards/adafruit/macropad/macropad.c56
-rw-r--r--keyboards/adafruit/macropad/macropad.h38
-rw-r--r--keyboards/adafruit/macropad/mcuconf.h22
-rw-r--r--keyboards/adafruit/macropad/readme.md38
-rw-r--r--keyboards/adafruit/macropad/rules.mk26
-rw-r--r--keyboards/adelheid/config.h8
-rw-r--r--keyboards/adelheid/info.json6
-rw-r--r--keyboards/adkb96/info.json8
-rw-r--r--keyboards/adkb96/rev1/config.h7
-rw-r--r--keyboards/adm42/config.h8
-rw-r--r--keyboards/adm42/info.json62
-rw-r--r--keyboards/adm42/readme.md2
-rw-r--r--keyboards/adpenrose/kintsugi/config.h8
-rw-r--r--keyboards/adpenrose/kintsugi/info.json6
-rw-r--r--keyboards/adpenrose/kintsugi/readme.md2
-rw-r--r--keyboards/adpenrose/shisaku/config.h37
-rw-r--r--keyboards/adpenrose/shisaku/info.json17
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/default/keymap.c32
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/default/readme.md1
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/solenoid/keymap.c32
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/solenoid/readme.md1
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/solenoid/rules.mk4
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/via/keymap.c32
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/via/readme.md1
-rw-r--r--keyboards/adpenrose/shisaku/keymaps/via/rules.mk (renamed from keyboards/mechwild/mokulua/keymaps/silly/rules.mk)0
-rw-r--r--keyboards/adpenrose/shisaku/readme.md29
-rw-r--r--keyboards/adpenrose/shisaku/rules.mk18
-rw-r--r--keyboards/adpenrose/shisaku/shisaku.c4
-rw-r--r--keyboards/adpenrose/shisaku/shisaku.h32
-rw-r--r--keyboards/aeboards/aegis/config.h8
-rw-r--r--keyboards/aeboards/aegis/info.json6
-rwxr-xr-xkeyboards/aeboards/constellation/rev1/config.h8
-rw-r--r--keyboards/aeboards/constellation/rev1/info.json8
-rwxr-xr-xkeyboards/aeboards/constellation/rev2/config.h8
-rw-r--r--keyboards/aeboards/constellation/rev2/info.json8
-rw-r--r--keyboards/aeboards/ext65/info.json5
-rw-r--r--keyboards/aeboards/ext65/rev1/config.h8
-rw-r--r--keyboards/aeboards/ext65/rev1/info.json5
-rw-r--r--keyboards/aeboards/ext65/rev2/config.h7
-rw-r--r--keyboards/aeboards/ext65/rev2/info.json5
-rw-r--r--keyboards/afternoonlabs/breeze/keymaps/eithanshavit/keymap.c2
-rw-r--r--keyboards/afternoonlabs/breeze/rev0/config.h7
-rw-r--r--keyboards/afternoonlabs/breeze/rev0/info.json7
-rw-r--r--keyboards/afternoonlabs/breeze/rev1/config.h7
-rw-r--r--keyboards/afternoonlabs/breeze/rev1/info.json7
-rw-r--r--keyboards/afternoonlabs/gust/rev1/config.h7
-rw-r--r--keyboards/afternoonlabs/gust/rev1/info.json7
-rw-r--r--keyboards/afternoonlabs/oceanbreeze/rev1/config.h7
-rw-r--r--keyboards/afternoonlabs/oceanbreeze/rev1/info.json7
-rw-r--r--keyboards/afternoonlabs/southern_breeze/rev1/config.h7
-rw-r--r--keyboards/afternoonlabs/southern_breeze/rev1/info.json7
-rw-r--r--keyboards/afternoonlabs/summer_breeze/rev1/config.h7
-rw-r--r--keyboards/afternoonlabs/summer_breeze/rev1/info.json7
-rw-r--r--keyboards/ai/config.h20
-rw-r--r--keyboards/ai/info.json51
-rw-r--r--keyboards/ai/keymaps/default/keymap.c24
-rw-r--r--keyboards/ai/readme.md34
-rw-r--r--keyboards/ai/rules.mk1
-rw-r--r--keyboards/ai03/andromeda/config.h7
-rw-r--r--keyboards/ai03/andromeda/info.json6
-rw-r--r--keyboards/ai03/equinox/config.h8
-rw-r--r--keyboards/ai03/equinox/info.json6
-rw-r--r--keyboards/ai03/equinox/keymaps/crd/keymap.c2
-rw-r--r--keyboards/ai03/jp60/config.h8
-rw-r--r--keyboards/ai03/jp60/info.json6
-rw-r--r--keyboards/ai03/jp60/keymaps/default/config.h20
-rw-r--r--keyboards/ai03/jp60/keymaps/via/config.h20
-rw-r--r--keyboards/ai03/jp60/readme.md2
-rw-r--r--keyboards/ai03/lunar/config.h8
-rw-r--r--keyboards/ai03/lunar/info.json6
-rw-r--r--keyboards/ai03/lunar/keymaps/muzfuz/keymap.c2
-rw-r--r--keyboards/ai03/orbit/config.h8
-rw-r--r--keyboards/ai03/orbit/info.json8
-rw-r--r--keyboards/ai03/orbit_x/config.h8
-rw-r--r--keyboards/ai03/orbit_x/info.json8
-rw-r--r--keyboards/ai03/polaris/config.h8
-rw-r--r--keyboards/ai03/polaris/info.json6
-rw-r--r--keyboards/ai03/polaris/keymaps/mekberg/keymap.c2
-rw-r--r--keyboards/ai03/polaris/keymaps/testing/keymap.c2
-rw-r--r--keyboards/ai03/quasar/config.h8
-rw-r--r--keyboards/ai03/quasar/info.json8
-rw-r--r--keyboards/ai03/quasar/keymaps/ai03/keymap.c2
-rw-r--r--keyboards/ai03/soyuz/config.h8
-rw-r--r--keyboards/ai03/soyuz/info.json6
-rw-r--r--keyboards/ai03/vega/config.h7
-rw-r--r--keyboards/ai03/vega/info.json6
-rw-r--r--keyboards/ai03/voyager60_alps/config.h7
-rw-r--r--keyboards/ai03/voyager60_alps/info.json6
-rw-r--r--keyboards/aidansmithdotdev/fine40/config.h12
-rw-r--r--keyboards/aidansmithdotdev/fine40/fine40.c85
-rw-r--r--keyboards/aidansmithdotdev/fine40/fine40.h3
-rw-r--r--keyboards/aidansmithdotdev/fine40/info.json231
-rw-r--r--keyboards/aidansmithdotdev/fine40/keymaps/default/keymap.c43
-rw-r--r--keyboards/aidansmithdotdev/fine40/keymaps/via/keymap.c43
-rw-r--r--keyboards/aidansmithdotdev/fine40/keymaps/via/rules.mk1
-rw-r--r--keyboards/aidansmithdotdev/fine40/readme.md27
-rw-r--r--keyboards/aidansmithdotdev/fine40/rules.mk1
-rw-r--r--keyboards/akb/eb46/config.h6
-rw-r--r--keyboards/akb/eb46/info.json6
-rw-r--r--keyboards/akb/ogr/config.h20
-rw-r--r--keyboards/akb/ogr/info.json115
-rw-r--r--keyboards/akb/ogr/keymaps/default/keymap.c39
-rw-r--r--keyboards/akb/ogr/keymaps/via/keymap.c39
-rw-r--r--keyboards/akb/ogr/keymaps/via/rules.mk1
-rw-r--r--keyboards/akb/ogr/readme.md29
-rw-r--r--keyboards/akb/ogr/rules.mk1
-rw-r--r--keyboards/akb/ogrn/config.h20
-rw-r--r--keyboards/akb/ogrn/info.json59
-rw-r--r--keyboards/akb/ogrn/keymaps/default/keymap.c48
-rw-r--r--keyboards/akb/ogrn/keymaps/via/keymap.c48
-rw-r--r--keyboards/akb/ogrn/keymaps/via/rules.mk1
-rw-r--r--keyboards/akb/ogrn/readme.md27
-rw-r--r--keyboards/akb/ogrn/rules.mk1
-rw-r--r--keyboards/akb/raine/config.h8
-rw-r--r--keyboards/akb/raine/info.json8
-rw-r--r--keyboards/akb/raine/keymaps/mehadviceguy/keymap.c2
-rw-r--r--keyboards/akegata_denki/device_one/config.h7
-rw-r--r--keyboards/akegata_denki/device_one/info.json6
-rw-r--r--keyboards/al1/config.h7
-rw-r--r--keyboards/al1/info.json6
-rw-r--r--keyboards/al1/keymaps/splitbs/keymap.c2
-rw-r--r--keyboards/aleblazer/zodiark/config.h7
-rw-r--r--keyboards/aleblazer/zodiark/info.json8
-rw-r--r--keyboards/alf/dc60/config.h8
-rw-r--r--keyboards/alf/dc60/info.json6
-rw-r--r--keyboards/alf/x11/config.h8
-rw-r--r--keyboards/alf/x11/info.json8
-rw-r--r--keyboards/alf/x11/keymaps/default/readme.md1
-rw-r--r--keyboards/alf/x11/keymaps/via/keymap.c55
-rw-r--r--keyboards/alf/x11/keymaps/via/rules.mk1
-rw-r--r--keyboards/alf/x2/config.h8
-rw-r--r--keyboards/alf/x2/info.json8
-rw-r--r--keyboards/alf/x2/keymaps/hhkb_60/keymap.c2
-rw-r--r--keyboards/alfredslab/swift65/hotswap/config.h59
-rw-r--r--keyboards/alfredslab/swift65/hotswap/hotswap.c19
-rw-r--r--keyboards/alfredslab/swift65/hotswap/hotswap.h35
-rw-r--r--keyboards/alfredslab/swift65/hotswap/info.json87
-rw-r--r--keyboards/alfredslab/swift65/hotswap/keymaps/default/keymap.c37
-rw-r--r--keyboards/alfredslab/swift65/hotswap/keymaps/via/keymap.c53
-rw-r--r--keyboards/alfredslab/swift65/hotswap/keymaps/via/rules.mk1
-rw-r--r--keyboards/alfredslab/swift65/hotswap/readme.md19
-rw-r--r--keyboards/alfredslab/swift65/hotswap/rules.mk19
-rw-r--r--keyboards/alfredslab/swift65/solder/config.h7
-rw-r--r--keyboards/alfredslab/swift65/solder/info.json8
-rw-r--r--keyboards/aliceh66/pianoforte/config.h40
-rw-r--r--keyboards/aliceh66/pianoforte/info.json503
-rw-r--r--keyboards/aliceh66/pianoforte/keymaps/default/keymap.c33
-rw-r--r--keyboards/aliceh66/pianoforte/keymaps/iso/keymap.c33
-rw-r--r--keyboards/aliceh66/pianoforte/keymaps/via/keymap.c43
-rw-r--r--keyboards/aliceh66/pianoforte/keymaps/via/rules.mk1
-rw-r--r--keyboards/aliceh66/pianoforte/pianoforte.c17
-rw-r--r--keyboards/aliceh66/pianoforte/pianoforte.h131
-rw-r--r--keyboards/aliceh66/pianoforte/readme.md15
-rw-r--r--keyboards/aliceh66/pianoforte/rules.mk24
-rw-r--r--keyboards/aliceh66/pianoforte_hs/config.h40
-rw-r--r--keyboards/aliceh66/pianoforte_hs/info.json110
-rw-r--r--keyboards/aliceh66/pianoforte_hs/keymaps/default/keymap.c33
-rw-r--r--keyboards/aliceh66/pianoforte_hs/keymaps/via/keymap.c43
-rw-r--r--keyboards/aliceh66/pianoforte_hs/keymaps/via/rules.mk1
-rw-r--r--keyboards/aliceh66/pianoforte_hs/pianoforte_hs.c17
-rw-r--r--keyboards/aliceh66/pianoforte_hs/pianoforte_hs.h43
-rw-r--r--keyboards/aliceh66/pianoforte_hs/readme.md15
-rw-r--r--keyboards/aliceh66/pianoforte_hs/rules.mk22
-rwxr-xr-xkeyboards/alpha/config.h8
-rw-r--r--keyboards/alpha/info.json6
-rwxr-xr-xkeyboards/alpha/keymaps/hvp/keymap.c2
-rw-r--r--keyboards/alpine65/config.h7
-rw-r--r--keyboards/alpine65/info.json6
-rw-r--r--keyboards/alps64/config.h8
-rw-r--r--keyboards/alps64/info.json8
-rw-r--r--keyboards/alps64/keymaps/crd/keymap.c2
-rw-r--r--keyboards/alt34/config.h20
-rw-r--r--keyboards/alt34/info.json52
-rw-r--r--keyboards/alt34/readme.md2
-rw-r--r--keyboards/alt34/rev1/config.h7
-rw-r--r--keyboards/alt34/rev1/info.json58
-rw-r--r--keyboards/amag23/config.h8
-rw-r--r--keyboards/amag23/info.json6
-rwxr-xr-xkeyboards/amjkeyboard/amj40/config.h8
-rw-r--r--keyboards/amjkeyboard/amj40/info.json6
-rwxr-xr-xkeyboards/amjkeyboard/amj40/keymaps/fabian/keymap.c2
-rwxr-xr-xkeyboards/amjkeyboard/amj40/keymaps/jetpacktuxedo/keymap.c2
-rw-r--r--keyboards/amjkeyboard/amj40/keymaps/myee/keymap.c2
-rw-r--r--keyboards/amjkeyboard/amj60/config.h8
-rw-r--r--keyboards/amjkeyboard/amj60/info.json6
-rw-r--r--keyboards/amjkeyboard/amj66/config.h8
-rw-r--r--keyboards/amjkeyboard/amj66/info.json6
-rw-r--r--keyboards/amjkeyboard/amj84/config.h8
-rw-r--r--keyboards/amjkeyboard/amj84/info.json8
-rw-r--r--keyboards/amjkeyboard/amj84/readme.md2
-rw-r--r--keyboards/amjkeyboard/amj96/config.h8
-rw-r--r--keyboards/amjkeyboard/amj96/info.json6
-rw-r--r--keyboards/amjkeyboard/amjpad/config.h8
-rw-r--r--keyboards/amjkeyboard/amjpad/info.json8
-rw-r--r--keyboards/amjkeyboard/amjpad/keymaps/max/keymap.c2
-rw-r--r--keyboards/an_achronism/tetromino/README.md42
-rw-r--r--keyboards/an_achronism/tetromino/config.h31
-rw-r--r--keyboards/an_achronism/tetromino/info.json184
-rw-r--r--keyboards/an_achronism/tetromino/keymaps/default/keymap.c62
-rw-r--r--keyboards/an_achronism/tetromino/keymaps/indicators/config.h30
-rw-r--r--keyboards/an_achronism/tetromino/keymaps/indicators/keymap.c124
-rw-r--r--keyboards/an_achronism/tetromino/rules.mk2
-rw-r--r--keyboards/anavi/macropad8/config.h8
-rw-r--r--keyboards/anavi/macropad8/info.json8
-rw-r--r--keyboards/annepro2/ap2_led.c18
-rw-r--r--keyboards/annepro2/ap2_led.h5
-rw-r--r--keyboards/annepro2/c15/config.h24
-rw-r--r--keyboards/annepro2/c15/info.json6
-rw-r--r--keyboards/annepro2/c15/rules.mk4
-rw-r--r--keyboards/annepro2/c18/config.h24
-rw-r--r--keyboards/annepro2/c18/info.json6
-rw-r--r--keyboards/annepro2/c18/rules.mk4
-rw-r--r--keyboards/annepro2/halconf.h4
-rw-r--r--keyboards/annepro2/info.json6
-rw-r--r--keyboards/annepro2/keymaps/default-full-caps/keymap.c8
-rw-r--r--keyboards/annepro2/keymaps/default-layer-indicators/keymap.c12
-rw-r--r--keyboards/annepro2/mcuconf.h8
-rw-r--r--keyboards/annepro2/protocol.h8
-rw-r--r--keyboards/ano/config.h7
-rw-r--r--keyboards/ano/info.json6
-rw-r--r--keyboards/ano/readme.md2
-rw-r--r--keyboards/anomalykb/a65i/config.h8
-rw-r--r--keyboards/anomalykb/a65i/info.json6
-rw-r--r--keyboards/anomalykb/a65i/keymaps/ansi_splitbs/keymap.c2
-rw-r--r--keyboards/anomalykb/a65i/keymaps/iso_splitbs/keymap.c2
-rw-r--r--keyboards/aos/tkl/config.h8
-rw-r--r--keyboards/aos/tkl/info.json6
-rw-r--r--keyboards/aos/tkl/keymaps/aholland909/keymap.c2
-rw-r--r--keyboards/aozora/config.h7
-rw-r--r--keyboards/aozora/info.json6
-rw-r--r--keyboards/aplyard/aplx6/info.json4
-rw-r--r--keyboards/aplyard/aplx6/rev1/config.h8
-rw-r--r--keyboards/aplyard/aplx6/rev1/info.json6
-rw-r--r--keyboards/aplyard/aplx6/rev2/config.h8
-rw-r--r--keyboards/aplyard/aplx6/rev2/info.json6
-rw-r--r--keyboards/arabica37/config.h21
-rw-r--r--keyboards/arabica37/info.json63
-rw-r--r--keyboards/arabica37/rev1/config.h7
-rw-r--r--keyboards/arabica37/rev1/info.json69
-rw-r--r--keyboards/ares/config.h7
-rw-r--r--keyboards/ares/info.json8
-rw-r--r--keyboards/arisu/config.h8
-rw-r--r--keyboards/arisu/info.json6
-rw-r--r--keyboards/arisu/keymaps/fate/keymap.c2
-rw-r--r--keyboards/arisu/keymaps/kresnak/keymap.c2
-rw-r--r--keyboards/arisu/keymaps/stanrc85/keymap.c2
-rw-r--r--keyboards/arrayperipherals/1x4p1/config.h8
-rw-r--r--keyboards/arrayperipherals/1x4p1/info.json8
-rw-r--r--keyboards/ash1800/config.h8
-rw-r--r--keyboards/ash1800/info.json6
-rw-r--r--keyboards/ash_xiix/config.h8
-rw-r--r--keyboards/ash_xiix/info.json8
-rw-r--r--keyboards/ashpil/modelm_usbc/config.h8
-rw-r--r--keyboards/ashpil/modelm_usbc/info.json8
-rw-r--r--keyboards/at_at/660m/config.h9
-rw-r--r--keyboards/at_at/660m/info.json8
-rw-r--r--keyboards/atlantis/ak81_ve/config.h8
-rw-r--r--keyboards/atlantis/ak81_ve/info.json6
-rw-r--r--keyboards/atlantis/ak81_ve/readme.md2
-rw-r--r--keyboards/atlas_65/config.h8
-rw-r--r--keyboards/atlas_65/info.json8
-rw-r--r--keyboards/atlas_65/readme.md2
-rw-r--r--keyboards/atomic/config.h8
-rw-r--r--keyboards/atomic/info.json6
-rw-r--r--keyboards/atomic/keymaps/pvc/keymap.c4
-rw-r--r--keyboards/atreus/astar/config.h1
-rw-r--r--keyboards/atreus/astar_mirrored/config.h1
-rw-r--r--keyboards/atreus/config.h8
-rw-r--r--keyboards/atreus/f103/config.h1
-rw-r--r--keyboards/atreus/feather/config.h1
-rw-r--r--keyboards/atreus/info.json6
-rw-r--r--keyboards/atreus/keymaps/clash/keymap.c2
-rw-r--r--keyboards/atreus/keymaps/classic/keymap.c2
-rw-r--r--keyboards/atreus/keymaps/dvorak_42_key/keymap.c2
-rw-r--r--keyboards/atreus/keymaps/erlandsona/keymap.c2
-rw-r--r--keyboards/atreus/keymaps/gerb/keymap.c2
-rw-r--r--keyboards/atreus/keymaps/henxing/keymap.c2
-rw-r--r--keyboards/atreus/keymaps/jeremy/keymap.c2
-rw-r--r--keyboards/atreus/keymaps/kejadlen/config.h1
-rw-r--r--keyboards/atreus/keymaps/kejadlen/keymap.c2
-rw-r--r--keyboards/atreus/keymaps/khitsule/keymap.c2
-rw-r--r--keyboards/atreus/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/atreus/keymaps/nojjan/config.h2
-rw-r--r--keyboards/atreus/keymaps/nojjan/keymap.c2
-rw-r--r--keyboards/atreus/keymaps/ptillemans/keymap.c2
-rw-r--r--keyboards/atreus/keymaps/quartz64/keymap.c4
-rw-r--r--keyboards/atreus/keymaps/replicaJunction/keymap.c2
-rw-r--r--keyboards/atreus/keymaps/talljoe/config.h4
-rw-r--r--keyboards/atreus/keymaps/workman/keymap.c2
-rw-r--r--keyboards/atreus/keymaps/xk/keymap.c2
-rw-r--r--keyboards/atreus/keymaps/xyverz/keymap.c4
-rw-r--r--keyboards/atreus/keymaps/yttyx/keymap.c4
-rw-r--r--keyboards/atreus/promicro/config.h1
-rw-r--r--keyboards/atreus/teensy2/config.h1
-rw-r--r--keyboards/atreus62/config.h8
-rw-r--r--keyboards/atreus62/info.json6
-rw-r--r--keyboards/atreus62/keymaps/194h/keymap.c2
-rw-r--r--keyboards/atreus62/keymaps/d4mation/keymap.c4
-rw-r--r--keyboards/atreus62/keymaps/hvp/keymap.c2
-rw-r--r--keyboards/atreus62/keymaps/pcewing/keymap.c2
-rw-r--r--keyboards/atreus62/keymaps/scheiklp/keymap.c2
-rw-r--r--keyboards/atreus62/keymaps/xyverz/keymap.c2
-rw-r--r--keyboards/atreyu/atreyu.c17
-rw-r--r--keyboards/atreyu/atreyu.h21
-rw-r--r--keyboards/atreyu/config.h35
-rw-r--r--keyboards/atreyu/keymaps/default/config.h27
-rw-r--r--keyboards/atreyu/keymaps/default/keymap.c110
-rw-r--r--keyboards/atreyu/keymaps/default/readme.md7
-rw-r--r--keyboards/atreyu/keymaps/default/rules.mk1
-rw-r--r--keyboards/atreyu/readme.md29
-rw-r--r--keyboards/atreyu/rev1/config.h72
-rw-r--r--keyboards/atreyu/rev1/info.json77
-rw-r--r--keyboards/atreyu/rev1/rev1.c47
-rw-r--r--keyboards/atreyu/rev1/rev1.h40
-rw-r--r--keyboards/atreyu/rev1/rules.mk (renamed from keyboards/just60/.noci)0
-rw-r--r--keyboards/atreyu/rules.mk22
-rw-r--r--keyboards/atset/at1/at1.c15
-rw-r--r--keyboards/atset/at1/at1.h22
-rw-r--r--keyboards/atset/at1/config.h68
-rw-r--r--keyboards/atset/at1/info.json15
-rw-r--r--keyboards/atset/at1/keymaps/default/keymap.c36
-rw-r--r--keyboards/atset/at1/keymaps/via/keymap.c35
-rw-r--r--keyboards/atset/at1/readme.md25
-rw-r--r--keyboards/atset/at1/rules.mk18
-rw-r--r--keyboards/atset/at12/at12.c15
-rw-r--r--keyboards/atset/at12/at12.h29
-rw-r--r--keyboards/atset/at12/config.h68
-rw-r--r--keyboards/atset/at12/info.json15
-rw-r--r--keyboards/atset/at12/keymaps/default/keymap.c44
-rw-r--r--keyboards/atset/at12/keymaps/via/keymap.c47
-rw-r--r--keyboards/atset/at12/readme.md25
-rw-r--r--keyboards/atset/at12/rules.mk18
-rw-r--r--keyboards/atset/at16/at16.c15
-rw-r--r--keyboards/atset/at16/at16.h29
-rw-r--r--keyboards/atset/at16/config.h68
-rw-r--r--keyboards/atset/at16/info.json15
-rw-r--r--keyboards/atset/at16/keymaps/default/keymap.c44
-rw-r--r--keyboards/atset/at16/keymaps/via/keymap.c47
-rw-r--r--keyboards/atset/at16/readme.md25
-rw-r--r--keyboards/atset/at16/rules.mk20
-rw-r--r--keyboards/atset/at3/at3.c15
-rw-r--r--keyboards/atset/at3/at3.h22
-rw-r--r--keyboards/atset/at3/config.h68
-rw-r--r--keyboards/atset/at3/info.json15
-rw-r--r--keyboards/atset/at3/keymaps/default/keymap.c36
-rw-r--r--keyboards/atset/at3/keymaps/via/keymap.c35
-rw-r--r--keyboards/atset/at3/readme.md25
-rw-r--r--keyboards/atset/at3/rules.mk18
-rw-r--r--keyboards/atset/at6/config.h8
-rw-r--r--keyboards/atset/at6/info.json6
-rw-r--r--keyboards/atset/at6/readme.md2
-rw-r--r--keyboards/atset/at9/config.h8
-rw-r--r--keyboards/atset/at9/info.json6
-rw-r--r--keyboards/atset/at9/readme.md2
-rw-r--r--keyboards/atxkb/1894/config.h8
-rw-r--r--keyboards/atxkb/1894/info.json6
-rw-r--r--keyboards/aurora65/aurora65.c16
-rw-r--r--keyboards/aurora65/aurora65.h34
-rw-r--r--keyboards/aurora65/config.h92
-rw-r--r--keyboards/aurora65/halconf.h21
-rw-r--r--keyboards/aurora65/info.json16
-rw-r--r--keyboards/aurora65/keymaps/default/keymap.c32
-rw-r--r--keyboards/aurora65/keymaps/default/readme.md5
-rw-r--r--keyboards/aurora65/keymaps/via/keymap.c46
-rw-r--r--keyboards/aurora65/keymaps/via/readme.md5
-rw-r--r--keyboards/aurora65/keymaps/via/rules.mk1
-rw-r--r--keyboards/aurora65/mcuconf.h25
-rw-r--r--keyboards/aurora65/readme.md32
-rw-r--r--keyboards/aurora65/rules.mk29
-rw-r--r--keyboards/avalanche/avalanche.h2
-rw-r--r--keyboards/avalanche/v1/config.h6
-rw-r--r--keyboards/avalanche/v1/info.json8
-rw-r--r--keyboards/avalanche/v2/config.h6
-rw-r--r--keyboards/avalanche/v2/info.json8
-rw-r--r--keyboards/avalanche/v3/config.h6
-rw-r--r--keyboards/avalanche/v3/info.json8
-rw-r--r--keyboards/avalanche/v4/config.h70
-rw-r--r--keyboards/avalanche/v4/info.json85
-rw-r--r--keyboards/avalanche/v4/keymaps/default/keymap.c49
-rw-r--r--keyboards/avalanche/v4/keymaps/winder/config.h12
-rw-r--r--keyboards/avalanche/v4/keymaps/winder/images.h69
-rw-r--r--keyboards/avalanche/v4/keymaps/winder/keymap.c135
-rw-r--r--keyboards/avalanche/v4/keymaps/winder/rules.mk1
-rw-r--r--keyboards/avalanche/v4/rules.mk23
-rw-r--r--keyboards/avalanche/v4/v4.c18
-rw-r--r--keyboards/avalanche/v4/v4.h31
-rw-r--r--keyboards/aves60/config.h8
-rw-r--r--keyboards/aves60/info.json8
-rw-r--r--keyboards/aves60/readme.md2
-rw-r--r--keyboards/aves65/config.h8
-rw-r--r--keyboards/aves65/info.json6
-rw-r--r--keyboards/axolstudio/foundation_gamma/config.h7
-rw-r--r--keyboards/axolstudio/foundation_gamma/info.json6
-rw-r--r--keyboards/axolstudio/foundation_gamma/readme.md2
-rw-r--r--keyboards/axolstudio/helpo/config.h7
-rw-r--r--keyboards/axolstudio/helpo/info.json8
-rw-r--r--keyboards/axolstudio/yeti/hotswap/config.h7
-rw-r--r--keyboards/axolstudio/yeti/hotswap/info.json8
-rw-r--r--keyboards/axolstudio/yeti/hotswap/readme.md2
-rw-r--r--keyboards/axolstudio/yeti/soldered/config.h7
-rw-r--r--keyboards/axolstudio/yeti/soldered/info.json8
-rw-r--r--keyboards/axolstudio/yeti/soldered/readme.md2
-rw-r--r--keyboards/aya/config.h6
-rw-r--r--keyboards/aya/info.json6
-rw-r--r--keyboards/b_sides/rev41lp/config.h37
-rw-r--r--keyboards/b_sides/rev41lp/info.json64
-rw-r--r--keyboards/b_sides/rev41lp/keymaps/cyril/config.h21
-rw-r--r--keyboards/b_sides/rev41lp/keymaps/cyril/keymap.c105
-rw-r--r--keyboards/b_sides/rev41lp/keymaps/default/keymap.c48
-rw-r--r--keyboards/b_sides/rev41lp/keymaps/namnlos/config.h43
-rw-r--r--keyboards/b_sides/rev41lp/keymaps/namnlos/keymap.c176
-rw-r--r--keyboards/b_sides/rev41lp/keymaps/namnlos/readme.md3
-rw-r--r--keyboards/b_sides/rev41lp/keymaps/namnlos/rules.mk7
-rw-r--r--keyboards/b_sides/rev41lp/readme.md15
-rw-r--r--keyboards/b_sides/rev41lp/rev41lp.c17
-rw-r--r--keyboards/b_sides/rev41lp/rev41lp.h35
-rw-r--r--keyboards/b_sides/rev41lp/rules.mk18
-rw-r--r--keyboards/bacca70/config.h7
-rw-r--r--keyboards/bacca70/info.json6
-rw-r--r--keyboards/bacca70/keymaps/debaccabean/keymap.c2
-rw-r--r--keyboards/bacca70/keymaps/dede-special/keymap.c2
-rw-r--r--keyboards/bacca70/readme.md2
-rw-r--r--keyboards/baguette/config.h8
-rw-r--r--keyboards/baguette/info.json6
-rw-r--r--keyboards/bajjak/bajjak.c227
-rw-r--r--keyboards/bajjak/bajjak.h165
-rw-r--r--keyboards/bajjak/config.h111
-rw-r--r--keyboards/bajjak/info.json37
-rw-r--r--keyboards/bajjak/keymaps/5x6/keymap.c187
-rw-r--r--keyboards/bajjak/keymaps/default/keymap.c193
-rw-r--r--keyboards/bajjak/matrix.c253
-rw-r--r--keyboards/bajjak/readme.md23
-rw-r--r--keyboards/bajjak/rules.mk37
-rw-r--r--keyboards/balloondogcaps/tr90/info.json44
-rw-r--r--keyboards/balloondogcaps/tr90/keymaps/default/keymap.c31
-rw-r--r--keyboards/balloondogcaps/tr90/keymaps/via/keymap.c41
-rw-r--r--keyboards/balloondogcaps/tr90/keymaps/via/rules.mk1
-rw-r--r--keyboards/balloondogcaps/tr90/readme.md25
-rw-r--r--keyboards/balloondogcaps/tr90/rules.mk (renamed from keyboards/mechmini/.noci)0
-rw-r--r--keyboards/balloondogcaps/tr90pm/info.json44
-rw-r--r--keyboards/balloondogcaps/tr90pm/keymaps/default/keymap.c31
-rw-r--r--keyboards/balloondogcaps/tr90pm/keymaps/via/keymap.c41
-rw-r--r--keyboards/balloondogcaps/tr90pm/keymaps/via/rules.mk1
-rw-r--r--keyboards/balloondogcaps/tr90pm/readme.md25
-rw-r--r--keyboards/balloondogcaps/tr90pm/rules.mk1
-rw-r--r--keyboards/bandominedoni/bandominedoni.c52
-rw-r--r--keyboards/bandominedoni/bandominedoni.h7
-rw-r--r--keyboards/bandominedoni/config.h20
-rw-r--r--keyboards/bandominedoni/info.json9
-rw-r--r--keyboards/bandominedoni/keymaps/default/keymap.c31
-rw-r--r--keyboards/bandominedoni/keymaps/default/rules.mk1
-rw-r--r--keyboards/bandominedoni/keymaps/led/config.h18
-rw-r--r--keyboards/bandominedoni/keymaps/led/keymap.c43
-rw-r--r--keyboards/bandominedoni/keymaps/led/readme.md2
-rw-r--r--keyboards/bandominedoni/keymaps/led/rules.mk2
-rw-r--r--keyboards/bandominedoni/keymaps/lednotg/keymap.c254
-rw-r--r--keyboards/bandominedoni/keymaps/lednotg/readme.md1
-rw-r--r--keyboards/bandominedoni/keymaps/lednotg/rules.mk4
-rw-r--r--keyboards/bandominedoni/keymaps/via/keymap.c37
-rw-r--r--keyboards/bandominedoni/keymaps/via/rules.mk2
-rw-r--r--keyboards/bantam44/config.h8
-rw-r--r--keyboards/bantam44/info.json8
-rw-r--r--keyboards/barleycorn_smd/config.h7
-rw-r--r--keyboards/barleycorn_smd/info.json6
-rw-r--r--keyboards/barracuda/config.h8
-rw-r--r--keyboards/barracuda/info.json6
-rw-r--r--keyboards/basekeys/slice/rev1/config.h7
-rw-r--r--keyboards/basekeys/slice/rev1/info.json8
-rw-r--r--keyboards/basekeys/slice/rev1/keymaps/2moons/keymap.c6
-rw-r--r--keyboards/basekeys/slice/rev1_rgb/config.h7
-rw-r--r--keyboards/basekeys/slice/rev1_rgb/info.json8
-rw-r--r--keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c6
-rw-r--r--keyboards/basekeys/trifecta/config.h7
-rw-r--r--keyboards/basekeys/trifecta/info.json6
-rw-r--r--keyboards/basketweave/config.h7
-rw-r--r--keyboards/basketweave/info.json6
-rw-r--r--keyboards/bastardkb/charybdis/3x5/3x5.c8
-rw-r--r--keyboards/bastardkb/charybdis/3x5/blackpill/config.h62
-rw-r--r--keyboards/bastardkb/charybdis/3x5/blackpill/halconf.h29
-rw-r--r--keyboards/bastardkb/charybdis/3x5/blackpill/info.json6
-rw-r--r--keyboards/bastardkb/charybdis/3x5/blackpill/mcuconf.h61
-rw-r--r--keyboards/bastardkb/charybdis/3x5/blackpill/readme.md3
-rw-r--r--keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk41
-rw-r--r--keyboards/bastardkb/charybdis/3x5/config.h44
-rw-r--r--keyboards/bastardkb/charybdis/3x5/info.json9
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/README.md3
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/config.h166
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/keymap.c224
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/rules.mk10
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c4
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h6
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk1
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/config.h19
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/keymap.c4
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/rules.mk4
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/via/config.h13
-rw-r--r--keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c42
-rw-r--r--keyboards/bastardkb/charybdis/3x5/rules.mk38
-rw-r--r--keyboards/bastardkb/charybdis/3x5/v1/elitec/config.h42
-rw-r--r--keyboards/bastardkb/charybdis/3x5/v1/elitec/info.json6
-rw-r--r--keyboards/bastardkb/charybdis/3x5/v1/elitec/rules.mk37
-rw-r--r--keyboards/bastardkb/charybdis/3x5/v2/elitec/config.h36
-rw-r--r--keyboards/bastardkb/charybdis/3x5/v2/elitec/info.json6
-rw-r--r--keyboards/bastardkb/charybdis/3x5/v2/elitec/rules.mk37
-rw-r--r--keyboards/bastardkb/charybdis/3x5/v2/splinky/config.h50
-rw-r--r--keyboards/bastardkb/charybdis/3x5/v2/splinky/info.json6
-rw-r--r--keyboards/bastardkb/charybdis/3x5/v2/splinky/mcuconf.h23
-rw-r--r--keyboards/bastardkb/charybdis/3x5/v2/splinky/rules.mk37
-rw-r--r--keyboards/bastardkb/charybdis/3x6/3x6.c91
-rw-r--r--keyboards/bastardkb/charybdis/3x6/3x6.h62
-rw-r--r--keyboards/bastardkb/charybdis/3x6/blackpill/config.h60
-rw-r--r--keyboards/bastardkb/charybdis/3x6/blackpill/halconf.h26
-rw-r--r--keyboards/bastardkb/charybdis/3x6/blackpill/info.json6
-rw-r--r--keyboards/bastardkb/charybdis/3x6/blackpill/mcuconf.h43
-rw-r--r--keyboards/bastardkb/charybdis/3x6/blackpill/readme.md3
-rw-r--r--keyboards/bastardkb/charybdis/3x6/blackpill/rules.mk39
-rw-r--r--keyboards/bastardkb/charybdis/3x6/config.h49
-rw-r--r--keyboards/bastardkb/charybdis/3x6/info.json99
-rw-r--r--keyboards/bastardkb/charybdis/3x6/keymaps/default/config.h54
-rw-r--r--keyboards/bastardkb/charybdis/3x6/keymaps/default/keymap.c66
-rw-r--r--keyboards/bastardkb/charybdis/3x6/keymaps/default/readme.md7
-rw-r--r--keyboards/bastardkb/charybdis/3x6/keymaps/via/config.h71
-rw-r--r--keyboards/bastardkb/charybdis/3x6/keymaps/via/keymap.c148
-rw-r--r--keyboards/bastardkb/charybdis/3x6/keymaps/via/readme.md57
-rw-r--r--keyboards/bastardkb/charybdis/3x6/keymaps/via/rules.mk1
-rw-r--r--keyboards/bastardkb/charybdis/3x6/readme.md15
-rw-r--r--keyboards/bastardkb/charybdis/3x6/v1/elitec/config.h41
-rw-r--r--keyboards/bastardkb/charybdis/3x6/v1/elitec/info.json6
-rw-r--r--keyboards/bastardkb/charybdis/3x6/v1/elitec/rules.mk35
-rw-r--r--keyboards/bastardkb/charybdis/3x6/v2/elitec/config.h36
-rw-r--r--keyboards/bastardkb/charybdis/3x6/v2/elitec/info.json6
-rw-r--r--keyboards/bastardkb/charybdis/3x6/v2/elitec/rules.mk35
-rw-r--r--keyboards/bastardkb/charybdis/3x6/v2/splinky/config.h50
-rw-r--r--keyboards/bastardkb/charybdis/3x6/v2/splinky/info.json6
-rw-r--r--keyboards/bastardkb/charybdis/3x6/v2/splinky/mcuconf.h23
-rw-r--r--keyboards/bastardkb/charybdis/3x6/v2/splinky/rules.mk37
-rw-r--r--keyboards/bastardkb/charybdis/4x6/4x6.c6
-rw-r--r--keyboards/bastardkb/charybdis/4x6/blackpill/config.h62
-rw-r--r--keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h29
-rw-r--r--keyboards/bastardkb/charybdis/4x6/blackpill/info.json6
-rw-r--r--keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h61
-rw-r--r--keyboards/bastardkb/charybdis/4x6/blackpill/readme.md3
-rw-r--r--keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk40
-rw-r--r--keyboards/bastardkb/charybdis/4x6/config.h47
-rw-r--r--keyboards/bastardkb/charybdis/4x6/info.json9
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c4
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/drashna/config.h47
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/drashna/halconf.h3
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/drashna/keymap.c68
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/drashna/mcuconf.h19
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/drashna/rules.mk40
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/config.h23
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/keymap.c4
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/rules.mk4
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h13
-rw-r--r--keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c37
-rw-r--r--keyboards/bastardkb/charybdis/4x6/rules.mk37
-rw-r--r--keyboards/bastardkb/charybdis/4x6/v1/elitec/config.h42
-rw-r--r--keyboards/bastardkb/charybdis/4x6/v1/elitec/info.json6
-rw-r--r--keyboards/bastardkb/charybdis/4x6/v1/elitec/rules.mk36
-rw-r--r--keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h36
-rw-r--r--keyboards/bastardkb/charybdis/4x6/v2/elitec/info.json6
-rw-r--r--keyboards/bastardkb/charybdis/4x6/v2/elitec/rules.mk36
-rw-r--r--keyboards/bastardkb/charybdis/4x6/v2/splinky/config.h50
-rw-r--r--keyboards/bastardkb/charybdis/4x6/v2/splinky/info.json6
-rw-r--r--keyboards/bastardkb/charybdis/4x6/v2/splinky/mcuconf.h23
-rw-r--r--keyboards/bastardkb/charybdis/4x6/v2/splinky/rules.mk36
-rw-r--r--keyboards/bastardkb/charybdis/charybdis.c181
-rw-r--r--keyboards/bastardkb/charybdis/charybdis.h8
-rw-r--r--keyboards/bastardkb/charybdis/post_config.h53
-rw-r--r--keyboards/bastardkb/charybdis/readme.md69
-rw-r--r--keyboards/bastardkb/dilemma/config.h49
-rw-r--r--keyboards/bastardkb/dilemma/dilemma.c329
-rw-r--r--keyboards/bastardkb/dilemma/dilemma.h134
-rw-r--r--keyboards/bastardkb/dilemma/elitec/config.h37
-rw-r--r--keyboards/bastardkb/dilemma/elitec/info.json6
-rw-r--r--keyboards/bastardkb/dilemma/elitec/rules.mk5
-rw-r--r--keyboards/bastardkb/dilemma/info.json46
-rw-r--r--keyboards/bastardkb/dilemma/keymaps/bstiq/README.md3
-rw-r--r--keyboards/bastardkb/dilemma/keymaps/bstiq/config.h153
-rw-r--r--keyboards/bastardkb/dilemma/keymaps/bstiq/keymap.c224
-rw-r--r--keyboards/bastardkb/dilemma/keymaps/default/keymap.c84
-rw-r--r--keyboards/bastardkb/dilemma/keymaps/drashna/config.h8
-rw-r--r--keyboards/bastardkb/dilemma/keymaps/drashna/keymap.c160
-rw-r--r--keyboards/bastardkb/dilemma/keymaps/drashna/rules.mk8
-rw-r--r--keyboards/bastardkb/dilemma/readme.md14
-rw-r--r--keyboards/bastardkb/dilemma/rules.mk25
-rw-r--r--keyboards/bastardkb/dilemma/splinky/config.h46
-rw-r--r--keyboards/bastardkb/dilemma/splinky/halconf.h21
-rw-r--r--keyboards/bastardkb/dilemma/splinky/info.json6
-rw-r--r--keyboards/bastardkb/dilemma/splinky/mcuconf.h23
-rw-r--r--keyboards/bastardkb/dilemma/splinky/rules.mk9
-rw-r--r--keyboards/bastardkb/dilemma/splinky/splinky.c33
-rw-r--r--keyboards/bastardkb/info.json8
-rw-r--r--keyboards/bastardkb/scylla/blackpill/config.h58
-rw-r--r--keyboards/bastardkb/scylla/blackpill/halconf.h29
-rw-r--r--keyboards/bastardkb/scylla/blackpill/info.json6
-rw-r--r--keyboards/bastardkb/scylla/blackpill/mcuconf.h61
-rw-r--r--keyboards/bastardkb/scylla/blackpill/rules.mk36
-rw-r--r--keyboards/bastardkb/scylla/config.h85
-rw-r--r--keyboards/bastardkb/scylla/info.json7
-rw-r--r--keyboards/bastardkb/scylla/keymaps/default/keymap.c65
-rw-r--r--keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c4
-rw-r--r--keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c6
-rw-r--r--keyboards/bastardkb/scylla/readme.md2
-rw-r--r--keyboards/bastardkb/scylla/rules.mk22
-rw-r--r--keyboards/bastardkb/scylla/scylla.h46
-rw-r--r--keyboards/bastardkb/scylla/v1/elitec/config.h34
-rw-r--r--keyboards/bastardkb/scylla/v1/elitec/info.json6
-rw-r--r--keyboards/bastardkb/scylla/v1/elitec/rules.mk26
-rw-r--r--keyboards/bastardkb/scylla/v2/elitec/config.h33
-rw-r--r--keyboards/bastardkb/scylla/v2/elitec/info.json6
-rw-r--r--keyboards/bastardkb/scylla/v2/elitec/rules.mk26
-rw-r--r--keyboards/bastardkb/scylla/v2/splinky/config.h43
-rw-r--r--keyboards/bastardkb/scylla/v2/splinky/info.json6
-rw-r--r--keyboards/bastardkb/scylla/v2/splinky/rules.mk33
-rw-r--r--keyboards/bastardkb/skeletyl/blackpill/config.h58
-rw-r--r--keyboards/bastardkb/skeletyl/blackpill/halconf.h29
-rw-r--r--keyboards/bastardkb/skeletyl/blackpill/info.json6
-rw-r--r--keyboards/bastardkb/skeletyl/blackpill/mcuconf.h61
-rw-r--r--keyboards/bastardkb/skeletyl/blackpill/rules.mk37
-rw-r--r--keyboards/bastardkb/skeletyl/config.h80
-rw-r--r--keyboards/bastardkb/skeletyl/info.json7
-rw-r--r--keyboards/bastardkb/skeletyl/rules.mk28
-rw-r--r--keyboards/bastardkb/skeletyl/skeletyl.h2
-rw-r--r--keyboards/bastardkb/skeletyl/v1/elitec/config.h34
-rw-r--r--keyboards/bastardkb/skeletyl/v1/elitec/info.json6
-rw-r--r--keyboards/bastardkb/skeletyl/v1/elitec/rules.mk27
-rw-r--r--keyboards/bastardkb/skeletyl/v1/info.json5
-rw-r--r--keyboards/bastardkb/skeletyl/v2/elitec/config.h33
-rw-r--r--keyboards/bastardkb/skeletyl/v2/elitec/info.json6
-rw-r--r--keyboards/bastardkb/skeletyl/v2/elitec/rules.mk27
-rw-r--r--keyboards/bastardkb/skeletyl/v2/splinky/config.h43
-rw-r--r--keyboards/bastardkb/skeletyl/v2/splinky/info.json6
-rw-r--r--keyboards/bastardkb/skeletyl/v2/splinky/rules.mk34
-rw-r--r--keyboards/bastardkb/tbk/config.h5
-rw-r--r--keyboards/bastardkb/tbk/info.json5
-rw-r--r--keyboards/bastardkb/tbk/keymaps/german_gaming/keymap.c4
-rw-r--r--keyboards/bastardkb/tbk/keymaps/xyverz/keymap.c6
-rw-r--r--keyboards/bastardkb/tbk/readme.md2
-rw-r--r--keyboards/bastardkb/tbkmini/blackpill/config.h58
-rw-r--r--keyboards/bastardkb/tbkmini/blackpill/halconf.h29
-rw-r--r--keyboards/bastardkb/tbkmini/blackpill/info.json6
-rw-r--r--keyboards/bastardkb/tbkmini/blackpill/mcuconf.h61
-rw-r--r--keyboards/bastardkb/tbkmini/blackpill/rules.mk37
-rw-r--r--keyboards/bastardkb/tbkmini/config.h83
-rw-r--r--keyboards/bastardkb/tbkmini/info.json7
-rw-r--r--keyboards/bastardkb/tbkmini/keymaps/default/keymap.c91
-rw-r--r--keyboards/bastardkb/tbkmini/rules.mk29
-rw-r--r--keyboards/bastardkb/tbkmini/tbkmini.h37
-rw-r--r--keyboards/bastardkb/tbkmini/v1/elitec/config.h34
-rw-r--r--keyboards/bastardkb/tbkmini/v1/elitec/info.json6
-rw-r--r--keyboards/bastardkb/tbkmini/v1/elitec/rules.mk27
-rw-r--r--keyboards/bastardkb/tbkmini/v2/elitec/config.h33
-rw-r--r--keyboards/bastardkb/tbkmini/v2/elitec/info.json6
-rw-r--r--keyboards/bastardkb/tbkmini/v2/elitec/rules.mk27
-rw-r--r--keyboards/bastardkb/tbkmini/v2/splinky/config.h43
-rw-r--r--keyboards/bastardkb/tbkmini/v2/splinky/info.json6
-rw-r--r--keyboards/bastardkb/tbkmini/v2/splinky/rules.mk34
-rw-r--r--keyboards/bbrfkr/dynamis/config.h9
-rw-r--r--keyboards/bbrfkr/dynamis/dynamis.c16
-rw-r--r--keyboards/bbrfkr/dynamis/info.json82
-rw-r--r--keyboards/bbrfkr/dynamis/keymaps/default/keymap.c40
-rw-r--r--keyboards/bbrfkr/dynamis/keymaps/iso/keymap.c40
-rw-r--r--keyboards/bbrfkr/dynamis/keymaps/via/keymap.c49
-rw-r--r--keyboards/bbrfkr/dynamis/keymaps/via/rules.mk1
-rw-r--r--keyboards/bbrfkr/dynamis/readme.md6
-rw-r--r--keyboards/bear_face/config.h7
-rw-r--r--keyboards/bear_face/info.json10
-rw-r--r--keyboards/bear_face/v1/config.h19
-rw-r--r--keyboards/bear_face/v1/info.json6
-rw-r--r--keyboards/bear_face/v2/config.h19
-rw-r--r--keyboards/bear_face/v2/info.json6
-rw-r--r--keyboards/bear_face/v2/keymaps/default/keymap.c2
-rw-r--r--keyboards/beatervan/config.h8
-rw-r--r--keyboards/beatervan/info.json6
-rwxr-xr-xkeyboards/bemeier/bmek/config.h6
-rwxr-xr-xkeyboards/bemeier/bmek/info.json7
-rwxr-xr-xkeyboards/bemeier/bmek/rev1/config.h4
-rw-r--r--keyboards/bemeier/bmek/rev1/info.json5
-rwxr-xr-xkeyboards/bemeier/bmek/rev2/config.h6
-rw-r--r--keyboards/bemeier/bmek/rev2/info.json5
-rwxr-xr-xkeyboards/bemeier/bmek/rev3/config.h6
-rw-r--r--keyboards/bemeier/bmek/rev3/info.json5
-rw-r--r--keyboards/bfake/config.h7
-rw-r--r--keyboards/bfake/info.json8
-rw-r--r--keyboards/bfake/keymaps/mechmerlin/keymap.c2
-rw-r--r--keyboards/biacco42/ergo42/info.json10
-rw-r--r--keyboards/biacco42/ergo42/keymaps/biacco-biacco/keymap.c4
-rw-r--r--keyboards/biacco42/ergo42/keymaps/biacco-macOS/keymap.c2
-rw-r--r--keyboards/biacco42/ergo42/keymaps/biacco-underglow/keymap.c4
-rw-r--r--keyboards/biacco42/ergo42/keymaps/biacco-winjp/keymap.c2
-rw-r--r--keyboards/biacco42/ergo42/keymaps/biacco/keymap.c2
-rw-r--r--keyboards/biacco42/ergo42/keymaps/hdbx/keymap.c8
-rw-r--r--keyboards/biacco42/ergo42/keymaps/koba/keymap.c2
-rw-r--r--keyboards/biacco42/ergo42/keymaps/shinze/keymap.c2
-rw-r--r--keyboards/biacco42/ergo42/keymaps/yshrsmz/keymap.c4
-rw-r--r--keyboards/biacco42/ergo42/rev1/config.h7
-rw-r--r--keyboards/biacco42/ergo42/rev1/info.json16
-rw-r--r--keyboards/biacco42/meishi/config.h8
-rw-r--r--keyboards/biacco42/meishi/info.json6
-rw-r--r--keyboards/biacco42/meishi2/config.h8
-rw-r--r--keyboards/biacco42/meishi2/info.json6
-rw-r--r--keyboards/binepad/bn003/config.h8
-rw-r--r--keyboards/binepad/bn003/info.json6
-rw-r--r--keyboards/binepad/bn009/config.h8
-rw-r--r--keyboards/binepad/bn009/info.json6
-rw-r--r--keyboards/bioi/f60/config.h7
-rw-r--r--keyboards/bioi/f60/info.json8
-rw-r--r--keyboards/bioi/f60/readme.md4
-rw-r--r--keyboards/bioi/g60/config.h8
-rw-r--r--keyboards/bioi/g60/info.json6
-rw-r--r--keyboards/bioi/g60ble/config.h8
-rw-r--r--keyboards/bioi/g60ble/info.json6
-rw-r--r--keyboards/bioi/morgan65/config.h10
-rw-r--r--keyboards/bioi/morgan65/info.json6
-rw-r--r--keyboards/bioi/s65/config.h8
-rw-r--r--keyboards/bioi/s65/info.json6
-rw-r--r--keyboards/blackplum/config.h8
-rw-r--r--keyboards/blackplum/info.json8
-rw-r--r--keyboards/blank/blank01/config.h8
-rw-r--r--keyboards/blank/blank01/info.json8
-rw-r--r--keyboards/blank/blank01/readme.md2
-rw-r--r--keyboards/blank_tehnologii/manibus/config.h7
-rw-r--r--keyboards/blank_tehnologii/manibus/info.json6
-rw-r--r--keyboards/blank_tehnologii/manibus/keymaps/samurai/keymap.c2
-rw-r--r--keyboards/blaster75/config.h7
-rw-r--r--keyboards/blaster75/info.json6
-rw-r--r--keyboards/blaster75/readme.md2
-rw-r--r--keyboards/blockboy/ac980mini/keymaps/default/keymap.c2
-rw-r--r--keyboards/blockboy/ac980mini/keymaps/via/keymap.c2
-rw-r--r--keyboards/blockboy/ac980mini/readme.md2
-rw-r--r--keyboards/blockey/config.h8
-rw-r--r--keyboards/blockey/info.json6
-rw-r--r--keyboards/boardrun/bizarre/config.h8
-rw-r--r--keyboards/boardrun/bizarre/info.json6
-rw-r--r--keyboards/boardrun/bizarre/keymaps/nopunin10did/keymap.c2
-rw-r--r--keyboards/boardrun/bizarre/readme.md2
-rw-r--r--keyboards/boardrun/classic/config.h8
-rw-r--r--keyboards/boardrun/classic/info.json6
-rw-r--r--keyboards/boardrun/classic/readme.md2
-rw-r--r--keyboards/boardsource/3x4/3x4.c1
-rw-r--r--keyboards/boardsource/3x4/3x4.h12
-rw-r--r--keyboards/boardsource/3x4/config.h70
-rw-r--r--keyboards/boardsource/3x4/info.json61
-rw-r--r--keyboards/boardsource/3x4/keymaps/default/keymap.c24
-rw-r--r--keyboards/boardsource/3x4/keymaps/via/keymap.c43
-rw-r--r--keyboards/boardsource/3x4/keymaps/via/readme.md5
-rw-r--r--keyboards/boardsource/3x4/rules.mk18
-rw-r--r--keyboards/boardsource/4x12/4x12.c1
-rw-r--r--keyboards/boardsource/4x12/4x12.h14
-rw-r--r--keyboards/boardsource/4x12/config.h68
-rw-r--r--keyboards/boardsource/4x12/info.json135
-rw-r--r--keyboards/boardsource/4x12/keymaps/codecoffeecode/keymap.c2
-rw-r--r--keyboards/boardsource/4x12/keymaps/default/keymap.c23
-rw-r--r--keyboards/boardsource/4x12/keymaps/via/keymap.c29
-rw-r--r--keyboards/boardsource/4x12/keymaps/via/readme.md5
-rw-r--r--keyboards/boardsource/4x12/rules.mk25
-rw-r--r--keyboards/boardsource/5x12/5x12.c1
-rw-r--r--keyboards/boardsource/5x12/5x12.h17
-rw-r--r--keyboards/boardsource/5x12/config.h69
-rw-r--r--keyboards/boardsource/5x12/info.json160
-rw-r--r--keyboards/boardsource/5x12/keymaps/default/keymap.c37
-rw-r--r--keyboards/boardsource/5x12/keymaps/via/keymap.c48
-rw-r--r--keyboards/boardsource/5x12/keymaps/via/readme.md5
-rw-r--r--keyboards/boardsource/5x12/rules.mk25
-rw-r--r--keyboards/boardsource/beiwagon/beiwagon.c38
-rw-r--r--keyboards/boardsource/beiwagon/beiwagon.h32
-rw-r--r--keyboards/boardsource/beiwagon/config.h117
-rw-r--r--keyboards/boardsource/beiwagon/info.json84
-rw-r--r--keyboards/boardsource/beiwagon/keymaps/default/keymap.c13
-rw-r--r--keyboards/boardsource/beiwagon/keymaps/default/readme.md1
-rw-r--r--keyboards/boardsource/beiwagon/keymaps/via/keymap.c25
-rw-r--r--keyboards/boardsource/beiwagon/keymaps/via/readme.md1
-rw-r--r--keyboards/boardsource/beiwagon/rules.mk19
-rw-r--r--keyboards/boardsource/holiday/spooky/config.h129
-rw-r--r--keyboards/boardsource/holiday/spooky/info.json58
-rw-r--r--keyboards/boardsource/holiday/spooky/keymaps/default/keymap.c14
-rw-r--r--keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c84
-rw-r--r--keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c83
-rw-r--r--keyboards/boardsource/holiday/spooky/rules.mk21
-rw-r--r--keyboards/boardsource/holiday/spooky/spooky.c17
-rw-r--r--keyboards/boardsource/holiday/spooky/spooky.h35
-rw-r--r--keyboards/boardsource/lulu/avr/info.json21
-rw-r--r--keyboards/boardsource/lulu/avr/rules.mk1
-rw-r--r--keyboards/boardsource/lulu/config.h52
-rw-r--r--keyboards/boardsource/lulu/info.json179
-rw-r--r--keyboards/boardsource/lulu/keymaps/default/keymap.c21
-rw-r--r--keyboards/boardsource/lulu/keymaps/via/keymap.c1
-rw-r--r--keyboards/boardsource/lulu/lulu.c425
-rw-r--r--keyboards/boardsource/lulu/lulu.h29
-rw-r--r--keyboards/boardsource/lulu/readme.md13
-rw-r--r--keyboards/boardsource/lulu/rp2040/config.h11
-rw-r--r--keyboards/boardsource/lulu/rp2040/halconf.h5
-rw-r--r--keyboards/boardsource/lulu/rp2040/info.json17
-rw-r--r--keyboards/boardsource/lulu/rp2040/mcuconf.h6
-rw-r--r--keyboards/boardsource/lulu/rp2040/rules.mk2
-rw-r--r--keyboards/boardsource/lulu/rules.mk26
-rw-r--r--keyboards/boardsource/microdox/config.h83
-rw-r--r--keyboards/boardsource/microdox/info.json118
-rw-r--r--keyboards/boardsource/microdox/keymaps/cole/keymap.c2
-rw-r--r--keyboards/boardsource/microdox/keymaps/cole/rules.mk1
-rw-r--r--keyboards/boardsource/microdox/keymaps/default/keymap.c2
-rw-r--r--keyboards/boardsource/microdox/keymaps/via/rules.mk2
-rw-r--r--keyboards/boardsource/microdox/microdox.c37
-rw-r--r--keyboards/boardsource/microdox/microdox.h38
-rw-r--r--keyboards/boardsource/microdox/readme.md3
-rw-r--r--keyboards/boardsource/microdox/rules.mk21
-rw-r--r--keyboards/boardsource/microdox/v1/config.h6
-rw-r--r--keyboards/boardsource/microdox/v1/info.json25
-rw-r--r--keyboards/boardsource/microdox/v1/rules.mk1
-rw-r--r--keyboards/boardsource/microdox/v2/config.h52
-rw-r--r--keyboards/boardsource/microdox/v2/info.json82
-rw-r--r--keyboards/boardsource/microdox/v2/rules.mk7
-rw-r--r--keyboards/boardsource/microdox/v2/v2.c62
-rw-r--r--keyboards/boardsource/microdox/v2/v2.h22
-rw-r--r--keyboards/boardsource/technik_o/config.h116
-rw-r--r--keyboards/boardsource/technik_o/info.json200
-rw-r--r--keyboards/boardsource/technik_o/keymaps/default/keymap.c23
-rw-r--r--keyboards/boardsource/technik_o/keymaps/default/readme.md1
-rw-r--r--keyboards/boardsource/technik_o/keymaps/via/keymap.c30
-rw-r--r--keyboards/boardsource/technik_o/keymaps/via/readme.md1
-rw-r--r--keyboards/boardsource/technik_o/rules.mk20
-rw-r--r--keyboards/boardsource/technik_o/technik_o.c26
-rw-r--r--keyboards/boardsource/technik_o/technik_o.h31
-rw-r--r--keyboards/boardsource/technik_s/config.h116
-rw-r--r--keyboards/boardsource/technik_s/info.json185
-rw-r--r--keyboards/boardsource/technik_s/keymaps/default/keymap.c26
-rw-r--r--keyboards/boardsource/technik_s/keymaps/default/readme.md1
-rw-r--r--keyboards/boardsource/technik_s/keymaps/via/keymap.c32
-rw-r--r--keyboards/boardsource/technik_s/keymaps/via/readme.md1
-rw-r--r--keyboards/boardsource/technik_s/rules.mk20
-rw-r--r--keyboards/boardsource/technik_s/technik_s.c38
-rw-r--r--keyboards/boardsource/technik_s/technik_s.h31
-rw-r--r--keyboards/boardsource/the_mark/config.h171
-rw-r--r--keyboards/boardsource/the_mark/info.json799
-rw-r--r--keyboards/boardsource/the_mark/keymaps/default/keymap.c2
-rw-r--r--keyboards/boardsource/the_mark/keymaps/default_ansi/keymap.c2
-rw-r--r--keyboards/boardsource/the_mark/keymaps/default_ansi_split_bs_space/keymap.c2
-rw-r--r--keyboards/boardsource/the_mark/keymaps/default_iso/keymap.c2
-rw-r--r--keyboards/boardsource/the_mark/keymaps/default_iso_split_bs_space/keymap.c2
-rw-r--r--keyboards/boardsource/the_mark/keymaps/stanrc85/keymap.c2
-rw-r--r--keyboards/boardsource/the_mark/keymaps/via/keymap.c2
-rw-r--r--keyboards/boardsource/the_mark/keymaps/via/readme.md3
-rw-r--r--keyboards/boardsource/the_mark/rules.mk21
-rw-r--r--keyboards/boardsource/the_mark/the_mark.c49
-rw-r--r--keyboards/boardsource/the_mark/the_mark.h109
-rw-r--r--keyboards/boardwalk/config.h8
-rw-r--r--keyboards/boardwalk/info.json6
-rw-r--r--keyboards/boardwalk/keymaps/mcallaster/keymap.c2
-rw-r--r--keyboards/boardwalk/keymaps/nchristus/keymap.c2
-rw-r--r--keyboards/boardwalk/keymaps/niclake/keymap.c4
-rw-r--r--keyboards/bobpad/config.h7
-rw-r--r--keyboards/bobpad/info.json6
-rw-r--r--keyboards/bobpad/readme.md4
-rw-r--r--keyboards/bolsa/damapad/config.h9
-rw-r--r--keyboards/bolsa/damapad/info.json6
-rw-r--r--keyboards/bop/config.h8
-rw-r--r--keyboards/bop/info.json6
-rw-r--r--keyboards/boston/config.h6
-rw-r--r--keyboards/boston/info.json8
-rw-r--r--keyboards/boston_meetup/2019/config.h3
-rw-r--r--keyboards/boston_meetup/2019/info.json10
-rw-r--r--keyboards/boston_meetup/config.h6
-rw-r--r--keyboards/boston_meetup/info.json14
-rw-r--r--keyboards/botanicalkeyboards/fm2u/config.h8
-rw-r--r--keyboards/botanicalkeyboards/fm2u/info.json8
-rw-r--r--keyboards/box75/config.h7
-rw-r--r--keyboards/box75/info.json6
-rw-r--r--keyboards/bpiphany/four_banger/config.h8
-rw-r--r--keyboards/bpiphany/four_banger/info.json6
-rw-r--r--keyboards/bpiphany/frosty_flake/config.h8
-rw-r--r--keyboards/bpiphany/frosty_flake/info.json6
-rw-r--r--keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/keymap.c2
-rw-r--r--keyboards/bpiphany/frosty_flake/keymaps/nikchi/config.h1
-rw-r--r--keyboards/bpiphany/frosty_flake/keymaps/nikchi/keymap.c32
-rw-r--r--keyboards/bpiphany/frosty_flake/keymaps/nikchi/variableTapDance.md5
-rw-r--r--keyboards/bpiphany/ghost_squid/config.h7
-rw-r--r--keyboards/bpiphany/ghost_squid/info.json8
-rw-r--r--keyboards/bpiphany/ghost_squid/readme.md2
-rwxr-xr-xkeyboards/bpiphany/hid_liber/config.h7
-rw-r--r--keyboards/bpiphany/hid_liber/info.json8
-rw-r--r--keyboards/bpiphany/kitten_paw/config.h8
-rw-r--r--keyboards/bpiphany/kitten_paw/info.json6
-rw-r--r--keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c4
-rw-r--r--keyboards/bpiphany/pegasushoof/2013/config.h8
-rw-r--r--keyboards/bpiphany/pegasushoof/2013/info.json3
-rw-r--r--keyboards/bpiphany/pegasushoof/2015/config.h8
-rw-r--r--keyboards/bpiphany/pegasushoof/2015/info.json3
-rw-r--r--keyboards/bpiphany/pegasushoof/info.json7
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c4
-rw-r--r--keyboards/bpiphany/pegasushoof/keymaps/citadel/keymap.c2
-rw-r--r--keyboards/bpiphany/sixshooter/config.h8
-rw-r--r--keyboards/bpiphany/sixshooter/info.json6
-rw-r--r--keyboards/bpiphany/tiger_lily/config.h8
-rw-r--r--keyboards/bpiphany/tiger_lily/info.json6
-rw-r--r--keyboards/bpiphany/unloved_bastard/config.h7
-rw-r--r--keyboards/bpiphany/unloved_bastard/info.json8
-rw-r--r--keyboards/bt66tech/bt66tech60/config.h7
-rw-r--r--keyboards/bt66tech/bt66tech60/info.json8
-rw-r--r--keyboards/bthlabs/geekpad/config.h8
-rw-r--r--keyboards/bthlabs/geekpad/info.json8
-rw-r--r--keyboards/buildakb/potato65/config.h8
-rw-r--r--keyboards/buildakb/potato65/info.json6
-rw-r--r--keyboards/buildakb/potato65hs/config.h8
-rw-r--r--keyboards/buildakb/potato65hs/info.json6
-rw-r--r--keyboards/buildakb/potato65s/config.h8
-rw-r--r--keyboards/buildakb/potato65s/info.json6
-rw-r--r--keyboards/buzzard/info.json10
-rw-r--r--keyboards/buzzard/rev1/config.h8
-rw-r--r--keyboards/buzzard/rev1/info.json16
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/config.h8
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/info.json6
-rw-r--r--keyboards/cablecardesigns/cypher/rev6/readme.md2
-rw-r--r--keyboards/caffeinated/serpent65/config.h8
-rw-r--r--keyboards/caffeinated/serpent65/info.json8
-rw-r--r--keyboards/canary/canary60rgb/info.json6
-rw-r--r--keyboards/canary/canary60rgb/v1/config.h8
-rw-r--r--keyboards/cannonkeys/adelie/config.h7
-rw-r--r--keyboards/cannonkeys/adelie/info.json6
-rw-r--r--keyboards/cannonkeys/aella/config.h7
-rw-r--r--keyboards/cannonkeys/aella/info.json6
-rw-r--r--keyboards/cannonkeys/an_c/config.h7
-rw-r--r--keyboards/cannonkeys/an_c/info.json6
-rw-r--r--keyboards/cannonkeys/atlas/atlas.h4
-rw-r--r--keyboards/cannonkeys/atlas/config.h7
-rw-r--r--keyboards/cannonkeys/atlas/info.json6
-rw-r--r--keyboards/cannonkeys/atlas_alps/config.h8
-rw-r--r--keyboards/cannonkeys/atlas_alps/info.json8
-rw-r--r--keyboards/cannonkeys/balance/config.h7
-rw-r--r--keyboards/cannonkeys/balance/info.json6
-rw-r--r--keyboards/cannonkeys/brutalv2_65/config.h7
-rw-r--r--keyboards/cannonkeys/brutalv2_65/info.json6
-rw-r--r--keyboards/cannonkeys/brutalv2_65/keymaps/default/keymap.c2
-rw-r--r--keyboards/cannonkeys/brutalv2_65/keymaps/via/keymap.c2
-rw-r--r--keyboards/cannonkeys/brutalv2_65/readme.md2
-rw-r--r--keyboards/cannonkeys/chimera65/config.h7
-rw-r--r--keyboards/cannonkeys/chimera65/info.json6
-rw-r--r--keyboards/cannonkeys/cloudline/config.h7
-rw-r--r--keyboards/cannonkeys/cloudline/info.json6
-rw-r--r--keyboards/cannonkeys/cloudline/keymaps/default/keymap.c2
-rw-r--r--keyboards/cannonkeys/cloudline/keymaps/via/keymap.c2
-rw-r--r--keyboards/cannonkeys/cloudline/readme.md2
-rw-r--r--keyboards/cannonkeys/crin/config.h64
-rw-r--r--keyboards/cannonkeys/crin/crin.c17
-rw-r--r--keyboards/cannonkeys/crin/crin.h33
-rw-r--r--keyboards/cannonkeys/crin/halconf.h31
-rw-r--r--keyboards/cannonkeys/crin/info.json16
-rw-r--r--keyboards/cannonkeys/crin/keymaps/default/keymap.c39
-rw-r--r--keyboards/cannonkeys/crin/keymaps/via/keymap.c59
-rw-r--r--keyboards/cannonkeys/crin/keymaps/via/rules.mk1
-rw-r--r--keyboards/cannonkeys/crin/mcuconf.h34
-rw-r--r--keyboards/cannonkeys/crin/readme.md18
-rw-r--r--keyboards/cannonkeys/crin/rules.mk24
-rw-r--r--keyboards/cannonkeys/db60/config.h6
-rw-r--r--keyboards/cannonkeys/db60/hotswap/config.h21
-rw-r--r--keyboards/cannonkeys/db60/hotswap/info.json6
-rw-r--r--keyboards/cannonkeys/db60/info.json6
-rw-r--r--keyboards/cannonkeys/db60/j02/config.h21
-rw-r--r--keyboards/cannonkeys/db60/j02/info.json6
-rw-r--r--keyboards/cannonkeys/db60/rev2/config.h21
-rw-r--r--keyboards/cannonkeys/db60/rev2/info.json6
-rw-r--r--keyboards/cannonkeys/devastatingtkl/config.h7
-rw-r--r--keyboards/cannonkeys/devastatingtkl/info.json6
-rw-r--r--keyboards/cannonkeys/gentoo/config.h55
-rw-r--r--keyboards/cannonkeys/gentoo/gentoo.c16
-rw-r--r--keyboards/cannonkeys/gentoo/gentoo.h35
-rw-r--r--keyboards/cannonkeys/gentoo/info.json91
-rw-r--r--keyboards/cannonkeys/gentoo/keymaps/default/keymap.c47
-rw-r--r--keyboards/cannonkeys/gentoo/keymaps/via/keymap.c65
-rw-r--r--keyboards/cannonkeys/gentoo/keymaps/via/rules.mk (renamed from keyboards/mechwild/bde/keymaps/lefty_via/rules.mk)0
-rw-r--r--keyboards/cannonkeys/gentoo/readme.md20
-rw-r--r--keyboards/cannonkeys/gentoo/rules.mk24
-rw-r--r--keyboards/cannonkeys/gentoo_hs/config.h57
-rw-r--r--keyboards/cannonkeys/gentoo_hs/gentoo_hs.c16
-rw-r--r--keyboards/cannonkeys/gentoo_hs/gentoo_hs.h34
-rw-r--r--keyboards/cannonkeys/gentoo_hs/info.json88
-rw-r--r--keyboards/cannonkeys/gentoo_hs/keymaps/default/keymap.c46
-rw-r--r--keyboards/cannonkeys/gentoo_hs/keymaps/via/keymap.c64
-rw-r--r--keyboards/cannonkeys/gentoo_hs/keymaps/via/rules.mk1
-rw-r--r--keyboards/cannonkeys/gentoo_hs/readme.md20
-rw-r--r--keyboards/cannonkeys/gentoo_hs/rules.mk24
-rw-r--r--keyboards/cannonkeys/hoodrowg/config.h7
-rw-r--r--keyboards/cannonkeys/hoodrowg/info.json6
-rw-r--r--keyboards/cannonkeys/hoodrowg/readme.md2
-rw-r--r--keyboards/cannonkeys/instant60/config.h7
-rw-r--r--keyboards/cannonkeys/instant60/info.json6
-rw-r--r--keyboards/cannonkeys/instant60/keymaps/via_standard/keymap.c2
-rw-r--r--keyboards/cannonkeys/instant65/config.h7
-rw-r--r--keyboards/cannonkeys/instant65/info.json6
-rw-r--r--keyboards/cannonkeys/iron165/config.h7
-rw-r--r--keyboards/cannonkeys/iron165/info.json6
-rw-r--r--keyboards/cannonkeys/malicious_ergo/chconf.h31
-rw-r--r--keyboards/cannonkeys/malicious_ergo/config.h96
-rw-r--r--keyboards/cannonkeys/malicious_ergo/halconf.h31
-rw-r--r--keyboards/cannonkeys/malicious_ergo/info.json16
-rw-r--r--keyboards/cannonkeys/malicious_ergo/keymaps/default/keymap.c42
-rw-r--r--keyboards/cannonkeys/malicious_ergo/keymaps/via/keymap.c60
-rw-r--r--keyboards/cannonkeys/malicious_ergo/keymaps/via/rules.mk1
-rw-r--r--keyboards/cannonkeys/malicious_ergo/malicious_ergo.c16
-rw-r--r--keyboards/cannonkeys/malicious_ergo/malicious_ergo.h34
-rw-r--r--keyboards/cannonkeys/malicious_ergo/mcuconf.h33
-rw-r--r--keyboards/cannonkeys/malicious_ergo/readme.md18
-rw-r--r--keyboards/cannonkeys/malicious_ergo/rules.mk25
-rw-r--r--keyboards/cannonkeys/moment_hs/info.json98
-rw-r--r--keyboards/cannonkeys/moment_hs/keymaps/default/keymap.c45
-rw-r--r--keyboards/cannonkeys/moment_hs/keymaps/via/keymap.c45
-rw-r--r--keyboards/cannonkeys/moment_hs/keymaps/via/rules.mk1
-rw-r--r--keyboards/cannonkeys/moment_hs/readme.md25
-rw-r--r--keyboards/cannonkeys/moment_hs/rules.mk2
-rwxr-xr-xkeyboards/cannonkeys/nearfield/config.h35
-rw-r--r--keyboards/cannonkeys/nearfield/info.json376
-rwxr-xr-xkeyboards/cannonkeys/nearfield/keymaps/default/keymap.c30
-rwxr-xr-xkeyboards/cannonkeys/nearfield/nearfield.c18
-rwxr-xr-xkeyboards/cannonkeys/nearfield/nearfield.h35
-rw-r--r--keyboards/cannonkeys/nearfield/readme.md31
-rwxr-xr-xkeyboards/cannonkeys/nearfield/rules.mk18
-rw-r--r--keyboards/cannonkeys/obliterated75/config.h7
-rw-r--r--keyboards/cannonkeys/obliterated75/info.json6
-rw-r--r--keyboards/cannonkeys/onyx/config.h6
-rw-r--r--keyboards/cannonkeys/onyx/info.json6
-rw-r--r--keyboards/cannonkeys/ortho48/config.h7
-rw-r--r--keyboards/cannonkeys/ortho48/info.json6
-rw-r--r--keyboards/cannonkeys/ortho60/config.h7
-rw-r--r--keyboards/cannonkeys/ortho60/info.json6
-rw-r--r--keyboards/cannonkeys/ortho75/config.h7
-rw-r--r--keyboards/cannonkeys/ortho75/info.json6
-rw-r--r--keyboards/cannonkeys/ortho75/ortho75.c73
-rw-r--r--keyboards/cannonkeys/practice60/config.h7
-rw-r--r--keyboards/cannonkeys/practice60/info.json6
-rw-r--r--keyboards/cannonkeys/practice65/config.h7
-rw-r--r--keyboards/cannonkeys/practice65/info.json8
-rw-r--r--keyboards/cannonkeys/rekt1800/config.h7
-rw-r--r--keyboards/cannonkeys/rekt1800/info.json6
-rw-r--r--keyboards/cannonkeys/sagittarius/config.h7
-rw-r--r--keyboards/cannonkeys/sagittarius/info.json6
-rw-r--r--keyboards/cannonkeys/sagittarius/keymaps/default/keymap.c4
-rw-r--r--keyboards/cannonkeys/sagittarius/keymaps/via/keymap.c4
-rw-r--r--keyboards/cannonkeys/satisfaction75/config.h9
-rw-r--r--keyboards/cannonkeys/satisfaction75/info.json11
-rw-r--r--keyboards/cannonkeys/satisfaction75/keymaps/boy_314/keymap.c2
-rw-r--r--keyboards/cannonkeys/satisfaction75/prototype/info.json3
-rw-r--r--keyboards/cannonkeys/satisfaction75/rev1/info.json3
-rw-r--r--keyboards/cannonkeys/satisfaction75/satisfaction75.c8
-rw-r--r--keyboards/cannonkeys/satisfaction75/satisfaction_oled.c4
-rw-r--r--keyboards/cannonkeys/savage65/config.h7
-rw-r--r--keyboards/cannonkeys/savage65/info.json6
-rw-r--r--keyboards/cannonkeys/tmov2/config.h7
-rw-r--r--keyboards/cannonkeys/tmov2/info.json6
-rw-r--r--keyboards/cannonkeys/tmov2/keymaps/brandonschlack/keymap.c2
-rw-r--r--keyboards/cannonkeys/tsukuyomi/config.h7
-rw-r--r--keyboards/cannonkeys/tsukuyomi/info.json6
-rw-r--r--keyboards/cannonkeys/vector/info.json35
-rw-r--r--keyboards/cannonkeys/vector/keymaps/default/keymap.c45
-rw-r--r--keyboards/cannonkeys/vector/keymaps/via/keymap.c45
-rw-r--r--keyboards/cannonkeys/vector/keymaps/via/rules.mk1
-rw-r--r--keyboards/cannonkeys/vector/readme.md25
-rw-r--r--keyboards/cannonkeys/vector/rules.mk2
-rw-r--r--keyboards/cannonkeys/vicious40/config.h7
-rw-r--r--keyboards/cannonkeys/vicious40/info.json6
-rw-r--r--keyboards/cantor/info.json1
-rw-r--r--keyboards/cantor/keymaps/zeromist/keymap.c107
-rw-r--r--keyboards/cantor/readme.md2
-rw-r--r--keyboards/capsunlocked/cu24/config.h8
-rw-r--r--keyboards/capsunlocked/cu24/info.json8
-rw-r--r--keyboards/capsunlocked/cu65/config.h8
-rw-r--r--keyboards/capsunlocked/cu65/info.json6
-rw-r--r--keyboards/capsunlocked/cu65/keymaps/iso_split_bs/keymap.c2
-rw-r--r--keyboards/capsunlocked/cu7/config.h8
-rw-r--r--keyboards/capsunlocked/cu7/info.json6
-rw-r--r--keyboards/capsunlocked/cu75/config.h7
-rw-r--r--keyboards/capsunlocked/cu75/cu75.c2
-rw-r--r--keyboards/capsunlocked/cu75/info.json8
-rw-r--r--keyboards/capsunlocked/cu80/v1/config.h8
-rw-r--r--keyboards/capsunlocked/cu80/v1/info.json6
-rw-r--r--keyboards/capsunlocked/cu80/v2_ansi/base/info.json6
-rw-r--r--keyboards/capsunlocked/cu80/v2_ansi/base/rules.mk (renamed from keyboards/yosino58/.noci)0
-rw-r--r--keyboards/capsunlocked/cu80/v2_ansi/info.json2
-rw-r--r--keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h4
-rw-r--r--keyboards/capsunlocked/cu80/v2_ansi/rgb/info.json1
-rw-r--r--keyboards/capsunlocked/cu80/v2_ansi/rules.mk11
-rw-r--r--keyboards/capsunlocked/cu80/v2_iso/base/info.json6
-rw-r--r--keyboards/capsunlocked/cu80/v2_iso/base/rules.mk (renamed from keyboards/yosino58/rev1/.noci)0
-rw-r--r--keyboards/capsunlocked/cu80/v2_iso/info.json2
-rw-r--r--keyboards/capsunlocked/cu80/v2_iso/rgb/config.h4
-rw-r--r--keyboards/capsunlocked/cu80/v2_iso/rgb/info.json1
-rw-r--r--keyboards/capsunlocked/cu80/v2_iso/rules.mk11
-rw-r--r--keyboards/carbo65/config.h9
-rw-r--r--keyboards/carbo65/info.json6
-rw-r--r--keyboards/catch22/config.h8
-rw-r--r--keyboards/catch22/info.json8
-rw-r--r--keyboards/centromere/config.h8
-rw-r--r--keyboards/centromere/info.json6
-rw-r--r--keyboards/centromere/keymaps/mattly/keymap.c2
-rw-r--r--keyboards/centromere/keymaps/mini/keymap.c2
-rw-r--r--keyboards/cest73/tkm/config.h8
-rw-r--r--keyboards/cest73/tkm/info.json8
-rw-r--r--keyboards/chalice/config.h6
-rw-r--r--keyboards/chalice/info.json6
-rw-r--r--keyboards/chalice/readme.md2
-rw-r--r--keyboards/chaos65/config.h7
-rw-r--r--keyboards/chaos65/info.json6
-rw-r--r--keyboards/chaos65/readme.md2
-rw-r--r--keyboards/charue/charon/config.h8
-rw-r--r--keyboards/charue/charon/info.json6
-rw-r--r--keyboards/charue/charon/keymaps/debug/keymap.c2
-rw-r--r--keyboards/charue/charon/readme.md2
-rw-r--r--keyboards/charue/sunsetter/config.h7
-rw-r--r--keyboards/charue/sunsetter/info.json6
-rw-r--r--keyboards/charue/sunsetter/keymaps/peott-fr/keymap.c2
-rw-r--r--keyboards/charue/sunsetter_r2/config.h11
-rw-r--r--keyboards/charue/sunsetter_r2/info.json8
-rw-r--r--keyboards/charue/sunsetter_r2/keymaps/debug/keymap.c2
-rw-r--r--keyboards/charue/sunsetter_r2/keymaps/debug/rules.mk1
-rw-r--r--keyboards/charue/sunsetter_r2/keymaps/default/keymap.c2
-rw-r--r--keyboards/charue/sunsetter_r2/keymaps/via/keymap.c2
-rw-r--r--keyboards/charue/sunsetter_r2/readme.md2
-rw-r--r--keyboards/charue/sunsetter_r2/rules.mk6
-rw-r--r--keyboards/charue/sunsetter_r2/sunsetter_r2.h12
-rw-r--r--keyboards/chavdai40/info.json6
-rw-r--r--keyboards/chavdai40/rev1/config.h8
-rw-r--r--keyboards/chavdai40/rev1/info.json6
-rw-r--r--keyboards/chavdai40/rev2/config.h8
-rw-r--r--keyboards/chavdai40/rev2/info.json6
-rw-r--r--keyboards/checkerboards/axon40/config.h9
-rw-r--r--keyboards/checkerboards/axon40/info.json6
-rw-r--r--keyboards/checkerboards/axon40/keymaps/npspears/keymap.c2
-rw-r--r--keyboards/checkerboards/candybar_ortho/config.h8
-rw-r--r--keyboards/checkerboards/candybar_ortho/info.json8
-rw-r--r--keyboards/checkerboards/candybar_ortho/keymaps/2x3u/keymap.c4
-rw-r--r--keyboards/checkerboards/candybar_ortho/keymaps/7u/keymap.c8
-rw-r--r--keyboards/checkerboards/g_idb60/config.h8
-rw-r--r--keyboards/checkerboards/g_idb60/info.json8
-rw-r--r--keyboards/checkerboards/nop60/config.h8
-rw-r--r--keyboards/checkerboards/nop60/info.json10
-rw-r--r--keyboards/checkerboards/nop60/keymaps/7u/keymap.c8
-rw-r--r--keyboards/checkerboards/phoenix45_ortho/config.h8
-rw-r--r--keyboards/checkerboards/phoenix45_ortho/info.json8
-rw-r--r--keyboards/checkerboards/phoenix45_ortho/keymaps/2x3u/keymap.c2
-rw-r--r--keyboards/checkerboards/phoenix45_ortho/keymaps/6u/keymap.c2
-rw-r--r--keyboards/checkerboards/plexus75/config.h8
-rw-r--r--keyboards/checkerboards/plexus75/info.json6
-rw-r--r--keyboards/checkerboards/plexus75_he/config.h8
-rw-r--r--keyboards/checkerboards/plexus75_he/info.json8
-rw-r--r--keyboards/checkerboards/plexus75_he/keymaps/2x2u/keymap.c12
-rw-r--r--keyboards/checkerboards/plexus75_he/keymaps/7u/keymap.c4
-rw-r--r--keyboards/checkerboards/plexus75_he/keymaps/via/keymap.c2
-rw-r--r--keyboards/checkerboards/pursuit40/config.h8
-rw-r--r--keyboards/checkerboards/pursuit40/info.json6
-rw-r--r--keyboards/checkerboards/quark/config.h29
-rw-r--r--keyboards/checkerboards/quark/info.json63
-rw-r--r--keyboards/checkerboards/quark/keymaps/ajp10304/keymap.c2
-rw-r--r--keyboards/checkerboards/quark/keymaps/default_5x12_7u/config.h19
-rw-r--r--keyboards/checkerboards/quark/keymaps/default_5x12_7u/keymap.c86
-rw-r--r--keyboards/checkerboards/quark/keymaps/pezhore/keymap.c2
-rw-r--r--keyboards/checkerboards/quark/keymaps/via/keymap.c8
-rw-r--r--keyboards/checkerboards/quark/keymaps/via/rules.mk1
-rw-r--r--keyboards/checkerboards/quark/quark.c12
-rw-r--r--keyboards/checkerboards/quark/quark.h18
-rw-r--r--keyboards/checkerboards/quark/rules.mk4
-rw-r--r--keyboards/checkerboards/quark_lp/config.h8
-rw-r--r--keyboards/checkerboards/quark_lp/info.json8
-rw-r--r--keyboards/checkerboards/quark_lp/keymaps/2x2u/keymap.c4
-rw-r--r--keyboards/checkerboards/quark_lp/keymaps/mit/keymap.c4
-rw-r--r--keyboards/checkerboards/quark_plus/config.h8
-rw-r--r--keyboards/checkerboards/quark_plus/info.json8
-rw-r--r--keyboards/checkerboards/quark_plus/keymaps/2u/keymap.c4
-rw-r--r--keyboards/checkerboards/quark_plus/keymaps/2x225u/keymap.c4
-rw-r--r--keyboards/checkerboards/quark_plus/keymaps/2x3u/keymap.c4
-rw-r--r--keyboards/checkerboards/quark_plus/quark_plus.c2
-rw-r--r--keyboards/checkerboards/quark_squared/config.h12
-rw-r--r--keyboards/checkerboards/quark_squared/info.json8
-rw-r--r--keyboards/checkerboards/quark_squared/keymaps/2u/keymap.c4
-rw-r--r--keyboards/checkerboards/quark_squared/keymaps/5_2u/keymap.c4
-rw-r--r--keyboards/checkerboards/quark_squared/keymaps/5_2x225u/keymap.c4
-rw-r--r--keyboards/checkerboards/quark_squared/quark_squared.c12
-rw-r--r--keyboards/checkerboards/quark_squared/rules.mk2
-rw-r--r--keyboards/checkerboards/snop60/config.h8
-rw-r--r--keyboards/checkerboards/snop60/info.json10
-rw-r--r--keyboards/checkerboards/snop60/keymaps/7u/keymap.c4
-rw-r--r--keyboards/checkerboards/snop60/keymaps/default/keymap.c2
-rw-r--r--keyboards/checkerboards/ud40_ortho_alt/config.h8
-rw-r--r--keyboards/checkerboards/ud40_ortho_alt/info.json6
-rw-r--r--keyboards/checkerboards/ud40_ortho_alt/keymaps/2x3u_alt/keymap.c8
-rw-r--r--keyboards/checkerboards/ud40_ortho_alt/keymaps/600u/keymap.c8
-rw-r--r--keyboards/checkerboards/ud40_ortho_alt/keymaps/600u_alt/keymap.c8
-rw-r--r--keyboards/checkerboards/ud40_ortho_alt/keymaps/700u/keymap.c8
-rw-r--r--keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/keymap.c8
-rw-r--r--keyboards/cherrybstudio/cb1800/config.h8
-rw-r--r--keyboards/cherrybstudio/cb1800/info.json8
-rw-r--r--keyboards/cherrybstudio/cb65/cb65.c14
-rw-r--r--keyboards/cherrybstudio/cb65/cb65.h35
-rw-r--r--keyboards/cherrybstudio/cb65/config.h68
-rw-r--r--keyboards/cherrybstudio/cb65/info.json87
-rw-r--r--keyboards/cherrybstudio/cb65/keymaps/default/keymap.c32
-rw-r--r--keyboards/cherrybstudio/cb65/keymaps/default/readme.md1
-rw-r--r--keyboards/cherrybstudio/cb65/keymaps/via/keymap.c49
-rw-r--r--keyboards/cherrybstudio/cb65/keymaps/via/rules.mk (renamed from keyboards/idobao/id80/v1/ansi/keymaps/via/rules.mk)0
-rw-r--r--keyboards/cherrybstudio/cb65/readme.md26
-rw-r--r--keyboards/cherrybstudio/cb65/rules.mk19
-rw-r--r--keyboards/cherrybstudio/cb87/config.h8
-rw-r--r--keyboards/cherrybstudio/cb87/info.json6
-rw-r--r--keyboards/cherrybstudio/cb87rgb/config.h8
-rw-r--r--keyboards/cherrybstudio/cb87rgb/info.json8
-rw-r--r--keyboards/cherrybstudio/cb87v2/config.h8
-rw-r--r--keyboards/cherrybstudio/cb87v2/info.json8
-rw-r--r--keyboards/cheshire/curiosity/config.h8
-rw-r--r--keyboards/cheshire/curiosity/info.json6
-rw-r--r--keyboards/cheshire/curiosity/keymaps/crd/keymap.c2
-rw-r--r--keyboards/cheshire/curiosity/keymaps/madhatter/keymap.c4
-rw-r--r--keyboards/chickenman/ciel/config.h8
-rw-r--r--keyboards/chickenman/ciel/info.json6
-rw-r--r--keyboards/chlx/merro60/config.h9
-rw-r--r--keyboards/chlx/merro60/info.json6
-rw-r--r--keyboards/chlx/merro60/keymaps/hhkb/keymap.c2
-rw-r--r--keyboards/chlx/str_merro60/config.h9
-rw-r--r--keyboards/chlx/str_merro60/info.json147
-rw-r--r--keyboards/chlx/str_merro60/keymaps/ansi/keymap.c2
-rw-r--r--keyboards/chlx/str_merro60/keymaps/default/keymap.c2
-rw-r--r--keyboards/chlx/str_merro60/keymaps/hhkb/keymap.c2
-rw-r--r--keyboards/chlx/str_merro60/keymaps/iso/keymap.c2
-rw-r--r--keyboards/chlx/str_merro60/keymaps/tsangan/keymap.c2
-rw-r--r--keyboards/chlx/str_merro60/keymaps/via/keymap.c2
-rw-r--r--keyboards/chocofly/chocofly.c16
-rw-r--r--keyboards/chocofly/chocofly.h10
-rw-r--r--keyboards/chocofly/config.h6
-rw-r--r--keyboards/chocofly/readme.md23
-rw-r--r--keyboards/chocofly/v1/config.h16
-rw-r--r--keyboards/chocofly/v1/info.json82
-rw-r--r--keyboards/chocofly/v1/keymaps/default/keymap.c44
-rw-r--r--keyboards/chocofly/v1/keymaps/winder/keymap.c60
-rw-r--r--keyboards/chocofly/v1/rules.mk20
-rw-r--r--keyboards/chocofly/v1/v1.c4
-rw-r--r--keyboards/chocofly/v1/v1.h28
-rw-r--r--keyboards/chocv/chocv.c17
-rw-r--r--keyboards/chocv/chocv.h43
-rw-r--r--keyboards/chocv/config.h35
-rw-r--r--keyboards/chocv/info.json60
-rw-r--r--keyboards/chocv/keymaps/default/keymap.c30
-rw-r--r--keyboards/chocv/keymaps/default/readme.md24
-rw-r--r--keyboards/chocv/readme.md26
-rw-r--r--keyboards/chocv/rules.mk20
-rw-r--r--keyboards/chord/zero/config.h4
-rw-r--r--keyboards/chord/zero/info.json65
-rw-r--r--keyboards/chord/zero/keymaps/default/keymap.c25
-rw-r--r--keyboards/chord/zero/keymaps/default/rules.mk (renamed from keyboards/idobao/id80/v1/ansi/keymaps/msf/rules.mk)0
-rw-r--r--keyboards/chord/zero/readme.md37
-rw-r--r--keyboards/chord/zero/rules.mk1
-rw-r--r--keyboards/chromatonemini/chromatonemini.c208
-rw-r--r--keyboards/chromatonemini/chromatonemini.h122
-rw-r--r--keyboards/chromatonemini/config.h283
-rw-r--r--keyboards/chromatonemini/info.json61
-rw-r--r--keyboards/chromatonemini/keymaps/default/keymap.c106
-rw-r--r--keyboards/chromatonemini/keymaps/default/readme.md1
-rw-r--r--keyboards/chromatonemini/keymaps/led/keymap.c682
-rw-r--r--keyboards/chromatonemini/keymaps/led/readme.md1
-rw-r--r--keyboards/chromatonemini/keymaps/led/rules.mk3
-rw-r--r--keyboards/chromatonemini/keymaps/party/keymap.c684
-rw-r--r--keyboards/chromatonemini/keymaps/party/readme.md6
-rw-r--r--keyboards/chromatonemini/keymaps/party/rules.mk3
-rw-r--r--keyboards/chromatonemini/keymaps/via/config.h4
-rw-r--r--keyboards/chromatonemini/keymaps/via/keymap.c275
-rw-r--r--keyboards/chromatonemini/keymaps/via/readme.md1
-rw-r--r--keyboards/chromatonemini/keymaps/via/rules.mk3
-rw-r--r--keyboards/chromatonemini/readme.md19
-rw-r--r--keyboards/chromatonemini/rgb_matrix_kb.inc58
-rw-r--r--keyboards/chromatonemini/rules.mk22
-rw-r--r--keyboards/cipulot/kallos/config.h55
-rw-r--r--keyboards/cipulot/kallos/info.json428
-rw-r--r--keyboards/cipulot/kallos/kallos.c17
-rw-r--r--keyboards/cipulot/kallos/kallos.h35
-rw-r--r--keyboards/cipulot/kallos/keymaps/default/keymap.c52
-rw-r--r--keyboards/cipulot/kallos/keymaps/via/keymap.c52
-rw-r--r--keyboards/cipulot/kallos/keymaps/via/rules.mk1
-rw-r--r--keyboards/cipulot/kallos/readme.md21
-rw-r--r--keyboards/cipulot/kallos/rules.mk19
-rw-r--r--keyboards/cipulot/kawayo/config.h37
-rw-r--r--keyboards/cipulot/kawayo/info.json613
-rw-r--r--keyboards/cipulot/kawayo/kawayo.c17
-rw-r--r--keyboards/cipulot/kawayo/kawayo.h153
-rw-r--r--keyboards/cipulot/kawayo/keymaps/default/keymap.c51
-rw-r--r--keyboards/cipulot/kawayo/keymaps/default_65_ansi_cb_blocker/keymap.c51
-rw-r--r--keyboards/cipulot/kawayo/keymaps/default_65_ansi_cb_blocker_tsangan/keymap.c51
-rw-r--r--keyboards/cipulot/kawayo/keymaps/default_65_ansi_cb_blocker_tsangan_split_bs/keymap.c51
-rw-r--r--keyboards/cipulot/kawayo/keymaps/via/keymap.c51
-rw-r--r--keyboards/cipulot/kawayo/keymaps/via/rules.mk1
-rw-r--r--keyboards/cipulot/kawayo/readme.md29
-rw-r--r--keyboards/cipulot/kawayo/rules.mk22
-rw-r--r--keyboards/ck60i/config.h7
-rw-r--r--keyboards/ck60i/info.json6
-rwxr-xr-xkeyboards/ckeys/handwire_101/config.h7
-rw-r--r--keyboards/ckeys/handwire_101/info.json8
-rwxr-xr-xkeyboards/ckeys/handwire_101/keymaps/default/keymap.c8
-rwxr-xr-xkeyboards/ckeys/handwire_101/readme.md4
-rwxr-xr-xkeyboards/ckeys/handwire_101/rules.mk1
-rw-r--r--keyboards/ckeys/nakey/config.h8
-rw-r--r--keyboards/ckeys/nakey/info.json6
-rw-r--r--keyboards/ckeys/obelus/config.h8
-rw-r--r--keyboards/ckeys/obelus/info.json6
-rwxr-xr-xkeyboards/ckeys/thedora/config.h8
-rw-r--r--keyboards/ckeys/thedora/info.json8
-rw-r--r--keyboards/ckeys/washington/config.h8
-rw-r--r--keyboards/ckeys/washington/info.json8
-rw-r--r--keyboards/ckeys/washington/keymaps/default/keymap.c4
-rw-r--r--keyboards/clawsome/bookerboard/config.h7
-rw-r--r--keyboards/clawsome/bookerboard/info.json8
-rw-r--r--keyboards/clawsome/coupe/config.h7
-rw-r--r--keyboards/clawsome/coupe/info.json8
-rw-r--r--keyboards/clawsome/doodle/config.h7
-rw-r--r--keyboards/clawsome/doodle/info.json6
-rw-r--r--keyboards/clawsome/fightpad/config.h6
-rw-r--r--keyboards/clawsome/fightpad/info.json6
-rw-r--r--keyboards/clawsome/gamebuddy/v1_0/config.h7
-rw-r--r--keyboards/clawsome/gamebuddy/v1_0/info.json6
-rw-r--r--keyboards/clawsome/gamebuddy/v1_m/config.h7
-rw-r--r--keyboards/clawsome/gamebuddy/v1_m/info.json6
-rw-r--r--keyboards/clawsome/hatchback/config.h7
-rw-r--r--keyboards/clawsome/hatchback/info.json6
-rw-r--r--keyboards/clawsome/luggage_rack/config.h7
-rw-r--r--keyboards/clawsome/luggage_rack/info.json6
-rw-r--r--keyboards/clawsome/numeros/config.h7
-rw-r--r--keyboards/clawsome/numeros/info.json8
-rw-r--r--keyboards/clawsome/roadster/config.h7
-rw-r--r--keyboards/clawsome/roadster/info.json6
-rw-r--r--keyboards/clawsome/sedan/config.h7
-rw-r--r--keyboards/clawsome/sedan/info.json8
-rw-r--r--keyboards/clawsome/sidekick/config.h7
-rw-r--r--keyboards/clawsome/sidekick/info.json6
-rw-r--r--keyboards/clawsome/suv/config.h7
-rw-r--r--keyboards/clawsome/suv/info.json6
-rw-r--r--keyboards/clickety_split/leeloo/info.json6
-rw-r--r--keyboards/clickety_split/leeloo/rev1/config.h7
-rw-r--r--keyboards/clueboard/66/keymaps/66_ansi/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/66_iso/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/badger/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/bloodlvst/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/caps_fn/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/colemak/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/jokrik/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/mac_optimized/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/magicmonty/keymap.c4
-rw-r--r--keyboards/clueboard/66/keymaps/manofinterests/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/maximised/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/mouse_keys/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/mrscooty/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/muzfuz/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/serubin/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/shift_fn/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/smt/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/tetris/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/unix_optimized/keymap.c2
-rw-r--r--keyboards/clueboard/66/keymaps/win_optimized/keymap.c2
-rw-r--r--keyboards/clueboard/66/rev4/keymaps/keymap.c2
-rw-r--r--keyboards/clueboard/66/rev4/keymaps/mine/keymap.c2
-rw-r--r--keyboards/clueboard/66/rev4/mine/keymap.c13
-rw-r--r--keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c2
-rw-r--r--keyboards/clueboard/66_hotswap/gen1/keymaps/json/keymap.json2
-rw-r--r--keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c2
-rw-r--r--keyboards/cmm_studio/fuji65/config.h7
-rw-r--r--keyboards/cmm_studio/fuji65/info.json8
-rw-r--r--keyboards/cmm_studio/saka68/hotswap/config.h7
-rw-r--r--keyboards/cmm_studio/saka68/hotswap/info.json8
-rw-r--r--keyboards/cmm_studio/saka68/solder/config.h7
-rw-r--r--keyboards/cmm_studio/saka68/solder/info.json8
-rw-r--r--keyboards/coarse/cordillera/config.h7
-rw-r--r--keyboards/coarse/cordillera/info.json6
-rw-r--r--keyboards/coarse/ixora/config.h7
-rw-r--r--keyboards/coarse/ixora/info.json8
-rw-r--r--keyboards/coarse/ixora/keymaps/wntrmln/keymap.c2
-rw-r--r--keyboards/coarse/ixora/readme.md4
-rw-r--r--keyboards/coarse/vinta/config.h7
-rw-r--r--keyboards/coarse/vinta/info.json8
-rw-r--r--keyboards/coarse/vinta/readme.md4
-rw-r--r--keyboards/compound/config.h7
-rw-r--r--keyboards/compound/info.json6
-rw-r--r--keyboards/contender/config.h8
-rw-r--r--keyboards/contender/info.json6
-rw-r--r--keyboards/contender/readme.md2
-rwxr-xr-xkeyboards/contra/config.h16
-rw-r--r--keyboards/contra/info.json6
-rw-r--r--keyboards/contra/keymaps/alper/keymap.c2
-rw-r--r--keyboards/contra/keymaps/default/keymap.c2
-rw-r--r--keyboards/contra/keymaps/enigma/config.h27
-rw-r--r--keyboards/contra/keymaps/enigma/keymap.c625
-rw-r--r--keyboards/contra/keymaps/enigma/readme.md35
-rw-r--r--keyboards/contra/keymaps/enigma/rules.mk2
-rw-r--r--keyboards/contra/keymaps/losinggeneration/keymap.c4
-rw-r--r--keyboards/contra/keymaps/msiu/keymap.c2
-rw-r--r--keyboards/converter/a1200/info.json1
-rw-r--r--keyboards/converter/a1200/miss1200/config.h8
-rw-r--r--keyboards/converter/a1200/miss1200/info.json9
-rw-r--r--keyboards/converter/a1200/mistress1200/config.h8
-rw-r--r--keyboards/converter/a1200/mistress1200/info.json9
-rw-r--r--keyboards/converter/a1200/teensy2pp/config.h8
-rw-r--r--keyboards/converter/a1200/teensy2pp/info.json9
-rw-r--r--keyboards/converter/adb_usb/config.h6
-rw-r--r--keyboards/converter/adb_usb/info.json6
-rw-r--r--keyboards/converter/adb_usb/readme.md12
-rw-r--r--keyboards/converter/adb_usb/rev1/rules.mk5
-rw-r--r--keyboards/converter/adb_usb/rev2/rules.mk5
-rw-r--r--keyboards/converter/adb_usb/rules.mk30
-rw-r--r--keyboards/converter/hp_46010a/config.h6
-rw-r--r--keyboards/converter/hp_46010a/info.json8
-rw-r--r--keyboards/converter/ibm_terminal/config.h7
-rw-r--r--keyboards/converter/ibm_terminal/info.json8
-rw-r--r--keyboards/converter/ibm_terminal/keymaps/dsanchezseco/keymap.c2
-rw-r--r--keyboards/converter/m0110_usb/config.h9
-rw-r--r--keyboards/converter/m0110_usb/info.json8
-rw-r--r--keyboards/converter/modelm101/config.h8
-rw-r--r--keyboards/converter/modelm101/info.json8
-rw-r--r--keyboards/converter/modelm101_teensy2/config.h66
-rw-r--r--keyboards/converter/modelm101_teensy2/info.json16
-rw-r--r--keyboards/converter/modelm101_teensy2/keymaps/default/keymap.c27
-rw-r--r--keyboards/converter/modelm101_teensy2/keymaps/default/readme.md1
-rw-r--r--keyboards/converter/modelm101_teensy2/modelm101_teensy2.c16
-rw-r--r--keyboards/converter/modelm101_teensy2/modelm101_teensy2.h45
-rw-r--r--keyboards/converter/modelm101_teensy2/readme.md29
-rw-r--r--keyboards/converter/modelm101_teensy2/rules.mk18
-rw-r--r--keyboards/converter/modelm_ssk/config.h8
-rw-r--r--keyboards/converter/modelm_ssk/info.json6
-rw-r--r--keyboards/converter/numeric_keypad_IIe/config.h8
-rw-r--r--keyboards/converter/numeric_keypad_IIe/info.json6
-rw-r--r--keyboards/converter/numeric_keypad_IIe/keymaps/newbold/keymap.c2
-rw-r--r--keyboards/converter/palm_usb/config.h6
-rw-r--r--keyboards/converter/palm_usb/info.json11
-rw-r--r--keyboards/converter/palm_usb/stowaway/info.json3
-rw-r--r--keyboards/converter/periboard_512/config.h7
-rw-r--r--keyboards/converter/periboard_512/info.json9
-rw-r--r--keyboards/converter/siemens_tastatur/config.h8
-rw-r--r--keyboards/converter/siemens_tastatur/info.json6
-rw-r--r--keyboards/converter/sun_usb/config.h6
-rw-r--r--keyboards/converter/sun_usb/info.json11
-rw-r--r--keyboards/converter/sun_usb/type3/info.json3
-rw-r--r--keyboards/converter/sun_usb/type5/info.json3
-rw-r--r--keyboards/converter/usb_usb/ble/config.h3
-rw-r--r--keyboards/converter/usb_usb/config.h7
-rw-r--r--keyboards/converter/usb_usb/info.json8
-rw-r--r--keyboards/converter/usb_usb/keymaps/coloneljesus/keymap.c2
-rw-r--r--keyboards/converter/usb_usb/keymaps/narze/keymap.c2
-rw-r--r--keyboards/converter/xt_usb/config.h7
-rw-r--r--keyboards/converter/xt_usb/info.json8
-rw-r--r--keyboards/cool836a/config.h8
-rw-r--r--keyboards/cool836a/info.json8
-rwxr-xr-xkeyboards/copenhagen_click/click_pad_v1/config.h8
-rwxr-xr-xkeyboards/copenhagen_click/click_pad_v1/info.json8
-rw-r--r--keyboards/coseyfannitutti/discipad/config.h7
-rw-r--r--keyboards/coseyfannitutti/discipad/info.json6
-rw-r--r--keyboards/coseyfannitutti/discipline/config.h7
-rw-r--r--keyboards/coseyfannitutti/discipline/info.json6
-rw-r--r--keyboards/coseyfannitutti/discipline/keymaps/brandonschlack/keymap.c2
-rw-r--r--keyboards/coseyfannitutti/discipline/keymaps/briianpowell/keymap.c112
-rw-r--r--keyboards/coseyfannitutti/discipline/keymaps/briianpowell/readme.md15
-rw-r--r--keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c10
-rw-r--r--keyboards/coseyfannitutti/discipline/keymaps/osx/keymap.c2
-rw-r--r--keyboards/coseyfannitutti/mullet/config.h8
-rw-r--r--keyboards/coseyfannitutti/mullet/info.json6
-rw-r--r--keyboards/coseyfannitutti/mullet/keymaps/alternate/keymap.c4
-rw-r--r--keyboards/coseyfannitutti/mulletpad/config.h8
-rw-r--r--keyboards/coseyfannitutti/mulletpad/info.json6
-rw-r--r--keyboards/coseyfannitutti/mysterium/config.h7
-rw-r--r--keyboards/coseyfannitutti/mysterium/info.json6
-rw-r--r--keyboards/coseyfannitutti/mysterium/keymaps/ansi_7u/keymap.c2
-rw-r--r--keyboards/coseyfannitutti/romeo/config.h7
-rw-r--r--keyboards/coseyfannitutti/romeo/info.json6
-rw-r--r--keyboards/coseyfannitutti/romeo/keymaps/brandonschlack/keymap.c2
-rw-r--r--keyboards/cozykeys/bloomer/config.h6
-rw-r--r--keyboards/cozykeys/bloomer/info.json10
-rw-r--r--keyboards/cozykeys/bloomer/v2/config.h4
-rw-r--r--keyboards/cozykeys/bloomer/v2/info.json6
-rw-r--r--keyboards/cozykeys/bloomer/v3/config.h4
-rw-r--r--keyboards/cozykeys/bloomer/v3/info.json6
-rw-r--r--keyboards/cozykeys/speedo/v2/config.h8
-rw-r--r--keyboards/cozykeys/speedo/v2/info.json6
-rw-r--r--keyboards/cozykeys/speedo/v3/config.h8
-rw-r--r--keyboards/cozykeys/speedo/v3/info.json6
-rw-r--r--keyboards/cozykeys/speedo/v3/keymaps/pcewing/keymap.c132
-rw-r--r--keyboards/cradio/config.h75
-rw-r--r--keyboards/cradio/cradio.c27
-rw-r--r--keyboards/cradio/cradio.h52
-rw-r--r--keyboards/cradio/info.json122
-rw-r--r--keyboards/cradio/readme.md8
-rw-r--r--keyboards/cradio/rules.mk22
-rw-r--r--keyboards/craftwalk/config.h8
-rw-r--r--keyboards/craftwalk/info.json6
-rwxr-xr-xkeyboards/crawlpad/config.h8
-rw-r--r--keyboards/crawlpad/info.json6
-rw-r--r--keyboards/crazy_keyboard_68/config.h8
-rw-r--r--keyboards/crazy_keyboard_68/info.json8
-rw-r--r--keyboards/crbn/config.h8
-rw-r--r--keyboards/crbn/info.json6
-rw-r--r--keyboards/creatkeebs/glacier/config.h8
-rw-r--r--keyboards/creatkeebs/glacier/info.json6
-rw-r--r--keyboards/creatkeebs/glacier/readme.md4
-rw-r--r--keyboards/creatkeebs/thera/config.h8
-rw-r--r--keyboards/creatkeebs/thera/info.json921
-rw-r--r--keyboards/creatkeebs/thera/keymaps/default/keymap.c46
-rw-r--r--keyboards/creatkeebs/thera/keymaps/default_ansi/keymap.c30
-rw-r--r--keyboards/creatkeebs/thera/keymaps/default_ansi_rwkl/keymap.c30
-rw-r--r--keyboards/creatkeebs/thera/keymaps/default_ansi_rwkl_split_bs/keymap.c30
-rw-r--r--keyboards/creatkeebs/thera/keymaps/default_ansi_split_bs/keymap.c30
-rw-r--r--keyboards/creatkeebs/thera/keymaps/default_iso/keymap.c30
-rw-r--r--keyboards/creatkeebs/thera/keymaps/default_iso_rwkl/keymap.c30
-rw-r--r--keyboards/creatkeebs/thera/keymaps/default_iso_rwkl_split_bs/keymap.c30
-rw-r--r--keyboards/creatkeebs/thera/keymaps/default_iso_split_bs/keymap.c30
-rw-r--r--keyboards/creatkeebs/thera/readme.md4
-rw-r--r--keyboards/creatkeebs/thera/thera.h185
-rw-r--r--keyboards/crimsonkeyboards/resume1800/config.h7
-rw-r--r--keyboards/crimsonkeyboards/resume1800/info.json6
-rw-r--r--keyboards/crin/config.h8
-rw-r--r--keyboards/crin/info.json6
-rw-r--r--keyboards/crin/readme.md2
-rw-r--r--keyboards/crkbd/config.h7
-rw-r--r--keyboards/crkbd/info.json8
-rw-r--r--keyboards/crkbd/keymaps/ardakilic/keymap.c4
-rw-r--r--keyboards/crkbd/keymaps/bermeo/config.h126
-rw-r--r--keyboards/crkbd/keymaps/bermeo/glcdfont.c232
-rw-r--r--keyboards/crkbd/keymaps/bermeo/keymap.c596
-rw-r--r--keyboards/crkbd/keymaps/bermeo/readme.md158
-rw-r--r--keyboards/crkbd/keymaps/bermeo/rules.mk19
-rw-r--r--keyboards/crkbd/keymaps/blipson/keymap.c2
-rw-r--r--keyboards/crkbd/keymaps/crkdves/config.h105
-rw-r--r--keyboards/crkbd/keymaps/crkdves/glcdfont.c236
-rw-r--r--keyboards/crkbd/keymaps/crkdves/keymap.c415
-rw-r--r--keyboards/crkbd/keymaps/crkdves/rules.mk8
-rw-r--r--keyboards/crkbd/keymaps/crkqwes/config.h116
-rw-r--r--keyboards/crkbd/keymaps/crkqwes/glcdfont.c236
-rw-r--r--keyboards/crkbd/keymaps/crkqwes/keymap.c415
-rw-r--r--keyboards/crkbd/keymaps/crkqwes/rules.mk8
-rw-r--r--keyboards/crkbd/keymaps/davidrambo/config.h2
-rw-r--r--keyboards/crkbd/keymaps/davidrambo/keymap.c5
-rw-r--r--keyboards/crkbd/keymaps/devdev/keymap.c29
-rw-r--r--keyboards/crkbd/keymaps/dsanchezseco/keymap.c2
-rw-r--r--keyboards/crkbd/keymaps/edvorakjp/keymap.c4
-rw-r--r--keyboards/crkbd/keymaps/edvorakjp/oled.c2
-rw-r--r--keyboards/crkbd/keymaps/gotham/config.h3
-rw-r--r--keyboards/crkbd/keymaps/gotham/keymap.c2
-rw-r--r--keyboards/crkbd/keymaps/gotham/oled.c2
-rw-r--r--keyboards/crkbd/keymaps/hvp/config.h4
-rw-r--r--keyboards/crkbd/keymaps/hvp/keymap.c47
-rw-r--r--keyboards/crkbd/keymaps/hvp/rules.mk9
-rw-r--r--keyboards/crkbd/keymaps/jarred/config.h3
-rw-r--r--keyboards/crkbd/keymaps/jarred/keymap.c49
-rw-r--r--keyboards/crkbd/keymaps/jarred/rules.mk8
-rw-r--r--keyboards/crkbd/keymaps/joe_scotto/config.h66
-rw-r--r--keyboards/crkbd/keymaps/joe_scotto/keymap.c46
-rw-r--r--keyboards/crkbd/keymaps/jpe230/keymap.c2
-rw-r--r--keyboards/crkbd/keymaps/julian_turner/config.h34
-rw-r--r--keyboards/crkbd/keymaps/julian_turner/keymap.c61
-rw-r--r--keyboards/crkbd/keymaps/julian_turner/keytabs.h27
-rw-r--r--keyboards/crkbd/keymaps/julian_turner/layers.h19
-rw-r--r--keyboards/crkbd/keymaps/julian_turner/oled.c74
-rw-r--r--keyboards/crkbd/keymaps/julian_turner/oled.h27
-rw-r--r--keyboards/crkbd/keymaps/julian_turner/readme.md5
-rw-r--r--keyboards/crkbd/keymaps/julian_turner/rules.mk15
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/config.h3
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/keymap.c4
-rw-r--r--keyboards/crkbd/keymaps/kidbrazil/rules.mk3
-rw-r--r--keyboards/crkbd/keymaps/madhatter/config.h3
-rw-r--r--keyboards/crkbd/keymaps/madhatter/keymap.c52
-rw-r--r--keyboards/crkbd/keymaps/madhatter/rules.mk8
-rw-r--r--keyboards/crkbd/keymaps/mb_via/keymap.c2
-rw-r--r--keyboards/crkbd/keymaps/ninjonas/keymap.c2
-rw-r--r--keyboards/crkbd/keymaps/oled_sample/config.h4
-rw-r--r--keyboards/crkbd/keymaps/oled_sample/keymap.c2
-rw-r--r--keyboards/crkbd/keymaps/ollyhayes/config.h96
-rw-r--r--keyboards/crkbd/keymaps/ollyhayes/keymap.c112
-rw-r--r--keyboards/crkbd/keymaps/ollyhayes/oled.c112
-rw-r--r--keyboards/crkbd/keymaps/ollyhayes/readme.md67
-rw-r--r--keyboards/crkbd/keymaps/ollyhayes/rules.mk17
-rw-r--r--keyboards/crkbd/keymaps/rarick/keymap.c2
-rw-r--r--keyboards/crkbd/keymaps/rmeli/keymap.c2
-rw-r--r--keyboards/crkbd/keymaps/rpbaptist/config.h2
-rw-r--r--keyboards/crkbd/keymaps/rpbaptist/keymap.c2
-rw-r--r--keyboards/crkbd/keymaps/rs/config.h2
-rw-r--r--keyboards/crkbd/keymaps/rs/oled.c33
-rw-r--r--keyboards/crkbd/keymaps/rs/rules.mk1
-rw-r--r--keyboards/crkbd/keymaps/soundmonster/config.h4
-rw-r--r--keyboards/crkbd/keymaps/soundmonster/keymap.c2
-rwxr-xr-xkeyboards/crkbd/keymaps/thumb_ctrl/config.h2
-rwxr-xr-xkeyboards/crkbd/keymaps/thumb_ctrl/keymap.c52
-rwxr-xr-xkeyboards/crkbd/keymaps/thumb_ctrl/rules.mk8
-rw-r--r--keyboards/crkbd/keymaps/thunderbird2086/config.h95
-rw-r--r--keyboards/crkbd/keymaps/thunderbird2086/glcdfont.c238
-rw-r--r--keyboards/crkbd/keymaps/thunderbird2086/keycodes.h69
-rw-r--r--keyboards/crkbd/keymaps/thunderbird2086/keymap.c85
-rw-r--r--keyboards/crkbd/keymaps/thunderbird2086/layers_block.h89
-rw-r--r--keyboards/crkbd/keymaps/thunderbird2086/oled.c298
-rw-r--r--keyboards/crkbd/keymaps/thunderbird2086/process_records.c45
-rw-r--r--keyboards/crkbd/keymaps/thunderbird2086/readme.md65
-rw-r--r--keyboards/crkbd/keymaps/thunderbird2086/rules.mk18
-rw-r--r--keyboards/crkbd/keymaps/thunderbird2086/tap_dances.c12
-rw-r--r--keyboards/crkbd/keymaps/thunderbird2086/tap_dances.h16
-rw-r--r--keyboards/crkbd/keymaps/toinux/keymap.c2
-rw-r--r--keyboards/crkbd/keymaps/vayashiko/keymap.c4
-rw-r--r--keyboards/crkbd/keymaps/vayashiko/rules.mk3
-rw-r--r--keyboards/crkbd/keymaps/vlukash_trackpad_left/config.h3
-rw-r--r--keyboards/crkbd/keymaps/vlukash_trackpad_left/keymap.c47
-rw-r--r--keyboards/crkbd/keymaps/vlukash_trackpad_left/rules.mk8
-rw-r--r--keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c2
-rw-r--r--keyboards/crkbd/keymaps/vxid/config.h3
-rw-r--r--keyboards/crkbd/keymaps/vxid/rules.mk8
-rw-r--r--keyboards/crkbd/keymaps/xyverz/keymap.c2
-rw-r--r--keyboards/crkbd/lib/i2c.c162
-rw-r--r--keyboards/crkbd/lib/i2c.h46
-rw-r--r--keyboards/crkbd/lib/layer_state_reader.c4
-rw-r--r--keyboards/crkbd/rules.mk1
-rw-r--r--keyboards/custommk/bonsai_c4_template/bonsai_c4_template.c23
-rw-r--r--keyboards/custommk/bonsai_c4_template/config.h79
-rw-r--r--keyboards/custommk/bonsai_c4_template/halconf.h35
-rw-r--r--keyboards/custommk/bonsai_c4_template/mcuconf.h35
-rw-r--r--keyboards/custommk/bonsai_c4_template/readme.md10
-rw-r--r--keyboards/custommk/evo70/config.h51
-rw-r--r--keyboards/custommk/evo70/evo70.c811
-rw-r--r--keyboards/custommk/evo70/evo70.h34
-rw-r--r--keyboards/custommk/evo70/info.json111
-rw-r--r--keyboards/custommk/evo70/keymaps/default/keymap.c49
-rw-r--r--keyboards/custommk/evo70/keymaps/default/readme.md3
-rw-r--r--keyboards/custommk/evo70/keymaps/via/keymap.c98
-rw-r--r--keyboards/custommk/evo70/keymaps/via/readme.md3
-rw-r--r--keyboards/custommk/evo70/keymaps/via/rules.mk (renamed from keyboards/gentleman65/keymaps/via/rules.mk)0
-rw-r--r--keyboards/custommk/evo70/readme.md21
-rw-r--r--keyboards/custommk/evo70/rules.mk22
-rw-r--r--keyboards/custommk/genesis/rev1/config.h8
-rw-r--r--keyboards/custommk/genesis/rev1/info.json6
-rw-r--r--keyboards/custommk/genesis/rev2/config.h8
-rw-r--r--keyboards/custommk/genesis/rev2/info.json6
-rw-r--r--keyboards/cutie_club/borsdorf/config.h8
-rw-r--r--keyboards/cutie_club/borsdorf/info.json6
-rwxr-xr-xkeyboards/cutie_club/giant_macro_pad/config.h8
-rw-r--r--keyboards/cutie_club/giant_macro_pad/info.json6
-rw-r--r--keyboards/cutie_club/keebcats/denis/config.h8
-rw-r--r--keyboards/cutie_club/keebcats/denis/info.json8
-rw-r--r--keyboards/cutie_club/keebcats/dougal/config.h8
-rw-r--r--keyboards/cutie_club/keebcats/dougal/info.json8
-rw-r--r--keyboards/cutie_club/novus/config.h8
-rw-r--r--keyboards/cutie_club/novus/info.json6
-rw-r--r--keyboards/cutie_club/wraith/config.h8
-rw-r--r--keyboards/cutie_club/wraith/info.json8
-rw-r--r--keyboards/cutie_club/wraith/keymaps/amber/keymap.c2
-rw-r--r--keyboards/cutie_club/wraith/keymaps/timer/keymap.c2
-rw-r--r--keyboards/cx60/config.h8
-rw-r--r--keyboards/cx60/info.json8
-rw-r--r--keyboards/cx60/keymaps/via_caps/keymap.c2
-rw-r--r--keyboards/cybergear/macro25/config.h4
-rw-r--r--keyboards/cybergear/macro25/info.json3
-rw-r--r--keyboards/dailycraft/bat43/config.h8
-rw-r--r--keyboards/dailycraft/bat43/info.json75
-rw-r--r--keyboards/dailycraft/bat43/readme.md2
-rw-r--r--keyboards/dailycraft/bat43/rev1/info.json69
-rw-r--r--keyboards/dailycraft/bat43/rev2/info.json69
-rw-r--r--keyboards/dailycraft/claw44/keymaps/oled/keymap.c4
-rw-r--r--keyboards/dailycraft/claw44/readme.md2
-rw-r--r--keyboards/dailycraft/claw44/rev1/config.h8
-rw-r--r--keyboards/dailycraft/claw44/rev1/info.json8
-rw-r--r--keyboards/dailycraft/owl8/config.h8
-rw-r--r--keyboards/dailycraft/owl8/info.json6
-rw-r--r--keyboards/dailycraft/owl8/readme.md2
-rw-r--r--keyboards/dailycraft/sandbox/readme.md2
-rw-r--r--keyboards/dailycraft/sandbox/rev1/config.h8
-rw-r--r--keyboards/dailycraft/sandbox/rev1/info.json6
-rw-r--r--keyboards/dailycraft/sandbox/rev2/config.h8
-rw-r--r--keyboards/dailycraft/sandbox/rev2/info.json6
-rw-r--r--keyboards/dailycraft/stickey4/config.h8
-rw-r--r--keyboards/dailycraft/stickey4/info.json11
-rw-r--r--keyboards/dailycraft/stickey4/readme.md2
-rw-r--r--keyboards/dailycraft/wings42/readme.md2
-rw-r--r--keyboards/dailycraft/wings42/rev1/config.h8
-rw-r--r--keyboards/dailycraft/wings42/rev1/info.json6
-rw-r--r--keyboards/dailycraft/wings42/rev1/readme.md2
-rw-r--r--keyboards/dailycraft/wings42/rev1_extkeys/config.h8
-rw-r--r--keyboards/dailycraft/wings42/rev1_extkeys/info.json6
-rw-r--r--keyboards/dailycraft/wings42/rev1_extkeys/readme.md2
-rw-r--r--keyboards/dailycraft/wings42/rev2/config.h8
-rw-r--r--keyboards/dailycraft/wings42/rev2/info.json6
-rw-r--r--keyboards/dailycraft/wings42/rev2/readme.md2
-rw-r--r--keyboards/daji/seis_cinco/config.h8
-rw-r--r--keyboards/daji/seis_cinco/info.json6
-rw-r--r--keyboards/daji/seis_cinco/keymaps/split_backspace/keymap.c2
-rw-r--r--keyboards/db/db63/config.h7
-rw-r--r--keyboards/db/db63/info.json8
-rw-r--r--keyboards/dc01/arrow/config.h8
-rw-r--r--keyboards/dc01/arrow/info.json8
-rw-r--r--keyboards/dc01/left/config.h8
-rw-r--r--keyboards/dc01/left/i2c.c159
-rw-r--r--keyboards/dc01/left/i2c.h28
-rw-r--r--keyboards/dc01/left/info.json8
-rw-r--r--keyboards/dc01/numpad/config.h8
-rw-r--r--keyboards/dc01/numpad/info.json6
-rw-r--r--keyboards/dc01/right/config.h8
-rw-r--r--keyboards/dc01/right/info.json8
-rw-r--r--keyboards/dekunukem/duckypad/config.h6
-rw-r--r--keyboards/dekunukem/duckypad/info.json6
-rw-r--r--keyboards/delikeeb/flatbread60/config.h8
-rw-r--r--keyboards/delikeeb/flatbread60/info.json8
-rw-r--r--keyboards/delikeeb/vaguettelite/config.h8
-rw-r--r--keyboards/delikeeb/vaguettelite/info.json8
-rw-r--r--keyboards/delikeeb/vaguettelite/keymaps/noclew/keymap.c2
-rw-r--r--keyboards/delikeeb/vanana/config.h4
-rw-r--r--keyboards/delikeeb/vanana/info.json6
-rw-r--r--keyboards/delikeeb/vanana/rev1/config.h5
-rw-r--r--keyboards/delikeeb/vanana/rev1/info.json6
-rw-r--r--keyboards/delikeeb/vanana/rev2/config.h5
-rw-r--r--keyboards/delikeeb/vanana/rev2/info.json6
-rw-r--r--keyboards/delikeeb/vaneela/config.h8
-rw-r--r--keyboards/delikeeb/vaneela/info.json6
-rw-r--r--keyboards/delikeeb/vaneela/keymaps/default/keymap.c2
-rw-r--r--keyboards/delikeeb/vaneela/keymaps/via/keymap.c2
-rw-r--r--keyboards/delikeeb/vaneelaex/config.h8
-rw-r--r--keyboards/delikeeb/vaneelaex/info.json6
-rw-r--r--keyboards/delikeeb/waaffle/config.h4
-rw-r--r--keyboards/delikeeb/waaffle/rev3/config.h5
-rw-r--r--keyboards/delikeeb/waaffle/rev3/info.json8
-rw-r--r--keyboards/deltapad/config.h8
-rw-r--r--keyboards/deltapad/info.json6
-rw-r--r--keyboards/deltasplit75/info.json12
-rw-r--r--keyboards/deltasplit75/keymaps/itsaferbie/keymap.c2
-rw-r--r--keyboards/deltasplit75/keymaps/mbsurfer/keymap.c2
-rw-r--r--keyboards/deltasplit75/keymaps/protosplit/keymap.c2
-rw-r--r--keyboards/deltasplit75/v2/config.h7
-rw-r--r--keyboards/deltasplit75/v2/info.json18
-rwxr-xr-xkeyboards/demiurge/config.h8
-rw-r--r--keyboards/demiurge/info.json6
-rw-r--r--keyboards/demiurge/readme.md2
-rw-r--r--keyboards/deng/djam/config.h28
-rw-r--r--keyboards/deng/djam/djam.c16
-rw-r--r--keyboards/deng/djam/djam.h28
-rw-r--r--keyboards/deng/djam/info.json38
-rw-r--r--keyboards/deng/djam/keymaps/default/keymap.c23
-rw-r--r--keyboards/deng/djam/keymaps/via/keymap.c38
-rw-r--r--keyboards/deng/djam/keymaps/via/rules.mk1
-rw-r--r--keyboards/deng/djam/readme.md23
-rw-r--r--keyboards/deng/djam/rules.mk19
-rw-r--r--keyboards/dichotomy/config.h8
-rw-r--r--keyboards/dichotomy/info.json6
-rwxr-xr-xkeyboards/dichotomy/keymaps/default/keymap.c4
-rw-r--r--keyboards/dinofizz/fnrow/v1/config.h6
-rw-r--r--keyboards/dinofizz/fnrow/v1/info.json6
-rw-r--r--keyboards/dk60/config.h8
-rw-r--r--keyboards/dk60/info.json6
-rw-r--r--keyboards/dm9records/ergoinu/config.h8
-rw-r--r--keyboards/dm9records/ergoinu/info.json6
-rw-r--r--keyboards/dm9records/lain/config.h7
-rw-r--r--keyboards/dm9records/lain/info.json6
-rw-r--r--keyboards/dm9records/lain/readme.md2
-rw-r--r--keyboards/dm9records/plaid/config.h9
-rw-r--r--keyboards/dm9records/plaid/info.json8
-rw-r--r--keyboards/dm9records/plaid/keymaps/brickbots/keymap.c2
-rw-r--r--keyboards/dm9records/plaid/keymaps/default/keymap.c2
-rw-r--r--keyboards/dm9records/plaid/keymaps/gipsy-king/keymap.c2
-rw-r--r--keyboards/dm9records/plaid/keymaps/stephen-huan/keymap.c2
-rw-r--r--keyboards/dm9records/plaid/keymaps/thehalfdeafchef/keymap.c6
-rw-r--r--keyboards/dm9records/tartan/config.h9
-rw-r--r--keyboards/dm9records/tartan/info.json8
-rw-r--r--keyboards/dmqdesign/spin/config.h8
-rw-r--r--keyboards/dmqdesign/spin/info.json6
-rw-r--r--keyboards/dmqdesign/spin/keymaps/spidey3_pad/config.h2
-rw-r--r--keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c82
-rw-r--r--keyboards/dmqdesign/spin/keymaps/spidey3_pad/rules.mk6
-rw-r--r--keyboards/do60/config.h8
-rw-r--r--keyboards/do60/info.json8
-rw-r--r--keyboards/do60/keymaps/crd/keymap.c2
-rw-r--r--keyboards/do60/keymaps/test/keymap.c2
-rw-r--r--keyboards/doio/kb16/config.h88
-rw-r--r--keyboards/doio/kb16/info.json48
-rw-r--r--keyboards/doio/kb16/kb16.c66
-rw-r--r--keyboards/doio/kb16/kb16.h47
-rw-r--r--keyboards/doio/kb16/keymaps/bongocat/config.h45
-rw-r--r--keyboards/doio/kb16/keymaps/bongocat/keymap.c180
-rw-r--r--keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.c378
-rw-r--r--keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.h17
-rw-r--r--keyboards/doio/kb16/keymaps/bongocat/rules.mk9
-rw-r--r--keyboards/doio/kb16/keymaps/default/keymap.c140
-rw-r--r--keyboards/doio/kb16/keymaps/default/rules.mk2
-rw-r--r--keyboards/doio/kb16/keymaps/via/keymap.c172
-rw-r--r--keyboards/doio/kb16/keymaps/via/rules.mk1
-rw-r--r--keyboards/doio/kb16/lib/glcdfont.c249
-rw-r--r--keyboards/doio/kb16/lib/layer_status/layer_status.c167
-rw-r--r--keyboards/doio/kb16/lib/layer_status/layer_status.h18
-rw-r--r--keyboards/doio/kb16/lib/logo.c61
-rw-r--r--keyboards/doio/kb16/lib/logo.h18
-rw-r--r--keyboards/doio/kb16/readme.md26
-rw-r--r--keyboards/doio/kb16/rules.mk36
-rw-r--r--keyboards/donutcables/budget96/config.h7
-rw-r--r--keyboards/donutcables/budget96/info.json8
-rw-r--r--keyboards/donutcables/budget96/keymaps/donut/keymap.c2
-rw-r--r--keyboards/donutcables/scrabblepad/config.h8
-rw-r--r--keyboards/donutcables/scrabblepad/info.json8
-rw-r--r--keyboards/donutcables/scrabblepad/keymaps/random/keymap.c2
-rw-r--r--keyboards/doodboard/duckboard/config.h8
-rw-r--r--keyboards/doodboard/duckboard/info.json6
-rw-r--r--keyboards/doodboard/duckboard_r2/config.h8
-rw-r--r--keyboards/doodboard/duckboard_r2/info.json6
-rw-r--r--keyboards/doppelganger/config.h8
-rw-r--r--keyboards/doppelganger/doppelganger.c36
-rw-r--r--keyboards/doppelganger/info.json6
-rw-r--r--keyboards/doro67/multi/config.h7
-rw-r--r--keyboards/doro67/multi/info.json8
-rw-r--r--keyboards/doro67/regular/config.h7
-rw-r--r--keyboards/doro67/regular/info.json7
-rw-r--r--keyboards/doro67/rgb/config.h8
-rw-r--r--keyboards/doro67/rgb/info.json8
-rw-r--r--keyboards/dp60/config.h8
-rw-r--r--keyboards/dp60/info.json8
-rw-r--r--keyboards/dp60/keymaps/allleds/keymap.c2
-rw-r--r--keyboards/dp60/keymaps/indicator/keymap.c2
-rw-r--r--keyboards/draculad/config.h7
-rw-r--r--keyboards/draculad/info.json6
-rw-r--r--keyboards/draculad/keymaps/manna-harbour_miryoku/config.h22
-rw-r--r--keyboards/draculad/keymaps/manna-harbour_miryoku/keymap.c4
-rw-r--r--keyboards/draculad/keymaps/pimoroni/keymap.c4
-rw-r--r--keyboards/draytronics/daisy/config.h7
-rw-r--r--keyboards/draytronics/daisy/info.json8
-rw-r--r--keyboards/draytronics/elise/config.h8
-rw-r--r--keyboards/draytronics/elise/info.json8
-rw-r--r--keyboards/draytronics/elise/keymaps/blake_iso/keymap.c4
-rw-r--r--keyboards/draytronics/elise_v2/config.h8
-rw-r--r--keyboards/draytronics/elise_v2/info.json8
-rw-r--r--keyboards/draytronics/elise_v2/keymaps/blake_iso/keymap.c4
-rw-r--r--keyboards/draytronics/scarlet/config.h6
-rw-r--r--keyboards/draytronics/scarlet/info.json8
-rw-r--r--keyboards/drewkeys/iskar/config.h8
-rw-r--r--keyboards/drewkeys/iskar/info.json6
-rw-r--r--keyboards/drhigsby/bkf/config.h8
-rw-r--r--keyboards/drhigsby/bkf/info.json6
-rw-r--r--keyboards/drhigsby/dubba175/config.h8
-rw-r--r--keyboards/drhigsby/dubba175/info.json8
-rw-r--r--keyboards/drhigsby/ogurec/config.h8
-rw-r--r--keyboards/drhigsby/ogurec/info.json6
-rw-r--r--keyboards/drhigsby/packrat/config.h8
-rw-r--r--keyboards/drhigsby/packrat/info.json6
-rw-r--r--keyboards/drhigsby/packrat/readme.md2
-rw-r--r--keyboards/drop/sense75/board.h8
-rw-r--r--keyboards/drop/sense75/config.h67
-rw-r--r--keyboards/drop/sense75/halconf.h7
-rw-r--r--keyboards/drop/sense75/info.json235
-rw-r--r--keyboards/drop/sense75/keymaps/default/keymap.c52
-rw-r--r--keyboards/drop/sense75/keymaps/default/rules.mk1
-rw-r--r--keyboards/drop/sense75/keymaps/default_md/keymap.c136
-rw-r--r--keyboards/drop/sense75/keymaps/default_md/readme.md1
-rw-r--r--keyboards/drop/sense75/keymaps/default_md/rules.mk1
-rw-r--r--keyboards/drop/sense75/keymaps/via/config.h5
-rw-r--r--keyboards/drop/sense75/keymaps/via/keymap.c79
-rw-r--r--keyboards/drop/sense75/keymaps/via/rules.mk2
-rw-r--r--keyboards/drop/sense75/mcuconf.h14
-rw-r--r--keyboards/drop/sense75/readme.md24
-rw-r--r--keyboards/drop/sense75/rules.mk2
-rw-r--r--keyboards/drop/sense75/sense75.c148
-rw-r--r--keyboards/dtisaac/cg108/config.h8
-rw-r--r--keyboards/dtisaac/cg108/info.json8
-rw-r--r--keyboards/dtisaac/cg108/readme.md2
-rw-r--r--keyboards/dtisaac/dosa40rgb/config.h8
-rw-r--r--keyboards/dtisaac/dosa40rgb/info.json8
-rw-r--r--keyboards/dtisaac/dosa40rgb/readme.md2
-rw-r--r--keyboards/dtisaac/dtisaac01/config.h8
-rw-r--r--keyboards/dtisaac/dtisaac01/info.json6
-rw-r--r--keyboards/duck/eagle_viper/v2/config.h7
-rw-r--r--keyboards/duck/eagle_viper/v2/info.json6
-rw-r--r--keyboards/duck/eagle_viper/v2/keymaps/profanum429/keymap.c2
-rw-r--r--keyboards/duck/jetfire/config.h7
-rw-r--r--keyboards/duck/jetfire/info.json6
-rw-r--r--keyboards/duck/lightsaver/config.h7
-rw-r--r--keyboards/duck/lightsaver/info.json8
-rw-r--r--keyboards/duck/lightsaver/keymaps/rasmus/keymap.c6
-rw-r--r--keyboards/duck/octagon/v1/config.h7
-rw-r--r--keyboards/duck/octagon/v1/info.json6
-rw-r--r--keyboards/duck/octagon/v2/config.h7
-rw-r--r--keyboards/duck/octagon/v2/info.json6
-rw-r--r--keyboards/duck/orion/info.json10
-rw-r--r--keyboards/duck/orion/v3/config.h7
-rw-r--r--keyboards/duck/orion/v3/info.json16
-rw-r--r--keyboards/duck/tcv3/config.h7
-rw-r--r--keyboards/duck/tcv3/info.json8
-rw-r--r--keyboards/ducky/one2mini/1861st/config.h8
-rw-r--r--keyboards/ducky/one2mini/1861st/info.json8
-rw-r--r--keyboards/ducky/one2sf/1967st/1967st.h42
-rw-r--r--keyboards/ducky/one2sf/1967st/boards/NUC123SD4AN0/board.c57
-rw-r--r--keyboards/ducky/one2sf/1967st/boards/NUC123SD4AN0/board.h961
-rw-r--r--keyboards/ducky/one2sf/1967st/boards/NUC123SD4AN0/board.mk5
-rw-r--r--keyboards/ducky/one2sf/1967st/chconf.h23
-rw-r--r--keyboards/ducky/one2sf/1967st/config.h48
-rw-r--r--keyboards/ducky/one2sf/1967st/info.json89
-rw-r--r--keyboards/ducky/one2sf/1967st/mcuconf.h51
-rw-r--r--keyboards/ducky/one2sf/1967st/readme.md32
-rw-r--r--keyboards/ducky/one2sf/1967st/rules.mk34
-rw-r--r--keyboards/ducky/one2sf/keymaps/default/config.h25
-rw-r--r--keyboards/ducky/one2sf/keymaps/default/keymap.c55
-rw-r--r--keyboards/ducky/one2sf/keymaps/default/readme.md1
-rw-r--r--keyboards/ducky/one2sf/readme.md8
-rw-r--r--keyboards/ducky/one2sf/rules.mk1
-rw-r--r--keyboards/dumbo/config.h8
-rw-r--r--keyboards/dumbo/info.json6
-rw-r--r--keyboards/dumbo/keymaps/trip-trap/keymap.c4
-rw-r--r--keyboards/dumbpad/config.h6
-rw-r--r--keyboards/dumbpad/info.json10
-rw-r--r--keyboards/dumbpad/v0x/config.h4
-rw-r--r--keyboards/dumbpad/v0x/info.json6
-rw-r--r--keyboards/dumbpad/v0x_dualencoder/config.h3
-rw-r--r--keyboards/dumbpad/v0x_dualencoder/info.json6
-rw-r--r--keyboards/dumbpad/v0x_right/config.h4
-rw-r--r--keyboards/dumbpad/v0x_right/info.json6
-rw-r--r--keyboards/dumbpad/v1x/config.h4
-rw-r--r--keyboards/dumbpad/v1x/info.json6
-rw-r--r--keyboards/dumbpad/v1x_dualencoder/config.h4
-rw-r--r--keyboards/dumbpad/v1x_dualencoder/info.json6
-rw-r--r--keyboards/dumbpad/v1x_oled/config.h37
-rw-r--r--keyboards/dumbpad/v1x_oled/info.json15
-rw-r--r--keyboards/dumbpad/v1x_oled/keymaps/default/keymap.c69
-rw-r--r--keyboards/dumbpad/v1x_oled/keymaps/via/keymap.c69
-rw-r--r--keyboards/dumbpad/v1x_oled/keymaps/via/rules.mk (renamed from keyboards/mechwild/mokulua/keymaps/via/rules.mk)0
-rw-r--r--keyboards/dumbpad/v1x_oled/rules.mk23
-rw-r--r--keyboards/dumbpad/v1x_oled/v1x_oled.c155
-rw-r--r--keyboards/dumbpad/v1x_oled/v1x_oled.h30
-rw-r--r--keyboards/dumbpad/v1x_right/config.h4
-rw-r--r--keyboards/dumbpad/v1x_right/info.json6
-rw-r--r--keyboards/durgod/dgk6x/config.h4
-rw-r--r--keyboards/durgod/dgk6x/galaxy/config.h5
-rw-r--r--keyboards/durgod/dgk6x/galaxy/info.json8
-rw-r--r--keyboards/durgod/dgk6x/hades/config.h5
-rw-r--r--keyboards/durgod/dgk6x/hades/info.json8
-rw-r--r--keyboards/durgod/dgk6x/venus/config.h5
-rw-r--r--keyboards/durgod/dgk6x/venus/info.json8
-rw-r--r--keyboards/durgod/k3x0/config.h4
-rw-r--r--keyboards/durgod/k3x0/k310/base/config.h4
-rw-r--r--keyboards/durgod/k3x0/k310/config.h8
-rw-r--r--keyboards/durgod/k3x0/k310/info.json8
-rw-r--r--keyboards/durgod/k3x0/k320/base/config.h4
-rw-r--r--keyboards/durgod/k3x0/k320/config.h8
-rw-r--r--keyboards/durgod/k3x0/k320/info.json8
-rw-r--r--keyboards/durgod/k3x0/keymaps/chimera/keymap.c6
-rw-r--r--keyboards/durgod/k3x0/keymaps/typhon/keymap.c6
-rw-r--r--keyboards/dyz/dyz40/config.h4
-rw-r--r--keyboards/dyz/dyz40/info.json1
-rw-r--r--keyboards/dyz/dyz40/readme.md2
-rw-r--r--keyboards/dyz/dyz60/config.h4
-rw-r--r--keyboards/dyz/dyz60/info.json1
-rw-r--r--keyboards/dyz/dyz60_hs/config.h30
-rw-r--r--keyboards/dyz/dyz60_hs/dyz60_hs.c16
-rw-r--r--keyboards/dyz/dyz60_hs/dyz60_hs.h120
-rw-r--r--keyboards/dyz/dyz60_hs/info.json457
-rw-r--r--keyboards/dyz/dyz60_hs/keymaps/default/keymap.c46
-rw-r--r--keyboards/dyz/dyz60_hs/keymaps/via/keymap.c46
-rw-r--r--keyboards/dyz/dyz60_hs/keymaps/via/rules.mk1
-rw-r--r--keyboards/dyz/dyz60_hs/readme.md29
-rw-r--r--keyboards/dyz/dyz60_hs/rules.mk19
-rw-r--r--keyboards/dyz/dyz_tkl/config.h4
-rw-r--r--keyboards/dyz/dyz_tkl/info.json1
-rw-r--r--keyboards/dyz/dyz_tkl/readme.md2
-rw-r--r--keyboards/dyz/selka40/config.h4
-rw-r--r--keyboards/dyz/selka40/info.json1
-rw-r--r--keyboards/dyz/selka40/readme.md2
-rw-r--r--keyboards/dyz/synthesis60/config.h4
-rw-r--r--keyboards/dyz/synthesis60/info.json3
-rw-r--r--keyboards/dz60/config.h8
-rw-r--r--keyboards/dz60/info.json6
-rw-r--r--keyboards/dz60/keymaps/60_ansi/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/60_ansi_arrow_fkeys/README.md2
-rw-r--r--keyboards/dz60/keymaps/60_ansi_arrow_fkeys/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/60_plus_arrows/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/60_tsangan/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/Ansi_plus_fn_arrows/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/LEdiodes/config.h1
-rw-r--r--keyboards/dz60/keymaps/LEdiodes/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/_bonfire/keymap-parts/layers.c4
-rw-r--r--keyboards/dz60/keymaps/atlacat/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/billiams/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/billiams_layout2/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/billiams_layout4/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/bingocaller/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/boris_burger/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/calbatr0ss/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/chrisae9/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/coppertop/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/crd_2u_lshift/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/crd_ansi/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/crd_tsangan/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/danbee/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/doogle999/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/edulpn/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/eric/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/f3d3/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/frogger/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/gk64/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/hailbreno/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/iso_de_andys8/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/iso_de_arrow_0x544d/keymap.c6
-rw-r--r--keyboards/dz60/keymaps/iso_de_root/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/iso_split-spacebar/keymap.c30
-rw-r--r--keyboards/dz60/keymaps/iso_uk/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/iso_vim_arrow/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/iso_vim_arrow_split_rs/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/itsaferbie/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/jarred/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/jkbone/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/joooosh_hhkb/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/kifinnsson/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/krusli/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/lint_kid/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/macos_64/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/macos_arrow/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/marianas/customLogic.c2
-rw-r--r--keyboards/dz60/keymaps/marianas/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/mechmerlin/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/model42/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/mpstewart/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/muralisc/keymap.c72
-rw-r--r--keyboards/dz60/keymaps/muzfuz/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/n0velty/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/niclake/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/olivierko/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/olligranlund_iso/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/olligranlund_iso_v2/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/ottodokto/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/pevecyan/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/pok3r/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/split_space_arrows/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/spotpuff/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/stephengrier/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/tailcall/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/thomasviaud/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/twschum_b_4_10/keymap.c2
-rw-r--r--keyboards/dz60/keymaps/weeheavy/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/weeheavy_2.25_lshift/keymap.c4
-rw-r--r--keyboards/dz60/keymaps/xtonhasvim/keymap.c6
-rw-r--r--keyboards/dz60/keymaps/zepol_layout/keymap.c2
-rw-r--r--keyboards/dztech/bocc/config.h8
-rw-r--r--keyboards/dztech/bocc/info.json6
-rw-r--r--keyboards/dztech/duo_s/config.h8
-rw-r--r--keyboards/dztech/duo_s/info.json8
-rw-r--r--keyboards/dztech/duo_s/readme.md2
-rw-r--r--keyboards/dztech/dz60rgb/info.json4
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/didel/keymap.c4
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h2
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/kgreulich/keymap.c4
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h2
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/matthewrobo/keymap.c2
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/mechmaster48/keymap.c8
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/mekanist/keymap.c8
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c4
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/perseid/keymap.c6
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c2
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/xunz/config.h2
-rw-r--r--keyboards/dztech/dz60rgb/keymaps/xunz/keymap.c4
-rw-r--r--keyboards/dztech/dz60rgb/v1/config.h8
-rw-r--r--keyboards/dztech/dz60rgb/v1/info.json6
-rw-r--r--keyboards/dztech/dz60rgb/v2/config.h8
-rw-r--r--keyboards/dztech/dz60rgb/v2/info.json6
-rw-r--r--keyboards/dztech/dz60rgb/v2_1/config.h8
-rw-r--r--keyboards/dztech/dz60rgb/v2_1/info.json6
-rw-r--r--keyboards/dztech/dz60rgb_ansi/info.json6
-rw-r--r--keyboards/dztech/dz60rgb_ansi/keymaps/badger/keymap.c4
-rw-r--r--keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/keymap.c4
-rw-r--r--keyboards/dztech/dz60rgb_ansi/keymaps/kuru/keymap.c100
-rw-r--r--keyboards/dztech/dz60rgb_ansi/keymaps/muralisc/keymap.c168
-rw-r--r--keyboards/dztech/dz60rgb_ansi/keymaps/muralisc/readme.md26
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v1/config.h8
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v1/info.json6
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v2/config.h8
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v2/info.json6
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v2_1/config.h8
-rw-r--r--keyboards/dztech/dz60rgb_ansi/v2_1/info.json6
-rw-r--r--keyboards/dztech/dz60rgb_wkl/info.json6
-rw-r--r--keyboards/dztech/dz60rgb_wkl/keymaps/hhkb/keymap.c2
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v1/config.h8
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v1/info.json6
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v2/config.h8
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v2/info.json6
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v2_1/config.h8
-rw-r--r--keyboards/dztech/dz60rgb_wkl/v2_1/info.json6
-rw-r--r--keyboards/dztech/dz64rgb/config.h7
-rw-r--r--keyboards/dztech/dz64rgb/info.json6
-rw-r--r--keyboards/dztech/dz64rgb/readme.md2
-rw-r--r--keyboards/dztech/dz65rgb/info.json6
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/adi/keymap.c2
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/catrielmuller/keymap.c6
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/chocol8/keymap.c2
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/drootz/keymap.c156
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/jumper149/keymap.c2
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h2
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/matthewrobo/keymap.c2
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/pagondel/keymap.c2
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/sbennett13/config.h43
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/sbennett13/keymap.c20
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/sbennett13/readme.md50
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/sbennett13/rules.mk23
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/yuannan/config.h41
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/yuannan/keymap.c210
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/yuannan/readme.md88
-rw-r--r--keyboards/dztech/dz65rgb/keymaps/yuannan/rules.mk5
-rw-r--r--keyboards/dztech/dz65rgb/v1/config.h7
-rw-r--r--keyboards/dztech/dz65rgb/v1/info.json6
-rw-r--r--keyboards/dztech/dz65rgb/v2/config.h7
-rw-r--r--keyboards/dztech/dz65rgb/v2/info.json6
-rwxr-xr-xkeyboards/dztech/dz65rgb/v3/config.h8
-rw-r--r--keyboards/dztech/dz65rgb/v3/info.json6
-rw-r--r--keyboards/dztech/dz96/config.h8
-rw-r--r--keyboards/dztech/dz96/info.json6
-rw-r--r--keyboards/dztech/endless80/config.h5
-rw-r--r--keyboards/dztech/endless80/info.json6
-rw-r--r--keyboards/dztech/endless80/readme.md2
-rw-r--r--keyboards/e88/config.h8
-rw-r--r--keyboards/e88/info.json6
-rw-r--r--keyboards/ealdin/quadrant/config.h7
-rw-r--r--keyboards/ealdin/quadrant/info.json6
-rw-r--r--keyboards/earth_rover/config.h8
-rw-r--r--keyboards/earth_rover/info.json6
-rw-r--r--keyboards/eason/capsule65/config.h7
-rw-r--r--keyboards/eason/capsule65/info.json8
-rw-r--r--keyboards/eason/capsule65/readme.md2
-rw-r--r--keyboards/ebastler/e80_1800/config.h8
-rw-r--r--keyboards/ebastler/e80_1800/info.json6
-rw-r--r--keyboards/ebastler/isometria_75/rev1/config.h8
-rw-r--r--keyboards/ebastler/isometria_75/rev1/info.json8
-rw-r--r--keyboards/eco/config.h6
-rw-r--r--keyboards/eco/info.json7
-rw-r--r--keyboards/eco/keymaps/bcat/keymap.c2
-rw-r--r--keyboards/eco/keymaps/that_canadian/keymap.c2
-rw-r--r--keyboards/eco/keymaps/xyverz/keymap.c2
-rw-r--r--keyboards/eco/rev1/config.h3
-rw-r--r--keyboards/eco/rev1/info.json5
-rw-r--r--keyboards/eco/rev2/config.h3
-rw-r--r--keyboards/eco/rev2/info.json5
-rw-r--r--keyboards/edc40/config.h8
-rw-r--r--keyboards/edc40/info.json6
-rw-r--r--keyboards/edda/config.h7
-rw-r--r--keyboards/edda/info.json6
-rw-r--r--keyboards/edi/hardlight/mk1/config.h8
-rw-r--r--keyboards/edi/hardlight/mk1/info.json9
-rw-r--r--keyboards/edi/hardlight/mk2/config.h7
-rw-r--r--keyboards/edi/hardlight/mk2/info.json9
-rw-r--r--keyboards/edi/hardlight/mk2/keymaps/kate/keymap.c2
-rw-r--r--keyboards/edi/standaside/config.h8
-rw-r--r--keyboards/edi/standaside/info.json6
-rw-r--r--keyboards/eek/config.h8
-rw-r--r--keyboards/eek/info.json6
-rw-r--r--keyboards/eek/keymaps/ledtest/keymap.c2
-rw-r--r--keyboards/efreet/config.h8
-rw-r--r--keyboards/efreet/info.json8
-rw-r--r--keyboards/ein_60/config.h7
-rw-r--r--keyboards/ein_60/info.json6
-rw-r--r--keyboards/ein_60/keymaps/ledtest/keymap.c4
-rw-r--r--keyboards/ekow/akira/config.h7
-rw-r--r--keyboards/ekow/akira/info.json8
-rw-r--r--keyboards/ekow/akira/readme.md2
-rw-r--r--keyboards/elephant42/config.h85
-rw-r--r--keyboards/elephant42/elephant42.c66
-rw-r--r--keyboards/elephant42/elephant42.h35
-rw-r--r--keyboards/elephant42/info.json66
-rw-r--r--keyboards/elephant42/keymaps/default/keymap.c114
-rw-r--r--keyboards/elephant42/keymaps/default/readme.md1
-rw-r--r--keyboards/elephant42/keymaps/via/keymap.c127
-rw-r--r--keyboards/elephant42/keymaps/via/readme.md1
-rw-r--r--keyboards/elephant42/keymaps/via/rules.mk3
-rwxr-xr-xkeyboards/elephant42/lib/glcdfont.c233
-rw-r--r--keyboards/elephant42/readme.md27
-rw-r--r--keyboards/elephant42/rules.mk23
-rw-r--r--keyboards/emajesty/eiri/config.h8
-rw-r--r--keyboards/emajesty/eiri/info.json6
-rw-r--r--keyboards/emery65/config.h9
-rw-r--r--keyboards/emery65/info.json6
-rw-r--r--keyboards/emi20/config.h8
-rw-r--r--keyboards/emi20/info.json6
-rw-r--r--keyboards/emptystring/NQG/config.h7
-rw-r--r--keyboards/emptystring/NQG/info.json8
-rw-r--r--keyboards/eniigmakeyboards/ek60/config.h8
-rw-r--r--keyboards/eniigmakeyboards/ek60/info.json8
-rw-r--r--keyboards/eniigmakeyboards/ek65/config.h8
-rw-r--r--keyboards/eniigmakeyboards/ek65/info.json8
-rw-r--r--keyboards/eniigmakeyboards/ek87/config.h8
-rw-r--r--keyboards/eniigmakeyboards/ek87/info.json8
-rw-r--r--keyboards/ep/40/config.h7
-rw-r--r--keyboards/ep/40/info.json6
-rw-r--r--keyboards/ep/96/config.h8
-rw-r--r--keyboards/ep/96/info.json6
-rw-r--r--keyboards/ep/comsn/hs68/config.h8
-rw-r--r--keyboards/ep/comsn/hs68/info.json6
-rw-r--r--keyboards/ep/comsn/mollydooker/config.h8
-rw-r--r--keyboards/ep/comsn/mollydooker/info.json6
-rw-r--r--keyboards/ep/comsn/tf_longeboye/config.h8
-rw-r--r--keyboards/ep/comsn/tf_longeboye/info.json8
-rw-r--r--keyboards/epoch80/config.h8
-rw-r--r--keyboards/epoch80/info.json6
-rw-r--r--keyboards/ergodox_ez/base/info.json6
-rw-r--r--keyboards/ergodox_ez/base/rules.mk0
-rw-r--r--keyboards/ergodox_ez/config.h7
-rw-r--r--keyboards/ergodox_ez/glow/config.h26
-rw-r--r--keyboards/ergodox_ez/glow/info.json6
-rw-r--r--keyboards/ergodox_ez/info.json6
-rwxr-xr-xkeyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/blakedietz/keymap.c3
-rw-r--r--keyboards/ergodox_ez/keymaps/bpruitt-goddard/keymap.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/danielo515/keymap.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/default_osx/keymap.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c6
-rw-r--r--keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h2
-rw-r--r--keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dance_actions.c38
-rw-r--r--keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/heartrobotninja/keymap.c4
-rw-r--r--keyboards/ergodox_ez/keymaps/ifohancroft/config.h8
-rw-r--r--keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c172
-rw-r--r--keyboards/ergodox_ez/keymaps/ifohancroft/readme.md16
-rw-r--r--keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk3
-rw-r--r--keyboards/ergodox_ez/keymaps/kou/keymap.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/lukaus/keymap.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/matrixman/keymap.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/nathanvercaemert/keymap.c3
-rw-r--r--keyboards/ergodox_ez/keymaps/nfriend/keymap.c4
-rw-r--r--keyboards/ergodox_ez/keymaps/profet_80/keymap.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/pvinis/keymap.c6
-rw-r--r--keyboards/ergodox_ez/keymaps/rgb_layer/config.h6
-rw-r--r--keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c5
-rw-r--r--keyboards/ergodox_ez/keymaps/rishka/keymap.c4
-rw-r--r--keyboards/ergodox_ez/keymaps/rmw/config.h1
-rw-r--r--keyboards/ergodox_ez/keymaps/skug/keymap.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/smurmann/keymap.c10
-rw-r--r--keyboards/ergodox_ez/keymaps/stamm/keymap.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/steno/keymap.c6
-rw-r--r--keyboards/ergodox_ez/keymaps/testing/keymap.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/toshi0383/keymap.c2
-rw-r--r--keyboards/ergodox_ez/keymaps/vim/keymap.c2
-rw-r--r--keyboards/ergodox_ez/rules.mk2
-rw-r--r--keyboards/ergodox_ez/shine/config.h26
-rw-r--r--keyboards/ergodox_ez/shine/info.json6
-rwxr-xr-xkeyboards/ergodox_ez/util/compile_keymap.py110
-rw-r--r--keyboards/ergodox_stm32/config.h6
-rw-r--r--keyboards/ergodox_stm32/info.json6
-rw-r--r--keyboards/ergoslab/info.json63
-rw-r--r--keyboards/ergoslab/keymaps/default/keymap.c2
-rw-r--r--keyboards/ergoslab/rev1/config.h7
-rw-r--r--keyboards/ergoslab/rev1/info.json69
-rw-r--r--keyboards/ergotravel/info.json13
-rw-r--r--keyboards/ergotravel/keymaps/default/keymap.c14
-rw-r--r--keyboards/ergotravel/keymaps/ian/keymap.c2
-rw-r--r--keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/ergotravel/keymaps/yanfali/keymap.c2
-rw-r--r--keyboards/ergotravel/rev1/config.h7
-rw-r--r--keyboards/ergotravel/rev1/info.json18
-rw-r--r--keyboards/ericrlau/numdiscipline/info.json19
-rw-r--r--keyboards/ericrlau/numdiscipline/rev1/config.h8
-rw-r--r--keyboards/ericrlau/numdiscipline/rev1/info.json25
-rw-r--r--keyboards/esca/getawayvan/config.h8
-rw-r--r--keyboards/esca/getawayvan/info.json6
-rw-r--r--keyboards/esca/getawayvan/keymaps/7u/keymap.c2
-rw-r--r--keyboards/esca/getawayvan_f042/config.h7
-rw-r--r--keyboards/esca/getawayvan_f042/info.json6
-rw-r--r--keyboards/esca/getawayvan_f042/keymaps/7u/keymap.c2
-rw-r--r--keyboards/eternal_keypad/config.h13
-rw-r--r--keyboards/eternal_keypad/info.json6
-rw-r--r--keyboards/eternal_keypad/keymaps/default/keymap.c28
-rw-r--r--keyboards/eternal_keypad/keymaps/kyek/config.h2
-rw-r--r--keyboards/eternal_keypad/keymaps/kyek/keymap.c10
-rw-r--r--keyboards/eternal_keypad/keymaps/lefty/keymap.c30
-rw-r--r--keyboards/eternal_keypad/readme.md2
-rw-r--r--keyboards/eternal_keypad/rules.mk2
-rw-r--r--keyboards/eu_isolation/config.h8
-rw-r--r--keyboards/eu_isolation/eu_isolation.h12
-rw-r--r--keyboards/eu_isolation/info.json41
-rw-r--r--keyboards/eu_isolation/readme.md2
-rw-r--r--keyboards/evancookaudio/sleepingdinosaur/config.h8
-rw-r--r--keyboards/evancookaudio/sleepingdinosaur/info.json8
-rw-r--r--keyboards/evancookaudio/tenpad/config.h8
-rw-r--r--keyboards/evancookaudio/tenpad/info.json8
-rw-r--r--keyboards/eve/meteor/config.h7
-rw-r--r--keyboards/eve/meteor/info.json8
-rw-r--r--keyboards/evil80/config.h8
-rw-r--r--keyboards/evil80/info.json6
-rw-r--r--keyboards/evolv/config.h7
-rw-r--r--keyboards/evolv/info.json6
-rw-r--r--keyboards/evyd13/atom47/keymaps/LEdiodes/keymap.c4
-rw-r--r--keyboards/evyd13/atom47/keymaps/evyd13/keymap.c2
-rw-r--r--keyboards/evyd13/atom47/keymaps/junonum_a47/keymap.c2
-rw-r--r--keyboards/evyd13/atom47/rev2/config.h8
-rw-r--r--keyboards/evyd13/atom47/rev2/info.json6
-rw-r--r--keyboards/evyd13/atom47/rev3/config.h8
-rw-r--r--keyboards/evyd13/atom47/rev3/info.json6
-rw-r--r--keyboards/evyd13/atom47/rev4/config.h8
-rw-r--r--keyboards/evyd13/atom47/rev4/info.json6
-rw-r--r--keyboards/evyd13/atom47/rev5/config.h8
-rw-r--r--keyboards/evyd13/atom47/rev5/info.json6
-rw-r--r--keyboards/evyd13/eon40/config.h8
-rw-r--r--keyboards/evyd13/eon40/info.json6
-rw-r--r--keyboards/evyd13/eon65/config.h8
-rw-r--r--keyboards/evyd13/eon65/info.json6
-rw-r--r--keyboards/evyd13/eon65/keymaps/mrsendyyk/keymap.c2
-rw-r--r--keyboards/evyd13/eon75/config.h8
-rw-r--r--keyboards/evyd13/eon75/info.json6
-rw-r--r--keyboards/evyd13/eon87/config.h8
-rw-r--r--keyboards/evyd13/eon87/info.json6
-rw-r--r--keyboards/evyd13/eon95/config.h8
-rw-r--r--keyboards/evyd13/eon95/info.json6
-rw-r--r--keyboards/evyd13/fin_pad/config.h20
-rw-r--r--keyboards/evyd13/fin_pad/info.json88
-rw-r--r--keyboards/evyd13/fin_pad/keymaps/default/keymap.c16
-rw-r--r--keyboards/evyd13/fin_pad/keymaps/via/keymap.c41
-rw-r--r--keyboards/evyd13/fin_pad/keymaps/via/rules.mk1
-rw-r--r--keyboards/evyd13/fin_pad/readme.md27
-rw-r--r--keyboards/evyd13/fin_pad/rules.mk1
-rw-r--r--keyboards/evyd13/gh80_1800/config.h8
-rw-r--r--keyboards/evyd13/gh80_1800/info.json6
-rw-r--r--keyboards/evyd13/gh80_3700/config.h8
-rw-r--r--keyboards/evyd13/gh80_3700/info.json6
-rw-r--r--keyboards/evyd13/gud70/config.h8
-rw-r--r--keyboards/evyd13/gud70/info.json6
-rw-r--r--keyboards/evyd13/gud70/keymaps/evyd13/keymap.c2
-rw-r--r--keyboards/evyd13/minitomic/config.h8
-rw-r--r--keyboards/evyd13/minitomic/info.json6
-rw-r--r--keyboards/evyd13/mx5160/config.h8
-rw-r--r--keyboards/evyd13/mx5160/info.json8
-rw-r--r--keyboards/evyd13/nt210/readme.md2
-rw-r--r--keyboards/evyd13/nt650/config.h22
-rw-r--r--keyboards/evyd13/nt650/info.json104
-rw-r--r--keyboards/evyd13/nt650/keymaps/default/keymap.c69
-rw-r--r--keyboards/evyd13/nt650/keymaps/via/config.h6
-rw-r--r--keyboards/evyd13/nt650/keymaps/via/keymap.c32
-rw-r--r--keyboards/evyd13/nt650/keymaps/via/rules.mk1
-rw-r--r--keyboards/evyd13/nt650/readme.md27
-rw-r--r--keyboards/evyd13/nt650/rules.mk1
-rw-r--r--keyboards/evyd13/nt660/config.h8
-rw-r--r--keyboards/evyd13/nt660/info.json6
-rw-r--r--keyboards/evyd13/nt660/keymaps/evyd13/keymap.c2
-rw-r--r--keyboards/evyd13/nt750/config.h8
-rw-r--r--keyboards/evyd13/nt750/info.json6
-rw-r--r--keyboards/evyd13/nt980/config.h8
-rw-r--r--keyboards/evyd13/nt980/info.json8
-rw-r--r--keyboards/evyd13/omrontkl/config.h8
-rw-r--r--keyboards/evyd13/omrontkl/info.json6
-rw-r--r--keyboards/evyd13/plain60/config.h7
-rw-r--r--keyboards/evyd13/plain60/info.json6
-rw-r--r--keyboards/evyd13/plain60/keymaps/audio/keymap.c2
-rw-r--r--keyboards/evyd13/plain60/keymaps/kwerdenker/keymap.c2
-rw-r--r--keyboards/evyd13/plain60/keymaps/rgb/keymap.c2
-rw-r--r--keyboards/evyd13/pockettype/config.h8
-rw-r--r--keyboards/evyd13/pockettype/info.json6
-rw-r--r--keyboards/evyd13/quackfire/config.h8
-rw-r--r--keyboards/evyd13/quackfire/info.json6
-rw-r--r--keyboards/evyd13/solheim68/config.h8
-rw-r--r--keyboards/evyd13/solheim68/info.json6
-rw-r--r--keyboards/evyd13/ta65/config.h8
-rw-r--r--keyboards/evyd13/ta65/info.json8
-rw-r--r--keyboards/evyd13/ta65/keymaps/evyd13/keymap.c2
-rw-r--r--keyboards/evyd13/wasdat/config.h1
-rw-r--r--keyboards/evyd13/wasdat_code/config.h8
-rw-r--r--keyboards/evyd13/wasdat_code/info.json6
-rw-r--r--keyboards/evyd13/wonderland/config.h8
-rw-r--r--keyboards/evyd13/wonderland/info.json6
-rw-r--r--keyboards/evyd13/wonderland/keymaps/keebs/keymap.c2
-rw-r--r--keyboards/evyd13/wonderland/keymaps/rafael-azevedo/keymap.c2
-rw-r--r--keyboards/evyd13/wonderland/keymaps/rys/keymap.c2
-rw-r--r--keyboards/exclusive/e65/config.h8
-rw-r--r--keyboards/exclusive/e65/info.json6
-rw-r--r--keyboards/exclusive/e65/keymaps/crd/keymap.c2
-rw-r--r--keyboards/exclusive/e65/keymaps/madhatter/keymap.c2
-rw-r--r--keyboards/exclusive/e65/keymaps/masterzen/keymap.c4
-rw-r--r--keyboards/exclusive/e6_rgb/config.h8
-rw-r--r--keyboards/exclusive/e6_rgb/info.json8
-rw-r--r--keyboards/exclusive/e6_rgb/keymaps/60_ansi_split_bs_rshift/keymap.c2
-rw-r--r--keyboards/exclusive/e6_rgb/keymaps/60_hhkb/keymap.c2
-rw-r--r--keyboards/exclusive/e6_rgb/keymaps/60_tsangan_hhkb/keymap.c2
-rw-r--r--keyboards/exclusive/e6_rgb/keymaps/allleds/keymap.c2
-rw-r--r--keyboards/exclusive/e6v2/le/config.h8
-rw-r--r--keyboards/exclusive/e6v2/le/info.json6
-rw-r--r--keyboards/exclusive/e6v2/le/keymaps/eric/keymap.c2
-rw-r--r--keyboards/exclusive/e6v2/le/keymaps/johu/keymap.c4
-rw-r--r--keyboards/exclusive/e6v2/le_bmc/config.h7
-rw-r--r--keyboards/exclusive/e6v2/le_bmc/info.json7
-rw-r--r--keyboards/exclusive/e6v2/oe/config.h8
-rw-r--r--keyboards/exclusive/e6v2/oe/info.json6
-rw-r--r--keyboards/exclusive/e6v2/oe/keymaps/amnesia0287/keymap.c2
-rw-r--r--keyboards/exclusive/e6v2/oe_bmc/config.h7
-rw-r--r--keyboards/exclusive/e6v2/oe_bmc/info.json7
-rw-r--r--keyboards/exclusive/e7v1/config.h8
-rw-r--r--keyboards/exclusive/e7v1/info.json6
-rw-r--r--keyboards/exclusive/e7v1/keymaps/ansi_splitbs/keymap.c2
-rw-r--r--keyboards/exclusive/e7v1/keymaps/masterzen/keymap.c4
-rw-r--r--keyboards/exclusive/e7v1se/config.h8
-rw-r--r--keyboards/exclusive/e7v1se/info.json8
-rw-r--r--keyboards/exclusive/e7v1se/keymaps/mac/keymap.c2
-rw-r--r--keyboards/exclusive/e85/config.h6
-rw-r--r--keyboards/exclusive/e85/hotswap/config.h18
-rw-r--r--keyboards/exclusive/e85/hotswap/info.json8
-rw-r--r--keyboards/exclusive/e85/hotswap/keymaps/standard/keymap.c2
-rw-r--r--keyboards/exclusive/e85/soldered/config.h18
-rw-r--r--keyboards/exclusive/e85/soldered/info.json8
-rw-r--r--keyboards/exclusive/e85/soldered/keymaps/standard/keymap.c2
-rw-r--r--keyboards/exent/config.h8
-rw-r--r--keyboards/exent/info.json6
-rw-r--r--keyboards/eyeohdesigns/babyv/config.h8
-rw-r--r--keyboards/eyeohdesigns/babyv/info.json6
-rw-r--r--keyboards/eyeohdesigns/babyv/keymaps/1u/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c4
-rw-r--r--keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/babyv/keymaps/melonbred/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/babyv/readme.md2
-rw-r--r--keyboards/eyeohdesigns/sprh/config.h7
-rw-r--r--keyboards/eyeohdesigns/sprh/info.json6
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/acs/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/ad5/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/ads/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/bc5/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/bcs/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/bd5/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/sprh/keymaps/bds/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/sprh/readme.md2
-rw-r--r--keyboards/eyeohdesigns/theboulevard/config.h8
-rw-r--r--keyboards/eyeohdesigns/theboulevard/info.json6
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/ortho2/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/ortho3/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/ortho4/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/ortho5/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/stagger1/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/stagger2/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/stagger3/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/stagger4/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/theboulevard/keymaps/stagger5/keymap.c2
-rw-r--r--keyboards/eyeohdesigns/theboulevard/readme.md2
-rw-r--r--keyboards/ez_maker/directpins/promicro/config.h20
-rw-r--r--keyboards/ez_maker/directpins/promicro/info.json1
-rw-r--r--keyboards/ez_maker/directpins/promicro/promicro.c17
-rw-r--r--keyboards/ez_maker/directpins/promicro/promicro.h19
-rw-r--r--keyboards/ez_maker/directpins/promicro/rules.mk1
-rw-r--r--keyboards/ez_maker/directpins/proton_c/keymaps/default/readme.md1
-rw-r--r--keyboards/ez_maker/directpins/proton_c/proton_c.c17
-rw-r--r--keyboards/ez_maker/directpins/proton_c/proton_c.h19
-rw-r--r--keyboards/ez_maker/directpins/proton_c/rules.mk1
-rw-r--r--keyboards/ez_maker/directpins/rp2040/info.json64
-rw-r--r--keyboards/ez_maker/directpins/rp2040/keymaps/default/keymap.json25
-rw-r--r--keyboards/ez_maker/directpins/rp2040/readme.md19
-rw-r--r--keyboards/ez_maker/directpins/rp2040/rules.mk1
-rw-r--r--keyboards/ez_maker/directpins/teensy_2/config.h20
-rw-r--r--keyboards/ez_maker/directpins/teensy_2/info.json1
-rw-r--r--keyboards/ez_maker/directpins/teensy_2/keymaps/default/keymap.json2
-rw-r--r--keyboards/ez_maker/directpins/teensy_2/rules.mk1
-rw-r--r--keyboards/ez_maker/directpins/teensy_2/teensy2.c17
-rw-r--r--keyboards/ez_maker/directpins/teensy_2/teensy2.h19
-rw-r--r--keyboards/ez_maker/directpins/teensy_2pp/config.h20
-rw-r--r--keyboards/ez_maker/directpins/teensy_2pp/info.json1
-rw-r--r--keyboards/ez_maker/directpins/teensy_2pp/keymaps/default/keymap.json2
-rw-r--r--keyboards/ez_maker/directpins/teensy_2pp/rules.mk1
-rw-r--r--keyboards/ez_maker/directpins/teensy_2pp/teensy2.c17
-rw-r--r--keyboards/ez_maker/directpins/teensy_2pp/teensy2.h19
-rw-r--r--keyboards/ez_maker/directpins/teensy_32/config.h23
-rw-r--r--keyboards/ez_maker/directpins/teensy_32/halconf.h27
-rw-r--r--keyboards/ez_maker/directpins/teensy_32/mcuconf.h2
-rw-r--r--keyboards/ez_maker/directpins/teensy_32/rules.mk2
-rw-r--r--keyboards/ez_maker/directpins/teensy_lc/config.h23
-rw-r--r--keyboards/ez_maker/directpins/teensy_lc/halconf.h27
-rw-r--r--keyboards/ez_maker/directpins/teensy_lc/mcuconf.h2
-rw-r--r--keyboards/ez_maker/directpins/teensy_lc/rules.mk1
-rw-r--r--keyboards/facew/config.h7
-rw-r--r--keyboards/facew/info.json6
-rwxr-xr-xkeyboards/fallacy/config.h9
-rw-r--r--keyboards/fallacy/info.json6
-rw-r--r--keyboards/fc660c/config.h7
-rw-r--r--keyboards/fc660c/info.json8
-rw-r--r--keyboards/fc660c/keymaps/siroleo/keymap.c2
-rw-r--r--keyboards/fc660c/keymaps/via_rgb/keymap.c2
-rw-r--r--keyboards/fc980c/config.h8
-rw-r--r--keyboards/fc980c/info.json8
-rw-r--r--keyboards/feels/feels65/config.h8
-rw-r--r--keyboards/feels/feels65/info.json6
-rw-r--r--keyboards/feker/ik75/config.h108
-rw-r--r--keyboards/feker/ik75/ik75.c191
-rw-r--r--keyboards/feker/ik75/ik75.h56
-rw-r--r--keyboards/feker/ik75/info.json105
-rw-r--r--keyboards/feker/ik75/keymaps/bkzshen/keymap.c224
-rw-r--r--keyboards/feker/ik75/keymaps/bkzshen/rules.mk4
-rw-r--r--keyboards/feker/ik75/keymaps/default/keymap.c166
-rw-r--r--keyboards/feker/ik75/keymaps/default/rules.mk2
-rw-r--r--keyboards/feker/ik75/keymaps/via/keymap.c224
-rw-r--r--keyboards/feker/ik75/keymaps/via/rules.mk4
-rw-r--r--keyboards/feker/ik75/readme.md25
-rw-r--r--keyboards/feker/ik75/rules.mk29
-rw-r--r--keyboards/ferris/0_1/config.h7
-rw-r--r--keyboards/ferris/0_1/info.json9
-rw-r--r--keyboards/ferris/0_2/base/info.json6
-rw-r--r--keyboards/ferris/0_2/base/rules.mk0
-rw-r--r--keyboards/ferris/0_2/bling/config.h7
-rw-r--r--keyboards/ferris/0_2/bling/info.json6
-rw-r--r--keyboards/ferris/0_2/compact/config.h23
-rw-r--r--keyboards/ferris/0_2/compact/info.json6
-rw-r--r--keyboards/ferris/0_2/config.h9
-rw-r--r--keyboards/ferris/0_2/high/config.h23
-rw-r--r--keyboards/ferris/0_2/high/info.json6
-rw-r--r--keyboards/ferris/0_2/info.json7
-rw-r--r--keyboards/ferris/0_2/mini/config.h23
-rw-r--r--keyboards/ferris/0_2/mini/info.json6
-rw-r--r--keyboards/ferris/0_2/rules.mk2
-rw-r--r--keyboards/ferris/info.json1
-rw-r--r--keyboards/ferris/keymaps/bruun-baer/config.h39
-rw-r--r--keyboards/ferris/keymaps/bruun-baer/keymap.json71
-rw-r--r--keyboards/ferris/keymaps/bruun-baer/readme.md2
-rw-r--r--keyboards/ferris/keymaps/madhatter/keymap.c2
-rw-r--r--keyboards/ferris/keymaps/manna-harbour_miryoku/config.h19
-rw-r--r--keyboards/ferris/keymaps/manna-harbour_miryoku/keymap.c4
-rw-r--r--keyboards/ferris/keymaps/manna-harbour_miryoku/rules.mk4
-rw-r--r--keyboards/ferris/keymaps/pierrec83/keymap.json2
-rw-r--r--keyboards/ferris/sweep/config.h24
-rw-r--r--keyboards/ferris/sweep/info.json9
-rw-r--r--keyboards/ferris/sweep/readme.md9
-rw-r--r--keyboards/ffkeebs/puca/config.h7
-rw-r--r--keyboards/ffkeebs/puca/info.json6
-rw-r--r--keyboards/ffkeebs/puca/readme.md2
-rw-r--r--keyboards/ffkeebs/siris/config.h7
-rw-r--r--keyboards/ffkeebs/siris/info.json6
-rw-r--r--keyboards/fjlabs/7vhotswap/config.h8
-rw-r--r--keyboards/fjlabs/7vhotswap/info.json8
-rw-r--r--keyboards/fjlabs/ad65/config.h8
-rw-r--r--keyboards/fjlabs/ad65/info.json8
-rw-r--r--keyboards/fjlabs/avalon/avalon.c14
-rw-r--r--keyboards/fjlabs/avalon/avalon.h32
-rw-r--r--keyboards/fjlabs/avalon/config.h76
-rw-r--r--keyboards/fjlabs/avalon/info.json94
-rw-r--r--keyboards/fjlabs/avalon/keymaps/default/keymap.c39
-rw-r--r--keyboards/fjlabs/avalon/keymaps/via/keymap.c57
-rw-r--r--keyboards/fjlabs/avalon/keymaps/via/rules.mk1
-rw-r--r--keyboards/fjlabs/avalon/readme.md19
-rw-r--r--keyboards/fjlabs/avalon/rules.mk21
-rw-r--r--keyboards/fjlabs/bks65/config.h8
-rw-r--r--keyboards/fjlabs/bks65/info.json6
-rw-r--r--keyboards/fjlabs/bks65solder/config.h8
-rw-r--r--keyboards/fjlabs/bks65solder/info.json6
-rw-r--r--keyboards/fjlabs/bolsa65/config.h8
-rw-r--r--keyboards/fjlabs/bolsa65/info.json6
-rw-r--r--keyboards/fjlabs/kf87/config.h8
-rw-r--r--keyboards/fjlabs/kf87/info.json8
-rw-r--r--keyboards/fjlabs/kyuu/config.h8
-rw-r--r--keyboards/fjlabs/kyuu/info.json8
-rw-r--r--keyboards/fjlabs/ldk65/config.h8
-rw-r--r--keyboards/fjlabs/ldk65/info.json6
-rw-r--r--keyboards/fjlabs/midway60/config.h8
-rw-r--r--keyboards/fjlabs/midway60/info.json6
-rw-r--r--keyboards/fjlabs/mk61rgbansi/config.h8
-rw-r--r--keyboards/fjlabs/mk61rgbansi/info.json6
-rw-r--r--keyboards/fjlabs/peaker/config.h93
-rw-r--r--keyboards/fjlabs/peaker/info.json94
-rw-r--r--keyboards/fjlabs/peaker/keymaps/default/keymap.c39
-rw-r--r--keyboards/fjlabs/peaker/keymaps/via/keymap.c57
-rw-r--r--keyboards/fjlabs/peaker/keymaps/via/rules.mk1
-rw-r--r--keyboards/fjlabs/peaker/peaker.c14
-rw-r--r--keyboards/fjlabs/peaker/peaker.h32
-rw-r--r--keyboards/fjlabs/peaker/readme.md13
-rw-r--r--keyboards/fjlabs/peaker/rules.mk21
-rw-r--r--keyboards/fjlabs/polaris/config.h8
-rw-r--r--keyboards/fjlabs/polaris/info.json8
-rw-r--r--keyboards/fjlabs/ready100/config.h8
-rw-r--r--keyboards/fjlabs/ready100/info.json6
-rw-r--r--keyboards/fjlabs/sinanju/config.h95
-rw-r--r--keyboards/fjlabs/sinanju/info.json147
-rw-r--r--keyboards/fjlabs/sinanju/keymaps/default/keymap.c39
-rw-r--r--keyboards/fjlabs/sinanju/keymaps/default_ansi_wkl/keymap.c39
-rw-r--r--keyboards/fjlabs/sinanju/keymaps/via/keymap.c58
-rw-r--r--keyboards/fjlabs/sinanju/keymaps/via/rules.mk1
-rw-r--r--keyboards/fjlabs/sinanju/readme.md15
-rw-r--r--keyboards/fjlabs/sinanju/rules.mk21
-rw-r--r--keyboards/fjlabs/sinanju/sinanju.c14
-rw-r--r--keyboards/fjlabs/sinanju/sinanju.h59
-rw-r--r--keyboards/fjlabs/sinanjuwk/config.h96
-rw-r--r--keyboards/fjlabs/sinanjuwk/info.json84
-rw-r--r--keyboards/fjlabs/sinanjuwk/keymaps/default/keymap.c39
-rw-r--r--keyboards/fjlabs/sinanjuwk/keymaps/via/keymap.c58
-rw-r--r--keyboards/fjlabs/sinanjuwk/keymaps/via/rules.mk1
-rw-r--r--keyboards/fjlabs/sinanjuwk/readme.md17
-rw-r--r--keyboards/fjlabs/sinanjuwk/rules.mk21
-rw-r--r--keyboards/fjlabs/sinanjuwk/sinanjuwk.c14
-rw-r--r--keyboards/fjlabs/sinanjuwk/sinanjuwk.h32
-rw-r--r--keyboards/fjlabs/solanis/config.h8
-rw-r--r--keyboards/fjlabs/solanis/info.json6
-rw-r--r--keyboards/fjlabs/solanis/keymaps/default/keymap.c26
-rw-r--r--keyboards/fjlabs/solanis/keymaps/via/keymap.c52
-rw-r--r--keyboards/fjlabs/solanis/solanis.h41
-rw-r--r--keyboards/fjlabs/swordfish/config.h108
-rw-r--r--keyboards/fjlabs/swordfish/info.json16
-rw-r--r--keyboards/fjlabs/swordfish/keymaps/default/keymap.c39
-rw-r--r--keyboards/fjlabs/swordfish/keymaps/via/keymap.c57
-rw-r--r--keyboards/fjlabs/swordfish/keymaps/via/rules.mk1
-rw-r--r--keyboards/fjlabs/swordfish/readme.md16
-rw-r--r--keyboards/fjlabs/swordfish/rules.mk21
-rw-r--r--keyboards/fjlabs/swordfish/swordfish.c14
-rw-r--r--keyboards/fjlabs/swordfish/swordfish.h32
-rw-r--r--keyboards/fjlabs/tf60ansi/config.h8
-rw-r--r--keyboards/fjlabs/tf60ansi/info.json6
-rw-r--r--keyboards/fjlabs/tf60ansi/readme.md2
-rw-r--r--keyboards/fjlabs/tf60v2/config.h8
-rw-r--r--keyboards/fjlabs/tf60v2/info.json8
-rw-r--r--keyboards/fjlabs/tf60v2/readme.md2
-rw-r--r--keyboards/fjlabs/tf65rgbv2/config.h8
-rw-r--r--keyboards/fjlabs/tf65rgbv2/info.json6
-rw-r--r--keyboards/fjlabs/tf65rgbv2/readme.md2
-rw-r--r--keyboards/flehrad/bigswitch/config.h8
-rw-r--r--keyboards/flehrad/bigswitch/info.json8
-rw-r--r--keyboards/flehrad/bigswitch/keymaps/333fred/config.h1
-rw-r--r--keyboards/flehrad/downbubble/config.h8
-rw-r--r--keyboards/flehrad/downbubble/info.json6
-rw-r--r--keyboards/flehrad/numbrero/config.h8
-rw-r--r--keyboards/flehrad/numbrero/info.json6
-rw-r--r--keyboards/flehrad/snagpad/config.h8
-rw-r--r--keyboards/flehrad/snagpad/info.json6
-rw-r--r--keyboards/flehrad/tradestation/config.h8
-rw-r--r--keyboards/flehrad/tradestation/info.json8
-rw-r--r--keyboards/fleuron/config.h8
-rw-r--r--keyboards/fleuron/info.json8
-rw-r--r--keyboards/fleuron/keymaps/dollartacos/keymap.c4
-rw-r--r--keyboards/fluorite/config.h8
-rw-r--r--keyboards/fluorite/info.json6
-rw-r--r--keyboards/flx/lodestone/config.h8
-rw-r--r--keyboards/flx/lodestone/info.json8
-rw-r--r--keyboards/flx/virgo/config.h7
-rw-r--r--keyboards/flx/virgo/info.json8
-rw-r--r--keyboards/flxlb/zplit/config.h7
-rw-r--r--keyboards/flxlb/zplit/info.json6
-rw-r--r--keyboards/flygone60/rev3/config.h8
-rw-r--r--keyboards/flygone60/rev3/info.json6
-rw-r--r--keyboards/foostan/cornelius/config.h7
-rw-r--r--keyboards/foostan/cornelius/info.json8
-rw-r--r--keyboards/foostan/cornelius/keymaps/gipsy-king/keymap.c2
-rw-r--r--keyboards/foostan/cornelius/keymaps/hvp/keymap.c4
-rw-r--r--keyboards/foostan/cornelius/readme.md2
-rw-r--r--keyboards/for_science/config.h8
-rw-r--r--keyboards/for_science/info.json6
-rw-r--r--keyboards/for_science/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/fortitude60/info.json10
-rw-r--r--keyboards/fortitude60/keymaps/manna-harbour_miryoku/config.h22
-rw-r--r--keyboards/fortitude60/keymaps/manna-harbour_miryoku/keymap.c4
-rw-r--r--keyboards/fortitude60/rev1/config.h7
-rw-r--r--keyboards/fortitude60/rev1/info.json16
-rw-r--r--keyboards/foxlab/key65/hotswap/config.h7
-rw-r--r--keyboards/foxlab/key65/hotswap/info.json6
-rw-r--r--keyboards/foxlab/key65/universal/config.h7
-rw-r--r--keyboards/foxlab/key65/universal/info.json6
-rw-r--r--keyboards/foxlab/leaf60/hotswap/config.h8
-rw-r--r--keyboards/foxlab/leaf60/hotswap/info.json8
-rw-r--r--keyboards/foxlab/leaf60/hotswap/keymaps/crd/keymap.c2
-rw-r--r--keyboards/foxlab/leaf60/universal/config.h8
-rw-r--r--keyboards/foxlab/leaf60/universal/info.json8
-rw-r--r--keyboards/foxlab/leaf60/universal/keymaps/jarred/keymap.c2
-rw-r--r--keyboards/foxlab/leaf60/universal/keymaps/mguterl/keymap.c2
-rw-r--r--keyboards/foxlab/time80/config.h8
-rw-r--r--keyboards/foxlab/time80/info.json8
-rw-r--r--keyboards/foxlab/time80/readme.md2
-rw-r--r--keyboards/foxlab/time_re/hotswap/config.h7
-rw-r--r--keyboards/foxlab/time_re/hotswap/info.json8
-rw-r--r--keyboards/foxlab/time_re/universal/config.h7
-rw-r--r--keyboards/foxlab/time_re/universal/info.json8
-rw-r--r--keyboards/fr4/southpaw75/config.h8
-rw-r--r--keyboards/fr4/southpaw75/info.json6
-rw-r--r--keyboards/fr4/unix60/config.h8
-rw-r--r--keyboards/fr4/unix60/info.json6
-rwxr-xr-xkeyboards/fractal/config.h8
-rw-r--r--keyboards/fractal/info.json6
-rw-r--r--keyboards/fractal/keymaps/default/keymap.c2
-rw-r--r--keyboards/free_willy/config.h8
-rw-r--r--keyboards/free_willy/info.json6
-rw-r--r--keyboards/free_willy/keymaps/colemak/keymap.c2
-rw-r--r--keyboards/friedrich/config.h8
-rw-r--r--keyboards/friedrich/info.json6
-rw-r--r--keyboards/frooastboard/nano/config.h4
-rw-r--r--keyboards/frooastboard/nano/info.json1
-rw-r--r--keyboards/frooastboard/nano/keymaps/safe_mode/keymap.c2
-rw-r--r--keyboards/frooastboard/walnut/readme.md2
-rw-r--r--keyboards/ft/mars65/config.h53
-rw-r--r--keyboards/ft/mars65/info.json397
-rw-r--r--keyboards/ft/mars65/keymaps/default/keymap.c25
-rw-r--r--keyboards/ft/mars65/keymaps/via/keymap.c25
-rw-r--r--keyboards/ft/mars65/keymaps/via/rules.mk1
-rw-r--r--keyboards/ft/mars65/mars65.c8
-rw-r--r--keyboards/ft/mars65/mars65.h111
-rw-r--r--keyboards/ft/mars65/readme.md21
-rw-r--r--keyboards/ft/mars65/rules.mk24
-rw-r--r--keyboards/ft/mars80/config.h7
-rw-r--r--keyboards/ft/mars80/info.json6
-rw-r--r--keyboards/function96/v1/config.h9
-rw-r--r--keyboards/function96/v1/info.json6
-rw-r--r--keyboards/function96/v2/config.h9
-rw-r--r--keyboards/function96/v2/info.json6
-rw-r--r--keyboards/fungo/fungo.c18
-rw-r--r--keyboards/fungo/fungo.h23
-rw-r--r--keyboards/fungo/keymaps/default/config.h24
-rw-r--r--keyboards/fungo/keymaps/default/keymap.c156
-rw-r--r--keyboards/fungo/readme.md28
-rw-r--r--keyboards/fungo/rev1/config.h70
-rw-r--r--keyboards/fungo/rev1/info.json97
-rw-r--r--keyboards/fungo/rev1/post_config.h30
-rw-r--r--keyboards/fungo/rev1/rev1.c17
-rw-r--r--keyboards/fungo/rev1/rev1.h48
-rw-r--r--keyboards/fungo/rev1/rules.mk28
-rw-r--r--keyboards/funky40/config.h9
-rw-r--r--keyboards/funky40/info.json8
-rw-r--r--keyboards/gami_studio/lex60/config.h7
-rw-r--r--keyboards/gami_studio/lex60/info.json8
-rw-r--r--keyboards/gboards/butterstick/config.h7
-rw-r--r--keyboards/gboards/butterstick/info.json6
-rw-r--r--keyboards/gboards/ergotaco/config.h7
-rw-r--r--keyboards/gboards/ergotaco/info.json6
-rw-r--r--keyboards/gboards/georgi/config.h7
-rw-r--r--keyboards/gboards/georgi/info.json161
-rw-r--r--keyboards/gboards/georgi/keymaps/colemak-dh/rules.mk9
-rw-r--r--keyboards/gboards/georgi/keymaps/default-flipped/rules.mk9
-rw-r--r--keyboards/gboards/georgi/keymaps/default/rules.mk9
-rw-r--r--keyboards/gboards/georgi/keymaps/dennytom/rules.mk6
-rw-r--r--keyboards/gboards/georgi/keymaps/minimal/rules.mk9
-rw-r--r--keyboards/gboards/georgi/keymaps/norman/rules.mk9
-rw-r--r--keyboards/gboards/georgi/rules.mk20
-rw-r--r--keyboards/gboards/gergo/config.h7
-rw-r--r--keyboards/gboards/gergo/info.json8
-rw-r--r--keyboards/gboards/gergo/keymaps/colemak/keymap.c5
-rw-r--r--keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/gboards/gergoplex/config.h8
-rw-r--r--keyboards/gboards/gergoplex/info.json6
-rw-r--r--keyboards/gboards/gergoplex/keymaps/georgepetri/config.h2
-rw-r--r--keyboards/gboards/gergoplex/keymaps/georgepetri/keymap.c11
-rw-r--r--keyboards/geekboards/macropad_v2/config.h8
-rw-r--r--keyboards/geekboards/macropad_v2/info.json8
-rw-r--r--keyboards/geekboards/tester/config.h9
-rw-r--r--keyboards/geekboards/tester/info.json8
-rw-r--r--keyboards/generic_panda/panda65_01/config.h8
-rw-r--r--keyboards/generic_panda/panda65_01/info.json6
-rw-r--r--keyboards/genone/eclipse_65/config.h8
-rw-r--r--keyboards/genone/eclipse_65/info.json8
-rw-r--r--keyboards/genone/g1_65/config.h8
-rw-r--r--keyboards/genone/g1_65/info.json6
-rw-r--r--keyboards/gentleman65/config.h59
-rw-r--r--keyboards/gentleman65/info.json10
-rw-r--r--keyboards/gentleman65/readme.md24
-rw-r--r--keyboards/geonworks/frogmini/fmh/config.h44
-rw-r--r--keyboards/geonworks/frogmini/fmh/fmh.c17
-rw-r--r--keyboards/geonworks/frogmini/fmh/fmh.h120
-rw-r--r--keyboards/geonworks/frogmini/fmh/halconf.h21
-rw-r--r--keyboards/geonworks/frogmini/fmh/info.json357
-rw-r--r--keyboards/geonworks/frogmini/fmh/keymaps/default/keymap.c47
-rw-r--r--keyboards/geonworks/frogmini/fmh/keymaps/via/keymap.c47
-rw-r--r--keyboards/geonworks/frogmini/fmh/keymaps/via/rules.mk1
-rw-r--r--keyboards/geonworks/frogmini/fmh/mcuconf.h22
-rw-r--r--keyboards/geonworks/frogmini/fmh/rules.mk26
-rw-r--r--keyboards/geonworks/frogmini/fms/config.h50
-rw-r--r--keyboards/geonworks/frogmini/fms/fms.c23
-rw-r--r--keyboards/geonworks/frogmini/fms/fms.h324
-rw-r--r--keyboards/geonworks/frogmini/fms/halconf.h22
-rw-r--r--keyboards/geonworks/frogmini/fms/info.json1184
-rw-r--r--keyboards/geonworks/frogmini/fms/keymaps/default/keymap.c47
-rw-r--r--keyboards/geonworks/frogmini/fms/keymaps/default_60_ansi_wkl_split_bs_rshift_10u_space/keymap.c47
-rw-r--r--keyboards/geonworks/frogmini/fms/keymaps/default_60_hhkb_10u_space/keymap.c47
-rw-r--r--keyboards/geonworks/frogmini/fms/keymaps/default_60_tsangan_hhkb_10u_space/keymap.c47
-rw-r--r--keyboards/geonworks/frogmini/fms/keymaps/via/keymap.c47
-rw-r--r--keyboards/geonworks/frogmini/fms/keymaps/via/rules.mk1
-rw-r--r--keyboards/geonworks/frogmini/fms/mcuconf.h25
-rw-r--r--keyboards/geonworks/frogmini/fms/rules.mk27
-rw-r--r--keyboards/geonworks/frogmini/readme.md49
-rw-r--r--keyboards/ggkeyboards/genesis/hotswap/config.h7
-rw-r--r--keyboards/ggkeyboards/genesis/hotswap/info.json6
-rw-r--r--keyboards/ggkeyboards/genesis/solder/config.h7
-rw-r--r--keyboards/ggkeyboards/genesis/solder/info.json6
-rw-r--r--keyboards/gh60/revc/config.h8
-rw-r--r--keyboards/gh60/revc/info.json6
-rw-r--r--keyboards/gh60/revc/keymaps/bluezio/keymap.c2
-rw-r--r--keyboards/gh60/revc/keymaps/chaser/keymap.c2
-rw-r--r--keyboards/gh60/revc/keymaps/dbroqua/keymap.c4
-rw-r--r--keyboards/gh60/revc/keymaps/default/keymap.c2
-rw-r--r--keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c2
-rw-r--r--keyboards/gh60/satan/config.h8
-rw-r--r--keyboards/gh60/satan/info.json14
-rw-r--r--keyboards/gh60/satan/keymaps/addcninblue/keymap.c8
-rw-r--r--keyboards/gh60/satan/keymaps/admiralStrokers/config.h1
-rw-r--r--keyboards/gh60/satan/keymaps/bri/keymap.c6
-rw-r--r--keyboards/gh60/satan/keymaps/chaser/keymap.c2
-rw-r--r--keyboards/gh60/satan/keymaps/colemak/keymap.c6
-rw-r--r--keyboards/gh60/satan/keymaps/dbroqua/keymap.c4
-rw-r--r--keyboards/gh60/satan/keymaps/denolfe/keymap.c8
-rw-r--r--keyboards/gh60/satan/keymaps/dkrieger/keymap.c8
-rw-r--r--keyboards/gh60/satan/keymaps/fakb/config.h1
-rw-r--r--keyboards/gh60/satan/keymaps/fakb/keymap.c2
-rw-r--r--keyboards/gh60/satan/keymaps/gipsy-king/keymap.c2
-rw-r--r--keyboards/gh60/satan/keymaps/hhkb_7u/keymap.c31
-rw-r--r--keyboards/gh60/satan/keymaps/hhkb_7u/readme.md13
-rw-r--r--keyboards/gh60/satan/keymaps/isoHHKB/keymap.c4
-rw-r--r--keyboards/gh60/satan/keymaps/iso_split_rshift/keymap.c2
-rw-r--r--keyboards/gh60/satan/keymaps/jarred/keymap.c2
-rw-r--r--keyboards/gh60/satan/keymaps/lepa/keymap.c2
-rw-r--r--keyboards/gh60/satan/keymaps/poker/keymap.c6
-rw-r--r--keyboards/gh60/satan/keymaps/rask63/keymap.c2
-rw-r--r--keyboards/gh60/satan/keymaps/sethbc/keymap.c4
-rw-r--r--keyboards/gh60/satan/keymaps/smt/keymap.c4
-rw-r--r--keyboards/gh60/satan/keymaps/spacemanspiff/keymap.c4
-rw-r--r--keyboards/gh60/satan/keymaps/stanleylai/keymap.c4
-rw-r--r--keyboards/gh60/satan/keymaps/unxmaal/keymap.c6
-rw-r--r--keyboards/gh60/satan/rules.mk2
-rw-r--r--keyboards/gh60/satan/satan.h27
-rw-r--r--keyboards/gh60/v1p3/config.h7
-rw-r--r--keyboards/gh60/v1p3/info.json6
-rw-r--r--keyboards/gh60/v1p3/keymaps/factory_hhkb/keymap.c2
-rw-r--r--keyboards/gh60/v1p3/keymaps/factory_layout5/keymap.c2
-rw-r--r--keyboards/gh60/v1p3/keymaps/factory_layout7/keymap.c2
-rw-r--r--keyboards/gh60/v1p3/keymaps/factory_layout9/keymap.c2
-rw-r--r--keyboards/gh60/v1p3/keymaps/factory_minila/keymap.c2
-rw-r--r--keyboards/gh60/v1p3/keymaps/factory_poker/keymap.c2
-rw-r--r--keyboards/gh80_3000/config.h8
-rw-r--r--keyboards/gh80_3000/info.json6
-rw-r--r--keyboards/ghs/rar/config.h8
-rw-r--r--keyboards/ghs/rar/info.json6
-rw-r--r--keyboards/giabalanai/config.h294
-rw-r--r--keyboards/giabalanai/giabalanai.c255
-rw-r--r--keyboards/giabalanai/giabalanai.h132
-rw-r--r--keyboards/giabalanai/info.json125
-rw-r--r--keyboards/giabalanai/keymaps/2firmware/config.h9
-rw-r--r--keyboards/giabalanai/keymaps/2firmware/keymap.c739
-rw-r--r--keyboards/giabalanai/keymaps/2firmware/readme.md12
-rw-r--r--keyboards/giabalanai/keymaps/2firmware/rules.mk4
-rw-r--r--keyboards/giabalanai/keymaps/3araht/keymap.c754
-rw-r--r--keyboards/giabalanai/keymaps/3araht/readme.md1
-rw-r--r--keyboards/giabalanai/keymaps/3araht/rules.mk4
-rw-r--r--keyboards/giabalanai/keymaps/default/keymap.c259
-rw-r--r--keyboards/giabalanai/keymaps/default/readme.md1
-rw-r--r--keyboards/giabalanai/keymaps/default/rules.mk1
-rw-r--r--keyboards/giabalanai/keymaps/default_giabarinaix2/config.h26
-rw-r--r--keyboards/giabalanai/keymaps/default_giabarinaix2/info.json146
-rw-r--r--keyboards/giabalanai/keymaps/default_giabarinaix2/keymap.c262
-rw-r--r--keyboards/giabalanai/keymaps/default_giabarinaix2/readme.md1
-rw-r--r--keyboards/giabalanai/keymaps/default_giabarinaix2/rules.mk3
-rw-r--r--keyboards/giabalanai/keymaps/giabarinaix2led/config.h26
-rw-r--r--keyboards/giabalanai/keymaps/giabarinaix2led/info.json146
-rw-r--r--keyboards/giabalanai/keymaps/giabarinaix2led/keymap.c464
-rw-r--r--keyboards/giabalanai/keymaps/giabarinaix2led/readme.md1
-rw-r--r--keyboards/giabalanai/keymaps/giabarinaix2led/rules.mk3
-rw-r--r--keyboards/giabalanai/keymaps/party/keymap.c792
-rw-r--r--keyboards/giabalanai/keymaps/party/readme.md3
-rw-r--r--keyboards/giabalanai/keymaps/party/rgb_matrix_user.inc57
-rw-r--r--keyboards/giabalanai/keymaps/party/rules.mk6
-rw-r--r--keyboards/giabalanai/keymaps/via/config.h3
-rw-r--r--keyboards/giabalanai/keymaps/via/keymap.c260
-rw-r--r--keyboards/giabalanai/keymaps/via/readme.md1
-rw-r--r--keyboards/giabalanai/keymaps/via/rules.mk3
-rw-r--r--keyboards/giabalanai/keymaps/via_giabarinaix2/config.h27
-rw-r--r--keyboards/giabalanai/keymaps/via_giabarinaix2/info.json146
-rw-r--r--keyboards/giabalanai/keymaps/via_giabarinaix2/keymap.c262
-rw-r--r--keyboards/giabalanai/keymaps/via_giabarinaix2/readme.md1
-rw-r--r--keyboards/giabalanai/keymaps/via_giabarinaix2/rules.mk4
-rw-r--r--keyboards/giabalanai/readme.md24
-rw-r--r--keyboards/giabalanai/rules.mk26
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/config.h8
-rwxr-xr-xkeyboards/gizmo_engineering/gk6/info.json8
-rw-r--r--keyboards/gkeyboard/gkb_m16/config.h7
-rw-r--r--keyboards/gkeyboard/gkb_m16/info.json8
-rw-r--r--keyboards/gl516/a52gl/config.h8
-rw-r--r--keyboards/gl516/a52gl/info.json6
-rw-r--r--keyboards/gl516/a52gl/readme.md2
-rw-r--r--keyboards/gl516/j73gl/config.h8
-rw-r--r--keyboards/gl516/j73gl/info.json6
-rw-r--r--keyboards/gl516/j73gl/keymaps/via_rgb_matrix/keymap.c2
-rw-r--r--keyboards/gl516/j73gl/readme.md2
-rw-r--r--keyboards/gl516/n51gl/config.h8
-rw-r--r--keyboards/gl516/n51gl/info.json6
-rw-r--r--keyboards/gl516/n51gl/keymaps/salicylic/keymap.c2
-rw-r--r--keyboards/gl516/n51gl/readme.md2
-rw-r--r--keyboards/glenpickle/chimera_ergo/config.h8
-rw-r--r--keyboards/glenpickle/chimera_ergo/info.json6
-rw-r--r--keyboards/glenpickle/chimera_ergo/keymaps/default/keymap.c2
-rw-r--r--keyboards/glenpickle/chimera_ls/config.h8
-rw-r--r--keyboards/glenpickle/chimera_ls/info.json8
-rw-r--r--keyboards/glenpickle/chimera_ls/keymaps/default/keymap.c2
-rw-r--r--keyboards/glenpickle/chimera_ortho/config.h8
-rw-r--r--keyboards/glenpickle/chimera_ortho/info.json6
-rw-r--r--keyboards/glenpickle/chimera_ortho/keymaps/default/keymap.c2
-rw-r--r--keyboards/glenpickle/chimera_ortho_plus/config.h8
-rw-r--r--keyboards/glenpickle/chimera_ortho_plus/info.json6
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/ansi.c236
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/ansi.h47
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/info.json90
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/keymap.c44
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/readme.md1
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/keymap.c51
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/rules.mk1
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/readme.md23
-rw-r--r--keyboards/gmmk/gmmk2/p65/ansi/rules.mk22
-rw-r--r--keyboards/gmmk/gmmk2/p65/config.h117
-rw-r--r--keyboards/gmmk/gmmk2/p65/halconf.h29
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/info.json91
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/iso.c238
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/iso.h47
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/keymaps/default/keymap.c44
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/keymaps/default/readme.md1
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/keymaps/via/keymap.c50
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/keymaps/via/rules.mk1
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/readme.md23
-rw-r--r--keyboards/gmmk/gmmk2/p65/iso/rules.mk22
-rw-r--r--keyboards/gmmk/gmmk2/p65/mcuconf.h27
-rw-r--r--keyboards/gmmk/gmmk2/p65/p65.c17
-rw-r--r--keyboards/gmmk/gmmk2/p65/p65.h25
-rw-r--r--keyboards/gmmk/gmmk2/p96/ansi/ansi.c332
-rw-r--r--keyboards/gmmk/gmmk2/p96/ansi/ansi.h54
-rw-r--r--keyboards/gmmk/gmmk2/p96/ansi/info.json125
-rw-r--r--keyboards/gmmk/gmmk2/p96/ansi/keymaps/default/keymap.c46
-rw-r--r--keyboards/gmmk/gmmk2/p96/ansi/keymaps/default/readme.md1
-rw-r--r--keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/config.h21
-rw-r--r--keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/keymap.c53
-rw-r--r--keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/rules.mk1
-rw-r--r--keyboards/gmmk/gmmk2/p96/ansi/readme.md23
-rw-r--r--keyboards/gmmk/gmmk2/p96/ansi/rules.mk22
-rw-r--r--keyboards/gmmk/gmmk2/p96/config.h119
-rw-r--r--keyboards/gmmk/gmmk2/p96/halconf.h29
-rw-r--r--keyboards/gmmk/gmmk2/p96/iso/info.json126
-rw-r--r--keyboards/gmmk/gmmk2/p96/iso/iso.c328
-rw-r--r--keyboards/gmmk/gmmk2/p96/iso/iso.h54
-rw-r--r--keyboards/gmmk/gmmk2/p96/iso/keymaps/default/keymap.c44
-rw-r--r--keyboards/gmmk/gmmk2/p96/iso/keymaps/default/readme.md1
-rw-r--r--keyboards/gmmk/gmmk2/p96/iso/keymaps/via/config.h21
-rw-r--r--keyboards/gmmk/gmmk2/p96/iso/keymaps/via/keymap.c51
-rw-r--r--keyboards/gmmk/gmmk2/p96/iso/keymaps/via/rules.mk1
-rw-r--r--keyboards/gmmk/gmmk2/p96/iso/readme.md23
-rw-r--r--keyboards/gmmk/gmmk2/p96/iso/rules.mk22
-rw-r--r--keyboards/gmmk/gmmk2/p96/mcuconf.h30
-rw-r--r--keyboards/gmmk/gmmk2/p96/p96.c17
-rw-r--r--keyboards/gmmk/gmmk2/p96/p96.h25
-rw-r--r--keyboards/gmmk/pro/config.h10
-rw-r--r--keyboards/gmmk/pro/pro.h4
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/info.json8
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/alexmarmon/keymap.c4
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/andrebrait/keymap.c6
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/andrewcharnley/keymap.c4
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/batin/keymap.c2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/benschaeff/keymap.c4
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/keymap.c2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/cedrikl/keymap.c4
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/coryginsberg/keymap.c4
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.c150
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.h127
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/config.h97
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/keymap.c488
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/paddlegame.h48
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/readme.md143
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rgb_matrix_map.h129
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rules.mk16
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/hachetman/keymap.c4
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/jackkenney/keymap.c6
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/keymap.c2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/lalitmaganti/keymap.c2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/macos/keymap.c4
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/keymap.c2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/mike1808/mike1808.h2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/moults31/keymap.c4
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame/keymap.c2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/stickandgum/keymap.c2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/wholesomeducky/keymap.c2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/willwm/keymap.c2
-rw-r--r--keyboards/gmmk/pro/rev1/ansi/keymaps/willwm/keymap.json2
-rw-r--r--keyboards/gmmk/pro/rev1/iso/info.json8
-rw-r--r--keyboards/gmmk/pro/rev1/iso/keymaps/chofstede/keymap.c4
-rw-r--r--keyboards/gmmk/pro/rev1/iso/keymaps/falkecarlsen/keymap.c72
-rw-r--r--keyboards/gmmk/pro/rev1/iso/keymaps/falkecarlsen/readme.md8
-rw-r--r--keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/config.h146
-rw-r--r--keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/keymap.c723
-rw-r--r--keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/paddlegame.h48
-rw-r--r--keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/readme.md124
-rw-r--r--keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rgb_matrix_map.h433
-rw-r--r--keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rules.mk22
-rw-r--r--keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/keymap.c2
-rw-r--r--keyboards/gmmk/pro/rev1/iso/keymaps/vitoni/keymap.c6
-rw-r--r--keyboards/gmmk/pro/rev2/ansi/ansi.c241
-rw-r--r--keyboards/gmmk/pro/rev2/ansi/ansi.h52
-rw-r--r--keyboards/gmmk/pro/rev2/ansi/config.h23
-rw-r--r--keyboards/gmmk/pro/rev2/ansi/info.json115
-rw-r--r--keyboards/gmmk/pro/rev2/ansi/keymaps/default/keymap.c72
-rw-r--r--keyboards/gmmk/pro/rev2/ansi/keymaps/via/keymap.c88
-rw-r--r--keyboards/gmmk/pro/rev2/ansi/keymaps/via/rules.mk2
-rw-r--r--keyboards/gmmk/pro/rev2/ansi/readme.md37
-rw-r--r--keyboards/gmmk/pro/rev2/ansi/rules.mk23
-rw-r--r--keyboards/gmmk/pro/rev2/config.h26
-rw-r--r--keyboards/gmmk/pro/rev2/halconf.h23
-rw-r--r--keyboards/gmmk/pro/rev2/iso/config.h23
-rw-r--r--keyboards/gmmk/pro/rev2/iso/info.json116
-rw-r--r--keyboards/gmmk/pro/rev2/iso/iso.c243
-rw-r--r--keyboards/gmmk/pro/rev2/iso/iso.h52
-rw-r--r--keyboards/gmmk/pro/rev2/iso/keymaps/default/keymap.c72
-rw-r--r--keyboards/gmmk/pro/rev2/iso/keymaps/via/keymap.c90
-rw-r--r--keyboards/gmmk/pro/rev2/iso/keymaps/via/rules.mk2
-rw-r--r--keyboards/gmmk/pro/rev2/iso/readme.md37
-rw-r--r--keyboards/gmmk/pro/rev2/iso/rules.mk26
-rw-r--r--keyboards/gmmk/pro/rev2/mcuconf.h22
-rw-r--r--keyboards/gon/nerd60/config.h8
-rw-r--r--keyboards/gon/nerd60/info.json8
-rw-r--r--keyboards/gon/nerd60/keymaps/mauin/keymap.c2
-rw-r--r--keyboards/gon/nerd60/readme.md2
-rw-r--r--keyboards/gon/nerdtkl/config.h8
-rw-r--r--keyboards/gon/nerdtkl/info.json8
-rw-r--r--keyboards/gon/nerdtkl/keymaps/gam3cat/keymap.c4
-rw-r--r--keyboards/gon/nerdtkl/readme.md2
-rw-r--r--keyboards/gopolar/gg86/config.h90
-rw-r--r--keyboards/gopolar/gg86/gg86.c79
-rw-r--r--keyboards/gopolar/gg86/gg86.h116
-rw-r--r--keyboards/gopolar/gg86/info.json301
-rw-r--r--keyboards/gopolar/gg86/keymaps/bongocat/config.h48
-rw-r--r--keyboards/gopolar/gg86/keymaps/bongocat/keymap.c226
-rw-r--r--keyboards/gopolar/gg86/keymaps/bongocat/oled/bongocat.c378
-rw-r--r--keyboards/gopolar/gg86/keymaps/bongocat/oled/bongocat.h17
-rw-r--r--keyboards/gopolar/gg86/keymaps/bongocat/readme.md3
-rw-r--r--keyboards/gopolar/gg86/keymaps/bongocat/rules.mk4
-rw-r--r--keyboards/gopolar/gg86/keymaps/default/keymap.c325
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/config.h52
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c88
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/keymap_stuff.h304
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/led/cool_diagonal.c22
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/led/custom_gradient.c74
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.c27
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.h20
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/led/kitt.c68
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.c25
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.h45
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/led/random_breath_rainbow.c55
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/oled/oled_stuff.h68
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/readme.md12
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/rgb_matrix_user.inc17
-rw-r--r--keyboards/gopolar/gg86/keymaps/horrortroll/rules.mk3
-rw-r--r--keyboards/gopolar/gg86/keymaps/via/keymap.c325
-rw-r--r--keyboards/gopolar/gg86/keymaps/via/rules.mk1
-rw-r--r--keyboards/gopolar/gg86/lib/glcdfont.c249
-rw-r--r--keyboards/gopolar/gg86/lib/logo.c60
-rw-r--r--keyboards/gopolar/gg86/lib/logo.h17
-rw-r--r--keyboards/gopolar/gg86/lib/wave.h130
-rw-r--r--keyboards/gopolar/gg86/readme.md24
-rw-r--r--keyboards/gopolar/gg86/rules.mk32
-rw-r--r--keyboards/gorthage_truck/config.h8
-rw-r--r--keyboards/gorthage_truck/info.json6
-rw-r--r--keyboards/gowla/config.h8
-rw-r--r--keyboards/gowla/info.json8
-rw-r--r--keyboards/gray_studio/apollo80/config.h7
-rw-r--r--keyboards/gray_studio/apollo80/info.json8
-rw-r--r--keyboards/gray_studio/cod67/config.h8
-rw-r--r--keyboards/gray_studio/cod67/info.json6
-rw-r--r--keyboards/gray_studio/cod67/keymaps/rys/keymap.c2
-rw-r--r--keyboards/gray_studio/cod67/keymaps/via/keymap.c2
-rw-r--r--keyboards/gray_studio/hb85/config.h6
-rw-r--r--keyboards/gray_studio/hb85/info.json8
-rw-r--r--keyboards/gray_studio/hb85/keymaps/stt/keymap.c2
-rw-r--r--keyboards/gray_studio/space65/config.h8
-rw-r--r--keyboards/gray_studio/space65/info.json8
-rw-r--r--keyboards/gray_studio/space65/keymaps/billiams/keymap.c4
-rw-r--r--keyboards/gray_studio/space65/keymaps/conor/keymap.c2
-rw-r--r--keyboards/gray_studio/space65/keymaps/madhatter/keymap.c2
-rw-r--r--keyboards/gray_studio/think65/hotswap/config.h7
-rw-r--r--keyboards/gray_studio/think65/hotswap/info.json8
-rw-r--r--keyboards/gray_studio/think65/solder/config.h7
-rw-r--r--keyboards/gray_studio/think65/solder/info.json8
-rw-r--r--keyboards/gray_studio/think65/solder/keymaps/brandonschlack/keymap.c2
-rw-r--r--keyboards/gray_studio/think65/solder/keymaps/dangjoeltang/keymap.c2
-rw-r--r--keyboards/gray_studio/think65/solder/keymaps/rys/keymap.c2
-rw-r--r--keyboards/grid600/press/config.h8
-rw-r--r--keyboards/grid600/press/info.json8
-rw-r--r--keyboards/gvalchca/ga150/config.h7
-rw-r--r--keyboards/gvalchca/ga150/info.json6
-rw-r--r--keyboards/gvalchca/spaccboard/config.h7
-rw-r--r--keyboards/gvalchca/spaccboard/info.json6
-rw-r--r--keyboards/h0oni/deskpad/config.h8
-rw-r--r--keyboards/h0oni/deskpad/info.json6
-rw-r--r--keyboards/h0oni/hotduck/config.h8
-rw-r--r--keyboards/h0oni/hotduck/info.json6
-rw-r--r--keyboards/hadron/config.h6
-rw-r--r--keyboards/hadron/info.json5
-rw-r--r--keyboards/hadron/ver2/config.h4
-rw-r--r--keyboards/hadron/ver2/info.json5
-rw-r--r--keyboards/hadron/ver2/keymaps/side_numpad/keymap.c2
-rw-r--r--keyboards/hadron/ver3/config.h4
-rw-r--r--keyboards/hadron/ver3/info.json5
-rw-r--r--keyboards/hadron/ver3/keymaps/ishtob/keymap.c2
-rw-r--r--keyboards/halfcliff/config.h8
-rw-r--r--keyboards/halfcliff/info.json6
-rw-r--r--keyboards/halokeys/elemental75/chconf.h21
-rw-r--r--keyboards/halokeys/elemental75/config.h58
-rw-r--r--keyboards/halokeys/elemental75/elemental75.c35
-rw-r--r--keyboards/halokeys/elemental75/elemental75.h34
-rw-r--r--keyboards/halokeys/elemental75/info.json103
-rw-r--r--keyboards/halokeys/elemental75/keymaps/default/keymap.c82
-rw-r--r--keyboards/halokeys/elemental75/keymaps/default/rules.mk1
-rw-r--r--keyboards/halokeys/elemental75/keymaps/via/keymap.c97
-rw-r--r--keyboards/halokeys/elemental75/keymaps/via/rules.mk2
-rw-r--r--keyboards/halokeys/elemental75/readme.md21
-rw-r--r--keyboards/halokeys/elemental75/rules.mk20
-rw-r--r--keyboards/han60/config.h8
-rw-r--r--keyboards/han60/info.json6
-rw-r--r--keyboards/han60/readme.md2
-rwxr-xr-xkeyboards/hand88/config.h9
-rwxr-xr-xkeyboards/hand88/info.json6
-rw-r--r--keyboards/handwired/108key_trackpoint/config.h7
-rw-r--r--keyboards/handwired/108key_trackpoint/info.json8
-rw-r--r--keyboards/handwired/10k/readme.md2
-rw-r--r--keyboards/handwired/2x5keypad/config.h8
-rw-r--r--keyboards/handwired/2x5keypad/info.json6
-rw-r--r--keyboards/handwired/3dfoxc/config.h7
-rw-r--r--keyboards/handwired/3dfoxc/info.json6
-rw-r--r--keyboards/handwired/3dfoxc/keymaps/dlg/keymap.c2
-rw-r--r--keyboards/handwired/3dfoxc/readme.md2
-rw-r--r--keyboards/handwired/3dortho14u/readme.md2
-rw-r--r--keyboards/handwired/3dortho14u/rev1/readme.md2
-rw-r--r--keyboards/handwired/3dortho14u/rev2/readme.md2
-rw-r--r--keyboards/handwired/3dp660/config.h7
-rw-r--r--keyboards/handwired/3dp660/info.json6
-rw-r--r--keyboards/handwired/412_64/config.h8
-rw-r--r--keyboards/handwired/412_64/info.json8
-rw-r--r--keyboards/handwired/42/config.h8
-rw-r--r--keyboards/handwired/42/info.json6
-rw-r--r--keyboards/handwired/6key/6key.c38
-rw-r--r--keyboards/handwired/6key/6key.h30
-rw-r--r--keyboards/handwired/6key/config.h36
-rw-r--r--keyboards/handwired/6key/info.json11
-rw-r--r--keyboards/handwired/6key/keymaps/default/keymap.c27
-rw-r--r--keyboards/handwired/6key/keymaps/via/keymap.c35
-rw-r--r--keyboards/handwired/6key/keymaps/via/rules.mk2
-rw-r--r--keyboards/handwired/6key/rules.mk2
-rw-r--r--keyboards/handwired/6macro/config.h8
-rw-r--r--keyboards/handwired/6macro/info.json6
-rw-r--r--keyboards/handwired/6macro/keymaps/osu/keymap.c6
-rw-r--r--keyboards/handwired/aball/config.h7
-rw-r--r--keyboards/handwired/aball/info.json8
-rw-r--r--keyboards/handwired/aek64/config.h8
-rw-r--r--keyboards/handwired/aek64/info.json8
-rw-r--r--keyboards/handwired/aek64/keymaps/4sstylz/keymap.c2
-rw-r--r--keyboards/handwired/aim65/config.h7
-rw-r--r--keyboards/handwired/aim65/info.json8
-rw-r--r--keyboards/handwired/aim65/keymaps/bonnee/keymap.c2
-rw-r--r--keyboards/handwired/amigopunk/config.h8
-rw-r--r--keyboards/handwired/amigopunk/info.json6
-rw-r--r--keyboards/handwired/angel/config.h12
-rw-r--r--keyboards/handwired/angel/info.json6
-rw-r--r--keyboards/handwired/aplx2/config.h8
-rw-r--r--keyboards/handwired/aplx2/info.json6
-rw-r--r--keyboards/handwired/aranck/config.h8
-rw-r--r--keyboards/handwired/aranck/info.json6
-rw-r--r--keyboards/handwired/aranck/keymaps/turkishish/keymap.c2
-rw-r--r--keyboards/handwired/arrow_pad/config.h8
-rw-r--r--keyboards/handwired/arrow_pad/info.json8
-rw-r--r--keyboards/handwired/arrow_pad/keymaps/pad_21/config.h1
-rw-r--r--keyboards/handwired/arrow_pad/keymaps/pad_21/keymap.c2
-rw-r--r--keyboards/handwired/arrow_pad/keymaps/pad_24/config.h1
-rw-r--r--keyboards/handwired/arrow_pad/keymaps/pad_24/keymap.c2
-rw-r--r--keyboards/handwired/atreus50/config.h8
-rw-r--r--keyboards/handwired/atreus50/info.json6
-rw-r--r--keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c2
-rw-r--r--keyboards/handwired/atreus50/keymaps/default/keymap.c16
-rw-r--r--keyboards/handwired/axon/config.h8
-rw-r--r--keyboards/handwired/axon/info.json6
-rw-r--r--keyboards/handwired/axon/readme.md4
-rw-r--r--keyboards/handwired/baredev/rev1/info.json9
-rw-r--r--keyboards/handwired/baredev/rev1/keymaps/manoshu/keymap.c2
-rw-r--r--keyboards/handwired/baredev/rev1/readme.md2
-rw-r--r--keyboards/handwired/battleship_gamepad/config.h8
-rw-r--r--keyboards/handwired/battleship_gamepad/info.json6
-rw-r--r--keyboards/handwired/battleship_gamepad/readme.md2
-rw-r--r--keyboards/handwired/bdn9_ble/config.h7
-rw-r--r--keyboards/handwired/bdn9_ble/info.json8
-rw-r--r--keyboards/handwired/bento/info.json17
-rw-r--r--keyboards/handwired/bento/keymaps/mac/keymap.c2
-rw-r--r--keyboards/handwired/bento/rev1/config.h7
-rw-r--r--keyboards/handwired/bento/rev1/info.json23
-rw-r--r--keyboards/handwired/bigmac/config.h7
-rw-r--r--keyboards/handwired/bigmac/info.json6
-rw-r--r--keyboards/handwired/bolek/config.h8
-rw-r--r--keyboards/handwired/bolek/info.json6
-rw-r--r--keyboards/handwired/boss566y/redragon_vara/config.h7
-rw-r--r--keyboards/handwired/boss566y/redragon_vara/info.json8
-rw-r--r--keyboards/handwired/brain/config.h6
-rw-r--r--keyboards/handwired/brain/info.json6
-rw-r--r--keyboards/handwired/bstk100/config.h8
-rw-r--r--keyboards/handwired/bstk100/info.json6
-rw-r--r--keyboards/handwired/cans12er/config.h8
-rw-r--r--keyboards/handwired/cans12er/info.json6
-rw-r--r--keyboards/handwired/carpolly/config.h7
-rw-r--r--keyboards/handwired/carpolly/info.json6
-rw-r--r--keyboards/handwired/chiron/config.h7
-rw-r--r--keyboards/handwired/chiron/info.json8
-rw-r--r--keyboards/handwired/ck4x4/config.h7
-rw-r--r--keyboards/handwired/ck4x4/info.json6
-rw-r--r--keyboards/handwired/cmd60/config.h8
-rw-r--r--keyboards/handwired/cmd60/info.json6
-rw-r--r--keyboards/handwired/co60/info.json6
-rw-r--r--keyboards/handwired/co60/keymaps/jmdaly_hhkb_split_space/keymap.c2
-rw-r--r--keyboards/handwired/co60/rev1/config.h8
-rw-r--r--keyboards/handwired/co60/rev1/info.json6
-rw-r--r--keyboards/handwired/co60/rev6/config.h7
-rw-r--r--keyboards/handwired/co60/rev6/info.json6
-rw-r--r--keyboards/handwired/co60/rev7/config.h8
-rw-r--r--keyboards/handwired/co60/rev7/info.json6
-rw-r--r--keyboards/handwired/colorlice/config.h8
-rw-r--r--keyboards/handwired/colorlice/info.json6
-rw-r--r--keyboards/handwired/concertina/64key/config.h8
-rw-r--r--keyboards/handwired/concertina/64key/info.json6
-rw-r--r--keyboards/handwired/consolekeyboard/18key/config.h6
-rw-r--r--keyboards/handwired/consolekeyboard/18key/info.json8
-rw-r--r--keyboards/handwired/consolekeyboard/20key/config.h6
-rw-r--r--keyboards/handwired/consolekeyboard/20key/info.json8
-rw-r--r--keyboards/handwired/consolekeyboard/27key/config.h6
-rw-r--r--keyboards/handwired/consolekeyboard/27key/info.json8
-rw-r--r--keyboards/handwired/consolekeyboard/30key/config.h6
-rw-r--r--keyboards/handwired/consolekeyboard/30key/info.json8
-rw-r--r--keyboards/handwired/croxsplit44/config.h6
-rw-r--r--keyboards/handwired/croxsplit44/info.json8
-rw-r--r--keyboards/handwired/croxsplit44/readme.md2
-rw-r--r--keyboards/handwired/curiosity/config.h8
-rw-r--r--keyboards/handwired/curiosity/info.json6
-rw-r--r--keyboards/handwired/cyberstar/config.h94
-rw-r--r--keyboards/handwired/cyberstar/cyberstar.c16
-rw-r--r--keyboards/handwired/cyberstar/cyberstar.h34
-rw-r--r--keyboards/handwired/cyberstar/halconf.h21
-rw-r--r--keyboards/handwired/cyberstar/info.json16
-rw-r--r--keyboards/handwired/cyberstar/keymaps/default/keymap.c32
-rw-r--r--keyboards/handwired/cyberstar/keymaps/default/readme.md1
-rw-r--r--keyboards/handwired/cyberstar/keymaps/via/keymap.c46
-rw-r--r--keyboards/handwired/cyberstar/keymaps/via/readme.md1
-rw-r--r--keyboards/handwired/cyberstar/keymaps/via/rules.mk1
-rw-r--r--keyboards/handwired/cyberstar/mcuconf.h22
-rw-r--r--keyboards/handwired/cyberstar/readme.md32
-rw-r--r--keyboards/handwired/cyberstar/rules.mk27
-rw-r--r--keyboards/handwired/d48/config.h8
-rw-r--r--keyboards/handwired/d48/info.json6
-rw-r--r--keyboards/handwired/d48/keymaps/anderson/keymap.c6
-rw-r--r--keyboards/handwired/dactyl/config.h7
-rw-r--r--keyboards/handwired/dactyl/info.json6
-rw-r--r--keyboards/handwired/dactyl/keymaps/dvorak/keymap.c4
-rw-r--r--keyboards/handwired/dactyl/keymaps/erincalling/keymap.c4
-rw-r--r--keyboards/handwired/dactyl/readme.md4
-rw-r--r--keyboards/handwired/dactyl_left/config.h8
-rw-r--r--keyboards/handwired/dactyl_left/info.json6
-rw-r--r--keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/3x5_3/config.h8
-rw-r--r--keyboards/handwired/dactyl_manuform/3x5_3/info.json8
-rw-r--r--keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/keymap.c2
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5/4x5.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5/config.h5
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5/info.json6
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/config.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/keymap.c4
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/keymap.c2
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5_5/4x5_5.h29
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5_5/config.h18
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5_5/info.json70
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5_5/keymaps/default/keymap.c155
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5_5/keymaps/ssedrick/keymap.c161
-rw-r--r--keyboards/handwired/dactyl_manuform/4x5_5/rules.mk21
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6/4x6.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6/config.h4
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6/info.json6
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/keymap.c2
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6_5/4x6_5.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6_5/config.h4
-rw-r--r--keyboards/handwired/dactyl_manuform/4x6_5/info.json6
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/5x6.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/config.h4
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/info.json8
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c2
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/rishka/keymap.c2
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/keymap.c2
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/squirrel/keymap.c8
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/swedish/keymap.c2
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6/keymaps/thattolleyguy/keymap.c4
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_2_5/config.h4
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_2_5/info.json8
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_5/5x6_5.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_5/config.h4
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_5/info.json8
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/keymap.c2
-rw-r--r--keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c4
-rw-r--r--keyboards/handwired/dactyl_manuform/5x7/5x7.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/5x7/config.h4
-rw-r--r--keyboards/handwired/dactyl_manuform/5x7/info.json8
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/6x6.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk1
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/config.h4
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/info.json8
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/keymaps/dumam/keymap.c2
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6/readme.md2
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_4/6x6_4.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_4/config.h4
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_4/info.json8
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_kinesis/6x6_kinesis.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_kinesis/config.h4
-rw-r--r--keyboards/handwired/dactyl_manuform/6x6_kinesis/info.json8
-rw-r--r--keyboards/handwired/dactyl_manuform/6x7/6x7.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/6x7/config.h4
-rw-r--r--keyboards/handwired/dactyl_manuform/6x7/info.json8
-rw-r--r--keyboards/handwired/dactyl_manuform/config.h4
-rw-r--r--keyboards/handwired/dactyl_manuform/dactyl_manuform.c1
-rw-r--r--keyboards/handwired/dactyl_manuform/dactyl_manuform.h31
-rw-r--r--keyboards/handwired/dactyl_manuform/dmote/62key/62key.h2
-rw-r--r--keyboards/handwired/dactyl_manuform/dmote/62key/config.h3
-rw-r--r--keyboards/handwired/dactyl_manuform/dmote/62key/info.json8
-rw-r--r--keyboards/handwired/dactyl_promicro/config.h7
-rw-r--r--keyboards/handwired/dactyl_promicro/info.json8
-rw-r--r--keyboards/handwired/dactyl_rah/config.h7
-rw-r--r--keyboards/handwired/dactyl_rah/info.json6
-rw-r--r--keyboards/handwired/dactyl_rah/keymaps/right/keymap.c2
-rw-r--r--keyboards/handwired/daishi/config.h8
-rw-r--r--keyboards/handwired/daishi/info.json6
-rw-r--r--keyboards/handwired/datahand/config.h8
-rw-r--r--keyboards/handwired/datahand/info.json8
-rw-r--r--keyboards/handwired/dc/mc/001/config.h8
-rw-r--r--keyboards/handwired/dc/mc/001/info.json8
-rw-r--r--keyboards/handwired/ddg_56/config.h7
-rw-r--r--keyboards/handwired/ddg_56/info.json8
-rw-r--r--keyboards/handwired/dqz11n1g/config.h51
-rw-r--r--keyboards/handwired/dqz11n1g/dqz11n1g.h51
-rw-r--r--keyboards/handwired/dqz11n1g/info.json147
-rw-r--r--keyboards/handwired/dqz11n1g/keymaps/default/keymap.c72
-rw-r--r--keyboards/handwired/dqz11n1g/keymaps/default/readme.md17
-rw-r--r--keyboards/handwired/dqz11n1g/matrix.c131
-rw-r--r--keyboards/handwired/dqz11n1g/readme.md80
-rw-r--r--keyboards/handwired/dqz11n1g/rules.mk24
-rw-r--r--keyboards/handwired/dygma/raise/ansi/info.json3
-rw-r--r--keyboards/handwired/dygma/raise/config.h7
-rw-r--r--keyboards/handwired/dygma/raise/info.json11
-rw-r--r--keyboards/handwired/dygma/raise/iso/info.json3
-rw-r--r--keyboards/handwired/dygma/raise/rules.mk1
-rw-r--r--keyboards/handwired/eagleii/config.h8
-rw-r--r--keyboards/handwired/eagleii/info.json8
-rw-r--r--keyboards/handwired/elrgo_s/config.h7
-rw-r--r--keyboards/handwired/elrgo_s/info.json6
-rw-r--r--keyboards/handwired/elrgo_s/keymaps/default/keymap.c2
-rw-r--r--keyboards/handwired/elrgo_s/readme.md2
-rw-r--r--keyboards/handwired/ergocheap/config.h8
-rw-r--r--keyboards/handwired/ergocheap/info.json6
-rw-r--r--keyboards/handwired/evk/v1_3/config.h8
-rw-r--r--keyboards/handwired/evk/v1_3/info.json8
-rw-r--r--keyboards/handwired/fc200rt_qmk/config.h8
-rw-r--r--keyboards/handwired/fc200rt_qmk/info.json6
-rw-r--r--keyboards/handwired/fivethirteen/config.h8
-rw-r--r--keyboards/handwired/fivethirteen/info.json6
-rw-r--r--keyboards/handwired/floorboard/config.h8
-rw-r--r--keyboards/handwired/floorboard/info.json6
-rw-r--r--keyboards/handwired/frankie_macropad/config.h8
-rw-r--r--keyboards/handwired/frankie_macropad/info.json6
-rw-r--r--keyboards/handwired/frenchdev/config.h7
-rw-r--r--keyboards/handwired/frenchdev/info.json7
-rw-r--r--keyboards/handwired/frenchdev/keymaps/default/keymap.c2
-rw-r--r--keyboards/handwired/freoduo/config.h7
-rw-r--r--keyboards/handwired/freoduo/info.json6
-rw-r--r--keyboards/handwired/fruity60/config.h8
-rw-r--r--keyboards/handwired/fruity60/info.json6
-rw-r--r--keyboards/handwired/gamenum/config.h8
-rw-r--r--keyboards/handwired/gamenum/info.json8
-rw-r--r--keyboards/handwired/hacked_motospeed/config.h8
-rw-r--r--keyboards/handwired/hacked_motospeed/info.json6
-rw-r--r--keyboards/handwired/heisenberg/config.h8
-rw-r--r--keyboards/handwired/heisenberg/info.json6
-rw-r--r--keyboards/handwired/heisenberg/keymaps/turkishish/keymap.c2
-rw-r--r--keyboards/handwired/hexon38/config.h8
-rw-r--r--keyboards/handwired/hexon38/info.json6
-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/info.json109
-rw-r--r--keyboards/handwired/hillside/0_1/keymaps/default/keymap.json101
-rw-r--r--keyboards/handwired/hillside/0_1/keymaps/default/readme.md212
-rwxr-xr-xkeyboards/handwired/hillside/0_1/keymaps/json2hill.py136
-rw-r--r--keyboards/handwired/hillside/0_1/keymaps/via/keymap.json61
-rw-r--r--keyboards/handwired/hillside/0_1/readme.md29
-rw-r--r--keyboards/handwired/hillside/46/46.c19
-rw-r--r--keyboards/handwired/hillside/46/46.h37
-rw-r--r--keyboards/handwired/hillside/46/config.h39
-rw-r--r--keyboards/handwired/hillside/46/info.json105
-rw-r--r--keyboards/handwired/hillside/46/keymaps/default/config.h9
-rw-r--r--keyboards/handwired/hillside/46/keymaps/default/keymap.json88
-rw-r--r--keyboards/handwired/hillside/46/keymaps/default/readme.md136
-rw-r--r--keyboards/handwired/hillside/46/keymaps/default/rules.mk1
-rw-r--r--keyboards/handwired/hillside/46/keymaps/default_dot_c/config.h9
-rw-r--r--keyboards/handwired/hillside/46/keymaps/default_dot_c/keymap.c64
-rw-r--r--keyboards/handwired/hillside/46/keymaps/default_dot_c/readme.md25
-rw-r--r--keyboards/handwired/hillside/46/keymaps/default_dot_c/rules.mk1
-rw-r--r--keyboards/handwired/hillside/46/keymaps/manna-harbour_miryoku/config.h38
-rw-r--r--keyboards/handwired/hillside/46/keymaps/manna-harbour_miryoku/keymap.c4
-rw-r--r--keyboards/handwired/hillside/46/keymaps/via/keymap.c64
-rw-r--r--keyboards/handwired/hillside/46/keymaps/via/rules.mk2
-rw-r--r--keyboards/handwired/hillside/46/readme.md29
-rw-r--r--keyboards/handwired/hillside/46/rules.mk (renamed from keyboards/handwired/hillside/0_1/rules.mk)0
-rw-r--r--keyboards/handwired/hillside/48/48.c4
-rw-r--r--keyboards/handwired/hillside/48/48.h34
-rw-r--r--keyboards/handwired/hillside/48/config.h (renamed from keyboards/handwired/hillside/0_1/config.h)0
-rw-r--r--keyboards/handwired/hillside/48/info.json109
-rw-r--r--keyboards/handwired/hillside/48/keymaps/default/config.h9
-rw-r--r--keyboards/handwired/hillside/48/keymaps/default/keymap.json88
-rw-r--r--keyboards/handwired/hillside/48/keymaps/default/readme.md159
-rw-r--r--keyboards/handwired/hillside/48/keymaps/default/rules.mk1
-rwxr-xr-xkeyboards/handwired/hillside/48/keymaps/json2hill48.py146
-rw-r--r--keyboards/handwired/hillside/48/keymaps/manna-harbour_miryoku/config.h38
-rw-r--r--keyboards/handwired/hillside/48/keymaps/manna-harbour_miryoku/keymap.c4
-rw-r--r--keyboards/handwired/hillside/48/keymaps/via/keymap.json61
-rw-r--r--keyboards/handwired/hillside/48/readme.md29
-rw-r--r--keyboards/handwired/hillside/48/rules.mk8
-rw-r--r--keyboards/handwired/hillside/52/52.c21
-rw-r--r--keyboards/handwired/hillside/52/52.h39
-rw-r--r--keyboards/handwired/hillside/52/config.h39
-rw-r--r--keyboards/handwired/hillside/52/info.json111
-rw-r--r--keyboards/handwired/hillside/52/keymaps/default/config.h9
-rw-r--r--keyboards/handwired/hillside/52/keymaps/default/keymap.json88
-rw-r--r--keyboards/handwired/hillside/52/keymaps/default/readme.md161
-rw-r--r--keyboards/handwired/hillside/52/keymaps/default/rules.mk1
-rw-r--r--keyboards/handwired/hillside/52/keymaps/default_dot_c/config.h9
-rw-r--r--keyboards/handwired/hillside/52/keymaps/default_dot_c/keymap.c64
-rw-r--r--keyboards/handwired/hillside/52/keymaps/default_dot_c/readme.md25
-rw-r--r--keyboards/handwired/hillside/52/keymaps/default_dot_c/rules.mk1
-rw-r--r--keyboards/handwired/hillside/52/keymaps/manna-harbour_miryoku/config.h38
-rw-r--r--keyboards/handwired/hillside/52/keymaps/manna-harbour_miryoku/keymap.c4
-rw-r--r--keyboards/handwired/hillside/52/keymaps/via/keymap.c64
-rw-r--r--keyboards/handwired/hillside/52/keymaps/via/rules.mk2
-rw-r--r--keyboards/handwired/hillside/52/readme.md29
-rw-r--r--keyboards/handwired/hillside/52/rules.mk8
-rw-r--r--keyboards/handwired/hillside/info.json6
-rw-r--r--keyboards/handwired/hillside/readme.md13
-rw-r--r--keyboards/handwired/hnah108/config.h8
-rw-r--r--keyboards/handwired/hnah108/info.json8
-rw-r--r--keyboards/handwired/hnah40/config.h8
-rw-r--r--keyboards/handwired/hnah40/info.json6
-rw-r--r--keyboards/handwired/hnah40rgb/config.h7
-rw-r--r--keyboards/handwired/hnah40rgb/info.json8
-rw-r--r--keyboards/handwired/ibm122m/config.h8
-rw-r--r--keyboards/handwired/ibm122m/info.json8
-rw-r--r--keyboards/handwired/ibm_wheelwriter/config.h7
-rw-r--r--keyboards/handwired/ibm_wheelwriter/info.json8
-rw-r--r--keyboards/handwired/jn68m/config.h8
-rw-r--r--keyboards/handwired/jn68m/info.json6
-rw-r--r--keyboards/handwired/jopr/config.h8
-rw-r--r--keyboards/handwired/jopr/info.json8
-rw-r--r--keyboards/handwired/jot50/config.h8
-rw-r--r--keyboards/handwired/jot50/info.json6
-rw-r--r--keyboards/handwired/jotanck/config.h8
-rw-r--r--keyboards/handwired/jotanck/info.json6
-rw-r--r--keyboards/handwired/jotpad16/config.h8
-rw-r--r--keyboards/handwired/jotpad16/info.json6
-rw-r--r--keyboards/handwired/jscotto/scotto36/info.json77
-rw-r--r--keyboards/handwired/jscotto/scotto36/keymaps/default/config.h24
-rw-r--r--keyboards/handwired/jscotto/scotto36/keymaps/default/keymap.c281
-rw-r--r--keyboards/handwired/jscotto/scotto36/keymaps/default/rules.mk4
-rw-r--r--keyboards/handwired/jscotto/scotto36/readme.md25
-rw-r--r--keyboards/handwired/jscotto/scotto36/rules.mk1
-rw-r--r--keyboards/handwired/jtallbean/split_65/config.h8
-rw-r--r--keyboards/handwired/jtallbean/split_65/info.json6
-rw-r--r--keyboards/handwired/juliet/config.h6
-rw-r--r--keyboards/handwired/juliet/info.json6
-rw-r--r--keyboards/handwired/k8split/config.h7
-rw-r--r--keyboards/handwired/k8split/info.json6
-rw-r--r--keyboards/handwired/k_numpad17/config.h7
-rw-r--r--keyboards/handwired/k_numpad17/info.json6
-rw-r--r--keyboards/handwired/kbod/config.h8
-rw-r--r--keyboards/handwired/kbod/info.json6
-rw-r--r--keyboards/handwired/kbod/keymaps/default/keymap.c2
-rw-r--r--keyboards/handwired/ks63/config.h7
-rw-r--r--keyboards/handwired/ks63/info.json8
-rw-r--r--keyboards/handwired/lagrange/config.h8
-rw-r--r--keyboards/handwired/lagrange/info.json6
-rw-r--r--keyboards/handwired/lagrange/keymaps/dpapavas/keymap.c2
-rw-r--r--keyboards/handwired/lagrange/readme.md2
-rw-r--r--keyboards/handwired/leftynumpad/config.h7
-rw-r--r--keyboards/handwired/leftynumpad/info.json6
-rw-r--r--keyboards/handwired/lemonpad/config.h8
-rw-r--r--keyboards/handwired/lemonpad/info.json6
-rw-r--r--keyboards/handwired/lemonpad/readme.md2
-rw-r--r--keyboards/handwired/lovelive9/config.h8
-rw-r--r--keyboards/handwired/lovelive9/info.json6
-rw-r--r--keyboards/handwired/m40/5x5_macropad/config.h8
-rw-r--r--keyboards/handwired/m40/5x5_macropad/info.json6
-rw-r--r--keyboards/handwired/m40/5x5_macropad/readme.md2
-rw-r--r--keyboards/handwired/macroboard/config.h7
-rw-r--r--keyboards/handwired/macroboard/f401/rules.mk1
-rw-r--r--keyboards/handwired/macroboard/f411/config.h1
-rw-r--r--keyboards/handwired/macroboard/f411/rules.mk1
-rw-r--r--keyboards/handwired/macroboard/info.json8
-rw-r--r--keyboards/handwired/macroboard/keymaps/via/keymap.c2
-rw-r--r--keyboards/handwired/macroboard/readme.md2
-rw-r--r--keyboards/handwired/magicforce61/config.h8
-rw-r--r--keyboards/handwired/magicforce61/info.json8
-rw-r--r--keyboards/handwired/magicforce68/config.h8
-rw-r--r--keyboards/handwired/magicforce68/info.json8
-rw-r--r--keyboards/handwired/marauder/config.h9
-rw-r--r--keyboards/handwired/marauder/info.json6
-rw-r--r--keyboards/handwired/mechboards_micropad/config.h8
-rw-r--r--keyboards/handwired/mechboards_micropad/info.json6
-rw-r--r--keyboards/handwired/meck_tkl/blackpill_f401/config.h2
-rw-r--r--keyboards/handwired/meck_tkl/blackpill_f401/rules.mk1
-rw-r--r--keyboards/handwired/meck_tkl/config.h7
-rw-r--r--keyboards/handwired/meck_tkl/info.json8
-rw-r--r--keyboards/handwired/meck_tkl/readme.md2
-rw-r--r--keyboards/handwired/minorca/config.h14
-rw-r--r--keyboards/handwired/minorca/info.json8
-rw-r--r--keyboards/handwired/minorca/keymaps/ridingqwerty/keymap.c2
-rw-r--r--keyboards/handwired/ms_sculpt_mobile/astar/config.h2
-rw-r--r--keyboards/handwired/ms_sculpt_mobile/astar/info.json3
-rw-r--r--keyboards/handwired/ms_sculpt_mobile/config.h6
-rw-r--r--keyboards/handwired/ms_sculpt_mobile/info.json7
-rw-r--r--keyboards/handwired/ms_sculpt_mobile/teensy2pp/config.h2
-rw-r--r--keyboards/handwired/ms_sculpt_mobile/teensy2pp/info.json3
-rw-r--r--keyboards/handwired/mutepad/config.h8
-rw-r--r--keyboards/handwired/mutepad/info.json6
-rw-r--r--keyboards/handwired/myskeeb/config.h7
-rw-r--r--keyboards/handwired/myskeeb/info.json8
-rw-r--r--keyboards/handwired/nicekey/config.h8
-rw-r--r--keyboards/handwired/nicekey/info.json8
-rw-r--r--keyboards/handwired/not_so_minidox/config.h7
-rw-r--r--keyboards/handwired/not_so_minidox/info.json6
-rw-r--r--keyboards/handwired/novem/config.h8
-rw-r--r--keyboards/handwired/novem/info.json6
-rw-r--r--keyboards/handwired/nozbe_macro/config.h8
-rw-r--r--keyboards/handwired/nozbe_macro/info.json8
-rw-r--r--keyboards/handwired/numpad20/config.h8
-rw-r--r--keyboards/handwired/numpad20/info.json8
-rw-r--r--keyboards/handwired/obuwunkunubi/spaget/config.h7
-rw-r--r--keyboards/handwired/obuwunkunubi/spaget/info.json6
-rw-r--r--keyboards/handwired/oem_ansi_fullsize/config.h8
-rw-r--r--keyboards/handwired/oem_ansi_fullsize/info.json6
-rw-r--r--keyboards/handwired/oem_iso_fullsize/config.h7
-rw-r--r--keyboards/handwired/oem_iso_fullsize/info.json8
-rw-r--r--keyboards/handwired/onekey/blackpill_f401/config.h3
-rw-r--r--keyboards/handwired/onekey/blackpill_f401/info.json3
-rw-r--r--keyboards/handwired/onekey/blackpill_f401/rules.mk1
-rw-r--r--keyboards/handwired/onekey/blackpill_f411/config.h3
-rw-r--r--keyboards/handwired/onekey/blackpill_f411/info.json3
-rw-r--r--keyboards/handwired/onekey/blackpill_f411/rules.mk1
-rwxr-xr-xkeyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h3
-rw-r--r--keyboards/handwired/onekey/blackpill_f411_tinyuf2/info.json3
-rwxr-xr-xkeyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk1
-rw-r--r--keyboards/handwired/onekey/bluepill/config.h3
-rw-r--r--keyboards/handwired/onekey/bluepill/info.json3
-rw-r--r--keyboards/handwired/onekey/bluepill_f103c6/board.h6
-rw-r--r--keyboards/handwired/onekey/bluepill_f103c6/config.h38
-rw-r--r--keyboards/handwired/onekey/bluepill_f103c6/halconf.h26
-rw-r--r--keyboards/handwired/onekey/bluepill_f103c6/info.json3
-rw-r--r--keyboards/handwired/onekey/bluepill_f103c6/mcuconf.h30
-rw-r--r--keyboards/handwired/onekey/bluepill_f103c6/readme.md7
-rw-r--r--keyboards/handwired/onekey/bluepill_f103c6/rules.mk27
-rw-r--r--keyboards/handwired/onekey/config.h7
-rw-r--r--keyboards/handwired/onekey/elite_c/config.h6
-rw-r--r--keyboards/handwired/onekey/elite_c/info.json3
-rw-r--r--keyboards/handwired/onekey/evb_wb32f3g71/config.h3
-rw-r--r--keyboards/handwired/onekey/evb_wb32f3g71/info.json3
-rw-r--r--keyboards/handwired/onekey/evb_wb32fq95/config.h3
-rw-r--r--keyboards/handwired/onekey/evb_wb32fq95/info.json3
-rw-r--r--keyboards/handwired/onekey/info.json7
-rw-r--r--keyboards/handwired/onekey/kb2040/config.h28
-rw-r--r--keyboards/handwired/onekey/kb2040/info.json3
-rw-r--r--keyboards/handwired/onekey/kb2040/mcuconf.h24
-rw-r--r--keyboards/handwired/onekey/kb2040/readme.md10
-rw-r--r--keyboards/handwired/onekey/kb2040/rules.mk9
-rw-r--r--keyboards/handwired/onekey/keymaps/chibios_waiting_test/config.h12
-rw-r--r--keyboards/handwired/onekey/keymaps/chibios_waiting_test/keymap.c47
-rw-r--r--keyboards/handwired/onekey/keymaps/reset/keymap.c2
-rw-r--r--keyboards/handwired/onekey/nucleo_l432kc/config.h3
-rw-r--r--keyboards/handwired/onekey/nucleo_l432kc/info.json3
-rw-r--r--keyboards/handwired/onekey/onekey.c11
-rw-r--r--keyboards/handwired/onekey/promicro/config.h6
-rw-r--r--keyboards/handwired/onekey/promicro/info.json3
-rw-r--r--keyboards/handwired/onekey/proton_c/config.h3
-rw-r--r--keyboards/handwired/onekey/proton_c/info.json3
-rw-r--r--keyboards/handwired/onekey/rp2040/config.h21
-rw-r--r--keyboards/handwired/onekey/rp2040/info.json3
-rw-r--r--keyboards/handwired/onekey/rp2040/readme.md12
-rw-r--r--keyboards/handwired/onekey/rp2040/rules.mk3
-rw-r--r--keyboards/handwired/onekey/sipeed_longan_nano/config.h1
-rw-r--r--keyboards/handwired/onekey/sipeed_longan_nano/info.json3
-rw-r--r--keyboards/handwired/onekey/stm32f0_disco/config.h3
-rw-r--r--keyboards/handwired/onekey/stm32f0_disco/info.json3
-rw-r--r--keyboards/handwired/onekey/stm32f405_feather/config.h3
-rw-r--r--keyboards/handwired/onekey/stm32f405_feather/info.json3
-rw-r--r--keyboards/handwired/onekey/teensy_2/config.h6
-rw-r--r--keyboards/handwired/onekey/teensy_2/info.json3
-rw-r--r--keyboards/handwired/onekey/teensy_2pp/config.h6
-rw-r--r--keyboards/handwired/onekey/teensy_2pp/info.json3
-rw-r--r--keyboards/handwired/onekey/teensy_32/config.h3
-rw-r--r--keyboards/handwired/onekey/teensy_32/info.json3
-rw-r--r--keyboards/handwired/onekey/teensy_35/chconf.h28
-rw-r--r--keyboards/handwired/onekey/teensy_35/config.h29
-rw-r--r--keyboards/handwired/onekey/teensy_35/halconf.h28
-rw-r--r--keyboards/handwired/onekey/teensy_35/info.json3
-rw-r--r--keyboards/handwired/onekey/teensy_35/mcuconf.h50
-rw-r--r--keyboards/handwired/onekey/teensy_35/rules.mk8
-rw-r--r--keyboards/handwired/onekey/teensy_lc/config.h3
-rw-r--r--keyboards/handwired/onekey/teensy_lc/info.json3
-rw-r--r--keyboards/handwired/onekey/teensy_lc/readme.md8
-rw-r--r--keyboards/handwired/ortho5x13/config.h8
-rw-r--r--keyboards/handwired/ortho5x13/info.json8
-rw-r--r--keyboards/handwired/ortho5x13/keymaps/default/keymap.c14
-rw-r--r--keyboards/handwired/ortho5x14/config.h8
-rw-r--r--keyboards/handwired/ortho5x14/info.json8
-rw-r--r--keyboards/handwired/ortho5x14/keymaps/2u/keymap.c12
-rw-r--r--keyboards/handwired/ortho5x14/keymaps/split1/keymap.c10
-rw-r--r--keyboards/handwired/ortho_brass/config.h9
-rw-r--r--keyboards/handwired/ortho_brass/info.json6
-rw-r--r--keyboards/handwired/ortho_brass/keymaps/default/keymap.c2
-rw-r--r--keyboards/handwired/owlet60/config.h7
-rw-r--r--keyboards/handwired/owlet60/info.json6
-rw-r--r--keyboards/handwired/p65rgb/config.h8
-rw-r--r--keyboards/handwired/p65rgb/info.json6
-rw-r--r--keyboards/handwired/pilcrow/config.h8
-rw-r--r--keyboards/handwired/pilcrow/info.json6
-rw-r--r--keyboards/handwired/pill60/blackpill_f401/config.h2
-rw-r--r--keyboards/handwired/pill60/blackpill_f401/rules.mk1
-rw-r--r--keyboards/handwired/pill60/blackpill_f411/config.h3
-rw-r--r--keyboards/handwired/pill60/blackpill_f411/rules.mk1
-rw-r--r--keyboards/handwired/pill60/bluepill/config.h2
-rw-r--r--keyboards/handwired/pill60/config.h7
-rw-r--r--keyboards/handwired/pill60/info.json6
-rw-r--r--keyboards/handwired/postageboard/info.json5
-rw-r--r--keyboards/handwired/postageboard/mini/config.h8
-rw-r--r--keyboards/handwired/postageboard/mini/info.json5
-rw-r--r--keyboards/handwired/postageboard/r1/config.h8
-rw-r--r--keyboards/handwired/postageboard/r1/info.json5
-rw-r--r--keyboards/handwired/prime_exl/config.h8
-rw-r--r--keyboards/handwired/prime_exl/info.json6
-rw-r--r--keyboards/handwired/prime_exl/keymaps/via/keymap.c2
-rw-r--r--keyboards/handwired/prime_exl_plus/config.h8
-rw-r--r--keyboards/handwired/prime_exl_plus/info.json6
-rw-r--r--keyboards/handwired/prkl30/feather/config.h8
-rw-r--r--keyboards/handwired/prkl30/info.json8
-rw-r--r--keyboards/handwired/prkl30/keymaps/erkhal/keymap.c4
-rw-r--r--keyboards/handwired/prkl30/promicro/config.h8
-rw-r--r--keyboards/handwired/promethium/config.h11
-rw-r--r--keyboards/handwired/promethium/info.json8
-rw-r--r--keyboards/handwired/promethium/keymaps/default/config.h6
-rw-r--r--keyboards/handwired/promethium/keymaps/default/keymap.c6
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/config.h6
-rw-r--r--keyboards/handwired/promethium/keymaps/priyadi/keymap.c10
-rw-r--r--keyboards/handwired/pterodactyl/config.h7
-rw-r--r--keyboards/handwired/pterodactyl/info.json6
-rw-r--r--keyboards/handwired/pteron/config.h8
-rw-r--r--keyboards/handwired/pteron/info.json8
-rw-r--r--keyboards/handwired/pteron/keymaps/FSund/keymap.c2
-rw-r--r--keyboards/handwired/pteron/keymaps/alzafacon/keymap.c2
-rw-r--r--keyboards/handwired/pteron38/config.h8
-rw-r--r--keyboards/handwired/pteron38/info.json8
-rw-r--r--keyboards/handwired/pteron44/config.h8
-rw-r--r--keyboards/handwired/pteron44/info.json8
-rw-r--r--keyboards/handwired/qc60/config.h7
-rw-r--r--keyboards/handwired/qc60/info.json6
-rw-r--r--keyboards/handwired/qc60/keymaps/wntrmln/keymap.c2
-rw-r--r--keyboards/handwired/reclined/info.json2
-rw-r--r--keyboards/handwired/retro_refit/config.h8
-rw-r--r--keyboards/handwired/retro_refit/info.json8
-rw-r--r--keyboards/handwired/riblee_f401/config.h7
-rw-r--r--keyboards/handwired/riblee_f401/info.json8
-rw-r--r--keyboards/handwired/riblee_f401/keymaps/default/keymap.c2
-rw-r--r--keyboards/handwired/riblee_f401/rules.mk1
-rw-r--r--keyboards/handwired/riblee_f411/config.h7
-rw-r--r--keyboards/handwired/riblee_f411/info.json8
-rw-r--r--keyboards/handwired/riblee_f411/keymaps/default/keymap.c2
-rw-r--r--keyboards/handwired/riblee_f411/rules.mk1
-rw-r--r--keyboards/handwired/rs60/config.h8
-rw-r--r--keyboards/handwired/rs60/info.json6
-rw-r--r--keyboards/handwired/rs60/keymaps/default/keymap.c2
-rw-r--r--keyboards/handwired/selene/config.h7
-rw-r--r--keyboards/handwired/selene/info.json6
-rw-r--r--keyboards/handwired/sick68/config.h8
-rw-r--r--keyboards/handwired/sick68/info.json6
-rw-r--r--keyboards/handwired/sick_pad/config.h8
-rw-r--r--keyboards/handwired/sick_pad/info.json8
-rw-r--r--keyboards/handwired/skakunm_dactyl/config.h60
-rw-r--r--keyboards/handwired/skakunm_dactyl/info.json57
-rw-r--r--keyboards/handwired/skakunm_dactyl/keymaps/default/keymap.c41
-rw-r--r--keyboards/handwired/skakunm_dactyl/readme.md15
-rw-r--r--keyboards/handwired/skakunm_dactyl/rules.mk20
-rw-r--r--keyboards/handwired/skakunm_dactyl/skakunm_dactyl.c4
-rw-r--r--keyboards/handwired/skakunm_dactyl/skakunm_dactyl.h25
-rw-r--r--keyboards/handwired/slash/config.h8
-rw-r--r--keyboards/handwired/slash/info.json8
-rw-r--r--keyboards/handwired/snatchpad/config.h8
-rw-r--r--keyboards/handwired/snatchpad/info.json6
-rw-r--r--keyboards/handwired/snatchpad/readme.md2
-rw-r--r--keyboards/handwired/sono1/config.h7
-rw-r--r--keyboards/handwired/sono1/info.json7
-rw-r--r--keyboards/handwired/sono1/stm32f103/config.h4
-rw-r--r--keyboards/handwired/sono1/stm32f103/info.json5
-rw-r--r--keyboards/handwired/sono1/t2pp/config.h4
-rw-r--r--keyboards/handwired/sono1/t2pp/info.json5
-rw-r--r--keyboards/handwired/space_oddity/config.h8
-rw-r--r--keyboards/handwired/space_oddity/info.json6
-rw-r--r--keyboards/handwired/split65/info.json6
-rw-r--r--keyboards/handwired/split65/promicro/config.h7
-rw-r--r--keyboards/handwired/split65/stm32/config.h7
-rw-r--r--keyboards/handwired/split89/config.h7
-rw-r--r--keyboards/handwired/split89/info.json8
-rw-r--r--keyboards/handwired/splittest/bluepill/config.h16
-rw-r--r--keyboards/handwired/splittest/bluepill/halconf.h11
-rw-r--r--keyboards/handwired/splittest/bluepill/mcuconf.h14
-rw-r--r--keyboards/handwired/splittest/bluepill/post_config.h43
-rw-r--r--keyboards/handwired/splittest/bluepill/readme.md65
-rw-r--r--keyboards/handwired/splittest/bluepill/rules.mk8
-rw-r--r--keyboards/handwired/splittest/config.h7
-rw-r--r--keyboards/handwired/splittest/info.json6
-rw-r--r--keyboards/handwired/splittest/keymaps/bitbang/config.h16
-rw-r--r--keyboards/handwired/splittest/keymaps/bitbang/keymap.c14
-rw-r--r--keyboards/handwired/splittest/keymaps/bitbang/rules.mk1
-rw-r--r--keyboards/handwired/splittest/keymaps/default/keymap.c5
-rw-r--r--keyboards/handwired/splittest/keymaps/rgb/keymap.c8
-rw-r--r--keyboards/handwired/splittest/keymaps/rgb/rules.mk1
-rw-r--r--keyboards/handwired/splittest/keymaps/serial_fullduplex/config.h6
-rw-r--r--keyboards/handwired/splittest/keymaps/serial_fullduplex/halconf.h8
-rw-r--r--keyboards/handwired/splittest/keymaps/serial_fullduplex/keymap.c14
-rw-r--r--keyboards/handwired/splittest/keymaps/serial_fullduplex/rules.mk1
-rw-r--r--keyboards/handwired/splittest/keymaps/serial_halfduplex/config.h6
-rw-r--r--keyboards/handwired/splittest/keymaps/serial_halfduplex/halconf.h8
-rw-r--r--keyboards/handwired/splittest/keymaps/serial_halfduplex/keymap.c16
-rw-r--r--keyboards/handwired/splittest/keymaps/serial_halfduplex/rules.mk1
-rw-r--r--keyboards/handwired/splittest/rules.mk7
-rw-r--r--keyboards/handwired/steamvan/info.json22
-rw-r--r--keyboards/handwired/steamvan/keymaps/jmdaly/keymap.c2
-rw-r--r--keyboards/handwired/steamvan/rev1/config.h8
-rw-r--r--keyboards/handwired/steamvan/rev1/info.json28
-rw-r--r--keyboards/handwired/stef9998/split_5x7/config.h20
-rw-r--r--keyboards/handwired/stef9998/split_5x7/info.json97
-rw-r--r--keyboards/handwired/stef9998/split_5x7/keymaps/default/config.h28
-rw-r--r--keyboards/handwired/stef9998/split_5x7/keymaps/default/keymap.c96
-rw-r--r--keyboards/handwired/stef9998/split_5x7/keymaps/default/readme.md7
-rw-r--r--keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/config.h34
-rw-r--r--keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/keymap.c188
-rw-r--r--keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/readme.md4
-rw-r--r--keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/rules.mk2
-rw-r--r--keyboards/handwired/stef9998/split_5x7/readme.md26
-rw-r--r--keyboards/handwired/stef9998/split_5x7/rev1/config.h58
-rw-r--r--keyboards/handwired/stef9998/split_5x7/rev1/rev1.c17
-rw-r--r--keyboards/handwired/stef9998/split_5x7/rev1/rev1.h40
-rw-r--r--keyboards/handwired/stef9998/split_5x7/rev1/rules.mk4
-rw-r--r--keyboards/handwired/stef9998/split_5x7/rules.mk22
-rw-r--r--keyboards/handwired/stef9998/split_5x7/split_5x7.c33
-rw-r--r--keyboards/handwired/stef9998/split_5x7/split_5x7.h23
-rw-r--r--keyboards/handwired/sticc14/config.h8
-rw-r--r--keyboards/handwired/sticc14/info.json6
-rw-r--r--keyboards/handwired/stream_cheap/2x3/config.h7
-rw-r--r--keyboards/handwired/stream_cheap/2x3/info.json8
-rw-r--r--keyboards/handwired/stream_cheap/2x4/config.h7
-rw-r--r--keyboards/handwired/stream_cheap/2x4/info.json8
-rw-r--r--keyboards/handwired/stream_cheap/2x5/config.h7
-rw-r--r--keyboards/handwired/stream_cheap/2x5/info.json8
-rw-r--r--keyboards/handwired/swiftrax/astro65/config.h6
-rw-r--r--keyboards/handwired/swiftrax/astro65/info.json6
-rw-r--r--keyboards/handwired/swiftrax/bebol/config.h6
-rw-r--r--keyboards/handwired/swiftrax/bebol/info.json6
-rw-r--r--keyboards/handwired/swiftrax/beegboy/config.h7
-rw-r--r--keyboards/handwired/swiftrax/beegboy/info.json6
-rw-r--r--keyboards/handwired/swiftrax/bumblebee/bumblebee.h2
-rw-r--r--keyboards/handwired/swiftrax/bumblebee/config.h6
-rw-r--r--keyboards/handwired/swiftrax/bumblebee/info.json6
-rw-r--r--keyboards/handwired/swiftrax/bumblebee/readme.md2
-rw-r--r--keyboards/handwired/swiftrax/cowfish/config.h7
-rw-r--r--keyboards/handwired/swiftrax/cowfish/info.json6
-rw-r--r--keyboards/handwired/swiftrax/digicarp65/config.h6
-rw-r--r--keyboards/handwired/swiftrax/digicarp65/info.json8
-rw-r--r--keyboards/handwired/swiftrax/digicarp65/readme.md4
-rw-r--r--keyboards/handwired/swiftrax/digicarpice/config.h6
-rw-r--r--keyboards/handwired/swiftrax/digicarpice/info.json6
-rw-r--r--keyboards/handwired/swiftrax/digicarpice/readme.md2
-rw-r--r--keyboards/handwired/swiftrax/equator/config.h6
-rw-r--r--keyboards/handwired/swiftrax/equator/info.json6
-rw-r--r--keyboards/handwired/swiftrax/glacier/config.h17
-rw-r--r--keyboards/handwired/swiftrax/glacier/info.json6
-rw-r--r--keyboards/handwired/swiftrax/glacier/readme.md2
-rw-r--r--keyboards/handwired/swiftrax/joypad/config.h7
-rw-r--r--keyboards/handwired/swiftrax/joypad/info.json6
-rw-r--r--keyboards/handwired/swiftrax/koalafications/config.h6
-rw-r--r--keyboards/handwired/swiftrax/koalafications/info.json6
-rw-r--r--keyboards/handwired/swiftrax/nodu/config.h6
-rw-r--r--keyboards/handwired/swiftrax/nodu/info.json6
-rw-r--r--keyboards/handwired/swiftrax/pandamic/config.h7
-rw-r--r--keyboards/handwired/swiftrax/pandamic/info.json6
-rw-r--r--keyboards/handwired/swiftrax/the_galleon/config.h7
-rw-r--r--keyboards/handwired/swiftrax/the_galleon/info.json6
-rw-r--r--keyboards/handwired/swiftrax/unsplit/config.h7
-rw-r--r--keyboards/handwired/swiftrax/unsplit/info.json6
-rw-r--r--keyboards/handwired/swiftrax/walter/config.h6
-rw-r--r--keyboards/handwired/swiftrax/walter/info.json8
-rw-r--r--keyboards/handwired/symmetric70_proto/info.json7
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/config.h8
-rw-r--r--keyboards/handwired/symmetric70_proto/promicro/info.json3
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/config.h8
-rw-r--r--keyboards/handwired/symmetric70_proto/proton_c/info.json3
-rw-r--r--keyboards/handwired/symmetry60/config.h8
-rw-r--r--keyboards/handwired/symmetry60/info.json6
-rw-r--r--keyboards/handwired/t111/config.h8
-rw-r--r--keyboards/handwired/t111/info.json8
-rw-r--r--keyboards/handwired/tennie/config.h8
-rw-r--r--keyboards/handwired/tennie/info.json6
-rw-r--r--keyboards/handwired/terminus_mini/config.h8
-rw-r--r--keyboards/handwired/terminus_mini/info.json8
-rw-r--r--keyboards/handwired/terminus_mini/keymaps/default/keymap.c2
-rw-r--r--keyboards/handwired/trackpoint/config.h7
-rw-r--r--keyboards/handwired/trackpoint/info.json8
-rw-r--r--keyboards/handwired/tractyl_manuform/4x6_right/config.h8
-rw-r--r--keyboards/handwired/tractyl_manuform/4x6_right/info.json40
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/config.h3
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h6
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/elite_c/info.json3
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h10
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f303/info.json3
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h12
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c2
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f411/info.json3
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md2
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk1
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/info.json5
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h9
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c20
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/config.h6
-rw-r--r--keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/info.json3
-rw-r--r--keyboards/handwired/tractyl_manuform/config.h3
-rw-r--r--keyboards/handwired/tractyl_manuform/info.json5
-rw-r--r--keyboards/handwired/tractyl_manuform/readme.md2
-rw-r--r--keyboards/handwired/tractyl_manuform/tractyl_manuform.c27
-rw-r--r--keyboards/handwired/traveller/config.h8
-rw-r--r--keyboards/handwired/traveller/info.json6
-rw-r--r--keyboards/handwired/traveller/keymaps/default/keymap.c2
-rw-r--r--keyboards/handwired/tritium_numpad/config.h8
-rw-r--r--keyboards/handwired/tritium_numpad/info.json8
-rw-r--r--keyboards/handwired/tritium_numpad/keymaps/blu/keymap.c2
-rw-r--r--keyboards/handwired/tritium_numpad/keymaps/max/keymap.c2
-rw-r--r--keyboards/handwired/twadlee/tp69/config.h8
-rw-r--r--keyboards/handwired/twadlee/tp69/info.json8
-rw-r--r--keyboards/handwired/unicomp_mini_m/config.h8
-rw-r--r--keyboards/handwired/unicomp_mini_m/info.json8
-rw-r--r--keyboards/handwired/unk/info.json90
-rw-r--r--keyboards/handwired/unk/rev1/config.h7
-rw-r--r--keyboards/handwired/unk/rev1/info.json96
-rw-r--r--keyboards/handwired/uthol/config.h4
-rw-r--r--keyboards/handwired/uthol/info.json6
-rw-r--r--keyboards/handwired/uthol/keymaps/numswap/keymap.c2
-rw-r--r--keyboards/handwired/uthol/keymaps/oled/keymap.c2
-rw-r--r--keyboards/handwired/uthol/rev1/config.h5
-rw-r--r--keyboards/handwired/uthol/rev1/info.json6
-rw-r--r--keyboards/handwired/uthol/rev2/config.h5
-rw-r--r--keyboards/handwired/uthol/rev2/info.json6
-rw-r--r--keyboards/handwired/uthol/rev3/config.h6
-rw-r--r--keyboards/handwired/uthol/rev3/info.json6
-rw-r--r--keyboards/handwired/uthol/rev3/rules.mk1
-rw-r--r--keyboards/handwired/videowriter/config.h8
-rw-r--r--keyboards/handwired/videowriter/info.json8
-rw-r--r--keyboards/handwired/videowriter/keymaps/oleg/keymap.c2
-rw-r--r--keyboards/handwired/wabi/config.h9
-rw-r--r--keyboards/handwired/wabi/info.json6
-rw-r--r--keyboards/handwired/wabi/keymaps/rossman360/keymap.c2
-rw-r--r--keyboards/handwired/wakizashi40/readme.md2
-rw-r--r--keyboards/handwired/woodpad/config.h8
-rw-r--r--keyboards/handwired/woodpad/info.json6
-rw-r--r--keyboards/handwired/wulkan/config.h7
-rw-r--r--keyboards/handwired/wulkan/info.json8
-rw-r--r--keyboards/handwired/xealous/config.h1
-rw-r--r--keyboards/handwired/xealous/info.json83
-rw-r--r--keyboards/handwired/xealous/rev1/config.h7
-rw-r--r--keyboards/handwired/xealous/rev1/info.json89
-rw-r--r--keyboards/handwired/xealousbrown/config.h8
-rw-r--r--keyboards/handwired/xealousbrown/info.json8
-rw-r--r--keyboards/handwired/z150/config.h7
-rw-r--r--keyboards/handwired/z150/info.json8
-rw-r--r--keyboards/handwired/z150/keymaps/zyxx/keymap.c2
-rw-r--r--keyboards/handwired/zergo/config.h8
-rw-r--r--keyboards/handwired/zergo/info.json8
-rw-r--r--keyboards/hardlineworks/otd_plus/config.h8
-rw-r--r--keyboards/hardlineworks/otd_plus/info.json6
-rw-r--r--keyboards/heliar/wm1_hotswap/config.h7
-rw-r--r--keyboards/heliar/wm1_hotswap/info.json8
-rw-r--r--keyboards/helix/pico/config.h7
-rw-r--r--keyboards/helix/pico/info.json6
-rw-r--r--keyboards/helix/pico/keymaps/biacco/keymap.c2
-rw-r--r--keyboards/helix/pico/keymaps/mtei/config.h2
-rw-r--r--keyboards/helix/pico/keymaps/mtei/keymap.c4
-rw-r--r--keyboards/helix/rev2/config.h7
-rw-r--r--keyboards/helix/rev2/info.json8
-rw-r--r--keyboards/helix/rev2/keymaps/default/oled_display.c2
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/keymap.c4
-rw-r--r--keyboards/helix/rev2/keymaps/edvorakjp/oled.c2
-rw-r--r--keyboards/helix/rev2/keymaps/five_rows/config.h2
-rw-r--r--keyboards/helix/rev2/keymaps/five_rows/keymap.c6
-rw-r--r--keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c2
-rw-r--r--keyboards/helix/rev2/keymaps/fraanrosi/keymap.c2
-rw-r--r--keyboards/helix/rev2/keymaps/froggy/keymap.c2
-rw-r--r--keyboards/helix/rev2/keymaps/froggy_106/keymap.c2
-rw-r--r--keyboards/helix/rev2/keymaps/yshrsmz/keymap.c4
-rw-r--r--keyboards/helix/rev3_4rows/config.h8
-rw-r--r--keyboards/helix/rev3_4rows/info.json6
-rw-r--r--keyboards/helix/rev3_5rows/config.h8
-rw-r--r--keyboards/helix/rev3_5rows/info.json6
-rw-r--r--keyboards/helix/rev3_5rows/keymaps/five_rows/config.h2
-rw-r--r--keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c6
-rw-r--r--keyboards/hhkb/ansi/32u2/rules.mk5
-rw-r--r--keyboards/hhkb/ansi/config.h7
-rw-r--r--keyboards/hhkb/ansi/hhkb_avr.h54
-rw-r--r--keyboards/hhkb/ansi/info.json8
-rw-r--r--keyboards/hhkb/ansi/keymaps/cinaeco/keymap.c2
-rw-r--r--keyboards/hhkb/ansi/keymaps/tominabox1/keymap.c2
-rw-r--r--keyboards/hhkb/ansi/keymaps/xyverz/keymap.c2
-rw-r--r--keyboards/hhkb/ansi/rules.mk4
-rw-r--r--keyboards/hhkb/jp/config.h7
-rw-r--r--keyboards/hhkb/jp/info.json8
-rw-r--r--keyboards/hhkb/serial.h (renamed from tmk_core/protocol/serial.h)0
-rw-r--r--keyboards/hhkb/serial_uart.c (renamed from tmk_core/protocol/serial_uart.c)0
-rw-r--r--keyboards/hhkb/yang/config.h123
-rw-r--r--keyboards/hhkb/yang/info.json77
-rw-r--r--keyboards/hhkb/yang/keymaps/default/keymap.c73
-rw-r--r--keyboards/hhkb/yang/keymaps/kanru/config.h21
-rw-r--r--keyboards/hhkb/yang/keymaps/kanru/keymap.c126
-rw-r--r--keyboards/hhkb/yang/matrix.c173
-rw-r--r--keyboards/hhkb/yang/memo.md135
-rw-r--r--keyboards/hhkb/yang/readme.md118
-rw-r--r--keyboards/hhkb/yang/rules.mk27
-rw-r--r--keyboards/hhkb/yang/yang.c118
-rw-r--r--keyboards/hhkb/yang/yang.h36
-rw-r--r--keyboards/hhkb_lite_2/config.h8
-rw-r--r--keyboards/hhkb_lite_2/info.json6
-rw-r--r--keyboards/hidtech/bastyl/config.h5
-rw-r--r--keyboards/hidtech/bastyl/info.json6
-rw-r--r--keyboards/hidtech/bastyl/keymaps/german_gaming/keymap.c4
-rw-r--r--keyboards/hidtech/bastyl/keymaps/nstickney/keymap.c2
-rw-r--r--keyboards/hidtech/bastyl/keymaps/xyverz/keymap.c6
-rw-r--r--keyboards/hifumi/config.h8
-rw-r--r--keyboards/hifumi/info.json6
-rw-r--r--keyboards/hineybush/h08_ocelot/config.h8
-rw-r--r--keyboards/hineybush/h08_ocelot/info.json6
-rw-r--r--keyboards/hineybush/h08_ocelot/readme.md2
-rw-r--r--keyboards/hineybush/h10/config.h8
-rw-r--r--keyboards/hineybush/h10/info.json6
-rw-r--r--keyboards/hineybush/h60/config.h8
-rw-r--r--keyboards/hineybush/h60/info.json6
-rw-r--r--keyboards/hineybush/h60/keymaps/kei/keymap.c2
-rw-r--r--keyboards/hineybush/h65/config.h8
-rw-r--r--keyboards/hineybush/h65/info.json6
-rw-r--r--keyboards/hineybush/h65/readme.md2
-rw-r--r--keyboards/hineybush/h65_hotswap/config.h8
-rw-r--r--keyboards/hineybush/h65_hotswap/info.json6
-rw-r--r--keyboards/hineybush/h65_hotswap/readme.md2
-rw-r--r--keyboards/hineybush/h660s/config.h8
-rw-r--r--keyboards/hineybush/h660s/info.json8
-rw-r--r--keyboards/hineybush/h75_singa/config.h8
-rw-r--r--keyboards/hineybush/h75_singa/info.json6
-rw-r--r--keyboards/hineybush/h75_singa/keymaps/wkl_std/keymap.c2
-rw-r--r--keyboards/hineybush/h87a/config.h8
-rw-r--r--keyboards/hineybush/h87a/info.json6
-rw-r--r--keyboards/hineybush/h87a/keymaps/gam3cat/keymap.c4
-rw-r--r--keyboards/hineybush/h87a/keymaps/peott-fr/keymap.c2
-rw-r--r--keyboards/hineybush/h88/config.h10
-rw-r--r--keyboards/hineybush/h88/info.json8
-rw-r--r--keyboards/hineybush/hbcp/config.h8
-rw-r--r--keyboards/hineybush/hbcp/info.json6
-rw-r--r--keyboards/hineybush/hbcp/keymaps/hiney/keymap.c2
-rw-r--r--keyboards/hineybush/hineyg80/config.h8
-rw-r--r--keyboards/hineybush/hineyg80/info.json8
-rw-r--r--keyboards/hineybush/ibis/readme.md2
-rw-r--r--keyboards/hineybush/physix/config.h8
-rw-r--r--keyboards/hineybush/physix/info.json8
-rw-r--r--keyboards/hineybush/sm68/config.h8
-rw-r--r--keyboards/hineybush/sm68/info.json6
-rw-r--r--keyboards/hnahkb/freyr/config.h8
-rw-r--r--keyboards/hnahkb/freyr/info.json8
-rw-r--r--keyboards/hnahkb/stella/config.h8
-rw-r--r--keyboards/hnahkb/stella/info.json6
-rw-r--r--keyboards/hnahkb/vn66/config.h8
-rw-r--r--keyboards/hnahkb/vn66/info.json8
-rw-r--r--keyboards/holyswitch/southpaw75/config.h7
-rw-r--r--keyboards/holyswitch/southpaw75/info.json8
-rw-r--r--keyboards/horizon/config.h8
-rw-r--r--keyboards/horizon/info.json6
-rw-r--r--keyboards/horizon/readme.md2
-rw-r--r--keyboards/horrortroll/chinese_pcb/black_e65/config.h10
-rw-r--r--keyboards/horrortroll/chinese_pcb/black_e65/info.json8
-rw-r--r--keyboards/horrortroll/chinese_pcb/black_e65/readme.md2
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/config.h10
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/info.json6
-rw-r--r--keyboards/horrortroll/chinese_pcb/devil68_pro/readme.md2
-rw-r--r--keyboards/horrortroll/handwired_k552/config.h10
-rw-r--r--keyboards/horrortroll/handwired_k552/info.json8
-rw-r--r--keyboards/horrortroll/handwired_k552/readme.md2
-rw-r--r--keyboards/horrortroll/lemon40/config.h10
-rw-r--r--keyboards/horrortroll/lemon40/info.json6
-rw-r--r--keyboards/horrortroll/lemon40/readme.md2
-rw-r--r--keyboards/horrortroll/paws60/config.h10
-rw-r--r--keyboards/horrortroll/paws60/info.json6
-rw-r--r--keyboards/horrortroll/paws60/readme.md2
-rw-r--r--keyboards/hotdox/config.h9
-rw-r--r--keyboards/hotdox/info.json8
-rw-r--r--keyboards/hotdox/keymaps/default/keymap.c2
-rw-r--r--keyboards/hotdox/keymaps/eozaki/keymap.c2
-rw-r--r--keyboards/hotdox/keymaps/imchipwood/keymap.c4
-rw-r--r--keyboards/hotdox/keymaps/kloki/keymap.c2
-rw-r--r--keyboards/hotdox/keymaps/ninjonas/keymap.c2
-rw-r--r--keyboards/hp69/config.h7
-rw-r--r--keyboards/hp69/info.json6
-rw-r--r--keyboards/hs60/v1/config.h8
-rw-r--r--keyboards/hs60/v1/info.json6
-rw-r--r--keyboards/hs60/v2/ansi/config.h7
-rw-r--r--keyboards/hs60/v2/ansi/info.json10
-rw-r--r--keyboards/hs60/v2/ansi/keymaps/stanrc85/keymap.c2
-rw-r--r--keyboards/hs60/v2/hhkb/config.h7
-rw-r--r--keyboards/hs60/v2/hhkb/info.json10
-rw-r--r--keyboards/hs60/v2/hhkb/keymaps/goatmaster/keymap.c2
-rw-r--r--keyboards/hs60/v2/iso/config.h7
-rw-r--r--keyboards/hs60/v2/iso/info.json10
-rw-r--r--keyboards/hs60/v2/iso/keymaps/iso_andys8/keymap.c4
-rw-r--r--keyboards/hs60/v2/iso/keymaps/win_osx_dual/keymap.c2
-rwxr-xr-xkeyboards/hub16/config.h7
-rw-r--r--keyboards/hub16/info.json6
-rw-r--r--keyboards/hub16/keymaps/ahk_companion/keymap.c4
-rwxr-xr-xkeyboards/hub16/keymaps/macro/keymap.c2
-rw-r--r--keyboards/hub16/keymaps/peepeetee/keymap.c8
-rw-r--r--keyboards/hub20/config.h7
-rw-r--r--keyboards/hub20/info.json6
-rw-r--r--keyboards/hub20/keymaps/left_hand_numpad/keymap.c2
-rw-r--r--keyboards/hub20/keymaps/macro/keymap.c2
-rw-r--r--keyboards/hub20/keymaps/right_hand_numpad/keymap.c2
-rw-r--r--keyboards/ianklug/grooveboard/config.h10
-rw-r--r--keyboards/ianklug/grooveboard/info.json6
-rw-r--r--keyboards/ibm/model_m_4th_gen/info.json16
-rw-r--r--keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h7
-rw-r--r--keyboards/ibm/model_m_4th_gen/overnumpad_1xb/info.json22
-rw-r--r--keyboards/ibnuda/alicia_cook/config.h8
-rw-r--r--keyboards/ibnuda/alicia_cook/info.json6
-rw-r--r--keyboards/ibnuda/alicia_cook/keymaps/rick/keymap.c2
-rw-r--r--keyboards/ibnuda/gurindam/config.h8
-rw-r--r--keyboards/ibnuda/gurindam/info.json8
-rw-r--r--keyboards/ibnuda/squiggle/config.h6
-rw-r--r--keyboards/ibnuda/squiggle/keymaps/rick-complicated/keymap.c2
-rw-r--r--keyboards/ibnuda/squiggle/keymaps/rick/keymap.c2
-rw-r--r--keyboards/ibnuda/squiggle/readme.md2
-rw-r--r--keyboards/ibnuda/squiggle/rev1/config.h2
-rw-r--r--keyboards/ibnuda/squiggle/rev1/info.json6
-rw-r--r--keyboards/idb/idb_60/config.h8
-rw-r--r--keyboards/idb/idb_60/info.json6
-rw-r--r--keyboards/idb/idb_60/keymaps/all_keys/keymap.c2
-rw-r--r--keyboards/idb/idb_60/keymaps/pngu/keymap.c2
-rwxr-xr-xkeyboards/idobao/id42/config.h75
-rwxr-xr-xkeyboards/idobao/id42/id42.c45
-rwxr-xr-xkeyboards/idobao/id42/id42.h6
-rw-r--r--keyboards/idobao/id42/info.json80
-rw-r--r--keyboards/idobao/id42/keymaps/default/keymap.c114
-rw-r--r--keyboards/idobao/id42/keymaps/idobao/keymap.c119
-rw-r--r--keyboards/idobao/id42/keymaps/idobao/rules.mk3
-rw-r--r--keyboards/idobao/id42/keymaps/via/keymap.c82
-rw-r--r--keyboards/idobao/id42/keymaps/via/rules.mk3
-rw-r--r--keyboards/idobao/id42/readme.md35
-rwxr-xr-xkeyboards/idobao/id42/rules.mk5
-rw-r--r--keyboards/idobao/id63/config.h102
-rw-r--r--keyboards/idobao/id63/id63.c68
-rw-r--r--keyboards/idobao/id63/id63.h6
-rw-r--r--keyboards/idobao/id63/info.json106
-rw-r--r--keyboards/idobao/id63/keymaps/default/keymap.c48
-rw-r--r--keyboards/idobao/id63/keymaps/idobao/config.h7
-rw-r--r--keyboards/idobao/id63/keymaps/idobao/keymap.c359
-rw-r--r--keyboards/idobao/id63/keymaps/idobao/rules.mk3
-rw-r--r--keyboards/idobao/id63/keymaps/via/keymap.c64
-rw-r--r--keyboards/idobao/id63/keymaps/via/rules.mk3
-rw-r--r--keyboards/idobao/id63/post_rules.mk8
-rw-r--r--keyboards/idobao/id63/readme.md39
-rw-r--r--keyboards/idobao/id63/rules.mk5
-rw-r--r--keyboards/idobao/id67/config.h140
-rw-r--r--keyboards/idobao/id67/id67.c100
-rw-r--r--keyboards/idobao/id67/id67.h36
-rw-r--r--keyboards/idobao/id67/info.json161
-rw-r--r--keyboards/idobao/id67/keymaps/default/keymap.c50
-rw-r--r--keyboards/idobao/id67/keymaps/idobao/keymap.c341
-rw-r--r--keyboards/idobao/id67/keymaps/idobao/rules.mk (renamed from keyboards/idobao/id80/v1/iso/keymaps/via/rules.mk)0
-rw-r--r--keyboards/idobao/id67/keymaps/thewerther/config.h18
-rw-r--r--keyboards/idobao/id67/keymaps/thewerther/keymap.c25
-rw-r--r--keyboards/idobao/id67/keymaps/via/keymap.c63
-rw-r--r--keyboards/idobao/id67/keymaps/vinorodrigues/config.h22
-rw-r--r--keyboards/idobao/id67/keymaps/vinorodrigues/keymap.c80
-rw-r--r--keyboards/idobao/id67/keymaps/vinorodrigues/rules.mk4
-rw-r--r--keyboards/idobao/id67/post_rules.mk10
-rw-r--r--keyboards/idobao/id67/readme.md25
-rw-r--r--keyboards/idobao/id67/rules.mk16
-rw-r--r--keyboards/idobao/id75/keymaps/drewdobo/keymap.c2
-rw-r--r--keyboards/idobao/id75/keymaps/egstad/keymap.c6
-rw-r--r--keyboards/idobao/id75/keymaps/gkbd/keymap.c2
-rw-r--r--keyboards/idobao/id75/keymaps/gkbd_75/keymap.c2
-rw-r--r--keyboards/idobao/id75/keymaps/gkbd_orthon/keymap.c2
-rw-r--r--keyboards/idobao/id75/keymaps/greenshadowmaker/keymap.c4
-rw-r--r--keyboards/idobao/id75/keymaps/pathnirvana/keymap.c2
-rw-r--r--keyboards/idobao/id75/keymaps/revok75/keymap.c4
-rw-r--r--keyboards/idobao/id75/keymaps/xaceofspaidsx/keymap.c4
-rw-r--r--keyboards/idobao/id75/v1/config.h29
-rw-r--r--keyboards/idobao/id75/v1/info.json8
-rw-r--r--keyboards/idobao/id75/v2/config.h8
-rw-r--r--keyboards/idobao/id75/v2/info.json102
-rw-r--r--keyboards/idobao/id75/v2/readme.md2
-rw-r--r--keyboards/idobao/id80/v1/ansi/config.h27
-rw-r--r--keyboards/idobao/id80/v1/ansi/keymaps/default/keymap.c35
-rw-r--r--keyboards/idobao/id80/v1/ansi/keymaps/default/readme.md1
-rw-r--r--keyboards/idobao/id80/v1/ansi/keymaps/msf/keymap.c59
-rw-r--r--keyboards/idobao/id80/v1/ansi/keymaps/rverst/keymap.c80
-rw-r--r--keyboards/idobao/id80/v1/ansi/keymaps/rverst/readme.md23
-rw-r--r--keyboards/idobao/id80/v1/ansi/keymaps/rverst/rverst.json499
-rw-r--r--keyboards/idobao/id80/v1/ansi/keymaps/via/keymap.c51
-rw-r--r--keyboards/idobao/id80/v1/ansi/readme.md1
-rw-r--r--keyboards/idobao/id80/v1/config.h87
-rw-r--r--keyboards/idobao/id80/v1/info.json188
-rw-r--r--keyboards/idobao/id80/v1/iso/config.h27
-rw-r--r--keyboards/idobao/id80/v1/iso/keymaps/default/keymap.c35
-rw-r--r--keyboards/idobao/id80/v1/iso/keymaps/default/readme.md1
-rw-r--r--keyboards/idobao/id80/v1/iso/keymaps/via/keymap.c52
-rw-r--r--keyboards/idobao/id80/v1/iso/readme.md1
-rw-r--r--keyboards/idobao/id80/v1/readme.md26
-rw-r--r--keyboards/idobao/id80/v1/rules.mk24
-rw-r--r--keyboards/idobao/id80/v1/v1.c16
-rw-r--r--keyboards/idobao/id80/v1/v1.h56
-rw-r--r--keyboards/idobao/id80/v2/ansi/info.json6
-rw-r--r--keyboards/idobao/id80/v2/ansi/keymaps/default/keymap.c35
-rw-r--r--keyboards/idobao/id80/v2/ansi/keymaps/msf/config.h (renamed from keyboards/idobao/id80/v1/ansi/keymaps/msf/config.h)0
-rw-r--r--keyboards/idobao/id80/v2/ansi/keymaps/msf/keymap.c59
-rw-r--r--keyboards/idobao/id80/v2/ansi/keymaps/msf/readme.md (renamed from keyboards/idobao/id80/v1/ansi/keymaps/msf/readme.md)0
-rw-r--r--keyboards/idobao/id80/v2/ansi/keymaps/msf/rules.mk1
-rw-r--r--keyboards/idobao/id80/v2/ansi/keymaps/rverst/keymap.c80
-rw-r--r--keyboards/idobao/id80/v2/ansi/keymaps/rverst/readme.md23
-rw-r--r--keyboards/idobao/id80/v2/ansi/keymaps/rverst/rverst.json499
-rw-r--r--keyboards/idobao/id80/v2/ansi/keymaps/via/keymap.c51
-rw-r--r--keyboards/idobao/id80/v2/ansi/keymaps/via/rules.mk (renamed from keyboards/idobao/id80/v3/keymaps/via/rules.mk)0
-rw-r--r--keyboards/idobao/id80/v2/ansi/rules.mk (renamed from keyboards/idobao/id80/v1/ansi/rules.mk)0
-rw-r--r--keyboards/idobao/id80/v2/config.h89
-rw-r--r--keyboards/idobao/id80/v2/info.json192
-rw-r--r--keyboards/idobao/id80/v2/iso/info.json6
-rw-r--r--keyboards/idobao/id80/v2/iso/keymaps/default/keymap.c35
-rw-r--r--keyboards/idobao/id80/v2/iso/keymaps/via/keymap.c52
-rw-r--r--keyboards/idobao/id80/v2/iso/keymaps/via/rules.mk2
-rw-r--r--keyboards/idobao/id80/v2/iso/rules.mk (renamed from keyboards/idobao/id80/v1/iso/rules.mk)0
-rw-r--r--keyboards/idobao/id80/v2/readme.md41
-rw-r--r--keyboards/idobao/id80/v2/rules.mk19
-rw-r--r--keyboards/idobao/id80/v2/v2.c17
-rw-r--r--keyboards/idobao/id80/v2/v2.h57
-rw-r--r--keyboards/idobao/id80/v3/ansi/ansi.c76
-rw-r--r--keyboards/idobao/id80/v3/ansi/ansi.h6
-rw-r--r--keyboards/idobao/id80/v3/ansi/config.h97
-rw-r--r--keyboards/idobao/id80/v3/ansi/info.json121
-rw-r--r--keyboards/idobao/id80/v3/ansi/keymaps/default/keymap.c56
-rw-r--r--keyboards/idobao/id80/v3/ansi/keymaps/idobao/keymap.c315
-rw-r--r--keyboards/idobao/id80/v3/ansi/keymaps/idobao/rules.mk2
-rw-r--r--keyboards/idobao/id80/v3/ansi/keymaps/via/keymap.c90
-rw-r--r--keyboards/idobao/id80/v3/ansi/keymaps/via/rules.mk2
-rw-r--r--keyboards/idobao/id80/v3/ansi/rules.mk5
-rw-r--r--keyboards/idobao/id80/v3/config.h131
-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/readme.md31
-rw-r--r--keyboards/idobao/id80/v3/rules.mk25
-rw-r--r--keyboards/idobao/id80/v3/v3.c62
-rw-r--r--keyboards/idobao/id80/v3/v3.h37
-rw-r--r--keyboards/idobao/id87/v1/config.h29
-rw-r--r--keyboards/idobao/id87/v1/info.json6
-rw-r--r--keyboards/idobao/id87/v2/config.h200
-rw-r--r--keyboards/idobao/id87/v2/info.json209
-rw-r--r--keyboards/idobao/id87/v2/keymaps/default/keymap.c77
-rw-r--r--keyboards/idobao/id87/v2/keymaps/default/readme.md1
-rw-r--r--keyboards/idobao/id87/v2/keymaps/idobao/config.h4
-rw-r--r--keyboards/idobao/id87/v2/keymaps/idobao/keymap.c299
-rw-r--r--keyboards/idobao/id87/v2/keymaps/idobao/rules.mk3
-rw-r--r--keyboards/idobao/id87/v2/keymaps/via/config.h4
-rw-r--r--keyboards/idobao/id87/v2/keymaps/via/keymap.c115
-rw-r--r--keyboards/idobao/id87/v2/keymaps/via/rules.mk1
-rw-r--r--keyboards/idobao/id87/v2/readme.md28
-rw-r--r--keyboards/idobao/id87/v2/rules.mk21
-rw-r--r--keyboards/idobao/id87/v2/v2.c104
-rw-r--r--keyboards/idobao/id87/v2/v2.h38
-rw-r--r--keyboards/idobao/id96/config.h8
-rw-r--r--keyboards/idobao/id96/info.json8
-rw-r--r--keyboards/idobao/id96/readme.md2
-rw-r--r--keyboards/idobao/montex/v1/config.h31
-rw-r--r--keyboards/idobao/montex/v1/info.json8
-rwxr-xr-xkeyboards/idobao/montex/v1rgb/config.h7
-rwxr-xr-xkeyboards/idobao/montex/v1rgb/info.json8
-rwxr-xr-xkeyboards/idobao/montex/v1rgb/readme.md2
-rwxr-xr-xkeyboards/idobao/montex/v2/config.h1
-rwxr-xr-xkeyboards/idobao/montex/v2/readme.md2
-rw-r--r--keyboards/illuminati/is0/config.h8
-rw-r--r--keyboards/illuminati/is0/info.json6
-rw-r--r--keyboards/illusion/rosa/config.h8
-rw-r--r--keyboards/illusion/rosa/info.json6
-rw-r--r--keyboards/illusion/rosa/keymaps/oggi/keymap.c2
-rw-r--r--keyboards/illusion/rosa/keymaps/split_bs_rshift/keymap.c2
-rw-r--r--keyboards/illusion/rosa/keymaps/split_rshift/keymap.c2
-rw-r--r--keyboards/ilumkb/primus75/config.h8
-rw-r--r--keyboards/ilumkb/primus75/info.json6
-rw-r--r--keyboards/ilumkb/simpler61/config.h8
-rw-r--r--keyboards/ilumkb/simpler61/info.json6
-rw-r--r--keyboards/ilumkb/simpler64/config.h8
-rw-r--r--keyboards/ilumkb/simpler64/info.json6
-rw-r--r--keyboards/ilumkb/volcano660/config.h8
-rw-r--r--keyboards/ilumkb/volcano660/info.json8
-rw-r--r--keyboards/inett_studio/sqx/hotswap/config.h8
-rw-r--r--keyboards/inett_studio/sqx/hotswap/info.json8
-rw-r--r--keyboards/inett_studio/sqx/universal/config.h8
-rw-r--r--keyboards/inett_studio/sqx/universal/info.json8
-rw-r--r--keyboards/ingrained/config.h51
-rw-r--r--keyboards/ingrained/info.json276
-rw-r--r--keyboards/ingrained/ingrained.c4
-rw-r--r--keyboards/ingrained/ingrained.h47
-rw-r--r--keyboards/ingrained/keymaps/3x5/keymap.c23
-rw-r--r--keyboards/ingrained/keymaps/3x5/readme.md1
-rw-r--r--keyboards/ingrained/keymaps/default/keymap.c23
-rw-r--r--keyboards/ingrained/keymaps/default/readme.md1
-rw-r--r--keyboards/ingrained/matrix.c253
-rw-r--r--keyboards/ingrained/readme.md19
-rw-r--r--keyboards/ingrained/rules.mk27
-rw-r--r--keyboards/input_club/ergodox_infinity/config.h8
-rw-r--r--keyboards/input_club/ergodox_infinity/info.json8
-rw-r--r--keyboards/input_club/ergodox_infinity/keymaps/default/keymap.c2
-rw-r--r--keyboards/input_club/ergodox_infinity/keymaps/dudeofawesome/keymap.c2
-rw-r--r--keyboards/input_club/ergodox_infinity/keymaps/gordon/keymap.c4
-rw-r--r--keyboards/input_club/ergodox_infinity/keymaps/halfkeyboard/keymap.c6
-rw-r--r--keyboards/input_club/ergodox_infinity/keymaps/input_club/keymap.c4
-rw-r--r--keyboards/input_club/ergodox_infinity/keymaps/narze/keymap.c4
-rw-r--r--keyboards/input_club/ergodox_infinity/keymaps/nordic_ergo/keymap.c6
-rw-r--r--keyboards/input_club/ergodox_infinity/keymaps/not-quite-neo/keymap.c6
-rw-r--r--keyboards/input_club/ergodox_infinity/keymaps/rask/keymap.c4
-rw-r--r--keyboards/input_club/ergodox_infinity/keymaps/rjhilgefort/keymap.c2
-rw-r--r--keyboards/input_club/ergodox_infinity/keymaps/trulyergonomic/keymap.c2
-rw-r--r--keyboards/input_club/infinity60/config.h7
-rw-r--r--keyboards/input_club/infinity60/info.json8
-rw-r--r--keyboards/input_club/infinity60/keymaps/jpetermans/keymap.c4
-rw-r--r--keyboards/input_club/infinity60/led/config.h1
-rw-r--r--keyboards/input_club/infinity60/rev1/config.h1
-rw-r--r--keyboards/input_club/k_type/config.h8
-rw-r--r--keyboards/input_club/k_type/info.json8
-rw-r--r--keyboards/input_club/k_type/keymaps/andrew-fahmy/keymap.c2
-rw-r--r--keyboards/input_club/whitefox/config.h8
-rw-r--r--keyboards/input_club/whitefox/info.json8
-rw-r--r--keyboards/input_club/whitefox/keymaps/dudeofawesome/keymap.c2
-rw-r--r--keyboards/input_club/whitefox/keymaps/kim-kim/keymap.c2
-rw-r--r--keyboards/input_club/whitefox/keymaps/mattrighetti/keymap.c2
-rw-r--r--keyboards/io_mini1800/config.h8
-rw-r--r--keyboards/io_mini1800/info.json6
-rw-r--r--keyboards/irene/config.h8
-rw-r--r--keyboards/irene/info.json6
-rw-r--r--keyboards/iriskeyboards/config.h8
-rw-r--r--keyboards/iriskeyboards/info.json8
-rw-r--r--keyboards/iron180/config.h7
-rw-r--r--keyboards/iron180/info.json6
-rw-r--r--keyboards/iron180/readme.md2
-rw-r--r--keyboards/j80/config.h7
-rw-r--r--keyboards/j80/info.json6
-rw-r--r--keyboards/jacky_studio/bear_65/config.h7
-rw-r--r--keyboards/jacky_studio/bear_65/info.json6
-rw-r--r--keyboards/jacky_studio/bear_65/keymaps/stanrc85/keymap.c2
-rw-r--r--keyboards/jacky_studio/piggy60/hotswap/info.json4
-rw-r--r--keyboards/jacky_studio/piggy60/hotswap/rules.mk1
-rw-r--r--keyboards/jacky_studio/piggy60/info.json250
-rw-r--r--keyboards/jacky_studio/piggy60/keymaps/default/keymap.c40
-rw-r--r--keyboards/jacky_studio/piggy60/keymaps/via/keymap.json38
-rw-r--r--keyboards/jacky_studio/piggy60/keymaps/via/rules.mk1
-rw-r--r--keyboards/jacky_studio/piggy60/readme.md27
-rw-r--r--keyboards/jacky_studio/piggy60/rules.mk1
-rw-r--r--keyboards/jacky_studio/piggy60/solder/info.json477
-rw-r--r--keyboards/jacky_studio/piggy60/solder/rules.mk1
-rw-r--r--keyboards/jacky_studio/s7_elephant/readme.md2
-rw-r--r--keyboards/jacky_studio/s7_elephant/rev1/config.h8
-rw-r--r--keyboards/jacky_studio/s7_elephant/rev1/info.json8
-rw-r--r--keyboards/jacky_studio/s7_elephant/rev1/readme.md2
-rw-r--r--keyboards/jacky_studio/s7_elephant/rev2/config.h7
-rw-r--r--keyboards/jacky_studio/s7_elephant/rev2/info.json6
-rw-r--r--keyboards/jadookb/jkb2/config.h7
-rw-r--r--keyboards/jadookb/jkb2/info.json8
-rw-r--r--keyboards/jadookb/jkb2/keymaps/via/config.h19
-rw-r--r--keyboards/jadookb/jkb65/config.h11
-rw-r--r--keyboards/jadookb/jkb65/info.json12
-rw-r--r--keyboards/jadookb/jkb65/jkb65.h2
-rw-r--r--keyboards/jadookb/jkb65/keymaps/default/keymap.c4
-rw-r--r--keyboards/jadookb/jkb65/keymaps/via/config.h19
-rw-r--r--keyboards/jadookb/jkb65/keymaps/via/keymap.c8
-rw-r--r--keyboards/jadookb/jkb65/r1/config.h20
-rw-r--r--keyboards/jadookb/jkb65/r1/info.json6
-rw-r--r--keyboards/jadookb/jkb65/r1/rules.mk0
-rw-r--r--keyboards/jadookb/jkb65/r2/config.h9
-rw-r--r--keyboards/jadookb/jkb65/r2/info.json6
-rw-r--r--keyboards/jadookb/jkb65/r2/rules.mk0
-rw-r--r--keyboards/jadookb/jkb65/rules.mk2
-rw-r--r--keyboards/jae/j01/config.h8
-rw-r--r--keyboards/jae/j01/info.json8
-rw-r--r--keyboards/jagdpietr/drakon/config.h8
-rw-r--r--keyboards/jagdpietr/drakon/info.json6
-rw-r--r--keyboards/janus/config.h16
-rw-r--r--keyboards/janus/halconf.h9
-rw-r--r--keyboards/janus/info.json75
-rw-r--r--keyboards/janus/keymaps/default/keymap.c50
-rw-r--r--keyboards/janus/keymaps/default/readme.md13
-rw-r--r--keyboards/janus/mcuconf.h9
-rw-r--r--keyboards/janus/readme.md27
-rw-r--r--keyboards/janus/rules.mk1
-rw-r--r--keyboards/jc65/v32a/config.h6
-rw-r--r--keyboards/jc65/v32a/info.json8
-rw-r--r--keyboards/jc65/v32a/keymaps/ptillemans/keymap.c4
-rw-r--r--keyboards/jc65/v32a/keymaps/rys/keymap.c2
-rw-r--r--keyboards/jc65/v32u4/config.h8
-rw-r--r--keyboards/jc65/v32u4/info.json8
-rw-r--r--keyboards/jc65/v32u4/keymaps/coth/keymap.c2
-rw-r--r--keyboards/jc65/v32u4/keymaps/dead_encryption/keymap.c2
-rw-r--r--keyboards/jc65/v32u4/keymaps/gam3cat/keymap.c4
-rw-r--r--keyboards/jc65/v32u4/keymaps/jetpacktuxedo/keymap.c2
-rw-r--r--keyboards/jc65/v32u4/keymaps/na7thana/keymap.c2
-rw-r--r--keyboards/jc65/v32u4/keymaps/naut/keymap.c2
-rw-r--r--keyboards/jd40/config.h8
-rw-r--r--keyboards/jd40/info.json6
-rw-r--r--keyboards/jd45/config.h8
-rw-r--r--keyboards/jd45/info.json8
-rw-r--r--keyboards/jd45/keymaps/blakedietz/keymap.c2
-rw-r--r--keyboards/jd45/keymaps/jeebak/keymap.c2
-rw-r--r--keyboards/jd45/keymaps/mjt6u/keymap.c2
-rw-r--r--keyboards/jels/jels60/config.h7
-rw-r--r--keyboards/jels/jels60/info.json6
-rw-r--r--keyboards/jels/jels60/readme.md2
-rw-r--r--keyboards/jels/jels88/config.h7
-rw-r--r--keyboards/jels/jels88/info.json6
-rw-r--r--keyboards/jels/jels88/readme.md2
-rw-r--r--keyboards/jian/handwired/config.h7
-rw-r--r--keyboards/jian/handwired/info.json6
-rw-r--r--keyboards/jian/info.json6
-rw-r--r--keyboards/jian/keymaps/advanced/keymap.c2
-rw-r--r--keyboards/jian/keymaps/left_hand/keymap.c2
-rw-r--r--keyboards/jian/nsrev2/config.h7
-rw-r--r--keyboards/jian/nsrev2/info.json6
-rw-r--r--keyboards/jian/rev1/config.h7
-rw-r--r--keyboards/jian/rev1/info.json6
-rw-r--r--keyboards/jian/rev2/config.h7
-rw-r--r--keyboards/jian/rev2/info.json6
-rw-r--r--keyboards/jiran/config.h7
-rw-r--r--keyboards/jiran/info.json8
-rw-r--r--keyboards/jkdlab/binary_monkey/config.h6
-rw-r--r--keyboards/jkdlab/binary_monkey/info.json6
-rw-r--r--keyboards/jkeys_design/gentleman65/config.h51
-rw-r--r--keyboards/jkeys_design/gentleman65/gentleman65.c (renamed from keyboards/gentleman65/gentleman65.c)0
-rw-r--r--keyboards/jkeys_design/gentleman65/gentleman65.h (renamed from keyboards/gentleman65/gentleman65.h)0
-rw-r--r--keyboards/jkeys_design/gentleman65/info.json16
-rw-r--r--keyboards/jkeys_design/gentleman65/keymaps/briianpowell/keymap.c96
-rw-r--r--keyboards/jkeys_design/gentleman65/keymaps/briianpowell/readme.md14
-rw-r--r--keyboards/jkeys_design/gentleman65/keymaps/default/keymap.c (renamed from keyboards/gentleman65/keymaps/default/keymap.c)0
-rw-r--r--keyboards/jkeys_design/gentleman65/keymaps/via/keymap.c (renamed from keyboards/gentleman65/keymaps/via/keymap.c)0
-rw-r--r--keyboards/jkeys_design/gentleman65/keymaps/via/rules.mk2
-rw-r--r--keyboards/jkeys_design/gentleman65/readme.md24
-rw-r--r--keyboards/jkeys_design/gentleman65/rules.mk (renamed from keyboards/gentleman65/rules.mk)0
-rw-r--r--keyboards/jkeys_design/gentleman65_se_s/config.h52
-rw-r--r--keyboards/jkeys_design/gentleman65_se_s/gentleman65_se_s.c32
-rw-r--r--keyboards/jkeys_design/gentleman65_se_s/gentleman65_se_s.h33
-rw-r--r--keyboards/jkeys_design/gentleman65_se_s/info.json16
-rw-r--r--keyboards/jkeys_design/gentleman65_se_s/keymaps/default/keymap.c36
-rw-r--r--keyboards/jkeys_design/gentleman65_se_s/keymaps/via/keymap.c53
-rw-r--r--keyboards/jkeys_design/gentleman65_se_s/keymaps/via/rules.mk2
-rw-r--r--keyboards/jkeys_design/gentleman65_se_s/readme.md24
-rw-r--r--keyboards/jkeys_design/gentleman65_se_s/rules.mk21
-rw-r--r--keyboards/jm60/config.h8
-rw-r--r--keyboards/jm60/info.json6
-rw-r--r--keyboards/jolofsor/denial75/config.h8
-rw-r--r--keyboards/jolofsor/denial75/info.json6
-rw-r--r--keyboards/jones/v03/config.h8
-rw-r--r--keyboards/jones/v03/info.json6
-rw-r--r--keyboards/jones/v03/keymaps/default_jp/config.h1
-rw-r--r--keyboards/jones/v03/keymaps/default_jp/keymap.c15
-rw-r--r--keyboards/jones/v03_1/config.h8
-rw-r--r--keyboards/jones/v03_1/info.json6
-rw-r--r--keyboards/jones/v03_1/keymaps/default_ansi/config.h1
-rw-r--r--keyboards/jones/v03_1/keymaps/default_ansi/keymap.c17
-rw-r--r--keyboards/jones/v03_1/keymaps/default_jp/config.h1
-rw-r--r--keyboards/jones/v03_1/keymaps/default_jp/keymap.c17
-rw-r--r--keyboards/jones/v1/config.h7
-rw-r--r--keyboards/jones/v1/info.json6
-rw-r--r--keyboards/jorne/info.json240
-rw-r--r--keyboards/jorne/keymaps/manna-harbour_miryoku/config.h21
-rw-r--r--keyboards/jorne/keymaps/manna-harbour_miryoku/keymap.c4
-rw-r--r--keyboards/jorne/readme.md2
-rw-r--r--keyboards/jorne/rev1/config.h9
-rw-r--r--keyboards/jorne/rev1/info.json246
-rw-r--r--keyboards/k34/config.h8
-rw-r--r--keyboards/k34/info.json6
-rw-r--r--keyboards/k34/readme.md2
-rw-r--r--keyboards/kabedon/kabedon78s/config.h7
-rw-r--r--keyboards/kabedon/kabedon78s/info.json8
-rw-r--r--keyboards/kabedon/kabedon980/config.h9
-rw-r--r--keyboards/kabedon/kabedon980/info.json8
-rw-r--r--keyboards/kabedon/kabedon98e/config.h7
-rw-r--r--keyboards/kabedon/kabedon98e/info.json8
-rw-r--r--keyboards/kagizaraya/chidori/config.h16
-rw-r--r--keyboards/kagizaraya/chidori/info.json6
-rw-r--r--keyboards/kagizaraya/chidori/keymaps/extended/keymap.c2
-rw-r--r--keyboards/kagizaraya/chidori/keymaps/oled_sample/keymap.c2
-rw-r--r--keyboards/kagizaraya/halberd/config.h8
-rw-r--r--keyboards/kagizaraya/halberd/info.json6
-rw-r--r--keyboards/kagizaraya/halberd/keymaps/right_modifiers/keymap.c2
-rw-r--r--keyboards/kagizaraya/scythe/config.h8
-rw-r--r--keyboards/kagizaraya/scythe/info.json6
-rw-r--r--keyboards/kagizaraya/scythe/keymaps/forties/keymap.c2
-rw-r--r--keyboards/kakunpc/angel17/alpha/config.h8
-rw-r--r--keyboards/kakunpc/angel17/info.json6
-rw-r--r--keyboards/kakunpc/angel17/rev1/config.h8
-rw-r--r--keyboards/kakunpc/angel64/alpha/config.h8
-rw-r--r--keyboards/kakunpc/angel64/alpha/info.json8
-rw-r--r--keyboards/kakunpc/angel64/alpha/keymaps/default/keymap.c2
-rw-r--r--keyboards/kakunpc/angel64/rev1/config.h8
-rw-r--r--keyboards/kakunpc/angel64/rev1/info.json8
-rw-r--r--keyboards/kakunpc/angel64/rev1/keymaps/kakunpc/keymap.c2
-rw-r--r--keyboards/kakunpc/business_card/alpha/config.h8
-rw-r--r--keyboards/kakunpc/business_card/alpha/info.json6
-rw-r--r--keyboards/kakunpc/business_card/beta/config.h8
-rw-r--r--keyboards/kakunpc/business_card/beta/info.json6
-rw-r--r--keyboards/kakunpc/choc_taro/config.h9
-rw-r--r--keyboards/kakunpc/choc_taro/info.json6
-rw-r--r--keyboards/kakunpc/rabbit_capture_plan/config.h9
-rw-r--r--keyboards/kakunpc/rabbit_capture_plan/info.json6
-rw-r--r--keyboards/kakunpc/suihankey/alpha/config.h8
-rw-r--r--keyboards/kakunpc/suihankey/alpha/info.json8
-rw-r--r--keyboards/kakunpc/suihankey/alpha/keymaps/default/keymap.c2
-rw-r--r--keyboards/kakunpc/suihankey/rev1/config.h8
-rw-r--r--keyboards/kakunpc/suihankey/rev1/info.json8
-rw-r--r--keyboards/kakunpc/suihankey/rev1/keymaps/default/keymap.c2
-rw-r--r--keyboards/kakunpc/suihankey/split/alpha/config.h8
-rw-r--r--keyboards/kakunpc/suihankey/split/info.json8
-rw-r--r--keyboards/kakunpc/suihankey/split/rev1/config.h8
-rw-r--r--keyboards/kakunpc/thedogkeyboard/config.h8
-rw-r--r--keyboards/kakunpc/thedogkeyboard/info.json6
-rw-r--r--keyboards/kapcave/arya/config.h7
-rw-r--r--keyboards/kapcave/arya/info.json6
-rwxr-xr-xkeyboards/kapcave/gskt00/config.h8
-rw-r--r--keyboards/kapcave/gskt00/info.json6
-rwxr-xr-xkeyboards/kapcave/gskt00/keymaps/nachie/keymap.c2
-rwxr-xr-xkeyboards/kapcave/paladin64/config.h8
-rw-r--r--keyboards/kapcave/paladin64/info.json6
-rw-r--r--keyboards/kapcave/paladinpad/config.h6
-rw-r--r--keyboards/kapcave/paladinpad/info.json5
-rw-r--r--keyboards/kapcave/paladinpad/keymaps/aek/keymap.c2
-rw-r--r--keyboards/kapcave/paladinpad/keymaps/ortho/keymap.c2
-rw-r--r--keyboards/kapcave/paladinpad/rev1/config.h2
-rw-r--r--keyboards/kapcave/paladinpad/rev1/info.json5
-rw-r--r--keyboards/kapcave/paladinpad/rev2/config.h2
-rw-r--r--keyboards/kapcave/paladinpad/rev2/info.json5
-rw-r--r--keyboards/kapl/info.json85
-rw-r--r--keyboards/kapl/readme.md2
-rw-r--r--keyboards/kapl/rev1/config.h8
-rw-r--r--keyboards/kapl/rev1/info.json91
-rw-r--r--keyboards/kb58/config.h8
-rw-r--r--keyboards/kb58/info.json6
-rw-r--r--keyboards/kb58/readme.md2
-rw-r--r--keyboards/kb_elmo/67mk_e/config.h7
-rw-r--r--keyboards/kb_elmo/67mk_e/info.json8
-rw-r--r--keyboards/kb_elmo/aek2_usb/config.h8
-rw-r--r--keyboards/kb_elmo/aek2_usb/info.json8
-rw-r--r--keyboards/kb_elmo/elmopad/config.h8
-rw-r--r--keyboards/kb_elmo/elmopad/info.json8
-rw-r--r--keyboards/kb_elmo/isolation/config.h8
-rw-r--r--keyboards/kb_elmo/isolation/info.json8
-rw-r--r--keyboards/kb_elmo/m0110a_usb/config.h8
-rw-r--r--keyboards/kb_elmo/m0110a_usb/info.json8
-rw-r--r--keyboards/kb_elmo/m0116_usb/config.h8
-rw-r--r--keyboards/kb_elmo/m0116_usb/info.json8
-rw-r--r--keyboards/kb_elmo/noah_avr/config.h8
-rw-r--r--keyboards/kb_elmo/noah_avr/info.json6
-rw-r--r--keyboards/kb_elmo/qez/config.h7
-rw-r--r--keyboards/kb_elmo/qez/info.json8
-rw-r--r--keyboards/kb_elmo/sesame/config.h11
-rw-r--r--keyboards/kb_elmo/sesame/info.json8
-rw-r--r--keyboards/kb_elmo/twelvekey/config.h7
-rw-r--r--keyboards/kb_elmo/twelvekey/info.json8
-rw-r--r--keyboards/kb_elmo/vertex/config.h8
-rw-r--r--keyboards/kb_elmo/vertex/info.json8
-rw-r--r--keyboards/kb_elmo/vertex/readme.md2
-rw-r--r--keyboards/kbdclack/kaishi65/config.h8
-rw-r--r--keyboards/kbdclack/kaishi65/info.json6
-rw-r--r--keyboards/kbdfans/baguette66/rgb/config.h82
-rw-r--r--keyboards/kbdfans/baguette66/rgb/info.json15
-rw-r--r--keyboards/kbdfans/baguette66/rgb/keymaps/default/keymap.c44
-rw-r--r--keyboards/kbdfans/baguette66/rgb/keymaps/via/keymap.c44
-rw-r--r--keyboards/kbdfans/baguette66/rgb/keymaps/via/rules.mk2
-rw-r--r--keyboards/kbdfans/baguette66/rgb/readme.md23
-rw-r--r--keyboards/kbdfans/baguette66/rgb/rgb.c48
-rw-r--r--keyboards/kbdfans/baguette66/rgb/rgb.h32
-rw-r--r--keyboards/kbdfans/baguette66/rgb/rules.mk20
-rw-r--r--keyboards/kbdfans/baguette66/soldered/config.h36
-rw-r--r--keyboards/kbdfans/baguette66/soldered/info.json15
-rw-r--r--keyboards/kbdfans/baguette66/soldered/keymaps/default/keymap.c44
-rw-r--r--keyboards/kbdfans/baguette66/soldered/keymaps/via/keymap.c44
-rw-r--r--keyboards/kbdfans/baguette66/soldered/keymaps/via/rules.mk2
-rw-r--r--keyboards/kbdfans/baguette66/soldered/readme.md23
-rw-r--r--keyboards/kbdfans/baguette66/soldered/rules.mk18
-rw-r--r--keyboards/kbdfans/baguette66/soldered/soldered.c17
-rw-r--r--keyboards/kbdfans/baguette66/soldered/soldered.h32
-rw-r--r--keyboards/kbdfans/bella/rgb/config.h7
-rw-r--r--keyboards/kbdfans/bella/rgb/info.json8
-rw-r--r--keyboards/kbdfans/bella/rgb_iso/config.h7
-rw-r--r--keyboards/kbdfans/bella/rgb_iso/info.json8
-rwxr-xr-xkeyboards/kbdfans/bella/soldered/config.h7
-rw-r--r--keyboards/kbdfans/bella/soldered/info.json8
-rw-r--r--keyboards/kbdfans/boop65/rgb/config.h8
-rw-r--r--keyboards/kbdfans/boop65/rgb/info.json8
-rw-r--r--keyboards/kbdfans/boop65/rgb/readme.md2
-rw-r--r--keyboards/kbdfans/bounce/75/hotswap/config.h56
-rw-r--r--keyboards/kbdfans/bounce/75/hotswap/hotswap.c16
-rw-r--r--keyboards/kbdfans/bounce/75/hotswap/hotswap.h34
-rw-r--r--keyboards/kbdfans/bounce/75/hotswap/info.json15
-rw-r--r--keyboards/kbdfans/bounce/75/hotswap/keymaps/default/keymap.c55
-rw-r--r--keyboards/kbdfans/bounce/75/hotswap/keymaps/via/keymap.c55
-rw-r--r--keyboards/kbdfans/bounce/75/hotswap/keymaps/via/rules.mk2
-rw-r--r--keyboards/kbdfans/bounce/75/hotswap/readme.md21
-rw-r--r--keyboards/kbdfans/bounce/75/hotswap/rules.mk18
-rw-r--r--keyboards/kbdfans/bounce/75/soldered/config.h56
-rw-r--r--keyboards/kbdfans/bounce/75/soldered/info.json469
-rw-r--r--keyboards/kbdfans/bounce/75/soldered/keymaps/default/keymap.c55
-rw-r--r--keyboards/kbdfans/bounce/75/soldered/keymaps/default_ansi/keymap.c56
-rw-r--r--keyboards/kbdfans/bounce/75/soldered/keymaps/default_ansi_split_bs/keymap.c56
-rw-r--r--keyboards/kbdfans/bounce/75/soldered/keymaps/default_iso/keymap.c56
-rw-r--r--keyboards/kbdfans/bounce/75/soldered/keymaps/default_iso_split_bs/keymap.c55
-rw-r--r--keyboards/kbdfans/bounce/75/soldered/keymaps/via/keymap.c55
-rw-r--r--keyboards/kbdfans/bounce/75/soldered/keymaps/via/rules.mk2
-rw-r--r--keyboards/kbdfans/bounce/75/soldered/readme.md21
-rw-r--r--keyboards/kbdfans/bounce/75/soldered/rules.mk18
-rw-r--r--keyboards/kbdfans/bounce/75/soldered/soldered.c17
-rw-r--r--keyboards/kbdfans/bounce/75/soldered/soldered.h121
-rw-r--r--keyboards/kbdfans/bounce/pad/config.h29
-rw-r--r--keyboards/kbdfans/bounce/pad/info.json42
-rw-r--r--keyboards/kbdfans/bounce/pad/keymaps/default/keymap.c28
-rw-r--r--keyboards/kbdfans/bounce/pad/keymaps/via/keymap.c52
-rw-r--r--keyboards/kbdfans/bounce/pad/keymaps/via/rules.mk2
-rw-r--r--keyboards/kbdfans/bounce/pad/pad.c16
-rw-r--r--keyboards/kbdfans/bounce/pad/pad.h35
-rw-r--r--keyboards/kbdfans/bounce/pad/readme.md21
-rw-r--r--keyboards/kbdfans/bounce/pad/rules.mk20
-rw-r--r--keyboards/kbdfans/kbd19x/config.h8
-rw-r--r--keyboards/kbdfans/kbd19x/info.json6
-rw-r--r--keyboards/kbdfans/kbd19x/readme.md2
-rw-r--r--keyboards/kbdfans/kbd4x/config.h8
-rw-r--r--keyboards/kbdfans/kbd4x/info.json8
-rw-r--r--keyboards/kbdfans/kbd66/config.h8
-rw-r--r--keyboards/kbdfans/kbd66/info.json6
-rw-r--r--keyboards/kbdfans/kbd67/hotswap/config.h8
-rw-r--r--keyboards/kbdfans/kbd67/hotswap/info.json8
-rw-r--r--keyboards/kbdfans/kbd67/hotswap/keymaps/brandonschlack/keymap.c4
-rw-r--r--keyboards/kbdfans/kbd67/hotswap/keymaps/madhatter/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd67/hotswap/keymaps/zunger/keymap.c4
-rw-r--r--keyboards/kbdfans/kbd67/mkii_soldered/config.h8
-rw-r--r--keyboards/kbdfans/kbd67/mkii_soldered/info.json8
-rw-r--r--keyboards/kbdfans/kbd67/mkii_soldered/keymaps/adamdehaven/keymap.c4
-rw-r--r--keyboards/kbdfans/kbd67/mkii_soldered/keymaps/ai03/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd67/mkii_soldered/keymaps/ansi_split_bs/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd67/mkii_soldered/keymaps/king/keymap.c4
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/info.json5
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/codecoffeecode/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/cykedev/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/config.h2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/import-for-qmk-configurator/kemmeldev-4-layered-layout.json2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/keymap.c4
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/layers.json2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h3
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/config.h41
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/keymap.c158
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/readme.md23
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/rgb_matrix_user.inc68
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/rules.mk4
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v1/config.h5
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v1/info.json7
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v2/config.h5
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v2/info.json7
-rwxr-xr-xkeyboards/kbdfans/kbd67/mkiirgb/v3/config.h8
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v3/info.json7
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v4/config.h8
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v4/info.json7
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb/v4/readme.md2
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb_iso/config.h8
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb_iso/info.json8
-rw-r--r--keyboards/kbdfans/kbd67/mkiirgb_iso/readme.md2
-rw-r--r--keyboards/kbdfans/kbd67/rev1/config.h8
-rw-r--r--keyboards/kbdfans/kbd67/rev1/info.json8
-rw-r--r--keyboards/kbdfans/kbd67/rev1/keymaps/koba/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd67/rev2/config.h8
-rw-r--r--keyboards/kbdfans/kbd67/rev2/info.json171
-rw-r--r--keyboards/kbdfans/kbd67/rev2/keymaps/adi/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd67/rev2/keymaps/brandonschlack/keymap.c4
-rw-r--r--keyboards/kbdfans/kbd67/rev2/keymaps/koba/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd67/rev2/keymaps/naphtaline/keymap.c58
-rw-r--r--keyboards/kbdfans/kbd67/rev2/keymaps/naphtaline/readme.md4
-rw-r--r--keyboards/kbdfans/kbd67/rev2/keymaps/tucznak/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd67/rev2/rev2.h138
-rw-r--r--keyboards/kbdfans/kbd6x/config.h8
-rw-r--r--keyboards/kbdfans/kbd6x/info.json8
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/dbroqua/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/hhkb-default-improved/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/hhkb-default/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/mekberg/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/othi/keymap.c7
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/peott-fr/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd6x/keymaps/wanleg/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd75/config.h6
-rw-r--r--keyboards/kbdfans/kbd75/keymaps/aaronireland/keymap.c6
-rw-r--r--keyboards/kbdfans/kbd75/keymaps/adit/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd75/keymaps/broswen/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd75/keymaps/digital/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd75/keymaps/edulpn/keymap.c4
-rw-r--r--keyboards/kbdfans/kbd75/keymaps/ethan605/keymap.c4
-rw-r--r--keyboards/kbdfans/kbd75/keymaps/kingwangwong/keymap.c6
-rw-r--r--keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c22
-rw-r--r--keyboards/kbdfans/kbd75/keymaps/smt/keymap.c4
-rw-r--r--keyboards/kbdfans/kbd75/keymaps/spacemanspiff/keymap.c4
-rw-r--r--keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c2
-rw-r--r--keyboards/kbdfans/kbd75/rev1/config.h7
-rw-r--r--keyboards/kbdfans/kbd75/rev1/info.json6
-rw-r--r--keyboards/kbdfans/kbd75/rev2/config.h7
-rw-r--r--keyboards/kbdfans/kbd75/rev2/info.json6
-rw-r--r--keyboards/kbdfans/kbd75hs/config.h8
-rw-r--r--keyboards/kbdfans/kbd75hs/info.json8
-rw-r--r--keyboards/kbdfans/kbd75hs/readme.md2
-rw-r--r--keyboards/kbdfans/kbd75rgb/config.h8
-rw-r--r--keyboards/kbdfans/kbd75rgb/info.json106
-rw-r--r--keyboards/kbdfans/kbd75rgb/readme.md2
-rw-r--r--keyboards/kbdfans/kbd8x/config.h8
-rw-r--r--keyboards/kbdfans/kbd8x/info.json8
-rw-r--r--keyboards/kbdfans/kbd8x_mk2/config.h8
-rw-r--r--keyboards/kbdfans/kbd8x_mk2/info.json8
-rw-r--r--keyboards/kbdfans/kbdmini/config.h8
-rw-r--r--keyboards/kbdfans/kbdmini/info.json8
-rw-r--r--keyboards/kbdfans/kbdpad/mk1/config.h6
-rw-r--r--keyboards/kbdfans/kbdpad/mk1/info.json8
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/config.h8
-rw-r--r--keyboards/kbdfans/kbdpad/mk2/info.json8
-rwxr-xr-xkeyboards/kbdfans/maja/config.h6
-rw-r--r--keyboards/kbdfans/maja/info.json8
-rwxr-xr-xkeyboards/kbdfans/maja_soldered/config.h6
-rw-r--r--keyboards/kbdfans/maja_soldered/info.json8
-rw-r--r--keyboards/kbdfans/niu_mini/config.h9
-rw-r--r--keyboards/kbdfans/niu_mini/info.json6
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/abhixec/keymap.c2
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/codecoffeecode/keymap.c2
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/dyesub/keymap.c2
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/edvard/keymap.c2
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/framtava/keymap.c2
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/mason/keymap.c2
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/planck/keymap.c2
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/tobias/keymap.c32
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/tucznak/keymap.c2
-rw-r--r--keyboards/kbdfans/niu_mini/keymaps/xtonhasvim/keymap.c4
-rw-r--r--keyboards/kbdfans/odin/rgb/config.h7
-rw-r--r--keyboards/kbdfans/odin/rgb/info.json10
-rw-r--r--keyboards/kbdfans/odin/rgb/readme.md2
-rw-r--r--keyboards/kbdfans/odin/soldered/config.h8
-rw-r--r--keyboards/kbdfans/odin/soldered/info.json10
-rw-r--r--keyboards/kbdfans/odin/soldered/readme.md2
-rw-r--r--keyboards/kbdfans/phaseone/config.h8
-rw-r--r--keyboards/kbdfans/phaseone/info.json6
-rw-r--r--keyboards/kbdfans/phaseone/readme.md2
-rw-r--r--keyboards/kbdfans/tiger80/config.h8
-rw-r--r--keyboards/kbdfans/tiger80/info.json8
-rw-r--r--keyboards/kbdfans/tiger80/readme.md2
-rw-r--r--keyboards/kbnordic/nordic60/info.json361
-rw-r--r--keyboards/kbnordic/nordic60/keymaps/all/keymap.c2
-rw-r--r--keyboards/kbnordic/nordic60/readme.md2
-rw-r--r--keyboards/kbnordic/nordic60/rev_a/config.h7
-rw-r--r--keyboards/kbnordic/nordic60/rev_a/info.json367
-rw-r--r--keyboards/kc60/config.h8
-rw-r--r--keyboards/kc60/info.json6
-rw-r--r--keyboards/kc60/keymaps/noroadsleft/keymap.c6
-rw-r--r--keyboards/kc60/keymaps/sgoodwin/keymap.c2
-rw-r--r--keyboards/kc60/keymaps/stanleylai/keymap.c4
-rw-r--r--keyboards/kc60/keymaps/wigguno/keymap.c2
-rw-r--r--keyboards/kc60/keymaps/workman-dead/keymap.c2
-rw-r--r--keyboards/kc60/keymaps/ws2812/keymap.c2
-rw-r--r--keyboards/kc60se/config.h8
-rw-r--r--keyboards/kc60se/info.json6
-rw-r--r--keyboards/keebio/bamfk1/config.h7
-rw-r--r--keyboards/keebio/bamfk1/info.json6
-rw-r--r--keyboards/keebio/bamfk1/readme.md2
-rw-r--r--keyboards/keebio/bamfk4/bamfk4.c37
-rw-r--r--keyboards/keebio/bamfk4/bamfk4.h12
-rw-r--r--keyboards/keebio/bamfk4/config.h146
-rw-r--r--keyboards/keebio/bamfk4/info.json20
-rw-r--r--keyboards/keebio/bamfk4/keymaps/default/keymap.c18
-rw-r--r--keyboards/keebio/bamfk4/keymaps/via/keymap.c15
-rw-r--r--keyboards/keebio/bamfk4/keymaps/via/rules.mk3
-rw-r--r--keyboards/keebio/bamfk4/rules.mk23
-rw-r--r--keyboards/keebio/bdn9/info.json5
-rw-r--r--keyboards/keebio/bdn9/keymaps/bcat/keymap.c2
-rw-r--r--keyboards/keebio/bdn9/keymaps/codecoffeecode/keymap.c4
-rw-r--r--keyboards/keebio/bdn9/keymaps/ghostseven/keymap.c4
-rw-r--r--keyboards/keebio/bdn9/keymaps/hbbisenieks/keymap.c2
-rw-r--r--keyboards/keebio/bdn9/keymaps/mousepad/keymap.c2
-rw-r--r--keyboards/keebio/bdn9/keymaps/rishka/keymap.c4
-rw-r--r--keyboards/keebio/bdn9/keymaps/via/keymap.c33
-rw-r--r--keyboards/keebio/bdn9/keymaps/via/rules.mk1
-rw-r--r--keyboards/keebio/bdn9/keymaps/vosechu-browser/keymap.c2
-rw-r--r--keyboards/keebio/bdn9/keymaps/vosechu-ksp/keymap.c4
-rw-r--r--keyboards/keebio/bdn9/rev1/config.h7
-rw-r--r--keyboards/keebio/bdn9/rev1/info.json7
-rw-r--r--keyboards/keebio/bdn9/rev2/config.h9
-rw-r--r--keyboards/keebio/bdn9/rev2/info.json7
-rw-r--r--keyboards/keebio/bfo9000/config.h7
-rw-r--r--keyboards/keebio/bfo9000/info.json8
-rw-r--r--keyboards/keebio/bfo9000/keymaps/abstractkb/keymap.c5
-rw-r--r--keyboards/keebio/bfo9000/keymaps/insertsnideremarks/keymap.c6
-rw-r--r--keyboards/keebio/bfo9000/keymaps/rogthefrog6x9/keymap.c20
-rw-r--r--keyboards/keebio/bfo9000/keymaps/shadyproject/keymap.c4
-rw-r--r--keyboards/keebio/bfo9000/keymaps/tuesdayjohn/keymap.c6
-rw-r--r--keyboards/keebio/bigswitchseat/config.h7
-rw-r--r--keyboards/keebio/bigswitchseat/info.json6
-rw-r--r--keyboards/keebio/bigswitchseat/readme.md2
-rw-r--r--keyboards/keebio/choconum/config.h7
-rw-r--r--keyboards/keebio/choconum/info.json6
-rw-r--r--keyboards/keebio/chocopad/config.h7
-rw-r--r--keyboards/keebio/chocopad/info.json6
-rw-r--r--keyboards/keebio/chocopad/keymaps/khord/keymap.c2
-rw-r--r--keyboards/keebio/dilly/config.h8
-rw-r--r--keyboards/keebio/dilly/info.json6
-rw-r--r--keyboards/keebio/dsp40/info.json105
-rw-r--r--keyboards/keebio/dsp40/keymaps/bakingpy/keymap.c2
-rw-r--r--keyboards/keebio/dsp40/rev1/config.h7
-rw-r--r--keyboards/keebio/dsp40/rev1/info.json111
-rw-r--r--keyboards/keebio/ergodicity/config.h8
-rw-r--r--keyboards/keebio/ergodicity/info.json6
-rw-r--r--keyboards/keebio/foldkb/info.json87
-rw-r--r--keyboards/keebio/foldkb/keymaps/forrcaho/keymap.c2
-rw-r--r--keyboards/keebio/foldkb/rev1/config.h7
-rw-r--r--keyboards/keebio/foldkb/rev1/info.json93
-rw-r--r--keyboards/keebio/fourier/config.h7
-rw-r--r--keyboards/keebio/fourier/info.json6
-rw-r--r--keyboards/keebio/fourier/keymaps/maxim/keymap.c2
-rw-r--r--keyboards/keebio/iris/info.json5
-rw-r--r--keyboards/keebio/iris/iris.h4
-rw-r--r--keyboards/keebio/iris/keymaps/adamgate/config.h24
-rw-r--r--keyboards/keebio/iris/keymaps/adamgate/keymap.c82
-rw-r--r--keyboards/keebio/iris/keymaps/adamgate/rules.mk6
-rw-r--r--keyboards/keebio/iris/keymaps/antonlindstrom/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/ave-63/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/bmoorey/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/boo/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/compilation-error/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/csc027/config.h7
-rw-r--r--keyboards/keebio/iris/keymaps/csc027/rules.mk2
-rw-r--r--keyboards/keebio/iris/keymaps/davidrambo/keymap.c4
-rw-r--r--keyboards/keebio/iris/keymaps/dcompact/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/ddone/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/default/config.h21
-rw-r--r--keyboards/keebio/iris/keymaps/default/keymap.c20
-rw-r--r--keyboards/keebio/iris/keymaps/dvorak/keebio_iris_rev2_layout_dvorak.json2
-rw-r--r--keyboards/keebio/iris/keymaps/dvorak/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/edvorakjp/keymap.c4
-rw-r--r--keyboards/keebio/iris/keymaps/emp/config.h97
-rw-r--r--keyboards/keebio/iris/keymaps/emp/keymap.c277
-rw-r--r--keyboards/keebio/iris/keymaps/fluffactually/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/hbbisenieks/keymap.c4
-rw-r--r--keyboards/keebio/iris/keymaps/jerryhcooke/keymap.c6
-rw-r--r--keyboards/keebio/iris/keymaps/khang/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/khord/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/krusli/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/keebio/iris/keymaps/mattly/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/mnil/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/mojitas/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/olligranlund_nordic/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/omgvee/keymap.c4
-rw-r--r--keyboards/keebio/iris/keymaps/osiris/keymap.c4
-rw-r--r--keyboards/keebio/iris/keymaps/radlinskii/config.h37
-rw-r--r--keyboards/keebio/iris/keymaps/radlinskii/keymap.c193
-rw-r--r--keyboards/keebio/iris/keymaps/radlinskii/light_layers.h179
-rw-r--r--keyboards/keebio/iris/keymaps/radlinskii/readme.md137
-rw-r--r--keyboards/keebio/iris/keymaps/radlinskii/rules.mk3
-rw-r--r--keyboards/keebio/iris/keymaps/sq5rix/keymap.c5
-rw-r--r--keyboards/keebio/iris/keymaps/two_knob/config.h62
-rw-r--r--keyboards/keebio/iris/keymaps/two_knob/keymap.c261
-rw-r--r--keyboards/keebio/iris/keymaps/two_knob/readme.md15
-rw-r--r--keyboards/keebio/iris/keymaps/two_knob/rules.mk15
-rw-r--r--keyboards/keebio/iris/keymaps/two_knob/two_knob.json185
-rw-r--r--keyboards/keebio/iris/keymaps/via/keymap.c30
-rw-r--r--keyboards/keebio/iris/keymaps/via/rules.mk1
-rw-r--r--keyboards/keebio/iris/keymaps/xyverz/keymap.c2
-rw-r--r--keyboards/keebio/iris/keymaps/yoonbae81/keymap.c2
-rw-r--r--keyboards/keebio/iris/rev1/config.h7
-rw-r--r--keyboards/keebio/iris/rev1/info.json7
-rw-r--r--keyboards/keebio/iris/rev1_led/config.h7
-rw-r--r--keyboards/keebio/iris/rev1_led/info.json7
-rw-r--r--keyboards/keebio/iris/rev2/config.h7
-rw-r--r--keyboards/keebio/iris/rev2/info.json7
-rw-r--r--keyboards/keebio/iris/rev3/config.h7
-rw-r--r--keyboards/keebio/iris/rev3/info.json7
-rw-r--r--keyboards/keebio/iris/rev4/config.h7
-rw-r--r--keyboards/keebio/iris/rev4/info.json7
-rw-r--r--keyboards/keebio/iris/rev5/config.h7
-rw-r--r--keyboards/keebio/iris/rev5/info.json7
-rw-r--r--keyboards/keebio/iris/rev6/config.h7
-rw-r--r--keyboards/keebio/iris/rev6/info.json7
-rw-r--r--keyboards/keebio/iris/rev6/rev6.c4
-rw-r--r--keyboards/keebio/iris/rev6a/config.h15
-rw-r--r--keyboards/keebio/iris/rev6a/info.json7
-rw-r--r--keyboards/keebio/iris/rev6a/rev6a.c59
-rw-r--r--keyboards/keebio/iris/rev6b/config.h121
-rw-r--r--keyboards/keebio/iris/rev6b/info.json7
-rw-r--r--keyboards/keebio/iris/rev6b/rev6b.c85
-rw-r--r--keyboards/keebio/iris/rev6b/rev6b.h42
-rw-r--r--keyboards/keebio/iris/rev6b/rules.mk24
-rw-r--r--keyboards/keebio/iris/rev7/config.h122
-rw-r--r--keyboards/keebio/iris/rev7/info.json7
-rw-r--r--keyboards/keebio/iris/rev7/rev7.c99
-rw-r--r--keyboards/keebio/iris/rev7/rev7.h42
-rw-r--r--keyboards/keebio/iris/rev7/rules.mk24
-rw-r--r--keyboards/keebio/kbo5000/info.json337
-rw-r--r--keyboards/keebio/kbo5000/rev1/config.h7
-rw-r--r--keyboards/keebio/kbo5000/rev1/info.json343
-rw-r--r--keyboards/keebio/laplace/config.h7
-rw-r--r--keyboards/keebio/laplace/info.json6
-rw-r--r--keyboards/keebio/levinson/info.json4
-rw-r--r--keyboards/keebio/levinson/keymaps/atreus/keymap.c2
-rw-r--r--keyboards/keebio/levinson/keymaps/dcompact/keymap.c2
-rw-r--r--keyboards/keebio/levinson/keymaps/default/keymap.c14
-rw-r--r--keyboards/keebio/levinson/keymaps/issmirnov/keymap.c4
-rw-r--r--keyboards/keebio/levinson/keymaps/issmirnov/rgb.c2
-rw-r--r--keyboards/keebio/levinson/keymaps/issmirnov/rgb.h2
-rw-r--r--keyboards/keebio/levinson/keymaps/jyh/keymap.c2
-rw-r--r--keyboards/keebio/levinson/keymaps/jyh2/keymap.c2
-rw-r--r--keyboards/keebio/levinson/keymaps/ksamborski/keymap.c2
-rw-r--r--keyboards/keebio/levinson/keymaps/losinggeneration/keymap.c4
-rw-r--r--keyboards/keebio/levinson/keymaps/mmacdougall/keymap.c2
-rw-r--r--keyboards/keebio/levinson/keymaps/numpad/keymap.c4
-rw-r--r--keyboards/keebio/levinson/keymaps/treadwell/keymap.c2
-rw-r--r--keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c6
-rw-r--r--keyboards/keebio/levinson/rev1/config.h7
-rw-r--r--keyboards/keebio/levinson/rev1/info.json7
-rw-r--r--keyboards/keebio/levinson/rev2/config.h7
-rw-r--r--keyboards/keebio/levinson/rev2/info.json7
-rw-r--r--keyboards/keebio/levinson/rev3/config.h7
-rw-r--r--keyboards/keebio/levinson/rev3/info.json7
-rw-r--r--keyboards/keebio/nyquist/info.json5
-rw-r--r--keyboards/keebio/nyquist/keymaps/DivergeJM/keymap.c4
-rw-r--r--keyboards/keebio/nyquist/keymaps/bramver/keymap.c2
-rw-r--r--keyboards/keebio/nyquist/keymaps/danielhklein/config.h4
-rw-r--r--keyboards/keebio/nyquist/keymaps/default/keymap.c14
-rw-r--r--keyboards/keebio/nyquist/keymaps/jojiichan/keymap.c2
-rw-r--r--keyboards/keebio/nyquist/keymaps/losinggeneration/keymap.c4
-rw-r--r--keyboards/keebio/nyquist/keymaps/peott-fr/keymap.c4
-rw-r--r--keyboards/keebio/nyquist/keymaps/pipicanim/keymap.c2
-rw-r--r--keyboards/keebio/nyquist/keymaps/pitty/keymap.c2
-rw-r--r--keyboards/keebio/nyquist/keymaps/pjanx/keymap.c2
-rw-r--r--keyboards/keebio/nyquist/keymaps/shovelpaw/keymap.c2
-rw-r--r--keyboards/keebio/nyquist/keymaps/skug/keymap.c2
-rw-r--r--keyboards/keebio/nyquist/keymaps/tester/keymap.c2
-rwxr-xr-xkeyboards/keebio/nyquist/keymaps/winternebs/keymap.c2
-rw-r--r--keyboards/keebio/nyquist/keymaps/yshrsmz/keymap.c2
-rw-r--r--keyboards/keebio/nyquist/rev1/config.h7
-rw-r--r--keyboards/keebio/nyquist/rev1/info.json7
-rw-r--r--keyboards/keebio/nyquist/rev2/config.h7
-rw-r--r--keyboards/keebio/nyquist/rev2/info.json7
-rw-r--r--keyboards/keebio/nyquist/rev3/config.h7
-rw-r--r--keyboards/keebio/nyquist/rev3/info.json7
-rw-r--r--keyboards/keebio/quefrency/keymaps/bcat/keymap.c2
-rw-r--r--keyboards/keebio/quefrency/keymaps/bfiedler/keymap.c2
-rw-r--r--keyboards/keebio/quefrency/keymaps/default/config.h3
-rw-r--r--keyboards/keebio/quefrency/keymaps/default/keymap.c52
-rw-r--r--keyboards/keebio/quefrency/keymaps/default60/config.h27
-rw-r--r--keyboards/keebio/quefrency/keymaps/default60/keymap.c35
-rw-r--r--keyboards/keebio/quefrency/keymaps/default65macro/config.h24
-rw-r--r--keyboards/keebio/quefrency/keymaps/default65macro/keymap.c50
-rw-r--r--keyboards/keebio/quefrency/keymaps/drashna_ms/keymap.c2
-rw-r--r--keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c2
-rw-r--r--keyboards/keebio/quefrency/keymaps/kingwangwong/keymap.c2
-rw-r--r--keyboards/keebio/quefrency/keymaps/peott-fr/keymap.c2
-rw-r--r--keyboards/keebio/quefrency/keymaps/via/keymap.c9
-rw-r--r--keyboards/keebio/quefrency/keymaps/via/rules.mk1
-rw-r--r--keyboards/keebio/quefrency/quefrency.h3
-rw-r--r--keyboards/keebio/quefrency/rev1/config.h7
-rw-r--r--keyboards/keebio/quefrency/rev1/info.json8
-rw-r--r--keyboards/keebio/quefrency/rev2/config.h18
-rw-r--r--keyboards/keebio/quefrency/rev2/info.json8
-rw-r--r--keyboards/keebio/quefrency/rev2/rev2.c2
-rw-r--r--keyboards/keebio/quefrency/rev3/config.h18
-rw-r--r--keyboards/keebio/quefrency/rev3/info.json8
-rw-r--r--keyboards/keebio/quefrency/rev3/rev3.c2
-rw-r--r--keyboards/keebio/quefrency/rev4/config.h18
-rw-r--r--keyboards/keebio/quefrency/rev4/info.json475
-rw-r--r--keyboards/keebio/quefrency/rev4/rev4.c2
-rw-r--r--keyboards/keebio/quefrency/rev4/rev4.h80
-rw-r--r--keyboards/keebio/quefrency/rev5/config.h62
-rw-r--r--keyboards/keebio/quefrency/rev5/info.json376
-rw-r--r--keyboards/keebio/quefrency/rev5/readme.md18
-rw-r--r--keyboards/keebio/quefrency/rev5/rev5.c37
-rw-r--r--keyboards/keebio/quefrency/rev5/rev5.h120
-rw-r--r--keyboards/keebio/quefrency/rev5/rules.mk4
-rw-r--r--keyboards/keebio/rorschach/info.json73
-rw-r--r--keyboards/keebio/rorschach/keymaps/default/keymap.c10
-rw-r--r--keyboards/keebio/rorschach/keymaps/insertsnideremarks/keymap.c6
-rw-r--r--keyboards/keebio/rorschach/keymaps/tuesdayjohn/keymap.c6
-rw-r--r--keyboards/keebio/rorschach/rev1/config.h7
-rw-r--r--keyboards/keebio/rorschach/rev1/info.json79
-rw-r--r--keyboards/keebio/sinc/info.json5
-rw-r--r--keyboards/keebio/sinc/rev1/config.h7
-rw-r--r--keyboards/keebio/sinc/rev1/info.json7
-rw-r--r--keyboards/keebio/sinc/rev2/config.h7
-rw-r--r--keyboards/keebio/sinc/rev2/info.json7
-rw-r--r--keyboards/keebio/stick/config.h7
-rw-r--r--keyboards/keebio/stick/info.json6
-rw-r--r--keyboards/keebio/tragicforce68/config.h8
-rw-r--r--keyboards/keebio/tragicforce68/info.json6
-rw-r--r--keyboards/keebio/tragicforce68/keymaps/buswerks/keymap.c2
-rwxr-xr-xkeyboards/keebio/tragicforce68/keymaps/rossman360/keymap.c2
-rw-r--r--keyboards/keebio/tukey/config.h7
-rw-r--r--keyboards/keebio/tukey/info.json6
-rw-r--r--keyboards/keebio/viterbi/info.json5
-rw-r--r--keyboards/keebio/viterbi/keymaps/default/keymap.c10
-rw-r--r--keyboards/keebio/viterbi/keymaps/vosechu/keymap.c2
-rw-r--r--keyboards/keebio/viterbi/rev1/config.h7
-rw-r--r--keyboards/keebio/viterbi/rev1/info.json7
-rw-r--r--keyboards/keebio/viterbi/rev2/config.h7
-rw-r--r--keyboards/keebio/viterbi/rev2/info.json7
-rw-r--r--keyboards/keebio/wavelet/config.h7
-rw-r--r--keyboards/keebio/wavelet/info.json6
-rw-r--r--keyboards/keebio/wavelet/keymaps/default/keymap.c14
-rw-r--r--keyboards/keebio/wtf60/config.h7
-rw-r--r--keyboards/keebio/wtf60/info.json6
-rw-r--r--keyboards/keebmonkey/kbmg68/config.h61
-rw-r--r--keyboards/keebmonkey/kbmg68/info.json86
-rw-r--r--keyboards/keebmonkey/kbmg68/kbmg68.c20
-rw-r--r--keyboards/keebmonkey/kbmg68/kbmg68.h38
-rw-r--r--keyboards/keebmonkey/kbmg68/keymaps/default/keymap.c45
-rw-r--r--keyboards/keebmonkey/kbmg68/readme.md27
-rw-r--r--keyboards/keebmonkey/kbmg68/rules.mk20
-rw-r--r--keyboards/keebsforall/coarse60/config.h7
-rw-r--r--keyboards/keebsforall/coarse60/info.json6
-rw-r--r--keyboards/keebsforall/coarse60/readme.md2
-rw-r--r--keyboards/keebsforall/freebird60/config.h8
-rw-r--r--keyboards/keebsforall/freebird60/info.json8
-rw-r--r--keyboards/keebsforall/freebirdnp/lite/config.h8
-rw-r--r--keyboards/keebsforall/freebirdnp/lite/info.json9
-rw-r--r--keyboards/keebsforall/freebirdnp/lite/readme.md2
-rw-r--r--keyboards/keebsforall/freebirdnp/pro/config.h8
-rw-r--r--keyboards/keebsforall/freebirdnp/pro/info.json9
-rw-r--r--keyboards/keebsforall/freebirdnp/pro/readme.md2
-rw-r--r--keyboards/keebsforall/freebirdtkl/config.h8
-rw-r--r--keyboards/keebsforall/freebirdtkl/info.json6
-rw-r--r--keyboards/keebsforall/freebirdtkl/readme.md2
-rwxr-xr-xkeyboards/keebwerk/mega/ansi/config.h7
-rwxr-xr-xkeyboards/keebwerk/mega/ansi/info.json8
-rw-r--r--keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c2
-rw-r--r--keyboards/keebwerk/nano_slider/config.h8
-rw-r--r--keyboards/keebwerk/nano_slider/info.json6
-rw-r--r--keyboards/keebwerk/nano_slider/keymaps/midi2vol/keymap.c6
-rw-r--r--keyboards/keebwerk/nano_slider/keymaps/via/keymap.c67
-rw-r--r--keyboards/keebwerk/nano_slider/keymaps/via/rules.mk1
-rw-r--r--keyboards/keebzdotnet/fme/config.h8
-rw-r--r--keyboards/keebzdotnet/fme/info.json6
-rw-r--r--keyboards/keebzdotnet/wazowski/config.h8
-rw-r--r--keyboards/keebzdotnet/wazowski/info.json8
-rw-r--r--keyboards/kegen/gboy/config.h60
-rw-r--r--keyboards/kegen/gboy/gboy.c18
-rw-r--r--keyboards/kegen/gboy/gboy.h68
-rw-r--r--keyboards/kegen/gboy/info.json92
-rw-r--r--keyboards/kegen/gboy/keymaps/default/keymap.c54
-rw-r--r--keyboards/kegen/gboy/keymaps/via/keymap.c54
-rw-r--r--keyboards/kegen/gboy/keymaps/via/rules.mk1
-rw-r--r--keyboards/kegen/gboy/readme.md28
-rw-r--r--keyboards/kegen/gboy/rules.mk18
-rw-r--r--keyboards/keybage/radpad/config.h8
-rw-r--r--keyboards/keybage/radpad/info.json8
-rw-r--r--keyboards/keybee/keybee65/config.h8
-rw-r--r--keyboards/keybee/keybee65/info.json6
-rw-r--r--keyboards/keybee/keybee65/readme.md2
-rw-r--r--keyboards/keyboardio/atreus/config.h9
-rw-r--r--keyboards/keyboardio/atreus/info.json8
-rw-r--r--keyboards/keyboardio/atreus/keymaps/ardumont/keymap.c2
-rw-r--r--keyboards/keyboardio/atreus/keymaps/dshields/keymap.c4
-rw-r--r--keyboards/keyboardio/atreus/keymaps/kkokdae/config.h27
-rw-r--r--keyboards/keyboardio/atreus/keymaps/kkokdae/keymap.c127
-rw-r--r--keyboards/keyboardio/atreus/keymaps/kkokdae/readme.md7
-rw-r--r--keyboards/keyboardio/atreus/keymaps/kkokdae/rules.mk3
-rw-r--r--keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/keyboardio/atreus/keymaps/replicaJunction/keymap.c2
-rw-r--r--keyboards/keyboardio/atreus/keymaps/xyverz/keymap.c4
-rw-r--r--keyboards/keyboardio/model01/config.h7
-rw-r--r--keyboards/keyboardio/model01/info.json8
-rw-r--r--keyboards/keyboardio/model01/keymaps/dshields/keymap.c4
-rw-r--r--keyboards/keyboardio/model01/keymaps/tw1t611/keymap.c2
-rw-r--r--keyboards/keycapsss/kimiko/info.json75
-rw-r--r--keyboards/keycapsss/kimiko/keymaps/default/keymap.c83
-rw-r--r--keyboards/keycapsss/kimiko/keymaps/default/rules.mk2
-rw-r--r--keyboards/keycapsss/kimiko/keymaps/oriaj3/config.h75
-rw-r--r--keyboards/keycapsss/kimiko/keymaps/oriaj3/glcdfont.c251
-rw-r--r--keyboards/keycapsss/kimiko/keymaps/oriaj3/keymap.c413
-rw-r--r--keyboards/keycapsss/kimiko/keymaps/oriaj3/rules.mk21
-rw-r--r--keyboards/keycapsss/kimiko/kimiko.c61
-rw-r--r--keyboards/keycapsss/kimiko/kimiko.h25
-rw-r--r--keyboards/keycapsss/kimiko/rev1/config.h7
-rw-r--r--keyboards/keycapsss/kimiko/rev1/info.json81
-rw-r--r--keyboards/keycapsss/o4l_5x12/config.h8
-rw-r--r--keyboards/keycapsss/o4l_5x12/info.json8
-rw-r--r--keyboards/keycapsss/o4l_5x12/keymaps/2x2u/keymap.c2
-rw-r--r--keyboards/keycapsss/o4l_5x12/keymaps/default/keymap.c2
-rw-r--r--keyboards/keycapsss/plaid_pad/config.h5
-rw-r--r--keyboards/keycapsss/plaid_pad/info.json6
-rw-r--r--keyboards/keycapsss/plaid_pad/rev1/config.h5
-rw-r--r--keyboards/keycapsss/plaid_pad/rev1/info.json6
-rw-r--r--keyboards/keycapsss/plaid_pad/rev2/config.h5
-rw-r--r--keyboards/keycapsss/plaid_pad/rev2/info.json6
-rw-r--r--keyboards/keycapsss/plaid_pad/rev3/config.h5
-rw-r--r--keyboards/keycapsss/plaid_pad/rev3/info.json6
-rw-r--r--keyboards/keychron/q0/config.h101
-rw-r--r--keyboards/keychron/q0/halconf.h21
-rw-r--r--keyboards/keychron/q0/mcuconf.h22
-rw-r--r--keyboards/keychron/q0/q0.c57
-rw-r--r--keyboards/keychron/q0/q0.h23
-rw-r--r--keyboards/keychron/q0/readme.md19
-rw-r--r--keyboards/keychron/q0/rev_0130/config.h24
-rw-r--r--keyboards/keychron/q0/rev_0130/info.json43
-rw-r--r--keyboards/keychron/q0/rev_0130/keymaps/default/keymap.c37
-rw-r--r--keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c53
-rw-r--r--keyboards/keychron/q0/rev_0130/keymaps/via/rules.mk1
-rw-r--r--keyboards/keychron/q0/rev_0130/readme.md1
-rw-r--r--keyboards/keychron/q0/rev_0130/rev_0130.c88
-rw-r--r--keyboards/keychron/q0/rev_0130/rev_0130.h38
-rw-r--r--keyboards/keychron/q0/rev_0130/rules.mk27
-rw-r--r--keyboards/keychron/q1/config.h5
-rw-r--r--keyboards/keychron/q1/rev_0100/config.h5
-rw-r--r--keyboards/keychron/q1/rev_0100/info.json8
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/teimor/config.h32
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/teimor/keymap.c95
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/teimor/keymap_user.h48
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/teimor/readme.md13
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/teimor/rgb_matrix_user.c91
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/teimor/rgb_matrix_user.h25
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/teimor/rules.mk14
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_mac_caps.c50
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_mac_caps.h23
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_setup.c49
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_setup.h38
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_user.c28
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_win_caps.c50
-rw-r--r--keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_win_caps.h23
-rw-r--r--keyboards/keychron/q1/rev_0101/config.h4
-rw-r--r--keyboards/keychron/q1/rev_0101/info.json8
-rw-r--r--keyboards/keychron/q1/rev_0102/config.h5
-rw-r--r--keyboards/keychron/q1/rev_0102/info.json8
-rw-r--r--keyboards/keychron/q2/config.h8
-rw-r--r--keyboards/keychron/q2/rev_0110/config.h4
-rw-r--r--keyboards/keychron/q2/rev_0110/info.json8
-rw-r--r--keyboards/keychron/q2/rev_0110/rules.mk3
-rw-r--r--keyboards/keychron/q2/rev_0111/config.h4
-rw-r--r--keyboards/keychron/q2/rev_0111/info.json8
-rw-r--r--keyboards/keychron/q2/rev_0111/rules.mk3
-rw-r--r--keyboards/keychron/q2/rev_0112/config.h4
-rw-r--r--keyboards/keychron/q2/rev_0112/info.json8
-rw-r--r--keyboards/keychron/q2/rev_0112/rules.mk3
-rw-r--r--keyboards/keychron/q2/rev_0113/config.h4
-rw-r--r--keyboards/keychron/q2/rev_0113/info.json8
-rw-r--r--keyboards/keychron/q2/rev_0113/rules.mk3
-rw-r--r--keyboards/keyhive/absinthe/config.h8
-rw-r--r--keyboards/keyhive/absinthe/info.json6
-rw-r--r--keyboards/keyhive/ergosaurus/config.h8
-rw-r--r--keyboards/keyhive/ergosaurus/info.json6
-rwxr-xr-xkeyboards/keyhive/honeycomb/config.h8
-rw-r--r--keyboards/keyhive/honeycomb/info.json6
-rwxr-xr-xkeyboards/keyhive/honeycomb/keymaps/default/keymap.c2
-rw-r--r--keyboards/keyhive/lattice60/config.h8
-rw-r--r--keyboards/keyhive/lattice60/info.json8
-rw-r--r--keyboards/keyhive/maypad/config.h8
-rw-r--r--keyboards/keyhive/maypad/info.json6
-rw-r--r--keyboards/keyhive/navi10/info.json5
-rw-r--r--keyboards/keyhive/navi10/keymaps/default/keymap.c2
-rw-r--r--keyboards/keyhive/navi10/keymaps/devdev/keymap.c2
-rw-r--r--keyboards/keyhive/navi10/keymaps/emdarcher/keymap.c2
-rw-r--r--keyboards/keyhive/navi10/rev0/config.h8
-rw-r--r--keyboards/keyhive/navi10/rev0/info.json5
-rw-r--r--keyboards/keyhive/navi10/rev2/config.h8
-rw-r--r--keyboards/keyhive/navi10/rev2/info.json5
-rw-r--r--keyboards/keyhive/navi10/rev3/config.h8
-rw-r--r--keyboards/keyhive/navi10/rev3/info.json5
-rw-r--r--keyboards/keyhive/opus/config.h8
-rw-r--r--keyboards/keyhive/opus/info.json8
-rw-r--r--keyboards/keyhive/opus/keymaps/thefoxcodes/keymap.c2
-rw-r--r--keyboards/keyhive/smallice/config.h8
-rw-r--r--keyboards/keyhive/smallice/info.json6
-rw-r--r--keyboards/keyhive/southpole/config.h8
-rw-r--r--keyboards/keyhive/southpole/info.json6
-rw-r--r--keyboards/keyhive/southpole/keymaps/foobeard/keymap.c2
-rw-r--r--keyboards/keyhive/uno/info.json6
-rw-r--r--keyboards/keyhive/uno/rev1/config.h8
-rw-r--r--keyboards/keyhive/uno/rev1/info.json6
-rw-r--r--keyboards/keyhive/uno/rev2/config.h8
-rw-r--r--keyboards/keyhive/uno/rev2/info.json6
-rw-r--r--keyboards/keyhive/ut472/config.h8
-rw-r--r--keyboards/keyhive/ut472/info.json6
-rwxr-xr-xkeyboards/keyhive/ut472/keymaps/annihilator6000/UT472_Annihilator6000_Configurator_file.json2
-rw-r--r--keyboards/keyhive/ut472/keymaps/annihilator6000/keymap.c2
-rw-r--r--keyboards/keyhive/ut472/keymaps/gardego5/keymap.c116
-rw-r--r--keyboards/keyhive/ut472/keymaps/gardego5/readme.md5
-rw-r--r--keyboards/keyhive/ut472/keymaps/hvp/keymap.c4
-rw-r--r--keyboards/keyhive/ut472/keymaps/stefanopace/keymap.c2
-rw-r--r--keyboards/keyhive/ut472/keymaps/tucznak/keymap.c2
-rw-r--r--keyboards/keyprez/bison/config.h8
-rw-r--r--keyboards/keyprez/bison/info.json6
-rw-r--r--keyboards/keyprez/corgi/config.h8
-rw-r--r--keyboards/keyprez/corgi/info.json6
-rw-r--r--keyboards/keyprez/rhino/config.h7
-rw-r--r--keyboards/keyprez/rhino/info.json6
-rw-r--r--keyboards/keyprez/unicorn/config.h8
-rw-r--r--keyboards/keyprez/unicorn/info.json6
-rw-r--r--keyboards/keyprez/unicorn/keymaps/jorge/keymap.c2
-rw-r--r--keyboards/keyquest/enclave/config.h52
-rw-r--r--keyboards/keyquest/enclave/info.json27
-rw-r--r--keyboards/keyquest/enclave/keymaps/default/keymap.c51
-rw-r--r--keyboards/keyquest/enclave/keymaps/via/keymap.c50
-rw-r--r--keyboards/keyquest/enclave/keymaps/via/rules.mk1
-rw-r--r--keyboards/keyquest/enclave/readme.md16
-rw-r--r--keyboards/keyquest/enclave/rules.mk19
-rw-r--r--keyboards/keyquest/readme.md4
-rwxr-xr-xkeyboards/keysofkings/twokey/config.h8
-rw-r--r--keyboards/keysofkings/twokey/info.json6
-rw-r--r--keyboards/keystonecaps/gameroyadvance/config.h12
-rw-r--r--keyboards/keystonecaps/gameroyadvance/info.json8
-rw-r--r--keyboards/keystonecaps/gameroyadvance/readme.md2
-rw-r--r--keyboards/keyten/aperture/aperture.c17
-rw-r--r--keyboards/keyten/aperture/aperture.h48
-rw-r--r--keyboards/keyten/aperture/config.h35
-rw-r--r--keyboards/keyten/aperture/info.json89
-rw-r--r--keyboards/keyten/aperture/keymaps/default/keymap.c34
-rw-r--r--keyboards/keyten/aperture/keymaps/default/readme.md1
-rw-r--r--keyboards/keyten/aperture/keymaps/via/keymap.c48
-rw-r--r--keyboards/keyten/aperture/keymaps/via/readme.md1
-rw-r--r--keyboards/keyten/aperture/keymaps/via/rules.mk1
-rw-r--r--keyboards/keyten/aperture/readme.md29
-rw-r--r--keyboards/keyten/aperture/rules.mk19
-rw-r--r--keyboards/keyten/kt60_m/config.h8
-rw-r--r--keyboards/keyten/kt60_m/info.json6
-rw-r--r--keyboards/keyten/kt60_m/readme.md2
-rw-r--r--keyboards/kikkou/config.h9
-rw-r--r--keyboards/kikkou/info.json6
-rw-r--r--keyboards/kikoslab/ellora65/config.h6
-rw-r--r--keyboards/kikoslab/ellora65/info.json6
-rw-r--r--keyboards/kikoslab/ellora65/readme.md2
-rw-r--r--keyboards/kikoslab/kl90/config.h6
-rw-r--r--keyboards/kikoslab/kl90/info.json6
-rw-r--r--keyboards/kin80/blackpill103/config.h2
-rw-r--r--keyboards/kin80/blackpill103/info.json5
-rw-r--r--keyboards/kin80/blackpill401/config.h2
-rw-r--r--keyboards/kin80/blackpill401/info.json5
-rw-r--r--keyboards/kin80/blackpill401/rules.mk1
-rw-r--r--keyboards/kin80/blackpill411/config.h2
-rw-r--r--keyboards/kin80/blackpill411/info.json5
-rw-r--r--keyboards/kin80/blackpill411/rules.mk1
-rw-r--r--keyboards/kin80/info.json194
-rw-r--r--keyboards/kin80/keymaps/andrew/keymap.c4
-rw-r--r--keyboards/kin80/keymaps/maxim/keymap.c2
-rw-r--r--keyboards/kin80/keymaps/quartz64/keymap.c2
-rw-r--r--keyboards/kin80/micro/config.h3
-rw-r--r--keyboards/kin80/micro/info.json5
-rw-r--r--keyboards/kin80/readme.md2
-rw-r--r--keyboards/kindakeyboards/conone65/config.h8
-rw-r--r--keyboards/kindakeyboards/conone65/info.json6
-rw-r--r--keyboards/kinesis/alvicstep/config.h5
-rw-r--r--keyboards/kinesis/alvicstep/info.json9
-rw-r--r--keyboards/kinesis/config.h5
-rw-r--r--keyboards/kinesis/info.json1
-rw-r--r--keyboards/kinesis/keymaps/carpalx/keymap.c4
-rw-r--r--keyboards/kinesis/keymaps/carpalx/readme.md2
-rw-r--r--keyboards/kinesis/keymaps/dvorak/keymap.c2
-rw-r--r--keyboards/kinesis/keymaps/farmergreg/keymap.c4
-rw-r--r--keyboards/kinesis/keymaps/heatxsink/keymap.c2
-rw-r--r--keyboards/kinesis/keymaps/insertsnideremarks/keymap.c6
-rw-r--r--keyboards/kinesis/keymaps/jwon/keymap.c2
-rw-r--r--keyboards/kinesis/keymaps/milestogo/keymap.c10
-rw-r--r--keyboards/kinesis/keymaps/peott-fr/keymap.c2
-rw-r--r--keyboards/kinesis/keymaps/stapelberg/keymap.c30
-rw-r--r--keyboards/kinesis/keymaps/tuesdayjohn/keymap.c6
-rw-r--r--keyboards/kinesis/keymaps/tw1t611/keymap.c2
-rw-r--r--keyboards/kinesis/keymaps/xyverz/keymap.c8
-rw-r--r--keyboards/kinesis/kinesis.h2
-rw-r--r--keyboards/kinesis/kint2pp/config.h5
-rw-r--r--keyboards/kinesis/kint2pp/info.json9
-rw-r--r--keyboards/kinesis/kint36/config.h13
-rw-r--r--keyboards/kinesis/kint36/info.json9
-rw-r--r--keyboards/kinesis/kint36/keymaps/kzar/keymap.c4
-rw-r--r--keyboards/kinesis/kint36/kint36.c5
-rw-r--r--keyboards/kinesis/kint36/rules.mk3
-rw-r--r--keyboards/kinesis/kint41/config.h13
-rw-r--r--keyboards/kinesis/kint41/info.json9
-rw-r--r--keyboards/kinesis/kint41/kint41.c10
-rw-r--r--keyboards/kinesis/kint41/rules.mk3
-rw-r--r--keyboards/kinesis/kintlc/chconf.h53
-rw-r--r--keyboards/kinesis/kintlc/config.h101
-rw-r--r--keyboards/kinesis/kintlc/info.json9
-rw-r--r--keyboards/kinesis/kintlc/kintlc.c27
-rw-r--r--keyboards/kinesis/kintlc/kintlc.h92
-rw-r--r--keyboards/kinesis/kintlc/mcuconf.h45
-rw-r--r--keyboards/kinesis/kintlc/readme.md3
-rw-r--r--keyboards/kinesis/kintlc/rules.mk9
-rw-r--r--keyboards/kinesis/nguyenvietyen/config.h5
-rw-r--r--keyboards/kinesis/nguyenvietyen/info.json9
-rw-r--r--keyboards/kinesis/stapelberg/config.h5
-rw-r--r--keyboards/kinesis/stapelberg/info.json9
-rw-r--r--keyboards/kineticlabs/emu/hotswap/config.h8
-rw-r--r--keyboards/kineticlabs/emu/hotswap/info.json8
-rw-r--r--keyboards/kineticlabs/emu/soldered/config.h8
-rw-r--r--keyboards/kineticlabs/emu/soldered/info.json8
-rw-r--r--keyboards/kingly_keys/ave/config.h8
-rw-r--r--keyboards/kingly_keys/ave/ortho/info.json8
-rw-r--r--keyboards/kingly_keys/ave/staggered/info.json8
-rw-r--r--keyboards/kingly_keys/little_foot/config.h8
-rw-r--r--keyboards/kingly_keys/little_foot/info.json8
-rw-r--r--keyboards/kingly_keys/little_foot/keymaps/yanfali/keymap.c2
-rw-r--r--keyboards/kingly_keys/romac/config.h7
-rw-r--r--keyboards/kingly_keys/romac/info.json6
-rw-r--r--keyboards/kingly_keys/romac/keymaps/stanrc85/keymap.c2
-rw-r--r--keyboards/kingly_keys/romac_plus/config.h7
-rw-r--r--keyboards/kingly_keys/romac_plus/info.json6
-rw-r--r--keyboards/kingly_keys/ropro/config.h8
-rw-r--r--keyboards/kingly_keys/ropro/info.json8
-rw-r--r--keyboards/kingly_keys/ropro/keymaps/jdayton3/keymap.c2
-rw-r--r--keyboards/kingly_keys/smd_milk/config.h8
-rw-r--r--keyboards/kingly_keys/smd_milk/info.json8
-rw-r--r--keyboards/kingly_keys/soap/config.h8
-rw-r--r--keyboards/kingly_keys/soap/info.json8
-rw-r--r--keyboards/kira75/config.h8
-rw-r--r--keyboards/kira75/info.json6
-rw-r--r--keyboards/kira80/config.h8
-rw-r--r--keyboards/kira80/info.json8
-rw-r--r--keyboards/kira80/keymaps/ansi_wkl/keymap.c2
-rw-r--r--keyboards/kiwikeebs/macro/config.h8
-rw-r--r--keyboards/kiwikeebs/macro/info.json8
-rw-r--r--keyboards/kiwikeebs/macro_v2/config.h8
-rw-r--r--keyboards/kiwikeebs/macro_v2/info.json8
-rw-r--r--keyboards/kiwikey/borderland/config.h8
-rw-r--r--keyboards/kiwikey/borderland/info.json6
-rw-r--r--keyboards/kiwikey/borderland/readme.md2
-rw-r--r--keyboards/kiwikey/kawii9/config.h8
-rw-r--r--keyboards/kiwikey/kawii9/info.json6
-rw-r--r--keyboards/kiwikey/wanderland/config.h8
-rw-r--r--keyboards/kiwikey/wanderland/info.json6
-rw-r--r--keyboards/kiwikey/wanderland/keymaps/stanrc85/keymap.c2
-rw-r--r--keyboards/kkatano/bakeneko60/config.h8
-rw-r--r--keyboards/kkatano/bakeneko60/info.json6
-rw-r--r--keyboards/kkatano/bakeneko65/rev2/config.h8
-rw-r--r--keyboards/kkatano/bakeneko65/rev2/info.json6
-rw-r--r--keyboards/kkatano/bakeneko65/rev3/config.h8
-rw-r--r--keyboards/kkatano/bakeneko65/rev3/info.json6
-rw-r--r--keyboards/kkatano/bakeneko80/config.h8
-rw-r--r--keyboards/kkatano/bakeneko80/info.json6
-rw-r--r--keyboards/kkatano/wallaby/config.h8
-rw-r--r--keyboards/kkatano/wallaby/info.json6
-rw-r--r--keyboards/kkatano/yurei/config.h8
-rw-r--r--keyboards/kkatano/yurei/info.json6
-rw-r--r--keyboards/kmac/config.h8
-rw-r--r--keyboards/kmac/info.json8
-rw-r--r--keyboards/kmac_pad/config.h8
-rw-r--r--keyboards/kmac_pad/info.json6
-rwxr-xr-xkeyboards/kmini/config.h8
-rwxr-xr-xkeyboards/kmini/info.json6
-rw-r--r--keyboards/knobgoblin/config.h7
-rw-r--r--keyboards/knobgoblin/info.json8
-rw-r--r--keyboards/knobgoblin/keymaps/moults31/keymap.c2
-rw-r--r--keyboards/knops/mini/config.h8
-rw-r--r--keyboards/knops/mini/info.json7
-rw-r--r--keyboards/knops/mini/keymaps/mverteuil/keymap.c2
-rw-r--r--keyboards/kona_classic/config.h8
-rw-r--r--keyboards/kona_classic/info.json6
-rw-r--r--keyboards/kona_classic/keymaps/ansi_arrows/keymap.c2
-rw-r--r--keyboards/kona_classic/keymaps/ansi_arrows_lcap/keymap.c2
-rw-r--r--keyboards/kona_classic/keymaps/ansi_split/keymap.c2
-rw-r--r--keyboards/kona_classic/keymaps/ansi_split_arrows/keymap.c2
-rw-r--r--keyboards/kona_classic/keymaps/iso_arrows/keymap.c2
-rw-r--r--keyboards/kona_classic/keymaps/iso_split/keymap.c2
-rw-r--r--keyboards/kona_classic/keymaps/iso_split_arrows/keymap.c2
-rw-r--r--keyboards/kopibeng/mnk65/config.h8
-rw-r--r--keyboards/kopibeng/mnk65/info.json8
-rw-r--r--keyboards/kopibeng/mnk65/readme.md2
-rw-r--r--keyboards/kopibeng/mnk88/config.h9
-rw-r--r--keyboards/kopibeng/mnk88/info.json8
-rw-r--r--keyboards/kopibeng/typ65/config.h7
-rw-r--r--keyboards/kopibeng/typ65/info.json8
-rw-r--r--keyboards/kopibeng/typ65/readme.md2
-rw-r--r--keyboards/kopibeng/xt60/config.h7
-rw-r--r--keyboards/kopibeng/xt60/info.json8
-rw-r--r--keyboards/kopibeng/xt60/readme.md2
-rw-r--r--keyboards/kopibeng/xt60_singa/config.h74
-rw-r--r--keyboards/kopibeng/xt60_singa/info.json87
-rw-r--r--keyboards/kopibeng/xt60_singa/keymaps/default/keymap.c57
-rw-r--r--keyboards/kopibeng/xt60_singa/keymaps/via/keymap.c57
-rw-r--r--keyboards/kopibeng/xt60_singa/keymaps/via/rules.mk2
-rw-r--r--keyboards/kopibeng/xt60_singa/readme.md21
-rw-r--r--keyboards/kopibeng/xt60_singa/rules.mk18
-rw-r--r--keyboards/kopibeng/xt60_singa/xt60_singa.c17
-rw-r--r--keyboards/kopibeng/xt60_singa/xt60_singa.h55
-rw-r--r--keyboards/kopibeng/xt65/config.h8
-rw-r--r--keyboards/kopibeng/xt65/info.json8
-rw-r--r--keyboards/kopibeng/xt8x/config.h7
-rw-r--r--keyboards/kopibeng/xt8x/info.json8
-rw-r--r--keyboards/kopibeng/xt8x/readme.md2
-rw-r--r--keyboards/kprepublic/bm16a/config.h8
-rw-r--r--keyboards/kprepublic/bm16a/info.json6
-rw-r--r--keyboards/kprepublic/bm16a/keymaps/factory/keymap.c2
-rwxr-xr-xkeyboards/kprepublic/bm16s/config.h8
-rw-r--r--keyboards/kprepublic/bm16s/info.json6
-rwxr-xr-xkeyboards/kprepublic/bm16s/keymaps/media/keymap.c2
-rwxr-xr-xkeyboards/kprepublic/bm40hsrgb/config.h8
-rw-r--r--keyboards/kprepublic/bm40hsrgb/info.json8
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/34keys/config.h56
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/34keys/keymap.c91
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/34keys/readme.md63
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/34keys/rules.mk4
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/coffee/config.h85
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/coffee/keymap.c165
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/coffee/readme.md55
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/coffee/rules.mk4
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/dan/keymap.c332
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/dan/readme.md3
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/config.h7
-rwxr-xr-xkeyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/keymap.c2
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/signynt/config.h4
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/signynt/keymap.c2
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/config.h4
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/keymap.c2
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/config.h4
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c2
-rw-r--r--keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/keymap.c2
-rw-r--r--keyboards/kprepublic/bm43a/config.h7
-rw-r--r--keyboards/kprepublic/bm43a/info.json6
-rw-r--r--keyboards/kprepublic/bm43a/keymaps/stevexyz/keymap.c2
-rwxr-xr-xkeyboards/kprepublic/bm43hsrgb/config.h7
-rwxr-xr-xkeyboards/kprepublic/bm43hsrgb/info.json8
-rwxr-xr-xkeyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/keymap.c2
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev1/config.h7
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev1/info.json6
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev1/keymaps/jbradforddillon/keymap.c2
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/config.h8
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/info.json8
-rw-r--r--keyboards/kprepublic/bm60hsrgb_ec/rev1/config.h7
-rw-r--r--keyboards/kprepublic/bm60hsrgb_ec/rev1/info.json147
-rw-r--r--keyboards/kprepublic/bm60hsrgb_ec/rev1/keymaps/default/keymap.c2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_ec/rev1/keymaps/via/keymap.c6
-rw-r--r--keyboards/kprepublic/bm60hsrgb_ec/rev1/readme.md6
-rw-r--r--keyboards/kprepublic/bm60hsrgb_ec/rev2/config.h8
-rw-r--r--keyboards/kprepublic/bm60hsrgb_ec/rev2/info.json142
-rw-r--r--keyboards/kprepublic/bm60hsrgb_ec/rev2/keymaps/default/keymap.c2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_ec/rev2/keymaps/via/keymap.c2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_ec/rev2/readme.md10
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev1/config.h7
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev1/info.json8
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h8
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/info.json8
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/config.h7
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/info.json8
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/david/keymap.c2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/ipetepete/keymap.c4
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h8
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/info.json8
-rw-r--r--keyboards/kprepublic/bm65hsrgb/keymaps/default/keymap.c2
-rw-r--r--keyboards/kprepublic/bm65hsrgb/rev1/config.h8
-rw-r--r--keyboards/kprepublic/bm65hsrgb/rev1/info.json6
-rw-r--r--keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/config.h36
-rw-r--r--keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/custom_keymap.h71
-rw-r--r--keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/keymap.c471
-rw-r--r--keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/readme.md22
-rw-r--r--keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/rules.mk23
-rw-r--r--keyboards/kprepublic/bm65hsrgb_iso/rev1/config.h7
-rw-r--r--keyboards/kprepublic/bm65hsrgb_iso/rev1/info.json8
-rw-r--r--keyboards/kprepublic/bm65hsrgb_iso/rev1/keymaps/deadolus/keymap.c2
-rw-r--r--keyboards/kprepublic/bm68hsrgb/rev1/config.h8
-rw-r--r--keyboards/kprepublic/bm68hsrgb/rev1/info.json8
-rw-r--r--keyboards/kprepublic/bm68hsrgb/rev1/keymaps/default/keymap.c2
-rw-r--r--keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h1
-rw-r--r--keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/keymap.c2
-rw-r--r--keyboards/kprepublic/bm68hsrgb/rev1/keymaps/via/keymap.c2
-rw-r--r--keyboards/kprepublic/bm68hsrgb/rev2/config.h8
-rw-r--r--keyboards/kprepublic/bm68hsrgb/rev2/info.json8
-rw-r--r--keyboards/kprepublic/bm80hsrgb/config.h8
-rw-r--r--keyboards/kprepublic/bm80hsrgb/info.json6
-rw-r--r--keyboards/kprepublic/bm80hsrgb/keymaps/default/keymap.c2
-rw-r--r--keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h1
-rw-r--r--keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/keymap.c2
-rw-r--r--keyboards/kprepublic/bm80hsrgb/keymaps/via/keymap.c2
-rw-r--r--keyboards/kprepublic/bm80v2/bm80v2.c149
-rw-r--r--keyboards/kprepublic/bm80v2/bm80v2.h34
-rw-r--r--keyboards/kprepublic/bm80v2/config.h75
-rw-r--r--keyboards/kprepublic/bm80v2/info.json109
-rw-r--r--keyboards/kprepublic/bm80v2/keymaps/default/keymap.c43
-rw-r--r--keyboards/kprepublic/bm80v2/keymaps/via/keymap.c43
-rw-r--r--keyboards/kprepublic/bm80v2/keymaps/via/rules.mk2
-rw-r--r--keyboards/kprepublic/bm80v2/readme.md20
-rw-r--r--keyboards/kprepublic/bm80v2/rules.mk22
-rw-r--r--keyboards/kprepublic/bm80v2_iso/bm80v2_iso.c150
-rw-r--r--keyboards/kprepublic/bm80v2_iso/bm80v2_iso.h36
-rw-r--r--keyboards/kprepublic/bm80v2_iso/config.h76
-rw-r--r--keyboards/kprepublic/bm80v2_iso/info.json110
-rw-r--r--keyboards/kprepublic/bm80v2_iso/keymaps/default/keymap.c43
-rw-r--r--keyboards/kprepublic/bm80v2_iso/keymaps/via/keymap.c43
-rw-r--r--keyboards/kprepublic/bm80v2_iso/keymaps/via/rules.mk2
-rw-r--r--keyboards/kprepublic/bm80v2_iso/readme.md21
-rw-r--r--keyboards/kprepublic/bm80v2_iso/rules.mk25
-rw-r--r--keyboards/kprepublic/bm980hsrgb/config.h8
-rw-r--r--keyboards/kprepublic/bm980hsrgb/info.json8
-rw-r--r--keyboards/kprepublic/bm980hsrgb/keymaps/peepeetee/keymap.c2
-rw-r--r--keyboards/kprepublic/cospad/config.h8
-rw-r--r--keyboards/kprepublic/cospad/info.json6
-rw-r--r--keyboards/kprepublic/cospad/keymaps/detrus/keymap.c8
-rw-r--r--keyboards/kprepublic/cospad/keymaps/split_plus_and_zero/keymap.c2
-rw-r--r--keyboards/kprepublic/cospad/keymaps/split_zero/keymap.c2
-rw-r--r--keyboards/kprepublic/jj40/config.h6
-rw-r--r--keyboards/kprepublic/jj40/info.json8
-rw-r--r--keyboards/kprepublic/jj40/keymaps/brdlf/keymap.c168
-rw-r--r--keyboards/kprepublic/jj40/keymaps/brdlf/readme.md69
-rw-r--r--keyboards/kprepublic/jj40/keymaps/brdlf/rules.mk1
-rw-r--r--keyboards/kprepublic/jj40/keymaps/oscillope/keymap.c4
-rw-r--r--keyboards/kprepublic/jj40/keymaps/stevexyz/config.h2
-rw-r--r--keyboards/kprepublic/jj40/keymaps/waples/keymap.c2
-rw-r--r--keyboards/kprepublic/jj4x4/config.h6
-rw-r--r--keyboards/kprepublic/jj4x4/info.json6
-rw-r--r--keyboards/kprepublic/jj50/config.h6
-rw-r--r--keyboards/kprepublic/jj50/info.json6
-rw-r--r--keyboards/kprepublic/jj50/keymaps/abstractkb/keymap.c4
-rw-r--r--keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/keymap.c4
-rw-r--r--keyboards/kprepublic/jj50/keymaps/archetype/config.h2
-rw-r--r--keyboards/kprepublic/jj50/keymaps/archetype/keymap.c11
-rw-r--r--keyboards/kprepublic/jj50/keymaps/yoonbae81/keymap.c2
-rw-r--r--keyboards/ktec/daisy/config.h8
-rw-r--r--keyboards/ktec/daisy/info.json6
-rw-r--r--keyboards/ktec/ergodone/keymaps/eozaki/keymap.c2
-rw-r--r--keyboards/ktec/ergodone/keymaps/erovia/keymap.c2
-rw-r--r--keyboards/ktec/ergodone/keymaps/kloki/keymap.c2
-rw-r--r--keyboards/ktec/ergodone/keymaps/vega/keymap.c1075
-rwxr-xr-xkeyboards/ktec/staryu/config.h8
-rw-r--r--keyboards/ktec/staryu/info.json8
-rw-r--r--keyboards/kudox/columner/config.h7
-rw-r--r--keyboards/kudox/columner/info.json8
-rw-r--r--keyboards/kudox/rev1/config.h7
-rw-r--r--keyboards/kudox/rev1/info.json8
-rw-r--r--keyboards/kudox/rev2/config.h7
-rw-r--r--keyboards/kudox/rev2/info.json8
-rw-r--r--keyboards/kudox/rev3/config.h7
-rw-r--r--keyboards/kudox/rev3/info.json8
-rw-r--r--keyboards/kudox_full/readme.md2
-rw-r--r--keyboards/kudox_full/rev1/config.h7
-rw-r--r--keyboards/kudox_full/rev1/info.json8
-rw-r--r--keyboards/kudox_game/info.json7
-rw-r--r--keyboards/kudox_game/rev1/config.h7
-rw-r--r--keyboards/kudox_game/rev1/info.json5
-rw-r--r--keyboards/kudox_game/rev2/config.h7
-rw-r--r--keyboards/kudox_game/rev2/info.json5
-rw-r--r--keyboards/kv/revt/config.h8
-rw-r--r--keyboards/kv/revt/info.json6
-rw-r--r--keyboards/kv/revt/keymaps/default/keymap.c2
-rw-r--r--keyboards/kwub/bloop/config.h8
-rw-r--r--keyboards/kwub/bloop/info.json6
-rw-r--r--keyboards/ky01/config.h8
-rw-r--r--keyboards/ky01/info.json8
-rw-r--r--keyboards/labbe/labbeminiv1/config.h8
-rw-r--r--keyboards/labbe/labbeminiv1/info.json6
-rw-r--r--keyboards/labyrinth75/config.h8
-rw-r--r--keyboards/labyrinth75/info.json6
-rw-r--r--keyboards/late9/config.h6
-rw-r--r--keyboards/late9/readme.md2
-rw-r--r--keyboards/late9/rev1/config.h3
-rw-r--r--keyboards/late9/rev1/info.json7
-rw-r--r--keyboards/latincompass/latin17rgb/config.h6
-rw-r--r--keyboards/latincompass/latin17rgb/info.json8
-rw-r--r--keyboards/latincompass/latin47ble/config.h8
-rw-r--r--keyboards/latincompass/latin47ble/info.json8
-rw-r--r--keyboards/latincompass/latin60rgb/config.h6
-rw-r--r--keyboards/latincompass/latin60rgb/info.json8
-rw-r--r--keyboards/latincompass/latin64ble/config.h6
-rw-r--r--keyboards/latincompass/latin64ble/info.json8
-rw-r--r--keyboards/latincompass/latin6rgb/config.h6
-rw-r--r--keyboards/latincompass/latin6rgb/info.json8
-rw-r--r--keyboards/latincompass/latinpad/config.h6
-rw-r--r--keyboards/latincompass/latinpad/info.json6
-rw-r--r--keyboards/latincompass/latinpadble/config.h6
-rw-r--r--keyboards/latincompass/latinpadble/info.json6
-rw-r--r--keyboards/lazydesigners/bolt/config.h7
-rw-r--r--keyboards/lazydesigners/bolt/info.json6
-rw-r--r--keyboards/lazydesigners/bolt/readme.md2
-rwxr-xr-xkeyboards/lazydesigners/cassette8/config.h7
-rwxr-xr-xkeyboards/lazydesigners/cassette8/info.json6
-rwxr-xr-xkeyboards/lazydesigners/cassette8/readme.md2
-rw-r--r--keyboards/lazydesigners/dimple/config.h8
-rw-r--r--keyboards/lazydesigners/dimple/ortho/info.json6
-rw-r--r--keyboards/lazydesigners/dimple/readme.md2
-rw-r--r--keyboards/lazydesigners/dimple/staggered/info.json53
-rw-r--r--keyboards/lazydesigners/dimple/staggered/keymaps/erovia/keymap.c4
-rw-r--r--keyboards/lazydesigners/dimple/staggered/keymaps/oncesavedgaming/keymap.c2
-rw-r--r--keyboards/lazydesigners/dimple/staggered/rev1/info.json54
-rw-r--r--keyboards/lazydesigners/dimple/staggered/rev2/info.json54
-rw-r--r--keyboards/lazydesigners/dimple/staggered/rev3/info.json268
-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/staggered.h24
-rw-r--r--keyboards/lazydesigners/dimpleplus/config.h7
-rw-r--r--keyboards/lazydesigners/dimpleplus/info.json6
-rw-r--r--keyboards/lazydesigners/dimpleplus/readme.md2
-rw-r--r--keyboards/lazydesigners/the30/config.h7
-rw-r--r--keyboards/lazydesigners/the30/info.json6
-rw-r--r--keyboards/lazydesigners/the40/config.h7
-rw-r--r--keyboards/lazydesigners/the40/info.json6
-rw-r--r--keyboards/lazydesigners/the40/keymaps/ortho/keymap.c2
-rw-r--r--keyboards/lazydesigners/the40/readme.md2
-rw-r--r--keyboards/lazydesigners/the50/config.h8
-rw-r--r--keyboards/lazydesigners/the50/info.json6
-rw-r--r--keyboards/lazydesigners/the50/keymaps/mikethetiger/keymap.c2
-rw-r--r--keyboards/lazydesigners/the50/readme.md2
-rwxr-xr-xkeyboards/lazydesigners/the60/rev1/config.h8
-rwxr-xr-xkeyboards/lazydesigners/the60/rev1/info.json6
-rwxr-xr-xkeyboards/lazydesigners/the60/rev2/config.h7
-rwxr-xr-xkeyboards/lazydesigners/the60/rev2/info.json8
-rwxr-xr-xkeyboards/lazydesigners/the60/rev2/readme.md2
-rw-r--r--keyboards/leafcutterlabs/bigknob/config.h8
-rw-r--r--keyboards/leafcutterlabs/bigknob/info.json8
-rw-r--r--keyboards/leeku/finger65/config.h8
-rw-r--r--keyboards/leeku/finger65/info.json8
-rw-r--r--keyboards/leeku/finger65/keymaps/madhatter/keymap.c4
-rw-r--r--keyboards/lefty/config.h7
-rw-r--r--keyboards/lefty/info.json8
-rw-r--r--keyboards/lefty/readme.md2
-rw-r--r--keyboards/lets_split/info.json1
-rw-r--r--keyboards/lets_split/keymaps/DE_simple/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/OLED_sample/config.h58
-rw-r--r--keyboards/lets_split/keymaps/OLED_sample/keymap.c415
-rw-r--r--keyboards/lets_split/keymaps/OLED_sample/readme.md25
-rw-r--r--keyboards/lets_split/keymaps/OLED_sample/rules.mk22
-rw-r--r--keyboards/lets_split/keymaps/aerialviews007/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/bbaserdem/README.md27
-rwxr-xr-xkeyboards/lets_split/keymaps/bbaserdem/config.h27
-rwxr-xr-xkeyboards/lets_split/keymaps/bbaserdem/keymap.c35
-rwxr-xr-xkeyboards/lets_split/keymaps/bbaserdem/rules.mk8
-rw-r--r--keyboards/lets_split/keymaps/bbaserdem_right/README.md5
-rwxr-xr-xkeyboards/lets_split/keymaps/bbaserdem_right/config.h9
-rwxr-xr-xkeyboards/lets_split/keymaps/bbaserdem_right/keymap.c31
-rwxr-xr-xkeyboards/lets_split/keymaps/bbaserdem_right/rules.mk19
-rw-r--r--keyboards/lets_split/keymaps/cpeters1982/keymap.c4
-rw-r--r--keyboards/lets_split/keymaps/default/keymap.c14
-rw-r--r--keyboards/lets_split/keymaps/dlaroe/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/fabian/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/geripgeri/keymap.c4
-rw-r--r--keyboards/lets_split/keymaps/halvves/keymap.c4
-rw-r--r--keyboards/lets_split/keymaps/heartrobotninja/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/henxing/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/hvp/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/khord/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/kris/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/krusli/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/mbsurfer/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/mekberg/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/mjt/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/normacos/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/piemod/config.h3
-rw-r--r--keyboards/lets_split/keymaps/piemod/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/pitty/keymap.c6
-rw-r--r--keyboards/lets_split/keymaps/poker/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/pyrol/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/shaymdev/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/smt/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/that_canadian/keymap.c6
-rw-r--r--keyboards/lets_split/keymaps/tylerwince/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/vim-mode/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/waples/keymap.c2
-rwxr-xr-xkeyboards/lets_split/keymaps/xk/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/yshrsmz/keymap.c2
-rw-r--r--keyboards/lets_split/keymaps/zer09/keymap.c2
-rw-r--r--keyboards/lets_split/rev1/config.h7
-rw-r--r--keyboards/lets_split/rev1/info.json9
-rw-r--r--keyboards/lets_split/rev2/config.h7
-rw-r--r--keyboards/lets_split/rev2/info.json9
-rw-r--r--keyboards/lets_split/sockets/config.h7
-rw-r--r--keyboards/lets_split/sockets/info.json9
-rw-r--r--keyboards/lfkeyboards/lfk65_hs/config.h7
-rw-r--r--keyboards/lfkeyboards/lfk65_hs/info.json6
-rw-r--r--keyboards/lfkeyboards/lfk65_hs/lfk65_hs.c2
-rw-r--r--keyboards/lfkeyboards/lfk78/config.h7
-rw-r--r--keyboards/lfkeyboards/lfk78/keymaps/ca178858/keymap.c2
-rw-r--r--keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/keymap.c2
-rw-r--r--keyboards/lfkeyboards/lfk78/lfk78.c2
-rw-r--r--keyboards/lfkeyboards/lfk78/revb/config.h1
-rw-r--r--keyboards/lfkeyboards/lfk78/revb/info.json8
-rw-r--r--keyboards/lfkeyboards/lfk78/revc/config.h1
-rw-r--r--keyboards/lfkeyboards/lfk78/revc/info.json8
-rw-r--r--keyboards/lfkeyboards/lfk78/revj/config.h1
-rw-r--r--keyboards/lfkeyboards/lfk78/revj/info.json8
-rw-r--r--keyboards/lfkeyboards/lfk87/config.h10
-rw-r--r--keyboards/lfkeyboards/lfk87/info.json8
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/ca178858/keymap.c2
-rw-r--r--keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c2
-rw-r--r--keyboards/lfkeyboards/lfk87/lfk87.c2
-rw-r--r--keyboards/lfkeyboards/lfkpad/config.h8
-rw-r--r--keyboards/lfkeyboards/lfkpad/info.json6
-rw-r--r--keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h3
-rw-r--r--keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/keymap.c2
-rw-r--r--keyboards/lfkeyboards/mini1800/config.h7
-rw-r--r--keyboards/lfkeyboards/mini1800/info.json6
-rw-r--r--keyboards/lfkeyboards/mini1800/keymaps/ca178858/keymap.c2
-rw-r--r--keyboards/lfkeyboards/mini1800/mini1800.c2
-rw-r--r--keyboards/lfkeyboards/mini1800/readme.md2
-rw-r--r--keyboards/lfkeyboards/mini1800/reva/readme.md2
-rw-r--r--keyboards/lfkeyboards/mini1800/revc/readme.md2
-rw-r--r--keyboards/lfkeyboards/smk65/info.json7
-rw-r--r--keyboards/lfkeyboards/smk65/revb/config.h9
-rw-r--r--keyboards/lfkeyboards/smk65/revb/info.json5
-rw-r--r--keyboards/lfkeyboards/smk65/revb/revb.c2
-rw-r--r--keyboards/lfkeyboards/smk65/revf/config.h8
-rw-r--r--keyboards/lfkeyboards/smk65/revf/info.json5
-rw-r--r--keyboards/lily58/glow_enc/config.h7
-rw-r--r--keyboards/lily58/glow_enc/info.json8
-rw-r--r--keyboards/lily58/keymaps/bcat/keymap.c2
-rw-r--r--keyboards/lily58/keymaps/druotoni/keymap.c2
-rw-r--r--keyboards/lily58/keymaps/hvp/keymap.c2
-rw-r--r--keyboards/lily58/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/lily58/keymaps/muppetjones/README.md13
-rw-r--r--keyboards/lily58/keymaps/muppetjones/config.h44
-rw-r--r--keyboards/lily58/keymaps/muppetjones/features/bongo_cat.c127
-rw-r--r--keyboards/lily58/keymaps/muppetjones/features/bongo_cat.h14
-rw-r--r--keyboards/lily58/keymaps/muppetjones/keymap.c240
-rw-r--r--keyboards/lily58/keymaps/muppetjones/rules.mk17
-rw-r--r--keyboards/lily58/lib/layer_state_reader.c2
-rw-r--r--keyboards/lily58/light/config.h7
-rw-r--r--keyboards/lily58/light/info.json8
-rw-r--r--keyboards/lily58/rev1/config.h7
-rw-r--r--keyboards/lily58/rev1/info.json6
-rw-r--r--keyboards/lime/readme.md2
-rw-r--r--keyboards/lime/rev1/config.h7
-rw-r--r--keyboards/lime/rev1/info.json6
-rw-r--r--keyboards/linworks/dolice/config.h17
-rw-r--r--keyboards/linworks/dolice/info.json6
-rw-r--r--keyboards/linworks/em8/config.h8
-rw-r--r--keyboards/linworks/em8/info.json190
-rw-r--r--keyboards/linworks/em8/keymaps/default/keymap.c52
-rw-r--r--keyboards/linworks/em8/keymaps/via/keymap.c52
-rw-r--r--keyboards/linworks/em8/keymaps/via/rules.mk1
-rw-r--r--keyboards/linworks/em8/readme.md22
-rw-r--r--keyboards/linworks/em8/rules.mk1
-rw-r--r--keyboards/linworks/fave104/chconf.h29
-rw-r--r--keyboards/linworks/fave104/config.h47
-rw-r--r--keyboards/linworks/fave104/fave104.c17
-rw-r--r--keyboards/linworks/fave104/fave104.h86
-rw-r--r--keyboards/linworks/fave104/halconf.h27
-rw-r--r--keyboards/linworks/fave104/info.json382
-rw-r--r--keyboards/linworks/fave104/keymaps/default/keymap.c35
-rw-r--r--keyboards/linworks/fave104/keymaps/via/keymap.c35
-rw-r--r--keyboards/linworks/fave104/keymaps/via/rules.mk1
-rw-r--r--keyboards/linworks/fave104/mcuconf.h27
-rw-r--r--keyboards/linworks/fave104/readme.md18
-rw-r--r--keyboards/linworks/fave104/rules.mk22
-rw-r--r--keyboards/linworks/fave65h/config.h8
-rw-r--r--keyboards/linworks/fave65h/fave65h.h67
-rw-r--r--keyboards/linworks/fave65h/info.json315
-rw-r--r--keyboards/linworks/fave65h/keymaps/default/keymap.c39
-rw-r--r--keyboards/linworks/fave65h/keymaps/default_65_ansi_blocker_wkl/keymap.c75
-rw-r--r--keyboards/linworks/fave65h/keymaps/default_65_ansi_blocker_wkl_split_bs/keymap.c75
-rw-r--r--keyboards/linworks/fave65h/keymaps/via/keymap.c45
-rw-r--r--keyboards/linworks/fave65h/readme.md8
-rw-r--r--keyboards/linworks/fave65h/rules.mk4
-rw-r--r--keyboards/linworks/fave84h/config.h8
-rw-r--r--keyboards/linworks/fave84h/info.json8
-rw-r--r--keyboards/linworks/fave84h/readme.md4
-rw-r--r--keyboards/linworks/fave87/config.h8
-rw-r--r--keyboards/linworks/fave87/info.json8
-rw-r--r--keyboards/linworks/fave87h/config.h8
-rw-r--r--keyboards/linworks/fave87h/info.json8
-rw-r--r--keyboards/linworks/fave87h/readme.md4
-rw-r--r--keyboards/linworks/whale75/config.h8
-rw-r--r--keyboards/linworks/whale75/info.json8
-rw-r--r--keyboards/littlealby/mute/config.h8
-rw-r--r--keyboards/littlealby/mute/info.json8
-rw-r--r--keyboards/lizard_trick/tenkey_plusplus/config.h8
-rw-r--r--keyboards/lizard_trick/tenkey_plusplus/info.json8
-rw-r--r--keyboards/ll3macorn/bongopad/config.h8
-rw-r--r--keyboards/ll3macorn/bongopad/info.json8
-rw-r--r--keyboards/lm_keyboard/lm60n/config.h8
-rw-r--r--keyboards/lm_keyboard/lm60n/info.json8
-rw-r--r--keyboards/loki65/config.h12
-rw-r--r--keyboards/loki65/info.json6
-rw-r--r--keyboards/longnald/corin/config.h7
-rw-r--r--keyboards/longnald/corin/info.json6
-rw-r--r--keyboards/lucid/alexa/config.h8
-rw-r--r--keyboards/lucid/alexa/info.json6
-rw-r--r--keyboards/lucid/alexa/readme.md2
-rw-r--r--keyboards/lucid/alexa_solder/config.h8
-rw-r--r--keyboards/lucid/alexa_solder/info.json6
-rw-r--r--keyboards/lucid/kbd8x_hs/config.h8
-rw-r--r--keyboards/lucid/kbd8x_hs/info.json8
-rw-r--r--keyboards/lucid/phantom_hs/config.h8
-rw-r--r--keyboards/lucid/phantom_hs/info.json6
-rw-r--r--keyboards/lucid/phantom_solder/config.h8
-rw-r--r--keyboards/lucid/phantom_solder/info.json6
-rw-r--r--keyboards/lucid/scarlet/config.h8
-rw-r--r--keyboards/lucid/scarlet/info.json8
-rw-r--r--keyboards/lw67/config.h9
-rw-r--r--keyboards/lw67/info.json8
-rw-r--r--keyboards/lyso1/lck75/config.h7
-rw-r--r--keyboards/lyso1/lck75/info.json6
-rw-r--r--keyboards/lyso1/lck75/keymaps/7u/keymap.c2
-rw-r--r--keyboards/lyso1/lck75/keymaps/7u_iso/keymap.c2
-rw-r--r--keyboards/lyso1/lck75/keymaps/7u_sbs/keymap.c2
-rw-r--r--keyboards/lyso1/lck75/keymaps/iso_sbs/keymap.c2
-rw-r--r--keyboards/lyso1/lck75/keymaps/sbs/keymap.c2
-rw-r--r--keyboards/lyso1/lefishe/config.h8
-rw-r--r--keyboards/lyso1/lefishe/info.json6
-rw-r--r--keyboards/lyso1/lefishe/keymaps/wk_sbs/keymap.c2
-rw-r--r--keyboards/lyso1/lefishe/keymaps/wkl_sbs/keymap.c2
-rw-r--r--keyboards/lyso1/lefishe/readme.md2
-rw-r--r--keyboards/lz/erghost/config.h8
-rw-r--r--keyboards/lz/erghost/info.json8
-rw-r--r--keyboards/lz/erghost/readme.md2
-rw-r--r--keyboards/m10a/config.h8
-rw-r--r--keyboards/m10a/info.json8
-rw-r--r--keyboards/m10a/keymaps/gam3cat/keymap.c4
-rw-r--r--keyboards/machine_industries/m4_a/config.h8
-rw-r--r--keyboards/machine_industries/m4_a/info.json8
-rw-r--r--keyboards/machine_industries/m4_a/readme.md2
-rw-r--r--keyboards/machkeyboards/mach3/config.h7
-rw-r--r--keyboards/machkeyboards/mach3/info.json6
-rw-r--r--keyboards/machkeyboards/mach3/readme.md2
-rw-r--r--keyboards/macro1/config.h8
-rw-r--r--keyboards/macro1/info.json8
-rw-r--r--keyboards/macro3/config.h8
-rw-r--r--keyboards/macro3/info.json6
-rw-r--r--keyboards/macrocat/config.h11
-rw-r--r--keyboards/macrocat/info.json52
-rw-r--r--keyboards/macrocat/keymaps/default/keymap.c19
-rw-r--r--keyboards/macrocat/keymaps/oled/keymap.c31
-rw-r--r--keyboards/macrocat/keymaps/oled/rules.mk3
-rw-r--r--keyboards/macrocat/keymaps/via/keymap.c31
-rw-r--r--keyboards/macrocat/keymaps/via/rules.mk1
-rw-r--r--keyboards/macrocat/macrocat.c193
-rw-r--r--keyboards/macrocat/readme.md27
-rw-r--r--keyboards/macrocat/rules.mk1
-rw-r--r--keyboards/majistic/config.h7
-rw-r--r--keyboards/majistic/info.json6
-rw-r--r--keyboards/makenova/omega/omega4/readme.md2
-rw-r--r--keyboards/makrosu/config.h8
-rw-r--r--keyboards/makrosu/info.json6
-rw-r--r--keyboards/malevolti/lyra/rev1/config.h7
-rw-r--r--keyboards/malevolti/lyra/rev1/info.json8
-rw-r--r--keyboards/malevolti/superlyra/rev1/config.h7
-rw-r--r--keyboards/malevolti/superlyra/rev1/info.json8
-rw-r--r--keyboards/manta60/config.h8
-rw-r--r--keyboards/manta60/info.json6
-rw-r--r--keyboards/manyboard/macro/config.h8
-rw-r--r--keyboards/manyboard/macro/info.json8
-rw-r--r--keyboards/maple_computing/6ball/config.h8
-rw-r--r--keyboards/maple_computing/6ball/info.json6
-rwxr-xr-xkeyboards/maple_computing/c39/config.h7
-rwxr-xr-xkeyboards/maple_computing/c39/info.json6
-rw-r--r--keyboards/maple_computing/christmas_tree/V2017/config.h5
-rw-r--r--keyboards/maple_computing/christmas_tree/V2017/info.json5
-rw-r--r--keyboards/maple_computing/christmas_tree/config.h7
-rw-r--r--keyboards/maple_computing/christmas_tree/info.json5
-rw-r--r--keyboards/maple_computing/ivy/config.h6
-rw-r--r--keyboards/maple_computing/ivy/rev1/config.h3
-rw-r--r--keyboards/maple_computing/ivy/rev1/info.json8
-rw-r--r--keyboards/maple_computing/jnao/config.h8
-rw-r--r--keyboards/maple_computing/jnao/info.json6
-rw-r--r--keyboards/maple_computing/launchpad/config.h6
-rw-r--r--keyboards/maple_computing/launchpad/keymaps/brandonschlack/keymap.c2
-rw-r--r--keyboards/maple_computing/launchpad/keymaps/default/keymap.c7
-rw-r--r--keyboards/maple_computing/launchpad/keymaps/default_rgb/keymap.c8
-rw-r--r--keyboards/maple_computing/launchpad/rev1/config.h3
-rw-r--r--keyboards/maple_computing/launchpad/rev1/info.json8
-rw-r--r--keyboards/maple_computing/lets_split_eh/config.h7
-rw-r--r--keyboards/maple_computing/lets_split_eh/eh/config.h1
-rw-r--r--keyboards/maple_computing/lets_split_eh/eh/info.json8
-rw-r--r--keyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/README.md7
-rwxr-xr-xkeyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/config.h4
-rwxr-xr-xkeyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/keymap.c27
-rwxr-xr-xkeyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/rules.mk8
-rw-r--r--keyboards/maple_computing/lets_split_eh/keymaps/doxish_dvorak/keymap.c4
-rw-r--r--keyboards/maple_computing/lets_split_eh/keymaps/mikethetiger/keymap.c4
-rw-r--r--keyboards/maple_computing/lets_split_eh/keymaps/msiu/keymap.c4
-rw-r--r--keyboards/maple_computing/lets_split_eh/keymaps/resfury/keymap.c4
-rw-r--r--keyboards/maple_computing/lets_split_eh/keymaps/romus/keymap.c4
-rw-r--r--keyboards/maple_computing/lets_split_eh/keymaps/that_canadian/keymap.c4
-rw-r--r--keyboards/maple_computing/minidox/config.h6
-rw-r--r--keyboards/maple_computing/minidox/keymaps/alairock/keymap.c2
-rw-r--r--keyboards/maple_computing/minidox/keymaps/default/keymap.c10
-rw-r--r--keyboards/maple_computing/minidox/keymaps/dustypomerleau/keymap.c4
-rw-r--r--keyboards/maple_computing/minidox/keymaps/khitsule/keymap.c2
-rw-r--r--keyboards/maple_computing/minidox/keymaps/norman/config.h1
-rw-r--r--keyboards/maple_computing/minidox/keymaps/norman/keymap.c2
-rw-r--r--keyboards/maple_computing/minidox/keymaps/rsthd_combos/keymap.c2
-rw-r--r--keyboards/maple_computing/minidox/keymaps/that_canadian/keymap.c2
-rw-r--r--keyboards/maple_computing/minidox/keymaps/tw1t611/keymap.c2
-rw-r--r--keyboards/maple_computing/minidox/keymaps/xyverz/keymap.c6
-rw-r--r--keyboards/maple_computing/minidox/rev1/config.h2
-rw-r--r--keyboards/maple_computing/minidox/rev1/info.json6
-rw-r--r--keyboards/maple_computing/the_ruler/config.h8
-rw-r--r--keyboards/maple_computing/the_ruler/info.json6
-rw-r--r--keyboards/marksard/leftover30/config.h8
-rw-r--r--keyboards/marksard/leftover30/info.json6
-rw-r--r--keyboards/marksard/rhymestone/info.json211
-rw-r--r--keyboards/marksard/rhymestone/keymaps/switch_tester/keymap.c2
-rw-r--r--keyboards/marksard/rhymestone/rev1/config.h8
-rw-r--r--keyboards/marksard/rhymestone/rev1/info.json217
-rw-r--r--keyboards/marksard/treadstone32/info.json6
-rw-r--r--keyboards/marksard/treadstone32/keymaps/like_jis/keymap.c2
-rw-r--r--keyboards/marksard/treadstone32/lite/config.h8
-rw-r--r--keyboards/marksard/treadstone32/lite/info.json6
-rw-r--r--keyboards/marksard/treadstone32/rev1/config.h8
-rw-r--r--keyboards/marksard/treadstone32/rev1/info.json6
-rw-r--r--keyboards/marksard/treadstone48/keymaps/like_jis/keymap.c2
-rw-r--r--keyboards/marksard/treadstone48/rev1/config.h8
-rw-r--r--keyboards/marksard/treadstone48/rev1/info.json6
-rw-r--r--keyboards/marksard/treadstone48/rev1/keymaps/like_jis_rs/keymap.c2
-rw-r--r--keyboards/marksard/treadstone48/rev2/config.h8
-rw-r--r--keyboards/marksard/treadstone48/rev2/info.json6
-rw-r--r--keyboards/massdrop/alt/config.h5
-rw-r--r--keyboards/massdrop/alt/info.json5
-rw-r--r--keyboards/massdrop/alt/keymaps/b_/config.h1
-rw-r--r--keyboards/massdrop/alt/keymaps/b_/keymap.c2
-rw-r--r--keyboards/massdrop/alt/keymaps/charlesrocket/config.h19
-rw-r--r--keyboards/massdrop/alt/keymaps/charlesrocket/keymap.c249
-rw-r--r--keyboards/massdrop/alt/keymaps/charlesrocket/rules.mk3
-rw-r--r--keyboards/massdrop/alt/keymaps/pregame/config.h1
-rw-r--r--keyboards/massdrop/alt/keymaps/pregame/rules.mk1
-rw-r--r--keyboards/massdrop/alt/keymaps/via/config.h22
-rw-r--r--keyboards/massdrop/alt/keymaps/via/keymap.c20
-rw-r--r--keyboards/massdrop/alt/keymaps/via/readme.md24
-rw-r--r--keyboards/massdrop/alt/keymaps/via/rules.mk7
-rw-r--r--keyboards/massdrop/alt/keymaps/xulkal/keymap.c2
-rw-r--r--keyboards/massdrop/ctrl/config.h5
-rw-r--r--keyboards/massdrop/ctrl/info.json5
-rw-r--r--keyboards/massdrop/ctrl/keymaps/endgame/config.h1
-rw-r--r--keyboards/massdrop/ctrl/keymaps/endgame/rules.mk1
-rw-r--r--keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h1
-rw-r--r--keyboards/massdrop/ctrl/keymaps/matthewrobo/rules.mk1
-rw-r--r--keyboards/massdrop/ctrl/keymaps/via/config.h22
-rw-r--r--keyboards/massdrop/ctrl/keymaps/via/keymap.c140
-rw-r--r--keyboards/massdrop/ctrl/keymaps/via/rules.mk1
-rw-r--r--keyboards/massdrop/ctrl/keymaps/xanimos/config.h1
-rw-r--r--keyboards/massdrop/ctrl/keymaps/xanimos/rules.mk1
-rw-r--r--keyboards/massdrop/ctrl/keymaps/xulkal/keymap.c2
-rw-r--r--keyboards/massdrop/thekey/config.h7
-rw-r--r--keyboards/massdrop/thekey/info.json6
-rw-r--r--keyboards/massdrop/thekey/keymaps/default-bepo/keymap.c24
-rw-r--r--keyboards/massdrop/thekey/keymaps/url-copy-paste-bepo/keymap.c41
-rw-r--r--keyboards/massdrop/thekey_v2/config.h43
-rw-r--r--keyboards/massdrop/thekey_v2/info.json20
-rw-r--r--keyboards/massdrop/thekey_v2/keymaps/default-macos/keymap.c23
-rw-r--r--keyboards/massdrop/thekey_v2/keymaps/default/keymap.c23
-rw-r--r--keyboards/massdrop/thekey_v2/keymaps/rgb-control-macos/keymap.c109
-rw-r--r--keyboards/massdrop/thekey_v2/keymaps/rgb-control/keymap.c109
-rw-r--r--keyboards/massdrop/thekey_v2/keymaps/url-copy-paste-macos/keymap.c39
-rw-r--r--keyboards/massdrop/thekey_v2/keymaps/url-copy-paste/keymap.c40
-rw-r--r--keyboards/massdrop/thekey_v2/readme.md38
-rw-r--r--keyboards/massdrop/thekey_v2/rules.mk18
-rw-r--r--keyboards/massdrop/thekey_v2/thekey_v2.c17
-rw-r--r--keyboards/massdrop/thekey_v2/thekey_v2.h27
-rw-r--r--keyboards/masterworks/classy_tkl/info.json277
-rw-r--r--keyboards/masterworks/classy_tkl/rev_a/config.h8
-rw-r--r--keyboards/masterworks/classy_tkl/rev_a/info.json283
-rw-r--r--keyboards/matchstickworks/southpad/config.h8
-rw-r--r--keyboards/matchstickworks/southpad/info.json6
-rw-r--r--keyboards/matrix/abelx/config.h8
-rw-r--r--keyboards/matrix/abelx/info.json10
-rw-r--r--keyboards/matrix/cain_re/config.h8
-rw-r--r--keyboards/matrix/cain_re/info.json8
-rw-r--r--keyboards/matrix/falcon/config.h8
-rw-r--r--keyboards/matrix/falcon/info.json8
-rw-r--r--keyboards/matrix/falcon/readme.md2
-rw-r--r--keyboards/matrix/m12og/rev1/config.h7
-rw-r--r--keyboards/matrix/m12og/rev1/info.json8
-rw-r--r--keyboards/matrix/m12og/rev2/config.h8
-rw-r--r--keyboards/matrix/m12og/rev2/info.json8
-rw-r--r--keyboards/matrix/m20add/config.h8
-rw-r--r--keyboards/matrix/m20add/info.json8
-rw-r--r--keyboards/matrix/me/config.h8
-rw-r--r--keyboards/matrix/me/info.json6
-rw-r--r--keyboards/matrix/me/readme.md2
-rw-r--r--keyboards/matrix/noah/config.h8
-rw-r--r--keyboards/matrix/noah/info.json6
-rw-r--r--keyboards/matrix/noah/keymaps/blockader/keymap.c2
-rw-r--r--keyboards/matrix/noah/keymaps/rys/keymap.c2
-rw-r--r--keyboards/matrix/noah/keymaps/splitspace/keymap.c2
-rw-r--r--keyboards/matthewdias/m3n3van/config.h9
-rw-r--r--keyboards/matthewdias/m3n3van/info.json6
-rw-r--r--keyboards/matthewdias/minim/config.h9
-rw-r--r--keyboards/matthewdias/minim/info.json6
-rw-r--r--keyboards/matthewdias/model_v/config.h8
-rw-r--r--keyboards/matthewdias/model_v/info.json6
-rw-r--r--keyboards/matthewdias/txuu/config.h9
-rw-r--r--keyboards/matthewdias/txuu/info.json6
-rw-r--r--keyboards/maxipad/config.h7
-rw-r--r--keyboards/maxipad/info.json6
-rw-r--r--keyboards/maxipad/promicro/config.h1
-rw-r--r--keyboards/maxipad/teensy2/config.h1
-rw-r--r--keyboards/maxr1998/phoebe/config.h6
-rw-r--r--keyboards/maxr1998/phoebe/info.json5
-rw-r--r--keyboards/maxr1998/pulse4k/config.h8
-rw-r--r--keyboards/maxr1998/pulse4k/info.json6
-rw-r--r--keyboards/mb44/config.h8
-rw-r--r--keyboards/mb44/info.json6
-rw-r--r--keyboards/mb44/keymaps/2u1u_space/keymap.c2
-rw-r--r--keyboards/mb44/keymaps/2u_space/keymap.c2
-rw-r--r--keyboards/mb44/keymaps/3u_space/keymap.c2
-rw-r--r--keyboards/mc_76k/config.h8
-rw-r--r--keyboards/mc_76k/info.json8
-rw-r--r--keyboards/mechanickeys/miniashen40/config.h8
-rw-r--r--keyboards/mechanickeys/miniashen40/info.json6
-rw-r--r--keyboards/mechanickeys/miniashen40/readme.md4
-rw-r--r--keyboards/mechanickeys/undead60m/config.h8
-rw-r--r--keyboards/mechanickeys/undead60m/info.json8
-rw-r--r--keyboards/mechbrewery/mb65h/config.h8
-rw-r--r--keyboards/mechbrewery/mb65h/info.json8
-rw-r--r--keyboards/mechbrewery/mb65h/keymaps/default/keymap.c4
-rw-r--r--keyboards/mechbrewery/mb65h/keymaps/via/keymap.c4
-rw-r--r--keyboards/mechbrewery/mb65h/readme.md2
-rw-r--r--keyboards/mechbrewery/mb65s/config.h8
-rw-r--r--keyboards/mechbrewery/mb65s/info.json14
-rw-r--r--keyboards/mechbrewery/mb65s/keymaps/ansi_blocker/keymap.c4
-rw-r--r--keyboards/mechbrewery/mb65s/keymaps/ansi_blocker_7u_spc/keymap.c4
-rw-r--r--keyboards/mechbrewery/mb65s/keymaps/default/keymap.c4
-rw-r--r--keyboards/mechbrewery/mb65s/keymaps/iso_blocker/keymap.c4
-rw-r--r--keyboards/mechbrewery/mb65s/keymaps/iso_blocker_tsangan/keymap.c4
-rw-r--r--keyboards/mechbrewery/mb65s/keymaps/via/keymap.c4
-rw-r--r--keyboards/mechbrewery/mb65s/readme.md2
-rw-r--r--keyboards/mechkeys/acr60/config.h8
-rw-r--r--keyboards/mechkeys/acr60/info.json6
-rw-r--r--keyboards/mechkeys/acr60/keymaps/mitch/keymap.c2
-rwxr-xr-xkeyboards/mechkeys/alu84/config.h8
-rw-r--r--keyboards/mechkeys/alu84/info.json6
-rwxr-xr-xkeyboards/mechkeys/espectro/config.h8
-rw-r--r--keyboards/mechkeys/espectro/info.json6
-rw-r--r--keyboards/mechkeys/espectro/keymaps/mac/keymap.c4
-rw-r--r--keyboards/mechkeys/espectro/keymaps/mapdev/keymap.c4
-rw-r--r--keyboards/mechkeys/espectro/keymaps/mikethetiger/keymap.c4
-rw-r--r--keyboards/mechkeys/mechmini/v1/config.h6
-rw-r--r--keyboards/mechkeys/mechmini/v1/info.json8
-rw-r--r--keyboards/mechkeys/mechmini/v1/keymaps/pitty/keymap.c2
-rwxr-xr-xkeyboards/mechkeys/mechmini/v2/config.h9
-rw-r--r--keyboards/mechkeys/mechmini/v2/info.json6
-rw-r--r--keyboards/mechkeys/mechmini/v2/keymaps/2u_space_ortho/keymap.c2
-rwxr-xr-xkeyboards/mechkeys/mechmini/v2/keymaps/625_space/keymap.c2
-rw-r--r--keyboards/mechkeys/mechmini/v2/keymaps/arkag/keymap.c2
-rwxr-xr-xkeyboards/mechkeys/mechmini/v2/keymaps/lbibass_625_space/keymap.c4
-rwxr-xr-xkeyboards/mechkeys/mechmini/v2/keymaps/lbibass_split_space/keymap.c2
-rwxr-xr-xkeyboards/mechkeys/mechmini/v2/keymaps/ortho/keymap.c2
-rw-r--r--keyboards/mechkeys/mechmini/v2/keymaps/spacebarracecar/keymap.c4
-rwxr-xr-xkeyboards/mechkeys/mechmini/v2/keymaps/split_space/keymap.c2
-rw-r--r--keyboards/mechkeys/mechmini/v2/keymaps/wsturgiss/keymap.c3
-rw-r--r--keyboards/mechkeys/mk60/config.h8
-rw-r--r--keyboards/mechkeys/mk60/info.json6
-rw-r--r--keyboards/mechllama/g35/config.h5
-rw-r--r--keyboards/mechllama/g35/info.json7
-rw-r--r--keyboards/mechllama/g35/keymaps/default/keymap.c2
-rw-r--r--keyboards/mechllama/g35/v1/config.h2
-rw-r--r--keyboards/mechllama/g35/v1/info.json5
-rw-r--r--keyboards/mechllama/g35/v2/config.h2
-rw-r--r--keyboards/mechllama/g35/v2/info.json5
-rw-r--r--keyboards/mechlovin/adelais/config.h5
-rw-r--r--keyboards/mechlovin/adelais/info.json6
-rw-r--r--keyboards/mechlovin/adelais/keymaps/brandonschlack/keymap.c2
-rw-r--r--keyboards/mechlovin/adelais/keymaps/default/keymap.c68
-rw-r--r--keyboards/mechlovin/adelais/keymaps/via/keymap.c74
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev1/config.h4
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev1/info.json6
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev2/config.h3
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev2/info.json6
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/config.h20
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/halconf.h4
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/info.json6
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/mcuconf.h14
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c48
-rw-r--r--keyboards/mechlovin/adelais/rgb_led/rev3/rules.mk14
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/config.h3
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/info.json3
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev2/config.h3
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev2/info.json5
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev3/config.h2
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev3/info.json5
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev4/config.h2
-rw-r--r--keyboards/mechlovin/adelais/standard_led/arm/rev4/info.json5
-rw-r--r--keyboards/mechlovin/adelais/standard_led/avr/rev1/config.h3
-rw-r--r--keyboards/mechlovin/adelais/standard_led/avr/rev1/info.json6
-rw-r--r--keyboards/mechlovin/delphine/config.h5
-rw-r--r--keyboards/mechlovin/delphine/info.json4
-rw-r--r--keyboards/mechlovin/delphine/mono_led/config.h4
-rw-r--r--keyboards/mechlovin/delphine/mono_led/info.json6
-rw-r--r--keyboards/mechlovin/delphine/rgb_led/config.h3
-rw-r--r--keyboards/mechlovin/delphine/rgb_led/info.json6
-rw-r--r--keyboards/mechlovin/foundation/config.h80
-rw-r--r--keyboards/mechlovin/foundation/foundation.c17
-rw-r--r--keyboards/mechlovin/foundation/foundation.h60
-rw-r--r--keyboards/mechlovin/foundation/info.json23
-rw-r--r--keyboards/mechlovin/foundation/keymaps/default/keymap.c40
-rw-r--r--keyboards/mechlovin/foundation/keymaps/default/readme.md1
-rw-r--r--keyboards/mechlovin/foundation/keymaps/default/rules.mk1
-rw-r--r--keyboards/mechlovin/foundation/keymaps/via/keymap.c59
-rw-r--r--keyboards/mechlovin/foundation/keymaps/via/rules.mk2
-rw-r--r--keyboards/mechlovin/foundation/readme.md26
-rw-r--r--keyboards/mechlovin/foundation/rules.mk20
-rw-r--r--keyboards/mechlovin/hannah60rgb/config.h4
-rw-r--r--keyboards/mechlovin/hannah60rgb/rev1/config.h4
-rw-r--r--keyboards/mechlovin/hannah60rgb/rev1/info.json8
-rw-r--r--keyboards/mechlovin/hannah60rgb/rev2/config.h4
-rw-r--r--keyboards/mechlovin/hannah60rgb/rev2/info.json8
-rw-r--r--keyboards/mechlovin/hannah65/config.h4
-rw-r--r--keyboards/mechlovin/hannah65/rev1/haus/config.h22
-rw-r--r--keyboards/mechlovin/hannah65/rev1/haus/info.json229
-rw-r--r--keyboards/mechlovin/hannah65/rev1/info.json223
-rw-r--r--keyboards/mechlovin/hannah910/config.h6
-rw-r--r--keyboards/mechlovin/hannah910/hannah910.c6
-rw-r--r--keyboards/mechlovin/hannah910/rev1/config.h3
-rw-r--r--keyboards/mechlovin/hannah910/rev1/info.json6
-rw-r--r--keyboards/mechlovin/hannah910/rev2/config.h3
-rw-r--r--keyboards/mechlovin/hannah910/rev2/info.json8
-rw-r--r--keyboards/mechlovin/hannah910/rev3/config.h3
-rw-r--r--keyboards/mechlovin/hannah910/rev3/info.json8
-rw-r--r--keyboards/mechlovin/hex4b/config.h5
-rw-r--r--keyboards/mechlovin/hex4b/info.json6
-rw-r--r--keyboards/mechlovin/hex4b/keymaps/nazzer/keymap.c28
-rw-r--r--keyboards/mechlovin/hex4b/rev1/config.h5
-rw-r--r--keyboards/mechlovin/hex4b/rev1/info.json6
-rw-r--r--keyboards/mechlovin/hex4b/rev2/config.h7
-rw-r--r--keyboards/mechlovin/hex4b/rev2/info.json6
-rw-r--r--keyboards/mechlovin/hex4b/rev2/readme.md2
-rw-r--r--keyboards/mechlovin/hex6c/config.h8
-rw-r--r--keyboards/mechlovin/hex6c/info.json8
-rw-r--r--keyboards/mechlovin/infinity87/config.h5
-rw-r--r--keyboards/mechlovin/infinity87/infinity87.h16
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rev1.h8
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rogue87/config.h21
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rogue87/info.json193
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rogue87/rogue87.h34
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rouge87/config.h21
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rouge87/info.json197
-rw-r--r--keyboards/mechlovin/infinity87/rev1/rouge87/rouge87.h35
-rw-r--r--keyboards/mechlovin/infinity87/rev1/standard/config.h4
-rw-r--r--keyboards/mechlovin/infinity87/rev1/standard/info.json203
-rw-r--r--keyboards/mechlovin/infinity87/rev2/config.h5
-rw-r--r--keyboards/mechlovin/infinity87/rev2/info.json203
-rw-r--r--keyboards/mechlovin/infinity87/rgb_rev1/config.h4
-rw-r--r--keyboards/mechlovin/infinity87/rgb_rev1/info.json203
-rw-r--r--keyboards/mechlovin/infinity875/config.h6
-rw-r--r--keyboards/mechlovin/infinity875/info.json6
-rw-r--r--keyboards/mechlovin/infinity875/readme.md2
-rw-r--r--keyboards/mechlovin/infinity88/config.h7
-rw-r--r--keyboards/mechlovin/infinity88/info.json8
-rw-r--r--keyboards/mechlovin/infinityce/config.h6
-rw-r--r--keyboards/mechlovin/infinityce/info.json6
-rw-r--r--keyboards/mechlovin/jay60/config.h8
-rw-r--r--keyboards/mechlovin/jay60/info.json6
-rw-r--r--keyboards/mechlovin/jay60/readme.md2
-rw-r--r--keyboards/mechlovin/kanu/config.h8
-rw-r--r--keyboards/mechlovin/kanu/info.json6
-rw-r--r--keyboards/mechlovin/kay60/config.h9
-rw-r--r--keyboards/mechlovin/kay60/info.json8
-rw-r--r--keyboards/mechlovin/kay60/keymaps/default/keymap.c4
-rw-r--r--keyboards/mechlovin/kay60/keymaps/via/keymap.c4
-rw-r--r--keyboards/mechlovin/kay60/readme.md2
-rw-r--r--keyboards/mechlovin/kay65/config.h7
-rw-r--r--keyboards/mechlovin/kay65/info.json8
-rw-r--r--keyboards/mechlovin/kay65/readme.md2
-rw-r--r--keyboards/mechlovin/mechlovin9/config.h4
-rw-r--r--keyboards/mechlovin/mechlovin9/info.json5
-rw-r--r--keyboards/mechlovin/mechlovin9/rev1/config.h4
-rw-r--r--keyboards/mechlovin/mechlovin9/rev1/info.json7
-rw-r--r--keyboards/mechlovin/mechlovin9/rev2/config.h4
-rw-r--r--keyboards/mechlovin/mechlovin9/rev2/info.json7
-rw-r--r--keyboards/mechlovin/olly/bb/config.h8
-rw-r--r--keyboards/mechlovin/olly/bb/info.json8
-rw-r--r--keyboards/mechlovin/olly/bb/readme.md2
-rw-r--r--keyboards/mechlovin/olly/jf/config.h8
-rw-r--r--keyboards/mechlovin/olly/jf/info.json8
-rw-r--r--keyboards/mechlovin/olly/jf/readme.md2
-rw-r--r--keyboards/mechlovin/pisces/config.h7
-rw-r--r--keyboards/mechlovin/pisces/info.json8
-rw-r--r--keyboards/mechlovin/serratus/config.h6
-rw-r--r--keyboards/mechlovin/serratus/info.json8
-rw-r--r--keyboards/mechlovin/th1800/config.h8
-rw-r--r--keyboards/mechlovin/th1800/info.json6
-rw-r--r--keyboards/mechlovin/tmkl/config.h7
-rw-r--r--keyboards/mechlovin/tmkl/info.json8
-rw-r--r--keyboards/mechlovin/zed60/config.h78
-rw-r--r--keyboards/mechlovin/zed60/halconf.h22
-rw-r--r--keyboards/mechlovin/zed60/info.json156
-rw-r--r--keyboards/mechlovin/zed60/keymaps/default/keymap.c36
-rw-r--r--keyboards/mechlovin/zed60/keymaps/default/readme.md1
-rw-r--r--keyboards/mechlovin/zed60/keymaps/via/keymap.c50
-rw-r--r--keyboards/mechlovin/zed60/keymaps/via/readme.md1
-rw-r--r--keyboards/mechlovin/zed60/keymaps/via/rules.mk1
-rw-r--r--keyboards/mechlovin/zed60/mcuconf.h23
-rw-r--r--keyboards/mechlovin/zed60/readme.md27
-rw-r--r--keyboards/mechlovin/zed60/rules.mk20
-rw-r--r--keyboards/mechlovin/zed60/zed60.c17
-rw-r--r--keyboards/mechlovin/zed60/zed60.h66
-rw-r--r--keyboards/mechlovin/zed65/config.h108
-rw-r--r--keyboards/mechlovin/zed65/readme.md25
-rw-r--r--keyboards/mechlovin/zed65/retro66/config.h33
-rw-r--r--keyboards/mechlovin/zed65/retro66/info.json19
-rw-r--r--keyboards/mechlovin/zed65/retro66/keymaps/default/keymap.c35
-rw-r--r--keyboards/mechlovin/zed65/retro66/keymaps/default/readme.md1
-rw-r--r--keyboards/mechlovin/zed65/retro66/keymaps/default/rules.mk1
-rw-r--r--keyboards/mechlovin/zed65/retro66/keymaps/via/keymap.c61
-rw-r--r--keyboards/mechlovin/zed65/retro66/keymaps/via/readme.md1
-rw-r--r--keyboards/mechlovin/zed65/retro66/keymaps/via/rules.mk3
-rw-r--r--keyboards/mechlovin/zed65/retro66/readme.md27
-rw-r--r--keyboards/mechlovin/zed65/retro66/retro66.c19
-rw-r--r--keyboards/mechlovin/zed65/retro66/retro66.h48
-rw-r--r--keyboards/mechlovin/zed65/retro66/rules.mk1
-rw-r--r--keyboards/mechlovin/zed65/rules.mk21
-rw-r--r--keyboards/mechlovin/zed65/wearhaus66/config.h57
-rw-r--r--keyboards/mechlovin/zed65/wearhaus66/halconf.h22
-rw-r--r--keyboards/mechlovin/zed65/wearhaus66/info.json91
-rw-r--r--keyboards/mechlovin/zed65/wearhaus66/keymaps/default/keymap.c45
-rw-r--r--keyboards/mechlovin/zed65/wearhaus66/keymaps/default/readme.md1
-rw-r--r--keyboards/mechlovin/zed65/wearhaus66/keymaps/default/rules.mk2
-rw-r--r--keyboards/mechlovin/zed65/wearhaus66/keymaps/via/keymap.c70
-rw-r--r--keyboards/mechlovin/zed65/wearhaus66/keymaps/via/readme.md1
-rw-r--r--keyboards/mechlovin/zed65/wearhaus66/keymaps/via/rules.mk2
-rw-r--r--keyboards/mechlovin/zed65/wearhaus66/readme.md27
-rw-r--r--keyboards/mechlovin/zed65/wearhaus66/rules.mk2
-rw-r--r--keyboards/mechlovin/zed65/wearhaus66/wearhaus66.c24
-rw-r--r--keyboards/mechlovin/zed65/wearhaus66/wearhaus66.h62
-rw-r--r--keyboards/mechlovin/zed65/zed65.c18
-rw-r--r--keyboards/mechlovin/zed65/zed65.h26
-rw-r--r--keyboards/mechstudio/dawn/config.h8
-rw-r--r--keyboards/mechstudio/dawn/info.json6
-rw-r--r--keyboards/mechstudio/dawn/keymaps/default/keymap.c2
-rw-r--r--keyboards/mechstudio/dawn/keymaps/via/keymap.c2
-rw-r--r--keyboards/mechstudio/ud_40_ortho/config.h8
-rw-r--r--keyboards/mechstudio/ud_40_ortho/info.json8
-rw-r--r--keyboards/mechwild/bbs/bbs.c22
-rw-r--r--keyboards/mechwild/bbs/bbs.h26
-rw-r--r--keyboards/mechwild/bbs/config.h88
-rw-r--r--keyboards/mechwild/bbs/info.json49
-rw-r--r--keyboards/mechwild/bbs/keymaps/default/keymap.c31
-rw-r--r--keyboards/mechwild/bbs/readme.md27
-rw-r--r--keyboards/mechwild/bbs/rules.mk24
-rw-r--r--keyboards/mechwild/bde/bde.c17
-rw-r--r--keyboards/mechwild/bde/bde.h26
-rw-r--r--keyboards/mechwild/bde/config.h8
-rw-r--r--keyboards/mechwild/bde/info.json35
-rw-r--r--keyboards/mechwild/bde/keymaps/default/keymap.c59
-rw-r--r--keyboards/mechwild/bde/keymaps/lefty_default/config.h23
-rw-r--r--keyboards/mechwild/bde/keymaps/lefty_default/keymap.c55
-rw-r--r--keyboards/mechwild/bde/keymaps/lefty_fancy/keymap.c121
-rw-r--r--keyboards/mechwild/bde/keymaps/lefty_via/keymap.c56
-rw-r--r--keyboards/mechwild/bde/keymaps/righty_default/config.h23
-rw-r--r--keyboards/mechwild/bde/keymaps/righty_default/keymap.c55
-rw-r--r--keyboards/mechwild/bde/keymaps/righty_via/config.h23
-rw-r--r--keyboards/mechwild/bde/keymaps/righty_via/keymap.c55
-rw-r--r--keyboards/mechwild/bde/keymaps/via/keymap.c59
-rw-r--r--keyboards/mechwild/bde/keymaps/via/rules.mk3
-rw-r--r--keyboards/mechwild/bde/lefty/config.h54
-rw-r--r--keyboards/mechwild/bde/lefty/info.json77
-rw-r--r--keyboards/mechwild/bde/lefty/keymaps/default/config.h23
-rw-r--r--keyboards/mechwild/bde/lefty/keymaps/default/keymap.c55
-rw-r--r--keyboards/mechwild/bde/lefty/keymaps/default/rules.mk9
-rw-r--r--keyboards/mechwild/bde/lefty/keymaps/fancy/config.h (renamed from keyboards/mechwild/bde/keymaps/lefty_fancy/config.h)0
-rw-r--r--keyboards/mechwild/bde/lefty/keymaps/fancy/keymap.c121
-rw-r--r--keyboards/mechwild/bde/lefty/keymaps/fancy/rules.mk (renamed from keyboards/mechwild/bde/keymaps/lefty_fancy/rules.mk)0
-rw-r--r--keyboards/mechwild/bde/lefty/keymaps/via/config.h (renamed from keyboards/mechwild/bde/keymaps/lefty_via/config.h)0
-rw-r--r--keyboards/mechwild/bde/lefty/keymaps/via/keymap.c56
-rw-r--r--keyboards/mechwild/bde/lefty/keymaps/via/rules.mk (renamed from keyboards/mechwild/bde/keymaps/righty_via/rules.mk)0
-rw-r--r--keyboards/mechwild/bde/lefty/lefty.c17
-rw-r--r--keyboards/mechwild/bde/lefty/lefty.h30
-rw-r--r--keyboards/mechwild/bde/lefty/rules.mk1
-rw-r--r--keyboards/mechwild/bde/readme.md18
-rw-r--r--keyboards/mechwild/bde/rev2/config.h47
-rw-r--r--keyboards/mechwild/bde/rev2/info.json72
-rw-r--r--keyboards/mechwild/bde/rev2/keymaps/default/keymap.c69
-rw-r--r--keyboards/mechwild/bde/rev2/keymaps/default/rules.mk13
-rw-r--r--keyboards/mechwild/bde/rev2/keymaps/via/config.h (renamed from keyboards/mechwild/bde/keymaps/via/config.h)0
-rw-r--r--keyboards/mechwild/bde/rev2/keymaps/via/keymap.c68
-rw-r--r--keyboards/mechwild/bde/rev2/keymaps/via/rules.mk3
-rw-r--r--keyboards/mechwild/bde/rev2/rev2.c77
-rw-r--r--keyboards/mechwild/bde/rev2/rev2.h13
-rw-r--r--keyboards/mechwild/bde/righty/config.h54
-rw-r--r--keyboards/mechwild/bde/righty/info.json77
-rw-r--r--keyboards/mechwild/bde/righty/keymaps/default/config.h23
-rw-r--r--keyboards/mechwild/bde/righty/keymaps/default/keymap.c55
-rw-r--r--keyboards/mechwild/bde/righty/keymaps/default/rules.mk9
-rw-r--r--keyboards/mechwild/bde/righty/keymaps/via/config.h23
-rw-r--r--keyboards/mechwild/bde/righty/keymaps/via/keymap.c55
-rw-r--r--keyboards/mechwild/bde/righty/keymaps/via/rules.mk2
-rw-r--r--keyboards/mechwild/bde/righty/righty.c17
-rw-r--r--keyboards/mechwild/bde/righty/righty.h30
-rw-r--r--keyboards/mechwild/bde/righty/rules.mk1
-rw-r--r--keyboards/mechwild/bde/rules.mk19
-rw-r--r--keyboards/mechwild/clunker/config.h26
-rw-r--r--keyboards/mechwild/clunker/info.json85
-rw-r--r--keyboards/mechwild/clunker/keymaps/default/keymap.c63
-rw-r--r--keyboards/mechwild/clunker/keymaps/default/rules.mk1
-rw-r--r--keyboards/mechwild/clunker/keymaps/via/keymap.c63
-rw-r--r--keyboards/mechwild/clunker/keymaps/via/rules.mk3
-rw-r--r--keyboards/mechwild/clunker/readme.md25
-rw-r--r--keyboards/mechwild/clunker/rules.mk1
-rwxr-xr-xkeyboards/mechwild/mercutio/config.h13
-rw-r--r--keyboards/mechwild/mercutio/info.json8
-rw-r--r--keyboards/mechwild/mercutio/keymaps/bongocat/keymap.c20
-rw-r--r--keyboards/mechwild/mercutio/keymaps/bongocat/rules.mk3
-rw-r--r--keyboards/mechwild/mercutio/keymaps/default/config.h3
-rw-r--r--keyboards/mechwild/mercutio/keymaps/default/keymap.c41
-rw-r--r--keyboards/mechwild/mercutio/keymaps/default/rules.mk1
-rw-r--r--keyboards/mechwild/mercutio/keymaps/fancy/config.h3
-rwxr-xr-xkeyboards/mechwild/mercutio/keymaps/fancy/keymap.c2
-rw-r--r--keyboards/mechwild/mercutio/keymaps/fearless_spiff/keymap.c4
-rw-r--r--keyboards/mechwild/mercutio/keymaps/jonavin/config.h3
-rwxr-xr-xkeyboards/mechwild/mercutio/keymaps/jonavin/keymap.c24
-rw-r--r--keyboards/mechwild/mercutio/keymaps/via/config.h3
-rwxr-xr-xkeyboards/mechwild/mercutio/keymaps/via/keymap.c41
-rw-r--r--keyboards/mechwild/mercutio/keymaps/via/rules.mk2
-rwxr-xr-xkeyboards/mechwild/mercutio/mercutio.c41
-rw-r--r--keyboards/mechwild/mokulua/config.h132
-rw-r--r--keyboards/mechwild/mokulua/info.json10
-rw-r--r--keyboards/mechwild/mokulua/keymaps/default/keymap.c46
-rw-r--r--keyboards/mechwild/mokulua/keymaps/silly/keymap.c128
-rw-r--r--keyboards/mechwild/mokulua/keymaps/via/keymap.c46
-rw-r--r--keyboards/mechwild/mokulua/mirrored/config.h88
-rw-r--r--keyboards/mechwild/mokulua/mirrored/info.json93
-rw-r--r--keyboards/mechwild/mokulua/mirrored/keymaps/default/keymap.c55
-rw-r--r--keyboards/mechwild/mokulua/mirrored/keymaps/default/readme.md1
-rw-r--r--keyboards/mechwild/mokulua/mirrored/keymaps/default/rules.mk1
-rw-r--r--keyboards/mechwild/mokulua/mirrored/keymaps/via/keymap.c55
-rw-r--r--keyboards/mechwild/mokulua/mirrored/keymaps/via/readme.md1
-rw-r--r--keyboards/mechwild/mokulua/mirrored/keymaps/via/rules.mk3
-rw-r--r--keyboards/mechwild/mokulua/mirrored/mirrored.c82
-rw-r--r--keyboards/mechwild/mokulua/mirrored/mirrored.h31
-rw-r--r--keyboards/mechwild/mokulua/mirrored/rules.mk22
-rw-r--r--keyboards/mechwild/mokulua/mokulua.c82
-rw-r--r--keyboards/mechwild/mokulua/mokulua.h29
-rw-r--r--keyboards/mechwild/mokulua/readme.md2
-rw-r--r--keyboards/mechwild/mokulua/rules.mk23
-rw-r--r--keyboards/mechwild/mokulua/standard/config.h125
-rw-r--r--keyboards/mechwild/mokulua/standard/info.json92
-rw-r--r--keyboards/mechwild/mokulua/standard/keymaps/default/keymap.c55
-rw-r--r--keyboards/mechwild/mokulua/standard/keymaps/default/readme.md (renamed from keyboards/mechwild/mokulua/keymaps/default/readme.md)0
-rw-r--r--keyboards/mechwild/mokulua/standard/keymaps/default/rules.mk1
-rw-r--r--keyboards/mechwild/mokulua/standard/keymaps/silly/config.h (renamed from keyboards/mechwild/mokulua/keymaps/silly/config.h)0
-rw-r--r--keyboards/mechwild/mokulua/standard/keymaps/silly/keymap.c128
-rw-r--r--keyboards/mechwild/mokulua/standard/keymaps/silly/readme.md (renamed from keyboards/mechwild/mokulua/keymaps/silly/readme.md)0
-rw-r--r--keyboards/mechwild/mokulua/standard/keymaps/silly/rules.mk2
-rw-r--r--keyboards/mechwild/mokulua/standard/keymaps/via/keymap.c55
-rw-r--r--keyboards/mechwild/mokulua/standard/keymaps/via/readme.md (renamed from keyboards/mechwild/mokulua/keymaps/via/readme.md)0
-rw-r--r--keyboards/mechwild/mokulua/standard/keymaps/via/rules.mk3
-rw-r--r--keyboards/mechwild/mokulua/standard/rules.mk22
-rw-r--r--keyboards/mechwild/mokulua/standard/standard.c82
-rw-r--r--keyboards/mechwild/mokulua/standard/standard.h31
-rw-r--r--keyboards/mechwild/murphpad/config.h8
-rw-r--r--keyboards/mechwild/murphpad/info.json8
-rw-r--r--keyboards/mechwild/murphpad/keymaps/default/keymap.c93
-rw-r--r--keyboards/mechwild/murphpad/keymaps/default/rules.mk1
-rw-r--r--keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c20
-rw-r--r--keyboards/mechwild/murphpad/keymaps/via/keymap.c95
-rw-r--r--keyboards/mechwild/murphpad/keymaps/via/rules.mk1
-rw-r--r--keyboards/mechwild/murphpad/murphpad.c76
-rw-r--r--keyboards/mechwild/obe/config.h8
-rw-r--r--keyboards/mechwild/obe/f401/eeprom/rules.mk1
-rw-r--r--keyboards/mechwild/obe/f401/rules.mk1
-rw-r--r--keyboards/mechwild/obe/f411/eeprom/rules.mk1
-rw-r--r--keyboards/mechwild/obe/f411/rules.mk1
-rw-r--r--keyboards/mechwild/obe/info.json8
-rw-r--r--keyboards/mechwild/obe/keymaps/default/keymap.c15
-rw-r--r--keyboards/mechwild/obe/keymaps/default/rules.mk1
-rw-r--r--keyboards/mechwild/obe/keymaps/jonavin/keymap.c2
-rw-r--r--keyboards/mechwild/obe/keymaps/via/keymap.c21
-rw-r--r--keyboards/mechwild/obe/keymaps/via/rules.mk2
-rw-r--r--keyboards/mechwild/puckbuddy/config.h144
-rw-r--r--keyboards/mechwild/puckbuddy/glcdfont.c231
-rw-r--r--keyboards/mechwild/puckbuddy/halconf.h13
-rw-r--r--keyboards/mechwild/puckbuddy/info.json31
-rw-r--r--keyboards/mechwild/puckbuddy/keymaps/default/keymap.c64
-rw-r--r--keyboards/mechwild/puckbuddy/keymaps/via/keymap.c64
-rw-r--r--keyboards/mechwild/puckbuddy/keymaps/via/rules.mk1
-rw-r--r--keyboards/mechwild/puckbuddy/mcuconf.h12
-rw-r--r--keyboards/mechwild/puckbuddy/puckbuddy.c307
-rw-r--r--keyboards/mechwild/puckbuddy/puckbuddy.h56
-rw-r--r--keyboards/mechwild/puckbuddy/readme.md27
-rw-r--r--keyboards/mechwild/puckbuddy/rules.mk28
-rw-r--r--keyboards/mechwild/waka60/config.h8
-rw-r--r--keyboards/mechwild/waka60/f401/config.h (renamed from keyboards/mechwild/waka60/f401/eeprom/config.h)0
-rw-r--r--keyboards/mechwild/waka60/f401/eeprom/halconf.h22
-rw-r--r--keyboards/mechwild/waka60/f401/eeprom/mcuconf.h22
-rw-r--r--keyboards/mechwild/waka60/f401/eeprom/rules.mk1
-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.mk1
-rw-r--r--keyboards/mechwild/waka60/f411/config.h (renamed from keyboards/mechwild/waka60/f411/eeprom/config.h)0
-rw-r--r--keyboards/mechwild/waka60/f411/eeprom/halconf.h22
-rw-r--r--keyboards/mechwild/waka60/f411/eeprom/mcuconf.h22
-rw-r--r--keyboards/mechwild/waka60/f411/eeprom/rules.mk1
-rw-r--r--keyboards/mechwild/waka60/f411/halconf.h25
-rw-r--r--keyboards/mechwild/waka60/f411/mcuconf.h27
-rw-r--r--keyboards/mechwild/waka60/f411/rules.mk1
-rw-r--r--keyboards/mechwild/waka60/info.json8
-rw-r--r--keyboards/mechwild/waka60/keymaps/audio/keymap.c29
-rw-r--r--keyboards/mechwild/waka60/keymaps/audio/rules.mk3
-rw-r--r--keyboards/mechwild/waka60/keymaps/default/keymap.c29
-rw-r--r--keyboards/mechwild/waka60/keymaps/default/rules.mk1
-rw-r--r--keyboards/mechwild/waka60/keymaps/via/keymap.c29
-rw-r--r--keyboards/mechwild/waka60/keymaps/via/rules.mk2
-rw-r--r--keyboards/mehkee96/config.h7
-rw-r--r--keyboards/mehkee96/info.json8
-rw-r--r--keyboards/mehkee96/keymaps/johann/keymap.c4
-rw-r--r--keyboards/meletrix/zoom65/config.h7
-rw-r--r--keyboards/meletrix/zoom65/info.json6
-rw-r--r--keyboards/meletrix/zoom65/keymaps/65_ansi_blocker/keymap.c2
-rw-r--r--keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_bs/keymap.c2
-rw-r--r--keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_lshift/keymap.c2
-rw-r--r--keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_space/keymap.c2
-rw-r--r--keyboards/meletrix/zoom65/keymaps/65_iso_blocker/keymap.c2
-rw-r--r--keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_bs/keymap.c2
-rw-r--r--keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_space/keymap.c2
-rw-r--r--keyboards/meletrix/zoom65_lite/config.h7
-rw-r--r--keyboards/meletrix/zoom65_lite/info.json6
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker/keymap.c2
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_bs/keymap.c2
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_lshift/keymap.c2
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker_split_space/keymap.c2
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker/keymap.c2
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_bs/keymap.c2
-rw-r--r--keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker_split_space/keymap.c2
-rw-r--r--keyboards/meletrix/zoom87/config.h56
-rw-r--r--keyboards/meletrix/zoom87/info.json612
-rw-r--r--keyboards/meletrix/zoom87/keymaps/default/keymap.c36
-rw-r--r--keyboards/meletrix/zoom87/keymaps/default/readme.md1
-rw-r--r--keyboards/meletrix/zoom87/keymaps/default_tkl_f13/keymap.c36
-rw-r--r--keyboards/meletrix/zoom87/keymaps/default_tkl_f13/readme.md1
-rw-r--r--keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_bs/keymap.c36
-rw-r--r--keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_bs/readme.md1
-rw-r--r--keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_lshift/keymap.c36
-rw-r--r--keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_lshift/readme.md1
-rw-r--r--keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_rshift/keymap.c36
-rw-r--r--keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_rshift/readme.md1
-rw-r--r--keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_space/keymap.c36
-rw-r--r--keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_space/readme.md1
-rw-r--r--keyboards/meletrix/zoom87/keymaps/via/keymap.c52
-rw-r--r--keyboards/meletrix/zoom87/keymaps/via/readme.md1
-rw-r--r--keyboards/meletrix/zoom87/keymaps/via/rules.mk2
-rw-r--r--keyboards/meletrix/zoom87/readme.md27
-rw-r--r--keyboards/meletrix/zoom87/rules.mk18
-rw-r--r--keyboards/meletrix/zoom87/zoom87.c17
-rw-r--r--keyboards/meletrix/zoom87/zoom87.h218
-rwxr-xr-xkeyboards/melgeek/mach80/config.h7
-rwxr-xr-xkeyboards/melgeek/mach80/info.json6
-rwxr-xr-xkeyboards/melgeek/mach80/keymaps/tkl/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mach80/readme.md2
-rwxr-xr-xkeyboards/melgeek/mach80/rev1/config.h1
-rwxr-xr-xkeyboards/melgeek/mach80/rev2/config.h1
-rw-r--r--keyboards/melgeek/mj61/config.h7
-rw-r--r--keyboards/melgeek/mj61/info.json6
-rw-r--r--keyboards/melgeek/mj61/rev1/config.h1
-rw-r--r--keyboards/melgeek/mj61/rev2/config.h1
-rw-r--r--keyboards/melgeek/mj63/config.h7
-rw-r--r--keyboards/melgeek/mj63/info.json6
-rw-r--r--keyboards/melgeek/mj63/rev1/config.h1
-rw-r--r--keyboards/melgeek/mj63/rev2/config.h1
-rw-r--r--keyboards/melgeek/mj64/config.h7
-rw-r--r--keyboards/melgeek/mj64/info.json6
-rw-r--r--keyboards/melgeek/mj64/rev1/config.h1
-rw-r--r--keyboards/melgeek/mj64/rev2/config.h1
-rw-r--r--keyboards/melgeek/mj64/rev3/config.h1
-rw-r--r--keyboards/melgeek/mj65/config.h7
-rw-r--r--keyboards/melgeek/mj65/info.json6
-rw-r--r--keyboards/melgeek/mj65/rev3/config.h1
-rwxr-xr-xkeyboards/melgeek/mj6xy/config.h7
-rwxr-xr-xkeyboards/melgeek/mj6xy/info.json6
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_3u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs_3u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_ansi_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_bs_rshift/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_rshift/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_bs_rshift/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_rshift/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs_rshift/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_rshift/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_3u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs_3u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_split_bs_rshift/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/60_iso_split_rshift/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi_split_3u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs_3u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso_split_3u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso_split_bs/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/keymaps/64_iso_split_bs_3u_spc/keymap.c2
-rwxr-xr-xkeyboards/melgeek/mj6xy/rev3/config.h1
-rwxr-xr-xkeyboards/melgeek/mojo68/config.h7
-rwxr-xr-xkeyboards/melgeek/mojo68/info.json6
-rwxr-xr-xkeyboards/melgeek/mojo68/rev1/config.h1
-rw-r--r--keyboards/melgeek/mojo75/config.h7
-rw-r--r--keyboards/melgeek/mojo75/info.json6
-rw-r--r--keyboards/melgeek/mojo75/rev1/config.h1
-rwxr-xr-xkeyboards/melgeek/tegic/config.h7
-rwxr-xr-xkeyboards/melgeek/tegic/info.json6
-rwxr-xr-xkeyboards/melgeek/tegic/keymaps/default/keymap.c2
-rwxr-xr-xkeyboards/melgeek/tegic/keymaps/via/keymap.c2
-rwxr-xr-xkeyboards/melgeek/tegic/readme.md2
-rwxr-xr-xkeyboards/melgeek/tegic/rev1/config.h1
-rw-r--r--keyboards/melgeek/z70ultra/config.h7
-rw-r--r--keyboards/melgeek/z70ultra/info.json6
-rw-r--r--keyboards/melgeek/z70ultra/rev1/config.h1
-rw-r--r--keyboards/meme/config.h8
-rw-r--r--keyboards/meme/info.json6
-rw-r--r--keyboards/meow65/config.h8
-rw-r--r--keyboards/meow65/info.json8
-rw-r--r--keyboards/meow65/readme.md2
-rw-r--r--keyboards/merge/iso_macro/config.h7
-rw-r--r--keyboards/merge/iso_macro/info.json6
-rw-r--r--keyboards/merge/uc1/config.h7
-rw-r--r--keyboards/merge/uc1/info.json6
-rw-r--r--keyboards/merge/um70/config.h7
-rw-r--r--keyboards/merge/um70/info.json6
-rw-r--r--keyboards/merge/um80/config.h56
-rw-r--r--keyboards/merge/um80/info.json16
-rw-r--r--keyboards/merge/um80/keymaps/default/keymap.c71
-rw-r--r--keyboards/merge/um80/keymaps/default/readme.md5
-rw-r--r--keyboards/merge/um80/keymaps/default/rules.mk2
-rw-r--r--keyboards/merge/um80/keymaps/via/config.h22
-rw-r--r--keyboards/merge/um80/keymaps/via/keymap.c71
-rw-r--r--keyboards/merge/um80/keymaps/via/rules.mk6
-rw-r--r--keyboards/merge/um80/readme.md22
-rw-r--r--keyboards/merge/um80/rules.mk22
-rw-r--r--keyboards/merge/um80/um80.c123
-rw-r--r--keyboards/merge/um80/um80.h43
-rw-r--r--keyboards/merge/uma/config.h7
-rw-r--r--keyboards/merge/uma/info.json6
-rw-r--r--keyboards/mesa/mesa_tkl/config.h8
-rw-r--r--keyboards/mesa/mesa_tkl/info.json6
-rw-r--r--keyboards/meson/config.h8
-rw-r--r--keyboards/meson/info.json6
-rw-r--r--keyboards/metamechs/timberwolf/config.h8
-rw-r--r--keyboards/metamechs/timberwolf/info.json6
-rw-r--r--keyboards/metamechs/timberwolf/keymaps/a_ansi/keymap.c2
-rw-r--r--keyboards/metamechs/timberwolf/keymaps/a_iso/keymap.c2
-rw-r--r--keyboards/metamechs/timberwolf/keymaps/b_ansi/keymap.c2
-rw-r--r--keyboards/metamechs/timberwolf/keymaps/b_iso/keymap.c2
-rw-r--r--keyboards/metamechs/timberwolf/keymaps/prime_ansi/keymap.c2
-rw-r--r--keyboards/metamechs/timberwolf/keymaps/prime_iso/keymap.c2
-rw-r--r--keyboards/mexsistor/ludmila/config.h8
-rw-r--r--keyboards/mexsistor/ludmila/info.json8
-rw-r--r--keyboards/mikeneko65/config.h8
-rw-r--r--keyboards/mikeneko65/info.json85
-rw-r--r--keyboards/mikeneko65/keymaps/default/keymap.c4
-rw-r--r--keyboards/mikeneko65/keymaps/via/keymap.c8
-rw-r--r--keyboards/mikeneko65/mikeneko65.h2
-rw-r--r--keyboards/mikeneko65/readme.md2
-rw-r--r--keyboards/mikeneko65/rules.mk2
-rw-r--r--keyboards/miller/gm862/config.h8
-rw-r--r--keyboards/miller/gm862/info.json6
-rw-r--r--keyboards/millipad/config.h8
-rw-r--r--keyboards/millipad/info.json6
-rw-r--r--keyboards/mincedshon/ecila/config.h37
-rw-r--r--keyboards/mincedshon/ecila/ecila.c4
-rw-r--r--keyboards/mincedshon/ecila/ecila.h20
-rw-r--r--keyboards/mincedshon/ecila/info.json39
-rw-r--r--keyboards/mincedshon/ecila/keymaps/default/keymap.c44
-rw-r--r--keyboards/mincedshon/ecila/keymaps/via/keymap.c62
-rw-r--r--keyboards/mincedshon/ecila/keymaps/via/rules.mk1
-rw-r--r--keyboards/mincedshon/ecila/readme.md25
-rw-r--r--keyboards/mincedshon/ecila/rules.mk1
-rw-r--r--keyboards/mini_elixivy/config.h8
-rw-r--r--keyboards/mini_elixivy/info.json6
-rw-r--r--keyboards/mini_ten_key_plus/config.h8
-rw-r--r--keyboards/mini_ten_key_plus/info.json6
-rw-r--r--keyboards/miniaxe/config.h8
-rw-r--r--keyboards/miniaxe/info.json6
-rw-r--r--keyboards/miniaxe/keymaps/default/keymap.c10
-rw-r--r--keyboards/miniaxe/keymaps/underglow/keymap.c12
-rw-r--r--keyboards/minimacro5/config.h8
-rw-r--r--keyboards/minimacro5/info.json8
-rw-r--r--keyboards/minimacro5/keymaps/devdev/keymap.c2
-rw-r--r--keyboards/minimon/index_tab/config.h7
-rw-r--r--keyboards/minimon/index_tab/info.json6
-rw-r--r--keyboards/mino/hotswap/config.h8
-rw-r--r--keyboards/mino/hotswap/info.json6
-rw-r--r--keyboards/mino/readme.md2
-rw-r--r--keyboards/mint60/config.h8
-rw-r--r--keyboards/mint60/info.json6
-rw-r--r--keyboards/misonoworks/chocolatebar/config.h8
-rw-r--r--keyboards/misonoworks/chocolatebar/info.json6
-rw-r--r--keyboards/misonoworks/karina/config.h8
-rw-r--r--keyboards/misonoworks/karina/info.json6
-rw-r--r--keyboards/misterknife/knife66/config.h7
-rw-r--r--keyboards/misterknife/knife66/info.json6
-rw-r--r--keyboards/misterknife/knife66_iso/config.h7
-rw-r--r--keyboards/misterknife/knife66_iso/info.json8
-rw-r--r--keyboards/mitosis/config.h8
-rw-r--r--keyboards/mitosis/info.json6
-rw-r--r--keyboards/mitosis/keymaps/carvac_dv/keymap.c3
-rw-r--r--keyboards/mitosis/keymaps/datagrok/keymap.c6
-rw-r--r--keyboards/mitosis/keymaps/default/keymap.c5
-rw-r--r--keyboards/mitosis/keymaps/mjt/keymap.c6
-rw-r--r--keyboards/mitosis/keymaps/nzen/keymap.c4
-rw-r--r--keyboards/miuni32/config.h8
-rw-r--r--keyboards/miuni32/info.json8
-rw-r--r--keyboards/miuni32/keymaps/adam-lee/keymap.c4
-rw-r--r--keyboards/miuni32/keymaps/cassdelacruzmunoz/keymap.c4
-rw-r--r--keyboards/miuni32/keymaps/ht_156/keymap.c4
-rw-r--r--keyboards/miuni32/keymaps/kifinnsson/keymap.c4
-rw-r--r--keyboards/mixi/config.h7
-rw-r--r--keyboards/mixi/info.json6
-rw-r--r--keyboards/ml/gas75/config.h10
-rw-r--r--keyboards/ml/gas75/info.json6
-rw-r--r--keyboards/ml/gas75/readme.md2
-rw-r--r--keyboards/mlego/m48/config.h5
-rw-r--r--keyboards/mlego/m48/info.json6
-rw-r--r--keyboards/mlego/m48/keymaps/default/keymap.c8
-rw-r--r--keyboards/mlego/m48/rev1/config.h8
-rw-r--r--keyboards/mlego/m48/rev1/info.json6
-rw-r--r--keyboards/mlego/m48/rev1/ld/STM32F401xE.ld88
-rw-r--r--keyboards/mlego/m48/rev1/rules.mk3
-rw-r--r--keyboards/mlego/m60/config.h5
-rw-r--r--keyboards/mlego/m60/info.json6
-rw-r--r--keyboards/mlego/m60/rev1/config.h8
-rw-r--r--keyboards/mlego/m60/rev1/info.json6
-rw-r--r--keyboards/mlego/m60/rev1/ld/STM32F401xE.ld88
-rw-r--r--keyboards/mlego/m60/rev1/rules.mk3
-rw-r--r--keyboards/mlego/m60_split/config.h5
-rw-r--r--keyboards/mlego/m60_split/info.json6
-rw-r--r--keyboards/mlego/m60_split/rev1/config.h8
-rw-r--r--keyboards/mlego/m60_split/rev1/info.json6
-rw-r--r--keyboards/mlego/m60_split/rev1/ld/STM32F401xE.ld88
-rw-r--r--keyboards/mlego/m60_split/rev1/rules.mk3
-rw-r--r--keyboards/mlego/m60_split/rev2/config.h5
-rw-r--r--keyboards/mlego/m60_split/rev2/info.json6
-rw-r--r--keyboards/mlego/m60_split/rev2/rules.mk1
-rw-r--r--keyboards/mlego/m65/config.h4
-rw-r--r--keyboards/mlego/m65/info.json6
-rw-r--r--keyboards/mlego/m65/rev1/config.h4
-rw-r--r--keyboards/mlego/m65/rev1/info.json6
-rw-r--r--keyboards/mlego/m65/rev2/config.h4
-rw-r--r--keyboards/mlego/m65/rev2/info.json6
-rw-r--r--keyboards/mlego/m65/rev3/config.h7
-rw-r--r--keyboards/mlego/m65/rev3/info.json6
-rw-r--r--keyboards/mlego/m65/rev3/ld/STM32F401xE.ld88
-rw-r--r--keyboards/mlego/m65/rev3/rules.mk3
-rw-r--r--keyboards/mlego/m65/rev4/config.h7
-rw-r--r--keyboards/mlego/m65/rev4/info.json6
-rw-r--r--keyboards/mlego/m65/rev4/ld/STM32F401xE.ld88
-rw-r--r--keyboards/mlego/m65/rev4/rules.mk3
-rw-r--r--keyboards/mmkzoo65/config.h8
-rw-r--r--keyboards/mmkzoo65/info.json6
-rw-r--r--keyboards/mmkzoo65/readme.md2
-rwxr-xr-xkeyboards/mnk1800s/config.h9
-rwxr-xr-xkeyboards/mnk1800s/info.json6
-rwxr-xr-xkeyboards/mnk50/config.h9
-rwxr-xr-xkeyboards/mnk50/info.json6
-rwxr-xr-xkeyboards/mnk75/config.h9
-rwxr-xr-xkeyboards/mnk75/info.json6
-rw-r--r--keyboards/mntre/config.h8
-rw-r--r--keyboards/mntre/info.json6
-rw-r--r--keyboards/mntre/readme.md2
-rw-r--r--keyboards/mode/m65ha_alpha/config.h9
-rw-r--r--keyboards/mode/m65ha_alpha/info.json8
-rw-r--r--keyboards/mode/m65ha_alpha/mcuconf.h13
-rw-r--r--keyboards/mode/m65ha_alpha/rules.mk2
-rw-r--r--keyboards/mode/m65hi_alpha/config.h9
-rw-r--r--keyboards/mode/m65hi_alpha/info.json8
-rw-r--r--keyboards/mode/m65hi_alpha/mcuconf.h13
-rw-r--r--keyboards/mode/m65hi_alpha/rules.mk2
-rw-r--r--keyboards/mode/m65s/config.h9
-rw-r--r--keyboards/mode/m65s/info.json8
-rw-r--r--keyboards/mode/m65s/mcuconf.h13
-rw-r--r--keyboards/mode/m65s/rules.mk1
-rw-r--r--keyboards/mode/m75h/config.h9
-rw-r--r--keyboards/mode/m75h/info.json8
-rw-r--r--keyboards/mode/m75h/mcuconf.h13
-rw-r--r--keyboards/mode/m75h/readme.md10
-rw-r--r--keyboards/mode/m75h/rules.mk1
-rw-r--r--keyboards/mode/m75s/config.h9
-rw-r--r--keyboards/mode/m75s/info.json8
-rw-r--r--keyboards/mode/m75s/mcuconf.h13
-rw-r--r--keyboards/mode/m75s/rules.mk1
-rw-r--r--keyboards/mode/m80v1/config.h6
-rw-r--r--keyboards/mode/m80v1/m80h/config.h22
-rw-r--r--keyboards/mode/m80v1/m80h/info.json8
-rw-r--r--keyboards/mode/m80v1/m80s/config.h22
-rw-r--r--keyboards/mode/m80v1/m80s/info.json8
-rw-r--r--keyboards/mode/m80v1/readme.md2
-rw-r--r--keyboards/mode/m80v2/config.h5
-rw-r--r--keyboards/mode/m80v2/m80v2h/config.h2
-rw-r--r--keyboards/mode/m80v2/m80v2h/info.json8
-rw-r--r--keyboards/mode/m80v2/m80v2s/config.h2
-rw-r--r--keyboards/mode/m80v2/m80v2s/info.json8
-rw-r--r--keyboards/mode/m80v2/readme.md2
-rw-r--r--keyboards/mokey/ginkgo65/config.h8
-rw-r--r--keyboards/mokey/ginkgo65/info.json8
-rw-r--r--keyboards/mokey/ginkgo65hot/config.h12
-rw-r--r--keyboards/mokey/ginkgo65hot/ginkgo65hot.h4
-rw-r--r--keyboards/mokey/ginkgo65hot/info.json147
-rw-r--r--keyboards/mokey/ginkgo65hot/rules.mk2
-rw-r--r--keyboards/mokey/ibis80/config.h32
-rw-r--r--keyboards/mokey/ibis80/ibis80.c16
-rw-r--r--keyboards/mokey/ibis80/ibis80.h76
-rw-r--r--keyboards/mokey/ibis80/info.json213
-rw-r--r--keyboards/mokey/ibis80/keymaps/default/keymap.c27
-rw-r--r--keyboards/mokey/ibis80/keymaps/via/keymap.c51
-rw-r--r--keyboards/mokey/ibis80/keymaps/via/rules.mk1
-rw-r--r--keyboards/mokey/ibis80/readme.md18
-rw-r--r--keyboards/mokey/ibis80/rules.mk18
-rw-r--r--keyboards/mokey/mokey63/config.h8
-rw-r--r--keyboards/mokey/mokey63/info.json6
-rw-r--r--keyboards/mokey/mokey64/config.h8
-rw-r--r--keyboards/mokey/mokey64/info.json6
-rw-r--r--keyboards/mokey/xox70/config.h8
-rw-r--r--keyboards/mokey/xox70/info.json8
-rw-r--r--keyboards/mokey/xox70hot/config.h8
-rw-r--r--keyboards/mokey/xox70hot/info.json8
-rwxr-xr-xkeyboards/molecule/config.h8
-rwxr-xr-xkeyboards/molecule/info.json6
-rw-r--r--keyboards/momoka_ergo/config.h15
-rw-r--r--keyboards/momoka_ergo/info.json8
-rw-r--r--keyboards/momokai/tap_trio/config.h7
-rw-r--r--keyboards/momokai/tap_trio/info.json8
-rw-r--r--keyboards/monarch/config.h7
-rw-r--r--keyboards/monarch/info.json6
-rw-r--r--keyboards/monoflex60/config.h8
-rw-r--r--keyboards/monoflex60/info.json6
-rw-r--r--keyboards/monoflex60/readme.md2
-rw-r--r--keyboards/monstargear/xo87/rgb/config.h8
-rw-r--r--keyboards/monstargear/xo87/rgb/info.json6
-rw-r--r--keyboards/monstargear/xo87/solderable/config.h8
-rw-r--r--keyboards/monstargear/xo87/solderable/info.json8
-rw-r--r--keyboards/montsinger/rebound/rev1/config.h9
-rw-r--r--keyboards/montsinger/rebound/rev1/info.json8
-rw-r--r--keyboards/montsinger/rebound/rev2/config.h9
-rw-r--r--keyboards/montsinger/rebound/rev2/info.json8
-rw-r--r--keyboards/montsinger/rebound/rev3/config.h9
-rw-r--r--keyboards/montsinger/rebound/rev3/info.json8
-rw-r--r--keyboards/montsinger/rebound/rev3/keymaps/rossman360/keymap.c2
-rw-r--r--keyboards/montsinger/rebound/rev4/config.h9
-rw-r--r--keyboards/montsinger/rebound/rev4/info.json8
-rw-r--r--keyboards/montsinger/rebound/rev4/keymaps/rossman360/keymap.c2
-rw-r--r--keyboards/montsinger/rewind/config.h9
-rw-r--r--keyboards/montsinger/rewind/info.json8
-rw-r--r--keyboards/montsinger/rewind/keymaps/rossman360/keymap.c2
-rw-r--r--keyboards/moon/config.h7
-rw-r--r--keyboards/moon/info.json6
-rw-r--r--keyboards/moonlander/config.h9
-rw-r--r--keyboards/moonlander/info.json6
-rw-r--r--keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/moonlander/matrix.c4
-rw-r--r--keyboards/moonlander/moonlander.c2
-rw-r--r--keyboards/moonlander/moonlander.h2
-rw-r--r--keyboards/moonlander/readme.md16
-rw-r--r--keyboards/morizon/config.h8
-rw-r--r--keyboards/morizon/info.json6
-rw-r--r--keyboards/morizon/readme.md2
-rw-r--r--keyboards/mountainblocks/mb17/config.h8
-rw-r--r--keyboards/mountainblocks/mb17/info.json6
-rw-r--r--keyboards/ms_sculpt/config.h16
-rw-r--r--keyboards/ms_sculpt/info.json129
-rw-r--r--keyboards/ms_sculpt/keymaps/default/keymap.c21
-rw-r--r--keyboards/ms_sculpt/ms_sculpt.h25
-rw-r--r--keyboards/ms_sculpt/readme.md27
-rw-r--r--keyboards/ms_sculpt/rules.mk3
-rw-r--r--keyboards/mschwingen/modelm/config.h7
-rw-r--r--keyboards/mschwingen/modelm/info.json8
-rw-r--r--keyboards/mschwingen/modelm/modelm.c4
-rw-r--r--keyboards/mss_studio/m63_rgb/config.h10
-rw-r--r--keyboards/mss_studio/m63_rgb/info.json6
-rw-r--r--keyboards/mss_studio/m63_rgb/readme.md2
-rw-r--r--keyboards/mss_studio/m64_rgb/config.h10
-rw-r--r--keyboards/mss_studio/m64_rgb/info.json6
-rw-r--r--keyboards/mss_studio/m64_rgb/readme.md2
-rw-r--r--keyboards/mt/blocked65/config.h8
-rw-r--r--keyboards/mt/blocked65/info.json8
-rw-r--r--keyboards/mt/mt40/config.h10
-rw-r--r--keyboards/mt/mt40/info.json6
-rw-r--r--keyboards/mt/mt64rgb/config.h9
-rw-r--r--keyboards/mt/mt64rgb/info.json8
-rw-r--r--keyboards/mt/mt84/config.h9
-rw-r--r--keyboards/mt/mt84/info.json8
-rw-r--r--keyboards/mt/mt980/config.h8
-rw-r--r--keyboards/mt/mt980/info.json8
-rw-r--r--keyboards/mt/mt980/keymaps/walker/keymap.c6
-rw-r--r--keyboards/mt/split75/config.h6
-rw-r--r--keyboards/mt/split75/info.json8
-rw-r--r--keyboards/mtbkeys/mtb60/hotswap/config.h8
-rw-r--r--keyboards/mtbkeys/mtb60/hotswap/info.json8
-rw-r--r--keyboards/mtbkeys/mtb60/solder/config.h8
-rw-r--r--keyboards/mtbkeys/mtb60/solder/info.json8
-rw-r--r--keyboards/murcielago/info.json6
-rw-r--r--keyboards/murcielago/rev1/config.h8
-rw-r--r--keyboards/mwstudio/alicekk/alicekk.c30
-rw-r--r--keyboards/mwstudio/alicekk/alicekk.h32
-rw-r--r--keyboards/mwstudio/alicekk/chconf.h23
-rw-r--r--keyboards/mwstudio/alicekk/config.h64
-rw-r--r--keyboards/mwstudio/alicekk/info.json9
-rw-r--r--keyboards/mwstudio/alicekk/keymaps/default/keymap.c37
-rw-r--r--keyboards/mwstudio/alicekk/keymaps/via/keymap.c96
-rw-r--r--keyboards/mwstudio/alicekk/keymaps/via/rules.mk2
-rw-r--r--keyboards/mwstudio/alicekk/mcuconf.h22
-rw-r--r--keyboards/mwstudio/alicekk/readme.md22
-rw-r--r--keyboards/mwstudio/alicekk/rules.mk21
-rw-r--r--keyboards/mwstudio/mw65_black/config.h7
-rw-r--r--keyboards/mwstudio/mw65_black/info.json8
-rw-r--r--keyboards/mwstudio/mw65_black/readme.md2
-rw-r--r--keyboards/mwstudio/mw65_rgb/config.h7
-rw-r--r--keyboards/mwstudio/mw65_rgb/info.json8
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/config.h4
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/keymap.c2
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/thearesia/config.h4
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/thearesia/keymap.c2
-rw-r--r--keyboards/mwstudio/mw65_rgb/keymaps/via/keymap.c4
-rw-r--r--keyboards/mwstudio/mw65_rgb/readme.md2
-rw-r--r--keyboards/mwstudio/mw75/config.h8
-rw-r--r--keyboards/mwstudio/mw75/info.json6
-rw-r--r--keyboards/mwstudio/mw75/readme.md2
-rw-r--r--keyboards/mwstudio/mw75r2/config.h8
-rw-r--r--keyboards/mwstudio/mw75r2/info.json6
-rw-r--r--keyboards/mwstudio/mw75r2/readme.md2
-rw-r--r--keyboards/mxss/config.h8
-rw-r--r--keyboards/mxss/info.json8
-rw-r--r--keyboards/mxss/mxss_frontled.c6
-rw-r--r--keyboards/mysticworks/wyvern/config.h8
-rw-r--r--keyboards/mysticworks/wyvern/info.json6
-rw-r--r--keyboards/nack/config.h6
-rw-r--r--keyboards/nack/info.json6
-rw-r--r--keyboards/nack/keymaps/default/keymap.c2
-rw-r--r--keyboards/nack/keymaps/farfalleflickan/keymap.c2
-rw-r--r--keyboards/nacly/sodium42/config.h7
-rw-r--r--keyboards/nacly/sodium42/info.json6
-rw-r--r--keyboards/nacly/sodium42/readme.md2
-rw-r--r--keyboards/nacly/sodium50/config.h11
-rw-r--r--keyboards/nacly/sodium50/info.json6
-rw-r--r--keyboards/nacly/sodium50/readme.md2
-rw-r--r--keyboards/nacly/sodium50/sodium50.h2
-rw-r--r--keyboards/nacly/sodium62/config.h7
-rw-r--r--keyboards/nacly/sodium62/info.json6
-rw-r--r--keyboards/nacly/sodium62/readme.md2
-rw-r--r--keyboards/nacly/splitreus62/config.h7
-rw-r--r--keyboards/nacly/splitreus62/info.json8
-rw-r--r--keyboards/nacly/splitreus62/keymaps/scheiklp/keymap.c2
-rw-r--r--keyboards/nacly/ua62/config.h8
-rw-r--r--keyboards/nacly/ua62/info.json8
-rw-r--r--keyboards/nasu/config.h9
-rw-r--r--keyboards/nasu/info.json6
-rw-r--r--keyboards/nasu/keymaps/mariocs/config.h5
-rw-r--r--keyboards/nasu/keymaps/mariocs/keymap.c60
-rw-r--r--keyboards/nasu/keymaps/mariocs/readme.md14
-rw-r--r--keyboards/nasu/keymaps/mariocs/rules.mk2
-rw-r--r--keyboards/ncc1701kb/config.h8
-rw-r--r--keyboards/ncc1701kb/info.json6
-rw-r--r--keyboards/neito/config.h8
-rw-r--r--keyboards/neito/info.json6
-rw-r--r--keyboards/neito/keymaps/olli_works/keymap.c2
-rw-r--r--keyboards/nek_type_a/config.h7
-rw-r--r--keyboards/nek_type_a/info.json6
-rw-r--r--keyboards/nemui/config.h7
-rw-r--r--keyboards/nemui/info.json8
-rw-r--r--keyboards/neokeys/g67/element_hs/config.h7
-rw-r--r--keyboards/neokeys/g67/element_hs/info.json8
-rw-r--r--keyboards/neokeys/g67/hotswap/config.h7
-rw-r--r--keyboards/neokeys/g67/hotswap/info.json8
-rw-r--r--keyboards/neokeys/g67/soldered/config.h7
-rw-r--r--keyboards/neokeys/g67/soldered/info.json8
-rwxr-xr-xkeyboards/neopad/config.h6
-rw-r--r--keyboards/neopad/readme.md2
-rwxr-xr-xkeyboards/neopad/rev1/config.h4
-rwxr-xr-xkeyboards/neopad/rev1/info.json6
-rw-r--r--keyboards/neson_design/700e/700e.c388
-rw-r--r--keyboards/neson_design/700e/700e.h38
-rw-r--r--keyboards/neson_design/700e/config.h63
-rw-r--r--keyboards/neson_design/700e/info.json17
-rw-r--r--keyboards/neson_design/700e/keymaps/default/keymap.c34
-rw-r--r--keyboards/neson_design/700e/keymaps/via/keymap.c41
-rw-r--r--keyboards/neson_design/700e/keymaps/via/rules.mk2
-rw-r--r--keyboards/neson_design/700e/readme.md21
-rw-r--r--keyboards/neson_design/700e/rules.mk20
-rw-r--r--keyboards/neson_design/n6/config.h8
-rw-r--r--keyboards/neson_design/n6/info.json8
-rw-r--r--keyboards/neson_design/n6/readme.md2
-rw-r--r--keyboards/newgame40/config.h8
-rw-r--r--keyboards/newgame40/info.json6
-rw-r--r--keyboards/nibiria/stream15/config.h7
-rw-r--r--keyboards/nibiria/stream15/info.json6
-rw-r--r--keyboards/nightingale_studios/hailey/config.h8
-rw-r--r--keyboards/nightingale_studios/hailey/info.json6
-rw-r--r--keyboards/nightly_boards/adellein/config.h8
-rw-r--r--keyboards/nightly_boards/adellein/info.json6
-rw-r--r--keyboards/nightly_boards/alter/rev1/config.h8
-rw-r--r--keyboards/nightly_boards/alter/rev1/info.json6
-rw-r--r--keyboards/nightly_boards/alter_lite/alter_lite.c16
-rw-r--r--keyboards/nightly_boards/alter_lite/alter_lite.h41
-rw-r--r--keyboards/nightly_boards/alter_lite/config.h54
-rw-r--r--keyboards/nightly_boards/alter_lite/info.json82
-rw-r--r--keyboards/nightly_boards/alter_lite/keymaps/default/keymap.c33
-rw-r--r--keyboards/nightly_boards/alter_lite/keymaps/via/keymap.c47
-rw-r--r--keyboards/nightly_boards/alter_lite/keymaps/via/rules.mk2
-rw-r--r--keyboards/nightly_boards/alter_lite/readme.md20
-rw-r--r--keyboards/nightly_boards/alter_lite/rules.mk17
-rw-r--r--keyboards/nightly_boards/conde60/conde60.c17
-rw-r--r--keyboards/nightly_boards/conde60/conde60.h42
-rw-r--r--keyboards/nightly_boards/conde60/config.h60
-rw-r--r--keyboards/nightly_boards/conde60/info.json86
-rw-r--r--keyboards/nightly_boards/conde60/keymaps/default/keymap.c53
-rw-r--r--keyboards/nightly_boards/conde60/keymaps/via/keymap.c53
-rw-r--r--keyboards/nightly_boards/conde60/keymaps/via/rules.mk2
-rw-r--r--keyboards/nightly_boards/conde60/readme.md20
-rw-r--r--keyboards/nightly_boards/conde60/rules.mk18
-rw-r--r--keyboards/nightly_boards/n2/config.h8
-rw-r--r--keyboards/nightly_boards/n2/info.json6
-rw-r--r--keyboards/nightly_boards/n40_o/config.h8
-rw-r--r--keyboards/nightly_boards/n40_o/info.json6
-rw-r--r--keyboards/nightly_boards/n60_s/config.h8
-rw-r--r--keyboards/nightly_boards/n60_s/info.json8
-rw-r--r--keyboards/nightly_boards/n60_s/keymaps/ansi_encoder/keymap.c2
-rw-r--r--keyboards/nightly_boards/n60_s/keymaps/tsangan_encoder/keymap.c2
-rw-r--r--keyboards/nightly_boards/n87/config.h8
-rw-r--r--keyboards/nightly_boards/n87/info.json6
-rw-r--r--keyboards/nightly_boards/n87/keymaps/symmetric_standard/keymap.c2
-rw-r--r--keyboards/nightly_boards/n9/config.h8
-rw-r--r--keyboards/nightly_boards/n9/info.json6
-rw-r--r--keyboards/nightly_boards/octopad/config.h8
-rw-r--r--keyboards/nightly_boards/octopad/info.json6
-rw-r--r--keyboards/nightly_boards/paraluman/config.h52
-rw-r--r--keyboards/nightly_boards/paraluman/info.json154
-rw-r--r--keyboards/nightly_boards/paraluman/keymaps/default/keymap.c34
-rw-r--r--keyboards/nightly_boards/paraluman/keymaps/tsangan/keymap.c34
-rw-r--r--keyboards/nightly_boards/paraluman/keymaps/via/keymap.c48
-rw-r--r--keyboards/nightly_boards/paraluman/keymaps/via/rules.mk2
-rw-r--r--keyboards/nightly_boards/paraluman/paraluman.c17
-rw-r--r--keyboards/nightly_boards/paraluman/paraluman.h55
-rw-r--r--keyboards/nightly_boards/paraluman/readme.md20
-rw-r--r--keyboards/nightly_boards/paraluman/rules.mk18
-rw-r--r--keyboards/nightly_boards/ph_arisu/config.h8
-rw-r--r--keyboards/nightly_boards/ph_arisu/info.json8
-rw-r--r--keyboards/nightmare/config.h8
-rw-r--r--keyboards/nightmare/info.json6
-rw-r--r--keyboards/nightmare/keymaps/brandonschlack/keymap.c2
-rw-r--r--keyboards/nimrod/config.h8
-rw-r--r--keyboards/nimrod/info.json6
-rw-r--r--keyboards/nix_studio/n60_a/config.h8
-rw-r--r--keyboards/nix_studio/n60_a/info.json8
-rw-r--r--keyboards/nix_studio/n60_a/keymaps/default/keymap.c2
-rw-r--r--keyboards/nix_studio/n60_a/keymaps/via/keymap.c2
-rw-r--r--keyboards/nix_studio/n60_a/readme.md2
-rw-r--r--keyboards/nix_studio/oxalys80/config.h9
-rw-r--r--keyboards/nix_studio/oxalys80/info.json8
-rw-r--r--keyboards/nopunin10did/jabberwocky/config.h7
-rw-r--r--keyboards/nopunin10did/jabberwocky/info.json7
-rw-r--r--keyboards/nopunin10did/jabberwocky/keymaps/nopunin10did/keymap.c4
-rw-r--r--keyboards/nopunin10did/kastenwagen1840/config.h8
-rw-r--r--keyboards/nopunin10did/kastenwagen1840/info.json6
-rw-r--r--keyboards/nopunin10did/kastenwagen48/config.h8
-rw-r--r--keyboards/nopunin10did/kastenwagen48/info.json6
-rw-r--r--keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/keymap.c2
-rw-r--r--keyboards/nopunin10did/railroad/rev0/config.h8
-rw-r--r--keyboards/nopunin10did/railroad/rev0/info.json6
-rw-r--r--keyboards/novelkeys/nk1/config.h19
-rwxr-xr-xkeyboards/novelkeys/nk1/info.json6
-rw-r--r--keyboards/novelkeys/nk20/config.h131
-rw-r--r--keyboards/novelkeys/nk20/halconf.h21
-rw-r--r--keyboards/novelkeys/nk20/info.json16
-rw-r--r--keyboards/novelkeys/nk20/keymaps/default/keymap.c34
-rw-r--r--keyboards/novelkeys/nk20/keymaps/default/readme.md9
-rw-r--r--keyboards/novelkeys/nk20/keymaps/via/keymap.c50
-rw-r--r--keyboards/novelkeys/nk20/keymaps/via/readme.md9
-rw-r--r--keyboards/novelkeys/nk20/keymaps/via/rules.mk1
-rw-r--r--keyboards/novelkeys/nk20/mcuconf.h22
-rw-r--r--keyboards/novelkeys/nk20/nk20.c40
-rw-r--r--keyboards/novelkeys/nk20/nk20.h38
-rw-r--r--keyboards/novelkeys/nk20/readme.md32
-rw-r--r--keyboards/novelkeys/nk20/rules.mk29
-rwxr-xr-xkeyboards/novelkeys/nk65/config.h7
-rwxr-xr-xkeyboards/novelkeys/nk65/info.json6
-rwxr-xr-xkeyboards/novelkeys/nk65/keymaps/madhatter/keymap.c2
-rwxr-xr-xkeyboards/novelkeys/nk65b/config.h135
-rw-r--r--keyboards/novelkeys/nk65b/halconf.h21
-rwxr-xr-xkeyboards/novelkeys/nk65b/info.json17
-rwxr-xr-xkeyboards/novelkeys/nk65b/keymaps/default/keymap.c32
-rwxr-xr-xkeyboards/novelkeys/nk65b/keymaps/default/readme.md7
-rwxr-xr-xkeyboards/novelkeys/nk65b/keymaps/via/keymap.c46
-rwxr-xr-xkeyboards/novelkeys/nk65b/keymaps/via/readme.md7
-rwxr-xr-xkeyboards/novelkeys/nk65b/keymaps/via/rules.mk1
-rw-r--r--keyboards/novelkeys/nk65b/mcuconf.h22
-rwxr-xr-xkeyboards/novelkeys/nk65b/nk65b.c54
-rwxr-xr-xkeyboards/novelkeys/nk65b/nk65b.h36
-rwxr-xr-xkeyboards/novelkeys/nk65b/readme.md34
-rwxr-xr-xkeyboards/novelkeys/nk65b/rules.mk29
-rwxr-xr-xkeyboards/novelkeys/nk87/config.h7
-rwxr-xr-xkeyboards/novelkeys/nk87/info.json6
-rw-r--r--keyboards/novelkeys/nk87b/config.h135
-rw-r--r--keyboards/novelkeys/nk87b/halconf.h21
-rwxr-xr-xkeyboards/novelkeys/nk87b/info.json16
-rw-r--r--keyboards/novelkeys/nk87b/keymaps/default/keymap.c34
-rw-r--r--keyboards/novelkeys/nk87b/keymaps/default/readme.md7
-rw-r--r--keyboards/novelkeys/nk87b/keymaps/via/keymap.c50
-rw-r--r--keyboards/novelkeys/nk87b/keymaps/via/readme.md7
-rw-r--r--keyboards/novelkeys/nk87b/keymaps/via/rules.mk1
-rw-r--r--keyboards/novelkeys/nk87b/mcuconf.h22
-rw-r--r--keyboards/novelkeys/nk87b/nk87b.c58
-rw-r--r--keyboards/novelkeys/nk87b/nk87b.h38
-rw-r--r--keyboards/novelkeys/nk87b/readme.md34
-rw-r--r--keyboards/novelkeys/nk87b/rules.mk29
-rwxr-xr-xkeyboards/novelkeys/novelpad/config.h8
-rw-r--r--keyboards/novelkeys/novelpad/info.json6
-rwxr-xr-xkeyboards/novelkeys/novelpad/keymaps/0xdec/keymap.c2
-rw-r--r--keyboards/noxary/220/config.h9
-rw-r--r--keyboards/noxary/220/info.json8
-rw-r--r--keyboards/noxary/260/config.h9
-rw-r--r--keyboards/noxary/260/info.json8
-rw-r--r--keyboards/noxary/268/config.h8
-rw-r--r--keyboards/noxary/268/info.json8
-rw-r--r--keyboards/noxary/268/keymaps/sixtyeight/keymap.c2
-rw-r--r--keyboards/noxary/268_2/config.h8
-rw-r--r--keyboards/noxary/268_2/info.json8
-rw-r--r--keyboards/noxary/268_2_rgb/config.h8
-rw-r--r--keyboards/noxary/268_2_rgb/info.json8
-rw-r--r--keyboards/noxary/280/config.h8
-rw-r--r--keyboards/noxary/280/info.json8
-rw-r--r--keyboards/noxary/378/config.h8
-rw-r--r--keyboards/noxary/378/info.json8
-rw-r--r--keyboards/noxary/valhalla/config.h8
-rw-r--r--keyboards/noxary/valhalla/info.json6
-rw-r--r--keyboards/noxary/valhalla/readme.md2
-rw-r--r--keyboards/noxary/vulcan/config.h8
-rw-r--r--keyboards/noxary/vulcan/info.json8
-rw-r--r--keyboards/noxary/x268/config.h8
-rw-r--r--keyboards/noxary/x268/info.json8
-rw-r--r--keyboards/np12/config.h10
-rw-r--r--keyboards/np12/info.json6
-rw-r--r--keyboards/nullbitsco/nibble/config.h8
-rw-r--r--keyboards/nullbitsco/nibble/info.json8
-rw-r--r--keyboards/nullbitsco/nibble/keymaps/oled/keymap.c2
-rw-r--r--keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c2
-rw-r--r--keyboards/nullbitsco/nibble/keymaps/oled_status/keymap.c2
-rw-r--r--keyboards/nullbitsco/scramble/config.h8
-rw-r--r--keyboards/nullbitsco/scramble/info.json8
-rw-r--r--keyboards/nullbitsco/tidbit/config.h8
-rw-r--r--keyboards/nullbitsco/tidbit/info.json8
-rw-r--r--keyboards/nullbitsco/tidbit/readme.md2
-rw-r--r--keyboards/nullbitsco/tidbit/tidbit.c2
-rw-r--r--keyboards/numatreus/config.h8
-rw-r--r--keyboards/numatreus/info.json8
-rw-r--r--keyboards/numatreus/keymaps/hdbx/keymap.c4
-rw-r--r--keyboards/numatreus/keymaps/like_jis/keymap.c2
-rw-r--r--keyboards/numatreus/keymaps/yohewi/keymap.c2
-rw-r--r--keyboards/obosob/arch_36/config.h9
-rw-r--r--keyboards/obosob/arch_36/info.json6
-rw-r--r--keyboards/obosob/arch_36/keymaps/obosob/keymap.c6
-rw-r--r--keyboards/obosob/steal_this_keyboard/config.h8
-rw-r--r--keyboards/obosob/steal_this_keyboard/info.json8
-rw-r--r--keyboards/ocean/addon/config.h7
-rw-r--r--keyboards/ocean/addon/info.json6
-rw-r--r--keyboards/ocean/gin_v2/config.h7
-rw-r--r--keyboards/ocean/gin_v2/info.json6
-rw-r--r--keyboards/ocean/slamz/config.h6
-rw-r--r--keyboards/ocean/slamz/info.json6
-rw-r--r--keyboards/ocean/stealth/config.h7
-rw-r--r--keyboards/ocean/stealth/info.json6
-rw-r--r--keyboards/ocean/sus/config.h7
-rw-r--r--keyboards/ocean/sus/info.json8
-rw-r--r--keyboards/ocean/wang_ergo/config.h7
-rw-r--r--keyboards/ocean/wang_ergo/info.json6
-rw-r--r--keyboards/ocean/wang_v2/config.h7
-rw-r--r--keyboards/ocean/wang_v2/info.json6
-rw-r--r--keyboards/ocean/yuri/config.h6
-rw-r--r--keyboards/ocean/yuri/info.json6
-rw-r--r--keyboards/oddball/config.h9
-rw-r--r--keyboards/oddball/info.json6
-rw-r--r--keyboards/oddball/v1/config.h1
-rw-r--r--keyboards/oddball/v2/config.h1
-rw-r--r--keyboards/oddball/v2_1/config.h1
-rw-r--r--keyboards/oddforge/vea/config.h7
-rw-r--r--keyboards/oddforge/vea/info.json6
-rw-r--r--keyboards/odelia/config.h8
-rw-r--r--keyboards/odelia/info.json8
-rw-r--r--keyboards/ogre/ergo_single/config.h7
-rw-r--r--keyboards/ogre/ergo_single/info.json6
-rw-r--r--keyboards/ogre/ergo_split/config.h7
-rw-r--r--keyboards/ogre/ergo_split/info.json6
-rw-r--r--keyboards/ok60/config.h8
-rw-r--r--keyboards/ok60/info.json6
-rw-r--r--keyboards/ok60/keymaps/ptillemans/keymap.c2
-rw-r--r--keyboards/om60/config.h104
-rw-r--r--keyboards/om60/info.json16
-rw-r--r--keyboards/om60/keymaps/default/keymap.c70
-rw-r--r--keyboards/om60/keymaps/default/rules.mk2
-rw-r--r--keyboards/om60/keymaps/via/keymap.c84
-rw-r--r--keyboards/om60/keymaps/via/rules.mk3
-rw-r--r--keyboards/om60/matrix.c166
-rw-r--r--keyboards/om60/om60.c19
-rw-r--r--keyboards/om60/om60.h41
-rw-r--r--keyboards/om60/readme.md27
-rw-r--r--keyboards/om60/rules.mk24
-rw-r--r--keyboards/omkbd/ergodash/mini/config.h7
-rw-r--r--keyboards/omkbd/ergodash/mini/info.json8
-rw-r--r--keyboards/omkbd/ergodash/mini/keymaps/default/keymap.c10
-rw-r--r--keyboards/omkbd/ergodash/mini/keymaps/toyoshimahidenori/keymap.c2
-rw-r--r--keyboards/omkbd/ergodash/rev1/config.h7
-rw-r--r--keyboards/omkbd/ergodash/rev1/info.json6
-rw-r--r--keyboards/omkbd/ergodash/rev1/keymaps/default/keymap.c10
-rw-r--r--keyboards/omkbd/ergodash/rev1/keymaps/greenshadowmaker/keymap.c2
-rw-r--r--keyboards/omkbd/ergodash/rev1/keymaps/shadowprogr/keymap.c2
-rw-r--r--keyboards/omkbd/ergodash/rev1/keymaps/tw1t611/keymap.c2
-rw-r--r--keyboards/omkbd/runner3680/3x6/config.h7
-rw-r--r--keyboards/omkbd/runner3680/3x6/info.json6
-rw-r--r--keyboards/omkbd/runner3680/3x7/config.h7
-rw-r--r--keyboards/omkbd/runner3680/3x7/info.json6
-rw-r--r--keyboards/omkbd/runner3680/3x8/config.h7
-rw-r--r--keyboards/omkbd/runner3680/3x8/info.json6
-rw-r--r--keyboards/omkbd/runner3680/4x6/config.h7
-rw-r--r--keyboards/omkbd/runner3680/4x6/info.json6
-rw-r--r--keyboards/omkbd/runner3680/4x7/config.h7
-rw-r--r--keyboards/omkbd/runner3680/4x7/info.json6
-rw-r--r--keyboards/omkbd/runner3680/4x8/config.h7
-rw-r--r--keyboards/omkbd/runner3680/4x8/info.json6
-rw-r--r--keyboards/omkbd/runner3680/5x6/config.h7
-rw-r--r--keyboards/omkbd/runner3680/5x6/info.json6
-rw-r--r--keyboards/omkbd/runner3680/5x6_5x8/config.h7
-rw-r--r--keyboards/omkbd/runner3680/5x6_5x8/info.json6
-rw-r--r--keyboards/omkbd/runner3680/5x7/config.h7
-rw-r--r--keyboards/omkbd/runner3680/5x7/info.json6
-rw-r--r--keyboards/omkbd/runner3680/5x8/config.h7
-rw-r--r--keyboards/omkbd/runner3680/5x8/info.json6
-rw-r--r--keyboards/omkbd/runner3680/5x8/keymaps/JIS/keymap.c4
-rw-r--r--keyboards/omnikeyish/config.h7
-rw-r--r--keyboards/omnikeyish/info.json6
-rw-r--r--keyboards/onekeyco/dango40/config.h6
-rw-r--r--keyboards/onekeyco/dango40/info.json6
-rw-r--r--keyboards/onekeyco/dango40/readme.md2
-rw-r--r--keyboards/opendeck/32/info.json8
-rw-r--r--keyboards/opendeck/32/rev1/config.h7
-rw-r--r--keyboards/orange75/config.h8
-rw-r--r--keyboards/orange75/info.json6
-rw-r--r--keyboards/org60/config.h8
-rw-r--r--keyboards/org60/info.json6
-rw-r--r--keyboards/org60/keymaps/boardy/keymap.c2
-rw-r--r--keyboards/org60/keymaps/jarred/keymap.c2
-rw-r--r--keyboards/ortho5by12/config.h10
-rw-r--r--keyboards/ortho5by12/info.json6
-rw-r--r--keyboards/orthocode/config.h8
-rw-r--r--keyboards/orthocode/info.json6
-rw-r--r--keyboards/orthodox/keymaps/default/keymap.c14
-rw-r--r--keyboards/orthodox/keymaps/oscillope/keymap.c2
-rw-r--r--keyboards/orthodox/keymaps/rfvizarra/keymap.c2
-rw-r--r--keyboards/orthodox/keymaps/shaymdev/keymap.c2
-rw-r--r--keyboards/orthodox/keymaps/xyverz/keymap.c2
-rw-r--r--keyboards/orthodox/rev1/config.h7
-rw-r--r--keyboards/orthodox/rev1/info.json6
-rw-r--r--keyboards/orthodox/rev3/config.h7
-rw-r--r--keyboards/orthodox/rev3/info.json6
-rw-r--r--keyboards/orthodox/rev3_teensy/config.h7
-rw-r--r--keyboards/orthodox/rev3_teensy/info.json6
-rw-r--r--keyboards/owlab/jelly_epoch/hotswap/config.h7
-rw-r--r--keyboards/owlab/jelly_epoch/hotswap/info.json8
-rw-r--r--keyboards/owlab/jelly_epoch/soldered/config.h7
-rw-r--r--keyboards/owlab/jelly_epoch/soldered/info.json8
-rw-r--r--keyboards/owlab/spring/config.h8
-rw-r--r--keyboards/owlab/spring/info.json6
-rw-r--r--keyboards/owlab/suit80/ansi/config.h7
-rw-r--r--keyboards/owlab/suit80/ansi/info.json8
-rw-r--r--keyboards/owlab/suit80/iso/config.h7
-rw-r--r--keyboards/owlab/suit80/iso/info.json8
-rw-r--r--keyboards/owlab/voice65/hotswap/config.h7
-rw-r--r--keyboards/owlab/voice65/hotswap/info.json8
-rw-r--r--keyboards/owlab/voice65/soldered/config.h7
-rw-r--r--keyboards/owlab/voice65/soldered/info.json8
-rw-r--r--keyboards/p3d/glitch/config.h7
-rw-r--r--keyboards/p3d/glitch/info.json6
-rw-r--r--keyboards/pabile/p18/config.h8
-rw-r--r--keyboards/pabile/p18/info.json8
-rw-r--r--keyboards/pabile/p20/info.json6
-rw-r--r--keyboards/pabile/p20/ver1/config.h8
-rw-r--r--keyboards/pabile/p20/ver1/info.json6
-rw-r--r--keyboards/pabile/p20/ver2/config.h8
-rw-r--r--keyboards/pabile/p20/ver2/info.json6
-rw-r--r--keyboards/pabile/p40/config.h8
-rw-r--r--keyboards/pabile/p40/info.json8
-rw-r--r--keyboards/pabile/p40_ortho/config.h8
-rw-r--r--keyboards/pabile/p40_ortho/info.json7
-rw-r--r--keyboards/pabile/p42/config.h8
-rw-r--r--keyboards/pabile/p42/info.json6
-rw-r--r--keyboards/palette1202/config.h8
-rw-r--r--keyboards/palette1202/info.json6
-rw-r--r--keyboards/panc40/config.h8
-rw-r--r--keyboards/panc40/info.json6
-rw-r--r--keyboards/panc60/config.h7
-rw-r--r--keyboards/panc60/info.json8
-rw-r--r--keyboards/papercranekeyboards/gerald65/config.h8
-rw-r--r--keyboards/papercranekeyboards/gerald65/info.json6
-rw-r--r--keyboards/papercranekeyboards/gerald65/readme.md2
-rw-r--r--keyboards/paprikman/albacore/config.h7
-rw-r--r--keyboards/paprikman/albacore/info.json6
-rw-r--r--keyboards/paprikman/albacore/readme.md2
-rw-r--r--keyboards/parallel/parallel_65/hotswap/config.h8
-rw-r--r--keyboards/parallel/parallel_65/hotswap/info.json6
-rw-r--r--keyboards/parallel/parallel_65/soldered/config.h8
-rw-r--r--keyboards/parallel/parallel_65/soldered/info.json6
-rw-r--r--keyboards/pdxkbc/config.h8
-rw-r--r--keyboards/pdxkbc/info.json6
-rw-r--r--keyboards/pearl/config.h7
-rw-r--r--keyboards/pearl/info.json6
-rw-r--r--keyboards/pearl/keymaps/cijanzen/keymap.c4
-rw-r--r--keyboards/pearl/keymaps/jetpacktuxedo/keymap.c4
-rwxr-xr-xkeyboards/pearl/keymaps/phil/keymap.c4
-rw-r--r--keyboards/pearl/keymaps/rask/keymap.c4
-rw-r--r--keyboards/pearlboards/atlas/config.h8
-rw-r--r--keyboards/pearlboards/atlas/info.json8
-rw-r--r--keyboards/pearlboards/atlas/readme.md4
-rw-r--r--keyboards/pearlboards/pandora/config.h8
-rw-r--r--keyboards/pearlboards/pandora/info.json6
-rw-r--r--keyboards/pearlboards/pearl/config.h7
-rw-r--r--keyboards/pearlboards/pearl/info.json8
-rw-r--r--keyboards/pearlboards/pearl/readme.md4
-rw-r--r--keyboards/pearlboards/zeus/config.h8
-rw-r--r--keyboards/pearlboards/zeus/info.json8
-rw-r--r--keyboards/pearlboards/zeus/readme.md4
-rw-r--r--keyboards/pearlboards/zeuspad/config.h8
-rw-r--r--keyboards/pearlboards/zeuspad/info.json8
-rw-r--r--keyboards/pearlboards/zeuspad/readme.md4
-rw-r--r--keyboards/peej/lumberjack/config.h8
-rw-r--r--keyboards/peej/lumberjack/info.json6
-rw-r--r--keyboards/peej/rosaline/config.h8
-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/via/keymap.c46
-rw-r--r--keyboards/peej/rosaline/ortho/info.json77
-rw-r--r--keyboards/peej/rosaline/ortho/keymaps/default/keymap.c (renamed from keyboards/peej/rosaline/keymaps/ortho/keymap.c)0
-rw-r--r--keyboards/peej/rosaline/ortho/keymaps/via/keymap.c (renamed from keyboards/peej/rosaline/keymaps/via-ortho/keymap.c)0
-rw-r--r--keyboards/peej/rosaline/ortho/keymaps/via/rules.mk1
-rw-r--r--keyboards/peej/rosaline/ortho/ortho.h57
-rw-r--r--keyboards/peej/rosaline/ortho/rules.mk18
-rw-r--r--keyboards/peej/rosaline/readme.md7
-rw-r--r--keyboards/peej/rosaline/rosaline.h38
-rw-r--r--keyboards/peej/rosaline/rules.mk19
-rw-r--r--keyboards/peej/rosaline/staggered/info.json74
-rw-r--r--keyboards/peej/rosaline/staggered/keymaps/default/keymap.c64
-rw-r--r--keyboards/peej/rosaline/staggered/keymaps/via/keymap.c46
-rw-r--r--keyboards/peej/rosaline/staggered/keymaps/via/rules.mk1
-rw-r--r--keyboards/peej/rosaline/staggered/rules.mk18
-rw-r--r--keyboards/peej/rosaline/staggered/staggered.h57
-rw-r--r--keyboards/peej/tripel/config.h8
-rw-r--r--keyboards/peej/tripel/info.json6
-rw-r--r--keyboards/pegasus/config.h8
-rw-r--r--keyboards/pegasus/info.json8
-rw-r--r--keyboards/pegasus/keymaps/split/keymap.c2
-rw-r--r--keyboards/pegasus/readme.md2
-rw-r--r--keyboards/peranekofactory/tone/rev1/config.h8
-rw-r--r--keyboards/peranekofactory/tone/rev1/info.json6
-rw-r--r--keyboards/peranekofactory/tone/rev2/config.h8
-rw-r--r--keyboards/peranekofactory/tone/rev2/info.json6
-rw-r--r--keyboards/percent/booster/config.h7
-rw-r--r--keyboards/percent/booster/info.json8
-rw-r--r--keyboards/percent/canoe/config.h7
-rw-r--r--keyboards/percent/canoe/info.json10
-rw-r--r--keyboards/percent/canoe/keymaps/boy_314/keymap.c4
-rw-r--r--keyboards/percent/canoe/keymaps/dhertz/keymap.c4
-rw-r--r--keyboards/percent/canoe_gen2/config.h8
-rw-r--r--keyboards/percent/canoe_gen2/info.json6
-rw-r--r--keyboards/percent/skog/config.h7
-rw-r--r--keyboards/percent/skog/info.json8
-rw-r--r--keyboards/percent/skog_lite/config.h7
-rw-r--r--keyboards/percent/skog_lite/info.json6
-rwxr-xr-xkeyboards/percent/skog_lite/keymaps/binman/keymap.c2
-rw-r--r--keyboards/phantom/config.h8
-rw-r--r--keyboards/phantom/info.json6
-rw-r--r--keyboards/phantom/keymaps/rgbmod/keymap.c2
-rw-r--r--keyboards/phase_studio/titan65/hotswap/config.h7
-rw-r--r--keyboards/phase_studio/titan65/hotswap/info.json6
-rw-r--r--keyboards/phase_studio/titan65/soldered/config.h7
-rw-r--r--keyboards/phase_studio/titan65/soldered/info.json6
-rw-r--r--keyboards/phoenix/config.h7
-rw-r--r--keyboards/phoenix/info.json6
-rw-r--r--keyboards/phoenix/phoenix.c2
-rw-r--r--keyboards/phoenix/rules.mk1
-rw-r--r--keyboards/phrygian/ph100/config.h7
-rw-r--r--keyboards/phrygian/ph100/info.json6
-rw-r--r--keyboards/pico/65keys/config.h7
-rw-r--r--keyboards/pico/65keys/info.json6
-rw-r--r--keyboards/pico/70keys/config.h7
-rw-r--r--keyboards/pico/70keys/info.json6
-rw-r--r--keyboards/picolab/frusta_fundamental/config.h8
-rw-r--r--keyboards/picolab/frusta_fundamental/info.json8
-rw-r--r--keyboards/pierce/config.h7
-rw-r--r--keyboards/pierce/info.json85
-rw-r--r--keyboards/pierce/keymaps/durken1/config.h4
-rw-r--r--keyboards/pierce/readme.md2
-rwxr-xr-xkeyboards/pimentoso/paddino02/rev1/config.h8
-rw-r--r--keyboards/pimentoso/paddino02/rev1/info.json6
-rwxr-xr-xkeyboards/pimentoso/paddino02/rev2/left/config.h8
-rw-r--r--keyboards/pimentoso/paddino02/rev2/left/info.json6
-rwxr-xr-xkeyboards/pimentoso/paddino02/rev2/right/config.h8
-rw-r--r--keyboards/pimentoso/paddino02/rev2/right/info.json6
-rw-r--r--keyboards/pimentoso/touhoupad/config.h7
-rw-r--r--keyboards/pimentoso/touhoupad/info.json8
-rw-r--r--keyboards/pinky/3/config.h8
-rw-r--r--keyboards/pinky/3/info.json6
-rw-r--r--keyboards/pinky/4/config.h8
-rw-r--r--keyboards/pinky/4/info.json6
-rw-r--r--keyboards/pisces/config.h8
-rw-r--r--keyboards/pisces/info.json6
-rw-r--r--keyboards/pixelspace/capsule65i/capsule65i.c17
-rw-r--r--keyboards/pixelspace/capsule65i/capsule65i.h221
-rw-r--r--keyboards/pixelspace/capsule65i/config.h56
-rw-r--r--keyboards/pixelspace/capsule65i/info.json1002
-rw-r--r--keyboards/pixelspace/capsule65i/keymaps/default/keymap.c39
-rw-r--r--keyboards/pixelspace/capsule65i/keymaps/via/keymap.c57
-rw-r--r--keyboards/pixelspace/capsule65i/keymaps/via/rules.mk2
-rw-r--r--keyboards/pixelspace/capsule65i/readme.md17
-rw-r--r--keyboards/pixelspace/capsule65i/rules.mk20
-rw-r--r--keyboards/pizzakeyboards/pizza65/config.h8
-rw-r--r--keyboards/pizzakeyboards/pizza65/info.json6
-rw-r--r--keyboards/pizzakeyboards/pizza65/keymaps/ansi_blocker_doublebs/keymap.c2
-rw-r--r--keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c2
-rw-r--r--keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c2
-rw-r--r--keyboards/pjb/eros/config.h7
-rw-r--r--keyboards/pjb/eros/info.json8
-rw-r--r--keyboards/pkb65/config.h8
-rw-r--r--keyboards/pkb65/info.json6
-rw-r--r--keyboards/planck/config.h6
-rw-r--r--keyboards/planck/ez/base/info.json6
-rw-r--r--keyboards/planck/ez/base/rules.mk0
-rw-r--r--keyboards/planck/ez/config.h11
-rw-r--r--keyboards/planck/ez/ez.c21
-rw-r--r--keyboards/planck/ez/glow/config.h25
-rw-r--r--keyboards/planck/ez/glow/info.json6
-rw-r--r--keyboards/planck/ez/info.json6
-rw-r--r--keyboards/planck/ez/rules.mk2
-rw-r--r--keyboards/planck/info.json1
-rw-r--r--keyboards/planck/keymaps/ab/keymap.c2
-rw-r--r--keyboards/planck/keymaps/abhixec/keymap.c2
-rw-r--r--keyboards/planck/keymaps/abishalom/keymap.c2
-rw-r--r--keyboards/planck/keymaps/adamtabrams/keymap.c4
-rw-r--r--keyboards/planck/keymaps/altgr/common/chord_layout.h2
-rw-r--r--keyboards/planck/keymaps/am/keymap.c2
-rw-r--r--keyboards/planck/keymaps/andylikescandy/keymap.c2
-rw-r--r--keyboards/planck/keymaps/antosha417/keymap.c2
-rw-r--r--keyboards/planck/keymaps/ariccb/config.h1
-rw-r--r--keyboards/planck/keymaps/ariccb/keymap.c17
-rw-r--r--keyboards/planck/keymaps/aviator/keymap.c10
-rw-r--r--keyboards/planck/keymaps/badger/keymap.c2
-rw-r--r--keyboards/planck/keymaps/basic/keymap.c4
-rw-r--r--keyboards/planck/keymaps/bbaserdem/README.md15
-rwxr-xr-xkeyboards/planck/keymaps/bbaserdem/config.h24
-rwxr-xr-xkeyboards/planck/keymaps/bbaserdem/keymap.c28
-rwxr-xr-xkeyboards/planck/keymaps/bbaserdem/rules.mk7
-rw-r--r--keyboards/planck/keymaps/bghull/keymap.c8
-rw-r--r--keyboards/planck/keymaps/brandon/keymap.c2
-rw-r--r--keyboards/planck/keymaps/buffet/keymap.c2
-rw-r--r--keyboards/planck/keymaps/buhearns/keymap.c2
-rw-r--r--keyboards/planck/keymaps/cbbrowne/keymap.c2
-rw-r--r--keyboards/planck/keymaps/chance/keymap.c2
-rw-r--r--keyboards/planck/keymaps/charlesrocket/keymap.c4
-rw-r--r--keyboards/planck/keymaps/circuit/keymap.c2
-rw-r--r--keyboards/planck/keymaps/coloneljesus/keymap.c2
-rw-r--r--keyboards/planck/keymaps/copface/keymap.c2
-rw-r--r--keyboards/planck/keymaps/corvec/keymap.c2
-rw-r--r--keyboards/planck/keymaps/csc027/config.h7
-rw-r--r--keyboards/planck/keymaps/csc027/rules.mk6
-rw-r--r--keyboards/planck/keymaps/david/keymap.c4
-rw-r--r--keyboards/planck/keymaps/davidrambo/keymap.c2
-rw-r--r--keyboards/planck/keymaps/dbroqua/keymap.c2
-rw-r--r--keyboards/planck/keymaps/dc/keymap.c2
-rw-r--r--keyboards/planck/keymaps/dcompact/keymap.c2
-rw-r--r--keyboards/planck/keymaps/dear_vehicle_owner/keymap.c2
-rw-r--r--keyboards/planck/keymaps/default/keymap.c2
-rw-r--r--keyboards/planck/keymaps/deft/keymap.c2
-rw-r--r--keyboards/planck/keymaps/dlaroe/keymap.c2
-rw-r--r--keyboards/planck/keymaps/dodger/keymap.c2
-rw-r--r--keyboards/planck/keymaps/dr0ck/keymap.c2
-rw-r--r--keyboards/planck/keymaps/dr_notsokind/keymap.c2
-rw-r--r--keyboards/planck/keymaps/dsanchezseco/keymap.c2
-rw-r--r--keyboards/planck/keymaps/dshields/keymap.c4
-rw-r--r--keyboards/planck/keymaps/dudeofawesome/keymap.c2
-rw-r--r--keyboards/planck/keymaps/dvorak2space/keymap.c2
-rw-r--r--keyboards/planck/keymaps/dvz/keymap.c2
-rw-r--r--keyboards/planck/keymaps/emiller/keymap.c2
-rw-r--r--keyboards/planck/keymaps/emilyh/keymap.c2
-rw-r--r--keyboards/planck/keymaps/eosti/keymap.c2
-rw-r--r--keyboards/planck/keymaps/eshesh2/keymap.c2
-rw-r--r--keyboards/planck/keymaps/espynn/keymap.c2
-rw-r--r--keyboards/planck/keymaps/experimental/keymap.c2
-rw-r--r--keyboards/planck/keymaps/fabian/keymap.c2
-rw-r--r--keyboards/planck/keymaps/foreveranapple/keymap.c2
-rw-r--r--keyboards/planck/keymaps/fsck/keymap.c2
-rw-r--r--keyboards/planck/keymaps/gitdrik/keymap.c2
-rw-r--r--keyboards/planck/keymaps/grahampheath/keymap.c4
-rw-r--r--keyboards/planck/keymaps/grant24/keymap.c2
-rw-r--r--keyboards/planck/keymaps/gunp/keymap.c2
-rw-r--r--keyboards/planck/keymaps/handwired_binaryplease/keymap.c2
-rw-r--r--keyboards/planck/keymaps/hiea/common/chord_layout.h2
-rw-r--r--keyboards/planck/keymaps/hieax/common/chord_layout.h2
-rw-r--r--keyboards/planck/keymaps/hvp/keymap.c2
-rw-r--r--keyboards/planck/keymaps/impossible/keymap.c4
-rw-r--r--keyboards/planck/keymaps/inkwell/keymap.c2
-rw-r--r--keyboards/planck/keymaps/jasperla/keymap.c2
-rw-r--r--keyboards/planck/keymaps/jdelkins/keymap.c4
-rw-r--r--keyboards/planck/keymaps/jeebak/keymap.c2
-rw-r--r--keyboards/planck/keymaps/jetpacktuxedo/keymap.c2
-rw-r--r--keyboards/planck/keymaps/jhenahan/keymap.c2
-rw-r--r--keyboards/planck/keymaps/jimmysjolund/keymap.c42
-rw-r--r--keyboards/planck/keymaps/jirgn/keymap.c2
-rw-r--r--keyboards/planck/keymaps/joe/keymap.c2
-rw-r--r--keyboards/planck/keymaps/jweickm/keymap.c4
-rw-r--r--keyboards/planck/keymaps/kanbara/keymap.c2
-rw-r--r--keyboards/planck/keymaps/kelorean/keymap.c2
-rw-r--r--keyboards/planck/keymaps/khord/keymap.c2
-rw-r--r--keyboards/planck/keymaps/kifinnsson/keymap.c2
-rw-r--r--keyboards/planck/keymaps/kloki/keymap.c2
-rw-r--r--keyboards/planck/keymaps/kmontag42/keymap.c2
-rw-r--r--keyboards/planck/keymaps/kuatsure/keymap.c4
-rw-r--r--keyboards/planck/keymaps/lae3/keymap.c2
-rw-r--r--keyboards/planck/keymaps/lja83/keymap.c2
-rw-r--r--keyboards/planck/keymaps/lucas/keymap.c2
-rw-r--r--keyboards/planck/keymaps/mason/keymap.c2
-rw-r--r--keyboards/planck/keymaps/matrixman/keymap.c6
-rw-r--r--keyboards/planck/keymaps/mattly/keymap.c2
-rw-r--r--keyboards/planck/keymaps/max/keymap.c4
-rw-r--r--keyboards/planck/keymaps/mgalisa/keymap.c2
-rw-r--r--keyboards/planck/keymaps/mikethetiger/keymap.c2
-rw-r--r--keyboards/planck/keymaps/mjt/keymap.c2
-rw-r--r--keyboards/planck/keymaps/mjtnumsym/keymap.c2
-rw-r--r--keyboards/planck/keymaps/mjuma/keymap.c4
-rw-r--r--keyboards/planck/keymaps/mnil/keymap.c2
-rw-r--r--keyboards/planck/keymaps/mollat/keymap.c2
-rw-r--r--keyboards/planck/keymaps/motform/keymap.c2
-rw-r--r--keyboards/planck/keymaps/msiu/keymap.c2
-rw-r--r--keyboards/planck/keymaps/muppetjones/.clang-format26
-rw-r--r--keyboards/planck/keymaps/muppetjones/config.h56
-rw-r--r--keyboards/planck/keymaps/muppetjones/keymap.c403
-rw-r--r--keyboards/planck/keymaps/muppetjones/readme.md2
-rw-r--r--keyboards/planck/keymaps/muppetjones/rules.mk5
-rw-r--r--keyboards/planck/keymaps/muzfuz/keymap.c2
-rw-r--r--keyboards/planck/keymaps/mwpeterson/keymap.c2
-rw-r--r--keyboards/planck/keymaps/myoung34/keymap.c2
-rw-r--r--keyboards/planck/keymaps/narze/keymap.c2
-rw-r--r--keyboards/planck/keymaps/nick/keymap.c2
-rw-r--r--keyboards/planck/keymaps/nico/keymap.c4
-rw-r--r--keyboards/planck/keymaps/not-quite-neo/keymap.c4
-rw-r--r--keyboards/planck/keymaps/originerd/keymap.c2
-rw-r--r--keyboards/planck/keymaps/orthodeluxe/keymap.c2
-rw-r--r--keyboards/planck/keymaps/oryx/keymap.c4
-rw-r--r--keyboards/planck/keymaps/palleiko/keymap.c2
-rw-r--r--keyboards/planck/keymaps/pascamel/keymap.c2
-rw-r--r--keyboards/planck/keymaps/pete/keymap.c2
-rw-r--r--keyboards/planck/keymaps/pevecyan/keymap.c2
-rw-r--r--keyboards/planck/keymaps/pickle_jr/keymap.c2
-rw-r--r--keyboards/planck/keymaps/piemod/keymap.c2
-rw-r--r--keyboards/planck/keymaps/pjanx/keymap.c2
-rw-r--r--keyboards/planck/keymaps/pok3r/keymap.c2
-rw-r--r--keyboards/planck/keymaps/premek/keymap.c2
-rw-r--r--keyboards/planck/keymaps/priyadi/config.h6
-rw-r--r--keyboards/planck/keymaps/prog_qgmlwb/.gitignore3
-rw-r--r--keyboards/planck/keymaps/prog_qgmlwb/config.h12
-rw-r--r--keyboards/planck/keymaps/prog_qgmlwb/keymap.c4
-rw-r--r--keyboards/planck/keymaps/prog_qgmlwb/readme.md82
-rw-r--r--keyboards/planck/keymaps/prog_qgmlwb/rules.mk6
-rw-r--r--keyboards/planck/keymaps/prog_qgmlwb/src/enums.h23
-rw-r--r--keyboards/planck/keymaps/prog_qgmlwb/src/layouts.c25
-rw-r--r--keyboards/planck/keymaps/prog_qgmlwb/src/layouts.h27
-rw-r--r--keyboards/planck/keymaps/prog_qgmlwb/src/normal.h96
-rw-r--r--keyboards/planck/keymaps/prog_qgmlwb/src/qgmlwb.h63
-rw-r--r--keyboards/planck/keymaps/prog_qgmlwb/src/special.h43
-rw-r--r--keyboards/planck/keymaps/ptillemans/keymap.c2
-rw-r--r--keyboards/planck/keymaps/pvc/config.h1
-rw-r--r--keyboards/planck/keymaps/pvc/keymap.c4
-rw-r--r--keyboards/planck/keymaps/raffle/keymap.c2
-rw-r--r--keyboards/planck/keymaps/rai-suta/keymap.c2
-rw-r--r--keyboards/planck/keymaps/rodhaene/keymap.c2
-rw-r--r--keyboards/planck/keymaps/roguepullrequest/keymap.c2
-rw-r--r--keyboards/planck/keymaps/roguepullrequest/rules.mk1
-rw-r--r--keyboards/planck/keymaps/rootiest/config.h1
-rw-r--r--keyboards/planck/keymaps/rootiest/keymap.c25
-rw-r--r--keyboards/planck/keymaps/rootiest/rules.mk3
-rw-r--r--keyboards/planck/keymaps/sascha/keymap.c2
-rwxr-xr-xkeyboards/planck/keymaps/scottzach1/keymap.c2
-rw-r--r--keyboards/planck/keymaps/sdothum/common/chord_layout.h2
-rw-r--r--keyboards/planck/keymaps/sean/keymap.c2
-rw-r--r--keyboards/planck/keymaps/sebas/keymap.c2
-rw-r--r--keyboards/planck/keymaps/sgoodwin/keymap.c2
-rw-r--r--keyboards/planck/keymaps/sigul/keymap.c2
-rw-r--r--keyboards/planck/keymaps/skank/keymap.c2
-rw-r--r--keyboards/planck/keymaps/skug/keymap.c2
-rw-r--r--keyboards/planck/keymaps/smittey/keymap.c2
-rw-r--r--keyboards/planck/keymaps/smt/keymap.c2
-rw-r--r--keyboards/planck/keymaps/spacebarracecar/keymap.c4
-rw-r--r--keyboards/planck/keymaps/steno/keymap.c2
-rw-r--r--keyboards/planck/keymaps/stuartfong1/keymap.c2
-rw-r--r--keyboards/planck/keymaps/synth_sample/keymap.c8
-rw-r--r--keyboards/planck/keymaps/synth_wavetable/keymap.c8
-rw-r--r--keyboards/planck/keymaps/tak3over/keymap.c2
-rw-r--r--keyboards/planck/keymaps/that_canadian/keymap.c4
-rw-r--r--keyboards/planck/keymaps/thermal_printer/keymap.c2
-rw-r--r--keyboards/planck/keymaps/tk/keymap.c2
-rw-r--r--keyboards/planck/keymaps/tom/keymap.c4
-rw-r--r--keyboards/planck/keymaps/tomkonidas/keymap.c2
-rw-r--r--keyboards/planck/keymaps/tong92/keymap.c4
-rw-r--r--keyboards/planck/keymaps/ttys0/keymap.c2
-rw-r--r--keyboards/planck/keymaps/tylerwince/keymap.c6
-rw-r--r--keyboards/planck/keymaps/unagi/keymap.c2
-rw-r--r--keyboards/planck/keymaps/unicode/keymap.c2
-rw-r--r--keyboards/planck/keymaps/vaire/keymap.c2
-rw-r--r--keyboards/planck/keymaps/vxid/keymap.c2
-rwxr-xr-xkeyboards/planck/keymaps/winternebs/keymap.c4
-rw-r--r--keyboards/planck/keymaps/xjtian/keymap.c4
-rw-r--r--keyboards/planck/keymaps/yang/keymap.c4
-rw-r--r--keyboards/planck/keymaps/zach/keymap.c2
-rwxr-xr-xkeyboards/planck/keymaps/zrichard/config.h1
-rwxr-xr-xkeyboards/planck/keymaps/zrichard/keymap.c4
-rw-r--r--keyboards/planck/light/config.h5
-rw-r--r--keyboards/planck/light/info.json6
-rw-r--r--keyboards/planck/light/light.c13
-rw-r--r--keyboards/planck/planck.c13
-rw-r--r--keyboards/planck/rev1/config.h4
-rw-r--r--keyboards/planck/rev1/info.json8
-rw-r--r--keyboards/planck/rev1/rev1.c15
-rw-r--r--keyboards/planck/rev2/config.h4
-rw-r--r--keyboards/planck/rev2/info.json8
-rw-r--r--keyboards/planck/rev2/rev2.c15
-rw-r--r--keyboards/planck/rev3/config.h4
-rw-r--r--keyboards/planck/rev3/info.json8
-rw-r--r--keyboards/planck/rev3/rev3.c15
-rw-r--r--keyboards/planck/rev4/config.h4
-rw-r--r--keyboards/planck/rev4/info.json8
-rw-r--r--keyboards/planck/rev4/rev4.c15
-rw-r--r--keyboards/planck/rev5/config.h4
-rw-r--r--keyboards/planck/rev5/info.json8
-rw-r--r--keyboards/planck/rev5/rev5.c15
-rw-r--r--keyboards/planck/rev6/config.h5
-rw-r--r--keyboards/planck/rev6/info.json8
-rw-r--r--keyboards/planck/rev6/rev6.c19
-rw-r--r--keyboards/planck/rev6_drop/config.h7
-rw-r--r--keyboards/planck/rev6_drop/info.json8
-rw-r--r--keyboards/planck/rev6_drop/matrix.c25
-rw-r--r--keyboards/planck/rev6_drop/rev6_drop.c19
-rw-r--r--keyboards/planck/thk/config.h4
-rw-r--r--keyboards/planck/thk/info.json6
-rw-r--r--keyboards/planck/thk/keymaps/thk/keymap.c2
-rw-r--r--keyboards/planck/thk/thk.c14
-rw-r--r--keyboards/playkbtw/ca66/config.h8
-rw-r--r--keyboards/playkbtw/ca66/info.json6
-rw-r--r--keyboards/playkbtw/ca66/keymaps/kelorean/keymap.c2
-rw-r--r--keyboards/playkbtw/ca66/keymaps/kelorean/layers.json2
-rw-r--r--keyboards/playkbtw/ca66/keymaps/olivia/keymap.c2
-rw-r--r--keyboards/playkbtw/helen80/config.h7
-rw-r--r--keyboards/playkbtw/helen80/info.json8
-rw-r--r--keyboards/playkbtw/pk60/config.h8
-rw-r--r--keyboards/playkbtw/pk60/info.json6
-rw-r--r--keyboards/playkbtw/pk60/keymaps/rfvizarra/keymap.c2
-rw-r--r--keyboards/playkbtw/pk64rgb/config.h7
-rw-r--r--keyboards/playkbtw/pk64rgb/info.json6
-rw-r--r--keyboards/playkbtw/pk64rgb/readme.md2
-rw-r--r--keyboards/ploopyco/mouse/config.h13
-rw-r--r--keyboards/ploopyco/mouse/info.json8
-rw-r--r--keyboards/ploopyco/mouse/keymaps/drag_scroll/keymap.c2
-rw-r--r--keyboards/ploopyco/mouse/keymaps/drashna/config.h2
-rw-r--r--keyboards/ploopyco/mouse/keymaps/drashna/keymap.c19
-rw-r--r--keyboards/ploopyco/mouse/keymaps/drashna/rules.mk3
-rw-r--r--keyboards/ploopyco/mouse/mouse.c6
-rw-r--r--keyboards/ploopyco/opt_encoder.c11
-rw-r--r--keyboards/ploopyco/opt_encoder.h42
-rw-r--r--keyboards/ploopyco/opt_encoder_simple.c147
-rw-r--r--keyboards/ploopyco/trackball/config.h10
-rw-r--r--keyboards/ploopyco/trackball/info.json9
-rw-r--r--keyboards/ploopyco/trackball/rev1/config.h2
-rw-r--r--keyboards/ploopyco/trackball/rev1_005/config.h2
-rw-r--r--keyboards/ploopyco/trackball/trackball.c11
-rw-r--r--keyboards/ploopyco/trackball_mini/config.h6
-rw-r--r--keyboards/ploopyco/trackball_mini/info.json9
-rw-r--r--keyboards/ploopyco/trackball_mini/rev1_001/config.h2
-rw-r--r--keyboards/ploopyco/trackball_mini/rev1_002/config.h2
-rw-r--r--keyboards/ploopyco/trackball_mini/trackball_mini.c8
-rw-r--r--keyboards/ploopyco/trackball_nano/config.h6
-rw-r--r--keyboards/ploopyco/trackball_nano/info.json9
-rw-r--r--keyboards/ploopyco/trackball_nano/keymaps/lkbm/keymap.c167
-rw-r--r--keyboards/ploopyco/trackball_nano/keymaps/lkbm/readme.md2
-rw-r--r--keyboards/ploopyco/trackball_nano/keymaps/lkbm/rules.mk1
-rw-r--r--keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c4
-rw-r--r--keyboards/ploopyco/trackball_nano/rev1_001/config.h2
-rw-r--r--keyboards/ploopyco/trackball_nano/trackball_nano.c12
-rw-r--r--keyboards/ploopyco/trackball_nano/trackball_nano.h2
-rw-r--r--keyboards/pluckey/config.h8
-rw-r--r--keyboards/pluckey/info.json6
-rw-r--r--keyboards/pluckey/keymaps/manna-harbour_miryoku/config.h22
-rw-r--r--keyboards/pluckey/keymaps/manna-harbour_miryoku/keymap.c4
-rw-r--r--keyboards/plum47/info.json80
-rw-r--r--keyboards/plum47/keymaps/default/keymap.c84
-rw-r--r--keyboards/plum47/keymaps/via/keymap.c92
-rw-r--r--keyboards/plum47/keymaps/via/rules.mk1
-rw-r--r--keyboards/plum47/readme.md28
-rw-r--r--keyboards/plum47/rules.mk1
-rw-r--r--keyboards/plume/plume65/config.h8
-rw-r--r--keyboards/plume/plume65/info.json6
-rw-r--r--keyboards/plut0nium/0x3e/config.h8
-rw-r--r--keyboards/plut0nium/0x3e/info.json6
-rw-r--r--keyboards/plx/config.h7
-rw-r--r--keyboards/plx/info.json6
-rw-r--r--keyboards/plywrks/ahgase/config.h8
-rw-r--r--keyboards/plywrks/ahgase/info.json6
-rw-r--r--keyboards/plywrks/allaro/info.json124
-rw-r--r--keyboards/plywrks/allaro/keymaps/default/keymap.c33
-rw-r--r--keyboards/plywrks/allaro/keymaps/via/keymap.c47
-rw-r--r--keyboards/plywrks/allaro/keymaps/via/rules.mk1
-rw-r--r--keyboards/plywrks/allaro/readme.md26
-rw-r--r--keyboards/plywrks/allaro/rules.mk1
-rw-r--r--keyboards/plywrks/lune/config.h83
-rw-r--r--keyboards/plywrks/lune/info.json87
-rw-r--r--keyboards/plywrks/lune/keymaps/default/keymap.c33
-rw-r--r--keyboards/plywrks/lune/keymaps/via/keymap.c48
-rw-r--r--keyboards/plywrks/lune/keymaps/via/rules.mk2
-rw-r--r--keyboards/plywrks/lune/lune.c38
-rw-r--r--keyboards/plywrks/lune/lune.h47
-rw-r--r--keyboards/plywrks/lune/readme.md21
-rw-r--r--keyboards/plywrks/lune/rules.mk19
-rw-r--r--keyboards/pohjolaworks/louhi/config.h8
-rw-r--r--keyboards/pohjolaworks/louhi/info.json6
-rw-r--r--keyboards/poker87c/config.h7
-rw-r--r--keyboards/poker87c/info.json8
-rw-r--r--keyboards/poker87d/config.h7
-rw-r--r--keyboards/poker87d/info.json8
-rw-r--r--keyboards/polilla/info.json6
-rw-r--r--keyboards/polilla/rev1/config.h8
-rw-r--r--keyboards/polycarbdiet/s20/config.h8
-rw-r--r--keyboards/polycarbdiet/s20/info.json6
-rw-r--r--keyboards/polycarbdiet/s20/readme.md4
-rw-r--r--keyboards/pom_keyboards/tnln95/config.h8
-rw-r--r--keyboards/pom_keyboards/tnln95/info.json6
-rw-r--r--keyboards/portal_66/hotswap/config.h8
-rw-r--r--keyboards/portal_66/hotswap/info.json6
-rw-r--r--keyboards/portal_66/soldered/config.h8
-rw-r--r--keyboards/portal_66/soldered/info.json8
-rw-r--r--keyboards/pos78/config.h8
-rw-r--r--keyboards/pos78/info.json8
-rw-r--r--keyboards/preonic/config.h6
-rw-r--r--keyboards/preonic/info.json1
-rw-r--r--keyboards/preonic/keymaps/0xdec/keymap.c4
-rw-r--r--keyboards/preonic/keymaps/AlexDaigre/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/CMD-Preonic/keymap.c4
-rw-r--r--keyboards/preonic/keymaps/arkag/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/badger/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/bghull/keymap.c4
-rw-r--r--keyboards/preonic/keymaps/blake-newman/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/boy314/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/codecoffeecode/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/cranium/keymap.c2
-rwxr-xr-xkeyboards/preonic/keymaps/davidrambo/keymap.c4
-rw-r--r--keyboards/preonic/keymaps/default/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/dlaroe/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/drasbeck/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/dudeofawesome/keymap.c4
-rw-r--r--keyboards/preonic/keymaps/ekis_isa/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/elisiano/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/fig-r/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/fsck/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/jacwib/keymap.c4
-rw-r--r--keyboards/preonic/keymaps/jpe230/config.h28
-rw-r--r--keyboards/preonic/keymaps/jpe230/jpe230.h35
-rw-r--r--keyboards/preonic/keymaps/jpe230/keymap.c116
-rw-r--r--keyboards/preonic/keymaps/jpe230/rules.mk9
-rw-r--r--keyboards/preonic/keymaps/keelhauler/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/kinesis/config.h1
-rw-r--r--keyboards/preonic/keymaps/kjwon15/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/kuatsure/keymap.c4
-rw-r--r--keyboards/preonic/keymaps/laurentlaurent/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/mechmaster48/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/mguterl/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/mikethetiger/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/muzfuz/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/mverteuil/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/mverteuil_2x2u/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/nikchi/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/pcurt854/keymap.c6
-rw-r--r--keyboards/preonic/keymaps/pezhore/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/pitty/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/pvillano/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/senseored/keymap.c4
-rw-r--r--keyboards/preonic/keymaps/smt/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/that_canadian/keymap.c4
-rw-r--r--keyboards/preonic/keymaps/trigotometry/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/ttys0/keymap.c2
-rw-r--r--keyboards/preonic/keymaps/zach/config.h1
-rw-r--r--keyboards/preonic/keymaps/zach/keymap.c2
-rw-r--r--keyboards/preonic/rev1/config.h23
-rw-r--r--keyboards/preonic/rev1/info.json9
-rw-r--r--keyboards/preonic/rev2/config.h23
-rw-r--r--keyboards/preonic/rev2/info.json9
-rw-r--r--keyboards/preonic/rev3/config.h5
-rw-r--r--keyboards/preonic/rev3/info.json10
-rw-r--r--keyboards/preonic/rev3_drop/config.h7
-rw-r--r--keyboards/preonic/rev3_drop/info.json10
-rw-r--r--keyboards/preonic/rev3_drop/matrix.c25
-rw-r--r--keyboards/primekb/meridian/config.h7
-rw-r--r--keyboards/primekb/meridian/info.json6
-rw-r--r--keyboards/primekb/meridian/ktr1010/config.h7
-rw-r--r--keyboards/primekb/meridian/readme.md2
-rw-r--r--keyboards/primekb/meridian/ws2812/config.h7
-rw-r--r--keyboards/primekb/meridian_rgb/config.h7
-rw-r--r--keyboards/primekb/meridian_rgb/info.json6
-rw-r--r--keyboards/primekb/meridian_rgb/readme.md2
-rw-r--r--keyboards/primekb/prime_e/config.h4
-rw-r--r--keyboards/primekb/prime_e/info.json5
-rw-r--r--keyboards/primekb/prime_e/keymaps/brandonschlack/keymap.c2
-rw-r--r--keyboards/primekb/prime_e/keymaps/gwillad/keymap.c2
-rw-r--r--keyboards/primekb/prime_e/keymaps/madhatter/keymap.c2
-rw-r--r--keyboards/primekb/prime_e/keymaps/milestogo/config.h1
-rw-r--r--keyboards/primekb/prime_e/keymaps/peott-fr/keymap.c2
-rw-r--r--keyboards/primekb/prime_e/keymaps/via/keymap.c2
-rw-r--r--keyboards/primekb/prime_e/rgb/config.h5
-rw-r--r--keyboards/primekb/prime_e/rgb/info.json7
-rw-r--r--keyboards/primekb/prime_e/std/config.h5
-rw-r--r--keyboards/primekb/prime_e/std/info.json7
-rw-r--r--keyboards/primekb/prime_l/config.h4
-rw-r--r--keyboards/primekb/prime_l/info.json5
-rw-r--r--keyboards/primekb/prime_l/v1/config.h6
-rw-r--r--keyboards/primekb/prime_l/v1/info.json6
-rw-r--r--keyboards/primekb/prime_l/v2/config.h6
-rw-r--r--keyboards/primekb/prime_l/v2/info.json4
-rw-r--r--keyboards/primekb/prime_m/config.h8
-rw-r--r--keyboards/primekb/prime_m/info.json7
-rw-r--r--keyboards/primekb/prime_m/keymaps/numpad/keymap.c2
-rw-r--r--keyboards/primekb/prime_o/config.h8
-rw-r--r--keyboards/primekb/prime_o/info.json6
-rw-r--r--keyboards/primekb/prime_o/keymaps/reasonsandreasons/keymap.c4
-rw-r--r--keyboards/primekb/prime_o/keymaps/spacebarracecar/keymap.c4
-rw-r--r--keyboards/primekb/prime_r/config.h8
-rw-r--r--keyboards/primekb/prime_r/info.json6
-rw-r--r--keyboards/program_yoink/config.h6
-rw-r--r--keyboards/program_yoink/ortho/config.h19
-rw-r--r--keyboards/program_yoink/ortho/info.json8
-rw-r--r--keyboards/program_yoink/ortho/keymaps/ortho_split/keymap.c2
-rw-r--r--keyboards/program_yoink/staggered/config.h19
-rw-r--r--keyboards/program_yoink/staggered/info.json8
-rw-r--r--keyboards/program_yoink/staggered/keymaps/split_bar/keymap.c2
-rw-r--r--keyboards/projectcain/relic/config.h127
-rw-r--r--keyboards/projectcain/relic/info.json25
-rw-r--r--keyboards/projectcain/relic/keymaps/default/config.h23
-rw-r--r--keyboards/projectcain/relic/keymaps/default/keymap.c74
-rw-r--r--keyboards/projectcain/relic/keymaps/default/readme.md1
-rw-r--r--keyboards/projectcain/relic/keymaps/default/rules.mk2
-rw-r--r--keyboards/projectcain/relic/readme.md17
-rw-r--r--keyboards/projectcain/relic/relic.c37
-rw-r--r--keyboards/projectcain/relic/relic.h80
-rw-r--r--keyboards/projectcain/relic/rules.mk18
-rw-r--r--keyboards/projectcain/vault35/config.h8
-rw-r--r--keyboards/projectcain/vault35/info.json8
-rw-r--r--keyboards/projectcain/vault45/config.h8
-rw-r--r--keyboards/projectcain/vault45/info.json8
-rw-r--r--keyboards/projectkb/alice/info.json6
-rw-r--r--keyboards/projectkb/alice/keymaps/devinceble/keymap.c2
-rw-r--r--keyboards/projectkb/alice/keymaps/keithlo/keymap.c2
-rw-r--r--keyboards/projectkb/alice/keymaps/madhatter/keymap.c4
-rw-r--r--keyboards/projectkb/alice/keymaps/stanrc85/keymap.c2
-rw-r--r--keyboards/projectkb/alice/rev1/config.h7
-rw-r--r--keyboards/projectkb/alice/rev2/config.h7
-rw-r--r--keyboards/projectkb/signature65/config.h7
-rw-r--r--keyboards/projectkb/signature65/info.json8
-rw-r--r--keyboards/projectkb/signature65/readme.md2
-rw-r--r--keyboards/projectkb/signature87/config.h7
-rw-r--r--keyboards/projectkb/signature87/info.json8
-rw-r--r--keyboards/prototypist/allison/config.h8
-rw-r--r--keyboards/prototypist/allison/info.json8
-rw-r--r--keyboards/prototypist/allison_numpad/config.h8
-rw-r--r--keyboards/prototypist/allison_numpad/info.json8
-rw-r--r--keyboards/prototypist/j01/config.h8
-rw-r--r--keyboards/prototypist/j01/info.json8
-rw-r--r--keyboards/protozoa/cassini/config.h9
-rw-r--r--keyboards/protozoa/cassini/info.json6
-rw-r--r--keyboards/protozoa/p01/config.h95
-rw-r--r--keyboards/protozoa/p01/halconf.h21
-rw-r--r--keyboards/protozoa/p01/info.json16
-rw-r--r--keyboards/protozoa/p01/keymaps/default/keymap.c43
-rw-r--r--keyboards/protozoa/p01/keymaps/default/readme.md5
-rw-r--r--keyboards/protozoa/p01/keymaps/default/rules.mk1
-rw-r--r--keyboards/protozoa/p01/keymaps/via/keymap.c63
-rw-r--r--keyboards/protozoa/p01/keymaps/via/readme.md5
-rw-r--r--keyboards/protozoa/p01/keymaps/via/rules.mk2
-rw-r--r--keyboards/protozoa/p01/mcuconf.h22
-rw-r--r--keyboards/protozoa/p01/p01.c16
-rw-r--r--keyboards/protozoa/p01/p01.h36
-rw-r--r--keyboards/protozoa/p01/readme.md34
-rw-r--r--keyboards/protozoa/p01/rules.mk28
-rw-r--r--keyboards/psuieee/pluto12/config.h8
-rw-r--r--keyboards/psuieee/pluto12/info.json6
-rw-r--r--keyboards/psuieee/pluto12/readme.md2
-rw-r--r--keyboards/pteron36/config.h8
-rw-r--r--keyboards/pteron36/info.json6
-rw-r--r--keyboards/puck/config.h8
-rw-r--r--keyboards/puck/info.json6
-rw-r--r--keyboards/punk75/config.h8
-rw-r--r--keyboards/punk75/info.json6
-rw-r--r--keyboards/q4z/config.h8
-rw-r--r--keyboards/q4z/info.json6
-rw-r--r--keyboards/q4z/keymaps/rjboone/keymap.c2
-rw-r--r--keyboards/qpockets/eggman/config.h8
-rw-r--r--keyboards/qpockets/eggman/info.json6
-rw-r--r--keyboards/qpockets/space_space/rev1/config.h8
-rw-r--r--keyboards/qpockets/space_space/rev1/info.json6
-rw-r--r--keyboards/qpockets/space_space/rev1/keymaps/big_space/keymap.c2
-rw-r--r--keyboards/qpockets/space_space/rev2/config.h8
-rw-r--r--keyboards/qpockets/space_space/rev2/info.json6
-rw-r--r--keyboards/qpockets/space_space/rev2/keymaps/big_space/keymap.c2
-rw-r--r--keyboards/qpockets/space_space/rev2/keymaps/qpockets/keymap.c2
-rw-r--r--keyboards/qpockets/wanten/config.h8
-rw-r--r--keyboards/qpockets/wanten/info.json6
-rw-r--r--keyboards/qpockets/wanten/keymaps/2u_bars/keymap.c2
-rw-r--r--keyboards/qpockets/wanten/keymaps/625_bar/keymap.c2
-rw-r--r--keyboards/qpockets/wanten/readme.md2
-rw-r--r--keyboards/quad_h/lb75/config.h8
-rw-r--r--keyboards/quad_h/lb75/info.json6
-rw-r--r--keyboards/quad_h/lb75/keymaps/divided_fnrow/keymap.c2
-rw-r--r--keyboards/quantrik/kyuu/config.h8
-rw-r--r--keyboards/quantrik/kyuu/info.json6
-rw-r--r--keyboards/qvex/lynepad/config.h8
-rw-r--r--keyboards/qvex/lynepad/info.json8
-rw-r--r--keyboards/qwertlekeys/calice/calice.c17
-rw-r--r--keyboards/qwertlekeys/calice/calice.h44
-rw-r--r--keyboards/qwertlekeys/calice/config.h47
-rw-r--r--keyboards/qwertlekeys/calice/info.json98
-rw-r--r--keyboards/qwertlekeys/calice/keymaps/default/keymap.c38
-rw-r--r--keyboards/qwertlekeys/calice/keymaps/via/keymap.c54
-rw-r--r--keyboards/qwertlekeys/calice/keymaps/via/rules.mk1
-rw-r--r--keyboards/qwertlekeys/calice/readme.md23
-rw-r--r--keyboards/qwertlekeys/calice/rules.mk19
-rw-r--r--keyboards/qwertykeys/qk65/hotswap/config.h8
-rw-r--r--keyboards/qwertykeys/qk65/hotswap/info.json8
-rw-r--r--keyboards/qwertykeys/qk65/solder/config.h8
-rw-r--r--keyboards/qwertykeys/qk65/solder/info.json8
-rw-r--r--keyboards/qwertyydox/config.h7
-rw-r--r--keyboards/qwertyydox/info.json6
-rw-r--r--keyboards/rabbit/rabbit68/config.h8
-rw-r--r--keyboards/rabbit/rabbit68/info.json6
-rw-r--r--keyboards/rad/config.h1
-rw-r--r--keyboards/rad/readme.md2
-rw-r--r--keyboards/rainkeebs/delilah/config.h8
-rw-r--r--keyboards/rainkeebs/delilah/info.json6
-rw-r--r--keyboards/rainkeebs/rainkeeb/config.h8
-rw-r--r--keyboards/rainkeebs/rainkeeb/info.json6
-rw-r--r--keyboards/rainkeebs/yasui/config.h8
-rw-r--r--keyboards/rainkeebs/yasui/info.json6
-rw-r--r--keyboards/ramonimbao/aelith/config.h8
-rw-r--r--keyboards/ramonimbao/aelith/info.json6
-rw-r--r--keyboards/ramonimbao/chevron/config.h8
-rw-r--r--keyboards/ramonimbao/chevron/info.json6
-rw-r--r--keyboards/ramonimbao/herringbone/pro/config.h8
-rw-r--r--keyboards/ramonimbao/herringbone/pro/info.json6
-rw-r--r--keyboards/ramonimbao/herringbone/v1/config.h8
-rw-r--r--keyboards/ramonimbao/herringbone/v1/info.json6
-rw-r--r--keyboards/ramonimbao/mona/v1/config.h8
-rw-r--r--keyboards/ramonimbao/mona/v1/info.json78
-rw-r--r--keyboards/ramonimbao/mona/v1_1/config.h8
-rw-r--r--keyboards/ramonimbao/mona/v1_1/info.json78
-rw-r--r--keyboards/ramonimbao/mona/v1_1/readme.md2
-rw-r--r--keyboards/ramonimbao/mona/v32a/config.h8
-rw-r--r--keyboards/ramonimbao/mona/v32a/info.json78
-rw-r--r--keyboards/ramonimbao/mona/v32a/readme.md2
-rw-r--r--keyboards/ramonimbao/squishy65/config.h7
-rw-r--r--keyboards/ramonimbao/squishy65/info.json6
-rw-r--r--keyboards/ramonimbao/squishyfrl/config.h8
-rw-r--r--keyboards/ramonimbao/squishyfrl/info.json8
-rw-r--r--keyboards/ramonimbao/squishytkl/config.h8
-rw-r--r--keyboards/ramonimbao/squishytkl/info.json6
-rw-r--r--keyboards/ramonimbao/tkl_ff/config.h8
-rw-r--r--keyboards/ramonimbao/tkl_ff/info.json5
-rw-r--r--keyboards/ramonimbao/tkl_ff/rules.mk2
-rw-r--r--keyboards/ramonimbao/tkl_ff/v1/info.json5
-rw-r--r--keyboards/ramonimbao/tkl_ff/v1/rules.mk0
-rw-r--r--keyboards/ramonimbao/tkl_ff/v2/config.h3
-rw-r--r--keyboards/ramonimbao/tkl_ff/v2/info.json5
-rw-r--r--keyboards/ramonimbao/wete/v1/config.h7
-rw-r--r--keyboards/ramonimbao/wete/v1/info.json6
-rw-r--r--keyboards/ramonimbao/wete/v2/config.h8
-rw-r--r--keyboards/ramonimbao/wete/v2/info.json6
-rw-r--r--keyboards/ramonimbao/wete/v2/readme.md2
-rw-r--r--keyboards/rart/rart45/config.h8
-rw-r--r--keyboards/rart/rart45/info.json6
-rw-r--r--keyboards/rart/rart4x4/config.h8
-rw-r--r--keyboards/rart/rart4x4/info.json6
-rw-r--r--keyboards/rart/rart67/config.h8
-rw-r--r--keyboards/rart/rart67/info.json6
-rw-r--r--keyboards/rart/rart67m/config.h7
-rw-r--r--keyboards/rart/rart67m/info.json6
-rw-r--r--keyboards/rart/rart75/config.h8
-rw-r--r--keyboards/rart/rart75/info.json6
-rw-r--r--keyboards/rart/rart75hs/config.h8
-rw-r--r--keyboards/rart/rart75hs/info.json6
-rw-r--r--keyboards/rart/rart75m/config.h7
-rw-r--r--keyboards/rart/rart75m/info.json6
-rw-r--r--keyboards/rart/rartand/config.h8
-rw-r--r--keyboards/rart/rartand/info.json6
-rw-r--r--keyboards/rart/rartland/config.h7
-rw-r--r--keyboards/rart/rartland/info.json6
-rw-r--r--keyboards/rart/rartlice/config.h7
-rw-r--r--keyboards/rart/rartlice/info.json6
-rw-r--r--keyboards/rart/rartlite/config.h8
-rw-r--r--keyboards/rart/rartlite/info.json8
-rw-r--r--keyboards/rart/rartpad/config.h8
-rw-r--r--keyboards/rart/rartpad/info.json6
-rw-r--r--keyboards/rart/rartpad/keymaps/numpad/keymap.c2
-rw-r--r--keyboards/rate/pistachio/config.h7
-rw-r--r--keyboards/rate/pistachio/info.json8
-rw-r--r--keyboards/rate/pistachio/rev1/config.h1
-rw-r--r--keyboards/rate/pistachio/rev2/config.h1
-rw-r--r--keyboards/rate/pistachio_mp/config.h8
-rw-r--r--keyboards/rate/pistachio_mp/info.json6
-rw-r--r--keyboards/rate/pistachio_pro/config.h8
-rw-r--r--keyboards/rate/pistachio_pro/info.json6
-rw-r--r--keyboards/rationalist/ratio65_hotswap/info.json10
-rw-r--r--keyboards/rationalist/ratio65_hotswap/rev_a/config.h7
-rw-r--r--keyboards/rationalist/ratio65_hotswap/rev_a/info.json16
-rw-r--r--keyboards/rationalist/ratio65_solder/info.json10
-rw-r--r--keyboards/rationalist/ratio65_solder/rev_a/config.h7
-rw-r--r--keyboards/rationalist/ratio65_solder/rev_a/info.json16
-rw-r--r--keyboards/recompile_keys/choco60/config.h7
-rw-r--r--keyboards/recompile_keys/choco60/info.json6
-rw-r--r--keyboards/recompile_keys/choco60/rev1/config.h1
-rw-r--r--keyboards/recompile_keys/choco60/rev2/config.h1
-rw-r--r--keyboards/recompile_keys/cocoa40/config.h8
-rw-r--r--keyboards/recompile_keys/cocoa40/info.json6
-rw-r--r--keyboards/recompile_keys/mio/config.h8
-rw-r--r--keyboards/recompile_keys/mio/info.json6
-rw-r--r--keyboards/recompile_keys/nomu30/config.h7
-rw-r--r--keyboards/recompile_keys/nomu30/info.json6
-rw-r--r--keyboards/recompile_keys/nomu30/keymaps/center_sprit/keymap.c2
-rw-r--r--keyboards/recompile_keys/nomu30/keymaps/center_sprit/readme.md2
-rw-r--r--keyboards/recompile_keys/nomu30/keymaps/like_jis/keymap.c2
-rw-r--r--keyboards/recompile_keys/nomu30/keymaps/like_jis/readme.md2
-rw-r--r--keyboards/recompile_keys/nomu30/rev1/config.h1
-rw-r--r--keyboards/recompile_keys/nomu30/rev2/config.h1
-rw-r--r--keyboards/rect44/config.h7
-rw-r--r--keyboards/rect44/info.json8
-rw-r--r--keyboards/redox/info.json94
-rw-r--r--keyboards/redox/keymaps/KL1RL/keymap.c2
-rw-r--r--keyboards/redox/keymaps/default/keymap.c2
-rw-r--r--keyboards/redox/keymaps/eightbitraptor/keymap.c2
-rw-r--r--keyboards/redox/keymaps/fculpo/keymap.c2
-rw-r--r--keyboards/redox/keymaps/finex/keymap.c2
-rw-r--r--keyboards/redox/keymaps/german/keymap.c2
-rw-r--r--keyboards/redox/keymaps/italian/keymap.c2
-rw-r--r--keyboards/redox/keymaps/jeherve/keymap.c2
-rwxr-xr-xkeyboards/redox/keymaps/nrichers/keymap.c2
-rw-r--r--keyboards/redox/keymaps/ptillemans/keymap.c2
-rw-r--r--keyboards/redox/keymaps/thattolleyguy/keymap.c4
-rw-r--r--keyboards/redox/keymaps/tw1t611/keymap.c2
-rw-r--r--keyboards/redox/keymaps/via/keymap.c2
-rw-r--r--keyboards/redox/readme.md2
-rw-r--r--keyboards/redox/rev1/base/info.json5
-rw-r--r--keyboards/redox/rev1/base/rules.mk0
-rw-r--r--keyboards/redox/rev1/config.h7
-rw-r--r--keyboards/redox/rev1/info.json100
-rw-r--r--keyboards/redox/rev1/proton_c/config.h4
-rw-r--r--keyboards/redox/rev1/proton_c/info.json5
-rw-r--r--keyboards/redox/rev1/rules.mk1
-rw-r--r--keyboards/redox/rules.mk2
-rw-r--r--keyboards/redox_media/config.h7
-rw-r--r--keyboards/redox_media/info.json6
-rw-r--r--keyboards/redox_w/config.h8
-rw-r--r--keyboards/redox_w/info.json6
-rw-r--r--keyboards/redox_w/keymaps/danielo515/keymap.c2
-rw-r--r--keyboards/redox_w/keymaps/default/keymap.c2
-rw-r--r--keyboards/redox_w/keymaps/italian/keymap.c14
-rw-r--r--keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/redox_w/keymaps/via/keymap.c2
-rw-r--r--keyboards/redscarf_i/config.h9
-rw-r--r--keyboards/redscarf_i/info.json6
-rw-r--r--keyboards/redscarf_i/redscarf_i.c2
-rwxr-xr-xkeyboards/redscarf_iiplus/verb/config.h8
-rw-r--r--keyboards/redscarf_iiplus/verb/info.json8
-rwxr-xr-xkeyboards/redscarf_iiplus/verc/config.h8
-rw-r--r--keyboards/redscarf_iiplus/verc/info.json8
-rw-r--r--keyboards/redscarf_iiplus/verd/config.h8
-rw-r--r--keyboards/redscarf_iiplus/verd/info.json8
-rw-r--r--keyboards/retro_75/config.h8
-rw-r--r--keyboards/retro_75/info.json6
-rw-r--r--keyboards/retro_75/keymaps/split_backspace/keymap.c2
-rw-r--r--keyboards/reversestudio/decadepad/config.h9
-rw-r--r--keyboards/reversestudio/decadepad/info.json6
-rw-r--r--keyboards/reviung/reviung33/config.h8
-rw-r--r--keyboards/reviung/reviung33/info.json6
-rwxr-xr-xkeyboards/reviung/reviung34/config.h8
-rwxr-xr-xkeyboards/reviung/reviung34/info.json6
-rw-r--r--keyboards/reviung/reviung39/config.h8
-rw-r--r--keyboards/reviung/reviung39/info.json6
-rw-r--r--keyboards/reviung/reviung39/keymaps/toshi0383/keymap.c12
-rw-r--r--keyboards/reviung/reviung41/config.h8
-rw-r--r--keyboards/reviung/reviung41/info.json8
-rw-r--r--keyboards/reviung/reviung41/keymaps/ciutadellla/keymap.c4
-rw-r--r--keyboards/reviung/reviung5/config.h8
-rw-r--r--keyboards/reviung/reviung5/info.json6
-rw-r--r--keyboards/reviung/reviung53/config.h8
-rw-r--r--keyboards/reviung/reviung53/info.json6
-rw-r--r--keyboards/reviung/reviung53/readme.md2
-rw-r--r--keyboards/reviung/reviung61/config.h8
-rw-r--r--keyboards/reviung/reviung61/info.json6
-rw-r--r--keyboards/rgbkb/common/common_oled.c3
-rw-r--r--keyboards/rgbkb/mun/config.h6
-rw-r--r--keyboards/rgbkb/mun/keymaps/peott-fr/keymap.c4
-rw-r--r--keyboards/rgbkb/mun/keymaps/xulkal2/keymap.c2
-rw-r--r--keyboards/rgbkb/mun/matrix.c76
-rw-r--r--keyboards/rgbkb/mun/rev1/config.h12
-rw-r--r--keyboards/rgbkb/mun/rev1/info.json8
-rw-r--r--keyboards/rgbkb/mun/rules.mk5
-rw-r--r--keyboards/rgbkb/pan/config.h6
-rw-r--r--keyboards/rgbkb/pan/info.json8
-rw-r--r--keyboards/rgbkb/pan/keymaps/default/keymap.c2
-rw-r--r--keyboards/rgbkb/sol/keymaps/brianweyer/keymap.c2
-rw-r--r--keyboards/rgbkb/sol/keymaps/danielhklein/keymap.c4
-rw-r--r--keyboards/rgbkb/sol/keymaps/default/keymap.c4
-rw-r--r--keyboards/rgbkb/sol/keymaps/xyverz/keymap.c6
-rw-r--r--keyboards/rgbkb/sol/rev1/config.h7
-rw-r--r--keyboards/rgbkb/sol/rev1/info.json6
-rw-r--r--keyboards/rgbkb/sol/rev2/config.h7
-rw-r--r--keyboards/rgbkb/sol/rev2/info.json6
-rw-r--r--keyboards/rgbkb/sol3/config.h6
-rw-r--r--keyboards/rgbkb/sol3/readme.md2
-rw-r--r--keyboards/rgbkb/sol3/rev1/config.h12
-rw-r--r--keyboards/rgbkb/sol3/rev1/info.json8
-rw-r--r--keyboards/rgbkb/sol3/rules.mk8
-rw-r--r--keyboards/rgbkb/zen/config.h20
-rw-r--r--keyboards/rgbkb/zen/post_rules.mk15
-rw-r--r--keyboards/rgbkb/zen/readme.md4
-rw-r--r--keyboards/rgbkb/zen/rev1/config.h7
-rw-r--r--keyboards/rgbkb/zen/rev1/info.json8
-rw-r--r--keyboards/rgbkb/zen/rev1/keymaps/333fred/keymap.c12
-rw-r--r--keyboards/rgbkb/zen/rev1/keymaps/cwebster2/config.h2
-rw-r--r--keyboards/rgbkb/zen/rev1/keymaps/jwlawrence/keymap.c4
-rw-r--r--keyboards/rgbkb/zen/rev1/keymaps/samae/keymap.c4
-rw-r--r--keyboards/rgbkb/zen/rev1/keymaps/starcalleramethyst/keymap.c2
-rw-r--r--keyboards/rgbkb/zen/rev1/keymaps/xyverz/keymap.c2
-rw-r--r--keyboards/rgbkb/zen/rev1/rev1.h10
-rw-r--r--keyboards/rgbkb/zen/rev2/config.h16
-rw-r--r--keyboards/rgbkb/zen/rev2/info.json8
-rw-r--r--keyboards/rgbkb/zen/rev2/rev2.c2
-rw-r--r--keyboards/rgbkb/zen/rev2/rev2.h68
-rw-r--r--keyboards/rgbkb/zen/rules.mk2
-rw-r--r--keyboards/rgbkb/zen/zen.c1
-rw-r--r--keyboards/rgbkb/zen/zen.h8
-rw-r--r--keyboards/rgbkb/zygomorph/keymaps/5x6pad/keymap.c2
-rw-r--r--keyboards/rgbkb/zygomorph/keymaps/default_oled/keymap.c2
-rw-r--r--keyboards/rgbkb/zygomorph/rev1/config.h7
-rw-r--r--keyboards/rgbkb/zygomorph/rev1/info.json6
-rw-r--r--keyboards/ristretto/config.h7
-rw-r--r--keyboards/ristretto/info.json6
-rw-r--r--keyboards/rmkeebs/rm_numpad/config.h8
-rw-r--r--keyboards/rmkeebs/rm_numpad/info.json6
-rw-r--r--keyboards/rocketboard_16/config.h7
-rw-r--r--keyboards/rocketboard_16/info.json6
-rw-r--r--keyboards/rocketboard_16/keycode_lookup.c2
-rw-r--r--keyboards/rocketboard_16/keymaps/default/keymap.c4
-rw-r--r--keyboards/rocketboard_16/keymaps/via/keymap.c4
-rw-r--r--keyboards/rominronin/katana60/rev1/config.h8
-rw-r--r--keyboards/rominronin/katana60/rev1/info.json6
-rw-r--r--keyboards/rominronin/katana60/rev1/keymaps/colemak/keymap.c2
-rw-r--r--keyboards/rominronin/katana60/rev1/keymaps/josefadamcik/keymap.c6
-rw-r--r--keyboards/rominronin/katana60/rev1/keymaps/msiu/keymap.c2
-rw-r--r--keyboards/rominronin/katana60/rev1/keymaps/rominronin/keymap.c2
-rw-r--r--keyboards/rominronin/katana60/rev2/config.h8
-rw-r--r--keyboards/rominronin/katana60/rev2/info.json6
-rw-r--r--keyboards/rominronin/katana60/rev2/keymaps/rominronin_7u/keymap.c2
-rw-r--r--keyboards/roseslite/config.h8
-rw-r--r--keyboards/roseslite/info.json6
-rw-r--r--keyboards/rotor/config.h7
-rw-r--r--keyboards/rotor/info.json6
-rw-r--r--keyboards/rotr/config.h8
-rw-r--r--keyboards/rotr/info.json8
-rw-r--r--keyboards/rpiguy9907/southpaw66/config.h7
-rw-r--r--keyboards/rpiguy9907/southpaw66/info.json6
-rw-r--r--keyboards/rubi/config.h8
-rw-r--r--keyboards/rubi/info.json6
-rw-r--r--keyboards/runes/skjoldr/config.h93
-rw-r--r--keyboards/runes/skjoldr/info.json87
-rw-r--r--keyboards/runes/skjoldr/keymaps/default/keymap.c59
-rw-r--r--keyboards/runes/skjoldr/keymaps/default/readme.md1
-rw-r--r--keyboards/runes/skjoldr/keymaps/via/keymap.c59
-rw-r--r--keyboards/runes/skjoldr/keymaps/via/rules.mk2
-rw-r--r--keyboards/runes/skjoldr/readme.md23
-rw-r--r--keyboards/runes/skjoldr/rules.mk20
-rw-r--r--keyboards/runes/skjoldr/skjoldr.c17
-rw-r--r--keyboards/runes/skjoldr/skjoldr.h49
-rw-r--r--keyboards/runes/vaengr/config.h8
-rw-r--r--keyboards/runes/vaengr/info.json8
-rw-r--r--keyboards/ryanbaekr/rb18/config.h8
-rw-r--r--keyboards/ryanbaekr/rb18/info.json36
-rw-r--r--keyboards/ryanbaekr/rb69/config.h8
-rw-r--r--keyboards/ryanbaekr/rb69/info.json6
-rw-r--r--keyboards/ryanbaekr/rb86/config.h8
-rw-r--r--keyboards/ryanbaekr/rb86/info.json6
-rw-r--r--keyboards/ryanskidmore/rskeys100/config.h7
-rw-r--r--keyboards/ryanskidmore/rskeys100/info.json8
-rw-r--r--keyboards/ryanskidmore/rskeys100/readme.md2
-rwxr-xr-xkeyboards/ryloo_studio/m0110/config.h8
-rw-r--r--keyboards/ryloo_studio/m0110/info.json6
-rwxr-xr-xkeyboards/ryloo_studio/m0110/readme.md4
-rw-r--r--keyboards/s_ol/0xc_pad/readme.md2
-rw-r--r--keyboards/saevus/cor_tkl/config.h26
-rw-r--r--keyboards/saevus/cor_tkl/cor_tkl.c44
-rw-r--r--keyboards/saevus/cor_tkl/cor_tkl.h121
-rw-r--r--keyboards/saevus/cor_tkl/info.json524
-rw-r--r--keyboards/saevus/cor_tkl/keymaps/default/config.h20
-rw-r--r--keyboards/saevus/cor_tkl/keymaps/default/keymap.c27
-rw-r--r--keyboards/saevus/cor_tkl/keymaps/iso/config.h19
-rw-r--r--keyboards/saevus/cor_tkl/keymaps/iso/keymap.c27
-rw-r--r--keyboards/saevus/cor_tkl/keymaps/via/config.h19
-rw-r--r--keyboards/saevus/cor_tkl/keymaps/via/keymap.c51
-rw-r--r--keyboards/saevus/cor_tkl/keymaps/via/rules.mk1
-rw-r--r--keyboards/saevus/cor_tkl/readme.md18
-rw-r--r--keyboards/saevus/cor_tkl/rules.mk13
-rw-r--r--keyboards/salicylic_acid3/7skb/info.json74
-rw-r--r--keyboards/salicylic_acid3/7skb/keymaps/default/keymap.c2
-rw-r--r--keyboards/salicylic_acid3/7skb/keymaps/salicylic/keymap.c10
-rw-r--r--keyboards/salicylic_acid3/7skb/keymaps/via/keymap.c2
-rw-r--r--keyboards/salicylic_acid3/7skb/rev1/config.h7
-rw-r--r--keyboards/salicylic_acid3/7skb/rev1/info.json80
-rw-r--r--keyboards/salicylic_acid3/7skb/rules.mk2
-rw-r--r--keyboards/salicylic_acid3/7splus/config.h7
-rw-r--r--keyboards/salicylic_acid3/7splus/info.json6
-rw-r--r--keyboards/salicylic_acid3/7splus/keymaps/salicylic/keymap.c4
-rw-r--r--keyboards/salicylic_acid3/ajisai74/config.h7
-rw-r--r--keyboards/salicylic_acid3/ajisai74/info.json6
-rw-r--r--keyboards/salicylic_acid3/ergoarrows/config.h7
-rw-r--r--keyboards/salicylic_acid3/ergoarrows/info.json6
-rw-r--r--keyboards/salicylic_acid3/ergoarrows/keymaps/salicylic/keymap.c2
-rw-r--r--keyboards/salicylic_acid3/getta25/info.json36
-rw-r--r--keyboards/salicylic_acid3/getta25/rev1/config.h7
-rw-r--r--keyboards/salicylic_acid3/getta25/rev1/info.json42
-rw-r--r--keyboards/salicylic_acid3/jisplit89/info.json100
-rw-r--r--keyboards/salicylic_acid3/jisplit89/keymaps/salicylic/keymap.c4
-rw-r--r--keyboards/salicylic_acid3/jisplit89/rev1/config.h7
-rw-r--r--keyboards/salicylic_acid3/jisplit89/rev1/info.json106
-rw-r--r--keyboards/salicylic_acid3/nafuda/config.h7
-rw-r--r--keyboards/salicylic_acid3/nafuda/info.json6
-rw-r--r--keyboards/salicylic_acid3/naked48/info.json249
-rw-r--r--keyboards/salicylic_acid3/naked48/keymaps/salicylic/keymap.c2
-rw-r--r--keyboards/salicylic_acid3/naked48/keymaps/salicylic_with_nafuda/keymap.c2
-rw-r--r--keyboards/salicylic_acid3/naked48/keymaps/salicylic_with_setta21/keymap.c2
-rw-r--r--keyboards/salicylic_acid3/naked48/keymaps/scheiklp/keymap.c2
-rw-r--r--keyboards/salicylic_acid3/naked48/keymaps/via_rgb_matrix/keymap.c2
-rw-r--r--keyboards/salicylic_acid3/naked48/rev1/config.h7
-rw-r--r--keyboards/salicylic_acid3/naked48/rev1/info.json255
-rw-r--r--keyboards/salicylic_acid3/naked60/info.json71
-rw-r--r--keyboards/salicylic_acid3/naked60/keymaps/333fred/keymap.c2
-rw-r--r--keyboards/salicylic_acid3/naked60/keymaps/salicylic/keymap.c6
-rw-r--r--keyboards/salicylic_acid3/naked60/keymaps/salicylic_with_nafuda/keymap.c6
-rw-r--r--keyboards/salicylic_acid3/naked60/keymaps/salicylic_with_setta21/keymap.c6
-rw-r--r--keyboards/salicylic_acid3/naked60/rev1/config.h7
-rw-r--r--keyboards/salicylic_acid3/naked60/rev1/info.json77
-rw-r--r--keyboards/salicylic_acid3/naked64/info.json174
-rw-r--r--keyboards/salicylic_acid3/naked64/keymaps/salicylic/keymap.c6
-rw-r--r--keyboards/salicylic_acid3/naked64/keymaps/salicylic_with_setta21/keymap.c6
-rw-r--r--keyboards/salicylic_acid3/naked64/rev1/config.h7
-rw-r--r--keyboards/salicylic_acid3/naked64/rev1/info.json180
-rw-r--r--keyboards/salicylic_acid3/nknl7en/config.h7
-rw-r--r--keyboards/salicylic_acid3/nknl7en/info.json6
-rw-r--r--keyboards/salicylic_acid3/nknl7en/keymaps/salicylic/keymap.c2
-rw-r--r--keyboards/salicylic_acid3/nknl7jp/config.h7
-rw-r--r--keyboards/salicylic_acid3/nknl7jp/info.json6
-rw-r--r--keyboards/salicylic_acid3/nknl7jp/keymaps/salicylic/keymap.c2
-rw-r--r--keyboards/salicylic_acid3/setta21/info.json37
-rw-r--r--keyboards/salicylic_acid3/setta21/rev1/config.h7
-rw-r--r--keyboards/salicylic_acid3/setta21/rev1/info.json43
-rw-r--r--keyboards/sam/s80/config.h7
-rw-r--r--keyboards/sam/s80/info.json8
-rw-r--r--keyboards/sam/sg81m/config.h7
-rw-r--r--keyboards/sam/sg81m/info.json8
-rw-r--r--keyboards/sanctified/dystopia/config.h9
-rw-r--r--keyboards/sanctified/dystopia/info.json6
-rw-r--r--keyboards/sandwich/keeb68/config.h8
-rw-r--r--keyboards/sandwich/keeb68/info.json8
-rw-r--r--keyboards/sandwich/keeb68/keymaps/grv_esc/keymap.c2
-rw-r--r--keyboards/sandwich/keeb68/readme.md2
-rw-r--r--keyboards/satt/comet46/config.h8
-rw-r--r--keyboards/satt/comet46/i2c.c162
-rw-r--r--keyboards/satt/comet46/i2c.h46
-rw-r--r--keyboards/satt/comet46/info.json6
-rw-r--r--keyboards/satt/comet46/keymaps/default-rgbled/keymap.c2
-rw-r--r--keyboards/satt/comet46/keymaps/default/config.h29
-rw-r--r--keyboards/satt/comet46/keymaps/default/keymap.c49
-rw-r--r--keyboards/satt/comet46/keymaps/default/rules.mk5
-rw-r--r--keyboards/satt/comet46/keymaps/satt/config.h29
-rw-r--r--keyboards/satt/comet46/keymaps/satt/keymap.c111
-rw-r--r--keyboards/satt/comet46/keymaps/satt/rules.mk4
-rw-r--r--keyboards/satt/comet46/lib/glcdfont.c137
-rw-r--r--keyboards/satt/comet46/rules.mk5
-rw-r--r--keyboards/satt/comet46/ssd1306.c343
-rw-r--r--keyboards/satt/comet46/ssd1306.h90
-rw-r--r--keyboards/satt/vision/config.h7
-rw-r--r--keyboards/satt/vision/info.json6
-rw-r--r--keyboards/satt/vision/keymaps/satt/keymap.c2
-rw-r--r--keyboards/sauce/mild/config.h8
-rw-r--r--keyboards/sauce/mild/info.json8
-rw-r--r--keyboards/sawnsprojects/amber80/readme.md2
-rw-r--r--keyboards/sawnsprojects/amber80/solder/config.h8
-rw-r--r--keyboards/sawnsprojects/amber80/solder/info.json8
-rw-r--r--keyboards/sawnsprojects/amber80/solder/readme.md2
-rw-r--r--keyboards/sawnsprojects/krush/krush60/readme.md2
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/config.h8
-rw-r--r--keyboards/sawnsprojects/krush/krush60/solder/info.json8
-rw-r--r--keyboards/sawnsprojects/krush/krush65/hotswap/config.h64
-rw-r--r--keyboards/sawnsprojects/krush/krush65/hotswap/encoder_actions.c58
-rw-r--r--keyboards/sawnsprojects/krush/krush65/hotswap/encoder_actions.h21
-rw-r--r--keyboards/sawnsprojects/krush/krush65/hotswap/hotswap.c31
-rw-r--r--keyboards/sawnsprojects/krush/krush65/hotswap/hotswap.h53
-rw-r--r--keyboards/sawnsprojects/krush/krush65/hotswap/info.json163
-rw-r--r--keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/default/keymap.c39
-rw-r--r--keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/default/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/via/keymap.c60
-rw-r--r--keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/via/readme.md1
-rw-r--r--keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/via/rules.mk5
-rw-r--r--keyboards/sawnsprojects/krush/krush65/hotswap/readme.md23
-rw-r--r--keyboards/sawnsprojects/krush/krush65/hotswap/rules.mk19
-rw-r--r--keyboards/sawnsprojects/krush/krush65/readme.md2
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/config.h8
-rw-r--r--keyboards/sawnsprojects/krush/krush65/solder/info.json8
-rw-r--r--keyboards/sawnsprojects/satxri6key/config.h7
-rw-r--r--keyboards/sawnsprojects/satxri6key/info.json6
-rw-r--r--keyboards/sawnsprojects/vcl65/readme.md2
-rw-r--r--keyboards/sawnsprojects/vcl65/solder/config.h8
-rw-r--r--keyboards/sawnsprojects/vcl65/solder/info.json8
-rw-r--r--keyboards/sawnsprojects/vcl65/solder/readme.md2
-rw-r--r--keyboards/scatter42/config.h8
-rw-r--r--keyboards/scatter42/info.json6
-rw-r--r--keyboards/sck/gtm/config.h8
-rw-r--r--keyboards/sck/gtm/info.json8
-rw-r--r--keyboards/sck/m0116b/config.h8
-rw-r--r--keyboards/sck/m0116b/info.json6
-rw-r--r--keyboards/sck/m0116b/keymaps/m0116/keymap.c4
-rw-r--r--keyboards/sck/m0116b/keymaps/m0118/keymap.c2
-rw-r--r--keyboards/sck/neiso/config.h8
-rw-r--r--keyboards/sck/neiso/info.json6
-rw-r--r--keyboards/sck/osa/config.h8
-rw-r--r--keyboards/sck/osa/info.json6
-rw-r--r--keyboards/sekigon/grs_70ec/config.h8
-rw-r--r--keyboards/sekigon/grs_70ec/info.json8
-rw-r--r--keyboards/sendyyeah/75pixels/config.h7
-rw-r--r--keyboards/sendyyeah/75pixels/info.json8
-rw-r--r--keyboards/sendyyeah/bevi/config.h7
-rw-r--r--keyboards/sendyyeah/bevi/info.json6
-rw-r--r--keyboards/sendyyeah/pix/config.h7
-rw-r--r--keyboards/sendyyeah/pix/info.json6
-rw-r--r--keyboards/senselessclay/ck60/config.h7
-rw-r--r--keyboards/senselessclay/ck60/info.json6
-rw-r--r--keyboards/senselessclay/ck65/config.h8
-rw-r--r--keyboards/senselessclay/ck65/info.json6
-rw-r--r--keyboards/senselessclay/gos65/config.h8
-rw-r--r--keyboards/senselessclay/gos65/info.json6
-rw-r--r--keyboards/senselessclay/had60/config.h8
-rw-r--r--keyboards/senselessclay/had60/info.json6
-rw-r--r--keyboards/senselessclay/had60/keymaps/had/keymap.c2
-rw-r--r--keyboards/sentraq/number_pad/config.h8
-rw-r--r--keyboards/sentraq/number_pad/info.json8
-rw-r--r--keyboards/sentraq/s60_x/default/config.h8
-rw-r--r--keyboards/sentraq/s60_x/default/info.json3
-rw-r--r--keyboards/sentraq/s60_x/info.json7
-rw-r--r--keyboards/sentraq/s60_x/keymaps/amnesia0287/keymap.c2
-rw-r--r--keyboards/sentraq/s60_x/keymaps/ansi_qwertz/keymap.c2
-rw-r--r--keyboards/sentraq/s60_x/keymaps/bluebear/keymap.c4
-rw-r--r--keyboards/sentraq/s60_x/rgb/config.h8
-rw-r--r--keyboards/sentraq/s60_x/rgb/info.json3
-rw-r--r--keyboards/sentraq/s65_plus/config.h8
-rw-r--r--keyboards/sentraq/s65_plus/info.json6
-rw-r--r--keyboards/sentraq/s65_x/config.h8
-rw-r--r--keyboards/sentraq/s65_x/info.json6
-rw-r--r--keyboards/sentraq/s65_x/keymaps/smt/keymap.c4
-rw-r--r--keyboards/sergiopoverony/creator_pro/config.h9
-rw-r--r--keyboards/sergiopoverony/creator_pro/info.json6
-rw-r--r--keyboards/sets3n/kk980/config.h8
-rw-r--r--keyboards/sets3n/kk980/info.json6
-rw-r--r--keyboards/sets3n/kk980/readme.md2
-rw-r--r--keyboards/shambles/config.h8
-rw-r--r--keyboards/shambles/info.json6
-rw-r--r--keyboards/shapeshifter4060/config.h9
-rw-r--r--keyboards/shapeshifter4060/info.json6
-rw-r--r--keyboards/shapeshifter4060/keymaps/default/keymap.c2
-rw-r--r--keyboards/shapeshifter4060/keymaps/vosechu/keymap.c4
-rw-r--r--keyboards/shapeshifter4060/readme.md2
-rw-r--r--keyboards/shiro/config.h8
-rw-r--r--keyboards/shiro/info.json6
-rw-r--r--keyboards/shk9/config.h8
-rw-r--r--keyboards/shk9/info.json6
-rw-r--r--keyboards/shoc/config.h34
-rw-r--r--keyboards/shoc/info.json83
-rw-r--r--keyboards/shoc/keymaps/bongo/keymap.c176
-rw-r--r--keyboards/shoc/keymaps/default/keymap.c41
-rw-r--r--keyboards/shoc/readme.md21
-rw-r--r--keyboards/shoc/rules.mk15
-rw-r--r--keyboards/shoc/shoc.c16
-rw-r--r--keyboards/shoc/shoc.h38
-rw-r--r--keyboards/sidderskb/majbritt/rev1/config.h7
-rw-r--r--keyboards/sidderskb/majbritt/rev1/info.json8
-rw-r--r--keyboards/sidderskb/majbritt/rev2/config.h7
-rw-r--r--keyboards/sidderskb/majbritt/rev2/info.json8
-rw-r--r--keyboards/signum/3_0/config.h7
-rw-r--r--keyboards/signum/3_0/elitec/config.h1
-rw-r--r--keyboards/signum/3_0/info.json6
-rw-r--r--keyboards/signum/3_0/keymaps/sgurenkov/config.h3
-rw-r--r--keyboards/signum/3_0/teensy/config.h1
-rw-r--r--keyboards/silverbullet44/config.h8
-rw-r--r--keyboards/silverbullet44/info.json6
-rw-r--r--keyboards/singa/config.h7
-rw-r--r--keyboards/singa/info.json6
-rw-r--r--keyboards/singa/keymaps/amnesia0287/keymap.c2
-rw-r--r--keyboards/singa/keymaps/test/keymap.c4
-rw-r--r--keyboards/sirius/uni660/rev1/config.h7
-rw-r--r--keyboards/sirius/uni660/rev1/info.json6
-rw-r--r--keyboards/sirius/uni660/rev2/ansi/config.h7
-rw-r--r--keyboards/sirius/uni660/rev2/ansi/info.json8
-rw-r--r--keyboards/sirius/uni660/rev2/iso/config.h7
-rw-r--r--keyboards/sirius/uni660/rev2/iso/info.json8
-rw-r--r--keyboards/sirius/unigo66/config.h7
-rw-r--r--keyboards/sirius/unigo66/info.json6
-rw-r--r--keyboards/sirius/unigo66/keymaps/danielhklein/keymap.c4
-rw-r--r--keyboards/sixkeyboard/config.h7
-rw-r--r--keyboards/sixkeyboard/info.json8
-rw-r--r--keyboards/skeletn87/hotswap/config.h8
-rw-r--r--keyboards/skeletn87/hotswap/info.json8
-rw-r--r--keyboards/skeletn87/soldered/config.h8
-rw-r--r--keyboards/skeletn87/soldered/info.json8
-rw-r--r--keyboards/skeletonkbd/skeletonnumpad/config.h8
-rw-r--r--keyboards/skeletonkbd/skeletonnumpad/info.json8
-rw-r--r--keyboards/skeletonkbd/skeletonnumpad/readme.md2
-rw-r--r--keyboards/skergo/config.h8
-rw-r--r--keyboards/skergo/info.json227
-rw-r--r--keyboards/skergo/keymaps/default/keymap.c31
-rw-r--r--keyboards/skergo/keymaps/via/keymap.c61
-rw-r--r--keyboards/skergo/keymaps/via/rules.mk1
-rw-r--r--keyboards/skergo/readme.md4
-rw-r--r--keyboards/skergo/skergo.h54
-rw-r--r--keyboards/skippys_custom_pcs/rooboard65/config.h8
-rw-r--r--keyboards/skippys_custom_pcs/rooboard65/info.json6
-rw-r--r--keyboards/skippys_custom_pcs/rooboard65/readme.md2
-rw-r--r--keyboards/skippys_custom_pcs/roopad/config.h8
-rw-r--r--keyboards/skippys_custom_pcs/roopad/info.json6
-rw-r--r--keyboards/skippys_custom_pcs/roopad/readme.md2
-rw-r--r--keyboards/skme/zeno/config.h10
-rw-r--r--keyboards/skme/zeno/info.json7
-rw-r--r--keyboards/skme/zeno/readme.md2
-rw-r--r--keyboards/skmt/15k/config.h79
-rw-r--r--keyboards/skmt/15k/info.json68
-rw-r--r--keyboards/skmt/15k/keymaps/default/keymap.c26
-rw-r--r--keyboards/skmt/15k/keymaps/fns/keymap.c25
-rw-r--r--keyboards/skmt/15k/keymaps/qwert/keymap.c25
-rw-r--r--keyboards/skmt/15k/keymaps/via/keymap.c35
-rw-r--r--keyboards/skmt/15k/keymaps/via/rules.mk1
-rw-r--r--keyboards/skmt/15k/readme.md26
-rw-r--r--keyboards/skmt/15k/rules.mk3
-rw-r--r--keyboards/slz40/config.h8
-rw-r--r--keyboards/slz40/info.json6
-rw-r--r--keyboards/smallkeyboard/config.h7
-rw-r--r--keyboards/smallkeyboard/info.json6
-rw-r--r--keyboards/smithrune/iron165r2/config.h7
-rw-r--r--keyboards/smithrune/iron165r2/f411/config.h3
-rw-r--r--keyboards/smithrune/iron165r2/f411/mcuconf.h13
-rw-r--r--keyboards/smithrune/iron165r2/f411/rules.mk1
-rw-r--r--keyboards/smithrune/iron165r2/info.json11
-rw-r--r--keyboards/smithrune/iron165r2/readme.md2
-rw-r--r--keyboards/smithrune/iron180/config.h7
-rw-r--r--keyboards/smithrune/iron180/info.json6
-rw-r--r--keyboards/smk60/config.h8
-rw-r--r--keyboards/smk60/info.json6
-rw-r--r--keyboards/smk60/keymaps/60_ansi/keymap.c2
-rw-r--r--keyboards/smk60/keymaps/60_ansi_split_bs_shift/keymap.c2
-rw-r--r--keyboards/smk60/keymaps/60_hhkb/keymap.c2
-rw-r--r--keyboards/smk60/keymaps/60_iso/keymap.c2
-rw-r--r--keyboards/smk60/keymaps/60_wkl/keymap.c2
-rw-r--r--keyboards/smk60/keymaps/60_wkl_split_bs/keymap.c2
-rw-r--r--keyboards/snampad/config.h8
-rw-r--r--keyboards/snampad/info.json6
-rw-r--r--keyboards/sneakbox/aliceclone/config.h8
-rw-r--r--keyboards/sneakbox/aliceclone/info.json8
-rw-r--r--keyboards/sneakbox/aliceclonergb/config.h8
-rw-r--r--keyboards/sneakbox/aliceclonergb/info.json8
-rw-r--r--keyboards/sneakbox/ava/config.h8
-rw-r--r--keyboards/sneakbox/ava/info.json6
-rw-r--r--keyboards/sneakbox/disarray/ortho/config.h8
-rw-r--r--keyboards/sneakbox/disarray/ortho/info.json6
-rw-r--r--keyboards/sneakbox/disarray/staggered/config.h8
-rw-r--r--keyboards/sneakbox/disarray/staggered/info.json6
-rw-r--r--keyboards/soda/cherish/chconf.h25
-rw-r--r--keyboards/soda/cherish/cherish.c18
-rw-r--r--keyboards/soda/cherish/cherish.h38
-rw-r--r--keyboards/soda/cherish/config.h80
-rw-r--r--keyboards/soda/cherish/info.json103
-rwxr-xr-xkeyboards/soda/cherish/keymaps/default/keymap.c33
-rwxr-xr-xkeyboards/soda/cherish/keymaps/via/keymap.c33
-rw-r--r--keyboards/soda/cherish/keymaps/via/rules.mk1
-rw-r--r--keyboards/soda/cherish/mcuconf.h23
-rw-r--r--keyboards/soda/cherish/readme.md30
-rw-r--r--keyboards/soda/cherish/rules.mk24
-rwxr-xr-xkeyboards/sofle/keyhive/config.h7
-rw-r--r--keyboards/sofle/keyhive/info.json6
-rw-r--r--keyboards/sofle/keymaps/default/keymap.c2
-rw-r--r--keyboards/sofle/keymaps/devdev/keymap.c6
-rw-r--r--keyboards/sofle/keymaps/flare576/keymap.c4
-rw-r--r--keyboards/sofle/keymaps/foureight84/config.h33
-rw-r--r--keyboards/sofle/keymaps/foureight84/keymap.c616
-rw-r--r--keyboards/sofle/keymaps/foureight84/readme.md1
-rw-r--r--keyboards/sofle/keymaps/foureight84/rules.mk24
-rw-r--r--keyboards/sofle/keymaps/helltm/keymap.c8
-rw-r--r--keyboards/sofle/keymaps/killmaster/config.h1
-rw-r--r--keyboards/sofle/keymaps/killmaster/keymap.c4
-rw-r--r--keyboards/sofle/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/sofle/keymaps/michal/config.h23
-rw-r--r--keyboards/sofle/keymaps/michal/keymap.c230
-rw-r--r--keyboards/sofle/keymaps/michal/rules.mk22
-rw-r--r--keyboards/sofle/keymaps/noqmk/keymap.c686
-rw-r--r--keyboards/sofle/keymaps/noqmk/readme.md28
-rw-r--r--keyboards/sofle/keymaps/noqmk/rules.mk6
-rw-r--r--keyboards/sofle/keymaps/rgb_default/keymap.c8
-rw-r--r--keyboards/sofle/rev1/config.h7
-rw-r--r--keyboards/sofle/rev1/info.json6
-rw-r--r--keyboards/soup10/config.h8
-rw-r--r--keyboards/soup10/info.json6
-rw-r--r--keyboards/sowbug/68keys/config.h8
-rw-r--r--keyboards/sowbug/68keys/info.json6
-rw-r--r--keyboards/sowbug/ansi_tkl/config.h8
-rw-r--r--keyboards/sowbug/ansi_tkl/info.json8
-rw-r--r--keyboards/sowbug/ansi_tkl/keymaps/sowbug/keymap.c2
-rw-r--r--keyboards/soy20/config.h8
-rw-r--r--keyboards/soy20/info.json6
-rwxr-xr-xkeyboards/spaceholdings/nebula12/config.h11
-rwxr-xr-xkeyboards/spaceholdings/nebula12/info.json6
-rwxr-xr-xkeyboards/spaceholdings/nebula12b/config.h125
-rwxr-xr-xkeyboards/spaceholdings/nebula12b/info.json18
-rwxr-xr-xkeyboards/spaceholdings/nebula12b/keymaps/default/keymap.c30
-rwxr-xr-xkeyboards/spaceholdings/nebula12b/keymaps/default/readme.md7
-rwxr-xr-xkeyboards/spaceholdings/nebula12b/keymaps/via/keymap.c42
-rwxr-xr-xkeyboards/spaceholdings/nebula12b/keymaps/via/readme.md5
-rwxr-xr-xkeyboards/spaceholdings/nebula12b/keymaps/via/rules.mk1
-rwxr-xr-xkeyboards/spaceholdings/nebula12b/nebula12b.c42
-rwxr-xr-xkeyboards/spaceholdings/nebula12b/nebula12b.h34
-rwxr-xr-xkeyboards/spaceholdings/nebula12b/readme.md32
-rwxr-xr-xkeyboards/spaceholdings/nebula12b/rules.mk22
-rwxr-xr-xkeyboards/spaceholdings/nebula68/config.h7
-rwxr-xr-xkeyboards/spaceholdings/nebula68/info.json6
-rwxr-xr-xkeyboards/spaceholdings/nebula68b/config.h7
-rwxr-xr-xkeyboards/spaceholdings/nebula68b/info.json6
-rwxr-xr-xkeyboards/spaceholdings/nebula68b/keymaps/default/readme.md2
-rwxr-xr-xkeyboards/spaceholdings/nebula68b/keymaps/via/readme.md2
-rwxr-xr-xkeyboards/spaceholdings/nebula68b/readme.md2
-rw-r--r--keyboards/spaceman/2_milk/config.h8
-rw-r--r--keyboards/spaceman/2_milk/info.json6
-rw-r--r--keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/config.h6
-rw-r--r--keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/keymap.c56
-rw-r--r--keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/readme.md18
-rw-r--r--keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/rules.mk4
-rw-r--r--keyboards/spaceman/pancake/rev1/config.h7
-rw-r--r--keyboards/spaceman/pancake/rev1/feather/config.h1
-rw-r--r--keyboards/spaceman/pancake/rev1/info.json6
-rw-r--r--keyboards/spaceman/pancake/rev1/promicro/config.h1
-rw-r--r--keyboards/spaceman/pancake/rev2/config.h8
-rw-r--r--keyboards/spaceman/pancake/rev2/info.json6
-rw-r--r--keyboards/spaceman/pancake/rev2/readme.md55
-rw-r--r--keyboards/spaceman/yun65/config.h8
-rw-r--r--keyboards/spaceman/yun65/info.json8
-rw-r--r--keyboards/spacetime/config.h8
-rw-r--r--keyboards/spacetime/info.json6
-rw-r--r--keyboards/spacey/config.h7
-rw-r--r--keyboards/spacey/info.json6
-rw-r--r--keyboards/sparrow62/config.h7
-rw-r--r--keyboards/sparrow62/info.json6
-rw-r--r--keyboards/specskeys/config.h8
-rw-r--r--keyboards/specskeys/info.json8
-rw-r--r--keyboards/spiderisland/split78/config.h7
-rw-r--r--keyboards/spiderisland/split78/info.json8
-rw-r--r--keyboards/splitish/config.h7
-rw-r--r--keyboards/splitish/info.json8
-rw-r--r--keyboards/splitkb/kyria/info.json6
-rw-r--r--keyboards/splitkb/kyria/keymaps/artflag/config.h23
-rw-r--r--keyboards/splitkb/kyria/keymaps/artflag/keymap.c37
-rw-r--r--keyboards/splitkb/kyria/keymaps/artflag/readme.md26
-rw-r--r--keyboards/splitkb/kyria/keymaps/artflag/rules.mk1
-rw-r--r--keyboards/splitkb/kyria/keymaps/artflag/workman-artflag.json167
-rw-r--r--keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c2
-rw-r--r--keyboards/splitkb/kyria/keymaps/bbaserdem/config.h32
-rw-r--r--keyboards/splitkb/kyria/keymaps/bbaserdem/keymap.c109
-rw-r--r--keyboards/splitkb/kyria/keymaps/bbaserdem/readme.md32
-rw-r--r--keyboards/splitkb/kyria/keymaps/bbaserdem/rules.mk30
-rw-r--r--keyboards/splitkb/kyria/keymaps/cwebster2/config.h2
-rw-r--r--keyboards/splitkb/kyria/keymaps/drashna/config.h5
-rw-r--r--keyboards/splitkb/kyria/keymaps/j-inc/keymap.c2
-rw-r--r--keyboards/splitkb/kyria/keymaps/j-inc/rules.mk1
-rw-r--r--keyboards/splitkb/kyria/keymaps/jimmysjolund/config.h20
-rw-r--r--keyboards/splitkb/kyria/keymaps/jimmysjolund/keymap.c257
-rw-r--r--keyboards/splitkb/kyria/keymaps/jimmysjolund/rules.mk4
-rw-r--r--keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c2
-rw-r--r--keyboards/splitkb/kyria/keymaps/maherma-adg/keymap.c4
-rw-r--r--keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/splitkb/kyria/keymaps/muppetjones/.clang-format26
-rw-r--r--keyboards/splitkb/kyria/keymaps/muppetjones/README.md11
-rw-r--r--keyboards/splitkb/kyria/keymaps/muppetjones/config.h60
-rw-r--r--keyboards/splitkb/kyria/keymaps/muppetjones/keymap.c276
-rw-r--r--keyboards/splitkb/kyria/keymaps/muppetjones/rules.mk11
-rw-r--r--keyboards/splitkb/kyria/keymaps/ninjonas/oled.c2
-rw-r--r--keyboards/splitkb/kyria/keymaps/tessachka/keymap.c4
-rw-r--r--keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c4
-rw-r--r--keyboards/splitkb/kyria/keymaps/travishi/config.h42
-rw-r--r--keyboards/splitkb/kyria/keymaps/travishi/keymap.c423
-rw-r--r--keyboards/splitkb/kyria/keymaps/travishi/readme.md99
-rw-r--r--keyboards/splitkb/kyria/keymaps/travishi/rules.mk12
-rw-r--r--keyboards/splitkb/kyria/rev1/config.h8
-rw-r--r--keyboards/splitkb/kyria/rev1/info.json6
-rw-r--r--keyboards/splitkb/kyria/rev1/proton_c/rules.mk2
-rw-r--r--keyboards/splitkb/kyria/rev1/rules.mk1
-rw-r--r--keyboards/splitkb/kyria/rev2/config.h8
-rw-r--r--keyboards/splitkb/kyria/rev2/info.json6
-rw-r--r--keyboards/splitkb/kyria/rev2/proton_c/rules.mk2
-rw-r--r--keyboards/splitkb/zima/config.h8
-rw-r--r--keyboards/splitkb/zima/info.json6
-rw-r--r--keyboards/splitography/config.h3
-rw-r--r--keyboards/splitography/keymaps/jeandeaual/keymap.c2
-rw-r--r--keyboards/splitography/keymaps/multi/keymap.c2
-rw-r--r--keyboards/splitography/readme.md2
-rw-r--r--keyboards/splitty/config.h7
-rw-r--r--keyboards/splitty/info.json6
-rw-r--r--keyboards/sporewoh/banime40/config.h8
-rw-r--r--keyboards/sporewoh/banime40/info.json6
-rw-r--r--keyboards/star75/config.h57
-rw-r--r--keyboards/star75/info.json16
-rw-r--r--keyboards/star75/keymaps/default/keymap.c103
-rw-r--r--keyboards/star75/keymaps/default/readme.md16
-rw-r--r--keyboards/star75/keymaps/via/keymap.c102
-rw-r--r--keyboards/star75/keymaps/via/rules.mk4
-rw-r--r--keyboards/star75/readme.md28
-rw-r--r--keyboards/star75/rules.mk23
-rw-r--r--keyboards/star75/star75.c4
-rw-r--r--keyboards/star75/star75.h25
-rw-r--r--keyboards/stello65/beta/config.h8
-rw-r--r--keyboards/stello65/beta/info.json6
-rw-r--r--keyboards/stello65/beta/readme.md2
-rw-r--r--keyboards/stello65/hs_rev1/config.h8
-rw-r--r--keyboards/stello65/hs_rev1/info.json6
-rw-r--r--keyboards/stello65/hs_rev1/keymaps/default/keymap.c2
-rw-r--r--keyboards/stello65/hs_rev1/keymaps/via/keymap.c2
-rw-r--r--keyboards/stello65/hs_rev1/readme.md2
-rw-r--r--keyboards/stello65/sl_rev1/config.h8
-rw-r--r--keyboards/stello65/sl_rev1/info.json6
-rw-r--r--keyboards/stello65/sl_rev1/keymaps/default/keymap.c2
-rw-r--r--keyboards/stello65/sl_rev1/keymaps/via/keymap.c2
-rw-r--r--keyboards/stello65/sl_rev1/readme.md2
-rw-r--r--keyboards/stratos/config.h8
-rw-r--r--keyboards/stratos/info.json6
-rw-r--r--keyboards/studiokestra/bourgeau/config.h7
-rw-r--r--keyboards/studiokestra/bourgeau/info.json6
-rw-r--r--keyboards/studiokestra/bourgeau/readme.md2
-rw-r--r--keyboards/studiokestra/cascade/config.h7
-rw-r--r--keyboards/studiokestra/cascade/info.json6
-rw-r--r--keyboards/studiokestra/cascade/readme.md2
-rw-r--r--keyboards/studiokestra/galatea/config.h5
-rw-r--r--keyboards/studiokestra/galatea/readme.md2
-rw-r--r--keyboards/studiokestra/galatea/rev1/config.h21
-rw-r--r--keyboards/studiokestra/galatea/rev1/info.json6
-rw-r--r--keyboards/studiokestra/galatea/rev2/config.h21
-rw-r--r--keyboards/studiokestra/galatea/rev2/info.json6
-rw-r--r--keyboards/studiokestra/nascent/config.h42
-rw-r--r--keyboards/studiokestra/nascent/info.json86
-rw-r--r--keyboards/studiokestra/nascent/keymaps/default/keymap.c41
-rw-r--r--keyboards/studiokestra/nascent/keymaps/default/readme.md1
-rw-r--r--keyboards/studiokestra/nascent/keymaps/via/keymap.c53
-rw-r--r--keyboards/studiokestra/nascent/keymaps/via/readme.md1
-rw-r--r--keyboards/studiokestra/nascent/keymaps/via/rules.mk1
-rw-r--r--keyboards/studiokestra/nascent/nascent.c17
-rw-r--r--keyboards/studiokestra/nascent/nascent.h46
-rw-r--r--keyboards/studiokestra/nascent/readme.md25
-rw-r--r--keyboards/studiokestra/nascent/rules.mk18
-rw-r--r--keyboards/studiokestra/nue/config.h7
-rw-r--r--keyboards/studiokestra/nue/info.json6
-rw-r--r--keyboards/studiokestra/nue/readme.md2
-rw-r--r--keyboards/suavity/ehan/chconf.h31
-rw-r--r--keyboards/suavity/ehan/config.h42
-rw-r--r--keyboards/suavity/ehan/ehan.c3
-rw-r--r--keyboards/suavity/ehan/ehan.h75
-rw-r--r--keyboards/suavity/ehan/halconf.h26
-rwxr-xr-xkeyboards/suavity/ehan/info.json316
-rwxr-xr-xkeyboards/suavity/ehan/keymaps/default/keymap.c37
-rw-r--r--keyboards/suavity/ehan/keymaps/default_iso/keymap.c37
-rw-r--r--keyboards/suavity/ehan/keymaps/via/keymap.c55
-rw-r--r--keyboards/suavity/ehan/keymaps/via/rules.mk2
-rw-r--r--keyboards/suavity/ehan/mcuconf.h34
-rw-r--r--keyboards/suavity/ehan/readme.md23
-rw-r--r--keyboards/suavity/ehan/rules.mk21
-rw-r--r--keyboards/subatomic/config.h8
-rw-r--r--keyboards/subatomic/info.json6
-rw-r--r--keyboards/subrezon/la_nc/config.h6
-rw-r--r--keyboards/subrezon/la_nc/info.json5
-rw-r--r--keyboards/subrezon/la_nc/readme.md2
-rw-r--r--keyboards/superuser/ext/config.h9
-rw-r--r--keyboards/superuser/ext/info.json6
-rw-r--r--keyboards/superuser/frl/config.h9
-rw-r--r--keyboards/superuser/frl/info.json6
-rw-r--r--keyboards/superuser/tkl/config.h9
-rw-r--r--keyboards/superuser/tkl/info.json6
-rw-r--r--keyboards/swiftrax/retropad/config.h7
-rw-r--r--keyboards/swiftrax/retropad/info.json6
-rw-r--r--keyboards/switchplate/southpaw_65/config.h8
-rw-r--r--keyboards/switchplate/southpaw_65/info.json6
-rw-r--r--keyboards/switchplate/southpaw_fullsize/config.h8
-rw-r--r--keyboards/switchplate/southpaw_fullsize/info.json8
-rw-r--r--keyboards/switchplate/switchplate910/config.h8
-rw-r--r--keyboards/switchplate/switchplate910/info.json8
-rwxr-xr-xkeyboards/sx60/config.h8
-rw-r--r--keyboards/sx60/info.json6
-rw-r--r--keyboards/sx60/keymaps/amnobis/keymap.c2
-rw-r--r--keyboards/synapse/config.h8
-rw-r--r--keyboards/synapse/info.json6
-rw-r--r--keyboards/synapse/keymaps/7u_space/keymap.c2
-rw-r--r--keyboards/synapse/readme.md2
-rw-r--r--keyboards/synthlabs/solo/config.h6
-rw-r--r--keyboards/synthlabs/solo/info.json5
-rw-r--r--keyboards/synthlabs/solo/readme.md2
-rw-r--r--keyboards/system76/launch_1/config.h8
-rw-r--r--keyboards/system76/launch_1/info.json8
-rw-r--r--keyboards/system76/launch_1/launch_1.c2
-rw-r--r--keyboards/system76/launch_1/readme.md2
-rw-r--r--keyboards/system76/system76_ec.c4
-rwxr-xr-xkeyboards/tada68/config.h8
-rw-r--r--keyboards/tada68/info.json8
-rw-r--r--keyboards/tada68/keymaps/iso-nor/keymap.c4
-rw-r--r--keyboards/tada68/keymaps/isoish/keymap.c4
-rw-r--r--keyboards/tada68/keymaps/rys/keymap.c2
-rw-r--r--keyboards/tada68/keymaps/tokyovigilante/keymap.c2
-rw-r--r--keyboards/tada68/keymaps/tokyovigilante/layers.json2
-rw-r--r--keyboards/takashicompany/center_enter/config.h8
-rw-r--r--keyboards/takashicompany/center_enter/info.json6
-rw-r--r--keyboards/takashicompany/center_enter/readme.md2
-rw-r--r--keyboards/takashicompany/compacx/config.h8
-rw-r--r--keyboards/takashicompany/compacx/info.json6
-rw-r--r--keyboards/takashicompany/compacx/readme.md2
-rw-r--r--keyboards/takashicompany/dogtag/config.h8
-rw-r--r--keyboards/takashicompany/dogtag/info.json6
-rw-r--r--keyboards/takashicompany/dogtag/readme.md2
-rw-r--r--keyboards/takashicompany/endzone34/config.h8
-rw-r--r--keyboards/takashicompany/endzone34/info.json6
-rw-r--r--keyboards/takashicompany/goat51/info.json498
-rw-r--r--keyboards/takashicompany/goat51/keymaps/default/keymap.c123
-rw-r--r--keyboards/takashicompany/goat51/keymaps/via/config.h6
-rw-r--r--keyboards/takashicompany/goat51/keymaps/via/keymap.c106
-rw-r--r--keyboards/takashicompany/goat51/keymaps/via/rules.mk2
-rw-r--r--keyboards/takashicompany/goat51/readme.md40
-rw-r--r--keyboards/takashicompany/goat51/rules.mk1
-rw-r--r--keyboards/takashicompany/heavy_left/config.h8
-rw-r--r--keyboards/takashicompany/heavy_left/info.json8
-rw-r--r--keyboards/takashicompany/heavy_left/readme.md2
-rw-r--r--keyboards/takashicompany/minizone/config.h8
-rw-r--r--keyboards/takashicompany/minizone/info.json277
-rw-r--r--keyboards/takashicompany/minizone/keymaps/default/keymap.c52
-rw-r--r--keyboards/takashicompany/minizone/keymaps/pimoroni_trackball/config.h7
-rw-r--r--keyboards/takashicompany/minizone/keymaps/pimoroni_trackball/keymap.c465
-rw-r--r--keyboards/takashicompany/minizone/keymaps/pimoroni_trackball/rules.mk4
-rw-r--r--keyboards/takashicompany/minizone/keymaps/via/keymap.c73
-rw-r--r--keyboards/takashicompany/minizone/readme.md2
-rw-r--r--keyboards/takashicompany/qoolee/config.h8
-rw-r--r--keyboards/takashicompany/qoolee/info.json6
-rw-r--r--keyboards/takashicompany/qoolee/readme.md2
-rw-r--r--keyboards/takashicompany/radialex/config.h8
-rw-r--r--keyboards/takashicompany/radialex/info.json6
-rw-r--r--keyboards/takashicompany/radialex/keymaps/default/keymap.c69
-rw-r--r--keyboards/takashicompany/radialex/keymaps/via/config.h2
-rw-r--r--keyboards/takashicompany/radialex/keymaps/via/keymap.c72
-rw-r--r--keyboards/takashicompany/radialex/readme.md2
-rw-r--r--keyboards/takashicompany/spreadwriter/readme.md2
-rw-r--r--keyboards/takashiski/hecomi/alpha/config.h8
-rw-r--r--keyboards/takashiski/hecomi/alpha/info.json8
-rw-r--r--keyboards/takashiski/namecard2x4/info.json6
-rw-r--r--keyboards/takashiski/namecard2x4/rev1/config.h8
-rw-r--r--keyboards/takashiski/namecard2x4/rev2/config.h8
-rw-r--r--keyboards/takashiski/otaku_split/rev0/config.h8
-rw-r--r--keyboards/takashiski/otaku_split/rev0/info.json10
-rw-r--r--keyboards/takashiski/otaku_split/rev1/config.h8
-rw-r--r--keyboards/takashiski/otaku_split/rev1/info.json6
-rw-r--r--keyboards/taleguers/taleguers75/config.h8
-rw-r--r--keyboards/taleguers/taleguers75/info.json6
-rw-r--r--keyboards/tanuki/config.h8
-rw-r--r--keyboards/tanuki/info.json6
-rw-r--r--keyboards/tanuki/keymaps/tucznak/keymap.c2
-rwxr-xr-xkeyboards/tau4/config.h8
-rw-r--r--keyboards/tau4/info.json11
-rw-r--r--keyboards/team0110/p1800fl/config.h8
-rw-r--r--keyboards/team0110/p1800fl/info.json6
-rw-r--r--keyboards/technika/config.h7
-rw-r--r--keyboards/technika/info.json6
-rw-r--r--keyboards/teleport/numpad/config.h8
-rw-r--r--keyboards/teleport/numpad/info.json8
-rw-r--r--keyboards/teleport/numpad/readme.md2
-rw-r--r--keyboards/telophase/config.h7
-rw-r--r--keyboards/telophase/info.json6
-rw-r--r--keyboards/tempo_turtle/bradpad/config.h19
-rw-r--r--keyboards/tempo_turtle/bradpad/info.json1
-rw-r--r--keyboards/tender/macrowo_pad/config.h7
-rw-r--r--keyboards/tender/macrowo_pad/info.json8
-rw-r--r--keyboards/tenki/config.h8
-rw-r--r--keyboards/tenki/info.json6
-rw-r--r--keyboards/terrazzo/config.h9
-rw-r--r--keyboards/terrazzo/info.json6
-rw-r--r--keyboards/terrazzo/keymaps/ortho/keymap.c2
-rw-r--r--keyboards/terrazzo/keymaps/ortho_all/keymap.c2
-rw-r--r--keyboards/terrazzo/keymaps/ortho_mit/keymap.c2
-rwxr-xr-xkeyboards/tetris/config.h8
-rw-r--r--keyboards/tetris/info.json6
-rwxr-xr-xkeyboards/tetris/keymaps/default/keymap.c4
-rw-r--r--keyboards/tg4x/config.h8
-rw-r--r--keyboards/tg4x/info.json6
-rw-r--r--keyboards/tgr/910/config.h7
-rw-r--r--keyboards/tgr/910/info.json6
-rw-r--r--keyboards/tgr/910ce/config.h7
-rw-r--r--keyboards/tgr/910ce/info.json8
-rw-r--r--keyboards/tgr/alice/config.h6
-rw-r--r--keyboards/tgr/alice/info.json8
-rw-r--r--keyboards/tgr/alice/keymaps/mrkeebs/keymap.c2
-rw-r--r--keyboards/tgr/jane/v2/config.h7
-rw-r--r--keyboards/tgr/jane/v2/info.json8
-rw-r--r--keyboards/tgr/jane/v2ce/config.h7
-rw-r--r--keyboards/tgr/jane/v2ce/info.json10
-rw-r--r--keyboards/tgr/tris/config.h6
-rw-r--r--keyboards/tgr/tris/info.json8
-rw-r--r--keyboards/the_royal/liminal/config.h8
-rw-r--r--keyboards/the_royal/liminal/info.json8
-rw-r--r--keyboards/the_royal/liminal/keymaps/brandonschlack/keymap.c2
-rw-r--r--keyboards/the_royal/schwann/config.h8
-rw-r--r--keyboards/the_royal/schwann/info.json8
-rw-r--r--keyboards/the_uni/info.json5
-rw-r--r--keyboards/the_uni/pro_micro/config.h8
-rw-r--r--keyboards/the_uni/pro_micro/info.json5
-rw-r--r--keyboards/the_uni/usb_c/config.h8
-rw-r--r--keyboards/the_uni/usb_c/info.json5
-rw-r--r--keyboards/themadnoodle/ncc1701kb/v2/config.h8
-rw-r--r--keyboards/themadnoodle/ncc1701kb/v2/info.json6
-rw-r--r--keyboards/themadnoodle/noodlepad/config.h8
-rw-r--r--keyboards/themadnoodle/noodlepad/info.json8
-rw-r--r--keyboards/thevankeyboards/bananasplit/config.h8
-rw-r--r--keyboards/thevankeyboards/bananasplit/info.json8
-rw-r--r--keyboards/thevankeyboards/bananasplit/keymaps/0010/keymap.c2
-rw-r--r--keyboards/thevankeyboards/bananasplit/keymaps/cijanzen/keymap.c2
-rw-r--r--keyboards/thevankeyboards/bananasplit/keymaps/coloneljesus/keymap.c2
-rw-r--r--keyboards/thevankeyboards/bananasplit/keymaps/nic/keymap.c2
-rw-r--r--keyboards/thevankeyboards/caravan/config.h8
-rw-r--r--keyboards/thevankeyboards/caravan/info.json8
-rw-r--r--keyboards/thevankeyboards/jetvan/config.h8
-rw-r--r--keyboards/thevankeyboards/jetvan/info.json11
-rw-r--r--keyboards/thevankeyboards/minivan/config.h8
-rw-r--r--keyboards/thevankeyboards/minivan/info.json8
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/belak/config.h1
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/belak/keymap.c21
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/budi/keymap.c4
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/danbee/keymap.c2
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/dcompact/keymap.c2
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/halvves/config.h1
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/halvves/keymap.c4
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/hvp/keymap.c2
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/jeebak/keymap.c2
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/keymap.c4
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/king/keymap.c4
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/lexworth/keymap.c2
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/like_jis/keymap.c2
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/mjt/keymap.c4
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/smt/keymap.c2
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/tong92/keymap.c4
-rw-r--r--keyboards/thevankeyboards/minivan/keymaps/xyverz/keymap.c2
-rw-r--r--keyboards/thevankeyboards/roadkit/config.h8
-rw-r--r--keyboards/thevankeyboards/roadkit/info.json8
-rw-r--r--keyboards/thevankeyboards/roadkit/keymaps/flipphone/keymap.c2
-rw-r--r--keyboards/thevankeyboards/roadkit/keymaps/khord/keymap.c2
-rw-r--r--keyboards/tkc/california/config.h8
-rw-r--r--keyboards/tkc/california/info.json8
-rw-r--r--keyboards/tkc/candybar/lefty/config.h7
-rw-r--r--keyboards/tkc/candybar/lefty/info.json8
-rw-r--r--keyboards/tkc/candybar/lefty_r3/config.h7
-rw-r--r--keyboards/tkc/candybar/lefty_r3/info.json10
-rw-r--r--keyboards/tkc/candybar/righty/config.h7
-rw-r--r--keyboards/tkc/candybar/righty/info.json8
-rw-r--r--keyboards/tkc/candybar/righty_r3/config.h7
-rw-r--r--keyboards/tkc/candybar/righty_r3/info.json10
-rw-r--r--keyboards/tkc/godspeed75/config.h7
-rw-r--r--keyboards/tkc/godspeed75/info.json8
-rw-r--r--keyboards/tkc/m0lly/config.h8
-rw-r--r--keyboards/tkc/m0lly/info.json8
-rw-r--r--keyboards/tkc/osav2/config.h8
-rw-r--r--keyboards/tkc/osav2/info.json8
-rwxr-xr-xkeyboards/tkc/osav2/keymaps/brandonschlack/keymap.c2
-rw-r--r--keyboards/tkc/osav2/keymaps/stanrc85/keymap.c2
-rw-r--r--keyboards/tkc/portico/config.h7
-rw-r--r--keyboards/tkc/portico/info.json8
-rw-r--r--keyboards/tkc/portico68v2/config.h7
-rw-r--r--keyboards/tkc/portico68v2/info.json8
-rw-r--r--keyboards/tkc/portico75/config.h7
-rw-r--r--keyboards/tkc/portico75/info.json8
-rw-r--r--keyboards/tkc/tkc1800/config.h8
-rw-r--r--keyboards/tkc/tkc1800/info.json6
-rw-r--r--keyboards/tkc/tkc1800/keymaps/smt/keymap.c2
-rw-r--r--keyboards/tkc/tkc1800/keymaps/yanfali/keymap.c2
-rw-r--r--keyboards/tkc/tkl_ab87/config.h8
-rw-r--r--keyboards/tkc/tkl_ab87/info.json8
-rw-r--r--keyboards/tkw/grandiceps/config.h7
-rw-r--r--keyboards/tkw/grandiceps/info.json7
-rw-r--r--keyboards/tkw/grandiceps/readme.md2
-rw-r--r--keyboards/tkw/grandiceps/rev1/info.json6
-rw-r--r--keyboards/tkw/grandiceps/rev1/rules.mk0
-rw-r--r--keyboards/tkw/grandiceps/rev2/config.h5
-rw-r--r--keyboards/tkw/grandiceps/rev2/info.json6
-rw-r--r--keyboards/tkw/grandiceps/rules.mk3
-rw-r--r--keyboards/tkw/stoutgat/v1/config.h7
-rw-r--r--keyboards/tkw/stoutgat/v1/info.json6
-rw-r--r--keyboards/tkw/stoutgat/v2/config.h7
-rw-r--r--keyboards/tkw/stoutgat/v2/f411/rules.mk1
-rw-r--r--keyboards/tkw/stoutgat/v2/info.json8
-rw-r--r--keyboards/tmo50/config.h8
-rw-r--r--keyboards/tmo50/info.json6
-rw-r--r--keyboards/tmo50/keymaps/olivia/keymap.c2
-rw-r--r--keyboards/tmo50/keymaps/ottodokto/keymap.c2
-rw-r--r--keyboards/tmo50/keymaps/pyrol/keymap.c2
-rw-r--r--keyboards/tmo50/keymaps/xerpocalypse/keymap.c2
-rw-r--r--keyboards/toad/config.h8
-rw-r--r--keyboards/toad/info.json6
-rw-r--r--keyboards/tokyokeyboard/alix40/config.h8
-rw-r--r--keyboards/tokyokeyboard/alix40/info.json6
-rw-r--r--keyboards/tokyokeyboard/tokyo60/config.h8
-rw-r--r--keyboards/tokyokeyboard/tokyo60/info.json6
-rw-r--r--keyboards/tominabox1/adalyn/config.h8
-rw-r--r--keyboards/tominabox1/adalyn/info.json8
-rw-r--r--keyboards/tominabox1/adalyn/readme.md2
-rwxr-xr-xkeyboards/tominabox1/bigboy/bigboy.c31
-rwxr-xr-xkeyboards/tominabox1/bigboy/bigboy.h34
-rwxr-xr-xkeyboards/tominabox1/bigboy/config.h52
-rw-r--r--keyboards/tominabox1/bigboy/info.json19
-rwxr-xr-xkeyboards/tominabox1/bigboy/keymaps/default/keymap.c34
-rwxr-xr-xkeyboards/tominabox1/bigboy/keymaps/default_2u/keymap.c31
-rwxr-xr-xkeyboards/tominabox1/bigboy/readme.md20
-rwxr-xr-xkeyboards/tominabox1/bigboy/rules.mk19
-rw-r--r--keyboards/tominabox1/le_chiffre/config.h75
-rw-r--r--keyboards/tominabox1/le_chiffre/he/config.h34
-rw-r--r--keyboards/tominabox1/le_chiffre/he/he.c33
-rw-r--r--keyboards/tominabox1/le_chiffre/he/he.h33
-rw-r--r--keyboards/tominabox1/le_chiffre/he/info.json5
-rw-r--r--keyboards/tominabox1/le_chiffre/he/readme.md1
-rw-r--r--keyboards/tominabox1/le_chiffre/he/rules.mk22
-rw-r--r--keyboards/tominabox1/le_chiffre/info.json7
-rw-r--r--keyboards/tominabox1/le_chiffre/keymaps/via/keymap.c3
-rw-r--r--keyboards/tominabox1/le_chiffre/le_chiffre.c33
-rw-r--r--keyboards/tominabox1/le_chiffre/readme.md12
-rw-r--r--keyboards/tominabox1/le_chiffre/rev1/config.h40
-rw-r--r--keyboards/tominabox1/le_chiffre/rev1/info.json5
-rw-r--r--keyboards/tominabox1/le_chiffre/rev1/rev1.c33
-rw-r--r--keyboards/tominabox1/le_chiffre/rev1/rev1.h (renamed from keyboards/tominabox1/le_chiffre/le_chiffre.h)0
-rw-r--r--keyboards/tominabox1/le_chiffre/rev1/rules.mk23
-rw-r--r--keyboards/tominabox1/le_chiffre/rev2/config.h40
-rw-r--r--keyboards/tominabox1/le_chiffre/rev2/info.json5
-rw-r--r--keyboards/tominabox1/le_chiffre/rev2/readme.md2
-rw-r--r--keyboards/tominabox1/le_chiffre/rev2/rev2.c33
-rw-r--r--keyboards/tominabox1/le_chiffre/rev2/rev2.h33
-rw-r--r--keyboards/tominabox1/le_chiffre/rev2/rules.mk23
-rw-r--r--keyboards/tominabox1/le_chiffre/rules.mk20
-rw-r--r--keyboards/tominabox1/littlefoot_lx/readme.md2
-rw-r--r--keyboards/tominabox1/littlefoot_lx/rev1/config.h9
-rw-r--r--keyboards/tominabox1/littlefoot_lx/rev1/info.json6
-rw-r--r--keyboards/tominabox1/littlefoot_lx/rev2/config.h9
-rw-r--r--keyboards/tominabox1/littlefoot_lx/rev2/info.json6
-rw-r--r--keyboards/tominabox1/qaz/config.h8
-rw-r--r--keyboards/tominabox1/qaz/info.json6
-rw-r--r--keyboards/tominabox1/underscore33/rev1/config.h8
-rw-r--r--keyboards/tominabox1/underscore33/rev1/info.json6
-rw-r--r--keyboards/tominabox1/underscore33/rev2/config.h8
-rw-r--r--keyboards/tominabox1/underscore33/rev2/info.json6
-rw-r--r--keyboards/torn/config.h9
-rw-r--r--keyboards/torn/info.json8
-rw-r--r--keyboards/torn/keymaps/manna-harbour_miryoku/config.h1
-rw-r--r--keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c1
-rw-r--r--keyboards/touchpad/config.h7
-rw-r--r--keyboards/touchpad/info.json8
-rw-r--r--keyboards/tr60w/config.h8
-rw-r--r--keyboards/tr60w/info.json6
-rw-r--r--keyboards/tr60w/keymaps/joule-flow/keymap.c2
-rw-r--r--keyboards/trashman/ketch/config.h6
-rw-r--r--keyboards/trashman/ketch/info.json8
-rw-r--r--keyboards/trashman/ketch/keymaps/jetpacktuxedo/keymap.c4
-rw-r--r--keyboards/treasure/type9/config.h8
-rw-r--r--keyboards/treasure/type9/info.json6
-rw-r--r--keyboards/treasure/type9s2/config.h8
-rw-r--r--keyboards/treasure/type9s2/info.json8
-rw-r--r--keyboards/tronguylabs/m122_3270/blackpill/config.h3
-rw-r--r--keyboards/tronguylabs/m122_3270/blackpill/info.json5
-rw-r--r--keyboards/tronguylabs/m122_3270/blackpill/rules.mk1
-rw-r--r--keyboards/tronguylabs/m122_3270/bluepill/config.h3
-rw-r--r--keyboards/tronguylabs/m122_3270/bluepill/info.json5
-rw-r--r--keyboards/tronguylabs/m122_3270/config.h5
-rw-r--r--keyboards/tronguylabs/m122_3270/info.json7
-rw-r--r--keyboards/tronguylabs/m122_3270/teensy/config.h3
-rw-r--r--keyboards/tronguylabs/m122_3270/teensy/info.json5
-rw-r--r--keyboards/tszaboo/ortho4exent/config.h8
-rw-r--r--keyboards/tszaboo/ortho4exent/info.json6
-rw-r--r--keyboards/tunks/ergo33/config.h7
-rw-r--r--keyboards/tunks/ergo33/info.json6
-rw-r--r--keyboards/tw40/config.h8
-rw-r--r--keyboards/tw40/info.json8
-rw-r--r--keyboards/tzarc/djinn/djinn.c4
-rw-r--r--keyboards/tzarc/djinn/graphics/theme_djinn_default.c10
-rw-r--r--keyboards/uk78/config.h8
-rw-r--r--keyboards/uk78/info.json6
-rw-r--r--keyboards/uk78/keymaps/rask/keymap.c2
-rw-r--r--keyboards/ungodly/launch_pad/config.h7
-rw-r--r--keyboards/ungodly/launch_pad/info.json6
-rw-r--r--keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c2
-rw-r--r--keyboards/ungodly/nines/config.h8
-rw-r--r--keyboards/ungodly/nines/info.json6
-rw-r--r--keyboards/unicomp/classic_ultracl_post_2013/info.json8
-rw-r--r--keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h7
-rw-r--r--keyboards/unicomp/classic_ultracl_pre_2013/info.json8
-rw-r--r--keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h7
-rw-r--r--keyboards/unicomp/spacesaver_m_post_2013/info.json8
-rw-r--r--keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h7
-rw-r--r--keyboards/unicomp/spacesaver_m_pre_2013/info.json8
-rw-r--r--keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h7
-rw-r--r--keyboards/unikeyboard/diverge3/config.h8
-rw-r--r--keyboards/unikeyboard/diverge3/info.json6
-rw-r--r--keyboards/unikeyboard/diverge3/keymaps/iso_uk/keymap.c2
-rw-r--r--keyboards/unikeyboard/diverge3/keymaps/workman/keymap.c4
-rw-r--r--keyboards/unikeyboard/divergetm2/config.h8
-rw-r--r--keyboards/unikeyboard/divergetm2/info.json8
-rw-r--r--keyboards/unikeyboard/divergetm2/keymaps/default/keymap.c14
-rw-r--r--keyboards/unikeyboard/divergetm2/keymaps/xtonhasvim/keymap.c4
-rw-r--r--keyboards/unikeyboard/felix/config.h8
-rw-r--r--keyboards/unikeyboard/felix/info.json6
-rw-r--r--keyboards/unikorn/config.h7
-rw-r--r--keyboards/unikorn/info.json8
-rw-r--r--keyboards/unison/v04/config.h8
-rw-r--r--keyboards/unison/v04/info.json6
-rw-r--r--keyboards/uranuma/config.h8
-rw-r--r--keyboards/uranuma/info.json8
-rw-r--r--keyboards/utd80/config.h8
-rw-r--r--keyboards/utd80/info.json6
-rw-r--r--keyboards/uzu42/glcdfont.c (renamed from keyboards/uzu42/keymaps/default/glcdfont_uzu42.c)0
-rw-r--r--keyboards/uzu42/info.json53
-rw-r--r--keyboards/uzu42/keymaps/default/config.h47
-rw-r--r--keyboards/uzu42/keymaps/default/keymap.c249
-rw-r--r--keyboards/uzu42/post_config.h8
-rw-r--r--keyboards/uzu42/rev1/config.h29
-rw-r--r--keyboards/uzu42/rev1/info.json59
-rw-r--r--keyboards/uzu42/rev1/rev1.c4
-rw-r--r--keyboards/uzu42/rev1/rev1.h19
-rw-r--r--keyboards/uzu42/rev1/serial_config.h4
-rw-r--r--keyboards/uzu42/rev1/serial_config_simpleapi.h5
-rw-r--r--keyboards/uzu42/uzu42.c104
-rw-r--r--keyboards/uzu42/uzu42.h3
-rw-r--r--keyboards/v4n4g0rth0n/config.h6
-rw-r--r--keyboards/v4n4g0rth0n/info.json5
-rw-r--r--keyboards/v4n4g0rth0n/v1/config.h2
-rw-r--r--keyboards/v4n4g0rth0n/v1/info.json5
-rw-r--r--keyboards/v4n4g0rth0n/v2/config.h2
-rw-r--r--keyboards/v4n4g0rth0n/v2/info.json5
-rw-r--r--keyboards/v60_type_r/config.h8
-rw-r--r--keyboards/v60_type_r/info.json6
-rw-r--r--keyboards/v60_type_r/keymaps/followingghosts/keymap.c6
-rw-r--r--keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c3
-rwxr-xr-xkeyboards/vagrant_10/config.h8
-rw-r--r--keyboards/vagrant_10/info.json8
-rw-r--r--keyboards/vertex/angler2/angler2.c17
-rw-r--r--keyboards/vertex/angler2/angler2.h36
-rw-r--r--keyboards/vertex/angler2/config.h58
-rw-r--r--keyboards/vertex/angler2/info.json107
-rw-r--r--keyboards/vertex/angler2/keymaps/default/keymap.c40
-rw-r--r--keyboards/vertex/angler2/keymaps/via/keymap.c59
-rw-r--r--keyboards/vertex/angler2/keymaps/via/rules.mk2
-rw-r--r--keyboards/vertex/angler2/readme.md17
-rw-r--r--keyboards/vertex/angler2/rules.mk18
-rw-r--r--keyboards/vertex/arc60/arc60.c18
-rw-r--r--keyboards/vertex/arc60/arc60.h42
-rw-r--r--keyboards/vertex/arc60/chconf.h28
-rw-r--r--keyboards/vertex/arc60/config.h83
-rw-r--r--keyboards/vertex/arc60/halconf.h28
-rw-r--r--keyboards/vertex/arc60/info.json82
-rw-r--r--keyboards/vertex/arc60/keymaps/default/keymap.c31
-rw-r--r--keyboards/vertex/arc60/keymaps/via/keymap.c46
-rw-r--r--keyboards/vertex/arc60/keymaps/via/rules.mk2
-rw-r--r--keyboards/vertex/arc60/mcuconf.h27
-rw-r--r--keyboards/vertex/arc60/readme.md22
-rw-r--r--keyboards/vertex/arc60/rules.mk27
-rw-r--r--keyboards/viendi8l/config.h66
-rw-r--r--keyboards/viendi8l/halconf.h24
-rw-r--r--keyboards/viendi8l/info.json103
-rwxr-xr-xkeyboards/viendi8l/keymaps/default/keymap.c45
-rwxr-xr-xkeyboards/viendi8l/keymaps/via/keymap.c52
-rw-r--r--keyboards/viendi8l/keymaps/via/rules.mk1
-rw-r--r--keyboards/viendi8l/mcuconf.h28
-rw-r--r--keyboards/viendi8l/readme.md27
-rw-r--r--keyboards/viendi8l/rules.mk28
-rw-r--r--keyboards/viendi8l/viendi8l.c56
-rw-r--r--keyboards/viendi8l/viendi8l.h37
-rw-r--r--keyboards/viktus/at101_bh/config.h8
-rw-r--r--keyboards/viktus/at101_bh/info.json8
-rw-r--r--keyboards/viktus/omnikey_bh/config.h8
-rw-r--r--keyboards/viktus/omnikey_bh/info.json8
-rw-r--r--keyboards/viktus/smolka/config.h8
-rw-r--r--keyboards/viktus/smolka/info.json8
-rw-r--r--keyboards/viktus/smolka/readme.md2
-rw-r--r--keyboards/viktus/sp111/config.h7
-rw-r--r--keyboards/viktus/sp111/info.json8
-rw-r--r--keyboards/viktus/sp_mini/config.h7
-rw-r--r--keyboards/viktus/sp_mini/info.json8
-rw-r--r--keyboards/viktus/sp_mini/keymaps/peott-fr/keymap.c2
-rw-r--r--keyboards/viktus/styrka/config.h8
-rw-r--r--keyboards/viktus/styrka/info.json6
-rw-r--r--keyboards/viktus/styrka/keymaps/all/keymap.c2
-rw-r--r--keyboards/viktus/styrka/keymaps/split_bs/keymap.c2
-rw-r--r--keyboards/viktus/z150_bh/config.h8
-rw-r--r--keyboards/viktus/z150_bh/info.json8
-rw-r--r--keyboards/vitamins_included/config.h6
-rw-r--r--keyboards/vitamins_included/info.json5
-rw-r--r--keyboards/vitamins_included/keymaps/numpad/keymap.c4
-rw-r--r--keyboards/vitamins_included/keymaps/vitavim/keymap.c2
-rw-r--r--keyboards/vitamins_included/rev1/config.h3
-rw-r--r--keyboards/vitamins_included/rev1/info.json5
-rw-r--r--keyboards/vitamins_included/rev2/config.h3
-rw-r--r--keyboards/vitamins_included/rev2/info.json5
-rw-r--r--keyboards/w1_at/config.h9
-rw-r--r--keyboards/w1_at/info.json6
-rw-r--r--keyboards/waldo/config.h7
-rw-r--r--keyboards/waldo/info.json7
-rw-r--r--keyboards/walletburner/cajal/config.h8
-rw-r--r--keyboards/walletburner/cajal/info.json8
-rw-r--r--keyboards/walletburner/neuron/config.h8
-rw-r--r--keyboards/walletburner/neuron/info.json6
-rw-r--r--keyboards/walletburner/neuron/keymaps/brandonschlack/keymap.c2
-rw-r--r--keyboards/waterfowl/config.h49
-rw-r--r--keyboards/waterfowl/info.json60
-rw-r--r--keyboards/waterfowl/keymaps/cyanduck/keymap.c129
-rw-r--r--keyboards/waterfowl/keymaps/default/keymap.c108
-rw-r--r--keyboards/waterfowl/readme.md21
-rw-r--r--keyboards/waterfowl/rules.mk23
-rw-r--r--keyboards/waterfowl/waterfowl.c161
-rw-r--r--keyboards/waterfowl/waterfowl.h44
-rw-r--r--keyboards/wavtype/foundation/config.h8
-rw-r--r--keyboards/wavtype/foundation/info.json6
-rw-r--r--keyboards/wavtype/foundation/readme.md2
-rw-r--r--keyboards/wavtype/p01_ultra/config.h8
-rw-r--r--keyboards/wavtype/p01_ultra/info.json6
-rw-r--r--keyboards/wavtype/p01_ultra/keymaps/default/keymap.c2
-rw-r--r--keyboards/wavtype/p01_ultra/keymaps/via/keymap.c2
-rw-r--r--keyboards/wavtype/p01_ultra/readme.md2
-rw-r--r--keyboards/weirdo/geminate60/config.h8
-rw-r--r--keyboards/weirdo/geminate60/info.json8
-rw-r--r--keyboards/weirdo/kelowna/rgb64/config.h7
-rw-r--r--keyboards/weirdo/kelowna/rgb64/info.json6
-rw-r--r--keyboards/weirdo/ls_60/config.h8
-rw-r--r--keyboards/weirdo/ls_60/info.json6
-rw-r--r--keyboards/weirdo/naiping/np64/config.h8
-rw-r--r--keyboards/weirdo/naiping/np64/info.json8
-rw-r--r--keyboards/weirdo/naiping/nphhkb/config.h8
-rw-r--r--keyboards/weirdo/naiping/nphhkb/info.json8
-rw-r--r--keyboards/weirdo/naiping/npminila/config.h8
-rw-r--r--keyboards/weirdo/naiping/npminila/info.json8
-rw-r--r--keyboards/weirdo/tiger910/config.h8
-rw-r--r--keyboards/weirdo/tiger910/info.json6
-rw-r--r--keyboards/wekey/polaris/config.h8
-rw-r--r--keyboards/wekey/polaris/info.json6
-rw-r--r--keyboards/wekey/polaris/readme.md2
-rw-r--r--keyboards/wekey/we27/config.h8
-rw-r--r--keyboards/wekey/we27/info.json8
-rw-r--r--keyboards/westfoxtrot/aanzee/config.h8
-rw-r--r--keyboards/westfoxtrot/aanzee/info.json6
-rw-r--r--keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c2
-rw-r--r--keyboards/westfoxtrot/cyclops/config.h8
-rw-r--r--keyboards/westfoxtrot/cyclops/info.json6
-rw-r--r--keyboards/westfoxtrot/cyclops/keymaps/peippo/keymap.c2
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/config.h8
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/info.json8
-rw-r--r--keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/keymap.c2
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/config.h8
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/info.json8
-rw-r--r--keyboards/westfoxtrot/cypher/rev5/keymaps/max/keymap.c2
-rw-r--r--keyboards/westfoxtrot/prophet/config.h8
-rw-r--r--keyboards/westfoxtrot/prophet/info.json8
-rw-r--r--keyboards/westm/westm68/config.h13
-rw-r--r--keyboards/westm/westm68/info.json5
-rwxr-xr-xkeyboards/westm/westm68/keymaps/default/keymap.c8
-rw-r--r--keyboards/westm/westm68/keymaps/via/keymap.c24
-rw-r--r--keyboards/westm/westm68/rev1/info.json5
-rw-r--r--keyboards/westm/westm68/rev1/rules.mk1
-rw-r--r--keyboards/westm/westm68/rev2/config.h31
-rw-r--r--keyboards/westm/westm68/rev2/info.json5
-rw-r--r--keyboards/westm/westm68/rev2/rev2.c17
-rw-r--r--keyboards/westm/westm68/rev2/rev2.h17
-rw-r--r--keyboards/westm/westm68/rev2/rules.mk0
-rw-r--r--keyboards/westm/westm68/rules.mk4
-rw-r--r--keyboards/westm/westm9/chconf.h26
-rw-r--r--keyboards/westm/westm9/config.h42
-rw-r--r--keyboards/westm/westm9/halconf.h22
-rw-r--r--keyboards/westm/westm9/info.json25
-rwxr-xr-xkeyboards/westm/westm9/keymaps/default/keymap.c30
-rw-r--r--keyboards/westm/westm9/keymaps/via/keymap.c41
-rw-r--r--keyboards/westm/westm9/keymaps/via/rules.mk1
-rw-r--r--keyboards/westm/westm9/mcuconf.h22
-rw-r--r--keyboards/westm/westm9/readme.md16
-rw-r--r--keyboards/westm/westm9/rev1/config.h54
-rw-r--r--keyboards/westm/westm9/rev1/info.json5
-rw-r--r--keyboards/westm/westm9/rev1/rev1.c116
-rw-r--r--keyboards/westm/westm9/rev1/rev1.h17
-rw-r--r--keyboards/westm/westm9/rev1/rules.mk0
-rw-r--r--keyboards/westm/westm9/rev2/config.h54
-rw-r--r--keyboards/westm/westm9/rev2/info.json5
-rw-r--r--keyboards/westm/westm9/rev2/rev2.c112
-rw-r--r--keyboards/westm/westm9/rev2/rev2.h17
-rw-r--r--keyboards/westm/westm9/rev2/rules.mk0
-rw-r--r--keyboards/westm/westm9/rules.mk26
-rw-r--r--keyboards/westm/westm9/westm9.c17
-rw-r--r--keyboards/westm/westm9/westm9.h30
-rw-r--r--keyboards/westm/westmergo/config.h9
-rw-r--r--keyboards/westm/westmergo/info.json6
-rwxr-xr-xkeyboards/westm/westmergo/keymaps/default/keymap.c14
-rw-r--r--keyboards/westm/westmergo/keymaps/via/keymap.c28
-rw-r--r--keyboards/westm/westmergo/westmergo.h8
-rw-r--r--keyboards/whale/sk/config.h4
-rw-r--r--keyboards/whale/sk/v3/config.h5
-rw-r--r--keyboards/whale/sk/v3/info.json6
-rw-r--r--keyboards/wilba_tech/rama_works_kara/config.h8
-rw-r--r--keyboards/wilba_tech/rama_works_kara/info.json8
-rw-r--r--keyboards/wilba_tech/rama_works_koyu/config.h10
-rw-r--r--keyboards/wilba_tech/rama_works_koyu/info.json8
-rw-r--r--keyboards/wilba_tech/rama_works_m10_b/config.h8
-rw-r--r--keyboards/wilba_tech/rama_works_m10_b/info.json8
-rw-r--r--keyboards/wilba_tech/rama_works_m10_c/config.h8
-rw-r--r--keyboards/wilba_tech/rama_works_m10_c/info.json8
-rw-r--r--keyboards/wilba_tech/rama_works_m50_a/config.h8
-rw-r--r--keyboards/wilba_tech/rama_works_m50_a/info.json8
-rw-r--r--keyboards/wilba_tech/rama_works_m50_ax/config.h8
-rw-r--r--keyboards/wilba_tech/rama_works_m50_ax/info.json8
-rw-r--r--keyboards/wilba_tech/rama_works_m60_a/config.h8
-rw-r--r--keyboards/wilba_tech/rama_works_m60_a/info.json8
-rw-r--r--keyboards/wilba_tech/rama_works_m60_a/keymaps/mguterl/keymap.c2
-rw-r--r--keyboards/wilba_tech/rama_works_m65_b/config.h8
-rw-r--r--keyboards/wilba_tech/rama_works_m65_b/info.json8
-rw-r--r--keyboards/wilba_tech/rama_works_m65_bx/config.h8
-rw-r--r--keyboards/wilba_tech/rama_works_m65_bx/info.json8
-rw-r--r--keyboards/wilba_tech/rama_works_m6_a/config.h8
-rw-r--r--keyboards/wilba_tech/rama_works_m6_a/info.json8
-rw-r--r--keyboards/wilba_tech/rama_works_m6_b/config.h8
-rw-r--r--keyboards/wilba_tech/rama_works_m6_b/info.json8
-rw-r--r--keyboards/wilba_tech/rama_works_u80_a/config.h8
-rw-r--r--keyboards/wilba_tech/rama_works_u80_a/info.json8
-rw-r--r--keyboards/wilba_tech/wt60_a/config.h12
-rw-r--r--keyboards/wilba_tech/wt60_a/info.json8
-rw-r--r--keyboards/wilba_tech/wt60_b/config.h8
-rw-r--r--keyboards/wilba_tech/wt60_b/info.json8
-rw-r--r--keyboards/wilba_tech/wt60_bx/config.h8
-rw-r--r--keyboards/wilba_tech/wt60_bx/info.json8
-rw-r--r--keyboards/wilba_tech/wt60_c/config.h8
-rw-r--r--keyboards/wilba_tech/wt60_c/info.json8
-rw-r--r--keyboards/wilba_tech/wt60_d/config.h8
-rw-r--r--keyboards/wilba_tech/wt60_d/info.json8
-rw-r--r--keyboards/wilba_tech/wt60_d/keymaps/madhatter/keymap.c2
-rw-r--r--keyboards/wilba_tech/wt60_g/config.h8
-rw-r--r--keyboards/wilba_tech/wt60_g/info.json8
-rw-r--r--keyboards/wilba_tech/wt60_g2/config.h8
-rw-r--r--keyboards/wilba_tech/wt60_g2/info.json8
-rw-r--r--keyboards/wilba_tech/wt60_h1/config.h8
-rw-r--r--keyboards/wilba_tech/wt60_h1/info.json8
-rw-r--r--keyboards/wilba_tech/wt60_h2/config.h8
-rw-r--r--keyboards/wilba_tech/wt60_h2/info.json8
-rw-r--r--keyboards/wilba_tech/wt60_h3/config.h8
-rw-r--r--keyboards/wilba_tech/wt60_h3/info.json8
-rw-r--r--keyboards/wilba_tech/wt60_xt/config.h8
-rw-r--r--keyboards/wilba_tech/wt60_xt/info.json8
-rw-r--r--keyboards/wilba_tech/wt65_a/config.h11
-rw-r--r--keyboards/wilba_tech/wt65_a/info.json8
-rw-r--r--keyboards/wilba_tech/wt65_b/config.h11
-rw-r--r--keyboards/wilba_tech/wt65_b/info.json8
-rw-r--r--keyboards/wilba_tech/wt65_d/config.h25
-rw-r--r--keyboards/wilba_tech/wt65_d/info.json16
-rw-r--r--keyboards/wilba_tech/wt65_d/keymaps/default/keymap.c40
-rw-r--r--keyboards/wilba_tech/wt65_d/keymaps/via/keymap.c1
-rw-r--r--keyboards/wilba_tech/wt65_d/keymaps/via/rules.mk1
-rw-r--r--keyboards/wilba_tech/wt65_d/readme.md25
-rw-r--r--keyboards/wilba_tech/wt65_d/rules.mk18
-rw-r--r--keyboards/wilba_tech/wt65_d/wt65_d.c4
-rw-r--r--keyboards/wilba_tech/wt65_d/wt65_d.h23
-rw-r--r--keyboards/wilba_tech/wt65_f/config.h8
-rw-r--r--keyboards/wilba_tech/wt65_f/info.json8
-rw-r--r--keyboards/wilba_tech/wt65_fx/config.h8
-rw-r--r--keyboards/wilba_tech/wt65_fx/info.json8
-rw-r--r--keyboards/wilba_tech/wt65_g/config.h8
-rw-r--r--keyboards/wilba_tech/wt65_g/info.json8
-rw-r--r--keyboards/wilba_tech/wt65_g2/config.h8
-rw-r--r--keyboards/wilba_tech/wt65_g2/info.json8
-rw-r--r--keyboards/wilba_tech/wt65_h1/config.h8
-rw-r--r--keyboards/wilba_tech/wt65_h1/info.json8
-rw-r--r--keyboards/wilba_tech/wt65_xt/config.h8
-rw-r--r--keyboards/wilba_tech/wt65_xt/info.json8
-rw-r--r--keyboards/wilba_tech/wt65_xtx/config.h8
-rw-r--r--keyboards/wilba_tech/wt65_xtx/info.json8
-rw-r--r--keyboards/wilba_tech/wt69_a/config.h8
-rw-r--r--keyboards/wilba_tech/wt69_a/info.json8
-rw-r--r--keyboards/wilba_tech/wt70_jb/config.h8
-rw-r--r--keyboards/wilba_tech/wt70_jb/info.json8
-rw-r--r--keyboards/wilba_tech/wt70_jb/wt70_jb.c6
-rw-r--r--keyboards/wilba_tech/wt75_a/config.h8
-rw-r--r--keyboards/wilba_tech/wt75_a/info.json8
-rw-r--r--keyboards/wilba_tech/wt75_b/config.h11
-rw-r--r--keyboards/wilba_tech/wt75_b/info.json8
-rw-r--r--keyboards/wilba_tech/wt75_b/keymaps/madhatter/keymap.c2
-rw-r--r--keyboards/wilba_tech/wt75_c/config.h11
-rw-r--r--keyboards/wilba_tech/wt75_c/info.json8
-rw-r--r--keyboards/wilba_tech/wt80_a/config.h11
-rw-r--r--keyboards/wilba_tech/wt80_a/info.json8
-rw-r--r--keyboards/wilba_tech/wt80_bc/config.h8
-rw-r--r--keyboards/wilba_tech/wt80_bc/info.json8
-rw-r--r--keyboards/wilba_tech/wt80_g/config.h8
-rw-r--r--keyboards/wilba_tech/wt80_g/info.json8
-rw-r--r--keyboards/wilba_tech/wt8_a/config.h8
-rw-r--r--keyboards/wilba_tech/wt8_a/info.json8
-rw-r--r--keyboards/wilba_tech/wt8_a/keymaps/rys/keymap.c2
-rw-r--r--keyboards/wilba_tech/wt_main.c6
-rw-r--r--keyboards/wilba_tech/wt_mono_backlight.c27
-rw-r--r--keyboards/wilba_tech/zeal60/config.h8
-rw-r--r--keyboards/wilba_tech/zeal60/info.json6
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/crd/keymap.c2
-rw-r--r--keyboards/wilba_tech/zeal60/keymaps/tusing/keymap.c2
-rw-r--r--keyboards/wilba_tech/zeal65/config.h8
-rw-r--r--keyboards/wilba_tech/zeal65/info.json6
-rw-r--r--keyboards/winkeyless/b87/config.h7
-rw-r--r--keyboards/winkeyless/b87/info.json6
-rw-r--r--keyboards/winkeyless/bface/config.h7
-rw-r--r--keyboards/winkeyless/bface/info.json8
-rw-r--r--keyboards/winkeyless/bmini/config.h6
-rw-r--r--keyboards/winkeyless/bmini/info.json6
-rw-r--r--keyboards/winkeyless/bminiex/config.h6
-rw-r--r--keyboards/winkeyless/bminiex/info.json8
-rw-r--r--keyboards/winkeys/mini_winni/config.h9
-rw-r--r--keyboards/winkeys/mini_winni/info.json6
-rw-r--r--keyboards/winry/winry25tc/config.h7
-rw-r--r--keyboards/winry/winry25tc/info.json6
-rw-r--r--keyboards/winry/winry315/readme.md2
-rw-r--r--keyboards/wolf/kuku65/config.h8
-rw-r--r--keyboards/wolf/kuku65/info.json6
-rw-r--r--keyboards/wolf/kuku65/readme.md2
-rw-r--r--keyboards/wolf/ryujin/config.h35
-rw-r--r--keyboards/wolf/ryujin/info.json16
-rw-r--r--keyboards/wolf/ryujin/keymaps/default/keymap.c39
-rw-r--r--keyboards/wolf/ryujin/keymaps/via/keymap.c57
-rw-r--r--keyboards/wolf/ryujin/keymaps/via/rules.mk1
-rw-r--r--keyboards/wolf/ryujin/readme.md21
-rw-r--r--keyboards/wolf/ryujin/rules.mk21
-rw-r--r--keyboards/wolf/ryujin/ryujin.c14
-rw-r--r--keyboards/wolf/ryujin/ryujin.h32
-rw-r--r--keyboards/wolf/sabre/config.h8
-rw-r--r--keyboards/wolf/sabre/info.json6
-rw-r--r--keyboards/wolf/sabre/readme.md2
-rw-r--r--keyboards/wolf/ts60/config.h8
-rw-r--r--keyboards/wolf/ts60/info.json6
-rw-r--r--keyboards/wolf/ts60/readme.md2
-rw-r--r--keyboards/wolfmarkclub/wm1/config.h7
-rw-r--r--keyboards/wolfmarkclub/wm1/info.json8
-rwxr-xr-xkeyboards/woodkeys/bigseries/1key/config.h8
-rw-r--r--keyboards/woodkeys/bigseries/1key/info.json8
-rw-r--r--keyboards/woodkeys/bigseries/1key/keymaps/dudeofawesome/config.h1
-rwxr-xr-xkeyboards/woodkeys/bigseries/2key/config.h8
-rw-r--r--keyboards/woodkeys/bigseries/2key/info.json8
-rwxr-xr-xkeyboards/woodkeys/bigseries/3key/config.h8
-rw-r--r--keyboards/woodkeys/bigseries/3key/info.json8
-rwxr-xr-xkeyboards/woodkeys/bigseries/4key/config.h8
-rw-r--r--keyboards/woodkeys/bigseries/4key/info.json8
-rw-r--r--keyboards/woodkeys/meira/config.h7
-rw-r--r--keyboards/woodkeys/meira/featherble/config.h1
-rw-r--r--keyboards/woodkeys/meira/info.json6
-rw-r--r--keyboards/woodkeys/meira/keymaps/cole/keymap.c2
-rw-r--r--keyboards/woodkeys/meira/keymaps/grahampheath/keymap.c2
-rw-r--r--keyboards/woodkeys/meira/keymaps/takmiya/keymap.c2
-rw-r--r--keyboards/woodkeys/meira/meira.c2
-rw-r--r--keyboards/woodkeys/meira/promicro/config.h1
-rw-r--r--keyboards/woodkeys/scarletbandana/config.h7
-rw-r--r--keyboards/woodkeys/scarletbandana/info.json6
-rw-r--r--keyboards/woodkeys/scarletbandana/keymaps/default/keymap.c14
-rw-r--r--keyboards/work_louder/encoder_actions.c68
-rw-r--r--keyboards/work_louder/encoder_actions.h21
-rw-r--r--keyboards/work_louder/loop/config.h18
-rw-r--r--keyboards/work_louder/loop/info.json9
-rw-r--r--keyboards/work_louder/loop/keymaps/via/keymap.c38
-rw-r--r--keyboards/work_louder/loop/keymaps/via/rules.mk3
-rw-r--r--keyboards/work_louder/loop/loop.c2
-rw-r--r--keyboards/work_louder/loop/loop.h1
-rw-r--r--keyboards/work_louder/loop/rev1/config.h6
-rw-r--r--keyboards/work_louder/loop/rev1/info.json5
-rw-r--r--keyboards/work_louder/loop/rev1/rules.mk0
-rw-r--r--keyboards/work_louder/loop/rev3/config.h6
-rw-r--r--keyboards/work_louder/loop/rev3/info.json5
-rw-r--r--keyboards/work_louder/loop/rev3/rules.mk0
-rw-r--r--keyboards/work_louder/loop/rules.mk2
-rw-r--r--keyboards/work_louder/micro/config.h89
-rw-r--r--keyboards/work_louder/micro/info.json64
-rw-r--r--keyboards/work_louder/micro/keymaps/default/keymap.c91
-rw-r--r--keyboards/work_louder/micro/keymaps/default/rules.mk1
-rw-r--r--keyboards/work_louder/micro/keymaps/via/keymap.c92
-rw-r--r--keyboards/work_louder/micro/keymaps/via/rules.mk3
-rw-r--r--keyboards/work_louder/micro/matrix.c131
-rw-r--r--keyboards/work_louder/micro/micro.c170
-rw-r--r--keyboards/work_louder/micro/micro.h22
-rw-r--r--keyboards/work_louder/micro/readme.md26
-rw-r--r--keyboards/work_louder/micro/rules.mk6
-rw-r--r--keyboards/work_louder/nano/config.h22
-rw-r--r--keyboards/work_louder/nano/info.json10
-rw-r--r--keyboards/work_louder/nano/keymaps/via/keymap.c39
-rw-r--r--keyboards/work_louder/nano/keymaps/via/rules.mk3
-rw-r--r--keyboards/work_louder/nano/nano.c2
-rw-r--r--keyboards/work_louder/nano/nano.h1
-rw-r--r--keyboards/work_louder/rgb_functions.c154
-rw-r--r--keyboards/work_louder/work_board/config.h24
-rw-r--r--keyboards/work_louder/work_board/info.json9
-rw-r--r--keyboards/work_louder/work_board/keymaps/default/keymap.c170
-rw-r--r--keyboards/work_louder/work_board/keymaps/via/keymap.c59
-rw-r--r--keyboards/work_louder/work_board/keymaps/via/rules.mk3
-rw-r--r--keyboards/work_louder/work_board/rev1/config.h6
-rw-r--r--keyboards/work_louder/work_board/rev1/info.json5
-rw-r--r--keyboards/work_louder/work_board/rev1/rules.mk0
-rw-r--r--keyboards/work_louder/work_board/rev3/config.h6
-rw-r--r--keyboards/work_louder/work_board/rev3/info.json5
-rw-r--r--keyboards/work_louder/work_board/rev3/rules.mk0
-rw-r--r--keyboards/work_louder/work_board/rules.mk2
-rw-r--r--keyboards/work_louder/work_board/work_board.c2
-rw-r--r--keyboards/work_louder/work_board/work_board.h1
-rw-r--r--keyboards/wren/config.h8
-rw-r--r--keyboards/wren/info.json6
-rw-r--r--keyboards/wren/readme.md2
-rw-r--r--keyboards/wsk/alpha9/config.h8
-rw-r--r--keyboards/wsk/alpha9/info.json6
-rw-r--r--keyboards/wsk/g4m3ralpha/config.h8
-rw-r--r--keyboards/wsk/g4m3ralpha/info.json8
-rw-r--r--keyboards/wsk/gothic50/config.h8
-rw-r--r--keyboards/wsk/gothic50/info.json6
-rw-r--r--keyboards/wsk/gothic70/config.h8
-rw-r--r--keyboards/wsk/gothic70/info.json6
-rw-r--r--keyboards/wsk/houndstooth/config.h8
-rw-r--r--keyboards/wsk/houndstooth/info.json6
-rw-r--r--keyboards/wsk/jerkin/config.h8
-rw-r--r--keyboards/wsk/jerkin/info.json6
-rw-r--r--keyboards/wsk/kodachi50/config.h8
-rw-r--r--keyboards/wsk/kodachi50/info.json6
-rw-r--r--keyboards/wsk/pain27/config.h8
-rw-r--r--keyboards/wsk/pain27/info.json8
-rw-r--r--keyboards/wsk/sl40/config.h8
-rw-r--r--keyboards/wsk/sl40/info.json6
-rw-r--r--keyboards/wsk/sl40/keymaps/prototype/keymap.c2
-rw-r--r--keyboards/wsk/tkl30/config.h8
-rw-r--r--keyboards/wsk/tkl30/info.json6
-rw-r--r--keyboards/wuque/ikki68/config.h7
-rw-r--r--keyboards/wuque/ikki68/info.json6
-rw-r--r--keyboards/wuque/ikki68_aurora/config.h7
-rw-r--r--keyboards/wuque/ikki68_aurora/info.json8
-rw-r--r--keyboards/wuque/ikki68_aurora/keymaps/68_ansi/keymap.c2
-rw-r--r--keyboards/wuque/ikki68_aurora/keymaps/68_iso/keymap.c2
-rw-r--r--keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/keymap.c2
-rw-r--r--keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/keymap.c2
-rw-r--r--keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/keymap.c2
-rw-r--r--keyboards/wuque/ikki68_aurora/keymaps/68_split_space/keymap.c2
-rw-r--r--keyboards/wuque/ikki68_aurora/keymaps/ewersp/keymap.c4
-rw-r--r--keyboards/wuque/mammoth20x/config.h7
-rw-r--r--keyboards/wuque/mammoth20x/info.json6
-rw-r--r--keyboards/wuque/mammoth75x/config.h7
-rw-r--r--keyboards/wuque/mammoth75x/info.json6
-rw-r--r--keyboards/wuque/mammoth75x/keymaps/75_ansi/keymap.c2
-rw-r--r--keyboards/wuque/mammoth75x/keymaps/75_split_bs/keymap.c2
-rw-r--r--keyboards/wuque/mammoth75x/keymaps/75_split_lshift/keymap.c2
-rw-r--r--keyboards/wuque/mammoth75x/keymaps/75_split_rshift/keymap.c2
-rw-r--r--keyboards/wuque/mammoth75x/keymaps/75_split_space/keymap.c2
-rw-r--r--keyboards/wuque/promise87/ansi/ansi.c17
-rw-r--r--keyboards/wuque/promise87/ansi/ansi.h218
-rw-r--r--keyboards/wuque/promise87/ansi/config.h48
-rw-r--r--keyboards/wuque/promise87/ansi/info.json609
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/default/keymap.c36
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/default/readme.md1
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi/keymap.c36
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi/readme.md1
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs/keymap.c36
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs/readme.md1
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs_rshift/keymap.c36
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs_rshift/readme.md1
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_lshift/keymap.c36
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_lshift/readme.md1
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_rshift/keymap.c36
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_rshift/readme.md1
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/via/keymap.c52
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/via/readme.md1
-rw-r--r--keyboards/wuque/promise87/ansi/keymaps/via/rules.mk2
-rw-r--r--keyboards/wuque/promise87/ansi/readme.md27
-rw-r--r--keyboards/wuque/promise87/ansi/rules.mk20
-rw-r--r--keyboards/wuque/promise87/wkl/config.h48
-rw-r--r--keyboards/wuque/promise87/wkl/info.json592
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/default/keymap.c36
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/default/readme.md1
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl/keymap.c36
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl/readme.md1
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs/keymap.c36
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs/readme.md1
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs_rshift/keymap.c36
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs_rshift/readme.md1
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_lshift/keymap.c36
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_lshift/readme.md1
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_rshift/keymap.c36
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_rshift/readme.md1
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/via/keymap.c52
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/via/readme.md1
-rw-r--r--keyboards/wuque/promise87/wkl/keymaps/via/rules.mk2
-rw-r--r--keyboards/wuque/promise87/wkl/readme.md27
-rw-r--r--keyboards/wuque/promise87/wkl/rules.mk18
-rw-r--r--keyboards/wuque/promise87/wkl/wkl.c17
-rw-r--r--keyboards/wuque/promise87/wkl/wkl.h217
-rw-r--r--keyboards/wuque/serneity65/config.h7
-rw-r--r--keyboards/wuque/serneity65/info.json6
-rw-r--r--keyboards/wuque/serneity65/keymaps/65_ansi/keymap.c2
-rw-r--r--keyboards/wuque/serneity65/keymaps/65_split_bs/keymap.c2
-rw-r--r--keyboards/wuque/serneity65/keymaps/65_split_lshift/keymap.c2
-rw-r--r--keyboards/wuque/serneity65/keymaps/65_split_space/keymap.c2
-rw-r--r--keyboards/x16/config.h8
-rw-r--r--keyboards/x16/info.json6
-rw-r--r--keyboards/xbows/knight/config.h6
-rw-r--r--keyboards/xbows/knight/info.json6
-rw-r--r--keyboards/xbows/knight_plus/config.h6
-rw-r--r--keyboards/xbows/knight_plus/info.json6
-rw-r--r--keyboards/xbows/nature/config.h6
-rw-r--r--keyboards/xbows/nature/info.json6
-rw-r--r--keyboards/xbows/numpad/config.h6
-rw-r--r--keyboards/xbows/numpad/info.json6
-rw-r--r--keyboards/xbows/ranger/config.h6
-rw-r--r--keyboards/xbows/ranger/info.json6
-rw-r--r--keyboards/xbows/woody/config.h5
-rw-r--r--keyboards/xbows/woody/info.json6
-rw-r--r--keyboards/xelus/akis/config.h8
-rw-r--r--keyboards/xelus/akis/info.json8
-rw-r--r--keyboards/xelus/dawn60/info.json6
-rw-r--r--keyboards/xelus/dawn60/rev1/config.h8
-rw-r--r--keyboards/xelus/dawn60/rev1_qmk/config.h8
-rw-r--r--keyboards/xelus/dharma/config.h8
-rw-r--r--keyboards/xelus/dharma/info.json8
-rw-r--r--keyboards/xelus/dharma/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/dharma/keymaps/via/config.h18
-rw-r--r--keyboards/xelus/kangaroo/chconf.h31
-rw-r--r--keyboards/xelus/kangaroo/config.h61
-rw-r--r--keyboards/xelus/kangaroo/info.json10
-rw-r--r--keyboards/xelus/kangaroo/kangaroo.c7
-rw-r--r--keyboards/xelus/kangaroo/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/kangaroo/keymaps/via/config.h18
-rw-r--r--keyboards/xelus/kangaroo/readme.md13
-rw-r--r--keyboards/xelus/kangaroo/rev1/config.h54
-rw-r--r--keyboards/xelus/kangaroo/rev1/halconf.h (renamed from keyboards/xelus/kangaroo/halconf.h)0
-rw-r--r--keyboards/xelus/kangaroo/rev1/info.json6
-rw-r--r--keyboards/xelus/kangaroo/rev1/mcuconf.h (renamed from keyboards/xelus/kangaroo/mcuconf.h)0
-rw-r--r--keyboards/xelus/kangaroo/rev1/readme.md14
-rw-r--r--keyboards/xelus/kangaroo/rev1/rev1.c22
-rw-r--r--keyboards/xelus/kangaroo/rev1/rev1.h17
-rw-r--r--keyboards/xelus/kangaroo/rev1/rules.mk (renamed from keyboards/xelus/kangaroo/rules.mk)0
-rw-r--r--keyboards/xelus/kangaroo/rev2/config.h38
-rw-r--r--keyboards/xelus/kangaroo/rev2/info.json6
-rw-r--r--keyboards/xelus/kangaroo/rev2/readme.md14
-rw-r--r--keyboards/xelus/kangaroo/rev2/rules.mk24
-rwxr-xr-xkeyboards/xelus/la_plus/config.h8
-rw-r--r--keyboards/xelus/la_plus/info.json8
-rw-r--r--keyboards/xelus/la_plus/keymaps/default/config.h19
-rw-r--r--keyboards/xelus/la_plus/keymaps/via/config.h2
-rw-r--r--keyboards/xelus/ninjin/config.h7
-rw-r--r--keyboards/xelus/ninjin/info.json6
-rw-r--r--keyboards/xelus/pachi/mini_32u4/config.h7
-rw-r--r--keyboards/xelus/pachi/mini_32u4/info.json8
-rw-r--r--keyboards/xelus/pachi/mini_32u4/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/pachi/mini_32u4/keymaps/via/config.h2
-rw-r--r--keyboards/xelus/pachi/rev1/config.h7
-rw-r--r--keyboards/xelus/pachi/rev1/info.json8
-rw-r--r--keyboards/xelus/pachi/rev1/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/pachi/rev1/keymaps/via/config.h2
-rw-r--r--keyboards/xelus/pachi/rgb/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/pachi/rgb/keymaps/via/config.h2
-rw-r--r--keyboards/xelus/pachi/rgb/rev1/config.h8
-rw-r--r--keyboards/xelus/pachi/rgb/rev1/info.json8
-rw-r--r--keyboards/xelus/pachi/rgb/rev2/config.h8
-rw-r--r--keyboards/xelus/pachi/rgb/rev2/info.json8
-rw-r--r--keyboards/xelus/rs108/config.h67
-rw-r--r--keyboards/xelus/rs108/halconf.h (renamed from keyboards/xelus/rs60/rev2/halconf.h)0
-rw-r--r--keyboards/xelus/rs108/info.json125
-rw-r--r--keyboards/xelus/rs108/keymaps/default/keymap.c36
-rw-r--r--keyboards/xelus/rs108/keymaps/via/keymap.c54
-rw-r--r--keyboards/xelus/rs108/keymaps/via/rules.mk1
-rw-r--r--keyboards/xelus/rs108/mcuconf.h (renamed from keyboards/xelus/rs60/rev2/mcuconf.h)0
-rw-r--r--keyboards/xelus/rs108/readme.md19
-rw-r--r--keyboards/xelus/rs108/rs108.c16
-rw-r--r--keyboards/xelus/rs108/rs108.h42
-rw-r--r--keyboards/xelus/rs108/rules.mk27
-rw-r--r--keyboards/xelus/rs60/info.json5
-rw-r--r--keyboards/xelus/rs60/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/rs60/keymaps/via/config.h18
-rw-r--r--keyboards/xelus/rs60/rev1/config.h8
-rw-r--r--keyboards/xelus/rs60/rev1/info.json5
-rw-r--r--keyboards/xelus/rs60/rev2/chconf.h30
-rw-r--r--keyboards/xelus/rs60/rev2/config.h73
-rw-r--r--keyboards/xelus/rs60/rev2/rev2.c16
-rw-r--r--keyboards/xelus/rs60/rev2/rev2.h34
-rw-r--r--keyboards/xelus/rs60/rev2/rules.mk28
-rw-r--r--keyboards/xelus/rs60/rev2_0/config.h65
-rw-r--r--keyboards/xelus/rs60/rev2_0/halconf.h26
-rw-r--r--keyboards/xelus/rs60/rev2_0/info.json5
-rw-r--r--keyboards/xelus/rs60/rev2_0/mcuconf.h42
-rw-r--r--keyboards/xelus/rs60/rev2_0/readme.md20
-rw-r--r--keyboards/xelus/rs60/rev2_0/rev2_0.c16
-rw-r--r--keyboards/xelus/rs60/rev2_0/rev2_0.h34
-rw-r--r--keyboards/xelus/rs60/rev2_0/rules.mk28
-rw-r--r--keyboards/xelus/rs60/rev2_1/config.h45
-rw-r--r--keyboards/xelus/rs60/rev2_1/info.json5
-rw-r--r--keyboards/xelus/rs60/rev2_1/readme.md20
-rw-r--r--keyboards/xelus/rs60/rev2_1/rev2_1.c16
-rw-r--r--keyboards/xelus/rs60/rev2_1/rev2_1.h34
-rw-r--r--keyboards/xelus/rs60/rev2_1/rules.mk29
-rw-r--r--keyboards/xelus/rs60/rs60.h6
-rw-r--r--keyboards/xelus/snap96/config.h8
-rw-r--r--keyboards/xelus/snap96/info.json6
-rw-r--r--keyboards/xelus/trinityxttkl/config.h7
-rw-r--r--keyboards/xelus/trinityxttkl/info.json6
-rw-r--r--keyboards/xelus/valor/rev1/config.h8
-rw-r--r--keyboards/xelus/valor/rev1/info.json8
-rw-r--r--keyboards/xelus/valor/rev2/config.h8
-rw-r--r--keyboards/xelus/valor/rev2/info.json8
-rw-r--r--keyboards/xelus/valor/rev2/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/valor/rev2/keymaps/via/config.h2
-rw-r--r--keyboards/xelus/valor_frl_tkl/config.h68
-rw-r--r--keyboards/xelus/valor_frl_tkl/info.json6
-rw-r--r--keyboards/xelus/valor_frl_tkl/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/valor_frl_tkl/keymaps/default/keymap.c2
-rw-r--r--keyboards/xelus/valor_frl_tkl/keymaps/via/config.h18
-rw-r--r--keyboards/xelus/valor_frl_tkl/keymaps/via/keymap.c2
-rw-r--r--keyboards/xelus/valor_frl_tkl/readme.md13
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev1/chconf.h (renamed from keyboards/xelus/valor_frl_tkl/chconf.h)0
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev1/config.h60
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev1/halconf.h (renamed from keyboards/xelus/valor_frl_tkl/halconf.h)0
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev1/info.json6
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev1/mcuconf.h (renamed from keyboards/xelus/valor_frl_tkl/mcuconf.h)0
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev1/readme.md13
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev1/rev1.c24
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev1/rev1.h35
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev1/rules.mk (renamed from keyboards/xelus/valor_frl_tkl/rules.mk)0
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev2_0/.noci0
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev2_0/config.h40
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev2_0/info.json6
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev2_0/mcuconf.h34
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev2_0/readme.md79
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev2_0/rules.mk24
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev2_1/config.h40
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev2_1/info.json6
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev2_1/mcuconf.h34
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev2_1/readme.md14
-rw-r--r--keyboards/xelus/valor_frl_tkl/rev2_1/rules.mk24
-rw-r--r--keyboards/xelus/valor_frl_tkl/valor_frl_tkl.c5
-rw-r--r--keyboards/xelus/valor_frl_tkl/valor_frl_tkl.h2
-rw-r--r--keyboards/xelus/xs60/config.h8
-rw-r--r--keyboards/xelus/xs60/info.json6
-rw-r--r--keyboards/xelus/xs60/keymaps/default/config.h18
-rw-r--r--keyboards/xelus/xs60/keymaps/via/config.h2
-rw-r--r--keyboards/xenon/config.h6
-rw-r--r--keyboards/xenon/info.json7
-rw-r--r--keyboards/xiaomi/mk02/config.h7
-rw-r--r--keyboards/xiaomi/mk02/info.json8
-rw-r--r--keyboards/xiudi/xd002/config.h7
-rw-r--r--keyboards/xiudi/xd002/info.json8
-rw-r--r--keyboards/xiudi/xd002/keymaps/tap_dance/config.h1
-rw-r--r--keyboards/xiudi/xd004/info.json6
-rw-r--r--keyboards/xiudi/xd004/v1/config.h9
-rw-r--r--keyboards/xiudi/xd60/info.json6
-rw-r--r--keyboards/xiudi/xd60/keymaps/Jos/keymap.c2
-rw-r--r--keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c2
-rw-r--r--keyboards/xiudi/xd60/keymaps/birkir/keymap.c4
-rw-r--r--keyboards/xiudi/xd60/keymaps/crd_ansi/keymap.c2
-rw-r--r--keyboards/xiudi/xd60/keymaps/finnish/keymap.c2
-rwxr-xr-xkeyboards/xiudi/xd60/keymaps/fvolpe83/keymap.c2
-rw-r--r--keyboards/xiudi/xd60/keymaps/kmontag42/keymap.c4
-rw-r--r--keyboards/xiudi/xd60/keymaps/krusli/keymap.c2
-rw-r--r--keyboards/xiudi/xd60/keymaps/melka/keymap.c2
-rw-r--r--keyboards/xiudi/xd60/keymaps/petesmom/keymap.c2
-rw-r--r--keyboards/xiudi/xd60/keymaps/rooski/keymap.c4
-rw-r--r--keyboards/xiudi/xd60/keymaps/stanleylai/keymap.c2
-rw-r--r--keyboards/xiudi/xd60/keymaps/suryanisaac/keymap.c2
-rw-r--r--keyboards/xiudi/xd60/rev2/config.h8
-rw-r--r--keyboards/xiudi/xd60/rev2/info.json6
-rw-r--r--keyboards/xiudi/xd60/rev3/config.h8
-rw-r--r--keyboards/xiudi/xd60/rev3/info.json6
-rw-r--r--keyboards/xiudi/xd68/config.h8
-rw-r--r--keyboards/xiudi/xd68/info.json8
-rw-r--r--keyboards/xiudi/xd75/config.h8
-rw-r--r--keyboards/xiudi/xd75/info.json6
-rw-r--r--keyboards/xiudi/xd75/keymaps/4sstylz/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/adi/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/arpinfidel/keymap.c6
-rw-r--r--keyboards/xiudi/xd75/keymaps/atomic_style/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/atomic_style_jp/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/bbaserdem/config.h3
-rw-r--r--keyboards/xiudi/xd75/keymaps/bbaserdem/keymap.c21
-rw-r--r--keyboards/xiudi/xd75/keymaps/bbaserdem/readme.md14
-rw-r--r--keyboards/xiudi/xd75/keymaps/bbaserdem/rules.mk7
-rw-r--r--keyboards/xiudi/xd75/keymaps/boy_314/keymap.c8
-rw-r--r--keyboards/xiudi/xd75/keymaps/bramver/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/bulbizarre/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/buzzlighter1/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/c4software_bepo/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/cbbrowne/keymap.c8
-rwxr-xr-xkeyboards/xiudi/xd75/keymaps/clanghans/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/colinta/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/daniel/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/davidrambo/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/developper_bepo/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/emilyh/keymap.c6
-rw-r--r--keyboards/xiudi/xd75/keymaps/fabian/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/french/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/germanized/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/hybrid/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/jarred/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/kim-kim-xd73/keymap.c8
-rw-r--r--keyboards/xiudi/xd75/keymaps/kim-kim/keymap.c8
-rw-r--r--keyboards/xiudi/xd75/keymaps/kloki/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/markus/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/minna/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/msiu/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/neothefox/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/odyssey/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/raoeus/keymap.c173
-rw-r--r--keyboards/xiudi/xd75/keymaps/raoeus/readme.md77
-rw-r--r--keyboards/xiudi/xd75/keymaps/raoeus/rules.mk3
-rw-r--r--keyboards/xiudi/xd75/keymaps/replicajunction/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/revok75/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/scheiklb/keymap.c2
-rw-r--r--keyboards/xiudi/xd75/keymaps/scheiklp/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/skewwhiffy/keymap.c6
-rw-r--r--keyboards/xiudi/xd75/keymaps/tdl-jturner/config.h1
-rw-r--r--keyboards/xiudi/xd75/keymaps/tdl-jturner/keymap.c4
-rw-r--r--keyboards/xiudi/xd75/keymaps/tomswartz07/keymap.c6
-rw-r--r--keyboards/xiudi/xd75/keymaps/xo/keymap.c4
-rw-r--r--keyboards/xiudi/xd84/config.h8
-rw-r--r--keyboards/xiudi/xd84/info.json6
-rw-r--r--keyboards/xiudi/xd84pro/config.h8
-rw-r--r--keyboards/xiudi/xd84pro/info.json6
-rw-r--r--keyboards/xiudi/xd87/config.h8
-rw-r--r--keyboards/xiudi/xd87/info.json6
-rwxr-xr-xkeyboards/xiudi/xd87/keymaps/mac_underglow/keymap.c2
-rw-r--r--keyboards/xiudi/xd96/config.h8
-rw-r--r--keyboards/xiudi/xd96/info.json8
-rw-r--r--keyboards/xiudi/xd96/keymaps/uuupah/keymap.c2
-rw-r--r--keyboards/xmmx/config.h8
-rw-r--r--keyboards/xmmx/info.json6
-rw-r--r--keyboards/xw60/config.h8
-rw-r--r--keyboards/xw60/info.json6
-rw-r--r--keyboards/yampad/config.h7
-rw-r--r--keyboards/yampad/info.json6
-rw-r--r--keyboards/yampad/keymaps/traditional/keymap.c2
-rw-r--r--keyboards/yandrstudio/nz64/config.h7
-rw-r--r--keyboards/yandrstudio/nz64/readme.md2
-rw-r--r--keyboards/yandrstudio/nz64/rules.mk1
-rw-r--r--keyboards/yandrstudio/nz67v2/board.h22
-rw-r--r--keyboards/yandrstudio/nz67v2/config.h109
-rw-r--r--keyboards/yandrstudio/nz67v2/halconf.h22
-rw-r--r--keyboards/yandrstudio/nz67v2/info.json382
-rw-r--r--keyboards/yandrstudio/nz67v2/keymaps/default/keymap.c33
-rw-r--r--keyboards/yandrstudio/nz67v2/keymaps/via/keymap.c76
-rw-r--r--keyboards/yandrstudio/nz67v2/keymaps/via/rules.mk1
-rw-r--r--keyboards/yandrstudio/nz67v2/mcuconf.h25
-rw-r--r--keyboards/yandrstudio/nz67v2/nz67v2.c118
-rw-r--r--keyboards/yandrstudio/nz67v2/nz67v2.h42
-rw-r--r--keyboards/yandrstudio/nz67v2/readme.md23
-rw-r--r--keyboards/yandrstudio/nz67v2/rules.mk19
-rw-r--r--keyboards/yandrstudio/tg67/board.h21
-rw-r--r--keyboards/yandrstudio/tg67/config.h101
-rw-r--r--keyboards/yandrstudio/tg67/halconf.h23
-rw-r--r--keyboards/yandrstudio/tg67/info.json362
-rw-r--r--keyboards/yandrstudio/tg67/keymaps/default/keymap.c31
-rw-r--r--keyboards/yandrstudio/tg67/keymaps/via/keymap.c43
-rw-r--r--keyboards/yandrstudio/tg67/keymaps/via/rules.mk1
-rw-r--r--keyboards/yandrstudio/tg67/mcuconf.h25
-rw-r--r--keyboards/yandrstudio/tg67/readme.md22
-rw-r--r--keyboards/yandrstudio/tg67/rules.mk18
-rw-r--r--keyboards/yandrstudio/tg67/tg67.c46
-rw-r--r--keyboards/yandrstudio/tg67/tg67.h33
-rw-r--r--keyboards/yandrstudio/zhou65/config.h7
-rw-r--r--keyboards/yandrstudio/zhou65/readme.md2
-rw-r--r--keyboards/yandrstudio/zhou65/rules.mk1
-rw-r--r--keyboards/yanghu/unicorne/config.h7
-rw-r--r--keyboards/yanghu/unicorne/f411/rules.mk1
-rw-r--r--keyboards/yanghu/unicorne/info.json13
-rw-r--r--keyboards/yanghu/unicorne/keymaps/bcat/keymap.c2
-rw-r--r--keyboards/yatara/drink_me/config.h8
-rw-r--r--keyboards/yatara/drink_me/info.json6
-rw-r--r--keyboards/ydkb/chili/config.h8
-rw-r--r--keyboards/ydkb/chili/info.json8
-rw-r--r--keyboards/ydkb/grape/config.h7
-rw-r--r--keyboards/ydkb/grape/info.json6
-rw-r--r--keyboards/ydkb/just60/config.h8
-rw-r--r--keyboards/ydkb/just60/info.json6
-rw-r--r--keyboards/ydkb/just60/keymaps/thinxer/keymap.c2
-rw-r--r--keyboards/ydkb/just60/readme.md2
-rw-r--r--keyboards/ydkb/yd68/config.h8
-rw-r--r--keyboards/ydkb/yd68/info.json8
-rw-r--r--keyboards/yeehaw/config.h8
-rw-r--r--keyboards/yeehaw/info.json6
-rw-r--r--keyboards/yiancardesigns/barleycorn/config.h7
-rw-r--r--keyboards/yiancardesigns/barleycorn/info.json6
-rw-r--r--keyboards/yiancardesigns/gingham/config.h7
-rw-r--r--keyboards/yiancardesigns/gingham/info.json6
-rw-r--r--keyboards/yiancardesigns/gingham/keymaps/codecoffeecode/keymap.c2
-rw-r--r--keyboards/yiancardesigns/seigaiha/config.h7
-rw-r--r--keyboards/yiancardesigns/seigaiha/info.json6
-rw-r--r--keyboards/ymdk/bface/config.h7
-rw-r--r--keyboards/ymdk/bface/info.json8
-rw-r--r--keyboards/ymdk/bface/keymaps/minila/keymap.c2
-rw-r--r--keyboards/ymdk/melody96/config.h8
-rw-r--r--keyboards/ymdk/melody96/info.json8
-rw-r--r--keyboards/ymdk/melody96/keymaps/crilith/keymap.c2
-rw-r--r--keyboards/ymdk/melody96/keymaps/dvz/keymap.c2
-rw-r--r--keyboards/ymdk/melody96/keymaps/zunger/keymap.c2
-rw-r--r--keyboards/ymdk/np21/config.h7
-rw-r--r--keyboards/ymdk/np21/info.json8
-rw-r--r--keyboards/ymdk/np24/u4rgb6/config.h7
-rw-r--r--keyboards/ymdk/np24/u4rgb6/info.json8
-rw-r--r--keyboards/ymdk/sp64/config.h6
-rw-r--r--keyboards/ymdk/sp64/info.json8
-rw-r--r--keyboards/ymdk/sp64/keymaps/daed/keymap.c2
-rw-r--r--keyboards/ymdk/sp64/keymaps/minkezhang/config.h5
-rw-r--r--keyboards/ymdk/sp64/keymaps/minkezhang/keymap.c149
-rw-r--r--keyboards/ymdk/sp64/keymaps/minkezhang/readme.md7
-rw-r--r--keyboards/ymdk/sp64/keymaps/minkezhang/rules.mk1
-rw-r--r--keyboards/ymdk/sp64/keymaps/walston/keymap.c2
-rw-r--r--keyboards/ymdk/wings/config.h8
-rw-r--r--keyboards/ymdk/wings/info.json8
-rw-r--r--keyboards/ymdk/wings/keymaps/default/keymap.c2
-rw-r--r--keyboards/ymdk/wingshs/config.h8
-rw-r--r--keyboards/ymdk/wingshs/info.json8
-rw-r--r--keyboards/ymdk/wingshs/keymaps/default/keymap.c2
-rw-r--r--keyboards/ymdk/yd60mq/12led/config.h2
-rw-r--r--keyboards/ymdk/yd60mq/12led/info.json5
-rw-r--r--keyboards/ymdk/yd60mq/16led/config.h2
-rw-r--r--keyboards/ymdk/yd60mq/16led/info.json5
-rw-r--r--keyboards/ymdk/yd60mq/config.h7
-rw-r--r--keyboards/ymdk/yd60mq/info.json5
-rw-r--r--keyboards/ymdk/yd60mq/keymaps/64key/keymap.c2
-rw-r--r--keyboards/ymdk/yd60mq/keymaps/krusli/keymap.c2
-rw-r--r--keyboards/ymdk/ym68/config.h7
-rw-r--r--keyboards/ymdk/ym68/info.json6
-rw-r--r--keyboards/ymdk/ymd09/config.h8
-rw-r--r--keyboards/ymdk/ymd09/info.json6
-rw-r--r--keyboards/ymdk/ymd21/v2/config.h7
-rw-r--r--keyboards/ymdk/ymd21/v2/info.json6
-rw-r--r--keyboards/ymdk/ymd21/v2/readme.md2
-rw-r--r--keyboards/ymdk/ymd40/v2/config.h7
-rw-r--r--keyboards/ymdk/ymd40/v2/info.json8
-rw-r--r--keyboards/ymdk/ymd40/v2/keymaps/factory/keymap.c2
-rw-r--r--keyboards/ymdk/ymd67/config.h8
-rw-r--r--keyboards/ymdk/ymd67/info.json8
-rw-r--r--keyboards/ymdk/ymd75/config.h6
-rw-r--r--keyboards/ymdk/ymd75/info.json7
-rw-r--r--keyboards/ymdk/ymd75/rev1/config.h1
-rw-r--r--keyboards/ymdk/ymd75/rev1/info.json5
-rw-r--r--keyboards/ymdk/ymd75/rev2/config.h1
-rw-r--r--keyboards/ymdk/ymd75/rev2/info.json5
-rw-r--r--keyboards/ymdk/ymd75/rev3/config.h1
-rw-r--r--keyboards/ymdk/ymd75/rev3/info.json5
-rw-r--r--keyboards/ymdk/ymd96/config.h6
-rw-r--r--keyboards/ymdk/ymd96/info.json8
-rw-r--r--keyboards/ymdk/ymd96/keymaps/hgoel89/keymap.c2
-rw-r--r--keyboards/yncognito/batpad/config.h7
-rw-r--r--keyboards/yncognito/batpad/info.json8
-rw-r--r--keyboards/yoichiro/lunakey_macro/config.h8
-rw-r--r--keyboards/yoichiro/lunakey_macro/info.json6
-rw-r--r--keyboards/yoichiro/lunakey_mini/config.h8
-rw-r--r--keyboards/yoichiro/lunakey_mini/info.json6
-rw-r--r--keyboards/yoichiro/lunakey_pico/config.h38
-rw-r--r--keyboards/yoichiro/lunakey_pico/halconf.h8
-rw-r--r--keyboards/yoichiro/lunakey_pico/info.json106
-rw-r--r--keyboards/yoichiro/lunakey_pico/keymaps/default/keymap.c69
-rw-r--r--keyboards/yoichiro/lunakey_pico/keymaps/via/keymap.c65
-rw-r--r--keyboards/yoichiro/lunakey_pico/keymaps/via/rules.mk1
-rw-r--r--keyboards/yoichiro/lunakey_pico/lunakey_pico.c4
-rw-r--r--keyboards/yoichiro/lunakey_pico/lunakey_pico.h23
-rw-r--r--keyboards/yoichiro/lunakey_pico/mcuconf.h11
-rw-r--r--keyboards/yoichiro/lunakey_pico/readme.md27
-rw-r--r--keyboards/yoichiro/lunakey_pico/rules.mk2
-rw-r--r--keyboards/yosino58/config.h25
-rw-r--r--keyboards/yosino58/i2c.c162
-rw-r--r--keyboards/yosino58/i2c.h46
-rw-r--r--keyboards/yosino58/info.json16
-rw-r--r--keyboards/yosino58/keymaps/default/config.h7
-rw-r--r--keyboards/yosino58/keymaps/default/keymap.c107
-rw-r--r--keyboards/yosino58/keymaps/default/rules.mk1
-rw-r--r--keyboards/yosino58/keymaps/sakura/config.h5
-rw-r--r--keyboards/yosino58/keymaps/sakura/keymap.c122
-rw-r--r--keyboards/yosino58/keymaps/sakura/rules.mk1
-rw-r--r--keyboards/yosino58/rev1/config.h13
-rw-r--r--keyboards/yosino58/rev1/info.json22
-rw-r--r--keyboards/yosino58/rev1/matrix.c343
-rw-r--r--keyboards/yosino58/rev1/rev1.h15
-rw-r--r--keyboards/yosino58/rev1/rules.mk23
-rw-r--r--keyboards/yosino58/rev1/serial_config.h4
-rw-r--r--keyboards/yosino58/rev1/serial_config_simpleapi.h5
-rw-r--r--keyboards/yosino58/rev1/split_scomm.c91
-rw-r--r--keyboards/yosino58/rev1/split_scomm.h21
-rw-r--r--keyboards/yosino58/rev1/split_util.c70
-rw-r--r--keyboards/yosino58/rev1/split_util.h16
-rw-r--r--keyboards/yosino58/rules.mk27
-rw-r--r--keyboards/yosino58/serial.c589
-rw-r--r--keyboards/yosino58/serial.h81
-rw-r--r--keyboards/yosino58/ssd1306.c347
-rw-r--r--keyboards/yosino58/ssd1306.h95
-rw-r--r--keyboards/yosino58/yosino58.c11
-rw-r--r--keyboards/yugo_m/model_m_101/config.h7
-rw-r--r--keyboards/yugo_m/model_m_101/info.json8
-rw-r--r--keyboards/yushakobo/navpad/10/info.json5
-rw-r--r--keyboards/yushakobo/navpad/10/readme.md2
-rw-r--r--keyboards/yushakobo/navpad/10/rev0/config.h7
-rw-r--r--keyboards/yushakobo/navpad/10/rev0/info.json5
-rw-r--r--keyboards/yushakobo/navpad/10/rev1/config.h7
-rw-r--r--keyboards/yushakobo/navpad/10/rev1/info.json5
-rw-r--r--keyboards/yushakobo/navpad/10_helix_r/config.h7
-rw-r--r--keyboards/yushakobo/navpad/10_helix_r/info.json8
-rw-r--r--keyboards/yushakobo/navpad/10_helix_r/readme.md2
-rw-r--r--keyboards/yushakobo/quick17/config.h8
-rw-r--r--keyboards/yushakobo/quick17/info.json6
-rw-r--r--keyboards/yushakobo/quick7/config.h8
-rw-r--r--keyboards/yushakobo/quick7/info.json6
-rw-r--r--keyboards/yynmt/acperience12/info.json17
-rw-r--r--keyboards/yynmt/acperience12/rev1/config.h7
-rw-r--r--keyboards/yynmt/acperience12/rev1/info.json23
-rw-r--r--keyboards/yynmt/dozen0/config.h8
-rw-r--r--keyboards/yynmt/dozen0/info.json6
-rw-r--r--keyboards/yynmt/kagamidget/config.h8
-rw-r--r--keyboards/yynmt/kagamidget/info.json6
-rw-r--r--keyboards/z12/config.h8
-rw-r--r--keyboards/z12/info.json6
-rw-r--r--keyboards/z34/config.h8
-rw-r--r--keyboards/z34/info.json6
-rw-r--r--keyboards/zfrontier/big_switch/config.h9
-rw-r--r--keyboards/zfrontier/big_switch/info.json6
-rw-r--r--keyboards/ziggurat/config.h8
-rw-r--r--keyboards/ziggurat/info.json8
-rw-r--r--keyboards/ziggurat/readme.md2
-rw-r--r--keyboards/zj68/config.h8
-rw-r--r--keyboards/zj68/info.json6
-rw-r--r--keyboards/zj68/keymaps/splitbs/keymap.c2
-rwxr-xr-xkeyboards/zlant/config.h8
-rw-r--r--keyboards/zlant/info.json6
-rw-r--r--keyboards/zoo/wampus/config.h8
-rw-r--r--keyboards/zoo/wampus/info.json8
-rw-r--r--keyboards/ztboards/after/config.h8
-rw-r--r--keyboards/ztboards/after/info.json8
-rw-r--r--keyboards/ztboards/after/keymaps/ellicose/keymap.c4
-rw-r--r--keyboards/ztboards/after/keymaps/phlop/keymap.c4
-rw-r--r--keyboards/ztboards/noon/config.h8
-rw-r--r--keyboards/ztboards/noon/info.json8
-rw-r--r--keyboards/zvecr/split_blackpill/config.h7
-rw-r--r--keyboards/zvecr/split_blackpill/info.json6
-rw-r--r--keyboards/zvecr/zv48/config.h7
-rw-r--r--keyboards/zvecr/zv48/f401/rules.mk1
-rw-r--r--keyboards/zvecr/zv48/f411/rules.mk1
-rw-r--r--keyboards/zvecr/zv48/info.json6
-rw-r--r--layouts/community/60_ansi/brandonschlack-ansi/keymap.c2
-rw-r--r--layouts/community/60_ansi/manna-harbour_miryoku/config.h1
-rw-r--r--layouts/community/60_ansi/manna-harbour_miryoku/keymap.c1
-rw-r--r--layouts/community/60_ansi/mechmerlin-ansi/keymap.c2
-rw-r--r--layouts/community/60_ansi/stanrc85-ansi/keymap.c2
-rw-r--r--layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/keymap.c2
-rw-r--r--layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c2
-rw-r--r--layouts/community/60_ansi_split_bs_rshift/brandonschlack-split/keymap.c2
-rw-r--r--layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/keymap.c4
-rw-r--r--layouts/community/60_ansi_split_bs_rshift/yanfali/keymap.c2
-rw-r--r--layouts/community/60_hhkb/yanfali/keymap.c2
-rwxr-xr-xlayouts/community/60_iso/bifbofii/keymap.c4
-rwxr-xr-xlayouts/community/60_iso/bifbofii/readme.md2
-rw-r--r--layouts/community/60_iso/unxmaal/keymap.c2
-rw-r--r--layouts/community/60_tsangan_hhkb/bcat/keymap.c2
-rw-r--r--layouts/community/60_tsangan_hhkb/brandonschlack-tsngn/keymap.c2
-rw-r--r--layouts/community/60_tsangan_hhkb/dohmain/keymap.c2
-rw-r--r--layouts/community/60_tsangan_hhkb/yanfali/keymap.c2
-rw-r--r--layouts/community/60_tsangan_hhkb/yanfali_wkl/keymap.c2
-rw-r--r--layouts/community/65_ansi/mechmerlin/keymap.c2
-rwxr-xr-xlayouts/community/65_ansi/yanfali/keymap.c2
-rw-r--r--layouts/community/65_ansi_blocker/brandonschlack/config.h2
-rw-r--r--layouts/community/65_ansi_blocker/brandonschlack/keymap.c2
-rw-r--r--layouts/community/65_ansi_blocker/mechmerlin/keymap.c2
-rw-r--r--layouts/community/65_ansi_blocker/spidey3/config.h12
-rw-r--r--layouts/community/65_ansi_blocker/spidey3/keymap.c41
-rw-r--r--layouts/community/65_ansi_blocker/spidey3/readme.md14
-rw-r--r--layouts/community/65_ansi_blocker/spidey3/rules.mk10
-rw-r--r--layouts/community/65_ansi_blocker/stanrc85/keymap.c2
-rw-r--r--layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c2
-rw-r--r--layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/config.h2
-rw-r--r--layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/keymap.c2
-rw-r--r--layouts/community/66_ansi/mechmerlin/keymap.c2
-rw-r--r--layouts/community/66_ansi/skully/keymap.c2
-rw-r--r--layouts/community/66_ansi/xyverz/config.h1
-rw-r--r--layouts/community/66_ansi/xyverz/keymap.c2
-rw-r--r--layouts/community/68_ansi/mechmerlin/keymap.c2
-rw-r--r--layouts/community/75_ansi/brandonschlack/keymap.c2
-rw-r--r--layouts/community/75_ansi/mechmerlin-75_ansi/keymap.c2
-rw-r--r--layouts/community/75_ansi/spidey3/config.h3
-rw-r--r--layouts/community/75_ansi/spidey3/keymap.c8
-rw-r--r--layouts/community/75_ansi/yanfali/keymap.c2
-rw-r--r--layouts/community/alice/manna-harbour_miryoku/config.h23
-rw-r--r--layouts/community/alice/manna-harbour_miryoku/keymap.c4
-rw-r--r--layouts/community/alice/stanrc85-alice/keymap.c2
-rw-r--r--layouts/community/alice_split_bs/manna-harbour_miryoku/config.h22
-rw-r--r--layouts/community/alice_split_bs/manna-harbour_miryoku/keymap.c4
-rw-r--r--layouts/community/ergodox/ab/keymap.c4
-rw-r--r--layouts/community/ergodox/absenth/keymap.c2
-rw-r--r--layouts/community/ergodox/adam/config.h2
-rw-r--r--layouts/community/ergodox/adam/keymap.c2
-rw-r--r--layouts/community/ergodox/adnw_k_o_y/keymap.c2
-rw-r--r--layouts/community/ergodox/alexjj/keymap.c4
-rw-r--r--layouts/community/ergodox/andrew_osx/keymap.c2
-rw-r--r--layouts/community/ergodox/bepo_csa/keymap.c4
-rw-r--r--layouts/community/ergodox/berfarah/keymap.c4
-rw-r--r--layouts/community/ergodox/bryan/keymap.c2
-rw-r--r--layouts/community/ergodox/choromanski/keymap.c48
-rw-r--r--layouts/community/ergodox/colemak/keymap.c2
-rw-r--r--layouts/community/ergodox/colemak_code_friendly/keymap.c20
-rw-r--r--layouts/community/ergodox/colemak_programmer/keymap.c12
-rw-r--r--layouts/community/ergodox/common_nighthawk/keymap.c4
-rw-r--r--layouts/community/ergodox/csharp_dev/keymap.c40
-rw-r--r--layouts/community/ergodox/dave/keymap.c2
-rw-r--r--layouts/community/ergodox/deadcyclo/keymap.c16
-rw-r--r--layouts/community/ergodox/dragon788/keymap.c4
-rw-r--r--layouts/community/ergodox/dvorak/keymap.c2
-rw-r--r--layouts/community/ergodox/dvorak_emacs/keymap.c2
-rw-r--r--layouts/community/ergodox/dvorak_emacs_software/keymap.c2
-rw-r--r--layouts/community/ergodox/dvorak_intl_squisher/keymap.c2
-rw-r--r--layouts/community/ergodox/dvorak_plover/keymap.c2
-rw-r--r--layouts/community/ergodox/dvorak_programmer/keymap.c68
-rw-r--r--layouts/community/ergodox/dvorak_programmer_swe/keymap.c2
-rw-r--r--layouts/community/ergodox/dvorak_spanish/keymap.c43
-rw-r--r--layouts/community/ergodox/dvorak_svorak_a5/keymap.c2
-rw-r--r--layouts/community/ergodox/emacs_osx_dk/keymap.c2
-rw-r--r--layouts/community/ergodox/french_hacker/keymap.c2
-rw-r--r--layouts/community/ergodox/galson/keymap.c4
-rw-r--r--layouts/community/ergodox/german-kinergo/keymap.c2
-rw-r--r--layouts/community/ergodox/german-lukas/keymap.c2
-rw-r--r--layouts/community/ergodox/german-manuneo/compile_keymap.py110
-rw-r--r--layouts/community/ergodox/german-manuneo/keymap.c2
-rw-r--r--layouts/community/ergodox/german/keymap.c2
-rw-r--r--layouts/community/ergodox/guni/keymap.c2
-rw-r--r--layouts/community/ergodox/haegin/keymap.c2
-rw-r--r--layouts/community/ergodox/ishigoya-jp/keymap.c78
-rw-r--r--layouts/community/ergodox/issmirnov/keymap.c8
-rw-r--r--layouts/community/ergodox/italian/keymap.c4
-rw-r--r--layouts/community/ergodox/j3rn/keymap.c2
-rw-r--r--layouts/community/ergodox/jackhumbert/keymap.c20
-rw-r--r--layouts/community/ergodox/jacobono/keymap.c2
-rw-r--r--layouts/community/ergodox/jafo/keymap.c2
-rw-r--r--layouts/community/ergodox/jgarr/keymap.c2
-rw-r--r--layouts/community/ergodox/josh/keymap.c8
-rw-r--r--layouts/community/ergodox/kastyle/keymap.c4
-rw-r--r--layouts/community/ergodox/kejadlen/keymap.c4
-rw-r--r--layouts/community/ergodox/kines-ish/keymap.c2
-rw-r--r--layouts/community/ergodox/kristian/keymap.c2
-rw-r--r--layouts/community/ergodox/manna-harbour_miryoku/config.h54
-rw-r--r--layouts/community/ergodox/manna-harbour_miryoku/keymap.c1
-rw-r--r--layouts/community/ergodox/maz/keymap.c2
-rw-r--r--layouts/community/ergodox/mclennon_osx/keymap.c2
-rw-r--r--layouts/community/ergodox/meagerfindings/keymap.c6
-rw-r--r--layouts/community/ergodox/msc/keymap.c2
-rw-r--r--layouts/community/ergodox/naps62/keymap.c4
-rw-r--r--layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.c4
-rw-r--r--layouts/community/ergodox/osx_de/keymap.c197
-rw-r--r--layouts/community/ergodox/osx_de_adnw_koy/keymap.c153
-rw-r--r--layouts/community/ergodox/osx_de_experimental/keymap.c555
-rw-r--r--layouts/community/ergodox/osx_fr/keymap.c2
-rw-r--r--layouts/community/ergodox/osx_kinesis_pnut/keymap.c2
-rw-r--r--layouts/community/ergodox/osx_neo2/keymap.c2
-rw-r--r--layouts/community/ergodox/phoenix/keymap.c2
-rw-r--r--layouts/community/ergodox/plover/keymap.c2
-rw-r--r--layouts/community/ergodox/qwerty_code_friendly/keymap.c2
-rw-r--r--layouts/community/ergodox/replicaJunction/keymap.c2
-rw-r--r--layouts/community/ergodox/reset_eeprom/keymap.c2
-rw-r--r--layouts/community/ergodox/romanzolotarev-norman-plover-osx-hjkl/keymap.c2
-rw-r--r--layouts/community/ergodox/romanzolotarev-norman-plover-osx/keymap.c2
-rw-r--r--layouts/community/ergodox/romanzolotarev-norman-qwerty-osx/keymap.c2
-rw-r--r--layouts/community/ergodox/sethbc/keymap.c4
-rw-r--r--layouts/community/ergodox/siroken3/keymap.c2
-rw-r--r--layouts/community/ergodox/sneako/keymap.c2
-rw-r--r--layouts/community/ergodox/software_neo2/keymap.c2
-rw-r--r--layouts/community/ergodox/swedish-lindhe/keymap.c4
-rw-r--r--layouts/community/ergodox/swedish/keymap.c2
-rw-r--r--layouts/community/ergodox/swissgerman/keymap.c8
-rw-r--r--layouts/community/ergodox/techtomas/keymap.c2
-rw-r--r--layouts/community/ergodox/tkuichooseyou/keymap.c2
-rw-r--r--layouts/community/ergodox/tonyabra_osx/keymap.c2
-rw-r--r--layouts/community/ergodox/townk_osx/keymap.c2
-rw-r--r--layouts/community/ergodox/twentylives_dvorak_with_hebrew/keymap.c22
-rw-r--r--layouts/community/ergodox/win10_writers-block/keymap.c28
-rw-r--r--layouts/community/ergodox/xyverz/keymap.c8
-rw-r--r--layouts/community/ergodox/zweihander-macos/keymap.c2
-rw-r--r--layouts/community/numpad_5x6/bjohnson/keymap.c2
-rw-r--r--layouts/community/ortho_3x10/bbaserdem/config.h21
-rw-r--r--layouts/community/ortho_3x10/bbaserdem/keymap.c98
-rw-r--r--layouts/community/ortho_3x10/bbaserdem/readme.md19
-rwxr-xr-xlayouts/community/ortho_3x10/bbaserdem/rules.mk23
-rw-r--r--layouts/community/ortho_3x10/wanleg/readme.md8
-rw-r--r--layouts/community/ortho_4x10/manna-harbour_miryoku/config.h1
-rw-r--r--layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c1
-rw-r--r--layouts/community/ortho_4x12/ajp10304/keymap.c2
-rw-r--r--layouts/community/ortho_4x12/bakingpy/keymap.c2
-rwxr-xr-xlayouts/community/ortho_4x12/bbaserdem/config.h26
-rwxr-xr-xlayouts/community/ortho_4x12/bbaserdem/keymap.c88
-rw-r--r--layouts/community/ortho_4x12/bbaserdem/readme.md12
-rwxr-xr-xlayouts/community/ortho_4x12/bbaserdem/rules.mk26
-rw-r--r--layouts/community/ortho_4x12/bifbofii/keymap.c4
-rw-r--r--layouts/community/ortho_4x12/bifbofii/readme.md2
-rw-r--r--layouts/community/ortho_4x12/brandonschlack/keymap.c2
-rw-r--r--layouts/community/ortho_4x12/bredfield/keymap.c4
-rw-r--r--layouts/community/ortho_4x12/buswerks/keymap.c2
-rw-r--r--layouts/community/ortho_4x12/colemak_mod_dh_wide/keymap.c2
-rw-r--r--layouts/community/ortho_4x12/crs/keymap.c2
-rw-r--r--layouts/community/ortho_4x12/ddeklerk/keymap.c78
-rw-r--r--layouts/community/ortho_4x12/ergodoxish/keymap.c2
-rw-r--r--layouts/community/ortho_4x12/greatwizard/keymap.c4
-rw-r--r--layouts/community/ortho_4x12/jackhumbert/keymap.c2
-rw-r--r--layouts/community/ortho_4x12/jotix/config.h4
-rw-r--r--layouts/community/ortho_4x12/jotix/keymap.c75
-rw-r--r--layouts/community/ortho_4x12/juno/keymap.c2
-rw-r--r--layouts/community/ortho_4x12/junonum/keymap.c4
-rw-r--r--layouts/community/ortho_4x12/junonum/readme.md3
-rw-r--r--layouts/community/ortho_4x12/manna-harbour_miryoku/config.h1
-rw-r--r--layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c1
-rw-r--r--layouts/community/ortho_4x12/mguterl/keymap.c2
-rw-r--r--layouts/community/ortho_4x12/mindsound/keymap.c2
-rw-r--r--layouts/community/ortho_4x12/peej/keymap.c2
-rw-r--r--layouts/community/ortho_4x12/symbolic/keymap.c2
-rw-r--r--layouts/community/ortho_4x12/xyverz/keymap.c2
-rw-r--r--layouts/community/ortho_5x12/brandonschlack/keymap.c2
-rw-r--r--layouts/community/ortho_5x12/greatwizard/keymap.c4
-rw-r--r--layouts/community/ortho_5x12/manna-harbour_miryoku/config.h1
-rw-r--r--layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c1
-rw-r--r--layouts/community/ortho_5x12/riblee/keymap.c2
-rw-r--r--layouts/community/ortho_5x12/xyverz/keymap.c2
-rw-r--r--layouts/community/ortho_5x14/peej/keymap.c2
-rw-r--r--layouts/community/ortho_5x15/manna-harbour_miryoku/config.h1
-rw-r--r--layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c1
-rw-r--r--layouts/community/planck_mit/guidoism/guidoism.json2
-rw-r--r--layouts/community/planck_mit/guidoism/keymap.c2
-rw-r--r--layouts/community/planck_mit/manna-harbour_miryoku/config.h1
-rw-r--r--layouts/community/planck_mit/manna-harbour_miryoku/keymap.c1
-rw-r--r--layouts/community/split_3x5_3/bbaserdem/config.h35
-rw-r--r--layouts/community/split_3x5_3/bbaserdem/keymap.c117
-rw-r--r--layouts/community/split_3x5_3/bbaserdem/readme.md18
-rw-r--r--layouts/community/split_3x5_3/bbaserdem/rules.mk22
-rw-r--r--layouts/community/split_3x5_3/manna-harbour_miryoku/config.h1
-rw-r--r--layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c1
-rw-r--r--layouts/community/split_3x6_3/bbaserdem/chconf.h23
-rw-r--r--layouts/community/split_3x6_3/bbaserdem/config.h77
-rw-r--r--layouts/community/split_3x6_3/bbaserdem/halconf.h24
-rw-r--r--layouts/community/split_3x6_3/bbaserdem/keymap.c191
-rw-r--r--layouts/community/split_3x6_3/bbaserdem/mcuconf.h25
-rw-r--r--layouts/community/split_3x6_3/bbaserdem/readme.md15
-rw-r--r--layouts/community/split_3x6_3/bbaserdem/rules.mk47
-rw-r--r--layouts/community/split_3x6_3/bbaserdem/ssd1306.c16
-rw-r--r--layouts/community/split_3x6_3/bcat/keymap.c2
-rw-r--r--layouts/community/split_3x6_3/ddeklerk/keymap.c78
-rw-r--r--layouts/community/split_3x6_3/ddeklerk/rules.mk1
-rw-r--r--layouts/community/split_3x6_3/manna-harbour_miryoku/config.h1
-rw-r--r--layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c1
-rw-r--r--layouts/community/tkl_ansi/brandonschlack/keymap.c2
-rw-r--r--layouts/community/tkl_ansi/xyverz/keymap.c2
-rw-r--r--layouts/community/tkl_ansi/yanfali/keymap.c2
-rw-r--r--layouts/default/65_ansi/default_65_ansi/keymap.c36
-rw-r--r--layouts/default/65_ansi_blocker/default_65_ansi_blocker/keymap.c36
-rw-r--r--layouts/default/65_ansi_blocker_split_bs/default_65_ansi_blocker_split_bs/keymap.c36
-rw-r--r--layouts/default/65_ansi_blocker_tsangan/default_65_ansi_blocker_tsangan/keymap.c36
-rw-r--r--layouts/default/65_ansi_blocker_tsangan/readme.md3
-rw-r--r--layouts/default/65_ansi_blocker_tsangan_split_bs/default_65_ansi_blocker_tsangan_split_bs/keymap.c50
-rw-r--r--layouts/default/65_ansi_blocker_tsangan_split_bs/info.json82
-rw-r--r--layouts/default/65_ansi_blocker_tsangan_split_bs/layout.json5
-rw-r--r--layouts/default/65_ansi_blocker_tsangan_split_bs/readme.md6
-rw-r--r--layouts/default/65_ansi_split_bs/default_65_ansi_split_bs/keymap.c36
-rw-r--r--layouts/default/65_iso/default_65_iso/keymap.c36
-rw-r--r--layouts/default/65_iso_blocker/default_65_iso_blocker/keymap.c36
-rw-r--r--layouts/default/65_iso_blocker_split_bs/default_65_iso_blocker_split_bs/keymap.c36
-rw-r--r--layouts/default/65_iso_blocker_tsangan/default_65_iso_blocker_tsangan/keymap.c50
-rw-r--r--layouts/default/65_iso_blocker_tsangan/info.json82
-rw-r--r--layouts/default/65_iso_blocker_tsangan/layout.json5
-rw-r--r--layouts/default/65_iso_blocker_tsangan/readme.md5
-rw-r--r--layouts/default/65_iso_blocker_tsangan_split_bs/default_65_iso_blocker_tsangan_split_bs/keymap.c50
-rw-r--r--layouts/default/65_iso_blocker_tsangan_split_bs/info.json83
-rw-r--r--layouts/default/65_iso_blocker_tsangan_split_bs/layout.json5
-rw-r--r--layouts/default/65_iso_blocker_tsangan_split_bs/readme.md5
-rw-r--r--layouts/default/65_iso_split_bs/default_65_iso_split_bs/keymap.c36
-rw-r--r--layouts/default/readme.md177
-rw-r--r--layouts/default/tkl_ansi/readme.md2
-rw-r--r--layouts/default/tkl_ansi_split_bs_rshift/default_tkl_ansi_split_bs_rshift/keymap.c32
-rw-r--r--layouts/default/tkl_ansi_split_bs_rshift/info.json105
-rw-r--r--layouts/default/tkl_ansi_split_bs_rshift/layout.json6
-rw-r--r--layouts/default/tkl_ansi_split_bs_rshift/readme.md5
-rw-r--r--layouts/default/tkl_ansi_tsangan/default_tkl_ansi_tsangan/keymap.c32
-rw-r--r--layouts/default/tkl_ansi_tsangan/info.json102
-rw-r--r--layouts/default/tkl_ansi_tsangan/layout.json6
-rw-r--r--layouts/default/tkl_ansi_tsangan/readme.md5
-rw-r--r--layouts/default/tkl_ansi_tsangan_split_bs_rshift/default_tkl_ansi_tsangan_split_bs_rshift/keymap.c32
-rw-r--r--layouts/default/tkl_ansi_tsangan_split_bs_rshift/info.json104
-rw-r--r--layouts/default/tkl_ansi_tsangan_split_bs_rshift/layout.json6
-rw-r--r--layouts/default/tkl_ansi_tsangan_split_bs_rshift/readme.md5
-rw-r--r--layouts/default/tkl_iso/readme.md2
-rw-r--r--layouts/default/tkl_iso_split_bs_rshift/default_tkl_iso_split_bs_rshift/keymap.c32
-rw-r--r--layouts/default/tkl_iso_split_bs_rshift/info.json106
-rw-r--r--layouts/default/tkl_iso_split_bs_rshift/layout.json6
-rw-r--r--layouts/default/tkl_iso_split_bs_rshift/readme.md5
-rw-r--r--layouts/default/tkl_iso_tsangan/default_tkl_iso_tsangan/keymap.c32
-rw-r--r--layouts/default/tkl_iso_tsangan/info.json103
-rw-r--r--layouts/default/tkl_iso_tsangan/layout.json6
-rw-r--r--layouts/default/tkl_iso_tsangan/readme.md5
-rw-r--r--layouts/default/tkl_iso_tsangan_split_bs_rshift/default_tkl_iso_tsangan_split_bs_rshift/keymap.c32
-rw-r--r--layouts/default/tkl_iso_tsangan_split_bs_rshift/info.json105
-rw-r--r--layouts/default/tkl_iso_tsangan_split_bs_rshift/layout.json6
-rw-r--r--layouts/default/tkl_iso_tsangan_split_bs_rshift/readme.md5
m---------lib/chibios0
m---------lib/chibios-contrib0
-rw-r--r--lib/fnv/Makefile304
-rw-r--r--lib/fnv/README158
-rw-r--r--lib/fnv/fnv.h250
-rw-r--r--lib/fnv/fnv32.c467
-rw-r--r--lib/fnv/fnv64.c591
-rw-r--r--lib/fnv/hash_32.c156
-rw-r--r--lib/fnv/hash_32a.c144
-rw-r--r--lib/fnv/hash_64.c312
-rw-r--r--lib/fnv/hash_64a.c291
-rw-r--r--lib/fnv/have_ulong64.c58
-rw-r--r--lib/fnv/longlong.h18
-rw-r--r--lib/fnv/qmk_fnv_type_validation.c14
-rw-r--r--lib/fnv/test_fnv.c2237
m---------lib/lufa0
m---------lib/pico-sdk0
m---------lib/printf0
-rw-r--r--lib/python/qmk/c_parse.py3
-rw-r--r--lib/python/qmk/cli/__init__.py42
-rw-r--r--lib/python/qmk/cli/doctor/linux.py57
-rw-r--r--lib/python/qmk/cli/doctor/macos.py2
-rwxr-xr-xlib/python/qmk/cli/doctor/main.py26
-rw-r--r--lib/python/qmk/cli/flash.py122
-rwxr-xr-xlib/python/qmk/cli/generate/api.py37
-rwxr-xr-xlib/python/qmk/cli/generate/config_h.py36
-rw-r--r--lib/python/qmk/cli/generate/dfu_header.py4
-rwxr-xr-xlib/python/qmk/cli/generate/info_json.py8
-rw-r--r--lib/python/qmk/cli/import/__init__.py0
-rw-r--r--lib/python/qmk/cli/import/kbfirmware.py25
-rw-r--r--lib/python/qmk/cli/import/keyboard.py23
-rw-r--r--lib/python/qmk/cli/import/keymap.py23
-rw-r--r--lib/python/qmk/cli/lint.py2
-rwxr-xr-xlib/python/qmk/cli/multibuild.py19
-rw-r--r--lib/python/qmk/constants.py56
-rw-r--r--lib/python/qmk/flashers.py203
-rw-r--r--lib/python/qmk/git.py23
-rw-r--r--lib/python/qmk/importers.py193
-rw-r--r--lib/python/qmk/info.py142
-rw-r--r--lib/python/qmk/json_schema.py6
-rw-r--r--lib/python/qmk/keymap.py4
-rw-r--r--lib/python/qmk/submodules.py26
-rw-r--r--lib/python/qmk/tests/test_cli_commands.py15
m---------lib/vusb0
-rw-r--r--platforms/arm_atsam/platform.mk3
-rw-r--r--platforms/avr/_wait.h38
-rw-r--r--platforms/avr/drivers/i2c_master.c12
-rw-r--r--platforms/avr/drivers/i2c_master.h2
-rw-r--r--platforms/avr/drivers/ps2/ps2_usart.c4
-rw-r--r--platforms/avr/drivers/ssd1306.c329
-rw-r--r--platforms/avr/drivers/ssd1306.h87
-rw-r--r--platforms/avr/platform.mk3
-rw-r--r--platforms/chibios/_pin_defs.h5
-rw-r--r--platforms/chibios/_wait.h6
-rw-r--r--platforms/chibios/boards/GENERIC_PROMICRO_RP2040/board/board.mk9
-rw-r--r--platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/board.h12
-rw-r--r--platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/chconf.h13
-rw-r--r--platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/config.h62
-rw-r--r--platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/mcuconf.h98
-rw-r--r--platforms/chibios/boards/GENERIC_RP_RP2040/board/board.mk9
-rw-r--r--platforms/chibios/boards/GENERIC_RP_RP2040/configs/board.h12
-rw-r--r--platforms/chibios/boards/GENERIC_RP_RP2040/configs/chconf.h13
-rw-r--r--platforms/chibios/boards/GENERIC_RP_RP2040/configs/mcuconf.h98
-rw-r--r--platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/config.h2
-rw-r--r--platforms/chibios/boards/QMK_PM2040/board/board.mk9
-rw-r--r--platforms/chibios/boards/QMK_PM2040/configs/board.h12
-rw-r--r--platforms/chibios/boards/QMK_PM2040/configs/chconf.h13
-rw-r--r--platforms/chibios/boards/QMK_PM2040/configs/config.h21
-rw-r--r--platforms/chibios/boards/QMK_PM2040/configs/halconf.h9
-rw-r--r--platforms/chibios/boards/QMK_PM2040/configs/mcuconf.h98
-rw-r--r--platforms/chibios/boards/STEMCELL/board/board.mk15
-rw-r--r--platforms/chibios/boards/STEMCELL/configs/board.h8
-rw-r--r--platforms/chibios/boards/STEMCELL/configs/chconf.h9
-rw-r--r--platforms/chibios/boards/STEMCELL/configs/config.h29
-rw-r--r--platforms/chibios/boards/STEMCELL/configs/halconf.h11
-rw-r--r--platforms/chibios/boards/STEMCELL/configs/mcuconf.h231
-rw-r--r--platforms/chibios/boards/STM32_F103_STM32DUINO/board/board.c2
-rw-r--r--platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103x6_stm32duino_bootloader.ld23
-rw-r--r--platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103x8_stm32duino_bootloader.ld1
-rw-r--r--platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103xB_stm32duino_bootloader.ld1
-rw-r--r--platforms/chibios/boards/STM32_F103_STM32DUINO/ld/stm32duino_bootloader_common.ld2
-rw-r--r--platforms/chibios/boards/common/ld/RP2040_FLASH_TIMECRIT.ld117
-rw-r--r--platforms/chibios/boards/common/ld/RP2040_rules_data_with_timecrit.ld46
-rw-r--r--platforms/chibios/bootloaders/rp2040.c56
-rw-r--r--platforms/chibios/bootloaders/stm32_dfu.c4
-rw-r--r--platforms/chibios/chibios_config.h50
-rw-r--r--platforms/chibios/converters/promicro_to_bit_c_pro/_pin_defs.h36
-rw-r--r--platforms/chibios/converters/promicro_to_bit_c_pro/converter.mk12
-rw-r--r--platforms/chibios/converters/promicro_to_blok/_pin_defs.h36
-rw-r--r--platforms/chibios/converters/promicro_to_blok/converter.mk9
-rw-r--r--platforms/chibios/converters/promicro_to_bonsai_c4/_pin_defs.h40
-rw-r--r--platforms/chibios/converters/promicro_to_bonsai_c4/converter.mk4
-rw-r--r--platforms/chibios/converters/promicro_to_kb2040/_pin_defs.h36
-rw-r--r--platforms/chibios/converters/promicro_to_kb2040/converter.mk9
-rw-r--r--platforms/chibios/converters/promicro_to_promicro_rp2040/_pin_defs.h36
-rw-r--r--platforms/chibios/converters/promicro_to_promicro_rp2040/converter.mk9
-rw-r--r--platforms/chibios/converters/promicro_to_stemcell/_pin_defs.h51
-rw-r--r--platforms/chibios/converters/promicro_to_stemcell/converter.mk18
-rw-r--r--platforms/chibios/drivers/eeprom/eeprom_stm32.c629
-rw-r--r--platforms/chibios/drivers/eeprom/eeprom_stm32.h (renamed from platforms/chibios/eeprom_stm32.h)0
-rw-r--r--platforms/chibios/drivers/eeprom/eeprom_stm32_defs.h (renamed from platforms/chibios/eeprom_stm32_defs.h)0
-rw-r--r--platforms/chibios/drivers/eeprom/eeprom_teensy.c (renamed from platforms/chibios/eeprom_teensy.c)0
-rwxr-xr-xplatforms/chibios/drivers/eeprom/eeprom_teensy.h (renamed from platforms/chibios/eeprom_teensy.h)0
-rw-r--r--platforms/chibios/drivers/flash/flash_stm32.c (renamed from platforms/chibios/flash_stm32.c)0
-rw-r--r--platforms/chibios/drivers/flash/flash_stm32.h (renamed from platforms/chibios/flash_stm32.h)0
-rw-r--r--platforms/chibios/drivers/i2c_master.c39
-rw-r--r--platforms/chibios/drivers/serial.c18
-rw-r--r--platforms/chibios/drivers/serial_protocol.c164
-rw-r--r--platforms/chibios/drivers/serial_protocol.h49
-rw-r--r--platforms/chibios/drivers/serial_usart.c322
-rw-r--r--platforms/chibios/drivers/serial_usart.h118
-rw-r--r--platforms/chibios/drivers/spi_master.c39
-rw-r--r--platforms/chibios/drivers/vendor/RP/RP2040/serial_vendor.c473
-rw-r--r--platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c189
-rw-r--r--platforms/chibios/drivers/wear_leveling/wear_leveling_efl.c143
-rw-r--r--platforms/chibios/drivers/wear_leveling/wear_leveling_efl_config.h52
-rw-r--r--platforms/chibios/drivers/wear_leveling/wear_leveling_legacy.c59
-rw-r--r--platforms/chibios/drivers/wear_leveling/wear_leveling_legacy_config.h67
-rw-r--r--platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash.c221
-rw-r--r--platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash_config.h32
-rw-r--r--platforms/chibios/drivers/ws2812.c2
-rw-r--r--platforms/chibios/drivers/ws2812_pwm.c59
-rw-r--r--platforms/chibios/drivers/ws2812_spi.c14
-rw-r--r--platforms/chibios/eeprom_stm32.c629
-rw-r--r--platforms/chibios/flash.mk10
-rw-r--r--platforms/chibios/gd32v_compatibility.h2
-rw-r--r--platforms/chibios/platform.mk27
-rw-r--r--platforms/chibios/vendors/RP/RP2040.mk287
-rw-r--r--platforms/chibios/vendors/RP/_pin_defs.h37
-rw-r--r--platforms/chibios/vendors/RP/pico_sdk_shims.c13
-rw-r--r--platforms/chibios/vendors/RP/stage2_bootloaders.c178
-rw-r--r--platforms/eeprom.h2
-rw-r--r--platforms/synchronization_util.h34
-rw-r--r--platforms/test/platform.mk2
-rw-r--r--platforms/test/rules.mk5
-rw-r--r--quantum/action.c15
-rw-r--r--quantum/action.h1
-rw-r--r--quantum/action_code.h1
-rw-r--r--quantum/action_layer.h2
-rw-r--r--quantum/action_tapping.c12
-rw-r--r--quantum/audio/song_list.h6
-rw-r--r--quantum/command.c4
-rw-r--r--quantum/command.h2
-rw-r--r--quantum/debounce.h16
-rw-r--r--quantum/debounce/asym_eager_defer_pk.c11
-rw-r--r--quantum/debounce/none.c11
-rw-r--r--quantum/debounce/sym_defer_g.c12
-rw-r--r--quantum/debounce/sym_defer_pk.c12
-rw-r--r--quantum/debounce/sym_defer_pr.c14
-rw-r--r--quantum/debounce/sym_eager_pk.c7
-rw-r--r--quantum/debounce/sym_eager_pr.c11
-rw-r--r--quantum/debounce/tests/debounce_test_common.cpp6
-rw-r--r--quantum/dynamic_keymap.c38
-rw-r--r--quantum/encoder.c31
-rw-r--r--quantum/keyboard.c147
-rw-r--r--quantum/keyboard.h8
-rw-r--r--quantum/keycode_config.c4
-rw-r--r--quantum/keycode_config.h1
-rw-r--r--quantum/keymap.h7
-rw-r--r--quantum/keymap_common.c8
-rw-r--r--quantum/keymap_extras/keymap_bepo.h2
-rw-r--r--quantum/keymap_extras/keymap_czech.h2
-rw-r--r--quantum/keymap_extras/keymap_japanese.h4
-rw-r--r--quantum/keymap_extras/keymap_korean.h2
-rw-r--r--quantum/keymap_extras/keymap_latvian.h4
-rw-r--r--quantum/keymap_extras/keymap_lithuanian_qwerty.h38
-rw-r--r--quantum/keymap_extras/keymap_norman.h2
-rw-r--r--quantum/keymap_extras/keymap_spanish_dvorak.h4
-rw-r--r--quantum/keymap_extras/keymap_steno.h28
-rw-r--r--quantum/keymap_extras/keymap_turkish_f.h2
-rw-r--r--quantum/keymap_extras/keymap_us_extended.h2
-rw-r--r--quantum/keymap_introspection.c32
-rw-r--r--quantum/keymap_introspection.h15
-rw-r--r--quantum/led.c12
-rw-r--r--quantum/led.h3
-rw-r--r--quantum/led_matrix/led_matrix.c12
-rw-r--r--quantum/led_matrix/led_matrix.h4
-rw-r--r--quantum/led_matrix/led_matrix_drivers.c51
-rw-r--r--quantum/logging/print.c2
-rw-r--r--quantum/logging/print.h68
-rw-r--r--quantum/logging/print.mk17
-rw-r--r--quantum/matrix.c5
-rw-r--r--quantum/matrix_common.c7
-rw-r--r--quantum/mousekey.c35
-rw-r--r--quantum/mousekey.h5
-rw-r--r--quantum/painter/qp.h8
-rw-r--r--quantum/painter/qp_draw_core.c14
-rw-r--r--quantum/painter/rules.mk24
-rw-r--r--quantum/pointing_device.c446
-rw-r--r--quantum/pointing_device.h106
-rw-r--r--quantum/pointing_device/pointing_device.c471
-rw-r--r--quantum/pointing_device/pointing_device.h117
-rw-r--r--quantum/pointing_device/pointing_device_drivers.c368
-rw-r--r--quantum/pointing_device/pointing_device_gestures.c133
-rw-r--r--quantum/pointing_device/pointing_device_gestures.h58
-rw-r--r--quantum/pointing_device_drivers.c295
-rw-r--r--quantum/process_keycode/process_auto_shift.c9
-rw-r--r--quantum/process_keycode/process_auto_shift.h2
-rw-r--r--quantum/process_keycode/process_caps_word.c36
-rw-r--r--quantum/process_keycode/process_combo.c9
-rw-r--r--quantum/process_keycode/process_dynamic_macro.c3
-rw-r--r--quantum/process_keycode/process_dynamic_tapping_term.c2
-rw-r--r--quantum/process_keycode/process_joystick.c2
-rw-r--r--quantum/process_keycode/process_leader.c1
-rw-r--r--quantum/process_keycode/process_magic.c10
-rw-r--r--quantum/process_keycode/process_rgb.c4
-rw-r--r--quantum/process_keycode/process_steno.c312
-rw-r--r--quantum/process_keycode/process_steno.h24
-rw-r--r--quantum/process_keycode/process_tap_dance.c137
-rw-r--r--quantum/process_keycode/process_tap_dance.h33
-rw-r--r--quantum/process_keycode/process_terminal.c330
-rw-r--r--quantum/process_keycode/process_terminal.h24
-rw-r--r--quantum/process_keycode/process_terminal_nop.h22
-rw-r--r--quantum/process_keycode/process_unicode_common.c40
-rw-r--r--quantum/process_keycode/process_unicode_common.h1
-rw-r--r--quantum/quantum.c27
-rw-r--r--quantum/quantum.h12
-rw-r--r--quantum/quantum_keycodes.h28
-rw-r--r--quantum/quantum_keycodes_legacy.h3
-rw-r--r--quantum/rgb_matrix/animations/pixel_fractal_anim.h78
-rw-r--r--quantum/rgb_matrix/animations/pixel_rain_anim.h14
-rw-r--r--quantum/rgb_matrix/animations/raindrops_anim.h15
-rw-r--r--quantum/rgb_matrix/animations/solid_reactive_anim.h3
-rw-r--r--quantum/rgb_matrix/animations/solid_reactive_cross.h3
-rw-r--r--quantum/rgb_matrix/animations/solid_reactive_nexus.h3
-rw-r--r--quantum/rgb_matrix/animations/solid_reactive_simple_anim.h3
-rw-r--r--quantum/rgb_matrix/animations/solid_reactive_wide.h3
-rw-r--r--quantum/rgb_matrix/animations/typing_heatmap_anim.h88
-rw-r--r--quantum/rgb_matrix/rgb_matrix.c23
-rw-r--r--quantum/rgb_matrix/rgb_matrix.h1
-rw-r--r--quantum/send_string.c322
-rw-r--r--quantum/send_string.h54
-rw-r--r--quantum/send_string/send_string.c324
-rw-r--r--quantum/send_string/send_string.h152
-rw-r--r--quantum/send_string/send_string_keycodes.h436
-rw-r--r--quantum/send_string_keycodes.h505
-rw-r--r--quantum/split_common/split_util.c12
-rw-r--r--quantum/split_common/transactions.c18
-rw-r--r--quantum/split_common/transport.h9
-rw-r--r--quantum/via.c33
-rw-r--r--quantum/via.h6
-rw-r--r--quantum/wear_leveling/tests/backing_mocks.cpp154
-rw-r--r--quantum/wear_leveling/tests/backing_mocks.hpp210
-rw-r--r--quantum/wear_leveling/tests/rules.mk66
-rw-r--r--quantum/wear_leveling/tests/testlist.mk6
-rw-r--r--quantum/wear_leveling/tests/wear_leveling_2byte.cpp228
-rw-r--r--quantum/wear_leveling/tests/wear_leveling_2byte_optimized_writes.cpp295
-rw-r--r--quantum/wear_leveling/tests/wear_leveling_4byte.cpp193
-rw-r--r--quantum/wear_leveling/tests/wear_leveling_8byte.cpp178
-rw-r--r--quantum/wear_leveling/tests/wear_leveling_general.cpp204
-rw-r--r--quantum/wear_leveling/wear_leveling.c768
-rw-r--r--quantum/wear_leveling/wear_leveling.h54
-rw-r--r--quantum/wear_leveling/wear_leveling_internal.h151
-rw-r--r--requirements.txt3
-rw-r--r--shell.nix24
-rw-r--r--tests/basic/test_keypress.cpp22
-rw-r--r--tests/caps_word/caps_word_autoshift/test_caps_word_autoshift.cpp64
-rw-r--r--tests/caps_word/caps_word_combo/config.h20
-rw-r--r--tests/caps_word/caps_word_combo/test.mk19
-rw-r--r--tests/caps_word/caps_word_combo/test_caps_word_combo.cpp212
-rw-r--r--tests/caps_word/test_caps_word.cpp159
-rw-r--r--tests/tap_dance/config.h19
-rw-r--r--tests/tap_dance/examples.c199
-rw-r--r--tests/tap_dance/examples.h33
-rw-r--r--tests/tap_dance/test.mk22
-rw-r--r--tests/tap_dance/test_examples.cpp318
-rw-r--r--tests/tap_hold_configurations/default_mod_tap/test_tap_hold.cpp6
-rw-r--r--tests/tap_hold_configurations/permissive_hold/test_tap_hold.cpp12
-rw-r--r--tests/tap_hold_configurations/retro_tapping/test_tap_hold.cpp2
-rw-r--r--tests/tap_hold_configurations/tapping_force_hold/test_tap_hold.cpp2
-rw-r--r--tests/test_common/test_fixture.cpp16
-rw-r--r--tests/test_common/test_fixture.hpp7
-rw-r--r--tmk_core/protocol/arm_atsam/md_rgb_matrix.c2
-rw-r--r--tmk_core/protocol/chibios/usb_main.c136
-rw-r--r--tmk_core/protocol/host.c5
-rw-r--r--tmk_core/protocol/midi/midi.c4
-rw-r--r--tmk_core/protocol/report.h18
-rw-r--r--tmk_core/protocol/serial_soft.c234
-rw-r--r--tmk_core/protocol/usb_descriptor.c18
-rw-r--r--tmk_core/protocol/usb_descriptor.h15
-rw-r--r--tmk_core/protocol/vusb/vusb.c16
-rw-r--r--users/333fred/333fred.c2
-rw-r--r--users/333fred/rgb.c4
-rw-r--r--users/bbaserdem/.gitignore2
-rw-r--r--users/bbaserdem/README.md51
-rw-r--r--users/bbaserdem/bb-audio.c82
-rw-r--r--users/bbaserdem/bb-audio.h28
-rw-r--r--users/bbaserdem/bb-backlight.c30
-rw-r--r--users/bbaserdem/bb-backlight.h23
-rw-r--r--users/bbaserdem/bb-encoder.c514
-rw-r--r--users/bbaserdem/bb-encoder.h29
-rw-r--r--users/bbaserdem/bb-macro.c156
-rw-r--r--users/bbaserdem/bb-macro.h113
-rw-r--r--users/bbaserdem/bb-oled-extra.c796
-rw-r--r--users/bbaserdem/bb-oled-extra.h25
-rw-r--r--users/bbaserdem/bb-oled.c216
-rw-r--r--users/bbaserdem/bb-oled.h32
-rw-r--r--users/bbaserdem/bb-rgb.c130
-rw-r--r--users/bbaserdem/bb-rgb.h28
-rw-r--r--users/bbaserdem/bb-underglow.c116
-rw-r--r--users/bbaserdem/bb-underglow.h28
-rw-r--r--users/bbaserdem/bbaserdem.c919
-rw-r--r--users/bbaserdem/bbaserdem.h767
-rw-r--r--users/bbaserdem/config.h137
-rw-r--r--users/bbaserdem/keymap-bitmaps/.gitignore4
-rwxr-xr-xusers/bbaserdem/keymap-bitmaps/cropBmp38
-rw-r--r--users/bbaserdem/readme.md131
-rw-r--r--users/bbaserdem/rules.mk100
-rw-r--r--users/bcat/rules.mk1
-rw-r--r--users/billypython/billypython.c2
-rw-r--r--users/billypython/billypython.h2
-rw-r--r--users/charlesrocket/apl.c183
-rw-r--r--users/charlesrocket/rules.mk3
-rw-r--r--users/csc027/custom_rgb.c6
-rw-r--r--users/csc027/defines.h28
-rw-r--r--users/curry/config.h4
-rw-r--r--users/davidkristoffersen/davidkristoffersen.h18
-rw-r--r--users/davidkristoffersen/hardware/readme.md3
-rw-r--r--users/davidkristoffersen/hardware/split_space.c23
-rw-r--r--users/davidkristoffersen/hardware/split_space.h16
-rw-r--r--users/davidkristoffersen/macros/debug.c36
-rw-r--r--users/davidkristoffersen/macros/language.c40
-rw-r--r--users/davidkristoffersen/macros/macros.c16
-rw-r--r--users/davidkristoffersen/macros/macros.h23
-rw-r--r--users/davidkristoffersen/macros/norwegian.h19
-rw-r--r--users/davidkristoffersen/macros/readme.md3
-rw-r--r--users/davidkristoffersen/post_config.h8
-rw-r--r--users/davidkristoffersen/readme.md3
-rw-r--r--users/davidkristoffersen/rules.mk12
-rw-r--r--users/davidkristoffersen/util/functions.c111
-rw-r--r--users/davidkristoffersen/util/functions.h32
-rw-r--r--users/davidkristoffersen/util/readme.md3
-rw-r--r--users/dhertz/dhertz.c3
-rw-r--r--users/doogle999/doogle999.c6
-rw-r--r--users/drashna/autocorrect_data.h90
-rw-r--r--users/drashna/bootmagic_better.c56
-rw-r--r--users/drashna/callbacks.c67
-rw-r--r--users/drashna/callbacks.h1
-rw-r--r--users/drashna/config.h262
-rw-r--r--users/drashna/drashna.c95
-rw-r--r--users/drashna/drashna.h1
-rw-r--r--users/drashna/keyrecords/autocorrection/autocorrection.c24
-rw-r--r--users/drashna/keyrecords/autocorrection/autocorrection_data.h1
-rw-r--r--users/drashna/keyrecords/process_records.c41
-rw-r--r--users/drashna/keyrecords/process_records.h99
-rw-r--r--users/drashna/keyrecords/tap_dances.c2
-rw-r--r--users/drashna/keyrecords/tap_dances.h2
-rw-r--r--users/drashna/keyrecords/tapping.c16
-rw-r--r--users/drashna/keyrecords/unicode.c135
-rw-r--r--users/drashna/keyrecords/unicode.h1
-rw-r--r--users/drashna/oled/oled_config.h63
-rw-r--r--users/drashna/oled/oled_stuff.c269
-rw-r--r--users/drashna/oled/oled_stuff.h193
-rw-r--r--users/drashna/oled/sh110x.c58
-rw-r--r--users/drashna/pointing/pointing.c6
-rw-r--r--users/drashna/post_config.h20
-rw-r--r--users/drashna/rgb/rgb_matrix_config.h107
-rw-r--r--users/drashna/rgb/rgb_matrix_stuff.c60
-rw-r--r--users/drashna/rgb/rgb_stuff.c92
-rw-r--r--users/drashna/rgb/rgblight_config.h8
-rw-r--r--users/drashna/rules.mk18
-rw-r--r--users/drashna/split/split_config.h21
-rw-r--r--users/drashna/split/transport_sync.c26
-rw-r--r--users/drashna/split/transport_sync.h16
-rw-r--r--users/dshields/dshields.h8
-rw-r--r--users/edvorakjp/edvorakjp.c2
-rw-r--r--users/edvorakjp/edvorakjp.h2
-rw-r--r--users/edvorakjp/edvorakjp_tap_dance.c13
-rwxr-xr-xusers/ericgebhart/ericgebhart.c2
-rwxr-xr-xusers/ericgebhart/tap_dances.c4
-rw-r--r--users/gourdo1/autocorrect/autocorrection.c182
-rw-r--r--users/gourdo1/autocorrect/autocorrection.h40
-rw-r--r--users/gourdo1/autocorrect/autocorrection_data.h722
-rw-r--r--users/gourdo1/autocorrect/autocorrection_data.h (large)722
-rw-r--r--users/gourdo1/autocorrect/autocorrection_data.h (small)152
-rw-r--r--users/gourdo1/autocorrect/autocorrection_dict.txt473
-rw-r--r--users/gourdo1/autocorrect/make_autocorrection_data.py303
-rw-r--r--users/gourdo1/custom_double_taps.h101
-rw-r--r--users/gourdo1/gourdo1.c599
-rw-r--r--users/gourdo1/gourdo1.h74
-rw-r--r--users/gourdo1/gourdo1_encoder.c4
-rw-r--r--users/gourdo1/rules.mk2
-rw-r--r--users/hvp/config.h3
-rwxr-xr-xusers/ishtob/config.h1
-rw-r--r--users/issmirnov/config.h3
-rw-r--r--users/jonavin/jonavin.h2
-rw-r--r--users/kuchosauronad0/config.h4
-rw-r--r--users/kuchosauronad0/kuchosauronad0.c6
-rw-r--r--users/kuchosauronad0/kuchosauronad0.h4
-rw-r--r--users/kuchosauronad0/rgblight_user.c20
-rw-r--r--users/kuchosauronad0/template.c4
-rw-r--r--users/manna-harbour_miryoku/config.h14
-rw-r--r--users/manna-harbour_miryoku/custom_config.h7
-rw-r--r--users/manna-harbour_miryoku/custom_rules.mk3
-rw-r--r--users/manna-harbour_miryoku/manna-harbour_miryoku.c253
-rw-r--r--users/manna-harbour_miryoku/manna-harbour_miryoku.h54
-rw-r--r--users/manna-harbour_miryoku/miryoku_babel/miryoku_alternatives.h267
-rw-r--r--users/manna-harbour_miryoku/miryoku_babel/miryoku_layer.h139
-rw-r--r--users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_names.h9
-rw-r--r--users/manna-harbour_miryoku/post_rules.mk37
-rw-r--r--users/manna-harbour_miryoku/readme.org2253
-rw-r--r--users/manna-harbour_miryoku/rules.mk30
-rw-r--r--users/miles2go/config.h4
-rw-r--r--users/mnil/config.h1
-rw-r--r--users/mnil/mnil.c4
-rw-r--r--users/mtdjr/mtdjr.c2
-rw-r--r--users/muppetjones/.clang-format26
-rw-r--r--users/muppetjones/config.h44
-rw-r--r--users/muppetjones/features/casemodes.c247
-rw-r--r--users/muppetjones/features/casemodes.h47
-rw-r--r--users/muppetjones/features/combos.c36
-rw-r--r--users/muppetjones/features/combos.h17
-rw-r--r--users/muppetjones/features/dancelayers.c98
-rw-r--r--users/muppetjones/features/dancelayers.h82
-rw-r--r--users/muppetjones/features/etchamouse.c101
-rw-r--r--users/muppetjones/features/etchamouse.h59
-rw-r--r--users/muppetjones/features/rgblayers.c69
-rw-r--r--users/muppetjones/features/rgblayers.h22
-rw-r--r--users/muppetjones/muppetjones.c57
-rw-r--r--users/muppetjones/muppetjones.h56
-rw-r--r--users/muppetjones/readme.md23
-rw-r--r--users/muppetjones/readme/dancelayers.md73
-rw-r--r--users/muppetjones/readme/etchamouse.md69
-rw-r--r--users/muppetjones/readme/rgblayers.md60
-rw-r--r--users/muppetjones/readme/tapmods.md25
-rw-r--r--users/muppetjones/readme/wrappers.md153
-rw-r--r--users/muppetjones/rules.mk25
-rw-r--r--users/muppetjones/tapmods.h77
-rw-r--r--users/muppetjones/wrappers.h249
-rw-r--r--users/ninjonas/config.h3
-rw-r--r--users/ninjonas/oled.c4
-rw-r--r--users/ninjonas/tap_dances.c16
-rw-r--r--users/noroadsleft/noroadsleft.c8
-rw-r--r--users/noroadsleft/noroadsleft.h3
-rw-r--r--users/noroadsleft/readme.md29
-rw-r--r--users/ollyhayes/ollyhayes.c153
-rw-r--r--users/ollyhayes/ollyhayes.h41
-rw-r--r--users/ollyhayes/rules.mk1
-rw-r--r--users/pcewing/README.md85
-rw-r--r--users/pcewing/key_repeater.c168
-rw-r--r--users/pcewing/key_repeater.h68
-rw-r--r--users/pcewing/rules.mk1
-rw-r--r--users/pvinis/pvinis.c2
-rw-r--r--users/pvinis/pvinis.h2
-rw-r--r--users/romus/romus.c4
-rw-r--r--users/sigma/sigma.c4
-rw-r--r--users/spidey3/config.h59
-rw-r--r--users/spidey3/init.c8
-rw-r--r--users/spidey3/layer_rgb.c180
-rw-r--r--users/spidey3/rules.mk1
-rw-r--r--users/spidey3/spidey3.c98
-rw-r--r--users/spidey3/spidey3.h18
-rw-r--r--users/spidey3/unicode.c3
-rw-r--r--users/spidey3/unicode.h3
-rw-r--r--users/stanrc85/config.h8
-rw-r--r--users/stanrc85/layer_rgb.c2
-rw-r--r--users/stanrc85/rules.mk10
-rw-r--r--users/talljoe/config.h4
-rw-r--r--users/talljoe/talljoe.c2
-rw-r--r--users/tominabox1/config.h2
-rw-r--r--users/tominabox1/tominabox1.c4
-rw-r--r--users/turbomech/backupturbomech.c6
-rw-r--r--users/xulkal/custom_oled.c2
-rw-r--r--users/yet-another-developer/config.h4
-rw-r--r--users/zer09/config.h4
-rw-r--r--users/zer09/zer09.c2
-rwxr-xr-xutil/install/fedora.sh2
-rwxr-xr-xutil/install/msys2.sh13
-rw-r--r--util/nix/poetry.lock592
-rw-r--r--util/nix/pyproject.toml25
-rw-r--r--util/nix/sources.json6
-rwxr-xr-xutil/size_regression.sh9
-rw-r--r--util/udev/50-qmk.rules9
-rwxr-xr-xutil/uf2conv.py3
-rwxr-xr-xutil/update_chibios_mirror.sh2
10957 files changed, 204695 insertions, 60832 deletions
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000000..562d671c8e
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,9 @@
+version: 2
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ labels: CI
+ reviewers:
+ - "qmk/collaborators"
+ schedule:
+ interval: "daily"
diff --git a/.github/workflows/api.yml b/.github/workflows/api.yml
index f0c49baf60..dd3fbdaa92 100644
--- a/.github/workflows/api.yml
+++ b/.github/workflows/api.yml
@@ -7,6 +7,9 @@ on:
paths:
- 'keyboards/**'
- 'layouts/community/**'
+ - 'lib/python/**'
+ - 'data/**'
+ - '.github/workflows/api.yml'
workflow_dispatch:
jobs:
@@ -18,7 +21,7 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
fetch-depth: 1
persist-credentials: false
diff --git a/.github/workflows/auto_tag.yml b/.github/workflows/auto_tag.yml
index 29e85c41ca..6205dbe11c 100644
--- a/.github/workflows/auto_tag.yml
+++ b/.github/workflows/auto_tag.yml
@@ -22,12 +22,12 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Bump version and push tag
- uses: anothrNick/github-tag-action@1.26.0
+ uses: anothrNick/github-tag-action@1.46.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEFAULT_BUMP: 'patch'
diff --git a/.github/workflows/cli.yml b/.github/workflows/cli.yml
index 2ea810958b..72f2ea293a 100644
--- a/.github/workflows/cli.yml
+++ b/.github/workflows/cli.yml
@@ -18,7 +18,7 @@ jobs:
container: qmkfm/qmk_cli
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
submodules: recursive
- name: Install dependencies
diff --git a/.github/workflows/develop_api.yml b/.github/workflows/develop_api.yml
index 44d259cfac..194305e730 100644
--- a/.github/workflows/develop_api.yml
+++ b/.github/workflows/develop_api.yml
@@ -7,6 +7,9 @@ on:
paths:
- 'keyboards/**'
- 'layouts/community/**'
+ - 'lib/python/**'
+ - 'data/**'
+ - '.github/workflows/develop_api.yml'
workflow_dispatch:
jobs:
@@ -18,7 +21,7 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
fetch-depth: 1
persist-credentials: false
diff --git a/.github/workflows/develop_update.yml b/.github/workflows/develop_update.yml
index 90159406a6..18ca84162b 100644
--- a/.github/workflows/develop_update.yml
+++ b/.github/workflows/develop_update.yml
@@ -12,11 +12,15 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
fetch-depth: 0
+ - name: Disable automatic eol conversion
+ run: |
+ echo "* -text" > .git/info/attributes
+
- name: Checkout develop
run: |
git fetch origin master develop
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 1ee3ae3964..691770a5af 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -20,7 +20,7 @@ jobs:
if: github.repository == 'qmk/qmk_firmware'
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
fetch-depth: 1
@@ -34,7 +34,7 @@ jobs:
qmk --verbose generate-docs
- name: Deploy
- uses: JamesIves/github-pages-deploy-action@3.7.1
+ uses: JamesIves/github-pages-deploy-action@v4.4.0
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BASE_BRANCH: master
diff --git a/.github/workflows/feature_branch_update.yml b/.github/workflows/feature_branch_update.yml
index 98d3616ad1..90cd85e355 100644
--- a/.github/workflows/feature_branch_update.yml
+++ b/.github/workflows/feature_branch_update.yml
@@ -17,11 +17,15 @@ jobs:
- xap
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
fetch-depth: 0
+ - name: Disable automatic eol conversion
+ run: |
+ echo "* -text" > .git/info/attributes
+
- name: Checkout branch
run: |
git fetch origin develop ${{ matrix.branch }}
diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml
index ba0a86aa78..b6ce4063fe 100644
--- a/.github/workflows/format.yml
+++ b/.github/workflows/format.yml
@@ -19,7 +19,7 @@ jobs:
container: qmkfm/qmk_cli
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
fetch-depth: 0
diff --git a/.github/workflows/format_push.yml b/.github/workflows/format_push.yml
index 4b51213b36..910bba9a4e 100644
--- a/.github/workflows/format_push.yml
+++ b/.github/workflows/format_push.yml
@@ -13,10 +13,14 @@ jobs:
container: qmkfm/qmk_cli
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
fetch-depth: 0
+ - name: Disable automatic eol conversion
+ run: |
+ echo "* -text" > .git/info/attributes
+
- name: Install dependencies
run: |
pip3 install -r requirements-dev.txt
@@ -37,7 +41,7 @@ jobs:
git config user.email 'hello@qmk.fm'
- name: Create Pull Request
- uses: peter-evans/create-pull-request@v3
+ uses: peter-evans/create-pull-request@v4
if: ${{ github.repository == 'qmk/qmk_firmware'}}
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index ab694ee668..5b8a45f26b 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -12,7 +12,7 @@ jobs:
container: qmkfm/qmk_cli
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
fetch-depth: 0
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index b15f301865..297af8e19c 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -12,7 +12,7 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- - uses: actions/stale@v5
+ - uses: actions/stale@v6
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/unit_test.yml b/.github/workflows/unit_test.yml
index 6afe29e04f..c8373441ff 100644
--- a/.github/workflows/unit_test.yml
+++ b/.github/workflows/unit_test.yml
@@ -23,7 +23,7 @@ jobs:
container: qmkfm/qmk_cli
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
submodules: recursive
- name: Install dependencies
diff --git a/.gitignore b/.gitignore
index e9bf3c2205..51b0a38e0a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,10 @@
.DS_Store
._*
+# Merge files
+*.orig
+*.rej
+
# Build artifacts
.clang_complete
.build/
@@ -27,16 +31,11 @@ quantum/version.h
*.uf2
# Old-style QMK Makefiles
-/keyboards/*/Makefile
-/keyboards/*/*/Makefile
-/keyboards/*/*/*/Makefile
-/keyboards/*/*/*/*/Makefile
-/keyboards/*/*/*/*/*/Makefile
-/keyboards/*/keymaps/Makefile
-/keyboards/*/*/keymaps/Makefile
-/keyboards/*/*/*/keymaps/Makefile
-/keyboards/*/*/*/*/keymaps/Makefile
-/keyboards/*/*/*/*/*/keymaps/Makefile
+/keyboards/**/Makefile
+
+# kbfirmware....
+/keyboards/**/kb.h
+/keyboards/**/kb.c
# Eclipse/PyCharm/Other IDE Settings
*.iml
diff --git a/.gitmodules b/.gitmodules
index 681693a5a4..48c7035afa 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -18,3 +18,6 @@
[submodule "lib/printf"]
path = lib/printf
url = https://github.com/qmk/printf
+[submodule "lib/pico-sdk"]
+ path = lib/pico-sdk
+ url = https://github.com/qmk/pico-sdk.git
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 5fedaf477b..76117e52e0 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -6,7 +6,8 @@
"files.exclude": {
"**/.build": true,
"**/*.hex": true,
- "**/*.bin": true
+ "**/*.bin": true,
+ "**/*.uf2": true
},
"files.associations": {
"*.h": "c",
diff --git a/Makefile b/Makefile
index 4c2e6a04dc..a418576c07 100644
--- a/Makefile
+++ b/Makefile
@@ -401,6 +401,7 @@ ifndef SKIP_GIT
if [ ! -e lib/lufa ]; then git submodule sync lib/lufa && git submodule update --depth 50 --init lib/lufa; fi
if [ ! -e lib/vusb ]; then git submodule sync lib/vusb && git submodule update --depth 50 --init lib/vusb; fi
if [ ! -e lib/printf ]; then git submodule sync lib/printf && git submodule update --depth 50 --init lib/printf; fi
+ if [ ! -e lib/pico-sdk ]; then git submodule sync lib/pico-sdk && git submodule update --depth 50 --init lib/pico-sdk; fi
git submodule status --recursive 2>/dev/null | \
while IFS= read -r x; do \
case "$$x" in \
@@ -428,9 +429,15 @@ lib/%:
.PHONY: git-submodule
git-submodule:
+ [ -e lib/ugfx ] && rm -rf lib/ugfx || true
+ [ -e lib/pico-sdk ] && rm -rf lib/pico-sdk || true
+ [ -e lib/chibios-contrib/ext/mcux-sdk ] && rm -rf lib/chibios-contrib/ext/mcux-sdk || true
git submodule sync --recursive
git submodule update --init --recursive --progress
+.PHONY: git-submodules
+git-submodules: git-submodule
+
.PHONY: list-keyboards
list-keyboards:
util/list_keyboards.sh | sort -u | tr '\n' ' '
diff --git a/builddefs/bootloader.mk b/builddefs/bootloader.mk
index eba8e280e4..9f55536423 100644
--- a/builddefs/bootloader.mk
+++ b/builddefs/bootloader.mk
@@ -105,8 +105,8 @@ ifeq ($(strip $(BOOTLOADER)), halfkay)
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 1024
endif
- # Teensy LC, 3.x
- ifneq (,$(filter $(MCU_ORIG), MKL26Z64 MK20DX128 MK20DX256 MK66FX1M0))
+ # Teensy LC, 3.0, 3.1/2, 3.5, 3.6
+ ifneq (,$(filter $(MCU_ORIG), MKL26Z64 MK20DX128 MK20DX256 MK64FX512 MK66FX1M0))
FIRMWARE_FORMAT = hex
endif
endif
@@ -199,6 +199,11 @@ endif
ifeq ($(strip $(BOOTLOADER)), tinyuf2)
OPT_DEFS += -DBOOTLOADER_TINYUF2
BOOTLOADER_TYPE = tinyuf2
+ FIRMWARE_FORMAT = uf2
+endif
+ifeq ($(strip $(BOOTLOADER)), rp2040)
+ OPT_DEFS += -DBOOTLOADER_RP2040
+ BOOTLOADER_TYPE = rp2040
endif
ifeq ($(strip $(BOOTLOADER)), halfkay)
OPT_DEFS += -DBOOTLOADER_HALFKAY
diff --git a/builddefs/build_keyboard.mk b/builddefs/build_keyboard.mk
index dc86b232df..fe95dcaf15 100644
--- a/builddefs/build_keyboard.mk
+++ b/builddefs/build_keyboard.mk
@@ -13,6 +13,14 @@ endif
include paths.mk
include $(BUILDDEFS_PATH)/message.mk
+# Helper to add defines with a 'QMK_' prefix
+define add_qmk_prefix_defs
+ ifdef $1
+ # Need to cater for 'STM32L4xx+'
+ OPT_DEFS += -DQMK_$(2)="$($1)" -DQMK_$(2)_$(shell echo $($1) | sed -e 's@+@Plus@g' -e 's@[^a-zA-Z0-9]@_@g' | tr '[:lower:]' '[:upper:]')
+ endif
+endef
+
# Set the qmk cli to use
QMK_BIN ?= qmk
@@ -390,10 +398,18 @@ ifneq ("$(KEYMAP_H)","")
CONFIG_H += $(KEYMAP_H)
endif
+OPT_DEFS += -DKEYMAP_C=\"$(KEYMAP_C)\"
+
+# If a keymap or userspace places their keymap array in another file instead, allow for it to be included
+# !!NOTE!! -- For this to work, the source file cannot be part of $(SRC), so users should not add it via `SRC += <file>`
+ifneq ($(strip $(INTROSPECTION_KEYMAP_C)),)
+OPT_DEFS += -DINTROSPECTION_KEYMAP_C=\"$(strip $(INTROSPECTION_KEYMAP_C))\"
+endif
+
# project specific files
SRC += \
$(KEYBOARD_SRC) \
- $(KEYMAP_C) \
+ $(QUANTUM_DIR)/keymap_introspection.c \
$(QUANTUM_SRC) \
$(QUANTUM_DIR)/main.c \
@@ -436,6 +452,14 @@ else
include $(TMK_PATH)/protocol/$(PLATFORM_KEY).mk
endif
+# Setup definitions based on the selected MCU
+$(eval $(call add_qmk_prefix_defs,MCU_ORIG,MCU))
+$(eval $(call add_qmk_prefix_defs,MCU_ARCH,MCU_ARCH))
+$(eval $(call add_qmk_prefix_defs,MCU_PORT_NAME,MCU_PORT_NAME))
+$(eval $(call add_qmk_prefix_defs,MCU_FAMILY,MCU_FAMILY))
+$(eval $(call add_qmk_prefix_defs,MCU_SERIES,MCU_SERIES))
+$(eval $(call add_qmk_prefix_defs,BOARD,BOARD))
+
# TODO: remove this bodge?
PROJECT_DEFS := $(OPT_DEFS)
PROJECT_INC := $(VPATH) $(EXTRAINCDIRS) $(KEYBOARD_PATHS)
@@ -469,6 +493,19 @@ check-size: build
check-md5: build
objs-size: build
+ifeq ($(strip $(TOP_SYMBOLS)),yes)
+all: top-symbols
+check-size: top-symbols
+top-symbols: build
+ echo "###########################################"
+ echo "# Highest flash usage:"
+ $(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [t] ' | head -n10 | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
+ echo "###########################################"
+ echo "# Highest RAM usage:"
+ $(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [dbv] ' | head -n10 | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
+ echo "###########################################"
+endif
+
include $(BUILDDEFS_PATH)/show_options.mk
include $(BUILDDEFS_PATH)/common_rules.mk
diff --git a/builddefs/build_test.mk b/builddefs/build_test.mk
index 5ad33b19c5..64db99fed9 100644
--- a/builddefs/build_test.mk
+++ b/builddefs/build_test.mk
@@ -38,11 +38,11 @@ CREATE_MAP := no
VPATH += \
$(LIB_PATH)/googletest \
$(LIB_PATH)/googlemock \
- $(LIB_PATH)/printf
+ $(COMMON_VPATH) \
+ $(TEST_PATH)
all: elf
-VPATH += $(COMMON_VPATH)
PLATFORM:=TEST
PLATFORM_KEY:=test
BOOTLOADER_TYPE:=none
@@ -63,6 +63,8 @@ include $(TMK_PATH)/protocol.mk
include $(QUANTUM_PATH)/debounce/tests/rules.mk
include $(QUANTUM_PATH)/encoder/tests/rules.mk
include $(QUANTUM_PATH)/sequencer/tests/rules.mk
+include $(QUANTUM_PATH)/wear_leveling/tests/rules.mk
+include $(QUANTUM_PATH)/logging/print.mk
include $(PLATFORM_PATH)/test/rules.mk
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
include $(BUILDDEFS_PATH)/build_full_test.mk
@@ -70,7 +72,6 @@ endif
$(TEST)_SRC += \
tests/test_common/main.c \
- $(LIB_PATH)/printf/printf.c \
$(QUANTUM_PATH)/logging/print.c
$(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC)
diff --git a/builddefs/common_features.mk b/builddefs/common_features.mk
index c976b8296d..a23b5e82b9 100644
--- a/builddefs/common_features.mk
+++ b/builddefs/common_features.mk
@@ -15,7 +15,6 @@
QUANTUM_SRC += \
$(QUANTUM_DIR)/quantum.c \
- $(QUANTUM_DIR)/send_string.c \
$(QUANTUM_DIR)/bitwise.c \
$(QUANTUM_DIR)/led.c \
$(QUANTUM_DIR)/action.c \
@@ -92,10 +91,29 @@ ifeq ($(MUSIC_ENABLE), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_music.c
endif
+VALID_STENO_PROTOCOL_TYPES := geminipr txbolt all
+STENO_PROTOCOL ?= all
ifeq ($(strip $(STENO_ENABLE)), yes)
- OPT_DEFS += -DSTENO_ENABLE
- VIRTSER_ENABLE ?= yes
- SRC += $(QUANTUM_DIR)/process_keycode/process_steno.c
+ ifeq ($(filter $(STENO_PROTOCOL),$(VALID_STENO_PROTOCOL_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid STENO_PROTOCOL,STENO_PROTOCOL="$(STENO_PROTOCOL)" is not a valid stenography protocol)
+ else
+ OPT_DEFS += -DSTENO_ENABLE
+ VIRTSER_ENABLE ?= yes
+
+ ifeq ($(strip $(STENO_PROTOCOL)), geminipr)
+ OPT_DEFS += -DSTENO_ENABLE_GEMINI
+ endif
+ ifeq ($(strip $(STENO_PROTOCOL)), txbolt)
+ OPT_DEFS += -DSTENO_ENABLE_BOLT
+ endif
+ ifeq ($(strip $(STENO_PROTOCOL)), all)
+ OPT_DEFS += -DSTENO_ENABLE_ALL
+ OPT_DEFS += -DSTENO_ENABLE_GEMINI
+ OPT_DEFS += -DSTENO_ENABLE_BOLT
+ endif
+
+ SRC += $(QUANTUM_DIR)/process_keycode/process_steno.c
+ endif
endif
ifeq ($(strip $(VIRTSER_ENABLE)), yes)
@@ -108,15 +126,16 @@ ifeq ($(strip $(MOUSEKEY_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/mousekey.c
endif
-VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick cirque_pinnacle_i2c cirque_pinnacle_spi pmw3360 pmw3389 pimoroni_trackball custom
+VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick cirque_pinnacle_i2c cirque_pinnacle_spi paw3204 pmw3360 pmw3389 pimoroni_trackball custom
ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
ifeq ($(filter $(POINTING_DEVICE_DRIVER),$(VALID_POINTING_DEVICE_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid POINTING_DEVICE_DRIVER,POINTING_DEVICE_DRIVER="$(POINTING_DEVICE_DRIVER)" is not a valid pointing device type)
else
OPT_DEFS += -DPOINTING_DEVICE_ENABLE
MOUSE_ENABLE := yes
- SRC += $(QUANTUM_DIR)/pointing_device.c
- SRC += $(QUANTUM_DIR)/pointing_device_drivers.c
+ VPATH += $(QUANTUM_DIR)/pointing_device
+ SRC += $(QUANTUM_DIR)/pointing_device/pointing_device.c
+ SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_drivers.c
ifneq ($(strip $(POINTING_DEVICE_DRIVER)), custom)
SRC += drivers/sensors/$(strip $(POINTING_DEVICE_DRIVER)).c
OPT_DEFS += -DPOINTING_DEVICE_DRIVER_$(strip $(shell echo $(POINTING_DEVICE_DRIVER) | tr '[:lower:]' '[:upper:]'))
@@ -131,19 +150,21 @@ ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), cirque_pinnacle_i2c)
OPT_DEFS += -DSTM32_I2C -DHAL_USE_I2C=TRUE
SRC += drivers/sensors/cirque_pinnacle.c
+ SRC += drivers/sensors/cirque_pinnacle_gestures.c
+ SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_gestures.c
QUANTUM_LIB_SRC += i2c_master.c
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), cirque_pinnacle_spi)
OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
SRC += drivers/sensors/cirque_pinnacle.c
+ SRC += drivers/sensors/cirque_pinnacle_gestures.c
+ SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_gestures.c
QUANTUM_LIB_SRC += spi_master.c
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pimoroni_trackball)
OPT_DEFS += -DSTM32_SPI -DHAL_USE_I2C=TRUE
QUANTUM_LIB_SRC += i2c_master.c
- else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pmw3360)
- OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
- QUANTUM_LIB_SRC += spi_master.c
- else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pmw3389)
+ else ifneq ($(filter $(strip $(POINTING_DEVICE_DRIVER)),pmw3360 pmw3389),)
OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
+ SRC += drivers/sensors/pmw33xx_common.c
QUANTUM_LIB_SRC += spi_master.c
endif
endif
@@ -154,33 +175,36 @@ ifeq ($(strip $(QUANTUM_PAINTER_ENABLE)), yes)
include $(QUANTUM_DIR)/painter/rules.mk
endif
-VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi
+VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi wear_leveling
EEPROM_DRIVER ?= vendor
ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),)
$(call CATASTROPHIC_ERROR,Invalid EEPROM_DRIVER,EEPROM_DRIVER="$(EEPROM_DRIVER)" is not a valid EEPROM driver)
else
OPT_DEFS += -DEEPROM_ENABLE
+ COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/eeprom
+ COMMON_VPATH += $(DRIVER_PATH)/eeprom
+ COMMON_VPATH += $(PLATFORM_COMMON_DIR)
ifeq ($(strip $(EEPROM_DRIVER)), custom)
# Custom EEPROM implementation -- only needs to implement init/erase/read_block/write_block
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_CUSTOM
- COMMON_VPATH += $(DRIVER_PATH)/eeprom
SRC += eeprom_driver.c
+ else ifeq ($(strip $(EEPROM_DRIVER)), wear_leveling)
+ # Wear-leveling EEPROM implementation
+ OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
+ SRC += eeprom_driver.c eeprom_wear_leveling.c
else ifeq ($(strip $(EEPROM_DRIVER)), i2c)
# External I2C EEPROM implementation
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_I2C
- COMMON_VPATH += $(DRIVER_PATH)/eeprom
QUANTUM_LIB_SRC += i2c_master.c
SRC += eeprom_driver.c eeprom_i2c.c
else ifeq ($(strip $(EEPROM_DRIVER)), spi)
# External SPI EEPROM implementation
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_SPI
- COMMON_VPATH += $(DRIVER_PATH)/eeprom
QUANTUM_LIB_SRC += spi_master.c
SRC += eeprom_driver.c eeprom_spi.c
else ifeq ($(strip $(EEPROM_DRIVER)), transient)
# Transient EEPROM implementation -- no data storage but provides runtime area for it
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
- COMMON_VPATH += $(DRIVER_PATH)/eeprom
SRC += eeprom_driver.c eeprom_transient.c
else ifeq ($(strip $(EEPROM_DRIVER)), vendor)
# Vendor-implemented EEPROM
@@ -191,17 +215,18 @@ else
ifneq ($(filter STM32F3xx_% STM32F1xx_% %_STM32F401xC %_STM32F401xE %_STM32F405xG %_STM32F411xE %_STM32F072xB %_STM32F042x6 %_GD32VF103xB %_GD32VF103x8, $(MCU_SERIES)_$(MCU_LDSCRIPT)),)
# Emulated EEPROM
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_FLASH_EMULATED
- COMMON_VPATH += $(DRIVER_PATH)/eeprom
- SRC += eeprom_driver.c
- SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
- SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
+ COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
+ COMMON_VPATH += $(DRIVER_PATH)/flash
+ SRC += eeprom_driver.c eeprom_stm32.c flash_stm32.c
else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
# True EEPROM on STM32L0xx, L1xx
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_L0_L1
- COMMON_VPATH += $(DRIVER_PATH)/eeprom
- COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/eeprom
- SRC += eeprom_driver.c
- SRC += eeprom_stm32_L0_L1.c
+ SRC += eeprom_driver.c eeprom_stm32_L0_L1.c
+ else ifneq ($(filter $(MCU_SERIES),RP2040),)
+ # Wear-leveling EEPROM implementation, backed by RP2040 flash
+ OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_WEAR_LEVELING
+ SRC += eeprom_driver.c eeprom_wear_leveling.c
+ WEAR_LEVELING_DRIVER = rp2040_flash
else ifneq ($(filter $(MCU_SERIES),KL2x K20x),)
# Teensy EEPROM implementations
OPT_DEFS += -DEEPROM_TEENSY
@@ -209,32 +234,64 @@ else
else
# Fall back to transient, i.e. non-persistent
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
- COMMON_VPATH += $(DRIVER_PATH)/eeprom
SRC += eeprom_driver.c eeprom_transient.c
endif
else ifeq ($(PLATFORM),ARM_ATSAM)
# arm_atsam EEPROM
OPT_DEFS += -DEEPROM_SAMD
- SRC += $(PLATFORM_COMMON_DIR)/eeprom_samd.c
+ SRC += eeprom_samd.c
else ifeq ($(PLATFORM),TEST)
# Test harness "EEPROM"
OPT_DEFS += -DEEPROM_TEST_HARNESS
- SRC += $(PLATFORM_COMMON_DIR)/eeprom.c
+ SRC += eeprom.c
+ endif
+ endif
+endif
+
+VALID_WEAR_LEVELING_DRIVER_TYPES := custom embedded_flash spi_flash rp2040_flash legacy
+WEAR_LEVELING_DRIVER ?= none
+ifneq ($(strip $(WEAR_LEVELING_DRIVER)),none)
+ ifeq ($(filter $(WEAR_LEVELING_DRIVER),$(VALID_WEAR_LEVELING_DRIVER_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid WEAR_LEVELING_DRIVER,WEAR_LEVELING_DRIVER="$(WEAR_LEVELING_DRIVER)" is not a valid wear leveling driver)
+ else
+ FNV_ENABLE := yes
+ OPT_DEFS += -DWEAR_LEVELING_ENABLE
+ OPT_DEFS += -DWEAR_LEVELING_$(strip $(shell echo $(WEAR_LEVELING_DRIVER) | tr '[:lower:]' '[:upper:]'))
+ COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/wear_leveling
+ COMMON_VPATH += $(DRIVER_PATH)/wear_leveling
+ COMMON_VPATH += $(QUANTUM_DIR)/wear_leveling
+ SRC += wear_leveling.c
+ ifeq ($(strip $(WEAR_LEVELING_DRIVER)), embedded_flash)
+ OPT_DEFS += -DHAL_USE_EFL
+ SRC += wear_leveling_efl.c
+ POST_CONFIG_H += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/wear_leveling/wear_leveling_efl_config.h
+ else ifeq ($(strip $(WEAR_LEVELING_DRIVER)), spi_flash)
+ FLASH_DRIVER := spi
+ SRC += wear_leveling_flash_spi.c
+ POST_CONFIG_H += $(DRIVER_PATH)/wear_leveling/wear_leveling_flash_spi_config.h
+ else ifeq ($(strip $(WEAR_LEVELING_DRIVER)), rp2040_flash)
+ SRC += wear_leveling_rp2040_flash.c
+ POST_CONFIG_H += $(DRIVER_PATH)/wear_leveling/wear_leveling_rp2040_flash_config.h
+ else ifeq ($(strip $(WEAR_LEVELING_DRIVER)), legacy)
+ COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/flash
+ SRC += flash_stm32.c wear_leveling_legacy.c
+ POST_CONFIG_H += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/wear_leveling/wear_leveling_legacy_config.h
endif
endif
endif
VALID_FLASH_DRIVER_TYPES := spi
-FLASH_DRIVER ?= no
-ifneq ($(strip $(FLASH_DRIVER)), no)
+FLASH_DRIVER ?= none
+ifneq ($(strip $(FLASH_DRIVER)), none)
ifeq ($(filter $(FLASH_DRIVER),$(VALID_FLASH_DRIVER_TYPES)),)
- $(error FLASH_DRIVER="$(FLASH_DRIVER)" is not a valid FLASH driver)
+ $(call CATASTROPHIC_ERROR,Invalid FLASH_DRIVER,FLASH_DRIVER="$(FLASH_DRIVER)" is not a valid flash driver)
else
OPT_DEFS += -DFLASH_ENABLE
- ifeq ($(strip $(FLASH_DRIVER)), spi)
+ ifeq ($(strip $(FLASH_DRIVER)),spi)
OPT_DEFS += -DFLASH_DRIVER -DFLASH_SPI
COMMON_VPATH += $(DRIVER_PATH)/flash
SRC += flash_spi.c
+ QUANTUM_LIB_SRC += spi_master.c
endif
endif
endif
@@ -275,7 +332,7 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
endif
LED_MATRIX_ENABLE ?= no
-VALID_LED_MATRIX_TYPES := IS31FL3731 IS31FL3742A IS31FL3743A IS31FL3745 IS31FL3746A custom
+VALID_LED_MATRIX_TYPES := IS31FL3731 IS31FL3742A IS31FL3743A IS31FL3745 IS31FL3746A CKLED2001 custom
# TODO: IS31FL3733 IS31FL3737 IS31FL3741
ifeq ($(strip $(LED_MATRIX_ENABLE)), yes)
@@ -331,6 +388,13 @@ endif
QUANTUM_LIB_SRC += i2c_master.c
endif
+ ifeq ($(strip $(LED_MATRIX_DRIVER)), CKLED2001)
+ OPT_DEFS += -DCKLED2001 -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ COMMON_VPATH += $(DRIVER_PATH)/led
+ SRC += ckled2001-simple.c
+ QUANTUM_LIB_SRC += i2c_master.c
+ endif
+
endif
RGB_MATRIX_ENABLE ?= no
@@ -500,7 +564,7 @@ ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
endif
endif
-VALID_WS2812_DRIVER_TYPES := bitbang pwm spi i2c
+VALID_WS2812_DRIVER_TYPES := bitbang pwm spi i2c vendor
WS2812_DRIVER ?= bitbang
ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
@@ -542,12 +606,6 @@ ifeq ($(strip $(LED_TABLES)), yes)
SRC += $(QUANTUM_DIR)/led_tables.c
endif
-ifeq ($(strip $(TERMINAL_ENABLE)), yes)
- SRC += $(QUANTUM_DIR)/process_keycode/process_terminal.c
- OPT_DEFS += -DTERMINAL_ENABLE
- OPT_DEFS += -DUSER_PRINT
-endif
-
ifeq ($(strip $(VIA_ENABLE)), yes)
DYNAMIC_KEYMAP_ENABLE := yes
RAW_ENABLE := yes
@@ -595,6 +653,14 @@ ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
QUANTUM_SRC += $(QUANTUM_DIR)/debounce/$(strip $(DEBOUNCE_TYPE)).c
endif
+
+VALID_SERIAL_DRIVER_TYPES := bitbang usart vendor
+
+SERIAL_DRIVER ?= bitbang
+ifeq ($(filter $(SERIAL_DRIVER),$(VALID_SERIAL_DRIVER_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid SERIAL_DRIVER,SERIAL_DRIVER="$(SERIAL_DRIVER)" is not a valid SERIAL driver)
+endif
+
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
POST_CONFIG_H += $(QUANTUM_DIR)/split_common/post_config.h
OPT_DEFS += -DSPLIT_KEYBOARD
@@ -619,11 +685,11 @@ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
endif
endif
- SERIAL_DRIVER ?= bitbang
OPT_DEFS += -DSERIAL_DRIVER_$(strip $(shell echo $(SERIAL_DRIVER) | tr '[:lower:]' '[:upper:]'))
ifeq ($(strip $(SERIAL_DRIVER)), bitbang)
QUANTUM_LIB_SRC += serial.c
else
+ QUANTUM_LIB_SRC += serial_protocol.c
QUANTUM_LIB_SRC += serial_$(strip $(SERIAL_DRIVER)).c
endif
endif
@@ -635,6 +701,12 @@ ifeq ($(strip $(CRC_ENABLE)), yes)
SRC += crc.c
endif
+ifeq ($(strip $(FNV_ENABLE)), yes)
+ OPT_DEFS += -DFNV_ENABLE
+ VPATH += $(LIB_PATH)/fnv
+ SRC += qmk_fnv_type_validation.c hash_32a.c hash_64a.c
+endif
+
ifeq ($(strip $(HAPTIC_ENABLE)),yes)
COMMON_VPATH += $(DRIVER_PATH)/haptic
@@ -711,6 +783,13 @@ ifeq ($(strip $(MAGIC_ENABLE)), yes)
OPT_DEFS += -DMAGIC_KEYCODE_ENABLE
endif
+SEND_STRING_ENABLE ?= yes
+ifeq ($(strip $(SEND_STRING_ENABLE)), yes)
+ OPT_DEFS += -DSEND_STRING_ENABLE
+ COMMON_VPATH += $(QUANTUM_DIR)/send_string
+ SRC += $(QUANTUM_DIR)/send_string/send_string.c
+endif
+
ifeq ($(strip $(AUTO_SHIFT_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_auto_shift.c
OPT_DEFS += -DAUTO_SHIFT_ENABLE
@@ -821,3 +900,11 @@ ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
QUANTUM_LIB_SRC += uart.c
endif
endif
+
+ifeq ($(strip $(ENCODER_ENABLE)), yes)
+ SRC += $(QUANTUM_DIR)/encoder.c
+ OPT_DEFS += -DENCODER_ENABLE
+ ifeq ($(strip $(ENCODER_MAP_ENABLE)), yes)
+ OPT_DEFS += -DENCODER_MAP_ENABLE
+ endif
+endif
diff --git a/builddefs/common_rules.mk b/builddefs/common_rules.mk
index d3acddc87b..c8816639f8 100644
--- a/builddefs/common_rules.mk
+++ b/builddefs/common_rules.mk
@@ -1,19 +1,5 @@
# Hey Emacs, this is a -*- makefile -*-
#----------------------------------------------------------------------------
-# WinAVR Makefile Template written by Eric B. Weddington, Jî’šg Wunsch, et al.
-#
-# Released to the Public Domain
-#
-# Additional material for this makefile was written by:
-# Peter Fleury
-# Tim Henigan
-# Colin O'Flynn
-# Reiner Patommel
-# Markus Pfaff
-# Sander Pool
-# Frederik Rouleau
-# Carlos Lamas
-#
# Enable vpath seraching for source files only
# Without this, output files, could be read from the wrong .build directories
@@ -38,36 +24,15 @@ NO_LTO_OBJ := $(filter %.a,$(OBJ))
MASTER_OUTPUT := $(firstword $(OUTPUTS))
-
-
# Output format. (can be srec, ihex, binary)
FORMAT = ihex
# Optimization level, can be [0, 1, 2, 3, s].
-# 0 = turn off optimization. s = optimize for size.
-# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT ?= s
-# Compiler flag to set the C Standard level.
-# c89 = "ANSI" C
-# gnu89 = c89 plus GCC extensions
-# c99 = ISO C99 standard (not yet fully implemented)
-# gnu99 = c99 plus GCC extensions
-CSTANDARD = -std=gnu99
-
-
-# Place -D or -U options here for C sources
-#CDEFS +=
-
-
-# Place -D or -U options here for ASM sources
-#ADEFS +=
-
-
-# Place -D or -U options here for C++ sources
-#CXXDEFS += -D__STDC_LIMIT_MACROS
-#CXXDEFS += -D__STDC_CONSTANT_MACROS
-#CXXDEFS +=
+# Compiler flag to set the C and C++ language standard level
+CSTANDARD = -std=gnu11
+CXXSTANDARD = -std=gnu++14
# Speed up recompilations by opt-in usage of ccache
USE_CCACHE ?= no
@@ -75,12 +40,8 @@ ifneq ($(USE_CCACHE),no)
CC_PREFIX ?= ccache
endif
-#---------------- Compiler Options C ----------------
-# -g*: generate debugging information
-# -O*: optimization level
-# -f...: tuning, see GCC manual and avr-libc documentation
-# -Wall...: warning level
-# -Wa,...: tell GCC to pass this to the assembler.
+#---------------- C Compiler Options ----------------
+
ifeq ($(strip $(LTO_ENABLE)), yes)
ifeq ($(PLATFORM),ARM_ATSAM)
$(info Enabling LTO on arm_atsam-targeting boards is known to have a high likelihood of failure.)
@@ -111,23 +72,14 @@ CFLAGS += -Wstrict-prototypes
ifneq ($(strip $(ALLOW_WARNINGS)), yes)
CFLAGS += -Werror
endif
-#CFLAGS += -mshort-calls
-#CFLAGS += -fno-unit-at-a-time
-#CFLAGS += -Wundef
-#CFLAGS += -Wunreachable-code
-#CFLAGS += -Wsign-compare
CFLAGS += $(CSTANDARD)
# This fixes lots of keyboards linking errors but SHOULDN'T BE A FINAL SOLUTION
# Fixing of multiple variable definitions must be made.
CFLAGS += -fcommon
-#---------------- Compiler Options C++ ----------------
-# -g*: generate debugging information
-# -O*: optimization level
-# -f...: tuning, see GCC manual and avr-libc documentation
-# -Wall...: warning level
-# -Wa,...: tell GCC to pass this to the assembler.
+#---------------- C++ Compiler Options ----------------
+
ifeq ($(strip $(DEBUG_ENABLE)),yes)
CXXFLAGS += -g$(DEBUG)
endif
@@ -141,57 +93,17 @@ CXXFLAGS += -Wundef
ifneq ($(strip $(ALLOW_WARNINGS)), yes)
CXXFLAGS += -Werror
endif
-#CXXFLAGS += -mshort-calls
-#CXXFLAGS += -fno-unit-at-a-time
-#CXXFLAGS += -Wstrict-prototypes
-#CXXFLAGS += -Wunreachable-code
-#CXXFLAGS += -Wsign-compare
-#CXXFLAGS += $(CSTANDARD)
#---------------- Assembler Options ----------------
+
ASFLAGS += $(ADEFS)
ifeq ($(VERBOSE_AS_CMD),yes)
ASFLAGS += -v
endif
-#---------------- Library Options ----------------
-# Minimalistic printf version
-PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
-
-# Floating point printf version (requires MATH_LIB = -lm below)
-PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
-
-# If this is left blank, then it will use the Standard printf version.
-PRINTF_LIB =
-#PRINTF_LIB = $(PRINTF_LIB_MIN)
-#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
-
-
-# Minimalistic scanf version
-SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
-
-# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
-SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
-
-# If this is left blank, then it will use the Standard scanf version.
-SCANF_LIB =
-#SCANF_LIB = $(SCANF_LIB_MIN)
-#SCANF_LIB = $(SCANF_LIB_FLOAT)
-
-
-MATH_LIB = -lm
-CREATE_MAP ?= yes
-
-
#---------------- Linker Options ----------------
-# -Wl,...: tell GCC to pass this to linker.
-# -Map: create map file
-# --cref: add cross reference to map file
-#
-# Comennt out "--relax" option to avoid a error such:
-# (.vectors+0x30): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_12'
-#
+CREATE_MAP ?= yes
ifeq ($(CREATE_MAP),yes)
LDFLAGS += -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref
endif
@@ -201,20 +113,11 @@ endif
#LDFLAGS += -Wl,--relax
LDFLAGS += $(EXTMEMOPTS)
LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
-LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
-#LDFLAGS += -T linker_script.x
+LDFLAGS += -lm
# You can give EXTRALDFLAGS at 'make' command line.
LDFLAGS += $(EXTRALDFLAGS)
#---------------- Assembler Listings ----------------
-# -Wa,...: tell GCC to pass this to the assembler.
-# -adhlns: create listing
-# -gstabs: have the assembler create line number information; note that
-# for use in COFF files, additional information about filenames
-# and function names needs to be present in the assembler source
-# files -- see avr-libc docs [FIXME: not yet described there]
-# -listing-cont-lines: Sets the maximum number of continuation lines of hex
-# dump that will be displayed for a given single line of source input.
ADHLNS_ENABLE ?= no
ifeq ($(ADHLNS_ENABLE),yes)
@@ -468,6 +371,7 @@ show_path:
dump_vars: ERROR_IF_EMPTY=""
dump_vars: ERROR_IF_NONBOOL=""
dump_vars: ERROR_IF_UNSET=""
+dump_vars: CATASTROPHIC_ERROR=""
dump_vars:
@$(foreach V,$(sort $(.VARIABLES)),$(if $(filter-out environment% default automatic,$(origin $V)),$(info $V=$($V))))
diff --git a/builddefs/generic_features.mk b/builddefs/generic_features.mk
index c3f1ec0f72..f195e9fd75 100644
--- a/builddefs/generic_features.mk
+++ b/builddefs/generic_features.mk
@@ -25,8 +25,6 @@ GENERIC_FEATURES = \
DIP_SWITCH \
DYNAMIC_KEYMAP \
DYNAMIC_MACRO \
- ENCODER \
- ENCODER_MAP \
GRAVE_ESC \
HAPTIC \
KEY_LOCK \
diff --git a/builddefs/mcu_selection.mk b/builddefs/mcu_selection.mk
index d5fb731e08..0ea9630d59 100644
--- a/builddefs/mcu_selection.mk
+++ b/builddefs/mcu_selection.mk
@@ -87,6 +87,33 @@ ifneq ($(findstring MK20DX256, $(MCU)),)
BOARD ?= PJRC_TEENSY_3_1
endif
+ifneq ($(findstring MK64FX512, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m4
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ ARMV = 7
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = KINETIS
+ MCU_SERIES = K60x
+
+ # Linker script to use
+ # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
+ # or <keyboard_dir>/ld/
+ MCU_LDSCRIPT ?= MK64FX512
+
+ # Startup code to use
+ # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= k60x
+
+ # Board: it should exist either in <chibios>/os/hal/boards/,
+ # <keyboard_dir>/boards/, or drivers/boards/
+ BOARD ?= PJRC_TEENSY_3_5
+endif
+
ifneq ($(findstring MK66FX1M0, $(MCU)),)
# Cortex version
MCU = cortex-m4
@@ -116,6 +143,41 @@ ifneq ($(findstring MK66FX1M0, $(MCU)),)
BOARD ?= PJRC_TEENSY_3_6
endif
+ifneq ($(findstring RP2040, $(MCU)),)
+ # Cortex version
+ MCU = cortex-m0plus
+
+ # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ CHIBIOS_PORT = ARMv6-M-RP2
+
+ ## chip/board settings
+ # - the next two should match the directories in
+ # <chibios[-contrib]>/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)
+ # OR
+ # <chibios[-contrib]>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+ MCU_FAMILY = RP
+ MCU_SERIES = RP2040
+
+ # Linker script to use
+ # - it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
+ # or <keyboard_dir>/ld/
+ STARTUPLD_CONTRIB = $(CHIBIOS_CONTRIB)/os/common/startup/ARMCMx/compilers/GCC/ld
+ MCU_LDSCRIPT ?= RP2040_FLASH_TIMECRIT
+ LDFLAGS += -L $(STARTUPLD_CONTRIB)
+
+ # Startup code to use
+ # - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
+ MCU_STARTUP ?= rp2040
+
+ # Board: it should exist either in <chibios>/os/hal/boards/,
+ # <keyboard_dir>/boards/, or drivers/boards/
+ BOARD ?= GENERIC_PROMICRO_RP2040
+
+ # Default UF2 Bootloader settings
+ UF2_FAMILY ?= RP2040
+ FIRMWARE_FORMAT ?= uf2
+endif
+
ifneq ($(findstring STM32F042, $(MCU)),)
# Cortex version
MCU = cortex-m0
@@ -286,7 +348,8 @@ ifneq ($(findstring STM32F401, $(MCU)),)
# or <keyboard_dir>/ld/
ifeq ($(strip $(BOOTLOADER)), tinyuf2)
MCU_LDSCRIPT ?= STM32F401xC_tinyuf2
- FIRMWARE_FORMAT ?= uf2
+ EEPROM_DRIVER ?= wear_leveling
+ WEAR_LEVELING_DRIVER ?= legacy
else
MCU_LDSCRIPT ?= STM32F401xC
endif
@@ -297,7 +360,7 @@ ifneq ($(findstring STM32F401, $(MCU)),)
# Board: it should exist either in <chibios>/os/hal/boards/,
# <keyboard_dir>/boards/, or drivers/boards/
- BOARD ?= BLACKPILL_STM32_F401
+ BOARD ?= GENERIC_STM32_F401XC
USE_FPU ?= yes
@@ -402,7 +465,8 @@ ifneq ($(findstring STM32F411, $(MCU)),)
# or <keyboard_dir>/ld/
ifeq ($(strip $(BOOTLOADER)), tinyuf2)
MCU_LDSCRIPT ?= STM32F411xE_tinyuf2
- FIRMWARE_FORMAT ?= uf2
+ EEPROM_DRIVER ?= wear_leveling
+ WEAR_LEVELING_DRIVER ?= legacy
else
MCU_LDSCRIPT ?= STM32F411xE
endif
@@ -413,7 +477,7 @@ ifneq ($(findstring STM32F411, $(MCU)),)
# Board: it should exist either in <chibios>/os/hal/boards/,
# <keyboard_dir>/boards/, or drivers/boards/
- BOARD ?= BLACKPILL_STM32_F411
+ BOARD ?= GENERIC_STM32_F411XE
USE_FPU ?= yes
diff --git a/builddefs/show_options.mk b/builddefs/show_options.mk
index f67d009191..98537e6da2 100644
--- a/builddefs/show_options.mk
+++ b/builddefs/show_options.mk
@@ -5,7 +5,6 @@ BUILD_OPTION_NAMES = \
CONSOLE_ENABLE \
COMMAND_ENABLE \
NKRO_ENABLE \
- TERMINAL_ENABLE \
CUSTOM_MATRIX \
DEBOUNCE_TYPE \
SPLIT_KEYBOARD \
@@ -46,6 +45,7 @@ OTHER_OPTION_NAMES = \
LEADER_ENABLE \
PRINTING_ENABLE \
STENO_ENABLE \
+ STENO_PROTOCOL \
TAP_DANCE_ENABLE \
VIRTSER_ENABLE \
OLED_ENABLE \
diff --git a/builddefs/testlist.mk b/builddefs/testlist.mk
index b8d22bce80..8a30a44972 100644
--- a/builddefs/testlist.mk
+++ b/builddefs/testlist.mk
@@ -4,6 +4,7 @@ FULL_TESTS := $(notdir $(TEST_LIST))
include $(QUANTUM_PATH)/debounce/tests/testlist.mk
include $(QUANTUM_PATH)/encoder/tests/testlist.mk
include $(QUANTUM_PATH)/sequencer/tests/testlist.mk
+include $(QUANTUM_PATH)/wear_leveling/tests/testlist.mk
include $(PLATFORM_PATH)/test/testlist.mk
define VALIDATE_TEST_LIST
diff --git a/data/mappings/defaults.json b/data/mappings/defaults.json
index e62ab688d6..c855e64d33 100644
--- a/data/mappings/defaults.json
+++ b/data/mappings/defaults.json
@@ -16,6 +16,30 @@
"board": "QMK_PROTON_C",
"pin_compatible": "promicro"
},
+ "kb2040": {
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "board": "QMK_PM2040",
+ "pin_compatible": "promicro"
+ },
+ "promicro_rp2040": {
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "board": "QMK_PM2040",
+ "pin_compatible": "promicro"
+ },
+ "blok": {
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "board": "QMK_PM2040",
+ "pin_compatible": "promicro"
+ },
+ "bit_c_pro": {
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "board": "QMK_PM2040",
+ "pin_compatible": "promicro"
+ },
"bluepill": {
"processor": "STM32F103",
"bootloader": "stm32duino",
@@ -30,6 +54,18 @@
"processor": "STM32F411",
"bootloader": "stm32-dfu",
"board": "BLACKPILL_STM32_F411"
+ },
+ "stemcell": {
+ "processor": "STM32F411",
+ "bootloader": "tinyuf2",
+ "board": "STEMCELL",
+ "pin_compatible": "promicro"
+ },
+ "bonsai_c4": {
+ "processor": "STM32F411",
+ "bootloader": "stm32-dfu",
+ "board": "GENERIC_STM32_F411XE",
+ "pin_compatible": "promicro"
}
}
-} \ No newline at end of file
+}
diff --git a/data/mappings/info_config.json b/data/mappings/info_config.json
index 5f0d903bd7..608fe4e9ad 100644
--- a/data/mappings/info_config.json
+++ b/data/mappings/info_config.json
@@ -9,9 +9,11 @@
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
# deprecated: Default `false`. Set to `true` to turn on warning when a value exists
# invalid: Default `false`. Set to `true` to generate errors when a value exists
+ # replace_with: use with a key marked deprecated or invalid to designate a replacement
"AUDIO_VOICES": {"info_key": "audio.voices", "value_type": "bool"},
"BACKLIGHT_BREATHING": {"info_key": "backlight.breathing", "value_type": "bool"},
"BREATHING_PERIOD": {"info_key": "backlight.breathing_period", "value_type": "int"},
+ "BACKLIGHT_ON_STATE": {"info_key": "backlight.on_state", "value_type": "int"},
"BACKLIGHT_PIN": {"info_key": "backlight.pin"},
"BOTH_SHIFTS_TURNS_ON_CAPS_WORD": {"info_key": "caps_word.both_shifts_turns_on", "value_type": "bool"},
"CAPS_WORD_IDLE_TIMEOUT": {"info_key": "caps_word.idle_timeout", "value_type": "int"},
@@ -35,6 +37,9 @@
"LED_CAPS_LOCK_PIN": {"info_key": "indicators.caps_lock"},
"LED_NUM_LOCK_PIN": {"info_key": "indicators.num_lock"},
"LED_SCROLL_LOCK_PIN": {"info_key": "indicators.scroll_lock"},
+ "LED_COMPOSE_PIN": {"info_key": "indicators.compose"},
+ "LED_KANA_PIN": {"info_key": "indicators.kana"},
+ "LED_PIN_ON_STATE": {"info_key": "indicators.on_state", "value_type": "int"},
"MANUFACTURER": {"info_key": "manufacturer"},
"MATRIX_HAS_GHOST": {"info_key": "matrix_pins.ghost", "value_type": "bool"},
"MATRIX_IO_DELAY": {"info_key": "matrix_pins.io_delay", "value_type": "int"},
@@ -52,7 +57,6 @@
"RGB_DI_PIN": {"info_key": "rgblight.pin"},
"RGBLED_NUM": {"info_key": "rgblight.led_count", "value_type": "int"},
"RGBLED_SPLIT": {"info_key": "rgblight.split_count", "value_type": "array.int"},
- "RGBLIGHT_ANIMATIONS": {"info_key": "rgblight.animations.all", "value_type": "bool"},
"RGBLIGHT_EFFECT_ALTERNATING": {"info_key": "rgblight.animations.alternating", "value_type": "bool"},
"RGBLIGHT_EFFECT_BREATHING": {"info_key": "rgblight.animations.breathing", "value_type": "bool"},
"RGBLIGHT_EFFECT_CHRISTMAS": {"info_key": "rgblight.animations.christmas", "value_type": "bool"},
@@ -79,7 +83,6 @@
"VENDOR_ID": {"info_key": "usb.vid", "value_type": "hex"},
"QMK_ESC_OUTPUT": {"info_key": "qmk_lufa_bootloader.esc_output"},
"QMK_ESC_INPUT": {"info_key": "qmk_lufa_bootloader.esc_input"},
- "QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int"},
"QMK_LED": {"info_key": "qmk_lufa_bootloader.led"},
"QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"},
"SECURE_UNLOCK_SEQUENCE": {"info_key": "secure.unlock_sequence", "value_type": "array.array.int", "to_json": false},
@@ -108,6 +111,9 @@
"NO_ACTION_MACRO": {"info_key": "_invalid.no_action_macro", "invalid": true},
"NO_ACTION_FUNCTION": {"info_key": "_invalid.no_action_function", "invalid": true},
"DESCRIPTION": {"info_key": "_invalid.usb_description", "invalid": true},
- "DEBOUNCING_DELAY": {"info_key": "_invalid.debouncing_delay", "invalid": true},
+ "DEBOUNCING_DELAY": {"info_key": "_invalid.debouncing_delay", "invalid": true, "replace_with": "DEBOUNCE"},
"PREVENT_STUCK_MODIFIERS": {"info_key": "_invalid.prevent_stuck_mods", "invalid": true},
+ "UNUSED_PINS": {"info_key": "_invalid.unused_pins", "deprecated": true},
+ "RGBLIGHT_ANIMATIONS": {"info_key": "rgblight.animations.all", "value_type": "bool", "deprecated": true},
+ "QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int", "deprecated": true}
}
diff --git a/data/mappings/info_rules.json b/data/mappings/info_rules.json
index d4eec37ba0..a4da10fd31 100644
--- a/data/mappings/info_rules.json
+++ b/data/mappings/info_rules.json
@@ -9,15 +9,18 @@
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
# deprecated: Default `false`. Set to `true` to turn on warning when a value exists
# invalid: Default `false`. Set to `true` to generate errors when a value exists
+ # replace_with: use with a key marked deprecated or invalid to designate a replacement
"BOARD": {"info_key": "board"},
"BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false},
"BLUETOOTH": {"info_key": "bluetooth.driver"},
"CAPS_WORD_ENABLE": {"info_key": "caps_word.enabled", "value_type": "bool"},
+ "ENCODER_ENABLE": {"info_key": "encoder.enabled", "value_type": "bool"},
"FIRMWARE_FORMAT": {"info_key": "build.firmware_format"},
"KEYBOARD_SHARED_EP": {"info_key": "usb.shared_endpoint.keyboard", "value_type": "bool"},
"MOUSE_SHARED_EP": {"info_key": "usb.shared_endpoint.mouse", "value_type": "bool"},
"LAYOUTS": {"info_key": "community_layouts", "value_type": "list"},
"LED_MATRIX_DRIVER": {"info_key": "led_matrix.driver"},
+ "RGB_MATRIX_DRIVER": {"info_key": "rgb_matrix.driver"},
"LTO_ENABLE": {"info_key": "build.lto", "value_type": "bool"},
"MCU": {"info_key": "processor", "warn_duplicate": false},
"MOUSEKEY_ENABLE": {"info_key": "mouse_key.enabled", "value_type": "bool"},
@@ -27,9 +30,11 @@
"SPLIT_KEYBOARD": {"info_key": "split.enabled", "value_type": "bool"},
"SPLIT_TRANSPORT": {"info_key": "split.transport.protocol", "to_c": false},
"WAIT_FOR_USB": {"info_key": "usb.wait_for", "value_type": "bool"},
+ "STENO_ENABLE": {"info_key": "stenography.enabled", "value_type": "bool"},
+ "STENO_PROTOCOL": {"info_key": "stenography.protocol"},
# Items we want flagged in lint
- "CTPC": {"info_key": "_deprecated.ctpc", "deprecated": true},
- "CONVERT_TO_PROTON_C": {"info_key": "_deprecated.ctpc", "deprecated": true},
- "VIAL_ENABLE": {"info_key": "_invalid.vial", "invalid": true},
+ "CTPC": {"info_key": "_deprecated.ctpc", "deprecated": true, "replace_with": "CONVERT_TO=proton_c"},
+ "CONVERT_TO_PROTON_C": {"info_key": "_deprecated.ctpc", "deprecated": true, "replace_with": "CONVERT_TO=proton_c"},
+ "VIAL_ENABLE": {"info_key": "_invalid.vial", "invalid": true}
}
diff --git a/data/mappings/keyboard_aliases.json b/data/mappings/keyboard_aliases.json
index 93be17cf81..3e96451086 100644
--- a/data/mappings/keyboard_aliases.json
+++ b/data/mappings/keyboard_aliases.json
@@ -242,9 +242,6 @@
honeycomb: {
target: 'keyhive/honeycomb'
},
- id80: {
- target: 'id80/ansi'
- },
idb_60: {
target: 'idb/idb_60',
layouts: {
@@ -826,6 +823,9 @@
geminate60: {
target: 'weirdo/geminate60'
},
+ gentleman65: {
+ target: 'jkeys_design/gentleman65'
+ },
georgi: {
target: 'gboards/georgi'
},
@@ -844,6 +844,9 @@
halberd: {
target: 'kagizaraya/halberd'
},
+ handwired/hillside/0_1: {
+ target: 'handwired/hillside/48'
+ }
hecomi/alpha: {
target: 'takashiski/hecomi/alpha'
},
@@ -857,7 +860,13 @@
target: 'idobao/id67/rgb'
},
id80: {
- target: 'idobao/id80/v1'
+ target: 'idobao/id80/v2/ansi'
+ },
+ idobao/id80/v1/ansi: {
+ target: 'idobao/id80/v2/ansi'
+ },
+ idobao/id80/v1/iso: {
+ target: 'idobao/id80/v2/iso'
},
id87: {
target: 'idobao/id87/v1'
diff --git a/data/schemas/api_keyboard.jsonschema b/data/schemas/api_keyboard.jsonschema
index d638658a1d..6a30b5d990 100644
--- a/data/schemas/api_keyboard.jsonschema
+++ b/data/schemas/api_keyboard.jsonschema
@@ -9,7 +9,6 @@
"properties": {
"url": {"type": "string"}
}
-
},
"parse_errors": {"$ref": "qmk.definitions.v1#/string_array"},
"parse_warnings": {"$ref": "qmk.definitions.v1#/string_array"},
diff --git a/data/schemas/definitions.jsonschema b/data/schemas/definitions.jsonschema
index 1bdfbbeb03..8b68a58482 100644
--- a/data/schemas/definitions.jsonschema
+++ b/data/schemas/definitions.jsonschema
@@ -1,5 +1,5 @@
{
- "$schema": "http://json-schema.org/draft-07/schema#",
+ "$schema": "https://json-schema.org/draft/2020-12/schema#",
"$id": "qmk.definitions.v1",
"title": "Common definitions used across QMK's jsonschemas.",
"type": "object",
@@ -65,8 +65,7 @@
]
},
"key_unit": {
- "type": "number",
- "min": 0.25
+ "type": "number"
},
"keyboard": {
"oneOf": [
@@ -103,8 +102,11 @@
"pattern": "^LINE_PIN\\d{1,2}$"
},
{
- "type": "number",
- "multipleOf": 1
+ "type": "string",
+ "pattern": "^GP\\d{1,2}$"
+ },
+ {
+ "type": "integer"
},
{
"type": "null"
@@ -115,14 +117,12 @@
"type": "number"
},
"signed_int": {
- "type": "number",
- "multipleOf": 1
+ "type": "integer"
},
"signed_int_8": {
- "type": "number",
- "min": -127,
- "max": 127,
- "multipleOf": 1
+ "type": "integer",
+ "minimum": -127,
+ "maximum": 127
},
"string_array": {
"type": "array",
@@ -138,17 +138,20 @@
},
"unsigned_decimal": {
"type": "number",
- "min": 0
+ "minimum": 0
},
"unsigned_int": {
- "type": "number",
- "min": 0,
- "multipleOf": 1
+ "type": "integer",
+ "minimum": 0
},
"unsigned_int_8": {
- "type": "number",
- "min": 0,
- "max": 255,
- "multipleOf": 1
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 255
+ },
+ "bit": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 1
}
}
diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema
index fd60920578..0308f45116 100644
--- a/data/schemas/keyboard.jsonschema
+++ b/data/schemas/keyboard.jsonschema
@@ -1,7 +1,27 @@
{
- "$schema": "http://json-schema.org/draft-07/schema#",
+ "$schema": "https://json-schema.org/draft/2020-12/schema#",
"$id": "qmk.keyboard.v1",
"title": "Keyboard Information",
+ "definitions": {
+ "encoder_config": {
+ "type": "object",
+ "properties": {
+ "rotary": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "required": ["pin_a", "pin_b"],
+ "properties": {
+ "pin_a": {"$ref": "qmk.definitions.v1#/mcu_pin"},
+ "pin_b": {"$ref": "qmk.definitions.v1#/mcu_pin"},
+ "resolution": {"$ref": "qmk.definitions.v1#/unsigned_int"}
+ }
+ }
+ }
+ }
+ }
+ },
"type": "object",
"properties": {
"keyboard_name": {"$ref": "qmk.definitions.v1#/text_identifier"},
@@ -14,7 +34,7 @@
},
"development_board": {
"type": "string",
- "enum": ["promicro", "elite_c", "proton_c", "bluepill", "blackpill_f401", "blackpill_f411"]
+ "enum": ["promicro", "elite_c", "proton_c", "kb2040", "promicro_rp2040", "blok", "bit_c_pro", "stemcell", "bluepill", "blackpill_f401", "blackpill_f411", "bonsai_c4"]
},
"pin_compatible": {
"type": "string",
@@ -22,7 +42,7 @@
},
"processor": {
"type": "string",
- "enum": ["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", "STM32L432", "STM32L433", "STM32L442", "STM32L443", "GD32VF103", "WB32F3G71", "WB32FQ95", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
+ "enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK64FX512", "MK66FX1M0", "RP2040", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F405", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L432", "STM32L433", "STM32L442", "STM32L443", "GD32VF103", "WB32F3G71", "WB32FQ95", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
},
"audio": {
"type": "object",
@@ -40,12 +60,12 @@
"breathing": {"type": "boolean"},
"breathing_period": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"levels": {
- "type": "number",
- "min": 1,
- "max": 31,
- "multipleOf": 1
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 31
},
- "pin": {"$ref": "qmk.definitions.v1#/mcu_pin"}
+ "pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
+ "on_state": {"$ref": "qmk.definitions.v1#/bit"}
}
},
"bluetooth": {
@@ -56,7 +76,7 @@
"type": "string",
"enum": ["BluefruitLE", "RN42"]
},
- "lto": {"type": "boolean"},
+ "lto": {"type": "boolean"}
}
},
"board": {
@@ -66,7 +86,29 @@
},
"bootloader": {
"type": "string",
- "enum": ["atmel-dfu", "bootloadhid", "bootloadHID", "custom", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "md-boot", "qmk-dfu", "qmk-hid", "stm32-dfu", "stm32duino", "gd32v-dfu", "wb32-dfu", "unknown", "usbasploader", "USBasp", "tinyuf2"],
+ "enum": [
+ "atmel-dfu",
+ "bootloadhid",
+ "bootloadHID",
+ "caterina",
+ "custom",
+ "gd32v-dfu",
+ "halfkay",
+ "kiibohd",
+ "lufa-dfu",
+ "lufa-ms",
+ "md-boot",
+ "qmk-dfu",
+ "qmk-hid",
+ "rp2040",
+ "stm32-dfu",
+ "stm32duino",
+ "tinyuf2",
+ "unknown",
+ "usbasploader",
+ "USBasp",
+ "wb32-dfu"
+ ]
},
"bootloader_instructions": {
"type": "string",
@@ -84,7 +126,7 @@
"type": "string",
"enum": ["bin", "hex", "uf2"]
},
- "lto": {"type": "boolean"},
+ "lto": {"type": "boolean"}
}
},
"diode_direction": {
@@ -99,8 +141,8 @@
"enabled": {"type": "boolean"},
"both_shifts_turns_on": {"type": "boolean"},
"double_tap_shift_turns_on": {"type": "boolean"},
- "idle_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
- },
+ "idle_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
+ }
},
"combo": {
"type": "object",
@@ -113,13 +155,22 @@
"type": "array",
"items": {"$ref": "qmk.definitions.v1#/filename"}
},
+ "encoder": {
+ "$ref": "#/definitions/encoder_config",
+ "properties": {
+ "enabled": {"type": "boolean"}
+ }
+ },
"features": {"$ref": "qmk.definitions.v1#/boolean_array"},
"indicators": {
"type": "object",
"properties": {
"caps_lock": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"num_lock": {"$ref": "qmk.definitions.v1#/mcu_pin"},
- "scroll_lock": {"$ref": "qmk.definitions.v1#/mcu_pin"}
+ "scroll_lock": {"$ref": "qmk.definitions.v1#/mcu_pin"},
+ "compose": {"$ref": "qmk.definitions.v1#/mcu_pin"},
+ "kana": {"$ref": "qmk.definitions.v1#/mcu_pin"},
+ "on_state": {"$ref": "qmk.definitions.v1#/bit"}
}
},
"layout_aliases": {
@@ -154,12 +205,11 @@
"minItems": 2,
"maxItems": 2,
"items": {
- "type": "number",
- "min": 0,
- "multipleOf": 1
+ "type": "integer",
+ "minimum": 0
}
},
- "r": {"$ref": "qmk.definitions.v1#/unsigned_decimal"},
+ "r": {"$ref": "qmk.definitions.v1#/signed_decimal"},
"rx": {"$ref": "qmk.definitions.v1#/unsigned_decimal"},
"ry": {"$ref": "qmk.definitions.v1#/unsigned_decimal"},
"h": {"$ref": "qmk.definitions.v1#/key_unit"},
@@ -193,18 +243,17 @@
"items": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
},
"cols": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
- "rows": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
- "unused": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
+ "rows": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
}
},
"mouse_key": {
"type": "object",
"properties": {
"enabled": {"type": "boolean"},
- "delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
- "interval": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
- "max_speed": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
- "time_to_max": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
+ "delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
+ "interval": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
+ "max_speed": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
+ "time_to_max": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"wheel_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
}
},
@@ -230,14 +279,13 @@
"minItems": 2,
"maxItems": 2,
"items": {
- "type": "number",
- "min": 0,
- "multipleOf": 1
+ "type": "integer",
+ "minimum": 0
}
},
"x": {"$ref": "qmk.definitions.v1#/key_unit"},
"y": {"$ref": "qmk.definitions.v1#/key_unit"},
- "flags": {"$ref": "qmk.definitions.v1#/unsigned_decimal"}
+ "flags": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
}
}
}
@@ -258,14 +306,13 @@
"minItems": 2,
"maxItems": 2,
"items": {
- "type": "number",
- "min": 0,
- "multipleOf": 1
+ "type": "integer",
+ "minimum": 0
}
},
"x": {"$ref": "qmk.definitions.v1#/key_unit"},
"y": {"$ref": "qmk.definitions.v1#/key_unit"},
- "flags": {"$ref": "qmk.definitions.v1#/unsigned_decimal"}
+ "flags": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
}
}
}
@@ -290,10 +337,9 @@
"blink": {"type": "boolean"},
"enabled": {"type": "boolean"},
"max": {
- "type": "number",
- "min": 1,
- "max": 32,
- "multipleOf": 1
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 32
},
"override_rgb": {"type": "boolean"}
}
@@ -307,8 +353,8 @@
"split": {"type": "boolean"},
"split_count": {
"type": "array",
- "minLength": 2,
- "maxLength": 2,
+ "minItems": 2,
+ "maxItems": 2,
"items": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
}
@@ -322,21 +368,31 @@
"idle_timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"unlock_sequence": {
"type": "array",
- "minLength": 1,
- "maxLength": 5,
+ "minItems": 1,
+ "maxItems": 5,
"items": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {
- "type": "number",
- "min": 0,
- "multipleOf": 1
+ "type": "integer",
+ "minimum": 0
}
}
}
}
},
+ "stenography": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {"type": "boolean"},
+ "protocol": {
+ "type": "string",
+ "enum": ["all", "geminipr", "txbolt"]
+ }
+ }
+ },
"split": {
"type": "object",
"additionalProperties": false,
@@ -365,16 +421,24 @@
}
}
},
+ "encoder": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "right": {
+ "$ref": "#/definitions/encoder_config"
+ }
+ }
+ },
"main": {
"type": "string",
"enum": ["eeprom", "left", "matrix_grid", "pin", "right"]
},
"soft_serial_pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"soft_serial_speed": {
- "type": "number",
- "min": 0,
- "max": 5,
- "multipleOf": 1
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 5
},
"transport": {
"type": "object",
@@ -416,7 +480,7 @@
"retro_per_key": {"type": "boolean"},
"term": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"term_per_key": {"type": "boolean"},
- "toggle": {"$ref": "qmk.definitions.v1#/unsigned_int"},
+ "toggle": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
},
"usb": {
@@ -428,7 +492,7 @@
"force_nkro": {"type": "boolean"},
"pid": {"$ref": "qmk.definitions.v1#/hex_number_4d"},
"vid": {"$ref": "qmk.definitions.v1#/hex_number_4d"},
- "max_power": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
+ "max_power": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"no_startup_check": {"type": "boolean"},
"polling_interval": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"shared_endpoint": {
@@ -439,8 +503,8 @@
"mouse": {"type": "boolean"}
}
},
- "suspend_wakeup_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
- "wait_for": {"type": "boolean"},
+ "suspend_wakeup_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"},
+ "wait_for": {"type": "boolean"}
}
},
"qmk": {
@@ -448,8 +512,8 @@
"additionalProperties": false,
"properties": {
"keys_per_scan": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
- "tap_keycode_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
- "tap_capslock_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
+ "tap_keycode_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"},
+ "tap_capslock_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
},
"qmk_lufa_bootloader": {
diff --git a/data/schemas/keymap.jsonschema b/data/schemas/keymap.jsonschema
index 3803301a66..0a4fb5d453 100644
--- a/data/schemas/keymap.jsonschema
+++ b/data/schemas/keymap.jsonschema
@@ -1,5 +1,5 @@
{
- "$schema": "http://json-schema.org/draft-07/schema#",
+ "$schema": "https://json-schema.org/draft/2020-12/schema#",
"$id": "qmk.keymap.v1",
"title": "Keymap Information",
"type": "object",
@@ -31,7 +31,7 @@
"properties": {
"action": {
"type": "string",
- "enum": ['beep', 'delay', 'down', 'tap', 'up']
+ "enum": ["beep", "delay", "down", "tap", "up"]
},
"keycodes": {
"type": "array",
@@ -50,8 +50,7 @@
},
"config": {"$ref": "qmk.keyboard.v1"},
"notes": {
- "type": "string",
- "description": "asdf"
+ "type": "string"
}
},
"required": [
diff --git a/data/templates/keyboard/readme.md b/data/templates/keyboard/readme.md
index ca703c53f0..ab4f2d17ef 100644
--- a/data/templates/keyboard/readme.md
+++ b/data/templates/keyboard/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/docs/ChangeLog/20220827.md b/docs/ChangeLog/20220827.md
new file mode 100644
index 0000000000..b672b57cb8
--- /dev/null
+++ b/docs/ChangeLog/20220827.md
@@ -0,0 +1,343 @@
+# QMK Breaking Changes - 2022 August 27 Changelog
+
+## Notable Features :id=notable-features
+
+### Add Raspberry Pi RP2040 support ([#14877](https://github.com/qmk/qmk_firmware/pull/14877), [#17514](https://github.com/qmk/qmk_firmware/pull/17514), [#17516](https://github.com/qmk/qmk_firmware/pull/17516), [#17519](https://github.com/qmk/qmk_firmware/pull/17519), [#17612](https://github.com/qmk/qmk_firmware/pull/17612), [#17512](https://github.com/qmk/qmk_firmware/pull/17512), [#17557](https://github.com/qmk/qmk_firmware/pull/17557), [#17817](https://github.com/qmk/qmk_firmware/pull/17817), [#17839](https://github.com/qmk/qmk_firmware/pull/17839), [#18100](https://github.com/qmk/qmk_firmware/pull/18100)) :id=rp2040-support
+
+QMK _finally_ picked up support for RP2040-based boards, such as the Raspberry Pi Pico, the Sparkfun Pro Micro RP2040, and the Adafruit KB2040. One of QMK's newest collaborators, _@KarlK90_, effectively did `/micdrop` with RP2040, with a massive set of changes to both QMK and the repository QMK uses for the base platform support, ChibiOS[-Contrib]. There has been a flurry of development this breaking changes cycle related to RP2040 from a large number of contributors -- so much so that almost all standard QMK hardware subsystems are supported.
+
+Check the [RP2040 platform development page](platformdev_rp2040.md) for all supported peripherals and other hardware implementation details.
+
+### Allow `qmk flash` to use prebuilt firmware binaries ([#16584](https://github.com/qmk/qmk_firmware/pull/16584)) :id=cli-flash-binaries
+
+A long-requested capability of the QMK CLI has been the ability to flash binaries directly, without needing to build a firmware. QMK provides prebuilt `develop`-based default firmwares on our [CI page](https://qmk.tzarc.io/) -- normally people would need [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases/latest) to flash them. This new functionality written by _@Erovia_ allows `qmk flash` to be provided the prebuilt file instead, simplifying the workflow for people who haven't got Toolbox available.
+
+## Changes Requiring User Action :id=changes-requiring-user-action
+
+### Default layers dropped from 32 to 16 ([#15286](https://github.com/qmk/qmk_firmware/pull/15286))
+
+QMK allows for controlling the maximum number of layers it supports through `LAYER_STATE_(8|16|32)BIT`. Each definition allows for the same number of maximum layers -- `LAYER_STATE_8BIT` => 8 layers. There is also a corresponding firmware size decrease that goes along with smaller numbers -- given the vast majority of users don't use more than 16 layers the default has been swapped to 16. AVR users who were not previously specifying their max layer count may see some space freed up as a result.
+
+### `RESET` => `QK_BOOT` ([#17940](https://github.com/qmk/qmk_firmware/pull/17940)) :id=reset-2-qk_boot
+
+Following the last breaking changes cycle, QMK has been migrating usages of `RESET` to `QK_BOOT` due to naming collisions with our upstream board support packages. [#17940](https://github.com/qmk/qmk_firmware/pull/17940) converts user keymaps across to use the new keycode name. `RESET` should also move to `QK_BOOT`.
+
+### Updated Keyboard Codebases :id=updated-keyboard-codebases
+
+The following keyboards have had their source moved within QMK:
+
+| Old Keyboard Name | New Keyboard Name |
+|------------------------|--------------------------|
+| gentleman65 | jkeys_design/gentleman65 |
+| handwired/hillside/0_1 | handwired/hillside/48 |
+| idobao/id80/v1/ansi | idobao/id80/v2/ansi |
+| idobao/id80/v1/iso | idobao/id80/v2/iso |
+
+### Data-driven USB IDs Refactoring ([#18152](https://github.com/qmk/qmk_firmware/pull/18152)) :id=usb-ids-Refactoring
+
+QMK has decided to deprecate the specification of USB IDs inside `config.h` in favour of `info.json`, eventually leaving data-driven as the only method to specify USB information.
+
+A significant number of keyboards have already been changed on `master` in a like-for-like fashion, and [#18152](https://github.com/qmk/qmk_firmware/pull/18152) performs the same transformations for keyboards already on `develop`.
+
+Previously in `config.h`:
+```c
+#define VENDOR_ID 0x1234
+#define PRODUCT_ID 0x5678
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Me
+#define PRODUCT MyKeyboard
+```
+
+Replaced by `info.json`:
+```json
+{
+ "keyboard_name": "MyKeyboard",
+ "manufacturer": "Me",
+ "usb": {
+ "vid": "0x1234",
+ "pid": "0x5678",
+ "device_version": "0.0.1"
+ },
+ // ... layouts, etc. ...
+}
+```
+
+#### Deprecation Schedule
+
+- From 2022 Aug 27, specifying USB information in `config.h` will produce warnings during build but will still function as previously.
+- From 2022 Nov 26, specifying USB information in `config.h` will cause compilation to fail.
+
+## Notable core changes :id=notable-core
+
+### Board converters ([#17514](https://github.com/qmk/qmk_firmware/pull/17514), [#17603](https://github.com/qmk/qmk_firmware/pull/17603), [#17711](https://github.com/qmk/qmk_firmware/pull/17711), [#17827](https://github.com/qmk/qmk_firmware/pull/17827), [#17593](https://github.com/qmk/qmk_firmware/pull/17593), [#17652](https://github.com/qmk/qmk_firmware/pull/17652), [#17595](https://github.com/qmk/qmk_firmware/pull/17595)) :id=board-converters
+
+Historically QMK had a `CONVERT_TO_PROTON_C` directive for `rules.mk` to allow people to replace an AVR-based Pro Micro with a QMK Proton C. Global parts shortages have prompted people to create their own pin-compatible boards -- QMK has made this conversion generic and now allows for drop-in replacements for a lot more boards. see the [Converters Feature](feature_converters.md) documentation for the full list of supported replacement boards -- in this breaking changes cycle we've gone from 1 to 7.
+
+### Add cli command to import keyboard|keymap|kbfirmware ([#16668](https://github.com/qmk/qmk_firmware/pull/16668)) :id=cli-import
+
+To help with importing keyboards and keymaps from other sources, _@zvecr_ added [#16668](https://github.com/qmk/qmk_firmware/pull/16668) which adds a new set of commands to the CLI to automatically import keyboards (`qmk import-keyboard -h`), keymaps (`qmk import-keymap -h`), and kbfirmware definitions (`qmk import-kbfirmware -h`) into QMK.
+
+The now-EOL kbfirmware allowed people who aren't set up with QMK the ability to create keyboard firmwares without requiring a full installation of QMK. Unfortunately, it targets a 7-year-old version of QMK -- adding frustration for users who want the newest features, as well as for QMK maintainers who have to spend time explaining why QMK can't just accept a drive-by code drop from kbfirmware. With any luck, this new command helps both camps!
+
+### Generic wear-leveling for EEPROM emulation ([#16996](https://github.com/qmk/qmk_firmware/pull/16996), [#17376](https://github.com/qmk/qmk_firmware/pull/17376), [#18102](https://github.com/qmk/qmk_firmware/pull/18102)) :id=wear-leveling
+
+QMK has had the ability to write to internal MCU flash in order to emulate EEPROM for some time now, but it was only limited to a small number of MCUs. The base HAL used by QMK for a large number of ARM devices provides a "proper" embedded MCU flash driver, so _@tzarc_ decoupled the wear-leveling algorithm from the old flash writing code, improved it, wrote some tests, and enabled its use for a much larger number of other devices... including RP2040's XIP flash, and external SPI NOR Flash.
+
+See the [EEPROM Driver](eeprom_driver.md) documentation for more information.
+
+### Pointing Device Improvements ([#16371](https://github.com/qmk/qmk_firmware/pull/16371), [#17111](https://github.com/qmk/qmk_firmware/pull/17111), [#17176](https://github.com/qmk/qmk_firmware/pull/17176), [#17482](https://github.com/qmk/qmk_firmware/pull/17482), [#17776](https://github.com/qmk/qmk_firmware/pull/17776), [#17613](https://github.com/qmk/qmk_firmware/pull/17613)) :id=pointing-device-improvements
+
+Ever since Pointing Device Driver support and Split Pointing Device support were added by _@drashna_ and _@daskygit_, there has been increased interest in the development of the pointing device subsystem and its associated code.
+
+Both the PMW33xx and the Cirque Pinnacle implementations have seen a lot of improvement to their code, as has the mouse code in general. Features like circular/edge scrolling for the Cirque, and Kinetic movement for any sensor with "lift detection" ([#17482](https://github.com/qmk/qmk_firmware/pull/17482)). Additionally, for those that make fast motions with their pointing devices, support for much larger mouse movement reports has been added ([#16371](https://github.com/qmk/qmk_firmware/pull/16371)).
+
+Other related changes:
+
+* Add support for large Mouse Reports ([#16371](https://github.com/qmk/qmk_firmware/pull/16371))
+* Improve PS/2 mouse performance ([#17111](https://github.com/qmk/qmk_firmware/pull/17111))
+* Mouse key kinetic mode fix ([#17176](https://github.com/qmk/qmk_firmware/pull/17176))
+* Circular scroll, inertial cursor ([#17482](https://github.com/qmk/qmk_firmware/pull/17482))
+* Create generic Pointing Device Pin defines ([#17776](https://github.com/qmk/qmk_firmware/pull/17776))
+* PMW33XX drivers overhaul ([#17613](https://github.com/qmk/qmk_firmware/pull/17613))
+
+---
+
+## Full changelist :id=full-changelist
+
+Core:
+* Tentative Teensy 3.5 support ([#14420](https://github.com/qmk/qmk_firmware/pull/14420))
+* Make default layer size 16-bit ([#15286](https://github.com/qmk/qmk_firmware/pull/15286))
+* Process all changed keys in one scan loop, deprecate `QMK_KEYS_PER_SCAN` ([#15292](https://github.com/qmk/qmk_firmware/pull/15292))
+* Do not enable PERMISSIVE_HOLD when TAPPING_TERM exceeds 500ms ([#15674](https://github.com/qmk/qmk_firmware/pull/15674))
+* Allow usage of ChibiOS's SIO driver for split keyboards ([#15907](https://github.com/qmk/qmk_firmware/pull/15907))
+* [Controller] Added board config for custom controller STeMCell ([#16287](https://github.com/qmk/qmk_firmware/pull/16287))
+* PoC: Swap Escape and Caps ([#16336](https://github.com/qmk/qmk_firmware/pull/16336))
+* Add support for large Mouse Reports ([#16371](https://github.com/qmk/qmk_firmware/pull/16371))
+* tap-dance: Restructure code and document in more detail ([#16394](https://github.com/qmk/qmk_firmware/pull/16394))
+* Teaching the CLI to flash binaries ([#16584](https://github.com/qmk/qmk_firmware/pull/16584))
+* Split ChibiOS usart split driver in protocol and hardware driver part ([#16669](https://github.com/qmk/qmk_firmware/pull/16669))
+* Added Wait time to sending each Keys for Dynamic Macros function ([#16800](https://github.com/qmk/qmk_firmware/pull/16800))
+* Added Delay time to sending each Keys for VIA Macros function feature ([#16810](https://github.com/qmk/qmk_firmware/pull/16810))
+* Improve avr wait_us() ([#16879](https://github.com/qmk/qmk_firmware/pull/16879))
+* Improve ENCODER_DEFAULT_POS to recognize lost ticks ([#16932](https://github.com/qmk/qmk_firmware/pull/16932))
+* Added emacs as an "operating system" for input mode. ([#16949](https://github.com/qmk/qmk_firmware/pull/16949))
+* 24LC32A EEPROM addition ([#16990](https://github.com/qmk/qmk_firmware/pull/16990))
+* Refactor steno and add `STENO_PROTOCOL = [all|txbolt|geminipr]` ([#17065](https://github.com/qmk/qmk_firmware/pull/17065))
+* improvements for Cirque Pinnacle trackpads ([#17091](https://github.com/qmk/qmk_firmware/pull/17091))
+* Use TAP_HOLD_CAPS_DELAY for KC_LOCKING_CAPS_LOCK ([#17099](https://github.com/qmk/qmk_firmware/pull/17099))
+* Improve PS/2 mouse performance ([#17111](https://github.com/qmk/qmk_firmware/pull/17111))
+* Update C standard to GNU11, C++ to GNU++14 ([#17114](https://github.com/qmk/qmk_firmware/pull/17114))
+* Added ws2812_pwm support for WB32 MCU. ([#17142](https://github.com/qmk/qmk_firmware/pull/17142))
+* Added ws2812_spi support for WB32 MCU ([#17143](https://github.com/qmk/qmk_firmware/pull/17143))
+* Make bootloader_jump for dualbank STM32 respect STM32_BOOTLOADER_DUAL_BANK_DELAY ([#17178](https://github.com/qmk/qmk_firmware/pull/17178))
+* Expose the time of the last change to the LED state ([#17222](https://github.com/qmk/qmk_firmware/pull/17222))
+* [Code] Add solid reactive gradient mode ([#17228](https://github.com/qmk/qmk_firmware/pull/17228))
+* Add keymap wrappers for introspection into the keymap. ([#17229](https://github.com/qmk/qmk_firmware/pull/17229))
+* Ensure eeconfig initialised before reading EEPROM handedness. ([#17256](https://github.com/qmk/qmk_firmware/pull/17256))
+* Add uf2-split-* make targets. ([#17257](https://github.com/qmk/qmk_firmware/pull/17257))
+* Removes terminal from QMK. ([#17258](https://github.com/qmk/qmk_firmware/pull/17258))
+* Make SPI Mode configurable for AW20216 and change default mode to 3 ([#17263](https://github.com/qmk/qmk_firmware/pull/17263))
+* Move SPLIT_HAND_PIN setup to split_pre_init ([#17271](https://github.com/qmk/qmk_firmware/pull/17271))
+* Allow larger SPLIT_USB_TIMEOUT with default SPLIT_USB_TIMEOUT_POLL ([#17272](https://github.com/qmk/qmk_firmware/pull/17272))
+* Feature-ify Send String ([#17275](https://github.com/qmk/qmk_firmware/pull/17275))
+* Rework paths for eeprom locations. ([#17326](https://github.com/qmk/qmk_firmware/pull/17326))
+* Pca9505/6 driver ([#17333](https://github.com/qmk/qmk_firmware/pull/17333))
+* Cirque Attenuation Setting ([#17342](https://github.com/qmk/qmk_firmware/pull/17342))
+* Scale brigthness for VIA ([#17352](https://github.com/qmk/qmk_firmware/pull/17352))
+* Ensure that rgb+via compiles in all cases ([#17355](https://github.com/qmk/qmk_firmware/pull/17355))
+* Wear-leveling EEPROM drivers: `embedded_flash`, `spi_flash`, `legacy` ([#17376](https://github.com/qmk/qmk_firmware/pull/17376))
+* In honor of king terry ([#17387](https://github.com/qmk/qmk_firmware/pull/17387))
+* tap-dance: Rename tests so that tap_dance is used consistently ([#17396](https://github.com/qmk/qmk_firmware/pull/17396))
+* IS31FL3737 Global Current Setting ([#17420](https://github.com/qmk/qmk_firmware/pull/17420))
+* [QP] Add ILI9488 support. ([#17438](https://github.com/qmk/qmk_firmware/pull/17438))
+* Mark GD32VF103 as ChibiOS-Contrib ([#17444](https://github.com/qmk/qmk_firmware/pull/17444))
+* ISSI Drivers Global Current Option ([#17448](https://github.com/qmk/qmk_firmware/pull/17448))
+* [Split] pointing transport check ([#17481](https://github.com/qmk/qmk_firmware/pull/17481))
+* Cirque trackpad features: circular scroll, inertial cursor ([#17482](https://github.com/qmk/qmk_firmware/pull/17482))
+* RGB heatmap skip NO_LED ([#17488](https://github.com/qmk/qmk_firmware/pull/17488))
+* Add kb2040 and sparkfun rp2040 converters ([#17514](https://github.com/qmk/qmk_firmware/pull/17514))
+* [style] rp2040 stage2 formatting ([#17516](https://github.com/qmk/qmk_firmware/pull/17516))
+* Also check /run/media/ for uf2 drives ([#17517](https://github.com/qmk/qmk_firmware/pull/17517))
+* RP2040 emulated EEPROM. ([#17519](https://github.com/qmk/qmk_firmware/pull/17519))
+* Make debounce algorithms signal matrix changes ([#17554](https://github.com/qmk/qmk_firmware/pull/17554))
+* Update PM2040 I2C pins ([#17578](https://github.com/qmk/qmk_firmware/pull/17578))
+* Added implementation of WB32 MCU wear_leveling_efl. ([#17579](https://github.com/qmk/qmk_firmware/pull/17579))
+* Use Pro Micro SDA/SCL pinout for PM2040 ([#17595](https://github.com/qmk/qmk_firmware/pull/17595))
+* Refactor Pixel Fractal effect ([#17602](https://github.com/qmk/qmk_firmware/pull/17602))
+* Add Blok RP2040 converter ([#17603](https://github.com/qmk/qmk_firmware/pull/17603))
+* Use polled waiting on ChibiOS platforms that support it ([#17607](https://github.com/qmk/qmk_firmware/pull/17607))
+* Stabilize Half-duplex RP2040 PIO split comms ([#17612](https://github.com/qmk/qmk_firmware/pull/17612))
+* PMW33XX drivers overhaul ([#17613](https://github.com/qmk/qmk_firmware/pull/17613))
+* Include stdint.h in avr/i2c_master.h ([#17639](https://github.com/qmk/qmk_firmware/pull/17639))
+* Add led matrix support for CKLED2001 ([#17643](https://github.com/qmk/qmk_firmware/pull/17643))
+* `STM32_USB_USE_OTG1` => `USB_ENDPOINTS_ARE_REORDERABLE` ([#17647](https://github.com/qmk/qmk_firmware/pull/17647))
+* Allow MCU-specific overrides for SPI flags. ([#17650](https://github.com/qmk/qmk_firmware/pull/17650))
+* Update LED/RGB Matrix flag function behavior ([#17651](https://github.com/qmk/qmk_firmware/pull/17651))
+* Cirque circular scroll: Support POINTING_DEVICE_COMBINED ([#17654](https://github.com/qmk/qmk_firmware/pull/17654))
+* Add support for PAW3204 Optical Sensor ([#17669](https://github.com/qmk/qmk_firmware/pull/17669))
+* Add LED limits call ([#17679](https://github.com/qmk/qmk_firmware/pull/17679))
+* Move Pointing Device code to a subdirectory ([#17684](https://github.com/qmk/qmk_firmware/pull/17684))
+* Avoid OOB in dynamic_keymap_reset ([#17695](https://github.com/qmk/qmk_firmware/pull/17695))
+* Allow dynamic keymap to compile without `via.h` ([#17703](https://github.com/qmk/qmk_firmware/pull/17703))
+* Use correct angle tune range of +/-127 on PMW33XX ([#17708](https://github.com/qmk/qmk_firmware/pull/17708))
+* Add Bonsai C4 converter ([#17711](https://github.com/qmk/qmk_firmware/pull/17711))
+* VIA Encoder Map Support ([#17734](https://github.com/qmk/qmk_firmware/pull/17734))
+* Move Pointing Device Initialization to after Split Post Initialization ([#17740](https://github.com/qmk/qmk_firmware/pull/17740))
+* Add ability to enter bootloader mode from `QK_MAKE` ([#17745](https://github.com/qmk/qmk_firmware/pull/17745))
+* Add `tap_code16_delay` ([#17748](https://github.com/qmk/qmk_firmware/pull/17748))
+* Implement relative mode for Cirque trackpad ([#17760](https://github.com/qmk/qmk_firmware/pull/17760))
+* Create generic Pointing Device Pin defines ([#17776](https://github.com/qmk/qmk_firmware/pull/17776))
+* Constrain Cirque Pinnacle coordinates ([#17803](https://github.com/qmk/qmk_firmware/pull/17803))
+* Refactor/rename postprocess_steno_user → post_process_steno_user ([#17823](https://github.com/qmk/qmk_firmware/pull/17823))
+* Add Bit-C PRO converter ([#17827](https://github.com/qmk/qmk_firmware/pull/17827))
+* guard RPC invocation by checking RPC info against crc checksum ([#17840](https://github.com/qmk/qmk_firmware/pull/17840))
+* Add ST7735 driver to Quantum Painter ([#17848](https://github.com/qmk/qmk_firmware/pull/17848))
+* Add minimal STM32F103C6 support ([#17853](https://github.com/qmk/qmk_firmware/pull/17853))
+* Remove legacy AVR ssd1306 driver ([#17864](https://github.com/qmk/qmk_firmware/pull/17864))
+* Remove tmk_core 'serial' code ([#17866](https://github.com/qmk/qmk_firmware/pull/17866))
+* Use LT_ZCAR in place of LT_PLUS for modded kc definitions of keymap_lithuanian_qwerty.h ([#18000](https://github.com/qmk/qmk_firmware/pull/18000))
+* Remove invisible variation selector-15 from keymap_japanese.h ([#18007](https://github.com/qmk/qmk_firmware/pull/18007))
+* define CZ_PERC S(CZ_PLUS) → define CZ_PERC S(CZ_EQL) ([#18008](https://github.com/qmk/qmk_firmware/pull/18008))
+* KR_DQUO S(KR_COLN) → KR_DQUO S(KR_QUOT) in keymap_korean.h ([#18011](https://github.com/qmk/qmk_firmware/pull/18011))
+* Replace ; by : in the shifted symbols ASCII art of keymap_norman ([#18029](https://github.com/qmk/qmk_firmware/pull/18029))
+* Add eeprom defaults for tinyuf2 bootloader ([#18042](https://github.com/qmk/qmk_firmware/pull/18042))
+* Remove duplicate COMBINING HORN in keymap_us_extended.h ([#18045](https://github.com/qmk/qmk_firmware/pull/18045))
+* Nix shell updates for `develop` ([#18131](https://github.com/qmk/qmk_firmware/pull/18131))
+
+CLI:
+* Add cli command to import keyboard|keymap|kbfirmware ([#16668](https://github.com/qmk/qmk_firmware/pull/16668))
+* Publish data as part of API generation ([#17020](https://github.com/qmk/qmk_firmware/pull/17020))
+* Allow encoder config from info.json ([#17295](https://github.com/qmk/qmk_firmware/pull/17295))
+* `qmk doctor`: show arch for macOS ([#17356](https://github.com/qmk/qmk_firmware/pull/17356))
+* Use --exclude-from=.gitignore in place of --exclude-standard ([#17399](https://github.com/qmk/qmk_firmware/pull/17399))
+* Improve importer workflow ([#17707](https://github.com/qmk/qmk_firmware/pull/17707))
+* Remove legacy bootmagic cli parsing ([#18099](https://github.com/qmk/qmk_firmware/pull/18099))
+* Align CLI requirements ([#18117](https://github.com/qmk/qmk_firmware/pull/18117))
+
+Submodule updates:
+* Add Raspberry Pi RP2040 support ([#14877](https://github.com/qmk/qmk_firmware/pull/14877))
+* Update mpaland/printf to eyalroz/printf fork ([#16163](https://github.com/qmk/qmk_firmware/pull/16163))
+* Generic wear-leveling algorithm ([#16996](https://github.com/qmk/qmk_firmware/pull/16996))
+* Update LUFA submodule ([#17368](https://github.com/qmk/qmk_firmware/pull/17368))
+* Update V-USB submodule ([#17385](https://github.com/qmk/qmk_firmware/pull/17385))
+* Update ChibiOS-Contrib ([#17540](https://github.com/qmk/qmk_firmware/pull/17540))
+* Update to latest ChibiOS-Contrib. ([#18016](https://github.com/qmk/qmk_firmware/pull/18016))
+* Update LUFA submodule ([#18168](https://github.com/qmk/qmk_firmware/pull/18168))
+
+Keyboards:
+* GMMK 2 WBG7 MCU compatibility ([#16436](https://github.com/qmk/qmk_firmware/pull/16436))
+* bastardkb: restructure folder hierarchy ([#16778](https://github.com/qmk/qmk_firmware/pull/16778))
+* Add Gentleman 65 SE Solderd PCB support ([#16992](https://github.com/qmk/qmk_firmware/pull/16992))
+* Move/Rename to Hillside48, simplify default keymap ([#17210](https://github.com/qmk/qmk_firmware/pull/17210))
+* IDOBAO ID67 code touch-ups and include factory keymap ([#17231](https://github.com/qmk/qmk_firmware/pull/17231))
+* IDOBAO ID87v2 code rewrite and include factory keymap ([#17232](https://github.com/qmk/qmk_firmware/pull/17232))
+* IDOBAO ID80v3 code rewrite and include factory keymap ([#17234](https://github.com/qmk/qmk_firmware/pull/17234))
+* IDOBAO ID80v1 folder rename ([#17265](https://github.com/qmk/qmk_firmware/pull/17265))
+* Fine!40 PCB Support ([#17426](https://github.com/qmk/qmk_firmware/pull/17426))
+* Update Charybdis code for Extended Mouse reports ([#17435](https://github.com/qmk/qmk_firmware/pull/17435))
+* (develop)AP2: Enable support for WL EEPROM Driver ([#17506](https://github.com/qmk/qmk_firmware/pull/17506))
+* (develop)Keychron Q2: Enable support for WL EEPROM Driver ([#17507](https://github.com/qmk/qmk_firmware/pull/17507))
+* Add Adafruit Macropad RP2040 ([#17512](https://github.com/qmk/qmk_firmware/pull/17512))
+* Add RP2040 config defaults ([#17557](https://github.com/qmk/qmk_firmware/pull/17557))
+* Add support keyboard Feker IK75 ([#17611](https://github.com/qmk/qmk_firmware/pull/17611))
+* boardsource/holiday/spooky data driven ([#17632](https://github.com/qmk/qmk_firmware/pull/17632))
+* boardsource/lulu data driven ([#17638](https://github.com/qmk/qmk_firmware/pull/17638))
+* Added support for gmmk pro rev2 keyboard. ([#17655](https://github.com/qmk/qmk_firmware/pull/17655))
+* boardsource/microdox data driven ([#17675](https://github.com/qmk/qmk_firmware/pull/17675))
+* Remove full bootmagic config from user files ([#17702](https://github.com/qmk/qmk_firmware/pull/17702))
+* (develop) Update bootmagic for Adafruit Macropad ([#17755](https://github.com/qmk/qmk_firmware/pull/17755))
+* Add a kb2040 version of the onkey keyboard that works with the oled keymap ([#17786](https://github.com/qmk/qmk_firmware/pull/17786))
+* Enable mousekeys by default for RGBKB Sol3 ([#17842](https://github.com/qmk/qmk_firmware/pull/17842))
+* More glyph transformations for spidey3 userspace ([#17854](https://github.com/qmk/qmk_firmware/pull/17854))
+* Default rgblight ([#17855](https://github.com/qmk/qmk_firmware/pull/17855))
+* Refactor satt/comet46 to use core OLED driver ([#17856](https://github.com/qmk/qmk_firmware/pull/17856))
+* Convert yosino58 to use split common ([#17861](https://github.com/qmk/qmk_firmware/pull/17861))
+* Migrate crkbd keymaps to oled driver ([#17863](https://github.com/qmk/qmk_firmware/pull/17863))
+* Overhaul uzu42 ([#17868](https://github.com/qmk/qmk_firmware/pull/17868))
+* Update ginkgo65hot to allow use of community layouts ([#17911](https://github.com/qmk/qmk_firmware/pull/17911))
+* Remove `UNUSED_PINS` ([#17931](https://github.com/qmk/qmk_firmware/pull/17931))
+* RESET -> QK_BOOT user keymaps ([#17940](https://github.com/qmk/qmk_firmware/pull/17940))
+* Add cursor layer to DMQ Spin ([#17996](https://github.com/qmk/qmk_firmware/pull/17996))
+* add new keyboard 'soda/cherish' ([#18057](https://github.com/qmk/qmk_firmware/pull/18057))
+* Move keyboard USB IDs and strings to data driven: develop ([#18152](https://github.com/qmk/qmk_firmware/pull/18152))
+
+Keyboard fixes:
+* Fixup SPI mode 3 => 0 on tzarc/djinn, `develop`. ([#17440](https://github.com/qmk/qmk_firmware/pull/17440))
+* Fixup doio/kb16 ([#17545](https://github.com/qmk/qmk_firmware/pull/17545))
+* Adafruit Macropad: Add VIA keymap, fix default km ([#17735](https://github.com/qmk/qmk_firmware/pull/17735))
+* Fix compilation issues for Charybdis/Dilemma ([#17791](https://github.com/qmk/qmk_firmware/pull/17791))
+* bastardkb: fix info.json changes that got reverted during the last merge from `master` to `develop` ([#17800](https://github.com/qmk/qmk_firmware/pull/17800))
+* Fixup uzu42 ([#17867](https://github.com/qmk/qmk_firmware/pull/17867))
+* use correct function in Dilemma splinky ([#17923](https://github.com/qmk/qmk_firmware/pull/17923))
+* Fix compilation issues for Boardsource Microdox ([#18037](https://github.com/qmk/qmk_firmware/pull/18037))
+* Fixup gmmk/pro/rev2 USB Data ([#18056](https://github.com/qmk/qmk_firmware/pull/18056))
+
+Others:
+* backlight|led 'on state' for DD configuration ([#17383](https://github.com/qmk/qmk_firmware/pull/17383))
+* Dump out the largest symbols in flash and in RAM. ([#17397](https://github.com/qmk/qmk_firmware/pull/17397))
+* Re-order user space rules inclusion ([#17459](https://github.com/qmk/qmk_firmware/pull/17459))
+* Update feature_split_keyboard.md to add extra detail about left and right matrices. ([#17492](https://github.com/qmk/qmk_firmware/pull/17492))
+* Swap F4x1 default board files away from blackpill ([#17522](https://github.com/qmk/qmk_firmware/pull/17522))
+* Add converter docs ([#17593](https://github.com/qmk/qmk_firmware/pull/17593))
+* Updates to Pointing Device Docs ([#17777](https://github.com/qmk/qmk_firmware/pull/17777))
+* Add deprecated check for RGBLIGHT_ANIMATIONS ([#17832](https://github.com/qmk/qmk_firmware/pull/17832))
+* Remove OLED driver Split Common warning ([#17862](https://github.com/qmk/qmk_firmware/pull/17862))
+* Revert " Re-order user space rules inclusion (#17459)" ([#18032](https://github.com/qmk/qmk_firmware/pull/18032))
+
+Bugs:
+* Minor schema fixes ([#14200](https://github.com/qmk/qmk_firmware/pull/14200))
+* Fix buffer size for WS2812 PWM driver ([#17046](https://github.com/qmk/qmk_firmware/pull/17046))
+* Fix AVR I2C master 1ms timeout ([#17174](https://github.com/qmk/qmk_firmware/pull/17174))
+* Mouse key kinetic mode fix ([#17176](https://github.com/qmk/qmk_firmware/pull/17176))
+* Fix RGB heatmap to use XY positions and use correct led limits. ([#17184](https://github.com/qmk/qmk_firmware/pull/17184))
+* Fix keys being discarded after using the leader key ([#17287](https://github.com/qmk/qmk_firmware/pull/17287))
+* Fixup pimoroni trackball ([#17335](https://github.com/qmk/qmk_firmware/pull/17335))
+* Fix via builds broken by brightness scaling ([#17354](https://github.com/qmk/qmk_firmware/pull/17354))
+* SPI Bugfix for ChibiOS `21.11.1` => `21.11.2` ([#17371](https://github.com/qmk/qmk_firmware/pull/17371))
+* Additional schema fixes ([#17414](https://github.com/qmk/qmk_firmware/pull/17414))
+* Fix deadlocks on disconnected secondary half ([#17423](https://github.com/qmk/qmk_firmware/pull/17423))
+* [Fix] Fix compilation warning for non-split keebs after #17423 ([#17439](https://github.com/qmk/qmk_firmware/pull/17439))
+* Fix Caps Word to treat mod-taps more consistently. ([#17463](https://github.com/qmk/qmk_firmware/pull/17463))
+* Fix docs regarding `USB_SUSPEND_WAKEUP_DELAY` ([#17501](https://github.com/qmk/qmk_firmware/pull/17501))
+* Fixup SSD1351 build after #17438 ([#17533](https://github.com/qmk/qmk_firmware/pull/17533))
+* Fixup SPI init procedure, SPI EEPROM sequencing ([#17534](https://github.com/qmk/qmk_firmware/pull/17534))
+* Fix Caps Word capitalization when used with Combos + Auto Shift. ([#17549](https://github.com/qmk/qmk_firmware/pull/17549))
+* Allow for `keymaps` array to be implemented in a file other than `$(KEYMAP_C)` ([#17559](https://github.com/qmk/qmk_firmware/pull/17559))
+* [Fix] printf update aftermath ([#17584](https://github.com/qmk/qmk_firmware/pull/17584))
+* Fix rgbkb/sol/rev2 build issues ([#17601](https://github.com/qmk/qmk_firmware/pull/17601))
+* More DD encoder fixes ([#17615](https://github.com/qmk/qmk_firmware/pull/17615))
+* [Fix] Make ChibiOS `_wait.h` independent of `quantum.h` ([#17645](https://github.com/qmk/qmk_firmware/pull/17645))
+* Grammar fixes for docs/feature_converters.md ([#17652](https://github.com/qmk/qmk_firmware/pull/17652))
+* Fix compilation issue with Cirque Guestures file ([#17656](https://github.com/qmk/qmk_firmware/pull/17656))
+* Fix compile issue with LED Matrix ([#17658](https://github.com/qmk/qmk_firmware/pull/17658))
+* Post-bootloader EFL/SPI fixes. ([#17661](https://github.com/qmk/qmk_firmware/pull/17661))
+* Fix LED limit loop ([#17678](https://github.com/qmk/qmk_firmware/pull/17678))
+* [Fix] Use correct angle tune range of +/-30 on PMW33XX ([#17693](https://github.com/qmk/qmk_firmware/pull/17693))
+* Fix AVR compilation of FNV by using standard integer typenames. ([#17716](https://github.com/qmk/qmk_firmware/pull/17716))
+* fix syntax error in header file ([#17732](https://github.com/qmk/qmk_firmware/pull/17732))
+* Fix custom debug function and sample output ([#17790](https://github.com/qmk/qmk_firmware/pull/17790))
+* Fix QK_MAKE's reboot check ([#17795](https://github.com/qmk/qmk_firmware/pull/17795))
+* Chibios: Stop I2C peripheral on transaction error ([#17798](https://github.com/qmk/qmk_firmware/pull/17798))
+* Fix ChibiOS `i2c_master` error codes ([#17808](https://github.com/qmk/qmk_firmware/pull/17808))
+* Update ChibiOS Contrib for RP2040 fixes ([#17817](https://github.com/qmk/qmk_firmware/pull/17817))
+* RP2040 disable PIO IRQs on serial timeout ([#17839](https://github.com/qmk/qmk_firmware/pull/17839))
+* Fix POINTING_DEVICE_GESTURES_SCROLL_ENABLE typo ([#17850](https://github.com/qmk/qmk_firmware/pull/17850))
+* Fixup compilation of printf-like functions with uint32_t args. ([#17904](https://github.com/qmk/qmk_firmware/pull/17904))
+* Fix issue with #17904. ([#17905](https://github.com/qmk/qmk_firmware/pull/17905))
+* Always run pointing device init ([#17936](https://github.com/qmk/qmk_firmware/pull/17936))
+* Align TO() max layers with other keycodes ([#17989](https://github.com/qmk/qmk_firmware/pull/17989))
+* Fix Bépo's BP_NNBS (narrow non-breaking space) ([#17999](https://github.com/qmk/qmk_firmware/pull/17999))
+* Move Encoder+Encoder Map from generic features ([#18018](https://github.com/qmk/qmk_firmware/pull/18018))
+* Fix wrong varaible in encoder block ([#18020](https://github.com/qmk/qmk_firmware/pull/18020))
+* Fix LV_CCAR and LV_NCED in keymap_latvian.h ([#18025](https://github.com/qmk/qmk_firmware/pull/18025))
+* Use ANSI ASCII art and fix comments for LT_COLN and LT_UNDS in keymap_lithuanian_qwerty.h ([#18028](https://github.com/qmk/qmk_firmware/pull/18028))
+* Partially revert some WB32 specific changes ([#18038](https://github.com/qmk/qmk_firmware/pull/18038))
+* Fix Emulated EEPROM issue with F466 ([#18039](https://github.com/qmk/qmk_firmware/pull/18039))
+* Fix DV_SCLN and DV_COLN in keymap_spanish_dvorak.h ([#18043](https://github.com/qmk/qmk_firmware/pull/18043))
+* Fix missing development_board schema entry ([#18050](https://github.com/qmk/qmk_firmware/pull/18050))
+* Add key event check to `is_tap_record` and remove `is_tap_key` ([#18063](https://github.com/qmk/qmk_firmware/pull/18063))
+* Fix GD32VF103 WS2812 PWM driver ([#18067](https://github.com/qmk/qmk_firmware/pull/18067))
+* Fix new-keyboard default for RP2040 bootloader ([#18100](https://github.com/qmk/qmk_firmware/pull/18100))
+* Fixup F4xx wear-leveling bootloader check ([#18102](https://github.com/qmk/qmk_firmware/pull/18102))
+* Fix PID value for the Keyboardio Atreus 2 bootloader ([#18116](https://github.com/qmk/qmk_firmware/pull/18116))
+* Add missing SS_LOPT and SS_ROPT defines ([#18175](https://github.com/qmk/qmk_firmware/pull/18175))
diff --git a/docs/_summary.md b/docs/_summary.md
index 11f5e1dd51..a0d2b2a949 100644
--- a/docs/_summary.md
+++ b/docs/_summary.md
@@ -4,6 +4,7 @@
* [Building Your First Firmware](newbs_building_firmware.md)
* [Flashing Firmware](newbs_flashing.md)
* [Getting Help/Support](support.md)
+ * [Building With GitHub Userspace](newbs_building_firmware_workflow.md)
* [Other Resources](newbs_learn_more_resources.md)
* [Syllabus](syllabus.md)
@@ -78,17 +79,18 @@
* [Caps Word](feature_caps_word.md)
* [Combos](feature_combo.md)
* [Debounce API](feature_debounce_type.md)
+ * [EEPROM](feature_eeprom.md)
* [Key Lock](feature_key_lock.md)
* [Key Overrides](feature_key_overrides.md)
* [Layers](feature_layers.md)
* [One Shot Keys](one_shot_keys.md)
- * [Pointing Device](feature_pointing_device.md)
* [Raw HID](feature_rawhid.md)
+ * [Secure](feature_secure.md)
+ * [Send String](feature_send_string.md)
* [Sequencer](feature_sequencer.md)
* [Swap Hands](feature_swap_hands.md)
* [Tap Dance](feature_tap_dance.md)
* [Tap-Hold Configuration](tap_hold.md)
- * [Terminal](feature_terminal.md)
* [Unicode](feature_unicode.md)
* [Userspace](feature_userspace.md)
* [WPM Calculation](feature_wpm.md)
@@ -107,6 +109,7 @@
* [Audio](feature_audio.md)
* [Bluetooth](feature_bluetooth.md)
* [Bootmagic Lite](feature_bootmagic.md)
+ * [Converters](feature_converters.md)
* [Custom Matrix](custom_matrix.md)
* [Digitizer](feature_digitizer.md)
* [DIP Switch](feature_dip_switch.md)
@@ -115,7 +118,7 @@
* [Joystick](feature_joystick.md)
* [LED Indicators](feature_led_indicators.md)
* [MIDI](feature_midi.md)
- * [Proton C Conversion](proton_c_conversion.md)
+ * [Pointing Device](feature_pointing_device.md)
* [PS/2 Mouse](feature_ps2_mouse.md)
* [Split Keyboard](feature_split_keyboard.md)
* [Stenography](feature_stenography.md)
@@ -133,7 +136,7 @@
* Breaking Changes
* [Overview](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
- * [Most Recent ChangeLog](ChangeLog/20220528.md "QMK v0.17.0 - 2022 May 28")
+ * [Most Recent ChangeLog](ChangeLog/20220827.md "QMK v0.18.0 - 2022 Aug 27")
* [Past Breaking Changes](breaking_changes_history.md)
* C Development
@@ -147,6 +150,7 @@
* [SPI Driver](spi_driver.md)
* [WS2812 Driver](ws2812_driver.md)
* [EEPROM Driver](eeprom_driver.md)
+ * [Flash Driver](flash_driver.md)
* ['serial' Driver](serial_driver.md)
* [UART Driver](uart_driver.md)
* [GPIO Controls](gpio_control.md)
@@ -165,6 +169,9 @@
* Arm/ChibiOS
* [Selecting an MCU](platformdev_selecting_arm_mcu.md)
* [Early initialization](platformdev_chibios_earlyinit.md)
+ * [Raspberry Pi RP2040](platformdev_rp2040.md)
+ * [Proton C](platformdev_proton_c.md)
+ * [WeAct Blackpill F411](platformdev_blackpill_f411.md)
* QMK Reference
* [Contributing to QMK](contributing.md)
diff --git a/docs/api_docs.md b/docs/api_docs.md
index eefb61a54d..e2f970f3ab 100644
--- a/docs/api_docs.md
+++ b/docs/api_docs.md
@@ -16,7 +16,7 @@ This service is an asynchronous API for compiling custom keymaps. You POST some
"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"]
+ ["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","QK_BOOT","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"]
]
}
```
diff --git a/docs/audio_driver.md b/docs/audio_driver.md
index 81c3390074..ffd9c8d5ad 100644
--- a/docs/audio_driver.md
+++ b/docs/audio_driver.md
@@ -113,15 +113,17 @@ Additionally, in the board config, you'll want to make changes to enable the DAC
### DAC Config
-| Define | Defaults | Description --------------------------------------------------------------------------------------------- |
+| Define | Defaults | Description |
+| -------------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `AUDIO_DAC_SAMPLE_MAX` | `4095U` | Highest value allowed. Lower value means lower volume. And 4095U is the upper limit, since this is limited to a 12 bit value. Only effects non-pregenerated samples. |
-| `AUDIO_DAC_OFF_VALUE` | `AUDIO_DAC_SAMPLE_MAX / 2` | The value of the DAC when notplaying anything. Some setups may require a high (`AUDIO_DAC_SAMPLE_MAX`) or low (`0`) value here. |
+| `AUDIO_DAC_OFF_VALUE` | `AUDIO_DAC_SAMPLE_MAX / 2` | The value of the DAC when notplaying anything. Some setups may require a high (`AUDIO_DAC_SAMPLE_MAX`) or low (`0`) value here. |
| `AUDIO_MAX_SIMULTANEOUS_TONES` | __see next table__ | The number of tones that can be played simultaneously. A value that is too high may freeze the controller or glitch out when too many tones are being played. |
-| `AUDIO_DAC_SAMPLE_RATE` | __see next table__ | Effective bit rate of the DAC (in hertz), higher limits simultaneous tones, and lower sacrifices quality. |
+| `AUDIO_DAC_SAMPLE_RATE` | __see next table__ | Effective bit rate of the DAC (in hertz), higher limits simultaneous tones, and lower sacrifices quality. |
There are a number of predefined quality settings that you can use, with "sane minimum" being the default. You can use custom values by simply defining the sample rate and number of simultaneous tones, instead of using one of the listed presets.
| Define | Sample Rate | Simultaneous tones |
+| --------------------------------- | ----------- | ------------------- |
| `AUDIO_DAC_QUALITY_VERY_LOW` | `11025U` | `8` |
| `AUDIO_DAC_QUALITY_LOW` | `22040U` | `4` |
| `AUDIO_DAC_QUALITY_HIGH` | `44100U` | `2` |
diff --git a/docs/breaking_changes.md b/docs/breaking_changes.md
index f0aff303a9..b701a70eeb 100644
--- a/docs/breaking_changes.md
+++ b/docs/breaking_changes.md
@@ -8,6 +8,7 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## What has been included in past Breaking Changes?
+* [2022 Aug 27](ChangeLog/20220827.md)
* [2022 May 28](ChangeLog/20220528.md)
* [2022 Feb 26](ChangeLog/20220226.md)
* [2021 Nov 27](ChangeLog/20211127.md)
@@ -22,17 +23,18 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## When is the next Breaking Change?
-The next Breaking Change is scheduled for August 27, 2022.
+The next Breaking Change is scheduled for November 26, 2022.
### Important Dates
-* [x] 2022 May 28 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
-* [ ] 2022 Jul 31 - `develop` closed to new PR's.
-* [ ] 2022 Jul 31 - Call for testers.
-* [ ] 2022 Aug 13 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
-* [ ] 2022 Aug 25 - `master` is locked, no PR's merged.
-* [ ] 2022 Aug 27 - Merge `develop` to `master`.
-* [ ] 2022 Aug 27 - `master` is unlocked. PR's can be merged again.
+* 2022 Aug 27 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
+* 2022 Oct 29 - `develop` closed to new PR's.
+* 2022 Oct 29 - Call for testers.
+* 2022 Nov 12 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
+* 2022 Nov 19 - `develop` is locked, only critical bugfix PR's merged.
+* 2022 Nov 24 - `master` is locked, no PR's merged.
+* 2022 Nov 26 - Merge `develop` to `master`.
+* 2022 Nov 26 - `master` is unlocked. PR's can be merged again.
## What changes will be included?
@@ -43,7 +45,7 @@ If you want your breaking change to be included in this round you need to create
Criteria for acceptance:
* The PR is complete and ready to merge
-* The PR has a ChangeLog file describing the changes under `<qmk_firmware>/docs/Changelog/20220827`.
+* The PR has a ChangeLog file describing the changes under `<qmk_firmware>/docs/Changelog/20221126`.
* This should be in Markdown format, with a name in the format `PR12345.md`, substituting the digits for your PR's ID.
* One strong recommendation that the ChangeLog document matches the PR description on GitHub, so as to ensure traceability.
@@ -54,53 +56,47 @@ This section documents various processes we use when running the Breaking Change
### 4 Weeks Before Merge
* `develop` is now closed to new PR's, only fixes for current PR's may be merged
-* Post call for testers
- * [ ] Discord
- * [ ] GitHub PR
- * [ ] https://reddit.com/r/olkb
+* Post call for testers: message `@Breaking Changes Updates` on `#qmk_firmware` in Discord:
+ * `@Breaking Changes Updates -- Hey folks, last day for functional PRs to be raised against qmk_firmware for this breaking changes cycle is today.`
### 2 Weeks Before Merge
* `develop` is now closed to existing PR merges, only bugfixes for previous merges may be included
-* Post call for testers
- * [ ] Discord
- * [ ] GitHub PR
- * [ ] https://reddit.com/r/olkb
+* Post call for testers: message `@Breaking Changes Updates` on `#qmk_firmware` in Discord.
+ * `@Breaking Changes Updates -- Hey folks, last day for functional PRs to be merged into qmk_firmware for this breaking changes cycle is today. After that, we're handling bugfixes only.`
### 1 Week Before Merge
-* Announce that master will be closed from <2 Days Before> to <Day of Merge>
- * [ ] Discord
- * [ ] GitHub PR
- * [ ] https://reddit.com/r/olkb
+* `develop` is now closed to PR merges, only critical bugfixes may be included
+* Announce that master will be closed from <2 Days Before> to <Day of Merge> -- message `@Breaking Changes Updates` on `#qmk_firmware` in Discord:
+ * `@Breaking Changes Updates -- Hey folks, last day for functional PRs to be merged into qmk_firmware for this breaking changes cycle is today. After that, we're handling bugfixes only.`
### 2 Days Before Merge
+* `master` is now closed to PR merges
* Announce that master is closed for 2 days
- * [ ] Discord
- * [ ] GitHub PR
- * [ ] https://reddit.com/r/olkb
+ * `@Breaking Changes Updates -- Hey folks, the master branch of qmk_firmware is now locked for the next couple of days while we prepare to merge the newest batch of changes from develop.`
### Day Of Merge
* `qmk_firmware` git commands
- * [ ] `git checkout develop`
- * [ ] `git pull --ff-only`
- * [ ] Edit `readme.md`
- * [ ] Remove the notes about `develop`
- * [ ] Roll up the ChangeLog into one file.
- * [ ] `git commit -m 'Merge point for <DATE> Breaking Change'`
- * [ ] `git push upstream develop`
+ * `git checkout develop`
+ * `git pull --ff-only`
+ * Edit `readme.md`
+ * Remove the notes about `develop`
+ * Roll up the ChangeLog into one file.
+ * `git commit -m 'Merge point for <DATE> Breaking Change'`
+ * `git push upstream develop`
* GitHub Actions
- * [ ] Create a PR for `develop`
- * [ ] **Turn off 'Automatically delete head branches' for the repository** -- confirm with @qmk/directors that it is done before continuing
+ * Create a PR for `develop`
+ * **Turn off 'Automatically delete head branches' for the repository** -- confirm with @qmk/directors that it is done before continuing
* `qmk_firmware` git commands
- * [ ] `git checkout master`
- * [ ] `git pull --ff-only`
- * [ ] `git merge --no-ff develop`
- * [ ] `git tag <next_version>` # Prevent the breakpoint tag from confusing version incrementing
- * [ ] `git push upstream <next_version>`
- * [ ] `git push upstream master`
+ * `git checkout master`
+ * `git pull --ff-only`
+ * `git merge --no-ff develop`
+ * `git tag <next_version>` # Prevent the breakpoint tag from confusing version incrementing
+ * `git push upstream <next_version>`
+ * `git push upstream master`
## Post-merge operations
@@ -109,28 +105,72 @@ This section documents various processes we use when running the Breaking Change
This happens immediately after the previous `develop` branch is merged to `master`.
* `qmk_firmware` git commands
- * [ ] `git checkout master`
- * [ ] `git pull --ff-only`
- * [ ] `git checkout develop`
- * [ ] `git pull --ff-only`
- * [ ] `git merge --no-ff master`
- * [ ] Edit `readme.md`
- * [ ] Add a big notice at the top that this is a testing branch.
- * [ ] Include a link to this document
- * [ ] `git commit -m 'Branch point for <DATE> Breaking Change'`
- * [ ] `git tag breakpoint_<YYYY>_<MM>_<DD>`
- * [ ] `git push upstream breakpoint_<YYYY>_<MM>_<DD>`
-
+ * `git checkout master`
+ * `git pull --ff-only`
+ * `git checkout develop`
+ * `git pull --ff-only`
+ * `git merge --no-ff master`
+ * Edit `readme.md`
+ * Add a big notice at the top that this is a testing branch. See previous revisions of the `develop` branch.
+ * Include a link to this document
+ * `git commit -m 'Branch point for <DATE> Breaking Change'`
+ * `git tag breakpoint_<YYYY>_<MM>_<DD>`
+ * `git push upstream breakpoint_<YYYY>_<MM>_<DD>`
+
* All submodules under `lib` now need to be checked against their QMK-based forks:
- * [ ] `git submodule foreach git log -n1`
- * [ ] Validate each submodule SHA1 matches the qmk fork, e.g. for ChibiOS:
+ * `git submodule foreach git log -n1`
+ * Validate each submodule SHA1 matches the qmk fork, e.g. for ChibiOS:
* Go to [qmk/ChibiOS](https://github.com/qmk/ChibiOS)
* Compare the commit hash in the above output to the commit hash in the repository
- * If there's a mismatch:
- * [ ] `cd lib/chibios`
- * [ ] `git fetch --all`
- * [ ] `git checkout master`
- * [ ] `git reset --hard <commit hash>`
- * [ ] `git push origin master --force-with-lease`
+ * If there's a mismatch, that repository needs to have its `master` branch updated to match (otherwise Configurator won't work):
+ * `cd lib/chibios`
+ * `git fetch --all`
+ * `git checkout master`
+ * `git reset --hard <commit hash>`
+ * `git push origin master --force-with-lease`
+
+* Announce that both `master` and `develop` are now unlocked -- message `@Breaking Changes Updates` on `#qmk_firmware` in Discord:
+ * `@Breaking Changes Updates -- Hey folks, develop has now been merged into master -- newest batch of changes are now available for everyone to use!`
* (Optional) [update ChibiOS + ChibiOS-Contrib on `develop`](chibios_upgrade_instructions.md)
+
+
+### Set up Discord events for the next cycle
+
+* Update this file with the new dates: `docs/breaking_changes.md`
+* Create Events on the QMK Discord - "Somewhere Else" => "GitHub":
+ * Event #1:
+ | Field | Value |
+ |-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+ | Topic | Last `develop` functionality PRs to be raised |
+ | Start Date | ((5 weeks before merge)), 12:00am |
+ | End Date | ((4 weeks before merge)), 12:00am |
+ | Description | This is the last window for functional PRs to be raised against `develop` for the current breaking changes cycle. After ((4 weeks before merge)), any new PRs targeting `develop` will be deferred to the next cycle. |
+ * Event #2:
+ | Field | Value |
+ |-------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+ | Topic | Last `develop` functionality PRs to be merged |
+ | Start Date | ((4 weeks before merge)), 12:00am |
+ | End Date | ((2 weeks before merge)), 12:00am |
+ | Description | This is the last window for functional PRs to be merged into `develop` for the current breaking changes cycle. After ((2 weeks before merge)), only bugfix PRs targeting `develop` will be considered for merge. |
+ * Event #3:
+ | Field | Value |
+ |-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+ | Topic | `develop` closed for merges |
+ | Start Date | ((2 weeks before merge)), 12:00am |
+ | End Date | ((day of merge)), 12:00am |
+ | Description | This is the deadline for functionality bugfix PRs to be merged into `develop` for the current breaking changes cycle. After ((1 week before merge)), only critical bugfix PRs targeting `develop` will be considered for merge. |
+ * Event #4:
+ | Field | Value |
+ |-------------|----------------------------------------------------------------------------------------------------------------------|
+ | Topic | `master` closed for merges |
+ | Start Date | ((2 days before merge)), 12:00am |
+ | End Date | ((day of merge)), 12:00am |
+ | Description | This is the period that no PRs are to be merged to `master`, so that the merge of `develop` into `master` is stable. |
+ * Event #5:
+ | Field | Value |
+ |-------------|--------------------------------------------------------------------------------------------------------------------------------------------|
+ | Topic | `develop` merges to `master` |
+ | Start Date | ((day of merge)), 12:00am |
+ | End Date | ((day of merge)), 11:45pm |
+ | Description | At some point, QMK will merge `develop` into `master` and everyone will be able to reap the benefits of the newest batch of functionality. |
diff --git a/docs/breaking_changes_history.md b/docs/breaking_changes_history.md
index 4c38456e94..38af505701 100644
--- a/docs/breaking_changes_history.md
+++ b/docs/breaking_changes_history.md
@@ -2,6 +2,7 @@
This page links to all previous changelogs from the QMK Breaking Changes process.
+* [2022 Aug 27](ChangeLog/20220827.md) - version 0.18.0
* [2022 May 28](ChangeLog/20220528.md) - version 0.17.0
* [2022 Feb 26](ChangeLog/20220226.md) - version 0.16.0
* [2021 Nov 27](ChangeLog/20211127.md) - version 0.15.0
diff --git a/docs/cli_commands.md b/docs/cli_commands.md
index a380d3eb2f..4608ed85b6 100644
--- a/docs/cli_commands.md
+++ b/docs/cli_commands.md
@@ -90,6 +90,8 @@ This command is similar to `qmk compile`, but can also target a bootloader. The
This command is directory aware. It will automatically fill in KEYBOARD and/or KEYMAP if you are in a keyboard or keymap directory.
+This command can also flash binary firmware files (hex or bin) such as the ones produced by [Configurator](https://config.qmk.fm).
+
**Usage for Configurator Exports**:
```
@@ -102,6 +104,21 @@ qmk flash [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>] <configurat
qmk flash -kb <keyboard_name> -km <keymap_name> [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>]
```
+**Usage for pre-compiled firmwares**:
+
+**Note**: The microcontroller needs to be specified (`-m` argument) for keyboards with the following bootloaders:
+* HalfKay
+* QMK HID
+* USBaspLoader
+
+ISP flashing is also supported with the following flashers and require the microcontroller to be specified:
+* USBasp
+* USBtinyISP
+
+```
+qmk flash [-m <microcontroller>] <compiledFirmware.[bin|hex]>
+```
+
**Listing the Bootloaders**
```
@@ -352,6 +369,73 @@ $ qmk via2json -kb ai03/polaris -o polaris_keymap.json polaris_via_backup.json
Ψ Wrote keymap to /home/you/qmk_firmware/polaris_keymap.json
```
+## `qmk import-keyboard`
+
+This command imports a data-driven `info.json` keyboard into the repo.
+
+**Usage**:
+
+```
+usage: qmk import-keyboard [-h] filename
+```
+
+**Example:**
+
+```
+$ qmk import-keyboard ~/Downloads/forever60.json
+Ψ Importing forever60.json.
+
+Ψ Imported a new keyboard named forever60.
+Ψ To start working on things, `cd` into keyboards/forever60,
+Ψ or open the directory in your preferred text editor.
+Ψ And build with qmk compile -kb forever60 -km default.
+```
+
+## `qmk import-keymap`
+
+This command imports a data-driven `keymap.json` keymap into the repo.
+
+**Usage**:
+
+```
+usage: qmk import-keymap [-h] filename
+```
+
+**Example:**
+
+```
+qmk import-keymap ~/Downloads/asdf2.json
+Ψ Importing asdf2.json.
+
+Ψ Imported a new keymap named asdf2.
+Ψ To start working on things, `cd` into keyboards/takashicompany/dogtag/keymaps/asdf2,
+Ψ or open the directory in your preferred text editor.
+Ψ And build with qmk compile -kb takashicompany/dogtag -km asdf2.
+```
+
+## `qmk import-kbfirmware`
+
+This command creates a new keyboard based on a [Keyboard Firmware Builder](https://kbfirmware.com/) export.
+
+**Usage**:
+
+```
+usage: qmk import-kbfirmware [-h] filename
+```
+
+**Example:**
+
+```
+$ qmk import-kbfirmware ~/Downloads/gh62.json
+Ψ Importing gh62.json.
+
+âš  Support here is basic - Consider using 'qmk new-keyboard' instead
+Ψ Imported a new keyboard named gh62.
+Ψ To start working on things, `cd` into keyboards/gh62,
+Ψ or open the directory in your preferred text editor.
+Ψ And build with qmk compile -kb gh62 -km default.
+```
+
---
# Developer Commands
@@ -527,3 +611,4 @@ This command converts a TTF font to an intermediate format for editing, before c
## `qmk painter-convert-font-image`
This command converts an intermediate font image to the QFF File Format. See the [Quantum Painter](quantum_painter.md?id=quantum-painter-cli) documentation for more information on this command.
+
diff --git a/docs/cli_tab_complete.md b/docs/cli_tab_complete.md
index 200477624e..90950b82da 100644
--- a/docs/cli_tab_complete.md
+++ b/docs/cli_tab_complete.md
@@ -14,6 +14,10 @@ Add this to the end of your `.profile` or `.bashrc`:
If you put `qmk_firmware` into another location you will need to adjust this path.
+Zsh users will need to load `bashcompinit`. The following can be added to `~/.zshrc` file:
+
+ autoload -Uz bashcompinit && bashcompinit
+
### System Wide Symlink
If you want the tab completion available to all users of the system you can add a symlink to the `qmk_tab_complete.sh` script:
diff --git a/docs/compatible_microcontrollers.md b/docs/compatible_microcontrollers.md
index cee8986829..cc9c0b7f92 100644
--- a/docs/compatible_microcontrollers.md
+++ b/docs/compatible_microcontrollers.md
@@ -62,9 +62,17 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
* [MK20DX128](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-50-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-based-on-arm-cortex-m4-core:K20_50)
* [MK20DX256](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-72-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-mcus-based-on-arm-cortex-m4-core:K20_72)
* PJRC Teensy 3.2
+ * [MK64FX512](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k6x-ethernet/kinetis-k64-120-mhz-256-kb-sram-microcontrollers-mcus-based-on-arm-cortex-m4-core:K64_120)
+ * PJRC Teensy 3.5
* [MK66FX1M0](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k6x-ethernet/kinetis-k66-180-mhz-dual-high-speed-full-speed-usbs-2mb-flash-microcontrollers-mcus-based-on-arm-cortex-m4-core:K66_180)
* PJRC Teensy 3.6
+### Raspberry Pi
+
+* [RP2040](https://www.raspberrypi.com/documentation/microcontrollers/rp2040.html)
+
+For a detailed overview about the RP2040 support by QMK see the [dedicated RP2040 page](platformdev_rp2040.md).
+
## Atmel ATSAM
There is limited support for one of Atmel's ATSAM microcontrollers, that being the [ATSAMD51J18A](https://www.microchip.com/wwwproducts/en/ATSAMD51J18A) used by the [Massdrop keyboards](https://github.com/qmk/qmk_firmware/tree/master/keyboards/massdrop). However, it is not recommended to design a board with this microcontroller as the support is quite specialized to Massdrop hardware.
diff --git a/docs/config_options.md b/docs/config_options.md
index 8227a0e074..3e011a5cc9 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -57,8 +57,6 @@ This is a C header file that is one of the first things included, and will persi
* may be omitted by the keyboard designer if matrix reads are handled in an alternate manner. See [low-level matrix overrides](custom_quantum_functions.md?id=low-level-matrix-overrides) for more information.
* `#define MATRIX_IO_DELAY 30`
* the delay in microseconds when between changing matrix pin state and reading values
-* `#define UNUSED_PINS { D1, D2, D3, B1, B2, B3 }`
- * pins unused by the keyboard for reference
* `#define MATRIX_HAS_GHOST`
* define is matrix has ghost (unlikely)
* `#define MATRIX_UNSELECT_DRIVE_HIGH`
@@ -107,8 +105,10 @@ This is a C header file that is one of the first things included, and will persi
* sets the maximum power (in mA) over USB for the device (default: 500)
* `#define USB_POLLING_INTERVAL_MS 10`
* sets the USB polling rate in milliseconds for the keyboard, mouse, and shared (NKRO/media keys) interfaces
-* `#define USB_SUSPEND_WAKEUP_DELAY 200`
- * set the number of milliseconde to pause after sending a wakeup packet
+* `#define USB_SUSPEND_WAKEUP_DELAY 0`
+ * sets the number of milliseconds to pause after sending a wakeup packet.
+ Disabled by default, you might want to set this to 200 (or higher) if the
+ keyboard does not wake up properly after suspending.
* `#define F_SCL 100000L`
* sets the I2C clock rate speed for keyboards using I2C. The default is `400000L`, except for keyboards using `split_common`, where the default is `100000L`.
@@ -141,7 +141,7 @@ If you define these options you will enable the associated feature, which may in
## Behaviors That Can Be Configured
* `#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
+ * how long before a key press becomes a hold
* `#define TAPPING_TERM_PER_KEY`
* enables handling for per key `TAPPING_TERM` settings
* `#define RETRO_TAPPING`
@@ -174,19 +174,12 @@ If you define these options you will enable the associated feature, which may in
* 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 MOUSE_EXTENDED_REPORT`
+ * Enables support for extended reports (-32767 to 32767, instead of -127 to 127), which may allow for smoother reporting, and prevent maxing out of the reports. Applies to both Pointing Device and Mousekeys.
* `#define ONESHOT_TIMEOUT 300`
* how long before oneshot times out
* `#define ONESHOT_TAP_TOGGLE 2`
* how many taps before oneshot toggle is triggered
-* `#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 COMBO_COUNT 2`
* Set this to the number of combos that you're using in the [Combo](feature_combo.md) feature. Or leave it undefined and programmatically set the count.
* `#define COMBO_TERM 200`
@@ -194,7 +187,7 @@ If you define these options you will enable the associated feature, which may in
* `#define COMBO_MUST_HOLD_MODS`
* Flag for enabling extending timeout on Combos containing modifers
* `#define COMBO_MOD_TERM 200`
- * Allows for extending COMBO_TERM for mod keys while mid-combo.
+ * Allows for extending COMBO_TERM for mod keys while mid-combo.
* `#define COMBO_MUST_HOLD_PER_COMBO`
* Flag to enable per-combo COMBO_TERM extension and `get_combo_must_hold()` function
* `#define COMBO_TERM_PER_COMBO`
@@ -214,14 +207,12 @@ If you define these options you will enable the associated feature, which may in
* `#define RGB_DI_PIN D7`
* pin the DI on the WS2812 is hooked-up to
-* `#define RGBLIGHT_ANIMATIONS`
- * run RGB animations
* `#define RGBLIGHT_LAYERS`
* Lets you define [lighting layers](feature_rgblight.md?id=lighting-layers) that can be toggled on or off. Great for showing the current keyboard layer or caps lock state.
* `#define RGBLIGHT_MAX_LAYERS`
* Defaults to 8. Can be expanded up to 32 if more [lighting layers](feature_rgblight.md?id=lighting-layers) are needed.
* Note: Increasing the maximum will increase the firmware size and slow sync on split keyboards.
-* `#define RGBLIGHT_LAYER_BLINK`
+* `#define RGBLIGHT_LAYER_BLINK`
* Adds ability to [blink](feature_rgblight.md?id=lighting-layer-blink) a lighting layer for a specified number of milliseconds (e.g. to acknowledge an action).
* `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF`
* If defined, then [lighting layers](feature_rgblight?id=overriding-rgb-lighting-onoff-status) will be shown even if RGB Light is off.
@@ -366,8 +357,8 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
* `SRC`
* Used to add files to the compilation/linking list.
* `LIB_SRC`
- * Used to add files as a library to the compilation/linking list.
- The files specified by `LIB_SRC` is linked after the files specified by `SRC`.
+ * Used to add files as a library to the compilation/linking list.
+ The files specified by `LIB_SRC` is linked after the files specified by `SRC`.
For example, if you specify:
```
SRC += a.c
@@ -420,7 +411,7 @@ Use these to enable or disable building certain features. The more you have enab
* `NKRO_ENABLE`
* USB N-Key Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
* `RING_BUFFERED_6KRO_REPORT_ENABLE`
- * USB 6-Key Rollover - Instead of stopping any new input once 6 keys are pressed, the oldest key is released and the new key is pressed.
+ * USB 6-Key Rollover - Instead of stopping any new input once 6 keys are pressed, the oldest key is released and the new key is pressed.
* `AUDIO_ENABLE`
* Enable the audio subsystem.
* `KEY_OVERRIDE_ENABLE`
diff --git a/docs/configurator_default_keymaps.md b/docs/configurator_default_keymaps.md
index d2b14ec411..3fea15166a 100644
--- a/docs/configurator_default_keymaps.md
+++ b/docs/configurator_default_keymaps.md
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, QK_BOOT, 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),
@@ -84,7 +84,7 @@ The default keymap uses the `LAYOUT_all` macro, so that will be the value of the
[
"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", "QK_BOOT", "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"
diff --git a/docs/custom_matrix.md b/docs/custom_matrix.md
index 8f6878f94a..6d6ae5e972 100644
--- a/docs/custom_matrix.md
+++ b/docs/custom_matrix.md
@@ -81,17 +81,17 @@ void matrix_init(void) {
}
uint8_t matrix_scan(void) {
- bool matrix_has_changed = false;
+ bool changed = false;
// TODO: add matrix scanning routine here
// Unless hardware debouncing - use the configured debounce routine
- debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
+ changed = debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
// This *must* be called for correct keyboard behavior
matrix_scan_quantum();
- return matrix_has_changed;
+ return changed;
}
```
diff --git a/docs/custom_quantum_functions.md b/docs/custom_quantum_functions.md
index f9a6e1bcc8..2917fbad26 100644
--- a/docs/custom_quantum_functions.md
+++ b/docs/custom_quantum_functions.md
@@ -102,11 +102,11 @@ These are the three main initialization functions, listed in the order that they
## Keyboard Pre Initialization code
-This runs very early during startup, even before the USB has been started.
+This runs very early during startup, even before the USB has been started.
Shortly after this, the matrix is initialized.
-For most users, this shouldn't be used, as it's primarily for hardware oriented initialization.
+For most users, this shouldn't be used, as it's primarily for hardware oriented initialization.
However, if you have hardware stuff that you need initialized, this is the best place for it (such as initializing LED pins).
@@ -134,9 +134,9 @@ void keyboard_pre_init_user(void) {
## Matrix Initialization Code
-This is called when the matrix is initialized, and after some of the hardware has been set up, but before many of the features have been initialized.
+This is called when the matrix is initialized, and after some of the hardware has been set up, but before many of the features have been initialized.
-This is useful for setting up stuff that you may need elsewhere, but isn't hardware related nor is dependant on where it's started.
+This is useful for setting up stuff that you may need elsewhere, but isn't hardware related nor is dependant on where it's started.
### `matrix_init_*` Function Documentation
@@ -227,190 +227,11 @@ void suspend_wakeup_init_user(void) {
* Keyboard/Revision: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)`
* Keymap: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)`
-# Layer Change Code :id=layer-change-code
-
-This runs code every time that the layers get changed. This can be useful for layer indication, or custom layer handling.
-
-### Example `layer_state_set_*` Implementation
-
-This example shows how to set the [RGB Underglow](feature_rgblight.md) lights based on the layer, using the Planck as an example.
-
-```c
-layer_state_t layer_state_set_user(layer_state_t state) {
- switch (get_highest_layer(state)) {
- case _RAISE:
- rgblight_setrgb (0x00, 0x00, 0xFF);
- break;
- case _LOWER:
- rgblight_setrgb (0xFF, 0x00, 0x00);
- break;
- case _PLOVER:
- rgblight_setrgb (0x00, 0xFF, 0x00);
- break;
- case _ADJUST:
- rgblight_setrgb (0x7A, 0x00, 0xFF);
- break;
- default: // for any other layers, or the default layer
- rgblight_setrgb (0x00, 0xFF, 0xFF);
- break;
- }
- return state;
-}
-```
-
-Use the `IS_LAYER_ON_STATE(state, layer)` and `IS_LAYER_OFF_STATE(state, layer)` macros to check the status of a particular layer.
-
-Outside of `layer_state_set_*` functions, you can use the `IS_LAYER_ON(layer)` and `IS_LAYER_OFF(layer)` macros to check global layer state.
-
-### `layer_state_set_*` Function Documentation
-
-* Keyboard/Revision: `layer_state_t layer_state_set_kb(layer_state_t state)`
-* Keymap: `layer_state_t layer_state_set_user(layer_state_t state)`
-
-
-The `state` is the bitmask of the active layers, as explained in the [Keymap Overview](keymap.md#keymap-layer-status)
-
-
-# Persistent Configuration (EEPROM)
-
-This allows you to configure persistent settings for your keyboard. These settings are stored in the EEPROM of your controller, and are retained even after power loss. The settings can be read with `eeconfig_read_kb` and `eeconfig_read_user`, and can be written to using `eeconfig_update_kb` and `eeconfig_update_user`. This is useful for features that you want to be able to toggle (like toggling rgb layer indication). Additionally, you can use `eeconfig_init_kb` and `eeconfig_init_user` to set the default values for the EEPROM.
-
-The complicated part here, is that there are a bunch of ways that you can store and access data via EEPROM, and there is no "correct" way to do this. However, you only have a DWORD (4 bytes) for each function.
-
-Keep in mind that EEPROM has a limited number of writes. While this is very high, it's not the only thing writing to the EEPROM, and if you write too often, you can potentially drastically shorten the life of your MCU.
-
-* If you don't understand the example, then you may want to avoid using this feature, as it is rather complicated.
-
-### Example Implementation
-
-This is an example of how to add settings, and read and write it. We're using the user keymap for the example here. This is a complex function, and has a lot going on. In fact, it uses a lot of the above functions to work!
-
-
-In your keymap.c file, add this to the top:
-```c
-typedef union {
- uint32_t raw;
- struct {
- bool rgb_layer_change :1;
- };
-} user_config_t;
-
-user_config_t user_config;
-```
-
-This sets up a 32 bit structure that we can store settings with in memory, and write to the EEPROM. Using this removes the need to define variables, since they're defined in this structure. Remember that `bool` (boolean) values use 1 bit, `uint8_t` uses 8 bits, `uint16_t` uses up 16 bits. You can mix and match, but changing the order can cause issues, as it will change the values that are read and written.
-
-We're using `rgb_layer_change`, for the `layer_state_set_*` function, and use `keyboard_post_init_user` and `process_record_user` to configure everything.
-
-Now, using the `keyboard_post_init_user` code above, you want to add `eeconfig_read_user()` to it, to populate the structure you've just created. And you can then immediately use this structure to control functionality in your keymap. And It should look like:
-```c
-void keyboard_post_init_user(void) {
- // Call the keymap level matrix init.
-
- // Read the user config from EEPROM
- user_config.raw = eeconfig_read_user();
-
- // Set default layer, if enabled
- if (user_config.rgb_layer_change) {
- rgblight_enable_noeeprom();
- rgblight_sethsv_noeeprom_cyan();
- rgblight_mode_noeeprom(1);
- }
-}
-```
-The above function will use the EEPROM config immediately after reading it, to set the default layer's RGB color. The "raw" value of it is converted in a usable structure based on the "union" that you created above.
-
-```c
-layer_state_t layer_state_set_user(layer_state_t state) {
- switch (get_highest_layer(state)) {
- case _RAISE:
- if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_magenta(); rgblight_mode_noeeprom(1); }
- break;
- case _LOWER:
- if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_red(); rgblight_mode_noeeprom(1); }
- break;
- case _PLOVER:
- if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_green(); rgblight_mode_noeeprom(1); }
- break;
- case _ADJUST:
- if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_white(); rgblight_mode_noeeprom(1); }
- break;
- default: // for any other layers, or the default layer
- if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_cyan(); rgblight_mode_noeeprom(1); }
- break;
- }
- return state;
-}
-```
-This will cause the RGB underglow to be changed ONLY if the value was enabled. Now to configure this value, create a new keycode for `process_record_user` called `RGB_LYR`. Additionally, we want to make sure that if you use the normal RGB codes, that it turns off Using the example above, make it look this:
-```c
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case FOO:
- if (record->event.pressed) {
- // Do something when pressed
- } else {
- // Do something else when release
- }
- return false; // Skip all further processing of this key
- case KC_ENTER:
- // Play a tone when enter is pressed
- if (record->event.pressed) {
- PLAY_SONG(tone_qwerty);
- }
- return true; // Let QMK send the enter press/release events
- case RGB_LYR: // This allows me to use underglow as layer indication, or as normal
- if (record->event.pressed) {
- user_config.rgb_layer_change ^= 1; // Toggles the status
- eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
- if (user_config.rgb_layer_change) { // if layer state indication is enabled,
- layer_state_set(layer_state); // then immediately update the layer color
- }
- }
- return false;
- case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // For any of the RGB codes (see quantum_keycodes.h, L400 for reference)
- if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
- if (user_config.rgb_layer_change) { // only if this is enabled
- user_config.rgb_layer_change = false; // disable it, and
- eeconfig_update_user(user_config.raw); // write the setings to EEPROM
- }
- }
- return true; break;
- default:
- return true; // Process all other keycodes normally
- }
-}
-```
-And lastly, you want to add the `eeconfig_init_user` function, so that when the EEPROM is reset, you can specify default values, and even custom actions. To force an EEPROM reset, use the `EEP_RST` keycode or [Bootmagic Lite](feature_bootmagic.md) functionallity. For example, if you want to set rgb layer indication by default, and save the default valued.
-
-```c
-void eeconfig_init_user(void) { // EEPROM is getting reset!
- user_config.raw = 0;
- user_config.rgb_layer_change = true; // We want this enabled by default
- eeconfig_update_user(user_config.raw); // Write default value to EEPROM now
-
- // use the non noeeprom versions, to write these values to EEPROM too
- rgblight_enable(); // Enable RGB by default
- rgblight_sethsv_cyan(); // Set it to CYAN by default
- rgblight_mode(1); // set to solid by default
-}
-```
-
-And you're done. The RGB layer indication will only work if you want it to. And it will be saved, even after unplugging the board. And if you use any of the RGB codes, it will disable the layer indication, so that it stays on the mode and color that you set it to.
-
-### 'EECONFIG' Function Documentation
-
-* Keyboard/Revision: `void eeconfig_init_kb(void)`, `uint32_t eeconfig_read_kb(void)` and `void eeconfig_update_kb(uint32_t val)`
-* Keymap: `void eeconfig_init_user(void)`, `uint32_t eeconfig_read_user(void)` and `void eeconfig_update_user(uint32_t val)`
-
-The `val` is the value of the data that you want to write to EEPROM. And the `eeconfig_read_*` function return a 32 bit (DWORD) value from the EEPROM.
-
-### Deferred Execution :id=deferred-execution
+# 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. To enable this functionality, set `DEFERRED_EXEC_ENABLE = yes` in rules.mk.
-#### Deferred executor callbacks
+## Deferred executor callbacks
All _deferred executor callbacks_ have a common function signature and look like:
@@ -430,7 +251,7 @@ The return value is the number of milliseconds to use if the function should be
?> Note that the returned delay will be applied to the intended trigger time, not the time of callback invocation. This allows for generally consistent timing even in the face of occasional late execution.
-#### Deferred executor registration
+## Deferred executor registration
Once a callback has been defined, it can be scheduled using the following API:
@@ -444,7 +265,7 @@ The third parameter is the `cb_arg` that gets passed to the callback at the poin
The return value is a `deferred_token` that can consequently be used to cancel the deferred executor callback before it's invoked. If a failure occurs, the returned value will be `INVALID_DEFERRED_TOKEN`. Usually this will be as a result of supplying `0` to the delay, or a `NULL` for the callback. The other failure case is if there are too many deferred executions "in flight" -- this can be increased by changing the limit, described below.
-#### Extending a deferred execution
+## Extending a deferred execution
The `deferred_token` returned by `defer_exec()` can be used to extend a the duration a pending execution waits before it gets invoked:
```c
@@ -452,7 +273,7 @@ The `deferred_token` returned by `defer_exec()` can be used to extend a the dura
extend_deferred_exec(my_token, 800);
```
-#### Cancelling a deferred execution
+## Cancelling a deferred execution
The `deferred_token` returned by `defer_exec()` can be used to cancel a pending execution before it gets invoked:
```c
@@ -462,7 +283,7 @@ cancel_deferred_exec(my_token);
Once a token has been canceled, it should be considered invalid. Reusing the same token is not supported.
-#### Deferred callback limits
+## Deferred callback limits
There are a maximum number of deferred callbacks that can be scheduled, controlled by the value of the define `MAX_DEFERRED_EXECUTORS`.
@@ -471,3 +292,15 @@ If registrations fail, then you can increase this value in your keyboard or keym
```c
#define MAX_DEFERRED_EXECUTORS 16
```
+
+# Advanced topics :id=advanced-topics
+
+This page used to encompass a large set of features. We have moved many sections that used to be part of this page to their own pages. Everything below this point is simply a redirect so that people following old links on the web find what they're looking for.
+
+## Layer Change Code :id=layer-change-code
+
+[Layer change code](feature_layers.md#layer-change-code)
+
+## Persistent Configuration (EEPROM) :id=persistent-configuration-eeprom
+
+[Persistent Configuration (EEPROM)](feature_eeprom.md)
diff --git a/docs/data_driven_config.md b/docs/data_driven_config.md
index cdcf21a19c..1a2e4ca54a 100644
--- a/docs/data_driven_config.md
+++ b/docs/data_driven_config.md
@@ -22,7 +22,7 @@ You will then need to add support for your new configuration to `info.json`. The
1. Add it to the schema in `data/schemas/keyboards.jsonschema`
1. Add a mapping in `data/maps`
-1. (optional and discoraged) Add code to extract/generate it to:
+1. (optional and discouraged) Add code to extract/generate it to:
* `lib/python/qmk/info.py`
* `lib/python/qmk/cli/generate/config_h.py`
* `lib/python/qmk/cli/generate/rules_mk.py`
diff --git a/docs/driver_installation_zadig.md b/docs/driver_installation_zadig.md
index 003629ba9a..3b2c0b74dc 100644
--- a/docs/driver_installation_zadig.md
+++ b/docs/driver_installation_zadig.md
@@ -8,7 +8,7 @@ We recommend the use of the [Zadig](https://zadig.akeo.ie/) utility. If you have
## Installation
-Put your keyboard into bootloader mode, either by hitting the `RESET` keycode (which may be on a different layer), or by pressing the reset switch that's usually located on the underside of the board. If your keyboard has neither, try holding Escape or Space+`B` as you plug it in (see the [Bootmagic Lite](feature_bootmagic.md) docs for more details). Some boards use [Command](feature_command.md) instead of Bootmagic; in this case, you can enter bootloader mode by hitting Left Shift+Right Shift+`B` or Left Shift+Right Shift+Escape at any point while the keyboard is plugged in.
+Put your keyboard into bootloader mode, either by hitting the `QK_BOOT` keycode (which may be on a different layer), or by pressing the reset switch that's usually located on the underside of the board. If your keyboard has neither, try holding Escape or Space+`B` as you plug it in (see the [Bootmagic Lite](feature_bootmagic.md) docs for more details). Some boards use [Command](feature_command.md) instead of Bootmagic; in this case, you can enter bootloader mode by hitting Left Shift+Right Shift+`B` or Left Shift+Right Shift+Escape at any point while the keyboard is plugged in.
Some keyboards may have specific instructions for entering the bootloader. For example, the [Bootmagic Lite](feature_bootmagic.md) key (default: Escape) might be on a different key, e.g. Left Control; or the magic combination for Command (default: Left Shift+Right Shift) might require you to hold something else, e.g. Left Control+Right Control. Refer to the board's README file if you are unsure.
To put a device in bootloader mode with USBaspLoader, tap the `RESET` button while holding down the `BOOT` button.
diff --git a/docs/eeprom_driver.md b/docs/eeprom_driver.md
index 6dcf10c04d..50d8bcb7b3 100644
--- a/docs/eeprom_driver.md
+++ b/docs/eeprom_driver.md
@@ -2,12 +2,15 @@
The EEPROM driver can be swapped out depending on the needs of the keyboard, or whether extra hardware is present.
+Selecting the EEPROM driver is done in your keyboard's `rules.mk`:
+
Driver | Description
-----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
`EEPROM_DRIVER = vendor` (default) | Uses the on-chip driver provided by the chip manufacturer. For AVR, this is provided by avr-libc. This is supported on ARM for a subset of chips -- STM32F3xx, STM32F1xx, and STM32F072xB will be emulated by writing to flash. STM32L0xx and STM32L1xx will use the onboard dedicated true EEPROM. Other chips will generally act as "transient" below.
`EEPROM_DRIVER = i2c` | Supports writing to I2C-based 24xx EEPROM chips. See the driver section below.
`EEPROM_DRIVER = spi` | Supports writing to SPI-based 25xx EEPROM chips. See the driver section below.
`EEPROM_DRIVER = transient` | Fake EEPROM driver -- supports reading/writing to RAM, and will be discarded when power is lost.
+`EEPROM_DRIVER = wear_leveling` | Frontend driver for the wear_leveling system, allowing for EEPROM emulation on top of flash -- both in-MCU and external SPI NOR flash.
## Vendor Driver Configuration :id=vendor-eeprom-driver-configuration
@@ -43,8 +46,9 @@ Module | Equivalent `#define` | Source
-----------------|---------------------------------|------------------------------------------
CAT24C512 EEPROM | `#define EEPROM_I2C_CAT24C512` | <https://www.sparkfun.com/products/14764>
RM24C512C EEPROM | `#define EEPROM_I2C_RM24C512C` | <https://www.sparkfun.com/products/14764>
-24LC64 EEPROM | `#define EEPROM_I2C_24LC64` | <https://www.microchip.com/wwwproducts/en/24LC64>
-24LC128 EEPROM | `#define EEPROM_I2C_24LC128` | <https://www.microchip.com/wwwproducts/en/24LC128>
+24LC32A EEPROM | `#define EEPROM_I2C_24LC32A` | <https://www.microchip.com/en-us/product/24LC32A>
+24LC64 EEPROM | `#define EEPROM_I2C_24LC64` | <https://www.microchip.com/en-us/product/24LC64>
+24LC128 EEPROM | `#define EEPROM_I2C_24LC128` | <https://www.microchip.com/en-us/product/24LC128>
24LC256 EEPROM | `#define EEPROM_I2C_24LC256` | <https://www.sparkfun.com/products/525>
MB85RC256V FRAM | `#define EEPROM_I2C_MB85RC256V` | <https://www.adafruit.com/product/1895>
@@ -54,13 +58,13 @@ MB85RC256V FRAM | `#define EEPROM_I2C_MB85RC256V` | <https://www.adafruit.com/p
Currently QMK supports 25xx-series chips over SPI. As such, requires a working spi_master driver configuration. You can override the driver configuration via your config.h:
-`config.h` override | Description | Default Value
------------------------------------------------|--------------------------------------------------------------------------------------|--------------
-`#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN` | SPI Slave select pin in order to inform that the EEPROM is currently being addressed | _none_
-`#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR` | Clock divisor used to divide the peripheral clock to derive the SPI frequency | `64`
-`#define EXTERNAL_EEPROM_BYTE_COUNT` | Total size of the EEPROM in bytes | 8192
-`#define EXTERNAL_EEPROM_PAGE_SIZE` | Page size of the EEPROM in bytes, as specified in the datasheet | 32
-`#define EXTERNAL_EEPROM_ADDRESS_SIZE` | The number of bytes to transmit for the memory location within the EEPROM | 2
+`config.h` override | Default Value | Description
+-----------------------------------------------|---------------|-------------------------------------------------------------------------------------
+`#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN` | _none_ | SPI Slave select pin in order to inform that the EEPROM is currently being addressed
+`#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR` | `64` | Clock divisor used to divide the peripheral clock to derive the SPI frequency
+`#define EXTERNAL_EEPROM_BYTE_COUNT` | `8192` | Total size of the EEPROM in bytes
+`#define EXTERNAL_EEPROM_PAGE_SIZE` | `32` | Page size of the EEPROM in bytes, as specified in the datasheet
+`#define EXTERNAL_EEPROM_ADDRESS_SIZE` | `2` | The number of bytes to transmit for the memory location within the EEPROM
!> There's no way to determine if there is an SPI EEPROM actually responding. Generally, this will result in reads of nothing but zero.
@@ -73,3 +77,84 @@ The only configurable item for the transient EEPROM driver is its size:
`#define TRANSIENT_EEPROM_SIZE` | Total size of the EEPROM storage in bytes | 64
Default values and extended descriptions can be found in `drivers/eeprom/eeprom_transient.h`.
+
+## Wear-leveling Driver Configuration :id=wear_leveling-eeprom-driver-configuration
+
+The wear-leveling driver uses an algorithm to minimise the number of erase cycles on the underlying MCU flash memory.
+
+There is no specific configuration for this driver, but the wear-leveling system used by this driver may need configuration. See the [wear-leveling configuration](#wear_leveling-configuration) section for more information.
+
+# Wear-leveling Configuration :id=wear_leveling-configuration
+
+The wear-leveling driver has a few possible _backing stores_ that may be used by adding to your keyboard's `rules.mk` file:
+
+Driver | Description
+----------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+`WEAR_LEVELING_DRIVER = embedded_flash` | This driver is used for emulating EEPROM by writing to embedded flash on the MCU.
+`WEAR_LEVELING_DRIVER = spi_flash` | This driver is used to address external SPI NOR Flash peripherals.
+`WEAR_LEVELING_DRIVER = rp2040_flash` | This driver is used to write to the same storage the RP2040 executes code from.
+`WEAR_LEVELING_DRIVER = legacy` | This driver is the "legacy" emulated EEPROM provided in historical revisions of QMK. Currently used for STM32F0xx and STM32F4x1, but slated for deprecation and removal once `embedded_flash` support for those MCU families is complete.
+
+!> All wear-leveling drivers require an amount of RAM equivalent to the selected logical EEPROM size. Increasing the size to 32kB of EEPROM requires 32kB of RAM, which a significant number of MCUs simply do not have.
+
+## Wear-leveling Embedded Flash Driver Configuration :id=wear_leveling-efl-driver-configuration
+
+This driver performs writes to the embedded flash storage embedded in the MCU. In most circumstances, the last few of sectors of flash are used in order to minimise the likelihood of collision with program code.
+
+Configurable options in your keyboard's `config.h`:
+
+`config.h` override | Default | Description
+-----------------------------------------|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+`#define WEAR_LEVELING_EFL_FIRST_SECTOR` | _unset_ | The first sector on the MCU to use. By default this is not defined and calculated at runtime based on the MCU. However, different flash sizes on MCUs may require custom configuration.
+`#define WEAR_LEVELING_EFL_FLASH_SIZE` | _unset_ | Allows overriding the flash size available for use for wear-leveling. Under normal circumstances this is automatically calculated and should not need to be overridden. Specifying a size larger than the amount actually available in flash will usually prevent the MCU from booting.
+`#define WEAR_LEVELING_LOGICAL_SIZE` | `1024` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM.
+`#define WEAR_LEVELING_BACKING_SIZE` | `2048` | Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size.
+`#define BACKING_STORE_WRITE_SIZE` | _automatic_ | The byte width of the underlying write used on the MCU, and is usually automatically determined from the selected MCU family. If an error occurs in the auto-detection, you'll need to consult the MCU's datasheet and determine this value, specifying it directly.
+
+!> If your MCU does not boot after swapping to the EFL wear-leveling driver, it's likely that the flash size is incorrectly detected, usually as an MCU with larger flash and may require overriding.
+
+## Wear-leveling SPI Flash Driver Configuration :id=wear_leveling-flash_spi-driver-configuration
+
+This driver performs writes to an external SPI NOR Flash peripheral. It also requires a working configuration for the SPI NOR Flash peripheral -- see the [flash driver](flash_driver.md) documentation for more information.
+
+Configurable options in your keyboard's `config.h`:
+
+`config.h` override | Default | Description
+----------------------------------------------------|--------------------------------|--------------------------------------------------------------------------------------------------------------------------------
+`#define WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_COUNT` | `1` | Number of blocks in the external flash used by the wear-leveling algorithm.
+`#define WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_OFFSET` | `0` | The index first block in the external flash used by the wear-leveling algorithm.
+`#define WEAR_LEVELING_LOGICAL_SIZE` | `((block_count*block_size)/2)` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. Result must be <= 64kB.
+`#define WEAR_LEVELING_BACKING_SIZE` | `(block_count*block_size)` | Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size.
+`#define BACKING_STORE_WRITE_SIZE` | `8` | The write width used whenever a write is performed on the external flash peripheral.
+
+!> There is currently a limit of 64kB for the EEPROM subsystem within QMK, so using a larger flash is not going to be beneficial as the logical size cannot be increased beyond 65536. The backing size may be increased to a larger value, but erase timing may suffer as a result.
+
+## Wear-leveling RP2040 Driver Configuration :id=wear_leveling-rp2040-driver-configuration
+
+This driver performs writes to the same underlying storage that the RP2040 executes its code.
+
+Configurable options in your keyboard's `config.h`:
+
+`config.h` override | Default | Description
+------------------------------------------|----------------------------|--------------------------------------------------------------------------------------------------------------------------------
+`#define WEAR_LEVELING_RP2040_FLASH_SIZE` | `PICO_FLASH_SIZE_BYTES` | Number of bytes of flash on the board.
+`#define WEAR_LEVELING_RP2040_FLASH_BASE` | `(flash_size-sector_size)` | The byte-wise location that the backing storage should be located.
+`#define WEAR_LEVELING_LOGICAL_SIZE` | `4096` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM.
+`#define WEAR_LEVELING_BACKING_SIZE` | `8192` | Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size as well as the sector size.
+`#define BACKING_STORE_WRITE_SIZE` | `2` | The write width used whenever a write is performed on the external flash peripheral.
+
+## Wear-leveling Legacy EEPROM Emulation Driver Configuration :id=wear_leveling-legacy-driver-configuration
+
+This driver performs writes to the embedded flash storage embedded in the MCU much like the normal Embedded Flash Driver, and is only for use with STM32F0xx and STM32F4x1 devices. This flash implementation is still currently provided as the EFL driver is currently non-functional for the previously mentioned families.
+
+By default, `1024` bytes of emulated EEPROM is provided:
+
+MCU | EEPROM Provided | Flash Used
+----------|-----------------|--------------
+STM32F042 | `1024` bytes | `2048` bytes
+STM32F070 | `1024` bytes | `2048` bytes
+STM32F072 | `1024` bytes | `2048` bytes
+STM32F401 | `1024` bytes | `16384` bytes
+STM32F411 | `1024` bytes | `16384` bytes
+
+Under normal circumstances configuration of this driver requires intimate knowledge of the MCU's flash structure -- reconfiguration is at your own risk and will require referring to the code.
diff --git a/docs/faq_debug.md b/docs/faq_debug.md
index fba27c5f68..4a35997222 100644
--- a/docs/faq_debug.md
+++ b/docs/faq_debug.md
@@ -59,7 +59,7 @@ When porting, or when attempting to diagnose pcb issues, it can be useful to kno
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);
+ uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %u, time: %5u, int: %u, 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;
}
@@ -69,12 +69,12 @@ Example output
```
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
+KL: kc: 169, col: 0, row: 0, pressed: 1, time: 15505, int: 0, count: 0
+KL: kc: 169, col: 0, row: 0, pressed: 0, time: 15510, int: 0, count: 0
+KL: kc: 174, col: 1, row: 0, pressed: 1, time: 15703, int: 0, count: 0
+KL: kc: 174, col: 1, row: 0, pressed: 0, time: 15843, int: 0, count: 0
+KL: kc: 172, col: 2, row: 0, pressed: 1, time: 16303, int: 0, count: 0
+KL: kc: 172, col: 2, row: 0, pressed: 0, time: 16411, int: 0, count: 0
```
### How long did it take to scan for a keypress?
diff --git a/docs/faq_misc.md b/docs/faq_misc.md
index 9e34a04815..287ca7711d 100644
--- a/docs/faq_misc.md
+++ b/docs/faq_misc.md
@@ -10,7 +10,7 @@ You probably don't want to "brick" your keyboard, making it impossible
to rewrite firmware onto it. Here are some of the parameters to show
what things are (and likely aren't) too risky.
-- If your keyboard map does not include RESET, then, to get into DFU
+- If your keyboard map does not include QK_BOOT, then, to get into DFU
mode, you will need to press the reset button on the PCB, which
requires unscrewing the bottom.
- Messing with tmk_core / common files might make the keyboard
diff --git a/docs/feature_advanced_keycodes.md b/docs/feature_advanced_keycodes.md
index 83066187c7..b04721b23a 100644
--- a/docs/feature_advanced_keycodes.md
+++ b/docs/feature_advanced_keycodes.md
@@ -161,7 +161,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
};
```
-# Legacy Content :id=legacy-content
+# Advanced topics :id=advanced-topics
This page used to encompass a large set of features. We have moved many sections that used to be part of this page to their own pages. Everything below this point is simply a redirect so that people following old links on the web find what they're looking for.
diff --git a/docs/feature_audio.md b/docs/feature_audio.md
index 5b84dc7747..8c02f7c153 100644
--- a/docs/feature_audio.md
+++ b/docs/feature_audio.md
@@ -114,7 +114,7 @@ The audio core offers interface functions to get/set/change the tone multiplexin
There's a couple of different sounds that will automatically be enabled without any other configuration:
```
STARTUP_SONG // plays when the keyboard starts up (audio.c)
-GOODBYE_SONG // plays when you press the RESET key (quantum.c)
+GOODBYE_SONG // plays when you press the QK_BOOT key (quantum.c)
AG_NORM_SONG // plays when you press AG_NORM (quantum.c)
AG_SWAP_SONG // plays when you press AG_SWAP (quantum.c)
CG_NORM_SONG // plays when you press CG_NORM (quantum.c)
@@ -177,7 +177,7 @@ The available keycodes for audio are:
|`AUDIO_INIT_DELAY` | *Not defined* |Enables delay during startup song to accomidate for USB startup issues. |
|`AUDIO_ENABLE_TONE_MULTIPLEXING` | *Not defined* |Enables time splicing/multiplexing to create multiple tones simutaneously. |
|`STARTUP_SONG` | `STARTUP_SOUND` |Plays when the keyboard starts up (audio.c) |
-|`GOODBYE_SONG` | `GOODBYE_SOUND` |Plays when you press the RESET key (quantum.c) |
+|`GOODBYE_SONG` | `GOODBYE_SOUND` |Plays when you press the QK_BOOT key (quantum.c) |
|`AG_NORM_SONG` | `AG_NORM_SOUND` |Plays when you press AG_NORM (process_magic.c) |
|`AG_SWAP_SONG` | `AG_SWAP_SOUND` |Plays when you press AG_SWAP (process_magic.c) |
|`CG_NORM_SONG` | `AG_NORM_SOUND` |Plays when you press CG_NORM (process_magic.c) |
diff --git a/docs/feature_caps_word.md b/docs/feature_caps_word.md
index 0b71119917..283f0f5288 100644
--- a/docs/feature_caps_word.md
+++ b/docs/feature_caps_word.md
@@ -6,9 +6,9 @@ a modern alternative to Caps Lock:
* Letters are capitalized while active, and Caps Word automatically disables
itself at the end of the word. That is, it stops by default once a space or
- any key other than `a`--`z`, `0`--`9`, `-`, `_`, delete, or backspace is
- pressed. Caps Word also disables itself if the keyboard is idle for 5 seconds.
- This is configurable, see below.
+ any key other than `KC_A`--`KC_Z`, `KC_0`--`KC_9`, `KC_MINS`, `KC_UNDS`,
+ `KC_DELETE`, or `KC_BACKSPACE` is pressed. Caps Word also disables itself if
+ the keyboard is idle for 5 seconds. This is configurable, see below.
* To avoid requiring a dedicated key for Caps Word, there is an option
(`BOTH_SHIFTS_TURNS_ON_CAPS_WORD`) to activate Caps Word by simultaneously
@@ -16,7 +16,17 @@ a modern alternative to Caps Lock:
* The implementation does not use the Caps Lock (`KC_CAPS`) keycode. Caps Word
works even if you're remapping Caps Lock at the OS level to Ctrl or something
- else, as Emacs and Vim users often do.
+ else, as Emacs and Vim users often do. As a consequence, Caps Word does not
+ follow the typical Caps Lock behaviour and may thus act in potentially
+ unexpected ways, especially when using an *OS* keyboard layout other than US
+ or UK. For example, Dvorak's <kbd>, <</kbd> key (`DV_COMM` aka `KC_W`) will
+ get shifted because Caps Word interprets that keycode as the letter 'W' by
+ default, the Spanish <kbd>Ñ</kbd> key (`ES_NTIL` aka `KC_SCLN`) will not get
+ capitalized because Caps Word interprets it as the semicolon ';' punctuation
+ character, and the US hyphen key (`KC_MINS`), while unaffected by Caps Lock,
+ is shifted by Caps Word. However, this is not really a problem because you can
+ [configure which keys should Caps Word
+ shift](#configure-which-keys-are-word-breaking).
## How do I enable Caps Word :id=how-do-i-enable-caps-word
@@ -60,7 +70,7 @@ time, since both use the Left Shift + Right Shift key combination."**
Many keyboards enable the [Command feature](feature_command.md), which by
default is also activated using the Left Shift + Right Shift key combination. To
-fix this conflict, please disable Command by adding in rules.mk:
+fix this conflict, please disable Command by adding in rules.mk:
```make
COMMAND_ENABLE = no
@@ -81,7 +91,7 @@ by defining `IS_COMMAND()` in config.h:
Caps Word turns off automatically if no keys are pressed for
`CAPS_WORD_IDLE_TIMEOUT` milliseconds. The default is 5000 (5 seconds).
-Configure the timeout duration in config.h, for instance
+Configure the timeout duration in config.h, for instance
```c
#define CAPS_WORD_IDLE_TIMEOUT 3000 // 3 seconds.
diff --git a/docs/feature_combo.md b/docs/feature_combo.md
index c0e10f09d5..42d965509b 100644
--- a/docs/feature_combo.md
+++ b/docs/feature_combo.md
@@ -326,7 +326,7 @@ bool process_combo_key_release(uint16_t combo_index, combo_t *combo, uint8_t key
If you, for example, use multiple base layers for different key layouts, one for QWERTY, and another one for Colemak, you might want your combos to work from the same key positions on all layers. Defining the same combos again for another layout is redundant and takes more memory. The solution is to just check the keycodes from one layer.
-With `#define COMBO_ONLY_FROM_LAYER _LAYER_A` the combos' keys are always checked from layer `_LAYER_A` even though the active layer would be `_LAYER_B`.
+With `#define COMBO_ONLY_FROM_LAYER 0` in config.h, the combos' keys are always checked from layer `0`, even if other layers are active.
## User callbacks
diff --git a/docs/feature_converters.md b/docs/feature_converters.md
new file mode 100644
index 0000000000..fe12254efe
--- /dev/null
+++ b/docs/feature_converters.md
@@ -0,0 +1,138 @@
+# Converters
+
+Since many drop-in replacement controllers now exist, we've done our best to make them easy to use in existing designs.
+
+This page documents the handy automated process for converting keyboards.
+
+### Supported Converters
+
+Currently the following converters are available:
+
+| From | To |
+|------------|-------------------|
+| `promicro` | `proton_c` |
+| `promicro` | `kb2040` |
+| `promicro` | `promicro_rp2040` |
+| `promicro` | `blok` |
+| `promicro` | `bit_c_pro` |
+| `promicro` | `stemcell` |
+| `promicro` | `bonsai_c4` |
+
+See below for more in depth information on each converter.
+
+## Overview
+
+Each converter category is broken down by its declared `pin compatibility`.
+This ensures that only valid combinations are attempted.
+
+You can generate the firmware by appending `-e CONVERT_TO=<target>` to your compile/flash command. For example:
+
+```sh
+qmk flash -c -kb keebio/bdn9/rev1 -km default -e CONVERT_TO=proton_c
+```
+
+You can also add the same `CONVERT_TO=<target>` to your keymap's `rules.mk`, which will accomplish the same thing.
+
+?> If you get errors about `PORTB/DDRB`, etc not being defined, you'll need to convert the keyboard's code to use the [GPIO Controls](gpio_control.md) that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.
+
+### Conditional Configuration
+
+Once a converter is enabled, it exposes the `CONVERT_TO_<target_uppercase>` flag that you can use in your code with `#ifdef`s, For example:
+
+```c
+#ifdef CONVERT_TO_PROTON_C
+ // Proton C code
+#else
+ // Pro Micro code
+#endif
+```
+
+## Pro Micro
+
+If a board currently supported in QMK uses a [Pro Micro](https://www.sparkfun.com/products/12640) (or compatible board), the supported alternative controllers are:
+
+| Device | Target |
+|------------------------------------------------------------------------------------------|-------------------|
+| [Proton C](https://qmk.fm/proton-c/) | `proton_c` |
+| [Adafruit KB2040](https://learn.adafruit.com/adafruit-kb2040) | `kb2040` |
+| [SparkFun Pro Micro - RP2040](https://www.sparkfun.com/products/18288) | `promicro_rp2040` |
+| [Blok](https://boardsource.xyz/store/628b95b494dfa308a6581622) | `blok` |
+| [Bit-C PRO](https://nullbits.co/bit-c-pro) | `bit_c_pro` |
+| [STeMCell](https://github.com/megamind4089/STeMCell) | `stemcell` |
+| [customMK Bonsai C4](https://shop.custommk.com/products/bonsai-c4-microcontroller-board) | `bonsai_c4` |
+
+Converter summary:
+
+| Target | Argument | `rules.mk` | Condition |
+|-------------------|---------------------------------|------------------------------|-------------------------------------|
+| `proton_c` | `-e CONVERT_TO=proton_c` | `CONVERT_TO=proton_c` | `#ifdef CONVERT_TO_PROTON_C` |
+| `kb2040` | `-e CONVERT_TO=kb2040` | `CONVERT_TO=kb2040` | `#ifdef CONVERT_TO_KB2040` |
+| `promicro_rp2040` | `-e CONVERT_TO=promicro_rp2040` | `CONVERT_TO=promicro_rp2040` | `#ifdef CONVERT_TO_PROMICRO_RP2040` |
+| `blok` | `-e CONVERT_TO=blok` | `CONVERT_TO=blok` | `#ifdef CONVERT_TO_BLOK` |
+| `bit_c_pro` | `-e CONVERT_TO=bit_c_pro` | `CONVERT_TO=bit_c_pro` | `#ifdef CONVERT_TO_BIT_C_PRO` |
+| `stemcell` | `-e CONVERT_TO=stemcell` | `CONVERT_TO=stemcell` | `#ifdef CONVERT_TO_STEMCELL` |
+| `bonsai_c4` | `-e CONVERT_TO=bonsai_c4` | `CONVERT_TO=bonsai_c4` | `#ifdef CONVERT_TO_BONSAI_C4` |
+
+### Proton C :id=proton_c
+
+The Proton C only has one on-board LED (C13), and by default, the TXLED (D5) is mapped to it. If you want the RXLED (B0) mapped to it instead, add this line to your `config.h`:
+
+```c
+#define CONVERT_TO_PROTON_C_RXLED
+```
+
+The following defaults are based on what has been implemented for STM32 boards.
+
+| Feature | Notes |
+|----------------------------------------------|------------------------------------------------------------------------------------------------------------------|
+| [Audio](feature_audio.md) | Enabled |
+| [RGB Lighting](feature_rgblight.md) | Disabled |
+| [Backlight](feature_backlight.md) | Forces [task driven PWM](feature_backlight.md#software-pwm-driver) until ARM can provide automatic configuration |
+| USB Host (e.g. USB-USB converter) | Not supported (USB host code is AVR specific and is not currently supported on ARM) |
+| [Split keyboards](feature_split_keyboard.md) | Partial - heavily dependent on enabled features |
+
+### Adafruit KB2040 :id=kb2040
+
+The following defaults are based on what has been implemented for [RP2040](platformdev_rp2040.md) boards.
+
+| Feature | Notes |
+|----------------------------------------------|------------------------------------------------------------------------------------------------------------------|
+| [RGB Lighting](feature_rgblight.md) | Enabled via `PIO` vendor driver |
+| [Backlight](feature_backlight.md) | Forces [task driven PWM](feature_backlight.md#software-pwm-driver) until ARM can provide automatic configuration |
+| USB Host (e.g. USB-USB converter) | Not supported (USB host code is AVR specific and is not currently supported on ARM) |
+| [Split keyboards](feature_split_keyboard.md) | Partial via `PIO` vendor driver - heavily dependent on enabled features |
+
+### SparkFun Pro Micro - RP2040, Blok, and Bit-C PRO :id=promicro_rp2040
+
+Currently identical to [Adafruit KB2040](#kb2040).
+
+### STeMCell :id=stemcell
+
+Feature set currently identical to [Proton C](#proton_c).
+There are two versions of STeMCell available, with different pinouts:
+ - v1.0.0
+ - v2.0.0 (pre-release v1.0.1, v1.0.2)
+Default official firmware only supports v2.0.0 STeMCell.
+
+STeMCell has support to swap UART and I2C pins, to enable single-wire uart communication in STM chips.
+
+The following additional flags has to be used while compiling, based on the pin used for split communication.
+
+| Split Pin | Compile flags |
+|-----------|---------------|
+| D3 | -e STMC_US=yes|
+| D2 | Not needed |
+| D1 | -e STMC_IS=yes|
+| D0 | Not needed |
+
+### Bonsai C4 :id=bonsai_c4
+
+The Bonsai C4 only has one on-board LED (B2), and by default, both the Pro Micro TXLED (D5) and RXLED (B0) are mapped to it. If you want only one of them mapped, you can undefine one and redefine it to another pin by adding these line to your `config.h`:
+
+```c
+#undef B0
+// If Vbus detection is unused, we can send RXLED to the Vbus detect pin instead
+#define B0 PAL_LINE(GPIOA, 9)
+```
+
+No peripherals are enabled by default at this time, but example code to enable SPI, I2C, PWM, and Serial communications can be found [here](/keyboards/custommk/bonsai_c4_template) \ No newline at end of file
diff --git a/docs/feature_dynamic_macros.md b/docs/feature_dynamic_macros.md
index 01f2a0ca40..0660e0c065 100644
--- a/docs/feature_dynamic_macros.md
+++ b/docs/feature_dynamic_macros.md
@@ -35,6 +35,7 @@ There are a number of options added that should allow some additional degree of
|`DYNAMIC_MACRO_SIZE` |128 |Sets the amount of memory that Dynamic Macros can use. This is a limited resource, dependent on the controller. |
|`DYNAMIC_MACRO_USER_CALL` |*Not defined* |Defining this falls back to using the user `keymap.c` file to trigger the macro behavior. |
|`DYNAMIC_MACRO_NO_NESTING` |*Not Defined* |Defining this disables the ability to call a macro from another macro (nested macros). |
+|`DYNAMIC_MACRO_DELAY` |*Not Defined* |Sets the waiting time (ms unit) when sending each key. |
If the LEDs start blinking during the recording with each keypress, it means there is no more space for the macro in the macro buffer. To fit the macro in, either make the other macro shorter (they share the same buffer) or increase the buffer size by adding the `DYNAMIC_MACRO_SIZE` define in your `config.h` (default value: 128; please read the comments for it in the header).
diff --git a/docs/feature_eeprom.md b/docs/feature_eeprom.md
new file mode 100644
index 0000000000..e261c455cb
--- /dev/null
+++ b/docs/feature_eeprom.md
@@ -0,0 +1,134 @@
+# Persistent Configuration (EEPROM)
+
+This allows you to configure persistent settings for your keyboard. These settings are stored in the EEPROM of your controller, and are retained even after power loss. The settings can be read with `eeconfig_read_kb` and `eeconfig_read_user`, and can be written to using `eeconfig_update_kb` and `eeconfig_update_user`. This is useful for features that you want to be able to toggle (like toggling rgb layer indication). Additionally, you can use `eeconfig_init_kb` and `eeconfig_init_user` to set the default values for the EEPROM.
+
+The complicated part here, is that there are a bunch of ways that you can store and access data via EEPROM, and there is no "correct" way to do this. However, you only have a DWORD (4 bytes) for each function.
+
+Keep in mind that EEPROM has a limited number of writes. While this is very high, it's not the only thing writing to the EEPROM, and if you write too often, you can potentially drastically shorten the life of your MCU.
+
+* If you don't understand the example, then you may want to avoid using this feature, as it is rather complicated.
+
+## Example Implementation
+
+This is an example of how to add settings, and read and write it. We're using the user keymap for the example here. This is a complex function, and has a lot going on. In fact, it uses a lot of the above functions to work!
+
+
+In your keymap.c file, add this to the top:
+```c
+typedef union {
+ uint32_t raw;
+ struct {
+ bool rgb_layer_change :1;
+ };
+} user_config_t;
+
+user_config_t user_config;
+```
+
+This sets up a 32 bit structure that we can store settings with in memory, and write to the EEPROM. Using this removes the need to define variables, since they're defined in this structure. Remember that `bool` (boolean) values use 1 bit, `uint8_t` uses 8 bits, `uint16_t` uses up 16 bits. You can mix and match, but changing the order can cause issues, as it will change the values that are read and written.
+
+We're using `rgb_layer_change`, for the `layer_state_set_*` function, and use `keyboard_post_init_user` and `process_record_user` to configure everything.
+
+Now, using the `keyboard_post_init_user` code above, you want to add `eeconfig_read_user()` to it, to populate the structure you've just created. And you can then immediately use this structure to control functionality in your keymap. And It should look like:
+```c
+void keyboard_post_init_user(void) {
+ // Call the keymap level matrix init.
+
+ // Read the user config from EEPROM
+ user_config.raw = eeconfig_read_user();
+
+ // Set default layer, if enabled
+ if (user_config.rgb_layer_change) {
+ rgblight_enable_noeeprom();
+ rgblight_sethsv_noeeprom_cyan();
+ rgblight_mode_noeeprom(1);
+ }
+}
+```
+The above function will use the EEPROM config immediately after reading it, to set the default layer's RGB color. The "raw" value of it is converted in a usable structure based on the "union" that you created above.
+
+```c
+layer_state_t layer_state_set_user(layer_state_t state) {
+ switch (get_highest_layer(state)) {
+ case _RAISE:
+ if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_magenta(); rgblight_mode_noeeprom(1); }
+ break;
+ case _LOWER:
+ if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_red(); rgblight_mode_noeeprom(1); }
+ break;
+ case _PLOVER:
+ if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_green(); rgblight_mode_noeeprom(1); }
+ break;
+ case _ADJUST:
+ if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_white(); rgblight_mode_noeeprom(1); }
+ break;
+ default: // for any other layers, or the default layer
+ if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_cyan(); rgblight_mode_noeeprom(1); }
+ break;
+ }
+ return state;
+}
+```
+This will cause the RGB underglow to be changed ONLY if the value was enabled. Now to configure this value, create a new keycode for `process_record_user` called `RGB_LYR`. Additionally, we want to make sure that if you use the normal RGB codes, that it turns off Using the example above, make it look this:
+```c
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case FOO:
+ if (record->event.pressed) {
+ // Do something when pressed
+ } else {
+ // Do something else when release
+ }
+ return false; // Skip all further processing of this key
+ case KC_ENTER:
+ // Play a tone when enter is pressed
+ if (record->event.pressed) {
+ PLAY_SONG(tone_qwerty);
+ }
+ return true; // Let QMK send the enter press/release events
+ case RGB_LYR: // This allows me to use underglow as layer indication, or as normal
+ if (record->event.pressed) {
+ user_config.rgb_layer_change ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ if (user_config.rgb_layer_change) { // if layer state indication is enabled,
+ layer_state_set(layer_state); // then immediately update the layer color
+ }
+ }
+ return false;
+ case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // For any of the RGB codes (see quantum_keycodes.h, L400 for reference)
+ if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
+ if (user_config.rgb_layer_change) { // only if this is enabled
+ user_config.rgb_layer_change = false; // disable it, and
+ eeconfig_update_user(user_config.raw); // write the setings to EEPROM
+ }
+ }
+ return true; break;
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+```
+And lastly, you want to add the `eeconfig_init_user` function, so that when the EEPROM is reset, you can specify default values, and even custom actions. To force an EEPROM reset, use the `EEP_RST` keycode or [Bootmagic Lite](feature_bootmagic.md) functionallity. For example, if you want to set rgb layer indication by default, and save the default valued.
+
+```c
+void eeconfig_init_user(void) { // EEPROM is getting reset!
+ user_config.raw = 0;
+ user_config.rgb_layer_change = true; // We want this enabled by default
+ eeconfig_update_user(user_config.raw); // Write default value to EEPROM now
+
+ // use the non noeeprom versions, to write these values to EEPROM too
+ rgblight_enable(); // Enable RGB by default
+ rgblight_sethsv_cyan(); // Set it to CYAN by default
+ rgblight_mode(1); // set to solid by default
+}
+```
+
+And you're done. The RGB layer indication will only work if you want it to. And it will be saved, even after unplugging the board. And if you use any of the RGB codes, it will disable the layer indication, so that it stays on the mode and color that you set it to.
+
+## 'EECONFIG' Function Documentation
+
+* Keyboard/Revision: `void eeconfig_init_kb(void)`, `uint32_t eeconfig_read_kb(void)` and `void eeconfig_update_kb(uint32_t val)`
+* Keymap: `void eeconfig_init_user(void)`, `uint32_t eeconfig_read_user(void)` and `void eeconfig_update_user(uint32_t val)`
+
+The `val` is the value of the data that you want to write to EEPROM. And the `eeconfig_read_*` function return a 32 bit (DWORD) value from the EEPROM.
diff --git a/docs/feature_encoders.md b/docs/feature_encoders.md
index ad6ed2bece..2e4a4fe324 100644
--- a/docs/feature_encoders.md
+++ b/docs/feature_encoders.md
@@ -69,7 +69,7 @@ Additionally, if one side does not have an encoder, you can specify `{}` for the
## Encoder map :id=encoder-map
-Encoder mapping may be added to your `keymap.c`, which replicates the normal keyswitch layer handling functionality, but with encoders. Add this to your `rules.mk`:
+Encoder mapping may be added to your `keymap.c`, which replicates the normal keyswitch layer handling functionality, but with encoders. Add this to your keymap's `rules.mk`:
```make
ENCODER_MAP_ENABLE = yes
@@ -88,6 +88,8 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
#endif
```
+?> This should only be enabled at the keymap level.
+
## Callbacks
When not using `ENCODER_MAP_ENABLE = yes`, the callback functions can be inserted into your `<keyboard>.c`:
@@ -125,34 +127,37 @@ 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);
+ switch(get_highest_layer(layer_state|default_layer_state)) {
+ case 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();
+ }
}
- }
- } else { /* Layer 0 */
- if (index == 0) {
- if (clockwise) {
- tap_code(KC_PGDN);
- } else {
- tap_code(KC_PGUP);
+ break;
+ case 1:
+ 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 if (index == 1) {
- if (clockwise) {
- rgb_matrix_increase_speed();
- } else {
- rgb_matrix_decrease_speed();
- }
- }
+ break;
}
return false;
}
diff --git a/docs/feature_layers.md b/docs/feature_layers.md
index e30c540a79..5ad4005f5d 100644
--- a/docs/feature_layers.md
+++ b/docs/feature_layers.md
@@ -1,6 +1,6 @@
# Layers :id=layers
-One of the most powerful and well used features of QMK Firmware is the ability to use layers. For most people, this amounts to a function key that allows for different keys, much like what you would see on a laptop or tablet keyboard.
+One of the most powerful and well used features of QMK Firmware is the ability to use layers. For most people, this amounts to a function key that allows for different keys, much like what you would see on a laptop or tablet keyboard.
For a detailed explanation of how the layer stack works, checkout [Keymap Overview](keymap.md#keymap-and-layers).
@@ -9,7 +9,7 @@ For a detailed explanation of how the layer stack works, checkout [Keymap Overvi
These functions allow you to activate layers in various ways. Note that layers are not generally independent layouts -- multiple layers can be activated at once, and it's typical for layers to use `KC_TRNS` to allow keypresses to pass through to lower layers. When using momentary layer switching with MO(), LM(), TT(), or LT(), make sure to leave the key on the above layers transparent or it may not work as intended.
* `DF(layer)` - switches the default layer. The default layer is the always-active base layer that other layers stack on top of. See below for more about the default layer. This might be used to switch from QWERTY to Dvorak layout. (Note that this is a temporary switch that only persists until the keyboard loses power. To modify the default layer in a persistent way requires deeper customization, such as calling the `set_single_persistent_default_layer` function inside of [process_record_user](custom_quantum_functions.md#programming-the-behavior-of-any-keycode).)
-* `MO(layer)` - momentarily activates *layer*. As soon as you let go of the key, the layer is deactivated.
+* `MO(layer)` - momentarily activates *layer*. As soon as you let go of the key, the layer is deactivated.
* `LM(layer, mod)` - Momentarily activates *layer* (like `MO`), but with modifier(s) *mod* active. Only supports layers 0-15 and the left modifiers: `MOD_LCTL`, `MOD_LSFT`, `MOD_LALT`, `MOD_LGUI` (note the use of `MOD_` constants instead of `KC_`). These modifiers can be combined using bitwise OR, e.g. `LM(_RAISE, MOD_LCTL | MOD_LALT)`.
* `LT(layer, kc)` - momentarily activates *layer* when held, and sends *kc* when tapped. Only supports layers 0-15.
* `OSL(layer)` - momentarily activates *layer* until the next key is pressed. See [One Shot Keys](one_shot_keys.md) for details and additional functionality.
@@ -31,7 +31,7 @@ Care must be taken when switching layers, it's possible to lock yourself into a
If you are just getting started with QMK you will want to keep everything simple. Follow these guidelines when setting up your layers:
-* Setup layer 0 as your default, "base" layer. This is your normal typing layer, and could be whatever layout you want (qwerty, dvorak, colemak, etc.). It's important to set this as the lowest layer since it will typically have most or all of the keyboard's keys defined, so would block other layers from having any effect if it were above them (i.e., had a higher layer number).
+* Setup layer 0 as your default, "base" layer. This is your normal typing layer, and could be whatever layout you want (qwerty, dvorak, colemak, etc.). It's important to set this as the lowest layer since it will typically have most or all of the keyboard's keys defined, so would block other layers from having any effect if it were above them (i.e., had a higher layer number).
* Arrange your layers in a "tree" layout, with layer 0 as the root. Do not try to enter the same layer from more than one other layer.
* In a layer's keymap, only reference higher-numbered layers. Because layers are processed from the highest-numbered (topmost) active layer down, modifying the state of lower layers can be tricky and error-prone.
@@ -89,3 +89,46 @@ It is also possible to check the state of a particular layer using the following
|---------------------------------|-------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|
| `layer_state_is(layer)` | Checks if the specified `layer` is enabled globally. | `IS_LAYER_ON(layer)`, `IS_LAYER_OFF(layer)` |
| `layer_state_cmp(state, layer)` | Checks `state` to see if the specified `layer` is enabled. Intended for use in layer callbacks. | `IS_LAYER_ON_STATE(state, layer)`, `IS_LAYER_OFF_STATE(state, layer)` |
+
+## Layer Change Code :id=layer-change-code
+
+This runs code every time that the layers get changed. This can be useful for layer indication, or custom layer handling.
+
+### Example `layer_state_set_*` Implementation
+
+This example shows how to set the [RGB Underglow](feature_rgblight.md) lights based on the layer, using the Planck as an example.
+
+```c
+layer_state_t layer_state_set_user(layer_state_t state) {
+ switch (get_highest_layer(state)) {
+ case _RAISE:
+ rgblight_setrgb (0x00, 0x00, 0xFF);
+ break;
+ case _LOWER:
+ rgblight_setrgb (0xFF, 0x00, 0x00);
+ break;
+ case _PLOVER:
+ rgblight_setrgb (0x00, 0xFF, 0x00);
+ break;
+ case _ADJUST:
+ rgblight_setrgb (0x7A, 0x00, 0xFF);
+ break;
+ default: // for any other layers, or the default layer
+ rgblight_setrgb (0x00, 0xFF, 0xFF);
+ break;
+ }
+ return state;
+}
+```
+
+Use the `IS_LAYER_ON_STATE(state, layer)` and `IS_LAYER_OFF_STATE(state, layer)` macros to check the status of a particular layer.
+
+Outside of `layer_state_set_*` functions, you can use the `IS_LAYER_ON(layer)` and `IS_LAYER_OFF(layer)` macros to check global layer state.
+
+### `layer_state_set_*` Function Documentation
+
+* Keyboard/Revision: `layer_state_t layer_state_set_kb(layer_state_t state)`
+* Keymap: `layer_state_t layer_state_set_user(layer_state_t state)`
+
+
+The `state` is the bitmask of the active layers, as explained in the [Keymap Overview](keymap.md#keymap-layer-status)
diff --git a/docs/feature_macros.md b/docs/feature_macros.md
index 78bc4ba0a5..f5bd5be41b 100644
--- a/docs/feature_macros.md
+++ b/docs/feature_macros.md
@@ -106,6 +106,8 @@ Only basic keycodes (prefixed by `KC_`) are supported. Do not include the `KC_`
### `SEND_STRING()` & `process_record_user`
+See also: [Send String](feature_send_string.md)
+
Sometimes you want a key to type out words or phrases. For the most common situations, we've provided `SEND_STRING()`, which will type out a string (i.e. a sequence of characters) for you. All ASCII characters that are easily translatable to a keycode are supported (e.g. `qmk 123\n\t`).
Here is an example `keymap.c` for a two-key keyboard:
@@ -347,7 +349,7 @@ If the keycode is `KC_CAPS`, it waits `TAP_HOLD_CAPS_DELAY` milliseconds instead
Like `tap_code(<kc>)`, but with a `delay` parameter for specifying arbitrary intervals before sending the unregister event.
-#### `register_code16(<kc>);`, `unregister_code16(<kc>);` and `tap_code16(<kc>);`
+#### `register_code16(<kc>);`, `unregister_code16(<kc>);`, `tap_code16(<kc>);` and `tap_code16_delay(<kc>, <delay>);`
These functions work similar to their regular counterparts, but allow you to use modded keycodes (with Shift, Alt, Control, and/or GUI applied to them).
diff --git a/docs/feature_mouse_keys.md b/docs/feature_mouse_keys.md
index 905da36e43..8e474c4245 100644
--- a/docs/feature_mouse_keys.md
+++ b/docs/feature_mouse_keys.md
@@ -87,9 +87,9 @@ This is an extension of the accelerated mode. The kinetic mode uses a quadratic
|`MK_KINETIC_SPEED` |undefined|Enable kinetic mode |
|`MOUSEKEY_DELAY` |5 |Delay between pressing a movement key and cursor movement |
|`MOUSEKEY_INTERVAL` |10 |Time between cursor movements in milliseconds |
-|`MOUSEKEY_MOVE_DELTA` |5 |Step size for accelerating from initial to base speed |
+|`MOUSEKEY_MOVE_DELTA` |16 |Step size for accelerating from initial to base speed |
|`MOUSEKEY_INITIAL_SPEED` |100 |Initial speed of the cursor in pixel per second |
-|`MOUSEKEY_BASE_SPEED` |1000 |Maximum cursor speed at which acceleration stops |
+|`MOUSEKEY_BASE_SPEED` |5000 |Maximum cursor speed at which acceleration stops |
|`MOUSEKEY_DECELERATED_SPEED` |400 |Decelerated cursor speed |
|`MOUSEKEY_ACCELERATED_SPEED` |3000 |Accelerated cursor speed |
|`MOUSEKEY_WHEEL_INITIAL_MOVEMENTS` |16 |Initial number of movements of the mouse wheel |
@@ -100,7 +100,7 @@ This is an extension of the accelerated mode. The kinetic mode uses a quadratic
Tips:
* The smoothness of the cursor movement depends on the `MOUSEKEY_INTERVAL` setting. The shorter the interval is set the smoother the movement will be. Setting the value too low makes the cursor unresponsive. Lower settings are possible if the micro processor is fast enough. For example: At an interval of `8` milliseconds, `125` movements per second will be initiated. With a base speed of `1000` each movement will move the cursor by `8` pixels.
-* Mouse wheel movements are implemented differently from cursor movements. While it's okay for the cursor to move multiple pixels at once for the mouse wheel this would lead to jerky movements. Instead, the mouse wheel operates at step size `1`. Setting mouse wheel speed is done by adjusting the number of wheel movements per second.
+* Mouse wheel movements are implemented differently from cursor movements. While it's okay for the cursor to move multiple pixels at once for the mouse wheel this would lead to jerky movements. Instead, the mouse wheel operates at step size `2`. Setting mouse wheel speed is done by adjusting the number of wheel movements per second.
### Constant mode
diff --git a/docs/feature_oled_driver.md b/docs/feature_oled_driver.md
index 0d04f007f8..f73909f486 100644
--- a/docs/feature_oled_driver.md
+++ b/docs/feature_oled_driver.md
@@ -14,8 +14,6 @@ Tested combinations:
Hardware configurations using Arm-based microcontrollers or different sizes of OLED modules may be compatible, but are untested.
-!> Warning: This OLED driver currently uses the new i2c_master driver from Split Common code. If your split keyboard uses I2C to communicate between sides, this driver could cause an address conflict (serial is fine). Please contact your keyboard vendor and ask them to migrate to the latest Split Common code to fix this. In addition, the display timeout system to reduce OLED burn-in also uses Split Common to detect keypresses, so you will need to implement custom timeout logic for non-Split Common keyboards.
-
## Usage
To enable the OLED feature, there are two steps. First, when compiling your keyboard, you'll need to add the following to your `rules.mk`:
diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md
index 02c1e64a31..999dd1272d 100644
--- a/docs/feature_pointing_device.md
+++ b/docs/feature_pointing_device.md
@@ -10,7 +10,7 @@ POINTING_DEVICE_ENABLE = yes
## Sensor Drivers
-There are a number of sensors that are supported by default. Note that only one sensor can be enabled by `POINTING_DEVICE_DRIVER` at a time. If you need to enable more than one sensor, then you need to implement it manually.
+There are a number of sensors that are supported by default. Note that only one sensor can be enabled by `POINTING_DEVICE_DRIVER` at a time. If you need to enable more than one sensor, then you need to implement it manually, using the `custom` driver.
### ADNS 5050 Sensor
@@ -22,11 +22,13 @@ POINTING_DEVICE_DRIVER = adns5050
The ADNS 5050 sensor uses a serial type protocol for communication, and requires an additional light source.
-| Setting | Description |
-|--------------------|---------------------------------------------------------------------|
-|`ADNS5050_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. |
-|`ADNS5050_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. |
-|`ADNS5050_CS_PIN` | (Required) The pin connected to the cable select pin of the sensor. |
+| Setting | Description | Default |
+| ------------------- | ------------------------------------------------------------------- | -------------------------- |
+| `ADNS5050_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` |
+| `ADNS5050_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` |
+| `ADNS5050_CS_PIN` | (Required) The pin connected to the cable select pin of the sensor. | `POINTING_DEVICE_CS_PIN` |
+
+
The CPI range is 125-1375, in increments of 125. Defaults to 500 CPI.
@@ -40,13 +42,13 @@ POINTING_DEVICE_DRIVER = adns9800
The ADNS 9800 is an SPI driven optical sensor, that uses laser output for surface tracking.
-| Setting | Description | Default |
-|--------------------------------|------------------------------------------------------------------------|---------------|
-|`ADNS9800_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
-|`ADNS9800_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
-|`ADNS9800_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
-|`ADNS9800_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
-|`ADNS9800_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
+| Setting | Description | Default |
+| ----------------------- | ---------------------------------------------------------------------- | ------------------------ |
+| `ADNS9800_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
+| `ADNS9800_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
+| `ADNS9800_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
+| `ADNS9800_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
+| `ADNS9800_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | `POINTING_DEVICE_CS_PIN` |
The CPI range is 800-8200, in increments of 200. Defaults to 1800 CPI.
@@ -61,17 +63,16 @@ POINTING_DEVICE_DRIVER = analog_joystick
The Analog Joystick is an analog (ADC) driven sensor. There are a variety of joysticks that you can use for this.
-| Setting | Description | Default |
-|----------------------------------|----------------------------------------------------------------------------|---------------|
-|`ANALOG_JOYSTICK_X_AXIS_PIN` | (Required) The pin used for the vertical/X axis. | _not defined_ |
-|`ANALOG_JOYSTICK_Y_AXIS_PIN` | (Required) The pin used for the horizontal/Y axis. | _not defined_ |
-|`ANALOG_JOYSTICK_AXIS_MIN` | (Optional) Sets the lower range to be considered movement. | `0` |
-|`ANALOG_JOYSTICK_AXIS_MAX` | (Optional) Sets the upper range to be considered movement. | `1023` |
-|`ANALOG_JOYSTICK_SPEED_REGULATOR` | (Optional) The divisor used to slow down movement. (lower makes it faster) | `20` |
-|`ANALOG_JOYSTICK_READ_INTERVAL` | (Optional) The interval in milliseconds between reads. | `10` |
-|`ANALOG_JOYSTICK_SPEED_MAX` | (Optional) The maximum value used for motion. | `2` |
-|`ANALOG_JOYSTICK_CLICK_PIN` | (Optional) The pin wired up to the press switch of the analog stick. | _not defined_ |
-
+| Setting | Description | Default |
+| --------------------------------- | -------------------------------------------------------------------------- | ------------- |
+| `ANALOG_JOYSTICK_X_AXIS_PIN` | (Required) The pin used for the vertical/X axis. | _not defined_ |
+| `ANALOG_JOYSTICK_Y_AXIS_PIN` | (Required) The pin used for the horizontal/Y axis. | _not defined_ |
+| `ANALOG_JOYSTICK_AXIS_MIN` | (Optional) Sets the lower range to be considered movement. | `0` |
+| `ANALOG_JOYSTICK_AXIS_MAX` | (Optional) Sets the upper range to be considered movement. | `1023` |
+| `ANALOG_JOYSTICK_SPEED_REGULATOR` | (Optional) The divisor used to slow down movement. (lower makes it faster) | `20` |
+| `ANALOG_JOYSTICK_READ_INTERVAL` | (Optional) The interval in milliseconds between reads. | `10` |
+| `ANALOG_JOYSTICK_SPEED_MAX` | (Optional) The maximum value used for motion. | `2` |
+| `ANALOG_JOYSTICK_CLICK_PIN` | (Optional) The pin wired up to the press switch of the analog stick. | _not defined_ |
### Cirque Trackpad
@@ -90,29 +91,93 @@ POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
This supports the Cirque Pinnacle 1CA027 Touch Controller, which is used in the TM040040, TM035035 and the TM023023 trackpads. These are I2C or SPI compatible, and both configurations are supported.
-| Setting | Description | Default |
-|---------------------------------|---------------------------------------------------------------------------------|-----------------------|
-|`CIRQUE_PINNACLE_X_LOWER` | (Optional) The minimum reachable X value on the sensor. | `127` |
-|`CIRQUE_PINNACLE_X_UPPER` | (Optional) The maximum reachable X value on the sensor. | `1919` |
-|`CIRQUE_PINNACLE_Y_LOWER` | (Optional) The minimum reachable Y value on the sensor. | `63` |
-|`CIRQUE_PINNACLE_Y_UPPER` | (Optional) The maximum reachable Y value on the sensor. | `1471` |
-|`CIRQUE_PINNACLE_TAPPING_TERM` | (Optional) Length of time that a touch can be to be considered a tap. | `TAPPING_TERM`/`200` |
-|`CIRQUE_PINNACLE_TOUCH_DEBOUNCE` | (Optional) Length of time that a touch can be to be considered a tap. | `TAPPING_TERM`/`200` |
-
-| I2C Setting | Description | Default |
-|--------------------------|---------------------------------------------------------------------------------|---------|
-|`CIRQUE_PINNACLE_ADDR` | (Required) Sets the I2C Address for the Cirque Trackpad | `0x2A` |
-|`CIRQUE_PINNACLE_TIMEOUT` | (Optional) The timeout for i2c communication with the trackpad in milliseconds. | `20` |
-
-| SPI Setting | Description | Default |
-|-------------------------------|------------------------------------------------------------------------|---------------|
-|`CIRQUE_PINNACLE_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `1000000` |
-|`CIRQUE_PINNACLE_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
-|`CIRQUE_PINNACLE_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `1` |
-|`CIRQUE_PINNACLE_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
-|`CIRQUE_PINNACLE_SPI_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
-
-Default Scaling/CPI is 1024.
+#### Common settings
+
+| Setting | Description | Default |
+| -------------------------------- | ---------------------------------------------------------- | ------------------ |
+| `CIRQUE_PINNACLE_DIAMETER_MM` | (Optional) Diameter of the trackpad sensor in millimeters. | `40` |
+| `CIRQUE_PINNACLE_ATTENUATION` | (Optional) Sets the attenuation of the sensor data. | `ADC_ATTENUATE_4X` |
+| `CIRQUE_PINNACLE_CURVED_OVERLAY` | (Optional) Applies settings tuned for curved overlay. | _not defined_ |
+| `CIRQUE_PINNACLE_POSITION_MODE` | (Optional) Mode of operation. | _not defined_ |
+
+**`CIRQUE_PINNACLE_ATTENUATION`** is a measure of how much data is suppressed in regards to sensitivity. The higher the attenuation, the less sensitive the touchpad will be.
+
+Default attenuation is set to 4X, although if you are using a thicker overlay (such as the curved overlay) you will want a lower attenuation such as 2X. The possible values are:
+* `ADC_ATTENUATE_4X`: Least sensitive
+* `ADC_ATTENUATE_3X`
+* `ADC_ATTENUATE_2X`
+* `ADC_ATTENUATE_1X`: Most sensitive
+
+**`CIRQUE_PINNACLE_POSITION_MODE`** can be `CIRQUE_PINNACLE_ABSOLUTE_MODE` or `CIRQUE_PINNACLE_RELATIVE_MODE`. Modes differ in supported features/gestures.
+
+* `CIRQUE_PINNACLE_ABSOLUTE_MODE`: Reports absolute x, y, z (touch pressure) coordinates and up to 5 hw buttons connected to the trackpad
+* `CIRQUE_PINNACLE_RELATIVE_MODE`: Reports x/y deltas, scroll and up to 3 buttons (2 of them can be from taps, see gestures) connected to trackpad. Supports taps on secondary side of split. Saves about 2k of flash compared to absolute mode with all features.
+
+| I2C Setting | Description | Default |
+| ------------------------- | ------------------------------------------------------------------------------- | ------- |
+| `CIRQUE_PINNACLE_ADDR` | (Required) Sets the I2C Address for the Cirque Trackpad | `0x2A` |
+| `CIRQUE_PINNACLE_TIMEOUT` | (Optional) The timeout for i2c communication with the trackpad in milliseconds. | `20` |
+
+| SPI Setting | Description | Default |
+| ------------------------------ | ---------------------------------------------------------------------- | ------------------------ |
+| `CIRQUE_PINNACLE_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `1000000` |
+| `CIRQUE_PINNACLE_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
+| `CIRQUE_PINNACLE_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `1` |
+| `CIRQUE_PINNACLE_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
+| `CIRQUE_PINNACLE_SPI_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | `POINTING_DEVICE_CS_PIN` |
+
+Default Scaling is 1024. Actual CPI depends on trackpad diameter.
+
+Also see the `POINTING_DEVICE_TASK_THROTTLE_MS`, which defaults to 10ms when using Cirque Pinnacle, which matches the internal update rate of the position registers (in standard configuration). Advanced configuration for pen/stylus usage might require lower values.
+
+#### Absolute mode settings
+
+| Setting | Description | Default |
+| -------------------------------- | ---------------------------------------------------------- | ------------------ |
+| `CIRQUE_PINNACLE_X_LOWER` | (Optional) The minimum reachable X value on the sensor. | `127` |
+| `CIRQUE_PINNACLE_X_UPPER` | (Optional) The maximum reachable X value on the sensor. | `1919` |
+| `CIRQUE_PINNACLE_Y_LOWER` | (Optional) The minimum reachable Y value on the sensor. | `63` |
+| `CIRQUE_PINNACLE_Y_UPPER` | (Optional) The maximum reachable Y value on the sensor. | `1471` |
+
+#### Absolute mode gestures
+
+| Gesture Setting | Description | Default |
+| ---------------------------------------------- | ------------------------------------------------------------------------------ | -------------------- |
+| `CIRQUE_PINNACLE_TAP_ENABLE` | (Optional) Enable tap to click. This currently only works on the master side. | _not defined_ |
+| `CIRQUE_PINNACLE_TAPPING_TERM` | (Optional) Length of time that a touch can be to be considered a tap. | `TAPPING_TERM`/`200` |
+| `CIRQUE_PINNACLE_TOUCH_DEBOUNCE` | (Optional) Length of time that a touch can be to be considered a tap. | `TAPPING_TERM`/`200` |
+
+`POINTING_DEVICE_GESTURES_SCROLL_ENABLE` in this mode enables circular scroll. Touch originating in outer ring can trigger scroll by moving along the perimeter. Near side triggers vertical scroll and far side triggers horizontal scroll.
+
+Additionally, `POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE` is supported in this mode.
+
+#### Relative mode gestures
+
+| Gesture Setting | Description | Default |
+| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
+| `CIRQUE_PINNACLE_TAP_ENABLE` | (Optional) Enable tap to "left click". Works on both sides of a split keyboard. | _not defined_ |
+| `CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE` | (Optional) Tap in upper right corner (half of the finger needs to be outside of the trackpad) of the trackpad will result in "right click". `CIRQUE_PINNACLE_TAP_ENABLE` must be enabled. | _not defined_ |
+
+Tapping term and debounce are not configurable in this mode since it's handled by trackpad internally.
+
+`POINTING_DEVICE_GESTURES_SCROLL_ENABLE` in this mode enables side scroll. Touch originating on the right side can trigger vertical scroll (IntelliSense trackpad style).
+
+### PAW 3204 Sensor
+
+To use the paw 3204 sensor, add this to your `rules.mk`
+
+```make
+POINTING_DEVICE_DRIVER = paw3204
+```
+
+The paw 3204 sensor uses a serial type protocol for communication, and requires an additional light source.
+
+| Setting | Description | Default |
+| ------------------ |--------------------------------------------------------------- | -------------------------- |
+| `PAW3204_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` |
+| `PAW3204_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` |
+
+The CPI range is 400-1600, with supported values of (400, 500, 600, 800, 1000, 1200 and 1600). Defaults to 1000 CPI.
### Pimoroni Trackball
@@ -124,62 +189,69 @@ POINTING_DEVICE_DRIVER = pimoroni_trackball
The Pimoroni Trackball module is a I2C based breakout board with an RGB enable trackball.
-| Setting | Description | Default |
-|-------------------------------------|------------------------------------------------------------------------------------|---------|
-|`PIMORONI_TRACKBALL_ADDRESS` | (Required) Sets the I2C Address for the Pimoroni Trackball. | `0x0A` |
-|`PIMORONI_TRACKBALL_TIMEOUT` | (Optional) The timeout for i2c communication with the trackball in milliseconds. | `100` |
-|`PIMORONI_TRACKBALL_SCALE` | (Optional) The multiplier used to generate reports from the sensor. | `5` |
-|`PIMORONI_TRACKBALL_DEBOUNCE_CYCLES` | (Optional) The number of scan cycles used for debouncing on the ball press. | `20` |
-|`PIMORONI_TRACKBALL_ERROR_COUNT` | (Optional) Specifies the number of read/write errors until the sensor is disabled. | `10` |
+| Setting | Description | Default |
+| ------------------------------------ | ---------------------------------------------------------------------------------- | ------- |
+| `PIMORONI_TRACKBALL_ADDRESS` | (Required) Sets the I2C Address for the Pimoroni Trackball. | `0x0A` |
+| `PIMORONI_TRACKBALL_TIMEOUT` | (Optional) The timeout for i2c communication with the trackball in milliseconds. | `100` |
+| `PIMORONI_TRACKBALL_SCALE` | (Optional) The multiplier used to generate reports from the sensor. | `5` |
+| `PIMORONI_TRACKBALL_DEBOUNCE_CYCLES` | (Optional) The number of scan cycles used for debouncing on the ball press. | `20` |
+| `PIMORONI_TRACKBALL_ERROR_COUNT` | (Optional) Specifies the number of read/write errors until the sensor is disabled. | `10` |
+
+### PMW 3360 and PMW 3389 Sensor
-### PMW 3360 Sensor
+This drivers supports both the PMW 3360 and PMW 3389 sensor as well as multiple sensors of the same type _per_ controller, so 2 can be attached at the same side for split keyboards (or unsplit keyboards).
-This drivers supports multiple sensors _per_ controller, so 2 can be attached at the same side for split keyboards (or unsplit keyboards).
-To use the PMW 3360 sensor, add this to your `rules.mk`
+To use the **PMW 3360** sensor, add this to your `rules.mk`
```make
POINTING_DEVICE_DRIVER = pmw3360
```
-The PMW 3360 is an SPI driven optical sensor, that uses a built in IR LED for surface tracking.
+The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI.
-| Setting | Description | Default |
-|-----------------------------|--------------------------------------------------------------------------------------------|---------------|
-|`PMW3360_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
-|`PMW3360_CS_PINS` | (Alternative) Sets the Cable Select pins connected to multiple sensors. | _not defined_ |
-|`PMW3360_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
-|`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 +/- 127 degrees directly in the sensor.| `0` |
-|`PMW3360_FIRMWARE_UPLOAD_FAST` | (Optional) Skips the 15us wait between firmware blocks. | _not defined_ |
+To use the **PMW 3389** sensor, add this to your `rules.mk`
-The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI.
+```make
+POINTING_DEVICE_DRIVER = pmw3389
+```
+
+The CPI range is 50-16000, in increments of 50. Defaults to 2000 CPI.
+
+Both PMW 3360 and PMW 3389 are SPI driven optical sensors, that use a built in IR LED for surface tracking.
+
+| Setting | Description | Default |
+| ---------------------------- | ------------------------------------------------------------------------------------------- | ------------------------ |
+| `PMW33XX_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | `POINTING_DEVICE_CS_PIN` |
+| `PMW33XX_CS_PINS` | (Alternative) Sets the Cable Select pins connected to multiple sensors. | _not defined_ |
+| `PMW33XX_CPI` | (Optional) Sets counts per inch sensitivity of the sensor. | _varies_ |
+| `PMW33XX_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
+| `PMW33XX_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
+| `PMW33XX_LIFTOFF_DISTANCE` | (Optional) Sets the lift off distance at run time | `0x02` |
+| `ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 127 degrees directly in the sensor. | `0` |
-To use multiple sensors, instead of setting `PMW3360_CS_PIN` you need to set `PMW3360_CS_PINS` and also handle and merge the read from this sensor in user code.
+To use multiple sensors, instead of setting `PMW33XX_CS_PIN` you need to set `PMW33XX_CS_PINS` and also handle and merge the read from this sensor in user code.
Note that different (per sensor) values of CPI, speed liftoff, rotational angle or flipping of X/Y is not currently supported.
```c
// in config.h:
-#define PMW3360_CS_PINS { B5, B6 }
-
+#define PMW33XX_CS_PINS { B5, B6 }
// in keyboard.c:
#ifdef POINTING_DEVICE_ENABLE
void pointing_device_init_kb(void) {
- pmw3360_init(1); // index 1 is the second device.
- pointing_device_set_cpi(800); // applies to both sensors
+ pmw33xx_init(1); // index 1 is the second device.
+ pmw33xx_set_cpi(0, 800); // applies to first sensor
+ pmw33xx_set_cpi(1, 800); // applies to second sensor
pointing_device_init_user();
}
// Contains report from sensor #0 already, need to merge in from sensor #1
report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
- report_pmw3360_t data = pmw3360_read_burst(1);
- if (data.isOnSurface && data.isMotion) {
+ pmw33xx_report_t report = pmw33xx_read_burst(1);
+ if (!report.motion.b.is_lifted && report.motion.b.is_motion) {
// From quantum/pointing_device_drivers.c
#define constrain_hid(amt) ((amt) < -127 ? -127 : ((amt) > 127 ? 127 : (amt)))
- mouse_report.x = constrain_hid(mouse_report.x + data.dx);
- mouse_report.y = constrain_hid(mouse_report.y + data.dy);
+ mouse_report.x = constrain_hid(mouse_report.x + report.delta_x);
+ mouse_report.y = constrain_hid(mouse_report.y + report.delta_y);
}
return pointing_device_task_user(mouse_report);
}
@@ -187,30 +259,6 @@ report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
```
-### PMW 3389 Sensor
-
-To use the PMW 3389 sensor, add this to your `rules.mk`
-
-```make
-POINTING_DEVICE_DRIVER = pmw3389
-```
-
-The PMW 3389 is an SPI driven optical sensor, that uses a built in IR LED for surface tracking.
-
-| Setting | Description | Default |
-|---------------------------------|--------------------------------------------------------------------------------------------|---------------|
-|`PMW3389_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
-|`PMW3389_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
-|`PMW3389_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
-|`PMW3389_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
-|`PMW3389_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
-|`PMW3389_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` |
-|`PMW3389_FIRMWARE_UPLOAD_FAST` | (Optional) Skips the 15us wait between firmware blocks. | _not defined_ |
-
-The CPI range is 50-16000, in increments of 50. Defaults to 2000 CPI.
-
-
### Custom Driver
If you have a sensor type that isn't supported above, a custom option is available by adding the following to your `rules.mk`
@@ -232,41 +280,50 @@ void pointing_device_driver_set_cpi(uint16_t cpi) {}
## Common Configuration
-| Setting | Description | Default |
-|----------------------------------|-----------------------------------------------------------------------|-------------------|
-|`POINTING_DEVICE_ROTATION_90` | (Optional) Rotates the X and Y data by 90 degrees. | _not defined_ |
-|`POINTING_DEVICE_ROTATION_180` | (Optional) Rotates the X and Y data by 180 degrees. | _not defined_ |
-|`POINTING_DEVICE_ROTATION_270` | (Optional) Rotates the X and Y data by 270 degrees. | _not defined_ |
-|`POINTING_DEVICE_INVERT_X` | (Optional) Inverts the X axis report. | _not defined_ |
-|`POINTING_DEVICE_INVERT_Y` | (Optional) Inverts the Y axis report. | _not defined_ |
-|`POINTING_DEVICE_MOTION_PIN` | (Optional) If supported, will only read from sensor if pin is active. | _not defined_ |
-|`POINTING_DEVICE_TASK_THROTTLE_MS` | (Optional) Limits the frequency that the sensor is polled for motion. | _not defined_ |
+| Setting | Description | Default |
+| ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------------- |
+| `MOUSE_EXTENDED_REPORT` | (Optional) Enables support for extended mouse reports. (-32767 to 32767, instead of just -127 to 127). | _not defined_ |
+| `POINTING_DEVICE_ROTATION_90` | (Optional) Rotates the X and Y data by 90 degrees. | _not defined_ |
+| `POINTING_DEVICE_ROTATION_180` | (Optional) Rotates the X and Y data by 180 degrees. | _not defined_ |
+| `POINTING_DEVICE_ROTATION_270` | (Optional) Rotates the X and Y data by 270 degrees. | _not defined_ |
+| `POINTING_DEVICE_INVERT_X` | (Optional) Inverts the X axis report. | _not defined_ |
+| `POINTING_DEVICE_INVERT_Y` | (Optional) Inverts the Y axis report. | _not defined_ |
+| `POINTING_DEVICE_MOTION_PIN` | (Optional) If supported, will only read from sensor if pin is active. | _not defined_ |
+| `POINTING_DEVICE_TASK_THROTTLE_MS` | (Optional) Limits the frequency that the sensor is polled for motion. | _not defined_ |
+| `POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE` | (Optional) Enable inertial cursor. Cursor continues moving after a flick gesture and slows down by kinetic friction. | _not defined_ |
+| `POINTING_DEVICE_GESTURES_SCROLL_ENABLE` | (Optional) Enable scroll gesture. The gesture that activates the scroll is device dependent. | _not defined_ |
+| `POINTING_DEVICE_CS_PIN` | (Optional) Provides a default CS pin, useful for supporting multiple sensor configs. | _not defined_ |
+| `POINTING_DEVICE_SDIO_PIN` | (Optional) Provides a default SDIO pin, useful for supporting multiple sensor configs. | _not defined_ |
+| `POINTING_DEVICE_SCLK_PIN` | (Optional) Provides a default SCLK pin, useful for supporting multiple sensor configs. | _not defined_ |
!> When using `SPLIT_POINTING_ENABLE` the `POINTING_DEVICE_MOTION_PIN` functionality is not supported and `POINTING_DEVICE_TASK_THROTTLE_MS` will default to `1`. Increasing this value will increase transport performance at the cost of possible mouse responsiveness.
+The `POINTING_DEVICE_CS_PIN`, `POINTING_DEVICE_SDIO_PIN`, and `POINTING_DEVICE_SCLK_PIN` provide a convenient way to define a single pin that can be used for an interchangeable sensor config. This allows you to have a single config, without defining each device. Each sensor allows for this to be overridden with their own defines.
+
+!> Any pointing device with a lift/contact status can integrate inertial cursor feature into its driver, controlled by `POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE`. e.g. PMW3360 can use Lift_Stat from Motion register. Note that `POINTING_DEVICE_MOTION_PIN` cannot be used with this feature; continuous polling of `get_report()` is needed to generate glide reports.
## Split Keyboard Configuration
The following configuration options are only available when using `SPLIT_POINTING_ENABLE` see [data sync options](feature_split_keyboard.md?id=data-sync-options). The rotation and invert `*_RIGHT` options are only used with `POINTING_DEVICE_COMBINED`. If using `POINTING_DEVICE_LEFT` or `POINTING_DEVICE_RIGHT` use the common configuration above to configure your pointing device.
-| Setting | Description | Default |
-|----------------------------------------|-----------------------------------------------------------------------|---------------|
-|`POINTING_DEVICE_LEFT` | Pointing device on the left side (Required - pick one only) | _not defined_ |
-|`POINTING_DEVICE_RIGHT` | Pointing device on the right side (Required - pick one only) | _not defined_ |
-|`POINTING_DEVICE_COMBINED` | Pointing device on both sides (Required - pick one only) | _not defined_ |
-|`POINTING_DEVICE_ROTATION_90_RIGHT` | (Optional) Rotates the X and Y data by 90 degrees. | _not defined_ |
-|`POINTING_DEVICE_ROTATION_180_RIGHT` | (Optional) Rotates the X and Y data by 180 degrees. | _not defined_ |
-|`POINTING_DEVICE_ROTATION_270_RIGHT` | (Optional) Rotates the X and Y data by 270 degrees. | _not defined_ |
-|`POINTING_DEVICE_INVERT_X_RIGHT` | (Optional) Inverts the X axis report. | _not defined_ |
-|`POINTING_DEVICE_INVERT_Y_RIGHT` | (Optional) Inverts the Y axis report. | _not defined_ |
+| Setting | Description | Default |
+| ------------------------------------ | ----------------------------------------------------------------------------------------------------- | ------------- |
+| `POINTING_DEVICE_LEFT` | Pointing device on the left side (Required - pick one only) | _not defined_ |
+| `POINTING_DEVICE_RIGHT` | Pointing device on the right side (Required - pick one only) | _not defined_ |
+| `POINTING_DEVICE_COMBINED` | Pointing device on both sides (Required - pick one only) | _not defined_ |
+| `POINTING_DEVICE_ROTATION_90_RIGHT` | (Optional) Rotates the X and Y data by 90 degrees. | _not defined_ |
+| `POINTING_DEVICE_ROTATION_180_RIGHT` | (Optional) Rotates the X and Y data by 180 degrees. | _not defined_ |
+| `POINTING_DEVICE_ROTATION_270_RIGHT` | (Optional) Rotates the X and Y data by 270 degrees. | _not defined_ |
+| `POINTING_DEVICE_INVERT_X_RIGHT` | (Optional) Inverts the X axis report. | _not defined_ |
+| `POINTING_DEVICE_INVERT_Y_RIGHT` | (Optional) Inverts the Y axis report. | _not defined_ |
!> If there is a `_RIGHT` configuration option or callback, the [common configuration](feature_pointing_device.md?id=common-configuration) option will work for the left. For correct left/right detection you should setup a [handedness option](feature_split_keyboard?id=setting-handedness), `EE_HANDS` is usually a good option for an existing board that doesn't do handedness by hardware.
## Callbacks and Functions
-| Function | Description |
-|-----------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
+| Function | Description |
+| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `pointing_device_init_kb(void)` | Callback to allow for keyboard level initialization. Useful for additional hardware sensors. |
| `pointing_device_init_user(void)` | Callback to allow for user level initialization. Useful for additional hardware sensors. |
| `pointing_device_task_kb(mouse_report)` | Callback that sends sensor data, so keyboard code can intercept and modify the data. Returns a mouse report. |
@@ -274,11 +331,11 @@ The following configuration options are only available when using `SPLIT_POINTIN
| `pointing_device_handle_buttons(buttons, pressed, button)` | Callback to handle hardware button presses. Returns a `uint8_t`. |
| `pointing_device_get_cpi(void)` | Gets the current CPI/DPI setting from the sensor, if supported. |
| `pointing_device_set_cpi(uint16_t)` | Sets the CPI/DPI, if supported. |
-| `pointing_device_get_report(void)` | Returns the current mouse report (as a `mouse_report_t` data structure). |
-| `pointing_device_set_report(mouse_report)` | Sets the mouse report to the assigned `mouse_report_t` data structured passed to the function. |
-| `pointing_device_send(void)` | Sends the current mouse report to the host system. Function can be replaced. |
+| `pointing_device_get_report(void)` | Returns the current mouse report (as a `mouse_report_t` data structure). |
+| `pointing_device_set_report(mouse_report)` | Sets the mouse report to the assigned `mouse_report_t` data structured passed to the function. |
+| `pointing_device_send(void)` | Sends the current mouse report to the host system. Function can be replaced. |
| `has_mouse_report_changed(new_report, old_report)` | Compares the old and new `mouse_report_t` data and returns true only if it has changed. |
-| `pointing_device_adjust_by_defines(mouse_report)` | Applies rotations and invert configurations to a raw mouse report. |
+| `pointing_device_adjust_by_defines(mouse_report)` | Applies rotations and invert configurations to a raw mouse report. |
## Split Keyboard Callbacks and Functions
@@ -286,7 +343,7 @@ The following configuration options are only available when using `SPLIT_POINTIN
The combined functions below are only available when using `SPLIT_POINTING_ENABLE` and `POINTING_DEVICE_COMBINED`. The 2 callbacks `pointing_device_task_combined_*` replace the single sided equivalents above. See the [combined pointing devices example](feature_pointing_device.md?id=combined-pointing-devices)
| Function | Description |
-|-----------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------|
+| --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `pointing_device_set_shared_report(mouse_report)` | Sets the shared mouse report to the assigned `mouse_report_t` data structured passed to the function. |
| `pointing_device_set_cpi_on_side(bool, uint16_t)` | Sets the CPI/DPI of one side, if supported. Passing `true` will set the left and `false` the right` |
| `pointing_device_combine_reports(left_report, right_report)` | Returns a combined mouse_report of left_report and right_report (as a `mouse_report_t` data structure) |
@@ -430,4 +487,3 @@ report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, re
return pointing_device_combine_reports(left_report, right_report);
}
```
-=======
diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md
index 295e610fc4..13c63ac94c 100644
--- a/docs/feature_rgb_matrix.md
+++ b/docs/feature_rgb_matrix.md
@@ -86,6 +86,7 @@ You can use between 1 and 4 IS31FL3733 IC's. Do not specify `DRIVER_ADDR_<N>` de
| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 |
| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 |
| `ISSI_PWM_FREQUENCY` | (Optional) PWM Frequency Setting - IS31FL3733B only | 0 |
+| `ISSI_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF |
| `ISSI_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `ISSI_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | |
@@ -172,6 +173,7 @@ Configure the hardware via your `config.h`:
| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 |
| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 |
| `ISSI_PWM_FREQUENCY` | (Optional) PWM Frequency Setting - IS31FL3737B only | 0 |
+| `ISSI_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF |
| `ISSI_SWPULLUP` | (Optional) Set the value of the SWx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `ISSI_CSPULLUP` | (Optional) Set the value of the CSx lines on-chip de-ghosting resistors | PUR_0R (Disabled) |
| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | |
@@ -409,6 +411,7 @@ You can use up to 2 AW20216 IC's. Do not specify `DRIVER_<N>_xxx` defines for IC
| `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | |
| `AW_SCALING_MAX` | (Optional) LED current scaling value (0-255, higher values mean LED is brighter at full PWM) | 150 |
| `AW_GLOBAL_CURRENT_MAX` | (Optional) Driver global current limit (0-255, higher values means the driver may consume more power) | 150 |
+| `AW_SPI_MODE` | (Optional) Mode for SPI communication (0-3, defines polarity and phase of the clock) | 3 |
| `AW_SPI_DIVISOR` | (Optional) Clock divisor for SPI communication (powers of 2, smaller numbers means faster communication, should not be less than 4) | 4 |
Here is an example using 2 drivers.
@@ -665,11 +668,36 @@ In order to change the delay of temperature decrease define `RGB_MATRIX_TYPING_H
#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 50
```
-Heatmap effect may not light up the correct adjacent LEDs for certain key matrix layout such as split keyboards. The following define will limit the effect to pressed keys only:
+As heatmap uses the physical position of the leds set in the g_led_config, you may need to tweak the following options to get the best effect for your keyboard. Note the size of this grid is `224x64`.
+
+Limit the distance the effect spreads to surrounding keys.
+
+```c
+#define RGB_MATRIX_TYPING_HEATMAP_SPREAD 40
+```
+
+Limit how hot surrounding keys get from each press.
+
+```c
+#define RGB_MATRIX_TYPING_HEATMAP_AREA_LIMIT 16
+```
+
+Remove the spread effect entirely.
+
```c
#define RGB_MATRIX_TYPING_HEATMAP_SLIM
```
+### RGB Matrix Effect Solid Reactive :id=rgb-matrix-effect-solid-reactive
+
+Solid reactive effects will pulse RGB light on key presses with user configurable hues. To enable gradient mode that will automatically change reactive color, add the following define:
+
+```c
+#define RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE
+```
+
+Gradient mode will loop through the color wheel hues over time and its duration can be controlled with the effect speed keycodes (`RGB_SPI`/`RGB_SPD`).
+
## Custom RGB Matrix Effects :id=custom-rgb-matrix-effects
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.
@@ -777,6 +805,7 @@ These are defined in [`color.h`](https://github.com/qmk/qmk_firmware/blob/master
#define RGB_MATRIX_DISABLE_KEYCODES // disables control of rgb matrix by keycodes (must use code functions to control the feature)
#define RGB_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.
// If RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR
+#define RGB_TRIGGER_ON_KEYDOWN // Triggers RGB keypress events on key down. This makes RGB control feel more responsive. This may cause RGB to not function properly on some boards
```
## EEPROM storage :id=eeprom-storage
@@ -888,15 +917,15 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
```
-Layer indicator on all flagged keys:
+Layer indicator on all keys:
```c
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
for (uint8_t i = led_min; i <= led_max; i++) {
switch(get_highest_layer(layer_state|default_layer_state)) {
- case RAISE:
+ case 2:
rgb_matrix_set_color(i, RGB_BLUE);
break;
- case LOWER:
+ case 1:
rgb_matrix_set_color(i, RGB_YELLOW);
break;
default:
@@ -906,7 +935,7 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
```
-Layer indicator with only configured keys:
+Layer indicator only on keys with configured keycodes:
```c
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
if (get_highest_layer(layer_state) > 0) {
diff --git a/docs/feature_rgblight.md b/docs/feature_rgblight.md
index 11d4f89950..7e7699c5b7 100644
--- a/docs/feature_rgblight.md
+++ b/docs/feature_rgblight.md
@@ -105,7 +105,7 @@ Your RGB lighting can be configured by placing these `#define`s in your `config.
## Effects and Animations
Not only can this lighting be whatever color you want,
-if `RGBLIGHT_EFFECT_xxxx` or `RGBLIGHT_ANIMATIONS` is defined, you also have a number of animation modes at your disposal:
+if `RGBLIGHT_EFFECT_xxxx` is defined, you also have a number of animation modes at your disposal:
|Mode number symbol |Additional number |Description |
|-----------------------------|-------------------|---------------------------------------|
@@ -125,13 +125,14 @@ Check out [this video](https://youtube.com/watch?v=VKrpPAHlisY) for a demonstrat
Note: For versions older than 0.6.117, The mode numbers were written directly. In `quantum/rgblight/rgblight.h` there is a contrast table between the old mode number and the current symbol.
+
### Effect and Animation Toggles
Use these defines to add or remove animations from the firmware. When you are running low on flash space, it can be helpful to disable animations you are not using.
|Define |Default |Description |
|------------------------------------|-------------|-------------------------------------------------------------------------|
-|`RGBLIGHT_ANIMATIONS` |*Not defined*|Enable all additional animation modes. |
+|`RGBLIGHT_ANIMATIONS` |*Not defined*|Enable all additional animation modes. (deprecated) |
|`RGBLIGHT_EFFECT_ALTERNATING` |*Not defined*|Enable alternating animation mode. |
|`RGBLIGHT_EFFECT_BREATHING` |*Not defined*|Enable breathing animation mode. |
|`RGBLIGHT_EFFECT_CHRISTMAS` |*Not defined*|Enable christmas animation mode. |
@@ -143,6 +144,8 @@ Use these defines to add or remove animations from the firmware. When you are ru
|`RGBLIGHT_EFFECT_STATIC_GRADIENT` |*Not defined*|Enable static gradient mode. |
|`RGBLIGHT_EFFECT_TWINKLE` |*Not defined*|Enable twinkle animation mode. |
+!> `RGBLIGHT_ANIMATIONS` is being deprecated and animation modes should be explicitly defined.
+
### Effect and Animation Settings
The following options are used to tweak the various animations:
@@ -162,14 +165,12 @@ The following options are used to tweak the various animations:
|`RGBLIGHT_EFFECT_TWINKLE_PROBABILITY`|`1/127` |Adjusts how likely each LED is to twinkle (on each animation step) |
### Example Usage to Reduce Memory Footprint
- 1. Remove `RGBLIGHT_ANIMATIONS` from `config.h`.
- 1. Selectively add the animations you want to enable. The following would enable two animations and save about 4KiB:
+ 1. Selectively disable the animations you want to enable. The following would enable two animations and save about 4KiB:
```diff
#undef RGBLED_NUM
--#define RGBLIGHT_ANIMATIONS
-+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
-+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
++#undef RGBLIGHT_EFFECT_STATIC_GRADIENT
++#undef RGBLIGHT_EFFECT_RAINBOW_SWIRL
#define RGBLED_NUM 12
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
diff --git a/docs/feature_secure.md b/docs/feature_secure.md
new file mode 100644
index 0000000000..ee774b05a8
--- /dev/null
+++ b/docs/feature_secure.md
@@ -0,0 +1,54 @@
+# Secure
+
+The secure feature aims to prevent unwanted interaction without user intervention.
+
+?> Secure does **not** currently implement encryption/decryption/etc and should not be a replacement where a strong hardware/software based solution is required.
+
+### Unlock sequence
+
+To unlock, the user must perform a set of actions. This can optionally be configured to be multiple keys.
+
+* While unlocking all keyboard input is ignored
+* Incorrect attempts will revert back to the previously locked state
+
+### Automatic Locking
+
+Once unlocked, the keyboard will revert back to a locked state after the configured timeout.
+The timeout can be refreshed by using the `secure_activity_event` function, for example from one of the various [hooks](custom_quantum_functions.md).
+
+## Usage
+
+Add the following to your `rules.mk`:
+
+```make
+SECURE_ENABLE = yes
+```
+
+## Keycodes
+
+| Key | Description |
+|------------------|--------------------------------------------------------------------------------|
+| `SECURE_LOCK` | Revert back to a locked state |
+| `SECURE_UNLOCK` | Forces unlock without performing a unlock sequence |
+| `SECURE_TOGGLE` | Toggle directly between locked and unlock without performing a unlock sequence |
+| `SECURE_REQUEST` | Request that user perform the unlock sequence |
+
+## Configuration
+
+| Define | Default | Description |
+|-------------------------|----------------|---------------------------------------------------------------------------------|
+|`SECURE_UNLOCK_TIMEOUT` | `5000` | Timeout for the user to perform the configured unlock sequence - `0` to disable |
+|`SECURE_IDLE_TIMEOUT` | `60000` | Timeout while unlocked before returning to locked - `0` to disable |
+|`SECURE_UNLOCK_SEQUENCE` | `{ { 0, 0 } }` | Array of matrix locations describing a sequential sequence of keypresses |
+
+## Functions
+
+| Function | Description |
+|---------------------------|----------------------------------------------------------------------------|
+| `secure_is_locked()` | Check if the device is currently locked |
+| `secure_is_unlocking()` | Check if an unlock sequence is currently in progress |
+| `secure_is_unlocked()` | Check if the device is currently unlocked |
+| `secure_lock()` | Lock down the device |
+| `secure_unlock()` | Force unlock the device - bypasses user unlock sequence |
+| `secure_request_unlock()` | Begin listening for an unlock sequence |
+| `secure_activity_event()` | Flag that user activity has happened and the device should remain unlocked |
diff --git a/docs/feature_send_string.md b/docs/feature_send_string.md
new file mode 100644
index 0000000000..67df0224e9
--- /dev/null
+++ b/docs/feature_send_string.md
@@ -0,0 +1,224 @@
+# Send String
+
+The Send String API is part of QMK's macro system. It allows for sequences of keystrokes to be sent automatically.
+
+The full ASCII character set is supported, along with all of the keycodes in the Basic Keycode range (as these are the only ones that will actually be sent to the host).
+
+?> Unicode characters are **not** supported with this API -- see the [Unicode](feature_unicode.md) feature instead.
+
+## Usage
+
+Send String is enabled by default, so there is usually no need for any special setup. However, if it is disabled, add the following to your `rules.mk`:
+
+```make
+SEND_STRING_ENABLE = yes
+```
+
+## Basic Configuration
+
+Add the following to your `config.h`:
+
+|Define |Default |Description |
+|-----------------|----------------|------------------------------------------------------------------------------------------------------------|
+|`SENDSTRING_BELL`|*Not defined* |If the [Audio](feature_audio.md) feature is enabled, the `\a` character (ASCII `BEL`) will beep the speaker.|
+|`BELL_SOUND` |`TERMINAL_SOUND`|The song to play when the `\a` character is encountered. By default, this is an eighth note of C5. |
+
+## Keycodes
+
+The Send String functions accept C string literals, but specific keycodes can be injected with the below macros. All of the keycodes in the [Basic Keycode range](keycodes_basic.md) are supported (as these are the only ones that will actually be sent to the host), but with an `X_` prefix instead of `KC_`.
+
+|Macro |Description |
+|--------------|-------------------------------------------------------------------|
+|`SS_TAP(x)` |Send a keydown, then keyup, event for the given Send String keycode|
+|`SS_DOWN(x)` |Send a keydown event for the given Send String keycode |
+|`SS_UP(x)` |Send a keyup event for the given Send String keycode |
+|`SS_DELAY(ms)`|Wait for `ms` milliseconds |
+
+The following characters are also mapped to their respective keycodes for convenience:
+
+|Character|Hex |ASCII|Keycode |
+|---------|------|-----|--------------|
+|`\b` |`\x08`|`BS` |`KC_BACKSPACE`|
+|`\e` |`\x09`|`ESC`|`KC_ESCAPE` |
+|`\n` |`\x0A`|`LF` |`KC_ENTER` |
+|`\t` |`\x1B`|`TAB`|`KC_TAB` |
+| |`\x7F`|`DEL`|`KC_DELETE` |
+
+### Language Support
+
+By default, Send String assumes your OS keyboard layout is set to US ANSI. If you are using a different keyboard layout, you can [override the lookup tables used to convert ASCII characters to keystrokes](reference_keymap_extras.md#sendstring-support).
+
+## Examples
+
+### Hello World
+
+A simple custom keycode which types out "Hello, world!" and the Enter key when pressed.
+
+Add the following to your `keymap.c`:
+
+```c
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case SS_HELLO:
+ if (record->event.pressed) {
+ SEND_STRING("Hello, world!\n");
+ }
+ return false;
+ }
+
+ return true;
+}
+```
+
+### Keycode Injection
+
+This example types out opening and closing curly braces, then taps the left arrow key to move the cursor between the two.
+
+```c
+SEND_STRING("{}" SS_TAP(X_LEFT));
+```
+
+This example types Ctrl+A, then Ctrl+C, without releasing Ctrl.
+
+```c
+SEND_STRING(SS_LCTL("ac"));
+```
+
+## API
+
+### `void send_string(const char *string)`
+
+Type out a string of ASCII characters.
+
+This function simply calls `send_string_with_delay(string, 0)`.
+
+#### Arguments
+
+ - `const char *string`
+ The string to type out.
+
+---
+
+### `void send_string_with_delay(const char *string, uint8_t interval)`
+
+Type out a string of ASCII characters, with a delay between each character.
+
+#### Arguments
+
+ - `const char *string`
+ The string to type out.
+ - `uint8_t interval`
+ The amount of time, in milliseconds, to wait before typing the next character.
+
+---
+
+### `void send_string_P(const char *string)`
+
+Type out a PROGMEM string of ASCII characters.
+
+On ARM devices, this function is simply an alias for `send_string_with_delay(string, 0)`.
+
+#### Arguments
+
+ - `const char *string`
+ The string to type out.
+
+---
+
+### `void send_string_with_delay_P(const char *string, uint8_t interval)`
+
+Type out a PROGMEM string of ASCII characters, with a delay between each character.
+
+On ARM devices, this function is simply an alias for `send_string_with_delay(string, interval)`.
+
+#### Arguments
+
+ - `const char *string`
+ The string to type out.
+ - `uint8_t interval`
+ The amount of time, in milliseconds, to wait before typing the next character.
+
+---
+
+### `void send_char(char ascii_code)`
+
+Type out an ASCII character.
+
+#### Arguments
+
+ - `char ascii_code`
+ The character to type.
+
+---
+
+### `void send_dword(uint32_t number)`
+
+Type out an eight digit (unsigned 32-bit) hexadecimal value.
+
+The format is `[0-9a-f]{8}`, eg. `00000000` through `ffffffff`.
+
+#### Arguments
+
+ - `uint32_t number`
+ The value to type, from 0 to 4,294,967,295.
+
+---
+
+### `void send_word(uint16_t number)`
+
+Type out a four digit (unsigned 16-bit) hexadecimal value.
+
+The format is `[0-9a-f]{4}`, eg. `0000` through `ffff`.
+
+#### Arguments
+
+ - `uint16_t number`
+ The value to type, from 0 to 65,535.
+
+---
+
+### `void send_byte(uint8_t number)`
+
+Type out a two digit (8-bit) hexadecimal value.
+
+The format is `[0-9a-f]{2}`, eg. `00` through `ff`.
+
+#### Arguments
+
+ - `uint8_t number`
+ The value to type, from 0 to 255.
+
+---
+
+### `void send_nibble(uint8_t number)`
+
+Type out a single hexadecimal digit.
+
+The format is `[0-9a-f]{1}`, eg. `0` through `f`.
+
+#### Arguments
+
+ - `uint8_t number`
+ The value to type, from 0 to 15.
+
+---
+
+### `void tap_random_base64(void)`
+
+Type a pseudorandom character from the set `A-Z`, `a-z`, `0-9`, `+` and `/`.
+
+---
+
+### `SEND_STRING(string)`
+
+Shortcut macro for `send_string_with_delay_P(PSTR(string), 0)`.
+
+On ARM devices, this define evaluates to `send_string_with_delay(string, 0)`.
+
+---
+
+### `SEND_STRING_DELAY(string, interval)`
+
+Shortcut macro for `send_string_with_delay_P(PSTR(string), interval)`.
+
+On ARM devices, this define evaluates to `send_string_with_delay(string, interval)`.
diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md
index eefafdbf75..e53b3525cb 100644
--- a/docs/feature_split_keyboard.md
+++ b/docs/feature_split_keyboard.md
@@ -143,6 +143,9 @@ Next, you will have to flash the EEPROM files once for the correct hand to the c
* ARM controllers with a DFU compatible bootloader (e.g. Proton-C):
* `:dfu-util-split-left`
* `:dfu-util-split-right`
+* ARM controllers with a UF2 compatible bootloader:
+ * `:uf2-split-left`
+ * `:uf2-split-right`
Example:
@@ -367,7 +370,7 @@ There are some settings that you may need to configure, based on how the hardwar
#define MATRIX_COL_PINS_RIGHT { <col pins> }
```
-This allows you to specify a different set of pins for the matrix on the right side. This is useful if you have a board with differently-shaped halves that requires a different configuration (such as Keebio's Quefrency).
+This allows you to specify a different set of pins for the matrix on the right side. This is useful if you have a board with differently-shaped halves that requires a different configuration (such as Keebio's Quefrency). The number of pins in the right and left matrices must be the same, if you have a board with a different number of rows or columns on one side, pad out the extra spaces with `NO_PIN` and make sure you add the unused rows or columns to your matrix.
```c
#define DIRECT_PINS_RIGHT { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }
diff --git a/docs/feature_stenography.md b/docs/feature_stenography.md
index 2b52bb17a6..62d4dabf81 100644
--- a/docs/feature_stenography.md
+++ b/docs/feature_stenography.md
@@ -8,46 +8,107 @@ The [Open Steno Project](https://www.openstenoproject.org/) has built an open-so
Plover can work with any standard QWERTY keyboard, although it is more efficient if the keyboard supports NKRO (n-key rollover) to allow Plover to see all the pressed keys at once. An example keymap for Plover can be found in `planck/keymaps/default`. Switching to the `PLOVER` layer adjusts the position of the keyboard to support the number bar.
-To use Plover with QMK just enable NKRO and optionally adjust your layout if you have anything other than a standard layout. You may also want to purchase some steno-friendly keycaps to make it easier to hit multiple keys.
+To enable NKRO, add `NKRO_ENABLE = yes` in your `rules.mk` and make sure to press `NK_ON` to turn it on because `NKRO_ENABLE = yes` merely adds the possibility of switching to NKRO mode but it doesn't automatically switch to it. If you want to automatically switch, add `#define FORCE_NKRO` in your `config.h`.
+
+You may also need to adjust your layout, either in QMK or in Plover, if you have anything other than a standard layout. You may also want to purchase some steno-friendly keycaps to make it easier to hit multiple keys.
## Plover with Steno Protocol :id=plover-with-steno-protocol
-Plover also understands the language of several steno machines. QMK can speak a couple of these languages, TX Bolt and GeminiPR. An example layout can be found in `planck/keymaps/steno`.
+Plover also understands the language of several steno machines. QMK can speak a couple of these languages: TX Bolt and GeminiPR. An example layout can be found in `planck/keymaps/steno`.
+
+When QMK speaks to Plover over a steno protocol, Plover will not use the keyboard as input. This means that you can switch back and forth between a standard keyboard and your steno keyboard, or even switch layers from Plover to standard and back without needing to activate/deactivate Plover.
+
+In this mode, Plover expects to speak with a steno machine over a serial port so QMK will present itself to the operating system as a virtual serial port in addition to a keyboard.
-When QMK speaks to Plover over a steno protocol Plover will not use the keyboard as input. This means that you can switch back and forth between a standard keyboard and your steno keyboard, or even switch layers from Plover to standard and back without needing to activate/deactivate Plover.
+> Note: Due to hardware limitations, you might not be able to run both a virtual serial port and mouse emulation at the same time.
-In this mode Plover expects to speak with a steno machine over a serial port so QMK will present itself to the operating system as a virtual serial port in addition to a keyboard. By default QMK will speak the TX Bolt protocol but can be switched to GeminiPR; the last protocol used is stored in non-volatile memory so QMK will use the same protocol on restart.
+!> Serial stenography protocols are not supported on [V-USB keyboards](compatible_microcontrollers#atmel-avr).
-> Note: Due to hardware limitations you may not be able to run both a virtual serial port and mouse emulation at the same time.
+To enable stenography protocols, add the following lines to your `rules.mk`:
+```mk
+STENO_ENABLE = yes
+```
### TX Bolt :id=tx-bolt
-TX Bolt communicates the status of 24 keys over a very simple protocol in variable-sized (1-5 byte) packets.
+TX Bolt communicates the status of 24 keys over a simple protocol in variable-sized (1&ndash;4 bytes) packets.
-### GeminiPR :id=geminipr
+To select TX Bolt, add the following lines to your `rules.mk`:
+```mk
+STENO_ENABLE = yes
+STENO_PROTOCOL = txbolt
+```
-GeminiPR encodes 42 keys into a 6-byte packet. While TX Bolt contains everything that is necessary for standard stenography, GeminiPR opens up many more options, including supporting non-English theories.
+Each byte of the packet represents a different group of steno keys. Determining the group of a certain byte of the packet is done by checking the first two bits, the remaining bits are set if the corresponding steno key was pressed for the stroke. The last set of keys (as indicated by leading `11`) needs to keep track of less keys than there are bits so one of the bits is constantly 0.
-## Configuring QMK for Steno :id=configuring-qmk-for-steno
+The start of a new packet can be detected by comparing the group “ID†(the two MSBs) of the current byte to that of the previously received byte. If the group “ID†of the current byte is smaller or equal to that of the previous byte, it means that the current byte is the beginning of a new packet.
-Firstly, enable steno in your keymap's Makefile. You may also need disable mousekeys, extra keys, or another USB endpoint to prevent conflicts. The builtin USB stack for some processors only supports a certain number of USB endpoints and the virtual serial port needed for steno fills 3 of them.
+The format of TX Bolt packets is shown below.
+```
+00HWPKTS 01UE*OAR 10GLBPRF 110#ZDST
+```
+
+Examples of steno strokes and the associated packet:
+- `EUBG` = `01110000 10101000`
+- `WAZ` = `00010000 01000010 11001000`
+- `PHAPBGS` = `00101000 01000010 10101100 11000010`
+
+### GeminiPR :id=geminipr
+
+GeminiPR encodes 42 keys into a 6-byte packet. While TX Bolt contains everything that is necessary for standard stenography, GeminiPR opens up many more options, including differentiating between top and bottom `S-`, and supporting non-English theories.
-```make
+To select GeminiPR, add the following lines to your `rules.mk`:
+```mk
STENO_ENABLE = yes
-MOUSEKEY_ENABLE = no
+STENO_PROTOCOL = geminipr
```
-In your keymap create a new layer for Plover. You will need to include `keymap_steno.h`. See `planck/keymaps/steno/keymap.c` for an example. Remember to create a key to switch to the layer as well as a key for exiting the layer. If you would like to switch modes on the fly you can use the keycodes `QK_STENO_BOLT` and `QK_STENO_GEMINI`. If you only want to use one of the protocols you may set it up in your initialization function:
+All packets in the GeminiPR protocol consist of exactly six bytes, used as bit-arrays for different groups of keys. The beginning of a packet is indicated by setting the most significant bit (MSB) to 1 while setting the MSB of the remaining five bytes to 0.
-```c
-void eeconfig_init_user() {
- steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT
-}
+The format of GeminiPR packets is shown below.
+```
+1 Fn #1 #2 #3 #4 #5 #6
+0 S1- S2- T- K- P- W- H-
+0 R- A- O- *1 *2 res1 res2
+0 pwr *3 *4 -E -U -F -R
+0 -P -B -L -G -T -S -D
+0 #7 #8 #9 #A #B #C -Z
```
-Once you have your keyboard flashed launch Plover. Click the 'Configure...' button. In the 'Machine' tab select the Stenotype Machine that corresponds to your desired protocol. Click the 'Configure...' button on this tab and enter the serial port or click 'Scan'. Baud rate is fine at 9600 (although you should be able to set as high as 115200 with no issues). Use the default settings for everything else (Data Bits: 8, Stop Bits: 1, Parity: N, no flow control).
+Examples of steno strokes and the associated packet:
+- `EUBG` = `10000000 00000000 00000000 00001100 00101000 00000000`
+- `WAZ` = `10000000 00000010 00100000 00000000 00000000 00000001`
+- `PHAPBGS` = `10000000 00000101 00100000 00000000 01101010 00000000`
-On the display tab click 'Open stroke display'. With Plover disabled you should be able to hit keys on your keyboard and see them show up in the stroke display window. Use this to make sure you have set up your keymap correctly. You are now ready to steno!
+### Switching protocols on the fly :id=switching-protocols-on-the-fly
+
+If you wish to switch the serial protocol used to transfer the steno chords without having to recompile your keyboard firmware every time, you can press the `QK_STENO_BOLT` and `QK_STENO_GEMINI` keycodes in order to switch protocols on the fly.
+
+To enable these special keycodes, add the following lines to your `rules.mk`:
+```mk
+STENO_ENABLE = yes
+STENO_PROTOCOL = all
+```
+
+If you want to switch protocols programatically, as part of a custom macro for example, don't use `tap_code(QK_STENO_*)`, as `tap_code` only supports [basic keycodes](keycodes_basic). Instead, you should use `steno_set_mode(STENO_MODE_*)`, whose valid arguments are `STENO_MODE_BOLT` and `STENO_MODE_GEMINI`.
+
+The default protocol is Gemini PR but the last protocol used is stored in non-volatile memory so QMK will remember your choice between reboots of your keyboard &mdash; assuming that your keyboard features (emulated) EEPROM.
+
+Naturally, this option takes the most amount of firmware space as it needs to compile the code for all the available stenography protocols. In most cases, compiling a single stenography protocol is sufficient.
+
+The default value for `STENO_PROTOCOL` is `all`.
+
+## Configuring QMK for Steno :id=configuring-qmk-for-steno
+
+After enabling stenography and optionally selecting a protocol, you may also need disable mouse keys, extra keys, or another USB endpoint to prevent conflicts. The builtin USB stack for some processors only supports a certain number of USB endpoints and the virtual serial port needed for steno fills 3 of them.
+
+!> If you had *explicitly* set `VIRSTER_ENABLE = no`, none of the serial stenography protocols (GeminiPR, TX Bolt) will work properly. You are expected to either set it to `yes`, remove the line from your `rules.mk` or send the steno chords yourself in an alternative way using the [provided interceptable hooks](#interfacing-with-the-code).
+
+In your keymap, create a new layer for Plover, that you can fill in with the [steno keycodes](#keycode-reference) (you will need to include `keymap_steno.h`, see `planck/keymaps/steno/keymap.c` for an example). Remember to create a key to switch to the layer as well as a key for exiting the layer.
+
+Once you have your keyboard flashed, launch Plover. Click the 'Configure...' button. In the 'Machine' tab, select the Stenotype Machine that corresponds to your desired protocol. Click the 'Configure...' button on this tab and enter the serial port or click 'Scan'. Baud rate is fine at 9600 (although you should be able to set as high as 115200 with no issues). Use the default settings for everything else (Data Bits: 8, Stop Bits: 1, Parity: N, no flow control).
+
+To test your keymap, you can chord keys on your keyboard and either look at the output of the 'paper tape' (Tools > Paper Tape) or that of the 'layout display' (Tools > Layout Display). If your strokes correctly show up, you are now ready to steno!
## Learning Stenography :id=learning-stenography
@@ -60,7 +121,7 @@ On the display tab click 'Open stroke display'. With Plover disabled you should
The steno code has three interceptable hooks. If you define these functions, they will be called at certain points in processing; if they return true, processing continues, otherwise it's assumed you handled things.
```c
-bool send_steno_chord_user(steno_mode_t mode, uint8_t chord[6]);
+bool send_steno_chord_user(steno_mode_t mode, uint8_t chord[MAX_STROKE_SIZE]);
```
This function is called when a chord is about to be sent. Mode will be one of `STENO_MODE_BOLT` or `STENO_MODE_GEMINI`. This represents the actual chord that would be sent via whichever protocol. You can modify the chord provided to alter what gets sent. Remember to return true if you want the regular sending process to happen.
@@ -72,15 +133,23 @@ bool process_steno_user(uint16_t keycode, keyrecord_t *record) { return true; }
This function is called when a keypress has come in, before it is processed. The keycode should be one of `QK_STENO_BOLT`, `QK_STENO_GEMINI`, or one of the `STN_*` key values.
```c
-bool postprocess_steno_user(uint16_t keycode, keyrecord_t *record, steno_mode_t mode, uint8_t chord[6], int8_t pressed);
+bool post_process_steno_user(uint16_t keycode, keyrecord_t *record, steno_mode_t mode, uint8_t chord[MAX_STROKE_SIZE], int8_t n_pressed_keys);
```
-This function is called after a key has been processed, but before any decision about whether or not to send a chord. If `IS_PRESSED(record->event)` is false, and `pressed` is 0 or 1, the chord will be sent shortly, but has not yet been sent. This is where to put hooks for things like, say, live displays of steno chords or keys.
+This function is called after a key has been processed, but before any decision about whether or not to send a chord. This is where to put hooks for things like, say, live displays of steno chords or keys.
+
+If `IS_PRESSED(record->event)` is false, and `n_pressed_keys` is 0 or 1, the chord will be sent shortly, but has not yet been sent. This relieves you of the need of keeping track of where a packet ends and another begins.
+
+The `chord` argument contains the packet of the current chord as specified by the protocol in use. This is *NOT* simply a list of chorded steno keys of the form `[STN_E, STN_U, STN_BR, STN_GR]`. Refer to the appropriate protocol section of this document to learn more about the format of the packets in your steno protocol/mode of choice.
+The `n_pressed_keys` argument is the number of physical keys actually being held down.
+This is not always equal to the number of bits set to 1 (aka the [Hamming weight](https://en.wikipedia.org/wiki/Hamming_weight)) in `chord` because it is possible to simultaneously press down four keys, then release three of those four keys and then press yet another key while the fourth finger is still holding down its key.
+At the end of this scenario given as an example, `chord` would have five bits set to 1 but
+`n_pressed_keys` would be set to 2 because there are only two keys currently being pressed down.
## Keycode Reference :id=keycode-reference
-As defined in `keymap_steno.h`.
+You must include `keymap_steno.h` to your `keymap.c` with `#include "keymap_steno.h"` before you can use these keycodes
> Note: TX Bolt does not support the full set of keys. The TX Bolt implementation in QMK will map the GeminiPR keys to the nearest TX Bolt key so that one key map will work for both.
@@ -124,10 +193,10 @@ As defined in `keymap_steno.h`.
|`STN_SR`|`STN_SR`| `-S`|
|`STN_DR`|`STN_DR`| `-D`|
|`STN_ZR`|`STN_ZR`| `-Z`|
-|`STN_FN`|| (GeminiPR only)|
-|`STN_RES1`||(GeminiPR only)|
-|`STN_RES2`||(GeminiPR only)|
-|`STN_PWR`||(GeminiPR only)|
+|`STN_FN`|| (Function)|
+|`STN_RES1`||(Reset 1)|
+|`STN_RES2`||(Reset 2)|
+|`STN_PWR`||(Power)|
If you do not want to hit two keys with one finger combined keycodes can be used. These are also defined in `keymap_steno.h`, and causes both keys to be reported as pressed or released. To use these keycodes define `STENO_COMBINEDMAP` in your `config.h` file.
diff --git a/docs/feature_tap_dance.md b/docs/feature_tap_dance.md
index c055a9989a..f3c203232b 100644
--- a/docs/feature_tap_dance.md
+++ b/docs/feature_tap_dance.md
@@ -14,55 +14,48 @@ Optionally, you might want to set a custom `TAPPING_TERM` time by adding somethi
```c
#define TAPPING_TERM 175
+#define TAPPING_TERM_PER_KEY
```
-The `TAPPING_TERM` time is the maximum time allowed between taps of your Tap Dance key, and is measured in milliseconds. For example, if you used the above `#define` statement and set up a Tap Dance key that sends `Space` on single-tap and `Enter` on double-tap, then this key will send `ENT` only if you tap this key twice in less than 175ms. If you tap the key, wait more than 175ms, and tap the key again you'll end up sending `SPC SPC` instead.
+The `TAPPING_TERM` time is the maximum time allowed between taps of your Tap Dance key, and is measured in milliseconds. For example, if you used the above `#define` statement and set up a Tap Dance key that sends `Space` on single-tap and `Enter` on double-tap, then this key will send `ENT` only if you tap this key twice in less than 175ms. If you tap the key, wait more than 175ms, and tap the key again you'll end up sending `SPC SPC` instead. The `TAPPING_TERM_PER_KEY` definition is only needed if you control the tapping term through a [custom `get_tapping_term` function](tap_hold.md#tapping_term), which may be needed because `TAPPING_TERM` affects not just tap-dance keys.
-Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro, that takes a number which will later be used as an index into the `tap_dance_actions` array.
+Next, you will want to define some tap-dance keys, which is easiest to do with the `TD()` macro. That macro takes a number which will later be used as an index into the `tap_dance_actions` array and turns it into a tap-dance keycode.
After this, you'll want to use the `tap_dance_actions` array to specify what actions shall be taken when a tap-dance key is in action. Currently, there are five possible options:
* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: Sends the `kc1` keycode when tapped once, `kc2` otherwise. When the key is held, the appropriate keycode is registered: `kc1` when pressed and held, `kc2` when tapped once, then pressed and held.
* `ACTION_TAP_DANCE_LAYER_MOVE(kc, layer)`: Sends the `kc` keycode when tapped once, or moves to `layer`. (this functions like the `TO` layer keycode).
- * This is the same as `ACTION_TAP_DANCE_DUAL_ROLE`, but renamed to something that is clearer about its functionality. Both names will work.
* `ACTION_TAP_DANCE_LAYER_TOGGLE(kc, layer)`: Sends the `kc` keycode when tapped once, or toggles the state of `layer`. (this functions like the `TG` layer keycode).
* `ACTION_TAP_DANCE_FN(fn)`: Calls the specified function - defined in the user keymap - with the final tap count of the tap dance action.
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: Calls the first specified function - defined in the user keymap - on every tap, the second function when the dance action finishes (like the previous option), and the last function when the tap dance action resets.
-* ~~`ACTION_TAP_DANCE_FN_ADVANCED_TIME(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn, tap_specific_tapping_term)`~~: This functions identically to the `ACTION_TAP_DANCE_FN_ADVANCED` function, but uses a custom tapping term for it, instead of the predefined `TAPPING_TERM`.
- * This is deprecated in favor of the Per Key Tapping Term functionality, as outlined [here](tap_hold.md#tapping-term). You'd want to check for the specific `TD()` macro that you want to use (such as `TD(TD_ESC_CAPS)`) instead of using this specific Tap Dance function.
The first option is enough for a lot of cases, that just want dual roles. For example, `ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT)` will result in `Space` being sent on single-tap, `Enter` otherwise.
!> Keep in mind that only [basic keycodes](keycodes_basic.md) are supported here. Custom keycodes are not supported.
-Similar to the first option, the second option is good for simple layer-switching cases.
+Similar to the first option, the second and third option are good for simple layer-switching cases.
-For more complicated cases, use the third or fourth options (examples of each are listed below).
-
-Finally, the fifth option is particularly useful if your non-Tap-Dance keys start behaving weirdly after adding the code for your Tap Dance keys. The likely problem is that you changed the `TAPPING_TERM` time to make your Tap Dance keys easier for you to use, and that this has changed the way your other keys handle interrupts.
+For more complicated cases, like blink the LEDs, fiddle with the backlighting, and so on, use the fourth or fifth option. Examples of each are listed below.
## Implementation Details :id=implementation
Well, that's the bulk of it! You should now be able to work through the examples below, and to develop your own Tap Dance functionality. But if you want a deeper understanding of what's going on behind the scenes, then read on for the explanation of how it all works!
-The main entry point is `process_tap_dance()`, called from `process_record_quantum()`, which is run for every keypress, and our handler gets to run early. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. If it was the same, we increment the counter and reset the timer.
-
-This means that you have `TAPPING_TERM` time to tap the key again; you do not have to input all the taps within a single `TAPPING_TERM` timeframe. This allows for longer tap counts, with minimal impact on responsiveness.
+Let's go over the three functions mentioned in `ACTION_TAP_DANCE_FN_ADVANCED` in a little more detail. They all receive the same too arguments: a pointer to a structure that holds all dance related state information, and a pointer to a use case specific state variable. The three functions differ in when they are called. The first, `on_each_tap_fn()`, is called every time the tap dance key is *pressed*. Before it is called, the counter is incremented and the timer is reset. The second function, `on_dance_finished_fn()`, is called when the tap dance is interrupted or ends because `TAPPING_TERM` milliseconds have passed since the last tap. When the `finished` field of the dance state structure is set to `true`, the `on_dance_finished_fn()` is skipped. After `on_dance_finished_fn()` was called or would have been called, but no sooner than when the tap dance key is *released*, `on_dance_reset_fn()` is called. It is possible to end a tap dance immediately, skipping `on_dance_finished_fn()`, but not `on_dance_reset_fn`, by calling `reset_tap_dance(state)`.
-Our next stop is `tap_dance_task()`. This handles the timeout of tap-dance keys.
+To accomplish this logic, the tap dance mechanics use three entry points. The main entry point is `process_tap_dance()`, called from `process_record_quantum()` *after* `process_record_kb()` and `process_record_user()`. This function is responsible for calling `on_each_tap_fn()` and `on_dance_reset_fn()`. In order to handle interruptions of a tap dance, another entry point, `preprocess_tap_dance()` is run right at the beginning of `process_record_quantum()`. This function checks whether the key pressed is a tap-dance key. If it is not, and a tap-dance was in action, we handle that first, and enqueue the newly pressed key. If it is a tap-dance key, then we check if it is the same as the already active one (if there's one active, that is). If it is not, we fire off the old one first, then register the new one. Finally, `tap_dance_task()` periodically checks whether `TAPPING_TERM` has passed since the last key press and finishes a tap dance if that is the case.
-For the sake of flexibility, tap-dance actions can be either a pair of keycodes, or a user function. The latter allows one to handle higher tap counts, or do extra things, like blink the LEDs, fiddle with the backlighting, and so on. This is accomplished by using an union, and some clever macros.
+This means that you have `TAPPING_TERM` time to tap the key again; you do not have to input all the taps within a single `TAPPING_TERM` timeframe. This allows for longer tap counts, with minimal impact on responsiveness.
## Examples :id=examples
-### Simple Example :id=simple-example
+### Simple Example: Send `ESC` on Single Tap, `CAPS_LOCK` on Double Tap :id=simple-example
Here's a simple example for a single definition:
1. In your `rules.mk`, add `TAP_DANCE_ENABLE = yes`
-2. In your `config.h` (which you can copy from `qmk_firmware/keyboards/planck/config.h` to your keymap directory), add `#define TAPPING_TERM 200`
-3. In your `keymap.c` file, define the variables and definitions, then add to your keymap:
+2. In your `keymap.c` file, define the variables and definitions, then add to your keymap:
```c
// Tap Dance declarations
@@ -92,40 +85,15 @@ All the enums used in the examples are declared like this:
```c
// Enums defined for all examples:
enum {
- CT_SE,
- CT_CLN,
+ TD_ESC_CAPS,
CT_EGG,
CT_FLSH,
- X_TAP_DANCE
-};
-```
-
-#### Example 1: Send `:` on Single Tap, `;` on Double Tap :id=example-1
-
-```c
-void dance_cln_finished(qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- register_code16(KC_COLN);
- } else {
- register_code(KC_SCLN);
- }
-}
-
-void dance_cln_reset(qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 1) {
- unregister_code16(KC_COLN);
- } else {
- unregister_code(KC_SCLN);
- }
-}
-
-// All tap dance functions would go here. Only showing this one.
-qk_tap_dance_action_t tap_dance_actions[] = {
- [CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, dance_cln_reset),
+ CT_CLN,
+ X_CTL,
};
```
-#### Example 2: Send "Safety Dance!" After 100 Taps :id=example-2
+#### Example 1: Send "Safety Dance!" After 100 Taps :id=example-1
```c
void dance_egg(qk_tap_dance_state_t *state, void *user_data) {
@@ -140,7 +108,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
};
```
-#### Example 3: Turn LED Lights On Then Off, One at a Time :id=example-3
+#### Example 2: Turn LED Lights On Then Off, One at a Time :id=example-2
```c
// On each tap, light up one LED, from right to left
@@ -181,15 +149,74 @@ void dance_flsh_reset(qk_tap_dance_state_t *state, void *user_data) {
ergodox_right_led_3_off();
}
-// All tap dances now put together. Example 3 is "CT_FLASH"
+// All tap dances now put together. Example 2 is "CT_FLSH"
qk_tap_dance_action_t tap_dance_actions[] = {
- [CT_SE] = ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT),
- [CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, dance_cln_reset),
+ [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
[CT_EGG] = ACTION_TAP_DANCE_FN(dance_egg),
[CT_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED(dance_flsh_each, dance_flsh_finished, dance_flsh_reset)
};
```
+#### Example 3: Send `:` on Tap, `;` on Hold :id=example-3
+
+With a little effort, powerful tap-hold configurations can be implemented as tap dances. To emit taps as early as possible, we need to act on releases of the tap dance key. There is no callback for this in the tap dance framework, so we use `process_record_user()`.
+
+```c
+typedef struct {
+ uint16_t tap;
+ uint16_t hold;
+ uint16_t held;
+} tap_dance_tap_hold_t;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ qk_tap_dance_action_t *action;
+
+ switch (keycode) {
+ case TD(CT_CLN): // list all tap dance keycodes with tap-hold configurations
+ action = &tap_dance_actions[TD_INDEX(keycode)];
+ if (!record->event.pressed && action->state.count && !action->state.finished) {
+ tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
+ tap_code16(tap_hold->tap);
+ }
+ }
+ return true;
+}
+
+void tap_dance_tap_hold_finished(qk_tap_dance_state_t *state, void *user_data) {
+ tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data;
+
+ if (state->pressed) {
+ if (state->count == 1
+#ifndef PERMISSIVE_HOLD
+ && !state->interrupted
+#endif
+ ) {
+ register_code16(tap_hold->hold);
+ tap_hold->held = tap_hold->hold;
+ } else {
+ register_code16(tap_hold->tap);
+ tap_hold->held = tap_hold->tap;
+ }
+ }
+}
+
+void tap_dance_tap_hold_reset(qk_tap_dance_state_t *state, void *user_data) {
+ tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data;
+
+ if (tap_hold->held) {
+ unregister_code16(tap_hold->held);
+ tap_hold->held = 0;
+ }
+}
+
+#define ACTION_TAP_DANCE_TAP_HOLD(tap, hold) \
+ { .fn = {NULL, tap_dance_tap_hold_finished, tap_dance_tap_hold_reset}, .user_data = (void *)&((tap_dance_tap_hold_t){tap, hold, 0}), }
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [CT_CLN] = ACTION_TAP_DANCE_TAP_HOLD(KC_COLN, KC_SCLN),
+};
+```
+
#### Example 4: 'Quad Function Tap-Dance' :id=example-4
By [DanielGGordon](https://github.com/danielggordon)
@@ -305,7 +332,8 @@ void x_finished(qk_tap_dance_state_t *state, void *user_data) {
// 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.
- case TD_DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X);
+ case TD_DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X); break;
+ default: break;
}
}
@@ -314,8 +342,9 @@ void x_reset(qk_tap_dance_state_t *state, void *user_data) {
case TD_SINGLE_TAP: unregister_code(KC_X); break;
case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break;
case TD_DOUBLE_TAP: unregister_code(KC_ESC); break;
- case TD_DOUBLE_HOLD: unregister_code(KC_LALT);
- case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_X);
+ case TD_DOUBLE_HOLD: unregister_code(KC_LALT); break;
+ case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_X); break;
+ default: break;
}
xtap_state.state = TD_NONE;
}
@@ -329,7 +358,7 @@ And then simply use `TD(X_CTL)` anywhere in your keymap.
If you want to implement this in your userspace, then you may want to check out how [DanielGGordon](https://github.com/qmk/qmk_firmware/tree/master/users/gordon) has implemented this in their userspace.
-> In this configuration "hold" takes place **after** tap dance timeout (see `ACTION_TAP_DANCE_FN_ADVANCED_TIME`). To achieve instant hold, remove `state->interrupted` checks in conditions. As a result you may use comfortable longer tapping periods to have more time for taps and not to wait too long for holds (try starting with doubled `TAPPING_TERM`).
+> In this configuration "hold" takes place **after** tap dance timeout. To achieve instant hold, remove `state->interrupted` checks in conditions. As a result you may use comfortable longer tapping periods to have more time for taps and not to wait too long for holds (try starting with doubled `TAPPING_TERM`).
#### Example 5: Using tap dance for advanced mod-tap and layer-tap keys :id=example-5
@@ -511,8 +540,18 @@ void ql_reset(qk_tap_dance_state_t *state, void *user_data) {
// Associate our tap dance key with its functionality
qk_tap_dance_action_t tap_dance_actions[] = {
- [QUOT_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ql_finished, ql_reset, 275)
+ [QUOT_LAYR] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ql_finished, ql_reset)
};
+
+// Set a long-ish tapping term for tap-dance keys
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QK_TAP_DANCE ... QK_TAP_DANCE_MAX:
+ return 275;
+ default:
+ return TAPPING_TERM;
+ }
+}
```
The above code is similar to that used in previous examples. The one point to note is that we need to be able to check which layers are active at any time so we can toggle them if needed. To do this we use the `layer_state_is(layer)` function which returns `true` if the given `layer` is active.
@@ -521,6 +560,6 @@ The use of `cur_dance()` and `ql_tap_state` mirrors the above examples.
The `case: TD_SINGLE_TAP` in `ql_finished` is similar to the above examples. The `TD_SINGLE_HOLD` case works in conjunction with `ql_reset()` to switch to `_MY_LAYER` while the tap dance key is held, and to switch away from `_MY_LAYER` when the key is released. This mirrors the use of `MO(_MY_LAYER)`. The `TD_DOUBLE_TAP` case works by checking whether `_MY_LAYER` is the active layer, and toggling it on or off accordingly. This mirrors the use of `TG(_MY_LAYER)`.
-`tap_dance_actions[]` works similar to the above examples. Note that I used `ACTION_TAP_DANCE_FN_ADVANCED_TIME()` instead of `ACTION_TAP_DANCE_FN_ADVANCED()`. This is because I like my `TAPPING_TERM` to be short (\~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here.
+`tap_dance_actions[]` works similar to the above examples. Note that, additionally, I set a longer tapping term for the tap dance keys. This is because I like my `TAPPING_TERM` to be short (\~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here. In order for the per-key tapping terms to take effect, `TAPPING_TERM_PER_KEY` must be defined in your `config.h`.
Finally, to get this tap dance key working, be sure to include `TD(QUOT_LAYR)` in your `keymaps[]`.
diff --git a/docs/feature_terminal.md b/docs/feature_terminal.md
deleted file mode 100644
index f850622165..0000000000
--- a/docs/feature_terminal.md
+++ /dev/null
@@ -1,107 +0,0 @@
-# Terminal
-
-> This feature is currently *huge*, and should probably only be put on boards with a lot of memory, or for fun.
-
-The terminal feature is a command-line-like interface designed to communicate through a text editor with keystrokes. It's beneficial to turn off auto-indent features in your editor.
-
-To enable, stick this in your `rules.mk` or `Makefile`:
-
- TERMINAL_ENABLE = yes
-
-And use the `TERM_ON` and `TERM_OFF` keycodes to turn it on or off.
-
-When enabled, a `> ` prompt will appear, where you'll be able to type, backspace (a bell will ding if you reach the beginning and audio is enabled), and hit enter to send the command. Arrow keys are currently disabled so it doesn't get confused. Moving your cursor around with the mouse is discouraged.
-
-`#define TERMINAL_HELP` enables some other output helpers that aren't really needed with this page.
-
-Pressing "up" and "down" will allow you to cycle through the past 5 commands entered.
-
-## Future Ideas
-
-* Keyboard/user-extensible commands
-* Smaller footprint
-* Arrow key support
-* Command history - Done
-* SD card support
-* LCD support for buffer display
-* Keycode -> name string LUT
-* Layer status
-* *Analog/digital port read/write*
-* RGB mode stuff
-* Macro definitions
-* EEPROM read/write
-* Audio control
-
-## Current Commands
-
-### `about`
-
-Prints out the current version of QMK with a build date:
-
-```
-> about
-QMK Firmware
- v0.5.115-7-g80ed73-dirty
- Built: 2017-08-29-20:24:44
-```
-
-
-### `print-buffer`
-
-Outputs the last 5 commands entered
-
-```
-> print-buffer
-0. print-buffer
-1. help
-2. about
-3. keymap 0
-4. help
-5. flush-buffer
-```
-
-### `flush-buffer`
-
-Clears command buffer
-```
-> flush-buffer
-Buffer cleared!
-```
-
-
-### `help`
-
-
-Prints out the available commands:
-
-```
-> help
-commands available:
- about help keycode keymap exit print-buffer flush-buffer
-```
-
-### `keycode <layer> <row> <col>`
-
-Prints out the keycode value of a certain layer, row, and column:
-
-```
-> keycode 0 1 0
-0x29 (41)
-```
-
-### `keymap <layer>`
-
-Prints out the entire keymap for a certain layer
-
-```
-> keymap 0
-0x002b, 0x0014, 0x001a, 0x0008, 0x0015, 0x0017, 0x001c, 0x0018, 0x000c, 0x0012, 0x0013, 0x002a,
-0x0029, 0x0004, 0x0016, 0x0007, 0x0009, 0x000a, 0x000b, 0x000d, 0x000e, 0x000f, 0x0033, 0x0034,
-0x00e1, 0x001d, 0x001b, 0x0006, 0x0019, 0x0005, 0x0011, 0x0010, 0x0036, 0x0037, 0x0038, 0x0028,
-0x5cd6, 0x00e0, 0x00e2, 0x00e3, 0x5cd4, 0x002c, 0x002c, 0x5cd5, 0x0050, 0x0051, 0x0052, 0x004f,
->
-```
-
-### `exit`
-
-Exits the terminal - same as `TERM_OFF`.
diff --git a/docs/feature_unicode.md b/docs/feature_unicode.md
index bced419a03..2389cb735c 100644
--- a/docs/feature_unicode.md
+++ b/docs/feature_unicode.md
@@ -127,7 +127,7 @@ The following input modes are available:
By default, this mode uses Ctrl+Shift+U (`LCTL(LSFT(KC_U))`) to start Unicode input, but this can be changed by defining [`UNICODE_KEY_LNX`](#input-key-configuration) with a different keycode. This might be required for IBus versions ≥1.5.15, where Ctrl+Shift+U behavior is consolidated into Ctrl+Shift+E.
Users who wish support in non-GTK apps without IBus may need to resort to a more indirect method, such as creating a custom keyboard layout ([more on this method](#custom-linux-layout)).
-
+
* **`UC_WIN`**: _(not recommended)_ Windows built-in hex numpad Unicode input. Supports code points up to `0xFFFF`.
To enable, create a registry key under `HKEY_CURRENT_USER\Control Panel\Input Method` of type `REG_SZ` called `EnableHexNumpad` and set its value to `1`. This can be done from the Command Prompt by running `reg add "HKCU\Control Panel\Input Method" -v EnableHexNumpad -t REG_SZ -d 1` with administrator privileges. Reboot afterwards.
@@ -172,6 +172,7 @@ You can switch the input mode at any time by using the following keycodes. Addin
|`UNICODE_MODE_WIN` |`UC_M_WI`|`UC_WIN` |Switch to Windows input |
|`UNICODE_MODE_BSD` |`UC_M_BS`|`UC_BSD` |Switch to BSD input _(not implemented)_ |
|`UNICODE_MODE_WINC` |`UC_M_WC`|`UC_WINC` |Switch to Windows input using WinCompose |
+|`UNICODE_MODE_EMACS` |`UC_M_EM`|`UC_EMACS` |Switch to emacs (`C-x-8 RET`) |
You can also switch the input mode by calling `set_unicode_input_mode(x)` in your code, where _x_ is one of the above input mode constants (e.g. `UC_LNX`).
diff --git a/docs/flashing.md b/docs/flashing.md
index 271e15b13c..b3f055f6cb 100644
--- a/docs/flashing.md
+++ b/docs/flashing.md
@@ -34,7 +34,7 @@ Compatible flashers:
Flashing sequence:
1. Enter the bootloader using any of the following methods:
- * Press the `RESET` keycode
+ * Press the `QK_BOOT` keycode
* Press the `RESET` button on the PCB if available
* Short RST to GND quickly
2. Wait for the OS to detect the device
@@ -87,7 +87,7 @@ Compatible flashers:
Flashing sequence:
1. Enter the bootloader using any of the following methods (you only have 7 seconds to flash once it enters; some variants may require you to reset twice within 750 milliseconds):
- * Press the `RESET` keycode
+ * Press the `QK_BOOT` keycode
* Press the `RESET` button on the PCB if available
* Short RST to GND quickly
2. Wait for the OS to detect the device
@@ -123,7 +123,7 @@ Compatible flashers:
Flashing sequence:
1. Enter the bootloader using any of the following methods (you only have 7 seconds to flash once it enters):
- * Press the `RESET` keycode
+ * Press the `QK_BOOT` keycode
* Press the `RESET` button on the Teensy or PCB if available
* short RST to GND quickly
2. Wait for the OS to detect the device
@@ -153,7 +153,7 @@ Compatible flashers:
Flashing sequence:
1. Enter the bootloader using any of the following methods:
- * Press the `RESET` keycode
+ * Press the `QK_BOOT` keycode
* Keep the `BOOT` button held while quickly tapping the `RESET` button on the PCB
2. Wait for the OS to detect the device
3. Flash a .hex file
@@ -182,7 +182,7 @@ Compatible flashers:
Flashing sequence:
1. Enter the bootloader using any of the following methods:
- * Tap the `RESET` keycode
+ * Tap the `QK_BOOT` keycode
* Hold the salt key while plugging the keyboard in - for PS2AVRGB boards, this is usually the key connected to MCU pins A0 and B0, otherwise it will be documented in your keyboard's readme
2. Wait for the OS to detect the device
3. Flash a .hex file
@@ -223,7 +223,7 @@ Compatible flashers:
Flashing sequence:
1. Enter the bootloader using any of the following methods:
- * Press the `RESET` keycode
+ * Press the `QK_BOOT` keycode
* Press the `RESET` button on the PCB if available
* short RST to GND quickly
2. Wait for the OS to detect the device
@@ -256,7 +256,7 @@ Compatible flashers:
Flashing sequence:
1. Enter the bootloader using any of the following methods:
- * Tap the `RESET` keycode (may not work on STM32F042 devices)
+ * Tap the `QK_BOOT` keycode (may not work on STM32F042 devices)
* If a reset circuit is present, tap the `RESET` button on the PCB; some boards may also have a toggle switch that must be flipped
* Otherwise, you need to bridge `BOOT0` to VCC (via `BOOT0` button or jumper), short `RESET` to GND (via `RESET` button or jumper), and then let go of the `BOOT0` bridge
2. Wait for the OS to detect the device
@@ -292,7 +292,7 @@ Compatible flashers:
Flashing sequence:
1. Enter the bootloader using any of the following methods:
- * Tap the `RESET` keycode
+ * Tap the `QK_BOOT` keycode
* If a reset circuit is present, tap the `RESET` button on the PCB
* Otherwise, you need to bridge `BOOT0` to VCC (via `BOOT0` button or jumper), short `RESET` to GND (via `RESET` button or jumper), and then let go of the `BOOT0` bridge
2. Wait for the OS to detect the device
@@ -316,7 +316,7 @@ Compatible flashers:
Flashing sequence:
1. Enter the bootloader using any of the following methods:
- * Tap the `RESET` keycode
+ * Tap the `QK_BOOT` keycode
* Press the `RESET` button on the PCB
2. Wait for the OS to detect the device
3. Flash a .bin file
@@ -342,7 +342,7 @@ Compatible flashers:
Flashing sequence:
1. Enter the bootloader using any of the following methods:
- * Tap the `RESET` keycode
+ * Tap the `QK_BOOT` keycode
* Double-tap the `nRST` button on the PCB.
2. Wait for the OS to detect the device
3. Copy the .uf2 file to the new USB disk
@@ -353,8 +353,51 @@ or
CLI Flashing sequence:
1. Enter the bootloader using any of the following methods:
- * Tap the `RESET` keycode
+ * Tap the `QK_BOOT` keycode
* Double-tap the `nRST` button on the PCB.
2. Wait for the OS to detect the device
3. Flash via QMK CLI eg. `qmk flash --keyboard handwired/onekey/blackpill_f411_tinyuf2 --keymap default`
4. Wait for the keyboard to become available
+
+### `make` Targets
+
+* `:uf2-split-left` and `:uf2-split-right`: Flashes the firmware but also sets the handedness setting in EEPROM by generating a side specific firmware.
+
+## Raspberry Pi RP2040 UF2
+
+The `rules.mk` setting for this bootloader is `rp2040`, and can be specified at the keymap or user level.
+
+To ensure compatibility with the rp2040 bootloader, make sure this block is present in your `rules.mk`:
+
+```make
+# Bootloader selection
+BOOTLOADER = rp2040
+```
+
+Compatible flashers:
+
+* Any application able to copy a file from one place to another, such as _macOS Finder_ or _Windows Explorer_.
+
+Flashing sequence:
+
+1. Enter the bootloader using any of the following methods:
+ * Tap the `QK_BOOT` keycode
+ * Hold the `BOOTSEL` button on the PCB while plugin in the usb cable.
+ * Double-tap the `RESET` button on the PCB<sup>1</sup>.
+2. Wait for the OS to detect the device
+3. Copy the .uf2 file to the new USB disk
+4. Wait for the keyboard to become available
+
+or
+
+CLI Flashing sequence:
+
+1. Enter the bootloader using any of the following methods:
+ * Tap the `QK_BOOT` keycode
+ * Hold the `BOOTSEL` button on the PCB while plugin in the usb cable.
+ * Double-tap the `RESET` button on the PCB<sup>1</sup>.
+2. Wait for the OS to detect the device
+3. Flash via QMK CLI eg. `qmk flash --keyboard handwired/onekey/rpi_pico --keymap default`
+4. Wait for the keyboard to become available
+
+<sup>1</sup>: This works only if QMK was compiled with `RP2040_BOOTLOADER_DOUBLE_TAP_RESET` defined.
diff --git a/docs/flashing_bootloadhid.md b/docs/flashing_bootloadhid.md
index 213c7c1321..aacf2cc2c4 100644
--- a/docs/flashing_bootloadhid.md
+++ b/docs/flashing_bootloadhid.md
@@ -5,7 +5,7 @@ ps2avr(GB) boards use an ATmega32A microcontroller and a different bootloader. I
General flashing sequence:
1. Enter the bootloader using any of the following methods:
- * Tap the `RESET` keycode (may not work on all devices)
+ * Tap the `QK_BOOT` keycode (may not work on all devices)
* Hold the salt key while plugging the keyboard in (usually documented within keyboard readme)
2. Wait for the OS to detect the device
3. Flash a .hex file
diff --git a/docs/hand_wire.md b/docs/hand_wire.md
index e79a80375a..06809254df 100644
--- a/docs/hand_wire.md
+++ b/docs/hand_wire.md
@@ -177,20 +177,25 @@ From here, you should have a working keyboard once you program a firmware.
Simple firmware can be created easily using the [Keyboard Firmware Builder](https://kbfirmware.com/) website. Recreate your layout using [Keyboard Layout Editor](https://www.keyboard-layout-editor.com), import it and recreate the matrix (if not already done as part of [planning the matrix](#planning-the-matrix).
-Go through the rest of the tabs, assigning keys until you get to the last one where you can compile and download your firmware. The .hex file can be flashed straight onto your keyboard, and the .zip of source files can be modified for advanced functionality and compiled locally using the method described in [Building Your First Firmware](newbs_building_firmware?id=build-your-firmware).
-
-The source given by Keyboard Firmware Builder is QMK, but is based on a version of QMK from early 2017. To compile the code from your .zip file in a modern version of QMK Firmware, you'll need to open the .zip and follow these instructions:
-
-1. Extract the `kb` folder to `qmk_firmware/keyboards/handwired/`.
-2. Open the extracted `kb` folder, then proceed to the `keymaps/default/` folder, and open `keymap.c`.
-3. Locate and delete the `action_get_macro` code block:
- ```
- const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
- ...
- return MACRO_NONE;
- }
- ```
-4. Save and close `keymap.c`.
+Go through the rest of the tabs, assigning keys until you get to the last one where you can compile and download your firmware. The .hex file can be flashed straight onto your keyboard, or for advanced functionality, compiled locally after [Setting up Your Environment](newbs_getting_started.md).
+
+The source given by Keyboard Firmware Builder is QMK, but is based on a version of QMK from early 2017. To compile the firmware in a modern version of QMK Firmware, you'll need to export via the `Save Configuration` button, then run:
+
+ qmk import-kbfirmware /path/to/export.json
+
+For example:
+
+```
+$ qmk import-kbfirmware ~/Downloads/gh62.json
+Ψ Importing gh62.json.
+
+âš  Support here is basic - Consider using 'qmk new-keyboard' instead
+Ψ Imported a new keyboard named gh62.
+Ψ To start working on things, `cd` into keyboards/gh62,
+Ψ or open the directory in your preferred text editor.
+Ψ And build with qmk compile -kb gh62 -km default.
+```
+
## Flashing the Firmware
diff --git a/docs/ja/_summary.md b/docs/ja/_summary.md
index 81b5756c27..8516a5eaaa 100644
--- a/docs/ja/_summary.md
+++ b/docs/ja/_summary.md
@@ -85,7 +85,6 @@
* [スワップãƒãƒ³ãƒ‰](ja/feature_swap_hands.md)
* [タップダンス](ja/feature_tap_dance.md)
* [タップホールド設定](ja/tap_hold.md)
- * [ターミナル](ja/feature_terminal.md)
* [ユニコード](ja/feature_unicode.md)
* [ユーザスペース](ja/feature_userspace.md)
* [WPM 計算](ja/feature_wpm.md)
diff --git a/docs/ja/api_docs.md b/docs/ja/api_docs.md
index 34ed50c497..96ddbb5618 100644
--- a/docs/ja/api_docs.md
+++ b/docs/ja/api_docs.md
@@ -21,7 +21,7 @@
"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"]
+ ["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","QK_BOOT","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"]
]
}
```
diff --git a/docs/ja/config_options.md b/docs/ja/config_options.md
index fb43d015f2..c95753bd5d 100644
--- a/docs/ja/config_options.md
+++ b/docs/ja/config_options.md
@@ -108,7 +108,7 @@ QMK ã§ã®å…¨ã¦ã®åˆ©ç”¨å¯èƒ½ãªè¨­å®šã«ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãŒã‚ã‚Šã¾ã™ã€‚ã
* デãƒã‚¤ã‚¹ã® USB 経由ã®æœ€å¤§é›»åŠ›(mA) を設定ã—ã¾ã™ (デフォルト: 500)
* `#define USB_POLLING_INTERVAL_MS 10`
* キーボードã€ãƒžã‚¦ã‚¹ ãŠã‚ˆã³ 共有 (NKRO/メディアキー) インタフェースã®ãŸã‚ã® USB ãƒãƒ¼ãƒªãƒ³ã‚°ãƒ¬ãƒ¼ãƒˆã‚’ミリ秒ã§è¨­å®šã—ã¾ã™
-* `#define USB_SUSPEND_WAKEUP_DELAY 200`
+* `#define USB_SUSPEND_WAKEUP_DELAY 0`
* ウェイクアップパケットをé€ä¿¡ã—ãŸå¾Œã§ä¸€æ™‚åœæ­¢ã™ã‚‹ãƒŸãƒªç§’を設定ã—ã¾ã™
* `#define F_SCL 100000L`
* I2C を使用ã™ã‚‹ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã®ãŸã‚ã® I2C クロックレート速度を設定ã—ã¾ã™ã€‚デフォルト㯠`400000L` ã§ã™ãŒã€`split_common` を使ã£ã¦ã„るキーボードã¯åˆ¥ã§ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ `100000L` ã§ã™ã€‚
@@ -144,7 +144,7 @@ QMK ã§ã®å…¨ã¦ã®åˆ©ç”¨å¯èƒ½ãªè¨­å®šã«ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãŒã‚ã‚Šã¾ã™ã€‚ã
## 設定å¯èƒ½ãªæŒ™å‹• :id=behaviors-that-can-be-configured
* `#define TAPPING_TERM 200`
- * タップãŒãƒ›ãƒ¼ãƒ«ãƒ‰ã«ãªã‚‹ã¾ã§ã®æ™‚間。500以上ã«è¨­å®šã•ã‚ŒãŸå ´åˆã€ã‚¿ãƒƒãƒ—期間中ã«ã‚¿ãƒƒãƒ—ã•ã‚ŒãŸã‚­ãƒ¼ã‚‚ホールドã«ãªã‚Šã¾ã™ã€‚(訳注: PERMISSIVE_HOLDã‚‚å‚ç…§)
+ * タップãŒãƒ›ãƒ¼ãƒ«ãƒ‰ã«ãªã‚‹ã¾ã§ã®æ™‚間。
* `#define TAPPING_TERM_PER_KEY`
* キーã”ã¨ã® `TAPPING_TERM` 設定ã®å‡¦ç†ã‚’有効ã«ã—ã¾ã™
* `#define RETRO_TAPPING`
@@ -181,8 +181,6 @@ QMK ã§ã®å…¨ã¦ã®åˆ©ç”¨å¯èƒ½ãªè¨­å®šã«ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãŒã‚ã‚Šã¾ã™ã€‚ã
* ワンショットãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã™ã‚‹ã¾ã§ã®æ™‚é–“
* `#define ONESHOT_TAP_TOGGLE 2`
* ワンショットトグルãŒå¼•ãèµ·ã“ã•ã‚Œã‚‹ã¾ã§ã®ã‚¿ãƒƒãƒ—æ•°
-* `#define QMK_KEYS_PER_SCAN 4`
- * 走査ã”ã¨ã«1ã¤ä»¥ä¸Šã®ã‚­ãƒ¼ã‚’é€ä¿¡ã§ãるよã†ã«ã—ã¾ã™ã€‚デフォルトã§ã¯ã€èµ°æŸ»ã”ã¨ã« `process_record()` 経由ã§1ã¤ã®ã‚­ãƒ¼ã‚¤ãƒ™ãƒ³ãƒˆã®ã¿ãŒé€ä¿¡ã•ã‚Œã¾ã™ã€‚ã“ã‚Œã¯ã»ã¨ã‚“ã©ã®ã‚¿ã‚¤ãƒ”ングã«ã»ã¨ã‚“ã©å½±éŸ¿ã—ã¾ã›ã‚“ãŒã€å¤šãã®ã‚³ãƒ¼ãƒ‰ã‚’入力ã—ã¦ã„ã‚‹ã‹ã€èµ°æŸ»ãƒ¬ãƒ¼ãƒˆãŒæœ€åˆã‹ã‚‰é…ã„å ´åˆã€ã‚­ãƒ¼ã‚¤ãƒ™ãƒ³ãƒˆã®å‡¦ç†ã«å¤šå°‘ã®é…延ãŒç”Ÿã˜ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ãã‚Œãžã‚Œã®ãƒ—レスã¨ãƒªãƒªãƒ¼ã‚¹ã¯åˆ¥ã®ã‚¤ãƒ™ãƒ³ãƒˆã§ã™ã€‚スキャン時間㌠1ms 程度ã®ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã®å ´åˆã€ã¨ã¦ã‚‚高速ãªã‚¿ã‚¤ãƒ”ストã§ã•ãˆã€å®Ÿéš›ã«ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã‹ã‚‰æ•° ms 以上ã®é…延を発生ã•ã›ã‚‹ã®ã«å¿…è¦ãª 500 キーストロークを1秒間ã«ç”Ÿæˆã™ã‚‹ã“ã¨ã¯ãªã„ã§ã—ょã†ã€‚ã—ã‹ã—ã€3~4ms ã®èµ°æŸ»æ™‚é–“ã§ã‚³ãƒ¼ãƒ‰ã‚’入力ã—ã¦ã„ã‚‹å ´åˆã¯ã©ã†ã§ã—ょã†ã‹ï¼ŸãŠãらãã“ã‚ŒãŒå¿…è¦ã§ã™ã€‚
* `#define COMBO_COUNT 2`
* [コンボ](ja/feature_combo.md)機能ã§ä½¿ã£ã¦ã„るコンボã®æ•°ã«ã“れを設定ã—ã¾ã™ã€‚
* `#define COMBO_TERM 200`
@@ -196,8 +194,6 @@ QMK ã§ã®å…¨ã¦ã®åˆ©ç”¨å¯èƒ½ãªè¨­å®šã«ã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆãŒã‚ã‚Šã¾ã™ã€‚ã
* `#define RGB_DI_PIN D7`
* WS2812 ã® DI 端å­ã«ã¤ãªãピン
-* `#define RGBLIGHT_ANIMATIONS`
- * RGB アニメーションを実行ã—ã¾ã™
* `#define RGBLIGHT_LAYERS`
* オンã¨ã‚ªãƒ•ã‚’切り替ãˆã‚‹ã“ã¨ãŒã§ãã‚‹ [ライトレイヤー](ja/feature_rgblight.md?id=lighting-layers) を定義ã§ãã¾ã™ã€‚ç¾åœ¨ã®ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ãƒ¬ã‚¤ãƒ¤ãƒ¼ã¾ãŸã¯ Caps Lock 状態を表示ã™ã‚‹ã®ã«æœ€é©ã§ã™ã€‚
* `#define RGBLIGHT_MAX_LAYERS`
diff --git a/docs/ja/custom_matrix.md b/docs/ja/custom_matrix.md
index 277fc658d3..2c697bb148 100644
--- a/docs/ja/custom_matrix.md
+++ b/docs/ja/custom_matrix.md
@@ -87,17 +87,17 @@ void matrix_init(void) {
}
uint8_t matrix_scan(void) {
- bool matrix_has_changed = false;
+ bool changed = false;
// TODO: ã“ã“ã«ãƒžãƒˆãƒªãƒƒã‚¯ã‚¹ã‚¹ã‚­ãƒ£ãƒ³ãƒ«ãƒ¼ãƒãƒ³ã‚’追加ã—ã¾ã™
// ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã«ã‚ˆã‚‹ãƒ‡ãƒã‚¦ãƒ³ã‚¹ãŒãªã„å ´åˆ - 設定ã•ã‚Œã¦ã„るデãƒã‚¦ãƒ³ã‚¹ãƒ«ãƒ¼ãƒãƒ³ã‚’使用ã—ã¾ã™
- debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
+ changed = debounce(raw_matrix, matrix, MATRIX_ROWS, changed);
// æ­£ã—ã„キーボード動作ã®ãŸã‚ã«ã“れを呼ã³å‡ºã™*å¿…è¦ãŒã‚ã‚Šã¾ã™*
matrix_scan_quantum();
- return matrix_has_changed;
+ return changed;
}
```
diff --git a/docs/ja/faq_misc.md b/docs/ja/faq_misc.md
index 38917df2ee..24a0e18235 100644
--- a/docs/ja/faq_misc.md
+++ b/docs/ja/faq_misc.md
@@ -13,7 +13,7 @@
ã‚ãªãŸã¯ãŠãらãキーボードを「文鎮化ã€ã—ãŸããªã„ã§ã—ょã†ã€‚文鎮化ã™ã‚‹ã¨ãƒ•ã‚¡ãƒ¼ãƒ ã‚¦ã‚§ã‚¢ã‚’書ãæ›ãˆã‚‰ã‚Œãªã„よã†ã«ãªã‚Šã¾ã™ã€‚リスクãŒã‚ã¾ã‚Šã«é«˜ã„(ãã—ã¦ãã†ã§ãªã„ã‹ã‚‚ã—ã‚Œãªã„)ã‚‚ã®ã®ä¸€éƒ¨ã®ãƒªã‚¹ãƒˆã‚’示ã—ã¾ã™ã€‚
-- キーボードマップ㫠RESET ãŒå«ã¾ã‚Œãªã„å ´åˆã€DFU モードã«å…¥ã‚‹ã«ã¯ã€PCB ã®ãƒªã‚»ãƒƒãƒˆãƒœã‚¿ãƒ³ã‚’押ã™å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚底部ã®ãƒã‚¸ã‚’外ã™å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
+- キーボードマップ㫠QK_BOOT ãŒå«ã¾ã‚Œãªã„å ´åˆã€DFU モードã«å…¥ã‚‹ã«ã¯ã€PCB ã®ãƒªã‚»ãƒƒãƒˆãƒœã‚¿ãƒ³ã‚’押ã™å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚底部ã®ãƒã‚¸ã‚’外ã™å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
- tmk_core / common ã«ã‚るファイルを触るã¨ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ãŒæ“作ä¸èƒ½ã«ãªã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。
- .hex ファイルãŒå¤§ãã™ãŽã‚‹ã¨å•é¡Œã‚’引ãèµ·ã“ã—ã¾ã™; `make dfu` コマンドã¯ãƒ–ロックを削除ã—ã€ã‚µã‚¤ã‚ºã‚’検査ã—(ãŠã£ã¨ã€é–“é•ã£ãŸé †åºã§ã™ï¼)ã€ã‚¨ãƒ©ãƒ¼ã‚’出力ã—ã€
キーボードã¸ã®æ›¸ãè¾¼ã¿ã«å¤±æ•—ã—ã€DFU モードã®ã¾ã¾ã«ãªã‚Šã¾ã™ã€‚
diff --git a/docs/ja/feature_audio.md b/docs/ja/feature_audio.md
index ca7820e3c4..2d1fd8f78a 100644
--- a/docs/ja/feature_audio.md
+++ b/docs/ja/feature_audio.md
@@ -23,7 +23,7 @@ Timer 3:
```
STARTUP_SONG // キーボードã®èµ·å‹•æ™‚ã«å†ç”Ÿ (audio.c)
-GOODBYE_SONG // RESET キーを押ã™ã¨å†ç”Ÿ (quantum.c)
+GOODBYE_SONG // QK_BOOT キーを押ã™ã¨å†ç”Ÿ (quantum.c)
AG_NORM_SONG // AG_NORM キーを押ã™ã¨å†ç”Ÿ (quantum.c)
AG_SWAP_SONG // AG_SWAP キーを押ã™ã¨å†ç”Ÿ (quantum.c)
CG_NORM_SONG // CG_NORM キーを押ã™ã¨å†ç”Ÿ (quantum.c)
diff --git a/docs/ja/feature_dynamic_macros.md b/docs/ja/feature_dynamic_macros.md
index 951b903127..3cff788007 100644
--- a/docs/ja/feature_dynamic_macros.md
+++ b/docs/ja/feature_dynamic_macros.md
@@ -40,6 +40,7 @@ QMK ã¯ãã®å ´ã§ä½œã‚‰ã‚ŒãŸä¸€æ™‚çš„ãªãƒžã‚¯ãƒ­ã‚’サãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ã
| `DYNAMIC_MACRO_SIZE` | 128 | 動的マクロãŒä½¿ç”¨ã§ãるメモリé‡ã‚’設定ã—ã¾ã™ã€‚ã“ã‚Œã¯é™ã‚‰ã‚ŒãŸãƒªã‚½ãƒ¼ã‚¹ã§ã‚ã‚Šã€ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ©ã«ä¾å­˜ã—ã¾ã™ã€‚ |
| `DYNAMIC_MACRO_USER_CALL` | *定義ãªã—* | ã“れを定義ã™ã‚‹ã¨ã€ãƒ¦ãƒ¼ã‚¶ã® `keymap.c` ファイルを使ã£ã¦ãƒžã‚¯ãƒ­ãŒèµ·å‹•ã•ã‚Œã¾ã™ã€‚ |
| `DYNAMIC_MACRO_NO_NESTING` | *定義ãªã—* | ã“れを定義ã™ã‚‹ã¨ã€åˆ¥ã®ãƒžã‚¯ãƒ­ã‹ã‚‰ãƒžã‚¯ãƒ­ã‚’呼ã³å‡ºã™(入れå­ã«ãªã£ãŸãƒžã‚¯ãƒ­)機能を無効ã«ã—ã¾ã™ã€‚ |
+| `DYNAMIC_MACRO_DELAY` | *定義ãªã—* | å„キーをé€ä¿¡ã™ã‚‹æ™‚ã®å¾…ã¡æ™‚間(mså˜ä½ï¼‰ã‚’設定ã—ã¾ã™ã€‚ |
記録中ã«ã‚­ãƒ¼ã‚’押ã™ãŸã³ã« LED ãŒç‚¹æ»…ã—始ã‚ãŸå ´åˆã¯ã€ãƒžã‚¯ãƒ­ãƒãƒƒãƒ•ã‚¡ã«ãƒžã‚¯ãƒ­ã‚’入れるスペースãŒã‚‚ã†ç„¡ã„ã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚マクロを入れるã«ã¯ã€ä»–ã®ãƒžã‚¯ãƒ­(ãれらã¯åŒã˜ãƒãƒƒãƒ•ã‚¡ã‚’共有ã—ã¾ã™)を短ãã™ã‚‹ã‹ã€`config.h` ã« `DYNAMIC_MACRO_SIZE` 定義を追加ã™ã‚‹ã“ã¨ã§ãƒãƒƒãƒ•ã‚¡ã‚’増やã—ã¾ã™(デフォルト値: 128; ヘッダ内ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’読んã§ãã ã•ã„)。
diff --git a/docs/ja/feature_stenography.md b/docs/ja/feature_stenography.md
index f8f7df11e1..b280084ae3 100644
--- a/docs/ja/feature_stenography.md
+++ b/docs/ja/feature_stenography.md
@@ -77,7 +77,7 @@ bool process_steno_user(uint16_t keycode, keyrecord_t *record) { return true; }
ã“ã®é–¢æ•°ã¯ã‚­ãƒ¼ãŒæŠ¼ã•ã‚Œã‚‹ã¨ã‚­ãƒ¼ãŒå‡¦ç†ã•ã‚Œã‚‹å‰ã«å‘¼ã³å‡ºã•ã‚Œã¾ã™ã€‚キーコード㯠`QK_STENO_BOLT`ã€`QK_STENO_GEMINI` ã‚ã‚‹ã„㯠`STN_*` キー値ã®ã„ãšã‚Œã‹ã§ãªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。
```c
-bool postprocess_steno_user(uint16_t keycode, keyrecord_t *record, steno_mode_t mode, uint8_t chord[6], int8_t pressed);
+bool post_process_steno_user(uint16_t keycode, keyrecord_t *record, steno_mode_t mode, uint8_t chord[6], int8_t pressed);
```
ã“ã®é–¢æ•°ã¯ã‚­ãƒ¼ãŒå‡¦ç†ã•ã‚ŒãŸå¾Œã€ãŸã ã—コードをé€ä¿¡ã™ã‚‹ã‹ã©ã†ã‹ã‚’決ã‚ã‚‹å‰ã«å‘¼ã³å‡ºã•ã‚Œã¾ã™ã€‚`IS_PRESSED(record->event)` ㌠false ã§ã€`pressed` ㌠0 ã¾ãŸã¯ 1 ã®å ´åˆã¯ã€ã‚³ãƒ¼ãƒ‰ã¯ã¾ã‚‚ãªãé€ä¿¡ã•ã‚Œã¾ã™ãŒã€ã¾ã é€ä¿¡ã•ã‚Œã¦ã¯ã„ã¾ã›ã‚“。ã“ã“ãŒé€Ÿè¨˜ã‚³ãƒ¼ãƒ‰ã‚ã‚‹ã„ã¯ã‚­ãƒ¼ã®ãƒ©ã‚¤ãƒ–表示ãªã©ã®ãƒ•ãƒƒã‚¯ã‚’é…ç½®ã™ã‚‹å ´æ‰€ã§ã™ã€‚
diff --git a/docs/ja/feature_tap_dance.md b/docs/ja/feature_tap_dance.md
index a6d108f1e9..762816f21b 100644
--- a/docs/ja/feature_tap_dance.md
+++ b/docs/ja/feature_tap_dance.md
@@ -28,7 +28,6 @@
* `ACTION_TAP_DANCE_DOUBLE(kc1, kc2)`: 1回タップã™ã‚‹ã¨ `kc1` キーコードをé€ä¿¡ã—ã€2回タップã™ã‚‹ã¨ `kc2` キーコードをé€ä¿¡ã—ã¾ã™ã€‚キーを押ã—続ã‘ã¦ã„ã‚‹ã¨ãã¯ã€é©åˆ‡ãªã‚­ãƒ¼ã‚³ãƒ¼ãƒ‰ãŒç™»éŒ²ã•ã‚Œã¾ã™: キーを押ã—続ã‘ãŸå ´åˆã¯ `kc1`ã€ä¸€åº¦ã‚¿ãƒƒãƒ—ã—ã¦ã‹ã‚‰ç¶šã‘ã¦ã‚‚ã†ä¸€åº¦ã‚­ãƒ¼ã‚’押ã—ã¦ãã®ã¾ã¾æŠ¼ã—続ã‘ãŸã¨ãã¯ã€ `kc2` ãŒç™»éŒ²ã•ã‚Œã¾ã™ã€‚
* `ACTION_TAP_DANCE_LAYER_MOVE(kc, layer)`: 1回タップã™ã‚‹ã¨ `kc` キーコードãŒé€ä¿¡ã•ã‚Œã€2回タップã™ã‚‹ã¨ `layer` レイヤーã«ç§»å‹•ã—ã¾ã™(ã“れ㯠`TO` レイヤーキーコードã®ã‚ˆã†ã«æ©Ÿèƒ½ã—ã¾ã™)。
- * ã“ã®æ©Ÿèƒ½ã¯ `ACTION_TAP_DANCE_DUAL_ROLE` ã¨åŒã˜ã§ã™ãŒã€æ©Ÿèƒ½ãŒæ˜Žç¢ºã«ãªã‚‹ã‚ˆã†ã«é–¢æ•°åを変更ã—ã¾ã—ãŸã€‚ã©ã¡ã‚‰ã®é–¢æ•°åã§ã‚‚実行ã§ãã¾ã™ã€‚
* `ACTION_TAP_DANCE_LAYER_TOGGLE(kc, layer)`: 1回タップã™ã‚‹ã¨ `kc` キーコードãŒé€ä¿¡ã•ã‚Œã€2回タップã™ã‚‹ã¨ `layer` ã®çŠ¶æ…‹ã‚’トグルã—ã¾ã™(ã“れ㯠`TG` レイヤーキーコードã®ã‚ˆã†ã«æ©Ÿèƒ½ã—ã¾ã™)。
* `ACTION_TAP_DANCE_FN(fn)`: ユーザーキーマップã«å®šç¾©ã—ãŸæŒ‡å®šã®é–¢æ•°ãŒå‘¼ã³å‡ºã•ã‚Œã¾ã™ã€‚タップダンス実行ã®å›žæ•°åˆ†ã‚¿ãƒƒãƒ—ã™ã‚‹ã¨ã€æœ€å¾Œã®æ™‚点ã§å‘¼ã³å‡ºã•ã‚Œã¾ã™ã€‚
* `ACTION_TAP_DANCE_FN_ADVANCED(on_each_tap_fn, on_dance_finished_fn, on_dance_reset_fn)`: タップã™ã‚‹åº¦ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚­ãƒ¼ãƒžãƒƒãƒ—ã«å®šç¾©ã—ãŸæœ€åˆã®é–¢æ•°ãŒå‘¼ã³å‡ºã•ã‚Œã¾ã™ã€‚タップダンスã®å®Ÿè¡ŒãŒçµ‚ã‚ã£ãŸæ™‚点ã§2番目ã®é–¢æ•°ãŒå‘¼ã³å‡ºã•ã‚Œã€ã‚¿ãƒƒãƒ—ダンスã®å®Ÿè¡Œã‚’リセットã™ã‚‹ã¨ãã«æœ€å¾Œã®é–¢æ•°ãŒå‘¼ã³å‡ºã•ã‚Œã¾ã™ã€‚
diff --git a/docs/ja/feature_terminal.md b/docs/ja/feature_terminal.md
deleted file mode 100644
index 8e125ecee0..0000000000
--- a/docs/ja/feature_terminal.md
+++ /dev/null
@@ -1,112 +0,0 @@
-# ターミナル
-
-<!---
- original document: 0.8.147:docs/feature_terminal.md
- git diff 0.8.147 HEAD -- docs/feature_terminal.md | cat
--->
-
-> ã“ã®æ©Ÿèƒ½ã¯ç¾åœ¨ã®ã¨ã“ã‚*巨大*ã§ã‚ã‚Šã€ãŠãらã大é‡ã®ãƒ¡ãƒ¢ãƒªã‚’æ­è¼‰ã—ãŸã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã€ã¾ãŸã¯æ¥½ã—ã¿ã®ãŸã‚ã«ã®ã¿é…ç½®ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
-
-ターミナル機能ã¯ãƒ†ã‚­ã‚¹ãƒˆã‚¨ãƒ‡ã‚£ã‚¿ã‚’介ã—ã¦ã‚­ãƒ¼ã‚¹ãƒˆãƒ­ãƒ¼ã‚¯ã§é€šä¿¡ã™ã‚‹ã‚ˆã†ã«è¨­è¨ˆã•ã‚ŒãŸã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ã®ã‚ˆã†ãªã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã§ã™ã€‚エディタã§è‡ªå‹•ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆæ©Ÿèƒ½ã‚’オフã«ã™ã‚‹ã“ã¨ã¯æœ‰ç›Šã§ã™ã€‚
-
-有効ã«ã™ã‚‹ã«ã¯ã€ä»¥ä¸‹ã‚’ `rules.mk` ã¾ãŸã¯ `Makefile` ã«è²¼ã‚Šä»˜ã‘ã¾ã™:
-
- TERMINAL_ENABLE = yes
-
-ãã—ã¦ã€ã‚ªãƒ³ã¾ãŸã¯ã‚ªãƒ•ã«ã™ã‚‹ãŸã‚ã«ã€`TERM_ON` ãŠã‚ˆã³ `TERM_OFF` キーコードを使ã„ã¾ã™ã€‚
-
-有効ãªå ´åˆã€`> ` プロンプトãŒç¾ã‚Œã€ã“ã“ã§ã‚³ãƒžãƒ³ãƒ‰ã‚„ãƒãƒƒã‚¯ã‚¹ãƒšãƒ¼ã‚¹(オーディオãŒæœ‰åŠ¹ãªå ´åˆã¯ã€å…ˆé ­ã«åˆ°é”ã™ã‚‹ã¨ãƒ™ãƒ«ãŒé³´ã‚Šã¾ã™)を入力ã™ã‚‹ã“ã¨ãŒã§ãã€ã‚¨ãƒ³ã‚¿ãƒ¼ã‚’入力ã™ã‚‹ã¨ã‚³ãƒžãƒ³ãƒ‰ã‚’é€ä¿¡ã—ã¾ã™ã€‚矢å°ã‚­ãƒ¼ã¯ç¾åœ¨ã®ã¨ã“ã‚無効ãªãŸã‚ã€æ··ä¹±ã™ã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“。マウスã§ã‚«ãƒ¼ã‚½ãƒ«ã‚’移動ã™ã‚‹ã“ã¨ã¯ãŠå‹§ã‚ã—ã¾ã›ã‚“。
-
-`#define TERMINAL_HELP` ã¯ã€ã“ã®ãƒšãƒ¼ã‚¸ã§ã¯å®Ÿéš›ã«ã¯å¿…è¦ã®ãªã„ä»–ã®å‡ºåŠ›ãƒ˜ãƒ«ãƒ‘ーを有効ã«ã—ã¾ã™ã€‚
-
-"上矢å°" ãŠã‚ˆã³ "下矢å°" ã«ã‚ˆã‚Šã€éŽåŽ»ã«å…¥åŠ›ã—ãŸ5ã¤ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’é †ã«åˆ‡ã‚Šæ›¿ãˆã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
-
-## 今後ã®ã‚¢ã‚¤ãƒ‡ã‚¢
-
-* キーボード/ユーザ拡張å¯èƒ½ãªã‚³ãƒžãƒ³ãƒ‰
-* よりå°ã•ãªãƒ•ãƒƒãƒˆãƒ—リント
-* 矢å°ã‚­ãƒ¼ã®ã‚µãƒãƒ¼ãƒˆ
-* コマンド履歴 - 完了
-* SD カードã®ã‚µãƒãƒ¼ãƒˆ
-* ãƒãƒƒãƒ•ã‚¡ãƒ‡ã‚£ã‚¹ãƒ—レイã®ãŸã‚ã® LCD サãƒãƒ¼ãƒˆ
-* キーコード -> å称ã®å¯¾å¿œè¡¨
-* レイヤー状態
-* *アナログ/デジタル ãƒãƒ¼ãƒˆã®èª­ã¿è¾¼ã¿/書ãè¾¼ã¿*
-* RGB モード関連機能
-* マクロ定義
-* EEPROM ã®èª­ã¿è¾¼ã¿/書ãè¾¼ã¿
-* オーディオ制御
-
-## ç¾åœ¨ã®ã‚³ãƒžãƒ³ãƒ‰
-
-### `about`
-
-ç¾åœ¨ã® QMK ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ãƒ“ルドã—ãŸæ—¥ã®å‡ºåŠ›:
-
-```
-> about
-QMK Firmware
- v0.5.115-7-g80ed73-dirty
- Built: 2017-08-29-20:24:44
-```
-
-
-### `print-buffer`
-
-最後ã«å…¥åŠ›ã—ãŸ5ã¤ã®ã‚³ãƒžãƒ³ãƒ‰ã®å‡ºåŠ›
-
-```
-> print-buffer
-0. print-buffer
-1. help
-2. about
-3. keymap 0
-4. help
-5. flush-buffer
-```
-
-### `flush-buffer`
-
-コマンドãƒãƒƒãƒ•ã‚¡ã‚’クリア
-```
-> flush-buffer
-Buffer cleared!
-```
-
-
-### `help`
-
-
-利用å¯èƒ½ãªã‚³ãƒžãƒ³ãƒ‰ã®å‡ºåŠ›:
-
-```
-> help
-commands available:
- about help keycode keymap exit print-buffer flush-buffer
-```
-
-### `keycode <layer> <row> <col>`
-
-特定ã®ãƒ¬ã‚¤ãƒ¤ãƒ¼ã€è¡ŒãŠã‚ˆã³åˆ—ã®ã‚­ãƒ¼ã‚³ãƒ¼ãƒ‰å€¤ã®å‡ºåŠ›:
-
-```
-> keycode 0 1 0
-0x29 (41)
-```
-
-### `keymap <layer>`
-
-特定ã®ãƒ¬ã‚¤ãƒ¤ãƒ¼ã®å…¨ã¦ã®ã‚­ãƒ¼ãƒžãƒƒãƒ—ã®å‡ºåŠ›
-
-```
-> keymap 0
-0x002b, 0x0014, 0x001a, 0x0008, 0x0015, 0x0017, 0x001c, 0x0018, 0x000c, 0x0012, 0x0013, 0x002a,
-0x0029, 0x0004, 0x0016, 0x0007, 0x0009, 0x000a, 0x000b, 0x000d, 0x000e, 0x000f, 0x0033, 0x0034,
-0x00e1, 0x001d, 0x001b, 0x0006, 0x0019, 0x0005, 0x0011, 0x0010, 0x0036, 0x0037, 0x0038, 0x0028,
-0x5cd6, 0x00e0, 0x00e2, 0x00e3, 0x5cd4, 0x002c, 0x002c, 0x5cd5, 0x0050, 0x0051, 0x0052, 0x004f,
->
-```
-
-### `exit`
-
-ターミナルã®çµ‚了 - `TERM_OFF` ã¨åŒã˜ã€‚
diff --git a/docs/ja/flashing.md b/docs/ja/flashing.md
index 0245250cee..ce6646d4fe 100644
--- a/docs/ja/flashing.md
+++ b/docs/ja/flashing.md
@@ -34,7 +34,7 @@ BOOTLOADER = atmel-dfu
書ãè¾¼ã¿æ‰‹é †:
-1. `RESET` キーコードを押ã™ã‹ã€RESET ボタンをタップã—ã¾ã™(ã¾ãŸã¯ RST ã‚’ GND ã«ã‚·ãƒ§ãƒ¼ãƒˆã—ã¾ã™)。
+1. `QK_BOOT` キーコードを押ã™ã‹ã€RESET ボタンをタップã—ã¾ã™(ã¾ãŸã¯ RST ã‚’ GND ã«ã‚·ãƒ§ãƒ¼ãƒˆã—ã¾ã™)。
2. OS ãŒãƒ‡ãƒã‚¤ã‚¹ã‚’検知ã™ã‚‹ã®ã‚’å¾…ã¡ã¾ã™ã€‚
3. メモリを消去ã—ã¾ã™(自動的ã«å®Ÿè¡Œã•ã‚Œã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“)
4. .hex ファイルを書ãè¾¼ã¿ã¾ã™
@@ -94,7 +94,7 @@ BOOTLOADER = caterina
書ãè¾¼ã¿æ‰‹é †:
-1. `RESET` キーコードを押ã™ã‹ã€RST ã‚’ã™ã°ã‚„ã GND ã«ã‚·ãƒ§ãƒ¼ãƒˆã—ã¾ã™ (入力後7秒ã§æ›¸ãè¾¼ã¿ã¾ã™)
+1. `QK_BOOT` キーコードを押ã™ã‹ã€RST ã‚’ã™ã°ã‚„ã GND ã«ã‚·ãƒ§ãƒ¼ãƒˆã—ã¾ã™ (入力後7秒ã§æ›¸ãè¾¼ã¿ã¾ã™)
2. OS ãŒãƒ‡ãƒã‚¤ã‚¹ã‚’検知ã™ã‚‹ã®ã‚’å¾…ã¡ã¾ã™ã€‚
3. .hex ファイルを書ãè¾¼ã¿ã¾ã™
4. デãƒã‚¤ã‚¹ãŒè‡ªå‹•çš„ã«ãƒªã‚»ãƒƒãƒˆã•ã‚Œã‚‹ã®ã‚’å¾…ã¡ã¾ã™
@@ -141,7 +141,7 @@ BOOTLOADER = halfkay
書ãè¾¼ã¿æ‰‹é †:
-1. `RESET` キーコードを押ã™ã‹ã€RST ã‚’ã™ã°ã‚„ã GND ã«ã‚·ãƒ§ãƒ¼ãƒˆã—ã¾ã™ (入力後7秒ã§æ›¸ãè¾¼ã¿ã¾ã™)
+1. `QK_BOOT` キーコードを押ã™ã‹ã€RST ã‚’ã™ã°ã‚„ã GND ã«ã‚·ãƒ§ãƒ¼ãƒˆã—ã¾ã™ (入力後7秒ã§æ›¸ãè¾¼ã¿ã¾ã™)
2. OS ãŒãƒ‡ãƒã‚¤ã‚¹ã‚’検知ã™ã‚‹ã®ã‚’å¾…ã¡ã¾ã™ã€‚
3. .hex ファイルを書ãè¾¼ã¿ã¾ã™
4. デãƒã‚¤ã‚¹ã‚’アプリケーションモードã«ãƒªã‚»ãƒƒãƒˆã—ã¾ã™(自動的ã«å®Ÿè¡Œã•ã‚Œã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“)
@@ -172,7 +172,7 @@ BOOTLOADER = USBasp
書ãè¾¼ã¿æ‰‹é †:
-1. `RESET` キーコードを押ã™ã‹ã€RST ã‚’ GND ã«ã™ã°ã‚„ãショートã—ãªãŒã‚‰ã€ãƒ–ートピンを GND ã«ã‚·ãƒ§ãƒ¼ãƒˆã—ãŸã¾ã¾ã«ã—ã¾ã™ã€‚
+1. `QK_BOOT` キーコードを押ã™ã‹ã€RST ã‚’ GND ã«ã™ã°ã‚„ãショートã—ãªãŒã‚‰ã€ãƒ–ートピンを GND ã«ã‚·ãƒ§ãƒ¼ãƒˆã—ãŸã¾ã¾ã«ã—ã¾ã™ã€‚
2. OS ãŒãƒ‡ãƒã‚¤ã‚¹ã‚’検知ã™ã‚‹ã®ã‚’å¾…ã¡ã¾ã™ã€‚
3. .hex ファイルを書ãè¾¼ã¿ã¾ã™
4. デãƒã‚¤ã‚¹ã‚’アプリケーションモードã«ãƒªã‚»ãƒƒãƒˆã—ã¾ã™(自動的ã«å®Ÿè¡Œã•ã‚Œã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“)
@@ -203,7 +203,7 @@ BOOTLOADER = bootloadHID
書ãè¾¼ã¿æ‰‹é †:
1. 以下ã®ã„ãšã‚Œã‹ã®æ–¹æ³•ã‚’使ã£ã¦ãƒ–ートローダã«å…¥ã‚Šã¾ã™:
- * `RESET` キーコードをタップã—ã¾ã™ (å…¨ã¦ã®ãƒ‡ãƒã‚¤ã‚¹ã§ã¯å‹•ä½œã—ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“)
+ * `QK_BOOT` キーコードをタップã—ã¾ã™ (å…¨ã¦ã®ãƒ‡ãƒã‚¤ã‚¹ã§ã¯å‹•ä½œã—ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“)
* キーボードを接続ã—ãªãŒã‚‰ã‚½ãƒ«ãƒˆã‚­ãƒ¼ã‚’押ã—続ã‘ã¾ã™ (通常ã¯ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã® readme ã«æ›¸ã‹ã‚Œã¦ã„ã¾ã™)
2. OS ãŒãƒ‡ãƒã‚¤ã‚¹ã‚’検知ã™ã‚‹ã®ã‚’å¾…ã¡ã¾ã™ã€‚
3. .hex ファイルを書ãè¾¼ã¿ã¾ã™
@@ -227,7 +227,7 @@ BOOTLOADER = bootloadHID
書ãè¾¼ã¿æ‰‹é †:
1. 以下ã®ã„ãšã‚Œã‹ã®æ–¹æ³•ã‚’使ã£ã¦ãƒ–ートローダã«å…¥ã‚Šã¾ã™:
- * `RESET` キーコードをタップã—ã¾ã™ (STM32F042 デãƒã‚¤ã‚¹ã§ã¯å‹•ä½œã—ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“)
+ * `QK_BOOT` キーコードをタップã—ã¾ã™ (STM32F042 デãƒã‚¤ã‚¹ã§ã¯å‹•ä½œã—ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“)
* リセット回路ãŒå­˜åœ¨ã™ã‚‹å ´åˆã€RESET ボタンをタップã—ã¾ã™
* ãれ以外ã®å ´åˆã¯ã€(BOOT0 ボタンã‚ã‚‹ã„ã¯ãƒ–リッジ経由ã§)BOOT0 ã‚’ VCC ã«ãƒ–リッジã—ã€(REEST ボタンã‚ã‚‹ã„ã¯ãƒ–リッジ経由ã§)RESET ã‚’ GND ã«ã‚·ãƒ§ãƒ¼ãƒˆã—ã€BOOT0 ブリッジを放ã™å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
2. OS ãŒãƒ‡ãƒã‚¤ã‚¹ã‚’検知ã™ã‚‹ã®ã‚’å¾…ã¡ã¾ã™ã€‚
diff --git a/docs/ja/flashing_bootloadhid.md b/docs/ja/flashing_bootloadhid.md
index ddcd776c24..5c67bd5f29 100644
--- a/docs/ja/flashing_bootloadhid.md
+++ b/docs/ja/flashing_bootloadhid.md
@@ -10,7 +10,7 @@ ps2avr(GB) キーボード㯠ATmega32A マイクロコントローラを使ã„ã
一般的ãªæ›¸ãè¾¼ã¿ã‚·ãƒ¼ã‚±ãƒ³ã‚¹:
1. 以下ã®ã„ãšã‚Œã‹ã®æ–¹æ³•ã‚’使ã£ã¦ãƒ–ートローダã«å…¥ã‚Šã¾ã™:
- * `RESET` キーコードをタップã—ã¾ã™ (å…¨ã¦ã®ãƒ‡ãƒã‚¤ã‚¹ã§ã¯å‹•ä½œã—ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“)
+ * `QK_BOOT` キーコードをタップã—ã¾ã™ (å…¨ã¦ã®ãƒ‡ãƒã‚¤ã‚¹ã§ã¯å‹•ä½œã—ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“)
* ソルトキーを押ã—続ã‘ãªãŒã‚‰ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã‚’接続ã—ã¾ã™ (通常ã¯ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã® readme ã«æ›¸ã‹ã‚Œã¦ã„ã¾ã™)
2. OS ãŒãƒ‡ãƒã‚¤ã‚¹ã‚’検知ã™ã‚‹ã®ã‚’å¾…ã¡ã¾ã™ã€‚
3. .hex ファイルを書ãè¾¼ã¿ã¾ã™
diff --git a/docs/ja/keycodes.md b/docs/ja/keycodes.md
index c5c075bb2b..aa8c722372 100644
--- a/docs/ja/keycodes.md
+++ b/docs/ja/keycodes.md
@@ -228,10 +228,10 @@
[Quantum キーコード](ja/quantum_keycodes.md#qmk-keycodes) も見ã¦ãã ã•ã„。
|キー |エイリアス |説明 |
-|--------------|-----------|---------------------------------------------------------|
-|`RESET` | |ファームウエア書ãè¾¼ã¿ã®ãŸã‚ã«ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã‚’ブートローダーモードã«ã—ã¾ã™ |
-|`DEBUG` | |デãƒãƒƒã‚°ãƒ¢ãƒ¼ãƒ‰ã‚’切り替ãˆã¾ã™ |
-|`EEPROM_RESET`|`EEP_RST` |キーボード㮠EEPROM (ä¸æ®ç™ºãƒ¡ãƒ¢ãƒª) ã‚’å†åˆæœŸåŒ–ã—ã¾ã™ |
+|-----------------|---------|---------------------------------------------------------|
+|`QK_BOOTLOADER` |`QK_BOOT`|ファームウエア書ãè¾¼ã¿ã®ãŸã‚ã«ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã‚’ブートローダーモードã«ã—ã¾ã™ |
+|`QK_DEBUG_TOGGLE`|`DB_TOGG`|デãƒãƒƒã‚°ãƒ¢ãƒ¼ãƒ‰ã‚’切り替ãˆã¾ã™ |
+|`QK_CLEAR_EEPROM`|`EE_CLR` |キーボード㮠EEPROM (ä¸æ®ç™ºãƒ¡ãƒ¢ãƒª) ã‚’å†åˆæœŸåŒ–ã—ã¾ã™ |
## オーディオキー :id=audio-keys
diff --git a/docs/ja/quantum_keycodes.md b/docs/ja/quantum_keycodes.md
index ffcc494460..0795520c6e 100644
--- a/docs/ja/quantum_keycodes.md
+++ b/docs/ja/quantum_keycodes.md
@@ -14,7 +14,7 @@ quantum 内ã®å…¨ã¦ã®ã‚­ãƒ¼ã‚³ãƒ¼ãƒ‰ã¯ `0x0000` 㨠`0xFFFF` ã®é–“ã®æ•°å€¤ã
## QMK キーコード :id=qmk-keycodes
| キー | エイリアス | 説明 |
-|----------------|------------|--------------------------------------------------------|
-| `RESET` | | 書ãè¾¼ã¿ã®ãŸã‚ã«ã€ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã‚’ bootloader モードã«ã™ã‚‹ |
-| `DEBUG` | | デãƒãƒƒã‚°ãƒ¢ãƒ¼ãƒ‰ã®åˆ‡ã‚Šæ›¿ãˆ |
-| `EEPROM_RESET` | `EEP_RST` | キーボード㮠EEPROM (永続化メモリ) ã‚’å†åˆæœŸåŒ–ã™ã‚‹ |
+|-----------------|---------|--------------------------------------------------------|
+|`QK_BOOTLOADER` |`QK_BOOT`| 書ãè¾¼ã¿ã®ãŸã‚ã«ã€ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã‚’ bootloader モードã«ã™ã‚‹ |
+|`QK_DEBUG_TOGGLE`|`DB_TOGG`| デãƒãƒƒã‚°ãƒ¢ãƒ¼ãƒ‰ã®åˆ‡ã‚Šæ›¿ãˆ |
+|`QK_CLEAR_EEPROM`|`EE_CLR` | キーボード㮠EEPROM (永続化メモリ) ã‚’å†åˆæœŸåŒ–ã™ã‚‹ |
diff --git a/docs/ja/understanding_qmk.md b/docs/ja/understanding_qmk.md
index 1654f8e002..550ee3a7c0 100644
--- a/docs/ja/understanding_qmk.md
+++ b/docs/ja/understanding_qmk.md
@@ -161,7 +161,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* [`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_terminal(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/process_keycode/process_terminal.c#L264)
* [Quantum 固有ã®ã‚­ãƒ¼ã‚³ãƒ¼ãƒ‰ã‚’識別ã—ã¦å‡¦ç†ã™ã‚‹](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/quantum/quantum.c#L291)
ã“ã®ä¸€é€£ã®ã‚¤ãƒ™ãƒ³ãƒˆã®ä¸­ã®ä»»æ„ã®ã‚¹ãƒ†ãƒƒãƒ—㧠(`process_record_kb()` ã®ã‚ˆã†ãª)関数㯠`false` ã‚’è¿”ã—ã¦ã€ä»¥é™ã®å‡¦ç†ã‚’åœæ­¢ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
diff --git a/docs/keycodes.md b/docs/keycodes.md
index bd5af32dd3..d0ba8e25bf 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -219,13 +219,13 @@ See also: [Basic Keycodes](keycodes_basic.md)
See also: [Quantum Keycodes](quantum_keycodes.md#qmk-keycodes)
-|Key |Aliases |Description |
-|-----------------|---------|---------------------------------------------------------------------------------|
-|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
-|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
-|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory) |
-|`QK_MAKE` | |Sends `qmk compile -kb (keyboard) -km (keymap)`, or `qmk flash` if shift is held |
-|`QK_REBOOT` |`QK_RBT` |Resets the keyboard. Does not load the bootloader |
+|Key |Aliases |Description |
+|-----------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------|
+|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
+|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
+|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory) |
+|`QK_MAKE` | |Sends `qmk compile -kb (keyboard) -km (keymap)`, or `qmk flash` if shift is held. Puts keyboard into bootloader mode if shift & control are held |
+|`QK_REBOOT` |`QK_RBT` |Resets the keyboard. Does not load the bootloader |
## Audio Keys :id=audio-keys
@@ -337,6 +337,9 @@ See also: [Magic Keycodes](keycodes_magic.md)
|`MAGIC_SWAP_CONTROL_CAPSLOCK` |`CL_SWAP`|Swap Caps Lock and Left Control |
|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` |`CL_NORM`|Unswap Caps Lock and Left Control |
|`MAGIC_TOGGLE_CONTROL_CAPSLOCK` |`CL_TOGG`|Toggle Caps Lock and Left Control swap |
+|`MAGIC_SWAP_ESCAPE_CAPSLOCK` |`EC_SWAP`|Swap Caps Lock and Escape |
+|`MAGIC_UNSWAP_ESCAPE_CAPSLOCK` |`EC_NORM`|Unswap Caps Lock and Escape |
+|`MAGIC_TOGGLE_ESCAPE_CAPSLOCK` |`EC_TOGG`|Toggle Caps Lock and Escape swap |
|`MAGIC_CAPSLOCK_TO_CONTROL` |`CL_CTRL`|Treat Caps Lock as Control |
|`MAGIC_UNCAPSLOCK_TO_CONTROL` |`CL_CAPS`|Stop treating Caps Lock as Control |
|`MAGIC_SWAP_LCTL_LGUI` |`LCG_SWP`|Swap Left Control and GUI |
diff --git a/docs/keycodes_magic.md b/docs/keycodes_magic.md
index 01eb69168e..982a301630 100644
--- a/docs/keycodes_magic.md
+++ b/docs/keycodes_magic.md
@@ -7,6 +7,9 @@
|`MAGIC_SWAP_CONTROL_CAPSLOCK` |`CL_SWAP`|Swap Caps Lock and Left Control |
|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` |`CL_NORM`|Unswap Caps Lock and Left Control |
|`MAGIC_TOGGLE_CONTROL_CAPSLOCK` |`CL_TOGG`|Toggle Caps Lock and Left Control swap |
+|`MAGIC_SWAP_ESCAPE_CAPSLOCK` |`EC_SWAP`|Swap Caps Lock and Escape |
+|`MAGIC_UNSWAP_ESCAPE_CAPSLOCK` |`EC_NORM`|Unswap Caps Lock and Escape |
+|`MAGIC_TOGGLE_ESCAPE_CAPSLOCK` |`EC_TOGG`|Toggle Caps Lock and Escape swap |
|`MAGIC_CAPSLOCK_TO_CONTROL` |`CL_CTRL`|Treat Caps Lock as Control |
|`MAGIC_UNCAPSLOCK_TO_CONTROL` |`CL_CAPS`|Stop treating Caps Lock as Control |
|`MAGIC_SWAP_LCTL_LGUI` |`LCG_SWP`|Swap Left Control and GUI |
diff --git a/docs/keymap.md b/docs/keymap.md
index ab8a255bc3..ddcf782140 100644
--- a/docs/keymap.md
+++ b/docs/keymap.md
@@ -92,11 +92,10 @@ These keycodes allow the processing to fall through to lower layers in search of
For this example we will walk through an [older version of the default Clueboard 66% keymap](https://github.com/qmk/qmk_firmware/blob/ca01d94005f67ec4fa9528353481faa622d949ae/keyboards/clueboard/keymaps/default/keymap.c). You'll find it helpful to open that file in another browser window so you can look at everything in context.
-There are 3 main sections of a `keymap.c` file you'll want to concern yourself with:
+There are 2 main sections of a `keymap.c` file you'll want to concern yourself with:
* [The Definitions](#definitions)
* [The Layer/Keymap Datastructure](#layers-and-keymaps)
-* [Custom Functions](#custom-functions), if any
### Definitions
diff --git a/docs/newbs_building_firmware_workflow.md b/docs/newbs_building_firmware_workflow.md
new file mode 100644
index 0000000000..99b32f0b71
--- /dev/null
+++ b/docs/newbs_building_firmware_workflow.md
@@ -0,0 +1,189 @@
+# Building QMK with GitHub Userspace
+
+This is an intermediate QMK tutorial to setup an out-of-tree build environment with a personal GitHub repository. It avoids using a fork of the QMK firmware to store and build your keymap within its source tree. Keymap files will instead be stored in your own personal GitHub repository, in [Userspace](https://docs.qmk.fm/#/feature_userspace) format, and built with an action workflow. Unlike the [default tutorial](https://docs.qmk.fm/#/newbs), this guide requires some familiarity with using Git.
+
+?> **Is This Guide For Me?**<br>
+This is a lean setup to avoid space-consuming local build environment in your computer. Troubleshooting compile-time errors will be slower with commit uploads to GitHub for the compiler workflow.
+
+
+## Prerequisites
+
+The following are required to get started:
+
+* [GitHub Account](https://github.com/new)
+ * A working account is required to setup and host your repository for GitHub Actions to build QMK firmware.
+* [Text editor](newbs_learn_more_resources.md#text-editor-resources)
+ * You’ll need a program that can edit and save plain text files. The default editor that comes with many OS's does not save plain text files, so you'll need to make sure that whatever editor you chose does.
+* [Toolbox](https://github.com/qmk/qmk_toolbox)
+ * A graphical program for Windows and macOS that allows you to both program and debug your custom keyboard.
+
+
+## Environment Setup
+
+?> If you are familiar with using [github.dev](https://docs.github.com/en/codespaces/the-githubdev-web-based-editor), you can skip to [step 2](#_2-create-github-repository) and commit the code files that follows directly on GitHub using the web-based VSCode editor.
+
+### 1. Install Git
+
+A working Git client is required for your local operating system to commit and push changes to GitHub.
+
+<!-- tabs:start -->
+
+### ** Windows **
+
+QMK maintains a bundle of MSYS2, the CLI and all necessary dependencies including Git. Install [QMK MSYS](https://msys.qmk.fm/) with the latest release [here](https://github.com/qmk/qmk_distro_msys/releases/latest). Git will be part of the bundle.
+
+### ** macOS **
+
+Install Homebrew following the instructions on https://brew.sh. Git will be part of the bundle.
+
+### ** Linux/WSL **
+
+It's very likely that you already have Git installed. If not, use one of the following commands:
+
+* Debian / Ubuntu / Devuan: `sudo apt install -y git`
+* Fedora / Red Hat / CentOS: `sudo yum -y install git`
+* Arch / Manjaro: `sudo pacman --needed --noconfirm -S git`
+* Void: `sudo xbps-install -y git`
+* Solus: `sudo eopkg -y install git`
+* Sabayon: `sudo equo install dev-vcs/git`
+* Gentoo: `sudo emerge dev-vcs/git`
+
+<!-- tabs:end -->
+
+### 2. GitHub authentication
+
+If your GitHub account is not configured for [authenticated Git operations](https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/), you will need to setup at least one of the following:
+* [Personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)
+* [Connecting with SSH](https://docs.github.com/en/authentication/connecting-to-github-with-ssh)
+
+### 3. Create a repository
+
+You will need a personal GitHub repository to host your QMK code. Follow [this guide](https://docs.github.com/en/get-started/quickstart/create-a-repo#create-a-repository) to create one named `qmk_keymap`. Do not proceed to commit any files just yet.
+
+
+## Initial Code Commit
+
+### Create template files
+
+Run the following commands in your computer to create a folder with a few template files:
+```
+mkdir -p ~/qmk_keymap/.github/workflows
+touch ~/qmk_keymap/.github/workflows/build.yml
+touch ~/qmk_keymap/config.h
+echo "SRC += source.c" > ~/qmk_keymap/rules.mk
+echo "#include QMK_KEYBOARD_H" > ~/qmk_keymap/source.c
+```
+
+?> For Windows user running MSYS, those commands will create the folder `qmk_keymap/` and its content in the `C:\Users\<windows_username>\qmk_keymap\` path location.
+
+### Add a JSON keymap
+
+Visit the [QMK Configurator](https://config.qmk.fm/#/) to create a keymap file:
+
+1. Select your keyboard from the drop-down list (and choose a layout if required).
+2. Use your GitHub username for the **Keymap Name** field.
+3. Customise the key layout according to your preference.
+4. Select download next to **KEYMAP.JSON** and save the JSON file into the `~/qmk_keymap/` folder.
+
+### Add a GitHub Action workflow
+
+Open the file `~/qmk_keymap/.github/workflows/build.yml` with your favorite [text editor](newbs_learn_more_resources.md#text-editor-resources), paste the following workflow content, and save it:
+```yml
+name: Build QMK firmware
+on: [push, workflow_dispatch]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ container: qmkfm/qmk_cli
+ strategy:
+ fail-fast: false
+ matrix:
+# List of keymap json files to build
+ file:
+ - username.json
+# End of json file list
+
+ steps:
+
+ - name: Checkout QMK
+ uses: actions/checkout@v3
+ with:
+ repository: qmk/qmk_firmware
+ submodules: recursive
+
+ - name: Checkout userspace
+ uses: actions/checkout@v3
+ with:
+ path: users/${{ github.actor }}
+
+ - name: Build firmware
+ run: qmk compile "users/${{ github.actor }}/${{ matrix.file }}"
+
+ - name: Archive firmware
+ uses: actions/upload-artifact@v3
+ continue-on-error: true
+ with:
+ name: ${{ matrix.file }}_${{ github.actor }}
+ path: |
+ *.hex
+ *.bin
+ *.uf2
+```
+Replace `username.json` with the JSON file name that was downloaded from [QMK Configurator](https://config.qmk.fm/#/) in the previous step.
+
+!> Do note that the `build.yml` file requires ***proper indentation*** for every line. Incorrect spacing will trigger workflow syntax errors.
+
+### Commit files to GitHub
+
+If you have completed all steps correctly, the folder `qmk_keymap/` will contain the following files:
+```
+|-- .github
+| `-- workflows
+| `-- build.yml
+|-- rules.mk
+|-- config.h
+|-- source.c
+|-- username.json
+```
+
+To commit and push them into GitHub, run the following commands (replacing `gh-username` with your GitHub user name):
+```
+cd ~/qmk_keymap
+git init
+git add -A
+git commit -m "Initial QMK keymap commit"
+git branch -M main
+git remote add origin https://github.com/gh-username/qmk_keymap.git
+git push -u origin main
+```
+?> Use your GitHub personal access token at the password prompt. If you have setup SSH access, replace `https://github.com/gh-username/qmk_keymap.git` with `git@github.com:gh-username/qmk_keymap.git` in the remote origin command above.
+
+### Review workflow output
+
+Files committed to GitHub in the previous step will automatically trigger the workflow to build the JSON file listed in `build.yml`. To review its output:
+1. Visit your "**qmk_keymap**" repository page on [GitHub](https://github.com/).
+2. Select **Actions** tab to display the "**Build QMK Firmware**" workflow.
+3. Select that workflow to display its run from the last commit.
+4. Successfully compiled firmware will be under the "**Artifacts**" section.
+5. If there are build errors, review the job log for details.
+
+Download and flash the firmware file into your keyboard using [QMK Toolbox](https://docs.qmk.fm/#/newbs_flashing?id=flashing-your-keyboard-with-qmk-toolbox).
+
+
+## Customising your keymap
+
+This setup and workflow relies on the QMK [Userspace](https://docs.qmk.fm/#/feature_userspace) feature. The build process will copy the QMK source codes and clone your repository into its `users/` folder in a container. You must adhere to the following guidelines when customising your keymaps:
+
+* Keymap layout files must be retained in JSON format and cannot be converted to `keymap.c`.
+* User callback and functions (e.g. `process_record_user()`) can be placed in the `source.c` file.
+* Multiple keymap JSON files can be built in the same workflow. List them under `matrix.file:`, e.g.:
+```yml
+ file:
+ - planck.json
+ - crkbd.json
+```
+* Code changes will require Git commit into GitHub to trigger the build workflow.
+
+
+?> See [GitHub Actions guide](https://docs.github.com/en/actions/learn-github-actions) to learn more about development workflow.
diff --git a/docs/newbs_flashing.md b/docs/newbs_flashing.md
index 6e90af9d10..549ffcb2be 100644
--- a/docs/newbs_flashing.md
+++ b/docs/newbs_flashing.md
@@ -108,6 +108,8 @@ However, this does rely on the bootloader being set by the keyboard. If this inf
In this case, you'll have to fall back on specifying the bootloader. See the [Flashing Firmware](flashing.md) Guide for more details.
+!> If your bootloader is not detected by `qmk flash`, try running `qmk doctor` for suggestions on how to fix common problems.
+
## Test It Out!
Congrats! Your custom firmware has been programmed to your keyboard and you're ready to test it out!
diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md
index d5f92cf89d..99aee12139 100644
--- a/docs/newbs_getting_started.md
+++ b/docs/newbs_getting_started.md
@@ -27,30 +27,24 @@ QMK maintains a Bundle of MSYS2, the CLI and all necessary dependencies. It also
You will need to install [QMK MSYS](https://msys.qmk.fm/). The latest release is available [here](https://github.com/qmk/qmk_distro_msys/releases/latest).
-Alternatively, if you'd like to manually install MSYS2, the following section will walk you through the process.
-
<details>
- <summary>Manual Install</summary>
+ <summary>Advanced Users</summary>
-?> Ignore the following steps if you use `QMK MSYS`.
+!> <b style="font-size:150%">This process is not recommended for new users.</b>
-#### Prerequisites
+If you'd like to manually install MSYS2, the following sections will walk you through the process.
-You will need to install MSYS2, Git and Python. Follow the installation instructions on https://www.msys2.org.
+#### Prerequisites
-Once MSYS2 is installed, close any open MSYS terminals and open a new MinGW 64-bit terminal.
+You will need to install [MSYS2](https://www.msys2.org). Once installed, close any open MSYS terminals (purple icon) and open a new MinGW 64-bit terminal (blue icon) from the Start Menu.
!> **NOTE:** The MinGW 64-bit terminal is *not* the same as the MSYS terminal that opens when installation is completed. Your prompt should say "MINGW64" in purple text, rather than "MSYS". See [this page](https://www.msys2.org/wiki/MSYS2-introduction/#subsystems) for more information on the differences.
-Then run the following command:
-
- pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-python3-pip mingw-w64-x86_64-python-pillow
-
#### Installation
Install the QMK CLI by running:
- python3 -m pip install qmk
+ pacman --needed --noconfirm --disable-download-timeout -S git mingw-w64-x86_64-python-qmk
</details>
diff --git a/docs/newbs_learn_more_resources.md b/docs/newbs_learn_more_resources.md
index a66ee4ab26..1afdc206bd 100644
--- a/docs/newbs_learn_more_resources.md
+++ b/docs/newbs_learn_more_resources.md
@@ -20,7 +20,6 @@ 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/platformdev_blackpill_f411.md b/docs/platformdev_blackpill_f411.md
new file mode 100644
index 0000000000..9026768a01
--- /dev/null
+++ b/docs/platformdev_blackpill_f411.md
@@ -0,0 +1,48 @@
+# WeAct Blackpill (STM32F411)
+
+The WeAct Blackpill is a popular choice for handwired boards, as it offers a powerful micro controller, USB Type C, a good number of pins to use, and a large amount of firmware space. All for a ~$6 USD price tag.
+
+* [WeAct GitHub for F411 Blackpill](https://github.com/WeActTC/MiniSTM32F4x1)
+ * Unfortunately, due to supply issues official WeAct F411 based blackpills may not be available.
+
+![Blackpill F411](https://i.imgur.com/nCgeolTh.png)
+
+
+## Pin Usage Limitations
+
+While the Blackpill is a great choice to use in your keyboard, there are a number of caveats in regards to using them. The first is that a number of exposed pins cannot be used, or have special considerations/hardware tweaks that are required for proper opertion.
+
+### Unusable pins
+* Pins `A11` and `A12` are not useable because they're used for USB connection, and cannot be shared.
+ * In theory, these pins can be used. However, doing so may disable USB connectivity, outright, if used for anything other than a USB port
+* Pin `B2` is used by `BOOT1` and cannot be used, without causing problems.
+* `VBAT` is not a usable pin.
+* `NRST` is not a usable pin.
+
+### Pins to be avoided
+* Pin `A9` is meant for VBUS Sense and should not be used, if it can be avoided. It has an internal pull-down resesitor, which may cause issues with usage. However, a pull-up resistor can work (~5.1k), but should be avoided.
+* Pin `A10` can be used, but should be avoided. Any connection on this pin can prevent the bootloader from entering the proper mode for DFU flashing. A pull-up resistor (~22k) on this pin fixes the bootloader issue.
+
+### Shared Usage
+* Pin `A0` is shared with the User Key (button) on the controller. It can be used.
+* Pin `C13` is shared with the onboard LED indicator, and is connected to +3.3V. This can be used, but may cause the LED to blink intermittently, depending on activity on the pin.
+ *
+* Pins `A4`, `A5`, `A6` and `A7` are used by the SOI8 footprint on the back of the controller, that can be used for either an SPI Flash chip, or an SPI EEPROM chip. `A4` is the Chip Select pin, and cannot be shared. However, `A5`, `A6`, and `A7` are the `SCK`, `MISO`, and `MOSI` pins, respectively, and can be shared with other SPI devices.
+
+### Limited Usage
+* Pins `C13`, `C14`, and `C15` have limits on output current. They should be used only as input. Eg, they should not be used for row pins in COL2ROW matrix configurations, but can be used as column pins.
+ * This is because the column pins (in COL2ROW) are pulled up (the pullup strength is independant of the current sourcing limitation) and the ROW is driven low and sinks current, then we check the state of the COLs to look for keypresses.
+
+* Pins `A0` and `B5` are not 5V tolerant, and should only be used with 3.3V compatible functionality.
+
+## Additional Information
+
+### Bootloader issuse
+
+Due to the use of a 25MHz crystal, the controller may have issues entering the bootloader. Heating up the controller can help with this issue.
+
+Also, if pin `A10` is connected to anything at all, it needs to have a pullup resistor (see [Pins to be avoided](#pins-to-be-avoided), above)
+
+### Tiny UF2 Support
+
+There is [tinyuf2 support for the WeAct Blackpill](https://github.com/adafruit/tinyuf2/tree/master/ports/stm32f4/boards/stm32f411ce_blackpill). Instructions on how to compile the bootloadr can be found [here](https://github.com/adafruit/tinyuf2#build-and-flash). Setting `BOOTLOADER = tinyuf2` will enable support for this user bootloader, and the correct configuration to prevent it from being overwritten when flashing firmware.
diff --git a/docs/platformdev_chibios_earlyinit.md b/docs/platformdev_chibios_earlyinit.md
index aaa91ba438..bc49247222 100644
--- a/docs/platformdev_chibios_earlyinit.md
+++ b/docs/platformdev_chibios_earlyinit.md
@@ -12,7 +12,7 @@ The function `early_hardware_init_pre` is the earliest possible code that can be
This is executed before RAM gets cleared, and before clocks or GPIOs are configured; for example, ChibiOS delays are not likely to work at this point. After executing this function, RAM on the MCU may be zero'ed. Assigning values to variables during execution of this function may be overwritten.
-As such, if you wish to override this API consider limiting use to writing to low-level registers. The default implementation of this function can be configured to jump to bootloader if a `RESET` key was pressed:
+As such, if you wish to override this API consider limiting use to writing to low-level registers. The default implementation of this function can be configured to jump to bootloader if a `QK_BOOT` key was pressed:
| `config.h` override | Description | Default |
|-----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|
@@ -20,7 +20,7 @@ As such, if you wish to override this API consider limiting use to writing to lo
| `#define STM32_BOOTLOADER_DUAL_BANK` | Relevant for dual-bank STM32 MCUs, signifies that a GPIO is to be toggled in order to enter bootloader mode. | `FALSE` |
| `#define STM32_BOOTLOADER_DUAL_BANK_GPIO` | Relevant for dual-bank STM32 MCUs, the pin to toggle when attempting to enter bootloader mode, e.g. `B8` | `<none>` |
| `#define STM32_BOOTLOADER_DUAL_BANK_POLARITY` | Relevant for dual-bank STM32 MCUs, the value to set the pin to in order to trigger charging of the RC circuit. e.g. `0` or `1`. | `0` |
-| `#define STM32_BOOTLOADER_DUAL_BANK_DELAY` | Relevant for dual-bank STM32 MCUs, an arbitrary measurement of time to delay before resetting the MCU. Increasing number increases the delay. | `100000` |
+| `#define STM32_BOOTLOADER_DUAL_BANK_DELAY` | Relevant for dual-bank STM32 MCUs, an arbitrary measurement of time to delay before resetting the MCU. Increasing number increases the delay. | `100` |
Kinetis MCUs have no configurable options.
diff --git a/docs/platformdev_proton_c.md b/docs/platformdev_proton_c.md
new file mode 100644
index 0000000000..3afec893fa
--- /dev/null
+++ b/docs/platformdev_proton_c.md
@@ -0,0 +1,77 @@
+# Proton C
+
+The Proton C is an Arm STM32F303xC based drop-in replacement for the Pro Micro.
+
+<img src="https://i.imgur.com/GdsN1Rdh.jpg" alt="Proton C" />
+
+#### Features
+
+* Through-hole mounted USB-C Port
+* 32-bit 72MHz Cortex-M4 processor (STM32F303CCT6)
+* I2C, SPI, PWM, DMA, DAC, USART, I2S
+* 23x 3.3V I/O Ports
+* 1x 5V output for WS2812 LED chains
+* 256kB flash
+* 40kB RAM
+* AST1109MLTRQ speaker footprint
+* Reset button
+
+## Warnings
+
+Some of the PCBs compatible with Pro Micro have VCC (3.3V) and RAW (5V) pins connected (shorted) on the pcb. Using the Proton C will short 5V power from USB and regulated 3.3V which is connected directly to the MCU. Shorting those pins may damage the MCU on the Proton C.
+
+So far, it appears that this is only an issue on the Gherkin PCBs, but other PCBs may be affected in this way.
+
+In this case, you may want to not hook up the RAW pin at all.
+
+## Manual Conversion
+
+To use the Proton C natively, without having to specify `CONVERT_TO=proton_c`, you need to change the `MCU` line in `rules.mk`:
+
+```
+MCU = STM32F303
+BOARD = QMK_PROTON_C
+```
+
+Remove these variables if they exist:
+
+* `BOOTLOADER`
+* `EXTRA_FLAGS`
+
+Finally convert all pin assignments in `config.h` to the stm32 equivalents.
+
+| Pro Micro Left | Proton C Left | | Proton C Right | Pro Micro Right |
+|-----------|----------|-|----------|-----------|
+| `D3` | `A9` | | 5v | RAW (5v) |
+| `D2` | `A10` | | GND | GND |
+| GND | GND | | FLASH | RESET |
+| GND | GND | | 3.3v | VCC <sup>1</sup> |
+| `D1` | `B7` | | `A2` | `F4` |
+| `D0` | `B6` | | `A1` | `F5` |
+| `D4` | `B5` | | `A0` | `F6` |
+| `C6` | `B4` | | `B8` | `F7` |
+| `D7` | `B3` | | `B13` | `B1` |
+| `E6` | `B2` | | `B14` | `B3` |
+| `B4` | `B1` | | `B15` | `B2` |
+| `B5` | `B0` | | `B9` | `B6` |
+| `B0` (RX LED) | `C13` <sup>2</sup> | | `C13` <sup>2</sup> | `D5` (TX LED) |
+
+You can also make use of several new pins on the extended portion of the Proton C:
+
+| Left | | Right |
+|------|-|-------|
+| `A4`<sup>3</sup> | | `B10` |
+| `A5`<sup>4</sup> | | `B11` |
+| `A6` | | `B12` |
+| `A7` | | `A14`<sup>5</sup> (SWCLK) |
+| `A8` | | `A13`<sup>5</sup> (SWDIO) |
+| `A15` | | RESET<sup>6</sup> |
+
+Notes:
+
+1. On a Pro Micro VCC can be 3.3v or 5v.
+2. A Proton C only has one onboard LED, not two like a Pro Micro. The Pro Micro has an RX LED on `D5` and a TX LED on `B0`.
+3. `A4` is shared with the speaker.
+4. `A5` is shared with the speaker.
+5. `A13` and `A14` are used for hardware debugging (SWD). You can also use them for GPIO, but should use them last.
+6. Short RESET to 3.3v (pull high) to reboot the MCU. This does not enter bootloader mode like a Pro Micro, it only resets the MCU.
diff --git a/docs/platformdev_rp2040.md b/docs/platformdev_rp2040.md
new file mode 100644
index 0000000000..d690ebebf8
--- /dev/null
+++ b/docs/platformdev_rp2040.md
@@ -0,0 +1,125 @@
+# Raspberry Pi RP2040
+
+The following table shows the current driver status for peripherals on RP2040 MCUs:
+
+| System | Support |
+| ---------------------------------------------------------------- | ---------------------------------------------- |
+| [ADC driver](adc_driver.md) | Support planned (no ETA) |
+| [Audio](audio_driver.md) | Support planned (no ETA) |
+| [I2C driver](i2c_driver.md) | :heavy_check_mark: |
+| [SPI driver](spi_driver.md) | :heavy_check_mark: |
+| [WS2812 driver](ws2812_driver.md) | :heavy_check_mark: using `PIO` driver |
+| [External EEPROMs](eeprom_driver.md) | :heavy_check_mark: using `I2C` or `SPI` driver |
+| [EEPROM emulation](eeprom_driver.md#wear_leveling-configuration) | :heavy_check_mark: |
+| [serial driver](serial_driver.md) | :heavy_check_mark: using `SIO` or `PIO` driver |
+| [UART driver](uart_driver.md) | Support planned (no ETA) |
+
+## GPIO
+
+<img alt="Raspberry Pi Pico pinout" src="https://i.imgur.com/nLaiYDE.jpg" width="48%"/>
+<img alt="Sparkfun RP2040 Pro Micro pinout" src="https://i.imgur.com/1TPAhrs.jpg" width="48%"/>
+
+!> The GPIO pins of the RP2040 are not 5V tolerant!
+
+### Pin nomenclature
+
+To address individual pins on the RP2040, QMK uses the `GPx` abbreviation -- where the `x` stands for the GPIO number of the pin. This number can likely be found on the official pinout diagram of your board. Note that these GPIO numbers match the RP2040 MCU datasheet, and don't necessarily match the number you see printed on the board. For instance the Raspberry Pi Pico uses numbers from 1 to 40 for their pins, but these are not identical to the RP2040's GPIO numbers. So if you want to use the pin 11 of the Pico for your keyboard, you would refer to it as `GP8` in the config files.
+
+### Alternate functions
+
+The RP2040 features flexible GPIO function multiplexing, this means that every pin can be connected to nearly all the internal peripherals like I2C, SPI, UART or PWM. This allows for flexible PCB designs that are much less restricted in the selection of GPIO pins. To find out which pin can use which peripheral refer to the official [Raspberry PI RP2040 datasheet](https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#page=14) section 1.4.3 GPIO functions.
+
+## Selecting hardware peripherals and drivers
+
+QMK RP2040 support builds upon ChibiOS and thus follows their convention for activating drivers and associated hardware peripherals. These tables only give a quick overview which values have to be used, please refer to the ChibiOS specific sections on the driver pages.
+
+### I2C Driver
+
+| RP2040 Peripheral | `mcuconf.h` values | `I2C_DRIVER` |
+| ----------------- | ------------------ | ------------ |
+| `I2C0` | `RP_I2C_USE_I2C0` | `I2CD1` |
+| `I2C1` | `RP_I2C_USE_I2C1` | `I2CD2` |
+
+To configure the I2C driver please read the [ChibiOS/ARM](i2c_driver.md#arm-configuration) section.
+
+### SPI Driver
+
+| RP2040 Peripheral | `mcuconf.h` values | `SPI_DRIVER` |
+| ----------------- | ------------------ | ------------ |
+| `SPI0` | `RP_SPI_USE_SPI0` | `SPID0` |
+| `SPI1` | `RP_SPI_USE_SPI1` | `SPID1` |
+
+To configure the SPI driver please read the [ChibiOS/ARM](spi_driver.md#chibiosarm-configuration) section.
+
+## Double-tap reset boot-loader entry :id=double-tap
+
+The double-tap reset mechanism is an alternate way in QMK to enter the embedded mass storage UF2 boot-loader of the RP2040. It enables bootloader entry by a fast double-tap of the reset pin on start up, which is similar to the behavior of AVR Pro Micros. This feature activated by default for the Pro Micro RP2040 board, but has to be configured for other boards. To activate it, add the following options to your keyboards `config.h` file:
+
+```c
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // Timeout window in ms in which the double tap can occur.
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U // Specify a optional status led which blinks when entering the bootloader
+```
+
+## Pre-defined RP2040 boards
+
+QMK defines two boards that you can choose from to base your RP2040 powered keyboard upon. These boards provide pre-configured default pins and drivers.
+
+### Generic Pro Micro RP2040
+
+This is the default board that is chosen, unless any other RP2040 board is selected in your keyboards `rules.mk` file. It assumes a pin layout for the I2C, SPI and Serial drivers which is identical to the Sparkfun Pro Micro RP2040, however all values can be overwritten by defining them in your keyboards `config.h` file. The [double-tap](#double-tap) reset to enter boot-loader behavior is activated by default.
+
+
+| Driver configuration define | Value |
+| -------------------------------------------------------------------------- | ------------------------------------ |
+| **I2C driver** | |
+| `I2C_DRIVER` | `I2CD2` |
+| `I2C1_SDA_PIN` | `GP2` |
+| `I2C1_SCL_PIN` | `GP3` |
+| **SPI driver** | |
+| `SPI_DRIVER` | `SPID0` |
+| `SPI_SCK_PIN` | `GP18` |
+| `SPI_MISO_PIN` | `GP20` |
+| `SPI_MOSI_PIN` | `GP19` |
+| **Serial driver** | |
+| `SERIAL_USART_DRIVER` ([SIO Driver](serial_driver.md#the-sio-driver) only) | `SIOD0` |
+| `SOFT_SERIAL_PIN` | undefined, use `SERIAL_USART_TX_PIN` |
+| `SERIAL_USART_TX_PIN` | `GP0` |
+| `SERIAL_USART_RX_PIN` | `GP1` |
+
+?> The pin-outs of Adafruit's KB2040 and Boardsource's Blok both deviate from the Sparkfun Pro Micro RP2040. Lookup the pin-out of these boards and adjust your keyboards pin definition accordingly if you want to use these boards.
+
+### Generic RP2040 board
+
+This board can be chosen as a base for RP2040 keyboards which configure all necessary pins and drivers themselves and do not wish to leverage the configuration matching the Generic Pro Micro RP2040 board. Thus it doesn't provide any pre-configured pins or drivers. To select this board add the following line to your keyboards `rules.mk` file.
+
+```make
+BOARD = GENERIC_RP_RP2040
+```
+
+## Split keyboard support
+
+Split keyboards are fully supported using the [serial driver](serial_driver.md) in both full-duplex and half-duplex configurations. Two driver subsystems are supported by the RP2040, the hardware UART based `SIO` and the Programmable IO based `PIO` driver.
+
+| Feature | [SIO Driver](serial_driver.md#the-sio-driver) | [PIO Driver](serial_driver.md#the-pio-driver) |
+| ----------------------------- | --------------------------------------------- | --------------------------------------------- |
+| Half-Duplex operation | | :heavy_check_mark: |
+| Full-Duplex operation | :heavy_check_mark: | :heavy_check_mark: |
+| `TX` and `RX` pin swapping | | :heavy_check_mark: |
+| Any GPIO as `TX` and `RX` pin | Only UART capable pins | :heavy_check_mark: |
+| Simple configuration | | :heavy_check_mark: |
+
+The `PIO` driver is much more flexible then the `SIO` driver, the only "downside" is the usage of `PIO` resources which in turn are not available for advanced user programs. Under normal circumstances, this resource allocation will be a non-issue.
+
+## RP2040 second stage bootloader selection
+
+As the RP2040 does not have any internal flash memory it depends on an external SPI flash memory chip to store and execute instructions from. To successfully interact with a wide variety of these chips a second stage bootloader that is compatible with the chosen external flash memory has to be supplied with each firmware image. By default an `W25Q080` compatible bootloader is assumed, but others can be chosen by adding one of the defines listed in the table below to your keyboards `config.h` file.
+
+| Compatible with flash chip | Selection |
+| :------------------------- | ---------------------------------- |
+| W25Q080 | Selected by default |
+| AT25SF128A | `#define RP2040_FLASH_AT25SF128A` |
+| GD25Q64CS | `#define RP2040_FLASH_GD25Q64CS` |
+| W25X10CL | `#define RP2040_FLASH_W25X10CL` |
+| IS25LP080 | `#define RP2040_FLASH_IS25LP080` |
+| Generic 03H flash | `#define RP2040_FLASH_GENERIC_03H` |
diff --git a/docs/pr_checklist.md b/docs/pr_checklist.md
index f55517dfa2..6d74e246a8 100644
--- a/docs/pr_checklist.md
+++ b/docs/pr_checklist.md
@@ -46,9 +46,15 @@ Closed PRs (for inspiration, previous sets of review comments will help you elim
https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- `info.json`
- - valid URL
- - valid maintainer
- - displays correctly in Configurator (press Ctrl+Shift+I to preview local file, turn on fast input to verify ordering)
+ - With the move to [data driven](https://docs.qmk.fm/#/data_driven_config) keyboard configuration, we encourage contributors to utilise as many features as possible of the info.json [schema](https://github.com/qmk/qmk_firmware/blob/master/data/schemas/keyboard.jsonschema).
+ - the mandatory elements for a minimally complete `info.json` at present are:
+ - valid URL
+ - valid maintainer
+ - valid USB VID/PID and device version
+ - displays correctly in Configurator (press Ctrl+Shift+I to preview local file, turn on fast input to verify ordering)
+ - `layout` definitions should include matrix positions, so that `LAYOUT` macros can be generated at build time
+ - should use standard definitions if applicable
+ - use the Community Layout macro names where they apply (preferred above `LAYOUT`/`LAYOUT_all`)
- `readme.md`
- standard template should be present -- [link to template](https://github.com/qmk/qmk_firmware/blob/master/data/templates/keyboard/readme.md)
- flash command is present, and has `:flash` at end
@@ -57,12 +63,16 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- a picture about the keyboard and preferably about the PCB, too
- images are not to be placed in the `qmk_firmware` repository
- images should be uploaded to an external image hosting service, such as [imgur](https://imgur.com/).
+ - if imgur is used, images should be resized appropriately: append "h" to the image url i.e. `https://i.imgur.com/vqgE7Ok.jpg` becomes `https://i.imgur.com/vqgE7Okh.jpg`
- `rules.mk`
- removed `MIDI_ENABLE`, `FAUXCLICKY_ENABLE` and `HD44780_ENABLE`
- modified `# Enable Bluetooth with the Adafruit EZ-Key HID` -> `# Enable Bluetooth`
- no `(-/+size)` comments related to enabling features
- remove the list of alternate bootloaders if one has been specified
- no re-definitions of the default MCU parameters if same value, when compared to the equivalent MCU in [mcu_selection.mk](https://github.com/qmk/qmk_firmware/blob/master/builddefs/mcu_selection.mk)
+ - no "keymap only" features enabled
+ - `COMBO_ENABLE`
+ - `ENCODER_MAP_ENABLE`
- keyboard `config.h`
- don't repeat `MANUFACTURER` in the `PRODUCT` value
- no `#define DESCRIPTION`
@@ -75,14 +85,15 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- Vial-related files or changes will not be accepted, as they are not used by QMK firmware (no Vial-specific core code has been submitted or merged)
- `<keyboard>.c`
- empty `xxxx_xxxx_kb()` or other weak-defined default implemented functions removed
+ - empty `xxxx_xxxx_user()` or other user-level functions are disallowed at the keyboard level and must be moved to keymaps
- commented-out functions removed too
- `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
+ - Encoder support should not require any keyboard-level code, and associated keymaps should now leverage the [Encoder Map](feature_encoders.md?id=encoder-map) feature instead.
- `<keyboard>.h`
- `#include "quantum.h"` appears at the top
- - `LAYOUT` macros should use standard definitions if applicable
- - use the Community Layout macro names where they apply (preferred above `LAYOUT`/`LAYOUT_all`)
+ - `LAYOUT` macros should be moved to `info.json`
- keymap `config.h`
- no duplication of `rules.mk` or `config.h` from keyboard
- `keymaps/default/keymap.c`
@@ -101,7 +112,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- submitters can have a personal (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap
- submitters can also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board
- Do not include VIA json files in the PR. These do not belong in the QMK repository as they are not used by QMK firmware -- they belong in the [VIA Keyboard Repo](https://github.com/the-via/keyboards)
-- Do not include source files from another keyboard or vendors keyboard folder. Including core files is fine.
+- Do not include source files from another keyboard or vendors keyboard folder. Including core files is fine.
- For instance, only `wilba_tech` boards using be including `keyboards/wilba_tech/wt_main.c` and `keyboards/wilba_tech/wt_rgb_backlight.c`. But including `drivers/sensors/pmw3360.c` is absolutely fine.
- Code that needs to be used by multiple boards is a candidate for core code changes, and should be separated out.
@@ -124,6 +135,7 @@ Also, specific to ChibiOS:
- 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
+- any features adding `_kb`/`_user` callbacks must return a `bool`, to allow for user override of keyboard-level callbacks.
- other requirements are at the discretion of QMK collaborators
- core is a lot more subjective given the breadth of posted changes
diff --git a/docs/proton_c_conversion.md b/docs/proton_c_conversion.md
deleted file mode 100644
index 1e1b1e806d..0000000000
--- a/docs/proton_c_conversion.md
+++ /dev/null
@@ -1,91 +0,0 @@
-# Converting a board to use the Proton C
-
-Since the Proton C is a drop-in replacement for a Pro Micro we've made it easy to use. This page documents a handy automated process for converting keyboards, as well as documenting the manual process if you'd like to make use of Proton C features that aren't available on Pro Micros.
-
-## Automatic Conversion
-
-If a board currently supported in QMK uses a Pro Micro (or compatible board) and you want to use the Proton C, you can generate the firmware by appending `CONVERT_TO_PROTON_C=yes` (or `CTPC=yes`) to your make argument, like this:
-
- make 40percentclub/mf68:default CTPC=yes
-
-You can add the same argument to your keymap's `rules.mk`, which will accomplish the same thing.
-
-This exposes the `CONVERT_TO_PROTON_C` flag that you can use in your code with `#ifdef`s, like this:
-
-```c
-#ifdef CONVERT_TO_PROTON_C
- // Proton C code
-#else
- // Pro Micro code
-#endif
-```
-
-If you get errors about `PORTB/DDRB`, etc not being defined, so you'll need to convert the keyboard's code to use the [GPIO Controls](gpio_control.md) that will work for both ARM and AVR. This shouldn't affect the AVR builds at all.
-
-The Proton C only has one on-board LED (C13), and by default, the TXLED (D5) is mapped to it. If you want the RXLED (B0) mapped to it instead, add this like to your `config.h`:
-
- #define CONVERT_TO_PROTON_C_RXLED
-
-## Feature Conversion
-
-These are defaults based on what has been implemented for ARM boards.
-
-| Feature | Notes |
-|-------------------------------------|------------------------------------------------------------------------------------------------------------------|
-| [Audio](feature_audio.md) | Enabled |
-| [RGB Lighting](feature_rgblight.md) | Disabled |
-| [Backlight](feature_backlight.md) | Forces [task driven PWM](feature_backlight.md#software-pwm-driver) until ARM can provide automatic configuration |
-| USB Host (e.g. USB-USB converter) | Not supported (USB host code is AVR specific and is not currently supported on ARM) |
-| [Split keyboards](feature_split_keyboard.md) | Partial - heavily dependent on enabled features |
-
-## Manual Conversion
-
-To use the Proton C natively, without having to specify `CTPC=yes`, you need to change the `MCU` line in `rules.mk`:
-
-```
-MCU = STM32F303
-BOARD = QMK_PROTON_C
-```
-
-Remove these variables if they exist:
-
-* `BOOTLOADER`
-* `EXTRA_FLAGS`
-
-Finally convert all pin assignments in `config.h` to the stm32 equivalents.
-
-| Pro Micro Left | Proton C Left | | Proton C Right | Pro Micro Right |
-|-----------|----------|-|----------|-----------|
-| `D3` | `A9` | | 5v | RAW (5v) |
-| `D2` | `A10` | | GND | GND |
-| GND | GND | | FLASH | RESET |
-| GND | GND | | 3.3v | VCC <sup>1</sup> |
-| `D1` | `B7` | | `A2` | `F4` |
-| `D0` | `B6` | | `A1` | `F5` |
-| `D4` | `B5` | | `A0` | `F6` |
-| `C6` | `B4` | | `B8` | `F7` |
-| `D7` | `B3` | | `B13` | `B1` |
-| `E6` | `B2` | | `B14` | `B3` |
-| `B4` | `B1` | | `B15` | `B2` |
-| `B5` | `B0` | | `B9` | `B6` |
-| `B0` (RX LED) | `C13` <sup>2</sup> | | `C13` <sup>2</sup> | `D5` (TX LED) |
-
-You can also make use of several new pins on the extended portion of the Proton C:
-
-| Left | | Right |
-|------|-|-------|
-| `A4`<sup>3</sup> | | `B10` |
-| `A5`<sup>4</sup> | | `B11` |
-| `A6` | | `B12` |
-| `A7` | | `A14`<sup>5</sup> (SWCLK) |
-| `A8` | | `A13`<sup>5</sup> (SWDIO) |
-| `A15` | | RESET<sup>6</sup> |
-
-Notes:
-
-1. On a Pro Micro VCC can be 3.3v or 5v.
-2. A Proton C only has one onboard LED, not two like a Pro Micro. The Pro Micro has an RX LED on `D5` and a TX LED on `B0`.
-3. `A4` is shared with the speaker.
-4. `A5` is shared with the speaker.
-5. `A13` and `A14` are used for hardware debugging (SWD). You can also use them for GPIO, but should use them last.
-6. Short RESET to 3.3v (pull high) to reboot the MCU. This does not enter bootloader mode like a Pro Micro, it only resets the MCU.
diff --git a/docs/quantum_keycodes.md b/docs/quantum_keycodes.md
index a1923777ef..bc68cbc922 100644
--- a/docs/quantum_keycodes.md
+++ b/docs/quantum_keycodes.md
@@ -8,10 +8,10 @@ On this page we have documented keycodes between `0x00FF` and `0xFFFF` which are
## QMK Keycodes :id=qmk-keycodes
-|Key |Aliases |Description |
-|-----------------|---------|---------------------------------------------------------------------------------|
-|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
-|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
-|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory) |
-|`QK_MAKE` | |Sends `qmk compile -kb (keyboard) -km (keymap)`, or `qmk flash` if shift is held |
-|`QK_REBOOT` |`QK_RBT` |Resets the keyboard. Does not load the bootloader |
+|Key |Aliases |Description |
+|-----------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------|
+|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
+|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
+|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory) |
+|`QK_MAKE` | |Sends `qmk compile -kb (keyboard) -km (keymap)`, or `qmk flash` if shift is held. Puts keyboard into bootloader mode if shift & control are held |
+|`QK_REBOOT` |`QK_RBT` |Resets the keyboard. Does not load the bootloader |
diff --git a/docs/quantum_painter.md b/docs/quantum_painter.md
index a3705b62ce..6d4e2764d4 100644
--- a/docs/quantum_painter.md
+++ b/docs/quantum_painter.md
@@ -24,8 +24,10 @@ Hardware supported:
| GC9A01 | RGB LCD (circular) | 240x240 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = gc9a01_spi` |
| ILI9163 | RGB LCD | 128x128 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = ili9163_spi` |
| ILI9341 | RGB LCD | 240x320 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = ili9341_spi` |
+| ILI9488 | RGB LCD | 320x480 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = ili9488_spi` |
| SSD1351 | RGB OLED | 128x128 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = ssd1351_spi` |
| ST7789 | RGB LCD | 240x320, 240x240 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = st7789_spi` |
+| ST7735 | RGB LCD | 132x162, 80x160 | SPI + D/C + RST | `QUANTUM_PAINTER_DRIVERS = st7735_spi` |
## Quantum Painter Configuration :id=quantum-painter-config
@@ -654,6 +656,30 @@ The maximum number of displays can be configured by changing the following in yo
#define ILI9341_NUM_DEVICES 3
```
+### ILI9488 :id=qp-driver-ili9488
+
+Enabling support for the ILI9488 in Quantum Painter is done by adding the following to `rules.mk`:
+
+```make
+QUANTUM_PAINTER_ENABLE = yes
+QUANTUM_PAINTER_DRIVERS = ili9488_spi
+```
+
+Creating a ILI9488 device in firmware can then be done with the following API:
+
+```c
+painter_device_t qp_ili9488_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
+```
+
+The device handle returned from the `qp_ili9488_make_spi_device` function can be used to perform all other drawing operations.
+
+The maximum number of displays can be configured by changing the following in your `config.h` (default is 1):
+
+```c
+// 3 displays:
+#define ILI9488_NUM_DEVICES 3
+```
+
### SSD1351 :id=qp-driver-ssd1351
Enabling support for the SSD1351 in Quantum Painter is done by adding the following to `rules.mk`:
@@ -702,4 +728,30 @@ The maximum number of displays can be configured by changing the following in yo
#define ST7789_NUM_DEVICES 3
```
-!> Some ST7789 devices are known to have different drawing offsets -- despite being a 240x320 pixel display controller internally, some display panels are only 240x240, or smaller. These may require an offset to be applied; see `qp_set_viewport_offsets` above for information on how to override the offsets if they aren't correctly rendered. \ No newline at end of file
+!> Some ST7789 devices are known to have different drawing offsets -- despite being a 240x320 pixel display controller internally, some display panels are only 240x240, or smaller. These may require an offset to be applied; see `qp_set_viewport_offsets` above for information on how to override the offsets if they aren't correctly rendered.
+
+### ST7735 :id=qp-driver-st7735
+
+Enabling support for the ST7735 in Quantum Painter is done by adding the following to `rules.mk`:
+
+```make
+QUANTUM_PAINTER_ENABLE = yes
+QUANTUM_PAINTER_DRIVERS = st7735_spi
+```
+
+Creating a ST7735 device in firmware can then be done with the following API:
+
+```c
+painter_device_t qp_st7735_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
+```
+
+The device handle returned from the `qp_st7735_make_spi_device` function can be used to perform all other drawing operations.
+
+The maximum number of displays can be configured by changing the following in your `config.h` (default is 1):
+
+```c
+// 3 displays:
+#define ST7735_NUM_DEVICES 3
+```
+
+!> Some ST7735 devices are known to have different drawing offsets -- despite being a 132x162 pixel display controller internally, some display panels are only 80x160, or smaller. These may require an offset to be applied; see `qp_set_viewport_offsets` above for information on how to override the offsets if they aren't correctly rendered. \ No newline at end of file
diff --git a/docs/reference_info_json.md b/docs/reference_info_json.md
index 90b28689d0..52f16b4401 100644
--- a/docs/reference_info_json.md
+++ b/docs/reference_info_json.md
@@ -108,7 +108,58 @@ Example:
}
```
-### RGB Lighting
+## Non-RGB LED Lighting
+
+This section controls basic 2-pin LEDs, which typically pass through keyswitches and are soldered into the PCB, or are placed in PCB sockets.
+### Backlight
+
+* `breathing`
+ * Enable backlight breathing, if supported
+* `breathing_period`
+ * The length of one backlight “breath†in seconds
+* `levels`
+ * The number of brightness levels (maximum 31, excluding off)
+* `pin`
+ * The pin that controls the backlight LED(s)
+
+Example:
+
+```json
+{
+ "backlight": {
+ "breathing": true,
+ "breathing_period": 5,
+ "levels": 15,
+ "pin": "B7"
+ }
+}
+```
+
+### LED Indicators
+
+Used for indicating Num Lock, Caps Lock, and Scroll Lock. May be soldered in-switch or in a dedicated area.
+
+* `num_lock`
+ * The pin that controls the `Num Lock` LED
+* `caps_lock`
+ * The pin that controls the `Caps Lock` LED
+* `scroll_lock`
+ * The pin that controls the `Scroll Lock` LED
+
+Example:
+
+```json
+{
+ "indicators": {
+ "num_lock": "B6",
+ "caps_lock": "D2",
+ "scroll_lock": "A3"
+ }
+}
+
+```
+
+## RGB Lighting
This section controls the legacy WS2812 support in QMK. This should not be confused with the RGB Matrix feature, which can be used to control both WS2812 and ISSI RGB LEDs.
@@ -152,7 +203,7 @@ Example:
}
```
-#### RGBLight Animations
+### RGBLight Animations
The following animations can be enabled:
@@ -187,3 +238,61 @@ Example:
```
The device version is a BCD (binary coded decimal) value, in the format `MMmr`, so the below value would look like `0x0100` in the generated code. This also means the maximum valid values for each part are `99.9.9`, despite it being a hexadecimal value under the hood.
+
+### Encoders
+
+This section controls the basic [rotary encoder](feature_encoders.md) support.
+
+The following items can be set. Not every value is required.
+
+* `pin_a`
+ * __Required__. A pad definition
+* `pin_b`
+ * __Required__. B pad definition
+* `resolution`
+ * How many pulses the encoder registers between each detent
+
+Examples:
+
+```json
+{
+ "encoder": {
+ "rotary": [
+ { "pin_a": "B5", "pin_b": "A2" }
+ ]
+ }
+}
+```
+
+```json
+{
+ "encoder": {
+ "rotary": [
+ { "pin_a": "B5", "pin_b": "A2", "resolution": 4 }
+ { "pin_a": "B6", "pin_b": "A3", "resolution": 2 }
+ ]
+ }
+}
+```
+
+### Secure
+
+The following options can be configured:
+
+|Key |Description |
+|------------------|---------------------------------------------------------------------------------|
+|`unlock_sequence` | Timeout for the user to perform the configured unlock sequence - `0` to disable |
+|`unlock_timeout` | Timeout while unlocked before returning to locked - `0` to disable |
+|`idle_timeout` | Array of matrix locations describing a sequential sequence of keypresses |
+
+Example:
+
+```json
+{
+ "secure": {
+ "unlock_sequence": [ [0,0], [0,1] ],
+ "unlock_timeout": 5000,
+ "idle_timeout": 60000
+ }
+}
+```
diff --git a/docs/serial_driver.md b/docs/serial_driver.md
index 3e89deffad..fff63109a1 100644
--- a/docs/serial_driver.md
+++ b/docs/serial_driver.md
@@ -1,129 +1,301 @@
# 'serial' Driver
-This driver powers the [Split Keyboard](feature_split_keyboard.md) feature.
+
+The serial driver powers the [Split Keyboard](feature_split_keyboard.md) feature. Several implementations are available, depending on the platform of your split keyboard. Note that none of the drivers support split keyboards with more then two halves.
+
+| Driver | AVR | ARM | Connection between halves |
+| --------------------------------------- | ------------------ | ------------------ | --------------------------------------------------------------------------------------------- |
+| [Bitbang](#bitbang) | :heavy_check_mark: | :heavy_check_mark: | Single wire communication. One wire is used for reception and transmission. |
+| [USART Half-duplex](#usart-half-duplex) | | :heavy_check_mark: | Efficient single wire communication. One wire is used for reception and transmission. |
+| [USART Full-duplex](#usart-full-duplex) | | :heavy_check_mark: | Efficient two wire communication. Two distinct wires are used for reception and transmission. |
?> Serial in this context should be read as **sending information one bit at a time**, rather than implementing UART/USART/RS485/RS232 standards.
-Drivers in this category have the following characteristics:
-* bit bang and USART Half-duplex provide data and signaling over a single conductor
-* USART Full-duplex provide data and signaling over two conductors
-* They are all limited to single master and single slave communication scheme
+<hr>
+
+## Bitbang
+
+This is the Default driver, the absence of configuration assumes this driver. It works by [bit banging](https://en.wikipedia.org/wiki/Bit_banging) a GPIO pin using the CPU. It is therefore not as efficient as a dedicated hardware peripheral, which the Half-duplex and Full-duplex drivers use.
-## Supported Driver Types
+!> On ARM platforms the bitbang driver causes connection issues when using it together with the bitbang WS2812 driver. Choosing alternate drivers for both serial and WS2812 (instead of bitbang) is strongly recommended.
-| | AVR | ARM |
-| ----------------- | ------------------ | ------------------ |
-| bit bang | :heavy_check_mark: | :heavy_check_mark: |
-| USART Half-duplex | | :heavy_check_mark: |
-| USART Full-duplex | | :heavy_check_mark: |
+### Pin configuration
+
+```
+ LEFT RIGHT
++-------+ SERIAL +-------+
+| SSP |-----------------| SSP |
+| | VDD | |
+| |-----------------| |
+| | GND | |
+| |-----------------| |
++-------+ +-------+
+```
-## Driver configuration
+One GPIO pin is needed for the bitbang driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SOFT_SERIAL_PIN` (SSP) in the configuration. A simple TRS or USB cable provides enough conductors for this driver to work.
-### Bitbang
-Default driver, the absence of configuration assumes this driver. To configure it, add this to your rules.mk:
+### Setup
+
+To use the bitbang driver follow these steps to activate it.
+
+1. Change the `SERIAL_DRIVER` to `bitbang` in your keyboards `rules.mk` file:
```make
SERIAL_DRIVER = bitbang
```
-Configure the driver via your config.h:
+2. Configure the GPIO pin of your keyboard via the `config.h` file:
+
```c
#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
-#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5
- // 0: about 189kbps (Experimental only)
- // 1: about 137kbps (default)
- // 2: about 75kbps
- // 3: about 39kbps
- // 4: about 26kbps
- // 5: about 20kbps
```
-#### ARM
+3. On ARM platforms you must turn on ChibiOS `PAL_USE_CALLBACKS` feature:
+
+* In `halconf.h` add the line `#define PAL_USE_CALLBACKS TRUE`.
+
+<hr>
+
+## USART Half-duplex
+
+Targeting ARM boards based on ChibiOS, where communication is offloaded to a USART hardware device that supports Half-duplex operation. The advantages over bitbanging are fast, accurate timings and reduced CPU usage. Therefore it is advised to choose this driver or the Full-duplex driver whenever possible.
+
+### Pin configuration
+
+```
+ LEFT RIGHT
++-------+ | | +-------+
+| | R R | |
+| | | SERIAL | | |
+| TX |-----------------| TX |
+| | VDD | |
+| |-----------------| |
+| | GND | |
+| |-----------------| |
++-------+ +-------+
+```
+
+Only one GPIO pin is needed for the Half-duplex driver, as only one wire is used for receiving and transmitting data. This pin is referred to as the `SERIAL_USART_TX_PIN` in the configuration. Take care that the pin you chose can act as the TX pin of the USART peripheral. A simple TRS or USB cable provides enough conductors for this driver to work. As the split connection is configured to work in open-drain mode, an **external pull-up resistor is needed to keep the line high**. Resistor values of 1.5kΩ to 8.2kΩ are known to work.
-!> The bitbang driver causes connection issues with bitbang WS2812 driver
+### Setup
-Along with the generic options above, you must also turn on the `PAL_USE_CALLBACKS` feature in your halconf.h.
+To use the Half-duplex driver follow these steps to activate it. If you target the Raspberry Pi RP2040 PIO implementation skip step 1.
-### USART Half-duplex
-Targeting STM32 boards where communication is offloaded to a USART hardware device. The advantage over bitbang is that this provides fast and accurate timings. `SERIAL_PIN_TX` for this driver is the configured USART TX pin. As this Pin is configured in open-drain mode an **external pull-up resistor is needed to keep the line high** (resistor values of 1.5k to 8.2k are known to work). To configure it, add this to your rules.mk:
+1. Change the `SERIAL_DRIVER` to `usart` in your keyboards `rules.mk` file:
```make
SERIAL_DRIVER = usart
```
-Configure the hardware via your config.h:
+2. (RP2040 PIO only!) Change the `SERIAL_DRIVER` to `vendor` in your keyboards `rules.mk` file:
+
+```make
+SERIAL_DRIVER = vendor
+```
+
+3. Configure the hardware of your keyboard via the `config.h` file:
+
+```c
+#define SERIAL_USART_TX_PIN B6 // The GPIO pin that is used split communication.
+```
+
+For STM32 MCUs several GPIO configuration options can be changed as well. See the section ["Alternate Functions for selected STM32 MCUs"](alternate-functions-for-selected-stm32-mcus).
+
```c
-#define SOFT_SERIAL_PIN B6 // USART TX pin
-//#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below.
-#define SELECT_SOFT_SERIAL_SPEED 1 // or 0, 2, 3, 4, 5
- // 0: about 460800 baud
- // 1: about 230400 baud (default)
- // 2: about 115200 baud
- // 3: about 57600 baud
- // 4: about 38400 baud
- // 5: about 19200 baud
-#define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1
+#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below.
#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_TIMEOUT 20 // USART driver timeout. default 20
```
-You must also enable the ChibiOS `SERIAL` feature:
-* In your board's halconf.h: `#define HAL_USE_SERIAL TRUE`
-* In your board's mcuconf.h: `#define STM32_SERIAL_USE_USARTn TRUE` (where 'n' matches the peripheral number of your selected USART on the MCU)
+1. Decide either for `SERIAL`, `SIO` or `PIO` subsystem, see the section ["Choosing a driver subsystem"](#choosing-a-driver-subsystem).
-Do note that the configuration required is for the `SERIAL` peripheral, not the `UART` peripheral.
+<hr>
-### USART Full-duplex
-Targeting STM32 boards where communication is offloaded to a USART hardware device. The advantage over bitbang is that this provides fast and accurate timings. USART Full-Duplex requires two conductors **without** pull-up resistors instead of one conductor with a pull-up resistor unlike the Half-duplex driver. Due to its internal design it is more efficent, which can result in even faster transmission speeds.
+## USART Full-duplex
-#### Pin configuration
+Targeting ARM boards based on ChibiOS where communication is offloaded to an USART hardware device. The advantages over bitbanging are fast, accurate timings and reduced CPU usage. Therefore it is advised to choose this driver or the Full-duplex driver whenever possible. Due to its internal design it is slightly more efficient then the Half-duplex driver, but it should be primarily chosen if Half-duplex operation is not supported by the USART peripheral.
-`SERIAL_USART_TX_PIN` is the USART `TX` pin, `SERIAL_USART_RX_PIN` is the USART `RX` pin. No external pull-up resistors are needed as the `TX` pin operates in push-pull mode. To use this driver the usart peripherals `TX` and `RX` pins must be configured with the correct Alternate-functions. If you are using a Proton-C everything is already setup, same is true for STM32F103 MCUs. For MCUs which are using a modern flexible GPIO configuration you have to specify these by setting `SERIAL_USART_TX_PAL_MODE` and `SERIAL_USART_RX_PAL_MODE`. Refeer to the corresponding datasheets of your MCU or find those settings in the table below.
+### Pin configuration
+
+```
+ LEFT RIGHT
++-------+ +-------+
+| | SERIAL | |
+| TX |-----------------| RX |
+| | SERIAL | |
+| RX |-----------------| TX |
+| | VDD | |
+| |-----------------| |
+| | GND | |
+| |-----------------| |
++-------+ +-------+
+```
-#### Connecting the halves and Pin Swap
-Please note that `TX` of the master half has to be connected with the `RX` pin of the slave half and `RX` of the master half has to be connected with the `TX` pin of the slave half! Usually this pin swap has to be done outside of the MCU e.g. with cables or on the pcb. Some MCUs like the STM32F303 used on the Proton-C allow this pin swap directly inside the MCU, this feature can be enabled using `#define SERIAL_USART_PIN_SWAP` in your config.h.
+Two GPIO pins are needed for the Full-duplex driver, as two distinct wires are used for receiving and transmitting data. The pin transmitting data is the `TX` pin and refereed to as the `SERIAL_USART_TX_PIN`, the pin receiving data is the `RX` pin and refereed to as the `SERIAL_USART_RX_PIN` in this configuration. Please note that `TX` pin of the master half has to be connected with the `RX` pin of the slave half and the `RX` pin of the master half has to be connected with the `TX` pin of the slave half! Usually this pin swap has to be done outside of the MCU e.g. with cables or on the PCB. Some MCUs like the STM32F303 used on the Proton-C allow this pin swap directly inside the MCU. A simple TRRS or USB cable provides enough conductors for this driver to work.
-#### Setup
-To use the driver, add this to your rules.mk:
+To use this driver the usart peripherals `TX` and `RX` pins must be configured with the correct Alternate-functions. If you are using a Proton-C everything is already setup, same is true for STM32F103 MCUs. For MCUs which are using a modern flexible GPIO configuration you have to specify these by setting `SERIAL_USART_TX_PAL_MODE` and `SERIAL_USART_RX_PAL_MODE`. Refer to the corresponding datasheets of your MCU or find those settings in the section ["Alternate Functions for selected STM32 MCUs"](#alternate-functions-for-selected-stm32-mcus).
+
+### Setup
+
+To use the Full-duplex driver follow these steps to activate it. If you target the Raspberry Pi RP2040 PIO implementation skip step 1.
+
+1. Change the `SERIAL_DRIVER` to `usart` in your keyboards `rules.mk` file:
```make
SERIAL_DRIVER = usart
```
-Next configure the hardware via your config.h:
+2. (RP2040 PIO only!) Change the `SERIAL_DRIVER` to `vendor` in your keyboards `rules.mk` file:
+
+```make
+SERIAL_DRIVER = vendor
+```
+
+3. Configure the hardware of your keyboard via the `config.h` file:
```c
#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
#define SERIAL_USART_TX_PIN B6 // USART TX pin
#define SERIAL_USART_RX_PIN B7 // USART RX pin
-//#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below.
-//#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
+```
+
+For STM32 MCUs several GPIO configuration options, including the ability for `TX` to `RX` pin swapping, can be changed as well. See the section ["Alternate Functions for selected STM32 MCUs"](alternate-functions-for-selected-stm32-mcus).
+
+```c
+#define SERIAL_USART_PIN_SWAP // Swap TX and RX pins if keyboard is master halve. (Only available on some MCUs)
+#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below.
#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
+```
+
+1. Decide either for `SERIAL`, `SIO` or `PIO` subsystem, see the section ["Choosing a driver subsystem"](#choosing-a-driver-subsystem).
+
+<hr>
+
+## Choosing a driver subsystem
+
+### The `SERIAL` driver
+
+The `SERIAL` Subsystem is supported for the majority of ChibiOS MCUs and should be used whenever supported. Follow these steps in order to activate it:
+
+1. In your keyboards `halconf.h` add:
+
+```c
+#define HAL_USE_SERIAL TRUE
+```
+
+2. In your keyboards `mcuconf.h`: activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the `mcuconf.h` files of your MCU that ship with ChibiOS.
+
+Just below `#include_next <mcuconf.h>` add:
+
+```c
+#include_next <mcuconf.h>
+
+#undef STM32_SERIAL_USE_USARTn
+#define STM32_SERIAL_USE_USARTn TRUE
+```
+
+Where 'n' matches the peripheral number of your selected USART on the MCU.
+
+3. In you keyboards `config.h`: override the default USART `SERIAL` driver if you use a USART peripheral that does not belong to the default selected `SD1` driver. For instance, if you selected `STM32_SERIAL_USE_USART3` the matching driver would be `SD3`.
+
+```c
+ #define SERIAL_USART_DRIVER SD3
+ ```
+
+### The `SIO` driver
+
+The `SIO` Subsystem was added to ChibiOS with the 21.11 release and is only supported on selected MCUs. It should only be chosen when the `SERIAL` subsystem is not supported by your MCU.
+
+Follow these steps in order to activate it:
+
+1. In your keyboards `halconf.h` add:
+
+```c
+#define HAL_USE_SIO TRUE
+```
+
+2. In your keyboards `mcuconf.h:` activate the USART peripheral that is used on your MCU. The shown example is for an STM32 MCU, so this will not work on MCUs by other manufacturers. You can find the correct names in the `mcuconf.h` files of your MCU that ship with ChibiOS.
+
+Just below `#include_next <mcuconf.h>` add:
+
+```c
+#include_next <mcuconf.h>
+
+#undef STM32_SIO_USE_USARTn
+#define STM32_SIO_USE_USARTn TRUE
+```
+
+Where 'n' matches the peripheral number of your selected USART on the MCU.
+
+3. In you keyboards `config.h`: override the default USART `SIO` driver if you use a USART peripheral that does not belong to the default selected `SIOD1` driver. For instance, if you selected `STM32_SERIAL_USE_USART3` the matching driver would be `SIOD3`.
+
+```c
+ #define SERIAL_USART_DRIVER SIOD3
+ ```
+
+### The `PIO` driver
+
+The `PIO` subsystem is a Raspberry Pi RP2040 specific implementation, using the integrated PIO peripheral and is therefore only available on this MCU. Because of the flexible nature of the PIO peripherals, **any** GPIO pin can be used as a `TX` or `RX` pin. Half-duplex and Full-duplex operation is fully supported. The Half-duplex operation mode uses the built-in pull-ups and GPIO manipulation on the RP2040 to drive the line high by default. An external pull-up is therefore not necessary.
+
+Configure the hardware via your config.h:
+```c
+#define SERIAL_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the Serial implementation uses the PIO0 peripheral
+```
+
+The Serial PIO program uses 2 state machines, 13 instructions and the complete interrupt handler of the PIO peripheral it is running on.
+
+<hr>
+
+## Advanced Configuration
+
+There are several advanced configuration options that can be defined in your keyboards `config.h` file:
+
+### Baudrate
+
+If you're having issues or need a higher baudrate with serial communication, you can change the baudrate which in turn controls the communication speed for serial. You want to lower the baudrate if you experience failed transactions.
+
+```c
+#define SELECT_SOFT_SERIAL_SPEED {#}
+```
+
+| Speed | Bitbang | Half-duplex and Full-duplex |
+| ----- | -------------------------- | --------------------------- |
+| `0` | 189000 baud (experimental) | 460800 baud |
+| `1` | 137000 baud (default) | 230400 baud (default) |
+| `2` | 75000 baud | 115200 baud |
+| `3` | 39000 baud | 57600 baud |
+| `4` | 26000 baud | 38400 baud |
+| `5` | 20000 baud | 19200 baud |
+
+Alternatively you can specify the baudrate directly by defining `SERIAL_USART_SPEED`.
+
+### Timeout
+
+This is the default time window in milliseconds in which a successful communication has to complete. Usually you don't want to change this value. But you can do so anyways by defining an alternate one in your keyboards `config.h` file:
+
+```c
#define SERIAL_USART_TIMEOUT 20 // USART driver timeout. default 20
```
-You must also enable the ChibiOS `SERIAL` feature:
-* In your board's halconf.h: `#define HAL_USE_SERIAL TRUE`
-* In your board's mcuconf.h: `#define STM32_SERIAL_USE_USARTn TRUE` (where 'n' matches the peripheral number of your selected USART on the MCU)
+<hr>
+
+## Troubleshooting
+
+If you're having issues withe serial communication, you can enable debug messages that will give you insights which part of the communication failed. The enable these messages add to your keyboards `config.h` file:
+
+```c
+#define SERIAL_DEBUG
+```
+
+?> The messages will be printed out to the `CONSOLE` output. For additional information, refer to [Debugging/Troubleshooting QMK](faq_debug.md).
-Do note that the configuration required is for the `SERIAL` peripheral, not the `UART` peripheral.
+## Alternate Functions for selected STM32 MCUs
-#### Pins for USART Peripherals with Alternate Functions for selected STM32 MCUs
+Pins for USART Peripherals with
-##### STM32F303 / Proton-C [Datasheet](https://www.st.com/resource/en/datasheet/stm32f303cc.pdf)
+### STM32F303 / Proton-C [Datasheet](https://www.st.com/resource/en/datasheet/stm32f303cc.pdf)
Pin Swap available: :heavy_check_mark:
-| Pin | Function | Mode |
+| Pin | Function | Mode |
| ---------- | -------- | ---- |
| **USART1** | | |
| PA9 | TX | AF7 |
@@ -151,11 +323,11 @@ Pin Swap available: :heavy_check_mark:
| PD8 | TX | AF7 |
| PD9 | RX | AF7 |
-##### STM32F072 [Datasheet](https://www.st.com/resource/en/datasheet/stm32f072c8.pdf)
+### STM32F072 [Datasheet](https://www.st.com/resource/en/datasheet/stm32f072c8.pdf)
Pin Swap available: :heavy_check_mark:
-| Pin | Function | Mode |
+| Pin | Function | Mode |
| ------ | -------- | ---- |
| USART1 | | |
| PA9 | TX | AF1 |
@@ -180,7 +352,7 @@ Pin Swap available: :heavy_check_mark:
| PA0 | TX | AF4 |
| PA1 | RX | AF4 |
-##### STM32F103 Medium Density (C8-CB) [Datasheet](https://www.st.com/resource/en/datasheet/stm32f103c8.pdf)
+### STM32F103 Medium Density (C8-CB) [Datasheet](https://www.st.com/resource/en/datasheet/stm32f103c8.pdf)
Pin Swap available: N/A
@@ -190,7 +362,7 @@ Pin remapping:
The pins of USART Peripherals use default Pins that can be remapped to use other pins using the AFIO registers. Default pins are marked **bold**. Add the appropriate defines to your config.h file.
-| Pin | Function | Mode | USART_REMAP |
+| Pin | Function | Mode | USART_REMAP |
| ---------- | -------- | ---- | ------------------- |
| **USART1** | | | |
| **PA9** | TX | AFPP | |
diff --git a/docs/squeezing_avr.md b/docs/squeezing_avr.md
index f7e21d932b..bb8e460024 100644
--- a/docs/squeezing_avr.md
+++ b/docs/squeezing_avr.md
@@ -188,7 +188,10 @@ If you've done all of this, and your firmware is still too large, then it's time
That said, there are a number of Pro Micro replacements with ARM controllers:
* [Proton C](https://qmk.fm/proton-c/) (out of stock)
* [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)
+* [STeMCell](https://github.com/megamind4089/STeMCell) (Open Source, DIY/PCBA)
+* [Adafruit KB2040](https://learn.adafruit.com/adafruit-kb2040)
+* [SparkFun Pro Micro - RP2040](https://www.sparkfun.com/products/18288)
+* [Blok](https://boardsource.xyz/store/628b95b494dfa308a6581622)
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 9b80fb179e..ba47fc3ad3 100644
--- a/docs/understanding_qmk.md
+++ b/docs/understanding_qmk.md
@@ -71,7 +71,7 @@ At the keyboard level we define a C macro (typically named `LAYOUT()`) which map
Notice how the second block of our `LAYOUT()` macro matches the Matrix Scanning array above? This macro is what will map the matrix scanning array to keycodes. However, if you look at a 17 key numpad you'll notice that it has 3 places where the matrix could have a switch but doesn't, due to larger keys. We have populated those spaces with `KC_NO` so that our keymap definition doesn't have to.
-You can also use this macro to handle unusual matrix layouts, for example the [Clueboard rev 2](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/keyboards/clueboard/66/rev2/rev2.h). Explaining that is outside the scope of this document.
+You can also use this macro to handle unusual matrix layouts, for example the [Alice](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/keyboards/sneakbox/aliceclone/aliceclone.h#L24). Explaining that is outside the scope of this document.
##### Keycode Assignment
@@ -127,40 +127,52 @@ 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 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)
+* [`void action_exec(keyevent_t event)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/action.c#L78-L140)
+ * [`void pre_process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/quantum.c#L204)
+ * [`bool process_combo(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_combo.c#L521)
+ * [`void process_record(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/action.c#L254)
+ * [`bool process_record_quantum(keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/quantum.c#L224)
+ * [Map this record to a keycode](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/quantum.c#L225)
+ * [`void velocikey_accelerate(void)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/velocikey.c#L27)
+ * [`void update_wpm(uint16_t keycode)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/wpm.c#L109)
+ * [`void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_tap_dance.c#L118)
+ * [`bool process_key_lock(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_key_lock.c#L64)
+ * [`bool process_dynamic_macro(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_dynamic_macro.c#L160)
+ * [`bool process_clicky(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_clicky.c#L84)
+ * [`bool process_haptic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_haptic.c#L87)
+ * [`bool process_record_via(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/via.c#L160)
+ * [`bool process_record_kb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/keyboards/planck/ez/ez.c#L271)
+ * [`bool process_record_user(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/keyboards/planck/keymaps/default/keymap.c#L183)
+ * [`bool process_secure(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_secure.c#L23)
+ * [`bool process_sequencer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_sequencer.c#L19)
+ * [`bool process_midi(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_midi.c#L75)
+ * [`bool process_audio(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_audio.c#L18)
+ * [`bool process_backlight(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_backlight.c#L25)
+ * [`bool process_steno(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_steno.c#L159)
+ * [`bool process_music(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_music.c#L103)
* [`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)
+ * [`bool process_tap_dance(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_tap_dance.c#L135)
+ * [`bool process_caps_word(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_caps_word.c#L17)
+ * [`bool process_unicode_common(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_unicode_common.c#L290)
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)
+ * [`bool process_unicode(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_unicode.c#L21)
+ * [`bool process_unicodemap(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_unicodemap.c#L42)
+ * [`bool process_ucis(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_ucis.c#L70)
+ * [`bool process_leader(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_leader.c#L48)
+ * [`bool process_printer(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_printer.c#L77)
+ * [`bool process_auto_shift(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_auto_shift.c#L353)
+ * [`bool process_dynamic_tapping_term(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_dynamic_tapping_term.c#L35)
+ * [`bool process_space_cadet(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_space_cadet.c#L123)
+ * [`bool process_magic(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_magic.c#L40)
+ * [`bool process_grave_esc(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_grave_esc.c#L23)
+ * [`bool process_rgb(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_rgb.c#L53)
+ * [`bool process_joystick(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_joystick.c#L9)
+ * [`bool process_programmable_button(uint16_t keycode, keyrecord_t *record)`](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/process_keycode/process_programmable_button.c#L21)
+ * [Identify and process Quantum-specific keycodes](https://github.com/qmk/qmk_firmware/blob/325da02e57fe7374e77b82cb00360ba45167e25c/quantum/quantum.c#L343)
At any step during this chain of events a function (such as `process_record_kb()`) can `return false` to halt all further processing.
-After this is called, `post_process_record()` is called, which can be used to handle additional cleanup that needs to be run after the keycode is normally handled.
+After this is called, `post_process_record()` is called, which can be used to handle additional cleanup that needs to be run after the keycode is normally handled.
* [`void post_process_record(keyrecord_t *record)`]()
* [`void post_process_record_quantum(keyrecord_t *record)`]()
@@ -168,7 +180,7 @@ After this is called, `post_process_record()` is called, which can be used to ha
* [`void post_process_clicky(uint16_t keycode, keyrecord_t *record)`]()
* [`void post_process_record_kb(uint16_t keycode, keyrecord_t *record)`]()
* [`void post_process_record_user(uint16_t keycode, keyrecord_t *record)`]()
-
+
<!--
#### Mouse Handling
diff --git a/docs/ws2812_driver.md b/docs/ws2812_driver.md
index 8acac0b3aa..54e6e77d81 100644
--- a/docs/ws2812_driver.md
+++ b/docs/ws2812_driver.md
@@ -11,11 +11,12 @@ These LEDs are called "addressable" because instead of using a wire per color, e
## Supported Driver Types
| | AVR | ARM |
-|----------|--------------------|--------------------|
+| -------- | ------------------ | ------------------ |
| bit bang | :heavy_check_mark: | :heavy_check_mark: |
| I2C | :heavy_check_mark: | |
| SPI | | :heavy_check_mark: |
| PWM | | :heavy_check_mark: |
+| PIO | | :heavy_check_mark: |
## Driver configuration
@@ -33,11 +34,11 @@ The default setting is 280 µs, which should work for most cases, but this can b
Some variants of the WS2812 may have their color components in a different physical or logical order. For example, the WS2812B-2020 has physically swapped red and green LEDs, which causes the wrong color to be displayed, because the default order of the bytes sent over the wire is defined as GRB.
In this case, you can change the byte order by defining `WS2812_BYTE_ORDER` as one of the following values:
-|Byte order |Known devices |
-|---------------------------------|-----------------------------|
-|`WS2812_BYTE_ORDER_GRB` (default)|Most WS2812's, SK6812, SK6805|
-|`WS2812_BYTE_ORDER_RGB` |WS2812B-2020 |
-|`WS2812_BYTE_ORDER_BGR` |TM1812 |
+| Byte order | Known devices |
+| --------------------------------- | ----------------------------- |
+| `WS2812_BYTE_ORDER_GRB` (default) | Most WS2812's, SK6812, SK6805 |
+| `WS2812_BYTE_ORDER_RGB` | WS2812B-2020 |
+| `WS2812_BYTE_ORDER_BGR` | TM1812 |
### Bitbang
@@ -54,13 +55,13 @@ WS2812_DRIVER = bitbang
The WS2812 LED communication topology depends on a serialized timed window. Different versions of the addressable LEDs have differing requirements for the timing parameters, for instance, of the SK6812.
You can tune these parameters through the definition of the following macros:
-| Macro |Default | AVR | ARM |
-|---------------------|--------------------------------------------|--------------------|--------------------|
-|`WS2812_TIMING` |`1250` | :heavy_check_mark: | :heavy_check_mark: |
-|`WS2812_T0H` |`350` | :heavy_check_mark: | :heavy_check_mark: |
-|`WS2812_T0L` |`WS2812_TIMING - WS2812_T0H` | | :heavy_check_mark: |
-|`WS2812_T1H` |`900` | :heavy_check_mark: | :heavy_check_mark: |
-|`WS2812_T1L` |`WS2812_TIMING - WS2812_T1H` | | :heavy_check_mark: |
+| Macro | Default | AVR | ARM |
+| --------------- | ---------------------------- | ------------------ | ------------------ |
+| `WS2812_TIMING` | `1250` | :heavy_check_mark: | :heavy_check_mark: |
+| `WS2812_T0H` | `350` | :heavy_check_mark: | :heavy_check_mark: |
+| `WS2812_T0L` | `WS2812_TIMING - WS2812_T0H` | | :heavy_check_mark: |
+| `WS2812_T1H` | `900` | :heavy_check_mark: | :heavy_check_mark: |
+| `WS2812_T1L` | `WS2812_TIMING - WS2812_T1H` | | :heavy_check_mark: |
### I2C
Targeting boards where WS2812 support is offloaded to a 2nd MCU. Currently the driver is limited to AVR given the known consumers are ps2avrGB/BMC. To configure it, add this to your rules.mk:
@@ -107,16 +108,16 @@ To adjust the baudrate at which the SPI peripheral is configured, users will nee
Only divisors of 2, 4, 8, 16, 32, 64, 128 and 256 are supported by hardware.
-|Define |Default|Description |
-|--------------------|-------|-------------------------------------|
-|`WS2812_SPI_DIVISOR`|`16` |SPI source clock peripheral divisor |
+| Define | Default | Description |
+| -------------------- | ------- | ----------------------------------- |
+| `WS2812_SPI_DIVISOR` | `16` | SPI source clock peripheral divisor |
#### Testing Notes
While not an exhaustive list, the following table provides the scenarios that have been partially validated:
| | SPI1 | SPI2 | SPI3 |
-|------|---------------------------------------------|-----------------------------------------|-----------------------|
+| ---- | ------------------------------------------- | --------------------------------------- | --------------------- |
| f072 | ? | B15 :heavy_check_mark: (needs SCK: B13) | N/A |
| f103 | A7 :heavy_check_mark: | B15 :heavy_check_mark: | N/A |
| f303 | A7 :heavy_check_mark: B5 :heavy_check_mark: | B15 :heavy_check_mark: | B5 :heavy_check_mark: |
@@ -150,15 +151,32 @@ You must also turn on the PWM feature in your halconf.h and mcuconf.h
While not an exhaustive list, the following table provides the scenarios that have been partially validated:
-| | Status |
-|-|-|
-| f072 | ? |
-| f103 | :heavy_check_mark: |
-| f303 | :heavy_check_mark: |
+| | Status |
+| --------- | ------------------ |
+| f072 | ? |
+| f103 | :heavy_check_mark: |
+| f303 | :heavy_check_mark: |
| f401/f411 | :heavy_check_mark: |
*Other supported ChibiOS boards and/or pins may function, it will be highly chip and configuration dependent.*
+### PIO
+
+Targeting Raspberry Pi RP2040 boards only where WS2812 support is offloaded to an dedicated PIO implementation. This offloads processing of the WS2812 protocol from the MCU to a dedicated PIO program using DMA transfers.
+
+To configure it, add this to your rules.mk:
+
+```make
+WS2812_DRIVER = vendor
+```
+
+Configure the hardware via your config.h:
+```c
+#define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
+```
+
+The WS2812 PIO programm uses 1 state machine, 4 instructions and does not use any interrupt handlers.
+
### Push Pull and Open Drain Configuration
The default configuration is a push pull on the defined pin.
This can be configured for bitbang, PWM and SPI.
diff --git a/docs/zh-cn/_summary.md b/docs/zh-cn/_summary.md
index dbad1021fa..3baee6dc2e 100644
--- a/docs/zh-cn/_summary.md
+++ b/docs/zh-cn/_summary.md
@@ -91,7 +91,6 @@
* [æ¢æ‰‹](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)
diff --git a/docs/zh-cn/api_docs.md b/docs/zh-cn/api_docs.md
index a2df9ec20a..b853a1bca5 100644
--- a/docs/zh-cn/api_docs.md
+++ b/docs/zh-cn/api_docs.md
@@ -21,7 +21,7 @@
"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"]
+ ["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","QK_BOOT","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"]
]
}
```
diff --git a/docs/zh-cn/configurator_default_keymaps.md b/docs/zh-cn/configurator_default_keymaps.md
index 135029b7e2..82e4ca818d 100644
--- a/docs/zh-cn/configurator_default_keymaps.md
+++ b/docs/zh-cn/configurator_default_keymaps.md
@@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, QK_BOOT, 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),
@@ -89,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[
"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", "QK_BOOT", "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"
diff --git a/docs/zh-cn/custom_quantum_functions.md b/docs/zh-cn/custom_quantum_functions.md
index 29c5089052..dba9e7e7c0 100644
--- a/docs/zh-cn/custom_quantum_functions.md
+++ b/docs/zh-cn/custom_quantum_functions.md
@@ -240,7 +240,7 @@ void suspend_wakeup_init_user(void) {
```c
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _RAISE:
rgblight_setrgb (0x00, 0x00, 0xFF);
break;
@@ -267,7 +267,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
### `layer_state_set_*` 函数文档
-* 键盘/å„å­ç‰ˆæœ¬ï¼š`uint32_t layer_state_set_kb(uint32_t state)`
+* 键盘/å„å­ç‰ˆæœ¬ï¼š`layer_state_t layer_state_set_kb(layer_state_t state)`
* 布局: `layer_state_t layer_state_set_user(layer_state_t state)`
@@ -325,7 +325,7 @@ void keyboard_post_init_user(void) {
```c
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _RAISE:
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_magenta(); rgblight_mode_noeeprom(1); }
break;
@@ -474,4 +474,3 @@ cancel_deferred_exec(my_token);
```c
#define MAX_DEFERRED_EXECUTORS 16
```
-
diff --git a/docs/zh-cn/flashing.md b/docs/zh-cn/flashing.md
index 5833cd38fa..559b8742d0 100644
--- a/docs/zh-cn/flashing.md
+++ b/docs/zh-cn/flashing.md
@@ -34,7 +34,7 @@ BOOTLOADER = atmel-dfu
刷写过程:
1. 使用如下任一方å¼è¿›å…¥bootloader模å¼ï¼š
- * 点击 `RESET` é”®ç 
+ * 点击 `QK_BOOT` é”®ç 
* 如果PCB上有 `RESET` 键,点击之
* 快速短接一下RST到GND
2. 等待æ“作系统识别到设备
@@ -84,7 +84,7 @@ BOOTLOADER = caterina
刷写过程:
1. 使用如下任一方å¼è¿›å…¥bootloader模å¼ï¼ˆè¿›å…¥è¯¥æ¨¡å¼åŽåªæœ‰7秒时间å¯ä»¥åˆ·å†™ï¼›ä¸€äº›åž‹å·éœ€è¦ä½ åœ¨750ms内é‡ç½®ä¸¤æ¬¡ï¼‰ï¼š
- * 点击 `RESET` é”®ç 
+ * 点击 `QK_BOOT` é”®ç 
* 如果PCB上有 `RESET` 键,点击之
* 快速短接一下RST到GND
2. 等待æ“作系统识别到设备
@@ -117,7 +117,7 @@ BOOTLOADER = halfkay
刷写过程:
1. 使用如下任一方å¼è¿›å…¥bootloader模å¼ï¼ˆè¿›å…¥è¯¥æ¨¡å¼åŽåªæœ‰7秒时间å¯ä»¥åˆ·å†™ï¼‰ï¼š
- * 点击 `RESET` é”®ç 
+ * 点击 `QK_BOOT` é”®ç 
* 如果Teensy上或PCB上有 `RESET` 键,点击之
* 快速短接一下RST到GND
2. 等待æ“作系统识别到设备
@@ -144,7 +144,7 @@ BOOTLOADER = usbasploader
刷写过程:
1. 使用如下任一方å¼è¿›å…¥bootloader模å¼ï¼š
- * 点击 `RESET` é”®ç 
+ * 点击 `QK_BOOT` é”®ç 
* åœ¨æŒ‰ä½ `BOOT` 按钮时,快速点击一下PCB上的 `RESET`
2. 等待æ“作系统识别到设备
3. 将.hex文件刷写进去
@@ -171,7 +171,7 @@ BOOTLOADER = bootloadhid
刷写过程:
1. 使用如下任一方å¼è¿›å…¥bootloader模å¼ï¼š
- * 点击 `RESET` é”®ç 
+ * 点击 `QK_BOOT` é”®ç 
* 在按ä½â€œç›é”®â€ï¼ˆsalt key)时æ’入键盘 - 在PS2AVRGBæ¿ä¸Šï¼Œé€šå¸¸åœ¨MCUçš„A0åŠB0引脚上有这个按键,å¦åˆ™è¯·æŸ¥çœ‹é”®ç›˜çš„使用说明。
2. 等待æ“作系统识别到设备
3. 将.hex文件刷写进去
@@ -212,7 +212,7 @@ BOOTLOADER = qmk-hid
刷写过程:
1. 使用如下任一方å¼è¿›å…¥bootloader模å¼ï¼š
- * 点击 `RESET` é”®ç 
+ * 点击 `QK_BOOT` é”®ç 
* 如果PCB上有 `RESET` 键,点击之
* 快速短接一下RST到GND
2. 等待æ“作系统识别到设备
@@ -242,7 +242,7 @@ BOOTLOADER = stm32-dfu
刷写过程:
1. 使用如下任一方å¼è¿›å…¥bootloader模å¼ï¼ˆè¿›å…¥è¯¥æ¨¡å¼åŽåªæœ‰7秒时间å¯ä»¥åˆ·å†™ï¼‰ï¼š
- * 点击 `RESET` é”®ç ï¼ˆå¯¹STM32F042设备å¯èƒ½æ— æ•ˆï¼‰
+ * 点击 `QK_BOOT` é”®ç ï¼ˆå¯¹STM32F042设备å¯èƒ½æ— æ•ˆï¼‰
* 如果有é‡ç½®ç”µè·¯ï¼Œç‚¹å‡»PCB上的 `RESET` 键;有些主控æ¿ä¸Šå¯èƒ½ä¼šæœ‰ä¸€ä¸ªå¼€å…³éœ€è¦å…ˆæ‰“å¼€
* å¦åˆ™ï¼Œä½ éœ€è¦å°† `BOOT0` 接线到VCC(通过 `BOOT0` 按钮或跳线),短接 `RESET` 至GND(通过 `RESET` 按钮或æ¡çº¿ï¼‰ï¼Œç„¶åŽæ–­å¼€ `BOOT0` 的接线。
2. 等待æ“作系统识别到设备
@@ -275,7 +275,7 @@ BOOTLOADER = stm32duino
刷写过程:
1. 使用如下任一方å¼è¿›å…¥bootloader模å¼ï¼ˆè¿›å…¥è¯¥æ¨¡å¼åŽåªæœ‰7秒时间å¯ä»¥åˆ·å†™ï¼‰ï¼š
- * 点击 `RESET` é”®ç ï¼ˆå¯¹STM32F042设备å¯èƒ½æ— æ•ˆï¼‰
+ * 点击 `QK_BOOT` é”®ç ï¼ˆå¯¹STM32F042设备å¯èƒ½æ— æ•ˆï¼‰
* 如果有é‡ç½®ç”µè·¯ï¼Œç‚¹å‡»PCB上的 `RESET` 键;有些主控æ¿ä¸Šå¯èƒ½ä¼šæœ‰ä¸€ä¸ªå¼€å…³éœ€è¦å…ˆæ‰“å¼€
* å¦åˆ™ï¼Œä½ éœ€è¦å°† `BOOT0` 接线到VCC(通过 `BOOT0` 按钮或跳线),短接 `RESET` 至GND(通过 `RESET` 按钮或æ¡çº¿ï¼‰ï¼Œç„¶åŽæ–­å¼€ `BOOT0` 的接线。
2. 等待æ“作系统识别到设备
@@ -296,7 +296,7 @@ Input Club出å“的键盘使用NXP Kinetis微控制器而éžSTM32,并使用了
刷写过程:
1. 使用如下任一方å¼è¿›å…¥bootloader模å¼ï¼š
- * 点击 `RESET` é”®ç ï¼ˆæœ‰å¯èƒ½åªèƒ½è¿›å…¥åˆ°â€œå®‰å…¨â€bootloader模å¼ï¼Œå‚è§[这里](https://github.com/qmk/qmk_firmware/issues/6112))
+ * 点击 `QK_BOOT` é”®ç ï¼ˆæœ‰å¯èƒ½åªèƒ½è¿›å…¥åˆ°â€œå®‰å…¨â€bootloader模å¼ï¼Œå‚è§[这里](https://github.com/qmk/qmk_firmware/issues/6112))
* 如果PCB上有 `RESET` 键,点击之
2. 等待æ“作系统识别到设备
3. 将.bin文件刷写进去
@@ -322,7 +322,7 @@ BOOTLOADER = tinyuf2
刷写过程:
1. 使用如下任一方å¼è¿›å…¥bootloader模å¼ï¼š
- * 点击 `RESET` é”®ç 
+ * 点击 `QK_BOOT` é”®ç 
* åŒå‡»PCB上的 `nRST` é”®
2. 等待æ“作系统识别到设备
3. å°†.uf2文件拷è´åˆ°æ–°å‡ºçŽ°çš„USB存储设备上
diff --git a/docs/zh-cn/flashing_bootloadhid.md b/docs/zh-cn/flashing_bootloadhid.md
index 70139c1e12..c5e944f947 100644
--- a/docs/zh-cn/flashing_bootloadhid.md
+++ b/docs/zh-cn/flashing_bootloadhid.md
@@ -10,7 +10,7 @@ ps2avr(GB)基于一片ATmega32A微控制器åŠç‰¹æ®Šçš„bootloader,无法使用
常规刷写过程:
1. 使用如下任一方å¼è¿›å…¥bootloader模å¼ï¼š
- * 点击 `RESET` é”®ç ï¼ˆä¸€äº›è®¾å¤‡ä¸Šä¸ç®¡ç”¨ï¼‰
+ * 点击 `QK_BOOT` é”®ç ï¼ˆä¸€äº›è®¾å¤‡ä¸Šä¸ç®¡ç”¨ï¼‰
* 在按ä½â€œç›é”®â€ï¼ˆsalt key)时æ’入键盘(该键一般会在键盘使用说明上写明)
2. 等待æ“作系统识别到设备
3. 将.hex文件刷写进去
diff --git a/drivers/eeprom/eeprom_i2c.h b/drivers/eeprom/eeprom_i2c.h
index 77eea66d63..85317c9ea5 100644
--- a/drivers/eeprom/eeprom_i2c.h
+++ b/drivers/eeprom/eeprom_i2c.h
@@ -54,6 +54,11 @@
# define EXTERNAL_EEPROM_PAGE_SIZE 32
# define EXTERNAL_EEPROM_ADDRESS_SIZE 2
# define EXTERNAL_EEPROM_WRITE_TIME 5
+#elif defined(EEPROM_I2C_24LC32A)
+# define EXTERNAL_EEPROM_BYTE_COUNT 4096
+# define EXTERNAL_EEPROM_PAGE_SIZE 32
+# define EXTERNAL_EEPROM_ADDRESS_SIZE 2
+# define EXTERNAL_EEPROM_WRITE_TIME 5
#elif defined(EEPROM_I2C_MB85RC256V)
# define EXTERNAL_EEPROM_BYTE_COUNT 32768
# define EXTERNAL_EEPROM_PAGE_SIZE 128
diff --git a/drivers/eeprom/eeprom_spi.c b/drivers/eeprom/eeprom_spi.c
index 25955498c4..51ba25dece 100644
--- a/drivers/eeprom/eeprom_spi.c
+++ b/drivers/eeprom/eeprom_spi.c
@@ -58,14 +58,20 @@ static bool spi_eeprom_start(void) {
static spi_status_t spi_eeprom_wait_while_busy(int timeout) {
uint32_t deadline = timer_read32() + timeout;
- spi_status_t response;
- do {
+ spi_status_t response = SR_WIP;
+ while (response & SR_WIP) {
+ if (!spi_eeprom_start()) {
+ return SPI_STATUS_ERROR;
+ }
+
spi_write(CMD_RDSR);
response = spi_read();
+ spi_stop();
+
if (timer_read32() >= deadline) {
return SPI_STATUS_TIMEOUT;
}
- } while (response & SR_WIP);
+ }
return SPI_STATUS_SUCCESS;
}
@@ -105,27 +111,21 @@ void eeprom_driver_erase(void) {
void eeprom_read_block(void *buf, const void *addr, size_t len) {
//-------------------------------------------------
// Wait for the write-in-progress bit to be cleared
- bool res = spi_eeprom_start();
- if (!res) {
- dprint("failed to start SPI for WIP check\n");
- memset(buf, 0, len);
- return;
- }
-
spi_status_t response = spi_eeprom_wait_while_busy(EXTERNAL_EEPROM_SPI_TIMEOUT);
- spi_stop();
- if (response == SPI_STATUS_TIMEOUT) {
- dprint("SPI timeout for WIP check\n");
+ if (response != SPI_STATUS_SUCCESS) {
+ spi_stop();
memset(buf, 0, len);
+ dprint("SPI timeout for WIP check\n");
return;
}
//-------------------------------------------------
// Perform read
- res = spi_eeprom_start();
+ bool res = spi_eeprom_start();
if (!res) {
- dprint("failed to start SPI for read\n");
+ spi_stop();
memset(buf, 0, len);
+ dprint("failed to start SPI for read\n");
return;
}
@@ -158,15 +158,9 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
//-------------------------------------------------
// Wait for the write-in-progress bit to be cleared
- res = spi_eeprom_start();
- if (!res) {
- dprint("failed to start SPI for WIP check\n");
- return;
- }
-
spi_status_t response = spi_eeprom_wait_while_busy(EXTERNAL_EEPROM_SPI_TIMEOUT);
- spi_stop();
- if (response == SPI_STATUS_TIMEOUT) {
+ if (response != SPI_STATUS_SUCCESS) {
+ spi_stop();
dprint("SPI timeout for WIP check\n");
return;
}
@@ -175,6 +169,7 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
// Enable writes
res = spi_eeprom_start();
if (!res) {
+ spi_stop();
dprint("failed to start SPI for write-enable\n");
return;
}
@@ -186,6 +181,7 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
// Perform the write
res = spi_eeprom_start();
if (!res) {
+ spi_stop();
dprint("failed to start SPI for write\n");
return;
}
diff --git a/drivers/eeprom/eeprom_wear_leveling.c b/drivers/eeprom/eeprom_wear_leveling.c
new file mode 100644
index 0000000000..bd77eef35c
--- /dev/null
+++ b/drivers/eeprom/eeprom_wear_leveling.c
@@ -0,0 +1,23 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include <stdint.h>
+#include <string.h>
+
+#include "eeprom_driver.h"
+#include "wear_leveling.h"
+
+void eeprom_driver_init(void) {
+ wear_leveling_init();
+}
+
+void eeprom_driver_erase(void) {
+ wear_leveling_erase();
+}
+
+void eeprom_read_block(void *buf, const void *addr, size_t len) {
+ wear_leveling_read((uint32_t)addr, buf, len);
+}
+
+void eeprom_write_block(const void *buf, void *addr, size_t len) {
+ wear_leveling_write((uint32_t)addr, buf, len);
+}
diff --git a/drivers/flash/flash_spi.c b/drivers/flash/flash_spi.c
index 684ee06d71..0c0eb8a99e 100644
--- a/drivers/flash/flash_spi.c
+++ b/drivers/flash/flash_spi.c
@@ -207,7 +207,7 @@ flash_status_t flash_erase_sector(uint32_t addr) {
/* Check that the address exceeds the limit. */
if ((addr + (EXTERNAL_FLASH_SECTOR_SIZE)) >= (EXTERNAL_FLASH_SIZE) || ((addr % (EXTERNAL_FLASH_SECTOR_SIZE)) != 0)) {
- dprintf("Flash erase sector address over limit! [addr:0x%x]\n", (uint32_t)addr);
+ dprintf("Flash erase sector address over limit! [addr:0x%lx]\n", (uint32_t)addr);
return FLASH_STATUS_ERROR;
}
@@ -247,7 +247,7 @@ flash_status_t flash_erase_block(uint32_t addr) {
/* Check that the address exceeds the limit. */
if ((addr + (EXTERNAL_FLASH_BLOCK_SIZE)) >= (EXTERNAL_FLASH_SIZE) || ((addr % (EXTERNAL_FLASH_BLOCK_SIZE)) != 0)) {
- dprintf("Flash erase block address over limit! [addr:0x%x]\n", (uint32_t)addr);
+ dprintf("Flash erase block address over limit! [addr:0x%lx]\n", (uint32_t)addr);
return FLASH_STATUS_ERROR;
}
@@ -303,7 +303,7 @@ flash_status_t flash_read_block(uint32_t addr, void *buf, size_t len) {
}
#if defined(CONSOLE_ENABLE) && defined(DEBUG_FLASH_SPI_OUTPUT)
- dprintf("[SPI FLASH R] 0x%08lX: ", addr);
+ dprintf("[SPI FLASH R] 0x%08lx: ", addr);
for (size_t i = 0; i < len; ++i) {
dprintf(" %02X", (int)(((uint8_t *)read_buf)[i]));
}
@@ -339,7 +339,7 @@ flash_status_t flash_write_block(uint32_t addr, const void *buf, size_t len) {
}
#if defined(CONSOLE_ENABLE) && defined(DEBUG_FLASH_SPI_OUTPUT)
- dprintf("[SPI FLASH W] 0x%08lX: ", addr);
+ dprintf("[SPI FLASH W] 0x%08lx: ", addr);
for (size_t i = 0; i < write_length; i++) {
dprintf(" %02X", (int)(uint8_t)(write_buf[i]));
}
diff --git a/drivers/gpio/pca9505.c b/drivers/gpio/pca9505.c
new file mode 100644
index 0000000000..5803746c96
--- /dev/null
+++ b/drivers/gpio/pca9505.c
@@ -0,0 +1,166 @@
+// Copyright 2022 nirim000
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "i2c_master.h"
+#include "pca9505.h"
+
+#include "debug.h"
+
+#define SLAVE_TO_ADDR(n) (n << 1)
+#define TIMEOUT 100
+
+enum {
+ CMD_INPUT_0 = 0,
+ CMD_INPUT_1,
+ CMD_INPUT_2,
+ CMD_INPUT_3,
+ CMD_INPUT_4,
+ CMD_OUTPUT_0 = 8,
+ CMD_OUTPUT_1,
+ CMD_OUTPUT_2,
+ CMD_OUTPUT_3,
+ CMD_OUTPUT_4,
+ CMD_INVERSION_0 = 16,
+ CMD_INVERSION_1,
+ CMD_INVERSION_2,
+ CMD_INVERSION_3,
+ CMD_INVERSION_4,
+ CMD_CONFIG_0 = 24,
+ CMD_CONFIG_1,
+ CMD_CONFIG_2,
+ CMD_CONFIG_3,
+ CMD_CONFIG_4,
+};
+
+void pca9505_init(uint8_t slave_addr) {
+ static uint8_t s_init = 0;
+ if (!s_init) {
+ i2c_init();
+
+ s_init = 1;
+ }
+
+ // TODO: could check device connected
+ // i2c_start(SLAVE_TO_ADDR(slave) | I2C_WRITE);
+ // i2c_stop();
+}
+
+bool pca9505_set_config(uint8_t slave_addr, pca9505_port_t port, uint8_t conf) {
+ uint8_t addr = SLAVE_TO_ADDR(slave_addr);
+ uint8_t cmd = 0;
+ switch (port) {
+ case 0:
+ cmd = CMD_CONFIG_0;
+ break;
+ case 1:
+ cmd = CMD_CONFIG_1;
+ break;
+ case 2:
+ cmd = CMD_CONFIG_2;
+ break;
+ case 3:
+ cmd = CMD_CONFIG_3;
+ break;
+ case 4:
+ cmd = CMD_CONFIG_4;
+ break;
+ }
+
+ i2c_status_t ret = i2c_writeReg(addr, cmd, &conf, sizeof(conf), TIMEOUT);
+ if (ret != I2C_STATUS_SUCCESS) {
+ print("pca9505_set_config::FAILED\n");
+ return false;
+ }
+
+ return true;
+}
+
+bool pca9505_set_polarity(uint8_t slave_addr, pca9505_port_t port, uint8_t conf) {
+ uint8_t addr = SLAVE_TO_ADDR(slave_addr);
+ uint8_t cmd = 0;
+ switch (port) {
+ case 0:
+ cmd = CMD_INVERSION_0;
+ break;
+ case 1:
+ cmd = CMD_INVERSION_1;
+ break;
+ case 2:
+ cmd = CMD_INVERSION_2;
+ break;
+ case 3:
+ cmd = CMD_INVERSION_3;
+ break;
+ case 4:
+ cmd = CMD_INVERSION_4;
+ break;
+ }
+
+ i2c_status_t ret = i2c_writeReg(addr, cmd, &conf, sizeof(conf), TIMEOUT);
+ if (ret != I2C_STATUS_SUCCESS) {
+ print("pca9505_set_polarity::FAILED\n");
+ return false;
+ }
+
+ return true;
+}
+
+bool pca9505_set_output(uint8_t slave_addr, pca9505_port_t port, uint8_t conf) {
+ uint8_t addr = SLAVE_TO_ADDR(slave_addr);
+ uint8_t cmd = 0;
+ switch (port) {
+ case 0:
+ cmd = CMD_OUTPUT_0;
+ break;
+ case 1:
+ cmd = CMD_OUTPUT_1;
+ break;
+ case 2:
+ cmd = CMD_OUTPUT_2;
+ break;
+ case 3:
+ cmd = CMD_OUTPUT_3;
+ break;
+ case 4:
+ cmd = CMD_OUTPUT_4;
+ break;
+ }
+
+ i2c_status_t ret = i2c_writeReg(addr, cmd, &conf, sizeof(conf), TIMEOUT);
+ if (ret != I2C_STATUS_SUCCESS) {
+ print("pca9505_set_output::FAILED\n");
+ return false;
+ }
+
+ return true;
+}
+
+bool pca9505_readPins(uint8_t slave_addr, pca9505_port_t port, uint8_t* out) {
+ uint8_t addr = SLAVE_TO_ADDR(slave_addr);
+ uint8_t cmd = 0;
+ switch (port) {
+ case 0:
+ cmd = CMD_INPUT_0;
+ break;
+ case 1:
+ cmd = CMD_INPUT_1;
+ break;
+ case 2:
+ cmd = CMD_INPUT_2;
+ break;
+ case 3:
+ cmd = CMD_INPUT_3;
+ break;
+ case 4:
+ cmd = CMD_INPUT_4;
+ break;
+ }
+
+ i2c_status_t ret = i2c_readReg(addr, cmd, out, sizeof(uint8_t), TIMEOUT);
+ if (ret != I2C_STATUS_SUCCESS) {
+ print("pca9505_readPins::FAILED\n");
+ return false;
+ }
+
+ return true;
+}
diff --git a/drivers/gpio/pca9505.h b/drivers/gpio/pca9505.h
new file mode 100644
index 0000000000..732ddb88ea
--- /dev/null
+++ b/drivers/gpio/pca9505.h
@@ -0,0 +1,67 @@
+// Copyright 2022 nirim000
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include <stdint.h>
+#include <stdbool.h>
+
+/**
+ * Port ID
+ */
+typedef enum {
+ PCA9505_PORT0,
+ PCA9505_PORT1,
+ PCA9505_PORT2,
+ PCA9505_PORT3,
+ PCA9505_PORT4,
+} pca9505_port_t;
+
+/**
+ * Helpers for set_config
+ */
+enum {
+ ALL_NORMAL = 0,
+ ALL_INVERTED = 0xFF,
+};
+
+/**
+ * Helpers for set_config
+ */
+enum {
+ ALL_OUTPUT = 0,
+ ALL_INPUT = 0xFF,
+};
+
+/**
+ * Helpers for set_output
+ */
+enum {
+ ALL_LOW = 0,
+ ALL_HIGH = 0xFF,
+};
+
+/**
+ * Init expander and any other dependent drivers
+ */
+void pca9505_init(uint8_t slave_addr);
+
+/**
+ * Configure input/output to a given port
+ */
+bool pca9505_set_config(uint8_t slave_addr, pca9505_port_t port, uint8_t conf);
+
+/**
+ * Configure polarity to a given port
+ */
+bool pca9505_set_polarity(uint8_t slave_addr, pca9505_port_t port, uint8_t conf);
+
+/**
+ * Write high/low to a given port
+ */
+bool pca9505_set_output(uint8_t slave_addr, pca9505_port_t port, uint8_t conf);
+
+/**
+ * Read state of a given port
+ */
+bool pca9505_readPins(uint8_t slave_addr, pca9505_port_t port, uint8_t* ret);
diff --git a/drivers/led/aw20216.c b/drivers/led/aw20216.c
index 448accdcd3..55083936ef 100644
--- a/drivers/led/aw20216.c
+++ b/drivers/led/aw20216.c
@@ -53,6 +53,10 @@
# define AW_GLOBAL_CURRENT_MAX 150
#endif
+#ifndef AW_SPI_MODE
+# define AW_SPI_MODE 0
+#endif
+
#ifndef AW_SPI_DIVISOR
# define AW_SPI_DIVISOR 4
#endif
@@ -63,7 +67,7 @@ bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false};
bool AW20216_write(pin_t cs_pin, uint8_t page, uint8_t reg, uint8_t* data, uint8_t len) {
static uint8_t s_spi_transfer_buffer[2] = {0};
- if (!spi_start(cs_pin, false, 3, AW_SPI_DIVISOR)) {
+ if (!spi_start(cs_pin, false, AW_SPI_MODE, AW_SPI_DIVISOR)) {
spi_stop();
return false;
}
diff --git a/drivers/led/ckled2001-simple.c b/drivers/led/ckled2001-simple.c
new file mode 100644
index 0000000000..da4bf20b99
--- /dev/null
+++ b/drivers/led/ckled2001-simple.c
@@ -0,0 +1,218 @@
+/* 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 "ckled2001-simple.h"
+#include "i2c_master.h"
+#include "wait.h"
+
+#ifndef CKLED2001_TIMEOUT
+# define CKLED2001_TIMEOUT 100
+#endif
+
+#ifndef CKLED2001_PERSISTENCE
+# define CKLED2001_PERSISTENCE 0
+#endif
+
+#ifndef PHASE_CHANNEL
+# define PHASE_CHANNEL MSKPHASE_12CHANNEL
+#endif
+
+#ifndef CKLED2001_CURRENT_TUNE
+# define CKLED2001_CURRENT_TUNE \
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
+#endif
+
+// Transfer buffer for TWITransmitData()
+uint8_t g_twi_transfer_buffer[20];
+
+// These buffers match the CKLED2001 PWM registers.
+// The control buffers match the PG0 LED On/Off registers.
+// Storing them like this is optimal for I2C transfers to the registers.
+// We could optimize this and take out the unused registers from these
+// buffers and the transfers in CKLED2001_write_pwm_buffer() but it's
+// probably not worth the extra complexity.
+uint8_t g_pwm_buffer[DRIVER_COUNT][192];
+bool g_pwm_buffer_update_required[DRIVER_COUNT] = {false};
+
+uint8_t g_led_control_registers[DRIVER_COUNT][24] = {0};
+bool g_led_control_registers_update_required[DRIVER_COUNT] = {false};
+
+bool CKLED2001_write_register(uint8_t addr, uint8_t reg, uint8_t data) {
+ // If the transaction fails function returns false.
+ g_twi_transfer_buffer[0] = reg;
+ g_twi_transfer_buffer[1] = data;
+
+#if CKLED2001_PERSISTENCE > 0
+ for (uint8_t i = 0; i < CKLED2001_PERSISTENCE; i++) {
+ if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, CKLED2001_TIMEOUT) != 0) {
+ return false;
+ }
+ }
+#else
+ if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 2, CKLED2001_TIMEOUT) != 0) {
+ return false;
+ }
+#endif
+ return true;
+}
+
+bool CKLED2001_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer) {
+ // Assumes PG1 is already selected.
+ // If any of the transactions fails function returns false.
+ // Transmit PWM registers in 12 transfers of 16 bytes.
+ // g_twi_transfer_buffer[] is 20 bytes
+
+ // Iterate over the pwm_buffer contents at 16 byte intervals.
+ for (int i = 0; i < 192; i += 16) {
+ g_twi_transfer_buffer[0] = i;
+ // Copy the data from i to i+15.
+ // Device will auto-increment register for data after the first byte
+ // Thus this sets registers 0x00-0x0F, 0x10-0x1F, etc. in one transfer.
+ for (int j = 0; j < 16; j++) {
+ g_twi_transfer_buffer[1 + j] = pwm_buffer[i + j];
+ }
+
+#if CKLED2001_PERSISTENCE > 0
+ for (uint8_t i = 0; i < CKLED2001_PERSISTENCE; i++) {
+ if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, CKLED2001_TIMEOUT) != 0) {
+ return false;
+ }
+ }
+#else
+ if (i2c_transmit(addr << 1, g_twi_transfer_buffer, 17, CKLED2001_TIMEOUT) != 0) {
+ return false;
+ }
+#endif
+ }
+ return true;
+}
+
+void CKLED2001_init(uint8_t addr) {
+ // Select to function page
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, FUNCTION_PAGE);
+ // Setting LED driver to shutdown mode
+ CKLED2001_write_register(addr, CONFIGURATION_REG, MSKSW_SHUT_DOWN_MODE);
+ // Setting internal channel pulldown/pullup
+ CKLED2001_write_register(addr, PDU_REG, MSKSET_CA_CB_CHANNEL);
+ // Select number of scan phase
+ CKLED2001_write_register(addr, SCAN_PHASE_REG, PHASE_CHANNEL);
+ // Setting PWM Delay Phase
+ CKLED2001_write_register(addr, SLEW_RATE_CONTROL_MODE1_REG, MSKPWM_DELAY_PHASE_ENABLE);
+ // Setting Driving/Sinking Channel Slew Rate
+ CKLED2001_write_register(addr, SLEW_RATE_CONTROL_MODE2_REG, MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_ENABLE);
+ // Setting Iref
+ CKLED2001_write_register(addr, SOFTWARE_SLEEP_REG, MSKSLEEP_DISABLE);
+ // Set LED CONTROL PAGE (Page 0)
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_CONTROL_PAGE);
+ for (int i = 0; i < LED_CONTROL_ON_OFF_LENGTH; i++) {
+ CKLED2001_write_register(addr, i, 0x00);
+ }
+
+ // Set PWM PAGE (Page 1)
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_PWM_PAGE);
+ for (int i = 0; i < LED_CURRENT_TUNE_LENGTH; i++) {
+ CKLED2001_write_register(addr, i, 0x00);
+ }
+
+ // Set CURRENT PAGE (Page 4)
+ uint8_t current_tuen_reg_list[LED_CURRENT_TUNE_LENGTH] = CKLED2001_CURRENT_TUNE;
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, CURRENT_TUNE_PAGE);
+ for (int i = 0; i < LED_CURRENT_TUNE_LENGTH; i++) {
+ CKLED2001_write_register(addr, i, current_tuen_reg_list[i]);
+ }
+
+ // Enable LEDs ON/OFF
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_CONTROL_PAGE);
+ for (int i = 0; i < LED_CONTROL_ON_OFF_LENGTH; i++) {
+ CKLED2001_write_register(addr, i, 0xFF);
+ }
+
+ // Select to function page
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, FUNCTION_PAGE);
+ // Setting LED driver to normal mode
+ CKLED2001_write_register(addr, CONFIGURATION_REG, MSKSW_NORMAL_MODE);
+}
+
+void CKLED2001_set_value(int index, uint8_t value) {
+ ckled2001_led led;
+ if (index >= 0 && index < DRIVER_LED_TOTAL) {
+ memcpy_P(&led, (&g_ckled2001_leds[index]), sizeof(led));
+
+ g_pwm_buffer[led.driver][led.v] = value;
+ g_pwm_buffer_update_required[led.driver] = true;
+ }
+}
+
+void CKLED2001_set_value_all(uint8_t value) {
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ CKLED2001_set_value(i, value);
+ }
+}
+
+void CKLED2001_set_led_control_register(uint8_t index, bool value) {
+ ckled2001_led led;
+ memcpy_P(&led, (&g_ckled2001_leds[index]), sizeof(led));
+
+ uint8_t control_register = led.v / 8;
+ uint8_t bit_value = led.v % 8;
+
+ if (value) {
+ g_led_control_registers[led.driver][control_register] |= (1 << bit_value);
+ } else {
+ g_led_control_registers[led.driver][control_register] &= ~(1 << bit_value);
+ }
+
+ g_led_control_registers_update_required[led.driver] = true;
+}
+
+void CKLED2001_update_pwm_buffers(uint8_t addr, uint8_t index) {
+ if (g_pwm_buffer_update_required[index]) {
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_PWM_PAGE);
+
+ // If any of the transactions fail we risk writing dirty PG0,
+ // refresh page 0 just in case.
+ if (!CKLED2001_write_pwm_buffer(addr, g_pwm_buffer[index])) {
+ g_led_control_registers_update_required[index] = true;
+ }
+ }
+ g_pwm_buffer_update_required[index] = false;
+}
+
+void CKLED2001_update_led_control_registers(uint8_t addr, uint8_t index) {
+ if (g_led_control_registers_update_required[index]) {
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, LED_CONTROL_PAGE);
+ for (int i = 0; i < 24; i++) {
+ CKLED2001_write_register(addr, i, g_led_control_registers[index][i]);
+ }
+ }
+ g_led_control_registers_update_required[index] = false;
+}
+
+void CKLED2001_sw_return_normal(uint8_t addr) {
+ // Select to function page
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, FUNCTION_PAGE);
+ // Setting LED driver to normal mode
+ CKLED2001_write_register(addr, CONFIGURATION_REG, MSKSW_NORMAL_MODE);
+}
+
+void CKLED2001_sw_shutdown(uint8_t addr) {
+ // Select to function page
+ CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, FUNCTION_PAGE);
+ // Setting LED driver to shutdown mode
+ CKLED2001_write_register(addr, CONFIGURATION_REG, MSKSW_SHUT_DOWN_MODE);
+ // Write SW Sleep Register
+ CKLED2001_write_register(addr, SOFTWARE_SLEEP_REG, MSKSLEEP_ENABLE);
+}
diff --git a/drivers/led/ckled2001-simple.h b/drivers/led/ckled2001-simple.h
new file mode 100644
index 0000000000..731da2e1cd
--- /dev/null
+++ b/drivers/led/ckled2001-simple.h
@@ -0,0 +1,337 @@
+/* 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 <stdint.h>
+#include <stdbool.h>
+#include "progmem.h"
+
+typedef struct ckled2001_led {
+ uint8_t driver : 2;
+ uint8_t v;
+} __attribute__((packed)) ckled2001_led;
+
+extern const ckled2001_led PROGMEM g_ckled2001_leds[DRIVER_LED_TOTAL];
+
+void CKLED2001_init(uint8_t addr);
+bool CKLED2001_write_register(uint8_t addr, uint8_t reg, uint8_t data);
+bool CKLED2001_write_pwm_buffer(uint8_t addr, uint8_t *pwm_buffer);
+
+void CKLED2001_set_value(int index, uint8_t value);
+void CKLED2001_set_value_all(uint8_t value);
+
+void CKLED2001_set_led_control_register(uint8_t index, bool value);
+
+// This should not be called from an interrupt
+// (eg. from a timer interrupt).
+// Call this while idle (in between matrix scans).
+// If the buffer is dirty, it will update the driver with the buffer.
+void CKLED2001_update_pwm_buffers(uint8_t addr, uint8_t index);
+void CKLED2001_update_led_control_registers(uint8_t addr, uint8_t index);
+
+void CKLED2001_sw_return_normal(uint8_t addr);
+void CKLED2001_sw_shutdown(uint8_t addr);
+
+// Registers Page Define
+#define CONFIGURE_CMD_PAGE 0xFD
+#define LED_CONTROL_PAGE 0x00
+#define LED_PWM_PAGE 0x01
+#define FUNCTION_PAGE 0x03
+#define CURRENT_TUNE_PAGE 0x04
+
+// Function Register: address 0x00
+#define CONFIGURATION_REG 0x00
+#define MSKSW_SHUT_DOWN_MODE (0x0 << 0)
+#define MSKSW_NORMAL_MODE (0x1 << 0)
+
+#define DRIVER_ID_REG 0x11
+#define CKLED2001_ID 0x8A
+
+#define PDU_REG 0x13
+#define MSKSET_CA_CB_CHANNEL 0xAA
+#define MSKCLR_CA_CB_CHANNEL 0x00
+
+#define SCAN_PHASE_REG 0x14
+#define MSKPHASE_12CHANNEL 0x00
+#define MSKPHASE_11CHANNEL 0x01
+#define MSKPHASE_10CHANNEL 0x02
+#define MSKPHASE_9CHANNEL 0x03
+#define MSKPHASE_8CHANNEL 0x04
+#define MSKPHASE_7CHANNEL 0x05
+#define MSKPHASE_6CHANNEL 0x06
+#define MSKPHASE_5CHANNEL 0x07
+#define MSKPHASE_4CHANNEL 0x08
+#define MSKPHASE_3CHANNEL 0x09
+#define MSKPHASE_2CHANNEL 0x0A
+#define MSKPHASE_1CHANNEL 0x0B
+
+#define SLEW_RATE_CONTROL_MODE1_REG 0x15
+#define MSKPWM_DELAY_PHASE_ENABLE 0x04
+#define MSKPWM_DELAY_PHASE_DISABLE 0x00
+
+#define SLEW_RATE_CONTROL_MODE2_REG 0x16
+#define MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_ENABLE 0xC0
+#define MSKDRIVING_SINKING_CHHANNEL_SLEWRATE_DISABLE 0x00
+
+#define OPEN_SHORT_ENABLE_REG 0x17
+#define MSKOPEN_DETECTION_ENABLE (0x01 << 7)
+#define MSKOPEN_DETECTION_DISABLE (0x00)
+
+#define MSKSHORT_DETECTION_ENABLE (0x01 << 6)
+#define MSKSHORT_DETECTION_DISABLE (0x00)
+
+#define OPEN_SHORT_DUTY_REG 0x18
+#define OPEN_SHORT_FLAG_REG 0x19
+
+#define MSKOPEN_DETECTION_INTERRUPT_ENABLE (0x01 << 7)
+#define MSKOPEN_DETECTION_INTERRUPT_DISABLE (0x00)
+
+#define MSKSHORT_DETECTION_INTERRUPT_ENABLE (0x01 << 6)
+#define MSKSHORT_DETECTION_INTERRUPT_DISABLE (0x00)
+
+#define SOFTWARE_SLEEP_REG 0x1A
+#define MSKSLEEP_ENABLE 0x02
+#define MSKSLEEP_DISABLE 0x00
+
+// LED Control Registers
+#define LED_CONTROL_ON_OFF_FIRST_ADDR 0x0
+#define LED_CONTROL_ON_OFF_LAST_ADDR 0x17
+#define LED_CONTROL_ON_OFF_LENGTH ((LED_CONTROL_ON_OFF_LAST_ADDR - LED_CONTROL_ON_OFF_FIRST_ADDR) + 1)
+
+#define LED_CONTROL_OPEN_FIRST_ADDR 0x18
+#define LED_CONTROL_OPEN_LAST_ADDR 0x2F
+#define LED_CONTROL_OPEN_LENGTH ((LED_CONTROL_OPEN_LAST_ADDR - LED_CONTROL_OPEN_FIRST_ADDR) + 1)
+
+#define LED_CONTROL_SHORT_FIRST_ADDR 0x30
+#define LED_CONTROL_SHORT_LAST_ADDR 0x47
+#define LED_CONTROL_SHORT_LENGTH ((LED_CONTROL_SHORT_LAST_ADDR - LED_CONTROL_SHORT_FIRST_ADDR) + 1)
+
+#define LED_CONTROL_PAGE_LENGTH 0x48
+
+// LED Control Registers
+#define LED_PWM_FIRST_ADDR 0x00
+#define LED_PWM_LAST_ADDR 0xBF
+#define LED_PWM_LENGTH 0xC0
+
+// Current Tune Registers
+#define LED_CURRENT_TUNE_FIRST_ADDR 0x00
+#define LED_CURRENT_TUNE_LAST_ADDR 0x0B
+#define LED_CURRENT_TUNE_LENGTH 0x0C
+
+#define A_1 0x00
+#define A_2 0x01
+#define A_3 0x02
+#define A_4 0x03
+#define A_5 0x04
+#define A_6 0x05
+#define A_7 0x06
+#define A_8 0x07
+#define A_9 0x08
+#define A_10 0x09
+#define A_11 0x0A
+#define A_12 0x0B
+#define A_13 0x0C
+#define A_14 0x0D
+#define A_15 0x0E
+#define A_16 0x0F
+
+#define B_1 0x10
+#define B_2 0x11
+#define B_3 0x12
+#define B_4 0x13
+#define B_5 0x14
+#define B_6 0x15
+#define B_7 0x16
+#define B_8 0x17
+#define B_9 0x18
+#define B_10 0x19
+#define B_11 0x1A
+#define B_12 0x1B
+#define B_13 0x1C
+#define B_14 0x1D
+#define B_15 0x1E
+#define B_16 0x1F
+
+#define C_1 0x20
+#define C_2 0x21
+#define C_3 0x22
+#define C_4 0x23
+#define C_5 0x24
+#define C_6 0x25
+#define C_7 0x26
+#define C_8 0x27
+#define C_9 0x28
+#define C_10 0x29
+#define C_11 0x2A
+#define C_12 0x2B
+#define C_13 0x2C
+#define C_14 0x2D
+#define C_15 0x2E
+#define C_16 0x2F
+
+#define D_1 0x30
+#define D_2 0x31
+#define D_3 0x32
+#define D_4 0x33
+#define D_5 0x34
+#define D_6 0x35
+#define D_7 0x36
+#define D_8 0x37
+#define D_9 0x38
+#define D_10 0x39
+#define D_11 0x3A
+#define D_12 0x3B
+#define D_13 0x3C
+#define D_14 0x3D
+#define D_15 0x3E
+#define D_16 0x3F
+
+#define E_1 0x40
+#define E_2 0x41
+#define E_3 0x42
+#define E_4 0x43
+#define E_5 0x44
+#define E_6 0x45
+#define E_7 0x46
+#define E_8 0x47
+#define E_9 0x48
+#define E_10 0x49
+#define E_11 0x4A
+#define E_12 0x4B
+#define E_13 0x4C
+#define E_14 0x4D
+#define E_15 0x4E
+#define E_16 0x4F
+
+#define F_1 0x50
+#define F_2 0x51
+#define F_3 0x52
+#define F_4 0x53
+#define F_5 0x54
+#define F_6 0x55
+#define F_7 0x56
+#define F_8 0x57
+#define F_9 0x58
+#define F_10 0x59
+#define F_11 0x5A
+#define F_12 0x5B
+#define F_13 0x5C
+#define F_14 0x5D
+#define F_15 0x5E
+#define F_16 0x5F
+
+#define G_1 0x60
+#define G_2 0x61
+#define G_3 0x62
+#define G_4 0x63
+#define G_5 0x64
+#define G_6 0x65
+#define G_7 0x66
+#define G_8 0x67
+#define G_9 0x68
+#define G_10 0x69
+#define G_11 0x6A
+#define G_12 0x6B
+#define G_13 0x6C
+#define G_14 0x6D
+#define G_15 0x6E
+#define G_16 0x6F
+
+#define H_1 0x70
+#define H_2 0x71
+#define H_3 0x72
+#define H_4 0x73
+#define H_5 0x74
+#define H_6 0x75
+#define H_7 0x76
+#define H_8 0x77
+#define H_9 0x78
+#define H_10 0x79
+#define H_11 0x7A
+#define H_12 0x7B
+#define H_13 0x7C
+#define H_14 0x7D
+#define H_15 0x7E
+#define H_16 0x7F
+
+#define I_1 0x80
+#define I_2 0x81
+#define I_3 0x82
+#define I_4 0x83
+#define I_5 0x84
+#define I_6 0x85
+#define I_7 0x86
+#define I_8 0x87
+#define I_9 0x88
+#define I_10 0x89
+#define I_11 0x8A
+#define I_12 0x8B
+#define I_13 0x8C
+#define I_14 0x8D
+#define I_15 0x8E
+#define I_16 0x8F
+
+#define J_1 0x90
+#define J_2 0x91
+#define J_3 0x92
+#define J_4 0x93
+#define J_5 0x94
+#define J_6 0x95
+#define J_7 0x96
+#define J_8 0x97
+#define J_9 0x98
+#define J_10 0x99
+#define J_11 0x9A
+#define J_12 0x9B
+#define J_13 0x9C
+#define J_14 0x9D
+#define J_15 0x9E
+#define J_16 0x9F
+
+#define K_1 0xA0
+#define K_2 0xA1
+#define K_3 0xA2
+#define K_4 0xA3
+#define K_5 0xA4
+#define K_6 0xA5
+#define K_7 0xA6
+#define K_8 0xA7
+#define K_9 0xA8
+#define K_10 0xA9
+#define K_11 0xAA
+#define K_12 0xAB
+#define K_13 0xAC
+#define K_14 0xAD
+#define K_15 0xAE
+#define K_16 0xAF
+
+#define L_1 0xB0
+#define L_2 0xB1
+#define L_3 0xB2
+#define L_4 0xB3
+#define L_5 0xB4
+#define L_6 0xB5
+#define L_7 0xB6
+#define L_8 0xB7
+#define L_9 0xB8
+#define L_10 0xB9
+#define L_11 0xBA
+#define L_12 0xBB
+#define L_13 0xBC
+#define L_14 0xBD
+#define L_15 0xBE
+#define L_16 0xBF \ No newline at end of file
diff --git a/drivers/led/ckled2001.c b/drivers/led/ckled2001.c
index 8d71805a24..b7e7db06cc 100644
--- a/drivers/led/ckled2001.c
+++ b/drivers/led/ckled2001.c
@@ -30,6 +30,11 @@
# define PHASE_CHANNEL MSKPHASE_12CHANNEL
#endif
+#ifndef CKLED2001_CURRENT_TUNE
+# define CKLED2001_CURRENT_TUNE \
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
+#endif
+
// Transfer buffer for TWITransmitData()
uint8_t g_twi_transfer_buffer[20];
@@ -123,18 +128,10 @@ void CKLED2001_init(uint8_t addr) {
}
// Set CURRENT PAGE (Page 4)
+ uint8_t current_tuen_reg_list[LED_CURRENT_TUNE_LENGTH] = CKLED2001_CURRENT_TUNE;
CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, CURRENT_TUNE_PAGE);
for (int i = 0; i < LED_CURRENT_TUNE_LENGTH; i++) {
- switch (i) {
- case 2:
- case 5:
- case 8:
- case 11:
- CKLED2001_write_register(addr, i, 0xA0);
- break;
- default:
- CKLED2001_write_register(addr, i, 0xFF);
- }
+ CKLED2001_write_register(addr, i, current_tuen_reg_list[i]);
}
// Enable LEDs ON/OFF
@@ -220,14 +217,14 @@ void CKLED2001_update_led_control_registers(uint8_t addr, uint8_t index) {
g_led_control_registers_update_required[index] = false;
}
-void CKLED2001_return_normal(uint8_t addr) {
+void CKLED2001_sw_return_normal(uint8_t addr) {
// Select to function page
CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, FUNCTION_PAGE);
// Setting LED driver to normal mode
CKLED2001_write_register(addr, CONFIGURATION_REG, MSKSW_NORMAL_MODE);
}
-void CKLED2001_shutdown(uint8_t addr) {
+void CKLED2001_sw_shutdown(uint8_t addr) {
// Select to function page
CKLED2001_write_register(addr, CONFIGURE_CMD_PAGE, FUNCTION_PAGE);
// Setting LED driver to shutdown mode
diff --git a/drivers/led/ckled2001.h b/drivers/led/ckled2001.h
index 1967961d20..7d5ad34f95 100644
--- a/drivers/led/ckled2001.h
+++ b/drivers/led/ckled2001.h
@@ -45,8 +45,8 @@ void CKLED2001_set_led_control_register(uint8_t index, bool red, bool green, boo
void CKLED2001_update_pwm_buffers(uint8_t addr, uint8_t index);
void CKLED2001_update_led_control_registers(uint8_t addr, uint8_t index);
-void CKLED2001_return_normal(uint8_t addr);
-void CKLED2001_shutdown(uint8_t addr);
+void CKLED2001_sw_return_normal(uint8_t addr);
+void CKLED2001_sw_shutdown(uint8_t addr);
// Registers Page Define
#define CONFIGURE_CMD_PAGE 0xFD
diff --git a/drivers/led/issi/is31fl3733-simple.c b/drivers/led/issi/is31fl3733-simple.c
index af006f756d..2f41a7b1a9 100644
--- a/drivers/led/issi/is31fl3733-simple.c
+++ b/drivers/led/issi/is31fl3733-simple.c
@@ -70,6 +70,10 @@
# define ISSI_CSPULLUP PUR_0R
#endif
+#ifndef ISSI_GLOBALCURRENT
+# define ISSI_GLOBALCURRENT 0xFF
+#endif
+
// Transfer buffer for TWITransmitData()
uint8_t g_twi_transfer_buffer[20];
@@ -182,7 +186,7 @@ void IS31FL3733_init(uint8_t addr, uint8_t sync) {
// Set de-ghost pull-down resistors (CSx)
IS31FL3733_write_register(addr, ISSI_REG_CSPULLUP, ISSI_CSPULLUP);
// Set global current to maximum.
- IS31FL3733_write_register(addr, ISSI_REG_GLOBALCURRENT, 0xFF);
+ IS31FL3733_write_register(addr, ISSI_REG_GLOBALCURRENT, ISSI_GLOBALCURRENT);
// Disable software shutdown.
IS31FL3733_write_register(addr, ISSI_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((ISSI_PWM_FREQUENCY & 0b111) << 3) | 0x01);
diff --git a/drivers/led/issi/is31fl3733.c b/drivers/led/issi/is31fl3733.c
index a2fdaa90fa..add998f256 100644
--- a/drivers/led/issi/is31fl3733.c
+++ b/drivers/led/issi/is31fl3733.c
@@ -69,6 +69,10 @@
# define ISSI_CSPULLUP PUR_0R
#endif
+#ifndef ISSI_GLOBALCURRENT
+# define ISSI_GLOBALCURRENT 0xFF
+#endif
+
// Transfer buffer for TWITransmitData()
uint8_t g_twi_transfer_buffer[20];
@@ -172,7 +176,7 @@ void IS31FL3733_init(uint8_t addr, uint8_t sync) {
// Set de-ghost pull-down resistors (CSx)
IS31FL3733_write_register(addr, ISSI_REG_CSPULLUP, ISSI_CSPULLUP);
// Set global current to maximum.
- IS31FL3733_write_register(addr, ISSI_REG_GLOBALCURRENT, 0xFF);
+ IS31FL3733_write_register(addr, ISSI_REG_GLOBALCURRENT, ISSI_GLOBALCURRENT);
// Disable software shutdown.
IS31FL3733_write_register(addr, ISSI_REG_CONFIGURATION, ((sync & 0b11) << 6) | ((ISSI_PWM_FREQUENCY & 0b111) << 3) | 0x01);
diff --git a/drivers/led/issi/is31fl3736.c b/drivers/led/issi/is31fl3736.c
index 7752a3f6cb..e9943614d2 100644
--- a/drivers/led/issi/is31fl3736.c
+++ b/drivers/led/issi/is31fl3736.c
@@ -63,6 +63,10 @@
# define ISSI_CSPULLUP PUR_0R
#endif
+#ifndef ISSI_GLOBALCURRENT
+# define ISSI_GLOBALCURRENT 0xFF
+#endif
+
// Transfer buffer for TWITransmitData()
uint8_t g_twi_transfer_buffer[20];
@@ -154,7 +158,7 @@ void IS31FL3736_init(uint8_t addr) {
// Set de-ghost pull-down resistors (CSx)
IS31FL3736_write_register(addr, ISSI_REG_CSPULLUP, ISSI_CSPULLUP);
// Set global current to maximum.
- IS31FL3736_write_register(addr, ISSI_REG_GLOBALCURRENT, 0xFF);
+ IS31FL3736_write_register(addr, ISSI_REG_GLOBALCURRENT, ISSI_GLOBALCURRENT);
// Disable software shutdown.
IS31FL3736_write_register(addr, ISSI_REG_CONFIGURATION, 0x01);
diff --git a/drivers/led/issi/is31fl3737.c b/drivers/led/issi/is31fl3737.c
index bce0c34b2c..932530ac0a 100644
--- a/drivers/led/issi/is31fl3737.c
+++ b/drivers/led/issi/is31fl3737.c
@@ -69,6 +69,10 @@
# define ISSI_CSPULLUP PUR_0R
#endif
+#ifndef ISSI_GLOBALCURRENT
+# define ISSI_GLOBALCURRENT 0xFF
+#endif
+
// Transfer buffer for TWITransmitData()
uint8_t g_twi_transfer_buffer[20];
@@ -161,7 +165,7 @@ void IS31FL3737_init(uint8_t addr) {
// Set de-ghost pull-down resistors (CSx)
IS31FL3737_write_register(addr, ISSI_REG_CSPULLUP, ISSI_CSPULLUP);
// Set global current to maximum.
- IS31FL3737_write_register(addr, ISSI_REG_GLOBALCURRENT, 0xFF);
+ IS31FL3737_write_register(addr, ISSI_REG_GLOBALCURRENT, ISSI_GLOBALCURRENT);
// Disable software shutdown.
IS31FL3737_write_register(addr, ISSI_REG_CONFIGURATION, ((ISSI_PWM_FREQUENCY & 0b111) << 3) | 0x01);
diff --git a/drivers/led/issi/is31fl3741.c b/drivers/led/issi/is31fl3741.c
index 393b0179b5..ba6b6761a3 100644
--- a/drivers/led/issi/is31fl3741.c
+++ b/drivers/led/issi/is31fl3741.c
@@ -69,6 +69,10 @@
# define ISSI_CSPULLUP PUR_32KR
#endif
+#ifndef ISSI_GLOBALCURRENT
+# define ISSI_GLOBALCURRENT 0xFF
+#endif
+
#define ISSI_MAX_LEDS 351
// Transfer buffer for TWITransmitData()
@@ -163,7 +167,7 @@ void IS31FL3741_init(uint8_t addr) {
IS31FL3741_write_register(addr, ISSI_REG_CONFIGURATION, 0x01);
// Set Golbal Current Control Register
- IS31FL3741_write_register(addr, ISSI_REG_GLOBALCURRENT, 0xFF);
+ IS31FL3741_write_register(addr, ISSI_REG_GLOBALCURRENT, ISSI_GLOBALCURRENT);
// Set Pull up & Down for SWx CSy
IS31FL3741_write_register(addr, ISSI_REG_PULLDOWNUP, ((ISSI_CSPULLUP << 4) | ISSI_SWPULLUP));
diff --git a/drivers/painter/gc9a01/qp_gc9a01.c b/drivers/painter/gc9a01/qp_gc9a01.c
index ad76d58b07..37700a28a4 100644
--- a/drivers/painter/gc9a01/qp_gc9a01.c
+++ b/drivers/painter/gc9a01/qp_gc9a01.c
@@ -102,12 +102,11 @@ const struct tft_panel_dc_reset_painter_driver_vtable_t gc9a01_driver_vtable = {
.flush = qp_tft_panel_flush,
.pixdata = qp_tft_panel_pixdata,
.viewport = qp_tft_panel_viewport,
- .palette_convert = qp_tft_panel_palette_convert,
- .append_pixels = qp_tft_panel_append_pixels,
+ .palette_convert = qp_tft_panel_palette_convert_rgb565_swapped,
+ .append_pixels = qp_tft_panel_append_pixels_rgb565,
},
- .rgb888_to_native16bit = qp_rgb888_to_rgb565_swapped,
- .num_window_bytes = 2,
- .swap_window_coords = false,
+ .num_window_bytes = 2,
+ .swap_window_coords = false,
.opcodes =
{
.display_on = GC9A01_CMD_DISPLAY_ON,
diff --git a/drivers/painter/ili9xxx/qp_ili9163.c b/drivers/painter/ili9xxx/qp_ili9163.c
index beaac0fbb5..14363c7d04 100644
--- a/drivers/painter/ili9xxx/qp_ili9163.c
+++ b/drivers/painter/ili9xxx/qp_ili9163.c
@@ -67,12 +67,11 @@ const struct tft_panel_dc_reset_painter_driver_vtable_t ili9163_driver_vtable =
.flush = qp_tft_panel_flush,
.pixdata = qp_tft_panel_pixdata,
.viewport = qp_tft_panel_viewport,
- .palette_convert = qp_tft_panel_palette_convert,
- .append_pixels = qp_tft_panel_append_pixels,
+ .palette_convert = qp_tft_panel_palette_convert_rgb565_swapped,
+ .append_pixels = qp_tft_panel_append_pixels_rgb565,
},
- .rgb888_to_native16bit = qp_rgb888_to_rgb565_swapped,
- .num_window_bytes = 2,
- .swap_window_coords = false,
+ .num_window_bytes = 2,
+ .swap_window_coords = false,
.opcodes =
{
.display_on = ILI9XXX_CMD_DISPLAY_ON,
diff --git a/drivers/painter/ili9xxx/qp_ili9341.c b/drivers/painter/ili9xxx/qp_ili9341.c
index 1f41dcfc0b..9608f109bd 100644
--- a/drivers/painter/ili9xxx/qp_ili9341.c
+++ b/drivers/painter/ili9xxx/qp_ili9341.c
@@ -74,12 +74,11 @@ const struct tft_panel_dc_reset_painter_driver_vtable_t ili9341_driver_vtable =
.flush = qp_tft_panel_flush,
.pixdata = qp_tft_panel_pixdata,
.viewport = qp_tft_panel_viewport,
- .palette_convert = qp_tft_panel_palette_convert,
- .append_pixels = qp_tft_panel_append_pixels,
+ .palette_convert = qp_tft_panel_palette_convert_rgb565_swapped,
+ .append_pixels = qp_tft_panel_append_pixels_rgb565,
},
- .rgb888_to_native16bit = qp_rgb888_to_rgb565_swapped,
- .num_window_bytes = 2,
- .swap_window_coords = false,
+ .num_window_bytes = 2,
+ .swap_window_coords = false,
.opcodes =
{
.display_on = ILI9XXX_CMD_DISPLAY_ON,
diff --git a/drivers/painter/ili9xxx/qp_ili9488.c b/drivers/painter/ili9xxx/qp_ili9488.c
new file mode 100644
index 0000000000..55cf9f896f
--- /dev/null
+++ b/drivers/painter/ili9xxx/qp_ili9488.c
@@ -0,0 +1,120 @@
+// Copyright 2021 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "qp_internal.h"
+#include "qp_comms.h"
+#include "qp_ili9488.h"
+#include "qp_ili9xxx_opcodes.h"
+#include "qp_tft_panel.h"
+
+#ifdef QUANTUM_PAINTER_ILI9488_SPI_ENABLE
+# include <qp_comms_spi.h>
+#endif // QUANTUM_PAINTER_ILI9488_SPI_ENABLE
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Common
+
+// Driver storage
+tft_panel_dc_reset_painter_device_t ili9488_drivers[ILI9488_NUM_DEVICES] = {0};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Initialization
+
+bool qp_ili9488_init(painter_device_t device, painter_rotation_t rotation) {
+ // clang-format off
+ const uint8_t ili9488_init_sequence[] = {
+ // Command, Delay, N, Data[N]
+ ILI9XXX_CMD_RESET, 120, 0,
+ ILI9XXX_SET_PGAMMA, 0, 15, 0x00, 0x03, 0x09, 0x08, 0x16, 0x0A, 0x3F, 0x78, 0x4C, 0x09, 0x0A, 0x08, 0x16, 0x1A, 0x0F,
+ ILI9XXX_SET_NGAMMA, 0, 15, 0x00, 0x16, 0x19, 0x03, 0x0F, 0x05, 0x32, 0x45, 0x46, 0x04, 0x0E, 0x0D, 0x35, 0x37, 0x0F,
+ ILI9XXX_SET_POWER_CTL_1, 0, 2, 0x17, 0x15,
+ ILI9XXX_SET_POWER_CTL_2, 0, 1, 0x41,
+ ILI9XXX_SET_VCOM_CTL_1, 0, 3, 0x00, 0x12, 0x80,
+ ILI9XXX_SET_PIX_FMT, 0, 1, 0x66,
+ ILI9XXX_SET_RGB_IF_SIG_CTL, 0, 1, 0x80,
+ ILI9XXX_SET_FRAME_CTL_NORMAL, 0, 1, 0xA0,
+ ILI9XXX_SET_INVERSION_CTL, 0, 1, 0x02,
+ ILI9XXX_SET_FUNCTION_CTL, 0, 2, 0x02, 0x02,
+ ILI9XXX_SET_IMAGE_FUNCTION, 0, 1, 0x00,
+ ILI9XXX_SET_PUMP_RATIO_CTL, 0, 4, 0xA9, 0x51, 0x2C, 0x82,
+ ILI9XXX_CMD_SLEEP_OFF, 5, 0,
+ ILI9XXX_CMD_DISPLAY_ON, 20, 0
+ };
+ // clang-format on
+ qp_comms_bulk_command_sequence(device, ili9488_init_sequence, sizeof(ili9488_init_sequence));
+
+ // Configure the rotation (i.e. the ordering and direction of memory writes in GRAM)
+ const uint8_t madctl[] = {
+ [QP_ROTATION_0] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MY,
+ [QP_ROTATION_90] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MX | ILI9XXX_MADCTL_MV | ILI9XXX_MADCTL_MY,
+ [QP_ROTATION_180] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MX,
+ [QP_ROTATION_270] = ILI9XXX_MADCTL_BGR | ILI9XXX_MADCTL_MV,
+ };
+ qp_comms_command_databyte(device, ILI9XXX_SET_MEM_ACS_CTL, madctl[rotation]);
+
+ return true;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Driver vtable
+
+const struct tft_panel_dc_reset_painter_driver_vtable_t ili9488_driver_vtable = {
+ .base =
+ {
+ .init = qp_ili9488_init,
+ .power = qp_tft_panel_power,
+ .clear = qp_tft_panel_clear,
+ .flush = qp_tft_panel_flush,
+ .pixdata = qp_tft_panel_pixdata,
+ .viewport = qp_tft_panel_viewport,
+ .palette_convert = qp_tft_panel_palette_convert_rgb888,
+ .append_pixels = qp_tft_panel_append_pixels_rgb888,
+ },
+ .num_window_bytes = 2,
+ .swap_window_coords = false,
+ .opcodes =
+ {
+ .display_on = ILI9XXX_CMD_DISPLAY_ON,
+ .display_off = ILI9XXX_CMD_DISPLAY_OFF,
+ .set_column_address = ILI9XXX_SET_COL_ADDR,
+ .set_row_address = ILI9XXX_SET_PAGE_ADDR,
+ .enable_writes = ILI9XXX_SET_MEM,
+ },
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// SPI
+
+#ifdef QUANTUM_PAINTER_ILI9488_SPI_ENABLE
+
+// Factory function for creating a handle to the ILI9488 device
+painter_device_t qp_ili9488_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode) {
+ for (uint32_t i = 0; i < ILI9488_NUM_DEVICES; ++i) {
+ tft_panel_dc_reset_painter_device_t *driver = &ili9488_drivers[i];
+ if (!driver->base.driver_vtable) {
+ driver->base.driver_vtable = (const struct painter_driver_vtable_t *)&ili9488_driver_vtable;
+ driver->base.comms_vtable = (const struct painter_comms_vtable_t *)&spi_comms_with_dc_vtable;
+ driver->base.native_bits_per_pixel = 24; // RGB888
+ driver->base.panel_width = panel_width;
+ driver->base.panel_height = panel_height;
+ driver->base.rotation = QP_ROTATION_0;
+ driver->base.offset_x = 0;
+ driver->base.offset_y = 0;
+
+ // SPI and other pin configuration
+ driver->base.comms_config = &driver->spi_dc_reset_config;
+ driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin;
+ driver->spi_dc_reset_config.spi_config.divisor = spi_divisor;
+ driver->spi_dc_reset_config.spi_config.lsb_first = false;
+ driver->spi_dc_reset_config.spi_config.mode = spi_mode;
+ driver->spi_dc_reset_config.dc_pin = dc_pin;
+ driver->spi_dc_reset_config.reset_pin = reset_pin;
+ return (painter_device_t)driver;
+ }
+ }
+ return NULL;
+}
+
+#endif // QUANTUM_PAINTER_ILI9488_SPI_ENABLE
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/drivers/painter/ili9xxx/qp_ili9488.h b/drivers/painter/ili9xxx/qp_ili9488.h
new file mode 100644
index 0000000000..21b8f03322
--- /dev/null
+++ b/drivers/painter/ili9xxx/qp_ili9488.h
@@ -0,0 +1,37 @@
+// Copyright 2021 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "gpio.h"
+#include "qp_internal.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Quantum Painter ILI9488 configurables (add to your keyboard's config.h)
+
+#ifndef ILI9488_NUM_DEVICES
+/**
+ * @def This controls the maximum number of ILI9488 devices that Quantum Painter can communicate with at any one time.
+ * Increasing this number allows for multiple displays to be used.
+ */
+# define ILI9488_NUM_DEVICES 1
+#endif
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Quantum Painter ILI9488 device factories
+
+#ifdef QUANTUM_PAINTER_ILI9488_SPI_ENABLE
+/**
+ * Factory method for an ILI9488 SPI LCD device.
+ *
+ * @param panel_width[in] the width of the display panel
+ * @param panel_height[in] the height of the display panel
+ * @param chip_select_pin[in] the GPIO pin used for SPI chip select
+ * @param dc_pin[in] the GPIO pin used for D/C control
+ * @param reset_pin[in] the GPIO pin used for RST
+ * @param spi_divisor[in] the SPI divisor to use when communicating with the display
+ * @param spi_mode[in] the SPI mode to use when communicating with the display
+ * @return the device handle used with all drawing routines in Quantum Painter
+ */
+painter_device_t qp_ili9488_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
+#endif // QUANTUM_PAINTER_ILI9488_SPI_ENABLE
diff --git a/drivers/painter/ili9xxx/qp_ili9xxx_opcodes.h b/drivers/painter/ili9xxx/qp_ili9xxx_opcodes.h
index 1fa395cb89..47bb703648 100644
--- a/drivers/painter/ili9xxx/qp_ili9xxx_opcodes.h
+++ b/drivers/painter/ili9xxx/qp_ili9xxx_opcodes.h
@@ -85,6 +85,7 @@
#define ILI9XXX_SET_NGAMMA 0xE1 // Set negative gamma
#define ILI9XXX_SET_DGAMMA_CTL_1 0xE2 // Set digital gamma ctl 1
#define ILI9XXX_SET_DGAMMA_CTL_2 0xE3 // Set digital gamma ctl 2
+#define ILI9XXX_SET_IMAGE_FUNCTION 0xE9 // Set image function
#define ILI9XXX_ENABLE_3_GAMMA 0xF2 // Enable 3 gamma
#define ILI9XXX_SET_IF_CTL 0xF6 // Set interface control
#define ILI9XXX_SET_PUMP_RATIO_CTL 0xF7 // Set pump ratio control
diff --git a/drivers/painter/ssd1351/qp_ssd1351.c b/drivers/painter/ssd1351/qp_ssd1351.c
index 970e7e67f3..7ce76bab6d 100644
--- a/drivers/painter/ssd1351/qp_ssd1351.c
+++ b/drivers/painter/ssd1351/qp_ssd1351.c
@@ -71,12 +71,11 @@ const struct tft_panel_dc_reset_painter_driver_vtable_t ssd1351_driver_vtable =
.flush = qp_tft_panel_flush,
.pixdata = qp_tft_panel_pixdata,
.viewport = qp_tft_panel_viewport,
- .palette_convert = qp_tft_panel_palette_convert,
- .append_pixels = qp_tft_panel_append_pixels,
+ .palette_convert = qp_tft_panel_palette_convert_rgb565_swapped,
+ .append_pixels = qp_tft_panel_append_pixels_rgb565,
},
- .rgb888_to_native16bit = qp_rgb888_to_rgb565_swapped,
- .num_window_bytes = 1,
- .swap_window_coords = true,
+ .num_window_bytes = 1,
+ .swap_window_coords = true,
.opcodes =
{
.display_on = SSD1351_DISPLAYON,
diff --git a/drivers/painter/st77xx/qp_st7735.c b/drivers/painter/st77xx/qp_st7735.c
new file mode 100644
index 0000000000..e434e31b92
--- /dev/null
+++ b/drivers/painter/st77xx/qp_st7735.c
@@ -0,0 +1,144 @@
+// Copyright 2021 Paul Cotter (@gr1mr3aver)
+// Copyright 2021 Nick Brassel (@tzarc)
+// Copyright 2022 David Hoelscher (@customMK)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "qp_internal.h"
+#include "qp_comms.h"
+#include "qp_st7735.h"
+#include "qp_st77xx_opcodes.h"
+#include "qp_st7735_opcodes.h"
+#include "qp_tft_panel.h"
+
+#ifdef QUANTUM_PAINTER_ST7735_SPI_ENABLE
+# include "qp_comms_spi.h"
+#endif // QUANTUM_PAINTER_ST7735_SPI_ENABLE
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Common
+
+// Driver storage
+tft_panel_dc_reset_painter_device_t st7735_drivers[ST7735_NUM_DEVICES] = {0};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Automatic viewport offsets
+
+#ifndef ST7735_NO_AUTOMATIC_OFFSETS
+static inline void st7735_automatic_viewport_offsets(painter_device_t device, painter_rotation_t rotation) {
+ struct painter_driver_t *driver = (struct painter_driver_t *)device;
+
+ // clang-format off
+ const struct {
+ uint16_t offset_x;
+ uint16_t offset_y;
+ } rotation_offsets_80x160[] = {
+ [QP_ROTATION_0] = { .offset_x = 24, .offset_y = 0 },
+ [QP_ROTATION_90] = { .offset_x = 0, .offset_y = 24 },
+ [QP_ROTATION_180] = { .offset_x = 24, .offset_y = 0 },
+ [QP_ROTATION_270] = { .offset_x = 0, .offset_y = 24 },
+ };
+ // clang-format on
+
+ if (driver->panel_width == 80 && driver->panel_height == 160) {
+ driver->offset_x = rotation_offsets_80x160[rotation].offset_x;
+ driver->offset_y = rotation_offsets_80x160[rotation].offset_y;
+ }
+}
+#endif // ST7735_NO_AUTOMATIC_OFFSETS
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Initialization
+
+bool qp_st7735_init(painter_device_t device, painter_rotation_t rotation) {
+ // clang-format off
+ const uint8_t st7735_init_sequence[] = {
+ // Command, Delay, N, Data[N]
+ ST77XX_CMD_RESET, 120, 0,
+ ST77XX_CMD_SLEEP_OFF, 5, 0,
+ ST77XX_SET_PIX_FMT, 0, 1, 0x55,
+ ST77XX_CMD_INVERT_OFF, 0, 0,
+ ST77XX_CMD_NORMAL_ON, 0, 0,
+ ST77XX_CMD_DISPLAY_ON, 20, 0
+ };
+ // clang-format on
+ qp_comms_bulk_command_sequence(device, st7735_init_sequence, sizeof(st7735_init_sequence));
+
+ // Configure the rotation (i.e. the ordering and direction of memory writes in GRAM)
+ const uint8_t madctl[] = {
+ [QP_ROTATION_0] = ST77XX_MADCTL_BGR,
+ [QP_ROTATION_90] = ST77XX_MADCTL_BGR | ST77XX_MADCTL_MX | ST77XX_MADCTL_MV,
+ [QP_ROTATION_180] = ST77XX_MADCTL_BGR | ST77XX_MADCTL_MX | ST77XX_MADCTL_MY,
+ [QP_ROTATION_270] = ST77XX_MADCTL_BGR | ST77XX_MADCTL_MV | ST77XX_MADCTL_MY,
+ };
+ qp_comms_command_databyte(device, ST77XX_SET_MADCTL, madctl[rotation]);
+
+#ifndef ST7735_NO_AUTOMATIC_VIEWPORT_OFFSETS
+ st7735_automatic_viewport_offsets(device, rotation);
+#endif // ST7735_NO_AUTOMATIC_VIEWPORT_OFFSETS
+
+ return true;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Driver vtable
+
+const struct tft_panel_dc_reset_painter_driver_vtable_t st7735_driver_vtable = {
+ .base =
+ {
+ .init = qp_st7735_init,
+ .power = qp_tft_panel_power,
+ .clear = qp_tft_panel_clear,
+ .flush = qp_tft_panel_flush,
+ .pixdata = qp_tft_panel_pixdata,
+ .viewport = qp_tft_panel_viewport,
+ .palette_convert = qp_tft_panel_palette_convert_rgb565_swapped,
+ .append_pixels = qp_tft_panel_append_pixels_rgb565,
+ },
+ .num_window_bytes = 2,
+ .swap_window_coords = false,
+ .opcodes =
+ {
+ .display_on = ST77XX_CMD_DISPLAY_ON,
+ .display_off = ST77XX_CMD_DISPLAY_OFF,
+ .set_column_address = ST77XX_SET_COL_ADDR,
+ .set_row_address = ST77XX_SET_ROW_ADDR,
+ .enable_writes = ST77XX_SET_MEM,
+ },
+};
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// SPI
+
+#ifdef QUANTUM_PAINTER_ST7735_SPI_ENABLE
+
+// Factory function for creating a handle to the ST7735 device
+painter_device_t qp_st7735_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode) {
+ for (uint32_t i = 0; i < ST7735_NUM_DEVICES; ++i) {
+ tft_panel_dc_reset_painter_device_t *driver = &st7735_drivers[i];
+ if (!driver->base.driver_vtable) {
+ driver->base.driver_vtable = (const struct painter_driver_vtable_t *)&st7735_driver_vtable;
+ driver->base.comms_vtable = (const struct painter_comms_vtable_t *)&spi_comms_with_dc_vtable;
+ driver->base.panel_width = panel_width;
+ driver->base.panel_height = panel_height;
+ driver->base.rotation = QP_ROTATION_0;
+ driver->base.offset_x = 0;
+ driver->base.offset_y = 0;
+ driver->base.native_bits_per_pixel = 16; // RGB565
+
+ // SPI and other pin configuration
+ driver->base.comms_config = &driver->spi_dc_reset_config;
+ driver->spi_dc_reset_config.spi_config.chip_select_pin = chip_select_pin;
+ driver->spi_dc_reset_config.spi_config.divisor = spi_divisor;
+ driver->spi_dc_reset_config.spi_config.lsb_first = false;
+ driver->spi_dc_reset_config.spi_config.mode = spi_mode;
+ driver->spi_dc_reset_config.dc_pin = dc_pin;
+ driver->spi_dc_reset_config.reset_pin = reset_pin;
+ return (painter_device_t)driver;
+ }
+ }
+ return NULL;
+}
+
+#endif // QUANTUM_PAINTER_ST7735_SPI_ENABLE
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// \ No newline at end of file
diff --git a/drivers/painter/st77xx/qp_st7735.h b/drivers/painter/st77xx/qp_st7735.h
new file mode 100644
index 0000000000..a9ce16bef1
--- /dev/null
+++ b/drivers/painter/st77xx/qp_st7735.h
@@ -0,0 +1,45 @@
+// Copyright 2021 Paul Cotter (@gr1mr3aver)
+// Copyright 2021 Nick Brassel (@tzarc)
+// Copyright 2022 David Hoelscher (@customMK)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "gpio.h"
+#include "qp_internal.h"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Quantum Painter ST7735 configurables (add to your keyboard's config.h)
+
+#ifndef ST7735_NUM_DEVICES
+/**
+ * @def This controls the maximum number of ST7735 devices that Quantum Painter can communicate with at any one time.
+ * Increasing this number allows for multiple displays to be used.
+ */
+# define ST7735_NUM_DEVICES 1
+#endif
+
+// Additional configuration options to be copied to your keyboard's config.h (don't change here):
+
+// If you know exactly which offsets should be used on your panel with respect to selected rotation, then this config
+// option allows you to save some flash space -- you'll need to invoke qp_set_viewport_offsets() instead from your keyboard.
+// #define ST7735_NO_AUTOMATIC_VIEWPORT_OFFSETS
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Quantum Painter ST7735 device factories
+
+#ifdef QUANTUM_PAINTER_ST7735_SPI_ENABLE
+/**
+ * Factory method for an ST7735 SPI LCD device.
+ *
+ * @param panel_width[in] the width of the display panel
+ * @param panel_height[in] the height of the display panel
+ * @param chip_select_pin[in] the GPIO pin used for SPI chip select
+ * @param dc_pin[in] the GPIO pin used for D/C control
+ * @param reset_pin[in] the GPIO pin used for RST
+ * @param spi_divisor[in] the SPI divisor to use when communicating with the display
+ * @param spi_mode[in] the SPI mode to use when communicating with the display
+ * @return the device handle used with all drawing routines in Quantum Painter
+ */
+painter_device_t qp_st7735_make_spi_device(uint16_t panel_width, uint16_t panel_height, pin_t chip_select_pin, pin_t dc_pin, pin_t reset_pin, uint16_t spi_divisor, int spi_mode);
+#endif // QUANTUM_PAINTER_ST7735_SPI_ENABLE \ No newline at end of file
diff --git a/drivers/painter/st77xx/qp_st7735_opcodes.h b/drivers/painter/st77xx/qp_st7735_opcodes.h
new file mode 100644
index 0000000000..816e32f3d7
--- /dev/null
+++ b/drivers/painter/st77xx/qp_st7735_opcodes.h
@@ -0,0 +1,31 @@
+// Copyright 2022 David Hoelscher (@customMK)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Quantum Painter ST7735 additional command opcodes
+
+// Panel Function Commands
+#define ST7735_SET_FRAME_RATE_CTL_1 0xB1 // Set frame rate control 1
+#define ST7735_SET_FRAME_RATE_CTL_2 0xB2 // Set frame rate control 2
+#define ST7735_SET_FRAME_RATE_CTL_3 0xB3 // Set frame rate control 3
+#define ST7735_SET_INVERSION_CTL 0xB4 // Set inversion mode control
+#define ST7735_SET_DISPLAY_CTL 0xB6 // Set display control 5
+#define ST7735_SET_POWER_CTL_1 0xC0 // Set GVDD
+#define ST7735_SET_POWER_CTL_2 0xC1 // Set VGH and VGL
+#define ST7735_SET_POWER_CTL_3 0xC2 // Set normal mode op amp current
+#define ST7735_SET_POWER_CTL_4 0xC3 // Set idle mode op amp current
+#define ST7735_SET_POWER_CTL_5 0xC4 // Set partial mode op amp current
+#define ST7735_SET_VCOM_CTL 0xC5 // Set VCOM voltages
+#define ST7735_SET_VCOM_OFFSET_CTL 0xC7 // Set VCOM offset ctl
+#define ST7735_SET_LCD_ID 0xD1 // Set LCD module version
+#define ST7735_SET_PROJECT_ID 0xD2 // Set product project ID
+#define ST7735_SET_POWER_CTL_6 0xFC // Set partial+idle op amp current
+#define ST7735_SET_NVMEM_CTL_STATUS 0xD9 // EEPROM Control Status
+#define ST7735_SET_NVMEM_READ_CMD 0xCC // EEPROM Read Command
+#define ST7735_SET_NVMEM_WRITE_CMD 0xDF // EEPROM Write Command
+#define ST7735_SET_PGAMMA 0xE0 // Set positive gamma
+#define ST7735_SET_NGAMMA 0xE1 // Set negative gamma
+#define ST7735_SET_EXTENSION_ENABLE 0xF0 // Enable extension command
+#define ST7735_SET_VCOM_DELAY 0xFF // Set VCOM delay time
diff --git a/drivers/painter/st77xx/qp_st7789.c b/drivers/painter/st77xx/qp_st7789.c
index d005ece050..49e8436c29 100644
--- a/drivers/painter/st77xx/qp_st7789.c
+++ b/drivers/painter/st77xx/qp_st7789.c
@@ -90,12 +90,11 @@ const struct tft_panel_dc_reset_painter_driver_vtable_t st7789_driver_vtable = {
.flush = qp_tft_panel_flush,
.pixdata = qp_tft_panel_pixdata,
.viewport = qp_tft_panel_viewport,
- .palette_convert = qp_tft_panel_palette_convert,
- .append_pixels = qp_tft_panel_append_pixels,
+ .palette_convert = qp_tft_panel_palette_convert_rgb565_swapped,
+ .append_pixels = qp_tft_panel_append_pixels_rgb565,
},
- .rgb888_to_native16bit = qp_rgb888_to_rgb565_swapped,
- .num_window_bytes = 2,
- .swap_window_coords = false,
+ .num_window_bytes = 2,
+ .swap_window_coords = false,
.opcodes =
{
.display_on = ST77XX_CMD_DISPLAY_ON,
diff --git a/drivers/painter/tft_panel/qp_tft_panel.c b/drivers/painter/tft_panel/qp_tft_panel.c
index 4d636c9509..ad83b6c792 100644
--- a/drivers/painter/tft_panel/qp_tft_panel.c
+++ b/drivers/painter/tft_panel/qp_tft_panel.c
@@ -10,29 +10,6 @@
#define BYTE_SWAP(x) (((((uint16_t)(x)) >> 8) & 0x00FF) | ((((uint16_t)(x)) << 8) & 0xFF00))
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// Native pixel format conversion
-
-uint16_t qp_rgb888_to_rgb565(uint8_t r, uint8_t g, uint8_t b) {
- uint16_t rgb565 = (((uint16_t)r) >> 3) << 11 | (((uint16_t)g) >> 2) << 5 | (((uint16_t)b) >> 3);
- return rgb565;
-}
-
-uint16_t qp_rgb888_to_rgb565_swapped(uint8_t r, uint8_t g, uint8_t b) {
- uint16_t rgb565 = (((uint16_t)r) >> 3) << 11 | (((uint16_t)g) >> 2) << 5 | (((uint16_t)b) >> 3);
- return BYTE_SWAP(rgb565);
-}
-
-uint16_t qp_rgb888_to_bgr565(uint8_t r, uint8_t g, uint8_t b) {
- uint16_t bgr565 = (((uint16_t)b) >> 3) << 11 | (((uint16_t)g) >> 2) << 5 | (((uint16_t)r) >> 3);
- return bgr565;
-}
-
-uint16_t qp_rgb888_to_bgr565_swapped(uint8_t r, uint8_t g, uint8_t b) {
- uint16_t bgr565 = (((uint16_t)b) >> 3) << 11 | (((uint16_t)g) >> 2) << 5 | (((uint16_t)r) >> 3);
- return BYTE_SWAP(bgr565);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Quantum Painter API implementations
// Power control
@@ -105,26 +82,49 @@ bool qp_tft_panel_viewport(painter_device_t device, uint16_t left, uint16_t top,
// Stream pixel data to the current write position in GRAM
bool qp_tft_panel_pixdata(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count) {
- qp_comms_send(device, pixel_data, native_pixel_count * sizeof(uint16_t));
+ struct painter_driver_t *driver = (struct painter_driver_t *)device;
+ qp_comms_send(device, pixel_data, native_pixel_count * driver->native_bits_per_pixel / 8);
return true;
}
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Convert supplied palette entries into their native equivalents
-bool qp_tft_panel_palette_convert(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) {
- struct painter_driver_t * driver = (struct painter_driver_t *)device;
- struct tft_panel_dc_reset_painter_driver_vtable_t *vtable = (struct tft_panel_dc_reset_painter_driver_vtable_t *)driver->driver_vtable;
+
+bool qp_tft_panel_palette_convert_rgb565_swapped(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) {
for (int16_t i = 0; i < palette_size; ++i) {
- RGB rgb = hsv_to_rgb_nocie((HSV){palette[i].hsv888.h, palette[i].hsv888.s, palette[i].hsv888.v});
- palette[i].rgb565 = vtable->rgb888_to_native16bit(rgb.r, rgb.g, rgb.b);
+ RGB rgb = hsv_to_rgb_nocie((HSV){palette[i].hsv888.h, palette[i].hsv888.s, palette[i].hsv888.v});
+ uint16_t rgb565 = (((uint16_t)rgb.r) >> 3) << 11 | (((uint16_t)rgb.g) >> 2) << 5 | (((uint16_t)rgb.b) >> 3);
+ palette[i].rgb565 = BYTE_SWAP(rgb565);
}
return true;
}
+bool qp_tft_panel_palette_convert_rgb888(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) {
+ for (int16_t i = 0; i < palette_size; ++i) {
+ RGB rgb = hsv_to_rgb_nocie((HSV){palette[i].hsv888.h, palette[i].hsv888.s, palette[i].hsv888.v});
+ palette[i].rgb888.r = rgb.r;
+ palette[i].rgb888.g = rgb.g;
+ palette[i].rgb888.b = rgb.b;
+ }
+ return true;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Append pixels to the target location, keyed by the pixel index
-bool qp_tft_panel_append_pixels(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices) {
+
+bool qp_tft_panel_append_pixels_rgb565(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices) {
uint16_t *buf = (uint16_t *)target_buffer;
for (uint32_t i = 0; i < pixel_count; ++i) {
buf[pixel_offset + i] = palette[palette_indices[i]].rgb565;
}
return true;
}
+
+bool qp_tft_panel_append_pixels_rgb888(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices) {
+ for (uint32_t i = 0; i < pixel_count; ++i) {
+ target_buffer[(pixel_offset + i) * 3 + 0] = palette[palette_indices[i]].rgb888.r;
+ target_buffer[(pixel_offset + i) * 3 + 1] = palette[palette_indices[i]].rgb888.g;
+ target_buffer[(pixel_offset + i) * 3 + 2] = palette[palette_indices[i]].rgb888.b;
+ }
+ return true;
+}
diff --git a/drivers/painter/tft_panel/qp_tft_panel.h b/drivers/painter/tft_panel/qp_tft_panel.h
index 6eddfc503d..3cb015891b 100644
--- a/drivers/painter/tft_panel/qp_tft_panel.h
+++ b/drivers/painter/tft_panel/qp_tft_panel.h
@@ -11,15 +11,10 @@
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Common TFT panel implementation using D/C, and RST pins.
-typedef uint16_t (*rgb888_to_native_uint16_t)(uint8_t r, uint8_t g, uint8_t b);
-
// Driver vtable with extras
struct tft_panel_dc_reset_painter_driver_vtable_t {
struct painter_driver_vtable_t base; // must be first, so it can be cast to/from the painter_driver_vtable_t* type
- // Conversion function for palette entries
- rgb888_to_native_uint16_t rgb888_to_native16bit;
-
// Number of bytes for transmitting x/y coordinates
uint8_t num_window_bytes;
@@ -58,10 +53,9 @@ bool qp_tft_panel_clear(painter_device_t device);
bool qp_tft_panel_flush(painter_device_t device);
bool qp_tft_panel_viewport(painter_device_t device, uint16_t left, uint16_t top, uint16_t right, uint16_t bottom);
bool qp_tft_panel_pixdata(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count);
-bool qp_tft_panel_palette_convert(painter_device_t device, int16_t palette_size, qp_pixel_t *palette);
-bool qp_tft_panel_append_pixels(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices);
-uint16_t qp_rgb888_to_rgb565(uint8_t r, uint8_t g, uint8_t b);
-uint16_t qp_rgb888_to_rgb565_swapped(uint8_t r, uint8_t g, uint8_t b);
-uint16_t qp_rgb888_to_bgr565(uint8_t r, uint8_t g, uint8_t b);
-uint16_t qp_rgb888_to_bgr565_swapped(uint8_t r, uint8_t g, uint8_t b);
+bool qp_tft_panel_palette_convert_rgb565_swapped(painter_device_t device, int16_t palette_size, qp_pixel_t *palette);
+bool qp_tft_panel_palette_convert_rgb888(painter_device_t device, int16_t palette_size, qp_pixel_t *palette);
+
+bool qp_tft_panel_append_pixels_rgb565(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices);
+bool qp_tft_panel_append_pixels_rgb888(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices);
diff --git a/drivers/ps2/ps2.h b/drivers/ps2/ps2.h
index f123192852..2465e16235 100644
--- a/drivers/ps2/ps2.h
+++ b/drivers/ps2/ps2.h
@@ -89,6 +89,7 @@ uint8_t ps2_host_send(uint8_t data);
uint8_t ps2_host_recv_response(void);
uint8_t ps2_host_recv(void);
void ps2_host_set_led(uint8_t usb_led);
+bool pbuf_has_data(void);
/*--------------------------------------------------------------------
* static functions
diff --git a/drivers/ps2/ps2_interrupt.c b/drivers/ps2/ps2_interrupt.c
index c49b4f8b75..c9a9f1e1ec 100644
--- a/drivers/ps2/ps2_interrupt.c
+++ b/drivers/ps2/ps2_interrupt.c
@@ -66,8 +66,8 @@ uint8_t ps2_error = PS2_ERR_NONE;
static inline uint8_t pbuf_dequeue(void);
static inline void pbuf_enqueue(uint8_t data);
-static inline bool pbuf_has_data(void);
static inline void pbuf_clear(void);
+bool pbuf_has_data(void);
#if defined(PROTOCOL_CHIBIOS)
void ps2_interrupt_service_routine(void);
@@ -309,7 +309,7 @@ static inline uint8_t pbuf_dequeue(void) {
return val;
}
-static inline bool pbuf_has_data(void) {
+bool pbuf_has_data(void) {
#if defined(__AVR__)
uint8_t sreg = SREG;
cli();
diff --git a/drivers/ps2/ps2_mouse.c b/drivers/ps2/ps2_mouse.c
index ccb0a929ae..66b48bb3c3 100644
--- a/drivers/ps2/ps2_mouse.c
+++ b/drivers/ps2/ps2_mouse.c
@@ -53,6 +53,7 @@ void ps2_mouse_init(void) {
ps2_mouse_set_remote_mode();
#else
ps2_mouse_enable_data_reporting();
+ ps2_mouse_set_stream_mode();
#endif
#ifdef PS2_MOUSE_ENABLE_SCROLLING
@@ -75,19 +76,33 @@ void ps2_mouse_task(void) {
extern int tp_buttons;
/* receives packet from mouse */
+#ifdef PS2_MOUSE_USE_REMOTE_MODE
uint8_t rcv;
rcv = ps2_host_send(PS2_MOUSE_READ_DATA);
if (rcv == PS2_ACK) {
mouse_report.buttons = ps2_host_recv_response() | tp_buttons;
mouse_report.x = ps2_host_recv_response() * PS2_MOUSE_X_MULTIPLIER;
mouse_report.y = ps2_host_recv_response() * PS2_MOUSE_Y_MULTIPLIER;
-#ifdef PS2_MOUSE_ENABLE_SCROLLING
+# ifdef PS2_MOUSE_ENABLE_SCROLLING
mouse_report.v = -(ps2_host_recv_response() & PS2_MOUSE_SCROLL_MASK) * PS2_MOUSE_V_MULTIPLIER;
-#endif
+# endif
+ } else {
+ if (debug_mouse) print("ps2_mouse: fail to get mouse packet\n");
+ return;
+ }
+#else
+ if (pbuf_has_data()) {
+ mouse_report.buttons = ps2_host_recv_response() | tp_buttons;
+ mouse_report.x = ps2_host_recv_response() * PS2_MOUSE_X_MULTIPLIER;
+ mouse_report.y = ps2_host_recv_response() * PS2_MOUSE_Y_MULTIPLIER;
+# ifdef PS2_MOUSE_ENABLE_SCROLLING
+ mouse_report.v = -(ps2_host_recv_response() & PS2_MOUSE_SCROLL_MASK) * PS2_MOUSE_V_MULTIPLIER;
+# endif
} else {
if (debug_mouse) print("ps2_mouse: fail to get mouse packet\n");
return;
}
+#endif
/* if mouse moves or buttons state changes */
if (mouse_report.x || mouse_report.y || mouse_report.v || ((mouse_report.buttons ^ buttons_prev) & PS2_MOUSE_BTN_MASK)) {
diff --git a/drivers/sensors/adns5050.h b/drivers/sensors/adns5050.h
index e45a250196..f20c2f74bc 100644
--- a/drivers/sensors/adns5050.h
+++ b/drivers/sensors/adns5050.h
@@ -40,15 +40,27 @@
// Definitions for the ADNS serial line.
#ifndef ADNS5050_SCLK_PIN
-# error "No clock pin defined -- missing ADNS5050_SCLK_PIN"
+# ifdef POINTING_DEVICE_SCLK_PIN
+# define ADNS5050_SCLK_PIN POINTING_DEVICE_SCLK_PIN
+# else
+# error "No clock pin defined -- missing POINTING_DEVICE_SCLK_PIN or ADNS5050_SCLK_PIN"
+# endif
#endif
#ifndef ADNS5050_SDIO_PIN
-# error "No data pin defined -- missing ADNS5050_SDIO_PIN"
+# ifdef POINTING_DEVICE_SDIO_PIN
+# define ADNS5050_SDIO_PIN POINTING_DEVICE_SDIO_PIN
+# else
+# error "No data pin defined -- missing POINTING_DEVICE_SDIO_PIN or ADNS5050_SDIO_PIN"
+# endif
#endif
#ifndef ADNS5050_CS_PIN
-# error "No chip select pin defined -- missing ADNS5050_CS_PIN"
+# ifdef POINTING_DEVICE_CS_PIN
+# define ADNS5050_CS_PIN POINTING_DEVICE_CS_PIN
+# else
+# error "No chip select pin defined -- missing POINTING_DEVICE_CS_PIN or ADNS5050_CS_PIN define"
+# endif
#endif
typedef struct {
diff --git a/drivers/sensors/adns9800.h b/drivers/sensors/adns9800.h
index e75a869c03..3f1a005789 100644
--- a/drivers/sensors/adns9800.h
+++ b/drivers/sensors/adns9800.h
@@ -43,7 +43,11 @@
#endif
#ifndef ADNS9800_CS_PIN
-# error "No chip select pin defined -- missing ADNS9800_CS_PIN"
+# ifdef POINTING_DEVICE_CS_PIN
+# define ADNS9800_CS_PIN POINTING_DEVICE_CS_PIN
+# else
+# error "No chip select pin defined -- missing POINTING_DEVICE_CS_PIN or ADNS9800_CS_PIN"
+# endif
#endif
typedef struct {
diff --git a/drivers/sensors/cirque_pinnacle.c b/drivers/sensors/cirque_pinnacle.c
index 2db7f916fe..8bd4eb736e 100644
--- a/drivers/sensors/cirque_pinnacle.c
+++ b/drivers/sensors/cirque_pinnacle.c
@@ -1,52 +1,26 @@
// Copyright (c) 2018 Cirque Corp. Restrictions apply. See: www.cirque.com/sw-license
+// based on https://github.com/cirque-corp/Cirque_Pinnacle_1CA027/tree/master/Circular_Trackpad
+// with modifications and changes for QMK
+// refer to documentation: Gen2 and Gen3 (Pinnacle ASIC) at https://www.cirque.com/documentation
+
#include "cirque_pinnacle.h"
#include "print.h"
#include "debug.h"
#include "wait.h"
+#include "timer.h"
+
+#include <stdlib.h>
-// Registers for RAP
-// clang-format off
-#define FIRMWARE_ID 0x00
-#define FIRMWARE_VERSION_C 0x01
-#define STATUS_1 0x02
-#define SYSCONFIG_1 0x03
-#define FEEDCONFIG_1 0x04
-#define FEEDCONFIG_2 0x05
-#define CALIBRATION_CONFIG_1 0x07
-#define PS2_AU_CONTROL 0x08
-#define SAMPLE_RATE 0x09
-#define Z_IDLE_COUNT 0x0A
-#define Z_SCALER 0x0B
-#define SLEEP_INTERVAL 0x0C
-#define SLEEP_TIMER 0x0D
-#define PACKET_BYTE_0 0x12
-#define PACKET_BYTE_1 0x13
-#define PACKET_BYTE_2 0x14
-#define PACKET_BYTE_3 0x15
-#define PACKET_BYTE_4 0x16
-#define PACKET_BYTE_5 0x17
-
-#define ERA_VALUE 0x1B
-#define ERA_HIGH_BYTE 0x1C
-#define ERA_LOW_BYTE 0x1D
-#define ERA_CONTROL 0x1E
-
-// ADC-attenuation settings (held in BIT_7 and BIT_6)
-// 1X = most sensitive, 4X = least sensitive
-#define ADC_ATTENUATE_1X 0x00
-#define ADC_ATTENUATE_2X 0x40
-#define ADC_ATTENUATE_3X 0x80
-#define ADC_ATTENUATE_4X 0xC0
-
-// Register config values for this demo
-#define SYSCONFIG_1_VALUE 0x00
-#define FEEDCONFIG_1_VALUE 0x03 // 0x03 for absolute mode 0x01 for relative mode
-#define FEEDCONFIG_2_VALUE 0x1C // 0x1F for normal functionality 0x1E for intellimouse disabled
-#define Z_IDLE_COUNT_VALUE 0x05
-// clang-format on
+#ifndef CIRQUE_PINNACLE_ATTENUATION
+# ifdef CIRQUE_PINNACLE_CURVED_OVERLAY
+# define CIRQUE_PINNACLE_ATTENUATION EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_2X
+# else
+# define CIRQUE_PINNACLE_ATTENUATION EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_4X
+# endif
+#endif
bool touchpad_init;
-uint16_t scale_data = 1024;
+uint16_t scale_data = CIRQUE_PINNACLE_DEFAULT_SCALE;
void cirque_pinnacle_clear_flags(void);
void cirque_pinnacle_enable_feed(bool feedEnable);
@@ -59,6 +33,7 @@ void print_byte(uint8_t byte) {
}
#endif
+#if CIRQUE_PINNACLE_POSITION_MODE
/* Logical Scaling Functions */
// Clips raw coordinates to "reachable" window of sensor
// NOTE: values outside this window can only appear as a result of noise
@@ -74,6 +49,7 @@ void ClipCoordinates(pinnacle_data_t* coordinates) {
coordinates->yValue = CIRQUE_PINNACLE_Y_UPPER;
}
}
+#endif
uint16_t cirque_pinnacle_get_scale(void) {
return scale_data;
@@ -84,6 +60,7 @@ void cirque_pinnacle_set_scale(uint16_t scale) {
// Scales data to desired X & Y resolution
void cirque_pinnacle_scale_data(pinnacle_data_t* coordinates, uint16_t xResolution, uint16_t yResolution) {
+#if CIRQUE_PINNACLE_POSITION_MODE
uint32_t xTemp = 0;
uint32_t yTemp = 0;
@@ -99,49 +76,65 @@ void cirque_pinnacle_scale_data(pinnacle_data_t* coordinates, uint16_t xResoluti
// scale coordinates to (xResolution, yResolution) range
coordinates->xValue = (uint16_t)(xTemp * xResolution / CIRQUE_PINNACLE_X_RANGE);
coordinates->yValue = (uint16_t)(yTemp * yResolution / CIRQUE_PINNACLE_Y_RANGE);
+#else
+ int32_t xTemp = 0, yTemp = 0;
+ ldiv_t temp;
+ static int32_t xRemainder, yRemainder;
+
+ temp = ldiv(((int32_t)coordinates->xDelta) * (int32_t)xResolution + xRemainder, (int32_t)CIRQUE_PINNACLE_X_RANGE);
+ xTemp = temp.quot;
+ xRemainder = temp.rem;
+
+ temp = ldiv(((int32_t)coordinates->yDelta) * (int32_t)yResolution + yRemainder, (int32_t)CIRQUE_PINNACLE_Y_RANGE);
+ yTemp = temp.quot;
+ yRemainder = temp.rem;
+
+ coordinates->xDelta = (int16_t)xTemp;
+ coordinates->yDelta = (int16_t)yTemp;
+#endif
}
// Clears Status1 register flags (SW_CC and SW_DR)
void cirque_pinnacle_clear_flags() {
- RAP_Write(STATUS_1, 0x00);
+ RAP_Write(HOSTREG__STATUS1, HOSTREG__STATUS1_DEFVAL & ~(HOSTREG__STATUS1__COMMAND_COMPLETE | HOSTREG__STATUS1__DATA_READY));
wait_us(50);
}
// Enables/Disables the feed
void cirque_pinnacle_enable_feed(bool feedEnable) {
- uint8_t temp;
-
- RAP_ReadBytes(FEEDCONFIG_1, &temp, 1); // Store contents of FeedConfig1 register
+ uint8_t feedconfig1;
+ RAP_ReadBytes(HOSTREG__FEEDCONFIG1, &feedconfig1, 1);
if (feedEnable) {
- temp |= 0x01; // Set Feed Enable bit
- RAP_Write(0x04, temp);
+ feedconfig1 |= HOSTREG__FEEDCONFIG1__FEED_ENABLE;
} else {
- temp &= ~0x01; // Clear Feed Enable bit
- RAP_Write(0x04, temp);
+ feedconfig1 &= ~HOSTREG__FEEDCONFIG1__FEED_ENABLE;
}
+ RAP_Write(HOSTREG__FEEDCONFIG1, feedconfig1);
}
/* ERA (Extended Register Access) Functions */
// Reads <count> bytes from an extended register at <address> (16-bit address),
// stores values in <*data>
void ERA_ReadBytes(uint16_t address, uint8_t* data, uint16_t count) {
- uint8_t ERAControlValue = 0xFF;
+ uint8_t ERAControlValue = 0xFF;
+ uint16_t timeout_timer;
cirque_pinnacle_enable_feed(false); // Disable feed
- RAP_Write(ERA_HIGH_BYTE, (uint8_t)(address >> 8)); // Send upper byte of ERA address
- RAP_Write(ERA_LOW_BYTE, (uint8_t)(address & 0x00FF)); // Send lower byte of ERA address
+ RAP_Write(HOSTREG__EXT_REG_AXS_ADDR_HIGH, (uint8_t)(address >> 8)); // Send upper byte of ERA address
+ RAP_Write(HOSTREG__EXT_REG_AXS_ADDR_LOW, (uint8_t)(address & 0x00FF)); // Send lower byte of ERA address
for (uint16_t i = 0; i < count; i++) {
- RAP_Write(ERA_CONTROL, 0x05); // Signal ERA-read (auto-increment) to Pinnacle
+ RAP_Write(HOSTREG__EXT_REG_AXS_CTRL, HOSTREG__EREG_AXS__INC_ADDR_READ | HOSTREG__EREG_AXS__READ); // Signal ERA-read (auto-increment) to Pinnacle
// Wait for status register 0x1E to clear
+ timeout_timer = timer_read();
do {
- RAP_ReadBytes(ERA_CONTROL, &ERAControlValue, 1);
- } while (ERAControlValue != 0x00);
+ RAP_ReadBytes(HOSTREG__EXT_REG_AXS_CTRL, &ERAControlValue, 1);
+ } while ((ERAControlValue != 0x00) && (timer_elapsed(timeout_timer) <= CIRQUE_PINNACLE_TIMEOUT));
- RAP_ReadBytes(ERA_VALUE, data + i, 1);
+ RAP_ReadBytes(HOSTREG__EXT_REG_AXS_VALUE, data + i, 1);
cirque_pinnacle_clear_flags();
}
@@ -149,49 +142,89 @@ void ERA_ReadBytes(uint16_t address, uint8_t* data, uint16_t count) {
// Writes a byte, <data>, to an extended register at <address> (16-bit address)
void ERA_WriteByte(uint16_t address, uint8_t data) {
- uint8_t ERAControlValue = 0xFF;
+ uint8_t ERAControlValue = 0xFF;
+ uint16_t timeout_timer;
cirque_pinnacle_enable_feed(false); // Disable feed
- RAP_Write(ERA_VALUE, data); // Send data byte to be written
+ RAP_Write(HOSTREG__EXT_REG_AXS_VALUE, data); // Send data byte to be written
- RAP_Write(ERA_HIGH_BYTE, (uint8_t)(address >> 8)); // Upper byte of ERA address
- RAP_Write(ERA_LOW_BYTE, (uint8_t)(address & 0x00FF)); // Lower byte of ERA address
+ RAP_Write(HOSTREG__EXT_REG_AXS_ADDR_HIGH, (uint8_t)(address >> 8)); // Upper byte of ERA address
+ RAP_Write(HOSTREG__EXT_REG_AXS_ADDR_LOW, (uint8_t)(address & 0x00FF)); // Lower byte of ERA address
- RAP_Write(ERA_CONTROL, 0x02); // Signal an ERA-write to Pinnacle
+ RAP_Write(HOSTREG__EXT_REG_AXS_CTRL, HOSTREG__EREG_AXS__WRITE); // Signal an ERA-write to Pinnacle
// Wait for status register 0x1E to clear
+ timeout_timer = timer_read();
do {
- RAP_ReadBytes(ERA_CONTROL, &ERAControlValue, 1);
- } while (ERAControlValue != 0x00);
+ RAP_ReadBytes(HOSTREG__EXT_REG_AXS_CTRL, &ERAControlValue, 1);
+ } while ((ERAControlValue != 0x00) && (timer_elapsed(timeout_timer) <= CIRQUE_PINNACLE_TIMEOUT));
cirque_pinnacle_clear_flags();
}
-void cirque_pinnacle_set_adc_attenuation(uint8_t adcGain) {
- uint8_t temp = 0x00;
+bool cirque_pinnacle_set_adc_attenuation(uint8_t adcGain) {
+ uint8_t adcconfig = 0x00;
+
+ ERA_ReadBytes(EXTREG__TRACK_ADCCONFIG, &adcconfig, 1);
+ adcGain &= EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_MASK;
+ if (adcGain == (adcconfig & EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_MASK)) {
+ return false;
+ }
+ adcconfig &= ~EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_MASK;
+ adcconfig |= adcGain;
+ ERA_WriteByte(EXTREG__TRACK_ADCCONFIG, adcconfig);
+ ERA_ReadBytes(EXTREG__TRACK_ADCCONFIG, &adcconfig, 1);
- ERA_ReadBytes(0x0187, &temp, 1);
- temp &= 0x3F; // clear top two bits
- temp |= adcGain;
- ERA_WriteByte(0x0187, temp);
- ERA_ReadBytes(0x0187, &temp, 1);
+ return true;
}
// Changes thresholds to improve detection of fingers
+// Not needed for flat overlay?
void cirque_pinnacle_tune_edge_sensitivity(void) {
- uint8_t temp = 0x00;
+ uint8_t widezmin = 0x00;
+
+ ERA_ReadBytes(EXTREG__XAXIS_WIDEZMIN, &widezmin, 1);
+ ERA_WriteByte(EXTREG__XAXIS_WIDEZMIN, 0x04); // magic number from Cirque sample code
+ ERA_ReadBytes(EXTREG__XAXIS_WIDEZMIN, &widezmin, 1);
+
+ ERA_ReadBytes(EXTREG__YAXIS_WIDEZMIN, &widezmin, 1);
+ ERA_WriteByte(EXTREG__YAXIS_WIDEZMIN, 0x03); // magic number from Cirque sample code
+ ERA_ReadBytes(EXTREG__YAXIS_WIDEZMIN, &widezmin, 1);
+}
+
+// Perform calibration
+void cirque_pinnacle_calibrate(void) {
+ uint8_t calconfig;
+ uint16_t timeout_timer;
+
+ RAP_ReadBytes(HOSTREG__CALCONFIG1, &calconfig, 1);
+ calconfig |= HOSTREG__CALCONFIG1__CALIBRATE;
+ RAP_Write(HOSTREG__CALCONFIG1, calconfig);
+
+ // Calibration takes ~100ms according to GT-AN-090624, doubling the timeout just to be safe
+ timeout_timer = timer_read();
+ do {
+ RAP_ReadBytes(HOSTREG__CALCONFIG1, &calconfig, 1);
+ } while ((calconfig & HOSTREG__CALCONFIG1__CALIBRATE) && (timer_elapsed(timeout_timer) <= 200));
+
+ cirque_pinnacle_clear_flags();
+}
- ERA_ReadBytes(0x0149, &temp, 1);
- ERA_WriteByte(0x0149, 0x04);
- ERA_ReadBytes(0x0149, &temp, 1);
+// Enable/disable cursor smoothing, smoothing is enabled by default
+void cirque_pinnacle_cursor_smoothing(bool enable) {
+ uint8_t feedconfig3;
- ERA_ReadBytes(0x0168, &temp, 1);
- ERA_WriteByte(0x0168, 0x03);
- ERA_ReadBytes(0x0168, &temp, 1);
+ RAP_ReadBytes(HOSTREG__FEEDCONFIG3, &feedconfig3, 1);
+ if (enable) {
+ feedconfig3 &= ~HOSTREG__FEEDCONFIG3__DISABLE_CROSS_RATE_SMOOTHING;
+ } else {
+ feedconfig3 |= HOSTREG__FEEDCONFIG3__DISABLE_CROSS_RATE_SMOOTHING;
+ }
+ RAP_Write(HOSTREG__FEEDCONFIG3, feedconfig3);
}
-/* Pinnacle-based TM040040 Functions */
+/* Pinnacle-based TM040040/TM035035/TM023023 Functions */
void cirque_pinnacle_init(void) {
#if defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi)
spi_init();
@@ -200,39 +233,101 @@ void cirque_pinnacle_init(void) {
#endif
touchpad_init = true;
+
+ // send a RESET command now, in case QMK had a soft-reset without a power cycle
+ RAP_Write(HOSTREG__SYSCONFIG1, HOSTREG__SYSCONFIG1__RESET);
+ wait_ms(30); // Pinnacle needs 10-15ms to boot, so wait long enough before configuring
+ RAP_Write(HOSTREG__SYSCONFIG1, HOSTREG__SYSCONFIG1_DEFVAL);
+ wait_us(50);
+
// Host clears SW_CC flag
cirque_pinnacle_clear_flags();
- // Host configures bits of registers 0x03 and 0x05
- RAP_Write(SYSCONFIG_1, SYSCONFIG_1_VALUE);
- RAP_Write(FEEDCONFIG_2, FEEDCONFIG_2_VALUE);
+#if CIRQUE_PINNACLE_POSITION_MODE
+ RAP_Write(HOSTREG__FEEDCONFIG2, HOSTREG__FEEDCONFIG2_DEFVAL);
+#else
+ // FeedConfig2 (Feature flags for Relative Mode Only)
+ uint8_t feedconfig2 = HOSTREG__FEEDCONFIG2__GLIDE_EXTEND_DISABLE | HOSTREG__FEEDCONFIG2__INTELLIMOUSE_MODE;
+# if !defined(CIRQUE_PINNACLE_TAP_ENABLE)
+ feedconfig2 |= HOSTREG__FEEDCONFIG2__ALL_TAP_DISABLE;
+# endif
+# if !defined(CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE)
+ feedconfig2 |= HOSTREG__FEEDCONFIG2__SECONDARY_TAP_DISABLE;
+# elif !defined(CIRQUE_PINNACLE_TAP_ENABLE)
+# error CIRQUE_PINNACLE_TAP_ENABLE must be defined for CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE to work
+# endif
+# if !defined(CIRQUE_PINNACLE_SIDE_SCROLL_ENABLE)
+ feedconfig2 |= HOSTREG__FEEDCONFIG2__SCROLL_DISABLE;
+# endif
+ RAP_Write(HOSTREG__FEEDCONFIG2, feedconfig2);
+#endif
- // Host enables preferred output mode (absolute)
- RAP_Write(FEEDCONFIG_1, FEEDCONFIG_1_VALUE);
+ // FeedConfig1 (Data Output Flags)
+ RAP_Write(HOSTREG__FEEDCONFIG1, CIRQUE_PINNACLE_POSITION_MODE ? HOSTREG__FEEDCONFIG1__DATA_TYPE__REL0_ABS1 : HOSTREG__FEEDCONFIG1_DEFVAL);
- // Host sets z-idle packet count to 5 (default is 30)
- RAP_Write(Z_IDLE_COUNT, Z_IDLE_COUNT_VALUE);
+#if CIRQUE_PINNACLE_POSITION_MODE
+ // Host sets z-idle packet count to 5 (default is 0x1E/30)
+ RAP_Write(HOSTREG__ZIDLE, 5);
+#endif
- cirque_pinnacle_set_adc_attenuation(0xFF);
+ bool calibrate = cirque_pinnacle_set_adc_attenuation(CIRQUE_PINNACLE_ATTENUATION);
+
+#ifdef CIRQUE_PINNACLE_CURVED_OVERLAY
cirque_pinnacle_tune_edge_sensitivity();
+ calibrate = true;
+#endif
+ if (calibrate) {
+ // Force a calibration after setting ADC attenuation
+ cirque_pinnacle_calibrate();
+ }
+
cirque_pinnacle_enable_feed(true);
}
-// Reads XYZ data from Pinnacle registers 0x14 through 0x17
-// Stores result in pinnacle_data_t struct with xValue, yValue, and zValue members
pinnacle_data_t cirque_pinnacle_read_data(void) {
- uint8_t data[6] = {0};
- pinnacle_data_t result = {0};
- RAP_ReadBytes(PACKET_BYTE_0, data, 6);
+ uint8_t data_ready = 0;
+ uint8_t data[6] = {0};
+ pinnacle_data_t result = {0};
+
+ // Check if there is valid data available
+ RAP_ReadBytes(HOSTREG__STATUS1, &data_ready, 1);
+ if ((data_ready & HOSTREG__STATUS1__DATA_READY) == 0) {
+ // no data available yet
+ result.valid = false; // be explicit
+ return result;
+ }
- cirque_pinnacle_clear_flags();
+ // Read all data bytes
+ RAP_ReadBytes(HOSTREG__PACKETBYTE_0, data, 6);
- result.buttonFlags = data[0] & 0x3F;
- result.xValue = data[2] | ((data[4] & 0x0F) << 8);
- result.yValue = data[3] | ((data[4] & 0xF0) << 4);
- result.zValue = data[5] & 0x3F;
+ // Get ready for the next data sample
+ cirque_pinnacle_clear_flags();
- result.touchDown = (result.xValue != 0 || result.yValue != 0);
+#if CIRQUE_PINNACLE_POSITION_MODE
+ // Decode data for absolute mode
+ // Register 0x13 is unused in this mode (palm detection area)
+ result.buttonFlags = data[0] & 0x3F; // bit0 to bit5 are switch 0-5, only hardware button presses (from input pin on the Pinnacle chip)
+ result.xValue = data[2] | ((data[4] & 0x0F) << 8); // merge high and low bits for X
+ result.yValue = data[3] | ((data[4] & 0xF0) << 4); // merge high and low bits for Y
+ result.zValue = data[5] & 0x3F; // Z is only lower 6 bits, upper 2 bits are reserved/unused
+ result.touchDown = (result.xValue != 0 || result.yValue != 0); // (0,0) is a "magic coordinate" to indicate "finger touched down"
+#else
+ // Decode data for relative mode
+ // Registers 0x16 and 0x17 are unused in this mode
+ result.buttons = data[0] & 0x07; // Only three buttons are supported
+ if ((data[0] & 0x10) && data[1] != 0) {
+ result.xDelta = -((int16_t)256 - (int16_t)(data[1]));
+ } else {
+ result.xDelta = data[1];
+ }
+ if ((data[0] & 0x20) && data[2] != 0) {
+ result.yDelta = ((int16_t)256 - (int16_t)(data[2]));
+ } else {
+ result.yDelta = -((int16_t)data[2]);
+ }
+ result.wheelCount = ((int8_t*)data)[3];
+#endif
+ result.valid = true;
return result;
}
diff --git a/drivers/sensors/cirque_pinnacle.h b/drivers/sensors/cirque_pinnacle.h
index c8cb360e03..fa06e047f2 100644
--- a/drivers/sensors/cirque_pinnacle.h
+++ b/drivers/sensors/cirque_pinnacle.h
@@ -2,53 +2,63 @@
#pragma once
+#include "cirque_pinnacle_regdefs.h"
#include <stdint.h>
#include <stdbool.h>
-// Convenient way to store and access measurements
-typedef struct {
- uint16_t xValue;
- uint16_t yValue;
- uint16_t zValue;
- uint8_t buttonFlags;
- bool touchDown;
-} pinnacle_data_t;
-
-void cirque_pinnacle_init(void);
-pinnacle_data_t cirque_pinnacle_read_data(void);
-void cirque_pinnacle_scale_data(pinnacle_data_t* coordinates, uint16_t xResolution, uint16_t yResolution);
-uint16_t cirque_pinnacle_get_scale(void);
-void cirque_pinnacle_set_scale(uint16_t scale);
-
#ifndef CIRQUE_PINNACLE_TIMEOUT
-# define CIRQUE_PINNACLE_TIMEOUT 20
+# define CIRQUE_PINNACLE_TIMEOUT 20 // I2C timeout in milliseconds
#endif
-// Coordinate scaling values
-#ifndef CIRQUE_PINNACLE_X_LOWER
-# define CIRQUE_PINNACLE_X_LOWER 127 // min "reachable" X value
-#endif
-#ifndef CIRQUE_PINNACLE_X_UPPER
-# define CIRQUE_PINNACLE_X_UPPER 1919 // max "reachable" X value
-#endif
-#ifndef CIRQUE_PINNACLE_Y_LOWER
-# define CIRQUE_PINNACLE_Y_LOWER 63 // min "reachable" Y value
+#define CIRQUE_PINNACLE_ABSOLUTE_MODE 1
+#define CIRQUE_PINNACLE_RELATIVE_MODE 0
+#ifndef CIRQUE_PINNACLE_POSITION_MODE
+# define CIRQUE_PINNACLE_POSITION_MODE CIRQUE_PINNACLE_ABSOLUTE_MODE
#endif
-#ifndef CIRQUE_PINNACLE_Y_UPPER
-# define CIRQUE_PINNACLE_Y_UPPER 1471 // max "reachable" Y value
+
+#define CIRQUE_PINNACLE_DEFAULT_SCALE 1024
+#ifndef CIRQUE_PINNACLE_DIAMETER_MM
+# define CIRQUE_PINNACLE_DIAMETER_MM 40
#endif
-#ifndef CIRQUE_PINNACLE_X_RANGE
-# define CIRQUE_PINNACLE_X_RANGE (CIRQUE_PINNACLE_X_UPPER - CIRQUE_PINNACLE_X_LOWER)
+
+#if CIRQUE_PINNACLE_POSITION_MODE
+// Coordinate scaling values
+# ifndef CIRQUE_PINNACLE_X_LOWER
+# define CIRQUE_PINNACLE_X_LOWER 127 // min "reachable" X value
+# endif
+# ifndef CIRQUE_PINNACLE_X_UPPER
+# define CIRQUE_PINNACLE_X_UPPER 1919 // max "reachable" X value
+# endif
+# ifndef CIRQUE_PINNACLE_Y_LOWER
+# define CIRQUE_PINNACLE_Y_LOWER 63 // min "reachable" Y value
+# endif
+# ifndef CIRQUE_PINNACLE_Y_UPPER
+# define CIRQUE_PINNACLE_Y_UPPER 1471 // max "reachable" Y value
+# endif
+# ifndef CIRQUE_PINNACLE_X_RANGE
+# define CIRQUE_PINNACLE_X_RANGE (CIRQUE_PINNACLE_X_UPPER - CIRQUE_PINNACLE_X_LOWER)
+# endif
+# ifndef CIRQUE_PINNACLE_Y_RANGE
+# define CIRQUE_PINNACLE_Y_RANGE (CIRQUE_PINNACLE_Y_UPPER - CIRQUE_PINNACLE_Y_LOWER)
+# endif
+# if defined(POINTING_DEVICE_GESTURES_SCROLL_ENABLE)
+# define CIRQUE_PINNACLE_CIRCULAR_SCROLL_ENABLE
+# endif
+#else
+# define CIRQUE_PINNACLE_X_RANGE 256
+# define CIRQUE_PINNACLE_Y_RANGE 256
+# if defined(POINTING_DEVICE_GESTURES_SCROLL_ENABLE)
+# define CIRQUE_PINNACLE_SIDE_SCROLL_ENABLE
+# endif
#endif
-#ifndef CIRQUE_PINNACLE_Y_RANGE
-# define CIRQUE_PINNACLE_Y_RANGE (CIRQUE_PINNACLE_Y_UPPER - CIRQUE_PINNACLE_Y_LOWER)
+#if !defined(POINTING_DEVICE_TASK_THROTTLE_MS)
+# define POINTING_DEVICE_TASK_THROTTLE_MS 10 // Cirque Pinnacle in normal operation produces data every 10ms. Advanced configuration for pen/stylus usage might require lower values.
#endif
-
#if defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_i2c)
# include "i2c_master.h"
// Cirque's 7-bit I2C Slave Address
# ifndef CIRQUE_PINNACLE_ADDR
-# define CIRQUE_PINNACLE_ADDR 0x2A
+# define CIRQUE_PINNACLE_ADDR I2C_ADDRESS_DEFAULT
# endif
#elif defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi)
# include "spi_master.h"
@@ -68,7 +78,40 @@ void cirque_pinnacle_set_scale(uint16_t scale);
# define CIRQUE_PINNACLE_SPI_DIVISOR 64
# endif
# ifndef CIRQUE_PINNACLE_SPI_CS_PIN
-# error "No Chip Select pin has been defined -- missing CIRQUE_PINNACLE_SPI_CS_PIN define"
+# ifdef POINTING_DEVICE_CS_PIN
+# define CIRQUE_PINNACLE_SPI_CS_PIN POINTING_DEVICE_CS_PIN
+# else
+# error "No Chip Select pin has been defined -- missing POINTING_DEVICE_CS_PIN or CIRQUE_PINNACLE_SPI_CS_PIN define"
+# endif
# endif
# endif
#endif
+
+#define DIVIDE_UNSIGNED_ROUND(numerator, denominator) (((numerator) + ((denominator) / 2)) / (denominator))
+#define CIRQUE_PINNACLE_INCH_TO_PX(inch) (DIVIDE_UNSIGNED_ROUND((inch) * (uint32_t)CIRQUE_PINNACLE_DIAMETER_MM * 10, 254))
+#define CIRQUE_PINNACLE_PX_TO_INCH(px) (DIVIDE_UNSIGNED_ROUND((px) * (uint32_t)254, CIRQUE_PINNACLE_DIAMETER_MM * 10))
+
+// Convenient way to store and access measurements
+typedef struct {
+ bool valid; // true if valid data was read, false if no data was ready
+#if CIRQUE_PINNACLE_POSITION_MODE
+ uint16_t xValue;
+ uint16_t yValue;
+ uint16_t zValue;
+ uint8_t buttonFlags;
+ bool touchDown;
+#else
+ int16_t xDelta;
+ int16_t yDelta;
+ int8_t wheelCount;
+ uint8_t buttons;
+#endif
+} pinnacle_data_t;
+
+void cirque_pinnacle_init(void);
+void cirque_pinnacle_calibrate(void);
+void cirque_pinnacle_cursor_smoothing(bool enable);
+pinnacle_data_t cirque_pinnacle_read_data(void);
+void cirque_pinnacle_scale_data(pinnacle_data_t* coordinates, uint16_t xResolution, uint16_t yResolution);
+uint16_t cirque_pinnacle_get_scale(void);
+void cirque_pinnacle_set_scale(uint16_t scale);
diff --git a/drivers/sensors/cirque_pinnacle_gestures.c b/drivers/sensors/cirque_pinnacle_gestures.c
new file mode 100644
index 0000000000..a73b745e59
--- /dev/null
+++ b/drivers/sensors/cirque_pinnacle_gestures.c
@@ -0,0 +1,238 @@
+/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+ * Copyright 2022 Daniel Kao <daniel.m.kao@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 <stdlib.h>
+#include <lib/lib8tion/lib8tion.h>
+#include "cirque_pinnacle_gestures.h"
+#include "pointing_device.h"
+#include "timer.h"
+#include "wait.h"
+#if defined(SPLIT_POINTING_ENABLE) && defined(POINTING_DEVICE_COMBINED)
+# include "keyboard.h"
+#endif
+
+#if (defined(CIRQUE_PINNACLE_TAP_ENABLE) || defined(CIRQUE_PINNACLE_CIRCULAR_SCROLL_ENABLE)) && CIRQUE_PINNACLE_POSITION_MODE
+static cirque_pinnacle_features_t features = {.tap_enable = true, .circular_scroll_enable = true};
+#endif
+
+#if defined(CIRQUE_PINNACLE_TAP_ENABLE) && CIRQUE_PINNACLE_POSITION_MODE
+static trackpad_tap_context_t tap;
+
+static report_mouse_t trackpad_tap(report_mouse_t mouse_report, pinnacle_data_t touchData) {
+ if (touchData.touchDown != tap.touchDown) {
+ tap.touchDown = touchData.touchDown;
+ if (!touchData.zValue) {
+ if (timer_elapsed(tap.timer) < CIRQUE_PINNACLE_TAPPING_TERM && tap.timer != 0) {
+ mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, true, POINTING_DEVICE_BUTTON1);
+ pointing_device_set_report(mouse_report);
+ pointing_device_send();
+# if TAP_CODE_DELAY > 0
+ wait_ms(TAP_CODE_DELAY);
+# endif
+ mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, false, POINTING_DEVICE_BUTTON1);
+ pointing_device_set_report(mouse_report);
+ pointing_device_send();
+ }
+ }
+ tap.timer = timer_read();
+ }
+ if (timer_elapsed(tap.timer) > (CIRQUE_PINNACLE_TOUCH_DEBOUNCE)) {
+ tap.timer = 0;
+ }
+
+ return mouse_report;
+}
+
+void cirque_pinnacle_enable_tap(bool enable) {
+ features.tap_enable = enable;
+}
+#endif
+
+#ifdef CIRQUE_PINNACLE_CIRCULAR_SCROLL_ENABLE
+# if !CIRQUE_PINNACLE_POSITION_MODE
+# error "Circular scroll is not supported in relative mode"
+# endif
+/* To set a trackpad exclusively as scroll wheel: outer_ring_pct = 100, trigger_px = 0, trigger_ang = 0 */
+static circular_scroll_context_t scroll = {.config = {.outer_ring_pct = 33,
+ .trigger_px = 16,
+ .trigger_ang = 9102, /* 50 degrees */
+ .wheel_clicks = 18}};
+
+static inline uint16_t atan2_16(int32_t dy, int32_t dx) {
+ if (dy == 0) {
+ if (dx >= 0) {
+ return 0;
+ } else {
+ return 32768;
+ }
+ }
+
+ int32_t abs_y = dy > 0 ? dy : -dy;
+ int16_t a;
+
+ if (dx >= 0) {
+ a = 8192 - (8192 * (dx - abs_y) / (dx + abs_y));
+ } else {
+ a = 24576 - (8192 * (dx + abs_y) / (abs_y - dx));
+ }
+
+ if (dy < 0) {
+ return -a; // negate if in quad III or IV
+ }
+ return a;
+}
+
+static circular_scroll_t circular_scroll(pinnacle_data_t touchData) {
+ circular_scroll_t report = {0, 0, false};
+ int8_t x, y, wheel_clicks;
+ uint8_t center = INT8_MAX, mag;
+ int16_t ang, dot, det, opposite_side, adjacent_side;
+ uint16_t scale = cirque_pinnacle_get_scale();
+
+ if (touchData.zValue) {
+ /*
+ * Place origin at center of trackpad, treat coordinates as vectors.
+ * Scale to +/-INT8_MAX; angles are independent of resolution.
+ */
+ if (scale) {
+ /* Rotate coordinates into a consistent orientation */
+ report_mouse_t rot = {.x = (int8_t)((int32_t)touchData.xValue * INT8_MAX * 2 / scale - center), .y = (int8_t)((int32_t)touchData.yValue * INT8_MAX * 2 / scale - center)};
+# if defined(SPLIT_POINTING_ENABLE) && defined(POINTING_DEVICE_COMBINED)
+ if (!is_keyboard_left()) {
+ rot = pointing_device_adjust_by_defines_right(rot);
+ } else
+# endif
+ {
+ rot = pointing_device_adjust_by_defines(rot);
+ }
+ x = rot.x;
+ y = rot.y;
+ } else {
+ x = 0;
+ y = 0;
+ }
+
+ /* Check if first touch */
+ if (!scroll.z) {
+ report.suppress_touch = false;
+ /* Check if touch falls within outer ring */
+ mag = sqrt16(x * x + y * y);
+ if (mag * 100 / center >= 100 - scroll.config.outer_ring_pct) {
+ scroll.state = SCROLL_DETECTING;
+ scroll.x = x;
+ scroll.y = y;
+ scroll.mag = mag;
+ /*
+ * Decide scroll axis:
+ * Vertical if started from righ half
+ * Horizontal if started from left half
+ * Flipped for left-handed
+ */
+ scroll.axis = x < 0;
+ }
+ } else if (scroll.state == SCROLL_DETECTING) {
+ report.suppress_touch = true;
+ /* Already detecting scroll, check movement from touchdown location */
+ mag = sqrt16((x - scroll.x) * (x - scroll.x) + (y - scroll.y) * (y - scroll.y));
+ if (mag >= scroll.config.trigger_px) {
+ /*
+ * Find angle of movement.
+ * 0 degrees here means movement towards center of circle
+ */
+ dot = scroll.x * x + scroll.y * y;
+ det = scroll.x * y - scroll.y * x;
+ opposite_side = abs(det); /* Based on scalar rejection */
+ adjacent_side = abs(scroll.mag * scroll.mag - abs(dot)); /* Based on scalar projection */
+ ang = (int16_t)atan2_16(opposite_side, adjacent_side);
+ if (ang < scroll.config.trigger_ang) {
+ /* Not a scroll, release coordinates */
+ report.suppress_touch = false;
+ scroll.state = NOT_SCROLL;
+ } else {
+ /* Scroll detected */
+ scroll.state = SCROLL_VALID;
+ }
+ }
+ }
+ if (scroll.state == SCROLL_VALID) {
+ report.suppress_touch = true;
+ dot = scroll.x * x + scroll.y * y;
+ det = scroll.x * y - scroll.y * x;
+ ang = (int16_t)atan2_16(det, dot);
+ wheel_clicks = ((int32_t)ang * scroll.config.wheel_clicks) / 65536;
+ if (wheel_clicks >= 1 || wheel_clicks <= -1) {
+ if (scroll.config.left_handed) {
+ if (scroll.axis == 0) {
+ report.h = -wheel_clicks;
+ } else {
+ report.v = wheel_clicks;
+ }
+ } else {
+ if (scroll.axis == 0) {
+ report.v = -wheel_clicks;
+ } else {
+ report.h = wheel_clicks;
+ }
+ }
+ scroll.x = x;
+ scroll.y = y;
+ }
+ }
+ }
+
+ scroll.z = touchData.zValue;
+ if (!scroll.z) scroll.state = SCROLL_UNINITIALIZED;
+
+ return report;
+}
+
+void cirque_pinnacle_enable_circular_scroll(bool enable) {
+ features.circular_scroll_enable = enable;
+}
+
+void cirque_pinnacle_configure_circular_scroll(uint8_t outer_ring_pct, uint8_t trigger_px, uint16_t trigger_ang, uint8_t wheel_clicks, bool left_handed) {
+ scroll.config.outer_ring_pct = outer_ring_pct;
+ scroll.config.trigger_px = trigger_px;
+ scroll.config.trigger_ang = trigger_ang;
+ scroll.config.wheel_clicks = wheel_clicks;
+ scroll.config.left_handed = left_handed;
+}
+#endif
+
+bool cirque_pinnacle_gestures(report_mouse_t* mouse_report, pinnacle_data_t touchData) {
+ bool suppress_mouse_update = false;
+
+#ifdef CIRQUE_PINNACLE_CIRCULAR_SCROLL_ENABLE
+# if !CIRQUE_PINNACLE_POSITION_MODE
+# error "Circular scroll is not supported in relative mode"
+# endif
+ circular_scroll_t scroll_report;
+ if (features.circular_scroll_enable) {
+ scroll_report = circular_scroll(touchData);
+ mouse_report->v = scroll_report.v;
+ mouse_report->h = scroll_report.h;
+ suppress_mouse_update = scroll_report.suppress_touch;
+ }
+#endif
+
+#if defined(CIRQUE_PINNACLE_TAP_ENABLE) && CIRQUE_PINNACLE_POSITION_MODE
+ if (features.tap_enable) {
+ *mouse_report = trackpad_tap(*mouse_report, touchData);
+ }
+#endif
+
+ return suppress_mouse_update;
+}
diff --git a/drivers/sensors/cirque_pinnacle_gestures.h b/drivers/sensors/cirque_pinnacle_gestures.h
new file mode 100644
index 0000000000..d2aa206b2b
--- /dev/null
+++ b/drivers/sensors/cirque_pinnacle_gestures.h
@@ -0,0 +1,110 @@
+/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+ * Copyright 2022 Daniel Kao <daniel.m.kao@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 "cirque_pinnacle.h"
+#include "report.h"
+
+typedef struct {
+ bool tap_enable;
+ bool circular_scroll_enable;
+} cirque_pinnacle_features_t;
+
+#if defined(CIRQUE_PINNACLE_TAP_ENABLE) && CIRQUE_PINNACLE_POSITION_MODE
+# ifndef CIRQUE_PINNACLE_TAPPING_TERM
+# include "action.h"
+# include "action_tapping.h"
+# define CIRQUE_PINNACLE_TAPPING_TERM GET_TAPPING_TERM(KC_BTN1, &(keyrecord_t){})
+# endif
+# ifndef CIRQUE_PINNACLE_TOUCH_DEBOUNCE
+# define CIRQUE_PINNACLE_TOUCH_DEBOUNCE (CIRQUE_PINNACLE_TAPPING_TERM * 8)
+# endif
+
+typedef struct {
+ uint16_t timer;
+ bool touchDown;
+} trackpad_tap_context_t;
+
+/* Enable/disable tap gesture */
+void cirque_pinnacle_enable_tap(bool enable);
+#endif
+
+#ifdef CIRQUE_PINNACLE_CIRCULAR_SCROLL_ENABLE
+# if !CIRQUE_PINNACLE_POSITION_MODE
+# error "Circular scroll is not supported in relative mode"
+# endif
+typedef enum {
+ SCROLL_UNINITIALIZED,
+ SCROLL_DETECTING,
+ SCROLL_VALID,
+ NOT_SCROLL,
+} circular_scroll_status_t;
+
+typedef struct {
+ int8_t v;
+ int8_t h;
+ bool suppress_touch;
+} circular_scroll_t;
+
+typedef struct {
+ uint8_t outer_ring_pct; /* Width of outer ring, given as a percentage of the radius */
+ uint8_t trigger_px; /* Amount of movement before triggering scroll validation, in pixels 0~127 */
+ uint16_t trigger_ang; /* Angle required to validate scroll, in radians where pi = 32768 */
+ uint8_t wheel_clicks; /* How many clicks to report in a circle */
+ bool left_handed; /* Whether scrolling should be flipped for left handed use */
+} circular_scroll_config_t;
+
+typedef struct {
+ circular_scroll_config_t config;
+ circular_scroll_status_t state;
+ uint8_t mag;
+ int8_t x;
+ int8_t y;
+ uint16_t z;
+ bool axis;
+} circular_scroll_context_t;
+
+/* Enable/disable circular scroll gesture */
+void cirque_pinnacle_enable_circular_scroll(bool enable);
+
+/*
+ * Configure circular scroll gesture.
+ * Trackpad can be configured to act exclusively as a scroll wheel with outer_ring_pct = 0, trigger_px = 0, trigger_ang = 0.
+ * @param outer_ring_pct Width of outer ring from which to begin scroll validation, given as a percentage of the radius.
+ * @param trigger_px Amount of movement before triggering scroll validation. Expressed in pixels, trackpad coordinates are scaled to radius of 128 pixels for circular scroll.
+ * @param triger_ang Angle required to validate scroll, angle smaller than this will invalidate scroll. In radians where pi = 32768, 0 means movement towards center of trackpad, 16384 means movement perpendicular to center.
+ * @param wheel_clicks Number of scroll wheel clicks to report in a full rotation.
+ * @param left_handed Whether scrolling should be flipped for left-handed use.
+ */
+void cirque_pinnacle_configure_circular_scroll(uint8_t outer_ring_pct, uint8_t trigger_px, uint16_t trigger_ang, uint8_t wheel_clicks, bool left_handed);
+#endif
+
+#ifdef POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE
+/* Implementation in pointing_device_drivers.c */
+
+/* Enable/disable inertial cursor */
+void cirque_pinnacle_enable_cursor_glide(bool enable);
+
+/*
+ * Configure inertial cursor.
+ * @param trigger_px Movement required to trigger cursor glide, set this to non-zero if you have some amount of hover.
+ */
+void cirque_pinnacle_configure_cursor_glide(float trigger_px);
+#endif
+
+/* Process available gestures */
+bool cirque_pinnacle_gestures(report_mouse_t* mouse_report, pinnacle_data_t touchData);
diff --git a/drivers/sensors/cirque_pinnacle_i2c.c b/drivers/sensors/cirque_pinnacle_i2c.c
index 8a38f1dcea..b328dd9a7a 100644
--- a/drivers/sensors/cirque_pinnacle_i2c.c
+++ b/drivers/sensors/cirque_pinnacle_i2c.c
@@ -19,7 +19,7 @@ void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) {
i2c_writeReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, NULL, 0, CIRQUE_PINNACLE_TIMEOUT);
if (i2c_readReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, data, count, CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) {
#ifdef CONSOLE_ENABLE
- dprintf("error right touchpad\n");
+ dprintf("error cirque_pinnacle i2c_readReg\n");
#endif
touchpad_init = false;
}
@@ -34,7 +34,7 @@ void RAP_Write(uint8_t address, uint8_t data) {
if (touchpad_init) {
if (i2c_writeReg(CIRQUE_PINNACLE_ADDR << 1, cmdByte, &data, sizeof(data), CIRQUE_PINNACLE_TIMEOUT) != I2C_STATUS_SUCCESS) {
#ifdef CONSOLE_ENABLE
- dprintf("error right touchpad\n");
+ dprintf("error cirque_pinnacle i2c_writeReg\n");
#endif
touchpad_init = false;
}
diff --git a/drivers/sensors/cirque_pinnacle_regdefs.h b/drivers/sensors/cirque_pinnacle_regdefs.h
new file mode 100644
index 0000000000..fb9e09af6e
--- /dev/null
+++ b/drivers/sensors/cirque_pinnacle_regdefs.h
@@ -0,0 +1,405 @@
+// Copyright (c) 2018 Cirque Corp. Restrictions apply. See: www.cirque.com/sw-license
+// based on https://github.com/cirque-corp/Cirque_Pinnacle_1CA027/tree/master/Additional_Examples
+// with modifications and changes for QMK
+// refer to documentation: Gen2 and Gen3 (Pinnacle ASIC) at https://www.cirque.com/gen2gen3-asic-details
+
+#pragma once
+
+// clang-format off
+
+#define HostReg__0 (0x00)
+#define HostReg__1 (0x01)
+#define HostReg__2 (0x02)
+#define HostReg__3 (0x03)
+#define HostReg__4 (0x04)
+#define HostReg__5 (0x05)
+#define HostReg__6 (0x06)
+#define HostReg__7 (0x07)
+#define HostReg__8 (0x08)
+#define HostReg__9 (0x09)
+#define HostReg__10 (0x0A)
+#define HostReg__11 (0x0B)
+#define HostReg__12 (0x0C)
+#define HostReg__13 (0x0D)
+#define HostReg__14 (0x0E)
+#define HostReg__15 (0x0F)
+#define HostReg__16 (0x10)
+#define HostReg__17 (0x11)
+#define HostReg__18 (0x12)
+#define HostReg__19 (0x13)
+#define HostReg__20 (0x14)
+#define HostReg__21 (0x15)
+#define HostReg__22 (0x16)
+#define HostReg__23 (0x17)
+#define HostReg__24 (0x18)
+#define HostReg__25 (0x19)
+#define HostReg__26 (0x1A)
+#define HostReg__27 (0x1B)
+#define HostReg__28 (0x1C)
+#define HostReg__29 (0x1D)
+#define HostReg__30 (0x1E)
+#define HostReg__31 (0x1F)
+
+// ---------------- Register Assignments -------------------------------------
+
+/*--------------------------------------------------------------------------*\
+ Chip ID / Version
+\*--------------------------------------------------------------------------*/
+// Chip ID Register
+#define HOSTREG__CHIPID HostReg__0
+
+// Chip Version Register
+#define HOSTREG__VERSION HostReg__1
+
+/*--------------------------------------------------------------------------*\
+ Status Register
+\*--------------------------------------------------------------------------*/
+// Status 1 Register -- MUST BE HOSTREG__2
+#define HOSTREG__STATUS1 HostReg__2
+# define HOSTREG__STATUS1__DATA_READY 0x04
+# define HOSTREG__STATUS1__COMMAND_COMPLETE 0x08
+#define HOSTREG__STATUS1_DEFVAL 0x00
+
+/*--------------------------------------------------------------------------*\
+ System Config Register
+\*--------------------------------------------------------------------------*/
+#define HOSTREG__SYSCONFIG1 HostReg__3
+# define HOSTREG__SYSCONFIG1__RESET 0x01
+# define HOSTREG__SYSCONFIG1__STANDBY 0x02
+# define HOSTREG__SYSCONFIG1__AUTO_SLEEP 0x04
+# define HOSTREG__SYSCONFIG1__TRACK_DISABLE 0x08
+# define HOSTREG__SYSCONFIG1__ANYMEAS_ENABLE 0x10
+# define HOSTREG__SYSCONFIG1__GPIO_CTRL_ENABLE 0x20
+# define HOSTREG__SYSCONFIG1__WAKEUP_TOGGLE 0x40
+# define HOSTREG__SYSCONFIG1__FORCE_WAKEUP 0x80
+#define HOSTREG__SYSCONFIG1_DEFVAL 0x00
+
+/*--------------------------------------------------------------------------*\
+ Feed Config Registers
+\*--------------------------------------------------------------------------*/
+// Feed Config Register1
+#define HOSTREG__FEEDCONFIG1 HostReg__4
+# define HOSTREG__FEEDCONFIG1__FEED_ENABLE 0x01
+# define HOSTREG__FEEDCONFIG1__DATA_TYPE__REL0_ABS1 0x02
+# define HOSTREG__FEEDCONFIG1__FILTER_DISABLE 0x04
+# define HOSTREG__FEEDCONFIG1__X_AXIS_DISABLE 0x08
+# define HOSTREG__FEEDCONFIG1__Y_AXIS_DISABLE 0x10
+# define HOSTREG__FEEDCONFIG1__AXIS_FOR_Z__Y0_X1 0x20
+# define HOSTREG__FEEDCONFIG1__X_DATA_INVERT 0x40
+# define HOSTREG__FEEDCONFIG1__Y_DATA_INVERT 0x80
+#define HOSTREG__FEEDCONFIG1_DEFVAL 0x00
+
+// Feed Config Register2
+#define HOSTREG__FEEDCONFIG2 HostReg__5
+# define HOSTREG__FEEDCONFIG2__INTELLIMOUSE_MODE 0x01
+# define HOSTREG__FEEDCONFIG2__ALL_TAP_DISABLE 0x02
+# define HOSTREG__FEEDCONFIG2__SECONDARY_TAP_DISABLE 0x04
+# define HOSTREG__FEEDCONFIG2__SCROLL_DISABLE 0x08
+# define HOSTREG__FEEDCONFIG2__GLIDE_EXTEND_DISABLE 0x10
+# define HOSTREG__FEEDCONFIG2__PALM_BEFORE_Z_ENABLE 0x20
+# define HOSTREG__FEEDCONFIG2__BUTNS_46_SCROLL_5_MIDDLE 0x40
+# define HOSTREG__FEEDCONFIG2__SWAP_XY_RELATIVE 0x80
+#define HOSTREG__FEEDCONFIG2_DEFVAL 0x00
+
+// Feed Config Register3
+#define HOSTREG__FEEDCONFIG3 HostReg__6
+# define HOSTREG__FEEDCONFIG3__BTNS_456_TO_123_IN_REL 0x01
+# define HOSTREG__FEEDCONFIG3__DISABLE_CROSS_RATE_SMOOTHING 0x02
+# define HOSTREG__FEEDCONFIG3__DISABLE_PALM_NERD_MEAS 0x04
+# define HOSTREG__FEEDCONFIG3__DISABLE_NOISE_AVOIDANCE 0x08
+# define HOSTREG__FEEDCONFIG3__DISABLE_WRAP_LOCKOUT 0x10
+# define HOSTREG__FEEDCONFIG3__DISABLE_DYNAMIC_EMI_ADJUST 0x20
+# define HOSTREG__FEEDCONFIG3__DISABLE_HW_EMI_DETECT 0x40
+# define HOSTREG__FEEDCONFIG3__DISABLE_SW_EMI_DETECT 0x80
+#define HOSTREG__FEEDCONFIG3_DEFVAL 0x00
+
+/*--------------------------------------------------------------------------*\
+ Calibration Config
+\*--------------------------------------------------------------------------*/
+#define HOSTREG__CALCONFIG1 HostReg__7
+# define HOSTREG__CALCONFIG1__CALIBRATE 0x01
+# define HOSTREG__CALCONFIG1__BACKGROUND_COMP_ENABLE 0x02
+# define HOSTREG__CALCONFIG1__NERD_COMP_ENABLE 0x04
+# define HOSTREG__CALCONFIG1__TRACK_ERROR_COMP_ENABLE 0x08
+# define HOSTREG__CALCONFIG1__TAP_COMP_ENABLE 0x10
+# define HOSTREG__CALCONFIG1__PALM_ERROR_COMP_ENABLE 0x20
+# define HOSTREG__CALCONFIG1__CALIBRATION_MATRIX_DISABLE 0x40
+# define HOSTREG__CALCONFIG1__FORCE_PRECALIBRATION_NOISE_CHECK 0x80
+#define HOSTREG__CALCONFIG1_DEFVAL (HOSTREG__CALCONFIG1__BACKGROUND_COMP_ENABLE | HOSTREG__CALCONFIG1__NERD_COMP_ENABLE | HOSTREG__CALCONFIG1__TRACK_ERROR_COMP_ENABLE | HOSTREG__CALCONFIG1__TAP_COMP_ENABLE | HOSTREG__CALCONFIG1__PALM_ERROR_COMP_ENABLE)
+
+/*--------------------------------------------------------------------------*\
+ PS2 Aux Control Register
+\*--------------------------------------------------------------------------*/
+#define HOSTREG__PS2AUX_CTRL HostReg__8
+# define HOSTREG__PS2AUX_CTRL__CMD_PASSTHRU_ENABLE 0x01
+# define HOSTREG__PS2AUX_CTRL__SP_EXTENDED_MODE 0x02
+# define HOSTREG__PS2AUX_CTRL__GS_DISABLE 0x04
+# define HOSTREG__PS2AUX_CTRL__SP_DISABLE 0x08
+# define HOSTREG__PS2AUX_CTRL__GS_COORDINATE_DISABLE 0x10
+# define HOSTREG__PS2AUX_CTRL__SP_COORDINATE_DISABLE 0x20
+# define HOSTREG__PS2AUX_CTRL__DISABLE_AA00_DETECT 0x40
+# define HOSTREG__PS2AUX_CTRL__AUX_PRESENT 0x80
+#define HOSTREG__PR2AUX_CTRL_DEFVAL 0x00
+
+/*--------------------------------------------------------------------------*\
+ Sample Rate Value
+\*--------------------------------------------------------------------------*/
+#define HOSTREG__SAMPLERATE HostReg__9
+# define HOSTREG__SAMPLERATE__10_SPS 0x0A
+# define HOSTREG__SAMPLERATE__20_SPS 0x14
+# define HOSTREG__SAMPLERATE__40_SPS 0x28
+# define HOSTREG__SAMPLERATE__60_SPS 0x3C
+# define HOSTREG__SAMPLERATE__80_SPS 0x50
+# define HOSTREG__SAMPLERATE__100_SPS 0x64
+# define HOSTREG__SAMPLERATE__200_SPS 0xC8 // 200sps not supported
+ // only for ps2 compatibility
+ // rate set to 100sps
+#define HOSTREG__SAMPLERATE_DEFVAL HOSTREG__SAMPLERATE__100_SPS
+
+/*--------------------------------------------------------------------------*\
+ Z Idle Value
+\*--------------------------------------------------------------------------*/
+#define HOSTREG__ZIDLE HostReg__10
+#define HOSTREG__ZIDLE_DEFVAL 30 // 0x1E
+
+/*--------------------------------------------------------------------------*\
+ Z Scaler Value
+\*--------------------------------------------------------------------------*/
+#define HOSTREG__ZSCALER HostReg__11
+#define HOSTREG__ZSCALER_DEFVAL 8 // 0x08
+
+/*--------------------------------------------------------------------------*\
+ Sleep Interval Value
+\*--------------------------------------------------------------------------*/
+#define HOSTREG__SLEEP_INTERVAL HostReg__12
+#define HOSTREG__SLEEP_INTERVAL_DEFVAL 73 // 0x49
+
+/*--------------------------------------------------------------------------*\
+ Sleep Delay Value
+\*--------------------------------------------------------------------------*/
+#define HOSTREG__SLEEP_DELAY HostReg__13
+#define HOSTREG__SLEEP_DELAY_DEFVAL 39 // 0x27
+
+/*--------------------------------------------------------------------------*\
+ Dynamic EMI Bad Channel Count Thresholds
+\*--------------------------------------------------------------------------*/
+#define HOSTREG__DYNAMIC_EMI_ADJUST_THRESHOLD HostReg__14
+#define HOSTREG__DYNAMIC_EMI_ADJUST_THRESHOLD_DEFVAL 66 // 0x42
+
+/*--------------------------------------------------------------------------*\
+ Packet Registers
+\*--------------------------------------------------------------------------*/
+#define HOSTREG__PACKETBYTE_0 HostReg__18
+#define HOSTREG__PACKETBYTE_1 HostReg__19
+#define HOSTREG__PACKETBYTE_2 HostReg__20
+#define HOSTREG__PACKETBYTE_3 HostReg__21
+#define HOSTREG__PACKETBYTE_4 HostReg__22
+#define HOSTREG__PACKETBYTE_5 HostReg__23
+
+/*--------------------------------------------------------------------------*\
+ Port A GPIO Control
+\*--------------------------------------------------------------------------*/
+#define HOSTREG__PORTA_GPIO_CTRL HostReg__24
+#define HOSTREG__PORTA_GPIO_CTRL_DEFVAL 0xFF
+
+/*--------------------------------------------------------------------------*\
+ Port A GPIO Data
+\*--------------------------------------------------------------------------*/
+#define HOSTREG__PORTA_GPIO_DATA HostReg__25
+#define HOSTREG__PORTA_GPIO_DATA_DEFVAL 0x00
+
+/*--------------------------------------------------------------------------*\
+ Port B GPIO Control And Data
+\*--------------------------------------------------------------------------*/
+
+#define HOSTREG__PORTB_GPIO_CTRL_DATA HostReg__26
+# define HOSTREG__PORTB_GPIO_DATA__PB0 0x01
+# define HOSTREG__PORTB_GPIO_DATA__PB1 0x02
+# define HOSTREG__PORTB_GPIO_DATA__PB2 0x04
+# define HOSTREG__PORTB_GPIO_CTRL__PB0 0x08
+# define HOSTREG__PORTB_GPIO_CTRL__PB1 0x10
+# define HOSTREG__PORTB_GPIO_CTRL__PB2 0x20
+# define HOSTREG__PORTB_GPIO_RSVD_0 0x40
+# define HOSTREG__PORTB_GPIO_READ1_WRITE0 0x80
+#define HOSTREG__PORTB_GPIO_CTRL_DATA_DEFVAL (HOSTREG__PORTB_GPIO_CTRL__PB0 | HOSTREG__PORTB_GPIO_CTRL__PB1 | HOSTREG__PORTB_GPIO_CTRL__PB2)
+
+/*--------------------------------------------------------------------------*\
+ Extended Register Access
+\*--------------------------------------------------------------------------*/
+#define HOSTREG__EXT_REG_AXS_VALUE HostReg__27
+
+#define HOSTREG__EXT_REG_AXS_ADDR_HIGH HostReg__28
+#define HOSTREG__EXT_REG_AXS_ADDR_LOW HostReg__29
+
+#define HOSTREG__EXT_REG_AXS_CTRL HostReg__30
+# define HOSTREG__EREG_AXS__READ 0x01
+# define HOSTREG__EREG_AXS__WRITE 0x02
+# define HOSTREG__EREG_AXS__INC_ADDR_READ 0x04
+# define HOSTREG__EREG_AXS__INC_ADDR_WRITE 0x08
+# define HOSTREG__EREG_AXS__RSVD_3 0x10
+# define HOSTREG__EREG_AXS__RSVD_2 0x20
+# define HOSTREG__EREG_AXS__RSVD_1 0x40
+# define HOSTREG__EREG_AXS__RSVD_0 0x80
+
+#define HOSTREG__EXT_REG_AXS_VALUE_DEFVAL 0x00
+#define HOSTREG__EXT_REG_AXS_ADDR_HIGH_DEFVAL 0x00
+#define HOSTREG__EXT_REG_AXS_ADDR_LOW_DEFVAL 0x00
+#define HOSTREG__EXT_REG_AXS_CTRL_DEFVAL 0x00
+
+/*--------------------------------------------------------------------------*\
+ Product ID
+\*--------------------------------------------------------------------------*/
+#define HOSTREG__PRODUCT_ID HostReg__31
+
+
+
+//Some useful values
+#define I2C_ADDRESS_DEFAULT 0x2A
+#define FIRMWARE_ID 0x07
+#define FIRMWARE_VERSION 0x9D
+
+//Anymeas config options
+//First setting is HostReg 5. This sets toggle frequency (EF) and gain.
+//Gain is upper two bits (0xC0), frequency is lower 6 bits (0x3F)
+#define AnyMeas_AccumBits_ElecFreq HostReg__5
+# define ADCCNFG_ELEC_FREQ 0x3F /* Bit 4, 3, 2, 1, 0 */
+# define ADCCNFG_EF_0 0x02 // 500,000Hz
+# define ADCCNFG_EF_1 0x03 // 444,444Hz
+# define ADCCNFG_EF_2 0x04 // 400,000Hz
+# define ADCCNFG_EF_3 0x05 // 363,636Hz
+# define ADCCNFG_EF_4 0x06 // 333,333Hz
+# define ADCCNFG_EF_5 0x07 // 307,692Hz
+# define ADCCNFG_EF_6 0x09 // 267,000Hz
+# define ADCCNFG_EF_7 0x0B // 235,000Hz
+# define ADCCNFG_ACCUMBITSSELECT 0xC0 /* Bit 7, 6 */
+# define ADCCNFG_ACCBITS_17_14_0 0x00 //This is about 2x gain
+# define ADCCNFG_ACCBITS_17_15_1 0x40 //This is about 1.6x gain
+# define ADCCNFG_ACCBITS_17_2__80 0x80 //This is about 1.3x gain
+# define ADCCNFG_ACCBITS_17_2__C0 0xC0 //This is lowest gain
+//Note, all frequencies above are based on default 500ns aperture. If aperture is shorter the frequencies will be faster and if aperture is longer the frequencies will be slower.
+
+//Next is HostReg 6. This sets the sample length. There are four possible settings to bit length. All other settings are not normally used and should be a 0.
+#define AnyMeas_BitLength HostReg__6
+# define ADCCTRL_BIT_LENGTH 0x03 /* Bit 1, 0 */
+# define ADCCTRL_SAMPLES_32 0x00 //Note: this does not work.
+# define ADCCTRL_SAMPLES_128 0x01
+# define ADCCTRL_SAMPLES_256 0x02
+# define ADCCTRL_SAMPLES_512 0x03
+# define ADCCTRL_ENABLE 0x20 /* Bit 5 */
+# define ADCCTRL_INT_FLAG 0x40 /* Bit 6 */
+# define ADCCTRL_START_BUSY 0x80 /* Bit 7 */
+//The smaller the sample length the faster the measurement but the lower the SNR. For high SNR requirements 512 sample length is recommended. Alternatively, multiple 128 or 256 length measurements could be averaged.
+
+//Next is HostReg 7. This sets the sense mux. Pinnacle has 2 sense lines, Sense N and Sense P1. There is also a Sense P2 but it is not bonded out, it is only internal.
+//Signal on Sense N will be inverted from signal on Sense P1. Other than sign inversion, signal strength should be the same.
+#define AnyMeas_ADC_MuxControl HostReg__7
+# define ADCMUXCTRL_SENSEP1GATE 0x01 //Enables Sense P1. Can be combined with Sense N input or exclusivly Sense P1 alone.
+# define ADCMUXCTRL_SENSEP2GATE 0x02 //Not used.
+# define ADCMUXCTRL_SENSENGATE 0x04 //Enables Sense N. Can be combined with Sense P inputs or exclusivly Sense N alone.
+# define ADCMUXCTRL_REF0GATE 0x08 //This enables the RefCap0. This is a capacitor inside the chip that is roughly 0.25pF. It is also controlled with the toggle and polarity bits so those bits must be set properly as well in order to use it.
+# define ADCMUXCTRL_REF1GATE 0x10 //This enables the RefCap1. This is a capacitor inside the chip that is roughly 0.5pF. It is also controlled with the toggle and polarity bits so those bits must be set properly as well in order to use it.
+# define ADCMUXCTRL_OSCMEASEN 0x80 //this is a test mode for measuring the internal oscillator. It is for IC test only.
+
+//Next is HostReg 8. This contains various ADC config settings that are not likely to be used.
+#define AnyMeas_ADC_Config2 HostReg__8
+# define ADCCNFG2_ADC_CLK_SELECT 0x01 /* Bit 0 */ //If 0 use the standard 8Mhz clock. If 1 use a divide by 2, 4Mhz clock. Only used if extra slow toggle frequencies are required.
+# define ADCCNFG2_EMI_FLAG 0x02 /* Bit 1 */ //EMI flag threshold only used with internal FW. Not valid in anymeas mode.
+# define ADCCNFG2_EMI_FLAG_THRESHOLD_0 0x04 /* Bit 2 */ //EMI flag threshold only used with internal FW. Not valid in anymeas mode.
+# define ADCCNFG2_EMI_FLAG_THRESHOLD_1 0x08 /* Bit 3 */ //EMI flag threshold only used with internal FW. Not valid in anymeas mode.
+# define ADCCNFG2_DSX2_EXTEND 0x10 /* Bit 4 */ //extend one signal on the receive. Could also be helpful in situations where sensor cap is extremely high.
+# define ADCCNFG2_ETOGGLE_DELAY 0x20 /* Bit 5 */ //delay a bit before toggling electrodes. Could be helpful in situations where sensor cap is extremely high.
+
+//Next is HostReg 9. This sets the aperture length. Bottom 4 bits set the aperture width
+#define AnyMeas_ADC_AWidth HostReg__9
+# define ADCAWIDTH_AWIDTHMASK 0x0F
+# define ADCAWIDTH_APERTURE_OPEN 0x00 //does not work
+# define ADCAWIDTH_APERTURE_125NS 0x01 //does not work
+# define ADCAWIDTH_APERTURE_250NS 0x02
+# define ADCAWIDTH_APERTURE_375NS 0x03
+# define ADCAWIDTH_APERTURE_500NS 0x04
+# define ADCAWIDTH_APERTURE_625NS 0x05
+# define ADCAWIDTH_APERTURE_750NS 0x06
+# define ADCAWIDTH_APERTURE_875NS 0x07
+# define ADCAWIDTH_APERTURE_1000NS 0x08
+# define ADCAWIDTH_APERTURE_1125NS 0x09
+# define ADCAWIDTH_APERTURE_1250NS 0x0A
+# define ADCAWIDTH_APERTURE_1375NS 0x0B
+# define ADCAWIDTH_APERTURE_1500NS 0x0C
+# define ADCAWIDTH_APERTURE_1625NS 0x0D
+# define ADCAWIDTH_APERTURE_1750NS 0x0E
+# define ADCAWIDTH_APERTURE_1875NS 0x0F
+# define ADCAWIDTH_AWIDTHPLUSHALF 0x10
+# define ADCAWIDTH_AOPEN 0x20
+# define ADCAWIDTH_W2WAIT 0x40
+
+//next two registers give the high and low bytes to the 16 bit address where Pinnacle will pull the measurement data. Normally these addresses are within the base 32 registers.
+#define AnyMeas_pADCMeasInfoStart_High_Byte HostReg__10
+#define AnyMeas_pADCMeasInfoStart_Low_Byte HostReg__11
+
+//Next is the measurement index, this sets the measurement state machine to the start and should be a 0 at start.
+#define AnyMeas_MeasIndex HostReg__12
+# define ANYMEASSTATE_RESET_START 0x00
+# define ANYMEASSTATE_START_MEASUREMENT 0x01
+# define ANYMEASSTATE_WAIT_FOR_MEASUREMENT_AND_HOST 0x02
+
+//next is the state itself of the measurement, should always be 0.
+#define AnyMeas_State HostReg__13
+
+//next is the number of measurements. Use 0x80 to repeat the single measurement or repeat a number of measurements.
+//0x40 will turn the ADC off after measurements. This will result in longer startup time for a subsequent measurement, but lower idle power draw.
+#define AnyMeas_Control_NumMeas HostReg__14
+# define ANYMEAS_CONTROL__NUM_MEAS_MASK 0x3F
+# define ANYMEAS_CONTROL__ADC_POST_MEAS_PWR 0x40
+# define ANYMEAS_CONTROL__REPEAT 0x80
+
+//These are not used
+#define AnyMeas_pADCMeasInfo_High_Byte HostReg__15
+#define AnyMeas_pADCMeasInfo_Low_Byte HostReg__16
+
+//16 bit result of measurement will be found in these two registers.
+#define AnyMeas_Result_High_Byte HostReg__17
+#define AnyMeas_Result_Low_Byte HostReg__18
+
+// ---------------- Extended Register Assignments ----------------------------
+/*--------------------------------------------------------------------------*\
+ ADC Mux Control
+\*--------------------------------------------------------------------------*/
+#define EXTREG__ADCMUX_CTRL 0x00EB
+# define EXTREG__ADCMUX_CTRL__SNSP_ENABLE 0x01
+# define EXTREG__ADCMUX_CTRL__SNSN_ENABLE 0x04
+
+/*--------------------------------------------------------------------------*\
+ Timer Reload Registers
+\*--------------------------------------------------------------------------*/
+#define EXTREG__PACKET_TIMER_RELOAD 0x019F
+#define EXTREG__TRACK_TIMER_RELOAD 0x019E
+// These two registers should have matching content.
+# define EXTREG__TIMER_RELOAD__300_SPS 0x06
+# define EXTREG__TIMER_RELOAD__200_SPS 0x09
+# define EXTREG__TIMER_RELOAD__100_SPS 0x13
+
+/*--------------------------------------------------------------------------*\
+ Track ADC Config
+\*--------------------------------------------------------------------------*/
+#define EXTREG__TRACK_ADCCONFIG 0x0187
+// ADC-attenuation settings (held in BIT_7 and BIT_6)
+// 1X = most sensitive, 4X = least sensitive
+# define EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_MASK 0xC0
+# define EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_1X 0x00
+# define EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_2X 0x40
+# define EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_3X 0x80
+# define EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_4X 0xC0
+#define EXTREG__TRACK_ADCCONFIG_DEFVAL 0x4E
+
+
+/*--------------------------------------------------------------------------*\
+ Tune Edge Sensitivity
+\*--------------------------------------------------------------------------*/
+// These registers are not detailed in any publically available documentation
+// Names inferred from debug prints in https://github.com/cirque-corp/Cirque_Pinnacle_1CA027/blob/master/Circular_Trackpad
+#define EXTREG__XAXIS_WIDEZMIN 0x0149
+#define EXTREG__YAXIS_WIDEZMIN 0x0168
+#define EXTREG__XAXIS_WIDEZMIN_DEFVAL 0x06
+#define EXTREG__YAXIS_WIDEZMIN_DEFVAL 0x05
+
+// clang-format on
diff --git a/drivers/sensors/cirque_pinnacle_spi.c b/drivers/sensors/cirque_pinnacle_spi.c
index 34c77df07b..bd980fc863 100644
--- a/drivers/sensors/cirque_pinnacle_spi.c
+++ b/drivers/sensors/cirque_pinnacle_spi.c
@@ -25,7 +25,7 @@ void RAP_ReadBytes(uint8_t address, uint8_t* data, uint8_t count) {
}
} else {
#ifdef CONSOLE_ENABLE
- dprintf("error right touchpad\n");
+ dprintf("error cirque_pinnacle spi_start read\n");
#endif
touchpad_init = false;
}
@@ -43,7 +43,7 @@ void RAP_Write(uint8_t address, uint8_t data) {
spi_write(data);
} else {
#ifdef CONSOLE_ENABLE
- dprintf("error right touchpad\n");
+ dprintf("error cirque_pinnacle spi_start write\n");
#endif
touchpad_init = false;
}
diff --git a/drivers/sensors/paw3204.c b/drivers/sensors/paw3204.c
new file mode 100644
index 0000000000..a13753dd6f
--- /dev/null
+++ b/drivers/sensors/paw3204.c
@@ -0,0 +1,172 @@
+/* Copyright 2021 Gompa (@Gompa)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// https://github.com/shinoaliceKabocha/choco60_track/tree/master/keymaps/default
+
+#include "paw3204.h"
+#include "wait.h"
+#include "debug.h"
+#include "gpio.h"
+
+#define REG_PID1 0x00
+#define REG_PID2 0x01
+#define REG_STAT 0x02
+#define REG_X 0x03
+#define REG_Y 0x04
+
+#define REG_SETUP 0x06
+#define REG_IMGQUAL 0x07
+#define REG_IMGREC 0x0E
+#define REG_IMGTRASH 0x0D
+
+#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)))
+
+// CPI values
+enum cpi_values {
+ CPI400, // 0b000
+ CPI500, // 0b001
+ CPI600, // 0b010
+ CPI800, // 0b011
+ CPI1000, // 0b100
+ CPI1200, // 0b101
+ CPI1600, // 0b110
+};
+
+uint8_t paw3204_serial_read(void);
+void paw3204_serial_write(uint8_t reg_addr);
+uint8_t paw3204_read_reg(uint8_t reg_addr);
+void paw3204_write_reg(uint8_t reg_addr, uint8_t data);
+
+void paw3204_init(void) {
+ setPinOutput(PAW3204_SCLK_PIN); // setclockpin to output
+ setPinInputHigh(PAW3204_SDIO_PIN); // set datapin input high
+
+ paw3204_write_reg(REG_SETUP, 0x86); // reset sensor and set 1600cpi
+ wait_us(5);
+
+ paw3204_read_reg(0x00); // read id
+ paw3204_read_reg(0x01); // read id2
+ // PAW3204_write_reg(REG_SETUP,0x06); // dont reset sensor and set cpi 1600
+ paw3204_write_reg(REG_IMGTRASH, 0x32); // write image trashhold
+}
+
+uint8_t paw3204_serial_read(void) {
+ setPinInput(PAW3204_SDIO_PIN);
+ uint8_t byte = 0;
+
+ for (uint8_t i = 0; i < 8; ++i) {
+ writePinLow(PAW3204_SCLK_PIN);
+ wait_us(1);
+
+ byte = (byte << 1) | readPin(PAW3204_SDIO_PIN);
+
+ writePinHigh(PAW3204_SCLK_PIN);
+ wait_us(1);
+ }
+
+ return byte;
+}
+
+void paw3204_serial_write(uint8_t data) {
+ writePinLow(PAW3204_SDIO_PIN);
+ setPinOutput(PAW3204_SDIO_PIN);
+
+ for (int8_t b = 7; b >= 0; b--) {
+ writePinLow(PAW3204_SCLK_PIN);
+ if (data & (1 << b)) {
+ writePinHigh(PAW3204_SDIO_PIN);
+ } else {
+ writePinLow(PAW3204_SDIO_PIN);
+ }
+ writePinHigh(PAW3204_SCLK_PIN);
+ }
+
+ wait_us(4);
+}
+
+report_paw3204_t paw3204_read(void) {
+ report_paw3204_t data = {0};
+
+ data.isMotion = paw3204_read_reg(REG_STAT) & (1 << 7); // check for motion only (bit 7 in field)
+ data.x = (int8_t)paw3204_read_reg(REG_X);
+ data.y = (int8_t)paw3204_read_reg(REG_Y);
+
+ return data;
+}
+
+void paw3204_write_reg(uint8_t reg_addr, uint8_t data) {
+ paw3204_serial_write(0b10000000 | reg_addr);
+ paw3204_serial_write(data);
+}
+
+uint8_t paw3204_read_reg(uint8_t reg_addr) {
+ paw3204_serial_write(reg_addr);
+ wait_us(5);
+ return paw3204_serial_read();
+}
+
+void paw3204_set_cpi(uint16_t cpi) {
+ uint8_t cpival = CPI1000;
+ if (cpi <= 450) {
+ cpival = CPI400;
+ } else if (cpi <= 550) {
+ cpival = CPI500;
+ } else if (cpi <= 700) {
+ cpival = CPI600;
+ } else if (cpi <= 900) {
+ cpival = CPI800;
+ } else if (cpi <= 1100) {
+ cpival = CPI1000;
+ } else if (cpi <= 1400) {
+ cpival = CPI1200;
+ } else if (cpi > 1400) {
+ cpival = CPI1600;
+ }
+ paw3204_write_reg(REG_SETUP, cpival);
+}
+
+uint16_t paw3204_get_cpi(void) {
+ uint16_t cpival = 1000;
+
+ switch (paw3204_read_reg(REG_SETUP) & 0b111) {
+ case CPI400:
+ cpival = 400;
+ break;
+ case CPI500:
+ cpival = 500;
+ break;
+ case CPI600:
+ cpival = 600;
+ break;
+ case CPI800:
+ cpival = 800;
+ break;
+ case CPI1000:
+ cpival = 1000;
+ break;
+ case CPI1200:
+ cpival = 1200;
+ break;
+ case CPI1600:
+ cpival = 1600;
+ break;
+ }
+ return cpival;
+}
+
+uint8_t read_pid_paw3204(void) {
+ return paw3204_read_reg(REG_PID1);
+}
diff --git a/drivers/sensors/paw3204.h b/drivers/sensors/paw3204.h
new file mode 100644
index 0000000000..7f487d90dc
--- /dev/null
+++ b/drivers/sensors/paw3204.h
@@ -0,0 +1,76 @@
+/* Copyright 2021 Gompa (@Gompa)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#ifndef PAW3204_SCLK_PIN
+# ifdef POINTING_DEVICE_SCLK_PIN
+# define PAW3204_SCLK_PIN POINTING_DEVICE_SCLK_PIN
+# else
+# error "No clock pin defined -- missing POINTING_DEVICE_SCLK_PIN or PAW3204_SCLK_PIN"
+# endif
+#endif
+#ifndef PAW3204_SDIO_PIN
+# ifdef POINTING_DEVICE_SDIO_PIN
+# define PAW3204_SDIO_PIN POINTING_DEVICE_SDIO_PIN
+# else
+# error "No data pin defined -- missing POINTING_DEVICE_SDIO_PIN or PAW3204_SDIO_PIN"
+# endif
+#endif
+
+typedef struct {
+ int16_t x;
+ int16_t y;
+ bool isMotion;
+} report_paw3204_t;
+
+/**
+ * @brief Initializes the sensor so it is in a working state and ready to
+ * be polled for data.
+ *
+ * @return true Initialization was a success
+ * @return false Initialization failed, do not proceed operation
+ */
+void paw3204_init(void);
+
+/**
+ * @brief Reads and clears the current delta, and motion register values on the
+ * given sensor.
+ *
+ * @return pmw33xx_report_t Current values of the sensor, if errors occurred all
+ * fields are set to zero
+ */
+
+report_paw3204_t paw3204_read(void);
+/**
+ * @brief Sets the given CPI value the sensor. CPI is often refereed to
+ * as the sensors sensitivity. Values outside of the allowed range are
+ * constrained into legal values.
+ *
+ * @param cpi CPI value to set
+ */
+void paw3204_set_cpi(uint16_t cpi);
+
+/**
+ * @brief Gets the currently set CPI value from the sensor. CPI is often
+ * refereed to as the sensors sensitivity.
+ *
+ * @return uint16_t Current CPI value of the sensor
+ */
+uint16_t paw3204_get_cpi(void);
diff --git a/drivers/sensors/pimoroni_trackball.c b/drivers/sensors/pimoroni_trackball.c
index 333e017a06..88a351316b 100644
--- a/drivers/sensors/pimoroni_trackball.c
+++ b/drivers/sensors/pimoroni_trackball.c
@@ -95,16 +95,3 @@ int16_t pimoroni_trackball_get_offsets(uint8_t negative_dir, uint8_t positive_di
uint16_t magnitude = (scale * offset * offset * precision) >> 7;
return isnegative ? -(int16_t)(magnitude) : (int16_t)(magnitude);
}
-
-void pimoroni_trackball_adapt_values(int8_t* mouse, int16_t* offset) {
- if (*offset > 127) {
- *mouse = 127;
- *offset -= 127;
- } else if (*offset < -127) {
- *mouse = -127;
- *offset += 127;
- } else {
- *mouse = *offset;
- *offset = 0;
- }
-}
diff --git a/drivers/sensors/pimoroni_trackball.h b/drivers/sensors/pimoroni_trackball.h
index e20ee748a7..749f381bbd 100644
--- a/drivers/sensors/pimoroni_trackball.h
+++ b/drivers/sensors/pimoroni_trackball.h
@@ -52,7 +52,6 @@ typedef struct {
void pimoroni_trackball_device_init(void);
void pimoroni_trackball_set_rgbw(uint8_t red, uint8_t green, uint8_t blue, uint8_t white);
int16_t pimoroni_trackball_get_offsets(uint8_t negative_dir, uint8_t positive_dir, uint8_t scale);
-void pimoroni_trackball_adapt_values(int8_t* mouse, int16_t* offset);
uint16_t pimoroni_trackball_get_cpi(void);
void pimoroni_trackball_set_cpi(uint16_t cpi);
i2c_status_t read_pimoroni_trackball(pimoroni_data_t* data);
diff --git a/drivers/sensors/pmw3360.c b/drivers/sensors/pmw3360.c
index 5f4d17a3f0..2c6d91d588 100644
--- a/drivers/sensors/pmw3360.c
+++ b/drivers/sensors/pmw3360.c
@@ -1,291 +1,294 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- * Copyright 2019 Sunjun Kim
- * Copyright 2020 Ploopy Corporation
- * Copyright 2022 Ulrich Spörlein
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "spi_master.h"
-#include "pmw3360.h"
-#include "wait.h"
-#include "debug.h"
-#include "print.h"
-#include "pmw3360_firmware.h"
-
-// Registers
-// clang-format off
-#define REG_Product_ID 0x00
-#define REG_Revision_ID 0x01
-#define REG_Motion 0x02
-#define REG_Delta_X_L 0x03
-#define REG_Delta_X_H 0x04
-#define REG_Delta_Y_L 0x05
-#define REG_Delta_Y_H 0x06
-#define REG_SQUAL 0x07
-#define REG_Raw_Data_Sum 0x08
-#define REG_Maximum_Raw_data 0x09
-#define REG_Minimum_Raw_data 0x0a
-#define REG_Shutter_Lower 0x0b
-#define REG_Shutter_Upper 0x0c
-#define REG_Control 0x0d
-#define REG_Config1 0x0f
-#define REG_Config2 0x10
-#define REG_Angle_Tune 0x11
-#define REG_Frame_Capture 0x12
-#define REG_SROM_Enable 0x13
-#define REG_Run_Downshift 0x14
-#define REG_Rest1_Rate_Lower 0x15
-#define REG_Rest1_Rate_Upper 0x16
-#define REG_Rest1_Downshift 0x17
-#define REG_Rest2_Rate_Lower 0x18
-#define REG_Rest2_Rate_Upper 0x19
-#define REG_Rest2_Downshift 0x1a
-#define REG_Rest3_Rate_Lower 0x1b
-#define REG_Rest3_Rate_Upper 0x1c
-#define REG_Observation 0x24
-#define REG_Data_Out_Lower 0x25
-#define REG_Data_Out_Upper 0x26
-#define REG_Raw_Data_Dump 0x29
-#define REG_SROM_ID 0x2a
-#define REG_Min_SQ_Run 0x2b
-#define REG_Raw_Data_Threshold 0x2c
-#define REG_Config5 0x2f
-#define REG_Power_Up_Reset 0x3a
-#define REG_Shutdown 0x3b
-#define REG_Inverse_Product_ID 0x3f
-#define REG_LiftCutoff_Tune3 0x41
-#define REG_Angle_Snap 0x42
-#define REG_LiftCutoff_Tune1 0x4a
-#define REG_Motion_Burst 0x50
-#define REG_LiftCutoff_Tune_Timeout 0x58
-#define REG_LiftCutoff_Tune_Min_Length 0x5a
-#define REG_SROM_Load_Burst 0x62
-#define REG_Lift_Config 0x63
-#define REG_Raw_Data_Burst 0x64
-#define REG_LiftCutoff_Tune2 0x65
-
-#define CPI_STEP 100
-// clang-format on
-
-// limits to 0--119, resulting in a CPI range of 100 -- 12000 (as only steps of 100 are possible).
-#ifndef MAX_CPI
-# define MAX_CPI 0x77
-#endif
-
-static const pin_t pins[] = PMW3360_CS_PINS;
-#define NUMBER_OF_SENSORS (sizeof(pins) / sizeof(pin_t))
-
-// per-sensor driver state
-static bool _inBurst[NUMBER_OF_SENSORS] = {0};
-
-#ifdef CONSOLE_ENABLE
-void print_byte(uint8_t byte) {
- dprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0'));
-}
-#endif
-#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)))
-
-bool pmw3360_spi_start(int8_t index) {
- bool status = spi_start(pins[index], PMW3360_SPI_LSBFIRST, PMW3360_SPI_MODE, PMW3360_SPI_DIVISOR);
- // tNCS-SCLK, 120ns
- wait_us(1);
- return status;
-}
-
-spi_status_t pmw3360_write(int8_t index, uint8_t reg_addr, uint8_t data) {
- pmw3360_spi_start(index);
-
- if (reg_addr != REG_Motion_Burst) {
- _inBurst[index] = false;
- }
-
- // send address of the register, with MSBit = 1 to indicate it's a write
- spi_status_t status = spi_write(reg_addr | 0x80);
- status = spi_write(data);
-
- // tSCLK-NCS for write operation is 35us
- wait_us(35);
- spi_stop();
-
- // tSWW/tSWR (=180us) minus tSCLK-NCS. Could be shortened, but it looks like a safe lower bound
- wait_us(145);
- return status;
-}
-
-uint8_t pmw3360_read(int8_t index, uint8_t reg_addr) {
- pmw3360_spi_start(index);
- // send adress of the register, with MSBit = 0 to indicate it's a read
- spi_write(reg_addr & 0x7f);
- // tSRAD (=160us)
- wait_us(160);
- uint8_t data = spi_read();
-
- // tSCLK-NCS for read operation is 120ns
- wait_us(1);
- spi_stop();
-
- // tSRW/tSRR (=20us) minus tSCLK-NCS
- wait_us(19);
- return data;
-}
-
-bool pmw3360_check_signature(int8_t index) {
- uint8_t pid = pmw3360_read(index, REG_Product_ID);
- uint8_t iv_pid = pmw3360_read(index, REG_Inverse_Product_ID);
- uint8_t SROM_ver = pmw3360_read(index, REG_SROM_ID);
- return (pid == firmware_signature[0] && iv_pid == firmware_signature[1] && SROM_ver == firmware_signature[2]); // signature for SROM 0x04
-}
-
-void pmw3360_upload_firmware(int8_t index) {
- // Datasheet claims we need to disable REST mode first, but during startup
- // it's already disabled and we're not turning it on ...
- // pmw3360_write(index, REG_Config2, 0x00); // disable REST mode
- pmw3360_write(index, REG_SROM_Enable, 0x1d);
-
- wait_ms(10);
-
- pmw3360_write(index, REG_SROM_Enable, 0x18);
-
- pmw3360_spi_start(index);
- spi_write(REG_SROM_Load_Burst | 0x80);
- wait_us(15);
-
- for (uint16_t i = 0; i < FIRMWARE_LENGTH; i++) {
- spi_write(pgm_read_byte(firmware_data + i));
-#ifndef PMW3360_FIRMWARE_UPLOAD_FAST
- wait_us(15);
-#endif
+// Copyright 2022 Stefan Kerkmann (KarlK90)
+// Copyright 2022 Ulrich Spörlein (@uqs)
+// Copyright 2021 Alabastard (@Alabastard-64)
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// Copyright 2019 Sunjun Kim
+// Copyright 2020 Ploopy Corporation
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "pmw33xx_common.h"
+#include "progmem.h"
+
+extern const size_t pmw33xx_number_of_sensors;
+
+uint16_t pmw33xx_get_cpi(uint8_t sensor) {
+ if (sensor >= pmw33xx_number_of_sensors) {
+ return 0;
}
- wait_us(200);
- pmw3360_read(index, REG_SROM_ID);
- pmw3360_write(index, REG_Config2, 0x00);
+ uint8_t cpival = pmw33xx_read(sensor, REG_Config1);
+ return (uint16_t)((cpival + 1) & 0xFF) * PMW33XX_CPI_STEP;
}
-bool pmw3360_init(int8_t index) {
- if (index >= NUMBER_OF_SENSORS) {
- return false;
+void pmw33xx_set_cpi(uint8_t sensor, uint16_t cpi) {
+ if (sensor >= pmw33xx_number_of_sensors) {
+ return;
}
- spi_init();
- // power up, need to first drive NCS high then low.
- // the datasheet does not say for how long, 40us works well in practice.
- pmw3360_spi_start(index);
- wait_us(40);
- spi_stop();
- wait_us(40);
- pmw3360_write(index, REG_Power_Up_Reset, 0x5a);
- wait_ms(50);
-
- // read registers and discard
- pmw3360_read(index, REG_Motion);
- pmw3360_read(index, REG_Delta_X_L);
- pmw3360_read(index, REG_Delta_X_H);
- pmw3360_read(index, REG_Delta_Y_L);
- pmw3360_read(index, REG_Delta_Y_H);
-
- pmw3360_upload_firmware(index);
-
- spi_stop();
-
- wait_ms(10);
- pmw3360_set_cpi(PMW3360_CPI);
-
- wait_ms(1);
-
- pmw3360_write(index, REG_Config2, 0x00);
-
- pmw3360_write(index, REG_Angle_Tune, constrain(ROTATIONAL_TRANSFORM_ANGLE, -127, 127));
-
- pmw3360_write(index, REG_Lift_Config, PMW3360_LIFTOFF_DISTANCE);
-
- bool init_success = pmw3360_check_signature(index);
-#ifdef CONSOLE_ENABLE
- if (init_success) {
- dprintf("pmw3360 signature verified");
- } else {
- dprintf("pmw3360 signature verification failed!");
- }
-#endif
-
- return init_success;
+ uint8_t cpival = CONSTRAIN((cpi / PMW33XX_CPI_STEP) - 1, 0, (PMW33XX_CPI_MAX / PMW33XX_CPI_STEP) - 1U);
+ pmw33xx_write(sensor, REG_Config1, cpival);
}
-// Only support reading the value from sensor #0, no one is using this anyway.
-uint16_t pmw3360_get_cpi(void) {
- uint8_t cpival = pmw3360_read(0, REG_Config1);
- return (uint16_t)((cpival + 1) & 0xFF) * CPI_STEP;
-}
-
-// Write same CPI to all sensors.
-void pmw3360_set_cpi(uint16_t cpi) {
- uint8_t cpival = constrain((cpi / CPI_STEP) - 1, 0, MAX_CPI);
- for (size_t i = 0; i < NUMBER_OF_SENSORS; i++) {
- pmw3360_write(i, REG_Config1, cpival);
- }
-}
+// PID, Inverse PID, SROM version
+const uint8_t pmw33xx_firmware_signature[3] PROGMEM = {0x42, 0xBD, 0x04};
-report_pmw3360_t pmw3360_read_burst(int8_t index) {
- report_pmw3360_t report = {0};
- if (index >= NUMBER_OF_SENSORS) {
- return report;
- }
-
- if (!_inBurst[index]) {
-#ifdef CONSOLE_ENABLE
- dprintf("burst on for index %d", index);
-#endif
- pmw3360_write(index, REG_Motion_Burst, 0x00);
- _inBurst[index] = true;
- }
-
- pmw3360_spi_start(index);
- spi_write(REG_Motion_Burst);
- wait_us(35); // waits for tSRAD_MOTBR
-
- report.motion = spi_read();
- spi_read(); // skip Observation
- // delta registers
- report.dx = spi_read();
- report.mdx = spi_read();
- report.dy = spi_read();
- report.mdy = spi_read();
-
- if (report.motion & 0b111) { // panic recovery, sometimes burst mode works weird.
- _inBurst[index] = false;
- }
-
- spi_stop();
-
-#ifdef CONSOLE_ENABLE
- if (debug_mouse) {
- print_byte(report.motion);
- print_byte(report.dx);
- print_byte(report.mdx);
- print_byte(report.dy);
- print_byte(report.mdy);
- dprintf("\n");
- }
-#endif
-
- report.isMotion = (report.motion & 0x80) != 0;
- report.isOnSurface = (report.motion & 0x08) == 0;
- report.dx |= (report.mdx << 8);
- report.dx = report.dx * -1;
- report.dy |= (report.mdy << 8);
- report.dy = report.dy * -1;
-
- return report;
-}
+// Firmware Blob for PMW3360
+// clang-format off
+const uint8_t pmw33xx_firmware_data[PMW33XX_FIRMWARE_LENGTH] PROGMEM = {
+ 0x01, 0x04, 0x8E, 0x96, 0x6E, 0x77, 0x3E, 0xFE, 0x7E, 0x5F, 0x1D, 0xB8, 0xF2, 0x66, 0x4E, 0xFF,
+ 0x5D, 0x19, 0xB0, 0xC2, 0x04, 0x69, 0x54, 0x2A, 0xD6, 0x2E, 0xBF, 0xDD, 0x19, 0xB0, 0xC3, 0xE5,
+ 0x29, 0xB1, 0xE0, 0x23, 0xA5, 0xA9, 0xB1, 0xC1, 0x00, 0x82, 0x67, 0x4C, 0x1A, 0x97, 0x8D, 0x79,
+ 0x51, 0x20, 0xC7, 0x06, 0x8E, 0x7C, 0x7C, 0x7A, 0x76, 0x4F, 0xFD, 0x59, 0x30, 0xE2, 0x46, 0x0E,
+ 0x9E, 0xBE, 0xDF, 0x1D, 0x99, 0x91, 0xA0, 0xA5, 0xA1, 0xA9, 0xD0, 0x22, 0xC6, 0xEF, 0x5C, 0x1B,
+ 0x95, 0x89, 0x90, 0xA2, 0xA7, 0xCC, 0xFB, 0x55, 0x28, 0xB3, 0xE4, 0x4A, 0xF7, 0x6C, 0x3B, 0xF4,
+ 0x6A, 0x56, 0x2E, 0xDE, 0x1F, 0x9D, 0xB8, 0xD3, 0x05, 0x88, 0x92, 0xA6, 0xCE, 0x1E, 0xBE, 0xDF,
+ 0x1D, 0x99, 0xB0, 0xE2, 0x46, 0xEF, 0x5C, 0x07, 0x11, 0x5D, 0x98, 0x0B, 0x9D, 0x94, 0x97, 0xEE,
+ 0x4E, 0x45, 0x33, 0x6B, 0x44, 0xC7, 0x29, 0x56, 0x27, 0x30, 0xC6, 0xA7, 0xD5, 0xF2, 0x56, 0xDF,
+ 0xB4, 0x38, 0x62, 0xCB, 0xA0, 0xB6, 0xE3, 0x0F, 0x84, 0x06, 0x24, 0x05, 0x65, 0x6F, 0x76, 0x89,
+ 0xB5, 0x77, 0x41, 0x27, 0x82, 0x66, 0x65, 0x82, 0xCC, 0xD5, 0xE6, 0x20, 0xD5, 0x27, 0x17, 0xC5,
+ 0xF8, 0x03, 0x23, 0x7C, 0x5F, 0x64, 0xA5, 0x1D, 0xC1, 0xD6, 0x36, 0xCB, 0x4C, 0xD4, 0xDB, 0x66,
+ 0xD7, 0x8B, 0xB1, 0x99, 0x7E, 0x6F, 0x4C, 0x36, 0x40, 0x06, 0xD6, 0xEB, 0xD7, 0xA2, 0xE4, 0xF4,
+ 0x95, 0x51, 0x5A, 0x54, 0x96, 0xD5, 0x53, 0x44, 0xD7, 0x8C, 0xE0, 0xB9, 0x40, 0x68, 0xD2, 0x18,
+ 0xE9, 0xDD, 0x9A, 0x23, 0x92, 0x48, 0xEE, 0x7F, 0x43, 0xAF, 0xEA, 0x77, 0x38, 0x84, 0x8C, 0x0A,
+ 0x72, 0xAF, 0x69, 0xF8, 0xDD, 0xF1, 0x24, 0x83, 0xA3, 0xF8, 0x4A, 0xBF, 0xF5, 0x94, 0x13, 0xDB,
+ 0xBB, 0xD8, 0xB4, 0xB3, 0xA0, 0xFB, 0x45, 0x50, 0x60, 0x30, 0x59, 0x12, 0x31, 0x71, 0xA2, 0xD3,
+ 0x13, 0xE7, 0xFA, 0xE7, 0xCE, 0x0F, 0x63, 0x15, 0x0B, 0x6B, 0x94, 0xBB, 0x37, 0x83, 0x26, 0x05,
+ 0x9D, 0xFB, 0x46, 0x92, 0xFC, 0x0A, 0x15, 0xD1, 0x0D, 0x73, 0x92, 0xD6, 0x8C, 0x1B, 0x8C, 0xB8,
+ 0x55, 0x8A, 0xCE, 0xBD, 0xFE, 0x8E, 0xFC, 0xED, 0x09, 0x12, 0x83, 0x91, 0x82, 0x51, 0x31, 0x23,
+ 0xFB, 0xB4, 0x0C, 0x76, 0xAD, 0x7C, 0xD9, 0xB4, 0x4B, 0xB2, 0x67, 0x14, 0x09, 0x9C, 0x7F, 0x0C,
+ 0x18, 0xBA, 0x3B, 0xD6, 0x8E, 0x14, 0x2A, 0xE4, 0x1B, 0x52, 0x9F, 0x2B, 0x7D, 0xE1, 0xFB, 0x6A,
+ 0x33, 0x02, 0xFA, 0xAC, 0x5A, 0xF2, 0x3E, 0x88, 0x7E, 0xAE, 0xD1, 0xF3, 0x78, 0xE8, 0x05, 0xD1,
+ 0xE3, 0xDC, 0x21, 0xF6, 0xE1, 0x9A, 0xBD, 0x17, 0x0E, 0xD9, 0x46, 0x9B, 0x88, 0x03, 0xEA, 0xF6,
+ 0x66, 0xBE, 0x0E, 0x1B, 0x50, 0x49, 0x96, 0x40, 0x97, 0xF1, 0xF1, 0xE4, 0x80, 0xA6, 0x6E, 0xE8,
+ 0x77, 0x34, 0xBF, 0x29, 0x40, 0x44, 0xC2, 0xFF, 0x4E, 0x98, 0xD3, 0x9C, 0xA3, 0x32, 0x2B, 0x76,
+ 0x51, 0x04, 0x09, 0xE7, 0xA9, 0xD1, 0xA6, 0x32, 0xB1, 0x23, 0x53, 0xE2, 0x47, 0xAB, 0xD6, 0xF5,
+ 0x69, 0x5C, 0x3E, 0x5F, 0xFA, 0xAE, 0x45, 0x20, 0xE5, 0xD2, 0x44, 0xFF, 0x39, 0x32, 0x6D, 0xFD,
+ 0x27, 0x57, 0x5C, 0xFD, 0xF0, 0xDE, 0xC1, 0xB5, 0x99, 0xE5, 0xF5, 0x1C, 0x77, 0x01, 0x75, 0xC5,
+ 0x6D, 0x58, 0x92, 0xF2, 0xB2, 0x47, 0x00, 0x01, 0x26, 0x96, 0x7A, 0x30, 0xFF, 0xB7, 0xF0, 0xEF,
+ 0x77, 0xC1, 0x8A, 0x5D, 0xDC, 0xC0, 0xD1, 0x29, 0x30, 0x1E, 0x77, 0x38, 0x7A, 0x94, 0xF1, 0xB8,
+ 0x7A, 0x7E, 0xEF, 0xA4, 0xD1, 0xAC, 0x31, 0x4A, 0xF2, 0x5D, 0x64, 0x3D, 0xB2, 0xE2, 0xF0, 0x08,
+ 0x99, 0xFC, 0x70, 0xEE, 0x24, 0xA7, 0x7E, 0xEE, 0x1E, 0x20, 0x69, 0x7D, 0x44, 0xBF, 0x87, 0x42,
+ 0xDF, 0x88, 0x3B, 0x0C, 0xDA, 0x42, 0xC9, 0x04, 0xF9, 0x45, 0x50, 0xFC, 0x83, 0x8F, 0x11, 0x6A,
+ 0x72, 0xBC, 0x99, 0x95, 0xF0, 0xAC, 0x3D, 0xA7, 0x3B, 0xCD, 0x1C, 0xE2, 0x88, 0x79, 0x37, 0x11,
+ 0x5F, 0x39, 0x89, 0x95, 0x0A, 0x16, 0x84, 0x7A, 0xF6, 0x8A, 0xA4, 0x28, 0xE4, 0xED, 0x83, 0x80,
+ 0x3B, 0xB1, 0x23, 0xA5, 0x03, 0x10, 0xF4, 0x66, 0xEA, 0xBB, 0x0C, 0x0F, 0xC5, 0xEC, 0x6C, 0x69,
+ 0xC5, 0xD3, 0x24, 0xAB, 0xD4, 0x2A, 0xB7, 0x99, 0x88, 0x76, 0x08, 0xA0, 0xA8, 0x95, 0x7C, 0xD8,
+ 0x38, 0x6D, 0xCD, 0x59, 0x02, 0x51, 0x4B, 0xF1, 0xB5, 0x2B, 0x50, 0xE3, 0xB6, 0xBD, 0xD0, 0x72,
+ 0xCF, 0x9E, 0xFD, 0x6E, 0xBB, 0x44, 0xC8, 0x24, 0x8A, 0x77, 0x18, 0x8A, 0x13, 0x06, 0xEF, 0x97,
+ 0x7D, 0xFA, 0x81, 0xF0, 0x31, 0xE6, 0xFA, 0x77, 0xED, 0x31, 0x06, 0x31, 0x5B, 0x54, 0x8A, 0x9F,
+ 0x30, 0x68, 0xDB, 0xE2, 0x40, 0xF8, 0x4E, 0x73, 0xFA, 0xAB, 0x74, 0x8B, 0x10, 0x58, 0x13, 0xDC,
+ 0xD2, 0xE6, 0x78, 0xD1, 0x32, 0x2E, 0x8A, 0x9F, 0x2C, 0x58, 0x06, 0x48, 0x27, 0xC5, 0xA9, 0x5E,
+ 0x81, 0x47, 0x89, 0x46, 0x21, 0x91, 0x03, 0x70, 0xA4, 0x3E, 0x88, 0x9C, 0xDA, 0x33, 0x0A, 0xCE,
+ 0xBC, 0x8B, 0x8E, 0xCF, 0x9F, 0xD3, 0x71, 0x80, 0x43, 0xCF, 0x6B, 0xA9, 0x51, 0x83, 0x76, 0x30,
+ 0x82, 0xC5, 0x6A, 0x85, 0x39, 0x11, 0x50, 0x1A, 0x82, 0xDC, 0x1E, 0x1C, 0xD5, 0x7D, 0xA9, 0x71,
+ 0x99, 0x33, 0x47, 0x19, 0x97, 0xB3, 0x5A, 0xB1, 0xDF, 0xED, 0xA4, 0xF2, 0xE6, 0x26, 0x84, 0xA2,
+ 0x28, 0x9A, 0x9E, 0xDF, 0xA6, 0x6A, 0xF4, 0xD6, 0xFC, 0x2E, 0x5B, 0x9D, 0x1A, 0x2A, 0x27, 0x68,
+ 0xFB, 0xC1, 0x83, 0x21, 0x4B, 0x90, 0xE0, 0x36, 0xDD, 0x5B, 0x31, 0x42, 0x55, 0xA0, 0x13, 0xF7,
+ 0xD0, 0x89, 0x53, 0x71, 0x99, 0x57, 0x09, 0x29, 0xC5, 0xF3, 0x21, 0xF8, 0x37, 0x2F, 0x40, 0xF3,
+ 0xD4, 0xAF, 0x16, 0x08, 0x36, 0x02, 0xFC, 0x77, 0xC5, 0x8B, 0x04, 0x90, 0x56, 0xB9, 0xC9, 0x67,
+ 0x9A, 0x99, 0xE8, 0x00, 0xD3, 0x86, 0xFF, 0x97, 0x2D, 0x08, 0xE9, 0xB7, 0xB3, 0x91, 0xBC, 0xDF,
+ 0x45, 0xC6, 0xED, 0x0F, 0x8C, 0x4C, 0x1E, 0xE6, 0x5B, 0x6E, 0x38, 0x30, 0xE4, 0xAA, 0xE3, 0x95,
+ 0xDE, 0xB9, 0xE4, 0x9A, 0xF5, 0xB2, 0x55, 0x9A, 0x87, 0x9B, 0xF6, 0x6A, 0xB2, 0xF2, 0x77, 0x9A,
+ 0x31, 0xF4, 0x7A, 0x31, 0xD1, 0x1D, 0x04, 0xC0, 0x7C, 0x32, 0xA2, 0x9E, 0x9A, 0xF5, 0x62, 0xF8,
+ 0x27, 0x8D, 0xBF, 0x51, 0xFF, 0xD3, 0xDF, 0x64, 0x37, 0x3F, 0x2A, 0x6F, 0x76, 0x3A, 0x7D, 0x77,
+ 0x06, 0x9E, 0x77, 0x7F, 0x5E, 0xEB, 0x32, 0x51, 0xF9, 0x16, 0x66, 0x9A, 0x09, 0xF3, 0xB0, 0x08,
+ 0xA4, 0x70, 0x96, 0x46, 0x30, 0xFF, 0xDA, 0x4F, 0xE9, 0x1B, 0xED, 0x8D, 0xF8, 0x74, 0x1F, 0x31,
+ 0x92, 0xB3, 0x73, 0x17, 0x36, 0xDB, 0x91, 0x30, 0xD6, 0x88, 0x55, 0x6B, 0x34, 0x77, 0x87, 0x7A,
+ 0xE7, 0xEE, 0x06, 0xC6, 0x1C, 0x8C, 0x19, 0x0C, 0x48, 0x46, 0x23, 0x5E, 0x9C, 0x07, 0x5C, 0xBF,
+ 0xB4, 0x7E, 0xD6, 0x4F, 0x74, 0x9C, 0xE2, 0xC5, 0x50, 0x8B, 0xC5, 0x8B, 0x15, 0x90, 0x60, 0x62,
+ 0x57, 0x29, 0xD0, 0x13, 0x43, 0xA1, 0x80, 0x88, 0x91, 0x00, 0x44, 0xC7, 0x4D, 0x19, 0x86, 0xCC,
+ 0x2F, 0x2A, 0x75, 0x5A, 0xFC, 0xEB, 0x97, 0x2A, 0x70, 0xE3, 0x78, 0xD8, 0x91, 0xB0, 0x4F, 0x99,
+ 0x07, 0xA3, 0x95, 0xEA, 0x24, 0x21, 0xD5, 0xDE, 0x51, 0x20, 0x93, 0x27, 0x0A, 0x30, 0x73, 0xA8,
+ 0xFF, 0x8A, 0x97, 0xE9, 0xA7, 0x6A, 0x8E, 0x0D, 0xE8, 0xF0, 0xDF, 0xEC, 0xEA, 0xB4, 0x6C, 0x1D,
+ 0x39, 0x2A, 0x62, 0x2D, 0x3D, 0x5A, 0x8B, 0x65, 0xF8, 0x90, 0x05, 0x2E, 0x7E, 0x91, 0x2C, 0x78,
+ 0xEF, 0x8E, 0x7A, 0xC1, 0x2F, 0xAC, 0x78, 0xEE, 0xAF, 0x28, 0x45, 0x06, 0x4C, 0x26, 0xAF, 0x3B,
+ 0xA2, 0xDB, 0xA3, 0x93, 0x06, 0xB5, 0x3C, 0xA5, 0xD8, 0xEE, 0x8F, 0xAF, 0x25, 0xCC, 0x3F, 0x85,
+ 0x68, 0x48, 0xA9, 0x62, 0xCC, 0x97, 0x8F, 0x7F, 0x2A, 0xEA, 0xE0, 0x15, 0x0A, 0xAD, 0x62, 0x07,
+ 0xBD, 0x45, 0xF8, 0x41, 0xD8, 0x36, 0xCB, 0x4C, 0xDB, 0x6E, 0xE6, 0x3A, 0xE7, 0xDA, 0x15, 0xE9,
+ 0x29, 0x1E, 0x12, 0x10, 0xA0, 0x14, 0x2C, 0x0E, 0x3D, 0xF4, 0xBF, 0x39, 0x41, 0x92, 0x75, 0x0B,
+ 0x25, 0x7B, 0xA3, 0xCE, 0x39, 0x9C, 0x15, 0x64, 0xC8, 0xFA, 0x3D, 0xEF, 0x73, 0x27, 0xFE, 0x26,
+ 0x2E, 0xCE, 0xDA, 0x6E, 0xFD, 0x71, 0x8E, 0xDD, 0xFE, 0x76, 0xEE, 0xDC, 0x12, 0x5C, 0x02, 0xC5,
+ 0x3A, 0x4E, 0x4E, 0x4F, 0xBF, 0xCA, 0x40, 0x15, 0xC7, 0x6E, 0x8D, 0x41, 0xF1, 0x10, 0xE0, 0x4F,
+ 0x7E, 0x97, 0x7F, 0x1C, 0xAE, 0x47, 0x8E, 0x6B, 0xB1, 0x25, 0x31, 0xB0, 0x73, 0xC7, 0x1B, 0x97,
+ 0x79, 0xF9, 0x80, 0xD3, 0x66, 0x22, 0x30, 0x07, 0x74, 0x1E, 0xE4, 0xD0, 0x80, 0x21, 0xD6, 0xEE,
+ 0x6B, 0x6C, 0x4F, 0xBF, 0xF5, 0xB7, 0xD9, 0x09, 0x87, 0x2F, 0xA9, 0x14, 0xBE, 0x27, 0xD9, 0x72,
+ 0x50, 0x01, 0xD4, 0x13, 0x73, 0xA6, 0xA7, 0x51, 0x02, 0x75, 0x25, 0xE1, 0xB3, 0x45, 0x34, 0x7D,
+ 0xA8, 0x8E, 0xEB, 0xF3, 0x16, 0x49, 0xCB, 0x4F, 0x8C, 0xA1, 0xB9, 0x36, 0x85, 0x39, 0x75, 0x5D,
+ 0x08, 0x00, 0xAE, 0xEB, 0xF6, 0xEA, 0xD7, 0x13, 0x3A, 0x21, 0x5A, 0x5F, 0x30, 0x84, 0x52, 0x26,
+ 0x95, 0xC9, 0x14, 0xF2, 0x57, 0x55, 0x6B, 0xB1, 0x10, 0xC2, 0xE1, 0xBD, 0x3B, 0x51, 0xC0, 0xB7,
+ 0x55, 0x4C, 0x71, 0x12, 0x26, 0xC7, 0x0D, 0xF9, 0x51, 0xA4, 0x38, 0x02, 0x05, 0x7F, 0xB8, 0xF1,
+ 0x72, 0x4B, 0xBF, 0x71, 0x89, 0x14, 0xF3, 0x77, 0x38, 0xD9, 0x71, 0x24, 0xF3, 0x00, 0x11, 0xA1,
+ 0xD8, 0xD4, 0x69, 0x27, 0x08, 0x37, 0x35, 0xC9, 0x11, 0x9D, 0x90, 0x1C, 0x0E, 0xE7, 0x1C, 0xFF,
+ 0x2D, 0x1E, 0xE8, 0x92, 0xE1, 0x18, 0x10, 0x95, 0x7C, 0xE0, 0x80, 0xF4, 0x96, 0x43, 0x21, 0xF9,
+ 0x75, 0x21, 0x64, 0x38, 0xDD, 0x9F, 0x1E, 0x95, 0x16, 0xDA, 0x56, 0x1D, 0x4F, 0x9A, 0x53, 0xB2,
+ 0xE2, 0xE4, 0x18, 0xCB, 0x6B, 0x1A, 0x65, 0xEB, 0x56, 0xC6, 0x3B, 0xE5, 0xFE, 0xD8, 0x26, 0x3F,
+ 0x3A, 0x84, 0x59, 0x72, 0x66, 0xA2, 0xF3, 0x75, 0xFF, 0xFB, 0x60, 0xB3, 0x22, 0xAD, 0x3F, 0x2D,
+ 0x6B, 0xF9, 0xEB, 0xEA, 0x05, 0x7C, 0xD8, 0x8F, 0x6D, 0x2C, 0x98, 0x9E, 0x2B, 0x93, 0xF1, 0x5E,
+ 0x46, 0xF0, 0x87, 0x49, 0x29, 0x73, 0x68, 0xD7, 0x7F, 0xF9, 0xF0, 0xE5, 0x7D, 0xDB, 0x1D, 0x75,
+ 0x19, 0xF3, 0xC4, 0x58, 0x9B, 0x17, 0x88, 0xA8, 0x92, 0xE0, 0xBE, 0xBD, 0x8B, 0x1D, 0x8D, 0x9F,
+ 0x56, 0x76, 0xAD, 0xAF, 0x29, 0xE2, 0xD9, 0xD5, 0x52, 0xF6, 0xB5, 0x56, 0x35, 0x57, 0x3A, 0xC8,
+ 0xE1, 0x56, 0x43, 0x19, 0x94, 0xD3, 0x04, 0x9B, 0x6D, 0x35, 0xD8, 0x0B, 0x5F, 0x4D, 0x19, 0x8E,
+ 0xEC, 0xFA, 0x64, 0x91, 0x0A, 0x72, 0x20, 0x2B, 0xBC, 0x1A, 0x4A, 0xFE, 0x8B, 0xFD, 0xBB, 0xED,
+ 0x1B, 0x23, 0xEA, 0xAD, 0x72, 0x82, 0xA1, 0x29, 0x99, 0x71, 0xBD, 0xF0, 0x95, 0xC1, 0x03, 0xDD,
+ 0x7B, 0xC2, 0xB2, 0x3C, 0x28, 0x54, 0xD3, 0x68, 0xA4, 0x72, 0xC8, 0x66, 0x96, 0xE0, 0xD1, 0xD8,
+ 0x7F, 0xF8, 0xD1, 0x26, 0x2B, 0xF7, 0xAD, 0xBA, 0x55, 0xCA, 0x15, 0xB9, 0x32, 0xC3, 0xE5, 0x88,
+ 0x97, 0x8E, 0x5C, 0xFB, 0x92, 0x25, 0x8B, 0xBF, 0xA2, 0x45, 0x55, 0x7A, 0xA7, 0x6F, 0x8B, 0x57,
+ 0x5B, 0xCF, 0x0E, 0xCB, 0x1D, 0xFB, 0x20, 0x82, 0x77, 0xA8, 0x8C, 0xCC, 0x16, 0xCE, 0x1D, 0xFA,
+ 0xDE, 0xCC, 0x0B, 0x62, 0xFE, 0xCC, 0xE1, 0xB7, 0xF0, 0xC3, 0x81, 0x64, 0x73, 0x40, 0xA0, 0xC2,
+ 0x4D, 0x89, 0x11, 0x75, 0x33, 0x55, 0x33, 0x8D, 0xE8, 0x4A, 0xFD, 0xEA, 0x6E, 0x30, 0x0B, 0xD7,
+ 0x31, 0x2C, 0xDE, 0x47, 0xE3, 0xBF, 0xF8, 0x55, 0x42, 0xE2, 0x7F, 0x59, 0xE5, 0x17, 0xEF, 0x99,
+ 0x34, 0x69, 0x91, 0xB1, 0x23, 0x8E, 0x20, 0x87, 0x2D, 0xA8, 0xFE, 0xD5, 0x8A, 0xF3, 0x84, 0x3A,
+ 0xF0, 0x37, 0xE4, 0x09, 0x00, 0x54, 0xEE, 0x67, 0x49, 0x93, 0xE4, 0x81, 0x70, 0xE3, 0x90, 0x4D,
+ 0xEF, 0xFE, 0x41, 0xB7, 0x99, 0x7B, 0xC1, 0x83, 0xBA, 0x62, 0x12, 0x6F, 0x7D, 0xDE, 0x6B, 0xAF,
+ 0xDA, 0x16, 0xF9, 0x55, 0x51, 0xEE, 0xA6, 0x0C, 0x2B, 0x02, 0xA3, 0xFD, 0x8D, 0xFB, 0x30, 0x17,
+ 0xE4, 0x6F, 0xDF, 0x36, 0x71, 0xC4, 0xCA, 0x87, 0x25, 0x48, 0xB0, 0x47, 0xEC, 0xEA, 0xB4, 0xBF,
+ 0xA5, 0x4D, 0x9B, 0x9F, 0x02, 0x93, 0xC4, 0xE3, 0xE4, 0xE8, 0x42, 0x2D, 0x68, 0x81, 0x15, 0x0A,
+ 0xEB, 0x84, 0x5B, 0xD6, 0xA8, 0x74, 0xFB, 0x7D, 0x1D, 0xCB, 0x2C, 0xDA, 0x46, 0x2A, 0x76, 0x62,
+ 0xCE, 0xBC, 0x5C, 0x9E, 0x8B, 0xE7, 0xCF, 0xBE, 0x78, 0xF5, 0x7C, 0xEB, 0xB3, 0x3A, 0x9C, 0xAA,
+ 0x6F, 0xCC, 0x72, 0xD1, 0x59, 0xF2, 0x11, 0x23, 0xD6, 0x3F, 0x48, 0xD1, 0xB7, 0xCE, 0xB0, 0xBF,
+ 0xCB, 0xEA, 0x80, 0xDE, 0x57, 0xD4, 0x5E, 0x97, 0x2F, 0x75, 0xD1, 0x50, 0x8E, 0x80, 0x2C, 0x66,
+ 0x79, 0xBF, 0x72, 0x4B, 0xBD, 0x8A, 0x81, 0x6C, 0xD3, 0xE1, 0x01, 0xDC, 0xD2, 0x15, 0x26, 0xC5,
+ 0x36, 0xDA, 0x2C, 0x1A, 0xC0, 0x27, 0x94, 0xED, 0xB7, 0x9B, 0x85, 0x0B, 0x5E, 0x80, 0x97, 0xC5,
+ 0xEC, 0x4F, 0xEC, 0x88, 0x5D, 0x50, 0x07, 0x35, 0x47, 0xDC, 0x0B, 0x3B, 0x3D, 0xDD, 0x60, 0xAF,
+ 0xA8, 0x5D, 0x81, 0x38, 0x24, 0x25, 0x5D, 0x5C, 0x15, 0xD1, 0xDE, 0xB3, 0xAB, 0xEC, 0x05, 0x69,
+ 0xEF, 0x83, 0xED, 0x57, 0x54, 0xB8, 0x64, 0x64, 0x11, 0x16, 0x32, 0x69, 0xDA, 0x9F, 0x2D, 0x7F,
+ 0x36, 0xBB, 0x44, 0x5A, 0x34, 0xE8, 0x7F, 0xBF, 0x03, 0xEB, 0x00, 0x7F, 0x59, 0x68, 0x22, 0x79,
+ 0xCF, 0x73, 0x6C, 0x2C, 0x29, 0xA7, 0xA1, 0x5F, 0x38, 0xA1, 0x1D, 0xF0, 0x20, 0x53, 0xE0, 0x1A,
+ 0x63, 0x14, 0x58, 0x71, 0x10, 0xAA, 0x08, 0x0C, 0x3E, 0x16, 0x1A, 0x60, 0x22, 0x82, 0x7F, 0xBA,
+ 0xA4, 0x43, 0xA0, 0xD0, 0xAC, 0x1B, 0xD5, 0x6B, 0x64, 0xB5, 0x14, 0x93, 0x31, 0x9E, 0x53, 0x50,
+ 0xD0, 0x57, 0x66, 0xEE, 0x5A, 0x4F, 0xFB, 0x03, 0x2A, 0x69, 0x58, 0x76, 0xF1, 0x83, 0xF7, 0x4E,
+ 0xBA, 0x8C, 0x42, 0x06, 0x60, 0x5D, 0x6D, 0xCE, 0x60, 0x88, 0xAE, 0xA4, 0xC3, 0xF1, 0x03, 0xA5,
+ 0x4B, 0x98, 0xA1, 0xFF, 0x67, 0xE1, 0xAC, 0xA2, 0xB8, 0x62, 0xD7, 0x6F, 0xA0, 0x31, 0xB4, 0xD2,
+ 0x77, 0xAF, 0x21, 0x10, 0x06, 0xC6, 0x9A, 0xFF, 0x1D, 0x09, 0x17, 0x0E, 0x5F, 0xF1, 0xAA, 0x54,
+ 0x34, 0x4B, 0x45, 0x8A, 0x87, 0x63, 0xA6, 0xDC, 0xF9, 0x24, 0x30, 0x67, 0xC6, 0xB2, 0xD6, 0x61,
+ 0x33, 0x69, 0xEE, 0x50, 0x61, 0x57, 0x28, 0xE7, 0x7E, 0xEE, 0xEC, 0x3A, 0x5A, 0x73, 0x4E, 0xA8,
+ 0x8D, 0xE4, 0x18, 0xEA, 0xEC, 0x41, 0x64, 0xC8, 0xE2, 0xE8, 0x66, 0xB6, 0x2D, 0xB6, 0xFB, 0x6A,
+ 0x6C, 0x16, 0xB3, 0xDD, 0x46, 0x43, 0xB9, 0x73, 0x00, 0x6A, 0x71, 0xED, 0x4E, 0x9D, 0x25, 0x1A,
+ 0xC3, 0x3C, 0x4A, 0x95, 0x15, 0x99, 0x35, 0x81, 0x14, 0x02, 0xD6, 0x98, 0x9B, 0xEC, 0xD8, 0x23,
+ 0x3B, 0x84, 0x29, 0xAF, 0x0C, 0x99, 0x83, 0xA6, 0x9A, 0x34, 0x4F, 0xFA, 0xE8, 0xD0, 0x3C, 0x4B,
+ 0xD0, 0xFB, 0xB6, 0x68, 0xB8, 0x9E, 0x8F, 0xCD, 0xF7, 0x60, 0x2D, 0x7A, 0x22, 0xE5, 0x7D, 0xAB,
+ 0x65, 0x1B, 0x95, 0xA7, 0xA8, 0x7F, 0xB6, 0x77, 0x47, 0x7B, 0x5F, 0x8B, 0x12, 0x72, 0xD0, 0xD4,
+ 0x91, 0xEF, 0xDE, 0x19, 0x50, 0x3C, 0xA7, 0x8B, 0xC4, 0xA9, 0xB3, 0x23, 0xCB, 0x76, 0xE6, 0x81,
+ 0xF0, 0xC1, 0x04, 0x8F, 0xA3, 0xB8, 0x54, 0x5B, 0x97, 0xAC, 0x19, 0xFF, 0x3F, 0x55, 0x27, 0x2F,
+ 0xE0, 0x1D, 0x42, 0x9B, 0x57, 0xFC, 0x4B, 0x4E, 0x0F, 0xCE, 0x98, 0xA9, 0x43, 0x57, 0x03, 0xBD,
+ 0xE7, 0xC8, 0x94, 0xDF, 0x6E, 0x36, 0x73, 0x32, 0xB4, 0xEF, 0x2E, 0x85, 0x7A, 0x6E, 0xFC, 0x6C,
+ 0x18, 0x82, 0x75, 0x35, 0x90, 0x07, 0xF3, 0xE4, 0x9F, 0x3E, 0xDC, 0x68, 0xF3, 0xB5, 0xF3, 0x19,
+ 0x80, 0x92, 0x06, 0x99, 0xA2, 0xE8, 0x6F, 0xFF, 0x2E, 0x7F, 0xAE, 0x42, 0xA4, 0x5F, 0xFB, 0xD4,
+ 0x0E, 0x81, 0x2B, 0xC3, 0x04, 0xFF, 0x2B, 0xB3, 0x74, 0x4E, 0x36, 0x5B, 0x9C, 0x15, 0x00, 0xC6,
+ 0x47, 0x2B, 0xE8, 0x8B, 0x3D, 0xF1, 0x9C, 0x03, 0x9A, 0x58, 0x7F, 0x9B, 0x9C, 0xBF, 0x85, 0x49,
+ 0x79, 0x35, 0x2E, 0x56, 0x7B, 0x41, 0x14, 0x39, 0x47, 0x83, 0x26, 0xAA, 0x07, 0x89, 0x98, 0x11,
+ 0x1B, 0x86, 0xE7, 0x73, 0x7A, 0xD8, 0x7D, 0x78, 0x61, 0x53, 0xE9, 0x79, 0xF5, 0x36, 0x8D, 0x44,
+ 0x92, 0x84, 0xF9, 0x13, 0x50, 0x58, 0x3B, 0xA4, 0x6A, 0x36, 0x65, 0x49, 0x8E, 0x3C, 0x0E, 0xF1,
+ 0x6F, 0xD2, 0x84, 0xC4, 0x7E, 0x8E, 0x3F, 0x39, 0xAE, 0x7C, 0x84, 0xF1, 0x63, 0x37, 0x8E, 0x3C,
+ 0xCC, 0x3E, 0x44, 0x81, 0x45, 0xF1, 0x4B, 0xB9, 0xED, 0x6B, 0x36, 0x5D, 0xBB, 0x20, 0x60, 0x1A,
+ 0x0F, 0xA3, 0xAA, 0x55, 0x77, 0x3A, 0xA9, 0xAE, 0x37, 0x4D, 0xBA, 0xB8, 0x86, 0x6B, 0xBC, 0x08,
+ 0x50, 0xF6, 0xCC, 0xA4, 0xBD, 0x1D, 0x40, 0x72, 0xA5, 0x86, 0xFA, 0xE2, 0x10, 0xAE, 0x3D, 0x58,
+ 0x4B, 0x97, 0xF3, 0x43, 0x74, 0xA9, 0x9E, 0xEB, 0x21, 0xB7, 0x01, 0xA4, 0x86, 0x93, 0x97, 0xEE,
+ 0x2F, 0x4F, 0x3B, 0x86, 0xA1, 0x41, 0x6F, 0x41, 0x26, 0x90, 0x78, 0x5C, 0x7F, 0x30, 0x38, 0x4B,
+ 0x3F, 0xAA, 0xEC, 0xED, 0x5C, 0x6F, 0x0E, 0xAD, 0x43, 0x87, 0xFD, 0x93, 0x35, 0xE6, 0x01, 0xEF,
+ 0x41, 0x26, 0x90, 0x99, 0x9E, 0xFB, 0x19, 0x5B, 0xAD, 0xD2, 0x91, 0x8A, 0xE0, 0x46, 0xAF, 0x65,
+ 0xFA, 0x4F, 0x84, 0xC1, 0xA1, 0x2D, 0xCF, 0x45, 0x8B, 0xD3, 0x85, 0x50, 0x55, 0x7C, 0xF9, 0x67,
+ 0x88, 0xD4, 0x4E, 0xE9, 0xD7, 0x6B, 0x61, 0x54, 0xA1, 0xA4, 0xA6, 0xA2, 0xC2, 0xBF, 0x30, 0x9C,
+ 0x40, 0x9F, 0x5F, 0xD7, 0x69, 0x2B, 0x24, 0x82, 0x5E, 0xD9, 0xD6, 0xA7, 0x12, 0x54, 0x1A, 0xF7,
+ 0x55, 0x9F, 0x76, 0x50, 0xA9, 0x95, 0x84, 0xE6, 0x6B, 0x6D, 0xB5, 0x96, 0x54, 0xD6, 0xCD, 0xB3,
+ 0xA1, 0x9B, 0x46, 0xA7, 0x94, 0x4D, 0xC4, 0x94, 0xB4, 0x98, 0xE3, 0xE1, 0xE2, 0x34, 0xD5, 0x33,
+ 0x16, 0x07, 0x54, 0xCD, 0xB7, 0x77, 0x53, 0xDB, 0x4F, 0x4D, 0x46, 0x9D, 0xE9, 0xD4, 0x9C, 0x8A,
+ 0x36, 0xB6, 0xB8, 0x38, 0x26, 0x6C, 0x0E, 0xFF, 0x9C, 0x1B, 0x43, 0x8B, 0x80, 0xCC, 0xB9, 0x3D,
+ 0xDA, 0xC7, 0xF1, 0x8A, 0xF2, 0x6D, 0xB8, 0xD7, 0x74, 0x2F, 0x7E, 0x1E, 0xB7, 0xD3, 0x4A, 0xB4,
+ 0xAC, 0xFC, 0x79, 0x48, 0x6C, 0xBC, 0x96, 0xB6, 0x94, 0x46, 0x57, 0x2D, 0xB0, 0xA3, 0xFC, 0x1E,
+ 0xB9, 0x52, 0x60, 0x85, 0x2D, 0x41, 0xD0, 0x43, 0x01, 0x1E, 0x1C, 0xD5, 0x7D, 0xFC, 0xF3, 0x96,
+ 0x0D, 0xC7, 0xCB, 0x2A, 0x29, 0x9A, 0x93, 0xDD, 0x88, 0x2D, 0x37, 0x5D, 0xAA, 0xFB, 0x49, 0x68,
+ 0xA0, 0x9C, 0x50, 0x86, 0x7F, 0x68, 0x56, 0x57, 0xF9, 0x79, 0x18, 0x39, 0xD4, 0xE0, 0x01, 0x84,
+ 0x33, 0x61, 0xCA, 0xA5, 0xD2, 0xD6, 0xE4, 0xC9, 0x8A, 0x4A, 0x23, 0x44, 0x4E, 0xBC, 0xF0, 0xDC,
+ 0x24, 0xA1, 0xA0, 0xC4, 0xE2, 0x07, 0x3C, 0x10, 0xC4, 0xB5, 0x25, 0x4B, 0x65, 0x63, 0xF4, 0x80,
+ 0xE7, 0xCF, 0x61, 0xB1, 0x71, 0x82, 0x21, 0x87, 0x2C, 0xF5, 0x91, 0x00, 0x32, 0x0C, 0xEC, 0xA9,
+ 0xB5, 0x9A, 0x74, 0x85, 0xE3, 0x36, 0x8F, 0x76, 0x4F, 0x9C, 0x6D, 0xCE, 0xBC, 0xAD, 0x0A, 0x4B,
+ 0xED, 0x76, 0x04, 0xCB, 0xC3, 0xB9, 0x33, 0x9E, 0x01, 0x93, 0x96, 0x69, 0x7D, 0xC5, 0xA2, 0x45,
+ 0x79, 0x9B, 0x04, 0x5C, 0x84, 0x09, 0xED, 0x88, 0x43, 0xC7, 0xAB, 0x93, 0x14, 0x26, 0xA1, 0x40,
+ 0xB5, 0xCE, 0x4E, 0xBF, 0x2A, 0x42, 0x85, 0x3E, 0x2C, 0x3B, 0x54, 0xE8, 0x12, 0x1F, 0x0E, 0x97,
+ 0x59, 0xB2, 0x27, 0x89, 0xFA, 0xF2, 0xDF, 0x8E, 0x68, 0x59, 0xDC, 0x06, 0xBC, 0xB6, 0x85, 0x0D,
+ 0x06, 0x22, 0xEC, 0xB1, 0xCB, 0xE5, 0x04, 0xE6, 0x3D, 0xB3, 0xB0, 0x41, 0x73, 0x08, 0x3F, 0x3C,
+ 0x58, 0x86, 0x63, 0xEB, 0x50, 0xEE, 0x1D, 0x2C, 0x37, 0x74, 0xA9, 0xD3, 0x18, 0xA3, 0x47, 0x6E,
+ 0x93, 0x54, 0xAD, 0x0A, 0x5D, 0xB8, 0x2A, 0x55, 0x5D, 0x78, 0xF6, 0xEE, 0xBE, 0x8E, 0x3C, 0x76,
+ 0x69, 0xB9, 0x40, 0xC2, 0x34, 0xEC, 0x2A, 0xB9, 0xED, 0x7E, 0x20, 0xE4, 0x8D, 0x00, 0x38, 0xC7,
+ 0xE6, 0x8F, 0x44, 0xA8, 0x86, 0xCE, 0xEB, 0x2A, 0xE9, 0x90, 0xF1, 0x4C, 0xDF, 0x32, 0xFB, 0x73,
+ 0x1B, 0x6D, 0x92, 0x1E, 0x95, 0xFE, 0xB4, 0xDB, 0x65, 0xDF, 0x4D, 0x23, 0x54, 0x89, 0x48, 0xBF,
+ 0x4A, 0x2E, 0x70, 0xD6, 0xD7, 0x62, 0xB4, 0x33, 0x29, 0xB1, 0x3A, 0x33, 0x4C, 0x23, 0x6D, 0xA6,
+ 0x76, 0xA5, 0x21, 0x63, 0x48, 0xE6, 0x90, 0x5D, 0xED, 0x90, 0x95, 0x0B, 0x7A, 0x84, 0xBE, 0xB8,
+ 0x0D, 0x5E, 0x63, 0x0C, 0x62, 0x26, 0x4C, 0x14, 0x5A, 0xB3, 0xAC, 0x23, 0xA4, 0x74, 0xA7, 0x6F,
+ 0x33, 0x30, 0x05, 0x60, 0x01, 0x42, 0xA0, 0x28, 0xB7, 0xEE, 0x19, 0x38, 0xF1, 0x64, 0x80, 0x82,
+ 0x43, 0xE1, 0x41, 0x27, 0x1F, 0x1F, 0x90, 0x54, 0x7A, 0xD5, 0x23, 0x2E, 0xD1, 0x3D, 0xCB, 0x28,
+ 0xBA, 0x58, 0x7F, 0xDC, 0x7C, 0x91, 0x24, 0xE9, 0x28, 0x51, 0x83, 0x6E, 0xC5, 0x56, 0x21, 0x42,
+ 0xED, 0xA0, 0x56, 0x22, 0xA1, 0x40, 0x80, 0x6B, 0xA8, 0xF7, 0x94, 0xCA, 0x13, 0x6B, 0x0C, 0x39,
+ 0xD9, 0xFD, 0xE9, 0xF3, 0x6F, 0xA6, 0x9E, 0xFC, 0x70, 0x8A, 0xB3, 0xBC, 0x59, 0x3C, 0x1E, 0x1D,
+ 0x6C, 0xF9, 0x7C, 0xAF, 0xF9, 0x88, 0x71, 0x95, 0xEB, 0x57, 0x00, 0xBD, 0x9F, 0x8C, 0x4F, 0xE1,
+ 0x24, 0x83, 0xC5, 0x22, 0xEA, 0xFD, 0xD3, 0x0C, 0xE2, 0x17, 0x18, 0x7C, 0x6A, 0x4C, 0xDE, 0x77,
+ 0xB4, 0x53, 0x9B, 0x4C, 0x81, 0xCD, 0x23, 0x60, 0xAA, 0x0E, 0x25, 0x73, 0x9C, 0x02, 0x79, 0x32,
+ 0x30, 0xDF, 0x74, 0xDF, 0x75, 0x19, 0xF4, 0xA5, 0x14, 0x5C, 0xF7, 0x7A, 0xA8, 0xA5, 0x91, 0x84,
+ 0x7C, 0x60, 0x03, 0x06, 0x3B, 0xCD, 0x50, 0xB6, 0x27, 0x9C, 0xFE, 0xB1, 0xDD, 0xCC, 0xD3, 0xB0,
+ 0x59, 0x24, 0xB2, 0xCA, 0xE2, 0x1C, 0x81, 0x22, 0x9D, 0x07, 0x8F, 0x8E, 0xB9, 0xBE, 0x4E, 0xFA,
+ 0xFC, 0x39, 0x65, 0xBA, 0xBF, 0x9D, 0x12, 0x37, 0x5E, 0x97, 0x7E, 0xF3, 0x89, 0xF5, 0x5D, 0xF5,
+ 0xE3, 0x09, 0x8C, 0x62, 0xB5, 0x20, 0x9D, 0x0C, 0x53, 0x8A, 0x68, 0x1B, 0xD2, 0x8F, 0x75, 0x17,
+ 0x5D, 0xD4, 0xE5, 0xDA, 0x75, 0x62, 0x19, 0x14, 0x6A, 0x26, 0x2D, 0xEB, 0xF8, 0xAF, 0x37, 0xF0,
+ 0x6C, 0xA4, 0x55, 0xB1, 0xBC, 0xE2, 0x33, 0xC0, 0x9A, 0xCA, 0xB0, 0x11, 0x49, 0x4F, 0x68, 0x9B,
+ 0x3B, 0x6B, 0x3C, 0xCC, 0x13, 0xF6, 0xC7, 0x85, 0x61, 0x68, 0x42, 0xAE, 0xBB, 0xDD, 0xCD, 0x45,
+ 0x16, 0x29, 0x1D, 0xEA, 0xDB, 0xC8, 0x03, 0x94, 0x3C, 0xEE, 0x4F, 0x82, 0x11, 0xC3, 0xEC, 0x28,
+ 0xBD, 0x97, 0x05, 0x99, 0xDE, 0xD7, 0xBB, 0x5E, 0x22, 0x1F, 0xD4, 0xEB, 0x64, 0xD9, 0x92, 0xD9,
+ 0x85, 0xB7, 0x6A, 0x05, 0x6A, 0xE4, 0x24, 0x41, 0xF1, 0xCD, 0xF0, 0xD8, 0x3F, 0xF8, 0x9E, 0x0E,
+ 0xCD, 0x0B, 0x7A, 0x70, 0x6B, 0x5A, 0x75, 0x0A, 0x6A, 0x33, 0x88, 0xEC, 0x17, 0x75, 0x08, 0x70,
+ 0x10, 0x2F, 0x24, 0xCF, 0xC4, 0xE9, 0x42, 0x00, 0x61, 0x94, 0xCA, 0x1F, 0x3A, 0x76, 0x06, 0xFA,
+ 0xD2, 0x48, 0x81, 0xF0, 0x77, 0x60, 0x03, 0x45, 0xD9, 0x61, 0xF4, 0xA4, 0x6F, 0x3D, 0xD9, 0x30,
+ 0xC3, 0x04, 0x6B, 0x54, 0x2A, 0xB7, 0xEC, 0x3B, 0xF4, 0x4B, 0xF5, 0x68, 0x52, 0x26, 0xCE, 0xFF,
+ 0x5D, 0x19, 0x91, 0xA0, 0xA3, 0xA5, 0xA9, 0xB1, 0xE0, 0x23, 0xC4, 0x0A, 0x77, 0x4D, 0xF9, 0x51,
+ 0x20, 0xA3, 0xA5, 0xA9, 0xB1, 0xC1, 0x00, 0x82, 0x86, 0x8E, 0x7F, 0x5D, 0x19, 0x91, 0xA0, 0xA3,
+ 0xC4, 0xEB, 0x54, 0x0B, 0x75, 0x68, 0x52, 0x07, 0x8C, 0x9A, 0x97, 0x8D, 0x79, 0x70, 0x62, 0x46,
+ 0xEF, 0x5C, 0x1B, 0x95, 0x89, 0x71, 0x41, 0xE1, 0x21, 0xA1, 0xA1, 0xA1, 0xC0, 0x02, 0x67, 0x4C,
+ 0x1A, 0xB6, 0xCF, 0xFD, 0x78, 0x53, 0x24, 0xAB, 0xB5, 0xC9, 0xF1, 0x60, 0x23, 0xA5, 0xC8, 0x12,
+ 0x87, 0x6D, 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x6D, 0x58, 0x32, 0xC7, 0x0C, 0x9A, 0x97, 0xAC,
+ 0xDA, 0x36, 0xEE, 0x5E, 0x3E, 0xDF, 0x1D, 0xB8, 0xF2, 0x66, 0x2F, 0xBD, 0xF8, 0x72, 0x47, 0xED,
+ 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x8C, 0x7B, 0x55, 0x09, 0x90, 0xA2, 0xC6, 0xEF, 0x3D, 0xF8,
+ 0x53, 0x24, 0xAB, 0xD4, 0x2A, 0xB7, 0xEC, 0x5A, 0x36, 0xEE, 0x5E, 0x3E, 0xDF, 0x3C, 0xFA, 0x76,
+ 0x4F, 0xFD, 0x59, 0x30, 0xE2, 0x46, 0xEF, 0x3D, 0xF8, 0x53, 0x05, 0x69, 0x31, 0xC1, 0x00, 0x82,
+ 0x86, 0x8E, 0x7F, 0x5D, 0x19, 0xB0, 0xE2, 0x27, 0xCC, 0xFB, 0x74, 0x4B, 0x14, 0x8B, 0x94, 0x8B,
+ 0x75, 0x68, 0x33, 0xC5, 0x08, 0x92, 0x87, 0x8C, 0x9A, 0xB6, 0xCF, 0x1C, 0xBA, 0xD7, 0x0D, 0x98,
+ 0xB2, 0xE6, 0x2F, 0xDC, 0x1B, 0x95, 0x89, 0x71, 0x60, 0x23, 0xC4, 0x0A, 0x96, 0x8F, 0x9C, 0xBA,
+ 0xF6, 0x6E, 0x3F, 0xFC, 0x5B, 0x15, 0xA8, 0xD2, 0x26, 0xAF, 0xBD, 0xF8, 0x72, 0x66, 0x2F, 0xDC,
+ 0x1B, 0xB4, 0xCB, 0x14, 0x8B, 0x94, 0xAA, 0xB7, 0xCD, 0xF9, 0x51, 0x01, 0x80, 0x82, 0x86, 0x6F,
+ 0x3D, 0xD9, 0x30, 0xE2, 0x27, 0xCC, 0xFB, 0x74, 0x4B, 0x14, 0xAA, 0xB7, 0xCD, 0xF9, 0x70, 0x43,
+ 0x04, 0x6B, 0x35, 0xC9, 0xF1, 0x60, 0x23, 0xA5, 0xC8, 0xF3, 0x45, 0x08, 0x92, 0x87, 0x6D, 0x58,
+ 0x32, 0xE6, 0x2F, 0xBD, 0xF8, 0x72, 0x66, 0x4E, 0x1E, 0xBE, 0xFE, 0x7E, 0x7E, 0x7E, 0x5F, 0x1D,
+ 0x99, 0x91, 0xA0, 0xA3, 0xC4, 0x0A, 0x77, 0x4D, 0x18, 0x93, 0xA4, 0xAB, 0xD4, 0x0B, 0x75, 0x49,
+ 0x10, 0xA2, 0xC6, 0xEF, 0x3D, 0xF8, 0x53, 0x24, 0xAB, 0xB5, 0xE8, 0x33, 0xE4, 0x4A, 0x16, 0xAE,
+ 0xDE, 0x1F, 0xBC, 0xDB, 0x15, 0xA8, 0xB3, 0xC5, 0x08, 0x73, 0x45, 0xE9, 0x31, 0xC1, 0xE1, 0x21,
+ 0xA1, 0xA1, 0xA1, 0xC0, 0x02, 0x86, 0x6F, 0x5C, 0x3A, 0xD7, 0x0D, 0x98, 0x93, 0xA4, 0xCA, 0x16,
+ 0xAE, 0xDE, 0x1F, 0x9D, 0x99, 0xB0, 0xE2, 0x46, 0xEF, 0x3D, 0xF8, 0x72, 0x47, 0x0C, 0x9A, 0xB6,
+ 0xCF, 0xFD, 0x59, 0x11, 0xA0, 0xA3, 0xA5, 0xC8, 0xF3, 0x45, 0x08, 0x92, 0x87, 0x6D, 0x39, 0xF0,
+ 0x43, 0x04, 0x8A, 0x96, 0xAE, 0xDE, 0x3E, 0xDF, 0x1D, 0x99, 0x91, 0xA0, 0xC2, 0x06, 0x6F, 0x3D,
+ 0xF8, 0x72, 0x47, 0x0C, 0x9A, 0x97, 0x8D, 0x98, 0x93, 0x85, 0x88, 0x73, 0x45, 0xE9, 0x31, 0xE0,
+ 0x23, 0xA5, 0xA9, 0xD0, 0x03, 0x84, 0x8A, 0x96, 0xAE, 0xDE, 0x1F, 0xBC, 0xDB, 0x15, 0xA8, 0xD2,
+ 0x26, 0xCE, 0xFF, 0x5D, 0x19, 0x91, 0x81, 0x80, 0x82, 0x67, 0x2D, 0xD8, 0x13, 0xA4, 0xAB, 0xD4,
+ 0x0B, 0x94, 0xAA, 0xB7, 0xCD, 0xF9, 0x51, 0x20, 0xA3, 0xA5, 0xC8, 0xF3, 0x45, 0xE9, 0x50, 0x22,
+ 0xC6, 0xEF, 0x5C, 0x3A, 0xD7, 0x0D, 0x98, 0x93, 0x85, 0x88, 0x73, 0x64, 0x4A, 0xF7, 0x4D, 0xF9,
+ 0x51, 0x20, 0xA3, 0xC4, 0x0A, 0x96, 0xAE, 0xDE, 0x3E, 0xFE, 0x7E, 0x7E, 0x7E, 0x5F, 0x3C, 0xFA,
+ 0x76, 0x4F, 0xFD, 0x78, 0x72, 0x66, 0x2F, 0xBD, 0xD9, 0x30, 0xC3, 0xE5, 0x48, 0x12, 0x87, 0x8C,
+ 0x7B, 0x55, 0x28, 0xD2, 0x07, 0x8C, 0x9A, 0x97, 0xAC, 0xDA, 0x17, 0x8D, 0x79, 0x51, 0x20, 0xA3,
+ 0xC4, 0xEB, 0x54, 0x0B, 0x94, 0x8B, 0x94, 0xAA, 0xD6, 0x2E, 0xBF, 0xFC, 0x5B, 0x15, 0xA8, 0xD2,
+ 0x26, 0xAF, 0xDC, 0x1B, 0xB4, 0xEA, 0x37, 0xEC, 0x3B, 0xF4, 0x6A, 0x37, 0xCD, 0x18, 0x93, 0x85,
+ 0x69, 0x31, 0xC1, 0xE1, 0x40, 0xE3, 0x25, 0xC8, 0x12, 0x87, 0x8C, 0x9A, 0xB6, 0xCF, 0xFD, 0x59,
+ 0x11, 0xA0, 0xC2, 0x06, 0x8E, 0x7F, 0x5D, 0x38, 0xF2, 0x47, 0x0C, 0x7B, 0x74, 0x6A, 0x37, 0xEC,
+ 0x5A, 0x36, 0xEE, 0x3F, 0xFC, 0x7A, 0x76, 0x4F, 0x1C, 0x9B, 0x95, 0x89, 0x71, 0x41, 0x00, 0x63,
+ 0x44, 0xEB, 0x54, 0x2A, 0xD6, 0x0F, 0x9C, 0xBA, 0xD7, 0x0D, 0x98, 0x93, 0x85, 0x69, 0x31, 0xC1,
+ 0x00, 0x82, 0x86, 0x8E, 0x9E, 0xBE, 0xDF, 0x3C, 0xFA, 0x57, 0x2C, 0xDA, 0x36, 0xEE, 0x3F, 0xFC,
+ 0x5B, 0x15, 0x89, 0x71, 0x41, 0x00, 0x82, 0x86, 0x8E, 0x7F, 0x5D, 0x38, 0xF2, 0x47, 0xED, 0x58,
+ 0x13, 0xA4, 0xCA, 0xF7, 0x4D, 0xF9, 0x51, 0x01, 0x80, 0x63, 0x44, 0xEB, 0x54, 0x2A, 0xD6, 0x2E,
+ 0xBF, 0xDD, 0x19, 0x91, 0xA0, 0xA3, 0xA5, 0xA9, 0xB1, 0xE0, 0x42, 0x06, 0x8E, 0x7F, 0x5D, 0x19,
+ 0x91, 0xA0, 0xA3, 0xC4, 0x0A, 0x96, 0x8F, 0x7D, 0x78, 0x72, 0x47, 0x0C, 0x7B, 0x74, 0x6A, 0x56,
+ 0x2E, 0xDE, 0x1F, 0xBC, 0xFA, 0x57, 0x0D, 0x79, 0x51, 0x01, 0x61, 0x21, 0xA1, 0xC0, 0xE3, 0x25,
+ 0xA9, 0xB1, 0xC1, 0xE1, 0x40, 0x02, 0x67, 0x4C, 0x1A, 0x97, 0x8D, 0x98, 0x93, 0xA4, 0xAB, 0xD4,
+ 0x2A, 0xD6, 0x0F, 0x9C, 0x9B, 0xB4, 0xCB, 0x14, 0xAA, 0xB7, 0xCD, 0xF9, 0x51, 0x20, 0xA3, 0xC4,
+ 0xEB, 0x35, 0xC9, 0xF1, 0x60, 0x42, 0x06, 0x8E, 0x7F, 0x7C, 0x7A, 0x76, 0x6E, 0x3F, 0xFC, 0x7A,
+ 0x76, 0x6E, 0x5E, 0x3E, 0xFE, 0x7E, 0x5F, 0x3C, 0xDB, 0x15, 0x89, 0x71, 0x41, 0xE1, 0x21, 0xC0,
+ 0xE3, 0x44, 0xEB, 0x54, 0x2A, 0xB7, 0xCD, 0xF9, 0x70, 0x62, 0x27, 0xAD, 0xD8, 0x32, 0xC7, 0x0C,
+ 0x7B, 0x74, 0x4B, 0x14, 0xAA, 0xB7, 0xEC, 0x3B, 0xD5, 0x28, 0xD2, 0x07, 0x6D, 0x39, 0xD1, 0x20,
+ 0xC2, 0xE7, 0x4C, 0x1A, 0x97, 0x8D, 0x98, 0xB2, 0xC7, 0x0C, 0x59, 0x28, 0xF3, 0x9B
+};
diff --git a/drivers/sensors/pmw3360.h b/drivers/sensors/pmw3360.h
index 3aa8ed0ed8..8aa70bd427 100644
--- a/drivers/sensors/pmw3360.h
+++ b/drivers/sensors/pmw3360.h
@@ -1,79 +1,73 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- * Copyright 2019 Sunjun Kim
- * Copyright 2020 Ploopy Corporation
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * 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 2022 Stefan Kerkmann (KarlK90)
+// Copyright 2022 Ulrich Spörlein (@uqs)
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// Copyright 2019 Sunjun Kim
+// Copyright 2020 Ploopy Corporation
+// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <stdint.h>
-#ifndef PMW3360_CPI
-# define PMW3360_CPI 1600
+#if !defined(PMW33XX_CPI)
+# define PMW33XX_CPI 1600U
#endif
-#ifndef PMW3360_CLOCK_SPEED
-# define PMW3360_CLOCK_SPEED 2000000
-#endif
-
-#ifndef PMW3360_SPI_LSBFIRST
-# define PMW3360_SPI_LSBFIRST false
-#endif
-
-#ifndef PMW3360_SPI_MODE
-# define PMW3360_SPI_MODE 3
-#endif
-
-#ifndef PMW3360_SPI_DIVISOR
-# ifdef __AVR__
-# define PMW3360_SPI_DIVISOR (F_CPU / PMW3360_CLOCK_SPEED)
-# else
-# define PMW3360_SPI_DIVISOR 64
-# endif
-#endif
-
-#ifndef PMW3360_LIFTOFF_DISTANCE
-# define PMW3360_LIFTOFF_DISTANCE 0x02
-#endif
-
-#ifndef ROTATIONAL_TRANSFORM_ANGLE
-# define ROTATIONAL_TRANSFORM_ANGLE 0x00
-#endif
-
-// Support single and plural spellings
-#ifndef PMW3360_CS_PINS
-# ifndef PMW3360_CS_PIN
-# error "No chip select pin defined -- missing PMW3360_CS_PIN or PMW3360_CS_PINS"
-# else
-# define PMW3360_CS_PINS \
- { PMW3360_CS_PIN }
-# endif
-#endif
+#define PMW33XX_CPI_STEP 100
+#define PMW33XX_CPI_MIN 100
+#define PMW33XX_CPI_MAX 12000
-typedef struct {
- int8_t motion;
- bool isMotion; // True if a motion is detected.
- bool isOnSurface; // True when a chip is on a surface
- int16_t dx; // displacement on x directions. Unit: Count. (CPI * Count = Inch value)
- int8_t mdx;
- int16_t dy; // displacement on y directions.
- int8_t mdy;
-} report_pmw3360_t;
+#define PMW33XX_FIRMWARE_LENGTH 4094
-bool pmw3360_init(int8_t index);
-uint16_t pmw3360_get_cpi(void);
-void pmw3360_set_cpi(uint16_t cpi);
-/* Reads and clears the current delta values on the sensor */
-report_pmw3360_t pmw3360_read_burst(int8_t index);
+// PMW3360 register addresses
+// clang-format off
+#define REG_Product_ID 0x00
+#define REG_Revision_ID 0x01
+#define REG_Motion 0x02
+#define REG_Delta_X_L 0x03
+#define REG_Delta_X_H 0x04
+#define REG_Delta_Y_L 0x05
+#define REG_Delta_Y_H 0x06
+#define REG_SQUAL 0x07
+#define REG_Raw_Data_Sum 0x08
+#define REG_Maximum_Raw_data 0x09
+#define REG_Minimum_Raw_data 0x0a
+#define REG_Shutter_Lower 0x0b
+#define REG_Shutter_Upper 0x0c
+#define REG_Control 0x0d
+#define REG_Config1 0x0f
+#define REG_Config2 0x10
+#define REG_Angle_Tune 0x11
+#define REG_Frame_Capture 0x12
+#define REG_SROM_Enable 0x13
+#define REG_Run_Downshift 0x14
+#define REG_Rest1_Rate_Lower 0x15
+#define REG_Rest1_Rate_Upper 0x16
+#define REG_Rest1_Downshift 0x17
+#define REG_Rest2_Rate_Lower 0x18
+#define REG_Rest2_Rate_Upper 0x19
+#define REG_Rest2_Downshift 0x1a
+#define REG_Rest3_Rate_Lower 0x1b
+#define REG_Rest3_Rate_Upper 0x1c
+#define REG_Observation 0x24
+#define REG_Data_Out_Lower 0x25
+#define REG_Data_Out_Upper 0x26
+#define REG_Raw_Data_Dump 0x29
+#define REG_SROM_ID 0x2a
+#define REG_Min_SQ_Run 0x2b
+#define REG_Raw_Data_Threshold 0x2c
+#define REG_Config5 0x2f
+#define REG_Power_Up_Reset 0x3a
+#define REG_Shutdown 0x3b
+#define REG_Inverse_Product_ID 0x3f
+#define REG_LiftCutoff_Tune3 0x41
+#define REG_Angle_Snap 0x42
+#define REG_LiftCutoff_Tune1 0x4a
+#define REG_Motion_Burst 0x50
+#define REG_LiftCutoff_Tune_Timeout 0x58
+#define REG_LiftCutoff_Tune_Min_Length 0x5a
+#define REG_SROM_Load_Burst 0x62
+#define REG_Lift_Config 0x63
+#define REG_Raw_Data_Burst 0x64
+#define REG_LiftCutoff_Tune2 0x65
+// clang-format on
diff --git a/drivers/sensors/pmw3360_firmware.h b/drivers/sensors/pmw3360_firmware.h
deleted file mode 100644
index ed9fda5a75..0000000000
--- a/drivers/sensors/pmw3360_firmware.h
+++ /dev/null
@@ -1,288 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- * Copyright 2019 Sunjun Kim
- * Copyright 2020 Ploopy Corporation
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "progmem.h"
-
-// PID, Inverse PID, SROM version
-const uint8_t firmware_signature[] PROGMEM = {0x42, 0xBD, 0x04};
-
-#define FIRMWARE_LENGTH 4094
-
-// Firmware Blob foor PMW3360
-
-// clang-format off
-const uint8_t firmware_data[FIRMWARE_LENGTH] PROGMEM = {
- 0x01, 0x04, 0x8E, 0x96, 0x6E, 0x77, 0x3E, 0xFE, 0x7E, 0x5F, 0x1D, 0xB8, 0xF2, 0x66, 0x4E, 0xFF,
- 0x5D, 0x19, 0xB0, 0xC2, 0x04, 0x69, 0x54, 0x2A, 0xD6, 0x2E, 0xBF, 0xDD, 0x19, 0xB0, 0xC3, 0xE5,
- 0x29, 0xB1, 0xE0, 0x23, 0xA5, 0xA9, 0xB1, 0xC1, 0x00, 0x82, 0x67, 0x4C, 0x1A, 0x97, 0x8D, 0x79,
- 0x51, 0x20, 0xC7, 0x06, 0x8E, 0x7C, 0x7C, 0x7A, 0x76, 0x4F, 0xFD, 0x59, 0x30, 0xE2, 0x46, 0x0E,
- 0x9E, 0xBE, 0xDF, 0x1D, 0x99, 0x91, 0xA0, 0xA5, 0xA1, 0xA9, 0xD0, 0x22, 0xC6, 0xEF, 0x5C, 0x1B,
- 0x95, 0x89, 0x90, 0xA2, 0xA7, 0xCC, 0xFB, 0x55, 0x28, 0xB3, 0xE4, 0x4A, 0xF7, 0x6C, 0x3B, 0xF4,
- 0x6A, 0x56, 0x2E, 0xDE, 0x1F, 0x9D, 0xB8, 0xD3, 0x05, 0x88, 0x92, 0xA6, 0xCE, 0x1E, 0xBE, 0xDF,
- 0x1D, 0x99, 0xB0, 0xE2, 0x46, 0xEF, 0x5C, 0x07, 0x11, 0x5D, 0x98, 0x0B, 0x9D, 0x94, 0x97, 0xEE,
- 0x4E, 0x45, 0x33, 0x6B, 0x44, 0xC7, 0x29, 0x56, 0x27, 0x30, 0xC6, 0xA7, 0xD5, 0xF2, 0x56, 0xDF,
- 0xB4, 0x38, 0x62, 0xCB, 0xA0, 0xB6, 0xE3, 0x0F, 0x84, 0x06, 0x24, 0x05, 0x65, 0x6F, 0x76, 0x89,
- 0xB5, 0x77, 0x41, 0x27, 0x82, 0x66, 0x65, 0x82, 0xCC, 0xD5, 0xE6, 0x20, 0xD5, 0x27, 0x17, 0xC5,
- 0xF8, 0x03, 0x23, 0x7C, 0x5F, 0x64, 0xA5, 0x1D, 0xC1, 0xD6, 0x36, 0xCB, 0x4C, 0xD4, 0xDB, 0x66,
- 0xD7, 0x8B, 0xB1, 0x99, 0x7E, 0x6F, 0x4C, 0x36, 0x40, 0x06, 0xD6, 0xEB, 0xD7, 0xA2, 0xE4, 0xF4,
- 0x95, 0x51, 0x5A, 0x54, 0x96, 0xD5, 0x53, 0x44, 0xD7, 0x8C, 0xE0, 0xB9, 0x40, 0x68, 0xD2, 0x18,
- 0xE9, 0xDD, 0x9A, 0x23, 0x92, 0x48, 0xEE, 0x7F, 0x43, 0xAF, 0xEA, 0x77, 0x38, 0x84, 0x8C, 0x0A,
- 0x72, 0xAF, 0x69, 0xF8, 0xDD, 0xF1, 0x24, 0x83, 0xA3, 0xF8, 0x4A, 0xBF, 0xF5, 0x94, 0x13, 0xDB,
- 0xBB, 0xD8, 0xB4, 0xB3, 0xA0, 0xFB, 0x45, 0x50, 0x60, 0x30, 0x59, 0x12, 0x31, 0x71, 0xA2, 0xD3,
- 0x13, 0xE7, 0xFA, 0xE7, 0xCE, 0x0F, 0x63, 0x15, 0x0B, 0x6B, 0x94, 0xBB, 0x37, 0x83, 0x26, 0x05,
- 0x9D, 0xFB, 0x46, 0x92, 0xFC, 0x0A, 0x15, 0xD1, 0x0D, 0x73, 0x92, 0xD6, 0x8C, 0x1B, 0x8C, 0xB8,
- 0x55, 0x8A, 0xCE, 0xBD, 0xFE, 0x8E, 0xFC, 0xED, 0x09, 0x12, 0x83, 0x91, 0x82, 0x51, 0x31, 0x23,
- 0xFB, 0xB4, 0x0C, 0x76, 0xAD, 0x7C, 0xD9, 0xB4, 0x4B, 0xB2, 0x67, 0x14, 0x09, 0x9C, 0x7F, 0x0C,
- 0x18, 0xBA, 0x3B, 0xD6, 0x8E, 0x14, 0x2A, 0xE4, 0x1B, 0x52, 0x9F, 0x2B, 0x7D, 0xE1, 0xFB, 0x6A,
- 0x33, 0x02, 0xFA, 0xAC, 0x5A, 0xF2, 0x3E, 0x88, 0x7E, 0xAE, 0xD1, 0xF3, 0x78, 0xE8, 0x05, 0xD1,
- 0xE3, 0xDC, 0x21, 0xF6, 0xE1, 0x9A, 0xBD, 0x17, 0x0E, 0xD9, 0x46, 0x9B, 0x88, 0x03, 0xEA, 0xF6,
- 0x66, 0xBE, 0x0E, 0x1B, 0x50, 0x49, 0x96, 0x40, 0x97, 0xF1, 0xF1, 0xE4, 0x80, 0xA6, 0x6E, 0xE8,
- 0x77, 0x34, 0xBF, 0x29, 0x40, 0x44, 0xC2, 0xFF, 0x4E, 0x98, 0xD3, 0x9C, 0xA3, 0x32, 0x2B, 0x76,
- 0x51, 0x04, 0x09, 0xE7, 0xA9, 0xD1, 0xA6, 0x32, 0xB1, 0x23, 0x53, 0xE2, 0x47, 0xAB, 0xD6, 0xF5,
- 0x69, 0x5C, 0x3E, 0x5F, 0xFA, 0xAE, 0x45, 0x20, 0xE5, 0xD2, 0x44, 0xFF, 0x39, 0x32, 0x6D, 0xFD,
- 0x27, 0x57, 0x5C, 0xFD, 0xF0, 0xDE, 0xC1, 0xB5, 0x99, 0xE5, 0xF5, 0x1C, 0x77, 0x01, 0x75, 0xC5,
- 0x6D, 0x58, 0x92, 0xF2, 0xB2, 0x47, 0x00, 0x01, 0x26, 0x96, 0x7A, 0x30, 0xFF, 0xB7, 0xF0, 0xEF,
- 0x77, 0xC1, 0x8A, 0x5D, 0xDC, 0xC0, 0xD1, 0x29, 0x30, 0x1E, 0x77, 0x38, 0x7A, 0x94, 0xF1, 0xB8,
- 0x7A, 0x7E, 0xEF, 0xA4, 0xD1, 0xAC, 0x31, 0x4A, 0xF2, 0x5D, 0x64, 0x3D, 0xB2, 0xE2, 0xF0, 0x08,
- 0x99, 0xFC, 0x70, 0xEE, 0x24, 0xA7, 0x7E, 0xEE, 0x1E, 0x20, 0x69, 0x7D, 0x44, 0xBF, 0x87, 0x42,
- 0xDF, 0x88, 0x3B, 0x0C, 0xDA, 0x42, 0xC9, 0x04, 0xF9, 0x45, 0x50, 0xFC, 0x83, 0x8F, 0x11, 0x6A,
- 0x72, 0xBC, 0x99, 0x95, 0xF0, 0xAC, 0x3D, 0xA7, 0x3B, 0xCD, 0x1C, 0xE2, 0x88, 0x79, 0x37, 0x11,
- 0x5F, 0x39, 0x89, 0x95, 0x0A, 0x16, 0x84, 0x7A, 0xF6, 0x8A, 0xA4, 0x28, 0xE4, 0xED, 0x83, 0x80,
- 0x3B, 0xB1, 0x23, 0xA5, 0x03, 0x10, 0xF4, 0x66, 0xEA, 0xBB, 0x0C, 0x0F, 0xC5, 0xEC, 0x6C, 0x69,
- 0xC5, 0xD3, 0x24, 0xAB, 0xD4, 0x2A, 0xB7, 0x99, 0x88, 0x76, 0x08, 0xA0, 0xA8, 0x95, 0x7C, 0xD8,
- 0x38, 0x6D, 0xCD, 0x59, 0x02, 0x51, 0x4B, 0xF1, 0xB5, 0x2B, 0x50, 0xE3, 0xB6, 0xBD, 0xD0, 0x72,
- 0xCF, 0x9E, 0xFD, 0x6E, 0xBB, 0x44, 0xC8, 0x24, 0x8A, 0x77, 0x18, 0x8A, 0x13, 0x06, 0xEF, 0x97,
- 0x7D, 0xFA, 0x81, 0xF0, 0x31, 0xE6, 0xFA, 0x77, 0xED, 0x31, 0x06, 0x31, 0x5B, 0x54, 0x8A, 0x9F,
- 0x30, 0x68, 0xDB, 0xE2, 0x40, 0xF8, 0x4E, 0x73, 0xFA, 0xAB, 0x74, 0x8B, 0x10, 0x58, 0x13, 0xDC,
- 0xD2, 0xE6, 0x78, 0xD1, 0x32, 0x2E, 0x8A, 0x9F, 0x2C, 0x58, 0x06, 0x48, 0x27, 0xC5, 0xA9, 0x5E,
- 0x81, 0x47, 0x89, 0x46, 0x21, 0x91, 0x03, 0x70, 0xA4, 0x3E, 0x88, 0x9C, 0xDA, 0x33, 0x0A, 0xCE,
- 0xBC, 0x8B, 0x8E, 0xCF, 0x9F, 0xD3, 0x71, 0x80, 0x43, 0xCF, 0x6B, 0xA9, 0x51, 0x83, 0x76, 0x30,
- 0x82, 0xC5, 0x6A, 0x85, 0x39, 0x11, 0x50, 0x1A, 0x82, 0xDC, 0x1E, 0x1C, 0xD5, 0x7D, 0xA9, 0x71,
- 0x99, 0x33, 0x47, 0x19, 0x97, 0xB3, 0x5A, 0xB1, 0xDF, 0xED, 0xA4, 0xF2, 0xE6, 0x26, 0x84, 0xA2,
- 0x28, 0x9A, 0x9E, 0xDF, 0xA6, 0x6A, 0xF4, 0xD6, 0xFC, 0x2E, 0x5B, 0x9D, 0x1A, 0x2A, 0x27, 0x68,
- 0xFB, 0xC1, 0x83, 0x21, 0x4B, 0x90, 0xE0, 0x36, 0xDD, 0x5B, 0x31, 0x42, 0x55, 0xA0, 0x13, 0xF7,
- 0xD0, 0x89, 0x53, 0x71, 0x99, 0x57, 0x09, 0x29, 0xC5, 0xF3, 0x21, 0xF8, 0x37, 0x2F, 0x40, 0xF3,
- 0xD4, 0xAF, 0x16, 0x08, 0x36, 0x02, 0xFC, 0x77, 0xC5, 0x8B, 0x04, 0x90, 0x56, 0xB9, 0xC9, 0x67,
- 0x9A, 0x99, 0xE8, 0x00, 0xD3, 0x86, 0xFF, 0x97, 0x2D, 0x08, 0xE9, 0xB7, 0xB3, 0x91, 0xBC, 0xDF,
- 0x45, 0xC6, 0xED, 0x0F, 0x8C, 0x4C, 0x1E, 0xE6, 0x5B, 0x6E, 0x38, 0x30, 0xE4, 0xAA, 0xE3, 0x95,
- 0xDE, 0xB9, 0xE4, 0x9A, 0xF5, 0xB2, 0x55, 0x9A, 0x87, 0x9B, 0xF6, 0x6A, 0xB2, 0xF2, 0x77, 0x9A,
- 0x31, 0xF4, 0x7A, 0x31, 0xD1, 0x1D, 0x04, 0xC0, 0x7C, 0x32, 0xA2, 0x9E, 0x9A, 0xF5, 0x62, 0xF8,
- 0x27, 0x8D, 0xBF, 0x51, 0xFF, 0xD3, 0xDF, 0x64, 0x37, 0x3F, 0x2A, 0x6F, 0x76, 0x3A, 0x7D, 0x77,
- 0x06, 0x9E, 0x77, 0x7F, 0x5E, 0xEB, 0x32, 0x51, 0xF9, 0x16, 0x66, 0x9A, 0x09, 0xF3, 0xB0, 0x08,
- 0xA4, 0x70, 0x96, 0x46, 0x30, 0xFF, 0xDA, 0x4F, 0xE9, 0x1B, 0xED, 0x8D, 0xF8, 0x74, 0x1F, 0x31,
- 0x92, 0xB3, 0x73, 0x17, 0x36, 0xDB, 0x91, 0x30, 0xD6, 0x88, 0x55, 0x6B, 0x34, 0x77, 0x87, 0x7A,
- 0xE7, 0xEE, 0x06, 0xC6, 0x1C, 0x8C, 0x19, 0x0C, 0x48, 0x46, 0x23, 0x5E, 0x9C, 0x07, 0x5C, 0xBF,
- 0xB4, 0x7E, 0xD6, 0x4F, 0x74, 0x9C, 0xE2, 0xC5, 0x50, 0x8B, 0xC5, 0x8B, 0x15, 0x90, 0x60, 0x62,
- 0x57, 0x29, 0xD0, 0x13, 0x43, 0xA1, 0x80, 0x88, 0x91, 0x00, 0x44, 0xC7, 0x4D, 0x19, 0x86, 0xCC,
- 0x2F, 0x2A, 0x75, 0x5A, 0xFC, 0xEB, 0x97, 0x2A, 0x70, 0xE3, 0x78, 0xD8, 0x91, 0xB0, 0x4F, 0x99,
- 0x07, 0xA3, 0x95, 0xEA, 0x24, 0x21, 0xD5, 0xDE, 0x51, 0x20, 0x93, 0x27, 0x0A, 0x30, 0x73, 0xA8,
- 0xFF, 0x8A, 0x97, 0xE9, 0xA7, 0x6A, 0x8E, 0x0D, 0xE8, 0xF0, 0xDF, 0xEC, 0xEA, 0xB4, 0x6C, 0x1D,
- 0x39, 0x2A, 0x62, 0x2D, 0x3D, 0x5A, 0x8B, 0x65, 0xF8, 0x90, 0x05, 0x2E, 0x7E, 0x91, 0x2C, 0x78,
- 0xEF, 0x8E, 0x7A, 0xC1, 0x2F, 0xAC, 0x78, 0xEE, 0xAF, 0x28, 0x45, 0x06, 0x4C, 0x26, 0xAF, 0x3B,
- 0xA2, 0xDB, 0xA3, 0x93, 0x06, 0xB5, 0x3C, 0xA5, 0xD8, 0xEE, 0x8F, 0xAF, 0x25, 0xCC, 0x3F, 0x85,
- 0x68, 0x48, 0xA9, 0x62, 0xCC, 0x97, 0x8F, 0x7F, 0x2A, 0xEA, 0xE0, 0x15, 0x0A, 0xAD, 0x62, 0x07,
- 0xBD, 0x45, 0xF8, 0x41, 0xD8, 0x36, 0xCB, 0x4C, 0xDB, 0x6E, 0xE6, 0x3A, 0xE7, 0xDA, 0x15, 0xE9,
- 0x29, 0x1E, 0x12, 0x10, 0xA0, 0x14, 0x2C, 0x0E, 0x3D, 0xF4, 0xBF, 0x39, 0x41, 0x92, 0x75, 0x0B,
- 0x25, 0x7B, 0xA3, 0xCE, 0x39, 0x9C, 0x15, 0x64, 0xC8, 0xFA, 0x3D, 0xEF, 0x73, 0x27, 0xFE, 0x26,
- 0x2E, 0xCE, 0xDA, 0x6E, 0xFD, 0x71, 0x8E, 0xDD, 0xFE, 0x76, 0xEE, 0xDC, 0x12, 0x5C, 0x02, 0xC5,
- 0x3A, 0x4E, 0x4E, 0x4F, 0xBF, 0xCA, 0x40, 0x15, 0xC7, 0x6E, 0x8D, 0x41, 0xF1, 0x10, 0xE0, 0x4F,
- 0x7E, 0x97, 0x7F, 0x1C, 0xAE, 0x47, 0x8E, 0x6B, 0xB1, 0x25, 0x31, 0xB0, 0x73, 0xC7, 0x1B, 0x97,
- 0x79, 0xF9, 0x80, 0xD3, 0x66, 0x22, 0x30, 0x07, 0x74, 0x1E, 0xE4, 0xD0, 0x80, 0x21, 0xD6, 0xEE,
- 0x6B, 0x6C, 0x4F, 0xBF, 0xF5, 0xB7, 0xD9, 0x09, 0x87, 0x2F, 0xA9, 0x14, 0xBE, 0x27, 0xD9, 0x72,
- 0x50, 0x01, 0xD4, 0x13, 0x73, 0xA6, 0xA7, 0x51, 0x02, 0x75, 0x25, 0xE1, 0xB3, 0x45, 0x34, 0x7D,
- 0xA8, 0x8E, 0xEB, 0xF3, 0x16, 0x49, 0xCB, 0x4F, 0x8C, 0xA1, 0xB9, 0x36, 0x85, 0x39, 0x75, 0x5D,
- 0x08, 0x00, 0xAE, 0xEB, 0xF6, 0xEA, 0xD7, 0x13, 0x3A, 0x21, 0x5A, 0x5F, 0x30, 0x84, 0x52, 0x26,
- 0x95, 0xC9, 0x14, 0xF2, 0x57, 0x55, 0x6B, 0xB1, 0x10, 0xC2, 0xE1, 0xBD, 0x3B, 0x51, 0xC0, 0xB7,
- 0x55, 0x4C, 0x71, 0x12, 0x26, 0xC7, 0x0D, 0xF9, 0x51, 0xA4, 0x38, 0x02, 0x05, 0x7F, 0xB8, 0xF1,
- 0x72, 0x4B, 0xBF, 0x71, 0x89, 0x14, 0xF3, 0x77, 0x38, 0xD9, 0x71, 0x24, 0xF3, 0x00, 0x11, 0xA1,
- 0xD8, 0xD4, 0x69, 0x27, 0x08, 0x37, 0x35, 0xC9, 0x11, 0x9D, 0x90, 0x1C, 0x0E, 0xE7, 0x1C, 0xFF,
- 0x2D, 0x1E, 0xE8, 0x92, 0xE1, 0x18, 0x10, 0x95, 0x7C, 0xE0, 0x80, 0xF4, 0x96, 0x43, 0x21, 0xF9,
- 0x75, 0x21, 0x64, 0x38, 0xDD, 0x9F, 0x1E, 0x95, 0x16, 0xDA, 0x56, 0x1D, 0x4F, 0x9A, 0x53, 0xB2,
- 0xE2, 0xE4, 0x18, 0xCB, 0x6B, 0x1A, 0x65, 0xEB, 0x56, 0xC6, 0x3B, 0xE5, 0xFE, 0xD8, 0x26, 0x3F,
- 0x3A, 0x84, 0x59, 0x72, 0x66, 0xA2, 0xF3, 0x75, 0xFF, 0xFB, 0x60, 0xB3, 0x22, 0xAD, 0x3F, 0x2D,
- 0x6B, 0xF9, 0xEB, 0xEA, 0x05, 0x7C, 0xD8, 0x8F, 0x6D, 0x2C, 0x98, 0x9E, 0x2B, 0x93, 0xF1, 0x5E,
- 0x46, 0xF0, 0x87, 0x49, 0x29, 0x73, 0x68, 0xD7, 0x7F, 0xF9, 0xF0, 0xE5, 0x7D, 0xDB, 0x1D, 0x75,
- 0x19, 0xF3, 0xC4, 0x58, 0x9B, 0x17, 0x88, 0xA8, 0x92, 0xE0, 0xBE, 0xBD, 0x8B, 0x1D, 0x8D, 0x9F,
- 0x56, 0x76, 0xAD, 0xAF, 0x29, 0xE2, 0xD9, 0xD5, 0x52, 0xF6, 0xB5, 0x56, 0x35, 0x57, 0x3A, 0xC8,
- 0xE1, 0x56, 0x43, 0x19, 0x94, 0xD3, 0x04, 0x9B, 0x6D, 0x35, 0xD8, 0x0B, 0x5F, 0x4D, 0x19, 0x8E,
- 0xEC, 0xFA, 0x64, 0x91, 0x0A, 0x72, 0x20, 0x2B, 0xBC, 0x1A, 0x4A, 0xFE, 0x8B, 0xFD, 0xBB, 0xED,
- 0x1B, 0x23, 0xEA, 0xAD, 0x72, 0x82, 0xA1, 0x29, 0x99, 0x71, 0xBD, 0xF0, 0x95, 0xC1, 0x03, 0xDD,
- 0x7B, 0xC2, 0xB2, 0x3C, 0x28, 0x54, 0xD3, 0x68, 0xA4, 0x72, 0xC8, 0x66, 0x96, 0xE0, 0xD1, 0xD8,
- 0x7F, 0xF8, 0xD1, 0x26, 0x2B, 0xF7, 0xAD, 0xBA, 0x55, 0xCA, 0x15, 0xB9, 0x32, 0xC3, 0xE5, 0x88,
- 0x97, 0x8E, 0x5C, 0xFB, 0x92, 0x25, 0x8B, 0xBF, 0xA2, 0x45, 0x55, 0x7A, 0xA7, 0x6F, 0x8B, 0x57,
- 0x5B, 0xCF, 0x0E, 0xCB, 0x1D, 0xFB, 0x20, 0x82, 0x77, 0xA8, 0x8C, 0xCC, 0x16, 0xCE, 0x1D, 0xFA,
- 0xDE, 0xCC, 0x0B, 0x62, 0xFE, 0xCC, 0xE1, 0xB7, 0xF0, 0xC3, 0x81, 0x64, 0x73, 0x40, 0xA0, 0xC2,
- 0x4D, 0x89, 0x11, 0x75, 0x33, 0x55, 0x33, 0x8D, 0xE8, 0x4A, 0xFD, 0xEA, 0x6E, 0x30, 0x0B, 0xD7,
- 0x31, 0x2C, 0xDE, 0x47, 0xE3, 0xBF, 0xF8, 0x55, 0x42, 0xE2, 0x7F, 0x59, 0xE5, 0x17, 0xEF, 0x99,
- 0x34, 0x69, 0x91, 0xB1, 0x23, 0x8E, 0x20, 0x87, 0x2D, 0xA8, 0xFE, 0xD5, 0x8A, 0xF3, 0x84, 0x3A,
- 0xF0, 0x37, 0xE4, 0x09, 0x00, 0x54, 0xEE, 0x67, 0x49, 0x93, 0xE4, 0x81, 0x70, 0xE3, 0x90, 0x4D,
- 0xEF, 0xFE, 0x41, 0xB7, 0x99, 0x7B, 0xC1, 0x83, 0xBA, 0x62, 0x12, 0x6F, 0x7D, 0xDE, 0x6B, 0xAF,
- 0xDA, 0x16, 0xF9, 0x55, 0x51, 0xEE, 0xA6, 0x0C, 0x2B, 0x02, 0xA3, 0xFD, 0x8D, 0xFB, 0x30, 0x17,
- 0xE4, 0x6F, 0xDF, 0x36, 0x71, 0xC4, 0xCA, 0x87, 0x25, 0x48, 0xB0, 0x47, 0xEC, 0xEA, 0xB4, 0xBF,
- 0xA5, 0x4D, 0x9B, 0x9F, 0x02, 0x93, 0xC4, 0xE3, 0xE4, 0xE8, 0x42, 0x2D, 0x68, 0x81, 0x15, 0x0A,
- 0xEB, 0x84, 0x5B, 0xD6, 0xA8, 0x74, 0xFB, 0x7D, 0x1D, 0xCB, 0x2C, 0xDA, 0x46, 0x2A, 0x76, 0x62,
- 0xCE, 0xBC, 0x5C, 0x9E, 0x8B, 0xE7, 0xCF, 0xBE, 0x78, 0xF5, 0x7C, 0xEB, 0xB3, 0x3A, 0x9C, 0xAA,
- 0x6F, 0xCC, 0x72, 0xD1, 0x59, 0xF2, 0x11, 0x23, 0xD6, 0x3F, 0x48, 0xD1, 0xB7, 0xCE, 0xB0, 0xBF,
- 0xCB, 0xEA, 0x80, 0xDE, 0x57, 0xD4, 0x5E, 0x97, 0x2F, 0x75, 0xD1, 0x50, 0x8E, 0x80, 0x2C, 0x66,
- 0x79, 0xBF, 0x72, 0x4B, 0xBD, 0x8A, 0x81, 0x6C, 0xD3, 0xE1, 0x01, 0xDC, 0xD2, 0x15, 0x26, 0xC5,
- 0x36, 0xDA, 0x2C, 0x1A, 0xC0, 0x27, 0x94, 0xED, 0xB7, 0x9B, 0x85, 0x0B, 0x5E, 0x80, 0x97, 0xC5,
- 0xEC, 0x4F, 0xEC, 0x88, 0x5D, 0x50, 0x07, 0x35, 0x47, 0xDC, 0x0B, 0x3B, 0x3D, 0xDD, 0x60, 0xAF,
- 0xA8, 0x5D, 0x81, 0x38, 0x24, 0x25, 0x5D, 0x5C, 0x15, 0xD1, 0xDE, 0xB3, 0xAB, 0xEC, 0x05, 0x69,
- 0xEF, 0x83, 0xED, 0x57, 0x54, 0xB8, 0x64, 0x64, 0x11, 0x16, 0x32, 0x69, 0xDA, 0x9F, 0x2D, 0x7F,
- 0x36, 0xBB, 0x44, 0x5A, 0x34, 0xE8, 0x7F, 0xBF, 0x03, 0xEB, 0x00, 0x7F, 0x59, 0x68, 0x22, 0x79,
- 0xCF, 0x73, 0x6C, 0x2C, 0x29, 0xA7, 0xA1, 0x5F, 0x38, 0xA1, 0x1D, 0xF0, 0x20, 0x53, 0xE0, 0x1A,
- 0x63, 0x14, 0x58, 0x71, 0x10, 0xAA, 0x08, 0x0C, 0x3E, 0x16, 0x1A, 0x60, 0x22, 0x82, 0x7F, 0xBA,
- 0xA4, 0x43, 0xA0, 0xD0, 0xAC, 0x1B, 0xD5, 0x6B, 0x64, 0xB5, 0x14, 0x93, 0x31, 0x9E, 0x53, 0x50,
- 0xD0, 0x57, 0x66, 0xEE, 0x5A, 0x4F, 0xFB, 0x03, 0x2A, 0x69, 0x58, 0x76, 0xF1, 0x83, 0xF7, 0x4E,
- 0xBA, 0x8C, 0x42, 0x06, 0x60, 0x5D, 0x6D, 0xCE, 0x60, 0x88, 0xAE, 0xA4, 0xC3, 0xF1, 0x03, 0xA5,
- 0x4B, 0x98, 0xA1, 0xFF, 0x67, 0xE1, 0xAC, 0xA2, 0xB8, 0x62, 0xD7, 0x6F, 0xA0, 0x31, 0xB4, 0xD2,
- 0x77, 0xAF, 0x21, 0x10, 0x06, 0xC6, 0x9A, 0xFF, 0x1D, 0x09, 0x17, 0x0E, 0x5F, 0xF1, 0xAA, 0x54,
- 0x34, 0x4B, 0x45, 0x8A, 0x87, 0x63, 0xA6, 0xDC, 0xF9, 0x24, 0x30, 0x67, 0xC6, 0xB2, 0xD6, 0x61,
- 0x33, 0x69, 0xEE, 0x50, 0x61, 0x57, 0x28, 0xE7, 0x7E, 0xEE, 0xEC, 0x3A, 0x5A, 0x73, 0x4E, 0xA8,
- 0x8D, 0xE4, 0x18, 0xEA, 0xEC, 0x41, 0x64, 0xC8, 0xE2, 0xE8, 0x66, 0xB6, 0x2D, 0xB6, 0xFB, 0x6A,
- 0x6C, 0x16, 0xB3, 0xDD, 0x46, 0x43, 0xB9, 0x73, 0x00, 0x6A, 0x71, 0xED, 0x4E, 0x9D, 0x25, 0x1A,
- 0xC3, 0x3C, 0x4A, 0x95, 0x15, 0x99, 0x35, 0x81, 0x14, 0x02, 0xD6, 0x98, 0x9B, 0xEC, 0xD8, 0x23,
- 0x3B, 0x84, 0x29, 0xAF, 0x0C, 0x99, 0x83, 0xA6, 0x9A, 0x34, 0x4F, 0xFA, 0xE8, 0xD0, 0x3C, 0x4B,
- 0xD0, 0xFB, 0xB6, 0x68, 0xB8, 0x9E, 0x8F, 0xCD, 0xF7, 0x60, 0x2D, 0x7A, 0x22, 0xE5, 0x7D, 0xAB,
- 0x65, 0x1B, 0x95, 0xA7, 0xA8, 0x7F, 0xB6, 0x77, 0x47, 0x7B, 0x5F, 0x8B, 0x12, 0x72, 0xD0, 0xD4,
- 0x91, 0xEF, 0xDE, 0x19, 0x50, 0x3C, 0xA7, 0x8B, 0xC4, 0xA9, 0xB3, 0x23, 0xCB, 0x76, 0xE6, 0x81,
- 0xF0, 0xC1, 0x04, 0x8F, 0xA3, 0xB8, 0x54, 0x5B, 0x97, 0xAC, 0x19, 0xFF, 0x3F, 0x55, 0x27, 0x2F,
- 0xE0, 0x1D, 0x42, 0x9B, 0x57, 0xFC, 0x4B, 0x4E, 0x0F, 0xCE, 0x98, 0xA9, 0x43, 0x57, 0x03, 0xBD,
- 0xE7, 0xC8, 0x94, 0xDF, 0x6E, 0x36, 0x73, 0x32, 0xB4, 0xEF, 0x2E, 0x85, 0x7A, 0x6E, 0xFC, 0x6C,
- 0x18, 0x82, 0x75, 0x35, 0x90, 0x07, 0xF3, 0xE4, 0x9F, 0x3E, 0xDC, 0x68, 0xF3, 0xB5, 0xF3, 0x19,
- 0x80, 0x92, 0x06, 0x99, 0xA2, 0xE8, 0x6F, 0xFF, 0x2E, 0x7F, 0xAE, 0x42, 0xA4, 0x5F, 0xFB, 0xD4,
- 0x0E, 0x81, 0x2B, 0xC3, 0x04, 0xFF, 0x2B, 0xB3, 0x74, 0x4E, 0x36, 0x5B, 0x9C, 0x15, 0x00, 0xC6,
- 0x47, 0x2B, 0xE8, 0x8B, 0x3D, 0xF1, 0x9C, 0x03, 0x9A, 0x58, 0x7F, 0x9B, 0x9C, 0xBF, 0x85, 0x49,
- 0x79, 0x35, 0x2E, 0x56, 0x7B, 0x41, 0x14, 0x39, 0x47, 0x83, 0x26, 0xAA, 0x07, 0x89, 0x98, 0x11,
- 0x1B, 0x86, 0xE7, 0x73, 0x7A, 0xD8, 0x7D, 0x78, 0x61, 0x53, 0xE9, 0x79, 0xF5, 0x36, 0x8D, 0x44,
- 0x92, 0x84, 0xF9, 0x13, 0x50, 0x58, 0x3B, 0xA4, 0x6A, 0x36, 0x65, 0x49, 0x8E, 0x3C, 0x0E, 0xF1,
- 0x6F, 0xD2, 0x84, 0xC4, 0x7E, 0x8E, 0x3F, 0x39, 0xAE, 0x7C, 0x84, 0xF1, 0x63, 0x37, 0x8E, 0x3C,
- 0xCC, 0x3E, 0x44, 0x81, 0x45, 0xF1, 0x4B, 0xB9, 0xED, 0x6B, 0x36, 0x5D, 0xBB, 0x20, 0x60, 0x1A,
- 0x0F, 0xA3, 0xAA, 0x55, 0x77, 0x3A, 0xA9, 0xAE, 0x37, 0x4D, 0xBA, 0xB8, 0x86, 0x6B, 0xBC, 0x08,
- 0x50, 0xF6, 0xCC, 0xA4, 0xBD, 0x1D, 0x40, 0x72, 0xA5, 0x86, 0xFA, 0xE2, 0x10, 0xAE, 0x3D, 0x58,
- 0x4B, 0x97, 0xF3, 0x43, 0x74, 0xA9, 0x9E, 0xEB, 0x21, 0xB7, 0x01, 0xA4, 0x86, 0x93, 0x97, 0xEE,
- 0x2F, 0x4F, 0x3B, 0x86, 0xA1, 0x41, 0x6F, 0x41, 0x26, 0x90, 0x78, 0x5C, 0x7F, 0x30, 0x38, 0x4B,
- 0x3F, 0xAA, 0xEC, 0xED, 0x5C, 0x6F, 0x0E, 0xAD, 0x43, 0x87, 0xFD, 0x93, 0x35, 0xE6, 0x01, 0xEF,
- 0x41, 0x26, 0x90, 0x99, 0x9E, 0xFB, 0x19, 0x5B, 0xAD, 0xD2, 0x91, 0x8A, 0xE0, 0x46, 0xAF, 0x65,
- 0xFA, 0x4F, 0x84, 0xC1, 0xA1, 0x2D, 0xCF, 0x45, 0x8B, 0xD3, 0x85, 0x50, 0x55, 0x7C, 0xF9, 0x67,
- 0x88, 0xD4, 0x4E, 0xE9, 0xD7, 0x6B, 0x61, 0x54, 0xA1, 0xA4, 0xA6, 0xA2, 0xC2, 0xBF, 0x30, 0x9C,
- 0x40, 0x9F, 0x5F, 0xD7, 0x69, 0x2B, 0x24, 0x82, 0x5E, 0xD9, 0xD6, 0xA7, 0x12, 0x54, 0x1A, 0xF7,
- 0x55, 0x9F, 0x76, 0x50, 0xA9, 0x95, 0x84, 0xE6, 0x6B, 0x6D, 0xB5, 0x96, 0x54, 0xD6, 0xCD, 0xB3,
- 0xA1, 0x9B, 0x46, 0xA7, 0x94, 0x4D, 0xC4, 0x94, 0xB4, 0x98, 0xE3, 0xE1, 0xE2, 0x34, 0xD5, 0x33,
- 0x16, 0x07, 0x54, 0xCD, 0xB7, 0x77, 0x53, 0xDB, 0x4F, 0x4D, 0x46, 0x9D, 0xE9, 0xD4, 0x9C, 0x8A,
- 0x36, 0xB6, 0xB8, 0x38, 0x26, 0x6C, 0x0E, 0xFF, 0x9C, 0x1B, 0x43, 0x8B, 0x80, 0xCC, 0xB9, 0x3D,
- 0xDA, 0xC7, 0xF1, 0x8A, 0xF2, 0x6D, 0xB8, 0xD7, 0x74, 0x2F, 0x7E, 0x1E, 0xB7, 0xD3, 0x4A, 0xB4,
- 0xAC, 0xFC, 0x79, 0x48, 0x6C, 0xBC, 0x96, 0xB6, 0x94, 0x46, 0x57, 0x2D, 0xB0, 0xA3, 0xFC, 0x1E,
- 0xB9, 0x52, 0x60, 0x85, 0x2D, 0x41, 0xD0, 0x43, 0x01, 0x1E, 0x1C, 0xD5, 0x7D, 0xFC, 0xF3, 0x96,
- 0x0D, 0xC7, 0xCB, 0x2A, 0x29, 0x9A, 0x93, 0xDD, 0x88, 0x2D, 0x37, 0x5D, 0xAA, 0xFB, 0x49, 0x68,
- 0xA0, 0x9C, 0x50, 0x86, 0x7F, 0x68, 0x56, 0x57, 0xF9, 0x79, 0x18, 0x39, 0xD4, 0xE0, 0x01, 0x84,
- 0x33, 0x61, 0xCA, 0xA5, 0xD2, 0xD6, 0xE4, 0xC9, 0x8A, 0x4A, 0x23, 0x44, 0x4E, 0xBC, 0xF0, 0xDC,
- 0x24, 0xA1, 0xA0, 0xC4, 0xE2, 0x07, 0x3C, 0x10, 0xC4, 0xB5, 0x25, 0x4B, 0x65, 0x63, 0xF4, 0x80,
- 0xE7, 0xCF, 0x61, 0xB1, 0x71, 0x82, 0x21, 0x87, 0x2C, 0xF5, 0x91, 0x00, 0x32, 0x0C, 0xEC, 0xA9,
- 0xB5, 0x9A, 0x74, 0x85, 0xE3, 0x36, 0x8F, 0x76, 0x4F, 0x9C, 0x6D, 0xCE, 0xBC, 0xAD, 0x0A, 0x4B,
- 0xED, 0x76, 0x04, 0xCB, 0xC3, 0xB9, 0x33, 0x9E, 0x01, 0x93, 0x96, 0x69, 0x7D, 0xC5, 0xA2, 0x45,
- 0x79, 0x9B, 0x04, 0x5C, 0x84, 0x09, 0xED, 0x88, 0x43, 0xC7, 0xAB, 0x93, 0x14, 0x26, 0xA1, 0x40,
- 0xB5, 0xCE, 0x4E, 0xBF, 0x2A, 0x42, 0x85, 0x3E, 0x2C, 0x3B, 0x54, 0xE8, 0x12, 0x1F, 0x0E, 0x97,
- 0x59, 0xB2, 0x27, 0x89, 0xFA, 0xF2, 0xDF, 0x8E, 0x68, 0x59, 0xDC, 0x06, 0xBC, 0xB6, 0x85, 0x0D,
- 0x06, 0x22, 0xEC, 0xB1, 0xCB, 0xE5, 0x04, 0xE6, 0x3D, 0xB3, 0xB0, 0x41, 0x73, 0x08, 0x3F, 0x3C,
- 0x58, 0x86, 0x63, 0xEB, 0x50, 0xEE, 0x1D, 0x2C, 0x37, 0x74, 0xA9, 0xD3, 0x18, 0xA3, 0x47, 0x6E,
- 0x93, 0x54, 0xAD, 0x0A, 0x5D, 0xB8, 0x2A, 0x55, 0x5D, 0x78, 0xF6, 0xEE, 0xBE, 0x8E, 0x3C, 0x76,
- 0x69, 0xB9, 0x40, 0xC2, 0x34, 0xEC, 0x2A, 0xB9, 0xED, 0x7E, 0x20, 0xE4, 0x8D, 0x00, 0x38, 0xC7,
- 0xE6, 0x8F, 0x44, 0xA8, 0x86, 0xCE, 0xEB, 0x2A, 0xE9, 0x90, 0xF1, 0x4C, 0xDF, 0x32, 0xFB, 0x73,
- 0x1B, 0x6D, 0x92, 0x1E, 0x95, 0xFE, 0xB4, 0xDB, 0x65, 0xDF, 0x4D, 0x23, 0x54, 0x89, 0x48, 0xBF,
- 0x4A, 0x2E, 0x70, 0xD6, 0xD7, 0x62, 0xB4, 0x33, 0x29, 0xB1, 0x3A, 0x33, 0x4C, 0x23, 0x6D, 0xA6,
- 0x76, 0xA5, 0x21, 0x63, 0x48, 0xE6, 0x90, 0x5D, 0xED, 0x90, 0x95, 0x0B, 0x7A, 0x84, 0xBE, 0xB8,
- 0x0D, 0x5E, 0x63, 0x0C, 0x62, 0x26, 0x4C, 0x14, 0x5A, 0xB3, 0xAC, 0x23, 0xA4, 0x74, 0xA7, 0x6F,
- 0x33, 0x30, 0x05, 0x60, 0x01, 0x42, 0xA0, 0x28, 0xB7, 0xEE, 0x19, 0x38, 0xF1, 0x64, 0x80, 0x82,
- 0x43, 0xE1, 0x41, 0x27, 0x1F, 0x1F, 0x90, 0x54, 0x7A, 0xD5, 0x23, 0x2E, 0xD1, 0x3D, 0xCB, 0x28,
- 0xBA, 0x58, 0x7F, 0xDC, 0x7C, 0x91, 0x24, 0xE9, 0x28, 0x51, 0x83, 0x6E, 0xC5, 0x56, 0x21, 0x42,
- 0xED, 0xA0, 0x56, 0x22, 0xA1, 0x40, 0x80, 0x6B, 0xA8, 0xF7, 0x94, 0xCA, 0x13, 0x6B, 0x0C, 0x39,
- 0xD9, 0xFD, 0xE9, 0xF3, 0x6F, 0xA6, 0x9E, 0xFC, 0x70, 0x8A, 0xB3, 0xBC, 0x59, 0x3C, 0x1E, 0x1D,
- 0x6C, 0xF9, 0x7C, 0xAF, 0xF9, 0x88, 0x71, 0x95, 0xEB, 0x57, 0x00, 0xBD, 0x9F, 0x8C, 0x4F, 0xE1,
- 0x24, 0x83, 0xC5, 0x22, 0xEA, 0xFD, 0xD3, 0x0C, 0xE2, 0x17, 0x18, 0x7C, 0x6A, 0x4C, 0xDE, 0x77,
- 0xB4, 0x53, 0x9B, 0x4C, 0x81, 0xCD, 0x23, 0x60, 0xAA, 0x0E, 0x25, 0x73, 0x9C, 0x02, 0x79, 0x32,
- 0x30, 0xDF, 0x74, 0xDF, 0x75, 0x19, 0xF4, 0xA5, 0x14, 0x5C, 0xF7, 0x7A, 0xA8, 0xA5, 0x91, 0x84,
- 0x7C, 0x60, 0x03, 0x06, 0x3B, 0xCD, 0x50, 0xB6, 0x27, 0x9C, 0xFE, 0xB1, 0xDD, 0xCC, 0xD3, 0xB0,
- 0x59, 0x24, 0xB2, 0xCA, 0xE2, 0x1C, 0x81, 0x22, 0x9D, 0x07, 0x8F, 0x8E, 0xB9, 0xBE, 0x4E, 0xFA,
- 0xFC, 0x39, 0x65, 0xBA, 0xBF, 0x9D, 0x12, 0x37, 0x5E, 0x97, 0x7E, 0xF3, 0x89, 0xF5, 0x5D, 0xF5,
- 0xE3, 0x09, 0x8C, 0x62, 0xB5, 0x20, 0x9D, 0x0C, 0x53, 0x8A, 0x68, 0x1B, 0xD2, 0x8F, 0x75, 0x17,
- 0x5D, 0xD4, 0xE5, 0xDA, 0x75, 0x62, 0x19, 0x14, 0x6A, 0x26, 0x2D, 0xEB, 0xF8, 0xAF, 0x37, 0xF0,
- 0x6C, 0xA4, 0x55, 0xB1, 0xBC, 0xE2, 0x33, 0xC0, 0x9A, 0xCA, 0xB0, 0x11, 0x49, 0x4F, 0x68, 0x9B,
- 0x3B, 0x6B, 0x3C, 0xCC, 0x13, 0xF6, 0xC7, 0x85, 0x61, 0x68, 0x42, 0xAE, 0xBB, 0xDD, 0xCD, 0x45,
- 0x16, 0x29, 0x1D, 0xEA, 0xDB, 0xC8, 0x03, 0x94, 0x3C, 0xEE, 0x4F, 0x82, 0x11, 0xC3, 0xEC, 0x28,
- 0xBD, 0x97, 0x05, 0x99, 0xDE, 0xD7, 0xBB, 0x5E, 0x22, 0x1F, 0xD4, 0xEB, 0x64, 0xD9, 0x92, 0xD9,
- 0x85, 0xB7, 0x6A, 0x05, 0x6A, 0xE4, 0x24, 0x41, 0xF1, 0xCD, 0xF0, 0xD8, 0x3F, 0xF8, 0x9E, 0x0E,
- 0xCD, 0x0B, 0x7A, 0x70, 0x6B, 0x5A, 0x75, 0x0A, 0x6A, 0x33, 0x88, 0xEC, 0x17, 0x75, 0x08, 0x70,
- 0x10, 0x2F, 0x24, 0xCF, 0xC4, 0xE9, 0x42, 0x00, 0x61, 0x94, 0xCA, 0x1F, 0x3A, 0x76, 0x06, 0xFA,
- 0xD2, 0x48, 0x81, 0xF0, 0x77, 0x60, 0x03, 0x45, 0xD9, 0x61, 0xF4, 0xA4, 0x6F, 0x3D, 0xD9, 0x30,
- 0xC3, 0x04, 0x6B, 0x54, 0x2A, 0xB7, 0xEC, 0x3B, 0xF4, 0x4B, 0xF5, 0x68, 0x52, 0x26, 0xCE, 0xFF,
- 0x5D, 0x19, 0x91, 0xA0, 0xA3, 0xA5, 0xA9, 0xB1, 0xE0, 0x23, 0xC4, 0x0A, 0x77, 0x4D, 0xF9, 0x51,
- 0x20, 0xA3, 0xA5, 0xA9, 0xB1, 0xC1, 0x00, 0x82, 0x86, 0x8E, 0x7F, 0x5D, 0x19, 0x91, 0xA0, 0xA3,
- 0xC4, 0xEB, 0x54, 0x0B, 0x75, 0x68, 0x52, 0x07, 0x8C, 0x9A, 0x97, 0x8D, 0x79, 0x70, 0x62, 0x46,
- 0xEF, 0x5C, 0x1B, 0x95, 0x89, 0x71, 0x41, 0xE1, 0x21, 0xA1, 0xA1, 0xA1, 0xC0, 0x02, 0x67, 0x4C,
- 0x1A, 0xB6, 0xCF, 0xFD, 0x78, 0x53, 0x24, 0xAB, 0xB5, 0xC9, 0xF1, 0x60, 0x23, 0xA5, 0xC8, 0x12,
- 0x87, 0x6D, 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x6D, 0x58, 0x32, 0xC7, 0x0C, 0x9A, 0x97, 0xAC,
- 0xDA, 0x36, 0xEE, 0x5E, 0x3E, 0xDF, 0x1D, 0xB8, 0xF2, 0x66, 0x2F, 0xBD, 0xF8, 0x72, 0x47, 0xED,
- 0x58, 0x13, 0x85, 0x88, 0x92, 0x87, 0x8C, 0x7B, 0x55, 0x09, 0x90, 0xA2, 0xC6, 0xEF, 0x3D, 0xF8,
- 0x53, 0x24, 0xAB, 0xD4, 0x2A, 0xB7, 0xEC, 0x5A, 0x36, 0xEE, 0x5E, 0x3E, 0xDF, 0x3C, 0xFA, 0x76,
- 0x4F, 0xFD, 0x59, 0x30, 0xE2, 0x46, 0xEF, 0x3D, 0xF8, 0x53, 0x05, 0x69, 0x31, 0xC1, 0x00, 0x82,
- 0x86, 0x8E, 0x7F, 0x5D, 0x19, 0xB0, 0xE2, 0x27, 0xCC, 0xFB, 0x74, 0x4B, 0x14, 0x8B, 0x94, 0x8B,
- 0x75, 0x68, 0x33, 0xC5, 0x08, 0x92, 0x87, 0x8C, 0x9A, 0xB6, 0xCF, 0x1C, 0xBA, 0xD7, 0x0D, 0x98,
- 0xB2, 0xE6, 0x2F, 0xDC, 0x1B, 0x95, 0x89, 0x71, 0x60, 0x23, 0xC4, 0x0A, 0x96, 0x8F, 0x9C, 0xBA,
- 0xF6, 0x6E, 0x3F, 0xFC, 0x5B, 0x15, 0xA8, 0xD2, 0x26, 0xAF, 0xBD, 0xF8, 0x72, 0x66, 0x2F, 0xDC,
- 0x1B, 0xB4, 0xCB, 0x14, 0x8B, 0x94, 0xAA, 0xB7, 0xCD, 0xF9, 0x51, 0x01, 0x80, 0x82, 0x86, 0x6F,
- 0x3D, 0xD9, 0x30, 0xE2, 0x27, 0xCC, 0xFB, 0x74, 0x4B, 0x14, 0xAA, 0xB7, 0xCD, 0xF9, 0x70, 0x43,
- 0x04, 0x6B, 0x35, 0xC9, 0xF1, 0x60, 0x23, 0xA5, 0xC8, 0xF3, 0x45, 0x08, 0x92, 0x87, 0x6D, 0x58,
- 0x32, 0xE6, 0x2F, 0xBD, 0xF8, 0x72, 0x66, 0x4E, 0x1E, 0xBE, 0xFE, 0x7E, 0x7E, 0x7E, 0x5F, 0x1D,
- 0x99, 0x91, 0xA0, 0xA3, 0xC4, 0x0A, 0x77, 0x4D, 0x18, 0x93, 0xA4, 0xAB, 0xD4, 0x0B, 0x75, 0x49,
- 0x10, 0xA2, 0xC6, 0xEF, 0x3D, 0xF8, 0x53, 0x24, 0xAB, 0xB5, 0xE8, 0x33, 0xE4, 0x4A, 0x16, 0xAE,
- 0xDE, 0x1F, 0xBC, 0xDB, 0x15, 0xA8, 0xB3, 0xC5, 0x08, 0x73, 0x45, 0xE9, 0x31, 0xC1, 0xE1, 0x21,
- 0xA1, 0xA1, 0xA1, 0xC0, 0x02, 0x86, 0x6F, 0x5C, 0x3A, 0xD7, 0x0D, 0x98, 0x93, 0xA4, 0xCA, 0x16,
- 0xAE, 0xDE, 0x1F, 0x9D, 0x99, 0xB0, 0xE2, 0x46, 0xEF, 0x3D, 0xF8, 0x72, 0x47, 0x0C, 0x9A, 0xB6,
- 0xCF, 0xFD, 0x59, 0x11, 0xA0, 0xA3, 0xA5, 0xC8, 0xF3, 0x45, 0x08, 0x92, 0x87, 0x6D, 0x39, 0xF0,
- 0x43, 0x04, 0x8A, 0x96, 0xAE, 0xDE, 0x3E, 0xDF, 0x1D, 0x99, 0x91, 0xA0, 0xC2, 0x06, 0x6F, 0x3D,
- 0xF8, 0x72, 0x47, 0x0C, 0x9A, 0x97, 0x8D, 0x98, 0x93, 0x85, 0x88, 0x73, 0x45, 0xE9, 0x31, 0xE0,
- 0x23, 0xA5, 0xA9, 0xD0, 0x03, 0x84, 0x8A, 0x96, 0xAE, 0xDE, 0x1F, 0xBC, 0xDB, 0x15, 0xA8, 0xD2,
- 0x26, 0xCE, 0xFF, 0x5D, 0x19, 0x91, 0x81, 0x80, 0x82, 0x67, 0x2D, 0xD8, 0x13, 0xA4, 0xAB, 0xD4,
- 0x0B, 0x94, 0xAA, 0xB7, 0xCD, 0xF9, 0x51, 0x20, 0xA3, 0xA5, 0xC8, 0xF3, 0x45, 0xE9, 0x50, 0x22,
- 0xC6, 0xEF, 0x5C, 0x3A, 0xD7, 0x0D, 0x98, 0x93, 0x85, 0x88, 0x73, 0x64, 0x4A, 0xF7, 0x4D, 0xF9,
- 0x51, 0x20, 0xA3, 0xC4, 0x0A, 0x96, 0xAE, 0xDE, 0x3E, 0xFE, 0x7E, 0x7E, 0x7E, 0x5F, 0x3C, 0xFA,
- 0x76, 0x4F, 0xFD, 0x78, 0x72, 0x66, 0x2F, 0xBD, 0xD9, 0x30, 0xC3, 0xE5, 0x48, 0x12, 0x87, 0x8C,
- 0x7B, 0x55, 0x28, 0xD2, 0x07, 0x8C, 0x9A, 0x97, 0xAC, 0xDA, 0x17, 0x8D, 0x79, 0x51, 0x20, 0xA3,
- 0xC4, 0xEB, 0x54, 0x0B, 0x94, 0x8B, 0x94, 0xAA, 0xD6, 0x2E, 0xBF, 0xFC, 0x5B, 0x15, 0xA8, 0xD2,
- 0x26, 0xAF, 0xDC, 0x1B, 0xB4, 0xEA, 0x37, 0xEC, 0x3B, 0xF4, 0x6A, 0x37, 0xCD, 0x18, 0x93, 0x85,
- 0x69, 0x31, 0xC1, 0xE1, 0x40, 0xE3, 0x25, 0xC8, 0x12, 0x87, 0x8C, 0x9A, 0xB6, 0xCF, 0xFD, 0x59,
- 0x11, 0xA0, 0xC2, 0x06, 0x8E, 0x7F, 0x5D, 0x38, 0xF2, 0x47, 0x0C, 0x7B, 0x74, 0x6A, 0x37, 0xEC,
- 0x5A, 0x36, 0xEE, 0x3F, 0xFC, 0x7A, 0x76, 0x4F, 0x1C, 0x9B, 0x95, 0x89, 0x71, 0x41, 0x00, 0x63,
- 0x44, 0xEB, 0x54, 0x2A, 0xD6, 0x0F, 0x9C, 0xBA, 0xD7, 0x0D, 0x98, 0x93, 0x85, 0x69, 0x31, 0xC1,
- 0x00, 0x82, 0x86, 0x8E, 0x9E, 0xBE, 0xDF, 0x3C, 0xFA, 0x57, 0x2C, 0xDA, 0x36, 0xEE, 0x3F, 0xFC,
- 0x5B, 0x15, 0x89, 0x71, 0x41, 0x00, 0x82, 0x86, 0x8E, 0x7F, 0x5D, 0x38, 0xF2, 0x47, 0xED, 0x58,
- 0x13, 0xA4, 0xCA, 0xF7, 0x4D, 0xF9, 0x51, 0x01, 0x80, 0x63, 0x44, 0xEB, 0x54, 0x2A, 0xD6, 0x2E,
- 0xBF, 0xDD, 0x19, 0x91, 0xA0, 0xA3, 0xA5, 0xA9, 0xB1, 0xE0, 0x42, 0x06, 0x8E, 0x7F, 0x5D, 0x19,
- 0x91, 0xA0, 0xA3, 0xC4, 0x0A, 0x96, 0x8F, 0x7D, 0x78, 0x72, 0x47, 0x0C, 0x7B, 0x74, 0x6A, 0x56,
- 0x2E, 0xDE, 0x1F, 0xBC, 0xFA, 0x57, 0x0D, 0x79, 0x51, 0x01, 0x61, 0x21, 0xA1, 0xC0, 0xE3, 0x25,
- 0xA9, 0xB1, 0xC1, 0xE1, 0x40, 0x02, 0x67, 0x4C, 0x1A, 0x97, 0x8D, 0x98, 0x93, 0xA4, 0xAB, 0xD4,
- 0x2A, 0xD6, 0x0F, 0x9C, 0x9B, 0xB4, 0xCB, 0x14, 0xAA, 0xB7, 0xCD, 0xF9, 0x51, 0x20, 0xA3, 0xC4,
- 0xEB, 0x35, 0xC9, 0xF1, 0x60, 0x42, 0x06, 0x8E, 0x7F, 0x7C, 0x7A, 0x76, 0x6E, 0x3F, 0xFC, 0x7A,
- 0x76, 0x6E, 0x5E, 0x3E, 0xFE, 0x7E, 0x5F, 0x3C, 0xDB, 0x15, 0x89, 0x71, 0x41, 0xE1, 0x21, 0xC0,
- 0xE3, 0x44, 0xEB, 0x54, 0x2A, 0xB7, 0xCD, 0xF9, 0x70, 0x62, 0x27, 0xAD, 0xD8, 0x32, 0xC7, 0x0C,
- 0x7B, 0x74, 0x4B, 0x14, 0xAA, 0xB7, 0xEC, 0x3B, 0xD5, 0x28, 0xD2, 0x07, 0x6D, 0x39, 0xD1, 0x20,
- 0xC2, 0xE7, 0x4C, 0x1A, 0x97, 0x8D, 0x98, 0xB2, 0xC7, 0x0C, 0x59, 0x28, 0xF3, 0x9B
-};
diff --git a/drivers/sensors/pmw3389.c b/drivers/sensors/pmw3389.c
index 828dafa134..cba94d6c65 100644
--- a/drivers/sensors/pmw3389.c
+++ b/drivers/sensors/pmw3389.c
@@ -1,294 +1,314 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- * Copyright 2019 Sunjun Kim
- * Copyright 2020 Ploopy Corporation
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * 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 2022 Stefan Kerkmann (KarlK90)
+// Copyright 2021 Alabastard (@Alabastard-64)
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// Copyright 2019 Sunjun Kim
+// Copyright 2020 Ploopy Corporation
+// SPDX-License-Identifier: GPL-2.0-or-later
-#include "spi_master.h"
-#include "pmw3389.h"
-#include "wait.h"
-#include "debug.h"
-#include "print.h"
-#include "pmw3389_firmware.h"
+#include "pmw33xx_common.h"
+#include "progmem.h"
-// Registers
-// clang-format off
-#define REG_Product_ID 0x00
-#define REG_Revision_ID 0x01
-#define REG_Motion 0x02
-#define REG_Delta_X_L 0x03
-#define REG_Delta_X_H 0x04
-#define REG_Delta_Y_L 0x05
-#define REG_Delta_Y_H 0x06
-#define REG_SQUAL 0x07
-#define REG_RawData_Sum 0x08
-#define REG_Maximum_RawData 0x09
-#define REG_Minimum_RawData 0x0a
-#define REG_Shutter_Lower 0x0b
-#define REG_Shutter_Upper 0x0c
-#define REG_Ripple_Control 0x0d
-#define REG_Resolution_L 0x0e
-#define REG_Resolution_H 0x0f
-#define REG_Config2 0x10
-#define REG_Angle_Tune 0x11
-#define REG_Frame_Capture 0x12
-#define REG_SROM_Enable 0x13
-#define REG_Run_Downshift 0x14
-#define REG_Rest1_Rate_Lower 0x15
-#define REG_Rest1_Rate_Upper 0x16
-#define REG_Rest1_Downshift 0x17
-#define REG_Rest2_Rate_Lower 0x18
-#define REG_Rest2_Rate_Upper 0x19
-#define REG_Rest2_Downshift 0x1a
-#define REG_Rest3_Rate_Lower 0x1b
-#define REG_Rest3_Rate_Upper 0x1c
-#define REG_Observation 0x24
-#define REG_Data_Out_Lower 0x25
-#define REG_Data_Out_Upper 0x26
-#define REG_SROM_ID 0x2a
-#define REG_Min_SQ_Run 0x2b
-#define REG_RawData_Threshold 0x2c
-#define REG_Control2 0x2d
-#define REG_Config5_L 0x2e
-#define REG_Config5_H 0x2f
-#define REG_Power_Up_Reset 0X3a
-#define REG_Shutdown 0x3b
-#define REG_Inverse_Product_ID 0x3f
-#define REG_LiftCutoff_Cal3 0x41
-#define REG_Angle_Snap 0x42
-#define REG_LiftCutoff_Cal1 0x4a
-#define REG_Motion_Burst 0x50
-#define REG_SROM_Load_Burst 0x62
-#define REG_Lift_Config 0x63
-#define REG_RawData_Burst 0x64
-#define REG_LiftCutoff_Cal2 0x65
-#define REG_LiftCutoff_Cal_Timeout 0x71
-#define REG_LiftCutoff_Cal_Min_Length 0x72
-#define REG_PWM_Period_Cnt 0x73
-#define REG_PWM_Width_Cnt 0x74
-
-#define CPI_STEP 50
-// clang-format on
-
-// limits to 0--319, resulting in a CPI range of 50 -- 16000 (as only steps of 50 are possible).
-#ifndef MAX_CPI
-# define MAX_CPI 0x013f
-#endif
-
-bool _inBurst = false;
-
-#ifdef CONSOLE_ENABLE
-void print_byte(uint8_t byte) {
- dprintf("%c%c%c%c%c%c%c%c|", (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0'));
-}
-#endif
-#define constrain(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)))
-
-bool pmw3389_spi_start(void) {
- bool status = spi_start(PMW3389_CS_PIN, PMW3389_SPI_LSBFIRST, PMW3389_SPI_MODE, PMW3389_SPI_DIVISOR);
- // tNCS-SCLK, 120ns
- wait_us(1);
- return status;
-}
-
-spi_status_t pmw3389_write(uint8_t reg_addr, uint8_t data) {
- pmw3389_spi_start();
-
- if (reg_addr != REG_Motion_Burst) {
- _inBurst = false;
- }
-
- // send address of the register, with MSBit = 1 to indicate it's a write
- spi_status_t status = spi_write(reg_addr | 0x80);
- status = spi_write(data);
-
- // tSCLK-NCS for write operation is 35 us
- wait_us(35);
- spi_stop();
-
- // tSWW/tSWR (=180us) minus tSCLK-NCS. Could be shortened, but is looks like a safe lower bound
- wait_us(145);
- return status;
-}
-
-uint8_t pmw3389_read(uint8_t reg_addr) {
- pmw3389_spi_start();
- // send adress of the register, with MSBit = 0 to indicate it's a read
- spi_write(reg_addr & 0x7f);
- // tSRAD (=160us)
- wait_us(160);
- uint8_t data = spi_read();
-
- // tSCLK-NCS, 120ns
- wait_us(1);
- spi_stop();
-
- // tSRW/tSRR (=20us) minus tSCLK-NCS
- wait_us(19);
- return data;
-}
-
-bool pmw3389_init(void) {
- setPinOutput(PMW3389_CS_PIN);
-
- spi_init();
- _inBurst = false;
-
- spi_stop();
- pmw3389_spi_start();
- spi_stop();
-
- pmw3389_write(REG_Shutdown, 0xb6); // Shutdown first
- wait_ms(300);
-
- pmw3389_spi_start();
- wait_us(40);
- spi_stop();
- wait_us(40);
-
- // power up, need to first drive NCS high then low, see above.
- pmw3389_write(REG_Power_Up_Reset, 0x5a);
- wait_ms(50);
-
- // read registers and discard
- pmw3389_read(REG_Motion);
- pmw3389_read(REG_Delta_X_L);
- pmw3389_read(REG_Delta_X_H);
- pmw3389_read(REG_Delta_Y_L);
- pmw3389_read(REG_Delta_Y_H);
-
- pmw3389_upload_firmware();
-
- spi_stop();
+extern const size_t pmw33xx_number_of_sensors;
- wait_ms(10);
- pmw3389_set_cpi(PMW3389_CPI);
-
- wait_ms(1);
-
- pmw3389_write(REG_Config2, 0x00);
-
- pmw3389_write(REG_Angle_Tune, constrain(ROTATIONAL_TRANSFORM_ANGLE, -127, 127));
-
- pmw3389_write(REG_Lift_Config, PMW3389_LIFTOFF_DISTANCE);
-
- bool init_success = pmw3389_check_signature();
-#ifdef CONSOLE_ENABLE
- if (init_success) {
- dprintf("pmw3389 signature verified");
- } else {
- dprintf("pmw3389 signature verification failed!");
+uint16_t pmw33xx_get_cpi(uint8_t sensor) {
+ if (sensor >= pmw33xx_number_of_sensors) {
+ return 0;
}
-#endif
-
- writePinLow(PMW3389_CS_PIN);
- return init_success;
+ uint16_t cpival = (pmw33xx_read(sensor, REG_Resolution_H) << 8) | pmw33xx_read(sensor, REG_Resolution_L);
+ return (uint16_t)((cpival + 1) & 0xFFFF) * PMW33XX_CPI_STEP;
}
-void pmw3389_upload_firmware(void) {
- // Datasheet claims we need to disable REST mode first, but during startup
- // it's already disabled and we're not turning it on ...
- // pmw3389_write(REG_Config2, 0x00); // disable REST mode
- pmw3389_write(REG_SROM_Enable, 0x1d);
-
- wait_ms(10);
-
- pmw3389_write(REG_SROM_Enable, 0x18);
-
- pmw3389_spi_start();
- spi_write(REG_SROM_Load_Burst | 0x80);
- wait_us(15);
-
- for (uint16_t i = 0; i < FIRMWARE_LENGTH; i++) {
- spi_write(pgm_read_byte(firmware_data + i));
-#ifndef PMW3389_FIRMWARE_UPLOAD_FAST
- wait_us(15);
-#endif
+void pmw33xx_set_cpi(uint8_t sensor, uint16_t cpi) {
+ if (sensor >= pmw33xx_number_of_sensors) {
+ return;
}
- wait_us(200);
-
- pmw3389_read(REG_SROM_ID);
- pmw3389_write(REG_Config2, 0x00);
-}
-
-bool pmw3389_check_signature(void) {
- uint8_t pid = pmw3389_read(REG_Product_ID);
- uint8_t iv_pid = pmw3389_read(REG_Inverse_Product_ID);
- uint8_t SROM_ver = pmw3389_read(REG_SROM_ID);
- return (pid == firmware_signature[0] && iv_pid == firmware_signature[1] && SROM_ver == firmware_signature[2]); // signature for SROM 0x04
-}
-uint16_t pmw3389_get_cpi(void) {
- uint16_t cpival = (pmw3389_read(REG_Resolution_H) << 8) | pmw3389_read(REG_Resolution_L);
- return (uint16_t)((cpival + 1) & 0xffff) * CPI_STEP;
-}
-
-void pmw3389_set_cpi(uint16_t cpi) {
- uint16_t cpival = constrain((cpi / CPI_STEP) - 1, 0, MAX_CPI);
+ uint16_t cpival = CONSTRAIN((cpi / PMW33XX_CPI_STEP) - 1, 0, (PMW33XX_CPI_MAX / PMW33XX_CPI_STEP) - 1U);
// Sets upper byte first for more consistent setting of cpi
- pmw3389_write(REG_Resolution_H, (cpival >> 8) & 0xff);
- pmw3389_write(REG_Resolution_L, cpival & 0xff);
+ pmw33xx_write(sensor, REG_Resolution_H, (cpival >> 8) & 0xFF);
+ pmw33xx_write(sensor, REG_Resolution_L, cpival & 0xFF);
}
-report_pmw3389_t pmw3389_read_burst(void) {
- report_pmw3389_t report = {0};
-
- if (!_inBurst) {
-#ifdef CONSOLE_ENABLE
- dprintf("burst on");
-#endif
- pmw3389_write(REG_Motion_Burst, 0x00);
- _inBurst = true;
- }
-
- pmw3389_spi_start();
- spi_write(REG_Motion_Burst);
- wait_us(35); // waits for tSRAD_MOTBR
-
- report.motion = spi_read();
- spi_read(); // skip Observation
- // delta registers
- report.dx = spi_read();
- report.mdx = spi_read();
- report.dy = spi_read();
- report.mdy = spi_read();
-
- if (report.motion & 0b111) { // panic recovery, sometimes burst mode works weird.
- _inBurst = false;
- }
-
- spi_stop();
-
-#ifdef CONSOLE_ENABLE
- if (debug_mouse) {
- print_byte(report.motion);
- print_byte(report.dx);
- print_byte(report.mdx);
- print_byte(report.dy);
- print_byte(report.mdy);
- dprintf("\n");
- }
-#endif
+// PID, Inverse PID, SROM version
+const uint8_t pmw33xx_firmware_signature[3] PROGMEM = {0x42, 0xBD, 0x04};
- report.isMotion = (report.motion & 0x80) != 0;
- report.isOnSurface = (report.motion & 0x08) == 0;
- report.dx |= (report.mdx << 8);
- report.dx = report.dx * -1;
- report.dy |= (report.mdy << 8);
- report.dy = report.dy * -1;
+// Firmware Blob for PMW3389
+// clang-format off
+const uint8_t pmw33xx_firmware_data[PMW33XX_FIRMWARE_LENGTH] PROGMEM = {
+ 0x01, 0xe8, 0xba, 0x26, 0x0b, 0xb2, 0xbe, 0xfe, 0x7e, 0x5f, 0x3c, 0xdb, 0x15, 0xa8, 0xb3,
+ 0xe4, 0x2b, 0xb5, 0xe8, 0x53, 0x07, 0x6d, 0x3b, 0xd1, 0x20, 0xc2, 0x06, 0x6f, 0x3d, 0xd9,
+ 0x11, 0xa0, 0xc2, 0xe7, 0x2d, 0xb9, 0xd1, 0x20, 0xa3, 0xa5, 0xc8, 0xf3, 0x64, 0x4a, 0xf7,
+ 0x4d, 0x18, 0x93, 0xa4, 0xca, 0xf7, 0x6c, 0x5a, 0x36, 0xee, 0x5e, 0x3e, 0xfe, 0x7e, 0x7e,
+ 0x5f, 0x1d, 0x99, 0xb0, 0xc3, 0xe5, 0x29, 0xd3, 0x03, 0x65, 0x48, 0x12, 0x87, 0x6d, 0x58,
+ 0x32, 0xe6, 0x2f, 0xdc, 0x3a, 0xf2, 0x4f, 0xfd, 0x59, 0x11, 0x81, 0x61, 0x21, 0xc0, 0x02,
+ 0x86, 0x8e, 0x7f, 0x5d, 0x38, 0xf2, 0x47, 0x0c, 0x7b, 0x55, 0x28, 0xb3, 0xe4, 0x4a, 0x16,
+ 0xab, 0xbf, 0xdd, 0x38, 0xf2, 0x66, 0x4e, 0xff, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xa5, 0xc8,
+ 0x12, 0xa6, 0xaf, 0xdc, 0x3a, 0xd1, 0x41, 0x60, 0x75, 0x58, 0x24, 0x92, 0xd4, 0x72, 0x6c,
+ 0xe0, 0x2f, 0xfd, 0x23, 0x8d, 0x1c, 0x5b, 0xb2, 0x97, 0x36, 0x3d, 0x0b, 0xa2, 0x49, 0xb1,
+ 0x58, 0xf2, 0x1f, 0xc0, 0xcb, 0xf8, 0x41, 0x4f, 0xcd, 0x1e, 0x6b, 0x39, 0xa7, 0x2b, 0xe9,
+ 0x30, 0x16, 0x83, 0xd2, 0x0e, 0x47, 0x8f, 0xe3, 0xb1, 0xdf, 0xa2, 0x15, 0xdb, 0x5d, 0x30,
+ 0xc5, 0x1a, 0xab, 0x31, 0x99, 0xf3, 0xfa, 0xb2, 0x86, 0x69, 0xad, 0x7a, 0xe8, 0xa7, 0x18,
+ 0x6a, 0xcc, 0xc8, 0x65, 0x23, 0x87, 0xa8, 0x5f, 0xf5, 0x21, 0x59, 0x75, 0x09, 0x71, 0x45,
+ 0x55, 0x25, 0x4b, 0xda, 0xa1, 0xc3, 0xf7, 0x41, 0xab, 0x59, 0xd9, 0x74, 0x12, 0x55, 0x5f,
+ 0xbc, 0xaf, 0xd9, 0xfd, 0xb0, 0x1e, 0xa3, 0x0f, 0xff, 0xde, 0x11, 0x16, 0x6a, 0xae, 0x0e,
+ 0xe1, 0x5d, 0x3c, 0x10, 0x43, 0x9a, 0xa1, 0x0b, 0x24, 0x8f, 0x0d, 0x7f, 0x0b, 0x5e, 0x4c,
+ 0x42, 0xa4, 0x84, 0x2c, 0x40, 0xd0, 0x55, 0x39, 0xe6, 0x4b, 0xf8, 0x9b, 0x2f, 0xdc, 0x28,
+ 0xff, 0xfa, 0xb5, 0x85, 0x19, 0xe5, 0x28, 0xa1, 0x77, 0xaa, 0x73, 0xf3, 0x03, 0xc7, 0x62,
+ 0xa6, 0x91, 0x18, 0xc9, 0xb0, 0xcd, 0x05, 0xdc, 0xca, 0x81, 0x26, 0x1a, 0x47, 0x40, 0xda,
+ 0x36, 0x7d, 0x6a, 0x53, 0xc8, 0x5a, 0x77, 0x5d, 0x19, 0xa4, 0x1b, 0x23, 0x83, 0xd0, 0xb2,
+ 0xaa, 0x0e, 0xbf, 0x77, 0x4e, 0x3a, 0x3b, 0x59, 0x00, 0x31, 0x0d, 0x02, 0x1b, 0x88, 0x7a,
+ 0xd4, 0xbd, 0x9d, 0xcc, 0x58, 0x04, 0x69, 0xf6, 0x3b, 0xca, 0x42, 0xe2, 0xfd, 0xc3, 0x3d,
+ 0x39, 0xc5, 0xd0, 0x71, 0xe4, 0xc8, 0xb7, 0x3e, 0x3f, 0xc8, 0xe9, 0xca, 0xc9, 0x3f, 0x04,
+ 0x4e, 0x1b, 0x79, 0xca, 0xa5, 0x61, 0xc2, 0xed, 0x1d, 0xa6, 0xda, 0x5a, 0xe9, 0x7f, 0x65,
+ 0x8c, 0xbe, 0x12, 0x6e, 0xa4, 0x5b, 0x33, 0x2f, 0x84, 0x28, 0x9c, 0x1c, 0x88, 0x2d, 0xff,
+ 0x07, 0xbf, 0xa6, 0xd7, 0x5a, 0x88, 0x86, 0xb0, 0x3f, 0xf6, 0x31, 0x5b, 0x11, 0x6d, 0xf5,
+ 0x58, 0xeb, 0x58, 0x02, 0x9e, 0xb5, 0x9a, 0xb1, 0xff, 0x25, 0x9d, 0x8b, 0x4f, 0xb6, 0x0a,
+ 0xf9, 0xea, 0x3e, 0x3f, 0x21, 0x09, 0x65, 0x21, 0x22, 0xfe, 0x3d, 0x4e, 0x11, 0x5b, 0x9e,
+ 0x5a, 0x59, 0x8b, 0xdd, 0xd8, 0xce, 0xd6, 0xd9, 0x59, 0xd2, 0x1e, 0xfd, 0xef, 0x0d, 0x1b,
+ 0xd9, 0x61, 0x7f, 0xd7, 0x2d, 0xad, 0x62, 0x09, 0xe5, 0x22, 0x63, 0xea, 0xc7, 0x31, 0xd9,
+ 0xa1, 0x38, 0x80, 0x5c, 0xa7, 0x32, 0x82, 0xec, 0x1b, 0xa2, 0x49, 0x5a, 0x06, 0xd2, 0x7c,
+ 0xc9, 0x96, 0x57, 0xbb, 0x17, 0x75, 0xfc, 0x7a, 0x8f, 0x0d, 0x77, 0xb5, 0x7a, 0x8e, 0x3e,
+ 0xf4, 0xba, 0x2f, 0x69, 0x13, 0x26, 0xd6, 0xd9, 0x21, 0x60, 0x2f, 0x21, 0x3e, 0x87, 0xee,
+ 0xfd, 0x87, 0x16, 0x0d, 0xc8, 0x08, 0x00, 0x25, 0x71, 0xac, 0x2c, 0x03, 0x2a, 0x37, 0x2d,
+ 0xb3, 0x34, 0x09, 0x91, 0xe3, 0x06, 0x2c, 0x38, 0x37, 0x95, 0x3b, 0x17, 0x7a, 0xaf, 0xac,
+ 0x99, 0x55, 0xab, 0x41, 0x39, 0x5f, 0x8e, 0xa6, 0x43, 0x80, 0x03, 0x88, 0x6f, 0x7d, 0xbd,
+ 0x5a, 0xb4, 0x2b, 0x32, 0x23, 0x5a, 0xa9, 0x31, 0x32, 0x39, 0x4c, 0x5b, 0xf4, 0x6b, 0xaf,
+ 0x66, 0x6f, 0x3c, 0x8e, 0x2d, 0x82, 0x97, 0x9f, 0x4a, 0x01, 0xdc, 0x99, 0x98, 0x00, 0xec,
+ 0x38, 0x7a, 0x79, 0x70, 0xa6, 0x85, 0xd6, 0x21, 0x63, 0x0d, 0x45, 0x9a, 0x2e, 0x5e, 0xa7,
+ 0xb1, 0xea, 0x66, 0x6a, 0xbc, 0x62, 0x2d, 0x7b, 0x7d, 0x85, 0xea, 0x95, 0x2f, 0xc0, 0xe8,
+ 0x6f, 0x35, 0xa0, 0x3a, 0x02, 0x25, 0xbc, 0xb2, 0x5f, 0x5c, 0x43, 0x96, 0xcc, 0x26, 0xd2,
+ 0x16, 0xb4, 0x96, 0x73, 0xd7, 0x13, 0xc7, 0xae, 0x53, 0x15, 0x31, 0x89, 0x68, 0x66, 0x6d,
+ 0x2c, 0x92, 0x1f, 0xcc, 0x5b, 0xa7, 0x8f, 0x5d, 0xbb, 0xc9, 0xdb, 0xe8, 0x3b, 0x9d, 0x61,
+ 0x74, 0x8b, 0x05, 0xa1, 0x58, 0x52, 0x68, 0xee, 0x3d, 0x39, 0x79, 0xa0, 0x9b, 0xdd, 0xe1,
+ 0x55, 0xc9, 0x60, 0xeb, 0xad, 0xb8, 0x5b, 0xc2, 0x5a, 0xb5, 0x2c, 0x18, 0x55, 0xa9, 0x50,
+ 0xc3, 0xf6, 0x72, 0x5f, 0xcc, 0xe2, 0xf4, 0x55, 0xb5, 0xd6, 0xb5, 0x4a, 0x99, 0xa5, 0x28,
+ 0x74, 0x97, 0x18, 0xe8, 0xc0, 0x84, 0x89, 0x50, 0x03, 0x86, 0x4d, 0x1a, 0xb7, 0x09, 0x90,
+ 0xa2, 0x01, 0x04, 0xbb, 0x73, 0x62, 0xcb, 0x97, 0x22, 0x70, 0x5d, 0x52, 0x41, 0x8e, 0xd9,
+ 0x90, 0x15, 0xaa, 0xab, 0x0a, 0x31, 0x65, 0xb4, 0xda, 0xd0, 0xee, 0x24, 0xc9, 0x41, 0x91,
+ 0x1e, 0xbc, 0x46, 0x70, 0x40, 0x9d, 0xda, 0x0e, 0x2a, 0xe4, 0xb2, 0x4c, 0x9f, 0xf2, 0xfc,
+ 0xf3, 0x84, 0x17, 0x44, 0x1e, 0xd7, 0xca, 0x23, 0x1f, 0x3f, 0x5a, 0x22, 0x3d, 0xaf, 0x9b,
+ 0x2d, 0xfc, 0x41, 0xad, 0x26, 0xb4, 0x45, 0x67, 0x0b, 0x80, 0x0e, 0xf9, 0x61, 0x37, 0xec,
+ 0x3b, 0xf4, 0x4b, 0x14, 0xdf, 0x5a, 0x0c, 0x3a, 0x50, 0x0b, 0x14, 0x0c, 0x72, 0xae, 0xc6,
+ 0xc5, 0xec, 0x35, 0x53, 0x2d, 0x59, 0xed, 0x91, 0x74, 0xe2, 0xc4, 0xc8, 0xf2, 0x25, 0x6b,
+ 0x97, 0x6f, 0xc9, 0x76, 0xce, 0xa9, 0xb1, 0x99, 0x8f, 0x5a, 0x92, 0x3b, 0xc4, 0x8d, 0x54,
+ 0x50, 0x40, 0x72, 0xd6, 0x90, 0x83, 0xfc, 0xe5, 0x49, 0x8b, 0x17, 0xf5, 0xfd, 0x6b, 0x8d,
+ 0x32, 0x02, 0xe9, 0x0a, 0xfe, 0xbf, 0x00, 0x6b, 0xa3, 0xad, 0x5f, 0x09, 0x4b, 0x97, 0x2b,
+ 0x00, 0x58, 0x65, 0x2e, 0x07, 0x49, 0x0a, 0x3b, 0x6b, 0x2e, 0x50, 0x6c, 0x1d, 0xac, 0xb7,
+ 0x6a, 0x26, 0xd8, 0x13, 0xa4, 0xca, 0x16, 0xae, 0xab, 0x93, 0xb9, 0x1c, 0x1c, 0xb4, 0x47,
+ 0x6a, 0x38, 0x36, 0x17, 0x27, 0xc9, 0x7f, 0xc7, 0x64, 0xcb, 0x89, 0x58, 0xc5, 0x61, 0xc2,
+ 0xc6, 0xea, 0x15, 0x0b, 0x34, 0x0c, 0x5d, 0x61, 0x76, 0x6e, 0x2b, 0x62, 0x40, 0x92, 0xa3,
+ 0x6c, 0xef, 0xf4, 0xe4, 0xc3, 0xa1, 0xa8, 0xf5, 0x94, 0x79, 0x0d, 0xd1, 0x3d, 0xcb, 0x3d,
+ 0x40, 0xb6, 0xd0, 0xf0, 0x10, 0x54, 0xd8, 0x47, 0x25, 0x51, 0xc5, 0x41, 0x79, 0x00, 0xe5,
+ 0xa0, 0x72, 0xde, 0xbb, 0x3b, 0x62, 0x17, 0xf6, 0xbc, 0x5d, 0x00, 0x76, 0x2e, 0xa7, 0x3b,
+ 0xb6, 0xf1, 0x98, 0x72, 0x59, 0x2a, 0x73, 0xb0, 0x21, 0xd6, 0x49, 0xe0, 0xc0, 0xd5, 0xeb,
+ 0x02, 0x7d, 0x4b, 0x41, 0x28, 0x70, 0x2d, 0xec, 0x2b, 0x71, 0x1f, 0x0b, 0xb9, 0x71, 0x63,
+ 0x06, 0xe6, 0xbc, 0x60, 0xbb, 0xf4, 0x9a, 0x62, 0x43, 0x09, 0x18, 0x4e, 0x93, 0x06, 0x4d,
+ 0x76, 0xfa, 0x7f, 0xbd, 0x02, 0xe4, 0x50, 0x91, 0x12, 0xe5, 0x86, 0xff, 0x64, 0x1e, 0xaf,
+ 0x7e, 0xb3, 0xb2, 0xde, 0x89, 0xc1, 0xa2, 0x6f, 0x40, 0x7b, 0x41, 0x51, 0x63, 0xea, 0x25,
+ 0xd1, 0x97, 0x57, 0x92, 0xa8, 0x45, 0xa1, 0xa5, 0x45, 0x21, 0x43, 0x7f, 0x83, 0x15, 0x29,
+ 0xd0, 0x30, 0x53, 0x32, 0xb4, 0x5a, 0x17, 0x96, 0xbc, 0xc2, 0x68, 0xa9, 0xb7, 0xaf, 0xac,
+ 0xdf, 0xf1, 0xe3, 0x89, 0xba, 0x24, 0x79, 0x54, 0xc6, 0x14, 0x07, 0x1c, 0x1e, 0x0d, 0x3a,
+ 0x6b, 0xe5, 0x3d, 0x4e, 0x10, 0x60, 0x96, 0xec, 0x6c, 0xda, 0x47, 0xae, 0x03, 0x25, 0x39,
+ 0x1d, 0x74, 0xc8, 0xac, 0x6a, 0xf2, 0x6b, 0x05, 0x2a, 0x9a, 0xe7, 0xe8, 0x92, 0xd6, 0xc2,
+ 0x6d, 0xfa, 0xe8, 0xa7, 0x9d, 0x5f, 0x48, 0xc9, 0x75, 0xf1, 0x66, 0x6a, 0xdb, 0x5d, 0x9a,
+ 0xcd, 0x27, 0xdd, 0xb9, 0x24, 0x04, 0x9c, 0x18, 0xc2, 0x6d, 0x0c, 0x91, 0x34, 0x48, 0x42,
+ 0x6f, 0xe9, 0x59, 0x70, 0xc4, 0x7e, 0x81, 0x0e, 0x32, 0x0a, 0x93, 0x48, 0xb0, 0xc0, 0x15,
+ 0x9e, 0x05, 0xac, 0x36, 0x16, 0xcb, 0x59, 0x65, 0xa0, 0x83, 0xdf, 0x3e, 0xda, 0xfb, 0x1d,
+ 0x1a, 0xdb, 0x65, 0xec, 0x9a, 0xc6, 0xc3, 0x8e, 0x3c, 0x45, 0xfd, 0xc8, 0xf5, 0x1c, 0x6a,
+ 0x67, 0x0d, 0x8f, 0x99, 0x7d, 0x30, 0x21, 0x8c, 0xea, 0x22, 0x87, 0x65, 0xc9, 0xb2, 0x4c,
+ 0xe4, 0x1b, 0x46, 0xba, 0x54, 0xbd, 0x7c, 0xca, 0xd5, 0x8f, 0x5b, 0xa5, 0x01, 0x04, 0xd8,
+ 0x0a, 0x16, 0xbf, 0xb9, 0x50, 0x2e, 0x37, 0x2f, 0x64, 0xf3, 0x70, 0x11, 0x02, 0x05, 0x31,
+ 0x9b, 0xa0, 0xb2, 0x01, 0x5e, 0x4f, 0x19, 0xc9, 0xd4, 0xea, 0xa1, 0x79, 0x54, 0x53, 0xa7,
+ 0xde, 0x2f, 0x49, 0xd3, 0xd1, 0x63, 0xb5, 0x03, 0x15, 0x4e, 0xbf, 0x04, 0xb3, 0x26, 0x8b,
+ 0x20, 0xb2, 0x45, 0xcf, 0xcd, 0x5b, 0x82, 0x32, 0x88, 0x61, 0xa7, 0xa8, 0xb2, 0xa0, 0x72,
+ 0x96, 0xc0, 0xdb, 0x2b, 0xe2, 0x5f, 0xba, 0xe3, 0xf5, 0x8a, 0xde, 0xf1, 0x18, 0x01, 0x16,
+ 0x40, 0xd9, 0x86, 0x12, 0x09, 0x18, 0x1b, 0x05, 0x0c, 0xb1, 0xb5, 0x47, 0xe2, 0x43, 0xab,
+ 0xfe, 0x92, 0x63, 0x7e, 0x95, 0x2b, 0xf0, 0xaf, 0xe1, 0xf1, 0xc3, 0x4a, 0xff, 0x2b, 0x09,
+ 0xbb, 0x4a, 0x0e, 0x9a, 0xc4, 0xd8, 0x64, 0x7d, 0x83, 0xa0, 0x4f, 0x44, 0xdb, 0xc4, 0xa8,
+ 0x58, 0xef, 0xfc, 0x9e, 0x77, 0xf9, 0xa6, 0x8f, 0x58, 0x8b, 0x12, 0xf4, 0xe9, 0x81, 0x12,
+ 0x47, 0x51, 0x41, 0x83, 0xef, 0xf6, 0x73, 0xbc, 0x8e, 0x0f, 0x4c, 0x8f, 0x4e, 0x69, 0x90,
+ 0x77, 0x29, 0x5d, 0x92, 0xb0, 0x6d, 0x06, 0x67, 0x29, 0x60, 0xbd, 0x4b, 0x17, 0xc8, 0x89,
+ 0x69, 0x28, 0x29, 0xd6, 0x78, 0xcb, 0x11, 0x4c, 0xba, 0x8b, 0x68, 0xae, 0x7e, 0x9f, 0xef,
+ 0x95, 0xda, 0xe2, 0x9e, 0x7f, 0xe9, 0x55, 0xe5, 0xe1, 0xe2, 0xb7, 0xe6, 0x5f, 0xbb, 0x2c,
+ 0xa2, 0xe6, 0xee, 0xc7, 0x0a, 0x60, 0xa9, 0xd1, 0x80, 0xdf, 0x7f, 0xd6, 0x97, 0xab, 0x1d,
+ 0x22, 0x25, 0xfc, 0x79, 0x23, 0xe0, 0xae, 0xc5, 0xef, 0x16, 0xa4, 0xa1, 0x0f, 0x92, 0xa9,
+ 0xc7, 0xe3, 0x3a, 0x55, 0xdf, 0x62, 0x49, 0xd9, 0xf5, 0x84, 0x49, 0xc5, 0x90, 0x34, 0xd3,
+ 0xe1, 0xac, 0x99, 0x21, 0xb1, 0x02, 0x76, 0x4a, 0xfa, 0xd4, 0xbb, 0xa4, 0x9c, 0xa2, 0xe2,
+ 0xcb, 0x3d, 0x3b, 0x14, 0x75, 0x60, 0xd1, 0x02, 0xb4, 0xa3, 0xb4, 0x72, 0x06, 0xf9, 0x19,
+ 0x9c, 0xe2, 0xe4, 0xa7, 0x0f, 0x25, 0x88, 0xc6, 0x86, 0xd6, 0x8c, 0x74, 0x4e, 0x6e, 0xfc,
+ 0xa8, 0x48, 0x9e, 0xa7, 0x9d, 0x1a, 0x4b, 0x37, 0x09, 0xc8, 0xb0, 0x10, 0xbe, 0x6f, 0xfe,
+ 0xa3, 0xc4, 0x7a, 0xb5, 0x3d, 0xe8, 0x30, 0xf1, 0x0d, 0xa0, 0xb2, 0x44, 0xfc, 0x9b, 0x8c,
+ 0xf8, 0x61, 0xed, 0x81, 0xd1, 0x62, 0x11, 0xb4, 0xe1, 0xd5, 0x39, 0x52, 0x89, 0xd3, 0xa8,
+ 0x49, 0x31, 0xdf, 0xb6, 0xf9, 0x91, 0xf4, 0x1c, 0x9d, 0x09, 0x95, 0x40, 0x56, 0xe7, 0xe3,
+ 0xcd, 0x5c, 0x92, 0xc1, 0x1d, 0x6b, 0xe9, 0x78, 0x6f, 0x8e, 0x94, 0x42, 0x66, 0xa2, 0xaa,
+ 0xd3, 0xc8, 0x2e, 0xe3, 0xf6, 0x07, 0x72, 0x0b, 0x6b, 0x1e, 0x7b, 0xb9, 0x7c, 0xe0, 0xa0,
+ 0xbc, 0xd9, 0x25, 0xdf, 0x87, 0xa8, 0x5f, 0x9c, 0xcc, 0xf0, 0xdb, 0x42, 0x8e, 0x07, 0x31,
+ 0x13, 0x01, 0x66, 0x32, 0xd1, 0xb8, 0xd6, 0xe3, 0x5e, 0x12, 0x76, 0x61, 0xd3, 0x38, 0x89,
+ 0xe6, 0x17, 0x6f, 0xa5, 0xf2, 0x71, 0x0e, 0xa5, 0xe2, 0x88, 0x30, 0xbb, 0xbe, 0x8a, 0xea,
+ 0xc7, 0x62, 0xc4, 0xcf, 0xb8, 0xcd, 0x33, 0x8d, 0x3d, 0x3e, 0xb5, 0x60, 0x3a, 0x03, 0x92,
+ 0xe4, 0x6d, 0x1b, 0xe0, 0xb4, 0x84, 0x08, 0x55, 0x88, 0xa7, 0x3a, 0xb9, 0x3d, 0x43, 0xc3,
+ 0xc0, 0xfa, 0x07, 0x6a, 0xca, 0x94, 0xad, 0x99, 0x55, 0xf1, 0xf1, 0xc0, 0x23, 0x87, 0x1d,
+ 0x3d, 0x1c, 0xd1, 0x66, 0xa0, 0x57, 0x10, 0x52, 0xa2, 0x7f, 0xbe, 0xf9, 0x88, 0xb6, 0x02,
+ 0xbf, 0x08, 0x23, 0xa9, 0x0c, 0x63, 0x17, 0x2a, 0xae, 0xf5, 0xf7, 0xb7, 0x21, 0x83, 0x92,
+ 0x31, 0x23, 0x0d, 0x20, 0xc3, 0xc2, 0x05, 0x21, 0x62, 0x8e, 0x45, 0xe8, 0x14, 0xc1, 0xda,
+ 0x75, 0xb8, 0xf8, 0x92, 0x01, 0xd0, 0x5d, 0x18, 0x9f, 0x99, 0x11, 0x19, 0xf5, 0x35, 0xe8,
+ 0x7f, 0x20, 0x88, 0x8c, 0x05, 0x75, 0xf5, 0xd7, 0x40, 0x17, 0xbb, 0x1e, 0x36, 0x52, 0xd9,
+ 0xa4, 0x9c, 0xc2, 0x9d, 0x42, 0x81, 0xd8, 0xc7, 0x8a, 0xe7, 0x4c, 0x81, 0xe0, 0xb7, 0x57,
+ 0xed, 0x48, 0x8b, 0xf0, 0x97, 0x15, 0x61, 0xd9, 0x2c, 0x7c, 0x45, 0xaf, 0xc2, 0xcd, 0xfc,
+ 0xaa, 0x13, 0xad, 0x59, 0xcc, 0xb2, 0xb2, 0x6e, 0xdd, 0x63, 0x9c, 0x32, 0x0f, 0xec, 0x83,
+ 0xbe, 0x78, 0xac, 0x91, 0x44, 0x1a, 0x1f, 0xea, 0xfd, 0x5d, 0x8e, 0xb4, 0xc0, 0x84, 0xd4,
+ 0xac, 0xb4, 0x87, 0x5f, 0xac, 0xef, 0xdf, 0xcd, 0x12, 0x56, 0xc8, 0xcd, 0xfe, 0xc5, 0xda,
+ 0xd3, 0xc1, 0x69, 0xf3, 0x61, 0x05, 0xea, 0x25, 0xe2, 0x12, 0x05, 0x8f, 0x39, 0x08, 0x08,
+ 0x7c, 0x37, 0xb6, 0x7e, 0x5b, 0xd8, 0xb1, 0x0e, 0xf2, 0xdb, 0x4b, 0xf1, 0xad, 0x90, 0x01,
+ 0x57, 0xcd, 0xa0, 0xb4, 0x52, 0xe8, 0xf3, 0xd7, 0x8a, 0xbd, 0x4f, 0x9f, 0x21, 0x40, 0x72,
+ 0xa4, 0xfc, 0x0b, 0x01, 0x2b, 0x2f, 0xb6, 0x4c, 0x95, 0x2d, 0x35, 0x33, 0x41, 0x6b, 0xa0,
+ 0x93, 0xe7, 0x2c, 0xf2, 0xd3, 0x72, 0x8b, 0xf4, 0x4f, 0x15, 0x3c, 0xaf, 0xd6, 0x12, 0xde,
+ 0x3f, 0x83, 0x3f, 0xff, 0xf8, 0x7f, 0xf6, 0xcc, 0xa6, 0x7f, 0xc9, 0x9a, 0x6e, 0x1f, 0xc1,
+ 0x0c, 0xfb, 0xee, 0x9c, 0xe7, 0xaf, 0xc9, 0x26, 0x54, 0xef, 0xb0, 0x39, 0xef, 0xb2, 0xe9,
+ 0x23, 0xc4, 0xef, 0xd1, 0xa1, 0xa4, 0x25, 0x24, 0x6f, 0x8d, 0x6a, 0xe5, 0x8a, 0x32, 0x3a,
+ 0xaf, 0xfc, 0xda, 0xce, 0x18, 0x25, 0x42, 0x07, 0x4d, 0x45, 0x8b, 0xdf, 0x85, 0xcf, 0x55,
+ 0xb2, 0x24, 0xfe, 0x9c, 0x69, 0x74, 0xa7, 0x6e, 0xa0, 0xce, 0xc0, 0x39, 0xf4, 0x86, 0xc6,
+ 0x8d, 0xae, 0xb9, 0x48, 0x64, 0x13, 0x0b, 0x40, 0x81, 0xa2, 0xc9, 0xa8, 0x85, 0x51, 0xee,
+ 0x9f, 0xcf, 0xa2, 0x8c, 0x19, 0x52, 0x48, 0xe2, 0xc1, 0xa8, 0x58, 0xb4, 0x10, 0x24, 0x06,
+ 0x58, 0x51, 0xfc, 0xb9, 0x12, 0xec, 0xfd, 0x73, 0xb4, 0x6d, 0x84, 0xfa, 0x06, 0x8b, 0x05,
+ 0x0b, 0x2d, 0xd6, 0xd6, 0x1f, 0x29, 0x82, 0x9f, 0x19, 0x12, 0x1e, 0xb2, 0x04, 0x8f, 0x7f,
+ 0x4d, 0xbd, 0x30, 0x2e, 0xe3, 0xe0, 0x88, 0x29, 0xc5, 0x93, 0xd6, 0x6c, 0x1f, 0x29, 0x45,
+ 0x91, 0xa7, 0x58, 0xcd, 0x05, 0x17, 0xd6, 0x6d, 0xb3, 0xca, 0x66, 0xcc, 0x3c, 0x4a, 0x74,
+ 0xfd, 0x08, 0x10, 0xa6, 0x99, 0x92, 0x10, 0xd2, 0x85, 0xab, 0x6e, 0x1d, 0x0e, 0x8b, 0x26,
+ 0x46, 0xd1, 0x6c, 0x84, 0xc0, 0x26, 0x43, 0x59, 0x68, 0xf0, 0x13, 0x1d, 0xfb, 0xe3, 0xd1,
+ 0xd2, 0xb4, 0x71, 0x9e, 0xf2, 0x59, 0x6a, 0x33, 0x29, 0x79, 0xd2, 0xd7, 0x26, 0xf1, 0xae,
+ 0x78, 0x9e, 0x1f, 0x0f, 0x3f, 0xe3, 0xe8, 0xd0, 0x27, 0x78, 0x77, 0xf6, 0xac, 0x9c, 0x56,
+ 0x39, 0x73, 0x8a, 0x6b, 0x2f, 0x34, 0x78, 0xb1, 0x11, 0xdb, 0xa4, 0x5c, 0x80, 0x01, 0x71,
+ 0x6a, 0xc2, 0xd1, 0x2e, 0x5e, 0x76, 0x28, 0x70, 0x93, 0xae, 0x3e, 0x78, 0xb0, 0x1f, 0x0f,
+ 0xda, 0xbf, 0xfb, 0x8a, 0x67, 0x65, 0x4f, 0x91, 0xed, 0x49, 0x75, 0x78, 0x62, 0xa2, 0x93,
+ 0xb5, 0x70, 0x7f, 0x4d, 0x08, 0x4e, 0x79, 0x61, 0xa8, 0x5f, 0x7f, 0xb4, 0x65, 0x9f, 0x91,
+ 0x54, 0x3a, 0xe8, 0x50, 0x33, 0xd3, 0xd5, 0x8a, 0x7c, 0xf3, 0x9e, 0x8b, 0x77, 0x7b, 0xc6,
+ 0xc6, 0x0c, 0x45, 0x95, 0x1f, 0xb0, 0xd0, 0x0b, 0x27, 0x4a, 0xfd, 0xc7, 0xf7, 0x0d, 0x5a,
+ 0x43, 0xc9, 0x7d, 0x35, 0xb0, 0x7d, 0xc4, 0x9c, 0x57, 0x1e, 0x76, 0x0d, 0xf1, 0x95, 0x30,
+ 0x71, 0xcc, 0xb3, 0x66, 0x3b, 0x63, 0xa8, 0x6c, 0xa3, 0x43, 0xa0, 0x24, 0xcc, 0xb7, 0x53,
+ 0xfe, 0xfe, 0xbc, 0x6e, 0x60, 0x89, 0xaf, 0x16, 0x21, 0xc8, 0x91, 0x6a, 0x89, 0xce, 0x80,
+ 0x2c, 0xf1, 0x59, 0xce, 0xc3, 0x60, 0x61, 0x3b, 0x0b, 0x19, 0xfe, 0x99, 0xac, 0x65, 0x90,
+ 0x15, 0x12, 0x05, 0xac, 0x7e, 0xff, 0x98, 0x7b, 0x66, 0x64, 0x0e, 0x4b, 0x5b, 0xaa, 0x8d,
+ 0x3b, 0xd2, 0x56, 0xcf, 0x99, 0x39, 0xee, 0x22, 0x81, 0xd0, 0x60, 0x06, 0x66, 0x20, 0x81,
+ 0x48, 0x3c, 0x6f, 0x3a, 0x77, 0xba, 0xcb, 0x52, 0xac, 0x79, 0x56, 0xaf, 0xe9, 0x16, 0x17,
+ 0x0a, 0xa3, 0x82, 0x08, 0xd5, 0x3c, 0x97, 0xcb, 0x09, 0xff, 0x7f, 0xf9, 0x4f, 0x60, 0x05,
+ 0xb9, 0x53, 0x26, 0xaa, 0xb8, 0x50, 0xaa, 0x19, 0x25, 0xae, 0x5f, 0xea, 0x8a, 0xd0, 0x89,
+ 0x12, 0x80, 0x43, 0x50, 0x24, 0x12, 0x21, 0x14, 0xcd, 0x77, 0xeb, 0x21, 0xcc, 0x5c, 0x09,
+ 0x64, 0xf3, 0xc7, 0xcb, 0xc5, 0x4b, 0xc3, 0xe7, 0xed, 0xe7, 0x86, 0x2c, 0x1d, 0x8e, 0x19,
+ 0x52, 0x9b, 0x2a, 0x0c, 0x18, 0x72, 0x0b, 0x1e, 0x1b, 0xb0, 0x0f, 0x42, 0x99, 0x04, 0xae,
+ 0xd5, 0xb7, 0x89, 0x1a, 0xb9, 0x4f, 0xd6, 0xaf, 0xf3, 0xc9, 0x93, 0x6f, 0xb0, 0x60, 0x83,
+ 0x6e, 0x6b, 0xd1, 0x5f, 0x3f, 0x1a, 0x83, 0x1e, 0x24, 0x00, 0x87, 0xb5, 0x3e, 0xdb, 0xf9,
+ 0x4d, 0xa7, 0x16, 0x2e, 0x19, 0x5b, 0x8f, 0x1b, 0x0d, 0x47, 0x72, 0x42, 0xe9, 0x0a, 0x11,
+ 0x08, 0x2d, 0x88, 0x1c, 0xbc, 0xc7, 0xb4, 0xbe, 0x29, 0x4d, 0x03, 0x5e, 0xec, 0xdf, 0xf3,
+ 0x3d, 0x2f, 0xe8, 0x1d, 0x9a, 0xd2, 0xd1, 0xab, 0x41, 0x3d, 0x87, 0x11, 0x45, 0xb0, 0x0d,
+ 0x46, 0xf5, 0xe8, 0x95, 0x62, 0x1c, 0x68, 0xf7, 0xa6, 0x5b, 0x39, 0x4e, 0xbf, 0x47, 0xba,
+ 0x5d, 0x7f, 0xb7, 0x6a, 0xf4, 0xba, 0x1d, 0x69, 0xf6, 0xa4, 0xe7, 0xe4, 0x6b, 0x3b, 0x0d,
+ 0x23, 0x16, 0x4a, 0xb2, 0x68, 0xf0, 0xb2, 0x0d, 0x09, 0x17, 0x6a, 0x63, 0x8c, 0x83, 0xd3,
+ 0xbd, 0x05, 0xc9, 0xf6, 0xf0, 0xa1, 0x31, 0x0b, 0x2c, 0xac, 0x83, 0xac, 0x80, 0x34, 0x32,
+ 0xb4, 0xec, 0xd0, 0xbc, 0x54, 0x82, 0x9a, 0xc8, 0xf6, 0xa0, 0x7d, 0xc6, 0x79, 0x73, 0xf4,
+ 0x20, 0x99, 0xf3, 0xb4, 0x01, 0xde, 0x91, 0x27, 0xf2, 0xc0, 0xdc, 0x81, 0x00, 0x4e, 0x7e,
+ 0x07, 0x99, 0xc8, 0x3a, 0x51, 0xbc, 0x38, 0xd6, 0x8a, 0xa2, 0xde, 0x3b, 0x6a, 0x8c, 0x1a,
+ 0x7c, 0x81, 0x0f, 0x3a, 0x1f, 0xe4, 0x05, 0x7b, 0x20, 0x35, 0x6b, 0xa5, 0x6a, 0xa7, 0xe7,
+ 0xbc, 0x9c, 0x20, 0xec, 0x00, 0x15, 0xe2, 0x51, 0xaf, 0x77, 0xeb, 0x29, 0x3c, 0x7d, 0x2e,
+ 0x00, 0x5c, 0x81, 0x21, 0xfa, 0x35, 0x6f, 0x40, 0xef, 0xfb, 0xd1, 0x3f, 0xcc, 0x9d, 0x55,
+ 0x53, 0xfb, 0x5a, 0xa5, 0x56, 0x89, 0x0b, 0x52, 0xeb, 0x57, 0x73, 0x4f, 0x1b, 0x67, 0x24,
+ 0xcb, 0xb8, 0x6a, 0x10, 0x69, 0xd6, 0xfb, 0x52, 0x40, 0xff, 0x20, 0xa5, 0xf3, 0x72, 0xe1,
+ 0x3d, 0xa4, 0x8c, 0x81, 0x66, 0x16, 0x0d, 0x5d, 0xad, 0xa8, 0x50, 0x25, 0x78, 0x31, 0x77,
+ 0x0c, 0x57, 0xe4, 0xe9, 0x15, 0x2d, 0xdb, 0x07, 0x87, 0xc8, 0xb0, 0x43, 0xde, 0xfc, 0xfe,
+ 0xa9, 0xeb, 0xf5, 0xb0, 0xd3, 0x7b, 0xe9, 0x1f, 0x6e, 0xca, 0xe4, 0x03, 0x95, 0xc5, 0xd1,
+ 0x59, 0x72, 0x63, 0xf0, 0x86, 0x54, 0xe8, 0x16, 0x62, 0x0b, 0x35, 0x29, 0xc2, 0x68, 0xd0,
+ 0xd6, 0x3e, 0x90, 0x60, 0x57, 0x1d, 0xc9, 0xed, 0x3f, 0xed, 0xb0, 0x2f, 0x7e, 0x97, 0x02,
+ 0x51, 0xec, 0xee, 0x6f, 0x82, 0x74, 0x76, 0x7f, 0xfb, 0xd6, 0xc4, 0xc3, 0xdd, 0xe8, 0xb1,
+ 0x60, 0xfc, 0xc6, 0xb9, 0x0d, 0x6a, 0x33, 0x78, 0xc6, 0xc1, 0xbf, 0x86, 0x2c, 0x50, 0xcc,
+ 0x9a, 0x70, 0x8e, 0x7b, 0xec, 0xab, 0x95, 0xac, 0x53, 0xa0, 0x4b, 0x07, 0x88, 0xaf, 0x42,
+ 0xed, 0x19, 0x8d, 0xf6, 0x32, 0x17, 0x48, 0x47, 0x1d, 0x41, 0x6f, 0xfe, 0x2e, 0xa7, 0x8f,
+ 0x4b, 0xa0, 0x51, 0xf3, 0xbf, 0x02, 0x0a, 0x48, 0x58, 0xf7, 0xa1, 0x6d, 0xea, 0xa5, 0x13,
+ 0x5a, 0x5b, 0xea, 0x0c, 0x9e, 0x52, 0x4f, 0x9e, 0xb9, 0x71, 0x7f, 0x23, 0x83, 0xda, 0x1b,
+ 0x86, 0x9a, 0x41, 0x29, 0xda, 0x70, 0xe7, 0x64, 0xa1, 0x7b, 0xd5, 0x0a, 0x22, 0x0d, 0x5c,
+ 0x40, 0xc4, 0x81, 0x07, 0x25, 0x35, 0x4a, 0x1c, 0x10, 0xdb, 0x45, 0x0a, 0xff, 0x36, 0xd4,
+ 0xe0, 0xeb, 0x5f, 0x68, 0xd6, 0x67, 0xc6, 0xd0, 0x8b, 0x76, 0x1a, 0x7d, 0x59, 0x42, 0xa1,
+ 0xcb, 0x96, 0x4d, 0x84, 0x09, 0x9a, 0x3d, 0xe0, 0x52, 0x85, 0x6e, 0x48, 0x90, 0x85, 0x2a,
+ 0x63, 0xb2, 0x69, 0xd2, 0x00, 0x43, 0x31, 0x37, 0xb3, 0x52, 0xaf, 0x62, 0xfa, 0xc1, 0xe0,
+ 0x03, 0xfb, 0x62, 0xaa, 0x88, 0xc9, 0xb2, 0x2c, 0xd5, 0xa8, 0xf5, 0xa5, 0x4c, 0x12, 0x59,
+ 0x4e, 0x06, 0x5e, 0x9b, 0x15, 0x66, 0x11, 0xb2, 0x27, 0x92, 0xdc, 0x98, 0x59, 0xde, 0xdf,
+ 0xfa, 0x9a, 0x32, 0x2e, 0xc0, 0x5d, 0x3c, 0x33, 0x41, 0x6d, 0xaf, 0xb2, 0x25, 0x23, 0x14,
+ 0xa5, 0x7b, 0xc7, 0x9b, 0x68, 0xf3, 0xda, 0xeb, 0xe3, 0xa9, 0xe2, 0x6f, 0x0e, 0x1d, 0x1c,
+ 0xba, 0x55, 0xb6, 0x34, 0x6a, 0x93, 0x1f, 0x1f, 0xb8, 0x34, 0xc8, 0x84, 0x08, 0xb1, 0x6b,
+ 0x6a, 0x28, 0x74, 0x74, 0xe5, 0xeb, 0x75, 0xe9, 0x7c, 0xd8, 0xba, 0xd8, 0x42, 0xa5, 0xee,
+ 0x1f, 0x80, 0xd9, 0x96, 0xb2, 0x2e, 0xe7, 0xbf, 0xba, 0xeb, 0xd1, 0x69, 0xbb, 0x8f, 0xfd,
+ 0x5a, 0x63, 0x8f, 0x39, 0x7f, 0xdf, 0x1d, 0x37, 0xd2, 0x18, 0x35, 0x9d, 0xb6, 0xcc, 0xe4,
+ 0x27, 0x81, 0x89, 0x38, 0x38, 0x68, 0x33, 0xe7, 0x78, 0xd8, 0x76, 0xf5, 0xee, 0xd0, 0x4a,
+ 0x07, 0x69, 0x19, 0x7a, 0xad, 0x18, 0xb1, 0x94, 0x61, 0x45, 0x53, 0xa2, 0x48, 0xda, 0x96,
+ 0x4a, 0xf9, 0xee, 0x94, 0x2a, 0x1f, 0x6e, 0x18, 0x3c, 0x92, 0x46, 0xd1, 0x1a, 0x28, 0x18,
+ 0x32, 0x1f, 0x3a, 0x45, 0xbe, 0x04, 0x35, 0x92, 0xe5, 0xa3, 0xcb, 0xb5, 0x2e, 0x32, 0x43,
+ 0xac, 0x65, 0x17, 0x89, 0x99, 0x15, 0x03, 0x9e, 0xb1, 0x23, 0x2f, 0xed, 0x76, 0x4d, 0xd8,
+ 0xac, 0x21, 0x40, 0xc4, 0x99, 0x4e, 0x65, 0x71, 0x2c, 0xb3, 0x45, 0xab, 0xfb, 0xe7, 0x72,
+ 0x39, 0x56, 0x30, 0x6d, 0xfb, 0x74, 0xeb, 0x99, 0xf3, 0xcd, 0x57, 0x5c, 0x78, 0x75, 0xe9,
+ 0x8d, 0xc3, 0xa2, 0xfb, 0x5d, 0xe0, 0x90, 0xc5, 0x55, 0xad, 0x91, 0x53, 0x4e, 0x9e, 0xbd,
+ 0x8c, 0x49, 0xa4, 0xa4, 0x69, 0x10, 0x0c, 0xc5, 0x76, 0xe9, 0x25, 0x86, 0x8d, 0x66, 0x23,
+ 0xa8, 0xdb, 0x5c, 0xe8, 0xd9, 0x30, 0xe1, 0x15, 0x7b, 0xc0, 0x99, 0x0f, 0x03, 0xec, 0xaa,
+ 0x12, 0xef, 0xce, 0xd4, 0xea, 0x55, 0x5c, 0x08, 0x86, 0xf4, 0xf4, 0xb0, 0x83, 0x42, 0x95,
+ 0x37, 0xb6, 0x38, 0xe0, 0x2b, 0x54, 0x89, 0xbd, 0x4e, 0x20, 0x9d, 0x3f, 0xc3, 0x4b, 0xb7,
+ 0xec, 0xfa, 0x5a, 0x14, 0x03, 0xcb, 0x64, 0xc8, 0x34, 0x4a, 0x4b, 0x6e, 0xf8, 0x6e, 0x56,
+ 0xf6, 0xdd, 0x5f, 0xa1, 0x24, 0xe2, 0xd4, 0xd0, 0x82, 0x64, 0x1f, 0x8e, 0x9b, 0xfa, 0xb4,
+ 0xcb, 0xdb, 0x0a, 0xe8, 0x15, 0xfc, 0x15, 0xab, 0x4b, 0x18, 0xbf, 0xd4, 0x42, 0x14, 0x48,
+ 0x82, 0x85, 0xdd, 0xeb, 0x49, 0x1b, 0x0b, 0x0b, 0x05, 0xe9, 0xb4, 0xa1, 0x33, 0x0a, 0x5d,
+ 0x0e, 0x6c, 0x4b, 0xc0, 0xd6, 0x6c, 0x7c, 0xfb, 0x69, 0x0b, 0x53, 0x19, 0xe4, 0xf3, 0x35,
+ 0xfc, 0xbe, 0xa1, 0x34, 0x02, 0x09, 0x4f, 0x74, 0x86, 0x92, 0xcd, 0x5d, 0x1a, 0xc1, 0x27,
+ 0x0c, 0xf2, 0xc5, 0xcf, 0xdd, 0x23, 0x93, 0x02, 0xbd, 0x41, 0x5e, 0x42, 0xf0, 0xa0, 0x9d,
+ 0x0c, 0x72, 0xc8, 0xec, 0x32, 0x0a, 0x8a, 0xfd, 0x3d, 0x5a, 0x41, 0x27, 0x0c, 0x88, 0x59,
+ 0xad, 0x94, 0x2e, 0xef, 0x5d, 0x8f, 0xc7, 0xdf, 0x66, 0xe4, 0xdd, 0x56, 0x6c, 0x7b, 0xca,
+ 0x55, 0x81, 0xae, 0xae, 0x5c, 0x1b, 0x1a, 0xab, 0xae, 0x99, 0x8d, 0xcc, 0x42, 0x97, 0x59,
+ 0xf4, 0x14, 0x3f, 0x75, 0xc6, 0xd1, 0x88, 0xba, 0xaa, 0x84, 0x4a, 0xd0, 0x34, 0x08, 0x3b,
+ 0x7d, 0xdb, 0x15, 0x06, 0xb0, 0x5c, 0xbd, 0x40, 0xf5, 0xa8, 0xec, 0xae, 0x36, 0x40, 0xdd,
+ 0x90, 0x1c, 0x3e, 0x0d, 0x7e, 0x73, 0xc7, 0xc2, 0xc5, 0x6a, 0xff, 0x52, 0x05, 0x7f, 0xbe,
+ 0xd0, 0x92, 0xfd, 0xb3, 0x6f, 0xff, 0x5d, 0xb7, 0x97, 0x64, 0x73, 0x7b, 0xca, 0xd1, 0x98,
+ 0x24, 0x6b, 0x0b, 0x01, 0x68, 0xdd, 0x27, 0x85, 0x85, 0xb5, 0x83, 0xc1, 0xe0, 0x50, 0x64,
+ 0xc7, 0xaf, 0xf1, 0xc6, 0x4d, 0xb1, 0xef, 0xc9, 0xb4, 0x0a, 0x6d, 0x65, 0xf3, 0x47, 0xcc,
+ 0xa3, 0x02, 0x21, 0x0c, 0xbe, 0x22, 0x29, 0x05, 0xcf, 0x5f, 0xe8, 0x94, 0x6c, 0xe5, 0xdc,
+ 0xc4, 0xdf, 0xbe, 0x3e, 0xa8, 0xb4, 0x18, 0xb0, 0x99, 0xb8, 0x6f, 0xff, 0x5d, 0xb9, 0xfd,
+ 0x3b, 0x5d, 0x16, 0xbf, 0x3e, 0xd8, 0xb3, 0xd8, 0x08, 0x34, 0xf6, 0x47, 0x35, 0x5b, 0x72,
+ 0x1a, 0x33, 0xad, 0x52, 0x5d, 0xb8, 0xd0, 0x77, 0xc6, 0xab, 0xba, 0x55, 0x09, 0x5f, 0x02,
+ 0xf8, 0xd4, 0x5f, 0x53, 0x06, 0x91, 0xcd, 0x74, 0x42, 0xae, 0x54, 0x91, 0x81, 0x62, 0x13,
+ 0x6f, 0xd8, 0xa9, 0x77, 0xc3, 0x6c, 0xcb, 0xf1, 0x29, 0x5a, 0xcc, 0xda, 0x35, 0xbd, 0x52,
+ 0x23, 0xbe, 0x59, 0xeb, 0x12, 0x6d, 0xb7, 0x53, 0xee, 0xfc, 0xb4, 0x1b, 0x13, 0x5e, 0xba,
+ 0x16, 0x7c, 0xc5, 0xf3, 0xe3, 0x6d, 0x07, 0x78, 0xf5, 0x2b, 0x21, 0x05, 0x88, 0x4c, 0xc0,
+ 0xa1, 0xe3, 0x36, 0x10, 0xf8, 0x1b, 0xd8, 0x17, 0xfb, 0x6a, 0x4e, 0xd8, 0xb3, 0x47, 0x2d,
+ 0x99, 0xbd, 0xbb, 0x5d, 0x37, 0x7d, 0xba, 0xf1, 0xe1, 0x7c, 0xc0, 0xc5, 0x54, 0x62, 0x7f,
+ 0xcf, 0x5a, 0x4a, 0x93, 0xcc, 0xf1, 0x1b, 0x34, 0xc8, 0xa6, 0x05, 0x4c, 0x55, 0x8b, 0x54,
+ 0x84, 0xd5, 0x77, 0xeb, 0xc0, 0x6d, 0x3a, 0x29, 0xbd, 0x75, 0x61, 0x09, 0x9a, 0x2c, 0xbb,
+ 0xf7, 0x18, 0x79, 0x34, 0x90, 0x24, 0xa5, 0x81, 0x70, 0x87, 0xc5, 0x02, 0x7c, 0xba, 0xd4,
+ 0x5e, 0x14, 0x8e, 0xe4, 0xed, 0xa2, 0x61, 0x6a, 0xb9, 0x6e, 0xb5, 0x4a, 0xb9, 0x01, 0x46,
+ 0xf4, 0xcf, 0xbc, 0x09, 0x2f, 0x27, 0x4b, 0xbd, 0x86, 0x7a, 0x10, 0xe1, 0xd4, 0xc8, 0xd9,
+ 0x20, 0x8d, 0x8a, 0x63, 0x00, 0x63, 0x44, 0xeb, 0x54, 0x0b, 0x75, 0x49, 0x10, 0xa2, 0xa7,
+ 0xad, 0xb9, 0xd1, 0x01, 0x80, 0x63, 0x25, 0xc8, 0x12, 0xa6, 0xce, 0x1e, 0xbe, 0xfe, 0x7e,
+ 0x5f, 0x3c, 0xdb, 0x34, 0xea, 0x37, 0xec, 0x3b, 0xd5, 0x28, 0xd2, 0x07, 0x8c, 0x9a, 0xb6,
+ 0xee, 0x5e, 0x3e, 0xdf, 0x1d, 0x99, 0xb0, 0xe2, 0x46, 0xef, 0x5c, 0x1b, 0xb4, 0xea, 0x56,
+ 0x2e, 0xde, 0x1f, 0x9d, 0xb8, 0xd3, 0x24, 0xab, 0xd4, 0x2a, 0xd6, 0x2e, 0xde, 0x1f, 0x9d,
+ 0xb8, 0xf2, 0x66, 0x2f, 0xbd, 0xf8, 0x72, 0x66, 0x4e, 0x1e, 0x9f, 0x9d, 0xb8, 0xf2, 0x47,
+ 0x0c, 0x9a, 0xb6, 0xee, 0x3f, 0xfc, 0x7a, 0x57, 0x0d, 0x79, 0x70, 0x62, 0x27, 0xad, 0xb9,
+ 0xd1, 0x01, 0x61, 0x40, 0x02, 0x67, 0x2d, 0xd8, 0x32, 0xe6, 0x2f, 0xdc, 0x3a, 0xd7, 0x2c,
+ 0xbb, 0xf4, 0x4b, 0xf5, 0x49, 0xf1, 0x60, 0x23, 0xc4, 0x0a, 0x77, 0x4d, 0xf9, 0x51, 0x01,
+ 0x80, 0x63, 0x25, 0xa9, 0xb1, 0xe0, 0x42, 0xe7, 0x4c, 0x1a, 0x97, 0xac, 0xbb, 0xf4, 0x6a,
+ 0x37, 0xcd, 0x18, 0xb2, 0xe6, 0x2f, 0xdc, 0x1b, 0x95, 0xa8, 0xd2, 0x07, 0x6d, 0x58, 0x32,
+ 0xe6, 0x4e, 0x1e, 0x9f, 0xbc, 0xfa, 0x57, 0x0d, 0x79, 0x51, 0x20, 0xc2, 0x06, 0x6f, 0x5c,
+ 0x1b, 0x95, 0xa8, 0xb3, 0xc5, 0xe9, 0x31, 0xe0, 0x23, 0xc4, 0x0a, 0x77, 0x4d, 0x18, 0x93,
+ 0x85, 0x69, 0x31, 0xc1, 0xe1, 0x21, 0xc0, 0xe3, 0x44, 0x0a, 0x77, 0x6c, 0x5a, 0x17, 0x8d,
+ 0x98, 0x93, 0xa4, 0xab, 0xd4, 0x2a, 0xb7, 0xec, 0x5a, 0x17, 0xac, 0xbb, 0xf4, 0x4b, 0x14,
+ 0xaa, 0xb7, 0xec, 0x3b, 0xd5, 0x28, 0xb3, 0xc5, 0xe9, 0x31, 0xc1, 0x00, 0x82, 0x67, 0x4c,
+ 0xfb, 0x55, 0x28, 0xd2, 0x26, 0xaf, 0xbd, 0xd9, 0x11, 0x81, 0x61, 0x21, 0xa1, 0xa1, 0xc0,
+ 0x02, 0x86, 0x6f, 0x5c, 0x1b, 0xb4, 0xcb, 0x14, 0x8b, 0x94, 0xaa, 0xd6, 0x2e, 0xbf, 0xdd,
+ 0x19, 0xb0, 0xe2, 0x46, 0x0e, 0x7f, 0x7c, 0x5b, 0x15, 0x89, 0x90, 0x83, 0x84, 0x6b, 0x54,
+ 0x0b, 0x75, 0x68, 0x52, 0x07, 0x6d, 0x58, 0x32, 0xc7, 0xed, 0x58, 0x32, 0xc7, 0xed, 0x58,
+ 0x32, 0xe6, 0x4e, 0xff, 0x7c, 0x7a, 0x76, 0x6e, 0x3f, 0xdd, 0x38, 0xd3, 0x05, 0x88, 0x92,
+ 0xa6, 0xaf, 0xdc, 0x1b, 0xb4, 0xcb, 0xf5, 0x68, 0x52, 0x07, 0x8c, 0x7b, 0x55, 0x09, 0x90,
+ 0x83, 0x84, 0x6b, 0x54, 0x2a, 0xb7, 0xec, 0x3b, 0xd5, 0x09, 0x90, 0xa2, 0xc6, 0x0e, 0x7f,
+ 0x7c, 0x7a, 0x57, 0x0d, 0x98, 0xb2, 0xc7, 0xed, 0x58, 0x32, 0xc7, 0x0c, 0x7b, 0x74, 0x4b,
+ 0x14, 0x8b, 0x94, 0xaa, 0xb7, 0xcd, 0x18, 0x93, 0xa4, 0xca, 0x16, 0xae, 0xbf, 0xdd, 0x19,
+ 0xb0, 0xe2, 0x46, 0x0e, 0x7f, 0x5d, 0x19, 0x91, 0x81, 0x80, 0x63, 0x44, 0xeb, 0x35, 0xc9,
+ 0x10, 0x83, 0x65, 0x48, 0x12, 0xa6, 0xce, 0x1e, 0x9f, 0xbc, 0xdb, 0x15, 0x89, 0x71, 0x60,
+ 0x23, 0xc4, 0xeb, 0x54, 0x2a, 0xb7, 0xec, 0x5a, 0x36, 0xcf, 0x81, 0x10, 0xac, 0x74
+};
- return report;
-}
+// clang-format off
diff --git a/drivers/sensors/pmw3389.h b/drivers/sensors/pmw3389.h
index db4a763fe3..fafd1e2046 100644
--- a/drivers/sensors/pmw3389.h
+++ b/drivers/sensors/pmw3389.h
@@ -1,76 +1,77 @@
-/* Copyright 2021 Alabastard (@Alabastard-64)
- * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- * Copyright 2019 Sunjun Kim
- * Copyright 2020 Ploopy Corporation
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * 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 2022 Stefan Kerkmann (KarlK90)
+// Copyright 2021 Alabastard (@Alabastard-64)
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// Copyright 2019 Sunjun Kim
+// Copyright 2020 Ploopy Corporation
+// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <stdint.h>
-#ifndef PMW3389_CPI
-# define PMW3389_CPI 2000
+#if !defined(PMW33XX_CPI)
+# define PMW33XX_CPI 2000
#endif
-#ifndef PMW3389_CLOCK_SPEED
-# define PMW3389_CLOCK_SPEED 2000000
-#endif
-
-#ifndef PMW3389_SPI_LSBFIRST
-# define PMW3389_SPI_LSBFIRST false
-#endif
-
-#ifndef PMW3389_SPI_MODE
-# define PMW3389_SPI_MODE 3
-#endif
-
-#ifndef PMW3389_SPI_DIVISOR
-# ifdef __AVR__
-# define PMW3389_SPI_DIVISOR (F_CPU / PMW3389_CLOCK_SPEED)
-# else
-# define PMW3389_SPI_DIVISOR 64
-# endif
-#endif
-
-#ifndef PMW3389_LIFTOFF_DISTANCE
-# define PMW3389_LIFTOFF_DISTANCE 0x02
-#endif
-
-#ifndef ROTATIONAL_TRANSFORM_ANGLE
-# define ROTATIONAL_TRANSFORM_ANGLE 0x00
-#endif
-
-#ifndef PMW3389_CS_PIN
-# error "No chip select pin defined -- missing PMW3389_CS_PIN"
-#endif
+#define PMW33XX_CPI_STEP 50
+#define PMW33XX_CPI_MIN 50
+#define PMW33XX_CPI_MAX 16000
-typedef struct {
- int8_t motion;
- bool isMotion; // True if a motion is detected.
- bool isOnSurface; // True when a chip is on a surface
- int16_t dx; // displacement on x directions. Unit: Count. (CPI * Count = Inch value)
- int8_t mdx;
- int16_t dy; // displacement on y directions.
- int8_t mdy;
-} report_pmw3389_t;
+#define PMW33XX_FIRMWARE_LENGTH 4094
-bool pmw3389_init(void);
-void pmw3389_upload_firmware(void);
-bool pmw3389_check_signature(void);
-uint16_t pmw3389_get_cpi(void);
-void pmw3389_set_cpi(uint16_t cpi);
-/* Reads and clears the current delta values on the sensor */
-report_pmw3389_t pmw3389_read_burst(void);
+// PMW3389 register addresses
+// clang-format off
+#define REG_Product_ID 0x00
+#define REG_Revision_ID 0x01
+#define REG_Motion 0x02
+#define REG_Delta_X_L 0x03
+#define REG_Delta_X_H 0x04
+#define REG_Delta_Y_L 0x05
+#define REG_Delta_Y_H 0x06
+#define REG_SQUAL 0x07
+#define REG_RawData_Sum 0x08
+#define REG_Maximum_RawData 0x09
+#define REG_Minimum_RawData 0x0a
+#define REG_Shutter_Lower 0x0b
+#define REG_Shutter_Upper 0x0c
+#define REG_Ripple_Control 0x0d
+#define REG_Resolution_L 0x0e
+#define REG_Resolution_H 0x0f
+#define REG_Config2 0x10
+#define REG_Angle_Tune 0x11
+#define REG_Frame_Capture 0x12
+#define REG_SROM_Enable 0x13
+#define REG_Run_Downshift 0x14
+#define REG_Rest1_Rate_Lower 0x15
+#define REG_Rest1_Rate_Upper 0x16
+#define REG_Rest1_Downshift 0x17
+#define REG_Rest2_Rate_Lower 0x18
+#define REG_Rest2_Rate_Upper 0x19
+#define REG_Rest2_Downshift 0x1a
+#define REG_Rest3_Rate_Lower 0x1b
+#define REG_Rest3_Rate_Upper 0x1c
+#define REG_Observation 0x24
+#define REG_Data_Out_Lower 0x25
+#define REG_Data_Out_Upper 0x26
+#define REG_SROM_ID 0x2a
+#define REG_Min_SQ_Run 0x2b
+#define REG_RawData_Threshold 0x2c
+#define REG_Control2 0x2d
+#define REG_Config5_L 0x2e
+#define REG_Config5_H 0x2f
+#define REG_Power_Up_Reset 0X3a
+#define REG_Shutdown 0x3b
+#define REG_Inverse_Product_ID 0x3f
+#define REG_LiftCutoff_Cal3 0x41
+#define REG_Angle_Snap 0x42
+#define REG_LiftCutoff_Cal1 0x4a
+#define REG_Motion_Burst 0x50
+#define REG_SROM_Load_Burst 0x62
+#define REG_Lift_Config 0x63
+#define REG_RawData_Burst 0x64
+#define REG_LiftCutoff_Cal2 0x65
+#define REG_LiftCutoff_Cal_Timeout 0x71
+#define REG_LiftCutoff_Cal_Min_Length 0x72
+#define REG_PWM_Period_Cnt 0x73
+#define REG_PWM_Width_Cnt 0x74
+// clang-format on
diff --git a/drivers/sensors/pmw3389_firmware.h b/drivers/sensors/pmw3389_firmware.h
deleted file mode 100644
index cd9638b605..0000000000
--- a/drivers/sensors/pmw3389_firmware.h
+++ /dev/null
@@ -1,307 +0,0 @@
-/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
- * Copyright 2019 Sunjun Kim
- * Copyright 2020 Ploopy Corporation
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include "progmem.h"
-
-// PID, Inverse PID, SROM version
-const uint8_t firmware_signature[] PROGMEM = {0x42, 0xBD, 0x04};
-
-#define FIRMWARE_LENGTH 4094
-
-// Firmware Blob for PMW3389
-
-// clang-format off
-const uint8_t firmware_data[FIRMWARE_LENGTH] PROGMEM = {
- 0x01, 0xe8, 0xba, 0x26, 0x0b, 0xb2, 0xbe, 0xfe, 0x7e, 0x5f, 0x3c, 0xdb, 0x15, 0xa8, 0xb3,
- 0xe4, 0x2b, 0xb5, 0xe8, 0x53, 0x07, 0x6d, 0x3b, 0xd1, 0x20, 0xc2, 0x06, 0x6f, 0x3d, 0xd9,
- 0x11, 0xa0, 0xc2, 0xe7, 0x2d, 0xb9, 0xd1, 0x20, 0xa3, 0xa5, 0xc8, 0xf3, 0x64, 0x4a, 0xf7,
- 0x4d, 0x18, 0x93, 0xa4, 0xca, 0xf7, 0x6c, 0x5a, 0x36, 0xee, 0x5e, 0x3e, 0xfe, 0x7e, 0x7e,
- 0x5f, 0x1d, 0x99, 0xb0, 0xc3, 0xe5, 0x29, 0xd3, 0x03, 0x65, 0x48, 0x12, 0x87, 0x6d, 0x58,
- 0x32, 0xe6, 0x2f, 0xdc, 0x3a, 0xf2, 0x4f, 0xfd, 0x59, 0x11, 0x81, 0x61, 0x21, 0xc0, 0x02,
- 0x86, 0x8e, 0x7f, 0x5d, 0x38, 0xf2, 0x47, 0x0c, 0x7b, 0x55, 0x28, 0xb3, 0xe4, 0x4a, 0x16,
- 0xab, 0xbf, 0xdd, 0x38, 0xf2, 0x66, 0x4e, 0xff, 0x5d, 0x19, 0x91, 0xa0, 0xa3, 0xa5, 0xc8,
- 0x12, 0xa6, 0xaf, 0xdc, 0x3a, 0xd1, 0x41, 0x60, 0x75, 0x58, 0x24, 0x92, 0xd4, 0x72, 0x6c,
- 0xe0, 0x2f, 0xfd, 0x23, 0x8d, 0x1c, 0x5b, 0xb2, 0x97, 0x36, 0x3d, 0x0b, 0xa2, 0x49, 0xb1,
- 0x58, 0xf2, 0x1f, 0xc0, 0xcb, 0xf8, 0x41, 0x4f, 0xcd, 0x1e, 0x6b, 0x39, 0xa7, 0x2b, 0xe9,
- 0x30, 0x16, 0x83, 0xd2, 0x0e, 0x47, 0x8f, 0xe3, 0xb1, 0xdf, 0xa2, 0x15, 0xdb, 0x5d, 0x30,
- 0xc5, 0x1a, 0xab, 0x31, 0x99, 0xf3, 0xfa, 0xb2, 0x86, 0x69, 0xad, 0x7a, 0xe8, 0xa7, 0x18,
- 0x6a, 0xcc, 0xc8, 0x65, 0x23, 0x87, 0xa8, 0x5f, 0xf5, 0x21, 0x59, 0x75, 0x09, 0x71, 0x45,
- 0x55, 0x25, 0x4b, 0xda, 0xa1, 0xc3, 0xf7, 0x41, 0xab, 0x59, 0xd9, 0x74, 0x12, 0x55, 0x5f,
- 0xbc, 0xaf, 0xd9, 0xfd, 0xb0, 0x1e, 0xa3, 0x0f, 0xff, 0xde, 0x11, 0x16, 0x6a, 0xae, 0x0e,
- 0xe1, 0x5d, 0x3c, 0x10, 0x43, 0x9a, 0xa1, 0x0b, 0x24, 0x8f, 0x0d, 0x7f, 0x0b, 0x5e, 0x4c,
- 0x42, 0xa4, 0x84, 0x2c, 0x40, 0xd0, 0x55, 0x39, 0xe6, 0x4b, 0xf8, 0x9b, 0x2f, 0xdc, 0x28,
- 0xff, 0xfa, 0xb5, 0x85, 0x19, 0xe5, 0x28, 0xa1, 0x77, 0xaa, 0x73, 0xf3, 0x03, 0xc7, 0x62,
- 0xa6, 0x91, 0x18, 0xc9, 0xb0, 0xcd, 0x05, 0xdc, 0xca, 0x81, 0x26, 0x1a, 0x47, 0x40, 0xda,
- 0x36, 0x7d, 0x6a, 0x53, 0xc8, 0x5a, 0x77, 0x5d, 0x19, 0xa4, 0x1b, 0x23, 0x83, 0xd0, 0xb2,
- 0xaa, 0x0e, 0xbf, 0x77, 0x4e, 0x3a, 0x3b, 0x59, 0x00, 0x31, 0x0d, 0x02, 0x1b, 0x88, 0x7a,
- 0xd4, 0xbd, 0x9d, 0xcc, 0x58, 0x04, 0x69, 0xf6, 0x3b, 0xca, 0x42, 0xe2, 0xfd, 0xc3, 0x3d,
- 0x39, 0xc5, 0xd0, 0x71, 0xe4, 0xc8, 0xb7, 0x3e, 0x3f, 0xc8, 0xe9, 0xca, 0xc9, 0x3f, 0x04,
- 0x4e, 0x1b, 0x79, 0xca, 0xa5, 0x61, 0xc2, 0xed, 0x1d, 0xa6, 0xda, 0x5a, 0xe9, 0x7f, 0x65,
- 0x8c, 0xbe, 0x12, 0x6e, 0xa4, 0x5b, 0x33, 0x2f, 0x84, 0x28, 0x9c, 0x1c, 0x88, 0x2d, 0xff,
- 0x07, 0xbf, 0xa6, 0xd7, 0x5a, 0x88, 0x86, 0xb0, 0x3f, 0xf6, 0x31, 0x5b, 0x11, 0x6d, 0xf5,
- 0x58, 0xeb, 0x58, 0x02, 0x9e, 0xb5, 0x9a, 0xb1, 0xff, 0x25, 0x9d, 0x8b, 0x4f, 0xb6, 0x0a,
- 0xf9, 0xea, 0x3e, 0x3f, 0x21, 0x09, 0x65, 0x21, 0x22, 0xfe, 0x3d, 0x4e, 0x11, 0x5b, 0x9e,
- 0x5a, 0x59, 0x8b, 0xdd, 0xd8, 0xce, 0xd6, 0xd9, 0x59, 0xd2, 0x1e, 0xfd, 0xef, 0x0d, 0x1b,
- 0xd9, 0x61, 0x7f, 0xd7, 0x2d, 0xad, 0x62, 0x09, 0xe5, 0x22, 0x63, 0xea, 0xc7, 0x31, 0xd9,
- 0xa1, 0x38, 0x80, 0x5c, 0xa7, 0x32, 0x82, 0xec, 0x1b, 0xa2, 0x49, 0x5a, 0x06, 0xd2, 0x7c,
- 0xc9, 0x96, 0x57, 0xbb, 0x17, 0x75, 0xfc, 0x7a, 0x8f, 0x0d, 0x77, 0xb5, 0x7a, 0x8e, 0x3e,
- 0xf4, 0xba, 0x2f, 0x69, 0x13, 0x26, 0xd6, 0xd9, 0x21, 0x60, 0x2f, 0x21, 0x3e, 0x87, 0xee,
- 0xfd, 0x87, 0x16, 0x0d, 0xc8, 0x08, 0x00, 0x25, 0x71, 0xac, 0x2c, 0x03, 0x2a, 0x37, 0x2d,
- 0xb3, 0x34, 0x09, 0x91, 0xe3, 0x06, 0x2c, 0x38, 0x37, 0x95, 0x3b, 0x17, 0x7a, 0xaf, 0xac,
- 0x99, 0x55, 0xab, 0x41, 0x39, 0x5f, 0x8e, 0xa6, 0x43, 0x80, 0x03, 0x88, 0x6f, 0x7d, 0xbd,
- 0x5a, 0xb4, 0x2b, 0x32, 0x23, 0x5a, 0xa9, 0x31, 0x32, 0x39, 0x4c, 0x5b, 0xf4, 0x6b, 0xaf,
- 0x66, 0x6f, 0x3c, 0x8e, 0x2d, 0x82, 0x97, 0x9f, 0x4a, 0x01, 0xdc, 0x99, 0x98, 0x00, 0xec,
- 0x38, 0x7a, 0x79, 0x70, 0xa6, 0x85, 0xd6, 0x21, 0x63, 0x0d, 0x45, 0x9a, 0x2e, 0x5e, 0xa7,
- 0xb1, 0xea, 0x66, 0x6a, 0xbc, 0x62, 0x2d, 0x7b, 0x7d, 0x85, 0xea, 0x95, 0x2f, 0xc0, 0xe8,
- 0x6f, 0x35, 0xa0, 0x3a, 0x02, 0x25, 0xbc, 0xb2, 0x5f, 0x5c, 0x43, 0x96, 0xcc, 0x26, 0xd2,
- 0x16, 0xb4, 0x96, 0x73, 0xd7, 0x13, 0xc7, 0xae, 0x53, 0x15, 0x31, 0x89, 0x68, 0x66, 0x6d,
- 0x2c, 0x92, 0x1f, 0xcc, 0x5b, 0xa7, 0x8f, 0x5d, 0xbb, 0xc9, 0xdb, 0xe8, 0x3b, 0x9d, 0x61,
- 0x74, 0x8b, 0x05, 0xa1, 0x58, 0x52, 0x68, 0xee, 0x3d, 0x39, 0x79, 0xa0, 0x9b, 0xdd, 0xe1,
- 0x55, 0xc9, 0x60, 0xeb, 0xad, 0xb8, 0x5b, 0xc2, 0x5a, 0xb5, 0x2c, 0x18, 0x55, 0xa9, 0x50,
- 0xc3, 0xf6, 0x72, 0x5f, 0xcc, 0xe2, 0xf4, 0x55, 0xb5, 0xd6, 0xb5, 0x4a, 0x99, 0xa5, 0x28,
- 0x74, 0x97, 0x18, 0xe8, 0xc0, 0x84, 0x89, 0x50, 0x03, 0x86, 0x4d, 0x1a, 0xb7, 0x09, 0x90,
- 0xa2, 0x01, 0x04, 0xbb, 0x73, 0x62, 0xcb, 0x97, 0x22, 0x70, 0x5d, 0x52, 0x41, 0x8e, 0xd9,
- 0x90, 0x15, 0xaa, 0xab, 0x0a, 0x31, 0x65, 0xb4, 0xda, 0xd0, 0xee, 0x24, 0xc9, 0x41, 0x91,
- 0x1e, 0xbc, 0x46, 0x70, 0x40, 0x9d, 0xda, 0x0e, 0x2a, 0xe4, 0xb2, 0x4c, 0x9f, 0xf2, 0xfc,
- 0xf3, 0x84, 0x17, 0x44, 0x1e, 0xd7, 0xca, 0x23, 0x1f, 0x3f, 0x5a, 0x22, 0x3d, 0xaf, 0x9b,
- 0x2d, 0xfc, 0x41, 0xad, 0x26, 0xb4, 0x45, 0x67, 0x0b, 0x80, 0x0e, 0xf9, 0x61, 0x37, 0xec,
- 0x3b, 0xf4, 0x4b, 0x14, 0xdf, 0x5a, 0x0c, 0x3a, 0x50, 0x0b, 0x14, 0x0c, 0x72, 0xae, 0xc6,
- 0xc5, 0xec, 0x35, 0x53, 0x2d, 0x59, 0xed, 0x91, 0x74, 0xe2, 0xc4, 0xc8, 0xf2, 0x25, 0x6b,
- 0x97, 0x6f, 0xc9, 0x76, 0xce, 0xa9, 0xb1, 0x99, 0x8f, 0x5a, 0x92, 0x3b, 0xc4, 0x8d, 0x54,
- 0x50, 0x40, 0x72, 0xd6, 0x90, 0x83, 0xfc, 0xe5, 0x49, 0x8b, 0x17, 0xf5, 0xfd, 0x6b, 0x8d,
- 0x32, 0x02, 0xe9, 0x0a, 0xfe, 0xbf, 0x00, 0x6b, 0xa3, 0xad, 0x5f, 0x09, 0x4b, 0x97, 0x2b,
- 0x00, 0x58, 0x65, 0x2e, 0x07, 0x49, 0x0a, 0x3b, 0x6b, 0x2e, 0x50, 0x6c, 0x1d, 0xac, 0xb7,
- 0x6a, 0x26, 0xd8, 0x13, 0xa4, 0xca, 0x16, 0xae, 0xab, 0x93, 0xb9, 0x1c, 0x1c, 0xb4, 0x47,
- 0x6a, 0x38, 0x36, 0x17, 0x27, 0xc9, 0x7f, 0xc7, 0x64, 0xcb, 0x89, 0x58, 0xc5, 0x61, 0xc2,
- 0xc6, 0xea, 0x15, 0x0b, 0x34, 0x0c, 0x5d, 0x61, 0x76, 0x6e, 0x2b, 0x62, 0x40, 0x92, 0xa3,
- 0x6c, 0xef, 0xf4, 0xe4, 0xc3, 0xa1, 0xa8, 0xf5, 0x94, 0x79, 0x0d, 0xd1, 0x3d, 0xcb, 0x3d,
- 0x40, 0xb6, 0xd0, 0xf0, 0x10, 0x54, 0xd8, 0x47, 0x25, 0x51, 0xc5, 0x41, 0x79, 0x00, 0xe5,
- 0xa0, 0x72, 0xde, 0xbb, 0x3b, 0x62, 0x17, 0xf6, 0xbc, 0x5d, 0x00, 0x76, 0x2e, 0xa7, 0x3b,
- 0xb6, 0xf1, 0x98, 0x72, 0x59, 0x2a, 0x73, 0xb0, 0x21, 0xd6, 0x49, 0xe0, 0xc0, 0xd5, 0xeb,
- 0x02, 0x7d, 0x4b, 0x41, 0x28, 0x70, 0x2d, 0xec, 0x2b, 0x71, 0x1f, 0x0b, 0xb9, 0x71, 0x63,
- 0x06, 0xe6, 0xbc, 0x60, 0xbb, 0xf4, 0x9a, 0x62, 0x43, 0x09, 0x18, 0x4e, 0x93, 0x06, 0x4d,
- 0x76, 0xfa, 0x7f, 0xbd, 0x02, 0xe4, 0x50, 0x91, 0x12, 0xe5, 0x86, 0xff, 0x64, 0x1e, 0xaf,
- 0x7e, 0xb3, 0xb2, 0xde, 0x89, 0xc1, 0xa2, 0x6f, 0x40, 0x7b, 0x41, 0x51, 0x63, 0xea, 0x25,
- 0xd1, 0x97, 0x57, 0x92, 0xa8, 0x45, 0xa1, 0xa5, 0x45, 0x21, 0x43, 0x7f, 0x83, 0x15, 0x29,
- 0xd0, 0x30, 0x53, 0x32, 0xb4, 0x5a, 0x17, 0x96, 0xbc, 0xc2, 0x68, 0xa9, 0xb7, 0xaf, 0xac,
- 0xdf, 0xf1, 0xe3, 0x89, 0xba, 0x24, 0x79, 0x54, 0xc6, 0x14, 0x07, 0x1c, 0x1e, 0x0d, 0x3a,
- 0x6b, 0xe5, 0x3d, 0x4e, 0x10, 0x60, 0x96, 0xec, 0x6c, 0xda, 0x47, 0xae, 0x03, 0x25, 0x39,
- 0x1d, 0x74, 0xc8, 0xac, 0x6a, 0xf2, 0x6b, 0x05, 0x2a, 0x9a, 0xe7, 0xe8, 0x92, 0xd6, 0xc2,
- 0x6d, 0xfa, 0xe8, 0xa7, 0x9d, 0x5f, 0x48, 0xc9, 0x75, 0xf1, 0x66, 0x6a, 0xdb, 0x5d, 0x9a,
- 0xcd, 0x27, 0xdd, 0xb9, 0x24, 0x04, 0x9c, 0x18, 0xc2, 0x6d, 0x0c, 0x91, 0x34, 0x48, 0x42,
- 0x6f, 0xe9, 0x59, 0x70, 0xc4, 0x7e, 0x81, 0x0e, 0x32, 0x0a, 0x93, 0x48, 0xb0, 0xc0, 0x15,
- 0x9e, 0x05, 0xac, 0x36, 0x16, 0xcb, 0x59, 0x65, 0xa0, 0x83, 0xdf, 0x3e, 0xda, 0xfb, 0x1d,
- 0x1a, 0xdb, 0x65, 0xec, 0x9a, 0xc6, 0xc3, 0x8e, 0x3c, 0x45, 0xfd, 0xc8, 0xf5, 0x1c, 0x6a,
- 0x67, 0x0d, 0x8f, 0x99, 0x7d, 0x30, 0x21, 0x8c, 0xea, 0x22, 0x87, 0x65, 0xc9, 0xb2, 0x4c,
- 0xe4, 0x1b, 0x46, 0xba, 0x54, 0xbd, 0x7c, 0xca, 0xd5, 0x8f, 0x5b, 0xa5, 0x01, 0x04, 0xd8,
- 0x0a, 0x16, 0xbf, 0xb9, 0x50, 0x2e, 0x37, 0x2f, 0x64, 0xf3, 0x70, 0x11, 0x02, 0x05, 0x31,
- 0x9b, 0xa0, 0xb2, 0x01, 0x5e, 0x4f, 0x19, 0xc9, 0xd4, 0xea, 0xa1, 0x79, 0x54, 0x53, 0xa7,
- 0xde, 0x2f, 0x49, 0xd3, 0xd1, 0x63, 0xb5, 0x03, 0x15, 0x4e, 0xbf, 0x04, 0xb3, 0x26, 0x8b,
- 0x20, 0xb2, 0x45, 0xcf, 0xcd, 0x5b, 0x82, 0x32, 0x88, 0x61, 0xa7, 0xa8, 0xb2, 0xa0, 0x72,
- 0x96, 0xc0, 0xdb, 0x2b, 0xe2, 0x5f, 0xba, 0xe3, 0xf5, 0x8a, 0xde, 0xf1, 0x18, 0x01, 0x16,
- 0x40, 0xd9, 0x86, 0x12, 0x09, 0x18, 0x1b, 0x05, 0x0c, 0xb1, 0xb5, 0x47, 0xe2, 0x43, 0xab,
- 0xfe, 0x92, 0x63, 0x7e, 0x95, 0x2b, 0xf0, 0xaf, 0xe1, 0xf1, 0xc3, 0x4a, 0xff, 0x2b, 0x09,
- 0xbb, 0x4a, 0x0e, 0x9a, 0xc4, 0xd8, 0x64, 0x7d, 0x83, 0xa0, 0x4f, 0x44, 0xdb, 0xc4, 0xa8,
- 0x58, 0xef, 0xfc, 0x9e, 0x77, 0xf9, 0xa6, 0x8f, 0x58, 0x8b, 0x12, 0xf4, 0xe9, 0x81, 0x12,
- 0x47, 0x51, 0x41, 0x83, 0xef, 0xf6, 0x73, 0xbc, 0x8e, 0x0f, 0x4c, 0x8f, 0x4e, 0x69, 0x90,
- 0x77, 0x29, 0x5d, 0x92, 0xb0, 0x6d, 0x06, 0x67, 0x29, 0x60, 0xbd, 0x4b, 0x17, 0xc8, 0x89,
- 0x69, 0x28, 0x29, 0xd6, 0x78, 0xcb, 0x11, 0x4c, 0xba, 0x8b, 0x68, 0xae, 0x7e, 0x9f, 0xef,
- 0x95, 0xda, 0xe2, 0x9e, 0x7f, 0xe9, 0x55, 0xe5, 0xe1, 0xe2, 0xb7, 0xe6, 0x5f, 0xbb, 0x2c,
- 0xa2, 0xe6, 0xee, 0xc7, 0x0a, 0x60, 0xa9, 0xd1, 0x80, 0xdf, 0x7f, 0xd6, 0x97, 0xab, 0x1d,
- 0x22, 0x25, 0xfc, 0x79, 0x23, 0xe0, 0xae, 0xc5, 0xef, 0x16, 0xa4, 0xa1, 0x0f, 0x92, 0xa9,
- 0xc7, 0xe3, 0x3a, 0x55, 0xdf, 0x62, 0x49, 0xd9, 0xf5, 0x84, 0x49, 0xc5, 0x90, 0x34, 0xd3,
- 0xe1, 0xac, 0x99, 0x21, 0xb1, 0x02, 0x76, 0x4a, 0xfa, 0xd4, 0xbb, 0xa4, 0x9c, 0xa2, 0xe2,
- 0xcb, 0x3d, 0x3b, 0x14, 0x75, 0x60, 0xd1, 0x02, 0xb4, 0xa3, 0xb4, 0x72, 0x06, 0xf9, 0x19,
- 0x9c, 0xe2, 0xe4, 0xa7, 0x0f, 0x25, 0x88, 0xc6, 0x86, 0xd6, 0x8c, 0x74, 0x4e, 0x6e, 0xfc,
- 0xa8, 0x48, 0x9e, 0xa7, 0x9d, 0x1a, 0x4b, 0x37, 0x09, 0xc8, 0xb0, 0x10, 0xbe, 0x6f, 0xfe,
- 0xa3, 0xc4, 0x7a, 0xb5, 0x3d, 0xe8, 0x30, 0xf1, 0x0d, 0xa0, 0xb2, 0x44, 0xfc, 0x9b, 0x8c,
- 0xf8, 0x61, 0xed, 0x81, 0xd1, 0x62, 0x11, 0xb4, 0xe1, 0xd5, 0x39, 0x52, 0x89, 0xd3, 0xa8,
- 0x49, 0x31, 0xdf, 0xb6, 0xf9, 0x91, 0xf4, 0x1c, 0x9d, 0x09, 0x95, 0x40, 0x56, 0xe7, 0xe3,
- 0xcd, 0x5c, 0x92, 0xc1, 0x1d, 0x6b, 0xe9, 0x78, 0x6f, 0x8e, 0x94, 0x42, 0x66, 0xa2, 0xaa,
- 0xd3, 0xc8, 0x2e, 0xe3, 0xf6, 0x07, 0x72, 0x0b, 0x6b, 0x1e, 0x7b, 0xb9, 0x7c, 0xe0, 0xa0,
- 0xbc, 0xd9, 0x25, 0xdf, 0x87, 0xa8, 0x5f, 0x9c, 0xcc, 0xf0, 0xdb, 0x42, 0x8e, 0x07, 0x31,
- 0x13, 0x01, 0x66, 0x32, 0xd1, 0xb8, 0xd6, 0xe3, 0x5e, 0x12, 0x76, 0x61, 0xd3, 0x38, 0x89,
- 0xe6, 0x17, 0x6f, 0xa5, 0xf2, 0x71, 0x0e, 0xa5, 0xe2, 0x88, 0x30, 0xbb, 0xbe, 0x8a, 0xea,
- 0xc7, 0x62, 0xc4, 0xcf, 0xb8, 0xcd, 0x33, 0x8d, 0x3d, 0x3e, 0xb5, 0x60, 0x3a, 0x03, 0x92,
- 0xe4, 0x6d, 0x1b, 0xe0, 0xb4, 0x84, 0x08, 0x55, 0x88, 0xa7, 0x3a, 0xb9, 0x3d, 0x43, 0xc3,
- 0xc0, 0xfa, 0x07, 0x6a, 0xca, 0x94, 0xad, 0x99, 0x55, 0xf1, 0xf1, 0xc0, 0x23, 0x87, 0x1d,
- 0x3d, 0x1c, 0xd1, 0x66, 0xa0, 0x57, 0x10, 0x52, 0xa2, 0x7f, 0xbe, 0xf9, 0x88, 0xb6, 0x02,
- 0xbf, 0x08, 0x23, 0xa9, 0x0c, 0x63, 0x17, 0x2a, 0xae, 0xf5, 0xf7, 0xb7, 0x21, 0x83, 0x92,
- 0x31, 0x23, 0x0d, 0x20, 0xc3, 0xc2, 0x05, 0x21, 0x62, 0x8e, 0x45, 0xe8, 0x14, 0xc1, 0xda,
- 0x75, 0xb8, 0xf8, 0x92, 0x01, 0xd0, 0x5d, 0x18, 0x9f, 0x99, 0x11, 0x19, 0xf5, 0x35, 0xe8,
- 0x7f, 0x20, 0x88, 0x8c, 0x05, 0x75, 0xf5, 0xd7, 0x40, 0x17, 0xbb, 0x1e, 0x36, 0x52, 0xd9,
- 0xa4, 0x9c, 0xc2, 0x9d, 0x42, 0x81, 0xd8, 0xc7, 0x8a, 0xe7, 0x4c, 0x81, 0xe0, 0xb7, 0x57,
- 0xed, 0x48, 0x8b, 0xf0, 0x97, 0x15, 0x61, 0xd9, 0x2c, 0x7c, 0x45, 0xaf, 0xc2, 0xcd, 0xfc,
- 0xaa, 0x13, 0xad, 0x59, 0xcc, 0xb2, 0xb2, 0x6e, 0xdd, 0x63, 0x9c, 0x32, 0x0f, 0xec, 0x83,
- 0xbe, 0x78, 0xac, 0x91, 0x44, 0x1a, 0x1f, 0xea, 0xfd, 0x5d, 0x8e, 0xb4, 0xc0, 0x84, 0xd4,
- 0xac, 0xb4, 0x87, 0x5f, 0xac, 0xef, 0xdf, 0xcd, 0x12, 0x56, 0xc8, 0xcd, 0xfe, 0xc5, 0xda,
- 0xd3, 0xc1, 0x69, 0xf3, 0x61, 0x05, 0xea, 0x25, 0xe2, 0x12, 0x05, 0x8f, 0x39, 0x08, 0x08,
- 0x7c, 0x37, 0xb6, 0x7e, 0x5b, 0xd8, 0xb1, 0x0e, 0xf2, 0xdb, 0x4b, 0xf1, 0xad, 0x90, 0x01,
- 0x57, 0xcd, 0xa0, 0xb4, 0x52, 0xe8, 0xf3, 0xd7, 0x8a, 0xbd, 0x4f, 0x9f, 0x21, 0x40, 0x72,
- 0xa4, 0xfc, 0x0b, 0x01, 0x2b, 0x2f, 0xb6, 0x4c, 0x95, 0x2d, 0x35, 0x33, 0x41, 0x6b, 0xa0,
- 0x93, 0xe7, 0x2c, 0xf2, 0xd3, 0x72, 0x8b, 0xf4, 0x4f, 0x15, 0x3c, 0xaf, 0xd6, 0x12, 0xde,
- 0x3f, 0x83, 0x3f, 0xff, 0xf8, 0x7f, 0xf6, 0xcc, 0xa6, 0x7f, 0xc9, 0x9a, 0x6e, 0x1f, 0xc1,
- 0x0c, 0xfb, 0xee, 0x9c, 0xe7, 0xaf, 0xc9, 0x26, 0x54, 0xef, 0xb0, 0x39, 0xef, 0xb2, 0xe9,
- 0x23, 0xc4, 0xef, 0xd1, 0xa1, 0xa4, 0x25, 0x24, 0x6f, 0x8d, 0x6a, 0xe5, 0x8a, 0x32, 0x3a,
- 0xaf, 0xfc, 0xda, 0xce, 0x18, 0x25, 0x42, 0x07, 0x4d, 0x45, 0x8b, 0xdf, 0x85, 0xcf, 0x55,
- 0xb2, 0x24, 0xfe, 0x9c, 0x69, 0x74, 0xa7, 0x6e, 0xa0, 0xce, 0xc0, 0x39, 0xf4, 0x86, 0xc6,
- 0x8d, 0xae, 0xb9, 0x48, 0x64, 0x13, 0x0b, 0x40, 0x81, 0xa2, 0xc9, 0xa8, 0x85, 0x51, 0xee,
- 0x9f, 0xcf, 0xa2, 0x8c, 0x19, 0x52, 0x48, 0xe2, 0xc1, 0xa8, 0x58, 0xb4, 0x10, 0x24, 0x06,
- 0x58, 0x51, 0xfc, 0xb9, 0x12, 0xec, 0xfd, 0x73, 0xb4, 0x6d, 0x84, 0xfa, 0x06, 0x8b, 0x05,
- 0x0b, 0x2d, 0xd6, 0xd6, 0x1f, 0x29, 0x82, 0x9f, 0x19, 0x12, 0x1e, 0xb2, 0x04, 0x8f, 0x7f,
- 0x4d, 0xbd, 0x30, 0x2e, 0xe3, 0xe0, 0x88, 0x29, 0xc5, 0x93, 0xd6, 0x6c, 0x1f, 0x29, 0x45,
- 0x91, 0xa7, 0x58, 0xcd, 0x05, 0x17, 0xd6, 0x6d, 0xb3, 0xca, 0x66, 0xcc, 0x3c, 0x4a, 0x74,
- 0xfd, 0x08, 0x10, 0xa6, 0x99, 0x92, 0x10, 0xd2, 0x85, 0xab, 0x6e, 0x1d, 0x0e, 0x8b, 0x26,
- 0x46, 0xd1, 0x6c, 0x84, 0xc0, 0x26, 0x43, 0x59, 0x68, 0xf0, 0x13, 0x1d, 0xfb, 0xe3, 0xd1,
- 0xd2, 0xb4, 0x71, 0x9e, 0xf2, 0x59, 0x6a, 0x33, 0x29, 0x79, 0xd2, 0xd7, 0x26, 0xf1, 0xae,
- 0x78, 0x9e, 0x1f, 0x0f, 0x3f, 0xe3, 0xe8, 0xd0, 0x27, 0x78, 0x77, 0xf6, 0xac, 0x9c, 0x56,
- 0x39, 0x73, 0x8a, 0x6b, 0x2f, 0x34, 0x78, 0xb1, 0x11, 0xdb, 0xa4, 0x5c, 0x80, 0x01, 0x71,
- 0x6a, 0xc2, 0xd1, 0x2e, 0x5e, 0x76, 0x28, 0x70, 0x93, 0xae, 0x3e, 0x78, 0xb0, 0x1f, 0x0f,
- 0xda, 0xbf, 0xfb, 0x8a, 0x67, 0x65, 0x4f, 0x91, 0xed, 0x49, 0x75, 0x78, 0x62, 0xa2, 0x93,
- 0xb5, 0x70, 0x7f, 0x4d, 0x08, 0x4e, 0x79, 0x61, 0xa8, 0x5f, 0x7f, 0xb4, 0x65, 0x9f, 0x91,
- 0x54, 0x3a, 0xe8, 0x50, 0x33, 0xd3, 0xd5, 0x8a, 0x7c, 0xf3, 0x9e, 0x8b, 0x77, 0x7b, 0xc6,
- 0xc6, 0x0c, 0x45, 0x95, 0x1f, 0xb0, 0xd0, 0x0b, 0x27, 0x4a, 0xfd, 0xc7, 0xf7, 0x0d, 0x5a,
- 0x43, 0xc9, 0x7d, 0x35, 0xb0, 0x7d, 0xc4, 0x9c, 0x57, 0x1e, 0x76, 0x0d, 0xf1, 0x95, 0x30,
- 0x71, 0xcc, 0xb3, 0x66, 0x3b, 0x63, 0xa8, 0x6c, 0xa3, 0x43, 0xa0, 0x24, 0xcc, 0xb7, 0x53,
- 0xfe, 0xfe, 0xbc, 0x6e, 0x60, 0x89, 0xaf, 0x16, 0x21, 0xc8, 0x91, 0x6a, 0x89, 0xce, 0x80,
- 0x2c, 0xf1, 0x59, 0xce, 0xc3, 0x60, 0x61, 0x3b, 0x0b, 0x19, 0xfe, 0x99, 0xac, 0x65, 0x90,
- 0x15, 0x12, 0x05, 0xac, 0x7e, 0xff, 0x98, 0x7b, 0x66, 0x64, 0x0e, 0x4b, 0x5b, 0xaa, 0x8d,
- 0x3b, 0xd2, 0x56, 0xcf, 0x99, 0x39, 0xee, 0x22, 0x81, 0xd0, 0x60, 0x06, 0x66, 0x20, 0x81,
- 0x48, 0x3c, 0x6f, 0x3a, 0x77, 0xba, 0xcb, 0x52, 0xac, 0x79, 0x56, 0xaf, 0xe9, 0x16, 0x17,
- 0x0a, 0xa3, 0x82, 0x08, 0xd5, 0x3c, 0x97, 0xcb, 0x09, 0xff, 0x7f, 0xf9, 0x4f, 0x60, 0x05,
- 0xb9, 0x53, 0x26, 0xaa, 0xb8, 0x50, 0xaa, 0x19, 0x25, 0xae, 0x5f, 0xea, 0x8a, 0xd0, 0x89,
- 0x12, 0x80, 0x43, 0x50, 0x24, 0x12, 0x21, 0x14, 0xcd, 0x77, 0xeb, 0x21, 0xcc, 0x5c, 0x09,
- 0x64, 0xf3, 0xc7, 0xcb, 0xc5, 0x4b, 0xc3, 0xe7, 0xed, 0xe7, 0x86, 0x2c, 0x1d, 0x8e, 0x19,
- 0x52, 0x9b, 0x2a, 0x0c, 0x18, 0x72, 0x0b, 0x1e, 0x1b, 0xb0, 0x0f, 0x42, 0x99, 0x04, 0xae,
- 0xd5, 0xb7, 0x89, 0x1a, 0xb9, 0x4f, 0xd6, 0xaf, 0xf3, 0xc9, 0x93, 0x6f, 0xb0, 0x60, 0x83,
- 0x6e, 0x6b, 0xd1, 0x5f, 0x3f, 0x1a, 0x83, 0x1e, 0x24, 0x00, 0x87, 0xb5, 0x3e, 0xdb, 0xf9,
- 0x4d, 0xa7, 0x16, 0x2e, 0x19, 0x5b, 0x8f, 0x1b, 0x0d, 0x47, 0x72, 0x42, 0xe9, 0x0a, 0x11,
- 0x08, 0x2d, 0x88, 0x1c, 0xbc, 0xc7, 0xb4, 0xbe, 0x29, 0x4d, 0x03, 0x5e, 0xec, 0xdf, 0xf3,
- 0x3d, 0x2f, 0xe8, 0x1d, 0x9a, 0xd2, 0xd1, 0xab, 0x41, 0x3d, 0x87, 0x11, 0x45, 0xb0, 0x0d,
- 0x46, 0xf5, 0xe8, 0x95, 0x62, 0x1c, 0x68, 0xf7, 0xa6, 0x5b, 0x39, 0x4e, 0xbf, 0x47, 0xba,
- 0x5d, 0x7f, 0xb7, 0x6a, 0xf4, 0xba, 0x1d, 0x69, 0xf6, 0xa4, 0xe7, 0xe4, 0x6b, 0x3b, 0x0d,
- 0x23, 0x16, 0x4a, 0xb2, 0x68, 0xf0, 0xb2, 0x0d, 0x09, 0x17, 0x6a, 0x63, 0x8c, 0x83, 0xd3,
- 0xbd, 0x05, 0xc9, 0xf6, 0xf0, 0xa1, 0x31, 0x0b, 0x2c, 0xac, 0x83, 0xac, 0x80, 0x34, 0x32,
- 0xb4, 0xec, 0xd0, 0xbc, 0x54, 0x82, 0x9a, 0xc8, 0xf6, 0xa0, 0x7d, 0xc6, 0x79, 0x73, 0xf4,
- 0x20, 0x99, 0xf3, 0xb4, 0x01, 0xde, 0x91, 0x27, 0xf2, 0xc0, 0xdc, 0x81, 0x00, 0x4e, 0x7e,
- 0x07, 0x99, 0xc8, 0x3a, 0x51, 0xbc, 0x38, 0xd6, 0x8a, 0xa2, 0xde, 0x3b, 0x6a, 0x8c, 0x1a,
- 0x7c, 0x81, 0x0f, 0x3a, 0x1f, 0xe4, 0x05, 0x7b, 0x20, 0x35, 0x6b, 0xa5, 0x6a, 0xa7, 0xe7,
- 0xbc, 0x9c, 0x20, 0xec, 0x00, 0x15, 0xe2, 0x51, 0xaf, 0x77, 0xeb, 0x29, 0x3c, 0x7d, 0x2e,
- 0x00, 0x5c, 0x81, 0x21, 0xfa, 0x35, 0x6f, 0x40, 0xef, 0xfb, 0xd1, 0x3f, 0xcc, 0x9d, 0x55,
- 0x53, 0xfb, 0x5a, 0xa5, 0x56, 0x89, 0x0b, 0x52, 0xeb, 0x57, 0x73, 0x4f, 0x1b, 0x67, 0x24,
- 0xcb, 0xb8, 0x6a, 0x10, 0x69, 0xd6, 0xfb, 0x52, 0x40, 0xff, 0x20, 0xa5, 0xf3, 0x72, 0xe1,
- 0x3d, 0xa4, 0x8c, 0x81, 0x66, 0x16, 0x0d, 0x5d, 0xad, 0xa8, 0x50, 0x25, 0x78, 0x31, 0x77,
- 0x0c, 0x57, 0xe4, 0xe9, 0x15, 0x2d, 0xdb, 0x07, 0x87, 0xc8, 0xb0, 0x43, 0xde, 0xfc, 0xfe,
- 0xa9, 0xeb, 0xf5, 0xb0, 0xd3, 0x7b, 0xe9, 0x1f, 0x6e, 0xca, 0xe4, 0x03, 0x95, 0xc5, 0xd1,
- 0x59, 0x72, 0x63, 0xf0, 0x86, 0x54, 0xe8, 0x16, 0x62, 0x0b, 0x35, 0x29, 0xc2, 0x68, 0xd0,
- 0xd6, 0x3e, 0x90, 0x60, 0x57, 0x1d, 0xc9, 0xed, 0x3f, 0xed, 0xb0, 0x2f, 0x7e, 0x97, 0x02,
- 0x51, 0xec, 0xee, 0x6f, 0x82, 0x74, 0x76, 0x7f, 0xfb, 0xd6, 0xc4, 0xc3, 0xdd, 0xe8, 0xb1,
- 0x60, 0xfc, 0xc6, 0xb9, 0x0d, 0x6a, 0x33, 0x78, 0xc6, 0xc1, 0xbf, 0x86, 0x2c, 0x50, 0xcc,
- 0x9a, 0x70, 0x8e, 0x7b, 0xec, 0xab, 0x95, 0xac, 0x53, 0xa0, 0x4b, 0x07, 0x88, 0xaf, 0x42,
- 0xed, 0x19, 0x8d, 0xf6, 0x32, 0x17, 0x48, 0x47, 0x1d, 0x41, 0x6f, 0xfe, 0x2e, 0xa7, 0x8f,
- 0x4b, 0xa0, 0x51, 0xf3, 0xbf, 0x02, 0x0a, 0x48, 0x58, 0xf7, 0xa1, 0x6d, 0xea, 0xa5, 0x13,
- 0x5a, 0x5b, 0xea, 0x0c, 0x9e, 0x52, 0x4f, 0x9e, 0xb9, 0x71, 0x7f, 0x23, 0x83, 0xda, 0x1b,
- 0x86, 0x9a, 0x41, 0x29, 0xda, 0x70, 0xe7, 0x64, 0xa1, 0x7b, 0xd5, 0x0a, 0x22, 0x0d, 0x5c,
- 0x40, 0xc4, 0x81, 0x07, 0x25, 0x35, 0x4a, 0x1c, 0x10, 0xdb, 0x45, 0x0a, 0xff, 0x36, 0xd4,
- 0xe0, 0xeb, 0x5f, 0x68, 0xd6, 0x67, 0xc6, 0xd0, 0x8b, 0x76, 0x1a, 0x7d, 0x59, 0x42, 0xa1,
- 0xcb, 0x96, 0x4d, 0x84, 0x09, 0x9a, 0x3d, 0xe0, 0x52, 0x85, 0x6e, 0x48, 0x90, 0x85, 0x2a,
- 0x63, 0xb2, 0x69, 0xd2, 0x00, 0x43, 0x31, 0x37, 0xb3, 0x52, 0xaf, 0x62, 0xfa, 0xc1, 0xe0,
- 0x03, 0xfb, 0x62, 0xaa, 0x88, 0xc9, 0xb2, 0x2c, 0xd5, 0xa8, 0xf5, 0xa5, 0x4c, 0x12, 0x59,
- 0x4e, 0x06, 0x5e, 0x9b, 0x15, 0x66, 0x11, 0xb2, 0x27, 0x92, 0xdc, 0x98, 0x59, 0xde, 0xdf,
- 0xfa, 0x9a, 0x32, 0x2e, 0xc0, 0x5d, 0x3c, 0x33, 0x41, 0x6d, 0xaf, 0xb2, 0x25, 0x23, 0x14,
- 0xa5, 0x7b, 0xc7, 0x9b, 0x68, 0xf3, 0xda, 0xeb, 0xe3, 0xa9, 0xe2, 0x6f, 0x0e, 0x1d, 0x1c,
- 0xba, 0x55, 0xb6, 0x34, 0x6a, 0x93, 0x1f, 0x1f, 0xb8, 0x34, 0xc8, 0x84, 0x08, 0xb1, 0x6b,
- 0x6a, 0x28, 0x74, 0x74, 0xe5, 0xeb, 0x75, 0xe9, 0x7c, 0xd8, 0xba, 0xd8, 0x42, 0xa5, 0xee,
- 0x1f, 0x80, 0xd9, 0x96, 0xb2, 0x2e, 0xe7, 0xbf, 0xba, 0xeb, 0xd1, 0x69, 0xbb, 0x8f, 0xfd,
- 0x5a, 0x63, 0x8f, 0x39, 0x7f, 0xdf, 0x1d, 0x37, 0xd2, 0x18, 0x35, 0x9d, 0xb6, 0xcc, 0xe4,
- 0x27, 0x81, 0x89, 0x38, 0x38, 0x68, 0x33, 0xe7, 0x78, 0xd8, 0x76, 0xf5, 0xee, 0xd0, 0x4a,
- 0x07, 0x69, 0x19, 0x7a, 0xad, 0x18, 0xb1, 0x94, 0x61, 0x45, 0x53, 0xa2, 0x48, 0xda, 0x96,
- 0x4a, 0xf9, 0xee, 0x94, 0x2a, 0x1f, 0x6e, 0x18, 0x3c, 0x92, 0x46, 0xd1, 0x1a, 0x28, 0x18,
- 0x32, 0x1f, 0x3a, 0x45, 0xbe, 0x04, 0x35, 0x92, 0xe5, 0xa3, 0xcb, 0xb5, 0x2e, 0x32, 0x43,
- 0xac, 0x65, 0x17, 0x89, 0x99, 0x15, 0x03, 0x9e, 0xb1, 0x23, 0x2f, 0xed, 0x76, 0x4d, 0xd8,
- 0xac, 0x21, 0x40, 0xc4, 0x99, 0x4e, 0x65, 0x71, 0x2c, 0xb3, 0x45, 0xab, 0xfb, 0xe7, 0x72,
- 0x39, 0x56, 0x30, 0x6d, 0xfb, 0x74, 0xeb, 0x99, 0xf3, 0xcd, 0x57, 0x5c, 0x78, 0x75, 0xe9,
- 0x8d, 0xc3, 0xa2, 0xfb, 0x5d, 0xe0, 0x90, 0xc5, 0x55, 0xad, 0x91, 0x53, 0x4e, 0x9e, 0xbd,
- 0x8c, 0x49, 0xa4, 0xa4, 0x69, 0x10, 0x0c, 0xc5, 0x76, 0xe9, 0x25, 0x86, 0x8d, 0x66, 0x23,
- 0xa8, 0xdb, 0x5c, 0xe8, 0xd9, 0x30, 0xe1, 0x15, 0x7b, 0xc0, 0x99, 0x0f, 0x03, 0xec, 0xaa,
- 0x12, 0xef, 0xce, 0xd4, 0xea, 0x55, 0x5c, 0x08, 0x86, 0xf4, 0xf4, 0xb0, 0x83, 0x42, 0x95,
- 0x37, 0xb6, 0x38, 0xe0, 0x2b, 0x54, 0x89, 0xbd, 0x4e, 0x20, 0x9d, 0x3f, 0xc3, 0x4b, 0xb7,
- 0xec, 0xfa, 0x5a, 0x14, 0x03, 0xcb, 0x64, 0xc8, 0x34, 0x4a, 0x4b, 0x6e, 0xf8, 0x6e, 0x56,
- 0xf6, 0xdd, 0x5f, 0xa1, 0x24, 0xe2, 0xd4, 0xd0, 0x82, 0x64, 0x1f, 0x8e, 0x9b, 0xfa, 0xb4,
- 0xcb, 0xdb, 0x0a, 0xe8, 0x15, 0xfc, 0x15, 0xab, 0x4b, 0x18, 0xbf, 0xd4, 0x42, 0x14, 0x48,
- 0x82, 0x85, 0xdd, 0xeb, 0x49, 0x1b, 0x0b, 0x0b, 0x05, 0xe9, 0xb4, 0xa1, 0x33, 0x0a, 0x5d,
- 0x0e, 0x6c, 0x4b, 0xc0, 0xd6, 0x6c, 0x7c, 0xfb, 0x69, 0x0b, 0x53, 0x19, 0xe4, 0xf3, 0x35,
- 0xfc, 0xbe, 0xa1, 0x34, 0x02, 0x09, 0x4f, 0x74, 0x86, 0x92, 0xcd, 0x5d, 0x1a, 0xc1, 0x27,
- 0x0c, 0xf2, 0xc5, 0xcf, 0xdd, 0x23, 0x93, 0x02, 0xbd, 0x41, 0x5e, 0x42, 0xf0, 0xa0, 0x9d,
- 0x0c, 0x72, 0xc8, 0xec, 0x32, 0x0a, 0x8a, 0xfd, 0x3d, 0x5a, 0x41, 0x27, 0x0c, 0x88, 0x59,
- 0xad, 0x94, 0x2e, 0xef, 0x5d, 0x8f, 0xc7, 0xdf, 0x66, 0xe4, 0xdd, 0x56, 0x6c, 0x7b, 0xca,
- 0x55, 0x81, 0xae, 0xae, 0x5c, 0x1b, 0x1a, 0xab, 0xae, 0x99, 0x8d, 0xcc, 0x42, 0x97, 0x59,
- 0xf4, 0x14, 0x3f, 0x75, 0xc6, 0xd1, 0x88, 0xba, 0xaa, 0x84, 0x4a, 0xd0, 0x34, 0x08, 0x3b,
- 0x7d, 0xdb, 0x15, 0x06, 0xb0, 0x5c, 0xbd, 0x40, 0xf5, 0xa8, 0xec, 0xae, 0x36, 0x40, 0xdd,
- 0x90, 0x1c, 0x3e, 0x0d, 0x7e, 0x73, 0xc7, 0xc2, 0xc5, 0x6a, 0xff, 0x52, 0x05, 0x7f, 0xbe,
- 0xd0, 0x92, 0xfd, 0xb3, 0x6f, 0xff, 0x5d, 0xb7, 0x97, 0x64, 0x73, 0x7b, 0xca, 0xd1, 0x98,
- 0x24, 0x6b, 0x0b, 0x01, 0x68, 0xdd, 0x27, 0x85, 0x85, 0xb5, 0x83, 0xc1, 0xe0, 0x50, 0x64,
- 0xc7, 0xaf, 0xf1, 0xc6, 0x4d, 0xb1, 0xef, 0xc9, 0xb4, 0x0a, 0x6d, 0x65, 0xf3, 0x47, 0xcc,
- 0xa3, 0x02, 0x21, 0x0c, 0xbe, 0x22, 0x29, 0x05, 0xcf, 0x5f, 0xe8, 0x94, 0x6c, 0xe5, 0xdc,
- 0xc4, 0xdf, 0xbe, 0x3e, 0xa8, 0xb4, 0x18, 0xb0, 0x99, 0xb8, 0x6f, 0xff, 0x5d, 0xb9, 0xfd,
- 0x3b, 0x5d, 0x16, 0xbf, 0x3e, 0xd8, 0xb3, 0xd8, 0x08, 0x34, 0xf6, 0x47, 0x35, 0x5b, 0x72,
- 0x1a, 0x33, 0xad, 0x52, 0x5d, 0xb8, 0xd0, 0x77, 0xc6, 0xab, 0xba, 0x55, 0x09, 0x5f, 0x02,
- 0xf8, 0xd4, 0x5f, 0x53, 0x06, 0x91, 0xcd, 0x74, 0x42, 0xae, 0x54, 0x91, 0x81, 0x62, 0x13,
- 0x6f, 0xd8, 0xa9, 0x77, 0xc3, 0x6c, 0xcb, 0xf1, 0x29, 0x5a, 0xcc, 0xda, 0x35, 0xbd, 0x52,
- 0x23, 0xbe, 0x59, 0xeb, 0x12, 0x6d, 0xb7, 0x53, 0xee, 0xfc, 0xb4, 0x1b, 0x13, 0x5e, 0xba,
- 0x16, 0x7c, 0xc5, 0xf3, 0xe3, 0x6d, 0x07, 0x78, 0xf5, 0x2b, 0x21, 0x05, 0x88, 0x4c, 0xc0,
- 0xa1, 0xe3, 0x36, 0x10, 0xf8, 0x1b, 0xd8, 0x17, 0xfb, 0x6a, 0x4e, 0xd8, 0xb3, 0x47, 0x2d,
- 0x99, 0xbd, 0xbb, 0x5d, 0x37, 0x7d, 0xba, 0xf1, 0xe1, 0x7c, 0xc0, 0xc5, 0x54, 0x62, 0x7f,
- 0xcf, 0x5a, 0x4a, 0x93, 0xcc, 0xf1, 0x1b, 0x34, 0xc8, 0xa6, 0x05, 0x4c, 0x55, 0x8b, 0x54,
- 0x84, 0xd5, 0x77, 0xeb, 0xc0, 0x6d, 0x3a, 0x29, 0xbd, 0x75, 0x61, 0x09, 0x9a, 0x2c, 0xbb,
- 0xf7, 0x18, 0x79, 0x34, 0x90, 0x24, 0xa5, 0x81, 0x70, 0x87, 0xc5, 0x02, 0x7c, 0xba, 0xd4,
- 0x5e, 0x14, 0x8e, 0xe4, 0xed, 0xa2, 0x61, 0x6a, 0xb9, 0x6e, 0xb5, 0x4a, 0xb9, 0x01, 0x46,
- 0xf4, 0xcf, 0xbc, 0x09, 0x2f, 0x27, 0x4b, 0xbd, 0x86, 0x7a, 0x10, 0xe1, 0xd4, 0xc8, 0xd9,
- 0x20, 0x8d, 0x8a, 0x63, 0x00, 0x63, 0x44, 0xeb, 0x54, 0x0b, 0x75, 0x49, 0x10, 0xa2, 0xa7,
- 0xad, 0xb9, 0xd1, 0x01, 0x80, 0x63, 0x25, 0xc8, 0x12, 0xa6, 0xce, 0x1e, 0xbe, 0xfe, 0x7e,
- 0x5f, 0x3c, 0xdb, 0x34, 0xea, 0x37, 0xec, 0x3b, 0xd5, 0x28, 0xd2, 0x07, 0x8c, 0x9a, 0xb6,
- 0xee, 0x5e, 0x3e, 0xdf, 0x1d, 0x99, 0xb0, 0xe2, 0x46, 0xef, 0x5c, 0x1b, 0xb4, 0xea, 0x56,
- 0x2e, 0xde, 0x1f, 0x9d, 0xb8, 0xd3, 0x24, 0xab, 0xd4, 0x2a, 0xd6, 0x2e, 0xde, 0x1f, 0x9d,
- 0xb8, 0xf2, 0x66, 0x2f, 0xbd, 0xf8, 0x72, 0x66, 0x4e, 0x1e, 0x9f, 0x9d, 0xb8, 0xf2, 0x47,
- 0x0c, 0x9a, 0xb6, 0xee, 0x3f, 0xfc, 0x7a, 0x57, 0x0d, 0x79, 0x70, 0x62, 0x27, 0xad, 0xb9,
- 0xd1, 0x01, 0x61, 0x40, 0x02, 0x67, 0x2d, 0xd8, 0x32, 0xe6, 0x2f, 0xdc, 0x3a, 0xd7, 0x2c,
- 0xbb, 0xf4, 0x4b, 0xf5, 0x49, 0xf1, 0x60, 0x23, 0xc4, 0x0a, 0x77, 0x4d, 0xf9, 0x51, 0x01,
- 0x80, 0x63, 0x25, 0xa9, 0xb1, 0xe0, 0x42, 0xe7, 0x4c, 0x1a, 0x97, 0xac, 0xbb, 0xf4, 0x6a,
- 0x37, 0xcd, 0x18, 0xb2, 0xe6, 0x2f, 0xdc, 0x1b, 0x95, 0xa8, 0xd2, 0x07, 0x6d, 0x58, 0x32,
- 0xe6, 0x4e, 0x1e, 0x9f, 0xbc, 0xfa, 0x57, 0x0d, 0x79, 0x51, 0x20, 0xc2, 0x06, 0x6f, 0x5c,
- 0x1b, 0x95, 0xa8, 0xb3, 0xc5, 0xe9, 0x31, 0xe0, 0x23, 0xc4, 0x0a, 0x77, 0x4d, 0x18, 0x93,
- 0x85, 0x69, 0x31, 0xc1, 0xe1, 0x21, 0xc0, 0xe3, 0x44, 0x0a, 0x77, 0x6c, 0x5a, 0x17, 0x8d,
- 0x98, 0x93, 0xa4, 0xab, 0xd4, 0x2a, 0xb7, 0xec, 0x5a, 0x17, 0xac, 0xbb, 0xf4, 0x4b, 0x14,
- 0xaa, 0xb7, 0xec, 0x3b, 0xd5, 0x28, 0xb3, 0xc5, 0xe9, 0x31, 0xc1, 0x00, 0x82, 0x67, 0x4c,
- 0xfb, 0x55, 0x28, 0xd2, 0x26, 0xaf, 0xbd, 0xd9, 0x11, 0x81, 0x61, 0x21, 0xa1, 0xa1, 0xc0,
- 0x02, 0x86, 0x6f, 0x5c, 0x1b, 0xb4, 0xcb, 0x14, 0x8b, 0x94, 0xaa, 0xd6, 0x2e, 0xbf, 0xdd,
- 0x19, 0xb0, 0xe2, 0x46, 0x0e, 0x7f, 0x7c, 0x5b, 0x15, 0x89, 0x90, 0x83, 0x84, 0x6b, 0x54,
- 0x0b, 0x75, 0x68, 0x52, 0x07, 0x6d, 0x58, 0x32, 0xc7, 0xed, 0x58, 0x32, 0xc7, 0xed, 0x58,
- 0x32, 0xe6, 0x4e, 0xff, 0x7c, 0x7a, 0x76, 0x6e, 0x3f, 0xdd, 0x38, 0xd3, 0x05, 0x88, 0x92,
- 0xa6, 0xaf, 0xdc, 0x1b, 0xb4, 0xcb, 0xf5, 0x68, 0x52, 0x07, 0x8c, 0x7b, 0x55, 0x09, 0x90,
- 0x83, 0x84, 0x6b, 0x54, 0x2a, 0xb7, 0xec, 0x3b, 0xd5, 0x09, 0x90, 0xa2, 0xc6, 0x0e, 0x7f,
- 0x7c, 0x7a, 0x57, 0x0d, 0x98, 0xb2, 0xc7, 0xed, 0x58, 0x32, 0xc7, 0x0c, 0x7b, 0x74, 0x4b,
- 0x14, 0x8b, 0x94, 0xaa, 0xb7, 0xcd, 0x18, 0x93, 0xa4, 0xca, 0x16, 0xae, 0xbf, 0xdd, 0x19,
- 0xb0, 0xe2, 0x46, 0x0e, 0x7f, 0x5d, 0x19, 0x91, 0x81, 0x80, 0x63, 0x44, 0xeb, 0x35, 0xc9,
- 0x10, 0x83, 0x65, 0x48, 0x12, 0xa6, 0xce, 0x1e, 0x9f, 0xbc, 0xdb, 0x15, 0x89, 0x71, 0x60,
- 0x23, 0xc4, 0xeb, 0x54, 0x2a, 0xb7, 0xec, 0x5a, 0x36, 0xcf, 0x81, 0x10, 0xac, 0x74
-};
-
-// clang-format off
diff --git a/drivers/sensors/pmw33xx_common.c b/drivers/sensors/pmw33xx_common.c
new file mode 100644
index 0000000000..13164cb150
--- /dev/null
+++ b/drivers/sensors/pmw33xx_common.c
@@ -0,0 +1,219 @@
+// Copyright 2022 Daniel Kao (dkao)
+// Copyright 2022 Stefan Kerkmann (KarlK90)
+// Copyright 2022 Ulrich Spörlein (@uqs)
+// Copyright 2021 Alabastard (@Alabastard-64)
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// Copyright 2019 Sunjun Kim
+// Copyright 2020 Ploopy Corporation
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "debug.h"
+#include "pmw33xx_common.h"
+#include "print.h"
+#include "string.h"
+#include "wait.h"
+#include "spi_master.h"
+#include "progmem.h"
+
+extern const uint8_t pmw33xx_firmware_data[PMW33XX_FIRMWARE_LENGTH] PROGMEM;
+extern const uint8_t pmw33xx_firmware_signature[3] PROGMEM;
+
+static const pin_t cs_pins[] = PMW33XX_CS_PINS;
+static bool in_burst[sizeof(cs_pins) / sizeof(pin_t)] = {0};
+
+const size_t pmw33xx_number_of_sensors = sizeof(cs_pins) / sizeof(pin_t);
+
+bool __attribute__((cold)) pmw33xx_upload_firmware(uint8_t sensor);
+bool __attribute__((cold)) pmw33xx_check_signature(uint8_t sensor);
+
+void pmw33xx_set_cpi_all_sensors(uint16_t cpi) {
+ for (uint8_t sensor = 0; sensor < pmw33xx_number_of_sensors; sensor++) {
+ pmw33xx_set_cpi(sensor, cpi);
+ }
+}
+
+bool pmw33xx_spi_start(uint8_t sensor) {
+ if (!spi_start(cs_pins[sensor], false, 3, PMW33XX_SPI_DIVISOR)) {
+ spi_stop();
+ return false;
+ }
+ // tNCS-SCLK, 10ns
+ wait_us(1);
+ return true;
+}
+
+bool pmw33xx_write(uint8_t sensor, uint8_t reg_addr, uint8_t data) {
+ if (!pmw33xx_spi_start(sensor)) {
+ return false;
+ }
+
+ if (reg_addr != REG_Motion_Burst) {
+ in_burst[sensor] = false;
+ }
+
+ // send address of the register, with MSBit = 1 to indicate it's a write
+ uint8_t command[2] = {reg_addr | 0x80, data};
+ if (spi_transmit(command, sizeof(command)) != SPI_STATUS_SUCCESS) {
+ return false;
+ }
+
+ // tSCLK-NCS for write operation is 35us
+ wait_us(35);
+ spi_stop();
+
+ // tSWW/tSWR (=18us) minus tSCLK-NCS. Could be shortened, but it looks like
+ // a safe lower bound
+ wait_us(145);
+ return true;
+}
+
+uint8_t pmw33xx_read(uint8_t sensor, uint8_t reg_addr) {
+ if (!pmw33xx_spi_start(sensor)) {
+ return 0;
+ }
+
+ // send adress of the register, with MSBit = 0 to indicate it's a read
+ spi_write(reg_addr & 0x7f);
+ // tSRAD (=160us)
+ wait_us(160);
+ uint8_t data = spi_read();
+
+ // tSCLK-NCS, 120ns
+ wait_us(1);
+ spi_stop();
+
+ // tSRW/tSRR (=20us) mins tSCLK-NCS
+ wait_us(19);
+ return data;
+}
+
+bool pmw33xx_check_signature(uint8_t sensor) {
+ uint8_t signature_dump[3] = {
+ pmw33xx_read(sensor, REG_Product_ID),
+ pmw33xx_read(sensor, REG_Inverse_Product_ID),
+ pmw33xx_read(sensor, REG_SROM_ID),
+ };
+
+ return memcmp(pmw33xx_firmware_signature, signature_dump, sizeof(signature_dump)) == 0;
+}
+
+bool pmw33xx_upload_firmware(uint8_t sensor) {
+ // Datasheet claims we need to disable REST mode first, but during startup
+ // it's already disabled and we're not turning it on ...
+ // pmw33xx_write(REG_Config2, 0x00); // disable REST mode
+ if (!pmw33xx_write(sensor, REG_SROM_Enable, 0x1d)) {
+ return false;
+ }
+ wait_ms(10);
+ pmw33xx_write(sensor, REG_SROM_Enable, 0x18);
+
+ if (!pmw33xx_spi_start(sensor)) {
+ return false;
+ }
+
+ spi_write(REG_SROM_Load_Burst | 0x80);
+ wait_us(15);
+
+ for (size_t i = 0; i < PMW33XX_FIRMWARE_LENGTH; i++) {
+ spi_write(pgm_read_byte(pmw33xx_firmware_data + i));
+ wait_us(15);
+ }
+ wait_us(200);
+
+ pmw33xx_read(sensor, REG_SROM_ID);
+ pmw33xx_write(sensor, REG_Config2, 0x00);
+
+ return true;
+}
+
+bool pmw33xx_init(uint8_t sensor) {
+ if (sensor >= pmw33xx_number_of_sensors) {
+ return false;
+ }
+ spi_init();
+
+ // power up, need to first drive NCS high then low. the datasheet does not
+ // say for how long, 40us works well in practice.
+ if (!pmw33xx_spi_start(sensor)) {
+ return false;
+ }
+ wait_us(40);
+ spi_stop();
+ wait_us(40);
+
+ if (!pmw33xx_write(sensor, REG_Power_Up_Reset, 0x5a)) {
+ return false;
+ }
+ wait_ms(50);
+
+ // read registers and discard
+ pmw33xx_read(sensor, REG_Motion);
+ pmw33xx_read(sensor, REG_Delta_X_L);
+ pmw33xx_read(sensor, REG_Delta_X_H);
+ pmw33xx_read(sensor, REG_Delta_Y_L);
+ pmw33xx_read(sensor, REG_Delta_Y_H);
+
+ if (!pmw33xx_upload_firmware(sensor)) {
+ dprintf("PMW33XX (%d): firmware upload failed!\n", sensor);
+ return false;
+ }
+
+ spi_stop();
+
+ wait_ms(10);
+ pmw33xx_set_cpi(sensor, PMW33XX_CPI);
+
+ wait_ms(1);
+
+ pmw33xx_write(sensor, REG_Config2, 0x00);
+ pmw33xx_write(sensor, REG_Angle_Tune, CONSTRAIN(ROTATIONAL_TRANSFORM_ANGLE, -127, 127));
+ pmw33xx_write(sensor, REG_Lift_Config, PMW33XX_LIFTOFF_DISTANCE);
+
+ if (!pmw33xx_check_signature(sensor)) {
+ dprintf("PMW33XX (%d): firmware signature verification failed!\n", sensor);
+ return false;
+ }
+
+ return true;
+}
+
+pmw33xx_report_t pmw33xx_read_burst(uint8_t sensor) {
+ pmw33xx_report_t report = {0};
+
+ if (sensor >= pmw33xx_number_of_sensors) {
+ return report;
+ }
+
+ if (!in_burst[sensor]) {
+ dprintf("PMW33XX (%d): burst\n", sensor);
+ if (!pmw33xx_write(sensor, REG_Motion_Burst, 0x00)) {
+ return report;
+ }
+ in_burst[sensor] = true;
+ }
+
+ if (!pmw33xx_spi_start(sensor)) {
+ return report;
+ }
+
+ spi_write(REG_Motion_Burst);
+ wait_us(35); // waits for tSRAD_MOTBR
+
+ spi_receive((uint8_t*)&report, sizeof(report));
+
+ // panic recovery, sometimes burst mode works weird.
+ if (report.motion.w & 0b111) {
+ in_burst[sensor] = false;
+ }
+
+ spi_stop();
+
+ if (debug_config.mouse) {
+ dprintf("PMW33XX (%d): motion: 0x%x dx: %i dy: %i\n", sensor, report.motion.w, report.delta_x, report.delta_y);
+ }
+
+ report.delta_x *= -1;
+ report.delta_y *= -1;
+
+ return report;
+}
diff --git a/drivers/sensors/pmw33xx_common.h b/drivers/sensors/pmw33xx_common.h
new file mode 100644
index 0000000000..c725e80f24
--- /dev/null
+++ b/drivers/sensors/pmw33xx_common.h
@@ -0,0 +1,156 @@
+// Copyright 2022 Daniel Kao (dkao)
+// Copyright 2022 Stefan Kerkmann (KarlK90)
+// Copyright 2022 Ulrich Spörlein (@uqs)
+// Copyright 2021 Alabastard (@Alabastard-64)
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// Copyright 2019 Sunjun Kim
+// Copyright 2020 Ploopy Corporation
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include <stdint.h>
+#include "spi_master.h"
+#include "util.h"
+
+#if defined(POINTING_DEVICE_DRIVER_pmw3360)
+# include "pmw3360.h"
+#elif defined(POINTING_DEVICE_DRIVER_pmw3389)
+# include "pmw3389.h"
+#endif
+
+typedef struct __attribute__((packed)) {
+ union {
+ struct {
+ bool capture_from_raw_data : 1; // FRAME_RData_1st
+ uint8_t operation_mode : 2; // OP_MODE
+ bool is_lifted : 1; // Lift_stat
+ bool raw_data_grab_is_raw_data : 1; // RData_1st
+ uint8_t _reserved : 2; // 1 + Reserved
+ bool is_motion : 1; // MOT
+ } b;
+ uint8_t w;
+ } motion;
+ uint8_t observation;
+ int16_t delta_x; // displacement on x directions. Unit: Count. (CPI * Count = Inch value)
+ int16_t delta_y; // displacement on y directions.
+} pmw33xx_report_t;
+
+_Static_assert(sizeof(pmw33xx_report_t) == 6, "pmw33xx_report_t must be 6 bytes in size");
+_Static_assert(sizeof((pmw33xx_report_t){0}.motion) == 1, "pmw33xx_report_t.motion must be 1 byte in size");
+
+#if !defined(PMW33XX_CLOCK_SPEED)
+# define PMW33XX_CLOCK_SPEED 2000000
+#endif
+
+#if !defined(PMW33XX_SPI_DIVISOR)
+# ifdef __AVR__
+# define PMW33XX_SPI_DIVISOR (F_CPU / PMW33XX_CLOCK_SPEED)
+# else
+# define PMW33XX_SPI_DIVISOR 64
+# endif
+#endif
+
+#if !defined(PMW33XX_LIFTOFF_DISTANCE)
+# define PMW33XX_LIFTOFF_DISTANCE 0x02
+#endif
+
+#if !defined(ROTATIONAL_TRANSFORM_ANGLE)
+# define ROTATIONAL_TRANSFORM_ANGLE 0x00
+#endif
+
+#if ROTATIONAL_TRANSFORM_ANGLE > 127 || ROTATIONAL_TRANSFORM_ANGLE < (-127)
+# error ROTATIONAL_TRANSFORM_ANGLE has to be in the range of +/- 127 for all PMW33XX sensors.
+#endif
+
+// Support single and plural spellings
+#ifndef PMW33XX_CS_PINS
+# ifndef PMW33XX_CS_PIN
+# ifdef POINTING_DEVICE_CS_PIN
+# define PMW33XX_CS_PIN POINTING_DEVICE_CS_PIN
+# define PMW33XX_CS_PINS \
+ { PMW33XX_CS_PIN }
+# else
+# error "No chip select pin defined -- missing PMW33XX_CS_PIN or PMW33XX_CS_PINS"
+# endif
+# else
+# define PMW33XX_CS_PINS \
+ { PMW33XX_CS_PIN }
+# endif
+#endif
+
+#if PMW33XX_CPI > PMW33XX_CPI_MAX || PMW33XX_CPI < PMW33XX_CPI_MIN || (PMW33XX_CPI % PMW33XX_CPI_STEP) != 0U
+# pragma message "PMW33XX_CPI has to be in the range of " STR(PMW33XX_CPI_MAX) "-" STR(PMW33XX_CPI_MIN) " in increments of " STR(PMW33XX_CPI_STEP) ". But it is " STR(PMW33XX_CPI) "."
+# error Use correct PMW33XX_CPI value.
+#endif
+
+#define CONSTRAIN(amt, low, high) ((amt) < (low) ? (low) : ((amt) > (high) ? (high) : (amt)))
+
+/**
+ * @brief Initializes the given sensor so it is in a working state and ready to
+ * be polled for data.
+ *
+ * @param sensor Index of the sensors chip select pin
+ * @return true Initialization was a success
+ * @return false Initialization failed, do not proceed operation
+ */
+bool __attribute__((cold)) pmw33xx_init(uint8_t sensor);
+
+/**
+ * @brief Gets the currently set CPI value from the sensor. CPI is often
+ * refereed to as the sensors sensitivity.
+ *
+ * @param sensor Index of the sensors chip select pin
+ * @return uint16_t Current CPI value of the sensor
+ */
+uint16_t pmw33xx_get_cpi(uint8_t sensor);
+
+/**
+ * @brief Sets the given CPI value for the given PMW33XX sensor. CIP is often
+ * refereed to as the sensors sensitivity. Values outside of the allow range are
+ * constrained into legal values.
+ *
+ * @param sensor Index of the sensors chip select pin
+ * @param cpi CPI value to set, legal range depends on the PMW sensor type
+ */
+void pmw33xx_set_cpi(uint8_t sensor, uint16_t cpi);
+
+/**
+ * @brief Sets the given CPI value to all registered PMW33XX sensors. CPI is
+ * often refereed to as the sensors sensitivity. Values outside of the allow
+ * range are constrained into legal values.
+ *
+ * @param sensor Index of the sensors chip select pin
+ * @param cpi CPI value to set, legal range depends on the PMW sensor type
+ */
+void pmw33xx_set_cpi_all_sensors(uint16_t cpi);
+
+/**
+ * @brief Reads and clears the current delta, and motion register values on the
+ * given sensor.
+ *
+ * @param sensor Index of the sensors chip select pin
+ * @return pmw33xx_report_t Current values of the sensor, if errors occurred all
+ * fields are set to zero
+ */
+pmw33xx_report_t pmw33xx_read_burst(uint8_t sensor);
+
+/**
+ * @brief Read one byte of data from the given register on the sensor
+ *
+ * @param sensor Index of the sensors chip select pin
+ * @param reg_addr Register address to read from
+ * @return uint8_t
+ */
+uint8_t pmw33xx_read(uint8_t sensor, uint8_t reg_addr);
+
+/**
+ * @brief Writes one byte of data to the given register on the sensor
+ *
+ * @param sensor Index of the sensors chip select pin
+ * @param reg_addr Registers address to write to
+ * @param data Data to write to the register
+ * @return true Write was a success
+ * @return false Write failed, do not proceed operation
+ */
+bool pmw33xx_write(uint8_t sensor, uint8_t reg_addr, uint8_t data);
diff --git a/drivers/serial.h b/drivers/serial.h
index 0cfdbd9959..fb91b136e7 100644
--- a/drivers/serial.h
+++ b/drivers/serial.h
@@ -27,3 +27,13 @@ void soft_serial_initiator_init(void);
void soft_serial_target_init(void);
bool soft_serial_transaction(int sstd_index);
+
+#ifdef SERIAL_DEBUG
+# include <debug.h>
+# include <print.h>
+# define serial_dprintf(...) dprintf(__VA_ARGS__)
+#else
+# define serial_dprintf(...) \
+ do { \
+ } while (0)
+#endif
diff --git a/drivers/wear_leveling/wear_leveling_flash_spi.c b/drivers/wear_leveling/wear_leveling_flash_spi.c
new file mode 100644
index 0000000000..6191f8bf09
--- /dev/null
+++ b/drivers/wear_leveling/wear_leveling_flash_spi.c
@@ -0,0 +1,101 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include <stdbool.h>
+#include <hal.h>
+#include "util.h"
+#include "timer.h"
+#include "wear_leveling.h"
+#include "wear_leveling_internal.h"
+
+#ifndef WEAR_LEVELING_EXTERNAL_FLASH_BULK_COUNT
+# define WEAR_LEVELING_EXTERNAL_FLASH_BULK_COUNT 32
+#endif // WEAR_LEVELING_EXTERNAL_FLASH_BULK_COUNT
+
+bool backing_store_init(void) {
+ bs_dprintf("Init\n");
+ flash_init();
+ return true;
+}
+
+bool backing_store_unlock(void) {
+ bs_dprintf("Unlock\n");
+ // No-op -- handled by the flash driver as it is.
+ return true;
+}
+
+bool backing_store_erase(void) {
+#ifdef WEAR_LEVELING_DEBUG_OUTPUT
+ uint32_t start = timer_read32();
+#endif
+
+ bool ret = true;
+ for (int i = 0; i < (WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_COUNT); ++i) {
+ flash_status_t status = flash_erase_block(((WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_OFFSET) + i) * (EXTERNAL_FLASH_BLOCK_SIZE));
+ if (status != FLASH_STATUS_SUCCESS) {
+ ret = false;
+ break;
+ }
+ }
+
+ bs_dprintf("Backing store erase took %ldms to complete\n", ((long)(timer_read32() - start)));
+ return ret;
+}
+
+bool backing_store_write(uint32_t address, backing_store_int_t value) {
+ return backing_store_write_bulk(address, &value, 1);
+}
+
+bool backing_store_lock(void) {
+ bs_dprintf("Lock \n");
+ // No-op -- handled by the flash driver as it is.
+ return true;
+}
+
+bool backing_store_read(uint32_t address, backing_store_int_t *value) {
+ return backing_store_read_bulk(address, value, 1);
+}
+
+bool backing_store_read_bulk(uint32_t address, backing_store_int_t *values, size_t item_count) {
+ bs_dprintf("Read ");
+ uint32_t offset = (WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_OFFSET) * (EXTERNAL_FLASH_BLOCK_SIZE) + address;
+ flash_status_t status = flash_read_block(offset, values, sizeof(backing_store_int_t) * item_count);
+ if (status == FLASH_STATUS_SUCCESS) {
+ for (size_t i = 0; i < item_count; ++i) {
+ values[i] = ~values[i];
+ }
+ wl_dump(offset, values, sizeof(backing_store_int_t) * item_count);
+ }
+ return status == FLASH_STATUS_SUCCESS;
+}
+
+bool backing_store_write_bulk(uint32_t address, backing_store_int_t *values, size_t item_count) {
+ uint32_t offset = (WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_OFFSET) * (EXTERNAL_FLASH_BLOCK_SIZE) + address;
+ size_t index = 0;
+ backing_store_int_t temp[WEAR_LEVELING_EXTERNAL_FLASH_BULK_COUNT];
+ do {
+ // Copy out the block of data we want to transmit first
+ size_t this_loop = MIN(item_count, WEAR_LEVELING_EXTERNAL_FLASH_BULK_COUNT);
+ for (size_t i = 0; i < this_loop; ++i) {
+ temp[i] = values[index + i];
+ }
+
+ bs_dprintf("Write ");
+ wl_dump(offset, temp, sizeof(backing_store_int_t) * this_loop);
+
+ // Take the complement instead
+ for (size_t i = 0; i < this_loop; ++i) {
+ temp[i] = ~temp[i];
+ }
+
+ // Write out the block
+ if (flash_write_block(offset, temp, sizeof(backing_store_int_t) * this_loop) != FLASH_STATUS_SUCCESS) {
+ return false;
+ }
+
+ offset += this_loop * sizeof(backing_store_int_t);
+ index += this_loop;
+ item_count -= this_loop;
+ } while (item_count > 0);
+
+ return true;
+}
diff --git a/drivers/wear_leveling/wear_leveling_flash_spi_config.h b/drivers/wear_leveling/wear_leveling_flash_spi_config.h
new file mode 100644
index 0000000000..394370daa3
--- /dev/null
+++ b/drivers/wear_leveling/wear_leveling_flash_spi_config.h
@@ -0,0 +1,34 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#ifndef __ASSEMBLER__
+# include <stdlib.h>
+# include <stdint.h>
+# include "flash_spi.h"
+#endif
+
+// Use 1 block -- check the config for the SPI flash to determine how big it is
+#ifndef WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_COUNT
+# define WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_COUNT 1
+#endif // WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_COUNT
+
+// Start at the first block of the external flash
+#ifndef WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_OFFSET
+# define WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_OFFSET 0
+#endif // WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_OFFSET
+
+// 8-byte writes by default
+#ifndef BACKING_STORE_WRITE_SIZE
+# define BACKING_STORE_WRITE_SIZE 8
+#endif
+
+// The space allocated by the block
+#ifndef WEAR_LEVELING_BACKING_SIZE
+# define WEAR_LEVELING_BACKING_SIZE ((EXTERNAL_FLASH_BLOCK_SIZE) * (WEAR_LEVELING_EXTERNAL_FLASH_BLOCK_COUNT))
+#endif // WEAR_LEVELING_BACKING_SIZE
+
+// Use half of the backing size for logical EEPROM
+#ifndef WEAR_LEVELING_LOGICAL_SIZE
+# define WEAR_LEVELING_LOGICAL_SIZE ((WEAR_LEVELING_BACKING_SIZE) / 2)
+#endif // WEAR_LEVELING_LOGICAL_SIZE
diff --git a/keyboards/0_sixty/base/info.json b/keyboards/0_sixty/base/info.json
new file mode 100644
index 0000000000..f15b6505d1
--- /dev/null
+++ b/keyboards/0_sixty/base/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "0-Sixty",
+ "usb": {
+ "pid": "0x0060"
+ },
+ "indicators": {
+ "caps_lock": "B6"
+ }
+}
diff --git a/keyboards/boardsource/microdox/.noci b/keyboards/0_sixty/base/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/boardsource/microdox/.noci
+++ b/keyboards/0_sixty/base/rules.mk
diff --git a/keyboards/0_sixty/config.h b/keyboards/0_sixty/config.h
index 9d9394c14f..2160ba623e 100644
--- a/keyboards/0_sixty/config.h
+++ b/keyboards/0_sixty/config.h
@@ -18,22 +18,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-
-#define VENDOR_ID 0x7654
-#define PRODUCT_ID 0x0060
-#define DEVICE_VER 0x0001
-
-#define MANUFACTURER ven0mtr0n
-#define PRODUCT 0-Sixty
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
#define MATRIX_ROW_PINS { B1, F7, F6, F5, F4 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
@@ -41,9 +31,6 @@
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
-/* indicator leds */
-#define LED_CAPS_LOCK_PIN B6
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/0_sixty/info.json b/keyboards/0_sixty/info.json
index b04e9accb2..7fc718c602 100644
--- a/keyboards/0_sixty/info.json
+++ b/keyboards/0_sixty/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "0-Sixty",
+ "manufacturer": "ven0mtr0n",
"url": "",
"maintainer": "vinamarora8",
+ "usb": {
+ "vid": "0x7654",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_1x2uC": {
"layout": [
diff --git a/keyboards/0_sixty/rules.mk b/keyboards/0_sixty/rules.mk
index 7a09d99fdf..18f45534c8 100644
--- a/keyboards/0_sixty/rules.mk
+++ b/keyboards/0_sixty/rules.mk
@@ -17,3 +17,5 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
LTO_ENABLE = yes # Link-time opt
+
+DEFAULT_FOLDER = 0_sixty/base
diff --git a/keyboards/0_sixty/underglow/config.h b/keyboards/0_sixty/underglow/config.h
index 1cff58d944..7b36d4a834 100644
--- a/keyboards/0_sixty/underglow/config.h
+++ b/keyboards/0_sixty/underglow/config.h
@@ -18,15 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x0061
-#undef PRODUCT
-#define PRODUCT 0-Sixty-underglow
-
-/* no caps lock with underglow */
-#undef LED_CAPS_LOCK_PIN
-
/* underglow */
#define RGB_DI_PIN B6
#define RGBLED_NUM 24
diff --git a/keyboards/0_sixty/underglow/info.json b/keyboards/0_sixty/underglow/info.json
new file mode 100644
index 0000000000..5cbbd86e61
--- /dev/null
+++ b/keyboards/0_sixty/underglow/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "0-Sixty-underglow",
+ "usb": {
+ "pid": "0x0061"
+ },
+ "features": {
+ "rgblight": true
+ }
+}
diff --git a/keyboards/0_sixty/underglow/rules.mk b/keyboards/0_sixty/underglow/rules.mk
index 84ef473c02..e69de29bb2 100644
--- a/keyboards/0_sixty/underglow/rules.mk
+++ b/keyboards/0_sixty/underglow/rules.mk
@@ -1 +0,0 @@
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/0_sixty/underglow/underglow.h b/keyboards/0_sixty/underglow/underglow.h
deleted file mode 100644
index 807dfa84ce..0000000000
--- a/keyboards/0_sixty/underglow/underglow.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2021 Vinam Arora <vinam@posteo.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/>.
- */
-
-#pragma once
-
-#include "0_sixty.h"
diff --git a/keyboards/0xc7/61key/config.h b/keyboards/0xc7/61key/config.h
index 11b01ad8b6..6eeb183379 100644
--- a/keyboards/0xc7/61key/config.h
+++ b/keyboards/0xc7/61key/config.h
@@ -35,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/0xc7/61key/readme.md b/keyboards/0xc7/61key/readme.md
index 356b8b07d4..0947aaa52c 100644
--- a/keyboards/0xc7/61key/readme.md
+++ b/keyboards/0xc7/61key/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/0xcb/static/config.h b/keyboards/0xcb/static/config.h
index 9c3a0c6649..784baadc2c 100644
--- a/keyboards/0xcb/static/config.h
+++ b/keyboards/0xcb/static/config.h
@@ -36,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D5, D6, D7, B0, B1, B2, B3, B4 }
#define MATRIX_COL_PINS { B5, D4, C0, C1, C2, C3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/0xcb/static/keymaps/bongocat/keymap.c b/keyboards/0xcb/static/keymaps/bongocat/keymap.c
index 12cc75217e..6d0fc05d3a 100644
--- a/keyboards/0xcb/static/keymaps/bongocat/keymap.c
+++ b/keyboards/0xcb/static/keymaps/bongocat/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), MO(2)
),
[_FN2] = LAYOUT_all(
- RESET,
+ QK_BOOT,
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/0xcb/tutelpad/config.h b/keyboards/0xcb/tutelpad/config.h
new file mode 100644
index 0000000000..a19fa7e83f
--- /dev/null
+++ b/keyboards/0xcb/tutelpad/config.h
@@ -0,0 +1,89 @@
+/* Copyright 2022 ItsFiremanSam
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 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)
+ *
+ */
+/* Keyboard Matrix Assignments */
+#define DIRECT_PINS { \
+ { E6, D7, B1, B3 }, \
+ { B5, B4, B2, B6 } \
+}
+
+#define RGB_DI_PIN D3 // LED data pin on controller
+#define RGBLED_NUM 4 // Number of LEDs connected
+
+#define RGBLIGHT_HUE_STEP 10 // The number of steps to cycle through the hue by
+#define RGBLIGHT_SAT_STEP 17 // The number of steps to increment the saturation by
+#define RGBLIGHT_VAL_STEP 17 // The number of steps to increment the brightness by
+#define RGBLIGHT_LIMIT_VAL 255 // Max brightness level
+#define RGBLIGHT_SLEEP // RGB will switch off when host goes to sleep
+
+#define RGBLIGHT_EFFECT_BREATHING // Enable all additional RGB animation modes
+#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 OLED_TIMEOUT 20000 // Turns off OLED after said amount of milliseconds
+#define OLED_BRIGHTNESS 128
+#define OLED_DISPLAY_128X64
+
+
+/* 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
+
+/*
+ * 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 1
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/0xcb/tutelpad/info.json b/keyboards/0xcb/tutelpad/info.json
new file mode 100644
index 0000000000..00261daad3
--- /dev/null
+++ b/keyboards/0xcb/tutelpad/info.json
@@ -0,0 +1,26 @@
+{
+ "keyboard_name": "TutelPad",
+ "manufacturer": "ItsFiremanSam",
+ "url": "",
+ "maintainer": "ItsFiremanSam",
+ "usb": {
+ "vid": "0xCB00",
+ "pid": "0xF09F",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label": "k03", "x": 0, "y": 0},
+ {"label": "k02", "x": 1, "y": 0},
+ {"label": "k01", "x": 2, "y": 0},
+ {"label": "k00", "x": 3, "y": 0},
+
+ {"label": "k13", "x": 0, "y": 1},
+ {"label": "k12", "x": 1, "y": 1},
+ {"label": "k11", "x": 2, "y": 1},
+ {"label": "k10", "x": 3, "y": 1}
+ ]
+ }
+ }
+}
diff --git a/keyboards/0xcb/tutelpad/keymaps/default/keymap.c b/keyboards/0xcb/tutelpad/keymaps/default/keymap.c
new file mode 100644
index 0000000000..513e7d9f33
--- /dev/null
+++ b/keyboards/0xcb/tutelpad/keymaps/default/keymap.c
@@ -0,0 +1,29 @@
+/* Copyright 2022 ItsFiremanSam
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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
+};
+
+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, KC_8
+ )
+}; \ No newline at end of file
diff --git a/keyboards/0xcb/tutelpad/keymaps/via/keymap.c b/keyboards/0xcb/tutelpad/keymaps/via/keymap.c
new file mode 100644
index 0000000000..c617fce75e
--- /dev/null
+++ b/keyboards/0xcb/tutelpad/keymaps/via/keymap.c
@@ -0,0 +1,39 @@
+/* Copyright 2022 ItsFiremanSam
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_1, KC_2, KC_3, KC_4,
+ KC_5, LT(1, KC_6), LT(1, KC_7), LT(1, KC_8)
+ ),
+
+ [1] = LAYOUT(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+}; \ No newline at end of file
diff --git a/keyboards/0xcb/tutelpad/keymaps/via/rules.mk b/keyboards/0xcb/tutelpad/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/0xcb/tutelpad/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/0xcb/tutelpad/readme.md b/keyboards/0xcb/tutelpad/readme.md
new file mode 100644
index 0000000000..8fb8c970e7
--- /dev/null
+++ b/keyboards/0xcb/tutelpad/readme.md
@@ -0,0 +1,19 @@
+# TutelPad macropad
+
+* Keyboard Maintainer: [ItsFiremanSam](https://github.com/ItsFiremanSam)
+* Hardware Supported: [TutelPad GitHub](https://github.com/0xCB-dev/0xCB-TutelPad)
+* Hardware Availability: [KeebSupply](https://keeb.supply/)
+
+## Bootloader
+
+You can enter the bootloader by pressing the reset switch on the side while the keyboard is plugged in. You can also short the GND and RST pads on the controller.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make 0xcb/tutelpad:default
+
+Flashing example for this keyboard:
+
+ make 0xcb/tutelpad: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/0xcb/tutelpad/rules.mk b/keyboards/0xcb/tutelpad/rules.mk
new file mode 100644
index 0000000000..e022c905cd
--- /dev/null
+++ b/keyboards/0xcb/tutelpad/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 = no # 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
+
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306 \ No newline at end of file
diff --git a/keyboards/0xcb/tutelpad/tutelpad.c b/keyboards/0xcb/tutelpad/tutelpad.c
new file mode 100644
index 0000000000..25c2d22219
--- /dev/null
+++ b/keyboards/0xcb/tutelpad/tutelpad.c
@@ -0,0 +1,106 @@
+/* Copyright 2022 ItsFiremanSam
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "tutelpad.h"
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
+
+static void render_logo(void) {
+ static const char PROGMEM tutel[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0xf0, 0xf0, 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,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 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, 0xf0, 0xf0, 0xf0, 0xf0, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 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, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0x0f, 0x0f, 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,
+ 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, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+oled_write_raw_P(tutel, sizeof(tutel));
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+
+ render_logo();
+
+ return false;
+}
+
+#endif \ No newline at end of file
diff --git a/keyboards/0xcb/tutelpad/tutelpad.h b/keyboards/0xcb/tutelpad/tutelpad.h
new file mode 100644
index 0000000000..0115c50fa4
--- /dev/null
+++ b/keyboards/0xcb/tutelpad/tutelpad.h
@@ -0,0 +1,35 @@
+/* Copyright 2022 ItsFiremanSam
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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/10bleoledhub/config.h b/keyboards/10bleoledhub/config.h
index 867589a27c..86d5b59348 100644
--- a/keyboards/10bleoledhub/config.h
+++ b/keyboards/10bleoledhub/config.h
@@ -23,7 +23,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.*/
#define MATRIX_COLS 3
#define MATRIX_ROW_PINS { F0, F5, F4, F6 }
#define MATRIX_COL_PINS { D6, D7, B5 }
-#define UNUSED_PINS
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/1k/config.h b/keyboards/1k/config.h
index be680b4194..06675824a6 100644
--- a/keyboards/1k/config.h
+++ b/keyboards/1k/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0009
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MakotoKurauchi
-#define PRODUCT 1K
-
/* matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 1
diff --git a/keyboards/1k/info.json b/keyboards/1k/info.json
index a806ac6295..0c2de31808 100644
--- a/keyboards/1k/info.json
+++ b/keyboards/1k/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "1k",
+ "keyboard_name": "1K",
+ "manufacturer": "MakotoKurauchi",
"url": "",
"maintainer": "MakotoKurauchi",
+ "usb": {
+ "vid": "0x0009",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_1x1": {
"layout": [
diff --git a/keyboards/1k/keymaps/tap_dance/config.h b/keyboards/1k/keymaps/tap_dance/config.h
index 5df7869537..bd0163e447 100644
--- a/keyboards/1k/keymaps/tap_dance/config.h
+++ b/keyboards/1k/keymaps/tap_dance/config.h
@@ -4,3 +4,4 @@
#pragma once
#define TAPPING_TERM 500
+#define PERMISSIVE_HOLD
diff --git a/keyboards/1upkeyboards/1up60hse/config.h b/keyboards/1upkeyboards/1up60hse/config.h
index 2396e9083b..62d28fd6c9 100644
--- a/keyboards/1upkeyboards/1up60hse/config.h
+++ b/keyboards/1upkeyboards/1up60hse/config.h
@@ -35,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B3, B2, B1, B0, D4 }
#define MATRIX_COL_PINS { C7, F7, F6, F5, F4, F1, E6, D1, D0, D2, D3, D5, D6, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/keymap.c b/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/keymap.c
index d5b9f901a4..1bdf6dfec3 100644
--- a/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/keymap.c
+++ b/keyboards/1upkeyboards/1up60hse/keymaps/vosechu/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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 , 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 , QK_BOOT,
BL_TOGG , BL_INC , BL_DEC , 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_SAI , RGB_VAI , RGB_SPI , RGB_M_P , RGB_M_B , RGB_M_R , RGB_M_SW , KC_TRNS , KC_TRNS , KC_TRNS ,
KC_TRNS , RGB_RMOD , RGB_HUD , RGB_SAD , RGB_VAD , RGB_SPD , RGB_M_SN , RGB_M_K , RGB_M_X , RGB_M_G , KC_TRNS , KC_TRNS ,
diff --git a/keyboards/1upkeyboards/1up60hte/config.h b/keyboards/1upkeyboards/1up60hte/config.h
index 256af396e5..db8da3f6f5 100644
--- a/keyboards/1upkeyboards/1up60hte/config.h
+++ b/keyboards/1upkeyboards/1up60hte/config.h
@@ -27,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B3, B2, B1, B0, D4 }
#define MATRIX_COL_PINS { F6, F5, F4, F1, E6, D0, D1, D2, D3, D5, D6, D7, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/1upkeyboards/1up60hte/keymaps/badger/keymap.c b/keyboards/1upkeyboards/1up60hte/keymaps/badger/keymap.c
index 8e64c543d5..6708922899 100644
--- a/keyboards/1upkeyboards/1up60hte/keymaps/badger/keymap.c
+++ b/keyboards/1upkeyboards/1up60hte/keymaps/badger/keymap.c
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MOVE_LINUX] = LAYOUT_tsangan(\
KC_GRV, VD_1, VD_2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, \
- KC_BACK, WM_VD1, WM_UH, WM_VD2, RESET, KC_MSTP, KC_MPLY, KC_PGUP, KC_HOME, KC_END, KC_PGDN, _______, _______, KC_NEXT, \
+ KC_BACK, WM_VD1, WM_UH, WM_VD2, QK_BOOT, KC_MSTP, KC_MPLY, KC_PGUP, KC_HOME, KC_END, KC_PGDN, _______, _______, KC_NEXT, \
_______, WM_LH, WM_MAX, WM_RH, WD_FRWD, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CS_RIGHT, CS_DOWN, _______, \
_______, WM_VD3, WM_BH, OS_COPY, OS_PAST, WD_BACK, KC_MNXT, KC_MUTE, KC_WBAK, KC_WFWD, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______),
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_CONFIG] = LAYOUT_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, _______, _______, \
- _______, NK_ON, NK_OFF, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \
+ _______, NK_ON, NK_OFF, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \
_______, GE_SWAP, GE_NORM, DEBUG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_SPI, RGB_M_B, _______, _______, RGB_TOG, _______, \
_______, DF_1, DF_2, _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_SPD, RGB_M_K, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______)
diff --git a/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c b/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c
index 525e02eef4..aff768048d 100644
--- a/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c
+++ b/keyboards/1upkeyboards/1up60hte/keymaps/hhkb/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_60_hhkb(
- 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_DEL,
+ QK_BOOT, KC_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, BL_TOGG, BL_DEC, BL_INC, BL_STEP, _______, _______, _______, _______, KC_SLCK, KC_PAUS, KC_UP, _______, KC_CLR,
_______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, RGB_VAD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, KC_END, KC_PGDN, KC_DOWN, _______, _______,
diff --git a/keyboards/1upkeyboards/1up60rgb/config.h b/keyboards/1upkeyboards/1up60rgb/config.h
index 00cff570b1..02959ddafa 100644
--- a/keyboards/1upkeyboards/1up60rgb/config.h
+++ b/keyboards/1upkeyboards/1up60rgb/config.h
@@ -9,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3, F4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/1upkeyboards/1up60rgb/keymaps/badger/keymap.c b/keyboards/1upkeyboards/1up60rgb/keymaps/badger/keymap.c
index 5229657bc6..2b8c539971 100644
--- a/keyboards/1upkeyboards/1up60rgb/keymaps/badger/keymap.c
+++ b/keyboards/1upkeyboards/1up60rgb/keymaps/badger/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MOVE_LINUX] = LAYOUT_60_ansi_tsangan_split_rshift(\
KC_GRV, VD_1, VD_2, VD_3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- KC_BACK, WM_VD1, WM_UH, WM_VD2, RESET, KC_MSTP, KC_MPLY, KC_PGUP, KC_HOME, KC_END, KC_PGDN, _______, _______, KC_NEXT, \
+ KC_BACK, WM_VD1, WM_UH, WM_VD2, QK_BOOT, KC_MSTP, KC_MPLY, KC_PGUP, KC_HOME, KC_END, KC_PGDN, _______, _______, KC_NEXT, \
_______, WM_LH, WM_MAX, WM_RH, WD_FRWD, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CS_RIGHT, CS_DOWN, _______, \
_______, WM_VD3, WM_BH, OS_COPY, OS_PAST, WD_BACK, KC_MNXT, KC_MUTE, KC_WBAK, KC_WFWD, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______),
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_CONFIG] = LAYOUT_60_ansi_tsangan_split_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_DEL, \
- _______, NK_ON, NK_OFF, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \
+ _______, NK_ON, NK_OFF, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \
_______, GE_SWAP, GE_NORM, DEBUG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_SPI, RGB_M_B, _______, _______, RGB_TOG, _______, \
_______, LAG_SWP, LAG_NRM, _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_SPD, RGB_M_K, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______)
diff --git a/keyboards/1upkeyboards/1up60rgb/keymaps/raffle/keymap.c b/keyboards/1upkeyboards/1up60rgb/keymaps/raffle/keymap.c
index c4d82a4766..f3ccfb2ef7 100644
--- a/keyboards/1upkeyboards/1up60rgb/keymaps/raffle/keymap.c
+++ b/keyboards/1upkeyboards/1up60rgb/keymaps/raffle/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// adjust to handle firmware debug + reset mode
[_adjust] = LAYOUT_all
(
- RESET, DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ QK_BOOT, DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, 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/1upkeyboards/pi40/config.h b/keyboards/1upkeyboards/pi40/config.h
new file mode 100644
index 0000000000..5bda238430
--- /dev/null
+++ b/keyboards/1upkeyboards/pi40/config.h
@@ -0,0 +1,99 @@
+// Copyright 2022 ziptyze (@ziptyze)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
+
+#ifdef OLED_ENABLE
+# define OLED_DISPLAY_128X32
+#define I2C1_SCL_PIN GP17
+#define I2C1_SDA_PIN GP16
+#define I2C_DRIVER I2CD1
+#define OLED_BRIGHTNESS 128
+#define OLED_FONT_H "keyboards/1upkeyboards/pi40/lib/glcdfont.c"
+#endif
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 12
+
+#define DIODE_DIRECTION COL2ROW
+
+#define MATRIX_ROW_PINS { GP21, GP20, GP19, GP18 }
+#define MATRIX_COL_PINS { GP1, GP2, GP3, GP4, GP5, GP6, GP7, GP8, GP9, GP10, GP11, GP12 }
+
+#define ENCODERS_PAD_A { GP14 }
+#define ENCODERS_PAD_B { GP13 }
+
+#define RGB_DI_PIN GP0
+#define DRIVER_LED_TOTAL 47
+#define RGBLED_NUM 47
+# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+# define RGBLIGHT_LIMIT_VAL 150
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
+// 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 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
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0 \ No newline at end of file
diff --git a/keyboards/1upkeyboards/pi40/halconf.h b/keyboards/1upkeyboards/pi40/halconf.h
new file mode 100644
index 0000000000..39fbe3e88c
--- /dev/null
+++ b/keyboards/1upkeyboards/pi40/halconf.h
@@ -0,0 +1,7 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h> \ No newline at end of file
diff --git a/keyboards/1upkeyboards/pi40/info.json b/keyboards/1upkeyboards/pi40/info.json
new file mode 100644
index 0000000000..69f95e3be3
--- /dev/null
+++ b/keyboards/1upkeyboards/pi40/info.json
@@ -0,0 +1,115 @@
+{
+ "keyboard_name": "pi40",
+ "manufacturer": "1upkeyboards",
+ "usb": {
+ "vid": "0x6F75",
+ "pid": "0x5600",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "matrix": [3, 6], "x": 11, "y": 0 },
+ { "matrix": [0, 0], "x": 0, "y": 1 },
+ { "matrix": [0, 1], "x": 1, "y": 1 },
+ { "matrix": [0, 2], "x": 2, "y": 1 },
+ { "matrix": [0, 3], "x": 3, "y": 1 },
+ { "matrix": [0, 4], "x": 4, "y": 1 },
+ { "matrix": [0, 5], "x": 5, "y": 1 },
+ { "matrix": [0, 6], "x": 6, "y": 1 },
+ { "matrix": [0, 7], "x": 7, "y": 1 },
+ { "matrix": [0, 8], "x": 8, "y": 1 },
+ { "matrix": [0, 9], "x": 9, "y": 1 },
+ { "matrix": [0, 10], "x": 10, "y": 1 },
+ { "matrix": [0, 11], "x": 11, "y": 1 },
+ { "matrix": [1, 0], "x": 0, "y": 2 },
+ { "matrix": [1, 1], "x": 1, "y": 2 },
+ { "matrix": [1, 2], "x": 2, "y": 2 },
+ { "matrix": [1, 3], "x": 3, "y": 2 },
+ { "matrix": [1, 4], "x": 4, "y": 2 },
+ { "matrix": [1, 5], "x": 5, "y": 2 },
+ { "matrix": [1, 6], "x": 6, "y": 2 },
+ { "matrix": [1, 7], "x": 7, "y": 2 },
+ { "matrix": [1, 8], "x": 8, "y": 2 },
+ { "matrix": [1, 9], "x": 9, "y": 2 },
+ { "matrix": [1, 10], "x": 10, "y": 2 },
+ { "matrix": [1, 11], "x": 11, "y": 2 },
+ { "matrix": [2, 0], "x": 0, "y": 3 },
+ { "matrix": [2, 1], "x": 1, "y": 3 },
+ { "matrix": [2, 2], "x": 2, "y": 3 },
+ { "matrix": [2, 3], "x": 3, "y": 3 },
+ { "matrix": [2, 4], "x": 4, "y": 3 },
+ { "matrix": [2, 5], "x": 5, "y": 3 },
+ { "matrix": [2, 6], "x": 6, "y": 3 },
+ { "matrix": [2, 7], "x": 7, "y": 3 },
+ { "matrix": [2, 8], "x": 8, "y": 3 },
+ { "matrix": [2, 9], "x": 9, "y": 3 },
+ { "matrix": [2, 10], "x": 10, "y": 3 },
+ { "matrix": [2, 11], "x": 11, "y": 3 },
+ { "matrix": [3, 0], "x": 0, "y": 4 },
+ { "matrix": [3, 1], "x": 1, "y": 4 },
+ { "matrix": [3, 2], "x": 2, "y": 4 },
+ { "matrix": [3, 3], "x": 3, "y": 4 },
+ { "matrix": [3, 4], "x": 4, "y": 4 },
+ { "matrix": [3, 5], "x": 5, "y": 4, "w": 2},
+ { "matrix": [3, 7], "x": 7, "y": 4 },
+ { "matrix": [3, 8], "x": 8, "y": 4 },
+ { "matrix": [3, 9], "x": 9, "y": 4 },
+ { "matrix": [3, 10], "x": 10, "y": 4 },
+ { "matrix": [3, 11], "x": 11, "y": 4 }
+ ]
+ },
+ "LAYOUT_ortho_4x12": {
+ "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": [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": [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": [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, "label": "ENC" },
+ { "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 }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/1upkeyboards/pi40/keymaps/default/keymap.c b/keyboards/1upkeyboards/pi40/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e417828f72
--- /dev/null
+++ b/keyboards/1upkeyboards/pi40/keymaps/default/keymap.c
@@ -0,0 +1,124 @@
+/* Copyright 2022 ziptyze
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 {
+ _ONE = 0,
+ _TWO,
+ _THREE,
+ _FOUR
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Qwerty
+ * ╱⎺⎺⎺⎺╲
+ * |RGBTOG|
+ * ╲⎽⎽⎽⎽╱
+ * ,-----------------------------------------------------------------------------------.
+ * | 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 |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_ONE] = LAYOUT (
+ 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_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 ,
+ MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ /* Lower
+ * ╱⎺⎺⎺⎺╲
+ * | MUTE |
+ * ╲⎽⎽⎽⎽╱
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_TWO] = LAYOUT (
+ KC_MUTE,
+ 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
+ * ╱⎺⎺⎺⎺╲
+ * | MUTE |
+ * ╲⎽⎽⎽⎽╱
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 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 | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | Mute | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_THREE] = LAYOUT (
+ 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_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)
+ * ╱⎺⎺⎺⎺╲
+ * | MUTE |
+ * v-----------------------RGB CONTROL------------------v ╲⎽⎽⎽⎽╱
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | Mute | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_FOUR] = LAYOUT (
+ KC_MUTE,
+ _______, QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_ONE] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
+ [_TWO] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_THREE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FOUR] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
+};
+#endif
diff --git a/keyboards/1upkeyboards/pi40/keymaps/default/rules.mk b/keyboards/1upkeyboards/pi40/keymaps/default/rules.mk
new file mode 100644
index 0000000000..a40474b4d5
--- /dev/null
+++ b/keyboards/1upkeyboards/pi40/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/1upkeyboards/pi40/keymaps/via/keymap.c b/keyboards/1upkeyboards/pi40/keymaps/via/keymap.c
new file mode 100644
index 0000000000..48c201f0a3
--- /dev/null
+++ b/keyboards/1upkeyboards/pi40/keymaps/via/keymap.c
@@ -0,0 +1,268 @@
+/* Copyright 2022 ziptyze
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 {
+ _ONE = 0,
+ _TWO,
+ _THREE,
+ _FOUR,
+ _FIVE,
+ _SIX,
+ _SEVEN,
+ _EIGHT,
+ _NINE,
+ _TEN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Qwerty
+ * ╱⎺⎺⎺⎺╲
+ * |RGBTOG|
+ * ╲⎽⎽⎽⎽╱
+ * ,-----------------------------------------------------------------------------------.
+ * | 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 |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_ONE] = LAYOUT (
+ 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_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 ,
+ MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ /* Lower
+ * ╱⎺⎺⎺⎺╲
+ * | MUTE |
+ * ╲⎽⎽⎽⎽╱
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_TWO] = LAYOUT (
+ KC_MUTE,
+ 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
+ * ╱⎺⎺⎺⎺╲
+ * | MUTE |
+ * ╲⎽⎽⎽⎽╱
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 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 | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | Mute | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_THREE] = LAYOUT (
+ 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_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)
+ * ╱⎺⎺⎺⎺╲
+ * | MUTE |
+ * v-----------------------RGB CONTROL------------------v ╲⎽⎽⎽⎽╱
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | Mute | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_FOUR] = LAYOUT (
+ KC_MUTE,
+ _______, QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* Placeholder
+ * ╱⎺⎺⎺⎺╲
+ * | |
+ * ╲⎽⎽⎽⎽╱
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_FIVE] = LAYOUT (
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* Placeholder
+ * ╱⎺⎺⎺⎺╲
+ * | |
+ * ╲⎽⎽⎽⎽╱
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_SIX] = LAYOUT (
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* Placeholder
+ * ╱⎺⎺⎺⎺╲
+ * | |
+ * ╲⎽⎽⎽⎽╱
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_SEVEN] = LAYOUT (
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* Placeholder
+ * ╱⎺⎺⎺⎺╲
+ * | |
+ * ╲⎽⎽⎽⎽╱
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_EIGHT] = LAYOUT (
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* Placeholder
+ * ╱⎺⎺⎺⎺╲
+ * | |
+ * ╲⎽⎽⎽⎽╱
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_NINE] = LAYOUT (
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* Placeholder
+ * ╱⎺⎺⎺⎺╲
+ * | |
+ * ╲⎽⎽⎽⎽╱
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_TEN] = LAYOUT (
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_ONE] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
+ [_TWO] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_THREE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FOUR] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FIVE] = { ENCODER_CCW_CW(_______, _______) },
+ [_SIX] = { ENCODER_CCW_CW(_______, _______) },
+ [_SEVEN] = { ENCODER_CCW_CW(_______, _______) },
+ [_EIGHT] = { ENCODER_CCW_CW(_______, _______) },
+ [_NINE] = { ENCODER_CCW_CW(_______, _______) },
+ [_TEN] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
diff --git a/keyboards/1upkeyboards/pi40/keymaps/via/rules.mk b/keyboards/1upkeyboards/pi40/keymaps/via/rules.mk
new file mode 100644
index 0000000000..bf70b1f3e0
--- /dev/null
+++ b/keyboards/1upkeyboards/pi40/keymaps/via/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+
+ENCODER_MAP_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/1upkeyboards/pi40/lib/glcdfont.c b/keyboards/1upkeyboards/pi40/lib/glcdfont.c
new file mode 100644
index 0000000000..4b354756b6
--- /dev/null
+++ b/keyboards/1upkeyboards/pi40/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/1upkeyboards/pi40/mcuconf.h b/keyboards/1upkeyboards/pi40/mcuconf.h
new file mode 100644
index 0000000000..df94cb0346
--- /dev/null
+++ b/keyboards/1upkeyboards/pi40/mcuconf.h
@@ -0,0 +1,10 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef RP_I2C_USE_I2C0
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C0 TRUE
+#define RP_I2C_USE_I2C1 FALSE \ No newline at end of file
diff --git a/keyboards/1upkeyboards/pi40/pi40.c b/keyboards/1upkeyboards/pi40/pi40.c
new file mode 100644
index 0000000000..8e2fc4c3d3
--- /dev/null
+++ b/keyboards/1upkeyboards/pi40/pi40.c
@@ -0,0 +1,312 @@
+/* Copyright 2022 ziptyze
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You 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 OLED_ENABLE
+
+static uint32_t oled_logo_timer = 0;
+static bool clear_logo = true;
+static const char PROGMEM my_logo[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0x0f, 0x0f, 0x0f, 0x1f, 0xff, 0xff, 0xff, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+ 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xfb,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff,
+ 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, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+#endif
+
+#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 },
+ { 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12 },
+ { 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35 },
+ { 46, 45, 44, 43, 42, 41, NO_LED, 40, 39, 38, 37, 36 }
+}, {
+ // LED Index to Physical Position
+ { 9, 8 }, { 28, 8 }, { 46, 8 }, { 65, 8 }, { 84, 8 }, { 102, 8 }, { 121, 8 }, { 140, 8 }, { 159, 8 }, { 177, 8 }, { 196, 8 }, { 215, 8 },
+ { 215, 24 }, { 196, 24 }, { 177, 24 }, { 159, 24 }, { 140, 24 }, { 121, 24 }, { 102, 24 }, { 84, 24 }, { 65, 24 }, { 46, 24 }, { 28, 24 }, { 9, 24 },
+ { 9, 40 }, { 28, 40 }, { 46, 40 }, { 65, 40 }, { 84, 40 }, { 102, 40 }, { 121, 40 }, { 140, 40 }, { 159, 40 }, { 177, 40 }, { 196, 40 }, { 215, 40 },
+ { 215, 56 }, { 196, 56 }, { 177, 56 }, { 159, 56 }, { 140, 56 }, { 112, 56 }, { 84, 56 }, { 65, 56 }, { 46, 56 }, { 28, 56 }, { 9, 56 }
+}, {
+ // LED Index to Flag
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 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, 1, 1, 1, 1, 1, 1, 1,
+} };
+#endif
+
+#ifdef OLED_ENABLE
+
+void init_timer(void){
+ oled_logo_timer = timer_read32();
+};
+
+void user_oled_magic(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_P(PSTR("One\n"), false);
+ break;
+ case 1:
+ oled_write_P(PSTR("Two\n"), false);
+ break;
+ case 2:
+ oled_write_P(PSTR("Three\n"), false);
+ break;
+ case 3:
+ oled_write_P(PSTR("Four\n"), false);
+ break;
+ case 4:
+ oled_write_P(PSTR("Five\n"), false);
+ break;
+ case 5:
+ oled_write_P(PSTR("Six\n"), false);
+ break;
+ case 6:
+ oled_write_P(PSTR("Seven\n"), false);
+ break;
+ case 7:
+ oled_write_P(PSTR("Eight\n"), false);
+ break;
+ case 8:
+ oled_write_P(PSTR("Nine\n"), false);
+ break;
+ case 9:
+ oled_write_P(PSTR("Ten\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.caps_lock ? PSTR("Cap(x) ") : PSTR("Cap( ) "), false);
+ oled_write_P(led_state.num_lock ? PSTR("Num(x) ") : PSTR("Num( ) "), false);
+ oled_write_P(led_state.scroll_lock ? PSTR("Scrl(x)") : PSTR("Scrl( )"), false);
+
+
+ switch (rgb_matrix_get_mode()) {
+ case 1:
+ oled_write_P(PSTR("Solid Color\n "), false);
+ break;
+ case 2:
+ oled_write_P(PSTR("Alphas Mods\n "), false);
+ break;
+ case 3:
+ oled_write_P(PSTR("Gradient Up Down\n "), false);
+ break;
+ case 4:
+ oled_write_P(PSTR("Gradient Left Right\n "), false);
+ break;
+ case 5:
+ oled_write_P(PSTR("Breathing\n "), false);
+ break;
+ case 6:
+ oled_write_P(PSTR("Band Sat\n "), false);
+ break;
+ case 7:
+ oled_write_P(PSTR("Band Val\n "), false);
+ break;
+ case 8:
+ oled_write_P(PSTR("Band Pinwheel Sat\n "), false);
+ break;
+ case 9:
+ oled_write_P(PSTR("Band Pinwheel Val\n "), false);
+ break;
+ case 10:
+ oled_write_P(PSTR("Band Spiral Sat\n "), false);
+ break;
+ case 11:
+ oled_write_P(PSTR("Band Spiral Val\n "), false);
+ break;
+ case 12:
+ oled_write_P(PSTR("Cycle All\n "), false);
+ break;
+ case 13:
+ oled_write_P(PSTR("Cycle Left Right\n "), false);
+ break;
+ case 14:
+ oled_write_P(PSTR("Cycle Up Down\n "), false);
+ break;
+ case 15:
+ oled_write_P(PSTR("Rainbow\nMoving Chevron "), false);
+ break;
+ case 16:
+ oled_write_P(PSTR("Cycle Out In\n "), false);
+ break;
+ case 17:
+ oled_write_P(PSTR("Cycle Out In Dual\n "), false);
+ break;
+ case 18:
+ oled_write_P(PSTR("Cycle Pinwheel\n "), false);
+ break;
+ case 19:
+ oled_write_P(PSTR("Cycle Spiral\n "), false);
+ break;
+ case 20:
+ oled_write_P(PSTR("Dual Beacon\n "), false);
+ break;
+ case 21:
+ oled_write_P(PSTR("Rainbow Beacon\n "), false);
+ break;
+ case 22:
+ oled_write_P(PSTR("Rainbow Pinwheels\n "), false);
+ break;
+ case 23:
+ oled_write_P(PSTR("Raindrops\n "), false);
+ break;
+ case 24:
+ oled_write_P(PSTR("Jellybean Raindrops\n "), false);
+ break;
+ case 25:
+ oled_write_P(PSTR("Hue Breathing\n "), false);
+ break;
+ case 26:
+ oled_write_P(PSTR("Hue Pendulum\n "), false);
+ break;
+ case 27:
+ oled_write_P(PSTR("Hue Wave\n "), false);
+ break;
+ case 28:
+ oled_write_P(PSTR("Pixel Rain\n "), false);
+ break;
+ case 29:
+ oled_write_P(PSTR("Pixel Flow\n "), false);
+ break;
+ case 30:
+ oled_write_P(PSTR("Pixel Fractal\n "), false);
+ break;
+ case 31:
+ oled_write_P(PSTR("Typing Heatmap\n "), false);
+ break;
+ case 32:
+ oled_write_P(PSTR("Digital Rain\n "), false);
+ break;
+ case 33:
+ oled_write_P(PSTR("Solid Reactive\nSimple "), false);
+ break;
+ case 34:
+ oled_write_P(PSTR("Solid Reactive\n "), false);
+ break;
+ case 35:
+ oled_write_P(PSTR("Solid Reactive\nWide "), false);
+ break;
+ case 36:
+ oled_write_P(PSTR("Solid Reactive\nMultiwide "), false);
+ break;
+ case 37:
+ oled_write_P(PSTR("Solid Reactive\nCross "), false);
+ break;
+ case 38:
+ oled_write_P(PSTR("Solid Reactive\nMulticross "), false);
+ break;
+ case 39:
+ oled_write_P(PSTR("Solid Reactive\nNexus "), false);
+ break;
+ case 40:
+ oled_write_P(PSTR("Solid Reactive\nMultinexus "), false);
+ break;
+ case 41:
+ oled_write_P(PSTR("Splash\n "), false);
+ break;
+ case 42:
+ oled_write_P(PSTR("Multisplash\n "), false);
+ break;
+ case 43:
+ oled_write_P(PSTR("Solid Splash\n "), false);
+ break;
+ case 44:
+ oled_write_P(PSTR("Solid Multisplash\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\n "), false);
+ }
+
+}
+
+void render_logo(void) {
+ oled_write_raw_P(my_logo, sizeof(my_logo));
+}
+
+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;
+ }
+}
+
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
+
+void keyboard_post_init_kb(void) {
+ init_timer();
+
+ keyboard_post_init_user();
+}
+
+# define SHOW_LOGO 5000
+bool oled_task_kb(void) {
+ if (!oled_task_user()) { return false; }
+ if ((timer_elapsed32(oled_logo_timer) < SHOW_LOGO)){
+ render_logo();
+ }else{
+ clear_screen();
+ user_oled_magic();
+ }
+ return false;
+}
+
+#endif \ No newline at end of file
diff --git a/keyboards/1upkeyboards/pi40/readme.md b/keyboards/1upkeyboards/pi40/readme.md
new file mode 100644
index 0000000000..95ddec4358
--- /dev/null
+++ b/keyboards/1upkeyboards/pi40/readme.md
@@ -0,0 +1,38 @@
+# pi40
+
+![pi40](https://i.imgur.com/ONVtaVZh.jpeg)
+
+The pi40 is a 4x12 ortholinear keyboard with a fixed 2u spacebar using a Raspberry Pi Pico for the controller.
+
+It includes options for a rotary encoder, SSD1306 oled, and per-key in-switch RGB LEDs.
+
+All unused GPIO pins are broken out on the main pcb, as well as the available voltage pins.
+
+This firmware also includes the option for VIA which includes configuration options for the rotary encoder, matrix lighting, and up to 10 layers.
+
+Default oled configuration displays:
+ - current layer
+ - caps lock status
+ - num lock status
+ - scroll lock status
+ - current RGB lighting mode
+
+* Keyboard Maintainer: [ziptyze](https://github.com/ziptyze)
+* Hardware Availability: (https://1upkeyboards.com/shop/keyboard-kits/diy-40-kits/pi40-keyboard-kit/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make 1upkeyboards/pi40:default
+
+Flashing example for this keyboard:
+
+ make 1upkeyboards/pi40: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:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix, the top left key, and plug in the keyboard
+* **BOOTSEL button**: Hold down the BOOTSEL button on the pico, and plug in the keyboard
diff --git a/keyboards/1upkeyboards/pi40/rules.mk b/keyboards/1upkeyboards/pi40/rules.mk
new file mode 100644
index 0000000000..ecf7a9ce3a
--- /dev/null
+++ b/keyboards/1upkeyboards/pi40/rules.mk
@@ -0,0 +1,26 @@
+# MCU name
+MCU = RP2040
+BOOTLOADER = rp2040
+BOARD = GENERIC_RP_RP2040
+
+# 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
+RGB_MATRIX_DRIVER = WS2812
+
+WS2812_DRIVER = vendor
+ENCODER_ENABLE = yes
+
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306 \ No newline at end of file
diff --git a/keyboards/1upkeyboards/super16/config.h b/keyboards/1upkeyboards/super16/config.h
index fd11e13fe1..1a9344cbac 100644
--- a/keyboards/1upkeyboards/super16/config.h
+++ b/keyboards/1upkeyboards/super16/config.h
@@ -37,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ D1, D0, F4, F5 }
#define MATRIX_COL_PINS \
{ D4, C6, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/1upkeyboards/super16/keymaps/ahk_companion/keymap.c b/keyboards/1upkeyboards/super16/keymaps/ahk_companion/keymap.c
index e62f3b6095..1bfe4e9b2a 100644
--- a/keyboards/1upkeyboards/super16/keymaps/ahk_companion/keymap.c
+++ b/keyboards/1upkeyboards/super16/keymaps/ahk_companion/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[4] = LAYOUT_ortho_4x4(
KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU,
KC_NO, KC_NO, KC_NO, KC_MUTE,
- KC_NO, RESET, EEP_RST, KC_VOLD,
+ KC_NO, QK_BOOT, EEP_RST, KC_VOLD,
TG(5), KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
),
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[5] = LAYOUT_ortho_4x4(
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD,
- RGB_TOG, EEP_RST, RESET, KC_LSHIFT,
+ RGB_TOG, EEP_RST, QK_BOOT, KC_LSHIFT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
),
};
diff --git a/keyboards/1upkeyboards/super16/keymaps/nblyumberg/keymap.c b/keyboards/1upkeyboards/super16/keymaps/nblyumberg/keymap.c
index 170d1ad8f1..3261058a9b 100644
--- a/keyboards/1upkeyboards/super16/keymaps/nblyumberg/keymap.c
+++ b/keyboards/1upkeyboards/super16/keymaps/nblyumberg/keymap.c
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[4] = LAYOUT_ortho_4x4(
KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU,
RGB_TOG, RGB_MOD, RGB_RMOD, KC_MUTE,
- TO(0), RESET, EEP_RST, KC_VOLD,
+ TO(0), QK_BOOT, EEP_RST, KC_VOLD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
),
};
diff --git a/keyboards/1upkeyboards/super16v2/config.h b/keyboards/1upkeyboards/super16v2/config.h
index 9832c28bef..cea3c4edb6 100644
--- a/keyboards/1upkeyboards/super16v2/config.h
+++ b/keyboards/1upkeyboards/super16v2/config.h
@@ -42,7 +42,6 @@
#define ENCODERS_PAD_A { B1, B3 }
#define ENCODERS_PAD_B { B2, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/1upkeyboards/super16v2/keymaps/mouse/keymap.c b/keyboards/1upkeyboards/super16v2/keymaps/mouse/keymap.c
index 86ea58e8a5..8888fe35e4 100644
--- a/keyboards/1upkeyboards/super16v2/keymaps/mouse/keymap.c
+++ b/keyboards/1upkeyboards/super16v2/keymaps/mouse/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
RGB_SPD, RGB_SPI, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, RESET
+ KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
),
};
diff --git a/keyboards/1upkeyboards/super16v2/readme.md b/keyboards/1upkeyboards/super16v2/readme.md
index b2c0ca747b..f1b8cbaf5d 100644
--- a/keyboards/1upkeyboards/super16v2/readme.md
+++ b/keyboards/1upkeyboards/super16v2/readme.md
@@ -22,4 +22,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/1upkeyboards/sweet16/config.h b/keyboards/1upkeyboards/sweet16/config.h
index f858685b8f..6463505000 100644
--- a/keyboards/1upkeyboards/sweet16/config.h
+++ b/keyboards/1upkeyboards/sweet16/config.h
@@ -2,11 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6F75 // OU
-#define MANUFACTURER 1up Keyboards
-#define PRODUCT Sweet16
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
diff --git a/keyboards/1upkeyboards/sweet16/info.json b/keyboards/1upkeyboards/sweet16/info.json
index 7755c8efb0..320c96bac8 100644
--- a/keyboards/1upkeyboards/sweet16/info.json
+++ b/keyboards/1upkeyboards/sweet16/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Sweet 16",
+ "keyboard_name": "Sweet16",
+ "manufacturer": "1up Keyboards",
"url": "",
"maintainer": "skullydazed",
+ "usb": {
+ "vid": "0x6F75"
+ },
"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}]
diff --git a/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/config.h b/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/config.h
index c835440076..161b46c814 100644
--- a/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/config.h
+++ b/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/config.h
@@ -3,6 +3,7 @@
/* tap dance stuff*/
#undef TAPPING_TERM
#define TAPPING_TERM 500
+#define PERMISSIVE_HOLD
#define TAPPING_TOGGLE 2
@@ -12,4 +13,4 @@
#define EXAMPLESTRING4 "tapdance_4"
#undef RGBLED_NUM
-#define RGBLED_NUM 16 \ No newline at end of file
+#define RGBLED_NUM 16
diff --git a/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/keymap.c b/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/keymap.c
index 6b7b36cbb2..eeca552657 100644
--- a/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/keymap.c
+++ b/keyboards/1upkeyboards/sweet16/keymaps/ridingintraffic/keymap.c
@@ -196,7 +196,7 @@ void matrix_scan_user(void) {
}
}
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _TAPLAND:
rgblight_setrgb(0, 16, 0); //green
break;
diff --git a/keyboards/1upkeyboards/sweet16/v1/config.h b/keyboards/1upkeyboards/sweet16/v1/config.h
index 4020f4fdc0..a107a1899a 100644
--- a/keyboards/1upkeyboards/sweet16/v1/config.h
+++ b/keyboards/1upkeyboards/sweet16/v1/config.h
@@ -2,14 +2,9 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x0161
-#define DEVICE_VER 0x0001
-
/* key matrix pins */
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { D1, D0, D4, C6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/1upkeyboards/sweet16/v1/info.json b/keyboards/1upkeyboards/sweet16/v1/info.json
new file mode 100644
index 0000000000..11a0d97d89
--- /dev/null
+++ b/keyboards/1upkeyboards/sweet16/v1/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x0161",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/1upkeyboards/sweet16/v2/promicro/config.h b/keyboards/1upkeyboards/sweet16/v2/promicro/config.h
index d344b0750d..8bacff2f6e 100644
--- a/keyboards/1upkeyboards/sweet16/v2/promicro/config.h
+++ b/keyboards/1upkeyboards/sweet16/v2/promicro/config.h
@@ -2,14 +2,9 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x0162
-#define DEVICE_VER 0x0001
-
/* key matrix pins */
#define MATRIX_ROW_PINS { D4, D1, E6, B5 }
#define MATRIX_COL_PINS { F7, F6, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/1upkeyboards/sweet16/v2/promicro/info.json b/keyboards/1upkeyboards/sweet16/v2/promicro/info.json
new file mode 100644
index 0000000000..bed6579e82
--- /dev/null
+++ b/keyboards/1upkeyboards/sweet16/v2/promicro/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x0162",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/1upkeyboards/sweet16/v2/proton_c/config.h b/keyboards/1upkeyboards/sweet16/v2/proton_c/config.h
index 286af1857f..e1d66894b3 100644
--- a/keyboards/1upkeyboards/sweet16/v2/proton_c/config.h
+++ b/keyboards/1upkeyboards/sweet16/v2/proton_c/config.h
@@ -2,14 +2,9 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x0162
-#define DEVICE_VER 0x0001
-
/* key matrix pins */
#define MATRIX_ROW_PINS { B5, B7, B2, B0 }
#define MATRIX_COL_PINS { B8, A0, A10, A9 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/1upkeyboards/sweet16/v2/proton_c/info.json b/keyboards/1upkeyboards/sweet16/v2/proton_c/info.json
new file mode 100644
index 0000000000..bed6579e82
--- /dev/null
+++ b/keyboards/1upkeyboards/sweet16/v2/proton_c/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x0162",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/25keys/aleth42/info.json b/keyboards/25keys/aleth42/info.json
index 5a8b564685..7a71d2b367 100644
--- a/keyboards/25keys/aleth42/info.json
+++ b/keyboards/25keys/aleth42/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "aleth42",
+ "keyboard_name": "ALETH42",
+ "manufacturer": "25KEYS",
"url": "http://www.sho-k.co.uk/tech/aleth42",
"maintainer": "monksoffunk",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEAC8"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/25keys/aleth42/rev0/config.h b/keyboards/25keys/aleth42/rev0/config.h
index 8424b2edc3..c177990e99 100644
--- a/keyboards/25keys/aleth42/rev0/config.h
+++ b/keyboards/25keys/aleth42/rev0/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEAC8
-#define DEVICE_VER 0x0000
-#define MANUFACTURER 25KEYS
-#define PRODUCT ALETH42
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, B1, B2, B3 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D4, D5, D6, C2, C4, C5, C6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/25keys/aleth42/rev0/info.json b/keyboards/25keys/aleth42/rev0/info.json
new file mode 100644
index 0000000000..5baab67dba
--- /dev/null
+++ b/keyboards/25keys/aleth42/rev0/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.0"
+ }
+}
diff --git a/keyboards/25keys/aleth42/rev1/config.h b/keyboards/25keys/aleth42/rev1/config.h
index 38c74c6bf1..14b5588ab4 100644
--- a/keyboards/25keys/aleth42/rev1/config.h
+++ b/keyboards/25keys/aleth42/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEAC8
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 25KEYS
-#define PRODUCT ALETH42
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B4, B0, B2, B1 }
#define MATRIX_COL_PINS { D5, D3, D2, D1, D0, D6, D4, F7, F0, F1, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/25keys/aleth42/rev1/info.json b/keyboards/25keys/aleth42/rev1/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/25keys/aleth42/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/25keys/cassette42/config.h b/keyboards/25keys/cassette42/config.h
index 71621695f4..44c17ea85a 100644
--- a/keyboards/25keys/cassette42/config.h
+++ b/keyboards/25keys/cassette42/config.h
@@ -24,7 +24,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COLS 6
#define DIRECT_PINS {{ B4, F6, F5, F4, B5, F7 }}
-#define UNUSED_PINS
#define ENCODERS_PAD_A { B6, B3 }
#define ENCODERS_PAD_B { B2, B1 }
diff --git a/keyboards/25keys/zinc/info.json b/keyboards/25keys/zinc/info.json
index 8064e94e2f..3d9c898841 100644
--- a/keyboards/25keys/zinc/info.json
+++ b/keyboards/25keys/zinc/info.json
@@ -1,8 +1,13 @@
{
- "keyboard_name": "Zinc",
- "url": "https://github.com/monksoffunk/",
+ "manufacturer": "25KEYS",
+ "url": "https://github.com/monksoffunk/zinc",
"maintainer": "monksoffunk",
- "layouts": {
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEA3B",
+ "device_version": "0.0.1"
+ },
+ "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":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":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":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "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/25keys/zinc/keymaps/ginjake/keymap.c b/keyboards/25keys/zinc/keymaps/ginjake/keymap.c
index 323d2c7d44..93dfc590e9 100644
--- a/keyboards/25keys/zinc/keymaps/ginjake/keymap.c
+++ b/keyboards/25keys/zinc/keymaps/ginjake/keymap.c
@@ -169,7 +169,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { \
* `-----------------------------------------' `-----------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, RGBRST, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, KC_INS, \
+ _______, QK_BOOT, RGBRST, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, KC_INS, \
AQOURS, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, AG_NORM, AG_SWAP, KC_MINS, KC_EQL, KC_PSCR, KC_SLCK, KC_PAUS,\
_______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,\
_______, _______, _______, EISU, EISU, EISU, KANA, KANA, KC_HOME, KC_PGDN, KC_PGUP, KC_END\
diff --git a/keyboards/25keys/zinc/keymaps/monks/keymap.c b/keyboards/25keys/zinc/keymaps/monks/keymap.c
index a30e8ac5fc..8670a58efb 100644
--- a/keyboards/25keys/zinc/keymaps/monks/keymap.c
+++ b/keyboards/25keys/zinc/keymaps/monks/keymap.c
@@ -109,7 +109,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { \
* `-----------------------------------------' `-----------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \
+ _______, QK_BOOT, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, 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_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/25keys/zinc/keymaps/toshi0383/keymap.c b/keyboards/25keys/zinc/keymaps/toshi0383/keymap.c
index 72c3fee6f3..122ecd3611 100644
--- a/keyboards/25keys/zinc/keymaps/toshi0383/keymap.c
+++ b/keyboards/25keys/zinc/keymaps/toshi0383/keymap.c
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_LOWER] = LAYOUT_ortho_4x12(
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, _______, _______, _______,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, RCMD(RALT(KC_O)), RCMD(RALT(KC_L)), _______,
_______, KC_LT, KC_GT, KC_LPRN, KC_RPRN, KC_GRV, KC_MINS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_PIPE,
KC_LALT, _______, _______, _______, KC_EQL, KC_QUES, KC_UNDS, KC_PLUS, KC_COMM, _______, KC_SLSH, _______,
_______, _______, _______, _______, _______, KC_TRNS, KC_TRNS, KC_RGUI, _______, _______, _______, _______
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_ortho_4x12(
RGB_VAI, RGB_SAI, RGB_HUI, RGB_MOD, XXXXXXX, RGB_TOG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX,
RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD, XXXXXXX, XXXXXXX, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX,
- KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, KC_BRIU, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LANG1, KC_LANG2,
+ KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, KC_BRIU, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LANG1, KC_LANG2,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_KANA
),
};
diff --git a/keyboards/25keys/zinc/rev1/config.h b/keyboards/25keys/zinc/rev1/config.h
index 43af843a0b..1b2ae25cd8 100644
--- a/keyboards/25keys/zinc/rev1/config.h
+++ b/keyboards/25keys/zinc/rev1/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEA3B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 25KEYS
-#define PRODUCT zinc rev.1
-
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100
diff --git a/keyboards/25keys/zinc/rev1/info.json b/keyboards/25keys/zinc/rev1/info.json
index 1ed5f9130a..5233dcb04e 100644
--- a/keyboards/25keys/zinc/rev1/info.json
+++ b/keyboards/25keys/zinc/rev1/info.json
@@ -1,10 +1,3 @@
{
- "keyboard_name": "Zinc rev.1",
- "url": "https://github.com/monksoffunk/zinc",
- "maintainer": "monksoffunk",
- "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":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":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":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "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}]
- }
- }
+ "keyboard_name": "Zinc rev.1"
}
diff --git a/keyboards/25keys/zinc/reva/config.h b/keyboards/25keys/zinc/reva/config.h
index 428c704d19..f740f4d011 100644
--- a/keyboards/25keys/zinc/reva/config.h
+++ b/keyboards/25keys/zinc/reva/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEA3B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 25KEYS
-#define PRODUCT zinc rev.A
-
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100
diff --git a/keyboards/25keys/zinc/reva/info.json b/keyboards/25keys/zinc/reva/info.json
index de1d2933ec..79c4795bb3 100644
--- a/keyboards/25keys/zinc/reva/info.json
+++ b/keyboards/25keys/zinc/reva/info.json
@@ -1,10 +1,3 @@
{
- "keyboard_name": "Zinc rev.A",
- "url": "https://github.com/monksoffunk/zinc",
- "maintainer": "monksoffunk",
- "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":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":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":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "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}]
- }
- }
+ "keyboard_name": "Zinc rev.A"
}
diff --git a/keyboards/2key2crawl/config.h b/keyboards/2key2crawl/config.h
index f6fc6f8c1e..4a0d7eb013 100644
--- a/keyboards/2key2crawl/config.h
+++ b/keyboards/2key2crawl/config.h
@@ -9,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { C4, C5 }
#define MATRIX_COL_PINS { B3, B4, B5, B6, B7, C7, B2 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { D0 }
diff --git a/keyboards/30wer/config.h b/keyboards/30wer/config.h
index 65a54cba4a..3dcd4d0302 100644
--- a/keyboards/30wer/config.h
+++ b/keyboards/30wer/config.h
@@ -9,7 +9,6 @@
/* pcb default pin-out */
#define MATRIX_ROW_PINS { E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D1, D0, D4, C6, D7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/3keyecosystem/2key2/config.h b/keyboards/3keyecosystem/2key2/config.h
index 80e864ce9d..5ccd3f1cd5 100644
--- a/keyboards/3keyecosystem/2key2/config.h
+++ b/keyboards/3keyecosystem/2key2/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { F6 }
#define MATRIX_COL_PINS { F4, D7 }
-#define UNUSED_PINS
// LED on kbmount base board is on B7
#define LED_CAPS_LOCK_PIN B7 // onboard LED for testing
diff --git a/keyboards/3w6/info.json b/keyboards/3w6/info.json
index ab463bc60c..d76688bfc1 100644
--- a/keyboards/3w6/info.json
+++ b/keyboards/3w6/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "3w6",
+ "manufacturer": "weteor",
"url": "https://github.com/weteor/3W6/",
"maintainer": "weteor",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x4658"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/3w6/rev1/config.h b/keyboards/3w6/rev1/config.h
index 0c14dc72d3..c9b8f8b58e 100644
--- a/keyboards/3w6/rev1/config.h
+++ b/keyboards/3w6/rev1/config.h
@@ -17,14 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x4658
-#define DEVICE_VER 0x0001
-#define MANUFACTURER weteor
-#define PRODUCT 3w6
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 10
@@ -44,11 +36,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS_L { B0, B1, B2, B4}
#define MATRIX_COL_PINS_L { B3, E6, F7, B6, B5 }
-#define UNUSED_PINS_L { B7, C6, C7, D2, D3, D4, D5, D6, D7, F0, F1, F4, F5, F6 }
#define MATRIX_ROW_PINS_R { P10, P11, P12, P05 }
#define MATRIX_COL_PINS_R { P06, P13, P14, P01, P00 }
-#define UNUSED_PINS_R { P02, P03, P04, P07, P15, P16, P17 }
/* COL2ROW, ROW2COL */
diff --git a/keyboards/3w6/rev1/info.json b/keyboards/3w6/rev1/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/3w6/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/3w6/rev2/config.h b/keyboards/3w6/rev2/config.h
index 4101aa76cd..c9b8f8b58e 100644
--- a/keyboards/3w6/rev2/config.h
+++ b/keyboards/3w6/rev2/config.h
@@ -17,14 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x4658
-#define DEVICE_VER 0x0002
-#define MANUFACTURER weteor
-#define PRODUCT 3w6
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 10
@@ -44,11 +36,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS_L { B0, B1, B2, B4}
#define MATRIX_COL_PINS_L { B3, E6, F7, B6, B5 }
-#define UNUSED_PINS_L { B7, C6, C7, D2, D3, D4, D5, D6, D7, F0, F1, F4, F5, F6 }
#define MATRIX_ROW_PINS_R { P10, P11, P12, P05 }
#define MATRIX_COL_PINS_R { P06, P13, P14, P01, P00 }
-#define UNUSED_PINS_R { P02, P03, P04, P07, P15, P16, P17 }
/* COL2ROW, ROW2COL */
diff --git a/keyboards/3w6/rev2/info.json b/keyboards/3w6/rev2/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/3w6/rev2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/40percentclub/25/config.h b/keyboards/40percentclub/25/config.h
index c753f7c29f..9027cdac5f 100644
--- a/keyboards/40percentclub/25/config.h
+++ b/keyboards/40percentclub/25/config.h
@@ -44,7 +44,6 @@
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/4pack/config.h b/keyboards/40percentclub/4pack/config.h
index 943b918d56..67a21d3c97 100644
--- a/keyboards/40percentclub/4pack/config.h
+++ b/keyboards/40percentclub/4pack/config.h
@@ -38,7 +38,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIRECT_PINS { \
{ E6, D7, C6, D4 } \
}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/4x4/config.h b/keyboards/40percentclub/4x4/config.h
index 44628ac741..4744d61dbf 100644
--- a/keyboards/40percentclub/4x4/config.h
+++ b/keyboards/40percentclub/4x4/config.h
@@ -20,7 +20,6 @@
*/
#define MATRIX_ROW_PINS { B2, D1, D0, D4 }
#define MATRIX_COL_PINS { C6, D7, E6, B4, B5, B6, B7, D6, F7, F6, F5, F4, F1, F0, B3, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/5x5/config.h b/keyboards/40percentclub/5x5/config.h
index 460f5ba93d..60a5122830 100644
--- a/keyboards/40percentclub/5x5/config.h
+++ b/keyboards/40percentclub/5x5/config.h
@@ -20,7 +20,6 @@
*/
#define MATRIX_ROW_PINS { B2, D1, D0, D4, C6 }
#define MATRIX_COL_PINS { D7, E6, B4, B5, B6, B7, D6, F7, F6, F5, F4, F1, F0, B3, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/6lit/config.h b/keyboards/40percentclub/6lit/config.h
index 302decc162..c886eb48da 100644
--- a/keyboards/40percentclub/6lit/config.h
+++ b/keyboards/40percentclub/6lit/config.h
@@ -45,7 +45,6 @@
*/
#define MATRIX_ROW_PINS { D7, E6 }
#define MATRIX_COL_PINS { F6, F7, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/foobar/config.h b/keyboards/40percentclub/foobar/config.h
index afc50acb7e..d507a2c445 100644
--- a/keyboards/40percentclub/foobar/config.h
+++ b/keyboards/40percentclub/foobar/config.h
@@ -45,7 +45,6 @@
*/
#define MATRIX_ROW_PINS { D7, E6, B4 }
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/gherkin/config.h b/keyboards/40percentclub/gherkin/config.h
index e7062990cb..db81033f9b 100644
--- a/keyboards/40percentclub/gherkin/config.h
+++ b/keyboards/40percentclub/gherkin/config.h
@@ -9,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F7, B1, B3, B2, B6 }
#define MATRIX_COL_PINS { B4, E6, D7, C6, D4, D0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/gherkin/keymaps/bbaserdem/README.md b/keyboards/40percentclub/gherkin/keymaps/bbaserdem/README.md
deleted file mode 100644
index 3c9a5e98b3..0000000000
--- a/keyboards/40percentclub/gherkin/keymaps/bbaserdem/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Gherkin Layout
-This is my gherkin layout.
-It is used as a game pad, and key layout is inspired by spare keys I had lying around.
-The firmware is very simple, and only includes one layer keymap, and RGB effects.
-
-# Flashing
-The following command should be used from the main qmk directory.
-```
-make gherkin:bbaserdem
-sudo avrdude -p atmgea34u4 -P `ls /dev/ttyACM*` -c avr109 -U flash:.build/gherkin_bbaserdem.hex
-```
diff --git a/keyboards/40percentclub/gherkin/keymaps/bbaserdem/config.h b/keyboards/40percentclub/gherkin/keymaps/bbaserdem/config.h
deleted file mode 100644
index 5c9ca52d75..0000000000
--- a/keyboards/40percentclub/gherkin/keymaps/bbaserdem/config.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#pragma once
-
-#define RGB_DI_PIN F6
-#define RGBLED_NUM 10
-#define RGBLIGHT_ANIMATIONS
-#ifdef BACKLIGHT_LEVELS
-#undef BACKLIGHT_LEVELS
-#endif
-#define BACKLIGHT_LEVELS 3
diff --git a/keyboards/40percentclub/gherkin/keymaps/bbaserdem/keymap.c b/keyboards/40percentclub/gherkin/keymaps/bbaserdem/keymap.c
deleted file mode 100644
index 0d3c8557c5..0000000000
--- a/keyboards/40percentclub/gherkin/keymaps/bbaserdem/keymap.c
+++ /dev/null
@@ -1,36 +0,0 @@
-// This is a game-pad gherkin layout with RGB and LED lights
-
-#include QMK_KEYBOARD_H
-
-backlight_config_t backlight_config;
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Game pad
- * ,-----------------------------------------------------------.
- * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | Ctl | Alt | ~ |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | Tab | Q | W | E | R | T | |^| | ; | ' | / |
- * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
- * | Shf | A | S | D | F | <-- | |v| | --> | , | . |
- * `-----------------------------------------------------------'
- */
- LAYOUT_ortho_3x10(
- KC_ESCAPE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_LCTRL, KC_LALT, KC_GRAVE,
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_UP, KC_SCLN, KC_QUOTE, KC_SLASH,
- KC_LSHIFT, KC_A, KC_S, KC_D, KC_F, KC_LEFT, KC_DOWN, KC_RIGHT, KC_COMMA, KC_DOT
- )
-};
-
-void matrix_init_user(void) {
- // Set LED's to max
- _delay_us(300);
- backlight_config.level = 2;
- backlight_config.enable = 1;
- eeconfig_update_backlight(backlight_config.raw);
- backlight_set(backlight_config.level);
- // Set RGB to rainbow mood light
- rgblight_enable();
- rgblight_mode(1);
- rgblight_sethsv(120,255,255);
- rgblight_mode(6);
-}
diff --git a/keyboards/40percentclub/gherkin/keymaps/bbaserdem/rules.mk b/keyboards/40percentclub/gherkin/keymaps/bbaserdem/rules.mk
deleted file mode 100644
index 07a20a4217..0000000000
--- a/keyboards/40percentclub/gherkin/keymaps/bbaserdem/rules.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-USER_NAME := bbaserdem-nouserspace
-
-STENO_ENABLE = no # Additional protocols for Stenography(+1700), requires VIRTSER
-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
-SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
-AUDIO_ENABLE = no # Enable audio output from keyboard
-
-NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
-RGBLIGHT_ENABLE = yes # Enable RBG light strips
-BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
diff --git a/keyboards/40percentclub/gherkin/keymaps/itsaferbie/keymap.c b/keyboards/40percentclub/gherkin/keymaps/itsaferbie/keymap.c
index 950b6e86b9..32c074c88f 100644
--- a/keyboards/40percentclub/gherkin/keymaps/itsaferbie/keymap.c
+++ b/keyboards/40percentclub/gherkin/keymaps/itsaferbie/keymap.c
@@ -105,7 +105,7 @@ void matrix_scan_user(void) {
#ifdef RGBLIGHT_ENABLE
static uint8_t old_layer = 255;
- uint8_t new_layer = biton32(layer_state);
+ uint8_t new_layer = get_highest_layer(layer_state);
// Color of the Icons.
if (old_layer != new_layer) {
diff --git a/keyboards/40percentclub/gherkin/keymaps/midi/keymap.c b/keyboards/40percentclub/gherkin/keymaps/midi/keymap.c
index 965652441a..b4e8572f79 100644
--- a/keyboards/40percentclub/gherkin/keymaps/midi/keymap.c
+++ b/keyboards/40percentclub/gherkin/keymaps/midi/keymap.c
@@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MENU] = LAYOUT_ortho_3x10(
IONIAN, LYDIAN, LOCRIAN, _______, _______, _______, _______, _______, _______, _______,
DORIAN, MIXOLYDIAN, _______, _______, _______, _______, _______, _______, _______, _______,
- PHRYGIAN, AEOLIAN, _______, _______, _______, _______, _______, _______, RESET, _______
+ PHRYGIAN, AEOLIAN, _______, _______, _______, _______, _______, _______, QK_BOOT, _______
)
};
diff --git a/keyboards/40percentclub/gherkin/keymaps/mjt/keymap.c b/keyboards/40percentclub/gherkin/keymaps/mjt/keymap.c
index 2fd4c2a461..3a9e4d51fa 100644
--- a/keyboards/40percentclub/gherkin/keymaps/mjt/keymap.c
+++ b/keyboards/40percentclub/gherkin/keymaps/mjt/keymap.c
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
EXT_PLV, XXXXXXX, KC_C, KC_V, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
),
[_ADJUST] = LAYOUT_ortho_3x10(
- RESET, _______, _______, _______, _______, QWERTY, NUMBERS, SYMBOLS, PLOVER, SONGS,
+ QK_BOOT, _______, _______, _______, _______, QWERTY, NUMBERS, SYMBOLS, PLOVER, SONGS,
MUV_DE, MUV_IN, MU_ON, MU_OFF, _______, _______, _______, _______, MACSLEEP, _______,
BACKLIT, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/40percentclub/gherkin/keymaps/pierrec83/keymap.json b/keyboards/40percentclub/gherkin/keymaps/pierrec83/keymap.json
index 073eb568f0..21c84488dc 100644
--- a/keyboards/40percentclub/gherkin/keymaps/pierrec83/keymap.json
+++ b/keyboards/40percentclub/gherkin/keymaps/pierrec83/keymap.json
@@ -1 +1 @@
-{"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":"40percentclub/gherkin","keymap":"pierrec83","layout":"LAYOUT_ortho_3x10","layers":[["KC_Q","KC_D","KC_R","KC_W","KC_B","KC_J","KC_F","KC_U","KC_P","KC_BSPC","LSFT_T(KC_A)","LT(5,KC_S)","LT(1,KC_H)","LT(3,KC_T)","KC_G","KC_Y","LT(4,KC_N)","LT(2,KC_E)","LT(6,KC_O)","LSFT_T(KC_I)","KC_Z","KC_X","KC_M","KC_C","KC_V","LT(7,KC_SPC)","KC_L","LALT_T(KC_COMM)","LCTL_T(KC_DOT)","KC_K"],["KC_TRNS","ANY(LCTL(LSFT(KC_C)))","KC_PGUP","ANY(LCTL(LSFT(KC_V)))","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_PGDN","KC_TRNS","KC_TRNS","KC_TRNS","KC_MPRV","KC_WH_D","KC_MNXT","TG(1)"],["KC_TRNS","KC_TRNS","KC_PGUP","KC_TRNS","KC_TRNS","BL_BRTG","BL_INC","KC_WH_U","KC_TRNS","KC_TRNS","KC_LEFT","KC_UP","KC_DOWN","KC_RGHT","KC_TRNS","BL_TOGG","KC_LGUI","KC_NO","LCTL(KC_LALT)","LCA(KC_LSFT)","KC_TRNS","KC_HOME","KC_PGDN","KC_END","KC_TRNS","BL_STEP","BL_DEC","KC_WH_D","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_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_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_F7","KC_F8","KC_F9","KC_F10","KC_LCTL","KC_NO","KC_LALT","LCTL(KC_LALT)","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_PSLS","KC_7","KC_8","KC_9","KC_PPLS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_0","KC_4","KC_5","KC_6","KC_PMNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_NO","KC_TRNS","KC_PAST","KC_1","KC_2","KC_3","KC_PEQL","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS"],["LT(8,KC_TRNS)","KC_ESC","KC_COLN","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_DEL","KC_TRNS","KC_PERC","KC_SLSH","KC_ENT","KC_EXLM","KC_TRNS","KC_LGUI","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TAB","KC_TRNS","KC_TRNS","RALT(KC_TRNS)","RCTL(KC_TRNS)","TG(1)"],["KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","EEP_RST","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"]],"author":"Anonymous"} \ No newline at end of file
+{"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":"40percentclub/gherkin","keymap":"pierrec83","layout":"LAYOUT_ortho_3x10","layers":[["KC_Q","KC_D","KC_R","KC_W","KC_B","KC_J","KC_F","KC_U","KC_P","KC_BSPC","LSFT_T(KC_A)","LT(5,KC_S)","LT(1,KC_H)","LT(3,KC_T)","KC_G","KC_Y","LT(4,KC_N)","LT(2,KC_E)","LT(6,KC_O)","LSFT_T(KC_I)","KC_Z","KC_X","KC_M","KC_C","KC_V","LT(7,KC_SPC)","KC_L","LALT_T(KC_COMM)","LCTL_T(KC_DOT)","KC_K"],["KC_TRNS","ANY(LCTL(LSFT(KC_C)))","KC_PGUP","ANY(LCTL(LSFT(KC_V)))","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_PGDN","KC_TRNS","KC_TRNS","KC_TRNS","KC_MPRV","KC_WH_D","KC_MNXT","TG(1)"],["KC_TRNS","KC_TRNS","KC_PGUP","KC_TRNS","KC_TRNS","BL_BRTG","BL_INC","KC_WH_U","KC_TRNS","KC_TRNS","KC_LEFT","KC_UP","KC_DOWN","KC_RGHT","KC_TRNS","BL_TOGG","KC_LGUI","KC_NO","LCTL(KC_LALT)","LCA(KC_LSFT)","KC_TRNS","KC_HOME","KC_PGDN","KC_END","KC_TRNS","BL_STEP","BL_DEC","KC_WH_D","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_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_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_F7","KC_F8","KC_F9","KC_F10","KC_LCTL","KC_NO","KC_LALT","LCTL(KC_LALT)","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_PSLS","KC_7","KC_8","KC_9","KC_PPLS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_0","KC_4","KC_5","KC_6","KC_PMNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_NO","KC_TRNS","KC_PAST","KC_1","KC_2","KC_3","KC_PEQL","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS"],["LT(8,KC_TRNS)","KC_ESC","KC_COLN","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_DEL","KC_TRNS","KC_PERC","KC_SLSH","KC_ENT","KC_EXLM","KC_TRNS","KC_LGUI","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TAB","KC_TRNS","KC_TRNS","RALT(KC_TRNS)","RCTL(KC_TRNS)","TG(1)"],["KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","EEP_RST","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","QK_BOOT","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO"]],"author":"Anonymous"} \ No newline at end of file
diff --git a/keyboards/40percentclub/gherkin/keymaps/stevexyz/config.h b/keyboards/40percentclub/gherkin/keymaps/stevexyz/config.h
index c708babf16..d837be8ba1 100644
--- a/keyboards/40percentclub/gherkin/keymaps/stevexyz/config.h
+++ b/keyboards/40percentclub/gherkin/keymaps/stevexyz/config.h
@@ -39,8 +39,6 @@
// how long before oneshot times out
#define ONESHOT_TAP_TOGGLE 2
// how many taps before oneshot toggle is triggered
- #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 COMBO_COUNT 2
// Set this to the number of combos that you're using in the Combo feature.
#define COMBO_TERM 200
diff --git a/keyboards/40percentclub/gherkin/keymaps/talljoe-gherkin/keymap.c b/keyboards/40percentclub/gherkin/keymaps/talljoe-gherkin/keymap.c
index 2c3e872265..111264c378 100644
--- a/keyboards/40percentclub/gherkin/keymaps/talljoe-gherkin/keymap.c
+++ b/keyboards/40percentclub/gherkin/keymaps/talljoe-gherkin/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_ortho_3x10(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ST_BOLT, ST_GEM, TG_PLV,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT
),
};
diff --git a/keyboards/40percentclub/half_n_half/config.h b/keyboards/40percentclub/half_n_half/config.h
index 2ed218199f..f47788ce87 100644
--- a/keyboards/40percentclub/half_n_half/config.h
+++ b/keyboards/40percentclub/half_n_half/config.h
@@ -35,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/half_n_half/keymaps/Boy_314/keymap.c b/keyboards/40percentclub/half_n_half/keymaps/Boy_314/keymap.c
index 2eef3dc48b..b7c31f9bd7 100644
--- a/keyboards/40percentclub/half_n_half/keymaps/Boy_314/keymap.c
+++ b/keyboards/40percentclub/half_n_half/keymaps/Boy_314/keymap.c
@@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------' `-------------'
*/
[_RAISE] = LAYOUT(/* Arrows, Shifted Numbers, Symbols, Delete, Macros */
- RESET, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, PRVWIN, CLSTAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, PRVWIN, CLSTAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
KC_GRV, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, NEWTAB, ALTF4, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS, KC_TRNS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS,
KC_TRNS, KC_TRNS
@@ -128,10 +128,10 @@ void tap_dance_choose_layer_reset (qk_tap_dance_state_t *state, void *user_data)
layer_off(_RAISE);
break;
case 3:
- if (biton32(default_layer_state) == _DVORAK) {
+ if (get_highest_layer(default_layer_state) == _DVORAK) {
set_single_persistent_default_layer(_QWERTY);
}
- else if (biton32(default_layer_state) == _QWERTY) {
+ else if (get_highest_layer(default_layer_state) == _QWERTY) {
set_single_persistent_default_layer(_DVORAK);
}
break;
diff --git a/keyboards/40percentclub/i75/promicro/config.h b/keyboards/40percentclub/i75/promicro/config.h
index d4cd997736..971f626cc8 100644
--- a/keyboards/40percentclub/i75/promicro/config.h
+++ b/keyboards/40percentclub/i75/promicro/config.h
@@ -34,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { B4, E6, D7, C6, D4, D0, D1, D2, D3 }
#define MATRIX_COL_PINS { B5, B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/i75/teensy2/config.h b/keyboards/40percentclub/i75/teensy2/config.h
index bcf9b1b888..77ef177f0d 100644
--- a/keyboards/40percentclub/i75/teensy2/config.h
+++ b/keyboards/40percentclub/i75/teensy2/config.h
@@ -34,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { D3, D2, D1, D0, B7, B3, B2, B1, B0 }
#define MATRIX_COL_PINS { C6, C7, D6, D7, B5, B6, F7, F6, F5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/luddite/config.h b/keyboards/40percentclub/luddite/config.h
index 3924841b04..9ea825e7d7 100644
--- a/keyboards/40percentclub/luddite/config.h
+++ b/keyboards/40percentclub/luddite/config.h
@@ -9,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D3, D2, D1, D0, D4, C6, D7, E6 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/mf68/config.h b/keyboards/40percentclub/mf68/config.h
index 404cd6f7d3..6853462585 100644
--- a/keyboards/40percentclub/mf68/config.h
+++ b/keyboards/40percentclub/mf68/config.h
@@ -35,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, B2, B3, B1, F7, F6, F5, F4 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/mf68/keymaps/delivrance/rules.mk b/keyboards/40percentclub/mf68/keymaps/delivrance/rules.mk
index 5ac2ce5ccb..3d056cb71b 100644
--- a/keyboards/40percentclub/mf68/keymaps/delivrance/rules.mk
+++ b/keyboards/40percentclub/mf68/keymaps/delivrance/rules.mk
@@ -1,6 +1,5 @@
BACKLIGHT_DRIVER = custom
NKRO_ENABLE = yes
-TERMINAL_ENABLE = yes
DYNAMIC_MACRO_ENABLE = yes
# Use RAM (fake EEPROM, transient) instead of real EEPROM
diff --git a/keyboards/40percentclub/mf68/keymaps/mf68_ble/config.h b/keyboards/40percentclub/mf68/keymaps/mf68_ble/config.h
index bc5de30f2f..caaafa67c6 100644
--- a/keyboards/40percentclub/mf68/keymaps/mf68_ble/config.h
+++ b/keyboards/40percentclub/mf68/keymaps/mf68_ble/config.h
@@ -33,7 +33,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#undef MATRIX_ROW_PINS
#undef MATRIX_COL_PINS
-#undef UNUSED_PINS
#define MATRIX_ROW_PINS { D1, D0, C6, D7, B5, B6, B7, D6 }
#define MATRIX_COL_PINS { C7, F7, F6, F5, F4, F1, F0, D2, D3 }
-#define UNUSED_PINS {B5}
diff --git a/keyboards/40percentclub/nano/config.h b/keyboards/40percentclub/nano/config.h
index 7d789cff04..e71f91a030 100644
--- a/keyboards/40percentclub/nano/config.h
+++ b/keyboards/40percentclub/nano/config.h
@@ -40,7 +40,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ F4, F5, F6, F7 }, \
{ D1, D0, D4, C6 }, \
}
-#define UNUSED_PINS
/* ws2812 RGB LED */
#define RGB_DI_PIN D3
diff --git a/keyboards/40percentclub/nein/config.h b/keyboards/40percentclub/nein/config.h
index 53c227d832..48f7f949fb 100644
--- a/keyboards/40percentclub/nein/config.h
+++ b/keyboards/40percentclub/nein/config.h
@@ -28,7 +28,6 @@
{ F7, B1, B3 }, \
{ B2, B6, B5 } \
}
-#define UNUSED_PINS
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
diff --git a/keyboards/40percentclub/nori/config.h b/keyboards/40percentclub/nori/config.h
index bf0507716f..01d4f9b537 100644
--- a/keyboards/40percentclub/nori/config.h
+++ b/keyboards/40percentclub/nori/config.h
@@ -34,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { D3, D2, D1, D0 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D4, C6, D7, E6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/nori/keymaps/default/keymap.c b/keyboards/40percentclub/nori/keymaps/default/keymap.c
index 25d5c89af3..f7760a268f 100644
--- a/keyboards/40percentclub/nori/keymaps/default/keymap.c
+++ b/keyboards/40percentclub/nori/keymaps/default/keymap.c
@@ -4,12 +4,14 @@
// 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 layer_names {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/40percentclub/nori/keymaps/wings_36key/keymap.c b/keyboards/40percentclub/nori/keymaps/wings_36key/keymap.c
index 7d9d516590..40d59ecf76 100644
--- a/keyboards/40percentclub/nori/keymaps/wings_36key/keymap.c
+++ b/keyboards/40percentclub/nori/keymaps/wings_36key/keymap.c
@@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Adjust (Lower + Raise)
* ,-----------------------------------------------------------------------------------.
- * |PntSrn| | | PgUp |BrtUp | | | Mute |VolDw |VolUp |Ply/Ps|RESET |
+ * |PntSrn| | | PgUp |BrtUp | | | Mute |VolDw |VolUp |Ply/Ps|QK_BOOT |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | | | PgDw |BrtDw | | | Left | Down | Up |Right | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
@@ -92,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- KC_PSCR, XXXXXXX, XXXXXXX, KC_PGUP, KC_BRIU, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, RESET,
+ KC_PSCR, XXXXXXX, XXXXXXX, KC_PGUP, KC_BRIU, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, QK_BOOT,
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
diff --git a/keyboards/40percentclub/polyandry/promicro/config.h b/keyboards/40percentclub/polyandry/promicro/config.h
index e6f8643c44..f1bd8adc76 100644
--- a/keyboards/40percentclub/polyandry/promicro/config.h
+++ b/keyboards/40percentclub/polyandry/promicro/config.h
@@ -28,7 +28,6 @@
*/
#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/readme.md b/keyboards/40percentclub/polyandry/readme.md
index b6acf3cd7f..6162bea7a3 100644
--- a/keyboards/40percentclub/polyandry/readme.md
+++ b/keyboards/40percentclub/polyandry/readme.md
@@ -48,6 +48,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/teensy2/config.h b/keyboards/40percentclub/polyandry/teensy2/config.h
index d730ce6f94..6d6ba19489 100644
--- a/keyboards/40percentclub/polyandry/teensy2/config.h
+++ b/keyboards/40percentclub/polyandry/teensy2/config.h
@@ -30,7 +30,6 @@
#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/sixpack/config.h b/keyboards/40percentclub/sixpack/config.h
index 4ddad2efb7..9a03bc7974 100644
--- a/keyboards/40percentclub/sixpack/config.h
+++ b/keyboards/40percentclub/sixpack/config.h
@@ -37,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ D4, C6, D7 }, \
{ E6, B4, B5 } \
}
-#define UNUSED_PINS { D1, D0, C4, C5, B1, B2, B3 } // TX, RX, SDA, SCL, PB1, PB2, PB3 on expansion connector
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/tomato/config.h b/keyboards/40percentclub/tomato/config.h
index b6534622ea..a29f22834e 100644
--- a/keyboards/40percentclub/tomato/config.h
+++ b/keyboards/40percentclub/tomato/config.h
@@ -9,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F7, B1, B3, B2, B6 }
#define MATRIX_COL_PINS { B4, E6, D7, C6, D4, D0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/ut47/config.h b/keyboards/40percentclub/ut47/config.h
index 3724e4b2d5..04742e93e0 100644
--- a/keyboards/40percentclub/ut47/config.h
+++ b/keyboards/40percentclub/ut47/config.h
@@ -25,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D1, D0, D4, C6 }
#define MATRIX_COL_PINS { D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/40percentclub/ut47/keymaps/nordic/keymap.c b/keyboards/40percentclub/ut47/keymaps/nordic/keymap.c
index 5e79cdb9a4..64bc4506da 100644
--- a/keyboards/40percentclub/ut47/keymaps/nordic/keymap.c
+++ b/keyboards/40percentclub/ut47/keymaps/nordic/keymap.c
@@ -96,7 +96,7 @@ LAYOUT( /* Left modifier - L2 */
* |-------------------------------------------------------------------------+
* | | | | | | | |VolDn|VolUp| | | |
* |-------------------------------------------------------------------------+
- * | |LEDtg|LEDch| | |RESET| | Mute| |MouB1|MousU|MouB2|
+ * | |LEDtg|LEDch| | |QK_BOOT| | Mute| |MouB1|MousU|MouB2|
* |-------------------------------------------------------------------------+
* | | | | | | | | |MousL|MousD|MousR|
* `-------------------------------------------------------------------------'
@@ -105,7 +105,7 @@ LAYOUT( /* Left modifier - L2 */
LAYOUT( /* Hold Tab down - L3 */
KC_ESC, KC_CALC, KC_WHOM, KC_MYCM, KC_WREF, _______, _______, _______, _______, _______, KC_PSCR, CTRADEL,
_______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______, _______, _______,
- _______, LED_TOG, LED_CHG, _______, _______, RESET, _______, KC_MUTE, _______, KC_MS_BTN1, KC_MS_U, KC_MS_BTN2,
+ _______, LED_TOG, LED_CHG, _______, _______, QK_BOOT, _______, KC_MUTE, _______, KC_MS_BTN1, KC_MS_U, KC_MS_BTN2,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
),
diff --git a/keyboards/45_ats/config.h b/keyboards/45_ats/config.h
index 8177f89038..762abd0fce 100644
--- a/keyboards/45_ats/config.h
+++ b/keyboards/45_ats/config.h
@@ -30,7 +30,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D3, D5, D7, D6 }
#define MATRIX_COL_PINS { E6, B0, B1, B2, B3, B7, F6, F5, F4, C7, F7, C6, B6, D4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/4by3/config.h b/keyboards/4by3/config.h
index 27ad7441cc..be28796d1f 100644
--- a/keyboards/4by3/config.h
+++ b/keyboards/4by3/config.h
@@ -9,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D1, D0, D4 }
#define MATRIX_COL_PINS { C6, D7, E6, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/4pplet/aekiso60/rev_a/config.h b/keyboards/4pplet/aekiso60/rev_a/config.h
index 3100a20fea..ed14a11435 100644
--- a/keyboards/4pplet/aekiso60/rev_a/config.h
+++ b/keyboards/4pplet/aekiso60/rev_a/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4444
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 4pplet
-#define PRODUCT AEKISO60 Rev A
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/4pplet/aekiso60/rev_a/info.json b/keyboards/4pplet/aekiso60/rev_a/info.json
index 7f2e2be78a..f838933c08 100644
--- a/keyboards/4pplet/aekiso60/rev_a/info.json
+++ b/keyboards/4pplet/aekiso60/rev_a/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "AEKISO60 Rev A",
+ "manufacturer": "4pplet",
"url": "",
"maintainer": "4pplet",
+ "usb": {
+ "vid": "0x4444",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/4pplet/bootleg/info.json b/keyboards/4pplet/bootleg/info.json
deleted file mode 100644
index 9719b07150..0000000000
--- a/keyboards/4pplet/bootleg/info.json
+++ /dev/null
@@ -1,77 +0,0 @@
-{
- "keyboard_name": "bootleg Rev A",
- "url": "https://github.com/4pplet/bootlegs",
- "maintainer": "4pplet",
- "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": "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": "Backsp.", "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": 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, "w": 1 },
- { "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": "Menu", "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 }
- ]
- }
- }
-}
diff --git a/keyboards/4pplet/bootleg/rev_a/config.h b/keyboards/4pplet/bootleg/rev_a/config.h
index 4d3122afd2..1fb06d5bf6 100644
--- a/keyboards/4pplet/bootleg/rev_a/config.h
+++ b/keyboards/4pplet/bootleg/rev_a/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4444
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 4pplet
-#define PRODUCT bootleg Rev A
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/4pplet/bootleg/rev_a/info.json b/keyboards/4pplet/bootleg/rev_a/info.json
new file mode 100644
index 0000000000..007ba9fef4
--- /dev/null
+++ b/keyboards/4pplet/bootleg/rev_a/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "bootleg Rev A",
+ "manufacturer": "4pplet",
+ "url": "https://github.com/4pplet/bootlegs",
+ "maintainer": "4pplet",
+ "usb": {
+ "vid": "0x4444",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
+ "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": "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": "Backsp.", "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": 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, "w": 1 },
+ { "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": "Menu", "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 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/4pplet/eagle_viper_rep/info.json b/keyboards/4pplet/eagle_viper_rep/info.json
deleted file mode 100644
index 26d3d45893..0000000000
--- a/keyboards/4pplet/eagle_viper_rep/info.json
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "keyboard_name": "Eagle/Viper Rep",
- "url": "https://github.com/4pplet/eagle_viper_rep",
- "maintainer": "4pplet",
- "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": "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": "Backsp.", "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, "w": 1 },
- { "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": "Menu", "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 }
- ]
- }
- }
-}
diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/config.h b/keyboards/4pplet/eagle_viper_rep/rev_a/config.h
index 4edb4754e9..951c943f1d 100644
--- a/keyboards/4pplet/eagle_viper_rep/rev_a/config.h
+++ b/keyboards/4pplet/eagle_viper_rep/rev_a/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4444
-#define PRODUCT_ID 0x0007
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 4pplet
-#define PRODUCT Eagle Viper REP Rev A
-
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/info.json b/keyboards/4pplet/eagle_viper_rep/rev_a/info.json
new file mode 100644
index 0000000000..110e1cce92
--- /dev/null
+++ b/keyboards/4pplet/eagle_viper_rep/rev_a/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "Eagle Viper REP Rev A",
+ "manufacturer": "4pplet",
+ "url": "https://github.com/4pplet/eagle_viper_rep",
+ "maintainer": "4pplet",
+ "usb": {
+ "vid": "0x4444",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
+ "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": "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": "Backsp.", "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, "w": 1 },
+ { "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": "Menu", "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 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/4pplet/perk60_iso/keymaps/default/keymap.c b/keyboards/4pplet/perk60_iso/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d492302344
--- /dev/null
+++ b/keyboards/4pplet/perk60_iso/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/*
+Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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] = {
+// main layer
+[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_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),
+ // basic function layer
+[1] = LAYOUT_60_iso(
+ QK_BOOT, KC_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, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, 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, RGB_MODE_PLAIN, RGB_MODE_BREATHE, RGB_MODE_RAINBOW, 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/4pplet/perk60_iso/keymaps/via/keymap.c b/keyboards/4pplet/perk60_iso/keymaps/via/keymap.c
new file mode 100644
index 0000000000..22436397bd
--- /dev/null
+++ b/keyboards/4pplet/perk60_iso/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/*
+Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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] = {
+// main layer// main layer
+[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_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),
+ // basic function layer
+[1] = LAYOUT_60_iso(
+ QK_BOOT, KC_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, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, 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, RGB_MODE_PLAIN, RGB_MODE_BREATHE, RGB_MODE_RAINBOW, 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_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_UP, 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_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_LEFT, KC_DOWN, KC_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/peej/rosaline/keymaps/via-ortho/rules.mk b/keyboards/4pplet/perk60_iso/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/peej/rosaline/keymaps/via-ortho/rules.mk
+++ b/keyboards/4pplet/perk60_iso/keymaps/via/rules.mk
diff --git a/keyboards/4pplet/perk60_iso/readme.md b/keyboards/4pplet/perk60_iso/readme.md
new file mode 100644
index 0000000000..d3390c0c00
--- /dev/null
+++ b/keyboards/4pplet/perk60_iso/readme.md
@@ -0,0 +1,17 @@
+# Perk60 ISO Rev A
+
+* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
+* Hardware Supported: Perk60 ISO Rev A
+
+Make example for this keyboard (after setting up your build environment):
+
+ make 4pplet/perk60_iso/rev_a: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):
+* Press and hold the button on the keyboard (the small one on the same side as the MCU) for more than 1 second. The keyboard will then enter bootloader (DFU) mode and it's ready to flash the firmware.
+* Note: If holding the button a shorter time, the keyboard will just reset. If you want to exit bootloader mode without flashing a firmware, dissconnect the keyboard from your PC and reconnect it.
+
+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. Bootmagic lite is enabled by default.
diff --git a/keyboards/4pplet/perk60_iso/rev_a/config.h b/keyboards/4pplet/perk60_iso/rev_a/config.h
new file mode 100644
index 0000000000..bd24723df0
--- /dev/null
+++ b/keyboards/4pplet/perk60_iso/rev_a/config.h
@@ -0,0 +1,70 @@
+/*
+Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+#define MATRIX_COL_PINS { A1, B12, B14, A2, A0, A3, A4}
+#define MATRIX_ROW_PINS { C14, C13, B5, B4, B8, A15, B3, B9, A5, A7}
+#define DIODE_DIRECTION COL2ROW
+
+/* 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
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#define DRIVER_ADDR_1 0b1010000
+#define DRIVER_COUNT 1
+#define DRIVER_LED_TOTAL 62
+#define ISSI_PWM_FREQUENCY 0b010
+
+#define RGB_MATRIX_STARTUP_VAL 80
+#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_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
+// 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_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+
diff --git a/keyboards/4pplet/perk60_iso/rev_a/halconf.h b/keyboards/4pplet/perk60_iso/rev_a/halconf.h
new file mode 100644
index 0000000000..a1aac3152d
--- /dev/null
+++ b/keyboards/4pplet/perk60_iso/rev_a/halconf.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 HAL_USE_I2C TRUE
+
+#define HAL_USE_PWM FALSE
+
+#define HAL_USE_SPI FALSE
+
+#include_next <halconf.h>
diff --git a/keyboards/4pplet/perk60_iso/rev_a/info.json b/keyboards/4pplet/perk60_iso/rev_a/info.json
new file mode 100644
index 0000000000..2c61e91a96
--- /dev/null
+++ b/keyboards/4pplet/perk60_iso/rev_a/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Perk60 ISO Rev A",
+ "manufacturer": "4pplet",
+ "url": "",
+ "maintainer": "4pplet",
+ "usb": {
+ "vid": "0x4444",
+ "pid": "0x0009",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_60_iso": {
+ "layout": [{"label":"\u00ac", "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":"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":"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":"Ctrl", "x":13.75, "y":4, "w":1.25}]
+ }
+ }
+}
diff --git a/keyboards/4pplet/perk60_iso/rev_a/mcuconf.h b/keyboards/4pplet/perk60_iso/rev_a/mcuconf.h
new file mode 100644
index 0000000000..dd68a8c1e7
--- /dev/null
+++ b/keyboards/4pplet/perk60_iso/rev_a/mcuconf.h
@@ -0,0 +1,27 @@
+/* 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_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/4pplet/perk60_iso/rev_a/readme.md b/keyboards/4pplet/perk60_iso/rev_a/readme.md
new file mode 100644
index 0000000000..d3390c0c00
--- /dev/null
+++ b/keyboards/4pplet/perk60_iso/rev_a/readme.md
@@ -0,0 +1,17 @@
+# Perk60 ISO Rev A
+
+* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
+* Hardware Supported: Perk60 ISO Rev A
+
+Make example for this keyboard (after setting up your build environment):
+
+ make 4pplet/perk60_iso/rev_a: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):
+* Press and hold the button on the keyboard (the small one on the same side as the MCU) for more than 1 second. The keyboard will then enter bootloader (DFU) mode and it's ready to flash the firmware.
+* Note: If holding the button a shorter time, the keyboard will just reset. If you want to exit bootloader mode without flashing a firmware, dissconnect the keyboard from your PC and reconnect it.
+
+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. Bootmagic lite is enabled by default.
diff --git a/keyboards/4pplet/perk60_iso/rev_a/rev_a.c b/keyboards/4pplet/perk60_iso/rev_a/rev_a.c
new file mode 100644
index 0000000000..8f6ef05cec
--- /dev/null
+++ b/keyboards/4pplet/perk60_iso/rev_a/rev_a.c
@@ -0,0 +1,126 @@
+/*
+Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You 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_a.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
+ { 0, K_2, J_2, L_2 }, //D402
+ { 0, K_3, J_3, L_3 }, //D403
+ { 0, K_4, J_4, L_4 }, //D404
+ { 0, K_5, J_5, L_5 }, //D405
+ { 0, K_6, J_6, L_6 }, //D406
+ { 0, K_7, J_7, L_7 }, //D407
+ { 0, K_8, J_8, L_8 }, //D408
+ { 0, K_9, J_9, L_9 }, //D409
+ { 0, K_10, J_10, L_10 }, //D410
+ { 0, K_11, J_11, L_11 }, //D411
+ { 0, K_12, J_12, L_12 }, //D412
+ { 0, K_13, J_13, L_13 }, //D413
+ { 0, K_14, J_14, L_14 }, //D414
+ { 0, K_15, J_15, L_15 }, //D415
+ { 0, K_1, J_1, L_1 }, //D401
+ { 0, H_4, G_4, I_4 }, //D420
+ { 0, H_5, G_5, I_5 }, //D421
+ { 0, H_6, G_6, I_6 }, //D422
+ { 0, H_7, G_7, I_7 }, //D423
+ { 0, H_8, G_8, I_8 }, //D424
+ { 0, H_9, G_9, I_9 }, //D425
+ { 0, H_10, G_10, I_10 }, //D426
+ { 0, H_11, G_11, I_11 }, //D427
+ { 0, H_12, G_12, I_12 }, //D428
+ { 0, H_13, G_13, I_13 }, //D429
+ { 0, H_14, G_14, I_14 }, //D430
+ { 0, H_15, G_15, I_15 }, //D431
+ { 0, K_16, J_16, L_16 }, //D416
+ { 0, H_2, G_2, I_2 }, //D418
+ { 0, H_3, G_3, I_3 }, //D419
+ { 0, E_5, D_5, F_5 }, //D437
+ { 0, E_6, D_6, F_6 }, //D438
+ { 0, E_7, D_7, F_7 }, //D439
+ { 0, E_8, D_8, F_8 }, //D440
+ { 0, E_9, D_9, F_9 }, //D441
+ { 0, E_10, D_10, F_10 }, //D442
+ { 0, E_11, D_11, F_11 }, //D443
+ { 0, E_12, D_12, F_12 }, //D444
+ { 0, E_13, D_13, F_13 }, //D445
+ { 0, E_14, D_14, F_14 }, //D446
+ { 0, H_16, G_16, I_16 }, //D432
+ { 0, H_1, G_1, I_1 }, //D417
+ { 0, E_3, D_3, F_3 }, //D435
+ { 0, E_4, D_4, F_4 }, //D436
+ { 0, B_2, A_2, C_2 }, //D450
+ { 0, B_3, A_3, C_3 }, //D451
+ { 0, B_4, A_4, C_4 }, //D452
+ { 0, B_6, A_6, C_6 }, //D454
+ { 0, B_8, A_8, C_8 }, //D456
+ { 0, B_9, A_9, C_9 }, //D457
+ { 0, B_10, A_10, C_10 }, //D458
+ { 0, B_12, A_12, C_12 }, //D460
+ { 0, B_13, A_13, C_13 }, //D461
+ { 0, E_15, D_15, F_15 }, //D447
+ { 0, E_1, D_1, F_1 }, //D433
+ { 0, E_2, D_2, F_2 }, //D434
+ { 0, B_1, A_1, C_1 }, //D449
+ { 0, B_7, A_7, C_7 }, //D455
+ { 0, B_11, A_11, C_11 }, //D459
+ { 0, B_14, A_14, C_14 }, //D462
+ { 0, B_15, A_15, C_15 }, //D463
+ { 0, B_16, A_16, C_16 } //D464
+};
+
+led_config_t g_led_config = {
+ {
+ #define XXX NO_LED
+
+ { 0, 2, 4, 6, 8, 10, 12 },
+ { 1, 3, 5, 7, 9, 11, XXX },
+ { 14, 16, 18, 20, 22, 24, 26 },
+ { 15, 17, 19, 21, 23, 25, 13 },
+ { 28, 30, 32, 34, 36, 38, 40 },
+ { 29, 31, 33, 35, 37, 39, XXX },
+ { 41, 43, 45, 47, 49, 51, XXX },
+ { 42, 44, 46, 48, 50, 52, 27 },
+ { 54, 55, XXX, 57, XXX, 60, 53 },
+ { 56, XXX, XXX, 58, 59, 61, XXX },
+
+ }, {
+ { 0,0 }, { 16,0 }, { 32,0 }, { 48,0 }, { 65,0 }, { 81,0 }, { 97,0 }, {113,0 }, {129,0 }, {145,0 },
+ {161,0 }, {178,0 }, {194,0 }, {218,0 }, { 4,16 }, { 24,16 }, { 40,16 }, { 57,16 }, { 73,16 }, { 89,16 },
+ {105,16 }, {121,16 }, {137,16 }, {153,16 }, {170,16 }, {186,16 }, {202,16 }, {224,24 }, { 6,32 }, { 28,32 },
+ { 44,32 }, { 61,32 }, { 77,32 }, { 93,32 }, {109,32 }, {125,32 }, {141,32 }, {157,32 }, {174,32 }, {190,32 },
+ {206,32 }, { 2,48 }, { 20,48 }, { 36,48 }, { 52,48 }, { 69,48 }, { 85,48 }, {101,48 }, {117,48 }, {133,48 },
+ {149,48 }, {165,48 }, {182,48 }, {212,48 }, { 2,64 }, { 22,64 }, { 42,64 }, {103,64 }, {163,64 }, {184,64 },
+ {204,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,
+ 8, 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, 1, 1, 4, 1, 1, 1, 1
+ }
+};
+
+__attribute__((weak)) void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ if (host_keyboard_led_state().caps_lock && CAPS_LOCK_ENABLE) {
+ for (uint8_t i = led_min; i <= led_max; i++) {
+ if (g_led_config.flags[i] & CAPS_LED_GROUP) {
+ rgb_matrix_set_color(i, CAPS_LOCK_COLOR);
+ }
+ }
+ }
+}
+#endif
diff --git a/keyboards/4pplet/perk60_iso/rev_a/rev_a.h b/keyboards/4pplet/perk60_iso/rev_a/rev_a.h
new file mode 100644
index 0000000000..d1cd6a35d4
--- /dev/null
+++ b/keyboards/4pplet/perk60_iso/rev_a/rev_a.h
@@ -0,0 +1,43 @@
+/*
+Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 CAPS_LOCK_ENABLE true
+#define CAPS_LOCK_COLOR RGB_RED
+#define CAPS_LED_GROUP LED_FLAG_INDICATOR // change what leds to target, for example LED_FLAG_KEYLIGHT for alpas or LED_FLAG_MODIFIER for modifiers
+
+#include "quantum.h"
+
+#define LAYOUT_60_iso( \
+ k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k36, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k76, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k86,\
+ k80, k90, k81, k83, k93, k94, k85, k95 \
+) \
+{ \
+ {k00, k01, k02, k03, k04, k05, k06}, \
+ {k10, k11, k12, k13, k14, k15, KC_NO}, \
+ {k20, k21, k22, k23, k24, k25, k26}, \
+ {k30, k31, k32, k33, k34, k35, k36}, \
+ {k40, k41, k42, k43, k44, k45, k46}, \
+ {k50, k51, k52, k53, k54, k55, KC_NO}, \
+ {k60, k61, k62, k63, k64, k65, KC_NO}, \
+ {k70, k71, k72, k73, k74, k75, k76}, \
+ {k80, k81, KC_NO, k83, KC_NO, k85, k86}, \
+ {k90, KC_NO, KC_NO, k93, k94, k95, KC_NO} \
+}
diff --git a/keyboards/4pplet/perk60_iso/rev_a/rules.mk b/keyboards/4pplet/perk60_iso/rev_a/rules.mk
new file mode 100644
index 0000000000..8182d9e7e2
--- /dev/null
+++ b/keyboards/4pplet/perk60_iso/rev_a/rules.mk
@@ -0,0 +1,26 @@
+# MCU name
+MCU = STM32F411
+BOARD = GENERIC_STM32_F411XE
+
+# 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_ENABLE = yes
+RGB_MATRIX_DRIVER = IS31FL3733
+
+LAYOUTS = 60_iso
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/4pplet/steezy60/keymaps/4pplet/keymap.c b/keyboards/4pplet/steezy60/keymaps/4pplet/keymap.c
index 67820f2ac0..5e0b36d499 100644
--- a/keyboards/4pplet/steezy60/keymaps/4pplet/keymap.c
+++ b/keyboards/4pplet/steezy60/keymaps/4pplet/keymap.c
@@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_BSPC, KC_UP, KC_ENT, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_DEL,
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_MUTE, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, _______, KC_PENT,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______,
- DF(1), DF(0), _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, RESET )
+ DF(1), DF(0), _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, QK_BOOT )
};
diff --git a/keyboards/4pplet/steezy60/rev_a/config.h b/keyboards/4pplet/steezy60/rev_a/config.h
index 8f0c0d9531..2fa229bc44 100644
--- a/keyboards/4pplet/steezy60/rev_a/config.h
+++ b/keyboards/4pplet/steezy60/rev_a/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4444
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 4pplet
-#define PRODUCT Steezy60 Rev A
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/4pplet/steezy60/rev_a/info.json b/keyboards/4pplet/steezy60/rev_a/info.json
index cecd47559f..ba16d348b9 100644
--- a/keyboards/4pplet/steezy60/rev_a/info.json
+++ b/keyboards/4pplet/steezy60/rev_a/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Steezy60 Rev A",
+ "manufacturer": "4pplet",
"url": "",
"maintainer": "4pplet",
+ "usb": {
+ "vid": "0x4444",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/4pplet/waffling60/info.json b/keyboards/4pplet/waffling60/info.json
index 0ff2c1f7e8..9e4f081ddc 100644
--- a/keyboards/4pplet/waffling60/info.json
+++ b/keyboards/4pplet/waffling60/info.json
@@ -1,7 +1,10 @@
{
- "keyboard_name": "Waffling60 Rev A",
+ "manufacturer": "4pplet",
"url": "https://github.com/4pplet/waffling60",
"maintainer": "4pplet",
+ "usb": {
+ "vid": "0x4444"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/4pplet/waffling60/rev_a/config.h b/keyboards/4pplet/waffling60/rev_a/config.h
index 33279d67a7..5b5066859c 100644
--- a/keyboards/4pplet/waffling60/rev_a/config.h
+++ b/keyboards/4pplet/waffling60/rev_a/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4444
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 4pplet
-#define PRODUCT waffling60 Rev A
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 11
diff --git a/keyboards/4pplet/waffling60/rev_a/info.json b/keyboards/4pplet/waffling60/rev_a/info.json
new file mode 100644
index 0000000000..6d4bf31f32
--- /dev/null
+++ b/keyboards/4pplet/waffling60/rev_a/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Waffling60 Rev A",
+ "usb": {
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/4pplet/waffling60/rev_b/config.h b/keyboards/4pplet/waffling60/rev_b/config.h
index eb9882d738..69d9a485c5 100644
--- a/keyboards/4pplet/waffling60/rev_b/config.h
+++ b/keyboards/4pplet/waffling60/rev_b/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4444
-#define PRODUCT_ID 0x0005
-#define DEVICE_VER 0x0002
-#define MANUFACTURER 4pplet
-#define PRODUCT waffling60 Rev B
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/4pplet/waffling60/rev_b/info.json b/keyboards/4pplet/waffling60/rev_b/info.json
new file mode 100644
index 0000000000..1e0075d47b
--- /dev/null
+++ b/keyboards/4pplet/waffling60/rev_b/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Waffling60 Rev B",
+ "usb": {
+ "pid": "0x0005",
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/4pplet/waffling60/rev_c/config.h b/keyboards/4pplet/waffling60/rev_c/config.h
index e1862f4c0e..6afdcced5b 100644
--- a/keyboards/4pplet/waffling60/rev_c/config.h
+++ b/keyboards/4pplet/waffling60/rev_c/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/4pplet/waffling60/rev_c/info.json b/keyboards/4pplet/waffling60/rev_c/info.json
new file mode 100644
index 0000000000..5af681f27a
--- /dev/null
+++ b/keyboards/4pplet/waffling60/rev_c/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Waffling60 Rev C",
+ "usb": {
+ "pid": "0x0008",
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/4pplet/waffling80/info.json b/keyboards/4pplet/waffling80/info.json
deleted file mode 100644
index ca92728000..0000000000
--- a/keyboards/4pplet/waffling80/info.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "keyboard_name": "waffling80 Rev A",
- "url": "",
- "maintainer": "4pplet",
- "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":"F13", "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":"|", "x":13, "y":1.5}, {"label":"~", "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":"~", "x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":3.5, "w":1.25}, {"x":15.25, "y":3.5}, {"x":17.25, "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":"Fn", "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":2.25}, {"x":6, "y":5.5, "w":1.25}, {"x":7.25, "y":5.5, "w":2.75}, {"label":"AltGr", "x":10, "y":5.5, "w":1.25}, {"label":"Menu", "x":11.25, "y":5.5, "w":1.25}, {"label":"Win", "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/4pplet/waffling80/rev_a/config.h b/keyboards/4pplet/waffling80/rev_a/config.h
index 715414b641..a5eed83a80 100644
--- a/keyboards/4pplet/waffling80/rev_a/config.h
+++ b/keyboards/4pplet/waffling80/rev_a/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4444
-#define PRODUCT_ID 0x0006
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 4pplet
-#define PRODUCT waffling80 Rev A
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 8
diff --git a/keyboards/4pplet/waffling80/rev_a/info.json b/keyboards/4pplet/waffling80/rev_a/info.json
new file mode 100644
index 0000000000..16ff5f8cef
--- /dev/null
+++ b/keyboards/4pplet/waffling80/rev_a/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "waffling80 Rev A",
+ "manufacturer": "4pplet",
+ "url": "",
+ "maintainer": "4pplet",
+ "usb": {
+ "vid": "0x4444",
+ "pid": "0x0006",
+ "device_version": "0.0.1"
+ },
+ "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":"F13", "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":"|", "x":13, "y":1.5}, {"label":"~", "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":"~", "x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":3.5, "w":1.25}, {"x":15.25, "y":3.5}, {"x":17.25, "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":"Fn", "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":2.25}, {"x":6, "y":5.5, "w":1.25}, {"x":7.25, "y":5.5, "w":2.75}, {"label":"AltGr", "x":10, "y":5.5, "w":1.25}, {"label":"Menu", "x":11.25, "y":5.5, "w":1.25}, {"label":"Win", "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/4pplet/waffling80/rev_a/rev_a.h b/keyboards/4pplet/waffling80/rev_a/rev_a.h
index d79fa17ebe..298a1b5a9f 100644
--- a/keyboards/4pplet/waffling80/rev_a/rev_a.h
+++ b/keyboards/4pplet/waffling80/rev_a/rev_a.h
@@ -31,7 +31,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k47, k77, kb7, \
k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k76, \
k80, k90, k81, k91, k82, k92, k83, k93, k84, k94, k85, k95, k86, k96, k87, \
- ka0, ka1, kb1, kb2, ka3, kb3, ka4, kb4, ka5, kb5, ka6, kb6, ka7, \
+ ka0, kb1, ka1, kb2, ka3, kb3, ka4, kb4, ka5, kb5, ka6, kb6, ka7, \
kb0, ka2 \
) \
{ \
diff --git a/keyboards/4pplet/yakiimo/info.json b/keyboards/4pplet/yakiimo/info.json
deleted file mode 100644
index aa3dcb429b..0000000000
--- a/keyboards/4pplet/yakiimo/info.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "keyboard_name": "Yakiimo Rev A",
- "url": "https://github.com/4pplet/yakiimo-PCB",
- "maintainer": "4pplet",
- "layouts": {
- "LAYOUT_all": {
- "layout": [{"label":"Esc", "x":2.75, "y":0}, {"label":"F1", "x":4.75, "y":0}, {"label":"F2", "x":5.75, "y":0}, {"label":"F3", "x":6.75, "y":0}, {"label":"F4", "x":7.75, "y":0}, {"label":"F5", "x":9.25, "y":0}, {"label":"F6", "x":10.25, "y":0}, {"label":"F7", "x":11.25, "y":0}, {"label":"F8", "x":12.25, "y":0}, {"label":"F9", "x":13.75, "y":0}, {"label":"F10", "x":14.75, "y":0}, {"label":"F11", "x":15.75, "y":0}, {"label":"F12", "x":16.75, "y":0}, {"label":"PrtSc", "x":18, "y":0}, {"label":"Scroll Lock", "x":19, "y":0}, {"label":"Pause", "x":20, "y":0}, {"label":"~", "x":2.75, "y":1.5}, {"label":"!", "x":3.75, "y":1.5}, {"label":"@", "x":4.75, "y":1.5}, {"label":"#", "x":5.75, "y":1.5}, {"label":"$", "x":6.75, "y":1.5}, {"label":"%", "x":7.75, "y":1.5}, {"label":"^", "x":8.75, "y":1.5}, {"label":"&", "x":9.75, "y":1.5}, {"label":"*", "x":10.75, "y":1.5}, {"label":"(", "x":11.75, "y":1.5}, {"label":")", "x":12.75, "y":1.5}, {"label":"_", "x":13.75, "y":1.5}, {"label":"+", "x":14.75, "y":1.5}, {"label":"|", "x":15.75, "y":1.5}, {"label":"~", "x":16.75, "y":1.5}, {"label":"Insert", "x":18, "y":1.5}, {"label":"Home", "x":19, "y":1.5}, {"label":"PgUp", "x":20, "y":1.5}, {"label":"Tab", "x":2.75, "y":2.5, "w":1.5}, {"label":"Q", "x":4.25, "y":2.5}, {"label":"W", "x":5.25, "y":2.5}, {"label":"E", "x":6.25, "y":2.5}, {"label":"R", "x":7.25, "y":2.5}, {"label":"T", "x":8.25, "y":2.5}, {"label":"Y", "x":9.25, "y":2.5}, {"label":"U", "x":10.25, "y":2.5}, {"label":"I", "x":11.25, "y":2.5}, {"label":"O", "x":12.25, "y":2.5}, {"label":"P", "x":13.25, "y":2.5}, {"label":"{", "x":14.25, "y":2.5}, {"label":"}", "x":15.25, "y":2.5}, {"label":"|", "x":16.25, "y":2.5, "w":1.5}, {"label":"Delete", "x":18, "y":2.5}, {"label":"End", "x":19, "y":2.5}, {"label":"PgDn", "x":20, "y":2.5}, {"label":"Caps Lock", "x":2.75, "y":3.5, "w":1.75}, {"label":"A", "x":4.5, "y":3.5}, {"label":"S", "x":5.5, "y":3.5}, {"label":"D", "x":6.5, "y":3.5}, {"label":"F", "x":7.5, "y":3.5}, {"label":"G", "x":8.5, "y":3.5}, {"label":"H", "x":9.5, "y":3.5}, {"label":"J", "x":10.5, "y":3.5}, {"label":"K", "x":11.5, "y":3.5}, {"label":"L", "x":12.5, "y":3.5}, {"label":":", "x":13.5, "y":3.5}, {"label":"\"", "x":14.5, "y":3.5}, {"label":"~", "x":15.5, "y":3.5}, {"label":"Enter", "x":16.5, "y":3.5, "w":1.25}, {"label":"Shift", "x":2.75, "y":4.5, "w":1.25}, {"label":"|", "x":4, "y":4.5}, {"label":"Z", "x":5, "y":4.5}, {"label":"X", "x":6, "y":4.5}, {"label":"C", "x":7, "y":4.5}, {"label":"V", "x":8, "y":4.5}, {"label":"B", "x":9, "y":4.5}, {"label":"N", "x":10, "y":4.5}, {"label":"M", "x":11, "y":4.5}, {"label":"<", "x":12, "y":4.5}, {"label":">", "x":13, "y":4.5}, {"label":"?", "x":14, "y":4.5}, {"label":"Shift", "x":15, "y":4.5, "w":1.75}, {"label":"Fn", "x":16.75, "y":4.5}, {"label":"\u2191", "x":19, "y":4.5}, {"label":"Ctrl", "x":2.75, "y":5.5, "w":1.5}, {"label":"Win", "x":4.25, "y":5.5}, {"label":"Alt", "x":5.25, "y":5.5, "w":1.5}, {"x":6.75, "y":5.5, "w":3}, {"x":9.75, "y":5.5}, {"x":10.75, "y":5.5, "w":3}, {"label":"AltGr", "x":13.75, "y":5.5, "w":1.5}, {"label":"Win", "x":15.25, "y":5.5}, {"label":"Ctrl", "x":16.25, "y":5.5, "w":1.5}, {"label":"\u2190", "x":18, "y":5.5}, {"label":"\u2193", "x":19, "y":5.5}, {"label":"\u2192", "x":20, "y":5.5}]
- }
- }
-}
diff --git a/keyboards/4pplet/yakiimo/rev_a/config.h b/keyboards/4pplet/yakiimo/rev_a/config.h
index 762ff55c41..4200eb10c7 100644
--- a/keyboards/4pplet/yakiimo/rev_a/config.h
+++ b/keyboards/4pplet/yakiimo/rev_a/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4444
-#define PRODUCT_ID 0x000A
-#define DEVICE_VER 0x0002
-#define MANUFACTURER 4pplet
-#define PRODUCT Yakiimo Rev A
-
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -40,5 +33,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
-
-#define STM32_HSECLK 8000000
diff --git a/keyboards/4pplet/yakiimo/rev_a/info.json b/keyboards/4pplet/yakiimo/rev_a/info.json
new file mode 100644
index 0000000000..f4eeba747f
--- /dev/null
+++ b/keyboards/4pplet/yakiimo/rev_a/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Yakiimo Rev A",
+ "manufacturer": "4pplet",
+ "url": "https://github.com/4pplet/yakiimo-PCB",
+ "maintainer": "4pplet",
+ "usb": {
+ "vid": "0x4444",
+ "pid": "0x000A",
+ "device_version": "0.0.2"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"Esc", "x":2.75, "y":0}, {"label":"F1", "x":4.75, "y":0}, {"label":"F2", "x":5.75, "y":0}, {"label":"F3", "x":6.75, "y":0}, {"label":"F4", "x":7.75, "y":0}, {"label":"F5", "x":9.25, "y":0}, {"label":"F6", "x":10.25, "y":0}, {"label":"F7", "x":11.25, "y":0}, {"label":"F8", "x":12.25, "y":0}, {"label":"F9", "x":13.75, "y":0}, {"label":"F10", "x":14.75, "y":0}, {"label":"F11", "x":15.75, "y":0}, {"label":"F12", "x":16.75, "y":0}, {"label":"PrtSc", "x":18, "y":0}, {"label":"Scroll Lock", "x":19, "y":0}, {"label":"Pause", "x":20, "y":0}, {"label":"~", "x":2.75, "y":1.5}, {"label":"!", "x":3.75, "y":1.5}, {"label":"@", "x":4.75, "y":1.5}, {"label":"#", "x":5.75, "y":1.5}, {"label":"$", "x":6.75, "y":1.5}, {"label":"%", "x":7.75, "y":1.5}, {"label":"^", "x":8.75, "y":1.5}, {"label":"&", "x":9.75, "y":1.5}, {"label":"*", "x":10.75, "y":1.5}, {"label":"(", "x":11.75, "y":1.5}, {"label":")", "x":12.75, "y":1.5}, {"label":"_", "x":13.75, "y":1.5}, {"label":"+", "x":14.75, "y":1.5}, {"label":"|", "x":15.75, "y":1.5}, {"label":"~", "x":16.75, "y":1.5}, {"label":"Insert", "x":18, "y":1.5}, {"label":"Home", "x":19, "y":1.5}, {"label":"PgUp", "x":20, "y":1.5}, {"label":"Tab", "x":2.75, "y":2.5, "w":1.5}, {"label":"Q", "x":4.25, "y":2.5}, {"label":"W", "x":5.25, "y":2.5}, {"label":"E", "x":6.25, "y":2.5}, {"label":"R", "x":7.25, "y":2.5}, {"label":"T", "x":8.25, "y":2.5}, {"label":"Y", "x":9.25, "y":2.5}, {"label":"U", "x":10.25, "y":2.5}, {"label":"I", "x":11.25, "y":2.5}, {"label":"O", "x":12.25, "y":2.5}, {"label":"P", "x":13.25, "y":2.5}, {"label":"{", "x":14.25, "y":2.5}, {"label":"}", "x":15.25, "y":2.5}, {"label":"|", "x":16.25, "y":2.5, "w":1.5}, {"label":"Delete", "x":18, "y":2.5}, {"label":"End", "x":19, "y":2.5}, {"label":"PgDn", "x":20, "y":2.5}, {"label":"Caps Lock", "x":2.75, "y":3.5, "w":1.75}, {"label":"A", "x":4.5, "y":3.5}, {"label":"S", "x":5.5, "y":3.5}, {"label":"D", "x":6.5, "y":3.5}, {"label":"F", "x":7.5, "y":3.5}, {"label":"G", "x":8.5, "y":3.5}, {"label":"H", "x":9.5, "y":3.5}, {"label":"J", "x":10.5, "y":3.5}, {"label":"K", "x":11.5, "y":3.5}, {"label":"L", "x":12.5, "y":3.5}, {"label":":", "x":13.5, "y":3.5}, {"label":"\"", "x":14.5, "y":3.5}, {"label":"~", "x":15.5, "y":3.5}, {"label":"Enter", "x":16.5, "y":3.5, "w":1.25}, {"label":"Shift", "x":2.75, "y":4.5, "w":1.25}, {"label":"|", "x":4, "y":4.5}, {"label":"Z", "x":5, "y":4.5}, {"label":"X", "x":6, "y":4.5}, {"label":"C", "x":7, "y":4.5}, {"label":"V", "x":8, "y":4.5}, {"label":"B", "x":9, "y":4.5}, {"label":"N", "x":10, "y":4.5}, {"label":"M", "x":11, "y":4.5}, {"label":"<", "x":12, "y":4.5}, {"label":">", "x":13, "y":4.5}, {"label":"?", "x":14, "y":4.5}, {"label":"Shift", "x":15, "y":4.5, "w":1.75}, {"label":"Fn", "x":16.75, "y":4.5}, {"label":"\u2191", "x":19, "y":4.5}, {"label":"Ctrl", "x":2.75, "y":5.5, "w":1.5}, {"label":"Win", "x":4.25, "y":5.5}, {"label":"Alt", "x":5.25, "y":5.5, "w":1.5}, {"x":6.75, "y":5.5, "w":3}, {"x":9.75, "y":5.5}, {"x":10.75, "y":5.5, "w":3}, {"label":"AltGr", "x":13.75, "y":5.5, "w":1.5}, {"label":"Win", "x":15.25, "y":5.5}, {"label":"Ctrl", "x":16.25, "y":5.5, "w":1.5}, {"label":"\u2190", "x":18, "y":5.5}, {"label":"\u2193", "x":19, "y":5.5}, {"label":"\u2192", "x":20, "y":5.5}]
+ }
+ }
+}
diff --git a/keyboards/4pplet/yakiimo/rev_a/mcuconf.h b/keyboards/4pplet/yakiimo/rev_a/mcuconf.h
deleted file mode 100644
index 566a38124d..0000000000
--- a/keyboards/4pplet/yakiimo/rev_a/mcuconf.h
+++ /dev/null
@@ -1,37 +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/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
diff --git a/keyboards/4pplet/yakiimo/rev_a/rules.mk b/keyboards/4pplet/yakiimo/rev_a/rules.mk
index 69e3ba1629..2f1c4fc78b 100644
--- a/keyboards/4pplet/yakiimo/rev_a/rules.mk
+++ b/keyboards/4pplet/yakiimo/rev_a/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = GENERIC_STM32_F411XE
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/8pack/config.h b/keyboards/8pack/config.h
index 88bd1f351b..b9b7abebe7 100644
--- a/keyboards/8pack/config.h
+++ b/keyboards/8pack/config.h
@@ -2,12 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x2171
-#define MANUFACTURER Charles Garcia
-#define PRODUCT 8-Pack
-
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/8pack/info.json b/keyboards/8pack/info.json
index fc1bcb8ef8..f36f4c9dc3 100644
--- a/keyboards/8pack/info.json
+++ b/keyboards/8pack/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "8-Pack",
+ "manufacturer": "Charles Garcia",
"url": "https://github.com/cgarcia2097/8-Pack",
"maintainer": "Charles Garcia",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x2171"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/8pack/rev11/config.h b/keyboards/8pack/rev11/config.h
deleted file mode 100644
index 83ad51ada3..0000000000
--- a/keyboards/8pack/rev11/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-#define DEVICE_VER 0x0001
diff --git a/keyboards/8pack/rev11/info.json b/keyboards/8pack/rev11/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/8pack/rev11/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/8pack/rev12/config.h b/keyboards/8pack/rev12/config.h
deleted file mode 100644
index 9a527501a5..0000000000
--- a/keyboards/8pack/rev12/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-#define DEVICE_VER 0x0002
diff --git a/keyboards/8pack/rev12/info.json b/keyboards/8pack/rev12/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/8pack/rev12/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/9key/config.h b/keyboards/9key/config.h
index 622ccc7ae9..dc1eef180e 100644
--- a/keyboards/9key/config.h
+++ b/keyboards/9key/config.h
@@ -26,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 9Key PCB default pin-out */
#define MATRIX_ROW_PINS { D1, D0, D4 }
#define MATRIX_COL_PINS { F4, F5, F6 }
-#define UNUSED_PINS
/* ws2812 RGB LED */
#define RGB_DI_PIN F7
diff --git a/keyboards/9key/keymaps/bcat/keymap.c b/keyboards/9key/keymaps/bcat/keymap.c
index 944a48c0d3..c445a19406 100644
--- a/keyboards/9key/keymaps/bcat/keymap.c
+++ b/keyboards/9key/keymaps/bcat/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LY_FN1, KC_MUTE, KY_MICM
),
[LAYER_FUNCTION_1] = LAYOUT(
- EEP_RST, _______, RESET,
+ EEP_RST, _______, QK_BOOT,
_______, _______, _______,
_______, _______, _______
),
diff --git a/keyboards/a_dux/config.h b/keyboards/a_dux/config.h
index b007945774..ffda0a301c 100644
--- a/keyboards/a_dux/config.h
+++ b/keyboards/a_dux/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC2AB
-#define PRODUCT_ID 0x3939
-#define DEVICE_VER 0x0001
-#define MANUFACTURER tapioki
-#define PRODUCT Architeuthis dux
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 5
@@ -56,7 +49,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
-#define UNUSED_PINS
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/a_dux/info.json b/keyboards/a_dux/info.json
index e276128a62..7b9a43822a 100644
--- a/keyboards/a_dux/info.json
+++ b/keyboards/a_dux/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Architeuthis dux",
+ "manufacturer": "tapioki",
"url": "https://github.com/tapioki/cephalopoda",
"maintainer": "@tapioki",
+ "usb": {
+ "vid": "0xC2AB",
+ "pid": "0x3939",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x5_2": {
"layout": [
diff --git a/keyboards/a_dux/keymaps/daliusd/keymap.c b/keyboards/a_dux/keymaps/daliusd/keymap.c
index 2a65ce4580..aa45d10449 100644
--- a/keyboards/a_dux/keymaps/daliusd/keymap.c
+++ b/keyboards/a_dux/keymaps/daliusd/keymap.c
@@ -197,7 +197,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MISC] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────â”
- RESET ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BRID ,KC_BRIU ,XXXXXXX ,KC_PSCR ,K_PRINT ,
+ QK_BOOT,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BRID ,KC_BRIU ,XXXXXXX ,KC_PSCR ,K_PRINT ,
//├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,DEBUG ,XXXXXXX ,XXXXXXX , KC_MPRV ,KC_MPLY ,XXXXXXX ,KC_MNXT ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/a_dux/keymaps/manna-harbour_miryoku/config.h b/keyboards/a_dux/keymaps/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..dbbff11bb6
--- /dev/null
+++ b/keyboards/a_dux/keymaps/manna-harbour_miryoku/config.h
@@ -0,0 +1,19 @@
+// Copyright 2021 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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 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( \
+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 \
+)
diff --git a/keyboards/a_dux/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/a_dux/keymaps/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..dbab7f9820
--- /dev/null
+++ b/keyboards/a_dux/keymaps/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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/a_dux/keymaps/manna-harbour_miryoku/rules.mk b/keyboards/a_dux/keymaps/manna-harbour_miryoku/rules.mk
new file mode 100644
index 0000000000..ef40279cbc
--- /dev/null
+++ b/keyboards/a_dux/keymaps/manna-harbour_miryoku/rules.mk
@@ -0,0 +1,4 @@
+# Copyright 2021 Manna Harbour
+# https://github.com/manna-harbour/miryoku
+
+MIRYOKU_KLUDGE_THUMBCOMBOS=yes
diff --git a/keyboards/a_dux/readme.md b/keyboards/a_dux/readme.md
index f709542b31..2fca2d424f 100644
--- a/keyboards/a_dux/readme.md
+++ b/keyboards/a_dux/readme.md
@@ -41,5 +41,5 @@ 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 pins**: Briefly short the RST and GND pins on the microcontroller using tweezers, a paperclip, or any other conductive material.
-* **Keycode in layout**: Press the key mapped to `RESET` if it is configured.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is configured.
diff --git a/keyboards/abacus/config.h b/keyboards/abacus/config.h
index 5a627e630a..814f0b59f7 100644
--- a/keyboards/abacus/config.h
+++ b/keyboards/abacus/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER nickolaij
-#define PRODUCT abacus
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, D2, D4, C6 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, D7, B3, E6, B2, B4, B6, B5}
-#define UNUSED_PINS {B0}
#define DIP_SWITCH_PINS { D0 }
diff --git a/keyboards/abacus/info.json b/keyboards/abacus/info.json
index 21d035c97c..858c6949b5 100644
--- a/keyboards/abacus/info.json
+++ b/keyboards/abacus/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Abacus",
+ "manufacturer": "nickolaij",
"url": "https://www.github.com/nickolaij",
"maintainer": "nickolaij",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/abatskeyboardclub/nayeon/config.h b/keyboards/abatskeyboardclub/nayeon/config.h
index dad3ee307f..449f2da113 100644
--- a/keyboards/abatskeyboardclub/nayeon/config.h
+++ b/keyboards/abatskeyboardclub/nayeon/config.h
@@ -19,119 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B47
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Abats Keyboard Club
-#define PRODUCT Nayeon
-
-/* 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 { B2, B3, B7, D6, D3, D2 }
-#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D5, B0, B1, 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 RGB_DI_PIN E2
-#ifdef RGB_DI_PIN
-# define RGBLED_NUM 26
-# 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 */
-/*== 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
-
-
-/* Bootmagic Lite key configuration */
-//#define BOOTMAGIC_LITE_ROW 0
-//#define BOOTMAGIC_LITE_COLUMN 0
+/* RGB Matrix setup */
+#define RGB_DI_PIN GP19
+#define DRIVER_LED_TOTAL 2
+#define RGBLED_NUM 2
+#define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
diff --git a/keyboards/abatskeyboardclub/nayeon/info.json b/keyboards/abatskeyboardclub/nayeon/info.json
index 3df680f62b..8cafe5aebf 100644
--- a/keyboards/abatskeyboardclub/nayeon/info.json
+++ b/keyboards/abatskeyboardclub/nayeon/info.json
@@ -1,9 +1,32 @@
{
"keyboard_name": "Nayeon",
+ "manufacturer": "Abats Keyboard Club",
"url": "",
- "maintainer": "Ramon Imbao",
+ "maintainer": "ramonimbao",
+ "layout_aliases": {
+ "LAYOUT_ansi": "LAYOUT_tkl_f13_ansi_tsangan",
+ "LAYOUT_iso": "LAYOUT_tkl_f13_iso_tsangan"
+ },
+ "features": {
+ "bootmagic": true,
+ "mousekey": true,
+ "extrakey": true,
+ "console": false,
+ "command": false,
+ "nkro": false
+ },
+ "usb": {
+ "vid": "0x4B47",
+ "pid": "0x0001",
+ "device_version": "2.0.0"
+ },
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP18", "GP17", "GP16", "GP15", "GP14", "GP13", "GP12", "GP11", "GP5"],
+ "rows": ["GP0", "GP1", "GP2", "GP21", "GP3", "GP4"]
+ },
"layouts": {
- "LAYOUT_ansi": {
+ "LAYOUT_tkl_f13_ansi_tsangan": {
"layout": [
{"x":0, "y":0},
{"x":1.25, "y":0},
@@ -99,7 +122,105 @@
{"x":17.25, "y":5.25}
]
},
- "LAYOUT_iso": {
+ "LAYOUT_tkl_f13_ansi_tsangan_split_bs_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.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":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":1.75},
+ {"x":14, "y":4.25},
+ {"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}
+ ]
+ },
+ "LAYOUT_tkl_f13_iso_tsangan": {
"layout": [
{"x":0, "y":0},
{"x":1.25, "y":0},
@@ -196,6 +317,105 @@
{"x":17.25, "y":5.25}
]
},
+ "LAYOUT_tkl_f13_iso_tsangan_split_bs_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.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":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":1.75},
+ {"x":14, "y":4.25},
+ {"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}
+ ]
+ },
"LAYOUT_all": {
"layout": [
{"x":0, "y":0},
diff --git a/keyboards/abatskeyboardclub/nayeon/keymaps/default/keymap.c b/keyboards/abatskeyboardclub/nayeon/keymaps/default/keymap.c
index f8d8d35058..134fbd4972 100644
--- a/keyboards/abatskeyboardclub/nayeon/keymaps/default/keymap.c
+++ b/keyboards/abatskeyboardclub/nayeon/keymaps/default/keymap.c
@@ -16,7 +16,7 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_ansi(
+ [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_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,37 +25,3 @@ 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
)
};
-
-#ifdef RGBLIGHT_ENABLE
-
-const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS(
- {0, 1, HSV_OFF},
- {1, 1, HSV_OFF}
-);
-
-const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS(
- {1, 1, HSV_OFF}
-);
-
-const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS(
- {0, 1, HSV_OFF}
-);
-
-const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl);
-
-void keyboard_post_init_user(void) {
- rgblight_layers = rgb_layers;
-}
-
-bool led_update_user(led_t led_state) {
- uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock;
- for (uint8_t i=0; i<3; i++) {
- rgblight_set_layer_state(i, false);
- }
- if (lock_bits < 3) {
- rgblight_set_layer_state(lock_bits, true);
- }
-
- return false;
-}
-#endif
diff --git a/keyboards/abatskeyboardclub/nayeon/keymaps/iso/keymap.c b/keyboards/abatskeyboardclub/nayeon/keymaps/iso/keymap.c
index eeef21b19e..74e74207a3 100644
--- a/keyboards/abatskeyboardclub/nayeon/keymaps/iso/keymap.c
+++ b/keyboards/abatskeyboardclub/nayeon/keymaps/iso/keymap.c
@@ -16,7 +16,7 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_iso(
+ [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_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,
@@ -25,37 +25,3 @@ 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
)
};
-
-#ifdef RGBLIGHT_ENABLE
-
-const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS(
- {0, 1, HSV_OFF},
- {1, 1, HSV_OFF}
-);
-
-const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS(
- {1, 1, HSV_OFF}
-);
-
-const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS(
- {0, 1, HSV_OFF}
-);
-
-const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl);
-
-void keyboard_post_init_user(void) {
- rgblight_layers = rgb_layers;
-}
-
-bool led_update_user(led_t led_state) {
- uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock;
- for (uint8_t i=0; i<3; i++) {
- rgblight_set_layer_state(i, false);
- }
- if (lock_bits < 3) {
- rgblight_set_layer_state(lock_bits, true);
- }
-
- return false;
-}
-#endif
diff --git a/keyboards/abatskeyboardclub/nayeon/keymaps/via/keymap.c b/keyboards/abatskeyboardclub/nayeon/keymaps/via/keymap.c
index a212b820f4..062b05ec49 100644
--- a/keyboards/abatskeyboardclub/nayeon/keymaps/via/keymap.c
+++ b/keyboards/abatskeyboardclub/nayeon/keymaps/via/keymap.c
@@ -49,37 +49,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
-
-#ifdef RGBLIGHT_ENABLE
-
-const rgblight_segment_t PROGMEM ll_none[] = RGBLIGHT_LAYER_SEGMENTS(
- {0, 1, HSV_OFF},
- {1, 1, HSV_OFF}
-);
-
-const rgblight_segment_t PROGMEM ll_cl[] = RGBLIGHT_LAYER_SEGMENTS(
- {1, 1, HSV_OFF}
-);
-
-const rgblight_segment_t PROGMEM ll_sl[] = RGBLIGHT_LAYER_SEGMENTS(
- {0, 1, HSV_OFF}
-);
-
-const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(ll_none, ll_cl, ll_sl);
-
-void keyboard_post_init_user(void) {
- rgblight_layers = rgb_layers;
-}
-
-bool led_update_user(led_t led_state) {
- uint8_t lock_bits = led_state.scroll_lock << 1 | led_state.caps_lock;
- for (uint8_t i=0; i<3; i++) {
- rgblight_set_layer_state(i, false);
- }
- if (lock_bits < 3) {
- rgblight_set_layer_state(lock_bits, true);
- }
-
- return false;
-}
-#endif
diff --git a/keyboards/abatskeyboardclub/nayeon/nayeon.c b/keyboards/abatskeyboardclub/nayeon/nayeon.c
index 14fb22a486..6f367d3ed6 100644
--- a/keyboards/abatskeyboardclub/nayeon/nayeon.c
+++ b/keyboards/abatskeyboardclub/nayeon/nayeon.c
@@ -15,3 +15,30 @@
*/
#include "nayeon.h"
+
+led_config_t g_led_config = {{
+ // Key Matrix to LED Index
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 1, NO_LED },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { 0, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
+}, {
+ // LED Index to Physical Position
+ { 5, 40 }, { 211, 0 }
+}, {
+ // LED Index to Flag
+ LED_FLAG_INDICATOR, LED_FLAG_INDICATOR
+}};
+
+void rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
+ if (!host_keyboard_led_state().caps_lock) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(0, 0, 0, 0);
+ }
+ if (!host_keyboard_led_state().scroll_lock) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(1, 0, 0, 0);
+ }
+
+ rgb_matrix_indicators_advanced_user(led_min, led_max);
+}
diff --git a/keyboards/abatskeyboardclub/nayeon/nayeon.h b/keyboards/abatskeyboardclub/nayeon/nayeon.h
index ba0b1498f7..fb1806f32d 100644
--- a/keyboards/abatskeyboardclub/nayeon/nayeon.h
+++ b/keyboards/abatskeyboardclub/nayeon/nayeon.h
@@ -24,7 +24,7 @@
// Full backspace
// Full right shift
// Full left shift
-#define LAYOUT_ansi( \
+#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, \
@@ -40,11 +40,31 @@
{ k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, ___, k5b, k5c, k5d, k5e, k5f, k5g }, \
}
+// ANSI layout
+// Split backspace
+// Split right shift
+// Full left shift
+#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, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4f, \
+ k50, k51, k52, k57, 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, ___, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, ___, k4f, ___ }, \
+ { k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, ___, k5b, k5c, k5d, k5e, k5f, k5g }, \
+}
+
// ISO layout
// Full backspace
// Full right shift
// Split left shift
-#define LAYOUT_iso( \
+#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, k2c, k2e, k2f, k2g, \
@@ -60,6 +80,26 @@
{ k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, ___, k5b, k5c, k5d, k5e, k5f, k5g }, \
}
+// ISO layout
+// Split backspace
+// Split right shift
+// Split left shift
+#define LAYOUT_tkl_f13_iso_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, k2e, k2f, k2g, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k2d, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4f, \
+ k50, k51, k52, k57, 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, ___, ___, ___, ___, k57, ___, ___, ___, k5b, k5c, k5d, k5e, k5f, k5g }, \
+}
+
// Layout for VIA
// Split backspace
// Split left shift
diff --git a/keyboards/abatskeyboardclub/nayeon/readme.md b/keyboards/abatskeyboardclub/nayeon/readme.md
index f88c1e187d..7c7c91c1f1 100644
--- a/keyboards/abatskeyboardclub/nayeon/readme.md
+++ b/keyboards/abatskeyboardclub/nayeon/readme.md
@@ -5,7 +5,7 @@
Nayeon is a screwless TKL keyboard with an extra key, inspired by a K-pop artist named Im-Nayeon.
* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
-* Hardware Supported: ATmega32u4
+* Hardware Supported: RP2040
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/abatskeyboardclub/nayeon/rules.mk b/keyboards/abatskeyboardclub/nayeon/rules.mk
index 1f52c37154..d106ef4d6a 100644
--- a/keyboards/abatskeyboardclub/nayeon/rules.mk
+++ b/keyboards/abatskeyboardclub/nayeon/rules.mk
@@ -1,18 +1,13 @@
# MCU name
-MCU = atmega32u4
+MCU = RP2040
# Bootloader selection
-BOOTLOADER = atmel-dfu
+BOOTLOADER = rp2040
+
+# RGB Matrix
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+WS2812_DRIVER = vendor
+
+LAYOUTS = tkl_f13_ansi_tsangan tkl_f13_ansi_tsangan_split_bs_rshift tkl_f13_iso_tsangan tkl_f13_iso_tsangan_split_bs_rshift
-# 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/abstract/ellipse/info.json b/keyboards/abstract/ellipse/info.json
deleted file mode 100644
index 3348b38477..0000000000
--- a/keyboards/abstract/ellipse/info.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "keyboard_name": "Ellipse",
- "url": "https://abstractkb.tk/product/ellipse-rev1",
- "maintainer": "AbstractKB",
- "layouts": {
- "LAYOUT": {
- "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}]
- }
- }
-}
diff --git a/keyboards/abstract/ellipse/rev1/config.h b/keyboards/abstract/ellipse/rev1/config.h
index 060229abb2..2025739210 100644
--- a/keyboards/abstract/ellipse/rev1/config.h
+++ b/keyboards/abstract/ellipse/rev1/config.h
@@ -19,13 +19,6 @@ 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 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AbstractKB
-#define PRODUCT EllipseRev1
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, C7 }
#define MATRIX_COL_PINS { F0, B6, B5 }
-#define UNUSED_PINS { B0, D0, D1, D2, D4, D6, D7, F1, F4, F5, F6, F7 }
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/abstract/ellipse/rev1/info.json b/keyboards/abstract/ellipse/rev1/info.json
new file mode 100644
index 0000000000..0037719e12
--- /dev/null
+++ b/keyboards/abstract/ellipse/rev1/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Ellipse",
+ "manufacturer": "AbstractKB",
+ "url": "https://abstractkb.tk/product/ellipse-rev1",
+ "maintainer": "AbstractKB",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}]
+ }
+ }
+}
diff --git a/keyboards/acekeyboard/titan60/config.h b/keyboards/acekeyboard/titan60/config.h
index 6cfaa7980e..0daf1a90cd 100644
--- a/keyboards/acekeyboard/titan60/config.h
+++ b/keyboards/acekeyboard/titan60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xACE1 // Ace
-#define PRODUCT_ID 0x5449 // TI
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Acekeyboard
-#define PRODUCT titan60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -45,7 +38,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 0 1 2 3 4 5 6 7 8 9 A B C D
#define MATRIX_ROW_PINS { B1, B2, B3, F0, F1 }
#define MATRIX_COL_PINS { F4, F7, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/acekeyboard/titan60/info.json b/keyboards/acekeyboard/titan60/info.json
index 8e7b41c9cd..0867639515 100644
--- a/keyboards/acekeyboard/titan60/info.json
+++ b/keyboards/acekeyboard/titan60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Titan60",
+ "manufacturer": "Acekeyboard",
"url": "https://acekeyboard.co/",
"maintainer": "keebnewb",
+ "usb": {
+ "vid": "0xACE1",
+ "pid": "0x5449",
+ "device_version": "0.0.1"
+ },
"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/acheron/apollo/87h/87h.c b/keyboards/acheron/apollo/87h/87h.c
new file mode 100644
index 0000000000..3d3f364ba8
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/87h.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 Alvaro "Gondolindrim" Volpato
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "87h.h"
diff --git a/keyboards/acheron/apollo/87h/87h.h b/keyboards/acheron/apollo/87h/87h.h
new file mode 100644
index 0000000000..535575f451
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/87h.h
@@ -0,0 +1,24 @@
+/* Copyright 2022 Alvaro "Gondolindrim" Volpato
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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_acheron_apollo_87h_gamma)
+ #include "gamma.h"
+#elif defined(KEYBOARD_acheron_apollo_87h_delta)
+ #include "delta.h"
+#endif
diff --git a/keyboards/acheron/apollo/87h/delta/config.h b/keyboards/acheron/apollo/87h/delta/config.h
new file mode 100644
index 0000000000..5df3628db2
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/delta/config.h
@@ -0,0 +1,103 @@
+/*
+Copyright 2022 Ã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
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+// C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 , C9 , C10, C11, C12, C13, C14, C15, C16 }
+#define MATRIX_COL_PINS { C8 , C9 , A8 , A10, C7 , C6 , B14, B12, B10, B1 , C5 , C4 , A7 , B0 , C11, A3 , B4 }
+// R0 , R1 , R2 , R3 , R4 , R5
+#define MATRIX_ROW_PINS { B3 , D2 , C12, A6 , A5 , A4 }
+#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 EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+#define RGB_DI_PIN B15
+#define DRIVER_LED_TOTAL 87
+
+#define WS2812_PWM_COMPLEMENTARY_OUTPUT
+#define WS2812_PWM_DRIVER PWMD1
+#define WS2812_PWM_CHANNEL 3
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
+#define WS2812_DMA_CHANNEL 6
+
+#define RGB_MATRIX_STARTUP_VAL 60
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
+
+#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_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#define ENABLE_RGB_MATRIX_PIXEL_FLOW
+
+#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/acheron/apollo/87h/delta/delta.c b/keyboards/acheron/apollo/87h/delta/delta.c
new file mode 100644
index 0000000000..d55880d482
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/delta/delta.c
@@ -0,0 +1,61 @@
+/*
+ Copyright 2022 Ã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 "delta.h"
+
+void board_init(void) {
+ setPinInput(B9);
+ setPinInput(B10);
+}
+
+led_config_t g_led_config = { {
+// { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , NO_LED , 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 , NO_LED , NO_LED , NO_LED , NO_LED },
+// { 63 , NO_LED , 64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , NO_LED , NO_LED , 75 , NO_LED },
+// { 76 , 77 , 78 , NO_LED , NO_LED , NO_LED , 79 , NO_LED , NO_LED , 80 , 81 , 82 , 83 , NO_LED , 84 , 85 , 86 }
+//
+ { 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , NO_LED , 2 , 1 , 0 },
+ { 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 },
+ { 49 , 48 , 47 , 46 , 45 , 44 , 43 , 42 , 41 , 40 , 39 , 38 , 37 , 36 , 35 , 34 , 33 },
+ { 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , NO_LED , NO_LED , NO_LED , NO_LED },
+ { 75 , NO_LED , 74 , 73 , 72 , 71 , 70 , 69 , 68 , 67 , 66 , 65 , 64 , NO_LED , NO_LED , 63 , NO_LED },
+ { 76 , 77 , 78 , NO_LED , NO_LED , NO_LED , 79 , NO_LED , NO_LED , 80 , 81 , 82 , 83 , NO_LED , 84 , 85 , 86 }
+},{
+// "Fine-tuned" complex configuration
+ { 210, 0}, { 196, 0}, { 182, 0}, { 168, 0}, { 154, 0}, { 140, 0}, { 140, 0}, { 126, 0}, { 112, 0}, { 98, 0}, { 84, 0}, { 70, 0}, { 56, 0}, { 28, 0}, { 14, 0}, { 0, 0},
+ { 0, 45}, { 14, 45}, { 28, 45}, { 42, 45}, { 56, 45}, { 70, 45}, { 84, 45}, { 98, 45}, { 112, 45}, { 126, 45}, { 140, 45}, { 154, 45}, { 168, 45}, { 182, 45}, { 196, 45}, { 210, 45}, { 224, 45},
+ { 224, 90}, { 210, 90}, { 196, 90}, { 182, 90}, { 168, 90}, { 154, 90}, { 140, 90}, { 126, 90}, { 112, 90}, { 98, 90}, { 84, 90}, { 70, 90}, { 56, 90}, { 42, 90}, { 28, 90}, { 14, 90}, { 0, 90},
+ { 0, 135}, { 14, 135}, { 28, 135}, { 42, 135}, { 56, 135}, { 70, 135}, { 84, 135}, { 98, 135}, { 112, 135}, { 126, 135}, { 140, 135}, { 154, 135}, { 168, 135},
+ { 192, 180}, { 168, 180}, { 154, 180}, { 140, 180}, { 126, 180}, { 112, 180}, { 98, 180}, { 84, 180}, { 70, 180}, { 56, 180}, { 42, 180}, { 28, 180}, { 14, 180},
+ { 0, 225}, { 14, 225}, { 28, 225}, { 84, 225}, { 126, 225}, { 140, 225}, { 154, 225}, { 168, 225}, { 196, 45}, { 210, 45}, { 224, 90}
+// "Stock" simple configuration
+// { 224, 0}, { 210, 0}, { 196, 0}, { 182, 0}, { 168, 0}, { 154, 0}, { 140, 0}, { 126, 0}, { 112, 0}, { 98, 0}, { 84, 0}, { 70, 0}, { 56, 0}, { 28, 0}, { 14, 0}, { 0, 0},
+// { 0, 45}, { 14, 45}, { 28, 45}, { 42, 45}, { 56, 45}, { 70, 45}, { 84, 45}, { 98, 45}, { 112, 45}, { 126, 45}, { 140, 45}, { 154, 45}, { 168, 45}, { 182, 45}, { 196, 45}, { 210, 45}, { 224, 45},
+// { 224, 90}, { 210, 90}, { 196, 90}, { 182, 90}, { 168, 90}, { 154, 90}, { 140, 90}, { 126, 90}, { 112, 90}, { 98, 90}, { 84, 90}, { 70, 90}, { 56, 90}, { 42, 90}, { 28, 90}, { 14, 90}, { 0, 90},
+// { 0, 135}, { 14, 135}, { 28, 135}, { 42, 135}, { 56, 135}, { 70, 135}, { 84, 135}, { 98, 135}, { 112, 135}, { 126, 135}, { 140, 135}, { 154, 135}, { 168, 135},
+// { 224, 180}, { 196, 180}, { 182, 180}, { 168, 180}, { 154, 180}, { 140, 180}, { 126, 180}, { 112, 180}, { 98, 180}, { 84, 180}, { 70, 180}, { 56, 180}, { 14, 180},
+// { 0, 225}, { 14, 225}, { 28, 225}, { 84, 225}, { 126, 225}, { 140, 225}, { 154, 225}, { 168, 225}, { 196, 45}, { 210, 45}, { 224, 90}
+}, {
+ 1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ,
+ 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ,
+ 4 , 4 , 4 , 4 , 4 , 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 ,
+ 1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 1 , 1 ,
+ 1 , 1 , 1 , 4 , 1 , 1 , 1 , 1 , 1 , 1 , 1
+} };
diff --git a/keyboards/acheron/apollo/87h/delta/delta.h b/keyboards/acheron/apollo/87h/delta/delta.h
new file mode 100644
index 0000000000..c3f5f6c22e
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/delta/delta.h
@@ -0,0 +1,38 @@
+/*
+Copyright 2022 Ã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_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, K3C, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \
+ K50, K51, K52, K56, K59, K5A, K5B, K5C, K5E, K5F, K5G \
+) { \
+ { 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, K3C, ___, ___, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, ___, K5E, K5F, K5G } \
+}
diff --git a/keyboards/acheron/apollo/87h/delta/halconf.h b/keyboards/acheron/apollo/87h/delta/halconf.h
new file mode 100644
index 0000000000..691c0552a3
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/delta/halconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2022 Gondolindrim <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
+
+#define HAL_USE_PWM TRUE
+#define HAL_USE_PAL TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/acheron/apollo/87h/delta/info.json b/keyboards/acheron/apollo/87h/delta/info.json
new file mode 100644
index 0000000000..8f501970a5
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/delta/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Apollo87H",
+ "usb": {
+ "pid": "0x8775",
+ "device_version": "0.0.4"
+ }
+}
diff --git a/keyboards/acheron/apollo/87h/delta/keymaps/default/keymap.c b/keyboards/acheron/apollo/87h/delta/keymaps/default/keymap.c
new file mode 100755
index 0000000000..3ad45e3679
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/delta/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_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_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, MO(1) , KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_tkl_ansi(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, 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
+ ),
+ [2] = LAYOUT_tkl_ansi(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tkl_ansi(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/acheron/apollo/87h/delta/keymaps/via/keymap.c b/keyboards/acheron/apollo/87h/delta/keymaps/via/keymap.c
new file mode 100755
index 0000000000..3ad45e3679
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/delta/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_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_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, MO(1) , KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_tkl_ansi(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, 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
+ ),
+ [2] = LAYOUT_tkl_ansi(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tkl_ansi(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/peej/rosaline/keymaps/via/rules.mk b/keyboards/acheron/apollo/87h/delta/keymaps/via/rules.mk
index 1e5b99807c..1e5b99807c 100644
--- a/keyboards/peej/rosaline/keymaps/via/rules.mk
+++ b/keyboards/acheron/apollo/87h/delta/keymaps/via/rules.mk
diff --git a/keyboards/acheron/apollo/87h/delta/mcuconf.h b/keyboards/acheron/apollo/87h/delta/mcuconf.h
new file mode 100644
index 0000000000..652fecfc8a
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/delta/mcuconf.h
@@ -0,0 +1,25 @@
+/* Copyright 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/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_ADVANCED
+#define STM32_PWM_USE_ADVANCED TRUE
+
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
diff --git a/keyboards/acheron/apollo/87h/delta/rules.mk b/keyboards/acheron/apollo/87h/delta/rules.mk
new file mode 100644
index 0000000000..814a3f15f0
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/delta/rules.mk
@@ -0,0 +1,26 @@
+# MCU name
+MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
+
+# 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
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = legacy
+
+# 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/acheron/apollo/87h/gamma/config.h b/keyboards/acheron/apollo/87h/gamma/config.h
new file mode 100644
index 0000000000..21fe929409
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/gamma/config.h
@@ -0,0 +1,100 @@
+/*
+Copyright 2022 Ã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
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 16
+
+// C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 , C9 , C10, C11, C12, C13, C14, C15 }
+#define MATRIX_COL_PINS { B3 , A15, A10, A8 , B14, B12, B10, B1 , B0 , A7 , A4 , A5 , A6 , C15, A0 , A1 }
+// R0 , R1 , R2 , R3 , R4 , R5
+#define MATRIX_ROW_PINS { C14, C13, B9 , B4 , A3 , A2 }
+#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 EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+// RGB Matrix defines
+#define DRIVER_ADDR_1 0b0110000
+
+#define DRIVER_COUNT 1
+#define DRIVER_1_LED_TOTAL 87
+#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+#define ISSI_DRIVER_TOTAL DRIVER_LED_TOTAL
+
+#define RGB_MATRIX_STARTUP_VAL 80
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_HUE_WAVE
+
+#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_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/acheron/apollo/87h/gamma/gamma.c b/keyboards/acheron/apollo/87h/gamma/gamma.c
new file mode 100644
index 0000000000..babad3c11c
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/gamma/gamma.c
@@ -0,0 +1,146 @@
+/*
+ Copyright 2022 Ã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 "gamma.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
+ * | | | | */
+// First row
+ {0, CS7_SW9 , CS9_SW9 , CS8_SW9 }, //ESC 0
+ {0, CS7_SW8 , CS9_SW8 , CS8_SW8 }, //F1 1
+ {0, CS7_SW7 , CS9_SW7 , CS8_SW7 }, //F2 2
+ {0, CS7_SW6 , CS9_SW6 , CS8_SW6 }, //F3 3
+ {0, CS7_SW5 , CS9_SW5 , CS8_SW5 }, //F4 4
+ {0, CS7_SW4 , CS9_SW4 , CS8_SW4 }, //F5 5
+ {0, CS7_SW3 , CS9_SW3 , CS8_SW3 }, //F6 6
+ {0, CS7_SW2 , CS9_SW2 , CS8_SW2 }, //F7 7
+ {0, CS7_SW1 , CS9_SW1 , CS8_SW1 }, //F8 8
+ {0, CS18_SW2, CS16_SW2, CS17_SW2 }, //F9 9
+ {0, CS18_SW3, CS16_SW3, CS17_SW3 }, //F10 10
+ {0, CS18_SW4, CS16_SW4, CS17_SW4 }, //F11 11
+ {0, CS18_SW6, CS16_SW6, CS17_SW6 }, //F12 12
+ {0, CS18_SW7, CS16_SW7, CS17_SW7 }, //PRI 13
+ {0, CS18_SW8, CS16_SW8, CS17_SW8 }, //SCR 14
+ {0, CS18_SW9, CS16_SW9, CS17_SW9 }, //PAUS 15
+//Second row
+ {0, CS12_SW9, CS11_SW9, CS10_SW9 }, //GRAVE 16
+ {0, CS12_SW8, CS11_SW8, CS10_SW8 }, //1 17
+ {0, CS12_SW7, CS11_SW7, CS10_SW7 }, //2 18
+ {0, CS12_SW6, CS11_SW6, CS10_SW6 }, //3 19
+ {0, CS12_SW5, CS11_SW5, CS10_SW5 }, //4 20
+ {0, CS12_SW4, CS11_SW4, CS10_SW4 }, //5 21
+ {0, CS12_SW3, CS11_SW3, CS10_SW3 }, //6 22
+ {0, CS12_SW2, CS11_SW2, CS10_SW2 }, //7 23
+ {0, CS12_SW1, CS11_SW1, CS10_SW1 }, //8 24
+ {0, CS15_SW1, CS13_SW1, CS14_SW1 }, //9 25
+ {0, CS15_SW2, CS13_SW2, CS14_SW2 }, //0 26
+ {0, CS15_SW3, CS13_SW3, CS14_SW3 }, //MINUS 27
+ {0, CS15_SW4, CS13_SW4, CS14_SW4 }, //PLUS 28
+ {0, CS15_SW5, CS13_SW5, CS14_SW5 }, //BKSP 29
+ {0, CS15_SW7, CS13_SW7, CS14_SW7 }, //INS 30
+ {0, CS15_SW8, CS13_SW8, CS14_SW8 }, //HOME 31
+ {0, CS15_SW9, CS13_SW9, CS14_SW9 }, //PGUP 32
+//Third row
+ {0, CS4_SW9 , CS6_SW9 , CS5_SW9 }, //TAB 33
+ {0, CS4_SW8 , CS6_SW8 , CS5_SW8 }, //Q 34
+ {0, CS4_SW7 , CS6_SW7 , CS5_SW7 }, //W 35
+ {0, CS4_SW6 , CS6_SW6 , CS5_SW6 }, //E 36
+ {0, CS4_SW5 , CS6_SW5 , CS5_SW5 }, //R 37
+ {0, CS4_SW4 , CS6_SW4 , CS5_SW4 }, //T 38
+ {0, CS4_SW3 , CS6_SW3 , CS5_SW3 }, //Y 39
+ {0, CS4_SW2 , CS6_SW2 , CS5_SW2 }, //U 40
+ {0, CS4_SW1 , CS6_SW1 , CS5_SW1 }, //I 41
+ {0, CS3_SW2 , CS1_SW2 , CS2_SW2 }, //O 42
+ {0, CS3_SW3 , CS1_SW3 , CS2_SW3 }, //P 43
+ {0, CS3_SW4 , CS1_SW4 , CS2_SW4 }, //LBRKT 44
+ {0, CS3_SW5 , CS1_SW5 , CS2_SW5 }, //RBRKT 45
+ {0, CS3_SW6 , CS1_SW6 , CS2_SW6 }, //BSLS 46
+ {0, CS3_SW7 , CS1_SW7 , CS2_SW7 }, //DEL 47
+ {0, CS3_SW8 , CS1_SW8 , CS2_SW8 }, //END 48
+ {0, CS3_SW9 , CS1_SW9 , CS2_SW9 }, //PGDN 49
+//Fourth row
+ {0, CS33_SW9, CS32_SW9, CS31_SW9 }, //CAPS 50
+ {0, CS33_SW8, CS32_SW8, CS31_SW8 }, //A 51
+ {0, CS33_SW7, CS32_SW7, CS31_SW7 }, //S 52
+ {0, CS33_SW6, CS32_SW6, CS31_SW6 }, //D 53
+ {0, CS33_SW5, CS32_SW5, CS31_SW5 }, //F 54
+ {0, CS33_SW4, CS32_SW4, CS31_SW4 }, //G 55
+ {0, CS33_SW3, CS32_SW3, CS31_SW3 }, //H 56
+ {0, CS33_SW2, CS32_SW2, CS31_SW2 }, //J 57
+ {0, CS33_SW1, CS32_SW1, CS31_SW1 }, //K 58
+ {0, CS39_SW2, CS38_SW2, CS37_SW2 }, //L 59
+ {0, CS39_SW3, CS38_SW3, CS37_SW3 }, //COLON 60
+ {0, CS39_SW4, CS38_SW4, CS37_SW4 }, //QUOTE 61
+ {0, CS39_SW6, CS38_SW6, CS37_SW6 }, //ENTER 62
+//Fifth row
+ {0, CS30_SW9, CS28_SW9, CS29_SW9 }, //LSFT 63
+ {0, CS30_SW7, CS28_SW7, CS29_SW7 }, //Z 64
+ {0, CS30_SW6, CS28_SW6, CS29_SW6 }, //X 65
+ {0, CS30_SW5, CS28_SW5, CS29_SW5 }, //C 66
+ {0, CS30_SW4, CS28_SW4, CS29_SW4 }, //V 67
+ {0, CS30_SW3, CS28_SW3, CS29_SW3 }, //B 68
+ {0, CS30_SW2, CS28_SW2, CS29_SW2 }, //N 69
+ {0, CS30_SW1, CS28_SW1, CS29_SW1 }, //M 70
+ {0, CS36_SW1, CS35_SW1, CS34_SW1 }, //COMMA 71
+ {0, CS36_SW3, CS35_SW3, CS34_SW3 }, //DOT 72
+ {0, CS36_SW4, CS35_SW4, CS34_SW4 }, //SLASH 73
+ {0, CS36_SW6, CS35_SW6, CS34_SW6 }, //RSFT 74
+ {0, CS36_SW7, CS35_SW7, CS34_SW7 }, //UP 75
+//Sixth row
+ {0, CS27_SW9, CS25_SW9, CS26_SW9 }, //LCTRL 76
+ {0, CS27_SW7, CS25_SW7, CS26_SW7 }, //LWIN 77
+ {0, CS27_SW6, CS25_SW6, CS26_SW6 }, //LALT 78
+ {0, CS27_SW5, CS25_SW5, CS26_SW5 }, //SPACE 79
+ {0, CS27_SW3, CS25_SW3, CS26_SW3 }, //RALT 80
+ {0, CS24_SW4, CS23_SW4, CS22_SW4 }, //RGUI 81
+ {0, CS24_SW5, CS23_SW5, CS22_SW5 }, //MENU 82
+ {0, CS24_SW6, CS23_SW6, CS22_SW6 }, //RCTRL 83
+ {0, CS24_SW1, CS23_SW1, CS22_SW1 }, //LEFT 84
+ {0, CS24_SW2, CS23_SW2, CS22_SW2 }, //DOWN 85
+ {0, CS24_SW3, CS23_SW3, CS22_SW3 }, //RIGHT 86
+
+};
+
+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 },
+ { 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 41 , 43 , 44 , 45 , 46 , 47 , 48 },
+ { 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , NO_LED , NO_LED , NO_LED },
+ { 63 , NO_LED , 64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 49 , 32 },
+ { 76 , 77 , 78 , NO_LED , NO_LED , NO_LED , 79 , NO_LED , NO_LED , 80 , 81 , 82 , 83 , 84 , 85 , 86 }
+},{
+ { 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}, { 210, 0}, { 210, 0}, { 225, 0},
+ { 0, 45}, { 15, 45}, { 30, 45}, { 45, 45}, { 60, 45}, { 75, 45}, { 90, 45}, { 105, 45}, { 120, 45}, { 135, 45}, { 150, 45}, { 165, 45}, { 180, 45}, { 210, 45}, { 210, 45}, { 215, 45},
+ { 0, 90}, { 15, 90}, { 30, 90}, { 45, 90}, { 60, 90}, { 75, 90}, { 90, 90}, { 105, 90}, { 120, 90}, { 135, 90}, { 150, 90}, { 165, 90}, { 180, 90}, { 195, 90}, { 210, 90}, { 215, 90},
+ { 0, 135}, { 15, 135}, { 30, 135}, { 45, 135}, { 60, 135}, { 75, 135}, { 90, 135}, { 105, 135}, { 120, 135}, { 135, 135}, { 150, 135}, { 165, 135}, { 180, 135},
+ { 0, 180}, { 30, 180}, { 45, 180}, { 60, 180}, { 75, 180}, { 90, 180}, { 105, 180}, { 120, 180}, { 135, 180}, { 150, 180}, { 165, 180}, { 180, 180}, { 210, 180}, { 225, 45}, { 225, 0},
+ { 0, 225}, { 15, 225}, { 30, 225}, { 90, 225}, { 135, 225}, { 150, 225}, { 165, 225}, { 180, 225}, { 195, 225}, { 210, 225}, { 225, 225}
+}, {
+ 1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ,
+ 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ,
+ 4 , 4 , 4 , 4 , 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 ,
+ 1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 1 , 1 , 1 , 1 ,
+ 1 , 1 , 1 , 4 , 1 , 1 , 1 , 1 , 1 , 1 , 1
+} };
+#endif
diff --git a/keyboards/acheron/apollo/87h/gamma/gamma.h b/keyboards/acheron/apollo/87h/gamma/gamma.h
new file mode 100644
index 0000000000..97342016f2
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/gamma/gamma.h
@@ -0,0 +1,38 @@
+/*
+Copyright 2022 Ã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_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, K4F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K4E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, \
+ K50, K51, K52, K56, K59, K5A, K5B, K5C, K5D, K5E, K5F \
+) { \
+ { 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 }, \
+ { 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, ___, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D, K5E, K5F } \
+}
diff --git a/keyboards/acheron/apollo/87h/gamma/halconf.h b/keyboards/acheron/apollo/87h/gamma/halconf.h
new file mode 100644
index 0000000000..2e098f5113
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/gamma/halconf.h
@@ -0,0 +1,21 @@
+/* Copyright 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/>.
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/acheron/apollo/87h/gamma/info.json b/keyboards/acheron/apollo/87h/gamma/info.json
new file mode 100644
index 0000000000..6a7a382eaa
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/gamma/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Apollo87H rev. Gamma",
+ "usb": {
+ "pid": "0x8774",
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/acheron/apollo/87h/gamma/keymaps/default/keymap.c b/keyboards/acheron/apollo/87h/gamma/keymaps/default/keymap.c
new file mode 100755
index 0000000000..3ad45e3679
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/gamma/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_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_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, MO(1) , KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_tkl_ansi(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, 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
+ ),
+ [2] = LAYOUT_tkl_ansi(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tkl_ansi(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/acheron/apollo/87h/gamma/keymaps/via/keymap.c b/keyboards/acheron/apollo/87h/gamma/keymaps/via/keymap.c
new file mode 100755
index 0000000000..8b6e77a5b5
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/gamma/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_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_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, MO(1) , KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_tkl_ansi(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, 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
+ ),
+ [2] = LAYOUT_tkl_ansi(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tkl_ansi(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/acheron/apollo/87h/gamma/keymaps/via/rules.mk b/keyboards/acheron/apollo/87h/gamma/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/gamma/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/acheron/apollo/87h/gamma/mcuconf.h b/keyboards/acheron/apollo/87h/gamma/mcuconf.h
new file mode 100644
index 0000000000..9cf24d5bcd
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/gamma/mcuconf.h
@@ -0,0 +1,22 @@
+/* Copyright 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/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/acheron/apollo/87h/gamma/rules.mk b/keyboards/acheron/apollo/87h/gamma/rules.mk
new file mode 100644
index 0000000000..c05ab3c41a
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/gamma/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+MCU = STM32F411
+BOARD = GENERIC_STM32_F411XE
+
+# 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 = 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 = IS31FL3741
+KEYBOARD_SHARED_EP = yes
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = legacy
+
+# 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/acheron/apollo/87h/info.json b/keyboards/acheron/apollo/87h/info.json
new file mode 100644
index 0000000000..7dbd896a18
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/info.json
@@ -0,0 +1,106 @@
+{
+ "manufacturer": "AcheronProject",
+ "url": "",
+ "maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x4150"
+ },
+ "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":"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":"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":"Fn", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"GUI", "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/acheron/apollo/87h/readme.md b/keyboards/acheron/apollo/87h/readme.md
new file mode 100644
index 0000000000..f00dae4450
--- /dev/null
+++ b/keyboards/acheron/apollo/87h/readme.md
@@ -0,0 +1,25 @@
+# Acheron Apollo87H QMK firmware
+
+![apollo](https://acheronproject.com/images/apollo/delta-pictures/delta1_small.jpeg)
+
+The Apollo87H is Acheron Project's open-source, freely available tenkeyless (TKL) keyboard Printed Circuit Boards (PCB) which features:
+
+- Per-key RGB lighting
+- Hotswap sockets
+- ANSI default layout with F12 and 6.25 units spacebar.
+
+* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim)
+* Hardware Supported: open-source PCB using the [Joker template](https://acheronproject.com/joker_mcus/joker/). First units were manufactured using STM32F401 microcontroller;
+* Hardware Availability: these PCBs are open-source so you can manufacture them yourself or order them from a factory. See the [project's documentation](https://acheronproject.com/pcbs/apollo/apollo/) for more information.
+
+In order to flash this PCB, first build the default layout (after setting up your build environment):
+
+ make acheron/apollo/87h/<revision>:default
+
+Where `revision` is the revision of your PCB. Two revisions were prototyped and sold: _Gamma_ and _Delta_. Look into the label on the PCB's back to see what revision is yours. Ready-to-use binaries for the default and the VIA layouts are available in the release pages of the [project's repository](https://github.com/AcheronProject/Apollo87H).
+
+After building or downloading the firmware, put the PCB into DFU mode by holding the reset button for at least five seconds and upload the firmware onto the microcontroller through a utility like `dfu-util` or QMK Toolbox. Alternatively, you can build and flash using:
+
+ make acheron/apollo/87h/<revision>: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/acheron/apollo/87htsc/87htsc.c b/keyboards/acheron/apollo/87htsc/87htsc.c
new file mode 100644
index 0000000000..a476b7086e
--- /dev/null
+++ b/keyboards/acheron/apollo/87htsc/87htsc.c
@@ -0,0 +1,47 @@
+/*
+ Copyright 2022 Ã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 "87htsc.h"
+
+void board_init(void) {
+ setPinInput(B9);
+ setPinInput(B10);
+}
+
+led_config_t g_led_config = { {
+ { 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , NO_LED , 2 , 1 , 0 },
+ { 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 },
+ { 49 , 48 , 47 , 46 , 45 , 44 , 43 , 42 , 41 , 40 , 39 , 38 , 37 , 36 , 35 , 34 , 33 },
+ { 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , NO_LED , NO_LED , NO_LED , NO_LED },
+ { 75 , NO_LED , 74 , 73 , 72 , 71 , 70 , 69 , 68 , 67 , 66 , 65 , 64 , NO_LED , NO_LED , 63 , NO_LED },
+ { 76 , 77 , 78 , NO_LED , NO_LED , NO_LED , 79 , NO_LED , NO_LED , NO_LED , 80 , 81 , 82 , NO_LED , 83 , 84 , 85 }
+},{
+// "Fine-tuned" complex configuration
+ { 210, 0}, { 196, 0}, { 182, 0}, { 168, 0}, { 154, 0}, { 140, 0}, { 140, 0}, { 126, 0}, { 112, 0}, { 98, 0}, { 84, 0}, { 70, 0}, { 56, 0}, { 28, 0}, { 14, 0}, { 0, 0},
+ { 0, 45}, { 14, 45}, { 28, 45}, { 42, 45}, { 56, 45}, { 70, 45}, { 84, 45}, { 98, 45}, { 112, 45}, { 126, 45}, { 140, 45}, { 154, 45}, { 168, 45}, { 182, 45}, { 196, 45}, { 210, 45}, { 224, 45},
+ { 224, 90}, { 210, 90}, { 196, 90}, { 182, 90}, { 168, 90}, { 154, 90}, { 140, 90}, { 126, 90}, { 112, 90}, { 98, 90}, { 84, 90}, { 70, 90}, { 56, 90}, { 42, 90}, { 28, 90}, { 14, 90}, { 0, 90},
+ { 0, 135}, { 14, 135}, { 28, 135}, { 42, 135}, { 56, 135}, { 70, 135}, { 84, 135}, { 98, 135}, { 112, 135}, { 126, 135}, { 140, 135}, { 154, 135}, { 168, 135},
+ { 192, 180}, { 168, 180}, { 154, 180}, { 140, 180}, { 126, 180}, { 112, 180}, { 98, 180}, { 84, 180}, { 70, 180}, { 56, 180}, { 42, 180}, { 28, 180}, { 14, 180},
+ { 0, 225}, { 14, 225}, { 28, 225}, { 84, 225}, { 140, 225}, { 154, 225}, { 168, 225}, { 196, 225}, { 210, 225}, { 224, 225}
+}, {
+ 1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ,
+ 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ,
+ 4 , 4 , 4 , 4 , 4 , 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 ,
+ 1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 1 , 1 ,
+ 1 , 1 , 1 , 4 , 1 , 1 , 1 , 1 , 1 , 1
+} };
diff --git a/keyboards/acheron/apollo/87htsc/87htsc.h b/keyboards/acheron/apollo/87htsc/87htsc.h
new file mode 100644
index 0000000000..edfb2f4dab
--- /dev/null
+++ b/keyboards/acheron/apollo/87htsc/87htsc.h
@@ -0,0 +1,39 @@
+/*
+Copyright 2022 Ã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
+
+// 87t for 87-key plus tsangan
+#define LAYOUT_tkl_ansi_tsangan( \
+ 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, K3C, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \
+ K50, K51, K52, K56, K5A, K5B, K5C, K5E, K5F, K5G \
+) { \
+ { 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, K3C, ___, ___, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, ___, K5E, K5F, K5G } \
+}
diff --git a/keyboards/acheron/apollo/87htsc/config.h b/keyboards/acheron/apollo/87htsc/config.h
new file mode 100644
index 0000000000..30021a51b9
--- /dev/null
+++ b/keyboards/acheron/apollo/87htsc/config.h
@@ -0,0 +1,103 @@
+/*
+Copyright 2022 Ã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
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+// C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 , C9 , C10, C11, C12, C13, C14, C15, C16 }
+#define MATRIX_COL_PINS { C8 , C9 , A8 , A10, C7 , C6 , B14, B12, B10, B1 , C5 , C4 , A7 , B0 , C11, A3 , B4 }
+// R0 , R1 , R2 , R3 , R4 , R5
+#define MATRIX_ROW_PINS { B3 , D2 , C12, A6 , A5 , A4 }
+#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 EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+#define RGB_DI_PIN B15
+#define DRIVER_LED_TOTAL 86
+
+#define WS2812_PWM_COMPLEMENTARY_OUTPUT
+#define WS2812_PWM_DRIVER PWMD1
+#define WS2812_PWM_CHANNEL 3
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
+#define WS2812_DMA_CHANNEL 6
+
+#define RGB_MATRIX_STARTUP_VAL 60
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
+
+#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_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#define ENABLE_RGB_MATRIX_PIXEL_FLOW
+
+#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/acheron/apollo/87htsc/halconf.h b/keyboards/acheron/apollo/87htsc/halconf.h
new file mode 100644
index 0000000000..09240969ab
--- /dev/null
+++ b/keyboards/acheron/apollo/87htsc/halconf.h
@@ -0,0 +1,22 @@
+/* Copyright 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/>.
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+#define HAL_USE_PAL TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/acheron/apollo/87htsc/info.json b/keyboards/acheron/apollo/87htsc/info.json
new file mode 100644
index 0000000000..b2a9cf1643
--- /dev/null
+++ b/keyboards/acheron/apollo/87htsc/info.json
@@ -0,0 +1,108 @@
+{
+ "keyboard_name": "Apollo87H-T-SC",
+ "manufacturer": "AcheronProject",
+ "url": "",
+ "maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x4150",
+ "pid": "0x8776",
+ "device_version": "0.0.1"
+ },
+ "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":"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":"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.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.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/acheron/apollo/87htsc/keymaps/default/keymap.c b/keyboards/acheron/apollo/87htsc/keymaps/default/keymap.c
new file mode 100755
index 0000000000..f814960810
--- /dev/null
+++ b/keyboards/acheron/apollo/87htsc/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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_tkl_ansi_tsangan(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, 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
+ ),
+ [2] = LAYOUT_tkl_ansi_tsangan(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tkl_ansi_tsangan(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/acheron/apollo/87htsc/keymaps/via/keymap.c b/keyboards/acheron/apollo/87htsc/keymaps/via/keymap.c
new file mode 100755
index 0000000000..f814960810
--- /dev/null
+++ b/keyboards/acheron/apollo/87htsc/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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_tkl_ansi_tsangan(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, 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
+ ),
+ [2] = LAYOUT_tkl_ansi_tsangan(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tkl_ansi_tsangan(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/acheron/apollo/87htsc/keymaps/via/rules.mk b/keyboards/acheron/apollo/87htsc/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/acheron/apollo/87htsc/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/acheron/apollo/87htsc/mcuconf.h b/keyboards/acheron/apollo/87htsc/mcuconf.h
new file mode 100644
index 0000000000..652fecfc8a
--- /dev/null
+++ b/keyboards/acheron/apollo/87htsc/mcuconf.h
@@ -0,0 +1,25 @@
+/* Copyright 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/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_ADVANCED
+#define STM32_PWM_USE_ADVANCED TRUE
+
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
diff --git a/keyboards/acheron/apollo/87htsc/rules.mk b/keyboards/acheron/apollo/87htsc/rules.mk
new file mode 100644
index 0000000000..f2becf4db4
--- /dev/null
+++ b/keyboards/acheron/apollo/87htsc/rules.mk
@@ -0,0 +1,26 @@
+# MCU name
+MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
+
+# 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
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = legacy
+# 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/acheron/apollo/88htsc/88htsc.c b/keyboards/acheron/apollo/88htsc/88htsc.c
new file mode 100644
index 0000000000..574e1829de
--- /dev/null
+++ b/keyboards/acheron/apollo/88htsc/88htsc.c
@@ -0,0 +1,42 @@
+/*
+ Copyright 2022 Ã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 "88htsc.h"
+
+led_config_t g_led_config = { {
+ { 16 , 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0 },
+ { 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 },
+ { 50 , 49 , 48 , 47 , 46 , 45 , 44 , 43 , 42 , 41 , 40 , 39 , 38 , 37 , 36 , 35 , 34 },
+ { 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , 63 , NO_LED , NO_LED , NO_LED , NO_LED },
+ { 76 , NO_LED , 75 , 74 , 73 , 72 , 71 , 70 , 69 , 68 , 67 , 66 , 65 , NO_LED , NO_LED , 64 , NO_LED },
+ { 77 , 78 , 79 , NO_LED , NO_LED , NO_LED , 80 , NO_LED , NO_LED , NO_LED , 81 , 82 , 83 , NO_LED , 84 , 85 , 86 }
+},{
+// "Fine-tuned" complex configuration
+ { 210, 0}, { 196, 0}, { 182, 0}, { 168, 0}, { 154, 0}, { 140, 0}, { 140, 0}, { 126, 0}, { 112, 0}, { 98, 0}, { 84, 0}, { 70, 0}, { 56, 0}, { 45, 0}, { 28, 0}, { 14, 0}, { 0, 0},
+ { 0, 45}, { 14, 45}, { 28, 45}, { 42, 45}, { 56, 45}, { 70, 45}, { 84, 45}, { 98, 45}, { 112, 45}, { 126, 45}, { 140, 45}, { 154, 45}, { 168, 45}, { 182, 45}, { 196, 45}, { 210, 45}, { 224, 45},
+ { 224, 90}, { 210, 90}, { 196, 90}, { 182, 90}, { 168, 90}, { 154, 90}, { 140, 90}, { 126, 90}, { 112, 90}, { 98, 90}, { 84, 90}, { 70, 90}, { 56, 90}, { 42, 90}, { 28, 90}, { 14, 90}, { 0, 90},
+ { 0, 135}, { 14, 135}, { 28, 135}, { 42, 135}, { 56, 135}, { 70, 135}, { 84, 135}, { 98, 135}, { 112, 135}, { 126, 135}, { 140, 135}, { 154, 135}, { 168, 135},
+ { 192, 180}, { 168, 180}, { 154, 180}, { 140, 180}, { 126, 180}, { 112, 180}, { 98, 180}, { 84, 180}, { 70, 180}, { 56, 180}, { 42, 180}, { 28, 180}, { 14, 180},
+ { 0, 225}, { 14, 225}, { 28, 225}, { 84, 225}, { 140, 225}, { 154, 225}, { 168, 225}, { 196, 45}, { 210, 45}, { 224, 90}
+}, {
+ 1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ,
+ 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 ,
+ 4 , 4 , 4 , 4 , 4 , 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 ,
+ 1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 1 , 1 ,
+ 1 , 1 , 1 , 4 , 1 , 1 , 1 , 1 , 1 , 1
+} };
diff --git a/keyboards/acheron/apollo/88htsc/88htsc.h b/keyboards/acheron/apollo/88htsc/88htsc.h
new file mode 100644
index 0000000000..0963663c3f
--- /dev/null
+++ b/keyboards/acheron/apollo/88htsc/88htsc.h
@@ -0,0 +1,39 @@
+/*
+Copyright 2022 Ã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
+
+// 88T for 88-key plus tsangan
+#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, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \
+ K50, K51, K52, K56, K5A, K5B, K5C, 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, ___, ___, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, ___, K5E, K5F, K5G } \
+}
diff --git a/keyboards/acheron/apollo/88htsc/config.h b/keyboards/acheron/apollo/88htsc/config.h
new file mode 100644
index 0000000000..5df3628db2
--- /dev/null
+++ b/keyboards/acheron/apollo/88htsc/config.h
@@ -0,0 +1,103 @@
+/*
+Copyright 2022 Ã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
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+// C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 , C9 , C10, C11, C12, C13, C14, C15, C16 }
+#define MATRIX_COL_PINS { C8 , C9 , A8 , A10, C7 , C6 , B14, B12, B10, B1 , C5 , C4 , A7 , B0 , C11, A3 , B4 }
+// R0 , R1 , R2 , R3 , R4 , R5
+#define MATRIX_ROW_PINS { B3 , D2 , C12, A6 , A5 , A4 }
+#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 EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+#define RGB_DI_PIN B15
+#define DRIVER_LED_TOTAL 87
+
+#define WS2812_PWM_COMPLEMENTARY_OUTPUT
+#define WS2812_PWM_DRIVER PWMD1
+#define WS2812_PWM_CHANNEL 3
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
+#define WS2812_DMA_CHANNEL 6
+
+#define RGB_MATRIX_STARTUP_VAL 60
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
+
+#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_FRACTAL
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#define ENABLE_RGB_MATRIX_PIXEL_FLOW
+
+#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/acheron/apollo/88htsc/halconf.h b/keyboards/acheron/apollo/88htsc/halconf.h
new file mode 100644
index 0000000000..09240969ab
--- /dev/null
+++ b/keyboards/acheron/apollo/88htsc/halconf.h
@@ -0,0 +1,22 @@
+/* Copyright 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/>.
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+#define HAL_USE_PAL TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/acheron/apollo/88htsc/info.json b/keyboards/acheron/apollo/88htsc/info.json
new file mode 100644
index 0000000000..4d695faf70
--- /dev/null
+++ b/keyboards/acheron/apollo/88htsc/info.json
@@ -0,0 +1,109 @@
+{
+ "keyboard_name": "Apollo88H-T-SC",
+ "manufacturer": "AcheronProject",
+ "url": "",
+ "maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x4150",
+ "pid": "0x8873",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_tkl_f13_ansi_tsangan": {
+ "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":"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":"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.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.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/acheron/apollo/88htsc/keymaps/default/keymap.c b/keyboards/acheron/apollo/88htsc/keymaps/default/keymap.c
new file mode 100755
index 0000000000..abed7e6fbe
--- /dev/null
+++ b/keyboards/acheron/apollo/88htsc/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_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_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_tkl_f13_ansi_tsangan(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, 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
+ ),
+ [2] = LAYOUT_tkl_f13_ansi_tsangan(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tkl_f13_ansi_tsangan(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/acheron/apollo/88htsc/keymaps/via/keymap.c b/keyboards/acheron/apollo/88htsc/keymaps/via/keymap.c
new file mode 100755
index 0000000000..abed7e6fbe
--- /dev/null
+++ b/keyboards/acheron/apollo/88htsc/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_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_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_tkl_f13_ansi_tsangan(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, 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
+ ),
+ [2] = LAYOUT_tkl_f13_ansi_tsangan(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tkl_f13_ansi_tsangan(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/acheron/apollo/88htsc/keymaps/via/rules.mk b/keyboards/acheron/apollo/88htsc/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/acheron/apollo/88htsc/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/acheron/apollo/88htsc/mcuconf.h b/keyboards/acheron/apollo/88htsc/mcuconf.h
new file mode 100644
index 0000000000..652fecfc8a
--- /dev/null
+++ b/keyboards/acheron/apollo/88htsc/mcuconf.h
@@ -0,0 +1,25 @@
+/* Copyright 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/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_ADVANCED
+#define STM32_PWM_USE_ADVANCED TRUE
+
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
diff --git a/keyboards/acheron/apollo/88htsc/rules.mk b/keyboards/acheron/apollo/88htsc/rules.mk
new file mode 100644
index 0000000000..18e8b33b07
--- /dev/null
+++ b/keyboards/acheron/apollo/88htsc/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
+
+# 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
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = legacy
+
+# 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/acheron/apollo/readme.md b/keyboards/acheron/apollo/readme.md
new file mode 100644
index 0000000000..701378b64e
--- /dev/null
+++ b/keyboards/acheron/apollo/readme.md
@@ -0,0 +1,54 @@
+# Acheron Apollo QMK firmware
+
+![apollo](https://acheronproject.com/images/apollo/delta-pictures/delta1_small.jpeg)
+
+The Apollo is Acheron Project's family of open-source, freely available tenkeyless (TKL) keyboard Printed Circuit Boards (PCB) which main feature is the per-key RGB lighting.
+
+* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim)
+* Hardware Supported: open-source PCB using the [Joker template](https://acheronproject.com/joker_mcus/joker/). First units were manufactured using STM32F401 microcontroller;
+* Hardware Availability: these PCBs are open-source so you can manufacture them yourself or order them from a factory. See the [project's documentation](https://acheronproject.com/pcbs/apollo/apollo/) for more information.
+
+As of april 7, 2022, Apollo comes in three different layouts:
+
+- 87H (default ANSI)
+- 87H-T-SC (ANSI with tsangan bottom row and stepped caps);
+- 88H-T-SC (ANSI with F13, tsangan bottom row and stepped caps);
+
+See each variant's README for more information on flashing.
+
+## Flashing instructions
+
+### Step 1: 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 physical button on the back of the PCB for at least five seconds
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (ESC key at layer 1 in the default layout)
+
+### Step 2: compile firmware
+
+After accessing the DFU state in your PCB, build the default layout using:
+
+ make acheron/apollo/87h/gamma:default # For 87H revision Gamma
+ make acheron/apollo/87h/delta:default # For 87H revision Delta
+ make acheron/apollo/87htsc:default # For 87H-T-SC (only a single revision as of may 2022)
+ make acheron/apollo/88htsc:default # For 88H-T-SC (only a single revision as of may 2022)
+
+### Step 3: flashing
+
+You can use a flashing tool like `dfu-util` or QMK Toolbox to download the resulting `*.bin` file into your PCB.
+
+### (Alternative) Compile and flash
+
+After accessing the DFU state in your PCB, you can compile-and-flash automatically using `dfu-util` through
+
+ make acheron/apollo/<variant>:default:flash
+
+### VIA firmware
+
+When compiling, just substitute `default` for `via`.
+
+## Additional info
+
+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/arctic/config.h b/keyboards/acheron/arctic/config.h
index 1275eb5a65..63fa908081 100644
--- a/keyboards/acheron/arctic/config.h
+++ b/keyboards/acheron/arctic/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4150 // AP for AcheronProject
-#define PRODUCT_ID 0x4152 // AR for Arctic
-#define DEVICE_VER 0x0001 // Revision pre-Alpha
-#define MANUFACTURER AcheronProject
-#define PRODUCT ArcticPCB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/acheron/arctic/info.json b/keyboards/acheron/arctic/info.json
index 4f9974a1f6..4c249a31d3 100644
--- a/keyboards/acheron/arctic/info.json
+++ b/keyboards/acheron/arctic/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ArcticPCB",
+ "manufacturer": "AcheronProject",
"url": "http://gondolindrim.github.io/AcheronDocs/arctic/intro.html",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x4150",
+ "pid": "0x4152",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_tsangan": {
"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, "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}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Fn", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
diff --git a/keyboards/acheron/athena/alpha/alpha.c b/keyboards/acheron/athena/alpha/alpha.c
new file mode 100644
index 0000000000..645e0ea635
--- /dev/null
+++ b/keyboards/acheron/athena/alpha/alpha.c
@@ -0,0 +1,45 @@
+/* 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 "alpha.h"
+
+
+void board_init(void) {
+ setPinInput(B6);
+ setPinInput(B7);
+}
+
+void keyboard_post_init_kb(void){
+ // Defining the backlight pin (A6) as an floating (no pullup or pulldown resistor) opendrain output pin
+ palSetLineMode(BACKLIGHT_PIN, PAL_MODE_ALTERNATE(BACKLIGHT_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_OSPEED_HIGHEST | PAL_STM32_PUPDR_FLOATING);
+}
+
+#define LED_PIN_ON_STATE 1
+void led_init_ports(void) {
+ palSetLineMode(LED_CAPS_LOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN | PAL_STM32_PUPDR_FLOATING);
+}
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ #ifdef CAPSLOCK_INDICATOR
+ if(res) {
+ writePin(LED_CAPS_LOCK_PIN, !led_state.caps_lock);
+ }
+ #else
+ writePin(LED_CAPS_LOCK_PIN, 0);
+ #endif
+ return res;
+}
diff --git a/keyboards/acheron/athena/alpha/alpha.h b/keyboards/acheron/athena/alpha/alpha.h
new file mode 100644
index 0000000000..740b4280a1
--- /dev/null
+++ b/keyboards/acheron/athena/alpha/alpha.h
@@ -0,0 +1,196 @@
+/* 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
+#define ___ KC_NO
+
+#include "quantum.h"
+
+/*
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┠┌───┬───┬───â”
+ * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0A │0B │0C ││0D │ │0E │0F │0G │ F13 Row
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │00 │ │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 │1E │ │2E │1F │1G │ │1D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └─┬─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │3E │2F │2G │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴â”3D │ ISO Enter
+ * LShift │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │3C │ │
+ * ┌────────┠├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┠┌─┴───┴────┤
+ * │40 │ │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │ │4F │ │4C │ 2.75u RShift
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┠└──────────┘
+ * │50 │51 │52 │56 │59 │5A │5B │5D │ │5E │5F │5G │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────â”
+ * │50 │51 │52 │56 │5A │5B │5D │ 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, K1E, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3E, 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, K59, K5A, K5B, 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, K3E, ___, ___ }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#define LAYOUT_tkl_ansi( \
+ 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, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3E, 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, K59, K5A, K5B, K5D, K5E, K5F, K5G \
+)\
+{\
+ { 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, ___, 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, K3E, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#define LAYOUT_tkl_ansi_split_bs_rshift( \
+ 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, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3E, 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, K4D, K4F, \
+ K50, K51, K52, K56, K59, K5A, K5B, K5D, K5E, K5F, K5G \
+)\
+{\
+ { 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, ___, K3D, K3E, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#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, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3E, 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, K59, K5A, K5B, 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, ___, 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, K3E, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#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, K1E, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3E, 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, K4D, K4F, \
+ K50, K51, K52, K56, K59, K5A, K5B, 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, ___, K3D, K3E, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#define LAYOUT_tkl_iso( \
+ 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, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3E, 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, K4F, \
+ K50, K51, K52, K56, K59, K5A, K5B, K5D, K5E, K5F, K5G \
+)\
+{\
+ { 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, ___, 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, K3E, ___, ___ }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#define LAYOUT_tkl_iso_split_bs_rshift( \
+ 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, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3E, 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, K59, K5A, K5B, K5D, K5E, K5F, K5G \
+)\
+{\
+ { 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, ___, K2E, K2F, K2G }, \
+ { 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, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#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, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3E, 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, K4F, \
+ K50, K51, K52, K56, K59, K5A, K5B, 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, ___, 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, K3E, ___, ___ }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#define LAYOUT_tkl_f13_iso_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, K1E, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3E, 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, K59, K5A, K5B, 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, ___, K2E, K2F, K2G }, \
+ { 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, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
diff --git a/keyboards/acheron/athena/alpha/config.h b/keyboards/acheron/athena/alpha/config.h
new file mode 100644
index 0000000000..99dbd76c6f
--- /dev/null
+++ b/keyboards/acheron/athena/alpha/config.h
@@ -0,0 +1,67 @@
+/*
+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"
+
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+#define MATRIX_COL_PINS { A8 , B14, B12, B10, B1 , B0 , A5 , A4 , A3 , A2 , A1 , A0 , C15, A7 , B4 , B3 , A15 }
+#define MATRIX_ROW_PINS { B9 , C13, B8 , B5 , A14 , C14 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define DEBOUNCE 5
+
+#define LOCKING_SUPPORT_ENABLE
+#define LOCKING_RESYNC_ENABLE
+
+#define BACKLIGHT_PIN A6
+#define BACKLIGHT_PWM_DRIVER PWMD3
+#define BACKLIGHT_PWM_CHANNEL 1
+#define BACKLIGHT_PAL_MODE 2
+#define BACKLIGHT_LEVELS 20
+#define BACKLIGHT_BREATHING
+#define BREATHING_PERIOD 5
+#define BACKLIGHT_ON_STATE 0
+
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 34
+#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 WS2812_PWM_COMPLEMENTARY_OUTPUT
+#define WS2812_PWM_DRIVER PWMD1
+#define WS2812_PWM_CHANNEL 3
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
+#define WS2812_DMA_CHANNEL 6
+
+#define LED_CAPS_LOCK_PIN A10
+
+// If this is defined, the caps lock LED will turn on and off according to the state of caps lock. If not, the LED will shine like all other LEDs despite the caps lock state.
+#define CAPSLOCK_INDICATOR
diff --git a/keyboards/acheron/athena/alpha/halconf.h b/keyboards/acheron/athena/alpha/halconf.h
new file mode 100644
index 0000000000..ebdb4954a1
--- /dev/null
+++ b/keyboards/acheron/athena/alpha/halconf.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 HAL_USE_PWM TRUE
+#define HAL_USE_PAL TRUE
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/acheron/athena/alpha/info.json b/keyboards/acheron/athena/alpha/info.json
new file mode 100644
index 0000000000..03640fd01d
--- /dev/null
+++ b/keyboards/acheron/athena/alpha/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Athena",
+ "usb": {
+ "pid": "0x6584",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/acheron/athena/alpha/keymaps/default/keymap.c b/keyboards/acheron/athena/alpha/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f17c1234b7
--- /dev/null
+++ b/keyboards/acheron/athena/alpha/keymaps/default/keymap.c
@@ -0,0 +1,51 @@
+/* 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
+
+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_PSCR, KC_SCRL, KC_PAUS,
+ 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_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_COLN, 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(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/acheron/athena/alpha/keymaps/via/keymap.c b/keyboards/acheron/athena/alpha/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f17c1234b7
--- /dev/null
+++ b/keyboards/acheron/athena/alpha/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* 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
+
+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_PSCR, KC_SCRL, KC_PAUS,
+ 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_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_COLN, 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(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/acheron/athena/alpha/keymaps/via/rules.mk b/keyboards/acheron/athena/alpha/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/acheron/athena/alpha/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/acheron/athena/alpha/mcuconf.h b/keyboards/acheron/athena/alpha/mcuconf.h
new file mode 100644
index 0000000000..63f1e30e64
--- /dev/null
+++ b/keyboards/acheron/athena/alpha/mcuconf.h
@@ -0,0 +1,31 @@
+/* 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
+
+#undef STM32_PWM_USE_ADVANCED
+#define STM32_PWM_USE_ADVANCED TRUE
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
diff --git a/keyboards/acheron/athena/alpha/rules.mk b/keyboards/acheron/athena/alpha/rules.mk
new file mode 100644
index 0000000000..7711254bbe
--- /dev/null
+++ b/keyboards/acheron/athena/alpha/rules.mk
@@ -0,0 +1,25 @@
+# MCU name
+MCU = STM32F411
+BOARD = GENERIC_STM32_F411XE
+
+# 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 = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = pwm
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = yes
+ENCODER_ENABLE = no
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/acheron/athena/athena.c b/keyboards/acheron/athena/athena.c
new file mode 100644
index 0000000000..aa5fae94f6
--- /dev/null
+++ b/keyboards/acheron/athena/athena.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 Alvaro "Gondolindrim" Volpato
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "athena.h"
diff --git a/keyboards/acheron/athena/athena.h b/keyboards/acheron/athena/athena.h
new file mode 100644
index 0000000000..0dd55ba8f1
--- /dev/null
+++ b/keyboards/acheron/athena/athena.h
@@ -0,0 +1,24 @@
+/* Copyright 2022 Alvaro "Gondolindrim" Volpato
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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_acheron_athena_alpha)
+ #include "alpha.h"
+#elif defined(KEYBOARD_acheron_athena_beta)
+ #include "beta.h"
+#endif
diff --git a/keyboards/acheron/athena/beta/beta.c b/keyboards/acheron/athena/beta/beta.c
new file mode 100644
index 0000000000..06d40d1493
--- /dev/null
+++ b/keyboards/acheron/athena/beta/beta.c
@@ -0,0 +1,35 @@
+/* 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"
+
+
+void board_init(void) {
+ setPinInput(B6);
+ setPinInput(B7);
+}
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ #ifdef CAPSLOCK_INDICATOR
+ if(res) {
+ writePin(LED_CAPS_LOCK_PIN, led_state.caps_lock);
+ }
+ #else
+ writePin(LED_CAPS_LOCK_PIN, 0);
+ #endif
+ return res;
+}
diff --git a/keyboards/acheron/athena/beta/beta.h b/keyboards/acheron/athena/beta/beta.h
new file mode 100644
index 0000000000..740b4280a1
--- /dev/null
+++ b/keyboards/acheron/athena/beta/beta.h
@@ -0,0 +1,196 @@
+/* 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
+#define ___ KC_NO
+
+#include "quantum.h"
+
+/*
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┠┌───┬───┬───â”
+ * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0A │0B │0C ││0D │ │0E │0F │0G │ F13 Row
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┴───┴───┘
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │00 │ │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 │1E │ │2E │1F │1G │ │1D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤ └─┬─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │3E │2F │2G │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴â”3D │ ISO Enter
+ * LShift │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │3C │ │
+ * ┌────────┠├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┠┌─┴───┴────┤
+ * │40 │ │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │ │4F │ │4C │ 2.75u RShift
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┠└──────────┘
+ * │50 │51 │52 │56 │59 │5A │5B │5D │ │5E │5F │5G │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────â”
+ * │50 │51 │52 │56 │5A │5B │5D │ 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, K1E, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3E, 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, K59, K5A, K5B, 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, K3E, ___, ___ }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#define LAYOUT_tkl_ansi( \
+ 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, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3E, 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, K59, K5A, K5B, K5D, K5E, K5F, K5G \
+)\
+{\
+ { 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, ___, 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, K3E, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#define LAYOUT_tkl_ansi_split_bs_rshift( \
+ 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, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3E, 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, K4D, K4F, \
+ K50, K51, K52, K56, K59, K5A, K5B, K5D, K5E, K5F, K5G \
+)\
+{\
+ { 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, ___, K3D, K3E, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#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, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3E, 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, K59, K5A, K5B, 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, ___, 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, K3E, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#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, K1E, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K3E, 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, K4D, K4F, \
+ K50, K51, K52, K56, K59, K5A, K5B, 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, ___, K3D, K3E, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#define LAYOUT_tkl_iso( \
+ 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, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3E, 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, K4F, \
+ K50, K51, K52, K56, K59, K5A, K5B, K5D, K5E, K5F, K5G \
+)\
+{\
+ { 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, ___, 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, K3E, ___, ___ }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#define LAYOUT_tkl_iso_split_bs_rshift( \
+ 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, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3E, 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, K59, K5A, K5B, K5D, K5E, K5F, K5G \
+)\
+{\
+ { 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, ___, K2E, K2F, K2G }, \
+ { 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, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#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, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3E, 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, K4F, \
+ K50, K51, K52, K56, K59, K5A, K5B, 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, ___, 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, K3E, ___, ___ }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
+
+#define LAYOUT_tkl_f13_iso_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, K1E, K2E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3E, 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, K59, K5A, K5B, 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, ___, K2E, K2F, K2G }, \
+ { 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, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, ___, K5D, K5E, K5F, K5G }\
+}
diff --git a/keyboards/acheron/athena/beta/config.h b/keyboards/acheron/athena/beta/config.h
new file mode 100644
index 0000000000..4b2ae3f06b
--- /dev/null
+++ b/keyboards/acheron/athena/beta/config.h
@@ -0,0 +1,67 @@
+/*
+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"
+
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+#define MATRIX_COL_PINS { C7 , C6 , B14, B12, B10, B1 , C4 , A7 , A6 , A5 , A4 , A3 , A2 , C5 , A10, A8 , C9 }
+#define MATRIX_ROW_PINS { C11, C12, C10, A15, C0 , A1 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define DEBOUNCE 5
+
+#define LOCKING_SUPPORT_ENABLE
+#define LOCKING_RESYNC_ENABLE
+
+#define BACKLIGHT_PIN B0
+#define BACKLIGHT_PWM_DRIVER PWMD3
+#define BACKLIGHT_PWM_CHANNEL 3
+#define BACKLIGHT_PAL_MODE 2
+#define BACKLIGHT_LEVELS 20
+#define BACKLIGHT_BREATHING
+#define BREATHING_PERIOD 5
+
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 34
+#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
+
+#define WS2812_PWM_COMPLEMENTARY_OUTPUT
+#define WS2812_PWM_DRIVER PWMD1
+#define WS2812_PWM_CHANNEL 3
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
+#define WS2812_DMA_CHANNEL 6
+
+#define LED_CAPS_LOCK_PIN C8
+
+// If this is defined, the caps lock LED will turn on and off according to the state of caps lock. If not, the LED will shine like all other LEDs despite the caps lock state.
+#define CAPSLOCK_INDICATOR
diff --git a/keyboards/acheron/athena/beta/halconf.h b/keyboards/acheron/athena/beta/halconf.h
new file mode 100644
index 0000000000..ebdb4954a1
--- /dev/null
+++ b/keyboards/acheron/athena/beta/halconf.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 HAL_USE_PWM TRUE
+#define HAL_USE_PAL TRUE
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/acheron/athena/beta/info.json b/keyboards/acheron/athena/beta/info.json
new file mode 100644
index 0000000000..7db7665fe2
--- /dev/null
+++ b/keyboards/acheron/athena/beta/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Athena rev Beta",
+ "usb": {
+ "pid": "0x6585",
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/acheron/athena/beta/keymaps/default/keymap.c b/keyboards/acheron/athena/beta/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f17c1234b7
--- /dev/null
+++ b/keyboards/acheron/athena/beta/keymaps/default/keymap.c
@@ -0,0 +1,51 @@
+/* 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
+
+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_PSCR, KC_SCRL, KC_PAUS,
+ 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_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_COLN, 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(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/acheron/athena/beta/keymaps/via/keymap.c b/keyboards/acheron/athena/beta/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f17c1234b7
--- /dev/null
+++ b/keyboards/acheron/athena/beta/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* 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
+
+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_PSCR, KC_SCRL, KC_PAUS,
+ 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_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_COLN, 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(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/acheron/athena/beta/keymaps/via/rules.mk b/keyboards/acheron/athena/beta/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/acheron/athena/beta/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/acheron/athena/beta/mcuconf.h b/keyboards/acheron/athena/beta/mcuconf.h
new file mode 100644
index 0000000000..63f1e30e64
--- /dev/null
+++ b/keyboards/acheron/athena/beta/mcuconf.h
@@ -0,0 +1,31 @@
+/* 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
+
+#undef STM32_PWM_USE_ADVANCED
+#define STM32_PWM_USE_ADVANCED TRUE
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
diff --git a/keyboards/acheron/athena/beta/rules.mk b/keyboards/acheron/athena/beta/rules.mk
new file mode 100644
index 0000000000..81bbce68c1
--- /dev/null
+++ b/keyboards/acheron/athena/beta/rules.mk
@@ -0,0 +1,24 @@
+MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
+
+# 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 = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = pwm
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = yes
+ENCODER_ENABLE = no
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/acheron/athena/info.json b/keyboards/acheron/athena/info.json
new file mode 100644
index 0000000000..34853a12f6
--- /dev/null
+++ b/keyboards/acheron/athena/info.json
@@ -0,0 +1,895 @@
+{
+ "manufacturer": "AcheronProject",
+ "url": "",
+ "maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0xAC11"
+ },
+ "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":"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":"Back Space", "x":13, "y":1.25},
+ {"label":"Back Space", "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":"#~", "x":12.75, "y":3.25},
+ {"label":"Enter", "x":13.75, "y":3.25, "w":1.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":"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_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":"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_ansi_split_bs_rshift": {
+ "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":"Back Space", "x":13, "y":1.25},
+ {"label":"Back Space", "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":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":"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":"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_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_ansi_split_bs_rshift": {
+ "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":"Back Space", "x":13, "y":1.25},
+ {"label":"Back Space", "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":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":"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":"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_iso": {
+ "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":"`\u00ac", "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}
+ ]
+ },
+ "LAYOUT_tkl_iso_split_bs_rshift": {
+ "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":"`\u00ac", "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":"Back Space", "x":13, "y":1.25},
+ {"label":"Back Space", "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":"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":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":"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":"`\u00ac", "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}
+ ]
+ },
+ "LAYOUT_tkl_f13_iso_split_bs_rshift": {
+ "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":"`\u00ac", "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":"Back Space", "x":13, "y":1.25},
+ {"label":"Back Space", "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":"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":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":"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/acheron/athena/readme.md b/keyboards/acheron/athena/readme.md
new file mode 100644
index 0000000000..1c091ada01
--- /dev/null
+++ b/keyboards/acheron/athena/readme.md
@@ -0,0 +1,25 @@
+# Acheron Athena QMK firmware
+
+![athena](https://acheronproject.com/images/athena/IMG_9653.jpg)
+
+The Athena is Acheron Project's open-source, freely available tenkeyless (TKL) keyboard Printed Circuit Boards (PCB) which features:
+
+- Per-key LED lighting
+- Solderable MX switches support
+- Wide variety of layouts including Tsangan bottom row, split right and left shifts, ISO enter, split backspace, F13 top row
+
+* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim)
+* Hardware Supported: open-source PCB using the [Joker template](https://acheronproject.com/joker_mcus/joker/). First units were manufactured using STM32F4x1 microcontroller;
+* Hardware Availability: these PCBs are open-source so you can manufacture them yourself or order them from a factory. See the [project's documentation](https://acheronproject.com/pcbs/athena/athena/) for more information.
+
+In order to flash this PCB, first build the default layout (after setting up your build environment):
+
+ make acheron/athena/<revision>:default
+
+Where `revision` is the revision of your PCB. Two revisions were prototyped and sold: _Alpha_ and _Beta_. Look into the label on the PCB's back to see what revision is yours. Ready-to-use binaries for the default and the VIA layouts are available in the release pages of the [project's repository](https://github.com/AcheronProject/Athena).
+
+After building or downloading the firmware, put the PCB into DFU mode by holding the reset button for at least five seconds and upload the firmware onto the microcontroller through a utility like `dfu-util` or QMK Toolbox. Alternatively, you can build and flash using:
+
+ make acheron/athena/<revision>: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/acheron/austin/config.h b/keyboards/acheron/austin/config.h
index ddbd6975d4..3b51bb3f86 100644
--- a/keyboards/acheron/austin/config.h
+++ b/keyboards/acheron/austin/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xAC11
-#define PRODUCT_ID 0x4175
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DriftMechanics
-#define PRODUCT Austin
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 19
diff --git a/keyboards/acheron/austin/info.json b/keyboards/acheron/austin/info.json
index bee81486e3..6fda03534e 100755
--- a/keyboards/acheron/austin/info.json
+++ b/keyboards/acheron/austin/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Austin",
+ "manufacturer": "DriftMechanics",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xAC11",
+ "pid": "0x4175",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/acheron/elongate/beta/config.h b/keyboards/acheron/elongate/beta/config.h
index 874183362c..042da65f8e 100644
--- a/keyboards/acheron/elongate/beta/config.h
+++ b/keyboards/acheron/elongate/beta/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/acheron/elongate/beta/info.json b/keyboards/acheron/elongate/beta/info.json
index bfb9db9b3a..7eb1de3c17 100644
--- a/keyboards/acheron/elongate/beta/info.json
+++ b/keyboards/acheron/elongate/beta/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Elongate",
+ "manufacturer": "Acheron Project",
"url": "http://gondolindrim.github.io/AcheronDocs/elongate/introduction.html",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x4150",
+ "pid": "0x454C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/acheron/elongate/beta/readme.md b/keyboards/acheron/elongate/beta/readme.md
index 8a8949fdfe..d4298254b5 100755
--- a/keyboards/acheron/elongate/beta/readme.md
+++ b/keyboards/acheron/elongate/beta/readme.md
@@ -20,7 +20,7 @@ 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.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
## Compile firmware
diff --git a/keyboards/acheron/elongate/delta/config.h b/keyboards/acheron/elongate/delta/config.h
index 957a6e39cd..8ebc6300d7 100755
--- a/keyboards/acheron/elongate/delta/config.h
+++ b/keyboards/acheron/elongate/delta/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/acheron/elongate/delta/info.json b/keyboards/acheron/elongate/delta/info.json
index d96805a66a..54e58deb92 100644
--- a/keyboards/acheron/elongate/delta/info.json
+++ b/keyboards/acheron/elongate/delta/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Elongate",
+ "manufacturer": "Acheron Project",
"url": "http://gondolindrim.github.io/AcheronDocs/elongate/introduction.html",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x4150",
+ "pid": "0x454D",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/acheron/elongate/delta/readme.md b/keyboards/acheron/elongate/delta/readme.md
index 055b02ee04..7300b8aa64 100755
--- a/keyboards/acheron/elongate/delta/readme.md
+++ b/keyboards/acheron/elongate/delta/readme.md
@@ -20,7 +20,7 @@ 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)
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (escape key at layer 2 in the default firmware)
## Compile firmware
diff --git a/keyboards/acheron/keebspcb/config.h b/keyboards/acheron/keebspcb/config.h
index 05e08f74f7..4991c68a50 100644
--- a/keyboards/acheron/keebspcb/config.h
+++ b/keyboards/acheron/keebspcb/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4150 // AP for AcheronProject
-#define PRODUCT_ID 0x4B45 // KE for Keebs
-#define DEVICE_VER 0x0001 // Revision pre-Alpha
-#define MANUFACTURER AcheronProject
-#define PRODUCT KeebsPCB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 13
diff --git a/keyboards/acheron/keebspcb/info.json b/keyboards/acheron/keebspcb/info.json
index b316cc6849..31dc899c42 100644
--- a/keyboards/acheron/keebspcb/info.json
+++ b/keyboards/acheron/keebspcb/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "KeebsPCB",
+ "manufacturer": "AcheronProject",
"url": "http://gondolindrim.github.io/AcheronDocs/keebs/intro.html",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x4150",
+ "pid": "0x4B45",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_tsangan": {
"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, "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}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Menu", "x":13.5, "y":4, "w":1.5}]
diff --git a/keyboards/acheron/lasgweloth/config.h b/keyboards/acheron/lasgweloth/config.h
index f9a2427fae..aebe821e3b 100644
--- a/keyboards/acheron/lasgweloth/config.h
+++ b/keyboards/acheron/lasgweloth/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4150 // AP for AcheronProject
-#define PRODUCT_ID 0x7641 // LA for Lasgweloth
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AcheronProect
-#define PRODUCT Lasgweloth
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/acheron/lasgweloth/info.json b/keyboards/acheron/lasgweloth/info.json
index b936b45d6e..7cade663da 100644
--- a/keyboards/acheron/lasgweloth/info.json
+++ b/keyboards/acheron/lasgweloth/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Lasgweloth",
+ "manufacturer": "AcheronProject",
"url": "",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x4150",
+ "pid": "0x7641",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/acheron/shark/alpha/config.h b/keyboards/acheron/shark/alpha/config.h
index 493d267b51..50e14aa258 100644
--- a/keyboards/acheron/shark/alpha/config.h
+++ b/keyboards/acheron/shark/alpha/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xAC11
-#define PRODUCT_ID 0x5368
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AcheronProject
-#define PRODUCT SharkPCB
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -52,7 +45,6 @@ EncA (B6) because it is not used in the default PCB
All Extra pins (A8, B15, B14, B13, B3, B5, B8, B9) , for the same reason;
B0, which is unconnected on the PCB
*/
-//#define UNUSED_PINS { B0, B6, B13, B14, B15, B8, B9, B5, B3 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/acheron/shark/alpha/info.json b/keyboards/acheron/shark/alpha/info.json
index 21f4807eeb..435ea843aa 100644
--- a/keyboards/acheron/shark/alpha/info.json
+++ b/keyboards/acheron/shark/alpha/info.json
@@ -2,6 +2,10 @@
"keyboard_name": "SharkPCB",
"url": "https://gondolindrim.github.io/AcheronDocs/shark/intro.html",
"maintainer": "Gondolindrim",
+ "usb": {
+ "pid": "0x5368",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
diff --git a/keyboards/acheron/shark/beta/config.h b/keyboards/acheron/shark/beta/config.h
index 54fa270336..77e98b329c 100644
--- a/keyboards/acheron/shark/beta/config.h
+++ b/keyboards/acheron/shark/beta/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xAC11
-#define PRODUCT_ID 0x5369 // For Shark+1
-#define DEVICE_VER 0x0002
-#define MANUFACTURER AcheronProject
-#define PRODUCT SharkPCB rev. Beta
-
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -47,8 +40,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BREATHING_PERIOD 5
#define BACKLIGHT_ON_STATE 1
-#define STM32_HSECLK 8000000
-
#define RGB_DI_PIN B15
#define RGBLED_NUM 24
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/acheron/shark/beta/info.json b/keyboards/acheron/shark/beta/info.json
new file mode 100644
index 0000000000..5d0c6557e7
--- /dev/null
+++ b/keyboards/acheron/shark/beta/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "SharkPCB rev. Beta",
+ "usb": {
+ "pid": "0x5369",
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/acheron/shark/beta/mcuconf.h b/keyboards/acheron/shark/beta/mcuconf.h
index 35d7e95f57..63f1e30e64 100644
--- a/keyboards/acheron/shark/beta/mcuconf.h
+++ b/keyboards/acheron/shark/beta/mcuconf.h
@@ -17,19 +17,6 @@
#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 96
-#define STM32_PLLP_VALUE 2
-#define STM32_PLLQ_VALUE 4
-#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/acheron/shark/beta/rules.mk b/keyboards/acheron/shark/beta/rules.mk
index 928ad2d49a..0347228300 100644
--- a/keyboards/acheron/shark/beta/rules.mk
+++ b/keyboards/acheron/shark/beta/rules.mk
@@ -1,4 +1,5 @@
MCU = STM32F411
+BOARD = GENERIC_STM32_F411XE
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/acheron/shark/info.json b/keyboards/acheron/shark/info.json
new file mode 100644
index 0000000000..6d22c842fb
--- /dev/null
+++ b/keyboards/acheron/shark/info.json
@@ -0,0 +1,6 @@
+{
+ "manufacturer": "AcheronProject",
+ "usb": {
+ "vid": "0xAC11"
+ }
+}
diff --git a/keyboards/acheron/shark/readme.md b/keyboards/acheron/shark/readme.md
index d805571ebb..f3ae43ac47 100644
--- a/keyboards/acheron/shark/readme.md
+++ b/keyboards/acheron/shark/readme.md
@@ -17,7 +17,7 @@ The DFU state in the bootloader can be accessed in 2 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 back of the PCB
-* **Keycode in layout**: press the key mapped to `RESET` if it is available (ESC key at layer 1 in the default layout)
+* **Keycode in layout**: press the key mapped to `QK_BOOT` if it is available (ESC key at layer 1 in the default layout)
### Release Beta:
@@ -25,7 +25,7 @@ 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 back of the PCB, 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)
+* **Keycode in layout**: press the key mapped to `QK_BOOT` if it is available (ESC key at layer 1 in the default layout)
## Compile firmware
diff --git a/keyboards/ada/ada1800mini/config.h b/keyboards/ada/ada1800mini/config.h
index 38be5ad5c7..36dc47c124 100644
--- a/keyboards/ada/ada1800mini/config.h
+++ b/keyboards/ada/ada1800mini/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xADA0
-#define PRODUCT_ID 0x1800
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ada
-#define PRODUCT ada1800mini
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/ada/ada1800mini/info.json b/keyboards/ada/ada1800mini/info.json
index 8e746467fc..a7cf7986bd 100644
--- a/keyboards/ada/ada1800mini/info.json
+++ b/keyboards/ada/ada1800mini/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ada1800mini",
+ "manufacturer": "Ada",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xADA0",
+ "pid": "0x1800",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ada/ada1800mini/readme.md b/keyboards/ada/ada1800mini/readme.md
index ad323114a6..561dbd99a9 100644
--- a/keyboards/ada/ada1800mini/readme.md
+++ b/keyboards/ada/ada1800mini/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/ada/infinity81/config.h b/keyboards/ada/infinity81/config.h
index af28efeae2..e4cfa2c34e 100644
--- a/keyboards/ada/infinity81/config.h
+++ b/keyboards/ada/infinity81/config.h
@@ -5,13 +5,6 @@
#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
@@ -28,7 +21,6 @@
*/
#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
diff --git a/keyboards/ada/infinity81/info.json b/keyboards/ada/infinity81/info.json
index 71fb774721..b2d465fdf9 100644
--- a/keyboards/ada/infinity81/info.json
+++ b/keyboards/ada/infinity81/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "infinity81",
+ "manufacturer": "Ada",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xADA0",
+ "pid": "0x0081",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ada/infinity81/readme.md b/keyboards/ada/infinity81/readme.md
index a134379ce5..f44d762cb7 100644
--- a/keyboards/ada/infinity81/readme.md
+++ b/keyboards/ada/infinity81/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/adafruit/macropad/config.h b/keyboards/adafruit/macropad/config.h
new file mode 100644
index 0000000000..cc4cbc940c
--- /dev/null
+++ b/keyboards/adafruit/macropad/config.h
@@ -0,0 +1,131 @@
+/* Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@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"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 3
+
+/* Keyboard Matrix Assignments */
+// clang-format off
+#define DIRECT_PINS { \
+ { NO_PIN, NO_PIN, GP0 }, \
+ { GP1, GP2, GP3 }, \
+ { GP4, GP5, GP6 }, \
+ { GP7, GP8, GP9 }, \
+ { GP10, GP11, GP12 } \
+}
+// clang-format on
+
+/* OLED SPI Defines */
+#define OLED_DISPLAY_128X64
+#define OLED_IC OLED_IC_SH1106
+
+/* OLED SPI Pins */
+#define OLED_DC_PIN GP24
+#define OLED_CS_PIN GP22
+#define OLED_RST_PIN GP23
+
+/* Shift OLED columns by 2 pixels */
+#define OLED_COLUMN_OFFSET 2
+
+/* Divisor for OLED */
+#define OLED_SPI_DIVISOR 4
+
+/* ChibiOS SPI definitions */
+#define SPI_DRIVER SPID1
+#define SPI_SCK_PIN GP26
+#define SPI_MOSI_PIN GP27
+#define SPI_MISO_PIN GP28
+
+/* Encoders */
+#define ENCODERS_PAD_A { GP18 }
+#define ENCODERS_PAD_B { GP17 }
+
+#define DEBOUNCE 5
+
+/* Bootmagic lite */
+/* (Press the key bellow the encoder button while plugging the keyboard to enter the bootloader and clear flash) */
+#define BOOTMAGIC_LITE_ROW 1
+#define BOOTMAGIC_LITE_COLUMN 2
+
+/* Double tap the side button to enter bootloader */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP13
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
+
+/* Audio (Unsupported for now)*/
+// #define AUDIO_PIN GP16
+// #define SPEAKER_SHUTDOWN GP14
+
+#ifdef RGB_MATRIX_ENABLE
+
+ /* RGB Defines */
+# define RGB_DI_PIN GP19
+# define DRIVER_LED_TOTAL 12
+# define RGBLED_NUM 12
+
+ /* Enable Framebuffer and keypress 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
+# 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/adafruit/macropad/halconf.h b/keyboards/adafruit/macropad/halconf.h
new file mode 100644
index 0000000000..6cd66fd520
--- /dev/null
+++ b/keyboards/adafruit/macropad/halconf.h
@@ -0,0 +1,28 @@
+/* Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@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 <halconf.h>
+
+#undef HAL_USE_SPI
+#define HAL_USE_SPI TRUE
+
+#undef SPI_USE_WAIT
+#define SPI_USE_WAIT TRUE
+
+#undef SPI_SELECT_MODE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
diff --git a/keyboards/adafruit/macropad/info.json b/keyboards/adafruit/macropad/info.json
new file mode 100644
index 0000000000..e9bd7d85b1
--- /dev/null
+++ b/keyboards/adafruit/macropad/info.json
@@ -0,0 +1,30 @@
+{
+ "keyboard_name": "Macropad RP2040",
+ "manufacturer": "Adafruit",
+ "url": "https://learn.adafruit.com/adafruit-macropad-rp2040",
+ "maintainer": "Jpe230",
+ "usb": {
+ "vid": "0x239A",
+ "pid": "0x0108",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Mute", "x":2, "y":0},
+ {"label":"Enter", "x":0, "y":1},
+ {"label":"KC_0", "x":1, "y":1},
+ {"label":"BackSpace", "x":2, "y":1},
+ {"label":"KC_7", "x":0, "y":2},
+ {"label":"KC_8", "x":1, "y":2},
+ {"label":"KC_9", "x":2, "y":2},
+ {"label":"KC_4", "x":0, "y":3},
+ {"label":"KC_5", "x":1, "y":3},
+ {"label":"KC_6", "x":2, "y":3},
+ {"label":"KC_1", "x":0, "y":4},
+ {"label":"KC_2", "x":1, "y":4},
+ {"label":"KC_3", "x":2, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/adafruit/macropad/keymaps/default/keymap.c b/keyboards/adafruit/macropad/keymaps/default/keymap.c
new file mode 100644
index 0000000000..34989ea0b6
--- /dev/null
+++ b/keyboards/adafruit/macropad/keymaps/default/keymap.c
@@ -0,0 +1,114 @@
+/* Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@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_MUTE,
+ KC_ENT, KC_0, KC_BSPC,
+ KC_7, KC_8, KC_9,
+ KC_4, KC_5, KC_6,
+ KC_1, KC_2, KC_3
+ )
+};
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+};
+#endif
+
+
+#ifdef OLED_ENABLE
+static void render_qmk_logo(void) {
+ static const char PROGMEM qmk_logo[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,
+ 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x83, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 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,
+ 0x81, 0x83, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 0x81,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x07, 0x1f, 0x3f, 0x7f, 0x7e, 0xf8, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xff, 0xff,
+ 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf8, 0x7e, 0x7f, 0x3f, 0x1f, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff,
+ 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 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, 0x00, 0x00, 0x00, 0x00,
+ 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 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
+ };
+
+ oled_write_raw_P(qmk_logo, sizeof(qmk_logo));
+}
+
+bool oled_task_user(void) {
+ render_qmk_logo();
+ return true;
+}
+
+#endif
+
diff --git a/keyboards/adafruit/macropad/keymaps/default/rules.mk b/keyboards/adafruit/macropad/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/adafruit/macropad/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/adafruit/macropad/keymaps/via/keymap.c b/keyboards/adafruit/macropad/keymaps/via/keymap.c
new file mode 100644
index 0000000000..6ef3d3e29d
--- /dev/null
+++ b/keyboards/adafruit/macropad/keymaps/via/keymap.c
@@ -0,0 +1,138 @@
+/* Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@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_MUTE,
+ KC_ENT, KC_0, KC_BSPC,
+ KC_7, KC_8, KC_9,
+ KC_4, KC_5, KC_6,
+ KC_1, KC_2, KC_3
+ ),
+ [1] = LAYOUT(
+ _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+ [2] = LAYOUT(
+ _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+};
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(_______, _______) },
+ [2] = { ENCODER_CCW_CW(_______, _______) },
+ [3] = { ENCODER_CCW_CW(_______, _______) }
+};
+#endif
+
+
+#ifdef OLED_ENABLE
+static void render_qmk_logo(void) {
+ static const char PROGMEM qmk_logo[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,
+ 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x83, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe,
+ 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 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,
+ 0x81, 0x83, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 0x81,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x07, 0x1f, 0x3f, 0x7f, 0x7e, 0xf8, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xff, 0xff,
+ 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf8, 0x7e, 0x7f, 0x3f, 0x1f, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff,
+ 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 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, 0x00, 0x00, 0x00, 0x00,
+ 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
+ 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 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
+ };
+
+ oled_write_raw_P(qmk_logo, sizeof(qmk_logo));
+}
+
+bool oled_task_user(void) {
+ render_qmk_logo();
+ return true;
+}
+
+#endif
+
diff --git a/keyboards/adafruit/macropad/keymaps/via/rules.mk b/keyboards/adafruit/macropad/keymaps/via/rules.mk
new file mode 100644
index 0000000000..715838ecc5
--- /dev/null
+++ b/keyboards/adafruit/macropad/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+ENCODER_MAP_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/adafruit/macropad/lib/oled_driver_spi.h b/keyboards/adafruit/macropad/lib/oled_driver_spi.h
new file mode 100644
index 0000000000..c8a2cd7d9a
--- /dev/null
+++ b/keyboards/adafruit/macropad/lib/oled_driver_spi.h
@@ -0,0 +1,29 @@
+/* Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@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
+
+#ifndef OLED_DC_PIN
+# error "The OLED driver in SPI needs a D/C pin defined"
+#endif
+#ifndef OLED_CS_PIN
+# error "The OLED driver in SPI needs a CS pin defined"
+#endif
+#ifndef OLED_SPI_MODE
+# define OLED_SPI_MODE 3
+#endif
+#ifndef OLED_SPI_DIVISOR
+# define OLED_SPI_DIVISOR 2
+#endif
diff --git a/keyboards/adafruit/macropad/lib/ssd1306_sh1106.c b/keyboards/adafruit/macropad/lib/ssd1306_sh1106.c
new file mode 100644
index 0000000000..dc1289fdb1
--- /dev/null
+++ b/keyboards/adafruit/macropad/lib/ssd1306_sh1106.c
@@ -0,0 +1,827 @@
+/*
+Copyright 2019 Ryan Caltabiano <https://github.com/XScorpion2>
+Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@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 "oled_driver.h"
+#include "oled_driver_spi.h"
+
+#include "spi_master.h"
+
+#include <quantum.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
+
+// 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 ARRAY_SIZE(arr) sizeof(arr)/sizeof(arr[0])
+
+// spi defines
+#define OLED_STATUS_SUCCESS SPI_STATUS_SUCCESS
+
+void oled_spi_init(void) {
+ spi_init();
+
+ setPinOutput(OLED_CS_PIN);
+ writePinHigh(OLED_CS_PIN);
+
+ setPinOutput(OLED_DC_PIN);
+ writePinLow(OLED_DC_PIN);
+}
+
+void oled_spi_start(void) {
+ spi_start(OLED_CS_PIN, false, OLED_SPI_MODE, OLED_SPI_DIVISOR);
+}
+
+void oled_spi_stop(void) {
+ spi_stop();
+}
+
+// Transmit/Write Funcs.
+bool oled_cmd(const uint8_t *data, uint16_t size) {
+ oled_spi_start();
+ // Command Mode
+ writePinLow(OLED_DC_PIN);
+ // Send the commands
+ if(spi_transmit(data, size) != OLED_STATUS_SUCCESS){
+ oled_spi_stop();
+ return false;
+ }
+ oled_spi_stop();
+ return true;
+}
+
+bool oled_cmd_p(const uint8_t *data, uint16_t size) {
+ return oled_cmd(data, size);
+}
+
+bool oled_write_reg(const uint8_t *data, uint16_t size)
+{
+ oled_spi_start();
+ // Command Mode
+ writePinHigh(OLED_DC_PIN);
+ // Send the commands
+ if(spi_transmit(data, size) != OLED_STATUS_SUCCESS){
+ oled_spi_stop();
+ return false;
+ }
+ oled_spi_stop();
+ return true;
+}
+
+#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
+
+// 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) {
+ 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;
+ }
+
+ oled_spi_init();
+
+#ifdef OLED_RST_PIN
+ /* Reset device */
+ setPinOutput(OLED_RST_PIN);
+ writePinLow(OLED_RST_PIN);
+ wait_ms(20);
+ writePinHigh(OLED_RST_PIN);
+ wait_ms(20);
+#endif
+
+ static const uint8_t PROGMEM display_setup1[] = {
+ DISPLAY_OFF,
+ DISPLAY_CLOCK,
+ 0x80,
+ MULTIPLEX_RATIO,
+ OLED_DISPLAY_HEIGHT - 1,
+ 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
+#endif
+ };
+
+ if (!oled_cmd_p(display_setup1, ARRAY_SIZE(display_setup1))) {
+ 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[] = {SEGMENT_REMAP_INV, COM_SCAN_DEC};
+ if (!oled_cmd_p(display_normal, ARRAY_SIZE(display_normal))) {
+ print("oled_init cmd normal rotation failed\n");
+ return false;
+ }
+ } else {
+ static const uint8_t PROGMEM display_flipped[] = {SEGMENT_REMAP, COM_SCAN_INC};
+ if (!oled_cmd_p(display_flipped, ARRAY_SIZE(display_flipped))) {
+ print("display_flipped failed\n");
+ return false;
+ }
+ }
+
+ static const uint8_t PROGMEM display_setup2[] = {COM_PINS, OLED_COM_PINS, CONTRAST, OLED_BRIGHTNESS, PRE_CHARGE_PERIOD, 0xF1, VCOM_DETECT, 0x20, DISPLAY_ALL_ON_RESUME, NORMAL_DISPLAY, DEACTIVATE_SCROLL, DISPLAY_ON};
+ if (!oled_cmd_p(display_setup2, ARRAY_SIZE(display_setup2))) {
+ 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 == OLED_IC_SH1106)
+ // 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;
+ 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;
+#endif
+}
+
+static void calc_bounds_90(uint8_t update_start, uint8_t *cmd_array) {
+ cmd_array[1] = OLED_BLOCK_SIZE * update_start / OLED_DISPLAY_HEIGHT * 8;
+ cmd_array[4] = OLED_BLOCK_SIZE * update_start % OLED_DISPLAY_HEIGHT;
+ 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;
+}
+
+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
+ static uint8_t display_start[] = {COLUMN_ADDR, 0, OLED_DISPLAY_WIDTH - 1, PAGE_ADDR, 0, OLED_DISPLAY_HEIGHT / 8 - 1};
+ if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
+ calc_bounds(update_start, display_start);
+ } else {
+ calc_bounds_90(update_start, display_start);
+ }
+
+ // Send column & page position
+ if (!oled_cmd(display_start, ARRAY_SIZE(display_start))) {
+ print("oled_render offset command failed\n");
+ return;
+ }
+
+ if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
+ // Send render data chunk as is
+ if (!oled_write_reg(&oled_buffer[OLED_BLOCK_SIZE * update_start], OLED_BLOCK_SIZE)) {
+ 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]]);
+ }
+
+ // Send render data chunk after rotating
+ if (!oled_write_reg(temp_buffer, OLED_BLOCK_SIZE)) {
+ print("oled_render90 data failed\n");
+ return;
+ }
+ }
+
+ // 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
+ {FADE_BLINK, 0x00};
+#else
+ {DISPLAY_ON};
+#endif
+
+ if (!oled_active) {
+ if (!oled_cmd_p(display_on, ARRAY_SIZE(display_on))) {
+ 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
+ {FADE_BLINK, ENABLE_FADE | OLED_FADE_OUT_INTERVAL};
+#else
+ {DISPLAY_OFF};
+#endif
+
+ if (oled_active) {
+ if (!oled_cmd_p(display_off, ARRAY_SIZE(display_off))) {
+ 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[] = { CONTRAST, level};
+ if (oled_brightness != level) {
+ if (!oled_cmd(set_contrast, ARRAY_SIZE(set_contrast))) {
+ 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[] = {SCROLL_RIGHT, 0x00, oled_scroll_start, oled_scroll_speed, oled_scroll_end, 0x00, 0xFF, ACTIVATE_SCROLL};
+ if (!oled_cmd(display_scroll_right, ARRAY_SIZE(display_scroll_right))) {
+ 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[] = {SCROLL_LEFT, 0x00, oled_scroll_start, oled_scroll_speed, oled_scroll_end, 0x00, 0xFF, ACTIVATE_SCROLL};
+ if (!oled_cmd(display_scroll_left, ARRAY_SIZE(display_scroll_left))) {
+ 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[] = {DEACTIVATE_SCROLL};
+ if (!oled_cmd_p(display_scroll_off, ARRAY_SIZE(display_scroll_off))) {
+ 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[] = {INVERT_DISPLAY};
+ if (!oled_cmd_p(display_inverted, ARRAY_SIZE(display_inverted))) {
+ print("oled_invert cmd failed\n");
+ return oled_inverted;
+ }
+ oled_inverted = true;
+ } else if (!invert && oled_inverted) {
+ static const uint8_t PROGMEM display_normal[] = {NORMAL_DISPLAY};
+ if (!oled_cmd_p(display_normal, ARRAY_SIZE(display_normal))) {
+ 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/keyboards/adafruit/macropad/macropad.c b/keyboards/adafruit/macropad/macropad.c
new file mode 100644
index 0000000000..a82a2dabb1
--- /dev/null
+++ b/keyboards/adafruit/macropad/macropad.c
@@ -0,0 +1,56 @@
+/* Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@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 "macropad.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+#define NA NO_LED
+
+/* RGB Positioning */
+led_config_t g_led_config = { {
+ { NA, NA, NA },
+ { 0, 1, 2 },
+ { 3, 4, 5 },
+ { 6, 7, 8 },
+ { 9, 10, 11 }
+}, {
+ { 0, 0 }, { 112, 0 }, { 224, 0},
+ { 0, 21 }, { 112, 21 }, { 224, 21},
+ { 0, 42 }, { 112, 42 }, { 224, 42},
+ { 0, 64 }, { 112, 64 }, { 224, 64}
+}, {
+ 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/adafruit/macropad/macropad.h b/keyboards/adafruit/macropad/macropad.h
new file mode 100644
index 0000000000..6e2e3524b7
--- /dev/null
+++ b/keyboards/adafruit/macropad/macropad.h
@@ -0,0 +1,38 @@
+/* Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@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 ___ KC_NO
+
+// clang-format off
+ #define LAYOUT( \
+ K02, \
+ K10, K11, K12, \
+ K20, K21, K22, \
+ K30, K31, K32, \
+ K40, K41, K42 \
+ ) \
+ { \
+ { ___, ___, K02 }, \
+ { K10, K11, K12 }, \
+ { K20, K21, K22 }, \
+ { K30, K31, K32 }, \
+ { K40, K41, K42 } \
+ }
+// clang-format on
diff --git a/keyboards/adafruit/macropad/mcuconf.h b/keyboards/adafruit/macropad/mcuconf.h
new file mode 100644
index 0000000000..198a2eea69
--- /dev/null
+++ b/keyboards/adafruit/macropad/mcuconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@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 <mcuconf.h>
+
+#undef RP_SPI_USE_SPI1
+#define RP_SPI_USE_SPI1 TRUE
diff --git a/keyboards/adafruit/macropad/readme.md b/keyboards/adafruit/macropad/readme.md
new file mode 100644
index 0000000000..09c8657902
--- /dev/null
+++ b/keyboards/adafruit/macropad/readme.md
@@ -0,0 +1,38 @@
+# Adafruit MacroPad RP2040
+
+![AdafruitMacropad](https://i.imgur.com/dSBSwcJh.jpeg)
+
+A RP2040-powered Macropad with a 3x4 layout.
+
+- Keyboard Maintainer: [Jpe230](https://github.com/jpe230/)
+- Hardware Supported: Adafruit MacroPad RP2040
+- Hardware Availability: [Barebones kit](https://www.adafruit.com/product/5100) [Starter Kit](https://www.adafruit.com/product/5128)
+
+Make example for this board (after setting up your build environment):
+
+```sh
+qmk compile -kb adafruit/macropad -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).
+
+## Features
+
+- Raspberry Pi RP2040 Chip + 8MB Flash memory - Dual-core Cortex M0+ at ~130MHz with 264KB of RAM.
+- 3x4 Mechanical key switch sockets - accepts any Cherry MX-compatible switches. Individually tied to GPIO pins (not matrix wired)
+- One NeoPixel RGB LED per switch, on north side.
+- Rotary encoder, 20 detents per rotation, with push-switch on GPIO pin. Push switch is also used for entering bootloader mode when held down on power-up or reset.
+- 128x64 SH1106 Monochrome OLED display - On high-speed hardware SPI port for quick updates.
+- 8mm Speaker/Buzzer - With Class D amplifier and RC filter, can be used to make simple beeps and sounds effects. (Unsupported for now)
+- STEMMA QT Connector - Allows adding any I2C sensors/displays/devices with plug-and-play cables.
+- Reset button - On the side, for quick restarting, press it twice to enter bootloader.
+- Four M3 mounting bosses - Make custom enclosures easily.
+
+## Bootloader
+
+Enter the bootloader in 4 ways:
+
+* **Bootmagic reset**: Hold down the key just bellow the rotary encoder push-button on power-up.
+* **Physical reset button**: Press twice the button on the side while the board is connected.
+* **BOOT button** Hold down the rotary encoder push-button on power-up or reset.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
diff --git a/keyboards/adafruit/macropad/rules.mk b/keyboards/adafruit/macropad/rules.mk
new file mode 100644
index 0000000000..3636424a71
--- /dev/null
+++ b/keyboards/adafruit/macropad/rules.mk
@@ -0,0 +1,26 @@
+# MCU name
+MCU = RP2040
+# Bootloader selection
+BOOTLOADER = rp2040
+# 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
+# AUDIO_DRIVER = pwm_software
+ENCODER_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+WS2812_DRIVER = vendor
+OLED_ENABLE = yes
+OLED_DRIVER = custom
+# Project specific files
+SRC += lib/ssd1306_sh1106.c
+QUANTUM_LIB_SRC += spi_master.c
diff --git a/keyboards/adelheid/config.h b/keyboards/adelheid/config.h
index aca9bdc701..f3eecce72b 100644
--- a/keyboards/adelheid/config.h
+++ b/keyboards/adelheid/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xF100
-#define PRODUCT_ID 0xAD78
-#define DEVICE_VER 0x0002
-#define MANUFACTURER floookay
-#define PRODUCT adelheid
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, F4, D1, D2, D3, D5, F7 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, F6, B6, D4, B1, B0, B7, B5, B4, D7, D6, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/adelheid/info.json b/keyboards/adelheid/info.json
index 8b92e306e0..c00755d403 100644
--- a/keyboards/adelheid/info.json
+++ b/keyboards/adelheid/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Adelheid",
+ "manufacturer": "floookay",
"url": "https://github.com/floookay/adelheid",
"maintainer": "floookay",
+ "usb": {
+ "vid": "0xF100",
+ "pid": "0xAD78",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/adkb96/info.json b/keyboards/adkb96/info.json
index 609e459749..13fc7e8ccf 100644
--- a/keyboards/adkb96/info.json
+++ b/keyboards/adkb96/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "adkb96",
+ "keyboard_name": "ADKB96",
+ "manufacturer": "Bit Trade One",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x00A5",
+ "pid": "0xAD96",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_6x16": {
"layout": [
diff --git a/keyboards/adkb96/rev1/config.h b/keyboards/adkb96/rev1/config.h
index 9727e7eaf7..c9e95b7af0 100644
--- a/keyboards/adkb96/rev1/config.h
+++ b/keyboards/adkb96/rev1/config.h
@@ -16,13 +16,6 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x00a5
-#define PRODUCT_ID 0xad96
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Bit Trade One
-#define PRODUCT ADKB96
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
diff --git a/keyboards/adm42/config.h b/keyboards/adm42/config.h
index 7843f38d4f..50e697a645 100644
--- a/keyboards/adm42/config.h
+++ b/keyboards/adm42/config.h
@@ -18,14 +18,6 @@
#include "config_common.h"
-/* Microchip ADM42 sublicensing */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xE873
-
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Lorenzo Leonini
-#define PRODUCT ADM42
-
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/adm42/info.json b/keyboards/adm42/info.json
new file mode 100644
index 0000000000..bf57885afa
--- /dev/null
+++ b/keyboards/adm42/info.json
@@ -0,0 +1,62 @@
+{
+ "keyboard_name": "ADM42",
+ "manufacturer": "Lorenzo Leonini",
+ "url": "https://adm42.dev/",
+ "maintainer": "lleonini",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE873",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_adm42_3x12_6": {
+ "layout": [
+ {"label":"GUI/`~", "x":0, "y":0.8},
+ {"label":"Q", "x":1, "y":0.8},
+ {"label":"W", "x":2, "y":0},
+ {"label":"E", "x":3, "y":0},
+ {"label":"R", "x":4, "y":0.5},
+ {"label":"T", "x":5, "y":0.5},
+ {"label":"Y", "x":7.5, "y":0.5},
+ {"label":"U", "x":8.5, "y":0.5},
+ {"label":"I", "x":9.5, "y":0},
+ {"label":"O", "x":10.5, "y":0},
+ {"label":"P", "x":11.5, "y":0.8},
+ {"label":"GUI/=+", "x":12.5, "y":0.8},
+
+ {"label":"Ctrl/Tab", "x":0, "y":1.8},
+ {"label":"A", "x":1, "y":1.8},
+ {"label":"S", "x":2, "y":1},
+ {"label":"D", "x":3, "y":1},
+ {"label":"F", "x":4, "y":1.5},
+ {"label":"G", "x":5, "y":1.5},
+ {"label":"H", "x":7.5, "y":1.5},
+ {"label":"J", "x":8.5, "y":1.5},
+ {"label":"K", "x":9.5, "y":1},
+ {"label":"L", "x":10.5, "y":1},
+ {"label":";:", "x":11.5, "y":1.8},
+ {"label":"Ctrl/'\"", "x":12.5, "y":1.8},
+
+ {"label":"Alt", "x":0, "y":2.8},
+ {"label":"Z", "x":1, "y":2.8},
+ {"label":"X", "x":2, "y":2},
+ {"label":"C", "x":3, "y":2},
+ {"label":"V", "x":4, "y":2.5},
+ {"label":"B", "x":5, "y":2.5},
+ {"label":"N", "x":7.5, "y":2.5},
+ {"label":"M", "x":8.5, "y":2.5},
+ {"label":",<", "x":9.5, "y":2},
+ {"label":".>", "x":10.5, "y":2},
+ {"label":"/?", "x":11.5, "y":2.8},
+ {"label":"Alt", "x":12.5, "y":2.8},
+
+ {"label":"Special/Esc", "x":4.25, "y":3.55},
+ {"label":"Shift/Backspace", "x":5.25, "y":3.65},
+ {"label":"Adm/Delete", "x":6.25, "y":1.875, "h":1.25},
+ {"label":"Extra/Enter", "x":6.25, "y":4.05},
+ {"label":"Shift/Space", "x":7.25, "y":3.65},
+ {"label":"Special/Alt", "x":8.25, "y":3.55}
+ ]
+ }
+ }
+}
diff --git a/keyboards/adm42/readme.md b/keyboards/adm42/readme.md
index 1affc11628..a767e8a70b 100644
--- a/keyboards/adm42/readme.md
+++ b/keyboards/adm42/readme.md
@@ -22,6 +22,6 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
Enter the bootloader in 3 ways:
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the top left key) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB
diff --git a/keyboards/adpenrose/kintsugi/config.h b/keyboards/adpenrose/kintsugi/config.h
index b3aca40a06..d4e3dcc729 100644
--- a/keyboards/adpenrose/kintsugi/config.h
+++ b/keyboards/adpenrose/kintsugi/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/adpenrose/kintsugi/info.json b/keyboards/adpenrose/kintsugi/info.json
index 0e76187335..db9952af29 100644
--- a/keyboards/adpenrose/kintsugi/info.json
+++ b/keyboards/adpenrose/kintsugi/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Kintsugi",
+ "manufacturer": "adpenrose",
"url": "https://github.com/ADPenrose/kintsugi_keeb",
"maintainer": "adpenrose",
+ "usb": {
+ "vid": "0x4450",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/adpenrose/kintsugi/readme.md b/keyboards/adpenrose/kintsugi/readme.md
index 2aa402543e..708dc16699 100644
--- a/keyboards/adpenrose/kintsugi/readme.md
+++ b/keyboards/adpenrose/kintsugi/readme.md
@@ -34,4 +34,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/adpenrose/shisaku/config.h b/keyboards/adpenrose/shisaku/config.h
new file mode 100644
index 0000000000..7371685ca6
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/config.h
@@ -0,0 +1,37 @@
+// Copyright 2022 Arturo Avila (@ADPenrose)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#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 { B2, B0, B1, D0, B4, D6, B3, D7 }
+#define MATRIX_COL_PINS { D1, C3, C4, D4, C0, C1, C2 }
+//#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
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* Solenoid pin */
+#define SOLENOID_PIN C5
diff --git a/keyboards/adpenrose/shisaku/info.json b/keyboards/adpenrose/shisaku/info.json
new file mode 100644
index 0000000000..6f765ba648
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/info.json
@@ -0,0 +1,17 @@
+{
+ "keyboard_name": "shisaku",
+ "url": "https://github.com/ADPenrose/shisaku_keeb",
+ "maintainer": "ADPenrose",
+ "usb": {
+ "vid": "0x4450",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":1.25, "y":0}, {"label":"Q", "x":2.25, "y":0}, {"label":"W", "x":3.25, "y":0}, {"label":"E", "x":4.25, "y":0}, {"label":"R", "x":5.25, "y":0}, {"label":"T", "x":6.25, "y":0}, {"label":"Y", "x":7.75, "y":0}, {"label":"U", "x":8.75, "y":0}, {"label":"I", "x":9.75, "y":0}, {"label":"O", "x":10.75, "y":0}, {"label":"P", "x":11.75, "y":0}, {"label":"Backspace", "x":12.75, "y":0, "w":1.5}, {"label":"Caps Lock", "x":0.5, "y":1, "w":1.75}, {"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.75, "y":1}, {"label":"J", "x":8.75, "y":1}, {"label":"K", "x":9.75, "y":1}, {"label":"L", "x":10.75, "y":1}, {"label":":", "x":11.75, "y":1}, {"label":"Enter", "x":12.75, "y":1, "w":1.75}, {"label":"Shift", "x":0, "y":2, "w":1.25}, {"label":"Fn", "x":1.25, "y":2}, {"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":"B", "x":7.75, "y":2}, {"label":"N", "x":8.75, "y":2}, {"label":"M", "x":9.75, "y":2}, {"label":"<", "x":10.75, "y":2}, {"label":">", "x":11.75, "y":2}, {"label":"Up", "x":12.75, "y":2}, {"label":"?", "x":13.75, "y":2, "w":1.25}, {"label":"Ctrl", "x":0, "y":3, "w":1.5}, {"label":"Win", "x":3, "y":3}, {"x":4, "y":3, "w":2.25}, {"label":"Alt", "x":6.25, "y":3}, {"x":7.75, "y":3, "w":2.75}, {"label":"Left", "x":11.75, "y":3}, {"label":"Down", "x":12.75, "y":3}, {"label":"Right", "x":13.75, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/adpenrose/shisaku/keymaps/default/keymap.c b/keyboards/adpenrose/shisaku/keymaps/default/keymap.c
new file mode 100644
index 0000000000..43ab3d7528
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+// Copyright 2022 Arturo Avila (@ADPenrose)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_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_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, MO(2), 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_LALT, KC_SPC, MO(1), KC_SPC, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_TRNS, KC_TRNS, KC_SLSH,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
+ 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/adpenrose/shisaku/keymaps/default/readme.md b/keyboards/adpenrose/shisaku/keymaps/default/readme.md
new file mode 100644
index 0000000000..6f49aff82e
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Shisaku \ No newline at end of file
diff --git a/keyboards/adpenrose/shisaku/keymaps/solenoid/keymap.c b/keyboards/adpenrose/shisaku/keymaps/solenoid/keymap.c
new file mode 100644
index 0000000000..c3955bf0b1
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/solenoid/keymap.c
@@ -0,0 +1,32 @@
+// Copyright 2022 Arturo Avila (@ADPenrose)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_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_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, MO(2), 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_LALT, KC_SPC, MO(1), KC_SPC, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, HPT_TOG,
+ KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_TRNS, KC_TRNS, KC_SLSH,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
+ 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/adpenrose/shisaku/keymaps/solenoid/readme.md b/keyboards/adpenrose/shisaku/keymaps/solenoid/readme.md
new file mode 100644
index 0000000000..e9d4bb6af9
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/solenoid/readme.md
@@ -0,0 +1 @@
+# Solenoid keymap for Shisaku
diff --git a/keyboards/adpenrose/shisaku/keymaps/solenoid/rules.mk b/keyboards/adpenrose/shisaku/keymaps/solenoid/rules.mk
new file mode 100644
index 0000000000..e13f2bd035
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/solenoid/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+HAPTIC_ENABLE = yes
+HAPTIC_DRIVER += SOLENOID \ No newline at end of file
diff --git a/keyboards/adpenrose/shisaku/keymaps/via/keymap.c b/keyboards/adpenrose/shisaku/keymaps/via/keymap.c
new file mode 100644
index 0000000000..43ab3d7528
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/via/keymap.c
@@ -0,0 +1,32 @@
+// Copyright 2022 Arturo Avila (@ADPenrose)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_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_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, MO(2), 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_LALT, KC_SPC, MO(1), KC_SPC, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
+ KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_TRNS, KC_TRNS, KC_SLSH,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
+ 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/adpenrose/shisaku/keymaps/via/readme.md b/keyboards/adpenrose/shisaku/keymaps/via/readme.md
new file mode 100644
index 0000000000..f7d4f74fdb
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/keymaps/via/readme.md
@@ -0,0 +1 @@
+# VIA keymap for Shisaku \ No newline at end of file
diff --git a/keyboards/mechwild/mokulua/keymaps/silly/rules.mk b/keyboards/adpenrose/shisaku/keymaps/via/rules.mk
index 36b7ba9cbc..36b7ba9cbc 100644
--- a/keyboards/mechwild/mokulua/keymaps/silly/rules.mk
+++ b/keyboards/adpenrose/shisaku/keymaps/via/rules.mk
diff --git a/keyboards/adpenrose/shisaku/readme.md b/keyboards/adpenrose/shisaku/readme.md
new file mode 100644
index 0000000000..6a3ffeffda
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/readme.md
@@ -0,0 +1,29 @@
+# Shisaku
+
+![shisaku](https://i.imgur.com/42H1h1dh.jpg)
+
+A 40% alice-like keyboard assembled only with THT components, including the option for a solenoid.
+
+## General info
+
+* Keyboard Maintainer: [Arturo Avila](https://github.com/ADPenrose)
+* Hardware Supported: Shisaku v1 PCB
+* Hardware Availability: [Arturo Avila](https://github.com/ADPenrose)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make adpenrose/shisaku:default
+
+Flashing example for this keyboard:
+
+ make adpenrose/shisaku: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**: Hold down the button labeled "BOOT" and briefly press the button labeled "RESET" on the back of the PCB. To exit the bootloader mode, briefly press the button labeled "RESET" once more.
+* **Keycode in layout**: Press the key mapped to "QK BOOT" if it is available
diff --git a/keyboards/adpenrose/shisaku/rules.mk b/keyboards/adpenrose/shisaku/rules.mk
new file mode 100644
index 0000000000..ef08ed4a06
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega328p
+
+# 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
+NKRO_ENABLE = 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/adpenrose/shisaku/shisaku.c b/keyboards/adpenrose/shisaku/shisaku.c
new file mode 100644
index 0000000000..a1ab356ac6
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/shisaku.c
@@ -0,0 +1,4 @@
+// Copyright 2022 Arturo Avila (@ADPenrose)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "shisaku.h"
diff --git a/keyboards/adpenrose/shisaku/shisaku.h b/keyboards/adpenrose/shisaku/shisaku.h
new file mode 100644
index 0000000000..ea92202435
--- /dev/null
+++ b/keyboards/adpenrose/shisaku/shisaku.h
@@ -0,0 +1,32 @@
+// Copyright 2022 Arturo Avila (@ADPenrose)
+// 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, k10, k11, k12, k13, k14, \
+ k15, k16, k20, k21, k22, k23, k24, k25, k26, k30, k33, k34, \
+ k35, k40, k41, k42, k43, k44, k45, k50, k51, k52, k53, k54, k55, k60, \
+ k61, k62, k63, k64, k65, k70, k74, k75 \
+) { \
+ { k00, k01, k02, k03, k04, k05, k06 }, \
+ { k10, k11, k12, k13, k14, k15, k16 }, \
+ { k20, k21, k22, k23, k24, k25, k26 }, \
+ { k30, XXX, XXX, k33, k34, k35, XXX }, \
+ { k40, k41, k42, k43, k44, k45, XXX }, \
+ { k50, k51, k52, k53, k54, k55, XXX }, \
+ { k60, k61, k62, k63, k64, k65, XXX }, \
+ { k70, XXX, XXX, XXX, k74, k75, XXX } \
+}
diff --git a/keyboards/aeboards/aegis/config.h b/keyboards/aeboards/aegis/config.h
index 7f59c52005..e87b856968 100644
--- a/keyboards/aeboards/aegis/config.h
+++ b/keyboards/aeboards/aegis/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4145 // "AE"
-#define PRODUCT_ID 0x0807 // 1800 -> 0x0708 -> 0x0807 ;-)
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AEboards
-#define PRODUCT AEboards Aegis
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F5, F6, E6, F7, D1, D0, D6, D4, B4, D7, B6, B5 }
#define MATRIX_COL_PINS { C7, C6, B7, D2, D3, B3, B2, B1, B0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/aeboards/aegis/info.json b/keyboards/aeboards/aegis/info.json
index ff0c9bf822..00e03f7685 100644
--- a/keyboards/aeboards/aegis/info.json
+++ b/keyboards/aeboards/aegis/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Aegis",
+ "manufacturer": "AEboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4145",
+ "pid": "0x0807",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_aegis": {
"layout": [
diff --git a/keyboards/aeboards/constellation/rev1/config.h b/keyboards/aeboards/constellation/rev1/config.h
index 22dd96f663..bd4614f8b2 100755
--- a/keyboards/aeboards/constellation/rev1/config.h
+++ b/keyboards/aeboards/constellation/rev1/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4145 // AE
-#define PRODUCT_ID 0x065C // 65 - Constellation
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AEBoards
-#define PRODUCT AEBoards Constellation Rev1
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -33,7 +26,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, B1, F0, F1, F4 }
#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
diff --git a/keyboards/aeboards/constellation/rev1/info.json b/keyboards/aeboards/constellation/rev1/info.json
index af09a0dfc7..7539c9bf45 100644
--- a/keyboards/aeboards/constellation/rev1/info.json
+++ b/keyboards/aeboards/constellation/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Constellation",
+ "keyboard_name": "Constellation Rev1",
+ "manufacturer": "AEBoards",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x4145",
+ "pid": "0x065C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/aeboards/constellation/rev2/config.h b/keyboards/aeboards/constellation/rev2/config.h
index de42885b47..e057382aee 100755
--- a/keyboards/aeboards/constellation/rev2/config.h
+++ b/keyboards/aeboards/constellation/rev2/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4145 // AE
-#define PRODUCT_ID 0x065C // 65 - Constellation
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AEBoards
-#define PRODUCT AEBoards Constellation Rev2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B15, A14, A2, B13, B14 }
#define MATRIX_COL_PINS { B12, A1, H0, C15, C14, B11, B10, B2, B1, B0, A7, A6, A5, A4, A3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/aeboards/constellation/rev2/info.json b/keyboards/aeboards/constellation/rev2/info.json
index af09a0dfc7..95da6851c4 100644
--- a/keyboards/aeboards/constellation/rev2/info.json
+++ b/keyboards/aeboards/constellation/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Constellation",
+ "keyboard_name": "Constellation Rev2",
+ "manufacturer": "AEBoards",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x4145",
+ "pid": "0x065C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/aeboards/ext65/info.json b/keyboards/aeboards/ext65/info.json
index bc2fe64bf4..09056ce1f4 100644
--- a/keyboards/aeboards/ext65/info.json
+++ b/keyboards/aeboards/ext65/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "Ext65",
+ "manufacturer": "AEBoards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4145",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ext65": {
"layout": [
diff --git a/keyboards/aeboards/ext65/rev1/config.h b/keyboards/aeboards/ext65/rev1/config.h
index cd9c240069..94c932e44d 100644
--- a/keyboards/aeboards/ext65/rev1/config.h
+++ b/keyboards/aeboards/ext65/rev1/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4145 // "AE"
-#define PRODUCT_ID 0xAE65 // AEboards EXT65
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AEBoards
-#define PRODUCT AEBoards Ext65
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { C6, C7, B5, B6, D7, B4, D4, D6, B7, E6 }
#define MATRIX_COL_PINS { B2, B3, B1, B0, F7, F0, F1, F4, F5, F6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/aeboards/ext65/rev1/info.json b/keyboards/aeboards/ext65/rev1/info.json
new file mode 100644
index 0000000000..bb472fcf7f
--- /dev/null
+++ b/keyboards/aeboards/ext65/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "pid": "0xAE65"
+ }
+}
diff --git a/keyboards/aeboards/ext65/rev2/config.h b/keyboards/aeboards/ext65/rev2/config.h
index 498e345ad7..0ccbc6353a 100644
--- a/keyboards/aeboards/ext65/rev2/config.h
+++ b/keyboards/aeboards/ext65/rev2/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4145 // "AE"
-#define PRODUCT_ID 0xA652 // AEboards EXT65 Rev2
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AEBoards
-#define PRODUCT AEBoards Ext65 Rev2
-
/* key matrix size */
/* key matrix size */
#define MATRIX_ROWS 10
diff --git a/keyboards/aeboards/ext65/rev2/info.json b/keyboards/aeboards/ext65/rev2/info.json
new file mode 100644
index 0000000000..cacde3b019
--- /dev/null
+++ b/keyboards/aeboards/ext65/rev2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "pid": "0xA652"
+ }
+}
diff --git a/keyboards/afternoonlabs/breeze/keymaps/eithanshavit/keymap.c b/keyboards/afternoonlabs/breeze/keymaps/eithanshavit/keymap.c
index 61db52392e..521691d74f 100644
--- a/keyboards/afternoonlabs/breeze/keymaps/eithanshavit/keymap.c
+++ b/keyboards/afternoonlabs/breeze/keymaps/eithanshavit/keymap.c
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FUNCTION] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”┌────────┬────────┬────────â”
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LCA(KC_D),LCA(KC_F),LCA(KC_G),
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LCA(KC_D),LCA(KC_F),LCA(KC_G),
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, LCA(KC_E),LCA(KC_ENT),LCA(KC_T),
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
diff --git a/keyboards/afternoonlabs/breeze/rev0/config.h b/keyboards/afternoonlabs/breeze/rev0/config.h
index 7dc9a68f7d..a4f03a7c4e 100644
--- a/keyboards/afternoonlabs/breeze/rev0/config.h
+++ b/keyboards/afternoonlabs/breeze/rev0/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x616C
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0000
-#define MANUFACTURER AfternoonLabs
-#define PRODUCT Breeze
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/afternoonlabs/breeze/rev0/info.json b/keyboards/afternoonlabs/breeze/rev0/info.json
index ccf44f5e3a..b53227a50d 100644
--- a/keyboards/afternoonlabs/breeze/rev0/info.json
+++ b/keyboards/afternoonlabs/breeze/rev0/info.json
@@ -1,8 +1,13 @@
{
"keyboard_name": "Breeze",
+ "manufacturer": "AfternoonLabs",
"url": "afternoonlabs.com/breeze",
- "productId": "0x0001",
"maintainer": "eithanshavit",
+ "usb": {
+ "vid": "0x616C",
+ "pid": "0x0001",
+ "device_version": "0.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/afternoonlabs/breeze/rev1/config.h b/keyboards/afternoonlabs/breeze/rev1/config.h
index 383a16d455..0e2a0af980 100644
--- a/keyboards/afternoonlabs/breeze/rev1/config.h
+++ b/keyboards/afternoonlabs/breeze/rev1/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x616C
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AfternoonLabs
-#define PRODUCT Breeze
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/afternoonlabs/breeze/rev1/info.json b/keyboards/afternoonlabs/breeze/rev1/info.json
index ccf44f5e3a..e69c88510a 100644
--- a/keyboards/afternoonlabs/breeze/rev1/info.json
+++ b/keyboards/afternoonlabs/breeze/rev1/info.json
@@ -1,8 +1,13 @@
{
"keyboard_name": "Breeze",
+ "manufacturer": "AfternoonLabs",
"url": "afternoonlabs.com/breeze",
- "productId": "0x0001",
"maintainer": "eithanshavit",
+ "usb": {
+ "vid": "0x616C",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/afternoonlabs/gust/rev1/config.h b/keyboards/afternoonlabs/gust/rev1/config.h
index 650b98c1b8..c2f4290a0b 100644
--- a/keyboards/afternoonlabs/gust/rev1/config.h
+++ b/keyboards/afternoonlabs/gust/rev1/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x616C
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AfternoonLabs
-#define PRODUCT Gust
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 3
diff --git a/keyboards/afternoonlabs/gust/rev1/info.json b/keyboards/afternoonlabs/gust/rev1/info.json
index 6a9406d399..643e9fbf25 100644
--- a/keyboards/afternoonlabs/gust/rev1/info.json
+++ b/keyboards/afternoonlabs/gust/rev1/info.json
@@ -1,8 +1,13 @@
{
"keyboard_name": "Gust",
+ "manufacturer": "AfternoonLabs",
"url": "afternoonlabs.com/breeze",
- "productId": "0x0002",
"maintainer": "eithanshavit",
+ "usb": {
+ "vid": "0x616C",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/config.h b/keyboards/afternoonlabs/oceanbreeze/rev1/config.h
index 6afe6b54e8..41a7c78113 100644
--- a/keyboards/afternoonlabs/oceanbreeze/rev1/config.h
+++ b/keyboards/afternoonlabs/oceanbreeze/rev1/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x616C
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AfternoonLabs
-#define PRODUCT OceanBreeze
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
diff --git a/keyboards/afternoonlabs/oceanbreeze/rev1/info.json b/keyboards/afternoonlabs/oceanbreeze/rev1/info.json
index 0d0db367a4..166548d154 100644
--- a/keyboards/afternoonlabs/oceanbreeze/rev1/info.json
+++ b/keyboards/afternoonlabs/oceanbreeze/rev1/info.json
@@ -1,8 +1,13 @@
{
"keyboard_name": "OceanBreeze",
+ "manufacturer": "AfternoonLabs",
"url": "afternoonlabs.com",
- "productId": "0x0003",
"maintainer": "afternoonlabs",
+ "usb": {
+ "vid": "0x616C",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/config.h b/keyboards/afternoonlabs/southern_breeze/rev1/config.h
index e1533a6fa0..0e2a0af980 100644
--- a/keyboards/afternoonlabs/southern_breeze/rev1/config.h
+++ b/keyboards/afternoonlabs/southern_breeze/rev1/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x616C
-#define PRODUCT_ID 0x0005
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AfternoonLabs
-#define PRODUCT Southern Breeze
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/afternoonlabs/southern_breeze/rev1/info.json b/keyboards/afternoonlabs/southern_breeze/rev1/info.json
index b7f541ffb7..cb86c899ae 100644
--- a/keyboards/afternoonlabs/southern_breeze/rev1/info.json
+++ b/keyboards/afternoonlabs/southern_breeze/rev1/info.json
@@ -1,8 +1,13 @@
{
"keyboard_name": "Southern Breeze",
+ "manufacturer": "AfternoonLabs",
"url": "afternoonlabs.com/breeze",
- "productId": "0x0005",
"maintainer": "eithanshavit",
+ "usb": {
+ "vid": "0x616C",
+ "pid": "0x0005",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/config.h b/keyboards/afternoonlabs/summer_breeze/rev1/config.h
index 86c40389aa..0e2a0af980 100644
--- a/keyboards/afternoonlabs/summer_breeze/rev1/config.h
+++ b/keyboards/afternoonlabs/summer_breeze/rev1/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x616C
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AfternoonLabs
-#define PRODUCT Summer Breeze
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/afternoonlabs/summer_breeze/rev1/info.json b/keyboards/afternoonlabs/summer_breeze/rev1/info.json
index 7e5da9b8cb..5d555fadcf 100644
--- a/keyboards/afternoonlabs/summer_breeze/rev1/info.json
+++ b/keyboards/afternoonlabs/summer_breeze/rev1/info.json
@@ -1,8 +1,13 @@
{
"keyboard_name": "Summer Breeze",
+ "manufacturer": "AfternoonLabs",
"url": "afternoonlabs.com/breeze",
- "productId": "0x0004",
"maintainer": "eithanshavit",
+ "usb": {
+ "vid": "0x616C",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ai/config.h b/keyboards/ai/config.h
new file mode 100644
index 0000000000..ceac109fb2
--- /dev/null
+++ b/keyboards/ai/config.h
@@ -0,0 +1,20 @@
+// Copyright 2022 Louis Dalibard (@make42)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/*
+ * 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
diff --git a/keyboards/ai/info.json b/keyboards/ai/info.json
new file mode 100644
index 0000000000..3f0f7ffbca
--- /dev/null
+++ b/keyboards/ai/info.json
@@ -0,0 +1,51 @@
+{
+ "manufacturer": "Louis Dalibard",
+ "keyboard_name": "ai",
+ "maintainer": "make42",
+ "bootloader": "caterina",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["F5", "F6", "F7", "B1"],
+ "rows": ["D0", "D4", "C6", "D7", "D1"]
+ },
+ "processor": "atmega32u4",
+ "url": "",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0000",
+ "vid": "0xFEED"
+ },
+ "layouts": {
+ "LAYOUT_ai_5x4_1": {
+ "layout": [
+ { "matrix": [0, 0], "x": 0, "y": 0.5 },
+ { "matrix": [0, 1], "x": 1, "y": 0 },
+ { "matrix": [0, 2], "x": 2, "y": 0.3 },
+ { "matrix": [0, 3], "x": 3, "y": 0.7 },
+ { "matrix": [1, 0], "x": 0, "y": 1.5 },
+ { "matrix": [1, 1], "x": 1, "y": 1 },
+ { "matrix": [1, 2], "x": 2, "y": 1.3 },
+ { "matrix": [1, 3], "x": 3, "y": 1.7 },
+ { "matrix": [2, 0], "x": 0, "y": 2.5 },
+ { "matrix": [2, 1], "x": 1, "y": 2 },
+ { "matrix": [2, 2], "x": 2, "y": 2.3 },
+ { "matrix": [2, 3], "x": 3, "y": 2.7 },
+ { "matrix": [3, 0], "x": 0, "y": 3.5 },
+ { "matrix": [3, 1], "x": 1, "y": 3 },
+ { "matrix": [3, 2], "x": 2, "y": 3.3 },
+ { "matrix": [3, 3], "x": 3, "y": 3.7 },
+ { "matrix": [4, 1], "x": 2.5, "y": 5 },
+ { "matrix": [4, 2], "x": 3.5, "y": 4.8 },
+ { "matrix": [4, 3], "x": 4.5, "y": 4.6 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/ai/keymaps/default/keymap.c b/keyboards/ai/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c948476776
--- /dev/null
+++ b/keyboards/ai/keymaps/default/keymap.c
@@ -0,0 +1,24 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───â”
+ * │Tab│ Q │ W │ E │
+ * ├───┼───┼───┼───┤
+ * │Bsp│ R │ T │ A │
+ * ├───┼───┼───┼───┤
+ * │Sft│ S │ D │ F │
+ * ├───┼───┼───┼───┤
+ * │Ctl│ Z │ X │ C │
+ * ├───┼───┼───┼───┤
+ * │NaN│App│GUI│Alt│
+ * └───┴───┴───┴───┘
+ */
+ [0] = LAYOUT_ai_5x4_1(
+ KC_TAB, KC_Q, KC_W, KC_E,
+ KC_BSPC, KC_R, KC_T, KC_A,
+ KC_LSFT, KC_S, KC_D, KC_F,
+ KC_LCTL, KC_Z, KC_X, KC_C,
+ KC_MENU, KC_LGUI, KC_LALT
+ )
+};
diff --git a/keyboards/ai/readme.md b/keyboards/ai/readme.md
new file mode 100644
index 0000000000..f61e4933ac
--- /dev/null
+++ b/keyboards/ai/readme.md
@@ -0,0 +1,34 @@
+# ai
+
+![ai](https://i.imgur.com/4l6BzRh.png)
+
+This is a small open source 5x4-1 macropad powered by QMK
+
+* Keyboard Maintainer: [Louis Dalibard](https://github.com/make42)
+* Hardware Supported: The PCB for ai is located here: [ai](https://github.com/make42/ai)
+* Hardware Availability: Here is a complete BOM with links to where you can find parts:
+ * PCB (I personally used JLCPCB)
+ * Arduino Pro Micro ([Aliexpress](https://fr.aliexpress.com/item/32768308647.html?spm=a2g0o.order_list.0.0.3ccc5e5bU64POK&gatewayAdapt=glo2fra))
+ * Female pin rows ([Aliexpress]https://fr.aliexpress.com/item/4001122376295.html?spm=a2g0o.order_list.0.0.23845e5bTBt8sp&gatewayAdapt=glo2fra))
+ * Gateron hotswap sockets ([Aliexpress](https://fr.aliexpress.com/item/1005003129613578.html?spm=a2g0o.order_list.0.0.23845e5bTBt8sp&gatewayAdapt=glo2fra))
+ * Zener diodes ([Aliexpress](https://fr.aliexpress.com/item/1005003276184193.html?spm=a2g0o.order_list.0.0.23845e5bTBt8sp&gatewayAdapt=glo2fra))
+ * Keyswitches (use a compatible MX switch)
+ * Keycaps (Duh)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ai:default
+
+Flashing example for this keyboard:
+
+ make ai: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 `QK_BOOT` if it is available
diff --git a/keyboards/ai/rules.mk b/keyboards/ai/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/ai/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/ai03/andromeda/config.h b/keyboards/ai03/andromeda/config.h
index f88eb02123..cfacca7c04 100644
--- a/keyboards/ai03/andromeda/config.h
+++ b/keyboards/ai03/andromeda/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x000A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ai03 Design Studio
-#define PRODUCT Andromeda
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/ai03/andromeda/info.json b/keyboards/ai03/andromeda/info.json
index 0f4c0adb14..8e77bc59fd 100644
--- a/keyboards/ai03/andromeda/info.json
+++ b/keyboards/ai03/andromeda/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Andromeda",
+ "manufacturer": "ai03 Design Studio",
"url": "",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x000A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi_wkl": {
"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":"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":"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":"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/ai03/equinox/config.h b/keyboards/ai03/equinox/config.h
index 4a6b841b60..b6dd990e5f 100644
--- a/keyboards/ai03/equinox/config.h
+++ b/keyboards/ai03/equinox/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ai03 Design Studio
-#define PRODUCT Equinox
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, C5, D4, D5 }
#define MATRIX_COL_PINS { D1, D2, C6, C7, B6, B5, B4, B3, B2, B1, B0, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ai03/equinox/info.json b/keyboards/ai03/equinox/info.json
index 18aa1fe8d6..f5c8ecbfba 100644
--- a/keyboards/ai03/equinox/info.json
+++ b/keyboards/ai03/equinox/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Equinox",
+ "manufacturer": "ai03 Design Studio",
"url": "",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ai03/equinox/keymaps/crd/keymap.c b/keyboards/ai03/equinox/keymaps/crd/keymap.c
index 108a00d9d4..b945dc16d5 100644
--- a/keyboards/ai03/equinox/keymaps/crd/keymap.c
+++ b/keyboards/ai03/equinox/keymaps/crd/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT_all( /* Num and FN */
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, KC_MINS, KC_EQL, _______,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, KC_MINS, KC_EQL, _______,
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_SCLN, KC_QUOT, XXXXXXX, _______,
_______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______,
_______, XXXXXXX, _______, _______, _______, _______, _______, XXXXXXX, _______
diff --git a/keyboards/ai03/jp60/config.h b/keyboards/ai03/jp60/config.h
index 2e48321546..dd1b4bcb0e 100644
--- a/keyboards/ai03/jp60/config.h
+++ b/keyboards/ai03/jp60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0024
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ai03 Design Studio
-#define PRODUCT JP60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, B5, B4, D7, E6 }
#define MATRIX_COL_PINS { D2, D1, D3, D5, D4, D6, C6, F0, F1, F4, F5, F6, F7, C7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ai03/jp60/info.json b/keyboards/ai03/jp60/info.json
index d5453de734..a5428270f9 100644
--- a/keyboards/ai03/jp60/info.json
+++ b/keyboards/ai03/jp60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "JP60",
+ "manufacturer": "ai03 Design Studio",
"url": "https://github.com/ai03-2725/JP60",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0024",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ai03/jp60/keymaps/default/config.h b/keyboards/ai03/jp60/keymaps/default/config.h
deleted file mode 100644
index 9e0623524a..0000000000
--- a/keyboards/ai03/jp60/keymaps/default/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2021 ai03
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-/* Increase scan quantity for improved performance */
-#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/ai03/jp60/keymaps/via/config.h b/keyboards/ai03/jp60/keymaps/via/config.h
deleted file mode 100644
index 9e0623524a..0000000000
--- a/keyboards/ai03/jp60/keymaps/via/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright 2021 ai03
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-/* Increase scan quantity for improved performance */
-#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/ai03/jp60/readme.md b/keyboards/ai03/jp60/readme.md
index 25a3b16413..d5dbd669fd 100644
--- a/keyboards/ai03/jp60/readme.md
+++ b/keyboards/ai03/jp60/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/ai03/lunar/config.h b/keyboards/ai03/lunar/config.h
index 65f428776f..3cdec4d046 100644
--- a/keyboards/ai03/lunar/config.h
+++ b/keyboards/ai03/lunar/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Switchplate Peripherals
-#define PRODUCT Lunar
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B3, D0, D1, D2, D3 }
#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ai03/lunar/info.json b/keyboards/ai03/lunar/info.json
index ca2b35e3de..f65d21ab80 100644
--- a/keyboards/ai03/lunar/info.json
+++ b/keyboards/ai03/lunar/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Lunar",
+ "manufacturer": "Switchplate Peripherals",
"url": "https://geekhack.org/index.php?topic=96112.0",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ai03/lunar/keymaps/muzfuz/keymap.c b/keyboards/ai03/lunar/keymaps/muzfuz/keymap.c
index 4bbea42af0..4846a220e3 100644
--- a/keyboards/ai03/lunar/keymaps/muzfuz/keymap.c
+++ b/keyboards/ai03/lunar/keymaps/muzfuz/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT( /* 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_DEL, _______,
+ QK_BOOT, KC_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_CAPS, _______, KC_UP, _______, _______, _______, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_VOLD, KC_VOLU, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______,
_______, KC_RCTL, KC_RGUI, KC_RALT, _______, _______, KC_P0, KC_P1, KC_P2, KC_P3, _______, _______, KC_PGUP, _______,
diff --git a/keyboards/ai03/orbit/config.h b/keyboards/ai03/orbit/config.h
index 1b745b4e1f..3cd0895788 100644
--- a/keyboards/ai03/orbit/config.h
+++ b/keyboards/ai03/orbit/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0003
-#define MANUFACTURER ai03 Keyboard Designs
-#define PRODUCT Orbit
-
/* key matrix size */
#define MATRIX_ROWS 10 // Double rows for split keyboards. Orbit has 5, so define 10
#define MATRIX_COLS 7
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { C7, B4, D7, D6, D4, F1, F0 }
#define MATRIX_ROW_PINS_RIGHT { B6, B5, B4, D7, E6 }
#define MATRIX_COL_PINS_RIGHT { D4, D6, F1, F0, F4, F5, C6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ai03/orbit/info.json b/keyboards/ai03/orbit/info.json
index a9f0804820..9deccb9a30 100644
--- a/keyboards/ai03/orbit/info.json
+++ b/keyboards/ai03/orbit/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "orbit",
+ "keyboard_name": "Orbit",
+ "manufacturer": "ai03 Keyboard Designs",
"url": "https://github.com/ai03-2725/Orbit",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0003",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ai03/orbit_x/config.h b/keyboards/ai03/orbit_x/config.h
index 74acd64746..6966de9df5 100644
--- a/keyboards/ai03/orbit_x/config.h
+++ b/keyboards/ai03/orbit_x/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0014
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ai03 Design Studio
-#define PRODUCT OrbitX
-
/* key matrix size */
#define MATRIX_ROWS 8 // Double the rows for split
#define MATRIX_COLS 6
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { E6, F6, B1, B0, C7, C6 }
#define MATRIX_ROW_PINS_RIGHT { B5, D7, B4, D4 }
#define MATRIX_COL_PINS_RIGHT { D6, B6, B1, B0, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ai03/orbit_x/info.json b/keyboards/ai03/orbit_x/info.json
index 9d22282925..19ae38fcdf 100644
--- a/keyboards/ai03/orbit_x/info.json
+++ b/keyboards/ai03/orbit_x/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Orbit-X",
+ "keyboard_name": "OrbitX",
+ "manufacturer": "ai03 Design Studio",
"url": "",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0014",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ai03/polaris/config.h b/keyboards/ai03/polaris/config.h
index 2d869dd0bd..8cf852cfab 100644
--- a/keyboards/ai03/polaris/config.h
+++ b/keyboards/ai03/polaris/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ai03 Design Studio
-#define PRODUCT Polaris
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B1, B2, B3, F0, F1 }
#define MATRIX_COL_PINS { F4, F7, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ai03/polaris/info.json b/keyboards/ai03/polaris/info.json
index 99f8ca7a3d..c4bef0c4a0 100644
--- a/keyboards/ai03/polaris/info.json
+++ b/keyboards/ai03/polaris/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Polaris",
+ "manufacturer": "ai03 Design Studio",
"url": "https://kb.ai03.me/projects/polaris.html",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ai03/polaris/keymaps/mekberg/keymap.c b/keyboards/ai03/polaris/keymaps/mekberg/keymap.c
index fce03adfbe..a33a9247af 100644
--- a/keyboards/ai03/polaris/keymaps/mekberg/keymap.c
+++ b/keyboards/ai03/polaris/keymaps/mekberg/keymap.c
@@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN] = LAYOUT_60_tsangan_hhkb(
// ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────â”
// | | | | | | | | | | | | | | | |
- 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, _______, _______,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
// |─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────|
// | 1,5u | | | | | | | | | | | | | 1,5u |
_______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/ai03/polaris/keymaps/testing/keymap.c b/keyboards/ai03/polaris/keymaps/testing/keymap.c
index c819225103..9a8efc5d09 100644
--- a/keyboards/ai03/polaris/keymaps/testing/keymap.c
+++ b/keyboards/ai03/polaris/keymaps/testing/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL
),
[_FN] = LAYOUT_all( /* 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_BSPC,
+ QK_BOOT, KC_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_PGUP, _______, _______, _______, _______, _______, KC_UP, _______, KC_MPRV, KC_MPLY, KC_MNXT, BL_STEP,
_______, KC_HOME, KC_PGDN, KC_END, _______, KC_VOLD, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______,
_______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_PSCR, _______,
diff --git a/keyboards/ai03/quasar/config.h b/keyboards/ai03/quasar/config.h
index 97fa2df2da..462ffe1a8e 100644
--- a/keyboards/ai03/quasar/config.h
+++ b/keyboards/ai03/quasar/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0010
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ryota Goto
-#define PRODUCT Quasar
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5, D4, D6, D7 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ai03/quasar/info.json b/keyboards/ai03/quasar/info.json
index 439d4feea8..d404e644a0 100644
--- a/keyboards/ai03/quasar/info.json
+++ b/keyboards/ai03/quasar/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "quasar",
+ "keyboard_name": "Quasar",
+ "manufacturer": "Ryota Goto",
"url": "https://github.com/ai03-2725/Quasar/",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0010",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ai03/quasar/keymaps/ai03/keymap.c b/keyboards/ai03/quasar/keymaps/ai03/keymap.c
index e2dca55cd1..95348ee113 100644
--- a/keyboards/ai03/quasar/keymaps/ai03/keymap.c
+++ b/keyboards/ai03/quasar/keymaps/ai03/keymap.c
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_SPC, KC_GRV, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT( /* FN */
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_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_UP, _______, _______, _______, _______, _______, KC_PGUP, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_VOLU, KC_VOLD, KC_HOME, KC_PGDN, KC_END, _______, _______, _______,
diff --git a/keyboards/ai03/soyuz/config.h b/keyboards/ai03/soyuz/config.h
index 8022145ceb..9ffec17840 100644
--- a/keyboards/ai03/soyuz/config.h
+++ b/keyboards/ai03/soyuz/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0018
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ai03 Design Studio
-#define PRODUCT Soyuz
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, B6, E6, B4 }
#define MATRIX_COL_PINS { F4, B3, D7, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ai03/soyuz/info.json b/keyboards/ai03/soyuz/info.json
index 8195a6f099..98af3b3373 100644
--- a/keyboards/ai03/soyuz/info.json
+++ b/keyboards/ai03/soyuz/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Soyuz",
+ "manufacturer": "ai03 Design Studio",
"url": "https://github.com/ai03-2725/soyuz",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0018",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [
diff --git a/keyboards/ai03/vega/config.h b/keyboards/ai03/vega/config.h
index 5f94ea9a7d..d6fbd8418d 100644
--- a/keyboards/ai03/vega/config.h
+++ b/keyboards/ai03/vega/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0015
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ai03 Design Studio
-#define PRODUCT Vega
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/ai03/vega/info.json b/keyboards/ai03/vega/info.json
index 027f03ef35..ee66f539c9 100644
--- a/keyboards/ai03/vega/info.json
+++ b/keyboards/ai03/vega/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Vega",
+ "manufacturer": "ai03 Design Studio",
"url": "ai03.com",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0015",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ai03/voyager60_alps/config.h b/keyboards/ai03/voyager60_alps/config.h
index cd06071989..c96be0030d 100644
--- a/keyboards/ai03/voyager60_alps/config.h
+++ b/keyboards/ai03/voyager60_alps/config.h
@@ -16,18 +16,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x060A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ai03
-#define PRODUCT Voyager60-Alps
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { B1, B2, B3, F0, F1 }
#define MATRIX_COL_PINS { F4, F7, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3}
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ai03/voyager60_alps/info.json b/keyboards/ai03/voyager60_alps/info.json
index 64cbaa668e..25c142f795 100644
--- a/keyboards/ai03/voyager60_alps/info.json
+++ b/keyboards/ai03/voyager60_alps/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Voyager60-Alps",
+ "manufacturer": "ai03",
"url": "https://github.com/ai03-2725/Voyager60/tree/alps",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x060A",
+ "device_version": "0.0.1"
+ },
"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":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}]
diff --git a/keyboards/aidansmithdotdev/fine40/config.h b/keyboards/aidansmithdotdev/fine40/config.h
new file mode 100644
index 0000000000..43ac1e5dda
--- /dev/null
+++ b/keyboards/aidansmithdotdev/fine40/config.h
@@ -0,0 +1,12 @@
+// Copyright 2022 Aidan Smith (@Aidan-OS)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+#define ENCODER_RESOLUTION 2
+#define ENCODERS_PAD_A { D5 }
+#define ENCODERS_PAD_B { B7 }
+
+#define OLED_DISPLAY_128X64 //Comment this out to change the screen size
diff --git a/keyboards/aidansmithdotdev/fine40/fine40.c b/keyboards/aidansmithdotdev/fine40/fine40.c
new file mode 100644
index 0000000000..cc4024136e
--- /dev/null
+++ b/keyboards/aidansmithdotdev/fine40/fine40.c
@@ -0,0 +1,85 @@
+// Copyright 2022 Aidan Smith (@Aidan-OS)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "fine40.h"
+
+enum keyboard_layers {
+ _MAIN,
+ _RIGHT,
+ _LEFT,
+ _TAB,
+};
+
+#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,128,192,224,224,240,240,248,248,248,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,248,248,248,240,240,224,224,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,128,224,224,224,192, 0, 0, 0, 0, 96,240,240, 96, 0, 0, 0, 0, 0, 0,240,240,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,128,192,224,240,248,252,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 15, 7, 7, 7, 15,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,252,248,240,224,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,240,254,255,127,115,127,127,255,252,224, 0,255,255,255,254, 48,254,254,255,199,135,255,255,255, 0,224,247,255,191,191,255,255,254, 0,254,255,255,255, 7,255,255,254,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+// 0, 0, 0, 0,192,248,254,255,255,255,255,255,255,255,255,255,127, 31, 15, 7, 3, 1,192,224,240,251,255,255,255,255,255, 0, 0, 0, 0, 0,255,255,255,255,255,255,241,225,192, 1, 3, 7, 15, 31,127,255,255,255,255,255,255,255,255,255,254,248,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3,128,128,128,128, 0, 1, 3, 3, 1, 1, 3, 3, 1, 0, 0, 1, 1, 3, 3, 3, 3,129,192,128, 1, 3, 3, 3, 3, 1, 1, 0,129,195,195,193, 0, 1, 3, 3, 1, 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, 7, 0, 0, 0,240,252,255,255,255,255,255,255,255,255,255,255,255,254,252,254,255,255,255,255,255,255,255,255,255,255,255,252,240, 0, 0, 0, 7,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 63, 63,127,123,243,247,231,193, 0,252,252,252, 28, 60,252,252,252, 28,252,252,248,224, 0,255,255,255, 0,255,255,255,255, 28, 28, 0,255,255,255,255, 28,252,252,248,240, 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,240, 0, 0, 0, 7, 31,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127, 31, 7, 0, 0, 0,240,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 15, 15, 14, 15, 7, 7, 3, 0, 15, 15, 15, 0, 0, 15, 15, 15, 0, 7, 15, 15, 7, 0, 15, 15, 15, 0, 1, 7, 7, 15, 14, 14, 6, 7, 7, 7, 7, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+// 0, 0, 0, 0, 1, 15, 63,255,255,255,255,255,255,255,255,255,255,254,248,240,224,192,128,129, 3, 7, 15, 15, 31, 31, 31, 63, 63, 63, 63, 63, 31, 31, 31, 15, 15, 7, 3,129,128,192,224,240,248,254,255,255,255,255,255,255,255,255,255,255, 63, 15, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192,224,224,224,252,254,254, 0, 0,128,192,224,224,224,224,192,128, 96,224,224,224, 0, 0,224,224,224, 0, 0, 0, 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, 15, 31, 63,127,255,255,255,255,255,255,255,255,255,255,254,254,254,254,254,252,252,252,252,252,252,252,254,254,254,254,254,255,255,255,255,255,255,255,255,255,255,127, 63, 31, 15, 7, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,120,120, 48, 31, 63, 63,120,112,127,127, 63, 0, 6, 31, 63, 63,127,119,119, 63, 55, 0, 3, 15, 63,127,127, 63, 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, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 7, 7, 15, 15, 15, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 15, 15, 15, 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,
+// };
+// oled_write_raw_P(raw_logo, sizeof(raw_logo));
+//}
+
+static void render_mochi(void)
+{
+ static const char PROGMEM mochi_logo[] = {
+ 0, 0, 0, 0, 0,224,240,240,240,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,224,240,240,240,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252,252,252,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,248,248,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192,224,240,240,240,224, 0, 0, 0, 0, 0, 0,128,192,224,240,240,240,240,240,240,224,224,192, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,224,255,255,255, 15, 63,255,254,248,224, 0, 0, 0, 0,224,248,254,255, 31, 31,255,255,255,128, 0, 0, 0,128,224,240,248,252, 60, 28, 28, 30, 28, 60,124,248,248,240,192, 0, 0, 0,128,224,240,248,252, 60, 60, 28, 30, 28, 28, 60, 28, 0, 0, 0,255,255,255,255, 28, 28, 28, 28, 60,124,252,248,240,192, 0, 0, 0, 0,252,252,252,252, 0, 0, 0, 0, 0,192,224,248,252, 63, 31, 7, 3,255,255,255,255, 0, 0, 0, 0,224,254,255,255, 15, 1, 0, 0, 0, 0, 1, 15,255,255,255,248, 0, 0, 0,
+ 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 3, 15, 63,255,252,252,255, 63, 15, 3, 0, 0, 0,255,255,255,255, 0, 0, 0, 63,255,255,255,224,128, 0, 0, 0, 0,128,192,255,255,255,127, 4, 0, 0, 63,255,255,255,224,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 60, 63, 63, 63, 61, 60, 60, 60, 60, 60,255,255,255,255, 60, 60, 0, 0, 7,127,255,255,248,128, 0, 0, 0, 0,128,240,255,255,127, 31, 0, 0, 0,
+ 0, 0, 0, 0, 15, 15, 15, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 15, 15, 15, 0, 0, 0, 0, 0, 1, 3, 7, 7, 15, 15, 15, 15, 15, 7, 7, 3, 1, 0, 0, 0, 0, 0, 0, 3, 3, 7, 7, 15, 15, 15, 15, 15, 15, 7, 0, 0, 0, 15, 15, 15, 7, 0, 0, 0, 0, 0, 0, 7, 15, 15, 15, 0, 0, 0, 0, 15, 15, 15, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 7, 0, 0, 0, 0, 0, 0, 1, 3, 7, 7, 15, 15, 15, 15, 7, 7, 3, 1, 0, 0, 0, 0, 0,
+ };
+
+ oled_write_raw_P(mochi_logo, sizeof(mochi_logo));
+}
+
+
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ return OLED_ROTATION_180; // flips the display 180 degrees
+}
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ render_mochi();
+ oled_set_cursor(0, 4);
+ oled_write_P(PSTR("Layer: "), false);
+
+ switch(get_highest_layer(layer_state))
+ {
+ case _MAIN:
+ oled_write_ln_P(PSTR("Main"), false);
+ break;
+ case _LEFT:
+ oled_write_ln_P(PSTR("Left"), false);
+ break;
+ case _RIGHT:
+ oled_write_ln_P(PSTR("Right"), false);
+ break;
+ case _TAB:
+ oled_write_ln_P(PSTR("Tab"), false);
+ break;
+ }
+
+ //render_logo();
+ return(true);
+}
+#endif
+
+#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 false;
+}
+#endif \ No newline at end of file
diff --git a/keyboards/aidansmithdotdev/fine40/fine40.h b/keyboards/aidansmithdotdev/fine40/fine40.h
new file mode 100644
index 0000000000..dd675cf3ad
--- /dev/null
+++ b/keyboards/aidansmithdotdev/fine40/fine40.h
@@ -0,0 +1,3 @@
+// Copyright 2022 Aidan Smith (@Aidan-OS)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "quantum.h" \ No newline at end of file
diff --git a/keyboards/aidansmithdotdev/fine40/info.json b/keyboards/aidansmithdotdev/fine40/info.json
new file mode 100644
index 0000000000..c2e1afd84c
--- /dev/null
+++ b/keyboards/aidansmithdotdev/fine40/info.json
@@ -0,0 +1,231 @@
+{
+ "manufacturer": "Aidan Smith",
+ "keyboard_name": "aidansmithdotdev/fine40",
+ "maintainer": "Aidan-OS",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "encoder": true,
+ "oled": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": [ "B3", "E6", "B1", "D7", "F7", "C6" ],
+ "rows": [ "F5", "F6", "B2", "B5", "F4", "D4", "B4", "B6" ]
+ },
+ "processor": "atmega32u4",
+ "url": "https://aidansmith.dev",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x4564",
+ "vid": "0xA059"
+ },
+ "layouts": {
+ "LAYOUT_2u_single_space": {
+ "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": [4, 5], "x": 6, "y": 0 },
+ { "matrix": [4, 4], "x": 7, "y": 0 },
+ { "matrix": [4, 3], "x": 8, "y": 0 },
+ { "matrix": [4, 2], "x": 9, "y": 0 },
+ { "matrix": [4, 1], "x": 10, "y": 0 },
+ { "matrix": [4, 0], "x": 11, "y": 0, "w": 1.5 },
+ { "matrix": [1, 0], "x": 0, "y": 1, "w": 1.25 },
+ { "matrix": [1, 1], "x": 1.25, "y": 1 },
+ { "matrix": [1, 2], "x": 2.25, "y": 1 },
+ { "matrix": [1, 3], "x": 3.25, "y": 1 },
+ { "matrix": [1, 4], "x": 4.25, "y": 1 },
+ { "matrix": [1, 5], "x": 5.25, "y": 1 },
+ { "matrix": [5, 5], "x": 6.25, "y": 1 },
+ { "matrix": [5, 4], "x": 7.25, "y": 1 },
+ { "matrix": [5, 3], "x": 8.25, "y": 1 },
+ { "matrix": [5, 2], "x": 9.25, "y": 1 },
+ { "matrix": [5, 1], "x": 10.25, "y": 1 },
+ { "matrix": [5, 0], "x": 11.25, "y": 1, "w": 1.25 },
+ { "matrix": [2, 0], "x": 0, "y": 2, "w": 1.5 },
+ { "matrix": [2, 1], "x": 1.5, "y": 2 },
+ { "matrix": [2, 2], "x": 2.5, "y": 2 },
+ { "matrix": [2, 3], "x": 3.5, "y": 2 },
+ { "matrix": [2, 4], "x": 4.5, "y": 2 },
+ { "matrix": [2, 5], "x": 5.5, "y": 2 },
+ { "matrix": [6, 5], "x": 6.5, "y": 2 },
+ { "matrix": [6, 4], "x": 7.5, "y": 2 },
+ { "matrix": [6, 3], "x": 8.5, "y": 2 },
+ { "matrix": [6, 2], "x": 9.5, "y": 2 },
+ { "matrix": [6, 1], "x": 10.5, "y": 2 },
+ { "matrix": [6, 0], "x": 11.5, "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, "w": 1.25 },
+ { "matrix": [3, 5], "x": 5.25, "y": 3, "w": 2 },
+ { "matrix": [7, 5], "x": 7.25, "y": 3, "w": 1.25 },
+ { "matrix": [7, 4], "x": 8.5, "y": 3 },
+ { "matrix": [7, 3], "x": 9.5, "y": 3 },
+ { "matrix": [7, 2], "x": 10.5, "y": 3 },
+ { "matrix": [7, 1], "x": 11.5, "y": 3 },
+ { "matrix": [7, 0], "x": 13, "y": 3 }
+ ]
+ },
+ "LAYOUT_2u_split_space": {
+ "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": [4, 5], "x": 6, "y": 0 },
+ { "matrix": [4, 4], "x": 7, "y": 0 },
+ { "matrix": [4, 3], "x": 8, "y": 0 },
+ { "matrix": [4, 2], "x": 9, "y": 0 },
+ { "matrix": [4, 1], "x": 10, "y": 0 },
+ { "matrix": [4, 0], "x": 11, "y": 0, "w": 1.5 },
+ { "matrix": [1, 0], "x": 0, "y": 1, "w": 1.25 },
+ { "matrix": [1, 1], "x": 1.25, "y": 1 },
+ { "matrix": [1, 2], "x": 2.25, "y": 1 },
+ { "matrix": [1, 3], "x": 3.25, "y": 1 },
+ { "matrix": [1, 4], "x": 4.25, "y": 1 },
+ { "matrix": [1, 5], "x": 5.25, "y": 1 },
+ { "matrix": [5, 5], "x": 6.25, "y": 1 },
+ { "matrix": [5, 4], "x": 7.25, "y": 1 },
+ { "matrix": [5, 3], "x": 8.25, "y": 1 },
+ { "matrix": [5, 2], "x": 9.25, "y": 1 },
+ { "matrix": [5, 1], "x": 10.25, "y": 1 },
+ { "matrix": [5, 0], "x": 11.25, "y": 1, "w": 1.25 },
+ { "matrix": [2, 0], "x": 0, "y": 2, "w": 1.5 },
+ { "matrix": [2, 1], "x": 1.5, "y": 2 },
+ { "matrix": [2, 2], "x": 2.5, "y": 2 },
+ { "matrix": [2, 3], "x": 3.5, "y": 2 },
+ { "matrix": [2, 4], "x": 4.5, "y": 2 },
+ { "matrix": [2, 5], "x": 5.5, "y": 2 },
+ { "matrix": [6, 5], "x": 6.5, "y": 2 },
+ { "matrix": [6, 4], "x": 7.5, "y": 2 },
+ { "matrix": [6, 3], "x": 8.5, "y": 2 },
+ { "matrix": [6, 2], "x": 9.5, "y": 2 },
+ { "matrix": [6, 1], "x": 10.5, "y": 2 },
+ { "matrix": [6, 0], "x": 11.5, "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, "w": 1.25 },
+ { "matrix": [3, 4], "x": 4.25, "y": 3, "w": 2 },
+ { "matrix": [7, 5], "x": 6.25, "y": 3, "w": 2 },
+ { "matrix": [7, 4], "x": 8.25, "y": 3, "w": 1.25 },
+ { "matrix": [7, 3], "x": 9.5, "y": 3 },
+ { "matrix": [7, 2], "x": 10.5, "y": 3 },
+ { "matrix": [7, 1], "x": 11.5, "y": 3 },
+ { "matrix": [7, 0], "x": 13, "y": 3 }
+ ]
+ },
+ "LAYOUT_225u_split_space": {
+ "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": [4, 5], "x": 6, "y": 0 },
+ { "matrix": [4, 4], "x": 7, "y": 0 },
+ { "matrix": [4, 3], "x": 8, "y": 0 },
+ { "matrix": [4, 2], "x": 9, "y": 0 },
+ { "matrix": [4, 1], "x": 10, "y": 0 },
+ { "matrix": [4, 0], "x": 11, "y": 0, "w": 1.5 },
+ { "matrix": [1, 0], "x": 0, "y": 1, "w": 1.25 },
+ { "matrix": [1, 1], "x": 1.25, "y": 1 },
+ { "matrix": [1, 2], "x": 2.25, "y": 1 },
+ { "matrix": [1, 3], "x": 3.25, "y": 1 },
+ { "matrix": [1, 4], "x": 4.25, "y": 1 },
+ { "matrix": [1, 5], "x": 5.25, "y": 1 },
+ { "matrix": [5, 5], "x": 6.25, "y": 1 },
+ { "matrix": [5, 4], "x": 7.25, "y": 1 },
+ { "matrix": [5, 3], "x": 8.25, "y": 1 },
+ { "matrix": [5, 2], "x": 9.25, "y": 1 },
+ { "matrix": [5, 1], "x": 10.25, "y": 1 },
+ { "matrix": [5, 0], "x": 11.25, "y": 1, "w": 1.25 },
+ { "matrix": [2, 0], "x": 0, "y": 2, "w": 1.5 },
+ { "matrix": [2, 1], "x": 1.5, "y": 2 },
+ { "matrix": [2, 2], "x": 2.5, "y": 2 },
+ { "matrix": [2, 3], "x": 3.5, "y": 2 },
+ { "matrix": [2, 4], "x": 4.5, "y": 2 },
+ { "matrix": [2, 5], "x": 5.5, "y": 2 },
+ { "matrix": [6, 5], "x": 6.5, "y": 2 },
+ { "matrix": [6, 4], "x": 7.5, "y": 2 },
+ { "matrix": [6, 3], "x": 8.5, "y": 2 },
+ { "matrix": [6, 2], "x": 9.5, "y": 2 },
+ { "matrix": [6, 1], "x": 10.5, "y": 2 },
+ { "matrix": [6, 0], "x": 11.5, "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, "w": 2.25 },
+ { "matrix": [7, 5], "x": 6.25, "y": 3, "w": 2.25 },
+ { "matrix": [7, 4], "x": 8.5, "y": 3 },
+ { "matrix": [7, 3], "x": 9.5, "y": 3 },
+ { "matrix": [7, 2], "x": 10.5, "y": 3 },
+ { "matrix": [7, 1], "x": 11.5, "y": 3 },
+ { "matrix": [7, 0], "x": 13, "y": 3 }
+ ]
+ },
+ "LAYOUT_7u_space": {
+ "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": [4, 5], "x": 6, "y": 0 },
+ { "matrix": [4, 4], "x": 7, "y": 0 },
+ { "matrix": [4, 3], "x": 8, "y": 0 },
+ { "matrix": [4, 2], "x": 9, "y": 0 },
+ { "matrix": [4, 1], "x": 10, "y": 0 },
+ { "matrix": [4, 0], "x": 11, "y": 0, "w": 1.5 },
+ { "matrix": [1, 0], "x": 0, "y": 1, "w": 1.25 },
+ { "matrix": [1, 1], "x": 1.25, "y": 1 },
+ { "matrix": [1, 2], "x": 2.25, "y": 1 },
+ { "matrix": [1, 3], "x": 3.25, "y": 1 },
+ { "matrix": [1, 4], "x": 4.25, "y": 1 },
+ { "matrix": [1, 5], "x": 5.25, "y": 1 },
+ { "matrix": [5, 5], "x": 6.25, "y": 1 },
+ { "matrix": [5, 4], "x": 7.25, "y": 1 },
+ { "matrix": [5, 3], "x": 8.25, "y": 1 },
+ { "matrix": [5, 2], "x": 9.25, "y": 1 },
+ { "matrix": [5, 1], "x": 10.25, "y": 1 },
+ { "matrix": [5, 0], "x": 11.25, "y": 1, "w": 1.25 },
+ { "matrix": [2, 0], "x": 0, "y": 2, "w": 1.5 },
+ { "matrix": [2, 1], "x": 1.5, "y": 2 },
+ { "matrix": [2, 2], "x": 2.5, "y": 2 },
+ { "matrix": [2, 3], "x": 3.5, "y": 2 },
+ { "matrix": [2, 4], "x": 4.5, "y": 2 },
+ { "matrix": [2, 5], "x": 5.5, "y": 2 },
+ { "matrix": [6, 5], "x": 6.5, "y": 2 },
+ { "matrix": [6, 4], "x": 7.5, "y": 2 },
+ { "matrix": [6, 3], "x": 8.5, "y": 2 },
+ { "matrix": [6, 2], "x": 9.5, "y": 2 },
+ { "matrix": [6, 1], "x": 10.5, "y": 2 },
+ { "matrix": [6, 0], "x": 11.5, "y": 2 },
+ { "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25 },
+ { "matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25 },
+ { "matrix": [3, 5], "x": 2.5, "y": 3, "w": 7 },
+ { "matrix": [7, 3], "x": 9.5, "y": 3 },
+ { "matrix": [7, 2], "x": 10.5, "y": 3 },
+ { "matrix": [7, 1], "x": 11.5, "y": 3 },
+ { "matrix": [7, 0], "x": 13, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/aidansmithdotdev/fine40/keymaps/default/keymap.c b/keyboards/aidansmithdotdev/fine40/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d157d9db31
--- /dev/null
+++ b/keyboards/aidansmithdotdev/fine40/keymaps/default/keymap.c
@@ -0,0 +1,43 @@
+// Copyright 2022 Aidan Smith (@Aidan-OS)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+enum keyboard_layers {
+ _MAIN,
+ _RIGHT,
+ _LEFT,
+ _TAB,
+};
+
+#define LT3_TAB LT(_TAB, KC_TAB)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_MAIN] = LAYOUT_2u_single_space(
+ 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_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_RALT , KC_LGUI , KC_BSLS , MO(_LEFT) , KC_SPC , MO(_RIGHT) , KC_LEFT , KC_DOWN , KC_UP , KC_RIGHT , KC_MPLY
+),
+
+[_LEFT] = LAYOUT_2u_single_space( /* LEFT */
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_DELETE ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_UNDERSCORE , KC_PLUS , KC_LEFT_CURLY_BRACE , KC_RIGHT_CURLY_BRACE , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_HOME , KC_PGDN , KC_PGUP , KC_END , _______
+),
+
+[_RIGHT] = LAYOUT_2u_single_space( /* RIGHT */
+ 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_MINS , KC_EQL , KC_LBRC , KC_RBRC , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_LT , KC_GT , _______ , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_MUTE , KC_VOLD , KC_VOLU , KC_MPLY , _______
+),
+
+[_TAB] = LAYOUT_2u_single_space( /* Tab */
+ KC_ESC , QK_BOOT, _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
+ _______ , KC_F11 , KC_F12 , KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_F17 , KC_F18 , KC_F19 , KC_F20 , _______ ,
+ _______ , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_MS_L , KC_MS_D , KC_MS_U , KC_MS_R , _______
+),
+};
diff --git a/keyboards/aidansmithdotdev/fine40/keymaps/via/keymap.c b/keyboards/aidansmithdotdev/fine40/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d157d9db31
--- /dev/null
+++ b/keyboards/aidansmithdotdev/fine40/keymaps/via/keymap.c
@@ -0,0 +1,43 @@
+// Copyright 2022 Aidan Smith (@Aidan-OS)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+enum keyboard_layers {
+ _MAIN,
+ _RIGHT,
+ _LEFT,
+ _TAB,
+};
+
+#define LT3_TAB LT(_TAB, KC_TAB)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_MAIN] = LAYOUT_2u_single_space(
+ 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_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_RALT , KC_LGUI , KC_BSLS , MO(_LEFT) , KC_SPC , MO(_RIGHT) , KC_LEFT , KC_DOWN , KC_UP , KC_RIGHT , KC_MPLY
+),
+
+[_LEFT] = LAYOUT_2u_single_space( /* LEFT */
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_DELETE ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_UNDERSCORE , KC_PLUS , KC_LEFT_CURLY_BRACE , KC_RIGHT_CURLY_BRACE , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_HOME , KC_PGDN , KC_PGUP , KC_END , _______
+),
+
+[_RIGHT] = LAYOUT_2u_single_space( /* RIGHT */
+ 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_MINS , KC_EQL , KC_LBRC , KC_RBRC , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_LT , KC_GT , _______ , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_MUTE , KC_VOLD , KC_VOLU , KC_MPLY , _______
+),
+
+[_TAB] = LAYOUT_2u_single_space( /* Tab */
+ KC_ESC , QK_BOOT, _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
+ _______ , KC_F11 , KC_F12 , KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_F17 , KC_F18 , KC_F19 , KC_F20 , _______ ,
+ _______ , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , _______ ,
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , KC_MS_L , KC_MS_D , KC_MS_U , KC_MS_R , _______
+),
+};
diff --git a/keyboards/aidansmithdotdev/fine40/keymaps/via/rules.mk b/keyboards/aidansmithdotdev/fine40/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/aidansmithdotdev/fine40/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/aidansmithdotdev/fine40/readme.md b/keyboards/aidansmithdotdev/fine40/readme.md
new file mode 100644
index 0000000000..19d23fb914
--- /dev/null
+++ b/keyboards/aidansmithdotdev/fine40/readme.md
@@ -0,0 +1,27 @@
+# Fine!40 PCB (For Mochi40)
+
+![aidansmithdotdev/fine40](https://i.imgur.com/2JMorvxh.png)
+
+The PCB for the Mochi40, a spiritual successor to the unreleased Whimsy recreated from scratch and made completely open source! With an OLED, Rotary Encoder, and headers for both the Elite-C and Nice!Nano, this board gives you all you could want in a 40%.
+
+* Keyboard Maintainer: [Aidan Smith](https://github.com/Aidan-OS)
+* Hardware Supported: Fine!40
+* Hardware Availability: https://github.com/Aidan-OS/Mochi40
+
+Make example for this keyboard (after setting up your build environment):
+
+ make aidansmithdotdev/fine40:default
+
+Flashing example for this keyboard:
+
+ make aidansmithdotdev/fine40: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 (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 `QK_BOOT` if it is available
diff --git a/keyboards/aidansmithdotdev/fine40/rules.mk b/keyboards/aidansmithdotdev/fine40/rules.mk
new file mode 100644
index 0000000000..2e3ef9fb84
--- /dev/null
+++ b/keyboards/aidansmithdotdev/fine40/rules.mk
@@ -0,0 +1 @@
+OLED_DRIVER = SSD1306
diff --git a/keyboards/akb/eb46/config.h b/keyboards/akb/eb46/config.h
index 644cd97305..68fa6aaf1c 100644
--- a/keyboards/akb/eb46/config.h
+++ b/keyboards/akb/eb46/config.h
@@ -19,12 +19,6 @@ 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 0x4646
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Elliot Powell
-#define PRODUCT eb46
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
diff --git a/keyboards/akb/eb46/info.json b/keyboards/akb/eb46/info.json
index dbcc9abb83..d2cae832b5 100644
--- a/keyboards/akb/eb46/info.json
+++ b/keyboards/akb/eb46/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "eb46",
+ "manufacturer": "Elliot Powell",
"maintainer": "e11i0t23",
+ "usb": {
+ "vid": "0x4646",
+ "pid": "0xFEED",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/akb/ogr/config.h b/keyboards/akb/ogr/config.h
new file mode 100644
index 0000000000..5bb1cbd09f
--- /dev/null
+++ b/keyboards/akb/ogr/config.h
@@ -0,0 +1,20 @@
+// Copyright 2022 Martin Arnstad (@arnstadm)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/*
+ * 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
diff --git a/keyboards/akb/ogr/info.json b/keyboards/akb/ogr/info.json
new file mode 100644
index 0000000000..f2583154ba
--- /dev/null
+++ b/keyboards/akb/ogr/info.json
@@ -0,0 +1,115 @@
+{
+ "manufacturer": "AKB",
+ "keyboard_name": "akb/ogr",
+ "maintainer": "arnstadm",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["F1", "E6", "B7", "B3", "B2", "B1", "C7", "C6", "B6", "B5", "D7", "D6", "D4", "D5", "D3", "D2", "D1", "D0"],
+ "rows": ["F0", "F4", "F5", "F6", "F7"]
+ },
+ "indicators": {
+ "caps_lock": "B4"
+ },
+ "processor": "atmega32u4",
+ "url": "https://www.alchemistkeyboards.com/ogr",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x4F47",
+ "vid": "0x414B"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "matrix": [0, 0], "x": 0.0, "y": 0.0 },
+ { "matrix": [0, 1], "x": 1.0, "y": 0.0 },
+ { "matrix": [0, 2], "x": 2.5, "y": 0.0 },
+ { "matrix": [0, 3], "x": 3.5, "y": 0.0 },
+ { "matrix": [0, 4], "x": 4.5, "y": 0.0 },
+ { "matrix": [0, 5], "x": 5.5, "y": 0.0 },
+ { "matrix": [0, 6], "x": 6.5, "y": 0.0 },
+ { "matrix": [0, 7], "x": 7.5, "y": 0.0 },
+ { "matrix": [0, 8], "x": 8.5, "y": 0.0 },
+ { "matrix": [0, 9], "x": 9.5, "y": 0.0 },
+ { "matrix": [0, 10], "x": 10.5, "y": 0.0 },
+ { "matrix": [0, 11], "x": 11.5, "y": 0.0 },
+ { "matrix": [0, 12], "x": 12.5, "y": 0.0 },
+ { "matrix": [0, 13], "x": 13.5, "y": 0.0 },
+ { "matrix": [0, 14], "x": 14.5, "y": 0.0 },
+ { "matrix": [0, 15], "x": 15.5, "y": 0.0 },
+ { "matrix": [0, 16], "x": 16.5, "y": 0.0 },
+ { "matrix": [0, 17], "x": 17.5, "y": 0.0 },
+ { "matrix": [1, 0], "x": 0.0, "y": 1.0 },
+ { "matrix": [1, 1], "x": 1.0, "y": 1.0 },
+ { "matrix": [1, 2], "w": 1.5, "x": 2.5, "y": 1.0 },
+ { "matrix": [1, 3], "x": 4.0, "y": 1.0 },
+ { "matrix": [1, 4], "x": 5.0, "y": 1.0 },
+ { "matrix": [1, 5], "x": 6.0, "y": 1.0 },
+ { "matrix": [1, 6], "x": 7.0, "y": 1.0 },
+ { "matrix": [1, 7], "x": 8.0, "y": 1.0 },
+ { "matrix": [1, 8], "x": 9.0, "y": 1.0 },
+ { "matrix": [1, 9], "x": 10.0, "y": 1.0 },
+ { "matrix": [1, 10], "x": 11.0, "y": 1.0 },
+ { "matrix": [1, 11], "x": 12.0, "y": 1.0 },
+ { "matrix": [1, 12], "x": 13.0, "y": 1.0 },
+ { "matrix": [1, 13], "x": 14.0, "y": 1.0 },
+ { "matrix": [1, 14], "x": 15.0, "y": 1.0 },
+ { "matrix": [1, 15], "w": 1.5, "x": 16.0, "y": 1.0 },
+ { "matrix": [1, 16], "x": 17.5, "y": 1.0 },
+ { "matrix": [2, 0], "x": 0.0, "y": 2.0 },
+ { "matrix": [2, 1], "x": 1.0, "y": 2.0 },
+ { "matrix": [2, 2], "w": 1.75, "x": 2.5, "y": 2.0 },
+ { "matrix": [2, 3], "x": 4.25, "y": 2.0 },
+ { "matrix": [2, 4], "x": 5.25, "y": 2.0 },
+ { "matrix": [2, 5], "x": 6.25, "y": 2.0 },
+ { "matrix": [2, 6], "x": 7.25, "y": 2.0 },
+ { "matrix": [2, 7], "x": 8.25, "y": 2.0 },
+ { "matrix": [2, 8], "x": 9.25, "y": 2.0 },
+ { "matrix": [2, 9], "x": 10.25, "y": 2.0 },
+ { "matrix": [2, 10], "x": 11.25, "y": 2.0 },
+ { "matrix": [2, 11], "x": 12.25, "y": 2.0 },
+ { "matrix": [2, 12], "x": 13.25, "y": 2.0 },
+ { "matrix": [2, 13], "x": 14.25, "y": 2.0 },
+ { "matrix": [2, 15], "w": 2.25, "x": 15.25, "y": 2.0 },
+ { "matrix": [2, 16], "x": 17.5, "y": 2.0 },
+ { "matrix": [3, 0], "x": 0.0, "y": 3.0 },
+ { "matrix": [3, 1], "x": 1.0, "y": 3.0 },
+ { "matrix": [3, 2], "w": 1.25, "x": 2.5, "y": 3.0 },
+ { "matrix": [3, 3], "x": 3.75, "y": 3.0 },
+ { "matrix": [3, 4], "x": 4.75, "y": 3.0 },
+ { "matrix": [3, 5], "x": 5.75, "y": 3.0 },
+ { "matrix": [3, 6], "x": 6.75, "y": 3.0 },
+ { "matrix": [3, 7], "x": 7.75, "y": 3.0 },
+ { "matrix": [3, 8], "x": 8.75, "y": 3.0 },
+ { "matrix": [3, 9], "x": 9.75, "y": 3.0 },
+ { "matrix": [3, 10], "x": 10.75, "y": 3.0 },
+ { "matrix": [3, 11], "x": 11.75, "y": 3.0 },
+ { "matrix": [3, 12], "x": 12.75, "y": 3.0 },
+ { "matrix": [3, 13], "x": 13.75, "y": 3.0 },
+ { "matrix": [3, 14], "w": 1.75, "x": 14.75, "y": 3.0 },
+ { "matrix": [3, 15], "x": 16.5, "y": 3.0 },
+ { "matrix": [3, 16], "x": 17.5, "y": 3.0 },
+ { "matrix": [4, 0], "x": 0.0, "y": 4.0 },
+ { "matrix": [4, 1], "x": 1.0, "y": 4.0 },
+ { "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4.0 },
+ { "matrix": [4, 3], "w": 1.25, "x": 3.75, "y": 4.0 },
+ { "matrix": [4, 4], "w": 1.25, "x": 5.0, "y": 4.0 },
+ { "matrix": [4, 9], "w": 6.25, "x": 6.25, "y": 4.0 },
+ { "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4.0 },
+ { "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4.0 },
+ { "matrix": [4, 14], "x": 15.5, "y": 4.0 },
+ { "matrix": [4, 15], "x": 16.5, "y": 4.0 },
+ { "matrix": [4, 16], "x": 17.5, "y": 4.0 }
+ ]
+ }
+
+ }
+} \ No newline at end of file
diff --git a/keyboards/akb/ogr/keymaps/default/keymap.c b/keyboards/akb/ogr/keymaps/default/keymap.c
new file mode 100644
index 0000000000..fa95d127da
--- /dev/null
+++ b/keyboards/akb/ogr/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+// Copyright 2018-2022 QMK (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /*
+ * ┌───┬───┠┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ F1│ F2│ │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
+ * ├───┼───┤ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * | F3| F4| │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│
+ * ├───┼───┤ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * | F5| F6| │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│
+ * ├───┼───┤ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * | F7| F8| │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
+ * ├───┼───┤ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * | F9|F10| │Ctrl│GUI │Alt │ │Alt│Ctl│ │ ↠│ ↓ │ → │
+ * └───┴───┘ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+ [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_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_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, 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/akb/ogr/keymaps/via/keymap.c b/keyboards/akb/ogr/keymaps/via/keymap.c
new file mode 100644
index 0000000000..844a454fce
--- /dev/null
+++ b/keyboards/akb/ogr/keymaps/via/keymap.c
@@ -0,0 +1,39 @@
+// Copyright 2018-2022 QMK (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /*
+ * ┌───┬───┠┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ F1│ F2│ │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
+ * ├───┼───┤ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * | F3| F4| │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│
+ * ├───┼───┤ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * | F5| F6| │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│
+ * ├───┼───┤ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * | F7| F8| │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
+ * ├───┼───┤ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * | F9|F10| │Ctrl│GUI │Alt │ │Alt│Ctl│ │ ↠│ ↓ │ → │
+ * └───┴───┘ └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+ [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_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_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, 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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/akb/ogr/keymaps/via/rules.mk b/keyboards/akb/ogr/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/akb/ogr/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/akb/ogr/readme.md b/keyboards/akb/ogr/readme.md
new file mode 100644
index 0000000000..e9b01e958c
--- /dev/null
+++ b/keyboards/akb/ogr/readme.md
@@ -0,0 +1,29 @@
+# akb/ogr
+
+![akb/ogr](https://i.imgur.com/qbolyMah.jpeg)
+
+OGR - Multi-functional keyboard with 75-78 keys for USB systems.
+
+Keyboard designed by [AKB](https://alchemistkeyboards.com/), PCB designed by [martin](https://github.com/arnstadm)
+
+* Keyboard Maintainer: [AKB](https://alchemistkeyboards.com/)
+* Hardware Supported: OGR PCB
+* Hardware Availability: https://alchemistkeyboards.com/projects/keyboards/ogr/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make akb/ogr:default
+
+Flashing example for this keyboard:
+
+ make akb/ogr: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 `QK_BOOT` if it is available
diff --git a/keyboards/akb/ogr/rules.mk b/keyboards/akb/ogr/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/akb/ogr/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/akb/ogrn/config.h b/keyboards/akb/ogrn/config.h
new file mode 100644
index 0000000000..ef8bb6d07b
--- /dev/null
+++ b/keyboards/akb/ogrn/config.h
@@ -0,0 +1,20 @@
+// Copyright 2022 arnstadm (@arnstadm)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/*
+ * 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
diff --git a/keyboards/akb/ogrn/info.json b/keyboards/akb/ogrn/info.json
new file mode 100644
index 0000000000..23d4d77273
--- /dev/null
+++ b/keyboards/akb/ogrn/info.json
@@ -0,0 +1,59 @@
+{
+ "manufacturer": "akb",
+ "keyboard_name": "akb/ogrn",
+ "maintainer": "arnstadm",
+ "bootloader": "atmel-dfu",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "direct": [
+ ["F1", "E6", "B2", "D2"],
+ ["F5", "F0", "B1", "D1"],
+ ["F6", "F7", "D5", "D3"],
+ ["C7", "C6", "D6", "D4"],
+ ["B5", "B6", "D7", "B4"]
+ ]
+ },
+ "indicators": {
+ "num_lock": "F4"
+ },
+ "processor": "atmega32u4",
+ "url": "https://alchemistkeyboards.com/projects/keyboards/ogr/",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x4F4E",
+ "vid": "0x414B"
+ },
+ "community_layouts": [
+ "numpad_5x4"
+ ],
+ "layouts": {
+ "LAYOUT_numpad_5x4": {
+ "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": [1, 0], "x": 0, "y": 1 },
+ { "matrix": [1, 1], "x": 1, "y": 1 },
+ { "matrix": [1, 2], "x": 2, "y": 1 },
+ { "matrix": [2, 0], "x": 0, "y": 2 },
+ { "matrix": [2, 1], "x": 1, "y": 2 },
+ { "matrix": [2, 2], "x": 2, "y": 2 },
+ { "h": 2, "matrix": [1, 3], "x": 3, "y": 1 },
+ { "matrix": [3, 0], "x": 0, "y": 3 },
+ { "matrix": [3, 1], "x": 1, "y": 3 },
+ { "matrix": [3, 2], "x": 2, "y": 3 },
+ { "matrix": [4, 0], "w": 2, "x": 0, "y": 4 },
+ { "matrix": [4, 2], "x": 2, "y": 4 },
+ { "h": 2, "matrix": [3, 3], "x": 3, "y": 3 }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/akb/ogrn/keymaps/default/keymap.c b/keyboards/akb/ogrn/keymaps/default/keymap.c
new file mode 100644
index 0000000000..35a275d055
--- /dev/null
+++ b/keyboards/akb/ogrn/keymaps/default/keymap.c
@@ -0,0 +1,48 @@
+// Copyright 2021 Martin Arnstad (@arnstadm)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───â”
+ * │TG1│ / │ * │ - │
+ * ├───┼───┼───┼───┤
+ * │ 7 │ 8 │ 9 │ │
+ * ├───┼───┼───┤ + │
+ * │ 4 │ 5 │ 6 │ │
+ * ├───┼───┼───┼───┤
+ * │ 1 │ 2 │ 3 │ │
+ * ├───┴───┼───┤Ent│
+ * │ 0 │ . │ │
+ * └───────┴───┴───┘
+ */
+ [0] = LAYOUT_numpad_5x4(
+ 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,
+ KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───â”
+ * │TG1│ / │ * │ - │
+ * ┌───┬───┬───â”───┤
+ * │Hom│ ↑ │PgU│ │
+ * ├───┼───┼───┤ + │
+ * │ ↠│ │ → │ │
+ * ├───┼───┼───┤───┤
+ * │End│ ↓ │PgD│ │
+ * ├───┴───┼───┤Ent│
+ * │Insert │Del│ │
+ * └───────┴───┘───┘
+ */
+ [1] = LAYOUT_numpad_5x4(
+ _______, _______, _______, _______,
+ KC_HOME, KC_UP, KC_PGUP,
+ KC_LEFT, XXXXXXX, KC_RGHT, _______,
+ KC_END, KC_DOWN, KC_PGDN,
+ KC_INS, KC_DEL, _______
+ )
+};
diff --git a/keyboards/akb/ogrn/keymaps/via/keymap.c b/keyboards/akb/ogrn/keymaps/via/keymap.c
new file mode 100644
index 0000000000..7aec87a623
--- /dev/null
+++ b/keyboards/akb/ogrn/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+// Copyright 2021 Martin Arnstad (@arnstadm)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───â”
+ * │NUM│ / │ * │ - │
+ * ├───┼───┼───┼───┤
+ * │ 7 │ 8 │ 9 │ │
+ * ├───┼───┼───┤ + │
+ * │ 4 │ 5 │ 6 │ │
+ * ├───┼───┼───┼───┤
+ * │ 1 │ 2 │ 3 │ │
+ * ├───┴───┼───┤Ent│
+ * │ 0 │ . │ │
+ * └───────┴───┴───┘
+ */
+ [0] = LAYOUT_numpad_5x4(
+ 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,
+ KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───â”
+ * │ │ / │ * │ - │
+ * ┌───┬───┬───â”───┤
+ * │Hom│ ↑ │PgU│ │
+ * ├───┼───┼───┤ + │
+ * │ ↠│ │ → │ │
+ * ├───┼───┼───┤───┤
+ * │End│ ↓ │PgD│ │
+ * ├───┴───┼───┤Ent│
+ * │Insert │Del│ │
+ * └───────┴───┘───┘
+ */
+ [1] = LAYOUT_numpad_5x4(
+ _______, _______, _______, _______,
+ KC_HOME, KC_UP, KC_PGUP,
+ KC_LEFT, XXXXXXX, KC_RGHT, _______,
+ KC_END, KC_DOWN, KC_PGDN,
+ KC_INS, KC_DEL, _______
+ )
+};
diff --git a/keyboards/akb/ogrn/keymaps/via/rules.mk b/keyboards/akb/ogrn/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/akb/ogrn/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/akb/ogrn/readme.md b/keyboards/akb/ogrn/readme.md
new file mode 100644
index 0000000000..fc55da54f8
--- /dev/null
+++ b/keyboards/akb/ogrn/readme.md
@@ -0,0 +1,27 @@
+# akb/ogrn
+
+![akb/ogrn](https://i.imgur.com/qbolyMal.png)
+
+Numpad for the OGR keyboard by AKB
+
+* Keyboard Maintainer: [akb](https://alchemistkeyboards.com/)
+* Hardware Supported: OGRN PCB
+* Hardware Availability: https://alchemistkeyboards.com/projects/keyboards/ogr/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make akb/ogrn:default
+
+Flashing example for this keyboard:
+
+ make akb/ogrn: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 `QK_BOOT` if it is available
diff --git a/keyboards/akb/ogrn/rules.mk b/keyboards/akb/ogrn/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/akb/ogrn/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/akb/raine/config.h b/keyboards/akb/raine/config.h
index e0377514e2..d04304c9c3 100644
--- a/keyboards/akb/raine/config.h
+++ b/keyboards/akb/raine/config.h
@@ -18,13 +18,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AKB
-#define PRODUCT Raine
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ E6, C6, F7, B2, B0 }
#define MATRIX_COL_PINS \
{ F6, F5, F4, B1, F1, F0, B3, B7, D0, D1, D2, D3, D5, D4, D6, D7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/akb/raine/info.json b/keyboards/akb/raine/info.json
index d3205ecb66..2efbba3fe1 100644
--- a/keyboards/akb/raine/info.json
+++ b/keyboards/akb/raine/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "raine",
+ "keyboard_name": "Raine",
+ "manufacturer": "AKB",
"maintainer": "e11i0t23",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/akb/raine/keymaps/mehadviceguy/keymap.c b/keyboards/akb/raine/keymaps/mehadviceguy/keymap.c
index 0014d699a3..c2de091fef 100644
--- a/keyboards/akb/raine/keymaps/mehadviceguy/keymap.c
+++ b/keyboards/akb/raine/keymaps/mehadviceguy/keymap.c
@@ -70,6 +70,6 @@ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, K
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH, _______, KC_HOME, KC_UP, KC_PGUP,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_DEL, KC_LEFT, KC_SLCK, KC_RGHT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______, KC_END, KC_DOWN, KC_PGDN,
-KC_LGUI, _______, _______, _______, KC_LALT, _______, _______, _______, _______, _______, _______, _______, RESET),
+KC_LGUI, _______, _______, _______, KC_LALT, _______, _______, _______, _______, _______, _______, _______, QK_BOOT),
};
diff --git a/keyboards/akegata_denki/device_one/config.h b/keyboards/akegata_denki/device_one/config.h
index cae2c60c04..33a017f3fb 100644
--- a/keyboards/akegata_denki/device_one/config.h
+++ b/keyboards/akegata_denki/device_one/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xADD0
-#define DEVICE_VER 0x0001
-#define MANUFACTURER akegata denki
-#define PRODUCT device one mechanical keyboard
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/akegata_denki/device_one/info.json b/keyboards/akegata_denki/device_one/info.json
index 34de2927b9..bc75208eb7 100644
--- a/keyboards/akegata_denki/device_one/info.json
+++ b/keyboards/akegata_denki/device_one/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "device one",
+ "manufacturer": "akegata denki",
"url": "https://akegata.co",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xADD0",
+ "device_version": "0.0.1"
+ },
"maintainer": "qmk",
"layouts": {
"LAYOUT_60_ansi": {
diff --git a/keyboards/al1/config.h b/keyboards/al1/config.h
index 07cc94a279..b0f485dfaa 100644
--- a/keyboards/al1/config.h
+++ b/keyboards/al1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x544C
-#define PRODUCT_ID 0x6050
-#define DEVICE_VER 0x0104
-#define MANUFACTURER Alsoran
-#define PRODUCT AL1
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
diff --git a/keyboards/al1/info.json b/keyboards/al1/info.json
index 4014687fe9..bbb928a3ea 100644
--- a/keyboards/al1/info.json
+++ b/keyboards/al1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "AL1",
+ "manufacturer": "Alsoran",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x544C",
+ "pid": "0x6050",
+ "device_version": "1.0.4"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/al1/keymaps/splitbs/keymap.c b/keyboards/al1/keymaps/splitbs/keymap.c
index d896b10dbe..5214e23646 100644
--- a/keyboards/al1/keymaps/splitbs/keymap.c
+++ b/keyboards/al1/keymaps/splitbs/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_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_DEL, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, _______, _______
diff --git a/keyboards/aleblazer/zodiark/config.h b/keyboards/aleblazer/zodiark/config.h
index a3ea6382e4..90ecb7ce96 100644
--- a/keyboards/aleblazer/zodiark/config.h
+++ b/keyboards/aleblazer/zodiark/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xF901
-#define PRODUCT_ID 0xF902
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Aleblazer
-#define PRODUCT Zodiark
-
#define SOFT_SERIAL_PIN D3
#define SERIAL_USE_MULTI_TRANSACTION
#define SELECT_SOFT_SERIAL_SPEED 1
diff --git a/keyboards/aleblazer/zodiark/info.json b/keyboards/aleblazer/zodiark/info.json
index 89e3deb414..a42819b3a1 100644
--- a/keyboards/aleblazer/zodiark/info.json
+++ b/keyboards/aleblazer/zodiark/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "zodiark",
+ "keyboard_name": "Zodiark",
+ "manufacturer": "Aleblazer",
"url": "https://github.com/Aleblazer/qmk_firmware/tree/master/keyboards/zodiark",
"maintainer": "Aleblazer",
+ "usb": {
+ "vid": "0xF901",
+ "pid": "0xF902",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/alf/dc60/config.h b/keyboards/alf/dc60/config.h
index bdbea9578c..f9d9c1363b 100644
--- a/keyboards/alf/dc60/config.h
+++ b/keyboards/alf/dc60/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Alf
-#define PRODUCT dc60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 }
#define MATRIX_COL_PINS { B5, D0, D1, D2, D3, D4, D5, D6, D7, C6, C7, F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/alf/dc60/info.json b/keyboards/alf/dc60/info.json
index f10d594fc8..81b8613e5b 100644
--- a/keyboards/alf/dc60/info.json
+++ b/keyboards/alf/dc60/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "dc60",
+ "manufacturer": "Alf",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"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}, {"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, "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}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}]
diff --git a/keyboards/alf/x11/config.h b/keyboards/alf/x11/config.h
index a489174b2d..5e7275dd11 100644
--- a/keyboards/alf/x11/config.h
+++ b/keyboards/alf/x11/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Alf
-#define PRODUCT x11
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 13
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D4, D5, D6, D7, F0, F1, F4, F5, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/alf/x11/info.json b/keyboards/alf/x11/info.json
index 14d4a5efb7..eb78204fc7 100644
--- a/keyboards/alf/x11/info.json
+++ b/keyboards/alf/x11/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "x11",
+ "keyboard_name": "X1.1",
+ "manufacturer": "ALF",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4146",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/alf/x11/keymaps/default/readme.md b/keyboards/alf/x11/keymaps/default/readme.md
deleted file mode 100644
index a08c59173f..0000000000
--- a/keyboards/alf/x11/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The default keymap for x11
diff --git a/keyboards/alf/x11/keymaps/via/keymap.c b/keyboards/alf/x11/keymaps/via/keymap.c
new file mode 100644
index 0000000000..93ca9df6cb
--- /dev/null
+++ b/keyboards/alf/x11/keymaps/via/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2019 MechMerlin (copied from default keymap)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_GRV, KC_1, KC_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, MO(1), 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(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
+
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_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_MPLY, KC_MSTP,
+ 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
+ ),
+ [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
+ ),
+ [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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/alf/x11/keymaps/via/rules.mk b/keyboards/alf/x11/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/alf/x11/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/alf/x2/config.h b/keyboards/alf/x2/config.h
index a6f4958b05..9c0c0a527a 100644
--- a/keyboards/alf/x2/config.h
+++ b/keyboards/alf/x2/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ALF
-#define PRODUCT X2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -34,7 +27,6 @@
{ D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS \
{ F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3, F4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/alf/x2/info.json b/keyboards/alf/x2/info.json
index 4a3cc839c9..7bb69d15e6 100644
--- a/keyboards/alf/x2/info.json
+++ b/keyboards/alf/x2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ALF X2",
+ "keyboard_name": "X2",
+ "manufacturer": "ALF",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/alf/x2/keymaps/hhkb_60/keymap.c b/keyboards/alf/x2/keymaps/hhkb_60/keymap.c
index 1f46c22ade..f8820570d2 100644
--- a/keyboards/alf/x2/keymaps/hhkb_60/keymap.c
+++ b/keyboards/alf/x2/keymaps/hhkb_60/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_all(
KC_MNXT, KC_MPRV,
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, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, RESET,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, QK_BOOT,
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/alfredslab/swift65/hotswap/config.h b/keyboards/alfredslab/swift65/hotswap/config.h
new file mode 100644
index 0000000000..3845c885e1
--- /dev/null
+++ b/keyboards/alfredslab/swift65/hotswap/config.h
@@ -0,0 +1,59 @@
+/* Copyright 2021 Steven Phillips (Spooknik)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 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 { B1, B2, B3, D6, D4 }
+#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, C7, C6, B6, B5, B4, D7, D5, D3, D1 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN D2
+#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_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/alfredslab/swift65/hotswap/hotswap.c b/keyboards/alfredslab/swift65/hotswap/hotswap.c
new file mode 100644
index 0000000000..83546fff4e
--- /dev/null
+++ b/keyboards/alfredslab/swift65/hotswap/hotswap.c
@@ -0,0 +1,19 @@
+/* Copyright 2021 Steven Phillips (spooknik)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "hotswap.h"
+
diff --git a/keyboards/alfredslab/swift65/hotswap/hotswap.h b/keyboards/alfredslab/swift65/hotswap/hotswap.h
new file mode 100644
index 0000000000..ab9c3d8250
--- /dev/null
+++ b/keyboards/alfredslab/swift65/hotswap/hotswap.h
@@ -0,0 +1,35 @@
+/* Copyright 2022 Steven Phillips (spooknik)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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_7u_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, K2D, K2E, \
+ K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ 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 }, \
+ { XXX, K31, 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, K4E }, \
+}
diff --git a/keyboards/alfredslab/swift65/hotswap/info.json b/keyboards/alfredslab/swift65/hotswap/info.json
new file mode 100644
index 0000000000..21895a1b2d
--- /dev/null
+++ b/keyboards/alfredslab/swift65/hotswap/info.json
@@ -0,0 +1,87 @@
+{
+ "keyboard_name": "Swift65 Hotswap",
+ "manufacturer": "AlfredsLab",
+ "url": "https://swiftcables.net/",
+ "maintainer": "Spooknik",
+ "usb": {
+ "vid": "0xBBEB",
+ "pid": "0xD4C4",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_7u_space",
+ "LAYOUT_all": "LAYOUT_7u_space"
+ },
+ "layouts": {
+ "LAYOUT_7u_space": {
+ "layout": [
+ { "label": "K00 (B1,F7)", "x": 0, "y": 0 },
+ { "label": "K01 (B1,F6)", "x": 1, "y": 0 },
+ { "label": "K02 (B1,F5)", "x": 2, "y": 0 },
+ { "label": "K03 (B1,F4)", "x": 3, "y": 0 },
+ { "label": "K04 (B1,F1)", "x": 4, "y": 0 },
+ { "label": "K05 (B1,F0)", "x": 5, "y": 0 },
+ { "label": "K06 (B1,C7)", "x": 6, "y": 0 },
+ { "label": "K07 (B1,C6)", "x": 7, "y": 0 },
+ { "label": "K08 (B1,B6)", "x": 8, "y": 0 },
+ { "label": "K09 (B1,B5)", "x": 9, "y": 0 },
+ { "label": "K0A (B1,B4)", "x": 10, "y": 0 },
+ { "label": "K0B (B1,D7)", "x": 11, "y": 0 },
+ { "label": "K0C (B1,D5)", "x": 12, "y": 0 },
+ { "label": "K0D (B1,D3)", "x": 13, "y": 0, "w": 2 },
+ { "label": "K0E (B1,D1)", "x": 15.25, "y": 0 },
+ { "label": "K10 (B2,F7)", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "K11 (B2,F6)", "x": 1.5, "y": 1 },
+ { "label": "K12 (B2,F5)", "x": 2.5, "y": 1 },
+ { "label": "K13 (B2,F4)", "x": 3.5, "y": 1 },
+ { "label": "K14 (B2,F1)", "x": 4.5, "y": 1 },
+ { "label": "K15 (B2,F0)", "x": 5.5, "y": 1 },
+ { "label": "K16 (B2,C7)", "x": 6.5, "y": 1 },
+ { "label": "K17 (B2,C6)", "x": 7.5, "y": 1 },
+ { "label": "K18 (B2,B6)", "x": 8.5, "y": 1 },
+ { "label": "K19 (B2,B5)", "x": 9.5, "y": 1 },
+ { "label": "K1A (B2,B4)", "x": 10.5, "y": 1 },
+ { "label": "K1B (B2,D7)", "x": 11.5, "y": 1 },
+ { "label": "K1C (B2,D5)", "x": 12.5, "y": 1 },
+ { "label": "K1D (B2,D3)", "x": 13.5, "y": 1, "w": 1.5 },
+ { "label": "K1E (B2,D1)", "x": 15.25, "y": 1 },
+ { "label": "K20 (B3,F7)", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "K21 (B3,F6)", "x": 1.75, "y": 2 },
+ { "label": "K22 (B3,F5)", "x": 2.75, "y": 2 },
+ { "label": "K23 (B3,F4)", "x": 3.75, "y": 2 },
+ { "label": "K24 (B3,F1)", "x": 4.75, "y": 2 },
+ { "label": "K25 (B3,F0)", "x": 5.75, "y": 2 },
+ { "label": "K26 (B3,C7)", "x": 6.75, "y": 2 },
+ { "label": "K27 (B3,C6)", "x": 7.75, "y": 2 },
+ { "label": "K28 (B3,B6)", "x": 8.75, "y": 2 },
+ { "label": "K29 (B3,B5)", "x": 9.75, "y": 2 },
+ { "label": "K2A (B3,B4)", "x": 10.75, "y": 2 },
+ { "label": "K2B (B3,D7)", "x": 11.75, "y": 2 },
+ { "label": "K2D (B3,D3)", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "K2E (B3,D1)", "x": 15.25, "y": 2 },
+ { "label": "K31 (D6,F6)", "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,C7)", "x": 6.25, "y": 3 },
+ { "label": "K37 (D6,C6)", "x": 7.25, "y": 3 },
+ { "label": "K38 (D6,B6)", "x": 8.25, "y": 3 },
+ { "label": "K39 (D6,B5)", "x": 9.25, "y": 3 },
+ { "label": "K3A (D6,B4)", "x": 10.25, "y": 3 },
+ { "label": "K3B (D6,D7)", "x": 11.25, "y": 3 },
+ { "label": "K3C (D6,D5)", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "K3D (D6,D3)", "x": 14, "y": 3 },
+ { "label": "K40 (D4,F7)", "x": 0, "y": 4, "w": 1.5 },
+ { "label": "K41 (D4,F6)", "x": 1.5, "y": 4},
+ { "label": "K42 (D4,F5)", "x": 2.5, "y": 4, "w": 1.5 },
+ { "label": "K46 (D4,C7)", "x": 4, "y": 4, "w": 7},
+ { "label": "K4B (D4,D7)", "x": 11, "y": 4, "w": 1.5 },
+ { "label": "K4C (D4,D5)", "x": 13, "y": 4 },
+ { "label": "K4D (D4,D3)", "x": 14, "y": 4 },
+ { "label": "K4E (D4,D1)", "x": 15, "y": 4 }
+ ]
+ }
+ }
+}
+
diff --git a/keyboards/alfredslab/swift65/hotswap/keymaps/default/keymap.c b/keyboards/alfredslab/swift65/hotswap/keymaps/default/keymap.c
new file mode 100644
index 0000000000..53c29981df
--- /dev/null
+++ b/keyboards/alfredslab/swift65/hotswap/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2022 Steven Phillips (spooknik)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_7u_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_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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, _______, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_7u_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_PGDN,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+
+}; \ No newline at end of file
diff --git a/keyboards/alfredslab/swift65/hotswap/keymaps/via/keymap.c b/keyboards/alfredslab/swift65/hotswap/keymaps/via/keymap.c
new file mode 100644
index 0000000000..25abe67bee
--- /dev/null
+++ b/keyboards/alfredslab/swift65/hotswap/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/* Copyright 2021 Steven Phillips (spooknik)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_7u_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_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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, _______, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_7u_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_PGDN,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
+ _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+
+
+ [2] = LAYOUT_7u_space(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_7u_space(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/alfredslab/swift65/hotswap/keymaps/via/rules.mk b/keyboards/alfredslab/swift65/hotswap/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/alfredslab/swift65/hotswap/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/alfredslab/swift65/hotswap/readme.md b/keyboards/alfredslab/swift65/hotswap/readme.md
new file mode 100644
index 0000000000..b5acc2a9c9
--- /dev/null
+++ b/keyboards/alfredslab/swift65/hotswap/readme.md
@@ -0,0 +1,19 @@
+# Swift65
+
+A 65% Keyboard from Swiftcables
+
+* Keyboard Maintainer: [Steven Phillips (spooknik)](https://github.com/keyboardcollective)
+* Hardware Supported: Swift65 Hotswap
+* Hardware Availability: Soom from Swiftcables
+
+To enter bootloader for flashing firmware, press layer change key (MO(1)) and Right Shift simultaneously.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make alfredslab/swift65/hotswap:default
+
+Flashing example for this keyboard:
+
+ make alfredslab/swift65/hotswap: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/alfredslab/swift65/hotswap/rules.mk b/keyboards/alfredslab/swift65/hotswap/rules.mk
new file mode 100644
index 0000000000..a6a5692999
--- /dev/null
+++ b/keyboards/alfredslab/swift65/hotswap/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 \ No newline at end of file
diff --git a/keyboards/alfredslab/swift65/solder/config.h b/keyboards/alfredslab/swift65/solder/config.h
index 509aae6a89..f0161bf616 100644
--- a/keyboards/alfredslab/swift65/solder/config.h
+++ b/keyboards/alfredslab/swift65/solder/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBBEB
-#define PRODUCT_ID 0xD4C3
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AlfredsLab
-#define PRODUCT Swift65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/alfredslab/swift65/solder/info.json b/keyboards/alfredslab/swift65/solder/info.json
index 69729e4330..154747b588 100644
--- a/keyboards/alfredslab/swift65/solder/info.json
+++ b/keyboards/alfredslab/swift65/solder/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Swift65",
+ "keyboard_name": "Swift65 Solder",
+ "manufacturer": "AlfredsLab",
"url": "https://swiftcables.net/",
"maintainer": "Spooknik",
+ "usb": {
+ "vid": "0xBBEB",
+ "pid": "0xD4C3",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_625u_space_split_bs",
"LAYOUT_all": "LAYOUT_625u_space_split_bs"
diff --git a/keyboards/aliceh66/pianoforte/config.h b/keyboards/aliceh66/pianoforte/config.h
new file mode 100644
index 0000000000..39f79b3c27
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte/config.h
@@ -0,0 +1,40 @@
+/*
+Copyright 2022 AliceH
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 MATRIX_ROWS 12
+#define MATRIX_COLS 9
+
+#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, F1, F0, E6, B6 }
+#define MATRIX_ROW_PINS { D1, D0, D3, D2, D5, B0, C6, C7, F6, F7, F5, F4 }
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2
+
+/* 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/aliceh66/pianoforte/info.json b/keyboards/aliceh66/pianoforte/info.json
new file mode 100644
index 0000000000..7128937a74
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte/info.json
@@ -0,0 +1,503 @@
+{
+ "keyboard_name": "pianoforte solder",
+ "manufacturer": "AliceH",
+ "url": "https://github.com/AliceH66",
+ "maintainer": "AliceH66",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x7066",
+ "vid": "0x6168"
+ },
+ "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":"F13", "x":14, "y":0},
+ {"label":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause Break", "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":"SB2", "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":"Pipe", "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":1.25},
+ {"label":"ISO Pipe", "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":"Shift", "x":12.24, "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":"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":"Alt", "x":11, "y":5.25},
+ {"label":"Win", "x":12, "y":5.25},
+ {"label": "MO(1)", "x":13, "y": 5.25},
+ {"label":"Ctrl", "x":14, "y":5.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_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":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause Break", "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":"Pipe", "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":"Win", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"MO(1)", "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":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause Break", "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":"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":2.25, "w":1.25, "h":2},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"label":"ISO Pipe", "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":"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":"Win", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"MO(1)", "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_ansi_7u": {
+ "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":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause Break", "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":"Pipe", "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},
+ {"label":"Space", "x":4, "y":5.25, "w":7},
+ {"label":"Alt", "x":11, "y":5.25, "w":1.5},
+ {"label":"Win", "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}
+ ]
+ },
+ "LAYOUT_tkl_iso_7u": {
+ "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":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause Break", "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":"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":2.25, "w":1.25, "h":2},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"label":"ISO Pipe", "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.5},
+ {"label":"Win", "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":"Win", "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}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/aliceh66/pianoforte/keymaps/default/keymap.c b/keyboards/aliceh66/pianoforte/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a63648bcf7
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte/keymaps/default/keymap.c
@@ -0,0 +1,33 @@
+/*
+Copyright 2022 AliceH <hayasakakb@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 {
+ _LAYER0,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = 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_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, MO(1), KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+)
+
+};
diff --git a/keyboards/aliceh66/pianoforte/keymaps/iso/keymap.c b/keyboards/aliceh66/pianoforte/keymaps/iso/keymap.c
new file mode 100644
index 0000000000..72892846f9
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte/keymaps/iso/keymap.c
@@ -0,0 +1,33 @@
+/*
+Copyright 2022 AliceH <hayasakakb@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 {
+ _LAYER0,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = 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_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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+)
+
+};
diff --git a/keyboards/aliceh66/pianoforte/keymaps/via/keymap.c b/keyboards/aliceh66/pianoforte/keymaps/via/keymap.c
new file mode 100644
index 0000000000..234b1baf76
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte/keymaps/via/keymap.c
@@ -0,0 +1,43 @@
+/*
+Copyright 2022 AliceH <hayasakakb@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 {
+ _LAYER0,
+ _LAYER1,
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = 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_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, MO(1), KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = 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/aliceh66/pianoforte/keymaps/via/rules.mk b/keyboards/aliceh66/pianoforte/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/aliceh66/pianoforte/pianoforte.c b/keyboards/aliceh66/pianoforte/pianoforte.c
new file mode 100644
index 0000000000..3531744aef
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte/pianoforte.c
@@ -0,0 +1,17 @@
+/*
+Copyright 2022 AliceH
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "pianoforte.h"
diff --git a/keyboards/aliceh66/pianoforte/pianoforte.h b/keyboards/aliceh66/pianoforte/pianoforte.h
new file mode 100644
index 0000000000..614af44cfe
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte/pianoforte.h
@@ -0,0 +1,131 @@
+/*
+Copyright 2022 AliceH
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, K007, K017, K008, \
+ K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, \
+ K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K047, K057, K048, \
+ K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066, K076, K067, \
+ K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K086, K096, K087, K097, \
+ K100, K110, K101, K113, K105, K115, K106, K116, K107, K117, K108 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008 }, \
+ { K010, K011, K012, K013, K014, K015, K016, K017, ____ }, \
+ { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+ { K030, K031, K032, K033, K034, K035, K036, K037, ____ }, \
+ { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \
+ { K050, K051, K052, K053, K054, K055, K056, K057, ____ }, \
+ { K060, K061, K062, K063, K064, K065, K066, K067, ____ }, \
+ { K070, K071, K072, K073, K074, K075, K076, ____, ____ }, \
+ { K080, K081, K082, K083, K084, K085, K086, K087, ____ }, \
+ { K090, K091, K092, K093, K094, K095, K096, K097, ____ }, \
+ { K100, K101, ____, ____, ____, ____, K106, K107, K108 }, \
+ { K110, ____, ____, K113, ____, K115, K116, K117, ____ } \
+}
+
+#define LAYOUT_tkl_f13_ansi( \
+ K000, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, K007, K017, K008, \
+ K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, \
+ K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K047, K057, K048, \
+ K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K076, \
+ K080, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K096, K097, \
+ K100, K110, K101, K113, K105, K115, K106, K116, K107, K117, K108 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008 }, \
+ { K010, K011, K012, K013, K014, K015, K016, K017, ____ }, \
+ { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+ { K030, K031, K032, K033, K034, K035, K036, K037, ____ }, \
+ { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \
+ { K050, K051, K052, K053, K054, K055, K056, K057, ____ }, \
+ { K060, K061, K062, K063, K064, K065, ____, ____, ____ }, \
+ { K070, K071, K072, K073, K074, K075, K076, ____, ____ }, \
+ { K080, K081, K082, K083, K084, K085, ____, ____, ____ }, \
+ { ____, K091, K092, K093, K094, K095, K096, K097, ____ }, \
+ { K100, K101, ____, ____, ____, K105, K106, K107, K108 }, \
+ { K110, ____, ____, K113, ____, K115, K116, K117, ____ } \
+}
+
+#define LAYOUT_tkl_f13_iso( \
+ K000, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, K007, K017, K008, \
+ K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, \
+ K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K047, K057, K048, \
+ K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066, K076, \
+ K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K096, K097, \
+ K100, K110, K101, K113, K105, K115, K106, K116, K107, K117, K108 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008 }, \
+ { K010, K011, K012, K013, K014, K015, K016, K017, ____ }, \
+ { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+ { K030, K031, K032, K033, K034, K035, K036, K037, ____ }, \
+ { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \
+ { K050, K051, K052, K053, K054, K055, ____, K057, ____ }, \
+ { K060, K061, K062, K063, K064, K065, K066, ____, ____ }, \
+ { K070, K071, K072, K073, K074, K075, K076, ____, ____ }, \
+ { K080, K081, K082, K083, K084, K085, ____, ____, ____ }, \
+ { K090, K091, K092, K093, K094, K095, K096, K097, ____ }, \
+ { K100, K101, ____, ____, ____, K105, K106, K107, K108 }, \
+ { K110, ____, ____, K113, ____, K115, K116, K117, ____ } \
+}
+
+#define LAYOUT_tkl_ansi_7u( \
+ K000, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, K007, K017, K008, \
+ K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, \
+ K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K047, K057, K048, \
+ K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K076, \
+ K080, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K096, K097, \
+ K100, K110, K101, K113, K115, K106, K116, K107, K117, K108 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008 }, \
+ { K010, K011, K012, K013, K014, K015, K016, K017, ____ }, \
+ { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+ { K030, K031, K032, K033, K034, K035, K036, K037, ____ }, \
+ { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \
+ { K050, K051, K052, K053, K054, K055, K056, K057, ____ }, \
+ { K060, K061, K062, K063, K064, K065, ____, ____, ____ }, \
+ { K070, K071, K072, K073, K074, K075, K076, ____, ____ }, \
+ { K080, K081, K082, K083, K084, K085, ____, ____, ____ }, \
+ { ____, K091, K092, K093, K094, K095, K096, K097, ____ }, \
+ { K100, K101, ____, ____, ____, ____, K106, K107, K108 }, \
+ { K110, ____, ____, K113, ____, K115, K116, K117, ____ } \
+}
+
+#define LAYOUT_tkl_iso_7u( \
+ K000, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, K007, K017, K008, \
+ K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, \
+ K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K047, K057, K048, \
+ K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066, K076, \
+ K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K095, K096, K097, \
+ K100, K110, K101, K113, K115, K106, K116, K107, K117, K108 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008 }, \
+ { K010, K011, K012, K013, K014, K015, K016, K017, ____ }, \
+ { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+ { K030, K031, K032, K033, K034, K035, K036, K037, ____ }, \
+ { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \
+ { K050, K051, K052, K053, K054, K055, ____, K057, ____ }, \
+ { K060, K061, K062, K063, K064, K065, K066, ____, ____ }, \
+ { K070, K071, K072, K073, K074, K075, K076, ____, ____ }, \
+ { K080, K081, K082, K083, K084, K085, ____, ____, ____ }, \
+ { K090, K091, K092, K093, K094, K095, K096, K097, ____ }, \
+ { K100, K101, ____, ____, ____, ____, K106, K107, K108 }, \
+ { K110, ____, ____, K113, ____, K115, K116, K117, ____ } \
+}
diff --git a/keyboards/aliceh66/pianoforte/readme.md b/keyboards/aliceh66/pianoforte/readme.md
new file mode 100644
index 0000000000..aadd975b79
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte/readme.md
@@ -0,0 +1,15 @@
+# AliceH pianoforte solder PCB
+
+QMK Firmware for the pianoforte solder PCB
+
+* Keyboard Maintainer: [AliceH] (https://github.com/AliceH66)
+* Hardware Supported: pianoforte Solder
+
+Make example for this keyboard (after setting up your build environment):
+
+ make aliceh66/pianoforte: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
+Press and hold the reset button to enter bootloader mode. \ No newline at end of file
diff --git a/keyboards/aliceh66/pianoforte/rules.mk b/keyboards/aliceh66/pianoforte/rules.mk
new file mode 100644
index 0000000000..c7f0b93fef
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte/rules.mk
@@ -0,0 +1,24 @@
+# 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
+LTO_ENABLE = yes
+
+LAYOUTS = tkl_f13_ansi tkl_f13_iso \ No newline at end of file
diff --git a/keyboards/aliceh66/pianoforte_hs/config.h b/keyboards/aliceh66/pianoforte_hs/config.h
new file mode 100644
index 0000000000..cff3af7aa2
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte_hs/config.h
@@ -0,0 +1,40 @@
+/*
+Copyright 2022 AliceH
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 MATRIX_ROWS 12
+#define MATRIX_COLS 9
+
+#define MATRIX_COL_PINS { D6, D7, B4, B5, B6, F6, F5, E6, D4 }
+#define MATRIX_ROW_PINS { D2, D1, D3, D0, D5, B0, F0, F1, F7, F4, C7, C6 }
+#define DIODE_DIRECTION COL2ROW
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2
+
+/* 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/aliceh66/pianoforte_hs/info.json b/keyboards/aliceh66/pianoforte_hs/info.json
new file mode 100644
index 0000000000..c1a99905ba
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte_hs/info.json
@@ -0,0 +1,110 @@
+{
+ "keyboard_name": "pianoforte hotswap",
+ "manufacturer": "AliceH",
+ "url": "https://github.com/AliceH66",
+ "maintainer": "AliceH66",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x7068",
+ "vid": "0x6168"
+ },
+ "layouts": {
+ "LAYOUT_tkl_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":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause Break", "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":"Pipe", "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":4, "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":"MO(1)", "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}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/aliceh66/pianoforte_hs/keymaps/default/keymap.c b/keyboards/aliceh66/pianoforte_hs/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d39b7dda99
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte_hs/keymaps/default/keymap.c
@@ -0,0 +1,33 @@
+/*
+Copyright 2022 AliceH <hayasakakb@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 {
+ _LAYER0,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = 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_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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+)
+
+};
diff --git a/keyboards/aliceh66/pianoforte_hs/keymaps/via/keymap.c b/keyboards/aliceh66/pianoforte_hs/keymaps/via/keymap.c
new file mode 100644
index 0000000000..3d69572d42
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte_hs/keymaps/via/keymap.c
@@ -0,0 +1,43 @@
+/*
+Copyright 2022 AliceH <hayasakakb@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 {
+ _LAYER0,
+ _LAYER1
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = 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_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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_tkl_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
+ )
+};
diff --git a/keyboards/aliceh66/pianoforte_hs/keymaps/via/rules.mk b/keyboards/aliceh66/pianoforte_hs/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte_hs/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/aliceh66/pianoforte_hs/pianoforte_hs.c b/keyboards/aliceh66/pianoforte_hs/pianoforte_hs.c
new file mode 100644
index 0000000000..4617663fd3
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte_hs/pianoforte_hs.c
@@ -0,0 +1,17 @@
+/*
+Copyright 2022 AliceH
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "pianoforte_hs.h"
diff --git a/keyboards/aliceh66/pianoforte_hs/pianoforte_hs.h b/keyboards/aliceh66/pianoforte_hs/pianoforte_hs.h
new file mode 100644
index 0000000000..cd24668766
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte_hs/pianoforte_hs.h
@@ -0,0 +1,43 @@
+/*
+Copyright 2022 AliceH
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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_tkl_ansi( \
+ K000, K010, K001, K011, K002, K012, K003, K013, K004, K014, K005, K015, K006, K016, K007, K017, K008, \
+ K020, K030, K021, K031, K022, K032, K023, K033, K024, K034, K025, K035, K026, K036, K027, K037, K028, \
+ K040, K050, K041, K051, K042, K052, K043, K053, K044, K054, K045, K055, K046, K056, K047, K057, K048, \
+ K060, K070, K061, K071, K062, K072, K063, K073, K064, K074, K065, K075, K066, \
+ K080, K090, K081, K091, K082, K092, K083, K093, K084, K094, K085, K096, K087, \
+ K100, K110, K101, K112, K104, K115, K106, K116, K107, K117, K108 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008 }, \
+ { K010, K011, K012, K013, K014, K015, K016, K017, ____ }, \
+ { K020, K021, K022, K023, K024, K025, K026, K027, K028 }, \
+ { K030, K031, K032, K033, K034, K035, K036, K037, ____ }, \
+ { K040, K041, K042, K043, K044, K045, K046, K047, K048 }, \
+ { K050, K051, K052, K053, K054, K055, K056, K057, ____ }, \
+ { K060, K061, K062, K063, K064, K065, K066, ____, ____ }, \
+ { K070, K071, K072, K073, K074, K075, ____, ____, ____ }, \
+ { K080, K081, K082, K083, K084, K085, ____, K087, ____ }, \
+ { K090, K091, K092, K093, K094, ____, K096, ____, ____ }, \
+ { K100, K101, ____, ____, K104, ____, K106, K107, K108 }, \
+ { K110, ____, K112, ____, ____, K115, K116, K117, ____ } \
+}
diff --git a/keyboards/aliceh66/pianoforte_hs/readme.md b/keyboards/aliceh66/pianoforte_hs/readme.md
new file mode 100644
index 0000000000..6b05e06805
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte_hs/readme.md
@@ -0,0 +1,15 @@
+# AliceH pianoforte hotswap PCB
+
+QMK Firmware for the pianoforte hotswap PCB
+
+* Keyboard Maintainer: [AliceH] (https://github.com/AliceH66)
+* Hardware Supported: pianoforte hotswap
+
+Make example for this keyboard (after setting up your build environment):
+
+ make aliceh66/pianoforte_hs: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
+Press and hold the reset button to enter bootloader mode. \ No newline at end of file
diff --git a/keyboards/aliceh66/pianoforte_hs/rules.mk b/keyboards/aliceh66/pianoforte_hs/rules.mk
new file mode 100644
index 0000000000..173f16ffe7
--- /dev/null
+++ b/keyboards/aliceh66/pianoforte_hs/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor Frequency
+F_CPU = 8000000
+
+# 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
+LTO_ENABLE = yes
diff --git a/keyboards/alpha/config.h b/keyboards/alpha/config.h
index ae1c69656b..e98029fb82 100755
--- a/keyboards/alpha/config.h
+++ b/keyboards/alpha/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER PyroL
-#define PRODUCT alpha
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 10
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D4, B4, B5 }
#define MATRIX_COL_PINS { D7, E6, C6, B6, B2, B3, B1, F7, F6, F5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/alpha/info.json b/keyboards/alpha/info.json
index 3564b8d536..eb6144bdbf 100644
--- a/keyboards/alpha/info.json
+++ b/keyboards/alpha/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Alpha",
+ "manufacturer": "PyroL",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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":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":0.5, "y":2}, {"x":1.5, "y":2}, {"x":2.5, "y":2}, {"x":3.5, "y":2}, {"x":4.5, "y":2, "w":2}, {"x":6.5, "y":2}, {"x":7.5, "y":2}, {"x":8.5, "y":2}]
diff --git a/keyboards/alpha/keymaps/hvp/keymap.c b/keyboards/alpha/keymaps/hvp/keymap.c
index 9e8f2d3b9c..13071b0830 100755
--- a/keyboards/alpha/keymaps/hvp/keymap.c
+++ b/keyboards/alpha/keymaps/hvp/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RGB_VAI, RGB_VAD, RGB_HUI, _______, _______, KC_MPLY, KC_VOLD, KC_VOLU),
[OTHER] = LAYOUT(
- KC_ESC, RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL,
+ KC_ESC, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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_NO, KC_NO, KC_NO),
};
diff --git a/keyboards/alpine65/config.h b/keyboards/alpine65/config.h
index ce674396ab..a5180dc227 100644
--- a/keyboards/alpine65/config.h
+++ b/keyboards/alpine65/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6680 // BP for Bitmap
-#define PRODUCT_ID 0x0065 // AR for Arctic
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Bitmap Designs
-#define PRODUCT Alpine65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/alpine65/info.json b/keyboards/alpine65/info.json
index 94cd3589a3..51006056c9 100644
--- a/keyboards/alpine65/info.json
+++ b/keyboards/alpine65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Alpine65",
+ "manufacturer": "Bitmap Designs",
"url": "",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x6680",
+ "pid": "0x0065",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/alps64/config.h b/keyboards/alps64/config.h
index 640bab8bca..5ca083c349 100644
--- a/keyboards/alps64/config.h
+++ b/keyboards/alps64/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6873 //hs "Hasu"
-#define PRODUCT_ID 0x6464 //Alps"64"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Hasu
-#define PRODUCT Alps64
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D4, D5, D6, C2 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/alps64/info.json b/keyboards/alps64/info.json
index c7917c8c6e..d2b2400997 100644
--- a/keyboards/alps64/info.json
+++ b/keyboards/alps64/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "alps64",
+ "keyboard_name": "Alps64",
+ "manufacturer": "Hasu",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x6873",
+ "pid": "0x6464",
+ "device_version": "0.0.1"
+ },
"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}, {"x":13, "y":0}, {"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":1.25}, {"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}, {"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":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/alps64/keymaps/crd/keymap.c b/keyboards/alps64/keymaps/crd/keymap.c
index 9268083522..533a30b1bc 100644
--- a/keyboards/alps64/keymaps/crd/keymap.c
+++ b/keyboards/alps64/keymaps/crd/keymap.c
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FL] = LAYOUT_aek_103(
KC_ESC, KC_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, KC_END, _______, _______, _______, _______, KC_MUTE, _______, _______, KC_PGDN, KC_PGUP, RESET,
+ _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, KC_MUTE, _______, _______, KC_PGDN, KC_PGUP, QK_BOOT,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_SLCK, KC_VOLD, KC_VOLU, KC_PAUS, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/alt34/config.h b/keyboards/alt34/config.h
deleted file mode 100644
index 44ee245fe4..0000000000
--- a/keyboards/alt34/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-Copyright 2022 Tommy Alatalo <@altosys>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have 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/alt34/info.json b/keyboards/alt34/info.json
deleted file mode 100644
index 647c853136..0000000000
--- a/keyboards/alt34/info.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "keyboard_name": "alt34",
- "url": "https://gitlab.com/altosys/alt34",
- "maintainer": "@altosys",
- "layouts": {
- "LAYOUT_split_3x5_2": {
- "layout": [
- {"x": 0, "y": 0.93},
- {"x": 1, "y": 0.31},
- {"x": 2, "y": 0},
- {"x": 3, "y": 0.28},
- {"x": 4, "y": 0.42},
-
- {"x": 7, "y": 0.42},
- {"x": 8, "y": 0.28},
- {"x": 9, "y": 0},
- {"x": 10, "y": 0.31},
- {"x": 11, "y": 0.93},
-
- {"x": 0, "y": 1.93},
- {"x": 1, "y": 1.31},
- {"x": 2, "y": 1},
- {"x": 3, "y": 1.28},
- {"x": 4, "y": 1.42},
-
- {"x": 7, "y": 1.42},
- {"x": 8, "y": 1.28},
- {"x": 9, "y": 1},
- {"x": 10, "y": 1.31},
- {"x": 11, "y": 1.93},
-
- {"x": 0, "y": 2.93},
- {"x": 1, "y": 2.31},
- {"x": 2, "y": 2},
- {"x": 3, "y": 2.28},
- {"x": 4, "y": 2.42},
-
- {"x": 7, "y": 2.42},
- {"x": 8, "y": 2.28},
- {"x": 9, "y": 2},
- {"x": 10, "y": 2.31},
- {"x": 11, "y": 2.93},
-
- {"x": 3.5, "y": 3.45},
- {"x": 4.5, "y": 3.7},
-
- {"x": 6.5, "y": 3.7},
- {"x": 7.5, "y": 3.45}
- ]
- }
- }
-}
diff --git a/keyboards/alt34/readme.md b/keyboards/alt34/readme.md
index 14c1e28c7a..59e8365c51 100644
--- a/keyboards/alt34/readme.md
+++ b/keyboards/alt34/readme.md
@@ -24,7 +24,7 @@ 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 jumper**: Briefly short the pads just below the TRRS connector on the PCB
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Latest updates and information for alt34 is found at https://gitlab.com/altosys/alt34
diff --git a/keyboards/alt34/rev1/config.h b/keyboards/alt34/rev1/config.h
index 7ea63954b0..7027d449ec 100644
--- a/keyboards/alt34/rev1/config.h
+++ b/keyboards/alt34/rev1/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1ABC
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER altosys
-#define PRODUCT alt34
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/alt34/rev1/info.json b/keyboards/alt34/rev1/info.json
new file mode 100644
index 0000000000..0d22194885
--- /dev/null
+++ b/keyboards/alt34/rev1/info.json
@@ -0,0 +1,58 @@
+{
+ "keyboard_name": "alt34",
+ "manufacturer": "altosys",
+ "url": "https://gitlab.com/altosys/alt34",
+ "maintainer": "@altosys",
+ "usb": {
+ "vid": "0x1ABC",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_split_3x5_2": {
+ "layout": [
+ {"x": 0, "y": 0.93},
+ {"x": 1, "y": 0.31},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0.28},
+ {"x": 4, "y": 0.42},
+
+ {"x": 7, "y": 0.42},
+ {"x": 8, "y": 0.28},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0.31},
+ {"x": 11, "y": 0.93},
+
+ {"x": 0, "y": 1.93},
+ {"x": 1, "y": 1.31},
+ {"x": 2, "y": 1},
+ {"x": 3, "y": 1.28},
+ {"x": 4, "y": 1.42},
+
+ {"x": 7, "y": 1.42},
+ {"x": 8, "y": 1.28},
+ {"x": 9, "y": 1},
+ {"x": 10, "y": 1.31},
+ {"x": 11, "y": 1.93},
+
+ {"x": 0, "y": 2.93},
+ {"x": 1, "y": 2.31},
+ {"x": 2, "y": 2},
+ {"x": 3, "y": 2.28},
+ {"x": 4, "y": 2.42},
+
+ {"x": 7, "y": 2.42},
+ {"x": 8, "y": 2.28},
+ {"x": 9, "y": 2},
+ {"x": 10, "y": 2.31},
+ {"x": 11, "y": 2.93},
+
+ {"x": 3.5, "y": 3.45},
+ {"x": 4.5, "y": 3.7},
+
+ {"x": 6.5, "y": 3.7},
+ {"x": 7.5, "y": 3.45}
+ ]
+ }
+ }
+}
diff --git a/keyboards/amag23/config.h b/keyboards/amag23/config.h
index 798fcf9d0f..a847c0ef7e 100644
--- a/keyboards/amag23/config.h
+++ b/keyboards/amag23/config.h
@@ -17,20 +17,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B54 // "KT"
-#define PRODUCT_ID 0x2323
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Koolertron
-#define PRODUCT AMAG23
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 6
#define MATRIX_ROW_PINS { A0, A1, A2, A3 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/amag23/info.json b/keyboards/amag23/info.json
index dc44b51224..7eb9aed982 100644
--- a/keyboards/amag23/info.json
+++ b/keyboards/amag23/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "AMAG23",
+ "manufacturer": "Koolertron",
"url": "http://www.koolertron.com/koolertron-one-handed-macro-mechanical-keyboard-rgb-led-backlit-portable-mini-onehanded-mechanical-gaming-keypad-23-fully-programmable-keys-blue-switches-p-874.html",
"maintainer": "ianmclinden",
+ "usb": {
+ "vid": "0x4B54",
+ "pid": "0x2323",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/amjkeyboard/amj40/config.h b/keyboards/amjkeyboard/amj40/config.h
index 2f472eac01..b5b9c2e4df 100755
--- a/keyboards/amjkeyboard/amj40/config.h
+++ b/keyboards/amjkeyboard/amj40/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x00D8 //A+M+J
-#define PRODUCT_ID 0x6072
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Han Chen
-#define PRODUCT AMJ40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { F4, F5, F6, F7}
#define MATRIX_COL_PINS { F1, F0, E6, C7, C6, B0, D4, B1, B7, B5, B4, D7}
-#define UNUSED_PINS
#define LED_CAPS_LOCK_PIN B2
#define LED_PIN_ON_STATE 0
diff --git a/keyboards/amjkeyboard/amj40/info.json b/keyboards/amjkeyboard/amj40/info.json
index 575fd1b034..cb7c274f10 100644
--- a/keyboards/amjkeyboard/amj40/info.json
+++ b/keyboards/amjkeyboard/amj40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "AMJ40",
+ "manufacturer": "Han Chen",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x00D8",
+ "pid": "0x6072",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/amjkeyboard/amj40/keymaps/fabian/keymap.c b/keyboards/amjkeyboard/amj40/keymaps/fabian/keymap.c
index a35337a4e2..f3fa391105 100755
--- a/keyboards/amjkeyboard/amj40/keymaps/fabian/keymap.c
+++ b/keyboards/amjkeyboard/amj40/keymaps/fabian/keymap.c
@@ -161,7 +161,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_DEL, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, 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/amjkeyboard/amj40/keymaps/jetpacktuxedo/keymap.c b/keyboards/amjkeyboard/amj40/keymaps/jetpacktuxedo/keymap.c
index caf6700bc3..365f4ac0c0 100755
--- a/keyboards/amjkeyboard/amj40/keymaps/jetpacktuxedo/keymap.c
+++ b/keyboards/amjkeyboard/amj40/keymaps/jetpacktuxedo/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Fkey Layer
[3] = LAYOUT( \
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RESET,\
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, QK_BOOT,\
KC_TRNS, 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, TG(4), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS\
diff --git a/keyboards/amjkeyboard/amj40/keymaps/myee/keymap.c b/keyboards/amjkeyboard/amj40/keymaps/myee/keymap.c
index ec8cdd87db..4a598d42a8 100644
--- a/keyboards/amjkeyboard/amj40/keymaps/myee/keymap.c
+++ b/keyboards/amjkeyboard/amj40/keymaps/myee/keymap.c
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
KC_SYSTEM_SLEEP, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/amjkeyboard/amj60/config.h b/keyboards/amjkeyboard/amj60/config.h
index 4e894a45fc..68994d2b2e 100644
--- a/keyboards/amjkeyboard/amj60/config.h
+++ b/keyboards/amjkeyboard/amj60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x00D8 //A+M+J
-#define PRODUCT_ID 0x6066
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Han Chen
-#define PRODUCT AMJ60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F7, F6, F5, F4, D5 }
#define MATRIX_COL_PINS { F1, F0, E6, C7, C6, B0, D4, B1, B7, B5, B4, D7, D6, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/amjkeyboard/amj60/info.json b/keyboards/amjkeyboard/amj60/info.json
index 2c1781738e..3b106beb18 100644
--- a/keyboards/amjkeyboard/amj60/info.json
+++ b/keyboards/amjkeyboard/amj60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "AMJ60",
+ "manufacturer": "Han Chen",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x00D8",
+ "pid": "0x6066",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/amjkeyboard/amj66/config.h b/keyboards/amjkeyboard/amj66/config.h
index cc84524b0b..9cbab73e70 100644
--- a/keyboards/amjkeyboard/amj66/config.h
+++ b/keyboards/amjkeyboard/amj66/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x00D8 //A+M+J
-#define PRODUCT_ID 0xBD66
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AMJKeyboard
-#define PRODUCT AMJ66
-
/* Key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { F7, F6, F5, F4, F1 }
#define MATRIX_COL_PINS { F0, B3, B2, B1, B0, B7, D0, D1, D2, D3, D5, D6, D7, B4, B5, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/amjkeyboard/amj66/info.json b/keyboards/amjkeyboard/amj66/info.json
index 27a6ecdb94..2b55e1e3c3 100644
--- a/keyboards/amjkeyboard/amj66/info.json
+++ b/keyboards/amjkeyboard/amj66/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "AMJ66",
+ "manufacturer": "AMJKeyboard",
"url": "",
"maintainer": "FSund, qmk",
+ "usb": {
+ "vid": "0x00D8",
+ "pid": "0xBD66",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/amjkeyboard/amj84/config.h b/keyboards/amjkeyboard/amj84/config.h
index 569c06dac2..1166c3f986 100644
--- a/keyboards/amjkeyboard/amj84/config.h
+++ b/keyboards/amjkeyboard/amj84/config.h
@@ -5,13 +5,6 @@
#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
@@ -28,7 +21,6 @@
*/
#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
diff --git a/keyboards/amjkeyboard/amj84/info.json b/keyboards/amjkeyboard/amj84/info.json
index 484823fcca..3d56530686 100644
--- a/keyboards/amjkeyboard/amj84/info.json
+++ b/keyboards/amjkeyboard/amj84/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "AMJ84",
- "maintainer": "peepeetee",
+ "manufacturer": "Han Chen",
"url": "",
+ "maintainer": "peepeetee",
+ "usb": {
+ "vid": "0x00D8",
+ "pid": "0x6068",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/amjkeyboard/amj84/readme.md b/keyboards/amjkeyboard/amj84/readme.md
index c0df110eb0..d1cc03a7f4 100644
--- a/keyboards/amjkeyboard/amj84/readme.md
+++ b/keyboards/amjkeyboard/amj84/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/amjkeyboard/amj96/config.h b/keyboards/amjkeyboard/amj96/config.h
index 67b3699047..12a01dc3e6 100644
--- a/keyboards/amjkeyboard/amj96/config.h
+++ b/keyboards/amjkeyboard/amj96/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x00D8 //A+M+J
-#define PRODUCT_ID 0x6074
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Han Chen
-#define PRODUCT AMJ96
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 16
@@ -40,7 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/amjkeyboard/amj96/info.json b/keyboards/amjkeyboard/amj96/info.json
index b2aac215c0..329232293e 100644
--- a/keyboards/amjkeyboard/amj96/info.json
+++ b/keyboards/amjkeyboard/amj96/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "AMJ96",
+ "manufacturer": "Han Chen",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x00D8",
+ "pid": "0x6074",
+ "device_version": "0.0.2"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
diff --git a/keyboards/amjkeyboard/amjpad/config.h b/keyboards/amjkeyboard/amjpad/config.h
index fe621b7bf3..647df951df 100644
--- a/keyboards/amjkeyboard/amjpad/config.h
+++ b/keyboards/amjkeyboard/amjpad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x00D8 //A+M+J
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0003
-#define MANUFACTURER AMJ
-#define PRODUCT PAD
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { F7, F6, F5, F4, D5, D0 }
#define MATRIX_COL_PINS { F1, F0, E6, C7 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B6
diff --git a/keyboards/amjkeyboard/amjpad/info.json b/keyboards/amjkeyboard/amjpad/info.json
index 76147716d2..456b90e049 100644
--- a/keyboards/amjkeyboard/amjpad/info.json
+++ b/keyboards/amjkeyboard/amjpad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "AMJ Pad",
+ "keyboard_name": "PAD",
+ "manufacturer": "AMJ",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x00D8",
+ "pid": "0x6060",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_numpad_6x4": {
"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}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k13", "x":3, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}, {"label":"k30", "x":0, "y":3}, {"label":"k31", "x":1, "y":3}, {"label":"k32", "x":2, "y":3}, {"label":"k23", "x":3, "y":2, "h":2}, {"label":"k40", "x":0, "y":4}, {"label":"k41", "x":1, "y":4}, {"label":"k42", "x":2, "y":4}, {"label":"k50", "x":0, "y":5, "w":2}, {"label":"k52", "x":2, "y":5}, {"label":"k43", "x":3, "y":4, "h":2}]
diff --git a/keyboards/amjkeyboard/amjpad/keymaps/max/keymap.c b/keyboards/amjkeyboard/amjpad/keymaps/max/keymap.c
index 7bfaed5999..9579726594 100644
--- a/keyboards/amjkeyboard/amjpad/keymaps/max/keymap.c
+++ b/keyboards/amjkeyboard/amjpad/keymaps/max/keymap.c
@@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FL] = LAYOUT_ortho_6x4(
KC_ESC, KC_TAB, KC_BSPC, KC_PEQL, \
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, \
- KC_P7, KC_P8, KC_P9, RESET, \
+ KC_P7, KC_P8, KC_P9, QK_BOOT, \
KC_P4, KC_P5, KC_P6, KC_PENT, \
KC_P1, KC_P2, KC_P3, KC_PENT, \
KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
diff --git a/keyboards/an_achronism/tetromino/README.md b/keyboards/an_achronism/tetromino/README.md
new file mode 100644
index 0000000000..0fae9a821d
--- /dev/null
+++ b/keyboards/an_achronism/tetromino/README.md
@@ -0,0 +1,42 @@
+# tetromino
+
+![tetromino](https://i.postimg.cc/RSfJkbTP/IMG-2428.jpg)
+* Keyboard Maintainer: [an_achronism](https://github.com/an-achronism)
+* Hardware Availability: Currently in prototyping stage, so only via [Discord](https://discord.gg/8hpygm4PgW)
+
+This project started for one reason alone: I suspected that I would hate typing on an ortholinear keyboard and wanted to find out if I was correct.
+
+It ended up turning into something a little more interesting, at least from my perspective. Much of this was driven by my general dissatisfaction with how RGB LEDs tend to be used in keyboards. I'd been talking for quite some time about how I'd like to build RGB behaviours into my keyboards that had a purely functional purpose, rather than existing mostly to look cool. Specifically, I wanted to represent layer and lock statuses in a way I've never seen anybody else do. For instance, turning on Caps Lock would not switch on a single Caps Lock indicator LED, but rather light up all of the keys that would behave differently because of Caps Lock being switched on, meaning A-Z but nothing else. The other indicators (Num and Scroll Lock) would do something very similar. Activating a custom keymap layer would also light up only the keys that were mapped differently on that layer compared to the base layer.
+
+I managed to implement a custom function to achieve exactly the desired RGB LED functionality, but for reasons that mostly have to do with following general QMK guidelines, this (relatively large) custom function is not included in the default keymap. If you want it, flash the "indicators" keymap instead.
+
+## Compiling the firmware
+
+You'll first need to set up a build environment for QMK (see below). Once you've done that, you can run a `make` for the keymap of your choice.
+
+The default keymap does NOT have my preferred custom RGB behaviour in it, in the interests of keeping with QMK repository's preference of keeping the default keymap as straightforward as possible (the custom RGB function is relatively large). If you don't care about having that, you can just do this:
+
+ make tetromino:default
+
+If however you do want my custom RGB matrix behaviour, do this:
+
+ make tetromino:indicators
+
+This will give you the RGB behaviour described in the section above.
+
+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).
+
+## Entering the bootloader
+
+You'll need to do this to flash or reflash the firmware. You can enter the bootloader in a number of different ways:
+
+* **Physical reset button**: If you have a reset button soldered on, and the keyboard is fully assembled, you should be able to reach into the hole in the underside of the case while the keyboard is connected and double-press the reset button (push it twice in quick succession). Only pressing it once will reset the microcontroller, but won't put it into bootloader mode.
+* **Physical BOOTSEL button**: Regardless of whether you have a reset button soldered into place, there is a BOOTSEL button included onboard the Raspberry Pi Pico that hosts the microcontroller. With the keyboard disconnected, press and hold down the BOOTSEL button and connect the keyboard, then release BOOTSEL.
+* **Bootmagic reset**: Hold down the top left key and plug in the keyboard (similar to the BOOTSEL method above).
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available in your keymap.
+
+Once that's done, you should see a USB mass storage device appear in your operating system pertaining to the RP2040's bootloader. This indicates that the MCU is ready to flash a firmware of your choice.
+
+## Flashing the firmware
+
+The RP2040 MCU comes preflashed with a UF2 bootloader which, once activated by one of the methods above, allows the user to flash a firmware by simply dragging and dropping the firmware file into the USB mass storage device that appears in the OS. In this case, drag and drop the .uf2 file for your corresponding QMK firmware (compiled previously as per instructions above) into the relevant USB device and the firmware should flash, then the keyboard will immediately restart with the firmware on it, ready to use. Happy typing!
diff --git a/keyboards/an_achronism/tetromino/config.h b/keyboards/an_achronism/tetromino/config.h
new file mode 100644
index 0000000000..6208224465
--- /dev/null
+++ b/keyboards/an_achronism/tetromino/config.h
@@ -0,0 +1,31 @@
+/*
+Copyright 2022 an_achronism (@an-achronism)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define DRIVER_LED_TOTAL 70
+
+/* 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
diff --git a/keyboards/an_achronism/tetromino/info.json b/keyboards/an_achronism/tetromino/info.json
new file mode 100644
index 0000000000..b8aae9d201
--- /dev/null
+++ b/keyboards/an_achronism/tetromino/info.json
@@ -0,0 +1,184 @@
+{
+ "manufacturer": "an_achronism",
+ "keyboard_name": "tetromino",
+ "maintainer": "an-achronism",
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "url": "https://github.com/an-achronism/tetromino",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x3435",
+ "vid": "0x4161"
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgblight": false,
+ "rgb_matrix": true
+ },
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6",
+ "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15"],
+ "rows": ["GP16", "GP17", "GP18", "GP19", "GP20"]
+ },
+ "layouts": {
+ "LAYOUT_ortho_5x14": {
+ "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 }
+ ]
+ }
+ },
+ "rgblight": {
+ "led_count": 70,
+ "pin": "GP26"
+ },
+ "rgb_matrix": {
+ "driver": "WS2812",
+ "layout": [
+ { "flags": 4, "matrix": [0, 0], "x": 0, "y": 0 },
+ { "flags": 4, "matrix": [0, 1], "x": 17, "y": 0 },
+ { "flags": 4, "matrix": [0, 2], "x": 34, "y": 0 },
+ { "flags": 4, "matrix": [0, 3], "x": 52, "y": 0 },
+ { "flags": 4, "matrix": [0, 4], "x": 69, "y": 0 },
+ { "flags": 4, "matrix": [0, 5], "x": 86, "y": 0 },
+ { "flags": 4, "matrix": [0, 6], "x": 103, "y": 0 },
+ { "flags": 4, "matrix": [0, 7], "x": 121, "y": 0 },
+ { "flags": 4, "matrix": [0, 8], "x": 138, "y": 0 },
+ { "flags": 4, "matrix": [0, 9], "x": 155, "y": 0 },
+ { "flags": 4, "matrix": [0, 10], "x": 172, "y": 0 },
+ { "flags": 4, "matrix": [0, 11], "x": 190, "y": 0 },
+ { "flags": 4, "matrix": [0, 12], "x": 207, "y": 0 },
+ { "flags": 4, "matrix": [0, 13], "x": 224, "y": 0 },
+ { "flags": 4, "matrix": [1, 0], "x": 0, "y": 16 },
+ { "flags": 4, "matrix": [1, 1], "x": 17, "y": 16 },
+ { "flags": 4, "matrix": [1, 2], "x": 34, "y": 16 },
+ { "flags": 4, "matrix": [1, 3], "x": 52, "y": 16 },
+ { "flags": 4, "matrix": [1, 4], "x": 69, "y": 16 },
+ { "flags": 4, "matrix": [1, 5], "x": 86, "y": 16 },
+ { "flags": 4, "matrix": [1, 6], "x": 103, "y": 16 },
+ { "flags": 4, "matrix": [1, 7], "x": 121, "y": 16 },
+ { "flags": 4, "matrix": [1, 8], "x": 138, "y": 16 },
+ { "flags": 4, "matrix": [1, 9], "x": 155, "y": 16 },
+ { "flags": 4, "matrix": [1, 10], "x": 172, "y": 16 },
+ { "flags": 4, "matrix": [1, 11], "x": 190, "y": 16 },
+ { "flags": 4, "matrix": [1, 12], "x": 207, "y": 16 },
+ { "flags": 4, "matrix": [1, 13], "x": 224, "y": 16 },
+ { "flags": 4, "matrix": [2, 0], "x": 0, "y": 32 },
+ { "flags": 4, "matrix": [2, 1], "x": 17, "y": 32 },
+ { "flags": 4, "matrix": [2, 2], "x": 34, "y": 32 },
+ { "flags": 4, "matrix": [2, 3], "x": 52, "y": 32 },
+ { "flags": 4, "matrix": [2, 4], "x": 69, "y": 32 },
+ { "flags": 4, "matrix": [2, 5], "x": 86, "y": 32 },
+ { "flags": 4, "matrix": [2, 6], "x": 103, "y": 32 },
+ { "flags": 4, "matrix": [2, 7], "x": 121, "y": 32 },
+ { "flags": 4, "matrix": [2, 8], "x": 138, "y": 32 },
+ { "flags": 4, "matrix": [2, 9], "x": 155, "y": 32 },
+ { "flags": 4, "matrix": [2, 10], "x": 172, "y": 32 },
+ { "flags": 4, "matrix": [2, 11], "x": 190, "y": 32 },
+ { "flags": 4, "matrix": [2, 12], "x": 207, "y": 32 },
+ { "flags": 4, "matrix": [2, 13], "x": 224, "y": 32 },
+ { "flags": 4, "matrix": [3, 0], "x": 0, "y": 48 },
+ { "flags": 4, "matrix": [3, 1], "x": 17, "y": 48 },
+ { "flags": 4, "matrix": [3, 2], "x": 34, "y": 48 },
+ { "flags": 4, "matrix": [3, 3], "x": 52, "y": 48 },
+ { "flags": 4, "matrix": [3, 4], "x": 69, "y": 48 },
+ { "flags": 4, "matrix": [3, 5], "x": 86, "y": 48 },
+ { "flags": 4, "matrix": [3, 6], "x": 103, "y": 48 },
+ { "flags": 4, "matrix": [3, 7], "x": 121, "y": 48 },
+ { "flags": 4, "matrix": [3, 8], "x": 138, "y": 48 },
+ { "flags": 4, "matrix": [3, 9], "x": 155, "y": 48 },
+ { "flags": 4, "matrix": [3, 10], "x": 172, "y": 48 },
+ { "flags": 4, "matrix": [3, 11], "x": 190, "y": 48 },
+ { "flags": 4, "matrix": [3, 12], "x": 207, "y": 48 },
+ { "flags": 4, "matrix": [3, 13], "x": 224, "y": 48 },
+ { "flags": 4, "matrix": [4, 0], "x": 0, "y": 64 },
+ { "flags": 4, "matrix": [4, 1], "x": 17, "y": 64 },
+ { "flags": 4, "matrix": [4, 2], "x": 34, "y": 64 },
+ { "flags": 4, "matrix": [4, 3], "x": 52, "y": 64 },
+ { "flags": 4, "matrix": [4, 4], "x": 69, "y": 64 },
+ { "flags": 4, "matrix": [4, 5], "x": 86, "y": 64 },
+ { "flags": 4, "matrix": [4, 6], "x": 103, "y": 64 },
+ { "flags": 4, "matrix": [4, 7], "x": 121, "y": 64 },
+ { "flags": 4, "matrix": [4, 8], "x": 138, "y": 64 },
+ { "flags": 4, "matrix": [4, 9], "x": 155, "y": 64 },
+ { "flags": 4, "matrix": [4, 10], "x": 172, "y": 64 },
+ { "flags": 4, "matrix": [4, 11], "x": 190, "y": 64 },
+ { "flags": 4, "matrix": [4, 12], "x": 207, "y": 64 },
+ { "flags": 4, "matrix": [4, 13], "x": 224, "y": 64 }
+ ]
+ }
+}
diff --git a/keyboards/an_achronism/tetromino/keymaps/default/keymap.c b/keyboards/an_achronism/tetromino/keymaps/default/keymap.c
new file mode 100644
index 0000000000..4f47154c69
--- /dev/null
+++ b/keyboards/an_achronism/tetromino/keymaps/default/keymap.c
@@ -0,0 +1,62 @@
+/*
+Copyright 2022 an_achronism (@an-achronism)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Del│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Tab| Q │ W │ E | R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bsp│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Ctl│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │UK#│Rtn|
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Sft│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Sft│ ↑ │App|
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Esc│Ctl│Alt│GUI│L_1│Spc│L_2|GUI│Alt│Ctl|UK\│ ↠│ ↓ │ → │
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+ */
+ [0] = LAYOUT_ortho_5x14(
+ KC_GRV, KC_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_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,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, RSFT_T(KC_APP),
+ KC_ESC, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_RGUI, KC_RALT, KC_RCTL, KC_NUBS, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_ortho_5x14(
+ KC_BRID, KC_BRIU, _______, _______, _______, _______, KC_NUM, KC_PSLS, KC_PAST, KC_PEQL, _______, _______, _______, KC_PWR,
+ _______, _______, KC_UP, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_PAUS, KC_ESC, _______, KC_SLEP,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, _______, KC_CALC,
+ KC_CAPS, _______, _______, _______, _______, KC_PAUS, KC_P1, KC_P2, KC_P3, KC_PENT, _______, KC_CAPS, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_ortho_5x14(
+ _______, _______, _______, _______, _______, _______, KC_SCRL, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MSTP,
+ _______, KC_F4, KC_F3, KC_F2, KC_F1, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, C(KC_BRK), KC_ESC, _______, _______,
+ _______, KC_F8, KC_F7, KC_F6, KC_F5, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_MPRV, KC_MNXT, KC_MPLY,
+ KC_CAPS, KC_F12, KC_F11, KC_F10, KC_F9, C(KC_BRK),_______, _______, _______, _______, _______, KC_CAPS, _______, KC_PSCR,
+ _______, _______, _______, _______, MO(3), _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_ortho_5x14(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/an_achronism/tetromino/keymaps/indicators/config.h b/keyboards/an_achronism/tetromino/keymaps/indicators/config.h
new file mode 100644
index 0000000000..f117063fb1
--- /dev/null
+++ b/keyboards/an_achronism/tetromino/keymaps/indicators/config.h
@@ -0,0 +1,30 @@
+/*
+Copyright 2022 an_achronism (@an-achronism)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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_TRIGGER_ON_KEYDOWN
+
+/* 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
diff --git a/keyboards/an_achronism/tetromino/keymaps/indicators/keymap.c b/keyboards/an_achronism/tetromino/keymaps/indicators/keymap.c
new file mode 100644
index 0000000000..8f56c41be6
--- /dev/null
+++ b/keyboards/an_achronism/tetromino/keymaps/indicators/keymap.c
@@ -0,0 +1,124 @@
+/*
+Copyright 2022 an_achronism (@an-achronism)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Del│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Tab| Q │ W │ E | R │ T │ Y │ U │ I │ O │ P │ [ │ ] │Bsp│
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Ctl│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │UK#│Rtn|
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Sft│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Sft│ ↑ │App|
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │Esc│Ctl│Alt│GUI│L_1│Spc│L_2|GUI│Alt│Ctl|UK\│ ↠│ ↓ │ → │
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+ */
+ [0] = LAYOUT_ortho_5x14(
+ KC_GRV, KC_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_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,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, RSFT_T(KC_APP),
+ KC_ESC, KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_RGUI, KC_RALT, KC_RCTL, KC_NUBS, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_ortho_5x14(
+ KC_BRID, KC_BRIU, _______, _______, _______, _______, KC_NUM, KC_PSLS, KC_PAST, KC_PEQL, _______, _______, _______, KC_PWR,
+ _______, _______, KC_UP, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_PAUS, KC_ESC, _______, KC_SLEP,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, _______, KC_CALC,
+ KC_CAPS, _______, _______, _______, _______, KC_PAUS, KC_P1, KC_P2, KC_P3, KC_PENT, _______, KC_CAPS, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_ortho_5x14(
+ _______, _______, _______, _______, _______, _______, KC_SCRL, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MSTP,
+ _______, KC_F4, KC_F3, KC_F2, KC_F1, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, C(KC_BRK), KC_ESC, _______, _______,
+ _______, KC_F8, KC_F7, KC_F6, KC_F5, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_MPRV, KC_MNXT, KC_MPLY,
+ KC_CAPS, KC_F12, KC_F11, KC_F10, KC_F9, C(KC_BRK),_______, _______, _______, _______, _______, KC_CAPS, _______, KC_PSCR,
+ _______, _______, _______, _______, MO(3), _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_ortho_5x14(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+// Initialise RBG matrix with all LEDs set to solid colour and zero HSV (i.e. off):
+void keyboard_post_init_user(void) {
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv_noeeprom(HSV_OFF);
+};
+
+// Custom RGB indicator behaviour:
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ uint8_t led_processed_count = 0;
+ for (uint8_t row = 0; row < MATRIX_ROWS; ++row) {
+ for (uint8_t col = 0; col < MATRIX_COLS; ++col) {
+ if (led_processed_count == RGB_MATRIX_LED_PROCESS_LIMIT){
+ return;
+ }
+ uint8_t led_index = g_led_config.matrix_co[row][col];
+ uint16_t keycode = keymap_key_to_keycode(0, (keypos_t){col,row});
+ if (led_index >= led_min && led_index <= led_max && led_index != NO_LED) {
+ // Light base layer arrow keys orange if Scroll Lock is on, otherwise light them magenta:
+ led_processed_count++;
+ if (keycode >= KC_RIGHT && keycode <= KC_UP) {
+ if (host_keyboard_led_state().scroll_lock) {
+ rgb_matrix_set_color(led_index, RGB_ORANGE);
+ } else {
+ rgb_matrix_set_color(led_index, RGB_MAGENTA);
+ }
+ }
+ // Light alpha keys (A-Z only) red if Caps Lock is on:
+ if (host_keyboard_led_state().caps_lock && keycode >= KC_A && keycode <= KC_Z) {
+ rgb_matrix_set_color(led_index, RGB_RED);
+ }
+ // Whenever a layer above base is active, recolour only the keys that are different on that layer:
+ if (get_highest_layer(layer_state) > 0) {
+ uint8_t layer = get_highest_layer(layer_state);
+ uint16_t momentary_keycode = keymap_key_to_keycode(layer, (keypos_t){col,row});
+ if (momentary_keycode > KC_TRNS) {
+ switch(layer) {
+ case 2:
+ // The uppermost layer is blue:
+ rgb_matrix_set_color(led_index, RGB_BLUE);
+ break;
+ case 1:
+ // The middle layer is green, except that the numpad section turns
+ // orange when Num Lock is on:
+ if (host_keyboard_led_state().num_lock &&
+ (momentary_keycode == KC_KP_EQUAL ||
+ (momentary_keycode >= KC_NUM_LOCK && momentary_keycode <= KC_KP_DOT)
+ )) {
+ rgb_matrix_set_color(led_index, RGB_ORANGE);
+ } else {
+ rgb_matrix_set_color(led_index, RGB_GREEN);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/keyboards/an_achronism/tetromino/rules.mk b/keyboards/an_achronism/tetromino/rules.mk
new file mode 100644
index 0000000000..ff20f6e38e
--- /dev/null
+++ b/keyboards/an_achronism/tetromino/rules.mk
@@ -0,0 +1,2 @@
+# Use dedicated PIO on Raspberry Pi Pico for RGB LEDs:
+WS2812_DRIVER = vendor
diff --git a/keyboards/anavi/macropad8/config.h b/keyboards/anavi/macropad8/config.h
index 4ec8c73123..b15656fe83 100644
--- a/keyboards/anavi/macropad8/config.h
+++ b/keyboards/anavi/macropad8/config.h
@@ -19,13 +19,6 @@ 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 PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ANAVI
-#define PRODUCT Macro Pad 8
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
@@ -51,7 +44,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_LEVELS 3
#define RGBLIGHT_SLEEP
-#define UNUSED_PINS
/* ws2812B RGB LED */
#ifdef RGBLIGHT_ENABLE
diff --git a/keyboards/anavi/macropad8/info.json b/keyboards/anavi/macropad8/info.json
index 8f6deed82b..fd6d3bd0a1 100644
--- a/keyboards/anavi/macropad8/info.json
+++ b/keyboards/anavi/macropad8/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ANAVI Macro Pad 8",
+ "keyboard_name": "Macro Pad 8",
+ "manufacturer": "ANAVI",
"url": "",
"maintainer": "leon-anavi",
+ "usb": {
+ "vid": "0xCEEB",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_2x4": {
"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/annepro2/ap2_led.c b/keyboards/annepro2/ap2_led.c
index f12269f93d..8b42e470c2 100644
--- a/keyboards/annepro2/ap2_led.c
+++ b/keyboards/annepro2/ap2_led.c
@@ -138,6 +138,24 @@ void ap2_led_reset_foreground_color() {
ap2_led_mask_set_mono(color);
}
+void ap2_led_sticky_set_key(uint8_t row, uint8_t col, ap2_led_t color) {
+ uint8_t payload[] = {row, col, color.p.blue, color.p.green, color.p.red, color.p.alpha};
+ proto_tx(CMD_LED_STICKY_SET_KEY, payload, sizeof(payload), 1);
+}
+
+void ap2_led_unset_sticky_key(uint8_t row, uint8_t col) {
+ uint8_t payload[] = {row, col};
+ proto_tx(CMD_LED_STICKY_UNSET_KEY, payload, sizeof(payload), 1);
+}
+
+void ap2_led_unset_sticky_row(uint8_t row) {
+ uint8_t payload[] = {row};
+ proto_tx(CMD_LED_STICKY_UNSET_ROW, payload, sizeof(payload), 1);
+}
+void ap2_led_unset_sticky_all(void) {
+ proto_tx(CMD_LED_STICKY_UNSET_ALL, NULL, 0, 1);
+}
+
/*
* Currently keypresses are unified with other messages, still with single 1
* byte payload. Transfer is normally fast enough for that to not be a problem -
diff --git a/keyboards/annepro2/ap2_led.h b/keyboards/annepro2/ap2_led.h
index 43f78c03e3..9d9a3aca7e 100644
--- a/keyboards/annepro2/ap2_led.h
+++ b/keyboards/annepro2/ap2_led.h
@@ -86,6 +86,11 @@ void ap2_led_blink(uint8_t row, uint8_t col, ap2_led_t color, uint8_t count, uin
void ap2_led_set_foreground_color(uint8_t red, uint8_t green, uint8_t blue);
void ap2_led_reset_foreground_color(void);
+void ap2_led_sticky_set_key(uint8_t row, uint8_t col, ap2_led_t color);
+void ap2_led_unset_sticky_key(uint8_t row, uint8_t col);
+void ap2_led_unset_sticky_row(uint8_t row);
+void ap2_led_unset_sticky_all(void);
+
typedef struct {
uint8_t amount_of_profiles;
uint8_t current_profile;
diff --git a/keyboards/annepro2/c15/config.h b/keyboards/annepro2/c15/config.h
index ff92aeea8e..ea38f4dce3 100644
--- a/keyboards/annepro2/c15/config.h
+++ b/keyboards/annepro2/c15/config.h
@@ -20,12 +20,6 @@
#include "pin_defs.h"
#include "config_led.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xfeed
-#define PRODUCT_ID 0xac15
-#define DEVICE_VER 0x1337
-#define MANUFACTURER Obins
-#define PRODUCT Anne Pro 2 QMK
// key matrix size
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -49,3 +43,21 @@
// Obins stock firmware has something similar to this already enabled, but disabled by default in QMK
#define PERMISSIVE_HOLD
+
+// SPI configuration
+#define SPI_DRIVER SPID1
+#define SPI_SCK_PIN A0
+#define SPI_MOSI_PIN A1
+#define SPI_MISO_PIN A2
+
+// Flash configuration
+#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B6
+#define EXTERNAL_FLASH_SPI_CLOCK_DIVISOR 16
+#define EXTERNAL_FLASH_PAGE_SIZE 256
+#define EXTERNAL_FLASH_SECTOR_SIZE 4096
+#define EXTERNAL_FLASH_BLOCK_SIZE 4096
+#define EXTERNAL_FLASH_SIZE (256 * 1024) // 2M-bit flash size
+
+// Wear-leveling driver configuration
+#define WEAR_LEVELING_LOGICAL_SIZE 1024
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
diff --git a/keyboards/annepro2/c15/info.json b/keyboards/annepro2/c15/info.json
new file mode 100644
index 0000000000..c8c637ccfb
--- /dev/null
+++ b/keyboards/annepro2/c15/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Anne Pro 2 C15 (QMK)",
+ "usb": {
+ "pid": "0xAC15"
+ }
+}
diff --git a/keyboards/annepro2/c15/rules.mk b/keyboards/annepro2/c15/rules.mk
index 2c518b6339..302aeecbe6 100644
--- a/keyboards/annepro2/c15/rules.mk
+++ b/keyboards/annepro2/c15/rules.mk
@@ -26,6 +26,10 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+# Wear-levelling driver
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = spi_flash
+
# Custom RGB matrix handling
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = custom
diff --git a/keyboards/annepro2/c18/config.h b/keyboards/annepro2/c18/config.h
index 82a406a157..6b6307c3d0 100644
--- a/keyboards/annepro2/c18/config.h
+++ b/keyboards/annepro2/c18/config.h
@@ -20,12 +20,6 @@
#include "pin_defs.h"
#include "config_led.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xfeed
-#define PRODUCT_ID 0xac18
-#define DEVICE_VER 0x1337
-#define MANUFACTURER Obins
-#define PRODUCT Anne Pro 2(c18)QMK
// key matrix size
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -47,3 +41,21 @@
// Obins stock firmware has something similar to this already enabled, but disabled by default in QMK
#define PERMISSIVE_HOLD
+
+// SPI configuration
+#define SPI_DRIVER SPID1
+#define SPI_SCK_PIN A0
+#define SPI_MOSI_PIN A1
+#define SPI_MISO_PIN A2
+
+// Flash configuration
+#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN A3
+#define EXTERNAL_FLASH_SPI_CLOCK_DIVISOR 16
+#define EXTERNAL_FLASH_PAGE_SIZE 256
+#define EXTERNAL_FLASH_SECTOR_SIZE 4096
+#define EXTERNAL_FLASH_BLOCK_SIZE 4096
+#define EXTERNAL_FLASH_SIZE (256 * 1024) // 2M-bit flash size
+
+// Wear-leveling driver configuration
+#define WEAR_LEVELING_LOGICAL_SIZE 1024
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
diff --git a/keyboards/annepro2/c18/info.json b/keyboards/annepro2/c18/info.json
new file mode 100644
index 0000000000..94b96a2c44
--- /dev/null
+++ b/keyboards/annepro2/c18/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Anne Pro 2 C18 (QMK)",
+ "usb": {
+ "pid": "0xAC18"
+ }
+}
diff --git a/keyboards/annepro2/c18/rules.mk b/keyboards/annepro2/c18/rules.mk
index 60c2e08648..b1c7208f8b 100644
--- a/keyboards/annepro2/c18/rules.mk
+++ b/keyboards/annepro2/c18/rules.mk
@@ -26,6 +26,10 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+# Wear-levelling driver
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = spi_flash
+
# Custom RGB matrix handling
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = custom
diff --git a/keyboards/annepro2/halconf.h b/keyboards/annepro2/halconf.h
index 686b91a7fb..dcb04eab1b 100644
--- a/keyboards/annepro2/halconf.h
+++ b/keyboards/annepro2/halconf.h
@@ -25,4 +25,8 @@
#define SERIAL_USB_BUFFERS_SIZE 256
+#define HAL_USE_SPI TRUE
+#define SPI_USE_WAIT TRUE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+
#include_next <halconf.h>
diff --git a/keyboards/annepro2/info.json b/keyboards/annepro2/info.json
index 95786329b2..d2ddae4053 100644
--- a/keyboards/annepro2/info.json
+++ b/keyboards/annepro2/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Anne Pro 2",
+ "manufacturer": "Obins",
"url": "https://openannepro.github.io/",
"maintainer": "bwisn",
+ "usb": {
+ "vid": "0xFEED",
+ "device_version": "13.3.7"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/annepro2/keymaps/default-full-caps/keymap.c b/keyboards/annepro2/keymaps/default-full-caps/keymap.c
index c87447d311..cb6147d40a 100644
--- a/keyboards/annepro2/keymaps/default-full-caps/keymap.c
+++ b/keyboards/annepro2/keymaps/default-full-caps/keymap.c
@@ -96,7 +96,7 @@ enum anne_pro_layers {
*
*/
[FN2] = LAYOUT_60_ansi( /* FN2 */
- _______, KC_AP2_BT1, KC_AP2_BT2, KC_AP2_BT3, KC_AP2_BT4, _______, _______, _______, KC_AP_LED_OFF, KC_AP_LED_ON, _______, _______, _______, _______,
+ _______, KC_AP2_BT1, KC_AP2_BT2, KC_AP2_BT3, KC_AP2_BT4, _______, _______, _______, _______, KC_AP_RGB_MOD, KC_AP_RGB_TOG, KC_AP_RGB_VAD, KC_AP_RGB_VAI, _______,
MO(FN2), _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_HOME, KC_END, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_DEL, _______,
@@ -109,9 +109,11 @@ enum anne_pro_layers {
bool led_update_user(led_t leds) {
if (leds.caps_lock) {
// Set the leds to red
- ap2_led_set_foreground_color(0xFF, 0x00, 0x00);
+ const ap2_led_t color = {.p.red = 0xff, .p.green = 0x00, .p.blue = 0x00, .p.alpha = 0xff};
+ ap2_led_mask_set_mono(color);
} else {
- ap2_led_reset_foreground_color();
+ const ap2_led_t color = {.p.red = 0x00, .p.green = 0x00, .p.blue = 0x00, .p.alpha = 0x00};
+ ap2_led_mask_set_mono(color);
}
return true;
diff --git a/keyboards/annepro2/keymaps/default-layer-indicators/keymap.c b/keyboards/annepro2/keymaps/default-layer-indicators/keymap.c
index 1fd97c584e..ca042dcd32 100644
--- a/keyboards/annepro2/keymaps/default-layer-indicators/keymap.c
+++ b/keyboards/annepro2/keymaps/default-layer-indicators/keymap.c
@@ -96,7 +96,7 @@ enum anne_pro_layers {
*
*/
[FN2] = LAYOUT_60_ansi( /* FN2 */
- _______, KC_AP2_BT1, KC_AP2_BT2, KC_AP2_BT3, KC_AP2_BT4, _______, _______, _______, _______, KC_AP_LED_TOG, KC_AP_LED_NEXT_INTENSITY, KC_AP_LED_PREV_PROFILE, KC_AP_LED_NEXT_PROFILE, _______,
+ _______, KC_AP2_BT1, KC_AP2_BT2, KC_AP2_BT3, KC_AP2_BT4, _______, _______, _______, _______, KC_AP_RGB_MOD, KC_AP_RGB_TOG, KC_AP_RGB_VAD, KC_AP_RGB_VAI, _______,
MO(FN2), _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_HOME, KC_END, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_DEL, _______,
@@ -134,16 +134,12 @@ bool led_update_user(led_t leds) {
if (leds.caps_lock) {
// Set the caps-lock to red
const ap2_led_t color = {.p.red = 0xff, .p.green = 0x00, .p.blue = 0x00, .p.alpha = 0xff};
-
- ap2_led_mask_set_key(2, 0, color);
+ ap2_led_sticky_set_key(2, 0, color);
/* NOTE: Instead of colouring the capslock only, you can change the whole
- keyboard with ap2_led_set_foreground_color */
+ keyboard with ap2_led_mask_set_mono */
} else {
// Reset the capslock if there is no layer active
- if (!layer_state_is(FN1) && !layer_state_is(FN2)) {
- const ap2_led_t color = {.p.red = 0xff, .p.green = 0x00, .p.blue = 0x00, .p.alpha = 0x00};
- ap2_led_mask_set_key(2, 0, color);
- }
+ ap2_led_unset_sticky_key(2, 0);
}
return true;
diff --git a/keyboards/annepro2/mcuconf.h b/keyboards/annepro2/mcuconf.h
index 8265fe6eb9..9e39bd9681 100644
--- a/keyboards/annepro2/mcuconf.h
+++ b/keyboards/annepro2/mcuconf.h
@@ -60,3 +60,11 @@
#define HT32_USB_USE_USB0 TRUE
#define HT32_USB_USB0_IRQ_PRIORITY 5
+
+/*
+ * SPI driver setting
+ */
+
+#define HT32_SPI_USE_SPI1 TRUE
+#define HT32_SPI1_IRQ_PRIORITY 9
+
diff --git a/keyboards/annepro2/protocol.h b/keyboards/annepro2/protocol.h
index 41610054e0..d38fd0a66e 100644
--- a/keyboards/annepro2/protocol.h
+++ b/keyboards/annepro2/protocol.h
@@ -55,6 +55,14 @@ enum {
/* Number of profiles, current profile, on/off state,
reactive flag, brightness, errors */
CMD_LED_STATUS = 0x41,
+
+ /* Set sticky key, meaning the key will light up even when LEDs are turned off */
+ CMD_LED_STICKY_SET_KEY = 0x50,
+ CMD_LED_STICKY_SET_ROW = 0x51,
+ CMD_LED_STICKY_SET_MONO = 0x52,
+ CMD_LED_STICKY_UNSET_KEY = 0x53,
+ CMD_LED_STICKY_UNSET_ROW = 0x54,
+ CMD_LED_STICKY_UNSET_ALL = 0x55,
};
/* 1 ROW * 14 COLS * 4B (RGBX) = 56 + header prefix. */
diff --git a/keyboards/ano/config.h b/keyboards/ano/config.h
index 3c3ee05fbe..4fe23fb1c8 100644
--- a/keyboards/ano/config.h
+++ b/keyboards/ano/config.h
@@ -16,12 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8372
-#define PRODUCT_ID 0x0651
-#define DEVICE_VER 0x0000
-#define MANUFACTURER Sebastien Sauve-Hoover
-#define PRODUCT Ano Keyboard
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
@@ -29,7 +23,6 @@
#define MATRIX_ROW_PINS { A4, B14, B15, B9, B10, B11 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5, B6, B7, A5, A6, A7, A8, A15, A2, A1, A0, B8, B13 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { B12 }
#define ENCODERS_PAD_B { A14 }
diff --git a/keyboards/ano/info.json b/keyboards/ano/info.json
index 3eda03c74f..63c994c173 100644
--- a/keyboards/ano/info.json
+++ b/keyboards/ano/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ano",
+ "manufacturer": "Sebastien Sauve-Hoover",
"url": "https://github.com/sauvehoo",
"maintainer": "sauvehoo",
+ "usb": {
+ "vid": "0x8372",
+ "pid": "0x0651",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"Esc", "x":0.25, "y":0.25}, {"label":"F1", "x":1.5, "y":0.25}, {"label":"F2", "x":2.5, "y":0.25}, {"label":"F3", "x":3.5, "y":0.25}, {"label":"F4", "x":4.5, "y":0.25}, {"label":"F5", "x":5.75, "y":0.25}, {"label":"F6", "x":6.75, "y":0.25}, {"label":"F7", "x":7.75, "y":0.25}, {"label":"F8", "x":8.75, "y":0.25}, {"label":"F9", "x":10, "y":0.25}, {"label":"F10", "x":11, "y":0.25}, {"label":"F11", "x":12, "y":0.25}, {"label":"F12", "x":13, "y":0.25}, {"label":"Delete", "x":14.25, "y":0.25}, {"label":"Encoder", "x":18.25, "y":0.25}, {"label":"~", "x":0.25, "y":1.5}, {"label":"!", "x":1.25, "y":1.5}, {"label":"@", "x":2.25, "y":1.5}, {"label":"#", "x":3.25, "y":1.5}, {"label":"$", "x":4.25, "y":1.5}, {"label":"%", "x":5.25, "y":1.5}, {"label":"^", "x":6.25, "y":1.5}, {"label":"&", "x":7.25, "y":1.5}, {"label":"*", "x":8.25, "y":1.5}, {"label":"(", "x":9.25, "y":1.5}, {"label":")", "x":10.25, "y":1.5}, {"label":"_", "x":11.25, "y":1.5}, {"label":"+", "x":12.25, "y":1.5}, {"label":"Backspace", "x":13.25, "y":1.5, "w":2}, {"label":"Num Lock", "x":15.25, "y":1.5}, {"label":"/", "x":16.25, "y":1.5}, {"label":"*", "x":17.25, "y":1.5}, {"label":"*", "x":18.25, "y":1.5}, {"label":"Tab", "x":0.25, "y":2.5, "w":1.5}, {"label":"Q", "x":1.75, "y":2.5}, {"label":"W", "x":2.75, "y":2.5}, {"label":"E", "x":3.75, "y":2.5}, {"label":"R", "x":4.75, "y":2.5}, {"label":"T", "x":5.75, "y":2.5}, {"label":"Y", "x":6.75, "y":2.5}, {"label":"U", "x":7.75, "y":2.5}, {"label":"I", "x":8.75, "y":2.5}, {"label":"O", "x":9.75, "y":2.5}, {"label":"P", "x":10.75, "y":2.5}, {"label":"{", "x":11.75, "y":2.5}, {"label":"}", "x":12.75, "y":2.5}, {"label":"|", "x":13.75, "y":2.5, "w":1.5}, {"label":"7", "x":15.25, "y":2.5}, {"label":"8", "x":16.25, "y":2.5}, {"label":"9", "x":17.25, "y":2.5}, {"label":"-", "x":18.25, "y":2.5}, {"label":"Caps Lock", "x":0.25, "y":3.5, "w":1.75}, {"label":"A", "x":2, "y":3.5}, {"label":"S", "x":3, "y":3.5}, {"label":"D", "x":4, "y":3.5}, {"label":"F", "x":5, "y":3.5}, {"label":"G", "x":6, "y":3.5}, {"label":"H", "x":7, "y":3.5}, {"label":"J", "x":8, "y":3.5}, {"label":"K", "x":9, "y":3.5}, {"label":"L", "x":10, "y":3.5}, {"label":":", "x":11, "y":3.5}, {"label":"\"", "x":12, "y":3.5}, {"label":"Enter", "x":13, "y":3.5, "w":2.25}, {"label":"4", "x":15.25, "y":3.5}, {"label":"5", "x":16.25, "y":3.5}, {"label":"6", "x":17.25, "y":3.5}, {"label":"+", "x":18.25, "y":3.5}, {"label":"Shift", "x":0.25, "y":4.5, "w":2.25}, {"label":"Z", "x":2.5, "y":4.5}, {"label":"X", "x":3.5, "y":4.5}, {"label":"C", "x":4.5, "y":4.5}, {"label":"V", "x":5.5, "y":4.5}, {"label":"B", "x":6.5, "y":4.5}, {"label":"N", "x":7.5, "y":4.5}, {"label":"M", "x":8.5, "y":4.5}, {"label":"<", "x":9.5, "y":4.5}, {"label":">", "x":10.5, "y":4.5}, {"label":"?", "x":11.5, "y":4.5}, {"label":"Shift", "x":12.5, "y":4.5, "w":1.75}, {"label":"\u2191", "x":14.25, "y":4.5}, {"label":"1", "x":15.25, "y":4.5}, {"label":"2", "x":16.25, "y":4.5}, {"label":"3", "x":17.25, "y":4.5}, {"label":"Enter", "x":18.25, "y":4.5, "h":2}, {"label":"Ctrl", "x":0.25, "y":5.5, "w":1.25}, {"label":"Win", "x":1.5, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5, "w":6.25}, {"label":"Alt", "x":10.25, "y":5.5, "w":1.5}, {"label":"Ctrl", "x":11.75, "y":5.5, "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}, {"label":"0", "x":16.25, "y":5.5}, {"label":".", "x":17.25, "y":5.5}]
diff --git a/keyboards/ano/readme.md b/keyboards/ano/readme.md
index cc879d77b5..594d4bc69c 100644
--- a/keyboards/ano/readme.md
+++ b/keyboards/ano/readme.md
@@ -17,4 +17,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
Enter the bootloader in 2 ways:
* Physical reset button: Briefly press the button on the back of the PCB - or short reset and ground pins
-* Keycode in layout: Press the key mapped to `RESET`. By default this is done by pressing RALT to access second layer and pressing rotary encoder down. \ No newline at end of file
+* Keycode in layout: Press the key mapped to `QK_BOOT`. By default this is done by pressing RALT to access second layer and pressing rotary encoder down. \ No newline at end of file
diff --git a/keyboards/anomalykb/a65i/config.h b/keyboards/anomalykb/a65i/config.h
index b6ca4a8b84..a5a9dc5081 100644
--- a/keyboards/anomalykb/a65i/config.h
+++ b/keyboards/anomalykb/a65i/config.h
@@ -18,20 +18,12 @@ 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 0x4C47
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AnomalyKB
-#define PRODUCT AnomalyKB A65I
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS { B3, B2, B1, B0, B5 }
#define MATRIX_COL_PINS { D7, D6, D4, B4, B6, E6, F1, B7, C6, C7, D5, D3, D2, F0, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/anomalykb/a65i/info.json b/keyboards/anomalykb/a65i/info.json
index 2cd7e5a4e8..ae249db7ef 100644
--- a/keyboards/anomalykb/a65i/info.json
+++ b/keyboards/anomalykb/a65i/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "A65I",
+ "manufacturer": "AnomalyKB",
"maintainer": "Lfgberg",
+ "usb": {
+ "vid": "0x4C47",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_ansi": "LAYOUT_65_ansi_blocker",
"LAYOUT_ansi_splitbs": "LAYOUT_65_ansi_blocker_split_bs",
diff --git a/keyboards/anomalykb/a65i/keymaps/ansi_splitbs/keymap.c b/keyboards/anomalykb/a65i/keymaps/ansi_splitbs/keymap.c
index 6c7b1094b5..e9e3f7a32a 100644
--- a/keyboards/anomalykb/a65i/keymaps/ansi_splitbs/keymap.c
+++ b/keyboards/anomalykb/a65i/keymaps/ansi_splitbs/keymap.c
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[1] = LAYOUT_65_ansi_blocker_split_bs(
- 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,
+ QK_BOOT, KC_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,
diff --git a/keyboards/anomalykb/a65i/keymaps/iso_splitbs/keymap.c b/keyboards/anomalykb/a65i/keymaps/iso_splitbs/keymap.c
index 7e9b97d406..fe50f9394b 100644
--- a/keyboards/anomalykb/a65i/keymaps/iso_splitbs/keymap.c
+++ b/keyboards/anomalykb/a65i/keymaps/iso_splitbs/keymap.c
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[1] = LAYOUT_65_iso_blocker_split_bs(
- 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,
+ QK_BOOT, KC_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,
diff --git a/keyboards/aos/tkl/config.h b/keyboards/aos/tkl/config.h
index de40845507..5ddec8cda0 100644
--- a/keyboards/aos/tkl/config.h
+++ b/keyboards/aos/tkl/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x504B
-#define PRODUCT_ID 0x1000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ace of Spades
-#define PRODUCT Ace of Spades TKL
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
#define MATRIX_ROW_PINS { D3, D2, B7, F1, C7, D5 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, F4, F5, F6, F7, B6, B5, D7, B4, D6, F0, D1, C6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/aos/tkl/info.json b/keyboards/aos/tkl/info.json
index dff8b16439..32aaba37a1 100644
--- a/keyboards/aos/tkl/info.json
+++ b/keyboards/aos/tkl/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Ace of Spades TKL",
+ "manufacturer": "Ace of Spades",
"maintainer": "rys",
+ "usb": {
+ "vid": "0x504B",
+ "pid": "0x1000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_iso_wkl": {
"layout": [
diff --git a/keyboards/aos/tkl/keymaps/aholland909/keymap.c b/keyboards/aos/tkl/keymaps/aholland909/keymap.c
index 5e224811fc..511d1d44df 100644
--- a/keyboards/aos/tkl/keymaps/aholland909/keymap.c
+++ b/keyboards/aos/tkl/keymaps/aholland909/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_SPC, KC_RGUI, TG(1), KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_tkl_iso_wkl(
- RESET, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______, _______, _______,
+ QK_BOOT, 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_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, _______,
diff --git a/keyboards/aozora/config.h b/keyboards/aozora/config.h
index 67972a84b2..ac0f11b409 100644
--- a/keyboards/aozora/config.h
+++ b/keyboards/aozora/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xE86A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Salmon Cat Studio
-#define PRODUCT Aozora
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
diff --git a/keyboards/aozora/info.json b/keyboards/aozora/info.json
index 0f442cc12e..414565ce1c 100644
--- a/keyboards/aozora/info.json
+++ b/keyboards/aozora/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Aozora",
+ "manufacturer": "Salmon Cat Studio",
"url": "https://salmoncat.studio/pages/aozora-%E9%9D%92%E7%A9%BA-6-9-21-7-10-21",
"maintainer": "Phooood",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE86A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/aplyard/aplx6/info.json b/keyboards/aplyard/aplx6/info.json
index 2df8d9fb3a..0bd317c1a4 100644
--- a/keyboards/aplyard/aplx6/info.json
+++ b/keyboards/aplyard/aplx6/info.json
@@ -1,7 +1,11 @@
{
"keyboard_name": "Aplx6",
+ "manufacturer": "Aplyard",
"url": "",
"maintainer": "Aplyard",
+ "usb": {
+ "vid": "0xE0E0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/aplyard/aplx6/rev1/config.h b/keyboards/aplyard/aplx6/rev1/config.h
index 98a7381cc7..6aadc3efb2 100644
--- a/keyboards/aplyard/aplx6/rev1/config.h
+++ b/keyboards/aplyard/aplx6/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xE0E0
-#define PRODUCT_ID 0x0030
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Aplyard
-#define PRODUCT Aplx6
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pin-out */
#define MATRIX_ROW_PINS { E6, B3 }
#define MATRIX_COL_PINS { F7, B6, F4 }
-#define UNUSED_PINS
/* ws2812 RGB LED */
diff --git a/keyboards/aplyard/aplx6/rev1/info.json b/keyboards/aplyard/aplx6/rev1/info.json
new file mode 100644
index 0000000000..3eb12dda15
--- /dev/null
+++ b/keyboards/aplyard/aplx6/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x0030",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/aplyard/aplx6/rev2/config.h b/keyboards/aplyard/aplx6/rev2/config.h
index 2b30e67e09..922ab5f44a 100644
--- a/keyboards/aplyard/aplx6/rev2/config.h
+++ b/keyboards/aplyard/aplx6/rev2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xE0E0
-#define PRODUCT_ID 0x0040
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Aplyard
-#define PRODUCT Aplx6
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 9Key PCB default pin-out */
#define MATRIX_ROW_PINS { B4, B5 }
#define MATRIX_COL_PINS { C6, D7, E6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/aplyard/aplx6/rev2/info.json b/keyboards/aplyard/aplx6/rev2/info.json
new file mode 100644
index 0000000000..06fc50187a
--- /dev/null
+++ b/keyboards/aplyard/aplx6/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x0040",
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/arabica37/config.h b/keyboards/arabica37/config.h
deleted file mode 100644
index cfb6bf4ffc..0000000000
--- a/keyboards/arabica37/config.h
+++ /dev/null
@@ -1,21 +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
-
-#include "config_common.h"
diff --git a/keyboards/arabica37/info.json b/keyboards/arabica37/info.json
deleted file mode 100644
index 4aae9a6444..0000000000
--- a/keyboards/arabica37/info.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "keyboard_name": "arabica37 rev. 1",
- "url": "",
- "maintainer": "qmk",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"label":"Esc", "x":0.25, "y":0.75},
- {"label":"Q", "x":1.25, "y":0.75},
- {"label":"W", "x":2.25, "y":0.25},
- {"label":"E", "x":3.25, "y":0},
- {"label":"R", "x":4.25, "y":0.25},
- {"label":"T", "x":5.25, "y":0.5},
-
- {"label":"Y", "x":9, "y":0.5},
- {"label":"U", "x":10, "y":0.25},
- {"label":"I", "x":11, "y":0},
- {"label":"O", "x":12, "y":0.25},
- {"label":"P", "x":13, "y":0.75},
- {"label":"Backspace", "x":14, "y":0.75},
-
- {"label":"Ctrl", "x":0.25, "y":1.75},
- {"label":"A", "x":1.25, "y":1.75},
- {"label":"S", "x":2.25, "y":1.25},
- {"label":"D", "x":3.25, "y":1},
- {"label":"F", "x":4.25, "y":1.25},
- {"label":"G", "x":5.25, "y":1.5},
-
- {"label":"H", "x":9, "y":1.5},
- {"label":"J", "x":10, "y":1.25},
- {"label":"K", "x":11, "y":1},
- {"label":"L", "x":12, "y":1.25},
- {"label":";", "x":13, "y":1.75},
- {"label":"'", "x":14, "y":1.75},
-
- {"label":"Adjust", "x":0.25, "y":2.75},
- {"label":"Z", "x":1.25, "y":2.75},
- {"label":"X", "x":2.25, "y":2.25},
- {"label":"C", "x":3.25, "y":2},
- {"label":"V", "x":4.25, "y":2.25},
- {"label":"B", "x":5.25, "y":2.5},
-
- {"label":"N", "x":9, "y":2.5},
- {"label":"M", "x":10, "y":2.25},
- {"label":",", "x":11, "y":2},
- {"label":".", "x":12, "y":2.25},
- {"label":"/", "x":13, "y":2.75},
- {"label":"\\", "x":14, "y":2.75},
-
- {"label":"Shift", "x":0, "y":3.75, "w":2.25},
- {"label":"Lower", "x":4.375, "y":3.75, "w":1.5},
- {"label":"GUI", "x":5.875, "y":3.75, "w":1.25},
-
- {"label":"Alt", "x":8.125, "y":3.75, "w":1.25},
- {"label":"Raise", "x":9.375, "y":3.75, "w":1.5},
- {"label":"Shift", "x":13, "y":3.75, "w":2.25},
-
- {"label":"Space", "x":5.125, "y":4.75, "w":1.25},
- {"label":"Enter", "x":8.875, "y":4.75, "w":1.25}
- ]
- }
- }
-}
diff --git a/keyboards/arabica37/rev1/config.h b/keyboards/arabica37/rev1/config.h
index c0339a1a09..b3a9fd3f89 100644
--- a/keyboards/arabica37/rev1/config.h
+++ b/keyboards/arabica37/rev1/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CalciumNitride
-#define PRODUCT Arabica3/7
-
#define USE_SERIAL
#define SOFT_SERIAL_PIN D2
diff --git a/keyboards/arabica37/rev1/info.json b/keyboards/arabica37/rev1/info.json
new file mode 100644
index 0000000000..00d29b54a0
--- /dev/null
+++ b/keyboards/arabica37/rev1/info.json
@@ -0,0 +1,69 @@
+{
+ "keyboard_name": "Arabica3/7",
+ "manufacturer": "CalciumNitride",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Esc", "x":0.25, "y":0.75},
+ {"label":"Q", "x":1.25, "y":0.75},
+ {"label":"W", "x":2.25, "y":0.25},
+ {"label":"E", "x":3.25, "y":0},
+ {"label":"R", "x":4.25, "y":0.25},
+ {"label":"T", "x":5.25, "y":0.5},
+
+ {"label":"Y", "x":9, "y":0.5},
+ {"label":"U", "x":10, "y":0.25},
+ {"label":"I", "x":11, "y":0},
+ {"label":"O", "x":12, "y":0.25},
+ {"label":"P", "x":13, "y":0.75},
+ {"label":"Backspace", "x":14, "y":0.75},
+
+ {"label":"Ctrl", "x":0.25, "y":1.75},
+ {"label":"A", "x":1.25, "y":1.75},
+ {"label":"S", "x":2.25, "y":1.25},
+ {"label":"D", "x":3.25, "y":1},
+ {"label":"F", "x":4.25, "y":1.25},
+ {"label":"G", "x":5.25, "y":1.5},
+
+ {"label":"H", "x":9, "y":1.5},
+ {"label":"J", "x":10, "y":1.25},
+ {"label":"K", "x":11, "y":1},
+ {"label":"L", "x":12, "y":1.25},
+ {"label":";", "x":13, "y":1.75},
+ {"label":"'", "x":14, "y":1.75},
+
+ {"label":"Adjust", "x":0.25, "y":2.75},
+ {"label":"Z", "x":1.25, "y":2.75},
+ {"label":"X", "x":2.25, "y":2.25},
+ {"label":"C", "x":3.25, "y":2},
+ {"label":"V", "x":4.25, "y":2.25},
+ {"label":"B", "x":5.25, "y":2.5},
+
+ {"label":"N", "x":9, "y":2.5},
+ {"label":"M", "x":10, "y":2.25},
+ {"label":",", "x":11, "y":2},
+ {"label":".", "x":12, "y":2.25},
+ {"label":"/", "x":13, "y":2.75},
+ {"label":"\\", "x":14, "y":2.75},
+
+ {"label":"Shift", "x":0, "y":3.75, "w":2.25},
+ {"label":"Lower", "x":4.375, "y":3.75, "w":1.5},
+ {"label":"GUI", "x":5.875, "y":3.75, "w":1.25},
+
+ {"label":"Alt", "x":8.125, "y":3.75, "w":1.25},
+ {"label":"Raise", "x":9.375, "y":3.75, "w":1.5},
+ {"label":"Shift", "x":13, "y":3.75, "w":2.25},
+
+ {"label":"Space", "x":5.125, "y":4.75, "w":1.25},
+ {"label":"Enter", "x":8.875, "y":4.75, "w":1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/ares/config.h b/keyboards/ares/config.h
index 53a3bfe13a..6568cdf69d 100644
--- a/keyboards/ares/config.h
+++ b/keyboards/ares/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x422D
-#define DEVICE_VER 0x0200
-#define MANUFACTURER LSJ
-#define PRODUCT Ares
-
#define RGBLED_NUM 16
#define MATRIX_ROWS 5
@@ -32,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
-#define UNUSED_PINS {}
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/ares/info.json b/keyboards/ares/info.json
index eeff16b7a9..67c6fe3bc7 100644
--- a/keyboards/ares/info.json
+++ b/keyboards/ares/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "LSJ Ares",
+ "keyboard_name": "Ares",
+ "manufacturer": "LSJ",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x422D",
+ "device_version": "2.0.0"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
diff --git a/keyboards/arisu/config.h b/keyboards/arisu/config.h
index 8e2da440c2..f499c29de3 100644
--- a/keyboards/arisu/config.h
+++ b/keyboards/arisu/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFA7E
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Fate
-#define PRODUCT arisu
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/arisu/info.json b/keyboards/arisu/info.json
index c74817aefd..bb7ce228c4 100644
--- a/keyboards/arisu/info.json
+++ b/keyboards/arisu/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Arisu",
+ "manufacturer": "Fate",
"url": "https://github.com/FateNozomi/arisu-pcb",
"maintainer": "FateNozomi",
+ "usb": {
+ "vid": "0xFA7E",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/arisu/keymaps/fate/keymap.c b/keyboards/arisu/keymaps/fate/keymap.c
index f737b4d19a..02f15febe1 100644
--- a/keyboards/arisu/keymaps/fate/keymap.c
+++ b/keyboards/arisu/keymaps/fate/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, _______,
- _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, KC_VOLU,
+ _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, KC_VOLU,
_______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
)
};
diff --git a/keyboards/arisu/keymaps/kresnak/keymap.c b/keyboards/arisu/keymaps/kresnak/keymap.c
index 0a4b88367d..05a0e6ba4c 100644
--- a/keyboards/arisu/keymaps/kresnak/keymap.c
+++ b/keyboards/arisu/keymaps/kresnak/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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_DEL, KC_HOME,
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, KC_END,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, 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_BSLS, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/arisu/keymaps/stanrc85/keymap.c b/keyboards/arisu/keymaps/stanrc85/keymap.c
index a8430b9a33..6874d584dc 100644
--- a/keyboards/arisu/keymaps/stanrc85/keymap.c
+++ b/keyboards/arisu/keymaps/stanrc85/keymap.c
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN2_60] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, TG(_DEFAULT)
diff --git a/keyboards/arrayperipherals/1x4p1/config.h b/keyboards/arrayperipherals/1x4p1/config.h
index 44559be3ed..5fd99ef30f 100644
--- a/keyboards/arrayperipherals/1x4p1/config.h
+++ b/keyboards/arrayperipherals/1x4p1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4152 // "AR"
-#define PRODUCT_ID 0x4F46 // "OF"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Array Peripherals
-#define PRODUCT [1x4] + 1 Macropad
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 5
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIRECT_PINS { \
{ C7, B7, D6, F5, F7} \
}
-#define UNUSED_PINS
/* rotary encoder*/
#define ENCODERS_PAD_A {F0}
diff --git a/keyboards/arrayperipherals/1x4p1/info.json b/keyboards/arrayperipherals/1x4p1/info.json
index d962cb586b..6a2e1efd1f 100644
--- a/keyboards/arrayperipherals/1x4p1/info.json
+++ b/keyboards/arrayperipherals/1x4p1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "[1 x 4] + 1 Macropad",
+ "keyboard_name": "[1x4] + 1 Macropad",
+ "manufacturer": "Array Peripherals",
"url": "https://github.com/daviddoan",
"maintainer": "David Doan",
+ "usb": {
+ "vid": "0x4152",
+ "pid": "0x4F46",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_1x5": {
"layout": [
diff --git a/keyboards/ash1800/config.h b/keyboards/ash1800/config.h
index 7b55f31bd3..cd74024125 100644
--- a/keyboards/ash1800/config.h
+++ b/keyboards/ash1800/config.h
@@ -19,13 +19,6 @@ 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 0x1800
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Hasyim Ashari
-#define PRODUCT ASH-1800
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6, B6, B5, B4, D7, D0, D1, D2, D3, D5, D4, D6 }
#define MATRIX_COL_PINS { F1, F4, F5, F6, B0, B2, B1, B3, B7, C7 }
-#define UNUSED_PINS
#define NUM_LOCK_LED_PIN E6
#define CAPS_LOCK_LED_PIN F0
diff --git a/keyboards/ash1800/info.json b/keyboards/ash1800/info.json
index 632544c772..3c7272d884 100644
--- a/keyboards/ash1800/info.json
+++ b/keyboards/ash1800/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "ASH-1800",
+ "manufacturer": "Hasyim Ashari",
"maintainer": "angelbirth",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1800",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ash_xiix/config.h b/keyboards/ash_xiix/config.h
index bcfdaeef7c..2006f2de30 100644
--- a/keyboards/ash_xiix/config.h
+++ b/keyboards/ash_xiix/config.h
@@ -16,13 +16,6 @@ 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 0x14BC
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ASH
-#define PRODUCT XIIX
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 10
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6, B6, B5, B4, D7, D0, D1, D2, D3, D5, D4, D6 }
#define MATRIX_COL_PINS { F1, F4, F5, F6, B0, B2, B1, B3, B7, C7 }
-#define UNUSED_PINS
#define NUM_LOCK_LED_PIN E6
#define CAPS_LOCK_LED_PIN F0
diff --git a/keyboards/ash_xiix/info.json b/keyboards/ash_xiix/info.json
index b91d2e14b1..05b926cda0 100644
--- a/keyboards/ash_xiix/info.json
+++ b/keyboards/ash_xiix/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ASH-XIIX",
+ "keyboard_name": "XIIX",
+ "manufacturer": "ASH",
"url": "config.qmk.fm",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x14BC",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ashpil/modelm_usbc/config.h b/keyboards/ashpil/modelm_usbc/config.h
index 8572171527..a932d62946 100644
--- a/keyboards/ashpil/modelm_usbc/config.h
+++ b/keyboards/ashpil/modelm_usbc/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER ashpil
-#define PRODUCT IBM Model M 101/102
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C7, C6, C5, C4, C3, C2, C1, C0 }
#define MATRIX_COL_PINS { E6, E7, F0, F1, F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/ashpil/modelm_usbc/info.json b/keyboards/ashpil/modelm_usbc/info.json
index 985141afbb..9838025ce5 100644
--- a/keyboards/ashpil/modelm_usbc/info.json
+++ b/keyboards/ashpil/modelm_usbc/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "IBM Model M 101 ANSI/102 ISO",
+ "keyboard_name": "IBM Model M 101/102",
+ "manufacturer": "ashpil",
"url": "https://github.com/ashpil/qmk_firmware/tree/master/keyboards/ashpil/modelm_usbc",
"maintainer": "ashpil",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_fullsize_iso_wkl": {
"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":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.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":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.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":"~", "x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.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":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}]
diff --git a/keyboards/at_at/660m/config.h b/keyboards/at_at/660m/config.h
index 5a53e8c38a..cdb9b81967 100644
--- a/keyboards/at_at/660m/config.h
+++ b/keyboards/at_at/660m/config.h
@@ -17,19 +17,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* LSE clock */
#define STM32_LSECLK 32768
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA22A
-#define PRODUCT_ID 0x6600
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AT-AT
-#define PRODUCT 660M
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/at_at/660m/info.json b/keyboards/at_at/660m/info.json
index e5282485fb..1558e2d058 100644
--- a/keyboards/at_at/660m/info.json
+++ b/keyboards/at_at/660m/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "AT-AT 660M",
+ "keyboard_name": "660M",
+ "manufacturer": "AT-AT",
"url": "",
"maintainer": "adrientetar",
+ "usb": {
+ "vid": "0xA22A",
+ "pid": "0x6600",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/atlantis/ak81_ve/config.h b/keyboards/atlantis/ak81_ve/config.h
index 1b6050f9ac..e097c47cb0 100644
--- a/keyboards/atlantis/ak81_ve/config.h
+++ b/keyboards/atlantis/ak81_ve/config.h
@@ -18,13 +18,6 @@
#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
@@ -32,7 +25,6 @@
/* 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 { E6 }
diff --git a/keyboards/atlantis/ak81_ve/info.json b/keyboards/atlantis/ak81_ve/info.json
index 8d4a8ebf59..95011de492 100644
--- a/keyboards/atlantis/ak81_ve/info.json
+++ b/keyboards/atlantis/ak81_ve/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "AK81_VE",
+ "manufacturer": "Atlantis",
"maintainer": "fOmey",
+ "usb": {
+ "vid": "0x416B",
+ "pid": "0x0081",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/atlantis/ak81_ve/readme.md b/keyboards/atlantis/ak81_ve/readme.md
index d9a6f9627c..ab1fee5a48 100644
--- a/keyboards/atlantis/ak81_ve/readme.md
+++ b/keyboards/atlantis/ak81_ve/readme.md
@@ -17,7 +17,7 @@ Make example for this keyboard (after setting up your build environment):
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/atlas_65/config.h b/keyboards/atlas_65/config.h
index 86613cb193..412b474193 100644
--- a/keyboards/atlas_65/config.h
+++ b/keyboards/atlas_65/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -41,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/atlas_65/info.json b/keyboards/atlas_65/info.json
index d6c0eedb00..266e71118a 100644
--- a/keyboards/atlas_65/info.json
+++ b/keyboards/atlas_65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "atlas-65",
+ "keyboard_name": "atlas_65",
+ "manufacturer": "Joshua Nguyen",
"url": "https://github.com/ryanstevensmith/atlas-65",
"maintainer": "ryanstevensmith, Joshua Nguyen",
+ "usb": {
+ "vid": "0x6565",
+ "pid": "0x1000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/atlas_65/readme.md b/keyboards/atlas_65/readme.md
index 40eebba6f4..398024cbf0 100644
--- a/keyboards/atlas_65/readme.md
+++ b/keyboards/atlas_65/readme.md
@@ -23,4 +23,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/atomic/config.h b/keyboards/atomic/config.h
index 095cac906c..ed839dab04 100644
--- a/keyboards/atomic/config.h
+++ b/keyboards/atomic/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER OLKB
-#define PRODUCT Atomic
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D5, B5, B6, C6 }
#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, D3, D2, D1 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B7
diff --git a/keyboards/atomic/info.json b/keyboards/atomic/info.json
index d55ba4b75a..bd0a2c2f99 100644
--- a/keyboards/atomic/info.json
+++ b/keyboards/atomic/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Atomic",
+ "manufacturer": "OLKB",
"maintainer": "jackhumbert",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_grid": "LAYOUT_ortho_5x15"
},
diff --git a/keyboards/atomic/keymaps/pvc/keymap.c b/keyboards/atomic/keymaps/pvc/keymap.c
index 9ed79899d3..d4eee803ac 100644
--- a/keyboards/atomic/keymaps/pvc/keymap.c
+++ b/keyboards/atomic/keymaps/pvc/keymap.c
@@ -217,7 +217,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX | XXXXXX |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- | XXXXXX | QWERTY | XXXXXX | XXXXXX | BACKLT | RESET | XXXXXX | MOUSE | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX | VOICE+ | XXXXXX |
+ | XXXXXX | QWERTY | XXXXXX | XXXXXX | BACKLT | QK_BOOT | XXXXXX | MOUSE | XXXXXX | XXXXXX | XXXXXX | XXXXXX . XXXXXX | VOICE+ | XXXXXX |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| XXXXXX | XXXXXX | XXXXXX | XXXXXX | UPPER | XXXXXX . XXXXXX | LOWER | XXXXXX | XXXXXX | XXXXXX | XXXXXX | TEMPO- | VOICE- | TEMPO+ |
'--------------------------------------------------------------------------------------------------------------------------------------'
@@ -226,7 +226,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX, M_HELP1, M_HELP2, M_HELP3, M_HELP4, M_HELP5, M_HELP6, M_HELP7, M_HELP8, M_HELP9, XXXXXXX, MU_TOG , AU_TOG , XXXXXXX, XXXXXXX,
XXXXXXX, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, M_QWRTY, XXXXXXX, XXXXXXX, M_BACKL, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MUV_IN , XXXXXXX,
+ XXXXXXX, M_QWRTY, XXXXXXX, XXXXXXX, M_BACKL, QK_BOOT, XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MUV_IN , XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TMPO_DN, MUV_DE , TMPO_UP
),
};
diff --git a/keyboards/atreus/astar/config.h b/keyboards/atreus/astar/config.h
index a925c6fb1c..34df07559a 100644
--- a/keyboards/atreus/astar/config.h
+++ b/keyboards/atreus/astar/config.h
@@ -34,7 +34,6 @@
#else
#define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 }
#endif
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/atreus/astar_mirrored/config.h b/keyboards/atreus/astar_mirrored/config.h
index 75155044de..4b5bf9d887 100644
--- a/keyboards/atreus/astar_mirrored/config.h
+++ b/keyboards/atreus/astar_mirrored/config.h
@@ -32,7 +32,6 @@
#define MATRIX_ROW_PINS { D0, D1, D3, D2 }
#define MATRIX_COL_PINS { B7, D6, F7, F6, B6, D4, E6, B4, B5, C6, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/atreus/config.h b/keyboards/atreus/config.h
index ae3eb4f232..b7bc5e385a 100644
--- a/keyboards/atreus/config.h
+++ b/keyboards/atreus/config.h
@@ -18,14 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-
-#define VENDOR_ID 0x1209
-#define PRODUCT_ID 0xA1E5
-#define DEVICE_VER 0x0008
-#define MANUFACTURER Technomancy
-#define PRODUCT Atreus
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
diff --git a/keyboards/atreus/f103/config.h b/keyboards/atreus/f103/config.h
index e16c9ee930..d42a057ab8 100644
--- a/keyboards/atreus/f103/config.h
+++ b/keyboards/atreus/f103/config.h
@@ -32,7 +32,6 @@
/* key matrix pins */
#define MATRIX_COL_PINS { B10, B1, B0, A7, A6, B5, B4, B3, A15, A10, A9 }
#define MATRIX_ROW_PINS { A5, A4, A3, A2 }
-#define UNUSED_PINS {B12, B13, B14, B15, A8, B6, B7, B8, B9, A1, A0, C15, C14, C13}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/atreus/feather/config.h b/keyboards/atreus/feather/config.h
index 72c9cd716b..ab0640681d 100644
--- a/keyboards/atreus/feather/config.h
+++ b/keyboards/atreus/feather/config.h
@@ -32,7 +32,6 @@
// #define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 }
#define MATRIX_ROW_PINS { B7, D6, C7, F5 }
#define MATRIX_COL_PINS { D7, B5, D1, D0, C6, B6, F0, D2, D3, F4, F1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/atreus/info.json b/keyboards/atreus/info.json
index a20cfda051..724fcca78d 100644
--- a/keyboards/atreus/info.json
+++ b/keyboards/atreus/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Atreus",
+ "manufacturer": "Technomancy",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0xA1E5",
+ "device_version": "0.0.8"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0.6}, {"x":1, "y":0.35}, {"x":2, "y":0}, {"x":3, "y":0.35}, {"x":4, "y":0.7}, {"x":8, "y":0.7}, {"x":9, "y":0.35}, {"x":10, "y":0}, {"x":11, "y":0.35}, {"x":12, "y":0.6}, {"x":0, "y":1.6}, {"x":1, "y":1.35}, {"x":2, "y":1}, {"x":3, "y":1.35}, {"x":4, "y":1.7}, {"x":8, "y":1.7}, {"x":9, "y":1.35}, {"x":10, "y":1}, {"x":11, "y":1.35}, {"x":12, "y":1.6}, {"x":0, "y":2.6}, {"x":1, "y":2.35}, {"x":2, "y":2}, {"x":3, "y":2.35}, {"x":4, "y":2.7}, {"x":8, "y":2.7}, {"x":9, "y":2.35}, {"x":10, "y":2}, {"x":11, "y":2.35}, {"x":12, "y":2.6}, {"x":0, "y":3.6}, {"x":1, "y":3.35}, {"x":2, "y":3}, {"x":3, "y":3.35}, {"x":4, "y":3.7}, {"x":5, "y":2.95, "h":1.5}, {"x":7, "y":2.95, "h":1.5}, {"x":8, "y":3.7}, {"x":9, "y":3.35}, {"x":10, "y":3}, {"x":11, "y":3.35}, {"x":12, "y":3.6}]
diff --git a/keyboards/atreus/keymaps/clash/keymap.c b/keyboards/atreus/keymaps/clash/keymap.c
index 3a8b5bf479..9a1876ba74 100644
--- a/keyboards/atreus/keymaps/clash/keymap.c
+++ b/keyboards/atreus/keymaps/clash/keymap.c
@@ -36,6 +36,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LW] = LAYOUT( /* [> LOWER <] */
KC_INS, KC_HOME, KC_MS_U, KC_END, KC_PGUP, KC_BTN1, KC_F7, KC_F8, KC_F9, KC_F10 ,
OUT_USB, KC_MS_L, KC_MS_D, KC_MS_R, KC_PGDN, KC_BTN2, KC_F4, KC_F5, KC_F6, KC_F11 ,
- OUT_BT, KC_VOLU, KC_NO, KC_NO, RESET, KC_BTN3, KC_F1, KC_F2, KC_F3, KC_F12 ,
+ OUT_BT, KC_VOLU, KC_NO, KC_NO, QK_BOOT, KC_BTN3, KC_F1, KC_F2, KC_F3, KC_F12 ,
OUT_AUTO, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, TO(_QW), KC_PSCR, KC_SLCK, KC_PAUS )
};
diff --git a/keyboards/atreus/keymaps/classic/keymap.c b/keyboards/atreus/keymaps/classic/keymap.c
index 5837bcfe74..2777edd8e5 100644
--- a/keyboards/atreus/keymaps/classic/keymap.c
+++ b/keyboards/atreus/keymaps/classic/keymap.c
@@ -27,6 +27,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 ,
KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_DOWN, 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_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, DF(_QW), KC_TRNS, KC_TRNS, RESET
+ KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, DF(_QW), KC_TRNS, KC_TRNS, QK_BOOT
),
};
diff --git a/keyboards/atreus/keymaps/dvorak_42_key/keymap.c b/keyboards/atreus/keymaps/dvorak_42_key/keymap.c
index eff7c8d577..50ff84388f 100644
--- a/keyboards/atreus/keymaps/dvorak_42_key/keymap.c
+++ b/keyboards/atreus/keymaps/dvorak_42_key/keymap.c
@@ -127,7 +127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MEH(KC_G), MEH(KC_H),MEH(KC_I), MEH(KC_J), MEH(KC_K), KC_TRNS, RSFT(KC_HOME), RSFT(KC_UP), RSFT(KC_END), RSFT(KC_PGUP),
MEH(KC_L), MEH(KC_M),MEH(KC_N), MEH(KC_O), MEH(KC_P), RSFT(RCTL(KC_LEFT)), RSFT(KC_LEFT), RSFT(KC_DOWN), RSFT(KC_RIGHT), RSFT(RCTL(KC_RIGHT)),
MEH(KC_Q), MEH(KC_R),MEH(KC_S), MEH(KC_T), MEH(KC_U), KC_TRNS, RCTL(KC_C), RCTL(KC_X), RCTL(KC_V), RSFT(KC_PGDN),
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENTER, KC_SPACE, KC_BSPC, RCTL(KC_BSPC), KC_DELETE, LCTL(KC_DELETE)
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENTER, KC_SPACE, KC_BSPC, RCTL(KC_BSPC), KC_DELETE, LCTL(KC_DELETE)
),
[COMBINED] = LAYOUT(
diff --git a/keyboards/atreus/keymaps/erlandsona/keymap.c b/keyboards/atreus/keymaps/erlandsona/keymap.c
index c261e892d4..75491e6869 100644
--- a/keyboards/atreus/keymaps/erlandsona/keymap.c
+++ b/keyboards/atreus/keymaps/erlandsona/keymap.c
@@ -27,6 +27,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_SLCK, KC_PAUSE, KC_F11 , KC_F10 , KC_F9 , KC_F8 , KC_F7 , KC_F6 , KC_F5 , KC_F4,
KC_VOLD, KC_ACL0 , KC_ACL1, KC_ACL2, KC_VOLU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_F3,
KC_MUTE, KC_MPRV , KC_MPLY, KC_MNXT, KC_MUTE, KC_WH_R, KC_WH_U, KC_WH_D, KC_WH_L, KC_F2,
- _______, _______ , _______, _______, _______, _______, _______, KC_BTN1, TO(BASE), RESET , KC_F12 , KC_F1
+ _______, _______ , _______, _______, _______, _______, _______, KC_BTN1, TO(BASE), QK_BOOT, KC_F12 , KC_F1
),
};
diff --git a/keyboards/atreus/keymaps/gerb/keymap.c b/keyboards/atreus/keymaps/gerb/keymap.c
index f6ff7330db..e122c5f12f 100644
--- a/keyboards/atreus/keymaps/gerb/keymap.c
+++ b/keyboards/atreus/keymaps/gerb/keymap.c
@@ -42,6 +42,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, DF(_QW), KC_F7, KC_F8, KC_F9, KC_F10,
KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, DF(_CM), KC_F6, KC_F5, KC_F6, KC_F11,
KC_BTN4, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, DF(_DV), KC_F1, KC_F2, KC_F3, KC_F12,
- KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_RCTL, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, RESET
+ KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LALT, KC_RCTL, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
),
};
diff --git a/keyboards/atreus/keymaps/henxing/keymap.c b/keyboards/atreus/keymaps/henxing/keymap.c
index 51a46fa373..8a792dbc42 100644
--- a/keyboards/atreus/keymaps/henxing/keymap.c
+++ b/keyboards/atreus/keymaps/henxing/keymap.c
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_RAISE] = LAYOUT( \
KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10, \
KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11, \
- KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12, \
+ KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12, \
KC_NO, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, QWERTY, KC_PSCR, KC_SLCK, KC_PAUS \
),
};
diff --git a/keyboards/atreus/keymaps/jeremy/keymap.c b/keyboards/atreus/keymaps/jeremy/keymap.c
index de2bedaa7f..7ca35b3d9a 100644
--- a/keyboards/atreus/keymaps/jeremy/keymap.c
+++ b/keyboards/atreus/keymaps/jeremy/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_BSPC, KC_UP, KC_DEL, KC_PGUP, KC_TRNS, KM_SAVE, KC_TRNS, KM_OPEN, KC_TRNS,
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KM_UNDO, KC_LALT, KC_TRNS, KC_LGUI, KC_TRNS,
KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_MPLY, KM_REDO, KM_CLSE, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TAB, KM_COPY, KM_CUT, KM_PAST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TAB, KM_COPY, KM_CUT, KM_PAST, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[SYMB] = LAYOUT(
KC_BSLS, KC_EXLM, KC_LABK, KC_RABK, CM_COLN, KC_UNDS, KC_DLR, KC_QUES, KC_TRNS, KC_PERC,
diff --git a/keyboards/atreus/keymaps/kejadlen/config.h b/keyboards/atreus/keymaps/kejadlen/config.h
index 03a48dcb4b..437bfa326e 100644
--- a/keyboards/atreus/keymaps/kejadlen/config.h
+++ b/keyboards/atreus/keymaps/kejadlen/config.h
@@ -4,7 +4,6 @@
#undef MATRIX_COL_PINS
#define MATRIX_ROW_PINS { D0, D1, D2, D3 }
#define MATRIX_COL_PINS { F6, F5, F4, F1, F0, F7, B0, B1, B2, B3, B7 }
-/* #define UNUSED_PINS */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/atreus/keymaps/kejadlen/keymap.c b/keyboards/atreus/keymaps/kejadlen/keymap.c
index 3f6d01a594..45de7824c2 100644
--- a/keyboards/atreus/keymaps/kejadlen/keymap.c
+++ b/keyboards/atreus/keymaps/kejadlen/keymap.c
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[ETC] = LAYOUT(
- RESET, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_VOLU, KC_F7, KC_F8, KC_F9, KC_HOME,
+ QK_BOOT, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_VOLU, KC_F7, KC_F8, KC_F9, KC_HOME,
LT(ETC,KC_A), KC_NO, KC_NO, KC_NO, KC_PGDN, KC_VOLD, KC_F4, KC_F5, KC_F6, KC_END,
KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, KC_MUTE, KC_F1, KC_F2, KC_F3, KC_INS,
KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO
diff --git a/keyboards/atreus/keymaps/khitsule/keymap.c b/keyboards/atreus/keymaps/khitsule/keymap.c
index 1190efa3cb..79f4da0b81 100644
--- a/keyboards/atreus/keymaps/khitsule/keymap.c
+++ b/keyboards/atreus/keymaps/khitsule/keymap.c
@@ -45,6 +45,6 @@ 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TSKMGR, KC_TRNS, KC_TRNS, KC_F11, KC_F12,
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
+ QK_BOOT, 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/atreus/keymaps/manna-harbour_miryoku/config.h b/keyboards/atreus/keymaps/manna-harbour_miryoku/config.h
index 6bb1a9a7f3..30a066fa5b 100644
--- a/keyboards/atreus/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/atreus/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/atreus/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/atreus/keymaps/nojjan/config.h b/keyboards/atreus/keymaps/nojjan/config.h
index 90b7c4a6c6..bc5c25d416 100644
--- a/keyboards/atreus/keymaps/nojjan/config.h
+++ b/keyboards/atreus/keymaps/nojjan/config.h
@@ -2,9 +2,7 @@
#undef MATRIX_ROW_PINS
#undef MATRIX_COL_PINS
-#undef UNUSED_PINS
// Pin configuration for falbatech atreus
#define MATRIX_ROW_PINS { D0, D1, D3, D2 }
#define MATRIX_COL_PINS { D7, C6, B5, B4, E6, D4, B6, F6, F7, D6, B7 }
-#define UNUSED_PINS
diff --git a/keyboards/atreus/keymaps/nojjan/keymap.c b/keyboards/atreus/keymaps/nojjan/keymap.c
index 42204b13e0..f7b8f0e51d 100644
--- a/keyboards/atreus/keymaps/nojjan/keymap.c
+++ b/keyboards/atreus/keymaps/nojjan/keymap.c
@@ -37,6 +37,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LW] = LAYOUT( /* [> LOWER <] */
KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 ,
KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 ,
- KC_NO, KC_VOLU, KC_NO, KC_NO, RESET, KC_NO, KC_F1, KC_F2, KC_F3, KC_F12 ,
+ KC_NO, KC_VOLU, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_F1, KC_F2, KC_F3, KC_F12 ,
KC_NO, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, TO(_QW), KC_PSCR, KC_SLCK, KC_PAUS )
};
diff --git a/keyboards/atreus/keymaps/ptillemans/keymap.c b/keyboards/atreus/keymaps/ptillemans/keymap.c
index ea4edeca7d..9328d8ce53 100644
--- a/keyboards/atreus/keymaps/ptillemans/keymap.c
+++ b/keyboards/atreus/keymaps/ptillemans/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LW] = LAYOUT( /* [> LOWER <] */
KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 ,
KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 ,
- KC_NO, KC_VOLU, KC_NO, KC_NO, RESET, KC_TILD, KC_F1, KC_F2, KC_F3, KC_F12 ,
+ KC_NO, KC_VOLU, KC_NO, KC_NO, QK_BOOT, KC_TILD, KC_F1, KC_F2, KC_F3, KC_F12 ,
KC_NO, KC_VOLD, _______, _______, KC_MNXT, _______, _______, _______, TO(_QW), KC_PSCR, KC_SLCK, KC_MPLY
)
};
diff --git a/keyboards/atreus/keymaps/quartz64/keymap.c b/keyboards/atreus/keymaps/quartz64/keymap.c
index c62011e4b3..eb882bce31 100644
--- a/keyboards/atreus/keymaps/quartz64/keymap.c
+++ b/keyboards/atreus/keymaps/quartz64/keymap.c
@@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|------+------+------+------+------|------.,------|------+------+------+------+------|
| trns |r_tog | r_hue| r_sat| r_val| || | + | 1 | 2 | 3 | trns |
|------+------+------+------+------| || |------+------+------+------+------|
- | trns | Esc |RESET |capslk| trns |------'`------| trns | 0 | - | += | trns |
+ | trns | Esc |QK_BOOT |capslk| trns |------'`------| trns | 0 | - | += | trns |
`----------------------------------' `----------------------------------'
*/
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_PSLS, KC_7, KC_8, KC_9, KC_PDOT,
_______, KC_CIRC, KC_AMPR, KC_ASTR, PWD3, KC_PAST, KC_4, KC_5, KC_6, _______,
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_PPLS, KC_1, KC_2, KC_3, _______,
- _______, KC_ESC , RESET, KC_CAPS, _______, _______, _______, _______, KC_0, KC_PMNS, KC_EQL, _______
+ _______, KC_ESC , QK_BOOT, KC_CAPS, _______, _______, _______, _______, KC_0, KC_PMNS, KC_EQL, _______
)
};
diff --git a/keyboards/atreus/keymaps/replicaJunction/keymap.c b/keyboards/atreus/keymaps/replicaJunction/keymap.c
index 32cc95d2fd..fbefb52df6 100644
--- a/keyboards/atreus/keymaps/replicaJunction/keymap.c
+++ b/keyboards/atreus/keymaps/replicaJunction/keymap.c
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[L_FN] = LAYOUT(
- RESET, _______,_______,_______,_______, KC_VOLU,KC_F9, KC_F10, KC_F11, KC_F12,
+ QK_BOOT, _______,_______,_______,_______, KC_VOLU,KC_F9, KC_F10, KC_F11, KC_F12,
MS_JIGL,_______,_______,_______,_______, KC_MUTE,KC_F5, KC_F6, KC_F7, KC_F8,
_______,K_SECR1,K_SECR2,K_SECR3,K_SECR4, KC_VOLD,KC_F1, KC_F2, KC_F3, KC_F4,
DF_TYPE,DF_GAME,_______,_______,_______,KC_LCTL,KC_LALT,_______,_______,_______,_______,ooooooo
diff --git a/keyboards/atreus/keymaps/talljoe/config.h b/keyboards/atreus/keymaps/talljoe/config.h
index 64d5b58943..71c7864b7c 100644
--- a/keyboards/atreus/keymaps/talljoe/config.h
+++ b/keyboards/atreus/keymaps/talljoe/config.h
@@ -46,8 +46,8 @@
)
#define TEMPLATE_RESET LAYOUT( \
- RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 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 , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
)
diff --git a/keyboards/atreus/keymaps/workman/keymap.c b/keyboards/atreus/keymaps/workman/keymap.c
index aef2c59590..3ca07c325a 100644
--- a/keyboards/atreus/keymaps/workman/keymap.c
+++ b/keyboards/atreus/keymaps/workman/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_VOLU, KC_F7, KC_F8, KC_F9, KC_F10,
KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_VOLD, KC_F4, KC_F5, KC_F6, KC_F11,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_F1, KC_F2, KC_F3, KC_F12,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EN_DASH, KC_TRNS, KC_TRNS, DIAERESIS, RESET )
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EN_DASH, KC_TRNS, KC_TRNS, DIAERESIS, QK_BOOT )
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/atreus/keymaps/xk/keymap.c b/keyboards/atreus/keymaps/xk/keymap.c
index a03dee9ca9..8264618004 100644
--- a/keyboards/atreus/keymaps/xk/keymap.c
+++ b/keyboards/atreus/keymaps/xk/keymap.c
@@ -240,7 +240,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//one_ring=2__rule__them-all
[_GRVTABL] = LAYOUT( \
- LALT(KC_PSCR), M(4), KC_PWR, KC_POWER, RESET, RESET, KC_R, KC_E, KC_I, LALT(KC_PSCR), \
+ LALT(KC_PSCR), M(4), KC_PWR, KC_POWER, QK_BOOT, QK_BOOT, KC_R, KC_E, KC_I, LALT(KC_PSCR), \
TG(_NINEKEY), TG(_FNCTION), TG(_MLAYER), TG(_IKASHFT), TG(_IKAPILA), TG(_IKAPILA), KC_S, KC_U, KC_B, TG(_NINEKEY), \
M(3), TG(_GAMEQWERTY), XXXXXXX, XXXXXXX, XXXXXXX, KC_MYCM, KC_CALC, XXXXXXX, TG(_GAMEQWERTY), M(3), \
TT(_GRVTABL), TG(_FNCTION), TG(_MLAYER), TG(_IKASHFT), TG(_IKAPILA), _______, _______, TG(_IKAPILA), TG(_IKASHFT), TG(_MLAYER), TG(_MLAYER), TG(_NINEKEY) \
diff --git a/keyboards/atreus/keymaps/xyverz/keymap.c b/keyboards/atreus/keymaps/xyverz/keymap.c
index 3f428058eb..98dface93c 100644
--- a/keyboards/atreus/keymaps/xyverz/keymap.c
+++ b/keyboards/atreus/keymaps/xyverz/keymap.c
@@ -152,13 +152,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|------+------+------+------+------|------.,------|------+------+------+------+------|
| |QWERTY|COLEMK|DVORAK|DVORMC| || | | | | | |
|------+------+------+------+------| || |------+------+------+------+------|
- | | | | | |------'`------| | | | | RESET|
+ | | | | | |------'`------| | | | | QK_BOOT|
`----------------------------------' `----------------------------------'*/
[_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_PSCR, KC_SLCK, KC_PAUS, KC_F12 ,
_______, QWERTY, COLEMAK, DVORAK, DVORMAC, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT
),
};
diff --git a/keyboards/atreus/keymaps/yttyx/keymap.c b/keyboards/atreus/keymaps/yttyx/keymap.c
index dad36cad92..ad34182212 100644
--- a/keyboards/atreus/keymaps/yttyx/keymap.c
+++ b/keyboards/atreus/keymaps/yttyx/keymap.c
@@ -140,7 +140,7 @@ const uint16_t PROGMEM keymaps[][ MATRIX_ROWS ][ MATRIX_COLS ] = {
/* RS: Reset
.-------.------.-------.-----.-------. .------.-------.-----.-------.------.
- | RESET | | | | | | | | | | |
+ | QK_BOOT | | | | | | | | | | |
|-------+------+-------+-----+-------| |------+-------+-----+-------+------|
| | | | | | | | | | | |
|-------+------+-------+-----+-------| |------+-------+-----+-------+------|
@@ -150,7 +150,7 @@ const uint16_t PROGMEM keymaps[][ MATRIX_ROWS ][ MATRIX_COLS ] = {
'-----'-------'-----' '-----'------'-------'
*/
[RS] = LAYOUT(
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TO(BA), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
diff --git a/keyboards/atreus/promicro/config.h b/keyboards/atreus/promicro/config.h
index a4ed1c642d..605a7ccdae 100644
--- a/keyboards/atreus/promicro/config.h
+++ b/keyboards/atreus/promicro/config.h
@@ -36,7 +36,6 @@
#else
#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B6, E6, D7, C6, D4, D0 }
#endif
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/atreus/teensy2/config.h b/keyboards/atreus/teensy2/config.h
index 4130ef9bb7..25ae56ffb6 100644
--- a/keyboards/atreus/teensy2/config.h
+++ b/keyboards/atreus/teensy2/config.h
@@ -30,7 +30,6 @@
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3 }
#define MATRIX_COL_PINS { F6, F5, F4, B7, B6, B5, B4, B3, B2, B1, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/atreus62/config.h b/keyboards/atreus62/config.h
index 2bb3da484c..bbf5028d7b 100644
--- a/keyboards/atreus62/config.h
+++ b/keyboards/atreus62/config.h
@@ -19,14 +19,6 @@ 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 0x6062
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Profet
-#define PRODUCT Atreus62
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 5
diff --git a/keyboards/atreus62/info.json b/keyboards/atreus62/info.json
index d5f1e7cce9..4bcde69be5 100644
--- a/keyboards/atreus62/info.json
+++ b/keyboards/atreus62/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Atreus62",
+ "manufacturer": "Profet",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6062",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0.6}, {"x":1, "y":0.6}, {"x":2, "y":0.35}, {"x":3, "y":0}, {"x":4, "y":0.35}, {"x":5, "y":0.7}, {"x":9, "y":0.7}, {"x":10, "y":0.35}, {"x":11, "y":0}, {"x":12, "y":0.35}, {"x":13, "y":0.6}, {"x":14, "y":0.6}, {"x":0, "y":1.6}, {"x":1, "y":1.6}, {"x":2, "y":1.35}, {"x":3, "y":1}, {"x":4, "y":1.35}, {"x":5, "y":1.7}, {"x":9, "y":1.7}, {"x":10, "y":1.35}, {"x":11, "y":1}, {"x":12, "y":1.35}, {"x":13, "y":1.6}, {"x":14, "y":1.6}, {"x":0, "y":2.6}, {"x":1, "y":2.6}, {"x":2, "y":2.35}, {"x":3, "y":2}, {"x":4, "y":2.35}, {"x":5, "y":2.7}, {"x":9, "y":2.7}, {"x":10, "y":2.35}, {"x":11, "y":2}, {"x":12, "y":2.35}, {"x":13, "y":2.6}, {"x":14, "y":2.6}, {"x":0, "y":3.6}, {"x":1, "y":3.6}, {"x":2, "y":3.35}, {"x":3, "y":3}, {"x":4, "y":3.35}, {"x":5, "y":3.7}, {"x":9, "y":3.7}, {"x":10, "y":3.35}, {"x":11, "y":3}, {"x":12, "y":3.35}, {"x":13, "y":3.6}, {"x":14, "y":3.6}, {"x":0, "y":4.6}, {"x":1, "y":4.6}, {"x":2, "y":4.35}, {"x":3, "y":4}, {"x":4, "y":4.35}, {"x":5, "y":4.7}, {"x":6, "y":3.95, "h":1.5}, {"x":8, "y":3.95, "h":1.5}, {"x":9, "y":4.7}, {"x":10, "y":4.35}, {"x":11, "y":4}, {"x":12, "y":4.35}, {"x":13, "y":4.6}, {"x":14, "y":4.6}]
diff --git a/keyboards/atreus62/keymaps/194h/keymap.c b/keyboards/atreus62/keymaps/194h/keymap.c
index b9587b03e8..31d286bfff 100644
--- a/keyboards/atreus62/keymaps/194h/keymap.c
+++ b/keyboards/atreus62/keymaps/194h/keymap.c
@@ -131,7 +131,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[L5] = LAYOUT(
XXXXXXX, TO(L1), TO(L2), TO(L3), TO(L4), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, KC_CAPS, 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/atreus62/keymaps/d4mation/keymap.c b/keyboards/atreus62/keymaps/d4mation/keymap.c
index 63b9d6142d..1f0cae666d 100644
--- a/keyboards/atreus62/keymaps/d4mation/keymap.c
+++ b/keyboards/atreus62/keymaps/d4mation/keymap.c
@@ -132,7 +132,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------. ,-----------------------------------------.
* | NO | NO | NO | NO | NO | NO | | NO | NO | NO | NO | NO | NO |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | NO |RESET | NO | NO | NO | NO | | NO | NO | NO | NO | NO | NO |
+ * | NO |QK_BOOT | NO | NO | NO | NO | | NO | NO | NO | NO | NO | NO |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | NO | NO | NO |UC WIN|UC OSX| NO |,------.,------.| NO |Dvorak|Qwerty| NO | NO | NO |
* |------+------+------+------+------+------|| Swap || ||------+------+------+------+------+------|
@@ -144,7 +144,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, UC_M_WI, UC_M_OS, XXXXXXX, XXXXXXX, DF(_DVR),DF(_QWR),XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, CG_SWAP, CG_NORM, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
diff --git a/keyboards/atreus62/keymaps/hvp/keymap.c b/keyboards/atreus62/keymaps/hvp/keymap.c
index 9873897a5a..4b5615c809 100644
--- a/keyboards/atreus62/keymaps/hvp/keymap.c
+++ b/keyboards/atreus62/keymaps/hvp/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______ ,
_______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, _______, _______ ,
KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/*
[_TRNS] = LAYOUT(
diff --git a/keyboards/atreus62/keymaps/pcewing/keymap.c b/keyboards/atreus62/keymaps/pcewing/keymap.c
index 709903c6cf..c8dfd5734b 100644
--- a/keyboards/atreus62/keymaps/pcewing/keymap.c
+++ b/keyboards/atreus62/keymaps/pcewing/keymap.c
@@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
- KC_NO, 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, QK_BOOT
)
/*
diff --git a/keyboards/atreus62/keymaps/scheiklp/keymap.c b/keyboards/atreus62/keymaps/scheiklp/keymap.c
index 58bacaab91..13ad3e4f51 100644
--- a/keyboards/atreus62/keymaps/scheiklp/keymap.c
+++ b/keyboards/atreus62/keymaps/scheiklp/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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_ESC, KC_TRNS, KC_TRNS, KC_MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
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,
diff --git a/keyboards/atreus62/keymaps/xyverz/keymap.c b/keyboards/atreus62/keymaps/xyverz/keymap.c
index 17a1ec01a3..2bab2c2efc 100644
--- a/keyboards/atreus62/keymaps/xyverz/keymap.c
+++ b/keyboards/atreus62/keymaps/xyverz/keymap.c
@@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT (
_______, _______, _______, KC_F13, KC_F14, KC_F15, _______, _______, _______, _______, _______, _______,
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, DESTINY, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/atreyu/atreyu.c b/keyboards/atreyu/atreyu.c
new file mode 100644
index 0000000000..0c5a97d18a
--- /dev/null
+++ b/keyboards/atreyu/atreyu.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 Jesus Climent (@climent)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "atreyu.h"
diff --git a/keyboards/atreyu/atreyu.h b/keyboards/atreyu/atreyu.h
new file mode 100644
index 0000000000..92471092ef
--- /dev/null
+++ b/keyboards/atreyu/atreyu.h
@@ -0,0 +1,21 @@
+/* Copyright 2022 Jesus Climent (@climent)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#if defined(KEYBOARD_atreyu_rev1)
+# include "rev1.h"
+#endif
diff --git a/keyboards/atreyu/config.h b/keyboards/atreyu/config.h
new file mode 100644
index 0000000000..ba12b366a9
--- /dev/null
+++ b/keyboards/atreyu/config.h
@@ -0,0 +1,35 @@
+/* Copyright 2022 Jesus Climent (@climent)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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"
+
+/*
+ * 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
diff --git a/keyboards/atreyu/keymaps/default/config.h b/keyboards/atreyu/keymaps/default/config.h
new file mode 100644
index 0000000000..748a95e439
--- /dev/null
+++ b/keyboards/atreyu/keymaps/default/config.h
@@ -0,0 +1,27 @@
+/* Copyright 2022 Jesus Climent (@climent)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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
+#ifdef TAPPING_TERM
+#undef TAPPING_TERM
+#define TAPPING_TERM 150
+#endif
+
+#define RETRO_TAPPING
diff --git a/keyboards/atreyu/keymaps/default/keymap.c b/keyboards/atreyu/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f6e15d26cb
--- /dev/null
+++ b/keyboards/atreyu/keymaps/default/keymap.c
@@ -0,0 +1,110 @@
+/* Copyright 2022 Jesus Climent (@climent)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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,
+ LWR,
+ RSE,
+ ADJ
+};
+
+
+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_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_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, LWR , KC_LALT, KC_LGUI, KC_ENT , KC_LBRC, KC_RBRC, KC_SPC , RSE , KC_NO , KC_NO , KC_RCTL
+
+ ),
+
+[_RAISE] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_END , _______, KC_LCBR, KC_RCBR, KC_TILD,
+ _______, _______, _______, _______, KC_HOME, KC_END , KC_PGUP, XXXXXXX, KC_UP , KC_LBRC, KC_RBRC, KC_DEL ,
+ _______, _______, _______, _______, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_PIPE, KC_ENT ,
+ _______, _______, _______, _______, _______, _______, KC_UNDS, KC_MINS, KC_EQL , KC_PLUS, KC_BSLS, _______,
+ _______, _______, _______, _______, KC_SPC , KC_HOME, KC_END , _______, _______, KC_RGUI, KC_RALT, _______
+),
+
+[_LOWER] = LAYOUT(
+ KC_GRV , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , _______,
+ _______, KC_VOLU, _______, _______, TG(_RAISE), AG_TOGG, _______, _______, _______, _______, _______, KC_DEL ,
+ _______, KC_VOLD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, KC_SPC , KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______
+),
+
+[_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,
+ _______, _______, _______, _______, _______ , _______, _______ , _______, _______, _______, _______, _______
+)
+
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LWR:
+ 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 RSE:
+ 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 KC_ESC:
+ if ((get_mods() & MOD_BIT(KC_LGUI)) == MOD_BIT(KC_LGUI)) {
+ if (record->event.pressed) {
+ register_code(KC_GRV);
+ } else {
+ unregister_code(KC_GRV);
+ }
+ return false;
+ }
+ return true;
+ break;
+ }
+ return true;
+}
+
diff --git a/keyboards/atreyu/keymaps/default/readme.md b/keyboards/atreyu/keymaps/default/readme.md
new file mode 100644
index 0000000000..7037fa1885
--- /dev/null
+++ b/keyboards/atreyu/keymaps/default/readme.md
@@ -0,0 +1,7 @@
+# Atreyu Keymap
+
+The default keymap provided here is useful for testing and as a base
+for your own mapping. It only includes basic layers and is missing many
+keycodes. To build the default keymap:
+
+make atreyu:default
diff --git a/keyboards/atreyu/keymaps/default/rules.mk b/keyboards/atreyu/keymaps/default/rules.mk
new file mode 100644
index 0000000000..433146d8d0
--- /dev/null
+++ b/keyboards/atreyu/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_ENABLE = no
diff --git a/keyboards/atreyu/readme.md b/keyboards/atreyu/readme.md
new file mode 100644
index 0000000000..1de288ea88
--- /dev/null
+++ b/keyboards/atreyu/readme.md
@@ -0,0 +1,29 @@
+# atreyu
+
+![atreyu](https://i.imgur.com/NP0cux1h.jpg)
+
+An unsplit, modified version of a Lily58 having a baby with a Sofle keyboard
+
+* Keyboard Maintainer: [Jesus Climent](https://github.com/Jesus Climent)
+* Hardware Supported: AtreyuKeyboard PCB, ProMicro
+* Hardware Availability: [PCB and case data](https://github.com/climent/atreyu)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make atreyu:default
+
+Flashing example for this keyboard:
+
+ make atreyu:default:flash
+
+## 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 `QK_BOOT` if it is available
+
+## More information
+
+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/atreyu/rev1/config.h b/keyboards/atreyu/rev1/config.h
new file mode 100644
index 0000000000..36cf04dd86
--- /dev/null
+++ b/keyboards/atreyu/rev1/config.h
@@ -0,0 +1,72 @@
+/* Copyright 2022 Jesus Climent (@climent)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 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 { D7, E6, B4, B5, F6, F7, B1, B3, B6, B2 }
+#define MATRIX_COL_PINS { C6, D4, D0, D1, D2, D3 }
+
+/* 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_RESOLUTION 4
+
+/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
+#define DIODE_DIRECTION COL2ROW
+
+/* 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
diff --git a/keyboards/atreyu/rev1/info.json b/keyboards/atreyu/rev1/info.json
new file mode 100644
index 0000000000..d0b3c0eb42
--- /dev/null
+++ b/keyboards/atreyu/rev1/info.json
@@ -0,0 +1,77 @@
+{
+ "keyboard_name": "Atreyu",
+ "manufacturer": "Heyzeus",
+ "url": "https://github.com/climent/atreyu",
+ "maintainer": "Jesus Climent <climent@gmail.com>",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
+ "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":0, "y":4.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.25},
+ {"x":9.5, "y":4.25, "h":1.25},
+ {"x":11, "y":4.25},
+ {"x":12, "y":4.15},
+ {"x":13, "y":4.125},
+ {"x": 14.5, "y": 4.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/atreyu/rev1/rev1.c b/keyboards/atreyu/rev1/rev1.c
new file mode 100644
index 0000000000..3d6829fbd5
--- /dev/null
+++ b/keyboards/atreyu/rev1/rev1.c
@@ -0,0 +1,47 @@
+/* Copyright 2022 Jesus Climent (@climent)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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 ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+
+ if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ if (index == 0) {
+ if (IS_LAYER_ON(_LOWER)) {
+ if (clockwise) {
+ tap_code(KC_WH_U);
+ } else {
+ tap_code(KC_WH_D);
+ }
+ } else {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/atreyu/rev1/rev1.h b/keyboards/atreyu/rev1/rev1.h
new file mode 100644
index 0000000000..4f6852593f
--- /dev/null
+++ b/keyboards/atreyu/rev1/rev1.h
@@ -0,0 +1,40 @@
+/* Copyright 2022 Jesus Climent (@climent)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, 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\
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05 },\
+ { k12, k13, k14, k15, k16, k17 },\
+ { k24, k25, k26, k27, k28, k29 },\
+ { k36, k37, k38, k39, k40, k41 },\
+ { k11, k10, k09, k08, k07, k06 },\
+ { k23, k22, k21, k20, k19, k18 },\
+ { k35, k34, k33, k32, k31, k30 },\
+ { k47, k46, k45, k44, k43, k42 },\
+ { k48, k49, k50, k51, k52, k53 },\
+ { k59, k58, k57, k56, k55, k54 } \
+}
+
diff --git a/keyboards/just60/.noci b/keyboards/atreyu/rev1/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/just60/.noci
+++ b/keyboards/atreyu/rev1/rules.mk
diff --git a/keyboards/atreyu/rules.mk b/keyboards/atreyu/rules.mk
new file mode 100644
index 0000000000..1e05f827de
--- /dev/null
+++ b/keyboards/atreyu/rules.mk
@@ -0,0 +1,22 @@
+DEFAULT_FOLDER = atreyu/rev1
+
+# 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/atset/at1/at1.c b/keyboards/atset/at1/at1.c
new file mode 100644
index 0000000000..4ed5d7cb29
--- /dev/null
+++ b/keyboards/atset/at1/at1.c
@@ -0,0 +1,15 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "at1.h"
diff --git a/keyboards/atset/at1/at1.h b/keyboards/atset/at1/at1.h
new file mode 100644
index 0000000000..64a90d00ca
--- /dev/null
+++ b/keyboards/atset/at1/at1.h
@@ -0,0 +1,22 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You 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( \
+ k00 \
+) \
+{ \
+ { k00 } \
+}
+
diff --git a/keyboards/atset/at1/config.h b/keyboards/atset/at1/config.h
new file mode 100644
index 0000000000..635faf9b4e
--- /dev/null
+++ b/keyboards/atset/at1/config.h
@@ -0,0 +1,68 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 1
+
+#define MATRIX_ROW_PINS { D2 }
+#define MATRIX_COL_PINS { B6 }
+
+/* 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 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
+
diff --git a/keyboards/atset/at1/info.json b/keyboards/atset/at1/info.json
new file mode 100644
index 0000000000..b73f4de3ae
--- /dev/null
+++ b/keyboards/atset/at1/info.json
@@ -0,0 +1,15 @@
+{
+ "keyboard_name": "AT1",
+ "manufacturer": "Atset",
+ "maintainer": "atset",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"k00", "x":0, "y":0}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/atset/at1/keymaps/default/keymap.c b/keyboards/atset/at1/keymaps/default/keymap.c
new file mode 100644
index 0000000000..56e8e3afff
--- /dev/null
+++ b/keyboards/atset/at1/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/*
+ * it under the terms of the GNU General Public License as published by
+ * This program is free software: you can redistribute it and/or modify
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_4
+),
+
+
+[1] = LAYOUT(
+ KC_NO
+),
+
+
+[2] = LAYOUT(
+ KC_NO
+)
+
+
+};
diff --git a/keyboards/atset/at1/keymaps/via/keymap.c b/keyboards/atset/at1/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f4806baee5
--- /dev/null
+++ b/keyboards/atset/at1/keymaps/via/keymap.c
@@ -0,0 +1,35 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_4
+ ),
+ [1] =
+ LAYOUT(
+ KC_NO
+ ),
+ [2] =
+ LAYOUT(
+ KC_NO
+ ),
+ [3] =
+ LAYOUT(
+ KC_NO
+ )
+};
diff --git a/keyboards/atset/at1/readme.md b/keyboards/atset/at1/readme.md
new file mode 100644
index 0000000000..330c1b2ff8
--- /dev/null
+++ b/keyboards/atset/at1/readme.md
@@ -0,0 +1,25 @@
+# ATSET AT1
+
+A special 1 key keyboard powered by QMK.
+
+* Keyboard Maintainer: [ATSET](https://github.com/anubhavd7)
+* Hardware Supported: ATmega32U4
+* Hardware Availability: Interest Check
+
+Make example for this keyboard (after setting up your build environment):
+
+ make atset/at6:default
+
+Flashing example for this keyboard:
+
+ make atset/at6: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 `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/atset/at1/rules.mk b/keyboards/atset/at1/rules.mk
new file mode 100644
index 0000000000..73ac281e0b
--- /dev/null
+++ b/keyboards/atset/at1/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 = 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/atset/at12/at12.c b/keyboards/atset/at12/at12.c
new file mode 100644
index 0000000000..94474365a8
--- /dev/null
+++ b/keyboards/atset/at12/at12.c
@@ -0,0 +1,15 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "at12.h"
diff --git a/keyboards/atset/at12/at12.h b/keyboards/atset/at12/at12.h
new file mode 100644
index 0000000000..74bc86c5f2
--- /dev/null
+++ b/keyboards/atset/at12/at12.h
@@ -0,0 +1,29 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You 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( \
+ k00, k01, k02, \
+ k10, k11, k12, \
+ k20, k21, k22, \
+ k30, k31, k32 \
+) \
+{ \
+ { k00, k01, k02 }, \
+ { k10, k11, k12 }, \
+ { k20, k21, k22 }, \
+ { k30, k31, k32 } \
+}
+
diff --git a/keyboards/atset/at12/config.h b/keyboards/atset/at12/config.h
new file mode 100644
index 0000000000..d27b4b646a
--- /dev/null
+++ b/keyboards/atset/at12/config.h
@@ -0,0 +1,68 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 4
+#define MATRIX_COLS 3
+
+#define MATRIX_ROW_PINS { D3, D2, D1, D0 }
+#define MATRIX_COL_PINS { B6, B5, B4 }
+
+/* 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 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
+
diff --git a/keyboards/atset/at12/info.json b/keyboards/atset/at12/info.json
new file mode 100644
index 0000000000..28a535db48
--- /dev/null
+++ b/keyboards/atset/at12/info.json
@@ -0,0 +1,15 @@
+{
+ "keyboard_name": "AT12",
+ "manufacturer": "Atset",
+ "maintainer": "atset",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}, {"label":"k30", "x":0, "y":3}, {"label":"k31", "x":1, "y":3}, {"label":"k32", "x":2, "y":3}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/atset/at12/keymaps/default/keymap.c b/keyboards/atset/at12/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d713632d9d
--- /dev/null
+++ b/keyboards/atset/at12/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_F10, KC_F11, KC_F12,
+ KC_7, KC_8, KC_9,
+ KC_4, KC_5, KC_6,
+ KC_1, KC_2, KC_3
+),
+
+
+[1] = 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
+),
+
+
+[2] = 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
+)
+
+};
diff --git a/keyboards/atset/at12/keymaps/via/keymap.c b/keyboards/atset/at12/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f42586dfbc
--- /dev/null
+++ b/keyboards/atset/at12/keymaps/via/keymap.c
@@ -0,0 +1,47 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_F10, KC_F11, KC_F12,
+ KC_7, KC_8, KC_9,
+ KC_4 , KC_5 , KC_6,
+ KC_1 , KC_2 , KC_3
+ ),
+ [1] =
+ 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
+ ),
+ [2] =
+ 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
+ ),
+ [3] =
+ 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
+ ),
+};
diff --git a/keyboards/atset/at12/readme.md b/keyboards/atset/at12/readme.md
new file mode 100644
index 0000000000..6760e33ab5
--- /dev/null
+++ b/keyboards/atset/at12/readme.md
@@ -0,0 +1,25 @@
+# ATSET AT12
+
+A special 12 key keyboard powered by QMK.
+
+* Keyboard Maintainer: [ATSET](https://github.com/anubhavd7)
+* Hardware Supported: ATmega32U4
+* Hardware Availability: Interest Check
+
+Make example for this keyboard (after setting up your build environment):
+
+ make atset/at3:default
+
+Flashing example for this keyboard:
+
+ make atset/at3: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 `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/atset/at12/rules.mk b/keyboards/atset/at12/rules.mk
new file mode 100644
index 0000000000..73ac281e0b
--- /dev/null
+++ b/keyboards/atset/at12/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 = 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/atset/at16/at16.c b/keyboards/atset/at16/at16.c
new file mode 100644
index 0000000000..4b24974504
--- /dev/null
+++ b/keyboards/atset/at16/at16.c
@@ -0,0 +1,15 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "at16.h"
diff --git a/keyboards/atset/at16/at16.h b/keyboards/atset/at16/at16.h
new file mode 100644
index 0000000000..128ed7f161
--- /dev/null
+++ b/keyboards/atset/at16/at16.h
@@ -0,0 +1,29 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You 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_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/atset/at16/config.h b/keyboards/atset/at16/config.h
new file mode 100644
index 0000000000..400244a66e
--- /dev/null
+++ b/keyboards/atset/at16/config.h
@@ -0,0 +1,68 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 4
+#define MATRIX_COLS 4
+
+#define MATRIX_ROW_PINS { D3, D2, D1, D0 }
+#define MATRIX_COL_PINS { B6, B5, B4, B2 }
+
+/* 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 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
+
diff --git a/keyboards/atset/at16/info.json b/keyboards/atset/at16/info.json
new file mode 100644
index 0000000000..65a51448b4
--- /dev/null
+++ b/keyboards/atset/at16/info.json
@@ -0,0 +1,15 @@
+{
+ "keyboard_name": "AT16",
+ "manufacturer": "Atset",
+ "maintainer": "atset",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_ortho_4x4": {
+ "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}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k13", "x":3, "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":"k30", "x":0, "y":3}, {"label":"k31", "x":1, "y":3}, {"label":"k32", "x":2, "y":3}, {"label":"k33", "x":3, "y":3}]
+ }
+ }
+}
diff --git a/keyboards/atset/at16/keymaps/default/keymap.c b/keyboards/atset/at16/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d01577d8b6
--- /dev/null
+++ b/keyboards/atset/at16/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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(
+ KC_F10, KC_F11, KC_F12, KC_F5,
+ KC_7, KC_8, KC_9, KC_F1,
+ KC_4, KC_5, KC_6, KC_F2,
+ KC_1, KC_2, KC_3, KC_F3
+),
+
+
+[1] = LAYOUT_ortho_4x4(
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO
+),
+
+
+[2] = LAYOUT_ortho_4x4(
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ 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/atset/at16/keymaps/via/keymap.c b/keyboards/atset/at16/keymaps/via/keymap.c
new file mode 100644
index 0000000000..8ce781aac4
--- /dev/null
+++ b/keyboards/atset/at16/keymaps/via/keymap.c
@@ -0,0 +1,47 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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(
+ KC_F10, KC_F11, KC_F12, KC_F5,
+ KC_7, KC_8, KC_9, KC_F1,
+ KC_4, KC_5, KC_6, KC_F2,
+ KC_1, KC_2, KC_3, KC_F3
+ ),
+ [1] =
+ LAYOUT_ortho_4x4(
+ KC_NO , KC_NO, KC_NO, KC_NO,
+ KC_NO , KC_NO, KC_NO, KC_NO,
+ KC_NO , KC_NO, KC_NO, KC_NO,
+ KC_NO , KC_NO, KC_NO, KC_NO
+ ),
+ [2] =
+ LAYOUT_ortho_4x4(
+ KC_NO , KC_NO, KC_NO, KC_NO,
+ 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_4x4(
+ KC_NO , KC_NO, KC_NO, KC_NO,
+ 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/atset/at16/readme.md b/keyboards/atset/at16/readme.md
new file mode 100644
index 0000000000..00dba767dc
--- /dev/null
+++ b/keyboards/atset/at16/readme.md
@@ -0,0 +1,25 @@
+# ATSET AT16
+
+A special 16 key keyboard powered by QMK.
+
+* Keyboard Maintainer: [ATSET](https://github.com/anubhavd7)
+* Hardware Supported: ATmega32U4
+* Hardware Availability: Interest Check
+
+Make example for this keyboard (after setting up your build environment):
+
+ make atset/at3:default
+
+Flashing example for this keyboard:
+
+ make atset/at3: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 `QK_BOOT` if it is available
diff --git a/keyboards/atset/at16/rules.mk b/keyboards/atset/at16/rules.mk
new file mode 100644
index 0000000000..6025e7ecc5
--- /dev/null
+++ b/keyboards/atset/at16/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 = 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
+
+LAYOUTS = ortho_4x4
diff --git a/keyboards/atset/at3/at3.c b/keyboards/atset/at3/at3.c
new file mode 100644
index 0000000000..18a5182f0f
--- /dev/null
+++ b/keyboards/atset/at3/at3.c
@@ -0,0 +1,15 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "at3.h"
diff --git a/keyboards/atset/at3/at3.h b/keyboards/atset/at3/at3.h
new file mode 100644
index 0000000000..817b154483
--- /dev/null
+++ b/keyboards/atset/at3/at3.h
@@ -0,0 +1,22 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You 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( \
+ k00, k01, k02 \
+) \
+{ \
+ { k00, k01, k02 } \
+}
+
diff --git a/keyboards/atset/at3/config.h b/keyboards/atset/at3/config.h
new file mode 100644
index 0000000000..5195939cf9
--- /dev/null
+++ b/keyboards/atset/at3/config.h
@@ -0,0 +1,68 @@
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 3
+
+#define MATRIX_ROW_PINS { D2 }
+#define MATRIX_COL_PINS { B6, B5, B4 }
+
+/* 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 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
+
diff --git a/keyboards/atset/at3/info.json b/keyboards/atset/at3/info.json
new file mode 100644
index 0000000000..6f8eab5e62
--- /dev/null
+++ b/keyboards/atset/at3/info.json
@@ -0,0 +1,15 @@
+{
+ "keyboard_name": "AT3",
+ "manufacturer": "Atset",
+ "maintainer": "atset",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/atset/at3/keymaps/default/keymap.c b/keyboards/atset/at3/keymaps/default/keymap.c
new file mode 100644
index 0000000000..57d0ab6db0
--- /dev/null
+++ b/keyboards/atset/at3/keymaps/default/keymap.c
@@ -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/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+
+[0] = LAYOUT(
+ KC_7, KC_8, KC_9
+),
+
+
+[1] = LAYOUT(
+ KC_NO, KC_NO, KC_NO
+),
+
+
+[2] = LAYOUT(
+ KC_NO, KC_NO, KC_NO
+)
+
+
+};
diff --git a/keyboards/atset/at3/keymaps/via/keymap.c b/keyboards/atset/at3/keymaps/via/keymap.c
new file mode 100644
index 0000000000..8d16b57bd7
--- /dev/null
+++ b/keyboards/atset/at3/keymaps/via/keymap.c
@@ -0,0 +1,35 @@
+/*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received 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_7 , KC_8 , KC_9
+ ),
+ [1] =
+ LAYOUT(
+ KC_NO , KC_NO, KC_NO
+ ),
+ [2] =
+ LAYOUT(
+ KC_NO , KC_NO, KC_NO
+ ),
+ [3] =
+ LAYOUT(
+ KC_NO , KC_NO, KC_NO
+ )
+};
diff --git a/keyboards/atset/at3/readme.md b/keyboards/atset/at3/readme.md
new file mode 100644
index 0000000000..755169c5d6
--- /dev/null
+++ b/keyboards/atset/at3/readme.md
@@ -0,0 +1,25 @@
+# ATSET AT3
+
+A special 3 key keyboard powered by QMK.
+
+* Keyboard Maintainer: [ATSET](https://github.com/anubhavd7)
+* Hardware Supported: ATmega32U4
+* Hardware Availability: Interest Check
+
+Make example for this keyboard (after setting up your build environment):
+
+ make atset/at3:default
+
+Flashing example for this keyboard:
+
+ make atset/at3: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 `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/atset/at3/rules.mk b/keyboards/atset/at3/rules.mk
new file mode 100644
index 0000000000..73ac281e0b
--- /dev/null
+++ b/keyboards/atset/at3/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 = 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/atset/at6/config.h b/keyboards/atset/at6/config.h
index b5192c5982..b443529631 100644
--- a/keyboards/atset/at6/config.h
+++ b/keyboards/atset/at6/config.h
@@ -17,20 +17,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED // Atset
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Atset
-#define PRODUCT AT6
-
/* Key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
#define MATRIX_ROW_PINS { D2, D1 }
#define MATRIX_COL_PINS { B6, B5, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/atset/at6/info.json b/keyboards/atset/at6/info.json
index cdaeee825d..abdaf10b9f 100644
--- a/keyboards/atset/at6/info.json
+++ b/keyboards/atset/at6/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "AT6",
+ "manufacturer": "Atset",
"maintainer": "atset",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}]
diff --git a/keyboards/atset/at6/readme.md b/keyboards/atset/at6/readme.md
index f5ec383530..84abbf87a5 100644
--- a/keyboards/atset/at6/readme.md
+++ b/keyboards/atset/at6/readme.md
@@ -22,4 +22,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/atset/at9/config.h b/keyboards/atset/at9/config.h
index 157c4a2e42..bf9819c4b9 100644
--- a/keyboards/atset/at9/config.h
+++ b/keyboards/atset/at9/config.h
@@ -17,20 +17,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED // Atset
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Atset
-#define PRODUCT AT9
-
/* Key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
#define MATRIX_ROW_PINS { D2, D1, D0 }
#define MATRIX_COL_PINS { B6, B5, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/atset/at9/info.json b/keyboards/atset/at9/info.json
index 5c69b1c8d3..b550240ce7 100644
--- a/keyboards/atset/at9/info.json
+++ b/keyboards/atset/at9/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "AT9",
+ "manufacturer": "Atset",
"maintainer": "atset",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}]
diff --git a/keyboards/atset/at9/readme.md b/keyboards/atset/at9/readme.md
index d59b1e2f4d..d1d38ba6c6 100644
--- a/keyboards/atset/at9/readme.md
+++ b/keyboards/atset/at9/readme.md
@@ -21,4 +21,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/atxkb/1894/config.h b/keyboards/atxkb/1894/config.h
index fd621e169a..1cf30b258b 100644
--- a/keyboards/atxkb/1894/config.h
+++ b/keyboards/atxkb/1894/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5458 // TX
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER atxkb
-#define PRODUCT 1894
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B1, B2, B3, F0, F1 }
#define MATRIX_COL_PINS { F4, F7, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/atxkb/1894/info.json b/keyboards/atxkb/1894/info.json
index a9195061f8..d91764625e 100644
--- a/keyboards/atxkb/1894/info.json
+++ b/keyboards/atxkb/1894/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "1894",
+ "manufacturer": "atxkb",
"url": "https://atxkb.com",
"maintainer": "austexcn",
+ "usb": {
+ "vid": "0x5458",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/aurora65/aurora65.c b/keyboards/aurora65/aurora65.c
new file mode 100644
index 0000000000..0c51c51c5f
--- /dev/null
+++ b/keyboards/aurora65/aurora65.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 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 "aurora65.h"
diff --git a/keyboards/aurora65/aurora65.h b/keyboards/aurora65/aurora65.h
new file mode 100644
index 0000000000..5a8f0d6ef4
--- /dev/null
+++ b/keyboards/aurora65/aurora65.h
@@ -0,0 +1,34 @@
+/* Copyright 2022 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_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, K2C, 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, K49, 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, XXX, 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, XXX, K4B, K4C, K4D, K4E } \
+}
diff --git a/keyboards/aurora65/config.h b/keyboards/aurora65/config.h
new file mode 100644
index 0000000000..d3679d1365
--- /dev/null
+++ b/keyboards/aurora65/config.h
@@ -0,0 +1,92 @@
+/*
+Copyright 2022 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_ROW_PINS { B3, B4, B5, A8, A4 }
+#define MATRIX_COL_PINS { A13, A10, A9, A14, A15, B8, B9, B2, B1, B0, A0, A1, A2, A3, A5 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* RGB Light */
+#define WS2812_PWM_DRIVER PWMD1
+#define WS2812_PWM_CHANNEL 3
+#define WS2812_PWM_PAL_MODE 2
+#define WS2812_PWM_COMPLEMENTARY_OUTPUT
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM5
+#define WS2812_DMA_CHANNEL 5
+#define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_RGB
+
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 36
+#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_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 (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/aurora65/halconf.h b/keyboards/aurora65/halconf.h
new file mode 100644
index 0000000000..4abd83bd3b
--- /dev/null
+++ b/keyboards/aurora65/halconf.h
@@ -0,0 +1,21 @@
+/* Copyright 2022 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 HAL_USE_PWM TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/aurora65/info.json b/keyboards/aurora65/info.json
new file mode 100644
index 0000000000..7962fda7e7
--- /dev/null
+++ b/keyboards/aurora65/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Aurora65",
+ "manufacturer": "Yiancar-Designs",
+ "url": "https://yiancar-designs.com",
+ "maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4136",
+ "device_version": "0.0.1"
+ },
+ "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.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/aurora65/keymaps/default/keymap.c b/keyboards/aurora65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..082dbb3a6a
--- /dev/null
+++ b/keyboards/aurora65/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+/* Copyright 2022 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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT_65_ansi_blocker( /* 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, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, 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_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
diff --git a/keyboards/aurora65/keymaps/default/readme.md b/keyboards/aurora65/keymaps/default/readme.md
new file mode 100644
index 0000000000..7f9c1461ec
--- /dev/null
+++ b/keyboards/aurora65/keymaps/default/readme.md
@@ -0,0 +1,5 @@
+# The default keymap for Aurora65. VIA support disabled.
+
+![Layer 0](https://imgur.com/GZONtj5.png)
+
+![Layer 1](https://imgur.com/C1kFlWX.png)
diff --git a/keyboards/aurora65/keymaps/via/keymap.c b/keyboards/aurora65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..7e87c8bfac
--- /dev/null
+++ b/keyboards/aurora65/keymaps/via/keymap.c
@@ -0,0 +1,46 @@
+/* Copyright 2022 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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT_65_ansi_blocker( /* 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, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, 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_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[2] = LAYOUT_65_ansi_blocker( /* 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),
+
+[3] = LAYOUT_65_ansi_blocker( /* 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)
+};
diff --git a/keyboards/aurora65/keymaps/via/readme.md b/keyboards/aurora65/keymaps/via/readme.md
new file mode 100644
index 0000000000..b4b3158e79
--- /dev/null
+++ b/keyboards/aurora65/keymaps/via/readme.md
@@ -0,0 +1,5 @@
+# The default keymap for Aurora65. VIA support enabled.
+
+![Layer 0](https://imgur.com/GZONtj5.png)
+
+![Layer 1](https://imgur.com/C1kFlWX.png)
diff --git a/keyboards/aurora65/keymaps/via/rules.mk b/keyboards/aurora65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/aurora65/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/aurora65/mcuconf.h b/keyboards/aurora65/mcuconf.h
new file mode 100644
index 0000000000..5e966ec140
--- /dev/null
+++ b/keyboards/aurora65/mcuconf.h
@@ -0,0 +1,25 @@
+/* Copyright 2022 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_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
+
+#undef STM32_PWM_USE_ADVANCED
+#define STM32_PWM_USE_ADVANCED TRUE
diff --git a/keyboards/aurora65/readme.md b/keyboards/aurora65/readme.md
new file mode 100644
index 0000000000..cf0f26330a
--- /dev/null
+++ b/keyboards/aurora65/readme.md
@@ -0,0 +1,32 @@
+# Aurora65
+
+This is a 65% layout PCB. 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://www.odinpc.com
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make aurora65: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 aurora65:<keymap>:flash`)
diff --git a/keyboards/aurora65/rules.mk b/keyboards/aurora65/rules.mk
new file mode 100644
index 0000000000..fc545388a3
--- /dev/null
+++ b/keyboards/aurora65/rules.mk
@@ -0,0 +1,29 @@
+# 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 = yes # Enable keyboard RGB underglow
+WS2812_DRIVER = pwm # Driver for RGB uderglow
+AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = 65_ansi_blocker
diff --git a/keyboards/avalanche/avalanche.h b/keyboards/avalanche/avalanche.h
index c3f431f315..916019f0d0 100644
--- a/keyboards/avalanche/avalanche.h
+++ b/keyboards/avalanche/avalanche.h
@@ -9,6 +9,8 @@
#include "v2.h"
#elif KEYBOARD_avalanche_v3
#include "v3.h"
+#elif KEYBOARD_avalanche_v4
+ #include "v4.h"
#endif
#include "quantum.h"
diff --git a/keyboards/avalanche/v1/config.h b/keyboards/avalanche/v1/config.h
index 32533c5cc9..e641a20f93 100644
--- a/keyboards/avalanche/v1/config.h
+++ b/keyboards/avalanche/v1/config.h
@@ -3,12 +3,6 @@
#pragma once
-#define VENDOR_ID 0xCEE2
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER vitvlkv
-#define PRODUCT Avalanche
-
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
diff --git a/keyboards/avalanche/v1/info.json b/keyboards/avalanche/v1/info.json
index 907face922..d753cce4bc 100644
--- a/keyboards/avalanche/v1/info.json
+++ b/keyboards/avalanche/v1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Avalanche v1",
+ "keyboard_name": "Avalanche",
+ "manufacturer": "vitvlkv",
"url": "https://github.com/vlkv/avalanche",
"maintainer": "vlkv",
+ "usb": {
+ "vid": "0xCEE2",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/avalanche/v2/config.h b/keyboards/avalanche/v2/config.h
index 55cbd30b1c..16b26d8ffc 100644
--- a/keyboards/avalanche/v2/config.h
+++ b/keyboards/avalanche/v2/config.h
@@ -3,12 +3,6 @@
#pragma once
-#define VENDOR_ID 0xCEE2
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0002
-#define MANUFACTURER vitvlkv
-#define PRODUCT Avalanche
-
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
diff --git a/keyboards/avalanche/v2/info.json b/keyboards/avalanche/v2/info.json
index 6809c99b4e..52c03b57a3 100644
--- a/keyboards/avalanche/v2/info.json
+++ b/keyboards/avalanche/v2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Avalanche v2",
+ "keyboard_name": "Avalanche",
+ "manufacturer": "vitvlkv",
"url": "https://github.com/vlkv/avalanche",
"maintainer": "vlkv",
+ "usb": {
+ "vid": "0xCEE2",
+ "pid": "0x0002",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/avalanche/v3/config.h b/keyboards/avalanche/v3/config.h
index 3dc537170d..4c4e05ecf4 100644
--- a/keyboards/avalanche/v3/config.h
+++ b/keyboards/avalanche/v3/config.h
@@ -3,12 +3,6 @@
#pragma once
-#define VENDOR_ID 0xCEE2
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0003
-#define MANUFACTURER vitvlkv
-#define PRODUCT Avalanche
-
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
diff --git a/keyboards/avalanche/v3/info.json b/keyboards/avalanche/v3/info.json
index 39b8b51b38..1869c0165f 100644
--- a/keyboards/avalanche/v3/info.json
+++ b/keyboards/avalanche/v3/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Avalanche v3",
+ "keyboard_name": "Avalanche",
+ "manufacturer": "vitvlkv",
"url": "https://github.com/vlkv/avalanche",
"maintainer": "vlkv",
+ "usb": {
+ "vid": "0xCEE2",
+ "pid": "0x0003",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/avalanche/v4/config.h b/keyboards/avalanche/v4/config.h
new file mode 100644
index 0000000000..c83c90c0ba
--- /dev/null
+++ b/keyboards/avalanche/v4/config.h
@@ -0,0 +1,70 @@
+// Copyright 2022 Will Winder (@winder)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
+
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
+#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define SOFT_SERIAL_PIN D2
+
+
+#define ENCODERS_PAD_A { B5 }
+#define ENCODERS_PAD_B { F4 }
+#define ENCODER_RESOLUTION 2
+
+#ifdef RGBLIGHT_ENABLE
+# define RGB_DI_PIN D3
+# define RGBLED_NUM 64
+# define RGBLED_SPLIT { 32, 32 }
+# define RGBLIGHT_SPLIT
+# 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_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL+2
+
+# define RGBLIGHT_EFFECT_ALTERNATING
+# define RGBLIGHT_EFFECT_RGB_TEST
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_CHRISTMAS
+
+
+// RGB LED Conversion macro from physical array to electric array. This results in better looking animated effects.
+# define LED_LAYOUT( \
+ /* LED matrix */ \
+ L01, L02, L03, L04, L05, L06, L011, L012, L013, L014, L015, L016, \
+ L11, L12, L13, L14, L15, L16, L111, L112, L113, L114, L115, L116, \
+ L20, L21, L22, L23, L24, L25, L26, L211, L212, L213, L214, L215, L216, L217, \
+ L31, L32, L33, L34, L35, L36, L37, L38, L39, L310, L311, L312, L313, L314, L315, L316, \
+ L44, L45, L46, L47, L48, L49, L410, L411, L412, L413 )\
+ { \
+ /* left half - electrical wiring order */ \
+ L47,L48,L38,L37,L36,L26,L16,L06,L05,L15,L25,L35,L46,L45,L34,L24,L14,L04,L03,L13,L23,L33,L44,L32,L22,L12,L02,L01,L11,L21,L31,L20, \
+ /* right half - electrical wiring order */ \
+ L410,L49,L39,L310,L311,L211,L111,L011,L012,L112,L212,L312,L411,L412,L313,L213,L113,L013,L014,L114,L214,L314,L413,L315,L215,L115,L015,L016,L116,L216,L316,L217 \
+ }
+# define RGBLIGHT_LED_MAP LED_LAYOUT( \
+ /* animation order. */ \
+ 4, 8, 12, 17, 22, 27, 40, 45, 50, 54, 58, 62, \
+ 3, 7, 11, 16, 21, 26, 39, 44, 49, 53, 57, 61, \
+ 0, 2, 6, 10, 15, 20, 25, 38, 43, 48, 52, 56, 60, 63, \
+ 1, 5, 9, 14, 19, 24, 29, 31, 33, 35, 37, 42, 47, 51, 55, 59, \
+ 13, 18, 23, 28, 30, 32, 34, 36, 41, 46 )
+#endif
+
+#ifdef OLED_ENABLE
+# define OLED_DISPLAY_128X64
+# define OLED_TIMEOUT 30000
+#endif
diff --git a/keyboards/avalanche/v4/info.json b/keyboards/avalanche/v4/info.json
new file mode 100644
index 0000000000..b96cdc5ea7
--- /dev/null
+++ b/keyboards/avalanche/v4/info.json
@@ -0,0 +1,85 @@
+{
+ "keyboard_name": "Avalanche",
+ "manufacturer": "vitvlkv",
+ "url": "https://github.com/vlkv/avalanche",
+ "maintainer": "vlkv",
+ "usb": {
+ "vid": "0xCEE2",
+ "pid": "0x0004",
+ "device_version": "0.0.4"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"L00", "x":1, "y":0.75},
+ {"label":"L01", "x":2, "y":0.75},
+ {"label":"L02", "x":3, "y":0.25},
+ {"label":"L03", "x":4, "y":0},
+ {"label":"L04", "x":5, "y":0.25},
+ {"label":"L05", "x":6, "y":0.35},
+ {"label":"R05", "x":12, "y":0.35},
+ {"label":"R04", "x":13, "y":0.25},
+ {"label":"R03", "x":14, "y":0},
+ {"label":"R02", "x":15, "y":0.25},
+ {"label":"R01", "x":16, "y":0.75},
+ {"label":"R00", "x":17, "y":0.75},
+
+ {"label":"L10", "x":1, "y":1.75},
+ {"label":"L11", "x":2, "y":1.75},
+ {"label":"L12", "x":3, "y":1.25},
+ {"label":"L13", "x":4, "y":1},
+ {"label":"L14", "x":5, "y":1.25},
+ {"label":"L15", "x":6, "y":1.35},
+ {"label":"R15", "x":12, "y":1.35},
+ {"label":"R14", "x":13, "y":1.25},
+ {"label":"R13", "x":14, "y":1},
+ {"label":"R12", "x":15, "y":1.25},
+ {"label":"R11", "x":16, "y":1.75},
+ {"label":"R10", "x":17, "y":1.75},
+
+ {"label":"L40", "x":0, "y":2.85},
+ {"label":"L20", "x":1, "y":2.75},
+ {"label":"L21", "x":2, "y":2.75},
+ {"label":"L22", "x":3, "y":2.25},
+ {"label":"L23", "x":4, "y":2},
+ {"label":"L24", "x":5, "y":2.25},
+ {"label":"L25", "x":6, "y":2.35},
+ {"label":"R25", "x":12, "y":2.35},
+ {"label":"R24", "x":13, "y":2.25},
+ {"label":"R23", "x":14, "y":2},
+ {"label":"R22", "x":15, "y":2.25},
+ {"label":"R21", "x":16, "y":2.75},
+ {"label":"R20", "x":17, "y":2.75},
+ {"label":"R40", "x":18, "y":2.85},
+
+ {"label":"L30", "x":1, "y":3.75},
+ {"label":"L31", "x":2, "y":3.75},
+ {"label":"L32", "x":3, "y":3.25},
+ {"label":"L33", "x":4, "y":3},
+ {"label":"L34", "x":5, "y":3.25},
+ {"label":"L35", "x":6, "y":3.35},
+ {"label":"L36", "x":7, "y":3.7},
+ {"label":"L26", "x":8, "y":4.05},
+ {"label":"R26", "x":10, "y":4.05},
+ {"label":"R36", "x":11, "y":3.7},
+ {"label":"R35", "x":12, "y":3.35},
+ {"label":"R34", "x":13, "y":3.25},
+ {"label":"R33", "x":14, "y":3},
+ {"label":"R32", "x":15, "y":3.25},
+ {"label":"R31", "x":16, "y":3.75},
+ {"label":"R30", "x":17, "y":3.75},
+
+ {"label":"L42", "x":3.4, "y":4.55},
+ {"label":"L43", "x":4.6, "y":4.45},
+ {"label":"L44", "x":5.8, "y":4.4},
+ {"label":"L45", "x":7, "y":4.7},
+ {"label":"L46", "x":8, "y":5.05},
+ {"label":"R46", "x":10, "y":5.05},
+ {"label":"R45", "x":11, "y":4.7},
+ {"label":"R44", "x":12.2, "y":4.4},
+ {"label":"R43", "x":13.4, "y":4.45},
+ {"label":"R42", "x":14.6, "y":4.55}
+ ]
+ }
+ }
+}
diff --git a/keyboards/avalanche/v4/keymaps/default/keymap.c b/keyboards/avalanche/v4/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7239091ca2
--- /dev/null
+++ b/keyboards/avalanche/v4/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+// Copyright 2022 Viatly Volkov (@vlkv)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/*
+qmk compile -kb avalanche/v4 -km default
+qmk flash -kb avalanche/v4 -km default
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layer {
+ LAYER_0,
+ LAYER_1,
+ LAYER_2,
+};
+
+#define FN_1 MO(LAYER_1)
+#define LFN_2 LT(LAYER_2, KC_GRV)
+#define RFN_2 MO(LAYER_2)
+#define LFN_3 LSFT_T(KC_EQL)
+#define RFN_3 RSFT_T(KC_MINS)
+#define EN_LALT LALT_T(KC_ENT)
+#define EN_RALT RALT_T(KC_ENT)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_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_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_CAPS, 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_RBRC,
+ KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_LGUI, KC_INS, KC_BSPC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RCTL,
+ KC__MUTE,LFN_2, LFN_3, KC_SPC, EN_LALT, EN_RALT, FN_1, RFN_3, RFN_2, KC_PSCR
+ ),
+ [LAYER_1] = LAYOUT(
+ _______, KC_F11, KC_F12, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC, KC_DEL, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX,
+ _______, _______, KC_APP, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, KC_F12,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, XXXXXXX, KC_PGUP, KC_PGDN, XXXXXXX, XXXXXXX, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [LAYER_2] = LAYOUT(
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, KC_0, KC_1, KC_2, KC_3, KC_BSPC, KC_DEL, KC_EXLM, KC_AT, KC_HASH, XXXXXXX, KC_LPRN,
+ _______, _______, KC_0, KC_4, KC_5, KC_6, KC_DEL, KC_BSPC, KC_DLR, KC_PERC, KC_CIRC, XXXXXXX, XXXXXXX, KC_RPRN,
+ _______, KC_0, KC_7, KC_8, KC_9, KC_DOT, _______, _______, _______, _______, XXXXXXX, KC_AMPR, KC_ASTR, XXXXXXX, XXXXXXX, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
+
diff --git a/keyboards/avalanche/v4/keymaps/winder/config.h b/keyboards/avalanche/v4/keymaps/winder/config.h
new file mode 100644
index 0000000000..ca4b822f1b
--- /dev/null
+++ b/keyboards/avalanche/v4/keymaps/winder/config.h
@@ -0,0 +1,12 @@
+// Copyright 2022 Will Winder (@winder)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#undef RGBLIGHT_EFFECT_BREATHING
+#undef RGBLIGHT_EFFECT_KNIGHT
+#undef RGBLIGHT_EFFECT_SNAKE
+#undef RGBLIGHT_EFFECT_CHRISTMAS
+#undef RGBLIGHT_EFFECT_RGB_TEST
+#undef RGBLIGHT_EFFECT_STATIC_GRADIENT
+#undef RGBLIGHT_EFFECT_ALTERNATING
diff --git a/keyboards/avalanche/v4/keymaps/winder/images.h b/keyboards/avalanche/v4/keymaps/winder/images.h
new file mode 100644
index 0000000000..2202e31574
--- /dev/null
+++ b/keyboards/avalanche/v4/keymaps/winder/images.h
@@ -0,0 +1,69 @@
+// Copyright 2022 Will Winder (@winder)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+static const char display [] PROGMEM = {
+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, 0x7f, 0x3f, 0x9f, 0xcf, 0x8f, 0x1f, 0x3f, 0x7f, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x7f, 0x7f, 0x3f, 0x3f, 0x7f, 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, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x1f, 0xcf, 0xef,
+0xe7, 0xcf, 0x8f, 0x1e, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xf1, 0xe3, 0xf7, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3f, 0xbf, 0x9f, 0x1f, 0x3f,
+0x7b, 0xf0, 0xfe, 0xff, 0xff, 0xfe, 0x7c, 0x78, 0x71, 0x03, 0x87, 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, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x3f, 0xff, 0xf3, 0xe3, 0xd7, 0xef, 0xdf, 0x9c, 0x39, 0x73,
+0xe7, 0xef, 0xcf, 0xcf, 0xce, 0xe0, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xdf, 0x9f, 0xbf, 0x3f, 0x1f, 0xc8, 0xe1, 0xc7, 0x9f, 0x3f, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0x7f, 0x7f, 0x7f, 0xe7, 0xc7, 0x9f, 0x3f, 0x7d, 0xf0, 0xe3, 0xc7, 0x8f, 0x9f, 0x3e,
+0x3c, 0xb8, 0x81, 0xc3, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xbf, 0x1f, 0x3f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xcf, 0xe7,
+0xf3, 0xf9, 0x71, 0x03, 0x87, 0x8f, 0x1e, 0x3c, 0x79, 0xf3, 0xee, 0x9d, 0xfb, 0xf3, 0xf7, 0xfe,
+0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xe7, 0xf3,
+0xf9, 0xfc, 0xf9, 0xf3, 0xe7, 0xcf, 0x9f, 0x3f, 0x7e, 0xfe, 0xfc, 0xfd, 0xf9, 0xf8, 0xf8, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x9f, 0x3f, 0x7f,
+0xff, 0xfe, 0xfe, 0xfc, 0xf0, 0xe6, 0xcd, 0x9d, 0x3b, 0x7a, 0xf0, 0xf1, 0xe1, 0xf3, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x47, 0x1f,
+0x3d, 0xf9, 0xf9, 0xf3, 0x83, 0x30, 0x78, 0x78, 0x71, 0x23, 0x87, 0xcf, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xe7, 0xef, 0xcf, 0x0e, 0x0c, 0xe1, 0xe3, 0xe7, 0xcf,
+0x1f, 0x3e, 0x7e, 0xff, 0xef, 0xe7, 0xf3, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xf9, 0xf3, 0xe7, 0xcf, 0x9f, 0x3f, 0x7f,
+0x7f, 0x3f, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xbf, 0x9f, 0xbf, 0x3f, 0x3b, 0x33, 0x87, 0x8f, 0x9f, 0x3f, 0x7f, 0xff, 0xfe,
+0xfc, 0xb9, 0x83, 0xc7, 0xe7, 0xf3, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xbf, 0x9f, 0xcf, 0xc7, 0x33, 0x7f, 0xfe, 0xfc, 0xfc, 0xf9, 0xf8, 0xf6, 0xe7,
+0xee, 0xc8, 0x83, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf9, 0xf9, 0xf9, 0xf9,
+0xfc, 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, 0xfb, 0xf8, 0xfc,
+0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0x07, 0x73,
+0xfb, 0xfb, 0xf3, 0xe7, 0xcf, 0x9f, 0x3f, 0xf8, 0xf0, 0xe7, 0xe7, 0xe7, 0xe7, 0xf0, 0xf8, 0xfd,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x87, 0x33,
+0x3b, 0x39, 0x3b, 0x9f, 0x9f, 0x9f, 0x3f, 0x7f, 0xfe, 0xfc, 0xd9, 0xc3, 0xe3, 0xf3, 0xf9, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xdf, 0xdf, 0xdf, 0xbf, 0x7f, 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, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xe7, 0xf3, 0xf9, 0xf8, 0xf1, 0xe3, 0xc7, 0x8f, 0x1f, 0x3e,
+0x7c, 0xf9, 0xf3, 0xf3, 0xf3, 0xf3, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf3, 0xf9, 0xfc, 0xbe, 0x9c, 0xc1, 0xe3, 0xe7, 0xcf,
+0x1f, 0x3f, 0xff, 0xf3, 0xf3, 0xfb, 0xf8, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xbf,
+0xff, 0xff, 0xe7, 0xdb, 0xbb, 0x7b, 0xf7, 0xee, 0xdc, 0xbd, 0xff, 0xf7, 0xf7, 0xf6, 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, 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, 0xfe,
+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, 0xfb, 0xf9, 0xfc,
+0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfc,
+0xf9, 0xf3, 0xa7, 0xcf, 0xef, 0xff, 0xfc, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+};
diff --git a/keyboards/avalanche/v4/keymaps/winder/keymap.c b/keyboards/avalanche/v4/keymaps/winder/keymap.c
new file mode 100644
index 0000000000..75de2f11a8
--- /dev/null
+++ b/keyboards/avalanche/v4/keymaps/winder/keymap.c
@@ -0,0 +1,135 @@
+// Copyright 2022 Viatly Volkov (@vlkv)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/*
+qmk compile -kb avalanche/v4 -km default
+qmk flash -kb avalanche/v4 -km default
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layer {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define FN_1 MO(_LOWER)
+#define FN_2 MO(_RAISE)
+
+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_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_LCTL, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_UNDS,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_DEL , KC_LGUI, /**/ KC_INS , KC_BSPC, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,
+ KC_LGUI, KC_LALT, KC_LGUI, FN_1 , KC_ENT , /**/ FN_2 , KC_SPC , KC_BSPC, KC_RALT, KC_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_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , 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_PIPE, _______,
+ _______, KC_EQL , KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, _______, _______, /**/ _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______,
+ _______, _______, _______, _______, _______, /**/ _______, _______, _______, _______, _______
+ ),
+ [_RAISE] = LAYOUT(
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, KC_0, KC_1, KC_2, KC_3, KC_BSPC, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, _______, KC_0, KC_4, KC_5, KC_6, KC_DEL, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, KC_0, KC_7, KC_8, KC_9, KC_DOT, _______, _______, /**/ _______, _______, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ _______, _______, _______, _______, _______, /**/ _______, _______, _______, _______, _______
+ ),
+};
+
+#ifdef OLED_ENABLE
+
+#include "images.h"
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_0;
+}
+
+void shiftright(char* buf, int size, int num) {
+ for (int i = size-1; i > 0; i--) {
+ buf[i] >>= 1;
+ if (buf[i-1] & 0x01) {
+ buf[i] |= 0x80;
+ }
+ }
+ buf[0] >>= 1;
+}
+
+// right to left, 8 bit vertical strips.
+void mask(char* enable) {
+ char rowenable[3];
+ const char* data = display;
+ int i = 0;
+ char blockmask[2] = { 0x00, 0x00 };
+
+ while (i < sizeof(display)) {
+ if (i % 128 == 0) {
+ // shift enable-mask right 1 at each row, reinitialize row copy
+ if (i != 0) {
+ shiftright(enable, 3, 2);
+ }
+ rowenable[0] = enable[0];
+ rowenable[1] = enable[1];
+ rowenable[2] = enable[2];
+ }
+
+ if (i % 8 == 0) {
+ if (rowenable[2] & 0x01) {
+ blockmask[1] = 0xff;
+ } else {
+ blockmask[1] = 0x00;
+ }
+
+ if (rowenable[2] & 0x02) {
+ blockmask[0] = 0xff;
+ } else {
+ blockmask[0] = 0x00;
+ }
+ shiftright(rowenable, 3, 2);
+ }
+
+ uint8_t c = pgm_read_byte(data++);
+ oled_write_raw_byte(c & blockmask[1], i++);
+ shiftright(blockmask, 2, 1);
+ }
+}
+
+void setmask(char* mask) {
+ mask[0] = 0x00;
+ mask[1] = 0x00;
+ mask[2] = 0x00;
+
+ uint8_t mod = get_mods() | get_oneshot_mods();
+ if (mod & MOD_MASK_CTRL) {
+ mask[1] |= 0xf0;
+ }
+ if (mod & MOD_MASK_ALT) {
+ mask[1] |= 0x0f;
+ }
+ if (mod & MOD_MASK_GUI) {
+ mask[0] |= 0xf0;
+ }
+
+ switch (get_highest_layer(layer_state)) {
+ case _LOWER:
+ mask[2] |= 0xf0;
+ break;
+ case _RAISE:
+ mask[0] |= 0x0f;
+ break;
+ }
+}
+
+bool oled_task_user(void) {
+ char m[3];
+ setmask(m);
+ mask(m);
+ return false;
+}
+
+#endif
+
diff --git a/keyboards/avalanche/v4/keymaps/winder/rules.mk b/keyboards/avalanche/v4/keymaps/winder/rules.mk
new file mode 100644
index 0000000000..1e3cebb145
--- /dev/null
+++ b/keyboards/avalanche/v4/keymaps/winder/rules.mk
@@ -0,0 +1 @@
+RGBLIGHT_ENABLE = yes
diff --git a/keyboards/avalanche/v4/rules.mk b/keyboards/avalanche/v4/rules.mk
new file mode 100644
index 0000000000..370dc1a6a8
--- /dev/null
+++ b/keyboards/avalanche/v4/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 = 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
+
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/avalanche/v4/v4.c b/keyboards/avalanche/v4/v4.c
new file mode 100644
index 0000000000..69c64fc53c
--- /dev/null
+++ b/keyboards/avalanche/v4/v4.c
@@ -0,0 +1,18 @@
+// Copyright 2022 Vitaly Volkov (@vlkv)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "avalanche.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;
+ }
+ oled_write_P(PSTR("Avalanche\nVersion 4"), false);
+ return true;
+}
+#endif
diff --git a/keyboards/avalanche/v4/v4.h b/keyboards/avalanche/v4/v4.h
new file mode 100644
index 0000000000..fde80607b2
--- /dev/null
+++ b/keyboards/avalanche/v4/v4.h
@@ -0,0 +1,31 @@
+// Copyright 2022 Vitaly Volkov (@vlkv)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "avalanche.h"
+
+#include "quantum.h"
+
+#define L__ KC_NO
+#define R__ KC_NO
+
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, R05, R04, R03, R02, R01, R00, \
+ L10, L11, L12, L13, L14, L15, R15, R14, R13, R12, R11, R10, \
+ L40, L20, L21, L22, L23, L24, L25, R25, R24, R23, R22, R21, R20, R40, \
+ L30, L31, L32, L33, L34, L35, L36, L26, R26, R36, R35, R34, R33, R32, R31, R30, \
+ L42, L43, L44, L45, L46, R46, R45, R44, R43, R42 \
+) \
+{ \
+ { L00, L01, L02, L03, L04, L05, L__}, \
+ { L10, L11, L12, L13, L14, L15, L__}, \
+ { L20, L21, L22, L23, L24, L25, L26}, \
+ { L30, L31, L32, L33, L34, L35, L36}, \
+ { L40, L__, L42, L43, L44, L45, L46}, \
+ { R00, R01, R02, R03, R04, R05, R__}, \
+ { R10, R11, R12, R13, R14, R15, R__}, \
+ { R20, R21, R22, R23, R24, R25, R26}, \
+ { R30, R31, R32, R33, R34, R35, R36}, \
+ { R40, R__, R42, R43, R44, R45, R46} \
+}
diff --git a/keyboards/aves60/config.h b/keyboards/aves60/config.h
index d44951a4ce..8e59e88d83 100644
--- a/keyboards/aves60/config.h
+++ b/keyboards/aves60/config.h
@@ -5,13 +5,6 @@
#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
@@ -28,7 +21,6 @@
*/
#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
diff --git a/keyboards/aves60/info.json b/keyboards/aves60/info.json
index f921de058a..6d1c7f4e37 100644
--- a/keyboards/aves60/info.json
+++ b/keyboards/aves60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Aves60",
+ "keyboard_name": "Aves 60",
+ "manufacturer": "I/O Keyboards",
"url": "https://iokeyboards.eu/",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x9991",
+ "pid": "0xD408",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/aves60/readme.md b/keyboards/aves60/readme.md
index 5a96d2b2eb..049d2d99d8 100644
--- a/keyboards/aves60/readme.md
+++ b/keyboards/aves60/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/aves65/config.h b/keyboards/aves65/config.h
index 5ae386512c..59b54ebc73 100644
--- a/keyboards/aves65/config.h
+++ b/keyboards/aves65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x9991
-#define PRODUCT_ID 0x9038
-#define DEVICE_VER 0x0001
-#define MANUFACTURER I/O Keyboards
-#define PRODUCT Aves65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS {D4,D6,D7,B4,E6}
#define MATRIX_COL_PINS {D0,D1,D2,D3,D5,B5,F0,F1,F4,F5,F6,F7,C7,C6,B6}
-#define UNUSED_PINS {B7,B1,B2,B3}
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/aves65/info.json b/keyboards/aves65/info.json
index 4531d93b81..789725a9d2 100644
--- a/keyboards/aves65/info.json
+++ b/keyboards/aves65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Aves65",
+ "manufacturer": "I/O Keyboards",
"url": "",
"maintainer": "Hund",
+ "usb": {
+ "vid": "0x9991",
+ "pid": "0x9038",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/axolstudio/foundation_gamma/config.h b/keyboards/axolstudio/foundation_gamma/config.h
index 6883e51d57..59b4339428 100644
--- a/keyboards/axolstudio/foundation_gamma/config.h
+++ b/keyboards/axolstudio/foundation_gamma/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x525C
-#define PRODUCT_ID 0xE3EB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Axolstudio
-#define PRODUCT Foundation Gamma
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/axolstudio/foundation_gamma/info.json b/keyboards/axolstudio/foundation_gamma/info.json
index 8845e6ce77..e26e61f1e4 100644
--- a/keyboards/axolstudio/foundation_gamma/info.json
+++ b/keyboards/axolstudio/foundation_gamma/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Foundation Gamma",
+ "manufacturer": "Axolstudio",
"url": "https://axolstudio.ca/foundation-gamma",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0x525C",
+ "pid": "0xE3EB",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_ansi_tsangan": "LAYOUT_tkl_f13_ansi_tsangan",
"LAYOUT_all": "LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift"
diff --git a/keyboards/axolstudio/foundation_gamma/readme.md b/keyboards/axolstudio/foundation_gamma/readme.md
index 522ddd16c6..5736a0c1d3 100644
--- a/keyboards/axolstudio/foundation_gamma/readme.md
+++ b/keyboards/axolstudio/foundation_gamma/readme.md
@@ -22,4 +22,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
* **Bootmagic reset**: Hold down the top left key and plug in the keyboard
* **Physical reset button**: Briefly press the button labeled "SW1" on the back of the PCB
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/axolstudio/helpo/config.h b/keyboards/axolstudio/helpo/config.h
index 927c7cc56c..5251f7aefb 100644
--- a/keyboards/axolstudio/helpo/config.h
+++ b/keyboards/axolstudio/helpo/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x525C
-#define PRODUCT_ID 0xC89F
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Axolstudio
-#define PRODUCT Helpo
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 5
diff --git a/keyboards/axolstudio/helpo/info.json b/keyboards/axolstudio/helpo/info.json
index 5ec0cc7d13..5c25c7df05 100644
--- a/keyboards/axolstudio/helpo/info.json
+++ b/keyboards/axolstudio/helpo/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "helpo",
+ "keyboard_name": "Helpo",
+ "manufacturer": "Axolstudio",
"url": "",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0x525C",
+ "pid": "0xC89F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/axolstudio/yeti/hotswap/config.h b/keyboards/axolstudio/yeti/hotswap/config.h
index 559b62a81d..1f0540c9e1 100644
--- a/keyboards/axolstudio/yeti/hotswap/config.h
+++ b/keyboards/axolstudio/yeti/hotswap/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x525C
-#define PRODUCT_ID 0x9F9E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DZtech
-#define PRODUCT Yeti RGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/axolstudio/yeti/hotswap/info.json b/keyboards/axolstudio/yeti/hotswap/info.json
index 72042a98a3..eef82fa2dd 100644
--- a/keyboards/axolstudio/yeti/hotswap/info.json
+++ b/keyboards/axolstudio/yeti/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "yeti hotswap",
+ "keyboard_name": "Yeti Hotswap",
+ "manufacturer": "Axolstudio",
"url": "https://axolstudio.ca/yeti",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0x525C",
+ "pid": "0x9F9E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/axolstudio/yeti/hotswap/readme.md b/keyboards/axolstudio/yeti/hotswap/readme.md
index 79fad346f3..4421847705 100644
--- a/keyboards/axolstudio/yeti/hotswap/readme.md
+++ b/keyboards/axolstudio/yeti/hotswap/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/axolstudio/yeti/soldered/config.h b/keyboards/axolstudio/yeti/soldered/config.h
index 34b47bbcac..74468f29e2 100644
--- a/keyboards/axolstudio/yeti/soldered/config.h
+++ b/keyboards/axolstudio/yeti/soldered/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x525C
-#define PRODUCT_ID 0x9F9F
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Axolstudio
-#define PRODUCT Yeti
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/axolstudio/yeti/soldered/info.json b/keyboards/axolstudio/yeti/soldered/info.json
index 9c6c122ce3..e7e0143786 100644
--- a/keyboards/axolstudio/yeti/soldered/info.json
+++ b/keyboards/axolstudio/yeti/soldered/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "yeti soldered",
+ "keyboard_name": "Yeti Soldered",
+ "manufacturer": "Axolstudio",
"url": "https://axolstudio.ca/yeti",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0x525C",
+ "pid": "0x9F9F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice": {
"layout": [
diff --git a/keyboards/axolstudio/yeti/soldered/readme.md b/keyboards/axolstudio/yeti/soldered/readme.md
index 78ca4d5deb..429cc7ce9a 100644
--- a/keyboards/axolstudio/yeti/soldered/readme.md
+++ b/keyboards/axolstudio/yeti/soldered/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/aya/config.h b/keyboards/aya/config.h
index 0381f224ca..aa100864f2 100644
--- a/keyboards/aya/config.h
+++ b/keyboards/aya/config.h
@@ -18,12 +18,6 @@
#include "config_common.h"
-#define VENDOR_ID 0x1209
-#define PRODUCT_ID 0x2925
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DanNixon
-#define PRODUCT Aya
-
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
diff --git a/keyboards/aya/info.json b/keyboards/aya/info.json
index 8db200eb6a..d8093bad72 100644
--- a/keyboards/aya/info.json
+++ b/keyboards/aya/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Aya",
+ "manufacturer": "DanNixon",
"url": "https://github.com/DanNixon/aya",
"maintainer": "dannixon",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0x2925",
+ "device_version": "0.0.1"
+ },
"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":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":7, "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":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":7, "y":3}, {"x":8, "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}, {"x":16, "y":3}, {"x":17, "y":3}, {"x":18, "y":3}, {"x":5, "y":4}, {"x":6, "y":4}, {"x":7, "y":4}, {"x":8, "y":4}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}]
diff --git a/keyboards/b_sides/rev41lp/config.h b/keyboards/b_sides/rev41lp/config.h
new file mode 100644
index 0000000000..3628cc4db5
--- /dev/null
+++ b/keyboards/b_sides/rev41lp/config.h
@@ -0,0 +1,37 @@
+/*
+Copyright 2021 @cyril279
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 7
+#define MATRIX_COLS 6
+
+#define MATRIX_ROW_PINS { F4, B2, F5, B3, F6, B1, F7 }
+#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define BACKLIGHT_PIN B6
+#define BACKLIGHT_ON_STATE 1
+#define BACKLIGHT_LEVELS 7
+#define BACKLIGHT_LIMIT_VAL 150
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
diff --git a/keyboards/b_sides/rev41lp/info.json b/keyboards/b_sides/rev41lp/info.json
new file mode 100644
index 0000000000..fb5b0c17c1
--- /dev/null
+++ b/keyboards/b_sides/rev41lp/info.json
@@ -0,0 +1,64 @@
+{
+ "keyboard_name": "rev41lp",
+ "manufacturer": "cyril279",
+ "url": "https://github.com/cyril279/keyboards/tree/main/revlp/41_1350",
+ "maintainer": "cyril279",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x5F10",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_rev41lp": {
+ "layout": [
+ {"label":"K00", "x":0, "y":0.54},
+ {"label":"K01", "x":1, "y":0.36},
+ {"label":"K02", "x":2, "y":0.18},
+ {"label":"K03", "x":3, "y":0},
+ {"label":"K04", "x":4, "y":0.18},
+ {"label":"K05", "x":5, "y":0.36},
+
+ {"label":"K10", "x":7, "y":0.36},
+ {"label":"K11", "x":8, "y":0.18},
+ {"label":"K12", "x":9, "y":0},
+ {"label":"K13", "x":10, "y":0.18},
+ {"label":"K14", "x":11, "y":0.36},
+ {"label":"K15", "x":12, "y":0.54},
+
+ {"label":"K20", "x":0, "y":1.54},
+ {"label":"K21", "x":1, "y":1.36},
+ {"label":"K22", "x":2, "y":1.18},
+ {"label":"K23", "x":3, "y":1},
+ {"label":"K24", "x":4, "y":1.18},
+ {"label":"K25", "x":5, "y":1.36},
+
+ {"label":"K30", "x":7, "y":1.36},
+ {"label":"K31", "x":8, "y":1.18},
+ {"label":"K32", "x":9, "y":1},
+ {"label":"K33", "x":10, "y":1.18},
+ {"label":"K34", "x":11, "y":1.36},
+ {"label":"K35", "x":12, "y":1.54},
+
+ {"label":"K40", "x":0, "y":2.54},
+ {"label":"K41", "x":1, "y":2.36},
+ {"label":"K42", "x":2, "y":2.18},
+ {"label":"K43", "x":3, "y":2},
+ {"label":"K44", "x":4, "y":2.18},
+ {"label":"K45", "x":5, "y":2.36},
+
+ {"label":"K50", "x":7, "y":2.36},
+ {"label":"K51", "x":8, "y":2.18},
+ {"label":"K52", "x":9, "y":2},
+ {"label":"K53", "x":10, "y":2.18},
+ {"label":"K54", "x":11, "y":2.36},
+ {"label":"K55", "x":12, "y":2.54},
+
+ {"label":"K60", "x":2.875, "y":3.54, "w":1.25},
+ {"label":"K61", "x":4.125, "y":3.54, "w":1.25},
+ {"label":"K62", "x":5.375, "y":3.54, "w":2.25},
+ {"label":"K63", "x":7.625, "y":3.54, "w":1.25},
+ {"label":"K64", "x":8.875, "y":3.54, "w":1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/b_sides/rev41lp/keymaps/cyril/config.h b/keyboards/b_sides/rev41lp/keymaps/cyril/config.h
new file mode 100644
index 0000000000..4677c5f1d4
--- /dev/null
+++ b/keyboards/b_sides/rev41lp/keymaps/cyril/config.h
@@ -0,0 +1,21 @@
+/*
+Copyright 2021 @cyril279
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 150
+#define TAPPING_TERM_PER_KEY
+#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/keyboards/b_sides/rev41lp/keymaps/cyril/keymap.c b/keyboards/b_sides/rev41lp/keymaps/cyril/keymap.c
new file mode 100644
index 0000000000..fd87a98d19
--- /dev/null
+++ b/keyboards/b_sides/rev41lp/keymaps/cyril/keymap.c
@@ -0,0 +1,105 @@
+/*
+Copyright 2021 @cyril279
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+ _NAVIG,
+ _FUNCTION
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define ADJUST MO(_ADJUST)
+#define SPC_NAV LT(_NAVIG,KC_SPC)
+#define FUNCT MO(_FUNCTION)
+#define NAVIG MO(_NAVIG)
+
+#define LGUI_A LGUI_T(KC_A)
+#define LALT_S LALT_T(KC_S)
+#define LSFT_D LSFT_T(KC_D)
+#define LCTL_F LCTL_T(KC_F)
+#define RCTL_J RCTL_T(KC_J)
+#define RSFT_K RSFT_T(KC_K)
+#define RALT_L LALT_T(KC_L)
+#define RGUI_SCLN RGUI_T(KC_SCLN)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_rev41lp(
+ 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, LALT_S, LSFT_D, LCTL_F, KC_G, KC_H, RCTL_J, RSFT_K, RALT_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_ENT,
+ KC_LGUI, LOWER, SPC_NAV, RAISE, FUNCT
+ ),
+
+ [_LOWER] = LAYOUT_rev41lp(
+ KC_GRV, 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_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, _______, KC_LGUI, KC_LALT, KC_CAPS, _______, KC_PSCR, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_rev41lp(
+ KC_TILD, 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_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, _______, KC_LGUI, KC_LALT, KC_CAPS, _______, KC_PSCR, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______
+ ),
+
+ [_NAVIG] = LAYOUT_rev41lp(
+ KC_DEL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO,
+ _______, _______, KC_LGUI, KC_LALT, KC_CAPS, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______,
+ _______, _______, _______, _______, _______
+ ),
+
+ [_FUNCTION] = LAYOUT_rev41lp(
+ KC_DEL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL,
+ _______, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ _______, _______, KC_LGUI, KC_LALT, KC_CAPS, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, _______, _______, _______, _______
+ ),
+
+ [_ADJUST] = LAYOUT_rev41lp(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_TOGG, BL_BRTG, BL_INC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, 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);
+}
+
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LGUI_A:
+ case RGUI_SCLN:
+ case LALT_S:
+ case RALT_L:
+ case LCTL_F:
+ case RCTL_J:
+ case SPC_NAV:
+ return 225;
+ default:
+ return TAPPING_TERM;
+ }
+}
diff --git a/keyboards/b_sides/rev41lp/keymaps/default/keymap.c b/keyboards/b_sides/rev41lp/keymaps/default/keymap.c
new file mode 100644
index 0000000000..1e721883b2
--- /dev/null
+++ b/keyboards/b_sides/rev41lp/keymaps/default/keymap.c
@@ -0,0 +1,48 @@
+/*
+Copyright 2021 @cyril279
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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_rev41lp(
+ 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, RSFT_T(KC_ENT),
+ KC_LALT, MO(1), KC_SPC, MO(2), KC_LGUI
+ ),
+
+ [1] = LAYOUT_rev41lp(
+ _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_GRV, KC_TILD,
+ _______, KC_ESC, KC_LGUI, KC_LALT, KC_CAPS, KC_DQUO, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_PSCR, RSFT_T(KC_SPC),
+ _______, _______, KC_ENT, MO(3), _______
+ ),
+
+ [2] = LAYOUT_rev41lp(
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ _______, KC_ESC, KC_RGUI, KC_RALT, KC_CAPS, KC_QUOT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, MO(3), KC_BSPC, _______, _______
+ ),
+
+ [3] = LAYOUT_rev41lp(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_TOGG, BL_BRTG, BL_INC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, _______, _______, _______, _______
+ )
+};
+
diff --git a/keyboards/b_sides/rev41lp/keymaps/namnlos/config.h b/keyboards/b_sides/rev41lp/keymaps/namnlos/config.h
new file mode 100644
index 0000000000..69d44bdd03
--- /dev/null
+++ b/keyboards/b_sides/rev41lp/keymaps/namnlos/config.h
@@ -0,0 +1,43 @@
+/* Copyright 2022 Jan Lindblom (@janlindblom)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 BACKLIGHT_LEVELS
+#define BACKLIGHT_LEVELS 11
+#undef BACKLIGHT_LIMIT_VAL
+#define BACKLIGHT_LIMIT_VAL 255
+#define BACKLIGHT_DEFAULT_LEVEL 3
+
+#define COMBO_COUNT 3
+#define IGNORE_MOD_TAP_INTERRUPT
+
+#define UNICODE_SELECTED_MODES UC_WINC, UC_WIN, UC_MAC, UC_LNX
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 200
+#define TAPPING_TERM_PER_KEY
+
+#define LAYER_STATE_8BIT
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+#define NO_ACTION_ONESHOT
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* key combination for command */
+#define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || get_mods() == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)))
diff --git a/keyboards/b_sides/rev41lp/keymaps/namnlos/keymap.c b/keyboards/b_sides/rev41lp/keymaps/namnlos/keymap.c
new file mode 100644
index 0000000000..968f96f3b2
--- /dev/null
+++ b/keyboards/b_sides/rev41lp/keymaps/namnlos/keymap.c
@@ -0,0 +1,176 @@
+/* Copyright 2022 Jan Lindblom (@janlindblom)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_swedish.h"
+#include "sendstring_swedish.h"
+
+enum layer_names {
+ _BASE,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+enum custom_keycodes {
+ SK_NOT_EQL = SAFE_RANGE,
+ SK_LEQ,
+ SK_GEQ,
+};
+
+// Custom send_string keys
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case SK_NOT_EQL:
+ if (record->event.pressed) {
+ SEND_STRING("!=");
+ }
+ break;
+ case SK_LEQ:
+ if (record->event.pressed) {
+ SEND_STRING("<=");
+ }
+ break;
+ case SK_GEQ:
+ if (record->event.pressed) {
+ SEND_STRING(">=");
+ }
+ break;
+ }
+ return true;
+}
+
+// Combos, if enabled
+#ifdef COMBO_ENABLE
+enum combo_events {
+ ZC_COPY,
+ XV_PASTE,
+ ZX_CUT,
+};
+
+const uint16_t PROGMEM copy_combo[] = {KC_Z, KC_C, COMBO_END};
+const uint16_t PROGMEM paste_combo[] = {KC_X, KC_V, COMBO_END};
+const uint16_t PROGMEM cut_combo[] = {KC_Z, KC_X, COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+ [ZC_COPY] = COMBO_ACTION(copy_combo),
+ [XV_PASTE] = COMBO_ACTION(paste_combo),
+ [ZX_CUT] = COMBO_ACTION(cut_combo),
+};
+
+void process_combo_event(uint16_t combo_index, bool pressed) {
+ switch (combo_index) {
+ case ZC_COPY:
+ if (pressed) {
+ tap_code16(LCTL(KC_C));
+ }
+ break;
+ case XV_PASTE:
+ if (pressed) {
+ tap_code16(LCTL(KC_V));
+ }
+ break;
+ case ZX_CUT:
+ if (pressed) {
+ tap_code16(LCTL(KC_X));
+ }
+ break;
+ }
+}
+#endif
+
+// Tap Dance definitions
+#ifdef TAP_DANCE_ENABLE
+enum dances {
+ TD_SHFT_CAPS,
+ TD_DOT_COL,
+ TD_COM_SCL,
+ TD_DASH_USCR,
+};
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ // Tap once for Shift, twice for Caps Lock
+ [TD_SHFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS),
+ [TD_COM_SCL] = ACTION_TAP_DANCE_DOUBLE(KC_COMM, SE_SCLN),
+ [TD_DOT_COL] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, SE_COLN),
+ [TD_DASH_USCR] = ACTION_TAP_DANCE_DOUBLE(SE_MINS, S(SE_MINS)),
+};
+# define CK_LSFT TD(TD_SHFT_CAPS)
+# define CK_COMM TD(TD_COM_SCL)
+# define CK_DOT TD(TD_DOT_COL)
+# define CK_DASH TD(TD_DASH_USCR)
+#else
+# define CK_LSFT KC_LSFT
+# define CK_COMM KC_COMM
+# define CK_DOT KC_DOT
+# define CK_DASH SE_MINS
+#endif
+
+// Some defines for the keys below
+#define CK_ESC LT(_RAISE, KC_ESC)
+#define CK_BSPC LCTL_T(KC_BSPC)
+#define CK_DEL LALT_T(KC_DEL)
+#define CK_ENT1 LT(_LOWER, KC_ENT)
+#define CK_ENT2 LT(_RAISE, KC_ENT)
+#define CK_TAB RALT_T(KC_TAB)
+#define CK_ADIA RCTL_T(SE_ADIA)
+#define CK_QUOT RSFT_T(SE_QUOT)
+#define CK_SPC RSFT_T(KC_SPC)
+
+// Alt + [-] => – (en-dash)
+const key_override_t mins_ndash_override = ko_make_basic(MOD_MASK_ALT, SE_MINS, UC(0x2013));
+ // Shift + Alt + [-] => — (em-dash)
+const key_override_t mins_mdash_override = ko_make_basic(MOD_MASK_SA, SE_MINS, UC(0x2014));
+
+const key_override_t **key_overrides = (const key_override_t *[]){
+ &mins_ndash_override,
+ &mins_mdash_override,
+ NULL
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_rev41lp(
+ CK_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SE_ARNG,
+ CK_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SE_ODIA, CK_ADIA,
+ CK_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, SE_COMM, SE_DOT, SE_MINS, CK_QUOT,
+ CK_DEL, CK_ENT1, KC_SPC, CK_ENT2, CK_TAB
+ ),
+
+ [_LOWER] = LAYOUT_rev41lp(
+ SK_NOT_EQL, SE_EXLM, SE_AT, SE_HASH, SE_DLR, SE_PERC, SE_CIRC, SE_AMPR, SE_ASTR, SE_LPRN, SE_RPRN, SE_DIAE,
+ SK_LEQ, SE_UNDS, SE_PLUS, SE_LCBR, SE_RCBR, SE_PIPE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, SE_GRV, SE_TILD,
+ SK_GEQ, KC_ESC, KC_LGUI, KC_LALT, KC_CAPS, SE_DQUO, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_PSCR, CK_SPC,
+ _______, _______, KC_ENT, _______, _______
+ ),
+
+ [_RAISE] = LAYOUT_rev41lp(
+ _______, SE_1, SE_2, SE_3, SE_4, SE_5, SE_6, SE_7, SE_8, SE_9, SE_0, SE_GRV,
+ _______, SE_MINS, SE_EQL, SE_LBRC, SE_RBRC, SE_BSLS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ _______, KC_ESC, KC_RGUI, KC_RALT, KC_CAPS, SE_ACUT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ SE_LABK, SE_RABK, KC_BSPC, _______, _______
+ ),
+
+ [_ADJUST] = LAYOUT_rev41lp(
+ XXXXXXX, XXXXXXX, XXXXXXX, BL_OFF, BL_DEC, BL_TOGG, BL_BRTG, BL_INC, BL_ON, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_STEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, UC_M_WC, UC_M_MA, UC_M_LN, XXXXXXX, XXXXXXX, QK_BOOT, 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/b_sides/rev41lp/keymaps/namnlos/readme.md b/keyboards/b_sides/rev41lp/keymaps/namnlos/readme.md
new file mode 100644
index 0000000000..cc307b3a97
--- /dev/null
+++ b/keyboards/b_sides/rev41lp/keymaps/namnlos/readme.md
@@ -0,0 +1,3 @@
+# Namnlos custom keymap for Rev41lp
+
+This is a nordic keymap for the Rev41lp by [cyril](https://github.com/cyril279), it's based on the default keymap but has customisations for nordic languages.
diff --git a/keyboards/b_sides/rev41lp/keymaps/namnlos/rules.mk b/keyboards/b_sides/rev41lp/keymaps/namnlos/rules.mk
new file mode 100644
index 0000000000..59c3380a3b
--- /dev/null
+++ b/keyboards/b_sides/rev41lp/keymaps/namnlos/rules.mk
@@ -0,0 +1,7 @@
+SLEEP_LED_ENABLE = yes
+NKRO_ENABLE = yes
+UNICODE_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+KEY_OVERRIDE_ENABLE = yes
+DEBOUNCE_TYPE = sym_defer_pk
+LTO_ENABLE = yes
diff --git a/keyboards/b_sides/rev41lp/readme.md b/keyboards/b_sides/rev41lp/readme.md
new file mode 100644
index 0000000000..1a72bbf785
--- /dev/null
+++ b/keyboards/b_sides/rev41lp/readme.md
@@ -0,0 +1,15 @@
+# The rev41lp keyboard
+
+![The rev41lp keyboard by cyril279](https://imgur.com/nZNHSaWh.jpg)
+
+Inspired by the REVIUNG series by Gtips, the rev41lp is 41-key column staggered keyboard designed for use with low-profile Kailh Choc (pg1350) switches.
+
+* Keyboard Maintainer: [cyril279](https://github.com/cyril279)
+* Hardware Supported: The REVlp PCBs, Pro Micro supported, bluetooth controller friendly.
+* Hardware Availability: [PCB Data](https://github.com/cyril279/keyboards/tree/main/revlp)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make b_sides/rev41lp: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/b_sides/rev41lp/rev41lp.c b/keyboards/b_sides/rev41lp/rev41lp.c
new file mode 100644
index 0000000000..d9ab1ed21e
--- /dev/null
+++ b/keyboards/b_sides/rev41lp/rev41lp.c
@@ -0,0 +1,17 @@
+/*
+Copyright 2021 @cyril279
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "rev41lp.h"
diff --git a/keyboards/b_sides/rev41lp/rev41lp.h b/keyboards/b_sides/rev41lp/rev41lp.h
new file mode 100644
index 0000000000..47afd295a0
--- /dev/null
+++ b/keyboards/b_sides/rev41lp/rev41lp.h
@@ -0,0 +1,35 @@
+/*
+Copyright 2021 @cyril279
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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_rev41lp( \
+ 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, K50, K51, K52, K53, K54, K55, \
+ K60, K61, K62, K63, K64 \
+) \
+{ \
+ { 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 }, \
+ { K50, K51, K52, K53, K54, K55 }, \
+ { K60, K61, K62, K63, K64, KC_NO } \
+}
diff --git a/keyboards/b_sides/rev41lp/rules.mk b/keyboards/b_sides/rev41lp/rules.mk
new file mode 100644
index 0000000000..27d9decbbf
--- /dev/null
+++ b/keyboards/b_sides/rev41lp/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 = 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 = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/bacca70/config.h b/keyboards/bacca70/config.h
index 703baaaf3a..9fd41650fb 100644
--- a/keyboards/bacca70/config.h
+++ b/keyboards/bacca70/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBACA
-#define PRODUCT_ID 0x6970
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Viktus Design LLC
-#define PRODUCT Bacca70
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 8
diff --git a/keyboards/bacca70/info.json b/keyboards/bacca70/info.json
index ddc2f894ac..57840b4e12 100644
--- a/keyboards/bacca70/info.json
+++ b/keyboards/bacca70/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Bacca70",
+ "manufacturer": "Viktus Design LLC",
"url": "https://3dkeebs.com/",
"maintainer": "keebnewb",
+ "usb": {
+ "vid": "0xBACA",
+ "pid": "0x6970",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/bacca70/keymaps/debaccabean/keymap.c b/keyboards/bacca70/keymaps/debaccabean/keymap.c
index 66e3ec0b5f..da2ef7715b 100644
--- a/keyboards/bacca70/keymaps/debaccabean/keymap.c
+++ b/keyboards/bacca70/keymaps/debaccabean/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_debaccabean(
- 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,
+ QK_BOOT, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,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_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_UP, KC_PGUP,KC_TRNS,KC_TRNS,
KC_TRNS,KC_MPLY,KC_MUTE,KC_VOLD,KC_VOLU,KC_MPRV,KC_MNXT,KC_TRNS,KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,KC_TRNS,
diff --git a/keyboards/bacca70/keymaps/dede-special/keymap.c b/keyboards/bacca70/keymaps/dede-special/keymap.c
index 1c7514e81b..fc71850b6f 100644
--- a/keyboards/bacca70/keymaps/dede-special/keymap.c
+++ b/keyboards/bacca70/keymaps/dede-special/keymap.c
@@ -64,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[3] = LAYOUT_debaccabean(
- 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,TG(1),
+ QK_BOOT, 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(1),
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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_INS, KC_UP, KC_PGUP,KC_TRNS,KC_TRNS,
KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MNXT,KC_TRNS,KC_TRNS,KC_TRNS,KC_LEFT,KC_DOWN,KC_RGHT,KC_TRNS,
diff --git a/keyboards/bacca70/readme.md b/keyboards/bacca70/readme.md
index 2141138b8f..8c79edd494 100644
--- a/keyboards/bacca70/readme.md
+++ b/keyboards/bacca70/readme.md
@@ -14,7 +14,7 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the top left key (Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB. The button is next to the MCU.
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available. For the default keymap it is on the right alt key on the second layer.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. For the default keymap it is on the right alt key on the second layer.
## Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/baguette/config.h b/keyboards/baguette/config.h
index b4937579a3..c4cb1cc373 100644
--- a/keyboards/baguette/config.h
+++ b/keyboards/baguette/config.h
@@ -19,13 +19,6 @@ 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 0x5050
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar
-#define PRODUCT Baguette
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B3, B2, B1, E6, D6 }
#define MATRIX_COL_PINS { B6, C6, C7, F7, F6, F5, F4, F1, F0, B0, D0, D1, D2, D3, D5, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/baguette/info.json b/keyboards/baguette/info.json
index cad167381f..2c6b09fc09 100644
--- a/keyboards/baguette/info.json
+++ b/keyboards/baguette/info.json
@@ -1,8 +1,14 @@
{
"keyboard_name": "Baguette",
+ "manufacturer": "Yiancar",
"url": "",
"maintainer": "qmk",
"bootloader": "atmel-dfu",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x5050",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/bajjak/bajjak.c b/keyboards/bajjak/bajjak.c
new file mode 100644
index 0000000000..74e2b2aa8c
--- /dev/null
+++ b/keyboards/bajjak/bajjak.c
@@ -0,0 +1,227 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
+Copyright 2015 ZSA Technology Labs Inc (@zsa)
+Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+Copyright 2021 Gary Kong <kongkm88@gmail.com> (@garykong)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "bajjak.h"
+
+extern inline void bajjak_board_led_on(void);
+extern inline void bajjak_right_led_1_on(void);
+extern inline void bajjak_right_led_2_on(void);
+extern inline void bajjak_right_led_3_on(void);
+extern inline void bajjak_right_led_on(uint8_t led);
+
+extern inline void bajjak_board_led_off(void);
+extern inline void bajjak_right_led_1_off(void);
+extern inline void bajjak_right_led_2_off(void);
+extern inline void bajjak_right_led_3_off(void);
+extern inline void bajjak_right_led_off(uint8_t led);
+
+extern inline void bajjak_led_all_on(void);
+extern inline void bajjak_led_all_off(void);
+
+extern inline void bajjak_right_led_1_set(uint8_t n);
+extern inline void bajjak_right_led_2_set(uint8_t n);
+extern inline void bajjak_right_led_3_set(uint8_t n);
+extern inline void bajjak_right_led_set(uint8_t led, uint8_t n);
+
+extern inline void bajjak_led_all_set(uint8_t n);
+
+keyboard_config_t keyboard_config;
+
+bool i2c_initialized = 0;
+i2c_status_t mcp23018_status = 0x20;
+
+void matrix_init_kb(void) {
+ // keyboard LEDs (see "PWM on ports OC1(A|B|C)" in "teensy-2-0.md")
+ TCCR1A = 0b10101001; // set and configure fast PWM
+ TCCR1B = 0b00001001; // set and configure fast PWM
+
+ // (tied to Vcc for hardware convenience)
+ DDRB &= ~(1<<4); // set B(4) as input
+ PORTB &= ~(1<<4); // set B(4) internal pull-up disabled
+
+ // unused pins - D4, D5, E6
+ // set as input with internal pull-up enabled
+ DDRD &= ~(1<<5 | 1<<4);
+ DDRE &= ~(1<<6);
+ PORTD |= (1<<5 | 1<<4);
+ PORTE |= (1<<6);
+
+ keyboard_config.raw = eeconfig_read_kb();
+ bajjak_led_all_set((uint8_t)keyboard_config.led_level * 255 / 4 );
+ bajjak_blink_all_leds();
+
+ matrix_init_user();
+}
+
+void bajjak_blink_all_leds(void)
+{
+ bajjak_led_all_off();
+ bajjak_led_all_set(LED_BRIGHTNESS_DEFAULT);
+ bajjak_right_led_1_on();
+ wait_ms(50);
+ bajjak_right_led_2_on();
+ wait_ms(50);
+ bajjak_right_led_3_on();
+ wait_ms(50);
+#ifdef LEFT_LEDS
+ bajjak_left_led_1_on();
+ wait_ms(50);
+ if (!mcp23018_status) {
+ mcp23018_status = bajjak_left_leds_update();
+ }
+ bajjak_left_led_2_on();
+ wait_ms(50);
+ if (!mcp23018_status) {
+ mcp23018_status = bajjak_left_leds_update();
+ }
+#endif
+ bajjak_right_led_1_off();
+ wait_ms(50);
+ bajjak_right_led_2_off();
+ wait_ms(50);
+ bajjak_right_led_3_off();
+#ifdef LEFT_LEDS
+ wait_ms(50);
+ bajjak_left_led_1_off();
+ if (!mcp23018_status) {
+ mcp23018_status = bajjak_left_leds_update();
+ }
+ wait_ms(50);
+ bajjak_left_led_2_off();
+ if (!mcp23018_status) {
+ mcp23018_status = bajjak_left_leds_update();
+ }
+#endif
+
+ //bajjak_led_all_on();
+ //wait_ms(333);
+ bajjak_led_all_off();
+}
+
+uint8_t init_mcp23018(void) {
+ mcp23018_status = 0x20;
+
+ // I2C subsystem
+
+ // uint8_t sreg_prev;
+ // sreg_prev=SREG;
+ // cli();
+
+ if (i2c_initialized == 0) {
+ i2c_init(); // on pins D(1,0)
+ i2c_initialized = true;
+ wait_ms(1000);
+ }
+ // i2c_init(); // on pins D(1,0)
+ // wait_ms(1000);
+
+ // set pin direction
+ // - unused : input : 1
+ // - input : input : 1
+ // - driving : output : 0
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(IODIRA, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b00000000, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b00111111, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ i2c_stop();
+
+ // set pull-up
+ // - unused : on : 1
+ // - input : on : 1
+ // - driving : off : 0
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(GPPUA, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b00000000, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b01111111, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+
+out:
+ i2c_stop();
+
+#ifdef LEFT_LEDS
+ if (!mcp23018_status) mcp23018_status = bajjak_left_leds_update();
+#endif // LEFT_LEDS
+
+ // SREG=sreg_prev;
+
+ return mcp23018_status;
+}
+
+#ifdef LEFT_LEDS
+uint8_t bajjak_left_leds_update(void) {
+ if (mcp23018_status) { // if there was an error
+ return mcp23018_status;
+ }
+#define LEFT_LED_1_SHIFT 7 // in MCP23018 port A
+#define LEFT_LED_2_SHIFT 7 // in MCP23018 port B
+
+ // set logical value (doesn't matter on inputs)
+ // - unused : hi-Z : 1
+ // - input : hi-Z : 1
+ // - driving : hi-Z : 1
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, BAJJAK_EZ_I2C_TIMEOUT);
+ if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(OLATA, BAJJAK_EZ_I2C_TIMEOUT);
+ if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b11111111
+ & ~(bajjak_left_led_1<<LEFT_LED_1_SHIFT),
+ BAJJAK_EZ_I2C_TIMEOUT);
+ if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0b11111111
+ & ~(bajjak_left_led_2<<LEFT_LED_2_SHIFT),
+ BAJJAK_EZ_I2C_TIMEOUT);
+ if (mcp23018_status) goto out;
+
+ out:
+ i2c_stop();
+ return mcp23018_status;
+}
+#endif
+
+
+#ifdef SWAP_HANDS_ENABLE
+__attribute__ ((weak))
+// swap-hands action needs a matrix to define the swap
+const keypos_t hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ /* Left hand, matrix positions */
+ {{0, 13}, {1, 13}, {2, 13}, {3, 13}, {4, 13}, {5, 13}, {6, 13}},
+ {{0, 12}, {1, 12}, {2, 12}, {3, 12}, {4, 12}, {5, 12}, {6, 12}},
+ {{0, 11}, {1, 11}, {2, 11}, {3, 11}, {4, 11}, {5, 11}, {6, 11}},
+ {{0, 10}, {1, 10}, {2, 10}, {3, 10}, {4, 10}, {5, 10}, {6, 10}},
+ {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9}, {6, 9}},
+ {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8}, {6, 8}},
+ {{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}, {6, 7}},
+ /* Right hand, matrix positions */
+ {{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}, {6, 6}},
+ {{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}, {6, 5}},
+ {{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}, {6, 4}},
+ {{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {6, 3}},
+ {{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {6, 2}},
+ {{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {6, 1}},
+ {{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}},
+};
+#endif
+
+void eeconfig_init_kb(void) { // EEPROM is getting reset!
+ keyboard_config.raw = 0;
+ keyboard_config.led_level = 4;
+ eeconfig_update_kb(keyboard_config.raw);
+ eeconfig_init_user();
+}
diff --git a/keyboards/bajjak/bajjak.h b/keyboards/bajjak/bajjak.h
new file mode 100644
index 0000000000..126df7932c
--- /dev/null
+++ b/keyboards/bajjak/bajjak.h
@@ -0,0 +1,165 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
+Copyright 2015 ZSA Technology Labs Inc (@zsa)
+Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+Copyright 2021 Gary Kong <kongkm88@gmail.com> (@garykong)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 <stdint.h>
+#include <stdbool.h>
+#include "i2c_master.h"
+
+// I2C aliases and register addresses (see "mcp23018.md")
+#define I2C_ADDR 0b0100000
+#define I2C_ADDR_WRITE ( (I2C_ADDR<<1) | I2C_WRITE )
+#define I2C_ADDR_READ ( (I2C_ADDR<<1) | I2C_READ )
+#define IODIRA 0x00 // i/o direction register
+#define IODIRB 0x01
+#define GPPUA 0x0C // GPIO pull-up resistor register
+#define GPPUB 0x0D
+#define GPIOA 0x12 // general purpose i/o port register (write modifies OLAT)
+#define GPIOB 0x13
+#define OLATA 0x14 // output latch register
+#define OLATB 0x15
+
+extern i2c_status_t mcp23018_status;
+#define BAJJAK_EZ_I2C_TIMEOUT 100
+
+void init_bajjak(void);
+void bajjak_blink_all_leds(void);
+uint8_t init_mcp23018(void);
+uint8_t bajjak_left_leds_update(void);
+
+#ifndef LED_BRIGHTNESS_LO
+#define LED_BRIGHTNESS_LO 15
+#endif
+#ifndef LED_BRIGHTNESS_HI
+#define LED_BRIGHTNESS_HI 255
+#endif
+
+
+inline void bajjak_board_led_on(void) { setPinOutput(D6); writePinHigh(D6); }
+inline void bajjak_right_led_1_on(void) { setPinOutput(B5); writePinHigh(B5); }
+inline void bajjak_right_led_2_on(void) { setPinOutput(B6); writePinHigh(B6); }
+inline void bajjak_right_led_3_on(void) { setPinOutput(B7); writePinHigh(B7); }
+inline void bajjak_right_led_on(uint8_t led) { setPinOutput(led+4); writePinHigh(led+4); }
+
+inline void bajjak_board_led_off(void) { setPinInput(D6); writePinLow(D6); }
+inline void bajjak_right_led_1_off(void) { setPinInput(B5); writePinLow(B5); }
+inline void bajjak_right_led_2_off(void) { setPinInput(B6); writePinLow(B6); }
+inline void bajjak_right_led_3_off(void) { setPinInput(B7); writePinLow(B7); }
+inline void bajjak_right_led_off(uint8_t led) { setPinInput(led+4); writePinLow(led+4); }
+
+#ifdef LEFT_LEDS
+bool bajjak_left_led_1;
+bool bajjak_left_led_2;
+bool bajjak_left_led_3;
+
+inline void bajjak_left_led_1_on(void) { bajjak_left_led_1 = 1; }
+inline void bajjak_left_led_2_on(void) { bajjak_left_led_2 = 1; }
+
+inline void bajjak_left_led_1_off(void) { bajjak_left_led_1 = 0; }
+inline void bajjak_left_led_2_off(void) { bajjak_left_led_2 = 0; }
+#endif // LEFT_LEDS
+
+inline void bajjak_led_all_on(void) {
+ bajjak_board_led_on();
+ bajjak_right_led_1_on();
+ bajjak_right_led_2_on();
+ bajjak_right_led_3_on();
+#ifdef LEFT_LEDS
+ bajjak_left_led_1_on();
+ bajjak_left_led_2_on();
+#endif // LEFT_LEDS
+}
+
+inline void bajjak_led_all_off(void)
+{
+ bajjak_board_led_off();
+ bajjak_right_led_1_off();
+ bajjak_right_led_2_off();
+ bajjak_right_led_3_off();
+#ifdef LEFT_LEDS
+ bajjak_left_led_1_off();
+ bajjak_left_led_2_off();
+#endif // LEFT_LEDS
+}
+
+inline void bajjak_right_led_1_set(uint8_t n) { OCR1A = n; }
+inline void bajjak_right_led_2_set(uint8_t n) { OCR1B = n; }
+inline void bajjak_right_led_3_set(uint8_t n) { OCR1C = n; }
+inline void bajjak_right_led_set(uint8_t led, uint8_t n) {
+ (led == 1) ? (OCR1A = n) :
+ (led == 2) ? (OCR1B = n) :
+ (OCR1C = n);
+}
+
+inline void bajjak_led_all_set(uint8_t n) {
+ bajjak_right_led_1_set(n);
+ bajjak_right_led_2_set(n);
+ bajjak_right_led_3_set(n);
+}
+
+enum BAJJAK_ez_keycodes {
+ LED_LEVEL = SAFE_RANGE,
+ TOGGLE_LAYER_COLOR,
+ EZ_SAFE_RANGE,
+};
+
+#ifndef WEBUSB_ENABLE
+# define WEBUSB_PAIR KC_NO
+#endif
+
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t led_level :3;
+ bool disable_layer_led :1;
+ };
+} keyboard_config_t;
+
+extern keyboard_config_t keyboard_config;
+
+#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, R41, R42, R43, R44, R45, R46, \
+ L50, L51, L52, L53, L54, R52, R53, R54, R55, R56, \
+ L65, L66, R60, R61, \
+ L64, R62, \
+ L63, L62, L61, R65, R64, R63 \
+ ) { \
+ { L00, L10, L20, L30, L40, L50, KC_NO }, \
+ { L01, L11, L21, L31, L41, L51, L61 }, \
+ { L02, L12, L22, L32, L42, L52, L62 }, \
+ { L03, L13, L23, L33, L43, L53, L63 }, \
+ { L04, L14, L24, L34, L44, L54, L64 }, \
+ { L05, L15, L25, L35, L45, KC_NO, L65 }, \
+ { L06, L16, L26, L36, KC_NO, KC_NO, L66 }, \
+ { R00, R10, R20, R30, KC_NO, KC_NO, R60 }, \
+ { R01, R11, R21, R31, R41, KC_NO, R61 }, \
+ { R02, R12, R22, R32, R42, R52, R62 }, \
+ { R03, R13, R23, R33, R43, R53, R63 }, \
+ { R04, R14, R24, R34, R44, R54, R64 }, \
+ { R05, R15, R25, R35, R45, R55, R65 },\
+ { R06, R16, R26, R36, R46, R56, KC_NO } \
+ }
diff --git a/keyboards/bajjak/config.h b/keyboards/bajjak/config.h
new file mode 100644
index 0000000000..d821bc0a8c
--- /dev/null
+++ b/keyboards/bajjak/config.h
@@ -0,0 +1,111 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
+Copyright 2015 ZSA Technology Labs Inc (@zsa)
+Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+Copyright 2021 Gary Kong <kongkm88@gmail.com> (@garykong)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 14
+#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2)
+#define MATRIX_COLS 7
+
+#define COL_EXPANDED { true, true, true, true, true, true, true, false, false, false, false, false, false, false }
+#define MATRIX_ONBOARD_ROW_PINS { 0, 0, 0, 0, 0, 0, 0, B0, B1, B2, B3, D2, D3, C6 }
+#define MATRIX_ONBOARD_COL_PINS { F0, F1, F4, F5, F6, F7, D7 }
+#define DIODE_DIRECTION COL2ROW
+#define EXPANDER_COL_REGISTER GPIOB
+#define EXPANDER_ROW_REGISTER GPIOA
+#define MATRIX_EXPANDER_COL_PINS { 6, 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 DEBOUNCE 30
+
+#define TAPPING_TOGGLE 1
+
+/* define if matrix has ghost */
+//#define MATRIX_HAS_GHOST
+
+#define TAPPING_TERM 200
+#define IGNORE_MOD_TAP_INTERRUPT // this makes it possible to do rolling combos (zx) with keys that convert to other keys on hold (z becomes ctrl when you hold it, and when this option isn't enabled, z rapidly followed by x actually sends Ctrl-x. That's bad.)
+
+/* 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
+
+/* key combination for command */
+#define IS_COMMAND() ( \
+ get_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || \
+ get_mods() == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)) \
+)
+
+/* number of backlight levels */
+#define BACKLIGHT_LEVELS 3
+
+#ifndef LED_BRIGHTNESS_LO
+#define LED_BRIGHTNESS_LO 15
+#endif
+#ifndef LED_BRIGHTNESS_HI
+#define LED_BRIGHTNESS_HI 255
+#endif
+#define LED_BRIGHTNESS_DEFAULT (LED_BRIGHTNESS_HI)
+
+/* fix space cadet rollover issue */
+#define DISABLE_SPACE_CADET_ROLLOVER
+
+/*
+ * The debounce filtering reports a key/switch change directly,
+ * without any extra delay. After that the debounce logic will filter
+ * all further changes, until the key/switch reports the same state for
+ * the given count of scans.
+ * So a perfect switch will get a short debounce period and
+ * a bad key will get a much longer debounce period.
+ * The result is an adaptive debouncing period for each switch.
+ *
+ * If you don't define it here, the matrix code will default to
+ * 5, which is now closer to 10ms, but still plenty according to
+ * manufacturer specs.
+ */
+
+/*
+ * 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 DEBUG_MATRIX_SCAN_RATE
diff --git a/keyboards/bajjak/info.json b/keyboards/bajjak/info.json
new file mode 100644
index 0000000000..f3ebb4e159
--- /dev/null
+++ b/keyboards/bajjak/info.json
@@ -0,0 +1,37 @@
+{
+ "keyboard_name": "BAJJAK",
+ "manufacturer": "garykong",
+ "maintainer": "garykong",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_6x7": {
+ "layout": [
+ {"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":6.5, "y":0.25},
+ {"x":9.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.375, "w":1.5},
+
+ {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":6.5, "y":1.25},
+ {"x":9.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.375, "w":1.5},
+
+ {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, {"x":6.5, "y":2.25},
+ {"x":9.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.375, "w":1.5},
+
+ {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":6.5, "y":3.25},
+ {"x":9.5, "y":3.25}, {"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.375, "w":1.5},
+
+ {"x":0, "y":4.375, "w":1.5}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, {"x":5.5, "y":4.25},
+ {"x":10.5, "y":4.25}, {"x":11.5, "y":4.125}, {"x":12.5, "y":4}, {"x":13.5, "y":4.125}, {"x":14.5, "y":4.375}, {"x":15.5, "y":4.375, "w":1.5},
+
+ {"x":0, "y":5.375, "w":1.5}, {"x":1.5, "y":5.375}, {"x":2.5, "y":5.125}, {"x":3.5, "y":5}, {"x":4.5, "y":5.125},
+ {"x":11.5, "y":5.125}, {"x":12.5, "y":5}, {"x":13.5, "y":5.125}, {"x":14.5, "y":5.375}, {"x":15.5, "y":5.375, "w":1.5},
+
+ {"x":6, "y":6}, {"x":7, "y":6}, {"x":9, "y":6}, {"x":10, "y":6},
+ {"x":7, "y":7}, {"x":9, "y":7},
+ {"x":5, "y":7, "h":2}, {"x":6, "y":7, "h":2}, {"x":7, "y":8}, {"x":9, "y":8}, {"x":10, "y":7, "h":2}, {"x":11, "y":7, "h":2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/bajjak/keymaps/5x6/keymap.c b/keyboards/bajjak/keymaps/5x6/keymap.c
new file mode 100644
index 0000000000..01b3383780
--- /dev/null
+++ b/keyboards/bajjak/keymaps/5x6/keymap.c
@@ -0,0 +1,187 @@
+/* Copyright 2021 Gary Kong
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 layers {
+ BASE, // default layer
+ SYMB, // symbols
+ MDIA, // media keys
+};
+
+enum custom_keycodes {
+ VRSN = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ------------------------------------------- -------------------------------------------
+ * | = | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | - |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | Tab | 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 |
+ * ------------------------------------------- -------------------------------------------
+ * | CTRL |GUI\` |ALT \ | Left |Right | | Up | Down | [ | ] | L1 |
+ * ---------------------------------- ----------------------------------
+ * ------------- ---------------
+ * |Ctrl/ESC|LALT| | RGUI |Ctrl/Alt|
+ * ------|------|------| |------+--------+------
+ * | | | Home | | PgUp | | |
+ * |Back | Del |------| |------| Enter |Space |
+ * |Space | | End | | PgDn | | |
+ * -------------------- ----------------------
+ *
+ */
+[BASE] = LAYOUT_6x7(
+// Left hand Right hand
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, XXXXXXX, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, 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_LCTRL, GUI_T(KC_GRV), ALT_T(KC_BSLS), KC_LEFT, KC_RGHT, KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, DF(SYMB),
+ CTL_T(KC_ESC), KC_LALT, KC_RGUI, CTL_T(KC_HAEN),
+ KC_HOME, KC_PGUP,
+ KC_BSPC, KC_DEL, KC_END, KC_PGDN, KC_ENT, KC_SPC
+),
+/* Keymap 1: Sybol layer
+ *
+ * ------------------------------------------- -------------------------------------------
+ * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | Tab | ! | @ | { | } | | |NUMLCK| 7 | 8 | 9 | - | / |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | | | | 4 | 5 | 6 | + | * |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | LShift | % | ^ | [ | ] | | | L2 | 1 | 2 | 3 | = | RShift |
+ * ------------------------------------------- -------------------------------------------
+ * | CTRL |GUI\~`|ALT \ | Left | Right| | Up | Down | . | 0 | |
+ * ---------------------------------- ----------------------------------
+ * ------------- ---------------
+ * |Ctrl/ESC|LALT| | RGUI |Ctrl/Alt|
+ * ------|------|------| |------+--------+------
+ * | | | Home | | PgUp | | |
+ * |BackSp| Del |------| |------| Enter |Space |
+ * | | | End | | PgDn | | |
+ * -------------------- ----------------------
+ *
+ */
+[SYMB] = LAYOUT_6x7(
+// Left hand Right hand
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ _______, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, XXXXXXX, XXXXXXX, XXXXXXX, KC_NLCK, KC_P7 , KC_P8 , KC_P9, KC_MINS, KC_PSLS,
+ XXXXXXX, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_P4 , KC_P5 , KC_P6, KC_PLUS, KC_PAST,
+ _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, XXXXXXX, DF(MDIA), KC_P1 , KC_P2 , KC_P3, KC_PEQL, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_PDOT, KC_P0, DF(BASE),
+ _______, _______, _______, _______,
+ _______, _______,
+ _______, _______, _______, _______, _______, _______
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ------------------------------------------- -------------------------------------------
+ * | SLEEP |BR_Up |BR_Dn | | |Eject | | Prev | Play | Next | Mute |Vol_Up| Vol_Dn |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | | | Lclk | MsUp | Rclk |MsWhUp| | | | | | | |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | QK_BOOT | |MsLeft|MsDown|MsRght|MsWhDw| | | | | | | |
+ * |--------+------+------+------+------+------| |------|------+------+------+------+--------|
+ * | LShift | |MsWhL | |MsWhR | | | | | | | | RShift |
+ * ------------------------------------------- -------------------------------------------
+ * | CTRL |GUI\~`|ALT \ | Left | Right| | Up | Down | | | L0 |
+* ---------------------------------- -----------------------------------
+ * ------------- ---------------
+ * |Ctrl/ESC|LALT| | RGUI |Ctrl/Alt|
+ * ------|------|------| |------+--------+------
+ * | | | Home | | PgUp | | |
+ * |BackSp| Del |------| |------| Enter |Space |
+ * | | | End | | PgDn | | |
+ * -------------------- ----------------------
+ *
+ */
+[MDIA] = LAYOUT_6x7(
+// Left hand Right hand
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_SLEP, KC_BRID, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, KC_EJCT, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU,
+ XXXXXXX, XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, XXXXXXX, KC_WH_L, XXXXXXX, KC_WH_R, XXXXXXX, DF(SYMB), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, DF(BASE),
+ _______, _______, _______, _______,
+ _______, _______,
+ _______, _______, _______, _______, _______, _______
+),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ switch (keycode) {
+ case VRSN:
+ SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+ return false;
+ }
+ }
+ return true;
+}
+
+// Runs whenever there is a layer state change.
+layer_state_t layer_state_set_user(layer_state_t state) {
+ bajjak_right_led_1_off();
+ bajjak_right_led_2_off();
+ bajjak_right_led_3_off();
+
+ uint8_t layer = get_highest_layer(state);
+ switch (layer) {
+ case 0:
+ break;
+ case 1:
+ bajjak_right_led_1_on();
+ break;
+ case 2:
+ bajjak_right_led_2_on();
+ break;
+ case 3:
+ bajjak_right_led_3_on();
+ break;
+ case 4:
+ bajjak_right_led_1_on();
+ bajjak_right_led_2_on();
+ break;
+ case 5:
+ bajjak_right_led_1_on();
+ bajjak_right_led_3_on();
+ break;
+ case 6:
+ bajjak_right_led_2_on();
+ bajjak_right_led_3_on();
+ break;
+ case 7:
+ bajjak_right_led_1_on();
+ bajjak_right_led_2_on();
+ bajjak_right_led_3_on();
+ break;
+ default:
+ break;
+ }
+
+ return state;
+};
diff --git a/keyboards/bajjak/keymaps/default/keymap.c b/keyboards/bajjak/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3bed2c52e7
--- /dev/null
+++ b/keyboards/bajjak/keymaps/default/keymap.c
@@ -0,0 +1,193 @@
+/* Copyright 2021 Gary Kong
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 layers {
+ BASE, // default layer
+ SYMB, // symbols
+ MDIA, // media keys
+};
+
+enum custom_keycodes {
+ VRSN = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | ESC | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | Eject |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | = | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | - |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab | Q | W | E | R | T | | | | Y | U | I | O | P | \ |
+ * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
+ * | Caps | A | S | D | F | G | L2 | | L1 | H | J | K | L | ; | ' |
+ * |--------+------+------+------+------+------+------' `------+------+------+------+------+------+--------|
+ * | LShift | Z | X | C | V | B | | N | M | , | . | / | RShift |
+ * `--------+------+------+------+------+------' `-----+------+------+------+------+-------'
+ * | CTRL |iGUI\'"|ALT \ | Left | Right| | Up | Down | [ | ] | ~L1 |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * |Ctrl/ESC|LALT| | RGUI |Ctrl/Alt|
+ * ,------|------|------| |------+--------+------.
+ * | | | Home | | PgUp | | |
+ * |BackSp| Del |------| |------| Enter |Space |
+ * | | | End | | PgDn | | |
+ * `--------------------' `----------------------'
+ *
+ */
+[BASE] = LAYOUT_6x7(
+// Left hand Right hand
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_EJCT,
+ 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, TG(MDIA), TG(SYMB), 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_LCTRL, GUI_T(KC_GRV), ALT_T(KC_BSLS), KC_LEFT, KC_RGHT, KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, TT(SYMB),
+ CTL_T(KC_ESC), KC_LALT, KC_RGUI, CTL_T(KC_RALT),
+ KC_HOME, KC_PGUP,
+ KC_BSPC, KC_DEL, KC_END, KC_PGDN, KC_ENT, KC_SPC
+),
+/* Keymap 1: Sybol layer
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | ESC | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | Eject |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | | | | | | | |NUMLCK| = | \ | * |PSCREEN |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab | ! | @ | { | } | | | | | | | 7 | 8 | 9 | - | SLCK |
+ * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
+ * | Caps | # | $ | ( | ) | ` | | | | | 4 | 5 | 6 | + | PAUSE |
+ * |--------+------+------+------+------+------+------' `------+------+------+------+------+------+--------|
+ * | LShift | % | ^ | [ | ] | ~ | | | 1 | 2 | 3 |Enter | RShift |
+ * `--------+------+------+------+------+------' `-----+------+------+------+------+-------'
+ * | CTRL |GUI\'"|ALT \ | Left | Right| | Up | Down | . | 0 | |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * |Ctrl/ESC|LALT| | RGUI |Ctrl/Alt|
+ * ,------|------|------| |------+--------+------.
+ * | | | Home | | PgUp | | |
+ * |BackSp| Del |------| |------| Enter |Space |
+ * | | | End | | PgDn | | |
+ * `--------------------' `----------------------'
+ *
+ */
+[SYMB] = LAYOUT_6x7(
+// Left hand Right hand
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_EJCT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NLCK, KC_PEQL, KC_PSLS, KC_PAST, KC_PSCR,
+ KC_TAB, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, KC_P7 , KC_P8 , KC_P9, KC_MINS, KC_SLCK,
+ KC_CAPS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, _______, _______, _______, KC_P4 , KC_P5 , KC_P6, KC_PLUS, KC_PAUS,
+ KC_LSFT, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, KC_P1 , KC_P2 , KC_P3, KC_PENT, KC_RSFT,
+ KC_LCTRL, KC_LGUI, ALT_T(KC_INSERT), KC_LEFT, KC_RGHT, KC_UP, KC_DOWN, KC_PDOT, KC_P0, _______,
+ CTL_T(KC_ESC), KC_LALT, KC_RGUI, CTL_T(KC_RALT),
+ KC_HOME, KC_PGUP,
+ KC_BSPC, KC_DEL, KC_END, KC_PGDN, KC_ENT, KC_SPC
+),
+/* Keymap 2: Media and mouse keys
+ *
+ * ,--------------------------------------------------. ,--------------------------------------------------.
+ * | SLEEP |BR_Up |BR_Dn | | | | | | Prev | Play | Next | Mute |Vol_Up|Vol_Dn| Eject |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | |
+ * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
+ * | Tab | | Lclk | MsUp | Rclk |MsWhUp| | | | | | | | | |
+ * |--------+------+------+------+------+------+------| |------+------+------+------+------+------+--------|
+ * | Caps | |MsLeft|MsDown|MsRght|MsWhDw| | | | | | | | | |
+ * |--------+------+------+------+------+------+------' `------+------+------+------+------+------+--------|
+ * | LShift | |MsWhL | |MsWhR | | | | | | | | |
+ * `--------+------+------+------+------+------' `-----+------+------+------+------+-------'
+ * | CTRL |GUI\'"|ALT \ | Left | Right| | Up | Down | | | QK_BOOT |
+ * `----------------------------------' `----------------------------------'
+ * ,-------------. ,-------------.
+ * |Ctrl/ESC|LALT| | RGUI |Ctrl/Alt|
+ * ,------|------|------| |------+--------+------.
+ * | | | Home | | PgUp | | |
+ * |BackSp| Del |------| |------| Enter |Space |
+ * | | | End | | PgDn | | |
+ * `--------------------' `----------------------'
+ *
+ */
+[MDIA] = LAYOUT_6x7(
+// Left hand Right hand
+ KC_SLEP, KC_BRID, KC_BRIU, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_EJCT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_TAB, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_CAPS, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_LSFT, _______, KC_WH_L, _______, KC_WH_R, _______, _______, _______, _______, _______, _______, _______,
+ KC_LCTRL, KC_LGUI, ALT_T(KC_INSERT), KC_LEFT, KC_RGHT, KC_UP, KC_DOWN, _______, _______, QK_BOOT,
+ CTL_T(KC_ESC), KC_LALT, KC_RGUI, CTL_T(KC_RALT),
+ KC_HOME, KC_PGUP,
+ KC_BSPC, KC_DEL, KC_END, KC_PGDN, KC_ENT, KC_SPC
+),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ switch (keycode) {
+ case VRSN:
+ SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
+ return false;
+ }
+ }
+ return true;
+}
+
+// Runs whenever there is a layer state change.
+layer_state_t layer_state_set_user(layer_state_t state) {
+ bajjak_right_led_1_off();
+ bajjak_right_led_2_off();
+ bajjak_right_led_3_off();
+
+ uint8_t layer = get_highest_layer(state);
+ switch (layer) {
+ case 0:
+ break;
+ case 1:
+ bajjak_right_led_1_on();
+ break;
+ case 2:
+ bajjak_right_led_2_on();
+ break;
+ case 3:
+ bajjak_right_led_3_on();
+ break;
+ case 4:
+ bajjak_right_led_1_on();
+ bajjak_right_led_2_on();
+ break;
+ case 5:
+ bajjak_right_led_1_on();
+ bajjak_right_led_3_on();
+ break;
+ case 6:
+ bajjak_right_led_2_on();
+ bajjak_right_led_3_on();
+ break;
+ case 7:
+ bajjak_right_led_1_on();
+ bajjak_right_led_2_on();
+ bajjak_right_led_3_on();
+ break;
+ default:
+ break;
+ }
+
+ return state;
+};
diff --git a/keyboards/bajjak/matrix.c b/keyboards/bajjak/matrix.c
new file mode 100644
index 0000000000..20fc3c8f23
--- /dev/null
+++ b/keyboards/bajjak/matrix.c
@@ -0,0 +1,253 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
+Copyright 2015 ZSA Technology Labs Inc (@zsa)
+Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+Copyright 2021 Gary Kong <kongkm88@gmail.com> (@garykong)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 "wait.h"
+#include "action_layer.h"
+#include "print.h"
+#include "debug.h"
+#include "util.h"
+#include "matrix.h"
+#include "debounce.h"
+#include "bajjak.h"
+
+
+/*
+ * This constant define not debouncing time in msecs, assuming eager_pr.
+ *
+ * On BAJJAK matrix scan rate is relatively low, because of slow I2C.
+ * Now it's only 317 scans/second, or about 3.15 msec/scan.
+ * According to Cherry specs, debouncing time is 5 msec.
+ *
+ * However, some switches seem to have higher debouncing requirements, or
+ * something else might be wrong. (Also, the scan speed has improved since
+ * that comment was written.)
+ */
+
+/* matrix state(1:on, 0:off) */
+extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values
+extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values
+
+static matrix_row_t read_cols(uint8_t row);
+static void init_cols(void);
+static void unselect_rows(void);
+static void select_row(uint8_t row);
+
+static uint8_t mcp23018_reset_loop;
+
+void matrix_init_custom(void) {
+ // initialize row and col
+
+ mcp23018_status = init_mcp23018();
+
+ unselect_rows();
+ init_cols();
+}
+
+// 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);
+ if (raw_matrix[index] != temp) {
+ raw_matrix[index] = temp;
+ return true;
+ }
+ return false;
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ if (mcp23018_status) { // if there was an error
+ if (++mcp23018_reset_loop == 0) {
+ print("trying to reset mcp23018\n");
+ mcp23018_status = init_mcp23018();
+ if (mcp23018_status) {
+ print("left side not responding\n");
+ } else {
+ print("left side attached\n");
+ bajjak_blink_all_leds();
+ }
+ }
+ }
+
+#ifdef LEFT_LEDS
+ mcp23018_status = bajjak_left_leds_update();
+#endif // LEFT_LEDS
+ bool changed = false;
+ for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) {
+ // select rows from left and right hands
+ uint8_t left_index = i;
+ uint8_t right_index = i + MATRIX_ROWS_PER_SIDE;
+ select_row(left_index);
+ select_row(right_index);
+
+ changed |= store_raw_matrix_row(left_index);
+ changed |= store_raw_matrix_row(right_index);
+
+ unselect_rows();
+ }
+
+ return changed;
+}
+
+/* Column pin configuration
+ *
+ * Teensy
+ * col: 0 1 2 3 4 5
+ * pin: F0 F1 F4 F5 F6 F7
+ *
+ * MCP23018
+ * col: 0 1 2 3 4 5
+ * pin: B5 B4 B3 B2 B1 B0
+ */
+static void init_cols(void) {
+ // init on mcp23018
+ // not needed, already done as part of init_mcp23018()
+
+ // init on teensy
+ setPinInputHigh(F0);
+ setPinInputHigh(F1);
+ setPinInputHigh(F4);
+ setPinInputHigh(F5);
+ setPinInputHigh(F6);
+ setPinInputHigh(F7);
+ setPinInputHigh(D7);
+}
+
+static matrix_row_t read_cols(uint8_t row) {
+ if (row < 7) {
+ if (mcp23018_status) { // if there was an error
+ return 0;
+ } else {
+ uint8_t data = 0;
+ // reading GPIOB (column port) since in mcp23018's sequential mode
+ // it is addressed directly after writing to GPIOA in select_row()
+ mcp23018_status = i2c_start(I2C_ADDR_READ, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_read_nack(BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status < 0) goto out;
+ data = ~((uint8_t)mcp23018_status);
+ mcp23018_status = I2C_STATUS_SUCCESS;
+ out:
+ i2c_stop();
+ return data;
+ }
+ } else {
+ /* read from teensy
+ * bitmask is 0b11110011, but we want those all
+ * in the lower six bits.
+ * we'll return 1s for the top two, but that's harmless.
+ */
+
+ return ~( (PINF & 0x03) | ((PINF & 0xF0) >> 2) | ((PIND & 0x80) >> 1) );
+ }
+}
+
+/* Row pin configuration
+ *
+ * Teensy
+ * row: 7 8 9 10 11 12 13
+ * pin: B0 B1 B2 B3 D2 D3 C6
+ *
+ * MCP23018
+ * row: 0 1 2 3 4 5 6
+ * pin: A0 A1 A2 A3 A4 A5 A6
+ */
+static void unselect_rows(void) {
+ // no need to unselect on mcp23018, because the select step sets all
+ // the other row bits high, and it's not changing to a different
+ // direction
+
+ // unselect on teensy
+ setPinInput(B0);
+ setPinInput(B1);
+ setPinInput(B2);
+ setPinInput(B3);
+ setPinInput(D2);
+ setPinInput(D3);
+ setPinInput(C6);
+}
+
+static void select_row(uint8_t row) {
+ if (row < 7) {
+ // select on mcp23018
+ if (!mcp23018_status) {
+ // set active row low : 0
+ // set other rows hi-Z : 1
+ mcp23018_status = i2c_start(I2C_ADDR_WRITE, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(GPIOA, BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ mcp23018_status = i2c_write(0xFF & ~(1 << row), BAJJAK_EZ_I2C_TIMEOUT); if (mcp23018_status) goto out;
+ out:
+ i2c_stop();
+ }
+ } else {
+ // select on teensy
+ // Output low(DDR:1, PORT:0) to select
+ switch (row) {
+ case 7:
+ setPinOutput(B0);
+ writePinLow(B0);
+ break;
+ case 8:
+ setPinOutput(B1);
+ writePinLow(B1);
+ break;
+ case 9:
+ setPinOutput(B2);
+ writePinLow(B2);
+ break;
+ case 10:
+ setPinOutput(B3);
+ writePinLow(B3);
+ break;
+ case 11:
+ setPinOutput(D2);
+ writePinLow(D2);
+ break;
+ case 12:
+ setPinOutput(D3);
+ writePinLow(D3);
+ break;
+ case 13:
+ setPinOutput(C6);
+ writePinLow(C6);
+ break;
+ }
+ }
+}
+
+// DO NOT REMOVE
+// Needed for proper wake/sleep
+void matrix_power_up(void) {
+ mcp23018_status = init_mcp23018();
+
+ unselect_rows();
+ init_cols();
+
+ // initialize matrix state: all keys off
+ for (uint8_t i=0; i < MATRIX_ROWS; i++) {
+ matrix[i] = 0;
+ }
+
+}
diff --git a/keyboards/bajjak/readme.md b/keyboards/bajjak/readme.md
new file mode 100644
index 0000000000..4b05c74f0a
--- /dev/null
+++ b/keyboards/bajjak/readme.md
@@ -0,0 +1,23 @@
+# bajjak
+
+This keyboard is a 6x7 array keyboard, similar in design to the Ergodox EZ.
+
+* Keyboard Maintainer: [Gary Kong](https://github.com/garykong)
+* Hardware Supported: bajjak keyboard (ATmega32U4)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make bajjak:default
+
+Flashing example for this keyboard:
+
+ make bajjak:default:flash
+
+## 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**: Press the key mapped to `QK_BOOT` 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/bajjak/rules.mk b/keyboards/bajjak/rules.mk
new file mode 100644
index 0000000000..6bbe7e3b28
--- /dev/null
+++ b/keyboards/bajjak/rules.mk
@@ -0,0 +1,37 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = halfkay
+
+# If you have Left LEDs (see
+# https://geekhack.org/index.php?topic=22780.msg873819#msg873819 for
+# details), include the following define:
+OPT_DEFS += -DLEFT_LEDS
+
+# 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
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+CUSTOM_MATRIX = lite # Custom matrix file for the BAJJAK
+UNICODE_ENABLE = yes # Unicode
+SWAP_HANDS_ENABLE = yes # Allow swapping hands of keyboard
+
+# Disable unsupported hardware
+BACKLIGHT_SUPPORTED = no
+AUDIO_SUPPORTED = no
+
+DEBOUNCE_TYPE = sym_eager_pr
+
+# project specific files
+SRC += matrix.c
+QUANTUM_LIB_SRC += i2c_master.c
diff --git a/keyboards/balloondogcaps/tr90/info.json b/keyboards/balloondogcaps/tr90/info.json
new file mode 100644
index 0000000000..c4b8c265a0
--- /dev/null
+++ b/keyboards/balloondogcaps/tr90/info.json
@@ -0,0 +1,44 @@
+{
+ "manufacturer": "Balloondog",
+ "keyboard_name": "TR90",
+ "maintainer": "balloondogcaps",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["F5", "F6", "D5"],
+ "rows": ["F0", "F1", "F4"]
+ },
+ "processor": "atmega32u4",
+ "url": "",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0001",
+ "vid": "0x4243"
+ },
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_ortho_3x3"
+ },
+ "layouts": {
+ "LAYOUT_ortho_3x3": {
+ "layout": [
+ { "matrix": [0, 0], "x": 0, "y": 0 },
+ { "matrix": [0, 1], "x": 1, "y": 0 },
+ { "matrix": [0, 2], "x": 2, "y": 0 },
+ { "matrix": [1, 0], "x": 0, "y": 1 },
+ { "matrix": [1, 1], "x": 1, "y": 1 },
+ { "matrix": [1, 2], "x": 2, "y": 1 },
+ { "matrix": [2, 0], "x": 0, "y": 2 },
+ { "matrix": [2, 1], "x": 1, "y": 2 },
+ { "matrix": [2, 2], "x": 2, "y": 2 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/balloondogcaps/tr90/keymaps/default/keymap.c b/keyboards/balloondogcaps/tr90/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a52e9c6fd1
--- /dev/null
+++ b/keyboards/balloondogcaps/tr90/keymaps/default/keymap.c
@@ -0,0 +1,31 @@
+/* Copyright 2021 Balloondog
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_3x3( /* Base */
+ KC_1, KC_2, KC_3,
+ KC_4, KC_5, KC_6,
+ KC_VOLD, KC_VOLU, MO(1)
+ ),
+ [1] = LAYOUT_ortho_3x3(
+ KC_7, KC_8, KC_9,
+ KC_0, KC_MINUS, KC_PLUS,
+ QK_BOOT, KC_AT , KC_TRNS
+ ),
+};
+
+
diff --git a/keyboards/balloondogcaps/tr90/keymaps/via/keymap.c b/keyboards/balloondogcaps/tr90/keymaps/via/keymap.c
new file mode 100644
index 0000000000..aef6d33f16
--- /dev/null
+++ b/keyboards/balloondogcaps/tr90/keymaps/via/keymap.c
@@ -0,0 +1,41 @@
+/* Copyright 2021 Balloondog
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_3x3( /* Base */
+ KC_1, KC_2, KC_3,
+ KC_4, KC_5, KC_6,
+ KC_VOLD, KC_VOLU, MO(1)
+ ),
+ [1] = LAYOUT_ortho_3x3(
+ KC_7, KC_8, KC_9,
+ KC_0, KC_MINUS, KC_PLUS,
+ QK_BOOT, KC_AT , KC_TRNS
+ ),
+ [2] = LAYOUT_ortho_3x3(
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_ortho_3x3(
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+
diff --git a/keyboards/balloondogcaps/tr90/keymaps/via/rules.mk b/keyboards/balloondogcaps/tr90/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/balloondogcaps/tr90/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/balloondogcaps/tr90/readme.md b/keyboards/balloondogcaps/tr90/readme.md
new file mode 100644
index 0000000000..06b8a232ef
--- /dev/null
+++ b/keyboards/balloondogcaps/tr90/readme.md
@@ -0,0 +1,25 @@
+# balloondogcaps/tr90
+
+![balloondogcaps/tr90](https://i.imgur.com/GCAZotn.jpeg)
+
+A 3x3 Pro Macropad with programmer pins
+
+* Keyboard Maintainer: [Balloondog](https://instagram.com/balloondogcaps)
+* Hardware Supported: Balloondog Play Rough series case(s)
+* Hardware Availability: [Balloondog](http://store.balloondog.nl)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make balloondogcaps/tr90:default
+
+Flashing example for this keyboard:
+
+ make balloondogcaps/tr90: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**: Hold the bottom right key and then press the bottom left key to enter the bootloader
diff --git a/keyboards/mechmini/.noci b/keyboards/balloondogcaps/tr90/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/mechmini/.noci
+++ b/keyboards/balloondogcaps/tr90/rules.mk
diff --git a/keyboards/balloondogcaps/tr90pm/info.json b/keyboards/balloondogcaps/tr90pm/info.json
new file mode 100644
index 0000000000..c04fef7840
--- /dev/null
+++ b/keyboards/balloondogcaps/tr90pm/info.json
@@ -0,0 +1,44 @@
+{
+ "manufacturer": "Balloondog",
+ "keyboard_name": "TR90PM",
+ "maintainer": "balloondogcaps",
+ "bootloader": "caterina",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["D1", "D0", "D4"],
+ "rows": ["C6", "D7", "E6"]
+ },
+ "processor": "atmega32u4",
+ "url": "",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0002",
+ "vid": "0x4243"
+ },
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_ortho_3x3"
+ },
+ "layouts": {
+ "LAYOUT_ortho_3x3": {
+ "layout": [
+ { "matrix": [0, 0], "x": 0, "y": 0 },
+ { "matrix": [0, 1], "x": 1, "y": 0 },
+ { "matrix": [0, 2], "x": 2, "y": 0 },
+ { "matrix": [1, 0], "x": 0, "y": 1 },
+ { "matrix": [1, 1], "x": 1, "y": 1 },
+ { "matrix": [1, 2], "x": 2, "y": 1 },
+ { "matrix": [2, 0], "x": 0, "y": 2 },
+ { "matrix": [2, 1], "x": 1, "y": 2 },
+ { "matrix": [2, 2], "x": 2, "y": 2 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/balloondogcaps/tr90pm/keymaps/default/keymap.c b/keyboards/balloondogcaps/tr90pm/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a52e9c6fd1
--- /dev/null
+++ b/keyboards/balloondogcaps/tr90pm/keymaps/default/keymap.c
@@ -0,0 +1,31 @@
+/* Copyright 2021 Balloondog
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_3x3( /* Base */
+ KC_1, KC_2, KC_3,
+ KC_4, KC_5, KC_6,
+ KC_VOLD, KC_VOLU, MO(1)
+ ),
+ [1] = LAYOUT_ortho_3x3(
+ KC_7, KC_8, KC_9,
+ KC_0, KC_MINUS, KC_PLUS,
+ QK_BOOT, KC_AT , KC_TRNS
+ ),
+};
+
+
diff --git a/keyboards/balloondogcaps/tr90pm/keymaps/via/keymap.c b/keyboards/balloondogcaps/tr90pm/keymaps/via/keymap.c
new file mode 100644
index 0000000000..aef6d33f16
--- /dev/null
+++ b/keyboards/balloondogcaps/tr90pm/keymaps/via/keymap.c
@@ -0,0 +1,41 @@
+/* Copyright 2021 Balloondog
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_3x3( /* Base */
+ KC_1, KC_2, KC_3,
+ KC_4, KC_5, KC_6,
+ KC_VOLD, KC_VOLU, MO(1)
+ ),
+ [1] = LAYOUT_ortho_3x3(
+ KC_7, KC_8, KC_9,
+ KC_0, KC_MINUS, KC_PLUS,
+ QK_BOOT, KC_AT , KC_TRNS
+ ),
+ [2] = LAYOUT_ortho_3x3(
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_ortho_3x3(
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+
diff --git a/keyboards/balloondogcaps/tr90pm/keymaps/via/rules.mk b/keyboards/balloondogcaps/tr90pm/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/balloondogcaps/tr90pm/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/balloondogcaps/tr90pm/readme.md b/keyboards/balloondogcaps/tr90pm/readme.md
new file mode 100644
index 0000000000..7a7c35660c
--- /dev/null
+++ b/keyboards/balloondogcaps/tr90pm/readme.md
@@ -0,0 +1,25 @@
+# balloondogcaps/tr90pm
+
+![balloondogcaps/tr90pm](https://i.imgur.com/AO5anzZh.png)
+
+A 3x3 Pro Micro enabled Macropad
+
+* Keyboard Maintainer: [Balloondog](https://instagram.com/balloondogcaps)
+* Hardware Supported: Balloondog Play Rough series case(s)
+* Hardware Availability: [Balloondog](http://store.balloondog.nl)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make balloondogcaps/tr90pm:default
+
+Flashing example for this keyboard:
+
+ make balloondogcaps/tr90pm: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. Some Pro Micro's require a double press.
+* **Keycode in layout**: Hold the bottom right key and then press the bottom left key to enter the bootloader
diff --git a/keyboards/balloondogcaps/tr90pm/rules.mk b/keyboards/balloondogcaps/tr90pm/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/balloondogcaps/tr90pm/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/bandominedoni/bandominedoni.c b/keyboards/bandominedoni/bandominedoni.c
index eacbb40fa0..27df3598d4 100644
--- a/keyboards/bandominedoni/bandominedoni.c
+++ b/keyboards/bandominedoni/bandominedoni.c
@@ -117,55 +117,3 @@ static enum { UNKNOWN, LEFT, RIGHT } hand_side = UNKNOWN;
return (hand_side == LEFT);
}
}
-
-#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);
-# 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
-}
-
-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 1eca4f8d98..6011a2cc71 100644
--- a/keyboards/bandominedoni/bandominedoni.h
+++ b/keyboards/bandominedoni/bandominedoni.h
@@ -38,7 +38,7 @@
l40, l41, l42, l43, l44, l45, l46, l47, \
\
oc, r00, r01, r02, r03, fn, \
- r10, r11, r12, r13, r14, ccw, cw,\
+ r10, r11, r12, r13, r14, \
r20, r21, r22, r23, r24, r25, \
r30, r31, r32, r33, r34, r35, r36, r37, \
r40, r41, r42, r43, r44, r45, r46, r47, \
@@ -49,7 +49,7 @@
{ l20, l21, l22, l23, l24, l25, l26 }, \
{ l30, l31, l32, l33, l34, l35, l36 }, \
{ l41, l42, l43, l44, l45, l46, l47 }, \
- { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, ccw, cw }, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ r50, r40, r31, r20, r10, r00, r30 }, \
{ r51, r41, r32, r21, r11, r01, oc }, \
{ r52, r42, r33, r22, r12, r02, fn }, \
@@ -83,6 +83,3 @@
// 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 d95b600536..17f5675f60 100644
--- a/keyboards/bandominedoni/config.h
+++ b/keyboards/bandominedoni/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xF4B5
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 3araht
-#define PRODUCT bandominedoni
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 7
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { B5, B4, D7, F6, C6, D4 }
#define MATRIX_COL_PINS { D1, E6, F7, B1, B3, B2, D0 }
-#define UNUSED_PINS
#define MASTER_RIGHT
#ifndef MASTER_RIGHT
@@ -56,6 +48,8 @@
*/
#define SOFT_SERIAL_PIN D2 // or D1, D2, D3, E6
+#define SPLIT_USB_DETECT
+
//#define LED_NUM_LOCK_PIN B0
//#define LED_CAPS_LOCK_PIN B1
//#define LED_SCROLL_LOCK_PIN B2
@@ -254,13 +248,11 @@
* Encoder options
*/
#ifdef ENCODER_ENABLE
-# define ENCODERS_PAD_A { C7 } // dummy
-# define ENCODERS_PAD_B { B7 } // dummy
+# define ENCODERS_PAD_A { }
+# define ENCODERS_PAD_B { }
+# define ENCODER_RESOLUTIONS { }
# define ENCODERS_PAD_A_RIGHT { F5 }
# define ENCODERS_PAD_B_RIGHT { F4 }
-# define ENCODER_RESOLUTION 4
+# define ENCODER_RESOLUTIONS_RIGHT { 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/info.json b/keyboards/bandominedoni/info.json
index 82fcc559c9..f78621ec41 100644
--- a/keyboards/bandominedoni/info.json
+++ b/keyboards/bandominedoni/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "bandominedoni",
+ "manufacturer": "3araht",
"url": "https://github.com/3araht",
"maintainer": "3araht",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xF4B5",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
@@ -59,9 +65,6 @@
{"label": "r13", "x": 14, "y": 1},
{"label": "r14", "x": 15, "y": 1},
- {"label": "ccw", "x": 16.5, "y": 1},
- {"label": "cw", "x": 17.5, "y": 1},
-
{"label": "r20", "x": 10.5, "y": 2},
{"label": "r21", "x": 11.5, "y": 2},
{"label": "r22", "x": 12.5, "y": 2},
diff --git a/keyboards/bandominedoni/keymaps/default/keymap.c b/keyboards/bandominedoni/keymaps/default/keymap.c
index bfa49dfe17..90e3f3417e 100644
--- a/keyboards/bandominedoni/keymaps/default/keymap.c
+++ b/keyboards/bandominedoni/keymaps/default/keymap.c
@@ -14,6 +14,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
+#include "version.h"
// Defines names for use in layer keycodes and the keymap
enum layer_names {
@@ -27,6 +28,9 @@ enum layer_names {
_FN
};
+enum custom_keycodes {
+ VERSION = SAFE_RANGE
+};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_OPEN] = LAYOUT(
@@ -37,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MI_D_1, MI_B_1, MI_G_3, MI_A_3, MI_Ds_3, MI_Fs_2, MI_Ds_1, MI_C_1,
MO_SWAP, MI_B_5, MI_Gs_5, MI_G_5, MI_F_5, FN_MUTE,
- MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5, KC_VOLD, KC_VOLU,
+ MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5,
MI_C_3, MI_D_3, MI_G_3, MI_As_4, MI_C_5, MI_D_5,
TG_SWAP, MI_B_2, MI_E_3, MI_Cs_4, MI_Fs_3, MI_A_3, MI_C_4, MI_E_4,
MI_A_2, MI_F_3, MI_As_3, MI_Gs_3, MI_B_3, MI_D_4, MI_Gs_4, MI_B_4,
@@ -52,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MI_E_1, MI_E_2, MI_Fs_3, MI_Gs_3, MI_B_3, MI_F_2, MI_Cs_1, MI_F_1,
MO_SWAP, MI_A_5, MI_Gs_5, MI_Fs_5, MI_F_5, FN_MUTE,
- MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5, KC_VOLD, KC_VOLU,
+ MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5,
MI_D_3, MI_Cs_3, MI_Gs_3, MI_As_3, MI_C_4, MI_D_5,
TG_SWAP, MI_B_2, MI_Fs_3, MI_Fs_4, MI_G_3, MI_B_3, MI_D_4, MI_G_4,
MI_A_2, MI_F_3, MI_E_3, MI_A_3, MI_Cs_4, MI_E_4, MI_A_4, MI_Cs_5,
@@ -67,14 +71,22 @@ 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, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
)
};
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_OPEN] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_CLOSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
+
void keyboard_post_init_user(void) {
// Set octave to MI_OCT_0
midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
@@ -82,3 +94,14 @@ void keyboard_post_init_user(void) {
// avoid using 127 since it is used as a special number in some sound sources.
midi_config.velocity = MIDI_INITIAL_VELOCITY;
};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/bandominedoni/keymaps/default/rules.mk b/keyboards/bandominedoni/keymaps/default/rules.mk
new file mode 100644
index 0000000000..8006608ea9
--- /dev/null
+++ b/keyboards/bandominedoni/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
diff --git a/keyboards/bandominedoni/keymaps/led/config.h b/keyboards/bandominedoni/keymaps/led/config.h
new file mode 100644
index 0000000000..04bd66bf1a
--- /dev/null
+++ b/keyboards/bandominedoni/keymaps/led/config.h
@@ -0,0 +1,18 @@
+/* Copyright 2021 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 6
diff --git a/keyboards/bandominedoni/keymaps/led/keymap.c b/keyboards/bandominedoni/keymaps/led/keymap.c
index 305756b5b1..8659697a91 100644
--- a/keyboards/bandominedoni/keymaps/led/keymap.c
+++ b/keyboards/bandominedoni/keymaps/led/keymap.c
@@ -14,6 +14,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
+#include "version.h"
#define DF_COLE DF(_COLEMAK)
@@ -54,6 +55,10 @@ enum layer_names {
_FN
};
+enum custom_keycodes {
+ VERSION = SAFE_RANGE
+};
+
// Alias layout macros that expand groups of keys.
#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
@@ -66,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MI_D_1, MI_B_1, MI_G_3, MI_A_3, MI_Ds_3, MI_Fs_2, MI_Ds_1, MI_C_1,
MO_SWAP, MI_B_5, MI_Gs_5, MI_G_5, MI_F_5, FN_MUTE,
- MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5, KC_VOLD, KC_VOLU,
+ MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5,
MI_C_3, MI_D_3, MI_G_3, MI_As_4, MI_C_5, MI_D_5,
TG_SWAP, MI_B_2, MI_E_3, MI_Cs_4, MI_Fs_3, MI_A_3, MI_C_4, MI_E_4,
MI_A_2, MI_F_3, MI_As_3, MI_Gs_3, MI_B_3, MI_D_4, MI_Gs_4, MI_B_4,
@@ -81,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MI_E_1, MI_E_2, MI_Fs_3, MI_Gs_3, MI_B_3, MI_F_2, MI_Cs_1, MI_F_1,
MO_SWAP, MI_A_5, MI_Gs_5, MI_Fs_5, MI_F_5, FN_MUTE,
- MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5, KC_VOLD, KC_VOLU,
+ MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5,
MI_D_3, MI_Cs_3, MI_Gs_3, MI_As_3, MI_C_4, MI_D_5,
TG_SWAP, MI_B_2, MI_Fs_3, MI_Fs_4, MI_G_3, MI_B_3, MI_D_4, MI_G_4,
MI_A_2, MI_F_3, MI_E_3, MI_A_3, MI_Cs_4, MI_E_4, MI_A_4, MI_Cs_5,
@@ -96,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, MIS_EIS, KC_SPC, KC_SPC, KC_PSCR,
MO(_MISC), KC_LBRC, KC_RBRC, KC_BSLS, KC_0, _______,
- KC_6, KC_7, KC_8, KC_9, KC_BSPC, _______, _______,
+ KC_6, KC_7, KC_8, KC_9, KC_BSPC,
_________________QWERTY_R1_________________, KC_DEL,
KC_PGUP, KC_G, _________________QWERTY_R2_________________, KC_ENT,
KC_PGDN, KC_B, _________________QWERTY_R3_________________, KC_RSFT,
@@ -111,7 +116,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS, KC_GRV, KC_LGUI, KC_LALT, MIS_EIS, KC_SPC, KC_SPC, KC_PSCR,
MO(_MISC), KC_LBRC, KC_RBRC, KC_BSLS, KC_0, _______,
- KC_6, KC_7, KC_8, KC_9, KC_BSPC, _______, _______,
+ KC_6, KC_7, KC_8, KC_9, KC_BSPC,
_________________COLEMAK_R1________________, KC_DEL,
KC_PGUP, KC_D, _________________COLEMAK_R2________________, KC_ENT,
KC_PGDN, KC_B, _________________COLEMAK_R3________________, KC_RSFT,
@@ -126,7 +131,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, KC_F10, _______,
- KC_F6, KC_F7, KC_F8, KC_F9, _______, _______, _______,
+ KC_F6, KC_F7, KC_F8, KC_F9, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_QUOT, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
@@ -141,14 +146,25 @@ 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, RGB_RMOD, RGB_MOD,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_MOD, EEP_RST, RGB_TOG
)
};
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_OPEN] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_CLOSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_QWERTY] = { ENCODER_CCW_CW(_______, _______) },
+ [_COLEMAK] = { ENCODER_CCW_CW(_______, _______) },
+ [_MISC] = { ENCODER_CCW_CW(_______, _______) },
+ [_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
+};
+#endif
+
void my_init(void){
// Set octave to MI_OCT_0
midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
@@ -177,10 +193,21 @@ void keyboard_post_init_user(void) {
rgb_matrix_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON);
};
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+ }
+ return true;
+}
+
#ifdef RGB_MATRIX_ENABLE
void rgb_matrix_indicators_user(void) {
if (rgb_matrix_is_enabled()) { // turn the lights on when it is enabled.
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _CLOSE:
// rgb_matrix_set_color(pgm_read_byte(&convert_led_location2number[11]), RGB_RED); // RGB_TOG <- too heavy.
diff --git a/keyboards/bandominedoni/keymaps/led/readme.md b/keyboards/bandominedoni/keymaps/led/readme.md
index e6ec2ad10d..77e709c70b 100644
--- a/keyboards/bandominedoni/keymaps/led/readme.md
+++ b/keyboards/bandominedoni/keymaps/led/readme.md
@@ -1 +1 @@
-# The default keymap for bandominedoni
+# The keymap with led for bandominedoni
diff --git a/keyboards/bandominedoni/keymaps/led/rules.mk b/keyboards/bandominedoni/keymaps/led/rules.mk
index 08ed472ad6..0a1c4b1858 100644
--- a/keyboards/bandominedoni/keymaps/led/rules.mk
+++ b/keyboards/bandominedoni/keymaps/led/rules.mk
@@ -1,2 +1,4 @@
RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
RGB_MATRIX_CUSTOM_KB = yes #
+
+ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
diff --git a/keyboards/bandominedoni/keymaps/lednotg/keymap.c b/keyboards/bandominedoni/keymaps/lednotg/keymap.c
new file mode 100644
index 0000000000..ba25c1d55f
--- /dev/null
+++ b/keyboards/bandominedoni/keymaps/lednotg/keymap.c
@@ -0,0 +1,254 @@
+/* Copyright 2021 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+#define DF_COLE DF(_COLEMAK)
+
+#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
+#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
+#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+#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 _________________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
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+#ifndef PEDAL_NORMALLY_CLOSED
+ _OPEN,
+#endif
+ _CLOSE,
+#ifdef PEDAL_NORMALLY_CLOSED
+ _OPEN,
+#endif
+ _QWERTY,
+ _COLEMAK,
+ _MISC,
+ _FN
+};
+
+enum custom_keycodes {
+ VERSION = SAFE_RANGE
+};
+
+// Alias layout macros that expand groups of keys.
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_OPEN] = LAYOUT(
+ MI_Gs_1, MI_As_1, MI_Cs_2, MI_F_2, MI_Gs_3,
+ MI_E_1, MI_A_1, MI_G_2, MI_Ds_2, MI_F_3, MI_As_2, MI_F_1,
+ MI_D_2, MI_A_2, MI_C_3, MI_E_3, MI_C_2, MI_G_1, MI_B,
+ MI_E_2, MI_Gs_2, MI_B_2, MI_D_3, MI_Fs_3, MI_Cs_3, MI_Fs_1,
+ MI_D_1, MI_B_1, MI_G_3, MI_A_3, MI_Ds_3, MI_Fs_2, MI_Ds_1, MI_C_1,
+
+ MO_SWAP, MI_B_5, MI_Gs_5, MI_G_5, MI_F_5, FN_MUTE,
+ MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5,
+ MI_C_3, MI_D_3, MI_G_3, MI_As_4, MI_C_5, MI_D_5,
+ MI_G_2, MI_B_2, MI_E_3, MI_Cs_4, MI_Fs_3, MI_A_3, MI_C_4, MI_E_4,
+ MI_A_2, MI_F_3, MI_As_3, MI_Gs_3, MI_B_3, MI_D_4, MI_Gs_4, MI_B_4,
+ MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_Ds_4, MI_Fs_4, MI_A_4, MI_Cs_5, MI_G_4
+ ),
+
+ [_CLOSE] = LAYOUT(
+ MI_Gs_1, MI_As_1, MI_Ds_2, MI_Ds_3, MI_G_3,
+ MI_D_1, MI_D_2, MI_As_2, MI_C_3, MI_Cs_2, MI_C_2, MI_Fs_1,
+ MI_G_1, MI_G_2, MI_B_2, MI_D_3, MI_F_3, MI_Fs_2, MI_B,
+ MI_A_1, MI_E_2, MI_A_2, MI_Cs_3, MI_E_3, MI_Gs_2, MI_B_1,
+ MI_E_1, MI_E_2, MI_Fs_3, MI_Gs_3, MI_B_3, MI_F_2, MI_Cs_1, MI_F_1,
+
+ MO_SWAP, MI_A_5, MI_Gs_5, MI_Fs_5, MI_F_5, FN_MUTE,
+ MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5,
+ MI_D_3, MI_Cs_3, MI_Gs_3, MI_As_3, MI_C_4, MI_D_5,
+ MI_G_2, MI_B_2, MI_Fs_3, MI_Fs_4, MI_G_3, MI_B_3, MI_D_4, MI_G_4,
+ MI_A_2, MI_F_3, MI_E_3, MI_A_3, MI_Cs_4, MI_E_4, MI_A_4, MI_Cs_5,
+ MI_Gs_2, MI_As_2, MI_Ds_3, MI_F_4, MI_E_4, MI_Gs_4, MI_B_4, MI_E_5, MI_Ds_4
+ ),
+
+ [_QWERTY] = LAYOUT_wrapper(
+ _________________NUMBER_L__________________,
+ KC_GESC, KC_TAB, _________________QWERTY_L1_________________,
+ KC_CAPS, _________________QWERTY_L2_________________, KC_H,
+ KC_LSFT, _________________QWERTY_L3_________________, KC_N,
+ KC_LCTL, KC_GRV, KC_LGUI, KC_LALT, MIS_EIS, KC_SPC, KC_SPC, KC_PSCR,
+
+ MO(_MISC), KC_LBRC, KC_RBRC, KC_BSLS, KC_0, _______,
+ KC_6, KC_7, KC_8, KC_9, KC_BSPC,
+ _________________QWERTY_R1_________________, KC_DEL,
+ KC_PGUP, KC_G, _________________QWERTY_R2_________________, KC_ENT,
+ KC_PGDN, KC_B, _________________QWERTY_R3_________________, KC_RSFT,
+ KC_HOME, KC_END, KC_SPC, MIS_KAN, KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ [_COLEMAK] = LAYOUT_wrapper(
+ _________________NUMBER_L__________________,
+ KC_GESC, KC_TAB, _________________COLEMAK_L1________________,
+ KC_LCTL, _________________COLEMAK_L2________________, KC_ENT,
+ KC_LSFT, _________________COLEMAK_L3________________, KC_M,
+ KC_CAPS, KC_GRV, KC_LGUI, KC_LALT, MIS_EIS, KC_SPC, KC_SPC, KC_PSCR,
+
+ MO(_MISC), KC_LBRC, KC_RBRC, KC_BSLS, KC_0, _______,
+ KC_6, KC_7, KC_8, KC_9, KC_BSPC,
+ _________________COLEMAK_R1________________, KC_DEL,
+ KC_PGUP, KC_D, _________________COLEMAK_R2________________, KC_ENT,
+ KC_PGDN, KC_B, _________________COLEMAK_R3________________, KC_RSFT,
+ KC_HOME, KC_END, KC_SPC, MIS_KAN, KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ [_MISC] = LAYOUT_wrapper(
+ _________________FUNC__L___________________,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+
+ _______, _______, _______, _______, KC_F10, _______,
+ KC_F6, KC_F7, KC_F8, KC_F9, _______,
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_QUOT, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN] = LAYOUT(
+ DF_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, DF_QWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ DF_COLE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ _______, KC_VOLD, KC_VOLU, MI_VELD, MI_VELU, _______,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_MOD, EEP_RST, RGB_TOG
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_OPEN] = { ENCODER_CCW_CW(MI_OCTD, MI_OCTU) },
+ [_CLOSE] = { ENCODER_CCW_CW(MI_OCTD, MI_OCTU) },
+ [_QWERTY] = { ENCODER_CCW_CW(_______, _______) },
+ [_COLEMAK] = { ENCODER_CCW_CW(_______, _______) },
+ [_MISC] = { ENCODER_CCW_CW(_______, _______) },
+ [_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
+};
+#endif
+
+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);
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+ }
+ return true;
+}
+
+#ifdef RGB_MATRIX_ENABLE
+void rgb_matrix_indicators_user(void) {
+ if (rgb_matrix_is_enabled()) { // turn the lights on when it is enabled.
+ uint8_t layer = biton32(layer_state);
+ switch (layer) {
+ case _CLOSE:
+ // rgb_matrix_set_color(pgm_read_byte(&convert_led_location2number[11]), RGB_RED); // RGB_TOG <- too heavy.
+
+ // Close state indicator
+ rgb_matrix_set_color( 0, RGB_DARKWHITE); // oc
+ break;
+
+ case _FN:
+ // left hand side
+ rgb_matrix_set_color( 46, RGB_DARKORANGE); // DF_OPEN
+ rgb_matrix_set_color( 48, RGB_DARKWHITE); // DF_QWER
+ rgb_matrix_set_color( 60, RGB_DARKWHITE); // DF_COLE
+
+ rgb_matrix_set_color( 73, RGB_DARKYELLOW); // AG_SWAP
+ rgb_matrix_set_color( 72, RGB_DARKYELLOW); // AG_NORM
+
+
+ // right hand side
+ rgb_matrix_set_color( 1, RGB_DARKYELLOW); // MI_OCTD
+ rgb_matrix_set_color(13, RGB_DARKGREEN); // MI_OCTU
+ rgb_matrix_set_color(14, RGB_DARKYELLOW); // MI_VELD
+ rgb_matrix_set_color(25, RGB_DARKGREEN); // MI_VELU
+
+ rgb_matrix_set_color( 6, RGB_DARKBLUE); // RGB_SAD
+ rgb_matrix_set_color( 9, RGB_DARKBLUE); // RGB_SAI
+ rgb_matrix_set_color(18, RGB_DARKBLUE); // RGB_HUD
+ rgb_matrix_set_color(21, RGB_DARKBLUE); // RGB_HUI
+ rgb_matrix_set_color(29, RGB_DARKBLUE); // RGB_SPD
+ rgb_matrix_set_color(32, RGB_DARKBLUE); // RGB_SPI
+ rgb_matrix_set_color(36, RGB_DARKBLUE); // RGB_VAD
+ rgb_matrix_set_color(39, RGB_DARKBLUE); // RGB_VAI
+
+ rgb_matrix_set_color(31, RGB_DARKBLUE); // RGB_RMOD
+ rgb_matrix_set_color(37, RGB_DARKBLUE); // RGB_MOD
+ rgb_matrix_set_color(38, RGB_DARKPINK); // EEP_RST
+ rgb_matrix_set_color(40, RGB_DARKRED); // RGB_TOG
+
+ rgb_matrix_set_color(41, RGB_DARKORANGE); // _FN
+ break;
+ }
+ }
+}
+#endif
diff --git a/keyboards/bandominedoni/keymaps/lednotg/readme.md b/keyboards/bandominedoni/keymaps/lednotg/readme.md
new file mode 100644
index 0000000000..803d1d39f8
--- /dev/null
+++ b/keyboards/bandominedoni/keymaps/lednotg/readme.md
@@ -0,0 +1 @@
+# The keymap with led and no TG keys on the layout for bandominedoni
diff --git a/keyboards/bandominedoni/keymaps/lednotg/rules.mk b/keyboards/bandominedoni/keymaps/lednotg/rules.mk
new file mode 100644
index 0000000000..0a1c4b1858
--- /dev/null
+++ b/keyboards/bandominedoni/keymaps/lednotg/rules.mk
@@ -0,0 +1,4 @@
+RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
+RGB_MATRIX_CUSTOM_KB = yes #
+
+ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
diff --git a/keyboards/bandominedoni/keymaps/via/keymap.c b/keyboards/bandominedoni/keymaps/via/keymap.c
index ad6833d692..aa668af154 100644
--- a/keyboards/bandominedoni/keymaps/via/keymap.c
+++ b/keyboards/bandominedoni/keymaps/via/keymap.c
@@ -14,6 +14,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
+#include "version.h"
// Defines names for use in layer keycodes and the keymap
enum layer_names {
@@ -28,6 +29,10 @@ enum layer_names {
_FN
};
+enum custom_keycodes {
+ VERSION = USER00
+};
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_OPEN] = LAYOUT(
MI_Gs_1, MI_As_1, MI_Cs_2, MI_F_2, MI_Gs_3,
@@ -37,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MI_D_1, MI_B_1, MI_G_3, MI_A_3, MI_Ds_3, MI_Fs_2, MI_Ds_1, MI_C_1,
MO_SWAP, MI_B_5, MI_Gs_5, MI_G_5, MI_F_5, FN_MUTE,
- MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5, KC_VOLD, KC_VOLU,
+ MI_Cs_3, MI_A_5, MI_Fs_5, MI_E_5, MI_Ds_5,
MI_C_3, MI_D_3, MI_G_3, MI_As_4, MI_C_5, MI_D_5,
TG_SWAP, MI_B_2, MI_E_3, MI_Cs_4, MI_Fs_3, MI_A_3, MI_C_4, MI_E_4,
MI_A_2, MI_F_3, MI_As_3, MI_Gs_3, MI_B_3, MI_D_4, MI_Gs_4, MI_B_4,
@@ -52,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MI_E_1, MI_E_2, MI_Fs_3, MI_Gs_3, MI_B_3, MI_F_2, MI_Cs_1, MI_F_1,
MO_SWAP, MI_A_5, MI_Gs_5, MI_Fs_5, MI_F_5, FN_MUTE,
- MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5, KC_VOLD, KC_VOLU,
+ MI_C_3, MI_G_5, MI_As_4, MI_C_5, MI_Ds_5,
MI_D_3, MI_Cs_3, MI_Gs_3, MI_As_3, MI_C_4, MI_D_5,
TG_SWAP, MI_B_2, MI_Fs_3, MI_Fs_4, MI_G_3, MI_B_3, MI_D_4, MI_G_4,
MI_A_2, MI_F_3, MI_E_3, MI_A_3, MI_Cs_4, MI_E_4, MI_A_4, MI_Cs_5,
@@ -67,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
@@ -82,14 +87,23 @@ 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, RGB_RMOD, RGB_MOD,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_MOD, EEP_RST, RGB_TOG
)
};
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_OPEN] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_CLOSE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_MISC] = { ENCODER_CCW_CW(_______, _______) },
+ [_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
+};
+#endif
+
void my_init(void){
// Set octave to MI_OCT_0
midi_config.octave = MI_OCT_0 - MIDI_OCTAVE_MIN;
@@ -115,10 +129,21 @@ void keyboard_post_init_user(void) {
my_init();
};
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+ }
+ return true;
+}
+
#ifdef RGB_MATRIX_ENABLE
void rgb_matrix_indicators_user(void) {
if (rgb_matrix_is_enabled()) { // turn the lights on when it is enabled.
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _CLOSE:
// rgb_matrix_set_color(pgm_read_byte(&convert_led_location2number[11]), RGB_RED); // RGB_TOG <- too heavy.
diff --git a/keyboards/bandominedoni/keymaps/via/rules.mk b/keyboards/bandominedoni/keymaps/via/rules.mk
index 71eb1ebf8e..8fa76afafc 100644
--- a/keyboards/bandominedoni/keymaps/via/rules.mk
+++ b/keyboards/bandominedoni/keymaps/via/rules.mk
@@ -1,3 +1,5 @@
RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
RGB_MATRIX_CUSTOM_KB = yes #
VIA_ENABLE = yes
+
+ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
diff --git a/keyboards/bantam44/config.h b/keyboards/bantam44/config.h
index 2745f5c045..6e0c57c838 100644
--- a/keyboards/bantam44/config.h
+++ b/keyboards/bantam44/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Bantam Keyboards
-#define PRODUCT Bantam44
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// COLS: Left to right, ROWS: Top to bottom
#define MATRIX_ROW_PINS { F0, D6, D4, D5 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D0, B6, F7, F6, F5, F4, F1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/bantam44/info.json b/keyboards/bantam44/info.json
index 6092898327..4531a7e28e 100644
--- a/keyboards/bantam44/info.json
+++ b/keyboards/bantam44/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Bantam-44",
+ "keyboard_name": "Bantam44",
+ "manufacturer": "Bantam Keyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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":"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, "w":1.5}, {"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, "w":1.25}, {"label":"K31", "x":1.25, "y":3, "w":1.25}, {"label":"K32", "x":2.5, "y":3, "w":1.25}, {"label":"K33", "x":3.75, "y":3, "w":1.25}, {"label":"K34", "x":5, "y":3, "w":2.75}, {"label":"K35", "x":7.75, "y":3, "w":1.25}, {"label":"K36", "x":9, "y":3}, {"label":"K37", "x":10, "y":3}, {"label":"K38", "x":11, "y":3}]
diff --git a/keyboards/barleycorn_smd/config.h b/keyboards/barleycorn_smd/config.h
index e56992f1fc..75db1ba447 100644
--- a/keyboards/barleycorn_smd/config.h
+++ b/keyboards/barleycorn_smd/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x7033
-#define PRODUCT_ID 0x4749
-#define DEVICE_VER 0x0001
-#define MANUFACTURER P3D Store
-#define PRODUCT Barleycorn SMD
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
@@ -43,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* A Custom matrix.c is used to poll the port expander C6 shows that the pins are hardwired there */
#define MATRIX_ROW_PINS { F5, F4, F1, F0, F6 }
#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, C7, D5, D5, D5, D5, D5, D5, D5, D5, D5, D5 }
-#define UNUSED_PINS
#define PORT_EXPANDER_ADDRESS 0x20
#define RGB_DI_PIN E6
diff --git a/keyboards/barleycorn_smd/info.json b/keyboards/barleycorn_smd/info.json
index c0094d20ac..caa0af6213 100644
--- a/keyboards/barleycorn_smd/info.json
+++ b/keyboards/barleycorn_smd/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Barleycorn SMD",
+ "manufacturer": "P3D Store",
"maintainer": "matthewdias",
+ "usb": {
+ "vid": "0x7033",
+ "pid": "0x4749",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/barracuda/config.h b/keyboards/barracuda/config.h
index 9b83522b1a..d6cc58bd8b 100644
--- a/keyboards/barracuda/config.h
+++ b/keyboards/barracuda/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6B6E
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER knaruo
-#define PRODUCT barracuda
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 6
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { C4, C5, C6, D1, D2, D3 }
#define MATRIX_COL_PINS { D4, D5, D6, B0, B1, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/barracuda/info.json b/keyboards/barracuda/info.json
index 4bb18fb911..aad3ac3bb2 100644
--- a/keyboards/barracuda/info.json
+++ b/keyboards/barracuda/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "barracuda",
+ "manufacturer": "knaruo",
"url": "https://github.com/knaruo/barracuda",
"maintainer": "knaruo",
+ "usb": {
+ "vid": "0x6B6E",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_3x11": {
"layout": [
diff --git a/keyboards/basekeys/slice/rev1/config.h b/keyboards/basekeys/slice/rev1/config.h
index 08c929b7b5..6239da2c82 100644
--- a/keyboards/basekeys/slice/rev1/config.h
+++ b/keyboards/basekeys/slice/rev1/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEC17
-#define DEVICE_VER 0x0002
-#define MANUFACTURER 2Moons
-#define PRODUCT Slice
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 9
diff --git a/keyboards/basekeys/slice/rev1/info.json b/keyboards/basekeys/slice/rev1/info.json
index f4e0d4505e..614b8ecac7 100644
--- a/keyboards/basekeys/slice/rev1/info.json
+++ b/keyboards/basekeys/slice/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "slice",
+ "keyboard_name": "Slice",
+ "manufacturer": "2Moons",
"url": "https://www.basekeys.com",
"maintainer": "2Moons",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEC17",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.6600000000000001, "y":0}, {"label":"!", "x":2.66, "y":0}, {"label":"@", "x":3.66, "y":0}, {"label":"#", "x":4.66, "y":0}, {"label":"$", "x":5.66, "y":0}, {"label":"%", "x":6.66, "y":0}, {"label":"^", "x":7.66, "y":0}, {"label":"&", "x":9.32, "y":0}, {"label":"*", "x":10.32, "y":0}, {"label":"(", "x":11.32, "y":0}, {"label":")", "x":12.32, "y":0}, {"label":"_", "x":13.32, "y":0}, {"label":"+", "x":14.32, "y":0}, {"label":"Backspace", "x":15.32, "y":0, "w":2}, {"x":0, "y":1}, {"label":"Tab", "x":1.53, "y":1, "w":1.5}, {"label":"Q", "x":3.03, "y":1}, {"label":"W", "x":4.03, "y":1}, {"label":"E", "x":5.03, "y":1}, {"label":"R", "x":6.03, "y":1}, {"label":"T", "x":7.03, "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.05, "y":1}, {"label":"|", "x":16.1, "y":1, "w":1.5}, {"x":0, "y":2}, {"label":"Caps Lock", "x":1.3900000000000001, "y":2, "w":1.75}, {"label":"A", "x":3.14, "y":2}, {"label":"S", "x":4.14, "y":2}, {"label":"D", "x":5.14, "y":2}, {"label":"F", "x":6.14, "y":2}, {"label":"G", "x":7.14, "y":2}, {"label":"H", "x":9.34, "y":2}, {"label":"J", "x":10.34, "y":2}, {"label":"K", "x":11.34, "y":2}, {"label":"L", "x":12.34, "y":2}, {"label":":", "x":13.34, "y":2}, {"label":"\"", "x":14.34, "y":2}, {"label":"Enter", "x":15.34, "y":2, "w":2.25}, {"x":0, "y":3}, {"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":8.97, "y":3}, {"label":"N", "x":9.97, "y":3}, {"label":"M", "x":10.97, "y":3}, {"label":"<", "x":11.97, "y":3}, {"label":">", "x":12.97, "y":3}, {"label":"?", "x":13.97, "y":3}, {"label":"Shift", "x":14.97, "y":3, "w":1.75}, {"label":"Shift", "x":16.72, "y":3}, {"x":0, "y":4}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.25}, {"label":"Alt", "x":2.75, "y":4, "w":1.25}, {"label":"\u21d3", "x":4.75, "y":4}, {"x":5.75, "y":4, "w":2.75}, {"x":8.97, "y":4, "w":2.25}, {"label":"\u21d1", "x":11.22, "y":4}, {"label":"Alt", "x":13.98, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.23, "y":4, "w":1.25}, {"label":"Fn", "x":16.48, "y":4}]
diff --git a/keyboards/basekeys/slice/rev1/keymaps/2moons/keymap.c b/keyboards/basekeys/slice/rev1/keymaps/2moons/keymap.c
index 26ca151089..e0f73fab2f 100644
--- a/keyboards/basekeys/slice/rev1/keymaps/2moons/keymap.c
+++ b/keyboards/basekeys/slice/rev1/keymaps/2moons/keymap.c
@@ -46,8 +46,8 @@ enum tapdances{
};
qk_tap_dance_action_t tap_dance_actions[] = {
- [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
- [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+ [TD_ESFL] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _QWERTY),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -123,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_all( /* Base */
//,------------------------------------------------------------------------| |----------------------------------------------------------------.
- XXXXXXX, TG(_ADJUST), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX,
+ XXXXXXX, TG(_ADJUST), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX,
//|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+---------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------|
diff --git a/keyboards/basekeys/slice/rev1_rgb/config.h b/keyboards/basekeys/slice/rev1_rgb/config.h
index 9f503a5826..f839bfa5b3 100644
--- a/keyboards/basekeys/slice/rev1_rgb/config.h
+++ b/keyboards/basekeys/slice/rev1_rgb/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEC15
-#define DEVICE_VER 0x0002
-#define MANUFACTURER 2Moons
-#define PRODUCT Slice RGB
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 9
diff --git a/keyboards/basekeys/slice/rev1_rgb/info.json b/keyboards/basekeys/slice/rev1_rgb/info.json
index 6344dc8aa0..ece3b72561 100644
--- a/keyboards/basekeys/slice/rev1_rgb/info.json
+++ b/keyboards/basekeys/slice/rev1_rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "slice",
+ "keyboard_name": "Slice RGB",
+ "manufacturer": "2Moons",
"url": "https://www.basekeys.com",
"maintainer": "2Moons",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEC15",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"~", "x":1.660, "y":0}, {"label":"!", "x":2.66, "y":0}, {"label":"@", "x":3.66, "y":0}, {"label":"#", "x":4.66, "y":0}, {"label":"$", "x":5.66, "y":0}, {"label":"%", "x":6.66, "y":0}, {"label":"^", "x":7.66, "y":0}, {"label":"&", "x":9.32, "y":0}, {"label":"*", "x":10.32, "y":0}, {"label":"(", "x":11.32, "y":0}, {"label":")", "x":12.32, "y":0}, {"label":"_", "x":13.32, "y":0}, {"label":"+", "x":14.32, "y":0}, {"label":"Backspace", "x":15.32, "y":0, "w":2}, {"x":0, "y":1}, {"label":"Tab", "x":1.53, "y":1, "w":1.5}, {"label":"Q", "x":3.03, "y":1}, {"label":"W", "x":4.03, "y":1}, {"label":"E", "x":5.03, "y":1}, {"label":"R", "x":6.03, "y":1}, {"label":"T", "x":7.03, "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.05, "y":1}, {"label":"|", "x":16.1, "y":1, "w":1.5}, {"x":0, "y":2}, {"label":"Caps Lock", "x":1.390, "y":2, "w":1.75}, {"label":"A", "x":3.14, "y":2}, {"label":"S", "x":4.14, "y":2}, {"label":"D", "x":5.14, "y":2}, {"label":"F", "x":6.14, "y":2}, {"label":"G", "x":7.14, "y":2}, {"label":"H", "x":9.34, "y":2}, {"label":"J", "x":10.34, "y":2}, {"label":"K", "x":11.34, "y":2}, {"label":"L", "x":12.34, "y":2}, {"label":":", "x":13.34, "y":2}, {"label":"\"", "x":14.34, "y":2}, {"label":"Enter", "x":15.34, "y":2, "w":2.25}, {"x":0, "y":3}, {"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":8.97, "y":3}, {"label":"N", "x":9.97, "y":3}, {"label":"M", "x":10.97, "y":3}, {"label":"<", "x":11.97, "y":3}, {"label":">", "x":12.97, "y":3}, {"label":"?", "x":13.97, "y":3}, {"label":"Shift", "x":14.97, "y":3, "w":1.75}, {"label":"Shift", "x":16.72, "y":3}, {"x":0, "y":4}, {"label":"Ctrl", "x":1.5, "y":4, "w":1.25}, {"label":"Alt", "x":2.75, "y":4, "w":1.25}, {"label":"\u21d3", "x":4.75, "y":4}, {"x":5.75, "y":4, "w":2.75}, {"x":8.97, "y":4, "w":2.25}, {"label":"\u21d1", "x":11.22, "y":4}, {"label":"Alt", "x":13.98, "y":4, "w":1.25}, {"label":"Ctrl", "x":15.23, "y":4, "w":1.25}, {"label":"Fn", "x":16.48, "y":4}]
diff --git a/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c b/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c
index 05de0e42d0..4b2de19761 100644
--- a/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c
+++ b/keyboards/basekeys/slice/rev1_rgb/keymaps/2moons_rgb/keymap.c
@@ -39,8 +39,8 @@ enum tapdances{
};
qk_tap_dance_action_t tap_dance_actions[] = {
- [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
- [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+ [TD_ESFL] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _QWERTY),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -116,7 +116,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT( /* Base */
//,-------------------------------------------------------------------------| |---------------------------------------------------------------------------.
- XXXXXXX,TG(_ADJUST),XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ XXXXXXX,TG(_ADJUST),XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
//|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|-------------------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+----------+----------|
diff --git a/keyboards/basekeys/trifecta/config.h b/keyboards/basekeys/trifecta/config.h
index ffdf6d2d28..753e3d5a41 100644
--- a/keyboards/basekeys/trifecta/config.h
+++ b/keyboards/basekeys/trifecta/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEAF3
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT Trifecta
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
diff --git a/keyboards/basekeys/trifecta/info.json b/keyboards/basekeys/trifecta/info.json
index 86c45a7df2..f8819e51e4 100644
--- a/keyboards/basekeys/trifecta/info.json
+++ b/keyboards/basekeys/trifecta/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Trifecta",
+ "manufacturer": "Swiftrax",
"url": "https://www.basekeys.com",
"maintainer": "Swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEAF3",
+ "device_version": "0.0.1"
+ },
"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.75, "y":0}, {"label":"*", "x":9.75, "y":0}, {"label":"(", "x":10.75, "y":0}, {"label":")", "x":11.75, "y":0}, {"label":"_", "x":12.75, "y":0}, {"label":"+", "x":13.75, "y":0}, {"label":"BS", "x":14.75, "y":0}, {"x":15.75, "y":0}, {"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.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":"|", "x":15.25, "y":1, "w":1.5}, {"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.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", "x":14.5, "y":2, "w":2.25}, {"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}, {"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":"Shift", "x":14, "y":3, "w":1.75}, {"x":16, "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":3, "y":4, "w":1.5}, {"x":4.5, "y":4, "w":2.25}, {"x":6.75, "y":4}, {"x":8.5, "y":4, "w":2.75}, {"label":"Alt", "x":11.25, "y":4, "w":1.5}, {"label":"Win", "x":13.5, "y":4, "w":1.25}, {"x":15, "y":4.25}, {"x":16, "y":4.25}, {"x":17, "y":4.25}]
diff --git a/keyboards/basketweave/config.h b/keyboards/basketweave/config.h
index 6f6e325e28..88828d7ddd 100644
--- a/keyboards/basketweave/config.h
+++ b/keyboards/basketweave/config.h
@@ -18,19 +18,12 @@
#include "config_common.h"
-#define VENDOR_ID 0x6B62
-#define PRODUCT_ID 0x8989
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Clackery
-#define PRODUCT Basketweave
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { A6, C6, C7, A7, A5 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, B0, B1, B2, D5, D6, C5, C4, C3, C2, C1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/basketweave/info.json b/keyboards/basketweave/info.json
index 8be02555e8..c26fecaf1b 100644
--- a/keyboards/basketweave/info.json
+++ b/keyboards/basketweave/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Basketweave",
+ "manufacturer": "Clackery",
"url": "https://github.com/null-ll/basketweave",
"maintainer": "null-ll",
+ "usb": {
+ "vid": "0x6B62",
+ "pid": "0x8989",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/bastardkb/charybdis/3x5/3x5.c b/keyboards/bastardkb/charybdis/3x5/3x5.c
index d896cf6923..7b10d322cd 100644
--- a/keyboards/bastardkb/charybdis/3x5/3x5.c
+++ b/keyboards/bastardkb/charybdis/3x5/3x5.c
@@ -33,6 +33,10 @@
* ╰────────────────────╯ ╰────────────────────╯
* 15 16 17 33 34 XX
* ╰────────────╯ ╰────────────╯
+ *
+ * Note: the LED config simulates 36 LEDs instead of the actual 35 to prevent
+ * confusion when testing LEDs during assembly when handedness is not set
+ * correctly. Those fake LEDs are bound to the physical top-left corner.
*/
led_config_t g_led_config = { {
/* Key Matrix to LED index. */
@@ -61,7 +65,7 @@ led_config_t g_led_config = { {
/* 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 },
+ /* index=33 */ { 134, 64 }, { 152, 64 }, { 0, 0 },
}, {
/* LED index to flag. */
// Left split.
@@ -77,7 +81,7 @@ led_config_t g_led_config = { {
/* 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
+ /* index=33 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // Thumb cluster
} };
#endif
// clang-format on
diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/config.h b/keyboards/bastardkb/charybdis/3x5/blackpill/config.h
new file mode 100644
index 0000000000..ddd5e83318
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/blackpill/config.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+ * Copyright 2021 Stefan Kerkmann (@KarlK90)
+ * 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/>.
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { A2, B8, A8, B9 }
+#define MATRIX_COL_PINS \
+ { B1, B10, B3, B4, B5 }
+
+/* Handedness. */
+#define SPLIT_HAND_PIN A3 // High -> left, Low -> right.
+
+/* RGB settings. */
+#define RGB_DI_PIN A1
+#define WS2812_PWM_DRIVER PWMD2
+#define WS2812_PWM_CHANNEL 2
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_EXTERNAL_PULLUP
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM1
+#define WS2812_DMA_CHANNEL 3
+#define WS2812_PWM_TARGET_PERIOD 800000
+
+/* Serial configuration for split keyboard. */
+#define SERIAL_USART_TX_PIN A9
+
+/* CRC. */
+#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
+
+/* PMW3360 settings. */
+#define PMW33XX_CS_PIN B14
+#define PMW33XX_CS_DIVISOR 64
diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/halconf.h b/keyboards/bastardkb/charybdis/3x5/blackpill/halconf.h
new file mode 100644
index 0000000000..a89dff0cd3
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/blackpill/halconf.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2020 Nick Brassel (tzarc)
+ * 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 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/blackpill/info.json b/keyboards/bastardkb/charybdis/3x5/blackpill/info.json
new file mode 100644
index 0000000000..1e347df9b2
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/blackpill/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis Nano (3x5) Blackpill",
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/mcuconf.h b/keyboards/bastardkb/charybdis/3x5/blackpill/mcuconf.h
new file mode 100644
index 0000000000..1615d1bf46
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/blackpill/mcuconf.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2020 Nick Brassel (tzarc)
+ * Copyright 2021 Stefan Kerkmann (@KarlK90)
+ * 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_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_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
+
+// #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/blackpill/readme.md b/keyboards/bastardkb/charybdis/3x5/blackpill/readme.md
new file mode 100644
index 0000000000..7ef08798b8
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/blackpill/readme.md
@@ -0,0 +1,3 @@
+# Charybdis Nano (3x5) BlackPill
+
+An ergonomic keyboard with integrated trackball, with BlackPill (STM32F411) mod.
diff --git a/keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk b/keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk
new file mode 100644
index 0000000000..0f732c2cbd
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/blackpill/rules.mk
@@ -0,0 +1,41 @@
+# MCU name
+MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
+
+# 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 = 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
+
+# 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
+MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint
+KEYBOARD_SHARED_EP = yes
+
+EEPROM_DRIVER = spi
+WS2812_DRIVER = pwm
+SERIAL_DRIVER = usart
+
+DEBOUNCE_TYPE = asym_eager_defer_pk
diff --git a/keyboards/bastardkb/charybdis/3x5/config.h b/keyboards/bastardkb/charybdis/3x5/config.h
index 89b896bc35..6e3b8a7124 100644
--- a/keyboards/bastardkb/charybdis/3x5/config.h
+++ b/keyboards/bastardkb/charybdis/3x5/config.h
@@ -18,58 +18,22 @@
#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_ROWS 8 // Rows are doubled-up.
#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
-/* PMW3360 settings. */
-#define PMW3360_CS_PIN B0
-
-// Trackball angle adjustment.
+/* Trackball angle adjustment. */
#define ROTATIONAL_TRANSFORM_ANGLE -25
/* RGB settings. */
-
-#define RGB_DI_PIN D3
-#define RGBLED_NUM 35
+#define RGBLED_NUM 36
#define RGBLED_SPLIT \
- { 18, 17 }
+ { 18, 18 }
/* RGB matrix support. */
#ifdef RGB_MATRIX_ENABLE
diff --git a/keyboards/bastardkb/charybdis/3x5/info.json b/keyboards/bastardkb/charybdis/3x5/info.json
index 03fb05664f..41c80b457f 100644
--- a/keyboards/bastardkb/charybdis/3x5/info.json
+++ b/keyboards/bastardkb/charybdis/3x5/info.json
@@ -1,7 +1,10 @@
{
- "keyboard_name": "Charybdis Nano",
- "url": "https://www.bastardkb.com",
- "maintainer": "Quentin Lebastard",
+ "url": "https://bastardkb.com/charybdis-nano",
+ "manufacturer": "Bastard Keyboards",
+ "usb": {
+ "vid": "0xA8F8",
+ "pid": "0x1832",
+ },
"layouts": {
"LAYOUT_charybdis_3x5": {
"layout": [
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/README.md b/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/README.md
new file mode 100644
index 0000000000..5d9f7fcd5f
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/README.md
@@ -0,0 +1,3 @@
+# Charybdis (3x5) @bstiq keymap
+
+Inspired from Miryoku, using home-rows.
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/config.h b/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/config.h
new file mode 100644
index 0000000000..699a700063
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/config.h
@@ -0,0 +1,166 @@
+/**
+ * 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
+
+#ifdef VIA_ENABLE
+/* Via configuration. */
+# define DYNAMIC_KEYMAP_LAYER_COUNT 8
+#endif // VIA_ENABLE
+
+#ifndef __arm__
+/* Disable unused features. */
+# define NO_ACTION_ONESHOT
+#endif // __arm__
+
+/**
+ * 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
+ */
+#ifndef TAPPING_TERM
+# define TAPPING_TERM 160
+#endif // TAPPING_TERM
+
+/**
+ * Enable rapid switch from tap to hold. 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.
+ */
+
+/**
+ * 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
+
+/**
+ * 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
+// 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
+
+// Flip horizontal direction for drag-scroll.
+# define CHARYBDIS_DRAGSCROLL_REVERSE_X
+// #define CHARYBDIS_DRAGSCROLL_REVERSE_Y
+#endif // POINTING_DEVICE_ENABLE
+
+/** RGB Matrix. */
+
+#ifdef RGB_MATRIX_ENABLE
+# ifdef __arm__
+// Enable all animations on ARM boards since they have plenty of memory
+// available for it.
+# 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_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
+# else
+// Disable control of RGB matrix by keycodes (must use firmware implementation
+// to control the feature).
+# define RGB_MATRIX_DISABLE_KEYCODES
+# endif
+
+// 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/bstiq/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/keymap.c
new file mode 100644
index 0000000000..ca67dd690c
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/keymap.c
@@ -0,0 +1,224 @@
+/**
+ * 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/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum charybdis_keymap_bstiq_layers {
+ LAYER_BASE = 0,
+ LAYER_MBO,
+ LAYER_MEDIA,
+ LAYER_NAV,
+ LAYER_MOUSE,
+ LAYER_SYM,
+ LAYER_NUM,
+ LAYER_FUN,
+};
+
+// Automatically enable sniping when the mouse layer is on.
+#define CHARYBDIS_AUTO_SNIPING_ON_LAYER LAYER_MOUSE
+
+#define BSP_NAV LT(LAYER_NAV, KC_BSPC)
+#define ENT_MBO LT(LAYER_MBO, KC_ENT)
+#define TAB_MED LT(LAYER_MEDIA, KC_TAB)
+#define ESC_SYM LT(LAYER_SYM, KC_ESC)
+#define SPC_NUM LT(LAYER_NUM, KC_SPC)
+#define MOUSE(KC) LT(LAYER_MOUSE, KC)
+
+#define USR_RDO KC_AGAIN
+#define USR_PST S(KC_INS)
+#define USR_CPY C(KC_INS)
+#define USR_CUT S(KC_DEL)
+#define USR_UND KC_UNDO
+
+#define MS_L KC_MS_LEFT
+#define MS_R KC_MS_RIGHT
+#define MS_D KC_MS_DOWN
+#define MS_U KC_MS_UP
+
+#define WH_L KC_MS_WH_LEFT
+#define WH_R KC_MS_WH_RIGHT
+#define WH_D KC_MS_WH_DOWN
+#define WH_U KC_MS_WH_UP
+
+// clang-format off
+/** Convenience macro. */
+#define _KC_LAYOUT_wrapper( \
+ 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_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, \
+ KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, \
+ KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, \
+ __VA_ARGS__
+#define KC_LAYOUT_wrapper(...) _KC_LAYOUT_wrapper(__VA_ARGS__)
+
+/** Base layer with BÉPO layout. */
+#define LAYOUT_LAYER_BASE_BEPO KC_LAYOUT_wrapper( \
+ B, Z, P, O, QUOT, DOT, V, D, L, J, \
+ A, U, I, E, COMM, C, T, S, R, N, \
+ W, Y, X, SLSH, K, M, Q, G, H, F, \
+ BSP_NAV, ENT_MBO, TAB_MED, ESC_SYM, SPC_NUM)
+
+/** Convenience key shorthands. */
+#define U_NA KC_NO // Present but not available for use.
+#define U_NU KC_NO // Available but not used.
+
+/** Convenience row shorthands. */
+#define __________________RESET_L__________________ QK_BOOT, U_NA, U_NA, U_NA, U_NA
+#define __________________RESET_R__________________ U_NA, U_NA, U_NA, U_NA, QK_BOOT
+#define ______________HOME_ROW_GASC_L______________ KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, U_NA
+#define ______________HOME_ROW_ALGR_L______________ U_NA, KC_ALGR, U_NA, U_NA, U_NA
+#define ______________HOME_ROW_GASC_R______________ U_NA, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI
+#define ______________HOME_ROW_ALGR_R______________ U_NA, U_NA, U_NA, KC_ALGR, U_NA
+
+/** Layers. */
+
+// Buttons.
+#define LAYOUT_LAYER_MBO \
+ __________________RESET_L__________________, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
+ ______________HOME_ROW_GASC_L______________, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, \
+ KC_BTN3, KC_ALGR, KC_BTN2, KC_BTN1, U_NA, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, \
+ U_NA, U_NA, U_NA, KC_ENT, KC_DEL
+
+// Media.
+#define LAYOUT_LAYER_MEDIA \
+ __________________RESET_L__________________, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
+ ______________HOME_ROW_GASC_L______________, U_NU, MS_L, MS_D, MS_U, MS_R, \
+ ______________HOME_ROW_ALGR_L______________, U_NU, WH_L, WH_D, WH_U, WH_R, \
+ U_NA, U_NA, U_NA, KC_BTN1, KC_BTN3
+
+// Navigation.
+#define LAYOUT_LAYER_NAV \
+ __________________RESET_L__________________, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, \
+ ______________HOME_ROW_GASC_L______________, U_NU, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, \
+ ______________HOME_ROW_ALGR_L______________, U_NU, U_NU, U_NU, U_NU, U_NU, \
+ U_NA, U_NA, U_NA, KC_MSTP, KC_MPLY
+
+// Mouse.
+#define LAYOUT_LAYER_MOUSE \
+ S_D_MOD, USR_PST, USR_CPY, USR_CUT, USR_UND, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
+ DPI_MOD, DRGSCRL, KC_LSFT, KC_LCTL, _______, U_NU, MS_L, MS_D, MS_U, MS_R, \
+ USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, U_NU, WH_L, WH_D, WH_U, WH_R, \
+ KC_BTN2, KC_BTN1, KC_BTN3, KC_BTN1, KC_BTN3
+
+// Symbols.
+#define LAYOUT_LAYER_SYM \
+ KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, __________________RESET_R__________________, \
+ KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, ______________HOME_ROW_GASC_R______________, \
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, ______________HOME_ROW_ALGR_R______________, \
+ KC_LPRN, KC_RPRN, KC_UNDS, U_NA, U_NA
+
+// Numerals.
+#define LAYOUT_LAYER_NUM \
+ KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, __________________RESET_R__________________, \
+ KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, ______________HOME_ROW_GASC_R______________, \
+ KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, ______________HOME_ROW_ALGR_R______________, \
+ KC_DOT, KC_0, KC_MINS, U_NA, U_NA
+
+// Function keys.
+#define LAYOUT_LAYER_FUN \
+ KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, __________________RESET_R__________________, \
+ KC_F11, KC_F4, KC_F5, KC_F6, KC_SLCK, ______________HOME_ROW_GASC_R______________, \
+ KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, ______________HOME_ROW_ALGR_R______________,\
+ KC_APP, KC_SPC, KC_TAB, U_NA, U_NA
+
+/**
+ * Add Home Row mod to a layout.
+ *
+ * Expects a 10-key per row layout. Adds support for GASC (Gui, Alt, Shift, Ctl)
+ * home row. The layout passed in parameter must contain at least 20 keycodes.
+ *
+ * This is meant to be used with `LAYOUT_LAYER_BASE_BEPO` defined above, eg.:
+ *
+ * HOME_ROW_MOD_GASC(LAYOUT_LAYER_BASE_BEPO)
+ */
+#define _HOME_ROW_MOD_GASC( \
+ 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), LSFT_T(L12), LCTL_T(L13), L14, \
+ R15, RCTL_T(R16), RSFT_T(R17), LALT_T(R18), RGUI_T(R19), \
+ __VA_ARGS__
+#define HOME_ROW_MOD_GASC(...) _HOME_ROW_MOD_GASC(__VA_ARGS__)
+
+/**
+ * Add mouse 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 `LAYOUT_LAYER_BASE_BEPO` defined above, eg.:
+ *
+ * MOUSE_MOD(LAYOUT_LAYER_BASE_BEPO)
+ */
+#define _MOUSE_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, \
+ MOUSE(L20), L21, L22, L23, L24, \
+ R25, R26, R27, R28, MOUSE(R29), \
+ __VA_ARGS__
+#define MOUSE_MOD(...) _MOUSE_MOD(__VA_ARGS__)
+
+#define LAYOUT_wrapper(...) LAYOUT_charybdis_3x5(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_BASE] = LAYOUT_wrapper(
+ MOUSE_MOD(HOME_ROW_MOD_GASC(LAYOUT_LAYER_BASE_BEPO))
+ ),
+ [LAYER_MBO] = LAYOUT_wrapper(LAYOUT_LAYER_MBO),
+ [LAYER_MEDIA] = LAYOUT_wrapper(LAYOUT_LAYER_MEDIA),
+ [LAYER_NAV] = LAYOUT_wrapper(LAYOUT_LAYER_NAV),
+ [LAYER_MOUSE] = LAYOUT_wrapper(LAYOUT_LAYER_MOUSE),
+ [LAYER_SYM] = LAYOUT_wrapper(LAYOUT_LAYER_SYM),
+ [LAYER_NUM] = LAYOUT_wrapper(LAYOUT_LAYER_NUM),
+ [LAYER_FUN] = LAYOUT_wrapper(LAYOUT_LAYER_FUN),
+};
+// clang-format on
+
+#if defined(POINTING_DEVICE_ENABLE) && defined(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 // POINTING_DEVICE_ENABLE && CHARYBDIS_AUTO_SNIPING_ON_LAYER
+
+#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/bstiq/rules.mk b/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/rules.mk
new file mode 100644
index 0000000000..5d91064607
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/bstiq/rules.mk
@@ -0,0 +1,10 @@
+ifeq ($(MCU),atmega32u4)
+ # Space saving settings.
+ TAP_DANCE_ENABLE = no
+ COMBO_ENABLE = no
+ QMK_SETTINGS = no
+else ifeq ($(MCU),STM32F411)
+ EEPROM_DRIVER = vendor
+endif
+
+VIA_ENABLE = yes
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c
index cb578aa8d6..148f026740 100644
--- a/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/default/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_4, KC_5, KC_6, KC_PMNS,
// ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
- XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, QK_BOOT, KC_PAST, KC_1, KC_2, KC_3, KC_PSLS,
+ XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, QK_BOOT, KC_PAST, KC_1, KC_2, KC_3, KC_PSLS,
// ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
XXXXXXX, XXXXXXX, _______, XXXXXXX, _______
// ╰───────────────────────────╯ ╰──────────────────╯
@@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
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, QK_BOOT, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, QK_BOOT, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX,
// ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
_______, _______, XXXXXXX, _______, XXXXXXX
// ╰───────────────────────────╯ ╰──────────────────╯
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h
index 0f08aee9ef..39204a3667 100644
--- a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/config.h
@@ -98,10 +98,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #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
+#undef PMW33XX_CS_PIN
+#define PMW33XX_CS_PIN B0
#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk
index 0cff2a7a2e..1369213cf2 100644
--- a/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/drashna/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
# BOOTLOADER = stm32-dfu
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/config.h b/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..935444af1b
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/config.h
@@ -0,0 +1,19 @@
+// Copyright 2022 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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 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_charybdis_3x5( \
+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, \
+ K32, K33, K34, K35, K36 \
+)
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..dbab7f9820
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/rules.mk b/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/rules.mk
new file mode 100644
index 0000000000..ef40279cbc
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/manna-harbour_miryoku/rules.mk
@@ -0,0 +1,4 @@
+# Copyright 2021 Manna Harbour
+# https://github.com/manna-harbour/miryoku
+
+MIRYOKU_KLUDGE_THUMBCOMBOS=yes
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/via/config.h b/keyboards/bastardkb/charybdis/3x5/keymaps/via/config.h
index f515d85334..d20131e9cf 100644
--- a/keyboards/bastardkb/charybdis/3x5/keymaps/via/config.h
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/via/config.h
@@ -19,7 +19,7 @@
#ifdef VIA_ENABLE
/* VIA configuration. */
# define DYNAMIC_KEYMAP_LAYER_COUNT 7
-#endif // VIA_ENABLE
+#endif // VIA_ENABLE
/* Disable unused features. */
#define NO_ACTION_ONESHOT
@@ -33,7 +33,7 @@
* See docs.qmk.fm/using-qmk/software-features/tap_hold#tapping-term
*/
# define TAPPING_TERM 200
-#endif // TAPPING_TERM
+#endif // TAPPING_TERM
/**
* \brief Enable rapid switch from tap to hold.
@@ -84,16 +84,11 @@
/* 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
+#endif // POINTING_DEVICE_ENABLE
/* RGB Matrix. */
@@ -115,4 +110,4 @@
# 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
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c b/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c
index dc02ed34c6..b54c58cf0c 100644
--- a/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c
+++ b/keyboards/bastardkb/charybdis/3x5/keymaps/via/keymap.c
@@ -18,7 +18,7 @@
#ifdef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
# include "timer.h"
-#endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+#endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
enum charybdis_keymap_layers {
LAYER_BASE = 0,
@@ -38,12 +38,12 @@ 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
+# 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
+# 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)
@@ -52,6 +52,13 @@ static uint16_t auto_pointer_layer_timer = 0;
#define BSP_NUM LT(LAYER_NUMERAL, KC_BSPC)
#define _L_PTR(KC) LT(LAYER_POINTER, KC)
+#ifndef POINTING_DEVICE_ENABLE
+# define DRGSCRL KC_NO
+# define DPI_MOD KC_NO
+# define S_D_MOD KC_NO
+# define SNIPING KC_NO
+#endif // !POINTING_DEVICE_ENABLE
+
// clang-format off
/** \brief QWERTY layout (3 rows, 10 columns). */
#define LAYOUT_LAYER_BASE \
@@ -98,14 +105,14 @@ static uint16_t auto_pointer_layer_timer = 0;
#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, QK_BOOT, QK_BOOT, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, \
+ XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, QK_BOOT, QK_BOOT, 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, QK_BOOT, QK_BOOT, EEP_RST, SNIPING, DRGSCRL, _______, \
+ _______, DRGSCRL, SNIPING, EEP_RST, QK_BOOT, QK_BOOT, EEP_RST, SNIPING, DRGSCRL, _______, \
KC_BTN2, KC_BTN1, KC_BTN3, KC_BTN3, KC_BTN1
/**
@@ -217,36 +224,35 @@ report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
# ifdef RGB_MATRIX_ENABLE
rgb_matrix_mode_noeeprom(RGB_MATRIX_NONE);
rgb_matrix_sethsv_noeeprom(HSV_GREEN);
-# endif // RGB_MATRIX_ENABLE
+# endif // RGB_MATRIX_ENABLE
}
auto_pointer_layer_timer = timer_read();
}
return mouse_report;
}
-void matrix_scan_kb(void) {
+void matrix_scan_user(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
+# endif // RGB_MATRIX_ENABLE
}
- matrix_scan_user();
}
-# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+# 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);
+layer_state_t layer_state_set_user(layer_state_t 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
+# 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.
+// Forward-declare this helper function since it is defined in
+// rgb_matrix.c.
void rgb_matrix_update_pwm_buffers(void);
#endif
@@ -255,9 +261,9 @@ void shutdown_user(void) {
rgblight_enable_noeeprom();
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
rgblight_setrgb_red();
-#endif // RGBLIGHT_ENABLE
+#endif // RGBLIGHT_ENABLE
#ifdef RGB_MATRIX_ENABLE
rgb_matrix_set_color_all(RGB_RED);
rgb_matrix_update_pwm_buffers();
-#endif // RGB_MATRIX_ENABLE
+#endif // RGB_MATRIX_ENABLE
}
diff --git a/keyboards/bastardkb/charybdis/3x5/rules.mk b/keyboards/bastardkb/charybdis/3x5/rules.mk
deleted file mode 100644
index c5f3f0fb8c..0000000000
--- a/keyboards/bastardkb/charybdis/3x5/rules.mk
+++ /dev/null
@@ -1,38 +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 = 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/3x5/v1/elitec/config.h b/keyboards/bastardkb/charybdis/3x5/v1/elitec/config.h
new file mode 100644
index 0000000000..3e3d95174c
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v1/elitec/config.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+ * 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
+
+/* Key matrix configuration. */
+#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 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN D2
+
+/* RGB settings. */
+#define RGB_DI_PIN D3
+
+/* PMW3360 settings. */
+#define PMW33XX_CS_PIN B0
diff --git a/keyboards/bastardkb/charybdis/3x5/v1/elitec/info.json b/keyboards/bastardkb/charybdis/3x5/v1/elitec/info.json
new file mode 100644
index 0000000000..9071212f33
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v1/elitec/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis Nano (3x5) Elite-C",
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/charybdis/3x5/v1/elitec/rules.mk b/keyboards/bastardkb/charybdis/3x5/v1/elitec/rules.mk
new file mode 100644
index 0000000000..22bd22652a
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v1/elitec/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
+
+# 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
+MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint
+
+# Enable link-time optimization by default. The Charybdis packs a lot of
+# features (RGB, Via, trackball) in a small atmega32u4 package.
+LTO_ENABLE = yes
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/elitec/config.h b/keyboards/bastardkb/charybdis/3x5/v2/elitec/config.h
new file mode 100644
index 0000000000..5c11fa3145
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v2/elitec/config.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { F7, C6, D4, B5 }
+#define MATRIX_COL_PINS \
+ { F5, B6, D7, E6, B4 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN D2
+
+/* RGB settings. */
+#define RGB_DI_PIN D3
+
+/* PMW3360 settings. */
+#define PMW33XX_CS_PIN F0
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/elitec/info.json b/keyboards/bastardkb/charybdis/3x5/v2/elitec/info.json
new file mode 100644
index 0000000000..7c90e5d5a3
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v2/elitec/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis Nano (3x5) Elite-C",
+ "usb": {
+ "device_version": "2.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/elitec/rules.mk b/keyboards/bastardkb/charybdis/3x5/v2/elitec/rules.mk
new file mode 100644
index 0000000000..22bd22652a
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v2/elitec/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
+
+# 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
+MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint
+
+# Enable link-time optimization by default. The Charybdis packs a lot of
+# features (RGB, Via, trackball) in a small atmega32u4 package.
+LTO_ENABLE = yes
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky/config.h b/keyboards/bastardkb/charybdis/3x5/v2/splinky/config.h
new file mode 100644
index 0000000000..2929d3dd1e
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v2/splinky/config.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { GP26, GP5, GP4, GP9 }
+#define MATRIX_COL_PINS \
+ { GP28, GP15, GP6, GP7, GP8 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+// To use the handedness pin, resistors need to be installed on the adapter PCB.
+// If so, uncomment the following code, and undefine MASTER_RIGHT above.
+// #define SPLIT_HAND_PIN GP13
+// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left.
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN GP1
+
+/* RGB settings. */
+#define RGB_DI_PIN GP0
+
+/* SPI & PMW3360 settings. */
+#define SPI_DRIVER SPID0
+#define SPI_SCK_PIN GP18
+#define SPI_MOSI_PIN GP19
+#define SPI_MISO_PIN GP20
+#define PMW33XX_CS_PIN GP14
+
+/* Reset. */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky/info.json b/keyboards/bastardkb/charybdis/3x5/v2/splinky/info.json
new file mode 100644
index 0000000000..1aa1e8811d
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v2/splinky/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis Nano (3x5) Splinky",
+ "usb": {
+ "device_version": "2.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky/mcuconf.h b/keyboards/bastardkb/charybdis/3x5/v2/splinky/mcuconf.h
new file mode 100644
index 0000000000..0fdd67c3a2
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v2/splinky/mcuconf.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2022 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_next "mcuconf.h"
+
+#undef RP_SPI_USE_SPI0
+#define RP_SPI_USE_SPI0 TRUE
diff --git a/keyboards/bastardkb/charybdis/3x5/v2/splinky/rules.mk b/keyboards/bastardkb/charybdis/3x5/v2/splinky/rules.mk
new file mode 100644
index 0000000000..21a9506077
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x5/v2/splinky/rules.mk
@@ -0,0 +1,37 @@
+# MCU name
+MCU = RP2040
+
+# Bootloader selection
+BOOTLOADER = rp2040
+
+# RP2040-specific options
+ALLOW_WARNINGS = yes
+PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS.
+
+# 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
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x5_3
+
+POINTING_DEVICE_ENABLE = yes # Enable trackball
+POINTING_DEVICE_DRIVER = pmw3360
+
+SERIAL_DRIVER = vendor
+WS2812_DRIVER = vendor
diff --git a/keyboards/bastardkb/charybdis/3x6/3x6.c b/keyboards/bastardkb/charybdis/3x6/3x6.c
new file mode 100644
index 0000000000..beb04efc0b
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/3x6.c
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2022 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 "3x6.h"
+
+// clang-format off
+#ifdef RGB_MATRIX_ENABLE
+/**
+ * \brief LEDs index.
+ *
+ # 0,0 14 28 42 56 70 84 98 126 140 154 168 182 196 210 224,0
+ # 0,0 15 30 45 60 75 90 105 119 134 149 164 179 194 209 224,0
+ * ╭────────────────────────╮ ╭────────────────────────╮
+ * 0 5 6 11 12 15 36 33 32 27 26 21
+ * ├────────────────────────┤ ├────────────────────────┤
+ * 1 4 7 10 13 16 37 34 31 28 25 22
+ * ├────────────────────────┤ ├────────────────────────┤
+ * 2 3 8 9 14 17 38 35 30 29 24 23
+ * ╰────────────────────────╯ ╰────────────────────────╯
+ * 18 19 20 39 40 XX
+ * ╰────────────╯ ╰────────────╯
+ *
+ * Note: the LED config simulates 42 LEDs instead of the actual 41 to prevent
+ * confusion when testing LEDs during assembly when handedness is not set
+ * correctly. Those fake LEDs are bound to the physical top-left corner.
+ */
+led_config_t g_led_config = { {
+ /* Key Matrix to LED index. */
+ // Left split.
+ { 0, 5, 6, 11, 12, 15 }, // Top row
+ { 1, 4, 7, 10, 13, 16 }, // Middle row
+ { 2, 3, 8, 9, 14, 17 }, // Bottom row
+ { NO_LED, 20, NO_LED, 18, 19, NO_LED }, // Thumb cluster
+ // Right split.
+ { 21, 26, 27, 32, 33, 36 }, // Top row
+ { 22, 25, 28, 31, 34, 37 }, // Middle row
+ { 23, 24, 29, 30, 35, 38 }, // Bottom row
+ { NO_LED, 41, NO_LED, 39, 40, NO_LED }, // Thumb cluster
+}, {
+ /* LED index to physical position. */
+ // Left split.
+ /* index=0 */ { 0, 0 }, { 0, 21 }, { 0, 42 }, // col 1 (left most)
+ /* index=3 */ { 15, 42 }, { 15, 21 }, { 15, 0 }, // col 2
+ /* index=6 */ { 30, 0 }, { 30, 21 }, { 30, 42 },
+ /* index=9 */ { 45, 42 }, { 45, 21 }, { 45, 0 },
+ /* index=12 */ { 60, 0 }, { 60, 21 }, { 60, 42 },
+ /* index=15 */ { 75, 0 }, { 75, 21 }, { 75, 42 },
+ /* index=18 */ { 75, 64 }, { 90, 64 }, { 105, 64 }, // Thumb cluster
+ // Right split.
+ /* index=21 */ { 224, 0 }, { 224, 21 }, { 224, 42 }, // col 12 (right most)
+ /* index=24 */ { 209, 42 }, { 209, 21 }, { 209, 0 }, // col 10
+ /* index=27 */ { 194, 0 }, { 194, 21 }, { 194, 42 },
+ /* index=30 */ { 179, 42 }, { 179, 21 }, { 179, 0 },
+ /* index=33 */ { 164, 0 }, { 164, 21 }, { 164, 42 },
+ /* index=36 */ { 149, 0 }, { 149, 21 }, { 149, 42 },
+ /* index=39 */ { 119, 64 }, { 134, 64 }, { 0, 0 }, // Thumb cluster
+}, {
+ /* 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_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=18 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // Thumb cluster
+ // Right split.
+ /* index=21 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 10
+ /* index=24 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // col 9
+ /* 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, LED_FLAG_KEYLIGHT,
+ /* index=36 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT,
+ /* index=39 */ LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, LED_FLAG_KEYLIGHT, // Thumb cluster
+} };
+#endif
+// clang-format on
diff --git a/keyboards/bastardkb/charybdis/3x6/3x6.h b/keyboards/bastardkb/charybdis/3x6/3x6.h
new file mode 100644
index 0000000000..bf5de31036
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/3x6.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2022 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_3x6( \
+ k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
+ k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
+ k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
+ k33, k34, k31, k71, k73 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { KC_NO, k31, KC_NO, k33, k34, KC_NO }, \
+ { k40, k41, k42, k43, k44, k45 }, \
+ { k50, k51, k52, k53, k54, k55 }, \
+ { k60, k61, k62, k63, k64, k65 }, \
+ { KC_NO, k71, KC_NO, k73, KC_NO, KC_NO }, \
+}
+
+/**
+ * \brief Compatibility layout with the split_3x5_6 community layout.
+ *
+ * This effectively renders the Charbdis Nano compatible with existing layout
+ * implementations relying on the `split_3x6_3` layout.
+ */
+#define LAYOUT_split_3x6_3( \
+ k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
+ k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
+ k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
+ k33, k34, k31, k71, k73, ___ \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { KC_NO, k31, KC_NO, k33, k34, KC_NO }, \
+ { k40, k41, k42, k43, k44, k45 }, \
+ { k50, k51, k52, k53, k54, k55 }, \
+ { k60, k61, k62, k63, k64, k65 }, \
+ { KC_NO, k71, KC_NO, k73, KC_NO, KC_NO }, \
+}
+// clang-format on
diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/config.h b/keyboards/bastardkb/charybdis/3x6/blackpill/config.h
new file mode 100644
index 0000000000..1b90a3076b
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/blackpill/config.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2022 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/>.
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { A2, B8, A8, B9 }
+#define MATRIX_COL_PINS \
+ { B0, B1, B10, B3, B4, B5 }
+
+/* Handedness. */
+#define SPLIT_HAND_PIN A3 // High -> left, Low -> right.
+
+/* RGB settings. */
+#define RGB_DI_PIN A1
+#define WS2812_PWM_DRIVER PWMD2
+#define WS2812_PWM_CHANNEL 2
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_EXTERNAL_PULLUP
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM1
+#define WS2812_DMA_CHANNEL 3
+#define WS2812_PWM_TARGET_PERIOD 800000
+
+/* Serial configuration for split keyboard. */
+#define SERIAL_USART_TX_PIN A9
+
+/* CRC. */
+#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
+
+/* PMW3360 settings. */
+#define PMW33XX_CS_PIN B14
+#define PMW33XX_CS_DIVISOR 64
diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/halconf.h b/keyboards/bastardkb/charybdis/3x6/blackpill/halconf.h
new file mode 100644
index 0000000000..42d7499907
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/blackpill/halconf.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2022 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 HAL_USE_PWM TRUE
+#define HAL_USE_SERIAL TRUE
+#define HAL_USE_SPI TRUE
+#define SPI_USE_WAIT TRUE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+
+#include_next "halconf.h"
diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/info.json b/keyboards/bastardkb/charybdis/3x6/blackpill/info.json
new file mode 100644
index 0000000000..73a1359e00
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/blackpill/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis Mini (3x6) Blackpill",
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/mcuconf.h b/keyboards/bastardkb/charybdis/3x6/blackpill/mcuconf.h
new file mode 100644
index 0000000000..26645d8c1a
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/blackpill/mcuconf.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2022 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_next "mcuconf.h"
+
+#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_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
+
+#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/3x6/blackpill/readme.md b/keyboards/bastardkb/charybdis/3x6/blackpill/readme.md
new file mode 100644
index 0000000000..6a9907c2ae
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/blackpill/readme.md
@@ -0,0 +1,3 @@
+# Charybdis Mini (3x6) BlackPill
+
+An ergonomic keyboard with integrated trackball, with BlackPill (STM32F411) mod.
diff --git a/keyboards/bastardkb/charybdis/3x6/blackpill/rules.mk b/keyboards/bastardkb/charybdis/3x6/blackpill/rules.mk
new file mode 100644
index 0000000000..a29e3e433d
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/blackpill/rules.mk
@@ -0,0 +1,39 @@
+# MCU name
+MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
+
+# 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 = 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
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x6_3
+
+POINTING_DEVICE_ENABLE = yes # Enable trackball
+POINTING_DEVICE_DRIVER = pmw3360
+MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint
+KEYBOARD_SHARED_EP = yes
+
+EEPROM_DRIVER = spi
+WS2812_DRIVER = pwm
+SERIAL_DRIVER = usart
+
+DEBOUNCE_TYPE = asym_eager_defer_pk
diff --git a/keyboards/bastardkb/charybdis/3x6/config.h b/keyboards/bastardkb/charybdis/3x6/config.h
new file mode 100644
index 0000000000..6b31a773fc
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/config.h
@@ -0,0 +1,49 @@
+/*
+ * 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"
+
+/* Key matrix configuration. */
+#define MATRIX_ROWS 8 // Rows are doubled-up.
+#define MATRIX_COLS 6
+
+#define DIODE_DIRECTION ROW2COL
+
+/* Set 0 if debouncing isn't needed. */
+#define DEBOUNCE 5
+
+/* Trackball angle adjustment. */
+#define ROTATIONAL_TRANSFORM_ANGLE -25
+
+/* RGB settings. */
+#define RGBLED_NUM 42
+#define RGBLED_SPLIT \
+ { 21, 21 }
+
+/* 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/3x6/info.json b/keyboards/bastardkb/charybdis/3x6/info.json
new file mode 100644
index 0000000000..0b4428cdbe
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/info.json
@@ -0,0 +1,99 @@
+{
+ "url": "https://bastardkb.com",
+ "usb": {
+ "pid": "0x1834",
+ },
+ "layouts": {
+ "LAYOUT_charybdis_3x6": {
+ "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":"L33", "x":5, "y":3},
+ {"label":"L34", "x":6, "y":3},
+ {"label":"L31", "x":7, "y":3},
+ {"label":"R31", "x":9, "y":3},
+ {"label":"R33", "x":10, "y":3}
+ ]
+ },
+ "LAYOUT_split_3x6_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":"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":"L33", "x":5, "y":3},
+ {"label":"L34", "x":6, "y":3},
+ {"label":"L31", "x":7, "y":3},
+ {"label":"R33", "x":9, "y":3},
+ {"label":"R34", "x":10, "y":3},
+ {"label":"R31", "x":11, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/bastardkb/charybdis/3x6/keymaps/default/config.h b/keyboards/bastardkb/charybdis/3x6/keymaps/default/config.h
new file mode 100644
index 0000000000..4b1bae3ca0
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/keymaps/default/config.h
@@ -0,0 +1,54 @@
+/**
+ * Copyright 2022 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/3x6/keymaps/default/keymap.c b/keyboards/bastardkb/charybdis/3x6/keymaps/default/keymap.c
new file mode 100644
index 0000000000..fee8d87ad6
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/keymaps/default/keymap.c
@@ -0,0 +1,66 @@
+/**
+ * Copyright 2022 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_3x6(
+ // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
+ KC_LGUI, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RGUI,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RCTL,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
+ KC_BSPC, KC_SPC, LOWER, RAISE, KC_ENT
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_LOWER] = LAYOUT_charybdis_3x6(
+ // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
+ XXXXXXX, RGB_TOG, KC_MNXT, KC_MPLY, KC_MPRV, XXXXXXX, KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, XXXXXXX,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ XXXXXXX, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_4, KC_5, KC_6, KC_PMNS, XXXXXXX,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, QK_BOOT, KC_PAST, KC_1, KC_2, KC_3, KC_PSLS, XXXXXXX,
+ // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
+ XXXXXXX, XXXXXXX, _______, XXXXXXX, _______
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_RAISE] = LAYOUT_charybdis_3x6(
+ // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, KC_MUTE, KC_VOLD, XXXXXXX, XXXXXXX,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ XXXXXXX, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, XXXXXXX,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ XXXXXXX, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, QK_BOOT, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
+ _______, _______, XXXXXXX, _______, XXXXXXX
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+};
+// clang-format on
diff --git a/keyboards/bastardkb/charybdis/3x6/keymaps/default/readme.md b/keyboards/bastardkb/charybdis/3x6/keymaps/default/readme.md
new file mode 100644
index 0000000000..8b407f68a2
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/keymaps/default/readme.md
@@ -0,0 +1,7 @@
+# Charybdis Mini (3x6) default keymap
+
+> :bulb: Have a look at the [`via` keymap](../via) for a more feature-rich layout.
+
+The Charydbis Mini (3x6) 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/3x6/keymaps/via/config.h b/keyboards/bastardkb/charybdis/3x6/keymaps/via/config.h
new file mode 100644
index 0000000000..abbf492089
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/keymaps/via/config.h
@@ -0,0 +1,71 @@
+/**
+ * Copyright 2022 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
+// 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
+// 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/3x6/keymaps/via/keymap.c b/keyboards/bastardkb/charybdis/3x6/keymaps/via/keymap.c
new file mode 100644
index 0000000000..edfce673fb
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/keymaps/via/keymap.c
@@ -0,0 +1,148 @@
+/**
+ * Copyright 2022 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,
+ 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_3x6(
+ // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
+ KC_LGUI, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RGUI,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RCTL,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
+ KC_BSPC, KC_SPC, LOWER, RAISE, KC_ENT
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_LOWER] = LAYOUT_charybdis_3x6(
+ // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
+ XXXXXXX, RGB_TOG, KC_MNXT, KC_MPLY, KC_MPRV, XXXXXXX, KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, XXXXXXX,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ XXXXXXX, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_4, KC_5, KC_6, KC_PMNS, XXXXXXX,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, QK_BOOT, KC_PAST, KC_1, KC_2, KC_3, KC_PSLS, XXXXXXX,
+ // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
+ XXXXXXX, XXXXXXX, _______, XXXXXXX, _______
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_RAISE] = LAYOUT_charybdis_3x6(
+ // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, KC_MUTE, KC_VOLD, XXXXXXX, XXXXXXX,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ XXXXXXX, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, XXXXXXX,
+ // ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
+ XXXXXXX, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, QK_BOOT, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
+ _______, _______, XXXXXXX, _______, XXXXXXX
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_POINTER] = LAYOUT_charybdis_3x6(
+ // ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
+ 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, QK_BOOT, QK_BOOT, EEP_RST, SNIPING, DRGSCRL, _______, XXXXXXX,
+ // ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
+ KC_BTN2, KC_BTN1, KC_BTN3, KC_BTN3, KC_BTN1
+ // ╰───────────────────────────╯ ╰──────────────────╯
+ ),
+};
+// 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_user(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
+ }
+}
+# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+
+# ifdef CHARYBDIS_AUTO_SNIPING_ON_LAYER
+layer_state_t layer_state_set_user(layer_state_t 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/3x6/keymaps/via/readme.md b/keyboards/bastardkb/charybdis/3x6/keymaps/via/readme.md
new file mode 100644
index 0000000000..fba00cd996
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/keymaps/via/readme.md
@@ -0,0 +1,57 @@
+# Charybdis Mini (3x6) `via` keymap
+
+The Charydbis Mini (3x6) `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
+```
diff --git a/keyboards/bastardkb/charybdis/3x6/keymaps/via/rules.mk b/keyboards/bastardkb/charybdis/3x6/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/bastardkb/charybdis/3x6/readme.md b/keyboards/bastardkb/charybdis/3x6/readme.md
new file mode 100644
index 0000000000..c6385ed8f1
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/readme.md
@@ -0,0 +1,15 @@
+# Charybdis Nano (3x6)
+
+An ergonomic keyboard with integrated trackball.
+
+The Charybdis is available in 4x6, 3x6 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/3x6/v1/elitec/config.h b/keyboards/bastardkb/charybdis/3x6/v1/elitec/config.h
new file mode 100644
index 0000000000..05746cf17e
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v1/elitec/config.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { B7, C6, D4, B5 }
+#define MATRIX_COL_PINS \
+ { D5, C7, F0, D7, E6, B4 }
+
+#define MATRIX_ROW_PINS_RIGHT \
+ { F0, C6, D4, B5 }
+#define MATRIX_COL_PINS_RIGHT \
+ { F1, C7, B7, D7, E6, B4 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN D2
+
+/* RGB settings. */
+#define RGB_DI_PIN D3
+
+/* PMW3360 settings. */
+#define PMW33XX_CS_PIN B0
diff --git a/keyboards/bastardkb/charybdis/3x6/v1/elitec/info.json b/keyboards/bastardkb/charybdis/3x6/v1/elitec/info.json
new file mode 100644
index 0000000000..bf7f1a35f2
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v1/elitec/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis Mini (3x6) Elite-C",
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/charybdis/3x6/v1/elitec/rules.mk b/keyboards/bastardkb/charybdis/3x6/v1/elitec/rules.mk
new file mode 100644
index 0000000000..54406bcc1d
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v1/elitec/rules.mk
@@ -0,0 +1,35 @@
+# 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
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x6_3
+
+POINTING_DEVICE_ENABLE = yes # Enable trackball
+POINTING_DEVICE_DRIVER = pmw3360
+MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint
+
+# Enable link-time optimization by default. The Charybdis packs a lot of
+# features (RGB, Via, trackball) in a small atmega32u4 package.
+LTO_ENABLE = yes
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/elitec/config.h b/keyboards/bastardkb/charybdis/3x6/v2/elitec/config.h
new file mode 100644
index 0000000000..edd167446b
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/elitec/config.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { F7, C6, D4, B5 }
+#define MATRIX_COL_PINS \
+ { F6, F5, B6, D7, E6, B4 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN D2
+
+/* RGB settings. */
+#define RGB_DI_PIN D3
+
+/* PMW3360 settings. */
+#define PMW33XX_CS_PIN F0
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/elitec/info.json b/keyboards/bastardkb/charybdis/3x6/v2/elitec/info.json
new file mode 100644
index 0000000000..239a10f8a3
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/elitec/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis Mini (3x6) Elite-C",
+ "usb": {
+ "device_version": "2.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/elitec/rules.mk b/keyboards/bastardkb/charybdis/3x6/v2/elitec/rules.mk
new file mode 100644
index 0000000000..54406bcc1d
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/elitec/rules.mk
@@ -0,0 +1,35 @@
+# 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
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x6_3
+
+POINTING_DEVICE_ENABLE = yes # Enable trackball
+POINTING_DEVICE_DRIVER = pmw3360
+MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint
+
+# Enable link-time optimization by default. The Charybdis packs a lot of
+# features (RGB, Via, trackball) in a small atmega32u4 package.
+LTO_ENABLE = yes
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky/config.h b/keyboards/bastardkb/charybdis/3x6/v2/splinky/config.h
new file mode 100644
index 0000000000..9c4ced817a
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/splinky/config.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { GP26, GP5, GP4, GP9 }
+#define MATRIX_COL_PINS \
+ { GP27, GP28, GP15, GP6, GP7, GP8 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+// To use the handedness pin, resistors need to be installed on the adapter PCB.
+// If so, uncomment the following code, and undefine MASTER_RIGHT above.
+// #define SPLIT_HAND_PIN GP13
+// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left.
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN GP1
+
+/* RGB settings. */
+#define RGB_DI_PIN GP0
+
+/* SPI & PMW3360 settings. */
+#define SPI_DRIVER SPID0
+#define SPI_SCK_PIN GP18
+#define SPI_MOSI_PIN GP19
+#define SPI_MISO_PIN GP20
+#define PMW33XX_CS_PIN GP14
+
+/* Reset. */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky/info.json b/keyboards/bastardkb/charybdis/3x6/v2/splinky/info.json
new file mode 100644
index 0000000000..7f3997158f
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/splinky/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis Mini (3x6) Splinky",
+ "usb": {
+ "device_version": "2.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky/mcuconf.h b/keyboards/bastardkb/charybdis/3x6/v2/splinky/mcuconf.h
new file mode 100644
index 0000000000..0fdd67c3a2
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/splinky/mcuconf.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2022 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_next "mcuconf.h"
+
+#undef RP_SPI_USE_SPI0
+#define RP_SPI_USE_SPI0 TRUE
diff --git a/keyboards/bastardkb/charybdis/3x6/v2/splinky/rules.mk b/keyboards/bastardkb/charybdis/3x6/v2/splinky/rules.mk
new file mode 100644
index 0000000000..6ab474a76f
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/3x6/v2/splinky/rules.mk
@@ -0,0 +1,37 @@
+# MCU name
+MCU = RP2040
+
+# Bootloader selection
+BOOTLOADER = rp2040
+
+# RP2040-specific options
+ALLOW_WARNINGS = yes
+PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS.
+
+# 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
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x6_3
+
+POINTING_DEVICE_ENABLE = yes # Enable trackball
+POINTING_DEVICE_DRIVER = pmw3360
+
+SERIAL_DRIVER = vendor
+WS2812_DRIVER = vendor
diff --git a/keyboards/bastardkb/charybdis/4x6/4x6.c b/keyboards/bastardkb/charybdis/4x6/4x6.c
index 6cd8fffee7..85e8b5fdd1 100644
--- a/keyboards/bastardkb/charybdis/4x6/4x6.c
+++ b/keyboards/bastardkb/charybdis/4x6/4x6.c
@@ -36,6 +36,10 @@
* 26 27 28 53 54 XX
* 25 24 55 XX
* ╰────────────╯ ╰────────────╯
+ *
+ * Note: the LED config simulates 58 LEDs instead of the actual 56 to prevent
+ * confusion when testing LEDs during assembly when handedness is not set
+ * correctly. Those fake LEDs are bound to the physical bottom-left corner.
*/
led_config_t g_led_config = { {
/* Key Matrix to LED index. */
@@ -70,6 +74,7 @@ led_config_t g_led_config = { {
/* 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 },
+ /* index=56 */ { 0, 0 }, { 0, 0 },
}, {
/* LED index to flag. */
// Left split.
@@ -89,6 +94,7 @@ led_config_t g_led_config = { {
/* 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
+ /* index=55 */ LED_FLAG_MODIFIER, LED_FLAG_MODIFIER, // Thumb cluster fakes
} };
#endif
// clang-format on
diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/config.h b/keyboards/bastardkb/charybdis/4x6/blackpill/config.h
new file mode 100644
index 0000000000..2514a52fb0
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/blackpill/config.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+ * Copyright 2021 Stefan Kerkmann (@KarlK90)
+ * 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/>.
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { B15, A2, B8, A8, B9 }
+#define MATRIX_COL_PINS \
+ { B0, B1, B10, B3, B4, B5 }
+
+/* Handedness. */
+#define SPLIT_HAND_PIN A3 // High -> left, Low -> right.
+
+/* RGB settings. */
+#define RGB_DI_PIN A1
+#define WS2812_PWM_DRIVER PWMD2
+#define WS2812_PWM_CHANNEL 2
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_EXTERNAL_PULLUP
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM1
+#define WS2812_DMA_CHANNEL 3
+#define WS2812_PWM_TARGET_PERIOD 800000
+
+/* Serial configuration for split keyboard. */
+#define SERIAL_USART_TX_PIN A9
+
+/* CRC. */
+#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
+
+/* PMW3360 settings. */
+#define PMW33XX_CS_PIN B14
+#define PMW33XX_CS_DIVISOR 64
diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h b/keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h
new file mode 100644
index 0000000000..a89dff0cd3
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/blackpill/halconf.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2020 Nick Brassel (tzarc)
+ * 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 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/4x6/blackpill/info.json b/keyboards/bastardkb/charybdis/4x6/blackpill/info.json
new file mode 100644
index 0000000000..788783c679
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/blackpill/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis (4x6) Blackpill",
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h b/keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h
new file mode 100644
index 0000000000..1615d1bf46
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/blackpill/mcuconf.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2020 Nick Brassel (tzarc)
+ * Copyright 2021 Stefan Kerkmann (@KarlK90)
+ * 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_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_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
+
+// #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/4x6/blackpill/readme.md b/keyboards/bastardkb/charybdis/4x6/blackpill/readme.md
new file mode 100644
index 0000000000..bbae15bb85
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/blackpill/readme.md
@@ -0,0 +1,3 @@
+# Charybdis (4x6) BlackPill
+
+An ergonomic keyboard with integrated trackball, with BlackPill (STM32F411) mod.
diff --git a/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk b/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk
new file mode 100644
index 0000000000..6123ec58b7
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/blackpill/rules.mk
@@ -0,0 +1,40 @@
+# MCU name
+MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
+
+# 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 = 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
+
+# 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
+MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint
+KEYBOARD_SHARED_EP = yes
+
+EEPROM_DRIVER = spi
+WS2812_DRIVER = pwm
+SERIAL_DRIVER = usart
+
+DEBOUNCE_TYPE = asym_eager_defer_pk
diff --git a/keyboards/bastardkb/charybdis/4x6/config.h b/keyboards/bastardkb/charybdis/4x6/config.h
index 423f12fdbe..f557089073 100644
--- a/keyboards/bastardkb/charybdis/4x6/config.h
+++ b/keyboards/bastardkb/charybdis/4x6/config.h
@@ -18,55 +18,22 @@
#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_ROWS 10 // Rows are doubled-up.
#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 */
+/* Set 0 if debouncing isn't needed. */
#define DEBOUNCE 5
-/* PMW3360 settings. */
-#define PMW3360_CS_PIN B0
+/* Trackball angle adjustment. */
+#define ROTATIONAL_TRANSFORM_ANGLE -25
-#define RGB_DI_PIN D3
-#define RGBLED_NUM 56
+/* RGB settings. */
+#define RGBLED_NUM 58
#define RGBLED_SPLIT \
- { 29, 27 }
+ { 29, 29 }
/* RGB matrix support. */
#ifdef RGB_MATRIX_ENABLE
diff --git a/keyboards/bastardkb/charybdis/4x6/info.json b/keyboards/bastardkb/charybdis/4x6/info.json
index 956dfe88f5..c95bf07516 100644
--- a/keyboards/bastardkb/charybdis/4x6/info.json
+++ b/keyboards/bastardkb/charybdis/4x6/info.json
@@ -1,7 +1,10 @@
{
- "keyboard_name": "Charybdis",
- "url": "https://www.bastardkb.com",
- "maintainer": "Quentin Lebastard",
+ "url": "https://bastardkb.com/charybdis",
+ "manufacturer": "Bastard Keyboards",
+ "usb": {
+ "vid": "0xA8F8",
+ "pid": "0x1833",
+ },
"layouts": {
"LAYOUT_charybdis_4x6": {
"layout": [
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c
index 1d3142faac..e0cee41221 100644
--- a/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/default/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
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, QK_BOOT, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PDOT,
+ RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, QK_BOOT, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PDOT,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
XXXXXXX, XXXXXXX, _______, XXXXXXX, _______,
XXXXXXX, XXXXXXX, KC_P0
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
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, QK_BOOT, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,
+ KC_MPRV, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, QK_BOOT, EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
_______, _______, XXXXXXX, _______, XXXXXXX,
_______, _______, XXXXXXX
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/config.h b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/config.h
index 6098c80f11..7e47953d63 100644
--- a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/config.h
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/config.h
@@ -16,12 +16,15 @@
*/
#pragma once
+#undef PRODUCT
+#define PRODUCT "Charybdis (4x6) Blackpill"
+
#undef MATRIX_COL_PINS
#define MATRIX_COL_PINS \
- { B0, B1, B10, B3, B4, B5 }
+ { B0, B1, B12, B3, B4, B5 }
#undef MATRIX_COL_PINS_RIGHT
#define MATRIX_COL_PINS_RIGHT \
- { B0, B1, B10, B3, B4, B5 }
+ { B0, B1, B12, B3, B4, B5 }
#undef MATRIX_ROW_PINS
#define MATRIX_ROW_PINS \
@@ -30,8 +33,11 @@
#define MATRIX_ROW_PINS_RIGHT \
{ B15, A2, B8, A8, B9 }
+
#define DIODE_DIRECTION ROW2COL
#define SPLIT_HAND_PIN A3
+#undef MASTER_RIGHT
+#define USB_VBUS_PIN B10
#undef RGB_DI_PIN
#define RGB_DI_PIN A1
@@ -46,6 +52,15 @@
#define DEBUG_LED_PIN C13
+#define AUDIO_PIN B7
+#define AUDIO_PWM_DRIVER PWMD4
+#define AUDIO_PWM_CHANNEL 2
+#define AUDIO_PWM_PAL_MODE 2
+#define AUDIO_STATE_TIMER GPTD3
+#define AUDIO_INIT_DELAY
+#define AUDIO_ENABLE_TONE_MULTIPLEXING
+#define AUDIO_TONE_MULTIPLEXING_RATE_DEFAULT 10
+
#undef SOFT_SERIAL_PIN
// #define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
#define SERIAL_USART_TX_PIN A9
@@ -54,12 +69,8 @@
// #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 SERIAL_USART_SPEED 921600
+// #define SERIAL_USART_SPEED 921600
+#define SERIAL_USART_SPEED (1.5 * 1024 * 1024)
#define CRC8_USE_TABLE
#define CRC8_OPTIMIZE_SPEED
@@ -76,10 +87,11 @@
#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A4
#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 64
-#undef PMW3360_CS_PIN
-#define PMW3360_CS_PIN B14
-#define PMW3360_CS_MODE 3
-#define PMW3360_CS_DIVISOR 64
+#undef PMW33XX_CS_PIN
+#define PMW33XX_CS_PIN A15 // b14
+#define PMW33XX_LIFTOFF_DISTANCE 0b1111
+#undef ROTATIONAL_TRANSFORM_ANGLE
+#define ROTATIONAL_TRANSFORM_ANGLE -65
#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 400
@@ -90,3 +102,14 @@
#undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
+
+#define CHARYBDIS_CONFIG_SYNC
+
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+#define BOOTMAGIC_LITE_ROW_RIGHT 5
+#define BOOTMAGIC_LITE_COLUMN_RIGHT 0
+#define BOOTMAGIC_LITE_EEPROM_ROW 1
+#define BOOTMAGIC_LITE_EEPROM_COLUMN 0
+#define BOOTMAGIC_LITE_EEPROM_ROW_RIGHT 1
+#define BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT 0
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/halconf.h b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/halconf.h
index 97a288d7bd..3d9f187317 100644
--- a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/halconf.h
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/halconf.h
@@ -16,11 +16,12 @@
#pragma once
#define HAL_USE_PWM TRUE
+#define HAL_USE_PAL TRUE
+#define HAL_USE_GPT 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/4x6/keymaps/drashna/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/keymap.c
index a671300b78..a0f290ad57 100644
--- a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/keymap.c
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/keymap.c
@@ -26,8 +26,8 @@
KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, UC_CLUE, \
SH_TT, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, SH_TT, \
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
- OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
- KC_GRV, OS_LALT, OS_LGUI, TT(_MOUSE), KC_ENT, \
+ OS_LSFT,CTL_T(K21), K22, K23, K24, K25, K26,K27,RGUI_T(K28),RALT_T(K29),RCTL_T(K2A), OS_RSFT, \
+ SFT_T(KC_GRV), OS_LALT, OS_LGUI, TT(_MOUSE), KC_ENT, \
KC_SPC, BK_LWER, DL_RAIS \
)
@@ -58,38 +58,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_________________DVORAK_L3_________________, _________________DVORAK_R3_________________
),
-
-
- [_MOUSE] = LAYOUT_charybdis_4x6(
- _______, _______, _______, _______, _______, _______, DRGSCRL, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, SNP_TOG,
- _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING,
- _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______,
- _______, _______, _______, _______, _______,
- _______, _______, _______
- ),
[_GAMEPAD] = LAYOUT_charybdis_4x6(
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, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______,
- _______, _______, _______
+ KC_V, _______, _______, _______, TG_GAME,
+ KC_SPC, KC_H, _______
),
[_DIABLO] = LAYOUT_charybdis_4x6(
KC_ESC, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, 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_Q, KC_1, KC_2, KC_3, KC_4, KC_G, _______, _______, _______, _______, _______, _______,
KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______,
- _______, _______, _______
+ KC_G, _______, _______, TO(_DIABLOII), TG_DBLO,
+ KC_LSFT, KC_LCTL, _______
),
[_DIABLOII] = LAYOUT_charybdis_4x6(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_GRV, _______, _______, _______, _______, _______, _______,
KC_TAB, KC_A, KC_T, KC_Q, KC_I, KC_M, _______, _______, _______, _______, _______, _______,
KC_S, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, _______, _______,
KC_LCTL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______,
+ KC_DIABLO_CLEAR, _______, _______, _______, TG(_DIABLOII),
+ SFT_T(KC_SPACE), ALT_T(KC_Q), _______
+ ),
+ [_MOUSE] = LAYOUT_charybdis_4x6(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_WH_U, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, _______,
+ _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING,
+ _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, DRGSCRL, _______,
+ _______, SNIPING, SNIPING, _______, _______,
_______, _______, _______
),
@@ -112,18 +110,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT_charybdis_4x6_wrapper(
- QK_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_NOMODE, KC_NOMODE,KC_BLOCKS,KC_REGIONAL,_______,_______, QK_BOOT,
+ QK_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_SUPER, KC_NOMODE,KC_BLOCKS,KC_REGIONAL,TG_GAME,TG_DBLO, QK_BOOT,
VRSN, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, EE_CLR,
KEYLOCK, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, TG_MODS,
UC_MOD, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY,
- QK_RBT, AUTO_CTN, _______, KC_NUKE, _______,
+ QK_RBT, AUTO_CTN, _______, _______, KC_NUKE,
_______, _______, _______
)
};
// clang-format on
-void matrix_init_keyemap(void) { setPinInputHigh(A0); }
+void matrix_init_keymap(void) {
+ setPinInputHigh(A0);
+#ifdef RGB_MATRIX_ENABLE
+ g_led_config.flags[53] = g_led_config.flags[54] = g_led_config.flags[55] =
+ g_led_config.flags[0] = g_led_config.flags[1] = g_led_config.flags[2] = g_led_config.flags[3] =
+ g_led_config.flags[29] = g_led_config.flags[30] = g_led_config.flags[31] = g_led_config.flags[32] =
+ LED_FLAG_MODIFIER;
+#endif
+}
void matrix_scan_keymap(void) {
if (!readPin(A0)) {
@@ -144,3 +150,25 @@ void matrix_output_unselect_delay(uint8_t line, bool key_pressed) {
__asm__ volatile("nop" ::: "memory");
}
}
+
+
+#ifdef SWAP_HANDS_ENABLE
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ /* Left hand, matrix positions */
+ {{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, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8}},
+ {{2, 9}, {4, 9}, {5, 9}, {1, 9}, {0, 9}, {3, 9}},
+ /* Right hand, matrix positions */
+ {{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}},
+ {{0, 4}, {3, 4}, {2, 4}, {5, 4}, {4, 4}, {2, 4}},
+ };
+
+# ifdef ENCODER_MAP_ENABLE
+const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {1, 0};
+# endif
+#endif
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/mcuconf.h b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/mcuconf.h
index 0f60612d79..5712bb4574 100644
--- a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/mcuconf.h
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/mcuconf.h
@@ -17,19 +17,18 @@
#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_ADVANCED
+#define STM32_PWM_USE_ADVANCED TRUE
+
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
#undef STM32_PWM_USE_TIM2
#define STM32_PWM_USE_TIM2 TRUE
-#undef STM32_PWM_USE_TIM3
-#define STM32_PWM_USE_TIM3 TRUE
+#undef STM32_PWM_USE_TIM4
+#define STM32_PWM_USE_TIM4 TRUE
#undef STM32_SPI_USE_SPI1
#define STM32_SPI_USE_SPI1 TRUE
@@ -37,8 +36,8 @@
#undef STM32_SERIAL_USE_USART1
#define STM32_SERIAL_USE_USART1 TRUE
-#undef STM32_GPT_USE_TIM4
-#define STM32_GPT_USE_TIM4 TRUE
+#undef STM32_GPT_USE_TIM3
+#define STM32_GPT_USE_TIM3 TRUE
#undef STM32_ST_USE_TIMER
#define STM32_ST_USE_TIMER 5
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/rules.mk b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/rules.mk
index ab86b1b8ba..336750bc90 100644
--- a/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/rules.mk
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/drashna/rules.mk
@@ -1,24 +1,34 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
-BOOTLOADER = stm32-dfu
-# BOOTLOADER := tinyuf2
+BOOTLOADER := tinyuf2
-LTO_ENABLE := no
+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
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = yes # Audio output
+AUDIO_SUPPORTED = yes # is set to no in kb, needs to be forcibly enabled
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
-KEYBOARD_SHARED_EP = yes
-MOUSE_SHARED_EP = yes
+KEYBOARD_SHARED_EP = yes
+MOUSE_SHARED_EP = yes
-EEPROM_DRIVER = spi
-WS2812_DRIVER = pwm
-SERIAL_DRIVER = usart
-
-MOUSEKEY_ENABLE = yes
-NKRO_ENABLE = yes
-CONSOLE_ENABLE = yes
+EEPROM_DRIVER = spi
+WS2812_DRIVER = pwm
+SERIAL_DRIVER = usart
+AUDIO_DRIVER = pwm_hardware
+BACKLIGHT_DRIVER = pwm
AUTOCORRECTION_ENABLE = yes
-
-DEBOUNCE_TYPE = asym_eager_defer_pk
+CAPS_WORD_ENABLE = yes
+SWAP_HANDS_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+DEBOUNCE_TYPE = asym_eager_defer_pk
+WPM_ENABLE = yes
+LTO_ENABLE = no
+# OPT = 3
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/config.h b/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..aa8dc85054
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/config.h
@@ -0,0 +1,23 @@
+// Copyright 2022 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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_charybdis_4x6( \
+XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \
+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, \
+ K32, K33, K34, K35, K36, \
+ XXX, K32, K37 \
+)
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..dbab7f9820
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/rules.mk b/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/rules.mk
new file mode 100644
index 0000000000..ef40279cbc
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/manna-harbour_miryoku/rules.mk
@@ -0,0 +1,4 @@
+# Copyright 2021 Manna Harbour
+# https://github.com/manna-harbour/miryoku
+
+MIRYOKU_KLUDGE_THUMBCOMBOS=yes
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h b/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h
index 75eb2240f3..c31e39261e 100644
--- a/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/via/config.h
@@ -19,7 +19,7 @@
#ifdef VIA_ENABLE
/* VIA configuration. */
# define DYNAMIC_KEYMAP_LAYER_COUNT 4
-#endif // VIA_ENABLE
+#endif // VIA_ENABLE
/* Disable unused features. */
#define NO_ACTION_ONESHOT
@@ -33,21 +33,16 @@
* See docs.qmk.fm/using-qmk/software-features/tap_hold#tapping-term
*/
# define TAPPING_TERM 200
-#endif // TAPPING_TERM
+#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
+#endif // POINTING_DEVICE_ENABLE
/* RGB Matrix. */
@@ -69,4 +64,4 @@
# 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
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c b/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c
index cf24fea3c0..8c55855af1 100644
--- a/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c
+++ b/keyboards/bastardkb/charybdis/4x6/keymaps/via/keymap.c
@@ -18,7 +18,7 @@
#ifdef CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
# include "timer.h"
-#endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+#endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
enum charybdis_keymap_layers {
LAYER_BASE = 0,
@@ -35,18 +35,25 @@ 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
+# 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
+# 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)
+#ifndef POINTING_DEVICE_ENABLE
+# define DRGSCRL KC_NO
+# define DPI_MOD KC_NO
+# define S_D_MOD KC_NO
+# define SNIPING KC_NO
+#endif // !POINTING_DEVICE_ENABLE
+
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER_BASE] = LAYOUT_charybdis_4x6(
@@ -102,7 +109,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
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, QK_BOOT, QK_BOOT, EEP_RST, SNIPING, DRGSCRL, _______, XXXXXXX,
+ XXXXXXX, _______, DRGSCRL, SNIPING, EEP_RST, QK_BOOT, QK_BOOT, EEP_RST, SNIPING, DRGSCRL, _______, XXXXXXX,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
KC_BTN2, KC_BTN1, KC_BTN3, KC_BTN3, KC_BTN1,
XXXXXXX, KC_BTN2, KC_BTN2
@@ -120,33 +127,31 @@ report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
# ifdef RGB_MATRIX_ENABLE
rgb_matrix_mode_noeeprom(RGB_MATRIX_NONE);
rgb_matrix_sethsv_noeeprom(HSV_GREEN);
-# endif // RGB_MATRIX_ENABLE
+# endif // RGB_MATRIX_ENABLE
}
auto_pointer_layer_timer = timer_read();
}
return mouse_report;
}
-void matrix_scan_kb(void) {
+void matrix_scan_user(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
+# endif // RGB_MATRIX_ENABLE
}
- matrix_scan_user();
}
-# endif // CHARYBDIS_AUTO_POINTER_LAYER_TRIGGER_ENABLE
+# 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);
+layer_state_t layer_state_set_user(layer_state_t 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
+# 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.
@@ -158,9 +163,9 @@ void shutdown_user(void) {
rgblight_enable_noeeprom();
rgblight_mode_noeeprom(1);
rgblight_setrgb_red();
-#endif // RGBLIGHT_ENABLE
+#endif // RGBLIGHT_ENABLE
#ifdef RGB_MATRIX_ENABLE
rgb_matrix_set_color_all(RGB_RED);
rgb_matrix_update_pwm_buffers();
-#endif // RGB_MATRIX_ENABLE
+#endif // RGB_MATRIX_ENABLE
}
diff --git a/keyboards/bastardkb/charybdis/4x6/rules.mk b/keyboards/bastardkb/charybdis/4x6/rules.mk
deleted file mode 100644
index e137f5d4cc..0000000000
--- a/keyboards/bastardkb/charybdis/4x6/rules.mk
+++ /dev/null
@@ -1,37 +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 = 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/4x6/v1/elitec/config.h b/keyboards/bastardkb/charybdis/4x6/v1/elitec/config.h
new file mode 100644
index 0000000000..15044ef645
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v1/elitec/config.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+ * 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
+
+/* Key matrix configuration. */
+#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 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN D2
+
+/* RGB settings. */
+#define RGB_DI_PIN D3
+
+/* PMW3360 settings. */
+#define PMW33XX_CS_PIN B0
diff --git a/keyboards/bastardkb/charybdis/4x6/v1/elitec/info.json b/keyboards/bastardkb/charybdis/4x6/v1/elitec/info.json
new file mode 100644
index 0000000000..4ea658a7d9
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v1/elitec/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis (4x6) Elite-C",
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/charybdis/4x6/v1/elitec/rules.mk b/keyboards/bastardkb/charybdis/4x6/v1/elitec/rules.mk
new file mode 100644
index 0000000000..fa5fe80405
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v1/elitec/rules.mk
@@ -0,0 +1,36 @@
+# 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
+
+# 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
+MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint
+
+# Enable link-time optimization by default. The Charybdis packs a lot of
+# features (RGB, Via, trackball) in a small atmega32u4 package.
+LTO_ENABLE = yes
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h b/keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h
new file mode 100644
index 0000000000..891e511ccb
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/elitec/config.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { F4, F7, C6, D4, B5 }
+#define MATRIX_COL_PINS \
+ { F6, F5, B6, D7, E6, B4 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN D2
+
+/* RGB settings. */
+#define RGB_DI_PIN D3
+
+/* PMW3360 settings. */
+#define PMW33XX_CS_PIN F0
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/elitec/info.json b/keyboards/bastardkb/charybdis/4x6/v2/elitec/info.json
new file mode 100644
index 0000000000..151c0e1ca3
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/elitec/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis (4x6) Elite-C",
+ "usb": {
+ "device_version": "2.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/elitec/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/elitec/rules.mk
new file mode 100644
index 0000000000..fa5fe80405
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/elitec/rules.mk
@@ -0,0 +1,36 @@
+# 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
+
+# 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
+MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint
+
+# Enable link-time optimization by default. The Charybdis packs a lot of
+# features (RGB, Via, trackball) in a small atmega32u4 package.
+LTO_ENABLE = yes
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/config.h b/keyboards/bastardkb/charybdis/4x6/v2/splinky/config.h
new file mode 100644
index 0000000000..e17ec49726
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/config.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { GP29, GP26, GP5, GP4, GP9 }
+#define MATRIX_COL_PINS \
+ { GP27, GP28, GP15, GP6, GP7, GP8 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+// To use the handedness pin, resistors need to be installed on the adapter PCB.
+// If so, uncomment the following code, and undefine MASTER_RIGHT above.
+// #define SPLIT_HAND_PIN GP13
+// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left.
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN GP1
+
+/* RGB settings. */
+#define RGB_DI_PIN GP0
+
+/* SPI & PMW3360 settings. */
+#define SPI_DRIVER SPID0
+#define SPI_SCK_PIN GP18
+#define SPI_MOSI_PIN GP19
+#define SPI_MISO_PIN GP20
+#define PMW33XX_CS_PIN GP14
+
+/* Reset. */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/info.json b/keyboards/bastardkb/charybdis/4x6/v2/splinky/info.json
new file mode 100644
index 0000000000..0004eb81c9
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Charybdis (4x6) Splinky",
+ "usb": {
+ "device_version": "2.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/mcuconf.h b/keyboards/bastardkb/charybdis/4x6/v2/splinky/mcuconf.h
new file mode 100644
index 0000000000..0fdd67c3a2
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/mcuconf.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2022 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_next "mcuconf.h"
+
+#undef RP_SPI_USE_SPI0
+#define RP_SPI_USE_SPI0 TRUE
diff --git a/keyboards/bastardkb/charybdis/4x6/v2/splinky/rules.mk b/keyboards/bastardkb/charybdis/4x6/v2/splinky/rules.mk
new file mode 100644
index 0000000000..13c1b39961
--- /dev/null
+++ b/keyboards/bastardkb/charybdis/4x6/v2/splinky/rules.mk
@@ -0,0 +1,36 @@
+# MCU name
+MCU = RP2040
+
+# Bootloader selection
+BOOTLOADER = rp2040
+
+# RP2040-specific options
+ALLOW_WARNINGS = yes
+PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS.
+
+# 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
+
+SPLIT_KEYBOARD = yes
+
+POINTING_DEVICE_ENABLE = yes # Enable trackball
+POINTING_DEVICE_DRIVER = pmw3360
+
+SERIAL_DRIVER = vendor
+WS2812_DRIVER = vendor
diff --git a/keyboards/bastardkb/charybdis/charybdis.c b/keyboards/bastardkb/charybdis/charybdis.c
index f94682ba41..60bca936e7 100644
--- a/keyboards/bastardkb/charybdis/charybdis.c
+++ b/keyboards/bastardkb/charybdis/charybdis.c
@@ -18,46 +18,44 @@
*/
#include "charybdis.h"
+#include "transactions.h"
+#include <string.h>
#ifdef CONSOLE_ENABLE
# include "print.h"
-#endif // CONSOLE_ENABLE
+#endif // CONSOLE_ENABLE
#ifdef POINTING_DEVICE_ENABLE
# ifndef CHARYBDIS_MINIMUM_DEFAULT_DPI
# define CHARYBDIS_MINIMUM_DEFAULT_DPI 400
-# endif // CHARYBDIS_MINIMUM_DEFAULT_DPI
+# endif // CHARYBDIS_MINIMUM_DEFAULT_DPI
# ifndef CHARYBDIS_DEFAULT_DPI_CONFIG_STEP
# define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
-# endif // CHARYBDIS_DEFAULT_DPI_CONFIG_STEP
+# endif // CHARYBDIS_DEFAULT_DPI_CONFIG_STEP
# ifndef CHARYBDIS_MINIMUM_SNIPING_DPI
# define CHARYBDIS_MINIMUM_SNIPING_DPI 200
-# endif // CHARYBDIS_MINIMUM_SNIPER_MODE_DPI
+# 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
+# endif // CHARYBDIS_SNIPING_DPI_CONFIG_STEP
// Fixed DPI for drag-scroll.
# ifndef CHARYBDIS_DRAGSCROLL_DPI
# define CHARYBDIS_DRAGSCROLL_DPI 100
-# endif // CHARYBDIS_DRAGSCROLL_DPI
+# 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
+# endif // !CHARYBDIS_DRAGSCROLL_BUFFER_SIZE
typedef union {
uint8_t raw;
struct {
- uint8_t pointer_default_dpi : 4; // 16 steps available.
- uint8_t pointer_sniping_dpi : 2; // 4 steps available.
+ 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));
@@ -87,13 +85,19 @@ static void read_charybdis_config_from_eeprom(charybdis_config_t* config) {
* 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); }
+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; }
+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; }
+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) {
@@ -128,66 +132,54 @@ static void step_pointer_sniping_dpi(charybdis_config_t* config, bool forward) {
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_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); }
+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_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_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; }
+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; }
+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
+ * Implement drag-scroll.
*/
static void pointing_device_task_charybdis(report_mouse_t* mouse_report) {
static int16_t scroll_buffer_x = 0;
@@ -197,12 +189,12 @@ static void pointing_device_task_charybdis(report_mouse_t* mouse_report) {
scroll_buffer_x -= mouse_report->x;
# else
scroll_buffer_x += mouse_report->x;
-# endif // CHARYBDIS_DRAGSCROLL_REVERSE_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
+# endif // CHARYBDIS_DRAGSCROLL_REVERSE_Y
mouse_report->x = 0;
mouse_report->y = 0;
if (abs(scroll_buffer_x) > CHARYBDIS_DRAGSCROLL_BUFFER_SIZE) {
@@ -213,9 +205,6 @@ static void pointing_device_task_charybdis(report_mouse_t* mouse_report) {
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);
}
}
@@ -234,9 +223,9 @@ static bool has_shift_mod(void) {
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 // NO_ACTION_ONESHOT
}
-# endif // POINTING_DEVICE_ENABLE && !NO_CHARYBDIS_KEYCODES
+# endif // POINTING_DEVICE_ENABLE && !NO_CHARYBDIS_KEYCODES
/**
* \brief Outputs the Charybdis configuration to console.
@@ -252,16 +241,16 @@ static bool has_shift_mod(void) {
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"
+ "\traw = 0x%X,\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\tis_dragscroll_enabled=%u\n"
+ "\t\tis_sniping_enabled=%u\n"
+ "\t\tdefault_dpi=0x%X (%u)\n"
+ "\t\tsniping_dpi=0x%X (%u)\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
+# endif // CONSOLE_ENABLE
}
bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
@@ -313,7 +302,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
}
break;
}
-# endif // !NO_CHARYBDIS_KEYCODES
+# 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).
@@ -323,9 +312,11 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
pointing_device_set_report(mouse_report);
pointing_device_send();
}
-# endif // !MOUSEKEY_ENABLE
-# endif // POINTING_DEVICE_ENABLE
- debug_charybdis_config_to_console(&g_charybdis_config);
+# endif // !MOUSEKEY_ENABLE
+# endif // POINTING_DEVICE_ENABLE
+ if ((keycode >= POINTER_DEFAULT_DPI_FORWARD && keycode < CHARYBDIS_SAFE_RANGE) || IS_MOUSEKEY(keycode)) {
+ debug_charybdis_config_to_console(&g_charybdis_config);
+ }
return true;
}
@@ -340,4 +331,64 @@ void matrix_init_kb(void) {
read_charybdis_config_from_eeprom(&g_charybdis_config);
matrix_init_user();
}
-#endif // POINTING_DEVICE_ENABLE
+
+# ifdef CHARYBDIS_CONFIG_SYNC
+void charybdis_config_sync_handler(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) {
+ if (initiator2target_buffer_size == sizeof(g_charybdis_config)) {
+ memcpy(&g_charybdis_config, initiator2target_buffer, sizeof(g_charybdis_config));
+ }
+}
+# endif
+
+void keyboard_post_init_kb(void) {
+ maybe_update_pointing_device_cpi(&g_charybdis_config);
+# ifdef CHARYBDIS_CONFIG_SYNC
+ transaction_register_rpc(RPC_ID_KB_CONFIG_SYNC, charybdis_config_sync_handler);
+# endif
+ keyboard_post_init_user();
+}
+
+# ifdef CHARYBDIS_CONFIG_SYNC
+void housekeeping_task_kb(void) {
+ if (is_keyboard_master()) {
+ // Keep track of the last state, so that we can tell if we need to propagate to slave.
+ static charybdis_config_t last_charybdis_config = {0};
+ static uint32_t last_sync = 0;
+ bool needs_sync = false;
+
+ // Check if the state values are different.
+ if (memcmp(&g_charybdis_config, &last_charybdis_config, sizeof(g_charybdis_config))) {
+ needs_sync = true;
+ memcpy(&last_charybdis_config, &g_charybdis_config, sizeof(g_charybdis_config));
+ }
+ // Send to slave every 500ms regardless of state change.
+ if (timer_elapsed32(last_sync) > 500) {
+ needs_sync = true;
+ }
+
+ // Perform the sync if requested.
+ if (needs_sync) {
+ if (transaction_rpc_send(RPC_ID_KB_CONFIG_SYNC, sizeof(g_charybdis_config), &g_charybdis_config)) {
+ last_sync = timer_read32();
+ }
+ }
+ }
+ // No need to invoke the user-specific callback, as it's been called
+ // already.
+}
+# endif // CHARYBDIS_CONFIG_SYNC
+#endif // POINTING_DEVICE_ENABLE
+
+#if defined(KEYBOARD_bastardkb_charybdis_3x5_blackpill) || defined(KEYBOARD_bastardkb_charybdis_4x6_blackpill)
+void keyboard_pre_init_kb(void) {
+ setPinInputHigh(A0);
+ keyboard_pre_init_user();
+}
+
+void matrix_scan_kb(void) {
+ if (!readPin(A0)) {
+ reset_keyboard();
+ }
+ matrix_scan_user();
+}
+#endif // KEYBOARD_bastardkb_charybdis_3x5_blackpill || KEYBOARD_bastardkb_charybdis_4x6_blackpill
diff --git a/keyboards/bastardkb/charybdis/charybdis.h b/keyboards/bastardkb/charybdis/charybdis.h
index 42423c0c92..f624c554f4 100644
--- a/keyboards/bastardkb/charybdis/charybdis.h
+++ b/keyboards/bastardkb/charybdis/charybdis.h
@@ -21,6 +21,8 @@
// clang-format off
#if defined(KEYBOARD_bastardkb_charybdis_3x5)
# include "3x5.h"
+#elif defined(KEYBOARD_bastardkb_charybdis_3x6)
+# include "3x6.h"
#elif defined(KEYBOARD_bastardkb_charybdis_4x6)
# include "4x6.h"
#else
@@ -37,7 +39,7 @@ enum charybdis_keycodes {
POINTER_DEFAULT_DPI_FORWARD = USER00,
# else
POINTER_DEFAULT_DPI_FORWARD = SAFE_RANGE,
-# endif // VIA_ENABLE
+# endif // VIA_ENABLE
POINTER_DEFAULT_DPI_REVERSE,
POINTER_SNIPING_DPI_FORWARD,
POINTER_SNIPING_DPI_REVERSE,
@@ -56,7 +58,7 @@ enum charybdis_keycodes {
# define SNP_TOG SNIPING_MODE_TOGGLE
# define DRGSCRL DRAGSCROLL_MODE
# define DRG_TOG DRAGSCROLL_MODE_TOGGLE
-# endif // !NO_CHARYBDIS_KEYCODES
+# endif // !NO_CHARYBDIS_KEYCODES
/** \brief Return the current DPI value for the pointer's default mode. */
uint16_t charybdis_get_pointer_default_dpi(void);
@@ -123,4 +125,4 @@ bool charybdis_get_pointer_dragscroll_enabled(void);
* are translated into horizontal and vertical scroll movements.
*/
void charybdis_set_pointer_dragscroll_enabled(bool enable);
-#endif // POINTING_DEVICE_ENABLE
+#endif // POINTING_DEVICE_ENABLE
diff --git a/keyboards/bastardkb/charybdis/post_config.h b/keyboards/bastardkb/charybdis/post_config.h
index 540751f6c6..4cfd24c4b6 100644
--- a/keyboards/bastardkb/charybdis/post_config.h
+++ b/keyboards/bastardkb/charybdis/post_config.h
@@ -20,90 +20,95 @@
#pragma once
+// Enable syncing of charybdis config
+#ifdef CHARYBDIS_CONFIG_SYNC
+# define SPLIT_TRANSACTION_IDS_KB RPC_ID_KB_CONFIG_SYNC
+#endif
+
/* Mouse config. */
#ifndef MOUSEKEY_MOVE_DELTA
# ifndef MK_KINETIC_SPEED
# define MOUSEKEY_MOVE_DELTA 5
-# else // MK_KINETIC_SPEED
+# else // MK_KINETIC_SPEED
# define MOUSEKEY_MOVE_DELTA 25
-# endif // !MK_KINETIC_SPEED
-#endif // !MOUSEKEY_MOVE_DELTA
+# endif // !MK_KINETIC_SPEED
+#endif // !MOUSEKEY_MOVE_DELTA
#ifndef MOUSEKEY_DELAY
# ifndef MK_KINETIC_SPEED
# define MOUSEKEY_DELAY 300
-# else // MK_KINETIC_SPEED
+# else // MK_KINETIC_SPEED
# define MOUSEKEY_DELAY 8
-# endif // !MK_KINETIC_SPEED
-#endif // !MOUSEKEY_DELAY
+# endif // !MK_KINETIC_SPEED
+#endif // !MOUSEKEY_DELAY
#ifndef MOUSEKEY_INTERVAL
# ifndef MK_KINETIC_SPEED
# define MOUSEKEY_INTERVAL 50
-# else // MK_KINETIC_SPEED
+# else // MK_KINETIC_SPEED
# define MOUSEKEY_INTERVAL 20
-# endif // !MK_KINETIC_SPEED
-#endif // !MOUSEKEY_INTERNAL
+# endif // !MK_KINETIC_SPEED
+#endif // !MOUSEKEY_INTERNAL
#ifndef MOUSEKEY_MAX_SPEED
# define MOUSEKEY_MAX_SPEED 7
-#endif // !MOUSEKEY_MAX_SPEED
+#endif // !MOUSEKEY_MAX_SPEED
#ifndef MOUSEKEY_TIME_TO_MAX
# define MOUSEKEY_TIME_TO_MAX 60
-#endif // !MOUSEKEY_TIME_TO_MAX
+#endif // !MOUSEKEY_TIME_TO_MAX
#ifndef MOUSEKEY_INITIAL_SPEED
# define MOUSEKEY_INITIAL_SPEED 100
-#endif // !MOUSEKEY_INITIAL_SPEED
+#endif // !MOUSEKEY_INITIAL_SPEED
#ifndef MOUSEKEY_BASE_SPEED
# define MOUSEKEY_BASE_SPEED 1000
-#endif // !MOUSEKEY_BASE_SPEED
+#endif // !MOUSEKEY_BASE_SPEED
#ifndef MOUSEKEY_DECELERATED_SPEED
# define MOUSEKEY_DECELERATED_SPEED 400
-#endif // !MOUSEKEY_DECELERATED_SPEED
+#endif // !MOUSEKEY_DECELERATED_SPEED
#ifndef MOUSEKEY_ACCELERATED_SPEED
# define MOUSEKEY_ACCELERATED_SPEED 3000
-#endif // !MOUSEKEY_ACCELERATED_SPEED
+#endif // !MOUSEKEY_ACCELERATED_SPEED
/* Mouse scroll config. */
#ifndef MOUSEKEY_WHEEL_DELAY
# define MOUSEKEY_WHEEL_DELAY 15
-#endif // !MOUSEKEY_WHEEL_DELAY
+#endif // !MOUSEKEY_WHEEL_DELAY
#ifndef MOUSEKEY_WHEEL_DELTA
# define MOUSEKEY_WHEEL_DELTA 1
-#endif // !MOUSEKEY_WHEEL_DELTA
+#endif // !MOUSEKEY_WHEEL_DELTA
#ifndef MOUSEKEY_WHEEL_INTERVAL
# define MOUSEKEY_WHEEL_INTERVAL 50
-#endif // !MOUSEKEY_WHEEL_INTERVAL
+#endif // !MOUSEKEY_WHEEL_INTERVAL
#ifndef MOUSEKEY_WHEEL_MAX_SPEED
# define MOUSEKEY_WHEEL_MAX_SPEED 8
-#endif // !MOUSEKEY_WHEEL_MAX_SPEED
+#endif // !MOUSEKEY_WHEEL_MAX_SPEED
#ifndef MOUSEKEY_WHEEL_TIME_TO_MAX
# define MOUSEKEY_WHEEL_TIME_TO_MAX 80
-#endif // !MOUSEKEY_WHEEL_TIME_TO_MAX
+#endif // !MOUSEKEY_WHEEL_TIME_TO_MAX
#ifndef MOUSEKEY_WHEEL_INITIAL_MOVEMENTS
# define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 8
-#endif // !MOUSEKEY_WHEEL_INITIAL_MOVEMENTS
+#endif // !MOUSEKEY_WHEEL_INITIAL_MOVEMENTS
#ifndef MOUSEKEY_WHEEL_BASE_MOVEMENTS
# define MOUSEKEY_WHEEL_BASE_MOVEMENTS 48
-#endif // !MOUSEKEY_WHEEL_BASE_MOVEMENTS
+#endif // !MOUSEKEY_WHEEL_BASE_MOVEMENTS
#ifndef MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS
# define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48
-#endif // !MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS
+#endif // !MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS
#ifndef MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS
# define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8
-#endif // !MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS
+#endif // !MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS
diff --git a/keyboards/bastardkb/charybdis/readme.md b/keyboards/bastardkb/charybdis/readme.md
index 461f33117c..c112c1150e 100644
--- a/keyboards/bastardkb/charybdis/readme.md
+++ b/keyboards/bastardkb/charybdis/readme.md
@@ -18,33 +18,32 @@ Check out the [keyboard build guides](https://docs.bastardkb.com) for the Charyb
## Building the firmware
-### Charybdis (4x6)
-
-The `default` keymap is inspired from the original [Dactyl Manuform](../../handwired/dactyl_manuform) layout.
+**You must specify the shield version when compiling/flashing the firmware.**
+The template is:
```shell
-qmk compile -kb bastardkb/charybdis/4x6 -km default
+qmk compile -kb bastardkb/charybdis/{LAYOUT}/{VERSION}/elitec -km {KEYMAP}
```
-Check out the `via` layout if you're looking for VIA support:
+See below for populated commands per layout
-```shell
-qmk compile -kb bastardkb/charybdis/4x6 -km via
-```
+The `default` keymap is inspired from the original [Dactyl Manuform](../../handwired/dactyl_manuform) layout.
-### Charybdis (3x5)
+Check out the `via` layout if you're looking for VIA support.
-The `default` keymap is inspired from the original [Dactyl Manuform](../../handwired/dactyl_manuform) layout.
+### Charybdis (4x6)
-```shell
-qmk compile -kb bastardkb/charybdis/3x5 -km default
-```
+| Shield Version | default | via |
+|----------------|-----------------------------------------------------------------|-----------------------------------------------------------------|
+| v1 | `qmk compile -kb bastardkb/charybdis/4x6/v1/elitec -km default` | `qmk compile -kb bastardkb/charybdis/4x6/v1/elitec -km via` |
+| v2 | `qmk compile -kb bastardkb/charybdis/4x6/v2/elitec -km default` | `qmk compile -kb bastardkb/charybdis/4x6/v2/elitec -km via` |
-Check out the `via` layout if you're looking for VIA support:
+### Charybdis (3x5)
-```shell
-qmk compile -kb bastardkb/charybdis/3x5 -km via
-```
+| Shield Version | default | via |
+|----------------|-----------------------------------------------------------------|-----------------------------------------------------------------|
+| v1 | `qmk compile -kb bastardkb/charybdis/3x5/v1/elitec -km default` | `qmk compile -kb bastardkb/charybdis/3x5/v1/elitec -km via` |
+| v2 | `qmk compile -kb bastardkb/charybdis/3x5/v2/elitec -km default` | `qmk compile -kb bastardkb/charybdis/3x5/v2/elitec -km via` |
## Customizing the firmware
@@ -73,7 +72,7 @@ Drag-scroll enables scrolling with the trackball. When drag-scroll is enabled, t
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.
+`charybdis_get_pointer_dragscroll_enabled()` returns whether drag-scroll mode is currently enabled.
To invert the horizontal scrolling direction, define `CHARYBDIS_DRAGSCROLL_REVERSE_X`:
@@ -114,20 +113,6 @@ This behavior can be further customized with the following defines:
#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:
@@ -176,3 +161,23 @@ To disable the custom keycodes, and reduce binary size, simply add a definition
```c
#define NO_CHARYBDIS_KEYCODES
```
+
+### Configuration Syncing
+
+If you want/need to enable syncing of the charybdis config, such as to read the sniping or drag scroll modes on the other half (such as for displaying the status via rgb matrix, or added on screens, or what not), you can enabled this. To do so, add this to your `config.h`:
+
+```c
+#define CHARYBDIS_CONFIG_SYNC
+```
+
+Note that you will need to reflash both sides when enabling this.
+
+### Enable Large Mouse Reports
+
+By default, the X and Y motion for the pointing device/mouse reports is -127 to 127. You can definitely hit the limit for that with the sensors. You can enable support for -32767 to 32767 by adding this to your `config.h`:
+
+```c
+#define MOUSE_EXTENDED_REPORT
+```
+
+Note that you will need to reflash both sides when enabling this.
diff --git a/keyboards/bastardkb/dilemma/config.h b/keyboards/bastardkb/dilemma/config.h
new file mode 100644
index 0000000000..af59efb709
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/config.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2022 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"
+
+/* Key matrix configuration. */
+
+#define MATRIX_ROWS 8 // Rows are doubled-up.
+#define MATRIX_COLS 5
+
+#define DIODE_DIRECTION ROW2COL
+
+// Set 0 if debouncing isn't needed.
+#define DEBOUNCE 5
+
+/* 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 10
+
+// Adjust trackpad rotation.
+#define POINTING_DEVICE_ROTATION_90
+
+// Configure for the Cirque model used on the Dilemma.
+#define CIRQUE_PINNACLE_DIAMETER_MM 35
+#define CIRQUE_PINNACLE_CURVED_OVERLAY
diff --git a/keyboards/bastardkb/dilemma/dilemma.c b/keyboards/bastardkb/dilemma/dilemma.c
new file mode 100644
index 0000000000..e710f3aab7
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/dilemma.c
@@ -0,0 +1,329 @@
+/*
+ * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2022 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 "dilemma.h"
+
+#ifdef CONSOLE_ENABLE
+# include "print.h"
+#endif // CONSOLE_ENABLE
+
+#ifdef POINTING_DEVICE_ENABLE
+# ifndef DILEMMA_MINIMUM_DEFAULT_DPI
+# define DILEMMA_MINIMUM_DEFAULT_DPI 400
+# endif // DILEMMA_MINIMUM_DEFAULT_DPI
+
+# ifndef DILEMMA_DEFAULT_DPI_CONFIG_STEP
+# define DILEMMA_DEFAULT_DPI_CONFIG_STEP 200
+# endif // DILEMMA_DEFAULT_DPI_CONFIG_STEP
+
+# ifndef DILEMMA_MINIMUM_SNIPING_DPI
+# define DILEMMA_MINIMUM_SNIPING_DPI 200
+# endif // DILEMMA_MINIMUM_SNIPING_DPI
+
+# ifndef DILEMMA_SNIPING_DPI_CONFIG_STEP
+# define DILEMMA_SNIPING_DPI_CONFIG_STEP 100
+# endif // DILEMMA_SNIPING_DPI_CONFIG_STEP
+
+// Fixed DPI for drag-scroll.
+# ifndef DILEMMA_DRAGSCROLL_DPI
+# define DILEMMA_DRAGSCROLL_DPI 100
+# endif // DILEMMA_DRAGSCROLL_DPI
+
+# ifndef DILEMMA_DRAGSCROLL_BUFFER_SIZE
+# define DILEMMA_DRAGSCROLL_BUFFER_SIZE 6
+# endif // !DILEMMA_DRAGSCROLL_BUFFER_SIZE
+
+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));
+} dilemma_config_t;
+
+static dilemma_config_t g_dilemma_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_dilemma_config_from_eeprom(dilemma_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_dilemma_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_dilemma_config_to_eeprom(dilemma_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(dilemma_config_t* config) {
+ return (uint16_t)config->pointer_default_dpi * DILEMMA_DEFAULT_DPI_CONFIG_STEP + DILEMMA_MINIMUM_DEFAULT_DPI;
+}
+
+/** \brief Return the current value of the pointer's sniper-mode DPI. */
+static uint16_t get_pointer_sniping_dpi(dilemma_config_t* config) {
+ return (uint16_t)config->pointer_sniping_dpi * DILEMMA_SNIPING_DPI_CONFIG_STEP + DILEMMA_MINIMUM_SNIPING_DPI;
+}
+
+/** \brief Set the appropriate DPI for the input config. */
+static void maybe_update_pointing_device_cpi(dilemma_config_t* config) {
+ if (config->is_dragscroll_enabled) {
+ pointing_device_set_cpi(DILEMMA_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 DILEMMA_DEFAULT_DPI_CONFIG_STEP.
+ */
+static void step_pointer_default_dpi(dilemma_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 DILEMMA_SNIPING_DPI_CONFIG_STEP.
+ */
+static void step_pointer_sniping_dpi(dilemma_config_t* config, bool forward) {
+ config->pointer_sniping_dpi += forward ? 1 : -1;
+ maybe_update_pointing_device_cpi(config);
+}
+
+uint16_t dilemma_get_pointer_default_dpi(void) {
+ return get_pointer_default_dpi(&g_dilemma_config);
+}
+
+uint16_t dilemma_get_pointer_sniping_dpi(void) {
+ return get_pointer_sniping_dpi(&g_dilemma_config);
+}
+
+void dilemma_cycle_pointer_default_dpi_noeeprom(bool forward) {
+ step_pointer_default_dpi(&g_dilemma_config, forward);
+}
+
+void dilemma_cycle_pointer_default_dpi(bool forward) {
+ step_pointer_default_dpi(&g_dilemma_config, forward);
+ write_dilemma_config_to_eeprom(&g_dilemma_config);
+}
+
+void dilemma_cycle_pointer_sniping_dpi_noeeprom(bool forward) {
+ step_pointer_sniping_dpi(&g_dilemma_config, forward);
+}
+
+void dilemma_cycle_pointer_sniping_dpi(bool forward) {
+ step_pointer_sniping_dpi(&g_dilemma_config, forward);
+ write_dilemma_config_to_eeprom(&g_dilemma_config);
+}
+
+bool dilemma_get_pointer_sniping_enabled(void) {
+ return g_dilemma_config.is_sniping_enabled;
+}
+
+void dilemma_set_pointer_sniping_enabled(bool enable) {
+ g_dilemma_config.is_sniping_enabled = enable;
+ maybe_update_pointing_device_cpi(&g_dilemma_config);
+}
+
+bool dilemma_get_pointer_dragscroll_enabled(void) {
+ return g_dilemma_config.is_dragscroll_enabled;
+}
+
+void dilemma_set_pointer_dragscroll_enabled(bool enable) {
+ g_dilemma_config.is_dragscroll_enabled = enable;
+ maybe_update_pointing_device_cpi(&g_dilemma_config);
+}
+
+void pointing_device_init_kb(void) {
+ maybe_update_pointing_device_cpi(&g_dilemma_config);
+ pointing_device_init_user();
+}
+
+/**
+ * \brief Augment the pointing device behavior.
+ *
+ * Implement drag-scroll.
+ */
+static void pointing_device_task_dilemma(report_mouse_t* mouse_report) {
+ static int16_t scroll_buffer_x = 0;
+ static int16_t scroll_buffer_y = 0;
+ if (g_dilemma_config.is_dragscroll_enabled) {
+# ifdef DILEMMA_DRAGSCROLL_REVERSE_X
+ scroll_buffer_x -= mouse_report->x;
+# else
+ scroll_buffer_x += mouse_report->x;
+# endif // DILEMMA_DRAGSCROLL_REVERSE_X
+# ifdef DILEMMA_DRAGSCROLL_REVERSE_Y
+ scroll_buffer_y -= mouse_report->y;
+# else
+ scroll_buffer_y += mouse_report->y;
+# endif // DILEMMA_DRAGSCROLL_REVERSE_Y
+ mouse_report->x = 0;
+ mouse_report->y = 0;
+ if (abs(scroll_buffer_x) > DILEMMA_DRAGSCROLL_BUFFER_SIZE) {
+ mouse_report->h = scroll_buffer_x > 0 ? 1 : -1;
+ scroll_buffer_x = 0;
+ }
+ if (abs(scroll_buffer_y) > DILEMMA_DRAGSCROLL_BUFFER_SIZE) {
+ mouse_report->v = scroll_buffer_y > 0 ? 1 : -1;
+ scroll_buffer_y = 0;
+ }
+ }
+}
+
+report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
+ if (is_keyboard_master()) {
+ pointing_device_task_dilemma(&mouse_report);
+ mouse_report = pointing_device_task_user(mouse_report);
+ }
+ return mouse_report;
+}
+
+# if defined(POINTING_DEVICE_ENABLE) && !defined(NO_DILEMMA_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_DILEMMA_KEYCODES
+
+/**
+ * \brief Outputs the Dilemma 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_dilemma_config_to_console(dilemma_config_t* config) {
+# ifdef CONSOLE_ENABLE
+ dprintf("(dilemma) process_record_kb: config = {\n"
+ "\traw = 0x%X,\n"
+ "\t{\n"
+ "\t\tis_dragscroll_enabled=%u\n"
+ "\t\tis_sniping_enabled=%u\n"
+ "\t\tdefault_dpi=0x%X (%u)\n"
+ "\t\tsniping_dpi=0x%X (%u)\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_dilemma_config_to_console(&g_dilemma_config);
+ return false;
+ }
+# ifdef POINTING_DEVICE_ENABLE
+# ifndef NO_DILEMMA_KEYCODES
+ switch (keycode) {
+ case POINTER_DEFAULT_DPI_FORWARD:
+ if (record->event.pressed) {
+ // Step backward if shifted, forward otherwise.
+ dilemma_cycle_pointer_default_dpi(/* forward= */ !has_shift_mod());
+ }
+ break;
+ case POINTER_DEFAULT_DPI_REVERSE:
+ if (record->event.pressed) {
+ // Step forward if shifted, backward otherwise.
+ dilemma_cycle_pointer_default_dpi(/* forward= */ has_shift_mod());
+ }
+ break;
+ case POINTER_SNIPING_DPI_FORWARD:
+ if (record->event.pressed) {
+ // Step backward if shifted, forward otherwise.
+ dilemma_cycle_pointer_sniping_dpi(/* forward= */ !has_shift_mod());
+ }
+ break;
+ case POINTER_SNIPING_DPI_REVERSE:
+ if (record->event.pressed) {
+ // Step forward if shifted, backward otherwise.
+ dilemma_cycle_pointer_sniping_dpi(/* forward= */ has_shift_mod());
+ }
+ break;
+ case SNIPING_MODE:
+ dilemma_set_pointer_sniping_enabled(record->event.pressed);
+ break;
+ case SNIPING_MODE_TOGGLE:
+ if (record->event.pressed) {
+ dilemma_set_pointer_sniping_enabled(!dilemma_get_pointer_sniping_enabled());
+ }
+ break;
+ case DRAGSCROLL_MODE:
+ dilemma_set_pointer_dragscroll_enabled(record->event.pressed);
+ break;
+ case DRAGSCROLL_MODE_TOGGLE:
+ if (record->event.pressed) {
+ dilemma_set_pointer_dragscroll_enabled(!dilemma_get_pointer_dragscroll_enabled());
+ }
+ break;
+ }
+# endif // !NO_DILEMMA_KEYCODES
+# endif // POINTING_DEVICE_ENABLE
+ debug_dilemma_config_to_console(&g_dilemma_config);
+ if ((keycode >= POINTER_DEFAULT_DPI_FORWARD && keycode < DILEMMA_SAFE_RANGE) || IS_MOUSEKEY(keycode)) {
+ debug_dilemma_config_to_console(&g_dilemma_config);
+ }
+ return true;
+}
+
+void eeconfig_init_kb(void) {
+ g_dilemma_config.raw = 0;
+ g_dilemma_config.pointer_default_dpi = 4;
+ write_dilemma_config_to_eeprom(&g_dilemma_config);
+ maybe_update_pointing_device_cpi(&g_dilemma_config);
+ eeconfig_init_user();
+}
+
+void matrix_init_kb(void) {
+ read_dilemma_config_from_eeprom(&g_dilemma_config);
+ matrix_init_user();
+}
+#endif // POINTING_DEVICE_ENABLE
diff --git a/keyboards/bastardkb/dilemma/dilemma.h b/keyboards/bastardkb/dilemma/dilemma.h
new file mode 100644
index 0000000000..fbf54c804b
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/dilemma.h
@@ -0,0 +1,134 @@
+/**
+ * Copyright 2022 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 "quantum.h"
+
+// clang-format off
+#define LAYOUT_split_3x5_2( \
+ 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, \
+ k30, k32, k72, k70 \
+) \
+{ \
+ { k00, k01, k02, k03, k04 }, \
+ { k10, k11, k12, k13, k14 }, \
+ { k20, k21, k22, k23, k24 }, \
+ { k30, KC_NO, k32, KC_NO, 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
+
+#ifdef POINTING_DEVICE_ENABLE
+# ifndef NO_DILEMMA_KEYCODES
+enum dilemma_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,
+ DILEMMA_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_DILEMMA_KEYCODES
+
+/** \brief Return the current DPI value for the pointer's default mode. */
+uint16_t dilemma_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 DILEMMA_DEFAULT_DPI_CONFIG_STEP.
+ *
+ * The new value is persisted in EEPROM.
+ */
+void dilemma_cycle_pointer_default_dpi(bool forward);
+
+/**
+ * \brief Same as `dilemma_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 dilemma_cycle_pointer_default_dpi_noeeprom(bool forward);
+
+/** \brief Return the current DPI value for the pointer's sniper-mode. */
+uint16_t dilemma_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 DILEMMA_SNIPING_DPI_CONFIG_STEP.
+ *
+ * The new value is persisted in EEPROM.
+ */
+void dilemma_cycle_pointer_sniping_dpi(bool forward);
+
+/**
+ * \brief Same as `dilemma_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 dilemma_cycle_pointer_sniping_dpi_noeeprom(bool forward);
+
+/** \brief Whether sniper-mode is enabled. */
+bool dilemma_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 dilemma_set_pointer_sniping_enabled(bool enable);
+
+/** \brief Whether drag-scroll is enabled. */
+bool dilemma_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 dilemma_set_pointer_dragscroll_enabled(bool enable);
+#endif // POINTING_DEVICE_ENABLE
diff --git a/keyboards/bastardkb/dilemma/elitec/config.h b/keyboards/bastardkb/dilemma/elitec/config.h
new file mode 100644
index 0000000000..0f26e46fdb
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/elitec/config.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { D4, C6, F5, F7 }
+#define MATRIX_COL_PINS \
+ { B4, B5, E6, D7, F6 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+// To use the handedness pin, resistors need to be installed on the PCB.
+// If so, uncomment the following code, and undefine MASTER_RIGHT above.
+//#define SPLIT_HAND_PIN F4
+// If you've soldered the handedness pull-up on the upper side instead of the
+// left one, uncomment the following line.
+//#define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left.
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN D2
diff --git a/keyboards/bastardkb/dilemma/elitec/info.json b/keyboards/bastardkb/dilemma/elitec/info.json
new file mode 100644
index 0000000000..f5916f3ab1
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/elitec/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Dilemma Elite-C",
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/dilemma/elitec/rules.mk b/keyboards/bastardkb/dilemma/elitec/rules.mk
new file mode 100644
index 0000000000..e8326bcf09
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/elitec/rules.mk
@@ -0,0 +1,5 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
diff --git a/keyboards/bastardkb/dilemma/info.json b/keyboards/bastardkb/dilemma/info.json
new file mode 100644
index 0000000000..6764219969
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/info.json
@@ -0,0 +1,46 @@
+{
+ "url": "https://bastardkb.com/dilemma",
+ "usb": {
+ "pid": "0x1835",
+ },
+ "layouts": {
+ "LAYOUT_split_3x5_2": {
+ "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":"L32", "x":5, "y":3},
+ {"label":"R32", "x":10, "y":3},
+ {"label":"R30", "x":11, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/bastardkb/dilemma/keymaps/bstiq/README.md b/keyboards/bastardkb/dilemma/keymaps/bstiq/README.md
new file mode 100644
index 0000000000..df1f43cbcb
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/keymaps/bstiq/README.md
@@ -0,0 +1,3 @@
+# Dilemma @bstiq keymap
+
+Inspired from Miryoku, using home-rows.
diff --git a/keyboards/bastardkb/dilemma/keymaps/bstiq/config.h b/keyboards/bastardkb/dilemma/keymaps/bstiq/config.h
new file mode 100644
index 0000000000..b2e49c8c6e
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/keymaps/bstiq/config.h
@@ -0,0 +1,153 @@
+/**
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2022 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 8
+#endif // VIA_ENABLE
+
+/**
+ * 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
+ */
+#ifndef TAPPING_TERM
+# define TAPPING_TERM 160
+#endif // TAPPING_TERM
+
+// disable trackpad taps
+// #define CIRQUE_PINNACLE_TAPPING_TERM 0
+
+/**
+ * Enable rapid switch from tap to hold. 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.
+ */
+
+/**
+ * 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
+
+/**
+ * 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
+
+/** Dilemma-specific features. */
+
+#ifdef POINTING_DEVICE_ENABLE
+// Flip horizontal direction for drag-scroll.
+# define DILEMMA_DRAGSCROLL_REVERSE_X
+// #define DILEMMA_DRAGSCROLL_REVERSE_Y
+#endif // POINTING_DEVICE_ENABLE
+
+/** RGB Matrix. */
+
+#ifdef RGB_MATRIX_ENABLE
+// Enable all animations on ARM boards since they have plenty of memory
+// available for it.
+# 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_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
+
+// 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/dilemma/keymaps/bstiq/keymap.c b/keyboards/bastardkb/dilemma/keymaps/bstiq/keymap.c
new file mode 100644
index 0000000000..f8396cb1c2
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/keymaps/bstiq/keymap.c
@@ -0,0 +1,224 @@
+/**
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2022 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 bstiq_layers {
+ LAYER_BASE = 0,
+ LAYER_MBO,
+ LAYER_MEDIA,
+ LAYER_NAV,
+ LAYER_MOUSE,
+ LAYER_SYM,
+ LAYER_NUM,
+ LAYER_FUN,
+};
+
+// Automatically enable sniping when the mouse layer is on.
+#define DILEMMA_AUTO_SNIPING_ON_LAYER LAYER_MOUSE
+
+#define BSP_NAV LT(LAYER_NAV, KC_BSPC)
+#define ENT_MBO LT(LAYER_MBO, KC_ENT)
+#define TAB_MED LT(LAYER_MEDIA, KC_TAB)
+#define ESC_SYM LT(LAYER_SYM, KC_ESC)
+#define SPC_NUM LT(LAYER_NUM, KC_SPC)
+#define SPC_MBO LT(LAYER_MBO, KC_SPC)
+#define MOUSE(KC) LT(LAYER_MOUSE, KC)
+
+#define USR_RDO KC_AGAIN
+#define USR_PST S(KC_INS)
+#define USR_CPY C(KC_INS)
+#define USR_CUT S(KC_DEL)
+#define USR_UND KC_UNDO
+
+#define MS_L KC_MS_LEFT
+#define MS_R KC_MS_RIGHT
+#define MS_D KC_MS_DOWN
+#define MS_U KC_MS_UP
+
+#define WH_L KC_MS_WH_LEFT
+#define WH_R KC_MS_WH_RIGHT
+#define WH_D KC_MS_WH_DOWN
+#define WH_U KC_MS_WH_UP
+
+// clang-format off
+/** Convenience macro. */
+#define _KC_LAYOUT_wrapper( \
+ 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_##k00, KC_##k01, KC_##k02, KC_##k03, KC_##k04, KC_##k05, KC_##k06, KC_##k07, KC_##k08, KC_##k09, \
+ KC_##k10, KC_##k11, KC_##k12, KC_##k13, KC_##k14, KC_##k15, KC_##k16, KC_##k17, KC_##k18, KC_##k19, \
+ KC_##k20, KC_##k21, KC_##k22, KC_##k23, KC_##k24, KC_##k25, KC_##k26, KC_##k27, KC_##k28, KC_##k29, \
+ __VA_ARGS__
+#define KC_LAYOUT_wrapper(...) _KC_LAYOUT_wrapper(__VA_ARGS__)
+
+/** Base layer with BÉPO layout. */
+#define LAYOUT_LAYER_BASE_BEPO KC_LAYOUT_wrapper( \
+ B, W, P, O, QUOT, DOT, V, D, L, J, \
+ A, U, I, E, COMM, C, T, S, R, N, \
+ Z, Y, X, SLSH, K, M, Q, G, H, F, \
+ SPC_MBO, TAB_MED, ESC_SYM, SPC_NUM)
+
+/** Convenience key shorthands. */
+#define U_NA KC_NO // Present but not available for use.
+#define U_NU KC_NO // Available but not used.
+
+/** Convenience row shorthands. */
+#define ________________HOME_ROW_NA________________ U_NA, U_NA, U_NA, U_NA, U_NA
+#define ______________HOME_ROW_GASC_L______________ KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, U_NA
+#define ______________HOME_ROW_ALGR_L______________ U_NA, KC_ALGR, U_NA, U_NA, U_NA
+#define ______________HOME_ROW_GASC_R______________ U_NA, KC_LCTL, KC_LSFT, KC_LALT, KC_LGUI
+#define ______________HOME_ROW_ALGR_R______________ U_NA, U_NA, U_NA, KC_ALGR, U_NA
+
+/** Layers. */
+
+// Buttons.
+#define LAYOUT_LAYER_MBO \
+ ________________HOME_ROW_NA________________, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
+ ______________HOME_ROW_GASC_L______________, KC_BSPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, \
+ KC_BTN3, KC_ALGR, KC_BTN2, KC_BTN1, U_NA, KC_DEL, KC_HOME, KC_PGDN, KC_PGUP, KC_END, \
+ U_NA, U_NA, KC_ENT, KC_ENT
+
+// Media.
+#define LAYOUT_LAYER_MEDIA \
+ ________________HOME_ROW_NA________________, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
+ ______________HOME_ROW_GASC_L______________, U_NU, MS_L, MS_D, MS_U, MS_R, \
+ ______________HOME_ROW_ALGR_L______________, U_NU, WH_L, WH_D, WH_U, WH_R, \
+ U_NA, U_NA, KC_BTN1, KC_BTN3
+
+// Navigation.
+#define LAYOUT_LAYER_NAV \
+ ________________HOME_ROW_NA________________, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, \
+ ______________HOME_ROW_GASC_L______________, U_NU, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, \
+ ______________HOME_ROW_ALGR_L______________, U_NU, U_NU, U_NU, U_NU, U_NU, \
+ U_NA, U_NA, KC_MSTP, KC_MPLY
+
+// Mouse.
+#define LAYOUT_LAYER_MOUSE \
+ S_D_MOD, USR_PST, USR_CPY, USR_CUT, USR_UND, USR_RDO, USR_PST, USR_CPY, USR_CUT, USR_UND, \
+ DPI_MOD, DRGSCRL, KC_LSFT, DRGSCRL, _______, U_NU, MS_L, MS_D, MS_U, MS_R, \
+ USR_RDO, USR_PST, USR_CPY, KC_BTN3, USR_UND, U_NU, WH_L, WH_D, WH_U, WH_R, \
+ KC_BTN1, KC_BTN2, KC_BTN1, KC_BTN3
+
+// Symbols.
+#define LAYOUT_LAYER_SYM \
+ KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, ________________HOME_ROW_NA________________, \
+ KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, ______________HOME_ROW_GASC_R______________, \
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_MINS, ______________HOME_ROW_ALGR_R______________, \
+ KC_RPRN, KC_LPRN, U_NA, U_NA
+
+// Numerals.
+#define LAYOUT_LAYER_NUM \
+ KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, ________________HOME_ROW_NA________________, \
+ KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, ______________HOME_ROW_GASC_R______________, \
+ KC_GRV, KC_1, KC_2, KC_3, KC_UNDS, ______________HOME_ROW_ALGR_R______________, \
+ KC_0, KC_MINS, U_NA, U_NA
+
+// Function keys.
+#define LAYOUT_LAYER_FUN \
+ KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, ________________HOME_ROW_NA________________, \
+ KC_F11, KC_F4, KC_F5, KC_F6, KC_SLCK, ______________HOME_ROW_GASC_R______________, \
+ KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, ______________HOME_ROW_ALGR_R______________,\
+ KC_APP, KC_TAB, U_NA, U_NA
+
+/**
+ * Add Home Row mod to a layout.
+ *
+ * Expects a 10-key per row layout. Adds support for GASC (Gui, Alt, Shift, Ctl)
+ * home row. The layout passed in parameter must contain at least 20 keycodes.
+ *
+ * This is meant to be used with `LAYOUT_LAYER_BASE_BEPO` defined above, eg.:
+ *
+ * HOME_ROW_MOD_GASC(LAYOUT_LAYER_BASE_BEPO)
+ */
+#define _HOME_ROW_MOD_GASC( \
+ 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), LSFT_T(L12), LCTL_T(L13), L14, \
+ R15, RCTL_T(R16), RSFT_T(R17), LALT_T(R18), RGUI_T(R19), \
+ __VA_ARGS__
+#define HOME_ROW_MOD_GASC(...) _HOME_ROW_MOD_GASC(__VA_ARGS__)
+
+/**
+ * Add mouse 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 `LAYOUT_LAYER_BASE_BEPO` defined above, eg.:
+ *
+ * MOUSE_MOD(LAYOUT_LAYER_BASE_BEPO)
+ */
+#define _MOUSE_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, \
+ L20, MOUSE(L21), L22, L23, L24, \
+ R25, R26, R27, R28, MOUSE(R29), \
+ __VA_ARGS__
+#define MOUSE_MOD(...) _MOUSE_MOD(__VA_ARGS__)
+
+#define LAYOUT_wrapper(...) LAYOUT_split_3x5_2(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_BASE] = LAYOUT_wrapper(
+ MOUSE_MOD(HOME_ROW_MOD_GASC(LAYOUT_LAYER_BASE_BEPO))
+ ),
+ [LAYER_MBO] = LAYOUT_wrapper(LAYOUT_LAYER_MBO),
+ [LAYER_MEDIA] = LAYOUT_wrapper(LAYOUT_LAYER_MEDIA),
+ [LAYER_NAV] = LAYOUT_wrapper(LAYOUT_LAYER_NAV),
+ [LAYER_MOUSE] = LAYOUT_wrapper(LAYOUT_LAYER_MOUSE),
+ [LAYER_SYM] = LAYOUT_wrapper(LAYOUT_LAYER_SYM),
+ [LAYER_NUM] = LAYOUT_wrapper(LAYOUT_LAYER_NUM),
+ [LAYER_FUN] = LAYOUT_wrapper(LAYOUT_LAYER_FUN),
+};
+// clang-format on
+
+#if defined(POINTING_DEVICE_ENABLE) && defined(DILEMMA_AUTO_SNIPING_ON_LAYER)
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ state = layer_state_set_user(state);
+ dilemma_set_pointer_sniping_enabled(layer_state_cmp(state, DILEMMA_AUTO_SNIPING_ON_LAYER));
+ return state;
+}
+#endif // POINTING_DEVICE_ENABLE && DILEMMA_AUTO_SNIPING_ON_LAYER
+
+#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/dilemma/keymaps/default/keymap.c b/keyboards/bastardkb/dilemma/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3f77ebcabb
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/keymaps/default/keymap.c
@@ -0,0 +1,84 @@
+/**
+ * Copyright 2022 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_NAV,
+ LAYER_SYM,
+ LAYER_NUM,
+};
+
+#define NAV MO(LAYER_NAV)
+#define SYM MO(LAYER_SYM)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [LAYER_BASE] = 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,
+ // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
+ NAV, CAPSWRD, KC_SPC, SYM
+ // ╰──────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_NAV] = LAYOUT_split_3x5_2(
+ // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮
+ KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU, XXXXXXX, KC_HOME, KC_UP, KC_END, KC_DEL,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_LSFT, KC_LCTL, KC_LALT, KC_RGUI, KC_VOLD, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ QK_BOOT, EEP_RST, KC_MPRV, KC_MNXT, KC_MPLY, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, KC_ENT,
+ // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
+ _______, KC_LSFT, KC_SPC, _______
+ // ╰──────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_SYM] = LAYOUT_split_3x5_2(
+ // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮
+ KC_ESC, KC_LBRC, KC_LCBR, KC_LPRN, KC_TILD, KC_CIRC, KC_RPRN, KC_RCBR, KC_RBRC, KC_GRV,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_MINS, KC_ASTR, KC_EQL, KC_UNDS, KC_DLR, KC_HASH, KC_RGUI, KC_RALT, KC_RCTL, KC_RSFT,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_PLUS, KC_PIPE, KC_AT, KC_SLSH, KC_PERC, _______, KC_BSLS, KC_AMPR, KC_QUES, KC_EXLM,
+ // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
+ _______, KC_LSFT, KC_SPC, _______
+ // ╰──────────────────╯ ╰──────────────────╯
+ ),
+
+ [LAYER_NUM] = LAYOUT_split_3x5_2(
+ // ╭─────────────────────────────────────────────╮ ╭─────────────────────────────────────────────╮
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, KC_F11, KC_F12, KC_RGUI, KC_RALT, KC_RCTL, KC_RSFT,
+ // ├─────────────────────────────────────────────┤ ├─────────────────────────────────────────────┤
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ // ╰─────────────────────────────────────────────┤ ├─────────────────────────────────────────────╯
+ _______, KC_LSFT, KC_SPC, _______
+ // ╰──────────────────╯ ╰──────────────────╯
+ ),
+};
+// clang-format on
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, LAYER_NAV, LAYER_SYM, LAYER_NUM);
+}
diff --git a/keyboards/bastardkb/dilemma/keymaps/drashna/config.h b/keyboards/bastardkb/dilemma/keymaps/drashna/config.h
new file mode 100644
index 0000000000..d7b1351d89
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/keymaps/drashna/config.h
@@ -0,0 +1,8 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define CIRQUE_PINNACLE_TAP_ENABLE
+#define POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE
+#define POINTING_DEVICE_GESTURES_SCROLL_ENABLE
diff --git a/keyboards/bastardkb/dilemma/keymaps/drashna/keymap.c b/keyboards/bastardkb/dilemma/keymaps/drashna/keymap.c
new file mode 100644
index 0000000000..9cd21c3c1f
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/keymaps/drashna/keymap.c
@@ -0,0 +1,160 @@
+/**
+ * Copyright 2022 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 "drashna.h"
+
+// clang-format off
+#define LAYOUT_split_3x5_2_wrapper(...) LAYOUT_split_3x5_2(__VA_ARGS__)
+#define LAYOUT_split_3x5_2_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_split_3x5_2 ( \
+ 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), \
+ KC_SPC, BK_LWER, DL_RAIS, RSFT_T(KC_ENT) \
+ )
+
+#define LAYOUT_split_3x5_2_base_wrapper(...) LAYOUT_split_3x5_2_base(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_DEFAULT_LAYER_1] = LAYOUT_split_3x5_2_base_wrapper(
+ _________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
+ _________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
+ _________________QWERTY_L3_________________, _________________QWERTY_R3_________________
+ ),
+
+ [_DEFAULT_LAYER_2] = LAYOUT_split_3x5_2_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_split_3x5_2_base_wrapper(
+ _________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
+ _________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
+ _________________COLEMAK_L3________________, _________________COLEMAK_R3________________
+ ),
+
+ [_DEFAULT_LAYER_4] = LAYOUT_split_3x5_2_base_wrapper(
+ _________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
+ _________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
+ _________________DVORAK_L3_________________, _________________DVORAK_R3_________________
+ ),
+
+ [_MOUSE] = LAYOUT_split_3x5_2(
+ _______, _______, _______, _______, _______, KC_WH_U, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD,
+ _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6,
+ _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______,
+ SNIPING, _______, _______, _______
+ ),
+ [_LOWER] = LAYOUT_split_3x5_2_wrapper(
+ _________________LOWER_L1__________________, _________________LOWER_R1__________________,
+ _________________LOWER_L2__________________, _________________LOWER_R2__________________,
+ _________________LOWER_L3__________________, _________________LOWER_R3__________________,
+ _______, _______, _______, AUTO_CTN
+ ),
+ [_RAISE] = LAYOUT_split_3x5_2_wrapper(
+ _________________RAISE_L1__________________, _________________RAISE_R1__________________,
+ _________________RAISE_L2__________________, _________________RAISE_R2__________________,
+ _________________RAISE_L3__________________, _________________RAISE_R3__________________,
+ _______, _______, _______, _______
+ ),
+ [_ADJUST] = LAYOUT_split_3x5_2_wrapper(
+ _________________ADJUST_L1_________________, _________________ADJUST_R1_________________,
+ _________________ADJUST_L2_________________, _________________ADJUST_R2_________________,
+ _________________ADJUST_L3_________________, _________________ADJUST_R3_________________,
+ KC_NUKE, _______, _______, QK_BOOT
+ ),
+};
+
+
+void matrix_output_unselect_delay(uint8_t line, bool key_pressed) {
+ for (int32_t i = 0; i < 40; i++) {
+ __asm__ volatile("nop" ::: "memory");
+ }
+}
+
+
+#if defined(OLED_ENABLE) && defined(OLED_DISPLAY_128X128)
+# ifdef UNICODE_COMMON_ENABLE
+# include "process_unicode_common.h"
+# include "keyrecords/unicode.h"
+# endif
+
+extern const char PROGMEM display_border[3];
+
+
+extern uint32_t oled_timer;
+extern bool is_oled_enabled;
+
+
+bool oled_task_keymap(void) {
+ 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
+ };
+ oled_write_raw_P(header_image, sizeof(header_image));
+ oled_set_cursor(7, 0);
+ oled_write_P(PSTR("Rock On"), true);
+
+ render_default_layer_state(1, 1);
+ render_layer_state(1, 2);
+ render_kitty(0, 5);
+ render_wpm(1, 7, 5);
+# if defined(POINTING_DEVICE_ENABLE)
+ render_pointing_dpi_status(dilemma_get_pointer_sniping_enabled() ? dilemma_get_pointer_sniping_dpi() : dilemma_get_pointer_default_dpi(), 1, 7, 6);
+ render_mouse_mode(17, 6);
+# elif defined(WPM_ENABLE) && defined(DEBUG_MATRIX_SCAN_RATE)
+ render_matrix_scan_rate(1, 7, 6);
+# endif
+ render_bootmagic_status(7, 7);
+ render_user_status(1, 9);
+
+ render_mod_status(get_mods() | get_oneshot_mods(), 1, 10);
+ render_keylock_status(host_keyboard_led_state(), 1, 11);
+ render_unicode_mode(1, 12);
+
+// render_rgb_hsv(1, 13);
+ oled_set_cursor(1, 13);
+ // oled_write_P(PSTR("Timer:"), false);
+ // oled_write(get_u8_str((uint8_t)(timer_elapsed32(oled_timer) / 1000), ' '), false);
+ oled_write_P(PSTR("Status: "), false);
+ if (is_oled_enabled) {
+ oled_write_P(PSTR("on "), false);
+ } else {
+ oled_write_P(PSTR("off"), false);
+ }
+
+ render_keylogger_status(1, 14);
+
+ for (uint8_t i = 1; i < 15; 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));
+ }
+
+ 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));
+
+ return false;
+}
+#endif
diff --git a/keyboards/bastardkb/dilemma/keymaps/drashna/rules.mk b/keyboards/bastardkb/dilemma/keymaps/drashna/rules.mk
new file mode 100644
index 0000000000..5f4afb7259
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/keymaps/drashna/rules.mk
@@ -0,0 +1,8 @@
+SWAP_HANDS_ENABLE = no
+AUTOCORRECTION_ENABLE = yes
+CAPS_WORD_ENABLE = yes
+CONSOLE_ENABLE = yes
+KEYLOGGER_ENABLE = no
+WPM_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = custom
diff --git a/keyboards/bastardkb/dilemma/readme.md b/keyboards/bastardkb/dilemma/readme.md
new file mode 100644
index 0000000000..ecd1f9f1c9
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/readme.md
@@ -0,0 +1,14 @@
+# Dilemma
+
+A very small keyboard made for ergonomic enthusiasts.
+
+- Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb/)
+- Hardware Supported: elite-C V4, Splinky
+- Hardware Availability: [Bastardkb.com](https://bastardkb.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make bastardkb/dilemma/elitec:default
+ make bastardkb/dilemma/splinky:default
+
+See the [keyboard build instructions](http://docs.bastardkb.com/)
diff --git a/keyboards/bastardkb/dilemma/rules.mk b/keyboards/bastardkb/dilemma/rules.mk
new file mode 100644
index 0000000000..499eadfdfb
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/rules.mk
@@ -0,0 +1,25 @@
+# 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
+
+AUDIO_SUPPORTED = no # Audio is not supported
+RGB_MATRIX_SUPPORTED = no # RGB matrix is supported and enabled by default
+RGBLIGHT_SUPPORTED = no # RGB underglow is supported, but not enabled by default
+RGB_MATRIX_ENABLE = no # Enable keyboard RGB matrix functionality
+
+POINTING_DEVICE_ENABLE = yes
+POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x5_2
+
+DEFAULT_FOLDER = bastardkb/dilemma/splinky
diff --git a/keyboards/bastardkb/dilemma/splinky/config.h b/keyboards/bastardkb/dilemma/splinky/config.h
new file mode 100644
index 0000000000..80c9e42224
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/splinky/config.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { GP4, GP5, GP28, GP26 }
+#define MATRIX_COL_PINS \
+ { GP8, GP9, GP7, GP6, GP27 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+// To use the handedness pin, resistors need to be installed on the PCB.
+// If so, uncomment the following code, and undefine MASTER_RIGHT above.
+//#define SPLIT_HAND_PIN GP29
+// If you've soldered the handedness pull-up on the upper side instead of the
+// left one, uncomment the following line.
+//#define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left.
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN GP1
+
+/* CRC. */
+#define CRC8_USE_TABLE
+#define CRC8_OPTIMIZE_SPEED
+
+/* Reset. */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
diff --git a/keyboards/bastardkb/dilemma/splinky/halconf.h b/keyboards/bastardkb/dilemma/splinky/halconf.h
new file mode 100644
index 0000000000..a4c25c090a
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/splinky/halconf.h
@@ -0,0 +1,21 @@
+/* Copyright 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/>.
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next "halconf.h"
diff --git a/keyboards/bastardkb/dilemma/splinky/info.json b/keyboards/bastardkb/dilemma/splinky/info.json
new file mode 100644
index 0000000000..07ee320bb9
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/splinky/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Dilemma Splinky",
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/dilemma/splinky/mcuconf.h b/keyboards/bastardkb/dilemma/splinky/mcuconf.h
new file mode 100644
index 0000000000..5e47eac54f
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/splinky/mcuconf.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2022 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_next "mcuconf.h"
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 TRUE
diff --git a/keyboards/bastardkb/dilemma/splinky/rules.mk b/keyboards/bastardkb/dilemma/splinky/rules.mk
new file mode 100644
index 0000000000..9c593c6ed8
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/splinky/rules.mk
@@ -0,0 +1,9 @@
+# MCU name
+MCU = RP2040
+
+# Bootloader selection
+BOOTLOADER = rp2040
+
+# RP2040-specific options
+PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS.
+SERIAL_DRIVER = vendor
diff --git a/keyboards/bastardkb/dilemma/splinky/splinky.c b/keyboards/bastardkb/dilemma/splinky/splinky.c
new file mode 100644
index 0000000000..0100ae06ae
--- /dev/null
+++ b/keyboards/bastardkb/dilemma/splinky/splinky.c
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2022 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 "quantum.h"
+
+// Forward declare RP2040 SDK declaration.
+void gpio_init(uint gpio);
+
+void keyboard_pre_init_kb(void) {
+ // Ensures that GP26 through GP29 are initialized as digital inputs (as
+ // opposed to analog inputs). These GPIOs are shared with A0 through A3,
+ // respectively. On RP2040-B2 and later, the digital inputs are disabled by
+ // default (see RP2040-E6).
+ gpio_init(GP26);
+ gpio_init(GP27);
+ gpio_init(GP28);
+ gpio_init(GP29);
+ keyboard_pre_init_user();
+}
diff --git a/keyboards/bastardkb/info.json b/keyboards/bastardkb/info.json
new file mode 100644
index 0000000000..2791a78b77
--- /dev/null
+++ b/keyboards/bastardkb/info.json
@@ -0,0 +1,8 @@
+{
+ "url": "https://bastardkb.com",
+ "manufacturer": "Bastard Keyboards",
+ "maintainer": "Quentin Lebastard",
+ "usb": {
+ "vid": "0xA8F8",
+ },
+}
diff --git a/keyboards/bastardkb/scylla/blackpill/config.h b/keyboards/bastardkb/scylla/blackpill/config.h
new file mode 100644
index 0000000000..773ee947d7
--- /dev/null
+++ b/keyboards/bastardkb/scylla/blackpill/config.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+ * Copyright 2021 Stefan Kerkmann (@KarlK90)
+ * Copyright 2022 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/>.
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { B15, A2, B8, A8, B9 }
+#define MATRIX_COL_PINS \
+ { B0, B1, B10, B3, B4, B5 }
+
+/* Handedness. */
+#define SPLIT_HAND_PIN A3 // High -> left, Low -> right.
+
+/* RGB settings. */
+#define RGB_DI_PIN A1
+#define WS2812_PWM_DRIVER PWMD2
+#define WS2812_PWM_CHANNEL 2
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_EXTERNAL_PULLUP
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM1
+#define WS2812_DMA_CHANNEL 3
+#define WS2812_PWM_TARGET_PERIOD 800000
+
+/* Serial configuration for split keyboard. */
+#define SERIAL_USART_TX_PIN A9
+
+/* CRC. */
+#define CRC8_USE_TABLE
+#define CRC8_OPTIMIZE_SPEED
+
+/* SPI config for EEPROM. */
+#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
diff --git a/keyboards/bastardkb/scylla/blackpill/halconf.h b/keyboards/bastardkb/scylla/blackpill/halconf.h
new file mode 100644
index 0000000000..0d4b7b5dc5
--- /dev/null
+++ b/keyboards/bastardkb/scylla/blackpill/halconf.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2020 Nick Brassel (tzarc)
+ * Copyright 2022 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 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/scylla/blackpill/info.json b/keyboards/bastardkb/scylla/blackpill/info.json
new file mode 100644
index 0000000000..587cc2bc04
--- /dev/null
+++ b/keyboards/bastardkb/scylla/blackpill/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Scylla Blackpill",
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/scylla/blackpill/mcuconf.h b/keyboards/bastardkb/scylla/blackpill/mcuconf.h
new file mode 100644
index 0000000000..e7cf3681fd
--- /dev/null
+++ b/keyboards/bastardkb/scylla/blackpill/mcuconf.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2020 Nick Brassel (tzarc)
+ * Copyright 2021 Stefan Kerkmann (@KarlK90)
+ * Copyright 2022 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_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 FALSE
+
+//#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_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
+
+//#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_TIM3
+#define STM32_GPT_USE_TIM3 TRUE
+
+#undef STM32_ST_USE_TIMER
+#define STM32_ST_USE_TIMER 5
diff --git a/keyboards/bastardkb/scylla/blackpill/rules.mk b/keyboards/bastardkb/scylla/blackpill/rules.mk
new file mode 100644
index 0000000000..cf2041ea1c
--- /dev/null
+++ b/keyboards/bastardkb/scylla/blackpill/rules.mk
@@ -0,0 +1,36 @@
+# MCU name
+MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
+
+# 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 = 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 # RGB matrix driver support
+
+SPLIT_KEYBOARD = yes
+
+MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint
+KEYBOARD_SHARED_EP = yes
+
+EEPROM_DRIVER = spi
+WS2812_DRIVER = pwm
+SERIAL_DRIVER = usart
+
+DEBOUNCE_TYPE = asym_eager_defer_pk
diff --git a/keyboards/bastardkb/scylla/config.h b/keyboards/bastardkb/scylla/config.h
index d876b5d018..777f99197a 100644
--- a/keyboards/bastardkb/scylla/config.h
+++ b/keyboards/bastardkb/scylla/config.h
@@ -1,5 +1,6 @@
/*
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2022 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
@@ -16,90 +17,30 @@
*/
#pragma once
+
#include "config_common.h"
-#define VENDOR_ID 0xA8F8
-#define PRODUCT_ID 0x1829
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Bastard Keyboards
-#define PRODUCT Scylla
-#define MATRIX_ROWS 10
+/* Key matrix configuration. */
+#define MATRIX_ROWS 10 // Rows are doubled-up.
#define MATRIX_COLS 6
+
#define DIODE_DIRECTION ROW2COL
-#define MATRIX_ROW_PINS { D7, B5, F7, F6, B6 }
-#define MATRIX_COL_PINS { B4, E6, C6, B1, B3, B2 }
-#define RGB_DI_PIN D2
-#define RGBLED_NUM 58
-#define RGBLED_SPLIT { 29, 29 }
-#define RGBLIGHT_LIMIT_VAL 120
-#define RGBLIGHT_ANIMATIONS
+/* Set 0 if debouncing isn't needed. */
#define DEBOUNCE 5
-#define SOFT_SERIAL_PIN D0
-#define MASTER_RIGHT
-#ifdef RGBLIGHT_ENABLE
-# define RGBLED_NUM 58
-# define RGBLED_SPLIT { 29, 29 }
-# define RGBLIGHT_LIMIT_VAL 50
-# define RGBLIGHT_ANIMATIONS
-#endif
+/* RGB settings. */
+#define RGBLED_NUM 58
+#define RGBLED_SPLIT \
+ { 29, 29 }
-// RGB matrix support
+/* RGB matrix support. */
#ifdef RGB_MATRIX_ENABLE
# define SPLIT_TRANSPORT_MIRROR
-# define DRIVER_LED_TOTAL 58 // Number of LEDs
-# define RGB_MATRIX_SPLIT { 29, 29 }
+# 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
-// 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
diff --git a/keyboards/bastardkb/scylla/info.json b/keyboards/bastardkb/scylla/info.json
index 104932e471..026b0f742e 100644
--- a/keyboards/bastardkb/scylla/info.json
+++ b/keyboards/bastardkb/scylla/info.json
@@ -1,7 +1,8 @@
{
- "keyboard_name": "The Bastard Keyboard",
- "url": "https://bastardkb.com/",
- "maintainer": "Quentin Lebastard",
+ "url": "https://bastardkb.com/scylla",
+ "usb": {
+ "pid": "0x1829",
+ },
"layouts": {
"LAYOUT_split_4x6_5": {
"layout": [
diff --git a/keyboards/bastardkb/scylla/keymaps/default/keymap.c b/keyboards/bastardkb/scylla/keymaps/default/keymap.c
index fe9a834fa2..85781f6631 100644
--- a/keyboards/bastardkb/scylla/keymaps/default/keymap.c
+++ b/keyboards/bastardkb/scylla/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
@@ -19,42 +19,33 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_split_4x6_5(
- 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_BSLS,
-//-------------------------------------------------//-----------------------------------------------------------//
- KC_LCTL, KC_SPC, MO(1), MO(2), KC_ENT, KC_RGUI,
- KC_HOME, KC_BSPC, KC_DEL, KC_RALT
- ),
+ [0] = LAYOUT_split_4x6_5(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_BSLS,
+ //-------------------------------------------------//-----------------------------------------------------------//
+ KC_LCTL, KC_SPC, MO(1), MO(2), KC_ENT, KC_RGUI, KC_HOME, KC_BSPC, KC_DEL, KC_RALT),
- [1] = LAYOUT_split_4x6_5(
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
-//---------------------------------------------------------//-----------------------------------------------------------//
- QK_BOOT, _______, _______, _______, _______, 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_LCTL, KC_HOME, KC_TRNS, KC_TRNS, KC_RALT, KC_RGUI,
- KC_SPC, KC_BSPC, KC_RCTL, KC_ENT
- ),
+ [1] = LAYOUT_split_4x6_5(KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ //---------------------------------------------------------//-----------------------------------------------------------//
+ QK_BOOT, _______, _______, _______, _______, 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_LCTL, KC_HOME, KC_TRNS, KC_TRNS, KC_RALT, KC_RGUI, KC_SPC, KC_BSPC, KC_RCTL, KC_ENT),
- [2] = LAYOUT_split_4x6_5(
- KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
-//---------------------------------------------------------//--------------------------------------------------------------//
- _______, _______, RGB_RMOD, RGB_TOG, RGB_MOD, 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_LCTL, KC_HOME, KC_TRNS, KC_TRNS, KC_RALT, QK_BOOT,
- KC_SPC, KC_BSPC, KC_RCTL, KC_ENT
- ),
+ [2] = LAYOUT_split_4x6_5(KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ //---------------------------------------------------------//--------------------------------------------------------------//
+ _______, _______, RGB_RMOD, RGB_TOG, RGB_MOD, 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_LCTL, KC_HOME, KC_TRNS, KC_TRNS, KC_RALT, QK_BOOT, KC_SPC, KC_BSPC, KC_RCTL, KC_ENT),
};
diff --git a/keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c b/keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c
index 94dd182c69..f4f8cfd1da 100644
--- a/keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c
+++ b/keyboards/bastardkb/scylla/keymaps/german_gaming/keymap.c
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_PLUS, KC_PIPE, KC_UNDS, _______, _______, KC_P0 , KC_P1 , KC_P2 , KC_P3 , KC_PENT, KC_KP_EQUAL,
_______, KC_RGHT, _______, _______, _______, _______,
- KC_LEFT, _______, RESET , _______
+ KC_LEFT, _______, QK_BOOT, _______
),
[_RAISE] = LAYOUT_split_4x6_5(
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_split_4x6_5(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, RESET , _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, DF(_GAME), _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, DF(_BASE), _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h b/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h
index 09433f3f40..5a3153ae37 100644
--- a/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/bastardkb/scylla/keymaps/xyverz/keymap.c b/keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c
index b8f70bdc9b..b1f45951b7 100644
--- a/keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c
+++ b/keyboards/bastardkb/scylla/keymaps/xyverz/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT_split_4x6_5(
KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
- RESET, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
+ QK_BOOT, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_PGUP, _______, KC_PLUS, KC_LCBR, KC_RCBR, _______,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, KC_DEL, _______, _______, _______, _______,
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_RAISE] = LAYOUT_split_4x6_5(
KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
- _______, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, RESET,
+ _______, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, QK_BOOT,
KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_PGUP, _______, KC_EQL, KC_LBRC, KC_RBRC, _______,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, KC_DEL, _______, _______, _______, _______,
@@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_split_4x6_5(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, WINDOWS, MAC, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
diff --git a/keyboards/bastardkb/scylla/readme.md b/keyboards/bastardkb/scylla/readme.md
index 70df5cfbb9..5a83083b96 100644
--- a/keyboards/bastardkb/scylla/readme.md
+++ b/keyboards/bastardkb/scylla/readme.md
@@ -17,6 +17,6 @@ See the [keyboard build instructions](https://docs.bastardkb.com)
## Important information regarding the reset
-If you modify this firmware, make sure to always have a RESET key that can be triggered using only the master side ! This way you ensure that you can always flash the keyboard, even if you mess up.
+If you modify this firmware, make sure to always have a `QK_BOOT` key that can be triggered using only the master side ! This way you ensure that you can always flash the keyboard, even if you mess up.
Otherwise if you're stuck, open the case and reset manually by shorting Gnd and Rst, or pressing the RST button.
diff --git a/keyboards/bastardkb/scylla/rules.mk b/keyboards/bastardkb/scylla/rules.mk
deleted file mode 100644
index fe2991040d..0000000000
--- a/keyboards/bastardkb/scylla/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 = yes # 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
-RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE)
-RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
-AUDIO_ENABLE = no # Audio output
-SPLIT_KEYBOARD = yes
-LTO_ENABLE = yes
diff --git a/keyboards/bastardkb/scylla/scylla.h b/keyboards/bastardkb/scylla/scylla.h
index 196982952f..4039ad3a94 100644
--- a/keyboards/bastardkb/scylla/scylla.h
+++ b/keyboards/bastardkb/scylla/scylla.h
@@ -1,5 +1,6 @@
-/*
+/*
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2022 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
@@ -15,28 +16,29 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
#pragma once
+
#include "quantum.h"
-// SWITCHED 91 and 95 - check on left ?
-#define LAYOUT_split_4x6_5( \
- 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, k94, k93, \
- k45, k42, k92, 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, k92, k93, k94, k95 }, \
+// clang-format off
+#define LAYOUT_split_4x6_5( \
+ 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, k94, k93, \
+ k45, k42, k92, 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, k92, k93, k94, k95 }, \
}
+// clang-format on
diff --git a/keyboards/bastardkb/scylla/v1/elitec/config.h b/keyboards/bastardkb/scylla/v1/elitec/config.h
new file mode 100644
index 0000000000..0990e6d068
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v1/elitec/config.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { D7, B5, F7, F6, B6 }
+#define MATRIX_COL_PINS \
+ { B4, E6, C6, B1, B3, B2 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN D0
+
+/* RGB settings. */
+#define RGB_DI_PIN D2
diff --git a/keyboards/bastardkb/scylla/v1/elitec/info.json b/keyboards/bastardkb/scylla/v1/elitec/info.json
new file mode 100644
index 0000000000..57b36e1e2a
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v1/elitec/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Scylla Elite-C",
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/scylla/v1/elitec/rules.mk b/keyboards/bastardkb/scylla/v1/elitec/rules.mk
new file mode 100644
index 0000000000..0c131a2eaf
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v1/elitec/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 = 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 (do not use together with RGBLIGHT_ENABLE)
+RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
+
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/bastardkb/scylla/v2/elitec/config.h b/keyboards/bastardkb/scylla/v2/elitec/config.h
new file mode 100644
index 0000000000..698f6e426f
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/elitec/config.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { F4, F7, C6, D4, B5 }
+#define MATRIX_COL_PINS \
+ { F6, F5, B6, D7, E6, B4 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN D2
+
+/* RGB settings. */
+#define RGB_DI_PIN D3
diff --git a/keyboards/bastardkb/scylla/v2/elitec/info.json b/keyboards/bastardkb/scylla/v2/elitec/info.json
new file mode 100644
index 0000000000..213bb9a79c
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/elitec/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Scylla Elite-C",
+ "usb": {
+ "device_version": "2.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/scylla/v2/elitec/rules.mk b/keyboards/bastardkb/scylla/v2/elitec/rules.mk
new file mode 100644
index 0000000000..0c131a2eaf
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/elitec/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 = 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 (do not use together with RGBLIGHT_ENABLE)
+RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
+
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/bastardkb/scylla/v2/splinky/config.h b/keyboards/bastardkb/scylla/v2/splinky/config.h
new file mode 100644
index 0000000000..5f678fb331
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/splinky/config.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { GP29, GP26, GP5, GP4, GP9 }
+#define MATRIX_COL_PINS \
+ { GP27, GP28, GP15, GP6, GP7, GP8 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+// To use the handedness pin, resistors need to be installed on the adapter PCB.
+// If so, uncomment the following code, and undefine MASTER_RIGHT above.
+// #define SPLIT_HAND_PIN GP13
+// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left.
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN GP1
+
+/* RGB settings. */
+#define RGB_DI_PIN GP0
+
+/* Reset. */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
diff --git a/keyboards/bastardkb/scylla/v2/splinky/info.json b/keyboards/bastardkb/scylla/v2/splinky/info.json
new file mode 100644
index 0000000000..614e22eefa
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/splinky/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Scylla Splinky",
+ "usb": {
+ "device_version": "2.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/scylla/v2/splinky/rules.mk b/keyboards/bastardkb/scylla/v2/splinky/rules.mk
new file mode 100644
index 0000000000..8dfc0256ab
--- /dev/null
+++ b/keyboards/bastardkb/scylla/v2/splinky/rules.mk
@@ -0,0 +1,33 @@
+# MCU name
+MCU = RP2040
+
+# Bootloader selection
+BOOTLOADER = rp2040
+
+# RP2040-specific options
+ALLOW_WARNINGS = yes
+PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS.
+
+# 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
+
+SPLIT_KEYBOARD = yes
+
+SERIAL_DRIVER = vendor
+WS2812_DRIVER = vendor
diff --git a/keyboards/bastardkb/skeletyl/blackpill/config.h b/keyboards/bastardkb/skeletyl/blackpill/config.h
new file mode 100644
index 0000000000..cbff281ddc
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/blackpill/config.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+ * Copyright 2021 Stefan Kerkmann (@KarlK90)
+ * Copyright 2022 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/>.
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { A2, B8, A8, B9 }
+#define MATRIX_COL_PINS \
+ { B1, B10, B3, B4, B5 }
+
+/* Handedness. */
+#define SPLIT_HAND_PIN A3 // High -> left, Low -> right.
+
+/* RGB settings. */
+#define RGB_DI_PIN A1
+#define WS2812_PWM_DRIVER PWMD2
+#define WS2812_PWM_CHANNEL 2
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_EXTERNAL_PULLUP
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM1
+#define WS2812_DMA_CHANNEL 3
+#define WS2812_PWM_TARGET_PERIOD 800000
+
+/* Serial configuration for split keyboard. */
+#define SERIAL_USART_TX_PIN A9
+
+/* CRC. */
+#define CRC8_USE_TABLE
+#define CRC8_OPTIMIZE_SPEED
+
+/* SPI config for EEPROM. */
+#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
diff --git a/keyboards/bastardkb/skeletyl/blackpill/halconf.h b/keyboards/bastardkb/skeletyl/blackpill/halconf.h
new file mode 100644
index 0000000000..0d4b7b5dc5
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/blackpill/halconf.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2020 Nick Brassel (tzarc)
+ * Copyright 2022 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 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/skeletyl/blackpill/info.json b/keyboards/bastardkb/skeletyl/blackpill/info.json
new file mode 100644
index 0000000000..16106f2f82
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/blackpill/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Skeletyl Blackpill",
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/skeletyl/blackpill/mcuconf.h b/keyboards/bastardkb/skeletyl/blackpill/mcuconf.h
new file mode 100644
index 0000000000..e7cf3681fd
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/blackpill/mcuconf.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2020 Nick Brassel (tzarc)
+ * Copyright 2021 Stefan Kerkmann (@KarlK90)
+ * Copyright 2022 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_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 FALSE
+
+//#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_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
+
+//#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_TIM3
+#define STM32_GPT_USE_TIM3 TRUE
+
+#undef STM32_ST_USE_TIMER
+#define STM32_ST_USE_TIMER 5
diff --git a/keyboards/bastardkb/skeletyl/blackpill/rules.mk b/keyboards/bastardkb/skeletyl/blackpill/rules.mk
new file mode 100644
index 0000000000..4ecd8c6924
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/blackpill/rules.mk
@@ -0,0 +1,37 @@
+# MCU name
+MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
+
+# 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 = 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 # RGB matrix driver support
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x5_3
+
+MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint
+KEYBOARD_SHARED_EP = yes
+
+EEPROM_DRIVER = spi
+WS2812_DRIVER = pwm
+SERIAL_DRIVER = usart
+
+DEBOUNCE_TYPE = asym_eager_defer_pk
diff --git a/keyboards/bastardkb/skeletyl/config.h b/keyboards/bastardkb/skeletyl/config.h
index fae8e2ec03..8494e2bfac 100644
--- a/keyboards/bastardkb/skeletyl/config.h
+++ b/keyboards/bastardkb/skeletyl/config.h
@@ -1,5 +1,6 @@
/*
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2022 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
@@ -16,87 +17,30 @@
*/
#pragma once
+
#include "config_common.h"
-#define VENDOR_ID 0xA8F8
-#define PRODUCT_ID 0x1830
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Bastard Keyboards
-#define PRODUCT Skeletyl
-#define MATRIX_ROWS 8
+/* Key matrix configuration. */
+#define MATRIX_ROWS 8 // Rows are doubled-up.
#define MATRIX_COLS 5
-#define RGBLIGHT_LIMIT_VAL 180
-#define MATRIX_ROW_PINS { B5, F7, F6, B6 }
-#define MATRIX_COL_PINS { E6, C6, B1, B3, B2 }
#define DIODE_DIRECTION ROW2COL
-#define RGB_DI_PIN D2
-#define RGBLED_NUM 36
-#define RGBLED_SPLIT { 18, 18 }
-#define RGBLIGHT_ANIMATIONS
-
+/* Set 0 if debouncing isn't needed. */
#define DEBOUNCE 5
-#define SOFT_SERIAL_PIN D0
-
-#define MASTER_RIGHT
+/* RGB settings. */
+#define RGBLED_NUM 36
+#define RGBLED_SPLIT \
+ { 18, 18 }
-// RGB matrix support
+/* RGB matrix support. */
#ifdef RGB_MATRIX_ENABLE
# define SPLIT_TRANSPORT_MIRROR
-# define DRIVER_LED_TOTAL 36 // Number of LEDs
-# define RGB_MATRIX_SPLIT { 18, 18 }
+# 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
-// 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
diff --git a/keyboards/bastardkb/skeletyl/info.json b/keyboards/bastardkb/skeletyl/info.json
index 54c14da330..55f68dc9b2 100644
--- a/keyboards/bastardkb/skeletyl/info.json
+++ b/keyboards/bastardkb/skeletyl/info.json
@@ -1,7 +1,8 @@
{
- "keyboard_name": "Skeletyl",
- "url": "https://www.bastardkb.com",
- "maintainer": "Quentin Lebastard",
+ "url": "https://www.bastardkb.com/skeletyl",
+ "usb": {
+ "pid": "0x1830",
+ },
"layouts": {
"LAYOUT_split_3x5_3": {
"layout": [
diff --git a/keyboards/bastardkb/skeletyl/rules.mk b/keyboards/bastardkb/skeletyl/rules.mk
deleted file mode 100644
index 808b59c93d..0000000000
--- a/keyboards/bastardkb/skeletyl/rules.mk
+++ /dev/null
@@ -1,28 +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
-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)
-RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
-AUDIO_ENABLE = no # Audio output
-SPLIT_KEYBOARD = yes
-LTO_ENABLE = yes
-
-AUDIO_SUPPORTED = no
-RGB_MATRIX_SUPPORTED = yes
-RGBLIGHT_SUPPORTED = yes
-
-LAYOUTS = split_3x5_3
diff --git a/keyboards/bastardkb/skeletyl/skeletyl.h b/keyboards/bastardkb/skeletyl/skeletyl.h
index c7ad89bd2b..6d8073153f 100644
--- a/keyboards/bastardkb/skeletyl/skeletyl.h
+++ b/keyboards/bastardkb/skeletyl/skeletyl.h
@@ -1,5 +1,6 @@
/*
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2022 Charly DELAY <charly@codesink.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
@@ -16,6 +17,7 @@
*/
#pragma once
+
#include "quantum.h"
// clang-format off
diff --git a/keyboards/bastardkb/skeletyl/v1/elitec/config.h b/keyboards/bastardkb/skeletyl/v1/elitec/config.h
new file mode 100644
index 0000000000..fd2101ec55
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v1/elitec/config.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { B5, F7, F6, B6 }
+#define MATRIX_COL_PINS \
+ { E6, C6, B1, B3, B2 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN D0
+
+/* RGB settings. */
+#define RGB_DI_PIN D2
diff --git a/keyboards/bastardkb/skeletyl/v1/elitec/info.json b/keyboards/bastardkb/skeletyl/v1/elitec/info.json
new file mode 100644
index 0000000000..f784c9423d
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v1/elitec/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Skeletyl Elite-C",
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/skeletyl/v1/elitec/rules.mk b/keyboards/bastardkb/skeletyl/v1/elitec/rules.mk
new file mode 100644
index 0000000000..399e03a2a5
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v1/elitec/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 = 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 (do not use together with RGBLIGHT_ENABLE)
+RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x5_3
diff --git a/keyboards/bastardkb/skeletyl/v1/info.json b/keyboards/bastardkb/skeletyl/v1/info.json
new file mode 100644
index 0000000000..2443086ddf
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/skeletyl/v2/elitec/config.h b/keyboards/bastardkb/skeletyl/v2/elitec/config.h
new file mode 100644
index 0000000000..5d4e48d49d
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/elitec/config.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { F7, C6, D4, B5 }
+#define MATRIX_COL_PINS \
+ { F5, B6, D7, E6, B4 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN D2
+
+/* RGB settings. */
+#define RGB_DI_PIN D3
diff --git a/keyboards/bastardkb/skeletyl/v2/elitec/info.json b/keyboards/bastardkb/skeletyl/v2/elitec/info.json
new file mode 100644
index 0000000000..0b50c1faa1
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/elitec/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Skeletyl Elite-C",
+ "usb": {
+ "device_version": "2.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/skeletyl/v2/elitec/rules.mk b/keyboards/bastardkb/skeletyl/v2/elitec/rules.mk
new file mode 100644
index 0000000000..399e03a2a5
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/elitec/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 = 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 (do not use together with RGBLIGHT_ENABLE)
+RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x5_3
diff --git a/keyboards/bastardkb/skeletyl/v2/splinky/config.h b/keyboards/bastardkb/skeletyl/v2/splinky/config.h
new file mode 100644
index 0000000000..02a8bd6551
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/splinky/config.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { GP26, GP5, GP4, GP9 }
+#define MATRIX_COL_PINS \
+ { GP28, GP15, GP6, GP7, GP8 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+// To use the handedness pin, resistors need to be installed on the adapter PCB.
+// If so, uncomment the following code, and undefine MASTER_RIGHT above.
+// #define SPLIT_HAND_PIN GP13
+// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left.
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN GP1
+
+/* RGB settings. */
+#define RGB_DI_PIN GP0
+
+/* Reset. */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
diff --git a/keyboards/bastardkb/skeletyl/v2/splinky/info.json b/keyboards/bastardkb/skeletyl/v2/splinky/info.json
new file mode 100644
index 0000000000..b90334c78d
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/splinky/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Skeletyl Splinky",
+ "usb": {
+ "device_version": "2.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/skeletyl/v2/splinky/rules.mk b/keyboards/bastardkb/skeletyl/v2/splinky/rules.mk
new file mode 100644
index 0000000000..1ce16352dd
--- /dev/null
+++ b/keyboards/bastardkb/skeletyl/v2/splinky/rules.mk
@@ -0,0 +1,34 @@
+# MCU name
+MCU = RP2040
+
+# Bootloader selection
+BOOTLOADER = rp2040
+
+# RP2040-specific options
+ALLOW_WARNINGS = yes
+PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS.
+
+# 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
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x5_3
+
+SERIAL_DRIVER = vendor
+WS2812_DRIVER = vendor
diff --git a/keyboards/bastardkb/tbk/config.h b/keyboards/bastardkb/tbk/config.h
index f6e3ebef7b..9ce37939b5 100644
--- a/keyboards/bastardkb/tbk/config.h
+++ b/keyboards/bastardkb/tbk/config.h
@@ -17,11 +17,6 @@
#pragma once
#include "config_common.h"
-#define VENDOR_ID 0xA8F8
-#define PRODUCT_ID 0x1828
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Bastard Keyboards
-#define PRODUCT The Bastard Keyboard
#define MATRIX_ROWS 10
#define MATRIX_COLS 6
diff --git a/keyboards/bastardkb/tbk/info.json b/keyboards/bastardkb/tbk/info.json
index 104932e471..d25ccd5cf6 100644
--- a/keyboards/bastardkb/tbk/info.json
+++ b/keyboards/bastardkb/tbk/info.json
@@ -1,7 +1,10 @@
{
"keyboard_name": "The Bastard Keyboard",
"url": "https://bastardkb.com/",
- "maintainer": "Quentin Lebastard",
+ "usb": {
+ "pid": "0x1828",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_4x6_5": {
"layout": [
diff --git a/keyboards/bastardkb/tbk/keymaps/german_gaming/keymap.c b/keyboards/bastardkb/tbk/keymaps/german_gaming/keymap.c
index 94dd182c69..f4f8cfd1da 100644
--- a/keyboards/bastardkb/tbk/keymaps/german_gaming/keymap.c
+++ b/keyboards/bastardkb/tbk/keymaps/german_gaming/keymap.c
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_PLUS, KC_PIPE, KC_UNDS, _______, _______, KC_P0 , KC_P1 , KC_P2 , KC_P3 , KC_PENT, KC_KP_EQUAL,
_______, KC_RGHT, _______, _______, _______, _______,
- KC_LEFT, _______, RESET , _______
+ KC_LEFT, _______, QK_BOOT, _______
),
[_RAISE] = LAYOUT_split_4x6_5(
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_split_4x6_5(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, RESET , _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, DF(_GAME), _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, DF(_BASE), _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/bastardkb/tbk/keymaps/xyverz/keymap.c b/keyboards/bastardkb/tbk/keymaps/xyverz/keymap.c
index b8f70bdc9b..b1f45951b7 100644
--- a/keyboards/bastardkb/tbk/keymaps/xyverz/keymap.c
+++ b/keyboards/bastardkb/tbk/keymaps/xyverz/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT_split_4x6_5(
KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
- RESET, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
+ QK_BOOT, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_PGUP, _______, KC_PLUS, KC_LCBR, KC_RCBR, _______,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, KC_DEL, _______, _______, _______, _______,
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_RAISE] = LAYOUT_split_4x6_5(
KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
- _______, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, RESET,
+ _______, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, QK_BOOT,
KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_PGUP, _______, KC_EQL, KC_LBRC, KC_RBRC, _______,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, KC_DEL, _______, _______, _______, _______,
@@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_split_4x6_5(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, WINDOWS, MAC, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
diff --git a/keyboards/bastardkb/tbk/readme.md b/keyboards/bastardkb/tbk/readme.md
index 9359e6ad9c..0d552e5caf 100644
--- a/keyboards/bastardkb/tbk/readme.md
+++ b/keyboards/bastardkb/tbk/readme.md
@@ -17,6 +17,6 @@ See the [keyboard build instructions](https://docs.bastardkb.com)
## Important information regarding the reset
-If you modify this firmware, make sure to always have a RESET key that can be triggered using only the master side ! This way you ensure that you can always flash the keyboard, even if you mess up.
+If you modify this firmware, make sure to always have a QK_BOOT key that can be triggered using only the master side ! This way you ensure that you can always flash the keyboard, even if you mess up.
Otherwise if you're stuck, open the case and reset manually by shorting Gnd and Rst, or pressing the RST button.
diff --git a/keyboards/bastardkb/tbkmini/blackpill/config.h b/keyboards/bastardkb/tbkmini/blackpill/config.h
new file mode 100644
index 0000000000..ba0c93ff93
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/blackpill/config.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
+ * Copyright 2021 Stefan Kerkmann (@KarlK90)
+ * Copyright 2022 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/>.
+ */
+
+#pragma once
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { A2, B8, A8, B9 }
+#define MATRIX_COL_PINS \
+ { B0, B1, B10, B3, B4, B5 }
+
+/* Handedness. */
+#define SPLIT_HAND_PIN A3 // High -> left, Low -> right.
+
+/* RGB settings. */
+#define RGB_DI_PIN A1
+#define WS2812_PWM_DRIVER PWMD2
+#define WS2812_PWM_CHANNEL 2
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_EXTERNAL_PULLUP
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM1
+#define WS2812_DMA_CHANNEL 3
+#define WS2812_PWM_TARGET_PERIOD 800000
+
+/* Serial configuration for split keyboard. */
+#define SERIAL_USART_TX_PIN A9
+
+/* CRC. */
+#define CRC8_USE_TABLE
+#define CRC8_OPTIMIZE_SPEED
+
+/* SPI config for EEPROM. */
+#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
diff --git a/keyboards/bastardkb/tbkmini/blackpill/halconf.h b/keyboards/bastardkb/tbkmini/blackpill/halconf.h
new file mode 100644
index 0000000000..0d4b7b5dc5
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/blackpill/halconf.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2020 Nick Brassel (tzarc)
+ * Copyright 2022 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 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/tbkmini/blackpill/info.json b/keyboards/bastardkb/tbkmini/blackpill/info.json
new file mode 100644
index 0000000000..d4f15e44f1
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/blackpill/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "TBK Mini Blackpill",
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/tbkmini/blackpill/mcuconf.h b/keyboards/bastardkb/tbkmini/blackpill/mcuconf.h
new file mode 100644
index 0000000000..e7cf3681fd
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/blackpill/mcuconf.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2020 Nick Brassel (tzarc)
+ * Copyright 2021 Stefan Kerkmann (@KarlK90)
+ * Copyright 2022 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_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 FALSE
+
+//#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_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
+
+//#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_TIM3
+#define STM32_GPT_USE_TIM3 TRUE
+
+#undef STM32_ST_USE_TIMER
+#define STM32_ST_USE_TIMER 5
diff --git a/keyboards/bastardkb/tbkmini/blackpill/rules.mk b/keyboards/bastardkb/tbkmini/blackpill/rules.mk
new file mode 100644
index 0000000000..702ed34356
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/blackpill/rules.mk
@@ -0,0 +1,37 @@
+# MCU name
+MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
+
+# 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 = 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 # RGB matrix driver support
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x6_3
+
+MOUSE_SHARED_EP = no # Unify multiple HID interfaces into a single Endpoint
+KEYBOARD_SHARED_EP = yes
+
+EEPROM_DRIVER = spi
+WS2812_DRIVER = pwm
+SERIAL_DRIVER = usart
+
+DEBOUNCE_TYPE = asym_eager_defer_pk
diff --git a/keyboards/bastardkb/tbkmini/config.h b/keyboards/bastardkb/tbkmini/config.h
index 094544de9a..0624c4b4a6 100644
--- a/keyboards/bastardkb/tbkmini/config.h
+++ b/keyboards/bastardkb/tbkmini/config.h
@@ -1,5 +1,6 @@
/*
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2022 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
@@ -16,90 +17,30 @@
*/
#pragma once
+
#include "config_common.h"
-#define VENDOR_ID 0xA8F8
-#define PRODUCT_ID 0x1828
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Bastard Keyboards
-#define PRODUCT TBK Mini
-#define MATRIX_ROWS 8
+/* Key matrix configuration. */
+#define MATRIX_ROWS 8 // Rows are doubled-up.
#define MATRIX_COLS 6
-#define RGBLIGHT_LIMIT_VAL 180
-#define MATRIX_ROW_PINS { B5, F7, F6, B6 }
-#define MATRIX_COL_PINS { B4, E6, C6, B1, B3, B2 }
#define DIODE_DIRECTION ROW2COL
-#define RGB_DI_PIN D2
-#define RGBLED_NUM 42
-#define RGBLED_SPLIT { 21, 21 }
-#define RGBLIGHT_ANIMATIONS
-
+/* Set 0 if debouncing isn't needed. */
#define DEBOUNCE 5
-#define SOFT_SERIAL_PIN D0
-
-#define LOCKING_SUPPORT_ENABLE
-#define LOCKING_RESYNC_ENABLE
-#define F_SCL 400000L
-#define MASTER_RIGHT
+/* RGB settings. */
+#define RGBLED_NUM 42
+#define RGBLED_SPLIT \
+ { 21, 21 }
-// RGB matrix support
+/* RGB matrix support. */
#ifdef RGB_MATRIX_ENABLE
# define SPLIT_TRANSPORT_MIRROR
-# define DRIVER_LED_TOTAL 42 // Number of LEDs
-# define RGB_MATRIX_SPLIT { 21, 21 }
+# 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
-// 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
diff --git a/keyboards/bastardkb/tbkmini/info.json b/keyboards/bastardkb/tbkmini/info.json
index d7fddeb7e6..4233599432 100644
--- a/keyboards/bastardkb/tbkmini/info.json
+++ b/keyboards/bastardkb/tbkmini/info.json
@@ -1,7 +1,8 @@
{
- "keyboard_name": "TBK Mini",
- "url": "https://www.bastardkb.com",
- "maintainer": "Quentin Lebastard",
+ "url": "https://www.bastardkb.com/tbk-mini",
+ "usb": {
+ "pid": "0x1828",
+ },
"layouts": {
"LAYOUT_split_3x6_3": {
"layout": [
diff --git a/keyboards/bastardkb/tbkmini/keymaps/default/keymap.c b/keyboards/bastardkb/tbkmini/keymaps/default/keymap.c
index 3aa41b6fba..551aea127f 100644
--- a/keyboards/bastardkb/tbkmini/keymaps/default/keymap.c
+++ b/keyboards/bastardkb/tbkmini/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
@@ -19,52 +19,51 @@
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, KC_SPC , MO(1), MO(2), KC_ENT , KC_RALT
- //`--------------------------' `--------------------------'
+ [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, KC_SPC, MO(1), MO(2), KC_ENT, 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, _______, MO(3), KC_ENT, 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, _______, MO(3), 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, MO(3), _______, 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, MO(3), _______, KC_ENT, KC_RALT
+ //`--------------------------' `--------------------------'
+ ),
- [3] = LAYOUT_split_3x6_3(
- //,-----------------------------------------------------. ,-----------------------------------------------------.
- QK_BOOT, 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
- //`--------------------------' `--------------------------'
- )
-};
+ [3] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ QK_BOOT, 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/bastardkb/tbkmini/rules.mk b/keyboards/bastardkb/tbkmini/rules.mk
deleted file mode 100644
index 2892f5dd6e..0000000000
--- a/keyboards/bastardkb/tbkmini/rules.mk
+++ /dev/null
@@ -1,29 +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
-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
-RGB_MATRIX_ENABLE = yes # Enable keyboard RGB matrix (do not use together with RGBLIGHT_ENABLE)
-RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
-AUDIO_ENABLE = no # Audio output
-SPLIT_KEYBOARD = yes
-LTO_ENABLE = yes
-
-AUDIO_SUPPORTED = no
-RGB_MATRIX_SUPPORTED = yes
-RGBLIGHT_SUPPORTED = yes
-
-LAYOUTS = split_3x6_3
diff --git a/keyboards/bastardkb/tbkmini/tbkmini.h b/keyboards/bastardkb/tbkmini/tbkmini.h
index 66235f4f4d..f031c9fed2 100644
--- a/keyboards/bastardkb/tbkmini/tbkmini.h
+++ b/keyboards/bastardkb/tbkmini/tbkmini.h
@@ -1,5 +1,6 @@
-/*
+/*
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2022 Charly DELAY <charly@codesink.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
@@ -15,23 +16,25 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
#pragma once
+
#include "quantum.h"
-#define LAYOUT_split_3x6_3( \
- k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
- k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
- k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
- k33, k34, k31, k71, k74, k73 \
-)\
-{\
- { k00, k01, k02, k03, k04, k05 }, \
- { k10, k11, k12, k13, k14, k15 }, \
- { k20, k21, k22, k23, k24, k25 }, \
- { KC_NO, k31, KC_NO, k33, k34, KC_NO }, \
- { k40, k41, k42, k43, k44, k45 }, \
- { k50, k51, k52, k53, k54, k55 }, \
- { k60, k61, k62, k63, k64, k65 }, \
- { KC_NO, k71, KC_NO, k73, k74, KC_NO }, \
+// clang-format off
+#define LAYOUT_split_3x6_3( \
+ k00, k01, k02, k03, k04, k05, k45, k44, k43, k42, k41, k40, \
+ k10, k11, k12, k13, k14, k15, k55, k54, k53, k52, k51, k50, \
+ k20, k21, k22, k23, k24, k25, k65, k64, k63, k62, k61, k60, \
+ k33, k34, k31, k71, k74, k73 \
+) \
+{ \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k20, k21, k22, k23, k24, k25 }, \
+ { KC_NO, k31, KC_NO, k33, k34, KC_NO }, \
+ { k40, k41, k42, k43, k44, k45 }, \
+ { k50, k51, k52, k53, k54, k55 }, \
+ { k60, k61, k62, k63, k64, k65 }, \
+ { KC_NO, k71, KC_NO, k73, k74, KC_NO }, \
}
+// clang-format on
diff --git a/keyboards/bastardkb/tbkmini/v1/elitec/config.h b/keyboards/bastardkb/tbkmini/v1/elitec/config.h
new file mode 100644
index 0000000000..5a9ff87efa
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v1/elitec/config.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { B5, F7, F6, B6 }
+#define MATRIX_COL_PINS \
+ { B4, E6, C6, B1, B3, B2 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN D0
+
+/* RGB settings. */
+#define RGB_DI_PIN D2
diff --git a/keyboards/bastardkb/tbkmini/v1/elitec/info.json b/keyboards/bastardkb/tbkmini/v1/elitec/info.json
new file mode 100644
index 0000000000..83a9e799e1
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v1/elitec/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "TBK Mini Elite-C",
+ "usb": {
+ "device_version": "1.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/tbkmini/v1/elitec/rules.mk b/keyboards/bastardkb/tbkmini/v1/elitec/rules.mk
new file mode 100644
index 0000000000..380f48e73b
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v1/elitec/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 = 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 (do not use together with RGBLIGHT_ENABLE)
+RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x6_3
diff --git a/keyboards/bastardkb/tbkmini/v2/elitec/config.h b/keyboards/bastardkb/tbkmini/v2/elitec/config.h
new file mode 100644
index 0000000000..1feeac092b
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/elitec/config.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { F7, C6, D4, B5 }
+#define MATRIX_COL_PINS \
+ { F6, F5, B6, D7, E6, B4 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN D2
+
+/* RGB settings. */
+#define RGB_DI_PIN D3
diff --git a/keyboards/bastardkb/tbkmini/v2/elitec/info.json b/keyboards/bastardkb/tbkmini/v2/elitec/info.json
new file mode 100644
index 0000000000..50cfe860dd
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/elitec/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "TBK Mini Elite-C",
+ "usb": {
+ "device_version": "2.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/tbkmini/v2/elitec/rules.mk b/keyboards/bastardkb/tbkmini/v2/elitec/rules.mk
new file mode 100644
index 0000000000..380f48e73b
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/elitec/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 = 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 (do not use together with RGBLIGHT_ENABLE)
+RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x6_3
diff --git a/keyboards/bastardkb/tbkmini/v2/splinky/config.h b/keyboards/bastardkb/tbkmini/v2/splinky/config.h
new file mode 100644
index 0000000000..ed0b4a6a54
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/splinky/config.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2022 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
+
+/* Key matrix configuration. */
+#define MATRIX_ROW_PINS \
+ { GP26, GP5, GP4, GP9 }
+#define MATRIX_COL_PINS \
+ { GP27, GP28, GP15, GP6, GP7, GP8 }
+
+/* Handedness. */
+#define MASTER_RIGHT
+
+// To use the handedness pin, resistors need to be installed on the adapter PCB.
+// If so, uncomment the following code, and undefine MASTER_RIGHT above.
+// #define SPLIT_HAND_PIN GP13
+// #define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left.
+
+/* serial.c configuration (for split keyboard). */
+#define SOFT_SERIAL_PIN GP1
+
+/* RGB settings. */
+#define RGB_DI_PIN GP0
+
+/* Reset. */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
diff --git a/keyboards/bastardkb/tbkmini/v2/splinky/info.json b/keyboards/bastardkb/tbkmini/v2/splinky/info.json
new file mode 100644
index 0000000000..ca66bceeff
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/splinky/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "TBK Mini Splinky",
+ "usb": {
+ "device_version": "2.0.0",
+ },
+}
diff --git a/keyboards/bastardkb/tbkmini/v2/splinky/rules.mk b/keyboards/bastardkb/tbkmini/v2/splinky/rules.mk
new file mode 100644
index 0000000000..6b55f6e595
--- /dev/null
+++ b/keyboards/bastardkb/tbkmini/v2/splinky/rules.mk
@@ -0,0 +1,34 @@
+# MCU name
+MCU = RP2040
+
+# Bootloader selection
+BOOTLOADER = rp2040
+
+# RP2040-specific options
+ALLOW_WARNINGS = yes
+PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS.
+
+# 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
+
+SPLIT_KEYBOARD = yes
+LAYOUTS = split_3x6_3
+
+SERIAL_DRIVER = vendor
+WS2812_DRIVER = vendor
diff --git a/keyboards/bbrfkr/dynamis/config.h b/keyboards/bbrfkr/dynamis/config.h
index 0c11416612..ccf5f3f1c9 100644
--- a/keyboards/bbrfkr/dynamis/config.h
+++ b/keyboards/bbrfkr/dynamis/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6262
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER bbrfkr
-#define PRODUCT dynamis
-
/* key matrix */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
@@ -52,5 +45,5 @@
#define ENCODERS_PAD_A { B7 }
#define ENCODERS_PAD_B { E6 }
-#define PMW3360_CS_PIN SPI_SS_PIN
+#define PMW33XX_CS_PIN SPI_SS_PIN
#define POINTING_DEVICE_INVERT_Y
diff --git a/keyboards/bbrfkr/dynamis/dynamis.c b/keyboards/bbrfkr/dynamis/dynamis.c
index e7f780ef1a..8655cbc7bc 100644
--- a/keyboards/bbrfkr/dynamis/dynamis.c
+++ b/keyboards/bbrfkr/dynamis/dynamis.c
@@ -18,16 +18,12 @@
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
- if (!encoder_update_user(index, clockwise)) {
- return false;
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (clockwise) {
+ tap_code(layer_state == 0 ? KC_WH_D : KC_VOLD);
+ } else {
+ tap_code(layer_state == 0 ? KC_WH_U : KC_VOLU);
}
- if (index == 0) { /* First encoder */
- if (clockwise) {
- tap_code(KC_WH_D);
- } else {
- tap_code(KC_WH_U);
- }
- }
- return false;
+ return true;
}
#endif
diff --git a/keyboards/bbrfkr/dynamis/info.json b/keyboards/bbrfkr/dynamis/info.json
index 1e4d7154e1..b59fef9946 100644
--- a/keyboards/bbrfkr/dynamis/info.json
+++ b/keyboards/bbrfkr/dynamis/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "dynamis",
+ "manufacturer": "bbrfkr",
"url": "https://github.com/bbrfkr/keyboards",
"maintainer": "bbrfkr",
+ "usb": {
+ "vid": "0x6262",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
@@ -11,62 +17,62 @@
"y": 0
},
{
- "label": "F1",
+ "label": "1",
"x": 1,
"y": 0
},
{
- "label": "F2",
+ "label": "2",
"x": 2,
"y": 0
},
{
- "label": "F3",
+ "label": "3",
"x": 3,
"y": 0
},
{
- "label": "F4",
+ "label": "4",
"x": 4,
"y": 0
},
{
- "label": "F5",
+ "label": "5",
"x": 5,
"y": 0
},
{
- "label": "F6",
+ "label": "6",
"x": 6,
"y": 0
},
{
- "label": "F7",
+ "label": "7",
"x": 7,
"y": 0
},
{
- "label": "F8",
+ "label": "8",
"x": 8,
"y": 0
},
{
- "label": "F9",
+ "label": "9",
"x": 9,
"y": 0
},
{
- "label": "F10",
+ "label": "0",
"x": 10,
"y": 0
},
{
- "label": "F11",
+ "label": "-",
"x": 11,
"y": 0
},
{
- "label": "F12",
+ "label": "=",
"x": 12,
"y": 0
},
@@ -286,7 +292,7 @@
"w": 1.75
},
{
- "label": "Raise",
+ "label": "Lower",
"x": 14,
"y": 3
},
@@ -302,13 +308,13 @@
"w": 1.25
},
{
- "label": "Super",
+ "label": "Alt",
"x": 1.25,
"y": 4,
"w": 1.25
},
{
- "label": "Alt",
+ "label": "Lower",
"x": 2.5,
"y": 4,
"w": 1.25
@@ -320,25 +326,25 @@
"w": 2.25
},
{
- "label": "Lower",
+ "label": "Space",
"x": 6,
"y": 4,
"w": 1.25
},
{
- "label": "Raise",
+ "label": "Enter",
"x": 7.25,
"y": 4,
"w": 2.75
},
{
- "label": "Alt",
+ "label": "Raise",
"x": 10,
"y": 4,
"w": 1.25
},
{
- "label": "Super",
+ "label": "Alt",
"x": 11.25,
"y": 4,
"w": 1.25
@@ -374,62 +380,62 @@
"y": 0
},
{
- "label": "F1",
+ "label": "1",
"x": 1,
"y": 0
},
{
- "label": "F2",
+ "label": "2",
"x": 2,
"y": 0
},
{
- "label": "F3",
+ "label": "3",
"x": 3,
"y": 0
},
{
- "label": "F4",
+ "label": "4",
"x": 4,
"y": 0
},
{
- "label": "F5",
+ "label": "5",
"x": 5,
"y": 0
},
{
- "label": "F6",
+ "label": "6",
"x": 6,
"y": 0
},
{
- "label": "F7",
+ "label": "7",
"x": 7,
"y": 0
},
{
- "label": "F8",
+ "label": "8",
"x": 8,
"y": 0
},
{
- "label": "F9",
+ "label": "9",
"x": 9,
"y": 0
},
{
- "label": "F10",
+ "label": "0",
"x": 10,
"y": 0
},
{
- "label": "F11",
+ "label": "-",
"x": 11,
"y": 0
},
{
- "label": "F12",
+ "label": "=",
"x": 12,
"y": 0
},
@@ -649,7 +655,7 @@
"w": 1.75
},
{
- "label": "Raise",
+ "label": "Lower",
"x": 14,
"y": 3
},
@@ -665,13 +671,13 @@
"w": 1.25
},
{
- "label": "Super",
+ "label": "Alt",
"x": 1.25,
"y": 4,
"w": 1.25
},
{
- "label": "Alt",
+ "label": "Lower",
"x": 2.5,
"y": 4,
"w": 1.25
@@ -683,25 +689,25 @@
"w": 2.25
},
{
- "label": "Lower",
+ "label": "Space",
"x": 6,
"y": 4,
"w": 1.25
},
{
- "label": "Raise",
+ "label": "Enter",
"x": 7.25,
"y": 4,
"w": 2.75
},
{
- "label": "Alt",
+ "label": "Raise",
"x": 10,
"y": 4,
"w": 1.25
},
{
- "label": "Super",
+ "label": "Alt",
"x": 11.25,
"y": 4,
"w": 1.25
diff --git a/keyboards/bbrfkr/dynamis/keymaps/default/keymap.c b/keyboards/bbrfkr/dynamis/keymaps/default/keymap.c
index 23fd021288..686c016242 100644
--- a/keyboards/bbrfkr/dynamis/keymaps/default/keymap.c
+++ b/keyboards/bbrfkr/dynamis/keymaps/default/keymap.c
@@ -20,40 +20,40 @@ enum layer_names {
_QWERTY,
_LOWER,
_RAISE,
- _SETTINGS
+ _SETTINGS,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = 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_BSPC, 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_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_TAB, 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_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_TAB, 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_LALT, MO(1), KC_SPC, KC_SPC, KC_ENT, MO(2), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LOWER] = 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_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_PSCR, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_BTN3, KC_BTN2, KC_WH_D, KC_BTN1, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, MO(3), 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_ESC, KC_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_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, KC_TRNS, KC_BTN3, KC_BTN2, KC_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_RGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE
),
[_RAISE] = LAYOUT_ansi(
- KC_ESC, KC_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_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_QUOT, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_UNDS, KC_PLUS, KC_DQUO, KC_LCBR, KC_RCBR, KC_TRNS, MO(3), 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_ESC, KC_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_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LGUI, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE
),
[_SETTINGS] = 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, 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, RGB_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, 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, KC_TRNS
- )
+ QK_BOOT, KC_NO, KC_NO, KC_NO, 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_TOG, RGB_MOD, RGB_RMOD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ 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/bbrfkr/dynamis/keymaps/iso/keymap.c b/keyboards/bbrfkr/dynamis/keymaps/iso/keymap.c
index 25d9a85348..c715dc3577 100644
--- a/keyboards/bbrfkr/dynamis/keymaps/iso/keymap.c
+++ b/keyboards/bbrfkr/dynamis/keymaps/iso/keymap.c
@@ -20,40 +20,40 @@ enum layer_names {
_QWERTY,
_LOWER,
_RAISE,
- _SETTINGS
+ _SETTINGS,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = 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_BSPC, 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_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_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_TAB, 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_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_TAB, 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_LALT, MO(1), KC_SPC, KC_SPC, KC_ENT, MO(2), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LOWER] = 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_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_WH_U, 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_BTN3, KC_BTN2, KC_WH_D, KC_BTN1, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, MO(3), 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_ESC, KC_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_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,
+ KC_TRNS, KC_TRNS, KC_BTN3, KC_BTN2, KC_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_RGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE
),
[_RAISE] = LAYOUT_iso(
- KC_ESC, KC_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_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_QUOT, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_UNDS, KC_PLUS, KC_DQUO, KC_LCBR, KC_RCBR, KC_TRNS, MO(3), 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_ESC, KC_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_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,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LGUI, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE
),
[_SETTINGS] = 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, 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, RGB_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, 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, KC_TRNS
- )
+ QK_BOOT, KC_NO, KC_NO, KC_NO, 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_TOG, RGB_MOD, RGB_RMOD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ 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/bbrfkr/dynamis/keymaps/via/keymap.c b/keyboards/bbrfkr/dynamis/keymaps/via/keymap.c
index 20cc720c8f..cef34da6b3 100644
--- a/keyboards/bbrfkr/dynamis/keymaps/via/keymap.c
+++ b/keyboards/bbrfkr/dynamis/keymaps/via/keymap.c
@@ -20,40 +20,49 @@ enum layer_names {
_QWERTY,
_LOWER,
_RAISE,
- _SETTINGS
+ _SETTINGS,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = 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_BSPC, 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_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_TAB, 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_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), MO(2), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ KC_TAB, 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_LALT, MO(1), KC_SPC, KC_SPC, KC_ENT, MO(2), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LOWER] = 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_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_PSCR, KC_TRNS, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_BTN3, KC_BTN2, KC_WH_D, KC_BTN1, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, MO(3), 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_ESC, KC_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_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, KC_TRNS, KC_BTN3, KC_BTN2, KC_BTN1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_RGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE
),
[_RAISE] = LAYOUT_ansi(
- KC_ESC, KC_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_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_QUOT, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_UNDS, KC_PLUS, KC_DQUO, KC_LCBR, KC_RCBR, KC_TRNS, MO(3), 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_ESC, KC_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_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LGUI, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE
),
[_SETTINGS] = 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, 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, RGB_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, 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, KC_TRNS
- )
+ QK_BOOT, KC_NO, KC_NO, KC_NO, 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_TOG, RGB_MOD, RGB_RMOD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), },
+ [_LOWER] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [_RAISE] = { ENCODER_CCW_CW(RGB_MOD, RGB_RMOD) },
+ [_SETTINGS] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D) },
};
+#endif
diff --git a/keyboards/bbrfkr/dynamis/keymaps/via/rules.mk b/keyboards/bbrfkr/dynamis/keymaps/via/rules.mk
index 1e5b99807c..f1adcab005 100644
--- a/keyboards/bbrfkr/dynamis/keymaps/via/rules.mk
+++ b/keyboards/bbrfkr/dynamis/keymaps/via/rules.mk
@@ -1 +1,2 @@
VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/bbrfkr/dynamis/readme.md b/keyboards/bbrfkr/dynamis/readme.md
index 6806819bb1..2cfd225b1b 100644
--- a/keyboards/bbrfkr/dynamis/readme.md
+++ b/keyboards/bbrfkr/dynamis/readme.md
@@ -1,20 +1,20 @@
# dynamis
## general information
-![dynamis](https://i.imgur.com/q2C3D2ul.jpg)
+![dynamis](https://i.imgur.com/GRPE5hzh.jpg)
Gasket mounted 65% row staggered keyboard integrated a trackball
* Keyboard Maintainer: [bbrfkr](https://github.com/bbrfkr/)
* Hardware Supported: dynamis PCBs
-* Hardware Availability: http://github.com/bbrfkr/keyboards
+* Hardware Availability: https://github.com/bbrfkr/dynamis-keyboard
## 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**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
## build and flash firmware
diff --git a/keyboards/bear_face/config.h b/keyboards/bear_face/config.h
index 593f8a23a4..589ea350c1 100644
--- a/keyboards/bear_face/config.h
+++ b/keyboards/bear_face/config.h
@@ -19,12 +19,6 @@ 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 0x09f5
-#define MANUFACTURER chemicalwill
-#define PRODUCT bear_face
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
@@ -32,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* bear_face matrix pinout */
#define MATRIX_ROW_PINS { F5, F6, F4, F1, B0, B6 }
#define MATRIX_COL_PINS { B5, C7, C6, F0, E6, B7, D0, D1, D2, D3, D5, D4, D6, D7, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/bear_face/info.json b/keyboards/bear_face/info.json
new file mode 100644
index 0000000000..e2589d91af
--- /dev/null
+++ b/keyboards/bear_face/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "bear_face",
+ "manufacturer": "chemicalwill",
+ "url": "https://github.com/chemicalwill/bear_face_pcb",
+ "maintainer": "chemicalwill",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x09F5"
+ }
+}
diff --git a/keyboards/bear_face/v1/config.h b/keyboards/bear_face/v1/config.h
deleted file mode 100644
index cf1de932c1..0000000000
--- a/keyboards/bear_face/v1/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-Copyright 2020 chemicalwill <https://github.com/chemicalwill>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0100
diff --git a/keyboards/bear_face/v1/info.json b/keyboards/bear_face/v1/info.json
index 0435c5c229..8d3f685e91 100644
--- a/keyboards/bear_face/v1/info.json
+++ b/keyboards/bear_face/v1/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "bear_face",
- "url": "https://github.com/chemicalwill/bear_face_pcb",
- "maintainer": "chemicalwill",
+ "usb": {
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_83_ansi": {
"layout": [
diff --git a/keyboards/bear_face/v2/config.h b/keyboards/bear_face/v2/config.h
deleted file mode 100644
index 6a7c8c6fb0..0000000000
--- a/keyboards/bear_face/v2/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-Copyright 2020 chemicalwill <https://github.com/chemicalwill>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0200
diff --git a/keyboards/bear_face/v2/info.json b/keyboards/bear_face/v2/info.json
index 6d12f04d42..978ee59e49 100644
--- a/keyboards/bear_face/v2/info.json
+++ b/keyboards/bear_face/v2/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "bear_face",
- "url": "https://github.com/chemicalwill/bear_face_pcb",
- "maintainer": "chemicalwill",
+ "usb": {
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT_83_ansi": {
"layout": [
diff --git a/keyboards/bear_face/v2/keymaps/default/keymap.c b/keyboards/bear_face/v2/keymaps/default/keymap.c
index 5f3ccc8729..e5623d4f57 100644
--- a/keyboards/bear_face/v2/keymaps/default/keymap.c
+++ b/keyboards/bear_face/v2/keymaps/default/keymap.c
@@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN1] = LAYOUT_83_ansi(
- _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, KC_INS,
+ _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_INS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CALC, BASE_QWER,
_______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, BASE_COLE,
_______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BASE_DVOR,
diff --git a/keyboards/beatervan/config.h b/keyboards/beatervan/config.h
index a8973ab4a6..3354a35bd5 100644
--- a/keyboards/beatervan/config.h
+++ b/keyboards/beatervan/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6F6A // "oj"
-#define PRODUCT_ID 0x6276 // "bv"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER OJ
-#define PRODUCT beatervan
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { D1, D0, D4, C6 }
#define MATRIX_COL_PINS { D7, E6, B4, B5, F4, F5, F6, F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/beatervan/info.json b/keyboards/beatervan/info.json
index c3030a411c..beeffae7a5 100644
--- a/keyboards/beatervan/info.json
+++ b/keyboards/beatervan/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "beatervan",
+ "manufacturer": "OJ",
"url": "",
"maintainer": "OJ",
+ "usb": {
+ "vid": "0x6F7A",
+ "pid": "0x6276",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/bemeier/bmek/config.h b/keyboards/bemeier/bmek/config.h
index 1bd996d07a..b7cab6d1fe 100755
--- a/keyboards/bemeier/bmek/config.h
+++ b/keyboards/bemeier/bmek/config.h
@@ -17,12 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x626D // BeMeier
-#define PRODUCT_ID 0x656B // ErgonomicKeyboard
-#define MANUFACTURER Bemeier
-#define PRODUCT BMEK
-
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 20
diff --git a/keyboards/bemeier/bmek/info.json b/keyboards/bemeier/bmek/info.json
index 80e06d91fb..f547a7c2bb 100755
--- a/keyboards/bemeier/bmek/info.json
+++ b/keyboards/bemeier/bmek/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "bmek",
+ "keyboard_name": "BMEK",
+ "manufacturer": "Bemeier",
"url": "https://github.com/Bemeier/bmek",
"maintainer": "Bemeier",
+ "usb": {
+ "vid": "0x626D",
+ "pid": "0x656B"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/bemeier/bmek/rev1/config.h b/keyboards/bemeier/bmek/rev1/config.h
index 5c738499f7..e80742d6f2 100755
--- a/keyboards/bemeier/bmek/rev1/config.h
+++ b/keyboards/bemeier/bmek/rev1/config.h
@@ -17,13 +17,9 @@
#include "config_common.h"
-#define DEVICE_VER 0x0001
-
#define MATRIX_ROW_PINS \
{ D4, D7, B6, B4, B7 }
#define MATRIX_COL_PINS \
{ F1, B0, B1, B2, B3, D0, D1, D2, C6, C7, F7, F6, F5, F4, B5 }
-#define UNUSED_PINS \
- { D4, D5, F0, B7 }
#define RGB_DI_PIN E6
diff --git a/keyboards/bemeier/bmek/rev1/info.json b/keyboards/bemeier/bmek/rev1/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/bemeier/bmek/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/bemeier/bmek/rev2/config.h b/keyboards/bemeier/bmek/rev2/config.h
index c97d0417ad..ba1633f3c5 100755
--- a/keyboards/bemeier/bmek/rev2/config.h
+++ b/keyboards/bemeier/bmek/rev2/config.h
@@ -17,13 +17,9 @@
#include "config_common.h"
-#define DEVICE_VER 0x0002
-
#define MATRIX_ROW_PINS \
{ F4, F5, D7, B5, B4 }
#define MATRIX_COL_PINS \
- { F6, B0, B1, F7, C7, C6, B6, F1, B2, B3, D6, D3, D2, D1, D0 }
-#define UNUSED_PINS \
- { D4, D5, F0, B7 }
+ { F6, B0, B1, F7, C7, C6, B6, F1, B2, B3, D6, D3, D2, D1, D0 }
#define RGB_DI_PIN E6
diff --git a/keyboards/bemeier/bmek/rev2/info.json b/keyboards/bemeier/bmek/rev2/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/bemeier/bmek/rev2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/bemeier/bmek/rev3/config.h b/keyboards/bemeier/bmek/rev3/config.h
index fd74a74027..d5af11782d 100755
--- a/keyboards/bemeier/bmek/rev3/config.h
+++ b/keyboards/bemeier/bmek/rev3/config.h
@@ -17,13 +17,9 @@
#include "config_common.h"
-#define DEVICE_VER 0x0003
-
#define MATRIX_ROW_PINS \
{ F1, B4, B5, D6, D7 }
#define MATRIX_COL_PINS \
- { B6, C6, C7, F7, F6, F5, F4, F0, B7, D0, D1, D2, D3, D5, D4 }
-#define UNUSED_PINS \
- { D0, B1, B2, B3 }
+ { B6, C6, C7, F7, F6, F5, F4, F0, B7, D0, D1, D2, D3, D5, D4 }
#define RGB_DI_PIN E6
diff --git a/keyboards/bemeier/bmek/rev3/info.json b/keyboards/bemeier/bmek/rev3/info.json
new file mode 100644
index 0000000000..b377cdff00
--- /dev/null
+++ b/keyboards/bemeier/bmek/rev3/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/bfake/config.h b/keyboards/bfake/config.h
index 54e01ad3db..4980416017 100644
--- a/keyboards/bfake/config.h
+++ b/keyboards/bfake/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x422D
-#define DEVICE_VER 0x0200
-#define MANUFACTURER NotWinkeyless
-#define PRODUCT B.fake
-
#define RGBLED_NUM 16
#define MATRIX_ROWS 8
@@ -32,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/bfake/info.json b/keyboards/bfake/info.json
index 576c470b88..be03a2da1a 100644
--- a/keyboards/bfake/info.json
+++ b/keyboards/bfake/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "b.fake",
+ "keyboard_name": "B.fake",
+ "manufacturer": "NotWinkeyless",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x422D",
+ "device_version": "2.0.0"
+ },
"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}, {"x":13, "y":0}, {"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":1.25}, {"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}, {"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":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/bfake/keymaps/mechmerlin/keymap.c b/keyboards/bfake/keymaps/mechmerlin/keymap.c
index 35b59e6a42..ecd3350876 100644
--- a/keyboards/bfake/keymaps/mechmerlin/keymap.c
+++ b/keyboards/bfake/keymaps/mechmerlin/keymap.c
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, 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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/biacco42/ergo42/info.json b/keyboards/biacco42/ergo42/info.json
deleted file mode 100644
index a4c4f7fd18..0000000000
--- a/keyboards/biacco42/ergo42/info.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "keyboard_name": "Ergo42",
- "url": "",
- "maintainer": "qmk",
- "layouts": {
- "LAYOUT_ortho_4x14": {
- "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":"L06", "x":6, "y":0}, {"label":"R00", "x":8, "y":0}, {"label":"R01", "x":9, "y":0}, {"label":"R02", "x":10, "y":0}, {"label":"R03", "x":11, "y":0}, {"label":"R04", "x":12, "y":0}, {"label":"R05", "x":13, "y":0}, {"label":"R06", "x":14, "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":"L16", "x":6, "y":1}, {"label":"R10", "x":8, "y":1}, {"label":"R11", "x":9, "y":1}, {"label":"R12", "x":10, "y":1}, {"label":"R13", "x":11, "y":1}, {"label":"R14", "x":12, "y":1}, {"label":"R15", "x":13, "y":1}, {"label":"R16", "x":14, "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":"L26", "x":6, "y":2}, {"label":"R20", "x":8, "y":2}, {"label":"R21", "x":9, "y":2}, {"label":"R22", "x":10, "y":2}, {"label":"R23", "x":11, "y":2}, {"label":"R24", "x":12, "y":2}, {"label":"R25", "x":13, "y":2}, {"label":"R26", "x":14, "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":"L36", "x":6, "y":3}, {"label":"R30", "x":8, "y":3}, {"label":"R31", "x":9, "y":3}, {"label":"R32", "x":10, "y":3}, {"label":"R33", "x":11, "y":3}, {"label":"R34", "x":12, "y":3}, {"label":"R35", "x":13, "y":3}, {"label":"R36", "x":14, "y":3}]
- }
- }
-}
diff --git a/keyboards/biacco42/ergo42/keymaps/biacco-biacco/keymap.c b/keyboards/biacco42/ergo42/keymaps/biacco-biacco/keymap.c
index 7cf40fa9a0..6a58e24bd4 100644
--- a/keyboards/biacco42/ergo42/keymaps/biacco-biacco/keymap.c
+++ b/keyboards/biacco42/ergo42/keymaps/biacco-biacco/keymap.c
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, _______, _______, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \
_______, KC_F1, XXXXXXX, KC_MHEN, KC_HENK, XXXXXXX, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, \
_______, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, SFT_T(KC_RO), \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______ \
),
/* SYMB
@@ -130,7 +130,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, \
_______, KC_2, KC_3, KC_4, KC_5, KC_6, _______, _______, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \
_______, KC_1, XXXXXXX, KC_MHEN, KC_HENK, XXXXXXX, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, SFT_T(KC_RO), \
- _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______ \
+ _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______ \
),
/* SYMB
diff --git a/keyboards/biacco42/ergo42/keymaps/biacco-macOS/keymap.c b/keyboards/biacco42/ergo42/keymaps/biacco-macOS/keymap.c
index bc6a8557e8..d0c7acc672 100644
--- a/keyboards/biacco42/ergo42/keymaps/biacco-macOS/keymap.c
+++ b/keyboards/biacco42/ergo42/keymaps/biacco-macOS/keymap.c
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, _______, _______, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \
_______, KC_F1, XXXXXXX, KC_MHEN, KC_HENK, XXXXXXX, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, \
_______, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, SFT_T(KC_RO), \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______ \
),
/* SYMB
diff --git a/keyboards/biacco42/ergo42/keymaps/biacco-underglow/keymap.c b/keyboards/biacco42/ergo42/keymaps/biacco-underglow/keymap.c
index 5b7fb7e66c..a2b276a847 100644
--- a/keyboards/biacco42/ergo42/keymaps/biacco-underglow/keymap.c
+++ b/keyboards/biacco42/ergo42/keymaps/biacco-underglow/keymap.c
@@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, _______, _______, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \
_______, KC_F1, XXXXXXX, KC_MHEN, KC_HENK, XXXXXXX, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, \
_______, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, SFT_T(KC_RO), \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______ \
),
/* SYMB
@@ -102,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------+------| |-------------+------+------+------+------+------|
* | | | | | | | | | | TOG | HUI | SAI | VAI |HUANIM| |
* |------+------+------+------+------+------+------| |------|------+------+------+------+------+------|
- * | | | | | | | | | | MOD | HUD | SAD | VAD |RESET | |
+ * | | | | | | | | | | MOD | HUD | SAD | VAD |QK_BOOT | |
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
* | | | | | | | | | | | | | |=>RGB | |
* `------------------------------------------------' `------------------------------------------------'
diff --git a/keyboards/biacco42/ergo42/keymaps/biacco-winjp/keymap.c b/keyboards/biacco42/ergo42/keymaps/biacco-winjp/keymap.c
index 8db73ab8bd..8a91b625eb 100644
--- a/keyboards/biacco42/ergo42/keymaps/biacco-winjp/keymap.c
+++ b/keyboards/biacco42/ergo42/keymaps/biacco-winjp/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, _______, _______, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \
_______, KC_F1, XXXXXXX, KC_MHEN, KC_HENK, XXXXXXX, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, \
_______, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, SFT_T(KC_RO), \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______ \
),
/* SYMB
diff --git a/keyboards/biacco42/ergo42/keymaps/biacco/keymap.c b/keyboards/biacco42/ergo42/keymaps/biacco/keymap.c
index 12e55b75f1..5672ddd864 100644
--- a/keyboards/biacco42/ergo42/keymaps/biacco/keymap.c
+++ b/keyboards/biacco42/ergo42/keymaps/biacco/keymap.c
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, _______, _______, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \
_______, KC_F1, XXXXXXX, KC_MHEN, KC_HENK, XXXXXXX, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, \
_______, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, SFT_T(KC_RO), \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______ \
),
/* SYMB
diff --git a/keyboards/biacco42/ergo42/keymaps/hdbx/keymap.c b/keyboards/biacco42/ergo42/keymaps/hdbx/keymap.c
index bb3b6fac48..22f28fa25d 100644
--- a/keyboards/biacco42/ergo42/keymaps/hdbx/keymap.c
+++ b/keyboards/biacco42/ergo42/keymaps/hdbx/keymap.c
@@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-------------------------------------------------------. ,-------------------------------------------------------.
* |RGB_TOG| MCR1 | MCR2 | MCR3 |XXXXXXX|XXXXXXX|XXXXXXX| |XXXXXXX|PLAY_M1|PLAY_M2|REC_M1 |REC_M2 |STP_REC| BSPC |
* |-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
- * | RESET | | | | | | | |XXXXXXX|XXXXXXX|QWERTY | GAME |XXXXXXX|XXXXXXX|XXXXXXX|
+ * | QK_BOOT | | | | | | | |XXXXXXX|XXXXXXX|QWERTY | GAME |XXXXXXX|XXXXXXX|XXXXXXX|
* |-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
* | Shift | | | | | | | |XXXXXXX| M-PLAY|M-MUTE |VOL_DWN|VOL_UP |PREV_TR|NEXT_TR|
* |-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------|
@@ -126,7 +126,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT( \
RGB_TOG, MCR1, MCR2, MCR3, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, DYN_REC_START1, DYN_REC_START2, DYN_REC_STOP, KC_BSPC, \
- RESET, RGB_MOD, RGB_M_P, RGB_M_B, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, QWERTY, GAME, XXXXXXX, XXXXXXX, XXXXXXX, \
+ QK_BOOT, RGB_MOD, RGB_M_P, RGB_M_B, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, QWERTY, GAME, XXXXXXX, XXXXXXX, XXXXXXX, \
KC_LSFT, RGB_M_R, RGB_M_SN,RGB_M_G, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, \
DEBUG, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
),
@@ -134,7 +134,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
// RGB Underglow使用時ã®ãƒ¬ã‚¤ãƒ¤ãƒ¼æ¯Žã®ã‚«ãƒ©ãƒ¼åˆ‡ã‚Šæ›¿ãˆ
-uint32_t layer_state_set_keymap (uint32_t state) {
+layer_state_t layer_state_set_keymap (layer_state_t state) {
return state;
}
@@ -148,7 +148,7 @@ void matrix_init_user(void) {
layer_state_t layer_state_set_user(layer_state_t state) {
state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
#ifdef RGBLIGHT_ENABLE
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _RAISE:
rgblight_setrgb_chartreuse(); // RAISE:シャルトリューズ
break;
diff --git a/keyboards/biacco42/ergo42/keymaps/koba/keymap.c b/keyboards/biacco42/ergo42/keymaps/koba/keymap.c
index 5d7f337452..fcc00c411d 100644
--- a/keyboards/biacco42/ergo42/keymaps/koba/keymap.c
+++ b/keyboards/biacco42/ergo42/keymaps/koba/keymap.c
@@ -119,7 +119,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------' `------------------------------------------------'
*/
[_FUNC] = LAYOUT( \
- RESET, KC_INS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, _______, \
+ QK_BOOT, KC_INS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, _______, \
_______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, WIN, JP_ASTR, KC_SLSH, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, _______, \
KC_CAPS, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MACOS, JP_PLUS, KC_MINS, KC_END, KC_PGDN, XXXXXXX, KC_VOLU, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_MPLY \
diff --git a/keyboards/biacco42/ergo42/keymaps/shinze/keymap.c b/keyboards/biacco42/ergo42/keymaps/shinze/keymap.c
index f5cc3c520e..4e3a24a39b 100644
--- a/keyboards/biacco42/ergo42/keymaps/shinze/keymap.c
+++ b/keyboards/biacco42/ergo42/keymaps/shinze/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[SHORT] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, \
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, COPY, PASTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/biacco42/ergo42/keymaps/yshrsmz/keymap.c b/keyboards/biacco42/ergo42/keymaps/yshrsmz/keymap.c
index 6239876bb1..84fa64c7b1 100644
--- a/keyboards/biacco42/ergo42/keymaps/yshrsmz/keymap.c
+++ b/keyboards/biacco42/ergo42/keymaps/yshrsmz/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, \
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_PGUP, _______, \
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_HOME, KC_END, LALT(KC_LEFT), LALT(KC_RGHT), KC_PGDN, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______ \
),
/* SYMB
@@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TILD, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), _______, _______, S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), _______, \
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_PGUP, _______, \
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_HOME, KC_END, LALT(KC_LEFT), LALT(KC_RGHT), KC_PGDN, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______ \
),
/* GAME
diff --git a/keyboards/biacco42/ergo42/rev1/config.h b/keyboards/biacco42/ergo42/rev1/config.h
index c8bfe1170f..9d1b7387b3 100644
--- a/keyboards/biacco42/ergo42/rev1/config.h
+++ b/keyboards/biacco42/ergo42/rev1/config.h
@@ -21,13 +21,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBC42
-#define PRODUCT_ID 0x0042
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Biacco42
-#define PRODUCT Ergo42
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/biacco42/ergo42/rev1/info.json b/keyboards/biacco42/ergo42/rev1/info.json
new file mode 100644
index 0000000000..3c21ef1b46
--- /dev/null
+++ b/keyboards/biacco42/ergo42/rev1/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Ergo42",
+ "manufacturer": "Biacco42",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0xBC42",
+ "pid": "0x0042",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT_ortho_4x14": {
+ "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":"L06", "x":6, "y":0}, {"label":"R00", "x":8, "y":0}, {"label":"R01", "x":9, "y":0}, {"label":"R02", "x":10, "y":0}, {"label":"R03", "x":11, "y":0}, {"label":"R04", "x":12, "y":0}, {"label":"R05", "x":13, "y":0}, {"label":"R06", "x":14, "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":"L16", "x":6, "y":1}, {"label":"R10", "x":8, "y":1}, {"label":"R11", "x":9, "y":1}, {"label":"R12", "x":10, "y":1}, {"label":"R13", "x":11, "y":1}, {"label":"R14", "x":12, "y":1}, {"label":"R15", "x":13, "y":1}, {"label":"R16", "x":14, "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":"L26", "x":6, "y":2}, {"label":"R20", "x":8, "y":2}, {"label":"R21", "x":9, "y":2}, {"label":"R22", "x":10, "y":2}, {"label":"R23", "x":11, "y":2}, {"label":"R24", "x":12, "y":2}, {"label":"R25", "x":13, "y":2}, {"label":"R26", "x":14, "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":"L36", "x":6, "y":3}, {"label":"R30", "x":8, "y":3}, {"label":"R31", "x":9, "y":3}, {"label":"R32", "x":10, "y":3}, {"label":"R33", "x":11, "y":3}, {"label":"R34", "x":12, "y":3}, {"label":"R35", "x":13, "y":3}, {"label":"R36", "x":14, "y":3}]
+ }
+ }
+}
diff --git a/keyboards/biacco42/meishi/config.h b/keyboards/biacco42/meishi/config.h
index ff6c22dc56..5d5d422d13 100644
--- a/keyboards/biacco42/meishi/config.h
+++ b/keyboards/biacco42/meishi/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBC42
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Biacco42
-#define PRODUCT meishi
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B5 }
#define MATRIX_COL_PINS { B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/biacco42/meishi/info.json b/keyboards/biacco42/meishi/info.json
index 8241541c72..cc7bb4f713 100644
--- a/keyboards/biacco42/meishi/info.json
+++ b/keyboards/biacco42/meishi/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Meishi",
+ "manufacturer": "Biacco42",
"url": "",
"maintainer": "Biacco42",
+ "usb": {
+ "vid": "0xBC42",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/biacco42/meishi2/config.h b/keyboards/biacco42/meishi2/config.h
index 57a4e226a3..a99aa088a9 100644
--- a/keyboards/biacco42/meishi2/config.h
+++ b/keyboards/biacco42/meishi2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBC42
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Biacco42
-#define PRODUCT meishi2
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 2
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D7, E6 }
#define MATRIX_COL_PINS { F5, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/biacco42/meishi2/info.json b/keyboards/biacco42/meishi2/info.json
index 8e277716ea..e63b586b69 100644
--- a/keyboards/biacco42/meishi2/info.json
+++ b/keyboards/biacco42/meishi2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "meishi2",
+ "manufacturer": "Biacco42",
"url": "",
"maintainer": "biacco42",
+ "usb": {
+ "vid": "0xBC42",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/binepad/bn003/config.h b/keyboards/binepad/bn003/config.h
index de5fb533a0..1c818b7459 100644
--- a/keyboards/binepad/bn003/config.h
+++ b/keyboards/binepad/bn003/config.h
@@ -18,20 +18,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4249 // Binepad
-#define PRODUCT_ID 0x4287
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Binepad
-#define PRODUCT BN003
-
/* Key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 3
#define MATRIX_ROW_PINS { C6 }
#define MATRIX_COL_PINS { B4, B5, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/binepad/bn003/info.json b/keyboards/binepad/bn003/info.json
index 6bb5724e47..aeff56fb01 100644
--- a/keyboards/binepad/bn003/info.json
+++ b/keyboards/binepad/bn003/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BN003",
+ "manufacturer": "Binepad",
"url": "https://binepad.com",
"maintainer": "binepad",
+ "usb": {
+ "vid": "0x4249",
+ "pid": "0x4287",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/binepad/bn009/config.h b/keyboards/binepad/bn009/config.h
index 0b12f54c75..48c2fd984c 100644
--- a/keyboards/binepad/bn009/config.h
+++ b/keyboards/binepad/bn009/config.h
@@ -18,20 +18,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4249 // Binepad
-#define PRODUCT_ID 0x4295
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Binepad
-#define PRODUCT BN009
-
/* Key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
#define MATRIX_ROW_PINS { D2, D1, D0 }
#define MATRIX_COL_PINS { B6, B5, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/binepad/bn009/info.json b/keyboards/binepad/bn009/info.json
index 2d439c8257..528cf57016 100644
--- a/keyboards/binepad/bn009/info.json
+++ b/keyboards/binepad/bn009/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BN009",
+ "manufacturer": "Binepad",
"url": "https://binepad.com",
"maintainer": "binepad",
+ "usb": {
+ "vid": "0x4249",
+ "pid": "0x4295",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}]
diff --git a/keyboards/bioi/f60/config.h b/keyboards/bioi/f60/config.h
index 40a7f6250f..e2b6fca5a4 100644
--- a/keyboards/bioi/f60/config.h
+++ b/keyboards/bioi/f60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8101
-#define PRODUCT_ID 0x4660
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Basic IO Instruments
-#define PRODUCT BIOI F60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/bioi/f60/info.json b/keyboards/bioi/f60/info.json
index dda3ffa690..06b0176bee 100644
--- a/keyboards/bioi/f60/info.json
+++ b/keyboards/bioi/f60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "f60",
+ "keyboard_name": "BIOI F60",
+ "manufacturer": "Basic IO Instruments",
"url": "",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0x8101",
+ "pid": "0x4660",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/bioi/f60/readme.md b/keyboards/bioi/f60/readme.md
index 6a120acded..9b5c8e8591 100644
--- a/keyboards/bioi/f60/readme.md
+++ b/keyboards/bioi/f60/readme.md
@@ -21,5 +21,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## Bootloader
* **Bootmagic reset**: Hold down the top left key (ESC) and plug in the keyboard
-* **Physical reset button**: Short the two small pads labeled "RESET" the back of the PCB
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Physical reset button**: Short the two small pads labeled "QK_BOOT" the back of the PCB
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/bioi/g60/config.h b/keyboards/bioi/g60/config.h
index 561cbc863b..a3831f8dd8 100644
--- a/keyboards/bioi/g60/config.h
+++ b/keyboards/bioi/g60/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-
-#define VENDOR_ID 0x8101 // 8101 = "BIOI"
-#define PRODUCT_ID 0x6080
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Basic IO Instruments
-#define PRODUCT BIOI G60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/bioi/g60/info.json b/keyboards/bioi/g60/info.json
index e14021a3eb..a171f68c13 100644
--- a/keyboards/bioi/g60/info.json
+++ b/keyboards/bioi/g60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BIOI G60",
+ "manufacturer": "Basic IO Instruments",
"url": "https://scottywei.github.io/bioi-g60ble/",
"maintainer": "scottywei",
+ "usb": {
+ "vid": "0x8101",
+ "pid": "0x6080",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/bioi/g60ble/config.h b/keyboards/bioi/g60ble/config.h
index 4aa806eb41..e710c19b98 100644
--- a/keyboards/bioi/g60ble/config.h
+++ b/keyboards/bioi/g60ble/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6583
-#define PRODUCT_ID 0x6080
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Basic IO Instruments
-#define PRODUCT BIOI G60 BLE
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -18,7 +11,6 @@
{ E6, B0, F1, F5, F4 }
#define MATRIX_COL_PINS \
{ F6, F7, B3, C7, C6, B6, B5, D5, B4, D7, D6, D4, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/bioi/g60ble/info.json b/keyboards/bioi/g60ble/info.json
index f8a453773f..f47a09d3f2 100644
--- a/keyboards/bioi/g60ble/info.json
+++ b/keyboards/bioi/g60ble/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BIOI G60 BLE",
+ "manufacturer": "Basic IO Instruments",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x6583",
+ "pid": "0x6080",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/bioi/morgan65/config.h b/keyboards/bioi/morgan65/config.h
index e4a2e4f93c..2ce3c7a56b 100644
--- a/keyboards/bioi/morgan65/config.h
+++ b/keyboards/bioi/morgan65/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-
-#define VENDOR_ID 0x8101 // 8101 = "BIOI"
-#define PRODUCT_ID 0x6581
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Basic IO Instruments
-#define PRODUCT BIOI MORGAN65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -45,8 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { E6, C6, F4, B2, D4 }
#define MATRIX_COL_PINS { F5, F6, F7, C7, B0, B7, B5, D5, B4, D7, D6, D1, D0, B3 }
-//#define QMK_KEYS_PER_SCAN 4
-
/* Backlight Setup */
#define BACKLIGHT_PIN B6
#define BACKLIGHT_LEVELS 12
diff --git a/keyboards/bioi/morgan65/info.json b/keyboards/bioi/morgan65/info.json
index 925f7af15d..8ed769c616 100644
--- a/keyboards/bioi/morgan65/info.json
+++ b/keyboards/bioi/morgan65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Morgan65",
+ "manufacturer": "Basic IO Instruments",
"url": "",
"maintainer": "scottywei",
+ "usb": {
+ "vid": "0x8101",
+ "pid": "0x6581",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/bioi/s65/config.h b/keyboards/bioi/s65/config.h
index 77960a4db3..fabd6c84a2 100644
--- a/keyboards/bioi/s65/config.h
+++ b/keyboards/bioi/s65/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8101 // 8101 = "BIOI"
-#define PRODUCT_ID 0x5365 // "S"65
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Basic IO Instruments
-#define PRODUCT BIOI S65
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/bioi/s65/info.json b/keyboards/bioi/s65/info.json
index e87437a267..fba9940ffb 100644
--- a/keyboards/bioi/s65/info.json
+++ b/keyboards/bioi/s65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BIOI S65",
+ "manufacturer": "Basic IO Instruments",
"url": "",
"maintainer": "scottywei",
+ "usb": {
+ "vid": "0x8101",
+ "pid": "0x5365",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/blackplum/config.h b/keyboards/blackplum/config.h
index dc92f416f3..999e655a94 100644
--- a/keyboards/blackplum/config.h
+++ b/keyboards/blackplum/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5058 // "PX"
-#define PRODUCT_ID 0x4250 // "BP"
-#define DEVICE_VER 0x1001
-#define MANUFACTURER Pixlup
-#define PRODUCT Blackplum Keeb
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 8
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { C6, B6, B4, B5, D6, D7, D5, D3, D4 }
#define MATRIX_COL_PINS { D0, D1, D2, F7, F6, F5, F4, F1 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/blackplum/info.json b/keyboards/blackplum/info.json
index 63230de4f8..8982213f2f 100644
--- a/keyboards/blackplum/info.json
+++ b/keyboards/blackplum/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "blackplum",
+ "keyboard_name": "Blackplum Keeb",
+ "manufacturer": "Pixlup",
"url": "www.tokopedia.com/pixlup",
"maintainer": "eriqadams",
+ "usb": {
+ "vid": "0x5058",
+ "pid": "0x4250",
+ "device_version": "10.0.1"
+ },
"layouts": {
"LAYOUT_68_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":"Insert", "x":15.25, "y":0}, {"label":"PgUp", "x":16.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":"Delete", "x":15.25, "y":1}, {"label":"PgDn", "x":16.25, "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":"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":"\u2191", "x":15.25, "y":3.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"OS", "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":"Ctrl", "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}]
diff --git a/keyboards/blank/blank01/config.h b/keyboards/blank/blank01/config.h
index 5ebf8c774a..220d0852fe 100644
--- a/keyboards/blank/blank01/config.h
+++ b/keyboards/blank/blank01/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x424C // "BL"
-#define PRODUCT_ID 0x4B01 // "K01"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER BLANK
-#define PRODUCT BLANK.01
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, B3 }
#define MATRIX_COL_PINS { D5, D4, D6, D7, B5, B4, B6, C6, C7, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/blank/blank01/info.json b/keyboards/blank/blank01/info.json
index af79aa7e8b..e03421d82b 100644
--- a/keyboards/blank/blank01/info.json
+++ b/keyboards/blank/blank01/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "blank01",
+ "keyboard_name": "BLANK.01",
+ "manufacturer": "BLANK",
"url": "",
"maintainer": "gkeyboard",
+ "usb": {
+ "vid": "0x424C",
+ "pid": "0x4B01",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_tsangan_hhkb": {
"layout": [
diff --git a/keyboards/blank/blank01/readme.md b/keyboards/blank/blank01/readme.md
index 059bb2c8dc..66c2fa8ded 100644
--- a/keyboards/blank/blank01/readme.md
+++ b/keyboards/blank/blank01/readme.md
@@ -23,4 +23,4 @@ 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 PCB - some may have pads you must short instead
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/blank_tehnologii/manibus/config.h b/keyboards/blank_tehnologii/manibus/config.h
index e5f1caf24a..8e7f4e8a11 100644
--- a/keyboards/blank_tehnologii/manibus/config.h
+++ b/keyboards/blank_tehnologii/manibus/config.h
@@ -18,12 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Blank Tehnologii
-#define PRODUCT Manibus
#define EE_HANDS
/* key matrix size */
@@ -35,7 +29,6 @@
#define MATRIX_COL_PINS { B5, B4, D7, D6, F0, F1, C6 }
#define MATRIX_ROW_PINS_RIGHT { D6, D7, B4, F7, E6 }
#define MATRIX_COL_PINS_RIGHT { B1, B2, B3, F1, F4, F5, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/blank_tehnologii/manibus/info.json b/keyboards/blank_tehnologii/manibus/info.json
index ab8d9b923e..43e28db7e9 100644
--- a/keyboards/blank_tehnologii/manibus/info.json
+++ b/keyboards/blank_tehnologii/manibus/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Manibus",
+ "manufacturer": "Blank Tehnologii",
"url": "https://blank.computer/",
"maintainer": "SamuraiKek",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/blank_tehnologii/manibus/keymaps/samurai/keymap.c b/keyboards/blank_tehnologii/manibus/keymaps/samurai/keymap.c
index 3d59cb307a..3e970b134e 100644
--- a/keyboards/blank_tehnologii/manibus/keymaps/samurai/keymap.c
+++ b/keyboards/blank_tehnologii/manibus/keymaps/samurai/keymap.c
@@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_UPPER] = LAYOUT(
// ┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, KC_NLCK, KC_P7, KC_P8, KC_P9, _______, KC_F12,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/blaster75/config.h b/keyboards/blaster75/config.h
index 61a9a754fb..7f17869ce5 100644
--- a/keyboards/blaster75/config.h
+++ b/keyboards/blaster75/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xA122
-#define PRODUCT_ID 0xB075
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Altain
-#define PRODUCT Blaster75
-
/* Matrix Size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
@@ -33,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 0 1 2 3 4 5 6 7 8 9 A B C D E
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, F7 }
#define MATRIX_COL_PINS { B0, B4, B5, B6, B7, C6, C7, D0, D1, D2, D3, D4, D5, D6, D7 }
-#define UNUSED_PINS
/* Diode Direction */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/blaster75/info.json b/keyboards/blaster75/info.json
index 13f4669d6c..332c5a5f12 100644
--- a/keyboards/blaster75/info.json
+++ b/keyboards/blaster75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Blaster 75",
+ "manufacturer": "Altain",
"url": "",
"maintainer": "Altain",
+ "usb": {
+ "vid": "0xA122",
+ "pid": "0xB075",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/blaster75/readme.md b/keyboards/blaster75/readme.md
index 1a03ec5a9f..851db670ad 100644
--- a/keyboards/blaster75/readme.md
+++ b/keyboards/blaster75/readme.md
@@ -18,7 +18,7 @@ We strongly recommend this method. If the PCB is not soldered with switches at t
to short the (0,0) position key ("ESC" in our PCB) while plugging the USB in.
* **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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/blockboy/ac980mini/keymaps/default/keymap.c b/keyboards/blockboy/ac980mini/keymaps/default/keymap.c
index edd497309d..64abcc1e70 100644
--- a/keyboards/blockboy/ac980mini/keymaps/default/keymap.c
+++ b/keyboards/blockboy/ac980mini/keymaps/default/keymap.c
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, MO(2), _______, RGB_MOD, RGB_HUI, RGB_SAI, _______, _______, _______
),
[2] = LAYOUT_all(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/blockboy/ac980mini/keymaps/via/keymap.c b/keyboards/blockboy/ac980mini/keymaps/via/keymap.c
index 50b034dd40..7bcfcb11d7 100644
--- a/keyboards/blockboy/ac980mini/keymaps/via/keymap.c
+++ b/keyboards/blockboy/ac980mini/keymaps/via/keymap.c
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, MO(2), _______, RGB_MOD, RGB_HUI, RGB_SAI, _______, _______, _______
),
[2] = LAYOUT_all(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/blockboy/ac980mini/readme.md b/keyboards/blockboy/ac980mini/readme.md
index 662f7b79a8..6eef032b7f 100644
--- a/keyboards/blockboy/ac980mini/readme.md
+++ b/keyboards/blockboy/ac980mini/readme.md
@@ -26,4 +26,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/blockey/config.h b/keyboards/blockey/config.h
index d954be2d7e..661605480a 100644
--- a/keyboards/blockey/config.h
+++ b/keyboards/blockey/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Eucalyn
-#define PRODUCT Blockey
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, D1, D4, E6, B5, D2, F6, B3, B2, B6 }
#define MATRIX_COL_PINS { D0, B4, C6, D7, F4, F5, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/blockey/info.json b/keyboards/blockey/info.json
index 473bf288a0..4e584d24bb 100644
--- a/keyboards/blockey/info.json
+++ b/keyboards/blockey/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BlocKey",
+ "manufacturer": "Eucalyn",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"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":"=", "x":12, "y":0}, {"label":"Back Space", "x":13, "y":0}, {"label":"Tab", "x":0.16, "y":1}, {"label":"Q", "x":1.16, "y":1}, {"label":"W", "x":2.16, "y":1}, {"label":"E", "x":3.16, "y":1}, {"label":"R", "x":4.16, "y":1}, {"label":"T", "x":5.16, "y":1}, {"label":"Y", "x":6.16, "y":1}, {"label":"U", "x":7.16, "y":1}, {"label":"I", "x":8.16, "y":1}, {"label":"O", "x":9.16, "y":1}, {"label":"P", "x":10.16, "y":1}, {"label":"[", "x":11.16, "y":1}, {"label":"]", "x":12.16, "y":1}, {"label":"\\", "x":13.16, "y":1}, {"label":"LCtrl", "x":0.33, "y":2}, {"label":"A", "x":1.33, "y":2}, {"label":"S", "x":2.33, "y":2}, {"label":"D", "x":3.33, "y":2}, {"label":"F", "x":4.33, "y":2}, {"label":"G", "x":5.33, "y":2}, {"label":"H", "x":6.33, "y":2}, {"label":"J", "x":7.33, "y":2}, {"label":"K", "x":8.33, "y":2}, {"label":"L", "x":9.33, "y":2}, {"label":";", "x":10.33, "y":2}, {"label":"\"", "x":11.33, "y":2}, {"label":"Enter", "x":12.66, "y":2}, {"label":"LShift", "x":0.5, "y":3}, {"label":"Z", "x":1.5, "y":3}, {"label":"X", "x":2.5, "y":3}, {"label":"C", "x":3.5, "y":3}, {"label":"V", "x":4.5, "y":3}, {"label":"B", "x":5.5, "y":3}, {"label":"N", "x":6.5, "y":3}, {"label":"M", "x":7.5, "y":3}, {"label":",", "x":8.5, "y":3}, {"label":".", "x":9.5, "y":3}, {"label":"/", "x":10.5, "y":3}, {"label":"Up", "x":11.5, "y":3}, {"label":"Fn", "x":12.83, "y":3}, {"label":"Esc", "x":0, "y":4}, {"label":"Caps Lock", "x":1, "y":4}, {"label":"LAlt", "x":2, "y":4}, {"label":"LGUI", "x":3, "y":4}, {"label":"Space", "x":4, "y":4, "w":6}, {"label":"Left", "x":10.5, "y":4}, {"label":"Down", "x":11.5, "y":4}, {"label":"Right", "x":12.5, "y":4}]
diff --git a/keyboards/boardrun/bizarre/config.h b/keyboards/boardrun/bizarre/config.h
index 9f4b91e2b5..5b9fb46286 100644
--- a/keyboards/boardrun/bizarre/config.h
+++ b/keyboards/boardrun/bizarre/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCDCD
-#define PRODUCT_ID 0x5339
-#define DEVICE_VER 0x0001
-#define MANUFACTURER shensmobile
-#define PRODUCT Boardrun Bizarre
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
@@ -40,7 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0, B3, B2, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/boardrun/bizarre/info.json b/keyboards/boardrun/bizarre/info.json
index 066095aa34..aa35ff24d9 100644
--- a/keyboards/boardrun/bizarre/info.json
+++ b/keyboards/boardrun/bizarre/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Boardrun Bizarre",
+ "manufacturer": "shensmobile",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/boardrun/bizarre",
"maintainer": "QMK Community",
+ "usb": {
+ "vid": "0xCDCD",
+ "pid": "0x5339",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/boardrun/bizarre/keymaps/nopunin10did/keymap.c b/keyboards/boardrun/bizarre/keymaps/nopunin10did/keymap.c
index c0653be0c8..4b28cab796 100644
--- a/keyboards/boardrun/bizarre/keymaps/nopunin10did/keymap.c
+++ b/keyboards/boardrun/bizarre/keymaps/nopunin10did/keymap.c
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN] = LAYOUT_ansi(
_MINMIZ, _______,_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
- KC_CALC, _______, _______, _______,_______,RESET, _______, _______,_______,KC_INS ,_______, KC_PSCR,_______,_______,_______,
+ KC_CALC, _______, _______, _______,_______,QK_BOOT, _______, _______,_______,KC_INS ,_______, KC_PSCR,_______,_______,_______,
KC_CAPS, _______, KC_SLCK,_______,_______,_______, _______,_______,_______,_______, _______,_______,_______,
_LSNUBS, _______, _______,_______,_______,KC_PAUS,_______, KC_RGUI,_______,KC_MENU,_______,_______, _______,_______, KC_PGUP,
_______, _CTLALT, KC_DEL, _______, _______, _______,KC_PGDN,_______
diff --git a/keyboards/boardrun/bizarre/readme.md b/keyboards/boardrun/bizarre/readme.md
index 5c73313d38..3ca84dfac2 100644
--- a/keyboards/boardrun/bizarre/readme.md
+++ b/keyboards/boardrun/bizarre/readme.md
@@ -18,6 +18,6 @@ Flashing example for this keyboard:
make boardrun/bizarre:default:flash
-The board may be reset into bootloader mode via either the reset button (on the bottom of the PCB) or a configured RESET shortcut (which may vary depending on when the PCB was flashed).
+The board may be reset into bootloader mode via either the reset button (on the bottom of the PCB) or a configured `QK_BOOT` shortcut (which may vary depending on when the PCB was flashed).
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/boardrun/classic/config.h b/keyboards/boardrun/classic/config.h
index 754c42975f..f65abc2ff4 100644
--- a/keyboards/boardrun/classic/config.h
+++ b/keyboards/boardrun/classic/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCDCD
-#define PRODUCT_ID 0x5338
-#define DEVICE_VER 0x0001
-#define MANUFACTURER shensmobile
-#define PRODUCT Boardrun Classic
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
@@ -40,7 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0, B3, B2, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/boardrun/classic/info.json b/keyboards/boardrun/classic/info.json
index 538814f36f..70ff145c06 100644
--- a/keyboards/boardrun/classic/info.json
+++ b/keyboards/boardrun/classic/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Boardrun Classic",
+ "manufacturer": "shensmobile",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/boardrun/classic",
"maintainer": "QMK Community",
+ "usb": {
+ "vid": "0xCDCD",
+ "pid": "0x5338",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_classic": {
"layout": [
diff --git a/keyboards/boardrun/classic/readme.md b/keyboards/boardrun/classic/readme.md
index 2ed4ff1bd0..eeb2c0d55c 100644
--- a/keyboards/boardrun/classic/readme.md
+++ b/keyboards/boardrun/classic/readme.md
@@ -18,6 +18,6 @@ Flashing example for this keyboard:
make boardrun/classic:default:flash
-The board may be reset into bootloader mode via either the reset button (on the bottom of the PCB) or a configured RESET shortcut (which may vary depending on when the PCB was flashed).
+The board may be reset into bootloader mode via either the reset button (on the bottom of the PCB) or a configured `QK_BOOT` shortcut (which may vary depending on when the PCB was flashed).
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/3x4/3x4.c b/keyboards/boardsource/3x4/3x4.c
deleted file mode 100644
index 798d5a65c4..0000000000
--- a/keyboards/boardsource/3x4/3x4.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "3x4.h"
diff --git a/keyboards/boardsource/3x4/3x4.h b/keyboards/boardsource/3x4/3x4.h
deleted file mode 100644
index a27d32c74f..0000000000
--- a/keyboards/boardsource/3x4/3x4.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#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/boardsource/3x4/config.h b/keyboards/boardsource/3x4/config.h
deleted file mode 100644
index b7a067bb6f..0000000000
--- a/keyboards/boardsource/3x4/config.h
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-#pragma once
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4273 // "Bs" - Boardsource
-#define PRODUCT_ID 0x0304 // 3x4
-#define DEVICE_VER 0x0000
-#define MANUFACTURER Boardsource
-#define PRODUCT 3x4
-
-/* key matrix size */
-#define MATRIX_ROWS 3
-#define MATRIX_COLS 4
-
-#define MATRIX_ROW_PINS {F7, F6, F5}
-#define MATRIX_COL_PINS {B6, B2, B3, B1}
-
-#define DIODE_DIRECTION COL2ROW
-
-#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 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
diff --git a/keyboards/boardsource/3x4/info.json b/keyboards/boardsource/3x4/info.json
index 649c35af3f..92ed37a63c 100644
--- a/keyboards/boardsource/3x4/info.json
+++ b/keyboards/boardsource/3x4/info.json
@@ -1,27 +1,40 @@
{
- "keyboard_name": "boardsource 4x3",
- "url": "https://boardsource.xyz",
- "maintainer": "boardsource",
- "layouts": {
-
- "LAYOUT": {
-
- "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": 0, "y": 1 },
- { "label": "K06", "x": 1, "y": 1 },
- { "label": "K07", "x": 2, "y": 1 },
- { "label": "K08", "x": 3, "y": 1 },
-
- { "label": "K09", "x": 0, "y": 2 },
- { "label": "K10", "x": 1, "y": 2 },
- { "label": "K11", "x": 2, "y": 2 },
- { "label": "K12", "x": 3, "y": 2 }
- ]
- }
+ "manufacturer": "Boardsource",
+ "keyboard_name": "3x4",
+ "maintainer": "waffle87",
+ "development_board": "promicro",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true
+ },
+ "matrix_pins": {
+ "cols": ["B6", "B2", "B3", "B1"],
+ "rows": ["F7", "F6", "F5"]
+ },
+ "url": "https://boardsource.xyz/store/5ecc2008eee64242946c98c1",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0304",
+ "vid": "0x4273"
+ },
+ "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": [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": [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 }
+ ]
}
+ }
}
diff --git a/keyboards/boardsource/3x4/keymaps/default/keymap.c b/keyboards/boardsource/3x4/keymaps/default/keymap.c
index dec66533ef..7601c63506 100644
--- a/keyboards/boardsource/3x4/keymaps/default/keymap.c
+++ b/keyboards/boardsource/3x4/keymaps/default/keymap.c
@@ -1,26 +1,16 @@
+// Copyright 2022 @waffle87
+// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
-enum layers {
- _MAIN,
- _RAISE,
- _LOWER,
-};
-
-// Readability keycodes
-#define LOWER MO(_LOWER)
-#define RAISE MO(_RAISE)
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [_MAIN] = LAYOUT(
- KC_0, KC_1, KC_4, KC_7,
- KC_ENT, KC_2, KC_5, KC_8,
- RAISE, KC_3, KC_6, KC_9
+ [0] = LAYOUT(
+ KC_0, KC_1, KC_4, KC_7,
+ KC_ENT, KC_2, KC_5, KC_8,
+ MO(1), KC_3, KC_6, KC_9
),
- [_RAISE] = LAYOUT(
+ [1] = LAYOUT(
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, QK_BOOT
)
-
};
diff --git a/keyboards/boardsource/3x4/keymaps/via/keymap.c b/keyboards/boardsource/3x4/keymaps/via/keymap.c
index d24d3acbf5..5aeef391a1 100644
--- a/keyboards/boardsource/3x4/keymaps/via/keymap.c
+++ b/keyboards/boardsource/3x4/keymaps/via/keymap.c
@@ -1,25 +1,26 @@
+// Copyright 2022 @gwillad
+// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- LAYOUT(
- KC_0, KC_1, KC_4, KC_7,
- KC_ENT, KC_2, KC_5, KC_8,
- MO(1), KC_3, KC_6, KC_9
- ),
- LAYOUT(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
- ),
- 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
- ),
- 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
- )
+ [0] = LAYOUT(
+ KC_0, KC_1, KC_4, KC_7,
+ KC_ENT, KC_2, KC_5, KC_8,
+ MO(1), KC_3, KC_6, KC_9
+ ),
+ [1] = LAYOUT(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, QK_BOOT
+ ),
+ [2] = LAYOUT(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
};
diff --git a/keyboards/boardsource/3x4/keymaps/via/readme.md b/keyboards/boardsource/3x4/keymaps/via/readme.md
deleted file mode 100644
index c68eb9cf5a..0000000000
--- a/keyboards/boardsource/3x4/keymaps/via/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The via keymap for boardsource 3x4 macropad
-
-This folder contains the [VIA](https://caniusevia.com/) configuration for the boardsource 3x4 macropad
-
-Maintained by: [gwillad](https://github.com/gwillad)
diff --git a/keyboards/boardsource/3x4/rules.mk b/keyboards/boardsource/3x4/rules.mk
index 3915b035eb..6e7633bfe0 100644
--- a/keyboards/boardsource/3x4/rules.mk
+++ b/keyboards/boardsource/3x4/rules.mk
@@ -1,17 +1 @@
-# 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 = 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
-AUDIO_ENABLE = no # Audio output
+# This file intentionally left blank
diff --git a/keyboards/boardsource/4x12/4x12.c b/keyboards/boardsource/4x12/4x12.c
deleted file mode 100644
index 2aec6900ad..0000000000
--- a/keyboards/boardsource/4x12/4x12.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "4x12.h"
diff --git a/keyboards/boardsource/4x12/4x12.h b/keyboards/boardsource/4x12/4x12.h
deleted file mode 100644
index 52c23708fa..0000000000
--- a/keyboards/boardsource/4x12/4x12.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#pragma once
-#include "quantum.h"
-
-#define LAYOUT_ortho_4x12( \
- 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/boardsource/4x12/config.h b/keyboards/boardsource/4x12/config.h
deleted file mode 100644
index 4df24944f8..0000000000
--- a/keyboards/boardsource/4x12/config.h
+++ /dev/null
@@ -1,68 +0,0 @@
-#pragma once
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4273 // "Bs" - Boardsource
-#define PRODUCT_ID 0x0412
-#define DEVICE_VER 0x0000
-#define MANUFACTURER Boardsource
-#define PRODUCT 4x12
-
-/* key matrix size */
-#define MATRIX_ROWS 4
-#define MATRIX_COLS 12
-#define MATRIX_ROW_PINS { D2, D3, D1, D0}
-#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, B5, B4, E6, D7 }
-
-#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 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
diff --git a/keyboards/boardsource/4x12/info.json b/keyboards/boardsource/4x12/info.json
index bb4acbbfe8..ec956ea6d7 100644
--- a/keyboards/boardsource/4x12/info.json
+++ b/keyboards/boardsource/4x12/info.json
@@ -1,62 +1,79 @@
{
- "keyboard_name": "Boardsource 4x12",
- "url": "https://boardsource.xyz",
- "maintainer": "Boardsource",
- "layouts": {
- "LAYOUT_ortho_4x12": {
- "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": 5, "y": 0 },
- { "label": "K07", "x": 6, "y": 0 },
- { "label": "K08", "x": 7, "y": 0 },
- { "label": "K09", "x": 8, "y": 0 },
- { "label": "K010", "x": 9, "y": 0 },
- { "label": "K011", "x": 10, "y": 0 },
- { "label": "K012", "x": 11, "y": 0 },
-
- { "label": "K11", "x": 0, "y": 1 },
- { "label": "K12", "x": 1, "y": 1 },
- { "label": "K13", "x": 2, "y": 1 },
- { "label": "K14", "x": 3, "y": 1 },
- { "label": "K15", "x": 4, "y": 1 },
- { "label": "K16", "x": 5, "y": 1 },
- { "label": "K17", "x": 6, "y": 1 },
- { "label": "K18", "x": 7, "y": 1 },
- { "label": "K19", "x": 8, "y": 1 },
- { "label": "K110", "x": 9, "y": 1 },
- { "label": "K111", "x": 10, "y": 1 },
- { "label": "K112", "x": 11, "y": 1 },
-
- { "label": "K21", "x": 0, "y": 2 },
- { "label": "K22", "x": 1, "y": 2 },
- { "label": "K23", "x": 2, "y": 2 },
- { "label": "K24", "x": 3, "y": 2 },
- { "label": "K25", "x": 4, "y": 2 },
- { "label": "K26", "x": 5, "y": 2 },
- { "label": "K27", "x": 6, "y": 2 },
- { "label": "K28", "x": 7, "y": 2 },
- { "label": "K29", "x": 8, "y": 2 },
- { "label": "K210", "x": 9, "y": 2 },
- { "label": "K211", "x": 10, "y": 2 },
- { "label": "K212", "x": 11, "y": 2 },
-
- { "label": "K31", "x": 0, "y": 3 },
- { "label": "K32", "x": 1, "y": 3 },
- { "label": "K33", "x": 2, "y": 3 },
- { "label": "K34", "x": 3, "y": 3 },
- { "label": "K35", "x": 4, "y": 3 },
- { "label": "K36", "x": 5, "y": 3 },
- { "label": "K37", "x": 6, "y": 3 },
- { "label": "K38", "x": 7, "y": 3 },
- { "label": "K39", "x": 8, "y": 3 },
- { "label": "K310", "x": 9, "y": 3 },
- { "label": "K311", "x": 10, "y": 3 },
- { "label": "K312", "x": 11, "y": 3 }
- ]
- }
+ "manufacturer": "Boardsource",
+ "keyboard_name": "4x12",
+ "maintainer": "waffle87",
+ "development_board": "promicro",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true
+ },
+ "matrix_pins": {
+ "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6", "B5", "B4", "E6", "D7"],
+ "rows": ["D2", "D3", "D1", "D0"]
+ },
+ "url": "https://boardsource.xyz/store/5ecb78d286879c9a0c22dafd",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0412",
+ "vid": "0x4273"
+ },
+ "community_layouts": [
+ "ortho_4x12"
+ ],
+ "layouts": {
+ "LAYOUT_ortho_4x12": {
+ "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": [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": [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": [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 }
+ ]
}
+ }
}
diff --git a/keyboards/boardsource/4x12/keymaps/codecoffeecode/keymap.c b/keyboards/boardsource/4x12/keymaps/codecoffeecode/keymap.c
index 0ea2b4cef4..102c3b2b42 100644
--- a/keyboards/boardsource/4x12/keymaps/codecoffeecode/keymap.c
+++ b/keyboards/boardsource/4x12/keymaps/codecoffeecode/keymap.c
@@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
_______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, _______, _______, KC_F11, KC_F12, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Layer _RAISE
diff --git a/keyboards/boardsource/4x12/keymaps/default/keymap.c b/keyboards/boardsource/4x12/keymaps/default/keymap.c
index 17823f36c9..bb192c613d 100644
--- a/keyboards/boardsource/4x12/keymaps/default/keymap.c
+++ b/keyboards/boardsource/4x12/keymaps/default/keymap.c
@@ -1,3 +1,5 @@
+// Copyright 2022 @waffle87
+// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layers {
@@ -6,31 +8,26 @@ enum layers {
_LOWER,
};
-// Readability keycodes
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[_MAIN] = 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_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
-
[_RAISE] = 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, _______,
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, 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_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, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
-
[_LOWER] = 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
+ 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/keyboards/boardsource/4x12/keymaps/via/keymap.c b/keyboards/boardsource/4x12/keymaps/via/keymap.c
index 17823f36c9..b6e26fbeca 100644
--- a/keyboards/boardsource/4x12/keymaps/via/keymap.c
+++ b/keyboards/boardsource/4x12/keymaps/via/keymap.c
@@ -1,3 +1,5 @@
+// Copyright 2022 @gwillad
+// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layers {
@@ -6,31 +8,32 @@ enum layers {
_LOWER,
};
-// Readability keycodes
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[_MAIN] = 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_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
-
[_RAISE] = 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, _______,
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, 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_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, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
-
[_LOWER] = 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
+ 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
+ ),
+ [4] = LAYOUT_ortho_4x12(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
-
};
diff --git a/keyboards/boardsource/4x12/keymaps/via/readme.md b/keyboards/boardsource/4x12/keymaps/via/readme.md
deleted file mode 100644
index 534633d45e..0000000000
--- a/keyboards/boardsource/4x12/keymaps/via/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The via keymap for boardsource 4x12 ortholinear keybaoard
-
-This folder contains the [VIA](https://caniusevia.com/) configuration for the boardsource 4x12 ortholinear keybaoard
-
-Maintained by: [gwillad](https://github.com/gwillad)
diff --git a/keyboards/boardsource/4x12/rules.mk b/keyboards/boardsource/4x12/rules.mk
index 061f93abf6..6e7633bfe0 100644
--- a/keyboards/boardsource/4x12/rules.mk
+++ b/keyboards/boardsource/4x12/rules.mk
@@ -1,24 +1 @@
-# 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 = 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
-AUDIO_ENABLE = no # Audio output
-
-LAYOUTS = ortho_4x12
-
-# Disable unsupported hardware
-RGBLIGHT_SUPPORTED = no
-AUDIO_SUPPORTED = no
-BACKLIGHT_SUPPORTED = no
+# This file intentionally left blank
diff --git a/keyboards/boardsource/5x12/5x12.c b/keyboards/boardsource/5x12/5x12.c
deleted file mode 100644
index 579cd5effc..0000000000
--- a/keyboards/boardsource/5x12/5x12.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "5x12.h" \ No newline at end of file
diff --git a/keyboards/boardsource/5x12/5x12.h b/keyboards/boardsource/5x12/5x12.h
deleted file mode 100644
index bbc0689b44..0000000000
--- a/keyboards/boardsource/5x12/5x12.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#pragma once
-#include "quantum.h"
-
-#define LAYOUT_ortho_5x12( \
- 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 \
- ) { \
- {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} \
- }
-
diff --git a/keyboards/boardsource/5x12/config.h b/keyboards/boardsource/5x12/config.h
deleted file mode 100644
index f70dec9efb..0000000000
--- a/keyboards/boardsource/5x12/config.h
+++ /dev/null
@@ -1,69 +0,0 @@
-#pragma once
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4273 // "Bs" - Boardsource
-#define PRODUCT_ID 0x0512
-#define DEVICE_VER 0x0000
-#define MANUFACTURER Boardsource
-#define PRODUCT 5x12
-
-/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 12
-#define MATRIX_ROW_PINS { D2, D3, D1, D0, D4 }
-#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, B5, B4, E6, D7 }
-
-/* 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 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
diff --git a/keyboards/boardsource/5x12/info.json b/keyboards/boardsource/5x12/info.json
index 92debddd92..b251dd9319 100644
--- a/keyboards/boardsource/5x12/info.json
+++ b/keyboards/boardsource/5x12/info.json
@@ -1,75 +1,91 @@
{
- "keyboard_name": "boardsource 5x12",
- "url": "https://boardsource.xyz",
- "maintainer": "boardsource",
- "layouts": {
- "LAYOUT_ortho_5x12": {
- "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": 5, "y": 0 },
- { "label": "K07", "x": 6, "y": 0 },
- { "label": "K08", "x": 7, "y": 0 },
- { "label": "K09", "x": 8, "y": 0 },
- { "label": "K010", "x": 9, "y": 0 },
- { "label": "K011", "x": 10, "y": 0 },
- { "label": "K012", "x": 11, "y": 0 },
-
- { "label": "K11", "x": 0, "y": 1 },
- { "label": "K12", "x": 1, "y": 1 },
- { "label": "K13", "x": 2, "y": 1 },
- { "label": "K14", "x": 3, "y": 1 },
- { "label": "K15", "x": 4, "y": 1 },
- { "label": "K16", "x": 5, "y": 1 },
- { "label": "K17", "x": 6, "y": 1 },
- { "label": "K18", "x": 7, "y": 1 },
- { "label": "K19", "x": 8, "y": 1 },
- { "label": "K110", "x": 9, "y": 1 },
- { "label": "K111", "x": 10, "y": 1 },
- { "label": "K112", "x": 11, "y": 1 },
-
- { "label": "K21", "x": 0, "y": 2 },
- { "label": "K22", "x": 1, "y": 2 },
- { "label": "K23", "x": 2, "y": 2 },
- { "label": "K24", "x": 3, "y": 2 },
- { "label": "K25", "x": 4, "y": 2 },
- { "label": "K26", "x": 5, "y": 2 },
- { "label": "K27", "x": 6, "y": 2 },
- { "label": "K28", "x": 7, "y": 2 },
- { "label": "K29", "x": 8, "y": 2 },
- { "label": "K210", "x": 9, "y": 2 },
- { "label": "K211", "x": 10, "y": 2 },
- { "label": "K212", "x": 11, "y": 2 },
-
- { "label": "K31", "x": 0, "y": 3 },
- { "label": "K32", "x": 1, "y": 3 },
- { "label": "K33", "x": 2, "y": 3 },
- { "label": "K34", "x": 3, "y": 3 },
- { "label": "K35", "x": 4, "y": 3 },
- { "label": "K36", "x": 5, "y": 3 },
- { "label": "K37", "x": 6, "y": 3 },
- { "label": "K38", "x": 7, "y": 3 },
- { "label": "K39", "x": 8, "y": 3 },
- { "label": "K310", "x": 9, "y": 3 },
- { "label": "K311", "x": 10, "y": 3 },
- { "label": "K312", "x": 11, "y": 3 },
-
- { "label": "K41", "x": 0, "y": 4 },
- { "label": "K42", "x": 1, "y": 4 },
- { "label": "K43", "x": 2, "y": 4 },
- { "label": "K44", "x": 3, "y": 4 },
- { "label": "K45", "x": 4, "y": 4 },
- { "label": "K46", "x": 5, "y": 4 },
- { "label": "K47", "x": 6, "y": 4 },
- { "label": "K48", "x": 7, "y": 4 },
- { "label": "K49", "x": 8, "y": 4 },
- { "label": "K410", "x": 9, "y": 4 },
- { "label": "K411", "x": 10, "y": 4 },
- { "label": "K412", "x": 11, "y": 4 }
- ]
- }
+ "manufacturer": "Boardsource",
+ "keyboard_name": "5x12",
+ "maintainer": "waffle87",
+ "development_board": "promicro",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true
+ },
+ "matrix_pins": {
+ "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6", "B5", "B4", "E6", "D7"],
+ "rows": ["D2", "D3", "D1", "D0", "D4"]
+ },
+ "url": "https://boardsource.xyz/store/5ecb802c86879c9a0c22db61",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0512",
+ "vid": "0x4273"
+ },
+ "community_layouts": [
+ "ortho_5x12"
+ ],
+ "layouts": {
+ "LAYOUT_ortho_5x12": {
+ "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": [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": [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": [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": [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 }
+ ]
}
+ }
}
diff --git a/keyboards/boardsource/5x12/keymaps/default/keymap.c b/keyboards/boardsource/5x12/keymaps/default/keymap.c
index 0f2534bbe8..829da5be7f 100644
--- a/keyboards/boardsource/5x12/keymaps/default/keymap.c
+++ b/keyboards/boardsource/5x12/keymaps/default/keymap.c
@@ -1,3 +1,5 @@
+// Copyright 2022 @waffle87
+// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layers {
@@ -6,34 +8,29 @@ enum layers {
_LOWER,
};
-// Readability keycodes
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[_MAIN] = 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_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, 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_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_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
-
[_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,
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, 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_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,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
-
[_LOWER] = 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ KC_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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
-
};
diff --git a/keyboards/boardsource/5x12/keymaps/via/keymap.c b/keyboards/boardsource/5x12/keymaps/via/keymap.c
index 0a7eb43631..d820b61427 100644
--- a/keyboards/boardsource/5x12/keymaps/via/keymap.c
+++ b/keyboards/boardsource/5x12/keymaps/via/keymap.c
@@ -1,3 +1,5 @@
+// Copyright 2022 @gwillad
+// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layers {
@@ -6,42 +8,36 @@ enum layers {
_LOWER,
};
-// Readability keycodes
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[_MAIN] = 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_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, 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_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_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
-
[_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,
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, 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_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,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
-
[_LOWER] = 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ KC_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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
-
[3] = LAYOUT_ortho_5x12(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
-
};
diff --git a/keyboards/boardsource/5x12/keymaps/via/readme.md b/keyboards/boardsource/5x12/keymaps/via/readme.md
deleted file mode 100644
index d088e0a64c..0000000000
--- a/keyboards/boardsource/5x12/keymaps/via/readme.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# The via keymap for boardsource 5x12 ortholinear keyboard
-
-This folder contains the [VIA](https://caniusevia.com/) configuration for the boardsource 5x12 ortholinear keyboard
-
-Maintained by: [gwillad](https://github.com/gwillad)
diff --git a/keyboards/boardsource/5x12/rules.mk b/keyboards/boardsource/5x12/rules.mk
index 0727732ac6..6e7633bfe0 100644
--- a/keyboards/boardsource/5x12/rules.mk
+++ b/keyboards/boardsource/5x12/rules.mk
@@ -1,24 +1 @@
-# 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 = 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
-AUDIO_ENABLE = no # Audio output
-
-LAYOUTS = ortho_5x12
-
-# Disable unsupported hardware
-RGBLIGHT_SUPPORTED = no
-AUDIO_SUPPORTED = no
-BACKLIGHT_SUPPORTED = no
+# This file intentionally left blank
diff --git a/keyboards/boardsource/beiwagon/beiwagon.c b/keyboards/boardsource/beiwagon/beiwagon.c
deleted file mode 100644
index f4ba170e6e..0000000000
--- a/keyboards/boardsource/beiwagon/beiwagon.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright 2020 Boardsource
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "beiwagon.h"
-#ifdef RGB_MATRIX_ENABLE
-led_config_t g_led_config = { {
- {7,8,9},
- {10,11,12},
- {13,14,15},
- {16,17,18}
-}, {
- {2, 0}, {1, 0}, {0, 0},
- {2, 1}, {1, 1}, {0, 1},
- {2, 2}, {1, 2}, {0, 2},
- {2, 3}, {1, 3}, {0, 3},
-}, {
- 2, 2, 2, 2, 2, 2,
- 1, 1, 1,
- 1, 4, 1,
- 1, 4, 1,
- 1, 1, 1
-
-} };
-#endif
-
diff --git a/keyboards/boardsource/beiwagon/beiwagon.h b/keyboards/boardsource/beiwagon/beiwagon.h
deleted file mode 100644
index ed5d516529..0000000000
--- a/keyboards/boardsource/beiwagon/beiwagon.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright 2020 Boardsource
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have 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, \
- K10, K11, K12, \
- K20, K21, K22, \
- K30, K31, K32\
- ) { \
- {K00, K01, K02 }, \
- {K10, K11, K12 }, \
- {K20, K21, K22 }, \
- {K30, K31, K32 } \
- }
-
diff --git a/keyboards/boardsource/beiwagon/config.h b/keyboards/boardsource/beiwagon/config.h
index 72386c4236..6ce8d2d420 100644
--- a/keyboards/boardsource/beiwagon/config.h
+++ b/keyboards/boardsource/beiwagon/config.h
@@ -1,5 +1,5 @@
/*
-Copyright 2020 Boardsource
+Copyright 2022 Boardsource
This 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,62 +16,18 @@ 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 0x4273
-#define PRODUCT_ID 0x0066
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Boardsource
-#define PRODUCT Beiwagon
-
-/* key matrix size */
-#define MATRIX_ROWS 4
-#define MATRIX_COLS 3
-
-/*
- * 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 {B5,B6,B7}
-#define UNUSED_PINS
-
-/* COL2ROW, ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-
-//#define BACKLIGHT_PIN B7
-//#define BACKLIGHT_LEVELS 3
-#define BACKLIGHT_BREATHING
-#define RGBLIGHT_ANIMATIONS
#define RGB_DI_PIN C6
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
-// 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 DRIVER_LED_TOTAL 18
#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
@@ -85,81 +41,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
-#ifdef RGBLIGHT_ENABLE
-#define RGBLED_NUM 6 // Number of LEDs
-#endif
-
-#define DRIVER_LED_TOTAL 22
-
-/* 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
-
-/* Bootmagic Lite key configuration */
-//#define BOOTMAGIC_LITE_ROW 0
-//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/boardsource/beiwagon/info.json b/keyboards/boardsource/beiwagon/info.json
index 6f7518b858..69ce8d96f1 100644
--- a/keyboards/boardsource/beiwagon/info.json
+++ b/keyboards/boardsource/beiwagon/info.json
@@ -1,26 +1,64 @@
{
- "keyboard_name": "Beiwagon",
- "url": "",
- "maintainer": "Boardsource",
- "layouts": {
- "LAYOUT": {
- "layout": [
- { "label": "k00", "x": 0, "y": 0 },
- { "label": "k01", "x": 1, "y": 0 },
- { "label": "k02", "x": 2, "y": 0 },
-
- { "label": "k10", "x": 0, "y": 1 },
- { "label": "k11", "x": 1, "y": 1 },
- { "label": "k12", "x": 2, "y": 1 },
-
- { "label": "k20", "x": 0, "y": 2 },
- { "label": "k21", "x": 1, "y": 2 },
- { "label": "k22", "x": 2, "y": 2 },
-
- { "label": "k30", "x": 0, "y": 3 },
- { "label": "k31", "x": 1, "y": 3 },
- { "label": "k32", "x": 2, "y": 3 }
- ]
- }
+ "manufacturer": "Boardsource",
+ "keyboard_name": "Beiwagon",
+ "maintainer": "waffle87",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": false,
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "cols": ["B5", "B6", "B7"],
+ "rows": ["B0", "B1", "B2", "B3"]
+ },
+ "processor": "atmega32u4",
+ "url": "https://boardsource.xyz/store/5ffbfe2ab855550844cab109",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0066",
+ "vid": "0x4273"
+ },
+ "rgb_matrix": {
+ "layout": [
+ { "flags": 2, "x": 16, "y": 38 },
+ { "flags": 2, "x": 16, "y": 113 },
+ { "flags": 2, "x": 16, "y": 188 },
+ { "flags": 2, "x": 48, "y": 38 },
+ { "flags": 2, "x": 48, "y": 113 },
+ { "flags": 2, "x": 48, "y": 188 },
+ { "flags": 4, "matrix": [0, 0], "x": 0, "y": 0 },
+ { "flags": 4, "matrix": [0, 1], "x": 32, "y": 0 },
+ { "flags": 4, "matrix": [0, 2], "x": 64, "y": 0 },
+ { "flags": 4, "matrix": [1, 0], "x": 0, "y": 75 },
+ { "flags": 4, "matrix": [1, 1], "x": 32, "y": 75 },
+ { "flags": 4, "matrix": [1, 2], "x": 64, "y": 75 },
+ { "flags": 4, "matrix": [2, 0], "x": 0, "y": 150 },
+ { "flags": 4, "matrix": [2, 1], "x": 32, "y": 150 },
+ { "flags": 4, "matrix": [2, 2], "x": 64, "y": 150 },
+ { "flags": 4, "matrix": [3, 0], "x": 0, "y": 224 },
+ { "flags": 4, "matrix": [3, 1], "x": 32, "y": 224 },
+ { "flags": 4, "matrix": [3, 2], "x": 64, "y": 224 }
+ ]
+ },
+ "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": [1, 0], "x": 0, "y": 1 },
+ { "matrix": [1, 1], "x": 1, "y": 1 },
+ { "matrix": [1, 2], "x": 2, "y": 1 },
+ { "matrix": [2, 0], "x": 0, "y": 2 },
+ { "matrix": [2, 1], "x": 1, "y": 2 },
+ { "matrix": [2, 2], "x": 2, "y": 2 },
+ { "matrix": [3, 0], "x": 0, "y": 3 },
+ { "matrix": [3, 1], "x": 1, "y": 3 },
+ { "matrix": [3, 2], "x": 2, "y": 3 }
+ ]
}
+ }
}
diff --git a/keyboards/boardsource/beiwagon/keymaps/default/keymap.c b/keyboards/boardsource/beiwagon/keymaps/default/keymap.c
index 396a0c7207..584ada4830 100644
--- a/keyboards/boardsource/beiwagon/keymaps/default/keymap.c
+++ b/keyboards/boardsource/beiwagon/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Boardsource
+/* Copyright 2022 Boardsource
*
* This 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,30 +18,23 @@
enum layers {
_MAIN,
- _RAISE,
- _LOWER,
+ _RAISE
};
-// Readability keycodes
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[_MAIN] = LAYOUT(
KC_7, KC_8, KC_9,
KC_4, KC_5, KC_6,
KC_1, KC_2, KC_3,
KC_0, KC_PENT,RAISE
),
-
[_RAISE] = LAYOUT(
KC_7, KC_8, RGB_TOG,
KC_4, KC_5, RGB_MOD,
KC_1, KC_2, KC_3,
- KC_0, KC_PENT,KC_TRNS
-
+ KC_0, KC_PENT,_______
)
-
};
-
diff --git a/keyboards/boardsource/beiwagon/keymaps/default/readme.md b/keyboards/boardsource/beiwagon/keymaps/default/readme.md
deleted file mode 100644
index 95f466aa83..0000000000
--- a/keyboards/boardsource/beiwagon/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The default keymap for Beiwagon
diff --git a/keyboards/boardsource/beiwagon/keymaps/via/keymap.c b/keyboards/boardsource/beiwagon/keymaps/via/keymap.c
index 396a0c7207..ca068adab4 100644
--- a/keyboards/boardsource/beiwagon/keymaps/via/keymap.c
+++ b/keyboards/boardsource/beiwagon/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Boardsource
+/* Copyright 2022 Boardsource
*
* This 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,30 +18,35 @@
enum layers {
_MAIN,
- _RAISE,
- _LOWER,
+ _RAISE
};
-// Readability keycodes
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[_MAIN] = LAYOUT(
KC_7, KC_8, KC_9,
KC_4, KC_5, KC_6,
KC_1, KC_2, KC_3,
KC_0, KC_PENT,RAISE
),
-
[_RAISE] = LAYOUT(
KC_7, KC_8, RGB_TOG,
KC_4, KC_5, RGB_MOD,
KC_1, KC_2, KC_3,
- KC_0, KC_PENT,KC_TRNS
-
+ KC_0, KC_PENT,_______
+ ),
+ [2] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
)
-
};
-
diff --git a/keyboards/boardsource/beiwagon/keymaps/via/readme.md b/keyboards/boardsource/beiwagon/keymaps/via/readme.md
deleted file mode 100644
index f1b294c22a..0000000000
--- a/keyboards/boardsource/beiwagon/keymaps/via/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The via keymap for Beiwagon
diff --git a/keyboards/boardsource/beiwagon/rules.mk b/keyboards/boardsource/beiwagon/rules.mk
index 612dcfcfb6..32afd21635 100644
--- a/keyboards/boardsource/beiwagon/rules.mk
+++ b/keyboards/boardsource/beiwagon/rules.mk
@@ -1,20 +1 @@
-# 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 = 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/boardsource/holiday/spooky/config.h b/keyboards/boardsource/holiday/spooky/config.h
deleted file mode 100644
index 87d63b0d9e..0000000000
--- a/keyboards/boardsource/holiday/spooky/config.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
-Copyright 2020 boardsource
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have 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 0x4273
-#define PRODUCT_ID 0x1031
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Boardsource
-#define PRODUCT spooky
-
-/* key matrix size */
-#define MATRIX_ROWS 2
-#define MATRIX_COLS 3
-
-#define DIRECT_PINS { {E6,B4,B5}, {B3,B2,B6}}
-
-#define RGB_DI_PIN D3
-#define RGBLIGHT_ANIMATIONS
-#ifdef RGBLIGHT_ENABLE
-#define RGBLED_NUM 5 // Number of LEDs
-#endif
-
-
-//#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
-
-/* Bootmagic Lite key configuration */
-//#define BOOTMAGIC_LITE_ROW 0
-//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/boardsource/holiday/spooky/info.json b/keyboards/boardsource/holiday/spooky/info.json
index c942b2af11..56be9f7d26 100644
--- a/keyboards/boardsource/holiday/spooky/info.json
+++ b/keyboards/boardsource/holiday/spooky/info.json
@@ -1,18 +1,46 @@
{
- "keyboard_name": "spooky",
- "url": "https://boardsource.xyz/store/5f783f6da2c1b43e37ca0795",
- "maintainer": "boardsource",
- "layouts": {
- "LAYOUT_ortho_2x3": {
- "layout": [
- { "label": "k00", "x": 0, "y": 0 },
- { "label": "k01", "x": 1, "y": 0 },
- { "label": "k02", "x": 2, "y": 0 },
-
- { "label": "k10", "x": 0, "y": 1 },
- { "label": "k11", "x": 1, "y": 1 },
- { "label": "k12", "x": 2, "y": 1 }
- ]
- }
+ "manufacturer": "Boardsource",
+ "keyboard_name": "Spooky",
+ "maintainer": "waffle87",
+ "development_board": "promicro",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "rgblight": true
+ },
+ "matrix_pins": {
+ "direct": [
+ ["E6", "B4", "B5"],
+ ["B3", "B2", "B6"]
+ ]
+ },
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x1031",
+ "vid": "0x4273"
+ },
+ "rgblight": {
+ "led_count": 5,
+ "pin": "D3",
+ "sleep": true,
+ "animations": {
+ "all": true
}
+ },
+ "community_layouts": [
+ "ortho_2x3"
+ ],
+ "layouts": {
+ "LAYOUT_ortho_2x3": {
+ "layout": [
+ { "matrix": [0, 0], "x": 0, "y": 0 },
+ { "matrix": [0, 1], "x": 1, "y": 0 },
+ { "matrix": [0, 2], "x": 2, "y": 0 },
+ { "matrix": [1, 0], "x": 0, "y": 1 },
+ { "matrix": [1, 1], "x": 1, "y": 1 },
+ { "matrix": [1, 2], "x": 2, "y": 1 }
+ ]
+ }
+ }
}
diff --git a/keyboards/boardsource/holiday/spooky/keymaps/default/keymap.c b/keyboards/boardsource/holiday/spooky/keymaps/default/keymap.c
index 63fbb1b94c..96c21f53f3 100644
--- a/keyboards/boardsource/holiday/spooky/keymaps/default/keymap.c
+++ b/keyboards/boardsource/holiday/spooky/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 boardsource
+/* Copyright 2022 boardsource
*
* This 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,15 +15,9 @@
*/
#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] = {
- /* Base */
- [_BASE] = LAYOUT_ortho_2x3(
+ [0] = LAYOUT_ortho_2x3(
KC_F1, KC_F2, KC_F3,
KC_F4, KC_F5, KC_F6
- ),
- };
+ )
+};
diff --git a/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c b/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c
index eb56d11735..0afc136854 100644
--- a/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c
+++ b/keyboards/boardsource/holiday/spooky/keymaps/rip_mx/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 boardsource
+/* Copyright 2022 boardsource
*
* This 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,17 +15,11 @@
*/
#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] = {
- /* Base */
- [_BASE] = LAYOUT_ortho_2x3(
+ [0] = LAYOUT_ortho_2x3(
RGB_TOG, KC_VOLU, KC_F2,
RGB_MOD, KC_VOLD, KC_F1
- ),
+ )
};
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
@@ -34,46 +28,44 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
static void render_RIP(void) {
static const char PROGMEM my_logo[] = {
-0xff, 0xff, 0x07, 0x1e, 0x70, 0xc0, 0x00, 0x00, 0xe0, 0x78, 0x1e, 0x07, 0xff, 0xfe, 0x00, 0x00,
-0x00, 0x00, 0x03, 0x06, 0x1c, 0xb8, 0xf0, 0xe0, 0xb8, 0x1c, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3e, 0x66, 0x63, 0x63, 0x43, 0x43, 0xc3, 0xc2, 0x82,
-0x00, 0x00, 0x00, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0xc0, 0xf0, 0x30, 0xf0, 0x80, 0x00, 0x00, 0xc0,
-0xf0, 0x10, 0x00, 0x00, 0x00, 0xf3, 0xf3, 0x00, 0x00, 0x10, 0x18, 0xfe, 0x18, 0x10, 0x10, 0x10,
-0x00, 0x00, 0xc0, 0xe0, 0x30, 0x10, 0x18, 0x18, 0x18, 0x10, 0x10, 0x00, 0x00, 0x00, 0xff, 0xff,
-0x30, 0x10, 0x18, 0x18, 0x18, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0x90, 0x90, 0x98,
-0x98, 0x98, 0xb0, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x90, 0x98, 0x98, 0x18, 0x18, 0x10, 0x00,
-0x1f, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00,
-0x00, 0x10, 0x1c, 0x0e, 0x07, 0x01, 0x00, 0x00, 0x01, 0x07, 0x0e, 0x1c, 0x18, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x18, 0x18, 0x10, 0x10, 0x18, 0x18, 0x0d, 0x0f,
-0x03, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x1e, 0x1e, 0x07, 0x00, 0x00, 0x01, 0x0f, 0x1c, 0x1e, 0x07,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0c, 0x18, 0x18, 0x18,
-0x00, 0x00, 0x03, 0x0f, 0x0c, 0x18, 0x10, 0x10, 0x10, 0x18, 0x08, 0x00, 0x00, 0x00, 0x1f, 0x1f,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x08, 0x18, 0x10,
-0x10, 0x10, 0x18, 0x18, 0x08, 0x00, 0x00, 0x08, 0x18, 0x10, 0x11, 0x11, 0x11, 0x19, 0x0f, 0x0e,
-0x00, 0x30, 0x30, 0x10, 0x10, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0,
-0x30, 0x10, 0x18, 0x18, 0x10, 0x70, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x40, 0xf0, 0xb0, 0x10, 0x18,
-0x18, 0x10, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x70, 0x10, 0x18, 0x18, 0x10, 0x30,
-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, 0x30, 0x10, 0x10, 0x18, 0x18, 0x18,
-0x10, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0x30, 0x10, 0x18, 0x10, 0x30, 0xf0,
-0xe0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x10, 0x18, 0x18, 0x10, 0x30, 0xf0, 0xe0, 0x00, 0x00,
-0x00, 0x00, 0xc0, 0xe0, 0x30, 0x10, 0x18, 0x18, 0x10, 0x30, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc7,
-0xc4, 0x8c, 0x8c, 0xcc, 0xc4, 0x77, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x38, 0x7d, 0xc7, 0xc3, 0x82,
-0x82, 0xc3, 0xc7, 0x7d, 0x7c, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x70, 0xc0, 0x80, 0x80, 0xc0, 0xc0,
-0x7f, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08,
-0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xf0, 0xd8, 0xcc,
-0xc6, 0xc3, 0xc1, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x70, 0xc0, 0xc0, 0x80, 0xc0, 0xc0, 0x70,
-0x3f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xd8, 0xcc, 0xcc, 0xc7, 0xc3, 0xc1, 0x00, 0x00,
-0x00, 0x00, 0x3f, 0x7f, 0xe0, 0xc0, 0x80, 0x80, 0xc0, 0x60, 0x7f, 0x1f, 0x00, 0x00, 0x00, 0x00
- };
-
+ 0xff, 0xff, 0x07, 0x1e, 0x70, 0xc0, 0x00, 0x00, 0xe0, 0x78, 0x1e, 0x07, 0xff, 0xfe, 0x00, 0x00,
+ 0x00, 0x00, 0x03, 0x06, 0x1c, 0xb8, 0xf0, 0xe0, 0xb8, 0x1c, 0x0e, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3e, 0x66, 0x63, 0x63, 0x43, 0x43, 0xc3, 0xc2, 0x82,
+ 0x00, 0x00, 0x00, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0xc0, 0xf0, 0x30, 0xf0, 0x80, 0x00, 0x00, 0xc0,
+ 0xf0, 0x10, 0x00, 0x00, 0x00, 0xf3, 0xf3, 0x00, 0x00, 0x10, 0x18, 0xfe, 0x18, 0x10, 0x10, 0x10,
+ 0x00, 0x00, 0xc0, 0xe0, 0x30, 0x10, 0x18, 0x18, 0x18, 0x10, 0x10, 0x00, 0x00, 0x00, 0xff, 0xff,
+ 0x30, 0x10, 0x18, 0x18, 0x18, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0x90, 0x90, 0x98,
+ 0x98, 0x98, 0xb0, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x90, 0x98, 0x98, 0x18, 0x18, 0x10, 0x00,
+ 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00,
+ 0x00, 0x10, 0x1c, 0x0e, 0x07, 0x01, 0x00, 0x00, 0x01, 0x07, 0x0e, 0x1c, 0x18, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x18, 0x18, 0x10, 0x10, 0x18, 0x18, 0x0d, 0x0f,
+ 0x03, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x1e, 0x1e, 0x07, 0x00, 0x00, 0x01, 0x0f, 0x1c, 0x1e, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0c, 0x18, 0x18, 0x18,
+ 0x00, 0x00, 0x03, 0x0f, 0x0c, 0x18, 0x10, 0x10, 0x10, 0x18, 0x08, 0x00, 0x00, 0x00, 0x1f, 0x1f,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x08, 0x18, 0x10,
+ 0x10, 0x10, 0x18, 0x18, 0x08, 0x00, 0x00, 0x08, 0x18, 0x10, 0x11, 0x11, 0x11, 0x19, 0x0f, 0x0e,
+ 0x00, 0x30, 0x30, 0x10, 0x10, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0,
+ 0x30, 0x10, 0x18, 0x18, 0x10, 0x70, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x40, 0xf0, 0xb0, 0x10, 0x18,
+ 0x18, 0x10, 0x30, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x70, 0x10, 0x18, 0x18, 0x10, 0x30,
+ 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, 0x30, 0x10, 0x10, 0x18, 0x18, 0x18,
+ 0x10, 0x30, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf0, 0x30, 0x10, 0x18, 0x10, 0x30, 0xf0,
+ 0xe0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x10, 0x18, 0x18, 0x10, 0x30, 0xf0, 0xe0, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0xe0, 0x30, 0x10, 0x18, 0x18, 0x10, 0x30, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc7,
+ 0xc4, 0x8c, 0x8c, 0xcc, 0xc4, 0x77, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x38, 0x7d, 0xc7, 0xc3, 0x82,
+ 0x82, 0xc3, 0xc7, 0x7d, 0x7c, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x70, 0xc0, 0x80, 0x80, 0xc0, 0xc0,
+ 0x7f, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xf0, 0xd8, 0xcc,
+ 0xc6, 0xc3, 0xc1, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0x3f, 0x70, 0xc0, 0xc0, 0x80, 0xc0, 0xc0, 0x70,
+ 0x3f, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0xd8, 0xcc, 0xcc, 0xc7, 0xc3, 0xc1, 0x00, 0x00,
+ 0x00, 0x00, 0x3f, 0x7f, 0xe0, 0xc0, 0x80, 0x80, 0xc0, 0x60, 0x7f, 0x1f, 0x00, 0x00, 0x00, 0x00
+ };
oled_write_raw_P(my_logo, sizeof(my_logo));
}
bool oled_task_user(void) {
render_RIP();
- return false;
- }
-
+ return false;
+}
#endif
diff --git a/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c b/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c
index f8cac50875..1ddad75827 100644
--- a/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c
+++ b/keyboards/boardsource/holiday/spooky/keymaps/rip_my_wallet/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 boardsource
+/* Copyright 2022 boardsource
*
* This 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,18 +15,13 @@
*/
#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] = {
- /* Base */
- [_BASE] = LAYOUT_ortho_2x3(
+ [0] = LAYOUT_ortho_2x3(
RGB_TOG, KC_1, KC_2,
RGB_MOD, KC_3,KC_4
- ),
+ )
};
+
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180;
@@ -34,46 +29,44 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
static void render_RIP(void) {
static const char PROGMEM my_logo[] = {
-0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x08, 0x04,
-0x04, 0x7c, 0xfc, 0xf0, 0x00, 0x00, 0x40, 0x20, 0xf0, 0x7c, 0x06, 0x00, 0x41, 0xc0, 0x00, 0x00,
-0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0xc0, 0x00,
-0x00, 0x00, 0xe0, 0x60, 0x00, 0x80, 0x40, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x3c, 0x02,
-0x01, 0xc1, 0xf8, 0x0e, 0x00, 0x01, 0xc0, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x50, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 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, 0x10, 0x00, 0x08,
-0x03, 0x00, 0x00, 0x0f, 0x06, 0x01, 0x00, 0x1e, 0x1f, 0x10, 0x00, 0x00, 0x1e, 0x1f, 0x08, 0xc0,
-0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1e, 0x11, 0x08, 0x04, 0x1e, 0x11, 0x00,
-0x08, 0x06, 0x01, 0x00, 0x1e, 0x19, 0x08, 0x00, 0x1e, 0x0b, 0x08, 0x00, 0x1f, 0x1b, 0x08, 0x00,
-0x18, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x12, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x19, 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, 0x0c,
-0x84, 0x84, 0x84, 0xcc, 0x38, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x04, 0x05, 0x0f, 0x79, 0xe1, 0x00,
-0x00, 0x00, 0xc0, 0x78, 0x0c, 0x00, 0x00, 0x0c, 0x84, 0x84, 0xcc, 0xf8, 0x30, 0x00, 0x00, 0xe0,
-0xf8, 0x0c, 0x04, 0x04, 0x0c, 0xf8, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x00, 0x00, 0x08, 0x0c,
-0x04, 0x04, 0xcc, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x0c, 0x04, 0x0c, 0x18, 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, 0x10,
-0x10, 0x10, 0x10, 0x19, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x10, 0x10, 0x18, 0x0f, 0x07, 0x00,
-0x20, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x18, 0x10, 0x10, 0x10, 0x10, 0x1d, 0x0f, 0x00, 0x00, 0x03,
-0x0f, 0x18, 0x10, 0x10, 0x18, 0x0f, 0x00, 0x00, 0x38, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x18, 0x1c,
-0x16, 0x13, 0x10, 0x10, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x10, 0x10, 0x10, 0x0c, 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, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x08, 0x04,
+ 0x04, 0x7c, 0xfc, 0xf0, 0x00, 0x00, 0x40, 0x20, 0xf0, 0x7c, 0x06, 0x00, 0x41, 0xc0, 0x00, 0x00,
+ 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0xc0, 0x00,
+ 0x00, 0x00, 0xe0, 0x60, 0x00, 0x80, 0x40, 0x20, 0x20, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x3c, 0x02,
+ 0x01, 0xc1, 0xf8, 0x0e, 0x00, 0x01, 0xc0, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0xf0, 0x50, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 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, 0x10, 0x00, 0x08,
+ 0x03, 0x00, 0x00, 0x0f, 0x06, 0x01, 0x00, 0x1e, 0x1f, 0x10, 0x00, 0x00, 0x1e, 0x1f, 0x08, 0xc0,
+ 0x3e, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1e, 0x11, 0x08, 0x04, 0x1e, 0x11, 0x00,
+ 0x08, 0x06, 0x01, 0x00, 0x1e, 0x19, 0x08, 0x00, 0x1e, 0x0b, 0x08, 0x00, 0x1f, 0x1b, 0x08, 0x00,
+ 0x18, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x12, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x19, 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, 0x0c,
+ 0x84, 0x84, 0x84, 0xcc, 0x38, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x04, 0x05, 0x0f, 0x79, 0xe1, 0x00,
+ 0x00, 0x00, 0xc0, 0x78, 0x0c, 0x00, 0x00, 0x0c, 0x84, 0x84, 0xcc, 0xf8, 0x30, 0x00, 0x00, 0xe0,
+ 0xf8, 0x0c, 0x04, 0x04, 0x0c, 0xf8, 0x80, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x00, 0x00, 0x08, 0x0c,
+ 0x04, 0x04, 0xcc, 0x78, 0x00, 0x00, 0x00, 0xf0, 0x18, 0x0c, 0x04, 0x0c, 0x18, 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, 0x10,
+ 0x10, 0x10, 0x10, 0x19, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x10, 0x10, 0x18, 0x0f, 0x07, 0x00,
+ 0x20, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x18, 0x10, 0x10, 0x10, 0x10, 0x1d, 0x0f, 0x00, 0x00, 0x03,
+ 0x0f, 0x18, 0x10, 0x10, 0x18, 0x0f, 0x00, 0x00, 0x38, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x18, 0x1c,
+ 0x16, 0x13, 0x10, 0x10, 0x00, 0x00, 0x00, 0x07, 0x1c, 0x10, 0x10, 0x10, 0x0c, 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
};
-
oled_write_raw_P(my_logo, sizeof(my_logo));
}
bool oled_task_user(void) {
render_RIP();
- return false;
- }
-
+ return false;
+}
#endif
diff --git a/keyboards/boardsource/holiday/spooky/rules.mk b/keyboards/boardsource/holiday/spooky/rules.mk
index ce35761cc9..6e7633bfe0 100644
--- a/keyboards/boardsource/holiday/spooky/rules.mk
+++ b/keyboards/boardsource/holiday/spooky/rules.mk
@@ -1,20 +1 @@
-# 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
-
-LAYOUTS = ortho_2x3
+# This file intentionally left blank
diff --git a/keyboards/boardsource/holiday/spooky/spooky.c b/keyboards/boardsource/holiday/spooky/spooky.c
deleted file mode 100644
index 87fe02c1a8..0000000000
--- a/keyboards/boardsource/holiday/spooky/spooky.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2020 boardsource
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "spooky.h"
diff --git a/keyboards/boardsource/holiday/spooky/spooky.h b/keyboards/boardsource/holiday/spooky/spooky.h
deleted file mode 100644
index 42127b8f44..0000000000
--- a/keyboards/boardsource/holiday/spooky/spooky.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright 2020 boardsource
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have 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_2x3( \
- k00, k01, k02, \
- k10, k11, k12 \
-) { \
- { k00, k01, k02 }, \
- { k10, k11, k12 } \
-}
diff --git a/keyboards/boardsource/lulu/avr/info.json b/keyboards/boardsource/lulu/avr/info.json
new file mode 100644
index 0000000000..ad7eefa77f
--- /dev/null
+++ b/keyboards/boardsource/lulu/avr/info.json
@@ -0,0 +1,21 @@
+{
+ "build": {
+ "lto": true
+ },
+ "development_board": "elite_c",
+ "matrix_pins": {
+ "cols": ["F6", "F7", "B1", "B3", "B2", "B6"],
+ "rows": ["C6", "D7", "E6", "B4", "B5"]
+ },
+ "split": {
+ "soft_serial_pin": "D2"
+ },
+ "rgblight": {
+ "pin": "D3"
+ },
+ "encoder": {
+ "rotary": [
+ { "pin_a": "F0", "pin_b": "F1" }
+ ]
+ }
+}
diff --git a/keyboards/boardsource/lulu/avr/rules.mk b/keyboards/boardsource/lulu/avr/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/boardsource/lulu/avr/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/boardsource/lulu/config.h b/keyboards/boardsource/lulu/config.h
index 8cd240179e..8e635a24eb 100644
--- a/keyboards/boardsource/lulu/config.h
+++ b/keyboards/boardsource/lulu/config.h
@@ -2,46 +2,12 @@
// 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
-
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
+#define DRIVER_LED_TOTAL 70
+#define RGB_MATRIX_SPLIT { 35, 35 }
+#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
diff --git a/keyboards/boardsource/lulu/info.json b/keyboards/boardsource/lulu/info.json
index 156a7cea98..8c3b03d1d2 100644
--- a/keyboards/boardsource/lulu/info.json
+++ b/keyboards/boardsource/lulu/info.json
@@ -1,16 +1,169 @@
{
- "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}
- ]
- }
+ "manufacturer": "Boardsource",
+ "keyboard_name": "lulu",
+ "maintainer": "waffle87",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true,
+ "oled": true
+ },
+ "url": "https://boardsource.xyz/projects/60de24d6847112054777bbdd",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x7685",
+ "vid": "0x4273"
+ },
+ "split": {
+ "enabled": true
+ },
+ "encoder": {
+ "enabled": true
+ },
+ "matrix_size": {
+ "cols": 6,
+ "rows": 10
+ },
+ "rgb_matrix": {
+ "driver": "WS2812",
+ "layout": [
+ { "flags": 2, "x": 86, "y": 55 },
+ { "flags": 2, "x": 51, "y": 55 },
+ { "flags": 2, "x": 17, "y": 40 },
+ { "flags": 2, "x": 17, "y": 10 },
+ { "flags": 2, "x": 51, "y": 10 },
+ { "flags": 2, "x": 86, "y": 10 },
+ { "flags": 4, "matrix": [0, 5], "x": 86, "y": 0 },
+ { "flags": 4, "matrix": [0, 4], "x": 68, "y": 0 },
+ { "flags": 4, "matrix": [0, 3], "x": 51, "y": 0 },
+ { "flags": 4, "matrix": [0, 2], "x": 34, "y": 0 },
+ { "flags": 4, "matrix": [0, 1], "x": 17, "y": 0 },
+ { "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 },
+ { "flags": 1, "matrix": [1, 0], "x": 0, "y": 16 },
+ { "flags": 4, "matrix": [1, 1], "x": 17, "y": 16 },
+ { "flags": 4, "matrix": [1, 2], "x": 34, "y": 16 },
+ { "flags": 4, "matrix": [1, 3], "x": 51, "y": 16 },
+ { "flags": 4, "matrix": [1, 4], "x": 68, "y": 16 },
+ { "flags": 4, "matrix": [1, 5], "x": 86, "y": 16 },
+ { "flags": 4, "matrix": [2, 5], "x": 86, "y": 32 },
+ { "flags": 4, "matrix": [2, 4], "x": 68, "y": 32 },
+ { "flags": 4, "matrix": [2, 3], "x": 51, "y": 32 },
+ { "flags": 4, "matrix": [2, 2], "x": 34, "y": 32 },
+ { "flags": 4, "matrix": [2, 1], "x": 17, "y": 32 },
+ { "flags": 1, "matrix": [2, 0], "x": 0, "y": 32 },
+ { "flags": 1, "matrix": [3, 0], "x": 0, "y": 48 },
+ { "flags": 4, "matrix": [3, 1], "x": 17, "y": 48 },
+ { "flags": 4, "matrix": [3, 2], "x": 34, "y": 48 },
+ { "flags": 4, "matrix": [3, 3], "x": 51, "y": 48 },
+ { "flags": 4, "matrix": [3, 4], "x": 68, "y": 48 },
+ { "flags": 4, "matrix": [3, 5], "x": 86, "y": 48 },
+ { "flags": 4, "matrix": [4, 5], "x": 103, "y": 40 },
+ { "flags": 1, "matrix": [4, 4], "x": 96, "y": 64 },
+ { "flags": 1, "matrix": [4, 3], "x": 77, "y": 64 },
+ { "flags": 1, "matrix": [4, 2], "x": 60, "y": 64 },
+ { "flags": 1, "matrix": [4, 1], "x": 43, "y": 64 },
+ { "flags": 2, "x": 137, "y": 55 },
+ { "flags": 2, "x": 172, "y": 55 },
+ { "flags": 2, "x": 206, "y": 40 },
+ { "flags": 2, "x": 206, "y": 10 },
+ { "flags": 2, "x": 172, "y": 10 },
+ { "flags": 2, "x": 137, "y": 10 },
+ { "flags": 4, "matrix": [5, 5], "x": 137, "y": 0 },
+ { "flags": 4, "matrix": [5, 4], "x": 155, "y": 0 },
+ { "flags": 4, "matrix": [5, 3], "x": 172, "y": 0 },
+ { "flags": 4, "matrix": [5, 2], "x": 189, "y": 0 },
+ { "flags": 4, "matrix": [5, 1], "x": 206, "y": 0 },
+ { "flags": 1, "matrix": [5, 0], "x": 224, "y": 0 },
+ { "flags": 1, "matrix": [6, 0], "x": 224, "y": 16 },
+ { "flags": 4, "matrix": [6, 1], "x": 206, "y": 16 },
+ { "flags": 4, "matrix": [6, 2], "x": 189, "y": 16 },
+ { "flags": 4, "matrix": [6, 3], "x": 172, "y": 16 },
+ { "flags": 4, "matrix": [6, 4], "x": 155, "y": 16 },
+ { "flags": 4, "matrix": [6, 5], "x": 137, "y": 16 },
+ { "flags": 4, "matrix": [7, 5], "x": 137, "y": 32 },
+ { "flags": 4, "matrix": [7, 4], "x": 155, "y": 32 },
+ { "flags": 4, "matrix": [7, 3], "x": 172, "y": 32 },
+ { "flags": 4, "matrix": [7, 2], "x": 189, "y": 32 },
+ { "flags": 4, "matrix": [7, 1], "x": 206, "y": 32 },
+ { "flags": 1, "matrix": [7, 0], "x": 224, "y": 32 },
+ { "flags": 1, "matrix": [8, 0], "x": 224, "y": 48 },
+ { "flags": 4, "matrix": [8, 1], "x": 206, "y": 48 },
+ { "flags": 4, "matrix": [8, 2], "x": 189, "y": 48 },
+ { "flags": 4, "matrix": [8, 3], "x": 172, "y": 48 },
+ { "flags": 4, "matrix": [8, 4], "x": 155, "y": 48 },
+ { "flags": 4, "matrix": [8, 5], "x": 137, "y": 48 },
+ { "flags": 4, "matrix": [9, 5], "x": 120, "y": 40 },
+ { "flags": 1, "matrix": [9, 4], "x": 127, "y": 64 },
+ { "flags": 1, "matrix": [9, 3], "x": 146, "y": 64 },
+ { "flags": 1, "matrix": [9, 2], "x": 163, "y": 64 },
+ { "flags": 1, "matrix": [9, 1], "x": 180, "y": 64 }
+ ]
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "matrix": [0, 0], "x": 0, "y": 0.5 },
+ { "matrix": [0, 1], "x": 1, "y": 0.375 },
+ { "matrix": [0, 2], "x": 2, "y": 0.125 },
+ { "matrix": [0, 3], "x": 3, "y": 0 },
+ { "matrix": [0, 4], "x": 4, "y": 0.125 },
+ { "matrix": [0, 5], "x": 5, "y": 0.25 },
+ { "matrix": [5, 5], "x": 10.5, "y": 0.25 },
+ { "matrix": [5, 4], "x": 11.5, "y": 0.125 },
+ { "matrix": [5, 3], "x": 12.5, "y": 0 },
+ { "matrix": [5, 2], "x": 13.5, "y": 0.125 },
+ { "matrix": [5, 1], "x": 14.5, "y": 0.375 },
+ { "matrix": [5, 0], "x": 15.5, "y": 0.5 },
+ { "matrix": [1, 0], "x": 0, "y": 1.5 },
+ { "matrix": [1, 1], "x": 1, "y": 1.375 },
+ { "matrix": [1, 2], "x": 2, "y": 1.125 },
+ { "matrix": [1, 3], "x": 3, "y": 1 },
+ { "matrix": [1, 4], "x": 4, "y": 1.125 },
+ { "matrix": [1, 5], "x": 5, "y": 1.25 },
+ { "matrix": [6, 5], "x": 10.5, "y": 1.25 },
+ { "matrix": [6, 4], "x": 11.5, "y": 1.125 },
+ { "matrix": [6, 3], "x": 12.5, "y": 1 },
+ { "matrix": [6, 2], "x": 13.5, "y": 1.125 },
+ { "matrix": [6, 1], "x": 14.5, "y": 1.375 },
+ { "matrix": [6, 0], "x": 15.5, "y": 1.5 },
+ { "matrix": [2, 0], "x": 0, "y": 2.5 },
+ { "matrix": [2, 1], "x": 1, "y": 2.375 },
+ { "matrix": [2, 2], "x": 2, "y": 2.125 },
+ { "matrix": [2, 3], "x": 3, "y": 2 },
+ { "matrix": [2, 4], "x": 4, "y": 2.125 },
+ { "matrix": [2, 5], "x": 5, "y": 2.25 },
+ { "matrix": [7, 5], "x": 10.5, "y": 2.25 },
+ { "matrix": [7, 4], "x": 11.5, "y": 2.125 },
+ { "matrix": [7, 3], "x": 12.5, "y": 2 },
+ { "matrix": [7, 2], "x": 13.5, "y": 2.125 },
+ { "matrix": [7, 1], "x": 14.5, "y": 2.375 },
+ { "matrix": [7, 0], "x": 15.5, "y": 2.5 },
+ { "matrix": [3, 0], "x": 0, "y": 3.5 },
+ { "matrix": [3, 1], "x": 1, "y": 3.375 },
+ { "matrix": [3, 2], "x": 2, "y": 3.125 },
+ { "matrix": [3, 3], "x": 3, "y": 3 },
+ { "matrix": [3, 4], "x": 4, "y": 3.125 },
+ { "matrix": [3, 5], "x": 5, "y": 3.25 },
+ { "matrix": [4, 5], "x": 6, "y": 2.75 },
+ { "matrix": [9, 5], "x": 9.5, "y": 2.75 },
+ { "matrix": [8, 5], "x": 10.5, "y": 3.25 },
+ { "matrix": [8, 4], "x": 11.5, "y": 3.125 },
+ { "matrix": [8, 3], "x": 12.5, "y": 3 },
+ { "matrix": [8, 2], "x": 13.5, "y": 3.125 },
+ { "matrix": [8, 1], "x": 14.5, "y": 3.375 },
+ { "matrix": [8, 0], "x": 15.5, "y": 3.5 },
+ { "matrix": [4, 1], "x": 2.5, "y": 4.125 },
+ { "matrix": [4, 2], "x": 3.5, "y": 4.15 },
+ { "matrix": [4, 3], "x": 4.5, "y": 4.25 },
+ { "matrix": [4, 4], "h": 1.5, "x": 6, "y": 4.25 },
+ { "matrix": [9, 4], "h": 1.5, "x": 9.5, "y": 4.25 },
+ { "matrix": [9, 3], "x": 11, "y": 4.25 },
+ { "matrix": [9, 2], "x": 12, "y": 4.15 },
+ { "matrix": [9, 1], "x": 13, "y": 4.15 }
+ ]
}
+ }
}
diff --git a/keyboards/boardsource/lulu/keymaps/default/keymap.c b/keyboards/boardsource/lulu/keymaps/default/keymap.c
index 8624b51b6a..cbee1401ed 100644
--- a/keyboards/boardsource/lulu/keymaps/default/keymap.c
+++ b/keyboards/boardsource/lulu/keymaps/default/keymap.c
@@ -106,24 +106,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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
index 912ea38559..de635a6128 100644
--- a/keyboards/boardsource/lulu/keymaps/via/keymap.c
+++ b/keyboards/boardsource/lulu/keymaps/via/keymap.c
@@ -102,4 +102,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______
)
};
-
diff --git a/keyboards/boardsource/lulu/lulu.c b/keyboards/boardsource/lulu/lulu.c
index 7a25fce50c..be6d565a32 100644
--- a/keyboards/boardsource/lulu/lulu.c
+++ b/keyboards/boardsource/lulu/lulu.c
@@ -1,267 +1,237 @@
// Copyright 2022 Cole Smith <cole@boadsource.xyz>
// SPDX-License-Identifier: GPL-2.0-or-later
+#include "encoder.h"
-#include "lulu.h"
-#ifdef RGB_MATRIX_ENABLE
-
-led_config_t g_led_config = { {
- {11,10, 9, 8, 7, 6},
- {17,16,15,14,13,12},
- {23,22,21,20,19,18},
- {29,28,27,26,25,24},
- {NO_LED,34,33,32,31,30},
- {41,42,43,44,45,46},
- {47,48,49,50,51,52},
- {53,54,55,56,57,58},
- {59,60,61,62,63,64},
- {NO_LED,65,66,67,68,69}
-},{
-
- {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
-}};
-
+#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);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return true;
+}
#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 OLED_ROTATION_180;
}
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));
+ 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
-};
+ 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
-};
+ 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
-};
+ 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
-};
+ 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:
+ case 0:
render_layer1_logo();
break;
- case _LOWER:
+ case 1:
render_layer2_logo();
break;
- case _RAISE:
+ case 2:
render_layer3_logo();
break;
- case _ADJUST:
+ case 3:
render_layer4_logo();
break;
}
@@ -277,4 +247,3 @@ bool oled_task_kb(void) {
return false;
}
#endif
-
diff --git a/keyboards/boardsource/lulu/lulu.h b/keyboards/boardsource/lulu/lulu.h
deleted file mode 100644
index bda65f63e0..0000000000
--- a/keyboards/boardsource/lulu/lulu.h
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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
index e7c530161b..a1c184eaac 100644
--- a/keyboards/boardsource/lulu/readme.md
+++ b/keyboards/boardsource/lulu/readme.md
@@ -12,13 +12,20 @@ The lulu is what the ergo community has needed for a long time, a high-end aesth
Make example for this keyboard (after setting up your build environment):
- make boardsource/lulu:default
+ make boardsource/lulu/rp2040:default
+ make boardsource/lulu/avr:default
Flashing example for this keyboard:
- make boardsource/lulu:default:flash
+ make boardsource/lulu/rp2040:default:flash
+ make boardsource/lulu/avr: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.
+
+Compile `rp2040` firmware if you purchased PCB in lulu group buy (integrated microcontroller).
+Compile `avr` firmware if your PCB uses a drop-in microcontroller like Pro Micro.
+
+
+Enter bootloader by holding down the upper outer 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/rp2040/config.h b/keyboards/boardsource/lulu/rp2040/config.h
new file mode 100644
index 0000000000..2e02e03500
--- /dev/null
+++ b/keyboards/boardsource/lulu/rp2040/config.h
@@ -0,0 +1,11 @@
+// Copyright 2022 jack (@waffle87)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+#define I2C_DRIVER I2CD2
+#define I2C1_SDA_PIN GP22
+#define I2C1_SCL_PIN GP23
diff --git a/keyboards/boardsource/lulu/rp2040/halconf.h b/keyboards/boardsource/lulu/rp2040/halconf.h
new file mode 100644
index 0000000000..9b8ab5d023
--- /dev/null
+++ b/keyboards/boardsource/lulu/rp2040/halconf.h
@@ -0,0 +1,5 @@
+// Copyright 2022 jack (@waffle87)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+#define HAL_USE_I2C TRUE
+#include_next <halconf.h>
diff --git a/keyboards/boardsource/lulu/rp2040/info.json b/keyboards/boardsource/lulu/rp2040/info.json
new file mode 100644
index 0000000000..a384241944
--- /dev/null
+++ b/keyboards/boardsource/lulu/rp2040/info.json
@@ -0,0 +1,17 @@
+{
+ "bootloader": "rp2040",
+ "matrix_pins": {
+ "cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7"],
+ "rows": ["GP14", "GP15", "GP16", "GP17", "GP18"]
+ },
+ "processor": "RP2040",
+ "rgblight": {
+ "pin": "GP29",
+ "led_count": 70
+ },
+ "encoder": {
+ "rotary": [
+ { "pin_a": "GP8", "pin_b": "GP9" }
+ ]
+ }
+}
diff --git a/keyboards/boardsource/lulu/rp2040/mcuconf.h b/keyboards/boardsource/lulu/rp2040/mcuconf.h
new file mode 100644
index 0000000000..6f05b8bbe8
--- /dev/null
+++ b/keyboards/boardsource/lulu/rp2040/mcuconf.h
@@ -0,0 +1,6 @@
+// Copyright 2022 jack (@waffle87)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+#include_next <mcuconf.h>
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 TRUE
diff --git a/keyboards/boardsource/lulu/rp2040/rules.mk b/keyboards/boardsource/lulu/rp2040/rules.mk
new file mode 100644
index 0000000000..8fb51ec82d
--- /dev/null
+++ b/keyboards/boardsource/lulu/rp2040/rules.mk
@@ -0,0 +1,2 @@
+SERIAL_DRIVER = vendor
+WS2812_DRIVER = vendor
diff --git a/keyboards/boardsource/lulu/rules.mk b/keyboards/boardsource/lulu/rules.mk
deleted file mode 100644
index 06d206cb55..0000000000
--- a/keyboards/boardsource/lulu/rules.mk
+++ /dev/null
@@ -1,26 +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
-NKRO_ENABLE = 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/config.h b/keyboards/boardsource/microdox/config.h
deleted file mode 100644
index f2ba806ae7..0000000000
--- a/keyboards/boardsource/microdox/config.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-Copyright 2020 Cole Smith <cole@boadsource.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/>.
-*/
-
-#pragma once
-
-#include "config_common.h"
-
-#define VENDOR_ID 0xF7E0
-#define PRODUCT_ID 0x0412
-#define DEVICE_VER 0x0000
-#define MANUFACTURER Boardsource
-#define PRODUCT microdox
-
-/* key matrix size */
-// Rows are doubled-up
-#define MATRIX_ROWS 8
-#define MATRIX_COLS 5
-#define MATRIX_ROW_PINS \
- { B2, B6, B4, B5 }
-
-// wiring of each half
-#define MATRIX_COL_PINS \
- { F4, F5, F6, F7, B1 }
-#define USE_SERIAL
-#define SOFT_SERIAL_PIN D2
-/* 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
-
-/* COL2ROW, ROW2COL*/
-#define DIODE_DIRECTION COL2ROW
-
-/* 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 RGBLED_NUM 12 // Number of LEDs
-# define RGBLED_SPLIT \
- { 6, 6 }
-# define RGBLIGHT_EFFECT_BREATHING
-# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-# define RGBLIGHT_EFFECT_STATIC_GRADIENT
-
-#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 action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
diff --git a/keyboards/boardsource/microdox/info.json b/keyboards/boardsource/microdox/info.json
index 3255056002..c61ae23048 100644
--- a/keyboards/boardsource/microdox/info.json
+++ b/keyboards/boardsource/microdox/info.json
@@ -1,54 +1,70 @@
{
- "keyboard_name": "microdox",
- "url": "https://boardsource.xyz/store/5f2e7e4a2902de7151494f92",
- "maintainer": "boardsource",
- "layouts": {
- "LAYOUT_split_3x5_3": {
- "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": "Space", "x": 5, "y": 3.2 },
-
- { "label": "Enter", "x": 7, "y": 3.2 },
- { "label": "Raise", "x": 8, "y": 3.7 },
- { "label": "Alt / KC_HAEN", "x": 9, "y": 3.7 }
- ]
- }
+ "manufacturer": "Boardsource",
+ "keyboard_name": "microdox",
+ "maintainer": "waffle87",
+ "development_board": "promicro",
+ "diode_direction": "COL2ROW",
+ "build": {
+ "lto": true
+ },
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "oled": true
+ },
+ "url": "https://boardsource.xyz/store/5f2e7e4a2902de7151494f92",
+ "usb": {
+ "pid": "0x0412",
+ "vid": "0xF7E0"
+ },
+ "split": {
+ "enabled": true
+ },
+ "community_layouts": [
+ "split_3x5_3"
+ ],
+ "layouts": {
+ "LAYOUT_split_3x5_3": {
+ "layout": [
+ { "matrix": [0, 0], "x": 0, "y": 0.375 },
+ { "matrix": [0, 1], "x": 1, "y": 0.125 },
+ { "matrix": [0, 2], "x": 2, "y": 0 },
+ { "matrix": [0, 3], "x": 3, "y": 0.125 },
+ { "matrix": [0, 4], "x": 4, "y": 0.375 },
+ { "matrix": [4, 4], "x": 7, "y": 0.375 },
+ { "matrix": [4, 3], "x": 8, "y": 0.125 },
+ { "matrix": [4, 2], "x": 9, "y": 0 },
+ { "matrix": [4, 1], "x": 10, "y": 0.125 },
+ { "matrix": [4, 0], "x": 11, "y": 0.375 },
+ { "matrix": [1, 0], "x": 0, "y": 1.375 },
+ { "matrix": [1, 1], "x": 1, "y": 1.125 },
+ { "matrix": [1, 2], "x": 2, "y": 1 },
+ { "matrix": [1, 3], "x": 3, "y": 1.125 },
+ { "matrix": [1, 4], "x": 4, "y": 1.375 },
+ { "matrix": [5, 4], "x": 7, "y": 1.375 },
+ { "matrix": [5, 3], "x": 8, "y": 1.125 },
+ { "matrix": [5, 2], "x": 9, "y": 1 },
+ { "matrix": [5, 1], "x": 10, "y": 1.125 },
+ { "matrix": [5, 0], "x": 11, "y": 1.375 },
+ { "matrix": [2, 0], "x": 0, "y": 2.375 },
+ { "matrix": [2, 1], "x": 1, "y": 2.125 },
+ { "matrix": [2, 2], "x": 2, "y": 2 },
+ { "matrix": [2, 3], "x": 3, "y": 2.125 },
+ { "matrix": [2, 4], "x": 4, "y": 2.375 },
+ { "matrix": [6, 4], "x": 7, "y": 2.375 },
+ { "matrix": [6, 3], "x": 8, "y": 2.125 },
+ { "matrix": [6, 2], "x": 9, "y": 2 },
+ { "matrix": [6, 1], "x": 10, "y": 2.125 },
+ { "matrix": [6, 0], "x": 11, "y": 2.375 },
+ { "matrix": [3, 2], "x": 2, "y": 4 },
+ { "matrix": [3, 3], "x": 3, "y": 4.125},
+ { "matrix": [3, 4], "x": 4, "y": 4.375 },
+ { "matrix": [7, 4], "x": 7, "y": 4.375 },
+ { "matrix": [7, 3], "x": 8, "y": 4.125 },
+ { "matrix": [7, 2], "x": 9, "y": 4 }
+ ]
}
+ }
}
diff --git a/keyboards/boardsource/microdox/keymaps/cole/keymap.c b/keyboards/boardsource/microdox/keymaps/cole/keymap.c
index f4ac92ea0d..8c177be5a5 100644
--- a/keyboards/boardsource/microdox/keymaps/cole/keymap.c
+++ b/keyboards/boardsource/microdox/keymaps/cole/keymap.c
@@ -1,5 +1,5 @@
/*
-Copyright 2020 Cole Smith <cole@boadsource.xyz>
+Copyright 2022 Cole Smith <cole@boadsource.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
diff --git a/keyboards/boardsource/microdox/keymaps/cole/rules.mk b/keyboards/boardsource/microdox/keymaps/cole/rules.mk
deleted file mode 100644
index dd68e9d3b0..0000000000
--- a/keyboards/boardsource/microdox/keymaps/cole/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-OLED_ENABLE = yes
diff --git a/keyboards/boardsource/microdox/keymaps/default/keymap.c b/keyboards/boardsource/microdox/keymaps/default/keymap.c
index 6fe94011f4..8a090b6f8f 100644
--- a/keyboards/boardsource/microdox/keymaps/default/keymap.c
+++ b/keyboards/boardsource/microdox/keymaps/default/keymap.c
@@ -1,5 +1,5 @@
/*
-Copyright 2020 Cole Smith <cole@boadsource.xyz>
+Copyright 2022 Cole Smith <cole@boadsource.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
diff --git a/keyboards/boardsource/microdox/keymaps/via/rules.mk b/keyboards/boardsource/microdox/keymaps/via/rules.mk
index 7fad85c015..1e5b99807c 100644
--- a/keyboards/boardsource/microdox/keymaps/via/rules.mk
+++ b/keyboards/boardsource/microdox/keymaps/via/rules.mk
@@ -1,3 +1 @@
-OLED_ENABLE = yes
VIA_ENABLE = yes
-LTO_ENABLE = yes
diff --git a/keyboards/boardsource/microdox/microdox.c b/keyboards/boardsource/microdox/microdox.c
index abfe65a2bd..76ee6bc54e 100644
--- a/keyboards/boardsource/microdox/microdox.c
+++ b/keyboards/boardsource/microdox/microdox.c
@@ -1,5 +1,5 @@
/*
-Copyright 2020 Cole Smith <cole@boadsource.xyz>
+Copyright 2022 Cole Smith <cole@boadsource.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
@@ -15,9 +15,11 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "microdox.h"
-
#ifdef OLED_ENABLE
+#include "oled_driver.h"
+#include "bitwise.h"
+#include "action_layer.h"
+
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
if (is_keyboard_master())
return OLED_ROTATION_180;
@@ -26,14 +28,12 @@ oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
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
+ 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);
}
-
static void render_status(void) {
switch (get_highest_layer(layer_state)) {
case 0:
@@ -74,3 +74,24 @@ bool oled_task_kb(void) {
return false;
}
#endif
+
+#ifdef ENCODER_ENABLE
+#include "encoder.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_delay(KC_VOLU, 10);
+ } else {
+ tap_code_delay(KC_VOLD, 10);
+ }
+ } else {
+ if (clockwise) {
+ tap_code(KC_MNXT);
+ } else {
+ tap_code(KC_MPRV);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/boardsource/microdox/microdox.h b/keyboards/boardsource/microdox/microdox.h
deleted file mode 100644
index 8b63b46415..0000000000
--- a/keyboards/boardsource/microdox/microdox.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2020 Cole Smith <cole@boadsource.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/>.
-*/
-
-#pragma once
-
-#include "quantum.h"
-#define xxx KC_NO
-
-#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, k34, k74, k73, k72 \
- ) \
- { \
- { k00, k01, k02, k03, k04 }, \
- { k10, k11, k12, k13, k14 }, \
- { k20, k21, k22, k23, k24 }, \
- { xxx, xxx, k32, k33, k34 }, \
- { k40, k41, k42, k43, k44 }, \
- { k50, k51, k52, k53, k54 }, \
- { k60, k61, k62, k63, k64 }, \
- { xxx, xxx, k72, k73, k74 } \
- }
diff --git a/keyboards/boardsource/microdox/readme.md b/keyboards/boardsource/microdox/readme.md
index 0a468bd4a3..d5b22a2854 100644
--- a/keyboards/boardsource/microdox/readme.md
+++ b/keyboards/boardsource/microdox/readme.md
@@ -8,8 +8,9 @@
Make example for this keyboard (after setting up your build environment):
+ make boardsource/microdox/v1:default
make boardsource/microdox/v2:default
-Remove `v2` from above command if you purchased your PCBs prior to April 2022
+Compile `v1` firmware if you purchased your PCBs prior to April 2022.
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/microdox/rules.mk b/keyboards/boardsource/microdox/rules.mk
deleted file mode 100644
index a15c5aded1..0000000000
--- a/keyboards/boardsource/microdox/rules.mk
+++ /dev/null
@@ -1,21 +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 = no # 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
-
-LAYOUTS = split_3x5_3
diff --git a/keyboards/boardsource/microdox/v1/config.h b/keyboards/boardsource/microdox/v1/config.h
new file mode 100644
index 0000000000..01b894afd6
--- /dev/null
+++ b/keyboards/boardsource/microdox/v1/config.h
@@ -0,0 +1,6 @@
+// Copyright 2022 jack (@waffle87)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Just here to please quantum/split_common/split_util.c
diff --git a/keyboards/boardsource/microdox/v1/info.json b/keyboards/boardsource/microdox/v1/info.json
new file mode 100644
index 0000000000..85f2e61457
--- /dev/null
+++ b/keyboards/boardsource/microdox/v1/info.json
@@ -0,0 +1,25 @@
+{
+ "features": {
+ "rgblight": true
+ },
+ "matrix_pins": {
+ "cols": ["F4", "F5", "F6", "F7", "B1"],
+ "rows": ["B2", "B6", "B4", "B5"]
+ },
+ "usb": {
+ "device_version": "1.0.0"
+ },
+ "split": {
+ "soft_serial_pin": "D2"
+ },
+ "rgblight": {
+ "pin": "D3",
+ "sleep": true,
+ "led_count": 12,
+ "split_count": [6, 6],
+ "max_brightness": 150,
+ "animations": {
+ "all": true
+ }
+ }
+}
diff --git a/keyboards/boardsource/microdox/v1/rules.mk b/keyboards/boardsource/microdox/v1/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/boardsource/microdox/v1/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/boardsource/microdox/v2/config.h b/keyboards/boardsource/microdox/v2/config.h
index 1f8bc7c3d9..e6a7ddc16b 100644
--- a/keyboards/boardsource/microdox/v2/config.h
+++ b/keyboards/boardsource/microdox/v2/config.h
@@ -1,45 +1,15 @@
// Copyright 2022 jack (@waffle87)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
-#undef MATRIX_ROW_PINS
-#undef MATRIX_COL_PINS
-#define MATRIX_ROW_PINS \
- { F4, D2, C6, B1 }
-#define MATRIX_COL_PINS \
- { D4, D7, B3, F7, F6 }
-#define MATRIX_ROW_PINS_RIGHT \
- { F5, F7, F6, E6 }
-#define MATRIX_COL_PINS_RIGHT \
- { F4, B1, D7, C6, B3 }
-#undef SOFT_SERIAL_PIN
-#define SOFT_SERIAL_PIN D3
-#undef RGB_DI_PIN
+
#define RGB_DI_PIN B5
-#ifdef RGBLIGHT_ENABLE
-# undef RGBLED_NUM
-# undef RGBLED_SPLIT
-# define RGBLED_NUM 8
-# define RGBLED_SPLIT { 4, 4 } // underglow only
-# define RGBLIGHT_SLEEP
-# define RGBLIGHT_EFFECT_BREATHING
-# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-# define RGBLIGHT_EFFECT_STATIC_GRADIENT
-#endif
-#ifdef RGB_MATRIX_ENABLE
-# define DRIVER_LED_TOTAL 44
-# define RGB_MATRIX_SPLIT { 22, 22 }
-# define RGB_DISABLE_WHEN_USB_SUSPENDED
-# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
-# define ENABLE_RGB_MATRIX_ALPHAS_MODS
-# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_BREATHING
-# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
-# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
-# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
-#endif
-#ifdef ENCODER_ENABLE
-# define ENCODERS_PAD_A { E6 }
-# define ENCODERS_PAD_B { B2 }
-# define ENCODERS_PAD_A_RIGHT { B6 }
-# define ENCODERS_PAD_B_RIGHT { B2 }
-#endif
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
+#define DRIVER_LED_TOTAL 44
+#define RGB_MATRIX_SPLIT { 22, 22 }
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
diff --git a/keyboards/boardsource/microdox/v2/info.json b/keyboards/boardsource/microdox/v2/info.json
new file mode 100644
index 0000000000..a53dfff708
--- /dev/null
+++ b/keyboards/boardsource/microdox/v2/info.json
@@ -0,0 +1,82 @@
+{
+ "features": {
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "cols": ["D4", "D7", "B3", "F7", "F6"],
+ "rows": ["F4", "D2", "C6", "B1"]
+ },
+ "usb": {
+ "device_version": "2.0.0"
+ },
+ "encoder": {
+ "enabled": true,
+ "rotary": [
+ { "pin_a": "E6", "pin_b": "B2"}
+ ]
+ },
+ "split": {
+ "soft_serial_pin": "D3",
+ "matrix_pins": {
+ "right": {
+ "cols": ["F4", "B1", "D7", "C6", "B3"],
+ "rows": ["F5", "F7", "F6", "E6"]
+ }
+ },
+ "encoder": {
+ "right": {
+ "rotary": [
+ { "pin_a": "B6", "pin_b": "B2" }
+ ]
+ }
+ }
+ },
+ "rgb_matrix": {
+ "layout": [
+ { "flags": 2, "x": 12, "y": 11 },
+ { "flags": 2, "x": 86, "y": 11 },
+ { "flags": 2, "x": 86, "y": 53 },
+ { "flags": 2, "x": 0, "y": 64 },
+ { "flags": 2, "x": 211, "y": 11 },
+ { "flags": 2, "x": 136, "y": 11 },
+ { "flags": 2, "x": 136, "y": 53 },
+ { "flags": 2, "x": 224, "y": 64 },
+ { "flags": 4, "matrix": [0, 0], "x": 0, "y": 0 },
+ { "flags": 4, "matrix": [0, 1], "x": 24, "y": 0 },
+ { "flags": 4, "matrix": [0, 2], "x": 49, "y": 0 },
+ { "flags": 4, "matrix": [0, 3], "x": 74, "y": 0 },
+ { "flags": 4, "matrix": [0, 4], "x": 99, "y": 0 },
+ { "flags": 4, "matrix": [4, 4], "x": 124, "y": 0 },
+ { "flags": 4, "matrix": [4, 3], "x": 149, "y": 0 },
+ { "flags": 4, "matrix": [4, 2], "x": 174, "y": 0 },
+ { "flags": 4, "matrix": [4, 1], "x": 199, "y": 0 },
+ { "flags": 4, "matrix": [4, 0], "x": 224, "y": 0 },
+ { "flags": 4, "matrix": [1, 0], "x": 0, "y": 21 },
+ { "flags": 4, "matrix": [1, 1], "x": 24, "y": 21 },
+ { "flags": 4, "matrix": [1, 2], "x": 49, "y": 21 },
+ { "flags": 4, "matrix": [1, 3], "x": 74, "y": 21 },
+ { "flags": 4, "matrix": [1, 4], "x": 99, "y": 21 },
+ { "flags": 4, "matrix": [5, 4], "x": 124, "y": 21 },
+ { "flags": 4, "matrix": [5, 3], "x": 149, "y": 21 },
+ { "flags": 4, "matrix": [5, 2], "x": 174, "y": 21 },
+ { "flags": 4, "matrix": [5, 1], "x": 199, "y": 21 },
+ { "flags": 4, "matrix": [5, 0], "x": 224, "y": 21 },
+ { "flags": 4, "matrix": [2, 0], "x": 0, "y": 42 },
+ { "flags": 4, "matrix": [2, 1], "x": 24, "y": 42 },
+ { "flags": 4, "matrix": [2, 2], "x": 49, "y": 42 },
+ { "flags": 4, "matrix": [2, 3], "x": 74, "y": 42 },
+ { "flags": 4, "matrix": [2, 4], "x": 99, "y": 42 },
+ { "flags": 4, "matrix": [6, 4], "x": 124, "y": 42 },
+ { "flags": 4, "matrix": [6, 3], "x": 149, "y": 42 },
+ { "flags": 4, "matrix": [6, 2], "x": 174, "y": 42 },
+ { "flags": 4, "matrix": [6, 1], "x": 199, "y": 42 },
+ { "flags": 4, "matrix": [6, 0], "x": 224, "y": 42 },
+ { "flags": 1, "matrix": [3, 2], "x": 49, "y": 64 },
+ { "flags": 1, "matrix": [3, 3], "x": 74, "y": 64 },
+ { "flags": 1, "matrix": [3, 4], "x": 99, "y": 64 },
+ { "flags": 1, "matrix": [7, 4], "x": 124, "y": 64 },
+ { "flags": 1, "matrix": [7, 3], "x": 149, "y": 64 },
+ { "flags": 1, "matrix": [7, 2], "x": 174, "y": 64 }
+ ]
+ }
+}
diff --git a/keyboards/boardsource/microdox/v2/rules.mk b/keyboards/boardsource/microdox/v2/rules.mk
index 0d57a06d1e..32afd21635 100644
--- a/keyboards/boardsource/microdox/v2/rules.mk
+++ b/keyboards/boardsource/microdox/v2/rules.mk
@@ -1,8 +1 @@
-RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
-RGB_MATRIX_SUPPORTED = yes
-RGBLIGHT_ENABLE = no
-OLED_ENABLE = yes
-OLED_DRIVER = SSD1306
-ENCODER_ENABLE = yes
-LTO_ENABLE = yes
diff --git a/keyboards/boardsource/microdox/v2/v2.c b/keyboards/boardsource/microdox/v2/v2.c
deleted file mode 100644
index 11476a6ea2..0000000000
--- a/keyboards/boardsource/microdox/v2/v2.c
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2022 jack (@waffle87)
-// SPDX-License-Identifier: GPL-2.0-or-later
-#include "v2.h"
-
-#ifdef RGB_MATRIX_ENABLE
-led_config_t g_led_config = {
- {
- { 13, 14, 15, 16, 17 },
- { 12, 11, 10, 9, 8 },
- { 3, 4, 5, 6, 7 },
- { NO_LED, NO_LED, 2, 1, 0 },
- //18-21 left underglow
- { 35, 36, 37, 38, 39 },
- { 34, 33, 32, 31, 30 },
- { 25, 26, 27, 28, 29 },
- { NO_LED, NO_LED, 24, 23, 22 }
- //40-44 right underglow
- }, {
- {99,64}, {74,64}, {49,64}, //0-2
- {0,42}, {24,42}, {49,42}, {74,42}, {99,42}, //3-7
- {99,21}, {74,21}, {49,21}, {24,21}, {0,21}, //8-12
- {0,0}, {24,0}, {49,0}, {74,0}, {99,0}, //13-17
- {12,11}, {86,11}, {86,53}, {0,64}, //18-21
- {124,64}, {149,64}, {174,64}, //22-24
- {224,42}, {199,42}, {174,42}, {149,42}, {124,42}, //25-29
- {124,21}, {149,21}, {174,21}, {199,21}, {224,21}, //30-34
- {224,0}, {199,0}, {174,0}, {149,0}, {124,0}, //35-39
- {211,11}, {136,11}, {136,53}, {224,64} //40-44
- }, {
- 1, 1, 1,
- 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4,
- 2, 2, 2, 2,
- 1, 1, 1,
- 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4,
- 2, 2, 2, 2
- }
-};
-#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);
- }
- } else {
- if (clockwise) {
- tap_code(KC_MNXT);
- } else {
- tap_code(KC_MPRV);
- }
- }
- return false;
-}
-#endif
diff --git a/keyboards/boardsource/microdox/v2/v2.h b/keyboards/boardsource/microdox/v2/v2.h
deleted file mode 100644
index 400660fffa..0000000000
--- a/keyboards/boardsource/microdox/v2/v2.h
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2022 jack (@waffle87)
-// SPDX-License-Identifier: GPL-2.0-or-later
-#pragma once
-#include "quantum.h"
-#define xxx KC_NO
-
-#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, k34, k74, k73, k72 \
- ) \
- { \
- { k00, k01, k02, k03, k04 }, \
- { k10, k11, k12, k13, k14 }, \
- { k20, k21, k22, k23, k24 }, \
- { xxx, xxx, k32, k33, k34 }, \
- { k40, k41, k42, k43, k44 }, \
- { k50, k51, k52, k53, k54 }, \
- { k60, k61, k62, k63, k64 }, \
- { xxx, xxx, k72, k73, k74 } \
- }
diff --git a/keyboards/boardsource/technik_o/config.h b/keyboards/boardsource/technik_o/config.h
index 146141a911..bbaacd33c4 100644
--- a/keyboards/boardsource/technik_o/config.h
+++ b/keyboards/boardsource/technik_o/config.h
@@ -1,5 +1,5 @@
/*
-Copyright 2020 Boardsource
+Copyright 2022 Boardsource
This 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,62 +16,19 @@ 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 0x4273
-#define PRODUCT_ID 0x0079
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Boardsource
-#define PRODUCT Technik-O
-
-/* key matrix size */
-#define MATRIX_ROWS 4
-#define MATRIX_COLS 12
-
-/*
- * 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 {B5, B6, B7, F5, C7, D0, D1, D2, D3, D4, D5, D6}
-#define UNUSED_PINS
-
-/* COL2ROW, ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-
-//#define BACKLIGHT_PIN B7
-//#define BACKLIGHT_LEVELS 3
-#define BACKLIGHT_BREATHING
-#define RGBLIGHT_ANIMATIONS
#define RGB_DI_PIN C6
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
-// 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 DRIVER_LED_TOTAL 58
#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
@@ -85,81 +42,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
-#ifdef RGBLIGHT_ENABLE
-# define RGBLED_NUM 10 // Number of LEDs
-#endif
-
-#define DRIVER_LED_TOTAL 58
-
-/* 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
-
-/* Bootmagic Lite key configuration */
-//#define BOOTMAGIC_LITE_ROW 0
-//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/boardsource/technik_o/info.json b/keyboards/boardsource/technik_o/info.json
index 0aa780ca7b..d84a976e13 100644
--- a/keyboards/boardsource/technik_o/info.json
+++ b/keyboards/boardsource/technik_o/info.json
@@ -1,62 +1,144 @@
{
- "keyboard_name": "Technik-O",
- "url": "https://boardsource.xyz",
- "maintainer": "Boardsource",
- "layouts": {
- "LAYOUT_ortho_4x12": {
- "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": 5, "y": 0 },
- { "label": "K07", "x": 6, "y": 0 },
- { "label": "K08", "x": 7, "y": 0 },
- { "label": "K09", "x": 8, "y": 0 },
- { "label": "K010", "x": 9, "y": 0 },
- { "label": "K011", "x": 10, "y": 0 },
- { "label": "K012", "x": 11, "y": 0 },
-
- { "label": "K11", "x": 0, "y": 1 },
- { "label": "K12", "x": 1, "y": 1 },
- { "label": "K13", "x": 2, "y": 1 },
- { "label": "K14", "x": 3, "y": 1 },
- { "label": "K15", "x": 4, "y": 1 },
- { "label": "K16", "x": 5, "y": 1 },
- { "label": "K17", "x": 6, "y": 1 },
- { "label": "K18", "x": 7, "y": 1 },
- { "label": "K19", "x": 8, "y": 1 },
- { "label": "K110", "x": 9, "y": 1 },
- { "label": "K111", "x": 10, "y": 1 },
- { "label": "K112", "x": 11, "y": 1 },
-
- { "label": "K21", "x": 0, "y": 2 },
- { "label": "K22", "x": 1, "y": 2 },
- { "label": "K23", "x": 2, "y": 2 },
- { "label": "K24", "x": 3, "y": 2 },
- { "label": "K25", "x": 4, "y": 2 },
- { "label": "K26", "x": 5, "y": 2 },
- { "label": "K27", "x": 6, "y": 2 },
- { "label": "K28", "x": 7, "y": 2 },
- { "label": "K29", "x": 8, "y": 2 },
- { "label": "K210", "x": 9, "y": 2 },
- { "label": "K211", "x": 10, "y": 2 },
- { "label": "K212", "x": 11, "y": 2 },
-
- { "label": "K31", "x": 0, "y": 3 },
- { "label": "K32", "x": 1, "y": 3 },
- { "label": "K33", "x": 2, "y": 3 },
- { "label": "K34", "x": 3, "y": 3 },
- { "label": "K35", "x": 4, "y": 3 },
- { "label": "K36", "x": 5, "y": 3 },
- { "label": "K37", "x": 6, "y": 3 },
- { "label": "K38", "x": 7, "y": 3 },
- { "label": "K39", "x": 8, "y": 3 },
- { "label": "K310", "x": 9, "y": 3 },
- { "label": "K311", "x": 10, "y": 3 },
- { "label": "K312", "x": 11, "y": 3 }
- ]
- }
+ "manufacturer": "Boardsource",
+ "keyboard_name": "Technik-O",
+ "maintainer": "waffle87",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "cols": ["B5", "B6", "B7", "F5", "C7", "D0", "D1", "D2", "D3", "D4", "D5", "D6"],
+ "rows": ["B0", "B1", "B2", "B3"]
+ },
+ "processor": "atmega32u4",
+ "url": "https://boardsource.xyz/store/5ffb9b01edd0447f8023fdb2",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0079",
+ "vid": "0x4273"
+ },
+ "rgb_matrix": {
+ "layout": [
+ { "flags": 2, "x": 220, "y": 17 },
+ { "flags": 2, "x": 172, "y": 17 },
+ { "flags": 2, "x": 112, "y": 17 },
+ { "flags": 2, "x": 50, "y": 17 },
+ { "flags": 2, "x": 4, "y": 17 },
+ { "flags": 2, "x": 4, "y": 56 },
+ { "flags": 2, "x": 50, "y": 56 },
+ { "flags": 2, "x": 112, "y": 56 },
+ { "flags": 2, "x": 172, "y": 56 },
+ { "flags": 2, "x": 220, "y": 56 },
+ { "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 },
+ { "flags": 4, "matrix": [0, 1], "x": 20, "y": 0 },
+ { "flags": 4, "matrix": [0, 2], "x": 40, "y": 0 },
+ { "flags": 4, "matrix": [0, 3], "x": 61, "y": 0 },
+ { "flags": 4, "matrix": [0, 4], "x": 81, "y": 0 },
+ { "flags": 4, "matrix": [0, 5], "x": 101, "y": 0 },
+ { "flags": 4, "matrix": [0, 6], "x": 122, "y": 0 },
+ { "flags": 4, "matrix": [0, 7], "x": 142, "y": 0 },
+ { "flags": 4, "matrix": [0, 8], "x": 162, "y": 0 },
+ { "flags": 4, "matrix": [0, 9], "x": 183, "y": 0 },
+ { "flags": 4, "matrix": [0, 10], "x": 203, "y": 0 },
+ { "flags": 1, "matrix": [0, 11], "x": 224, "y": 0 },
+ { "flags": 1, "matrix": [1, 0], "x": 0, "y": 21 },
+ { "flags": 4, "matrix": [1, 1], "x": 20, "y": 21 },
+ { "flags": 4, "matrix": [1, 2], "x": 40, "y": 21 },
+ { "flags": 4, "matrix": [1, 3], "x": 61, "y": 21 },
+ { "flags": 4, "matrix": [1, 4], "x": 81, "y": 21 },
+ { "flags": 4, "matrix": [1, 5], "x": 101, "y": 21 },
+ { "flags": 4, "matrix": [1, 6], "x": 122, "y": 21 },
+ { "flags": 4, "matrix": [1, 7], "x": 142, "y": 21 },
+ { "flags": 4, "matrix": [1, 8], "x": 162, "y": 21 },
+ { "flags": 4, "matrix": [1, 9], "x": 183, "y": 21 },
+ { "flags": 4, "matrix": [1, 10], "x": 203, "y": 21 },
+ { "flags": 1, "matrix": [1, 11], "x": 224, "y": 21 },
+ { "flags": 1, "matrix": [2, 0], "x": 0, "y": 42 },
+ { "flags": 4, "matrix": [2, 1], "x": 20, "y": 42 },
+ { "flags": 4, "matrix": [2, 2], "x": 40, "y": 42 },
+ { "flags": 4, "matrix": [2, 3], "x": 61, "y": 42 },
+ { "flags": 4, "matrix": [2, 4], "x": 81, "y": 42 },
+ { "flags": 4, "matrix": [2, 5], "x": 101, "y": 42 },
+ { "flags": 4, "matrix": [2, 6], "x": 122, "y": 42 },
+ { "flags": 4, "matrix": [2, 7], "x": 142, "y": 42 },
+ { "flags": 4, "matrix": [2, 8], "x": 162, "y": 42 },
+ { "flags": 4, "matrix": [2, 9], "x": 183, "y": 42 },
+ { "flags": 4, "matrix": [2, 10], "x": 203, "y": 42 },
+ { "flags": 1, "matrix": [2, 11], "x": 224, "y": 42 },
+ { "flags": 1, "matrix": [3, 0], "x": 0, "y": 64 },
+ { "flags": 1, "matrix": [3, 1], "x": 20, "y": 64 },
+ { "flags": 1, "matrix": [3, 2], "x": 40, "y": 64 },
+ { "flags": 1, "matrix": [3, 3], "x": 61, "y": 64 },
+ { "flags": 1, "matrix": [3, 4], "x": 81, "y": 64 },
+ { "flags": 4, "matrix": [3, 5], "x": 101, "y": 64 },
+ { "flags": 4, "matrix": [3, 6], "x": 122, "y": 64 },
+ { "flags": 1, "matrix": [3, 7], "x": 142, "y": 64 },
+ { "flags": 1, "matrix": [3, 8], "x": 162, "y": 64 },
+ { "flags": 1, "matrix": [3, 9], "x": 183, "y": 64 },
+ { "flags": 1, "matrix": [3, 10], "x": 203, "y": 64 },
+ { "flags": 1, "matrix": [3, 11], "x": 224, "y": 64 }
+ ]
+ },
+ "community_layouts": [
+ "ortho_4x12"
+ ],
+ "layouts": {
+ "LAYOUT_ortho_4x12": {
+ "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": [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": [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": [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 }
+ ]
}
+ }
}
diff --git a/keyboards/boardsource/technik_o/keymaps/default/keymap.c b/keyboards/boardsource/technik_o/keymaps/default/keymap.c
index 028e3eae41..9df43c88db 100644
--- a/keyboards/boardsource/technik_o/keymaps/default/keymap.c
+++ b/keyboards/boardsource/technik_o/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Boardsource
+/* Copyright 2022 Boardsource
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -22,32 +22,27 @@ enum layers {
_LOWER,
};
-// Readability keycodes
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[_MAIN] = 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 ,
RGB_TOG, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
-
[_RAISE] = 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, _______,
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, 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_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, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
-
[_LOWER] = 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, _______,
- RGB_MOD, _______, _______, _______, _______, _______, _______, _______, 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_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_MOD, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
-
};
diff --git a/keyboards/boardsource/technik_o/keymaps/default/readme.md b/keyboards/boardsource/technik_o/keymaps/default/readme.md
deleted file mode 100644
index e9427401d0..0000000000
--- a/keyboards/boardsource/technik_o/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The default keymap for Technik-O
diff --git a/keyboards/boardsource/technik_o/keymaps/via/keymap.c b/keyboards/boardsource/technik_o/keymaps/via/keymap.c
index 028e3eae41..c04898f0aa 100644
--- a/keyboards/boardsource/technik_o/keymaps/via/keymap.c
+++ b/keyboards/boardsource/technik_o/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Boardsource
+/* Copyright 2022 Boardsource
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -22,32 +22,32 @@ enum layers {
_LOWER,
};
-// Readability keycodes
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[_MAIN] = 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 ,
RGB_TOG, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
-
[_RAISE] = 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, _______,
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, 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_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, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
-
[_LOWER] = 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, _______,
- RGB_MOD, _______, _______, _______, _______, _______, _______, _______, 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_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_MOD, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ ),
+ [3] = LAYOUT_ortho_4x12(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
-
};
-
diff --git a/keyboards/boardsource/technik_o/keymaps/via/readme.md b/keyboards/boardsource/technik_o/keymaps/via/readme.md
deleted file mode 100644
index 6ae03a917f..0000000000
--- a/keyboards/boardsource/technik_o/keymaps/via/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The via keymap for Technik-O
diff --git a/keyboards/boardsource/technik_o/rules.mk b/keyboards/boardsource/technik_o/rules.mk
index c1a93c1f38..32afd21635 100644
--- a/keyboards/boardsource/technik_o/rules.mk
+++ b/keyboards/boardsource/technik_o/rules.mk
@@ -1,21 +1 @@
-# 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
RGB_MATRIX_DRIVER = WS2812
-LAYOUTS = ortho_4x12
diff --git a/keyboards/boardsource/technik_o/technik_o.c b/keyboards/boardsource/technik_o/technik_o.c
index 1488d55f59..0fd213e42a 100644
--- a/keyboards/boardsource/technik_o/technik_o.c
+++ b/keyboards/boardsource/technik_o/technik_o.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Boardsource
+/* Copyright 2022 Boardsource
* Copyright 2021 @filterpaper
*
* This program is free software: you can redistribute it and/or modify
@@ -15,29 +15,6 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#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},
- { 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}
-}, {
- {220, 17}, {172, 17}, {112, 17}, { 50, 17}, { 4, 17}, { 4, 56}, { 50, 56}, {112, 56}, {172, 56}, {220, 56},
- { 0, 0}, { 20, 0}, { 40, 0}, { 61, 0}, { 81, 0}, {101, 0}, {122, 0}, {142, 0}, {162, 0}, {183, 0}, {203, 0}, {224, 0},
- { 0, 21}, { 20, 21}, { 40, 21}, { 61, 21}, { 81, 21}, {101, 21}, {122, 21}, {142, 21}, {162, 21}, {183, 21}, {203, 21}, {224, 21},
- { 0, 42}, { 20, 42}, { 40, 42}, { 61, 42}, { 81, 42}, {101, 42}, {122, 42}, {142, 42}, {162, 42}, {183, 42}, {203, 42}, {224, 42},
- { 0, 64}, { 20, 64}, { 40, 64}, { 61, 64}, { 81, 64}, {101, 64}, {122, 64}, {142, 64}, {162, 64}, {183, 64}, {203, 64}, {224, 64}
-}, {
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 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, 1, 4, 4, 1, 1, 1, 1, 1
-} };
-#endif
-
#ifdef SWAP_HANDS_ENABLE
__attribute__ ((weak))
const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
@@ -47,4 +24,3 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
{{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_o/technik_o.h b/keyboards/boardsource/technik_o/technik_o.h
deleted file mode 100644
index e2af9f834a..0000000000
--- a/keyboards/boardsource/technik_o/technik_o.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright 2020 Boardsource
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have 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( \
- 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/boardsource/technik_s/config.h b/keyboards/boardsource/technik_s/config.h
index a34ab1577a..2141a2a0a9 100644
--- a/keyboards/boardsource/technik_s/config.h
+++ b/keyboards/boardsource/technik_s/config.h
@@ -1,5 +1,5 @@
/*
-Copyright 2020 Boardsource
+Copyright 2022 Boardsource
This 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,62 +16,19 @@ 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 0x4273
-#define PRODUCT_ID 0x0083
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Boardsource
-#define PRODUCT Technik-S
-
-/* key matrix size */
-#define MATRIX_ROWS 4
-#define MATRIX_COLS 12
-
-/*
- * 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 {B5, B6, B7, F5, C7, D0, D1, D2, D3, D4, D5, D6}
-#define UNUSED_PINS
-
-/* COL2ROW, ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-
-//#define BACKLIGHT_PIN B7
-//#define BACKLIGHT_LEVELS 3
-#define BACKLIGHT_BREATHING
-#define RGBLIGHT_ANIMATIONS
#define RGB_DI_PIN C6
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 120
-// 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 DRIVER_LED_TOTAL 55
#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
@@ -85,81 +42,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
-#ifdef RGBLIGHT_ENABLE
-# define RGBLED_NUM 10 // Number of LEDs
-#endif
-
-#define DRIVER_LED_TOTAL 55
-
-/* 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
-
-/* Bootmagic Lite key configuration */
-//#define BOOTMAGIC_LITE_ROW 0
-//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/boardsource/technik_s/info.json b/keyboards/boardsource/technik_s/info.json
index 938501b613..6593845e83 100644
--- a/keyboards/boardsource/technik_s/info.json
+++ b/keyboards/boardsource/technik_s/info.json
@@ -1,56 +1,135 @@
{
- "keyboard_name": "Technik-S",
- "url": "",
- "maintainer": "Boardsource",
- "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": "6", "x": 5, "y": 0 },
- { "label": "7", "x": 6, "y": 0 },
- { "label": "8", "x": 7, "y": 0 },
- { "label": "9", "x": 8, "y": 0 },
- { "label": "10", "x": 9, "y": 0 },
- { "label": "11", "x": 10, "y": 0 },
- { "label": "12", "x": 11, "y": 0 },
- { "label": "13", "x": 0, "y": 1, "w": 1.5 },
- { "label": "14", "x": 1.5, "y": 1 },
- { "label": "15", "x": 2.5, "y": 1 },
- { "label": "16", "x": 3.5, "y": 1 },
- { "label": "17", "x": 4.5, "y": 1 },
- { "label": "18", "x": 5.5, "y": 1 },
- { "label": "19", "x": 6.5, "y": 1 },
- { "label": "20", "x": 7.5, "y": 1 },
- { "label": "21", "x": 8.5, "y": 1 },
- { "label": "22", "x": 9.5, "y": 1 },
- { "label": "23", "x": 10.5, "y": 1, "w": 1.5 },
- { "label": "24", "x": 0, "y": 2 },
- { "label": "25", "x": 1, "y": 2 },
- { "label": "26", "x": 2, "y": 2 },
- { "label": "27", "x": 3, "y": 2 },
- { "label": "28", "x": 4, "y": 2 },
- { "label": "29", "x": 5, "y": 2 },
- { "label": "30", "x": 6, "y": 2 },
- { "label": "31", "x": 7, "y": 2 },
- { "label": "32", "x": 8, "y": 2 },
- { "label": "33", "x": 9, "y": 2 },
- { "label": "34", "x": 10, "y": 2 },
- { "label": "35", "x": 11, "y": 2 },
- { "label": "36", "x": 0, "y": 3 },
- { "label": "37", "x": 1, "y": 3 },
- { "label": "38", "x": 2, "y": 3 },
- { "label": "39", "x": 3, "y": 3, "w": 1.5 },
- { "label": "40", "x": 4.5, "y": 3, "w": 1.5 },
- { "label": "41", "x": 6, "y": 3, "w": 1.5 },
- { "label": "42", "x": 7.5, "y": 3, "w": 1.5 },
- { "label": "43", "x": 9, "y": 3 },
- { "label": "44", "x": 10, "y": 3 },
- { "label": "45", "x": 11, "y": 3 }
- ]
- }
+ "manufacturer": "Boardsource",
+ "keyboard_name": "Technik-S",
+ "maintainer": "waffle87",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "cols": ["B5", "B6", "B7", "F5", "C7", "D0", "D1", "D2", "D3", "D4", "D5", "D6"],
+ "rows": ["B0", "B1", "B2", "B3"]
+ },
+ "processor": "atmega32u4",
+ "url": "https://boardsource.xyz/store/5ffb9b01edd0447f8023fdb2",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0083",
+ "vid": "0x4273"
+ },
+ "rgb_matrix": {
+ "layout": [
+ { "flags": 2, "x": 220, "y": 17 },
+ { "flags": 2, "x": 172, "y": 17 },
+ { "flags": 2, "x": 112, "y": 17 },
+ { "flags": 2, "x": 50, "y": 17 },
+ { "flags": 2, "x": 4, "y": 17 },
+ { "flags": 2, "x": 4, "y": 56 },
+ { "flags": 2, "x": 50, "y": 56 },
+ { "flags": 2, "x": 112, "y": 56 },
+ { "flags": 2, "x": 172, "y": 56 },
+ { "flags": 2, "x": 220, "y": 56 },
+ { "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 },
+ { "flags": 4, "matrix": [0, 1], "x": 20, "y": 0 },
+ { "flags": 4, "matrix": [0, 2], "x": 40, "y": 0 },
+ { "flags": 4, "matrix": [0, 3], "x": 61, "y": 0 },
+ { "flags": 4, "matrix": [0, 4], "x": 81, "y": 0 },
+ { "flags": 4, "matrix": [0, 5], "x": 101, "y": 0 },
+ { "flags": 4, "matrix": [0, 6], "x": 122, "y": 0 },
+ { "flags": 4, "matrix": [0, 7], "x": 142, "y": 0 },
+ { "flags": 4, "matrix": [0, 8], "x": 162, "y": 0 },
+ { "flags": 4, "matrix": [0, 9], "x": 183, "y": 0 },
+ { "flags": 4, "matrix": [0, 10], "x": 203, "y": 0 },
+ { "flags": 1, "matrix": [0, 11], "x": 224, "y": 0 },
+ { "flags": 1, "matrix": [1, 0], "x": 10, "y": 21 },
+ { "flags": 4, "matrix": [1, 2], "x": 30, "y": 21 },
+ { "flags": 4, "matrix": [1, 3], "x": 51, "y": 21 },
+ { "flags": 4, "matrix": [1, 4], "x": 71, "y": 21 },
+ { "flags": 4, "matrix": [1, 5], "x": 91, "y": 21 },
+ { "flags": 4, "matrix": [1, 6], "x": 112, "y": 21 },
+ { "flags": 4, "matrix": [1, 7], "x": 132, "y": 21 },
+ { "flags": 4, "matrix": [1, 8], "x": 152, "y": 21 },
+ { "flags": 4, "matrix": [1, 9], "x": 173, "y": 21 },
+ { "flags": 4, "matrix": [1, 10], "x": 193, "y": 21 },
+ { "flags": 1, "matrix": [1, 11], "x": 214, "y": 21 },
+ { "flags": 1, "matrix": [2, 0], "x": 0, "y": 42 },
+ { "flags": 4, "matrix": [2, 1], "x": 20, "y": 42 },
+ { "flags": 4, "matrix": [2, 2], "x": 40, "y": 42 },
+ { "flags": 4, "matrix": [2, 3], "x": 61, "y": 42 },
+ { "flags": 4, "matrix": [2, 4], "x": 81, "y": 42 },
+ { "flags": 4, "matrix": [2, 5], "x": 101, "y": 42 },
+ { "flags": 4, "matrix": [2, 6], "x": 122, "y": 42 },
+ { "flags": 4, "matrix": [2, 7], "x": 142, "y": 42 },
+ { "flags": 4, "matrix": [2, 8], "x": 162, "y": 42 },
+ { "flags": 4, "matrix": [2, 9], "x": 183, "y": 42 },
+ { "flags": 4, "matrix": [2, 10], "x": 203, "y": 42 },
+ { "flags": 1, "matrix": [2, 11], "x": 224, "y": 42 },
+ { "flags": 1, "matrix": [3, 0], "x": 0, "y": 64 },
+ { "flags": 4, "matrix": [3, 1], "x": 20, "y": 64 },
+ { "flags": 4, "matrix": [3, 2], "x": 40, "y": 64 },
+ { "flags": 4, "matrix": [3, 3], "x": 68, "y": 64 },
+ { "flags": 4, "matrix": [3, 5], "x": 97, "y": 64 },
+ { "flags": 4, "matrix": [3, 6], "x": 126, "y": 64 },
+ { "flags": 4, "matrix": [3, 8], "x": 154, "y": 64 },
+ { "flags": 4, "matrix": [3, 9], "x": 183, "y": 64 },
+ { "flags": 4, "matrix": [3, 10], "x": 203, "y": 64 },
+ { "flags": 1, "matrix": [3, 11], "x": 224, "y": 64 }
+ ]
+ },
+ "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": [1, 0], "w": 1.5, "x": 0, "y": 1 },
+ { "matrix": [1, 2], "x": 1.5, "y": 1 },
+ { "matrix": [1, 3], "x": 2.5, "y": 1 },
+ { "matrix": [1, 4], "x": 3.5, "y": 1 },
+ { "matrix": [1, 5], "x": 4.5, "y": 1 },
+ { "matrix": [1, 6], "x": 5.5, "y": 1 },
+ { "matrix": [1, 7], "x": 6.5, "y": 1 },
+ { "matrix": [1, 8], "x": 7.5, "y": 1 },
+ { "matrix": [1, 9], "x": 8.5, "y": 1 },
+ { "matrix": [1, 10], "x": 9.5, "y": 1 },
+ { "matrix": [1, 11], "w": 1.5, "x": 10.5, "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": [3, 0], "x": 0, "y": 3 },
+ { "matrix": [3, 1], "x": 1, "y": 3 },
+ { "matrix": [3, 2], "x": 2, "y": 3 },
+ { "matrix": [3, 3], "w": 1.5, "x": 3, "y": 3 },
+ { "matrix": [3, 5], "w": 1.5, "x": 4.5, "y": 3 },
+ { "matrix": [3, 6], "w": 1.5, "x": 6, "y": 3 },
+ { "matrix": [3, 8], "w": 1.5, "x": 7.5, "y": 3 },
+ { "matrix": [3, 9], "x": 9, "y": 3 },
+ { "matrix": [3, 10], "x": 10, "y": 3 },
+ { "matrix": [3, 11], "x": 11, "y": 3 }
+ ]
}
+ }
}
diff --git a/keyboards/boardsource/technik_s/keymaps/default/keymap.c b/keyboards/boardsource/technik_s/keymaps/default/keymap.c
index 1b26f6387d..00e17b15f0 100644
--- a/keyboards/boardsource/technik_s/keymaps/default/keymap.c
+++ b/keyboards/boardsource/technik_s/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Boardsource
+/* Copyright 2022 Boardsource
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -22,32 +22,26 @@ enum layers {
_LOWER,
};
-// Readability keycodes
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[_MAIN] = 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_LSHIFT,KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_UP, KC_ENT ,
RGB_TOG, KC_LCTL, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_RIGHT
),
-
[_RAISE] = 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,
- RGB_MOD, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD
+ 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,
+ RGB_MOD, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD
),
-
[_LOWER] = 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_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD
- )
-
+ 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_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD
+ )
};
-
diff --git a/keyboards/boardsource/technik_s/keymaps/default/readme.md b/keyboards/boardsource/technik_s/keymaps/default/readme.md
deleted file mode 100644
index 0e6753504b..0000000000
--- a/keyboards/boardsource/technik_s/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The default keymap for Technik-S
diff --git a/keyboards/boardsource/technik_s/keymaps/via/keymap.c b/keyboards/boardsource/technik_s/keymaps/via/keymap.c
index 1b26f6387d..f85b1ff186 100644
--- a/keyboards/boardsource/technik_s/keymaps/via/keymap.c
+++ b/keyboards/boardsource/technik_s/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Boardsource
+/* Copyright 2022 Boardsource
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -22,32 +22,32 @@ enum layers {
_LOWER,
};
-// Readability keycodes
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
[_MAIN] = 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_LSHIFT,KC_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_UP, KC_ENT ,
RGB_TOG, KC_LCTL, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_RIGHT
),
-
[_RAISE] = 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,
- RGB_MOD, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD
+ 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,
+ RGB_MOD, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD
),
-
[_LOWER] = 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_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD
- )
-
+ 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_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD
+ ),
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
};
-
diff --git a/keyboards/boardsource/technik_s/keymaps/via/readme.md b/keyboards/boardsource/technik_s/keymaps/via/readme.md
deleted file mode 100644
index 54e975a5aa..0000000000
--- a/keyboards/boardsource/technik_s/keymaps/via/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The via keymap for Technik-S
diff --git a/keyboards/boardsource/technik_s/rules.mk b/keyboards/boardsource/technik_s/rules.mk
index 33488b9d3a..32afd21635 100644
--- a/keyboards/boardsource/technik_s/rules.mk
+++ b/keyboards/boardsource/technik_s/rules.mk
@@ -1,21 +1 @@
-# 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
RGB_MATRIX_DRIVER = WS2812
-LTO_ENABLE = yes
diff --git a/keyboards/boardsource/technik_s/technik_s.c b/keyboards/boardsource/technik_s/technik_s.c
deleted file mode 100644
index bb7245c73d..0000000000
--- a/keyboards/boardsource/technik_s/technik_s.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Copyright 2020 Boardsource
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "technik_s.h"
-#ifdef RGB_MATRIX_ENABLE
-led_config_t g_led_config = { {
- {10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21},
- {22, NO_LED, 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, NO_LED, 49, 50, NO_LED, 51, 52, 53, 54}
-}, {
- {220, 17}, {172, 17}, {112, 17}, { 50, 17}, { 4, 17}, { 4, 56}, { 50, 56}, {112, 56}, {172, 56}, {220, 56},
- { 0, 0}, { 20, 0}, { 40, 0}, { 61, 0}, { 81, 0}, {101, 0}, {122, 0}, {142, 0}, {162, 0}, {183, 0}, {203, 0}, {224, 0},
- { 10, 21}, { 30, 21}, { 51, 21}, { 71, 21}, { 91, 21}, {112, 21}, {132, 21}, {152, 21}, {173, 21}, {193, 21}, {214, 21},
- { 0, 42}, { 20, 42}, { 40, 42}, { 61, 42}, { 81, 42}, {101, 42}, {122, 42}, {142, 42}, {162, 42}, {183, 42}, {203, 42}, {224, 42},
- { 0, 64}, { 20, 64}, { 40, 64}, { 68, 64}, { 97, 64}, {126, 64}, {154, 64}, {183, 64}, {203, 64}, {224, 64}
-}, {
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
- 1, 1, 1, 1, 4, 4, 1, 1, 1, 1
-} };
-#endif
-
diff --git a/keyboards/boardsource/technik_s/technik_s.h b/keyboards/boardsource/technik_s/technik_s.h
deleted file mode 100644
index 97ee9a7f5f..0000000000
--- a/keyboards/boardsource/technik_s/technik_s.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright 2020 Boardsource
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have 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, K10, K11, \
- K12, 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 \
- ) { \
- {K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11}, \
- {K12, KC_NO, 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,KC_NO,K40, K41,KC_NO,K42, K43, K44, K45} \
- }
-
diff --git a/keyboards/boardsource/the_mark/config.h b/keyboards/boardsource/the_mark/config.h
index 99696e5d28..61628e1821 100644
--- a/keyboards/boardsource/the_mark/config.h
+++ b/keyboards/boardsource/the_mark/config.h
@@ -1,5 +1,5 @@
/*
-Copyright 2020 Boardsource
+Copyright 2022 Boardsource
This 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,141 +16,40 @@ 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 0x4273 // "Bs" - Boardsource
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Boardsource
-#define PRODUCT The Mark65
-
-/* 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 {B0, B1, B2, B3, B4}
-#define MATRIX_COL_PINS {B5, B6, B7, F5, C7, D0, D1, D2, D3, D4, D5, D6, D7,F0, F1, F4}
-#define UNUSED_PINS
-
-/* COL2ROW, ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-#define RGBLIGHT_ANIMATIONS
-#define RGB_DI_PIN C6
-#ifdef RGBLIGHT_ENABLE
-#define RGBLED_NUM 24 // Number of LEDs
-#define RGBLIGHT_LIMIT_VAL 200
-#endif
-
-/* RGB matrix support */
#ifdef RGB_MATRIX_ENABLE
-# define DRIVER_LED_TOTAL 24 // Number of LEDs
+# define DRIVER_LED_TOTAL 24
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
-# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# 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_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_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 ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+# define ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+# define ENABLE_RGB_MATRIX_SOLID_SPLASH
#endif
-
-/*
- * 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_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
-
-/* Bootmagic Lite key configuration */
-//#define BOOTMAGIC_LITE_ROW 0
-//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/boardsource/the_mark/info.json b/keyboards/boardsource/the_mark/info.json
index 792585d12a..7518a39026 100644
--- a/keyboards/boardsource/the_mark/info.json
+++ b/keyboards/boardsource/the_mark/info.json
@@ -1,394 +1,451 @@
{
- "keyboard_name": "The Mark: 65",
- "url": "",
- "maintainer": "daysgobye, Boardsource",
- "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":"Toggle RGB", "x":15.25, "y":0},
+ "manufacturer": "Boardsource",
+ "keyboard_name": "The Mark65",
+ "maintainer": "daysgobye, boardsource, waffle87",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true,
+ "rgblight": true,
+ "rgb_matrix": false
+ },
+ "matrix_pins": {
+ "cols": ["B5", "B6", "B7", "F5", "C7", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "F0", "F1", "F4"],
+ "rows": ["B0", "B1", "B2", "B3", "B4"]
+ },
+ "processor": "atmega32u4",
+ "url": "https://boardsource.xyz/projects/5f46409bdce98063626dcb08",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0001",
+ "vid": "0x4273"
+ },
+ "rgblight": {
+ "led_count": 24,
+ "pin": "C6",
+ "sleep": true,
+ "max_brightness": 200,
+ "animations": {
+ "all": true
+ }
+ },
+ "rgb_matrix": {
+ "layout": [
+ { "flags": 2, "x": 224, "y": 42},
+ { "flags": 2, "x": 224, "y": 21},
+ { "flags": 2, "x": 209, "y": 21},
+ { "flags": 2, "x": 179, "y": 21},
+ { "flags": 2, "x": 164, "y": 21},
+ { "flags": 2, "x": 134, "y": 21},
+ { "flags": 2, "x": 119, "y": 21},
+ { "flags": 2, "x": 89, "y": 21},
+ { "flags": 2, "x": 74, "y": 21},
+ { "flags": 2, "x": 45, "y": 21},
+ { "flags": 2, "x": 30, "y": 21},
+ { "flags": 2, "x": 30, "y": 42},
+ { "flags": 2, "x": 30, "y": 64},
+ { "flags": 2, "x": 30, "y": 85},
+ { "flags": 2, "x": 45, "y": 85},
+ { "flags": 2, "x": 74, "y": 85},
+ { "flags": 2, "x": 89, "y": 85},
+ { "flags": 2, "x": 119, "y": 85},
+ { "flags": 2, "x": 134, "y": 85},
+ { "flags": 2, "x": 164, "y": 85},
+ { "flags": 2, "x": 179, "y": 85},
+ { "flags": 2, "x": 209, "y": 85},
+ { "flags": 2, "x": 224, "y": 85},
+ { "flags": 2, "x": 224, "y": 64}
+ ]
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label":"Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label":"1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label":"2@", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label":"3#", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label":"4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label":"5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label":"6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label":"7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label":"8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label":"9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label":"0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label":"-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label":"=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label":"Backspace", "matrix": [0, 13], "x": 13, "y": 0 },
+ { "label":"Backspace", "matrix": [0, 14], "x": 14, "y": 0 },
+ { "label":"RGB Toggle", "matrix": [0, 15], "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":"Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5 },
+ { "label":"Q", "matrix": [1, 2], "x": 1.5, "y": 1 },
+ { "label":"W", "matrix": [1, 3], "x": 2.5, "y": 1 },
+ { "label":"E", "matrix": [1, 4], "x": 3.5, "y": 1 },
+ { "label":"R", "matrix": [1, 5], "x": 4.5, "y": 1 },
+ { "label":"T", "matrix": [1, 6], "x": 5.5, "y": 1 },
+ { "label":"Y", "matrix": [1, 7], "x": 6.5, "y": 1 },
+ { "label":"U", "matrix": [1, 8], "x": 7.5, "y": 1 },
+ { "label":"I", "matrix": [1, 9], "x": 8.5, "y": 1 },
+ { "label":"O", "matrix": [1, 10], "x": 9.5, "y": 1 },
+ { "label":"P", "matrix": [1, 11], "x": 10.5, "y": 1 },
+ { "label":"[{", "matrix": [1, 12], "x": 11.5, "y": 1 },
+ { "label":"]}", "matrix": [1, 13], "x": 12.5, "y": 1 },
+ { "label":"\\|", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5 },
+ { "label":"RGB Mode", "matrix": [1, 15], "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":"Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75 },
+ { "label":"A", "matrix": [2, 2], "x": 1.75, "y": 2 },
+ { "label":"S", "matrix": [2, 3], "x": 2.75, "y": 2 },
+ { "label":"D", "matrix": [2, 4], "x": 3.75, "y": 2 },
+ { "label":"F", "matrix": [2, 5], "x": 4.75, "y": 2 },
+ { "label":"G", "matrix": [2, 6], "x": 5.75, "y": 2 },
+ { "label":"H", "matrix": [2, 7], "x": 6.75, "y": 2 },
+ { "label":"J", "matrix": [2, 8], "x": 7.75, "y": 2 },
+ { "label":"K", "matrix": [2, 9], "x": 8.75, "y": 2 },
+ { "label":"L", "matrix": [2, 10], "x": 9.75, "y": 2 },
+ { "label":";:", "matrix": [2, 11], "x": 10.75, "y": 2 },
+ { "label":"'\"", "matrix": [2, 12], "x": 11.75, "y": 2 },
+ { "label":"Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25 },
+ { "label":"Fn", "matrix": [2, 15], "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":"Shift", "matrix": [3, 1], "x": 0, "y": 3, "w": 1.25 },
+ { "label":"\\|", "matrix": [3, 0], "x": 1.25, "y": 3 },
+ { "label":"Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label":"X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label":"C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label":"V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label":"B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label":"N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label":"M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label":",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label":".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label":"/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label":"Shift", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75 },
+ { "label":"\u2191", "matrix": [3, 14], "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": [
- {"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":"Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25 },
+ { "label":"GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25 },
+ { "label":"Alt", "matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25 },
+ { "label":"Space", "matrix": [4, 4], "x": 3.75, "y": 4, "w": 2.25 },
+ { "label":"Space", "matrix": [4, 6], "x": 6, "y": 4, "w": 1.25 },
+ { "label":"Space", "matrix": [4, 8], "x": 7.25, "y": 4, "w": 2.75 },
+ { "label":"Alt", "matrix": [4, 10], "x": 10, "y": 4 },
+ { "label":"Ctrl", "matrix": [4, 11], "x": 11, "y": 4 },
+ { "label":"`~", "matrix": [4, 12], "x": 12, "y": 4 },
+ { "label":"\u2190", "matrix": [4, 13], "x": 13.25, "y": 4.25 },
+ { "label":"\u2193", "matrix": [4, 14], "x": 14.25, "y": 4.25 },
+ { "label":"\u2192", "matrix": [4, 15], "x": 15.25, "y": 4.25 }
+ ]
+ },
+ "LAYOUT_ansi": {
+ "layout": [
+ { "label":"Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label":"1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label":"2@", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label":"3#", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label":"4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label":"5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label":"6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label":"7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label":"8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label":"9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label":"0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label":"-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label":"=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label":"Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2 },
+ { "label":"RGB Toggle", "matrix": [0, 15], "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":"Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5 },
+ { "label":"Q", "matrix": [1, 2], "x": 1.5, "y": 1 },
+ { "label":"W", "matrix": [1, 3], "x": 2.5, "y": 1 },
+ { "label":"E", "matrix": [1, 4], "x": 3.5, "y": 1 },
+ { "label":"R", "matrix": [1, 5], "x": 4.5, "y": 1 },
+ { "label":"T", "matrix": [1, 6], "x": 5.5, "y": 1 },
+ { "label":"Y", "matrix": [1, 7], "x": 6.5, "y": 1 },
+ { "label":"U", "matrix": [1, 8], "x": 7.5, "y": 1 },
+ { "label":"I", "matrix": [1, 9], "x": 8.5, "y": 1 },
+ { "label":"O", "matrix": [1, 10], "x": 9.5, "y": 1 },
+ { "label":"P", "matrix": [1, 11], "x": 10.5, "y": 1 },
+ { "label":"[{", "matrix": [1, 12], "x": 11.5, "y": 1 },
+ { "label":"]}", "matrix": [1, 13], "x": 12.5, "y": 1 },
+ { "label":"\\|", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5 },
+ { "label":"RGB Mode", "matrix": [1, 15], "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":"Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75 },
+ { "label":"A", "matrix": [2, 2], "x": 1.75, "y": 2 },
+ { "label":"S", "matrix": [2, 3], "x": 2.75, "y": 2 },
+ { "label":"D", "matrix": [2, 4], "x": 3.75, "y": 2 },
+ { "label":"F", "matrix": [2, 5], "x": 4.75, "y": 2 },
+ { "label":"G", "matrix": [2, 6], "x": 5.75, "y": 2 },
+ { "label":"H", "matrix": [2, 7], "x": 6.75, "y": 2 },
+ { "label":"J", "matrix": [2, 8], "x": 7.75, "y": 2 },
+ { "label":"K", "matrix": [2, 9], "x": 8.75, "y": 2 },
+ { "label":"L", "matrix": [2, 10], "x": 9.75, "y": 2 },
+ { "label":";:", "matrix": [2, 11], "x": 10.75, "y": 2 },
+ { "label":"'\"", "matrix": [2, 12], "x": 11.75, "y": 2 },
+ { "label":"Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25 },
+ { "label":"Fn", "matrix": [2, 15], "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":"Shift", "matrix": [3, 1], "x": 0, "y": 3, "w": 2.25 },
+ { "label":"Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label":"X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label":"C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label":"V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label":"B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label":"N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label":"M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label":",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label":".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label":"/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label":"Shift", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75 },
+ { "label":"\u2191", "matrix": [3, 14], "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":"Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25 },
+ { "label":"GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25 },
+ { "label":"Alt", "matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25 },
+ { "label":"Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25 },
+ { "label":"Alt", "matrix": [4, 10], "x": 10, "y": 4 },
+ { "label":"Ctrl", "matrix": [4, 11], "x": 11, "y": 4 },
+ { "label":"`~", "matrix": [4, 12], "x": 12, "y": 4 },
+ { "label":"\u2190", "matrix": [4, 13], "x": 13.25, "y": 4.25 },
+ { "label":"\u2193", "matrix": [4, 14], "x": 14.25, "y": 4.25 },
+ { "label":"\u2192", "matrix": [4, 15], "x": 15.25, "y": 4.25 }
+ ]
+ },
+ "LAYOUT_ansi_split_bs_space": {
+ "layout": [
+ { "label":"Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label":"1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label":"2@", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label":"3#", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label":"4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label":"5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label":"6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label":"7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label":"8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label":"9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label":"0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label":"-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label":"=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label":"Backspace", "matrix": [0, 13], "x": 13, "y": 0 },
+ { "label":"Backspace", "matrix": [0, 14], "x": 14, "y": 0 },
+ { "label":"RGB Toggle", "matrix": [0, 15], "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":"Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5 },
+ { "label":"Q", "matrix": [1, 2], "x": 1.5, "y": 1 },
+ { "label":"W", "matrix": [1, 3], "x": 2.5, "y": 1 },
+ { "label":"E", "matrix": [1, 4], "x": 3.5, "y": 1 },
+ { "label":"R", "matrix": [1, 5], "x": 4.5, "y": 1 },
+ { "label":"T", "matrix": [1, 6], "x": 5.5, "y": 1 },
+ { "label":"Y", "matrix": [1, 7], "x": 6.5, "y": 1 },
+ { "label":"U", "matrix": [1, 8], "x": 7.5, "y": 1 },
+ { "label":"I", "matrix": [1, 9], "x": 8.5, "y": 1 },
+ { "label":"O", "matrix": [1, 10], "x": 9.5, "y": 1 },
+ { "label":"P", "matrix": [1, 11], "x": 10.5, "y": 1 },
+ { "label":"[{", "matrix": [1, 12], "x": 11.5, "y": 1 },
+ { "label":"]}", "matrix": [1, 13], "x": 12.5, "y": 1 },
+ { "label":"\\|", "matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5 },
+ { "label":"RGB Mode", "matrix": [1, 15], "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":"Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75 },
+ { "label":"A", "matrix": [2, 2], "x": 1.75, "y": 2 },
+ { "label":"S", "matrix": [2, 3], "x": 2.75, "y": 2 },
+ { "label":"D", "matrix": [2, 4], "x": 3.75, "y": 2 },
+ { "label":"F", "matrix": [2, 5], "x": 4.75, "y": 2 },
+ { "label":"G", "matrix": [2, 6], "x": 5.75, "y": 2 },
+ { "label":"H", "matrix": [2, 7], "x": 6.75, "y": 2 },
+ { "label":"J", "matrix": [2, 8], "x": 7.75, "y": 2 },
+ { "label":"K", "matrix": [2, 9], "x": 8.75, "y": 2 },
+ { "label":"L", "matrix": [2, 10], "x": 9.75, "y": 2 },
+ { "label":";:", "matrix": [2, 11], "x": 10.75, "y": 2 },
+ { "label":"'\"", "matrix": [2, 12], "x": 11.75, "y": 2 },
+ { "label":"Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25 },
+ { "label":"Fn", "matrix": [2, 15], "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":"Shift", "matrix": [3, 1], "x": 0, "y": 3, "w": 2.25 },
+ { "label":"Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label":"X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label":"C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label":"V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label":"B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label":"N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label":"M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label":",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label":".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label":"/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label":"Shift", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75 },
+ { "label":"\u2191", "matrix": [3, 14], "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": [
- {"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":"Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25 },
+ { "label":"GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25 },
+ { "label":"Alt", "matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25 },
+ { "label":"Space", "matrix": [4, 4], "x": 3.75, "y": 4, "w": 2.25 },
+ { "label":"Space", "matrix": [4, 6], "x": 6, "y": 4, "w": 1.25 },
+ { "label":"Space", "matrix": [4, 8], "x": 7.25, "y": 4, "w": 2.75 },
+ { "label":"Alt", "matrix": [4, 10], "x": 10, "y": 4 },
+ { "label":"Ctrl", "matrix": [4, 11], "x": 11, "y": 4 },
+ { "label":"`~", "matrix": [4, 12], "x": 12, "y": 4 },
+ { "label":"\u2190", "matrix": [4, 13], "x": 13.25, "y": 4.25 },
+ { "label":"\u2193", "matrix": [4, 14], "x": 14.25, "y": 4.25 },
+ { "label":"\u2192", "matrix": [4, 15], "x": 15.25, "y": 4.25 }
+ ]
+ },
+ "LAYOUT_iso": {
+ "layout": [
+ { "label":"Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label":"1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label":"2\"", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label":"3\u00a3", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label":"4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label":"5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label":"6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label":"7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label":"8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label":"9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label":"0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label":"-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label":"=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label":"Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2 },
+ { "label":"RGB Toggle", "matrix": [0, 15], "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":"Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5 },
+ { "label":"Q", "matrix": [1, 2], "x": 1.5, "y": 1 },
+ { "label":"W", "matrix": [1, 3], "x": 2.5, "y": 1 },
+ { "label":"E", "matrix": [1, 4], "x": 3.5, "y": 1 },
+ { "label":"R", "matrix": [1, 5], "x": 4.5, "y": 1 },
+ { "label":"T", "matrix": [1, 6], "x": 5.5, "y": 1 },
+ { "label":"Y", "matrix": [1, 7], "x": 6.5, "y": 1 },
+ { "label":"U", "matrix": [1, 8], "x": 7.5, "y": 1 },
+ { "label":"I", "matrix": [1, 9], "x": 8.5, "y": 1 },
+ { "label":"O", "matrix": [1, 10], "x": 9.5, "y": 1 },
+ { "label":"P", "matrix": [1, 11], "x": 10.5, "y": 1 },
+ { "label":"[{", "matrix": [1, 12], "x": 11.5, "y": 1 },
+ { "label":"]}", "matrix": [1, 13], "x": 12.5, "y": 1 },
+ { "label":"RGB Mode", "matrix": [1, 15], "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":"Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75 },
+ { "label":"A", "matrix": [2, 2], "x": 1.75, "y": 2 },
+ { "label":"S", "matrix": [2, 3], "x": 2.75, "y": 2 },
+ { "label":"D", "matrix": [2, 4], "x": 3.75, "y": 2 },
+ { "label":"F", "matrix": [2, 5], "x": 4.75, "y": 2 },
+ { "label":"G", "matrix": [2, 6], "x": 5.75, "y": 2 },
+ { "label":"H", "matrix": [2, 7], "x": 6.75, "y": 2 },
+ { "label":"J", "matrix": [2, 8], "x": 7.75, "y": 2 },
+ { "label":"K", "matrix": [2, 9], "x": 8.75, "y": 2 },
+ { "label":"L", "matrix": [2, 10], "x": 9.75, "y": 2 },
+ { "label":";:", "matrix": [2, 11], "x": 10.75, "y": 2 },
+ { "label":"'@", "matrix": [2, 12], "x": 11.75, "y": 2 },
+ { "label":"#~", "matrix": [1, 14], "x": 12.75, "y": 2 },
+ { "label":"Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2 },
+ { "label":"Fn", "matrix": [2, 15], "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":"Shift", "matrix": [3, 1], "x": 0, "y": 3, "w": 1.25 },
+ { "label":"\\|", "matrix": [3, 0], "x": 1.25, "y": 3 },
+ { "label":"Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label":"X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label":"C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label":"V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label":"B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label":"N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label":"M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label":",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label":".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label":"/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label":"Shift", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75 },
+ { "label":"\u2191", "matrix": [3, 14], "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":"Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25 },
+ { "label":"GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25 },
+ { "label":"Alt", "matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25 },
+ { "label":"Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25 },
+ { "label":"Alt", "matrix": [4, 10], "x": 10, "y": 4 },
+ { "label":"Ctrl", "matrix": [4, 11], "x": 11, "y": 4 },
+ { "label":"`~", "matrix": [4, 12], "x": 12, "y": 4 },
+ { "label":"\u2190", "matrix": [4, 13], "x": 13.25, "y": 4.25 },
+ { "label":"\u2193", "matrix": [4, 14], "x": 14.25, "y": 4.25 },
+ { "label":"\u2192", "matrix": [4, 15], "x": 15.25, "y": 4.25 }
+ ]
+ },
+ "LAYOUT_iso_split_bs_space": {
+ "layout": [
+ { "label":"Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label":"1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label":"2\"", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label":"3\u00a3", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label":"4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label":"5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label":"6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label":"7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label":"8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label":"9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label":"0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label":"-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label":"=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label":"Backspace", "matrix": [0, 13], "x": 13, "y": 0 },
+ { "label":"Backspace", "matrix": [0, 14], "x": 14, "y": 0 },
+ { "label":"RGB Toggle", "matrix": [0, 15], "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":"Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5 },
+ { "label":"Q", "matrix": [1, 2], "x": 1.5, "y": 1 },
+ { "label":"W", "matrix": [1, 3], "x": 2.5, "y": 1 },
+ { "label":"E", "matrix": [1, 4], "x": 3.5, "y": 1 },
+ { "label":"R", "matrix": [1, 5], "x": 4.5, "y": 1 },
+ { "label":"T", "matrix": [1, 6], "x": 5.5, "y": 1 },
+ { "label":"Y", "matrix": [1, 7], "x": 6.5, "y": 1 },
+ { "label":"U", "matrix": [1, 8], "x": 7.5, "y": 1 },
+ { "label":"I", "matrix": [1, 9], "x": 8.5, "y": 1 },
+ { "label":"O", "matrix": [1, 10], "x": 9.5, "y": 1 },
+ { "label":"P", "matrix": [1, 11], "x": 10.5, "y": 1 },
+ { "label":"[{", "matrix": [1, 12], "x": 11.5, "y": 1 },
+ { "label":"]}", "matrix": [1, 13], "x": 12.5, "y": 1 },
+ { "label":"RGB Mode", "matrix": [1, 15], "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":"Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75 },
+ { "label":"A", "matrix": [2, 2], "x": 1.75, "y": 2 },
+ { "label":"S", "matrix": [2, 3], "x": 2.75, "y": 2 },
+ { "label":"D", "matrix": [2, 4], "x": 3.75, "y": 2 },
+ { "label":"F", "matrix": [2, 5], "x": 4.75, "y": 2 },
+ { "label":"G", "matrix": [2, 6], "x": 5.75, "y": 2 },
+ { "label":"H", "matrix": [2, 7], "x": 6.75, "y": 2 },
+ { "label":"J", "matrix": [2, 8], "x": 7.75, "y": 2 },
+ { "label":"K", "matrix": [2, 9], "x": 8.75, "y": 2 },
+ { "label":"L", "matrix": [2, 10], "x": 9.75, "y": 2 },
+ { "label":";:", "matrix": [2, 11], "x": 10.75, "y": 2 },
+ { "label":"'@", "matrix": [2, 12], "x": 11.75, "y": 2 },
+ { "label":"#~", "matrix": [1, 14], "x": 12.75, "y": 2 },
+ { "label":"Enter", "matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2 },
+ { "label":"Fn", "matrix": [2, 15], "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":"Shift", "matrix": [3, 1], "x": 0, "y": 3, "w": 1.25 },
+ { "label":"\\|", "matrix": [3, 0], "x": 1.25, "y": 3 },
+ { "label":"Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label":"X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label":"C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label":"V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label":"B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label":"N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label":"M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label":",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label":".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label":"/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label":"Shift", "matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75 },
+ { "label":"\u2191", "matrix": [3, 14], "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}
- ]
- }
+ { "label":"Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25 },
+ { "label":"GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25 },
+ { "label":"Alt", "matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25 },
+ { "label":"Space", "matrix": [4, 4], "x": 3.75, "y": 4, "w": 2.25 },
+ { "label":"Space", "matrix": [4, 6], "x": 6, "y": 4, "w": 1.25 },
+ { "label":"Space", "matrix": [4, 8], "x": 7.25, "y": 4, "w": 2.75 },
+ { "label":"Alt", "matrix": [4, 10], "x": 10, "y": 4 },
+ { "label":"Ctrl", "matrix": [4, 11], "x": 11, "y": 4 },
+ { "label":"`~", "matrix": [4, 12], "x": 12, "y": 4 },
+ { "label":"\u2190", "matrix": [4, 13], "x": 13.25, "y": 4.25 },
+ { "label":"\u2193", "matrix": [4, 14], "x": 14.25, "y": 4.25 },
+ { "label":"\u2192", "matrix": [4, 15], "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 dc689f9bb1..8e4b5caed7 100644
--- a/keyboards/boardsource/the_mark/keymaps/default/keymap.c
+++ b/keyboards/boardsource/the_mark/keymaps/default/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Boardsource
+/* Copyright 2022 Boardsource
*
* This 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/boardsource/the_mark/keymaps/default_ansi/keymap.c b/keyboards/boardsource/the_mark/keymaps/default_ansi/keymap.c
index 6e1bcd2894..75db90f23f 100644
--- a/keyboards/boardsource/the_mark/keymaps/default_ansi/keymap.c
+++ b/keyboards/boardsource/the_mark/keymaps/default_ansi/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Boardsource
+/* Copyright 2022 Boardsource
*
* This 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/boardsource/the_mark/keymaps/default_ansi_split_bs_space/keymap.c b/keyboards/boardsource/the_mark/keymaps/default_ansi_split_bs_space/keymap.c
index 477685c771..6bef05a7c1 100644
--- 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
@@ -1,4 +1,4 @@
-/* Copyright 2020 Boardsource
+/* Copyright 2022 Boardsource
* 2022 QMK / James Young (@noroadsleft)
*
* This program is free software: you can redistribute it and/or modify
diff --git a/keyboards/boardsource/the_mark/keymaps/default_iso/keymap.c b/keyboards/boardsource/the_mark/keymaps/default_iso/keymap.c
index 3e29975d37..68c664aa96 100644
--- a/keyboards/boardsource/the_mark/keymaps/default_iso/keymap.c
+++ b/keyboards/boardsource/the_mark/keymaps/default_iso/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Boardsource
+/* Copyright 2022 Boardsource
*
* This 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/boardsource/the_mark/keymaps/default_iso_split_bs_space/keymap.c b/keyboards/boardsource/the_mark/keymaps/default_iso_split_bs_space/keymap.c
index 1f61d83225..676b9b4575 100644
--- 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
@@ -1,4 +1,4 @@
-/* Copyright 2020 Boardsource
+/* Copyright 2022 Boardsource
* 2022 QMK / James Young (@noroadsleft)
*
* This program is free software: you can redistribute it and/or modify
diff --git a/keyboards/boardsource/the_mark/keymaps/stanrc85/keymap.c b/keyboards/boardsource/the_mark/keymaps/stanrc85/keymap.c
index eab59eb7ef..0d958b883a 100644
--- a/keyboards/boardsource/the_mark/keymaps/stanrc85/keymap.c
+++ b/keyboards/boardsource/the_mark/keymaps/stanrc85/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN2_60] = LAYOUT_all(
RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TG(_DEFAULT)
diff --git a/keyboards/boardsource/the_mark/keymaps/via/keymap.c b/keyboards/boardsource/the_mark/keymaps/via/keymap.c
index dbc3b5b464..3cf3b45d56 100644
--- a/keyboards/boardsource/the_mark/keymaps/via/keymap.c
+++ b/keyboards/boardsource/the_mark/keymaps/via/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Boardsource
+/* Copyright 2022 Boardsource
*
* This 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/boardsource/the_mark/keymaps/via/readme.md b/keyboards/boardsource/the_mark/keymaps/via/readme.md
deleted file mode 100644
index 5fda80e18b..0000000000
--- a/keyboards/boardsource/the_mark/keymaps/via/readme.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# The via keymap for The Mark: 65
-
-This folder contains the VIA configuration for the boardsource's The Mark: 65
diff --git a/keyboards/boardsource/the_mark/rules.mk b/keyboards/boardsource/the_mark/rules.mk
index e9cb6a2894..32afd21635 100644
--- a/keyboards/boardsource/the_mark/rules.mk
+++ b/keyboards/boardsource/the_mark/rules.mk
@@ -1,20 +1 @@
-# 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
-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_DRIVER = WS2812
diff --git a/keyboards/boardsource/the_mark/the_mark.c b/keyboards/boardsource/the_mark/the_mark.c
deleted file mode 100644
index 59aff7f9ac..0000000000
--- a/keyboards/boardsource/the_mark/the_mark.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright 2020 Boardsource
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "the_mark.h"
-
-/* Map physical under glow LEDs for RGB matrix support */
-#ifdef RGB_MATRIX_ENABLE
-led_config_t g_led_config = { {
- // Key Matrix to LED Index
- { 10 , NO_LED, 9 , NO_LED, 8 , 7 , NO_LED, 6 , 5 , NO_LED, 4 , 3 , NO_LED, 2 , NO_LED, 1 },
- { 11 , NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 0 },
- { 12 , NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 23 },
- { 13 , NO_LED, 14 , NO_LED, 15 , 16 , NO_LED, 17 , 18 , NO_LED, 19 , 20 , NO_LED, 21 , NO_LED, NO_LED },
- { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 22 },
-}, {
- // LED Index to Physical Position
- {224, 42}, {224, 21}, {209, 21}, {179, 21}, {164, 21}, {134, 21}, {119, 21}, {89, 21}, {74, 21}, {45, 21}, {30, 21}, {30, 42},
- {30, 64}, {30, 85}, {45, 85}, {74, 85}, {89, 85}, {119, 85}, {134, 85}, {164, 85}, {179, 85}, {209, 85}, {224, 85}, {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
-} };
-
-
-void suspend_power_down_kb(void) {
- 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
diff --git a/keyboards/boardsource/the_mark/the_mark.h b/keyboards/boardsource/the_mark/the_mark.h
deleted file mode 100644
index 163d5c256c..0000000000
--- a/keyboards/boardsource/the_mark/the_mark.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* Copyright 2020 Boardsource
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have 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 │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( \
- 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 \
-) { \
- { 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( \
- 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 \
-) { \
- { 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( \
- 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 \
-) { \
- { 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/config.h b/keyboards/boardwalk/config.h
index 03e481ce62..80ca48c995 100644
--- a/keyboards/boardwalk/config.h
+++ b/keyboards/boardwalk/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCDCD
-#define PRODUCT_ID 0x5337
-#define DEVICE_VER 0x0001
-#define MANUFACTURER shensmobile
-#define PRODUCT Boardwalk
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -40,7 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/boardwalk/info.json b/keyboards/boardwalk/info.json
index 63630cae8a..4d7d2ae4af 100644
--- a/keyboards/boardwalk/info.json
+++ b/keyboards/boardwalk/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Boardwalk",
+ "manufacturer": "shensmobile",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xCDCD",
+ "pid": "0x5337",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x14": {
"layout": [
diff --git a/keyboards/boardwalk/keymaps/mcallaster/keymap.c b/keyboards/boardwalk/keymaps/mcallaster/keymap.c
index ac1df1b033..efddd8aa0a 100644
--- a/keyboards/boardwalk/keymaps/mcallaster/keymap.c
+++ b/keyboards/boardwalk/keymaps/mcallaster/keymap.c
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN] = LAYOUT_ortho_hhkb(
__SLEEP, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, \
- _______, RESET, _______, KC_MPRV, KC_MNXT, _______, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, \
+ _______, QK_BOOT, _______, KC_MPRV, KC_MNXT, _______, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, \
_______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, _______, RGB_SAD, RGB_HUD, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, \
_______, _______, _______, _______, _______, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/boardwalk/keymaps/nchristus/keymap.c b/keyboards/boardwalk/keymaps/nchristus/keymap.c
index 57b6736cbb..3f05e2bb1d 100644
--- a/keyboards/boardwalk/keymaps/nchristus/keymap.c
+++ b/keyboards/boardwalk/keymaps/nchristus/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _FL: Function Layer */
[3] = LAYOUT_ortho_hhkb(
- RESET, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, \
+ QK_BOOT, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
diff --git a/keyboards/boardwalk/keymaps/niclake/keymap.c b/keyboards/boardwalk/keymaps/niclake/keymap.c
index b6a986c0d0..986da6dd27 100644
--- a/keyboards/boardwalk/keymaps/niclake/keymap.c
+++ b/keyboards/boardwalk/keymaps/niclake/keymap.c
@@ -130,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* .-----------------------------------------------------------------------------------------------------------------------------.
* | | Static | Breath | Rainbw | Swirl | Gradnt | Twnkle | Test | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
- * | | On/Off | ModeUp | Hue Up | Sat Up | Val Up | | | | | | | RESET | |
+ * | | On/Off | ModeUp | Hue Up | Sat Up | Val Up | | | | | | | QK_BOOT | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
* | XXXXXX | MACWIN | | Hue Dn | Sat Dn | Val Dn | | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
@@ -141,7 +141,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJ] = LAYOUT_ortho_hhkb(
XXXXXXX, RGB_ON, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_G, RGB_M_TW, RGB_M_T, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX,
+ XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX,
XXXXXXX, MACWIN, XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, COLEMAK, QWERTY, 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/bobpad/config.h b/keyboards/bobpad/config.h
index c744a455e3..a0ae8612b8 100644
--- a/keyboards/bobpad/config.h
+++ b/keyboards/bobpad/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x416B
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Desiboards
-#define PRODUCT bobpad
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
diff --git a/keyboards/bobpad/info.json b/keyboards/bobpad/info.json
index 53ac20e9dc..cbb6b70268 100644
--- a/keyboards/bobpad/info.json
+++ b/keyboards/bobpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "bobPad",
+ "manufacturer": "Desiboards",
"url": "",
"maintainer": "Ananya Kirti",
+ "usb": {
+ "vid": "0x416B",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_2x3": {
"layout": [
diff --git a/keyboards/bobpad/readme.md b/keyboards/bobpad/readme.md
index 776ef58e47..75e6e03202 100644
--- a/keyboards/bobpad/readme.md
+++ b/keyboards/bobpad/readme.md
@@ -19,7 +19,7 @@ Flashing example for this keyboard:
## Bootloader
Enter the bootloader in 3 ways:
-* **Physical reset button**: Briefly short the pad connected to RESET and GND on the back
-* **Keycode in layout**: Press the key mapped to `RESET`, this is the recommened method
+* **Physical reset button**: Briefly short the pad connected to QK_BOOT and GND on the back
+* **Keycode in layout**: Press the key mapped to `QK_BOOT`, this is the recommened method
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/bolsa/damapad/config.h b/keyboards/bolsa/damapad/config.h
index b829a8a998..16c4006896 100644
--- a/keyboards/bolsa/damapad/config.h
+++ b/keyboards/bolsa/damapad/config.h
@@ -20,14 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6D64
-#define PRODUCT_ID 0x6470
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Bolsa Keyboard Supply
-#define PRODUCT Damapad
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 6
@@ -35,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { E6, F7, C7 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, B7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/bolsa/damapad/info.json b/keyboards/bolsa/damapad/info.json
index 28d0c4fc82..00e11799fe 100644
--- a/keyboards/bolsa/damapad/info.json
+++ b/keyboards/bolsa/damapad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Damapad",
+ "manufacturer": "Bolsa Keyboard Supply",
"url": "",
"maintainer": "matthewdias",
+ "usb": {
+ "vid": "0x6D64",
+ "pid": "0x6470",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_wkl": {
"layout": [{
diff --git a/keyboards/bop/config.h b/keyboards/bop/config.h
index fa646a582f..00bae0f655 100644
--- a/keyboards/bop/config.h
+++ b/keyboards/bop/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x666B // fk
-#define PRODUCT_ID 0x626F // bo
-#define DEVICE_VER 0x0001 // rev 1
-#define MANUFACTURER fruitykeeb
-#define PRODUCT bop
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 20
@@ -34,7 +27,6 @@
#define MATRIX_COL_PINS { D5, C5, B0, B1, B2, B3, B4, B5, B6, E7, E6, F0, F7, F6, F5, F4, F3, F2, F1, C6 }
// If your board is spamming the end column, change C7 to C6 in the line above and short those pins on the controller
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/bop/info.json b/keyboards/bop/info.json
index 398e9c32e9..874e797763 100644
--- a/keyboards/bop/info.json
+++ b/keyboards/bop/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "bop",
+ "manufacturer": "fruitykeeb",
"url": "https://github.com/blewis308/BOP-Keyboard",
"maintainer": "Fruit",
+ "usb": {
+ "vid": "0x666B",
+ "pid": "0x626F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/boston/config.h b/keyboards/boston/config.h
index 247616d3da..ebaa7ae640 100644
--- a/keyboards/boston/config.h
+++ b/keyboards/boston/config.h
@@ -16,12 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xAC12
-#define PRODUCT_ID 0x4176
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Pylon
-#define PRODUCT Boston
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 19
diff --git a/keyboards/boston/info.json b/keyboards/boston/info.json
index 82e4915176..f0d832afbf 100644
--- a/keyboards/boston/info.json
+++ b/keyboards/boston/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "boston",
+ "keyboard_name": "Boston",
+ "manufacturer": "Pylon",
"url": "https://github.com/bluepylons/Boston",
"maintainer": "bluepylons",
+ "usb": {
+ "vid": "0xAC12",
+ "pid": "0x4176",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/boston_meetup/2019/config.h b/keyboards/boston_meetup/2019/config.h
index 99ce9e85db..7429845958 100644
--- a/keyboards/boston_meetup/2019/config.h
+++ b/keyboards/boston_meetup/2019/config.h
@@ -1,8 +1,5 @@
#pragma once
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x2019
-
#undef MATRIX_ROWS
#undef MATRIX_COLS
/* key matrix size */
diff --git a/keyboards/boston_meetup/2019/info.json b/keyboards/boston_meetup/2019/info.json
index 53beef5a84..5f8f8c95f7 100644
--- a/keyboards/boston_meetup/2019/info.json
+++ b/keyboards/boston_meetup/2019/info.json
@@ -1,9 +1,5 @@
{
- "keyboard_name": "Boston Meetup 2019",
- "url": "",
- "maintainer": "qmk",
- "layouts": {
- "LAYOUT": {
- "layout": [{"label":"K00", "x":0, "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":"K20", "x":0, "y":2}, {"label":"K21", "x":1, "y":2}, {"label":"K22", "x":2, "y":2}, {"label":"K23", "x":3, "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}] }
- }
+ "usb": {
+ "device_version": "20.1.9"
+ }
}
diff --git a/keyboards/boston_meetup/config.h b/keyboards/boston_meetup/config.h
index 60e490435f..8e9919c23a 100644
--- a/keyboards/boston_meetup/config.h
+++ b/keyboards/boston_meetup/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFB30
-#define PRODUCT_ID 0x26BE
-#define MANUFACTURER ishtob
-#define PRODUCT Boston Meetup Board
-
//#define AUDIO_VOICES
//#define BACKLIGHT_PIN B7
diff --git a/keyboards/boston_meetup/info.json b/keyboards/boston_meetup/info.json
new file mode 100644
index 0000000000..2c25d4ff06
--- /dev/null
+++ b/keyboards/boston_meetup/info.json
@@ -0,0 +1,14 @@
+{
+ "keyboard_name": "Boston Meetup Board",
+ "manufacturer": "ishtob",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0xFB30",
+ "pid": "0x26BE"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"K00", "x":0, "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":"K20", "x":0, "y":2}, {"label":"K21", "x":1, "y":2}, {"label":"K22", "x":2, "y":2}, {"label":"K23", "x":3, "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}] }
+ }
+}
diff --git a/keyboards/botanicalkeyboards/fm2u/config.h b/keyboards/botanicalkeyboards/fm2u/config.h
index 87f865b63a..4664c79d3d 100644
--- a/keyboards/botanicalkeyboards/fm2u/config.h
+++ b/keyboards/botanicalkeyboards/fm2u/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6969
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER botanicalkeyboards
-#define PRODUCT fm2u
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 1
@@ -45,7 +38,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/botanicalkeyboards/fm2u/info.json b/keyboards/botanicalkeyboards/fm2u/info.json
index 5fceadb1fb..d6b521f24d 100644
--- a/keyboards/botanicalkeyboards/fm2u/info.json
+++ b/keyboards/botanicalkeyboards/fm2u/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Botanical Keyboards FM2U",
+ "keyboard_name": "FM2U",
+ "manufacturer": "Botanical Keyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x6969",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_1u": {
"layout": [
diff --git a/keyboards/box75/config.h b/keyboards/box75/config.h
index b6bcc31b0a..53e717fa86 100644
--- a/keyboards/box75/config.h
+++ b/keyboards/box75/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7668 // LD for LinDesign
-#define PRODUCT_ID 0xB075 // For BOX75
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Lin Design
-#define PRODUCT BOX75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
diff --git a/keyboards/box75/info.json b/keyboards/box75/info.json
index 9fe35289cf..af7e75360b 100644
--- a/keyboards/box75/info.json
+++ b/keyboards/box75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BOX75",
+ "manufacturer": "Lin Design",
"url": "",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x7668",
+ "pid": "0xB075",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/bpiphany/four_banger/config.h b/keyboards/bpiphany/four_banger/config.h
index 7ad7a5c369..5408ee3350 100644
--- a/keyboards/bpiphany/four_banger/config.h
+++ b/keyboards/bpiphany/four_banger/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x2004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 1up Keyboards
-#define PRODUCT Four Banger
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 2
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B2, B6 }
#define MATRIX_COL_PINS { B5, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/bpiphany/four_banger/info.json b/keyboards/bpiphany/four_banger/info.json
index 48fc16cebe..5750b19a6b 100644
--- a/keyboards/bpiphany/four_banger/info.json
+++ b/keyboards/bpiphany/four_banger/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Four Banger",
+ "manufacturer": "1up Keyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x2004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_2x2": {
"layout": [
diff --git a/keyboards/bpiphany/frosty_flake/config.h b/keyboards/bpiphany/frosty_flake/config.h
index 1ca00f231d..039152ac49 100644
--- a/keyboards/bpiphany/frosty_flake/config.h
+++ b/keyboards/bpiphany/frosty_flake/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Bathroom Epiphanies
-#define PRODUCT frosty_flake
-
/*
* Frosty Flake Rev. 20140521 made by Bathroom Ephiphanies
* Ported from the Bathroom Epiphanies TMK Firmware:
@@ -45,7 +38,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_COL_PINS { B0, B3, B2, B1, B6, B4, B5, C7 }
#define MATRIX_ROW_PINS { NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-#define UNUSED_PINS { C0, C1, C2, C3, C4, D2, D7 }
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/bpiphany/frosty_flake/info.json b/keyboards/bpiphany/frosty_flake/info.json
index 9d5d6aace0..266c45c394 100644
--- a/keyboards/bpiphany/frosty_flake/info.json
+++ b/keyboards/bpiphany/frosty_flake/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Frosty Flake",
+ "manufacturer": "Bathroom Epiphanies",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/keymap.c b/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/keymap.c
index 20ce6bd15f..9bb38d8b88 100644
--- a/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/keymap.c
+++ b/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/keymap.c
@@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_LOWER] = LAYOUT_tkl(\
- RESET, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, _______, KC_MUTE, KC_VOLD, KC_VOLU, QWERTY, COLEMAK,DVORAK, \
+ QK_BOOT, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, _______, KC_MUTE, KC_VOLD, KC_VOLU, QWERTY, COLEMAK,DVORAK, \
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LBRC, KC_RBRC, KC_UNDS, KC_PLUS, KC_BSPC, _______,_______,_______, \
KC_TAB, KC_PGUP, KC_HOME, KC_UP, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_PIPE, _______,_______,_______, \
KC_CAPS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, \
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/nikchi/config.h b/keyboards/bpiphany/frosty_flake/keymaps/nikchi/config.h
index 4bc6d2c3c0..e45034f9a8 100644
--- a/keyboards/bpiphany/frosty_flake/keymaps/nikchi/config.h
+++ b/keyboards/bpiphany/frosty_flake/keymaps/nikchi/config.h
@@ -2,6 +2,7 @@
// place overrides here
#define TAPPING_TERM 200
+#define TAPPING_TERM_PER_KEY
#define LEADER_TIMEOUT 800
#define DISABLE_SPACE_CADET_ROLLOVER
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/nikchi/keymap.c b/keyboards/bpiphany/frosty_flake/keymaps/nikchi/keymap.c
index dd2098d945..6db177c183 100644
--- a/keyboards/bpiphany/frosty_flake/keymaps/nikchi/keymap.c
+++ b/keyboards/bpiphany/frosty_flake/keymaps/nikchi/keymap.c
@@ -52,17 +52,33 @@ qk_tap_dance_action_t tap_dance_actions[] = {
// Tap once for CTRL, twice for Caps Lock
[TD_CTCPS] = ACTION_TAP_DANCE_DOUBLE(KC_LCTL, KC_CAPS),
[COPA] = ACTION_TAP_DANCE_DOUBLE(LCTL(KC_C), LCTL(KC_V)),
- [EMOJIS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleEmojis, NULL, NULL, 800),
- [ANIMAL] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleAnimals, NULL, NULL, 800),
- //[SYMBOLS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleSymbols, NULL, NULL, 800),
- [FOODS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleFoods, NULL, NULL, 800),
- [ETC] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleEtc, NULL, NULL, 800),
- //[VEHICLES] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleVehicles, NULL, NULL, 800),
- //[SUPPLEMENT] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleSupplement, NULL, NULL, 800),
- [ALLS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleAll, NULL, NULL, 800)
+ [EMOJIS] = ACTION_TAP_DANCE_FN_ADVANCED(cycleEmojis, NULL, NULL),
+ [ANIMAL] = ACTION_TAP_DANCE_FN_ADVANCED(cycleAnimals, NULL, NULL),
+ //[SYMBOLS] = ACTION_TAP_DANCE_FN_ADVANCED(cycleSymbols, NULL, NULL),
+ [FOODS] = ACTION_TAP_DANCE_FN_ADVANCED(cycleFoods, NULL, NULL),
+ [ETC] = ACTION_TAP_DANCE_FN_ADVANCED(cycleEtc, NULL, NULL),
+ //[VEHICLES] = ACTION_TAP_DANCE_FN_ADVANCED(cycleVehicles, NULL, NULL),
+ //[SUPPLEMENT] = ACTION_TAP_DANCE_FN_ADVANCED(cycleSupplement, NULL, NULL),
+ [ALLS] = ACTION_TAP_DANCE_FN_ADVANCED(cycleAll, NULL, NULL)
// Other declarations would go here, separated by commas, if you have them
};
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case TD(EMOJIS):
+ case TD(ANIMAL):
+ //case TD(SYMBOLS):
+ case TD(FOODS):
+ case TD(ETC):
+ //case TD(VEHICLES):
+ //case TD(SUPPLEMENT):
+ case TD(ALLS):
+ return 800;
+ default:
+ return TAPPING_TERM;
+ }
+}
+
// macros
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
switch(id) {
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/nikchi/variableTapDance.md b/keyboards/bpiphany/frosty_flake/keymaps/nikchi/variableTapDance.md
index b2e5041393..c3fce50f2a 100644
--- a/keyboards/bpiphany/frosty_flake/keymaps/nikchi/variableTapDance.md
+++ b/keyboards/bpiphany/frosty_flake/keymaps/nikchi/variableTapDance.md
@@ -3,7 +3,4 @@ Tap Dance is constrained normally by `TAPPING_TERM` defined in your keyboard's c
-- `ACTION_TAP_DANCE_FN_ADVANCED_TIME(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset, tap_specific_tapping_term)` : This works the same as `ACTION_TAP_DANCE_FN_ADVANCED` just with the extra `tap_specific_tapping_term` arguement at the end. This way you can set a specific tap dance to have a longer or shorter tap in between your taps, giving you more, or less, time in between each tap.
-
-
-`tap_specific_tapping_term` should be the same type and range of values that one would put into the `TAPPING_TERM` definition in the config.h file.
+- Implementing `uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record)`, you can set a specific tap dance to have a longer or shorter tap in between your taps, giving you more, or less, time in between each tap. The return value should be the same type and range of values that one would put into the `TAPPING_TERM` definition in the config.h file.
diff --git a/keyboards/bpiphany/ghost_squid/config.h b/keyboards/bpiphany/ghost_squid/config.h
index bb8535b177..a57767cae9 100644
--- a/keyboards/bpiphany/ghost_squid/config.h
+++ b/keyboards/bpiphany/ghost_squid/config.h
@@ -19,13 +19,6 @@ 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 0x6050
-#define DEVICE_VER 0x0104
-#define MANUFACTURER Bathroom Epiphanies
-#define PRODUCT ghost_squid
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 18
diff --git a/keyboards/bpiphany/ghost_squid/info.json b/keyboards/bpiphany/ghost_squid/info.json
index 698e3c21de..3617c7efaf 100644
--- a/keyboards/bpiphany/ghost_squid/info.json
+++ b/keyboards/bpiphany/ghost_squid/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Bathroom Epiphanies Ghost Squid",
+ "keyboard_name": "Ghost Squid",
+ "manufacturer": "Bathroom Epiphanies",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6050",
+ "device_version": "1.0.4"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/bpiphany/ghost_squid/readme.md b/keyboards/bpiphany/ghost_squid/readme.md
index ab39e0f725..2b2e838cbc 100644
--- a/keyboards/bpiphany/ghost_squid/readme.md
+++ b/keyboards/bpiphany/ghost_squid/readme.md
@@ -12,7 +12,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/bpiphany/hid_liber/config.h b/keyboards/bpiphany/hid_liber/config.h
index 95e617f562..af3936dcdb 100755
--- a/keyboards/bpiphany/hid_liber/config.h
+++ b/keyboards/bpiphany/hid_liber/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xB919
-#define DEVICE_VER 0x0001
-#define MANUFACTURER "bpiphany"
-#define PRODUCT "HIDLiberation"
-
/* key matrix size */
#define MATRIX_ROWS 18
#define MATRIX_COLS 8
diff --git a/keyboards/bpiphany/hid_liber/info.json b/keyboards/bpiphany/hid_liber/info.json
index 9399b276c5..0caa64e525 100644
--- a/keyboards/bpiphany/hid_liber/info.json
+++ b/keyboards/bpiphany/hid_liber/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "bpiphany HIDLiberation",
+ "keyboard_name": "HIDLiberation",
+ "manufacturer": "bpiphany",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xB919",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/bpiphany/kitten_paw/config.h b/keyboards/bpiphany/kitten_paw/config.h
index b357289e69..1d2c594cfb 100644
--- a/keyboards/bpiphany/kitten_paw/config.h
+++ b/keyboards/bpiphany/kitten_paw/config.h
@@ -19,13 +19,6 @@ 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 0x6050
-#define DEVICE_VER 0x0104
-#define MANUFACTURER Costar
-#define PRODUCT Majestouch
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 18
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
//#define MATRIX_ROW_PINS { D0, D5 }
//#define MATRIX_COL_PINS { F1, F0, B0 }
-//#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/bpiphany/kitten_paw/info.json b/keyboards/bpiphany/kitten_paw/info.json
index f9c517ca48..a5d7fc54e7 100644
--- a/keyboards/bpiphany/kitten_paw/info.json
+++ b/keyboards/bpiphany/kitten_paw/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Kitten Paw",
+ "manufacturer": "bpiphany",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6050",
+ "device_version": "1.0.4"
+ },
"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.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":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.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":"|", "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":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.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":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"KC_NUBS", "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":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"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}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}]
diff --git a/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c b/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c
index cc4d0bca63..4553d4e0e3 100644
--- a/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c
+++ b/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c
@@ -89,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void matrix_scan_user(void) {
uint8_t layer;
- layer = biton32(layer_state);
+ layer = get_highest_layer(layer_state);
if (current_layer_global != layer) {
current_layer_global = layer;
@@ -132,7 +132,7 @@ void tap_helper(keyrecord_t *record, uint16_t orig_mod, uint16_t macro_mod, uint
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
uint8_t layer;
- layer = biton32(layer_state);
+ layer = get_highest_layer(layer_state);
if (layer == PROG2) {
if (keycode >= KC_A && keycode <= KC_EXSEL && \
!( // do not send LSFT + these keycodes, they are needed for emulating the US layout
diff --git a/keyboards/bpiphany/pegasushoof/2013/config.h b/keyboards/bpiphany/pegasushoof/2013/config.h
index 2573cecfca..33762f020d 100644
--- a/keyboards/bpiphany/pegasushoof/2013/config.h
+++ b/keyboards/bpiphany/pegasushoof/2013/config.h
@@ -17,14 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6050
-#define DEVICE_VER 0x0104
-#define MANUFACTURER Filco
-#define PRODUCT Majestouch TKL \\w The Pegasus Hoof 2013
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 18
diff --git a/keyboards/bpiphany/pegasushoof/2013/info.json b/keyboards/bpiphany/pegasushoof/2013/info.json
new file mode 100644
index 0000000000..c96b6ba06c
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/2013/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Majestouch TKL \\\\w The Pegasus Hoof 2013"
+}
diff --git a/keyboards/bpiphany/pegasushoof/2015/config.h b/keyboards/bpiphany/pegasushoof/2015/config.h
index 479175c477..d1d52d3098 100644
--- a/keyboards/bpiphany/pegasushoof/2015/config.h
+++ b/keyboards/bpiphany/pegasushoof/2015/config.h
@@ -17,14 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6050
-#define DEVICE_VER 0x0104
-#define MANUFACTURER Filco
-#define PRODUCT Majestouch TKL \\w The Pegasus Hoof 2015
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 18
diff --git a/keyboards/bpiphany/pegasushoof/2015/info.json b/keyboards/bpiphany/pegasushoof/2015/info.json
new file mode 100644
index 0000000000..8af38d9501
--- /dev/null
+++ b/keyboards/bpiphany/pegasushoof/2015/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Majestouch TKL \\\\w The Pegasus Hoof 2015"
+}
diff --git a/keyboards/bpiphany/pegasushoof/info.json b/keyboards/bpiphany/pegasushoof/info.json
index fb4d2479a5..2869e9f763 100644
--- a/keyboards/bpiphany/pegasushoof/info.json
+++ b/keyboards/bpiphany/pegasushoof/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "Pegasus Hoof",
+ "manufacturer": "Filco",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6050",
+ "device_version": "1.0.4"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c
index 7884462021..68e412ceb9 100644
--- a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c
+++ b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c
@@ -64,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_MUTE,_______,KC_VOLD, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_MPLY, \
- _______,_______,_______, _______, _______,_______,RESET ,_______, KC_MPRV,KC_MSTP,KC_MNXT),
+ _______,_______,_______, _______, _______,_______,QK_BOOT,_______, KC_MPRV,KC_MSTP,KC_MNXT),
/* Layer 3: Programming layer */
[KM_HAXHAX] = LAYOUT( \
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
@@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void matrix_scan_user(void)
{
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case KM_BLOWRAK:
ph_caps_led_on();
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/citadel/keymap.c b/keyboards/bpiphany/pegasushoof/keymaps/citadel/keymap.c
index 5036bcb3f5..a9b9b6e8b9 100644
--- a/keyboards/bpiphany/pegasushoof/keymaps/citadel/keymap.c
+++ b/keyboards/bpiphany/pegasushoof/keymaps/citadel/keymap.c
@@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[RES] = LAYOUT( \
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
- _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
+ _______,_______,_______,_______,QK_BOOT, _______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,/*NUHS*/_______, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______, \
_______,_______,_______, _______, _______,_______,_______,_______, _______,_______,_______),
diff --git a/keyboards/bpiphany/sixshooter/config.h b/keyboards/bpiphany/sixshooter/config.h
index 74acfac9b0..9c713d92dd 100644
--- a/keyboards/bpiphany/sixshooter/config.h
+++ b/keyboards/bpiphany/sixshooter/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6666
-#define DEVICE_VER 0x0001
-#define MANUFACTURER bpiphany
-#define PRODUCT sixshooter
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
@@ -18,7 +11,6 @@
{ F7, F6, F1 }, \
{ F5, F4, F0 } \
}
-#define UNUSED_PINS
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/bpiphany/sixshooter/info.json b/keyboards/bpiphany/sixshooter/info.json
index f45419746a..016568067e 100644
--- a/keyboards/bpiphany/sixshooter/info.json
+++ b/keyboards/bpiphany/sixshooter/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "SixShooter",
+ "manufacturer": "bpiphany",
"maintainer": "qmk",
"url": "https://geekhack.org/index.php?topic=70033.0",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6666",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, {"label":"K02", "x":2, "y":0}, {"label":"K03", "x":0, "y":1}, {"label":"K04", "x":1, "y":1}, {"label":"K05", "x":2, "y":1}]
diff --git a/keyboards/bpiphany/tiger_lily/config.h b/keyboards/bpiphany/tiger_lily/config.h
index 1831e3e4d4..9aa010c85c 100644
--- a/keyboards/bpiphany/tiger_lily/config.h
+++ b/keyboards/bpiphany/tiger_lily/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4245 //BE
-#define PRODUCT_ID 0x544C //TL
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Bathroom Epiphanies
-#define PRODUCT tiger_lily
-
/*
* Frosty Flake Rev. 20140521 made by Bathroom Ephiphanies
* Ported from the Bathroom Epiphanies TMK Firmware:
@@ -45,7 +38,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C2, B3, B4, B2, B1, C7, B6, B5 }
#define MATRIX_COL_PINS { NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-#define UNUSED_PINS { B0, C4, D3 }
#define LED_NUM_LOCK_PIN C5
#define LED_CAPS_LOCK_PIN C6
diff --git a/keyboards/bpiphany/tiger_lily/info.json b/keyboards/bpiphany/tiger_lily/info.json
index aacd06dcb4..2c03cb0b7f 100644
--- a/keyboards/bpiphany/tiger_lily/info.json
+++ b/keyboards/bpiphany/tiger_lily/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "tiger_lily",
+ "manufacturer": "Bathroom Epiphanies",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4245",
+ "pid": "0x544C",
+ "device_version": "0.0.1"
+ },
"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.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":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.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":"|", "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":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.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":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.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":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"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}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}]
diff --git a/keyboards/bpiphany/unloved_bastard/config.h b/keyboards/bpiphany/unloved_bastard/config.h
index 1f1cf72a18..9b00e97104 100644
--- a/keyboards/bpiphany/unloved_bastard/config.h
+++ b/keyboards/bpiphany/unloved_bastard/config.h
@@ -19,13 +19,6 @@ 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 0x1337
-#define DEVICE_VER 0x0001
-#define MANUFACTURER BathroomEpiphanies
-#define PRODUCT Unloved Bastard
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 18
diff --git a/keyboards/bpiphany/unloved_bastard/info.json b/keyboards/bpiphany/unloved_bastard/info.json
index 0fe42d3197..33fe46f209 100644
--- a/keyboards/bpiphany/unloved_bastard/info.json
+++ b/keyboards/bpiphany/unloved_bastard/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "unloved_bastard",
+ "keyboard_name": "Unloved Bastard",
+ "manufacturer": "Bathroom Epiphanies",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1337",
+ "device_version": "0.0.1"
+ },
"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}, {"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":"\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/bt66tech/bt66tech60/config.h b/keyboards/bt66tech/bt66tech60/config.h
index 18a7a2d85e..62b9f34a66 100644
--- a/keyboards/bt66tech/bt66tech60/config.h
+++ b/keyboards/bt66tech/bt66tech60/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4254
-#define PRODUCT_ID 0x7070
-#define DEVICE_VER 0x0001
-#define MANUFACTURER bt66tech
-#define PRODUCT bt66tech 60%
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/bt66tech/bt66tech60/info.json b/keyboards/bt66tech/bt66tech60/info.json
index c4011c3439..0f65b6f57e 100644
--- a/keyboards/bt66tech/bt66tech60/info.json
+++ b/keyboards/bt66tech/bt66tech60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "bt66tech60",
+ "keyboard_name": "bt66tech 60%",
+ "manufacturer": "bt66tech",
"url": "",
"maintainer": "bt66tech",
+ "usb": {
+ "vid": "0x4254",
+ "pid": "0x7070",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/bthlabs/geekpad/config.h b/keyboards/bthlabs/geekpad/config.h
index 5dad96a7b4..5a29c90eab 100644
--- a/keyboards/bthlabs/geekpad/config.h
+++ b/keyboards/bthlabs/geekpad/config.h
@@ -19,13 +19,6 @@ 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 0x4257
-#define DEVICE_VER 0x0001
-#define MANUFACTURER BTHLabs
-#define PRODUCT GeekPad
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6 }
#define MATRIX_COL_PINS { D4, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/bthlabs/geekpad/info.json b/keyboards/bthlabs/geekpad/info.json
index 52ecd7a693..270ce3a567 100644
--- a/keyboards/bthlabs/geekpad/info.json
+++ b/keyboards/bthlabs/geekpad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "BTHLabs GeekPad",
+ "keyboard_name": "GeekPad",
+ "manufacturer": "BTHLabs",
"url": "https://git.bthlabs.pl/tomekwojcik/geekpad",
"maintainer": "Tomek Wójcik <contact@bthlabs.pl>",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x4257",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/buildakb/potato65/config.h b/keyboards/buildakb/potato65/config.h
index 4a0a17ace0..6e363d42ad 100644
--- a/keyboards/buildakb/potato65/config.h
+++ b/keyboards/buildakb/potato65/config.h
@@ -19,13 +19,6 @@ 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 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Maelkk
-#define PRODUCT Potato 65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/buildakb/potato65/info.json b/keyboards/buildakb/potato65/info.json
index a7713ef1bd..54b560b9a5 100644
--- a/keyboards/buildakb/potato65/info.json
+++ b/keyboards/buildakb/potato65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Potato 65",
+ "manufacturer": "Maelkk",
"url": "https://github.com/Aeonstrife/potato65",
"maintainer": "Maelkk",
+ "usb": {
+ "vid": "0x4A56",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_split_bs": {
"layout": [
diff --git a/keyboards/buildakb/potato65hs/config.h b/keyboards/buildakb/potato65hs/config.h
index cf565d8176..e102000fb5 100644
--- a/keyboards/buildakb/potato65hs/config.h
+++ b/keyboards/buildakb/potato65hs/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4A56
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Maelkk
-#define PRODUCT Potato 65 Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { F5, F4, F6, F0, D2 }
#define MATRIX_COL_PINS { D3, D4, D6, D7, B4, B5, B6, F1, B0, B1, B2, B3, B7, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/buildakb/potato65hs/info.json b/keyboards/buildakb/potato65hs/info.json
index 52ea416fa2..0ef7e9e01a 100644
--- a/keyboards/buildakb/potato65hs/info.json
+++ b/keyboards/buildakb/potato65hs/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Potato 65 Hotswap",
+ "manufacturer": "Maelkk",
"url": "https://github.com/Aeonstrife/potato65hotswap",
"maintainer": "Maelkk",
+ "usb": {
+ "vid": "0x4A56",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/buildakb/potato65s/config.h b/keyboards/buildakb/potato65s/config.h
index c1374558c9..6a19a5aceb 100644
--- a/keyboards/buildakb/potato65s/config.h
+++ b/keyboards/buildakb/potato65s/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4A56
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Maelkk
-#define PRODUCT Potato 65 Solderable
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { F5, F4, F6, F0, D2 }
#define MATRIX_COL_PINS { D3, D4, D6, D7, B4, B5, B6, F1, B0, B1, B2, B3, B7, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/buildakb/potato65s/info.json b/keyboards/buildakb/potato65s/info.json
index 257ed6022d..1920861946 100644
--- a/keyboards/buildakb/potato65s/info.json
+++ b/keyboards/buildakb/potato65s/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Potato 65 Solderable",
+ "manufacturer": "Maelkk",
"url": "https://github.com/Aeonstrife/potato65solderable",
"maintainer": "Maelkk",
+ "usb": {
+ "vid": "0x4A56",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/buzzard/info.json b/keyboards/buzzard/info.json
deleted file mode 100644
index a958ffdc94..0000000000
--- a/keyboards/buzzard/info.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "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/rev1/config.h b/keyboards/buzzard/rev1/config.h
index 2a7ea22ec1..66c1a9a42e 100644
--- a/keyboards/buzzard/rev1/config.h
+++ b/keyboards/buzzard/rev1/config.h
@@ -3,13 +3,6 @@
#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
@@ -20,7 +13,6 @@
{ F4, F5, F6, F7 }
#define MATRIX_COL_PINS \
{ B1, B3, B2, B6, B5, B4}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/buzzard/rev1/info.json b/keyboards/buzzard/rev1/info.json
new file mode 100644
index 0000000000..6ee2226758
--- /dev/null
+++ b/keyboards/buzzard/rev1/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Buzzard",
+ "manufacturer": "crehmann",
+ "url": "https://github.com/crehmann/buzzard",
+ "maintainer": "crehmann",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xB077",
+ "device_version": "0.0.1"
+ },
+ "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/cablecardesigns/cypher/rev6/config.h b/keyboards/cablecardesigns/cypher/rev6/config.h
index 51d86d721e..2ec01133fc 100644
--- a/keyboards/cablecardesigns/cypher/rev6/config.h
+++ b/keyboards/cablecardesigns/cypher/rev6/config.h
@@ -4,20 +4,12 @@
#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
diff --git a/keyboards/cablecardesigns/cypher/rev6/info.json b/keyboards/cablecardesigns/cypher/rev6/info.json
index 385ee8810a..86fb72bb24 100644
--- a/keyboards/cablecardesigns/cypher/rev6/info.json
+++ b/keyboards/cablecardesigns/cypher/rev6/info.json
@@ -1,5 +1,11 @@
{
"keyboard_name": "Cypher Rev6",
+ "manufacturer": "cablecardesigns",
+ "usb": {
+ "vid": "0x41FF",
+ "pid": "0xAA99",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/cablecardesigns/cypher/rev6/readme.md b/keyboards/cablecardesigns/cypher/rev6/readme.md
index 13016e86a1..65e87175cf 100644
--- a/keyboards/cablecardesigns/cypher/rev6/readme.md
+++ b/keyboards/cablecardesigns/cypher/rev6/readme.md
@@ -22,4 +22,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/caffeinated/serpent65/config.h b/keyboards/caffeinated/serpent65/config.h
index 358e7d0f4c..35f2a3ae5f 100644
--- a/keyboards/caffeinated/serpent65/config.h
+++ b/keyboards/caffeinated/serpent65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4353 // "CS" = Caffeinated Studios
-#define PRODUCT_ID 0x6501
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Caffeinated Studios
-#define PRODUCT Serpent65
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -48,7 +41,6 @@ EncA (B6) because it is not used in the default PCB
All Extra pins (A8, B15, B14, B13, B3, B5, B8, B9) , for the same reason;
B0, which is unconnected on the PCB
*/
-//#define UNUSED_PINS { B0, B6, B13, B14, B15, B8, B9, B5, B3 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/caffeinated/serpent65/info.json b/keyboards/caffeinated/serpent65/info.json
index 6e83b4b707..1808869438 100644
--- a/keyboards/caffeinated/serpent65/info.json
+++ b/keyboards/caffeinated/serpent65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Serpent65",
- "url": "https",
+ "manufacturer": "Caffeinated Studios",
+ "url": "",
"maintainer": "jrfhoutx",
+ "usb": {
+ "vid": "0x4353",
+ "pid": "0x6501",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/canary/canary60rgb/info.json b/keyboards/canary/canary60rgb/info.json
index e8cc4c0fe5..4dd97319b3 100644
--- a/keyboards/canary/canary60rgb/info.json
+++ b/keyboards/canary/canary60rgb/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "CANARY60RGB",
+ "manufacturer": "CANARY",
"url": "",
"maintainer": "tuananhnguyen204",
+ "usb": {
+ "vid": "0x4341",
+ "pid": "0x0621",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/canary/canary60rgb/v1/config.h b/keyboards/canary/canary60rgb/v1/config.h
index f02b29c1b9..8d3150a5d9 100644
--- a/keyboards/canary/canary60rgb/v1/config.h
+++ b/keyboards/canary/canary60rgb/v1/config.h
@@ -15,13 +15,6 @@
*/
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4341
-#define PRODUCT_ID 0x0621
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CANARY
-#define PRODUCT CANARY60RGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -38,7 +31,6 @@
*/
#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
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/cannonkeys/adelie/config.h b/keyboards/cannonkeys/adelie/config.h
index 16f308ad2c..e07fd65bbb 100644
--- a/keyboards/cannonkeys/adelie/config.h
+++ b/keyboards/cannonkeys/adelie/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/cannonkeys/adelie/info.json b/keyboards/cannonkeys/adelie/info.json
index 5367fdbff4..d6f0abc952 100644
--- a/keyboards/cannonkeys/adelie/info.json
+++ b/keyboards/cannonkeys/adelie/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Adelie",
+ "manufacturer": "Abec13",
"url": "",
"maintainer": "Abec13",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x0005",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/cannonkeys/aella/config.h b/keyboards/cannonkeys/aella/config.h
index dd8a6376d5..6cd08c9804 100644
--- a/keyboards/cannonkeys/aella/config.h
+++ b/keyboards/cannonkeys/aella/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x0007
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Aella
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
diff --git a/keyboards/cannonkeys/aella/info.json b/keyboards/cannonkeys/aella/info.json
index 806905428d..edce8f88a6 100644
--- a/keyboards/cannonkeys/aella/info.json
+++ b/keyboards/cannonkeys/aella/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Aella",
+ "manufacturer": "CannonKeys",
"url": "https://www.alchemistkeyboards.com/aella",
"maintainer": "Alchemist Keyboards",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
"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, "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, "w":1.5}, {"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}, {"x":13.5, "y":2, "w":1.5}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.75}, {"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}, {"x":13.75, "y":3, "w":1.25}, {"x":15, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "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}, {"x":12.25, "y":4, "w":1.75}, {"x":14, "y":4}, {"x":15, "y":4}, {"x":0, "y":5, "w":1.5}, {"x":2.25, "y":5, "w":1.25}, {"x":3.5, "y":5, "w":6.25}, {"x":9.75, "y":5, "w":1.25}, {"x":11, "y":5, "w":1.25}, {"x":13, "y":5}, {"x":14, "y":5}, {"x":15, "y":5}]
diff --git a/keyboards/cannonkeys/an_c/config.h b/keyboards/cannonkeys/an_c/config.h
index 09e2382595..43821c07f9 100644
--- a/keyboards/cannonkeys/an_c/config.h
+++ b/keyboards/cannonkeys/an_c/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0xA00C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT AN-C
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/cannonkeys/an_c/info.json b/keyboards/cannonkeys/an_c/info.json
index 12d20010b3..c18cde141f 100644
--- a/keyboards/cannonkeys/an_c/info.json
+++ b/keyboards/cannonkeys/an_c/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "AN-C",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0xA00C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"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, "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}, {"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":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/cannonkeys/atlas/atlas.h b/keyboards/cannonkeys/atlas/atlas.h
index b2f64dab73..2a6bf7d88a 100644
--- a/keyboards/cannonkeys/atlas/atlas.h
+++ b/keyboards/cannonkeys/atlas/atlas.h
@@ -37,12 +37,12 @@
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 \
+ k40, k41, k42, k43, k45, 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, KC_NO, k48, k49, k4a, k4b }, \
+ { k40, k41, k42, k43, KC_NO, k45, KC_NO, k47, k48, k49, k4a, k4b }, \
}
diff --git a/keyboards/cannonkeys/atlas/config.h b/keyboards/cannonkeys/atlas/config.h
index 40984c3f64..e072e183a1 100644
--- a/keyboards/cannonkeys/atlas/config.h
+++ b/keyboards/cannonkeys/atlas/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0xA7A5
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Atlas
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
diff --git a/keyboards/cannonkeys/atlas/info.json b/keyboards/cannonkeys/atlas/info.json
index 123b0cd118..70d8af6230 100644
--- a/keyboards/cannonkeys/atlas/info.json
+++ b/keyboards/cannonkeys/atlas/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Atlas",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0xA7A5",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x12": {
"layout": [
diff --git a/keyboards/cannonkeys/atlas_alps/config.h b/keyboards/cannonkeys/atlas_alps/config.h
index a92ba31632..d88edb945c 100644
--- a/keyboards/cannonkeys/atlas_alps/config.h
+++ b/keyboards/cannonkeys/atlas_alps/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0xA7A5
-#define DEVICE_VER 0x0010
-#define MANUFACTURER CannonKeys
-#define PRODUCT Atlas
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -33,7 +26,6 @@
#define MATRIX_ROW_PINS { B5, B4, D1, D7, D6 }
#define MATRIX_COL_PINS { B6, C6, D2, E6, C7, B3, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/cannonkeys/atlas_alps/info.json b/keyboards/cannonkeys/atlas_alps/info.json
index 278b48b831..889644a6ab 100644
--- a/keyboards/cannonkeys/atlas_alps/info.json
+++ b/keyboards/cannonkeys/atlas_alps/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Atlas_Alps",
+ "keyboard_name": "Atlas",
+ "manufacturer": "CannonKeys",
"url": "https://geekhack.org/index.php?topic=106683.msg2975081#msg2975081",
"maintainer": "Nasp",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0xA7A5",
+ "device_version": "0.1.0"
+ },
"layouts": {
"LAYOUT_ortho_5x12": {
"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":"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":"Caps Lock", "x":0, "y":4}, {"label":"Ctrl", "x":1, "y":4}, {"label":"Alt", "x":2, "y":4}, {"label":"Super", "x":3, "y":4}, {"label":"&dArr;", "x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4}, {"label":"&uArr;", "x":7, "y":4}, {"label":"&larr;", "x":8, "y":4}, {"label":"&darr;", "x":9, "y":4}, {"label":"&uarr;", "x":10, "y":4}, {"label":"&rarr;", "x":11, "y":4}]
diff --git a/keyboards/cannonkeys/balance/config.h b/keyboards/cannonkeys/balance/config.h
index a16e9ea072..618dd57621 100644
--- a/keyboards/cannonkeys/balance/config.h
+++ b/keyboards/cannonkeys/balance/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0xBA77
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Balance
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 20
diff --git a/keyboards/cannonkeys/balance/info.json b/keyboards/cannonkeys/balance/info.json
index 9aa79c51c6..3587ab7ea5 100644
--- a/keyboards/cannonkeys/balance/info.json
+++ b/keyboards/cannonkeys/balance/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Balance",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0xBA77",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/cannonkeys/brutalv2_65/config.h b/keyboards/cannonkeys/brutalv2_65/config.h
index ab65acdf3d..543ac8d550 100644
--- a/keyboards/cannonkeys/brutalv2_65/config.h
+++ b/keyboards/cannonkeys/brutalv2_65/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x0008
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT BrutalV2_65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/cannonkeys/brutalv2_65/info.json b/keyboards/cannonkeys/brutalv2_65/info.json
index e268037a44..7edbbdf05c 100644
--- a/keyboards/cannonkeys/brutalv2_65/info.json
+++ b/keyboards/cannonkeys/brutalv2_65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Brutal v2 65",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x0008",
+ "device_version": "0.0.1"
+ },
"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":"Bksp", "x":13, "y":0}, {"label":"Del", "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":"|", "x":13.5, "y":1, "w":1.5}, {"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":"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":"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":"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/cannonkeys/brutalv2_65/keymaps/default/keymap.c b/keyboards/cannonkeys/brutalv2_65/keymaps/default/keymap.c
index 36d4dd34d7..0778109f0c 100644
--- a/keyboards/cannonkeys/brutalv2_65/keymaps/default/keymap.c
+++ b/keyboards/cannonkeys/brutalv2_65/keymaps/default/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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, _______, _______, _______,
+ QK_BOOT, KC_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, _______,
diff --git a/keyboards/cannonkeys/brutalv2_65/keymaps/via/keymap.c b/keyboards/cannonkeys/brutalv2_65/keymaps/via/keymap.c
index 727bcdcdce..60ac843ce0 100644
--- a/keyboards/cannonkeys/brutalv2_65/keymaps/via/keymap.c
+++ b/keyboards/cannonkeys/brutalv2_65/keymaps/via/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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, _______, _______, _______,
+ QK_BOOT, KC_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, _______,
diff --git a/keyboards/cannonkeys/brutalv2_65/readme.md b/keyboards/cannonkeys/brutalv2_65/readme.md
index fe09c9ecec..52d0649ce1 100644
--- a/keyboards/cannonkeys/brutalv2_65/readme.md
+++ b/keyboards/cannonkeys/brutalv2_65/readme.md
@@ -17,4 +17,4 @@ 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**: Toggle the switch on the back of the pcb to "0" and briefly press the button on the back of the PCB
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/cannonkeys/chimera65/config.h b/keyboards/cannonkeys/chimera65/config.h
index 1fe204a4ad..a8bc244b5c 100644
--- a/keyboards/cannonkeys/chimera65/config.h
+++ b/keyboards/cannonkeys/chimera65/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0xC024
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Chimera65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/cannonkeys/chimera65/info.json b/keyboards/cannonkeys/chimera65/info.json
index f1854e304f..3d68ba84d8 100644
--- a/keyboards/cannonkeys/chimera65/info.json
+++ b/keyboards/cannonkeys/chimera65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Chimera65",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0xC024",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/cannonkeys/cloudline/config.h b/keyboards/cannonkeys/cloudline/config.h
index ad0e1a9c4d..b1064d6349 100644
--- a/keyboards/cannonkeys/cloudline/config.h
+++ b/keyboards/cannonkeys/cloudline/config.h
@@ -3,13 +3,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x000A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Cloudline
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
diff --git a/keyboards/cannonkeys/cloudline/info.json b/keyboards/cannonkeys/cloudline/info.json
index 6b6e15cfdf..04624aa3b0 100644
--- a/keyboards/cannonkeys/cloudline/info.json
+++ b/keyboards/cannonkeys/cloudline/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Cloudline",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x000A",
+ "device_version": "0.0.1"
+ },
"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":"F13", "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}, {"x":13, "y":1.25}, {"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}, {"x":12.75, "y":3.25}, {"label":"Enter", "x":13.75, "y":3.25, "w":1.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"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.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":"Menu", "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/cannonkeys/cloudline/keymaps/default/keymap.c b/keyboards/cannonkeys/cloudline/keymaps/default/keymap.c
index 5e58a8929e..d92b7fba15 100644
--- a/keyboards/cannonkeys/cloudline/keymaps/default/keymap.c
+++ b/keyboards/cannonkeys/cloudline/keymaps/default/keymap.c
@@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_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, 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_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, QK_BOOT, 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),
diff --git a/keyboards/cannonkeys/cloudline/keymaps/via/keymap.c b/keyboards/cannonkeys/cloudline/keymaps/via/keymap.c
index 9bad867c59..e7e4ad1ec9 100644
--- a/keyboards/cannonkeys/cloudline/keymaps/via/keymap.c
+++ b/keyboards/cannonkeys/cloudline/keymaps/via/keymap.c
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_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, 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_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, QK_BOOT, 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),
diff --git a/keyboards/cannonkeys/cloudline/readme.md b/keyboards/cannonkeys/cloudline/readme.md
index ddd15a05a5..af619fe6a5 100644
--- a/keyboards/cannonkeys/cloudline/readme.md
+++ b/keyboards/cannonkeys/cloudline/readme.md
@@ -17,4 +17,4 @@ 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**: Toggle the switch on the back of the pcb to "0" and briefly press the button on the back of the PCB
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/cannonkeys/crin/config.h b/keyboards/cannonkeys/crin/config.h
new file mode 100644
index 0000000000..95c49efb09
--- /dev/null
+++ b/keyboards/cannonkeys/crin/config.h
@@ -0,0 +1,64 @@
+/*
+Copyright 2022 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
+
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 18
+
+#define MATRIX_COL_PINS { B0, C15, C14, A7, A5, C13, A4, A2, A1, A0, B9, B8, B7, A3, B6, B4, B3, A15 }
+#define MATRIX_ROW_PINS { B11, B10, B2, F0, 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_LEVELS 6
+#define BACKLIGHT_BREATHING
+#define BREATHING_PERIOD 6
+
+#define LED_CAPS_LOCK_PIN F1
+#define LED_PIN_ON_STATE 0
+
+/* 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
diff --git a/keyboards/cannonkeys/crin/crin.c b/keyboards/cannonkeys/crin/crin.c
new file mode 100644
index 0000000000..4299c28857
--- /dev/null
+++ b/keyboards/cannonkeys/crin/crin.c
@@ -0,0 +1,17 @@
+ /* Copyright 2022 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 "crin.h"
diff --git a/keyboards/cannonkeys/crin/crin.h b/keyboards/cannonkeys/crin/crin.h
new file mode 100644
index 0000000000..630af0c14d
--- /dev/null
+++ b/keyboards/cannonkeys/crin/crin.h
@@ -0,0 +1,33 @@
+ /* Copyright 2022 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 ____ KC_NO
+
+#define LAYOUT_all( \
+ K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, K018, \
+ K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K115, K116, K117, K118, \
+ K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K215, \
+ K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, K317, \
+ K401, K402, K403, K406, K411, K412, K413, K415, K416, K417, K418 \
+) { \
+ { K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, K017, K018 }, \
+ { K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, ____, K115, K116, K117, K118 }, \
+ { K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, ____, K215, ____, ____, ____ }, \
+ { K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, ____, K315, ____, K317, ____ }, \
+ { K401, K402, K403, ____, ____, K406, ____, ____, ____, ____, K411, K412, K413, ____, K415, K416, K417, K418 } \
+}
diff --git a/keyboards/cannonkeys/crin/halconf.h b/keyboards/cannonkeys/crin/halconf.h
new file mode 100644
index 0000000000..aaffce9934
--- /dev/null
+++ b/keyboards/cannonkeys/crin/halconf.h
@@ -0,0 +1,31 @@
+/* Copyright 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/cannonkeys/onyx/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#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/cannonkeys/crin/info.json b/keyboards/cannonkeys/crin/info.json
new file mode 100644
index 0000000000..8c8b956257
--- /dev/null
+++ b/keyboards/cannonkeys/crin/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Crin",
+ "manufacturer": "CannonKeys",
+ "url": "https://cannonkeys.com",
+ "maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x0012",
+ "device_version": "0.0.1"
+ },
+ "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":"Bksp", "x":13, "y":0}, {"label":"~", "x":14, "y":0}, {"label":"Insert", "x":15.25, "y":0}, {"label":"Home", "x":16.25, "y":0}, {"label":"PgUp", "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":"Delete", "x":15.25, "y":1}, {"label":"End", "x":16.25, "y":1}, {"label":"PgDn", "x":17.25, "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":"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":16.25, "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":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/cannonkeys/crin/keymaps/default/keymap.c b/keyboards/cannonkeys/crin/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a84b6d3e71
--- /dev/null
+++ b/keyboards/cannonkeys/crin/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/*
+Copyright 2022 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
+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_BSPC, KC_GRV, 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_LSFT, MO(1), KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN1] = LAYOUT_all(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/crin/keymaps/via/keymap.c b/keyboards/cannonkeys/crin/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d53a611626
--- /dev/null
+++ b/keyboards/cannonkeys/crin/keymaps/via/keymap.c
@@ -0,0 +1,59 @@
+/*
+Copyright 2022 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
+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_GRV, 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, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN1] = LAYOUT_all(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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
+ ),
+
+ [_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, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+
+};
diff --git a/keyboards/cannonkeys/crin/keymaps/via/rules.mk b/keyboards/cannonkeys/crin/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/cannonkeys/crin/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/cannonkeys/crin/mcuconf.h b/keyboards/cannonkeys/crin/mcuconf.h
new file mode 100644
index 0000000000..3494eb511c
--- /dev/null
+++ b/keyboards/cannonkeys/crin/mcuconf.h
@@ -0,0 +1,34 @@
+/* Copyright 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/cannonkeys/onyx/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/cannonkeys/crin/readme.md b/keyboards/cannonkeys/crin/readme.md
new file mode 100644
index 0000000000..d81550d023
--- /dev/null
+++ b/keyboards/cannonkeys/crin/readme.md
@@ -0,0 +1,18 @@
+# Crin by Bachoo
+
+* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan)
+* Hardware Supported: STM32F072CBT6
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cannonkeys/crin: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**: Toggle the switch on the back of the pcb to "0" and briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/cannonkeys/crin/rules.mk b/keyboards/cannonkeys/crin/rules.mk
new file mode 100644
index 0000000000..36c7523cb9
--- /dev/null
+++ b/keyboards/cannonkeys/crin/rules.mk
@@ -0,0 +1,24 @@
+# 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 = yes # 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/cannonkeys/db60/config.h b/keyboards/cannonkeys/db60/config.h
index 6dd0d0d7f8..873ec24697 100644
--- a/keyboards/cannonkeys/db60/config.h
+++ b/keyboards/cannonkeys/db60/config.h
@@ -17,12 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define DEVICE_VER 0x0001
-
-#define MANUFACTURER CannonKeys
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/cannonkeys/db60/hotswap/config.h b/keyboards/cannonkeys/db60/hotswap/config.h
deleted file mode 100644
index 3ea9693404..0000000000
--- a/keyboards/cannonkeys/db60/hotswap/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2021 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
-
-#define PRODUCT_ID 0xDB62
-#define PRODUCT DB60 Hotswap
diff --git a/keyboards/cannonkeys/db60/hotswap/info.json b/keyboards/cannonkeys/db60/hotswap/info.json
new file mode 100644
index 0000000000..e0ced428b2
--- /dev/null
+++ b/keyboards/cannonkeys/db60/hotswap/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "DB60 Hotswap",
+ "usb": {
+ "pid": "0xDB62"
+ }
+}
diff --git a/keyboards/cannonkeys/db60/info.json b/keyboards/cannonkeys/db60/info.json
index 9c6461d9e2..bba9427caf 100644
--- a/keyboards/cannonkeys/db60/info.json
+++ b/keyboards/cannonkeys/db60/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "DB60",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"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, "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}, {"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":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/cannonkeys/db60/j02/config.h b/keyboards/cannonkeys/db60/j02/config.h
deleted file mode 100644
index 392cec3a55..0000000000
--- a/keyboards/cannonkeys/db60/j02/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2021 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
-
-#define PRODUCT_ID 0xDB60
-#define PRODUCT DB60
diff --git a/keyboards/cannonkeys/db60/j02/info.json b/keyboards/cannonkeys/db60/j02/info.json
new file mode 100644
index 0000000000..9f5c817112
--- /dev/null
+++ b/keyboards/cannonkeys/db60/j02/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "DB60",
+ "usb": {
+ "pid": "0xDB60"
+ }
+}
diff --git a/keyboards/cannonkeys/db60/rev2/config.h b/keyboards/cannonkeys/db60/rev2/config.h
deleted file mode 100644
index df3527b705..0000000000
--- a/keyboards/cannonkeys/db60/rev2/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2021 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
-
-#define PRODUCT_ID 0xDB61
-#define PRODUCT DB60v2
diff --git a/keyboards/cannonkeys/db60/rev2/info.json b/keyboards/cannonkeys/db60/rev2/info.json
new file mode 100644
index 0000000000..f5f3c8530d
--- /dev/null
+++ b/keyboards/cannonkeys/db60/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "DB60v2",
+ "usb": {
+ "pid": "0xDB61"
+ }
+}
diff --git a/keyboards/cannonkeys/devastatingtkl/config.h b/keyboards/cannonkeys/devastatingtkl/config.h
index 7173a46378..e4e87edcaa 100644
--- a/keyboards/cannonkeys/devastatingtkl/config.h
+++ b/keyboards/cannonkeys/devastatingtkl/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0xDE57
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT DevastatingTKL
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
diff --git a/keyboards/cannonkeys/devastatingtkl/info.json b/keyboards/cannonkeys/devastatingtkl/info.json
index 9387190086..2c7c2eeb0b 100644
--- a/keyboards/cannonkeys/devastatingtkl/info.json
+++ b/keyboards/cannonkeys/devastatingtkl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "DevastatingTKL",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0xDE57",
+ "device_version": "0.0.1"
+ },
"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}, {"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}, {"x":13, "y":1.25}, {"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}, {"x":12.75, "y":3.25}, {"x":13.75, "y":3.25, "w":1.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"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}, {"x":14, "y":4.25}, {"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":"Fn", "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/cannonkeys/gentoo/config.h b/keyboards/cannonkeys/gentoo/config.h
new file mode 100644
index 0000000000..543ac8d550
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo/config.h
@@ -0,0 +1,55 @@
+/*
+Copyright 2022 Andrew Kannan <andrew@cannonkeys.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_COL_PINS { C13, C15, B13, B12, B11, B10, B2, B1, B0, A7, A6, A5, A4, A3, A2 }
+#define MATRIX_ROW_PINS { C14, A1, B14, B15, A8 }
+#define DIODE_DIRECTION COL2ROW
+
+#define LED_CAPS_LOCK_PIN B3
+#define LED_PIN_ON_STATE 0
+/* 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
diff --git a/keyboards/cannonkeys/gentoo/gentoo.c b/keyboards/cannonkeys/gentoo/gentoo.c
new file mode 100644
index 0000000000..a535e9b44c
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo/gentoo.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 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 "gentoo.h"
diff --git a/keyboards/cannonkeys/gentoo/gentoo.h b/keyboards/cannonkeys/gentoo/gentoo.h
new file mode 100644
index 0000000000..8c094fd5b5
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo/gentoo.h
@@ -0,0 +1,35 @@
+/* Copyright 2022 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 ____ KC_NO
+
+#define LAYOUT_all( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K212, 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, K311, K312, K313, K314, \
+ K400, K401, K402, K406, K409, 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, ____, ____, K409, K410, K411, K412, K413, K414 } \
+}
diff --git a/keyboards/cannonkeys/gentoo/info.json b/keyboards/cannonkeys/gentoo/info.json
new file mode 100644
index 0000000000..357554d9fc
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo/info.json
@@ -0,0 +1,91 @@
+{
+ "keyboard_name": "Gentoo",
+ "manufacturer": "CannonKeys",
+ "url": "https://cannonkeys.com",
+ "maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x000F",
+ "device_version": "0.0.1"
+ },
+ "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":"Bkspc", "x":13, "y":0},
+ {"label":"Del", "x":14, "y":0},
+ {"label":"Del", "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":"|", "x":13.5, "y":1, "w":1.5},
+ {"label":"PgUp", "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":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"PgDn", "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":"Up", "x":14.25, "y":3.25},
+ {"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":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4},
+ {"label":"Win", "x":11, "y":4},
+ {"label":"Ctrl", "x":12, "y":4},
+ {"label":"Left", "x":13.25, "y":4.25},
+ {"label":"Down", "x":14.25, "y":4.25},
+ {"label":"Right", "x":15.25, "y":4.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/cannonkeys/gentoo/keymaps/default/keymap.c b/keyboards/cannonkeys/gentoo/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c809f75d0b
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo/keymaps/default/keymap.c
@@ -0,0 +1,47 @@
+/*
+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.
+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_TAB, KC_Q, KC_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_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN] = LAYOUT_all(
+ QK_BOOT, KC_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/cannonkeys/gentoo/keymaps/via/keymap.c b/keyboards/cannonkeys/gentoo/keymaps/via/keymap.c
new file mode 100644
index 0000000000..1ac9367483
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo/keymaps/via/keymap.c
@@ -0,0 +1,65 @@
+/*
+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.
+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_TAB, KC_Q, KC_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_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN1] = LAYOUT_all(
+ QK_BOOT, KC_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/mechwild/bde/keymaps/lefty_via/rules.mk b/keyboards/cannonkeys/gentoo/keymaps/via/rules.mk
index 16d33cd89f..16d33cd89f 100644
--- a/keyboards/mechwild/bde/keymaps/lefty_via/rules.mk
+++ b/keyboards/cannonkeys/gentoo/keymaps/via/rules.mk
diff --git a/keyboards/cannonkeys/gentoo/readme.md b/keyboards/cannonkeys/gentoo/readme.md
new file mode 100644
index 0000000000..51e7eb96f3
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo/readme.md
@@ -0,0 +1,20 @@
+# Gentoo
+
+Gentoo Keyboard
+
+* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan)
+* Hardware Supported: STM32F072CBT6
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cannonkeys/gentoo: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**: Toggle the switch on the back of the pcb to "0" and briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/cannonkeys/gentoo/rules.mk b/keyboards/cannonkeys/gentoo/rules.mk
new file mode 100644
index 0000000000..7b44b402d1
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo/rules.mk
@@ -0,0 +1,24 @@
+# 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 = 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/cannonkeys/gentoo_hs/config.h b/keyboards/cannonkeys/gentoo_hs/config.h
new file mode 100644
index 0000000000..9703c0b1b0
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo_hs/config.h
@@ -0,0 +1,57 @@
+/*
+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
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_COL_PINS { A8, C13, B9, B8, B7, B6, B5, B4, B3, A7, A5, A4, A3, A2, A1 }
+#define MATRIX_ROW_PINS { A14, A15, A0, B1, B0 }
+#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 B14
+#define LED_PIN_ON_STATE 0
+
+
+/*
+ * 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
diff --git a/keyboards/cannonkeys/gentoo_hs/gentoo_hs.c b/keyboards/cannonkeys/gentoo_hs/gentoo_hs.c
new file mode 100644
index 0000000000..8ecaa655f8
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo_hs/gentoo_hs.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 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 "gentoo_hs.h"
diff --git a/keyboards/cannonkeys/gentoo_hs/gentoo_hs.h b/keyboards/cannonkeys/gentoo_hs/gentoo_hs.h
new file mode 100644
index 0000000000..681de34985
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo_hs/gentoo_hs.h
@@ -0,0 +1,34 @@
+/* Copyright 2022 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 ____ KC_NO
+
+#define LAYOUT_default( \
+ 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, 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, ____, K213, K214 }, \
+ { K300, ____, 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/cannonkeys/gentoo_hs/info.json b/keyboards/cannonkeys/gentoo_hs/info.json
new file mode 100644
index 0000000000..e20f6e6e39
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo_hs/info.json
@@ -0,0 +1,88 @@
+{
+ "keyboard_name": "Gentoo HS",
+ "manufacturer": "CannonKeys",
+ "url": "https://cannonkeys.com",
+ "maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x0010",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_default": {
+ "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":"Del", "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":"|", "x":13.5, "y":1, "w":1.5},
+ {"label":"PgUp", "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":"Enter", "x":12.75, "y":2, "w":2.25},
+ {"label":"PgDn", "x":15.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":"Up", "x":14.25, "y":3.25},
+ {"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":2.5, "y":4, "w":1.25},
+ {"x":3.75, "y":4, "w":6.25},
+ {"label":"Alt", "x":10, "y":4, "w":1.5},
+ {"label":"Ctrl", "x":11.5, "y":4, "w":1.5},
+ {"label":"Left", "x":13.25, "y":4.25},
+ {"label":"Down", "x":14.25, "y":4.25},
+ {"label":"Right", "x":15.25, "y":4.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/cannonkeys/gentoo_hs/keymaps/default/keymap.c b/keyboards/cannonkeys/gentoo_hs/keymaps/default/keymap.c
new file mode 100644
index 0000000000..0967054438
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo_hs/keymaps/default/keymap.c
@@ -0,0 +1,46 @@
+/*
+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.
+enum layer_names {
+ _BASE,
+ _FN1,
+};
+
+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_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, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_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,
+ 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, RGB_MOD,
+ BL_BRTG, 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,
+ BL_INC, BL_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,
+ BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/cannonkeys/gentoo_hs/keymaps/via/keymap.c b/keyboards/cannonkeys/gentoo_hs/keymaps/via/keymap.c
new file mode 100644
index 0000000000..b5b7564543
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo_hs/keymaps/via/keymap.c
@@ -0,0 +1,64 @@
+/*
+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.
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+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_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, MO(_FN1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_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,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD,
+ BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ BL_INC, BL_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,
+ BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS
+ ),
+
+ [_FN2] = LAYOUT_default(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_default(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/gentoo_hs/keymaps/via/rules.mk b/keyboards/cannonkeys/gentoo_hs/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo_hs/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/cannonkeys/gentoo_hs/readme.md b/keyboards/cannonkeys/gentoo_hs/readme.md
new file mode 100644
index 0000000000..8c3de2effa
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo_hs/readme.md
@@ -0,0 +1,20 @@
+# Gentoo65 Hotswap
+
+Gentoo65 Hotswap Keyboard
+
+* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan)
+* Hardware Supported: STM32F072CBT6
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cannonkeys/gentoo_hs: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**: Toggle the switch on the back of the pcb to "0" and briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/cannonkeys/gentoo_hs/rules.mk b/keyboards/cannonkeys/gentoo_hs/rules.mk
new file mode 100644
index 0000000000..b34d15f4b5
--- /dev/null
+++ b/keyboards/cannonkeys/gentoo_hs/rules.mk
@@ -0,0 +1,24 @@
+# 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 = 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/cannonkeys/hoodrowg/config.h b/keyboards/cannonkeys/hoodrowg/config.h
index fc305188a6..6971cf02b8 100644
--- a/keyboards/cannonkeys/hoodrowg/config.h
+++ b/keyboards/cannonkeys/hoodrowg/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/cannonkeys/hoodrowg/info.json b/keyboards/cannonkeys/hoodrowg/info.json
index 63c53ac5b3..10fed32dbf 100644
--- a/keyboards/cannonkeys/hoodrowg/info.json
+++ b/keyboards/cannonkeys/hoodrowg/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "HoodrowG",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x0006",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/cannonkeys/hoodrowg/readme.md b/keyboards/cannonkeys/hoodrowg/readme.md
index e5baab539a..67265e05af 100644
--- a/keyboards/cannonkeys/hoodrowg/readme.md
+++ b/keyboards/cannonkeys/hoodrowg/readme.md
@@ -15,7 +15,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/instant60/config.h b/keyboards/cannonkeys/instant60/config.h
index 9b4aac8e15..7037c192d9 100644
--- a/keyboards/cannonkeys/instant60/config.h
+++ b/keyboards/cannonkeys/instant60/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x1600
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Instant60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/cannonkeys/instant60/info.json b/keyboards/cannonkeys/instant60/info.json
index e20acf495e..0b4d600e09 100644
--- a/keyboards/cannonkeys/instant60/info.json
+++ b/keyboards/cannonkeys/instant60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Instant60",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x1600",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"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, "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}, {"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":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/cannonkeys/instant60/keymaps/via_standard/keymap.c b/keyboards/cannonkeys/instant60/keymaps/via_standard/keymap.c
index b182ac5f4f..52d3478ecb 100644
--- a/keyboards/cannonkeys/instant60/keymaps/via_standard/keymap.c
+++ b/keyboards/cannonkeys/instant60/keymaps/via_standard/keymap.c
@@ -38,6 +38,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, _______, QK_BOOT
)
};
diff --git a/keyboards/cannonkeys/instant65/config.h b/keyboards/cannonkeys/instant65/config.h
index 464ef09044..f19308a8b8 100644
--- a/keyboards/cannonkeys/instant65/config.h
+++ b/keyboards/cannonkeys/instant65/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x1565
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Instant65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/cannonkeys/instant65/info.json b/keyboards/cannonkeys/instant65/info.json
index 6a49618816..8274aacce1 100644
--- a/keyboards/cannonkeys/instant65/info.json
+++ b/keyboards/cannonkeys/instant65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Instant65",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x1565",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"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, "w":2}, {"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}, {"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}, {"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}, {"x":14, "y":3}, {"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":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
diff --git a/keyboards/cannonkeys/iron165/config.h b/keyboards/cannonkeys/iron165/config.h
index b0b3dd8d7b..3ba33e96e5 100644
--- a/keyboards/cannonkeys/iron165/config.h
+++ b/keyboards/cannonkeys/iron165/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5A12
-#define PRODUCT_ID 0x5165
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SmithAndRune
-#define PRODUCT Iron165
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/cannonkeys/iron165/info.json b/keyboards/cannonkeys/iron165/info.json
index 7d25a5d2aa..843302efd2 100644
--- a/keyboards/cannonkeys/iron165/info.json
+++ b/keyboards/cannonkeys/iron165/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Iron165",
+ "manufacturer": "SmithAndRune",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0x5A12",
+ "pid": "0x5165",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"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}, {"x":13, "y":0}, {"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}, {"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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"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}, {"x":14, "y":3}, {"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":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
diff --git a/keyboards/cannonkeys/malicious_ergo/chconf.h b/keyboards/cannonkeys/malicious_ergo/chconf.h
new file mode 100644
index 0000000000..308855ab7a
--- /dev/null
+++ b/keyboards/cannonkeys/malicious_ergo/chconf.h
@@ -0,0 +1,31 @@
+/* Copyright 2022 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/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/projectkb/alice/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/cannonkeys/malicious_ergo/config.h b/keyboards/cannonkeys/malicious_ergo/config.h
new file mode 100644
index 0000000000..1f9eecf119
--- /dev/null
+++ b/keyboards/cannonkeys/malicious_ergo/config.h
@@ -0,0 +1,96 @@
+#pragma once
+
+/*
+Copyright 2022 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
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 17
+
+#define MATRIX_COL_PINS { B1, B0, A7, A1, A5, A4, A3, A10, B9, B8, B7, B6, B5, B4, B3, A15, A14 }
+#define MATRIX_ROW_PINS { B2, B10, B11, A2, A0 }
+#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
+
+#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_DI_PIN B15
+#define RGBLED_NUM 14
+#define WS2812_SPI SPID2
+#define WS2812_SPI_MOSI_PAL_MODE 0
+#define WS2812_SPI_SCK_PAL_MODE 0
+#define WS2812_SPI_SCK_PIN B13
+
+// Indicator LEDs
+#define LED_CAPS_LOCK_PIN A8
+#define LED_NUM_LOCK_PIN A9
+#define LED_SCROLL_LOCK_PIN B12
+#define LED_PIN_ON_STATE 0
+
+
+
+// 2 bits for 4 layout options
+#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
+
+#define SLEEP_LED_GPT_DRIVER GPTD1
+
+/*
+ * 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
+
+
+
diff --git a/keyboards/cannonkeys/malicious_ergo/halconf.h b/keyboards/cannonkeys/malicious_ergo/halconf.h
new file mode 100644
index 0000000000..d696c3bd22
--- /dev/null
+++ b/keyboards/cannonkeys/malicious_ergo/halconf.h
@@ -0,0 +1,31 @@
+/* Copyright 2022 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/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/projectkb/alice/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#define HAL_USE_SPI TRUE
+
+#define HAL_USE_GPT TRUE
+
+#include_next <halconf.h>
+
diff --git a/keyboards/cannonkeys/malicious_ergo/info.json b/keyboards/cannonkeys/malicious_ergo/info.json
new file mode 100644
index 0000000000..b6ec458917
--- /dev/null
+++ b/keyboards/cannonkeys/malicious_ergo/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Malicious Ergo",
+ "manufacturer": "CannonKeys",
+ "url": "https://cannonkeys.com",
+ "maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x0009",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_default": {
+ "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":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}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":18, "y":0}, {"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":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}, {"x":16.5, "y":1, "w":1.5}, {"x":18.25, "y":1}, {"x":0, "y":2}, {"x":1.375, "y":2, "w":1.75}, {"x":3.125, "y":2}, {"x":4.13, "y":2}, {"x":5.13, "y":2}, {"x":6.13, "y":2}, {"x":7.13, "y":2}, {"x":9.88, "y":2}, {"x":10.88, "y":2}, {"x":11.88, "y":2}, {"x":12.88, "y":2}, {"x":13.88, "y":2}, {"x":14.88, "y":2}, {"x":15.88, "y":2, "w":2.25}, {"x":18.5, "y":2}, {"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.5, "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":14.25, "y":4, "w":1.5}, {"x":16.25, "y":4}, {"x":17.25, "y":4}, {"x":18.25, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/cannonkeys/malicious_ergo/keymaps/default/keymap.c b/keyboards/cannonkeys/malicious_ergo/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e5c58bfc0f
--- /dev/null
+++ b/keyboards/cannonkeys/malicious_ergo/keymaps/default/keymap.c
@@ -0,0 +1,42 @@
+/*
+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.
+enum layer_names {
+ _BASE,
+ _FN1
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_default(
+ 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_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_HOME,
+ 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, MO(_FN1), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [_FN1] = LAYOUT_default(
+ 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_DEL, _______,
+ RGB_MOD, _______, _______, KC_UP, _______, _______, _______, RGB_SAI, RGB_HUI, RGB_VAI, _______, _______, _______, _______, _______, _______,
+ RGB_RMOD, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, _______, _______, _______, _______, _______,
+ _______, BL_INC, BL_DEC, BL_TOGG, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______
+ )
+};
diff --git a/keyboards/cannonkeys/malicious_ergo/keymaps/via/keymap.c b/keyboards/cannonkeys/malicious_ergo/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f8d3753f43
--- /dev/null
+++ b/keyboards/cannonkeys/malicious_ergo/keymaps/via/keymap.c
@@ -0,0 +1,60 @@
+/*
+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.
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_default(
+ 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_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_HOME,
+ 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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, MO(_FN1), KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [_FN1] = LAYOUT_default(
+ 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_DEL, _______,
+ RGB_MOD, _______, _______, KC_UP, _______, _______, _______, RGB_SAI, RGB_HUI, RGB_VAI, _______, _______, _______, _______, _______, _______,
+ RGB_RMOD, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, _______, _______, _______, _______, _______,
+ _______, BL_INC, BL_DEC, BL_TOGG, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______
+ ),
+
+ [_FN2] = LAYOUT_default(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN3] = LAYOUT_default(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cannonkeys/malicious_ergo/keymaps/via/rules.mk b/keyboards/cannonkeys/malicious_ergo/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/cannonkeys/malicious_ergo/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/cannonkeys/malicious_ergo/malicious_ergo.c b/keyboards/cannonkeys/malicious_ergo/malicious_ergo.c
new file mode 100644
index 0000000000..58e33a3889
--- /dev/null
+++ b/keyboards/cannonkeys/malicious_ergo/malicious_ergo.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 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 "malicious_ergo.h"
diff --git a/keyboards/cannonkeys/malicious_ergo/malicious_ergo.h b/keyboards/cannonkeys/malicious_ergo/malicious_ergo.h
new file mode 100644
index 0000000000..191baf768f
--- /dev/null
+++ b/keyboards/cannonkeys/malicious_ergo/malicious_ergo.h
@@ -0,0 +1,34 @@
+/* Copyright 2022 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 ___ KC_NO
+
+#define LAYOUT_default( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G,\
+ K10, K11, K12, K13, K14, K15, K16, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G,\
+ K20, K21, K22, K23, K24, K25, K26, K28, K29, K2A, K2B, K2C, K2D, K2F, K2G,\
+ K31, K32, K33, K34, K35, K36, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, \
+ K41, K43, K44, K46, K49, K4B, K4D, K4E, K4F, 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, ___, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, ___, K28, K29, K2A, K2B, K2C, K2D, ___, K2F, K2G }, \
+ { ___, K31, K32, K33, K34, K35, K36, ___, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, ___ }, \
+ { ___, K41, ___, K43, K44, ___, K46, ___, ___, K49, ___, K4B, ___, K4D, K4E, K4F, K3G } \
+}
diff --git a/keyboards/cannonkeys/malicious_ergo/mcuconf.h b/keyboards/cannonkeys/malicious_ergo/mcuconf.h
new file mode 100644
index 0000000000..d1335e0f44
--- /dev/null
+++ b/keyboards/cannonkeys/malicious_ergo/mcuconf.h
@@ -0,0 +1,33 @@
+/* Copyright 2022 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/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/projectkb/alice/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h`
+ */
+
+#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
+
+#undef STM32_GPT_USE_TIM1
+#define STM32_GPT_USE_TIM1 TRUE
diff --git a/keyboards/cannonkeys/malicious_ergo/readme.md b/keyboards/cannonkeys/malicious_ergo/readme.md
new file mode 100644
index 0000000000..72cb963070
--- /dev/null
+++ b/keyboards/cannonkeys/malicious_ergo/readme.md
@@ -0,0 +1,18 @@
+# CannonKeys Malicious Ergo
+
+* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan)
+* Hardware Supported: STM32F072CBT6
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cannonkeys/malicious_ergo: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**: Toggle the switch on the back of the pcb to "0" and briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/malicious_ergo/rules.mk b/keyboards/cannonkeys/malicious_ergo/rules.mk
new file mode 100644
index 0000000000..0d99007c16
--- /dev/null
+++ b/keyboards/cannonkeys/malicious_ergo/rules.mk
@@ -0,0 +1,25 @@
+# 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 = yes # 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/cannonkeys/moment_hs/info.json b/keyboards/cannonkeys/moment_hs/info.json
new file mode 100644
index 0000000000..721eb80ad2
--- /dev/null
+++ b/keyboards/cannonkeys/moment_hs/info.json
@@ -0,0 +1,98 @@
+{
+ "manufacturer": "CannonKeys",
+ "keyboard_name": "Moment HS",
+ "maintainer": "awkannan",
+ "bootloader": "stm32-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["B11", "B10", "B2", "A9", "A15", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "C13", "C14", "C15"],
+ "rows": ["B1", "B0", "A7", "A5", "A4"]
+ },
+ "indicators": {
+ "caps_lock": "A3",
+ "on_state": 0
+ },
+ "processor": "STM32F072",
+ "url": "https://cannonkeys.com/",
+ "usb": {
+ "device_version": "1.0.0",
+ "vid": "0xCA04",
+ "pid": "0x0013"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "Esc", "matrix": [0, 0], "x": 0.0, "y": 0.0 },
+ { "label": "!", "matrix": [0, 1], "x": 1.0, "y": 0.0 },
+ { "label": "@", "matrix": [0, 2], "x": 2.0, "y": 0.0 },
+ { "label": "#", "matrix": [0, 3], "x": 3.0, "y": 0.0 },
+ { "label": "$", "matrix": [0, 4], "x": 4.0, "y": 0.0 },
+ { "label": "%", "matrix": [0, 5], "x": 5.0, "y": 0.0 },
+ { "label": "^", "matrix": [0, 6], "x": 6.0, "y": 0.0 },
+ { "label": "&", "matrix": [0, 7], "x": 7.0, "y": 0.0 },
+ { "label": "*", "matrix": [0, 8], "x": 8.0, "y": 0.0 },
+ { "label": "(", "matrix": [0, 9], "x": 9.0, "y": 0.0 },
+ { "label": ")", "matrix": [0, 10], "x": 10.0, "y": 0.0 },
+ { "label": "_", "matrix": [0, 11], "x": 11.0, "y": 0.0 },
+ { "label": "+", "matrix": [0, 12], "x": 12.0, "y": 0.0 },
+ { "label": "Bksp", "matrix": [0, 14], "x": 13.0, "y": 0.0 },
+ { "label": "Del", "matrix": [0, 13], "x": 14.0, "y": 0.0 },
+ { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0.0, "y": 1.0 },
+ { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1.0 },
+ { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1.0 },
+ { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1.0 },
+ { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1.0 },
+ { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1.0 },
+ { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1.0 },
+ { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1.0 },
+ { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1.0 },
+ { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1.0 },
+ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1.0 },
+ { "label": "{", "matrix": [1, 11], "x": 11.5, "y": 1.0 },
+ { "label": "}", "matrix": [1, 12], "x": 12.5, "y": 1.0 },
+ { "label": "|", "matrix": [1, 14], "w": 1.5, "x": 13.5, "y": 1.0 },
+ { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0.0, "y": 2.0 },
+ { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2.0 },
+ { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2.0 },
+ { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2.0 },
+ { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2.0 },
+ { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2.0 },
+ { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2.0 },
+ { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2.0 },
+ { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2.0 },
+ { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2.0 },
+ { "label": ":", "matrix": [2, 10], "x": 10.75, "y": 2.0 },
+ { "label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2.0 },
+ { "label": "Enter", "matrix": [2, 14], "w": 2.25, "x": 12.75, "y": 2.0 },
+ { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0.0, "y": 3.0 },
+ { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3.0 },
+ { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3.0 },
+ { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3.0 },
+ { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3.0 },
+ { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3.0 },
+ { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3.0 },
+ { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3.0 },
+ { "label": "<", "matrix": [3, 9], "x": 9.25, "y": 3.0 },
+ { "label": ">", "matrix": [3, 10], "x": 10.25, "y": 3.0 },
+ { "label": "?", "matrix": [3, 11], "x": 11.25, "y": 3.0 },
+ { "label": "Shift", "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3.0 },
+ { "label": "Fn", "matrix": [3, 14], "x": 14.0, "y": 3.0 },
+ { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0.0, "y": 4.0 },
+ { "label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4.0 },
+ { "label": "Alt", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4.0 },
+ { "matrix": [4, 6], "w": 7.0, "x": 4.0, "y": 4.0 },
+ { "label": "Alt", "matrix": [4, 11], "w": 1.5, "x": 11.0, "y": 4.0 },
+ { "label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4.0 },
+ { "label": "Menu", "matrix": [4, 14], "w": 1.5, "x": 13.5, "y": 4.0 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cannonkeys/moment_hs/keymaps/default/keymap.c b/keyboards/cannonkeys/moment_hs/keymaps/default/keymap.c
new file mode 100644
index 0000000000..daab043507
--- /dev/null
+++ b/keyboards/cannonkeys/moment_hs/keymaps/default/keymap.c
@@ -0,0 +1,45 @@
+// Copyright 2022 Andrew Kannan (@awkannan)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_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_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_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_RALT, KC_RGUI, 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, KC_DEL, KC_DEL,
+ RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_BRTG, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_INC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, RESET
+ ),
+
+ [_FN2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cannonkeys/moment_hs/keymaps/via/keymap.c b/keyboards/cannonkeys/moment_hs/keymaps/via/keymap.c
new file mode 100644
index 0000000000..be5d800341
--- /dev/null
+++ b/keyboards/cannonkeys/moment_hs/keymaps/via/keymap.c
@@ -0,0 +1,45 @@
+// Copyright 2022 Andrew Kannan (@awkannan)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_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_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_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_RALT, KC_RGUI, 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, KC_DEL, KC_DEL,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, RESET
+ ),
+
+ [_FN2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cannonkeys/moment_hs/keymaps/via/rules.mk b/keyboards/cannonkeys/moment_hs/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/cannonkeys/moment_hs/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/cannonkeys/moment_hs/readme.md b/keyboards/cannonkeys/moment_hs/readme.md
new file mode 100644
index 0000000000..9373e1551a
--- /dev/null
+++ b/keyboards/cannonkeys/moment_hs/readme.md
@@ -0,0 +1,25 @@
+# Moment Hotswap
+
+*A 60% keyboard from jjw_kb*
+
+* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan)
+* Hardware Supported: STM32F072CBT6
+* Hardware Availability: [CannonKeys](https://cannonkeys.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cannonkeys/moment_hs:default
+
+Flashing example for this keyboard:
+
+ make cannonkeys/moment_hs: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**: Swap the boot switch on the back of the PCB to "1" and hit the reset button
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/cannonkeys/moment_hs/rules.mk b/keyboards/cannonkeys/moment_hs/rules.mk
new file mode 100644
index 0000000000..0ab54aaaf7
--- /dev/null
+++ b/keyboards/cannonkeys/moment_hs/rules.mk
@@ -0,0 +1,2 @@
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
diff --git a/keyboards/cannonkeys/nearfield/config.h b/keyboards/cannonkeys/nearfield/config.h
new file mode 100755
index 0000000000..7d8f904915
--- /dev/null
+++ b/keyboards/cannonkeys/nearfield/config.h
@@ -0,0 +1,35 @@
+/*
+Copyright 2021 Dr.Doof
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 5
+#define MATRIX_COLS 16
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B4, D2, D4, D6, D7 }
+#define MATRIX_COL_PINS { D3, D5, C6, C7, B6, B5, B7, F0, F1, F4, F5, F6, F7, B3, B2, D1 }
+#define UNUSED_PINS { E2, E6, D0, B1, B0 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 0
diff --git a/keyboards/cannonkeys/nearfield/info.json b/keyboards/cannonkeys/nearfield/info.json
new file mode 100644
index 0000000000..ffd1bf6ac6
--- /dev/null
+++ b/keyboards/cannonkeys/nearfield/info.json
@@ -0,0 +1,376 @@
+{
+ "keyboard_name":"Nearfield",
+ "manufacturer":"JLC",
+ "url":"",
+ "maintainer":"tominabox1",
+ "usb":{
+ "vid":"0x0004",
+ "pid":"0x0002",
+ "device_version":"0.0.1"
+ },
+ "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":7.5,
+ "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":"Insert",
+ "x":15.5,
+ "y":0
+ },
+ {
+ "label":"Home",
+ "x":16.5,
+ "y":0
+ },
+ {
+ "label":"PgUp",
+ "x":17.5,
+ "y":0
+ },
+ {
+ "label":"Tab",
+ "x":0,
+ "y":1.5
+ },
+ {
+ "label":"Q",
+ "x":1,
+ "y":1.5
+ },
+ {
+ "label":"W",
+ "x":2,
+ "y":1.5
+ },
+ {
+ "label":"E",
+ "x":3,
+ "y":1.5
+ },
+ {
+ "label":"R",
+ "x":4,
+ "y":1.5
+ },
+ {
+ "label":"T",
+ "x":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":"{",
+ "x":12.5,
+ "y":1.5
+ },
+ {
+ "label":"}",
+ "x":13.5,
+ "y":1.5
+ },
+ {
+ "label":"Insert",
+ "x":15.5,
+ "y":1.5
+ },
+ {
+ "label":"Home",
+ "x":16.5,
+ "y":1.5
+ },
+ {
+ "label":"PgUp",
+ "x":17.5,
+ "y":1.5
+ },
+ {
+ "label":"Caps Lock",
+ "x":0,
+ "y":2.5,
+ "w":1.25
+ },
+ {
+ "label":"A",
+ "x":1.25,
+ "y":2.5
+ },
+ {
+ "label":"S",
+ "x":2.25,
+ "y":2.5
+ },
+ {
+ "label":"D",
+ "x":3.25,
+ "y":2.5
+ },
+ {
+ "label":"F",
+ "x":4.25,
+ "y":2.5
+ },
+ {
+ "label":"G",
+ "x":5.25,
+ "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":"\"",
+ "x":11.75,
+ "y":2.5
+ },
+ {
+ "label":"Enter",
+ "x":12.75,
+ "y":2.5,
+ "w":1.75
+ },
+ {
+ "label":"Delete",
+ "x":15.5,
+ "y":2.5
+ },
+ {
+ "label":"End",
+ "x":16.5,
+ "y":2.5
+ },
+ {
+ "label":"PgDn",
+ "x":17.5,
+ "y":2.5
+ },
+ {
+ "label":"Shift",
+ "x":0,
+ "y":3.5,
+ "w":1.75
+ },
+ {
+ "label":"Z",
+ "x":1.75,
+ "y":3.5
+ },
+ {
+ "label":"X",
+ "x":2.75,
+ "y":3.5
+ },
+ {
+ "label":"C",
+ "x":3.75,
+ "y":3.5
+ },
+ {
+ "label":"V",
+ "x":4.75,
+ "y":3.5
+ },
+ {
+ "label":"B",
+ "x":5.75,
+ "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":"?",
+ "x":12.25,
+ "y":3.5
+ },
+ {
+ "label":"r4 dogshift",
+ "x":13.25,
+ "y":3.5,
+ "w":1.25
+ },
+ {
+ "label":"Ctrl",
+ "x":0,
+ "y":4.5,
+ "w":1.25
+ },
+ {
+ "label":"Alt",
+ "x":2.5,
+ "y":4.5,
+ "w":1.25
+ },
+ {
+ "x":3.75,
+ "y":4.5
+ },
+ {
+ "label":"",
+ "x":4.75,
+ "y":4.5,
+ "w":2
+ },
+ {
+ "label":"",
+ "x":8.25,
+ "y":4.5,
+ "w":2.25
+ },
+ {
+ "label":"Alt",
+ "x":10.5,
+ "y":4.5,
+ "w":1.25
+ },
+ {
+ "label":"Ctrl",
+ "x":13,
+ "y":4.5,
+ "w":1.5
+ },
+ {
+ "label":"\u2191",
+ "x":16.5,
+ "y":4.5
+ },
+ {
+ "label":"\u2190",
+ "x":15.5,
+ "y":5.5
+ },
+ {
+ "label":"\u2193",
+ "x":16.5,
+ "y":5.5
+ },
+ {
+ "label":"\u2192",
+ "x":17.5,
+ "y":5.5
+ }
+ ]
+ }
+ }
+ }
diff --git a/keyboards/cannonkeys/nearfield/keymaps/default/keymap.c b/keyboards/cannonkeys/nearfield/keymaps/default/keymap.c
new file mode 100755
index 0000000000..62f2fa68b9
--- /dev/null
+++ b/keyboards/cannonkeys/nearfield/keymaps/default/keymap.c
@@ -0,0 +1,30 @@
+/*
+Copyright 2021 Dr.Doof
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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_GRV, KC_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_INS, KC_HOME, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_DEL, KC_END, 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_LCTL, KC_LALT, KC_SPC, KC_NO, KC_SPC, KC_LALT, KC_LCTL, KC_UP, KC_LEFT, KC_DOWN, KC_RIGHT
+
+ )
+};
diff --git a/keyboards/cannonkeys/nearfield/nearfield.c b/keyboards/cannonkeys/nearfield/nearfield.c
new file mode 100755
index 0000000000..7a635209de
--- /dev/null
+++ b/keyboards/cannonkeys/nearfield/nearfield.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2021 Dr.Doof
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "nearfield.h"
diff --git a/keyboards/cannonkeys/nearfield/nearfield.h b/keyboards/cannonkeys/nearfield/nearfield.h
new file mode 100755
index 0000000000..610c6489b5
--- /dev/null
+++ b/keyboards/cannonkeys/nearfield/nearfield.h
@@ -0,0 +1,35 @@
+/*
+Copyright 2021 Dr.Doof
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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( \
+ K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
+ K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
+ K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, K2F, K2G, \
+ K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+ K41, K42, K44, K45, K47, K49, K4B, K4D, K4E, K4F, K4G \
+) { \
+ { K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, K2E, K2F, K2G }, \
+ { K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, XXX, XXX, XXX, XXX }, \
+ { K41, K42, XXX, K44, K45, XXX, K47, XXX, K49, XXX, K4B, XXX, K4D, K4E, K4F, K4G } \
+}
diff --git a/keyboards/cannonkeys/nearfield/readme.md b/keyboards/cannonkeys/nearfield/readme.md
new file mode 100644
index 0000000000..fca9388ce7
--- /dev/null
+++ b/keyboards/cannonkeys/nearfield/readme.md
@@ -0,0 +1,31 @@
+# Nearfield
+
+![Nearfield](https://i.imgur.com/hNj44FYh.jpg)
+
+The LZ ErGO is a classic ergonomic design, predating the alice layout, and drawing inspiration from the "Microsoft natural ergonomic" series.
+Nearfield expands on this by increasing the rotation of the two halves of the alpha cluster, each half is rotated 15 degrees towards the center of the board.
+This increased angle forces the user to widen their elbow stance, and align their hands straighter with their forearms while typing.
+
+Aesthetic design: Aside from the obvious layout homage to the ergo, retaining the nav cluster,
+the case design draws inspiration from the M0110 keyboard series from Apple.
+
+bog standard mx and alps support pcb, uses unified c3 daughterboard. 100mm JST cable recommended.
+
+
+* Keyboard Maintainer: [TJ Campie](https://github.com/tominabox1)
+* Hardware Supported: Nearfield
+* Hardware Availability: [Cannonkeys](https://cannonkeys.com/collections/nearfield/products/nearfield-extra-pcb-and-daughterboard)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make nearfield:default
+
+## Bootloader
+
+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 `QK_BOOT` 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/nearfield/rules.mk b/keyboards/cannonkeys/nearfield/rules.mk
new file mode 100755
index 0000000000..476cf49f27
--- /dev/null
+++ b/keyboards/cannonkeys/nearfield/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/cannonkeys/obliterated75/config.h b/keyboards/cannonkeys/obliterated75/config.h
index aef5a3e374..07acff7cc9 100644
--- a/keyboards/cannonkeys/obliterated75/config.h
+++ b/keyboards/cannonkeys/obliterated75/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x0B75
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Obliterated75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
diff --git a/keyboards/cannonkeys/obliterated75/info.json b/keyboards/cannonkeys/obliterated75/info.json
index 51052fce19..beda41b9a0 100644
--- a/keyboards/cannonkeys/obliterated75/info.json
+++ b/keyboards/cannonkeys/obliterated75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Obliterated75",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x0B75",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"x":0, "y":0}, {"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10.5, "y":0}, {"x":11.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"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}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"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}, {"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}, {"x":12.75, "y":3.25}, {"label":"Enter", "x":13.75, "y":3.25, "w":1.25}, {"x":15, "y":3.25}, {"x":0, "y":4.25, "w":1.25}, {"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}, {"x":14, "y":4.25}, {"x":15, "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":"Ctrl", "x":11.25, "y":5.25, "w":1.25}, {"x":13, "y":5.25}, {"x":14, "y":5.25}, {"x":15, "y":5.25}]
diff --git a/keyboards/cannonkeys/onyx/config.h b/keyboards/cannonkeys/onyx/config.h
index 2149520a5a..a07fdc9f2b 100644
--- a/keyboards/cannonkeys/onyx/config.h
+++ b/keyboards/cannonkeys/onyx/config.h
@@ -17,12 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Onyx
#define MATRIX_ROWS 5
#define MATRIX_COLS 19
diff --git a/keyboards/cannonkeys/onyx/info.json b/keyboards/cannonkeys/onyx/info.json
index 782056cda1..2b60c7f15f 100644
--- a/keyboards/cannonkeys/onyx/info.json
+++ b/keyboards/cannonkeys/onyx/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Onyx",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/cannonkeys/ortho48/config.h b/keyboards/cannonkeys/ortho48/config.h
index cc904a27a0..b11654dee9 100644
--- a/keyboards/cannonkeys/ortho48/config.h
+++ b/keyboards/cannonkeys/ortho48/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x4F48 // "O" 48
-#define DEVICE_VER 0x0001
-#define MANUFACTURER QMK
-#define PRODUCT Ortho48
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/cannonkeys/ortho48/info.json b/keyboards/cannonkeys/ortho48/info.json
index 1192482bce..66b1d1f50e 100644
--- a/keyboards/cannonkeys/ortho48/info.json
+++ b/keyboards/cannonkeys/ortho48/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ortho48",
+ "manufacturer": "CannonKeys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x4F48",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
diff --git a/keyboards/cannonkeys/ortho60/config.h b/keyboards/cannonkeys/ortho60/config.h
index 4e7db76b6b..e503e716fb 100644
--- a/keyboards/cannonkeys/ortho60/config.h
+++ b/keyboards/cannonkeys/ortho60/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x4F60 // "O" 60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER QMK
-#define PRODUCT Ortho60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
diff --git a/keyboards/cannonkeys/ortho60/info.json b/keyboards/cannonkeys/ortho60/info.json
index f799e2a4c0..1a4d036a69 100644
--- a/keyboards/cannonkeys/ortho60/info.json
+++ b/keyboards/cannonkeys/ortho60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ortho60",
+ "manufacturer": "CannonKeys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x4F60",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x12": {
"layout": [
diff --git a/keyboards/cannonkeys/ortho75/config.h b/keyboards/cannonkeys/ortho75/config.h
index 93fe02f536..1746da2b73 100644
--- a/keyboards/cannonkeys/ortho75/config.h
+++ b/keyboards/cannonkeys/ortho75/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6464
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Ortho75
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/cannonkeys/ortho75/info.json b/keyboards/cannonkeys/ortho75/info.json
index cb6ca4c242..3cf6f3e74e 100644
--- a/keyboards/cannonkeys/ortho75/info.json
+++ b/keyboards/cannonkeys/ortho75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ortho75",
+ "manufacturer": "CannonKeys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6464",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x15": {
"layout": [
diff --git a/keyboards/cannonkeys/ortho75/ortho75.c b/keyboards/cannonkeys/ortho75/ortho75.c
index 7c722d7156..58b7396a1b 100644
--- a/keyboards/cannonkeys/ortho75/ortho75.c
+++ b/keyboards/cannonkeys/ortho75/ortho75.c
@@ -5,47 +5,48 @@
uint8_t layer = 0;
-uint32_t layer_state_set_kb(uint32_t state) {
- state = layer_state_set_user(state);
- layer = biton32(state);
- return state;
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ state = layer_state_set_user(state);
+ layer = get_highest_layer(state);
+ return state;
}
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) return false;
- uint16_t mapped_code = 0;
- if (index == 0) {
- if (clockwise) {
- switch(layer){
- case 0:
- default:
- mapped_code = KC_VOLU;
- break;
- case 1:
- mapped_code = KC_MEDIA_NEXT_TRACK;
- break;
- case 2:
- mapped_code = KC_PGDN;
- break;
+ uint16_t mapped_code = 0;
+ if (index == 0) {
+ if (clockwise) {
+ switch (layer) {
+ case 0:
+ default:
+ mapped_code = KC_VOLU;
+ break;
+ case 1:
+ mapped_code = KC_MEDIA_NEXT_TRACK;
+ break;
+ case 2:
+ mapped_code = KC_PGDN;
+ break;
+ }
+ } else {
+ switch (layer) {
+ case 0:
+ default:
+ mapped_code = KC_VOLD;
+ break;
+ case 1:
+ mapped_code = KC_MEDIA_PREV_TRACK;
+ break;
+ case 2:
+ mapped_code = KC_PGUP;
+ break;
+ }
}
- } else {
- switch(layer){
- case 0:
- default:
- mapped_code = KC_VOLD;
- break;
- case 1:
- mapped_code = KC_MEDIA_PREV_TRACK;
- break;
- case 2:
- mapped_code = KC_PGUP;
- break;
+ uint16_t held_keycode_timer = timer_read();
+ register_code(mapped_code);
+ while (timer_elapsed(held_keycode_timer) < MEDIA_KEY_DELAY) { /* no-op */
}
+ unregister_code(mapped_code);
}
- uint16_t held_keycode_timer = timer_read();
- register_code(mapped_code);
- while (timer_elapsed(held_keycode_timer) < MEDIA_KEY_DELAY){ /* no-op */ }
- unregister_code(mapped_code);
- }
- return true;
+ return true;
}
diff --git a/keyboards/cannonkeys/practice60/config.h b/keyboards/cannonkeys/practice60/config.h
index 6937f5752a..179d1cafb5 100644
--- a/keyboards/cannonkeys/practice60/config.h
+++ b/keyboards/cannonkeys/practice60/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Practice 60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/cannonkeys/practice60/info.json b/keyboards/cannonkeys/practice60/info.json
index 2261494331..e84e2bb635 100644
--- a/keyboards/cannonkeys/practice60/info.json
+++ b/keyboards/cannonkeys/practice60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Practice 60",
+ "manufacturer": "CannonKeys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/cannonkeys/practice65/config.h b/keyboards/cannonkeys/practice65/config.h
index 343d4d5272..1692998eaa 100644
--- a/keyboards/cannonkeys/practice65/config.h
+++ b/keyboards/cannonkeys/practice65/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x6565
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Practice 65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/cannonkeys/practice65/info.json b/keyboards/cannonkeys/practice65/info.json
index fa2eff8e21..95fdd75190 100644
--- a/keyboards/cannonkeys/practice65/info.json
+++ b/keyboards/cannonkeys/practice65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Practice65",
+ "keyboard_name": "Practice 65",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x6565",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"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}, {"x":13, "y":0}, {"x":14, "y":0}, {"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}, {"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}, {"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}, {"x":14, "y":3}, {"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}, {"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/cannonkeys/rekt1800/config.h b/keyboards/cannonkeys/rekt1800/config.h
index 78cd623953..7e69838272 100644
--- a/keyboards/cannonkeys/rekt1800/config.h
+++ b/keyboards/cannonkeys/rekt1800/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x2377
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Rekt1800
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 19
diff --git a/keyboards/cannonkeys/rekt1800/info.json b/keyboards/cannonkeys/rekt1800/info.json
index 2ff238b396..7e9202a81d 100644
--- a/keyboards/cannonkeys/rekt1800/info.json
+++ b/keyboards/cannonkeys/rekt1800/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Rekt1800",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x2377",
+ "device_version": "0.0.1"
+ },
"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}, {"x":14, "y":0}, {"label":"PrtSc", "x":15.5, "y":0}, {"label":"Scroll Lock", "x":16.5, "y":0}, {"label":"Pause", "x":17.5, "y":0}, {"x":18.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}, {"x":13, "y":1.25}, {"x":14, "y":1.25}, {"label":"Insert", "x":15.5, "y":1.25}, {"label":"Home", "x":16.5, "y":1.25}, {"label":"PgUp", "x":17.5, "y":1.25}, {"x":18.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.5, "y":2.25}, {"label":"End", "x":16.5, "y":2.25}, {"label":"PgDn", "x":17.5, "y":2.25}, {"x":18.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}, {"x":12.75, "y":3.25}, {"label":"Enter", "x":13.75, "y":3.25, "w":1.25}, {"x":15.5, "y":3.25}, {"x":16.5, "y":3.25}, {"x":17.5, "y":3.25}, {"x":18.5, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"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":"\u2191", "x":14.25, "y":4.5}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25}, {"x":18.5, "y":4.25, "h":2}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.25}, {"label":"Alt", "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}, {"x":16.5, "y":5.25}, {"x":17.5, "y":5.25}]
diff --git a/keyboards/cannonkeys/sagittarius/config.h b/keyboards/cannonkeys/sagittarius/config.h
index dd8563df6b..8ba5b58891 100644
--- a/keyboards/cannonkeys/sagittarius/config.h
+++ b/keyboards/cannonkeys/sagittarius/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Sagittarius
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 16
diff --git a/keyboards/cannonkeys/sagittarius/info.json b/keyboards/cannonkeys/sagittarius/info.json
index 2cb5530447..64db3c34e0 100644
--- a/keyboards/cannonkeys/sagittarius/info.json
+++ b/keyboards/cannonkeys/sagittarius/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Sagittarius",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [{"x":0, "y":0}, {"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":10.75, "y":0}, {"x":11.75, "y":0}, {"x":12.75, "y":0}, {"x":13.75, "y":0}, {"x":14.75, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":17.75, "y":0}, {"x":0, "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":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}, {"x":17.75, "y":1, "w":1.5}, {"x":0, "y":2}, {"x":1.5, "y":2, "w":1.75}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "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":17, "y":2}, {"x":18, "y":2, "w":1.25}, {"x":19.25, "y":2}, {"x":0, "y":3}, {"x":1.5, "y":3, "w":1.25}, {"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":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":15, "y":3}, {"x":16, "y":3, "w":1.25}, {"x":17.25, "y":3}, {"x":18.25, "y":3}, {"x":1.5, "y":4, "w":1.25}, {"x":2.75, "y":4, "w":1.25}, {"x":5.5, "y":4}, {"x":6.5, "y":4, "w":2.25}, {"x":11, "y":4, "w":1.75}, {"x":12.75, "y":4}, {"x":16.25, "y":4}, {"x":17.25, "y":4}, {"x":18.25, "y":4}]
diff --git a/keyboards/cannonkeys/sagittarius/keymaps/default/keymap.c b/keyboards/cannonkeys/sagittarius/keymaps/default/keymap.c
index be0dec93ab..8125b76f66 100644
--- a/keyboards/cannonkeys/sagittarius/keymaps/default/keymap.c
+++ b/keyboards/cannonkeys/sagittarius/keymaps/default/keymap.c
@@ -31,8 +31,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_default(
KC_PGUP, 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_PGDN, KC_TAB, KC_Q, KC_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_NUBS, KC_ENT, KC_ENT,
- KC_END, 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_RSFT,
+ 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_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, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, MO(_FN1), KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT
),
diff --git a/keyboards/cannonkeys/sagittarius/keymaps/via/keymap.c b/keyboards/cannonkeys/sagittarius/keymaps/via/keymap.c
index 495c4269ad..37bbe22991 100644
--- a/keyboards/cannonkeys/sagittarius/keymaps/via/keymap.c
+++ b/keyboards/cannonkeys/sagittarius/keymaps/via/keymap.c
@@ -30,8 +30,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_default(
KC_PGUP, 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_PGDN, KC_TAB, KC_Q, KC_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_NUBS, KC_ENT, KC_ENT,
- KC_END, 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_RSFT,
+ 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_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, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, MO(_FN1), KC_SPC, KC_SPC, KC_LEFT, KC_DOWN, KC_RGHT
),
diff --git a/keyboards/cannonkeys/satisfaction75/config.h b/keyboards/cannonkeys/satisfaction75/config.h
index 2a0ac91b2d..615ad1d056 100644
--- a/keyboards/cannonkeys/satisfaction75/config.h
+++ b/keyboards/cannonkeys/satisfaction75/config.h
@@ -17,19 +17,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* LSE clock */
#define STM32_LSECLK 32768
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x57F5
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Satisfaction75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
diff --git a/keyboards/cannonkeys/satisfaction75/info.json b/keyboards/cannonkeys/satisfaction75/info.json
new file mode 100644
index 0000000000..692715124d
--- /dev/null
+++ b/keyboards/cannonkeys/satisfaction75/info.json
@@ -0,0 +1,11 @@
+{
+ "keyboard_name": "Satisfaction75",
+ "manufacturer": "CannonKeys",
+ "url": "",
+ "maintainer": "Cannon Keys",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x57F5",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/cannonkeys/satisfaction75/keymaps/boy_314/keymap.c b/keyboards/cannonkeys/satisfaction75/keymaps/boy_314/keymap.c
index 1680f90dc9..38fdb8880e 100644
--- a/keyboards/cannonkeys/satisfaction75/keymaps/boy_314/keymap.c
+++ b/keyboards/cannonkeys/satisfaction75/keymaps/boy_314/keymap.c
@@ -29,7 +29,7 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_2x2(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
NK_TOGG, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, _______, OLED_TOGG,
- _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, _______, RESET, CLOCK_SET,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, _______, QK_BOOT, CLOCK_SET,
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______,
_______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
diff --git a/keyboards/cannonkeys/satisfaction75/prototype/info.json b/keyboards/cannonkeys/satisfaction75/prototype/info.json
index 29e727835a..9fad4142aa 100644
--- a/keyboards/cannonkeys/satisfaction75/prototype/info.json
+++ b/keyboards/cannonkeys/satisfaction75/prototype/info.json
@@ -1,7 +1,4 @@
{
- "keyboard_name": "Satisfaction75 prototype",
- "url": "",
- "maintainer": "Cannon Keys",
"layouts": {
"LAYOUT_default": {
"layout": [{"x":0, "y":0}, {"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "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.5, "y":1}, {"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.5, "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":15.5, "y":3.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":1.75}, {"x":14.25, "y":4.5}, {"x":15.5, "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}, {"x":11, "y":5.25}, {"x":12, "y":5.25}, {"x":13.25, "y":5.5}, {"x":14.25, "y":5.5}, {"x":15.25, "y":5.5}]
diff --git a/keyboards/cannonkeys/satisfaction75/rev1/info.json b/keyboards/cannonkeys/satisfaction75/rev1/info.json
index b0e1716602..15986435c5 100644
--- a/keyboards/cannonkeys/satisfaction75/rev1/info.json
+++ b/keyboards/cannonkeys/satisfaction75/rev1/info.json
@@ -1,7 +1,4 @@
{
- "keyboard_name": "Satisfaction75 rev1",
- "url": "",
- "maintainer": "Cannon Keys",
"layouts": {
"LAYOUT_default": {
"layout": [{"x":0, "y":0}, {"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":4.5, "y":0}, {"x":5.75, "y":0}, {"x":6.75, "y":0}, {"x":7.75, "y":0}, {"x":8.75, "y":0}, {"x":10, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "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.5, "y":1}, {"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.5, "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":15.5, "y":3.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":1.75}, {"x":14.25, "y":4.5}, {"x":15.5, "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}, {"x":11, "y":5.25}, {"x":12, "y":5.25}, {"x":13.25, "y":5.5}, {"x":14.25, "y":5.5}, {"x":15.25, "y":5.5}]
diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction75.c b/keyboards/cannonkeys/satisfaction75/satisfaction75.c
index bd7eaf1885..3cd52d5f23 100644
--- a/keyboards/cannonkeys/satisfaction75/satisfaction75.c
+++ b/keyboards/cannonkeys/satisfaction75/satisfaction75.c
@@ -240,7 +240,7 @@ void read_host_led_state(void) {
layer_state_t layer_state_set_kb(layer_state_t state) {
state = layer_state_set_user(state);
- layer = biton32(state);
+ layer = get_highest_layer(state);
oled_request_wakeup();
return state;
}
@@ -348,9 +348,9 @@ void custom_config_load(){
// Called from matrix_init_kb() if not VIA_ENABLE
void via_init_kb(void)
{
- // If the EEPROM has the magic, the data is good.
- // OK to load from EEPROM.
- if (via_eeprom_is_valid()) {
+ // This checks both an EEPROM reset (from bootmagic lite, keycodes)
+ // and also firmware build date (from via_eeprom_is_valid())
+ if (eeconfig_is_enabled()) {
custom_config_load();
} else {
#ifdef DYNAMIC_KEYMAP_ENABLE
diff --git a/keyboards/cannonkeys/satisfaction75/satisfaction_oled.c b/keyboards/cannonkeys/satisfaction75/satisfaction_oled.c
index fff8b65bd7..1e8465387c 100644
--- a/keyboards/cannonkeys/satisfaction75/satisfaction_oled.c
+++ b/keyboards/cannonkeys/satisfaction75/satisfaction_oled.c
@@ -145,7 +145,7 @@ static char* get_time(void) {
hour = 12;
}
- static char time_str[8] = "";
+ static char time_str[11] = "";
sprintf(time_str, "%02d:%02d%s", hour, minute, is_pm ? "pm" : "am");
return time_str;
@@ -162,7 +162,7 @@ static char* get_date(void) {
day = day_config;
}
- static char date_str[11] = "";
+ static char date_str[15] = "";
sprintf(date_str, "%04d-%02d-%02d", year, month, day);
return date_str;
diff --git a/keyboards/cannonkeys/savage65/config.h b/keyboards/cannonkeys/savage65/config.h
index 049574c532..77efcc2db5 100644
--- a/keyboards/cannonkeys/savage65/config.h
+++ b/keyboards/cannonkeys/savage65/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x5A65
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Savage65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/cannonkeys/savage65/info.json b/keyboards/cannonkeys/savage65/info.json
index a3c8574b13..1fb0e0c58e 100644
--- a/keyboards/cannonkeys/savage65/info.json
+++ b/keyboards/cannonkeys/savage65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Savage65",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x5A65",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"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}, {"x":13, "y":0}, {"x":14, "y":0}, {"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}, {"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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"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}, {"x":14, "y":3}, {"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":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
diff --git a/keyboards/cannonkeys/tmov2/config.h b/keyboards/cannonkeys/tmov2/config.h
index 821c9b7b5d..f7f867e013 100644
--- a/keyboards/cannonkeys/tmov2/config.h
+++ b/keyboards/cannonkeys/tmov2/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x70F2
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT TMOv2
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 16
diff --git a/keyboards/cannonkeys/tmov2/info.json b/keyboards/cannonkeys/tmov2/info.json
index 6e157d4bd7..4552b612d0 100644
--- a/keyboards/cannonkeys/tmov2/info.json
+++ b/keyboards/cannonkeys/tmov2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "TMOv2",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x70F2",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [{"x":0, "y":0}, {"label":"Tab", "x":1.25, "y":0, "w":1.5}, {"label":"Q", "x":2.75, "y":0}, {"label":"W", "x":3.75, "y":0}, {"label":"E", "x":4.75, "y":0}, {"label":"R", "x":5.75, "y":0}, {"label":"T", "x":6.75, "y":0}, {"label":"Y", "x":7.75, "y":0}, {"label":"U", "x":8.75, "y":0}, {"label":"I", "x":9.75, "y":0}, {"label":"O", "x":10.75, "y":0}, {"label":"P", "x":11.75, "y":0}, {"label":"{", "x":12.75, "y":0}, {"label":"}", "x":13.75, "y":0}, {"label":"Backspace", "x":14.75, "y":0}, {"x":0, "y":1}, {"label":"Caps Lock", "x":1.25, "y":1, "w":1.75}, {"label":"A", "x":3, "y":1}, {"label":"S", "x":4, "y":1}, {"label":"D", "x":5, "y":1}, {"label":"F", "x":6, "y":1}, {"label":"G", "x":7, "y":1}, {"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":":", "x":12, "y":1}, {"label":"\"", "x":13, "y":1}, {"label":"Enter", "x":14, "y":1, "w":1.75}, {"x":0, "y":2}, {"label":"Shift", "x":1.25, "y":2, "w":1.25}, {"label":"ISO \\", "x":2.5, "y":2}, {"label":"Z", "x":3.5, "y":2}, {"label":"X", "x":4.5, "y":2}, {"label":"C", "x":5.5, "y":2}, {"label":"V", "x":6.5, "y":2}, {"label":"B", "x":7.5, "y":2}, {"label":"N", "x":8.5, "y":2}, {"label":"M", "x":9.5, "y":2}, {"label":"<", "x":10.5, "y":2}, {"label":">", "x":11.5, "y":2}, {"label":"?", "x":12.5, "y":2}, {"label":"Shift", "x":13.5, "y":2, "w":1.25}, {"x":14.75, "y":2}, {"x":0, "y":3}, {"label":"Win", "x":3.25, "y":3}, {"label":"Alt", "x":4.25, "y":3, "w":1.5}, {"x":5.75, "y":3, "w":2.25}, {"x":8, "y":3, "w":2.75}, {"label":"Alt", "x":10.75, "y":3, "w":1.5}, {"label":"Menu", "x":12.25, "y":3}]
diff --git a/keyboards/cannonkeys/tmov2/keymaps/brandonschlack/keymap.c b/keyboards/cannonkeys/tmov2/keymaps/brandonschlack/keymap.c
index 1d0cdf4f09..ff635b2d80 100644
--- a/keyboards/cannonkeys/tmov2/keymaps/brandonschlack/keymap.c
+++ b/keyboards/cannonkeys/tmov2/keymaps/brandonschlack/keymap.c
@@ -157,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └───┴┴┴┴┴┴┴┴┴┴┴───┴─────┴────────┴──────────┴─────┴───┴┴┴┴┴┴┴┴┴┴┘
*/
[_ADJUST] = LAYOUT_default( \
- TG_BASE, QM_MAKE, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ TG_BASE, QM_MAKE, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
TG_REDR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
TG_NAV, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
TG_MOUS, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/cannonkeys/tsukuyomi/config.h b/keyboards/cannonkeys/tsukuyomi/config.h
index 51411c5241..e26324180f 100644
--- a/keyboards/cannonkeys/tsukuyomi/config.h
+++ b/keyboards/cannonkeys/tsukuyomi/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Tsukuyomi
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
diff --git a/keyboards/cannonkeys/tsukuyomi/info.json b/keyboards/cannonkeys/tsukuyomi/info.json
index 297aca7397..1a4e74539a 100644
--- a/keyboards/cannonkeys/tsukuyomi/info.json
+++ b/keyboards/cannonkeys/tsukuyomi/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Tsukuyomi",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [{"label":"Esc", "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":8.25, "y":0}, {"label":"*", "x":9.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}, {"x":14.25, "y":0}, {"x":15.25, "y":0}, {"x":16.25, "y":0}, {"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":7.75, "y":1}, {"label":"U", "x":8.75, "y":1}, {"label":"I", "x":9.75, "y":1}, {"label":"O", "x":10.75, "y":1}, {"label":"P", "x":11.75, "y":1}, {"label":"{", "x":12.75, "y":1}, {"label":"}", "x":13.75, "y":1}, {"label":"|", "x":14.75, "y":1, "w":1.5}, {"x":16.25, "y":1}, {"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":8, "y":2}, {"label":"J", "x":9, "y":2}, {"label":"K", "x":10, "y":2}, {"label":"L", "x":11, "y":2}, {"label":":", "x":12, "y":2}, {"label":"\"", "x":13, "y":2}, {"x":14, "y":2}, {"label":"Enter", "x":15, "y":2, "w":1.25}, {"x":16.25, "y":2}, {"x":0, "y":3}, {"x":1.25, "y":3, "w":1.25}, {"x":2.5, "y":3}, {"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":"N", "x":8.5, "y":3}, {"label":"M", "x":9.5, "y":3}, {"label":"<", "x":10.5, "y":3}, {"label":">", "x":11.5, "y":3}, {"label":"?", "x":12.5, "y":3}, {"label":"Shift", "x":13.5, "y":3, "w":1.75}, {"x":15.25, "y":3}, {"x":16.25, "y":3}, {"x":0, "y":4}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.25}, {"label":"Win", "x":2.5, "y":4, "w":1.25}, {"label":"Alt", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":6.25}, {"label":"Alt", "x":11.25, "y":4, "w":1.25}, {"label":"Ctrl", "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/cannonkeys/vector/info.json b/keyboards/cannonkeys/vector/info.json
new file mode 100644
index 0000000000..1247fa3903
--- /dev/null
+++ b/keyboards/cannonkeys/vector/info.json
@@ -0,0 +1,35 @@
+{
+ "manufacturer": "CannonKeys",
+ "keyboard_name": "Vector",
+ "maintainer": "awkannan",
+ "bootloader": "stm32-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["C13", "C15", "B13", "B12", "B11", "B10", "B2", "B1", "B0", "A7", "A6", "A5", "A4", "A3"],
+ "rows": ["C14", "A1", "B14", "B15", "A8"]
+ },
+ "indicators": {
+ "caps_lock": "B3",
+ "on_state": 0
+ },
+ "processor": "STM32F072",
+ "url": "",
+ "usb": {
+ "device_version": "1.0.0",
+ "vid": "0xCA04",
+ "pid": "0x000C"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "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": [2,12], "x":14, "y":0}, {"matrix": [1,0], "x":0, "y":1, "w":1.5}, {"matrix": [1,1], "x":1.5, "y":1}, {"matrix": [1,2], "x":2.5, "y":1}, {"matrix": [1,3], "x":3.5, "y":1}, {"matrix": [1,4], "x":4.5, "y":1}, {"matrix": [1,5], "x":5.5, "y":1}, {"matrix": [1,6], "x":6.5, "y":1}, {"matrix": [1,7], "x":7.5, "y":1}, {"matrix": [1,8], "x":8.5, "y":1}, {"matrix": [1,9], "x":9.5, "y":1}, {"matrix": [1,10], "x":10.5, "y":1}, {"matrix": [1,11], "x":11.5, "y":1}, {"matrix": [1,12], "x":12.5, "y":1}, {"matrix": [1,13], "x":13.5, "y":1, "w":1.5}, {"matrix": [2,0], "x":0, "y":2, "w":1.75}, {"matrix": [2,1], "x":1.75, "y":2}, {"matrix": [2,2], "x":2.75, "y":2}, {"matrix": [2,3], "x":3.75, "y":2}, {"matrix": [2,4], "x":4.75, "y":2}, {"matrix": [2,5], "x":5.75, "y":2}, {"matrix": [2,6], "x":6.75, "y":2}, {"matrix": [2,7], "x":7.75, "y":2}, {"matrix": [2,8], "x":8.75, "y":2}, {"matrix": [2,9], "x":9.75, "y":2}, {"matrix": [2,10], "x":10.75, "y":2}, {"matrix": [2,11], "x":11.75, "y":2}, {"matrix": [2,13], "x":12.75, "y":2, "w":2.25}, {"matrix": [3,0], "x":0, "y":3, "w":1.25}, {"matrix": [3,1], "x":1.25, "y":3}, {"matrix": [3,2], "x":2.25, "y":3}, {"matrix": [3,3], "x":3.25, "y":3}, {"matrix": [3,4], "x":4.25, "y":3}, {"matrix": [3,5], "x":5.25, "y":3}, {"matrix": [3,6], "x":6.25, "y":3}, {"matrix": [3,7], "x":7.25, "y":3}, {"matrix": [3,8], "x":8.25, "y":3}, {"matrix": [3,9], "x":9.25, "y":3}, {"matrix": [3,10], "x":10.25, "y":3}, {"matrix": [3,11], "x":11.25, "y":3}, {"matrix": [3,12], "x":12.25, "y":3, "w":1.75}, {"matrix": [3,13], "x":14, "y":3}, {"matrix": [4,0], "x":0, "y":4, "w":1.5}, {"matrix": [4,1], "x":1.5, "y":4}, {"matrix": [4,2], "x":2.5, "y":4, "w":1.5}, {"matrix": [4,5], "x":4, "y":4, "w":3}, {"matrix": [4,7], "x":7, "y":4}, {"matrix": [4,9], "x":8, "y":4, "w":3}, {"matrix": [4,11], "x":11, "y":4, "w":1.5}, {"matrix": [4,12], "x":12.5, "y":4}, {"matrix": [4,13], "x":13.5, "y":4, "w":1.5}]
+ }
+ }
+}
diff --git a/keyboards/cannonkeys/vector/keymaps/default/keymap.c b/keyboards/cannonkeys/vector/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7def0bb31d
--- /dev/null
+++ b/keyboards/cannonkeys/vector/keymaps/default/keymap.c
@@ -0,0 +1,45 @@
+// Copyright 2022 Andrew Kannan (@awkannan)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_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_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_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_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, KC_DEL, KC_DEL,
+ RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_BRTG, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, RESET
+ ),
+
+ [_FN2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cannonkeys/vector/keymaps/via/keymap.c b/keyboards/cannonkeys/vector/keymaps/via/keymap.c
new file mode 100644
index 0000000000..28b3492f0e
--- /dev/null
+++ b/keyboards/cannonkeys/vector/keymaps/via/keymap.c
@@ -0,0 +1,45 @@
+// Copyright 2022 Andrew Kannan (@awkannan)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_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_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_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_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, KC_DEL, KC_DEL,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, RESET
+ ),
+
+ [_FN2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cannonkeys/vector/keymaps/via/rules.mk b/keyboards/cannonkeys/vector/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/cannonkeys/vector/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/cannonkeys/vector/readme.md b/keyboards/cannonkeys/vector/readme.md
new file mode 100644
index 0000000000..1abbb25819
--- /dev/null
+++ b/keyboards/cannonkeys/vector/readme.md
@@ -0,0 +1,25 @@
+# Vector
+
+*A PCB mount 60% designed by ai03*
+
+* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan)
+* Hardware Supported: STM32F072CBT6
+* Hardware Availability: [CannonKeys](https://cannonkeys.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cannonkeys/vector:default
+
+Flashing example for this keyboard:
+
+ make cannonkeys/vector: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**: Swap the boot switch on the back of the PCB to "1" and hit the reset button
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/cannonkeys/vector/rules.mk b/keyboards/cannonkeys/vector/rules.mk
new file mode 100644
index 0000000000..0ab54aaaf7
--- /dev/null
+++ b/keyboards/cannonkeys/vector/rules.mk
@@ -0,0 +1,2 @@
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF
diff --git a/keyboards/cannonkeys/vicious40/config.h b/keyboards/cannonkeys/vicious40/config.h
index c4f8c26235..4b8786163d 100644
--- a/keyboards/cannonkeys/vicious40/config.h
+++ b/keyboards/cannonkeys/vicious40/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA04
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CannonKeys
-#define PRODUCT Vicious40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/cannonkeys/vicious40/info.json b/keyboards/cannonkeys/vicious40/info.json
index 1652e9d3e6..db6081773b 100644
--- a/keyboards/cannonkeys/vicious40/info.json
+++ b/keyboards/cannonkeys/vicious40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Vicious40",
+ "manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xCA04",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"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":"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":"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":"Up", "x":10.75, "y":2}, {"label":"?", "x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Super", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Space", "x":3, "y":3, "w":2.25}, {"label":"Space", "x":5.25, "y":3, "w":1.25}, {"label":"Space", "x":6.5, "y":3, "w":2.75}, {"label":"Left", "x":9.75, "y":3}, {"label":"Down", "x":10.75, "y":3}, {"label":"Right", "x":11.75, "y":3}]
diff --git a/keyboards/cantor/info.json b/keyboards/cantor/info.json
index cd11c4eb94..6d599f4300 100644
--- a/keyboards/cantor/info.json
+++ b/keyboards/cantor/info.json
@@ -12,6 +12,7 @@
"nkro": true
},
"processor": "STM32F401",
+ "board": "BLACKPILL_STM32_F401",
"url": "https://github.com/diepala/cantor",
"usb": {
"device_version": "1.0.0",
diff --git a/keyboards/cantor/keymaps/zeromist/keymap.c b/keyboards/cantor/keymaps/zeromist/keymap.c
new file mode 100644
index 0000000000..1c4f56a727
--- /dev/null
+++ b/keyboards/cantor/keymaps/zeromist/keymap.c
@@ -0,0 +1,107 @@
+// Copyright 2022 Diego Palacios (@diepala)
+// SPDX-License-Identifier: GPL-2.0
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┠┌───┬───┬───┬───┬───┬───â”
+ * │Tab│ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │Bsp│
+ * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
+ * │ESC│ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ ' │
+ * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
+ * │Sft│ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │Sft│
+ * └───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┘
+ * ┌────┠┌───â”
+ * │LCTL├───────┠┌─────┤Alt│
+ * └────┤GUI/Bsp├───────┠┌───┤TO(1)├───┘
+ * └───────┤ALT/ENT│ │SPC├─────┘
+ * └───────┘ └───┘
+ */
+ [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_ESCAPE, 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_LCTL, MT(MOD_LGUI, KC_BSPC), MT(MOD_LALT, KC_ENT), KC_SPC, TO(1), KC_RALT
+ //-------------------------------------------------------------------------- ---------------------------------------------------------------------------------
+ ),
+ /*
+ * ┌───┬───┬───┬───┬───┬───┠┌───┬───┬───┬───┬───┬───â”
+ * │`~ │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │Bsp│
+ * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
+ * │ │ ! │ @ │ # │ $ │ % │ │ ^ │ & │ * │ ( │ ) │ | │
+ * ├───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┤
+ * │Sft│ += │ -_│ + │ { │ } │ │ [ │ ] │ ; │ : │ \ │ │
+ * └───┴───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┴───┘
+ * ┌────────┠┌─────â”
+ * │ MLCKSCN ├─────┠┌────┤TO(3)│
+ * └────────┤TO(0)├───┠┌───┤TO(2)├─────┘
+ * └─────┤ < │ │ > ├────┘
+ * └───┘ └───┘
+ */
+ [1] = LAYOUT_split_3x6_3(
+ //-------------------------------------------------------------- ---------------------------------------------------------------------------------
+ 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_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
+ //-------------------------------------------------------------- ---------------------------------------------------------------------------------
+ KC_LSFT, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, KC_RSFT,
+ //-------------------------------------------------------------- ---------------------------------------------------------------------------------
+ KC_TRNS, TO(0), KC_LT, KC_GT, TO(2), TO(3)
+ //-------------------------------------------------------------- ---------------------------------------------------------------------------------
+ ),
+ /*
+ * ┌────┬──────┬──────┬──────┬──────────┬──────┠┌──────┬──────┬──────┬───────┬──────┬───â”
+ * │MSTP│ Play │ PRVS │ Next │ │ CAPS │ │ PgDn │ PgUp │ INS │ Print │ │Bsp│
+ * ├────┼──────┼──────┼───────┼─────────┼──────┤ ├──────┼──────┼──────┼───────┼──────┼───┤
+ * │ │ HOME │ END │ LCTRL+C │ LCTRL+V │ │ │ Left │ Down │ Up │ Right │ Del │ │
+ * ├────┼──────┼──────┼───────┼────────┼──────┤ ├──────┼──────┼──────┼───────┼──────┼───┤
+ * │Sft │ UNDO │ CUT │ COPY │ PASTE │ RApp │ │ Vol- │ Vol+ │ Mute │ │ RGui │ │
+ * └────┴──────┴──────┴──────┴───────┴──────┘ └──────┴──────┴──────┴───────┴──────┴───┘
+ * ┌─────┠┌─────â”
+ * │LCTRL├─────┠┌─────┤TO(3)│
+ * └─────┤TO(0)├───┠┌───┤TO(0)├─────┘
+ * └─────┤ALT│ │SPC├─────┘
+ * └───┘ └───┘
+ */
+ [2] = LAYOUT_split_3x6_3(
+ //-------------------------------------------------------------- ---------------------------------------------------------------------------------
+ KC_MSTP, KC_MPLY, KC_MPRV, KC_MNXT, KC_NO, KC_CAPS, KC_PGDOWN, KC_PGUP, KC_INS, KC_PSCR, KC_NO, KC_BSPC,
+ //-------------------------------------------------------------- ---------------------------------------------------------------------------------
+ KC_NO, KC_HOME, KC_END, C(KC_C), C(KC_V), KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, KC_NO,
+ //-------------------------------------------------------------- ---------------------------------------------------------------------------------
+ KC_TAB, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_APP, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, KC_RSFT,
+ //-------------------------------------------------------------- ---------------------------------------------------------------------------------
+ KC_LCTL, TO(0), KC_LALT, KC_TRNS, KC_TRNS, TO(3)
+ //-------------------------------------------------------------- ---------------------------------------------------------------------------------
+ ),
+ /*
+ * ┌──┬────┬────┬────┬────┬────┠┌────┬────┬────┬────┬─────┬─────â”
+ * │ │ F1 │ F2 │ F3 │ F4 │ F5 │ │ F6 │ F7 │ F8 │ F9 │ F10 │ F11 │
+ * ├──┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼─────┼─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ F12 │
+ * ├──┼────┼────┼────┼────┼────┤ ├────┼────┼────┼────┼─────┼─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * └──┴────┴────┴────┴────┴────┘ └────┴────┴────┴────┴─────┴─────┘
+ * ┌───┠┌───â”
+ * │ ├─────┠┌─────┤ │
+ * └───┤TO(0)├───┠┌───┤ ├───┘
+ * └─────┤ENT│ │ ├─────┘
+ * └───┘ └───┘
+ */
+ [3] = LAYOUT_split_3x6_3(
+ //-------------------------------------------------------------- ---------------------------------------------------------------------------------
+ KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ //-------------------------------------------------------------- ---------------------------------------------------------------------------------
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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, TO(0), KC_NO, KC_NO, KC_NO, KC_NO
+ //-------------------------------------------------------------- ---------------------------------------------------------------------------------
+ )
+};
diff --git a/keyboards/cantor/readme.md b/keyboards/cantor/readme.md
index 90045eb2be..9a45d7befc 100644
--- a/keyboards/cantor/readme.md
+++ b/keyboards/cantor/readme.md
@@ -27,4 +27,4 @@ Enter the bootloader in 3 ways:
* Press and hold the BOOT0 button.
* Press and release the NRST button.
* Release the BOOT0 button.
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/capsunlocked/cu24/config.h b/keyboards/capsunlocked/cu24/config.h
index cd5e0ccd39..552a991af8 100644
--- a/keyboards/capsunlocked/cu24/config.h
+++ b/keyboards/capsunlocked/cu24/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar/CapsUnlocked
-#define PRODUCT CU24
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { E6, F5, B4, B6, C6, C7 }
#define MATRIX_COL_PINS { F0, F1, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/capsunlocked/cu24/info.json b/keyboards/capsunlocked/cu24/info.json
index 532bc13bee..e9a77c119a 100644
--- a/keyboards/capsunlocked/cu24/info.json
+++ b/keyboards/capsunlocked/cu24/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "cu24",
+ "keyboard_name": "CU24",
+ "manufacturer": "Yiancar/CapsUnlocked",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_grid": {
"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}, {"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}, {"x":1, "y":4}, {"label":".", "x":2, "y":4}, {"x":3, "y":4}, {"x":0, "y":5}, {"x":1, "y":5}, {"x":2, "y":5}, {"x":3, "y":5}]
diff --git a/keyboards/capsunlocked/cu65/config.h b/keyboards/capsunlocked/cu65/config.h
index 79ff7435bd..bf2055cb50 100644
--- a/keyboards/capsunlocked/cu65/config.h
+++ b/keyboards/capsunlocked/cu65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4355
-#define PRODUCT_ID 0x0065
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CapsUnlocked
-#define PRODUCT CU65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F1, F4, F5, F6, D3 }
#define MATRIX_COL_PINS { D6, D7, D4, B4, B5, B6, C6, D5, C7, F0, E6, B0, B1, B7, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/capsunlocked/cu65/info.json b/keyboards/capsunlocked/cu65/info.json
index 0e5390ae5e..8217dde0ea 100644
--- a/keyboards/capsunlocked/cu65/info.json
+++ b/keyboards/capsunlocked/cu65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "CU65",
+ "manufacturer": "CapsUnlocked",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4355",
+ "pid": "0x0065",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/capsunlocked/cu65/keymaps/iso_split_bs/keymap.c b/keyboards/capsunlocked/cu65/keymaps/iso_split_bs/keymap.c
index 2de0de76b4..6049fa7433 100644
--- a/keyboards/capsunlocked/cu65/keymaps/iso_split_bs/keymap.c
+++ b/keyboards/capsunlocked/cu65/keymaps/iso_split_bs/keymap.c
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* │ │ │ │ │ │ │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
*/
- 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, _______, _______, _______,
+ QK_BOOT, 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/capsunlocked/cu7/config.h b/keyboards/capsunlocked/cu7/config.h
index cc22be0f02..3f93aae5e8 100644
--- a/keyboards/capsunlocked/cu7/config.h
+++ b/keyboards/capsunlocked/cu7/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4355
-#define PRODUCT_ID 0x0007
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CapsUnlocked
-#define PRODUCT CU7
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -47,7 +40,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D7, F0, F6 }
#define MATRIX_COL_PINS { F5, F7, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/capsunlocked/cu7/info.json b/keyboards/capsunlocked/cu7/info.json
index 9d1d84354d..b9d9671b97 100644
--- a/keyboards/capsunlocked/cu7/info.json
+++ b/keyboards/capsunlocked/cu7/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "CU7",
+ "manufacturer": "CapsUnlocked",
"url": "https://caps-unlocked.com/cu7/",
"maintainer": "rys",
+ "usb": {
+ "vid": "0x4355",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/capsunlocked/cu75/config.h b/keyboards/capsunlocked/cu75/config.h
index 8ad8feb24a..27c1dd4e2f 100644
--- a/keyboards/capsunlocked/cu75/config.h
+++ b/keyboards/capsunlocked/cu75/config.h
@@ -19,18 +19,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6062
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LFKeyboards/CapsUnlocked
-#define PRODUCT CU75
-
#define DIODE_DIRECTION COL2ROW
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS {F1, B7, B3, D2, D3, B2}
#define MATRIX_COL_PINS {F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, B1, B0, F0}
-#define UNUSED_PINS {}
#define RGB_DI_PIN C7 // Have to set it to something to get the ws2812 code to compile
#define RGBLED_NUM 24 // Number of LEDs
diff --git a/keyboards/capsunlocked/cu75/cu75.c b/keyboards/capsunlocked/cu75/cu75.c
index e52edd90fa..690d72055a 100644
--- a/keyboards/capsunlocked/cu75/cu75.c
+++ b/keyboards/capsunlocked/cu75/cu75.c
@@ -91,7 +91,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record)
if (click_toggle && record->event.pressed){
click(click_hz, click_time);
}
- if (keycode == RESET) {
+ if (keycode == QK_BOOT) {
reset_keyboard_kb();
} else {
}
diff --git a/keyboards/capsunlocked/cu75/info.json b/keyboards/capsunlocked/cu75/info.json
index 07812ddb58..3ab7427b6c 100644
--- a/keyboards/capsunlocked/cu75/info.json
+++ b/keyboards/capsunlocked/cu75/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "cu75",
+ "keyboard_name": "CU75",
+ "manufacturer": "LFKeyboards/CapsUnlocked",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6062",
+ "device_version": "0.0.1"
+ },
"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":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "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", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "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":"Page Up", "x":15, "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":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"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":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":2.75}, {"x":6.5, "y":5}, {"x":7.5, "y":5, "w":2.5}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}]
diff --git a/keyboards/capsunlocked/cu80/v1/config.h b/keyboards/capsunlocked/cu80/v1/config.h
index d5123cdbad..949fca07df 100644
--- a/keyboards/capsunlocked/cu80/v1/config.h
+++ b/keyboards/capsunlocked/cu80/v1/config.h
@@ -19,20 +19,12 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER CapsUnlocked
-#define PRODUCT CU80
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
#define MATRIX_ROW_PINS { B1, B5, B4, F7, D7, D6 }
#define MATRIX_COL_PINS { F6, F5, F4, F1, F0, C7, C6, B6, B0, E6, B7, B3, B2, D2, D3, D5, D4}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/capsunlocked/cu80/v1/info.json b/keyboards/capsunlocked/cu80/v1/info.json
index 937dfd8b5a..df4a67d243 100644
--- a/keyboards/capsunlocked/cu80/v1/info.json
+++ b/keyboards/capsunlocked/cu80/v1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "CU80",
+ "manufacturer": "CapsUnlocked",
"url": "https://caps-unlocked.com/group-buy-cu80/",
"maintainer": "aHolland909",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"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":"\u00ac", "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":"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":"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":"~", "x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, {"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":"\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":"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":"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/capsunlocked/cu80/v2_ansi/base/info.json b/keyboards/capsunlocked/cu80/v2_ansi/base/info.json
new file mode 100644
index 0000000000..9dc24b5e40
--- /dev/null
+++ b/keyboards/capsunlocked/cu80/v2_ansi/base/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "CU80 v2 ANSI",
+ "usb": {
+ "pid": "0x0081"
+ }
+}
diff --git a/keyboards/yosino58/.noci b/keyboards/capsunlocked/cu80/v2_ansi/base/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/yosino58/.noci
+++ b/keyboards/capsunlocked/cu80/v2_ansi/base/rules.mk
diff --git a/keyboards/capsunlocked/cu80/v2_ansi/info.json b/keyboards/capsunlocked/cu80/v2_ansi/info.json
index 7615d9f029..96234185f6 100644
--- a/keyboards/capsunlocked/cu80/v2_ansi/info.json
+++ b/keyboards/capsunlocked/cu80/v2_ansi/info.json
@@ -1,6 +1,5 @@
{
"manufacturer": "CapsUnlocked",
- "keyboard_name": "CapsUnlocked CU80 v2 ANSI",
"maintainer": "rys / maz0r",
"bootloader": "atmel-dfu",
"debounce": 5,
@@ -38,7 +37,6 @@
"url": "https://caps-unlocked.com/cu80-round-2/",
"usb": {
"device_version": "0.0.1",
- "pid": "0x0081",
"vid": "0x4355"
},
"community_layouts": ["tkl_ansi"],
diff --git a/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h b/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h
index 00a05ad7da..5789266397 100644
--- a/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h
+++ b/keyboards/capsunlocked/cu80/v2_ansi/rgb/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* enable RGB matrix */
#define CU80_RGB
-/* update the product for RGB Matrix variant in VIA/VIAL and Remap-keys.app */
-#undef PRODUCT
-#define PRODUCT CU80 v2 ANSI RGB
-
/* moved to RGB specific */
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
diff --git a/keyboards/capsunlocked/cu80/v2_ansi/rgb/info.json b/keyboards/capsunlocked/cu80/v2_ansi/rgb/info.json
index f97e203645..52676aa041 100644
--- a/keyboards/capsunlocked/cu80/v2_ansi/rgb/info.json
+++ b/keyboards/capsunlocked/cu80/v2_ansi/rgb/info.json
@@ -1,4 +1,5 @@
{
+ "keyboard_name": "CU80 v2 ANSI RGB",
"features": {
"rgblight": false
},
diff --git a/keyboards/capsunlocked/cu80/v2_ansi/rules.mk b/keyboards/capsunlocked/cu80/v2_ansi/rules.mk
index 7c5554a087..e96dd72928 100644
--- a/keyboards/capsunlocked/cu80/v2_ansi/rules.mk
+++ b/keyboards/capsunlocked/cu80/v2_ansi/rules.mk
@@ -1,10 +1,3 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
-
-# Build Options
-# change yes to no to disable
-#
NO_USB_STARTUP_CHECK = yes # resolve possible sleep issue
+
+DEFAULT_FOLDER = capsunlocked/cu80/v2_ansi/base
diff --git a/keyboards/capsunlocked/cu80/v2_iso/base/info.json b/keyboards/capsunlocked/cu80/v2_iso/base/info.json
new file mode 100644
index 0000000000..636e6e2276
--- /dev/null
+++ b/keyboards/capsunlocked/cu80/v2_iso/base/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "CU80 v2 ISO",
+ "usb": {
+ "pid": "0x0080"
+ }
+}
diff --git a/keyboards/yosino58/rev1/.noci b/keyboards/capsunlocked/cu80/v2_iso/base/rules.mk
index e69de29bb2..e69de29bb2 100644
--- a/keyboards/yosino58/rev1/.noci
+++ b/keyboards/capsunlocked/cu80/v2_iso/base/rules.mk
diff --git a/keyboards/capsunlocked/cu80/v2_iso/info.json b/keyboards/capsunlocked/cu80/v2_iso/info.json
index 43f074f170..61e033c59f 100644
--- a/keyboards/capsunlocked/cu80/v2_iso/info.json
+++ b/keyboards/capsunlocked/cu80/v2_iso/info.json
@@ -1,6 +1,5 @@
{
"manufacturer": "CapsUnlocked",
- "keyboard_name": "CapsUnlocked CU80 v2 ISO",
"maintainer": "rys / maz0r",
"bootloader": "atmel-dfu",
"debounce": 5,
@@ -38,7 +37,6 @@
"url": "https://caps-unlocked.com/cu80-round-2/",
"usb": {
"device_version": "0.0.1",
- "pid": "0x0080",
"vid": "0x4355"
},
"community_layouts": ["tkl_iso"],
diff --git a/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h b/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h
index dbe9143b8b..41dbede767 100644
--- a/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h
+++ b/keyboards/capsunlocked/cu80/v2_iso/rgb/config.h
@@ -18,10 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* enable RGB matrix */
#define CU80_RGB
-/* update the product for RGB Matrix variant in VIA/VIAL and Remap-keys.app */
-#undef PRODUCT
-#define PRODUCT CU80 v2 ISO RGB
-
/* moved to RGB specific */
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
diff --git a/keyboards/capsunlocked/cu80/v2_iso/rgb/info.json b/keyboards/capsunlocked/cu80/v2_iso/rgb/info.json
index 36748237c5..e04971c21a 100644
--- a/keyboards/capsunlocked/cu80/v2_iso/rgb/info.json
+++ b/keyboards/capsunlocked/cu80/v2_iso/rgb/info.json
@@ -1,4 +1,5 @@
{
+ "keyboard_name": "CU80 v2 ISO RGB",
"features": {
"rgblight": false
},
diff --git a/keyboards/capsunlocked/cu80/v2_iso/rules.mk b/keyboards/capsunlocked/cu80/v2_iso/rules.mk
index 7c5554a087..c0feb35307 100644
--- a/keyboards/capsunlocked/cu80/v2_iso/rules.mk
+++ b/keyboards/capsunlocked/cu80/v2_iso/rules.mk
@@ -1,10 +1,3 @@
-# MCU name
-MCU = atmega32u4
-
-# Bootloader selection
-BOOTLOADER = atmel-dfu
-
-# Build Options
-# change yes to no to disable
-#
NO_USB_STARTUP_CHECK = yes # resolve possible sleep issue
+
+DEFAULT_FOLDER = capsunlocked/cu80/v2_iso/base
diff --git a/keyboards/carbo65/config.h b/keyboards/carbo65/config.h
index 8475b3b1bb..dfbd4db1ac 100644
--- a/keyboards/carbo65/config.h
+++ b/keyboards/carbo65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4336
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT Carbo65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -39,7 +32,7 @@ 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
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* Indicator LEDs */
diff --git a/keyboards/carbo65/info.json b/keyboards/carbo65/info.json
index 7adfc8c04b..354ed0e767 100644
--- a/keyboards/carbo65/info.json
+++ b/keyboards/carbo65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Carbo65",
+ "manufacturer": "Yiancar-Designs",
"url": "https://yiancar-designs.com",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4336",
+ "device_version": "0.0.1"
+ },
"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":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}]
diff --git a/keyboards/catch22/config.h b/keyboards/catch22/config.h
index 5a3154dc46..94be3c3451 100644
--- a/keyboards/catch22/config.h
+++ b/keyboards/catch22/config.h
@@ -18,13 +18,6 @@ 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 0xCA22
-#define DEVICE_VER 0x0001
-#define MANUFACTURER rockydbull
-#define PRODUCT Catch22 Hotswap Macropad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 5
@@ -32,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B6, B2, B3, B1, F7 }
#define MATRIX_COL_PINS { B5, B4, E6, D7, C6 }
-#define UNUSED_PINS { }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/catch22/info.json b/keyboards/catch22/info.json
index 94e2128536..c77a0f5394 100644
--- a/keyboards/catch22/info.json
+++ b/keyboards/catch22/info.json
@@ -1,5 +1,11 @@
{
- "keyboard_name": "catch22",
+ "keyboard_name": "Catch22 Hotswap Macropad",
+ "manufacturer": "rockydbull",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xCA22",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"A", "x":1, "y":0}, {"label":"B", "x":2, "y":0}, {"label":"C", "x":3, "y":0}, {"label":"D", "x":4, "y":0}, {"label":"E", "x":1, "y":1}, {"label":"F", "x":2, "y":1}, {"label":"G", "x":3, "y":1}, {"label":"H", "x":4, "y":1}, {"label":"I", "x":0, "y":2}, {"label":"J", "x":1, "y":2}, {"label":"K", "x":2, "y":2}, {"label":"L", "x":3, "y":2}, {"label":"M", "x":4, "y":2}, {"label":"1", "x":0, "y":3, "h":2}, {"label":"N", "x":1, "y":3}, {"label":"O", "x":2, "y":3}, {"label":"P", "x":3, "y":3}, {"label":"Q", "x":4, "y":3}, {"label":"R", "x":1, "y":4}, {"label":"S", "x":2, "y":4}, {"label":"T", "x":3, "y":4}, {"label":"U", "x":4, "y":4}]
diff --git a/keyboards/centromere/config.h b/keyboards/centromere/config.h
index 69af48c30f..1310866fbb 100644
--- a/keyboards/centromere/config.h
+++ b/keyboards/centromere/config.h
@@ -19,14 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Southpaw Design
-#define PRODUCT centromere
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 10
diff --git a/keyboards/centromere/info.json b/keyboards/centromere/info.json
index 839a4ec84a..d5de3624fd 100644
--- a/keyboards/centromere/info.json
+++ b/keyboards/centromere/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Centromere",
+ "manufacturer": "Southpaw Design",
"url": "",
"maintainer": "spe2",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x6_3": {
"layout": [
diff --git a/keyboards/centromere/keymaps/mattly/keymap.c b/keyboards/centromere/keymaps/mattly/keymap.c
index 9ec77a7cf9..bee7e98e12 100644
--- a/keyboards/centromere/keymaps/mattly/keymap.c
+++ b/keyboards/centromere/keymaps/mattly/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCT] = LAYOUT_split_3x6_3(
- KC_F15, KC_F12, KC_F9, KC_F8, KC_F7, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ KC_F15, KC_F12, KC_F9, KC_F8, KC_F7, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
KC_F14, KC_F11, KC_F6, KC_F5, KC_F4, KC_MUTE, XXXXXXX, TOG_WIN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_F13, KC_F10, KC_F3, KC_F2, KC_F1, KC_VOLD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, _______
diff --git a/keyboards/centromere/keymaps/mini/keymap.c b/keyboards/centromere/keymaps/mini/keymap.c
index 4241e28a3d..4986dacc74 100644
--- a/keyboards/centromere/keymaps/mini/keymap.c
+++ b/keyboards/centromere/keymaps/mini/keymap.c
@@ -107,7 +107,7 @@ 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, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/cest73/tkm/config.h b/keyboards/cest73/tkm/config.h
index e925f39715..a11e7a5e9b 100644
--- a/keyboards/cest73/tkm/config.h
+++ b/keyboards/cest73/tkm/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBADD
-#define PRODUCT_ID 0xAA55
-#define DEVICE_VER 0x0001
-#define MANUFACTURER cest73
-#define PRODUCT TKM-2021 R1.03
-
/* key matrix size */
#define MATRIX_ROWS 11
#define MATRIX_COLS 10
@@ -34,7 +27,6 @@
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7, C6, C7, D0 }
/* column handy ruler: c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 */
#define MATRIX_COL_PINS { D1, D2, D3, D4, D5, D6, D7, F0, F1, F4 }
-#define UNUSED_PINS { }
//NOTE: if D6 pin shows any issues in exploatation the LED on the Teensy is to be removed
diff --git a/keyboards/cest73/tkm/info.json b/keyboards/cest73/tkm/info.json
index c37cfcadb6..98d691bf13 100644
--- a/keyboards/cest73/tkm/info.json
+++ b/keyboards/cest73/tkm/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TKM 2021",
+ "keyboard_name": "TKM 2021 R1.03",
+ "manufacturer": "cest73",
"url": "https://geekhack.org/index.php?topic=110499",
"maintainer": "cest73 (aka fire-h0und)",
+ "usb": {
+ "vid": "0xBADD",
+ "pid": "0xAA55",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/chalice/config.h b/keyboards/chalice/config.h
index 75c34cacd0..1cb0404a03 100644
--- a/keyboards/chalice/config.h
+++ b/keyboards/chalice/config.h
@@ -19,12 +19,6 @@
#include "config_common.h"
-#define VENDOR_ID 0x6A6A
-#define PRODUCT_ID 0x000C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CustomKBD
-#define PRODUCT Chalice
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
diff --git a/keyboards/chalice/info.json b/keyboards/chalice/info.json
index 77a3f7bc12..f738f60325 100644
--- a/keyboards/chalice/info.json
+++ b/keyboards/chalice/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Chalice",
+ "manufacturer": "CustomKBD",
"url": "https://customkbd.com/products/chalice-pre-order",
"maintainer": "joshajohnson, CustomKBD",
+ "usb": {
+ "vid": "0x6A6A",
+ "pid": "0x000C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/chalice/readme.md b/keyboards/chalice/readme.md
index ebfaa3cbd1..2c076e5afc 100644
--- a/keyboards/chalice/readme.md
+++ b/keyboards/chalice/readme.md
@@ -20,6 +20,6 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down Escape and plug in the keyboard.
* **Physical reset button**: Briefly press the reset button below the pro-micro.
-* **Keycode in layout**: The `RESET` key can be found by holding `FUNC` in between the space bars and pressing `ESC`.
+* **Keycode in layout**: The `QK_BOOT` key can be found by holding `FUNC` in between the space bars and pressing `ESC`.
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/chaos65/config.h b/keyboards/chaos65/config.h
index 8e5b7cc2fc..018d28bcb9 100644
--- a/keyboards/chaos65/config.h
+++ b/keyboards/chaos65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB23B
-#define PRODUCT_ID 0x1688
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ThomasLT
-#define PRODUCT Chaos65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/chaos65/info.json b/keyboards/chaos65/info.json
index f9293d526c..0118705c5f 100644
--- a/keyboards/chaos65/info.json
+++ b/keyboards/chaos65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Chaos65",
+ "manufacturer": "ThomasLT",
"url": "https://www.thomasltstudio.com/product-page/chaos-65-keyboard",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0xB23B",
+ "pid": "0x1688",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/chaos65/readme.md b/keyboards/chaos65/readme.md
index 4337ecf90a..62d6e4a40e 100644
--- a/keyboards/chaos65/readme.md
+++ b/keyboards/chaos65/readme.md
@@ -22,4 +22,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
* **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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/charue/charon/config.h b/keyboards/charue/charon/config.h
index 4ee679f707..61734ac4ea 100644
--- a/keyboards/charue/charon/config.h
+++ b/keyboards/charue/charon/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 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 */
diff --git a/keyboards/charue/charon/info.json b/keyboards/charue/charon/info.json
index 9702af08cf..cd8b7d1ba5 100644
--- a/keyboards/charue/charon/info.json
+++ b/keyboards/charue/charon/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Charon",
+ "manufacturer": "Charue Design",
"url": "https://charue-design.com/products/charon",
"maintainer": "ILWrites",
+ "usb": {
+ "vid": "0x4344",
+ "pid": "0x4348",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/charue/charon/keymaps/debug/keymap.c b/keyboards/charue/charon/keymaps/debug/keymap.c
index 8e8c045b8b..51c19ee6f2 100644
--- a/keyboards/charue/charon/keymaps/debug/keymap.c
+++ b/keyboards/charue/charon/keymaps/debug/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ QK_BOOT, KC_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,
diff --git a/keyboards/charue/charon/readme.md b/keyboards/charue/charon/readme.md
index 1732d8a018..9c2afd641b 100644
--- a/keyboards/charue/charon/readme.md
+++ b/keyboards/charue/charon/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/charue/sunsetter/config.h b/keyboards/charue/sunsetter/config.h
index ac7746fa72..15ec852c4e 100644
--- a/keyboards/charue/sunsetter/config.h
+++ b/keyboards/charue/sunsetter/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4344 // CD for CharueDesign
-#define PRODUCT_ID 0x5353 // SS for Sunsetter
-#define DEVICE_VER 0x0001 // Revision prototype
-#define MANUFACTURER CharueDesign
-#define PRODUCT Sunsetter
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
diff --git a/keyboards/charue/sunsetter/info.json b/keyboards/charue/sunsetter/info.json
index 2471c60fd2..a761fd792f 100644
--- a/keyboards/charue/sunsetter/info.json
+++ b/keyboards/charue/sunsetter/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Sunsetter",
+ "manufacturer": "CharueDesign",
"url": "https://charue-design.com/products/sunsetter",
"maintainer": "coarse",
+ "usb": {
+ "vid": "0x4344",
+ "pid": "0x5353",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/charue/sunsetter/keymaps/peott-fr/keymap.c b/keyboards/charue/sunsetter/keymaps/peott-fr/keymap.c
index 4e0ca86c60..02b56ac4b0 100644
--- a/keyboards/charue/sunsetter/keymaps/peott-fr/keymap.c
+++ b/keyboards/charue/sunsetter/keymaps/peott-fr/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, QK_BOOT,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_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,
diff --git a/keyboards/charue/sunsetter_r2/config.h b/keyboards/charue/sunsetter_r2/config.h
index f95013cd72..aa835564e0 100644
--- a/keyboards/charue/sunsetter_r2/config.h
+++ b/keyboards/charue/sunsetter_r2/config.h
@@ -5,16 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-// 0x4344 = CD for Charue Design
-#define VENDOR_ID 0x4344
-// 0x5335 = S2 for Sunsetter R2
-#define PRODUCT_ID 0x5335
-// 0x0001 = 1 for Base version
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Charue Design
-#define PRODUCT Sunsetter R2
-
/* Key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
@@ -22,7 +12,6 @@
/* Keyboard Matrix Assignment s*/
#define MATRIX_ROW_PINS { B3, B2, F4, F5, F6 }
#define MATRIX_COL_PINS { F0, F1, F7, B1, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7 }
-#define UNUSED_PINS { B7 }
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/charue/sunsetter_r2/info.json b/keyboards/charue/sunsetter_r2/info.json
index dc019f8c03..836d9ca6a1 100644
--- a/keyboards/charue/sunsetter_r2/info.json
+++ b/keyboards/charue/sunsetter_r2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "sunsetter_r2",
+ "keyboard_name": "Sunsetter R2",
+ "manufacturer": "Charue Design",
"url": "https://charue-design.com/collections/sunsetter",
"maintainer": "ILWrites",
+ "usb": {
+ "vid": "0x4344",
+ "pid": "0x5335",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/charue/sunsetter_r2/keymaps/debug/keymap.c b/keyboards/charue/sunsetter_r2/keymaps/debug/keymap.c
index bee4854f46..61dbc54e95 100644
--- a/keyboards/charue/sunsetter_r2/keymaps/debug/keymap.c
+++ b/keyboards/charue/sunsetter_r2/keymaps/debug/keymap.c
@@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F9, KC_F10, KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT
),
[_FN] = LAYOUT_all(
- KC_F11, KC_F12, 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_VOLU,
+ KC_F11, KC_F12, QK_BOOT, KC_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_VOLU,
KC_F13, KC_F14, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD,
KC_F15, KC_F16, KC_CAPS, KC_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_F17, KC_F18, 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_MNXT,
diff --git a/keyboards/charue/sunsetter_r2/keymaps/debug/rules.mk b/keyboards/charue/sunsetter_r2/keymaps/debug/rules.mk
new file mode 100644
index 0000000000..15b7f725b2
--- /dev/null
+++ b/keyboards/charue/sunsetter_r2/keymaps/debug/rules.mk
@@ -0,0 +1 @@
+CONSOLE_ENABLE = yes
diff --git a/keyboards/charue/sunsetter_r2/keymaps/default/keymap.c b/keyboards/charue/sunsetter_r2/keymaps/default/keymap.c
index f50d8ea822..6fadba5f72 100644
--- a/keyboards/charue/sunsetter_r2/keymaps/default/keymap.c
+++ b/keyboards/charue/sunsetter_r2/keymaps/default/keymap.c
@@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F9, KC_F10, KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT
),
[_FN] = LAYOUT_all(
- KC_F11, KC_F12, 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_VOLU,
+ KC_F11, KC_F12, QK_BOOT, KC_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_VOLU,
KC_F13, KC_F14, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD,
KC_F15, KC_F16, KC_CAPS, KC_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_F17, KC_F18, 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_MNXT,
diff --git a/keyboards/charue/sunsetter_r2/keymaps/via/keymap.c b/keyboards/charue/sunsetter_r2/keymaps/via/keymap.c
index cb84247e42..6a805426ca 100644
--- a/keyboards/charue/sunsetter_r2/keymaps/via/keymap.c
+++ b/keyboards/charue/sunsetter_r2/keymaps/via/keymap.c
@@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F9, KC_F10, KC_LCTRL, KC_LGUI, KC_LALT, MO(_FN0), KC_SPC, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT
),
[_FN0] = LAYOUT_all(
- KC_F11, KC_F12, 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_VOLU,
+ KC_F11, KC_F12, QK_BOOT, KC_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_VOLU,
KC_F13, KC_F14, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_VOLD,
KC_F15, KC_F16, KC_CAPS, KC_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_F17, KC_F18, 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_MNXT,
diff --git a/keyboards/charue/sunsetter_r2/readme.md b/keyboards/charue/sunsetter_r2/readme.md
index 8bfa046a93..d5e34beec9 100644
--- a/keyboards/charue/sunsetter_r2/readme.md
+++ b/keyboards/charue/sunsetter_r2/readme.md
@@ -28,4 +28,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/charue/sunsetter_r2/rules.mk b/keyboards/charue/sunsetter_r2/rules.mk
index 0edc71f6e9..3ff392a61f 100644
--- a/keyboards/charue/sunsetter_r2/rules.mk
+++ b/keyboards/charue/sunsetter_r2/rules.mk
@@ -10,9 +10,9 @@ BOOTLOADER = atmel-dfu
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
+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
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/charue/sunsetter_r2/sunsetter_r2.h b/keyboards/charue/sunsetter_r2/sunsetter_r2.h
index 42536fd28f..628b41a943 100644
--- a/keyboards/charue/sunsetter_r2/sunsetter_r2.h
+++ b/keyboards/charue/sunsetter_r2/sunsetter_r2.h
@@ -10,11 +10,11 @@
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k1e, k1f, k2f, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k3f, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3g, k4g, \
- k40, k41, k42, k43, k44, k45, k48, k4a, k4c, k4d, k4e, k4f \
+ k40, k41, k42, k43, k44, k45, k47, k4a, k4c, k4d, k4e, k4f \
) { \
- { 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, KC_NO }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3g }, \
- { k40, k41, k42, k43, k44, k45, KC_NO, KC_NO, k48, KC_NO, k4a, KC_NO, k4c, k4d, k4e, k4f, 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, k1f, k1g }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, KC_NO }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, k3e, k3f, k3g }, \
+ { k40, k41, k42, k43, k44, k45, KC_NO, k47, KC_NO, KC_NO, k4a, KC_NO, k4c, k4d, k4e, k4f, k4g } \
}
diff --git a/keyboards/chavdai40/info.json b/keyboards/chavdai40/info.json
index 9c95d21239..36b8511bf1 100644
--- a/keyboards/chavdai40/info.json
+++ b/keyboards/chavdai40/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "chavdai40",
+ "manufacturer": "t-miyajima",
"url": "https://github.com/dvorak55/chavdai40",
"maintainer": "t-miyajima",
+ "usb": {
+ "vid": "0x16D0",
+ "pid": "0x0F95"
+ },
"layouts": {
"LAYOUT_44key": {
"layout": [
diff --git a/keyboards/chavdai40/rev1/config.h b/keyboards/chavdai40/rev1/config.h
index 5ce1111bae..c03bab0b57 100644
--- a/keyboards/chavdai40/rev1/config.h
+++ b/keyboards/chavdai40/rev1/config.h
@@ -21,13 +21,6 @@
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP FALSE
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x16D0
-#define PRODUCT_ID 0x0F95
-#define DEVICE_VER 0x0001
-#define MANUFACTURER t-miyajima
-#define PRODUCT Chavdai40
-
/* usb power settings */
#define USB_MAX_POWER_CONSUMPTION 100
@@ -38,7 +31,6 @@
#define MATRIX_ROW_PINS { A0, A15, B5, B6 }
#define MATRIX_COL_PINS { B8, B4, B3, B2, B1, B0, A7, A6, A5, A4, A3, A2, A1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/chavdai40/rev1/info.json b/keyboards/chavdai40/rev1/info.json
new file mode 100644
index 0000000000..c69c0e3460
--- /dev/null
+++ b/keyboards/chavdai40/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Chavdai40",
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/chavdai40/rev2/config.h b/keyboards/chavdai40/rev2/config.h
index e45d2b2db1..1d72c5dc79 100644
--- a/keyboards/chavdai40/rev2/config.h
+++ b/keyboards/chavdai40/rev2/config.h
@@ -21,13 +21,6 @@
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP FALSE
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x16D0
-#define PRODUCT_ID 0x0F95
-#define DEVICE_VER 0x0002
-#define MANUFACTURER t-miyajima
-#define PRODUCT Chavdai40 rev2
-
/* usb power settings */
#define USB_MAX_POWER_CONSUMPTION 100
@@ -38,7 +31,6 @@
#define MATRIX_ROW_PINS { A0, A15, B5, B6 }
#define MATRIX_COL_PINS { B7, B4, B3, A8, B1, B0, A7, A6, A5, A4, A3, A2, A1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/chavdai40/rev2/info.json b/keyboards/chavdai40/rev2/info.json
new file mode 100644
index 0000000000..458bcacf38
--- /dev/null
+++ b/keyboards/chavdai40/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Chavdai40 rev2",
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/checkerboards/axon40/config.h b/keyboards/checkerboards/axon40/config.h
index f2deb4ad83..920206e565 100644
--- a/keyboards/checkerboards/axon40/config.h
+++ b/keyboards/checkerboards/axon40/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7070
-#define PRODUCT_ID 0x1119
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nasp
-#define PRODUCT Axon40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -33,7 +26,6 @@
#define MATRIX_ROW_PINS { D2, D3, D1, D5 }
#define MATRIX_COL_PINS { C7, B7, D4, D6, F0, F1, C6, B6, B5, B4, E6, B0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
@@ -53,4 +45,3 @@
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
-#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 290
diff --git a/keyboards/checkerboards/axon40/info.json b/keyboards/checkerboards/axon40/info.json
index 6f4dfb4c9f..780f0e2bed 100644
--- a/keyboards/checkerboards/axon40/info.json
+++ b/keyboards/checkerboards/axon40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Axon40",
+ "manufacturer": "Nasp",
"url": "",
"maintainer": "nasp",
+ "usb": {
+ "vid": "0x7070",
+ "pid": "0x1119",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"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}, {"x":1, "y":3}, {"x":2, "y":3, "w":1.5}, {"x":3.5, "y":3, "w":2.25}, {"x":5.75, "y":3, "w":2.75}, {"x":8.5, "y":3, "w":1.5}, {"x":10, "y":3}]
diff --git a/keyboards/checkerboards/axon40/keymaps/npspears/keymap.c b/keyboards/checkerboards/axon40/keymaps/npspears/keymap.c
index f8fed200e8..b63e63595c 100644
--- a/keyboards/checkerboards/axon40/keymaps/npspears/keymap.c
+++ b/keyboards/checkerboards/axon40/keymaps/npspears/keymap.c
@@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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 \
+ QK_BOOT, RGB_TOG, _______, _______, RGB_MOD, RGB_RMOD \
),
};
diff --git a/keyboards/checkerboards/candybar_ortho/config.h b/keyboards/checkerboards/candybar_ortho/config.h
index df83da61df..fb0d209fdd 100644
--- a/keyboards/checkerboards/candybar_ortho/config.h
+++ b/keyboards/checkerboards/candybar_ortho/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7070
-#define PRODUCT_ID 0x3215
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nasp
-#define PRODUCT CandyBar Ortho
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 9
@@ -33,7 +26,6 @@
#define MATRIX_ROW_PINS { B4, D4, D7, D6, B5, B6, C7, C6 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D0, D1, D2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/checkerboards/candybar_ortho/info.json b/keyboards/checkerboards/candybar_ortho/info.json
index 0044f154da..96fd73bbe3 100644
--- a/keyboards/checkerboards/candybar_ortho/info.json
+++ b/keyboards/checkerboards/candybar_ortho/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "CandyBar_Ortho",
+ "keyboard_name": "CandyBar Ortho",
+ "manufacturer": "Nasp",
"url": "",
"maintainer": "nasp",
+ "usb": {
+ "vid": "0x7070",
+ "pid": "0x3215",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_grid": {
"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}, {"x":6, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"label":"Y", "x":11, "y":0}, {"label":"U", "x":12, "y":0}, {"label":"I", "x":13, "y":0}, {"label":"O", "x":14, "y":0}, {"label":"P", "x":15, "y":0}, {"label":"Back Space", "x":16, "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}, {"x":6, "y":1}, {"label":"7", "x":7, "y":1}, {"label":"8", "x":8, "y":1}, {"label":"9", "x":9, "y":1}, {"x":10, "y":1}, {"label":"H", "x":11, "y":1}, {"label":"J", "x":12, "y":1}, {"label":"K", "x":13, "y":1}, {"label":"L", "x":14, "y":1}, {"label":";", "x":15, "y":1}, {"label":"'", "x":16, "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}, {"x":6, "y":2}, {"x":7, "y":2}, {"x":8, "y":2}, {"x":9, "y":2}, {"x":10, "y":2}, {"label":"N", "x":11, "y":2}, {"label":"M", "x":12, "y":2}, {"label":",", "x":13, "y":2}, {"label":".", "x":14, "y":2}, {"label":"/", "x":15, "y":2}, {"label":"Return", "x":16, "y":2}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"&dArr;", "x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"label":"8", "x":7, "y":3}, {"x":8, "y":3}, {"label":"10", "x":9, "y":3}, {"label":"11", "x":10, "y":3}, {"label":"12", "x":11, "y":3}, {"label":"&uArr;", "x":12, "y":3}, {"label":"&larr;", "x":13, "y":3}, {"label":"15", "x":14, "y":3}, {"label":"&uarr;", "x":15, "y":3}, {"label":"&rarr;", "x":16, "y":3}]
diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/keymap.c b/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/keymap.c
index 615257c882..2416b443f4 100644
--- a/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/keymap.c
+++ b/keyboards/checkerboards/candybar_ortho/keymaps/2x3u/keymap.c
@@ -71,13 +71,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
* | | | F1 | F2 | F3 | F4 | F5 | | | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
- * |RESET | RTOG | | | | | | | | | | RMOD |RRMOD |
+ * |QK_BOOT | RTOG | | | | | | | | | | RMOD |RRMOD |
* '----------------------------------------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_2x3u(
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
+ QK_BOOT, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_RMOD
),
};
diff --git a/keyboards/checkerboards/candybar_ortho/keymaps/7u/keymap.c b/keyboards/checkerboards/candybar_ortho/keymaps/7u/keymap.c
index e76ffa1c3c..3a5e856561 100644
--- a/keyboards/checkerboards/candybar_ortho/keymaps/7u/keymap.c
+++ b/keyboards/checkerboards/candybar_ortho/keymaps/7u/keymap.c
@@ -33,14 +33,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
* |Shift | Z | X | C | V | B | DEL | N1 | N2 | N3 | PgDn | N | M | , | . | ? | Ent |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
-* | LCTRL| LOS | LALT | / | ` | Spac(Lay2) | = | RALT |RCTRL | Caps |RESET |
+* | LCTRL| LOS | LALT | / | ` | Spac(Lay2) | = | RALT |RCTRL | Caps |QK_BOOT |
* '----------------------------------------------------------------------------------------------------------------------'
*/
[0] = LAYOUT_7u(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NLCK, KC_P7, KC_P8, KC_P9, KC_HOME, 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_INS, KC_P4, KC_P5, KC_P6, KC_PGUP, 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_DEL, KC_P1, KC_P2, KC_P3, KC_PGDN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
- KC_LCTRL, KC_LGUI, KC_LALT, KC_BSLS, KC_GRV, LT(2, KC_SPC), KC_EQL, KC_RALT, KC_RCTRL, KC_CAPS, RESET
+ KC_LCTRL, KC_LGUI, KC_LALT, KC_BSLS, KC_GRV, LT(2, KC_SPC), KC_EQL, KC_RALT, KC_RCTRL, KC_CAPS, QK_BOOT
),
/* 1
@@ -71,13 +71,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
* | | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
-* |RESET | RTOG | | | | | | | | RMOD |RRMOD |
+* |QK_BOOT | RTOG | | | | | | | | RMOD |RRMOD |
* '----------------------------------------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_7u(
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
+ QK_BOOT, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_RMOD
),
};
diff --git a/keyboards/checkerboards/g_idb60/config.h b/keyboards/checkerboards/g_idb60/config.h
index 996097d5a8..4f8c1e650f 100644
--- a/keyboards/checkerboards/g_idb60/config.h
+++ b/keyboards/checkerboards/g_idb60/config.h
@@ -19,13 +19,6 @@ Copyright 2021 Nathan Spears
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7070
-#define PRODUCT_ID 0x3508
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nasp
-#define PRODUCT G_IDB60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -33,7 +26,6 @@ Copyright 2021 Nathan Spears
/* key matrix pins */
#define MATRIX_ROW_PINS { D6, D7, B4, B5, F7 }
#define MATRIX_COL_PINS { B6, C6, C7, D4, F6, F0, B0, F1, F4, F5, D1, D0, D3, D5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/checkerboards/g_idb60/info.json b/keyboards/checkerboards/g_idb60/info.json
index a410350ef8..81f7081aba 100644
--- a/keyboards/checkerboards/g_idb60/info.json
+++ b/keyboards/checkerboards/g_idb60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "g_idb60",
+ "keyboard_name": "G_IDB60",
+ "manufacturer": "Nasp",
"url": "",
"maintainer": "nasp",
+ "usb": {
+ "vid": "0x7070",
+ "pid": "0x3508",
+ "device_version": "0.0.1"
+ },
"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":"Bksp", "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":"Win", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "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/checkerboards/nop60/config.h b/keyboards/checkerboards/nop60/config.h
index 784594df7c..9cd70c1d7d 100644
--- a/keyboards/checkerboards/nop60/config.h
+++ b/keyboards/checkerboards/nop60/config.h
@@ -19,13 +19,6 @@ Copyright 2021 Nathan Spears
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7070
-#define PRODUCT_ID 0x1416
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nasp
-#define PRODUCT NOP60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -33,7 +26,6 @@ Copyright 2021 Nathan Spears
/* key matrix pins */
#define MATRIX_ROW_PINS { F0, F1, E6, B7, C6 }
#define MATRIX_COL_PINS { F6, F5, F4, D0, D7, D3, D4, D5, D6, F7, C7, B4, B6, B5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/checkerboards/nop60/info.json b/keyboards/checkerboards/nop60/info.json
index 18b0bb25c2..4e88eece96 100644
--- a/keyboards/checkerboards/nop60/info.json
+++ b/keyboards/checkerboards/nop60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "nop60",
- "maintainer": "nasp",
+ "keyboard_name": "NOP60",
+ "manufacturer": "Nasp",
"url": "",
+ "maintainer": "nasp",
+ "usb": {
+ "vid": "0x7070",
+ "pid": "0x1416",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_2x3u": "LAYOUT_60_tsangan_hhkb_split_space",
"LAYOUT_7u": "LAYOUT_60_tsangan_hhkb"
diff --git a/keyboards/checkerboards/nop60/keymaps/7u/keymap.c b/keyboards/checkerboards/nop60/keymaps/7u/keymap.c
index 61bca2616d..d7394e8bf6 100644
--- a/keyboards/checkerboards/nop60/keymaps/7u/keymap.c
+++ b/keyboards/checkerboards/nop60/keymaps/7u/keymap.c
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------------------------------------------------------------------------|
* |BINC |BDEC|BTOG| | | | | | | | | | | |
* |------------------------------------------------------------------------------|
- * | | | | | | |RESET |
+ * | | | | | | |QK_BOOT |
* `------------------------------------------------------------------------------'
*/
[1] = LAYOUT_60_tsangan_hhkb(
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, QK_BOOT
),
/* Main Numbers, Symbols & Function Layer
@@ -72,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------------------------------------------------------------------------|
* |BINC |BDEC|BTOG| | | | | | | | | | | |
* |------------------------------------------------------------------------------|
- * | | | | | | |RESET |
+ * | | | | | | |QK_BOOT |
* `------------------------------------------------------------------------------'
*/
[2] = LAYOUT_60_tsangan_hhkb(
@@ -80,6 +80,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RGB_TOG, RGB_MOD, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_INC, BL_DEC, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, QK_BOOT
)
};
diff --git a/keyboards/checkerboards/phoenix45_ortho/config.h b/keyboards/checkerboards/phoenix45_ortho/config.h
index ebd954be33..a7d1a9a1d5 100644
--- a/keyboards/checkerboards/phoenix45_ortho/config.h
+++ b/keyboards/checkerboards/phoenix45_ortho/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7070
-#define PRODUCT_ID 0x1849
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nasp
-#define PRODUCT PHOENIX45_ORTHO
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D2, D1, D0, C4 }
#define MATRIX_COL_PINS { D3, C2, C5, B0, D6, D5, D4, B4, B5, B6, B7, C7, C6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/checkerboards/phoenix45_ortho/info.json b/keyboards/checkerboards/phoenix45_ortho/info.json
index e64e67abbf..76a8a9b16d 100644
--- a/keyboards/checkerboards/phoenix45_ortho/info.json
+++ b/keyboards/checkerboards/phoenix45_ortho/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Phoenix45_Ortho",
+ "keyboard_name": "Phoenix45 Ortho",
+ "manufacturer": "Nasp",
"url": "www.checkerboards.xyz",
"maintainer": "nasp",
+ "usb": {
+ "vid": "0x7070",
+ "pid": "0x1849",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_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}, {"x":11, "y":0}, {"label":"Back Space", "x":12, "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}, {"x":11, "y":1}, {"label":"'", "x":12, "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}, {"x":11, "y":2}, {"label":"Return", "x":12, "y":2}, {"label":"Hyper", "x":0, "y":3, "w":1.25}, {"label":"Super", "x":1.25, "y":3}, {"label":"Meta", "x":2.25, "y":3, "w":1.5}, {"x":3.75, "y":3, "w":2.25}, {"label":"Fn", "x":6, "y":3}, {"x":7, "y":3, "w":2.25}, {"label":"Meta", "x":9.25, "y":3, "w":1.5}, {"label":"Super", "x":10.75, "y":3}, {"label":"Hyper", "x":11.75, "y":3, "w":1.25}]
diff --git a/keyboards/checkerboards/phoenix45_ortho/keymaps/2x3u/keymap.c b/keyboards/checkerboards/phoenix45_ortho/keymaps/2x3u/keymap.c
index d72c7fecc1..81ccfcdffc 100644
--- a/keyboards/checkerboards/phoenix45_ortho/keymaps/2x3u/keymap.c
+++ b/keyboards/checkerboards/phoenix45_ortho/keymaps/2x3u/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/checkerboards/phoenix45_ortho/keymaps/6u/keymap.c b/keyboards/checkerboards/phoenix45_ortho/keymaps/6u/keymap.c
index 53bc6a3286..d431b363e9 100644
--- a/keyboards/checkerboards/phoenix45_ortho/keymaps/6u/keymap.c
+++ b/keyboards/checkerboards/phoenix45_ortho/keymaps/6u/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, 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, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/checkerboards/plexus75/config.h b/keyboards/checkerboards/plexus75/config.h
index f4d84d9d57..3cee0be178 100644
--- a/keyboards/checkerboards/plexus75/config.h
+++ b/keyboards/checkerboards/plexus75/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7070
-#define PRODUCT_ID 0x5338
-#define DEVICE_VER 0x0001
-#define MANUFACTURER nasp
-#define PRODUCT Plexus75
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -32,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D2, B3, B1, F1, F0 }
#define MATRIX_COL_PINS { B2, B0, D1, F7, F6, F5, F4, D4, D6, D7, B4, B5, B6, C6, C7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/checkerboards/plexus75/info.json b/keyboards/checkerboards/plexus75/info.json
index cb0cb6e295..b25f7f2535 100644
--- a/keyboards/checkerboards/plexus75/info.json
+++ b/keyboards/checkerboards/plexus75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Plexus75",
+ "manufacturer": "Nasp",
"url": "",
"maintainer": "npspears",
+ "usb": {
+ "vid": "0x7070",
+ "pid": "0x5338",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_2x2u": {
"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}, {"x":5, "y":4, "w":2}, {"x":7, "y":4}, {"x":8, "y":4, "w":2}, {"x":10, "y":4}, {"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/config.h b/keyboards/checkerboards/plexus75_he/config.h
index 62e177684c..096c2e4f0c 100644
--- a/keyboards/checkerboards/plexus75_he/config.h
+++ b/keyboards/checkerboards/plexus75_he/config.h
@@ -18,13 +18,6 @@
#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
@@ -32,7 +25,6 @@
/* 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
diff --git a/keyboards/checkerboards/plexus75_he/info.json b/keyboards/checkerboards/plexus75_he/info.json
index d19e58d8ca..d4e64f0a7a 100644
--- a/keyboards/checkerboards/plexus75_he/info.json
+++ b/keyboards/checkerboards/plexus75_he/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Plexus75_he",
+ "keyboard_name": "Plexus75 HE",
+ "manufacturer": "Nasp",
"url": "https://www.github.com/qmk/qmk_firmware/tree/master/keyboards/checkerboards/plexus75_he",
"maintainer": "nasp",
+ "usb": {
+ "vid": "0x7070",
+ "pid": "0x5339",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/checkerboards/plexus75_he/keymaps/2x2u/keymap.c b/keyboards/checkerboards/plexus75_he/keymaps/2x2u/keymap.c
index a851edd29a..4fc0ba925a 100644
--- a/keyboards/checkerboards/plexus75_he/keymaps/2x2u/keymap.c
+++ b/keyboards/checkerboards/plexus75_he/keymaps/2x2u/keymap.c
@@ -50,19 +50,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------+--------|
* | | | MENU | | | | | | | | | | PRT SC | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+----------------|
- * | | | | | | | | | | | | | | RESET | |
+ * | | | | | | | | | | | | | | QK_BOOT | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+----------------|
* | | | | | | | | | | MUTE | VOL DN | VOL UP | \ | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+----------------|
- * | RESET | RESET | | | | | | | | | |
+ * | QK_BOOT | QK_BOOT | | | | | | | | | |
* '-------------------------------------------------------------------------------------------------------------------------------------'
*/
[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, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS, _______, _______,
- RESET, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* 2nd Function Layer
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+----------------|
* | | | | | | | | | | MUTE | VOL DN | VOL UP | \ | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+----------------|
- * | RESET | RESET | | | | | | | | | |
+ * | QK_BOOT | QK_BOOT | | | | | | | | | |
* '-------------------------------------------------------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_2x2u(
@@ -83,6 +83,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/checkerboards/plexus75_he/keymaps/7u/keymap.c b/keyboards/checkerboards/plexus75_he/keymaps/7u/keymap.c
index 4dee2683b1..d47d354c09 100644
--- a/keyboards/checkerboards/plexus75_he/keymaps/7u/keymap.c
+++ b/keyboards/checkerboards/plexus75_he/keymaps/7u/keymap.c
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------+--------|
* | | | MENU | | | | | | | | | | PRT SC | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+----------------|
- * | | | | | | | | | | | | | | RESET | |
+ * | | | | | | | | | | | | | | QK_BOOT | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+----------------|
* | | | | | | | | | | MUTE | VOL DN | VOL UP | \ | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+-----------------+--------+----------------|
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS, _______, _______,
_______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/checkerboards/plexus75_he/keymaps/via/keymap.c b/keyboards/checkerboards/plexus75_he/keymaps/via/keymap.c
index eb205a3787..5cb662d38b 100644
--- a/keyboards/checkerboards/plexus75_he/keymaps/via/keymap.c
+++ b/keyboards/checkerboards/plexus75_he/keymaps/via/keymap.c
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_BSLS, _______, _______,
QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/checkerboards/pursuit40/config.h b/keyboards/checkerboards/pursuit40/config.h
index 53b1ef90a5..e794580789 100644
--- a/keyboards/checkerboards/pursuit40/config.h
+++ b/keyboards/checkerboards/pursuit40/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7070
-#define PRODUCT_ID 0x1620
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nasp
-#define PRODUCT PURSUIT40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D2, D1, F4, F5 }
#define MATRIX_COL_PINS { F1, E6, B7, D5, D4, D6, D7, B4, B5, B6, C6, C7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/checkerboards/pursuit40/info.json b/keyboards/checkerboards/pursuit40/info.json
index 42b2377526..c37285cfb9 100644
--- a/keyboards/checkerboards/pursuit40/info.json
+++ b/keyboards/checkerboards/pursuit40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pursuit40",
+ "manufacturer": "Nasp",
"url": "https://panc.co/store/ols/products/panc40-keyboard",
"maintainer": "nasp",
+ "usb": {
+ "vid": "0x7070",
+ "pid": "0x1620",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"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}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3, "w":1.5}, {"x":2.75, "y":3, "w":1.25}, {"x":4, "y":3, "w":2}, {"x":6, "y":3, "w":2}, {"x":8, "y":3, "w":1.25}, {"x":9.25, "y":3, "w":1.5}, {"x":10.75, "y":3, "w":1.25}]
diff --git a/keyboards/checkerboards/quark/config.h b/keyboards/checkerboards/quark/config.h
index d0ecf3bde8..295629f885 100644
--- a/keyboards/checkerboards/quark/config.h
+++ b/keyboards/checkerboards/quark/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7070
-#define PRODUCT_ID 0x5340
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nasp
-#define PRODUCT QUARK
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -32,7 +25,6 @@
/* key matrix pins */
#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
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
@@ -46,22 +38,6 @@
/* 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
-
// ws2812 options
#define RGB_DI_PIN D0 // pin the DI on the ws2812 is hooked-up to
#define RGBLIGHT_ANIMATIONS // run RGB animations
@@ -69,3 +45,8 @@
#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)
+
+// rotary encoder parameters
+#define ENCODERS_PAD_A { B0 }
+#define ENCODERS_PAD_B { D1 }
+#define ENCODER_RESOLUTION 4
diff --git a/keyboards/checkerboards/quark/info.json b/keyboards/checkerboards/quark/info.json
index 3a64c01280..d3a571d627 100644
--- a/keyboards/checkerboards/quark/info.json
+++ b/keyboards/checkerboards/quark/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "QUARK",
+ "manufacturer": "Nasp",
"url": "",
"maintainer": "nasp",
+ "usb": {
+ "vid": "0x7070",
+ "pid": "0x5340",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x12_2x225u": {
"layout": [
@@ -121,6 +127,63 @@
{"x": 10.5, "y": 4, "w": 1.5}
]
},
+ "LAYOUT_ortho_5x12_7u": {
+ "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, "w":1.25},
+ {"x":1.25, "y":4, "w":1.25},
+ {"x":2.5, "y":4, "w":7},
+ {"x":9.5, "y":4, "w":1.25},
+ {"x":10.75, "y":4, "w":1.25}
+ ]
+ },
"LAYOUT_ortho_4x12": {
"layout": [
{"x": 0, "y": 0},
diff --git a/keyboards/checkerboards/quark/keymaps/ajp10304/keymap.c b/keyboards/checkerboards/quark/keymaps/ajp10304/keymap.c
index 273fbc536f..2e3d9742b1 100644
--- a/keyboards/checkerboards/quark/keymaps/ajp10304/keymap.c
+++ b/keyboards/checkerboards/quark/keymaps/ajp10304/keymap.c
@@ -121,7 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- M_CUSTOM, RESET, QWERTY, BL_ON, BL_OFF, DYN_REC_START1, DYN_REC_START2, _______, _______, _______, _______, KC_DEL ,
+ M_CUSTOM, QK_BOOT, 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, _______, 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/checkerboards/quark/keymaps/default_5x12_7u/config.h b/keyboards/checkerboards/quark/keymaps/default_5x12_7u/config.h
new file mode 100644
index 0000000000..c6f30237d1
--- /dev/null
+++ b/keyboards/checkerboards/quark/keymaps/default_5x12_7u/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2020 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/keymaps/default_5x12_7u/keymap.c b/keyboards/checkerboards/quark/keymaps/default_5x12_7u/keymap.c
new file mode 100644
index 0000000000..e5797a4e9e
--- /dev/null
+++ b/keyboards/checkerboards/quark/keymaps/default_5x12_7u/keymap.c
@@ -0,0 +1,86 @@
+/* Copyright 2020 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 | Space & Layer | Caps | Layer 2 |
+ * `-----------------------------------------------------------------------------------------'
+ */
+ [0] = LAYOUT_ortho_5x12_7u(
+ 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_LGUI, KC_LALT, LT(1, KC_SPC), KC_CAPS, TT(2)
+ ),
+
+ /* [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_ortho_5x12_7u(
+ 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 |
+ * |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
+ * | QK_BOOT | | | | | |
+ * `---------------------------------------------------------------------------------------'
+ */
+ [2] = LAYOUT_ortho_5x12_7u(
+ 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,
+ QK_BOOT, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/checkerboards/quark/keymaps/pezhore/keymap.c b/keyboards/checkerboards/quark/keymaps/pezhore/keymap.c
index 194fb7cfc4..528bc2cc00 100644
--- a/keyboards/checkerboards/quark/keymaps/pezhore/keymap.c
+++ b/keyboards/checkerboards/quark/keymaps/pezhore/keymap.c
@@ -123,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF, _______, _______, KC_DEL,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF, _______, _______, KC_DEL,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/checkerboards/quark/keymaps/via/keymap.c b/keyboards/checkerboards/quark/keymaps/via/keymap.c
index 01e916bfe4..f8a5c215f1 100644
--- a/keyboards/checkerboards/quark/keymaps/via/keymap.c
+++ b/keyboards/checkerboards/quark/keymaps/via/keymap.c
@@ -84,3 +84,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
QK_BOOT, _______, _______, _______, _______, _______, _______, _______
)
};
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(_______, _______) },
+ [2] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
diff --git a/keyboards/checkerboards/quark/keymaps/via/rules.mk b/keyboards/checkerboards/quark/keymaps/via/rules.mk
index 1e5b99807c..f1adcab005 100644
--- a/keyboards/checkerboards/quark/keymaps/via/rules.mk
+++ b/keyboards/checkerboards/quark/keymaps/via/rules.mk
@@ -1 +1,2 @@
VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/checkerboards/quark/quark.c b/keyboards/checkerboards/quark/quark.c
index 02610c4203..736b955424 100644
--- a/keyboards/checkerboards/quark/quark.c
+++ b/keyboards/checkerboards/quark/quark.c
@@ -15,3 +15,15 @@
*/
#include "quark.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_delay(KC_VOLD, 10);
+ } else {
+ tap_code_delay(KC_VOLU, 10);
+ }
+ }
+ return true;
+}
diff --git a/keyboards/checkerboards/quark/quark.h b/keyboards/checkerboards/quark/quark.h
index e1af96eb76..be2cc3f932 100644
--- a/keyboards/checkerboards/quark/quark.h
+++ b/keyboards/checkerboards/quark/quark.h
@@ -39,13 +39,27 @@
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, k48, k4A, k4B \
+ k40, k41, k44, k47, 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, XXX, XXX, k43, XXX, XXX, k48, XXX, XXX, k4A, k4B } \
+ { k40, k41, XXX, XXX, k44, XXX, XXX, k47, XXX, XXX, k4A, k4B } \
+}
+
+#define LAYOUT_ortho_5x12_7u( \
+ 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, k44, 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, XXX, XXX, k44, XXX, XXX, XXX, XXX, XXX, k4A, k4B } \
}
#define LAYOUT_ortho_4x12( \
diff --git a/keyboards/checkerboards/quark/rules.mk b/keyboards/checkerboards/quark/rules.mk
index f56c1ed29e..a161eb06d3 100644
--- a/keyboards/checkerboards/quark/rules.mk
+++ b/keyboards/checkerboards/quark/rules.mk
@@ -17,9 +17,11 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
UNICODE_ENABLE = yes # Unicode
+ENCODER_ENABLE = yes # Enable Rotary Encoders
-LAYOUTS = ortho_4x12 planck_mit
# Disable unsupported hardware
AUDIO_SUPPORTED = no
BACKLIGHT_SUPPORTED = no
+
+LAYOUTS = ortho_4x12 planck_mit
diff --git a/keyboards/checkerboards/quark_lp/config.h b/keyboards/checkerboards/quark_lp/config.h
index be1cd62268..b4664ec5c2 100644
--- a/keyboards/checkerboards/quark_lp/config.h
+++ b/keyboards/checkerboards/quark_lp/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7070
-#define PRODUCT_ID 0x5354
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nasp
-#define PRODUCT QUARK_LP
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -30,7 +23,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { C5, C4, C6, C7 }
#define MATRIX_COL_PINS { B6, B5, B4, B3, B0, D6, D5, D4, D3, D2, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/checkerboards/quark_lp/info.json b/keyboards/checkerboards/quark_lp/info.json
index 4568a4cfad..74e7439bcf 100644
--- a/keyboards/checkerboards/quark_lp/info.json
+++ b/keyboards/checkerboards/quark_lp/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Quark_LP",
+ "keyboard_name": "Quark LP",
+ "manufacturer": "Nasp",
"url": "https://github.com/npspears",
"maintainer": "nasp",
+ "usb": {
+ "vid": "0x7070",
+ "pid": "0x5354",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"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}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"&dArr;", "x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"label":"&uArr;", "x":7, "y":3}, {"label":"&larr;", "x":8, "y":3}, {"label":"&darr;", "x":9, "y":3}, {"label":"&uarr;", "x":10, "y":3}, {"label":"&rarr;", "x":11, "y":3}]
diff --git a/keyboards/checkerboards/quark_lp/keymaps/2x2u/keymap.c b/keyboards/checkerboards/quark_lp/keymaps/2x2u/keymap.c
index 8c09b3a58e..fd8374634b 100644
--- a/keyboards/checkerboards/quark_lp/keymaps/2x2u/keymap.c
+++ b/keyboards/checkerboards/quark_lp/keymaps/2x2u/keymap.c
@@ -68,13 +68,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
- * | RESET | | | | | | | |
+ * | QK_BOOT | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_ortho_4x12_2x2u(
_______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/checkerboards/quark_lp/keymaps/mit/keymap.c b/keyboards/checkerboards/quark_lp/keymaps/mit/keymap.c
index f747f4f26b..338af5ea9e 100644
--- a/keyboards/checkerboards/quark_lp/keymaps/mit/keymap.c
+++ b/keyboards/checkerboards/quark_lp/keymaps/mit/keymap.c
@@ -68,13 +68,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
- * | RESET | | | | | | | |
+ * | QK_BOOT | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_ortho_4x12_1x2uC(
_______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/checkerboards/quark_plus/config.h b/keyboards/checkerboards/quark_plus/config.h
index a2d2dc230c..919df92e6d 100644
--- a/keyboards/checkerboards/quark_plus/config.h
+++ b/keyboards/checkerboards/quark_plus/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7070
-#define PRODUCT_ID 0x5344
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nasp
-#define PRODUCT QUARK_PlUS
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B4, B1, C2, D0, D6, B0, B6, B5 }
#define MATRIX_COL_PINS { C6, D1, D5, D4, D3, D2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/checkerboards/quark_plus/info.json b/keyboards/checkerboards/quark_plus/info.json
index b5a111ce8e..b6647dfcef 100644
--- a/keyboards/checkerboards/quark_plus/info.json
+++ b/keyboards/checkerboards/quark_plus/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Quark_Plus",
+ "keyboard_name": "Quark Plus",
+ "manufacturer": "Nasp",
"url": "https://www.github.com/qmk/qmk_firmware/tree/master/keyboards/checkerboards/quark_plus",
"maintainer": "nasp",
+ "usb": {
+ "vid": "0x7070",
+ "pid": "0x5344",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_grid": {
"layout":
diff --git a/keyboards/checkerboards/quark_plus/keymaps/2u/keymap.c b/keyboards/checkerboards/quark_plus/keymaps/2u/keymap.c
index b62e60370e..dbd99bf3ee 100644
--- a/keyboards/checkerboards/quark_plus/keymaps/2u/keymap.c
+++ b/keyboards/checkerboards/quark_plus/keymaps/2u/keymap.c
@@ -70,13 +70,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
- * |RESET | | | | | | | | | | |
+ * |QK_BOOT | | | | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_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,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/checkerboards/quark_plus/keymaps/2x225u/keymap.c b/keyboards/checkerboards/quark_plus/keymaps/2x225u/keymap.c
index f490f76f9f..8ded461d5a 100644
--- a/keyboards/checkerboards/quark_plus/keymaps/2x225u/keymap.c
+++ b/keyboards/checkerboards/quark_plus/keymaps/2x225u/keymap.c
@@ -70,13 +70,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
- * | RESET | | | | | | | |
+ * | QK_BOOT | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_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,
- RESET, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/checkerboards/quark_plus/keymaps/2x3u/keymap.c b/keyboards/checkerboards/quark_plus/keymaps/2x3u/keymap.c
index ea65b98cd9..c13c32ca76 100644
--- a/keyboards/checkerboards/quark_plus/keymaps/2x3u/keymap.c
+++ b/keyboards/checkerboards/quark_plus/keymaps/2x3u/keymap.c
@@ -70,13 +70,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
-* | RESET | | | | | | | |
+* | QK_BOOT | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_2x3u(
_______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/checkerboards/quark_plus/quark_plus.c b/keyboards/checkerboards/quark_plus/quark_plus.c
index 036d3a96c5..0c0ae0cf4e 100644
--- a/keyboards/checkerboards/quark_plus/quark_plus.c
+++ b/keyboards/checkerboards/quark_plus/quark_plus.c
@@ -17,7 +17,7 @@
#include "quark_plus.h"
bool encoder_update_kb(uint8_t index, bool clockwise) {
- if (!encoder_update_kb(index, clockwise)) { return false; }
+ if (!encoder_update_user(index, clockwise)) { return false; }
if (index == 1) { /* left encoder*/
if (clockwise){
tap_code(KC_WH_U);
diff --git a/keyboards/checkerboards/quark_squared/config.h b/keyboards/checkerboards/quark_squared/config.h
index 32546097f1..d9af2af4b3 100644
--- a/keyboards/checkerboards/quark_squared/config.h
+++ b/keyboards/checkerboards/quark_squared/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7070
-#define PRODUCT_ID 0x5342
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nasp
-#define PRODUCT QUARK²
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -32,7 +25,6 @@
/* key matrix pins */
#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
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
@@ -53,3 +45,7 @@
#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)
+
+/* define rotary encoder pins */
+#define ENCODERS_PAD_A {B0}
+#define ENCODERS_PAD_B {D1}
diff --git a/keyboards/checkerboards/quark_squared/info.json b/keyboards/checkerboards/quark_squared/info.json
index 4d2ce21298..a7188c27e6 100644
--- a/keyboards/checkerboards/quark_squared/info.json
+++ b/keyboards/checkerboards/quark_squared/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Quark_Squared",
+ "keyboard_name": "Quark Squared",
+ "manufacturer": "Nasp",
"url": "https://www.checkerboards.xyz/Quark2_p_35.html",
"maintainer": "nasp",
+ "usb": {
+ "vid": "0x7070",
+ "pid": "0x5342",
+ "device_version": "0.0.1"
+ },
"layouts": {
"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}]
diff --git a/keyboards/checkerboards/quark_squared/keymaps/2u/keymap.c b/keyboards/checkerboards/quark_squared/keymaps/2u/keymap.c
index 0f37a1d080..8af07a13ef 100644
--- a/keyboards/checkerboards/quark_squared/keymaps/2u/keymap.c
+++ b/keyboards/checkerboards/quark_squared/keymaps/2u/keymap.c
@@ -68,13 +68,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
- * | RESET | | | | | | | |
+ * | QK_BOOT | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
[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,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/checkerboards/quark_squared/keymaps/5_2u/keymap.c b/keyboards/checkerboards/quark_squared/keymaps/5_2u/keymap.c
index d7f7ff378d..e81759c5fe 100644
--- a/keyboards/checkerboards/quark_squared/keymaps/5_2u/keymap.c
+++ b/keyboards/checkerboards/quark_squared/keymaps/5_2u/keymap.c
@@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
- * | RESET | | | | | |
+ * | QK_BOOT | | | | | |
* `---------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_5_2u(
@@ -81,6 +81,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/checkerboards/quark_squared/keymaps/5_2x225u/keymap.c b/keyboards/checkerboards/quark_squared/keymaps/5_2x225u/keymap.c
index e116732b75..1d39ae9943 100644
--- a/keyboards/checkerboards/quark_squared/keymaps/5_2x225u/keymap.c
+++ b/keyboards/checkerboards/quark_squared/keymaps/5_2x225u/keymap.c
@@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
- * | RESET | | | | | |
+ * | QK_BOOT | | | | | |
* `---------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_5_2x225u(
@@ -81,6 +81,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, 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, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/checkerboards/quark_squared/quark_squared.c b/keyboards/checkerboards/quark_squared/quark_squared.c
index fbd7346cc0..1ead754eaf 100644
--- a/keyboards/checkerboards/quark_squared/quark_squared.c
+++ b/keyboards/checkerboards/quark_squared/quark_squared.c
@@ -15,3 +15,15 @@
*/
#include "quark_squared.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_delay(KC_VOLD, 10);
+ } else {
+ tap_code_delay(KC_VOLU, 10);
+ }
+ }
+ return true;
+}
diff --git a/keyboards/checkerboards/quark_squared/rules.mk b/keyboards/checkerboards/quark_squared/rules.mk
index d511396436..df6bcc2d31 100644
--- a/keyboards/checkerboards/quark_squared/rules.mk
+++ b/keyboards/checkerboards/quark_squared/rules.mk
@@ -17,7 +17,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
UNICODE_ENABLE = yes # Unicode
-
+ENCODER_ENABLE = yes # Enable Rotary Encoders
# Disable unsupported hardware
AUDIO_SUPPORTED = no
BACKLIGHT_SUPPORTED = no
diff --git a/keyboards/checkerboards/snop60/config.h b/keyboards/checkerboards/snop60/config.h
index d18e35744f..f084870939 100644
--- a/keyboards/checkerboards/snop60/config.h
+++ b/keyboards/checkerboards/snop60/config.h
@@ -19,13 +19,6 @@ Copyright 2022 Nathan Spears
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7070
-#define PRODUCT_ID 0x2416
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nasp
-#define PRODUCT SNOP60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -33,7 +26,6 @@ Copyright 2022 Nathan Spears
/* key matrix pins */
#define MATRIX_ROW_PINS { B7, D0, D6, B4, B5 }
#define MATRIX_COL_PINS { B6, C6, C7, D5, F7, F6, F5, F4, F1, F0, B0, E6, D4, D7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/checkerboards/snop60/info.json b/keyboards/checkerboards/snop60/info.json
index 665aa82111..8d3d9e0358 100644
--- a/keyboards/checkerboards/snop60/info.json
+++ b/keyboards/checkerboards/snop60/info.json
@@ -1,11 +1,17 @@
{
- "keyboard_name": "snop60",
+ "keyboard_name": "SNOP60",
+ "manufacturer": "Nasp",
"url": "www.checkerboards.xyz",
+ "maintainer": "nasp",
+ "usb": {
+ "vid": "0x7070",
+ "pid": "0x2416",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_7u": "LAYOUT_60_ansi_tsangan_split_bs_rshift",
"LAYOUT_2x3u": "LAYOUT_60_ansi_tsangan_split_bs_rshift_space"
},
- "maintainer": "nasp",
"layouts": {
"LAYOUT_60_ansi_tsangan_split_bs_rshift_space": {
"layout": [
diff --git a/keyboards/checkerboards/snop60/keymaps/7u/keymap.c b/keyboards/checkerboards/snop60/keymaps/7u/keymap.c
index eeb085f5fc..ced523a4b0 100644
--- a/keyboards/checkerboards/snop60/keymaps/7u/keymap.c
+++ b/keyboards/checkerboards/snop60/keymaps/7u/keymap.c
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------------------------------------------------------------------------|
* |BINC |BDEC|BTOG| | | | | | | | | | | |
* |------------------------------------------------------------------------------|
- * | | | | | | |RESET |
+ * | | | | | | |QK_BOOT |
* `------------------------------------------------------------------------------'
*/
[1] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
@@ -72,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------------------------------------------------------------------------|
* |BINC |BDEC|BTOG| | | | | | | | | | | |
* |------------------------------------------------------------------------------|
- * | | | | | | |RESET |
+ * | | | | | | |QK_BOOT |
* `------------------------------------------------------------------------------'
*/
[2] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
diff --git a/keyboards/checkerboards/snop60/keymaps/default/keymap.c b/keyboards/checkerboards/snop60/keymaps/default/keymap.c
index 8eb33931dc..7ea2db0d46 100644
--- a/keyboards/checkerboards/snop60/keymaps/default/keymap.c
+++ b/keyboards/checkerboards/snop60/keymaps/default/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------------------------------------------------------------------------|
* |BINC |BDEC|BTOG| | | | | | | | | | | |
* |------------------------------------------------------------------------------|
- * | | | | | | | | |RESET |
+ * | | | | | | | | |QK_BOOT |
* `------------------------------------------------------------------------------'
*/
[1] = LAYOUT_60_ansi_tsangan_split_bs_rshift_space(
diff --git a/keyboards/checkerboards/ud40_ortho_alt/config.h b/keyboards/checkerboards/ud40_ortho_alt/config.h
index 0595b41acf..9ba1df7d8a 100644
--- a/keyboards/checkerboards/ud40_ortho_alt/config.h
+++ b/keyboards/checkerboards/ud40_ortho_alt/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7070
-#define PRODUCT_ID 0x7030
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nasp
-#define PRODUCT UD40_Ortho_Alt
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { E6, F0, F1, F4 }
#define MATRIX_COL_PINS { B2, B1, F7, D6, D7, B4, B5, B6, C6, C7, F5, F6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/checkerboards/ud40_ortho_alt/info.json b/keyboards/checkerboards/ud40_ortho_alt/info.json
index 7236497d96..8ddf466681 100644
--- a/keyboards/checkerboards/ud40_ortho_alt/info.json
+++ b/keyboards/checkerboards/ud40_ortho_alt/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "UD40_Ortho_Alt",
+ "manufacturer": "Nasp",
"url": "",
"maintainer": "nasp",
+ "usb": {
+ "vid": "0x7070",
+ "pid": "0x7030",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"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}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3, "w":1.25}, {"x":2.5, "y":3, "w":1.25}, {"x":3.75, "y":3, "w":2.25}, {"x":6, "y":3, "w":2.25}, {"x":8.25, "y":3, "w":1.25}, {"x":9.5, "y":3, "w":1.25}, {"x":10.75, "y":3, "w":1.25}]
diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/2x3u_alt/keymap.c b/keyboards/checkerboards/ud40_ortho_alt/keymaps/2x3u_alt/keymap.c
index 92216ed03f..840955b9d3 100644
--- a/keyboards/checkerboards/ud40_ortho_alt/keymaps/2x3u_alt/keymap.c
+++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/2x3u_alt/keymap.c
@@ -30,14 +30,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift | Z | X | C | V | B | N | M | , | . | / |Enter |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------|
- * | RESET | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
+ * | QK_BOOT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
* `-----------------------------------------------------------------------------------------'
*/
[0] = LAYOUT_2x3u_alt(
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,
- RESET, KC_LALT, TT(1), LT(2, KC_SPC), KC_LGUI, KC_CAPS
+ QK_BOOT, KC_LALT, TT(1), LT(2, KC_SPC), KC_LGUI, KC_CAPS
),
/* [1]
@@ -68,13 +68,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
- * | RESET | | | | | | | |
+ * | QK_BOOT | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_2x3u_alt(
_______, _______, _______, 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, RESET, _______, _______, _______, _______
+ QK_BOOT, QK_BOOT, _______, _______, _______, _______
)
};
diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u/keymap.c b/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u/keymap.c
index 74bbd2918f..7ba92f40c2 100644
--- a/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u/keymap.c
+++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u/keymap.c
@@ -30,14 +30,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift | Z | X | C | V | B | N | M | , | . | / |Enter |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------|
- * | RESET | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
+ * | QK_BOOT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
* `-----------------------------------------------------------------------------------------'
*/
[0] = LAYOUT_600u(
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,
- RESET, RGB_TOG, KC_LALT, LT(2, KC_SPC), TT(1), KC_LGUI, KC_CAPS
+ QK_BOOT, RGB_TOG, KC_LALT, LT(2, KC_SPC), TT(1), KC_LGUI, KC_CAPS
),
/* [1]
@@ -68,13 +68,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
- * | RESET | | | | | | | |
+ * | QK_BOOT | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_600u(
_______, _______, _______, 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, RESET, _______, _______, _______, _______, _______
+ QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u_alt/keymap.c b/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u_alt/keymap.c
index 76c8b06cc4..91b7c59a07 100644
--- a/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u_alt/keymap.c
+++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/600u_alt/keymap.c
@@ -30,14 +30,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift | Z | X | C | V | B | N | M | , | . | / |Enter |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------|
- * | RESET | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
+ * | QK_BOOT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
* `-----------------------------------------------------------------------------------------'
*/
[0] = LAYOUT_600u_alt(
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,
- RESET, KC_LALT, LT(2, KC_SPC), TT(1), KC_RGUI
+ QK_BOOT, KC_LALT, LT(2, KC_SPC), TT(1), KC_RGUI
),
/* [1]
@@ -68,13 +68,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
- * | RESET | | | | | | | |
+ * | QK_BOOT | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_600u_alt(
_______, _______, _______, 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, RESET, _______, _______, _______
+ QK_BOOT, QK_BOOT, _______, _______, _______
)
};
diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/700u/keymap.c b/keyboards/checkerboards/ud40_ortho_alt/keymaps/700u/keymap.c
index 37f46f72e3..786c700adb 100644
--- a/keyboards/checkerboards/ud40_ortho_alt/keymaps/700u/keymap.c
+++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/700u/keymap.c
@@ -30,14 +30,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift | Z | X | C | V | B | N | M | , | . | / |Enter |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------|
- * | RESET | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
+ * | QK_BOOT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
* `-----------------------------------------------------------------------------------------'
*/
[0] = LAYOUT_700u(
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,
- RESET, KC_LALT, LT(2, KC_SPC), TT(1), KC_RGUI
+ QK_BOOT, KC_LALT, LT(2, KC_SPC), TT(1), KC_RGUI
),
/* [1]
@@ -68,13 +68,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
- * | RESET | | | | | | | |
+ * | QK_BOOT | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_700u(
_______, _______, _______, 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, RESET, _______, _______, _______
+ QK_BOOT, QK_BOOT, _______, _______, _______
)
};
diff --git a/keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/keymap.c b/keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/keymap.c
index 59579383a5..c21cdc7661 100644
--- a/keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/keymap.c
+++ b/keyboards/checkerboards/ud40_ortho_alt/keymaps/npspears/keymap.c
@@ -30,14 +30,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+------|------+------+------+------+------+------|
* | Shift | Z | X | C | V | B | N | M | , | . | / |Enter |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+------|
- * | RESET | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
+ * | QK_BOOT | OS | Alt | Layer | Space & Layer | [ | ] | CAPS |
* `-----------------------------------------------------------------------------------------'
*/
[0] = LAYOUT_default(
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,
- RESET, KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), KC_LBRC, KC_RBRC, KC_CAPS
+ QK_BOOT, KC_LGUI, KC_LALT, TT(1), LT(2, KC_SPC), KC_LBRC, KC_RBRC, KC_CAPS
),
/* [1]
@@ -68,13 +68,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------+------+------+------+------+-----+-----+------+------+------+------+-----|
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |-------+-------+-------+-------+-------+-------+------+------+------+------+------+---|
- * | RESET | | | | | | | |
+ * | QK_BOOT | | | | | | | |
* `---------------------------------------------------------------------------------------'
*/
[2] = LAYOUT_default(
_______, _______, _______, 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, RESET, _______, _______, _______, _______, _______, _______
+ QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/cherrybstudio/cb1800/config.h b/keyboards/cherrybstudio/cb1800/config.h
index a9932fe735..7c10378e97 100644
--- a/keyboards/cherrybstudio/cb1800/config.h
+++ b/keyboards/cherrybstudio/cb1800/config.h
@@ -15,13 +15,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4342 // CB
-#define PRODUCT_ID 0x1818
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CherryB.Studio
-#define PRODUCT CB1800
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 11
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7, C6, C7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D4, D5, D6, D7, F0, F1, F4 }
-//#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/cherrybstudio/cb1800/info.json b/keyboards/cherrybstudio/cb1800/info.json
index ea54e1e6c5..1caf876a61 100644
--- a/keyboards/cherrybstudio/cb1800/info.json
+++ b/keyboards/cherrybstudio/cb1800/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "cb1800",
+ "keyboard_name": "CB1800",
+ "manufacturer": "CherryB.Studio",
"url": "https://discord.gg/qVwv3gcq83",
"maintainer": "duongaanh",
+ "usb": {
+ "vid": "0x4342",
+ "pid": "0x1818",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/cherrybstudio/cb65/cb65.c b/keyboards/cherrybstudio/cb65/cb65.c
new file mode 100644
index 0000000000..4ff1006adf
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/cb65.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 "cb65.h"
diff --git a/keyboards/cherrybstudio/cb65/cb65.h b/keyboards/cherrybstudio/cb65/cb65.h
new file mode 100644
index 0000000000..c17df211da
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/cb65.h
@@ -0,0 +1,35 @@
+/*
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have 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, K100, K101, K102, K103, K104, K105, K106, K107, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K300, K301, K302, K303, K304, K305, K306, \
+ K307, 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, K805 \
+) { \
+ { 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, K307 }, \
+ { 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, K805 } \
+}
+
diff --git a/keyboards/cherrybstudio/cb65/config.h b/keyboards/cherrybstudio/cb65/config.h
new file mode 100644
index 0000000000..d5a644ef8c
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/config.h
@@ -0,0 +1,68 @@
+/*
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have 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 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)
+ *
+ * 0 1 2 3 4 5 6 7 8
+*/
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3 }
+#define MATRIX_COL_PINS { D5, D4, D6, D7, F7, B5, B6, C6 }
+
+/* Encoder configuration */
+//#define ENCODERS_PAD_A { F5 }
+//#define ENCODERS_PAD_B { F6 }
+//#define ENCODER_RESOLUTION 4
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define LED_CAPS_LOCK_PIN F1
+#define LED_SCROLL_LOCK_PIN F4
+#define LED_PIN_ON_STATE 0
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* RGB Lighting */
+#define RGB_DI_PIN F0
+#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/cb65/info.json b/keyboards/cherrybstudio/cb65/info.json
new file mode 100644
index 0000000000..976b0b2e33
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/info.json
@@ -0,0 +1,87 @@
+{
+ "keyboard_name": "CherryB CB65",
+ "manufacturer": "CherryB Works",
+ "url": "https://discord.gg/qVwv3gcq83",
+ "maintainer": "lunaticwhat",
+ "usb": {
+ "vid": "0x4342",
+ "pid": "0x6565",
+ "device_version": "0.0.1"
+ },
+ "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},
+ {"x":13.75, "y":2, "w":1.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}
+ ]
+ }
+ }
+}
diff --git a/keyboards/cherrybstudio/cb65/keymaps/default/keymap.c b/keyboards/cherrybstudio/cb65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c506bf5f4e
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+/*
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received 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, QK_BOOT,
+ KC_TAB, KC_Q, KC_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_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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, 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_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_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_VOLU, KC_PGDN,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+};
diff --git a/keyboards/cherrybstudio/cb65/keymaps/default/readme.md b/keyboards/cherrybstudio/cb65/keymaps/default/readme.md
new file mode 100644
index 0000000000..af21c876db
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for CB65
diff --git a/keyboards/cherrybstudio/cb65/keymaps/via/keymap.c b/keyboards/cherrybstudio/cb65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..55ea2d24f6
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/keymaps/via/keymap.c
@@ -0,0 +1,49 @@
+/*
+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_1, KC_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, QK_BOOT,
+ KC_TAB, KC_Q, KC_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_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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, 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_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_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_VOLU, KC_PGDN,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+ [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/idobao/id80/v1/ansi/keymaps/via/rules.mk b/keyboards/cherrybstudio/cb65/keymaps/via/rules.mk
index ca9fed0e6b..ca9fed0e6b 100644
--- a/keyboards/idobao/id80/v1/ansi/keymaps/via/rules.mk
+++ b/keyboards/cherrybstudio/cb65/keymaps/via/rules.mk
diff --git a/keyboards/cherrybstudio/cb65/readme.md b/keyboards/cherrybstudio/cb65/readme.md
new file mode 100644
index 0000000000..7b8f4da201
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/readme.md
@@ -0,0 +1,26 @@
+# CherryB Works CB65
+
+![CB65](https://i.imgur.com/3qopFIWh.jpg)
+
+An universal 65 percents PCB for many keyboard with USB daughterboard
+Board has a rotary encoder but disabled for VIA support.
+
+* Keyboard Maintainer: lunaticwhat
+* Hardware Supported: CB65, atmega32u4
+* Hardware Availability: [CherryB Studio](https://discord.gg/qVwv3gcq83)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cherrybstudio/cb65:default
+
+Flashing example for this keyboard:
+
+ make cherrybstudio/cb65:default:flash
+
+## Accessing Bootloader Mode
+
+To access Bootloader Mode, do one of the following:
+
+* 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/cb65/rules.mk b/keyboards/cherrybstudio/cb65/rules.mk
new file mode 100644
index 0000000000..e5386c142d
--- /dev/null
+++ b/keyboards/cherrybstudio/cb65/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 = no # Encoder support
diff --git a/keyboards/cherrybstudio/cb87/config.h b/keyboards/cherrybstudio/cb87/config.h
index 41c7f3f25b..fa9a752801 100644
--- a/keyboards/cherrybstudio/cb87/config.h
+++ b/keyboards/cherrybstudio/cb87/config.h
@@ -15,13 +15,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4342 // CB
-#define PRODUCT_ID 0x8787
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CherryB Studio
-#define PRODUCT CB87
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 10
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3 }
#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, F5, C6, C7, F7 }
-//#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/cherrybstudio/cb87/info.json b/keyboards/cherrybstudio/cb87/info.json
index dc6d017b33..1e7051c281 100644
--- a/keyboards/cherrybstudio/cb87/info.json
+++ b/keyboards/cherrybstudio/cb87/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "CB87",
+ "manufacturer": "CherryB Studio",
"url": "https://discord.gg/qVwv3gcq83",
"maintainer": "duongaanh",
+ "usb": {
+ "vid": "0x4342",
+ "pid": "0x8787",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/cherrybstudio/cb87rgb/config.h b/keyboards/cherrybstudio/cb87rgb/config.h
index ccf7aceee9..d915e59c7f 100644
--- a/keyboards/cherrybstudio/cb87rgb/config.h
+++ b/keyboards/cherrybstudio/cb87rgb/config.h
@@ -15,13 +15,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/cherrybstudio/cb87rgb/info.json b/keyboards/cherrybstudio/cb87rgb/info.json
index e183066bd5..36b43f5742 100644
--- a/keyboards/cherrybstudio/cb87rgb/info.json
+++ b/keyboards/cherrybstudio/cb87rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "cb87v2",
+ "keyboard_name": "CB87RGB",
+ "manufacturer": "CherryB.Studio",
"url": "https://discord.gg/qVwv3gcq83",
"maintainer": "duongaanh",
+ "usb": {
+ "vid": "0x4342",
+ "pid": "0x8785",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/cherrybstudio/cb87v2/config.h b/keyboards/cherrybstudio/cb87v2/config.h
index 782262ebfb..d3d5818b1c 100644
--- a/keyboards/cherrybstudio/cb87v2/config.h
+++ b/keyboards/cherrybstudio/cb87v2/config.h
@@ -15,13 +15,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/cherrybstudio/cb87v2/info.json b/keyboards/cherrybstudio/cb87v2/info.json
index 8b79d0623b..6cb3f5fbe3 100644
--- a/keyboards/cherrybstudio/cb87v2/info.json
+++ b/keyboards/cherrybstudio/cb87v2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "cb87v2",
+ "keyboard_name": "CB87v2",
+ "manufacturer": "CherryB.Studio",
"url": "https://discord.gg/qVwv3gcq83",
"maintainer": "duongaanh",
+ "usb": {
+ "vid": "0x4342",
+ "pid": "0x8788",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/cheshire/curiosity/config.h b/keyboards/cheshire/curiosity/config.h
index 7b9e618463..3f6bdf4f0a 100644
--- a/keyboards/cheshire/curiosity/config.h
+++ b/keyboards/cheshire/curiosity/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCAFE
-#define PRODUCT_ID 0x0FAD
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nightingale Studios/Cheshire Designs
-#define PRODUCT Curiosity
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS { B13, B14, A4, A2, A1 }
#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, A6, A5, B9, B8, B7, B6, B5, B4, B3, A15 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/cheshire/curiosity/info.json b/keyboards/cheshire/curiosity/info.json
index 95a9e06d3e..ef355016de 100644
--- a/keyboards/cheshire/curiosity/info.json
+++ b/keyboards/cheshire/curiosity/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Curiosity",
+ "manufacturer": "Nightingale Studios/Cheshire Designs",
"maintainer": "zvecr",
+ "usb": {
+ "vid": "0xCAFE",
+ "pid": "0x0FAD",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/cheshire/curiosity/keymaps/crd/keymap.c b/keyboards/cheshire/curiosity/keymaps/crd/keymap.c
index 5ccaafec3c..e21f840265 100644
--- a/keyboards/cheshire/curiosity/keymaps/crd/keymap.c
+++ b/keyboards/cheshire/curiosity/keymaps/crd/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FL] = LAYOUT_default(
KC_PGUP, 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_PGDN, KC_CAPS, _______, _______, EEP_RST, RESET, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______,
+ KC_PGDN, KC_CAPS, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______,
KC_ESC, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT,
_______, _______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______,
_______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/cheshire/curiosity/keymaps/madhatter/keymap.c b/keyboards/cheshire/curiosity/keymaps/madhatter/keymap.c
index 2273ad938c..efb962f978 100644
--- a/keyboards/cheshire/curiosity/keymaps/madhatter/keymap.c
+++ b/keyboards/cheshire/curiosity/keymaps/madhatter/keymap.c
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FNMS] = LAYOUT_default(
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, _______, _______,
- RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, _______, _______, _______, RESET,
+ RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, _______, _______, _______, QK_BOOT,
VLK_TOG, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN2, _______, _______,
_______, _______, _______, _______, _______, _______, RGB_SAI, RGB_HUI, RGB_VAI, RGB_SAD, RGB_HUD, RGB_VAD, _______, _______,
AG_TOGG, _______, _______, _______, _______, _______, _______
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVMED] = LAYOUT_default(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- KC_HOME, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, RESET,
+ KC_HOME, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______, _______, QK_BOOT,
KC_END, _______, _______, _______, _______, _______, KC_MPLY, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, EEP_RST,
_______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/chickenman/ciel/config.h b/keyboards/chickenman/ciel/config.h
index 718df02eff..ce73bdc831 100644
--- a/keyboards/chickenman/ciel/config.h
+++ b/keyboards/chickenman/ciel/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC41C
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ChickenMan
-#define PRODUCT Ciel
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C5, C4, B0, C7, B7 }
#define MATRIX_COL_PINS { C6, B6, B5, B4, B3, B2, B1, D6, D5, D4, D3, D2, D1, D0, C2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/chickenman/ciel/info.json b/keyboards/chickenman/ciel/info.json
index 67d39c2cf4..8dd1352ea8 100644
--- a/keyboards/chickenman/ciel/info.json
+++ b/keyboards/chickenman/ciel/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ciel",
+ "manufacturer": "ChickenMan",
"url": "",
"maintainer": "ramonimbao",
+ "usb": {
+ "vid": "0xC41C",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
diff --git a/keyboards/chlx/merro60/config.h b/keyboards/chlx/merro60/config.h
index 526433ef8f..fab584880d 100644
--- a/keyboards/chlx/merro60/config.h
+++ b/keyboards/chlx/merro60/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4358 // "CX" - chlx
-#define PRODUCT_ID 0x0601
-#define DEVICE_VER 0x0100
-#define MANUFACTURER chlx
-#define PRODUCT chlx merro60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -40,8 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, D5, D3, B5, F4 }
#define MATRIX_COL_PINS { B7, D1, D0, B0, B1, E6, B2, B3, D2, D7, B4, B6, C6, C7, D6 }
-#define UNUSED_PINS
-// #define UNUSED_PINS { F0, F1, F5, F6, F7 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/chlx/merro60/info.json b/keyboards/chlx/merro60/info.json
index e0a697df06..95a6e9b7c8 100644
--- a/keyboards/chlx/merro60/info.json
+++ b/keyboards/chlx/merro60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "merro60",
+ "manufacturer": "chlx",
"url": "www.github.com/gaclee3b",
"maintainer": "gaclee3b",
+ "usb": {
+ "vid": "0x4358",
+ "pid": "0x0601",
+ "device_version": "1.0.0"
+ },
"layout_aliases": {
"LAYOUT_default": "LAYOUT_all",
"LAYOUT_hhkb": "LAYOUT_60_hhkb",
diff --git a/keyboards/chlx/merro60/keymaps/hhkb/keymap.c b/keyboards/chlx/merro60/keymaps/hhkb/keymap.c
index b7058cfc1b..1dba574063 100644
--- a/keyboards/chlx/merro60/keymaps/hhkb/keymap.c
+++ b/keyboards/chlx/merro60/keymaps/hhkb/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_60_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_INS, KC_DEL,
- KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, RESET,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, QK_BOOT,
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______,
_______, _______, _______, _______, _______),
diff --git a/keyboards/chlx/str_merro60/config.h b/keyboards/chlx/str_merro60/config.h
index b73aaa0f73..9c8a0a64b8 100644
--- a/keyboards/chlx/str_merro60/config.h
+++ b/keyboards/chlx/str_merro60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4358 // "CX" - chlx
-#define PRODUCT_ID 0x0602
-#define DEVICE_VER 0x0100
-#define MANUFACTURER chlx bsmt
-#define PRODUCT chlx str.merro60
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
@@ -42,8 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6, C7, F7, F6, F5, F4, F1, F0, B3, B7 }
#define MATRIX_COL_PINS { D0, D1, D2, E6, B0, B1, B2 }
-#define UNUSED_PINS
-// #define UNUSED_PINS { B4, B5, B6, D4, D5, D6, D7 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/chlx/str_merro60/info.json b/keyboards/chlx/str_merro60/info.json
index 0795c721c6..444d2d76e6 100644
--- a/keyboards/chlx/str_merro60/info.json
+++ b/keyboards/chlx/str_merro60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "str.merro60",
+ "manufacturer": "chlx bsmt",
"url": "www.github.com/gaclee3b",
"maintainer": "gaclee3b",
+ "usb": {
+ "vid": "0x4358",
+ "pid": "0x0602",
+ "device_version": "1.0.0"
+ },
"layout_aliases": {
"LAYOUT_default": "LAYOUT_all",
"LAYOUT_hhkb": "LAYOUT_60_hhkb",
@@ -151,6 +157,77 @@
{"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_hhkb": {
"layout": [
{"x": 0, "y": 0},
@@ -219,6 +296,76 @@
{"x": 12.5, "y": 4}
]
},
+ "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}
+ ]
+ },
"LAYOUT_60_iso_split_bs_rshift": {
"layout": [
{"x": 0, "y": 0},
diff --git a/keyboards/chlx/str_merro60/keymaps/ansi/keymap.c b/keyboards/chlx/str_merro60/keymaps/ansi/keymap.c
index 6030c8618f..dbd73407ab 100644
--- a/keyboards/chlx/str_merro60/keymaps/ansi/keymap.c
+++ b/keyboards/chlx/str_merro60/keymaps/ansi/keymap.c
@@ -28,7 +28,7 @@ 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_UP, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, QK_BOOT,
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/chlx/str_merro60/keymaps/default/keymap.c b/keyboards/chlx/str_merro60/keymaps/default/keymap.c
index 2ad95850b3..cad07e7be7 100644
--- a/keyboards/chlx/str_merro60/keymaps/default/keymap.c
+++ b/keyboards/chlx/str_merro60/keymaps/default/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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,
- _______, 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, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/chlx/str_merro60/keymaps/hhkb/keymap.c b/keyboards/chlx/str_merro60/keymaps/hhkb/keymap.c
index 403a772dfc..7fea015564 100644
--- a/keyboards/chlx/str_merro60/keymaps/hhkb/keymap.c
+++ b/keyboards/chlx/str_merro60/keymaps/hhkb/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_60_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_INS, KC_DEL,
- KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, RESET,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, QK_BOOT,
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______,
_______, _______, _______, _______, _______),
diff --git a/keyboards/chlx/str_merro60/keymaps/iso/keymap.c b/keyboards/chlx/str_merro60/keymaps/iso/keymap.c
index a9ee435c5e..f67f56ef51 100644
--- a/keyboards/chlx/str_merro60/keymaps/iso/keymap.c
+++ b/keyboards/chlx/str_merro60/keymaps/iso/keymap.c
@@ -28,7 +28,7 @@ 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, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/chlx/str_merro60/keymaps/tsangan/keymap.c b/keyboards/chlx/str_merro60/keymaps/tsangan/keymap.c
index a24c330ae5..92e1bb9155 100644
--- a/keyboards/chlx/str_merro60/keymaps/tsangan/keymap.c
+++ b/keyboards/chlx/str_merro60/keymaps/tsangan/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/chlx/str_merro60/keymaps/via/keymap.c b/keyboards/chlx/str_merro60/keymaps/via/keymap.c
index f91698a8e0..d9820d0daf 100644
--- a/keyboards/chlx/str_merro60/keymaps/via/keymap.c
+++ b/keyboards/chlx/str_merro60/keymaps/via/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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,
- _______, 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, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/chocofly/chocofly.c b/keyboards/chocofly/chocofly.c
new file mode 100644
index 0000000000..8ae38602ab
--- /dev/null
+++ b/keyboards/chocofly/chocofly.c
@@ -0,0 +1,16 @@
+// Copyright 2022 Vitaly Volkov (@vlkv)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "chocofly.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) { return false; }
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ return false;
+}
+#endif
diff --git a/keyboards/chocofly/chocofly.h b/keyboards/chocofly/chocofly.h
new file mode 100644
index 0000000000..7d94774625
--- /dev/null
+++ b/keyboards/chocofly/chocofly.h
@@ -0,0 +1,10 @@
+// Copyright 2022 Vitaly Volkov (@vlkv)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#ifdef KEYBOARD_chocofly_v1
+ #include "v1.h"
+#endif
+
+#include "quantum.h"
diff --git a/keyboards/chocofly/config.h b/keyboards/chocofly/config.h
new file mode 100644
index 0000000000..eb9c37d38a
--- /dev/null
+++ b/keyboards/chocofly/config.h
@@ -0,0 +1,6 @@
+// Copyright 2022 Vitaly Volkov (@vlkv)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
diff --git a/keyboards/chocofly/readme.md b/keyboards/chocofly/readme.md
new file mode 100644
index 0000000000..0d9db2c04b
--- /dev/null
+++ b/keyboards/chocofly/readme.md
@@ -0,0 +1,23 @@
+# Chocofly
+
+![Chocofly v1.0](https://github.com/vlkv/chocofly/blob/master/images/chocofly_v1-0.jpg)
+
+An open source ergonomic monoblock 60% keyboard.
+
+* Keyboard Maintainer: [Vitaly Volkov](https://github.com/vlkv)
+* Hardware Supported: Chocofly PCB v1, Pro Micro 5V/16MHz and compatible.
+* Hardware Availability: [github.com/vlkv/chocofly](https://github.com/vlkv/chocofly)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make chocofly/v1:default
+
+Flashing example for this keyboard:
+
+ make chocofly/v1:default:flash
+
+## Bootloader
+
+Briefly press the button along the top edge of the PCB next to the microcontroller.
+
+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/chocofly/v1/config.h b/keyboards/chocofly/v1/config.h
new file mode 100644
index 0000000000..053ca61362
--- /dev/null
+++ b/keyboards/chocofly/v1/config.h
@@ -0,0 +1,16 @@
+// Copyright 2022 Vitaly Volkov (@vlkv)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 8
+
+#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7, E6, B4, B5 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define ENCODERS_PAD_A { D3 }
+#define ENCODERS_PAD_B { D2 }
+#define ENCODER_RESOLUTION 2
diff --git a/keyboards/chocofly/v1/info.json b/keyboards/chocofly/v1/info.json
new file mode 100644
index 0000000000..1372ce62f9
--- /dev/null
+++ b/keyboards/chocofly/v1/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "Chocofly",
+ "manufacturer": "vitvlkv",
+ "url": "https://github.com/vlkv/chocofly",
+ "maintainer": "vlkv",
+ "usb": {
+ "vid": "0xCEE2",
+ "pid": "0x1001",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "F1", "matrix": [0, 0], "x": 0, "y": 0.375 },
+ { "label": "F2", "matrix": [1, 0], "x": 1, "y": 0.375 },
+ { "label": "F3", "matrix": [0, 1], "x": 2, "y": 0.125 },
+ { "label": "F4", "matrix": [1, 1], "x": 3, "y": 0 },
+ { "label": "F5", "matrix": [0, 2], "x": 4, "y": 0.125 },
+ { "label": "F6", "matrix": [1, 2], "x": 5, "y": 0.25 },
+ { "label": "F7", "matrix": [1, 5], "x": 11.5, "y": 0.25 },
+ { "label": "F8", "matrix": [0, 5], "x": 12.5, "y": 0.125 },
+ { "label": "F9", "matrix": [1, 6], "x": 13.5, "y": 0 },
+ { "label": "F10", "matrix": [0, 6], "x": 14.5, "y": 0.125 },
+ { "label": "F11", "matrix": [1, 7], "x": 15.5, "y": 0.375 },
+ { "label": "F12", "matrix": [0, 7], "x": 16.5, "y": 0.375 },
+
+ { "label": "Tab", "matrix": [2, 0], "x": 0, "y": 1.375 },
+ { "label": "Q", "matrix": [3, 0], "x": 1, "y": 1.375 },
+ { "label": "W", "matrix": [2, 1], "x": 2, "y": 1.125 },
+ { "label": "E", "matrix": [3, 1], "x": 3, "y": 1 },
+ { "label": "R", "matrix": [2, 2], "x": 4, "y": 1.125 },
+ { "label": "T", "matrix": [3, 2], "x": 5, "y": 1.25 },
+ { "label": "Y", "matrix": [3, 5], "x": 11.5, "y": 1.25 },
+ { "label": "U", "matrix": [2, 5], "x": 12.5, "y": 1.125 },
+ { "label": "I", "matrix": [3, 6], "x": 13.5, "y": 1 },
+ { "label": "O", "matrix": [2, 6], "x": 14.5, "y": 1.125 },
+ { "label": "P", "matrix": [3, 7], "x": 15.5, "y": 1.375 },
+ { "label": "[{", "matrix": [2, 7], "x": 16.5, "y": 1.375 },
+
+ { "label": "\\|", "matrix": [4, 0], "x": 0, "y": 2.375 },
+ { "label": "A", "matrix": [5, 0], "x": 1, "y": 2.375 },
+ { "label": "S", "matrix": [4, 1], "x": 2, "y": 2.125 },
+ { "label": "D", "matrix": [5, 1], "x": 3, "y": 2 },
+ { "label": "F", "matrix": [4, 2], "x": 4, "y": 2.125 },
+ { "label": "G", "matrix": [5, 2], "x": 5, "y": 2.25 },
+ { "label": "Mute", "matrix": [1, 3], "x": 6.5, "y": 2.375 },
+ { "label": "H", "matrix": [5, 5], "x": 11.5, "y": 2.25 },
+ { "label": "J", "matrix": [4, 5], "x": 12.5, "y": 2.125 },
+ { "label": "K", "matrix": [5, 6], "x": 13.5, "y": 2 },
+ { "label": "L", "matrix": [4, 6], "x": 14.5, "y": 2.125 },
+ { "label": ";:", "matrix": [5, 7], "x": 15.5, "y": 2.375 },
+ { "label": "'\"", "matrix": [4, 7], "x": 16.5, "y": 2.375 },
+
+ { "label": "Ctrl", "matrix": [6, 0], "x": 0, "y": 3.375 },
+ { "label": "Z", "matrix": [7, 0], "x": 1, "y": 3.375 },
+ { "label": "X", "matrix": [6, 1], "x": 2, "y": 3.125 },
+ { "label": "C", "matrix": [7, 1], "x": 3, "y": 3 },
+ { "label": "V", "matrix": [6, 2], "x": 4, "y": 3.125 },
+ { "label": "B", "matrix": [7, 2], "x": 5, "y": 3.25 },
+ { "label": "`~", "matrix": [3, 3], "x": 6.25, "y": 3.375 },
+ { "label": "Insert", "matrix": [2, 3], "x": 7.25, "y": 3.625 },
+ { "label": "Print Screen", "matrix": [2, 4], "x": 9.25, "y": 3.625 },
+ { "label": "]}", "matrix": [3, 4], "x": 10.25, "y": 3.375 },
+ { "label": "N", "matrix": [7, 5], "x": 11.5, "y": 3.25 },
+ { "label": "M", "matrix": [6, 5], "x": 12.5, "y": 3.125 },
+ { "label": ",<", "matrix": [7, 6], "x": 13.5, "y": 3 },
+ { "label": ".>", "matrix": [6, 6], "x": 14.5, "y": 3.125 },
+ { "label": "/?", "matrix": [7, 7], "x": 15.5, "y": 3.375 },
+ { "label": "Ctrl", "matrix": [6, 7], "x": 16.5, "y": 3.375 },
+
+ { "label": "GUI", "matrix": [7, 3], "x": 3.5, "y": 4.125 },
+ { "label": "Shift", "matrix": [6, 3], "x": 4.75, "y": 4.25 },
+ { "label": "Space", "matrix": [5, 3], "x": 6, "y": 4.375 },
+ { "label": "Alt", "matrix": [4, 3], "x": 7, "y": 4.625 },
+ { "label": "Alt", "matrix": [4, 4], "x": 9.5, "y": 4.625 },
+ { "label": "Fn", "matrix": [5, 4], "x": 10.5, "y": 4.375 },
+ { "label": "Shift", "matrix": [6, 4], "x": 11.75, "y": 4.25 },
+ { "label": "GUI", "matrix": [7, 4], "x": 13, "y": 4.125 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/chocofly/v1/keymaps/default/keymap.c b/keyboards/chocofly/v1/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b128e5e17b
--- /dev/null
+++ b/keyboards/chocofly/v1/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+// Copyright 2022 Vitaly Volkov (@vlkv)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define RS_SPC LT(_RAISE, KC_SPC)
+#define LW_LGUI LT(_LOWER, KC_LGUI)
+#define RS_LGUI LT(_RAISE, KC_LGUI)
+#define MT_LALT LALT_T(KC_ESC)
+#define MT_RALT RALT_T(KC_ENT)
+#define MT_LSFT LSFT_T(KC_EQL)
+#define MT_RSFT RSFT_T(KC_MINS)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = 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_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_A, KC_S, KC_D, KC_F, KC_G, KC__MUTE, 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_GRV, KC_INS, KC_PSCR, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RCTL,
+ LW_LGUI, MT_LSFT, RS_SPC, MT_LALT, MT_RALT, MO(_LOWER),MT_RSFT, RS_LGUI
+ ),
+ [_LOWER] = LAYOUT(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_UNDS, KC_PLUS, KC_EQL,
+ _______, KC_0, KC_1, KC_2, KC_3, KC_PCMM, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, XXXXXXX,
+ _______, KC_0, KC_4, KC_5, KC_6, KC_DEL, _______, KC_BSPC, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX,
+ _______, KC_0, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, XXXXXXX, KC_PGUP, KC_APP, KC_PGDN, XXXXXXX, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_RAISE] = LAYOUT(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_UNDS, KC_PLUS, KC_EQL,
+ _______, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, KC_EXLM, KC_AT, KC_HASH, XXXXXXX, XXXXXXX,
+ _______, XXXXXXX, XXXXXXX, KC_LPRN, KC_RPRN, KC_DEL, _______, KC_BSPC, KC_DLR, KC_PERC, KC_CIRC, XXXXXXX, XXXXXXX,
+ _______, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, XXXXXXX, _______, _______, _______, _______, XXXXXXX, KC_AMPR, KC_ASTR, KC_PCMM, XXXXXXX, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
diff --git a/keyboards/chocofly/v1/keymaps/winder/keymap.c b/keyboards/chocofly/v1/keymaps/winder/keymap.c
new file mode 100644
index 0000000000..7d1889b225
--- /dev/null
+++ b/keyboards/chocofly/v1/keymaps/winder/keymap.c
@@ -0,0 +1,60 @@
+// Copyright 2022 Will Winder (@winder)
+// SPDX-License-Identifier: GPL-2.0-or-later
+//
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+};
+
+#define FN_1 MO(_LOWER)
+#define FN_2 MO(_RAISE)
+#define TRMINAL LGUI(KC_ENT)
+#define RESIZE LGUI(KC_R)
+#define BROWSER LSG(KC_ENT) // Left Shift + GUI, ENT.
+
+// required for my PC
+#undef KC_VOLU
+#undef KC_VOLD
+#define KC_VOLU KC__VOLUP
+#define KC_VOLD KC__VOLDOWN
+
+
+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_DEL ,
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_UNDS,
+ KC_LCTL, KC_A , KC_S , KC_D , KC_F , KC_G , KC_MUTE, KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT,
+ KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , TRMINAL, BROWSER, RESIZE , KC_UNDS, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,
+ KC_LALT, KC_LGUI, FN_1 , KC_ENT , FN_2 , KC_SPC , KC_BSPC, KC_DEL
+ ),
+ [_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_DEL ,
+ KC_TILD, 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] = LAYOUT(
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, KC_0, KC_1, KC_2, KC_3, KC_BSPC, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, KC_0, KC_4, KC_5, KC_6, KC_DEL, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, XXXXXXX, XXXXXXX,
+ _______, KC_0, KC_7, KC_8, KC_9, KC_DOT, _______, _______, _______, _______, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
+#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);
+ }
+ }
+ return false;
+}
+#endif
diff --git a/keyboards/chocofly/v1/rules.mk b/keyboards/chocofly/v1/rules.mk
new file mode 100644
index 0000000000..777b9b9872
--- /dev/null
+++ b/keyboards/chocofly/v1/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 = 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
+
+ENCODER_ENABLE = yes
diff --git a/keyboards/chocofly/v1/v1.c b/keyboards/chocofly/v1/v1.c
new file mode 100644
index 0000000000..6c142b7453
--- /dev/null
+++ b/keyboards/chocofly/v1/v1.c
@@ -0,0 +1,4 @@
+// Copyright 2022 Vitaly Volkov (@vlkv)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "v1.h"
diff --git a/keyboards/chocofly/v1/v1.h b/keyboards/chocofly/v1/v1.h
new file mode 100644
index 0000000000..5f07f6c325
--- /dev/null
+++ b/keyboards/chocofly/v1/v1.h
@@ -0,0 +1,28 @@
+// Copyright 2022 Vitaly Volkov (@vlkv)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "chocofly.h"
+
+#include "quantum.h"
+
+#define K__ KC_NO
+
+#define LAYOUT( \
+ K01, K07, K02, K08, K03, K09, K11, K04, K12, K05, K13, K06, \
+ K14, K22, K15, K23, K16, K24, K27, K19, K28, K20, K29, K21, \
+ K30, K38, K31, K39, K32, K40, K10, K43, K35, K44, K36, K45, K37, \
+ K46, K54, K47, K55, K48, K56, K25, K17, K18, K26, K59, K51, K60, K52, K61, K53, \
+ K57, K49, K41, K33, K34, K42, K50, K58 \
+) \
+{ \
+ { K01, K02, K03, K__, K__, K04, K05, K06}, \
+ { K07, K08, K09, K10, K__, 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} \
+}
diff --git a/keyboards/chocv/chocv.c b/keyboards/chocv/chocv.c
new file mode 100644
index 0000000000..c79f8a1b75
--- /dev/null
+++ b/keyboards/chocv/chocv.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 BrickBots Labs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "chocv.h"
diff --git a/keyboards/chocv/chocv.h b/keyboards/chocv/chocv.h
new file mode 100644
index 0000000000..2691dfcb83
--- /dev/null
+++ b/keyboards/chocv/chocv.h
@@ -0,0 +1,43 @@
+/* Copyright 2021 BrickBots Labs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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_3x5_3( \
+ 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 \
+ ) \
+ { \
+ { 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, k30, k31, k32, k33, k34, k35, KC_NO, KC_NO} \
+ }
+
diff --git a/keyboards/chocv/config.h b/keyboards/chocv/config.h
new file mode 100644
index 0000000000..16c2682646
--- /dev/null
+++ b/keyboards/chocv/config.h
@@ -0,0 +1,35 @@
+/* Copyright 2021 BrickBots Labs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 4
+ #define MATRIX_COLS 10
+
+
+ #define MATRIX_ROW_PINS { F4, F5, D1, D0 }
+ #define MATRIX_COL_PINS { B6, B2, B3, B1, F7, C6, D7, E6, B4, B5}
+
+ /* 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/chocv/info.json b/keyboards/chocv/info.json
new file mode 100644
index 0000000000..707e43b5fa
--- /dev/null
+++ b/keyboards/chocv/info.json
@@ -0,0 +1,60 @@
+{
+ "keyboard_name": "chocV",
+ "manufacturer": "BrickBots Labs",
+ "url": "https://github.com/brickbots/chocV",
+ "maintainer": "Brickbots",
+ "usb": {
+ "vid": "0xBBB0",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_split_3x5_3": {
+ "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":"KC_LSFT", "x":3, "y":3.7},
+ {"label":"LC_LALT", "x":4, "y":3.7},
+ {"label":"KC_ENT", "x":5, "y":3.2, "h":1.5},
+
+ {"label":"KC_SPC", "x":7, "y":3.2, "h":1.5},
+ {"label":"KC_DEL", "x":8, "y":3.7},
+ {"label":"KC_RCTL", "x":9, "y":3.7}
+ ]
+ }
+ }
+}
diff --git a/keyboards/chocv/keymaps/default/keymap.c b/keyboards/chocv/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f6d2f0d270
--- /dev/null
+++ b/keyboards/chocv/keymaps/default/keymap.c
@@ -0,0 +1,30 @@
+/* Copyright 2021 BrickBots Labs
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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,
+};
+
+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_LSFT, KC_LALT, KC_ENT, KC_SPC, KC_DEL, KC_RCTL
+ ),
+};
diff --git a/keyboards/chocv/keymaps/default/readme.md b/keyboards/chocv/keymaps/default/readme.md
new file mode 100644
index 0000000000..0d9b3630ab
--- /dev/null
+++ b/keyboards/chocv/keymaps/default/readme.md
@@ -0,0 +1,24 @@
+# chocV Keymap
+
+The default keymap provided here is useful for testing and as a base
+for your own mapping, but does not include layers and is missing many
+keycodes. To build the default keymap for testing:
+
+make chocv:default
+
+## Give Miryoku a try
+
+If you are looking for a full fetured keymap, you can build the
+firmware with Miryoku without any additional work
+
+For details and building instructions and options please see the
+[The official Miryoku QMK
+Repo](https://github.com/manna-harbour/miryoku_qmk/tree/miryoku/users/manna-harbour_miryoku)
+
+The command to build with the default Miryoku layout is:
+
+make chocv:manna-habour_miryoku
+
+
+
+
diff --git a/keyboards/chocv/readme.md b/keyboards/chocv/readme.md
new file mode 100644
index 0000000000..67bb9aad02
--- /dev/null
+++ b/keyboards/chocv/readme.md
@@ -0,0 +1,26 @@
+# chocV
+
+A 36 key choc keyboard based on the [Horizon](https://github.com/skarrmann/horizon)
+construction and a trimmed down [BabyV](https://www.instagram.com/eyeohdesigns/?hl=en) layout!
+
+![chocV Lineage](https://raw.githubusercontent.com/brickbots/chocV/main/images/lineage.jpeg "chocV Lineage")
+
+* Keyboard Maintainer: [Brickbots](https://github.com/brickbots)
+* Hardware Supported: The chocV PCB is public domain and is compatible with any
+pro-micro footprint MCU
+* Hardware Availability: [The chocV github repo](https://github.com/brickbots/chocV)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make chocv:default
+
+Flashing example for this keyboard:
+
+ make chocv:default:flash
+
+## Bootloader
+
+Enter the bootloader using the hardware reset button on the top middle of the
+near the MCU.
+
+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/chocv/rules.mk b/keyboards/chocv/rules.mk
new file mode 100644
index 0000000000..27b4a6282b
--- /dev/null
+++ b/keyboards/chocv/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+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
+NKRO_ENABLE = 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 = split_3x5_3
diff --git a/keyboards/chord/zero/config.h b/keyboards/chord/zero/config.h
new file mode 100644
index 0000000000..9d552d5af4
--- /dev/null
+++ b/keyboards/chord/zero/config.h
@@ -0,0 +1,4 @@
+// Copyright (c) 2022 Simon Hengel <sol@typeful.net>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
diff --git a/keyboards/chord/zero/info.json b/keyboards/chord/zero/info.json
new file mode 100644
index 0000000000..c49a8a3c2f
--- /dev/null
+++ b/keyboards/chord/zero/info.json
@@ -0,0 +1,65 @@
+{
+ "manufacturer": "Simon Hengel",
+ "keyboard_name": "CHORD ZERO",
+ "usb": {
+ "device_version": "1.0.0",
+ "vid": "0x1D50",
+ "pid": "0x617C"
+ },
+ "url": "https://github.com/sol/chord-zero#readme",
+ "maintainer": "sol",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "steno": true
+ },
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "cols": ["GP22", "GP9", "GP21", "GP11", "GP19", "GP12"],
+ "rows": ["GP26", "GP20", "GP18", "GP17", "GP7", "GP10", "GP13", "GP14"]
+ },
+ "layouts": {
+ "LAYOUT_zero": {
+ "layout": [
+ { "matrix": [0, 0], "y": 0, "x": 0 },
+ { "matrix": [0, 1], "y": 0, "x": 1 },
+ { "matrix": [0, 2], "y": 0, "x": 2 },
+ { "matrix": [0, 3], "y": 0, "x": 3 },
+ { "matrix": [0, 4], "y": 0, "x": 4 },
+ { "matrix": [0, 5], "y": 0, "x": 5 },
+ { "matrix": [4, 5], "y": 0, "x": 8 },
+ { "matrix": [4, 4], "y": 0, "x": 9 },
+ { "matrix": [4, 3], "y": 0, "x": 10 },
+ { "matrix": [4, 2], "y": 0, "x": 11 },
+ { "matrix": [4, 1], "y": 0, "x": 12 },
+ { "matrix": [4, 0], "y": 0, "x": 13 },
+
+ { "matrix": [1, 0], "y": 1, "x": 0 },
+ { "matrix": [1, 1], "y": 1, "x": 1 },
+ { "matrix": [1, 2], "y": 1, "x": 2 },
+ { "matrix": [1, 3], "y": 1, "x": 3 },
+ { "matrix": [1, 4], "y": 1, "x": 4 },
+ { "matrix": [1, 5], "y": 1, "x": 5 },
+ { "matrix": [5, 5], "y": 1, "x": 8 },
+ { "matrix": [5, 4], "y": 1, "x": 9 },
+ { "matrix": [5, 3], "y": 1, "x": 10 },
+ { "matrix": [5, 2], "y": 1, "x": 11 },
+ { "matrix": [5, 1], "y": 1, "x": 12 },
+ { "matrix": [5, 0], "y": 1, "x": 13 },
+
+ { "matrix": [3, 3], "y": 3, "x": 3 },
+ { "matrix": [3, 4], "y": 3, "x": 4 },
+ { "matrix": [3, 5], "y": 3, "x": 5 },
+ { "matrix": [7, 5], "y": 3, "x": 8 },
+ { "matrix": [7, 4], "y": 3, "x": 9 },
+ { "matrix": [7, 3], "y": 3, "x": 10 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/chord/zero/keymaps/default/keymap.c b/keyboards/chord/zero/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a394893e1b
--- /dev/null
+++ b/keyboards/chord/zero/keymaps/default/keymap.c
@@ -0,0 +1,25 @@
+// Copyright (c) 2022 Simon Hengel <sol@typeful.net>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+#include "keymap_steno.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_zero(
+ STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR,
+ STN_PWR, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR,
+ STN_N1, STN_A, STN_O, STN_E, STN_U, STN_N7
+ )
+};
+
+const uint16_t PROGMEM bootloader_combo[] = {
+ keymaps[0][0][0], keymaps[0][4][0],
+ keymaps[0][1][0], keymaps[0][5][0],
+ keymaps[0][3][3], keymaps[0][7][3]
+, COMBO_END };
+
+combo_t key_combos[] = {
+ COMBO(bootloader_combo, QK_BOOTLOADER),
+};
+
+uint16_t COMBO_LEN = sizeof(key_combos) / sizeof(key_combos[0]);
diff --git a/keyboards/idobao/id80/v1/ansi/keymaps/msf/rules.mk b/keyboards/chord/zero/keymaps/default/rules.mk
index ab1e438182..ab1e438182 100644
--- a/keyboards/idobao/id80/v1/ansi/keymaps/msf/rules.mk
+++ b/keyboards/chord/zero/keymaps/default/rules.mk
diff --git a/keyboards/chord/zero/readme.md b/keyboards/chord/zero/readme.md
new file mode 100644
index 0000000000..51e3f2ce10
--- /dev/null
+++ b/keyboards/chord/zero/readme.md
@@ -0,0 +1,37 @@
+# CHORD ZERO Stenographic Keyboard
+
+![CHORD ZERO](https://i.imgur.com/aS2MPQ2h.jpg)
+
+CHORD ZERO is a stenographic keyboard that can be used with
+[Plover](https://www.openstenoproject.org/plover/) or any other application
+that supports the [TX
+Bolt](https://docs.qmk.fm/#/feature_stenography?id=tx-bolt) or
+[GeminiPR](https://docs.qmk.fm/#/feature_stenography?id=geminipr) protocol.
+
+* Keyboard Maintainer: [Simon Hengel](https://github.com/sol)
+* Hardware Supported: REV 0, REV 1
+* Hardware Availability: https://github.com/sol/chord-zero#readme
+
+Make example for this keyboard (after setting up your build environment):
+
+ make chord/zero:default
+
+or
+
+ qmk compile -kb chord/zero -km default
+
+This will generate `chord_zero_default.uf2`.
+
+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:
+
+* **Reset key combo**: Press the six keys at the outer columns on each side of the keyboard simultaneously while it is plugged in
+* **Bootmagic reset**: Hold down the top left key and plug in the keyboard
+* **Physical reset button**: Press the button on the back of the PCB and plug in the keyboard
+
+Once the keyboard is in bootloader mode you can mount it as a USB mass storage
+device and copy the firmware (the file `chord_zero_default.uf2`) onto it. Once
+copying is completed the keyboard will reboot automatically.
diff --git a/keyboards/chord/zero/rules.mk b/keyboards/chord/zero/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/chord/zero/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/chromatonemini/chromatonemini.c b/keyboards/chromatonemini/chromatonemini.c
new file mode 100644
index 0000000000..91caab7980
--- /dev/null
+++ b/keyboards/chromatonemini/chromatonemini.c
@@ -0,0 +1,208 @@
+/* Copyright 2021 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "chromatonemini.h"
+
+#ifdef RGB_MATRIX_ENABLE
+# define NO_LED 255
+
+led_config_t g_led_config = {
+ {
+#if 0
+ // register bottom two rows
+ { 0, 4, 3, 2, 1, 41, 5, NO_LED },
+ { 40, 6, 39, 7, 38, 8, 37, NO_LED },
+ { 9, 36, 10, 35, 11, 34, 12, NO_LED },
+ { 33, 13, 32, 14, 31, 15, 30, NO_LED },
+ { 16, 29, 17, 28, 18, 27, 19, NO_LED },
+ { 26, 20, 25, 21, 24, 22, 23, NO_LED }
+
+ // register middle two rows
+ { 0, 4, 3, 2, 1, 78, 42, NO_LED },
+ { 77, 43, 76, 44, 75, 45, 74, NO_LED },
+ { 46, 73, 47, 72, 48, 71, 49, NO_LED },
+ { 70, 50, 69, 51, 68, 52, 67, NO_LED },
+ { 53, 66, 54, 65, 55, 64, 56, NO_LED },
+ { 63, 57, 62, 58, 61, 59, 60, NO_LED }
+
+ // register top and bottom rows
+ { 0, 4, 3, 2, 1, 115, 5, NO_LED },
+ { 114, 6, 113, 7, 112, 8, 111, NO_LED },
+ { 9, 110, 10, 109, 11, 108, 12, NO_LED },
+ { 107, 13, 106, 14, 105, 15, 104, NO_LED },
+ { 16, 103, 17, 102, 18, 101, 19, NO_LED },
+ { 100, 20, 99, 21, 98, 22, 97, NO_LED }
+#else
+ // register top two rows
+ { 0, 4, 3, 2, 1, 115, 79, NO_LED },
+ { 114, 80, 113, 81, 112, 82, 111, NO_LED },
+ { 83, 110, 84, 109, 85, 108, 86, NO_LED },
+ { 107, 87, 106, 88, 105, 89, 104, NO_LED },
+ { 90, 103, 91, 102, 92, 101, 93, NO_LED },
+ { 100, 94, 99, 95, 98, 96, 97, NO_LED }
+#endif
+ }, {
+ { 14, 12 },
+ { 14, 36 },
+ { 19, 48 }, { 9, 48 },
+ { 14, 60 },
+ { 39, 60 }, { 49, 60 }, { 59, 60 }, { 69, 60 }, { 79, 60 }, { 89, 60 }, { 99, 60 }, { 109, 60 }, { 119, 60 }, { 129, 60 }, { 139, 60 }, { 149, 60 }, { 159, 60 }, { 169, 60 }, { 179, 60 }, { 189, 60 }, { 199, 60 }, { 209, 60 },
+ { 214, 48 }, { 204, 48 }, { 194, 48 }, { 184, 48 }, { 174, 48 }, { 164, 48 }, { 154, 48 }, { 144, 48 }, { 134, 48 }, { 124, 48 }, { 114, 48 }, { 104, 48 }, { 94, 48 }, { 84, 48 }, { 74, 48 }, { 64, 48 }, { 54, 48 }, { 44, 48 }, { 34, 48 },
+ { 39, 36 }, { 49, 36 }, { 59, 36 }, { 69, 36 }, { 79, 36 }, { 89, 36 }, { 99, 36 }, { 109, 36 }, { 119, 36 }, { 129, 36 }, { 139, 36 }, { 149, 36 }, { 159, 36 }, { 169, 36 }, { 179, 36 }, { 189, 36 }, { 199, 36 }, { 209, 36 },
+ { 214, 24 }, { 204, 24 }, { 194, 24 }, { 184, 24 }, { 174, 24 }, { 164, 24 }, { 154, 24 }, { 144, 24 }, { 134, 24 }, { 124, 24 }, { 114, 24 }, { 104, 24 }, { 94, 24 }, { 84, 24 }, { 74, 24 }, { 64, 24 }, { 54, 24 }, { 44, 24 }, { 34, 24 },
+ { 39, 12 }, { 49, 12 }, { 59, 12 }, { 69, 12 }, { 79, 12 }, { 89, 12 }, { 99, 12 }, { 109, 12 }, { 119, 12 }, { 129, 12 }, { 139, 12 }, { 149, 12 }, { 159, 12 }, { 169, 12 }, { 179, 12 }, { 189, 12 }, { 199, 12 }, { 209, 12 },
+ { 214, 0 }, { 204, 0 }, { 194, 0 }, { 184, 0 }, { 174, 0 }, { 164, 0 }, { 154, 0 }, { 144, 0 }, { 134, 0 }, { 124, 0 }, { 114, 0 }, { 104, 0 }, { 94, 0 }, { 84, 0 }, { 74, 0 }, { 64, 0} , { 54, 0 }, { 44, 0 }, { 34, 0 }
+ }, {
+ 1,
+ 4,
+ 4, 4,
+ 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
+ }
+};
+
+// indicator
+const uint8_t led_scale_indicator[12][12] = {
+ {23, 29, 35, 41, 60, 66, 72, 78, 97, 103, 109, 115}, // C
+ { 5, 11, 17, 42, 48, 54, 79, 85, 91, NO_LED, NO_LED, NO_LED}, // C#
+ {28, 34, 40, 65, 71, 77, 102, 108, 114, NO_LED, NO_LED, NO_LED}, // D
+ { 6, 12, 18, 43, 49, 55, 80, 86, 92, NO_LED, NO_LED, NO_LED}, // D#
+ {27, 33, 39, 64, 70, 76, 101, 107, 113, NO_LED, NO_LED, NO_LED}, // E
+ { 7, 13, 19, 44, 50, 56, 81, 87, 93, NO_LED, NO_LED, NO_LED}, // F
+ {26, 32, 38, 63, 69, 75, 100, 106, 112, NO_LED, NO_LED, NO_LED}, // F#
+ { 8, 14, 20, 45, 51, 57, 82, 88, 94, NO_LED, NO_LED, NO_LED}, // G
+ {25, 31, 37, 62, 68, 74, 99, 105, 111, NO_LED, NO_LED, NO_LED}, // G#
+ { 9, 15, 21, 46, 52, 58, 83, 89, 95, NO_LED, NO_LED, NO_LED}, // A
+ {24, 30, 36, 61, 67, 73, 98, 104, 110, NO_LED, NO_LED, NO_LED}, // A#
+ {10, 16, 22, 47, 53, 59, 84, 90, 96, NO_LED, NO_LED, NO_LED} // B
+};
+
+const uint8_t led_single_col_indicator[37][3] = {
+ {41, 78, 115}, // K01 = C1
+ { 5, 42, 79}, // K02 = C#1
+ {40, 77, 114}, // K03 = D1
+ { 6, 43, 80}, // K04 = D#1
+ {39, 76, 113}, // K05 = E1
+ { 7, 44, 81}, // K06 = F1
+ {38, 75, 112}, // K07 = F#1
+ { 8, 45, 82}, // K08 = G1
+ {37, 74, 111}, // K09 = G#1
+ { 9, 46, 83}, // K10 = A1
+ {36, 73, 110}, // K11 = A#1
+ {10, 47, 84}, // K12 = B1
+ {35, 72, 109}, // K13 = C2
+ {11, 48, 85}, // K14 = C#2
+ {34, 71, 108}, // K15 = D2
+ {12, 49, 86}, // K16 = D#2
+ {33, 70, 107}, // K17 = E2
+ {13, 50, 87}, // K18 = F2
+ {32, 69, 106}, // K19 = F#2
+ {14, 51, 88}, // K20 = G2
+ {31, 68, 105}, // K21 = G#2
+ {15, 52, 89}, // K22 = A2
+ {30, 67, 104}, // K23 = A#2
+ {16, 53, 90}, // K24 = B2
+ {29, 66, 103}, // K25 = C3
+ {17, 54, 91}, // K26 = C#3
+ {28, 65, 102}, // K27 = D3
+ {18, 55, 92}, // K28 = D#3
+ {27, 64, 101}, // K29 = E3
+ {19, 56, 93}, // K30 = F3
+ {26, 63, 100}, // K31 = F#3
+ {20, 57, 94}, // K32 = G3
+ {25, 62, 99}, // K33 = G#3
+ {21, 58, 95}, // K34 = A3
+ {24, 61, 98}, // K35 = A#3
+ {22, 59, 96}, // K36 = B3
+ {23, 60, 97} // K37 = C4
+};
+
+#endif // RGB_MATRIX_ENABLE
+
+uint8_t shift_led_indicator_left(uint8_t scale_indicator_col){
+ if (scale_indicator_col > 0) {
+ scale_indicator_col--;
+ } else {
+ scale_indicator_col = 11;
+ }
+ return scale_indicator_col;
+}
+
+uint8_t shift_led_indicator_right(uint8_t scale_indicator_col){
+ if (scale_indicator_col < 11) {
+ scale_indicator_col++;
+ } else {
+ scale_indicator_col = 0;
+ }
+ return scale_indicator_col;
+}
+
+#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);
+# 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
+}
+
+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/chromatonemini/chromatonemini.h b/keyboards/chromatonemini/chromatonemini.h
new file mode 100644
index 0000000000..83838be73e
--- /dev/null
+++ b/keyboards/chromatonemini/chromatonemini.h
@@ -0,0 +1,122 @@
+/* Copyright 2021 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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( \
+ enc, sustain, ccw, cw, \
+ up, \
+ left, right, k01, k03, k05, k07, k09, k11, k13, k15, k17, k19, k21, k23, k25, k27, k29, k31, k33, k35, k37, \
+ down, k02, k04, k06, k08, k10, k12, k14, k16, k18, k20, k22, k24, k26, k28, k30, k32, k34, k36 \
+) { \
+ { enc, down, left, right, up, k01, k02, sustain }, \
+ { k03, k04, k05, k06, k07, k08, k09, ccw }, \
+ { k10, k11, k12, k13, k14, k15, k16, cw }, \
+ { k17, k18, k19, k20, k21, k22, k23, KC_NO }, \
+ { k24, k25, k26, k27, k28, k29, k30, KC_NO }, \
+ { k31, k32, k33, k34, k35, k36, k37, KC_NO } \
+}
+
+
+#ifdef RGB_MATRIX_ENABLE
+extern led_config_t g_led_config;
+extern const uint8_t led_scale_indicator[12][12];
+extern const uint8_t led_single_col_indicator[37][3];
+
+ // default base layer color
+# define BASE_LAYER_COLOR RGB_DARKGOLDENROD
+
+ // border color
+# define FLIP_BORDER_COLOR RGB_DARKRED
+
+ // flip entirely
+# define FLIPB_LAYER_COLOR RGB_DARKYELLOW
+
+ // channel separation group
+# define SEPALEFT_LAYER_COLOR RGB_DARKGREEN
+# define SEPAHALF_LAYER_COLOR RGB_DARKGREEN
+# define SEPARIGHT_LAYER_COLOR RGB_DARKGREEN
+
+ // Trans group
+# define TRANS_LAYER_COLOR RGB_DARKORANGE
+# define SEPALEFT_T_LAYER_COLOR RGB_DARKORANGE
+# define SEPAHALF_T_LAYER_COLOR RGB_DARKORANGE
+# define SEPARIGHT_T_LAYER_COLOR RGB_DARKORANGE
+# define FLIPT_LAYER_COLOR RGB_DARKORANGE
+#endif // RGB_MATRIX_ENABLE
+
+// Defines names for use in _FN layer to specify which column to be used to turn on the LEDs.
+// use this with led_single_col_indicator[37][3], ex. led_single_col_indicator[_FN_C2][0].
+enum my_key_names {
+ _KEY01= 0,
+ _KEY02,
+ _KEY03,
+ _KEY04,
+ _KEY05,
+ _KEY06,
+ _KEY07,
+ _KEY08,
+ _KEY09,
+ _KEY10,
+ _KEY11,
+ _KEY12,
+ _KEY13,
+ _KEY14,
+ _KEY15,
+ _KEY16,
+ _KEY17,
+ _KEY18,
+ _KEY19,
+ _KEY20,
+ _KEY21,
+ _KEY22,
+ _KEY23,
+ _KEY24,
+ _KEY25,
+ _KEY26,
+ _KEY27,
+ _KEY28,
+ _KEY29,
+ _KEY30,
+ _KEY31,
+ _KEY32,
+ _KEY33,
+ _KEY34,
+ _KEY35,
+ _KEY36,
+ _KEY37,
+};
+
+#ifdef MIDI_ENABLE
+extern MidiDevice midi_device;
+#endif // MIDI_ENABLE
+
+uint8_t shift_led_indicator_left(uint8_t scale_indicator_col);
+uint8_t shift_led_indicator_right(uint8_t scale_indicator_col);
+
+void encoder_action_unregister(void);
+
+void encoder_action_register(uint8_t index, bool clockwise);
diff --git a/keyboards/chromatonemini/config.h b/keyboards/chromatonemini/config.h
new file mode 100644
index 0000000000..49b8eef7a8
--- /dev/null
+++ b/keyboards/chromatonemini/config.h
@@ -0,0 +1,283 @@
+/*
+Copyright 2021 3araht
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 6
+#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 { E6, D7, C6, D4, D0, D1 }
+#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 // 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
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+//#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
+
+
+#ifdef RGB_MATRIX_ENABLE
+
+/* ws2812 RGB MATRIX */
+# define DRIVER_LED_TOTAL 116
+
+ // reacts to keypresses
+# define RGB_MATRIX_KEYPRESSES
+
+// for all fingers used at once.
+# define LED_HITS_TO_REMEMBER 10
+
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
+# define RGB_MATRIX_STARTUP_SPD 127
+# define RGB_MATRIX_CENTER { 124, 32 }
+// the above brighness setting has no effect on rgb_matrix_set_color().
+// Use darker colors instead.
+/* RGB darker COLORS */
+# define RGB_DARKWHITE 0x33, 0x33, 0x33
+# define RGB_DARKRED 0x33, 0x0, 0x0
+# define RGB_DARKCORAL 0x33, 0x18, 0xF
+# define RGB_DARKORANGE 0x33, 0x19, 0x0
+# define RGB_DARKGOLDENROD 0x2B, 0x21, 0x6
+# define RGB_DARKGOLD 0x33, 0x2B, 0x0
+# define RGB_DARKYELLOW 0x33, 0x33, 0x0
+# define RGB_DARKCHARTREUSE 0x19, 0x33, 0x0
+# define RGB_DARKGREEN 0x0, 0x33, 0x0
+# define RGB_DARKSPRINGGREEN 0x0, 0x33, 0x19
+# define RGB_DARKTURQUOISE 0xE, 0x16, 0x15
+# define RGB_DARKTEAL 0x0, 0x19, 0x19
+# define RGB_DARKCYAN 0x0, 0x33, 0x33
+# define RGB_DARKAZURE 0x1E, 0x31, 0x33
+# define RGB_DARKBLUE 0x0, 0x0, 0x33
+# define RGB_DARKPURPLE 0x18, 0x0, 0x33
+# define RGB_DARKMAGENTA 0x33, 0x0, 0x33
+# define RGB_DARKPINK 0x33, 0x19, 0x26
+
+// https://docs.qmk.fm/#/feature_rgb_matrix
+// Enable suspend mode.
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+# ifdef CONSOLE_ENABLE
+# define ENABLE_RGB_MATRIX_SOLID_COLOR
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# else
+# 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_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 // CONSOLE_ENABLE
+#endif // RGB_MATRIX_ENABLE
+
+/* 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
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
+
+/* Audio */
+#ifdef AUDIO_ENABLE
+# define AUDIO_PIN B6 // use PB6 = PIN10 as Audio output
+// #define DAC_SAMPLE_MAX 32768U
+# define DAC_SAMPLE_MAX 65535U
+// #define AUDIO_CLICKY
+# define NO_MUSIC_MODE
+// #define STARTUP_SONG SONG(FANTASIE_IMPROMPTU)
+// #define STARTUP_SONG SONG(NOCTURNE_OP_9_NO_1)
+// #define STARTUP_SONG SONG(USSR_ANTHEM)
+// #define STARTUP_SONG SONG(CAMPANELLA)
+#endif // AUDIO_ENABLE
+
+/*
+ * 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.
+*/
+#ifdef MIDI_ENABLE
+# define MIDI_ADVANCED
+// Initial velocity value (avoid using 127 since it is used as a special number in some sound sources.)
+# define MIDI_INITIAL_VELOCITY 117
+#endif // MIDI_ENABLE
+
+/*
+ * Encoder options
+ */
+#ifdef ENCODER_ENABLE
+# define ENCODERS_PAD_A { B5 }
+# define ENCODERS_PAD_B { B4 }
+# define ENCODER_RESOLUTION 4
+# define TAP_CODE_DELAY 10
+
+#define ENCODERS 1
+#define ENCODERS_CW_KEY { {7, 2} }
+#define ENCODERS_CCW_KEY { {7, 1} }
+#endif // ENCODER_ENABLE
+
+/* 2021/01/22 added to shrink firmware size */
+// NO_ACTION_TAPPING -1964 bytes, however, this disables Layer mods...
+// #define NO_ACTION_TAPPING
+// NO_ACTION_ONESHOT -388 bytes
+#define NO_ACTION_ONESHOT
diff --git a/keyboards/chromatonemini/info.json b/keyboards/chromatonemini/info.json
new file mode 100644
index 0000000000..5f77db05ee
--- /dev/null
+++ b/keyboards/chromatonemini/info.json
@@ -0,0 +1,61 @@
+{
+ "keyboard_name": "chromatonemini",
+ "manufacturer": "3araht",
+ "url": "https://github.com/3araht/chromatonemini",
+ "maintainer": "3araht",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xF4B4",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"enc", "x":0.5, "y":0},
+ {"label":"sustain", "x":1.5, "y":0},
+ {"label":"ccw", "x":2.5, "y":0},
+ {"label":"cw", "x":3.5, "y":0},
+ {"label":"up", "x":0.5, "y":1.5},
+ {"label":"left", "x":0, "y":2.5},
+ {"label":"right", "x":1, "y":2.5},
+ {"label":"k01", "x":2.5, "y":2.5},
+ {"label":"k03", "x":3.5, "y":2.5},
+ {"label":"k05", "x":4.5, "y":2.5},
+ {"label":"k07", "x":5.5, "y":2.5},
+ {"label":"k09", "x":6.5, "y":2.5},
+ {"label":"k11", "x":7.5, "y":2.5},
+ {"label":"k13", "x":8.5, "y":2.5},
+ {"label":"k15", "x":9.5, "y":2.5},
+ {"label":"k17", "x":10.5, "y":2.5},
+ {"label":"k19", "x":11.5, "y":2.5},
+ {"label":"k21", "x":12.5, "y":2.5},
+ {"label":"k23", "x":13.5, "y":2.5},
+ {"label":"k25", "x":14.5, "y":2.5},
+ {"label":"k27", "x":15.5, "y":2.5},
+ {"label":"k29", "x":16.5, "y":2.5},
+ {"label":"k31", "x":17.5, "y":2.5},
+ {"label":"k33", "x":18.5, "y":2.5},
+ {"label":"k35", "x":19.5, "y":2.5},
+ {"label":"k37", "x":20.5, "y":2.5},
+ {"label":"down", "x":0.5, "y":3.5},
+ {"label":"k02", "x":3, "y":3.5},
+ {"label":"k04", "x":4, "y":3.5},
+ {"label":"k06", "x":5, "y":3.5},
+ {"label":"k08", "x":6, "y":3.5},
+ {"label":"k10", "x":7, "y":3.5},
+ {"label":"k12", "x":8, "y":3.5},
+ {"label":"k14", "x":9, "y":3.5},
+ {"label":"k16", "x":10, "y":3.5},
+ {"label":"k18", "x":11, "y":3.5},
+ {"label":"k20", "x":12, "y":3.5},
+ {"label":"k22", "x":13, "y":3.5},
+ {"label":"k24", "x":14, "y":3.5},
+ {"label":"k26", "x":15, "y":3.5},
+ {"label":"k28", "x":16, "y":3.5},
+ {"label":"k30", "x":17, "y":3.5},
+ {"label":"k32", "x":18, "y":3.5},
+ {"label":"k34", "x":19, "y":3.5},
+ {"label":"k36", "x":20, "y":3.5}]
+ }
+ }
+}
diff --git a/keyboards/chromatonemini/keymaps/default/keymap.c b/keyboards/chromatonemini/keymaps/default/keymap.c
new file mode 100644
index 0000000000..102aba930a
--- /dev/null
+++ b/keyboards/chromatonemini/keymaps/default/keymap.c
@@ -0,0 +1,106 @@
+/* Copyright 2021 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _RESERVE,
+ _FN
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ L_BASE = SAFE_RANGE,
+ L_RESERVE,
+ VERSION
+};
+
+// Long press: go to _FN layer, tap: MUTE
+#define FN_MUTE LT(_FN, KC_MUTE)
+
+// Used to set octave to MI_OCT_0
+extern midi_config_t midi_config;
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ FN_MUTE, MI_SUS, KC_VOLD, KC_VOLU,
+ MI_BENDU,
+ MI_TRNSD, MI_TRNSU, MI_C_2, MI_D_2, MI_E_2, MI_Fs_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
+ MI_BENDD, MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
+ ),
+
+ /* RESERVE */
+ [_RESERVE] = LAYOUT(
+ _______, _______, _______, _______,
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN] = LAYOUT(
+ _______, XXXXXXX, XXXXXXX, XXXXXXX,
+ MI_VELU,
+ MI_OCTD, MI_OCTU, L_BASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, XXXXXXX, XXXXXXX,
+ MI_VELD, L_RESERVE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, XXXXXXX, XXXXXXX
+ )
+};
+
+// commom codes called from eeconfig_init_user() and keyboard_post_init_user().
+void my_init(void){
+ // Set octave to MI_OCT_1
+ 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;
+ default_layer_set(1UL << _BASE);
+}
+
+void eeconfig_init_user(void) { // EEPROM is getting reset!
+ midi_init();
+ my_init(); // commom codes called from eeconfig_init_user() and keyboard_post_init_user().
+}
+
+void keyboard_post_init_user(void) {
+ my_init(); // commom codes called from eeconfig_init_user() and keyboard_post_init_user().
+};
+
+void reset_scale_indicator(void) {
+ // reset transpose value and scale_indicator_col to default.
+ midi_config.transpose = 0;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+
+ case L_BASE:
+ reset_scale_indicator();
+ default_layer_set(1UL << _BASE);
+ break;
+
+ case L_RESERVE:
+ reset_scale_indicator();
+ default_layer_set(1UL << _RESERVE);
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/chromatonemini/keymaps/default/readme.md b/keyboards/chromatonemini/keymaps/default/readme.md
new file mode 100644
index 0000000000..4a18250f97
--- /dev/null
+++ b/keyboards/chromatonemini/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for chromatonemini
diff --git a/keyboards/chromatonemini/keymaps/led/keymap.c b/keyboards/chromatonemini/keymaps/led/keymap.c
new file mode 100644
index 0000000000..99da8ed0c9
--- /dev/null
+++ b/keyboards/chromatonemini/keymaps/led/keymap.c
@@ -0,0 +1,682 @@
+/* Copyright 2021 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+// define which MIDI ch to use.
+// Note that (actual MIDI ch# - 1) -> 0 .. 15 is used for coding.
+// ch1
+#define DEFAULT_MAIN_CH_NUMBER 0
+// ch3
+#define DEFAULT_SUB_CH_NUMBER 2
+// ch2
+#define ALT_MAIN_CH_NUMBER 1
+// ch4
+#define ALT_SUB_CH_NUMBER 3
+static uint8_t midi_left_ch = DEFAULT_SUB_CH_NUMBER; // By default, DEFAULT_SUB_CH_NUMBER is used for left side when separated.
+
+// By default( when use_alt_ch_gr == false), DEFAULT ch group (DEFAULT_MAIN_CH_NUMBER for entirely, or right side when separated, DEFAULT_SUB_CH_NUMBER for left side) is used.
+// When false, ALT ch group (ALT_MAIN_CH_NUMBER for entirely, or right side when separated, ALT_SUB_CH_NUMBER for left side) is used.
+static bool use_alt_ch_gr = false;
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE, // Base layer, shift mode, single channel.
+ _SEPALEFTOCT, // 1st oct channel separated version. Shift mode.
+ _SEPAHALF, // Half channel separated version. Shift mode.
+ _SEPARIGHTOCT, // 2nd oct channel separated version. Shift mode.
+ _TRANS, // Transpose feature is enabled instead of shift mode, single channel.
+ _FLIPBASE, // Horizontal flipped version entirely. single channel.
+ _FLIPTRANS, // Horizontal flipped version entirely. Transpose is used. single channel.
+ _FN // FuNction layer. This must be at the end of the enumurate to use the range from _LS_FN ... _LS_FN_MAX for FN layer LED settings.
+};
+
+// Layer State
+#define _LS_BASE (1UL << _BASE)
+#define _LS_SEPALEFTOCT (1UL << _SEPALEFTOCT)
+#define _LS_SEPAHALF (1UL << _SEPAHALF)
+#define _LS_SEPARIGHTOCT (1UL << _SEPARIGHTOCT)
+#define _LS_FLIPBASE (1UL << _FLIPBASE)
+
+#define _LS_TRANS (1UL << _BASE | 1UL << _TRANS)
+#define _LS_SEPALEFTOCT_T (1UL << _SEPALEFTOCT | 1UL << _TRANS)
+#define _LS_SEPAHALF_T (1UL << _SEPAHALF | 1UL << _TRANS)
+#define _LS_SEPARIGHTOCT_T (1UL << _SEPARIGHTOCT | 1UL << _TRANS)
+#define _LS_FLIPTRANS (1UL << _FLIPBASE | 1UL << _FLIPTRANS)
+
+#define _LS_FN (1UL << _FN)
+#define _LS_MAX (_LS_FN << 1)
+
+// Don't change the DEFAULT_SCALE_COL value below. It must be 0.
+#define DEFAULT_SCALE_COL 0
+static uint8_t scale_indicator_col = DEFAULT_SCALE_COL;
+static bool trans_mode_indicator_loc_sel = true; // when it is true, the location is _KEY01, _KEY13, ...
+
+// use led indicator or not.
+static bool led_indicator_enable = true;
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ SHIFT_L = SAFE_RANGE,
+ SHIFT_R,
+ TGLINDI, // ToGgLe INDIcator
+ TGLINTR, // ToGgLe INdicator location {(_KEY01, _KEY13, _KEY25, _KEY37) or (_KEY02, _KEY14, _KEY26) / (_KEY12, _KEY24, _KEY36)}in TRans mode
+ TGLTRNS, // ToGgLe TRaNS and shift
+ TGLCHGR, // ToGgLe CH GRoup
+ VERSION,
+
+ B_BASE, // border set to the left end.
+ B_LEFT, // border set to the 1st left octave.
+ B_CENTER, // border set to the center.
+ B_RIGHT, // border set to the 1st right octave.
+ B_FLIP, // border set to the right end.
+
+ // MY tone for _FLIPHALF and _FLIPLEFTOCT layers to distinguish the notes to avoid sustain effect, etc.
+ // Since they are flipped, their subscripts are not MY_ but YM_, to make them easier to tell.
+ YM_TONE_MIN,
+
+ YM_C = YM_TONE_MIN,
+ YM_Cs,
+ YM_Db = YM_Cs,
+ YM_D,
+ YM_Ds,
+ YM_Eb = YM_Ds,
+ YM_E,
+ YM_F,
+ YM_Fs,
+ YM_Gb = YM_Fs,
+ YM_G,
+ YM_Gs,
+ YM_Ab = YM_Gs,
+ YM_A,
+ YM_As,
+ YM_Bb = YM_As,
+ YM_B,
+
+ YM_C_1,
+ YM_Cs_1,
+ YM_Db_1 = YM_Cs_1,
+ YM_D_1,
+ YM_Ds_1,
+ YM_Eb_1 = YM_Ds_1,
+ YM_E_1,
+ YM_F_1,
+ YM_Fs_1,
+ YM_Gb_1 = YM_Fs_1,
+ YM_G_1,
+ YM_Gs_1,
+ YM_Ab_1 = YM_Gs_1,
+ YM_A_1,
+ YM_As_1,
+ YM_Bb_1 = YM_As_1,
+ YM_B_1,
+
+ YM_C_2,
+ YM_Cs_2,
+ YM_Db_2 = YM_Cs_2,
+ YM_D_2,
+ YM_Ds_2,
+ YM_Eb_2 = YM_Ds_2,
+ YM_E_2,
+ YM_F_2,
+ YM_Fs_2,
+ YM_Gb_2 = YM_Fs_2,
+ YM_G_2,
+ YM_Gs_2,
+ YM_Ab_2 = YM_Gs_2,
+ YM_A_2,
+ YM_As_2,
+ YM_Bb_2 = YM_As_2,
+ YM_B_2,
+
+ YM_C_3,
+ YM_Cs_3,
+ YM_Db_3 = YM_Cs_3,
+ YM_D_3,
+ YM_Ds_3,
+ YM_Eb_3 = YM_Ds_3,
+ YM_E_3,
+ YM_F_3,
+ YM_Fs_3,
+ YM_Gb_3 = YM_Fs_3,
+ YM_G_3,
+ YM_Gs_3,
+ YM_Ab_3 = YM_Gs_3,
+ YM_A_3,
+ YM_As_3,
+ YM_Bb_3 = YM_As_3,
+ YM_B_3,
+
+ YM_C_4,
+ YM_Cs_4,
+ YM_Db_4 = YM_Cs_4,
+ YM_D_4,
+ YM_Ds_4,
+ YM_Eb_4 = YM_Ds_4,
+ YM_E_4,
+ YM_F_4,
+ YM_Fs_4,
+ YM_Gb_4 = YM_Fs_4,
+ YM_G_4,
+ YM_Gs_4,
+ YM_Ab_4 = YM_Gs_4,
+ YM_A_4,
+ YM_As_4,
+ YM_Bb_4 = YM_As_4,
+ YM_B_4,
+
+ YM_C_5,
+ YM_Cs_5,
+ YM_Db_5 = YM_Cs_5,
+ YM_D_5,
+ YM_Ds_5,
+ YM_Eb_5 = YM_Ds_5,
+ YM_E_5,
+ YM_F_5,
+ YM_Fs_5,
+ YM_Gb_5 = YM_Fs_5,
+ YM_G_5,
+ YM_Gs_5,
+ YM_Ab_5 = YM_Gs_5,
+ YM_A_5,
+ YM_As_5,
+ YM_Bb_5 = YM_As_5,
+ YM_B_5,
+
+ YM_C_6,
+ YM_TONE_MAX = YM_C_6
+};
+
+#define MY_TONE_COUNT (YM_TONE_MAX - YM_TONE_MIN + 1)
+static uint8_t my_tone_status[MY_TONE_COUNT];
+
+// Long press: go to _FN layer, tap: MUTE
+#define FN_MUTE LT(_FN, KC_MUTE)
+
+// Used to set octave to MI_OCT_0
+extern midi_config_t midi_config;
+static bool is_trans_mode = false; // By default, shift mode is chosen.
+
+static uint8_t key_separator_col = _KEY01; // (_KEY01 .. _KEY37). By default, _KEY01 (= _BASE layer) is chosen. _KEY13 = *LEFT, _KEY19 = *HALF, _KEY25 = *RIGHT, _KEY37 = _FLIPBASE and _FLIPTRANS.
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ FN_MUTE, MI_SUS, KC_VOLD, KC_VOLU,
+ MI_BENDU,
+ SHIFT_L, SHIFT_R, MI_C_2, MI_D_2, MI_E_2, MI_Fs_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
+ MI_BENDD, MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
+ ),
+
+ /* 1 octave on the left side is ch2, others are ch1 (normal) */
+ [_SEPALEFTOCT] = LAYOUT(
+ _______, _______, _______, _______,
+ _______,
+ SHIFT_L, SHIFT_R, YM_C_2, YM_D_2, YM_E_2, YM_Fs_2, YM_Ab_2, YM_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
+ _______, YM_Db_2, YM_Eb_2, YM_F_2, YM_G_2, YM_A_2, YM_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
+ ),
+
+ /* Half ch2, half ch1 (normal) */
+ [_SEPAHALF] = LAYOUT(
+ _______, _______, _______, _______,
+ _______,
+ SHIFT_L, SHIFT_R, YM_C_2, YM_D_2, YM_E_2, YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
+ _______, YM_Db_2, YM_Eb_2, YM_F_2, YM_G_2, YM_A_2, YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
+ ),
+
+ /* 2 octave on the left side is ch2, others are ch1 (normal) */
+ [_SEPARIGHTOCT] = LAYOUT(
+ _______, _______, _______, _______,
+ _______,
+ SHIFT_L, SHIFT_R, YM_C_2, YM_D_2, YM_E_2, YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3, YM_Fs_3, YM_Ab_3, YM_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
+ _______, YM_Db_2, YM_Eb_2, YM_F_2, YM_G_2, YM_A_2, YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3, YM_G_3, YM_A_3, YM_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
+ ),
+
+ /* TRANS This layer must locate 1 layer below _FN layer. */
+ [_TRANS] = LAYOUT(
+ _______, _______, _______, _______,
+ _______,
+ MI_TRNSD, MI_TRNSU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* Flip Base SFIFTUP and SHIFT_L are swapped. */
+ [_FLIPBASE] = LAYOUT(
+ FN_MUTE, MI_SUS, KC_VOLD, KC_VOLU,
+ MI_BENDU,
+ SHIFT_L, SHIFT_R, MI_C_5, MI_Bb_4, MI_Ab_4, MI_Fs_4, MI_E_4, MI_D_4, MI_C_4, MI_Bb_3, MI_Ab_3, MI_Fs_3, MI_E_3, MI_D_3, MI_C_3, MI_Bb_2, MI_Ab_2, MI_Fs_2, MI_E_2, MI_D_2, MI_C_2,
+ MI_BENDD, MI_B_4, MI_A_4, MI_G_4, MI_F_4, MI_Eb_4, MI_Db_4, MI_B_3, MI_A_3, MI_G_3, MI_F_3, MI_Eb_3, MI_Db_3, MI_B_2, MI_A_2, MI_G_2, MI_F_2, MI_Eb_2, MI_Db_2
+ ),
+
+ /* Flip Trans This layer must locate 1 layer above _FLIPBASE layer. MI_TRNSU and MI_TRNSD are swapped. */
+ [_FLIPTRANS] = LAYOUT(
+ _______, _______, _______, _______,
+ _______,
+ MI_TRNSU, MI_TRNSD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN] = LAYOUT(
+ _______, XXXXXXX, RGB_RMOD, RGB_MOD,
+ MI_VELU,
+ MI_OCTD, MI_OCTU, B_BASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, B_LEFT, XXXXXXX, XXXXXXX, B_CENTER, XXXXXXX, XXXXXXX, B_RIGHT, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, XXXXXXX, B_FLIP,
+ MI_VELD, TGLINTR, TGLTRNS, TGLCHGR, XXXXXXX, XXXXXXX, RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI, RGB_RMOD, RGB_MOD, EEP_RST, TGLINDI, RGB_TOG
+ )
+};
+
+// commom codes called from eeconfig_init_user() and keyboard_post_init_user().
+void my_init(void){
+ // Set octave to MI_OCT_1
+ 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;
+ default_layer_set(_LS_BASE);
+ layer_state_set(_LS_BASE);
+
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_sethsv(HSV_BLUE);
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_my_solid_reactive_col);
+#endif // RGB_MATRIX_ENABLE
+}
+
+void eeconfig_init_user(void) { // EEPROM is getting reset!
+ midi_init();
+
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_enable();
+ rgb_matrix_set_speed(RGB_MATRIX_STARTUP_SPD);
+#endif // RGB_MATRIX_ENABLE
+ my_init(); // commom codes called from eeconfig_init_user() and keyboard_post_init_user().
+}
+
+void keyboard_post_init_user(void) {
+ for (uint8_t i = 0; i < MY_TONE_COUNT; i++) {
+ my_tone_status[i] = MIDI_INVALID_NOTE;
+ }
+ my_init(); // commom codes called from eeconfig_init_user() and keyboard_post_init_user().
+}
+
+void reset_scale_indicator(void) {
+ // reset transpose value and scale_indicator_col to default.
+ midi_config.transpose = 0;
+ scale_indicator_col = DEFAULT_SCALE_COL;
+ trans_mode_indicator_loc_sel = true;
+}
+
+void reset_all(void) {
+ reset_scale_indicator();
+ is_trans_mode = false; // trans mode is disabled by default.
+}
+
+void my_process_midi4single_note(uint8_t channel, uint16_t keycode, keyrecord_t *record, uint8_t *my_tone_status) {
+ uint8_t mytone = keycode - YM_TONE_MIN;
+ uint16_t mykeycode = mytone + MIDI_TONE_MIN;
+ // uint16_t mykeycode = keycode - YM_TONE_MIN;
+ // uint8_t mytone = mykeycode - MIDI_TONE_MIN;
+ uint8_t velocity = midi_config.velocity;
+ // uprintf("keycode=%u,mykeycode=%u,mytone =%u,velo = %u\n", keycode, mykeycode, mytone, velocity);
+ if (record->event.pressed) {
+ if (my_tone_status[mytone] == MIDI_INVALID_NOTE) {
+ uint8_t note = midi_compute_note(mykeycode);
+ midi_send_noteon(&midi_device, channel, note, velocity);
+ dprintf("midi noteon channel:%d note:%d mytone:%d velocity:%d\n", channel, note, mytone, velocity);
+ // uprintf("midi noteon channel:%d note:%d mytone:%d velocity:%d\n", channel, note, mytone, velocity);
+ my_tone_status[mytone] = note; // store root_note status.
+ }
+ } else {
+ uint8_t note = my_tone_status[mytone];
+ if (note != MIDI_INVALID_NOTE) {
+ midi_send_noteoff(&midi_device, channel, note, velocity);
+ dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity);
+ // uprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity);
+ }
+ my_tone_status[mytone] = MIDI_INVALID_NOTE;
+ }
+}
+
+void select_layer_state_set(void) {
+ switch (key_separator_col) {
+ case _KEY01:
+ if (is_trans_mode) {
+ layer_state_set(_LS_TRANS);
+ } else {
+ layer_state_set(_LS_BASE);
+ }
+ break;
+
+ case _KEY13:
+ if (is_trans_mode) {
+ layer_state_set(_LS_SEPALEFTOCT_T);
+ } else {
+ layer_state_set(_LS_SEPALEFTOCT);
+ }
+ break;
+
+ case _KEY19:
+ if (is_trans_mode) {
+ layer_state_set(_LS_SEPAHALF_T);
+ } else {
+ layer_state_set(_LS_SEPAHALF);
+ }
+ break;
+
+ case _KEY25:
+ if (is_trans_mode) {
+ layer_state_set(_LS_SEPARIGHTOCT_T);
+ } else {
+ layer_state_set(_LS_SEPARIGHTOCT);
+ }
+ break;
+
+ case _KEY37:
+ if (is_trans_mode) {
+ layer_state_set(_LS_FLIPTRANS);
+ } else {
+ layer_state_set(_LS_FLIPBASE);
+ }
+ break;
+ }
+}
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ // uprintf("keycode=%u, YM_C_3=%u, YM_Db_2 =%u, YM_MIN = %u, YM_MAX = %u\n", keycode, YM_C_3, YM_Db_2, YM_TONE_MIN, YM_TONE_MAX);
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+
+ // Layer-related settings.
+ // reset_scale_indicator() first, followed by each modification, and then change the default layer.
+
+ // 1, separator column modification
+ case B_BASE:
+ if (record->event.pressed) {
+ reset_all();
+ key_separator_col = _KEY01;
+ select_layer_state_set();
+ }
+ break;
+
+ case B_LEFT:
+ if (record->event.pressed) {
+ reset_all();
+ key_separator_col = _KEY13;
+ select_layer_state_set();
+ }
+ break;
+
+ case B_CENTER:
+ if (record->event.pressed) {
+ reset_all();
+ key_separator_col = _KEY19;
+ select_layer_state_set();
+ }
+ break;
+
+ case B_RIGHT:
+ if (record->event.pressed) {
+ reset_all();
+ key_separator_col = _KEY25;
+ select_layer_state_set();
+ }
+ break;
+
+ case B_FLIP:
+ if (record->event.pressed) {
+ reset_all();
+ key_separator_col = _KEY37;
+ select_layer_state_set();
+ }
+ break;
+
+ // 2, Toggle scale shift mode and transpose mode
+ case TGLTRNS:
+ if (record->event.pressed) {
+ reset_scale_indicator();
+ is_trans_mode = !is_trans_mode;
+ select_layer_state_set();
+ }
+ break;
+
+ // SHIFT_L and SHIFT_R can be pressed only when layer is either _BASE, _FLIPBASE.
+ case SHIFT_L:
+ if (record->event.pressed) {
+ switch (layer_state) {
+ case _LS_BASE:
+ case _LS_SEPALEFTOCT:
+ case _LS_SEPAHALF:
+ case _LS_SEPARIGHTOCT:
+ case _LS_FLIPBASE:
+ scale_indicator_col = shift_led_indicator_left(scale_indicator_col);
+ break;
+ }
+ }
+ break;
+
+ case SHIFT_R:
+ if (record->event.pressed) {
+ switch (layer_state) {
+ case _LS_BASE:
+ case _LS_SEPALEFTOCT:
+ case _LS_SEPAHALF:
+ case _LS_SEPARIGHTOCT:
+ case _LS_FLIPBASE:
+ scale_indicator_col = shift_led_indicator_right(scale_indicator_col);
+ break;
+ }
+ }
+ break;
+
+ case TGLINDI:
+ if (record->event.pressed) {
+ led_indicator_enable = !led_indicator_enable;
+ }
+ break;
+
+ case TGLINTR:
+ if (record->event.pressed) {
+ switch (layer_state) {
+ // main function of the TGLINTR part 1. alternate the status of trans_mode_indicator_loc_sel.
+ case _LS_TRANS | (1UL << _FN):
+ case _LS_SEPALEFTOCT_T | (1UL << _FN):
+ case _LS_SEPAHALF_T | (1UL << _FN):
+ case _LS_SEPARIGHTOCT_T | (1UL << _FN):
+ trans_mode_indicator_loc_sel = !trans_mode_indicator_loc_sel;
+
+ // when trans_mode_indicator_loc_sel == false, change the scale indicator and transpose.
+ scale_indicator_col = trans_mode_indicator_loc_sel ? 0:1;
+ // when TGLINTR is pressed, it also change the initial transpose setting to follow the scale indicator.
+ if (scale_indicator_col == 1) {
+ midi_config.transpose = -1;
+ } else {
+ midi_config.transpose = 0;
+ }
+ break;
+
+ // main function of the TGLINTR part 2. alternate the status of trans_mode_indicator_loc_sel.
+ case _LS_FLIPTRANS | (1UL << _FN):
+ trans_mode_indicator_loc_sel = !trans_mode_indicator_loc_sel;
+
+ // when trans_mode_indicator_loc_sel == false, change the scale indicator and transpose.
+ scale_indicator_col = trans_mode_indicator_loc_sel ? 0:11;
+ // when TGLINTR is pressed, it also change the initial transpose setting to follow the scale indicator.
+ if (scale_indicator_col == 11) {
+ midi_config.transpose = -1;
+ } else {
+ midi_config.transpose = 0;
+ }
+ break;
+
+ // special treatment when TGLINTR is pressed in _LS_FLIPBASE layer.
+ case _LS_FLIPBASE | (1UL << _FN): // when in FLIPBASE layer && non-Trans mode, change it to Trans mode.
+ trans_mode_indicator_loc_sel = false;
+ scale_indicator_col = 11;
+ midi_config.transpose = -1;
+ is_trans_mode = true;
+ select_layer_state_set();
+ break;
+
+
+ // special treatment when TGLINTR is pressed in other non-Trans layer.
+ default : // when other layers = non-Trans mode, change it to Trans mode.
+ trans_mode_indicator_loc_sel = false;
+ scale_indicator_col = 1;
+ midi_config.transpose = -1;
+ is_trans_mode = true;
+ select_layer_state_set();
+ }
+ }
+ break;
+
+ case TGLCHGR:
+ if (record->event.pressed) {
+ use_alt_ch_gr = !use_alt_ch_gr;
+ if (use_alt_ch_gr) {
+ midi_config.channel = ALT_MAIN_CH_NUMBER;
+ midi_left_ch = ALT_SUB_CH_NUMBER;
+ } else { // default
+ midi_config.channel = DEFAULT_MAIN_CH_NUMBER;
+ midi_left_ch = DEFAULT_SUB_CH_NUMBER;
+ }
+ }
+ break;
+
+ case YM_TONE_MIN ... YM_TONE_MAX: // MY tone
+ // uprintf("keycode=%u, YM_C_3=%u, YM_Db_2 =%u, YM_MIN = %u, YM_MAX = %u\n", keycode, YM_C_3, YM_Db_2, YM_TONE_MIN, YM_TONE_MAX);
+ // DO NOT THROW BELOW into 'if (record->event.pressed) {}' STATEMENT SINCE IT IS USED IN THE FUNCTION BELOW.
+ my_process_midi4single_note(midi_left_ch, keycode, record, my_tone_status);
+ break;
+ }
+ return true;
+}
+
+#ifdef RGB_MATRIX_ENABLE
+void set_led_scale_indicator(uint8_t r, uint8_t g, uint8_t b) {
+ uint8_t max_scale_indicator_led_loop;
+ uint8_t i;
+ if (led_indicator_enable) { // turn on indicators when enabled.
+ max_scale_indicator_led_loop = ( scale_indicator_col == DEFAULT_SCALE_COL ) ? 12 : 9;
+ for (i = 0; i < max_scale_indicator_led_loop; i++) {
+ rgb_matrix_set_color(led_scale_indicator[scale_indicator_col][i], r, g, b);
+ }
+ }
+}
+
+void rgb_matrix_indicators_user(void) {
+ // uint32_t mode = rgblight_get_mode();
+
+ if (rgb_matrix_is_enabled()) { // turn the lights on when it is enabled.
+
+ // uint8_t max_scale_indicator_led_loop;
+ uint8_t i;
+
+ switch (layer_state) {
+ case _LS_BASE:
+ set_led_scale_indicator(BASE_LAYER_COLOR);
+ break;
+
+ case _LS_FLIPBASE:
+ set_led_scale_indicator(FLIPB_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY37][i], FLIP_BORDER_COLOR); // right end
+ }
+ break;
+
+ case _LS_TRANS:
+ set_led_scale_indicator(TRANS_LAYER_COLOR);
+ break;
+
+ case _LS_SEPALEFTOCT_T:
+ set_led_scale_indicator(SEPALEFT_T_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY13][i], FLIP_BORDER_COLOR); // Left
+ }
+ break;
+
+ case _LS_SEPAHALF_T:
+ set_led_scale_indicator(SEPAHALF_T_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY19][i], FLIP_BORDER_COLOR); // Center
+ }
+ break;
+
+ case _LS_SEPARIGHTOCT_T:
+ set_led_scale_indicator(SEPARIGHT_T_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY25][i], FLIP_BORDER_COLOR); // Right
+ }
+ break;
+
+ case _LS_FLIPTRANS:
+ set_led_scale_indicator(FLIPT_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY37][i], FLIP_BORDER_COLOR); // right end
+ }
+ break;
+
+ case _LS_SEPALEFTOCT:
+ set_led_scale_indicator(SEPALEFT_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY13][i], FLIP_BORDER_COLOR); // Left
+ }
+ break;
+
+ case _LS_SEPAHALF:
+ set_led_scale_indicator(SEPAHALF_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY19][i], FLIP_BORDER_COLOR); // Center
+ }
+ break;
+
+ case _LS_SEPARIGHTOCT:
+ set_led_scale_indicator(SEPARIGHT_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY25][i], FLIP_BORDER_COLOR); // Right
+ }
+ break;
+
+ case _LS_FN ... _LS_MAX: // When Mute Button is long-pressed, the previous layers are still active.
+ for (i = 1; i < 5; i++) {
+ rgb_matrix_set_color(i, RGB_DARKSPRINGGREEN); // up(1) down(4) left(3) right(2) keys
+ }
+ rgb_matrix_set_color(led_single_col_indicator[_KEY02][0], RGB_DARKSPRINGGREEN); // TGLTRNS
+ rgb_matrix_set_color(led_single_col_indicator[_KEY04][0], RGB_DARKSPRINGGREEN); // TGLINTR
+ rgb_matrix_set_color(led_single_col_indicator[_KEY06][0], RGB_DARKSPRINGGREEN); // TGLCHGR
+
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY01][i], BASE_LAYER_COLOR); // B_BASE
+
+ rgb_matrix_set_color(led_single_col_indicator[_KEY13][i], SEPALEFT_LAYER_COLOR); // B_LEFT
+
+ rgb_matrix_set_color(led_single_col_indicator[_KEY19][i], SEPAHALF_LAYER_COLOR); // B_CENTER
+
+ rgb_matrix_set_color(led_single_col_indicator[_KEY25][i], SEPARIGHT_LAYER_COLOR); // B_RIGHT
+
+ rgb_matrix_set_color(led_single_col_indicator[_KEY37][i], FLIPB_LAYER_COLOR); // B_FLIP
+ }
+
+ for (i = _KEY12; i < _KEY37; i+=2){ // even numbers from _KEY12 to _KEY36 are LED related settings.
+ // turn on the bottom row only to keep the visibility of the RGB MATRIX effects.
+ rgb_matrix_set_color(led_single_col_indicator[i][0], RGB_DARKSPRINGGREEN); // // LED related settings.
+ }
+ break;
+ }
+ }
+}
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/chromatonemini/keymaps/led/readme.md b/keyboards/chromatonemini/keymaps/led/readme.md
new file mode 100644
index 0000000000..ed6cfd6040
--- /dev/null
+++ b/keyboards/chromatonemini/keymaps/led/readme.md
@@ -0,0 +1 @@
+# The LED enabled, customized keymap for chromatonemini
diff --git a/keyboards/chromatonemini/keymaps/led/rules.mk b/keyboards/chromatonemini/keymaps/led/rules.mk
new file mode 100644
index 0000000000..2e67e80675
--- /dev/null
+++ b/keyboards/chromatonemini/keymaps/led/rules.mk
@@ -0,0 +1,3 @@
+RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
+RGB_MATRIX_CUSTOM_KB = yes #
+VIA_ENABLE = no # too many layers to use VIA...
diff --git a/keyboards/chromatonemini/keymaps/party/keymap.c b/keyboards/chromatonemini/keymaps/party/keymap.c
new file mode 100644
index 0000000000..258bfe55c1
--- /dev/null
+++ b/keyboards/chromatonemini/keymaps/party/keymap.c
@@ -0,0 +1,684 @@
+/* Copyright 2021 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+// define which MIDI ch to use.
+// Note that (actual MIDI ch# - 1) -> 0 .. 15 is used for coding.
+// ch1
+#define DEFAULT_MAIN_CH_NUMBER 0
+// ch3
+#define DEFAULT_SUB_CH_NUMBER 2
+// ch2
+#define ALT_MAIN_CH_NUMBER 1
+// ch4
+#define ALT_SUB_CH_NUMBER 3
+static uint8_t midi_left_ch = DEFAULT_SUB_CH_NUMBER; // By default, DEFAULT_SUB_CH_NUMBER is used for left side when separated.
+
+// By default( when use_alt_ch_gr == false), DEFAULT ch group (DEFAULT_MAIN_CH_NUMBER for entirely, or right side when separated, DEFAULT_SUB_CH_NUMBER for left side) is used.
+// When false, ALT ch group (ALT_MAIN_CH_NUMBER for entirely, or right side when separated, ALT_SUB_CH_NUMBER for left side) is used.
+static bool use_alt_ch_gr = false;
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE, // Base layer, shift mode, single channel.
+ _SEPALEFTOCT, // 1st oct channel separated version. Shift mode.
+ _SEPAHALF, // Half channel separated version. Shift mode.
+ _SEPARIGHTOCT, // 2nd oct channel separated version. Shift mode.
+ _TRANS, // Transpose feature is enabled instead of shift mode, single channel.
+ _FLIPBASE, // Horizontal flipped version entirely. single channel.
+ _FLIPTRANS, // Horizontal flipped version entirely. Transpose is used. single channel.
+ _FN // FuNction layer. This must be at the end of the enumurate to use the range from _LS_FN ... _LS_FN_MAX for FN layer LED settings.
+};
+
+// Layer State
+#define _LS_BASE (1UL << _BASE)
+#define _LS_SEPALEFTOCT (1UL << _SEPALEFTOCT)
+#define _LS_SEPAHALF (1UL << _SEPAHALF)
+#define _LS_SEPARIGHTOCT (1UL << _SEPARIGHTOCT)
+#define _LS_FLIPBASE (1UL << _FLIPBASE)
+
+#define _LS_TRANS (1UL << _BASE | 1UL << _TRANS)
+#define _LS_SEPALEFTOCT_T (1UL << _SEPALEFTOCT | 1UL << _TRANS)
+#define _LS_SEPAHALF_T (1UL << _SEPAHALF | 1UL << _TRANS)
+#define _LS_SEPARIGHTOCT_T (1UL << _SEPARIGHTOCT | 1UL << _TRANS)
+#define _LS_FLIPTRANS (1UL << _FLIPBASE | 1UL << _FLIPTRANS)
+
+#define _LS_FN (1UL << _FN)
+#define _LS_MAX (_LS_FN << 1)
+
+// Don't change the DEFAULT_SCALE_COL value below. It must be 0.
+#define DEFAULT_SCALE_COL 0
+static uint8_t scale_indicator_col = DEFAULT_SCALE_COL;
+static bool trans_mode_indicator_loc_sel = true; // when it is true, the location is _KEY01, _KEY13, ...
+
+// use led indicator or not.
+static bool led_indicator_enable = true;
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ SHIFT_L = SAFE_RANGE,
+ SHIFT_R,
+ TGLINDI, // ToGgLe INDIcator
+ TGLINTR, // ToGgLe INdicator location {(_KEY01, _KEY13, _KEY25, _KEY37) or (_KEY02, _KEY14, _KEY26) / (_KEY12, _KEY24, _KEY36)}in TRans mode
+ TGLTRNS, // ToGgLe TRaNS and shift
+ TGLCHGR, // ToGgLe CH GRoup
+ VERSION,
+
+ B_BASE, // border set to the left end.
+ B_LEFT, // border set to the 1st left octave.
+ B_CENTER, // border set to the center.
+ B_RIGHT, // border set to the 1st right octave.
+ B_FLIP, // border set to the right end.
+
+ // MY tone for _FLIPHALF and _FLIPLEFTOCT layers to distinguish the notes to avoid sustain effect, etc.
+ // Since they are flipped, their subscripts are not MY_ but YM_, to make them easier to tell.
+ YM_TONE_MIN,
+
+ YM_C = YM_TONE_MIN,
+ YM_Cs,
+ YM_Db = YM_Cs,
+ YM_D,
+ YM_Ds,
+ YM_Eb = YM_Ds,
+ YM_E,
+ YM_F,
+ YM_Fs,
+ YM_Gb = YM_Fs,
+ YM_G,
+ YM_Gs,
+ YM_Ab = YM_Gs,
+ YM_A,
+ YM_As,
+ YM_Bb = YM_As,
+ YM_B,
+
+ YM_C_1,
+ YM_Cs_1,
+ YM_Db_1 = YM_Cs_1,
+ YM_D_1,
+ YM_Ds_1,
+ YM_Eb_1 = YM_Ds_1,
+ YM_E_1,
+ YM_F_1,
+ YM_Fs_1,
+ YM_Gb_1 = YM_Fs_1,
+ YM_G_1,
+ YM_Gs_1,
+ YM_Ab_1 = YM_Gs_1,
+ YM_A_1,
+ YM_As_1,
+ YM_Bb_1 = YM_As_1,
+ YM_B_1,
+
+ YM_C_2,
+ YM_Cs_2,
+ YM_Db_2 = YM_Cs_2,
+ YM_D_2,
+ YM_Ds_2,
+ YM_Eb_2 = YM_Ds_2,
+ YM_E_2,
+ YM_F_2,
+ YM_Fs_2,
+ YM_Gb_2 = YM_Fs_2,
+ YM_G_2,
+ YM_Gs_2,
+ YM_Ab_2 = YM_Gs_2,
+ YM_A_2,
+ YM_As_2,
+ YM_Bb_2 = YM_As_2,
+ YM_B_2,
+
+ YM_C_3,
+ YM_Cs_3,
+ YM_Db_3 = YM_Cs_3,
+ YM_D_3,
+ YM_Ds_3,
+ YM_Eb_3 = YM_Ds_3,
+ YM_E_3,
+ YM_F_3,
+ YM_Fs_3,
+ YM_Gb_3 = YM_Fs_3,
+ YM_G_3,
+ YM_Gs_3,
+ YM_Ab_3 = YM_Gs_3,
+ YM_A_3,
+ YM_As_3,
+ YM_Bb_3 = YM_As_3,
+ YM_B_3,
+
+ YM_C_4,
+ YM_Cs_4,
+ YM_Db_4 = YM_Cs_4,
+ YM_D_4,
+ YM_Ds_4,
+ YM_Eb_4 = YM_Ds_4,
+ YM_E_4,
+ YM_F_4,
+ YM_Fs_4,
+ YM_Gb_4 = YM_Fs_4,
+ YM_G_4,
+ YM_Gs_4,
+ YM_Ab_4 = YM_Gs_4,
+ YM_A_4,
+ YM_As_4,
+ YM_Bb_4 = YM_As_4,
+ YM_B_4,
+
+ YM_C_5,
+ YM_Cs_5,
+ YM_Db_5 = YM_Cs_5,
+ YM_D_5,
+ YM_Ds_5,
+ YM_Eb_5 = YM_Ds_5,
+ YM_E_5,
+ YM_F_5,
+ YM_Fs_5,
+ YM_Gb_5 = YM_Fs_5,
+ YM_G_5,
+ YM_Gs_5,
+ YM_Ab_5 = YM_Gs_5,
+ YM_A_5,
+ YM_As_5,
+ YM_Bb_5 = YM_As_5,
+ YM_B_5,
+
+ YM_C_6,
+ YM_TONE_MAX = YM_C_6
+};
+
+#define MY_TONE_COUNT (YM_TONE_MAX - YM_TONE_MIN + 1)
+static uint8_t my_tone_status[MY_TONE_COUNT];
+
+// Long press: go to _FN layer, tap: MUTE
+#define FN_MUTE LT(_FN, KC_MUTE)
+
+// Used to set octave to MI_OCT_0
+extern midi_config_t midi_config;
+static bool is_trans_mode = false; // By default, shift mode is chosen.
+
+static uint8_t key_separator_col = _KEY01; // (_KEY01 .. _KEY37). By default, _KEY01 (= _BASE layer) is chosen. _KEY13 = *LEFT, _KEY19 = *HALF, _KEY25 = *RIGHT, _KEY37 = _FLIPBASE and _FLIPTRANS.
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ FN_MUTE, MI_SUS, KC_VOLD, KC_VOLU,
+ MI_BENDU,
+ SHIFT_L, SHIFT_R, MI_C_2, MI_D_2, MI_E_2, MI_Fs_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
+ MI_BENDD, MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
+ ),
+
+ /* 1 octave on the left side is ch2, others are ch1 (normal) */
+ [_SEPALEFTOCT] = LAYOUT(
+ _______, _______, _______, _______,
+ _______,
+ SHIFT_L, SHIFT_R, YM_C_2, YM_D_2, YM_E_2, YM_Fs_2, YM_Ab_2, YM_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
+ _______, YM_Db_2, YM_Eb_2, YM_F_2, YM_G_2, YM_A_2, YM_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
+ ),
+
+ /* Half ch2, half ch1 (normal) */
+ [_SEPAHALF] = LAYOUT(
+ _______, _______, _______, _______,
+ _______,
+ SHIFT_L, SHIFT_R, YM_C_2, YM_D_2, YM_E_2, YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
+ _______, YM_Db_2, YM_Eb_2, YM_F_2, YM_G_2, YM_A_2, YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
+ ),
+
+ /* 2 octave on the left side is ch2, others are ch1 (normal) */
+ [_SEPARIGHTOCT] = LAYOUT(
+ _______, _______, _______, _______,
+ _______,
+ SHIFT_L, SHIFT_R, YM_C_2, YM_D_2, YM_E_2, YM_Fs_2, YM_Ab_2, YM_Bb_2, YM_C_3, YM_D_3, YM_E_3, YM_Fs_3, YM_Ab_3, YM_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
+ _______, YM_Db_2, YM_Eb_2, YM_F_2, YM_G_2, YM_A_2, YM_B_2, YM_Db_3, YM_Eb_3, YM_F_3, YM_G_3, YM_A_3, YM_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
+ ),
+
+ /* TRANS This layer must locate 1 layer below _FN layer. */
+ [_TRANS] = LAYOUT(
+ _______, _______, _______, _______,
+ _______,
+ MI_TRNSD, MI_TRNSU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* Flip Base SFIFTUP and SHIFT_L are swapped. */
+ [_FLIPBASE] = LAYOUT(
+ FN_MUTE, MI_SUS, KC_VOLD, KC_VOLU,
+ MI_BENDU,
+ SHIFT_L, SHIFT_R, MI_C_5, MI_Bb_4, MI_Ab_4, MI_Fs_4, MI_E_4, MI_D_4, MI_C_4, MI_Bb_3, MI_Ab_3, MI_Fs_3, MI_E_3, MI_D_3, MI_C_3, MI_Bb_2, MI_Ab_2, MI_Fs_2, MI_E_2, MI_D_2, MI_C_2,
+ MI_BENDD, MI_B_4, MI_A_4, MI_G_4, MI_F_4, MI_Eb_4, MI_Db_4, MI_B_3, MI_A_3, MI_G_3, MI_F_3, MI_Eb_3, MI_Db_3, MI_B_2, MI_A_2, MI_G_2, MI_F_2, MI_Eb_2, MI_Db_2
+ ),
+
+ /* Flip Trans This layer must locate 1 layer above _FLIPBASE layer. MI_TRNSU and MI_TRNSD are swapped. */
+ [_FLIPTRANS] = LAYOUT(
+ _______, _______, _______, _______,
+ _______,
+ MI_TRNSU, MI_TRNSD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN] = LAYOUT(
+ _______, XXXXXXX, RGB_RMOD, RGB_MOD,
+ MI_VELU,
+ MI_OCTD, MI_OCTU, B_BASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, B_LEFT, XXXXXXX, XXXXXXX, B_CENTER, XXXXXXX, XXXXXXX, B_RIGHT, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, XXXXXXX, B_FLIP,
+ MI_VELD, TGLINTR, TGLTRNS, TGLCHGR, XXXXXXX, XXXXXXX, RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI, RGB_RMOD, RGB_MOD, EEP_RST, TGLINDI, RGB_TOG
+ )
+};
+
+// commom codes called from eeconfig_init_user() and keyboard_post_init_user().
+void my_init(void){
+ // Set octave to MI_OCT_1
+ 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;
+ default_layer_set(_LS_BASE);
+ layer_state_set(_LS_BASE);
+
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_sethsv(HSV_BLUE);
+ // 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);
+ led_indicator_enable = false;
+#endif // RGB_MATRIX_ENABLE
+}
+
+void eeconfig_init_user(void) { // EEPROM is getting reset!
+ midi_init();
+
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_enable();
+ rgb_matrix_set_speed(RGB_MATRIX_STARTUP_SPD);
+#endif // RGB_MATRIX_ENABLE
+ my_init(); // commom codes called from eeconfig_init_user() and keyboard_post_init_user().
+}
+
+void keyboard_post_init_user(void) {
+ for (uint8_t i = 0; i < MY_TONE_COUNT; i++) {
+ my_tone_status[i] = MIDI_INVALID_NOTE;
+ }
+ my_init(); // commom codes called from eeconfig_init_user() and keyboard_post_init_user().
+}
+
+void reset_scale_indicator(void) {
+ // reset transpose value and scale_indicator_col to default.
+ midi_config.transpose = 0;
+ scale_indicator_col = DEFAULT_SCALE_COL;
+ trans_mode_indicator_loc_sel = true;
+}
+
+void reset_all(void) {
+ reset_scale_indicator();
+ is_trans_mode = false; // trans mode is disabled by default.
+}
+
+void my_process_midi4single_note(uint8_t channel, uint16_t keycode, keyrecord_t *record, uint8_t *my_tone_status) {
+ uint8_t mytone = keycode - YM_TONE_MIN;
+ uint16_t mykeycode = mytone + MIDI_TONE_MIN;
+ // uint16_t mykeycode = keycode - YM_TONE_MIN;
+ // uint8_t mytone = mykeycode - MIDI_TONE_MIN;
+ uint8_t velocity = midi_config.velocity;
+ // uprintf("keycode=%u,mykeycode=%u,mytone =%u,velo = %u\n", keycode, mykeycode, mytone, velocity);
+ if (record->event.pressed) {
+ if (my_tone_status[mytone] == MIDI_INVALID_NOTE) {
+ uint8_t note = midi_compute_note(mykeycode);
+ midi_send_noteon(&midi_device, channel, note, velocity);
+ dprintf("midi noteon channel:%d note:%d mytone:%d velocity:%d\n", channel, note, mytone, velocity);
+ // uprintf("midi noteon channel:%d note:%d mytone:%d velocity:%d\n", channel, note, mytone, velocity);
+ my_tone_status[mytone] = note; // store root_note status.
+ }
+ } else {
+ uint8_t note = my_tone_status[mytone];
+ if (note != MIDI_INVALID_NOTE) {
+ midi_send_noteoff(&midi_device, channel, note, velocity);
+ dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity);
+ // uprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity);
+ }
+ my_tone_status[mytone] = MIDI_INVALID_NOTE;
+ }
+}
+
+void select_layer_state_set(void) {
+ switch (key_separator_col) {
+ case _KEY01:
+ if (is_trans_mode) {
+ layer_state_set(_LS_TRANS);
+ } else {
+ layer_state_set(_LS_BASE);
+ }
+ break;
+
+ case _KEY13:
+ if (is_trans_mode) {
+ layer_state_set(_LS_SEPALEFTOCT_T);
+ } else {
+ layer_state_set(_LS_SEPALEFTOCT);
+ }
+ break;
+
+ case _KEY19:
+ if (is_trans_mode) {
+ layer_state_set(_LS_SEPAHALF_T);
+ } else {
+ layer_state_set(_LS_SEPAHALF);
+ }
+ break;
+
+ case _KEY25:
+ if (is_trans_mode) {
+ layer_state_set(_LS_SEPARIGHTOCT_T);
+ } else {
+ layer_state_set(_LS_SEPARIGHTOCT);
+ }
+ break;
+
+ case _KEY37:
+ if (is_trans_mode) {
+ layer_state_set(_LS_FLIPTRANS);
+ } else {
+ layer_state_set(_LS_FLIPBASE);
+ }
+ break;
+ }
+}
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ // uprintf("keycode=%u, YM_C_3=%u, YM_Db_2 =%u, YM_MIN = %u, YM_MAX = %u\n", keycode, YM_C_3, YM_Db_2, YM_TONE_MIN, YM_TONE_MAX);
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+
+ // Layer-related settings.
+ // reset_scale_indicator() first, followed by each modification, and then change the default layer.
+
+ // 1, separator column modification
+ case B_BASE:
+ if (record->event.pressed) {
+ reset_all();
+ key_separator_col = _KEY01;
+ select_layer_state_set();
+ }
+ break;
+
+ case B_LEFT:
+ if (record->event.pressed) {
+ reset_all();
+ key_separator_col = _KEY13;
+ select_layer_state_set();
+ }
+ break;
+
+ case B_CENTER:
+ if (record->event.pressed) {
+ reset_all();
+ key_separator_col = _KEY19;
+ select_layer_state_set();
+ }
+ break;
+
+ case B_RIGHT:
+ if (record->event.pressed) {
+ reset_all();
+ key_separator_col = _KEY25;
+ select_layer_state_set();
+ }
+ break;
+
+ case B_FLIP:
+ if (record->event.pressed) {
+ reset_all();
+ key_separator_col = _KEY37;
+ select_layer_state_set();
+ }
+ break;
+
+ // 2, Toggle scale shift mode and transpose mode
+ case TGLTRNS:
+ if (record->event.pressed) {
+ reset_scale_indicator();
+ is_trans_mode = !is_trans_mode;
+ select_layer_state_set();
+ }
+ break;
+
+ // SHIFT_L and SHIFT_R can be pressed only when layer is either _BASE, _FLIPBASE.
+ case SHIFT_L:
+ if (record->event.pressed) {
+ switch (layer_state) {
+ case _LS_BASE:
+ case _LS_SEPALEFTOCT:
+ case _LS_SEPAHALF:
+ case _LS_SEPARIGHTOCT:
+ case _LS_FLIPBASE:
+ scale_indicator_col = shift_led_indicator_left(scale_indicator_col);
+ break;
+ }
+ }
+ break;
+
+ case SHIFT_R:
+ if (record->event.pressed) {
+ switch (layer_state) {
+ case _LS_BASE:
+ case _LS_SEPALEFTOCT:
+ case _LS_SEPAHALF:
+ case _LS_SEPARIGHTOCT:
+ case _LS_FLIPBASE:
+ scale_indicator_col = shift_led_indicator_right(scale_indicator_col);
+ break;
+ }
+ }
+ break;
+
+ case TGLINDI:
+ if (record->event.pressed) {
+ led_indicator_enable = !led_indicator_enable;
+ }
+ break;
+
+ case TGLINTR:
+ if (record->event.pressed) {
+ switch (layer_state) {
+ // main function of the TGLINTR part 1. alternate the status of trans_mode_indicator_loc_sel.
+ case _LS_TRANS | (1UL << _FN):
+ case _LS_SEPALEFTOCT_T | (1UL << _FN):
+ case _LS_SEPAHALF_T | (1UL << _FN):
+ case _LS_SEPARIGHTOCT_T | (1UL << _FN):
+ trans_mode_indicator_loc_sel = !trans_mode_indicator_loc_sel;
+
+ // when trans_mode_indicator_loc_sel == false, change the scale indicator and transpose.
+ scale_indicator_col = trans_mode_indicator_loc_sel ? 0:1;
+ // when TGLINTR is pressed, it also change the initial transpose setting to follow the scale indicator.
+ if (scale_indicator_col == 1) {
+ midi_config.transpose = -1;
+ } else {
+ midi_config.transpose = 0;
+ }
+ break;
+
+ // main function of the TGLINTR part 2. alternate the status of trans_mode_indicator_loc_sel.
+ case _LS_FLIPTRANS | (1UL << _FN):
+ trans_mode_indicator_loc_sel = !trans_mode_indicator_loc_sel;
+
+ // when trans_mode_indicator_loc_sel == false, change the scale indicator and transpose.
+ scale_indicator_col = trans_mode_indicator_loc_sel ? 0:11;
+ // when TGLINTR is pressed, it also change the initial transpose setting to follow the scale indicator.
+ if (scale_indicator_col == 11) {
+ midi_config.transpose = -1;
+ } else {
+ midi_config.transpose = 0;
+ }
+ break;
+
+ // special treatment when TGLINTR is pressed in _LS_FLIPBASE layer.
+ case _LS_FLIPBASE | (1UL << _FN): // when in FLIPBASE layer && non-Trans mode, change it to Trans mode.
+ trans_mode_indicator_loc_sel = false;
+ scale_indicator_col = 11;
+ midi_config.transpose = -1;
+ is_trans_mode = true;
+ select_layer_state_set();
+ break;
+
+
+ // special treatment when TGLINTR is pressed in other non-Trans layer.
+ default : // when other layers = non-Trans mode, change it to Trans mode.
+ trans_mode_indicator_loc_sel = false;
+ scale_indicator_col = 1;
+ midi_config.transpose = -1;
+ is_trans_mode = true;
+ select_layer_state_set();
+ }
+ }
+ break;
+
+ case TGLCHGR:
+ if (record->event.pressed) {
+ use_alt_ch_gr = !use_alt_ch_gr;
+ if (use_alt_ch_gr) {
+ midi_config.channel = ALT_MAIN_CH_NUMBER;
+ midi_left_ch = ALT_SUB_CH_NUMBER;
+ } else { // default
+ midi_config.channel = DEFAULT_MAIN_CH_NUMBER;
+ midi_left_ch = DEFAULT_SUB_CH_NUMBER;
+ }
+ }
+ break;
+
+ case YM_TONE_MIN ... YM_TONE_MAX: // MY tone
+ // uprintf("keycode=%u, YM_C_3=%u, YM_Db_2 =%u, YM_MIN = %u, YM_MAX = %u\n", keycode, YM_C_3, YM_Db_2, YM_TONE_MIN, YM_TONE_MAX);
+ // DO NOT THROW BELOW into 'if (record->event.pressed) {}' STATEMENT SINCE IT IS USED IN THE FUNCTION BELOW.
+ my_process_midi4single_note(midi_left_ch, keycode, record, my_tone_status);
+ break;
+ }
+ return true;
+}
+
+#ifdef RGB_MATRIX_ENABLE
+void set_led_scale_indicator(uint8_t r, uint8_t g, uint8_t b) {
+ uint8_t max_scale_indicator_led_loop;
+ uint8_t i;
+ if (led_indicator_enable) { // turn on indicators when enabled.
+ max_scale_indicator_led_loop = ( scale_indicator_col == DEFAULT_SCALE_COL ) ? 12 : 9;
+ for (i = 0; i < max_scale_indicator_led_loop; i++) {
+ rgb_matrix_set_color(led_scale_indicator[scale_indicator_col][i], r, g, b);
+ }
+ }
+}
+
+void rgb_matrix_indicators_user(void) {
+ // uint32_t mode = rgblight_get_mode();
+
+ if (rgb_matrix_is_enabled()) { // turn the lights on when it is enabled.
+
+ // uint8_t max_scale_indicator_led_loop;
+ uint8_t i;
+
+ switch (layer_state) {
+ case _LS_BASE:
+ set_led_scale_indicator(BASE_LAYER_COLOR);
+ break;
+
+ case _LS_FLIPBASE:
+ set_led_scale_indicator(FLIPB_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY37][i], FLIP_BORDER_COLOR); // right end
+ }
+ break;
+
+ case _LS_TRANS:
+ set_led_scale_indicator(TRANS_LAYER_COLOR);
+ break;
+
+ case _LS_SEPALEFTOCT_T:
+ set_led_scale_indicator(SEPALEFT_T_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY13][i], FLIP_BORDER_COLOR); // Left
+ }
+ break;
+
+ case _LS_SEPAHALF_T:
+ set_led_scale_indicator(SEPAHALF_T_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY19][i], FLIP_BORDER_COLOR); // Center
+ }
+ break;
+
+ case _LS_SEPARIGHTOCT_T:
+ set_led_scale_indicator(SEPARIGHT_T_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY25][i], FLIP_BORDER_COLOR); // Right
+ }
+ break;
+
+ case _LS_FLIPTRANS:
+ set_led_scale_indicator(FLIPT_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY37][i], FLIP_BORDER_COLOR); // right end
+ }
+ break;
+
+ case _LS_SEPALEFTOCT:
+ set_led_scale_indicator(SEPALEFT_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY13][i], FLIP_BORDER_COLOR); // Left
+ }
+ break;
+
+ case _LS_SEPAHALF:
+ set_led_scale_indicator(SEPAHALF_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY19][i], FLIP_BORDER_COLOR); // Center
+ }
+ break;
+
+ case _LS_SEPARIGHTOCT:
+ set_led_scale_indicator(SEPARIGHT_LAYER_COLOR);
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY25][i], FLIP_BORDER_COLOR); // Right
+ }
+ break;
+
+ case _LS_FN ... _LS_MAX: // When Mute Button is long-pressed, the previous layers are still active.
+ for (i = 1; i < 5; i++) {
+ rgb_matrix_set_color(i, RGB_DARKSPRINGGREEN); // up(1) down(4) left(3) right(2) keys
+ }
+ rgb_matrix_set_color(led_single_col_indicator[_KEY02][0], RGB_DARKSPRINGGREEN); // TGLTRNS
+ rgb_matrix_set_color(led_single_col_indicator[_KEY04][0], RGB_DARKSPRINGGREEN); // TGLINTR
+ rgb_matrix_set_color(led_single_col_indicator[_KEY06][0], RGB_DARKSPRINGGREEN); // TGLCHGR
+
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY01][i], BASE_LAYER_COLOR); // B_BASE
+
+ rgb_matrix_set_color(led_single_col_indicator[_KEY13][i], SEPALEFT_LAYER_COLOR); // B_LEFT
+
+ rgb_matrix_set_color(led_single_col_indicator[_KEY19][i], SEPAHALF_LAYER_COLOR); // B_CENTER
+
+ rgb_matrix_set_color(led_single_col_indicator[_KEY25][i], SEPARIGHT_LAYER_COLOR); // B_RIGHT
+
+ rgb_matrix_set_color(led_single_col_indicator[_KEY37][i], FLIPB_LAYER_COLOR); // B_FLIP
+ }
+
+ for (i = _KEY12; i < _KEY37; i+=2){ // even numbers from _KEY12 to _KEY36 are LED related settings.
+ // turn on the bottom row only to keep the visibility of the RGB MATRIX effects.
+ rgb_matrix_set_color(led_single_col_indicator[i][0], RGB_DARKSPRINGGREEN); // // LED related settings.
+ }
+ break;
+ }
+ }
+}
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/chromatonemini/keymaps/party/readme.md b/keyboards/chromatonemini/keymaps/party/readme.md
new file mode 100644
index 0000000000..8ca1b5a8ce
--- /dev/null
+++ b/keyboards/chromatonemini/keymaps/party/readme.md
@@ -0,0 +1,6 @@
+# The LED enabled, party mode for testing LED soldering, customized keymap for chromatonemini.
+
+The main differences between "led" and "party" are:
+// 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);
+led_indicator_enable = false;
diff --git a/keyboards/chromatonemini/keymaps/party/rules.mk b/keyboards/chromatonemini/keymaps/party/rules.mk
new file mode 100644
index 0000000000..2e67e80675
--- /dev/null
+++ b/keyboards/chromatonemini/keymaps/party/rules.mk
@@ -0,0 +1,3 @@
+RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
+RGB_MATRIX_CUSTOM_KB = yes #
+VIA_ENABLE = no # too many layers to use VIA...
diff --git a/keyboards/chromatonemini/keymaps/via/config.h b/keyboards/chromatonemini/keymaps/via/config.h
new file mode 100644
index 0000000000..b5ee0ac04b
--- /dev/null
+++ b/keyboards/chromatonemini/keymaps/via/config.h
@@ -0,0 +1,4 @@
+#pragma once
+
+// How many layers to use with VIA / Remap.
+#define DYNAMIC_KEYMAP_LAYER_COUNT 4 // default:4
diff --git a/keyboards/chromatonemini/keymaps/via/keymap.c b/keyboards/chromatonemini/keymaps/via/keymap.c
new file mode 100644
index 0000000000..08613515db
--- /dev/null
+++ b/keyboards/chromatonemini/keymaps/via/keymap.c
@@ -0,0 +1,275 @@
+/* Copyright 2021 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE, // Base layer, shift mode, single channel.
+ _TRANS, // Transpose feature is enabled instead of shift mode, single channel.
+ _RESERVE, // RESERVE
+ _FN // FuNction layer. This must be at the end of the enumurate to use the range from _LS_FN ... _LS_FN_MAX for FN layer LED settings.
+};
+
+// Layer State
+#define _LS_BASE (1UL << _BASE)
+#define _LS_TRANS (1UL << _BASE | 1UL << _TRANS)
+
+#define _LS_FN (1UL << _FN)
+#define _LS_MAX (_LS_FN << 1)
+
+// Don't change the DEFAULT_SCALE_COL value below. It must be 0.
+#define DEFAULT_SCALE_COL 0
+static uint8_t scale_indicator_col = DEFAULT_SCALE_COL;
+static bool trans_mode_indicator_loc_sel = true; // when it is true, the location is _KEY01, _KEY13, ...
+
+// use led indicator or not.
+static bool led_indicator_enable = true;
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+ SHIFT_L = USER00,
+ SHIFT_R,
+ TGLINDI, // ToGgLe INDIcator
+ TGLINTR, // ToGgLe INdicator location {(_KEY01, _KEY13, _KEY25, _KEY37) or (_KEY02, _KEY14, _KEY26) / (_KEY12, _KEY24, _KEY36)}in TRans mode
+ TGLTRNS, // ToGgLe TRaNS and shift
+
+ B_BASE, // border set to the left end.
+ VERSION
+};
+
+// Long press: go to _FN layer, tap: MUTE
+#define FN_MUTE LT(_FN, KC_MUTE)
+
+// Used to set octave to MI_OCT_0
+extern midi_config_t midi_config;
+static bool is_trans_mode = false; // By default, shift mode is chosen.
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ FN_MUTE, MI_SUS, KC_VOLD, KC_VOLU,
+ MI_BENDU,
+ SHIFT_L, SHIFT_R, MI_C_2, MI_D_2, MI_E_2, MI_Fs_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Fs_3, MI_Ab_3, MI_Bb_3, MI_C_4, MI_D_4, MI_E_4, MI_Fs_4, MI_Ab_4, MI_Bb_4, MI_C_5,
+ MI_BENDD, MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, MI_Db_4, MI_Eb_4, MI_F_4, MI_G_4, MI_A_4, MI_B_4
+ ),
+
+ /* TRANS This layer must locate 1 layer below _FN layer. */
+ [_TRANS] = LAYOUT(
+ _______, _______, _______, _______,
+ _______,
+ MI_TRNSD, MI_TRNSU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* RESERVE */
+ [_RESERVE] = LAYOUT(
+ _______, _______, _______, _______,
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN] = LAYOUT(
+ _______, XXXXXXX, RGB_RMOD, RGB_MOD,
+ MI_VELU,
+ MI_OCTD, MI_OCTU, B_BASE, DF(_RESERVE), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, XXXXXXX, XXXXXXX,
+ MI_VELD, TGLINTR, TGLTRNS, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, RGB_SPD, RGB_SPI, RGB_VAD, RGB_VAI, RGB_RMOD, RGB_MOD, EEP_RST, TGLINDI, RGB_TOG
+ )
+};
+
+// commom codes called from eeconfig_init_user() and keyboard_post_init_user().
+void my_init(void){
+ // Set octave to MI_OCT_1
+ 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;
+ default_layer_set(_LS_BASE);
+ layer_state_set(_LS_BASE);
+
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_my_solid_reactive_col);
+#endif // RGB_MATRIX_ENABLE
+}
+
+void eeconfig_init_user(void) { // EEPROM is getting reset!
+ midi_init();
+
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_enable();
+ rgb_matrix_set_speed(RGB_MATRIX_STARTUP_SPD);
+ rgb_matrix_sethsv(HSV_BLUE);
+#endif // RGB_MATRIX_ENABLE
+ my_init(); // commom codes called from eeconfig_init_user() and keyboard_post_init_user().
+}
+
+void keyboard_post_init_user(void) {
+ my_init(); // commom codes called from eeconfig_init_user() and keyboard_post_init_user().
+}
+
+void reset_scale_indicator(void) {
+ // reset transpose value and scale_indicator_col to default.
+ midi_config.transpose = 0;
+ scale_indicator_col = DEFAULT_SCALE_COL;
+ trans_mode_indicator_loc_sel = true;
+}
+
+void reset_all(void) {
+ reset_scale_indicator();
+ is_trans_mode = false; // trans mode is disabled by default.
+}
+
+void select_layer_state_set(void) {
+ if (is_trans_mode) {
+ layer_state_set(_LS_TRANS);
+ } else {
+ layer_state_set(_LS_BASE);
+ }
+}
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ // uprintf("keycode=%u, YM_C_3=%u, YM_Db_2 =%u, YM_MIN = %u, YM_MAX = %u\n", keycode, YM_C_3, YM_Db_2, YM_TONE_MIN, YM_TONE_MAX);
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+
+ // Layer-related settings.
+ // reset_scale_indicator() first, followed by each modification, and then change the default layer.
+
+ // 1, separator column modification
+ case B_BASE:
+ if (record->event.pressed) {
+ reset_all();
+ select_layer_state_set();
+ }
+ break;
+
+ // 2, Toggle scale shift mode and transpose mode
+ case TGLTRNS:
+ if (record->event.pressed) {
+ reset_scale_indicator();
+ is_trans_mode = !is_trans_mode;
+ select_layer_state_set();
+ }
+ break;
+
+ // SHIFT_L and SHIFT_R can be pressed only when layer is either _BASE, _FLIPBASE.
+ case SHIFT_L:
+ if (record->event.pressed) {
+ if (layer_state == _LS_BASE) {
+ scale_indicator_col = shift_led_indicator_left(scale_indicator_col);
+ }
+ }
+ break;
+
+ case SHIFT_R:
+ if (record->event.pressed) {
+ if (layer_state == _LS_BASE ) {
+ scale_indicator_col = shift_led_indicator_right(scale_indicator_col);
+ }
+ }
+ break;
+
+ case TGLINDI:
+ if (record->event.pressed) {
+ led_indicator_enable = !led_indicator_enable;
+ }
+ break;
+
+ case TGLINTR:
+ if (record->event.pressed) {
+ switch (layer_state) {
+ // main function of the TGLINTR part 1. alternate the status of trans_mode_indicator_loc_sel.
+ case _LS_TRANS | (1UL << _FN):
+ trans_mode_indicator_loc_sel = !trans_mode_indicator_loc_sel;
+
+ // when trans_mode_indicator_loc_sel == false, change the scale indicator and transpose.
+ scale_indicator_col = trans_mode_indicator_loc_sel ? 0:1;
+ // when TGLINTR is pressed, it also change the initial transpose setting to follow the scale indicator.
+ if (scale_indicator_col == 1) {
+ midi_config.transpose = -1;
+ } else {
+ midi_config.transpose = 0;
+ }
+ break;
+
+ // special treatment when TGLINTR is pressed in other non-Trans layer.
+ default : // when other layers = non-Trans mode, change it to Trans mode.
+ trans_mode_indicator_loc_sel = false;
+ scale_indicator_col = 1;
+ midi_config.transpose = -1;
+ is_trans_mode = true;
+ select_layer_state_set();
+ }
+ }
+ break;
+ }
+ return true;
+}
+
+#ifdef RGB_MATRIX_ENABLE
+void set_led_scale_indicator(uint8_t r, uint8_t g, uint8_t b) {
+ uint8_t max_scale_indicator_led_loop;
+ uint8_t i;
+ if (led_indicator_enable) { // turn on indicators when enabled.
+ max_scale_indicator_led_loop = ( scale_indicator_col == DEFAULT_SCALE_COL ) ? 12 : 9;
+ for (i = 0; i < max_scale_indicator_led_loop; i++) {
+ rgb_matrix_set_color(led_scale_indicator[scale_indicator_col][i], r, g, b);
+ }
+ }
+}
+
+void rgb_matrix_indicators_user(void) {
+ // uint32_t mode = rgblight_get_mode();
+
+ if (rgb_matrix_is_enabled()) { // turn the lights on when it is enabled.
+
+ // uint8_t max_scale_indicator_led_loop;
+ uint8_t i;
+
+ switch (layer_state) {
+ case _LS_BASE:
+ set_led_scale_indicator(BASE_LAYER_COLOR);
+ break;
+
+ case _LS_TRANS:
+ set_led_scale_indicator(TRANS_LAYER_COLOR);
+ break;
+
+ case _LS_FN ... _LS_MAX: // When Mute Button is long-pressed, the previous layers are still active.
+ for (i = 1; i < 5; i++) {
+ rgb_matrix_set_color(i, RGB_DARKSPRINGGREEN); // up(1) down(4) left(3) right(2) keys
+ }
+ rgb_matrix_set_color(led_single_col_indicator[_KEY02][0], RGB_DARKSPRINGGREEN); // TGLTRNS
+ rgb_matrix_set_color(led_single_col_indicator[_KEY04][0], RGB_DARKSPRINGGREEN); // TGLINTR
+
+ for (i = 0; i < 3; i++) {
+ rgb_matrix_set_color(led_single_col_indicator[_KEY01][i], BASE_LAYER_COLOR); // B_BASE
+ }
+
+ for (i = _KEY12; i < _KEY37; i+=2){ // even numbers from _KEY12 to _KEY36 are LED related settings.
+ // turn on the bottom row only to keep the visibility of the RGB MATRIX effects.
+ rgb_matrix_set_color(led_single_col_indicator[i][0], RGB_DARKSPRINGGREEN); // // LED related settings.
+ }
+ break;
+ }
+ }
+}
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/chromatonemini/keymaps/via/readme.md b/keyboards/chromatonemini/keymaps/via/readme.md
new file mode 100644
index 0000000000..2ebbac4431
--- /dev/null
+++ b/keyboards/chromatonemini/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The via keymap for chromatonemini, RGB MATRIX enabled.
diff --git a/keyboards/chromatonemini/keymaps/via/rules.mk b/keyboards/chromatonemini/keymaps/via/rules.mk
new file mode 100644
index 0000000000..3de88c90c8
--- /dev/null
+++ b/keyboards/chromatonemini/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
+RGB_MATRIX_CUSTOM_KB = yes #
+VIA_ENABLE = yes
diff --git a/keyboards/chromatonemini/readme.md b/keyboards/chromatonemini/readme.md
new file mode 100644
index 0000000000..4c018d01a9
--- /dev/null
+++ b/keyboards/chromatonemini/readme.md
@@ -0,0 +1,19 @@
+# chromatonemini
+
+![chromatonemini](https://github.com/3araht/chromatonemini/blob/main/pictures/chromatonemini_toppage.jpg)
+
+chromatonemini keyboard is a simple-design Chromatone mini MIDI keyboard that covers 3 octaves (37 notes).
+
+* Keyboard Maintainer: [3araht](https://github.com/3araht)
+* Hardware Supported: chromatone keyboard, a DIY MIDI keyboard.
+* Hardware Availability: [BOOTH](https://3araht.booth.pm/). Click [here](https://www.tenso.com/en/static/lp_shop_booth) for BOOTH overseas shipping!
+
+Make example for this keyboard (after setting up your build environment):
+
+ make chromatonemini:default
+
+Flashing example for this keyboard:
+
+ make chromatonemini: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/chromatonemini/rgb_matrix_kb.inc b/keyboards/chromatonemini/rgb_matrix_kb.inc
new file mode 100644
index 0000000000..4fe474e12c
--- /dev/null
+++ b/keyboards/chromatonemini/rgb_matrix_kb.inc
@@ -0,0 +1,58 @@
+#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
+RGB_MATRIX_EFFECT(my_solid_reactive_multiwide_col)
+RGB_MATRIX_EFFECT(my_solid_reactive_col)
+RGB_MATRIX_EFFECT(my_party_rocks)
+
+# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+
+static HSV my_solid_reactive_multiwide_col_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) {
+ uint16_t effect = tick + dist;
+ dx = dx < 0 ? dx * -1 : dx;
+ dx = dx * 16 > 255 ? 255 : dx * 16;
+ effect += dx;
+ if (effect > 255) effect = 255;
+ hsv.v = qadd8(hsv.v, 255 - effect);
+ // hsv.h += qsub8(130, effect);
+ return hsv;
+}
+
+bool my_solid_reactive_multiwide_col(effect_params_t* params) {
+ return effect_runner_reactive_splash(0, params, &my_solid_reactive_multiwide_col_math);
+}
+
+
+bool my_solid_reactive_col(effect_params_t* params) {
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+ uint16_t max_tick = 65535 / rgb_matrix_config.speed;
+ for (uint8_t i = led_min; i < led_max; i++) {
+ RGB_MATRIX_TEST_LED_FLAGS();
+ HSV hsv = rgb_matrix_config.hsv;
+ 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.x[j] == g_led_config.point[i].x && g_last_hit_tracker.tick[j] < tick) {
+ tick = g_last_hit_tracker.tick[j];
+ break;
+ }
+ }
+
+ uint16_t offset = scale16by8(tick, rgb_matrix_config.speed);
+ hsv.h += qsub8(130, offset);
+ 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;
+}
+
+bool my_party_rocks(effect_params_t* params) {
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+ HSV hsv = {rand() & 0xFF, rand() & 0xFF, rgb_matrix_config.hsv.v};
+ RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
+ // rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ rgb_matrix_set_color_all(rgb.r, rgb.g, rgb.b);
+ return led_max < DRIVER_LED_TOTAL;
+}
+
+# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+#endif // RGB_MATRIX_KEYREACTIVE_ENABLED
diff --git a/keyboards/chromatonemini/rules.mk b/keyboards/chromatonemini/rules.mk
new file mode 100644
index 0000000000..29cfc35daf
--- /dev/null
+++ b/keyboards/chromatonemini/rules.mk
@@ -0,0 +1,22 @@
+# 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 = 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
+MIDI_ENABLE = yes # MIDI support
+ENCODER_ENABLE = yes # encoder on mute button
+RGB_MATRIX_DRIVER = WS2812 #
+LTO_ENABLE = yes
diff --git a/keyboards/cipulot/kallos/config.h b/keyboards/cipulot/kallos/config.h
new file mode 100644
index 0000000000..27923128d3
--- /dev/null
+++ b/keyboards/cipulot/kallos/config.h
@@ -0,0 +1,55 @@
+/*
+Copyright 2022 Cipulot
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 6
+#define MATRIX_COLS 15
+
+/* Keyboard Matrix Assignments */
+#define MATRIX_ROW_PINS \
+ { B3, B2, F0, C7, F4, F1 }
+#define MATRIX_COL_PINS \
+ { F5, F6, C6, B6, B5, B4, D7, D6, D4, D5, D3, F7, D2, D1, B7 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Lightbar pin and LED count definitions*/
+#define RGB_DI_PIN D0
+#define RGBLED_NUM 13
+#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
+
+/* 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/cipulot/kallos/info.json b/keyboards/cipulot/kallos/info.json
new file mode 100644
index 0000000000..a32ae0da4f
--- /dev/null
+++ b/keyboards/cipulot/kallos/info.json
@@ -0,0 +1,428 @@
+{
+ "keyboard_name": "Kallos",
+ "manufacturer": "Cipulot",
+ "url": "",
+ "maintainer": "Cipulot",
+ "usb": {
+ "vid": "0x6369",
+ "pid": "0x6B7A",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_default": {
+ "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": "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": "1,14",
+ "x": 14,
+ "y": 1.25
+ },
+ {
+ "label": "2,14",
+ "x": 15.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": "3,14",
+ "x": 15.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,13",
+ "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,12",
+ "x": 12.25,
+ "y": 4.25,
+ "w": 1.75
+ },
+ {
+ "label": "4,13",
+ "x": 14.25,
+ "y": 4.5
+ },
+ {
+ "label": "5,0",
+ "x": 0,
+ "y": 5.25,
+ "w": 1.25
+ },
+ {
+ "label": "5,1",
+ "x": 2.13,
+ "y": 5.25,
+ "w": 1.25
+ },
+ {
+ "label": "5,6",
+ "x": 3.38,
+ "y": 5.25,
+ "w": 6.25
+ },
+ {
+ "label": "5,9",
+ "x": 9.63,
+ "y": 5.25,
+ "w": 1.25
+ },
+ {
+ "label": "5,10",
+ "x": 11.75,
+ "y": 5.25,
+ "w": 1.25
+ },
+ {
+ "label": "5,12",
+ "x": 13.25,
+ "y": 5.5
+ },
+ {
+ "label": "5,13",
+ "x": 14.25,
+ "y": 5.5
+ },
+ {
+ "label": "5,14",
+ "x": 15.25,
+ "y": 5.5
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/cipulot/kallos/kallos.c b/keyboards/cipulot/kallos/kallos.c
new file mode 100644
index 0000000000..77f41f9075
--- /dev/null
+++ b/keyboards/cipulot/kallos/kallos.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 Cipulot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "kallos.h"
diff --git a/keyboards/cipulot/kallos/kallos.h b/keyboards/cipulot/kallos/kallos.h
new file mode 100644
index 0000000000..bf71b6becf
--- /dev/null
+++ b/keyboards/cipulot/kallos/kallos.h
@@ -0,0 +1,35 @@
+/* Copyright 2022 Cipulot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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_default( \
+ 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, 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, k313, \
+ k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, k412, k413, \
+ k500, k501, k506, k509, k510, k512, 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, KC_NO, k313, k314 }, \
+ { k400, k401, k402, k403, k404, k405, k406, k407, k408, k409, k410, KC_NO, k412, k413, KC_NO }, \
+ { k500, k501, KC_NO, KC_NO, KC_NO, KC_NO, k506, KC_NO, KC_NO, k509, k510, KC_NO, k512, k513, k514 } \
+}
diff --git a/keyboards/cipulot/kallos/keymaps/default/keymap.c b/keyboards/cipulot/kallos/keymaps/default/keymap.c
new file mode 100644
index 0000000000..501e8fb482
--- /dev/null
+++ b/keyboards/cipulot/kallos/keymaps/default/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2022 Cipulot
+
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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, MO(1), 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_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_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_LALT, KC_SPC, KC_RCTL, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_default(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_default(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_default(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cipulot/kallos/keymaps/via/keymap.c b/keyboards/cipulot/kallos/keymaps/via/keymap.c
new file mode 100644
index 0000000000..501e8fb482
--- /dev/null
+++ b/keyboards/cipulot/kallos/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2022 Cipulot
+
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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, MO(1), 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_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_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_LALT, KC_SPC, KC_RCTL, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_default(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_default(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_default(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cipulot/kallos/keymaps/via/rules.mk b/keyboards/cipulot/kallos/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/cipulot/kallos/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/cipulot/kallos/readme.md b/keyboards/cipulot/kallos/readme.md
new file mode 100644
index 0000000000..6d1341735c
--- /dev/null
+++ b/keyboards/cipulot/kallos/readme.md
@@ -0,0 +1,21 @@
+# Kallos
+
+* Keyboard Maintainer: [cipulot](https://github.com/cipulot)
+* Hardware Supported: Kallos
+* Hardware Availability: TBD
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cipulot/kallos:default
+
+Flashing example for this keyboard:
+
+ make cipulot/kallos: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 short the pads labeled "Reset" on the PCB
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/cipulot/kallos/rules.mk b/keyboards/cipulot/kallos/rules.mk
new file mode 100644
index 0000000000..1ad33bb514
--- /dev/null
+++ b/keyboards/cipulot/kallos/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 = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = yes
diff --git a/keyboards/cipulot/kawayo/config.h b/keyboards/cipulot/kawayo/config.h
new file mode 100644
index 0000000000..b99d3690c5
--- /dev/null
+++ b/keyboards/cipulot/kawayo/config.h
@@ -0,0 +1,37 @@
+/* Copyright 2022 Cipulot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_ROW_PINS \
+ { B1, B12, C13, A7, B0 }
+#define MATRIX_COL_PINS \
+ { B10, A0, B9, B8, B7, B6, B5, B4, B3, A15, A14, A4, A3, A2, A1 }
+
+/* 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/cipulot/kawayo/info.json b/keyboards/cipulot/kawayo/info.json
new file mode 100644
index 0000000000..b5f9f6415a
--- /dev/null
+++ b/keyboards/cipulot/kawayo/info.json
@@ -0,0 +1,613 @@
+{
+ "keyboard_name": "Kawayo",
+ "manufacturer": "Cipulot",
+ "url": "https://mecha.store",
+ "maintainer": "Cipulot",
+ "usb": {
+ "vid": "0x6369",
+ "pid": "0x6B7F",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT_all": "LAYOUT_65_ansi_blocker_split_bs"
+ },
+ "community_layouts": [ "65_ansi_blocker", "65_ansi_blocker_split_bs", "65_ansi_blocker_tsangan", "65_ansi_blocker_tsangan_split_bs" ],
+ "layouts": {
+ "LAYOUT_65_ansi_blocker": {
+ "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":"=+", "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":"Fn", "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":"", "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":"Up", "x":14, "y":3},
+ {"label":"", "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":"Left", "x":13, "y":4},
+ {"label":"Down", "x":14, "y":4},
+ {"label":"Right", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_ansi_blocker_split_bs": {
+ "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":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0},
+ {"label":"Backspace", "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":"\\|", "x":13.5, "y":1, "w":1.5},
+ {"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":"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":"Up", "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":"Left", "x":13, "y":4},
+ {"label":"Down", "x":14, "y":4},
+ {"label":"Right", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_ansi_blocker_tsangan": {
+ "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":"=+", "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":"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":"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":"Up", "x":14, "y":3},
+ {"label":"End", "x":15, "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":"Left", "x":13, "y":4},
+ {"label":"Down", "x":14, "y":4},
+ {"label":"Right", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_ansi_blocker_tsangan_split_bs": {
+ "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":"=+", "x":12, "y":0},
+ {"label":"Backspace", "x":13, "y":0},
+ {"label":"Backspace", "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":"\\|", "x":13.5, "y":1, "w":1.5},
+ {"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":"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":"Up", "x":14, "y":3},
+ {"label":"End", "x":15, "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":"Left", "x":13, "y":4},
+ {"label":"Down", "x":14, "y":4},
+ {"label":"Right", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_ansi_cb_blocker": {
+ "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":"=+", "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":"Fn", "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":"", "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":"Up", "x":14, "y":3},
+ {"label":"", "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":"GUI", "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}
+ ]
+ },
+ "LAYOUT_65_ansi_cb_blocker_split_bs": {
+ "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":"=+", "x":12, "y":0},
+ {"label":"Backspace", "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":"Fn", "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":"", "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":"Up", "x":14, "y":3},
+ {"label":"", "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":"GUI", "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}
+ ]
+ },
+ "LAYOUT_65_ansi_cb_blocker_tsangan": {
+ "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":"=+", "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":"Fn", "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":"", "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":"Up", "x":14, "y":3},
+ {"label":"", "x":15, "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":"Left", "x":13, "y":4},
+ {"label":"Down", "x":14, "y":4},
+ {"label":"Right", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_ansi_cb_blocker_tsangan_split_bs": {
+ "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":"=+", "x":12, "y":0},
+ {"label":"Backspace", "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":"Fn", "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":"", "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":"Up", "x":14, "y":3},
+ {"label":"", "x":15, "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":"Left", "x":13, "y":4},
+ {"label":"Down", "x":14, "y":4},
+ {"label":"Right", "x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/cipulot/kawayo/kawayo.c b/keyboards/cipulot/kawayo/kawayo.c
new file mode 100644
index 0000000000..1dee38696e
--- /dev/null
+++ b/keyboards/cipulot/kawayo/kawayo.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 Cipulot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "kawayo.h" \ No newline at end of file
diff --git a/keyboards/cipulot/kawayo/kawayo.h b/keyboards/cipulot/kawayo/kawayo.h
new file mode 100644
index 0000000000..41ab80821a
--- /dev/null
+++ b/keyboards/cipulot/kawayo/kawayo.h
@@ -0,0 +1,153 @@
+/* Copyright 2022 Cipulot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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
+
+/*
+ * ┌───────â”
+ * 2u Backspace │0E │▒▒▒ Corner Blocker (CB)
+ * └───────┴────
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │2E │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │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 │2D │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │45 │49 │4A │ │4B │4C │4D │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────â”
+ * │40 │41 │42 │45 │4A │ Blocker Tsangan
+ * └─────┴───┴─────┴───────────────────────────┴─────┘
+ */
+
+#define LAYOUT_65_ansi_blocker( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, 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, \
+ k40, k41, k42, k45, k49, k4A, k4B, k4C, k4D \
+) { \
+ { 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, 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, ___, ___, k45, ___, ___, ___, k49, k4A, k4B, k4C, k4D, ___ } \
+}
+
+#define LAYOUT_65_ansi_blocker_split_bs( \
+ 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, \
+ k40, k41, k42, k45, 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, k2D, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___ }, \
+ { k40, k41, k42, ___, ___, k45, ___, ___, ___, k49, k4A, k4B, k4C, k4D, ___ } \
+}
+
+#define LAYOUT_65_ansi_blocker_tsangan( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, 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, \
+ k40, k41, k42, k45, k4A, k4B, k4C, k4D \
+) { \
+ { 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, 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, ___, ___, k45, ___, ___, ___, ___, k4A, k4B, k4C, k4D, ___ } \
+}
+
+#define LAYOUT_65_ansi_blocker_tsangan_split_bs( \
+ 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, \
+ k40, k41, k42, k45, 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, k2D, k2E }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___ }, \
+ { k40, k41, k42, ___, ___, k45, ___, ___, ___, ___, k4A, k4B, k4C, k4D, ___ } \
+}
+
+#define LAYOUT_65_ansi_cb_blocker( \
+ 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, 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, \
+ k40, k41, k42, k45, k49, k4A, k4B, k4C, k4D \
+) { \
+ { 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, 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, ___ }, \
+ { k40, k41, k42, ___, ___, k45, ___, ___, ___, k49, k4A, k4B, k4C, k4D, ___ } \
+}
+
+#define LAYOUT_65_ansi_cb_blocker_split_bs( \
+ 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, \
+ 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, 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, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___ }, \
+ { k40, k41, k42, ___, ___, k45, ___, ___, ___, k49, k4A, k4B, k4C, k4D, ___ } \
+}
+
+#define LAYOUT_65_ansi_cb_blocker_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, 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, \
+ k40, k41, k42, k45, k4A, k4B, k4C, k4D \
+) { \
+ { 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, 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, ___ }, \
+ { k40, k41, k42, ___, ___, k45, ___, ___, ___, ___, k4A, k4B, k4C, k4D, ___ } \
+}
+
+#define LAYOUT_65_ansi_cb_blocker_tsangan_split_bs( \
+ 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, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, \
+ k40, k41, k42, k45, 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, k2D, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, ___ }, \
+ { k40, k41, k42, ___, ___, k45, ___, ___, ___, ___, k4A, k4B, k4C, k4D, ___ } \
+}
diff --git a/keyboards/cipulot/kawayo/keymaps/default/keymap.c b/keyboards/cipulot/kawayo/keymaps/default/keymap.c
new file mode 100644
index 0000000000..5d4bf4a35b
--- /dev/null
+++ b/keyboards/cipulot/kawayo/keymaps/default/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2022 Cipulot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_cb_blocker_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, MO(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_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_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_65_ansi_cb_blocker_split_bs(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_65_ansi_cb_blocker_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_65_ansi_cb_blocker_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cipulot/kawayo/keymaps/default_65_ansi_cb_blocker/keymap.c b/keyboards/cipulot/kawayo/keymaps/default_65_ansi_cb_blocker/keymap.c
new file mode 100644
index 0000000000..c160269ae8
--- /dev/null
+++ b/keyboards/cipulot/kawayo/keymaps/default_65_ansi_cb_blocker/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2022 Cipulot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_cb_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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, MO(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_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_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_65_ansi_cb_blocker(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_65_ansi_cb_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_65_ansi_cb_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cipulot/kawayo/keymaps/default_65_ansi_cb_blocker_tsangan/keymap.c b/keyboards/cipulot/kawayo/keymaps/default_65_ansi_cb_blocker_tsangan/keymap.c
new file mode 100644
index 0000000000..32a4389d3f
--- /dev/null
+++ b/keyboards/cipulot/kawayo/keymaps/default_65_ansi_cb_blocker_tsangan/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2022 Cipulot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_cb_blocker_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, MO(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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, _______,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_65_ansi_cb_blocker_tsangan(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_65_ansi_cb_blocker_tsangan(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_65_ansi_cb_blocker_tsangan(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cipulot/kawayo/keymaps/default_65_ansi_cb_blocker_tsangan_split_bs/keymap.c b/keyboards/cipulot/kawayo/keymaps/default_65_ansi_cb_blocker_tsangan_split_bs/keymap.c
new file mode 100644
index 0000000000..ca65d38440
--- /dev/null
+++ b/keyboards/cipulot/kawayo/keymaps/default_65_ansi_cb_blocker_tsangan_split_bs/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2022 Cipulot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_cb_blocker_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, MO(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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, _______,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_65_ansi_cb_blocker_tsangan_split_bs(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_65_ansi_cb_blocker_tsangan_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_65_ansi_cb_blocker_tsangan_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cipulot/kawayo/keymaps/via/keymap.c b/keyboards/cipulot/kawayo/keymaps/via/keymap.c
new file mode 100644
index 0000000000..5d4bf4a35b
--- /dev/null
+++ b/keyboards/cipulot/kawayo/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2022 Cipulot
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_cb_blocker_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, MO(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_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_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_65_ansi_cb_blocker_split_bs(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_65_ansi_cb_blocker_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_65_ansi_cb_blocker_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/cipulot/kawayo/keymaps/via/rules.mk b/keyboards/cipulot/kawayo/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/cipulot/kawayo/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/cipulot/kawayo/readme.md b/keyboards/cipulot/kawayo/readme.md
new file mode 100644
index 0000000000..53e01faaa5
--- /dev/null
+++ b/keyboards/cipulot/kawayo/readme.md
@@ -0,0 +1,29 @@
+# Kawayo
+
+![Kawayo Board](https://i.imgur.com/MecyLFl.jpeg)
+
+A board dedicated to Nakiri Ayame from Nakirigumi. 65% with top blocker.
+
+* Keyboard Maintainer: [cipulot](https://github.com/cipulot) and the Mecha Team
+* Hardware Supported: Kawayo
+* Hardware Availability: [Mecha Store](https://mecha.store)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make cipulot/kawayo:default
+ make cipulot/kawayo:via
+
+Flashing example for this keyboard:
+
+ make cipulot/kawayo:default:flash
+ make cipulot/kawayo:via: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**: Power up the board while having the `Reset/Boot0` pad shorted.
+
+* **Keycode in layout**: Press the `GRV` key on layer 1 which is mapped to `QK_BOOT`
diff --git a/keyboards/cipulot/kawayo/rules.mk b/keyboards/cipulot/kawayo/rules.mk
new file mode 100644
index 0000000000..2deb4d731c
--- /dev/null
+++ b/keyboards/cipulot/kawayo/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = STM32F411
+
+BOARD = GENERIC_STM32_F411XE
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+KEYBOARD_SHARED_EP = yes
+
+# 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/ck60i/config.h b/keyboards/ck60i/config.h
index 3e09f1dfb0..49a530b1d3 100644
--- a/keyboards/ck60i/config.h
+++ b/keyboards/ck60i/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x434B // CK for candykeys
-#define PRODUCT_ID 0x6049 // 60i
-#define DEVICE_VER 0x0001 // Revision pre-Alpha
-#define MANUFACTURER CandyKeys
-#define PRODUCT CK60i
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/ck60i/info.json b/keyboards/ck60i/info.json
index f0a81eb62b..dd5230e5eb 100644
--- a/keyboards/ck60i/info.json
+++ b/keyboards/ck60i/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "CK60i",
+ "manufacturer": "CandyKeys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x434B",
+ "pid": "0x6049",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ckeys/handwire_101/config.h b/keyboards/ckeys/handwire_101/config.h
index 6b3f6c5b7f..0b9db50d2e 100755
--- a/keyboards/ckeys/handwire_101/config.h
+++ b/keyboards/ckeys/handwire_101/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER cKeys
-#define PRODUCT Handwire 101
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
diff --git a/keyboards/ckeys/handwire_101/info.json b/keyboards/ckeys/handwire_101/info.json
index 19e6edb481..344c34e5d8 100644
--- a/keyboards/ckeys/handwire_101/info.json
+++ b/keyboards/ckeys/handwire_101/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "cKeys Handwire 101",
+ "keyboard_name": "Handwire 101",
+ "manufacturer": "cKeys",
"url": "https://ckeys.org/slides/handwire/",
"maintainer": "brandenbyers",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_ortho_4x4"
},
diff --git a/keyboards/ckeys/handwire_101/keymaps/default/keymap.c b/keyboards/ckeys/handwire_101/keymaps/default/keymap.c
index 3bb1a2c009..3f5ebc8655 100755
--- a/keyboards/ckeys/handwire_101/keymaps/default/keymap.c
+++ b/keyboards/ckeys/handwire_101/keymaps/default/keymap.c
@@ -134,10 +134,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------=======------------------------'
*/
[_TERMINAL] = LAYOUT_ortho_4x4(
- _______, TERM_ABOUT, _______, _______,
- TERM_OFF, TERM_PRINT, _______, _______,
- _______, TERM_FLUSH, _______, _______,
- TERM_ON, TERM_HELP , _______, _______
+ _______, TERM_ABOUT, _______, _______,
+ _______, TERM_PRINT, _______, _______,
+ _______, TERM_FLUSH, _______, _______,
+ _______, TERM_HELP , _______, _______
),
/* ADMIN
* ,-----------------------------------------.
diff --git a/keyboards/ckeys/handwire_101/readme.md b/keyboards/ckeys/handwire_101/readme.md
index cf20dab60b..281fbddc7c 100755
--- a/keyboards/ckeys/handwire_101/readme.md
+++ b/keyboards/ckeys/handwire_101/readme.md
@@ -139,7 +139,7 @@ This layer is not currently working but has been left as an example of how to wr
```
/* ADMIN
* ,-----------------------------------------.
- * | RESET | | | X |
+ * | QK_BOOT | | | X |
* |------------+-----+-----------+----------|
* |ABOUT CKEYS | | | |
* |------------+-----+-----------+----------|
@@ -150,7 +150,7 @@ This layer is not currently working but has been left as an example of how to wr
*/
```
-The most important key in this layer is the `RESET` switch. Use it to flash new firmware. It does the same thing as the hardware button on the Proton C. But since you soldered the Proton C with the reset button facing towards the keys, the only way to reach it is to de-solder wires. The reset switch solves this. Program a reset switch into all of your future keyboards.
+The most important key in this layer is the `QK_BOOT` switch. Use it to flash new firmware. It does the same thing as the hardware button on the Proton C. But since you soldered the Proton C with the reset button facing towards the keys, the only way to reach it is to de-solder wires. The reset switch solves this. Program a reset switch into all of your future keyboards.
The `ABOUT CKEYS` is another example of using a macro. It will type out a few sentences about cKeys.
diff --git a/keyboards/ckeys/handwire_101/rules.mk b/keyboards/ckeys/handwire_101/rules.mk
index 8fa32bcee5..3131bb405a 100755
--- a/keyboards/ckeys/handwire_101/rules.mk
+++ b/keyboards/ckeys/handwire_101/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
-TERMINAL_ENABLE = yes
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/config.h b/keyboards/ckeys/nakey/config.h
index b620ff08c7..c482a41acd 100644
--- a/keyboards/ckeys/nakey/config.h
+++ b/keyboards/ckeys/nakey/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER cKeys
-#define PRODUCT naKey
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F1, F4, F5, F6, F7 }
#define MATRIX_COL_PINS { B0, B1, B2, B3 }
-#define UNUSED_PINS { D0, D1, D2, D3, D4, D5, D6, D7, C6, C7, B4, B5, B6, B7 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ckeys/nakey/info.json b/keyboards/ckeys/nakey/info.json
index 2f939be578..1f1e67fedf 100644
--- a/keyboards/ckeys/nakey/info.json
+++ b/keyboards/ckeys/nakey/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "naKey",
+ "manufacturer": "cKeys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/ckeys/obelus/config.h b/keyboards/ckeys/obelus/config.h
index 1759f6c5fc..07e0ec394d 100644
--- a/keyboards/ckeys/obelus/config.h
+++ b/keyboards/ckeys/obelus/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER You
-#define PRODUCT obelus
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { F0, F1, B2, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ckeys/obelus/info.json b/keyboards/ckeys/obelus/info.json
index f930f65bc5..7c0629fd5e 100644
--- a/keyboards/ckeys/obelus/info.json
+++ b/keyboards/ckeys/obelus/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Obelus",
+ "manufacturer": "cKeys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/ckeys/thedora/config.h b/keyboards/ckeys/thedora/config.h
index 8e96c8ed06..721e8977d6 100755
--- a/keyboards/ckeys/thedora/config.h
+++ b/keyboards/ckeys/thedora/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ckeys
-#define PRODUCT thedora
-
#define ENCODERS_PAD_A { B13 }
#define ENCODERS_PAD_B { B15 }
#define ENCODER_RESOLUTION 4
@@ -36,7 +29,6 @@
#define MATRIX_ROW_PINS { A2, A1, A0, B8 }
#define MATRIX_COL_PINS { B5, B4, B3, B2, B1, B0 }
-// #define UNUSED_PINS { B14 }
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ckeys/thedora/info.json b/keyboards/ckeys/thedora/info.json
index 631da8f26e..311ccec843 100644
--- a/keyboards/ckeys/thedora/info.json
+++ b/keyboards/ckeys/thedora/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "The Dora Board.",
+ "keyboard_name": "thedora",
+ "manufacturer": "ckeys",
"url": "https://ckeys.org/slides/exboard",
"maintainer": "brandenbyers",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ckeys/washington/config.h b/keyboards/ckeys/washington/config.h
index 2d5a8ce3ad..8849c4e834 100644
--- a/keyboards/ckeys/washington/config.h
+++ b/keyboards/ckeys/washington/config.h
@@ -17,13 +17,6 @@ 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 0x002A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER merlin04
-#define PRODUCT Washington Macropad
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -40,7 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6 }
#define MATRIX_COL_PINS { F7, B1, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ckeys/washington/info.json b/keyboards/ckeys/washington/info.json
index 304e4f3354..20e83faf2b 100644
--- a/keyboards/ckeys/washington/info.json
+++ b/keyboards/ckeys/washington/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "washington",
+ "keyboard_name": "Washington Macropad",
+ "manufacturer": "merlin04",
"url": "https://keypcb.xyz/ViewPage/Washington",
"maintainer": "merlin04",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x002A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":3.5, "y":0}, {"x":1.5, "y":1}, {"x":2.5, "y":1}, {"x":3.5, "y":1}, {"x":0, "y":0.75}, {"x":0.5, "y":1.75}, {"x":1.5, "y":2}]
diff --git a/keyboards/ckeys/washington/keymaps/default/keymap.c b/keyboards/ckeys/washington/keymaps/default/keymap.c
index 95e0f3ab59..9ce0181fe4 100644
--- a/keyboards/ckeys/washington/keymaps/default/keymap.c
+++ b/keyboards/ckeys/washington/keymaps/default/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
bool encoder_update_user(uint8_t index, bool clockwise) {
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _BASE:
if (clockwise) {
tap_code(KC_VOLU);
@@ -62,7 +62,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
bool oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _BASE:
oled_write_P(PSTR("Default\n"), false);
break;
diff --git a/keyboards/clawsome/bookerboard/config.h b/keyboards/clawsome/bookerboard/config.h
index 6619ef3972..208a12ef26 100644
--- a/keyboards/clawsome/bookerboard/config.h
+++ b/keyboards/clawsome/bookerboard/config.h
@@ -19,13 +19,6 @@ 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 0x41CE
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AlisGraveNil
-#define PRODUCT Bookerboard
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 3
diff --git a/keyboards/clawsome/bookerboard/info.json b/keyboards/clawsome/bookerboard/info.json
index 3e1eae3d21..e278685f96 100644
--- a/keyboards/clawsome/bookerboard/info.json
+++ b/keyboards/clawsome/bookerboard/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "bookerboard",
+ "keyboard_name": "Bookerboard",
+ "manufacturer": "AlisGraveNil",
"url": "",
"maintainer": "AlisGraveNil",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x41CE",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/clawsome/coupe/config.h b/keyboards/clawsome/coupe/config.h
index 8d88c95f05..8d7cfa75b0 100644
--- a/keyboards/clawsome/coupe/config.h
+++ b/keyboards/clawsome/coupe/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7767
-#define PRODUCT_ID 0x7E94
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AlisGraveNil
-#define PRODUCT The Coupe
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
diff --git a/keyboards/clawsome/coupe/info.json b/keyboards/clawsome/coupe/info.json
index 5c66544252..6ab71fdb5d 100644
--- a/keyboards/clawsome/coupe/info.json
+++ b/keyboards/clawsome/coupe/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Coupe",
+ "keyboard_name": "The Coupe",
+ "manufacturer": "AlisGraveNil",
"url": "www.clawboards.xyz",
"maintainer": "AlisGraveNil",
+ "usb": {
+ "vid": "0x7767",
+ "pid": "0x7E94",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/clawsome/doodle/config.h b/keyboards/clawsome/doodle/config.h
index df33e6d84c..72ee521b64 100644
--- a/keyboards/clawsome/doodle/config.h
+++ b/keyboards/clawsome/doodle/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7767
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AlisGraveNil
-#define PRODUCT doodle
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
diff --git a/keyboards/clawsome/doodle/info.json b/keyboards/clawsome/doodle/info.json
index df9ca13834..7d1dcb4b60 100644
--- a/keyboards/clawsome/doodle/info.json
+++ b/keyboards/clawsome/doodle/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "doodle",
+ "manufacturer": "AlisGraveNil",
"url": "www.clawboards.xyz",
"maintainer": "AlisGraveNil",
+ "usb": {
+ "vid": "0x7767",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/clawsome/fightpad/config.h b/keyboards/clawsome/fightpad/config.h
index 6f2e78b6bb..b31daece63 100644
--- a/keyboards/clawsome/fightpad/config.h
+++ b/keyboards/clawsome/fightpad/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7767
-#define PRODUCT_ID 0x481C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AlisGraveNil
-#define PRODUCT FightPad
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 7
diff --git a/keyboards/clawsome/fightpad/info.json b/keyboards/clawsome/fightpad/info.json
index 5d52c0ce87..f6389e06c7 100644
--- a/keyboards/clawsome/fightpad/info.json
+++ b/keyboards/clawsome/fightpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "FightPad",
+ "manufacturer": "AlisGraveNil",
"url": "www.clawboards.xyz",
"maintainer": "AlisGraveNil",
+ "usb": {
+ "vid": "0x7767",
+ "pid": "0x481C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/clawsome/gamebuddy/v1_0/config.h b/keyboards/clawsome/gamebuddy/v1_0/config.h
index 91b6fc6374..88ad4dc2a5 100644
--- a/keyboards/clawsome/gamebuddy/v1_0/config.h
+++ b/keyboards/clawsome/gamebuddy/v1_0/config.h
@@ -19,13 +19,6 @@ 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 0x17B9
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AlisGraveNil
-#define PRODUCT GameBuddy1_0
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 7
diff --git a/keyboards/clawsome/gamebuddy/v1_0/info.json b/keyboards/clawsome/gamebuddy/v1_0/info.json
index dc9c56587e..0d52501930 100644
--- a/keyboards/clawsome/gamebuddy/v1_0/info.json
+++ b/keyboards/clawsome/gamebuddy/v1_0/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GameBuddy1_0",
+ "manufacturer": "AlisGraveNil",
"url": "www.clawboards.xyz",
"maintainer": "AlisGraveNil",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x17B9",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/clawsome/gamebuddy/v1_m/config.h b/keyboards/clawsome/gamebuddy/v1_m/config.h
index 748e35237a..c68b350fbb 100644
--- a/keyboards/clawsome/gamebuddy/v1_m/config.h
+++ b/keyboards/clawsome/gamebuddy/v1_m/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7767
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AlisGraveNil
-#define PRODUCT GameBuddy1_M
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 7
diff --git a/keyboards/clawsome/gamebuddy/v1_m/info.json b/keyboards/clawsome/gamebuddy/v1_m/info.json
index 57b970e146..ee7f1e1ae8 100644
--- a/keyboards/clawsome/gamebuddy/v1_m/info.json
+++ b/keyboards/clawsome/gamebuddy/v1_m/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GameBuddy1_M",
+ "manufacturer": "AlisGraveNil",
"url": "www.clawboards.xyz",
"maintainer": "AlisGraveNil",
+ "usb": {
+ "vid": "0x7767",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/clawsome/hatchback/config.h b/keyboards/clawsome/hatchback/config.h
index 6560ad154f..2aa7f56e47 100644
--- a/keyboards/clawsome/hatchback/config.h
+++ b/keyboards/clawsome/hatchback/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7767
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AlisGraveNil
-#define PRODUCT hatchbackTKL
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 10
diff --git a/keyboards/clawsome/hatchback/info.json b/keyboards/clawsome/hatchback/info.json
index 94e350b4b1..75fbd34ec7 100644
--- a/keyboards/clawsome/hatchback/info.json
+++ b/keyboards/clawsome/hatchback/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "hatchbackTKL",
+ "manufacturer": "AlisGraveNil",
"url": "www.clawboards.xyz",
"maintainer": "AlisGraveNil",
+ "usb": {
+ "vid": "0x7767",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/clawsome/luggage_rack/config.h b/keyboards/clawsome/luggage_rack/config.h
index 32b3ea4561..8f64283e7a 100644
--- a/keyboards/clawsome/luggage_rack/config.h
+++ b/keyboards/clawsome/luggage_rack/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7767
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AlisGraveNil
-#define PRODUCT luggage_rack
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 3
diff --git a/keyboards/clawsome/luggage_rack/info.json b/keyboards/clawsome/luggage_rack/info.json
index 56b38ea49d..f9150a2a7e 100644
--- a/keyboards/clawsome/luggage_rack/info.json
+++ b/keyboards/clawsome/luggage_rack/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "luggage_rack",
+ "manufacturer": "AlisGraveNil",
"url": "www.clawboards.xyz",
"maintainer": "AlisGraveNil",
+ "usb": {
+ "vid": "0x7767",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/clawsome/numeros/config.h b/keyboards/clawsome/numeros/config.h
index 4c873ffb8d..674c3323c3 100644
--- a/keyboards/clawsome/numeros/config.h
+++ b/keyboards/clawsome/numeros/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7767
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AlisGraveNil
-#define PRODUCT Los Numeros
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
diff --git a/keyboards/clawsome/numeros/info.json b/keyboards/clawsome/numeros/info.json
index 4d9f59e553..2f7c17b408 100644
--- a/keyboards/clawsome/numeros/info.json
+++ b/keyboards/clawsome/numeros/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "numeros",
+ "keyboard_name": "Los Numeros",
+ "manufacturer": "AlisGraveNil",
"url": "www.clawboards.xyz",
"maintainer": "AlisGraveNil",
+ "usb": {
+ "vid": "0x7767",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_5x4": {
"layout": [
diff --git a/keyboards/clawsome/roadster/config.h b/keyboards/clawsome/roadster/config.h
index 85f9442135..e6872a31d5 100644
--- a/keyboards/clawsome/roadster/config.h
+++ b/keyboards/clawsome/roadster/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7767
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AlisGraveNil
-#define PRODUCT Roadster
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/clawsome/roadster/info.json b/keyboards/clawsome/roadster/info.json
index 999f64c2f4..f76620cd77 100644
--- a/keyboards/clawsome/roadster/info.json
+++ b/keyboards/clawsome/roadster/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Roadster",
+ "manufacturer": "AlisGraveNil",
"url": "www.clawboards.xyz",
"maintainer": "AlisGraveNil",
+ "usb": {
+ "vid": "0x7767",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/clawsome/sedan/config.h b/keyboards/clawsome/sedan/config.h
index 2a02a9a1e7..686c0afeab 100644
--- a/keyboards/clawsome/sedan/config.h
+++ b/keyboards/clawsome/sedan/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7767
-#define PRODUCT_ID 0x8C78
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AlisGraveNil
-#define PRODUCT The Sedan
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/clawsome/sedan/info.json b/keyboards/clawsome/sedan/info.json
index 568c1e010b..efee77a51b 100644
--- a/keyboards/clawsome/sedan/info.json
+++ b/keyboards/clawsome/sedan/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "sedan",
+ "keyboard_name": "The Sedan",
+ "manufacturer": "AlisGraveNil",
"url": "www.clawboards.xyz",
"maintainer": "AlisGraveNil",
+ "usb": {
+ "vid": "0x7767",
+ "pid": "0x8C78",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/clawsome/sidekick/config.h b/keyboards/clawsome/sidekick/config.h
index dbf1f061e6..d76dd38bbe 100644
--- a/keyboards/clawsome/sidekick/config.h
+++ b/keyboards/clawsome/sidekick/config.h
@@ -19,13 +19,6 @@ 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 0xDB9F
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AlisGraveNil
-#define PRODUCT Sidekick
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 7
diff --git a/keyboards/clawsome/sidekick/info.json b/keyboards/clawsome/sidekick/info.json
index 0dd1ed5e80..790f99a7eb 100644
--- a/keyboards/clawsome/sidekick/info.json
+++ b/keyboards/clawsome/sidekick/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Sidekick",
+ "manufacturer": "AlisGraveNil",
"url": "",
"maintainer": "AlisGraveNil",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xDB9F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/clawsome/suv/config.h b/keyboards/clawsome/suv/config.h
index 8ea2ed5bdc..a07539013d 100644
--- a/keyboards/clawsome/suv/config.h
+++ b/keyboards/clawsome/suv/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7767
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER AlisGraveNil
-#define PRODUCT suv1.1
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 11
diff --git a/keyboards/clawsome/suv/info.json b/keyboards/clawsome/suv/info.json
index 70cfd37908..b1d3a926a0 100644
--- a/keyboards/clawsome/suv/info.json
+++ b/keyboards/clawsome/suv/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "suv1.1",
+ "manufacturer": "AlisGraveNil",
"url": "www.clawboards.xyz",
"maintainer": "AlisGraveNil",
+ "usb": {
+ "vid": "0x7767",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/clickety_split/leeloo/info.json b/keyboards/clickety_split/leeloo/info.json
index 5473292d14..b916866388 100644
--- a/keyboards/clickety_split/leeloo/info.json
+++ b/keyboards/clickety_split/leeloo/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Leeloo",
+ "manufacturer": "Clickety Split Ltd",
"url": "https://clicketysplit.ca/pages/leeloo",
"maintainer": "ClicketySplit",
+ "usb": {
+ "vid": "0x4013",
+ "pid": "0x2022",
+ "device_version": "0.1.3"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/clickety_split/leeloo/rev1/config.h b/keyboards/clickety_split/leeloo/rev1/config.h
index cf9c563f8f..88bab4ca98 100644
--- a/keyboards/clickety_split/leeloo/rev1/config.h
+++ b/keyboards/clickety_split/leeloo/rev1/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4013
-#define PRODUCT_ID 0x2022
-#define DEVICE_VER 0x0013
-#define MANUFACTURER Clickety Split Ltd
-#define PRODUCT Leeloo
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/clueboard/66/keymaps/66_ansi/keymap.c b/keyboards/clueboard/66/keymaps/66_ansi/keymap.c
index 73c809ded6..915bd0f70c 100644
--- a/keyboards/clueboard/66/keymaps/66_ansi/keymap.c
+++ b/keyboards/clueboard/66/keymaps/66_ansi/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_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,
+ _______,_______,_______,_______,QK_BOOT, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD,
_______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI,
_______,_______,_______, RGB_MOD, _______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/66_iso/keymap.c b/keyboards/clueboard/66/keymaps/66_iso/keymap.c
index ff27acf5cd..b2f83ce17f 100644
--- a/keyboards/clueboard/66/keymaps/66_iso/keymap.c
+++ b/keyboards/clueboard/66/keymaps/66_iso/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT_66_iso(
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,
+ _______,_______,_______,_______,QK_BOOT, _______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD,
_______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
MO(_FL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI,
_______,_______,_______, RGB_MOD, _______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/badger/keymap.c b/keyboards/clueboard/66/keymaps/badger/keymap.c
index 74fec0b58e..f7d35f4a3e 100644
--- a/keyboards/clueboard/66/keymaps/badger/keymap.c
+++ b/keyboards/clueboard/66/keymaps/badger/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_66_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_VOLU, \
- _______, NK_ON, NK_OFF, EEP_RST, RESET, KC_MSTP, KC_MPLY, KC_PGUP, KC_HOME, KC_END, KC_PGDN, AG_SWAP, AG_NORM, KC_INS, KC_VOLD, \
+ _______, NK_ON, NK_OFF, EEP_RST, QK_BOOT, KC_MSTP, KC_MPLY, KC_PGUP, KC_HOME, KC_END, KC_PGDN, AG_SWAP, AG_NORM, KC_INS, KC_VOLD, \
_______, GE_SWAP, GE_NORM, DEBUG, AG_SWAP, AG_NORM, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, \
_______, DF_1, DF_2, KC_CAPS, _______, KC_MPRV, KC_MNXT, KC_MUTE, KC_WBAK, KC_WFWD, _______, _______, KC_BRIU, \
_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_BRID, KC_END)
diff --git a/keyboards/clueboard/66/keymaps/bloodlvst/keymap.c b/keyboards/clueboard/66/keymaps/bloodlvst/keymap.c
index 7c7faba9ce..a64c5dec03 100644
--- a/keyboards/clueboard/66/keymaps/bloodlvst/keymap.c
+++ b/keyboards/clueboard/66/keymaps/bloodlvst/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
KC_PWR, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
- _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______,_______,QK_BOOT, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, RGB_MOD,
_______, _______, _______,_______,_______,_______,_______,_______,_______,RGB_HUD, RGB_HUI, _______, _______, _______, KC_WAKE,
_______, _______, MO(_FL), _______, RGB_SAD,RGB_SAI, _______, _______, MO(_FL), _______, _______, KC_SLEP, _______),
diff --git a/keyboards/clueboard/66/keymaps/caps_fn/keymap.c b/keyboards/clueboard/66/keymaps/caps_fn/keymap.c
index fc0c56d9a7..4767f0f7ea 100644
--- a/keyboards/clueboard/66/keymaps/caps_fn/keymap.c
+++ b/keyboards/clueboard/66/keymaps/caps_fn/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
- _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______,_______,QK_BOOT, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______,
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI,
_______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/colemak/keymap.c b/keyboards/clueboard/66/keymaps/colemak/keymap.c
index 4479556b65..daacbe9664 100644
--- a/keyboards/clueboard/66/keymaps/colemak/keymap.c
+++ b/keyboards/clueboard/66/keymaps/colemak/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
BL_STEP, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
- _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______,_______,QK_BOOT, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______,
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_SAI,
_______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/jokrik/keymap.c b/keyboards/clueboard/66/keymaps/jokrik/keymap.c
index 9c6997c34e..0558dffd28 100644
--- a/keyboards/clueboard/66/keymaps/jokrik/keymap.c
+++ b/keyboards/clueboard/66/keymaps/jokrik/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
- _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______,_______,QK_BOOT, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______,
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_SAI,
_______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, MO(_FL), _______, RGB_HUD, RGB_SAD, RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/mac_optimized/keymap.c b/keyboards/clueboard/66/keymaps/mac_optimized/keymap.c
index 30e772900e..5c184e69e9 100644
--- a/keyboards/clueboard/66/keymaps/mac_optimized/keymap.c
+++ b/keyboards/clueboard/66/keymaps/mac_optimized/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
BL_STEP,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RGB_TOG, RGB_VAI,
- _______,_______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD,
+ _______,_______,_______,_______,QK_BOOT, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD,
_______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
MO(_FL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_SAI,
_______,_______,_______,_______, RGB_MOD, RGB_MOD, _______,_______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/magicmonty/keymap.c b/keyboards/clueboard/66/keymaps/magicmonty/keymap.c
index 56d4c47071..c27b929b95 100644
--- a/keyboards/clueboard/66/keymaps/magicmonty/keymap.c
+++ b/keyboards/clueboard/66/keymaps/magicmonty/keymap.c
@@ -72,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _CL: Control layer */
[_CL] = LAYOUT(
_______, RGB_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD,
_______, _______, MO_CTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
_______, _______, _______, _______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
@@ -199,7 +199,7 @@ void matrix_scan_user(void) {
if (!rgblight_config.enable || rgblight_config.mode != 1) { return; }
- uint32_t layer = layer_state;
+ layer_state_t layer = layer_state;
uint8_t val = rgblight_config.val;
if (layer & (1<<_FL)) {
diff --git a/keyboards/clueboard/66/keymaps/manofinterests/keymap.c b/keyboards/clueboard/66/keymaps/manofinterests/keymap.c
index e71419980d..dbe73e55b9 100644
--- a/keyboards/clueboard/66/keymaps/manofinterests/keymap.c
+++ b/keyboards/clueboard/66/keymaps/manofinterests/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
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,
+ _______,_______,_______,_______,QK_BOOT, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD,
_______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
MO(_FL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_SAI,
_______,_______,_______,_______, RGB_MOD, RGB_MOD, _______,_______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/maximised/keymap.c b/keyboards/clueboard/66/keymaps/maximised/keymap.c
index c2e05a5a27..3a70478a5b 100644
--- a/keyboards/clueboard/66/keymaps/maximised/keymap.c
+++ b/keyboards/clueboard/66/keymaps/maximised/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
- _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______,_______,QK_BOOT, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______,
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI,
_______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/mouse_keys/keymap.c b/keyboards/clueboard/66/keymaps/mouse_keys/keymap.c
index be5634f103..3d64356e7b 100644
--- a/keyboards/clueboard/66/keymaps/mouse_keys/keymap.c
+++ b/keyboards/clueboard/66/keymaps/mouse_keys/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
- _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______,_______,QK_BOOT, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______,
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI,
_______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/mrscooty/keymap.c b/keyboards/clueboard/66/keymaps/mrscooty/keymap.c
index 302649c923..449f2ed1e7 100644
--- a/keyboards/clueboard/66/keymaps/mrscooty/keymap.c
+++ b/keyboards/clueboard/66/keymaps/mrscooty/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_CL] = LAYOUT(
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,
+ _______,_______,_______,_______,QK_BOOT, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_SAI,
_______,_______,_______,_______, RGB_MOD, RGB_MOD, _______,_______,_______,_______,RGB_HUD,RGB_SAD,RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/muzfuz/keymap.c b/keyboards/clueboard/66/keymaps/muzfuz/keymap.c
index d4af354831..bc911f045b 100644
--- a/keyboards/clueboard/66/keymaps/muzfuz/keymap.c
+++ b/keyboards/clueboard/66/keymaps/muzfuz/keymap.c
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, RGB_VAD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
_______, _______, _______, _______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/serubin/keymap.c b/keyboards/clueboard/66/keymaps/serubin/keymap.c
index e77417c3c2..56b67763dd 100644
--- a/keyboards/clueboard/66/keymaps/serubin/keymap.c
+++ b/keyboards/clueboard/66/keymaps/serubin/keymap.c
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
- _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______,_______,QK_BOOT, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______,
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, MO(_FL), _______, RGB_SAI,
_______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/shift_fn/keymap.c b/keyboards/clueboard/66/keymaps/shift_fn/keymap.c
index 8556f90803..196e6b620a 100644
--- a/keyboards/clueboard/66/keymaps/shift_fn/keymap.c
+++ b/keyboards/clueboard/66/keymaps/shift_fn/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
- _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______,_______,QK_BOOT, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______,
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI,
_______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD,RGB_SAD,RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/smt/keymap.c b/keyboards/clueboard/66/keymaps/smt/keymap.c
index 89fc495919..fb696fd75c 100644
--- a/keyboards/clueboard/66/keymaps/smt/keymap.c
+++ b/keyboards/clueboard/66/keymaps/smt/keymap.c
@@ -96,7 +96,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
- _______, _______, _______,_______,RESET, _______,_______,QWERTY, COLEMAK,DVORAK, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______,_______,QK_BOOT, _______,_______,QWERTY, COLEMAK,DVORAK, _______, _______, _______, _______, RGB_VAD,
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______,
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI,
_______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/tetris/keymap.c b/keyboards/clueboard/66/keymaps/tetris/keymap.c
index 26dd97feec..1d223a6add 100644
--- a/keyboards/clueboard/66/keymaps/tetris/keymap.c
+++ b/keyboards/clueboard/66/keymaps/tetris/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
- _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______,_______,QK_BOOT, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______,
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI,
_______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/unix_optimized/keymap.c b/keyboards/clueboard/66/keymaps/unix_optimized/keymap.c
index 823959ee0d..472f24b2ef 100644
--- a/keyboards/clueboard/66/keymaps/unix_optimized/keymap.c
+++ b/keyboards/clueboard/66/keymaps/unix_optimized/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
- _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______,_______,QK_BOOT, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______,
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI,
_______, _______, _______,_______, RGB_MOD,RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD,RGB_HUI),
diff --git a/keyboards/clueboard/66/keymaps/win_optimized/keymap.c b/keyboards/clueboard/66/keymaps/win_optimized/keymap.c
index 2c5cb86398..9d21fa2617 100644
--- a/keyboards/clueboard/66/keymaps/win_optimized/keymap.c
+++ b/keyboards/clueboard/66/keymaps/win_optimized/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT(
_______, _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_TOG, RGB_VAI,
- _______, _______, _______,_______,RESET, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
+ _______, _______, _______,_______,QK_BOOT, _______,_______,_______,_______,_______, _______, _______, _______, _______, RGB_VAD,
_______, _______, MO(_CL),_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, _______,
MO(_FL), _______, _______,_______,_______,_______,_______,_______,_______,_______, _______, _______, _______, MO(_FL), RGB_SAI,
_______, _______, _______,_______, RGB_MOD, RGB_MOD, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
diff --git a/keyboards/clueboard/66/rev4/keymaps/keymap.c b/keyboards/clueboard/66/rev4/keymaps/keymap.c
index df145eb488..27280406fe 100644
--- a/keyboards/clueboard/66/rev4/keymaps/keymap.c
+++ b/keyboards/clueboard/66/rev4/keymaps/keymap.c
@@ -9,5 +9,5 @@
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_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, 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_TRNS, KC_DEL, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_MUTE, KC_VOLD, 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, MO(1), KC_TRNS, KC_HOME, KC_PGDN, KC_END),
- [2] = LAYOUT(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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAI, 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, RGB_VAD, 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, MO(1), KC_TRNS, 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, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI)
+ [2] = LAYOUT(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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, 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, MO(1), KC_TRNS, 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, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI)
};
diff --git a/keyboards/clueboard/66/rev4/keymaps/mine/keymap.c b/keyboards/clueboard/66/rev4/keymaps/mine/keymap.c
index df145eb488..27280406fe 100644
--- a/keyboards/clueboard/66/rev4/keymaps/mine/keymap.c
+++ b/keyboards/clueboard/66/rev4/keymaps/mine/keymap.c
@@ -9,5 +9,5 @@
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_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, 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_TRNS, KC_DEL, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_MUTE, KC_VOLD, 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, MO(1), KC_TRNS, KC_HOME, KC_PGDN, KC_END),
- [2] = LAYOUT(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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAI, 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, RGB_VAD, 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, MO(1), KC_TRNS, 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, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI)
+ [2] = LAYOUT(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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, 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, MO(1), KC_TRNS, 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, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI)
};
diff --git a/keyboards/clueboard/66/rev4/mine/keymap.c b/keyboards/clueboard/66/rev4/mine/keymap.c
deleted file mode 100644
index df145eb488..0000000000
--- a/keyboards/clueboard/66/rev4/mine/keymap.c
+++ /dev/null
@@ -1,13 +0,0 @@
-#include QMK_KEYBOARD_H
-
-/* THIS FILE WAS GENERATED!
- *
- * This file was generated by qmk json2c. You may or may not want to
- * edit it directly.
- */
-
-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_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, 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_TRNS, KC_DEL, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_MUTE, KC_VOLD, 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, MO(1), KC_TRNS, KC_HOME, KC_PGDN, KC_END),
- [2] = LAYOUT(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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_VAI, 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, RGB_VAD, 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, MO(1), KC_TRNS, 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, RGB_MOD, RGB_MOD, KC_TRNS, KC_TRNS, MO(1), KC_TRNS, RGB_HUD, RGB_SAD, RGB_HUI)
-};
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 23eb08e189..c16d63e758 100644
--- a/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c
+++ b/keyboards/clueboard/66_hotswap/gen1/keymaps/66_ansi/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_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,
+ _______,_______,_______,_______,QK_BOOT, _______,_______,_______,_______,_______,_______,_______,_______,_______, 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/json/keymap.json b/keyboards/clueboard/66_hotswap/gen1/keymaps/json/keymap.json
index 20aa9f0f6c..b2111dc3ca 100644
--- a/keyboards/clueboard/66_hotswap/gen1/keymaps/json/keymap.json
+++ b/keyboards/clueboard/66_hotswap/gen1/keymaps/json/keymap.json
@@ -1 +1 @@
-{"keyboard":"clueboard/66_hotswap/gen1","keymap":"default_66","layout":"LAYOUT","layers":[["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_RALT","KC_RGUI","MO(1)","KC_RCTL","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","BL_INC","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_MPRV","KC_MPLY","KC_MNXT","KC_NO","KC_MUTE","BL_DEC","KC_NO","KC_NO","MO(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_PGUP","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","MO(1)","KC_NO","KC_HOME","KC_PGDN","KC_END"],["KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","BL_TOGG","BL_INC","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","BL_DEC","KC_NO","KC_NO","MO(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","BL_STEP","KC_NO","KC_NO","MO(1)","KC_NO","KC_NO","KC_NO","KC_NO"]],"author":"","notes":""} \ No newline at end of file
+{"keyboard":"clueboard/66_hotswap/gen1","keymap":"default_66","layout":"LAYOUT","layers":[["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_RALT","KC_RGUI","MO(1)","KC_RCTL","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","BL_INC","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_MPRV","KC_MPLY","KC_MNXT","KC_NO","KC_MUTE","BL_DEC","KC_NO","KC_NO","MO(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_PGUP","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","MO(1)","KC_NO","KC_HOME","KC_PGDN","KC_END"],["KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","BL_TOGG","BL_INC","KC_NO","KC_NO","KC_NO","KC_NO","QK_BOOT","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","BL_DEC","KC_NO","KC_NO","MO(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","BL_STEP","KC_NO","KC_NO","MO(1)","KC_NO","KC_NO","KC_NO","KC_NO"]],"author":"","notes":""} \ No newline at end of file
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 23eb08e189..c16d63e758 100644
--- a/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c
+++ b/keyboards/clueboard/66_hotswap/prototype/keymaps/66_ansi/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_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,
+ _______,_______,_______,_______,QK_BOOT, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD,
_______,_______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, RGB_SAI,
_______,_______,_______, RGB_MOD, _______,MO(_FL),_______,RGB_HUD,RGB_SAD,RGB_HUI),
diff --git a/keyboards/cmm_studio/fuji65/config.h b/keyboards/cmm_studio/fuji65/config.h
index e93ae62c67..891eb88548 100644
--- a/keyboards/cmm_studio/fuji65/config.h
+++ b/keyboards/cmm_studio/fuji65/config.h
@@ -18,13 +18,6 @@
#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
diff --git a/keyboards/cmm_studio/fuji65/info.json b/keyboards/cmm_studio/fuji65/info.json
index 4d5080a831..f1258aea8e 100644
--- a/keyboards/cmm_studio/fuji65/info.json
+++ b/keyboards/cmm_studio/fuji65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "cmm.studio fuji65",
+ "keyboard_name": "Fuji65",
+ "manufacturer": "CMM.Studio",
"url": "",
"maintainer": "CMMS-Freather",
+ "usb": {
+ "vid": "0x434D",
+ "pid": "0x364D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/cmm_studio/saka68/hotswap/config.h b/keyboards/cmm_studio/saka68/hotswap/config.h
index 9879dadd50..592fcf8782 100644
--- a/keyboards/cmm_studio/saka68/hotswap/config.h
+++ b/keyboards/cmm_studio/saka68/hotswap/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x434D
-#define PRODUCT_ID 0x5348
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CMM.Studio
-#define PRODUCT Saka68 Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/cmm_studio/saka68/hotswap/info.json b/keyboards/cmm_studio/saka68/hotswap/info.json
index 2e48427712..fecff0d0e9 100644
--- a/keyboards/cmm_studio/saka68/hotswap/info.json
+++ b/keyboards/cmm_studio/saka68/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "CMM.Studio Saka68 Hotswap",
+ "keyboard_name": "Saka68 Hotswap",
+ "manufacturer": "CMM.Studio",
"url": "",
"maintainer": "CMMS-Freather",
+ "usb": {
+ "vid": "0x434D",
+ "pid": "0x5348",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_68_ansi"
},
diff --git a/keyboards/cmm_studio/saka68/solder/config.h b/keyboards/cmm_studio/saka68/solder/config.h
index 3dd09922cc..583f729962 100644
--- a/keyboards/cmm_studio/saka68/solder/config.h
+++ b/keyboards/cmm_studio/saka68/solder/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x434D
-#define PRODUCT_ID 0x534B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CMM.Studio
-#define PRODUCT Saka68 Solder
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
diff --git a/keyboards/cmm_studio/saka68/solder/info.json b/keyboards/cmm_studio/saka68/solder/info.json
index 6856294471..c998dd5fa2 100644
--- a/keyboards/cmm_studio/saka68/solder/info.json
+++ b/keyboards/cmm_studio/saka68/solder/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "CMM.Studio Saka68 Solder",
+ "keyboard_name": "Saka68 Solder",
+ "manufacturer": "CMM.Studio",
"url": "",
"maintainer": "CMMS-Freather",
+ "usb": {
+ "vid": "0x434D",
+ "pid": "0x534B",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_68_ansi"
},
diff --git a/keyboards/coarse/cordillera/config.h b/keyboards/coarse/cordillera/config.h
index 7bc2dca560..962c3edbe7 100644
--- a/keyboards/coarse/cordillera/config.h
+++ b/keyboards/coarse/cordillera/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x434B // CK for Coarse Keys
-#define PRODUCT_ID 0x1401 // '20 - 001
-#define DEVICE_VER 0x0001 // Revision prototype
-#define MANUFACTURER Coarse
-#define PRODUCT Cordillera
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/coarse/cordillera/info.json b/keyboards/coarse/cordillera/info.json
index a94459180f..c72fa972ef 100644
--- a/keyboards/coarse/cordillera/info.json
+++ b/keyboards/coarse/cordillera/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Cordillera",
+ "manufacturer": "Coarse",
"url": "https://keyboard.coarse.tech/Cordillera-Alice-like-PCB-b34d95777ea44249bad3271b01d7838a",
"maintainer": "coarse",
+ "usb": {
+ "vid": "0x434B",
+ "pid": "0x1401",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice": {
"layout": [
diff --git a/keyboards/coarse/ixora/config.h b/keyboards/coarse/ixora/config.h
index 13246e9226..98317817a3 100644
--- a/keyboards/coarse/ixora/config.h
+++ b/keyboards/coarse/ixora/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0C61
-#define DEVICE_VER 0x0100
-#define MANUFACTURER PeiorisBoards
-#define PRODUCT Ixora Rev1
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 6
diff --git a/keyboards/coarse/ixora/info.json b/keyboards/coarse/ixora/info.json
index 1bf2928885..147716608a 100644
--- a/keyboards/coarse/ixora/info.json
+++ b/keyboards/coarse/ixora/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Ixora",
+ "keyboard_name": "Ixora Rev1",
+ "manufacturer": "PeiorisBoards",
"url": "",
"maintainer": "Peioris",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0C61",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_full": {
"layout": [{"label":"1", "x":0, "y":0}, {"label":"2", "x":1, "y":0}, {"label":"3", "x":2, "y":0}, {"label":"Caps Lock", "x":0, "y":1}, {"label":"Num Lock", "x":1, "y":1}, {"label":"Scroll Lock", "x":2, "y":1}]
diff --git a/keyboards/coarse/ixora/keymaps/wntrmln/keymap.c b/keyboards/coarse/ixora/keymaps/wntrmln/keymap.c
index 3e08c78015..bf26771b7c 100644
--- a/keyboards/coarse/ixora/keymaps/wntrmln/keymap.c
+++ b/keyboards/coarse/ixora/keymaps/wntrmln/keymap.c
@@ -3,7 +3,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: (Base Layer) Default Layer
* ,-----------------.
- * |RESET| 2 | 3 |
+ * |QK_BOOT| 2 | 3 |
* |-----------------|
* |Caps |NmLk |ScLk |
* `-----------------'
diff --git a/keyboards/coarse/ixora/readme.md b/keyboards/coarse/ixora/readme.md
index a094bbd5e7..824e167ecd 100644
--- a/keyboards/coarse/ixora/readme.md
+++ b/keyboards/coarse/ixora/readme.md
@@ -18,5 +18,5 @@ See [build environment setup](https://docs.qmk.fm/build_environment_setup.html)
#### Developer's Note
-STM32F042xx chips does not allow jumping to bootloader without BOOT0 being set to high, therefore it is impossible to enter the bootloader from sending a `RESET` keycode nor using bootmagic or bootmagic lite.
-The only way to enter bootloader is to hold the BOOT0 button while the keyboard is powering up or after a power reset (done by pressing the reset switch or sending a `RESET` keycode).
+STM32F042xx chips does not allow jumping to bootloader without BOOT0 being set to high, therefore it is impossible to enter the bootloader from sending a `QK_BOOT` keycode nor using bootmagic or bootmagic lite.
+The only way to enter bootloader is to hold the BOOT0 button while the keyboard is powering up or after a power reset (done by pressing the reset switch or sending a `QK_BOOT` keycode).
diff --git a/keyboards/coarse/vinta/config.h b/keyboards/coarse/vinta/config.h
index 4e35b3461a..0ca163539d 100644
--- a/keyboards/coarse/vinta/config.h
+++ b/keyboards/coarse/vinta/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0C61
-#define DEVICE_VER 0x0100
-#define MANUFACTURER PeiorisBoards
-#define PRODUCT Vinta R1
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/coarse/vinta/info.json b/keyboards/coarse/vinta/info.json
index af78ac45e2..7ae03ab599 100644
--- a/keyboards/coarse/vinta/info.json
+++ b/keyboards/coarse/vinta/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "vinta",
+ "keyboard_name": "Vinta R1",
+ "manufacturer": "PeiorisBoards",
"url": "",
"maintainer": "Peioris",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0C61",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_69_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":"~", "x":13, "y":0}, {"label":"|", "x":14, "y":0}, {"label":"Del", "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":"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}, {"label":"Reset", "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/coarse/vinta/readme.md b/keyboards/coarse/vinta/readme.md
index 42291cd1fe..3c87101c46 100644
--- a/keyboards/coarse/vinta/readme.md
+++ b/keyboards/coarse/vinta/readme.md
@@ -18,5 +18,5 @@ See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools)
#### Developer's Note
-STM32F042xx chips does not allow jumping to bootloader without BOOT0 being set to high, therefore it is impossible to enter the bootloader from sending a `RESET` keycode nor using bootmagic or bootmagic lite.
-The only way to enter bootloader is to hold the BOOT0 button while the keyboard is powering up or after a power reset (done by pressing the reset switch or sending a `RESET` keycode).
+STM32F042xx chips does not allow jumping to bootloader without BOOT0 being set to high, therefore it is impossible to enter the bootloader from sending a `QK_BOOT` keycode nor using bootmagic or bootmagic lite.
+The only way to enter bootloader is to hold the BOOT0 button while the keyboard is powering up or after a power reset (done by pressing the reset switch or sending a `QK_BOOT` keycode).
diff --git a/keyboards/compound/config.h b/keyboards/compound/config.h
index 43edc00660..fb9fd51e43 100644
--- a/keyboards/compound/config.h
+++ b/keyboards/compound/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x420A
-#define PRODUCT_ID 0xB0BA
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Sabomov
-#define PRODUCT Compound
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/compound/info.json b/keyboards/compound/info.json
index f39a9ba1d4..b6963c0721 100644
--- a/keyboards/compound/info.json
+++ b/keyboards/compound/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Compound",
+ "manufacturer": "Sabomov",
"url": "https://geekhack.org/index.php?topic=111187.0",
"maintainer": "yumagulovrn",
+ "usb": {
+ "vid": "0x420A",
+ "pid": "0xB0BA",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/contender/config.h b/keyboards/contender/config.h
index 9977a5033e..e6d32c8a62 100644
--- a/keyboards/contender/config.h
+++ b/keyboards/contender/config.h
@@ -19,13 +19,6 @@ 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 0xC010
-#define DEVICE_VER 0x0001
-#define MANUFACTURER sotoba
-#define PRODUCT contender
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 5
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/contender/info.json b/keyboards/contender/info.json
index 1f1d8bf534..945fce0835 100644
--- a/keyboards/contender/info.json
+++ b/keyboards/contender/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "contender",
+ "manufacturer": "sotoba",
"url": "https://github.com/sotoba/contender",
"maintainer": "sotoba",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xC010",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/contender/readme.md b/keyboards/contender/readme.md
index 281ad4dabf..8a3fe08eaf 100644
--- a/keyboards/contender/readme.md
+++ b/keyboards/contender/readme.md
@@ -23,4 +23,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/contra/config.h b/keyboards/contra/config.h
index 499517f984..a6be554875 100755
--- a/keyboards/contra/config.h
+++ b/keyboards/contra/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4354 /* "CT" */
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Cartel
-#define PRODUCT Contra
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F6, B3, B2, B6 }
#define MATRIX_COL_PINS { F4, F5, B5, B4, E6, D7, C6, D4, D0, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
@@ -35,11 +27,3 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-#ifdef RGB_DI_PIN
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 0
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
-#endif
diff --git a/keyboards/contra/info.json b/keyboards/contra/info.json
index 0aff3f3c2f..76f66dc3f8 100644
--- a/keyboards/contra/info.json
+++ b/keyboards/contra/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Contra",
+ "manufacturer": "Cartel",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4354",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"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}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"&dArr;", "x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"label":"&uArr;", "x":7, "y":3}, {"label":"&larr;", "x":8, "y":3}, {"label":"&darr;", "x":9, "y":3}, {"label":"&uarr;", "x":10, "y":3}, {"label":"&rarr;", "x":11, "y":3}]
diff --git a/keyboards/contra/keymaps/alper/keymap.c b/keyboards/contra/keymaps/alper/keymap.c
index 8be7513556..af81040b58 100644
--- a/keyboards/contra/keymaps/alper/keymap.c
+++ b/keyboards/contra/keymaps/alper/keymap.c
@@ -137,7 +137,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_mit(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/contra/keymaps/default/keymap.c b/keyboards/contra/keymaps/default/keymap.c
index 6c05ebebff..1a365c9a6d 100644
--- a/keyboards/contra/keymaps/default/keymap.c
+++ b/keyboards/contra/keymaps/default/keymap.c
@@ -163,7 +163,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_planck_mit(
_______, QK_BOOT, 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, _______, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/contra/keymaps/enigma/config.h b/keyboards/contra/keymaps/enigma/config.h
new file mode 100644
index 0000000000..87f0199876
--- /dev/null
+++ b/keyboards/contra/keymaps/enigma/config.h
@@ -0,0 +1,27 @@
+/* Copyright 2022 Christopher Swenson
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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_DI_PIN F7
+#ifdef RGB_DI_PIN
+ #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ #define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLED_NUM 12
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+#endif \ No newline at end of file
diff --git a/keyboards/contra/keymaps/enigma/keymap.c b/keyboards/contra/keymaps/enigma/keymap.c
new file mode 100644
index 0000000000..d8779fb063
--- /dev/null
+++ b/keyboards/contra/keymaps/enigma/keymap.c
@@ -0,0 +1,625 @@
+/* Copyright 2022 Christopher Swenson
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 {
+ _ENIGMA,
+ _QWERTY,
+ _FN,
+ _LOWER,
+ _RAISE
+};
+
+enum planck_normal_keycodes {
+ QWERTY = SAFE_RANGE,
+ ENIGMA,
+ EN_A,
+ EN_B,
+ EN_C,
+ EN_D,
+ EN_E,
+ EN_F,
+ EN_G,
+ EN_H,
+ EN_I,
+ EN_J,
+ EN_K,
+ EN_L,
+ EN_M,
+ EN_N,
+ EN_O,
+ EN_P,
+ EN_Q,
+ EN_R,
+ EN_S,
+ EN_T,
+ EN_U,
+ EN_V,
+ EN_W,
+ EN_X,
+ EN_Y,
+ EN_Z,
+ EN_RES,
+ EN_TEST,
+ EN_DIAG,
+ EN_BSPC,
+ EN_SREF,
+ EN_SROT,
+ EN_SPOS,
+ EN_SRIN,
+ EN_SPLU
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Enigma
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Tab | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Fn | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_ENIGMA] = LAYOUT_planck_mit(
+ QK_GESC, EN_Q, EN_W, EN_E, EN_R, EN_T, EN_Y, EN_U, EN_I, EN_O, EN_P, KC_BSPC,
+ KC_TAB, EN_A, EN_S, EN_D, EN_F, EN_G, EN_H, EN_J, EN_K, EN_L, KC_SCLN, KC_QUOT,
+ KC_LSFT, EN_Z, EN_X, EN_C, EN_V, EN_B, EN_N, EN_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ KC_LCTL, MO(_FN), KC_LGUI, KC_LALT, MO(_LOWER), KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+ /* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Tab | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Fn | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_QWERTY] = LAYOUT_planck_mit(
+ QK_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_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, MO(_FN), KC_LGUI, KC_LALT, MO(_LOWER), KC_SPC, MO(_RAISE), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+ /* Function
+ * ,-----------------------------------------------------------------------------------.
+ * | Boot | Reset| Diag | | | | | | | | Test |Revers|
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | |Reflec|Rotors|Posn.s|Rings |Plugs | | |Enigma|Qwerty| | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_FN] = LAYOUT_planck_mit(
+ QK_BOOT, EN_RES, EN_DIAG, _______, _______, _______, _______, _______, _______, _______, EN_TEST, EN_BSPC,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, EN_SREF, EN_SROT, EN_SPOS, EN_SRIN, EN_SPLU, _______, _______, QWERTY, ENIGMA, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ /* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | _ | + | { | } | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Fn | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_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_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_LCTL, _______, KC_LGUI, KC_LALT, _______, KC_SPC, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+ /* RAISE
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Fn | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+ [_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_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_LCTL, _______, KC_LGUI, KC_LALT, _______, KC_SPC, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+};
+
+char rotor_definitions[5][26] = {
+ "EKMFLGDQVZNTOWYHXUSPAIBRCJ",
+ "AJDKSIRUXBLHWTMCQGZNPYFVOE",
+ "BDFHJLCPRTXVZNYEIWGAKMUSQO",
+ "ESOVPZJAYQUIRHXLNFTGKDCMWB",
+ "VZBRGITYUPSDNHLXAWMJQOFECK"
+};
+
+char reflector_definitions[3][26] = {
+ "EJMZALYXVBWFCRQUONTSPIKHGD",
+ "YRUHQSLDPXNGOKMIEBFZCWVJAT",
+ "FVPJIAOYEDRZXWGCTKUQSBNMHL"
+};
+
+char notch[5] = "QEVJZ";
+
+typedef struct Settings {
+ char rotor_order[3];
+ char rotor_rings[3];
+ char rotor_positions[3];
+ char plugs[25];
+ int plug_count;
+ char reflector;
+} Settings;
+
+typedef struct KeyboardState {
+ bool is_setting_reflector;
+ bool is_setting_rotors;
+ bool is_setting_rotor_positions;
+ bool is_setting_rotor_rings;
+ bool is_setting_plugs;
+ char setting_progress[26];
+ int setting_index;
+ Settings current_settings;
+ Settings default_settings;
+} KeyboardState;
+
+int bound(int letter) {
+ return ((letter % 26) + 26) % 26;
+}
+
+char to_char(int letter) {
+ return 'A' + letter;
+}
+
+int to_int(char letter) {
+ return letter - 'A';
+}
+
+char encipher(char letter, Settings *settings) {
+ int rotor_2_step = settings->rotor_positions[2] == notch[settings->rotor_order[2] - 1];
+ int rotor_1_step = settings->rotor_positions[1] == notch[settings->rotor_order[1] - 1];
+
+ // Advance the third rotor
+ settings->rotor_positions[2]++;
+ if (settings->rotor_positions[2] > 'Z') {
+ settings->rotor_positions[2] -= 26;
+ }
+
+ // Maybe advance the second rotor, including double steps
+ if (rotor_2_step || rotor_1_step) {
+ settings->rotor_positions[1]++;
+ if (settings->rotor_positions[1] > 'Z') {
+ settings->rotor_positions[1] -= 26;
+ }
+ }
+
+ // Maybe advance the first rotor
+ if (rotor_1_step) {
+ settings->rotor_positions[0]++;
+ if (settings->rotor_positions[0] > 'Z') {
+ settings->rotor_positions[0] -= 26;
+ }
+ }
+
+ // Swap letters on plugboard
+ for (int i = 0; i < settings->plug_count * 2; i += 2) {
+ if (letter == settings->plugs[i]) {
+ letter = settings->plugs[i + 1];
+ } else if (letter == settings->plugs[i + 1]) {
+ letter = settings->plugs[i];
+ }
+ }
+
+ // Rotors (right to left)
+ for (int rotor_index = 2; rotor_index >= 0; rotor_index--) {
+ char *rotor_definition = rotor_definitions[settings->rotor_order[rotor_index] - 1];
+ int position = to_int(settings->rotor_positions[rotor_index]);
+ int ring = to_int(settings->rotor_rings[rotor_index]);
+ int char_index = to_int(letter);
+ letter = to_char(bound(
+ to_int(rotor_definition[bound(char_index + position - ring)]) + ring - position
+ ));
+ }
+
+ // Swap via reflector
+ letter = reflector_definitions[to_int(settings->reflector)][to_int(letter)];
+
+ // Rotors in reverse (left to right)
+ for (int rotor_index = 0; rotor_index < 3; rotor_index++) {
+ char *rotor_definition = rotor_definitions[settings->rotor_order[rotor_index] - 1];
+ int position = to_int(settings->rotor_positions[rotor_index]);
+ int ring = to_int(settings->rotor_rings[rotor_index]);
+ int search_index;
+ for (search_index = 0; search_index < 26; search_index++) {
+ if (
+ rotor_definition[search_index]
+ == to_char(bound(to_int(letter) - ring + position))
+ ) {
+ break;
+ }
+ }
+ letter = to_char(bound(search_index - position + ring));
+ }
+
+ // Plugboard again
+ for (int i = 0; i < settings->plug_count * 2; i += 2) {
+ if (letter == settings->plugs[i]) {
+ letter = settings->plugs[i + 1];
+ } else if (letter == settings->plugs[i + 1]) {
+ letter = settings->plugs[i];
+ }
+ }
+
+ return letter;
+}
+
+void init_enigma_default(Settings *settings) {
+ settings->rotor_order[0] = 1;
+ settings->rotor_rings[0] = 'A';
+ settings->rotor_positions[0] = 'A';
+
+ settings->rotor_order[1] = 2;
+ settings->rotor_rings[1] = 'A';
+ settings->rotor_positions[1] = 'A';
+
+ settings->rotor_order[2] = 3;
+ settings->rotor_rings[2] = 'A';
+ settings->rotor_positions[2] = 'A';
+
+ strcpy(settings->plugs, "");
+ settings->plug_count = 0;
+
+ settings->reflector = 'B';
+}
+
+void copy_settings(Settings *from, Settings *to) {
+ to->rotor_order[0] = from->rotor_order[0];
+ to->rotor_rings[0] = from->rotor_rings[0];
+ to->rotor_positions[0] = from->rotor_positions[0];
+
+ to->rotor_order[1] = from->rotor_order[1];
+ to->rotor_rings[1] = from->rotor_rings[1];
+ to->rotor_positions[1] = from->rotor_positions[1];
+
+ to->rotor_order[2] = from->rotor_order[2];
+ to->rotor_rings[2] = from->rotor_rings[2];
+ to->rotor_positions[2] = from->rotor_positions[2];
+
+ strncpy(to->plugs, from->plugs, from->plug_count * 2);
+ to->plug_count = from->plug_count;
+
+ to->reflector = from->reflector;
+}
+
+char *rotor_name(int rotor_number) {
+ if (rotor_number == 1) {
+ return "I";
+ } else if (rotor_number == 2) {
+ return "II";
+ } else if (rotor_number == 3) {
+ return "III";
+ } else if (rotor_number == 4) {
+ return "IV";
+ } else if (rotor_number == 5) {
+ return "V";
+ }
+ return "?";
+}
+
+void rotors_reverse(Settings *settings) {
+ int rotor_2_step = settings->rotor_positions[2]
+ == to_char(bound(to_int(notch[settings->rotor_order[2] - 1]) + 1));
+ int rotor_1_step = settings->rotor_positions[1]
+ == to_char(bound(to_int(notch[settings->rotor_order[1] - 1]) + 1));
+
+ // Reverse third rotor
+ settings->rotor_positions[2]--;
+ if (settings->rotor_positions[2] < 'A') {
+ settings->rotor_positions[2] += 26;
+ }
+
+ // Maybe reverse second rotor (including double steps)
+ if (rotor_2_step || rotor_1_step) {
+ settings->rotor_positions[1]--;
+ if (settings->rotor_positions[1] < 'A') {
+ settings->rotor_positions[1] += 26;
+ }
+ }
+
+ // Maybe recerse first rotor
+ if (rotor_1_step) {
+ settings->rotor_positions[0]--;
+ if (settings->rotor_positions[0] < 'A') {
+ settings->rotor_positions[0] += 26;
+ }
+ }
+}
+
+void reset_settings(KeyboardState *state) {
+ copy_settings(&state->default_settings, &state->current_settings);
+}
+
+void set_layer(uint8_t default_layer) {
+ default_layer_set((layer_state_t)1 << default_layer);
+}
+
+void set_backlight(uint8_t mode, uint8_t hue, uint8_t sat, uint8_t val) {
+ #ifdef RGBLIGHT_ENABLE
+ rgblight_enable_noeeprom();
+ rgblight_mode_noeeprom(mode);
+ rgblight_sethsv_noeeprom(hue, sat, val);
+ #endif
+}
+
+void clear_working_settings(KeyboardState *state) {
+ state->is_setting_reflector = false;
+ state->is_setting_rotors = false;
+ state->is_setting_rotor_positions = false;
+ state->is_setting_rotor_rings = false;
+ state->is_setting_plugs = false;
+ state->setting_index = 0;
+ set_layer(_ENIGMA);
+ set_backlight(RGBLIGHT_MODE_STATIC_LIGHT, HSV_RED);
+}
+
+void send_settings_string(Settings *settings) {
+ send_char(settings->reflector);
+ send_string(". ");
+ send_string(rotor_name(settings->rotor_order[0]));
+ send_char(settings->rotor_rings[0]);
+ send_string("-");
+ send_string(rotor_name(settings->rotor_order[1]));
+ send_char(settings->rotor_rings[1]);
+ send_string("-");
+ send_string(rotor_name(settings->rotor_order[2]));
+ send_char(settings->rotor_rings[2]);
+ send_string(" (");
+ send_char(settings->rotor_positions[0]);
+ send_string(", ");
+ send_char(settings->rotor_positions[1]);
+ send_string(", ");
+ send_char(settings->rotor_positions[2]);
+ send_string(") ");
+ for (int i = 0; i < settings->plug_count; i++) {
+ send_char(settings->plugs[i * 2]);
+ send_char(settings->plugs[i * 2 + 1]);
+ send_string(" ");
+ }
+ send_string("\n");
+}
+
+void perform_test(Settings *settings) {
+ for (int i = 0; i < 1000; i++) {
+ send_char(encipher('A', settings) - ('A' - 'a'));
+ }
+}
+
+void commit_plug_settings(KeyboardState *state) {
+ state->default_settings.plug_count = state->setting_index / 2;
+ for (int i = 0; i < state->default_settings.plug_count; i++) {
+ state->default_settings.plugs[i * 2] = state->setting_progress[i * 2];
+ state->default_settings.plugs[i * 2 + 1] = state->setting_progress[i * 2 + 1];
+ }
+ reset_settings(state);
+ clear_working_settings(state);
+}
+
+void handle_set_reflector(char letter, KeyboardState *state) {
+ if (letter >= 'A' && letter <= 'C') {
+ state->default_settings.reflector = letter;
+ reset_settings(state);
+ clear_working_settings(state);
+ }
+}
+
+bool handle_set_rotor(char letter, KeyboardState *state) {
+ bool is_valid = letter >= 'A' && letter <= 'E' && state->setting_index < 3;
+ if (is_valid) {
+ state->setting_progress[state->setting_index] = to_int(letter) + 1;
+ state->setting_index += 1;
+ if (state->setting_index == 3) {
+ state->default_settings.rotor_order[0] = state->setting_progress[0];
+ state->default_settings.rotor_order[1] = state->setting_progress[1];
+ state->default_settings.rotor_order[2] = state->setting_progress[2];
+ reset_settings(state);
+ clear_working_settings(state);
+ }
+ }
+ return is_valid;
+}
+
+bool handle_set_rotor_position(char letter, KeyboardState *state) {
+ bool is_valid = state->setting_index < 3; // Guaranteed to be A-Z already
+ if (is_valid) {
+ state->setting_progress[state->setting_index] = letter;
+ state->setting_index += 1;
+ if (state->setting_index == 3) {
+ state->default_settings.rotor_positions[0] = state->setting_progress[0];
+ state->default_settings.rotor_positions[1] = state->setting_progress[1];
+ state->default_settings.rotor_positions[2] = state->setting_progress[2];
+ reset_settings(state);
+ clear_working_settings(state);
+ }
+ }
+ return is_valid;
+}
+
+bool handle_set_rotor_ring(char letter, KeyboardState *state) {
+ bool is_valid = state->setting_index < 3;
+ if (is_valid) {
+ state->setting_progress[state->setting_index] = letter;
+ state->setting_index += 1;
+ if (state->setting_index == 3) {
+ state->default_settings.rotor_rings[0] = state->setting_progress[0];
+ state->default_settings.rotor_rings[1] = state->setting_progress[1];
+ state->default_settings.rotor_rings[2] = state->setting_progress[2];
+ reset_settings(state);
+ clear_working_settings(state);
+ }
+ }
+ return is_valid;
+}
+
+bool handle_set_plug(char letter, KeyboardState *state) {
+ bool is_valid = state->setting_index < 26;
+ if (is_valid) {
+ state->setting_progress[state->setting_index] = letter;
+ state->setting_index += 1;
+ }
+ return is_valid;
+}
+
+void handle_enigma_keypress(char letter, bool any_mods, KeyboardState *state) {
+ bool settings_valid = true;
+ if (letter) {
+ if (any_mods) {
+ tap_code(KC_A + to_int(letter));
+ } else if (state->is_setting_reflector) {
+ handle_set_reflector(letter, state);
+ } else if (state->is_setting_rotors) {
+ settings_valid = handle_set_rotor(letter, state);
+ } else if (state->is_setting_rotor_positions) {
+ settings_valid = handle_set_rotor_position(letter, state);
+ } else if (state->is_setting_rotor_rings) {
+ settings_valid = handle_set_rotor_ring(letter, state);
+ } else if (state->is_setting_plugs) {
+ settings_valid = handle_set_plug(letter, state);
+ } else {
+ char c2 = encipher(letter, &state->current_settings);
+ send_char(c2 - ('A' - 'a'));
+ }
+ }
+ if (!settings_valid) {
+ clear_working_settings(state);
+ }
+}
+
+KeyboardState STATE;
+
+void keyboard_pre_init_user(void) {
+ init_enigma_default(&STATE.default_settings);
+ init_enigma_default(&STATE.current_settings);
+ clear_working_settings(&STATE);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ uint8_t letter_index;
+ bool letter_found = false;
+ if (record->event.pressed) {
+ switch (keycode) {
+ case QWERTY:
+ set_layer(_QWERTY);
+ set_backlight(RGBLIGHT_MODE_RAINBOW_SWIRL + 4, HSV_PURPLE);
+ break;
+ case ENIGMA:
+ set_layer(_ENIGMA);
+ set_backlight(RGBLIGHT_MODE_STATIC_LIGHT, HSV_RED);
+ break;
+ case EN_SREF:
+ reset_settings(&STATE);
+ STATE.is_setting_reflector = true;
+ set_layer(_ENIGMA);
+ set_backlight(RGBLIGHT_MODE_SNAKE, HSV_RED);
+ break;
+ case EN_SROT:
+ reset_settings(&STATE);
+ STATE.is_setting_rotors = true;
+ STATE.setting_index = 0;
+ set_layer(_ENIGMA);
+ set_backlight(RGBLIGHT_MODE_SNAKE, 10, 255, 255);
+ break;
+ case EN_SPOS:
+ reset_settings(&STATE);
+ STATE.is_setting_rotor_positions = true;
+ STATE.setting_index = 0;
+ set_layer(_ENIGMA);
+ set_backlight(RGBLIGHT_MODE_SNAKE, HSV_ORANGE);
+ break;
+ case EN_SRIN:
+ reset_settings(&STATE);
+ STATE.is_setting_rotor_rings = true;
+ STATE.setting_index = 0;
+ set_layer(_ENIGMA);
+ set_backlight(RGBLIGHT_MODE_SNAKE, HSV_GREEN);
+ break;
+ case EN_SPLU:
+ reset_settings(&STATE);
+ STATE.is_setting_plugs = true;
+ STATE.setting_index = 0;
+ set_layer(_ENIGMA);
+ set_backlight(RGBLIGHT_MODE_SNAKE, HSV_BLUE);
+ break;
+ case QK_GESC:
+ if (
+ STATE.is_setting_reflector
+ || STATE.is_setting_rotors
+ || STATE.is_setting_rotor_positions
+ || STATE.is_setting_rotor_rings
+ || STATE.is_setting_plugs
+ ) {
+ clear_working_settings(&STATE);
+ return false;
+ }
+ break;
+ case KC_ENT:
+ if (STATE.is_setting_plugs) {
+ commit_plug_settings(&STATE);
+ return false;
+ }
+ break;
+ case EN_A ... EN_Z:
+ letter_index = keycode - EN_A;
+ letter_found = true;
+ break;
+ case EN_RES:
+ reset_settings(&STATE);
+ break;
+ case EN_TEST:
+ perform_test(&STATE.current_settings);
+ break;
+ case EN_DIAG:
+ send_settings_string(&STATE.current_settings);
+ break;
+ case EN_BSPC:
+ rotors_reverse(&STATE.current_settings);
+ tap_code(KC_BSPC);
+ break;
+ }
+ }
+ char letter = letter_found ? 'A' + letter_index : 0;
+ uint8_t mods = get_mods();
+ bool any_mods = (mods & MOD_MASK_CTRL) || (mods & MOD_MASK_ALT) || (mods & MOD_MASK_GUI);
+ handle_enigma_keypress(letter, any_mods, &STATE);
+ return true;
+}
+
+void keyboard_post_init_user(void) {
+ set_layer(_QWERTY);
+ set_backlight(RGBLIGHT_MODE_RAINBOW_SWIRL + 4, HSV_PURPLE);
+}
diff --git a/keyboards/contra/keymaps/enigma/readme.md b/keyboards/contra/keymaps/enigma/readme.md
new file mode 100644
index 0000000000..9bc69b3980
--- /dev/null
+++ b/keyboards/contra/keymaps/enigma/readme.md
@@ -0,0 +1,35 @@
+# A Contra Layout with an Enigma Emulator
+
+```
+
+,-----------------------------------------------------------------------------------.
+| Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+|------+------+------+------+------+-------------+------+------+------+------+------|
+| Tab | A | S | D | F | G | H | J | K | L | ; | " |
+|------+------+------+------+------+------|------+------+------+------+------+------|
+| Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
+|------+------+------+------+------+------+------+------+------+------+------+------|
+| Ctrl | Fn | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+`-----------------------------------------------------------------------------------'
+```
+
+By default, this layout functions like a normal QWERTY layout. But it also has an in-built Enigma machine emulator.
+To enable the emulator, press `Fn+.`, and to go back to QWERTY, press `FN+,`.
+
+A demonstration video can be found [here](https://youtu.be/p8kBjP1DCzo).
+
+When Enigma mode is enabled, all letters A-Z will be enciphered using the Enigma emulator. Other keycodes will not be modified. Shift will be sent as normal, so you can choose whether to capitalize the output. If any other modifier (Ctrl, Alt, or Gui) are being pressed, the normal letter will come through.
+
+There are a few key combinations for configuring and diagnosing the Enigma emulator:
+
+* `Fn+Q` resets the emulator to the last-configured settings
+* `Fn+W` types out the current Enigma settings, e.g. `B. IA-IIA-IIIA (A, A, A) QW` (meaning reflector B; rotors I, II, and III all at ring setting A; all at position A, and with Q and W swapped on the plugboard)
+* `Fn+P` types out 1000 enciphered As, for testing
+* `Fn+Backspace` back-rotates the rotors one step, for fixing typos without having to re-type a whole message
+* `Fn+Z` followed by A, B, or C is used to set the reflector
+* `Fn+X` followed by three characters A-E is used to set the rotors
+* `Fn+C` followed by three characters A-Z is used to set the rotor positions
+* `Fn+V` followed by three characters A-Z is used to set the ring settings
+* `Fn+B` followed by up to 13 pairs of characters A-Z (one at a time, not simulaneously) then the Enter key is used to set the plugboard
+
+
diff --git a/keyboards/contra/keymaps/enigma/rules.mk b/keyboards/contra/keymaps/enigma/rules.mk
new file mode 100644
index 0000000000..261e59922a
--- /dev/null
+++ b/keyboards/contra/keymaps/enigma/rules.mk
@@ -0,0 +1,2 @@
+RGBLIGHT_ENABLE = yes
+RGBLIGHT_SUPPORTED = yes \ No newline at end of file
diff --git a/keyboards/contra/keymaps/losinggeneration/keymap.c b/keyboards/contra/keymaps/losinggeneration/keymap.c
index d4a336c338..0e2478e1ae 100644
--- a/keyboards/contra/keymaps/losinggeneration/keymap.c
+++ b/keyboards/contra/keymaps/losinggeneration/keymap.c
@@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Adjust (Lower + Raise)
* ,-----------------------------------------------------------------------------------.
- * | | F1 | F2 | F3 | F4 | | RESET| Game |Numpad|Mouse | |Sleep |
+ * | | F1 | F2 | F3 | F4 | | QK_BOOT| Game |Numpad|Mouse | |Sleep |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | F5 | F6 | F7 | F8 | | |Qwerty|Colmak|Workmn|Dvorak| |
* |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = CATMAP( \
- _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, RESET , TO_GAME, TO_NUM , TO_MS , _______, KC_SLEP, \
+ _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, QK_BOOT, TO_GAME, TO_NUM , TO_MS , _______, KC_SLEP, \
_______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______, _______, QWERTY , COLEMAK, WORKMAN, DVORAK , _______, \
MT_CAPS, KC_F9 , KC_F10, KC_F11 , KC_F12 , _______, _______, _______, _______, _______, KC_UP , _______, \
_______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT \
diff --git a/keyboards/contra/keymaps/msiu/keymap.c b/keyboards/contra/keymaps/msiu/keymap.c
index ee0598533d..36dda9863a 100644
--- a/keyboards/contra/keymaps/msiu/keymap.c
+++ b/keyboards/contra/keymaps/msiu/keymap.c
@@ -109,7 +109,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, QWERTY, DVORAK, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT
),
[_FUNC] = LAYOUT_ortho_4x12(
diff --git a/keyboards/converter/a1200/info.json b/keyboards/converter/a1200/info.json
index 41f328668e..1b46444ba8 100644
--- a/keyboards/converter/a1200/info.json
+++ b/keyboards/converter/a1200/info.json
@@ -1,5 +1,4 @@
{
- "keyboard_name": "Amiga 1200 Keyboard",
"maintainer": "8bits4ever",
"layouts": {
"LAYOUT": {
diff --git a/keyboards/converter/a1200/miss1200/config.h b/keyboards/converter/a1200/miss1200/config.h
index 7347f1948c..5faee6f45c 100644
--- a/keyboards/converter/a1200/miss1200/config.h
+++ b/keyboards/converter/a1200/miss1200/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFFFF
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 8bits4ever
-#define PRODUCT MiSS-1200
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F7, F6, F5, F4, F1, F0, B1, B3 }
#define MATRIX_COL_PINS { D0, D1, C7, D6, B7, B6, B5, B4, E6, D7, C6, D4, B2, D5, D3, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/converter/a1200/miss1200/info.json b/keyboards/converter/a1200/miss1200/info.json
new file mode 100644
index 0000000000..3c97119dbd
--- /dev/null
+++ b/keyboards/converter/a1200/miss1200/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "MiSS-1200",
+ "manufacturer": "8bits4ever",
+ "usb": {
+ "vid": "0xFFFF",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/converter/a1200/mistress1200/config.h b/keyboards/converter/a1200/mistress1200/config.h
index 123d6165d6..67a312d795 100644
--- a/keyboards/converter/a1200/mistress1200/config.h
+++ b/keyboards/converter/a1200/mistress1200/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFFFF
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 8bits4ever
-#define PRODUCT MiSTress1200
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F7, F6, F5, F4, F1, F0, B1, B3 }
#define MATRIX_COL_PINS { D0, D1, C7, D6, B7, B6, B5, B4, E6, D7, C6, D4, B2, D5, D3, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/converter/a1200/mistress1200/info.json b/keyboards/converter/a1200/mistress1200/info.json
new file mode 100644
index 0000000000..1cdecf736e
--- /dev/null
+++ b/keyboards/converter/a1200/mistress1200/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "MiSTress1200",
+ "manufacturer": "8bits4ever",
+ "usb": {
+ "vid": "0xFFFF",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/converter/a1200/teensy2pp/config.h b/keyboards/converter/a1200/teensy2pp/config.h
index 84a81c297c..e9e961433f 100644
--- a/keyboards/converter/a1200/teensy2pp/config.h
+++ b/keyboards/converter/a1200/teensy2pp/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER 8bits4ever
-#define PRODUCT Amiga-1200
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F2, F3, F4, F5, F6, F7 }
#define MATRIX_COL_PINS { D2, D3, D4, D5, D6, D7, E0, E1, C0, C1, C2, C3, C4, C5, C6, C7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/converter/a1200/teensy2pp/info.json b/keyboards/converter/a1200/teensy2pp/info.json
new file mode 100644
index 0000000000..243b586c9f
--- /dev/null
+++ b/keyboards/converter/a1200/teensy2pp/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Amiga-1200",
+ "manufacturer": "8bits4ever",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/converter/adb_usb/config.h b/keyboards/converter/adb_usb/config.h
index 92ce05f3d2..b6eb105bbd 100644
--- a/keyboards/converter/adb_usb/config.h
+++ b/keyboards/converter/adb_usb/config.h
@@ -19,12 +19,6 @@ Ported to QMK by Peter Roe <pete@13bit.me>
#pragma once
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0ADB
-#define DEVICE_VER 0x0101
-#define MANUFACTURER QMK
-#define PRODUCT ADB keyboard converter
-
/* matrix size */
#define MATRIX_ROWS 16 // keycode bit: 3-0
#define MATRIX_COLS 8 // keycode bit: 6-4
diff --git a/keyboards/converter/adb_usb/info.json b/keyboards/converter/adb_usb/info.json
index 45ae5e4f34..f64616e212 100644
--- a/keyboards/converter/adb_usb/info.json
+++ b/keyboards/converter/adb_usb/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ADB to USB Keyboard Converter",
+ "manufacturer": "QMK",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0ADB",
+ "device_version": "1.0.1"
+ },
"layouts": {
"LAYOUT_ext_ansi": {
"layout": [
diff --git a/keyboards/converter/adb_usb/readme.md b/keyboards/converter/adb_usb/readme.md
index 8de9b9ad46..2d2e3cd4e3 100644
--- a/keyboards/converter/adb_usb/readme.md
+++ b/keyboards/converter/adb_usb/readme.md
@@ -51,16 +51,8 @@ Keymap
------
To build the default keymap run this command:
- $ make converter/adb_usb:default
-
-You may add your own keymap to the converter/adb_usb/keymaps directory, as you would with any other QMK-powered keyboard.
-
-To build your custom keymap, change the build command to:
-
- $ make converter/adb_usb:my_keymap
-
-Where 'my_keymap' is the name of your custom keymap directory.
-
+ $ make converter/adb_usb/rev1:default # Pro Micro-based
+ $ make converter/adb_usb/rev2:default # Hasu 32U2 PCB
Locking Caps Lock
----------------
diff --git a/keyboards/converter/adb_usb/rev1/rules.mk b/keyboards/converter/adb_usb/rev1/rules.mk
new file mode 100644
index 0000000000..cf663a7ed6
--- /dev/null
+++ b/keyboards/converter/adb_usb/rev1/rules.mk
@@ -0,0 +1,5 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
diff --git a/keyboards/converter/adb_usb/rev2/rules.mk b/keyboards/converter/adb_usb/rev2/rules.mk
new file mode 100644
index 0000000000..6ab81f6b12
--- /dev/null
+++ b/keyboards/converter/adb_usb/rev2/rules.mk
@@ -0,0 +1,5 @@
+# MCU name
+MCU = atmega32u2
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
diff --git a/keyboards/converter/adb_usb/rules.mk b/keyboards/converter/adb_usb/rules.mk
index 93bdbf6abf..4e4d068a70 100644
--- a/keyboards/converter/adb_usb/rules.mk
+++ b/keyboards/converter/adb_usb/rules.mk
@@ -1,23 +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 = no # Mouse keys
-CONSOLE_ENABLE = no # Console for debug
-COMMAND_ENABLE = no # Commands for debug and configuration
-NKRO_ENABLE = no # Enable N-Key Rollover
-EXTRAKEY_ENABLE = yes
-USB_HID_ENABLE = yes
-BACKLIGHT_ENABLE = no
-CUSTOM_MATRIX = yes
+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 # 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 = yes
-SRC = matrix.c adb.c led.c
+SRC += matrix.c adb.c led.c
-# ADB_MOUSE_ENABLE
# OPT_DEFS += -DADB_MOUSE_ENABLE -DMOUSE_ENABLE
+
+DEFAULT_FOLDER = converter/adb_usb/rev1
diff --git a/keyboards/converter/hp_46010a/config.h b/keyboards/converter/hp_46010a/config.h
index 91350bcb4f..e189b7d79a 100644
--- a/keyboards/converter/hp_46010a/config.h
+++ b/keyboards/converter/hp_46010a/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER QMK
-#define PRODUCT 46010A keyboard converter
-
#define MATRIX_ROWS 14
#define MATRIX_COLS 8
diff --git a/keyboards/converter/hp_46010a/info.json b/keyboards/converter/hp_46010a/info.json
index 01e9f4d25f..aa49bf11df 100644
--- a/keyboards/converter/hp_46010a/info.json
+++ b/keyboards/converter/hp_46010a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "HP_46010A",
+ "keyboard_name": "HP 46010A to USB Keyboard Converter",
+ "manufacturer": "QMK",
"url": "https://deskthority.net/wiki/HP_46010A",
"maintainer": "listofoptions",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/converter/ibm_terminal/config.h b/keyboards/converter/ibm_terminal/config.h
index 2cd36c5fb0..9e7d140809 100644
--- a/keyboards/converter/ibm_terminal/config.h
+++ b/keyboards/converter/ibm_terminal/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6535
-#define DEVICE_VER 0x0100
-#define MANUFACTURER QMK
-#define PRODUCT IBM Terminal Keyboard
-
-
/* matrix size */
#define MATRIX_ROWS 17 // keycode bit: 3-0
#define MATRIX_COLS 8 // keycode bit: 6-4
diff --git a/keyboards/converter/ibm_terminal/info.json b/keyboards/converter/ibm_terminal/info.json
index 2c1a605ad9..9854d2759e 100644
--- a/keyboards/converter/ibm_terminal/info.json
+++ b/keyboards/converter/ibm_terminal/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Keyboard converter for IBM terminal keyboard",
+ "keyboard_name": "IBM Terminal to USB Keyboard Converter",
+ "manufacturer": "QMK",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6535",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/keymap.c b/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/keymap.c
index 3828f09f5d..f91c6cfb5b 100644
--- a/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/keymap.c
+++ b/keyboards/converter/ibm_terminal/keymaps/dsanchezseco/keymap.c
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* system */
[SYS] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, KC_NLCK, _______, _______, _______,
diff --git a/keyboards/converter/m0110_usb/config.h b/keyboards/converter/m0110_usb/config.h
index f980217b81..0260bc6fb4 100644
--- a/keyboards/converter/m0110_usb/config.h
+++ b/keyboards/converter/m0110_usb/config.h
@@ -21,12 +21,6 @@ Ported to QMK by Techsock <info@techsock.com>
#pragma once
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0110
-#define DEVICE_VER 0x0101
-#define MANUFACTURER Apple
-#define PRODUCT M0110(A)
-
/* matrix size */
#define MATRIX_ROWS 14
#define MATRIX_COLS 8
@@ -42,9 +36,6 @@ Ported to QMK by Techsock <info@techsock.com>
get_mods() == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_LALT) | MOD_BIT(KC_LCTL)) \
)
-/* boot magic key */
-#define BOOTMAGIC_KEY_SALT KC_M
-
/* ports */
#define M0110_CLOCK_PORT PORTD
#define M0110_CLOCK_PIN PIND
diff --git a/keyboards/converter/m0110_usb/info.json b/keyboards/converter/m0110_usb/info.json
index 278b98781a..f1db7083de 100644
--- a/keyboards/converter/m0110_usb/info.json
+++ b/keyboards/converter/m0110_usb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "M0110(A) keyboard converter",
+ "keyboard_name": "Apple M0110(A) to USB Keyboard Converter",
+ "manufacturer": "QMK",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0110",
+ "device_version": "1.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/converter/modelm101/config.h b/keyboards/converter/modelm101/config.h
index 33c6303036..2102d2d489 100644
--- a/keyboards/converter/modelm101/config.h
+++ b/keyboards/converter/modelm101/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER iw0rm3r
-#define PRODUCT IBM Model M 101/102
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F7, F6, F5, F4, F3, F2, F1, F0 }
#define MATRIX_COL_PINS { C7, C6, C5, C4, C3, C2, C1, C0, E1, E0, D7, D6, D5, D4, D3, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/converter/modelm101/info.json b/keyboards/converter/modelm101/info.json
index ffc679dbbb..b769ec2539 100644
--- a/keyboards/converter/modelm101/info.json
+++ b/keyboards/converter/modelm101/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "IBM Model M 101 ANSI/102 ISO",
+ "keyboard_name": "IBM Model M 101/102",
+ "manufacturer": "iw0rm3r",
"url": "https://github.com/iw0rm3r/qmk_firmware/tree/modelm101/keyboards/converter/modelm101",
"maintainer": "iw0rm3r",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"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.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":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.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":"|", "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":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.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":"~", "x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":3.5, "w":1.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.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":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}]
diff --git a/keyboards/converter/modelm101_teensy2/config.h b/keyboards/converter/modelm101_teensy2/config.h
new file mode 100644
index 0000000000..8bdf1be975
--- /dev/null
+++ b/keyboards/converter/modelm101_teensy2/config.h
@@ -0,0 +1,66 @@
+/*
+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
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#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 { D0, D1, D2, D3, C6, C7, D5, D4 }
+#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B6, B5, B4, D7, D6, B0, B1, B2, B3, B7 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed (5 is default) */
+#define DEBOUNCE 5
+
+/* The Model M has no diodes */
+#define MATRIX_HAS_GHOST
+
+/* Indicator LEDs */
+#define LED_CAPS_LOCK_PIN E6
+#define LED_PIN_ON_STATE 0
+
+/*
+ * 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
diff --git a/keyboards/converter/modelm101_teensy2/info.json b/keyboards/converter/modelm101_teensy2/info.json
new file mode 100644
index 0000000000..617f893242
--- /dev/null
+++ b/keyboards/converter/modelm101_teensy2/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "IBM Model M 101/102",
+ "manufacturer": "wangfuco",
+ "url": "https://github.com/wangfuco/qmk_firmware/tree/modelm101_teensy2/keyboards/converter/modelm101_teensy2",
+ "maintainer": "wangfuco",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
+ "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.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":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.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":"|", "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":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.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":"~", "x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":3.5, "w":1.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.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":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}]
+ }
+ }
+}
diff --git a/keyboards/converter/modelm101_teensy2/keymaps/default/keymap.c b/keyboards/converter/modelm101_teensy2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3f01f2c65c
--- /dev/null
+++ b/keyboards/converter/modelm101_teensy2/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+/* 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/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT( /* Base layer */
+ KC_ESC, KC_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_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_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ ),
+};
diff --git a/keyboards/converter/modelm101_teensy2/keymaps/default/readme.md b/keyboards/converter/modelm101_teensy2/keymaps/default/readme.md
new file mode 100644
index 0000000000..fb91a8ebe5
--- /dev/null
+++ b/keyboards/converter/modelm101_teensy2/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for modelm101 \ No newline at end of file
diff --git a/keyboards/converter/modelm101_teensy2/modelm101_teensy2.c b/keyboards/converter/modelm101_teensy2/modelm101_teensy2.c
new file mode 100644
index 0000000000..8283d91eda
--- /dev/null
+++ b/keyboards/converter/modelm101_teensy2/modelm101_teensy2.c
@@ -0,0 +1,16 @@
+/* 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/>.
+ */
+#include "modelm101_teensy2.h"
diff --git a/keyboards/converter/modelm101_teensy2/modelm101_teensy2.h b/keyboards/converter/modelm101_teensy2/modelm101_teensy2.h
new file mode 100644
index 0000000000..1a2cdc8b68
--- /dev/null
+++ b/keyboards/converter/modelm101_teensy2/modelm101_teensy2.h
@@ -0,0 +1,45 @@
+/* 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
+
+#include "quantum.h"
+
+/* This a shortcut to help you visually see your layout.
+ * The first section contains "names" for physical keys of the keyboard
+ * and defines their position on the board.
+ * The second section defines position of the keys on the switch matrix
+ * (where COLUMNS and ROWS crosses). */
+
+#define LAYOUT( \
+ K5A, K5B, K5C, K5D, K5E, K5F, K5G, K5H, K5I, K5J, K5K, K5L, K5M, K5N, K5O, K5P, \
+ \
+ K4A, K4B, K4C, K4D, K4E, K4F, K4G, K4H, K4I, K4J, K4K, K4L, K4M, K4N, K4O, K4P, K4Q, K4R, K4S, K4T, K4U, \
+ K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, K3I, K3J, K3K, K3L, K3M, K3N, K3O, K3P, K3Q, K3R, K3S, K3T, K3U, \
+ K2A, K2B, K2C, K2D, K2E, K2F, K2G, K2H, K2I, K2J, K2K, K2L, K2M, K2N, K2O, K2P, K2Q, \
+ K1A, K1B, K1C, K1D, K1E, K1F, K1G, K1H, K1I, K1J, K1K, K1L, K1M, K1N, K1O, K1P, K1Q, K1R, \
+ K0A, K0B, K0C, K0D, K0E, K0F, K0G, K0H, K0I, K0J \
+) \
+{ \
+/* 00 */ { KC_NO, KC_NO, K5A, K1B, K5E, K2F, K5F, K2G, K5G, KC_NO, K2L, KC_NO, K0I, K0J, K1N, K0B }, \
+/* 01 */ { KC_NO, K1A, K3A, K2A, K5D, K3F, K4N, K3G, K3M, K5H, K3L, K2O, K2P, K2Q, KC_NO, KC_NO }, \
+/* 02 */ { K0A, KC_NO, K4A, K5B, K5C, K4F, K5J, K4G, K4M, K5I, K4L, K3O, K4O, K4Q, K4P, KC_NO }, \
+/* 03 */ { KC_NO, KC_NO, K4B, K4C, K4D, K4E, K5K, K4H, K4I, K4J, K4K, K5L, K5M, K3Q, K3P, K5N }, \
+/* 04 */ { KC_NO, KC_NO, K3B, K3C, K3D, K3E, KC_NO, K3H, K3I, K3J, K3K, K3R, K3S, K3T, K3U, K5O }, \
+/* 05 */ { KC_NO, KC_NO, K2B, K2C, K2D, K2E, K3N, K2H, K2I, K2J, K2K, K1O, K1P, K1Q, K1R, KC_NO }, \
+/* 06 */ { K0E, K1M, K1C, K1D, K1E, K1F, K2N, K1I, K1J, K1K, K2M, K4R, K4S, K4T, K5P, KC_NO }, \
+/* 07 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, K1G, K0C, K1H, KC_NO, KC_NO, K1L, K0G, K0H, K4U, K0F, K0D }, \
+}
+/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ \ No newline at end of file
diff --git a/keyboards/converter/modelm101_teensy2/readme.md b/keyboards/converter/modelm101_teensy2/readme.md
new file mode 100644
index 0000000000..d65df72580
--- /dev/null
+++ b/keyboards/converter/modelm101_teensy2/readme.md
@@ -0,0 +1,29 @@
+# modelm101_teensy2
+
+![IBM Model M 101 ANSI/102 ISO](https://user-images.githubusercontent.com/46733695/161862805-c891735b-e2e8-418a-ad82-d71c00570eab.jpg)
+
+This is based on the modelm101 keyboard by iw0rm3r. The difference is that Teensy 2.0 board (produced by PJRC) is used instead of the Teensy 2.0++ due to the availability issues. Only CapsLock LED is supported since Teensy 2.0 only has 25 digital I/0 pins.
+
+Configuration is build for the Atmel ATmega32U4 controller, which you can easily use on the Teensy 2.0 board (produced by PJRC).
+
+Pins of the Teensy board you should use by default:
+```
+Columns: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+Pins: F0 F1 F4 F5 F6 F7 B6 B5 B4 D7 D6 B0 B1 B2 B3 B7
+--------------------------------------------------------
+Rows: 1 2 3 4 5 6 7 8
+Pins: D0 D1 D2 D3 C6 C7 D5 D4
+--------------------------------------------------------
+Status LEDs: CapsLock +5V ScrollLock NumLock
+Pins: E6 5V - -
+```
+
+Keyboard Maintainer: [wangfuco](https://github.com/wangfuco)
+Hardware Supported: Teensy 2.0 board by PJRC
+Hardware Availability: https://www.pjrc.com/store/teensy.html
+
+Make example for this keyboard (after setting up your build environment):
+
+ make converter/modelm101_teensy2:default:teensy
+
+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/converter/modelm101_teensy2/rules.mk b/keyboards/converter/modelm101_teensy2/rules.mk
new file mode 100644
index 0000000000..c1c611e577
--- /dev/null
+++ b/keyboards/converter/modelm101_teensy2/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = halfkay
+
+# 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/converter/modelm_ssk/config.h b/keyboards/converter/modelm_ssk/config.h
index ff7aa12000..6623eef167 100644
--- a/keyboards/converter/modelm_ssk/config.h
+++ b/keyboards/converter/modelm_ssk/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER tiltowait
-#define PRODUCT IBM Model M Space-Saving Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_COL_PINS { C7, C6, C5, C4, C3, C2, C1, C0, E1, E0, D7, D5, D4, D3, D2, D1 }
#define MATRIX_ROW_PINS { F0, F1, F2, F3, F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/converter/modelm_ssk/info.json b/keyboards/converter/modelm_ssk/info.json
index 78d75c8d17..22d2981943 100644
--- a/keyboards/converter/modelm_ssk/info.json
+++ b/keyboards/converter/modelm_ssk/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "IBM Model M Space-Saving Keyboard",
+ "manufacturer": "tiltowait",
"url": "https://github.com/tiltowait/qmk_firmware/tree/modelm_ssk/keyboards/converter/modelm_ssk",
"maintainer": "tiltowait",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts":
{
"LAYOUT":
diff --git a/keyboards/converter/numeric_keypad_IIe/config.h b/keyboards/converter/numeric_keypad_IIe/config.h
index be21814f80..f9fd26163d 100644
--- a/keyboards/converter/numeric_keypad_IIe/config.h
+++ b/keyboards/converter/numeric_keypad_IIe/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Apple Inc.
-#define PRODUCT Numeric Keypad IIe
-
/*
Pin Mappings
@@ -94,7 +87,6 @@ http://wiki.apple2.org/index.php?title=Pinouts#Apple_.2F.2Fe_Numeric_Keypad_conn
#define MATRIX_COLS 6
#define MATRIX_ROW_PINS { B0, B2, D2, D3 }
#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define SOFT_SERIAL_PIN D0
#define DEBOUNCE 5
diff --git a/keyboards/converter/numeric_keypad_IIe/info.json b/keyboards/converter/numeric_keypad_IIe/info.json
index 97e40bbad3..77b3c38227 100644
--- a/keyboards/converter/numeric_keypad_IIe/info.json
+++ b/keyboards/converter/numeric_keypad_IIe/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Numeric Keypad IIe",
+ "manufacturer": "Apple Inc.",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"7", "x":2, "y":0}, {"label":"8", "x":3, "y":0}, {"label":"9", "x":4, "y":0}, {"label":"(", "x":5.5, "y":0}, {"label":")", "x":6.5, "y":0}, {"label":"\u2190", "x":0, "y":1}, {"label":"4", "x":2, "y":1}, {"label":"5", "x":3, "y":1}, {"label":"6", "x":4, "y":1}, {"label":"\u2212", "x":5.5, "y":1}, {"label":"\u00f7", "x":6.5, "y":1}, {"label":"\u2192", "x":0, "y":2}, {"label":"1", "x":2, "y":2}, {"label":"2", "x":3, "y":2}, {"label":"3", "x":4, "y":2}, {"label":"+", "x":5.5, "y":2}, {"label":"\u00d7", "x":6.5, "y":2}, {"label":"Space", "x":0, "y":3}, {"label":"0", "x":1.5, "y":3, "w":1.5}, {"label":",", "x":3, "y":3}, {"label":".", "x":4, "y":3}, {"label":"Ret", "x":5.5, "y":3}, {"label":"Print", "x":6.5, "y":3}]
diff --git a/keyboards/converter/numeric_keypad_IIe/keymaps/newbold/keymap.c b/keyboards/converter/numeric_keypad_IIe/keymaps/newbold/keymap.c
index e0f04557c6..0255798860 100644
--- a/keyboards/converter/numeric_keypad_IIe/keymaps/newbold/keymap.c
+++ b/keyboards/converter/numeric_keypad_IIe/keymaps/newbold/keymap.c
@@ -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_BRMD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_BRMU, 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, QK_BOOT \
),
};
diff --git a/keyboards/converter/palm_usb/config.h b/keyboards/converter/palm_usb/config.h
index 35032835cd..f6e933ad2c 100644
--- a/keyboards/converter/palm_usb/config.h
+++ b/keyboards/converter/palm_usb/config.h
@@ -23,12 +23,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0100
-#define MANUFACTURER QMK
-#define PRODUCT Stowaway converter
-
// IO pins to serial
// https://deskthority.net/wiki/Arduino_Pro_Micro for pin lookup
#define VCC_PIN D1 // pro micro 2
diff --git a/keyboards/converter/palm_usb/info.json b/keyboards/converter/palm_usb/info.json
new file mode 100644
index 0000000000..ed4895ecfd
--- /dev/null
+++ b/keyboards/converter/palm_usb/info.json
@@ -0,0 +1,11 @@
+{
+ "keyboard_name": "Stowaway Converter",
+ "manufacturer": "QMK",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0001",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/converter/palm_usb/stowaway/info.json b/keyboards/converter/palm_usb/stowaway/info.json
index c3c520f260..34b1e1f83f 100644
--- a/keyboards/converter/palm_usb/stowaway/info.json
+++ b/keyboards/converter/palm_usb/stowaway/info.json
@@ -1,7 +1,4 @@
{
- "keyboard_name": "Palm Stowaway Serial",
- "url": "",
- "maintainer": "qmk",
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/converter/periboard_512/config.h b/keyboards/converter/periboard_512/config.h
index e2fdc74358..b93af8c954 100644
--- a/keyboards/converter/periboard_512/config.h
+++ b/keyboards/converter/periboard_512/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Sife
-#define PRODUCT Periboard 512
-
/* matrix properties */
#define MATRIX_COLS 19
#define MATRIX_ROWS 8
diff --git a/keyboards/converter/periboard_512/info.json b/keyboards/converter/periboard_512/info.json
index 7c178418c8..78dfbd7e1f 100644
--- a/keyboards/converter/periboard_512/info.json
+++ b/keyboards/converter/periboard_512/info.json
@@ -1,13 +1,18 @@
{
- "keyboard_name": "Perixx Periboard-512",
+ "keyboard_name": "Periboard 512",
+ "manufacturer": "Sife",
"url": "https://github.com/Sife-ops/qmk_firmware/tree/periboard_512/keyboards/converter/periboard_512",
"maintainer": "Sife-ops",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"diode_direction": "ROW2COL",
"matrix_pins": {
"cols": ["B7", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "E0", "E1", "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7"],
"rows": ["B6", "B5", "B4", "B3", "B2", "B1", "B0", "E7"]
},
- "url": "",
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/converter/siemens_tastatur/config.h b/keyboards/converter/siemens_tastatur/config.h
index 86fe59fbd5..93fca2962a 100644
--- a/keyboards/converter/siemens_tastatur/config.h
+++ b/keyboards/converter/siemens_tastatur/config.h
@@ -17,14 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4353
-#define DEVICE_VER 0x0001
-
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT Siemens Tastatur
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 19
diff --git a/keyboards/converter/siemens_tastatur/info.json b/keyboards/converter/siemens_tastatur/info.json
index 7c4ebe769b..2e537b78d4 100644
--- a/keyboards/converter/siemens_tastatur/info.json
+++ b/keyboards/converter/siemens_tastatur/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Siemens Tastatur",
+ "manufacturer": "Yiancar-Designs",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4353",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/converter/sun_usb/config.h b/keyboards/converter/sun_usb/config.h
index 0a4aa019f7..9d948b4cbd 100644
--- a/keyboards/converter/sun_usb/config.h
+++ b/keyboards/converter/sun_usb/config.h
@@ -17,12 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3333
-#define DEVICE_VER 0x0100
-#define MANUFACTURER QMK
-#define PRODUCT Sun keyboard converter
-
/* matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 8
diff --git a/keyboards/converter/sun_usb/info.json b/keyboards/converter/sun_usb/info.json
new file mode 100644
index 0000000000..691d0d1953
--- /dev/null
+++ b/keyboards/converter/sun_usb/info.json
@@ -0,0 +1,11 @@
+{
+ "keyboard_name": "Sun Keyboard Converter",
+ "manufacturer": "QMK",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3333",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/converter/sun_usb/type3/info.json b/keyboards/converter/sun_usb/type3/info.json
index 9a60b09607..383d7d65e5 100644
--- a/keyboards/converter/sun_usb/type3/info.json
+++ b/keyboards/converter/sun_usb/type3/info.json
@@ -1,7 +1,4 @@
{
- "keyboard_name": "Sun Type 3",
- "url": "",
- "maintainer": "qmk",
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/converter/sun_usb/type5/info.json b/keyboards/converter/sun_usb/type5/info.json
index 9613d46e50..23d80c4121 100644
--- a/keyboards/converter/sun_usb/type5/info.json
+++ b/keyboards/converter/sun_usb/type5/info.json
@@ -1,7 +1,4 @@
{
- "keyboard_name": "Sun Type 5",
- "url": "",
- "maintainer": "qmk",
"layouts": {
"LAYOUT_jp_unix": {
"layout": [
diff --git a/keyboards/converter/usb_usb/ble/config.h b/keyboards/converter/usb_usb/ble/config.h
index 675183f082..b4ee0992fe 100644
--- a/keyboards/converter/usb_usb/ble/config.h
+++ b/keyboards/converter/usb_usb/ble/config.h
@@ -1,6 +1,3 @@
#pragma once
-#undef PRODUCT
-#define PRODUCT QMK BLE Adapter
-
#define NO_ACTION_ONESHOT
diff --git a/keyboards/converter/usb_usb/config.h b/keyboards/converter/usb_usb/config.h
index 5f791eaa34..145a9e595f 100644
--- a/keyboards/converter/usb_usb/config.h
+++ b/keyboards/converter/usb_usb/config.h
@@ -19,13 +19,6 @@ 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 0x005B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER QMK
-#define PRODUCT QMK USB-USB Converter
-
/* size of virtual matrix */
#define MATRIX_ROWS 16
#define MATRIX_COLS 16
diff --git a/keyboards/converter/usb_usb/info.json b/keyboards/converter/usb_usb/info.json
index 8df3bb3e76..1bacf928a3 100644
--- a/keyboards/converter/usb_usb/info.json
+++ b/keyboards/converter/usb_usb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "converter/usb_usb",
+ "keyboard_name": "USB to USB Converter",
+ "manufacturer": "QMK",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x005B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/converter/usb_usb/keymaps/coloneljesus/keymap.c b/keyboards/converter/usb_usb/keymaps/coloneljesus/keymap.c
index ce4876536f..81d916edb9 100644
--- a/keyboards/converter/usb_usb/keymaps/coloneljesus/keymap.c
+++ b/keyboards/converter/usb_usb/keymaps/coloneljesus/keymap.c
@@ -61,7 +61,7 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
KC_CAPS, KC_MPRV, KC_VOLU, KC_MNXT, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,______,______, ______,______,______,______, ______,______,
______, KC_MUTE, KC_VOLD, KC_MPLY, ______, ______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, ______, ______, ______, ______, ______,______,______,______, ______,______,
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,______,______,______, ______,______,
- ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, RESET, ______,______,______, ______, ______,______, ______,______
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, QK_BOOT, ______,______,______, ______, ______,______, ______,______
),
};
diff --git a/keyboards/converter/usb_usb/keymaps/narze/keymap.c b/keyboards/converter/usb_usb/keymaps/narze/keymap.c
index a84d613a2d..13bc7a3eba 100644
--- a/keyboards/converter/usb_usb/keymaps/narze/keymap.c
+++ b/keyboards/converter/usb_usb/keymaps/narze/keymap.c
@@ -77,7 +77,7 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
),
[_SUPERDUPER] = LAYOUT_all(
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
- RESET, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,______,______, ______,______,______,______, ______,
+ QK_BOOT, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,______,______, ______,______,______,______, ______,
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,______,______, ______,______,______,______, ______,______,
______, ______, ______, ______, ______, ______, ______, ______, BRWS_L, BRWS_R, ______, ______, ______, ______, ______,______,______, ______,______,______,______, ______,______,
KC_SPC, KC_LALT, _______, _______, KC_BSPC,KC_LGUI,KC_LEFT, KC_DOWN, KC_UP,KC_RGHT, KC_DEL, ______, ______, ______, ______,______,______,______, ______,______,
diff --git a/keyboards/converter/xt_usb/config.h b/keyboards/converter/xt_usb/config.h
index 5f93fbfc6d..8aaf920578 100644
--- a/keyboards/converter/xt_usb/config.h
+++ b/keyboards/converter/xt_usb/config.h
@@ -19,13 +19,6 @@ 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 0x6512
-#define DEVICE_VER 0x0001
-#define MANUFACTURER QMK
-#define PRODUCT XT keyboard converter
-
/* key matrix size */
#define MATRIX_ROWS 16 // keycode bit: 3-0
#define MATRIX_COLS 8 // keycode bit: 6-4
diff --git a/keyboards/converter/xt_usb/info.json b/keyboards/converter/xt_usb/info.json
index 4dbe14b6fa..c6ea00cc09 100644
--- a/keyboards/converter/xt_usb/info.json
+++ b/keyboards/converter/xt_usb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "IBM PC XT",
+ "keyboard_name": "IBM PC XT Keyboard Converter",
+ "manufacturer": "QMK",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6512",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_xt": {
"layout": [
diff --git a/keyboards/cool836a/config.h b/keyboards/cool836a/config.h
index 4cf356d8b3..d2f134c778 100644
--- a/keyboards/cool836a/config.h
+++ b/keyboards/cool836a/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Ohashi
-#define PRODUCT cool836A
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D1, B5, B4, F4, B1, B6 }
#define MATRIX_COL_PINS { F5, D0, B2, C6, D7, E6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
//#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/cool836a/info.json b/keyboards/cool836a/info.json
index fb9e7a2f24..e413d13434 100644
--- a/keyboards/cool836a/info.json
+++ b/keyboards/cool836a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "cool836a",
+ "keyboard_name": "cool836A",
+ "manufacturer": "Ohashi",
"url": "https://github.com/telzo2000/cool836A",
"maintainer": "Ohashi",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/copenhagen_click/click_pad_v1/config.h b/keyboards/copenhagen_click/click_pad_v1/config.h
index 7fc16c54fe..88c1393fac 100755
--- a/keyboards/copenhagen_click/click_pad_v1/config.h
+++ b/keyboards/copenhagen_click/click_pad_v1/config.h
@@ -19,13 +19,6 @@ 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 0x27DB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Copenhagen Click
-#define PRODUCT Click Pad V1
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 1
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F7 }
#define MATRIX_COL_PINS { F5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/copenhagen_click/click_pad_v1/info.json b/keyboards/copenhagen_click/click_pad_v1/info.json
index f684748c64..96dcb150ff 100755
--- a/keyboards/copenhagen_click/click_pad_v1/info.json
+++ b/keyboards/copenhagen_click/click_pad_v1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "CopenhagenClickPad-V1",
+ "keyboard_name": "Click Pad V1",
+ "manufacturer": "Copenhagen Click",
"url": "http://copenhagenclick.com/ClickPad-V1/",
"maintainer": "mini-ninja-64",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x27DB",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0}]
diff --git a/keyboards/coseyfannitutti/discipad/config.h b/keyboards/coseyfannitutti/discipad/config.h
index 69e2e1561c..a93d34f4fb 100644
--- a/keyboards/coseyfannitutti/discipad/config.h
+++ b/keyboards/coseyfannitutti/discipad/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x6B62
-#define PRODUCT_ID 0x1769
-#define DEVICE_VER 0x0001
-#define MANUFACTURER coseyfannitutti
-#define PRODUCT DISCIPAD
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -43,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* A Custom matrix.c is used to poll the port expander C6 shows that the pins are hardwired there */
#define MATRIX_ROW_PINS { B1, B0, D7, D6, D4 }
#define MATRIX_COL_PINS { C0, C1, C2, C3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/coseyfannitutti/discipad/info.json b/keyboards/coseyfannitutti/discipad/info.json
index 267fd9f039..d11120c0dd 100644
--- a/keyboards/coseyfannitutti/discipad/info.json
+++ b/keyboards/coseyfannitutti/discipad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "DISCIPAD",
+ "manufacturer": "coseyfannitutti",
"url": "https://github.com/coseyfannitutti/discipad",
"maintainer": "coseyfannitutti",
+ "usb": {
+ "vid": "0x6B62",
+ "pid": "0x1769",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/coseyfannitutti/discipline/config.h b/keyboards/coseyfannitutti/discipline/config.h
index 570fff8752..258efdb965 100644
--- a/keyboards/coseyfannitutti/discipline/config.h
+++ b/keyboards/coseyfannitutti/discipline/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x6B62
-#define PRODUCT_ID 0x6869
-#define DEVICE_VER 0x0001
-#define MANUFACTURER coseyfannitutti
-#define PRODUCT DISCIPLINE
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B2, A1, B1, A0, B0 }
#define MATRIX_COL_PINS { A2, B3, A3, B4, A4, D5, D6, C6, C5, C4, C3, C2, C1, C0, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/coseyfannitutti/discipline/info.json b/keyboards/coseyfannitutti/discipline/info.json
index ea1886a353..f42c420633 100644
--- a/keyboards/coseyfannitutti/discipline/info.json
+++ b/keyboards/coseyfannitutti/discipline/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "DISCIPLINE",
+ "manufacturer": "coseyfannitutti",
"url": "https://github.com/coseyfannitutti/discipline",
"maintainer": "coseyfannitutti",
+ "usb": {
+ "vid": "0x6B62",
+ "pid": "0x6869",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_65_ansi_2_right_mods": "LAYOUT_65_ansi_blocker",
"LAYOUT_65_iso_2_right_mods": "LAYOUT_65_iso_blocker",
diff --git a/keyboards/coseyfannitutti/discipline/keymaps/brandonschlack/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/brandonschlack/keymap.c
index 4c63a3e14a..8dc554c3d3 100644
--- a/keyboards/coseyfannitutti/discipline/keymaps/brandonschlack/keymap.c
+++ b/keyboards/coseyfannitutti/discipline/keymaps/brandonschlack/keymap.c
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DELT, MC_SLPD, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_F13, KC_F14, KC_F15, MC_LHPD, KC_VOLU, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, \
- _______, _______, _______, _______, _______, RESET, _______, QM_MAKE, KC_MPRV, KC_MNXT, KC_MPLY, _______, KC_PGUP, KC_MUTE, \
+ _______, _______, _______, _______, _______, QK_BOOT, _______, QM_MAKE, KC_MPRV, KC_MNXT, KC_MPLY, _______, KC_PGUP, KC_MUTE, \
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
)
};
diff --git a/keyboards/coseyfannitutti/discipline/keymaps/briianpowell/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/briianpowell/keymap.c
new file mode 100644
index 0000000000..ed49188c5e
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipline/keymaps/briianpowell/keymap.c
@@ -0,0 +1,112 @@
+/* Copyright 2019 COSEYFANNITUTTI
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 FN_ESC LT(_FUNC, KC_ESC)
+
+enum discipline_layers {
+ _QWERTY,
+ _WORKMAN,
+ _FUNC,
+};
+
+enum discpline_keycodes {
+ QWERTY = SAFE_RANGE,
+ WORKMAN,
+ FUNC,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* QWERTY: Default Layer
+ * ,--------------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Backs| `~|
+ * |---------------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \|Del|
+ * |---------------------------------------------------------------|
+ * |Fn/CL | A| S| D| F| G| H| J| K| L| ;| '| Enter|PgU|
+ * |---------------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift |Up |PgD|
+ * |---------------------------------------------------------------|
+ * |Ctrl|Gui |Alt | Space |Gui |Alt |Ctrl| |Lef|Dow|Rig|
+ * `---------------------------------------------------------------'
+ */
+ [_QWERTY] = 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,
+ FN_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_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, KC_RGUI, KC_RCTL,KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /* Workman
+ * ,---------------------------------------------------------------.
+ * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| Backs| `~|
+ * |---------------------------------------------------------------|
+ * |Tab | Q| D| R| W| B| J| F| U| P| ;| [| ]| \| Del|
+ * |---------------------------------------------------------------|
+ * |Fn/CL | A| S| H| T| G| Y| N| E| O| I| '| Enter| PgU|
+ * |---------------------------------------------------------------|
+ * |Shift | Z| X| M| C| V| K| L| ,| .| /|Shift |Up| PgD|
+ * |---------------------------------------------------------------|
+ * |Ctrl|Alt |Gui | Space |Gui |Alt |Ctrl| |Lef|Dow|Rig|
+ * `---------------------------------------------------------------'
+ */
+ [_WORKMAN] = 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_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ FN_ESC, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, KC_ENT, KC_HOME,
+ KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, 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
+ ),
+
+ /* Function
+ * ,---------------------------------------------------------------.
+ * |RST| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| | |
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | | | | |INS|
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | | | |HME|
+ * |---------------------------------------------------------------|
+ * | | | | | | | | | | | | | |VL+|END|
+ * |---------------------------------------------------------------|
+ * | | | | PLY/PS | | | | |PRV|VL-|NXT|
+ * `---------------------------------------------------------------'
+ */
+ [_FUNC] = 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,_______, QK_BOOT,
+ _______,KC_WH_U,KC_BTN1,KC_MS_U,KC_BTN2,_______,_______,AG_NORM,AG_SWAP,QWERTY,WORKMAN,_______,_______,_______, KC_INS,
+ _______,KC_WH_D,KC_MS_L,KC_MS_D,KC_MS_R,_______,_______,_______,_______,_______,_______,_______, _______, KC_PGUP,
+ _______,KC_WH_L,KC_BTN3,KC_WH_R,_______,_______,_______,_______,_______,_______,_______, _______,KC_VOLU, KC_PGDN,
+ _______,_______,_______, KC_MPLY, _______,_______,_______,KC_MPRV,KC_VOLD, KC_MNXT
+ ),
+};
+
+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;
+ case WORKMAN:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_WORKMAN);
+ }
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/coseyfannitutti/discipline/keymaps/briianpowell/readme.md b/keyboards/coseyfannitutti/discipline/keymaps/briianpowell/readme.md
new file mode 100644
index 0000000000..c97f4ced16
--- /dev/null
+++ b/keyboards/coseyfannitutti/discipline/keymaps/briianpowell/readme.md
@@ -0,0 +1,15 @@
+# Discipline Keyboard Compilation
+
+## Features
+
+- Base Layers
+ - QWERTY
+ - Workman
+- Mouse Keys
+- Entertainment Keys
+
+## Building and flashing
+
+```
+make coseyfannitutti/discipline:briianpowell:flash
+```
diff --git a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c
index 050e406772..4460d6f9bb 100644
--- a/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c
+++ b/keyboards/coseyfannitutti/discipline/keymaps/noroadsleft/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 James Young (@noroadsleft)
+/* Copyright 2021-2022 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
@@ -30,7 +30,7 @@ enum layer_names {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DV] = 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_LBRC, KC_RBRC, KC_BSPC, 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_LBRC, KC_RBRC, KC_BSPC, KC_HOME,
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH, KC_EQL, KC_BSLS, KC_PGUP,
FN_CAPS, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS, KC_ENT, KC_PGDN,
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,
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_QW] = 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_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_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,
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_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,
@@ -56,13 +56,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN] = 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, DM_REC1,
_______, KC_CALC, KC_APP, _______, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, DM_REC2,
- _______, M_SALL, _______, _______, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, DM_RSTP, DM_PLY1,
+ _______, M_SALL, _______, _______, G_PWD, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, DM_RSTP, DM_PLY1,
_______, M_UNDO, M_CUT, M_COPY, M_PASTE, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, TO(_SY), _______, _______, DM_PLY2,
_______, _______, _______, TG(_NP), _______, _______, _______, _______, _______, _______
),
[_SY] = LAYOUT_65_ansi(
- TG(_SY), TO(_DV), TO(_QW), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX, XXXXXXX,
+ TG(_SY), TO(_DV), TO(_QW), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, DB_TOGG, XXXXXXX, VRSN, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 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/keymaps/osx/keymap.c b/keyboards/coseyfannitutti/discipline/keymaps/osx/keymap.c
index d224ca0e9d..dbd5d4409e 100644
--- a/keyboards/coseyfannitutti/discipline/keymaps/osx/keymap.c
+++ b/keyboards/coseyfannitutti/discipline/keymaps/osx/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* esc 1 2 3 4 5 6 7 8 9 0 - = bkspc `~ */
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,
/* tab Q W E R T Y U I O P [ ] \ delete*/
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS,KC_TRNS,KC_TRNS,KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_TRNS, KC_TRNS,
/* caps A S D F G H J K L ; ' enter pg 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_MPLY, KC_HOME,
/* shift Z X C V B N M , . / shift up pg dn*/
diff --git a/keyboards/coseyfannitutti/mullet/config.h b/keyboards/coseyfannitutti/mullet/config.h
index d01be9744c..86294fa7c2 100644
--- a/keyboards/coseyfannitutti/mullet/config.h
+++ b/keyboards/coseyfannitutti/mullet/config.h
@@ -19,13 +19,6 @@ 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 0x6969
-#define DEVICE_VER 0x0001
-#define MANUFACTURER coseyfannitutti
-#define PRODUCT mullet
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, B0, F0, F1 }
#define MATRIX_COL_PINS { B2, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/coseyfannitutti/mullet/info.json b/keyboards/coseyfannitutti/mullet/info.json
index 0be8b87767..29a2be6a4d 100644
--- a/keyboards/coseyfannitutti/mullet/info.json
+++ b/keyboards/coseyfannitutti/mullet/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "mullet",
+ "manufacturer": "coseyfannitutti",
"url": "https://github.com/coseyfannitutti/mullet",
"maintainer": "coseyfannitutti",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6969",
+ "device_version": "0.0.1"
+ },
"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":"Backspace", "x":13, "y":0, "w":2}, {"label":"Insert", "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":"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":"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":"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/coseyfannitutti/mullet/keymaps/alternate/keymap.c b/keyboards/coseyfannitutti/mullet/keymaps/alternate/keymap.c
index 21ca2ffb63..0d11c9a9bb 100644
--- a/keyboards/coseyfannitutti/mullet/keymaps/alternate/keymap.c
+++ b/keyboards/coseyfannitutti/mullet/keymaps/alternate/keymap.c
@@ -36,7 +36,7 @@
* .---------------------------------------------------------------------------------------------.
* | ` ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete | |
* |---------------------------------------------------------------------------------------------+
- * | Tab |STATC|BRTHE|RNBOW|RESET| | | | | | |PrScr| | \ | Home|
+ * | Tab |STATC|BRTHE|RNBOW|QK_BOOT| | | | | | |PrScr| | \ | Home|
* |---------------------------------------------------------------------------------------------+
* | Caps |RGBH+|RGBS+|RGBB+| | | | | | | | | Enter | End |
* |---------------------------------------------------------------------------------------------+
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* esc 1 2 3 4 5 6 7 8 9 0 - = bkspc delete */
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,
/* tab Q W E R T Y U I O P [ ] \ pg up */
- KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_BSLS, KC_HOME,
+ KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, QK_BOOT, KC_TRNS,KC_TRNS,KC_TRNS,KC_INS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_BSLS, KC_HOME,
/* caps A S D F G H J K L ; ' enter pg dn */
KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_END,
/* shift Z X C V B N M , . / shift up fn */
diff --git a/keyboards/coseyfannitutti/mulletpad/config.h b/keyboards/coseyfannitutti/mulletpad/config.h
index e6d68469bf..daa0cb91dc 100644
--- a/keyboards/coseyfannitutti/mulletpad/config.h
+++ b/keyboards/coseyfannitutti/mulletpad/config.h
@@ -19,13 +19,6 @@ 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 0x6666
-#define DEVICE_VER 0x0001
-#define MANUFACTURER coseyfannitutti
-#define PRODUCT mulletpad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F1, F5, F6, F7 }
#define MATRIX_COL_PINS { F0, C7, C6, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/coseyfannitutti/mulletpad/info.json b/keyboards/coseyfannitutti/mulletpad/info.json
index 5decb0e450..2f467f9a11 100644
--- a/keyboards/coseyfannitutti/mulletpad/info.json
+++ b/keyboards/coseyfannitutti/mulletpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "mulletpad",
+ "manufacturer": "coseyfannitutti",
"url": "https://github.com/coseyfannitutti/mulletpad",
"maintainer": "coseyfannitutti",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6666",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/coseyfannitutti/mysterium/config.h b/keyboards/coseyfannitutti/mysterium/config.h
index 4fa4b15708..d11a02c5f0 100644
--- a/keyboards/coseyfannitutti/mysterium/config.h
+++ b/keyboards/coseyfannitutti/mysterium/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x6B62
-#define PRODUCT_ID 0x8769
-#define DEVICE_VER 0x0001
-#define MANUFACTURER coseyfannitutti
-#define PRODUCT MYSTERIUM
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17*/
#define MATRIX_ROW_PINS { C2, C3, C7, C4, C6, C5 }
#define MATRIX_COL_PINS { A0, B0, A1, B1, A2, B2, A3, B3, A4, B4, A5, A6, A7, D6, D5, D1, D0, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/coseyfannitutti/mysterium/info.json b/keyboards/coseyfannitutti/mysterium/info.json
index 9005974099..bbe590e7a7 100644
--- a/keyboards/coseyfannitutti/mysterium/info.json
+++ b/keyboards/coseyfannitutti/mysterium/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MYSTERIUM",
+ "manufacturer": "coseyfannitutti",
"url": "https://github.com/coseyfannitutti/mysterium",
"maintainer": "coseyfannitutti",
+ "usb": {
+ "vid": "0x6B62",
+ "pid": "0x8769",
+ "device_version": "0.0.1"
+ },
"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":"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":"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":"Menu", "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/coseyfannitutti/mysterium/keymaps/ansi_7u/keymap.c b/keyboards/coseyfannitutti/mysterium/keymaps/ansi_7u/keymap.c
index 71f357681e..9a851bec56 100644
--- a/keyboards/coseyfannitutti/mysterium/keymaps/ansi_7u/keymap.c
+++ b/keyboards/coseyfannitutti/mysterium/keymaps/ansi_7u/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_tkl_ansi_7u(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,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, QK_BOOT, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_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_VOLD, KC_TRNS)
diff --git a/keyboards/coseyfannitutti/romeo/config.h b/keyboards/coseyfannitutti/romeo/config.h
index 811787df79..e70b99984e 100644
--- a/keyboards/coseyfannitutti/romeo/config.h
+++ b/keyboards/coseyfannitutti/romeo/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x6B62
-#define PRODUCT_ID 0x4069
-#define DEVICE_VER 0x0001
-#define MANUFACTURER coseyfannitutti
-#define PRODUCT ROMEO
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -44,7 +38,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 0 1 2 3 4 5 6 7 8 9 10 11*/
#define MATRIX_ROW_PINS { B1, B4, B3, B2 }
#define MATRIX_COL_PINS { C5, C4, C3, D0, C2, D1, C1, C0, D4, B0, D7, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/coseyfannitutti/romeo/info.json b/keyboards/coseyfannitutti/romeo/info.json
index a79308a8da..3f8c9a616d 100644
--- a/keyboards/coseyfannitutti/romeo/info.json
+++ b/keyboards/coseyfannitutti/romeo/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ROMEO",
+ "manufacturer": "coseyfannitutti",
"url": "https://github.com/coseyfannitutti/romeo",
"maintainer": "coseyfannitutti",
+ "usb": {
+ "vid": "0x6B62",
+ "pid": "0x4069",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"1.5u", "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}, {"label":"1.5u", "x":11.5, "y":0, "w":1.5}, {"label":"1.75u", "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}, {"label":"2.25u", "x":10.75, "y":1, "w":2.25}, {"label":"1.25u", "x":0, "y":2, "w":1.25}, {"x":1.25, "y":2}, {"x":2.25, "y":2}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "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}, {"label":"1.75u", "x":11.25, "y":2, "w":1.75}, {"label":"1.25u", "x":0, "y":3, "w":1.25}, {"label":"1u", "x":1.25, "y":3}, {"label":"1.25u", "x":2.25, "y":3, "w":1.25}, {"label":"2.25u", "x":3.5, "y":3, "w":2.25}, {"label":"1u", "x":5.75, "y":3}, {"label":"2.75u", "x":6.75, "y":3, "w":2.75}, {"label":"1.25u", "x":9.5, "y":3, "w":1.25}, {"label":"1u", "x":10.75, "y":3}, {"label":"1.25u", "x":11.75, "y":3, "w":1.25}]
diff --git a/keyboards/coseyfannitutti/romeo/keymaps/brandonschlack/keymap.c b/keyboards/coseyfannitutti/romeo/keymaps/brandonschlack/keymap.c
index 3be5d44ea3..fae2a144a0 100644
--- a/keyboards/coseyfannitutti/romeo/keymaps/brandonschlack/keymap.c
+++ b/keyboards/coseyfannitutti/romeo/keymaps/brandonschlack/keymap.c
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └────┴───┴───┴────────────────────────┴────┴───┴────┘
*/
[_ADJUST] = LAYOUT_ansi_40( \
- QM_MAKE, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, \
+ QM_MAKE, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/cozykeys/bloomer/config.h b/keyboards/cozykeys/bloomer/config.h
index 0f285b4d0e..461f289918 100644
--- a/keyboards/cozykeys/bloomer/config.h
+++ b/keyboards/cozykeys/bloomer/config.h
@@ -18,12 +18,6 @@ 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 0x1191
-#define MANUFACTURER CozyKeys
-#define PRODUCT Bloomer
-
// Key matrix size
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
diff --git a/keyboards/cozykeys/bloomer/info.json b/keyboards/cozykeys/bloomer/info.json
new file mode 100644
index 0000000000..ed0bb78867
--- /dev/null
+++ b/keyboards/cozykeys/bloomer/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "Bloomer",
+ "manufacturer": "CozyKeys",
+ "url": "https://github.com/cozykeys/bloomer",
+ "maintainer": "pcewing",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1191"
+ }
+}
diff --git a/keyboards/cozykeys/bloomer/v2/config.h b/keyboards/cozykeys/bloomer/v2/config.h
index 49fac4d254..8eb3ab52c9 100644
--- a/keyboards/cozykeys/bloomer/v2/config.h
+++ b/keyboards/cozykeys/bloomer/v2/config.h
@@ -18,12 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-// USB Device descriptor parameter
-#define DEVICE_VER 0x0002
-
// Keyboard Matrix Assignments
#define MATRIX_ROW_PINS { D0, D1, D3, D2, D4, B2 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B1, B4, C6, E6, B5, B6, B7, D6, C7 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/cozykeys/bloomer/v2/info.json b/keyboards/cozykeys/bloomer/v2/info.json
index 7e268a4640..9cd8e532cf 100644
--- a/keyboards/cozykeys/bloomer/v2/info.json
+++ b/keyboards/cozykeys/bloomer/v2/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "Bloomer",
- "url": "https://github.com/cozykeys/bloomer",
- "maintainer": "pcewing",
+ "usb": {
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/cozykeys/bloomer/v3/config.h b/keyboards/cozykeys/bloomer/v3/config.h
index 4bb291be56..8eb3ab52c9 100644
--- a/keyboards/cozykeys/bloomer/v3/config.h
+++ b/keyboards/cozykeys/bloomer/v3/config.h
@@ -18,12 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-// USB Device descriptor parameter
-#define DEVICE_VER 0x0003
-
// Keyboard Matrix Assignments
#define MATRIX_ROW_PINS { D0, D1, D3, D2, D4, B2 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B1, B4, C6, E6, B5, B6, B7, D6, C7 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/cozykeys/bloomer/v3/info.json b/keyboards/cozykeys/bloomer/v3/info.json
index 47d74269d2..6b782663d8 100644
--- a/keyboards/cozykeys/bloomer/v3/info.json
+++ b/keyboards/cozykeys/bloomer/v3/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "Bloomer",
- "url": "https://github.com/cozykeys/bloomer",
- "maintainer": "pcewing",
+ "usb": {
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/cozykeys/speedo/v2/config.h b/keyboards/cozykeys/speedo/v2/config.h
index 1ab81ed7d1..e5e7597f72 100644
--- a/keyboards/cozykeys/speedo/v2/config.h
+++ b/keyboards/cozykeys/speedo/v2/config.h
@@ -18,13 +18,6 @@ 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 0x1192
-#define DEVICE_VER 0x0002
-#define MANUFACTURER CozyKeys
-#define PRODUCT Speedo
-
// Key matrix size
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -32,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Keyboard Matrix Assignments
#define MATRIX_ROW_PINS { D1, D2, D3, C6, C7 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B6, B5, D0, B7, B3, B2, B1, B0 }
-#define UNUSED_PINS { D5, D4, D6, D7, B4 }
#define DIODE_DIRECTION COL2ROW
// Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed
diff --git a/keyboards/cozykeys/speedo/v2/info.json b/keyboards/cozykeys/speedo/v2/info.json
index 775511dda1..8de425ede1 100644
--- a/keyboards/cozykeys/speedo/v2/info.json
+++ b/keyboards/cozykeys/speedo/v2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Speedo",
+ "manufacturer": "CozyKeys",
"url": "https://github.com/cozykeys/speedo",
"maintainer": "pcewing",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1192",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/cozykeys/speedo/v3/config.h b/keyboards/cozykeys/speedo/v3/config.h
index 9928e91f98..8590a45efc 100644
--- a/keyboards/cozykeys/speedo/v3/config.h
+++ b/keyboards/cozykeys/speedo/v3/config.h
@@ -18,13 +18,6 @@ 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 0x1192
-#define DEVICE_VER 0x0003
-#define MANUFACTURER CozyKeys
-#define PRODUCT Speedo
-
// Key matrix size
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -32,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Keyboard Matrix Assignments
#define MATRIX_ROW_PINS { F0, F1, C7, D5, B7 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B6, B2, E6, D7, C6, D4, D0, D1 }
-#define UNUSED_PINS { D2, D3, B0, B4 }
#define DIODE_DIRECTION COL2ROW
#ifdef RGBLIGHT_ENABLE
diff --git a/keyboards/cozykeys/speedo/v3/info.json b/keyboards/cozykeys/speedo/v3/info.json
index 8f2e2674bf..49a5b94f06 100644
--- a/keyboards/cozykeys/speedo/v3/info.json
+++ b/keyboards/cozykeys/speedo/v3/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Speedo",
+ "manufacturer": "CozyKeys",
"url": "https://github.com/cozykeys/speedo",
"maintainer": "pcewing",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1192",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/cozykeys/speedo/v3/keymaps/pcewing/keymap.c b/keyboards/cozykeys/speedo/v3/keymaps/pcewing/keymap.c
new file mode 100644
index 0000000000..51fb5ca67c
--- /dev/null
+++ b/keyboards/cozykeys/speedo/v3/keymaps/pcewing/keymap.c
@@ -0,0 +1,132 @@
+/*
+ * Copyright 2022 Paul Ewing
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "key_repeater.h"
+
+#include <stdlib.h>
+
+enum {
+ LAYER_DEFAULT,
+ LAYER_FN,
+ LAYER_MACRO,
+
+ __LAYER_COUNT,
+};
+
+#define TO_MACRO TO(LAYER_MACRO)
+#define TO_DFLT TO(LAYER_DEFAULT)
+#define MO_FN MO(LAYER_FN)
+
+#define RGB_N RGB_MOD // Rotate to next RGB mode
+#define RGB_P RGB_RMOD // Rotate to next RGB mode
+
+#define KC_YANK LCTL(KC_INS) // Copy shortcut in most terminal emulators
+#define KC_PUT LSFT(KC_INS) // Paste shortcut in most terminal emulators
+
+// Custom keycodes
+enum {
+ SH_TOG = SAFE_RANGE, // Toggle shift
+ SH_BTN1, // Shift left click
+ RP_BTN1, // Click repeatedly while key is held
+};
+
+const uint16_t PROGMEM keymaps[__LAYER_COUNT][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_LEFT, KC_RGHT, 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_DOWN, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_GRV, MO_FN, KC_BSPC, KC_DEL, KC_ENT, KC_SPC, KC_LBRC, KC_RBRC, KC_RALT, KC_RGUI, KC_RCTL
+),
+
+[LAYER_FN] = LAYOUT(
+ RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, RGB_TOG, KC_YANK, KC_GRV, KC_LBRC, KC_RBRC, KC_PUT, _______,
+ KC_CAPS, KC_F5, KC_F6, KC_F7, KC_F8, KC_INS, RGB_N, RGB_P, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_PAUS, RGB_M_P, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, TO_MACRO, _______, _______, _______, _______, _______, _______
+),
+
+[LAYER_MACRO] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, RP_BTN1, SH_TOG, _______, _______, _______, _______, _______, _______, _______,
+ TO_DFLT, _______, _______, KC_BTN1, SH_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_1, KC_6, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_BTN1, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+};
+
+static bool shift_enabled = false;
+
+static struct key_repeater_t* click_repeater = NULL;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case SH_TOG:
+ if (record->event.pressed) {
+ if (shift_enabled) {
+ unregister_code(KC_LSFT);
+ } else {
+ register_code(KC_LSFT);
+ }
+ shift_enabled = !shift_enabled;
+ }
+ return false; // Skip all further processing of this key
+ case SH_BTN1:
+ if (record->event.pressed) {
+ register_code(KC_LSFT);
+ register_code(KC_BTN1);
+ } else {
+ unregister_code(KC_BTN1);
+ unregister_code(KC_LSFT);
+ }
+ return false;
+ case RP_BTN1:
+ if (record->event.pressed) {
+ kr_enable(click_repeater);
+ } else {
+ kr_disable(click_repeater);
+ }
+ return false;
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+
+void keyboard_post_init_user(void) {
+ // Seed the random number generator which is used by the key repeater
+ srand(timer_read32());
+
+ // Configure and instantiate a key repeater for mouse button 1 "rapid fire"
+ struct key_repeater_config_t cfg = {
+ .key = KC_BTN1,
+ .key_duration_min = 20,
+ .key_duration_max = 50,
+ .wait_duration_min = 90,
+ .wait_duration_max = 140,
+ };
+
+ click_repeater = kr_new(&cfg);
+}
+
+void matrix_scan_user(void) {
+ kr_poll(click_repeater);
+}
diff --git a/keyboards/cradio/config.h b/keyboards/cradio/config.h
index aba6050af1..e4ecd29539 100644
--- a/keyboards/cradio/config.h
+++ b/keyboards/cradio/config.h
@@ -1,76 +1,11 @@
-/* Copyright 2018-2021
- * 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
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * 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 2018-2021
+// ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
+// David Philip Barr <@davidphilipbarr>
+// Pierre Chevalier <pierrechevalier83@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
-#pragma once
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC88B
-#define PRODUCT_ID 0x3988
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DPB
-#define PRODUCT Cradio
-
-/* key matrix size */
-#define MATRIX_ROWS 8
-#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)
- * NO_DIODE = switches are directly connected to AVR pins
- *
-*/
-#define DIRECT_PINS { \
- { E6, F7, F6, F5, F4 }, \
- { B1, B3, B2, B6, D3 }, \
- { D1, D0, D4, C6, D7 }, \
- { B4, B5, NO_PIN, NO_PIN, NO_PIN } \
-}
-
-#define DIRECT_PINS_RIGHT { \
- { F4, F5, F6, F7, E6 }, \
- { D3, B6, B2, B3, B1 }, \
- { D7, C6, D4, D0, D1 }, \
- { B5, B4, NO_PIN, NO_PIN, NO_PIN } \
-}
-
-#define UNUSED_PINS
-
-/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
-#define DEBOUNCE 5
-
-/* Serial settings */
-#define USE_SERIAL
-/* serial.c configuration for split keyboard */
-#define SOFT_SERIAL_PIN D2
-
-/* Top left key on left half */
#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_COLUMN_RIGHT 4
-
diff --git a/keyboards/cradio/cradio.c b/keyboards/cradio/cradio.c
index 76c64cbb8c..99a69ff755 100644
--- a/keyboards/cradio/cradio.c
+++ b/keyboards/cradio/cradio.c
@@ -1,24 +1,10 @@
-/* Copyright 2018-2021
- * 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
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * 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 2018-2021
+// ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
+// David Philip Barr <@davidphilipbarr>
+// Pierre Chevalier <pierrechevalier83@gmail.com>
+// SPDX-License-Identifier: GPL-2.0+
-#include "cradio.h"
+#include "quantum.h"
#ifdef SWAP_HANDS_ENABLE
__attribute__ ((weak))
@@ -35,4 +21,3 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
{{1, 3}, {0, 3}, {2, 3}, {3, 3}, {4, 3}}
};
#endif
-
diff --git a/keyboards/cradio/cradio.h b/keyboards/cradio/cradio.h
deleted file mode 100644
index f013386bf8..0000000000
--- a/keyboards/cradio/cradio.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright 2018-2021
- * 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
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You 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"
-
-/* 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.
- */
-
-// readability
-#define ___ KC_NO
-
-#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, \
- L16, L17, R16, R17 \
- ) \
- { \
- { L01, L02, L03, L04, L05 }, \
- { L06, L07, L08, L09, L10 }, \
- { L11, L12, L13, L14, L15 }, \
- { L16, L17, ___, ___, ___ }, \
- { R01, R02, R03, R04, R05 }, \
- { R06, R07, R08, R09, R10 }, \
- { R11, R12, R13, R14, R15 }, \
- { R16, R17, ___, ___, ___ } \
- }
-
-#define LAYOUT LAYOUT_split_3x5_2
-
diff --git a/keyboards/cradio/info.json b/keyboards/cradio/info.json
index 78cb7ef195..0b9cbb1fed 100644
--- a/keyboards/cradio/info.json
+++ b/keyboards/cradio/info.json
@@ -1,51 +1,91 @@
{
"keyboard_name": "Cradio",
+ "manufacturer": "DPB",
"url": "https://github.com/davidphilipbarr/Sweep",
"maintainer": "@davidphilipbarr",
+ "usb": {
+ "vid": "0xC88B",
+ "pid": "0x3988",
+ "device_version": "0.0.1"
+ },
+ "processor": "atmega32u4",
+ "protocol": "atmel-dfu",
+ "debounce": 5,
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": false,
+ "unicode": true
+ },
+ "matrix_pins": {
+ "direct": [
+ ["E6", "F7", "F6", "F5", "F4"],
+ ["B1", "B3", "B2", "B6", "D3"],
+ ["D1", "D0", "D4", "C6", "D7"],
+ ["B4", "B5", null, null, null]
+ ]
+ },
+ "split": {
+ "enabled": true,
+ "matrix_pins": {
+ "right": {
+ "direct": [
+ ["F4", "F5", "F6", "F7", "E6"],
+ ["D3", "B6", "B2", "B3", "B1"],
+ ["D7", "C6", "D4", "D0", "D1"],
+ ["B5", "B4", null, null, null]
+ ]
+ }
+ },
+ "soft_serial_pin": "D2",
+ "transport": {
+ "protocol": "serial"
+ }
+ },
+ "community_layouts": ["split_3x5_2"],
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_split_3x5_2"
+ },
"layouts": {
"LAYOUT_split_3x5_2": {
"layout": [
- {"x": 0, "y": 1.27},
- {"x": 1, "y": 0.31},
- {"x": 2, "y": 0},
- {"x": 3, "y": 0.28},
- {"x": 4, "y": 0.42},
-
- {"x": 8, "y": 0.42},
- {"x": 9, "y": 0.28},
- {"x": 10, "y": 0},
- {"x": 11, "y": 0.31},
- {"x": 12, "y": 1.27},
-
- {"x": 0, "y": 2.27},
- {"x": 1, "y": 1.31},
- {"x": 2, "y": 1},
- {"x": 3, "y": 1.28},
- {"x": 4, "y": 1.42},
-
- {"x": 8, "y": 1.42},
- {"x": 9, "y": 1.28},
- {"x": 10, "y": 1},
- {"x": 11, "y": 1.31},
- {"x": 12, "y": 2.27},
-
- {"x": 0, "y": 3.27},
- {"x": 1, "y": 2.31},
- {"x": 2, "y": 2},
- {"x": 3, "y": 2.28},
- {"x": 4, "y": 2.42},
-
- {"x": 8, "y": 2.42},
- {"x": 9, "y": 2.28},
- {"x": 10, "y": 2},
- {"x": 11, "y": 2.31},
- {"x": 12, "y": 3.27},
-
- {"x": 4, "y": 3.9},
- {"x": 5, "y": 3.7},
-
- {"x": 7, "y": 3.7},
- {"x": 8, "y": 3.9}
+ { "label": "L01", "matrix": [0, 0], "w": 1, "x": 0, "y": 1.27 },
+ { "label": "L02", "matrix": [0, 1], "w": 1, "x": 1, "y": 0.31 },
+ { "label": "L03", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
+ { "label": "L04", "matrix": [0, 3], "w": 1, "x": 3, "y": 0.28 },
+ { "label": "L05", "matrix": [0, 4], "w": 1, "x": 4, "y": 0.42 },
+ { "label": "L06", "matrix": [1, 0], "w": 1, "x": 0, "y": 2.27 },
+ { "label": "L07", "matrix": [1, 1], "w": 1, "x": 1, "y": 1.31 },
+ { "label": "L08", "matrix": [1, 2], "w": 1, "x": 2, "y": 1 },
+ { "label": "L09", "matrix": [1, 3], "w": 1, "x": 3, "y": 1.28 },
+ { "label": "L10", "matrix": [1, 4], "w": 1, "x": 4, "y": 1.42 },
+ { "label": "L11", "matrix": [2, 0], "w": 1, "x": 0, "y": 3.27 },
+ { "label": "L12", "matrix": [2, 1], "w": 1, "x": 1, "y": 2.31 },
+ { "label": "L13", "matrix": [2, 2], "w": 1, "x": 2, "y": 2 },
+ { "label": "L14", "matrix": [2, 3], "w": 1, "x": 3, "y": 2.28 },
+ { "label": "L15", "matrix": [2, 4], "w": 1, "x": 4, "y": 2.42 },
+ { "label": "L16", "matrix": [3, 0], "w": 1, "x": 4, "y": 3.9 },
+ { "label": "L17", "matrix": [3, 1], "w": 1, "x": 5, "y": 3.7 },
+ { "label": "R01", "matrix": [4, 0], "w": 1, "x": 8, "y": 0.42 },
+ { "label": "R02", "matrix": [4, 1], "w": 1, "x": 9, "y": 0.28 },
+ { "label": "R03", "matrix": [4, 2], "w": 1, "x": 10, "y": 0 },
+ { "label": "R04", "matrix": [4, 3], "w": 1, "x": 11, "y": 0.31 },
+ { "label": "R05", "matrix": [4, 4], "w": 1, "x": 12, "y": 1.27 },
+ { "label": "R06", "matrix": [5, 0], "w": 1, "x": 8, "y": 1.42 },
+ { "label": "R07", "matrix": [5, 1], "w": 1, "x": 9, "y": 1.28 },
+ { "label": "R08", "matrix": [5, 2], "w": 1, "x": 10, "y": 1 },
+ { "label": "R09", "matrix": [5, 3], "w": 1, "x": 11, "y": 1.31 },
+ { "label": "R10", "matrix": [5, 4], "w": 1, "x": 12, "y": 2.27 },
+ { "label": "R11", "matrix": [6, 0], "w": 1, "x": 8, "y": 2.42 },
+ { "label": "R12", "matrix": [6, 1], "w": 1, "x": 9, "y": 2.28 },
+ { "label": "R13", "matrix": [6, 2], "w": 1, "x": 10, "y": 2 },
+ { "label": "R14", "matrix": [6, 3], "w": 1, "x": 11, "y": 2.31 },
+ { "label": "R15", "matrix": [6, 4], "w": 1, "x": 12, "y": 3.27 },
+ { "label": "R16", "matrix": [7, 0], "w": 1, "x": 7, "y": 3.7 },
+ { "label": "R17", "matrix": [7, 1], "w": 1, "x": 8, "y": 3.9 }
]
}
}
diff --git a/keyboards/cradio/readme.md b/keyboards/cradio/readme.md
index 7f3cef0969..09a5267a1a 100644
--- a/keyboards/cradio/readme.md
+++ b/keyboards/cradio/readme.md
@@ -18,13 +18,19 @@ Make example for this keyboard (after setting up your build environment):
make cradio:default
+### RP2040 Controllers
+
+Pro Micro RP2040 controllers are supported with [QMK Converters](https://docs.qmk.fm/#/feature_converters). The make command example for Adafruit's KB2040 are:
+
+ make CONVERT_TO=kb2040 cradio: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:
-* **Keycode in layout**: Press the key mapped to `RESET` if it is configured.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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 1e4940ca7d..6e7633bfe0 100644
--- a/keyboards/cradio/rules.mk
+++ b/keyboards/cradio/rules.mk
@@ -1,21 +1 @@
-# 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
-UNICODE_ENABLE = yes # Unicode
-AUDIO_ENABLE = no # Audio output
-SPLIT_KEYBOARD = yes # Use shared split_common code
-LAYOUTS = split_3x5_2
+# This file intentionally left blank
diff --git a/keyboards/craftwalk/config.h b/keyboards/craftwalk/config.h
index f87c61cdb1..ce953b43fe 100644
--- a/keyboards/craftwalk/config.h
+++ b/keyboards/craftwalk/config.h
@@ -19,13 +19,6 @@ 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 0x2E8F
-#define DEVICE_VER 0x0001
-#define MANUFACTURER sotoba
-#define PRODUCT craftwalk
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 7
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F6, B3, B5 }
#define MATRIX_COL_PINS { B1, F7, F5, F4, B2, E6, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/craftwalk/info.json b/keyboards/craftwalk/info.json
index 0d854c5333..ac6324efba 100644
--- a/keyboards/craftwalk/info.json
+++ b/keyboards/craftwalk/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "craftwalk",
+ "manufacturer": "sotoba",
"url": "https://github.com/sotoba/craftwalk",
"maintainer": "sotoba",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x2E8F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/crawlpad/config.h b/keyboards/crawlpad/config.h
index d923fe0c27..06939422b0 100755
--- a/keyboards/crawlpad/config.h
+++ b/keyboards/crawlpad/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6070
-#define DEVICE_VER 0x0001
-#define MANUFACTURER WoodKeys.click
-#define PRODUCT CrawlPad
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F0, F1, F4, F5 }
#define MATRIX_COL_PINS { D4, D5, D6, D7 }
-#define UNUSED_PINS
/* Pins for custom per-row LEDs. Should be changed to use named pins. */
#define LED_ROW_PINS { 8, 9, 10, 11 }
diff --git a/keyboards/crawlpad/info.json b/keyboards/crawlpad/info.json
index 4613a4a5a0..7b95c4495d 100644
--- a/keyboards/crawlpad/info.json
+++ b/keyboards/crawlpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Crawlpad",
+ "manufacturer": "WoodKeys.Click",
"url": "",
"maintainer": "colemarkham",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6070",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x4": {
"layout": [
diff --git a/keyboards/crazy_keyboard_68/config.h b/keyboards/crazy_keyboard_68/config.h
index ea2bc568bc..d1fa1bb5d2 100644
--- a/keyboards/crazy_keyboard_68/config.h
+++ b/keyboards/crazy_keyboard_68/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED // by default from pcb
-#define PRODUCT_ID 0x13DE
-#define DEVICE_VER 0x0001
-#define MANUFACTURER chent7
-#define PRODUCT Crazy Keyboard 68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/crazy_keyboard_68/info.json b/keyboards/crazy_keyboard_68/info.json
index 38c3025ec8..040b29825d 100644
--- a/keyboards/crazy_keyboard_68/info.json
+++ b/keyboards/crazy_keyboard_68/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "crazy_keyboard_68",
+ "keyboard_name": "Crazy_Keyboard 68",
+ "manufacturer": "chent7",
"url": "",
"maintainer": "chent7",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x13DE",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/crbn/config.h b/keyboards/crbn/config.h
index 8873022269..47f8ca93a6 100644
--- a/keyboards/crbn/config.h
+++ b/keyboards/crbn/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x726F
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Polarity Works
-#define PRODUCT CRBN
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B3, B1, F7, F6 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B6, B2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/crbn/info.json b/keyboards/crbn/info.json
index f9369ec2cd..0ae3a72434 100644
--- a/keyboards/crbn/info.json
+++ b/keyboards/crbn/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "CRBN",
+ "manufacturer": "Polarity Works",
"url": "polarityworks.com",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x726F",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_crbn_1x2u": {
"layout": [
diff --git a/keyboards/creatkeebs/glacier/config.h b/keyboards/creatkeebs/glacier/config.h
index 1cfb2b6a8d..0af5d6f6b7 100644
--- a/keyboards/creatkeebs/glacier/config.h
+++ b/keyboards/creatkeebs/glacier/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0410
-#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
@@ -32,7 +25,6 @@
/* 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
diff --git a/keyboards/creatkeebs/glacier/info.json b/keyboards/creatkeebs/glacier/info.json
index 3bc2ee2018..3c81d34267 100644
--- a/keyboards/creatkeebs/glacier/info.json
+++ b/keyboards/creatkeebs/glacier/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "glacier",
+ "manufacturer": "creatkeebs",
"url": "",
"maintainer": "Timliuzhaolu",
+ "usb": {
+ "vid": "0x0410",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_tkl_f13_ansi_tsangan"
},
diff --git a/keyboards/creatkeebs/glacier/readme.md b/keyboards/creatkeebs/glacier/readme.md
index 6901f93b27..0a38629863 100644
--- a/keyboards/creatkeebs/glacier/readme.md
+++ b/keyboards/creatkeebs/glacier/readme.md
@@ -16,8 +16,8 @@ A 80% keyboard
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.
+* Physical reset button: Press the `QK_BOOT` button on the back of the PCB.
+* Keycode in layout: Press the key mapped to `QK_BOOT` if it is available.
### Building the Firmware
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/creatkeebs/thera/config.h b/keyboards/creatkeebs/thera/config.h
index 0e673dd9d3..68494a1cd6 100644
--- a/keyboards/creatkeebs/thera/config.h
+++ b/keyboards/creatkeebs/thera/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0410
-#define PRODUCT_ID 0x6061
-#define DEVICE_VER 0x0001
-#define MANUFACTURER creatkeebs
-#define PRODUCT thera
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
@@ -32,7 +25,6 @@
/* 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
diff --git a/keyboards/creatkeebs/thera/info.json b/keyboards/creatkeebs/thera/info.json
index 856aae93bf..388fc448e0 100644
--- a/keyboards/creatkeebs/thera/info.json
+++ b/keyboards/creatkeebs/thera/info.json
@@ -1,106 +1,831 @@
{
- "keyboard_name": "jelly epoch",
+ "keyboard_name": "thera",
+ "manufacturer": "creatkeebs",
"url": "https://eschit.com/collections/thera75",
"maintainer": "https://github.com/Timliuzhaolu",
+ "usb": {
+ "vid": "0x0410",
+ "pid": "0x6061",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_ansi"
+ },
"layouts": {
- "LAYOUT": {
+ "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, "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}
+ {"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":"PrtSc", "x":14, "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":"Insert", "x":15.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":"\\|", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"Page Up", "x":15.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},
+ {"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.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":"\u2191", "x":14.25, "y":4.75},
+
+ {"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},
+ {"label":"GUI", "x":11, "y":5.5},
+ {"label":"Ctrl", "x":12, "y":5.5},
+ {"label":"\u2190", "x":13.25, "y":5.75},
+ {"label":"\u2193", "x":14.25, "y":5.75},
+ {"label":"\u2192", "x":15.25, "y":5.75}
+ ]
+ },
+ "LAYOUT_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":"PrtSc", "x":14, "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":"Insert", "x":15.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":"\\|", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"Page Up", "x":15.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},
+ {"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.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},
+ {"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.25, "y":4.75},
+
+ {"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},
+ {"label":"GUI", "x":11, "y":5.5},
+ {"label":"Ctrl", "x":12, "y":5.5},
+ {"label":"\u2190", "x":13.25, "y":5.75},
+ {"label":"\u2193", "x":14.25, "y":5.75},
+ {"label":"\u2192", "x":15.25, "y":5.75}
+ ]
+ },
+ "LAYOUT_ansi_split_bs": {
+ "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":"PrtSc", "x":14, "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":"Insert", "x":15.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":"\\|", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"Page Up", "x":15.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},
+ {"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.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},
+ {"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.25, "y":4.75},
+
+ {"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},
+ {"label":"GUI", "x":11, "y":5.5},
+ {"label":"Ctrl", "x":12, "y":5.5},
+ {"label":"\u2190", "x":13.25, "y":5.75},
+ {"label":"\u2193", "x":14.25, "y":5.75},
+ {"label":"\u2192", "x":15.25, "y":5.75}
+ ]
+ },
+ "LAYOUT_ansi_rwkl": {
+ "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":"PrtSc", "x":14, "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":"Insert", "x":15.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":"\\|", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"Page Up", "x":15.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},
+ {"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.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},
+ {"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.25, "y":4.75},
+
+ {"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},
+ {"label":"Space", "x":3.5, "y":5.5, "w":7},
+ {"label":"Alt", "x":10.5, "y":5.5, "w":1.25},
+ {"label":"Ctrl", "x":11.75, "y":5.5, "w":1.25},
+ {"label":"\u2190", "x":13.25, "y":5.75},
+ {"label":"\u2193", "x":14.25, "y":5.75},
+ {"label":"\u2192", "x":15.25, "y":5.75}
+ ]
+ },
+ "LAYOUT_ansi_rwkl_split_bs": {
+ "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":"PrtSc", "x":14, "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":"Insert", "x":15.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":"\\|", "x":13.5, "y":2.5, "w":1.5},
+ {"label":"Page Up", "x":15.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},
+ {"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.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},
+ {"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.25, "y":4.75},
+
+ {"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},
+ {"label":"Space", "x":3.5, "y":5.5, "w":7},
+ {"label":"Alt", "x":10.5, "y":5.5, "w":1.25},
+ {"label":"Ctrl", "x":11.75, "y":5.5, "w":1.25},
+ {"label":"\u2190", "x":13.25, "y":5.75},
+ {"label":"\u2193", "x":14.25, "y":5.75},
+ {"label":"\u2192", "x":15.25, "y":5.75}
+ ]
+ },
+ "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":"PrtSc", "x":14, "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":"Insert", "x":15.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":"Page Up", "x":15.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},
+ {"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.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":"\u2191", "x":14.25, "y":4.75},
+
+ {"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":"AltGr", "x":10, "y":5.5},
+ {"label":"GUI", "x":11, "y":5.5},
+ {"label":"Ctrl", "x":12, "y":5.5},
+ {"label":"\u2190", "x":13.25, "y":5.75},
+ {"label":"\u2193", "x":14.25, "y":5.75},
+ {"label":"\u2192", "x":15.25, "y":5.75}
+ ]
+ },
+ "LAYOUT_iso_split_bs": {
+ "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":"PrtSc", "x":14, "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},
+ {"label":"Backspace", "x":14, "y":1.5},
+ {"label":"Insert", "x":15.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":"Page Up", "x":15.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},
+ {"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.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":"\u2191", "x":14.25, "y":4.75},
+
+ {"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":"AltGr", "x":10, "y":5.5},
+ {"label":"GUI", "x":11, "y":5.5},
+ {"label":"Ctrl", "x":12, "y":5.5},
+ {"label":"\u2190", "x":13.25, "y":5.75},
+ {"label":"\u2193", "x":14.25, "y":5.75},
+ {"label":"\u2192", "x":15.25, "y":5.75}
+ ]
+ },
+ "LAYOUT_iso_rwkl": {
+ "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":"PrtSc", "x":14, "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":"Insert", "x":15.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":"Page Up", "x":15.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},
+ {"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.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":"\u2191", "x":14.25, "y":4.75},
+
+ {"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},
+ {"label":"Space", "x":3.5, "y":5.5, "w":7},
+ {"label":"AltGr", "x":10.5, "y":5.5, "w":1.25},
+ {"label":"Ctrl", "x":11.75, "y":5.5, "w":1.25},
+ {"label":"\u2190", "x":13.25, "y":5.75},
+ {"label":"\u2193", "x":14.25, "y":5.75},
+ {"label":"\u2192", "x":15.25, "y":5.75}
+ ]
+ },
+ "LAYOUT_iso_rwkl_split_bs": {
+ "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":"PrtSc", "x":14, "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},
+ {"label":"Backspace", "x":14, "y":1.5},
+ {"label":"Insert", "x":15.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":"Page Up", "x":15.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},
+ {"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.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":"\u2191", "x":14.25, "y":4.75},
+
+ {"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},
+ {"label":"Space", "x":3.5, "y":5.5, "w":7},
+ {"label":"AltGr", "x":10.5, "y":5.5, "w":1.25},
+ {"label":"Ctrl", "x":11.75, "y":5.5, "w":1.25},
+ {"label":"\u2190", "x":13.25, "y":5.75},
+ {"label":"\u2193", "x":14.25, "y":5.75},
+ {"label":"\u2192", "x":15.25, "y":5.75}
]
}
}
diff --git a/keyboards/creatkeebs/thera/keymaps/default/keymap.c b/keyboards/creatkeebs/thera/keymaps/default/keymap.c
index 4af1d96a2b..5c361175e1 100644
--- a/keyboards/creatkeebs/thera/keymaps/default/keymap.c
+++ b/keyboards/creatkeebs/thera/keymaps/default/keymap.c
@@ -1,30 +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/>.
- */
+/* 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),
+ [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_GRV, KC_1, KC_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_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_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/keymaps/default_ansi/keymap.c b/keyboards/creatkeebs/thera/keymaps/default_ansi/keymap.c
new file mode 100644
index 0000000000..1fc8870ff5
--- /dev/null
+++ b/keyboards/creatkeebs/thera/keymaps/default_ansi/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_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_GRV, KC_1, KC_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/keymaps/default_ansi_rwkl/keymap.c b/keyboards/creatkeebs/thera/keymaps/default_ansi_rwkl/keymap.c
new file mode 100644
index 0000000000..47e57abff9
--- /dev/null
+++ b/keyboards/creatkeebs/thera/keymaps/default_ansi_rwkl/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_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_GRV, KC_1, KC_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+};
diff --git a/keyboards/creatkeebs/thera/keymaps/default_ansi_rwkl_split_bs/keymap.c b/keyboards/creatkeebs/thera/keymaps/default_ansi_rwkl_split_bs/keymap.c
new file mode 100644
index 0000000000..4c4262bb44
--- /dev/null
+++ b/keyboards/creatkeebs/thera/keymaps/default_ansi_rwkl_split_bs/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_ansi_rwkl_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_GRV, KC_1, KC_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+};
diff --git a/keyboards/creatkeebs/thera/keymaps/default_ansi_split_bs/keymap.c b/keyboards/creatkeebs/thera/keymaps/default_ansi_split_bs/keymap.c
new file mode 100644
index 0000000000..090f6f5675
--- /dev/null
+++ b/keyboards/creatkeebs/thera/keymaps/default_ansi_split_bs/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_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_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_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/keymaps/default_iso/keymap.c b/keyboards/creatkeebs/thera/keymaps/default_iso/keymap.c
new file mode 100644
index 0000000000..b9fb813050
--- /dev/null
+++ b/keyboards/creatkeebs/thera/keymaps/default_iso/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_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_GRV, KC_1, KC_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_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, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+};
diff --git a/keyboards/creatkeebs/thera/keymaps/default_iso_rwkl/keymap.c b/keyboards/creatkeebs/thera/keymaps/default_iso_rwkl/keymap.c
new file mode 100644
index 0000000000..bf56fde226
--- /dev/null
+++ b/keyboards/creatkeebs/thera/keymaps/default_iso_rwkl/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_iso_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_GRV, KC_1, KC_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_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, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+};
diff --git a/keyboards/creatkeebs/thera/keymaps/default_iso_rwkl_split_bs/keymap.c b/keyboards/creatkeebs/thera/keymaps/default_iso_rwkl_split_bs/keymap.c
new file mode 100644
index 0000000000..b5b30eaa8f
--- /dev/null
+++ b/keyboards/creatkeebs/thera/keymaps/default_iso_rwkl_split_bs/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_iso_rwkl_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_GRV, KC_1, KC_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_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, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+};
diff --git a/keyboards/creatkeebs/thera/keymaps/default_iso_split_bs/keymap.c b/keyboards/creatkeebs/thera/keymaps/default_iso_split_bs/keymap.c
new file mode 100644
index 0000000000..1a2648eb10
--- /dev/null
+++ b/keyboards/creatkeebs/thera/keymaps/default_iso_split_bs/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_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_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_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_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, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+};
diff --git a/keyboards/creatkeebs/thera/readme.md b/keyboards/creatkeebs/thera/readme.md
index a03f9c184e..2f78a154fd 100644
--- a/keyboards/creatkeebs/thera/readme.md
+++ b/keyboards/creatkeebs/thera/readme.md
@@ -18,8 +18,8 @@ A 75% keyboard
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.
+* Physical reset button: Press the `QK_BOOT` button on the back of the PCB.
+* Keycode in layout: Press the key mapped to `QK_BOOT` if it is available.
### Building the Firmware
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/creatkeebs/thera/thera.h b/keyboards/creatkeebs/thera/thera.h
index 8603c3605b..403a9c7336 100644
--- a/keyboards/creatkeebs/thera/thera.h
+++ b/keyboards/creatkeebs/thera/thera.h
@@ -18,20 +18,173 @@
#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 } \
+#define ___ 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 │0E │1D │ │1E │ │1D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┤ └─┬─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │2E │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┤ ┌──┴â”3D │ ISO Enter
+ * LShift │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │3E │ │2D │ │
+ * ┌────────┠├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ └───┘ └───┴────┘
+ * │40 │ │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │┌───â”
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┘│4D │
+ * │50 │51 │52 │56 │59 │5A │5B │┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┘│5C │5D │5E │
+ * └───┴───┴───┘
+ *
+ * ┌────┬────┬────┬────────────────────────┬─────┬─────â”
+ * │50 │51 │52 │56 │59 │5B │ RWKL
+ * └────┴────┴────┴────────────────────────┴─────┴─────┘ both layouts
+ * ┌────┬───┬────┬───────────────────────────┬────┬────┠use same matrix
+ * │50 │51 │52 │56 │59 │5B │
+ * └────┴───┴────┴───────────────────────────┴────┴────┘
+ */
+
+#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, K0E, 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, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, \
+ K50, K51, K52, K56, 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, ___, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D, K5E } \
+}
+
+#define LAYOUT_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, 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, K4C, K4D, \
+ K50, K51, K52, K56, K59, K5A, K5B, K5C, K5D, K5E \
+) { \
+ { 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, 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, K4C, K4D, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D, K5E } \
+}
+
+#define LAYOUT_ansi_split_bs( \
+ 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, K0E, 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, K4C, K4D, \
+ K50, K51, K52, K56, 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, ___, K3D, K3E }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D, K5E } \
+}
+
+#define LAYOUT_ansi_rwkl( \
+ 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, 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, K4C, K4D, \
+ K50, K51, K52, K56, K59, K5B, K5C, K5D, K5E \
+) { \
+ { 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, 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, K4C, K4D, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, ___, K5B, K5C, K5D, K5E } \
+}
+
+#define LAYOUT_ansi_rwkl_split_bs( \
+ 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, K0E, 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, K4C, K4D, \
+ K50, K51, K52, K56, K59, 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, ___, K3D, K3E }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, ___, K5B, K5C, K5D, K5E } \
+}
+
+#define LAYOUT_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, 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, K2D, K3D, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, \
+ K50, K51, K52, K56, K59, K5A, K5B, K5C, K5D, K5E \
+) { \
+ { 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, K2D, 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, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D, K5E } \
+}
+
+#define LAYOUT_iso_split_bs( \
+ 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, K0E, 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, K2D, K3D, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, \
+ K50, K51, K52, K56, 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, ___, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D, K5E } \
+}
+
+#define LAYOUT_iso_rwkl( \
+ 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, K2D, K3D, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, \
+ K50, K51, K52, K56, K59, K5B, K5C, K5D, K5E \
+) { \
+ { 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, K2D, 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, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, ___, K5B, K5C, K5D, K5E } \
+}
+
+#define LAYOUT_iso_rwkl_split_bs( \
+ 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, K0E, 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, K2D, K3D, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, \
+ K50, K51, K52, K56, K59, 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, ___, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, K59, ___, K5B, K5C, K5D, K5E } \
}
diff --git a/keyboards/crimsonkeyboards/resume1800/config.h b/keyboards/crimsonkeyboards/resume1800/config.h
index d6552b744e..d1b0903ce6 100644
--- a/keyboards/crimsonkeyboards/resume1800/config.h
+++ b/keyboards/crimsonkeyboards/resume1800/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xC18B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CrimsonKeyboards
-#define PRODUCT Resume1800
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 20
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { A5, A0, A1, B1, B2, B0 }
#define MATRIX_COL_PINS { A2, B3, A3, B4, A4, D1, D5, D6, A6, A7, C7, C6, C5, C4, D7, C3, C2, C1, C0, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/crimsonkeyboards/resume1800/info.json b/keyboards/crimsonkeyboards/resume1800/info.json
index e36cc5050b..b53be64e9d 100644
--- a/keyboards/crimsonkeyboards/resume1800/info.json
+++ b/keyboards/crimsonkeyboards/resume1800/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Resume1800",
+ "manufacturer": "CrimsonKeyboards",
"url": "",
"maintainer": "CrimsonKeyboards",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xC18B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_resume1800_ansi_all": {
"layout": [
diff --git a/keyboards/crin/config.h b/keyboards/crin/config.h
index 4561a05df0..04af4a21e2 100644
--- a/keyboards/crin/config.h
+++ b/keyboards/crin/config.h
@@ -17,14 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6400
-#define PRODUCT_ID 0xCC11
-#define DEVICE_VER 0x0001
-
-#define MANUFACTURER Bachoo
-#define PRODUCT Crin
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
diff --git a/keyboards/crin/info.json b/keyboards/crin/info.json
index 94f57c48bf..9ce4fbfafb 100644
--- a/keyboards/crin/info.json
+++ b/keyboards/crin/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Crin",
+ "manufacturer": "Bachoo",
"url": "https://bachoo.com",
"maintainer": "KnoblesseOblige",
+ "usb": {
+ "vid": "0x6400",
+ "pid": "0xCC11",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_default": "LAYOUT_all",
"LAYOUT_tsangan": "LAYOUT_ansi_tsangan"
diff --git a/keyboards/crin/readme.md b/keyboards/crin/readme.md
index 1912cee1f7..bc39ca6ac8 100644
--- a/keyboards/crin/readme.md
+++ b/keyboards/crin/readme.md
@@ -17,7 +17,7 @@ Flashing example for this keyboard:
To reset the board into bootloader mode, do one of the following:
* Hold Esc while plugging the PCB in, if Bootmagic Lite is enabled (also erases persistent settings).
-* Press the RESET keycode, if programmed on the keymap (Fn+R by default).
+* Press the `QK_BOOT` keycode, if programmed on the keymap (Fn+R by default).
* Slide the switch just below the reset button to the left and press the reset button.
* Please note that you must slide it back to the right for the PCB to boot QMK again.
diff --git a/keyboards/crkbd/config.h b/keyboards/crkbd/config.h
index 02732819f9..21f3aa0ab4 100644
--- a/keyboards/crkbd/config.h
+++ b/keyboards/crkbd/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4653
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER foostan
-#define PRODUCT Corne
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/crkbd/info.json b/keyboards/crkbd/info.json
index 9a73ec68e9..354d33618c 100644
--- a/keyboards/crkbd/info.json
+++ b/keyboards/crkbd/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "crkbd rev. 1",
+ "keyboard_name": "Corne",
+ "manufacturer": "foostan",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4653",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x6_3": {
"layout": [
diff --git a/keyboards/crkbd/keymaps/ardakilic/keymap.c b/keyboards/crkbd/keymaps/ardakilic/keymap.c
index a611c59223..f5cd85eb12 100644
--- a/keyboards/crkbd/keymaps/ardakilic/keymap.c
+++ b/keyboards/crkbd/keymaps/ardakilic/keymap.c
@@ -229,7 +229,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ADJUST LAYER
[_TPL] = LAYOUT_wrapper( \
//,-----------------------------------------------------. ,----------------------------------------------------.
- | RESET | EEPRST | | | | | | | | | | | |
+ | QK_BOOT | EEPRST | | | | | | | | | | | |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
| RGBTog | HUEâ–² | SATâ–² | BRGHTâ–² | | | | | | | | | |
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+-------|
@@ -241,7 +241,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
*/
[_ADJUST] = LAYOUT_split_3x6_3(
- RESET, EEP_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, 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
diff --git a/keyboards/crkbd/keymaps/bermeo/config.h b/keyboards/crkbd/keymaps/bermeo/config.h
new file mode 100644
index 0000000000..567497afbe
--- /dev/null
+++ b/keyboards/crkbd/keymaps/bermeo/config.h
@@ -0,0 +1,126 @@
+/*
+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_RIGHT
+// #define EE_HANDS
+
+// #define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 150
+// #define RETRO_TAPPING
+// #define IGNORE_MOD_TAP_INTERRUPT
+// #define PERMISSIVE_HOLD
+
+#ifdef RGBLIGHT_ENABLE
+# undef RGBLED_NUM
+# 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_SLEEP
+# define RGBLIGHT_SPLIT
+# define RGBLIGHT_LIMIT_VAL 120
+# define RGBLIGHT_HUE_STEP 6
+# define RGBLIGHT_SAT_STEP 6
+# define RGBLIGHT_VAL_STEP 6
+# define RGBLIGHT_SLEEP
+# define RGBLIGHT_TIMEOUT 75000
+#endif
+
+#ifdef OLED_ENABLE
+# define SPLIT_LAYER_STATE_ENABLE
+# define SPLIT_LED_STATE_ENABLE
+# define SPLIT_MODS_ENABLE
+# define SPLIT_WPM_ENABLE
+# define SPLIT_OLED_ENABLE
+# define OLED_FONT_H "keyboards/crkbd/keymaps/soundmonster/glcdfont.c"
+# define OLED_DISABLE_TIMEOUT
+# define OLED_TIMEOUT 150000
+# define OLED_BRIGHTNESS 255
+# define OLED_FADE_OUT
+# define OLED_FADE_OUT_INTERVAL 15
+#endif
+
+#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_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_HUE_STEP 8
+# define RGB_MATRIX_SAT_STEP 8
+# 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. */
+# 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_VAL
+# 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
+# undef ENABLE_RGB_MATRIX_CYCLE_ALL
+# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# 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_JELLYBEAN_RAINDROPS
+# 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_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
+# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
diff --git a/keyboards/crkbd/keymaps/bermeo/glcdfont.c b/keyboards/crkbd/keymaps/bermeo/glcdfont.c
new file mode 100644
index 0000000000..588ecfd8c8
--- /dev/null
+++ b/keyboards/crkbd/keymaps/bermeo/glcdfont.c
@@ -0,0 +1,232 @@
+#include "progmem.h"
+
+// Corne 8x6 font with QMK Firmware Logo
+// Online editor: https://helixfonteditor.netlify.com/
+// See also: https://github.com/soundmonster/glcdfont_converter
+
+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, 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, 0xC0, 0xE0, 0xF0, 0xF8,
+0xF8, 0x18, 0x00, 0xC0, 0xF0, 0xFC,
+0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00,
+0x00, 0xF8, 0x04, 0x22, 0x52, 0xE2,
+0x42, 0x42, 0x42, 0xE2, 0x52, 0x22,
+0x22, 0x22, 0x42, 0x82, 0x02, 0x02,
+0x22, 0x22, 0x02, 0x04, 0xF8, 0x00,
+0x00, 0xF8, 0x04, 0x02, 0x02, 0x82,
+0x42, 0x22, 0x42, 0x82, 0x02, 0x02,
+0x02, 0x82, 0x42, 0x22, 0x12, 0x22,
+0x42, 0x82, 0x02, 0x04, 0xF8, 0x00,
+0x00, 0xF8, 0xFC, 0xDE, 0xAE, 0x1E,
+0xBE, 0xBE, 0xBE, 0x1E, 0xAE, 0xDE,
+0xDE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE,
+0xDE, 0xDE, 0xFE, 0xFC, 0xF8, 0x00,
+0x00, 0xF8, 0xFC, 0xFE, 0xFE, 0x7E,
+0xBE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x80, 0x80, 0x40, 0x40, 0x20, 0x20,
+0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
+0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
+0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0,
+0xF0, 0xF0, 0xF8, 0xF8, 0xF0, 0xF0,
+0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80,
+0x80, 0x80, 0x40, 0x40, 0x20, 0x20,
+0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
+0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
+0x80, 0x80, 0x40, 0xC0, 0x60, 0xA0,
+0x50, 0xB0, 0x58, 0xA8, 0x50, 0xB0,
+0x60, 0xA0, 0x40, 0xC0, 0x80, 0x80,
+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, 0x1F, 0x20, 0x44, 0x4A, 0x47,
+0x42, 0x42, 0x42, 0x47, 0x4A, 0x44,
+0x40, 0x40, 0x40, 0x40, 0x41, 0x42,
+0x44, 0x44, 0x40, 0x20, 0x1F, 0x00,
+0x00, 0x1F, 0x20, 0x40, 0x41, 0x40,
+0x40, 0x40, 0x40, 0x40, 0x41, 0x40,
+0x41, 0x41, 0x4F, 0x48, 0x48, 0x48,
+0x4F, 0x41, 0x41, 0x20, 0x1F, 0x00,
+0x00, 0x1F, 0x3F, 0x7B, 0x75, 0x78,
+0x7D, 0x7D, 0x7D, 0x78, 0x75, 0x7B,
+0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D,
+0x7B, 0x7B, 0x7F, 0x3F, 0x1F, 0x00,
+0x00, 0x1F, 0x3F, 0x7F, 0x7E, 0x7F,
+0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x88, 0x88, 0x5D, 0x5D, 0x3E, 0x3E,
+0x7C, 0x7C, 0xF8, 0xF8, 0x7C, 0x7C,
+0x3E, 0x3E, 0x5D, 0x5D, 0x88, 0x88,
+0x88, 0x88, 0x55, 0x55, 0x23, 0x23,
+0x47, 0x47, 0x8F, 0x8F, 0x47, 0x47,
+0x23, 0x23, 0x55, 0x55, 0x88, 0x88,
+0x88, 0x88, 0xD5, 0xD5, 0xE2, 0xE2,
+0xC4, 0xC4, 0x88, 0x88, 0xC4, 0xC4,
+0xE2, 0xE2, 0xD5, 0xD5, 0x88, 0x88,
+0x88, 0x88, 0x5D, 0xD5, 0x6B, 0xB6,
+0x6D, 0xD6, 0xAD, 0xDA, 0x6D, 0xD6,
+0x6B, 0xB6, 0x5D, 0xD5, 0x88, 0x88,
+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,
+0x04, 0xF8, 0x00, 0x00, 0xF8, 0x04,
+0x20, 0x1F, 0x00, 0x00, 0x1F, 0x20,
+0xFC, 0xF8, 0x00, 0x00, 0xF8, 0x04,
+0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x20,
+0x04, 0xF8, 0x00, 0x00, 0xF8, 0xFC,
+0x20, 0x1F, 0x00, 0x00, 0x1F, 0x3F,
+0xFC, 0xF8, 0x00, 0x00, 0xF8, 0xFC,
+0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x3F,
+0xFE, 0x7E, 0xBE, 0xDE, 0xEE, 0xDE,
+0xBE, 0x7E, 0xFE, 0xFC, 0xF8, 0x00,
+0x7E, 0x7E, 0x70, 0x77, 0x77, 0x77,
+0x70, 0x7E, 0x7E, 0x3F, 0x1F, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+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, 0x01, 0x01, 0x02, 0x02,
+0x04, 0x04, 0x08, 0x08, 0x04, 0x04,
+0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x01, 0x03, 0x03,
+0x07, 0x07, 0x0F, 0x0F, 0x07, 0x07,
+0x03, 0x03, 0x01, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x01, 0x03, 0x02,
+0x05, 0x06, 0x0D, 0x0A, 0x05, 0x06,
+0x03, 0x02, 0x01, 0x01, 0x00, 0x00
+};
diff --git a/keyboards/crkbd/keymaps/bermeo/keymap.c b/keyboards/crkbd/keymaps/bermeo/keymap.c
new file mode 100644
index 0000000000..ad1dc92450
--- /dev/null
+++ b/keyboards/crkbd/keymaps/bermeo/keymap.c
@@ -0,0 +1,596 @@
+// Copyright 2022 Guilherme Bermêo (bermeo.dev)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#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 {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _NUMP,
+};
+
+uint8_t mod_state;
+
+bool isBarking = false;
+bool isJumping = false;
+bool showedJump = true;
+bool isSneaking = false;
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST,
+ CEDILHA, // ç direct key
+ AO, // ã direct key
+ ASPAS, // " direct key
+
+};
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {[_QWERTY] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ LCTL_T(KC_F3), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_GRAVE,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ LALT_T(KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENTER,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ LSFT_T(KC_LEFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RGUI_T(KC_RIGHT),
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ LGUI_T(KC_DOWN), MO(1), KC_SPC, KC_BSPC, MO(2), RSFT_T(KC_UP)
+ // `--------------------------' `--------------------------'
+ ),
+
+[_LOWER] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ LCTL_T(KC_F5), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ESCAPE,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ LCTL(LGUI(KC_SPC)), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_ENT, KC_LBRC, KC_RBRC, KC_BSLS, KC_QUOT, KC_COLON, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ LALT(KC_LEFT), KC_F1, KC_F2, KC_C, KC_V, KC_BSPC, KC_MINS, KC_EQL, KC_LT, KC_GT, KC_QUESTION, LALT(KC_RIGHT),
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ LGUI_T(KC_PAGE_DOWN), _______, KC_SPC, LALT(KC_BSPC), TG(3), RSFT_T(KC_PAGE_UP)
+ // `--------------------------' `--------------------------'
+ ),
+
+[_RAISE] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ LCTL_T(KC_F4), KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILDE,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ LALT_T(KC_TAB), AO, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_PIPE, ASPAS, KC_COLON, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ LALT(KC_LEFT), XXXXXXX, XXXXXXX, CEDILHA, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LT, KC_GT, KC_QUESTION, LALT(KC_RIGHT),
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ LGUI_T(KC_END), TG(3), KC_SPC, KC_DEL, _______, RSFT_T(KC_HOME)
+ // `--------------------------' `--------------------------'
+ ),
+
+[_NUMP] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ RGB_TOG, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PSLS,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, KC_PDOT, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_NO,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ TG(3), TG(3), TG(3), KC_BSPC, TG(3), KC_P0
+ // `--------------------------' `--------------------------'
+ )};
+
+//Per key lights
+void rgb_matrix_indicators_user(void) {
+#ifdef RGB_MATRIX_ENABLE
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ isSneaking = false;
+ mod_state = get_mods();
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ if (mod_state & MOD_MASK_SHIFT) {
+ isBarking = true;
+ rgb_matrix_set_color(52, 255, 255, 255);
+ rgb_matrix_set_color(i, 255, 150, 0);
+ } else if (mod_state & MOD_MASK_GUI || mod_state & MOD_MASK_CTRL) {
+ isBarking = true;
+ rgb_matrix_set_color(15, 255, 0, 0);
+ switch (i) {
+ case 0 ... 5: // underglow left side
+ case 9: // cmd + T white (new tab)
+ case 11: // cmd + F white (find)
+ case 18: // cmd + W white (close tab)
+ case 19: // cmd + S white (save)
+ case 21: // cmd + Z white (undo)
+ case 22: // cmd + A white (select all)
+ case 27 ... 32: // underglow right side
+ case 43: // cmd + K white (comment for desktop remote)
+ case 48: // cmd + / white (comment line)
+ rgb_matrix_set_color(i, 255, 255, 255); // white
+ break;
+ case 6: // space bar off
+ case 24 ... 26: // left column off
+ case 33: // backspace off
+ case 41: // shift off
+ case 51 ... 53: // right column off
+ rgb_matrix_set_color(i, 0, 0, 0); //off
+ break;
+ }
+ if (mod_state & MOD_MASK_GUI) {
+ rgb_matrix_set_color(12, 255, 255, 255); // white V key
+ rgb_matrix_set_color(15, 255, 255, 255); // white C key
+ rgb_matrix_set_color(20, 255, 255, 255); // white X key
+ } else {
+ }
+ } else if (mod_state & MOD_MASK_ALT) {
+ isBarking = true;
+ } else {
+ isBarking = false;
+ rgb_matrix_set_color(14, 0, 0, 0); // command key off
+ }
+ }
+ rgb_matrix_set_color(13, 23, 181, 255); // cyan layer
+ rgb_matrix_set_color(40, 255, 33, 0); // orange layer
+ break;
+
+ case _RAISE:
+ isSneaking = true;
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ switch (i) {
+ case 7: // B key off
+ case 8: // G key off
+ case 11: // F key off
+ case 12: // V key off
+ case 16: // D key off
+ case 19 ... 21: // S, X, Z keys off
+ case 25: // tab key off
+ case 26: // shift key off
+ case 52 ... 53: // right column off
+ rgb_matrix_set_color(i, 0, 0, 0); // off
+ break;
+ case 15: // Ç key
+ case 22: // Ã key
+ case 24: // Launch (F4)
+ case 40: // Active layer
+ rgb_matrix_set_color(i, 255, 255, 255); // white
+ break;
+ case 13: // active layer
+ rgb_matrix_set_color(i, 0, 255, 0); // green
+ break;
+ case 42: // , shifted key
+ case 47 ... 49: // . / ; shifted keys
+ rgb_matrix_set_color(i, 255, 214, 0); // yellow
+ break;
+ default:
+ rgb_matrix_set_color(i, 255, 33, 0); // orange
+ }
+ }
+ break;
+
+ case _LOWER:
+ isSneaking = true;
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ switch (i) {
+ case 7: // Delete key
+ case 51: // ESC key
+ rgb_matrix_set_color(i, 255, 0, 0); // red
+ break;
+ case 12: // V key off
+ case 15: // C key off
+ case 20: // X key off
+ case 21: // Z key off
+
+ case 26: // shift key off
+ case 52 ... 53: // right column off
+ rgb_matrix_set_color(i, 0, 0, 0); // off
+ break;
+ case 11: // Right arrow key
+ case 13: // Active layer
+ case 16: // Up arrow key
+ case 19: // Down arrow key
+ case 22: // Left arrow key
+ case 24: // Print
+ rgb_matrix_set_color(i, 255, 255, 255); // white
+ break;
+ case 8: // Enter key
+ case 40: // Activate Numpad
+ rgb_matrix_set_color(i, 0, 255, 0); // green
+ break;
+ case 42: // , shifted key
+ case 47 ... 49: // . / ; shifted keys
+ case 25: // opens emoji dialog (on macOS)
+ rgb_matrix_set_color(i, 255, 214, 0); // yellow
+ break;
+ default:
+ rgb_matrix_set_color(i, 23, 181, 255); // cyan
+ }
+ }
+
+ break;
+
+ case _NUMP:
+ isSneaking = true;
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ switch (i) {
+ case 12: // RGB speed-
+ case 15: // RGB brigthness-
+ case 20: // RGB saturation-
+ case 21: // RGB hue-
+ case 49: // Numpad -
+ case 51: // Numpad /
+ rgb_matrix_set_color(i, 255, 0, 0); // red
+ break;
+ case 8 ... 10: // G T R off
+ case 17: // E off
+ case 18: // W off
+ case 23: // Q off
+ case 25: // Tab off
+ case 26: // LShift off
+ case 33: // Backspace off
+ case 35: // H off
+ case 36: // Y off
+ case 53: // RShift off
+ rgb_matrix_set_color(i, 0, 0, 0); // off
+ break;
+ case 6: // Space bar off
+ case 13: // Return to default layer
+ case 16: // RGB brigthness+
+ case 24: // RGB toggle
+ case 37 ... 47: // Numpad numbers
+ case 52: // Enter key
+ rgb_matrix_set_color(i, 255, 255, 255); // white
+ break;
+ case 11: // RGB speed+
+ case 19: // RGB saturation+
+ case 22: // RGB hue+
+ case 48: // Numpad +
+ rgb_matrix_set_color(i, 0, 255, 0); // green
+ break;
+ case 34: // . numpad key
+ rgb_matrix_set_color(i, 255, 214, 0); // yellow
+ break;
+ }
+ rgb_matrix_set_color(13, 23, 181, 255); // Activate cyan layer
+ rgb_matrix_set_color(40, 255, 33, 0); // Activate orange layer
+ rgb_matrix_set_color(50, 0, 33, 255); // Numpad *
+ rgb_matrix_set_color(14, 0, 255, 0); // Green layer active
+ }
+ }
+};
+#endif
+
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_270;
+}
+
+/* KEYBOARD PET START */
+/* settings */
+# define MIN_WALK_SPEED 10
+# define MIN_RUN_SPEED 60
+/* advanced settings */
+# define ANIM_FRAME_DURATION 100 // 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;
+/* 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;
+ /* draw */
+ if (isBarking) {
+ 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();
+ }
+}
+
+void render_mod_status_gui_alt(uint8_t modifiers) {
+ static const char PROGMEM gui_off_1[] = {0x85, 0x86, 0};
+ static const char PROGMEM gui_off_2[] = {0xa5, 0xa6, 0};
+ static const char PROGMEM gui_on_1[] = {0x8d, 0x8e, 0};
+ static const char PROGMEM gui_on_2[] = {0xad, 0xae, 0};
+ static const char PROGMEM alt_off_1[] = {0x87, 0x88, 0};
+ static const char PROGMEM alt_off_2[] = {0xa7, 0xa8, 0};
+ static const char PROGMEM alt_on_1[] = {0x8f, 0x90, 0};
+ static const char PROGMEM alt_on_2[] = {0xaf, 0xb0, 0};
+
+ // fillers between the modifier icons bleed into the icon frames
+ static const char PROGMEM off_off_1[] = {0xc5, 0};
+ static const char PROGMEM off_off_2[] = {0xc6, 0};
+ static const char PROGMEM on_off_1[] = {0xc7, 0};
+ static const char PROGMEM on_off_2[] = {0xc8, 0};
+ static const char PROGMEM off_on_1[] = {0xc9, 0};
+ static const char PROGMEM off_on_2[] = {0xca, 0};
+ static const char PROGMEM on_on_1[] = {0xcb, 0};
+ static const char PROGMEM on_on_2[] = {0xcc, 0};
+
+ if (modifiers & MOD_MASK_GUI) {
+ oled_write_P(gui_on_1, false);
+ } else {
+ oled_write_P(gui_off_1, false);
+ }
+ if ((modifiers & MOD_MASK_GUI) && (modifiers & MOD_MASK_ALT)) {
+ oled_write_P(on_on_1, false);
+ } else if (modifiers & MOD_MASK_GUI) {
+ oled_write_P(on_off_1, false);
+ } else if (modifiers & MOD_MASK_ALT) {
+ oled_write_P(off_on_1, false);
+ } else {
+ oled_write_P(off_off_1, false);
+ }
+ if (modifiers & MOD_MASK_ALT) {
+ oled_write_P(alt_on_1, false);
+ } else {
+ oled_write_P(alt_off_1, false);
+ }
+ if (modifiers & MOD_MASK_GUI) {
+ oled_write_P(gui_on_2, false);
+ } else {
+ oled_write_P(gui_off_2, false);
+ }
+ if (modifiers & MOD_MASK_GUI & MOD_MASK_ALT) {
+ oled_write_P(on_on_2, false);
+ } else if (modifiers & MOD_MASK_GUI) {
+ oled_write_P(on_off_2, false);
+ } else if (modifiers & MOD_MASK_ALT) {
+ oled_write_P(off_on_2, false);
+ } else {
+ oled_write_P(off_off_2, false);
+ }
+ if (modifiers & MOD_MASK_ALT) {
+ oled_write_P(alt_on_2, false);
+ } else {
+ oled_write_P(alt_off_2, false);
+ }
+}
+
+void render_mod_status_ctrl_shift(uint8_t modifiers) {
+ static const char PROGMEM ctrl_off_1[] = {0x89, 0x8a, 0};
+ static const char PROGMEM ctrl_off_2[] = {0xa9, 0xaa, 0};
+ static const char PROGMEM ctrl_on_1[] = {0x91, 0x92, 0};
+ static const char PROGMEM ctrl_on_2[] = {0xb1, 0xb2, 0};
+ static const char PROGMEM shift_off_1[] = {0x8b, 0x8c, 0};
+ static const char PROGMEM shift_off_2[] = {0xab, 0xac, 0};
+ static const char PROGMEM shift_on_1[] = {0xcd, 0xce, 0};
+ static const char PROGMEM shift_on_2[] = {0xcf, 0xd0, 0};
+
+ // fillers between the modifier icons bleed into the icon frames
+ static const char PROGMEM off_off_1[] = {0xc5, 0};
+ static const char PROGMEM off_off_2[] = {0xc6, 0};
+ static const char PROGMEM on_off_1[] = {0xc7, 0};
+ static const char PROGMEM on_off_2[] = {0xc8, 0};
+ static const char PROGMEM off_on_1[] = {0xc9, 0};
+ static const char PROGMEM off_on_2[] = {0xca, 0};
+ static const char PROGMEM on_on_1[] = {0xcb, 0};
+ static const char PROGMEM on_on_2[] = {0xcc, 0};
+
+ if (modifiers & MOD_MASK_CTRL) {
+ oled_write_P(ctrl_on_1, false);
+ } else {
+ oled_write_P(ctrl_off_1, false);
+ }
+ if ((modifiers & MOD_MASK_CTRL) && (modifiers & MOD_MASK_SHIFT)) {
+ oled_write_P(on_on_1, false);
+ } else if (modifiers & MOD_MASK_CTRL) {
+ oled_write_P(on_off_1, false);
+ } else if (modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(off_on_1, false);
+ } else {
+ oled_write_P(off_off_1, false);
+ }
+ if (modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(shift_on_1, false);
+ } else {
+ oled_write_P(shift_off_1, false);
+ }
+ if (modifiers & MOD_MASK_CTRL) {
+ oled_write_P(ctrl_on_2, false);
+ } else {
+ oled_write_P(ctrl_off_2, false);
+ }
+ if (modifiers & MOD_MASK_CTRL & MOD_MASK_SHIFT) {
+ oled_write_P(on_on_2, false);
+ } else if (modifiers & MOD_MASK_CTRL) {
+ oled_write_P(on_off_2, false);
+ } else if (modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(off_on_2, false);
+ } else {
+ oled_write_P(off_off_2, false);
+ }
+ if (modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(shift_on_2, false);
+ } else {
+ oled_write_P(shift_off_2, false);
+ }
+}
+
+void render_layer_state(void) {
+ static const char PROGMEM default_layer[] = {0x20, 0x94, 0x95, 0x96, 0x20, 0x20, 0xb4, 0xb5, 0xb6, 0x20, 0x20, 0xd4, 0xd5, 0xd6, 0x20, 0};
+ static const char PROGMEM raise_layer[] = {0x20, 0x97, 0x98, 0x99, 0x20, 0x20, 0xb7, 0xb8, 0xb9, 0x20, 0x20, 0xd7, 0xd8, 0xd9, 0x20, 0};
+ static const char PROGMEM lower_layer[] = {0x20, 0x9a, 0x9b, 0x9c, 0x20, 0x20, 0xba, 0xbb, 0xbc, 0x20, 0x20, 0xda, 0xdb, 0xdc, 0x20, 0};
+ static const char PROGMEM nump_layer[] = {0x20, 0x9d, 0x9e, 0x9f, 0x20, 0x20, 0xbd, 0xbe, 0xbf, 0x20, 0x20, 0xdd, 0xde, 0xdf, 0x20, 0};
+ if (layer_state_is(_NUMP)) {
+ oled_write_P(nump_layer, false);
+ } else if (layer_state_is(_LOWER)) {
+ oled_write_P(lower_layer, false);
+ } else if (layer_state_is(_RAISE)) {
+ oled_write_P(raise_layer, false);
+ } else {
+ oled_write_P(default_layer, false);
+ }
+}
+
+// renders on oled
+bool oled_task_user(void) {
+ current_wpm = get_current_wpm();
+ // led_usb_state = host_keyboard_led_state();
+
+ if (is_keyboard_left()) {
+ oled_set_cursor(0, 2);
+ if (isSneaking) {
+ render_layer_state();
+ } else {
+ for (size_t i = 0; i < 7; i++) {
+ oled_write(" ", false);
+ }
+ }
+ render_luna(0, 12);
+ } else {
+ oled_set_cursor(0, 6);
+ render_layer_state();
+ oled_set_cursor(0, 11);
+ if (mod_state) {
+ render_mod_status_gui_alt(get_mods());
+ render_mod_status_ctrl_shift(get_mods());
+ } else {
+ for (size_t i = 0; i < 5; i++) {
+ oled_write(" ", false);
+ }
+ }
+ }
+ return false;
+}
+
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+ switch (keycode) {
+ // ç key
+ case CEDILHA:
+ if (record->event.pressed) {
+ register_code(KC_QUOT);
+ unregister_code(KC_QUOT);
+ register_code(KC_C);
+ unregister_code(KC_C);
+ }
+ break;
+ return false;
+
+ // ã key
+ case AO:
+ if (record->event.pressed) {
+ register_code(KC_LSFT);
+ register_code(KC_GRV);
+ unregister_code(KC_LSFT);
+ unregister_code(KC_GRV);
+ register_code(KC_A);
+ unregister_code(KC_A);
+ }
+ break;
+ return false;
+
+ // direct " key
+ case ASPAS:
+ if (record->event.pressed) {
+ register_code(KC_LSFT);
+ register_code(KC_QUOT);
+ register_code(KC_SPC);
+ unregister_code(KC_SPC);
+ unregister_code(KC_QUOT);
+ unregister_code(KC_LSFT);
+ }
+ break;
+ return false;
+
+ // Luna jumping on space
+ case KC_SPC:
+ if (record->event.pressed) {
+ isJumping = true;
+ showedJump = false;
+ } else {
+ isJumping = false;
+ }
+ break;
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/crkbd/keymaps/bermeo/readme.md b/keyboards/crkbd/keymaps/bermeo/readme.md
new file mode 100644
index 0000000000..a9b0d4ff09
--- /dev/null
+++ b/keyboards/crkbd/keymaps/bermeo/readme.md
@@ -0,0 +1,158 @@
+# Bermeo Layout for Corne
+
+## Features
+
+### *Corne for neo-latin creatives*
+
+* Usable with left hand only (Figma, Adobe, Spline, etc) to combo with mouse.
+* Delete and enter keys on the left side.
+* Z and X on left side with lower layer used to control the monitor's brigtness.
+* Arrow keys on left hand (vim logic)
+* Accentuations used in Romance (neo-latin) languages like Spanish, Portuguese, French and Italian - ` ~ ^ ' -.
+
+#### Direct ç and ã keys
+
+The termination "tion" (eg. action) in portuguese is "ção" (eg. ação). This layout is optimized to use the less keys possible to write words with this termination.
+
+Compared to the `crkbd:default` layout the difference to output ção would be half of the interations:
+
+| crkbd:bermeo | <sub>`MO(2)`</sub>, `KC_C`, `KC_A`, <sup>`MO(2)`</sup> |
+|:--|:--|
+| crkbd:default | `KC_QUOT`, `KC_C`, <sub>`MO(2)`</sub>, <sub>`KC_SFT`</sub>, `KC_GRV`, <sup>`MO(2)`</sup>, <sup>`KC_SFT`</sup>, `KC_A` |
+
+[ <sub>`hold key`</sub> , <sup>`release key`</sup> ]
+
+### Modern OLED Support
+
+* Non-intrusive OLED layer indicator.
+* Non-intrusive OLED modifier indicators ⌘ ⇧ ⌥ ⌃.
+* Fully animated Luna on left side.
+
+### Full per-key RGB Matrix support
+
+With the index of every key mapped in the table below to be used with `rgb_matrix_set_color(index, r, g, b)`;.
+
+#### Indexes of the keys
+
+|||||||||||||||
+|:--:|:--:|:--:|:--:|:--:|:--:|--|--|:--:|:--:|:--:|:--:|:--:|:--:|
+| 24 | 23 | 18 | 17 | 10 | 9 ||| 36 | 37 | 44 | 45 | 50 | 51 |
+| 25 | 22 | 19 | 16 | 11 | 8 ||| 35 | 38 | 43 | 46 | 49 | 52 |
+| 26 | 21 | 20 | 15 | 12 | 7 ||| 34 | 39 | 42 | 47 | 48 | 53 |
+||||| 14 | 13 | 6 | 33 | 40 | 41 |||||
+
+Each layer uses the LED `14` as an visual indicator:
+
+* âš«ï¸ Default layer
+* 🔵 Lower (0)
+* 🟠 Raise (1)
+* 🟢 Numpad (2)
+* âšªï¸ Control and Command
+* 🟡 Shift
+
+## Mod-taps
+
+For convenience, QMK includes some Mod-Tap shortcuts to make common combinations more compact in your keymap:
+| Key | Description |
+| :-- | --: |
+| LCTL_T(kc) | Left Control when held, kc when tapped. |
+| LSFT_T(kc) | Left Shift when held, kc when tapped. |
+| LALT_T(kc) | Left Alt when held, kc when tapped. |
+| ALT(kc) | Left Alt + kc when tapped. |
+| LGUI_T(kc) | Left GUI when held, kc when tapped. |
+| RSFT_T(kc) | Right Shift when held, kc when tapped. |
+| RGUI_T(kc) | Right GUI when held, kc when tapped. |
+
+## Macros
+
+|Layer | Name | Description | Keys |
+| :--: | --: | -- | --: |
+| 🟠 | CEDILLA | Directly outputs ç | ' + c |
+| 🟠 | AO | Directly outputs ã | shift + ` + a |
+| 🟠 | ASPAS | Outputs ", since diaeresis[^1] are less used than " (for coding and quoting) | shift + ' + space |
+
+## Layers
+
+### QWERTY
+
+|||||||||||||||
+|:--|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|--:|
+| LCTL_T(F3[^2]) | Q | W | E | R | T ||| Y | U | I | O | P | GRAVE |
+| LALT_T(TAB) | A | S | D | F | G ||| H | J | K | L | ; | ↵ |
+| LSFT_T(&larr;) | Z | X | C | V | B ||| N | M | , | . | / | RGUI_T(&rarr;) |
+||||| LGUI_T(&darr;) | MO(1) | SPACE | ⌫ | MO(2)| RSFT_T( &uarr;) |||||
+
+
+### LOWER 🔵
+
+|||||||||||||||
+|:--|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|--:|
+|CTL_T(F5[^3]) | 1 | 2 | 3 | 4 | 5 ||| 6 | 7 | 8 | 9 | 0 | ESCAPE |
+|LCTL(LGUI(KC_SPC))[^4] | &larr; | &darr; | &uarr; | &rarr; | ↵ ||| [ | ] | \ | ' | : | ↵ |
+|ALT(&larr;) | F1[^5] | F2[^6] | C | V | ⌫ ||| - | = | < | > | ? | LALT(&rarr;) |
+||||| LGUI_T(PAGE_DOWN) | _ | SPACE | LALT(⌫) | TG(3) | RSFT_T(PAGE_UP) |||||
+
+### RAISE 🟠
+
+|||||||||||||||
+|:--|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|--:|
+LCTL_T(F4[^7]) | ! | @ | # | $ | % ||| ˆ | & | * | ( | ) | ˜ |
+LALT_T(TAB) | Ã[^8] | | | | ||| { | } | &#124; | "[^9] | : | ↵ |
+LALT(&larr;) | | | Ç[^10] | | ||| _ | + | < | > | ? | LALT(&rarr;) |
+||||| LGUI_T(END) | TG(3) | SPACE| DEL| _ | RSFT_T(HOME) |||||
+
+### NUMPAD 🟢
+
+|||||||||||||||
+|:--|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|--:|
+| RGB_TOG || | | |||| | 7 | 8 | 9 | * | / |
+|| RGB_HUI | RGB_SAI | RGB_VAI | RGB_SPI |||| | 4 | 5 | 6 | - | ↵ |
+|| RGB_HUD | RGB_SAD | RGB_VAD | RGB_SPD |||| . | 1 | 2 | 3 | + | |
+||||| TG(3)| TG(3) | TG(3) | ⌫ | TG(3) | 0 |||||
+
+## Usage
+
+To compile and flash, from `qmk setup` folder, run:
+
+ make crkbd:bermeo:flash
+
+## Compiled size
+
+ 28658/28672 (99%, 14 bytes free)
+
+If more space is needed, start by deactivating Macros and Luna's animations.
+
+## Credits
+
+Guilherme Bermêo [(github)](https://git.bermeo.dev)
+
+### Thanks
+
+* @armand1m
+* @brneor
+* @drashna
+* @hellsingcoder
+* @soundmonster
+* @wdtamagi
+
+[^1]: The diaeresis (/daɪˈɛrÉ™sɪs, -ˈɪər-/ dy-ERR-É™-sis, -â EER-; also known as the trema) and the umlaut (/ˈʊmlaÊŠt/) are two different diacritical marks that (in modern usage) look alike. They both consist of two dots ¨ placed over a letter, usually a vowel; when that letter is an i or a j, the diacritic replaces the tittle: ï. In computer systems, both forms have the same code point (binary code). Their appearance in print or on screen may vary between typefaces but rarely within the same typeface. The "diaeresis" diacritic is used to mark the separation of two distinct vowels in adjacent syllables when an instance of diaeresis (or hiatus) occurs, so as to distinguish from a digraph or diphthong.
+The "umlaut" diacritic, in contrast, indicates a sound shift phenomenon – also known as umlaut – in which a back vowel becomes a front vowel.
+Neither of these phenomena occur in English, except in loanwords (like naïve) or for stylistic reasons (as in the Brontë family or Mötley Crüe).
+
+[^2]: Open Mission Control.
+
+[^3]: Bring up the screenshot toolbar.
+
+[^4]: Opens emoji dialog box.
+
+[^5]: Decrease display brightness.
+
+[^6]: Increase display brightness.
+
+[^7]: Launchpad.
+
+[^8]: Macro "CEDILLA".
+
+[^9]: Macro "AO".
+
+[^10]: Macro "ASPAS".
diff --git a/keyboards/crkbd/keymaps/bermeo/rules.mk b/keyboards/crkbd/keymaps/bermeo/rules.mk
new file mode 100644
index 0000000000..e666f1f0cb
--- /dev/null
+++ b/keyboards/crkbd/keymaps/bermeo/rules.mk
@@ -0,0 +1,19 @@
+RGBLIGHT_ENABLE = no
+RGB_MATRIX_ENABLE = yes
+MOUSEKEY_ENABLE = no
+NKRO_ENABLE = no
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+LTO_ENABLE = yes
+SLEEP_LED_ENABLE = yes
+WPM_ENABLE = yes
+
+
+#Dont use
+CONSOLE_ENABLE = no
+MOUSEKEY_ENABLE = no
+BOOTMAGIC_ENABLE = no
+COMBO_ENABLE = no
+AUDIO_ENABLE = no
+MIDI_ENABLE = no
+BLUETOOTH_ENABLE = no \ No newline at end of file
diff --git a/keyboards/crkbd/keymaps/blipson/keymap.c b/keyboards/crkbd/keymaps/blipson/keymap.c
index ad7664c295..218933940c 100644
--- a/keyboards/crkbd/keymaps/blipson/keymap.c
+++ b/keyboards/crkbd/keymaps/blipson/keymap.c
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[3] = LAYOUT_split_3x6_3(
//,-------------------------------------------------------------------------------. ,------------------------------------------------------------------.
- KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RESET,
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, QK_BOOT,
//|----------+------------+--------------+---------------+-----------+------------| |------------+------------+------------+--------+--------+---------|
KC_LCTL, A(KC_F12), A(G(KC_LEFT)), A(G(KC_RIGHT)), S(KC_F6), C(S(KC_D)), C(S(KC_R)), G(KC_LBRC), G(KC_RBRC), KC_F11, KC_F12, KC_MPLY,
//|----------+------------+--------------+---------------+-----------+------------| |------------+------------+------------+--------+--------+---------|
diff --git a/keyboards/crkbd/keymaps/crkdves/config.h b/keyboards/crkbd/keymaps/crkdves/config.h
new file mode 100644
index 0000000000..4e5df394ac
--- /dev/null
+++ b/keyboards/crkbd/keymaps/crkdves/config.h
@@ -0,0 +1,105 @@
+/*
+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 MASTER_RIGHT
+// #define EE_HANDS
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 200
+// #define RETRO_TAPPING
+// #define IGNORE_MOD_TAP_INTERRUPT
+
+#ifdef RGBLIGHT_ENABLE
+ #define RGBLIGHT_SLEEP
+ #define RGBLIGHT_SPLIT
+ #define RGBLIGHT_LIMIT_VAL 120
+ #define RGBLIGHT_HUE_STEP 10
+ #define RGBLIGHT_SAT_STEP 17
+ #define RGBLIGHT_VAL_STEP 17
+#endif
+
+
+#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/crkdves/glcdfont.c"
+# define OLED_TIMEOUT 30000
+#endif
+
+#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_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_HUE_STEP 8
+# define RGB_MATRIX_SAT_STEP 8
+# 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. */
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_BREATHING
+# undef ENABLE_RGB_MATRIX_BAND_SAT
+# undef ENABLE_RGB_MATRIX_BAND_VAL
+# 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
+# undef ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# undef ENABLE_RGB_MATRIX_DUAL_BEACON
+# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# undef ENABLE_RGB_MATRIX_RAINDROPS
+# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# 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
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# undef ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
+# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
diff --git a/keyboards/crkbd/keymaps/crkdves/glcdfont.c b/keyboards/crkbd/keymaps/crkdves/glcdfont.c
new file mode 100644
index 0000000000..0086a73fe9
--- /dev/null
+++ b/keyboards/crkbd/keymaps/crkdves/glcdfont.c
@@ -0,0 +1,236 @@
+#include "progmem.h"
+
+// Corne 8x6 font with QMK Firmware Logo
+// Online editor: https://helixfonteditor.netlify.com/
+// See also: https://github.com/soundmonster/glcdfont_converter
+
+/* Copyright 2022 Yeimi Alberth (@yeimialberth)
+* This program is free software: you can redistribute it and/or modify it in the hope that it will be useful.
+*/
+
+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, 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, 0xC0, 0xE0, 0xF0, 0xF8,
+0xF8, 0x18, 0x00, 0xC0, 0xF0, 0xFC,
+0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00,
+0x00, 0xF8, 0x04, 0x22, 0x52, 0xE2,
+0x42, 0x42, 0x42, 0xE2, 0x52, 0x22,
+0x22, 0x22, 0x42, 0x82, 0x02, 0x02,
+0x22, 0x22, 0x02, 0x04, 0xF8, 0x00,
+0x00, 0xF8, 0x04, 0x02, 0x02, 0x82,
+0x42, 0x22, 0x42, 0x82, 0x02, 0x02,
+0x02, 0x82, 0x42, 0x22, 0x12, 0x22,
+0x42, 0x82, 0x02, 0x04, 0xF8, 0x00,
+0x00, 0xF8, 0xFC, 0xDE, 0xAE, 0x1E,
+0xBE, 0xBE, 0xBE, 0x1E, 0xAE, 0xDE,
+0xDE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE,
+0xDE, 0xDE, 0xFE, 0xFC, 0xF8, 0x00,
+0x00, 0xF8, 0xFC, 0xFE, 0xFE, 0x7E,
+0xBE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x80, 0x80, 0x40, 0x40, 0x20, 0x20,
+0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
+0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
+0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0,
+0xF0, 0xF0, 0xF8, 0xF8, 0xF0, 0xF0,
+0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80,
+0x80, 0x80, 0x40, 0x40, 0x20, 0x20,
+0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
+0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
+0x80, 0x80, 0x40, 0xC0, 0x60, 0xA0,
+0x50, 0xB0, 0x58, 0xA8, 0x50, 0xB0,
+0x60, 0xA0, 0x40, 0xC0, 0x80, 0x80,
+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, 0x1F, 0x20, 0x44, 0x4A, 0x47,
+0x42, 0x42, 0x42, 0x47, 0x4A, 0x44,
+0x40, 0x40, 0x40, 0x40, 0x41, 0x42,
+0x44, 0x44, 0x40, 0x20, 0x1F, 0x00,
+0x00, 0x1F, 0x20, 0x40, 0x41, 0x40,
+0x40, 0x40, 0x40, 0x40, 0x41, 0x40,
+0x41, 0x41, 0x4F, 0x48, 0x48, 0x48,
+0x4F, 0x41, 0x41, 0x20, 0x1F, 0x00,
+0x00, 0x1F, 0x3F, 0x7B, 0x75, 0x78,
+0x7D, 0x7D, 0x7D, 0x78, 0x75, 0x7B,
+0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D,
+0x7B, 0x7B, 0x7F, 0x3F, 0x1F, 0x00,
+0x00, 0x1F, 0x3F, 0x7F, 0x7E, 0x7F,
+0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x88, 0x88, 0x5D, 0x5D, 0x3E, 0x3E,
+0x7C, 0x7C, 0xF8, 0xF8, 0x7C, 0x7C,
+0x3E, 0x3E, 0x5D, 0x5D, 0x88, 0x88,
+0x88, 0x88, 0x55, 0x55, 0x23, 0x23,
+0x47, 0x47, 0x8F, 0x8F, 0x47, 0x47,
+0x23, 0x23, 0x55, 0x55, 0x88, 0x88,
+0x88, 0x88, 0xD5, 0xD5, 0xE2, 0xE2,
+0xC4, 0xC4, 0x88, 0x88, 0xC4, 0xC4,
+0xE2, 0xE2, 0xD5, 0xD5, 0x88, 0x88,
+0x88, 0x88, 0x5D, 0xD5, 0x6B, 0xB6,
+0x6D, 0xD6, 0xAD, 0xDA, 0x6D, 0xD6,
+0x6B, 0xB6, 0x5D, 0xD5, 0x88, 0x88,
+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,
+0x04, 0xF8, 0x00, 0x00, 0xF8, 0x04,
+0x20, 0x1F, 0x00, 0x00, 0x1F, 0x20,
+0xFC, 0xF8, 0x00, 0x00, 0xF8, 0x04,
+0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x20,
+0x04, 0xF8, 0x00, 0x00, 0xF8, 0xFC,
+0x20, 0x1F, 0x00, 0x00, 0x1F, 0x3F,
+0xFC, 0xF8, 0x00, 0x00, 0xF8, 0xFC,
+0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x3F,
+0xFE, 0x7E, 0xBE, 0xDE, 0xEE, 0xDE,
+0xBE, 0x7E, 0xFE, 0xFC, 0xF8, 0x00,
+0x7E, 0x7E, 0x70, 0x77, 0x77, 0x77,
+0x70, 0x7E, 0x7E, 0x3F, 0x1F, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+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, 0x01, 0x01, 0x02, 0x02,
+0x04, 0x04, 0x08, 0x08, 0x04, 0x04,
+0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x01, 0x03, 0x03,
+0x07, 0x07, 0x0F, 0x0F, 0x07, 0x07,
+0x03, 0x03, 0x01, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x01, 0x03, 0x02,
+0x05, 0x06, 0x0D, 0x0A, 0x05, 0x06,
+0x03, 0x02, 0x01, 0x01, 0x00, 0x00
+};
diff --git a/keyboards/crkbd/keymaps/crkdves/keymap.c b/keyboards/crkbd/keymaps/crkdves/keymap.c
new file mode 100644
index 0000000000..333e47e952
--- /dev/null
+++ b/keyboards/crkbd/keymaps/crkdves/keymap.c
@@ -0,0 +1,415 @@
+/*
+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/>.
+*/
+
+#include QMK_KEYBOARD_H
+#include "version.h"
+#include "keymap_spanish.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,
+ _NAVIGATE,
+ _SYMBOLS,
+ _NUMPAD,
+ _ADJUST
+};
+
+// Custom keycodes for layer keys
+// Dual function escape with left command
+#define KC_LGESC LGUI_T(KC_ESC)
+
+enum custom_keycodes {
+ DVORAK = SAFE_RANGE,
+// LOWER,
+// RAISE,
+// ADJUST,
+ RGBRST
+// KC_RACL // right alt / colon
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ LT(3,KC_TAB), ./: , ,/; , Ñ, P, Y, F, G, C, H, L , BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ LCTL_T(KC_ESC), A, O, E, U, I, D, R, T, N, S, ´ ,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ LSFT_T(<), -, Q, J, K, X, B, M, W, V, Z, RSFT_T('),
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ WIN/CMD, MO(1), KC_SPC, KC_SPC, MO(2), RALT(SUPR)
+ //`--------------------------' `--------------------------'
+
+ */
+ [_DVORAK] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+LT(_NUMPAD,KC_TAB), ES_DOT, ES_COMM, ES_NTIL, ES_P, ES_Y, ES_F, ES_G, ES_C, ES_H, ES_L, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ LCTL_T(KC_ESC), ES_A, ES_O, ES_E, ES_U, ES_I, ES_D, ES_R, ES_T, ES_N, ES_S, ES_ACUT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+LSFT_T(ES_LABK), ES_MINS, ES_Q, ES_J, ES_K, ES_X, ES_B, ES_M, ES_W, ES_V, ES_Z, RSFT_T(ES_QUOT),
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, LT(_NAVIGATE,KC_CAPS), KC_SPC, KC_SPC, LT(_SYMBOLS,KC_ENT), RALT_T(KC_DEL)
+ //`--------------------------' `--------------------------'
+ ),
+
+ /*
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, z , v , c , KC_LCTL, , , , ↑ , , , ,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_ESC, x , KC_LSFT, KC_LALT, KC_LGUI, , , ↠, ↓ , → , , ,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_BRMU, KC_BRMD, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ WIN/CMD, , KC_SPC, KC_SPC, MO(2), KC_DEL
+ //`--------------------------' `--------------------------'
+
+ */
+
+ [_NAVIGATE] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, ES_Z, ES_V, ES_C, KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_ESC, ES_X, KC_LSFT, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_BRMU, KC_BRMD, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, _______, KC_SPC, KC_SPC, MO(_ADJUST), KC_DEL
+ //`--------------------------' `--------------------------'
+ ),
+
+ /*
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ , ¡ , ! , ( , ) , , , = , * , ` , ^ , KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ , < , > , { , } , , " , / , + , @ , # , º ,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ , ¿ , ? , [ , ] , , , $ , & , | , % , \ ,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ WIN/CMD, , KC_SPC, KC_SPC, , KC_RALT
+ //`--------------------------' `--------------------------'
+
+ */
+
+ [_SYMBOLS] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ XXXXXXX, ES_IEXL, ES_EXLM, ES_LPRN, ES_RPRN, XXXXXXX, XXXXXXX, ES_EQL, ES_ASTR, ES_GRV, ES_CIRC, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ XXXXXXX, ES_LABK, ES_RABK, ES_LCBR, ES_RCBR, XXXXXXX, ES_DQUO, ES_SLSH, ES_PLUS, ES_AT, ES_HASH, ES_MORD,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ XXXXXXX, ES_IQUE, ES_QUES, ES_LBRC, ES_RBRC, XXXXXXX, XXXXXXX, ES_DLR, ES_AMPR, ES_PIPE, ES_PERC, ES_BSLS,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, MO(_ADJUST), KC_SPC, KC_SPC, _______, KC_RALT
+ //`--------------------------' `--------------------------'
+ ),
+
+ /*
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ , , , , , , + , 7 , 8 , 9 , - , ,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ , , , , , , * , 4 , 5 , 6 , / , ,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ , , , , , , . , 1 , 2 , 3 , 0 , ,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ WIN/CMD, , KC_SPC, KC_SPC, MO(2), KC_RALT
+ //`--------------------------' `--------------------------'
+
+ */
+
+ [_NUMPAD] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ES_MINS, ES_7, ES_8, ES_9, ES_SLSH, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_ESC, XXXXXXX, KC_LSFT, KC_LALT, KC_LGUI, XXXXXXX, ES_PLUS, ES_4, ES_5, ES_6, ES_ASTR, ES_COMM,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ES_DOT, ES_1, ES_2, ES_3, ES_0, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, _______, KC_SPC, KC_SPC, _______, KC_RALT
+ //`--------------------------' `--------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ QK_BOOT, RGBRST,RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, _______, KC_SPC, KC_SPC, _______, KC_RALT
+ //`--------------------------' `--------------------------'
+ )
+};
+
+
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
+
+void render_space(void) {
+ oled_write_P(PSTR(" "), false);
+}
+
+void render_mod_status_gui_alt(uint8_t modifiers) {
+ static const char PROGMEM gui_off_1[] = {0x85, 0x86, 0};
+ static const char PROGMEM gui_off_2[] = {0xa5, 0xa6, 0};
+ static const char PROGMEM gui_on_1[] = {0x8d, 0x8e, 0};
+ static const char PROGMEM gui_on_2[] = {0xad, 0xae, 0};
+
+ static const char PROGMEM alt_off_1[] = {0x87, 0x88, 0};
+ static const char PROGMEM alt_off_2[] = {0xa7, 0xa8, 0};
+ static const char PROGMEM alt_on_1[] = {0x8f, 0x90, 0};
+ static const char PROGMEM alt_on_2[] = {0xaf, 0xb0, 0};
+
+ // fillers between the modifier icons bleed into the icon frames
+ static const char PROGMEM off_off_1[] = {0xc5, 0};
+ static const char PROGMEM off_off_2[] = {0xc6, 0};
+ static const char PROGMEM on_off_1[] = {0xc7, 0};
+ static const char PROGMEM on_off_2[] = {0xc8, 0};
+ static const char PROGMEM off_on_1[] = {0xc9, 0};
+ static const char PROGMEM off_on_2[] = {0xca, 0};
+ static const char PROGMEM on_on_1[] = {0xcb, 0};
+ static const char PROGMEM on_on_2[] = {0xcc, 0};
+
+ if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(gui_on_1, false);
+ } else {
+ oled_write_P(gui_off_1, false);
+ }
+
+ if ((modifiers & MOD_MASK_GUI) && (modifiers & MOD_MASK_ALT)) {
+ oled_write_P(on_on_1, false);
+ } else if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(on_off_1, false);
+ } else if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(off_on_1, false);
+ } else {
+ oled_write_P(off_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(alt_on_1, false);
+ } else {
+ oled_write_P(alt_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(gui_on_2, false);
+ } else {
+ oled_write_P(gui_off_2, false);
+ }
+
+ if (modifiers & MOD_MASK_GUI & MOD_MASK_ALT) {
+ oled_write_P(on_on_2, false);
+ } else if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(on_off_2, false);
+ } else if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(off_on_2, false);
+ } else {
+ oled_write_P(off_off_2, false);
+ }
+
+ if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(alt_on_2, false);
+ } else {
+ oled_write_P(alt_off_2, false);
+ }
+}
+
+void render_mod_status_ctrl_shift(uint8_t modifiers) {
+ static const char PROGMEM ctrl_off_1[] = {0x89, 0x8a, 0};
+ static const char PROGMEM ctrl_off_2[] = {0xa9, 0xaa, 0};
+ static const char PROGMEM ctrl_on_1[] = {0x91, 0x92, 0};
+ static const char PROGMEM ctrl_on_2[] = {0xb1, 0xb2, 0};
+
+ static const char PROGMEM shift_off_1[] = {0x8b, 0x8c, 0};
+ static const char PROGMEM shift_off_2[] = {0xab, 0xac, 0};
+ static const char PROGMEM shift_on_1[] = {0xcd, 0xce, 0};
+ static const char PROGMEM shift_on_2[] = {0xcf, 0xd0, 0};
+
+ // fillers between the modifier icons bleed into the icon frames
+ static const char PROGMEM off_off_1[] = {0xc5, 0};
+ static const char PROGMEM off_off_2[] = {0xc6, 0};
+ static const char PROGMEM on_off_1[] = {0xc7, 0};
+ static const char PROGMEM on_off_2[] = {0xc8, 0};
+ static const char PROGMEM off_on_1[] = {0xc9, 0};
+ static const char PROGMEM off_on_2[] = {0xca, 0};
+ static const char PROGMEM on_on_1[] = {0xcb, 0};
+ static const char PROGMEM on_on_2[] = {0xcc, 0};
+
+ if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(ctrl_on_1, false);
+ } else {
+ oled_write_P(ctrl_off_1, false);
+ }
+
+ if ((modifiers & MOD_MASK_CTRL) && (modifiers & MOD_MASK_SHIFT)) {
+ oled_write_P(on_on_1, false);
+ } else if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(on_off_1, false);
+ } else if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(off_on_1, false);
+ } else {
+ oled_write_P(off_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(shift_on_1, false);
+ } else {
+ oled_write_P(shift_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(ctrl_on_2, false);
+ } else {
+ oled_write_P(ctrl_off_2, false);
+ }
+
+ if (modifiers & MOD_MASK_CTRL & MOD_MASK_SHIFT) {
+ oled_write_P(on_on_2, false);
+ } else if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(on_off_2, false);
+ } else if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(off_on_2, false);
+ } else {
+ oled_write_P(off_off_2, false);
+ }
+
+ if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(shift_on_2, false);
+ } else {
+ oled_write_P(shift_off_2, false);
+ }
+}
+
+void render_logo(void) {
+ static const char PROGMEM corne_logo[] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0};
+ oled_write_P(corne_logo, false);
+ oled_write_P(PSTR("corne"), false);
+}
+
+void render_layer_state(void) {
+ static const char PROGMEM raise_layer[] = {
+ 0x20, 0x97, 0x98, 0x99, 0x20,
+ 0x20, 0xb7, 0xb8, 0xb9, 0x20,
+ 0x20, 0xd7, 0xd8, 0xd9, 0x20, 0};
+ static const char PROGMEM navigate_layer[] = {
+ 0x20, 0x94, 0x95, 0x96, 0x20,
+ 0x20, 0xb4, 0xb5, 0xb6, 0x20,
+ 0x20, 0xd4, 0xd5, 0xd6, 0x20, 0};
+ static const char PROGMEM lower_layer[] = {
+ 0x20, 0x9a, 0x9b, 0x9c, 0x20,
+ 0x20, 0xba, 0xbb, 0xbc, 0x20,
+ 0x20, 0xda, 0xdb, 0xdc, 0x20, 0};
+ static const char PROGMEM numpad_layer[] = {
+ 0x20, 0x9b, 0x9c, 0x94, 0x20,
+ 0x20, 0xbb, 0xbc, 0xb4, 0x20,
+ 0x20, 0xdb, 0xdc, 0xd4, 0x20, 0};
+ static const char PROGMEM adjust_layer[] = {
+ 0x20, 0x9d, 0x9e, 0x9f, 0x20,
+ 0x20, 0xbd, 0xbe, 0xbf, 0x20,
+ 0x20, 0xdd, 0xde, 0xdf, 0x20, 0};
+ if(layer_state_is(_ADJUST)) {
+ oled_write_P(adjust_layer, false);
+ } else if(layer_state_is(_NAVIGATE)) {
+ oled_write_P(navigate_layer, false);
+ } else if(layer_state_is(_SYMBOLS)) {
+ oled_write_P(lower_layer, false);
+ } else if(layer_state_is(_NUMPAD)) {
+ oled_write_P(numpad_layer, false);
+ } else {
+ oled_write_P(raise_layer, false);
+ }
+}
+
+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());
+ return false;
+}
+
+#endif
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+// static uint16_t my_colon_timer;
+
+ switch (keycode) {
+ /* case LOWER:
+ if (record->event.pressed) {
+ layer_on(_NAVIGATE);
+ update_tri_layer_RGB(_NAVIGATE, _SYMBOLS, _ADJUST);
+ } else {
+ layer_off(_NAVIGATE);
+ update_tri_layer_RGB(_NAVIGATE, _SYMBOLS, _ADJUST);
+ }
+ return false;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_SYMBOLS);
+ update_tri_layer_RGB(_NAVIGATE, _SYMBOLS, _ADJUST);
+ } else {
+ layer_off(_SYMBOLS);
+ update_tri_layer_RGB(_NAVIGATE, _SYMBOLS, _ADJUST);
+ }
+ return false;
+ case ADJUST:
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ case KC_RACL:
+ if (record->event.pressed) {
+ my_colon_timer = timer_read();
+ register_code(KC_RALT);
+ } else {
+ unregister_code(KC_RALT);
+ if (timer_elapsed(my_colon_timer) < TAPPING_TERM) {
+ SEND_STRING(":"); // Change the character(s) to be sent on tap here
+ }
+ }
+ return false; */
+ case RGBRST:
+ #ifdef RGBLIGHT_ENABLE
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ }
+ #endif
+ #ifdef RGB_MATRIX_ENABLE
+ if (record->event.pressed) {
+ eeconfig_update_rgb_matrix_default();
+ rgb_matrix_enable();
+ }
+ #endif
+ break;
+ }
+ return true;
+}
+
+#endif
diff --git a/keyboards/crkbd/keymaps/crkdves/rules.mk b/keyboards/crkbd/keymaps/crkdves/rules.mk
new file mode 100644
index 0000000000..d3a964424f
--- /dev/null
+++ b/keyboards/crkbd/keymaps/crkdves/rules.mk
@@ -0,0 +1,8 @@
+RGBLIGHT_ENABLE = no
+RGB_MATRIX_ENABLE = yes
+MOUSEKEY_ENABLE = no
+NKRO_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+LTO_ENABLE = yes
+
diff --git a/keyboards/crkbd/keymaps/crkqwes/config.h b/keyboards/crkbd/keymaps/crkqwes/config.h
new file mode 100644
index 0000000000..1ff720909c
--- /dev/null
+++ b/keyboards/crkbd/keymaps/crkqwes/config.h
@@ -0,0 +1,116 @@
+/*
+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_RIGHT
+// #define EE_HANDS
+
+// #define SSD1306OLED
+#undef USE_I2C
+#undef SSD1306OLED
+
+#define USE_SERIAL_PD2
+
+#define TAPPING_FORCE_HOLD
+#define TAPPING_TERM 200
+// #define RETRO_TAPPING
+// #define IGNORE_MOD_TAP_INTERRUPT
+
+#ifdef RGBLIGHT_ENABLE
+ #undef RGBLED_NUM
+ #define RGBLED_NUM 27
+ #define RGBLIGHT_ANIMATIONS
+ #define RGBLIGHT_SLEEP
+ #define RGBLIGHT_SPLIT
+ #define RGBLIGHT_LIMIT_VAL 120
+ #define RGBLIGHT_HUE_STEP 10
+ #define RGBLIGHT_SAT_STEP 17
+ #define RGBLIGHT_VAL_STEP 17
+#endif
+
+
+#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/crkqwes/glcdfont.c"
+# define OLED_TIMEOUT 30000
+#endif
+
+#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_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_HUE_STEP 8
+# define RGB_MATRIX_SAT_STEP 8
+# 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. */
+# define ENABLE_RGB_MATRIX_ALPHAS_MODS
+# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# define ENABLE_RGB_MATRIX_BREATHING
+# undef ENABLE_RGB_MATRIX_BAND_SAT
+# undef ENABLE_RGB_MATRIX_BAND_VAL
+# 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
+# undef ENABLE_RGB_MATRIX_CYCLE_ALL
+# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# undef ENABLE_RGB_MATRIX_DUAL_BEACON
+# undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+# undef ENABLE_RGB_MATRIX_RAINDROPS
+# undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+# 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
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# undef ENABLE_RGB_MATRIX_SPLASH
+# define ENABLE_RGB_MATRIX_MULTISPLASH
+# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
+# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
diff --git a/keyboards/crkbd/keymaps/crkqwes/glcdfont.c b/keyboards/crkbd/keymaps/crkqwes/glcdfont.c
new file mode 100644
index 0000000000..0086a73fe9
--- /dev/null
+++ b/keyboards/crkbd/keymaps/crkqwes/glcdfont.c
@@ -0,0 +1,236 @@
+#include "progmem.h"
+
+// Corne 8x6 font with QMK Firmware Logo
+// Online editor: https://helixfonteditor.netlify.com/
+// See also: https://github.com/soundmonster/glcdfont_converter
+
+/* Copyright 2022 Yeimi Alberth (@yeimialberth)
+* This program is free software: you can redistribute it and/or modify it in the hope that it will be useful.
+*/
+
+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, 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, 0xC0, 0xE0, 0xF0, 0xF8,
+0xF8, 0x18, 0x00, 0xC0, 0xF0, 0xFC,
+0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00,
+0x00, 0xF8, 0x04, 0x22, 0x52, 0xE2,
+0x42, 0x42, 0x42, 0xE2, 0x52, 0x22,
+0x22, 0x22, 0x42, 0x82, 0x02, 0x02,
+0x22, 0x22, 0x02, 0x04, 0xF8, 0x00,
+0x00, 0xF8, 0x04, 0x02, 0x02, 0x82,
+0x42, 0x22, 0x42, 0x82, 0x02, 0x02,
+0x02, 0x82, 0x42, 0x22, 0x12, 0x22,
+0x42, 0x82, 0x02, 0x04, 0xF8, 0x00,
+0x00, 0xF8, 0xFC, 0xDE, 0xAE, 0x1E,
+0xBE, 0xBE, 0xBE, 0x1E, 0xAE, 0xDE,
+0xDE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE,
+0xDE, 0xDE, 0xFE, 0xFC, 0xF8, 0x00,
+0x00, 0xF8, 0xFC, 0xFE, 0xFE, 0x7E,
+0xBE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x80, 0x80, 0x40, 0x40, 0x20, 0x20,
+0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
+0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
+0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0,
+0xF0, 0xF0, 0xF8, 0xF8, 0xF0, 0xF0,
+0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80,
+0x80, 0x80, 0x40, 0x40, 0x20, 0x20,
+0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
+0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
+0x80, 0x80, 0x40, 0xC0, 0x60, 0xA0,
+0x50, 0xB0, 0x58, 0xA8, 0x50, 0xB0,
+0x60, 0xA0, 0x40, 0xC0, 0x80, 0x80,
+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, 0x1F, 0x20, 0x44, 0x4A, 0x47,
+0x42, 0x42, 0x42, 0x47, 0x4A, 0x44,
+0x40, 0x40, 0x40, 0x40, 0x41, 0x42,
+0x44, 0x44, 0x40, 0x20, 0x1F, 0x00,
+0x00, 0x1F, 0x20, 0x40, 0x41, 0x40,
+0x40, 0x40, 0x40, 0x40, 0x41, 0x40,
+0x41, 0x41, 0x4F, 0x48, 0x48, 0x48,
+0x4F, 0x41, 0x41, 0x20, 0x1F, 0x00,
+0x00, 0x1F, 0x3F, 0x7B, 0x75, 0x78,
+0x7D, 0x7D, 0x7D, 0x78, 0x75, 0x7B,
+0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D,
+0x7B, 0x7B, 0x7F, 0x3F, 0x1F, 0x00,
+0x00, 0x1F, 0x3F, 0x7F, 0x7E, 0x7F,
+0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x88, 0x88, 0x5D, 0x5D, 0x3E, 0x3E,
+0x7C, 0x7C, 0xF8, 0xF8, 0x7C, 0x7C,
+0x3E, 0x3E, 0x5D, 0x5D, 0x88, 0x88,
+0x88, 0x88, 0x55, 0x55, 0x23, 0x23,
+0x47, 0x47, 0x8F, 0x8F, 0x47, 0x47,
+0x23, 0x23, 0x55, 0x55, 0x88, 0x88,
+0x88, 0x88, 0xD5, 0xD5, 0xE2, 0xE2,
+0xC4, 0xC4, 0x88, 0x88, 0xC4, 0xC4,
+0xE2, 0xE2, 0xD5, 0xD5, 0x88, 0x88,
+0x88, 0x88, 0x5D, 0xD5, 0x6B, 0xB6,
+0x6D, 0xD6, 0xAD, 0xDA, 0x6D, 0xD6,
+0x6B, 0xB6, 0x5D, 0xD5, 0x88, 0x88,
+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,
+0x04, 0xF8, 0x00, 0x00, 0xF8, 0x04,
+0x20, 0x1F, 0x00, 0x00, 0x1F, 0x20,
+0xFC, 0xF8, 0x00, 0x00, 0xF8, 0x04,
+0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x20,
+0x04, 0xF8, 0x00, 0x00, 0xF8, 0xFC,
+0x20, 0x1F, 0x00, 0x00, 0x1F, 0x3F,
+0xFC, 0xF8, 0x00, 0x00, 0xF8, 0xFC,
+0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x3F,
+0xFE, 0x7E, 0xBE, 0xDE, 0xEE, 0xDE,
+0xBE, 0x7E, 0xFE, 0xFC, 0xF8, 0x00,
+0x7E, 0x7E, 0x70, 0x77, 0x77, 0x77,
+0x70, 0x7E, 0x7E, 0x3F, 0x1F, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+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, 0x01, 0x01, 0x02, 0x02,
+0x04, 0x04, 0x08, 0x08, 0x04, 0x04,
+0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x01, 0x03, 0x03,
+0x07, 0x07, 0x0F, 0x0F, 0x07, 0x07,
+0x03, 0x03, 0x01, 0x01, 0x00, 0x00,
+0x00, 0x00, 0x01, 0x01, 0x03, 0x02,
+0x05, 0x06, 0x0D, 0x0A, 0x05, 0x06,
+0x03, 0x02, 0x01, 0x01, 0x00, 0x00
+};
diff --git a/keyboards/crkbd/keymaps/crkqwes/keymap.c b/keyboards/crkbd/keymaps/crkqwes/keymap.c
new file mode 100644
index 0000000000..817935d0b3
--- /dev/null
+++ b/keyboards/crkbd/keymaps/crkqwes/keymap.c
@@ -0,0 +1,415 @@
+/*
+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/>.
+*/
+
+#include QMK_KEYBOARD_H
+#include "version.h"
+#include "keymap_spanish.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 {
+ _QWERTY,
+ _NAVIGATE,
+ _SYMBOLS,
+ _NUMPAD,
+ _ADJUST
+};
+
+// Custom keycodes for layer keys
+// Dual function escape with left command
+#define KC_LGESC LGUI_T(KC_ESC)
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+// LOWER,
+// RAISE,
+// ADJUST,
+ RGBRST
+// KC_RACL // right alt / colon
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ LT(3,KC_TAB), Q, W, E, R, T, Y, U, I, O, P, BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ LCTL_T(KC_ESC), A, S, D, F, G, H, J, K, L, Ñ, ´ ,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ LSFT_T(<), Z, X, C, V, B, N, M, ,/; , ./: , -/_ , RSFT_T('),
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ WIN/CMD, MO(1), KC_SPC, KC_SPC, MO(2), RALT(SUPR)
+ //`--------------------------' `--------------------------'
+
+ */
+ [_QWERTY] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+LT(_NUMPAD,KC_TAB), ES_Q, ES_W, ES_E, ES_R, ES_T, ES_Y, ES_U, ES_I, ES_O, ES_P, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ LCTL_T(KC_ESC), ES_A, ES_S, ES_D, ES_F, ES_G, ES_H, ES_J, ES_K, ES_L, ES_NTIL, ES_ACUT,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+LSFT_T(ES_LABK), ES_Z, ES_X, ES_C, ES_V, ES_B, ES_N, ES_M, ES_COMM, ES_DOT, ES_MINS, RSFT_T(ES_QUOT),
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, LT(_NAVIGATE,KC_CAPS), KC_SPC, KC_SPC, LT(_SYMBOLS,KC_ENT), RALT_T(KC_DEL)
+ //`--------------------------' `--------------------------'
+ ),
+
+ /*
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, z , v , c , KC_LCTL, , , , ↑ , , , ,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_ESC, x , KC_LSFT, KC_LALT, KC_LGUI, , , ↠, ↓ , → , , ,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_BRMU, KC_BRMD, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ WIN/CMD, , KC_SPC, KC_SPC, MO(2), KC_DEL
+ //`--------------------------' `--------------------------'
+
+ */
+
+ [_NAVIGATE] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, ES_X, ES_V, ES_C, KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_ESC, ES_Z, KC_LSFT, KC_LALT, KC_LGUI, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_BRMU, KC_BRMD, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, _______, KC_SPC, KC_SPC, MO(_ADJUST), KC_DEL
+ //`--------------------------' `--------------------------'
+ ),
+
+ /*
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ , ¡ , ! , ( , ) , , , = , * , ` , ^ , KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ , < , > , { , } , , " , / , + , @ , # , º ,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ , ¿ , ? , [ , ] , , , $ , & , | , % , \ ,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ WIN/CMD, , KC_SPC, KC_SPC, , KC_RALT
+ //`--------------------------' `--------------------------'
+
+ */
+
+ [_SYMBOLS] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ XXXXXXX, ES_IEXL, ES_EXLM, ES_LPRN, ES_RPRN, XXXXXXX, XXXXXXX, ES_EQL, ES_ASTR, ES_GRV, ES_CIRC, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ XXXXXXX, ES_LABK, ES_RABK, ES_LCBR, ES_RCBR, XXXXXXX, ES_DQUO, ES_SLSH, ES_PLUS, ES_AT, ES_HASH, ES_MORD,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ XXXXXXX, ES_IQUE, ES_QUES, ES_LBRC, ES_RBRC, XXXXXXX, XXXXXXX, ES_DLR, ES_AMPR, ES_PIPE, ES_PERC, ES_BSLS,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, MO(_ADJUST), KC_SPC, KC_SPC, _______, KC_RALT
+ //`--------------------------' `--------------------------'
+ ),
+
+ /*
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ , , , , , , + , 7 , 8 , 9 , - , ,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ , , , , , , * , 4 , 5 , 6 , / , ,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ , , , , , , . , 1 , 2 , 3 , 0 , ,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ WIN/CMD, , KC_SPC, KC_SPC, MO(2), KC_RALT
+ //`--------------------------' `--------------------------'
+
+ */
+
+ [_NUMPAD] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ES_MINS, ES_7, ES_8, ES_9, ES_SLSH, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_ESC, XXXXXXX, KC_LSFT, KC_LALT, KC_LGUI, XXXXXXX, ES_PLUS, ES_4, ES_5, ES_6, ES_ASTR, ES_COMM,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ES_DOT, ES_1, ES_2, ES_3, ES_0, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, _______, KC_SPC, KC_SPC, _______, KC_RALT
+ //`--------------------------' `--------------------------'
+ ),
+
+ [_ADJUST] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ QK_BOOT, RGBRST,RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ KC_LGUI, _______, KC_SPC, KC_SPC, _______, KC_RALT
+ //`--------------------------' `--------------------------'
+ )
+};
+
+
+
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_270; }
+
+void render_space(void) {
+ oled_write_P(PSTR(" "), false);
+}
+
+void render_mod_status_gui_alt(uint8_t modifiers) {
+ static const char PROGMEM gui_off_1[] = {0x85, 0x86, 0};
+ static const char PROGMEM gui_off_2[] = {0xa5, 0xa6, 0};
+ static const char PROGMEM gui_on_1[] = {0x8d, 0x8e, 0};
+ static const char PROGMEM gui_on_2[] = {0xad, 0xae, 0};
+
+ static const char PROGMEM alt_off_1[] = {0x87, 0x88, 0};
+ static const char PROGMEM alt_off_2[] = {0xa7, 0xa8, 0};
+ static const char PROGMEM alt_on_1[] = {0x8f, 0x90, 0};
+ static const char PROGMEM alt_on_2[] = {0xaf, 0xb0, 0};
+
+ // fillers between the modifier icons bleed into the icon frames
+ static const char PROGMEM off_off_1[] = {0xc5, 0};
+ static const char PROGMEM off_off_2[] = {0xc6, 0};
+ static const char PROGMEM on_off_1[] = {0xc7, 0};
+ static const char PROGMEM on_off_2[] = {0xc8, 0};
+ static const char PROGMEM off_on_1[] = {0xc9, 0};
+ static const char PROGMEM off_on_2[] = {0xca, 0};
+ static const char PROGMEM on_on_1[] = {0xcb, 0};
+ static const char PROGMEM on_on_2[] = {0xcc, 0};
+
+ if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(gui_on_1, false);
+ } else {
+ oled_write_P(gui_off_1, false);
+ }
+
+ if ((modifiers & MOD_MASK_GUI) && (modifiers & MOD_MASK_ALT)) {
+ oled_write_P(on_on_1, false);
+ } else if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(on_off_1, false);
+ } else if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(off_on_1, false);
+ } else {
+ oled_write_P(off_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(alt_on_1, false);
+ } else {
+ oled_write_P(alt_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(gui_on_2, false);
+ } else {
+ oled_write_P(gui_off_2, false);
+ }
+
+ if (modifiers & MOD_MASK_GUI & MOD_MASK_ALT) {
+ oled_write_P(on_on_2, false);
+ } else if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(on_off_2, false);
+ } else if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(off_on_2, false);
+ } else {
+ oled_write_P(off_off_2, false);
+ }
+
+ if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(alt_on_2, false);
+ } else {
+ oled_write_P(alt_off_2, false);
+ }
+}
+
+void render_mod_status_ctrl_shift(uint8_t modifiers) {
+ static const char PROGMEM ctrl_off_1[] = {0x89, 0x8a, 0};
+ static const char PROGMEM ctrl_off_2[] = {0xa9, 0xaa, 0};
+ static const char PROGMEM ctrl_on_1[] = {0x91, 0x92, 0};
+ static const char PROGMEM ctrl_on_2[] = {0xb1, 0xb2, 0};
+
+ static const char PROGMEM shift_off_1[] = {0x8b, 0x8c, 0};
+ static const char PROGMEM shift_off_2[] = {0xab, 0xac, 0};
+ static const char PROGMEM shift_on_1[] = {0xcd, 0xce, 0};
+ static const char PROGMEM shift_on_2[] = {0xcf, 0xd0, 0};
+
+ // fillers between the modifier icons bleed into the icon frames
+ static const char PROGMEM off_off_1[] = {0xc5, 0};
+ static const char PROGMEM off_off_2[] = {0xc6, 0};
+ static const char PROGMEM on_off_1[] = {0xc7, 0};
+ static const char PROGMEM on_off_2[] = {0xc8, 0};
+ static const char PROGMEM off_on_1[] = {0xc9, 0};
+ static const char PROGMEM off_on_2[] = {0xca, 0};
+ static const char PROGMEM on_on_1[] = {0xcb, 0};
+ static const char PROGMEM on_on_2[] = {0xcc, 0};
+
+ if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(ctrl_on_1, false);
+ } else {
+ oled_write_P(ctrl_off_1, false);
+ }
+
+ if ((modifiers & MOD_MASK_CTRL) && (modifiers & MOD_MASK_SHIFT)) {
+ oled_write_P(on_on_1, false);
+ } else if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(on_off_1, false);
+ } else if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(off_on_1, false);
+ } else {
+ oled_write_P(off_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(shift_on_1, false);
+ } else {
+ oled_write_P(shift_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(ctrl_on_2, false);
+ } else {
+ oled_write_P(ctrl_off_2, false);
+ }
+
+ if (modifiers & MOD_MASK_CTRL & MOD_MASK_SHIFT) {
+ oled_write_P(on_on_2, false);
+ } else if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(on_off_2, false);
+ } else if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(off_on_2, false);
+ } else {
+ oled_write_P(off_off_2, false);
+ }
+
+ if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(shift_on_2, false);
+ } else {
+ oled_write_P(shift_off_2, false);
+ }
+}
+
+void render_logo(void) {
+ static const char PROGMEM corne_logo[] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0};
+ oled_write_P(corne_logo, false);
+ oled_write_P(PSTR("corne"), false);
+}
+
+void render_layer_state(void) {
+ static const char PROGMEM raise_layer[] = {
+ 0x20, 0x97, 0x98, 0x99, 0x20,
+ 0x20, 0xb7, 0xb8, 0xb9, 0x20,
+ 0x20, 0xd7, 0xd8, 0xd9, 0x20, 0};
+ static const char PROGMEM navigate_layer[] = {
+ 0x20, 0x94, 0x95, 0x96, 0x20,
+ 0x20, 0xb4, 0xb5, 0xb6, 0x20,
+ 0x20, 0xd4, 0xd5, 0xd6, 0x20, 0};
+ static const char PROGMEM lower_layer[] = {
+ 0x20, 0x9a, 0x9b, 0x9c, 0x20,
+ 0x20, 0xba, 0xbb, 0xbc, 0x20,
+ 0x20, 0xda, 0xdb, 0xdc, 0x20, 0};
+ static const char PROGMEM numpad_layer[] = {
+ 0x20, 0x9b, 0x9c, 0x94, 0x20,
+ 0x20, 0xbb, 0xbc, 0xb4, 0x20,
+ 0x20, 0xdb, 0xdc, 0xd4, 0x20, 0};
+ static const char PROGMEM adjust_layer[] = {
+ 0x20, 0x9d, 0x9e, 0x9f, 0x20,
+ 0x20, 0xbd, 0xbe, 0xbf, 0x20,
+ 0x20, 0xdd, 0xde, 0xdf, 0x20, 0};
+ if(layer_state_is(_ADJUST)) {
+ oled_write_P(adjust_layer, false);
+ } else if(layer_state_is(_NAVIGATE)) {
+ oled_write_P(navigate_layer, false);
+ } else if(layer_state_is(_SYMBOLS)) {
+ oled_write_P(lower_layer, false);
+ } else if(layer_state_is(_NUMPAD)) {
+ oled_write_P(numpad_layer, false);
+ } else {
+ oled_write_P(raise_layer, false);
+ }
+}
+
+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());
+ return false;
+}
+
+#endif
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+// static uint16_t my_colon_timer;
+
+ switch (keycode) {
+ /* case LOWER:
+ if (record->event.pressed) {
+ layer_on(_NAVIGATE);
+ update_tri_layer_RGB(_NAVIGATE, _SYMBOLS, _ADJUST);
+ } else {
+ layer_off(_NAVIGATE);
+ update_tri_layer_RGB(_NAVIGATE, _SYMBOLS, _ADJUST);
+ }
+ return false;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_SYMBOLS);
+ update_tri_layer_RGB(_NAVIGATE, _SYMBOLS, _ADJUST);
+ } else {
+ layer_off(_SYMBOLS);
+ update_tri_layer_RGB(_NAVIGATE, _SYMBOLS, _ADJUST);
+ }
+ return false;
+ case ADJUST:
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ case KC_RACL:
+ if (record->event.pressed) {
+ my_colon_timer = timer_read();
+ register_code(KC_RALT);
+ } else {
+ unregister_code(KC_RALT);
+ if (timer_elapsed(my_colon_timer) < TAPPING_TERM) {
+ SEND_STRING(":"); // Change the character(s) to be sent on tap here
+ }
+ }
+ return false; */
+ case RGBRST:
+ #ifdef RGBLIGHT_ENABLE
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ }
+ #endif
+ #ifdef RGB_MATRIX_ENABLE
+ if (record->event.pressed) {
+ eeconfig_update_rgb_matrix_default();
+ rgb_matrix_enable();
+ }
+ #endif
+ break;
+ }
+ return true;
+}
+
diff --git a/keyboards/crkbd/keymaps/crkqwes/rules.mk b/keyboards/crkbd/keymaps/crkqwes/rules.mk
new file mode 100644
index 0000000000..d3a964424f
--- /dev/null
+++ b/keyboards/crkbd/keymaps/crkqwes/rules.mk
@@ -0,0 +1,8 @@
+RGBLIGHT_ENABLE = no
+RGB_MATRIX_ENABLE = yes
+MOUSEKEY_ENABLE = no
+NKRO_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+LTO_ENABLE = yes
+
diff --git a/keyboards/crkbd/keymaps/davidrambo/config.h b/keyboards/crkbd/keymaps/davidrambo/config.h
index bf96f265f4..df5e0611e1 100644
--- a/keyboards/crkbd/keymaps/davidrambo/config.h
+++ b/keyboards/crkbd/keymaps/davidrambo/config.h
@@ -30,8 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_SPLIT
-//#define SSD1306OLED
-
#define TAPPING_TERM 200
#define PERMISSIVE_HOLD
diff --git a/keyboards/crkbd/keymaps/davidrambo/keymap.c b/keyboards/crkbd/keymaps/davidrambo/keymap.c
index 6e97795220..b707192608 100644
--- a/keyboards/crkbd/keymaps/davidrambo/keymap.c
+++ b/keyboards/crkbd/keymaps/davidrambo/keymap.c
@@ -16,9 +16,6 @@
#include QMK_KEYBOARD_H
-//extern uint8_t is_master;
-
-
enum custom_layers {
_COLEMAK,
_SYMBOL,
@@ -86,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, CTLPGUP, KC_LEFT , KC_DOWN, KC_RGHT, CTLPGDN, _______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- RESET, _______, _______, _______, _______, _______, ATAB , CBSPC , KC_HOME, KC_END, G_GRV , _______,
+ QK_BOOT, _______, _______, _______, _______, _______, ATAB , CBSPC , KC_HOME, KC_END, G_GRV , _______,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, KC_RALT
//`--------------------------' `--------------------------'
diff --git a/keyboards/crkbd/keymaps/devdev/keymap.c b/keyboards/crkbd/keymaps/devdev/keymap.c
index a506295749..cbaa7c16e9 100644
--- a/keyboards/crkbd/keymaps/devdev/keymap.c
+++ b/keyboards/crkbd/keymaps/devdev/keymap.c
@@ -108,7 +108,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// commands - both thumbs
[_COMMAND] = LAYOUT(
//,-----------------------------------------------------. ,-----------------------------------------------------.
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, DF(1), DF(0), C(G(KC_LEFT)), KC_NO, KC_NO, C(G(KC_RGHT)), KC_NO, KC_NO,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
@@ -134,7 +134,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// layer switcher
[_SWITCH] = LAYOUT(
//,-----------------------------------------------------. ,-----------------------------------------------------.
- TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), KC_NO, TO(7), KC_NO, KC_NO, KC_NO, RESET,
+ TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), KC_NO, TO(7), KC_NO, KC_NO, KC_NO, QK_BOOT,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_NO, KC_NO, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, EEP_RST,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
@@ -263,9 +263,6 @@ bool led_update_user(led_t led_state) {
}
*/
-
-
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (!is_keyboard_master()) {
@@ -319,27 +316,15 @@ void oled_render_layer_state(void) {
oled_write_ln_P(PSTR("Layer: Layer Switch"),false);
break;
default:
+#if defined (LAYER_STATE_32BIT)
snprintf(string, sizeof(string), "%ld",layer_state);
+#else
+ snprintf(string, sizeof(string), "%d",layer_state);
+#endif
oled_write_P(PSTR("Layer: Undef-"),false);
oled_write_ln(string, false);
}
- }
-
-/*
-void matrix_render_user(struct CharacterMatrix *matrix) {
- if (has_usb()) {
- // If you want to change the display of OLED, you need to change here
- matrix_write_ln(matrix, read_layer_state());
- matrix_write_ln(matrix, read_keylog());
- //matrix_write_ln(matrix, read_keylogs());
- //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
- //matrix_write_ln(matrix, read_host_led_state());
- //matrix_write_ln(matrix, read_timelog());
- } else {
- matrix_write(matrix, read_logo());
- }
}
-*/
char keylog_str[24] = {};
const char code_to_name[60] = {
@@ -393,7 +378,7 @@ void oled_render_logo(void) {
}
bool oled_task_user(void) {
- if (is_master) {
+ if (is_keyboard_master()) {
oled_render_layer_state();
oled_render_keylog();
} else {
diff --git a/keyboards/crkbd/keymaps/dsanchezseco/keymap.c b/keyboards/crkbd/keymaps/dsanchezseco/keymap.c
index 6ef428a11f..ab84e5c580 100644
--- a/keyboards/crkbd/keymaps/dsanchezseco/keymap.c
+++ b/keyboards/crkbd/keymaps/dsanchezseco/keymap.c
@@ -84,7 +84,7 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
const char *read_logo(void);
bool oled_task_user(void){
- switch (biton32(layer_state)){
+ switch (get_highest_layer(layer_state)){
case _DVORAK:
oled_write_ln_P(PSTR("DVRK"), false);
break;
diff --git a/keyboards/crkbd/keymaps/edvorakjp/keymap.c b/keyboards/crkbd/keymaps/edvorakjp/keymap.c
index 5e56da61a9..f3b801da68 100644
--- a/keyboards/crkbd/keymaps/edvorakjp/keymap.c
+++ b/keyboards/crkbd/keymaps/edvorakjp/keymap.c
@@ -54,9 +54,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// clang-format on
#ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT
-uint32_t layer_state_set_keymap(uint32_t state) {
+layer_state_t layer_state_set_keymap(layer_state_t state) {
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case L_EDVORAKJP_LOWER:
rgblight_sethsv_noeeprom_red();
break;
diff --git a/keyboards/crkbd/keymaps/edvorakjp/oled.c b/keyboards/crkbd/keymaps/edvorakjp/oled.c
index e5ff029565..cd75f8e277 100644
--- a/keyboards/crkbd/keymaps/edvorakjp/oled.c
+++ b/keyboards/crkbd/keymaps/edvorakjp/oled.c
@@ -9,7 +9,7 @@ void render_layer_state(void) {
char layer_name[17];
oled_write_P(PSTR("Layer: "), false);
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case L_EDVORAKJP_BASE:
oled_write_ln_P(PSTR("Default"), false);
break;
diff --git a/keyboards/crkbd/keymaps/gotham/config.h b/keyboards/crkbd/keymaps/gotham/config.h
index 45fe8c37a8..2a35f60dad 100644
--- a/keyboards/crkbd/keymaps/gotham/config.h
+++ b/keyboards/crkbd/keymaps/gotham/config.h
@@ -3,9 +3,6 @@
#define EE_HANDS
#define SPLIT_USB_DETECT
-#undef USE_I2C
-#undef SSD1306OLED
-
#define USE_SERIAL_PD2
#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/keyboards/crkbd/keymaps/gotham/keymap.c b/keyboards/crkbd/keymaps/gotham/keymap.c
index a258794049..4c05e54999 100644
--- a/keyboards/crkbd/keymaps/gotham/keymap.c
+++ b/keyboards/crkbd/keymaps/gotham/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|-----------------------------------------------------| |-----------------------------------------------------|
XXXXXXX, CK_RST, CK_DOWN, CK_UP, CK_TOGG, RGB_TOG, MU_TOG, KC_F12, KC_F7, KC_F8, KC_F9, XXXXXXX,\
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- XXXXXXX, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, RGB_MOD, MU_MOD, KC_F11, KC_F4, KC_F5, KC_F6, RESET, \
+ XXXXXXX, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, RGB_MOD, MU_MOD, KC_F11, KC_F4, KC_F5, KC_F6, QK_BOOT, \
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, RGBRST, AU_TOG, KC_F10, KC_F1, KC_F2, KC_F3, _______,\
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/crkbd/keymaps/gotham/oled.c b/keyboards/crkbd/keymaps/gotham/oled.c
index 6bf1233659..c4ac5e736c 100644
--- a/keyboards/crkbd/keymaps/gotham/oled.c
+++ b/keyboards/crkbd/keymaps/gotham/oled.c
@@ -1,7 +1,5 @@
#pragma once
-extern uint8_t is_master;
-
#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
# include "rgb.c"
#endif
diff --git a/keyboards/crkbd/keymaps/hvp/config.h b/keyboards/crkbd/keymaps/hvp/config.h
index f32ec8cfbe..106e7535e3 100644
--- a/keyboards/crkbd/keymaps/hvp/config.h
+++ b/keyboards/crkbd/keymaps/hvp/config.h
@@ -28,10 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-#define SSD1306OLED
-#define USE_SSD_I2C
-
-
#define USE_SERIAL_PD2
//#define TAPPING_FORCE_HOLD
diff --git a/keyboards/crkbd/keymaps/hvp/keymap.c b/keyboards/crkbd/keymaps/hvp/keymap.c
index 9e72504653..bdc8746199 100644
--- a/keyboards/crkbd/keymaps/hvp/keymap.c
+++ b/keyboards/crkbd/keymaps/hvp/keymap.c
@@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|------+------+------+------+------+------| |------+------+------+------+------+------|
KC_F1,_______,_______,D_NAVI,_______,_______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______,
//|------+------+------+------+------+------| |------+------+------+------+------+------|
- RESET,KC_PSCR,_______,_______,_______,_______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______,
+ QK_BOOT,KC_PSCR,_______,_______,_______,_______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______,
//|------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
_______, KC_VOLD,KC_MPLY, KC_MNXT, KC_VOLU,_______
//`--------------------' `--------------------'
@@ -91,14 +91,9 @@ 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(); // turns on the display
- #endif
}
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
+#ifdef OLED_ENABLE
// When add source files to SRC in rules.mk, you can use functions.
const char *read_layer_state(void);
@@ -112,42 +107,26 @@ const char *read_keylogs(void);
// void set_timelog(void);
// const char *read_timelog(void);
-void matrix_scan_user(void) {
- iota_gfx_task();
-}
-
-void matrix_render_user(struct CharacterMatrix *matrix) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
// If you want to change the display of OLED, you need to change here
- matrix_write(matrix, read_layer_state());
- matrix_write(matrix, read_keylog());
- //matrix_write_ln(matrix, read_keylogs());
- //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
- //matrix_write_ln(matrix, read_host_led_state());
- //matrix_write_ln(matrix, read_timelog());
+ oled_write(read_layer_state(), false);
+ oled_write(read_keylog(), false);
+ //oled_write_ln(read_keylogs(), false);
+ //oled_write_ln(read_mode_icon(keymap_config.swap_lalt_lgui), false);
+ //oled_write_ln(read_host_led_state()), false;
+ //oled_write_ln(read_timelog(), false);
} else {
- matrix_write(matrix, read_logo());
- }
-}
-
-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;
+ oled_write(read_logo(), false);
}
+ return false;
}
-void iota_gfx_task_user(void) {
- struct CharacterMatrix matrix;
- matrix_clear(&matrix);
- matrix_render_user(&matrix);
- matrix_update(&display, &matrix);
-}
-#endif//SSD1306OLED
+#endif
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
-#ifdef SSD1306OLED
+#ifdef OLED_ENABLE
set_keylog(keycode, record);
#endif
// set_timelog();
diff --git a/keyboards/crkbd/keymaps/hvp/rules.mk b/keyboards/crkbd/keymaps/hvp/rules.mk
index 640a07b305..c7ed029e3d 100644
--- a/keyboards/crkbd/keymaps/hvp/rules.mk
+++ b/keyboards/crkbd/keymaps/hvp/rules.mk
@@ -1,10 +1,5 @@
-
-VPATH += keyboards/crkbd/lib
-LIB_SRC += ssd1306.c i2c.c
-
# If you want to change the display of OLED, you need to change here
-SRC += ./lib/glcdfont.c \
- ./lib/rgb_state_reader.c \
+SRC += ./lib/rgb_state_reader.c \
./lib/layer_state_reader.c \
./lib/logo_reader.c \
./lib/keylogger.c \
@@ -14,4 +9,6 @@ SRC += ./lib/glcdfont.c \
TAP_DANCE_ENABLE = yes
EXTRAKEY_ENABLE = yes # Audio control and System control
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
# LOCAL_GLCDFONT = yes
diff --git a/keyboards/crkbd/keymaps/jarred/config.h b/keyboards/crkbd/keymaps/jarred/config.h
index 012356241d..e5c2029a52 100644
--- a/keyboards/crkbd/keymaps/jarred/config.h
+++ b/keyboards/crkbd/keymaps/jarred/config.h
@@ -28,9 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-#define SSD1306OLED
-#define USE_SSD_I2C
-
#define USE_SERIAL_PD2
//#define TAPPING_FORCE_HOLD
diff --git a/keyboards/crkbd/keymaps/jarred/keymap.c b/keyboards/crkbd/keymaps/jarred/keymap.c
index b938636c2a..b0e181b37f 100644
--- a/keyboards/crkbd/keymaps/jarred/keymap.c
+++ b/keyboards/crkbd/keymaps/jarred/keymap.c
@@ -5,10 +5,6 @@
#include "lufa.h"
#include "split_util.h"
#endif
-#ifdef SSD1306OLED
- #include "ssd1306.h"
-#endif
-
#ifdef RGBLIGHT_ENABLE
//Following line allows macro to read current RGB settings
@@ -65,15 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-void matrix_init_user(void) {
- //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
- #ifdef SSD1306OLED
- iota_gfx_init(); // turns on the display
- #endif
-}
-
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
+#ifdef OLED_ENABLE
// When add source files to SRC in rules.mk, you can use functions.
const char *read_logo(void);
@@ -84,7 +72,7 @@ const char *read_keylogs(void);
char matrix_line_str[24];
const char *read_layer_state(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
strcpy(matrix_line_str, "Layer: ");
@@ -142,37 +130,18 @@ const char *read_usb_state(void) {
return matrix_line_str;
}
-void matrix_scan_user(void) {
- iota_gfx_task();
-}
-
-void matrix_render_user(struct CharacterMatrix *matrix) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
- matrix_write(matrix, read_layer_state());
- matrix_write(matrix, "\n");
- matrix_write(matrix, read_usb_state());
- matrix_write(matrix, "\n");
- matrix_write(matrix, read_keylogs());
- matrix_write(matrix, "\n");
+ oled_write_ln(read_layer_state(), false);
+ oled_write_ln(read_usb_state(), false);
+ oled_write_ln(read_keylogs(), false);
} else {
- matrix_write(matrix, read_logo());
+ oled_write(read_logo(), false);
}
+ return false;
}
-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;
- }
-}
-
-void iota_gfx_task_user(void) {
- struct CharacterMatrix matrix;
- matrix_clear(&matrix);
- matrix_render_user(&matrix);
- matrix_update(&display, &matrix);
-}
-#endif//SSD1306OLED
+#endif
bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
diff --git a/keyboards/crkbd/keymaps/jarred/rules.mk b/keyboards/crkbd/keymaps/jarred/rules.mk
index c5a73d5bd6..f18100d7ff 100644
--- a/keyboards/crkbd/keymaps/jarred/rules.mk
+++ b/keyboards/crkbd/keymaps/jarred/rules.mk
@@ -16,19 +16,17 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SWAP_HANDS_ENABLE = no # Enable one-hand typing
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
# Do 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/glcdfont.c \
- ./lib/rgb_state_reader.c \
+SRC += ./lib/rgb_state_reader.c \
./lib/logo_reader.c \
./lib/keylogger.c \
#./lib/layer_state_reader.c \
# ./lib/mode_icon_reader.c \
# ./lib/host_led_state_reader.c \
# ./lib/timelogger.c \
-
-VPATH += keyboards/crkbd/lib
-LIB_SRC += ssd1306.c i2c.c
diff --git a/keyboards/crkbd/keymaps/joe_scotto/config.h b/keyboards/crkbd/keymaps/joe_scotto/config.h
new file mode 100644
index 0000000000..e38d4a9183
--- /dev/null
+++ b/keyboards/crkbd/keymaps/joe_scotto/config.h
@@ -0,0 +1,66 @@
+/*
+Copyright 2022 Joe Scotto
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 6
+#define MATRIX_ROW_PINS \
+ { D4, C6, D7, E6 }
+
+// wiring of each half
+#define MATRIX_COL_PINS \
+ { F4, F5, F6, F7, B1, B3 }
+// #define MATRIX_COL_PINS { 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 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 USE_SERIAL
+
+#define TAPPING_TERM 50 \ No newline at end of file
diff --git a/keyboards/crkbd/keymaps/joe_scotto/keymap.c b/keyboards/crkbd/keymaps/joe_scotto/keymap.c
new file mode 100644
index 0000000000..9e49aa6df7
--- /dev/null
+++ b/keyboards/crkbd/keymaps/joe_scotto/keymap.c
@@ -0,0 +1,46 @@
+/*
+Copyright 2022 Joe Scotto
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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_ENT, 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_ESC), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LALT, KC_LGUI, KC_SPC, MO(1), MO(2), KC_LCTL
+ ),
+ [1] = LAYOUT_split_3x6_3(
+ KC_GRV, KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_NO, KC_NO, KC_MRWD, KC_MPLY, KC_MFFD, KC_NO, KC_DEL,
+ KC_ENT, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_BSLS, KC_NO, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_CAPS,
+ LSFT_T(KC_ESC), KC_LBRC, KC_QUOT, KC_DQUO, KC_RBRC, KC_NO, KC_NO, KC_VOLD, KC_MUTE, KC_VOLU, KC_NO, KC_RSFT,
+ KC_LALT, KC_LGUI, KC_SPC, KC_NO, KC_NO, KC_LCTL
+ ),
+ [2] = 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_ENT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_CAPS,
+ LSFT_T(KC_ESC), KC_NO, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, KC_NO, KC_RSFT,
+ KC_LALT, KC_LGUI, KC_SPC, KC_NO, KC_NO, KC_LCTL
+ ),
+ [3] = LAYOUT_split_3x6_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,
+ QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LGUI,
+ LSFT_T(KC_ESC), KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT,
+ KC_LALT, KC_LGUI, KC_SPC, KC_NO, KC_NO, KC_LCTL
+ )
+};
+
diff --git a/keyboards/crkbd/keymaps/jpe230/keymap.c b/keyboards/crkbd/keymaps/jpe230/keymap.c
index c5ec473fed..28bb6c1fe1 100644
--- a/keyboards/crkbd/keymaps/jpe230/keymap.c
+++ b/keyboards/crkbd/keymaps/jpe230/keymap.c
@@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[3] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
- KC_MUTE, KC_WBAK, KC_WFWD, KC_F7, KC_F8, KC_F9, _______, KC_7, KC_8, KC_9, _______, RESET,
+ KC_MUTE, KC_WBAK, KC_WFWD, KC_F7, KC_F8, KC_F9, _______, KC_7, KC_8, KC_9, _______, QK_BOOT,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_VOLU, _______, KC_MNXT, KC_F6, KC_F5, KC_F6, _______, KC_6, KC_5, KC_4, _______, _______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/crkbd/keymaps/julian_turner/config.h b/keyboards/crkbd/keymaps/julian_turner/config.h
new file mode 100644
index 0000000000..cf3e80b23e
--- /dev/null
+++ b/keyboards/crkbd/keymaps/julian_turner/config.h
@@ -0,0 +1,34 @@
+/* Copyright 2022 Julian Turner
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 MANUFACTURER
+#define MANUFACTURER Trner
+
+/* Select hand configuration */
+#define MASTER_LEFT
+
+// Configure the global tapping term (default: 200ms)
+#define TAPPING_TERM 500
+
+// 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
+
+//#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
diff --git a/keyboards/crkbd/keymaps/julian_turner/keymap.c b/keyboards/crkbd/keymaps/julian_turner/keymap.c
new file mode 100644
index 0000000000..f293f4eb2c
--- /dev/null
+++ b/keyboards/crkbd/keymaps/julian_turner/keymap.c
@@ -0,0 +1,61 @@
+/* Copyright 2022 Julian Turner
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+#include "layers.h"
+#include "keytabs.h"
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTZ] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UDIA,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ XXXXXXX, HOME_A, HOME_S, HOME_D, HOME_F, DE_G, DE_H, HOME_J, HOME_K, HOME_L, HOME_OE, DE_ADIA,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LEFT_CTRL, DE_Y, DE_X, DE_C, DE_V, DE_B, DE_N, DE_M, KC_COMM, DE_DOT, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ MO(_NUMBER), MO(_SYMBOL), KC_SPC, KC_BSPACE, KC_ENTER, XXXXXXX
+ //`--------------------------' `--------------------------'
+
+ ),
+ [_SYMBOL] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ XXXXXXX, XXXXXXX, DE_UNDS, DE_LBRC, DE_RBRC, DE_CIRC, DE_EXLM, DE_LABK, DE_RABK, DE_EQL, DE_AMPR, DE_SS,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ XXXXXXX, DE_BSLS, DE_SLSH, DE_LCBR, DE_RCBR, DE_ASTR, DE_QUES, DE_LPRN, DE_RPRN, DE_MINS, DE_AT, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LEFT_CTRL, DE_HASH, DE_DLR, DE_PIPE, DE_TILD, DE_GRV, DE_PLUS, DE_PERC, DE_DQUO, DE_QUOT, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ MO(_NUMBER), MO(_SYMBOL), KC_SPC, KC_BSPACE, KC_ENTER, XXXXXXX
+ //`--------------------------' `--------------------------'
+
+ ),
+ [_NUMBER] = LAYOUT_split_3x6_3(
+ //,-----------------------------------------------------. ,-----------------------------------------------------.
+ XXXXXXX, XXXXXXX, KC_PAGE_UP, KC_UP, KC_PAGE_DOWN, XXXXXXX, XXXXXXX, DE_7, DE_8, DE_9, DE_ASTR, DE_SLSH,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX, XXXXXXX, DE_4, DE_5, DE_6, DE_PLUS, DE_MINS,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_LEFT_CTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DE_1, DE_2, DE_3, XXXXXXX, XXXXXXX,
+ //|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
+ MO(_NUMBER), MO(_SYMBOL), KC_SPC, KC_BSPACE, KC_ENTER, DE_0
+ //`--------------------------' `--------------------------'
+
+ ),
+};
+// clang-format off
diff --git a/keyboards/crkbd/keymaps/julian_turner/keytabs.h b/keyboards/crkbd/keymaps/julian_turner/keytabs.h
new file mode 100644
index 0000000000..fd81049d83
--- /dev/null
+++ b/keyboards/crkbd/keymaps/julian_turner/keytabs.h
@@ -0,0 +1,27 @@
+/* Copyright 2022 Julian Turner
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// Left-hand home row mods
+#define HOME_A LGUI_T(DE_A)
+#define HOME_S LALT_T(DE_S)
+#define HOME_D LSFT_T(DE_D)
+#define HOME_F LCTL_T(DE_F)
+
+// Right-hand home row mods
+#define HOME_J RCTL_T(DE_J)
+#define HOME_K RSFT_T(DE_K)
+#define HOME_L LALT_T(DE_L)
+#define HOME_OE RGUI_T(DE_ODIA)
diff --git a/keyboards/crkbd/keymaps/julian_turner/layers.h b/keyboards/crkbd/keymaps/julian_turner/layers.h
new file mode 100644
index 0000000000..ff27c18763
--- /dev/null
+++ b/keyboards/crkbd/keymaps/julian_turner/layers.h
@@ -0,0 +1,19 @@
+/* Copyright 2022 Julian Turner
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 { _QWERTZ, _SYMBOL, _NUMBER }; \ No newline at end of file
diff --git a/keyboards/crkbd/keymaps/julian_turner/oled.c b/keyboards/crkbd/keymaps/julian_turner/oled.c
new file mode 100644
index 0000000000..f6b022d5ec
--- /dev/null
+++ b/keyboards/crkbd/keymaps/julian_turner/oled.c
@@ -0,0 +1,74 @@
+/* Copyright 2022 Julian Turner
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "layers.h"
+
+
+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 | default_layer_state)) {
+ case _QWERTZ:
+ oled_write_ln_P(PSTR("QWERTZ"), false);
+ break;
+ case _SYMBOL:
+ oled_write_ln_P(PSTR("SYMBOL"), false);
+ break;
+ case _NUMBER:
+ oled_write_ln_P(PSTR("NUMBER"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("unknown"), false);
+ break;
+ }
+}
+
+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_write_P(PSTR("WPM: "), false);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ } else {
+ oled_render_logo();
+ }
+ return false;
+} \ No newline at end of file
diff --git a/keyboards/crkbd/keymaps/julian_turner/oled.h b/keyboards/crkbd/keymaps/julian_turner/oled.h
new file mode 100644
index 0000000000..5fcf62d0aa
--- /dev/null
+++ b/keyboards/crkbd/keymaps/julian_turner/oled.h
@@ -0,0 +1,27 @@
+/* Copyright 2022 Julian Turner
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 OLED_ENABLE
+bool process_record_oled(uint16_t keycode, keyrecord_t *record);
+oled_rotation_t oled_init_user(oled_rotation_t rotation);
+void render_layer_symbol(void);
+void render_layer_name(void);
+void render_mod_state(uint8_t modifiers);
+void render_status(void);
+bool oled_task_user(void);
+#endif \ No newline at end of file
diff --git a/keyboards/crkbd/keymaps/julian_turner/readme.md b/keyboards/crkbd/keymaps/julian_turner/readme.md
new file mode 100644
index 0000000000..ab1be58225
--- /dev/null
+++ b/keyboards/crkbd/keymaps/julian_turner/readme.md
@@ -0,0 +1,5 @@
+# JulianTurner´s CRKBD Layout
+
+## Compile
+
+Compile using `qmk compile -kb crkbd -km julian_turner` for Pro Micro
diff --git a/keyboards/crkbd/keymaps/julian_turner/rules.mk b/keyboards/crkbd/keymaps/julian_turner/rules.mk
new file mode 100644
index 0000000000..e6ddd80076
--- /dev/null
+++ b/keyboards/crkbd/keymaps/julian_turner/rules.mk
@@ -0,0 +1,15 @@
+RGBLIGHT_ENABLE = yes
+
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
+
+
+# Enables Link Time Optimization (LTO) when compiling the keyboard. This makes the process take longer, but it can significantly reduce the compiled size (and since the firmware is small, the added time is not noticeable).
+LTO_ENABLE = yes
+
+
+
+ifeq ($(OLED_ENABLE),yes)
+ SRC += ./oled.c
+endif
diff --git a/keyboards/crkbd/keymaps/kidbrazil/config.h b/keyboards/crkbd/keymaps/kidbrazil/config.h
index e44ae520f4..2801436709 100644
--- a/keyboards/crkbd/keymaps/kidbrazil/config.h
+++ b/keyboards/crkbd/keymaps/kidbrazil/config.h
@@ -29,9 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-#define SSD1306OLED
-#define USE_SSD_I2C
-
#define USE_SERIAL_PD2
#define TAPPING_FORCE_HOLD
diff --git a/keyboards/crkbd/keymaps/kidbrazil/keymap.c b/keyboards/crkbd/keymaps/kidbrazil/keymap.c
index 219db22433..6a1e2e0cde 100644
--- a/keyboards/crkbd/keymaps/kidbrazil/keymap.c
+++ b/keyboards/crkbd/keymaps/kidbrazil/keymap.c
@@ -182,13 +182,13 @@ bool oled_task_user(void) {
master_oled_cleared = true;
}
render_logo();
- return;
+ return false;
}
// Drashna style timeout for LED and OLED Roughly 8mins
else if (timer_elapsed32(oled_timer) > 480000) {
oled_off();
rgb_matrix_disable_noeeprom();
- return;
+ return false;
}
else {
oled_on();
diff --git a/keyboards/crkbd/keymaps/kidbrazil/rules.mk b/keyboards/crkbd/keymaps/kidbrazil/rules.mk
index 5566a6130b..d2c2f649e0 100644
--- a/keyboards/crkbd/keymaps/kidbrazil/rules.mk
+++ b/keyboards/crkbd/keymaps/kidbrazil/rules.mk
@@ -11,6 +11,3 @@ OLED_DRIVER = SSD1306
# If you want to change the display of OLED, you need to change here
SRC += logo_reader.c \
layer.c
-
-VPATH += keyboards/crkbd/lib
-LIB_SRC += ssd1306.c i2c.c
diff --git a/keyboards/crkbd/keymaps/madhatter/config.h b/keyboards/crkbd/keymaps/madhatter/config.h
index bcf4e05005..6cbe5befb8 100644
--- a/keyboards/crkbd/keymaps/madhatter/config.h
+++ b/keyboards/crkbd/keymaps/madhatter/config.h
@@ -28,9 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-#define SSD1306OLED
-#define USE_SSD_I2C
-
#define USE_SERIAL_PD2
#define TAPPING_FORCE_HOLD
diff --git a/keyboards/crkbd/keymaps/madhatter/keymap.c b/keyboards/crkbd/keymaps/madhatter/keymap.c
index c228a7b573..59b4cc7a20 100644
--- a/keyboards/crkbd/keymaps/madhatter/keymap.c
+++ b/keyboards/crkbd/keymaps/madhatter/keymap.c
@@ -17,10 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
-#ifdef SSD1306OLED
-# include "ssd1306.h"
-# include <string.h>
-#endif
+#include <string.h>
enum corny_layers {
_QWERTY,
@@ -86,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
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, RESET,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_TRNS, LOWER, KC_TRNS, KC_TRNS, RAISE, KC_TRNS
//`--------------------------' `--------------------------'
@@ -108,14 +105,9 @@ void matrix_init_user(void) {
#ifdef RGBLIGHT_ENABLE
RGB_current_mode = rgblight_get_mode();
#endif
- //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
- #ifdef SSD1306OLED
- iota_gfx_init(); // turns on the display
- #endif
}
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
+#ifdef OLED_ENABLE
// When add source files to SRC in rules.mk, you can use functions.
const char *read_layer_state(void);
@@ -129,42 +121,26 @@ const char *read_keylogs(void);
// void set_timelog(void);
// const char *read_timelog(void);
-void matrix_scan_user(void) {
- iota_gfx_task();
-}
-
-void matrix_render_user(struct CharacterMatrix *matrix) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
// If you want to change the display of OLED, you need to change here
- matrix_write(matrix, read_layer_state());
- matrix_write(matrix, read_keylog());
- //matrix_write_ln(matrix, read_keylogs());
- //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
- //matrix_write_ln(matrix, read_host_led_state());
- //matrix_write_ln(matrix, read_timelog());
+ oled_write(read_layer_state(), false);
+ oled_write(read_keylog(), false);
+ //oled_write_ln(read_keylogs(), false);
+ //oled_write_ln(read_mode_icon(keymap_config.swap_lalt_lgui), false);
+ //oled_write_ln(read_host_led_state(), false);
+ //oled_write_ln(read_timelog(), false);
} else {
- matrix_write(matrix, read_logo());
+ oled_write(read_logo(), false);
}
+ return false;
}
-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;
- }
-}
-
-void iota_gfx_task_user(void) {
- struct CharacterMatrix matrix;
- matrix_clear(&matrix);
- matrix_render_user(&matrix);
- matrix_update(&display, &matrix);
-}
-#endif//SSD1306OLED
+#endif
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
-#ifdef SSD1306OLED
+#ifdef OLED_ENABLE
set_keylog(keycode, record);
#endif
// set_timelog();
diff --git a/keyboards/crkbd/keymaps/madhatter/rules.mk b/keyboards/crkbd/keymaps/madhatter/rules.mk
index 489b16ef1c..89a2791bcd 100644
--- a/keyboards/crkbd/keymaps/madhatter/rules.mk
+++ b/keyboards/crkbd/keymaps/madhatter/rules.mk
@@ -1,13 +1,11 @@
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
# If you want to change the display of OLED, you need to change here
-SRC += ./lib/glcdfont.c \
- ./lib/rgb_state_reader.c \
+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 \
-
-VPATH += keyboards/crkbd/lib
-LIB_SRC += ssd1306.c i2c.c
diff --git a/keyboards/crkbd/keymaps/mb_via/keymap.c b/keyboards/crkbd/keymaps/mb_via/keymap.c
index b7fbc1c290..30a67de5c9 100644
--- a/keyboards/crkbd/keymaps/mb_via/keymap.c
+++ b/keyboards/crkbd/keymaps/mb_via/keymap.c
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[3] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, 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,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/crkbd/keymaps/ninjonas/keymap.c b/keyboards/crkbd/keymaps/ninjonas/keymap.c
index bea80d2fd6..e29fda6deb 100644
--- a/keyboards/crkbd/keymaps/ninjonas/keymap.c
+++ b/keyboards/crkbd/keymaps/ninjonas/keymap.c
@@ -1,8 +1,6 @@
#include QMK_KEYBOARD_H
#include "ninjonas.h"
-uint8_t is_master;
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT_wrapper(
//,----------------------------------------------------. ,----------------------------------------------------.
diff --git a/keyboards/crkbd/keymaps/oled_sample/config.h b/keyboards/crkbd/keymaps/oled_sample/config.h
index 41568c5916..450653e46c 100644
--- a/keyboards/crkbd/keymaps/oled_sample/config.h
+++ b/keyboards/crkbd/keymaps/oled_sample/config.h
@@ -21,10 +21,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
//#define USE_MATRIX_I2C
-#ifdef KEYBOARD_crkbd_rev1_common
-# undef USE_I2C
-# define USE_SERIAL
-#endif
/* Select hand configuration */
diff --git a/keyboards/crkbd/keymaps/oled_sample/keymap.c b/keyboards/crkbd/keymaps/oled_sample/keymap.c
index 9daae9607d..2545f087f2 100644
--- a/keyboards/crkbd/keymaps/oled_sample/keymap.c
+++ b/keyboards/crkbd/keymaps/oled_sample/keymap.c
@@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT_split_3x6_3(
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, 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,
GUIEI, LOWER, KC_SPC, KC_ENT, RAISE, ALTKN
diff --git a/keyboards/crkbd/keymaps/ollyhayes/config.h b/keyboards/crkbd/keymaps/ollyhayes/config.h
new file mode 100644
index 0000000000..b7653e1c9a
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ollyhayes/config.h
@@ -0,0 +1,96 @@
+/* Copyright 2022 Olly Hayes (@ollyhayes)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 TAPPING_FORCE_HOLD
+#define TAPPING_TERM 100
+
+#define NO_ACTION_ONESHOT
+
+#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
+
+#define UNICODE_SELECTED_MODES UC_LNX
+
+#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_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_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_SOLID_COLOR
+// # 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 RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 200
+// # 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/crkbd/keymaps/ollyhayes/keymap.c b/keyboards/crkbd/keymaps/ollyhayes/keymap.c
new file mode 100644
index 0000000000..5b9bc6cd4e
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ollyhayes/keymap.c
@@ -0,0 +1,112 @@
+/* Copyright 2022 Olly Hayes (@ollyhayes)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "ollyhayes.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT_split_3x6_3(
+// +------------+------+------+---------+----------+---------+--------+----------+---------+--------+---------+---------+
+ NUM_SWITCH , 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_ENT ,
+ 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_LCTL , MO(PUNC) , MO(ARR) , KC_SPC , MO(PUNC) , KC_RCTL
+// +------------+------+------+---------+----------+---------+--------+----------+---------+--------+---------+---------+
+ ),
+
+ [QWERTY] = LAYOUT_split_3x6_3(
+// +---------+------+------+---------+---------+---------+---------+---------+---------+--------+---------+---------+
+ KC_TRNS , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_TRNS ,
+ KC_TRNS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_TRNS ,
+ 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
+// +---------+------+------+---------+---------+---------+---------+---------+---------+--------+---------+---------+
+ ),
+
+ [GAMES] = LAYOUT_split_3x6_3(
+// +---------+------+------+---------+---------+----------+---------+---------+---------+--------+---------+---------+
+ KC_TRNS , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_TRNS ,
+ KC_TRNS , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN , KC_TRNS ,
+ 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_LALT , KC_SPACE , MO(ARR) , KC_TRNS , KC_TRNS
+// +---------+------+------+---------+---------+----------+---------+---------+---------+--------+---------+---------+
+ ),
+
+ [NUM] = LAYOUT_split_3x6_3(
+// +---------+---------------+------+--------+---------+-----------+-----------+------+--------+------+---------+---------+
+ KC_TRNS , MO(FUNCTIONS) , KC_1 , KC_2 , KC_3 , DF(BASE) , C(KC_GRV) , KC_7 , KC_8 , KC_9 , KC_TRNS , KC_TRNS ,
+ KC_TRNS , MO(MEDIA) , KC_4 , KC_5 , KC_6 , DF(GAMES) , KC_NO , KC_4 , KC_5 , KC_6 , KC_TRNS , KC_TRNS ,
+ KC_TRNS , KC_0 , KC_7 , KC_8 , KC_9 , DF(QWERTY), KC_NO , KC_1 , KC_2 , KC_3 , KC_TRNS , KC_TRNS ,
+ KC_DOT , KC_TRNS , KC_TAB , KC_TRNS , KC_0 , KC_DOT
+// +---------+---------------+------+--------+---------+-----------+-----------+------+--------+------+---------+---------+
+ ),
+
+ [FUNCTIONS] = LAYOUT_split_3x6_3(
+// +---------------+---------+---------+---------+---------+---------+---------+---------+---------+-------+---------+---------+
+ KC_TRNS , KC_TRNS , KC_TRNS , KC_F8 , KC_F9 , KC_F12 , KC_F12 , KC_F7 , KC_F8 , KC_F9 , KC_TRNS , KC_TRNS ,
+ TG(FUNCTIONS) , KC_TRNS , KC_F4 , KC_F5 , KC_F6 , KC_F11 , KC_F11 , KC_F4 , KC_F5 , KC_F6 , KC_TRNS , KC_TRNS ,
+ KC_TRNS , KC_TRNS , KC_F1 , KC_F2 , KC_F3 , KC_F10 , KC_F10 , KC_F1 , KC_F2 , KC_F3 , KC_TRNS , KC_TRNS ,
+ KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
+// +---------------+---------+---------+---------+---------+---------+---------+---------+---------+-------+---------+---------+
+ ),
+
+ [ARR] = LAYOUT_split_3x6_3(
+// +---------+---------+-----------+---------+---------+------------+-----------+---------+---------+-----------+---------+---------+
+ KC_TRNS , KC_TRNS , KC_HOME , KC_PGUP , KC_PGDN , KC_END , KC_HOME , KC_PGDN , KC_PGUP , KC_END , KC_TRNS , KC_TRNS ,
+ KC_ENT , KC_DEL , KC_LEFT , KC_UP , KC_DOWN , KC_RGHT , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT , KC_DEL , KC_TRNS ,
+ KC_TRNS , KC_INS , C(KC_LEFT), KC_LGUI , KC_LALT , C(KC_RGHT) , C(KC_LEFT), DOWN4 , UP4 , C(KC_RGHT), KC_INS , KC_TRNS ,
+ KC_TRNS , KC_F12 , KC_TRNS , KC_TRNS , KC_F12 , KC_TRNS
+// +---------+---------+-----------+---------+---------+------------+-----------+---------+---------+-----------+---------+---------+
+ ),
+
+ [PUNC] = LAYOUT_split_3x6_3(
+// +---------+------------+-----------+-----------+-------------+------------+------------+-------------+------------+------------+-----------+---------+
+ ALTTAB , S(KC_1) , S(KC_2) , UC(0x20ac), S(KC_4) , S(KC_5) , S(KC_6) , S(KC_7) , S(KC_8) , S(KC_9) , S(KC_0) , KC_TRNS ,
+ KC_TRNS , S(KC_NUBS) , S(KC_GRV) , KC_LBRC , KC_RBRC , S(KC_NUHS) , KC_QUOT , S(KC_LBRC) , S(KC_RBRC) , KC_MINS , S(KC_EQL) , KC_TRNS ,
+ KC_TRNS , KC_NUBS , KC_GRV , KC_LGUI , KC_LALT , KC_NUHS , S(KC_QUOT) , KC_LALT , KC_LGUI , S(KC_MINS) , KC_EQL , KC_TRNS ,
+ KC_TRNS , MO(DUBPUNC) , KC_MPLY , KC_TRNS , MO(DUBPUNC) , KC_TRNS
+// +---------+------------+-----------+-----------+-------------+------------+------------+-------------+------------+------------+-----------+---------+
+ ),
+
+ [MEDIA] = LAYOUT_split_3x6_3(
+// +------------+-----------+---------+---------+---------+----------------+----------------+---------+---------+---------+----------+---------+
+ QK_BOOT , RGB_RMOD , RGB_MOD , RGB_TOG , RGB_HUD , RGB_HUI , RGB_HUD , RGB_HUI , RGB_TOG , RGB_RMOD, RGB_MOD , KC_SLEP ,
+ KC_TRNS , KC_TRNS , KC_TRNS , KC_VOLD , KC_VOLU , RGB_MODE_PLAIN , RGB_MODE_PLAIN , KC_VOLD , KC_VOLU , KC_TRNS , KC_TRNS , KC_TRNS ,
+ KC_TRNS , KC_TRNS , RGB_VAD , RGB_VAI , RGB_SAD , RGB_SAI , RGB_SAD , RGB_SAI , RGB_VAD , RGB_VAI , KC_TRNS , KC_TRNS ,
+ KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
+// +------------+-----------+---------+---------+---------+----------------+----------------+---------+---------+---------+----------+---------+
+ ),
+
+ [DUBPUNC] = LAYOUT_split_3x6_3(
+// +---------+----------+-----------+-----------+------------+---------+-----------+---------+----------+---------+----------+---------+
+ KC_TRNS , KC_TRNS , KC_TRNS , UC(0x00a3), KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , U_UMLAUT , KC_TRNS , KC_TRNS , KC_TRNS ,
+ KC_TRNS , A_UMLAUT , KC_TRNS , UC(0x00df), UC(0x2713) , KC_TRNS , UC(0x00b0), KC_TRNS , KC_TRNS , KC_TRNS , O_UMLAUT , KC_TRNS ,
+ KC_TRNS , KC_TRNS , UC(0x2717), KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
+ KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS
+// +---------+----------+-----------+-----------+------------+---------+-----------+---------+----------+---------+----------+---------+
+ )
+};
+
+/*
+[TEMPLATE] = LAYOUT_split_3x6_3(
+// +--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+
+ KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
+ KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
+ KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , 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/crkbd/keymaps/ollyhayes/oled.c b/keyboards/crkbd/keymaps/ollyhayes/oled.c
new file mode 100644
index 0000000000..33db85fbb7
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ollyhayes/oled.c
@@ -0,0 +1,112 @@
+/* Copyright 2022 Olly Hayes (@ollyhayes)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "ollyhayes.h"
+
+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;
+}
+
+#define L_BASE 0
+#define L_NUM 8
+#define L_FUNCTIONS 16
+#define L_ARR 32
+#define L_PUNC 64
+#define L_DUBPUNC 128
+#define L_MEDIA 256
+
+#define DL_COLEMAK 1
+#define DL_QWERTY 2
+#define DL_GAMES 4
+
+void oled_render_layer_state(void) {
+ oled_write_P(PSTR("Layer: "), false);
+ switch (layer_state) {
+ case L_BASE:
+ switch (default_layer_state) {
+ case DL_QWERTY:
+ oled_write_ln_P(PSTR("Qwerty"), false);
+ break;
+ case DL_GAMES:
+ oled_write_ln_P(PSTR("Games"), false);
+ break;
+ case DL_COLEMAK:
+ default:
+ oled_write_ln_P(PSTR("Colemak"), false);
+ break;
+ }
+ break;
+ case L_NUM:
+ oled_write_ln_P(PSTR("Numbers"), false);
+ break;
+ case L_FUNCTIONS:
+ case L_FUNCTIONS|L_NUM:
+ oled_write_ln_P(PSTR("Functions"), false);
+ break;
+ case L_ARR:
+ oled_write_ln_P(PSTR("Navigation"), false);
+ break;
+ case L_PUNC:
+ oled_write_ln_P(PSTR("Punctuation"), false);
+ break;
+ case L_MEDIA:
+ case L_MEDIA|L_NUM:
+ oled_write_ln_P(PSTR("Media"), false);
+ break;
+ case L_DUBPUNC:
+ case L_DUBPUNC|L_PUNC:
+ oled_write_ln_P(PSTR("Specials"), false);
+ break;
+ }
+}
+
+void oled_render_timer(void) {
+ static uint16_t microticks = 0;
+ static uint16_t ticks = 0;
+
+ if (microticks++ % 1000 == 0) {
+ ticks++;
+ }
+
+ oled_write_P(PSTR("Ticks: "), false);
+ oled_write_ln(get_u16_str(ticks, ' '), false);
+}
+
+void oled_render_presses(void) {
+ oled_write_P(PSTR("Presses: "), false);
+ oled_write_ln(get_u16_str(key_presses, ' '), false);
+}
+
+void oled_render_rgb_mode(void) {
+ oled_write_P(PSTR("Animation: "), false);
+ oled_write_ln(get_u8_str(rgb_matrix_get_mode(), ' '), false);
+}
+
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
+ oled_render_layer_state();
+ }
+ oled_render_timer();
+ if (is_keyboard_master()) {
+ oled_render_presses();
+ }
+ oled_render_rgb_mode();
+ return false;
+}
diff --git a/keyboards/crkbd/keymaps/ollyhayes/readme.md b/keyboards/crkbd/keymaps/ollyhayes/readme.md
new file mode 100644
index 0000000000..9e63f780ff
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ollyhayes/readme.md
@@ -0,0 +1,67 @@
+# ollyhayes's keymap for [Corne Keyboard (crkbd)](https://github.com/foostan/crkbd)
+
+## Keymap
+
+After many years of changing my keymap often and reperatedly, I finally came to a stable version. I've been using this for a while now with only small tweaks every so often.
+
+All layers are activated only whilst the layer key is held, except the default layers.
+
+Lots of keys are repeated on both sides. I find this really useful for two reasons:
+
+* I like to have the option to use the opposite hand to hold modifiers shift/ctrl etc as the hand pressing the key, I find this really comfortable.
+* When using the mouse, I like to be able to do common things with just my left hand.
+
+### Colemak
+
+The base layer:
+
+![colemak](https://i.imgur.com/uxLJzul.png)
+
+### Navigation
+
+All things for moving the cursor around, inspired by vim.
+
+* `câ†` is ctrl+left
+* `↓↓↓↓` is ↓ pressed four times
+
+![navigation](https://i.imgur.com/xfkA0ze.png)
+
+### Symbols
+
+The shifted number row and all brackets and other symbols.
+
+* `a/t` is alt-tab for window switching in windows/linux. Using some special code to release alt when the punc key is released, this works quite nicely.
+
+![symbols](https://i.imgur.com/t9Jygs1.png)
+
+### Specials
+
+Some extra symbols (linux only for now) that work by sending UTF sequences. Layer activated by holding both punctuation layer keys.
+
+![specials](https://i.imgur.com/AtPWKrA.png)
+
+### Numbers
+
+Numbpads (left version is reversed so 1, 2, 3 are easy to reach with one hand (like on a regular keyboard).
+
+Also the keys to switch the default layer are here.
+
+![numbers](https://i.imgur.com/9XXcAXK.png)
+
+### Functions
+
+Function keys, nothing too interesting.
+
+![functions](https://i.imgur.com/ttrw3FJ.png)
+
+### Games (default layer)
+
+Used for some games, qwerty with space bar and alt for the left hand.
+
+![games](https://i.imgur.com/zVvHWKd.png)
+
+### Qwerty (default layer)
+
+Mostly for guests.
+
+![qwerty](https://i.imgur.com/Bqs1bjV.png)
diff --git a/keyboards/crkbd/keymaps/ollyhayes/rules.mk b/keyboards/crkbd/keymaps/ollyhayes/rules.mk
new file mode 100644
index 0000000000..2dcd9007e5
--- /dev/null
+++ b/keyboards/crkbd/keymaps/ollyhayes/rules.mk
@@ -0,0 +1,17 @@
+SRC += oled.c
+
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+
+EXTRAKEY_ENABLE = yes
+UNICODE_ENABLE = yes
+
+RGBLIGHT_ENABLE = no
+RGB_MATRIX_ENABLE = yes
+# RGB_MATRIX_CUSTOM_USER = yes
+
+VIRTSER_ENABLE = yes
+
+LTO_ENABLE = yes
+
+MOUSEKEY_ENABLE = no
diff --git a/keyboards/crkbd/keymaps/rarick/keymap.c b/keyboards/crkbd/keymaps/rarick/keymap.c
index adf9555421..72be5d3c36 100644
--- a/keyboards/crkbd/keymaps/rarick/keymap.c
+++ b/keyboards/crkbd/keymaps/rarick/keymap.c
@@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[3] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/crkbd/keymaps/rmeli/keymap.c b/keyboards/crkbd/keymaps/rmeli/keymap.c
index f7901d1cfd..f8d298bbdd 100644
--- a/keyboards/crkbd/keymaps/rmeli/keymap.c
+++ b/keyboards/crkbd/keymaps/rmeli/keymap.c
@@ -119,7 +119,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_CONFIG] = LAYOUT_split_3x6_3(
//|-----------------------------------------------------| |-----------------------------------------------------|
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UC_MOD, KC_ASUP, NK_ON, XXXXXXX, XXXXXXX,DF(_QWY),
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UC_MOD, KC_ASUP, NK_ON, XXXXXXX, XXXXXXX,DF(_QWY),
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, XXXXXXX, KC_ASTG, NK_TOGG, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/crkbd/keymaps/rpbaptist/config.h b/keyboards/crkbd/keymaps/rpbaptist/config.h
index 3300684d63..994aef314e 100644
--- a/keyboards/crkbd/keymaps/rpbaptist/config.h
+++ b/keyboards/crkbd/keymaps/rpbaptist/config.h
@@ -26,11 +26,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EE_HANDS
#ifdef OLED_ENABLE
-# undef SSD1306OLED
# define OLED_TIMEOUT 600000
#endif
-#undef USE_I2C
#define USE_SERIAL_PD2
// #define FORCE_NKRO
diff --git a/keyboards/crkbd/keymaps/rpbaptist/keymap.c b/keyboards/crkbd/keymaps/rpbaptist/keymap.c
index a098c73d2c..a0186bf28d 100644
--- a/keyboards/crkbd/keymaps/rpbaptist/keymap.c
+++ b/keyboards/crkbd/keymaps/rpbaptist/keymap.c
@@ -157,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_UTIL] = LAYOUT_split_3x6_3( \
//,-----------------------------------------------------. ,-----------------------------------------------------.
- RESET, XXXXXXX, KC_MPRV, KC_VOLU, KC_MNXT, COLEMAK, RGB_IDL, RGB_MAP, RGB_NXS, XXXXXXX, RGB_HUD, RGB_HUI,\
+ QK_BOOT, XXXXXXX, KC_MPRV, KC_VOLU, KC_MNXT, COLEMAK, RGB_IDL, RGB_MAP, RGB_NXS, XXXXXXX, RGB_HUD, RGB_HUI,\
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
RGB_RST, XXXXXXX, KC_MSTP, KC_VOLD, KC_MPLY, GAMING, RGB_UND, RGB_DUO, RGB_SCR, RGB_SPI, RGB_SAD, RGB_SAI,\
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/crkbd/keymaps/rs/config.h b/keyboards/crkbd/keymaps/rs/config.h
index a2d5092dee..60f33e7585 100644
--- a/keyboards/crkbd/keymaps/rs/config.h
+++ b/keyboards/crkbd/keymaps/rs/config.h
@@ -28,8 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-// #define SSD1306OLED
-
#define USE_SERIAL_PD2
#define TAPPING_FORCE_HOLD
diff --git a/keyboards/crkbd/keymaps/rs/oled.c b/keyboards/crkbd/keymaps/rs/oled.c
index bd8ae7d299..a4c71daac2 100644
--- a/keyboards/crkbd/keymaps/rs/oled.c
+++ b/keyboards/crkbd/keymaps/rs/oled.c
@@ -1,13 +1,10 @@
-#ifdef SSD1306OLED
+#ifdef OLED_ENABLE
#include QMK_KEYBOARD_H
-#include "ssd1306.h"
#ifdef PROTOCOL_LUFA
#include "lufa.h"
#include "split_util.h"
#endif
-extern uint8_t is_master;
-
// When add source files to SRC in rules.mk, you can use functions.
const char *read_logo(void);
const char *read_keylog(void);
@@ -47,7 +44,6 @@ void update_keymap_status(void) {
#endif
void matrix_init_user(void) {
- iota_gfx_init(!has_usb()); // turns on the display
update_keymap_status();
}
@@ -74,31 +70,18 @@ layer_state_t layer_state_set_user(layer_state_t state) {
}
static inline void render_keymap_status(struct CharacterMatrix *matrix) {
- matrix_write(matrix, layer_status_buf);
+ oled_write(layer_status_buf);
}
-void matrix_render_user(struct CharacterMatrix *matrix) {
- if (is_master) {
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
render_keymap_status(matrix);
- matrix_write_ln(matrix, read_keylog());
- matrix_write_ln(matrix, read_keylogs());
+ oled_write_ln(read_keylog(), false);
+ oled_write_ln(read_keylogs(), false);
} else {
- matrix_write(matrix, read_logo());
- }
-}
-
-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;
+ oled_write(read_logo(), false);
}
-}
-
-void iota_gfx_task_user(void) {
- struct CharacterMatrix matrix;
- matrix_clear(&matrix);
- matrix_render_user(&matrix);
- matrix_update(&display, &matrix);
+ return false;
}
#endif
diff --git a/keyboards/crkbd/keymaps/rs/rules.mk b/keyboards/crkbd/keymaps/rs/rules.mk
index c754ebdcbc..5a76c38f38 100644
--- a/keyboards/crkbd/keymaps/rs/rules.mk
+++ b/keyboards/crkbd/keymaps/rs/rules.mk
@@ -25,7 +25,6 @@ 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 += oled.c \
- ./lib/glcdfont.c \
./lib/rgb_state_reader.c \
./lib/layer_state_reader.c \
./lib/logo_reader.c \
diff --git a/keyboards/crkbd/keymaps/soundmonster/config.h b/keyboards/crkbd/keymaps/soundmonster/config.h
index 3a31f8613f..2d2b394369 100644
--- a/keyboards/crkbd/keymaps/soundmonster/config.h
+++ b/keyboards/crkbd/keymaps/soundmonster/config.h
@@ -28,10 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-// #define SSD1306OLED
-#undef USE_I2C
-#undef SSD1306OLED
-
#define USE_SERIAL_PD2
// #define TAPPING_FORCE_HOLD
diff --git a/keyboards/crkbd/keymaps/soundmonster/keymap.c b/keyboards/crkbd/keymaps/soundmonster/keymap.c
index 70fe50e967..66839e8249 100644
--- a/keyboards/crkbd/keymaps/soundmonster/keymap.c
+++ b/keyboards/crkbd/keymaps/soundmonster/keymap.c
@@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_split_3x6_3(
//,-----------------------------------------. ,-----------------------------------------.
- RESET,RGBRST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,KC__MUTE, KC_NO, KC_NO, KC_NO, KC_NO,
+ QK_BOOT,RGBRST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,KC__MUTE, KC_NO, KC_NO, KC_NO, KC_NO,
//|------+------+------+------+------+------| |------+------+------+------+------+------|
RGB_TOG,RGB_HUI,RGB_SAI,RGB_VAI,RGB_SPI,KC_NO, KC_PAUSE,KC__VOLUP, KC_NO, KC_NO, KC_NO, KC_NO,
//|------+------+------+------+------+------| |------+------+------+------+------+------|
diff --git a/keyboards/crkbd/keymaps/thumb_ctrl/config.h b/keyboards/crkbd/keymaps/thumb_ctrl/config.h
index 4aee2aed14..10b89aede5 100755
--- a/keyboards/crkbd/keymaps/thumb_ctrl/config.h
+++ b/keyboards/crkbd/keymaps/thumb_ctrl/config.h
@@ -28,8 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MASTER_RIGHT
// #define EE_HANDS
-// #define SSD1306OLED
-
#define USE_SERIAL_PD2
#define TAPPING_FORCE_HOLD
diff --git a/keyboards/crkbd/keymaps/thumb_ctrl/keymap.c b/keyboards/crkbd/keymaps/thumb_ctrl/keymap.c
index cbd7a46890..387839c16e 100755
--- a/keyboards/crkbd/keymaps/thumb_ctrl/keymap.c
+++ b/keyboards/crkbd/keymaps/thumb_ctrl/keymap.c
@@ -4,9 +4,6 @@
#include "lufa.h"
#include "split_util.h"
#endif
-#ifdef SSD1306OLED
- #include "ssd1306.h"
-#endif
extern keymap_config_t keymap_config;
@@ -40,7 +37,7 @@ enum custom_keycodes {
#define KC_XXXXX KC_NO
#define KC_LOWER LOWER
#define KC_RAISE RAISE
-#define KC_RST RESET
+#define KC_RST QK_BOOT
#define KC_LRST RGBRST
#define KC_LTOG RGB_TOG
#define KC_LHUI RGB_HUI
@@ -129,14 +126,9 @@ 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
}
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
+#ifdef OLED_ENABLE
// When add source files to SRC in rules.mk, you can use functions.
const char *read_layer_state(void);
@@ -150,42 +142,26 @@ const char *read_keylogs(void);
// void set_timelog(void);
// const char *read_timelog(void);
-void matrix_scan_user(void) {
- iota_gfx_task();
-}
-
-void matrix_render_user(struct CharacterMatrix *matrix) {
- if (is_master) {
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
// If you want to change the display of OLED, you need to change here
- matrix_write_ln(matrix, read_layer_state());
- matrix_write_ln(matrix, read_keylog());
- matrix_write_ln(matrix, read_keylogs());
- //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
- //matrix_write_ln(matrix, read_host_led_state());
- //matrix_write_ln(matrix, read_timelog());
+ oled_write_ln(read_layer_state(), false);
+ oled_write_ln(read_keylog(), false);
+ oled_write_ln(read_keylogs(), false);
+ //oled_write_ln(read_mode_icon(keymap_config.swap_lalt_lgui), false);
+ //oled_write_ln(read_host_led_state(), false);
+ //oled_write_ln(read_timelog(), false);
} else {
- matrix_write(matrix, read_logo());
+ oled_write(read_logo(), false);
}
+ return false;
}
-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;
- }
-}
-
-void iota_gfx_task_user(void) {
- struct CharacterMatrix matrix;
- matrix_clear(&matrix);
- matrix_render_user(&matrix);
- matrix_update(&display, &matrix);
-}
-#endif//SSD1306OLED
+#endif
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
-#ifdef SSD1306OLED
+#ifdef OLED_ENABLE
set_keylog(keycode, record);
#endif
// set_timelog();
diff --git a/keyboards/crkbd/keymaps/thumb_ctrl/rules.mk b/keyboards/crkbd/keymaps/thumb_ctrl/rules.mk
index e1d691834d..193aa14dac 100755
--- a/keyboards/crkbd/keymaps/thumb_ctrl/rules.mk
+++ b/keyboards/crkbd/keymaps/thumb_ctrl/rules.mk
@@ -16,19 +16,17 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SWAP_HANDS_ENABLE = no # Enable one-hand typing
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
# Do 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/glcdfont.c \
- ./lib/rgb_state_reader.c \
+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 \
-
-VPATH += keyboards/crkbd/lib
-LIB_SRC += ssd1306.c i2c.c
diff --git a/keyboards/crkbd/keymaps/thunderbird2086/config.h b/keyboards/crkbd/keymaps/thunderbird2086/config.h
new file mode 100644
index 0000000000..36afd9b469
--- /dev/null
+++ b/keyboards/crkbd/keymaps/thunderbird2086/config.h
@@ -0,0 +1,95 @@
+// Copyright 2021 Allen Choi (@thunderbird2086)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define EE_HANDS
+#define SPLIT_USB_DETECT
+
+// #define RGB_LAYER_ENABLE
+
+#define IGNORE_MOD_TAP_INTERRUPT
+#define PERMISSIVE_HOLD
+
+#if defined(TAPPING_TERM)
+# undef TAPPING_TERM
+#endif
+#define TAPPING_TERM 200
+
+#define NO_ACTION_ONESHOT
+
+#if defined(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/thunderbird2086/glcdfont.c"
+# undef OLED_TIMEOUT
+ // due to timer_read() for render_prompt(), we have own implementation of oled time out
+# define OLED_KEY_TIMEOUT 30000
+# define KEY_LOG_ENABLE
+#endif
+
+#define RGBLIGHT_SLEEP
+
+#if defined(RGBLIGHT_ENABLE)
+# define RGBLIGHT_LIMIT_VAL 150
+# define RGBLIGHT_HUE_STEP 16
+# define RGBLIGHT_SAT_STEP 32
+# define RGBLIGHT_VAL_STEP 32
+
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_KNIGHT
+#endif
+
+#if defined(RGB_MATRIX_ENABLE)
+# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# 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_HUE_STEP 32
+# define RGB_MATRIX_SAT_STEP 64
+# define RGB_MATRIX_VAL_STEP 64
+# define RGB_MATRIX_SPD_STEP 20
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
+
+/* 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
+# undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+# 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
+# undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+# undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# 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_JELLYBEAN_RAINDROPS
+# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# undef 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_CROSS
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_RGB_MATRIX_SPLASH
+# undef ENABLE_RGB_MATRIX_MULTISPLASH
+# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
+# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
diff --git a/keyboards/crkbd/keymaps/thunderbird2086/glcdfont.c b/keyboards/crkbd/keymaps/thunderbird2086/glcdfont.c
new file mode 100644
index 0000000000..97dc8fdaa3
--- /dev/null
+++ b/keyboards/crkbd/keymaps/thunderbird2086/glcdfont.c
@@ -0,0 +1,238 @@
+// Copyright 2021 Allen Choi (@thunderbird2086)
+// 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.
+// https://helixfonteditor.netlify.com/
+
+#include "progmem.h"
+
+// clang-format off
+// Standard ASCII 5x7 font
+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, 0x20, 0x20, 0xF8,
+ 0x0C, 0x04, 0xE7, 0xE4, 0xE4, 0x07,
+ 0x04, 0xE4, 0xE7, 0xE4, 0x04, 0x07,
+ 0xE4, 0xE4, 0xE7, 0x04, 0x0C, 0xF8,
+ 0x20, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x40, 0x40, 0x20, 0x20,
+ 0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
+ 0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
+ 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0,
+ 0xF0, 0xF0, 0xF8, 0xF8, 0xF0, 0xF0,
+ 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80,
+ 0x80, 0x80, 0x40, 0x40, 0x20, 0x20,
+ 0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
+ 0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
+ 0x80, 0x80, 0x40, 0xC0, 0x60, 0xA0,
+ 0x50, 0xB0, 0x58, 0xA8, 0x50, 0xB0,
+ 0x60, 0xA0, 0x40, 0xC0, 0x80, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+ 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30,
+ 0x00, 0x77, 0x55, 0x7F, 0x14, 0x7F,
+ 0x55, 0x77, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x60,
+ 0x70, 0x3E, 0x1F, 0x19, 0x18, 0x0C,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x08, 0x08, 0x00,
+ 0x00, 0x08, 0x08, 0x08, 0x00, 0x1C,
+ 0x22, 0x41, 0x41, 0x41, 0x22, 0x1C,
+ 0x00, 0x08, 0x08, 0x08, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x00, 0x00, 0x00,
+ 0x08, 0x0C, 0x5E, 0x5F, 0x5E, 0x0C,
+ 0x00, 0x00, 0x00, 0x49, 0x49, 0xFF,
+ 0x00, 0x00, 0x0F, 0x1F, 0x3F, 0x38,
+ 0x30, 0xFF, 0xFF, 0xFF, 0x30, 0x38,
+ 0x3F, 0x1F, 0x0F, 0x00, 0x00, 0xFF,
+ 0x49, 0x49, 0x00, 0x00, 0x00, 0x00,
+ 0x88, 0x88, 0x5D, 0x5D, 0x3E, 0x3E,
+ 0x7C, 0x7C, 0xF8, 0xF8, 0x7C, 0x7C,
+ 0x3E, 0x3E, 0x5D, 0x5D, 0x88, 0x88,
+ 0x88, 0x88, 0x55, 0x55, 0x23, 0x23,
+ 0x47, 0x47, 0x8F, 0x8F, 0x47, 0x47,
+ 0x23, 0x23, 0x55, 0x55, 0x88, 0x88,
+ 0x88, 0x88, 0xD5, 0xD5, 0xE2, 0xE2,
+ 0xC4, 0xC4, 0x88, 0x88, 0xC4, 0xC4,
+ 0xE2, 0xE2, 0xD5, 0xD5, 0x88, 0x88,
+ 0x88, 0x88, 0x5D, 0xD5, 0x6B, 0xB6,
+ 0x6D, 0xD6, 0xAD, 0xDA, 0x6D, 0xD6,
+ 0x6B, 0xB6, 0x5D, 0xD5, 0x88, 0x88,
+ 0x00, 0x00, 0x00, 0x06, 0x06, 0x06,
+ 0x0C, 0x18, 0x30, 0x66, 0x66, 0x66,
+ 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xF0, 0x90, 0x90, 0xF0, 0x90, 0x90,
+ 0xF0, 0x98, 0x9C, 0xF2, 0x22, 0x21,
+ 0xE1, 0x01, 0x01, 0x01, 0xF1, 0x91,
+ 0x91, 0xFA, 0x4C, 0x4C, 0xF8, 0x48,
+ 0x48, 0xF8, 0x48, 0x48, 0xF8, 0x00,
+ 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00,
+ 0x00, 0x1C, 0x22, 0x00, 0x00, 0x1C,
+ 0x3E, 0x7F, 0x63, 0x41, 0x22, 0x1C,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0x0F,
+ 0x18, 0x10, 0x70, 0x10, 0x10, 0x70,
+ 0x10, 0x13, 0x73, 0x13, 0x10, 0x70,
+ 0x10, 0x10, 0x70, 0x10, 0x18, 0x0F,
+ 0x02, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+ 0x04, 0x04, 0x08, 0x08, 0x04, 0x04,
+ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+ 0x04, 0x04, 0x08, 0x08, 0x04, 0x04,
+ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x01, 0x03, 0x03,
+ 0x07, 0x07, 0x0F, 0x0F, 0x07, 0x07,
+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x01, 0x03, 0x02,
+ 0x05, 0x06, 0x0D, 0x0A, 0x05, 0x06,
+ 0x03, 0x02, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x1C, 0x22, 0xC9, 0xD1,
+ 0xC9, 0x22, 0x1C, 0x00, 0x00, 0x00,
+ 0x00, 0x10, 0x02, 0x39, 0xFC, 0xED,
+ 0xFC, 0x38, 0x02, 0x10, 0x00, 0x00,
+ 0x07, 0x04, 0x04, 0x07, 0x04, 0x04,
+ 0x07, 0x04, 0x04, 0x0F, 0x09, 0x09,
+ 0x0F, 0x00, 0x00, 0x00, 0x07, 0x04,
+ 0x04, 0x07, 0x02, 0x02, 0x03, 0x02,
+ 0x02, 0x03, 0x02, 0x02, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C,
+ 0x22, 0x41, 0x63, 0x7F, 0x3E, 0x1C,
+ 0x00, 0x00, 0x22, 0x1C, 0x00, 0x00,
+ 0x41, 0x22, 0x1C, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+// clang-format on
diff --git a/keyboards/crkbd/keymaps/thunderbird2086/keycodes.h b/keyboards/crkbd/keymaps/thunderbird2086/keycodes.h
new file mode 100644
index 0000000000..cb10a3ac07
--- /dev/null
+++ b/keyboards/crkbd/keymaps/thunderbird2086/keycodes.h
@@ -0,0 +1,69 @@
+// Copyright 2021 Allen Choi (@thunderbird2086)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+enum custom_keycodes {
+ // Layer Macros
+ COLEMAK = SAFE_RANGE,
+ QWERTY,
+ FUNCTION,
+ CODE,
+ ADJUST,
+ RGBRST,
+ // Secret Macros
+ M_XXX1,
+ M_XXX2,
+ M_XXX3,
+ M_XXX4,
+ M_XXX5,
+};
+
+
+enum layers {
+ _COLEMAK,
+ _QWERTY,
+ _FUNCTION,
+ _CODE,
+ _ADJUST,
+ _SECRET,
+};
+
+// Shortcut Keys
+#define K_BACK LGUI(KC_LBRC) // browser back
+#define K_FWRD LGUI(KC_RBRC) // browser forward
+#define K_LOCK LGUI(LCTL(KC_Q)) // Lock screen
+#define K_CSCN LGUI(LCTL(LSFT(KC_4))) // Copy a portion of the screen to the clipboard
+#define K_MDSH LSFT(LALT(KC_MINS))
+
+// Layer Keys
+#define FCT_BSP LT(_FUNCTION, KC_BSPC)
+#define FCT_DEL LT(_FUNCTION, KC_DEL)
+
+#define FCT_ENT LT(_FUNCTION, KC_ENT)
+#define RAI_ENT LT(_CODE , KC_ENT)
+
+#define FCT_EQL LT(_FUNCTION, KC_EQL)
+#define RAI_EQL LT(_CODE , KC_EQL)
+
+#define FCT_SPC LT(_FUNCTION, KC_SPC)
+#define RAI_SPC LT(_CODE , KC_SPC)
+
+#define FCT_TAB LT(_FUNCTION, KC_TAB)
+
+#define ADJ_EQL LT(_ADJUST, KC_EQL)
+#define ADJ_GRV LT(_ADJUST, KC_GRV)
+
+// Mod-Tap Keys
+#define SFT_SLSH MT(MOD_RSFT, KC_SLSH)
+#define SFT_Z MT(MOD_LSFT, KC_Z)
+
+#define CTL_QUOT MT(MOD_RCTL, KC_QUOT)
+#define CTL_SCLN MT(MOD_RCTL, KC_SCLN)
+#define CTL_A MT(MOD_LCTL, KC_A)
+#define CTL_O MT(MOD_LCTL, KC_O)
+
+#define M_LOPT_F MT(MOD_LALT, KC_F)
+#define M_LOPT_T MT(MOD_LALT, KC_T)
+#define RCMD_J MT(MOD_LGUI, KC_J)
+#define RCMD_N MT(MOD_RGUI, KC_N)
diff --git a/keyboards/crkbd/keymaps/thunderbird2086/keymap.c b/keyboards/crkbd/keymaps/thunderbird2086/keymap.c
new file mode 100644
index 0000000000..7bc23db8aa
--- /dev/null
+++ b/keyboards/crkbd/keymaps/thunderbird2086/keymap.c
@@ -0,0 +1,85 @@
+// Copyright 2021 Allen Choi (@thunderbird2086)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+#include "layers_block.h"
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_COLEMAK] = LAYOUT_wrapper(
+ // +---------+---------+---------+---------+---------+---------+ +---------+---------+---------+---------+---------+---------+
+ T_TAB , ___________________COLEMAK_DH_L1_______________ , ___________________COLEMAK_DH_R1_______________ , KC_MINS ,
+ // |---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------|
+ KC_LCTL , ___________________COLEMAK_DH_L2_______________ , ___________________COLEMAK_DH_R2_______________ , CTL_QUOT,
+ // |---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------|
+ KC_LSFT , ___________________COLEMAK_DH_L3_______________ , ___________________COLEMAK_DH_R3_______________ , ADJ_EQL ,
+ // +---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+
+ _________MOD_LEFT__________ , _________MOD_RIGHT_________
+ // \----------------------------/ \-----------------------------/
+ ),
+
+ [_QWERTY] = LAYOUT_wrapper(
+ // +---------+---------+---------+---------+---------+---------+ +---------+---------+---------+---------+---------+---------+
+ T_TAB , ___________________QWERTY_L1___________________ , ___________________QWERTY_R1___________________ , KC_MINS ,
+ // |---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------|
+ KC_LCTL , ___________________QWERTY_L2___________________ , ___________________QWERTY_R2___________________ , CTL_QUOT,
+ // |---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------|
+ KC_LSFT , ___________________QWERTY_L3___________________ , ___________________QWERTY_R3___________________ , ADJ_EQL ,
+ // +---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+
+ _________MOD_LEFT__________ , _________MOD_RIGHT_________
+ // \----------------------------/ \-----------------------------/
+ ),
+
+ [_FUNCTION] = LAYOUT_wrapper(
+ // +---------+---------+---------+---------+---------+---------+ +---------+---------+---------+---------+---------+---------+
+ KC_ESC , ___________________FUNC_LEFT___________________ , ___________________FUNC_RIGHT__________________ , KC_F11 ,
+ // |---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------|
+ K_CSCN , ____________________MEDIA_1____________________ , KC_DEL , _______________NAV_1_________________ , KC_F12 ,
+ // |---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------|
+ _______ , ____________________MEDIA_2____________________ , KC_INS , _______________NAV_2_________________ , K_LOCK ,
+ // +---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+
+ _______MOD_TRNS_LEFT_______ , _______MOD_TRNS_RIGHT______
+ // \----------------------------/ \-----------------------------/
+ ),
+
+ [_CODE] = LAYOUT_wrapper(
+ // +---------+---------+---------+---------+---------+---------+ +---------+---------+---------+---------+---------+---------+
+ T_GRV , ___________________NUM_LEFT____________________ , ___________________NUM_RIGHT___________________ , KC_BSLS ,
+ // |---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------|
+ ________________________SYMBOL_L1________________________ , ________________________SYMBOL_R1________________________ ,
+ // |---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------|
+ ________________________SYMBOL_L2________________________ , ________________________SYMBOL_R2________________________ ,
+ // +---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+
+ _______MOD_TRNS_LEFT_______ , _______MOD_TRNS_RIGHT______
+ // \----------------------------/ \-----------------------------/
+ ),
+
+ [_ADJUST] = LAYOUT_wrapper(
+ // +---------+---------+---------+---------+---------+---------+ +---------+---------+---------+---------+---------+---------+
+ ________________________ADJUST_L1________________________ , ________________________ADJUST_R1________________________ ,
+ // |---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------|
+ ________________________ADJUST_L2________________________ , ________________________ADJUST_R2________________________ ,
+ // |---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------|
+ ________________________ADJUST_L3________________________ , ________________________ADJUST_R3________________________ ,
+ // +---------+---------+---------+---------+---------+---------+ +---------+---------+---------+---------+---------+---------+
+ _______ , _______ , _______ , _______ , _______ , _______
+ // \----------------------------/ \-----------------------------/
+ ),
+
+ [_SECRET] = LAYOUT_wrapper(
+ // +---------+---------+---------+---------+---------+---------+ +---------+---------+---------+---------+---------+---------+
+ ________________________SECRET_L1________________________ , ________________________SECRET_R1________________________ ,
+ // |---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------|
+ ________________________SECRET_L2________________________ , ________________________SECRET_R2________________________ ,
+ // |---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------|
+ ________________________SECRET_L3________________________ , ________________________SECRET_R3________________________ ,
+ // +---------+---------+---------+---------+---------+---------+ +---------+---------+---------+---------+---------+---------+
+ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
+ // \----------------------------/ \-----------------------------/
+ )
+};
+// clang-format off
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _FUNCTION, _ADJUST, _SECRET);
+}
diff --git a/keyboards/crkbd/keymaps/thunderbird2086/layers_block.h b/keyboards/crkbd/keymaps/thunderbird2086/layers_block.h
new file mode 100644
index 0000000000..03d438306e
--- /dev/null
+++ b/keyboards/crkbd/keymaps/thunderbird2086/layers_block.h
@@ -0,0 +1,89 @@
+// Copyright 2021 Allen Choi (@thunderbird2086)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "keycodes.h"
+#include "tap_dances.h"
+
+// Layout blocks
+#define ___________________COLEMAK_DH_L1_______________ KC_Q , KC_W , KC_F , KC_P , KC_B
+#define ___________________COLEMAK_DH_L2_______________ CTL_A , KC_R , KC_S , M_LOPT_T, KC_G
+#define ___________________COLEMAK_DH_L3_______________ SFT_Z , KC_X , KC_C , KC_D , KC_V
+
+#define ___________________COLEMAK_DH_R1_______________ KC_J , KC_L , KC_U , KC_Y , KC_SCLN
+#define ___________________COLEMAK_DH_R2_______________ KC_M , RCMD_N , KC_E , KC_I , CTL_O
+#define ___________________COLEMAK_DH_R3_______________ KC_K , KC_H , KC_COMM , KC_DOT , SFT_SLSH
+
+#define ___________________QWERTY_L1___________________ KC_Q , KC_W , KC_E , KC_R , KC_T
+#define ___________________QWERTY_L2___________________ CTL_A , KC_S , KC_D , M_LOPT_F, KC_G
+#define ___________________QWERTY_L3___________________ SFT_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 , RCMD_J , KC_K , KC_L , CTL_SCLN
+#define ___________________QWERTY_R3___________________ KC_N , KC_M , KC_COMM , KC_DOT , SFT_SLSH
+
+#define ___________________COLEMAK_L1__________________ KC_Q , KC_W , KC_F , KC_P , KC_G
+#define ___________________COLEMAK_L2__________________ CTL_A , KC_R , KC_S , M_LOPT_T, KC_D
+#define ___________________COLEMAK_L3__________________ SFT_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 , RCMD_N , KC_E , KC_I , CTL_O
+#define ___________________COLEMAK_R3__________________ KC_K , KC_M , KC_COMM , KC_DOT , SFT_SLSH
+
+#define ___________________NUM_LEFT____________________ KC_1 , KC_2 , KC_3 , KC_4 , KC_5
+#define ___________________NUM_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 ________________________SYMBOL_L1________________________ KC_TILD , KC_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC
+#define ________________________SYMBOL_L2________________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
+
+#define ________________________SYMBOL_R1________________________ KC_CIRC , KC_AMPR , KC_ASTR , KC_LPRN , KC_RPRN , KC_PIPE
+#define ________________________SYMBOL_R2________________________ XXXXXXX , KC_LCBR , KC_RCBR , KC_LBRC , KC_RBRC , KC_PLUS
+
+
+#define ________________________ADJUST_L1________________________ RESET , XXXXXXX , KC_PWR , KC_WAKE , KC_SLEP , XXXXXXX
+
+#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE)
+# define ________________________ADJUST_L2________________________ RGBRST , XXXXXXX , RGB_SPI , RGB_SAI , RGB_HUI , RGB_VAI
+# define ________________________ADJUST_L3________________________ EEP_RST , XXXXXXX , RGB_SPD , RGB_SAD , RGB_HUD , RGB_VAD
+#else
+# define ________________________ADJUST_L2________________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
+# define ________________________ADJUST_L3________________________ EEP_RST , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
+#endif
+
+#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE)
+# define ________________________ADJUST_R1________________________ RGB_TOG , XXXXXXX , XXXXXXX , XXXXXXX , COLEMAK , QWERTY
+# define ________________________ADJUST_R3________________________ RGB_MOD , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
+#else
+# define ________________________ADJUST_R1________________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , COLEMAK , QWERTY
+# define ________________________ADJUST_R3________________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
+#endif
+#define ________________________ADJUST_R2________________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
+
+#define ________________________SECRET_L1________________________ M_XXX1 , XXXXXXX , M_XXX3 , XXXXXXX , M_XXX5 , XXXXXXX
+#define ________________________SECRET_L2________________________ XXXXXXX , M_XXX2 , XXXXXXX , M_XXX4 , XXXXXXX , XXXXXXX
+#define ________________________SECRET_L3________________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
+
+#define ________________________SECRET_R1________________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
+#define ________________________SECRET_R2________________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
+#define ________________________SECRET_R3________________________ XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX
+
+#define _______________NAV_1_________________ KC_LEFT , KC_UP , KC_RGHT , KC_PGUP
+#define _______________NAV_2_________________ KC_HOME , KC_DOWN , KC_END , KC_PGDN
+
+#define _______________MOUSE_1_______________ KC_BTN1 , KC_MS_U , KC_BTN2 , KC_WH_D
+#define _______________MOUSE_2_______________ KC_MS_L , KC_MS_D , KC_MS_R , KC_WH_U
+
+#define ____________________MEDIA_1____________________ KC_BRMU , KC_MFFD , KC_MPLY , KC_VOLU , K_BACK
+#define ____________________MEDIA_2____________________ KC_BRMD , KC_MRWD , KC_MUTE , KC_VOLD , K_FWRD
+
+#define _________MOD_LEFT__________ T_GUI , FCT_DEL , RAI_SPC
+#define _________MOD_RIGHT_________ RAI_ENT , FCT_BSP , KC_ROPT
+#define _______MOD_TRNS_LEFT_______ KC_TRNS , T_ESC , XXXXXXX
+#define _______MOD_TRNS_RIGHT______ XXXXXXX , T_ESC , KC_TRNS
+
+// Layout wrappers
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
diff --git a/keyboards/crkbd/keymaps/thunderbird2086/oled.c b/keyboards/crkbd/keymaps/thunderbird2086/oled.c
new file mode 100644
index 0000000000..bee9bc26de
--- /dev/null
+++ b/keyboards/crkbd/keymaps/thunderbird2086/oled.c
@@ -0,0 +1,298 @@
+// Copyright 2021 Allen Choi (@thunderbird2086)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+#include "keycodes.h"
+
+
+// 5x3 Logos
+void render_qmk_logo(void) {
+ static const char PROGMEM font_qmk_logo[16] = {
+ 0x80, 0x81, 0x82, 0x83, 0x84,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4,
+ 0
+ };
+ oled_write_P(font_qmk_logo, false);
+};
+
+// 5x2 Keyboard, Controller logos
+void render_kb_split(void) {
+ static const char PROGMEM font_kb_split[11] = {
+ 0xb5, 0xb6, 0xb7, 0xb8, 0xb9,
+ 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
+ 0
+ };
+ oled_write_P(font_kb_split, false);
+};
+
+// 5x1 Layer indicator
+
+void render_layer(void) {
+ static const char PROGMEM font_layer[4][6] = {
+ {0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0},
+ {0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0},
+ {0xda, 0xdb, 0xdc, 0xdd, 0xde, 0},
+ {0x95, 0x96, 0x97, 0x98, 0x99, 0},
+ };
+
+ uint8_t layer = 0;
+ if (layer_state_is(_FUNCTION)) {
+ layer = 1;
+ } else if (layer_state_is(_CODE)) {
+ layer = 2;
+ } else if (layer_state_is(_ADJUST)) {
+ layer = 3;
+ }
+ oled_write_P(font_layer[layer], false);
+};
+
+
+void render_layers(void) {
+ static const char PROGMEM font_layers[4][16] = {
+ {0x20, 0x85, 0x86, 0x87, 0x20,
+ 0x20, 0xa5, 0xa6, 0xa7, 0x20,
+ 0x20, 0xc5, 0xc6, 0xc7, 0x20,
+ 0},
+ {0x20, 0x88, 0x89, 0x8a, 0x20,
+ 0x20, 0xa8, 0xa9, 0xaa, 0x20,
+ 0x20, 0xc8, 0xc9, 0xca, 0x20,
+ 0},
+ {0x20, 0x8b, 0x8c, 0x8d, 0x20,
+ 0x20, 0xab, 0xac, 0xad, 0x20,
+ 0x20, 0xcb, 0xcc, 0xcd, 0x20,
+ 0},
+ {0x20, 0x8e, 0x8f, 0x90, 0x20,
+ 0x20, 0xae, 0xaf, 0xb0, 0x20,
+ 0x20, 0xce, 0xcf, 0xd0, 0x20,
+ 0},
+ };
+
+ uint8_t layer = 0;
+ if (layer_state_is(_FUNCTION)) {
+ layer = 1;
+ } else if (layer_state_is(_CODE)) {
+ layer = 2;
+ } else if (layer_state_is(_ADJUST)) {
+ layer = 3;
+ }
+ oled_write_P(font_layers[layer], false);
+};
+
+#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE)
+
+void render_rgb_status(void) {
+ static const char PROGMEM font_rgb_off[3] = {0xd1, 0xd2, 0};
+ static const char PROGMEM font_rgb_on[3] = {0xd3, 0xd4, 0};
+ bool rgb_enabled =
+# if defined(RGBLIGHT_ENABLE)
+ rgblight_is_enabled();
+# elif defined(RGB_MATRIX_ENABLE)
+ rgb_matrix_is_enabled();
+# endif
+
+ oled_write_P(rgb_enabled ? font_rgb_on : font_rgb_off, false);
+};
+#endif
+
+// 2x1 Ctrl, Alt, Shift, GUI, Caps
+
+void render_mod_ctrl(void) {
+ static const char PROGMEM font_ctrl[3] = {0x91, 0x92, 0};
+ oled_write_P(font_ctrl, false);
+};
+
+void render_mod_alt(void) {
+ static const char PROGMEM font_alt[3] = {0xb1, 0xb2, 0};
+ oled_write_P(font_alt, false);
+};
+
+void render_mod_shift(void) {
+ static const char PROGMEM font_shift[3] = {0xb3, 0xb4, 0};
+ oled_write_P(font_shift, false);
+};
+
+void render_mod_gui(void) {
+ static const char PROGMEM font_gui[3] = {0x93, 0x94, 0};
+ oled_write_P(font_gui, false);
+};
+
+void render_caps_lock(void) {
+ static const char PROGMEM font_caps[3] = {0x9f, 0xbf, 0};
+ oled_write_P(font_caps, false);
+};
+
+
+// 5x2 Mod and feature indicator clusters
+
+void render_mod_status(void) {
+#if defined(NO_ACTION_ONESHOT)
+ uint8_t modifiers = get_mods();
+#else
+ uint8_t modifiers = get_mods() | get_oneshot_mods();
+#endif
+
+ (modifiers & MOD_MASK_CTRL) ? render_mod_ctrl() : oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR(" "), false);
+ (modifiers & MOD_MASK_SHIFT) ? render_mod_shift() : oled_write_P(PSTR(" "), false);
+
+ (modifiers & MOD_MASK_ALT) ? render_mod_alt() : oled_write_P(PSTR(" "), false);
+ oled_write_P(PSTR(" "), false);
+ (modifiers & MOD_MASK_GUI) ? render_mod_gui() : oled_write_P(PSTR(" "), false);
+
+ led_t led_state = host_keyboard_led_state();
+ (led_state.caps_lock) ? render_caps_lock() : oled_write_P(PSTR(" "), false);
+}
+
+void render_feature_status(void) {
+#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE)
+ render_rgb_status();
+#endif
+};
+
+// Keylogger
+#define KEYLOGGER_LENGTH 5
+static char keylog_str[KEYLOGGER_LENGTH + 1] = {"\n"};
+// 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', 20, 19, 27, 26, 22, '-', '=', '[', // 2x
+ ']','\\', '#', ';','\'', '`', ',', '.', '/', 128, ' ', ' ', ' ', ' ', ' ', ' ', // 3x
+ ' ', ' ', ' ', ' ', ' ', ' ', 'P', 'S', ' ', ' ', ' ', ' ', 16, ' ', ' ', ' ', // 4x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 5x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 6x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 7x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 8x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // 9x
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ax
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Bx
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Cx
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Dx
+ 'C', 'S', 'A', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', // Ex
+ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // Fx
+};
+
+
+#if defined(KEY_LOG_ENABLE)
+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;
+ }
+
+ for (uint8_t i = (KEYLOGGER_LENGTH - 1); i > 0; --i) {
+ keylog_str[i] = keylog_str[i - 1];
+ }
+
+ if (keycode < (sizeof(code_to_name) / sizeof(char))) {
+ keylog_str[0] = pgm_read_byte(&code_to_name[keycode]);
+ }
+}
+#endif
+
+static uint16_t key_timer = 0;
+static bool is_key_processed = true;
+bool process_record_oled(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ key_timer = timer_read();
+ is_key_processed = true;
+
+# if defined(KEY_LOG_ENABLE)
+ add_keylog(keycode);
+#endif
+ }
+
+ return true;
+}
+
+
+void render_keylogger_status(void) {
+ oled_write(keylog_str, false);
+}
+
+
+void render_prompt(void) {
+ bool blink = (timer_read() % 1000) < 500;
+
+ if (layer_state_is(_FUNCTION)) {
+ oled_write_ln_P(blink ? PSTR("> ft_") : PSTR("> ft "), false);
+ } else if (layer_state_is(_CODE)) {
+ oled_write_ln_P(blink ? PSTR("> sy_") : PSTR("> sy "), false);
+ } else if (layer_state_is(_ADJUST)) {
+ oled_write_ln_P(blink ? PSTR("> aj_") : PSTR("> aj "), false);
+ } else {
+ oled_write_ln_P(blink ? PSTR("> _ ") : PSTR("> "), false);
+ }
+};
+
+
+void render_status_secondary(void) {
+ oled_write_ln("", false);
+ oled_write_ln("", false);
+
+ render_kb_split();
+
+ oled_write_ln("", false);
+ oled_write_ln("", false);
+ oled_write_ln("", false);
+
+ render_layer();
+
+ oled_write_ln("", false);
+ oled_write_ln("", false);
+ oled_write_ln("", false);
+
+#if defined(RGB_MATRIX_ENABLE) || defined(RGBLIGHT_ENABLE)
+ layer_state_is(_ADJUST) ? render_feature_status() : render_mod_status();
+#else
+ render_mod_status();
+#endif
+};
+
+
+void render_status_main(void) {
+ oled_write_ln("", false);
+ oled_write_ln("", false);
+
+ render_qmk_logo();
+
+ oled_write_ln("", false);
+ oled_write_ln("", false);
+
+ render_layers();
+
+ oled_write_ln("", false);
+ oled_write_ln("", false);
+
+ render_prompt();
+
+ oled_write_ln("", false);
+
+ render_keylogger_status();
+}
+
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_270;
+}
+
+
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
+ if (is_key_processed && (timer_elapsed(key_timer) < OLED_KEY_TIMEOUT)) {
+ render_status_main();
+ } else if (is_key_processed) {
+ is_key_processed = false;
+ oled_off();
+ }
+ } else {
+ render_status_secondary();
+ }
+
+ return false;
+}
diff --git a/keyboards/crkbd/keymaps/thunderbird2086/process_records.c b/keyboards/crkbd/keymaps/thunderbird2086/process_records.c
new file mode 100644
index 0000000000..381cf281e5
--- /dev/null
+++ b/keyboards/crkbd/keymaps/thunderbird2086/process_records.c
@@ -0,0 +1,45 @@
+// Copyright 2021 Allen Choi (@thunderbird2086)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#include "keycodes.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;
+}
+
+#if defined(OLED_ENABLE)
+__attribute__((weak))
+bool process_record_oled(uint16_t keycode, keyrecord_t *record) {
+ return true;
+}
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ break;
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ break;
+ }
+
+ return process_record_keymap(keycode, record) && process_record_secrets(keycode, record)
+# if defined(OLED_ENABLE)
+ && process_record_oled(keycode, record)
+# endif
+ ;
+}
diff --git a/keyboards/crkbd/keymaps/thunderbird2086/readme.md b/keyboards/crkbd/keymaps/thunderbird2086/readme.md
new file mode 100644
index 0000000000..6400309fe8
--- /dev/null
+++ b/keyboards/crkbd/keymaps/thunderbird2086/readme.md
@@ -0,0 +1,65 @@
+# Thunderbird2086's custom CRKBD Layout
+
+The concept is Mac and **baby finger** friendly keymap.
+
+## Layers
+- Colemak-DH: base layer. The option(⌥) and command(⌘) keys are assigned to thumb blocks as well as home position keys on each side. Also, far end two columns are assigned to shift(⇧) and control(⌃) keys.
+ ![colemak-dh](https://i.imgur.com/R7EzTTt.png)
+ - Thumb keys
+ | Tap | Double tap | Long tap |
+ | --- | --- | --- |
+ | Command(⌘) | Command(⌘) + Space(â£) | |
+ | Delete(⌦) | | Function layer |
+ | Backspace(⌫)| | Function layer |
+ | Space(â£) | | Code layer |
+ | Enter(âŽ) | | Code layer |
+ - Staggered keys
+ | Tap | Double tap | Long tap |
+ | --- | --- | --- |
+ | TAB | Control(⌃) + TAB | |
+ | a | | Control(⌃) |
+ | z | | Shift(⇧) |
+ | t | | Option(⌥) |
+ | n | | Command(⌘) |
+ | o | | Control(⌃) |
+ | ' | | Control(⌃) |
+ | / | | Shift(⇧) |
+ | = | | Adjust layer |
+
+- QWERTY: same as Colemak-DH layer
+ ![qwery](https://i.imgur.com/v9JBwQu.png)
+ - Thumb keys : same as Colemak-DH
+ - Staggered keys : almost same as Colemak-DH except
+ | Tap | Double tap | Long tap |
+ | --- | --- | --- |
+ | f | | Option(⌥) |
+ | j | | Command(⌘) |
+ | ; | | Control(⌃) |
+
+- CODE: numbers and symbols.
+ ![symbol](https://i.imgur.com/BPgPlYX.png)
+ - Thumb keys
+ | Tap | Double tap | Long tap |
+ | --- | --- | --- |
+ | ESC | Caps lock | |
+ - Staggered keys
+ | Tap | Double tap | Long tap |
+ | --- | --- | --- |
+ | ` | Command(⌘) + ` | |
+
+- FUNCTION: function, meadia and navigation keys
+ ![function](https://i.imgur.com/cs5haUP.png)
+ - Thumb keys
+ | Tap | Double tap | Long tap |
+ | --- | --- | --- |
+ | ESC | Caps lock | |
+
+- ADJUST: RGB control, Power control, default layer setting and reset
+ ![adjust](https://i.imgur.com/uDIhigd.png)
+- SECRET: hold `ADJUST` and `FUNCTION` to activate
+
+## Custom OLED
+This keymap includes custom OLED font and code. The font contains some logos and status indidcators from [gotham](../gotham) and [soundmonster](../soundmonster) including my own CAPS LOCK icon. Enable OLED in rukes.mk to check it out. Feel free to reuse the font or parts of it.
+
+## Flashing
+Flash using `make crkbd:thunderbird2086:avrdude` for Pro Micro and `make crkbd:thunderbird2086:dfu` for Elite-C.
diff --git a/keyboards/crkbd/keymaps/thunderbird2086/rules.mk b/keyboards/crkbd/keymaps/thunderbird2086/rules.mk
new file mode 100644
index 0000000000..4da48db08e
--- /dev/null
+++ b/keyboards/crkbd/keymaps/thunderbird2086/rules.mk
@@ -0,0 +1,18 @@
+MOUSEKEY_ENABLE = no
+EXTRAKEY_ENABLE = yes
+AUDIO_ENABLE = no
+RGBLIGHT_ENABLE = no
+RGB_MATRIX_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+LTO_ENABLE = yes
+
+TAP_DANCE_ENABLE = yes
+
+SRC += oled.c
+SRC += process_records.c
+SRC += tap_dances.c
+
+ifneq ("$(wildcard keyboards/crkbd/keymaps/thunderbird2086/secrets.c)","")
+ SRC += secrets.c
+endif
diff --git a/keyboards/crkbd/keymaps/thunderbird2086/tap_dances.c b/keyboards/crkbd/keymaps/thunderbird2086/tap_dances.c
new file mode 100644
index 0000000000..1cf6fdf092
--- /dev/null
+++ b/keyboards/crkbd/keymaps/thunderbird2086/tap_dances.c
@@ -0,0 +1,12 @@
+// Copyright 2021 Allen Choi (@thunderbird2086)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+#include "tap_dances.h"
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
+ [TD_TAB_CTRLTAB] = ACTION_TAP_DANCE_DOUBLE(KC_TAB, LCTL(KC_TAB)),
+ [TD_GRV_CTRLGRV] = ACTION_TAP_DANCE_DOUBLE(KC_GRV, LGUI(KC_GRV)),
+ [TD_GUI_GUISPC] = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, LGUI(KC_SPC)),
+};
diff --git a/keyboards/crkbd/keymaps/thunderbird2086/tap_dances.h b/keyboards/crkbd/keymaps/thunderbird2086/tap_dances.h
new file mode 100644
index 0000000000..34d3c4e32c
--- /dev/null
+++ b/keyboards/crkbd/keymaps/thunderbird2086/tap_dances.h
@@ -0,0 +1,16 @@
+// Copyright 2021 Allen Choi (@thunderbird2086)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+enum custom_tapdances {
+ TD_ESC_CAPS = 0,
+ TD_TAB_CTRLTAB,
+ TD_GRV_CTRLGRV,
+ TD_GUI_GUISPC,
+};
+
+#define T_ESC TD(TD_ESC_CAPS) // Tap for ESC, double tap for CAPSLOCK
+#define T_TAB TD(TD_TAB_CTRLTAB) // Tap for TAB, double tap for CTRL + TAB
+#define T_GRV TD(TD_GRV_CTRLGRV) // Tap for GRV, double tap for Cmd + GRV
+#define T_GUI TD(TD_GUI_GUISPC) // Tap for Cmd, double tap for Cmd + Space
diff --git a/keyboards/crkbd/keymaps/toinux/keymap.c b/keyboards/crkbd/keymaps/toinux/keymap.c
index ae3de00b79..9f5474ee2e 100644
--- a/keyboards/crkbd/keymaps/toinux/keymap.c
+++ b/keyboards/crkbd/keymaps/toinux/keymap.c
@@ -212,7 +212,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// | | | | | | | |
// `--------------------------' `--------------------------'
[_ADJUST] = LAYOUT_split_3x6_3(
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_NLCK, KC_CAPS, KC_SCRL, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_NLCK, KC_CAPS, KC_SCRL, 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,
_______, _______, _______, _______, _______, _______
diff --git a/keyboards/crkbd/keymaps/vayashiko/keymap.c b/keyboards/crkbd/keymaps/vayashiko/keymap.c
index f3cf5cb2f6..77229a3603 100644
--- a/keyboards/crkbd/keymaps/vayashiko/keymap.c
+++ b/keyboards/crkbd/keymaps/vayashiko/keymap.c
@@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- if (!is_master) {
+ if (!is_keyboard_master()) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
}
return rotation;
@@ -165,7 +165,7 @@ void oled_render_logo(void) {
}
bool oled_task_user(void) {
- if (is_master) {
+ if (is_keyboard_master()) {
oled_render_layer_state();
oled_render_keylog();
} else {
diff --git a/keyboards/crkbd/keymaps/vayashiko/rules.mk b/keyboards/crkbd/keymaps/vayashiko/rules.mk
index b8ba838422..c29927421d 100644
--- a/keyboards/crkbd/keymaps/vayashiko/rules.mk
+++ b/keyboards/crkbd/keymaps/vayashiko/rules.mk
@@ -21,8 +21,7 @@ SWAP_HANDS_ENABLE = no # Enable one-hand typing
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/glcdfont.c \
- ./lib/rgb_state_reader.c \
+SRC += ./lib/rgb_state_reader.c \
./lib/layer_state_reader.c \
./lib/logo_reader.c \
./lib/keylogger.c \
diff --git a/keyboards/crkbd/keymaps/vlukash_trackpad_left/config.h b/keyboards/crkbd/keymaps/vlukash_trackpad_left/config.h
index d1c3855402..94494bafd8 100644
--- a/keyboards/crkbd/keymaps/vlukash_trackpad_left/config.h
+++ b/keyboards/crkbd/keymaps/vlukash_trackpad_left/config.h
@@ -5,9 +5,6 @@
#define MASTER_RIGHT
// #define EE_HANDS
-#define SSD1306OLED
-#define USE_SSD_I2C
-
#define USE_SERIAL_PD2
#define TAPPING_FORCE_HOLD
diff --git a/keyboards/crkbd/keymaps/vlukash_trackpad_left/keymap.c b/keyboards/crkbd/keymaps/vlukash_trackpad_left/keymap.c
index 7940e28025..e47e2df539 100644
--- a/keyboards/crkbd/keymaps/vlukash_trackpad_left/keymap.c
+++ b/keyboards/crkbd/keymaps/vlukash_trackpad_left/keymap.c
@@ -4,9 +4,6 @@
#include "lufa.h"
#include "split_util.h"
#endif
-#ifdef SSD1306OLED
- #include "ssd1306.h"
-#endif
#ifdef RGBLIGHT_ENABLE
//Following line allows macro to read current RGB settings
@@ -31,7 +28,7 @@ enum custom_keycodes {
#define KC_LOWER LOWER
#define KC_RAISE RAISE
-#define KC_RST RESET
+#define KC_RST QK_BOOT
#define KC_LRST RGBRST
#define KC_LTOG RGB_TOG
#define KC_LHUI RGB_HUI
@@ -122,14 +119,9 @@ 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(); // turns on the display
- #endif
}
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
+#ifdef OLED_ENABLE
// When add source files to SRC in rules.mk, you can use functions.
const char *read_layer_state(void);
@@ -138,42 +130,23 @@ void set_keylog(uint16_t keycode, keyrecord_t *record);
const char *read_keylog(void);
const char *read_keylogs(void);
-void matrix_scan_user(void) {
- iota_gfx_task();
-}
-
-void matrix_render_user(struct CharacterMatrix *matrix) {
+bool oled_task_user(void) {
if (is_keyboard_master()) {
// If you want to change the display of OLED, you need to change here
- matrix_write(matrix, read_layer_state());
- matrix_write(matrix, "\n");
- matrix_write(matrix, read_keylog());
- matrix_write(matrix, "\n");
- matrix_write(matrix, read_keylogs());
- matrix_write(matrix, "\n");
+ oled_write_ln(read_layer_state(), false);
+ oled_write_ln(read_keylog(), false);
+ oled_write_ln(read_keylogs(), false);
} else {
- matrix_write(matrix, read_logo());
+ oled_write(read_logo(), false);
}
+ return false;
}
-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;
- }
-}
-
-void iota_gfx_task_user(void) {
- struct CharacterMatrix matrix;
- matrix_clear(&matrix);
- matrix_render_user(&matrix);
- matrix_update(&display, &matrix);
-}
-#endif//SSD1306OLED
+#endif
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
-#ifdef SSD1306OLED
+#ifdef OLED_ENABLE
set_keylog(keycode, record);
#endif
}
diff --git a/keyboards/crkbd/keymaps/vlukash_trackpad_left/rules.mk b/keyboards/crkbd/keymaps/vlukash_trackpad_left/rules.mk
index 44ff63ada1..ed4d34a70b 100644
--- a/keyboards/crkbd/keymaps/vlukash_trackpad_left/rules.mk
+++ b/keyboards/crkbd/keymaps/vlukash_trackpad_left/rules.mk
@@ -1,14 +1,12 @@
# Build Options
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
BOOTLOADER = atmel-dfu
# If you want to change the display of OLED, you need to change here
-SRC += ./lib/glcdfont.c \
- ./lib/rgb_state_reader.c \
+SRC += ./lib/rgb_state_reader.c \
./lib/layer_state_reader.c \
./lib/logo_reader.c \
./lib/keylogger.c \
-
-VPATH += keyboards/crkbd/lib
-LIB_SRC += ssd1306.c i2c.c
diff --git a/keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c b/keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c
index 14a5b5d90a..703be80d96 100644
--- a/keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c
+++ b/keyboards/crkbd/keymaps/vlukash_trackpad_right/keymap.c
@@ -37,7 +37,7 @@ enum custom_keycodes {
#define KC_XXXXX KC_NO
#define KC_LOWER LOWER
#define KC_RAISE RAISE
-#define KC_RST RESET
+#define KC_RST QK_BOOT
#define KC_LRST RGBRST
#define KC_LTOG RGB_TOG
#define KC_LHUI RGB_HUI
diff --git a/keyboards/crkbd/keymaps/vxid/config.h b/keyboards/crkbd/keymaps/vxid/config.h
index d9c0cbccf4..7a4596f3b2 100644
--- a/keyboards/crkbd/keymaps/vxid/config.h
+++ b/keyboards/crkbd/keymaps/vxid/config.h
@@ -28,9 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MASTER_RIGHT
// #define EE_HANDS
-#define SSD1306OLED
-#define USE_SSD_I2C
-
#define USE_SERIAL_PD2
#define TAPPING_FORCE_HOLD
diff --git a/keyboards/crkbd/keymaps/vxid/rules.mk b/keyboards/crkbd/keymaps/vxid/rules.mk
index cb104fb344..432e219476 100644
--- a/keyboards/crkbd/keymaps/vxid/rules.mk
+++ b/keyboards/crkbd/keymaps/vxid/rules.mk
@@ -16,19 +16,17 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
SWAP_HANDS_ENABLE = no # Enable one-hand typing
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
# Do 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/glcdfont.c \
- ./lib/rgb_state_reader.c \
+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 \
-
-VPATH += keyboards/crkbd/lib
-LIB_SRC += ssd1306.c i2c.c
diff --git a/keyboards/crkbd/keymaps/xyverz/keymap.c b/keyboards/crkbd/keymaps/xyverz/keymap.c
index 0b7fc0a0ac..95112ece54 100644
--- a/keyboards/crkbd/keymaps/xyverz/keymap.c
+++ b/keyboards/crkbd/keymaps/xyverz/keymap.c
@@ -89,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
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, RESET,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______
//`--------------------------' `--------------------------'
diff --git a/keyboards/crkbd/lib/i2c.c b/keyboards/crkbd/lib/i2c.c
deleted file mode 100644
index 7b82e838c2..0000000000
--- a/keyboards/crkbd/lib/i2c.c
+++ /dev/null
@@ -1,162 +0,0 @@
-#include <util/twi.h>
-#include <avr/io.h>
-#include <stdlib.h>
-#include <avr/interrupt.h>
-#include <util/twi.h>
-#include <stdbool.h>
-#include "i2c.h"
-
-#if defined(USE_SSD_I2C)
-
-// Limits the amount of we wait for any one i2c transaction.
-// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is
-// 9 bits, a single transaction will take around 90μs to complete.
-//
-// (F_CPU/SCL_CLOCK) => # of μC cycles to transfer a bit
-// poll loop takes at least 8 clock cycles to execute
-#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8
-
-#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE)
-
-volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-static volatile uint8_t slave_buffer_pos;
-static volatile bool slave_has_register_set = false;
-
-// Wait for an i2c operation to finish
-inline static
-void i2c_delay(void) {
- uint16_t lim = 0;
- while(!(TWCR & (1<<TWINT)) && lim < I2C_LOOP_TIMEOUT)
- lim++;
-
- // easier way, but will wait slightly longer
- // _delay_us(100);
-}
-
-// Setup twi to run at 100kHz or 400kHz (see ./i2c.h SCL_CLOCK)
-void i2c_master_init(void) {
- // no prescaler
- TWSR = 0;
- // Set TWI clock frequency to SCL_CLOCK. Need TWBR>10.
- // Check datasheets for more info.
- TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
-}
-
-// Start a transaction with the given i2c slave address. The direction of the
-// transfer is set with I2C_READ and I2C_WRITE.
-// returns: 0 => success
-// 1 => error
-uint8_t i2c_master_start(uint8_t address) {
- TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTA);
-
- i2c_delay();
-
- // check that we started successfully
- if ( (TW_STATUS != TW_START) && (TW_STATUS != TW_REP_START))
- return 1;
-
- TWDR = address;
- TWCR = (1<<TWINT) | (1<<TWEN);
-
- i2c_delay();
-
- if ( (TW_STATUS != TW_MT_SLA_ACK) && (TW_STATUS != TW_MR_SLA_ACK) )
- return 1; // slave did not acknowledge
- else
- return 0; // success
-}
-
-
-// Finish the i2c transaction.
-void i2c_master_stop(void) {
- TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
-
- uint16_t lim = 0;
- while(!(TWCR & (1<<TWSTO)) && lim < I2C_LOOP_TIMEOUT)
- lim++;
-}
-
-// Write one byte to the i2c slave.
-// returns 0 => slave ACK
-// 1 => slave NACK
-uint8_t i2c_master_write(uint8_t data) {
- TWDR = data;
- TWCR = (1<<TWINT) | (1<<TWEN);
-
- i2c_delay();
-
- // check if the slave acknowledged us
- return (TW_STATUS == TW_MT_DATA_ACK) ? 0 : 1;
-}
-
-// Read one byte from the i2c slave. If ack=1 the slave is acknowledged,
-// if ack=0 the acknowledge bit is not set.
-// returns: byte read from i2c device
-uint8_t i2c_master_read(int ack) {
- TWCR = (1<<TWINT) | (1<<TWEN) | (ack<<TWEA);
-
- i2c_delay();
- return TWDR;
-}
-
-void i2c_reset_state(void) {
- TWCR = 0;
-}
-
-void i2c_slave_init(uint8_t address) {
- TWAR = address << 0; // slave i2c address
- // TWEN - twi enable
- // TWEA - enable address acknowledgement
- // TWINT - twi interrupt flag
- // TWIE - enable the twi interrupt
- TWCR = (1<<TWIE) | (1<<TWEA) | (1<<TWINT) | (1<<TWEN);
-}
-
-ISR(TWI_vect);
-
-ISR(TWI_vect) {
- uint8_t ack = 1;
- switch(TW_STATUS) {
- case TW_SR_SLA_ACK:
- // this device has been addressed as a slave receiver
- slave_has_register_set = false;
- break;
-
- case TW_SR_DATA_ACK:
- // this device has received data as a slave receiver
- // The first byte that we receive in this transaction sets the location
- // of the read/write location of the slaves memory that it exposes over
- // i2c. After that, bytes will be written at slave_buffer_pos, incrementing
- // slave_buffer_pos after each write.
- if(!slave_has_register_set) {
- slave_buffer_pos = TWDR;
- // don't acknowledge the master if this memory loctaion is out of bounds
- if ( slave_buffer_pos >= SLAVE_BUFFER_SIZE ) {
- ack = 0;
- slave_buffer_pos = 0;
- }
- slave_has_register_set = true;
- } else {
- i2c_slave_buffer[slave_buffer_pos] = TWDR;
- BUFFER_POS_INC();
- }
- break;
-
- case TW_ST_SLA_ACK:
- case TW_ST_DATA_ACK:
- // master has addressed this device as a slave transmitter and is
- // requesting data.
- TWDR = i2c_slave_buffer[slave_buffer_pos];
- BUFFER_POS_INC();
- break;
-
- case TW_BUS_ERROR: // something went wrong, reset twi state
- TWCR = 0;
- default:
- break;
- }
- // Reset everything, so we are ready for the next TWI interrupt
- TWCR |= (1<<TWIE) | (1<<TWINT) | (ack<<TWEA) | (1<<TWEN);
-}
-#endif
diff --git a/keyboards/crkbd/lib/i2c.h b/keyboards/crkbd/lib/i2c.h
deleted file mode 100644
index 710662c7ab..0000000000
--- a/keyboards/crkbd/lib/i2c.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#pragma once
-
-#include <stdint.h>
-
-#ifndef F_CPU
-#define F_CPU 16000000UL
-#endif
-
-#define I2C_READ 1
-#define I2C_WRITE 0
-
-#define I2C_ACK 1
-#define I2C_NACK 0
-
-#define SLAVE_BUFFER_SIZE 0x10
-
-// i2c SCL clock frequency 400kHz
-#define SCL_CLOCK 400000L
-
-extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-void i2c_master_init(void);
-uint8_t i2c_master_start(uint8_t address);
-void i2c_master_stop(void);
-uint8_t i2c_master_write(uint8_t data);
-uint8_t i2c_master_read(int);
-void i2c_reset_state(void);
-void i2c_slave_init(uint8_t address);
-
-
-static inline unsigned char i2c_start_read(unsigned char addr) {
- return i2c_master_start((addr << 1) | I2C_READ);
-}
-
-static inline unsigned char i2c_start_write(unsigned char addr) {
- return i2c_master_start((addr << 1) | I2C_WRITE);
-}
-
-// from SSD1306 scrips
-extern unsigned char i2c_rep_start(unsigned char addr);
-extern void i2c_start_wait(unsigned char addr);
-extern unsigned char i2c_readAck(void);
-extern unsigned char i2c_readNak(void);
-extern unsigned char i2c_read(unsigned char ack);
-
-#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
diff --git a/keyboards/crkbd/lib/layer_state_reader.c b/keyboards/crkbd/lib/layer_state_reader.c
index 63d80b136c..601fd71958 100644
--- a/keyboards/crkbd/lib/layer_state_reader.c
+++ b/keyboards/crkbd/lib/layer_state_reader.c
@@ -29,7 +29,11 @@ const char *read_layer_state(void) {
snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust");
break;
default:
+#if defined (LAYER_STATE_32BIT)
snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%ld", layer_state);
+#else
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%d", layer_state);
+#endif
}
return layer_state_str;
diff --git a/keyboards/crkbd/rules.mk b/keyboards/crkbd/rules.mk
index 4f373d53da..2e91f24848 100644
--- a/keyboards/crkbd/rules.mk
+++ b/keyboards/crkbd/rules.mk
@@ -18,6 +18,7 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = no
RGB_MATRIX_DRIVER = WS2812
+LTO_ENABLE = yes
# if firmware size over limit, try this option
# LTO_ENABLE = yes
diff --git a/keyboards/custommk/bonsai_c4_template/bonsai_c4_template.c b/keyboards/custommk/bonsai_c4_template/bonsai_c4_template.c
new file mode 100644
index 0000000000..2129a712cf
--- /dev/null
+++ b/keyboards/custommk/bonsai_c4_template/bonsai_c4_template.c
@@ -0,0 +1,23 @@
+/* Copyright 2022 customMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// Set up SPI slave select pin
+void keyboard_post_init_kb(void) {
+ #ifdef EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN
+ setPinOutput(EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN);
+ writePinHigh(EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN);
+ #endif
+}
diff --git a/keyboards/custommk/bonsai_c4_template/config.h b/keyboards/custommk/bonsai_c4_template/config.h
new file mode 100644
index 0000000000..192e9b0755
--- /dev/null
+++ b/keyboards/custommk/bonsai_c4_template/config.h
@@ -0,0 +1,79 @@
+/* Copyright 2022 customMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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"
+
+// This file includes example #defines to enable commonly-used functionality
+// (SPI, PWM backlight, etc.) on specific pins. Capabilities you want to include
+// should be added to the config.h for your keyboard. Not all capabilities are
+// shown; for example:
+// I2C is not shown because the QMK defaults are sufficient for SCL on B6 and SDA on B7
+// Serial communications (for split keyboards) is not shown because QMK defaults work
+// for either pins A15 or B6
+
+// If you need to change pins for PWM, SPI, I2C, or Serial communications, be aware that
+// doing this may require changing the driver, channel, PAL (Pin ALternate function) mode,
+// DMA stream, and/or DMA channel.
+
+
+// Bonsai C4 wires up pin A9 for Vbus sensing pin by default. For spilt keyboards, this
+// can be used to determine which half of the keyboard is plugged into USB.
+// For boards using Bonsai C4 merely as a reference design, the VBUS sense pin A9
+// can be used for purposes other than Vbus sensing (e.g. the switch
+// matrix).
+//
+// If A9 is needed for Vbus sensing, uncomment the line
+// below. Most keyboards using Bonsai C4 can leave the line below
+// commented out.
+//
+// #undef BOARD_OTG_NOVBUSSENS
+
+// FRAM configuration
+#define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A0
+#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 8 // 96MHz / 8 = 12MHz; max supported by MB85R64 is 20MHz
+#define EXTERNAL_EEPROM_PAGE_SIZE 64 // does not matter for FRAM, just sets the RAM buffer size in STM32F chip
+#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 8191
+
+// External flash configuration
+#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B12
+#define EXTERNAL_FLASH_SPI_CLOCK_DIVISOR 1 // 96MHz; max supported by W25Q128JV is 133MHz
+#define EXTERNAL_FLASH_BYTE_COUNT (16 * 1024 * 1024) //128Mbit or 16MByte
+#define EXTERNAL_FLASH_PAGE_SIZE 256
+#define EXTERNAL_FLASH_SPI_TIMEOUT 200000 //datasheet max is 200 seconds for flash chip erase
+
+// SPI Configuration (needed for FRAM and FLASH)
+#define SPI_DRIVER SPID1
+#define SPI_SCK_PIN B3
+#define SPI_MOSI_PIN B5
+#define SPI_MISO_PIN B4
+
+// Example code to set up PWM backlight on pin A6
+// If a different pin is used, a different PWM driver/channel settings may be necessary
+#define BACKLIGHT_PIN A6
+#define BACKLIGHT_PWM_DRIVER PWMD3
+#define BACKLIGHT_PWM_CHANNEL 1
+
+// Example code for WS2812 underglow
+// Only pin A10 is wired to send 5V signals to the WS2812
+// This also usually requires adding special wiring during board assembly
+#define RGB_DI_PIN A10
+#define WS2812_PWM_DRIVER PWMD1
+#define WS2812_PWM_CHANNEL 3
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
+#define WS2812_DMA_CHANNEL 6
diff --git a/keyboards/custommk/bonsai_c4_template/halconf.h b/keyboards/custommk/bonsai_c4_template/halconf.h
new file mode 100644
index 0000000000..a90ea163f3
--- /dev/null
+++ b/keyboards/custommk/bonsai_c4_template/halconf.h
@@ -0,0 +1,35 @@
+/* Copyright 2021 customMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// If you are using I2C (e.g. for OLED), include this line
+#define HAL_USE_I2C TRUE
+
+// If you are using PWM (e.g. for WS2812, backlight, etc.) include this line
+#define HAL_USE_PWM TRUE
+
+// If you are using serial comms for split communications, include these lines
+#define HAL_USE_SERIAL TRUE
+#define SERIAL_BUFFERS_SIZE 256
+
+// If you are using SPI (e.g. for FRAM, flash, etc.) include these lines
+#define HAL_USE_SPI TRUE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+// This enables interrupt-driven mode
+#define SPI_USE_WAIT TRUE
+
+#include_next <halconf.h> \ No newline at end of file
diff --git a/keyboards/custommk/bonsai_c4_template/mcuconf.h b/keyboards/custommk/bonsai_c4_template/mcuconf.h
new file mode 100644
index 0000000000..4f926bd7de
--- /dev/null
+++ b/keyboards/custommk/bonsai_c4_template/mcuconf.h
@@ -0,0 +1,35 @@
+/* Copyright 2022 customMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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>
+
+// Used for underglow in example code
+#undef STM32_PWM_USE_TIM1 //timer 1 channel 3
+#define STM32_PWM_USE_TIM1 TRUE
+
+// Used for backlight in examples
+#undef STM32_PWM_USE_TIM3 //timer 3 channel 1
+#define STM32_PWM_USE_TIM3 TRUE
+
+// Used for FRAM and flash in example code
+#undef STM32_SPI_USE_SPI1
+#define STM32_SPI_USE_SPI1 TRUE
+
+// Used for Split comms in example code
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE \ No newline at end of file
diff --git a/keyboards/custommk/bonsai_c4_template/readme.md b/keyboards/custommk/bonsai_c4_template/readme.md
new file mode 100644
index 0000000000..0c0fd8ed0c
--- /dev/null
+++ b/keyboards/custommk/bonsai_c4_template/readme.md
@@ -0,0 +1,10 @@
+# Bonsai C4 template code
+
+Currently, the converter for Pro Micro to Bonsai C4 only does pin mapping. This is sufficient for simple keyboards and also a good start for
+incorporating into more advanced keyboards with other features (like RGB, OLED, backlighting, split communiciations, etc.). However, to make
+use of the more advanced features--including using the FRAM and flash memory chip included on Bonsai C4--various peripheral hardware must
+be configured. Pro Micro does not requrie such configuration because such functionality is more limited and hard-wired to specific pins.
+
+The code here provides examples that can be used to operate SPI, I2C, PWM, and Serial comms. In addition to using the converter, you will
+need to take code (as-needed) and add it to existing config.h files, or add in new halconf.h and mcuconf.h files. If you are changing which
+pins are used for certain functions, you should verify the new pins support that functionality, and check all assingments to ensure the correct settings are used (including as-applicable driver, channel, PAL (Pin ALternate function) mode, DMA stream, and/or DMA channel).
diff --git a/keyboards/custommk/evo70/config.h b/keyboards/custommk/evo70/config.h
new file mode 100644
index 0000000000..f07560cb98
--- /dev/null
+++ b/keyboards/custommk/evo70/config.h
@@ -0,0 +1,51 @@
+/* Copyright 2021 customMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 OLED_UPDATE_INTERVAL 33
+
+#define BACKLIGHT_PIN B5
+#define BACKLIGHT_LIMIT_VAL 255
+#define BACKLIGHT_ON_STATE 0
+#define BACKLIGHT_LEVELS 17
+#define BACKLIGHT_BREATHING
+#define BREATHING_PERIOD 6
+
+#define OLED_DISABLE_TIMEOUT
+
+#define ENCODERS_PAD_A { C7 }
+#define ENCODERS_PAD_B { D5 }
+#define ENCODER_RESOLUTION 2
+#define TAP_CODE_DELAY 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
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_LIMIT_VAL 128
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL + 4
+
+#define RGBLIGHT_SLEEP \ No newline at end of file
diff --git a/keyboards/custommk/evo70/evo70.c b/keyboards/custommk/evo70/evo70.c
new file mode 100644
index 0000000000..4c15d03dd2
--- /dev/null
+++ b/keyboards/custommk/evo70/evo70.c
@@ -0,0 +1,811 @@
+/* Copyright 2021 customMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "evo70.h"
+#include <stdbool.h>
+#include "matrix.h"
+#include OLED_FONT_H
+
+//If Bongo cat not undefined, Scroll wheel will be enabled,
+//but for scroll wheel to work, you must also set MOUSEKEY_ENABLE = yes
+//in rules.mk
+#define BONGOCAT
+
+/* Placement information for display elements */
+#define ENC_DISPLAY_X 0
+#define ENC_DISPLAY_Y 0
+
+#define LAYER_DISPLAY_X 5
+#define LAYER_DISPLAY_Y 19
+
+#define CAPSLOCK_DISPLAY_X 80
+#define CAPSLOCK_DISPLAY_Y 19
+
+#define NUMLOCK_DISPLAY_X 105
+#define NUMLOCK_DISPLAY_Y 19
+
+/* Encoder Parameters */
+static bool OLED_awakened = false;
+static bool OLED_redraw = false;
+static bool startup_complete = false;
+static bool startup_delay = false;
+static bool starting_up = false;
+
+#define ENCODER_MATRIX_ROW 5
+#define ENCODER_MATRIX_COL 6
+
+#define ENC_SPLASH 0
+#define ENC_VOLUME 1
+#define ENC_MEDIA 2
+#define ENC_CUSTOM 3
+#define ENC_BL_BRIGHT 4
+#define ENC_BL_BREATH 5
+#define ENC_RGB_BRIGHT 6
+#define ENC_RGB_MODE 7
+#define ENC_RGB_COLOR 8
+#define ENC_SCROLL 9
+#ifdef BONGOCAT
+#define ENC_BONGO 9
+#endif //bongocat
+
+
+extern matrix_row_t matrix[MATRIX_ROWS];
+
+char* enc_mode_str[] = {
+#ifdef BONGOCAT
+ /* Splash */ "", \
+ "Volume", \
+ "Media Control", \
+ "Custom", \
+ "Backlight Brightness", \
+ "Backlight Breathing", \
+ "Underglow Brightness", \
+ "Underglow Mode", \
+ "Underglow Color", \
+ "" // Bongo Cat
+};
+
+uint16_t enc_cw[] = { KC_VOLU, KC_VOLU, KC_MEDIA_NEXT_TRACK, KC_VOLU, 0, 0, 0, 0, 0, KC_VOLU };
+uint16_t enc_ccw[] = { KC_VOLD, KC_VOLD, KC_MEDIA_PREV_TRACK, KC_VOLD, 0, 0, 0, 0, 0, KC_VOLD };
+#else
+ /* Splash */ "", \
+ "Volume", \
+ "Media Control", \
+ "Custom", \
+ "Backlight Brightness", \
+ "Backlight Breathing", \
+ "Underglow Brightness", \
+ "Underglow Mode", \
+ "Underglow Color", \
+ "Scroll Wheel"
+};
+
+uint16_t enc_cw[] = { KC_VOLU, KC_VOLU, KC_MEDIA_NEXT_TRACK, KC_VOLU, 0, 0, 0, 0, 0, KC_WH_U };
+uint16_t enc_ccw[] = { KC_VOLD, KC_VOLD, KC_MEDIA_PREV_TRACK, KC_VOLD, 0, 0, 0, 0, 0, KC_WH_D };
+#endif //bongocat
+
+uint8_t num_enc_modes = 10;
+
+uint8_t enc_mode_str_startpos[] = {0, 49, 28, 49, 7, 10, 7, 25, 22, 31};
+
+uint8_t prev_layer = 255;
+uint8_t prev_capslock = 255;
+uint8_t prev_numlock = 255;
+
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t enc_mode;
+ uint8_t breathingperiod;
+ bool oled_is_on : 1;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+
+
+/* OLED Draw Functions */
+/* TODO: Reimplement using Quantum Painter when available */
+
+static void draw_line_h(uint8_t x, uint8_t y, uint8_t len, bool on) {
+ for (uint8_t i = 0; i < len; i++) {
+ oled_write_pixel(i + x, y, on);
+ }
+ }
+
+ static void draw_line_v(uint8_t x, uint8_t y, uint8_t len, bool on) {
+ for (uint8_t i = 0; i < len; i++) {
+ oled_write_pixel(x, i + y, on);
+ }
+ }
+
+void draw_rect_soft(uint8_t x, uint8_t y, uint8_t width, uint8_t height, bool on) {
+ uint8_t tempHeight;
+
+ draw_line_h(x + 1, y, width - 2, on);
+ draw_line_h(x + 1, y + height - 1, width - 2, on);
+
+ tempHeight = height - 2;
+
+ if (tempHeight < 1) return;
+
+ draw_line_v(x, y + 1, tempHeight, on);
+ draw_line_v(x + width - 1, y + 1, tempHeight, on);
+}
+
+void write_char_at_pixel_xy(uint8_t x, uint8_t y, const char data, bool invert) {
+ uint8_t i, j, temp;
+ uint8_t cast_data = (uint8_t)data;
+
+ const uint8_t *glyph = &font[((uint8_t)cast_data - OLED_FONT_START) * OLED_FONT_WIDTH];
+ temp = pgm_read_byte(glyph);
+ for (i = 0; i < OLED_FONT_WIDTH ; i++) {
+ for (j = 0; j < OLED_FONT_HEIGHT; j++) {
+ if (temp & 0x01) {
+ oled_write_pixel(x + i, y + j, !invert);
+ } else {
+ oled_write_pixel(x + i, y + j, invert);
+ }
+ temp >>= 1;
+ }
+ temp = pgm_read_byte(++glyph);
+ }
+}
+
+void write_chars_at_pixel_xy(uint8_t x, uint8_t y, const char *data, bool invert) {
+ uint8_t c = data[0];
+ uint8_t offset = 0;
+ while (c != 0) {
+ write_char_at_pixel_xy(x + offset, y, c, invert);
+ data++;
+ c = data[0];
+ offset += 6;
+ }
+}
+
+
+void draw_rect_filled_soft(uint8_t x, uint8_t y, uint8_t width, uint8_t height, bool on) {
+ for (int i = x; i < x + width; i++) {
+ if (i == x || i == (x + width - 1))
+ draw_line_v(i, y + 1, height - 2, on);
+ else
+ draw_line_v(i, y, height, on);
+ }
+}
+
+void draw_text_rectangle(uint8_t x, uint8_t y, uint8_t width, char* str, bool filled) {
+ if (filled) {
+ draw_rect_filled_soft(x, y, width, 11, true);
+ write_chars_at_pixel_xy(x+3, y+2, str, true);
+ } else {
+ draw_rect_soft(x, y, width, 11, true);
+ write_chars_at_pixel_xy(x+3, y+2, str, false);
+ }
+}
+
+void draw_keyboard_layer(void){
+ uint8_t highest_layer;
+ highest_layer = get_highest_layer(layer_state);
+ draw_rect_filled_soft(LAYER_DISPLAY_X + highest_layer*12, LAYER_DISPLAY_Y, 11, 11, true);
+
+ write_char_at_pixel_xy(LAYER_DISPLAY_X+3, LAYER_DISPLAY_Y+2, '0', highest_layer == 0);
+ write_char_at_pixel_xy(LAYER_DISPLAY_X+3+12, LAYER_DISPLAY_Y+2, '1', highest_layer == 1);
+ write_char_at_pixel_xy(LAYER_DISPLAY_X+3+24, LAYER_DISPLAY_Y+2, '2', highest_layer == 2);
+ write_char_at_pixel_xy(LAYER_DISPLAY_X+3+36, LAYER_DISPLAY_Y+2, '3', highest_layer == 3);
+
+ draw_line_h(0, 14, 128, true);
+}
+
+
+static const uint8_t splash[] PROGMEM = { \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 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, 0x00, 0x00, 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, 0x1c, 0x06, 0x02, 0x02, \
+ 0x03, 0x03, 0x83, 0x83, 0x83, 0x83, 0x03, 0x03, 0x03, 0x03, 0x83, 0x83, 0x83, 0x83, 0x83, 0x03, \
+ 0x03, 0x03, 0x83, 0x83, 0x83, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x83, 0x83, 0x83, 0x83, 0x03, \
+ 0x02, 0x02, 0x06, 0x0c, 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, \
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0xf8, 0xfe, 0x87, 0xe1, 0xbf, 0x9f, 0x00, 0x00, \
+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0xff, 0xff, 0xff, 0x3f, 0xfc, 0xe0, 0xc0, 0xf8, 0x7f, 0x0f, 0xff, 0xff, 0x00, 0x00, \
+ 0x00, 0x00, 0xff, 0xff, 0xff, 0x80, 0xc0, 0xf0, 0xf8, 0x3c, 0x1f, 0x0f, 0x03, 0x01, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0xc7, 0x83, \
+ 0x83, 0x8f, 0xc6, 0xc0, 0xfe, 0xff, 0xc7, 0xc0, 0xf0, 0xff, 0xff, 0x81, 0xc0, 0xe0, 0x70, 0x9e, \
+ 0x8f, 0xbf, 0xf8, 0xf0, 0x80, 0xc1, 0xe3, 0x7f, 0xff, 0xff, 0x83, 0x83, 0x83, 0xc1, 0xfc, 0xfe, \
+ 0xff, 0x83, 0x83, 0xdf, 0xff, 0x7e, 0x18, 0x18, 0xfe, 0xff, 0xfb, 0x1c, 0x06, 0xff, 0xff, 0xff, \
+ 0x3c, 0x0e, 0xe7, 0xff, 0xff, 0x80, 0xc0, 0xe0, 0x60, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x01, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, \
+ 0x00, 0x00, 0xff, 0xff, 0xff, 0x07, 0x03, 0x03, 0x0f, 0x3f, 0x7c, 0xf8, 0xe0, 0x80, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 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, 0x01, 0x01, \
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, \
+ 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, \
+ 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, \
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x38, 0x20, 0x40, 0x40, \
+ 0x40, 0x40, 0x43, 0x43, 0x43, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x43, 0x43, 0x40, 0x40, \
+ 0x40, 0x40, 0x43, 0x43, 0x43, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x43, 0x43, 0x43, 0x40, \
+ 0x40, 0x40, 0x60, 0x30, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+uint16_t startup_timer = 0;
+bool redrawn_splash = false;
+
+
+#ifdef BONGOCAT
+
+
+#define ANIM_FRAME_DURATION 75
+#define IDLE_FRAMES 5
+#define IDLE_TIMEOUT 750
+#define SLEEP_TIMEOUT 15000
+
+
+static const uint8_t bongofont[] PROGMEM = { \
+ 0xC1, 0xC1, 0xC2, 0x04, 0x08, 0x10, \
+ 0xC0, 0x38, 0x04, 0x03, 0x00, 0x00, \
+ 0xA0, 0x22, 0x24, 0x14, 0x12, 0x12, \
+ 0xA0, 0x21, 0x22, 0x12, 0x11, 0x11, \
+ 0x83, 0x7C, 0x41, 0x41, 0x40, 0x40, \
+ 0x82, 0x82, 0x84, 0x08, 0x10, 0x20, \
+ 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, \
+ 0x80, 0x70, 0x19, 0x06, 0x00, 0x00, \
+ 0x80, 0x70, 0x0C, 0x03, 0x00, 0x00, \
+ 0x80, 0x00, 0x30, 0x30, 0x00, 0xC0, \
+ 0x80, 0x00, 0x30, 0x30, 0x00, 0x00, \
+ 0x49, 0x88, 0x08, 0x08, 0x08, 0x00, \
+ 0x44, 0x84, 0x04, 0x04, 0x00, 0x00, \
+ 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, \
+ 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, \
+ 0x3C, 0xC2, 0x01, 0x01, 0x02, 0x02, \
+ 0x35, 0x01, 0x8A, 0x7C, 0x00, 0x00, \
+ 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, \
+ 0x20, 0x21, 0x22, 0x12, 0x11, 0x11, \
+ 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, \
+ 0x1E, 0xE1, 0x00, 0x00, 0x01, 0x01, \
+ 0x1C, 0xE2, 0x01, 0x01, 0x02, 0x02, \
+ 0x18, 0x64, 0x82, 0x02, 0x02, 0x02, \
+ 0x18, 0x60, 0x80, 0x00, 0x00, 0x00, \
+ 0x18, 0x18, 0x1B, 0x03, 0x00, 0x40, \
+ 0x18, 0x06, 0x05, 0x98, 0x99, 0x84, \
+ 0x12, 0x0B, 0x08, 0x08, 0x08, 0x08, \
+ 0x11, 0x09, 0x08, 0x08, 0x08, 0x08, \
+ 0x10, 0x10, 0xD0, 0x11, 0x0F, 0x21, \
+ 0x10, 0x10, 0x10, 0x11, 0x0F, 0x01, \
+ 0x10, 0x08, 0x08, 0x04, 0x04, 0x04, \
+ 0x10, 0x08, 0x04, 0x02, 0x02, 0x04, \
+ 0x0C, 0x30, 0x40, 0x80, 0x00, 0x00, \
+ 0x0C, 0x0C, 0x0D, 0x01, 0x00, 0x40, \
+ 0x08, 0xE8, 0x08, 0x07, 0x10, 0x24, \
+ 0x08, 0x30, 0x40, 0x80, 0x00, 0x00, \
+ 0x08, 0x08, 0x08, 0x07, 0x00, 0x00, \
+ 0x08, 0x08, 0x04, 0x02, 0x02, 0x02, \
+ 0x08, 0x04, 0x02, 0x01, 0x01, 0x02, \
+ 0x05, 0x05, 0x09, 0x09, 0x10, 0x10, \
+ 0x04, 0x38, 0x40, 0x80, 0x00, 0x00, \
+ 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, \
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, \
+ 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, \
+ 0x02, 0x02, 0x81, 0x80, 0x80, 0x00, \
+ 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, \
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, \
+ 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, \
+ 0x01, 0xE1, 0x1A, 0x06, 0x09, 0x31, \
+ 0x01, 0x01, 0x02, 0x04, 0x08, 0x10, \
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, \
+ 0x00, 0x80, 0x40, 0x40, 0x20, 0x20, \
+ 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, \
+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x81, \
+ 0x00, 0x00, 0x01, 0x01, 0x00, 0x40, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+
+static const uint8_t bongo_line_x[] = {51, 49, 48, 57};
+static const uint8_t bongo_line_y[] = {0, 8, 16, 24};
+static const uint8_t bongo_line_len[] = {5, 7, 8, 6};
+
+const uint8_t bongo_line_data[8][26] PROGMEM = {
+ { //idle1
+ 60, 52, 19, 30, 35, \
+ 22, 47, 51, 60, 9, 0, 17, \
+ 1, 57, 33, 3, 27, 41, 29, 50, \
+ 45, 36, 60, 60, 60, 60}, \
+ { //idle2
+ 60, 52, 19, 30, 35, \
+ 22, 47, 51, 60, 9, 0, 17, \
+ 1, 57, 33, 3, 27, 41, 29, 50, \
+ 45, 36, 60, 60, 60, 60}, \
+ { //idle3
+ 60, 53, 14, 31, 23, \
+ 15, 43, 60, 60, 54, 5, 13, \
+ 7, 56, 24, 2, 26, 39, 29, 50, \
+ 45, 36, 60, 60, 60, 60}, \
+ { //idle4
+ 6, 52, 19, 38, 32, \
+ 20, 47, 51, 60, 9, 0, 17, \
+ 8, 57, 33, 3, 27, 41, 29, 50, \
+ 45, 36, 60, 60, 60, 60}, \
+ { //idle5
+ 60, 52, 19, 37, 40, \
+ 21, 47, 51, 60, 9, 0, 17, \
+ 8, 57, 33, 3, 27, 41, 29, 50, \
+ 45, 36, 60, 60, 60, 60}, \
+ { //prep
+ 6, 52, 19, 38, 32, \
+ 20, 44, 51, 60, 10, 48, 16, \
+ 8, 25, 4, 18, 27, 42, 46, 50, \
+ 60, 60, 60, 60, 60, 60}, \
+ { //tap1
+ 6, 52, 19, 38, 32, \
+ 20, 44, 51, 60, 10, 49, 17, \
+ 8, 25, 4, 18, 27, 41, 28, 11, \
+ 60, 60, 60, 60, 58, 59}, \
+ { //tap2
+ 6, 52, 19, 38, 32, \
+ 20, 47, 51, 60, 10, 48, 16, \
+ 8, 60, 55, 3, 27, 42, 46, 50, \
+ 45, 34, 12, 60, 60, 60}
+};
+
+enum anin_states { sleep, idle, prep, tap };
+uint8_t anim_state = idle;
+uint32_t idle_timeout_timer = 0;
+uint32_t anim_timer = 0;
+uint8_t current_idle_frame = 0;
+uint8_t current_tap_frame = 6;
+uint8_t last_bongo_frame = 12;
+
+void write_bongochar_at_pixel_xy(uint8_t x, uint8_t y, uint8_t data, bool invert) {
+ uint8_t i, j, temp;
+ for (i = 0; i < 6 ; i++) { // 6 = font width
+ temp = pgm_read_byte(&bongofont[data * 6]+i);
+ for (j = 0; j < 8; j++) { // 8 = font height
+ if (temp & 0x01) {
+ oled_write_pixel(x + i, y + j, !invert);
+ } else {
+ oled_write_pixel(x + i, y + j, invert);
+ }
+ temp >>= 1;
+ }
+ }
+}
+
+bool is_key_down(void) {
+ for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+ if (matrix[i] > 0) {
+ return true;
+ }
+ }
+ return false;
+}
+
+void eval_anim_state(void) {
+ bool key_down;
+ key_down = is_key_down();
+
+ switch (anim_state) {
+ case sleep:
+ if(key_down) { anim_state = tap; }
+ break;
+ case idle:
+ if(key_down) { anim_state = tap; }
+ else if (timer_elapsed32(idle_timeout_timer) >= SLEEP_TIMEOUT) //prep to idle
+ {
+ anim_state = sleep;
+ current_idle_frame = 0;
+ }
+ break;
+ case prep:
+ if(key_down) { anim_state = tap; }
+ else if (timer_elapsed32(idle_timeout_timer) >= IDLE_TIMEOUT) //prep to idle
+ {
+ anim_state = idle;
+ current_idle_frame = 0;
+ }
+ break;
+ case tap:
+ if (!key_down)
+ {
+ anim_state = prep;
+ idle_timeout_timer = timer_read32();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void draw_bongo_table(void) {
+ //draws the table edge for bongocat, this edge doesn't change during the animation
+ uint8_t i;
+ uint8_t y = 31;
+ uint8_t j = 0;
+ for (i = 17; i < 57; i++) {
+ oled_write_pixel(i, y, true); //every five horizontal pixels, move up one pixel to make a diagonal line
+ if (j == 4) {
+ --y;
+ j=0;
+ } else {
+ j++;
+ }
+ }
+
+ y=15;
+ j=0;
+ for (i = 91; i < 128; i++) {
+
+ oled_write_pixel(i, y, true); //every four horizontal pixels, move up one pixel to make a diagonal line
+ if (j == 3) {
+ --y;
+ j=0;
+ } else {
+ j++;
+ }
+ }
+
+
+}
+
+
+void draw_bongocat_frame(int framenumber) {
+ //only redraw if the animation frame has changed
+ if (framenumber != last_bongo_frame) {
+ last_bongo_frame = framenumber;
+ uint8_t i, j, current_bongochar = 0;
+ for (i = 0; i < 4; i++) {
+ for (j = 0; j < bongo_line_len[i]; j++) {
+ write_bongochar_at_pixel_xy(bongo_line_x[i] + j*6, bongo_line_y[i], pgm_read_byte(&bongo_line_data[framenumber][current_bongochar]), false);
+ current_bongochar++;
+ }
+ }
+ }
+
+}
+
+bool is_new_tap(void) {
+ static matrix_row_t old_matrix[] = { 0, 0, 0, 0, 0, 0 };
+ bool new_tap = false;
+ for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+ if (matrix[i] > old_matrix[i]) { // more 1's detected, there was a new tap
+ new_tap = true;
+ }
+ old_matrix[i] = matrix[i];
+ }
+ return new_tap;
+}
+
+void draw_bongocat(void) {
+ static bool already_tapped = false;
+ if (is_new_tap()) {
+ already_tapped = false;
+ };
+ eval_anim_state();
+ switch (anim_state) {
+ case sleep:
+ draw_bongocat_frame(4);
+ break;
+ case idle:
+ draw_bongocat_frame(4 - current_idle_frame);
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ current_idle_frame = (current_idle_frame + 1) % 5;
+ anim_timer = timer_read32();
+ }
+ break;
+ case prep:
+ draw_bongocat_frame(5);
+ already_tapped = false;
+ break;
+ case tap:
+ draw_bongocat_frame(current_tap_frame);
+ if (already_tapped == false) {
+ if (current_tap_frame == 6) {
+ current_tap_frame = 7;
+ }
+ else {
+ current_tap_frame = 6;
+ }
+ }
+ already_tapped = true;
+ break;
+ default:
+ draw_bongocat_frame(4);
+ already_tapped = false;
+ break;
+
+ }
+}
+
+#endif //BONGOCAT
+
+void draw_splash(void) {
+ uint8_t i, j, k, temp;
+ uint16_t count;
+ count = 0;
+ temp = pgm_read_byte(&splash[count]);
+ for (i = 0; i < 4 ; i++) {
+ for (j = 0; j < 128; j++) {
+ for (k = 0; k < 8; k++) {
+ if (temp & 0x01) {
+ oled_write_pixel(j, (i * 8) + k, true);
+ } else {
+ oled_write_pixel(j, (i * 8) + k, false);
+ }
+ temp >>= 1;
+
+ }
+ temp = pgm_read_byte(&splash[++count]);
+ }
+ }
+}
+
+void draw_media_arrow(uint8_t x, uint8_t y, bool fwd) {
+ draw_line_v(x, y, 7, true);
+ draw_line_v(x+4, y, 7, true);
+ draw_line_v(x+2, y+2, 3, true);
+ if (fwd) {
+ draw_line_v(x+1, y+1, 5, true);
+ oled_write_pixel(x+3, y+3, true);
+ } else {
+ draw_line_v(x+3, y+1, 5, true);
+ oled_write_pixel(x+1, y+3, true);
+ }
+}
+
+void draw_enc_mode(void){
+ write_chars_at_pixel_xy(enc_mode_str_startpos[user_config.enc_mode], ENC_DISPLAY_Y + 2, enc_mode_str[user_config.enc_mode], false);
+ if (user_config.enc_mode == ENC_MEDIA) {
+ draw_media_arrow(enc_mode_str_startpos[user_config.enc_mode] - 16, ENC_DISPLAY_Y + 2, false);
+ draw_media_arrow(enc_mode_str_startpos[user_config.enc_mode] + 88, ENC_DISPLAY_Y + 2, true);
+ }
+}
+
+void draw_keyboard_locks(void) {
+ led_t led_state = host_keyboard_led_state();
+ draw_text_rectangle(CAPSLOCK_DISPLAY_X, CAPSLOCK_DISPLAY_Y, 5 + (3 * 6), "CAP", led_state.caps_lock);
+ draw_text_rectangle(NUMLOCK_DISPLAY_X, NUMLOCK_DISPLAY_Y, 5 + (3 * 6), "NUM", led_state.num_lock);
+}
+
+
+/* Encoder handling functions */
+
+__attribute__((weak)) void set_custom_encoder_mode_user(bool custom_encoder_mode) {}
+
+void update_custom_encoder_mode_user(void) {
+#ifdef BONGOCAT
+ set_custom_encoder_mode_user((user_config.enc_mode == ENC_CUSTOM) || (user_config.enc_mode == ENC_SPLASH) || (user_config.enc_mode == ENC_BONGO));
+#else
+ set_custom_encoder_mode_user((user_config.enc_mode == ENC_CUSTOM) || (user_config.enc_mode == ENC_SPLASH));
+#endif
+}
+
+void update_kb_eeprom(void) {
+ eeconfig_update_kb(user_config.raw);
+}
+
+void update_breathing(void);
+void matrix_init_kb(void) {
+
+ user_config.raw = eeconfig_read_kb();
+ if (user_config.enc_mode == 0xFF) { //EEPROM was cleared
+ user_config.enc_mode = 0;
+ user_config.oled_is_on = true;
+ user_config.breathingperiod = 1;
+ update_kb_eeprom();
+
+ }
+ startup_delay = true;
+ update_custom_encoder_mode_user();
+ matrix_init_user();
+}
+
+void handle_encoder_switch_process_record(keyrecord_t *record) {
+
+ static uint32_t encoder_press_timer = 0;
+ if (record->event.pressed) {
+ if (!user_config.oled_is_on) {
+ oled_on();
+ user_config.oled_is_on = true;
+ OLED_awakened = true;
+ OLED_redraw = true;
+ update_kb_eeprom();
+ }
+ encoder_press_timer = timer_read32();
+ } else {
+ if (OLED_awakened == true) {
+ OLED_awakened = false;
+ } else {
+ if (timer_elapsed32(encoder_press_timer) < 300) {
+
+ if (get_mods() & MOD_MASK_SHIFT) {
+ user_config.enc_mode = (user_config.enc_mode + (num_enc_modes- 1)) % num_enc_modes;
+ } else {
+ user_config.enc_mode = (user_config.enc_mode + 1) % num_enc_modes;
+ }
+ OLED_redraw = true;
+ update_custom_encoder_mode_user();
+ update_kb_eeprom();
+ } else {
+ OLED_redraw = false;
+ oled_clear();
+ user_config.oled_is_on = false;
+ update_kb_eeprom();
+ }
+ }
+ }
+
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.key.row == ENCODER_MATRIX_ROW && record->event.key.col == ENCODER_MATRIX_COL){
+ handle_encoder_switch_process_record(record);
+ }
+ return process_record_user(keycode, record);
+}
+
+void update_breathing(void) {
+ if (user_config.breathingperiod == 1) {
+ breathing_disable();
+ }
+ else {
+ breathing_period_set(user_config.breathingperiod);
+ breathing_enable();
+ }
+ update_kb_eeprom();
+}
+
+
+void backlight_breath_change(bool increase) { //increase period or decrease period
+ if ((increase) && (user_config.breathingperiod < 15)) {
+ user_config.breathingperiod++;
+ update_breathing();
+ }
+ if (!increase) {
+ if (user_config.breathingperiod > 2) {
+ user_config.breathingperiod--;
+ update_breathing();
+ }
+ else {
+ user_config.breathingperiod = 1;
+ update_breathing();
+
+
+ }
+ }
+}
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) return false;
+ switch (user_config.enc_mode) {
+ case ENC_RGB_MODE :
+ if (clockwise) {
+ rgblight_step();
+ } else {
+ rgblight_step_reverse();
+ }
+ break;
+ case ENC_RGB_BRIGHT :
+ if (clockwise) {
+ rgblight_increase_val();
+ } else {
+ rgblight_decrease_val();
+ }
+ break;
+ case ENC_BL_BRIGHT :
+ if (clockwise) {
+ backlight_increase();
+ } else {
+ backlight_decrease();
+ }
+ break;
+ case ENC_BL_BREATH :
+ backlight_breath_change(clockwise);
+ break;
+ case ENC_RGB_COLOR :
+ if (clockwise) {
+ rgblight_increase_hue();
+ } else {
+ rgblight_decrease_hue();
+ }
+ break;
+ default:
+ if (clockwise) {
+ tap_code(enc_cw[user_config.enc_mode]);
+ } else {
+ tap_code(enc_ccw[user_config.enc_mode]);
+ }
+ }
+ return true;
+}
+
+
+void matrix_scan_kb(void) {
+ matrix_scan_user();
+ led_t current_led_state = host_keyboard_led_state();
+ uint8_t current_layer = get_highest_layer(layer_state);
+ if (startup_delay) {
+ startup_timer = timer_read();
+ startup_delay = false;
+ startup_complete = false;
+ starting_up = true;
+ OLED_redraw = false;
+ }
+ else if (starting_up) {
+ if (timer_elapsed(startup_timer) >= 200) {
+ update_breathing();
+ startup_complete = true;
+ starting_up = false;
+ if (user_config.oled_is_on) {
+ oled_on();
+ OLED_redraw = true;
+ } else
+ {
+ oled_clear();
+ user_config.oled_is_on = false;
+ }
+ }
+ }
+ if (startup_complete) {
+ if (user_config.enc_mode == ENC_SPLASH) {
+ if (user_config.oled_is_on && OLED_redraw) {
+ draw_splash();
+ }
+ }
+ #ifdef BONGOCAT
+ else if (user_config.enc_mode == ENC_BONGO) {
+ if (user_config.oled_is_on) {
+ if (OLED_redraw) {
+ oled_clear();
+ last_bongo_frame = 12; //force a redraw
+ draw_bongo_table();
+ OLED_redraw = false;
+ }
+ draw_bongocat();
+
+ }
+
+ }
+ #endif //BONGOCAT
+ else {
+ if (user_config.oled_is_on && (
+ OLED_redraw
+ || (prev_layer != current_layer)
+ || (prev_capslock != current_led_state.caps_lock)
+ || (prev_numlock != current_led_state.num_lock))) {
+
+ prev_layer = current_layer;
+ prev_capslock = current_led_state.caps_lock;
+ prev_numlock = current_led_state.num_lock;
+
+ oled_clear();
+ draw_keyboard_layer();
+ draw_keyboard_locks();
+ draw_enc_mode();
+ }
+ }
+ OLED_redraw = false;
+ }
+
+}
+
diff --git a/keyboards/custommk/evo70/evo70.h b/keyboards/custommk/evo70/evo70.h
new file mode 100644
index 0000000000..2766da19c9
--- /dev/null
+++ b/keyboards/custommk/evo70/evo70.h
@@ -0,0 +1,34 @@
+/* Copyright 2021 customMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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( \
+ K11, K61, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K62, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, \
+ K66, K31, K63, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K57, K55, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, \
+ K52, K54, K65, K51, K53, K56, K67, E00A, K59, K5A, E00B, K5C, K5D, K5E \
+) { \
+ { K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \
+ { K51, K52, K53, K54, K55, K56, K57, E00A, K59, K5A, E00B, K5C, K5D, K5E }, \
+ { K61, K62, K63, KC_NO, K65, K66, K67, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
diff --git a/keyboards/custommk/evo70/info.json b/keyboards/custommk/evo70/info.json
new file mode 100644
index 0000000000..f3d132fd79
--- /dev/null
+++ b/keyboards/custommk/evo70/info.json
@@ -0,0 +1,111 @@
+{
+ "keyboard_name": "EVO70",
+ "url": "https://www.customMK.com",
+ "maintainer": "customMK",
+ "manufacturer": "customMK",
+ "tags": ["70%", "encoder", "underglow", "backlight"],
+ "usb": {
+ "vid": "0xF35B",
+ "pid": "0xFAB5",
+ "device_version": "0.0.1"
+ },
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "cols": ["F1", "F4", "E6", "B1", "B7", "B0", "E2", "D4", "D6", "D7", "B4", "B3", "B6", "C6"],
+ "rows": ["D3", "D2", "F7", "F6", "F5", "F0"]
+
+ },
+ "debounce": 5,
+ "processor": "atmega32u4",
+ "rgblight": {
+ "led_count": 48,
+ "pin": "B2",
+ "hue_steps": 4,
+ "saturation_steps": 8,
+ "brightness_steps": 4,
+ "animations": {
+ "all": true
+ }
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"KC_ESC", "x":2.5, "y":1.1},
+ {"label":"KC_1", "x":3.5, "y":1.1},
+ {"label":"KC_2", "x":4.5, "y":1.1},
+ {"label":"KC_3", "x":5.5, "y":1.1},
+ {"label":"KC_4", "x":6.5, "y":1.1},
+ {"label":"KC_5", "x":7.5, "y":1.1},
+ {"label":"KC_6", "x":8.5, "y":1.1},
+ {"label":"KC_7", "x":9.5, "y":1.1},
+ {"label":"KC_8", "x":10.5, "y":1.1},
+ {"label":"KC_9", "x":11.5, "y":1.1},
+ {"label":"KC_0", "x":12.5, "y":1.1},
+ {"label":"KC_MINS", "x":13.5, "y":1.1},
+ {"label":"KC_EQL", "x":14.5, "y":1.1},
+ {"label":"KC_BSPC", "x":15.5, "y":1.1, "w":2},
+ {"label":"KC_DEL", "x":17.5, "y":1.1},
+ {"label":"KC_TAB", "x":2.5, "y":2.1, "w":1.5},
+ {"label":"KC_Q", "x":4, "y":2.1},
+ {"label":"KC_W", "x":5, "y":2.1},
+ {"label":"KC_E", "x":6, "y":2.1},
+ {"label":"KC_R", "x":7, "y":2.1},
+ {"label":"KC_T", "x":8, "y":2.1},
+ {"label":"KC_Y", "x":9, "y":2.1},
+ {"label":"KC_U", "x":10, "y":2.1},
+ {"label":"KC_I", "x":11, "y":2.1},
+ {"label":"KC_O", "x":12, "y":2.1},
+ {"label":"KC_P", "x":13, "y":2.1},
+ {"label":"KC_LBRC", "x":14, "y":2.1},
+ {"label":"KC_RBRC", "x":15, "y":2.1},
+ {"label":"KC_BSLS", "x":16, "y":2.1, "w":1.5},
+ {"label":"KC_PGUP", "x":17.5, "y":2.1},
+ {"label":"KC_F1", "x":0, "y":3.1},
+ {"label":"KC_F2", "x":1, "y":3.1},
+ {"label":"KC_CAPS", "x":2.5, "y":3.1, "w":1.75},
+ {"label":"KC_A", "x":4.25, "y":3.1},
+ {"label":"KC_S", "x":5.25, "y":3.1},
+ {"label":"KC_D", "x":6.25, "y":3.1},
+ {"label":"KC_F", "x":7.25, "y":3.1},
+ {"label":"KC_G", "x":8.25, "y":3.1},
+ {"label":"KC_H", "x":9.25, "y":3.1},
+ {"label":"KC_J", "x":10.25, "y":3.1},
+ {"label":"KC_K", "x":11.25, "y":3.1},
+ {"label":"KC_L", "x":12.25, "y":3.1},
+ {"label":"KC_SCLN", "x":13.25, "y":3.1},
+ {"label":"KC_QUOT", "x":14.25, "y":3.1},
+ {"label":"KC_ENT", "x":15.25, "y":3.1, "w":2.25},
+ {"label":"KC_PGDN", "x":17.5, "y":3.1},
+ {"label":"KC_F3", "x":0, "y":4.1},
+ {"label":"KC_F4", "x":1, "y":4.1},
+ {"label":"KC_LSFT", "x":2.5, "y":4.1, "w":2.25},
+ {"label":"KC_Z", "x":4.75, "y":4.1},
+ {"label":"KC_X", "x":5.75, "y":4.1},
+ {"label":"KC_C", "x":6.75, "y":4.1},
+ {"label":"KC_V", "x":7.75, "y":4.1},
+ {"label":"KC_B", "x":8.75, "y":4.1},
+ {"label":"KC_N", "x":9.75, "y":4.1},
+ {"label":"KC_M", "x":10.75, "y":4.1},
+ {"label":"KC_COMM", "x":11.75, "y":4.1},
+ {"label":"KC_DOT", "x":12.75, "y":4.1},
+ {"label":"KC_SLSH", "x":13.75, "y":4.1},
+ {"label":"KC_RSFT", "x":14.75, "y":4.1, "w":1.75},
+ {"label":"KC_UP", "x":16.5, "y":4.1},
+ {"label":"KC_END", "x":17.5, "y":4.1},
+ {"label":"KC_F5", "x":0, "y":5.1},
+ {"label":"KC_F6", "x":1, "y":5.1},
+ {"label":"KC_LCTL", "x":2.5, "y":5.1, "w":1.25},
+ {"label":"KC_LGUI", "x":3.75, "y":5.1, "w":1.25},
+ {"label":"KC_LALT", "x":5, "y":5.1, "w":1.25},
+ {"label":"KC_SPC", "x":6.25, "y":5.1, "w":6.25},
+ {"label":"KC_TRNS", "x":0.5, "y":1.1},
+ {"label":"KC_VOLD", "x":0, "y":0},
+ {"label":"KC_RALT", "x":12.5, "y":5.1, "w":1.25},
+ {"label":"KC_RCTL", "x":13.75, "y":5.1, "w":1.25},
+ {"label":"KC_VOLU", "x":1, "y":0},
+ {"label":"KC_LEFT", "x":15.5, "y":5.1},
+ {"label":"KC_DOWN", "x":16.5, "y":5.1},
+ {"label":"KC_RGHT", "x":17.5, "y":5.1}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/custommk/evo70/keymaps/default/keymap.c b/keyboards/custommk/evo70/keymaps/default/keymap.c
new file mode 100644
index 0000000000..795f10fdec
--- /dev/null
+++ b/keyboards/custommk/evo70/keymaps/default/keymap.c
@@ -0,0 +1,49 @@
+/* Copyright 2021 customMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_F1, 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_QUOT, KC_ENT, KC_PGDN,
+ KC_F3, 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_RSFT, KC_UP, KC_END,
+ KC_F5, KC_F6, KC_LCTL, KC_LWIN, KC_LALT, KC_SPACE, KC_NO, KC_VOLD, KC_RALT, KC_RCTL, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT(
+ QK_BOOT, KC_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_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F7, KC_F8, 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_F9, KC_F10, KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ 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),
+
+ [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),
+
+ [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),
+
+};
diff --git a/keyboards/custommk/evo70/keymaps/default/readme.md b/keyboards/custommk/evo70/keymaps/default/readme.md
new file mode 100644
index 0000000000..427180663d
--- /dev/null
+++ b/keyboards/custommk/evo70/keymaps/default/readme.md
@@ -0,0 +1,3 @@
+# Default EVO70 Layout
+
+This is the default layout for EVO70. \ No newline at end of file
diff --git a/keyboards/custommk/evo70/keymaps/via/keymap.c b/keyboards/custommk/evo70/keymaps/via/keymap.c
new file mode 100644
index 0000000000..68687d6c1a
--- /dev/null
+++ b/keyboards/custommk/evo70/keymaps/via/keymap.c
@@ -0,0 +1,98 @@
+/* Copyright 2021 customMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_F1, 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_QUOT, KC_ENT, KC_PGDN,
+ KC_F3, 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_RSFT, KC_UP, KC_END,
+ KC_F5, KC_F6, KC_LCTL, KC_LWIN, KC_LALT, KC_SPACE, KC_NO, KC_VOLD, KC_RALT, KC_RCTL, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [1] = LAYOUT(
+ QK_BOOT, KC_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_BSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F7, KC_F8, 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_F9, KC_F10, KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ 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),
+
+ [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),
+
+ [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),
+
+};
+
+static bool custom_encoder_mode = false;
+
+void set_custom_encoder_mode_user(bool custom_mode) {
+ custom_encoder_mode = custom_mode;
+}
+
+
+keyevent_t encoder_ccw = {
+ .key = (keypos_t){.row = 4, .col = 7},
+ .pressed = false
+};
+
+keyevent_t encoder_cw = {
+ .key = (keypos_t){.row = 4, .col = 10},
+ .pressed = false
+};
+
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (custom_encoder_mode) {
+ 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 false;
+ }
+ return true;
+}
+
+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);
+ }
+} \ No newline at end of file
diff --git a/keyboards/custommk/evo70/keymaps/via/readme.md b/keyboards/custommk/evo70/keymaps/via/readme.md
new file mode 100644
index 0000000000..19f936fac7
--- /dev/null
+++ b/keyboards/custommk/evo70/keymaps/via/readme.md
@@ -0,0 +1,3 @@
+# EVO70 Layout for VIA
+
+This is the via layout for the EVO70. It is identical to the default layout except VIA is enabled. \ No newline at end of file
diff --git a/keyboards/gentleman65/keymaps/via/rules.mk b/keyboards/custommk/evo70/keymaps/via/rules.mk
index 43061db1dd..43061db1dd 100644
--- a/keyboards/gentleman65/keymaps/via/rules.mk
+++ b/keyboards/custommk/evo70/keymaps/via/rules.mk
diff --git a/keyboards/custommk/evo70/readme.md b/keyboards/custommk/evo70/readme.md
new file mode 100644
index 0000000000..05c051ff80
--- /dev/null
+++ b/keyboards/custommk/evo70/readme.md
@@ -0,0 +1,21 @@
+# EVO70
+
+EVO70 is a 70% keyboard (65% w/left side function cluster) designed and produced by customMK.
+
+![EVO70](https://i.imgur.com/JBiQF8Ch.jpg)
+
+* Keyboard Maintainer: [customMK](https://github.com/customMK)
+* Hardware Supported: EVO70
+* Hardware Availability: [customMK](https://shop.custommk.com/collections/evo70/products/evo70)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make custommk/evo70:default
+
+Flashing example for this keyboard:
+
+ make custommk/evo70:default:flash
+
+EVO70 has qmk-dfu bootloader preinstalled. To enter the bootloader, run the flashing command above, and then either plug in the USB connection while holding the top-left key, or alternatively, plug in the USB connection and then press the reset button 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/custommk/evo70/rules.mk b/keyboards/custommk/evo70/rules.mk
new file mode 100644
index 0000000000..5676d945f9
--- /dev/null
+++ b/keyboards/custommk/evo70/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = qmk-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 = yes # 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/custommk/genesis/rev1/config.h b/keyboards/custommk/genesis/rev1/config.h
index 3393c53302..9eaa4ddd76 100644
--- a/keyboards/custommk/genesis/rev1/config.h
+++ b/keyboards/custommk/genesis/rev1/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xF35B
-#define PRODUCT_ID 0xFAB0
-#define DEVICE_VER 0x0001
-#define MANUFACTURER customMK
-#define PRODUCT GenesisRev1
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F0, C7, C6, B6, B5 }
#define MATRIX_COL_PINS { F4, F5, D7, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/custommk/genesis/rev1/info.json b/keyboards/custommk/genesis/rev1/info.json
index a000b9cfbb..ef7838af56 100644
--- a/keyboards/custommk/genesis/rev1/info.json
+++ b/keyboards/custommk/genesis/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Genesis Rev1",
+ "manufacturer": "customMK",
"url": "https://www.customMK.com",
"maintainer": "customMK",
+ "usb": {
+ "vid": "0xF35B",
+ "pid": "0xFAB0",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [{"label":"MO(1)", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"Mute", "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":"Pg Up", "x":3, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Pg Dn", "x":3, "y":3}, {"label":"0", "x":0, "y":4}, {"label":"Spc", "x":1, "y":4}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}]
diff --git a/keyboards/custommk/genesis/rev2/config.h b/keyboards/custommk/genesis/rev2/config.h
index cbfda53f14..0f4eb64efe 100644
--- a/keyboards/custommk/genesis/rev2/config.h
+++ b/keyboards/custommk/genesis/rev2/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xF35B
-#define PRODUCT_ID 0xFAB1
-#define DEVICE_VER 0x0001
-#define MANUFACTURER customMK
-#define PRODUCT GenesisRev2
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F0, C7, C6, B6, B5, B0}
#define MATRIX_COL_PINS { F4, F5, D7, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/custommk/genesis/rev2/info.json b/keyboards/custommk/genesis/rev2/info.json
index 16501ca1d1..8c94f48eab 100644
--- a/keyboards/custommk/genesis/rev2/info.json
+++ b/keyboards/custommk/genesis/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Genesis Rev2",
+ "manufacturer": "customMK",
"url": "https://www.customMK.com",
"maintainer": "customMK",
+ "usb": {
+ "vid": "0xF35B",
+ "pid": "0xFAB1",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [{"label":"MO(1)", "x":0, "y":0},
diff --git a/keyboards/cutie_club/borsdorf/config.h b/keyboards/cutie_club/borsdorf/config.h
index 07452fdfb0..6d77293aea 100644
--- a/keyboards/cutie_club/borsdorf/config.h
+++ b/keyboards/cutie_club/borsdorf/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFB9C
-#define PRODUCT_ID 0x6D8A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Cutie Club
-#define PRODUCT Borsdorf
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { A15, A14, B12, B5, B4 }
#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, A6, A5, A4, A3, A2, A1, A0, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/cutie_club/borsdorf/info.json b/keyboards/cutie_club/borsdorf/info.json
index 2f3941ba6e..b7fca0f340 100644
--- a/keyboards/cutie_club/borsdorf/info.json
+++ b/keyboards/cutie_club/borsdorf/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Borsdorf",
+ "manufacturer": "Cutie Club",
"url": "",
"maintainer": "Cutie Club",
+ "usb": {
+ "vid": "0xFB9C",
+ "pid": "0x6D8A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/cutie_club/giant_macro_pad/config.h b/keyboards/cutie_club/giant_macro_pad/config.h
index c6ef81309d..7d306a44c8 100755
--- a/keyboards/cutie_club/giant_macro_pad/config.h
+++ b/keyboards/cutie_club/giant_macro_pad/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFB9C
-#define PRODUCT_ID 0x74B6
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Cutie Club
-#define PRODUCT Cupar19 Giant Macro Pad
-
/* key matrix size */
#define MATRIX_ROWS 20
#define MATRIX_COLS 20
@@ -34,7 +27,6 @@
*/
#define MATRIX_ROW_PINS { C10, C11, C12, D2, B3, B4, B5, B6, B7, B8, A3, B2, B1, B0, C5, C4, A7, A6, A5, A4 }
#define MATRIX_COL_PINS { C9, C8, C7, C6, B15, B14, B13, B12, A8, A15, B9, A2, A1, A0, C3, C2, C1, C0, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/cutie_club/giant_macro_pad/info.json b/keyboards/cutie_club/giant_macro_pad/info.json
index f8225fdae7..c85bda93f3 100644
--- a/keyboards/cutie_club/giant_macro_pad/info.json
+++ b/keyboards/cutie_club/giant_macro_pad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Cupar19 Giant Macro Pad",
+ "manufacturer": "Cutie Club",
"url": "",
"maintainer": "cutie-club",
+ "usb": {
+ "vid": "0xFB9C",
+ "pid": "0x74B6",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_all": "LAYOUT_ortho_20x20"
},
diff --git a/keyboards/cutie_club/keebcats/denis/config.h b/keyboards/cutie_club/keebcats/denis/config.h
index f7c21efe5e..ada603ab48 100644
--- a/keyboards/cutie_club/keebcats/denis/config.h
+++ b/keyboards/cutie_club/keebcats/denis/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFB9C
-#define PRODUCT_ID 0xB260
-#define DEVICE_VER 0x0000
-#define MANUFACTURER Cutie Club
-#define PRODUCT Keebcats Denis 60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -34,7 +27,6 @@
*/
#define MATRIX_ROW_PINS { B2, D0, F5, F4, F1 }
#define MATRIX_COL_PINS { E6, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1 }
-#define UNUSED_PINS { B0, B1, B7 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/cutie_club/keebcats/denis/info.json b/keyboards/cutie_club/keebcats/denis/info.json
index 72a84e62e8..0857feb552 100644
--- a/keyboards/cutie_club/keebcats/denis/info.json
+++ b/keyboards/cutie_club/keebcats/denis/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Keebcats Denis",
+ "keyboard_name": "Keebcats Denis 80",
+ "manufacturer": "Cutie Club",
"url": "",
"maintainer": "Cutie Club",
+ "usb": {
+ "vid": "0xFB9C",
+ "pid": "0xB260",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/cutie_club/keebcats/dougal/config.h b/keyboards/cutie_club/keebcats/dougal/config.h
index 00d3f3a82d..e59732a56b 100644
--- a/keyboards/cutie_club/keebcats/dougal/config.h
+++ b/keyboards/cutie_club/keebcats/dougal/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFB9C
-#define PRODUCT_ID 0xB265
-#define DEVICE_VER 0x0000
-#define MANUFACTURER Cutie Club
-#define PRODUCT Keebcats Dougal 65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -34,7 +27,6 @@
*/
#define MATRIX_ROW_PINS { B2, D0, F5, F4, F1 }
#define MATRIX_COL_PINS { E6, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, B7 }
-#define UNUSED_PINS { B0, B1, B3 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/cutie_club/keebcats/dougal/info.json b/keyboards/cutie_club/keebcats/dougal/info.json
index f637be7a1a..2ed09a9e49 100644
--- a/keyboards/cutie_club/keebcats/dougal/info.json
+++ b/keyboards/cutie_club/keebcats/dougal/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Keebcats Dougal",
+ "keyboard_name": "Keebcats Dougal 65",
+ "manufacturer": "Cutie Club",
"url": "",
"maintainer": "Cutie Club",
+ "usb": {
+ "vid": "0xFB9C",
+ "pid": "0xB265",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/cutie_club/novus/config.h b/keyboards/cutie_club/novus/config.h
index 842ec901d0..6c601e729e 100644
--- a/keyboards/cutie_club/novus/config.h
+++ b/keyboards/cutie_club/novus/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFB9C
-#define PRODUCT_ID 0x3F42
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Cutie Club
-#define PRODUCT Novus
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { B6, C6, C7, B2, B3, D0, D1, D2, D3, D7, B4, B5, D5, D4, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/cutie_club/novus/info.json b/keyboards/cutie_club/novus/info.json
index 9e111e0a87..ce7e993efd 100644
--- a/keyboards/cutie_club/novus/info.json
+++ b/keyboards/cutie_club/novus/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Novus",
+ "manufacturer": "Cutie Club",
"url": "",
"maintainer": "Cutie Club",
+ "usb": {
+ "vid": "0xFB9C",
+ "pid": "0x3F42",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_all": "LAYOUT_60_ansi_split_bs_rshift"
},
diff --git a/keyboards/cutie_club/wraith/config.h b/keyboards/cutie_club/wraith/config.h
index fa7467eb4a..b020db7b93 100644
--- a/keyboards/cutie_club/wraith/config.h
+++ b/keyboards/cutie_club/wraith/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Amber
-#define PRODUCT Wraith
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0, B7 }
#define MATRIX_COL_PINS { C6, C7, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/cutie_club/wraith/info.json b/keyboards/cutie_club/wraith/info.json
index 40cade6f1a..f3f35d56ce 100644
--- a/keyboards/cutie_club/wraith/info.json
+++ b/keyboards/cutie_club/wraith/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wraith",
+ "keyboard_name": "Wraith",
+ "manufacturer": "Amber",
"url": "",
"maintainer": "amberstarlight",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/cutie_club/wraith/keymaps/amber/keymap.c b/keyboards/cutie_club/wraith/keymaps/amber/keymap.c
index f953b5e199..41d5b39c40 100644
--- a/keyboards/cutie_club/wraith/keymaps/amber/keymap.c
+++ b/keyboards/cutie_club/wraith/keymaps/amber/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
- RESET, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______, _______,
+ QK_BOOT, 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_TRNS,
diff --git a/keyboards/cutie_club/wraith/keymaps/timer/keymap.c b/keyboards/cutie_club/wraith/keymaps/timer/keymap.c
index 8b79709b39..57d894ebc9 100644
--- a/keyboards/cutie_club/wraith/keymaps/timer/keymap.c
+++ b/keyboards/cutie_club/wraith/keymaps/timer/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS, KC_LALT, KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
- RESET, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, _______, _______,
+ QK_BOOT, 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_TRNS,
diff --git a/keyboards/cx60/config.h b/keyboards/cx60/config.h
index 5ff4865a77..c396ff8b93 100644
--- a/keyboards/cx60/config.h
+++ b/keyboards/cx60/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4358 // "CX"
-#define PRODUCT_ID 0x3630 // "60"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER CX60
-#define PRODUCT CX60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -32,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { F1, F4, F5, F6, E6 }
#define MATRIX_COL_PINS { C7, C6, F7, F0, B4, D7, D6, B0, B1, B2, B3, D2, D3, D5 }
-#define UNUSED_PINS
/* Backlight Setup */
#define BACKLIGHT_PIN B7
diff --git a/keyboards/cx60/info.json b/keyboards/cx60/info.json
index fc301d45e6..4672a3e09f 100644
--- a/keyboards/cx60/info.json
+++ b/keyboards/cx60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "CX60-VIA",
+ "keyboard_name": "CX60",
+ "manufacturer": "CX60",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4358",
+ "pid": "0x3630",
+ "device_version": "0.0.1"
+ },
"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":"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}, {"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":"Shift", "x":12, "y":3}, {"label":"Up", "x":13, "y":3}, {"label":"Del", "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}, {"label":"Fn", "x":11, "y":4}, {"label":"Left", "x":12, "y":4}, {"label":"Down", "x":13, "y":4}, {"label":"Right", "x":14, "y":4}]
diff --git a/keyboards/cx60/keymaps/via_caps/keymap.c b/keyboards/cx60/keymaps/via_caps/keymap.c
index af2d862df4..8bbfb022ab 100644
--- a/keyboards/cx60/keymaps/via_caps/keymap.c
+++ b/keyboards/cx60/keymaps/via_caps/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 1: Function Layer */
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, 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, QK_BOOT,
KC_TRNS, 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_RMOD, RGB_MOD, KC_TRNS, KC_TRNS, RGB_TOG,
KC_TRNS, RGB_HUD, RGB_HUI, RGB_SAD, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, KC_VOLU, RGB_SPI,
diff --git a/keyboards/cybergear/macro25/config.h b/keyboards/cybergear/macro25/config.h
index 982559ef37..7c85e2a486 100644
--- a/keyboards/cybergear/macro25/config.h
+++ b/keyboards/cybergear/macro25/config.h
@@ -17,7 +17,3 @@
#pragma once
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define MANUFACTURER CyberGear
-#define PRODUCT Macro25 (mk-macro-01)
diff --git a/keyboards/cybergear/macro25/info.json b/keyboards/cybergear/macro25/info.json
index 951468fddf..adb0030b8e 100644
--- a/keyboards/cybergear/macro25/info.json
+++ b/keyboards/cybergear/macro25/info.json
@@ -1,5 +1,6 @@
{
- "keyboard_name": "Macro225 (mk-macro-01)",
+ "keyboard_name": "Macro25 (mk-macro-01)",
+ "manufacturer": "CyberGear",
"url": "https://github.com/CyberGear/mk-macro-01",
"maintainer": "CyberGear",
"usb": {
diff --git a/keyboards/dailycraft/bat43/config.h b/keyboards/dailycraft/bat43/config.h
index 4c42f6a06d..6204d1c82e 100644
--- a/keyboards/dailycraft/bat43/config.h
+++ b/keyboards/dailycraft/bat43/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5946 // YF
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yfuku
-#define PRODUCT bat43
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6, D7, C6, D4, F7, F6, F5, F4 }
#define MATRIX_COL_PINS { B6, B2, B3, B1, B5, B4 }
-// #define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dailycraft/bat43/info.json b/keyboards/dailycraft/bat43/info.json
new file mode 100644
index 0000000000..ce05fe8a5a
--- /dev/null
+++ b/keyboards/dailycraft/bat43/info.json
@@ -0,0 +1,75 @@
+{
+ "keyboard_name": "bat43",
+ "manufacturer": "yfuku",
+ "url": "",
+ "maintainer": "yfuku",
+ "usb": {
+ "vid": "0x5946",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"k00", "x":0, "y":1.43},
+ {"label":"k01", "x":1, "y":1.11},
+ {"label":"k02", "x":2, "y":0.38},
+ {"label":"k03", "x":3, "y":0},
+ {"label":"k04", "x":4, "y":0.05},
+ {"label":"k05", "x":5, "y":0.16},
+
+ {"label":"k40", "x":9, "y":0.16},
+ {"label":"k41", "x":10, "y":0.05},
+ {"label":"k42", "x":11, "y":0},
+ {"label":"k43", "x":12, "y":0.38},
+ {"label":"k44", "x":13, "y":1.11},
+ {"label":"k45", "x":14, "y":1.43},
+
+ {"label":"k10", "x":0, "y":2.43},
+ {"label":"k11", "x":1, "y":2.11},
+ {"label":"k12", "x":2, "y":1.38},
+ {"label":"k13", "x":3, "y":1},
+ {"label":"k14", "x":4, "y":1.05},
+ {"label":"k15", "x":5, "y":1.16},
+
+ {"label":"k30", "x":7, "y":1.16},
+
+ {"label":"k50", "x":9, "y":1.16},
+ {"label":"k51", "x":10, "y":1.05},
+ {"label":"k52", "x":11, "y":1},
+ {"label":"k53", "x":12, "y":1.38},
+ {"label":"k54", "x":13, "y":2.11},
+ {"label":"k55", "x":14, "y":2.43},
+
+ {"label":"k20", "x":0, "y":3.43},
+ {"label":"k21", "x":1, "y":3.11},
+ {"label":"k22", "x":2, "y":2.38},
+ {"label":"k23", "x":3, "y":2},
+ {"label":"k24", "x":4, "y":2.05},
+ {"label":"k25", "x":5, "y":2.16},
+
+ {"label":"k60", "x":9, "y":2.16},
+ {"label":"k61", "x":10, "y":2.05},
+ {"label":"k62", "x":11, "y":2},
+ {"label":"k63", "x":12, "y":2.38},
+ {"label":"k64", "x":13, "y":3.11},
+ {"label":"k65", "x":14, "y":3.43},
+
+ {"label":"k33", "x":4, "y":3.3},
+ {"label":"k34", "x":5, "y":3.3},
+ {"label":"k35", "x":6, "y":3.3},
+
+ {"label":"k70", "x":8, "y":3.3},
+ {"label":"k71", "x":9, "y":3.3},
+ {"label":"k72", "x":10, "y":3.3},
+
+ {"label":"k75", "x":5.1, "y":4.3, "w":0.8, "h":0.8},
+ {"label":"k74", "x":6.1, "y":4.3, "w":0.8, "h":0.8},
+
+ {"label":"k73", "x":8.1, "y":4.3, "w":0.8, "h":0.8},
+ {"label":"k31", "x":9.1, "y":4.3, "w":0.8, "h":0.8},
+ {"label":"k32", "x":10.1, "y":4.3, "w":0.8, "h":0.8}
+ ]
+ }
+ }
+}
diff --git a/keyboards/dailycraft/bat43/readme.md b/keyboards/dailycraft/bat43/readme.md
index 6b58aa5ca3..0331862290 100644
--- a/keyboards/dailycraft/bat43/readme.md
+++ b/keyboards/dailycraft/bat43/readme.md
@@ -23,4 +23,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/dailycraft/bat43/rev1/info.json b/keyboards/dailycraft/bat43/rev1/info.json
deleted file mode 100644
index 0384bb5feb..0000000000
--- a/keyboards/dailycraft/bat43/rev1/info.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "keyboard_name": "bat43",
- "url": "",
- "maintainer": "yfuku",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"label":"k00", "x":0, "y":1.43},
- {"label":"k01", "x":1, "y":1.11},
- {"label":"k02", "x":2, "y":0.38},
- {"label":"k03", "x":3, "y":0},
- {"label":"k04", "x":4, "y":0.05},
- {"label":"k05", "x":5, "y":0.16},
-
- {"label":"k40", "x":9, "y":0.16},
- {"label":"k41", "x":10, "y":0.05},
- {"label":"k42", "x":11, "y":0},
- {"label":"k43", "x":12, "y":0.38},
- {"label":"k44", "x":13, "y":1.11},
- {"label":"k45", "x":14, "y":1.43},
-
- {"label":"k10", "x":0, "y":2.43},
- {"label":"k11", "x":1, "y":2.11},
- {"label":"k12", "x":2, "y":1.38},
- {"label":"k13", "x":3, "y":1},
- {"label":"k14", "x":4, "y":1.05},
- {"label":"k15", "x":5, "y":1.16},
-
- {"label":"k30", "x":7, "y":1.16},
-
- {"label":"k50", "x":9, "y":1.16},
- {"label":"k51", "x":10, "y":1.05},
- {"label":"k52", "x":11, "y":1},
- {"label":"k53", "x":12, "y":1.38},
- {"label":"k54", "x":13, "y":2.11},
- {"label":"k55", "x":14, "y":2.43},
-
- {"label":"k20", "x":0, "y":3.43},
- {"label":"k21", "x":1, "y":3.11},
- {"label":"k22", "x":2, "y":2.38},
- {"label":"k23", "x":3, "y":2},
- {"label":"k24", "x":4, "y":2.05},
- {"label":"k25", "x":5, "y":2.16},
-
- {"label":"k60", "x":9, "y":2.16},
- {"label":"k61", "x":10, "y":2.05},
- {"label":"k62", "x":11, "y":2},
- {"label":"k63", "x":12, "y":2.38},
- {"label":"k64", "x":13, "y":3.11},
- {"label":"k65", "x":14, "y":3.43},
-
- {"label":"k33", "x":4, "y":3.3},
- {"label":"k34", "x":5, "y":3.3},
- {"label":"k35", "x":6, "y":3.3},
-
- {"label":"k70", "x":8, "y":3.3},
- {"label":"k71", "x":9, "y":3.3},
- {"label":"k72", "x":10, "y":3.3},
-
- {"label":"k74", "x":5.1, "y":4.3, "w":0.8, "h":0.8},
- {"label":"k75", "x":6.1, "y":4.3, "w":0.8, "h":0.8},
-
- {"label":"k73", "x":8.1, "y":4.3, "w":0.8, "h":0.8},
- {"label":"k31", "x":9.1, "y":4.3, "w":0.8, "h":0.8},
- {"label":"k32", "x":10.1, "y":4.3, "w":0.8, "h":0.8}
- ]
- }
- }
-}
diff --git a/keyboards/dailycraft/bat43/rev2/info.json b/keyboards/dailycraft/bat43/rev2/info.json
deleted file mode 100644
index 352d9a6beb..0000000000
--- a/keyboards/dailycraft/bat43/rev2/info.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "keyboard_name": "bat43",
- "url": "",
- "maintainer": "yfuku",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"label":"k00", "x":0, "y":1.43},
- {"label":"k01", "x":1, "y":1.11},
- {"label":"k02", "x":2, "y":0.38},
- {"label":"k03", "x":3, "y":0},
- {"label":"k04", "x":4, "y":0.05},
- {"label":"k05", "x":5, "y":0.16},
-
- {"label":"k40", "x":9, "y":0.16},
- {"label":"k41", "x":10, "y":0.05},
- {"label":"k42", "x":11, "y":0},
- {"label":"k43", "x":12, "y":0.38},
- {"label":"k44", "x":13, "y":1.11},
- {"label":"k45", "x":14, "y":1.43},
-
- {"label":"k10", "x":0, "y":2.43},
- {"label":"k11", "x":1, "y":2.11},
- {"label":"k12", "x":2, "y":1.38},
- {"label":"k13", "x":3, "y":1},
- {"label":"k14", "x":4, "y":1.05},
- {"label":"k15", "x":5, "y":1.16},
-
- {"label":"k30", "x":7, "y":1.16},
-
- {"label":"k50", "x":9, "y":1.16},
- {"label":"k51", "x":10, "y":1.05},
- {"label":"k52", "x":11, "y":1},
- {"label":"k53", "x":12, "y":1.38},
- {"label":"k54", "x":13, "y":2.11},
- {"label":"k55", "x":14, "y":2.43},
-
- {"label":"k20", "x":0, "y":3.43},
- {"label":"k21", "x":1, "y":3.11},
- {"label":"k22", "x":2, "y":2.38},
- {"label":"k23", "x":3, "y":2},
- {"label":"k24", "x":4, "y":2.05},
- {"label":"k25", "x":5, "y":2.16},
-
- {"label":"k60", "x":9, "y":2.16},
- {"label":"k61", "x":10, "y":2.05},
- {"label":"k62", "x":11, "y":2},
- {"label":"k63", "x":12, "y":2.38},
- {"label":"k64", "x":13, "y":3.11},
- {"label":"k65", "x":14, "y":3.43},
-
- {"label":"k33", "x":4, "y":3.3},
- {"label":"k34", "x":5, "y":3.3},
- {"label":"k35", "x":6, "y":3.3},
-
- {"label":"k70", "x":8, "y":3.3},
- {"label":"k71", "x":9, "y":3.3},
- {"label":"k72", "x":10, "y":3.3},
-
- {"label":"k75", "x":5.1, "y":4.3, "w":0.8, "h":0.8},
- {"label":"k74", "x":6.1, "y":4.3, "w":0.8, "h":0.8},
-
- {"label":"k73", "x":8.1, "y":4.3, "w":0.8, "h":0.8},
- {"label":"k31", "x":9.1, "y":4.3, "w":0.8, "h":0.8},
- {"label":"k32", "x":10.1, "y":4.3, "w":0.8, "h":0.8}
- ]
- }
- }
-}
diff --git a/keyboards/dailycraft/claw44/keymaps/oled/keymap.c b/keyboards/dailycraft/claw44/keymaps/oled/keymap.c
index 1778ac6167..fd2d47b60c 100644
--- a/keyboards/dailycraft/claw44/keymaps/oled/keymap.c
+++ b/keyboards/dailycraft/claw44/keymaps/oled/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, KC_LCBR, KC_LBRC, KC_RBRC, KC_RCBR, _______, _______, _______, _______,
//`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------'
- _______, _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, _______, QK_BOOT
// `--------+--------+--------+--------' `--------+--------+--------+--------'
),
@@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , _______, _______, KC_COMM, KC_DOT , KC_SLSH, _______,
//`--------+--------+--------+--------+--------+--------/ \--------+--------+--------+--------+--------+--------'
- RESET , _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______
// `--------+--------+--------+--------' `--------+--------+--------+--------'
),
[_ADJUST] = LAYOUT(
diff --git a/keyboards/dailycraft/claw44/readme.md b/keyboards/dailycraft/claw44/readme.md
index e533bd7c82..9ff970fd72 100644
--- a/keyboards/dailycraft/claw44/readme.md
+++ b/keyboards/dailycraft/claw44/readme.md
@@ -23,4 +23,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/dailycraft/claw44/rev1/config.h b/keyboards/dailycraft/claw44/rev1/config.h
index bcfcbababa..98a7d40e5d 100644
--- a/keyboards/dailycraft/claw44/rev1/config.h
+++ b/keyboards/dailycraft/claw44/rev1/config.h
@@ -18,19 +18,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5946 // YF
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yfuku
-#define PRODUCT claw44
-
/* key matrix size */
#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
#define DIODE_DIRECTION COL2ROW
#define SOFT_SERIAL_PIN D2
diff --git a/keyboards/dailycraft/claw44/rev1/info.json b/keyboards/dailycraft/claw44/rev1/info.json
index 3301e7d2ec..88a0237032 100644
--- a/keyboards/dailycraft/claw44/rev1/info.json
+++ b/keyboards/dailycraft/claw44/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Claw44 rev1",
+ "keyboard_name": "claw44",
+ "manufacturer": "yfuku",
"url": "",
"maintainer": "yfuku",
+ "usb": {
+ "vid": "0x5946",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dailycraft/owl8/config.h b/keyboards/dailycraft/owl8/config.h
index b0634c2566..4bae3460d0 100644
--- a/keyboards/dailycraft/owl8/config.h
+++ b/keyboards/dailycraft/owl8/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5946 // YF
-#define PRODUCT_ID 0x0008
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yfuku
-#define PRODUCT owl8
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 16
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIRECT_PINS { \
{ F4, F7, B3, B6, F5, F6, B1, B2, D4, C6, D7, E6, NO_PIN, NO_PIN, NO_PIN, NO_PIN } \
}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dailycraft/owl8/info.json b/keyboards/dailycraft/owl8/info.json
index e50484ba90..88b8ee94da 100644
--- a/keyboards/dailycraft/owl8/info.json
+++ b/keyboards/dailycraft/owl8/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "owl8",
+ "manufacturer": "yfuku",
"url": "",
"maintainer": "yfuku",
+ "usb": {
+ "vid": "0x5946",
+ "pid": "0x0008",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dailycraft/owl8/readme.md b/keyboards/dailycraft/owl8/readme.md
index c7fab17476..eccd990c60 100644
--- a/keyboards/dailycraft/owl8/readme.md
+++ b/keyboards/dailycraft/owl8/readme.md
@@ -23,4 +23,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/dailycraft/sandbox/readme.md b/keyboards/dailycraft/sandbox/readme.md
index 790deba95f..b7921566a3 100644
--- a/keyboards/dailycraft/sandbox/readme.md
+++ b/keyboards/dailycraft/sandbox/readme.md
@@ -23,4 +23,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/dailycraft/sandbox/rev1/config.h b/keyboards/dailycraft/sandbox/rev1/config.h
index 2bd405d2aa..8d2007496f 100644
--- a/keyboards/dailycraft/sandbox/rev1/config.h
+++ b/keyboards/dailycraft/sandbox/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5946 // YF
-#define PRODUCT_ID 0x0009
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yfuku
-#define PRODUCT sandbox
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 5
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B5, B4 }
#define MATRIX_COL_PINS { F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dailycraft/sandbox/rev1/info.json b/keyboards/dailycraft/sandbox/rev1/info.json
index 518225a813..c94f88bd30 100644
--- a/keyboards/dailycraft/sandbox/rev1/info.json
+++ b/keyboards/dailycraft/sandbox/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "sandbox rev1",
+ "manufacturer": "yfuku",
"url": "",
"maintainer": "yfuku",
+ "usb": {
+ "vid": "0x5946",
+ "pid": "0x0009",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dailycraft/sandbox/rev2/config.h b/keyboards/dailycraft/sandbox/rev2/config.h
index 06905afe47..11b49e086c 100644
--- a/keyboards/dailycraft/sandbox/rev2/config.h
+++ b/keyboards/dailycraft/sandbox/rev2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5946 // YF
-#define PRODUCT_ID 0x0011
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yfuku
-#define PRODUCT sandbox rev2
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 5
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B5, B4 }
#define MATRIX_COL_PINS { F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dailycraft/sandbox/rev2/info.json b/keyboards/dailycraft/sandbox/rev2/info.json
index e561dfec5c..ce1574a0e1 100644
--- a/keyboards/dailycraft/sandbox/rev2/info.json
+++ b/keyboards/dailycraft/sandbox/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "sandbox rev2",
+ "manufacturer": "yfuku",
"url": "",
"maintainer": "yfuku",
+ "usb": {
+ "vid": "0x5946",
+ "pid": "0x0011",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dailycraft/stickey4/config.h b/keyboards/dailycraft/stickey4/config.h
index d9bd0f3301..ede6d87792 100644
--- a/keyboards/dailycraft/stickey4/config.h
+++ b/keyboards/dailycraft/stickey4/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIRECT_PINS { \
{ D4, C6, D7, E6, NO_PIN, NO_PIN, NO_PIN, NO_PIN } \
}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dailycraft/stickey4/info.json b/keyboards/dailycraft/stickey4/info.json
new file mode 100644
index 0000000000..94f57674b4
--- /dev/null
+++ b/keyboards/dailycraft/stickey4/info.json
@@ -0,0 +1,11 @@
+{
+ "keyboard_name": "stickey4",
+ "manufacturer": "yfuku",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x5946",
+ "pid": "0x0010",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/dailycraft/stickey4/readme.md b/keyboards/dailycraft/stickey4/readme.md
index e365407f82..35938c999f 100644
--- a/keyboards/dailycraft/stickey4/readme.md
+++ b/keyboards/dailycraft/stickey4/readme.md
@@ -23,4 +23,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/dailycraft/wings42/readme.md b/keyboards/dailycraft/wings42/readme.md
index c919653397..fa49ddfb3f 100644
--- a/keyboards/dailycraft/wings42/readme.md
+++ b/keyboards/dailycraft/wings42/readme.md
@@ -23,4 +23,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/dailycraft/wings42/rev1/config.h b/keyboards/dailycraft/wings42/rev1/config.h
index 0d53ff7634..670531ddc5 100644
--- a/keyboards/dailycraft/wings42/rev1/config.h
+++ b/keyboards/dailycraft/wings42/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5946 // YF
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yfuku
-#define PRODUCT wings42
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
#define MATRIX_COL_PINS { B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dailycraft/wings42/rev1/info.json b/keyboards/dailycraft/wings42/rev1/info.json
index 863bb3d34e..72ece409da 100644
--- a/keyboards/dailycraft/wings42/rev1/info.json
+++ b/keyboards/dailycraft/wings42/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "wings42 rev1",
+ "manufacturer": "yfuku",
"url": "",
"maintainer": "yfuku",
+ "usb": {
+ "vid": "0x5946",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x6_3": {
"layout": [
diff --git a/keyboards/dailycraft/wings42/rev1/readme.md b/keyboards/dailycraft/wings42/rev1/readme.md
index 959052c41d..2f3401a16b 100644
--- a/keyboards/dailycraft/wings42/rev1/readme.md
+++ b/keyboards/dailycraft/wings42/rev1/readme.md
@@ -23,4 +23,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/dailycraft/wings42/rev1_extkeys/config.h b/keyboards/dailycraft/wings42/rev1_extkeys/config.h
index b2fe3210b6..841d2e9f5a 100644
--- a/keyboards/dailycraft/wings42/rev1_extkeys/config.h
+++ b/keyboards/dailycraft/wings42/rev1_extkeys/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5946 // YF
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yfuku
-#define PRODUCT wings42 extkeys
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B2, B4 }
#define MATRIX_COL_PINS { B3, B1, F7, F6, F5, F4, B6, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dailycraft/wings42/rev1_extkeys/info.json b/keyboards/dailycraft/wings42/rev1_extkeys/info.json
index b9a793f112..440df65dbf 100644
--- a/keyboards/dailycraft/wings42/rev1_extkeys/info.json
+++ b/keyboards/dailycraft/wings42/rev1_extkeys/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "wings42 rev1_extkeys",
+ "manufacturer": "yfuku",
"url": "",
"maintainer": "yfuku",
+ "usb": {
+ "vid": "0x5946",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dailycraft/wings42/rev1_extkeys/readme.md b/keyboards/dailycraft/wings42/rev1_extkeys/readme.md
index 4a34063ad4..8ca8c140f7 100644
--- a/keyboards/dailycraft/wings42/rev1_extkeys/readme.md
+++ b/keyboards/dailycraft/wings42/rev1_extkeys/readme.md
@@ -23,4 +23,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/dailycraft/wings42/rev2/config.h b/keyboards/dailycraft/wings42/rev2/config.h
index f1e7716bb4..010d8ab896 100644
--- a/keyboards/dailycraft/wings42/rev2/config.h
+++ b/keyboards/dailycraft/wings42/rev2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/dailycraft/wings42/rev2/info.json b/keyboards/dailycraft/wings42/rev2/info.json
index 4e78697627..67a642b425 100644
--- a/keyboards/dailycraft/wings42/rev2/info.json
+++ b/keyboards/dailycraft/wings42/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "wings42 rev2",
+ "manufacturer": "yfuku",
"url": "",
"maintainer": "yfuku",
+ "usb": {
+ "vid": "0x5946",
+ "pid": "0x0005",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x6_3_2": {
"layout": [
diff --git a/keyboards/dailycraft/wings42/rev2/readme.md b/keyboards/dailycraft/wings42/rev2/readme.md
index c919653397..fa49ddfb3f 100644
--- a/keyboards/dailycraft/wings42/rev2/readme.md
+++ b/keyboards/dailycraft/wings42/rev2/readme.md
@@ -23,4 +23,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/daji/seis_cinco/config.h b/keyboards/daji/seis_cinco/config.h
index 1ca045a4a5..a4824a6e73 100644
--- a/keyboards/daji/seis_cinco/config.h
+++ b/keyboards/daji/seis_cinco/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBF00
-#define PRODUCT_ID 0xBF22
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Daji
-#define PRODUCT Seis Cinco
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -35,7 +28,6 @@
*/
#define MATRIX_ROW_PINS { B2, B10, B11, A9, A6 }
#define MATRIX_COL_PINS { B1, B0, A7, B14, A8, B15, A0, C15, C14, C13, B5, B4, B3, A15, A10, A14 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/daji/seis_cinco/info.json b/keyboards/daji/seis_cinco/info.json
index 7c213d216c..c155d3e238 100644
--- a/keyboards/daji/seis_cinco/info.json
+++ b/keyboards/daji/seis_cinco/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Seis Cinco",
+ "manufacturer": "Daji",
"url": "",
"maintainer": "toraifu",
+ "usb": {
+ "vid": "0xBF00",
+ "pid": "0xBF22",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/daji/seis_cinco/keymaps/split_backspace/keymap.c b/keyboards/daji/seis_cinco/keymaps/split_backspace/keymap.c
index 82e2a166e6..0182874e23 100644
--- a/keyboards/daji/seis_cinco/keymaps/split_backspace/keymap.c
+++ b/keyboards/daji/seis_cinco/keymaps/split_backspace/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, 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,
+ QK_BOOT, KC_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,
diff --git a/keyboards/db/db63/config.h b/keyboards/db/db63/config.h
index 85625b7200..2ee4fe23c1 100644
--- a/keyboards/db/db63/config.h
+++ b/keyboards/db/db63/config.h
@@ -17,18 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define VENDOR_ID 0xFAAD
-#define PRODUCT_ID 0x422D
-#define DEVICE_VER 0x0200
-#define MANUFACTURER HNB
-#define PRODUCT DB63v1 Hotswap
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/db/db63/info.json b/keyboards/db/db63/info.json
index e588de4879..99d71762fa 100644
--- a/keyboards/db/db63/info.json
+++ b/keyboards/db/db63/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "db63",
+ "keyboard_name": "DB63v1 Hotswap",
+ "manufacturer": "HNB",
"url": "http://www.keyboard-layout-editor.com/#/gists/dadea703fc8bfc87dc7c480de9f3ef38",
"maintainer": "QMK Community",
+ "usb": {
+ "vid": "0xFAAD",
+ "pid": "0x422D",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dc01/arrow/config.h b/keyboards/dc01/arrow/config.h
index e240d71e8e..1318ec77d7 100644
--- a/keyboards/dc01/arrow/config.h
+++ b/keyboards/dc01/arrow/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x1012
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mechboards
-#define PRODUCT DC01 Arrow
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 3
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, C7, C6, B6, B4 }
#define MATRIX_COL_PINS { F0, B7, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dc01/arrow/info.json b/keyboards/dc01/arrow/info.json
index fccf577941..007e83d5cf 100644
--- a/keyboards/dc01/arrow/info.json
+++ b/keyboards/dc01/arrow/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "DC01 Arrow Cluster",
+ "keyboard_name": "DC01 Arrow",
+ "manufacturer": "Mechboards",
"url": "",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x1012",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"Insert", "x":0, "y":0}, {"label":"Home", "x":1, "y":0}, {"label":"PgUp", "x":2, "y":0}, {"label":"Delete", "x":0, "y":1}, {"label":"End", "x":1, "y":1}, {"label":"PgDn", "x":2, "y":1}, {"label":"\u2191", "x":1, "y":3}, {"label":"\u2190", "x":0, "y":4}, {"label":"\u2193", "x":1, "y":4}, {"label":"\u2192", "x":2, "y":4}]
diff --git a/keyboards/dc01/left/config.h b/keyboards/dc01/left/config.h
index d5b2962590..ebcf4a0182 100644
--- a/keyboards/dc01/left/config.h
+++ b/keyboards/dc01/left/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x1010
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mechboards
-#define PRODUCT DC01 Left
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 21
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, B5, B4, D7, D6 }
#define MATRIX_COL_PINS { F4, F1, F0, F7, F6, F5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-#define UNUSED_PINS
#define F_SCL 350000UL
diff --git a/keyboards/dc01/left/i2c.c b/keyboards/dc01/left/i2c.c
deleted file mode 100644
index c72789403e..0000000000
--- a/keyboards/dc01/left/i2c.c
+++ /dev/null
@@ -1,159 +0,0 @@
-#include <util/twi.h>
-#include <avr/io.h>
-#include <stdlib.h>
-#include <avr/interrupt.h>
-#include <util/twi.h>
-#include <stdbool.h>
-#include "i2c.h"
-
-// Limits the amount of we wait for any one i2c transaction.
-// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is
-// 9 bits, a single transaction will take around 90μs to complete.
-//
-// (F_CPU/SCL_CLOCK) => # of μC cycles to transfer a bit
-// poll loop takes at least 8 clock cycles to execute
-#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8
-
-#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE)
-
-volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-static volatile uint8_t slave_buffer_pos;
-static volatile bool slave_has_register_set = false;
-
-// Wait for an i2c operation to finish
-inline static
-void i2c_delay(void) {
- uint16_t lim = 0;
- while(!(TWCR & (1<<TWINT)) && lim < I2C_LOOP_TIMEOUT)
- lim++;
-
- // easier way, but will wait slightly longer
- // _delay_us(100);
-}
-
-// Setup twi to run at 100kHz
-void i2c_master_init(void) {
- // no prescaler
- TWSR = 0;
- // Set TWI clock frequency to SCL_CLOCK. Need TWBR>10.
- // Check datasheets for more info.
- TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
-}
-
-// Start a transaction with the given i2c slave address. The direction of the
-// transfer is set with I2C_READ and I2C_WRITE.
-// returns: 0 => success
-// 1 => error
-uint8_t i2c_master_start(uint8_t address) {
- TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTA);
-
- i2c_delay();
-
- // check that we started successfully
- if ( (TW_STATUS != TW_START) && (TW_STATUS != TW_REP_START))
- return 1;
-
- TWDR = address;
- TWCR = (1<<TWINT) | (1<<TWEN);
-
- i2c_delay();
-
- if ( (TW_STATUS != TW_MT_SLA_ACK) && (TW_STATUS != TW_MR_SLA_ACK) )
- return 1; // slave did not acknowledge
- else
- return 0; // success
-}
-
-
-// Finish the i2c transaction.
-void i2c_master_stop(void) {
- TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
-
- uint16_t lim = 0;
- while(!(TWCR & (1<<TWSTO)) && lim < I2C_LOOP_TIMEOUT)
- lim++;
-}
-
-// Write one byte to the i2c slave.
-// returns 0 => slave ACK
-// 1 => slave NACK
-uint8_t i2c_master_write(uint8_t data) {
- TWDR = data;
- TWCR = (1<<TWINT) | (1<<TWEN);
-
- i2c_delay();
-
- // check if the slave acknowledged us
- return (TW_STATUS == TW_MT_DATA_ACK) ? 0 : 1;
-}
-
-// Read one byte from the i2c slave. If ack=1 the slave is acknowledged,
-// if ack=0 the acknowledge bit is not set.
-// returns: byte read from i2c device
-uint8_t i2c_master_read(int ack) {
- TWCR = (1<<TWINT) | (1<<TWEN) | (ack<<TWEA);
-
- i2c_delay();
- return TWDR;
-}
-
-void i2c_reset_state(void) {
- TWCR = 0;
-}
-
-void i2c_slave_init(uint8_t address) {
- TWAR = address << 0; // slave i2c address
- // TWEN - twi enable
- // TWEA - enable address acknowledgement
- // TWINT - twi interrupt flag
- // TWIE - enable the twi interrupt
- TWCR = (1<<TWIE) | (1<<TWEA) | (1<<TWINT) | (1<<TWEN);
-}
-
-ISR(TWI_vect);
-
-ISR(TWI_vect) {
- uint8_t ack = 1;
- switch(TW_STATUS) {
- case TW_SR_SLA_ACK:
- // this device has been addressed as a slave receiver
- slave_has_register_set = false;
- break;
-
- case TW_SR_DATA_ACK:
- // this device has received data as a slave receiver
- // The first byte that we receive in this transaction sets the location
- // of the read/write location of the slaves memory that it exposes over
- // i2c. After that, bytes will be written at slave_buffer_pos, incrementing
- // slave_buffer_pos after each write.
- if(!slave_has_register_set) {
- slave_buffer_pos = TWDR;
- // don't acknowledge the master if this memory loctaion is out of bounds
- if ( slave_buffer_pos >= SLAVE_BUFFER_SIZE ) {
- ack = 0;
- slave_buffer_pos = 0;
- }
- slave_has_register_set = true;
- } else {
- i2c_slave_buffer[slave_buffer_pos] = TWDR;
- BUFFER_POS_INC();
- }
- break;
-
- case TW_ST_SLA_ACK:
- case TW_ST_DATA_ACK:
- // master has addressed this device as a slave transmitter and is
- // requesting data.
- TWDR = i2c_slave_buffer[slave_buffer_pos];
- BUFFER_POS_INC();
- break;
-
- case TW_BUS_ERROR: // something went wrong, reset twi state
- TWCR = 0;
- default:
- break;
- }
- // Reset everything, so we are ready for the next TWI interrupt
- TWCR |= (1<<TWIE) | (1<<TWINT) | (ack<<TWEA) | (1<<TWEN);
-}
diff --git a/keyboards/dc01/left/i2c.h b/keyboards/dc01/left/i2c.h
deleted file mode 100644
index 0d93e4ecaa..0000000000
--- a/keyboards/dc01/left/i2c.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#pragma once
-
-#include <stdint.h>
-
-#ifndef F_CPU
-#define F_CPU 16000000UL
-#endif
-
-#define I2C_READ 1
-#define I2C_WRITE 0
-
-#define I2C_ACK 1
-#define I2C_NACK 0
-
-#define SLAVE_BUFFER_SIZE 0x10
-
-// i2c SCL clock frequency
-#define SCL_CLOCK 400000L
-
-extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-void i2c_master_init(void);
-uint8_t i2c_master_start(uint8_t address);
-void i2c_master_stop(void);
-uint8_t i2c_master_write(uint8_t data);
-uint8_t i2c_master_read(int);
-void i2c_reset_state(void);
-void i2c_slave_init(uint8_t address);
diff --git a/keyboards/dc01/left/info.json b/keyboards/dc01/left/info.json
index c2bc9337c5..f16677a44f 100644
--- a/keyboards/dc01/left/info.json
+++ b/keyboards/dc01/left/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "DC01 Left Half",
+ "keyboard_name": "DC01 Left",
+ "manufacturer": "Mechboards",
"url": "",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x1010",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"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":"Back", "x":13, "y":0}, {"label":"Del", "x":14, "y":0}, {"label":"Insert", "x":15.25, "y":0}, {"label":"Home", "x":16.25, "y":0}, {"label":"PgUp", "x":17.25, "y":0}, {"label":"Num Lock", "x":18.5, "y":0}, {"label":"/", "x":19.5, "y":0}, {"label":"*", "x":20.5, "y":0}, {"label":"-", "x":21.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":"End", "x":16.25, "y":1}, {"label":"PgDn", "x":17.25, "y":1}, {"label":"7", "x":18.5, "y":1}, {"label":"8", "x":19.5, "y":1}, {"label":"9", "x":20.5, "y":1}, {"label":"+", "x":21.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":18.5, "y":2}, {"label":"5", "x":19.5, "y":2}, {"label":"6", "x":20.5, "y":2}, {"label":"+", "x":21.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":"Shift", "x":14, "y":3}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"1", "x":18.5, "y":3}, {"label":"2", "x":19.5, "y":3}, {"label":"3", "x":20.5, "y":3}, {"label":"Enter", "x":21.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":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":2.75}, {"label":"Fn", "x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.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":"Ctrl", "x":13.75, "y":4, "w":1.25}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}, {"label":"0", "x":18.5, "y":4}, {"label":"00", "x":19.5, "y":4}, {"label":".", "x":20.5, "y":4}, {"label":"Enter", "x":21.5, "y":4}]
diff --git a/keyboards/dc01/numpad/config.h b/keyboards/dc01/numpad/config.h
index 87c73ebc21..d3133b3732 100644
--- a/keyboards/dc01/numpad/config.h
+++ b/keyboards/dc01/numpad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x1013
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mechboards
-#define PRODUCT DC01 Numpad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, E6, D6, D7, B4 }
#define MATRIX_COL_PINS { F0, B7, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dc01/numpad/info.json b/keyboards/dc01/numpad/info.json
index 6a151aa93b..02158add29 100644
--- a/keyboards/dc01/numpad/info.json
+++ b/keyboards/dc01/numpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "DC01 Numpad",
+ "manufacturer": "Mechboards",
"url": "",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x1013",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/dc01/right/config.h b/keyboards/dc01/right/config.h
index 60672e252d..4fc84508e0 100644
--- a/keyboards/dc01/right/config.h
+++ b/keyboards/dc01/right/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x1011
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mechboards
-#define PRODUCT DC01 Right
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C7, C6, B6, B5, B4 }
#define MATRIX_COL_PINS { F1, E6, F6, F5, F4, D4, D6, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dc01/right/info.json b/keyboards/dc01/right/info.json
index 1eb6f17928..059eddad20 100644
--- a/keyboards/dc01/right/info.json
+++ b/keyboards/dc01/right/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "DC01 Right Half",
+ "keyboard_name": "DC01 Right",
+ "manufacturer": "Mechboards",
"url": "",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x1011",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"&", "x":0.5, "y":0}, {"label":"*", "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":"Back", "x":6.5, "y":0}, {"label":"Del", "x":7.5, "y":0}, {"label":"Y", "x":0, "y":1}, {"label":"U", "x":1, "y":1}, {"label":"I", "x":2, "y":1}, {"label":"O", "x":3, "y":1}, {"label":"P", "x":4, "y":1}, {"label":"{", "x":5, "y":1}, {"label":"}", "x":6, "y":1}, {"label":"|", "x":7, "y":1, "w":1.5}, {"label":"H", "x":0.25, "y":2}, {"label":"J", "x":1.25, "y":2}, {"label":"K", "x":2.25, "y":2}, {"label":"L", "x":3.25, "y":2}, {"label":":", "x":4.25, "y":2}, {"label":"@", "x":5.25, "y":2}, {"label":"~", "x":6.25, "y":2}, {"label":"Enter", "x":7.25, "y":2, "w":1.25}, {"label":"N", "x":0.75, "y":3}, {"label":"M", "x":1.75, "y":3}, {"label":"<", "x":2.75, "y":3}, {"label":">", "x":3.75, "y":3}, {"label":"?", "x":4.75, "y":3}, {"label":"Shift", "x":5.75, "y":3, "w":1.75}, {"label":"Shift", "x":7.5, "y":3}, {"label":"Fn", "x":0, "y":4, "w":1.25}, {"x":1.25, "y":4, "w":2.25}, {"label":"AltGr", "x":3.5, "y":4, "w":1.25}, {"label":"Win", "x":4.75, "y":4, "w":1.25}, {"label":"Menu", "x":6, "y":4, "w":1.25}, {"label":"Ctrl", "x":7.25, "y":4, "w":1.25}]
diff --git a/keyboards/dekunukem/duckypad/config.h b/keyboards/dekunukem/duckypad/config.h
index 06f2ae807d..ca339f6e1b 100644
--- a/keyboards/dekunukem/duckypad/config.h
+++ b/keyboards/dekunukem/duckypad/config.h
@@ -22,12 +22,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x444E // "DN"
-#define PRODUCT_ID 0x4450 // "DP"
-#define DEVICE_VER 0x0001 // 1.0
-#define MANUFACTURER dekuNukem
-#define PRODUCT duckyPad
-
#define MATRIX_ROWS 1
#define MATRIX_COLS 17
diff --git a/keyboards/dekunukem/duckypad/info.json b/keyboards/dekunukem/duckypad/info.json
index e9e6e250c5..aaf68af2b2 100644
--- a/keyboards/dekunukem/duckypad/info.json
+++ b/keyboards/dekunukem/duckypad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "duckyPad",
+ "manufacturer": "dekuNukem",
"url": "https://github.com/dekuNukem/",
"maintainer": "M4cs",
+ "usb": {
+ "vid": "0x444E",
+ "pid": "0x4450",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/delikeeb/flatbread60/config.h b/keyboards/delikeeb/flatbread60/config.h
index 3de88a16f6..772ed61faf 100644
--- a/keyboards/delikeeb/flatbread60/config.h
+++ b/keyboards/delikeeb/flatbread60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x9906
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER delikeeb
-#define PRODUCT Flatbread60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F6, B1, B3, B2, B6 }
#define MATRIX_COL_PINS { F4, F5, B5, B4, E6, D7, C6, D4, D0, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/delikeeb/flatbread60/info.json b/keyboards/delikeeb/flatbread60/info.json
index 6de1a7e827..0bb06feb9c 100644
--- a/keyboards/delikeeb/flatbread60/info.json
+++ b/keyboards/delikeeb/flatbread60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "flatbread60",
+ "keyboard_name": "Flatbread60",
+ "manufacturer": "delikeeb",
"url": "",
"maintainer": "noclew",
+ "usb": {
+ "vid": "0x9906",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x12": {
"layout": [
diff --git a/keyboards/delikeeb/vaguettelite/config.h b/keyboards/delikeeb/vaguettelite/config.h
index 5ad1942437..ba956b1798 100644
--- a/keyboards/delikeeb/vaguettelite/config.h
+++ b/keyboards/delikeeb/vaguettelite/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x9906
-#define PRODUCT_ID 0x0011
-#define DEVICE_VER 0x0003
-#define MANUFACTURER dELIKEEb
-#define PRODUCT Vaguette Lite
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, B3, D1, D2, D3, F5 }
#define MATRIX_COL_PINS { F6, F7, B1, B2, B6, B5, B4, E6, D7, C6, D0, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/delikeeb/vaguettelite/info.json b/keyboards/delikeeb/vaguettelite/info.json
index f3e99b374c..7aa5dee3f2 100644
--- a/keyboards/delikeeb/vaguettelite/info.json
+++ b/keyboards/delikeeb/vaguettelite/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "vaguettelite",
+ "keyboard_name": "Vaguette Lite",
+ "manufacturer": "dELIKEEb",
"url": "",
"maintainer": "noclew",
+ "usb": {
+ "vid": "0x9906",
+ "pid": "0x0011",
+ "device_version": "0.0.3"
+ },
"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, "w":1.5}, {"x":13, "y":1}, {"x":14, "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, "w":1.25}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":0, "y":3}, {"x":1, "y":3, "w":1.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}, {"x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4}, {"x":4.5, "y":4, "w":1.25}, {"x":5.75, "y":4, "w":2}, {"x":7.75, "y":4, "w":1.25}, {"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/delikeeb/vaguettelite/keymaps/noclew/keymap.c b/keyboards/delikeeb/vaguettelite/keymaps/noclew/keymap.c
index 58bc0c7783..c8d1aa0846 100644
--- a/keyboards/delikeeb/vaguettelite/keymaps/noclew/keymap.c
+++ b/keyboards/delikeeb/vaguettelite/keymaps/noclew/keymap.c
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT_all(
- RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DEBUG,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DEBUG,
_______, RGB_TOG, RGB_RMOD, RGB_MOD, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______,
KC_CAPS, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, TG(_GAME), _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, TG(_MAC), _______, _______, _______, _______, _______,
diff --git a/keyboards/delikeeb/vanana/config.h b/keyboards/delikeeb/vanana/config.h
index 3a5a888945..7879dc1b1a 100644
--- a/keyboards/delikeeb/vanana/config.h
+++ b/keyboards/delikeeb/vanana/config.h
@@ -18,7 +18,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "config_common.h"
-
-#define VENDOR_ID 0x9906
-#define PRODUCT_ID 0x0013
-#define MANUFACTURER dELIKEEb
diff --git a/keyboards/delikeeb/vanana/info.json b/keyboards/delikeeb/vanana/info.json
index 78c11fbee2..b8a5f78cf8 100644
--- a/keyboards/delikeeb/vanana/info.json
+++ b/keyboards/delikeeb/vanana/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "vanana",
+ "manufacturer": "dELIKEEb",
"url": "",
"maintainer": "noclew",
+ "usb": {
+ "vid": "0x9906",
+ "pid": "0x0013"
+ },
"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":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":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":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":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4, "w":1.25}, {"x":5.25, "y":4, "w":1.5}, {"x":8.25, "y":4, "w":1.5}, {"x":9.75, "y":4, "w":1.25}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}]
diff --git a/keyboards/delikeeb/vanana/rev1/config.h b/keyboards/delikeeb/vanana/rev1/config.h
index 8213404eb3..8ddb222440 100644
--- a/keyboards/delikeeb/vanana/rev1/config.h
+++ b/keyboards/delikeeb/vanana/rev1/config.h
@@ -17,10 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0001
-#define PRODUCT Vanana rev1
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -37,7 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D2, D7, B4, B5, B6 }
#define MATRIX_COL_PINS { B2, B3, B1, F7, F5, F6, D3, D1, D0, D4, C6, E6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/delikeeb/vanana/rev1/info.json b/keyboards/delikeeb/vanana/rev1/info.json
new file mode 100644
index 0000000000..992960c5a2
--- /dev/null
+++ b/keyboards/delikeeb/vanana/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Vanana rev1",
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/delikeeb/vanana/rev2/config.h b/keyboards/delikeeb/vanana/rev2/config.h
index 8397424aa9..d6d04d47d1 100644
--- a/keyboards/delikeeb/vanana/rev2/config.h
+++ b/keyboards/delikeeb/vanana/rev2/config.h
@@ -17,10 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0002
-#define PRODUCT Vanana rev2
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 10
@@ -37,7 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D1, C6, E6, B4, B5, F5}
#define MATRIX_COL_PINS { B3, B1, F7, F6, F4, D2, D3, D0, D4, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/delikeeb/vanana/rev2/info.json b/keyboards/delikeeb/vanana/rev2/info.json
new file mode 100644
index 0000000000..c7206e9d97
--- /dev/null
+++ b/keyboards/delikeeb/vanana/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Vanana rev2",
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/delikeeb/vaneela/config.h b/keyboards/delikeeb/vaneela/config.h
index 936c8eb5ec..43d8a9041b 100644
--- a/keyboards/delikeeb/vaneela/config.h
+++ b/keyboards/delikeeb/vaneela/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x9906
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER noclew
-#define PRODUCT Vaneela
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F6, F7, B3, B2, B6 }
#define MATRIX_COL_PINS { F4, F5, B5, B4, E6, D7, C6, D4, D0, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/delikeeb/vaneela/info.json b/keyboards/delikeeb/vaneela/info.json
index 20f0fa9f49..8f114b1778 100644
--- a/keyboards/delikeeb/vaneela/info.json
+++ b/keyboards/delikeeb/vaneela/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Vaneela",
+ "manufacturer": "noclew",
"url": "http://www.keyboard-layout-editor.com/#/gists/be89ff3a761a44280296994d459bd0a9",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x9906",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/delikeeb/vaneela/keymaps/default/keymap.c b/keyboards/delikeeb/vaneela/keymaps/default/keymap.c
index b1d7401b9d..57df91cd4d 100644
--- a/keyboards/delikeeb/vaneela/keymaps/default/keymap.c
+++ b/keyboards/delikeeb/vaneela/keymaps/default/keymap.c
@@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FN] = LAYOUT_ortho_5x12(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______,TERM_ON, TERM_OFF, KC_DEL,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______,_______, _______, KC_DEL,
_______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/delikeeb/vaneela/keymaps/via/keymap.c b/keyboards/delikeeb/vaneela/keymaps/via/keymap.c
index 65194b84d3..4bfee3daf5 100644
--- a/keyboards/delikeeb/vaneela/keymaps/via/keymap.c
+++ b/keyboards/delikeeb/vaneela/keymaps/via/keymap.c
@@ -105,7 +105,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FN] = LAYOUT_ortho_5x12(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______,TERM_ON, TERM_OFF, KC_DEL,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/delikeeb/vaneelaex/config.h b/keyboards/delikeeb/vaneelaex/config.h
index 27d2420176..006c55020f 100644
--- a/keyboards/delikeeb/vaneelaex/config.h
+++ b/keyboards/delikeeb/vaneelaex/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x9906
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER delikeeb
-#define PRODUCT VaneelaEx
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, D2, D1, D0, B2, B6 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B5, B4, E6, D7, C6, D4 }
-//#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/delikeeb/vaneelaex/info.json b/keyboards/delikeeb/vaneelaex/info.json
index 8ecd733aa2..d7f1e75673 100644
--- a/keyboards/delikeeb/vaneelaex/info.json
+++ b/keyboards/delikeeb/vaneelaex/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "VaneelaEx",
+ "manufacturer": "delikeeb",
"url": "http://www.keyboard-layout-editor.com/#/gists/f605c1a2cb2fea256161964740bd2a52",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x9906",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ss_6x12": {
"layout": [
diff --git a/keyboards/delikeeb/waaffle/config.h b/keyboards/delikeeb/waaffle/config.h
index 1b02e32c6d..7879dc1b1a 100644
--- a/keyboards/delikeeb/waaffle/config.h
+++ b/keyboards/delikeeb/waaffle/config.h
@@ -18,7 +18,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "config_common.h"
-
-#define VENDOR_ID 0x9906
-#define PRODUCT_ID 0x0012
-#define MANUFACTURER dELIKEEb
diff --git a/keyboards/delikeeb/waaffle/rev3/config.h b/keyboards/delikeeb/waaffle/rev3/config.h
index 12ff241f4c..d9ffc232dd 100644
--- a/keyboards/delikeeb/waaffle/rev3/config.h
+++ b/keyboards/delikeeb/waaffle/rev3/config.h
@@ -17,10 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0003
-#define PRODUCT Waaffle_rev3
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 10
@@ -37,7 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, B6, B2, B3, B1, F5, F6, F7 }
#define MATRIX_COL_PINS { D3, D2, B5, B4, E6, D7, C6, D4, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/delikeeb/waaffle/rev3/info.json b/keyboards/delikeeb/waaffle/rev3/info.json
index f855f89732..709ceb1844 100644
--- a/keyboards/delikeeb/waaffle/rev3/info.json
+++ b/keyboards/delikeeb/waaffle/rev3/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "waaffle",
+ "keyboard_name": "Waaffle rev3",
+ "manufacturer": "dELIKEEb",
"url": "",
"maintainer": "noclew",
+ "usb": {
+ "vid": "0x9906",
+ "pid": "0x0012",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_ortho_5x16": {
"layout":
diff --git a/keyboards/deltapad/config.h b/keyboards/deltapad/config.h
index 186a11ee27..dffb30cf71 100644
--- a/keyboards/deltapad/config.h
+++ b/keyboards/deltapad/config.h
@@ -19,13 +19,6 @@ 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 0x0123
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Richard Snijder
-#define PRODUCT deltapad
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/deltapad/info.json b/keyboards/deltapad/info.json
index 94fca5a9b4..abd6df5558 100644
--- a/keyboards/deltapad/info.json
+++ b/keyboards/deltapad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "deltapad",
+ "manufacturer": "Richard Snijder",
"url": "",
"maintainer": "Richard Snijder",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0123",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/deltasplit75/info.json b/keyboards/deltasplit75/info.json
deleted file mode 100644
index da5e226cb2..0000000000
--- a/keyboards/deltasplit75/info.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "keyboard_name": "DeltaSplit75",
- "maintainer": "xyxjj & itsaferbie",
- "layouts": {
- "LAYOUT_v2": {
- "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":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"Print", "x":14, "y":0}, {"label":"Scroll", "x":15, "y":0}, {"label":"Pause", "x":16, "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":8, "y":1}, {"label":"*", "x":9, "y":1}, {"label":"(", "x":10, "y":1}, {"label":")", "x":11, "y":1}, {"label":"_", "x":12, "y":1}, {"label":"+", "x":13, "y":1}, {"label":"Back", "x":14, "y":1}, {"label":"Trns", "x":15, "y":1}, {"label":"Home", "x":16, "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":7.5, "y":2}, {"label":"U", "x":8.5, "y":2}, {"label":"I", "x":9.5, "y":2}, {"label":"O", "x":10.5, "y":2}, {"label":"P", "x":11.5, "y":2}, {"label":"{", "x":12.5, "y":2}, {"label":"}", "x":13.5, "y":2}, {"label":"Back", "x":14.5, "y":2, "w":1.5}, {"label":"PgUp", "x":16, "y":2}, {"label":"Ctrl", "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":7.75, "y":3}, {"label":"J", "x":8.75, "y":3}, {"label":"K", "x":9.75, "y":3}, {"label":"L", "x":10.75, "y":3}, {"label":":", "x":11.75, "y":3}, {"label":"\"", "x":12.75, "y":3}, {"label":"Trns", "x":13.75, "y":3}, {"label":"Enter", "x":14.75, "y":3, "w":1.25}, {"label":"PgDn", "x":16, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"label":"Trns", "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":"B", "x":7.25, "y":4}, {"label":"N", "x":8.25, "y":4}, {"label":"M", "x":9.25, "y":4}, {"label":"<", "x":10.25, "y":4}, {"label":">", "x":11.25, "y":4}, {"label":"?", "x":12.25, "y":4}, {"label":"Shift", "x":13.25, "y":4, "w":1.75}, {"label":"Up", "x":15, "y":4}, {"label":"End", "x":16, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "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":2}, {"label":"Fn", "x":5.75, "y":5}, {"label":"Space", "x":7.75, "y":5, "w":2.75}, {"label":"Alt", "x":10.5, "y":5, "w":1.25}, {"label":"Win", "x":11.75, "y":5}, {"label":"Ctrl", "x":12.75, "y":5, "w":1.25}, {"label":"Left", "x":14, "y":5}, {"label":"Down", "x":15, "y":5}, {"label":"Right", "x":16, "y":5}]
- },
- "LAYOUT_protosplit": {
- "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":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"Insert", "x":14, "y":0}, {"label":"Home", "x":15, "y":0}, {"label":"PgUp", "x":16, "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":8, "y":1}, {"label":"*", "x":9, "y":1}, {"label":"(", "x":10, "y":1}, {"label":")", "x":11, "y":1}, {"label":"_", "x":12, "y":1}, {"label":"+", "x":13, "y":1}, {"label":"Delete", "x":14, "y":1}, {"label":"End", "x":15, "y":1}, {"label":"PgDn", "x":16, "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":7.5, "y":2}, {"label":"U", "x":8.5, "y":2}, {"label":"I", "x":9.5, "y":2}, {"label":"O", "x":10.5, "y":2}, {"label":"P", "x":11.5, "y":2}, {"label":"{", "x":12.5, "y":2}, {"label":"}", "x":13.5, "y":2}, {"label":"Back", "x":14.5, "y":2, "w":1.5}, {"label":"Scroll", "x":16, "y":2}, {"label":"Ctrl", "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":7.75, "y":3}, {"label":"J", "x":8.75, "y":3}, {"label":"K", "x":9.75, "y":3}, {"label":"L", "x":10.75, "y":3}, {"label":":", "x":11.75, "y":3}, {"label":"\"", "x":12.75, "y":3}, {"label":"Enter", "x":13.75, "y":3, "w":2.25}, {"label":"Pause", "x":16, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"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":"B", "x":7.25, "y":4}, {"label":"N", "x":8.25, "y":4}, {"label":"M", "x":9.25, "y":4}, {"label":"<", "x":10.25, "y":4}, {"label":">", "x":11.25, "y":4}, {"label":"?", "x":12.25, "y":4}, {"label":"Shift", "x":13.25, "y":4, "w":1.75}, {"label":"Up", "x":15, "y":4}, {"label":"Print", "x":16, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "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":2}, {"label":"Fn", "x":5.75, "y":5}, {"label":"Space", "x":7.75, "y":5, "w":2.75}, {"label":"Alt", "x":10.5, "y":5, "w":1.25}, {"label":"Win", "x":11.75, "y":5}, {"label":"Ctrl", "x":12.75, "y":5, "w":1.25}, {"label":"Left", "x":14, "y":5}, {"label":"Down", "x":15, "y":5}, {"label":"Right", "x":16, "y":5}]
- }
- }
-}
diff --git a/keyboards/deltasplit75/keymaps/itsaferbie/keymap.c b/keyboards/deltasplit75/keymaps/itsaferbie/keymap.c
index 8eadc7aee1..a0c8f04266 100644
--- a/keyboards/deltasplit75/keymaps/itsaferbie/keymap.c
+++ b/keyboards/deltasplit75/keymaps/itsaferbie/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
LAYOUT_v2(
- RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
diff --git a/keyboards/deltasplit75/keymaps/mbsurfer/keymap.c b/keyboards/deltasplit75/keymaps/mbsurfer/keymap.c
index cba17015de..0db3f6bb23 100644
--- a/keyboards/deltasplit75/keymaps/mbsurfer/keymap.c
+++ b/keyboards/deltasplit75/keymaps/mbsurfer/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------- ----------------------------------------'
*/
LAYOUT_v2(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
KC_BSLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_CAPSLOCK, KC_VOLU, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______,
M(1), KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RIGHT, _______, _______, _______,
diff --git a/keyboards/deltasplit75/keymaps/protosplit/keymap.c b/keyboards/deltasplit75/keymaps/protosplit/keymap.c
index 7d6cb33949..31b764393e 100644
--- a/keyboards/deltasplit75/keymaps/protosplit/keymap.c
+++ b/keyboards/deltasplit75/keymaps/protosplit/keymap.c
@@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
LAYOUT_protosplit(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
KC_BSLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_VOLU, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
M(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_PAUS, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/deltasplit75/v2/config.h b/keyboards/deltasplit75/v2/config.h
index ffc2724e5e..64b86371fc 100644
--- a/keyboards/deltasplit75/v2/config.h
+++ b/keyboards/deltasplit75/v2/config.h
@@ -19,13 +19,6 @@ 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 0x3060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER xyxjj
-#define PRODUCT DeltaSplit75
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 14
diff --git a/keyboards/deltasplit75/v2/info.json b/keyboards/deltasplit75/v2/info.json
new file mode 100644
index 0000000000..f6326d96ca
--- /dev/null
+++ b/keyboards/deltasplit75/v2/info.json
@@ -0,0 +1,18 @@
+{
+ "keyboard_name": "DeltaSplit75",
+ "manufacturer": "xyxjj",
+ "maintainer": "xyxjj & itsaferbie",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_v2": {
+ "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":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"Print", "x":14, "y":0}, {"label":"Scroll", "x":15, "y":0}, {"label":"Pause", "x":16, "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":8, "y":1}, {"label":"*", "x":9, "y":1}, {"label":"(", "x":10, "y":1}, {"label":")", "x":11, "y":1}, {"label":"_", "x":12, "y":1}, {"label":"+", "x":13, "y":1}, {"label":"Back", "x":14, "y":1}, {"label":"Trns", "x":15, "y":1}, {"label":"Home", "x":16, "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":7.5, "y":2}, {"label":"U", "x":8.5, "y":2}, {"label":"I", "x":9.5, "y":2}, {"label":"O", "x":10.5, "y":2}, {"label":"P", "x":11.5, "y":2}, {"label":"{", "x":12.5, "y":2}, {"label":"}", "x":13.5, "y":2}, {"label":"Back", "x":14.5, "y":2, "w":1.5}, {"label":"PgUp", "x":16, "y":2}, {"label":"Ctrl", "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":7.75, "y":3}, {"label":"J", "x":8.75, "y":3}, {"label":"K", "x":9.75, "y":3}, {"label":"L", "x":10.75, "y":3}, {"label":":", "x":11.75, "y":3}, {"label":"\"", "x":12.75, "y":3}, {"label":"Trns", "x":13.75, "y":3}, {"label":"Enter", "x":14.75, "y":3, "w":1.25}, {"label":"PgDn", "x":16, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"label":"Trns", "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":"B", "x":7.25, "y":4}, {"label":"N", "x":8.25, "y":4}, {"label":"M", "x":9.25, "y":4}, {"label":"<", "x":10.25, "y":4}, {"label":">", "x":11.25, "y":4}, {"label":"?", "x":12.25, "y":4}, {"label":"Shift", "x":13.25, "y":4, "w":1.75}, {"label":"Up", "x":15, "y":4}, {"label":"End", "x":16, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "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":2}, {"label":"Fn", "x":5.75, "y":5}, {"label":"Space", "x":7.75, "y":5, "w":2.75}, {"label":"Alt", "x":10.5, "y":5, "w":1.25}, {"label":"Win", "x":11.75, "y":5}, {"label":"Ctrl", "x":12.75, "y":5, "w":1.25}, {"label":"Left", "x":14, "y":5}, {"label":"Down", "x":15, "y":5}, {"label":"Right", "x":16, "y":5}]
+ },
+ "LAYOUT_protosplit": {
+ "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":8, "y":0}, {"label":"F8", "x":9, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"Insert", "x":14, "y":0}, {"label":"Home", "x":15, "y":0}, {"label":"PgUp", "x":16, "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":8, "y":1}, {"label":"*", "x":9, "y":1}, {"label":"(", "x":10, "y":1}, {"label":")", "x":11, "y":1}, {"label":"_", "x":12, "y":1}, {"label":"+", "x":13, "y":1}, {"label":"Delete", "x":14, "y":1}, {"label":"End", "x":15, "y":1}, {"label":"PgDn", "x":16, "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":7.5, "y":2}, {"label":"U", "x":8.5, "y":2}, {"label":"I", "x":9.5, "y":2}, {"label":"O", "x":10.5, "y":2}, {"label":"P", "x":11.5, "y":2}, {"label":"{", "x":12.5, "y":2}, {"label":"}", "x":13.5, "y":2}, {"label":"Back", "x":14.5, "y":2, "w":1.5}, {"label":"Scroll", "x":16, "y":2}, {"label":"Ctrl", "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":7.75, "y":3}, {"label":"J", "x":8.75, "y":3}, {"label":"K", "x":9.75, "y":3}, {"label":"L", "x":10.75, "y":3}, {"label":":", "x":11.75, "y":3}, {"label":"\"", "x":12.75, "y":3}, {"label":"Enter", "x":13.75, "y":3, "w":2.25}, {"label":"Pause", "x":16, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"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":"B", "x":7.25, "y":4}, {"label":"N", "x":8.25, "y":4}, {"label":"M", "x":9.25, "y":4}, {"label":"<", "x":10.25, "y":4}, {"label":">", "x":11.25, "y":4}, {"label":"?", "x":12.25, "y":4}, {"label":"Shift", "x":13.25, "y":4, "w":1.75}, {"label":"Up", "x":15, "y":4}, {"label":"Print", "x":16, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "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":2}, {"label":"Fn", "x":5.75, "y":5}, {"label":"Space", "x":7.75, "y":5, "w":2.75}, {"label":"Alt", "x":10.5, "y":5, "w":1.25}, {"label":"Win", "x":11.75, "y":5}, {"label":"Ctrl", "x":12.75, "y":5, "w":1.25}, {"label":"Left", "x":14, "y":5}, {"label":"Down", "x":15, "y":5}, {"label":"Right", "x":16, "y":5}]
+ }
+ }
+}
diff --git a/keyboards/demiurge/config.h b/keyboards/demiurge/config.h
index b7e3c70b3c..f20f07c584 100755
--- a/keyboards/demiurge/config.h
+++ b/keyboards/demiurge/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 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
diff --git a/keyboards/demiurge/info.json b/keyboards/demiurge/info.json
index 427d7ce278..7e0435856b 100644
--- a/keyboards/demiurge/info.json
+++ b/keyboards/demiurge/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Demiurge",
+ "manufacturer": "ojthetiny",
"url": "",
"maintainer": "ojthetiny",
+ "usb": {
+ "vid": "0x6F6A",
+ "pid": "0x6475",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/demiurge/readme.md b/keyboards/demiurge/readme.md
index 6e7845c8b4..b64d36f274 100644
--- a/keyboards/demiurge/readme.md
+++ b/keyboards/demiurge/readme.md
@@ -19,6 +19,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/deng/djam/config.h b/keyboards/deng/djam/config.h
new file mode 100644
index 0000000000..001b2ff19f
--- /dev/null
+++ b/keyboards/deng/djam/config.h
@@ -0,0 +1,28 @@
+/* Copyright 2022 Leo Deng (@myst729)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 MATRIX_ROWS 3
+#define MATRIX_COLS 8
+#define MATRIX_ROW_PINS { F0, F1, F4 }
+#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4 }
+#define DIODE_DIRECTION COL2ROW
+#define DEBOUNCE 5
+
+#define BACKLIGHT_PIN B7
+#define BACKLIGHT_LEVELS 5
diff --git a/keyboards/deng/djam/djam.c b/keyboards/deng/djam/djam.c
new file mode 100644
index 0000000000..97bfda5ac5
--- /dev/null
+++ b/keyboards/deng/djam/djam.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 Leo Deng (@myst729)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "djam.h"
diff --git a/keyboards/deng/djam/djam.h b/keyboards/deng/djam/djam.h
new file mode 100644
index 0000000000..bf740f736a
--- /dev/null
+++ b/keyboards/deng/djam/djam.h
@@ -0,0 +1,28 @@
+/* Copyright 2022 Leo Deng (@myst729)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, K005, K006, K007, \
+ K100, K101, K102, K103, K104, K105, K106, K107, \
+ K200, K201, K202, K203, K204, K205, K206 \
+) { \
+ { K000, K001, K002, KC_NO, KC_NO, K005, K006, K007 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107 }, \
+ { K200, K201, K202, K203, K204, K205, K206, KC_NO } \
+}
diff --git a/keyboards/deng/djam/info.json b/keyboards/deng/djam/info.json
new file mode 100644
index 0000000000..3e871ae85b
--- /dev/null
+++ b/keyboards/deng/djam/info.json
@@ -0,0 +1,38 @@
+{
+ "keyboard_name": "DJam",
+ "manufacturer": "Leo Deng",
+ "url": "",
+ "maintainer": "myst729",
+ "usb": {
+ "vid": "0xDE29",
+ "pid": "0x7325",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "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": 0, "y": 0.5, "h": 2 },
+ { "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": 0.5, "h": 2 },
+ { "x": 0, "y": 3 },
+ { "x": 1, "y": 3 },
+ { "x": 3, "y": 3, "w": 2 },
+ { "x": 5, "y": 3 },
+ { "x": 6, "y": 3, "w": 2 },
+ { "x": 9, "y": 3 },
+ { "x": 10, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/deng/djam/keymaps/default/keymap.c b/keyboards/deng/djam/keymaps/default/keymap.c
new file mode 100644
index 0000000000..724a915e66
--- /dev/null
+++ b/keyboards/deng/djam/keymaps/default/keymap.c
@@ -0,0 +1,23 @@
+/* Copyright 2022 Leo Deng (@myst729)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_S, KC_D, KC_F, KC_J, KC_K, KC_L,
+ KC_A, KC_Z, KC_X, KC_C, KC_N, KC_M, KC_COMM, KC_SCLN,
+ KC_LEFT, KC_RGHT, BL_TOGG, KC_SPC, BL_STEP, KC_UP, KC_DOWN)
+};
diff --git a/keyboards/deng/djam/keymaps/via/keymap.c b/keyboards/deng/djam/keymaps/via/keymap.c
new file mode 100644
index 0000000000..87ff22eb29
--- /dev/null
+++ b/keyboards/deng/djam/keymaps/via/keymap.c
@@ -0,0 +1,38 @@
+/* Copyright 2022 Leo Deng (@myst729)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_S, KC_D, KC_F, KC_J, KC_K, KC_L,
+ KC_A, KC_Z, KC_X, KC_C, KC_N, KC_M, KC_COMM, KC_SCLN,
+ KC_LEFT, KC_RGHT, BL_TOGG, KC_SPC, BL_STEP, KC_UP, KC_DOWN),
+
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/deng/djam/keymaps/via/rules.mk b/keyboards/deng/djam/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/deng/djam/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/deng/djam/readme.md b/keyboards/deng/djam/readme.md
new file mode 100644
index 0000000000..2af54464c0
--- /dev/null
+++ b/keyboards/deng/djam/readme.md
@@ -0,0 +1,23 @@
+# DJam
+
+![DJam](https://i.imgur.com/n95Y83h.jpeg)
+
+A custom controller for the music game DJMax.
+
+* Keyboard Maintainer: [Leo Deng](https://github.com/myst729)
+* Hardware Supported: DJam controller with ATMEGA32U4
+* Hardware Availability: Private Groupbuy
+
+Make example for this keyboard (after setting up your build environment):
+
+ make deng/djam:default
+
+Flashing example for this keyboard:
+
+ make deng/djam: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 by pressing the button on the back of the PCB.
diff --git a/keyboards/deng/djam/rules.mk b/keyboards/deng/djam/rules.mk
new file mode 100644
index 0000000000..4fa3df3f58
--- /dev/null
+++ b/keyboards/deng/djam/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 = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = pwm
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/dichotomy/config.h b/keyboards/dichotomy/config.h
index c4bb030900..581f133571 100644
--- a/keyboards/dichotomy/config.h
+++ b/keyboards/dichotomy/config.h
@@ -19,14 +19,6 @@ 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 0xACC7
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Broekhuijsen
-#define PRODUCT Dichotomy
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
diff --git a/keyboards/dichotomy/info.json b/keyboards/dichotomy/info.json
index e5f3265f35..094ccd67b3 100644
--- a/keyboards/dichotomy/info.json
+++ b/keyboards/dichotomy/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dichotomy",
+ "manufacturer": "Broekhuijsen",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xACC7",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"k00", "x":0, "y":0.5}, {"label":"k01", "x":1, "y":0.5}, {"label":"k02", "x":2, "y":0.25}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0.5}, {"label":"k05", "x":5, "y":0.5}, {"label":"k06", "x":7, "y":0.5}, {"label":"k07", "x":8, "y":0.5}, {"label":"k08", "x":9, "y":0}, {"label":"k09", "x":10, "y":0.25}, {"label":"k0A", "x":11, "y":0.5}, {"label":"k0B", "x":12, "y":0.5}, {"label":"k10", "x":0, "y":1.5}, {"label":"k11", "x":1, "y":1.5}, {"label":"k12", "x":2, "y":1.25}, {"label":"k13", "x":3, "y":1}, {"label":"k14", "x":4, "y":1.5}, {"label":"k15", "x":5, "y":1.5}, {"label":"k16", "x":7, "y":1.5}, {"label":"k17", "x":8, "y":1.5}, {"label":"k18", "x":9, "y":1}, {"label":"k19", "x":10, "y":1.25}, {"label":"k1A", "x":11, "y":1.5}, {"label":"k1B", "x":12, "y":1.5}, {"label":"k20", "x":0, "y":2.5}, {"label":"k21", "x":1, "y":2.5}, {"label":"k22", "x":2, "y":2.25}, {"label":"k23", "x":3, "y":2}, {"label":"k24", "x":4, "y":2.5}, {"label":"k25", "x":5, "y":2.5}, {"label":"k26", "x":7, "y":2.5}, {"label":"k27", "x":8, "y":2.5}, {"label":"k28", "x":9, "y":2}, {"label":"k29", "x":10, "y":2.25}, {"label":"k2A", "x":11, "y":2.5}, {"label":"k2B", "x":12, "y":2.5}, {"label":"k33", "x":3, "y":4}, {"label":"k34", "x":4, "y":4}, {"label":"k35", "x":5, "y":4}, {"label":"k36", "x":7, "y":4}, {"label":"k37", "x":8, "y":4}, {"label":"k38", "x":9, "y":4}, {"label":"k42", "x":2, "y":5}, {"label":"k43", "x":3, "y":5}, {"label":"k44", "x":4, "y":5}, {"label":"k45", "x":5, "y":5}, {"label":"k46", "x":7, "y":5}, {"label":"k47", "x":8, "y":5}, {"label":"k48", "x":9, "y":5}, {"label":"k49", "x":10, "y":5}]
diff --git a/keyboards/dichotomy/keymaps/default/keymap.c b/keyboards/dichotomy/keymaps/default/keymap.c
index b8c7ef4274..80fc4d89bc 100755
--- a/keyboards/dichotomy/keymaps/default/keymap.c
+++ b/keyboards/dichotomy/keymaps/default/keymap.c
@@ -109,7 +109,7 @@ report_mouse_t currentReport = {};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
//uint8_t layer;
- //layer = biton32(layer_state); // get the current layer //Or don't, I didn't use it.
+ //layer = get_highest_layer(layer_state); // get the current layer //Or don't, I didn't use it.
bool returnVal = true; //this is to determine if more key processing is needed.
//custom layer handling for tri_layer,
@@ -437,7 +437,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
};
void matrix_scan_user(void) {
- //uint8_t layer = biton32(layer_state);
+ //uint8_t layer = get_highest_layer(layer_state);
for (uint8_t i = 0; i<LONGPRESS_COUNT; i++){
if ((timer_elapsed(special_timers[i]) >= CUSTOM_LONGPRESS) && (!special_key_states[i]) && special_key_pressed[i]){
switch (i + SAFE_RANGE){
diff --git a/keyboards/dinofizz/fnrow/v1/config.h b/keyboards/dinofizz/fnrow/v1/config.h
index fb7e4e91db..9560d18621 100644
--- a/keyboards/dinofizz/fnrow/v1/config.h
+++ b/keyboards/dinofizz/fnrow/v1/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xD1F1
-#define PRODUCT_ID 0x0100
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Dino Fizzotti
-#define PRODUCT FnRow v1
-
#define MATRIX_ROWS 2
#define MATRIX_COLS 7
diff --git a/keyboards/dinofizz/fnrow/v1/info.json b/keyboards/dinofizz/fnrow/v1/info.json
index b0dc34c43c..de21492393 100644
--- a/keyboards/dinofizz/fnrow/v1/info.json
+++ b/keyboards/dinofizz/fnrow/v1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "FnRow v1",
+ "manufacturer": "Dino Fizzotti",
"maintainer": "dinofizz",
"url": "https://github.com/dinofizz/fnrow-pcb",
+ "usb": {
+ "vid": "0xD1F1",
+ "pid": "0x0100",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_fn_row": {
"layout": [
diff --git a/keyboards/dk60/config.h b/keyboards/dk60/config.h
index eef0ddc474..5fc549ee02 100644
--- a/keyboards/dk60/config.h
+++ b/keyboards/dk60/config.h
@@ -19,13 +19,6 @@ 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 0x56C2
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DARKOU
-#define PRODUCT DK60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 13
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, B4, D7, D6, D4 }
#define MATRIX_COL_PINS { B0, B3, B2, B1, D3, D5, B5, B7, C6, C7, D0, D1, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dk60/info.json b/keyboards/dk60/info.json
index f32bd47cfa..7d7cf4a7b0 100644
--- a/keyboards/dk60/info.json
+++ b/keyboards/dk60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "DK60",
+ "manufacturer": "DARKOU",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x56C2",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dm9records/ergoinu/config.h b/keyboards/dm9records/ergoinu/config.h
index e4fb80ad2e..7e6743d677 100644
--- a/keyboards/dm9records/ergoinu/config.h
+++ b/keyboards/dm9records/ergoinu/config.h
@@ -21,14 +21,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter
- VID & PID are lisenced from microchip sublisence program, Don't use other project! */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEE60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Dm9Records
-#define PRODUCT ergoinu
-
#define USE_SERIAL
/* serial.c configuration for split keyboard */
diff --git a/keyboards/dm9records/ergoinu/info.json b/keyboards/dm9records/ergoinu/info.json
index b9ce9ea5cb..10f67b05ac 100644
--- a/keyboards/dm9records/ergoinu/info.json
+++ b/keyboards/dm9records/ergoinu/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ergoinu",
+ "manufacturer": "Dm9Records",
"url": "",
"maintainer": "hsgw(Takuya Urakawa)",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEE60",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dm9records/lain/config.h b/keyboards/dm9records/lain/config.h
index adc0d165c3..592b517ed2 100644
--- a/keyboards/dm9records/lain/config.h
+++ b/keyboards/dm9records/lain/config.h
@@ -5,13 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xE8F4
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Dm9Records
-#define PRODUCT lain
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
diff --git a/keyboards/dm9records/lain/info.json b/keyboards/dm9records/lain/info.json
index 57e28d28dd..fd39c977fd 100644
--- a/keyboards/dm9records/lain/info.json
+++ b/keyboards/dm9records/lain/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "lain",
+ "manufacturer": "Dm9Records",
"url": "https://5z6p.com/lain",
"maintainer": "hsgw",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE8F4",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dm9records/lain/readme.md b/keyboards/dm9records/lain/readme.md
index 6eb216af61..4105c29371 100644
--- a/keyboards/dm9records/lain/readme.md
+++ b/keyboards/dm9records/lain/readme.md
@@ -29,4 +29,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/dm9records/plaid/config.h b/keyboards/dm9records/plaid/config.h
index ab6b0fbabc..1875566cf6 100644
--- a/keyboards/dm9records/plaid/config.h
+++ b/keyboards/dm9records/plaid/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-/* VID & PID from vusb project, see tmk_core/protocol/vusb/USB-IDs-for-free.txt"*/
-#define VENDOR_ID 0x16c0
-#define PRODUCT_ID 0x27db
-#define DEVICE_VER 0x0002
-#define MANUFACTURER dm9records
-#define PRODUCT Plaid
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -43,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4, B5, B3, D4 }
#define MATRIX_COL_PINS { B0, D7, D6, D5, B2, B1, C0, C1, C2, C3, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dm9records/plaid/info.json b/keyboards/dm9records/plaid/info.json
index 12c9e43c08..f4c6ae5281 100644
--- a/keyboards/dm9records/plaid/info.json
+++ b/keyboards/dm9records/plaid/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Plaid // Through Hole",
+ "keyboard_name": "Plaid",
+ "manufacturer": "Dm9Records",
"url": "https://github.com/hsgw/plaid",
"maintainer": "hsgw(Takuya Urakawa)",
+ "usb": {
+ "vid": "0x16C0",
+ "pid": "0x27DB",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_plaid_mit": {
"layout": [
diff --git a/keyboards/dm9records/plaid/keymaps/brickbots/keymap.c b/keyboards/dm9records/plaid/keymaps/brickbots/keymap.c
index 646a942c58..819b76e739 100644
--- a/keyboards/dm9records/plaid/keymaps/brickbots/keymap.c
+++ b/keyboards/dm9records/plaid/keymaps/brickbots/keymap.c
@@ -194,7 +194,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_plaid_grid(
- RESET,LED_1, LED_2, LED_3, LED_4, LED_5,LED_6, LED_7, LED_8, LED_9, LED_0,KC_DEL ,
+ QK_BOOT,LED_1, LED_2, LED_3, LED_4, LED_5,LED_6, LED_7, LED_8, LED_9, LED_0,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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/dm9records/plaid/keymaps/default/keymap.c b/keyboards/dm9records/plaid/keymaps/default/keymap.c
index f11b744066..d96c250609 100644
--- a/keyboards/dm9records/plaid/keymaps/default/keymap.c
+++ b/keyboards/dm9records/plaid/keymaps/default/keymap.c
@@ -195,7 +195,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_plaid_grid(
QK_BOOT,LED_1, LED_2, LED_3, LED_4, LED_5,LED_6, LED_7, LED_8, LED_9, LED_0,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, _______, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/dm9records/plaid/keymaps/gipsy-king/keymap.c b/keyboards/dm9records/plaid/keymaps/gipsy-king/keymap.c
index 0abd3f8495..f31b79c2c7 100644
--- a/keyboards/dm9records/plaid/keymaps/gipsy-king/keymap.c
+++ b/keyboards/dm9records/plaid/keymaps/gipsy-king/keymap.c
@@ -92,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT_plaid_grid( // F, media keys, reset
KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- _______, _______, MU_MOD, AU_ON, AU_OFF, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, RESET,
+ _______, _______, MU_MOD, AU_ON, AU_OFF, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, QK_BOOT,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF,_______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, AUTOCLICK
)
diff --git a/keyboards/dm9records/plaid/keymaps/stephen-huan/keymap.c b/keyboards/dm9records/plaid/keymaps/stephen-huan/keymap.c
index c8d48c3955..354599f340 100644
--- a/keyboards/dm9records/plaid/keymaps/stephen-huan/keymap.c
+++ b/keyboards/dm9records/plaid/keymaps/stephen-huan/keymap.c
@@ -133,7 +133,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_plaid_grid(
- RESET , LED_1 , LED_2 , LED_3 , LED_4 , LED_5 ,LED_6 , LED_7 , LED_8 , LED_9 , LED_0 , _______ ,
+ QK_BOOT, LED_1 , LED_2 , LED_3 , LED_4 , LED_5 ,LED_6 , LED_7 , LED_8 , LED_9 , LED_0 , _______ ,
_______, KC_PWR , KC_SLEP, KC_WAKE, KC_EJCT, _______, _______, _______, _______, _______, _______, _______ ,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/dm9records/plaid/keymaps/thehalfdeafchef/keymap.c b/keyboards/dm9records/plaid/keymaps/thehalfdeafchef/keymap.c
index 6dcabb160e..9567c60bff 100644
--- a/keyboards/dm9records/plaid/keymaps/thehalfdeafchef/keymap.c
+++ b/keyboards/dm9records/plaid/keymaps/thehalfdeafchef/keymap.c
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Function (Lower + Raise)
* ,-----------------------------------------------------------------------------------------------------------------------.
- * | RESET| LCA_T(F1) | LCA_T(F2) | LCA_T(F3) | LCA_T(F4) | LCA_T(F5) | LCA_T(F6) | LCA_T(F7) | | | | |
+ * | QK_BOOT| LCA_T(F1) | LCA_T(F2) | LCA_T(F3) | LCA_T(F4) | LCA_T(F5) | LCA_T(F6) | LCA_T(F7) | | | | |
* |------+------------+-----------+-----------+-----------+-----------+-----------+-----------+------+------+------+------+
* | | | | | | QWERTY | DVORAK | COLEMAK | | | | |
* |------+------------+-----------+-----------+-----------+-----------+-----------+-----------+------+------+------+------+
@@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------------------------------------------'
*/
- [_FUNCTION] = LAYOUT_planck_mit(RESET, LCA_T(KC_F1), LCA_T(KC_F2), LCA_T(KC_F3), LCA_T(KC_F4), LCA_T(KC_F5), LCA_T(KC_F6), LCA_T(KC_F7), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QWERTY, DVORAK, 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, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LED, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO)};
+ [_FUNCTION] = LAYOUT_planck_mit(QK_BOOT, LCA_T(KC_F1), LCA_T(KC_F2), LCA_T(KC_F3), LCA_T(KC_F4), LCA_T(KC_F5), LCA_T(KC_F6), LCA_T(KC_F7), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QWERTY, DVORAK, 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, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LED, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO)};
// constants to toggle LED behavior
@@ -129,7 +129,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { return update_tri_laye
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _LOWER:
diff --git a/keyboards/dm9records/tartan/config.h b/keyboards/dm9records/tartan/config.h
index 4faec53721..a64d584d8e 100644
--- a/keyboards/dm9records/tartan/config.h
+++ b/keyboards/dm9records/tartan/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-/* VID & PID from vusb project, see tmk_core/protocol/vusb/USB-IDs-for-free.txt"*/
-#define VENDOR_ID 0x16c0
-#define PRODUCT_ID 0x27db
-#define DEVICE_VER 0x0001
-#define MANUFACTURER dm9records
-#define PRODUCT Tartan
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 13
@@ -43,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4, B5, B3, B0, C0 }
#define MATRIX_COL_PINS { D7, D6, D5, D4, B1, B2, C1, C2, C3, C5, D1, D0, C4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dm9records/tartan/info.json b/keyboards/dm9records/tartan/info.json
index 32e018fde7..e2c64b943f 100644
--- a/keyboards/dm9records/tartan/info.json
+++ b/keyboards/dm9records/tartan/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Tartan # Through Hole",
+ "keyboard_name": "Tartan",
+ "manufacturer": "Dm9Records",
"url": "https://github.com/hsgw/tartan",
"maintainer": "hsgw(Takuya Urakawa)",
+ "usb": {
+ "vid": "0x16C0",
+ "pid": "0x27DB",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"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, "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}, {"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":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/dmqdesign/spin/config.h b/keyboards/dmqdesign/spin/config.h
index ee4f5bf490..72efc0f556 100644
--- a/keyboards/dmqdesign/spin/config.h
+++ b/keyboards/dmqdesign/spin/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA455
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DMQ Design
-#define PRODUCT SPIN
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 5
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { F0, F1, F4 }
#define MATRIX_COL_PINS { F5, F6, F7, C7, C6 }
-#define UNUSED_PINS { D5, D2, D1, D0, B7, B3, B2, B0, E6 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dmqdesign/spin/info.json b/keyboards/dmqdesign/spin/info.json
index 4d8c09c277..14db65cc65 100644
--- a/keyboards/dmqdesign/spin/info.json
+++ b/keyboards/dmqdesign/spin/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "SPIN",
+ "manufacturer": "DMQ Design",
"url": "https://www.DMQdesign.com",
"maintainer": "Quarren42",
+ "usb": {
+ "vid": "0xA455",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/config.h b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/config.h
index 1851f07f1d..b9a0b53fbf 100644
--- a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/config.h
+++ b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/config.h
@@ -24,7 +24,7 @@
#undef LOCKING_SUPPORT_ENABLE
#define LAYER_STATE_8BIT
-#define MAX_LAYER 4
+#define MAX_LAYER 5
#undef RGBLIGHT_ANIMATIONS
#define RGBLIGHT_EFFECT_BREATHING
diff --git a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c
index bdf5dff0df..8c9af7202b 100644
--- a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c
+++ b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/keymap.c
@@ -20,7 +20,7 @@
#define RGB_LAYER_ACK_DURATION 500
-enum layers { _MACRO, _NUMPAD, _RGB, _FN };
+enum layers { _MACRO, _NUMPAD, _CURSOR, _RGB, _FN };
enum layer_base {
LAYER_BASE = _MACRO,
@@ -44,22 +44,37 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NUMPAD] = LAYOUT(
KC_KP_7, KC_KP_8, KC_KP_9, KC_TRNS,
- KC_KP_4, KC_KP_5, KC_KP_6, KC_TRNS,
+ KC_KP_4, KC_KP_5, KC_KP_6, TO(_CURSOR),
KC_KP_1, KC_KP_2, KC_KP_3, KC_TRNS,
KC_KP_0, KC_PDOT, KC_PENT),
+ [_CURSOR] = LAYOUT(
+ KC_HOME, KC_UP, KC_PGUP, KC_TRNS,
+ KC_LEFT, KC_NO, KC_RIGHT, TO(_NUMPAD),
+ KC_END, KC_DOWN, KC_PGDN, KC_TRNS,
+ KC_INS, KC_DEL, KC_PENT),
+
[_RGB] = LAYOUT(
RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS,
- RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS,
+ RGB_HUD, RGB_SAD, RGB_VAD, TO(_NUMPAD),
RGB_SPD, RGB_SPI, KC_NO, KC_TRNS,
RGB_RMOD, RGB_TOG, RGB_MOD),
[_FN] = LAYOUT(
- KC_TRNS, DEBUG, RESET, KC_TRNS,
+ KC_NO, DEBUG, QK_BOOT, KC_TRNS,
KC_NO, KC_NO, EEP_RST, KC_TRNS,
KC_NO, KC_NO, KC_NO, KC_TRNS,
- KC_NO, KC_NO, KC_NO),
+ KC_TRNS, KC_NO, KC_NO),
+};
+
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_MACRO] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU), ENCODER_CCW_CW(C(KC_MINS), C(KC_EQL)), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_NUMPAD] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU), ENCODER_CCW_CW(C(KC_MINS), C(KC_EQL)), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_CURSOR] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU), ENCODER_CCW_CW(C(KC_MINS), C(KC_EQL)), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_RGB] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI ), ENCODER_CCW_CW(RGB_SAD, RGB_SAI ), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU), ENCODER_CCW_CW(C(KC_MINS), C(KC_EQL)), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
};
+
// clang-format on
typedef enum layer_ack {
@@ -71,6 +86,7 @@ typedef enum layer_ack {
#define LAYER_OFFSET 0
const rgblight_segment_t PROGMEM _macro_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 1, HSV_TEAL});
const rgblight_segment_t PROGMEM _numpad_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_TEAL});
+const rgblight_segment_t PROGMEM _cursor_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, 1, HSV_BLUE});
const rgblight_segment_t PROGMEM _rgb_layer[] = RGBLIGHT_LAYER_SEGMENTS({2, 1, HSV_TEAL});
const rgblight_segment_t PROGMEM _fn_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 3, HSV_PURPLE});
@@ -83,8 +99,9 @@ const rgblight_segment_t PROGMEM _meh_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 3, H
const rgblight_segment_t *const PROGMEM _rgb_layers[] = {
[LAYER_OFFSET + 0] = _macro_layer,
[LAYER_OFFSET + 1] = _numpad_layer,
- [LAYER_OFFSET + 2] = _rgb_layer,
- [LAYER_OFFSET + 3] = _fn_layer,
+ [LAYER_OFFSET + 2] = _cursor_layer,
+ [LAYER_OFFSET + 3] = _rgb_layer,
+ [LAYER_OFFSET + 4] = _fn_layer,
[ACK_OFFSET + ACK_NO] = _no_layer,
[ACK_OFFSET + ACK_YES] = _yes_layer,
@@ -145,9 +162,22 @@ void spidey_glow(void) {
rgblight_sethsv(255, 230, 128);
}
-void eeconfig_init_user(void) { spidey_glow(); }
+void eeconfig_init_user(void) {
+ spidey_glow();
+}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ dprintf("key event: kc: %02X, col: %02u, row: %02u, pressed: %u mods: %08b "
+#if !defined(NO_ACTION_ONESHOT)
+ "os: %08b "
+#endif
+ "weak: %08b\n",
+ keycode, record->event.key.col, record->event.key.row, record->event.pressed, bitrev(get_mods()),
+#if !defined(NO_ACTION_ONESHOT)
+ bitrev(get_oneshot_mods()),
+#endif
+ bitrev(get_weak_mods()));
+
if (record->event.pressed) {
switch (keycode) {
// Re-implement this here, but fix the persistence!
@@ -200,39 +230,3 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
-bool encoder_update_user(uint8_t index, bool clockwise) {
- switch (get_highest_layer(layer_state)) {
- case _RGB:
- if (index == 0) {
- if (clockwise) {
- rgblight_increase_hue();
- } else {
- rgblight_decrease_hue();
- }
- } else if (index == 1) {
- if (clockwise) {
- rgblight_increase_sat();
- } else {
- rgblight_decrease_sat();
- }
- } else if (index == 2) {
- if (clockwise) {
- rgblight_increase_val();
- } else {
- rgblight_decrease_val();
- }
- }
- break;
-
- default:
- if (index == 0) {
- tap_code16(C(S(clockwise ? KC_EQL : KC_MINS)));
- } else if (index == 1) {
- tap_code16(C(clockwise ? KC_EQL : KC_MINS));
- } else if (index == 2) {
- tap_code(clockwise ? KC_VOLU : KC_VOLD);
- }
- break;
- }
- return true;
-}
diff --git a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/rules.mk b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/rules.mk
index 7fe1f992aa..5d543e2c7e 100644
--- a/keyboards/dmqdesign/spin/keymaps/spidey3_pad/rules.mk
+++ b/keyboards/dmqdesign/spin/keymaps/spidey3_pad/rules.mk
@@ -1,7 +1,7 @@
MOUSEKEY_ENABLE = no
MIDI_ENABLE = no
-BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = yes
LTO_ENABLE = yes
-CONSOLE_ENABLE = yes # Console for debug
+CONSOLE_ENABLE = yes
GRAVE_ESC_ENABLE = no
-
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/do60/config.h b/keyboards/do60/config.h
index 8a0f324aa2..34a44066d4 100644
--- a/keyboards/do60/config.h
+++ b/keyboards/do60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4453 // DS for Doyu Studios
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Shopkey by Doyu Studio
-#define PRODUCT Do60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, F4, B4, D7, D6, B3, B0 }
-#define UNUSED_PINS
#define LED_CAPS_LOCK_PIN B2
#define LED_PIN_ON_STATE 0
diff --git a/keyboards/do60/info.json b/keyboards/do60/info.json
index fbc1cb1c78..86e3e5f39a 100644
--- a/keyboards/do60/info.json
+++ b/keyboards/do60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "do60",
+ "keyboard_name": "Do60",
+ "manufacturer": "Doyu Studio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4453",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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":"\u2190", "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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3}, {"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}, {"x":12, "y":3}, {"label":"\u2191", "x":13, "y":3}, {"label":"Del", "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":"3u(Space)", "x":3.75, "y":4, "w":2.75}, {"x":6.5, "y":4}, {"label":"3u(Space)", "x":7.5, "y":4, "w":2.25}, {"label":"Alt", "x":9.75, "y":4, "w":1.25}, {"label":"win", "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/do60/keymaps/crd/keymap.c b/keyboards/do60/keymaps/crd/keymap.c
index 2c83df867f..aaec5c2f78 100644
--- a/keyboards/do60/keymaps/crd/keymap.c
+++ b/keyboards/do60/keymaps/crd/keymap.c
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FL] = 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_DEL,
- _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, KC_MUTE, _______, _______, KC_PGDN, KC_PGUP, RESET,
+ _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, KC_MUTE, _______, _______, KC_PGDN, KC_PGUP, QK_BOOT,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_SLCK, KC_VOLD, KC_VOLU, KC_PAUS, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/do60/keymaps/test/keymap.c b/keyboards/do60/keymaps/test/keymap.c
index 7ad21e3850..8188bde5e4 100644
--- a/keyboards/do60/keymaps/test/keymap.c
+++ b/keyboards/do60/keymaps/test/keymap.c
@@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 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,
+ QK_BOOT, KC_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,
diff --git a/keyboards/doio/kb16/config.h b/keyboards/doio/kb16/config.h
new file mode 100644
index 0000000000..911ba9d3d5
--- /dev/null
+++ b/keyboards/doio/kb16/config.h
@@ -0,0 +1,88 @@
+/* Copyright 2022 DOIO
+ * 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 7
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { D5, D4, D3, D2 }
+#define MATRIX_COL_PINS { F5, F4, F1, F0, B7, B4, B5 }
+
+#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
+
+/* Forcing to use NKRO instead 6KRO */
+#define FORCE_NKRO
+
+/* Use the custom font */
+#define OLED_FONT_H "lib/glcdfont.c"
+
+/* Encoder pins */
+#define ENCODERS_PAD_A { F7, C7, D7 }
+#define ENCODERS_PAD_B { E6, C6, D6 }
+
+#ifdef RGB_MATRIX_ENABLE
+ /* RGB Matrix config */
+ #define RGB_DI_PIN F6
+ #define DRIVER_LED_TOTAL 16
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
+ #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+ #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_UP_DOWN
+ #define RGB_MATRIX_KEYPRESSES
+
+ /* RGB Matrix effect */
+ #define ENABLE_RGB_MATRIX_ALPHAS_MODS
+ #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+ #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_CYCLE_ALL
+ #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_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_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
diff --git a/keyboards/doio/kb16/info.json b/keyboards/doio/kb16/info.json
new file mode 100644
index 0000000000..7cd02bce7b
--- /dev/null
+++ b/keyboards/doio/kb16/info.json
@@ -0,0 +1,48 @@
+{
+ "keyboard_name": "KB16-01",
+ "manufacturer": "DOIO",
+ "url": "",
+ "maintainer": "HorrorTroll",
+ "usb": {
+ "vid": "0xD010",
+ "pid": "0x1601",
+ "device_version": "0.0.1"
+ },
+ "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":"Encoder 1 CCW", "x":4.25, "y":0, "w":0.5},
+ {"label":"Encoder 1", "x":4.75, "y":0},
+ {"label":"Encoder 1 CW", "x":5.75, "y":0, "w":0.5},
+
+ {"label":"5%", "x":0, "y":1},
+ {"label":"6^", "x":1, "y":1},
+ {"label":"7&", "x":2, "y":1},
+ {"label":"8*", "x":3, "y":1},
+
+ {"label":"Encoder 2 CCW", "x":6.25, "y":0, "w":0.5},
+ {"label":"Encoder 2", "x":6.75, "y":0},
+ {"label":"Encoder 2 CW", "x":7.75, "y":0, "w":0.5},
+
+ {"label":"9(", "x":0, "y":2},
+ {"label":"0)", "x":1, "y":2},
+ {"label":"\u2191", "x":2, "y":2},
+ {"label":"Enter", "x":3, "y":2},
+
+ {"label":"Encoder 3 CCW", "x":5.25, "y":2.5, "w":0.5},
+ {"label":"Encoder 3", "x":5.75, "y":2.5},
+ {"label":"Encoder 3 CW", "x":6.75, "y":2.5, "w":0.5},
+
+ {"label":"Fn", "x":0, "y":3},
+ {"label":"\u2190", "x":1, "y":3},
+ {"label":"\u2193", "x":2, "y":3},
+ {"label":"\u2192", "x":3, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/doio/kb16/kb16.c b/keyboards/doio/kb16/kb16.c
new file mode 100644
index 0000000000..037f561e97
--- /dev/null
+++ b/keyboards/doio/kb16/kb16.c
@@ -0,0 +1,66 @@
+/* Copyright 2022 DOIO
+ * 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 "kb16.h"
+
+// OLED animation
+#include "lib/logo.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, NO_LED, NO_LED, NO_LED },
+ { 4, 5, 6, 7, NO_LED, NO_LED, NO_LED },
+ { 8, 9, 10, 11, NO_LED, NO_LED, NO_LED },
+ { 12, 13, 14, 15, NO_LED, NO_LED, NO_LED }
+}, {
+ {0 , 0}, {75 , 0}, {149, 0}, {224, 0},
+ {0 , 21}, {75 , 21}, {149, 21}, {224, 21},
+ {0 , 43}, {75 , 43}, {149, 43}, {224, 43},
+ {0 , 64}, {75 , 64}, {149, 64}, {224, 64},
+}, {
+ 1, 1, 1, 1,
+ 1, 4, 4, 1,
+ 1, 4, 4, 1,
+ 1, 1, 1, 1,
+} };
+#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/doio/kb16/kb16.h b/keyboards/doio/kb16/kb16.h
new file mode 100644
index 0000000000..c4dc7cfed1
--- /dev/null
+++ b/keyboards/doio/kb16/kb16.h
@@ -0,0 +1,47 @@
+/* Copyright 2022 DOIO
+ * 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
+
+/* 06 â—¯ 05 16 â—¯ 15
+ * ┌───┬───┬───┬───┠┌───┠┌───â”
+ * │00 │01 │02 │03 │ │04 │ │14 │
+ * ├───┼───┼───┼───┤ └───┘ └───┘
+ * │10 │11 │12 │13 │
+ * ├───┼───┼───┼───┤ 26 ◯ 25
+ * │20 │21 │22 │23 │ ┌───â”
+ * ├───┼───┼───┼───┤ │24 │
+ * │30 │31 │32 │33 │ └───┘
+ * └───┴───┴───┴───┘
+ */
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K06, K04, K05, \
+ K10, K11, K12, K13, K16, K14, K15, \
+ K20, K21, K22, K23, K26, K24, K25, \
+ K30, K31, K32, K33 \
+) { \
+ { 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, XXX, XXX, XXX } \
+}
+
diff --git a/keyboards/doio/kb16/keymaps/bongocat/config.h b/keyboards/doio/kb16/keymaps/bongocat/config.h
new file mode 100644
index 0000000000..bb22eebb1b
--- /dev/null
+++ b/keyboards/doio/kb16/keymaps/bongocat/config.h
@@ -0,0 +1,45 @@
+/* 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
+
+/* Additional thing to reduce compiled size */
+#define NO_ACTION_ONESHOT
+#define LAYER_STATE_8BIT
+
+#ifdef RGB_MATRIX_ENABLE
+ /* RGB Matrix config */
+ #undef RGB_MATRIX_KEYPRESSES
+
+ /* RGB Matrix effect */
+ #undef 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_VAL
+ #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+ #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+ #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+ #undef ENABLE_RGB_MATRIX_DUAL_BEACON
+ #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+ #undef ENABLE_RGB_MATRIX_RAINDROPS
+ #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+ #undef ENABLE_RGB_MATRIX_HUE_PENDULUM
+ #undef ENABLE_RGB_MATRIX_HUE_WAVE
+ #undef ENABLE_RGB_MATRIX_PIXEL_RAIN
+ #undef ENABLE_RGB_MATRIX_PIXEL_FLOW
+ #undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#endif
diff --git a/keyboards/doio/kb16/keymaps/bongocat/keymap.c b/keyboards/doio/kb16/keymaps/bongocat/keymap.c
new file mode 100644
index 0000000000..b60688a385
--- /dev/null
+++ b/keyboards/doio/kb16/keymaps/bongocat/keymap.c
@@ -0,0 +1,180 @@
+/* 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
+
+// OLED animation
+#include "oled/bongocat.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,
+ _FN1,
+ _FN2
+};
+
+// enum layer_keycodes { };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │ 1 │ 2 │ 3 │ 4 │ │Ply│ │TO1│
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ 5 │ 6 │ 7 │ 8 │
+ ├───┼───┼───┼───┤
+ │ 9 │ 0 │ ↑ │Ent│ ┌───â”
+ ├───┼───┼───┼───┤ │Mut│
+ │Fn2│ ↠│ ↓ │ → │ └───┘
+ └───┴───┴───┴───┘
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │ ! │ @ │ # │ $ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ % │ ^ │ & │ * │
+ ├───┼───┼───┼───┤
+ │ ( │ ) │ │ │ ┌───â”
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 */
+ [_BASE] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_MPRV, KC_MPLY, KC_MNXT,
+ KC_5, KC_6, KC_7, KC_8, KC_PGDN, TO(_FN), KC_PGUP,
+ KC_9, KC_0, KC_UP, KC_ENT, KC_VOLD, KC_MUTE, KC_VOLU,
+ MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │ │ │ │ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ │ │ │ │
+ ├───┼───┼───┼───┤
+ │ │ │ │ │ ┌───â”
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 */
+ [_FN] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, TO(_FN1), _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+/*
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │ │ │ │ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ │ │ │ │
+ ├───┼───┼───┼───┤
+ │ │ │ │ │ ┌───â”
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 */
+ [_FN1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, TO(_FN2), _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+/*
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │Spi│Spd│ │ │ │ │ │TO0│
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │Sai│Sad│ │ │
+ ├───┼───┼───┼───┤
+ │Tog│Mod│Hui│ │ ┌───â”
+ ├───┼───┼───┼───┤ │ │
+ │ │Vai│Hud│Vad│ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 */
+ [_FN2] = LAYOUT(
+ RGB_SPI, RGB_SPD, _______, QK_BOOT, _______, _______, _______,
+ RGB_SAI, RGB_SAD, _______, _______, _______, TO(_BASE), _______,
+ RGB_TOG, RGB_MOD, RGB_HUI, _______, _______, _______, _______,
+ _______, RGB_VAI, RGB_HUD, RGB_VAD
+ ),
+};
+
+#ifdef OLED_ENABLE
+ bool oled_task_user(void) {
+ led_t led_usb_state = host_keyboard_led_state();
+
+ 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);
+
+ return true;
+ }
+#endif
+
+#ifdef ENCODER_ENABLE
+
+#define ENCODERS 3
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = {{ 5, 0 }, { 5, 1 }, { 5, 2 }};
+static keypos_t encoder_ccw[ENCODERS] = {{ 6, 0 }, { 6, 1 }, { 6, 2 }};
+
+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
diff --git a/keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.c b/keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.c
new file mode 100644
index 0000000000..12ca8694c1
--- /dev/null
+++ b/keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.c
@@ -0,0 +1,378 @@
+/* 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 "quantum.h"
+
+// 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 525 // 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
+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/doio/kb16/keymaps/bongocat/oled/bongocat.h b/keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.h
new file mode 100644
index 0000000000..65ceabc682
--- /dev/null
+++ b/keyboards/doio/kb16/keymaps/bongocat/oled/bongocat.h
@@ -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/>.
+ */
+
+void render_bongocat(void);
diff --git a/keyboards/doio/kb16/keymaps/bongocat/rules.mk b/keyboards/doio/kb16/keymaps/bongocat/rules.mk
new file mode 100644
index 0000000000..087a45a944
--- /dev/null
+++ b/keyboards/doio/kb16/keymaps/bongocat/rules.mk
@@ -0,0 +1,9 @@
+SRC += oled/bongocat.c
+
+VIA_ENABLE = yes
+
+# Additional thing to reduce compiled size
+GRAVE_ESC_ENABLE = no
+
+# OLED enabled
+WPM_ENABLE = yes
diff --git a/keyboards/doio/kb16/keymaps/default/keymap.c b/keyboards/doio/kb16/keymaps/default/keymap.c
new file mode 100644
index 0000000000..df72bbe15a
--- /dev/null
+++ b/keyboards/doio/kb16/keymaps/default/keymap.c
@@ -0,0 +1,140 @@
+/* Copyright 2022 DOIO
+ * 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
+
+// OLED animation
+#include "lib/layer_status/layer_status.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,
+ _FN1,
+ _FN2
+};
+
+// enum layer_keycodes { };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │ 1 │ 2 │ 3 │ 4 │ │Ply│ │TO1│
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ 5 │ 6 │ 7 │ 8 │
+ ├───┼───┼───┼───┤
+ │ 9 │ 0 │ ↑ │Ent│ ┌───â”
+ ├───┼───┼───┼───┤ │Mut│
+ │Fn2│ ↠│ ↓ │ → │ └───┘
+ └───┴───┴───┴───┘
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │ ! │ @ │ # │ $ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ % │ ^ │ & │ * │
+ ├───┼───┼───┼───┤
+ │ ( │ ) │ │ │ ┌───â”
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 */
+ [_BASE] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, _______, KC_MPLY, _______,
+ KC_5, KC_6, KC_7, KC_8, _______, TO(_FN), _______,
+ KC_9, KC_0, KC_UP, KC_ENT, _______, KC_MUTE, _______,
+ MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │ │ │ │ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ │ │ │ │
+ ├───┼───┼───┼───┤
+ │ │ │ │ │ ┌───â”
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 */
+ [_FN] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, TO(_FN1), _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+/*
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │ │ │ │ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ │ │ │ │
+ ├───┼───┼───┼───┤
+ │ │ │ │ │ ┌───â”
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 */
+ [_FN1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, TO(_FN2), _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+/*
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │Spi│Spd│ │ │ │ │ │TO0│
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │Sai│Sad│ │ │
+ ├───┼───┼───┼───┤
+ │Tog│Mod│Hui│ │ ┌───â”
+ ├───┼───┼───┼───┤ │ │
+ │ │Vai│Hud│Vad│ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 */
+ [_FN2] = LAYOUT(
+ RGB_SPI, RGB_SPD, _______, QK_BOOT, _______, _______, _______,
+ RGB_SAI, RGB_SAD, _______, _______, _______, TO(_BASE), _______,
+ RGB_TOG, RGB_MOD, RGB_HUI, _______, _______, _______, _______,
+ _______, RGB_VAI, RGB_HUD, RGB_VAD
+ ),
+};
+
+#ifdef OLED_ENABLE
+ bool oled_task_user(void) {
+ render_layer_status();
+
+ return true;
+ }
+#endif
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif
diff --git a/keyboards/doio/kb16/keymaps/default/rules.mk b/keyboards/doio/kb16/keymaps/default/rules.mk
new file mode 100644
index 0000000000..00003ba11b
--- /dev/null
+++ b/keyboards/doio/kb16/keymaps/default/rules.mk
@@ -0,0 +1,2 @@
+# Encoder enabled
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/doio/kb16/keymaps/via/keymap.c b/keyboards/doio/kb16/keymaps/via/keymap.c
new file mode 100644
index 0000000000..4f01846eae
--- /dev/null
+++ b/keyboards/doio/kb16/keymaps/via/keymap.c
@@ -0,0 +1,172 @@
+/* Copyright 2022 DOIO
+ * 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
+
+// OLED animation
+#include "lib/layer_status/layer_status.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,
+ _FN1,
+ _FN2
+};
+
+// enum layer_keycodes { };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │ 1 │ 2 │ 3 │ 4 │ │Ply│ │TO1│
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ 5 │ 6 │ 7 │ 8 │
+ ├───┼───┼───┼───┤
+ │ 9 │ 0 │ ↑ │Ent│ ┌───â”
+ ├───┼───┼───┼───┤ │Mut│
+ │Fn2│ ↠│ ↓ │ → │ └───┘
+ └───┴───┴───┴───┘
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │ ! │ @ │ # │ $ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ % │ ^ │ & │ * │
+ ├───┼───┼───┼───┤
+ │ ( │ ) │ │ │ ┌───â”
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 */
+ [_BASE] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_MPRV, KC_MPLY, KC_MNXT,
+ KC_5, KC_6, KC_7, KC_8, KC_PGDN, TO(_FN), KC_PGUP,
+ KC_9, KC_0, KC_UP, KC_ENT, KC_VOLD, KC_MUTE, KC_VOLU,
+ MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │ │ │ │ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ │ │ │ │
+ ├───┼───┼───┼───┤
+ │ │ │ │ │ ┌───â”
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 */
+ [_FN] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, TO(_FN1), _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+/*
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │ │ │ │ │ │ │ │ │
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │ │ │ │ │
+ ├───┼───┼───┼───┤
+ │ │ │ │ │ ┌───â”
+ ├───┼───┼───┼───┤ │ │
+ │ │ │ │ │ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 */
+ [_FN1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, TO(_FN2), _______,
+ _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+
+/*
+ ┌───┬───┬───┬───┠┌───┠┌───â”
+ │Spi│Spd│ │ │ │ │ │TO0│
+ ├───┼───┼───┼───┤ └───┘ └───┘
+ │Sai│Sad│ │ │
+ ├───┼───┼───┼───┤
+ │Tog│Mod│Hui│ │ ┌───â”
+ ├───┼───┼───┼───┤ │ │
+ │ │Vai│Hud│Vad│ └───┘
+ └───┴───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 */
+ [_FN2] = LAYOUT(
+ RGB_SPI, RGB_SPD, _______, QK_BOOT, _______, _______, _______,
+ RGB_SAI, RGB_SAD, _______, _______, _______, TO(_BASE), _______,
+ RGB_TOG, RGB_MOD, RGB_HUI, _______, _______, _______, _______,
+ _______, RGB_VAI, RGB_HUD, RGB_VAD
+ ),
+};
+
+#ifdef OLED_ENABLE
+ bool oled_task_user(void) {
+ render_layer_status();
+
+ return true;
+ }
+#endif
+
+#ifdef ENCODER_ENABLE
+
+#define ENCODERS 3
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = {{ 5, 0 }, { 5, 1 }, { 5, 2 }};
+static keypos_t encoder_ccw[ENCODERS] = {{ 6, 0 }, { 6, 1 }, { 6, 2 }};
+
+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
diff --git a/keyboards/doio/kb16/keymaps/via/rules.mk b/keyboards/doio/kb16/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/doio/kb16/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/doio/kb16/lib/glcdfont.c b/keyboards/doio/kb16/lib/glcdfont.c
new file mode 100644
index 0000000000..c0987f75cf
--- /dev/null
+++ b/keyboards/doio/kb16/lib/glcdfont.c
@@ -0,0 +1,249 @@
+/* Copyright 2022 DOIO
+ * 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/>.
+ */
+
+// 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/doio/kb16/lib/layer_status/layer_status.c b/keyboards/doio/kb16/lib/layer_status/layer_status.c
new file mode 100644
index 0000000000..657ac86ff2
--- /dev/null
+++ b/keyboards/doio/kb16/lib/layer_status/layer_status.c
@@ -0,0 +1,167 @@
+/* Copyright 2022 DOIO
+ * 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 "quantum.h"
+
+#define ANIM_SIZE 525 // number of bytes in array, minimize for adequate firmware size, max is 1024
+
+void render_layer_status(void) {
+ static const char PROGMEM layer_status[][ANIM_SIZE] = {
+ {
+ //Layer 1
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf1, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9e, 0x9e, 0x9e, 0x9e, 0x86, 0x86, 0x86,
+ 0x86, 0x86, 0xc6, 0xfe, 0xfe, 0xfe, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
+ 0x86, 0x86, 0x86, 0xf6, 0xfe, 0xfe, 0xfe, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfc, 0xfe, 0xfe, 0x3e, 0x02, 0x00,
+ 0x00, 0x80, 0xfe, 0xfe, 0xfe, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x6f, 0x61, 0x61, 0x61, 0x61,
+ 0x61, 0x61, 0x61, 0x61, 0x61, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61,
+ 0x61, 0x61, 0x79, 0x7f, 0x7f, 0x7f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0d, 0x0c, 0x0c, 0x0c,
+ 0x4c, 0x7f, 0x7f, 0x7f, 0x7f, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0x0f, 0x0f, 0x0f, 0x0f, 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, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ //Layer 2
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 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, 0x08, 0x0e, 0xfe, 0xfe, 0xff,
+ 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x61, 0x61, 0x61, 0x61, 0x79, 0x79, 0x79,
+ 0x79, 0x79, 0x39, 0x01, 0x01, 0x01, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
+ 0x86, 0x86, 0x86, 0xf6, 0xfe, 0xfe, 0xfe, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfc, 0xfe, 0xfe, 0x3e, 0x02, 0x00,
+ 0x00, 0x80, 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, 0xfc, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x80, 0x80, 0x80, 0x90, 0x9e, 0x9e, 0x9e, 0x9e,
+ 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xde, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61,
+ 0x61, 0x61, 0x79, 0x7f, 0x7f, 0x7f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0d, 0x0c, 0x0c, 0x0c,
+ 0x4c, 0x7f, 0x7f, 0x7f, 0x7f, 0x0c, 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,
+ 0x00, 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, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0x0f, 0x0f, 0x0f, 0x0f, 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, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ //Layer 3
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 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, 0x08, 0x0e, 0xfe, 0xfe, 0xff,
+ 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9e, 0x9e, 0x9e, 0x9e, 0x86, 0x86, 0x86,
+ 0x86, 0x86, 0xc6, 0xfe, 0xfe, 0xfe, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79,
+ 0x79, 0x79, 0x79, 0x09, 0x01, 0x01, 0x01, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xfc, 0xfe, 0xfe, 0x3e, 0x02, 0x00,
+ 0x00, 0x80, 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, 0xfc, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x6f, 0x61, 0x61, 0x61, 0x61,
+ 0x61, 0x61, 0x61, 0x61, 0x61, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x9f, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e,
+ 0x9e, 0x9e, 0x86, 0x80, 0x80, 0x80, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0d, 0x0c, 0x0c, 0x0c,
+ 0x4c, 0x7f, 0x7f, 0x7f, 0x7f, 0x0c, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0x0f, 0x0f, 0x0f, 0x0f, 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, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ },
+ {
+ //Layer 4
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0e, 0xfe, 0xfe, 0xff,
+ 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9e, 0x9e, 0x9e, 0x9e, 0x86, 0x86, 0x86,
+ 0x86, 0x86, 0xc6, 0xfe, 0xfe, 0xfe, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
+ 0x86, 0x86, 0x86, 0xf6, 0xfe, 0xfe, 0xfe, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x03, 0x01, 0x01, 0xc1, 0xfd, 0xff,
+ 0xff, 0x7f, 0x01, 0x01, 0x01, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x7f, 0x6f, 0x61, 0x61, 0x61, 0x61,
+ 0x61, 0x61, 0x61, 0x61, 0x61, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61,
+ 0x61, 0x61, 0x79, 0x7f, 0x7f, 0x7f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xf0, 0xf0, 0xf0, 0xf2, 0xf3, 0xf3, 0xf3,
+ 0xb3, 0x80, 0x80, 0x80, 0x80, 0xf3, 0xf3, 0xff, 0xff, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
+ }
+ };
+
+ oled_write_raw_P(layer_status[get_highest_layer(layer_state)], sizeof(layer_status[0]));
+}
diff --git a/keyboards/doio/kb16/lib/layer_status/layer_status.h b/keyboards/doio/kb16/lib/layer_status/layer_status.h
new file mode 100644
index 0000000000..a367a829d7
--- /dev/null
+++ b/keyboards/doio/kb16/lib/layer_status/layer_status.h
@@ -0,0 +1,18 @@
+/* Copyright 2022 DOIO
+ * 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/>.
+ */
+
+void render_layer_status(void);
diff --git a/keyboards/doio/kb16/lib/logo.c b/keyboards/doio/kb16/lib/logo.c
new file mode 100644
index 0000000000..7a52b479ff
--- /dev/null
+++ b/keyboards/doio/kb16/lib/logo.c
@@ -0,0 +1,61 @@
+/* Copyright 2022 DOIO
+ * 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 "quantum.h"
+
+#define ANIM_SIZE 525 // number of bytes in array, minimize for adequate firmware size, max is 1024
+
+void render_logo(void) {
+ static const char PROGMEM doio[][ANIM_SIZE] = {
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x20, 0x30, 0x10, 0x18, 0x08, 0x08,
+ 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x18, 0x10, 0x30, 0x20, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf0, 0xfc, 0x0e, 0x03, 0x01, 0x00, 0xf8, 0xf8, 0xf8, 0x38, 0x38, 0x38, 0xf0,
+ 0xf0, 0xe0, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x38, 0x38, 0x38, 0x70, 0xf0, 0xe0, 0xc0, 0x00, 0x18,
+ 0xf8, 0xf8, 0xf8, 0x18, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x38, 0x38, 0x38, 0x70, 0xf0, 0xe0, 0xc0,
+ 0x01, 0x03, 0x0e, 0xfc, 0xf8, 0x80, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xf8,
+ 0xf8, 0xf8, 0x80, 0xc0, 0xe0, 0xf0, 0x78, 0x38, 0x18, 0x00, 0xf8, 0xf8, 0xf8, 0xb8, 0xb8, 0xb8,
+ 0xf8, 0xf8, 0x70, 0x00, 0x60, 0x60, 0x70, 0x78, 0xf8, 0xf8, 0xf8, 0x00, 0xe0, 0xf0, 0xf0, 0xb8,
+ 0xb8, 0xb8, 0xb8, 0xb8, 0x30, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xe0, 0xf0, 0xf8,
+ 0x38, 0x38, 0x38, 0xf8, 0xf0, 0xe0, 0x00, 0x60, 0x60, 0x70, 0x78, 0xf8, 0xf8, 0xf8, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x0f, 0x3f, 0x70, 0xc0, 0x80, 0x00, 0x1f, 0x1f, 0x1f, 0x1c, 0x1c, 0x1c, 0x0f,
+ 0x0f, 0x07, 0x00, 0x03, 0x07, 0x0f, 0x0e, 0x1c, 0x1c, 0x1c, 0x0e, 0x0f, 0x07, 0x03, 0x00, 0x18,
+ 0x1f, 0x1f, 0x1f, 0x18, 0x00, 0x03, 0x07, 0x0f, 0x0e, 0x1c, 0x1c, 0x1c, 0x0e, 0x0f, 0x07, 0x03,
+ 0x80, 0xc0, 0x70, 0x3f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x1f,
+ 0x1f, 0x1f, 0x01, 0x03, 0x07, 0x0f, 0x1e, 0x1c, 0x18, 0x00, 0x1f, 0x1f, 0x1f, 0x1d, 0x1d, 0x1d,
+ 0x1f, 0x1f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x07, 0x0f, 0x0f, 0x1d,
+ 0x1d, 0x1d, 0x1f, 0x1f, 0x0f, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x07, 0x0f, 0x1f,
+ 0x1c, 0x1c, 0x1c, 0x1f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x04, 0x0c, 0x08, 0x18, 0x10, 0x10,
+ 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x18, 0x08, 0x0c, 0x04, 0x06, 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
+ }
+ };
+
+ oled_write_raw_P(doio[0], ANIM_SIZE);
+}
diff --git a/keyboards/doio/kb16/lib/logo.h b/keyboards/doio/kb16/lib/logo.h
new file mode 100644
index 0000000000..91d1ddce34
--- /dev/null
+++ b/keyboards/doio/kb16/lib/logo.h
@@ -0,0 +1,18 @@
+/* Copyright 2022 DOIO
+ * 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/>.
+ */
+
+void render_logo(void);
diff --git a/keyboards/doio/kb16/readme.md b/keyboards/doio/kb16/readme.md
new file mode 100644
index 0000000000..8667da41d5
--- /dev/null
+++ b/keyboards/doio/kb16/readme.md
@@ -0,0 +1,26 @@
+# KB16-01
+
+![KB16-01](https://i.imgur.com/lpq47ELh.png)
+
+A macropad that have 16-key keyboard made by DOIO, which controlled by an Atmega32u4 chipset. The keyboard features per-key RGB, 3 encoder and an OLED screen for displaying useful information.
+
+* Keyboard Maintainer: [HorrorTroll](https://github.com/HorrorTroll)
+* Hardware Supported: Atmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make doio/kb16/rev1:default
+
+Flashing example for this keyboard:
+
+ make doio/kb16/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 (1! key) and plug in the keyboard
+* **Physical reset button**: Short press the button under Spacebar keycap to enter the Bootloader and flash the firmware
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/doio/kb16/rules.mk b/keyboards/doio/kb16/rules.mk
new file mode 100644
index 0000000000..b2982c9743
--- /dev/null
+++ b/keyboards/doio/kb16/rules.mk
@@ -0,0 +1,36 @@
+SRC += lib/layer_status/layer_status.c
+SRC += lib/logo.c
+
+# 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
+
+# Additional thing to reduce compiled size
+LTO_ENABLE = yes
+SPACE_CADET_ENABLE = no
+
+# OLED enabled
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+
+# RGB Matrix enabled
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+# Encoder enabled
+ENCODER_ENABLE = yes
diff --git a/keyboards/donutcables/budget96/config.h b/keyboards/donutcables/budget96/config.h
index 39b661dda7..2f922435e6 100644
--- a/keyboards/donutcables/budget96/config.h
+++ b/keyboards/donutcables/budget96/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x4443
-#define PRODUCT_ID 0xB960
-#define DEVICE_VER 0x0200
-#define MANUFACTURER DonutCables
-#define PRODUCT Budget96
-
#define RGBLED_NUM 18
#define MATRIX_ROWS 8
@@ -32,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/donutcables/budget96/info.json b/keyboards/donutcables/budget96/info.json
index a392a9eb5e..338b3c2451 100644
--- a/keyboards/donutcables/budget96/info.json
+++ b/keyboards/donutcables/budget96/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "budget96",
+ "keyboard_name": "Budget96",
+ "manufacturer": "DonutCables",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4443",
+ "pid": "0xB960",
+ "device_version": "2.0.0"
+ },
"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":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":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":16, "y":1}, {"x":17, "y":1}, {"x":18, "y":1}, {"x":0, "y":2, "w":1.5}, {"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}, {"x":13.5, "y":2, "w":1.5}, {"x":15, "y":2}, {"x":16, "y":2}, {"x":17, "y":2}, {"x":18, "y":2}, {"x":0, "y":3, "w":1.75}, {"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}, {"x":13.75, "y":3, "w":1.25}, {"x":15, "y":3}, {"x":16, "y":3}, {"x":17, "y":3}, {"x":18, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":1.25, "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}, {"x":12.25, "y":4, "w":1.75}, {"x":14, "y":4}, {"x":15, "y":4}, {"x":16, "y":4}, {"x":17, "y":4}, {"x":18, "y":4}, {"x":0, "y":5, "w":1.25}, {"x":1.25, "y":5, "w":1.25}, {"x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"x":10, "y":5}, {"x":11, "y":5}, {"x":12, "y":5}, {"x":13, "y":5}, {"x":14, "y":5}, {"x":15, "y":5}, {"x":16, "y":5}, {"x":17, "y":5}, {"x":18, "y":5}]
diff --git a/keyboards/donutcables/budget96/keymaps/donut/keymap.c b/keyboards/donutcables/budget96/keymaps/donut/keymap.c
index 53e77437ff..3da74bb153 100644
--- a/keyboards/donutcables/budget96/keymaps/donut/keymap.c
+++ b/keyboards/donutcables/budget96/keymaps/donut/keymap.c
@@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* (3) Fn 2 */
[_FN2] = LAYOUT_96_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, UC_M_WC, 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, UC_M_WC, EEP_RST, QK_BOOT,
VLK_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, KC_NO, KC_NO,
RGB_TOG, RGB_MOD, 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, KC_NO, KC_NO, KC_NO,
KC_TRNS, RGB_RMOD, 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,
diff --git a/keyboards/donutcables/scrabblepad/config.h b/keyboards/donutcables/scrabblepad/config.h
index 2c6c704bde..2d16e78457 100644
--- a/keyboards/donutcables/scrabblepad/config.h
+++ b/keyboards/donutcables/scrabblepad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4443
-#define PRODUCT_ID 0x21D7
-#define DEVICE_VER 0x0100
-#define MANUFACTURER DonutCables
-#define PRODUCT ScrabblePad
-
/* key matrix size */
#define MATRIX_ROWS 15
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D5, F1, C7, F2, C6, F3, C5, F4, C4, F5, C3, F6, C2, F7, C1 }
#define MATRIX_COL_PINS { D6, D7, E0, E1, B7, D2, D3, D4, C0, B4, B5, B6, F0, E6, E7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/donutcables/scrabblepad/info.json b/keyboards/donutcables/scrabblepad/info.json
index e4579f58ff..513aea53aa 100644
--- a/keyboards/donutcables/scrabblepad/info.json
+++ b/keyboards/donutcables/scrabblepad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "scrabblepad",
+ "keyboard_name": "ScrabblePad",
+ "manufacturer": "DonutCables",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4443",
+ "pid": "0x21D7",
+ "device_version": "1.0.0"
+ },
"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":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}, {"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}, {"x":14, "y":5}, {"x":0, "y":6}, {"x":1, "y":6}, {"x":2, "y":6}, {"x":3, "y":6}, {"x":4, "y":6}, {"x":5, "y":6}, {"x":6, "y":6}, {"x":7, "y":6}, {"x":8, "y":6}, {"x":9, "y":6}, {"x":10, "y":6}, {"x":11, "y":6}, {"x":12, "y":6}, {"x":13, "y":6}, {"x":14, "y":6}, {"x":0, "y":7}, {"x":1, "y":7}, {"x":2, "y":7}, {"x":3, "y":7}, {"x":4, "y":7}, {"x":5, "y":7}, {"x":6, "y":7}, {"x":7, "y":7}, {"x":8, "y":7}, {"x":9, "y":7}, {"x":10, "y":7}, {"x":11, "y":7}, {"x":12, "y":7}, {"x":13, "y":7}, {"x":14, "y":7}, {"x":0, "y":8}, {"x":1, "y":8}, {"x":2, "y":8}, {"x":3, "y":8}, {"x":4, "y":8}, {"x":5, "y":8}, {"x":6, "y":8}, {"x":7, "y":8}, {"x":8, "y":8}, {"x":9, "y":8}, {"x":10, "y":8}, {"x":11, "y":8}, {"x":12, "y":8}, {"x":13, "y":8}, {"x":14, "y":8}, {"x":0, "y":9}, {"x":1, "y":9}, {"x":2, "y":9}, {"x":3, "y":9}, {"x":4, "y":9}, {"x":5, "y":9}, {"x":6, "y":9}, {"x":7, "y":9}, {"x":8, "y":9}, {"x":9, "y":9}, {"x":10, "y":9}, {"x":11, "y":9}, {"x":12, "y":9}, {"x":13, "y":9}, {"x":14, "y":9}, {"x":0, "y":10}, {"x":1, "y":10}, {"x":2, "y":10}, {"x":3, "y":10}, {"x":4, "y":10}, {"x":5, "y":10}, {"x":6, "y":10}, {"x":7, "y":10}, {"x":8, "y":10}, {"x":9, "y":10}, {"x":10, "y":10}, {"x":11, "y":10}, {"x":12, "y":10}, {"x":13, "y":10}, {"x":14, "y":10}, {"x":0, "y":11}, {"x":1, "y":11}, {"x":2, "y":11}, {"x":3, "y":11}, {"x":4, "y":11}, {"x":5, "y":11}, {"x":6, "y":11}, {"x":7, "y":11}, {"x":8, "y":11}, {"x":9, "y":11}, {"x":10, "y":11}, {"x":11, "y":11}, {"x":12, "y":11}, {"x":13, "y":11}, {"x":14, "y":11}, {"x":0, "y":12}, {"x":1, "y":12}, {"x":2, "y":12}, {"x":3, "y":12}, {"x":4, "y":12}, {"x":5, "y":12}, {"x":6, "y":12}, {"x":7, "y":12}, {"x":8, "y":12}, {"x":9, "y":12}, {"x":10, "y":12}, {"x":11, "y":12}, {"x":12, "y":12}, {"x":13, "y":12}, {"x":14, "y":12}, {"x":0, "y":13}, {"x":1, "y":13}, {"x":2, "y":13}, {"x":3, "y":13}, {"x":4, "y":13}, {"x":5, "y":13}, {"x":6, "y":13}, {"x":7, "y":13}, {"x":8, "y":13}, {"x":9, "y":13}, {"x":10, "y":13}, {"x":11, "y":13}, {"x":12, "y":13}, {"x":13, "y":13}, {"x":14, "y":13}, {"x":0, "y":14}, {"x":1, "y":14}, {"x":2, "y":14}, {"x":3, "y":14}, {"x":4, "y":14}, {"x":5, "y":14}, {"x":6, "y":14}, {"x":7, "y":14}, {"x":8, "y":14}, {"x":9, "y":14}, {"x":10, "y":14}, {"x":11, "y":14}, {"x":12, "y":14}, {"x":13, "y":14}, {"x":14, "y":14}]
diff --git a/keyboards/donutcables/scrabblepad/keymaps/random/keymap.c b/keyboards/donutcables/scrabblepad/keymaps/random/keymap.c
index bc07a619cd..025a506188 100644
--- a/keyboards/donutcables/scrabblepad/keymaps/random/keymap.c
+++ b/keyboards/donutcables/scrabblepad/keymaps/random/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, 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, QK_BOOT, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY, RND_KEY,
RND_KEY, RND_KEY, RND_KEY, 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/doodboard/duckboard/config.h b/keyboards/doodboard/duckboard/config.h
index 80c9411165..853d997094 100644
--- a/keyboards/doodboard/duckboard/config.h
+++ b/keyboards/doodboard/duckboard/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4442
-#define PRODUCT_ID 0xFF44
-#define DEVICE_VER 0x0001
-#define MANUFACTURER doodboard
-#define PRODUCT duckboard
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 5
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { F5 }
#define ENCODERS_PAD_B { F6 }
diff --git a/keyboards/doodboard/duckboard/info.json b/keyboards/doodboard/duckboard/info.json
index 69dde7790d..465dcec611 100644
--- a/keyboards/doodboard/duckboard/info.json
+++ b/keyboards/doodboard/duckboard/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "duckboard",
+ "manufacturer": "doodboard",
"url": "https://doodboard.xyz/",
"maintainer": "doodboard",
+ "usb": {
+ "vid": "0x4442",
+ "pid": "0xFF44",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/doodboard/duckboard_r2/config.h b/keyboards/doodboard/duckboard_r2/config.h
index 10ed3c4cab..23b255b7d9 100644
--- a/keyboards/doodboard/duckboard_r2/config.h
+++ b/keyboards/doodboard/duckboard_r2/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4442
-#define PRODUCT_ID 0x6462
-#define DEVICE_VER 0x0001
-#define MANUFACTURER doodboard
-#define PRODUCT duckboard
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 5
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { F6 }
#define ENCODERS_PAD_B { F5 }
diff --git a/keyboards/doodboard/duckboard_r2/info.json b/keyboards/doodboard/duckboard_r2/info.json
index 5a774a6e51..f877a63a0c 100644
--- a/keyboards/doodboard/duckboard_r2/info.json
+++ b/keyboards/doodboard/duckboard_r2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "duckboard",
+ "manufacturer": "doodboard",
"url": "https://doodboard.xyz/",
"maintainer": "doodboard",
+ "usb": {
+ "vid": "0x4442",
+ "pid": "0x6462",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/doppelganger/config.h b/keyboards/doppelganger/config.h
index 39e29e7c15..5570cdf9bb 100644
--- a/keyboards/doppelganger/config.h
+++ b/keyboards/doppelganger/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4447
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT Doppelganger
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 9
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { E6, F1, C7, F7, F6 }
#define MATRIX_COL_PINS { F4, F0, B7, B3, B2, B1, D5, D3, D2 }
-#define UNUSED_PINS
#define MATRIX_ROW_PINS_RIGHT { D7, D6, D4, E6, B5 }
#define MATRIX_COL_PINS_RIGHT { F1, F0, F4, F5, F6, F7, C7, C6, B6 }
diff --git a/keyboards/doppelganger/doppelganger.c b/keyboards/doppelganger/doppelganger.c
index 04d19480da..304d764028 100644
--- a/keyboards/doppelganger/doppelganger.c
+++ b/keyboards/doppelganger/doppelganger.c
@@ -15,25 +15,31 @@
*/
#include "doppelganger.h"
-void keyboard_pre_init_kb (void) {
- setPinOutput(C6);
- setPinOutput(B0);
+void keyboard_pre_init_kb(void) {
+ setPinOutput(C6);
+ setPinOutput(B0);
}
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(C6, !led_state.caps_lock);
- }
- return res;
+ 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(C6, !led_state.caps_lock);
+ }
+ return res;
}
__attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) {
- writePin(B0, !(state & (1UL << 1)));
- return state;
+ writePin(B0, !(state & (1UL << 1)));
+ return state;
+}
+
+// Override core logic as we reuse SPLIT_HAND_PIN within matrix pins
+bool is_keyboard_left(void) {
+ setPinInput(SPLIT_HAND_PIN);
+ return readPin(SPLIT_HAND_PIN);
}
diff --git a/keyboards/doppelganger/info.json b/keyboards/doppelganger/info.json
index 7200fab68f..e1edf3d77d 100644
--- a/keyboards/doppelganger/info.json
+++ b/keyboards/doppelganger/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Doppelganger",
+ "manufacturer": "Yiancar-Designs",
"url": "",
"maintainer": "yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4447",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"F1", "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":10.5, "y":0}, {"label":"8", "x":11.5, "y":0}, {"label":"9", "x":12.5, "y":0}, {"label":"0", "x":13.5, "y":0}, {"label":"_", "x":14.5, "y":0}, {"label":"+", "x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":17.5, "y":0}, {"label":"F2", "x":0, "y":1}, {"label":"F3", "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":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":"Pg Up", "x":19, "y":1}, {"label":"F4", "x":0, "y":2}, {"label":"F5", "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":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":"~", "x":16.25, "y":2}, {"label":"Enter", "x":17.25, "y":2, "w":1.25}, {"label":"Pg Dn", "x":19, "y":2}, {"label":"F6", "x":0, "y":3}, {"label":"F7", "x":1, "y":3}, {"label":"Shift", "x":2.5, "y":3, "w":1.25}, {"label":"|", "x":3.75, "y":3}, {"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":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":"Up", "x":17.75, "y":3.25}, {"label":"Fn", "x":19, "y":3}, {"label":"F8", "x":0, "y":4}, {"label":"F9", "x":1, "y":4}, {"label":"Ctrl", "x":2.5, "y":4, "w":1.25}, {"label":"Win", "x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":2.25}, {"x":8.25, "y":4}, {"x":10.25, "y":4, "w":2.75}, {"label":"Alt", "x":13, "y":4, "w":1.25}, {"x":14.25, "y":4}, {"label":"Win", "x":15.25, "y":4, "w":1.25}, {"label":"Left", "x":16.75, "y":4.25}, {"label":"Down", "x":17.75, "y":4.25}, {"label":"Right", "x":18.75, "y":4.25}]
diff --git a/keyboards/doro67/multi/config.h b/keyboards/doro67/multi/config.h
index bd4bd7a5ba..8032184f99 100644
--- a/keyboards/doro67/multi/config.h
+++ b/keyboards/doro67/multi/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4250 // BP for Backprop
-#define PRODUCT_ID 0x4D4C // ML for Multi
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Backprop Studio
-#define PRODUCT Doro67 Multi PCB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/doro67/multi/info.json b/keyboards/doro67/multi/info.json
index 24a7982437..1918da8300 100644
--- a/keyboards/doro67/multi/info.json
+++ b/keyboards/doro67/multi/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Doro67 Multi PCB",
+ "keyboard_name": "Doro67 Multi",
+ "manufacturer": "Backprop Studio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4250",
+ "pid": "0x4D4C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"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":"Ins", "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":"Del", "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}, {"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/doro67/regular/config.h b/keyboards/doro67/regular/config.h
index c778ed7a08..5b1424ae40 100644
--- a/keyboards/doro67/regular/config.h
+++ b/keyboards/doro67/regular/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4250 // BP for Backprop
-#define PRODUCT_ID 0x5245 // RE for Regular
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Backprop Studio
-#define PRODUCT Doro67 Regular PCB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/doro67/regular/info.json b/keyboards/doro67/regular/info.json
index 34120a1663..37de426024 100644
--- a/keyboards/doro67/regular/info.json
+++ b/keyboards/doro67/regular/info.json
@@ -1,5 +1,12 @@
{
+ "keyboard_name": "Doro67",
+ "manufacturer": "Backprop Studio",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4250",
+ "pid": "0x5245",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/doro67/rgb/config.h b/keyboards/doro67/rgb/config.h
index b2d26b29ae..dfd0cde6d8 100644
--- a/keyboards/doro67/rgb/config.h
+++ b/keyboards/doro67/rgb/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4250 // BP for Backprop
-#define PRODUCT_ID 0x5247 // RG for RGB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Backprop Studio
-#define PRODUCT Doro67 RGB PCB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, D4, D6, D7, B4, B5, B6, C6, C7, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/doro67/rgb/info.json b/keyboards/doro67/rgb/info.json
index f7895ce55b..7f4e0252a0 100644
--- a/keyboards/doro67/rgb/info.json
+++ b/keyboards/doro67/rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Doro 67 RGB",
+ "keyboard_name": "Doro67 RGB",
+ "manufacturer": "Backprop Studio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4250",
+ "pid": "0x5247",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/dp60/config.h b/keyboards/dp60/config.h
index f4a44206f4..ad7fee9009 100644
--- a/keyboards/dp60/config.h
+++ b/keyboards/dp60/config.h
@@ -17,17 +17,9 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x60BE
-#define PRODUCT_ID 0x00BE
-#define DEVICE_VER 0x0001
-#define MANUFACTURER astro
-#define PRODUCT DP60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/dp60/info.json b/keyboards/dp60/info.json
index e5c7bbfeed..783999f8ed 100644
--- a/keyboards/dp60/info.json
+++ b/keyboards/dp60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "rgb60",
+ "keyboard_name": "DP60",
+ "manufacturer": "astro",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x60BE",
+ "pid": "0x00BE",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_60_wkl": "LAYOUT_60_ansi_tsangan_split_rshift",
"LAYOUT_60_wkl_split_bs": "LAYOUT_60_tsangan_hhkb"
diff --git a/keyboards/dp60/keymaps/allleds/keymap.c b/keyboards/dp60/keymaps/allleds/keymap.c
index 66cc628d4c..3d49bd268f 100644
--- a/keyboards/dp60/keymaps/allleds/keymap.c
+++ b/keyboards/dp60/keymaps/allleds/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = 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_PSCR,
- RESET, RGB_TOG,RGB_MOD,_______,KC_F13,KC_F14,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,
+ QK_BOOT, RGB_TOG,RGB_MOD,_______,KC_F13,KC_F14,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,
_______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN, KC_UP,KC_RIGHT,KC_HOME,KC_END,_______,
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______, _______, _______,_______,TG(0),_______),
diff --git a/keyboards/dp60/keymaps/indicator/keymap.c b/keyboards/dp60/keymaps/indicator/keymap.c
index 170d4eb954..0cfe07f3ae 100644
--- a/keyboards/dp60/keymaps/indicator/keymap.c
+++ b/keyboards/dp60/keymaps/indicator/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_60_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_PSCR,
- RESET, RGB_TOG,RGB_MOD,_______,KC_F13,KC_F14,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,
+ QK_BOOT, RGB_TOG,RGB_MOD,_______,KC_F13,KC_F14,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,
KC_CAPS, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN, KC_UP,KC_RIGHT,KC_HOME,KC_END,_______,
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______, _______, _______,_______),
diff --git a/keyboards/draculad/config.h b/keyboards/draculad/config.h
index 3060f801c6..c4a3f82117 100644
--- a/keyboards/draculad/config.h
+++ b/keyboards/draculad/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x1B1E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER mangoiv
-#define PRODUCT draculad
-
#define MATRIX_ROWS 8
#define MATRIX_COLS 5
@@ -63,7 +57,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENCODER_RESOLUTIONS { 4, 4 }
#define ENCODER_RESOLUTIONS_RIGHT { 4, 1 }
-#define UNUSED_PINS
#define EE_HANDS
diff --git a/keyboards/draculad/info.json b/keyboards/draculad/info.json
index 351ebb58fc..177092d5a3 100644
--- a/keyboards/draculad/info.json
+++ b/keyboards/draculad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "DracuLad",
+ "manufacturer": "MangoIV",
"url": "",
"maintainer": "MangoIV",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1B1E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/draculad/keymaps/manna-harbour_miryoku/config.h b/keyboards/draculad/keymaps/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..0a8de54ae5
--- /dev/null
+++ b/keyboards/draculad/keymaps/manna-harbour_miryoku/config.h
@@ -0,0 +1,22 @@
+// Copyright 2022 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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( \
+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, \
+ XXX, XXX, \
+ K32, K33, K34, K35, K36, K37 \
+)
diff --git a/keyboards/draculad/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/draculad/keymaps/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..dbab7f9820
--- /dev/null
+++ b/keyboards/draculad/keymaps/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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/draculad/keymaps/pimoroni/keymap.c b/keyboards/draculad/keymaps/pimoroni/keymap.c
index 5c20c69af9..a98c47fd39 100644
--- a/keyboards/draculad/keymaps/pimoroni/keymap.c
+++ b/keyboards/draculad/keymaps/pimoroni/keymap.c
@@ -47,7 +47,7 @@ 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_TAB, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_QUOT,
- KC_LSFT, XXXXXXX, KC_MPRV, KC_MNXT, RESET, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT,
+ KC_LSFT, XXXXXXX, KC_MPRV, KC_MNXT, QK_BOOT, KC_HOME, KC_END, KC_PGUP, KC_PGDN, KC_RSFT,
XXXXXXX, KC_NO,
KC_LCTL, KC_LALT, XXXXXXX, KC_NO, _______, KC_ENT
),
@@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
[_ADJ] = LAYOUT(
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BALL_HUI, BALL_WHT, BALL_DEC, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BALL_HUI, BALL_WHT, BALL_DEC, XXXXXXX, XXXXXXX,
EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______,
XXXXXXX, _______,
diff --git a/keyboards/draytronics/daisy/config.h b/keyboards/draytronics/daisy/config.h
index fa04b0d41c..3e0895cff3 100644
--- a/keyboards/draytronics/daisy/config.h
+++ b/keyboards/draytronics/daisy/config.h
@@ -20,12 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x4454 //DT for DrayTronics
-#define PRODUCT_ID 0x4441 //DA for Daisy
-#define DEVICE_VER 0x0100 //Version 1
-#define MANUFACTURER Draytronics
-#define PRODUCT DAISY
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 4
@@ -43,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B0, C0, C1}
#define MATRIX_COL_PINS { C2, C3, C4, C5 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { B1, D0 }
#define ENCODERS_PAD_B { B2, D1 }
diff --git a/keyboards/draytronics/daisy/info.json b/keyboards/draytronics/daisy/info.json
index bb20b0c9bf..80f9da0e59 100644
--- a/keyboards/draytronics/daisy/info.json
+++ b/keyboards/draytronics/daisy/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Draytronics DAISY",
+ "keyboard_name": "DAISY",
+ "manufacturer": "Draytronics",
"url": "https://www.draytronics.co.uk/daisy",
"maintainer": "ghostseven",
+ "usb": {
+ "vid": "0x4454",
+ "pid": "0x4441",
+ "device_version": "1.0.0"
+ },
"layout_aliases": {
"LAYOUT_daisy": "LAYOUT"
},
diff --git a/keyboards/draytronics/elise/config.h b/keyboards/draytronics/elise/config.h
index f5fde6987e..309b68039f 100644
--- a/keyboards/draytronics/elise/config.h
+++ b/keyboards/draytronics/elise/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4454 //DT for DrayTronics
-#define PRODUCT_ID 0x454C //EL for Elise
-#define DEVICE_VER 0x0100 //Version 1
-#define MANUFACTURER Draytronics
-#define PRODUCT ELISE
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B2,B3, B1, F0, F1}
#define MATRIX_COL_PINS { F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D2, D3, D5}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/draytronics/elise/info.json b/keyboards/draytronics/elise/info.json
index 6393dbfab5..2ff8a98db8 100644
--- a/keyboards/draytronics/elise/info.json
+++ b/keyboards/draytronics/elise/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Draytronics ELISE",
+ "keyboard_name": "ELISE",
+ "manufacturer": "Draytronics",
"url": "https://www.draytronics.co.uk/elise",
"maintainer": "ghostseven",
+ "usb": {
+ "vid": "0x4454",
+ "pid": "0x454C",
+ "device_version": "1.0.0"
+ },
"layout_aliases": {
"LAYOUT_65_ansi_right_lrg": "LAYOUT_65_ansi_rwkl",
"LAYOUT_65_ansi_left_lrg": "LAYOUT_65_ansi_lwkl",
diff --git a/keyboards/draytronics/elise/keymaps/blake_iso/keymap.c b/keyboards/draytronics/elise/keymaps/blake_iso/keymap.c
index 65e0629e1d..c8a0ecd959 100644
--- a/keyboards/draytronics/elise/keymaps/blake_iso/keymap.c
+++ b/keyboards/draytronics/elise/keymaps/blake_iso/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,----------------------------------------------------------------.
* |~ `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| Delete| Ins|
* |----------------------------------------------------------------|
- * |RESET| | ↑ | | | | | | | | | | | | |
+ * |QK_BOOT| | ↑ | | | | | | | | | | | | |
* |------------------------------------------------------- -----|
* | | ↠| ↓ | → | | | | | | | | | | | |
* |----------------------------------------------------------------|
@@ -60,7 +60,7 @@ 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, KC_DEL, KC_INS,
- RESET, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLU, KC_MUTE,
RGB_HUD, RGB_SAD, RGB_VAD, RGB_TOG, _______, _______, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
diff --git a/keyboards/draytronics/elise_v2/config.h b/keyboards/draytronics/elise_v2/config.h
index 931125e117..d4e4e2dc28 100644
--- a/keyboards/draytronics/elise_v2/config.h
+++ b/keyboards/draytronics/elise_v2/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4454 //DT for DrayTronics
-#define PRODUCT_ID 0x454C //EL for Elise
-#define DEVICE_VER 0x0200 //Version 2
-#define MANUFACTURER Draytronics
-#define PRODUCT ELISE
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B2,B3, B1, F0, F1}
#define MATRIX_COL_PINS { F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D2, D3, D5}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/draytronics/elise_v2/info.json b/keyboards/draytronics/elise_v2/info.json
index 9e391ad1db..f4477680d1 100644
--- a/keyboards/draytronics/elise_v2/info.json
+++ b/keyboards/draytronics/elise_v2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Draytronics ELISE V2",
+ "keyboard_name": "ELISE",
+ "manufacturer": "Draytronics",
"url": "https://www.draytronics.co.uk/elisev2",
"maintainer": "ghostseven",
+ "usb": {
+ "vid": "0x4454",
+ "pid": "0x454C",
+ "device_version": "2.0.0"
+ },
"layout_aliases": {
"LAYOUT_65_ansi_right_lrg": "LAYOUT_65_ansi_rwkl",
"LAYOUT_65_ansi_left_lrg": "LAYOUT_65_ansi_lwkl",
diff --git a/keyboards/draytronics/elise_v2/keymaps/blake_iso/keymap.c b/keyboards/draytronics/elise_v2/keymaps/blake_iso/keymap.c
index 65e0629e1d..c8a0ecd959 100644
--- a/keyboards/draytronics/elise_v2/keymaps/blake_iso/keymap.c
+++ b/keyboards/draytronics/elise_v2/keymaps/blake_iso/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,----------------------------------------------------------------.
* |~ `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| Delete| Ins|
* |----------------------------------------------------------------|
- * |RESET| | ↑ | | | | | | | | | | | | |
+ * |QK_BOOT| | ↑ | | | | | | | | | | | | |
* |------------------------------------------------------- -----|
* | | ↠| ↓ | → | | | | | | | | | | | |
* |----------------------------------------------------------------|
@@ -60,7 +60,7 @@ 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, KC_DEL, KC_INS,
- RESET, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLU, KC_MUTE,
RGB_HUD, RGB_SAD, RGB_VAD, RGB_TOG, _______, _______, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
diff --git a/keyboards/draytronics/scarlet/config.h b/keyboards/draytronics/scarlet/config.h
index 9c4db29ac6..4d55960783 100644
--- a/keyboards/draytronics/scarlet/config.h
+++ b/keyboards/draytronics/scarlet/config.h
@@ -20,11 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x4454 //DT for DrayTronics
-#define PRODUCT_ID 0x5343 //SC for Scarlet
-#define DEVICE_VER 0x0001 //Version 1
-#define MANUFACTURER Draytronics
-#define PRODUCT SCARLET
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4 }
#define MATRIX_COL_PINS { A5, A6, A7, C7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/draytronics/scarlet/info.json b/keyboards/draytronics/scarlet/info.json
index 2e3f4f4b88..95b225f614 100644
--- a/keyboards/draytronics/scarlet/info.json
+++ b/keyboards/draytronics/scarlet/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Draytronics SCARLET",
+ "keyboard_name": "SCARLET",
+ "manufacturer": "Draytronics",
"url": "https://www.draytronics.co.uk/scarlet",
"maintainer": "ghostseven",
+ "usb": {
+ "vid": "0x4454",
+ "pid": "0x5343",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_5x4": {
"layout": [
diff --git a/keyboards/drewkeys/iskar/config.h b/keyboards/drewkeys/iskar/config.h
index 956456201f..3f5504ba5a 100644
--- a/keyboards/drewkeys/iskar/config.h
+++ b/keyboards/drewkeys/iskar/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xDE43
-#define PRODUCT_ID 0x1284
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Drewkeys
-#define PRODUCT Iskar
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#define MATRIX_ROW_PINS { D6, D7, B4, B5, D4 }
#define MATRIX_COL_PINS { B6, C6, C7, F6, F5, F4, F7, F1, F0, E6, B7, D0, D1, D2, D3, D5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/drewkeys/iskar/info.json b/keyboards/drewkeys/iskar/info.json
index 0505fece10..431b38b345 100644
--- a/keyboards/drewkeys/iskar/info.json
+++ b/keyboards/drewkeys/iskar/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Iskar",
+ "manufacturer": "Drewkeys",
"url": "https://bitmapstudio.xyz/collections/iskar",
"maintainer": "Drewkeys",
+ "usb": {
+ "vid": "0xDE43",
+ "pid": "0x1284",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/drhigsby/bkf/config.h b/keyboards/drhigsby/bkf/config.h
index af1b2be747..b5b1914f4e 100644
--- a/keyboards/drhigsby/bkf/config.h
+++ b/keyboards/drhigsby/bkf/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define MANUFACTURER DrHigsby
-#define PRODUCT BKF - Base Kit Forty
-#define VENDOR_ID 0x0007
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F6, F7, B1, B3 }
#define MATRIX_COL_PINS { B6, B2, D3, D2, D1, D0, D4, C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* Define encoder pads */
#define ENCODERS_PAD_A { F4 }
diff --git a/keyboards/drhigsby/bkf/info.json b/keyboards/drhigsby/bkf/info.json
index c7b109d651..920877f28d 100644
--- a/keyboards/drhigsby/bkf/info.json
+++ b/keyboards/drhigsby/bkf/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BKF - Base Kit Forty",
+ "manufacturer": "DrHigsby",
"url": "http://www.keyboard-layout-editor.com/#/gists/8a9ebae3a5f3f601bb928f7265db0e2e",
"maintainer": "drhigsby",
+ "usb": {
+ "vid": "0x0007",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_625uC": {
"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":6.25}, {"label":"Alt", "x":10, "y":3, "w":1.25}, {"label":"Win", "x":11.25, "y":3}, {"label":"Menu", "x":12.25, "y":3, "w":1.25}]
diff --git a/keyboards/drhigsby/dubba175/config.h b/keyboards/drhigsby/dubba175/config.h
index 2eab0e2693..c1e15170dc 100644
--- a/keyboards/drhigsby/dubba175/config.h
+++ b/keyboards/drhigsby/dubba175/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define MANUFACTURER DrHigsby
-#define PRODUCT Dubba175
-#define VENDOR_ID 0x0420
-#define PRODUCT_ID 0x0420
-#define DEVICE_VER 0x0420
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -42,7 +35,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B1, B3, B2, B5 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/drhigsby/dubba175/info.json b/keyboards/drhigsby/dubba175/info.json
index e2830ff4c2..af62239030 100644
--- a/keyboards/drhigsby/dubba175/info.json
+++ b/keyboards/drhigsby/dubba175/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "dubba175",
+ "keyboard_name": "Dubba175",
+ "manufacturer": "DrHigsby",
"url": "http://www.keyboard-layout-editor.com/#/gists/3185de74dfb973bf6d42e785994cfd4e",
"maintainer": "drhigsby",
+ "usb": {
+ "vid": "0x0420",
+ "pid": "0x0420",
+ "device_version": "4.2.0"
+ },
"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":7, "y":0}, {"label":"", "x":8, "y":0}, {"label":"", "x":9, "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":0, "y":2}, {"label":"", "x":1, "y":2}, {"label":"", "x":2, "y":2}, {"label":"", "x":3, "y":2}, {"label":"", "x":4, "y":2}, {"label":"", "x":5, "y":2}, {"label":"", "x":6, "y":2}, {"label":"<", "x":7, "y":2}, {"label":">", "x":8, "y":2}, {"label":"", "x":9, "y":2}, {"label":"", "x":1.25, "y":3}, {"label":"", "x":2.25, "y":3}, {"label":"", "x":3.25, "y":3, "w":1.75}, {"x":5, "y":3, "w":1.75}, {"label":"", "x":6.75, "y":3}, {"label":"", "x":7.75, "y":3}]
diff --git a/keyboards/drhigsby/ogurec/config.h b/keyboards/drhigsby/ogurec/config.h
index c5605ca645..a6e01fdb78 100644
--- a/keyboards/drhigsby/ogurec/config.h
+++ b/keyboards/drhigsby/ogurec/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define MANUFACTURER DrHigsby
-#define PRODUCT ogurec
-#define VENDOR_ID 0x0007
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F6, B6, B2 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, F4, F5 }
-#define UNUSED_PINS { F7, B1, B3 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/drhigsby/ogurec/info.json b/keyboards/drhigsby/ogurec/info.json
index 1cb6823f95..f6cda513fb 100644
--- a/keyboards/drhigsby/ogurec/info.json
+++ b/keyboards/drhigsby/ogurec/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ogurec",
+ "manufacturer": "DrHigsby",
"url": "http://www.keyboard-layout-editor.com/#/gists/f1bda3a87822868599cf6e3c4340f594",
"maintainer": "drhigsby",
+ "usb": {
+ "vid": "0x0007",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_3x12": {
"layout": [
diff --git a/keyboards/drhigsby/packrat/config.h b/keyboards/drhigsby/packrat/config.h
index c69ecdafcb..b55f36c222 100644
--- a/keyboards/drhigsby/packrat/config.h
+++ b/keyboards/drhigsby/packrat/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define MANUFACTURER DrHigsby
-#define PRODUCT Packrat
-#define VENDOR_ID 0x0007
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
@@ -42,7 +35,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F7, B1, B6, B2 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B3 }
-#define UNUSED_PINS { F6 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/drhigsby/packrat/info.json b/keyboards/drhigsby/packrat/info.json
index e4e3d869f1..43ed4e432c 100644
--- a/keyboards/drhigsby/packrat/info.json
+++ b/keyboards/drhigsby/packrat/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "packrat",
+ "manufacturer": "DrHigsby",
"url": "http://www.keyboard-layout-editor.com/#/gists/43d838a3b2e0344d75dd67abfc508038",
"maintainer": "drhigsby",
+ "usb": {
+ "vid": "0x0007",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_3uc": {
"layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"KNOB!", "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":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"Any", "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":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"Any", "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":"Ctrl", "x":0.5, "y":3, "w":1.25}, {"label":"Alt", "x":1.75, "y":3, "w":1.25}, {"label":"Raise", "x":3, "y":3}, {"label":"", "x":4, "y":3, "w":3}, {"label":"Lower", "x":7, "y":3}, {"label":"Win", "x":8, "y":3, "w":1.25}, {"label":"Fn", "x":9.25, "y":3, "w":1.25}]
diff --git a/keyboards/drhigsby/packrat/readme.md b/keyboards/drhigsby/packrat/readme.md
index 98b12543dc..f11feeec95 100644
--- a/keyboards/drhigsby/packrat/readme.md
+++ b/keyboards/drhigsby/packrat/readme.md
@@ -22,4 +22,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/drop/sense75/board.h b/keyboards/drop/sense75/board.h
new file mode 100644
index 0000000000..fc227f69b1
--- /dev/null
+++ b/keyboards/drop/sense75/board.h
@@ -0,0 +1,8 @@
+// Copyright 2022 Massdrop, Inc.
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include_next "board.h"
+
+#undef STM32_HSECLK
+#define STM32_HSECLK 16000000U
diff --git a/keyboards/drop/sense75/config.h b/keyboards/drop/sense75/config.h
new file mode 100644
index 0000000000..b0196d0c44
--- /dev/null
+++ b/keyboards/drop/sense75/config.h
@@ -0,0 +1,67 @@
+// Copyright 2022 Massdrop, Inc.
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
+
+#define EXTERNAL_EEPROM_I2C_BASE_ADDRESS 0b10101000
+#define EXTERNAL_EEPROM_WP_PIN B7
+#define EEPROM_I2C_24LC256
+
+#ifdef RGB_MATRIX_ENABLE
+# define DRIVER_ADDR_1 0b1010000
+# define DRIVER_ADDR_2 0b1011111
+# define DRIVER_COUNT 2
+# define DRIVER_LED_TOTAL (58 + 53)
+# define ISSI_PWM_FREQUENCY 0b010 // 26k
+
+# define RGB_DISABLE_TIMEOUT 0
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_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_PIXEL_FRACTAL
+# define ENABLE_RGB_MATRIX_PIXEL_FLOW
+# define ENABLE_RGB_MATRIX_PIXEL_RAIN
+# define ENABLE_RGB_MATRIX_HUE_PENDULUM
+# define ENABLE_RGB_MATRIX_HUE_WAVE
+# 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/drop/sense75/halconf.h b/keyboards/drop/sense75/halconf.h
new file mode 100644
index 0000000000..b11f12ade7
--- /dev/null
+++ b/keyboards/drop/sense75/halconf.h
@@ -0,0 +1,7 @@
+// Copyright 2022 Massdrop, Inc.
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/drop/sense75/info.json b/keyboards/drop/sense75/info.json
new file mode 100644
index 0000000000..8fd65c1bd7
--- /dev/null
+++ b/keyboards/drop/sense75/info.json
@@ -0,0 +1,235 @@
+{
+ "keyboard_name": "SENSE75",
+ "manufacturer": "Drop Inc.",
+ "maintainer": "zvecr",
+ "processor": "STM32F303",
+ "bootloader": "stm32-dfu",
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "cols": ["C15", "C14", "C13", "C12", "C11", "C10", "C9", "C8", "C7", "C6", "C5", "C4", "C3", "C2", "C1"],
+ "rows": ["B15", "B14", "B13", "B12", "B11", "B10"]
+ },
+ "usb": {
+ "vid": "0x359B",
+ "pid": "0x0001",
+ "device_version": "1.0.0"
+ },
+ "features": {
+ "rgb_matrix": true,
+ "encoder": true,
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "matrix": [0, 0], "label":"Esc", "x":0, "y":0},
+ { "matrix": [0, 1], "label":"F1", "x":1.25, "y":0},
+ { "matrix": [0, 2], "label":"F2", "x":2.25, "y":0},
+ { "matrix": [0, 3], "label":"F3", "x":3.25, "y":0},
+ { "matrix": [0, 4], "label":"F4", "x":4.25, "y":0},
+ { "matrix": [0, 5], "label":"F5", "x":5.5, "y":0},
+ { "matrix": [0, 6], "label":"F6", "x":6.5, "y":0},
+ { "matrix": [0, 7], "label":"F7", "x":7.5, "y":0},
+ { "matrix": [0, 8], "label":"F8", "x":8.5, "y":0},
+ { "matrix": [0, 9], "label":"F9", "x":9.75, "y":0},
+ { "matrix": [0, 10], "label":"F10", "x":10.75, "y":0},
+ { "matrix": [0, 11], "label":"F11", "x":11.75, "y":0},
+ { "matrix": [0, 12], "label":"F12", "x":12.75, "y":0},
+ { "matrix": [0, 13], "label":"PrtSc", "x":14, "y":0},
+ { "matrix": [0, 14], "label":"Mute", "x":15.25, "y":0},
+ { "matrix": [1, 0], "label":"~", "x":0, "y":1.25},
+ { "matrix": [1, 1], "label":"!", "x":1, "y":1.25},
+ { "matrix": [1, 2], "label":"@", "x":2, "y":1.25},
+ { "matrix": [1, 3], "label":"#", "x":3, "y":1.25},
+ { "matrix": [1, 4], "label":"$", "x":4, "y":1.25},
+ { "matrix": [1, 5], "label":"%", "x":5, "y":1.25},
+ { "matrix": [1, 6], "label":"^", "x":6, "y":1.25},
+ { "matrix": [1, 7], "label":"&", "x":7, "y":1.25},
+ { "matrix": [1, 8], "label":"*", "x":8, "y":1.25},
+ { "matrix": [1, 9], "label":"(", "x":9, "y":1.25},
+ { "matrix": [1, 10], "label":")", "x":10, "y":1.25},
+ { "matrix": [1, 11], "label":"_", "x":11, "y":1.25},
+ { "matrix": [1, 12], "label":"+", "x":12, "y":1.25},
+ { "matrix": [1, 13], "label":"Backspace", "x":13, "y":1.25, "w":2},
+ { "matrix": [1, 14], "label":"Del", "x":15.25, "y":1.25},
+ { "matrix": [2, 0], "label":"Tab", "x":0, "y":2.25, "w":1.5},
+ { "matrix": [2, 1], "label":"Q", "x":1.5, "y":2.25},
+ { "matrix": [2, 2], "label":"W", "x":2.5, "y":2.25},
+ { "matrix": [2, 3], "label":"E", "x":3.5, "y":2.25},
+ { "matrix": [2, 4], "label":"R", "x":4.5, "y":2.25},
+ { "matrix": [2, 5], "label":"T", "x":5.5, "y":2.25},
+ { "matrix": [2, 6], "label":"Y", "x":6.5, "y":2.25},
+ { "matrix": [2, 7], "label":"U", "x":7.5, "y":2.25},
+ { "matrix": [2, 8], "label":"I", "x":8.5, "y":2.25},
+ { "matrix": [2, 9], "label":"O", "x":9.5, "y":2.25},
+ { "matrix": [2, 10], "label":"P", "x":10.5, "y":2.25},
+ { "matrix": [2, 11], "label":"{", "x":11.5, "y":2.25},
+ { "matrix": [2, 12], "label":"}", "x":12.5, "y":2.25},
+ { "matrix": [2, 13], "label":"|", "x":13.5, "y":2.25, "w":1.5},
+ { "matrix": [2, 14], "label":"Page Up", "x":15.25, "y":2.25},
+ { "matrix": [3, 0], "label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ { "matrix": [3, 1], "label":"A", "x":1.75, "y":3.25},
+ { "matrix": [3, 2], "label":"S", "x":2.75, "y":3.25},
+ { "matrix": [3, 3], "label":"D", "x":3.75, "y":3.25},
+ { "matrix": [3, 4], "label":"F", "x":4.75, "y":3.25},
+ { "matrix": [3, 5], "label":"G", "x":5.75, "y":3.25},
+ { "matrix": [3, 6], "label":"H", "x":6.75, "y":3.25},
+ { "matrix": [3, 7], "label":"J", "x":7.75, "y":3.25},
+ { "matrix": [3, 8], "label":"K", "x":8.75, "y":3.25},
+ { "matrix": [3, 9], "label":"L", "x":9.75, "y":3.25},
+ { "matrix": [3, 10], "label":":", "x":10.75, "y":3.25},
+ { "matrix": [3, 11], "label":"\"", "x":11.75, "y":3.25},
+ { "matrix": [3, 12], "label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+ { "matrix": [3, 14], "label":"Page Down", "x":15.25, "y":3.25},
+ { "matrix": [4, 0], "label":"Shift", "x":0, "y":4.25, "w":2.25},
+ { "matrix": [4, 1], "label":"Z", "x":2.25, "y":4.25},
+ { "matrix": [4, 2], "label":"X", "x":3.25, "y":4.25},
+ { "matrix": [4, 3], "label":"C", "x":4.25, "y":4.25},
+ { "matrix": [4, 4], "label":"V", "x":5.25, "y":4.25},
+ { "matrix": [4, 5], "label":"B", "x":6.25, "y":4.25},
+ { "matrix": [4, 6], "label":"N", "x":7.25, "y":4.25},
+ { "matrix": [4, 7], "label":"M", "x":8.25, "y":4.25},
+ { "matrix": [4, 8], "label":"<", "x":9.25, "y":4.25},
+ { "matrix": [4, 9], "label":">", "x":10.25, "y":4.25},
+ { "matrix": [4, 10], "label":"?", "x":11.25, "y":4.25},
+ { "matrix": [4, 11], "label":"Shift", "x":12.25, "y":4.25, "w":1.75},
+ { "matrix": [4, 13], "label":"\u2191", "x":14.25, "y":4.5},
+ { "matrix": [5, 0], "label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ { "matrix": [5, 1], "label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ { "matrix": [5, 2], "label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ { "matrix": [5, 5], "label":" ", "x":3.75, "y":5.25, "w":6.25},
+ { "matrix": [5, 8], "label":"Alt", "x":10, "y":5.25},
+ { "matrix": [5, 9], "label":"Fn", "x":11, "y":5.25},
+ { "matrix": [5, 10], "label":"Ctrl", "x":12, "y":5.25},
+ { "matrix": [5, 12], "label":"\u2190", "x":13.25, "y":5.5},
+ { "matrix": [5, 13], "label":"\u2193", "x":14.25, "y":5.5},
+ { "matrix": [5, 14], "label":"\u2192", "x":15.25, "y":5.5}
+ ]
+ }
+ },
+ "rgb_matrix": {
+ "layout": [
+ { "flags": 2, "x": 2, "y": 0 },
+ { "flags": 2, "x": 22, "y": 0 },
+ { "flags": 2, "x": 42, "y": 0 },
+ { "flags": 2, "x": 62, "y": 0 },
+ { "flags": 2, "x": 82, "y": 0 },
+ { "flags": 2, "x": 102, "y": 0 },
+ { "flags": 2, "x": 122, "y": 0 },
+ { "flags": 2, "x": 142, "y": 0 },
+ { "flags": 2, "x": 162, "y": 0 },
+ { "flags": 2, "x": 182, "y": 0 },
+ { "flags": 2, "x": 202, "y": 0 },
+ { "flags": 2, "x": 222, "y": 0 },
+ { "flags": 2, "x": 0, "y": 7 },
+ { "flags": 4, "matrix": [0, 0], "x": 6, "y": 8 },
+ { "flags": 4, "matrix": [0, 1], "x": 24, "y": 8 },
+ { "flags": 4, "matrix": [0, 2], "x": 37, "y": 8 },
+ { "flags": 4, "matrix": [0, 3], "x": 51, "y": 8 },
+ { "flags": 4, "matrix": [0, 4], "x": 66, "y": 8 },
+ { "flags": 4, "matrix": [0, 5], "x": 82, "y": 8 },
+ { "flags": 4, "matrix": [0, 6], "x": 96, "y": 8 },
+ { "flags": 4, "matrix": [0, 7], "x": 110, "y": 8 },
+ { "flags": 4, "matrix": [0, 8], "x": 124, "y": 8 },
+ { "flags": 4, "matrix": [0, 9], "x": 141, "y": 8 },
+ { "flags": 4, "matrix": [0, 10], "x": 155, "y": 8 },
+ { "flags": 4, "matrix": [0, 11], "x": 169, "y": 8 },
+ { "flags": 4, "matrix": [0, 12], "x": 182, "y": 8 },
+ { "flags": 4, "matrix": [0, 13], "x": 199, "y": 8 },
+ { "flags": 2, "x": 224, "y": 4 },
+ { "flags": 2, "x": 0, "y": 12 },
+ { "flags": 4, "matrix": [1, 0], "x": 6, "y": 20 },
+ { "flags": 4, "matrix": [1, 1], "x": 20, "y": 20 },
+ { "flags": 4, "matrix": [1, 2], "x": 34, "y": 20 },
+ { "flags": 4, "matrix": [1, 3], "x": 48, "y": 20 },
+ { "flags": 4, "matrix": [1, 4], "x": 62, "y": 20 },
+ { "flags": 4, "matrix": [1, 5], "x": 75, "y": 20 },
+ { "flags": 4, "matrix": [1, 6], "x": 90, "y": 20 },
+ { "flags": 4, "matrix": [1, 7], "x": 103, "y": 20 },
+ { "flags": 4, "matrix": [1, 8], "x": 117, "y": 20 },
+ { "flags": 4, "matrix": [1, 9], "x": 130, "y": 20 },
+ { "flags": 4, "matrix": [1, 10], "x": 144, "y": 20 },
+ { "flags": 4, "matrix": [1, 11], "x": 158, "y": 20 },
+ { "flags": 4, "matrix": [1, 12], "x": 170, "y": 20 },
+ { "flags": 4, "matrix": [1, 13], "x": 192, "y": 20 },
+ { "flags": 4, "matrix": [1, 14], "x": 217, "y": 20 },
+ { "flags": 2, "x": 224, "y": 12 },
+ { "flags": 2, "x": 0, "y": 22 },
+ { "flags": 4, "matrix": [2, 0], "x": 10, "y": 30 },
+ { "flags": 4, "matrix": [2, 1], "x": 27, "y": 30 },
+ { "flags": 4, "matrix": [2, 2], "x": 41, "y": 30 },
+ { "flags": 4, "matrix": [2, 3], "x": 54, "y": 30 },
+ { "flags": 4, "matrix": [2, 4], "x": 69, "y": 30 },
+ { "flags": 4, "matrix": [2, 5], "x": 82, "y": 30 },
+ { "flags": 4, "matrix": [2, 6], "x": 96, "y": 30 },
+ { "flags": 4, "matrix": [2, 7], "x": 110, "y": 30 },
+ { "flags": 4, "matrix": [2, 8], "x": 123, "y": 30 },
+ { "flags": 4, "matrix": [2, 9], "x": 138, "y": 30 },
+ { "flags": 4, "matrix": [2, 10], "x": 151, "y": 30 },
+ { "flags": 4, "matrix": [2, 11], "x": 165, "y": 30 },
+ { "flags": 4, "matrix": [2, 12], "x": 179, "y": 30 },
+ { "flags": 4, "matrix": [2, 13], "x": 196, "y": 30 },
+ { "flags": 4, "matrix": [2, 14], "x": 217, "y": 30 },
+ { "flags": 2, "x": 224, "y": 22 },
+ { "flags": 4, "matrix": [3, 0], "x": 11, "y": 40 },
+ { "flags": 4, "matrix": [3, 1], "x": 30, "y": 40 },
+ { "flags": 4, "matrix": [3, 2], "x": 44, "y": 40 },
+ { "flags": 4, "matrix": [3, 3], "x": 57, "y": 40 },
+ { "flags": 4, "matrix": [3, 4], "x": 72, "y": 40 },
+ { "flags": 4, "matrix": [3, 5], "x": 85, "y": 40 },
+ { "flags": 4, "matrix": [3, 6], "x": 99, "y": 40 },
+ { "flags": 4, "matrix": [3, 7], "x": 113, "y": 40 },
+ { "flags": 4, "matrix": [3, 8], "x": 126, "y": 40 },
+ { "flags": 4, "matrix": [3, 9], "x": 140, "y": 40 },
+ { "flags": 4, "matrix": [3, 10], "x": 154, "y": 40 },
+ { "flags": 4, "matrix": [3, 11], "x": 169, "y": 40 },
+ { "flags": 4, "matrix": [3, 12], "x": 190, "y": 40 },
+ { "flags": 4, "matrix": [3, 14], "x": 217, "y": 40 },
+ { "flags": 2, "x": 0, "y": 42 },
+ { "flags": 4, "matrix": [4, 0], "x": 15, "y": 50 },
+ { "flags": 4, "matrix": [4, 1], "x": 37, "y": 50 },
+ { "flags": 4, "matrix": [4, 2], "x": 51, "y": 50 },
+ { "flags": 4, "matrix": [4, 3], "x": 66, "y": 50 },
+ { "flags": 4, "matrix": [4, 4], "x": 79, "y": 50 },
+ { "flags": 4, "matrix": [4, 5], "x": 93, "y": 50 },
+ { "flags": 4, "matrix": [4, 6], "x": 107, "y": 50 },
+ { "flags": 4, "matrix": [4, 7], "x": 120, "y": 50 },
+ { "flags": 4, "matrix": [4, 8], "x": 134, "y": 50 },
+ { "flags": 4, "matrix": [4, 9], "x": 148, "y": 50 },
+ { "flags": 4, "matrix": [4, 10], "x": 161, "y": 50 },
+ { "flags": 4, "matrix": [4, 11], "x": 180, "y": 50 },
+ { "flags": 4, "matrix": [4, 13], "x": 202, "y": 53 },
+ { "flags": 2, "x": 224, "y": 42 },
+ { "flags": 2, "x": 0, "y": 51 },
+ { "flags": 4, "matrix": [5, 0], "x": 8, "y": 60 },
+ { "flags": 4, "matrix": [5, 1], "x": 26, "y": 60 },
+ { "flags": 4, "matrix": [5, 2], "x": 42, "y": 60 },
+ { "flags": 4, "matrix": [5, 5], "x": 94, "y": 60 },
+ { "flags": 4, "matrix": [5, 8], "x": 144, "y": 60 },
+ { "flags": 4, "matrix": [5, 9], "x": 158, "y": 60 },
+ { "flags": 4, "matrix": [5, 10], "x": 172, "y": 60 },
+ { "flags": 4, "matrix": [5, 12], "x": 189, "y": 63 },
+ { "flags": 4, "matrix": [5, 13], "x": 202, "y": 63 },
+ { "flags": 4, "matrix": [5, 14], "x": 217, "y": 63 },
+ { "flags": 2, "x": 224, "y": 51 },
+ { "flags": 2, "x": 9, "y": 64 },
+ { "flags": 2, "x": 38, "y": 64 },
+ { "flags": 2, "x": 69, "y": 64 },
+ { "flags": 2, "x": 96, "y": 64 },
+ { "flags": 2, "x": 125, "y": 64 },
+ { "flags": 2, "x": 154, "y": 64 },
+ { "flags": 2, "x": 182, "y": 64 },
+ { "flags": 2, "x": 211, "y": 64 }
+ ]
+ },
+ "encoder": {
+ "rotary": [
+ { "pin_a": "B5", "pin_b": "B4", "resolution": 2 }
+ ]
+ }
+}
diff --git a/keyboards/drop/sense75/keymaps/default/keymap.c b/keyboards/drop/sense75/keymaps/default/keymap.c
new file mode 100644
index 0000000000..05b351f865
--- /dev/null
+++ b/keyboards/drop/sense75/keymaps/default/keymap.c
@@ -0,0 +1,52 @@
+// Copyright 2022 Massdrop, Inc.
+// SPDX-License-Identifier: GPL-2.0-or-later
+#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││PSc││ │
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┴└───┴───┴───┴───┘└───┘└───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”┌───â”
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp││Del│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ ││PgU│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤├───┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter ││PgD│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘└───┘
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│┌───â”
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┘│ ↑ │
+ * │Ctrl│GUI │Alt │ │Alt│GUI│Ctl│┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┘│ ↠│ ↓ │ → │
+ * └───┴───┴───┘
+ */
+ [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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, RGB_TOG, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
+ _______, RGB_MOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_END,
+ _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,_______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, EE_CLR, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) }
+};
+#endif
+
+void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(62, RGB_WHITE);
+ }
+}
diff --git a/keyboards/drop/sense75/keymaps/default/rules.mk b/keyboards/drop/sense75/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/drop/sense75/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/drop/sense75/keymaps/default_md/keymap.c b/keyboards/drop/sense75/keymaps/default_md/keymap.c
new file mode 100644
index 0000000000..eb8b6b1f4b
--- /dev/null
+++ b/keyboards/drop/sense75/keymaps/default_md/keymap.c
@@ -0,0 +1,136 @@
+// Copyright 2022 Massdrop, Inc.
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ TEST_1 = SAFE_RANGE,
+ TEST_2,
+ TEST_3,
+ TEST_4,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───â”
+ * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││PSc││ │
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┴└───┴───┴───┴───┘└───┘└───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”┌───â”
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp││Del│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ ││PgU│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤├───┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter ││PgD│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘└───┘
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│┌───â”
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┘│ ↑ │
+ * │Ctrl│GUI │Alt │ │Alt│GUI│Ctl│┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┘│ ↠│ ↓ │ → │
+ * └───┴───┴───┘
+ */
+ [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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, RGB_TOG, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
+ _______, RGB_MOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_END,
+ _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,_______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ MO(2), _______, _______, EE_CLR, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, TEST_1, TEST_2, TEST_3, TEST_4, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, AG_TOGG, _______, _______, _______, CL_TOGG, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
+ [2] = { ENCODER_CCW_CW(_______, _______) }
+};
+#endif
+
+static bool test_mode = false;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!record->event.pressed) {
+ switch (keycode) {
+ case TEST_1:
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv_noeeprom(HSV_RED);
+ test_mode = true;
+ break;
+ case TEST_2:
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv_noeeprom(HSV_GREEN);
+ test_mode = true;
+ break;
+ case TEST_3:
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv_noeeprom(HSV_BLUE);
+ test_mode = true;
+ break;
+ case TEST_4:
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv_noeeprom(HSV_WHITE);
+ test_mode = true;
+ break;
+ case RGB_TOG:
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL:
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ break;
+ case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR):
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ break;
+ case LED_FLAG_UNDERGLOW:
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ break;
+ default:
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ break;
+ }
+ return false;
+ }
+ }
+ return true;
+};
+
+void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(62, RGB_WHITE);
+ } else if ((rgb_matrix_get_flags() & (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR)) == 0) {
+ rgb_matrix_set_color(62, RGB_OFF);
+ }
+
+ if (get_highest_layer(layer_state) == 2) {
+ if (!test_mode) {
+ rgb_matrix_set_color_all(RGB_OFF);
+ }
+
+ if (keymap_config.swap_lalt_lgui) {
+ rgb_matrix_set_color(55, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(55, RGB_RED);
+ }
+ if (keymap_config.swap_control_capslock) {
+ rgb_matrix_set_color(59, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(59, RGB_RED);
+ }
+ } else if ((rgb_matrix_get_flags() & (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR)) == 0) {
+ rgb_matrix_set_color(55, RGB_OFF);
+ rgb_matrix_set_color(59, RGB_OFF);
+ }
+}
diff --git a/keyboards/drop/sense75/keymaps/default_md/readme.md b/keyboards/drop/sense75/keymaps/default_md/readme.md
new file mode 100644
index 0000000000..d954886bcd
--- /dev/null
+++ b/keyboards/drop/sense75/keymaps/default_md/readme.md
@@ -0,0 +1 @@
+# The stock firmware the keyboard ships with
diff --git a/keyboards/drop/sense75/keymaps/default_md/rules.mk b/keyboards/drop/sense75/keymaps/default_md/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/drop/sense75/keymaps/default_md/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/drop/sense75/keymaps/via/config.h b/keyboards/drop/sense75/keymaps/via/config.h
new file mode 100644
index 0000000000..2b0c8330d0
--- /dev/null
+++ b/keyboards/drop/sense75/keymaps/via/config.h
@@ -0,0 +1,5 @@
+// Copyright 2022 Massdrop, Inc.
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 8
diff --git a/keyboards/drop/sense75/keymaps/via/keymap.c b/keyboards/drop/sense75/keymaps/via/keymap.c
new file mode 100644
index 0000000000..c1e3c4edf3
--- /dev/null
+++ b/keyboards/drop/sense75/keymaps/via/keymap.c
@@ -0,0 +1,79 @@
+// Copyright 2022 Massdrop, Inc.
+// SPDX-License-Identifier: GPL-2.0-or-later
+#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││PSc││ │
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┴└───┴───┴───┴───┘└───┘└───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”┌───â”
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp││Del│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ ││PgU│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤├───┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter ││PgD│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘└───┘
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│┌───â”
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┘│ ↑ │
+ * │Ctrl│GUI │Alt │ │Alt│GUI│Ctl│┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┘│ ↠│ ↓ │ → │
+ * └───┴───┴───┘
+ */
+ [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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, RGB_TOG, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
+ _______, RGB_MOD, RGB_VAD, RGB_SPD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, KC_END,
+ _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,_______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ MO(2), _______, _______, EE_CLR, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, AG_TOGG, _______, _______, _______, CL_TOGG, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
+ [2] = { ENCODER_CCW_CW(_______, _______) }
+};
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!record->event.pressed) {
+ switch (keycode) {
+ case RGB_TOG:
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL:
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ break;
+ case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR):
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ break;
+ case LED_FLAG_UNDERGLOW:
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ break;
+ default:
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ break;
+ }
+ return false;
+ }
+ }
+ return true;
+};
diff --git a/keyboards/drop/sense75/keymaps/via/rules.mk b/keyboards/drop/sense75/keymaps/via/rules.mk
new file mode 100644
index 0000000000..f1adcab005
--- /dev/null
+++ b/keyboards/drop/sense75/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/drop/sense75/mcuconf.h b/keyboards/drop/sense75/mcuconf.h
new file mode 100644
index 0000000000..e8a0486ce0
--- /dev/null
+++ b/keyboards/drop/sense75/mcuconf.h
@@ -0,0 +1,14 @@
+// Copyright 2022 Massdrop, Inc.
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PLLM_VALUE
+#define STM32_PLLM_VALUE 16
+
+#undef STM32_PREDIV_VALUE
+#define STM32_PREDIV_VALUE 2
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/drop/sense75/readme.md b/keyboards/drop/sense75/readme.md
new file mode 100644
index 0000000000..bb0bb72a05
--- /dev/null
+++ b/keyboards/drop/sense75/readme.md
@@ -0,0 +1,24 @@
+# SENSE75
+
+![SENSE75](https://massdrop-s3.imgix.net/img_thread/1660887363422.771277068120058315243585-5419copycrop.jpg?auto=format&fm=jpg&fit=max&w=500&h=868&dpr=2)
+
+* Keyboard Maintainer: [zvecr](https://github.com/zvecr)
+* Hardware Availability: <https://drop.com/buy/drop-sense75-mechanical-keyboard>
+
+Make example for this keyboard (after setting up your build environment):
+
+ make drop/sense75:default
+
+Flashing example for this keyboard:
+
+ make drop/sense75: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**: Press and hold the button under the space bar
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/drop/sense75/rules.mk b/keyboards/drop/sense75/rules.mk
new file mode 100644
index 0000000000..781ba9b35a
--- /dev/null
+++ b/keyboards/drop/sense75/rules.mk
@@ -0,0 +1,2 @@
+EEPROM_DRIVER = i2c
+RGB_MATRIX_DRIVER = IS31FL3733
diff --git a/keyboards/drop/sense75/sense75.c b/keyboards/drop/sense75/sense75.c
new file mode 100644
index 0000000000..8087f5c72e
--- /dev/null
+++ b/keyboards/drop/sense75/sense75.c
@@ -0,0 +1,148 @@
+// Copyright 2022 Massdrop, Inc.
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "rgb_matrix.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
+// top underglow sd2-sd17
+ { 0, B_2, A_2, C_2 },
+ { 0, B_3, A_3, C_3 },
+ { 0, B_5, A_5, C_5 },
+ { 0, B_6, A_6, C_6 },
+ { 0, B_7, A_7, C_7 },
+ { 0, B_9, A_9, C_9 },
+ { 0, B_10, A_10, C_10 },
+ { 0, B_12, A_12, C_12 },
+ { 0, B_13, A_13, C_13 },
+ { 0, B_14, A_14, C_14 },
+ { 0, B_16, A_16, C_16 },
+ { 1, B_12, A_12, C_12 },
+
+// sd1 + function + sd18
+ { 0, B_1, A_1, C_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, E_15, D_15, F_15 },
+ // <enc gap>
+ { 1, B_13, A_13, C_13 },
+
+// sd45 + num + sd20
+ { 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, H_14, G_14, I_14 },
+ { 0, H_15, G_15, I_15 },
+ { 0, H_16, G_16, I_16 },
+ { 1, B_15, A_15, C_15 },
+
+// 44+ qwer 21
+ { 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_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 },
+ { 1, B_16, A_16, C_16 },
+
+// asdf
+ { 1, B_2, A_2, C_2 },
+ { 1, B_3, A_3, C_3 },
+ { 1, B_4, A_4, C_4 },
+ { 1, B_5, A_5, C_5 },
+ { 1, B_6, A_6, C_6 },
+ { 1, B_7, A_7, C_7 },
+ { 1, B_8, A_8, C_8 },
+ { 1, B_9, A_9, C_9 },
+ { 1, B_10, A_10, C_10 },
+ { 1, B_11, A_11, C_11 },
+ { 1, E_12, D_12, F_12 },
+ { 1, E_13, D_13, F_13 },
+ { 1, E_14, D_14, F_14 },
+ { 1, H_15, G_15, I_15 },
+
+// 43 + zxcv + 22
+ { 1, B_1, A_1, C_1 },
+ { 1, E_2, D_2, F_2 },
+ { 1, E_3, D_3, F_3 },
+ { 1, E_4, D_4, F_4 },
+ { 1, E_5, D_5, F_5 },
+ { 1, E_6, D_6, F_6 },
+ { 1, E_7, D_7, F_7 },
+ { 1, E_8, D_8, F_8 },
+ { 1, E_9, D_9, F_9 },
+ { 1, E_10, D_10, F_10 },
+ { 1, E_11, D_11, F_11 },
+ { 1, H_12, G_12, I_12 },
+ { 1, H_13, G_13, I_13 },
+ { 1, H_14, G_14, I_14 },
+ { 1, E_15, D_15, F_15 },
+
+// 41 + mods + 23
+ { 1, H_1, G_1, I_1 },
+ { 1, H_2, G_2, I_2 },
+ { 1, H_3, G_3, I_3 },
+ { 1, H_4, G_4, I_4 },
+ { 1, H_5, G_5, I_5 },
+ { 1, H_6, G_6, I_6 },
+ { 1, H_7, G_7, I_7 },
+ { 1, H_8, G_8, I_8 },
+ { 1, H_9, G_9, I_9 },
+ { 1, H_10, G_10, I_10 },
+ { 1, H_11, G_11, I_11 },
+ { 1, E_16, D_16, F_16 },
+
+// bottom underglow 24 - 39
+ { 1, K_2, J_2, L_2 },
+ { 1, K_3, J_3, L_3 },
+ { 1, K_4, J_4, L_4 },
+ { 1, K_6, J_6, L_6 },
+ { 1, K_10, J_10, L_10 },
+ { 1, K_13, J_13, L_13 },
+ { 1, K_15, J_15, L_15 },
+ { 1, H_16, G_16, I_16 }
+};
+#endif
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) return false;
+
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ return false;
+}
+#endif
diff --git a/keyboards/dtisaac/cg108/config.h b/keyboards/dtisaac/cg108/config.h
index 7ce2de42b8..211b60b3e0 100644
--- a/keyboards/dtisaac/cg108/config.h
+++ b/keyboards/dtisaac/cg108/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4454 // DT
-#define PRODUCT_ID 0x4973 // Is
-#define DEVICE_VER 0x0002
-#define MANUFACTURER DTIsaac
-#define PRODUCT CG108
-
/* key matrix size */
#define MATRIX_ROWS 11
#define MATRIX_COLS 11
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { F4, F1, F0, F5, F6, F7, D4, D5, D3, D2, D0 }
#define MATRIX_COL_PINS { C7, C6, B4, D7, B3, B2, B0, E6, B1, D1, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dtisaac/cg108/info.json b/keyboards/dtisaac/cg108/info.json
index 0ecc1764f6..eb6189088c 100644
--- a/keyboards/dtisaac/cg108/info.json
+++ b/keyboards/dtisaac/cg108/info.json
@@ -1,9 +1,13 @@
{
"keyboard_name": "CG108",
+ "manufacturer": "DTIsaac",
"url": "",
"maintainer": "daotakisaac",
- "width": 22.5,
- "height": 6.5,
+ "usb": {
+ "vid": "0x4454",
+ "pid": "0x4973",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dtisaac/cg108/readme.md b/keyboards/dtisaac/cg108/readme.md
index 3bf38f7689..c454e0b877 100644
--- a/keyboards/dtisaac/cg108/readme.md
+++ b/keyboards/dtisaac/cg108/readme.md
@@ -23,4 +23,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/dtisaac/dosa40rgb/config.h b/keyboards/dtisaac/dosa40rgb/config.h
index 8d61f61128..2651a4d9b5 100644
--- a/keyboards/dtisaac/dosa40rgb/config.h
+++ b/keyboards/dtisaac/dosa40rgb/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4454 // DT
-#define PRODUCT_ID 0x4973 // Is
-#define DEVICE_VER 0x0004
-#define MANUFACTURER DTIsaac
-#define PRODUCT >_Dosa40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B7, D7, F1, F0 }
#define MATRIX_COL_PINS { D1, D6, D3, D2, B6, C6, C7, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dtisaac/dosa40rgb/info.json b/keyboards/dtisaac/dosa40rgb/info.json
index 2feed40d42..d24975ca8b 100644
--- a/keyboards/dtisaac/dosa40rgb/info.json
+++ b/keyboards/dtisaac/dosa40rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": ">_Dosa40rgb",
+ "keyboard_name": ">_Dosa40",
+ "manufacturer": "DTIsaac",
"url": "",
"maintainer": "DTIsaac",
+ "usb": {
+ "vid": "0x4454",
+ "pid": "0x4973",
+ "device_version": "0.0.4"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dtisaac/dosa40rgb/readme.md b/keyboards/dtisaac/dosa40rgb/readme.md
index a2995a5c0f..30e549aa6e 100644
--- a/keyboards/dtisaac/dosa40rgb/readme.md
+++ b/keyboards/dtisaac/dosa40rgb/readme.md
@@ -23,4 +23,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/dtisaac/dtisaac01/config.h b/keyboards/dtisaac/dtisaac01/config.h
index eb1ff71536..9b9a012ab4 100644
--- a/keyboards/dtisaac/dtisaac01/config.h
+++ b/keyboards/dtisaac/dtisaac01/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4454
-#define PRODUCT_ID 0x4973
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DTIsaac
-#define PRODUCT dtisaac01
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F7, F6, F5, F4, F1, B4, D2, B2, B1, B3, D4, D6 }
#define MATRIX_COL_PINS { C7, C6, D0, B5, F0, D7, B0, B7, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/dtisaac/dtisaac01/info.json b/keyboards/dtisaac/dtisaac01/info.json
index eac22cda30..790648d64b 100644
--- a/keyboards/dtisaac/dtisaac01/info.json
+++ b/keyboards/dtisaac/dtisaac01/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "dtisaac01",
+ "manufacturer": "DTIsaac",
"url": "",
"maintainer": "DTIsaac",
+ "usb": {
+ "vid": "0x4454",
+ "pid": "0x4973",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/duck/eagle_viper/v2/config.h b/keyboards/duck/eagle_viper/v2/config.h
index 4153f2963d..122eeb4b4a 100644
--- a/keyboards/duck/eagle_viper/v2/config.h
+++ b/keyboards/duck/eagle_viper/v2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x444B // Duck ("DK")
-#define PRODUCT_ID 0x4556 // Eagle/Viper ("EV")
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Duck
-#define PRODUCT Eagle/Viper V2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/duck/eagle_viper/v2/info.json b/keyboards/duck/eagle_viper/v2/info.json
index 57d6af4fa8..e21ca68209 100644
--- a/keyboards/duck/eagle_viper/v2/info.json
+++ b/keyboards/duck/eagle_viper/v2/info.json
@@ -1,5 +1,11 @@
{
"keyboard_name": "Eagle/Viper V2",
+ "manufacturer": "Duck",
+ "usb": {
+ "vid": "0x444B",
+ "pid": "0x4556",
+ "device_version": "0.0.2"
+ },
"layout_aliases": {
"LAYOUT_eagle": "LAYOUT_60_ansi",
"LAYOUT_viper": "LAYOUT_60_hhkb",
diff --git a/keyboards/duck/eagle_viper/v2/keymaps/profanum429/keymap.c b/keyboards/duck/eagle_viper/v2/keymaps/profanum429/keymap.c
index 6c6cfbd2f8..dfd733357d 100644
--- a/keyboards/duck/eagle_viper/v2/keymaps/profanum429/keymap.c
+++ b/keyboards/duck/eagle_viper/v2/keymaps/profanum429/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_viper( \
_______, KC_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_VAI, RESET, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_BSPC, \
+ KC_CAPS, RGB_TOG, RGB_MOD, RGB_VAI, QK_BOOT, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_BSPC, \
_______, KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_ENT, \
_______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, \
_______, _______, _______, _______, _______ \
diff --git a/keyboards/duck/jetfire/config.h b/keyboards/duck/jetfire/config.h
index 0512d4a1f4..16fbe3bda2 100644
--- a/keyboards/duck/jetfire/config.h
+++ b/keyboards/duck/jetfire/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x444B // Duck ("DK")
-#define PRODUCT_ID 0x4A46 // Jetfire ("JF")
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Duck
-#define PRODUCT Jetfire
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 20
diff --git a/keyboards/duck/jetfire/info.json b/keyboards/duck/jetfire/info.json
index 9325fffb77..3205556d8e 100644
--- a/keyboards/duck/jetfire/info.json
+++ b/keyboards/duck/jetfire/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Jetfire",
+ "manufacturer": "Duck",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x444B",
+ "pid": "0x4A46",
+ "device_version": "0.0.1"
+ },
"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}, {"x":15.25, "y":0}, {"label":"PrtSc", "x":16.5, "y":0}, {"label":"Scroll Lock", "x":17.5, "y":0}, {"label":"Pause", "x":18.5, "y":0}, {"x":19.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":"Back Space", "x":13, "y":1.25}, {"x":14, "y":1.25}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Num Lock", "x":16.5, "y":1.25}, {"label":"/", "x":17.5, "y":1.25}, {"label":"*", "x":18.5, "y":1.25}, {"label":"-", "x":19.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":"7", "x":16.5, "y":2.25}, {"label":"8", "x":17.5, "y":2.25}, {"label":"9", "x":18.5, "y":2.25}, {"label":"+", "x":19.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":"4", "x":16.5, "y":3.25}, {"label":"5", "x":17.5, "y":3.25}, {"label":"6", "x":18.5, "y":3.25}, {"x":19.5, "y":3.25}, {"label":"Shift", "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":"Shift", "x":12.25, "y":4.25, "w":1.75}, {"x":14, "y":4.25}, {"label":"\u2191", "x":15.25, "y":4.5}, {"label":"1", "x":16.5, "y":4.25}, {"label":"2", "x":17.5, "y":4.25}, {"label":"3", "x":18.5, "y":4.25}, {"label":"Enter", "x":19.5, "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":6.25}, {"label":"Alt", "x":10.25, "y":5.25, "w":1.25}, {"x":11.5, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":12.75, "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}, {"label":"0", "x":17.5, "y":5.25}, {"label":".", "x":18.5, "y":5.25}, {"x":19.5, "y":5.25}]
diff --git a/keyboards/duck/lightsaver/config.h b/keyboards/duck/lightsaver/config.h
index e2aa78d14b..053e85428c 100644
--- a/keyboards/duck/lightsaver/config.h
+++ b/keyboards/duck/lightsaver/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x444B // Duck ("DK")
-#define PRODUCT_ID 0x4C53 // Lightsaver ("LS")
-#define DEVICE_VER 0x0003
-#define MANUFACTURER Duck
-#define PRODUCT Lightsaver V3
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 19
diff --git a/keyboards/duck/lightsaver/info.json b/keyboards/duck/lightsaver/info.json
index 92ffbf1c9d..39f62f0fe1 100644
--- a/keyboards/duck/lightsaver/info.json
+++ b/keyboards/duck/lightsaver/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Duck Lightsaver V3",
+ "keyboard_name": "Lightsaver V3",
+ "manufacturer": "Duck",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x444B",
+ "pid": "0x4C53",
+ "device_version": "0.0.3"
+ },
"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":"PrtSc", "x":13, "y":0}, {"label":"Num<br>Lock", "x":14, "y":0}, {"label":"Insert", "x":15, "y":0}, {"label":"Home", "x":16, "y":0}, {"label":"PgUp", "x":17, "y":0}, {"label":"/", "x":18, "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":"Bkspc", "x":13, "y":1, "w":2}, {"label":"Delete", "x":15, "y":1}, {"label":"End", "x":16, "y":1}, {"label":"PgDn", "x":17, "y":1}, {"label":"*", "x":18, "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":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"-", "x":18, "y":2}, {"label":"CapsLock", "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":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"+", "x":18, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"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":"\u2191", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4, "h":2}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}]
diff --git a/keyboards/duck/lightsaver/keymaps/rasmus/keymap.c b/keyboards/duck/lightsaver/keymaps/rasmus/keymap.c
index 70dc17bb13..07becf96fa 100644
--- a/keyboards/duck/lightsaver/keymaps/rasmus/keymap.c
+++ b/keyboards/duck/lightsaver/keymaps/rasmus/keymap.c
@@ -34,8 +34,8 @@ enum {
//Tap Dance Definitions
qk_tap_dance_action_t tap_dance_actions[] = {
- [TD_F1_GAME] = ACTION_TAP_DANCE_DUAL_ROLE(KC_F1, GAME),
- [TD_CAPS_FN] = ACTION_TAP_DANCE_DUAL_ROLE(KC_CAPS, 5)
+ [TD_F1_GAME] = ACTION_TAP_DANCE_LAYER_MOVE(KC_F1, GAME),
+ [TD_CAPS_FN] = ACTION_TAP_DANCE_LAYER_MOVE(KC_CAPS, 5)
};
enum macro_id {
@@ -86,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), \
};
diff --git a/keyboards/duck/octagon/v1/config.h b/keyboards/duck/octagon/v1/config.h
index 7bf69a7b63..834554c45a 100644
--- a/keyboards/duck/octagon/v1/config.h
+++ b/keyboards/duck/octagon/v1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x444B // Duck ("DK")
-#define PRODUCT_ID 0x4F31 // Octagon V1 ("O1")
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Duck
-#define PRODUCT Octagon V1
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
diff --git a/keyboards/duck/octagon/v1/info.json b/keyboards/duck/octagon/v1/info.json
index 1fae48975b..8912165c6d 100644
--- a/keyboards/duck/octagon/v1/info.json
+++ b/keyboards/duck/octagon/v1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Octagon V1",
+ "manufacturer": "Duck",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x444B",
+ "pid": "0x4F31",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_75_ansi": {
"layout": [
diff --git a/keyboards/duck/octagon/v2/config.h b/keyboards/duck/octagon/v2/config.h
index 0de966c604..57df912112 100644
--- a/keyboards/duck/octagon/v2/config.h
+++ b/keyboards/duck/octagon/v2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x444B // Duck ("DK")
-#define PRODUCT_ID 0x4F32 // Octagon V2 ("O2")
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Duck
-#define PRODUCT Octagon V2
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/duck/octagon/v2/info.json b/keyboards/duck/octagon/v2/info.json
index 23911f3403..3b9f84417e 100644
--- a/keyboards/duck/octagon/v2/info.json
+++ b/keyboards/duck/octagon/v2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Octagon V2",
+ "manufacturer": "Duck",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x444B",
+ "pid": "0x4F32",
+ "device_version": "0.0.2"
+ },
"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":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "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", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "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":"Page Up", "x":15, "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}, {"x":12.75, "y":3}, {"label":"Enter", "x":13.75, "y":3, "w":1.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"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":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}]
diff --git a/keyboards/duck/orion/info.json b/keyboards/duck/orion/info.json
deleted file mode 100644
index 3ba2d3017b..0000000000
--- a/keyboards/duck/orion/info.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "keyboard_name": "Duck Orion V3",
- "url": "",
- "maintainer": "qmk",
- "layouts": {
- "LAYOUT_tkl_ansi": {
- "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, "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}]
- }
- }
-}
diff --git a/keyboards/duck/orion/v3/config.h b/keyboards/duck/orion/v3/config.h
index bcc5fb0046..477243e495 100644
--- a/keyboards/duck/orion/v3/config.h
+++ b/keyboards/duck/orion/v3/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x444B // Duck ("DK")
-#define PRODUCT_ID 0x4F52 // Orion ("OR")
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Duck
-#define PRODUCT Orion V3
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
diff --git a/keyboards/duck/orion/v3/info.json b/keyboards/duck/orion/v3/info.json
new file mode 100644
index 0000000000..39f0e1e1bd
--- /dev/null
+++ b/keyboards/duck/orion/v3/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Orion V3",
+ "manufacturer": "Duck",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x444B",
+ "pid": "0x4F52",
+ "device_version": "0.0.2"
+ },
+ "layouts": {
+ "LAYOUT_tkl_ansi": {
+ "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, "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}]
+ }
+ }
+}
diff --git a/keyboards/duck/tcv3/config.h b/keyboards/duck/tcv3/config.h
index 9a75ff77f7..a295d33614 100644
--- a/keyboards/duck/tcv3/config.h
+++ b/keyboards/duck/tcv3/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x444B // Duck ("DK")
-#define PRODUCT_ID 0x5443 // TC-V3 ("TC")
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Duck
-#define PRODUCT TC-V3
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 20
diff --git a/keyboards/duck/tcv3/info.json b/keyboards/duck/tcv3/info.json
index 169ed18a74..f90d994cd0 100644
--- a/keyboards/duck/tcv3/info.json
+++ b/keyboards/duck/tcv3/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TCV3",
+ "keyboard_name": "TC-V3",
+ "manufacturer": "Duck",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x444B",
+ "pid": "0x5443",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2.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.75, "y":0}, {"x":9.75, "y":0}, {"x":10.75, "y":0}, {"x":11.75, "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":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2.25, "y":1.25}, {"x":3.25, "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.5, "y":1.25}, {"x":18.5, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2.25, "y":2.25, "w":1.5}, {"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}, {"x":13.75, "y":2.25}, {"x":14.75, "y":2.25}, {"x":15.75, "y":2.25, "w":1.5}, {"x":17.5, "y":2.25}, {"x":18.5, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2.25, "y":3.25, "w":1.75}, {"x":4, "y":3.25}, {"x":5, "y":3.25}, {"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, "w":1.25}, {"x":17.5, "y":3.25}, {"x":18.5, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2.25, "y":4.25, "w":1.25}, {"x":3.5, "y":4.25}, {"x":4.5, "y":4.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, "w":1.75}, {"x":16.25, "y":4.25}, {"x":17.5, "y":4.5}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2.25, "y":5.25, "w":1.5}, {"x":3.75, "y":5.25}, {"x":4.75, "y":5.25, "w":1.5}, {"x":6.25, "y":5.25, "w":6}, {"x":12.25, "y":5.25, "w":1.5}, {"x":13.75, "y":5.25}, {"x":14.75, "y":5.25, "w":1.5}, {"x":16.5, "y":5.5}, {"x":17.5, "y":5.5}, {"x":18.5, "y":5.5}]
diff --git a/keyboards/ducky/one2mini/1861st/config.h b/keyboards/ducky/one2mini/1861st/config.h
index 3f5676280c..39050f6102 100644
--- a/keyboards/ducky/one2mini/1861st/config.h
+++ b/keyboards/ducky/one2mini/1861st/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0416
-#define PRODUCT_ID 0x0123
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ducky
-#define PRODUCT One2mini
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D11, B4, B5, B6, B7 }
#define MATRIX_COL_PINS { B10, B9, C13, C12, C11, C10, C9, C8, A15, A14, A13, D0, D1, D2, B8 }
#define DIP_SWITCH_MATRIX_GRID { {0,14}, {1,14}, {2,14}, {3,14} }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ducky/one2mini/1861st/info.json b/keyboards/ducky/one2mini/1861st/info.json
index 9e121fbf4b..364d803718 100644
--- a/keyboards/ducky/one2mini/1861st/info.json
+++ b/keyboards/ducky/one2mini/1861st/info.json
@@ -1,5 +1,11 @@
{
- "keyboard_name": "Ducky One 2 Mini",
+ "keyboard_name": "One 2 Mini",
+ "manufacturer": "Ducky",
+ "usb": {
+ "vid": "0x0416",
+ "pid": "0x0123",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_iso": "LAYOUT_60_iso"
},
diff --git a/keyboards/ducky/one2sf/1967st/1967st.h b/keyboards/ducky/one2sf/1967st/1967st.h
new file mode 100644
index 0000000000..e413721831
--- /dev/null
+++ b/keyboards/ducky/one2sf/1967st/1967st.h
@@ -0,0 +1,42 @@
+/* Copyright 2019 /u/KeepItUnder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 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, 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, k45, k4a, k4b, k4c, k4d, k4e, k4f \
+) { \
+ { 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, XXX, XXX, k45, XXX, XXX, XXX, k4a, k4b, k4c, k4d, k4e, k4f } \
+}
diff --git a/keyboards/ducky/one2sf/1967st/boards/NUC123SD4AN0/board.c b/keyboards/ducky/one2sf/1967st/boards/NUC123SD4AN0/board.c
new file mode 100644
index 0000000000..a10223603e
--- /dev/null
+++ b/keyboards/ducky/one2sf/1967st/boards/NUC123SD4AN0/board.c
@@ -0,0 +1,57 @@
+/*
+ ChibiOS Driver element - Copyright (C) 2019 /u/KeepItUnder
+
+ 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"
+
+#if HAL_USE_PAL || defined(__DOXYGEN__)
+/**
+ * @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.
+ */
+const PALConfig pal_default_config = {
+# if NUC123_HAS_GPIOA
+ {VAL_GPIOA_PMD, VAL_GPIOA_OFFD, VAL_GPIOA_DMASK, VAL_GPIOA_DBEN, VAL_GPIOA_IMD, VAL_GPIOA_IEN, VAL_GPIOA_ISRC, VAL_GPIOA_DOUT},
+# endif
+# if NUC123_HAS_GPIOB
+ {VAL_GPIOB_PMD, VAL_GPIOB_OFFD, VAL_GPIOB_DMASK, VAL_GPIOB_DBEN, VAL_GPIOB_IMD, VAL_GPIOB_IEN, VAL_GPIOB_ISRC, VAL_GPIOB_DOUT},
+# endif
+# if NUC123_HAS_GPIOC
+ {VAL_GPIOC_PMD, VAL_GPIOC_OFFD, VAL_GPIOC_DMASK, VAL_GPIOC_DBEN, VAL_GPIOC_IMD, VAL_GPIOC_IEN, VAL_GPIOC_ISRC, VAL_GPIOC_DOUT},
+# endif
+# if NUC123_HAS_GPIOD
+ {VAL_GPIOD_PMD, VAL_GPIOD_OFFD, VAL_GPIOD_DMASK, VAL_GPIOD_DBEN, VAL_GPIOD_IMD, VAL_GPIOD_IEN, VAL_GPIOD_ISRC, VAL_GPIOD_DOUT},
+# endif
+# if NUC123_HAS_GPIOF
+ {VAL_GPIOF_PMD, VAL_GPIOF_OFFD, VAL_GPIOF_DMASK, VAL_GPIOF_DBEN, VAL_GPIOF_IMD, VAL_GPIOF_IEN, VAL_GPIOF_ISRC, VAL_GPIOF_DOUT},
+# endif
+};
+#endif
+
+/**
+ * @brief Early initialization code.
+ * @details This initialization must be performed just after stack setup
+ * and before any other initialization.
+ */
+void __early_init(void) {
+ NUC123_clock_init();
+}
+
+/**
+ * @brief Board-specific initialization code.
+ * @todo Add your board-specific code, if any.
+ */
+void boardInit(void) {}
diff --git a/keyboards/ducky/one2sf/1967st/boards/NUC123SD4AN0/board.h b/keyboards/ducky/one2sf/1967st/boards/NUC123SD4AN0/board.h
new file mode 100644
index 0000000000..c43b2ce422
--- /dev/null
+++ b/keyboards/ducky/one2sf/1967st/boards/NUC123SD4AN0/board.h
@@ -0,0 +1,961 @@
+/*
+ ChibiOS Driver element - Copyright (C) 2019 /u/KeepItUnder
+
+ 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
+
+/*
+ * Setup for Generic NUC123 board.
+ */
+
+/*
+ * Board identifier.
+ */
+#define BOARD_NUC123SD4AN0
+#define BOARD_NAME "Nuvoton NUC123SD4AN0 MCU"
+
+/*
+ * Board oscillators-related settings.
+ * NOTE: LSE not fitted.
+ * NOTE: HSE is fitted.
+ */
+#if !defined(NUC123_LSECLK)
+#define NUC123_LSECLK 0U
+#endif
+
+#define NUC123_LSEDRV (3U << 3U)
+
+#if !defined(NUC123_HSECLK)
+#define NUC123_HSECLK 12000000U
+#endif
+
+//#define NUC123_HSE_BYPASS
+
+/*
+ * MCU type as defined in the NUC123 header.
+ */
+#define NUC123SD4AN0
+
+/*
+ * GPIO Multi Function Pin USB Setup
+ * Requires Some GPIO pins to be disabled/set to USB
+ */
+
+/*
+ * IO pins assignments.
+ */
+#define GPIOA_PIN0 0U
+#define GPIOA_PIN1 1U
+#define GPIOA_PIN2 2U
+#define GPIOA_PIN3 3U
+#define GPIOA_PIN4 4U
+#define GPIOA_PIN5 5U
+#define GPIOA_PIN6 6U
+#define GPIOA_PIN7 7U
+#define GPIOA_PIN8 8U
+#define GPIOA_PIN9 9U
+#define GPIOA_SPI1_MISO0 10U
+#define GPIOA_SPI1_CLK 11U
+#define GPIOA_PWM0 12U
+#define GPIOA_PWM1 13U
+#define GPIOA_PWM2 14U
+#define GPIOA_PWM3 15U
+
+#define GPIOB_UART0_RXD 0U
+#define GPIOB_UART0_TXD 1U
+#define GPIOB_UART0_RTS 2U
+#define GPIOB_UART0_CTS 3U
+#define GPIOB_UART1_RXD 4U
+#define GPIOB_UART1_TXD 5U
+#define GPIOB_UART1_RTS 6U
+#define GPIOB_UART1_CTS 7U
+#define GPIOB_TM0 8U
+#define GPIOB_TM1 9U
+#define GPIOB_TM2 10U
+#define GPIOB_PIN11 11U
+#define GPIOB_CLK0 12U
+#define GPIOB_PIN13 13U
+#define GPIOB_INT0 14U
+#define GPIOB_INT1 15U
+
+#define GPIOC_PIN0 0U
+#define GPIOC_PIN1 1U
+#define GPIOC_PIN2 2U
+#define GPIOC_PIN3 3U
+#define GPIOC_PIN4 4U
+#define GPIOC_PIN5 5U
+#define GPIOC_PIN6 6U
+#define GPIOC_PIN7 7U
+#define GPIOC_PIN8 8U
+#define GPIOC_PIN9 9U
+#define GPIOC_PIN10 10U
+#define GPIOC_PIN11 11U
+#define GPIOC_PIN12 12U
+#define GPIOC_PIN13 13U
+#define GPIOC_PIN14 14U
+#define GPIOC_PIN15 15U
+
+#define GPIOD_ADC0 0U
+#define GPIOD_ADC1 1U
+#define GPIOD_ADC2 2U
+#define GPIOD_ADC3 3U
+#define GPIOD_ADC4 4U
+#define GPIOD_ADC5 5U
+#define GPIOD_PIN6 6U
+#define GPIOD_PIN7 7U
+#define GPIOD_PIN8 8U
+#define GPIOD_PIN9 9U
+#define GPIOD_PIN10 10U
+#define GPIOD_PIN11 11U
+#define GPIOD_PIN12 12U
+#define GPIOD_PIN13 13U
+#define GPIOD_PIN14 14U
+#define GPIOD_PIN15 15U
+
+#define GPIOE_PIN0 0U
+#define GPIOE_PIN1 1U
+#define GPIOE_PIN2 2U
+#define GPIOE_PIN3 3U
+#define GPIOE_PIN4 4U
+#define GPIOE_PIN5 5U
+#define GPIOE_PIN6 6U
+#define GPIOE_PIN7 7U
+#define GPIOE_PIN8 8U
+#define GPIOE_PIN9 9U
+#define GPIOE_PIN10 10U
+#define GPIOE_PIN11 11U
+#define GPIOE_PIN12 12U
+#define GPIOE_PIN13 13U
+#define GPIOE_PIN14 14U
+#define GPIOE_PIN15 15U
+
+#define GPIOF_OSC_OUT 0U
+#define GPIOF_OSC_IN 1U
+#define GPIOF_I2C0_SDA 2U
+#define GPIOF_I2C0_SCL 3U
+#define GPIOF_PIN4 4U
+#define GPIOF_PIN5 5U
+#define GPIOF_PIN6 6U
+#define GPIOF_PIN7 7U
+#define GPIOF_PIN8 8U
+#define GPIOF_PIN9 9U
+#define GPIOF_PIN10 10U
+#define GPIOF_PIN11 11U
+#define GPIOF_PIN12 12U
+#define GPIOF_PIN13 13U
+#define GPIOF_PIN14 14U
+#define GPIOF_PIN15 15U
+
+/*
+ * IO lines assignments.
+ */
+#define LINE_USB_DM PAL_LINE(GPIOA, 11U)
+#define LINE_USB_DP PAL_LINE(GPIOA, 12U)
+#define LINE_SWDIO PAL_LINE(GPIOA, 13U)
+#define LINE_SWCLK PAL_LINE(GPIOA, 14U)
+
+// #define LINE_SPI2_SCK PAL_LINE(GPIOB, 13U)
+// #define LINE_SPI2_MISO PAL_LINE(GPIOB, 14U)
+// #define LINE_SPI2_MOSI PAL_LINE(GPIOB, 15U)
+
+#define LINE_OSC_IN PAL_LINE(GPIOF, 0U)
+#define LINE_OSC_OUT PAL_LINE(GPIOF, 1U)
+
+/*
+ * I/O ports initial setup, this configuration is established soon after reset
+ * in the initialization code.
+ * Please refer to the NUC123 Reference Manual for details.
+ */
+#define PIN_MODE_INPUT(n) (0U << ((n) * 2U))
+#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2U))
+#define PIN_MODE_OPENDRAIN(n) (2U << ((n) * 2U))
+#define PIN_MODE_QUASI(n) (3U << ((n) * 2U))
+#define PIN_DIGITAL_EN(n) (0U << (n))
+#define PIN_DIGITAL_DIS(n) (1U << (n))
+#define PIN_DMASK_DIS(n) (0U << (n))
+#define PIN_DMASK_EN(n) (1U << (n))
+#define PIN_DBNCE_DIS(n) (0U << (n))
+#define PIN_DBNCE_EN(n) (1U << (n))
+#define PIN_IMD_EDGE(n) (0U << (n))
+#define PIN_IMD_LVL(n) (1U << (n))
+#define PIN_IEN_FELL_DIS(n) (0U << (n))
+#define PIN_IEN_FELL_EN(n) (1U << (n))
+#define PIN_IEN_REHL_DIS(n) ((0U << (n)) << 16)
+#define PIN_IEN_REHL_EN(n) ((1U << (n)) << 16)
+#define PIN_ISRC_EN(n) (1U << (n))
+#define PIN_ISRC_DIS(n) (0U << (n))
+#define PIN_ISRC_CLR(n) (1U << (n))
+#define PIN_DATA_LOW(n) (0U << (n))
+#define PIN_DATA_HIGH(n) (1U << (n))
+
+/*
+ * GPIOA setup:
+ *
+ * PA0 - PIN0 (input pullup).
+ * PA1 - PIN1 (input pullup).
+ * PA2 - PIN2 (input pullup).
+ * PA3 - PIN3 (input pullup).
+ * PA4 - PIN4 (input pullup).
+ * PA5 - PIN5 (input pullup).
+ * PA6 - PIN6 (input pullup).
+ * PA7 - PIN7 (input pullup).
+ * PA8 - PIN8 (input pullup).
+ * PA9 - PIN9 (input pullup).
+ * PA10 - SPI1_MISO0 (input pullup).
+ * PA11 - SPI1_CLK (input floating).
+ * PA12 - PWM0 (input floating).
+ * PA13 - PWM1 (input pullup).
+ * PA14 - PWM2 (input pullup).
+ * PA15 - PWM3 (input pullup).
+ */
+
+#define VAL_GPIOA_PMD (PIN_MODE_INPUT(GPIOA_PIN0) | \
+ PIN_MODE_INPUT(GPIOA_PIN1) | \
+ PIN_MODE_INPUT(GPIOA_PIN2) | \
+ PIN_MODE_INPUT(GPIOA_PIN3) | \
+ PIN_MODE_INPUT(GPIOA_PIN4) | \
+ PIN_MODE_INPUT(GPIOA_PIN5) | \
+ PIN_MODE_INPUT(GPIOA_PIN6) | \
+ PIN_MODE_INPUT(GPIOA_PIN7) | \
+ PIN_MODE_INPUT(GPIOA_PIN8) | \
+ PIN_MODE_INPUT(GPIOA_PIN9) | \
+ PIN_MODE_INPUT(GPIOA_SPI1_MISO0) | \
+ PIN_MODE_INPUT(GPIOA_SPI1_CLK) | \
+ PIN_MODE_INPUT(GPIOA_PWM0) | \
+ PIN_MODE_INPUT(GPIOA_PWM1) | \
+ PIN_MODE_INPUT(GPIOA_PWM2) | \
+ PIN_MODE_INPUT(GPIOA_PWM3))
+#define VAL_GPIOA_OFFD (PIN_DIGITAL_EN(GPIOA_PIN0) | \
+ PIN_DIGITAL_EN(GPIOA_PIN1) | \
+ PIN_DIGITAL_EN(GPIOA_PIN2) | \
+ PIN_DIGITAL_EN(GPIOA_PIN3) | \
+ PIN_DIGITAL_EN(GPIOA_PIN4) | \
+ PIN_DIGITAL_EN(GPIOA_PIN5) | \
+ PIN_DIGITAL_EN(GPIOA_PIN6) | \
+ PIN_DIGITAL_EN(GPIOA_PIN7) | \
+ PIN_DIGITAL_EN(GPIOA_PIN8) | \
+ PIN_DIGITAL_EN(GPIOA_PIN9) | \
+ PIN_DIGITAL_EN(GPIOA_SPI1_MISO0) | \
+ PIN_DIGITAL_EN(GPIOA_SPI1_CLK) | \
+ PIN_DIGITAL_EN(GPIOA_PWM0) | \
+ PIN_DIGITAL_EN(GPIOA_PWM1) | \
+ PIN_DIGITAL_EN(GPIOA_PWM2) | \
+ PIN_DIGITAL_EN(GPIOA_PWM3))
+#define VAL_GPIOA_DMASK (PIN_DMASK_EN(GPIOA_PIN0) | \
+ PIN_DMASK_EN(GPIOA_PIN1) | \
+ PIN_DMASK_EN(GPIOA_PIN2) | \
+ PIN_DMASK_EN(GPIOA_PIN3) | \
+ PIN_DMASK_EN(GPIOA_PIN4) | \
+ PIN_DMASK_EN(GPIOA_PIN5) | \
+ PIN_DMASK_EN(GPIOA_PIN6) | \
+ PIN_DMASK_EN(GPIOA_PIN7) | \
+ PIN_DMASK_EN(GPIOA_PIN8) | \
+ PIN_DMASK_EN(GPIOA_PIN9) | \
+ PIN_DMASK_EN(GPIOA_SPI1_MISO0) | \
+ PIN_DMASK_EN(GPIOA_SPI1_CLK) | \
+ PIN_DMASK_EN(GPIOA_PWM0) | \
+ PIN_DMASK_EN(GPIOA_PWM1) | \
+ PIN_DMASK_EN(GPIOA_PWM2) | \
+ PIN_DMASK_EN(GPIOA_PWM3))
+#define VAL_GPIOA_DBEN (PIN_DBNCE_EN(GPIOA_PIN0) | \
+ PIN_DBNCE_EN(GPIOA_PIN1) | \
+ PIN_DBNCE_EN(GPIOA_PIN2) | \
+ PIN_DBNCE_EN(GPIOA_PIN3) | \
+ PIN_DBNCE_EN(GPIOA_PIN4) | \
+ PIN_DBNCE_EN(GPIOA_PIN5) | \
+ PIN_DBNCE_EN(GPIOA_PIN6) | \
+ PIN_DBNCE_EN(GPIOA_PIN7) | \
+ PIN_DBNCE_EN(GPIOA_PIN8) | \
+ PIN_DBNCE_EN(GPIOA_PIN9) | \
+ PIN_DBNCE_EN(GPIOA_SPI1_MISO0) | \
+ PIN_DBNCE_EN(GPIOA_SPI1_CLK) | \
+ PIN_DBNCE_EN(GPIOA_PWM0) | \
+ PIN_DBNCE_EN(GPIOA_PWM1) | \
+ PIN_DBNCE_EN(GPIOA_PWM2) | \
+ PIN_DBNCE_EN(GPIOA_PWM3))
+#define VAL_GPIOA_IMD (PIN_IMD_EDGE(GPIOA_PIN0) | \
+ PIN_IMD_EDGE(GPIOA_PIN1) | \
+ PIN_IMD_EDGE(GPIOA_PIN2) | \
+ PIN_IMD_EDGE(GPIOA_PIN3) | \
+ PIN_IMD_EDGE(GPIOA_PIN4) | \
+ PIN_IMD_EDGE(GPIOA_PIN5) | \
+ PIN_IMD_EDGE(GPIOA_PIN6) | \
+ PIN_IMD_EDGE(GPIOA_PIN7) | \
+ PIN_IMD_EDGE(GPIOA_PIN8) | \
+ PIN_IMD_EDGE(GPIOA_PIN9) | \
+ PIN_IMD_EDGE(GPIOA_SPI1_MISO0) | \
+ PIN_IMD_EDGE(GPIOA_SPI1_CLK) | \
+ PIN_IMD_EDGE(GPIOA_PWM0) | \
+ PIN_IMD_EDGE(GPIOA_PWM1) | \
+ PIN_IMD_EDGE(GPIOA_PWM2) | \
+ PIN_IMD_EDGE(GPIOA_PWM3))
+#define VAL_GPIOA_IEN (PIN_IEN_FELL_DIS(GPIOA_PIN0) | \
+ PIN_IEN_FELL_DIS(GPIOA_PIN1) | \
+ PIN_IEN_FELL_DIS(GPIOA_PIN2) | \
+ PIN_IEN_FELL_DIS(GPIOA_PIN3) | \
+ PIN_IEN_FELL_DIS(GPIOA_PIN4) | \
+ PIN_IEN_FELL_DIS(GPIOA_PIN5) | \
+ PIN_IEN_FELL_DIS(GPIOA_PIN6) | \
+ PIN_IEN_FELL_DIS(GPIOA_PIN7) | \
+ PIN_IEN_FELL_DIS(GPIOA_PIN8) | \
+ PIN_IEN_FELL_DIS(GPIOA_PIN9) | \
+ PIN_IEN_FELL_DIS(GPIOA_SPI1_MISO0) | \
+ PIN_IEN_FELL_DIS(GPIOA_SPI1_CLK) | \
+ PIN_IEN_FELL_DIS(GPIOA_PWM0) | \
+ PIN_IEN_FELL_DIS(GPIOA_PWM1) | \
+ PIN_IEN_FELL_DIS(GPIOA_PWM2) | \
+ PIN_IEN_FELL_DIS(GPIOA_PWM3))
+#define VAL_GPIOA_ISRC (PIN_ISRC_DIS(GPIOA_PIN0) | \
+ PIN_ISRC_DIS(GPIOA_PIN1) | \
+ PIN_ISRC_DIS(GPIOA_PIN2) | \
+ PIN_ISRC_DIS(GPIOA_PIN3) | \
+ PIN_ISRC_DIS(GPIOA_PIN4) | \
+ PIN_ISRC_DIS(GPIOA_PIN5) | \
+ PIN_ISRC_DIS(GPIOA_PIN6) | \
+ PIN_ISRC_DIS(GPIOA_PIN7) | \
+ PIN_ISRC_DIS(GPIOA_PIN8) | \
+ PIN_ISRC_DIS(GPIOA_PIN9) | \
+ PIN_ISRC_DIS(GPIOA_SPI1_MISO0) | \
+ PIN_ISRC_DIS(GPIOA_SPI1_CLK) | \
+ PIN_ISRC_DIS(GPIOA_PWM0) | \
+ PIN_ISRC_DIS(GPIOA_PWM1) | \
+ PIN_ISRC_DIS(GPIOA_PWM2) | \
+ PIN_ISRC_DIS(GPIOA_PWM3))
+#define VAL_GPIOA_DOUT (PIN_DATA_LOW(GPIOA_PIN0) | \
+ PIN_DATA_LOW(GPIOA_PIN1) | \
+ PIN_DATA_LOW(GPIOA_PIN2) | \
+ PIN_DATA_LOW(GPIOA_PIN3) | \
+ PIN_DATA_LOW(GPIOA_PIN4) | \
+ PIN_DATA_LOW(GPIOA_PIN5) | \
+ PIN_DATA_LOW(GPIOA_PIN6) | \
+ PIN_DATA_LOW(GPIOA_PIN7) | \
+ PIN_DATA_LOW(GPIOA_PIN8) | \
+ PIN_DATA_LOW(GPIOA_PIN9) | \
+ PIN_DATA_LOW(GPIOA_SPI1_MISO0) | \
+ PIN_DATA_LOW(GPIOA_SPI1_CLK) | \
+ PIN_DATA_LOW(GPIOA_PWM0) | \
+ PIN_DATA_LOW(GPIOA_PWM1) | \
+ PIN_DATA_LOW(GPIOA_PWM2) | \
+ PIN_DATA_LOW(GPIOA_PWM3))
+
+/*
+ * GPIOB setup:
+ *
+ * PB0 - UART0_RXD (input pullup).
+ * PB1 - UART0_TXD (output).
+ * PB2 - UART0_RTS (output).
+ * PB3 - UART0_CTS (output).
+ * PB4 - UART1_RXD (output).
+ * PB5 - UART1_TXD (output).
+ * PB6 - UART1_RTS (output).
+ * PB7 - UART1_CTS (output).
+ * PB8 - TM0 (input pullup).
+ * PB9 - TM1 (input pullup).
+ * PB10 - TM2 (input pullup).
+ * PB11 - PIN11 (input pullup).
+ * PB12 - CLK0 (output).
+ * PB13 - PIN13 (output).
+ * PB14 - INT0 (debug output).
+ * PB15 - INT1 (input pullup).
+ */
+#define VAL_GPIOB_PMD (PIN_MODE_INPUT(GPIOB_UART0_RXD) | \
+ PIN_MODE_OUTPUT(GPIOB_UART0_TXD) | \
+ PIN_MODE_OUTPUT(GPIOB_UART0_RTS) | \
+ PIN_MODE_OUTPUT(GPIOB_UART0_CTS) | \
+ PIN_MODE_OUTPUT(GPIOB_UART1_RXD) | \
+ PIN_MODE_OUTPUT(GPIOB_UART1_TXD) | \
+ PIN_MODE_OUTPUT(GPIOB_UART1_RTS) | \
+ PIN_MODE_OUTPUT(GPIOB_UART1_CTS) | \
+ PIN_MODE_INPUT(GPIOB_TM0) | \
+ PIN_MODE_INPUT(GPIOB_TM1) | \
+ PIN_MODE_INPUT(GPIOB_TM2) | \
+ PIN_MODE_INPUT(GPIOB_PIN11) | \
+ PIN_MODE_OUTPUT(GPIOB_CLK0) | \
+ PIN_MODE_OUTPUT(GPIOB_PIN13) | \
+ PIN_MODE_OUTPUT(GPIOB_INT0) | \
+ PIN_MODE_INPUT(GPIOB_INT1))
+#define VAL_GPIOB_OFFD (PIN_DIGITAL_EN(GPIOB_UART0_RXD) | \
+ PIN_DIGITAL_DIS(GPIOB_UART0_TXD) | \
+ PIN_DIGITAL_DIS(GPIOB_UART0_RTS) | \
+ PIN_DIGITAL_DIS(GPIOB_UART0_CTS) | \
+ PIN_DIGITAL_DIS(GPIOB_UART1_RXD) | \
+ PIN_DIGITAL_DIS(GPIOB_UART1_TXD) | \
+ PIN_DIGITAL_DIS(GPIOB_UART1_RTS) | \
+ PIN_DIGITAL_DIS(GPIOB_UART1_CTS) | \
+ PIN_DIGITAL_DIS(GPIOB_TM0) | \
+ PIN_DIGITAL_EN(GPIOB_TM1) | \
+ PIN_DIGITAL_EN(GPIOB_TM2) | \
+ PIN_DIGITAL_EN(GPIOB_PIN11) | \
+ PIN_DIGITAL_DIS(GPIOB_CLK0) | \
+ PIN_DIGITAL_DIS(GPIOB_PIN13) | \
+ PIN_DIGITAL_DIS(GPIOB_INT0) | \
+ PIN_DIGITAL_EN(GPIOB_INT1))
+#define VAL_GPIOB_DMASK (PIN_DMASK_EN(GPIOB_UART0_RXD) | \
+ PIN_DMASK_DIS(GPIOB_UART0_TXD) | \
+ PIN_DMASK_DIS(GPIOB_UART0_RTS) | \
+ PIN_DMASK_DIS(GPIOB_UART0_CTS) | \
+ PIN_DMASK_DIS(GPIOB_UART1_RXD) | \
+ PIN_DMASK_DIS(GPIOB_UART1_TXD) | \
+ PIN_DMASK_DIS(GPIOB_UART1_RTS) | \
+ PIN_DMASK_DIS(GPIOB_UART1_CTS) | \
+ PIN_DMASK_EN(GPIOB_TM0) | \
+ PIN_DMASK_EN(GPIOB_TM1) | \
+ PIN_DMASK_EN(GPIOB_TM2) | \
+ PIN_DMASK_EN(GPIOB_PIN11) | \
+ PIN_DMASK_DIS(GPIOB_CLK0) | \
+ PIN_DMASK_DIS(GPIOB_PIN13) | \
+ PIN_DMASK_DIS(GPIOB_INT0) | \
+ PIN_DMASK_EN(GPIOB_INT1))
+#define VAL_GPIOB_DBEN (PIN_DBNCE_EN(GPIOB_UART0_RXD) | \
+ PIN_DBNCE_DIS(GPIOB_UART0_TXD) | \
+ PIN_DBNCE_DIS(GPIOB_UART0_RTS) | \
+ PIN_DBNCE_DIS(GPIOB_UART0_CTS) | \
+ PIN_DBNCE_DIS(GPIOB_UART1_RXD) | \
+ PIN_DBNCE_DIS(GPIOB_UART1_TXD) | \
+ PIN_DBNCE_DIS(GPIOB_UART1_RTS) | \
+ PIN_DBNCE_DIS(GPIOB_UART1_CTS) | \
+ PIN_DBNCE_EN(GPIOB_TM0) | \
+ PIN_DBNCE_EN(GPIOB_TM1) | \
+ PIN_DBNCE_EN(GPIOB_TM2) | \
+ PIN_DBNCE_EN(GPIOB_PIN11) | \
+ PIN_DBNCE_DIS(GPIOB_CLK0) | \
+ PIN_DBNCE_DIS(GPIOB_PIN13) | \
+ PIN_DBNCE_DIS(GPIOB_INT0) | \
+ PIN_DBNCE_EN(GPIOB_INT1))
+#define VAL_GPIOB_IMD (PIN_IMD_EDGE(GPIOB_UART0_RXD) | \
+ PIN_IMD_EDGE(GPIOB_UART0_TXD) | \
+ PIN_IMD_EDGE(GPIOB_UART0_RTS) | \
+ PIN_IMD_EDGE(GPIOB_UART0_CTS) | \
+ PIN_IMD_EDGE(GPIOB_UART1_RXD) | \
+ PIN_IMD_EDGE(GPIOB_UART1_TXD) | \
+ PIN_IMD_EDGE(GPIOB_UART1_RTS) | \
+ PIN_IMD_EDGE(GPIOB_UART1_CTS) | \
+ PIN_IMD_EDGE(GPIOB_TM0) | \
+ PIN_IMD_EDGE(GPIOB_TM1) | \
+ PIN_IMD_EDGE(GPIOB_TM2) | \
+ PIN_IMD_EDGE(GPIOB_PIN11) | \
+ PIN_IMD_EDGE(GPIOB_CLK0) | \
+ PIN_IMD_EDGE(GPIOB_PIN13) | \
+ PIN_IMD_EDGE(GPIOB_INT0) | \
+ PIN_IMD_EDGE(GPIOB_INT1))
+#define VAL_GPIOB_IEN (PIN_IEN_FELL_DIS(GPIOB_UART0_RXD) | \
+ PIN_IEN_FELL_DIS(GPIOB_UART0_TXD) | \
+ PIN_IEN_FELL_DIS(GPIOB_UART0_RTS) | \
+ PIN_IEN_FELL_DIS(GPIOB_UART0_CTS) | \
+ PIN_IEN_FELL_DIS(GPIOB_UART1_RXD) | \
+ PIN_IEN_FELL_DIS(GPIOB_UART1_TXD) | \
+ PIN_IEN_FELL_DIS(GPIOB_UART1_RTS) | \
+ PIN_IEN_FELL_DIS(GPIOB_UART1_CTS) | \
+ PIN_IEN_FELL_DIS(GPIOB_TM0) | \
+ PIN_IEN_FELL_DIS(GPIOB_TM1) | \
+ PIN_IEN_FELL_DIS(GPIOB_TM2) | \
+ PIN_IEN_FELL_DIS(GPIOB_PIN11) | \
+ PIN_IEN_FELL_DIS(GPIOB_CLK0) | \
+ PIN_IEN_FELL_DIS(GPIOB_PIN13) | \
+ PIN_IEN_FELL_DIS(GPIOB_INT0) | \
+ PIN_IEN_FELL_DIS(GPIOB_INT1))
+#define VAL_GPIOB_ISRC (PIN_ISRC_DIS(GPIOB_UART0_RXD) | \
+ PIN_ISRC_DIS(GPIOB_UART0_TXD) | \
+ PIN_ISRC_DIS(GPIOB_UART0_RTS) | \
+ PIN_ISRC_DIS(GPIOB_UART0_CTS) | \
+ PIN_ISRC_DIS(GPIOB_UART1_RXD) | \
+ PIN_ISRC_DIS(GPIOB_UART1_TXD) | \
+ PIN_ISRC_DIS(GPIOB_UART1_RTS) | \
+ PIN_ISRC_DIS(GPIOB_UART1_CTS) | \
+ PIN_ISRC_DIS(GPIOB_TM0) | \
+ PIN_ISRC_DIS(GPIOB_TM1) | \
+ PIN_ISRC_DIS(GPIOB_TM2) | \
+ PIN_ISRC_DIS(GPIOB_PIN11) | \
+ PIN_ISRC_DIS(GPIOB_CLK0) | \
+ PIN_ISRC_DIS(GPIOB_PIN13) | \
+ PIN_ISRC_DIS(GPIOB_INT0) | \
+ PIN_ISRC_DIS(GPIOB_INT1))
+#define VAL_GPIOB_DOUT (PIN_DATA_LOW(GPIOB_UART0_RXD) | \
+ PIN_DATA_LOW(GPIOB_UART0_TXD) | \
+ PIN_DATA_LOW(GPIOB_UART0_RTS) | \
+ PIN_DATA_LOW(GPIOB_UART0_CTS) | \
+ PIN_DATA_LOW(GPIOB_UART1_RXD) | \
+ PIN_DATA_LOW(GPIOB_UART1_TXD) | \
+ PIN_DATA_LOW(GPIOB_UART1_RTS) | \
+ PIN_DATA_LOW(GPIOB_UART1_CTS) | \
+ PIN_DATA_LOW(GPIOB_TM0) | \
+ PIN_DATA_LOW(GPIOB_TM1) | \
+ PIN_DATA_LOW(GPIOB_TM2) | \
+ PIN_DATA_LOW(GPIOB_PIN11) | \
+ PIN_DATA_LOW(GPIOB_CLK0) | \
+ PIN_DATA_LOW(GPIOB_PIN13) | \
+ PIN_DATA_LOW(GPIOB_INT0) | \
+ PIN_DATA_LOW(GPIOB_INT1))
+
+/*
+ * GPIOC setup:
+ *
+ * PC0 - PIN0 (input pullup).
+ * PC1 - PIN1 (input pullup).
+ * PC2 - PIN2 (input pullup).
+ * PC3 - PIN3 (input pullup).
+ * PC4 - PIN4 (output).
+ * PC5 - PIN5 (output).
+ * PC6 - PIN6 (input pullup).
+ * PC7 - PIN7 (input pullup).
+ * PC8 - PIN8 (input pullup).
+ * PC9 - PIN9 (input pullup).
+ * PC10 - PIN10 (input pullup).
+ * PC11 - PIN11 (input pullup).
+ * PC12 - PIN12 (input pullup).
+ * PC13 - PIN13 (input pullup).
+ * PC14 - PIN14 (input pullup).
+ * PC15 - PIN15 (input pullup).
+ */
+#define VAL_GPIOC_PMD (PIN_MODE_INPUT(GPIOC_PIN0) | \
+ PIN_MODE_INPUT(GPIOC_PIN1) | \
+ PIN_MODE_INPUT(GPIOC_PIN2) | \
+ PIN_MODE_INPUT(GPIOC_PIN3) | \
+ PIN_MODE_OUTPUT(GPIOC_PIN4) | \
+ PIN_MODE_OUTPUT(GPIOC_PIN5) | \
+ PIN_MODE_INPUT(GPIOC_PIN6) | \
+ PIN_MODE_INPUT(GPIOC_PIN7) | \
+ PIN_MODE_INPUT(GPIOC_PIN8) | \
+ PIN_MODE_INPUT(GPIOC_PIN9) | \
+ PIN_MODE_INPUT(GPIOC_PIN10) | \
+ PIN_MODE_INPUT(GPIOC_PIN11) | \
+ PIN_MODE_INPUT(GPIOC_PIN12) | \
+ PIN_MODE_INPUT(GPIOC_PIN13) | \
+ PIN_MODE_INPUT(GPIOC_PIN14) | \
+ PIN_MODE_INPUT(GPIOC_PIN15))
+#define VAL_GPIOC_OFFD (PIN_DIGITAL_EN(GPIOC_PIN0) | \
+ PIN_DIGITAL_EN(GPIOC_PIN1) | \
+ PIN_DIGITAL_EN(GPIOC_PIN2) | \
+ PIN_DIGITAL_EN(GPIOC_PIN3) | \
+ PIN_DIGITAL_DIS(GPIOC_PIN4) | \
+ PIN_DIGITAL_DIS(GPIOC_PIN5) | \
+ PIN_DIGITAL_EN(GPIOC_PIN6) | \
+ PIN_DIGITAL_EN(GPIOC_PIN7) | \
+ PIN_DIGITAL_EN(GPIOC_PIN8) | \
+ PIN_DIGITAL_EN(GPIOC_PIN9) | \
+ PIN_DIGITAL_EN(GPIOC_PIN10) | \
+ PIN_DIGITAL_EN(GPIOC_PIN11) | \
+ PIN_DIGITAL_EN(GPIOC_PIN12) | \
+ PIN_DIGITAL_EN(GPIOC_PIN13) | \
+ PIN_DIGITAL_EN(GPIOC_PIN14) | \
+ PIN_DIGITAL_EN(GPIOC_PIN15))
+#define VAL_GPIOC_DMASK (PIN_DMASK_EN(GPIOC_PIN0) | \
+ PIN_DMASK_EN(GPIOC_PIN1) | \
+ PIN_DMASK_EN(GPIOC_PIN2) | \
+ PIN_DMASK_EN(GPIOC_PIN3) | \
+ PIN_DMASK_DIS(GPIOC_PIN4) | \
+ PIN_DMASK_DIS(GPIOC_PIN5) | \
+ PIN_DMASK_EN(GPIOC_PIN6) | \
+ PIN_DMASK_EN(GPIOC_PIN7) | \
+ PIN_DMASK_EN(GPIOC_PIN8) | \
+ PIN_DMASK_EN(GPIOC_PIN9) | \
+ PIN_DMASK_EN(GPIOC_PIN10) | \
+ PIN_DMASK_EN(GPIOC_PIN11) | \
+ PIN_DMASK_EN(GPIOC_PIN12) | \
+ PIN_DMASK_EN(GPIOC_PIN13) | \
+ PIN_DMASK_EN(GPIOC_PIN14) | \
+ PIN_DMASK_EN(GPIOC_PIN15))
+#define VAL_GPIOC_DBEN (PIN_DBNCE_EN(GPIOC_PIN0) | \
+ PIN_DBNCE_EN(GPIOC_PIN1) | \
+ PIN_DBNCE_EN(GPIOC_PIN2) | \
+ PIN_DBNCE_EN(GPIOC_PIN3) | \
+ PIN_DBNCE_DIS(GPIOC_PIN4) | \
+ PIN_DBNCE_DIS(GPIOC_PIN5) | \
+ PIN_DBNCE_EN(GPIOC_PIN6) | \
+ PIN_DBNCE_EN(GPIOC_PIN7) | \
+ PIN_DBNCE_EN(GPIOC_PIN8) | \
+ PIN_DBNCE_EN(GPIOC_PIN9) | \
+ PIN_DBNCE_EN(GPIOC_PIN10) | \
+ PIN_DBNCE_EN(GPIOC_PIN11) | \
+ PIN_DBNCE_EN(GPIOC_PIN12) | \
+ PIN_DBNCE_EN(GPIOC_PIN13) | \
+ PIN_DBNCE_EN(GPIOC_PIN14) | \
+ PIN_DBNCE_EN(GPIOC_PIN15))
+#define VAL_GPIOC_IMD (PIN_IMD_EDGE(GPIOC_PIN0) | \
+ PIN_IMD_EDGE(GPIOC_PIN1) | \
+ PIN_IMD_EDGE(GPIOC_PIN2) | \
+ PIN_IMD_EDGE(GPIOC_PIN3) | \
+ PIN_IMD_EDGE(GPIOC_PIN4) | \
+ PIN_IMD_EDGE(GPIOC_PIN5) | \
+ PIN_IMD_EDGE(GPIOC_PIN6) | \
+ PIN_IMD_EDGE(GPIOC_PIN7) | \
+ PIN_IMD_EDGE(GPIOC_PIN8) | \
+ PIN_IMD_EDGE(GPIOC_PIN9) | \
+ PIN_IMD_EDGE(GPIOC_PIN10) | \
+ PIN_IMD_EDGE(GPIOC_PIN11) | \
+ PIN_IMD_EDGE(GPIOC_PIN12) | \
+ PIN_IMD_EDGE(GPIOC_PIN13) | \
+ PIN_IMD_EDGE(GPIOC_PIN14) | \
+ PIN_IMD_EDGE(GPIOC_PIN15))
+#define VAL_GPIOC_IEN (PIN_IEN_FELL_DIS(GPIOC_PIN0) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN1) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN2) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN3) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN4) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN5) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN6) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN7) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN8) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN9) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN10) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN11) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN12) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN13) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN14) | \
+ PIN_IEN_FELL_DIS(GPIOC_PIN15))
+#define VAL_GPIOC_ISRC (PIN_ISRC_DIS(GPIOC_PIN0) | \
+ PIN_ISRC_DIS(GPIOC_PIN1) | \
+ PIN_ISRC_DIS(GPIOC_PIN2) | \
+ PIN_ISRC_DIS(GPIOC_PIN3) | \
+ PIN_ISRC_DIS(GPIOC_PIN4) | \
+ PIN_ISRC_DIS(GPIOC_PIN5) | \
+ PIN_ISRC_DIS(GPIOC_PIN6) | \
+ PIN_ISRC_DIS(GPIOC_PIN7) | \
+ PIN_ISRC_DIS(GPIOC_PIN8) | \
+ PIN_ISRC_DIS(GPIOC_PIN9) | \
+ PIN_ISRC_DIS(GPIOC_PIN10) | \
+ PIN_ISRC_DIS(GPIOC_PIN11) | \
+ PIN_ISRC_DIS(GPIOC_PIN12) | \
+ PIN_ISRC_DIS(GPIOC_PIN13) | \
+ PIN_ISRC_DIS(GPIOC_PIN14) | \
+ PIN_ISRC_DIS(GPIOC_PIN15))
+#define VAL_GPIOC_DOUT (PIN_DATA_LOW(GPIOC_PIN0) | \
+ PIN_DATA_LOW(GPIOC_PIN1) | \
+ PIN_DATA_LOW(GPIOC_PIN2) | \
+ PIN_DATA_LOW(GPIOC_PIN3) | \
+ PIN_DATA_LOW(GPIOC_PIN4) | \
+ PIN_DATA_LOW(GPIOC_PIN5) | \
+ PIN_DATA_LOW(GPIOC_PIN6) | \
+ PIN_DATA_LOW(GPIOC_PIN7) | \
+ PIN_DATA_LOW(GPIOC_PIN8) | \
+ PIN_DATA_LOW(GPIOC_PIN9) | \
+ PIN_DATA_LOW(GPIOC_PIN10) | \
+ PIN_DATA_LOW(GPIOC_PIN11) | \
+ PIN_DATA_LOW(GPIOC_PIN12) | \
+ PIN_DATA_LOW(GPIOC_PIN13) | \
+ PIN_DATA_LOW(GPIOC_PIN14) | \
+ PIN_DATA_LOW(GPIOC_PIN15))
+
+/*
+ * GPIOD setup:
+ *
+ * PD0 - ADC0 (input pullup).
+ * PD1 - ADC1 (input pullup).
+ * PD2 - ADC2 (input pullup).
+ * PD3 - ADC3 (output).
+ * PD4 - ADC4 (output).
+ * PD5 - ADC5 (output).
+ * PD6 - PIN6 (input pullup).
+ * PD7 - PIN7 (input pullup).
+ * PD8 - PIN8 (input pullup).
+ * PD9 - PIN9 (output).
+ * PD10 - PIN10 (debug output).
+ * PD11 - PIN11 (output).
+ * PD12 - PIN12 (input pullup).
+ * PD13 - PIN13 (input pullup).
+ * PD14 - PIN14 (input pullup).
+ * PD15 - PIN15 (input pullup).
+ */
+#define VAL_GPIOD_PMD (PIN_MODE_INPUT(GPIOD_ADC0) | \
+ PIN_MODE_INPUT(GPIOD_ADC1) | \
+ PIN_MODE_INPUT(GPIOD_ADC2) | \
+ PIN_MODE_OUTPUT(GPIOD_ADC3) | \
+ PIN_MODE_OUTPUT(GPIOD_ADC4) | \
+ PIN_MODE_OUTPUT(GPIOD_ADC5) | \
+ PIN_MODE_INPUT(GPIOD_PIN6) | \
+ PIN_MODE_INPUT(GPIOD_PIN7) | \
+ PIN_MODE_INPUT(GPIOD_PIN8) | \
+ PIN_MODE_OUTPUT(GPIOD_PIN9) | \
+ PIN_MODE_OUTPUT(GPIOD_PIN10) | \
+ PIN_MODE_OUTPUT(GPIOD_PIN11) | \
+ PIN_MODE_INPUT(GPIOD_PIN12) | \
+ PIN_MODE_INPUT(GPIOD_PIN13) | \
+ PIN_MODE_INPUT(GPIOD_PIN14) | \
+ PIN_MODE_INPUT(GPIOD_PIN15))
+#define VAL_GPIOD_OFFD (PIN_DIGITAL_EN(GPIOD_ADC0) | \
+ PIN_DIGITAL_EN(GPIOD_ADC1) | \
+ PIN_DIGITAL_EN(GPIOD_ADC2) | \
+ PIN_DIGITAL_DIS(GPIOD_ADC3) | \
+ PIN_DIGITAL_DIS(GPIOD_ADC4) | \
+ PIN_DIGITAL_DIS(GPIOD_ADC5) | \
+ PIN_DIGITAL_EN(GPIOD_PIN6) | \
+ PIN_DIGITAL_EN(GPIOD_PIN7) | \
+ PIN_DIGITAL_EN(GPIOD_PIN8) | \
+ PIN_DIGITAL_DIS(GPIOD_PIN9) | \
+ PIN_DIGITAL_DIS(GPIOD_PIN10) | \
+ PIN_DIGITAL_DIS(GPIOD_PIN11) | \
+ PIN_DIGITAL_EN(GPIOD_PIN12) | \
+ PIN_DIGITAL_EN(GPIOD_PIN13) | \
+ PIN_DIGITAL_EN(GPIOD_PIN14) | \
+ PIN_DIGITAL_EN(GPIOD_PIN15))
+#define VAL_GPIOD_DMASK (PIN_DMASK_EN(GPIOD_ADC0) | \
+ PIN_DMASK_EN(GPIOD_ADC1) | \
+ PIN_DMASK_EN(GPIOD_ADC2) | \
+ PIN_DMASK_DIS(GPIOD_ADC3) | \
+ PIN_DMASK_DIS(GPIOD_ADC4) | \
+ PIN_DMASK_DIS(GPIOD_ADC5) | \
+ PIN_DMASK_EN(GPIOD_PIN6) | \
+ PIN_DMASK_EN(GPIOD_PIN7) | \
+ PIN_DMASK_EN(GPIOD_PIN8) | \
+ PIN_DMASK_DIS(GPIOD_PIN9) | \
+ PIN_DMASK_DIS(GPIOD_PIN10) | \
+ PIN_DMASK_DIS(GPIOD_PIN11) | \
+ PIN_DMASK_EN(GPIOD_PIN12) | \
+ PIN_DMASK_EN(GPIOD_PIN13) | \
+ PIN_DMASK_EN(GPIOD_PIN14) | \
+ PIN_DMASK_EN(GPIOD_PIN15))
+#define VAL_GPIOD_DBEN (PIN_DBNCE_EN(GPIOD_ADC0) | \
+ PIN_DBNCE_EN(GPIOD_ADC1) | \
+ PIN_DBNCE_EN(GPIOD_ADC2) | \
+ PIN_DBNCE_DIS(GPIOD_ADC3) | \
+ PIN_DBNCE_DIS(GPIOD_ADC4) | \
+ PIN_DBNCE_DIS(GPIOD_ADC5) | \
+ PIN_DBNCE_EN(GPIOD_PIN6) | \
+ PIN_DBNCE_EN(GPIOD_PIN7) | \
+ PIN_DBNCE_EN(GPIOD_PIN8) | \
+ PIN_DBNCE_DIS(GPIOD_PIN9) | \
+ PIN_DBNCE_DIS(GPIOD_PIN10) | \
+ PIN_DBNCE_DIS(GPIOD_PIN11) | \
+ PIN_DBNCE_EN(GPIOD_PIN12) | \
+ PIN_DBNCE_EN(GPIOD_PIN13) | \
+ PIN_DBNCE_EN(GPIOD_PIN14) | \
+ PIN_DBNCE_EN(GPIOD_PIN15))
+#define VAL_GPIOD_IMD (PIN_IMD_EDGE(GPIOD_ADC0) | \
+ PIN_IMD_EDGE(GPIOD_ADC1) | \
+ PIN_IMD_EDGE(GPIOD_ADC2) | \
+ PIN_IMD_EDGE(GPIOD_ADC3) | \
+ PIN_IMD_EDGE(GPIOD_ADC4) | \
+ PIN_IMD_EDGE(GPIOD_ADC5) | \
+ PIN_IMD_EDGE(GPIOD_PIN6) | \
+ PIN_IMD_EDGE(GPIOD_PIN7) | \
+ PIN_IMD_EDGE(GPIOD_PIN8) | \
+ PIN_IMD_EDGE(GPIOD_PIN9) | \
+ PIN_IMD_EDGE(GPIOD_PIN10) | \
+ PIN_IMD_EDGE(GPIOD_PIN11) | \
+ PIN_IMD_EDGE(GPIOD_PIN12) | \
+ PIN_IMD_EDGE(GPIOD_PIN13) | \
+ PIN_IMD_EDGE(GPIOD_PIN14) | \
+ PIN_IMD_EDGE(GPIOD_PIN15))
+#define VAL_GPIOD_IEN (PIN_IEN_FELL_DIS(GPIOD_ADC0) | \
+ PIN_IEN_FELL_DIS(GPIOD_ADC1) | \
+ PIN_IEN_FELL_DIS(GPIOD_ADC2) | \
+ PIN_IEN_FELL_DIS(GPIOD_ADC3) | \
+ PIN_IEN_FELL_DIS(GPIOD_ADC4) | \
+ PIN_IEN_FELL_DIS(GPIOD_ADC5) | \
+ PIN_IEN_FELL_DIS(GPIOD_PIN6) | \
+ PIN_IEN_FELL_DIS(GPIOD_PIN7) | \
+ PIN_IEN_FELL_DIS(GPIOD_PIN8) | \
+ PIN_IEN_FELL_DIS(GPIOD_PIN9) | \
+ PIN_IEN_FELL_DIS(GPIOD_PIN10) | \
+ PIN_IEN_FELL_DIS(GPIOD_PIN11) | \
+ PIN_IEN_FELL_DIS(GPIOD_PIN12) | \
+ PIN_IEN_FELL_DIS(GPIOD_PIN13) | \
+ PIN_IEN_FELL_DIS(GPIOD_PIN14) | \
+ PIN_IEN_FELL_DIS(GPIOD_PIN15))
+#define VAL_GPIOD_ISRC (PIN_ISRC_DIS(GPIOD_ADC0) | \
+ PIN_ISRC_DIS(GPIOD_ADC1) | \
+ PIN_ISRC_DIS(GPIOD_ADC2) | \
+ PIN_ISRC_DIS(GPIOD_ADC3) | \
+ PIN_ISRC_DIS(GPIOD_ADC4) | \
+ PIN_ISRC_DIS(GPIOD_ADC5) | \
+ PIN_ISRC_DIS(GPIOD_PIN6) | \
+ PIN_ISRC_DIS(GPIOD_PIN7) | \
+ PIN_ISRC_DIS(GPIOD_PIN8) | \
+ PIN_ISRC_DIS(GPIOD_PIN9) | \
+ PIN_ISRC_DIS(GPIOD_PIN10) | \
+ PIN_ISRC_DIS(GPIOD_PIN11) | \
+ PIN_ISRC_DIS(GPIOD_PIN12) | \
+ PIN_ISRC_DIS(GPIOD_PIN13) | \
+ PIN_ISRC_DIS(GPIOD_PIN14) | \
+ PIN_ISRC_DIS(GPIOD_PIN15))
+#define VAL_GPIOD_DOUT (PIN_DATA_LOW(GPIOD_ADC0) | \
+ PIN_DATA_LOW(GPIOD_ADC1) | \
+ PIN_DATA_LOW(GPIOD_ADC2) | \
+ PIN_DATA_LOW(GPIOD_ADC3) | \
+ PIN_DATA_LOW(GPIOD_ADC4) | \
+ PIN_DATA_LOW(GPIOD_ADC5) | \
+ PIN_DATA_LOW(GPIOD_PIN6) | \
+ PIN_DATA_LOW(GPIOD_PIN7) | \
+ PIN_DATA_LOW(GPIOD_PIN8) | \
+ PIN_DATA_LOW(GPIOD_PIN9) | \
+ PIN_DATA_LOW(GPIOD_PIN10) | \
+ PIN_DATA_LOW(GPIOD_PIN11) | \
+ PIN_DATA_LOW(GPIOD_PIN12) | \
+ PIN_DATA_LOW(GPIOD_PIN13) | \
+ PIN_DATA_LOW(GPIOD_PIN14) | \
+ PIN_DATA_LOW(GPIOD_PIN15))
+
+/*
+ * GPIOF setup:
+ *
+ * PF0 - OSC_IN (input floating).
+ * PF1 - OSC_OUT (input floating).
+ * PF2 - I2C0_SDA (input pullup).
+ * PF3 - I2C0_SCL (input pullup).
+ * PF4 - PIN4 (input pullup).
+ * PF5 - PIN5 (input pullup).
+ * PF6 - PIN6 (input pullup).
+ * PF7 - PIN7 (input pullup).
+ * PF8 - PIN8 (input pullup).
+ * PF9 - PIN9 (input pullup).
+ * PF10 - PIN10 (input pullup).
+ * PF11 - PIN11 (input pullup).
+ * PF12 - PIN12 (input pullup).
+ * PF13 - PIN13 (input pullup).
+ * PF14 - PIN14 (input pullup).
+ * PF15 - PIN15 (input pullup).
+ */
+#define VAL_GPIOF_PMD (PIN_MODE_QUASI(GPIOF_OSC_IN) | \
+ PIN_MODE_QUASI(GPIOF_OSC_OUT) | \
+ PIN_MODE_INPUT(GPIOF_I2C0_SDA) | \
+ PIN_MODE_INPUT(GPIOF_I2C0_SCL) | \
+ PIN_MODE_INPUT(GPIOF_PIN4) | \
+ PIN_MODE_INPUT(GPIOF_PIN5) | \
+ PIN_MODE_INPUT(GPIOF_PIN6) | \
+ PIN_MODE_INPUT(GPIOF_PIN7) | \
+ PIN_MODE_INPUT(GPIOF_PIN8) | \
+ PIN_MODE_INPUT(GPIOF_PIN9) | \
+ PIN_MODE_INPUT(GPIOF_PIN10) | \
+ PIN_MODE_INPUT(GPIOF_PIN11) | \
+ PIN_MODE_INPUT(GPIOF_PIN12) | \
+ PIN_MODE_INPUT(GPIOF_PIN13) | \
+ PIN_MODE_INPUT(GPIOF_PIN14) | \
+ PIN_MODE_INPUT(GPIOF_PIN15))
+#define VAL_GPIOF_OFFD (PIN_DIGITAL_DIS(GPIOF_OSC_IN) | \
+ PIN_DIGITAL_DIS(GPIOF_OSC_OUT) | \
+ PIN_DIGITAL_EN(GPIOF_I2C0_SDA) | \
+ PIN_DIGITAL_EN(GPIOF_I2C0_SCL) | \
+ PIN_DIGITAL_EN(GPIOF_PIN4) | \
+ PIN_DIGITAL_EN(GPIOF_PIN5) | \
+ PIN_DIGITAL_EN(GPIOF_PIN6) | \
+ PIN_DIGITAL_EN(GPIOF_PIN7) | \
+ PIN_DIGITAL_EN(GPIOF_PIN8) | \
+ PIN_DIGITAL_EN(GPIOF_PIN9) | \
+ PIN_DIGITAL_EN(GPIOF_PIN10) | \
+ PIN_DIGITAL_EN(GPIOF_PIN11) | \
+ PIN_DIGITAL_EN(GPIOF_PIN12) | \
+ PIN_DIGITAL_EN(GPIOF_PIN13) | \
+ PIN_DIGITAL_EN(GPIOF_PIN14) | \
+ PIN_DIGITAL_EN(GPIOF_PIN15))
+#define VAL_GPIOF_DMASK (PIN_DMASK_DIS(GPIOF_OSC_IN) | \
+ PIN_DMASK_DIS(GPIOF_OSC_OUT) | \
+ PIN_DMASK_EN(GPIOF_I2C0_SDA) | \
+ PIN_DMASK_EN(GPIOF_I2C0_SCL) | \
+ PIN_DMASK_EN(GPIOF_PIN4) | \
+ PIN_DMASK_EN(GPIOF_PIN5) | \
+ PIN_DMASK_EN(GPIOF_PIN6) | \
+ PIN_DMASK_EN(GPIOF_PIN7) | \
+ PIN_DMASK_EN(GPIOF_PIN8) | \
+ PIN_DMASK_EN(GPIOF_PIN9) | \
+ PIN_DMASK_EN(GPIOF_PIN10) | \
+ PIN_DMASK_EN(GPIOF_PIN11) | \
+ PIN_DMASK_EN(GPIOF_PIN12) | \
+ PIN_DMASK_EN(GPIOF_PIN13) | \
+ PIN_DMASK_EN(GPIOF_PIN14) | \
+ PIN_DMASK_EN(GPIOF_PIN15))
+#define VAL_GPIOF_DBEN (PIN_DBNCE_DIS(GPIOF_OSC_IN) | \
+ PIN_DBNCE_DIS(GPIOF_OSC_OUT) | \
+ PIN_DBNCE_EN(GPIOF_I2C0_SDA) | \
+ PIN_DBNCE_EN(GPIOF_I2C0_SCL) | \
+ PIN_DBNCE_EN(GPIOF_PIN4) | \
+ PIN_DBNCE_EN(GPIOF_PIN5) | \
+ PIN_DBNCE_EN(GPIOF_PIN6) | \
+ PIN_DBNCE_EN(GPIOF_PIN7) | \
+ PIN_DBNCE_EN(GPIOF_PIN8) | \
+ PIN_DBNCE_EN(GPIOF_PIN9) | \
+ PIN_DBNCE_EN(GPIOF_PIN10) | \
+ PIN_DBNCE_EN(GPIOF_PIN11) | \
+ PIN_DBNCE_EN(GPIOF_PIN12) | \
+ PIN_DBNCE_EN(GPIOF_PIN13) | \
+ PIN_DBNCE_EN(GPIOF_PIN14) | \
+ PIN_DBNCE_EN(GPIOF_PIN15))
+#define VAL_GPIOF_IMD (PIN_IMD_LVL(GPIOF_OSC_IN) | \
+ PIN_IMD_LVL(GPIOF_OSC_OUT) | \
+ PIN_IMD_EDGE(GPIOF_I2C0_SDA) | \
+ PIN_IMD_EDGE(GPIOF_I2C0_SCL) | \
+ PIN_IMD_EDGE(GPIOF_PIN4) | \
+ PIN_IMD_EDGE(GPIOF_PIN5) | \
+ PIN_IMD_EDGE(GPIOF_PIN6) | \
+ PIN_IMD_EDGE(GPIOF_PIN7) | \
+ PIN_IMD_EDGE(GPIOF_PIN8) | \
+ PIN_IMD_EDGE(GPIOF_PIN9) | \
+ PIN_IMD_EDGE(GPIOF_PIN10) | \
+ PIN_IMD_EDGE(GPIOF_PIN11) | \
+ PIN_IMD_EDGE(GPIOF_PIN12) | \
+ PIN_IMD_EDGE(GPIOF_PIN13) | \
+ PIN_IMD_EDGE(GPIOF_PIN14) | \
+ PIN_IMD_EDGE(GPIOF_PIN15))
+#define VAL_GPIOF_IEN (PIN_IEN_FELL_DIS(GPIOF_OSC_IN) | \
+ PIN_IEN_FELL_DIS(GPIOF_OSC_OUT) | \
+ PIN_IEN_FELL_DIS(GPIOF_I2C0_SDA) | \
+ PIN_IEN_FELL_DIS(GPIOF_I2C0_SCL) | \
+ PIN_IEN_FELL_DIS(GPIOF_PIN4) | \
+ PIN_IEN_FELL_DIS(GPIOF_PIN5) | \
+ PIN_IEN_FELL_DIS(GPIOF_PIN6) | \
+ PIN_IEN_FELL_DIS(GPIOF_PIN7) | \
+ PIN_IEN_FELL_DIS(GPIOF_PIN8) | \
+ PIN_IEN_FELL_DIS(GPIOF_PIN9) | \
+ PIN_IEN_FELL_DIS(GPIOF_PIN10) | \
+ PIN_IEN_FELL_DIS(GPIOF_PIN11) | \
+ PIN_IEN_FELL_DIS(GPIOF_PIN12) | \
+ PIN_IEN_FELL_DIS(GPIOF_PIN13) | \
+ PIN_IEN_FELL_DIS(GPIOF_PIN14) | \
+ PIN_IEN_FELL_DIS(GPIOF_PIN15))
+#define VAL_GPIOF_ISRC (PIN_ISRC_DIS(GPIOF_OSC_IN) | \
+ PIN_ISRC_DIS(GPIOF_OSC_OUT) | \
+ PIN_ISRC_DIS(GPIOF_I2C0_SDA) | \
+ PIN_ISRC_DIS(GPIOF_I2C0_SCL) | \
+ PIN_ISRC_DIS(GPIOF_PIN4) | \
+ PIN_ISRC_DIS(GPIOF_PIN5) | \
+ PIN_ISRC_DIS(GPIOF_PIN6) | \
+ PIN_ISRC_DIS(GPIOF_PIN7) | \
+ PIN_ISRC_DIS(GPIOF_PIN8) | \
+ PIN_ISRC_DIS(GPIOF_PIN9) | \
+ PIN_ISRC_DIS(GPIOF_PIN10) | \
+ PIN_ISRC_DIS(GPIOF_PIN11) | \
+ PIN_ISRC_DIS(GPIOF_PIN12) | \
+ PIN_ISRC_DIS(GPIOF_PIN13) | \
+ PIN_ISRC_DIS(GPIOF_PIN14) | \
+ PIN_ISRC_DIS(GPIOF_PIN15))
+#define VAL_GPIOF_DOUT (PIN_DATA_LOW(GPIOF_OSC_IN) | \
+ PIN_DATA_LOW(GPIOF_OSC_OUT) | \
+ PIN_DATA_LOW(GPIOF_I2C0_SDA) | \
+ PIN_DATA_LOW(GPIOF_I2C0_SCL) | \
+ PIN_DATA_LOW(GPIOF_PIN4) | \
+ PIN_DATA_LOW(GPIOF_PIN5) | \
+ PIN_DATA_LOW(GPIOF_PIN6) | \
+ PIN_DATA_LOW(GPIOF_PIN7) | \
+ PIN_DATA_LOW(GPIOF_PIN8) | \
+ PIN_DATA_LOW(GPIOF_PIN9) | \
+ PIN_DATA_LOW(GPIOF_PIN10) | \
+ PIN_DATA_LOW(GPIOF_PIN11) | \
+ PIN_DATA_LOW(GPIOF_PIN12) | \
+ PIN_DATA_LOW(GPIOF_PIN13) | \
+ PIN_DATA_LOW(GPIOF_PIN14) | \
+ PIN_DATA_LOW(GPIOF_PIN15))
+
+
+#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/ducky/one2sf/1967st/boards/NUC123SD4AN0/board.mk b/keyboards/ducky/one2sf/1967st/boards/NUC123SD4AN0/board.mk
new file mode 100644
index 0000000000..dd9917fc6a
--- /dev/null
+++ b/keyboards/ducky/one2sf/1967st/boards/NUC123SD4AN0/board.mk
@@ -0,0 +1,5 @@
+# List of all the board related files.
+BOARDSRC = $(BOARD_PATH)/boards/NUC123SD4AN0/board.c
+
+# Required include directories
+BOARDINC = $(BOARD_PATH)/boards/NUC123SD4AN0
diff --git a/keyboards/ducky/one2sf/1967st/chconf.h b/keyboards/ducky/one2sf/1967st/chconf.h
new file mode 100644
index 0000000000..617be40dd9
--- /dev/null
+++ b/keyboards/ducky/one2sf/1967st/chconf.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 CH_CFG_ST_FREQUENCY 10000
+#define CH_CFG_ST_TIMEDELTA 0
+#define CH_CFG_USE_WAITEXIT TRUE
+
+#include_next <chconf.h>
diff --git a/keyboards/ducky/one2sf/1967st/config.h b/keyboards/ducky/one2sf/1967st/config.h
new file mode 100644
index 0000000000..c5abcdac94
--- /dev/null
+++ b/keyboards/ducky/one2sf/1967st/config.h
@@ -0,0 +1,48 @@
+/*
+Copyright 2019 /u/KeepItUnder
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 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 { D11, B4, B5, B6, B7 }
+#define MATRIX_COL_PINS { B10, B9, C13, C12, C11, C10, C9, C8, A15, A14, A13, D0, D1, D2,B15,B8 }
+#define DIP_SWITCH_MATRIX_GRID { {0,14}, {1,14}, {2,14}, {3,14} }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+#define FORCE_NKRO
+
+#define GPIO_INPUT_PIN_DELAY (NUC123_HCLK / 6 / 1000000L)
diff --git a/keyboards/ducky/one2sf/1967st/info.json b/keyboards/ducky/one2sf/1967st/info.json
new file mode 100644
index 0000000000..5361dbd4a0
--- /dev/null
+++ b/keyboards/ducky/one2sf/1967st/info.json
@@ -0,0 +1,89 @@
+{
+ "keyboard_name": "One 2 SF",
+ "manufacturer": "Ducky",
+ "maintainer": "f7urry",
+ "usb": {
+ "vid": "0x445B",
+ "pid": "0x07AF",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "x": 0, "y": 0, "w": 1, "label": "ESC" },
+ { "x": 1, "y": 0, "w": 1, "label": "1" },
+ { "x": 2, "y": 0, "w": 1, "label": "2" },
+ { "x": 3, "y": 0, "w": 1, "label": "3" },
+ { "x": 4, "y": 0, "w": 1, "label": "4" },
+ { "x": 5, "y": 0, "w": 1, "label": "5" },
+ { "x": 6, "y": 0, "w": 1, "label": "6" },
+ { "x": 7, "y": 0, "w": 1, "label": "7" },
+ { "x": 8, "y": 0, "w": 1, "label": "8" },
+ { "x": 9, "y": 0, "w": 1, "label": "9" },
+ { "x": 10, "y": 0, "w": 1, "label": "0" },
+ { "x": 11, "y": 0, "w": 1, "label": "DASH" },
+ { "x": 12, "y": 0, "w": 1, "label": "EQUALSIGN" },
+ { "x": 13, "y": 0, "w": 2, "label": "BACKSPACE" },
+ { "x": 15.25, "y": 0, "w": 1, "label": "DEL" },
+
+ { "x": 0, "y": 1, "w": 1.5, "label": "TAB" },
+ { "x": 1.5, "y": 1, "w": 1, "label": "Q" },
+ { "x": 2.5, "y": 1, "w": 1, "label": "W" },
+ { "x": 3.5, "y": 1, "w": 1, "label": "E" },
+ { "x": 4.5, "y": 1, "w": 1, "label": "R" },
+ { "x": 5.5, "y": 1, "w": 1, "label": "T" },
+ { "x": 6.5, "y": 1, "w": 1, "label": "Y" },
+ { "x": 7.5, "y": 1, "w": 1, "label": "U" },
+ { "x": 8.5, "y": 1, "w": 1, "label": "I" },
+ { "x": 9.5, "y": 1, "w": 1, "label": "O" },
+ { "x": 10.5, "y": 1, "w": 1, "label": "P" },
+ { "x": 11.5, "y": 1, "w": 1, "label": "LBRACKET" },
+ { "x": 12.5, "y": 1, "w": 1, "label": "RBRACKET" },
+ { "x": 13.5, "y": 1, "w": 1.5, "label": "BACKSLASH" },
+ { "x": 15.25, "y": 1, "w": 1, "label": "PAGEUP" },
+
+ { "x": 0, "y": 2, "w": 1.75, "label": "CAPSLOCK" },
+ { "x": 1.75, "y": 2, "w": 1, "label": "A" },
+ { "x": 2.75, "y": 2, "w": 1, "label": "S" },
+ { "x": 3.75, "y": 2, "w": 1, "label": "D" },
+ { "x": 4.75, "y": 2, "w": 1, "label": "F" },
+ { "x": 5.75, "y": 2, "w": 1, "label": "G" },
+ { "x": 6.75, "y": 2, "w": 1, "label": "H" },
+ { "x": 7.75, "y": 2, "w": 1, "label": "J" },
+ { "x": 8.75, "y": 2, "w": 1, "label": "K" },
+ { "x": 9.75, "y": 2, "w": 1, "label": "L" },
+ { "x": 10.75, "y": 2, "w": 1, "label": "SEMICOLON" },
+ { "x": 11.75, "y": 2, "w": 1, "label": "QUOTE" },
+ { "x": 12.75, "y": 2, "w": 1, "label": "ISOHASH" },
+ { "x": 13.75, "y": 2, "w": 1.25, "label": "ENTER" },
+ { "x": 15.25, "y": 2, "w": 1, "label": "PAGEDOWN" },
+
+ { "x": 0, "y": 3, "w": 1.25, "label": "LSHIFT" },
+ { "x": 1.25, "y": 3, "w": 1, "label": "ISOBACKSLASH" },
+ { "x": 2.25, "y": 3, "w": 1, "label": "Z" },
+ { "x": 3.25, "y": 3, "w": 1, "label": "X" },
+ { "x": 4.25, "y": 3, "w": 1, "label": "C" },
+ { "x": 5.25, "y": 3, "w": 1, "label": "V" },
+ { "x": 6.25, "y": 3, "w": 1, "label": "B" },
+ { "x": 7.25, "y": 3, "w": 1, "label": "N" },
+ { "x": 8.25, "y": 3, "w": 1, "label": "M" },
+ { "x": 9.25, "y": 3, "w": 1, "label": "COMMA" },
+ { "x": 10.25, "y": 3, "w": 1, "label": "PERIOD" },
+ { "x": 11.25, "y": 3, "w": 1, "label": "SLASH" },
+ { "x": 12.25, "y": 3, "w": 2, "label": "RSHIFT" },
+ { "x": 14.25, "y": 3, "w": 1, "label": "UP" },
+
+ { "x": 0, "y": 4, "w": 1.25, "label": "LCTRL" },
+ { "x": 1.25, "y": 4, "w": 1.25, "label": "LCMD" },
+ { "x": 2.5, "y": 4, "w": 1.25, "label": "LALT" },
+ { "x": 3.75, "y": 4, "w": 6.25, "label": "SPACE" },
+ { "x": 10, "y": 4, "w": 1, "label": "RALT" },
+ { "x": 11, "y": 4, "w": 1, "label": "FN" },
+ { "x": 12, "y": 4, "w": 1.25, "label": "RCTRL" },
+ { "x": 13.25, "y": 4, "w": 1, "label": "LEFT" },
+ { "x": 14.25, "y": 4, "w": 1, "label": "DOWN" },
+ { "x": 15.25, "y": 4, "w": 1, "label": "RIGHT" }
+ ]
+ }
+ }
+}
diff --git a/keyboards/ducky/one2sf/1967st/mcuconf.h b/keyboards/ducky/one2sf/1967st/mcuconf.h
new file mode 100644
index 0000000000..12e9d2a82d
--- /dev/null
+++ b/keyboards/ducky/one2sf/1967st/mcuconf.h
@@ -0,0 +1,51 @@
+/*
+ ChibiOS - Copyright (C) 2020 Alex Lewontin
+
+ 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 _MCUCONF_H_
+#define _MCUCONF_H_
+
+/*
+ * Board setting
+ * The following settings override the default settings present in
+ * the various device driver implementation headers.
+ * Note that the settings for each driver only have effect if the whole
+ * driver is enabled in halconf.h.
+ *
+ * IRQ priorities:
+ * 3...0 Lowest...Highest.
+ *
+ * DMA priorities:
+ * 5...0 Lowest...Highest.
+ */
+
+/*
+ * HAL driver system settings.
+ */
+#define NUC123_HSE_ENABLED TRUE
+#define NUC123_PLL_ENABLED TRUE
+#define NUC123_PLLSRC NUC123_PLLSRC_HSE
+#define NUC123_HCLKSRC NUC123_HCLKSRC_PLL
+#define NUC123_HCLKDIV 2
+#define NUC123_PLL_NF 144
+#define NUC123_USB_USE_USB0 TRUE
+#define NUC123_USB_USE_USB1 TRUE
+
+#define NUC123_SERIAL_USE_UART0 TRUE
+#define NUC123_SERIAL_CLKSRC NUC123_SERIAL_CLKSRC_HSI
+
+#define NUC123_MCUCONF
+
+#endif /* _MCUCONF_H_ */
diff --git a/keyboards/ducky/one2sf/1967st/readme.md b/keyboards/ducky/one2sf/1967st/readme.md
new file mode 100644
index 0000000000..be96a8db71
--- /dev/null
+++ b/keyboards/ducky/one2sf/1967st/readme.md
@@ -0,0 +1,32 @@
+# One 2 SF (DKON1967ST)
+
+A 65% keyboard by Ducky.
+
+This firmware was tested on the Ducky One 2 SF 1967ST version.
+
+* Keyboard Maintainer: [f7urry](https://github.com/f7urry)
+* Hardware Supported: Ducky One 2 SF RGB (DKON1967ST), NUC123SD4AN0 + MBI5043GP
+ * Only ANSI layout is supported at this time (ISO & VIA still WIP).
+ * RGB LEDs are currently disabled until the driver is merged.
+
+## Compiling the Firmware:
+
+ make ducky/one2sf/1967st:default
+
+## Accessing Bootloader Mode
+
+To enter the 1967ST bootloader to flash, boot the keyboard while holding D+L.
+
+## Flashing the Firmware:
+
+There are then two ways to flash the keyboard:
+
+ pip install --user nuvoton-isp
+ nuvoisp -f ducky_one2sf_ansi.bin
+
+Alternatively you can use elfmimi's [nu-isp-cli](https://lib.rs/crates/nu-isp-cli) which is more complete than nuvoisp and allows flashing .hex files as well.
+
+ cargo install nu-isp-cli
+ nu-isp-cli flash ducky_one2sf_ansi.bin
+
+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/ducky/one2sf/1967st/rules.mk b/keyboards/ducky/one2sf/1967st/rules.mk
new file mode 100644
index 0000000000..a5b4708b26
--- /dev/null
+++ b/keyboards/ducky/one2sf/1967st/rules.mk
@@ -0,0 +1,34 @@
+MCU_FAMILY = NUMICRO
+MCU_SERIES = NUC123
+
+# Bootloader selection
+BOOTLOADER = custom
+
+# linker script to use
+MCU_LDSCRIPT = NUC123xD4xx0
+
+# startup code to use
+MCU_STARTUP = NUC123
+BOARD = NUC123SD4AN0
+
+# NUC123 series is Cortex M0
+MCU = cortex-m0
+# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ARMV = 6
+
+# 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
+DIP_SWITCH_ENABLE = yes
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/ducky/one2sf/keymaps/default/config.h b/keyboards/ducky/one2sf/keymaps/default/config.h
new file mode 100644
index 0000000000..b052c604f5
--- /dev/null
+++ b/keyboards/ducky/one2sf/keymaps/default/config.h
@@ -0,0 +1,25 @@
+/* Copyright 2019 /u/KeepItUnder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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
+#define GRAVE_ESC_GUI_OVERRIDE
+#define MK_3_SPEED
+#define MK_C_OFFSET_UNMOD 400 /* Cursor offset per movement (unmodified) */
+#define MK_C_INTERVAL_UNMOD 5 /* Time between cursor movements (unmodified) */
+#define MK_W_OFFSET_UNMOD 100 /* Scroll steps per scroll action (unmodified) */
+#define MK_W_INTERVAL_UNMOD 10 /* Time between scroll steps (unmodified) */
diff --git a/keyboards/ducky/one2sf/keymaps/default/keymap.c b/keyboards/ducky/one2sf/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e78667c9ad
--- /dev/null
+++ b/keyboards/ducky/one2sf/keymaps/default/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2019 /u/KeepItUnder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 Layer {
+ _QWERTY = 0, // Standard QWERTY layer
+ _FUNCTION, // Function key layer
+ _COLOUR // RGB key layer
+};
+#define _QW _QWERTY
+#define _FN _FUNCTION
+#define _CLR _COLOUR
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_all(
+ // 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ 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_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(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FUNCTION] = 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_PGUP,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ENT, KC_PGDN,
+ _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_MUTE, KC_VOLD, KC_VOLU, MO(2), _______, KC_PGUP,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+
+ [_COLOUR] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/ducky/one2sf/keymaps/default/readme.md b/keyboards/ducky/one2sf/keymaps/default/readme.md
new file mode 100644
index 0000000000..4b29f4aef2
--- /dev/null
+++ b/keyboards/ducky/one2sf/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for one2sf
diff --git a/keyboards/ducky/one2sf/readme.md b/keyboards/ducky/one2sf/readme.md
new file mode 100644
index 0000000000..fb37adb7e9
--- /dev/null
+++ b/keyboards/ducky/one2sf/readme.md
@@ -0,0 +1,8 @@
+# One 2 SF
+
+A 65% keyboard by Ducky.
+
+The only supported keyboard version at this time is the DKON1967ST.
+
+* Hardware Supported:
+ * [DKON1967ST](1967st/), NUC123SD4AN0 + MBI5043GP
diff --git a/keyboards/ducky/one2sf/rules.mk b/keyboards/ducky/one2sf/rules.mk
new file mode 100644
index 0000000000..0c9ddb957f
--- /dev/null
+++ b/keyboards/ducky/one2sf/rules.mk
@@ -0,0 +1 @@
+DEFAULT_FOLDER = ducky/one2sf/1967st
diff --git a/keyboards/dumbo/config.h b/keyboards/dumbo/config.h
index 07b67d06d3..811f3d98f6 100644
--- a/keyboards/dumbo/config.h
+++ b/keyboards/dumbo/config.h
@@ -16,13 +16,6 @@ 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 0x25E3
-#define DEVICE_VER 0x0001
-#define MANUFACTURER trip_trap
-#define PRODUCT Dumbo
-
/* key matrix size */
/* Rows are doubled up */
#define MATRIX_ROWS 8
@@ -31,7 +24,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// wiring
#define MATRIX_ROW_PINS { D4, D7, E6, B4 }
#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6}
-#define UNUSED_PINS
#define ENCODERS_PAD_A { F4, C6 }
#define ENCODERS_PAD_B { F5, B5 }
diff --git a/keyboards/dumbo/info.json b/keyboards/dumbo/info.json
index 885ea08e29..caf466509a 100644
--- a/keyboards/dumbo/info.json
+++ b/keyboards/dumbo/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dumbo",
+ "manufacturer": "trip_trap",
"url": "",
"maintainer": "adamnaldal",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x25E3",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x6_4": {
"layout": [
diff --git a/keyboards/dumbo/keymaps/trip-trap/keymap.c b/keyboards/dumbo/keymaps/trip-trap/keymap.c
index 73042f5f5e..56d27e3fbd 100644
--- a/keyboards/dumbo/keymaps/trip-trap/keymap.c
+++ b/keyboards/dumbo/keymaps/trip-trap/keymap.c
@@ -179,7 +179,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* Special functions: _SP
*
* ,-------------------------------------------. ,-------------------------------------------.
- * | |QWERTY| | | RESET| | | | | | | | |
+ * | |QWERTY| | | QK_BOOT| | | | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | DEBUG| | | | | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
@@ -191,7 +191,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_SP] = LAYOUT_split_3x6_4(
//,-----------------------------------------------------. ,-----------------------------------------------------.
- XXXXXXX, QWERT, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, QWERT, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/dumbpad/config.h b/keyboards/dumbpad/config.h
index 5a1a1c92b8..b51663981d 100644
--- a/keyboards/dumbpad/config.h
+++ b/keyboards/dumbpad/config.h
@@ -18,12 +18,6 @@ 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 0x0913
-#define MANUFACTURER imchipwood
-#define PRODUCT dumbpad
-
/* Column/Row IO definitions */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dumbpad/info.json b/keyboards/dumbpad/info.json
new file mode 100644
index 0000000000..341a1bcf8b
--- /dev/null
+++ b/keyboards/dumbpad/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "dumbpad",
+ "manufacturer": "imchipwood",
+ "url": "https://www.github.com/imchipwood/dumbpad",
+ "maintainer": "imchipwood",
+ "usb": {
+ "vid": "0xDEAF",
+ "pid": "0x0913"
+ }
+}
diff --git a/keyboards/dumbpad/v0x/config.h b/keyboards/dumbpad/v0x/config.h
index 6d503c9abe..b59578aa14 100644
--- a/keyboards/dumbpad/v0x/config.h
+++ b/keyboards/dumbpad/v0x/config.h
@@ -18,15 +18,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0007
-
/* Column/Row IO definitions */
#define MATRIX_ROWS 4
#define MATRIX_COLS 5
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* Single rotary encoder */
#define ENCODERS_PAD_A { D0 }
diff --git a/keyboards/dumbpad/v0x/info.json b/keyboards/dumbpad/v0x/info.json
index 01fe1d5178..5e5feb42ba 100644
--- a/keyboards/dumbpad/v0x/info.json
+++ b/keyboards/dumbpad/v0x/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "dumbpad/v0x",
- "url": "https://www.github.com/imchipwood/dumbpad",
- "maintainer": "imchipwood",
+ "usb": {
+ "device_version": "0.0.7"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dumbpad/v0x_dualencoder/config.h b/keyboards/dumbpad/v0x_dualencoder/config.h
index 586e55056c..6879d73960 100644
--- a/keyboards/dumbpad/v0x_dualencoder/config.h
+++ b/keyboards/dumbpad/v0x_dualencoder/config.h
@@ -18,9 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0006
-
/* Column/Row IO definitions - dualencoder version is true 4x4 */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
diff --git a/keyboards/dumbpad/v0x_dualencoder/info.json b/keyboards/dumbpad/v0x_dualencoder/info.json
index f4bf8be585..150a82f373 100644
--- a/keyboards/dumbpad/v0x_dualencoder/info.json
+++ b/keyboards/dumbpad/v0x_dualencoder/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "dumbpad/v0x_dualencoder",
- "url": "https://www.github.com/imchipwood/dumbpad",
- "maintainer": "imchipwood",
+ "usb": {
+ "device_version": "0.0.6"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dumbpad/v0x_right/config.h b/keyboards/dumbpad/v0x_right/config.h
index 0380203fdf..76f78eff64 100644
--- a/keyboards/dumbpad/v0x_right/config.h
+++ b/keyboards/dumbpad/v0x_right/config.h
@@ -16,15 +16,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0007
-
/* Column/Row IO definitions */
#define MATRIX_ROWS 4
#define MATRIX_COLS 5
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { B5, B4, E6, D7, C6 }
-#define UNUSED_PINS
/* Single rotary encoder */
#define ENCODERS_PAD_A { D4 }
diff --git a/keyboards/dumbpad/v0x_right/info.json b/keyboards/dumbpad/v0x_right/info.json
index 7269fe3d08..657a85542d 100644
--- a/keyboards/dumbpad/v0x_right/info.json
+++ b/keyboards/dumbpad/v0x_right/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "dumbpad/v0x_right",
- "url": "https://www.github.com/imchipwood/dumbpad",
- "maintainer": "imchipwood",
+ "usb": {
+ "device_version": "0.0.7"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dumbpad/v1x/config.h b/keyboards/dumbpad/v1x/config.h
index 0d967a6a01..88ee875c0d 100644
--- a/keyboards/dumbpad/v1x/config.h
+++ b/keyboards/dumbpad/v1x/config.h
@@ -18,15 +18,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0010
-
/* Column/Row IO definitions */
#define MATRIX_ROWS 4
#define MATRIX_COLS 5
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* Single rotary encoder */
#define ENCODERS_PAD_A { B2 }
diff --git a/keyboards/dumbpad/v1x/info.json b/keyboards/dumbpad/v1x/info.json
index d8cd5b2304..6355245982 100644
--- a/keyboards/dumbpad/v1x/info.json
+++ b/keyboards/dumbpad/v1x/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "dumbpad/v1x",
- "url": "https://www.github.com/imchipwood/dumbpad",
- "maintainer": "imchipwood",
+ "usb": {
+ "device_version": "0.1.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dumbpad/v1x_dualencoder/config.h b/keyboards/dumbpad/v1x_dualencoder/config.h
index 13f4785d8a..ed33f9d193 100644
--- a/keyboards/dumbpad/v1x_dualencoder/config.h
+++ b/keyboards/dumbpad/v1x_dualencoder/config.h
@@ -18,15 +18,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0010
-
/* Column/Row IO definitions */
#define MATRIX_ROWS 4
#define MATRIX_COLS 5
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* Dual rotary encoders */
#define ENCODERS_PAD_A { B2, D0 }
diff --git a/keyboards/dumbpad/v1x_dualencoder/info.json b/keyboards/dumbpad/v1x_dualencoder/info.json
index 42eb5a3e77..6355245982 100644
--- a/keyboards/dumbpad/v1x_dualencoder/info.json
+++ b/keyboards/dumbpad/v1x_dualencoder/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "dumbpad/v1x_dualencoder",
- "url": "https://www.github.com/imchipwood/dumbpad",
- "maintainer": "imchipwood",
+ "usb": {
+ "device_version": "0.1.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dumbpad/v1x_oled/config.h b/keyboards/dumbpad/v1x_oled/config.h
new file mode 100644
index 0000000000..2dba0c3b14
--- /dev/null
+++ b/keyboards/dumbpad/v1x_oled/config.h
@@ -0,0 +1,37 @@
+/*
+Copyright 2020 imchipwood
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have 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"
+
+/* Column/Row IO definitions */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 5
+
+#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
+#define MATRIX_COL_PINS { C6, B1, B3, B2, B6 }
+#define UNUSED_PINS
+
+/* Dual rotary encoders */
+#define ENCODERS_PAD_A { B4, E6 }
+#define ENCODERS_PAD_B { B5, D7 }
+
+/* Column/Row IO definitions */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Reduce tapdance required taps from 5 to 2 */
+#define TAPPING_TOGGLE 2
diff --git a/keyboards/dumbpad/v1x_oled/info.json b/keyboards/dumbpad/v1x_oled/info.json
new file mode 100644
index 0000000000..d124c76e14
--- /dev/null
+++ b/keyboards/dumbpad/v1x_oled/info.json
@@ -0,0 +1,15 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0},
+ {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1},
+ {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2},
+ {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/dumbpad/v1x_oled/keymaps/default/keymap.c b/keyboards/dumbpad/v1x_oled/keymaps/default/keymap.c
new file mode 100644
index 0000000000..84d23f665a
--- /dev/null
+++ b/keyboards/dumbpad/v1x_oled/keymaps/default/keymap.c
@@ -0,0 +1,69 @@
+/* Copyright 2020 imchipwood
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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
+ /-----------------------------------------------------`
+ | | 7 | 8 | 9 | Bkspc |
+ | |---------|---------|---------|---------|
+ | | 4 | 5 | 6 | Esc |
+ | |---------|---------|---------|---------|
+ | | 1 | 2 | 3 | Tab |
+ |-------------|---------|---------|---------|---------|
+ | Play Pause | TT(1) | 0 | . | Enter |
+ \-----------------------------------------------------'
+ */
+ [0] = LAYOUT(
+ KC_7, KC_8, KC_9, KC_BSPC,
+ KC_4, KC_5, KC_6, KC_ESC,
+ KC_1, KC_2, KC_3, KC_TAB,
+ KC_MUTE, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER
+ ),
+ /*
+ SUB LAYER
+ /-----------------------------------------------------`
+ | | | | | Reset |
+ | |---------|---------|---------|---------|
+ | | | | | + |
+ | |---------|---------|---------|---------|
+ | | | | | - |
+ |-------------|---------|---------|---------|---------|
+ | LOCK | | | | = |
+ \-----------------------------------------------------'
+ */
+ [1] = LAYOUT(
+ _______, _______, _______, QK_BOOT,
+ _______, _______, _______, KC_KP_PLUS,
+ _______, _______, _______, KC_KP_MINUS,
+ KC_LOCK, _______, _______, _______, KC_EQL
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/dumbpad/v1x_oled/keymaps/via/keymap.c b/keyboards/dumbpad/v1x_oled/keymaps/via/keymap.c
new file mode 100644
index 0000000000..00f4500469
--- /dev/null
+++ b/keyboards/dumbpad/v1x_oled/keymaps/via/keymap.c
@@ -0,0 +1,69 @@
+/* Copyright 2020 imchipwood
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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
+ /-----------------------------------------------------`
+ | | 7 | 8 | 9 | Bkspc |
+ | |---------|---------|---------|---------|
+ | | 4 | 5 | 6 | Esc |
+ | |---------|---------|---------|---------|
+ | | 1 | 2 | 3 | Tab |
+ |-------------|---------|---------|---------|---------|
+ | Play Pause | TT(1) | 0 | . | Enter |
+ \-----------------------------------------------------'
+ */
+ [0] = LAYOUT(
+ KC_7, KC_8, KC_9, KC_BSPC,
+ KC_4, KC_5, KC_6, KC_ESC,
+ KC_1, KC_2, KC_3, KC_TAB,
+ KC_MUTE, TT(1), KC_0, LSFT_T(KC_DOT), KC_ENTER
+ ),
+ /*
+ SUB LAYER
+ /-----------------------------------------------------`
+ | | | | | Reset |
+ | |---------|---------|---------|---------|
+ | | | | | + |
+ | |---------|---------|---------|---------|
+ | | | | | - |
+ |-------------|---------|---------|---------|---------|
+ | LOCK | | | | = |
+ \-----------------------------------------------------'
+ */
+ [1] = LAYOUT(
+ _______, _______, _______, QK_BOOT,
+ _______, _______, _______, KC_KP_PLUS,
+ _______, _______, _______, KC_KP_MINUS,
+ KC_LOCK, _______, _______, _______, KC_EQL
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/mechwild/mokulua/keymaps/via/rules.mk b/keyboards/dumbpad/v1x_oled/keymaps/via/rules.mk
index 36b7ba9cbc..36b7ba9cbc 100644
--- a/keyboards/mechwild/mokulua/keymaps/via/rules.mk
+++ b/keyboards/dumbpad/v1x_oled/keymaps/via/rules.mk
diff --git a/keyboards/dumbpad/v1x_oled/rules.mk b/keyboards/dumbpad/v1x_oled/rules.mk
new file mode 100644
index 0000000000..110bfc8eaf
--- /dev/null
+++ b/keyboards/dumbpad/v1x_oled/rules.mk
@@ -0,0 +1,23 @@
+# 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 = 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
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
diff --git a/keyboards/dumbpad/v1x_oled/v1x_oled.c b/keyboards/dumbpad/v1x_oled/v1x_oled.c
new file mode 100644
index 0000000000..acc9b8bbb1
--- /dev/null
+++ b/keyboards/dumbpad/v1x_oled/v1x_oled.c
@@ -0,0 +1,155 @@
+/* Copyright 2020 imchipwood
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "v1x_oled.h"
+
+#include <stdio.h>
+char wpm_str[10];
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ // Right encoder
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ // Left encoder
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_MNXT);
+ } else {
+ tap_code(KC_MPRV);
+ }
+ }
+ return true;
+}
+#endif
+
+#ifdef OLED_ENABLE
+// 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();
+ }
+ }
+ }
+}
+
+// Used to draw on to the oled screen
+bool oled_task_user(void) {
+ 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)
+ oled_write_P(PSTR("WPM: "), false);
+ oled_write(get_u8_str(get_current_wpm(), '0'), false);
+ oled_write(wpm_str, false); // writes wpm on top left corner of string
+
+ 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);
+
+ return false;
+}
+#endif
diff --git a/keyboards/dumbpad/v1x_oled/v1x_oled.h b/keyboards/dumbpad/v1x_oled/v1x_oled.h
new file mode 100644
index 0000000000..b8bb84fe5f
--- /dev/null
+++ b/keyboards/dumbpad/v1x_oled/v1x_oled.h
@@ -0,0 +1,30 @@
+/* Copyright 2020 imchipwood
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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( \
+ k01, k02, k03, k04, \
+ k11, k12, k13, k14, \
+ k21, k22, k23, k24, \
+ k30, k31, k32, k33, k34 \
+) \
+{ \
+ { KC_NO, k01, k02, k03, k04 }, \
+ { KC_NO, k11, k12, k13, k14 }, \
+ { KC_NO, k21, k22, k23, k24 }, \
+ { k30, k31, k32, k33, k34 }, \
+}
diff --git a/keyboards/dumbpad/v1x_right/config.h b/keyboards/dumbpad/v1x_right/config.h
index 23c2685dde..8d57b6a837 100644
--- a/keyboards/dumbpad/v1x_right/config.h
+++ b/keyboards/dumbpad/v1x_right/config.h
@@ -18,15 +18,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0010
-
/* Column/Row IO definitions */
#define MATRIX_ROWS 4
#define MATRIX_COLS 5
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { B5, B4, E6, D7, C6 }
-#define UNUSED_PINS
/* Single rotary encoder */
#define ENCODERS_PAD_A { D4 }
diff --git a/keyboards/dumbpad/v1x_right/info.json b/keyboards/dumbpad/v1x_right/info.json
index 05734d16b0..44b7abacff 100644
--- a/keyboards/dumbpad/v1x_right/info.json
+++ b/keyboards/dumbpad/v1x_right/info.json
@@ -1,7 +1,7 @@
{
- "keyboard_name": "dumbpad/v1x_right",
- "url": "https://www.github.com/imchipwood/dumbpad",
- "maintainer": "imchipwood",
+ "usb": {
+ "device_version": "0.1.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/durgod/dgk6x/config.h b/keyboards/durgod/dgk6x/config.h
index 28a506cf8d..bfb3f2ba9d 100644
--- a/keyboards/durgod/dgk6x/config.h
+++ b/keyboards/durgod/dgk6x/config.h
@@ -18,10 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xD60D
-#define MANUFACTURER Hoksi Technology
-
#define WAIT_US_TIMER GPTD3
/* COL2ROW, ROW2COL*/
diff --git a/keyboards/durgod/dgk6x/galaxy/config.h b/keyboards/durgod/dgk6x/galaxy/config.h
index e8108f7d11..7da032b967 100644
--- a/keyboards/durgod/dgk6x/galaxy/config.h
+++ b/keyboards/durgod/dgk6x/galaxy/config.h
@@ -18,11 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x6A1A
-#define DEVICE_VER 0x0001
-#define PRODUCT Galaxy 84 HK gaming x DURGOD (QMK)
-
/* key matrix rows */
#define MATRIX_ROWS 6
#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4, A5 }
diff --git a/keyboards/durgod/dgk6x/galaxy/info.json b/keyboards/durgod/dgk6x/galaxy/info.json
index 6fc8959d0b..221d6613aa 100644
--- a/keyboards/durgod/dgk6x/galaxy/info.json
+++ b/keyboards/durgod/dgk6x/galaxy/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "DURGOD Galaxy",
+ "keyboard_name": "Galaxy 84 HK gaming x DURGOD (QMK)",
+ "manufacturer": "Hoksi Technology",
"url": "https://www.amazon.com/Galaxy-75-Modular-Mechanical-Keyboard/dp/B08PDRD8MP",
"maintainer": "dkjer",
+ "usb": {
+ "vid": "0xD60D",
+ "pid": "0x6A1A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_75_ansi": {
"layout": [
diff --git a/keyboards/durgod/dgk6x/hades/config.h b/keyboards/durgod/dgk6x/hades/config.h
index c148ae1b1f..a2bba0a5a5 100644
--- a/keyboards/durgod/dgk6x/hades/config.h
+++ b/keyboards/durgod/dgk6x/hades/config.h
@@ -18,11 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x4AD3
-#define DEVICE_VER 0x0001
-#define PRODUCT DURGOD Hades (QMK)
-
/* key matrix rows */
#define MATRIX_ROWS 5
#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4 }
diff --git a/keyboards/durgod/dgk6x/hades/info.json b/keyboards/durgod/dgk6x/hades/info.json
index b439ea4acb..345b26adcd 100644
--- a/keyboards/durgod/dgk6x/hades/info.json
+++ b/keyboards/durgod/dgk6x/hades/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "DURGOD Hades",
+ "keyboard_name": "DURGOD Hades (QMK)",
+ "manufacturer": "Hoksi Technology",
"url": "https://www.amazon.com/gp/product/B08562392T",
"maintainer": "J-Sully",
+ "usb": {
+ "vid": "0xD60D",
+ "pid": "0x4AD3",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/durgod/dgk6x/venus/config.h b/keyboards/durgod/dgk6x/venus/config.h
index 3bef1ea7ed..207508dead 100644
--- a/keyboards/durgod/dgk6x/venus/config.h
+++ b/keyboards/durgod/dgk6x/venus/config.h
@@ -18,11 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x7EC5
-#define DEVICE_VER 0x0001
-#define PRODUCT DURGOD Venus (QMK)
-
/* key matrix rows */
#define MATRIX_ROWS 5
#define MATRIX_ROW_PINS { A0, A1, A2, A3, A4 }
diff --git a/keyboards/durgod/dgk6x/venus/info.json b/keyboards/durgod/dgk6x/venus/info.json
index 21e93d55c2..a2d297d661 100644
--- a/keyboards/durgod/dgk6x/venus/info.json
+++ b/keyboards/durgod/dgk6x/venus/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "DURGOD Venus",
+ "keyboard_name": "DURGOD Venus (QMK)",
+ "manufacturer": "Hoksi Technology",
"url": "https://www.amazon.com/dp/B07XFP5MMZ",
"maintainer": "J-Sully",
+ "usb": {
+ "vid": "0xD60D",
+ "pid": "0x7EC5",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/durgod/k3x0/config.h b/keyboards/durgod/k3x0/config.h
index 691076ecac..0f2e01cfc1 100644
--- a/keyboards/durgod/k3x0/config.h
+++ b/keyboards/durgod/k3x0/config.h
@@ -19,10 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xD60D
-#define MANUFACTURER Hoksi Technology
-
#define WAIT_US_TIMER GPTD3
/* key matrix size (rows in specific keyboard variant) */
diff --git a/keyboards/durgod/k3x0/k310/base/config.h b/keyboards/durgod/k3x0/k310/base/config.h
index 025369acd7..2ccb2f2f0c 100644
--- a/keyboards/durgod/k3x0/k310/base/config.h
+++ b/keyboards/durgod/k3x0/k310/base/config.h
@@ -17,7 +17,3 @@
#pragma once
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define PRODUCT DURGOD Taurus K310 (QMK)
-#define DEVICE_VER 0x0001 // Base (no backlight)
diff --git a/keyboards/durgod/k3x0/k310/config.h b/keyboards/durgod/k3x0/k310/config.h
index 1eadb8e52d..cb936a201f 100644
--- a/keyboards/durgod/k3x0/k310/config.h
+++ b/keyboards/durgod/k3x0/k310/config.h
@@ -19,14 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x3100
-// Taurus K310 models:
-//#define DEVICE_VER 0x0001 // Base (no backlight)
-//#define DEVICE_VER 0x0002 // Corona (white led matrix)
-//#define DEVICE_VER 0x0003 // Aurora (red & blue led matrix)
-//#define DEVICE_VER 0x0004 // Nebula (rgb led matrix)
-
/* key matrix size (cols in generic keyboard config) */
#define MATRIX_ROWS 8
diff --git a/keyboards/durgod/k3x0/k310/info.json b/keyboards/durgod/k3x0/k310/info.json
index bf960ebd94..06e935484e 100644
--- a/keyboards/durgod/k3x0/k310/info.json
+++ b/keyboards/durgod/k3x0/k310/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "DURGOD Taurus K310",
+ "keyboard_name": "DURGOD Taurus K310 (QMK)",
+ "manufacturer": "Hoksi Technology",
"url": "https://www.durgod.com/page9?product_id=53&_l=en",
"maintainer": "tylert",
+ "usb": {
+ "vid": "0xD60D",
+ "pid": "0x3100",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_fullsize_ansi": {
"layout": [
diff --git a/keyboards/durgod/k3x0/k320/base/config.h b/keyboards/durgod/k3x0/k320/base/config.h
index d4eb732b90..2ccb2f2f0c 100644
--- a/keyboards/durgod/k3x0/k320/base/config.h
+++ b/keyboards/durgod/k3x0/k320/base/config.h
@@ -17,7 +17,3 @@
#pragma once
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define PRODUCT DURGOD Taurus K320 (QMK)
-#define DEVICE_VER 0x0001 // Base (no backlight)
diff --git a/keyboards/durgod/k3x0/k320/config.h b/keyboards/durgod/k3x0/k320/config.h
index 25b4c63036..2ea9b37fdf 100644
--- a/keyboards/durgod/k3x0/k320/config.h
+++ b/keyboards/durgod/k3x0/k320/config.h
@@ -19,14 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x3200
-// Taurus K320 models:
-//#define DEVICE_VER 0x0001 // Base (no backlight)
-//#define DEVICE_VER 0x0002 // Corona (white led matrix)
-//#define DEVICE_VER 0x0003 // Aurora (red & blue led matrix)
-//#define DEVICE_VER 0x0004 // Nebula (rgb led matrix)
-
/* key matrix size (cols in generic keyboard config) */
#define MATRIX_ROWS 7
diff --git a/keyboards/durgod/k3x0/k320/info.json b/keyboards/durgod/k3x0/k320/info.json
index cc0da77a3f..0386ef7709 100644
--- a/keyboards/durgod/k3x0/k320/info.json
+++ b/keyboards/durgod/k3x0/k320/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "DURGOD Taurus K320",
+ "keyboard_name": "DURGOD Taurus K320 (QMK)",
+ "manufacturer": "Hoksi Technology",
"url": "https://www.durgod.com/page9?product_id=47&_l=en",
"maintainer": "dkjer",
+ "usb": {
+ "vid": "0xD60D",
+ "pid": "0x3200",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/durgod/k3x0/keymaps/chimera/keymap.c b/keyboards/durgod/k3x0/keymaps/chimera/keymap.c
index 8053da351a..5fa0d5eb4c 100644
--- a/keyboards/durgod/k3x0/keymaps/chimera/keymap.c
+++ b/keyboards/durgod/k3x0/keymaps/chimera/keymap.c
@@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
*/
[_WSL] = LAYOUT_all( /* Windows Second / System Layer */
- RESET, KC_SLEP, XXXXXXX, XXXXXXX, KC_PWR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_W2MBL, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, KC_SLEP, XXXXXXX, XXXXXXX, KC_PWR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_W2MBL, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
@@ -190,7 +190,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
*/
[_MSL] = LAYOUT_all( /* Mac Second / System Layer */
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_M2WBL, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_M2WBL, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
@@ -358,7 +358,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
layer_state_set(1UL<<_WFL | 1UL<<_WSL);
}
break;
- case RESET:
+ case QK_BOOT:
if (record->event.pressed) {
// Flash LEDs to indicate bootloader mode is enabled.
on_all_leds();
diff --git a/keyboards/durgod/k3x0/keymaps/typhon/keymap.c b/keyboards/durgod/k3x0/keymaps/typhon/keymap.c
index afd38392c1..21daf5687a 100644
--- a/keyboards/durgod/k3x0/keymaps/typhon/keymap.c
+++ b/keyboards/durgod/k3x0/keymaps/typhon/keymap.c
@@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
*/
[_WSL] = LAYOUT_all( /* Windows Second / System Layer */
- RESET, KC_SLEP, XXXXXXX, XXXXXXX, KC_PWR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_W2MBL, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, KC_SLEP, XXXXXXX, XXXXXXX, KC_PWR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_W2MBL, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
@@ -190,7 +190,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
*/
[_MSL] = LAYOUT_all( /* Mac Second / System Layer */
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_M2WBL, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF_M2WBL, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
@@ -358,7 +358,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
layer_state_set(1UL<<_WFL | 1UL<<_WSL);
}
break;
- case RESET:
+ case QK_BOOT:
if (record->event.pressed) {
// Flash LEDs to indicate bootloader mode is enabled.
on_all_leds();
diff --git a/keyboards/dyz/dyz40/config.h b/keyboards/dyz/dyz40/config.h
index 581f925165..b13ed808a9 100644
--- a/keyboards/dyz/dyz40/config.h
+++ b/keyboards/dyz/dyz40/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define MANUFACTURER dyz
-#define PRODUCT dyz40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
diff --git a/keyboards/dyz/dyz40/info.json b/keyboards/dyz/dyz40/info.json
index db525a4707..e63b0d4f10 100644
--- a/keyboards/dyz/dyz40/info.json
+++ b/keyboards/dyz/dyz40/info.json
@@ -1,5 +1,6 @@
{
"keyboard_name": "dyz40",
+ "manufacturer": "dyz",
"url": "https://github.com/dayatz/mechanical-keyboards/tree/master/dyz40",
"maintainer": "dayatz",
"diode_direction": "COL2ROW",
diff --git a/keyboards/dyz/dyz40/readme.md b/keyboards/dyz/dyz40/readme.md
index f73c4ef46c..537ccdda45 100644
--- a/keyboards/dyz/dyz40/readme.md
+++ b/keyboards/dyz/dyz40/readme.md
@@ -24,4 +24,4 @@ Enter the bootloader in 3 ways:
- **Bootmagic reset**: Hold the `Esc` key while plugging in the USB cable
- **Physical reset button**: Briefly short the pins under the Enter key
-- **Keycode in layout**: Press the key mapped to `RESET` if it is available
+- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/dyz/dyz60/config.h b/keyboards/dyz/dyz60/config.h
index a40d2de47e..5dc95c63cd 100644
--- a/keyboards/dyz/dyz60/config.h
+++ b/keyboards/dyz/dyz60/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define MANUFACTURER dyz
-#define PRODUCT dyz60
-
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/dyz/dyz60/info.json b/keyboards/dyz/dyz60/info.json
index d946f9b97b..2717dbb6a5 100644
--- a/keyboards/dyz/dyz60/info.json
+++ b/keyboards/dyz/dyz60/info.json
@@ -1,5 +1,6 @@
{
"keyboard_name": "dyz60",
+ "manufacturer": "dyz",
"url": "https://github.com/dayatz/mechanical-keyboards/tree/master/dyz60",
"maintainer": "dayatz",
"diode_direction": "COL2ROW",
diff --git a/keyboards/dyz/dyz60_hs/config.h b/keyboards/dyz/dyz60_hs/config.h
new file mode 100644
index 0000000000..3f67156638
--- /dev/null
+++ b/keyboards/dyz/dyz60_hs/config.h
@@ -0,0 +1,30 @@
+/*
+Copyright 2021 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"
+
+/* 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 TAP_CODE_DELAY 10 // Need this delay for some keys like VOLD/VOLU to work
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/dyz/dyz60_hs/dyz60_hs.c b/keyboards/dyz/dyz60_hs/dyz60_hs.c
new file mode 100644
index 0000000000..c6ec0f20d8
--- /dev/null
+++ b/keyboards/dyz/dyz60_hs/dyz60_hs.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 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/>.
+ */
+#include "dyz60_hs.h"
diff --git a/keyboards/dyz/dyz60_hs/dyz60_hs.h b/keyboards/dyz/dyz60_hs/dyz60_hs.h
new file mode 100644
index 0000000000..792f57402f
--- /dev/null
+++ b/keyboards/dyz/dyz60_hs/dyz60_hs.h
@@ -0,0 +1,120 @@
+/* Copyright 2021 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 "quantum.h"
+#define _X_ KC_NO
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───────â”
+ * │00 │01 │02 │03 │04 │05 │45 │06 │07 │08 │09 │0A │0B │0C │0D │ │0C │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴â”2D │ ISO Enter
+ * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │ │2C │ │
+ * ┌────────┠├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌─┴───┴────┤
+ * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ │3C │ 2.75u RShift
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ └──────────┘
+ * │40 │41 │42 │46 │4A │4B │4C │4D │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────â”
+ * │40 │41 │42 │46 │4B │4C │4D │ Tsangan/WKL
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ */
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K45, 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, 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, _X_, _X_, K45, K46, _X_, _X_, _X_, K4A, K4B, K4C, K4D } \
+}
+
+#define LAYOUT_60_ansi( \
+ K00, K01, K02, K03, K04, K05, K45, K06, K07, K08, K09, K0A, K0B, K0C, \
+ 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, 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, _X_ }, \
+ { 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, _X_ }, \
+ { K30, _X_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, _X_ }, \
+ { K40, K41, K42, _X_, _X_, K45, K46, _X_, _X_, _X_, K4A, K4B, K4C, K4D } \
+}
+
+#define LAYOUT_60_ansi_split_bs_rshift( \
+ K00, K01, K02, K03, K04, K05, K45, 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, 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, _X_ }, \
+ { K30, _X_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { K40, K41, K42, _X_, _X_, K45, K46, _X_, _X_, _X_, K4A, K4B, K4C, K4D } \
+}
+
+#define LAYOUT_60_tsangan_hhkb( \
+ K00, K01, K02, K03, K04, K05, K45, 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, 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 }, \
+ { 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, _X_ }, \
+ { K30, _X_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { K40, K41, K42, _X_, _X_, K45, K46, _X_, _X_, _X_, _X_, K4B, K4C, K4D } \
+}
+
+#define LAYOUT_60_iso( \
+ K00, K01, K02, K03, K04, K05, K45, 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, K2D, \
+ K30, K31, 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, _X_ }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, _X_ }, \
+ { 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, _X_ }, \
+ { K40, K41, K42, _X_, _X_, K45, K46, _X_, _X_, _X_, K4A, K4B, K4C, K4D } \
+}
+
+#define LAYOUT_60_iso_split_bs_rshift( \
+ K00, K01, K02, K03, K04, K05, K45, 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, _X_ }, \
+ { 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, _X_, _X_, K45, K46, _X_, _X_, _X_, K4A, K4B, K4C, K4D } \
+}
diff --git a/keyboards/dyz/dyz60_hs/info.json b/keyboards/dyz/dyz60_hs/info.json
new file mode 100644
index 0000000000..b40b0f0590
--- /dev/null
+++ b/keyboards/dyz/dyz60_hs/info.json
@@ -0,0 +1,457 @@
+{
+ "keyboard_name": "dyz60-hs",
+ "manufacturer": "dyz",
+ "url": "https://github.com/dayatz/mechanical-keyboards/tree/master/dyz60_hs",
+ "maintainer": "dayatz",
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "cols": ["F4", "F5", "B3", "B2", "B1", "B5", "B4", "D7", "D6", "D4", "D5", "D3", "D2", "D1" ],
+ "rows": ["E6", "B0", "F0", "F6", "F7"]
+ },
+ "rgblight": {
+ "led_count": 16,
+ "pin": "B7",
+ "hue_steps": 10,
+ "saturation_steps": 10,
+ "brightness_steps": 10,
+ "animations": {
+ "all": true
+ }
+ },
+ "indicators": {
+ "caps_lock": "F1"
+ },
+ "usb": {
+ "vid": "0xD772",
+ "pid": "0x001A",
+ "device_version": "0.0.1"
+ },
+ "community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_tsangan_hhkb", "60_iso", "60_iso_split_bs_rshift"],
+ "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":"`~", "x":13, "y":0},
+ {"label":"\\|", "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":"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":"Win", "x":11.25, "y":4, "w":1.25},
+ {"label":"Menu", "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":"Win", "x":11.25, "y":4, "w":1.25},
+ {"label":"Menu", "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":"\\|", "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":"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":"Win", "x":11.25, "y":4, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "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":"\\|", "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":"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":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"Menu", "x":12.5, "y":4},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_60_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":"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":"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":"Win", "x":11.25, "y":4, "w":1.25},
+ {"label":"Menu", "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":"`\u00ac", "x":13, "y":0},
+ {"label":"\\|", "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":"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":"Win", "x":11.25, "y":4, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/dyz/dyz60_hs/keymaps/default/keymap.c b/keyboards/dyz/dyz60_hs/keymaps/default/keymap.c
new file mode 100644
index 0000000000..5e858f21aa
--- /dev/null
+++ b/keyboards/dyz/dyz60_hs/keymaps/default/keymap.c
@@ -0,0 +1,46 @@
+/* Copyright 2021 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/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE,
+ _FN,
+ _FN2
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = 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_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_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(_FN),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, KC_MENU, KC_RCTL
+ ),
+ [_FN] = 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_HOME, KC_UP, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_FN2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/dyz/dyz60_hs/keymaps/via/keymap.c b/keyboards/dyz/dyz60_hs/keymaps/via/keymap.c
new file mode 100644
index 0000000000..5e858f21aa
--- /dev/null
+++ b/keyboards/dyz/dyz60_hs/keymaps/via/keymap.c
@@ -0,0 +1,46 @@
+/* Copyright 2021 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/>.
+ */
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE,
+ _FN,
+ _FN2
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = 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_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_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(_FN),
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_RWIN, KC_MENU, KC_RCTL
+ ),
+ [_FN] = 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_HOME, KC_UP, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_FN2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/dyz/dyz60_hs/keymaps/via/rules.mk b/keyboards/dyz/dyz60_hs/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/dyz/dyz60_hs/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/dyz/dyz60_hs/readme.md b/keyboards/dyz/dyz60_hs/readme.md
new file mode 100644
index 0000000000..ae55d30d37
--- /dev/null
+++ b/keyboards/dyz/dyz60_hs/readme.md
@@ -0,0 +1,29 @@
+# dyz60_hs
+
+![dyz60 pcb](https://i.imgur.com/l9z5KuJh.jpg)
+
+60% layout has flexcut with multiple layout and mounting support.
+
+* Keyboard Maintainer: [dayatz](https://github.com/dayatz)
+* Hardware Supported: dyz60_hs, ATmega32U4
+* Hardware Availability: Local Indonesia GB.
+
+#### Enter Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the Esc key and plug in the keyboard
+* **Physical reset pins**: Briefly short the reset pins on the bottom of Space key
+
+
+#### Flashing
+
+Make example for this keyboard (after setting up your build environment):
+
+ make dyz/dyz60_hs:default
+
+Flashing example for this keyboard:
+
+ make dyz/dyz60_hs: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/dyz/dyz60_hs/rules.mk b/keyboards/dyz/dyz60_hs/rules.mk
new file mode 100644
index 0000000000..dfe72bbfb7
--- /dev/null
+++ b/keyboards/dyz/dyz60_hs/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 = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = no
diff --git a/keyboards/dyz/dyz_tkl/config.h b/keyboards/dyz/dyz_tkl/config.h
index c872680e64..72388d517e 100644
--- a/keyboards/dyz/dyz_tkl/config.h
+++ b/keyboards/dyz/dyz_tkl/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define MANUFACTURER dyz
-#define PRODUCT dyz_TKL
-
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/dyz/dyz_tkl/info.json b/keyboards/dyz/dyz_tkl/info.json
index 07a1a7cb7b..7628b43c94 100644
--- a/keyboards/dyz/dyz_tkl/info.json
+++ b/keyboards/dyz/dyz_tkl/info.json
@@ -1,5 +1,6 @@
{
"keyboard_name": "dyz_TKL",
+ "manufacturer": "dyz",
"url": "https://github.com/dayatz/mechanical-keyboards/tree/master/dyz_tkl",
"maintainer": "dayatz",
"diode_direction": "COL2ROW",
diff --git a/keyboards/dyz/dyz_tkl/readme.md b/keyboards/dyz/dyz_tkl/readme.md
index 2de8105d24..a15eb48e2e 100644
--- a/keyboards/dyz/dyz_tkl/readme.md
+++ b/keyboards/dyz/dyz_tkl/readme.md
@@ -24,4 +24,4 @@ Enter the bootloader in 3 ways:
- **Bootmagic reset**: Hold the `Esc` key while plugging in the USB cable
- **Physical reset button**: Briefly short the pins under the spacebar key
-- **Keycode in layout**: Press the key mapped to `RESET` if it is available
+- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/dyz/selka40/config.h b/keyboards/dyz/selka40/config.h
index 1871fd2cb6..f62eab5c1b 100644
--- a/keyboards/dyz/selka40/config.h
+++ b/keyboards/dyz/selka40/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define MANUFACTURER dyz
-#define PRODUCT selka40
-
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/dyz/selka40/info.json b/keyboards/dyz/selka40/info.json
index 740eb0d5f1..e8fae95b26 100644
--- a/keyboards/dyz/selka40/info.json
+++ b/keyboards/dyz/selka40/info.json
@@ -1,5 +1,6 @@
{
"keyboard_name": "selka40",
+ "manufacturer": "dyz",
"url": "https://github.com/dayatz/mechanical-keyboards/tree/master/selka40",
"maintainer": "dayatz",
"diode_direction": "COL2ROW",
diff --git a/keyboards/dyz/selka40/readme.md b/keyboards/dyz/selka40/readme.md
index 6232d18a10..2117e248bc 100644
--- a/keyboards/dyz/selka40/readme.md
+++ b/keyboards/dyz/selka40/readme.md
@@ -23,4 +23,4 @@ Enter the bootloader in 3 ways:
- **Bootmagic reset**: Hold the `Esc` key while plugging in the USB cable
- **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
+- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/dyz/synthesis60/config.h b/keyboards/dyz/synthesis60/config.h
index 8b14dd4fe6..61dbd41420 100644
--- a/keyboards/dyz/synthesis60/config.h
+++ b/keyboards/dyz/synthesis60/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/dyz/synthesis60/info.json b/keyboards/dyz/synthesis60/info.json
index c0d9baf560..07f3e9a768 100644
--- a/keyboards/dyz/synthesis60/info.json
+++ b/keyboards/dyz/synthesis60/info.json
@@ -1,5 +1,6 @@
{
- "keyboard_name": "synthesis60",
+ "keyboard_name": "Synthesis60 v2.1",
+ "manufacturer": "dyz",
"url": "https://github.com/dayatz/mechanical-keyboards/tree/master/synthesis60",
"maintainer": "dayatz",
"diode_direction": "COL2ROW",
diff --git a/keyboards/dz60/config.h b/keyboards/dz60/config.h
index 24fd63836d..64ef45437f 100644
--- a/keyboards/dz60/config.h
+++ b/keyboards/dz60/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A // "DZ"
-#define PRODUCT_ID 0x2260
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDFans
-#define PRODUCT DZ60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -25,7 +18,6 @@
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dz60/info.json b/keyboards/dz60/info.json
index 9673315168..048d9df2b8 100644
--- a/keyboards/dz60/info.json
+++ b/keyboards/dz60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "DZ60",
+ "manufacturer": "KBDFans",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x445A",
+ "pid": "0x2260",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dz60/keymaps/60_ansi/keymap.c b/keyboards/dz60/keymaps/60_ansi/keymap.c
index 9a9e11ac91..b4ba50c034 100644
--- a/keyboards/dz60/keymaps/60_ansi/keymap.c
+++ b/keyboards/dz60/keymaps/60_ansi/keymap.c
@@ -11,7 +11,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/dz60/keymaps/60_ansi_arrow_fkeys/README.md b/keyboards/dz60/keymaps/60_ansi_arrow_fkeys/README.md
index 3a4218a7c2..5943815583 100644
--- a/keyboards/dz60/keymaps/60_ansi_arrow_fkeys/README.md
+++ b/keyboards/dz60/keymaps/60_ansi_arrow_fkeys/README.md
@@ -17,7 +17,7 @@
```
FN Layer
,-----------------------------------------------------------------------------------------.
-| Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | RESET |
+| Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | QK_BOOT |
|-----------------------------------------------------------------------------------------+
| |RBB T|RGB M| Hue+| Hue-| Sat+| Sat-| Val+| Val-| | | | | |
|-----------------------------------------------------------------------------------------+
diff --git a/keyboards/dz60/keymaps/60_ansi_arrow_fkeys/keymap.c b/keyboards/dz60/keymaps/60_ansi_arrow_fkeys/keymap.c
index 0d3b653638..6a7fd7a7cf 100644
--- a/keyboards/dz60/keymaps/60_ansi_arrow_fkeys/keymap.c
+++ b/keyboards/dz60/keymaps/60_ansi_arrow_fkeys/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* FN Layer
* ,-----------------------------------------------------------------------------------------.
- * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | RESET |
+ * | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | QK_BOOT |
* |-----------------------------------------------------------------------------------------+
* | |RBB T|RGB M| Hue+| Hue-| Sat+| Sat-| Val+| Val-| | | | | |
* |-----------------------------------------------------------------------------------------+
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
LAYOUT_directional(
- 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_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, QK_BOOT,
______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, ______, ______, ______, ______, ______,
______, BL_TOGG, BL_STEP, BL_INC, BL_DEC, ______, ______, ______, ______, ______, ______, ______,
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
diff --git a/keyboards/dz60/keymaps/60_plus_arrows/keymap.c b/keyboards/dz60/keymaps/60_plus_arrows/keymap.c
index f38cdb2853..4758c38a64 100644
--- a/keyboards/dz60/keymaps/60_plus_arrows/keymap.c
+++ b/keyboards/dz60/keymaps/60_plus_arrows/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* FN Layer
* ,-----------------------------------------------------------------------------------------.
- * | Esc | BL- | BL+ | BL | | | |RESET| | | | | | |
+ * | Esc | BL- | BL+ | BL | | | |QK_BOOT| | | | | | |
* |-----------------------------------------------------------------------------------------+
* | |RBGM | | | | | | | | | | Val+ | Val- |RBGTOG|
* |-----------------------------------------------------------------------------------------+
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
LAYOUT_directional(
- KC_ESC, BL_TOGG, BL_STEP, BL_DEC, BL_INC, ______, ______, RESET, ______, ______, ______, ______, ______, ______, ______,
+ KC_ESC, BL_TOGG, BL_STEP, BL_DEC, BL_INC, ______, ______, QK_BOOT, ______, ______, ______, ______, ______, ______, ______,
______, RGB_MOD, ______, ______, ______, ______, ______, ______, ______, ______, ______, RGB_VAI, RGB_VAD, RGB_TOG,
______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, ______, ______, ______, ______, ______, ______, ______,
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_RCTL, ______,
diff --git a/keyboards/dz60/keymaps/60_tsangan/keymap.c b/keyboards/dz60/keymaps/60_tsangan/keymap.c
index dfbc51dd99..e03123e5c9 100644
--- a/keyboards/dz60/keymaps/60_tsangan/keymap.c
+++ b/keyboards/dz60/keymaps/60_tsangan/keymap.c
@@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FL] = LAYOUT_60_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_UP, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, _______, _______,
_______, _______, _______, _______, _______, MO(_CL), _______
diff --git a/keyboards/dz60/keymaps/Ansi_plus_fn_arrows/keymap.c b/keyboards/dz60/keymaps/Ansi_plus_fn_arrows/keymap.c
index 4c6552675a..863a02e726 100644
--- a/keyboards/dz60/keymaps/Ansi_plus_fn_arrows/keymap.c
+++ b/keyboards/dz60/keymaps/Ansi_plus_fn_arrows/keymap.c
@@ -11,7 +11,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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, RESET,
+ 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_DEC, BL_TOGG, BL_INC, BL_STEP, 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_LEFT, KC_LEFT, KC_DOWN, KC_RIGHT),
diff --git a/keyboards/dz60/keymaps/LEdiodes/config.h b/keyboards/dz60/keymaps/LEdiodes/config.h
index e392109119..e5ead20c12 100644
--- a/keyboards/dz60/keymaps/LEdiodes/config.h
+++ b/keyboards/dz60/keymaps/LEdiodes/config.h
@@ -17,7 +17,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3, F4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dz60/keymaps/LEdiodes/keymap.c b/keyboards/dz60/keymaps/LEdiodes/keymap.c
index 9fb859dfe1..f7467db390 100644
--- a/keyboards/dz60/keymaps/LEdiodes/keymap.c
+++ b/keyboards/dz60/keymaps/LEdiodes/keymap.c
@@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------------'
*/
[_L1] = 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_F13, KC_F14, \
+ QK_BOOT, KC_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_WH_U, KC_UP, KC_WH_D, _______, _______,_______, _______, _______, _______, KC_PSCR, _______, _______, _______, \
_______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_HOME, _______, _______, _______, KC_HOME, _______, _______, \
_______, _______, KC_APP, BL_STEP,_______, KC_END, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, KC_PGUP, _______, \
diff --git a/keyboards/dz60/keymaps/_bonfire/keymap-parts/layers.c b/keyboards/dz60/keymaps/_bonfire/keymap-parts/layers.c
index 9a44730b14..763fed6d26 100644
--- a/keyboards/dz60/keymaps/_bonfire/keymap-parts/layers.c
+++ b/keyboards/dz60/keymaps/_bonfire/keymap-parts/layers.c
@@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*
* This is the KEYB/System layer.
* Other keymaps call this a NAV layer, but it's more than just NAV-ing the board's layers.
- * This Layer currently handles RGB and puts the board into RESET for flashing.
+ * This Layer currently handles RGB and puts the board into QK_BOOT for flashing.
*
* ~ key resets board to [BASE].
* 1 key toggles [NRMN].
@@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* BACKSPACE puts board into reset.
*/
[KEYB] = LAYOUT_bonfire(
- TO(BASE), TG(NRMN), TO(GAME), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ TO(BASE), TG(NRMN), TO(GAME), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, BL_DEC, BL_TOGG, BL_INC, BL_STEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
diff --git a/keyboards/dz60/keymaps/atlacat/keymap.c b/keyboards/dz60/keymaps/atlacat/keymap.c
index 606698b755..1141a002cb 100644
--- a/keyboards/dz60/keymaps/atlacat/keymap.c
+++ b/keyboards/dz60/keymaps/atlacat/keymap.c
@@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_SLEP,
- _______, 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, _______, _______, _______, _______, QK_BOOT,
_______, RGB_STA, RGB_BRE, RGB_RAI, RGB_SWI, RGB_SNA, RGB_KNI, RGB_GRA, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______,
_______, _______, BL_DEC , BL_TOGG, BL_INC , BL_STEP, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/dz60/keymaps/billiams/keymap.c b/keyboards/dz60/keymaps/billiams/keymap.c
index b59040d772..b41e2d7508 100644
--- a/keyboards/dz60/keymaps/billiams/keymap.c
+++ b/keyboards/dz60/keymaps/billiams/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----------------------------------------------------------------------------------------+
* | | | | | | | Left| Down| Up |Right| | | Play/Pause |
* |-----------------------------------------------------------------------------------------+
- * | | | | | | | | |Scr- |Scr+ | |PG_UP|RESET|
+ * | | | | | | | | |Scr- |Scr+ | |PG_UP|QK_BOOT|
* |-----------------------------------------------------------------------------------------+
* | | | | | | | HOME|PG_DN| END |
* `-----------------------------------------------------------------------------------------'
@@ -42,7 +42,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, _______, KC_DEL,
_______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_MUTE, KC__VOLDOWN, KC__VOLUP, KC_MRWD, KC_MFFD,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______,
- KC_MPLY, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, KC_PGUP, RESET,
+ KC_MPLY, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, KC_PGUP, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDOWN, KC_END
),
};
diff --git a/keyboards/dz60/keymaps/billiams_layout2/keymap.c b/keyboards/dz60/keymaps/billiams_layout2/keymap.c
index 6f0ae55d14..0ca8916541 100644
--- a/keyboards/dz60/keymaps/billiams_layout2/keymap.c
+++ b/keyboards/dz60/keymaps/billiams_layout2/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----------------------------------------------------------------------------------------+
* | | | | | | | Left| Down| Up |Right| | | Play/Pause |
* |-----------------------------------------------------------------------------------------+
- * | | | | | | | | |Scr- |Scr+ | | | |RESET|
+ * | | | | | | | | |Scr- |Scr+ | | | |QK_BOOT|
* |-----------------------------------------------------------------------------------------+
* | | | | | | | | |
* `-----------------------------------------------------------------------------------------'
@@ -42,7 +42,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, KC__VOLDOWN, KC__VOLUP,
_______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, KC_MUTE, KC_MRWD, KC_MFFD,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, KC_MPLY,
- _______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/dz60/keymaps/billiams_layout4/keymap.c b/keyboards/dz60/keymaps/billiams_layout4/keymap.c
index b1c75d9036..cc62b0d62a 100644
--- a/keyboards/dz60/keymaps/billiams_layout4/keymap.c
+++ b/keyboards/dz60/keymaps/billiams_layout4/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----------------------------------------------------------------------------------------+
* | | | | | | | Left| Down| Up |Right| | | Play/Pause |
* |-----------------------------------------------------------------------------------------+
- * | | | | | | | | |Scr- |Scr+ | |PG_UP|RESET|
+ * | | | | | | | | |Scr- |Scr+ | |PG_UP|QK_BOOT|
* |-----------------------------------------------------------------------------------------+
* | | | | | | | HOME|PG_DN| END |
* `-----------------------------------------------------------------------------------------'
@@ -42,7 +42,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, _______, KC_DEL,
_______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_MUTE, KC__VOLDOWN, KC__VOLUP, KC_MRWD, KC_MFFD,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______,
- KC_MPLY, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, KC_PGUP, RESET,
+ KC_MPLY, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRID, KC_BRIU, _______, _______, KC_PGUP, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDOWN, KC_END
),
};
diff --git a/keyboards/dz60/keymaps/bingocaller/keymap.c b/keyboards/dz60/keymaps/bingocaller/keymap.c
index c19f673f76..787665af78 100644
--- a/keyboards/dz60/keymaps/bingocaller/keymap.c
+++ b/keyboards/dz60/keymaps/bingocaller/keymap.c
@@ -73,12 +73,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* F1-12
* Del on backspace
* RGB (underglow) controls
- * RESET firmware on backslash
+ * QK_BOOT firmware on backslash
* Screen brightness: Z (decrease), X (increase)
*/
[_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, _______, KC_DEL,
- _______, 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, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_BRMD, KC_BRMU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/dz60/keymaps/boris_burger/keymap.c b/keyboards/dz60/keymaps/boris_burger/keymap.c
index 5dcadf34c1..af9ced3877 100644
--- a/keyboards/dz60/keymaps/boris_burger/keymap.c
+++ b/keyboards/dz60/keymaps/boris_burger/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----------------------------------------------------------------------------------------+
* | | BL T| BL M| BL+ | BL- | | | | | | | | |
* |-----------------------------------------------------------------------------------------+
- * | | | | | |RESET| | | | | | | PgUp| |
+ * | | | | | |QK_BOOT| | | | | | | PgUp| |
* |-----------------------------------------------------------------------------------------+
* | | | | | | | Home| PgDn| End |
* `-----------------------------------------------------------------------------------------'
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, _______, _______, _______, _______, _______,
_______, BL_TOGG, BL_STEP, BL_INC , BL_DEC , _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, RESET , _______, _______, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, KC_PGUP, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
),
};
diff --git a/keyboards/dz60/keymaps/calbatr0ss/keymap.c b/keyboards/dz60/keymaps/calbatr0ss/keymap.c
index 89f4418b1d..7c4921a36c 100644
--- a/keyboards/dz60/keymaps/calbatr0ss/keymap.c
+++ b/keyboards/dz60/keymaps/calbatr0ss/keymap.c
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_UP, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_TRNS, KC_TRNS,
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,
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
/* LAYER 3
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
diff --git a/keyboards/dz60/keymaps/chrisae9/keymap.c b/keyboards/dz60/keymaps/chrisae9/keymap.c
index 5893de6e63..fbf4ec2eb7 100644
--- a/keyboards/dz60/keymaps/chrisae9/keymap.c
+++ b/keyboards/dz60/keymaps/chrisae9/keymap.c
@@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_HOME, KC_PGDN, KC_END),
LAYOUT_directional(
- KC_PWR, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BRID, KC_BRIU, KC_NO, KC_PSCR,
+ KC_PWR, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BRID, KC_BRIU, KC_NO, KC_PSCR,
KC_TRNS, KC_PGUP, KC_MS_U, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE,
KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_MPLY,
KC_TRNS, RGB_RMOD, RGB_MOD, KC_BTN3, KC_BTN4, KC_BTN5, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, RGB_VAI, RGB_TOG, RGB_SAI, KC_TRNS,
diff --git a/keyboards/dz60/keymaps/coppertop/keymap.c b/keyboards/dz60/keymaps/coppertop/keymap.c
index 8586f920f9..e3895b28de 100644
--- a/keyboards/dz60/keymaps/coppertop/keymap.c
+++ b/keyboards/dz60/keymaps/coppertop/keymap.c
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------------------------------------------------------.
* | | | | | | | | | / | * | - | = | |Trns |Trns |
* |-----------------------------------------------------------------------------------------+
- * | | | Prev | Play| Next| | | 7 | 8 | 9 | + | | | RESET |
+ * | | | Prev | Play| Next| | | 7 | 8 | 9 | + | | | QK_BOOT |
* |-----------------------------------------------------------------------------------------+
* | | |Mute | VUp | VDn | | | 4 | 5 | 6 | + | | Trns |
* |-----------------------------------------------------------------------------------------+
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MEDIA] = LAYOUT_directional(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSLS, KC_PAST, KC_PMNS, KC_PEQL, XXXXXXX, _______, _______,
- XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PPLS, XXXXXXX, XXXXXXX, RESET,
+ XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PPLS, XXXXXXX, XXXXXXX, QK_BOOT,
_______, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, KC_P4, KC_P5, KC_P6, KC_PPLS, XXXXXXX, _______,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_P1, KC_P2, KC_P3, KC_PENT, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, KC_P0, KC_PDOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
diff --git a/keyboards/dz60/keymaps/crd_2u_lshift/keymap.c b/keyboards/dz60/keymaps/crd_2u_lshift/keymap.c
index 4d2ca279c2..55cba1098b 100644
--- a/keyboards/dz60/keymaps/crd_2u_lshift/keymap.c
+++ b/keyboards/dz60/keymaps/crd_2u_lshift/keymap.c
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* FN2 Layer (Media)
* ,-----------------------------------------------------------------------------------------.
- * | | | | | | | | | | | | | | RESET |
+ * | | | | | | | | | | | | | | QK_BOOT |
* |-----------------------------------------------------------------------------------------+
* | |RBB T|RGB M| Hue+| Hue-| Sat+| Sat-| Val+| Val-| |Mute | Vol- | Vol+ | |
* |-----------------------------------------------------------------------------------------+
@@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
LAYOUT_directional(
- KC_SLEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ KC_SLEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______,
_______, _______, _______, DEBUG, _______, _______, _______, _______, _______, _______, KC_SCROLLLOCK, KC_PAUSE, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_VOLU, KC_MUTE,
diff --git a/keyboards/dz60/keymaps/crd_ansi/keymap.c b/keyboards/dz60/keymaps/crd_ansi/keymap.c
index 5d7b24d187..cc2864d700 100644
--- a/keyboards/dz60/keymaps/crd_ansi/keymap.c
+++ b/keyboards/dz60/keymaps/crd_ansi/keymap.c
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FL] = LAYOUT_60_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_HOME, KC_UP, KC_END, _______, _______, _______, _______, KC_MUTE, _______, _______, KC_PGDN, KC_PGUP, RESET,
+ _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, KC_MUTE, _______, _______, KC_PGDN, KC_PGUP, QK_BOOT,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_SLCK, KC_VOLD, KC_VOLU, KC_PAUS, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/dz60/keymaps/crd_tsangan/keymap.c b/keyboards/dz60/keymaps/crd_tsangan/keymap.c
index 320de07a17..7703a139c3 100644
--- a/keyboards/dz60/keymaps/crd_tsangan/keymap.c
+++ b/keyboards/dz60/keymaps/crd_tsangan/keymap.c
@@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGLT, KC_RADN, KC_RCRT
),
[_FL] = 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, _______, 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, _______, QK_BOOT,
_______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, KC_MUTE, _______, _______, KC_PGDN, KC_PGUP, KC_DEL,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_SLCK, KC_VOLD, KC_VOLU, KC_PAUS, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/dz60/keymaps/danbee/keymap.c b/keyboards/dz60/keymaps/danbee/keymap.c
index 814be29298..b2ec2f72df 100644
--- a/keyboards/dz60/keymaps/danbee/keymap.c
+++ b/keyboards/dz60/keymaps/danbee/keymap.c
@@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_EJCT,
_______, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, RGB_M_T, RGB_MOD, _______, _______, _______, _______, _______, _______,
KC_CAPS, RGB_HUD, RGB_SAD, RGB_VAD, RGB_M_SW,RGB_M_G, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, _______,
- _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_K, _______, RESET , _______, _______, _______, _______, _______, _______,
+ _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_K, _______, QK_BOOT, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/dz60/keymaps/doogle999/keymap.c b/keyboards/dz60/keymaps/doogle999/keymap.c
index deea641f70..787fc8890c 100644
--- a/keyboards/dz60/keymaps/doogle999/keymap.c
+++ b/keyboards/dz60/keymaps/doogle999/keymap.c
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_directional(
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_CALC,
- RESET, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_0, KC_VOLD, KC_VOLU, KC_MUTE,
+ QK_BOOT, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_0, KC_VOLD, KC_VOLU, KC_MUTE,
______, ______, ______, ______, ______, ______, ______, ______, ______, BL_DEC, BL_INC, BL_TOGG, KC_APP,
KC_LSFT, ______, RGB_MOD, RGB_RMOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_TOG, KC_RSFT, KC_PGUP, KC_INSERT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, TO(2), ______, KC_HOME, KC_PGDOWN, KC_END
diff --git a/keyboards/dz60/keymaps/edulpn/keymap.c b/keyboards/dz60/keymaps/edulpn/keymap.c
index 74d7ca4f21..f9eef56733 100644
--- a/keyboards/dz60/keymaps/edulpn/keymap.c
+++ b/keyboards/dz60/keymaps/edulpn/keymap.c
@@ -9,7 +9,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
),
[1] = LAYOUT_60_tsangan_hhkb(
- KC_ESC, KC_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_ESC, KC_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, QK_BOOT,
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_DEL,
KC_TRNS, KC_MPLY, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_TRNS, KC_DOWN, KC_TRNS, KC_TRNS,
diff --git a/keyboards/dz60/keymaps/eric/keymap.c b/keyboards/dz60/keymaps/eric/keymap.c
index a384de480c..571dd25baf 100644
--- a/keyboards/dz60/keymaps/eric/keymap.c
+++ b/keyboards/dz60/keymaps/eric/keymap.c
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS),
LAYOUT(
- RESET, KC_A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ QK_BOOT, KC_A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, 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/dz60/keymaps/f3d3/keymap.c b/keyboards/dz60/keymaps/f3d3/keymap.c
index 1e92aabc18..ac75f7487a 100644
--- a/keyboards/dz60/keymaps/f3d3/keymap.c
+++ b/keyboards/dz60/keymaps/f3d3/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------------------------------------------------------.
* | PWR | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | Del |
* |-----------------------------------------------------------------------------------------+
-* | |RGBT |RGBM |Hue+ |Hue- |Sat+ |Sat- |Val+ |Val- | | | | | RESET |
+* | |RGBT |RGBM |Hue+ |Hue- |Sat+ |Sat- |Val+ |Val- | | | | | QK_BOOT |
* |-----------------------------------------------------------------------------------------+
* | | | | | | | | | | | | | |
* |-----------------------------------------------------------------------------------------+
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_all(
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_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, RESET,
+ 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
diff --git a/keyboards/dz60/keymaps/frogger/keymap.c b/keyboards/dz60/keymaps/frogger/keymap.c
index 75e805cd91..f9f22e4ad4 100644
--- a/keyboards/dz60/keymaps/frogger/keymap.c
+++ b/keyboards/dz60/keymaps/frogger/keymap.c
@@ -64,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layer 2
* ,-----------------------------------------------------------------------------------------.
- * | RESET | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | RESET |
+ * | QK_BOOT | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | QK_BOOT |
* |-----------------------------------------------------------------------------------------+
* | |RBB T|RGB M| Hue+| Hue-| Sat+| Sat-| Val+| Val-| | | | | |
* |-----------------------------------------------------------------------------------------+
@@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
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, ______, RESET,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ______, QK_BOOT,
______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, ______, ______, ______, ______, ______,
diff --git a/keyboards/dz60/keymaps/gk64/keymap.c b/keyboards/dz60/keymaps/gk64/keymap.c
index 9de1ec11c5..0d732f3784 100644
--- a/keyboards/dz60/keymaps/gk64/keymap.c
+++ b/keyboards/dz60/keymaps/gk64/keymap.c
@@ -11,7 +11,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_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, 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS)
diff --git a/keyboards/dz60/keymaps/hailbreno/keymap.c b/keyboards/dz60/keymaps/hailbreno/keymap.c
index 130927e126..813bf00035 100644
--- a/keyboards/dz60/keymaps/hailbreno/keymap.c
+++ b/keyboards/dz60/keymaps/hailbreno/keymap.c
@@ -187,7 +187,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, X, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/dz60/keymaps/iso_de_andys8/keymap.c b/keyboards/dz60/keymaps/iso_de_andys8/keymap.c
index 3039914c6f..dfd5e75b54 100644
--- a/keyboards/dz60/keymaps/iso_de_andys8/keymap.c
+++ b/keyboards/dz60/keymaps/iso_de_andys8/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_NO, KC_NO, KC_NO, KC_NO, RESET, KC_NO, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_PSCR, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_PSCR, 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_END, KC_DEL, KC_NO, KC_NO,
KC_LSFT, BL_TOGG, KC_APP, KC_PAUS, KC_INS, KC_NO, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
diff --git a/keyboards/dz60/keymaps/iso_de_arrow_0x544d/keymap.c b/keyboards/dz60/keymaps/iso_de_arrow_0x544d/keymap.c
index fb1bcd8dca..76a93b50be 100644
--- a/keyboards/dz60/keymaps/iso_de_arrow_0x544d/keymap.c
+++ b/keyboards/dz60/keymaps/iso_de_arrow_0x544d/keymap.c
@@ -73,11 +73,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
- /* Funtion Layer 2: Media Controls left hand, F keys, Page up/down, Home/end, Program/RESET
+ /* Funtion Layer 2: Media Controls left hand, F keys, Page up/down, Home/end, Program/QK_BOOT
* ,-----------------------------------------------------------------------------------------.
* | °^ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Delete |
* |-----------------------------------------------------------------------------------------|
- * | | |Vol_D|Vol_U| | | | | | |RESET| | | |
+ * | | |Vol_D|Vol_U| | | | | | |QK_BOOT| | | |
* |---------------------------------------------------------------------------------- |
* | Trans |MPrv |MPlay| MNxt| | | | | | | | | | |
* |-----------------------------------------------------------------------------------------|
@@ -88,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_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_NO, KC_NO, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, 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
diff --git a/keyboards/dz60/keymaps/iso_de_root/keymap.c b/keyboards/dz60/keymaps/iso_de_root/keymap.c
index e0d781f9a3..c7e78bf876 100644
--- a/keyboards/dz60/keymaps/iso_de_root/keymap.c
+++ b/keyboards/dz60/keymaps/iso_de_root/keymap.c
@@ -102,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[FN1] = LAYOUT_60_iso_5x1u_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,
- _______, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TO(NUM), XXXXXXX, XXXXXXX, KC_INS, KC_DEL, KC_NLCK, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPLY, KC_MSTP, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, KC_RSFT, XXXXXXX,
_______, _______, _______, KC_LCTL, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
diff --git a/keyboards/dz60/keymaps/iso_split-spacebar/keymap.c b/keyboards/dz60/keymaps/iso_split-spacebar/keymap.c
index a9e811f9a4..a93f0ab4ca 100644
--- a/keyboards/dz60/keymaps/iso_split-spacebar/keymap.c
+++ b/keyboards/dz60/keymaps/iso_split-spacebar/keymap.c
@@ -4,12 +4,12 @@
// thanks to atlacat, hailbreno, itsaferbie and weeheavy...
// and special thanks to AGausmann and drashna for the layer-activated RGB underglow
-// https://www.reddit.com/r/olkb/comments/6t1vdu/update_layeractivated_rgb_underglow/
+// https://www.reddit.com/r/olkb/comments/6t1vdu/update_layeractivated_rgb_underglow/
// https://github.com/AGausmann/qmk_firmware/blob/agausmann-v3.x/keyboards/nyquist/keymaps/agausmann/keymap.c
#include QMK_KEYBOARD_H
-/*
+/*
* Each layer gets a name for readability.
* The underscores don't mean anything - you can
* have a layer called STUFF or any other name.
@@ -23,8 +23,8 @@
#define NL 2 // Numpad Layer
#define RL 3 // RGB Layer
-/*
-* Let's give an easier name to the RGB modes
+/*
+* Let's give an easier name to the RGB modes
* and assign the ones we want to the different layer
* these will then be used by the function below
*
@@ -49,10 +49,10 @@
//
#define RGB_RL_MODE rgblight_mode_noeeprom(22) //rgb mode for RL layer
#define RGB_RL_LIGHT rgblight_sethsv_noeeprom_red() //rgb light for RL layer
-
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
+
/* Keymap BL: Base Layer (Default Layer)
*
* ,-----------------------------------------------------------.
@@ -135,12 +135,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[RL] = LAYOUT_60_iso_split(
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14
- TG(RL), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ TG(RL), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, _______, _______, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______,
_______, RGB_STA, RGB_BRE, RGB_RAI, RGB_SWI, _______, _______, RGB_SNA, RGB_KNI, RGB_GRA, RGB_XMS, _______, _______, _______,
_______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, MO(FL), _______, _______, _______, TO(BL), _______),
-
+
};
@@ -175,25 +175,25 @@ void matrix_scan_user(void) {
#ifdef RGBLIGHT_ENABLE
static uint8_t old_layer = 1;
- uint8_t new_layer = biton32(layer_state);
+ uint8_t new_layer = get_highest_layer(layer_state);
if (old_layer != new_layer) {
switch (new_layer) {
case BL:
RGB_BL_MODE;
- RGB_BL_LIGHT;
+ RGB_BL_LIGHT;
break;
case FL:
RGB_FL_MODE;
- RGB_FL_LIGHT;
+ RGB_FL_LIGHT;
break;
case NL:
- RGB_NL_MODE;
- RGB_NL_LIGHT;
+ RGB_NL_MODE;
+ RGB_NL_LIGHT;
break;
case RL:
- RGB_RL_MODE;
- RGB_RL_LIGHT;
+ RGB_RL_MODE;
+ RGB_RL_LIGHT;
break;
}
diff --git a/keyboards/dz60/keymaps/iso_uk/keymap.c b/keyboards/dz60/keymaps/iso_uk/keymap.c
index b725907ec8..49acefd92d 100644
--- a/keyboards/dz60/keymaps/iso_uk/keymap.c
+++ b/keyboards/dz60/keymaps/iso_uk/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_CONTROL] = LAYOUT_60_iso(
// 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- TG(_CN), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ TG(_CN), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/dz60/keymaps/iso_vim_arrow/keymap.c b/keyboards/dz60/keymaps/iso_vim_arrow/keymap.c
index 4dad9e19f5..3a1da6a9d7 100644
--- a/keyboards/dz60/keymaps/iso_vim_arrow/keymap.c
+++ b/keyboards/dz60/keymaps/iso_vim_arrow/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_5x1u(
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, RESET, KC_NO, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_PSCR, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_PSCR, 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_END, KC_DEL, KC_NO, KC_NO,
KC_LSFT, BL_TOGG, KC_APP, KC_PAUS, KC_INS, KC_NO, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_DEL, KC_HOME, KC_PGDN, KC_PGUP, KC_END
diff --git a/keyboards/dz60/keymaps/iso_vim_arrow_split_rs/keymap.c b/keyboards/dz60/keymaps/iso_vim_arrow_split_rs/keymap.c
index 8c34b606ae..fadc7296c5 100644
--- a/keyboards/dz60/keymaps/iso_vim_arrow_split_rs/keymap.c
+++ b/keyboards/dz60/keymaps/iso_vim_arrow_split_rs/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
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_NO, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
diff --git a/keyboards/dz60/keymaps/itsaferbie/keymap.c b/keyboards/dz60/keymaps/itsaferbie/keymap.c
index 51345a2bcd..500d7a6221 100644
--- a/keyboards/dz60/keymaps/itsaferbie/keymap.c
+++ b/keyboards/dz60/keymaps/itsaferbie/keymap.c
@@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN] = LAYOUT_60_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,
- KC_CAPS, ______, ______, ______, ______, ______, ______, ______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, ______, RESET,
+ KC_CAPS, ______, ______, ______, ______, ______, ______, ______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, ______, QK_BOOT,
______, KC_VOLD, KC_VOLU, KC_MUTE, ______, ______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, ______,
______, KC_MPRV, KC_MPLY, KC_MNXT, ______, ______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, ______, ______,
______, ______, ______, ______, ______),
diff --git a/keyboards/dz60/keymaps/jarred/keymap.c b/keyboards/dz60/keymaps/jarred/keymap.c
index 2ef6794934..32ad434f6f 100644
--- a/keyboards/dz60/keymaps/jarred/keymap.c
+++ b/keyboards/dz60/keymaps/jarred/keymap.c
@@ -17,5 +17,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______,RGB_TOG,RGB_MOD,_______,KC_DEL ,KC_BSPC,_______,KC_HOME,KC_UP ,KC_END ,KC_INS ,_______,_______,_______,
_______,RGB_HUI,RGB_HUD,KC_LSFT,KC_LCTL,KC_ENT ,_______,KC_LEFT,KC_DOWN,KC_RGHT,KC_DEL ,KC_DEL , _______,
_______,XXXXXXX,RGB_SAD,RGB_SAI,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,_______,_______,XXXXXXX,
- _______,RGB_VAD,RGB_VAI, _______,_______,_______, _______,_______,XXXXXXX, RESET,_______)
+ _______,RGB_VAD,RGB_VAI, _______,_______,_______, _______,_______,XXXXXXX, QK_BOOT,_______)
};
diff --git a/keyboards/dz60/keymaps/jkbone/keymap.c b/keyboards/dz60/keymaps/jkbone/keymap.c
index 1efcbe38f4..e51625d0b4 100644
--- a/keyboards/dz60/keymaps/jkbone/keymap.c
+++ b/keyboards/dz60/keymaps/jkbone/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LGUI, KC_LALT, KC_LCTL, ____, ____, ____, ____, ____, ____
),
[_FL] = LAYOUT_60_iso_5x1u(
- 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,
+ QK_BOOT, KC_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,
____, ____, DF(_BL), DF(_ML), ____, ____, ____, ____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____, ____, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, ____, ____, ____, ____,
____, RGB_000, RGB_WAN, RGB_OAZ, RGB_VAZ, ____, ____, ____, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY, ____,
diff --git a/keyboards/dz60/keymaps/joooosh_hhkb/keymap.c b/keyboards/dz60/keymaps/joooosh_hhkb/keymap.c
index 05ceb27e5e..f7daafbfce 100644
--- a/keyboards/dz60/keymaps/joooosh_hhkb/keymap.c
+++ b/keyboards/dz60/keymaps/joooosh_hhkb/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* FN1 LAYER
*
* ,---------------------------------------------------------------------------------------------------------------------
- * | KC_GRV | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | INSERT | RESET |
+ * | KC_GRV | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | INSERT | QK_BOOT |
* |---------------------------------------------------------------------------------------------------------------------+
* | RGB_TOG | _ | _ | _ | _ | _ | _ | _ | PSCR | SLCK | PAUS | UP | _ | CLR |
* |---------------------------------------------------------------------------------------------------------------------+
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------------------------------------------------------'
*/
LAYOUT_60_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_INS, 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_INS, QK_BOOT,
RGB_TOG, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_CLR,
KC_CAPS, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_RETURN,
_______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______,
diff --git a/keyboards/dz60/keymaps/kifinnsson/keymap.c b/keyboards/dz60/keymaps/kifinnsson/keymap.c
index 7d88b6dbb4..49067a2ab5 100644
--- a/keyboards/dz60/keymaps/kifinnsson/keymap.c
+++ b/keyboards/dz60/keymaps/kifinnsson/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, KC_HOME, KC_UP, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, XXXXXXX, KC_TAB, KC_LSFT, KC_LCTL, XXXXXXX, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_CAPS, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_BSPC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,,
- _______, _______, XXXXXXX, KC_ENT, KC_ENT, KC_ENT, _______, _______, _______, _______, RESET),
+ _______, _______, XXXXXXX, KC_ENT, KC_ENT, KC_ENT, _______, _______, _______, _______, QK_BOOT),
LAYOUT_all(
KI_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KI_BKSP,
diff --git a/keyboards/dz60/keymaps/krusli/keymap.c b/keyboards/dz60/keymaps/krusli/keymap.c
index 59162675dd..e31f9a9f30 100644
--- a/keyboards/dz60/keymaps/krusli/keymap.c
+++ b/keyboards/dz60/keymaps/krusli/keymap.c
@@ -11,7 +11,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_INS, KC_DEL,
- KC_CAPS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_VAD, RGB_VAI, RGB_SAD, RGB_SAI, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, RESET,
+ KC_CAPS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_VAD, RGB_VAI, RGB_SAD, RGB_SAI, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, QK_BOOT,
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
_______, KC_NO, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
diff --git a/keyboards/dz60/keymaps/lint_kid/keymap.c b/keyboards/dz60/keymaps/lint_kid/keymap.c
index 5134836a26..b16c988b5f 100644
--- a/keyboards/dz60/keymaps/lint_kid/keymap.c
+++ b/keyboards/dz60/keymaps/lint_kid/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// layer 3 FN
LAYOUT_directional(
- 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, _______, 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, _______, QK_BOOT,
KC_TILD, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
TG(1), BL_TOGG, BL_STEP, BL_INC, BL_DEC, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/dz60/keymaps/macos_64/keymap.c b/keyboards/dz60/keymaps/macos_64/keymap.c
index fd19bfe14e..32626b0ce3 100644
--- a/keyboards/dz60/keymaps/macos_64/keymap.c
+++ b/keyboards/dz60/keymaps/macos_64/keymap.c
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* ,-----------------------------------------------------------------------------------------.
* | ` ~ | BR- | BR+ | | | | |PREV |PLAY |NEXT |MUTE | V- | V+ | Delete |
* |-----------------------------------------------------------------------------------------+
- * | | | | Up | | | | | 0 | 1 | 2 | 3 | | RESET |
+ * | | | | Up | | | | | 0 | 1 | 2 | 3 | | QK_BOOT |
* |-----------------------------------------------------------------------------------------+
* | | | Left| Down|Right| | | | | 4 | 5 | 6 | |
* |-----------------------------------------------------------------------------------------+
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
LAYOUT_all(
KC_GRV , KC_SCROLLLOCK, KC_PAUSE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_NO, KC_DEL,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_1, KC_2, KC_3, KC_TRNS, RESET,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_0, KC_1, KC_2, KC_3, KC_TRNS, QK_BOOT,
KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, 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_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),
diff --git a/keyboards/dz60/keymaps/macos_arrow/keymap.c b/keyboards/dz60/keymaps/macos_arrow/keymap.c
index 0675a7954a..89feb20045 100644
--- a/keyboards/dz60/keymaps/macos_arrow/keymap.c
+++ b/keyboards/dz60/keymaps/macos_arrow/keymap.c
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ML] = LAYOUT_all(
KC_MEDIA_EJECT, BR_DOWN, BR_UP, BL_TOGG, RGB_TOG, _______, _______, KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_NO, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_NO, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_BRTG, BL_INC, _______,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_MODE_REVERSE, BL_DEC, RGB_MODE_FORWARD),
diff --git a/keyboards/dz60/keymaps/marianas/customLogic.c b/keyboards/dz60/keymaps/marianas/customLogic.c
index f22bd882e9..03ba92fe92 100644
--- a/keyboards/dz60/keymaps/marianas/customLogic.c
+++ b/keyboards/dz60/keymaps/marianas/customLogic.c
@@ -11,7 +11,7 @@ static int16_t fnTimer = 0;
layer_state_t layer_state_set_user(layer_state_t state)
{
- switch (biton32(state))
+ switch (get_highest_layer(state))
{
case QWERTY:
rgblight_mode(9);
diff --git a/keyboards/dz60/keymaps/marianas/keymap.c b/keyboards/dz60/keymaps/marianas/keymap.c
index a0451b5435..01addc4fe9 100644
--- a/keyboards/dz60/keymaps/marianas/keymap.c
+++ b/keyboards/dz60/keymaps/marianas/keymap.c
@@ -46,5 +46,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPSLOCK, KC_MPRV, KC_MPLY, KC_MNXT, LWIN(KC_R), ____, KC_CALC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_BRK, ____,
____, KC_VOLD, KC_MUTE, KC_VOLU, ____, ____, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_INS, KC_DEL, ____,
____, RGB_HUI, RGB_SAI, RGB_SAD, ____, ____, KC_END, QWRTY, GAME, NAVS, ____, ____,
- ____, ____, ____, _________________, ____, KC_HYPR, KC_MEH, RESET)
+ ____, ____, ____, _________________, ____, KC_HYPR, KC_MEH, QK_BOOT)
};
diff --git a/keyboards/dz60/keymaps/mechmerlin/keymap.c b/keyboards/dz60/keymaps/mechmerlin/keymap.c
index f7ad17fd8c..eaaee21d86 100644
--- a/keyboards/dz60/keymaps/mechmerlin/keymap.c
+++ b/keyboards/dz60/keymaps/mechmerlin/keymap.c
@@ -26,7 +26,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_HOME, KC_PGDN, KC_END),
[_CL] = LAYOUT_60_b_ansi(
- RESET, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, 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, 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,
diff --git a/keyboards/dz60/keymaps/model42/keymap.c b/keyboards/dz60/keymaps/model42/keymap.c
index 66604c6afe..9c760f2f52 100644
--- a/keyboards/dz60/keymaps/model42/keymap.c
+++ b/keyboards/dz60/keymaps/model42/keymap.c
@@ -15,7 +15,7 @@ LAYOUT_directional(KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9,
// layer 1
LAYOUT_directional(KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RESET,
+ 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_DEC, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
diff --git a/keyboards/dz60/keymaps/mpstewart/keymap.c b/keyboards/dz60/keymaps/mpstewart/keymap.c
index 6e8ccb1934..3a84f51830 100644
--- a/keyboards/dz60/keymaps/mpstewart/keymap.c
+++ b/keyboards/dz60/keymaps/mpstewart/keymap.c
@@ -54,12 +54,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤
* │ctrl│lalt│lgui│ S P A C E │rgui│ralt│menu│ctrl│ │40 │41 │43 │46 │4a │4b │4d │4e │
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
- * XXX = RESET (dfu mode)
+ * XXX = QK_BOOT (dfu mode)
*/
[_FN] = LAYOUT_60_ansi_split_bs_rshift(
// _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E
/*0_*/ KC_SLEP, KC_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,
-/*1_*/ KC_CAPS, KC_BRID, KC_BRIU, KC_NO, RESET, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_NO, KC_NO,
+/*1_*/ KC_CAPS, KC_BRID, KC_BRIU, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_NO, KC_NO,
/*2_*/ KC_NO, KC_VOLD, KC_VOLU, KC_MUTE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_RGHT, KC_RETURN,
/*3_*/ KC_LSPO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_PGDN, KC_DOWN, KC_RSPC, KC_TRNS,
/*4_*/ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_APP, AG_TOGG
diff --git a/keyboards/dz60/keymaps/muralisc/keymap.c b/keyboards/dz60/keymaps/muralisc/keymap.c
new file mode 100644
index 0000000000..2cd9df89a5
--- /dev/null
+++ b/keyboards/dz60/keymaps/muralisc/keymap.c
@@ -0,0 +1,72 @@
+/* Copyright 2022 Murali Suresh
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Copied from keyboards/dz60/keymaps/60_ansi/keymap.c
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Qwerty
+ * ,------------------------------------------------------------------------------------------.
+ * | ` ~ | 1! | 2@ | 3# | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | - | = | Bkspc |
+ * |------------------------------------------------------------------------------------------+
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
+ * |------------------------------------------------------------------------------------------+
+ * | Ctl_T(C) | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
+ * |------------------------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | / | RShift |
+ * |------------------------------------------------------------------------------------------+
+ * | MO1 | Cmd | Alt | Space | RAlt | Cmd | MO2 | RCTL |
+ * `------------------------------------------------------------------------------------------'
+ */
+
+ 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,
+ MO(1) , KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(2), KC_RCTL),
+
+ /* Qwerty
+ * ,------------------------------------------------------------------------------------------.
+ * | Esc | F1 | F2 | F3 | F4 | 5% | 6^ | 7& | 8* | 9( | 0) | - | = | Bkspc |
+ * |------------------------------------------------------------------------------------------+
+ * | Tab | Q | W | End | R | T | Y | U | I | O | PsCr| SlCk| Paus| \ |
+ * |------------------------------------------------------------------------------------------+
+ * | Ctl_T(C) | Home| S | D | Pgdn| G | Left| Down| Up | Rght| Home| PgUp| Enter |
+ * |------------------------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | PgUp| N | M | , | End | PgDn| RShift |
+ * |------------------------------------------------------------------------------------------+
+ * | MO1 | Cmd | Alt | Space | RAlt | Cmd | MO2 | RCTL |
+ * `------------------------------------------------------------------------------------------'
+ */
+
+
+ LAYOUT_60_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_TRNS, KC_TRNS, KC_TRNS, KC_END , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
+ KC_TRNS, KC_HOME, KC_TRNS, KC_TRNS, KC_PGDN, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_HOME, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, 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),
+
+ 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
+ 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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/dz60/keymaps/muzfuz/keymap.c b/keyboards/dz60/keymaps/muzfuz/keymap.c
index 848569f61e..695f012fad 100644
--- a/keyboards/dz60/keymaps/muzfuz/keymap.c
+++ b/keyboards/dz60/keymaps/muzfuz/keymap.c
@@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
- _______, 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, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/dz60/keymaps/n0velty/keymap.c b/keyboards/dz60/keymaps/n0velty/keymap.c
index 1b9c73eb95..b66fc13398 100644
--- a/keyboards/dz60/keymaps/n0velty/keymap.c
+++ b/keyboards/dz60/keymaps/n0velty/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_MSEL, KC_MUTE, _______, _______),
[_F2] = LAYOUT_true_hhkb( //function Layer 2
- RESET, RGB_STA, RGB_BRE, RGB_RAI, RGB_SWI, RGB_SNA, RGB_KNI, RGB_GRA, _______, _______, _______, _______, _______, KC_SLEP, KC_PWR, \
+ QK_BOOT, RGB_STA, RGB_BRE, RGB_RAI, RGB_SWI, RGB_SNA, RGB_KNI, RGB_GRA, _______, _______, _______, _______, _______, KC_SLEP, KC_PWR, \
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, KC_ACL2, KC_BTN1, KC_MS_U, KC_BTN2, _______, \
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, KC_ACL1, KC_MS_L, KC_MS_R, _______, \
BL_TOGG, XXXXXXX, BL_STEP, BL_INC, BL_DEC, _______, _______, _______, _______, _______, KC_ACL0, KC_MS_D, _______, _______, \
diff --git a/keyboards/dz60/keymaps/niclake/keymap.c b/keyboards/dz60/keymaps/niclake/keymap.c
index 6191e18c0b..7c1b0b7d7c 100644
--- a/keyboards/dz60/keymaps/niclake/keymap.c
+++ b/keyboards/dz60/keymaps/niclake/keymap.c
@@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
XXXXXXX, RGB_ON, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_G, RGB_M_TW, RGB_M_T, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
ADJUST, MACWIN, XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 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/dz60/keymaps/olivierko/keymap.c b/keyboards/dz60/keymaps/olivierko/keymap.c
index 38d12d4d4b..8d3d4eb3d2 100644
--- a/keyboards/dz60/keymaps/olivierko/keymap.c
+++ b/keyboards/dz60/keymaps/olivierko/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_CL] = LAYOUT_olivierko(
RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, 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, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, DEBUG, 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_RSFT,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO),
diff --git a/keyboards/dz60/keymaps/olligranlund_iso/keymap.c b/keyboards/dz60/keymaps/olligranlund_iso/keymap.c
index b5cc920b56..e71bac47de 100644
--- a/keyboards/dz60/keymaps/olligranlund_iso/keymap.c
+++ b/keyboards/dz60/keymaps/olligranlund_iso/keymap.c
@@ -104,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 3 FN with RGB and macros
LAYOUT_60_iso_split_space_bs_rshift(
- KC_GRV, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_HUD, RGB_SAD, RGB_VAD, KC_F10, KC_F11, KC_F12, KC_DEL, RESET,
+ KC_GRV, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_HUD, RGB_SAD, RGB_VAD, KC_F10, KC_F11, KC_F12, KC_DEL, QK_BOOT,
KC_NO, KC_NO, EMOJI_DANCERS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, EMOJI_PERJANTAI, EMOJI_THISISFINE,EMOJI_KOVAAAJOA, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO,
KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT, KC_CAPS,
diff --git a/keyboards/dz60/keymaps/olligranlund_iso_v2/keymap.c b/keyboards/dz60/keymaps/olligranlund_iso_v2/keymap.c
index 76fdedbbd6..6aede3f13f 100644
--- a/keyboards/dz60/keymaps/olligranlund_iso_v2/keymap.c
+++ b/keyboards/dz60/keymaps/olligranlund_iso_v2/keymap.c
@@ -104,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 3 FN with RGB and macros
LAYOUT_60_iso_5x1u_split_bs_rshift_spc(
- KC_GRV, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_HUD, RGB_SAD, RGB_VAD, KC_F10, KC_F11, KC_F12, KC_DEL, RESET,
+ KC_GRV, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_HUD, RGB_SAD, RGB_VAD, KC_F10, KC_F11, KC_F12, KC_DEL, QK_BOOT,
KC_NO, KC_NO, EMOJI_DANCERS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, EMOJI_PERJANTAI, EMOJI_THISISFINE,EMOJI_KOVAAAJOA, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO,
KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_END, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT, KC_CAPS,
diff --git a/keyboards/dz60/keymaps/ottodokto/keymap.c b/keyboards/dz60/keymaps/ottodokto/keymap.c
index 347c6a0497..bccf718de6 100644
--- a/keyboards/dz60/keymaps/ottodokto/keymap.c
+++ b/keyboards/dz60/keymaps/ottodokto/keymap.c
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
),
[_func] = LAYOUT_60_tsangan_hhkb(
- 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, _______, RESET, \
+ 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, _______, QK_BOOT, \
_______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, RGB_SPI, RGB_HUD, RGB_VAI, RGB_HUI, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, \
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, RGB_SPD, RGB_SAD, RGB_VAD, RGB_SAI, KC_BRID, KC_BRIU, _______, \
_______, RGB_STA, RGB_BRE, RGB_RAI, RGB_SWI, RGB_SNA, RGB_KNI, RGB_GRA, VLK_TOG, _______, _______, _______, _______, \
diff --git a/keyboards/dz60/keymaps/pevecyan/keymap.c b/keyboards/dz60/keymaps/pevecyan/keymap.c
index 8ae4899ac8..bfde76b07b 100644
--- a/keyboards/dz60/keymaps/pevecyan/keymap.c
+++ b/keyboards/dz60/keymaps/pevecyan/keymap.c
@@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, \
- _______, 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,_______,_______,_______,_______,QK_BOOT, \
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
_______,_______,_______,_______,BL_DEC, BL_TOGG,BL_INC, BL_STEP,_______,_______,_______,_______, _______,_______, \
_______,_______, _______,_______, _______, _______, _______,_______,_______,_______,_______ \
diff --git a/keyboards/dz60/keymaps/pok3r/keymap.c b/keyboards/dz60/keymaps/pok3r/keymap.c
index 614cb0069c..bd627a9bbb 100644
--- a/keyboards/dz60/keymaps/pok3r/keymap.c
+++ b/keyboards/dz60/keymaps/pok3r/keymap.c
@@ -11,7 +11,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_MPRV, KC_MPLY, KC_MNXT, RESET, _______, KC_CALC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, QK_BOOT, _______, KC_CALC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______,
KC_CAPS, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_DEL, _______,
_______, KC_APP, _______, _______, _______, _______, KC_END, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/dz60/keymaps/split_space_arrows/keymap.c b/keyboards/dz60/keymaps/split_space_arrows/keymap.c
index 6dbfaa9375..361c5b60a4 100644
--- a/keyboards/dz60/keymaps/split_space_arrows/keymap.c
+++ b/keyboards/dz60/keymaps/split_space_arrows/keymap.c
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layer 4: RGB lighting controls and keyboard config, reset */
LAYOUT_b_4_10(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(5),
- 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, RGB_HUD,
+ KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_HUD,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_MODE_PLAIN, RGB_MODE_FORWARD, KC_RSHIFT,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG, RGB_VAI, RGB_HUI,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, RGB_SAD, RGB_VAD, RGB_SAI
diff --git a/keyboards/dz60/keymaps/spotpuff/keymap.c b/keyboards/dz60/keymaps/spotpuff/keymap.c
index edbe635e39..6a921b8307 100644
--- a/keyboards/dz60/keymaps/spotpuff/keymap.c
+++ b/keyboards/dz60/keymaps/spotpuff/keymap.c
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------------------------------------------------------.
* | | | | | | |NumLk| | / | * | - | = | |Trns |Trns |
* |-----------------------------------------------------------------------------------------+
- * | | | Prev | Play| Next| | | 7 | 8 | 9 | + | | | RESET |
+ * | | | Prev | Play| Next| | | 7 | 8 | 9 | + | | | QK_BOOT |
* |-----------------------------------------------------------------------------------------+
* | Trns | |Mute | VUp | VDn | | | 4 | 5 | 6 | + | | Trns |
* |-----------------------------------------------------------------------------------------+
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MEDIA] = LAYOUT_directional(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_NLCK, XXXXXXX, KC_PSLS, KC_PAST, KC_PMNS, KC_PEQL, XXXXXXX, _______, _______,
- XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PPLS, XXXXXXX, XXXXXXX, RESET,
+ XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PPLS, XXXXXXX, XXXXXXX, QK_BOOT,
_______, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, KC_P4, KC_P5, KC_P6, KC_PPLS, XXXXXXX, _______,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_P1, KC_P2, KC_P3, KC_PENT, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, KC_P0, KC_PDOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
diff --git a/keyboards/dz60/keymaps/stephengrier/keymap.c b/keyboards/dz60/keymaps/stephengrier/keymap.c
index f6bbe78932..b55915463d 100644
--- a/keyboards/dz60/keymaps/stephengrier/keymap.c
+++ b/keyboards/dz60/keymaps/stephengrier/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------------------------------------------------------.
* | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | DEL |
* |-----------------------------------------------------------------------------------------+
- * | |RBB T|RGB M| Hue+| Hue-| Sat+| Sat-| Val+| Val-| | | | | RESET |
+ * | |RBB T|RGB M| Hue+| Hue-| Sat+| Sat-| Val+| Val-| | | | | QK_BOOT |
* |-----------------------------------------------------------------------------------------+
* | | BL T| BL M| BL+ | BL- | | | | | | | | |
* |-----------------------------------------------------------------------------------------+
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_directional(
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,
- ______, 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, ______, ______, ______, ______, QK_BOOT,
______, BL_TOGG, BL_STEP, BL_INC, BL_DEC, ______, ______, ______, ______, ______, ______, ______,
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______,
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______
diff --git a/keyboards/dz60/keymaps/tailcall/keymap.c b/keyboards/dz60/keymaps/tailcall/keymap.c
index 3835b1f646..cc71a604c7 100644
--- a/keyboards/dz60/keymaps/tailcall/keymap.c
+++ b/keyboards/dz60/keymaps/tailcall/keymap.c
@@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_SLEP,
- _______, 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, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, BL_DEC , BL_TOGG, BL_INC , BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/dz60/keymaps/thomasviaud/keymap.c b/keyboards/dz60/keymaps/thomasviaud/keymap.c
index 02fdb5a4a0..44b106858f 100644
--- a/keyboards/dz60/keymaps/thomasviaud/keymap.c
+++ b/keyboards/dz60/keymaps/thomasviaud/keymap.c
@@ -14,5 +14,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______,
- _______, _______, _______, RESET, _______, _______, _______, _______),
+ _______, _______, _______, QK_BOOT, _______, _______, _______, _______),
}; \ No newline at end of file
diff --git a/keyboards/dz60/keymaps/twschum_b_4_10/keymap.c b/keyboards/dz60/keymaps/twschum_b_4_10/keymap.c
index 6efb567133..e355499704 100644
--- a/keyboards/dz60/keymaps/twschum_b_4_10/keymap.c
+++ b/keyboards/dz60/keymaps/twschum_b_4_10/keymap.c
@@ -102,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* RGB lighting controls and keyboard config, reset */
LAYOUT_b_4_10(
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG_L0_RGB, XXXXXXX, XXXXXXX, TO(_None),
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUD,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUD,
EN_CTRL_SHORTCUTS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG_LAYER_RGB, RGB_MODE_PLAIN, RGB_MODE_FORWARD, KC_RSHIFT,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MAKE, XXXXXXX, XXXXXXX, RGB_TOG, RGB_VAI, RGB_HUI,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_VAD, RGB_SAI
diff --git a/keyboards/dz60/keymaps/weeheavy/keymap.c b/keyboards/dz60/keymaps/weeheavy/keymap.c
index cb9697e107..f5df06ae73 100644
--- a/keyboards/dz60/keymaps/weeheavy/keymap.c
+++ b/keyboards/dz60/keymaps/weeheavy/keymap.c
@@ -29,8 +29,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Setup layer - Reset an additional "b" button
[L2] = LAYOUT_all(
- RESET, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
- KC_B, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, RESET,
+ QK_BOOT, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
+ KC_B, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, QK_BOOT,
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____),
diff --git a/keyboards/dz60/keymaps/weeheavy_2.25_lshift/keymap.c b/keyboards/dz60/keymaps/weeheavy_2.25_lshift/keymap.c
index 38e4519b33..8138eaa5bb 100644
--- a/keyboards/dz60/keymaps/weeheavy_2.25_lshift/keymap.c
+++ b/keyboards/dz60/keymaps/weeheavy_2.25_lshift/keymap.c
@@ -20,8 +20,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Utility layer - RGB and multimedia control, reset and additional "b" button
[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_B, RGB_TOG, RGB_MOD, RGB_M_K, RGB_M_R, ____, ____, KC_PSCR, ____, KC_PAUS, KC_BRID, KC_BRIU, ____, RESET,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ____, ____,
+ KC_B, RGB_TOG, RGB_MOD, RGB_M_K, RGB_M_R, ____, ____, KC_PSCR, ____, KC_PAUS, KC_BRID, KC_BRIU, ____, QK_BOOT,
____, RGB_HUI, RGB_HUD, KC_DEL, ____, ____, ____, KC_INS, KC_HOME, KC_PGUP, ____, ____, ____,
____, ____, RGB_SAI, RGB_SAD, ____, ____, ____, ____, ____, KC_END, KC_PGDN, KC_MPLY, ____, KC_MUTE, KC_MUTE,
____, RGB_VAI, RGB_VAD, ____, ____, ____, ____, KC_MPRV, KC_VOLU, KC_VOLD, KC_MNXT),
diff --git a/keyboards/dz60/keymaps/xtonhasvim/keymap.c b/keyboards/dz60/keymaps/xtonhasvim/keymap.c
index 9a482686d8..aa54698e78 100644
--- a/keyboards/dz60/keymaps/xtonhasvim/keymap.c
+++ b/keyboards/dz60/keymaps/xtonhasvim/keymap.c
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FUN] = 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,
- _______, 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, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_QWERTY)),
@@ -73,7 +73,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
static uint32_t last_state = 0;
if(last_state != state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _CMD:
user_led_on();
break;
@@ -85,5 +85,3 @@ layer_state_t layer_state_set_user(layer_state_t state) {
}
return state;
}
-
-
diff --git a/keyboards/dz60/keymaps/zepol_layout/keymap.c b/keyboards/dz60/keymaps/zepol_layout/keymap.c
index 4caf83b67e..cd4ff8cc81 100644
--- a/keyboards/dz60/keymaps/zepol_layout/keymap.c
+++ b/keyboards/dz60/keymaps/zepol_layout/keymap.c
@@ -17,7 +17,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),
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,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, 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/bocc/config.h b/keyboards/dztech/bocc/config.h
index 95362b01fc..d9f0224ae8 100644
--- a/keyboards/dztech/bocc/config.h
+++ b/keyboards/dztech/bocc/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A // "DZ"
-#define PRODUCT_ID 0x1010
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DZtech
-#define PRODUCT BOCC
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, F0 }
#define MATRIX_COL_PINS { B5, B6, C6, C7, F7, F6, F5, F4, F1, D1, D2, D3, D5, D4, D6, D7, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dztech/bocc/info.json b/keyboards/dztech/bocc/info.json
index e06f83f277..aca74e0405 100644
--- a/keyboards/dztech/bocc/info.json
+++ b/keyboards/dztech/bocc/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BOCC",
+ "manufacturer": "DZTECH",
"url": "",
"maintainer": "DZTECH",
+ "usb": {
+ "vid": "0x445A",
+ "pid": "0x1010",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"x":0, "y":0}, {"x":1, "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":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":"+", "x":14.5, "y":0}, {"label":"Backspace", "x":15.5, "y":0}, {"x":16.5, "y":0}, {"label":"Home", "x":17.5, "y":0}, {"x":0, "y":1}, {"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":"Page Up", "x":17.5, "y":1}, {"x":0, "y":2}, {"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":"Page Down", "x":17.5, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.5, "y":3, "w":1.25}, {"label":"Shift", "x":3.75, "y":3}, {"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":"\u2191", "x":16.5, "y":3}, {"label":"End", "x":17.5, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"label":"Ctrl", "x":2.5, "y":4, "w":1.25}, {"label":"Win", "x":3.75, "y":4, "w":1.25}, {"label":"Alt", "x":5, "y":4, "w":1.25}, {"x":6.25, "y":4, "w":6.25}, {"label":"Alt", "x":12.5, "y":4, "w":1.25}, {"label":"Fn", "x":13.75, "y":4, "w":1.25}, {"label":"\u2190", "x":15.5, "y":4}, {"label":"\u2193", "x":16.5, "y":4}, {"label":"\u2192", "x":17.5, "y":4}]
diff --git a/keyboards/dztech/duo_s/config.h b/keyboards/dztech/duo_s/config.h
index a108fa665e..d08e1547be 100644
--- a/keyboards/dztech/duo_s/config.h
+++ b/keyboards/dztech/duo_s/config.h
@@ -18,19 +18,11 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0X1012
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DZTECH
-#define PRODUCT DUO-S
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { A15, B3, B4, B5, B11 }
#define MATRIX_COL_PINS { B12, B13, B14, A8, B9, C13, C14, C15, A1, A2, A3, A4, A5, A6, A7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/dztech/duo_s/info.json b/keyboards/dztech/duo_s/info.json
index 6adac04ae6..dc1ccd2788 100644
--- a/keyboards/dztech/duo_s/info.json
+++ b/keyboards/dztech/duo_s/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "duo_s",
+ "keyboard_name": "DUO-S",
+ "manufacturer": "DZTECH",
"url": "",
"maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x445A",
+ "pid": "0x1012",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/dztech/duo_s/readme.md b/keyboards/dztech/duo_s/readme.md
index 7346663854..8bf5fa73c1 100644
--- a/keyboards/dztech/duo_s/readme.md
+++ b/keyboards/dztech/duo_s/readme.md
@@ -16,6 +16,6 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix
* **Physical reset button**: hold the button on the back of the PCB during plug in cable.
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/dztech/dz60rgb/info.json b/keyboards/dztech/dz60rgb/info.json
index 5cbce57165..d5179aa09f 100644
--- a/keyboards/dztech/dz60rgb/info.json
+++ b/keyboards/dztech/dz60rgb/info.json
@@ -1,7 +1,11 @@
{
"keyboard_name": "DZ60RGB",
+ "manufacturer": "DZTECH",
"url": "",
"maintainer": "dztech",
+ "usb": {
+ "vid": "0x445A"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/dztech/dz60rgb/keymaps/didel/keymap.c b/keyboards/dztech/dz60rgb/keymaps/didel/keymap.c
index d88bc1092f..59f2df42c0 100644
--- a/keyboards/dztech/dz60rgb/keymaps/didel/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/didel/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MEDIA] = LAYOUT(
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_POWER,
- _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
+ _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, EEP_RST,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_END, KC_PGDN, KC_VOLU, KC_MUTE,
_______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_RGB] = 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,
- _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET,
+ _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, EEP_RST,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h b/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h
index fc836b5ebb..e3250acef1 100644
--- a/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/kgreulich/config.h
@@ -7,8 +7,6 @@
#define TAP_HOLD_CAPS_DELAY 0
#define USB_POLLING_INTERVAL_MS 1
-#define QMK_KEYS_PER_SCAN 4
-
// some speed shit
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
diff --git a/keyboards/dztech/dz60rgb/keymaps/kgreulich/keymap.c b/keyboards/dztech/dz60rgb/keymaps/kgreulich/keymap.c
index cf067bdeb2..713251af85 100644
--- a/keyboards/dztech/dz60rgb/keymaps/kgreulich/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/kgreulich/keymap.c
@@ -10,14 +10,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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, KC_DEL,
- _______, _______, _______, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
+ _______, _______, _______, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, EEP_RST,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, KC_END, KC_PGDN, KC_VOLU, KC_MUTE,
_______, _______, _______, KC_SPC, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
),
[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_DEL,
- _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET,
+ _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, EEP_RST,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h
index c2b14f5284..ca64eeb69b 100644
--- a/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/config.h
@@ -51,8 +51,6 @@
// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH
// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define QMK_KEYS_PER_SCAN 4
-
// #define RGB_MATRIX_KEYRELEASES
// some speed shit
diff --git a/keyboards/dztech/dz60rgb/keymaps/matthewrobo/keymap.c b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/keymap.c
index a12358c8d9..287496e17f 100644
--- a/keyboards/dztech/dz60rgb/keymaps/matthewrobo/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/matthewrobo/keymap.c
@@ -96,7 +96,7 @@ void rgb_matrix_indicators_user(void)
uint8_t this_led = host_keyboard_leds();
if (!g_suspend_state && rgb_matrix_config.enable) {
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _NAV:
if (this_led & (1 << USB_LED_NUM_LOCK)) {
rgb_matrix_set_color(13, 0xFF, 0x00, 0x00);
diff --git a/keyboards/dztech/dz60rgb/keymaps/mechmaster48/keymap.c b/keyboards/dztech/dz60rgb/keymaps/mechmaster48/keymap.c
index 84cc76b112..3a4aad1b6c 100644
--- a/keyboards/dztech/dz60rgb/keymaps/mechmaster48/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/mechmaster48/keymap.c
@@ -33,7 +33,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
--Layer 1--
_____________________________________________________________________________________
|[TO(2)] [F1]-[F2]-[F3]-[F4]-[F5]-[F6]-[F7]-[F8]-[F9]-[F10]-[F11]-[F12] [ â–¼ ]|
- |[ â–¼ ] [~]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[PS]-[â–¼]-[â–¼]-[â–¼]-[play/pause]-[â–¼] [ RESET ]|
+ |[ â–¼ ] [~]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[PS]-[â–¼]-[â–¼]-[â–¼]-[play/pause]-[â–¼] [ QK_BOOT ]|
|[ â–¼ ] [â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[PU]-[â–¼]-[â–¼] [ â–¼ ]|
|[ Shift ] [▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[▼]-[PD]-[▼] [vol↑] [ ▼ ]|
|[ctrl][ â–¼ ][alt] [_________________â–¼________________] [â–¼][ â–¼ ][â†prvs][vol↓][next→]|
@@ -44,7 +44,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
--Layer 2--
_________________________________________________________________________________________________
|[ â–¼ ] [â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼] [ â–¼ ]|
- |[ â–¼ ] [RGBTgg]-[â–¼]-[Hue+]-[Hue-]-[Sat+]-[Sat-]-[Brt+]-[Brt-]-[RGBmd]-[â–¼]-[â–¼]-[â–¼] [ RESET ]|
+ |[ â–¼ ] [RGBTgg]-[â–¼]-[Hue+]-[Hue-]-[Sat+]-[Sat-]-[Brt+]-[Brt-]-[RGBmd]-[â–¼]-[â–¼]-[â–¼] [ QK_BOOT ]|
|[ â–¼ ] [â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼] [ â–¼ ]|
|[ â–¼ ] [â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼]-[â–¼] [ â–¼ ][ â–¼ ]|
|[ â–¼ ][ â–¼ ][â–¼] [_______________TO(0)________________] [â–¼][ â–¼ ] [ â–¼ ][ â–¼ ][ â–¼ ]|
@@ -64,14 +64,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT(
TO(2), KC_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_PSCR, _______, _______, _______, KC_MPLY, _______, RESET,
+ _______, KC_GRV, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, KC_MPLY, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______, _______, EEP_RST,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, _______, KC_VOLU, KC_MUTE,
KC_LCTL, _______, KC_LALT, TO(0), _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
),
[2] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET,
+ _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, EEP_RST,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, TO(0), _______, _______, _______, _______, _______
diff --git a/keyboards/dztech/dz60rgb/keymaps/mekanist/keymap.c b/keyboards/dztech/dz60rgb/keymaps/mekanist/keymap.c
index a7c6360568..3fe99fd61b 100644
--- a/keyboards/dztech/dz60rgb/keymaps/mekanist/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/mekanist/keymap.c
@@ -16,7 +16,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1) , KC_LEFT, KC_DOWN, KC_RGHT),
[_LAYER1] = LAYOUT( /* FN */
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,
- _______, _______, _______, _______, _______, _______, _______, _______, LGUI(LSFT(KC_5)), KC_SLCK, KC_PAUS, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, LGUI(LSFT(KC_5)), KC_SLCK, KC_PAUS, _______, _______, QK_BOOT,
_______, KC_VOLU, KC_VOLD, KC_MUTE, KC_EJCT, _______, KC_ASTR, KC_PSLS, KC_HOME, KC_PGUP, _______, _______, _______, _______,
_______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, MO(5), KC_MPLY, _______,
_______, _______, _______, TO(4), _______, _______, KC_MPRV, KC_MSTP, KC_MFFD),
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(5) , KC_LEFT, KC_DOWN, KC_RIGHT),
[_LAYER5] = LAYOUT( /* FN */
_______, KC_BRID, KC_BRIU, LCTL(KC_UP), LSFT(KC_F12), 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_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
_______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDOWN, KC_VOLU, KC_MUTE,
_______, _______, _______, TO(0), _______, _______, KC_MPRV, KC_VOLD, KC_MNXT),
@@ -62,7 +62,7 @@ void rgb_matrix_indicators_user(void)
uint8_t this_led = host_keyboard_leds();
if (!g_suspend_state && rgb_matrix_config.enable) {
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _LAYER1:
rgb_matrix_layer_helper(0xFF, 0x00, 0x00); break;
@@ -78,7 +78,7 @@ void rgb_matrix_indicators_user(void)
rgb_matrix_set_color(40, 0xFF, 0xFF, 0xFF);
}
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _LAYER3:
if (this_led & (1 << USB_LED_NUM_LOCK)) {
rgb_matrix_set_color(13, 0xFF, 0x00, 0x00);
diff --git a/keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c b/keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c
index 98802270a6..8ca92d1012 100644
--- a/keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/moults31/keymap.c
@@ -27,14 +27,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_HOME, KC_END, RESET,
+ _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_HOME, KC_END, QK_BOOT,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, EEP_RST,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, KC_MPLY, KC_VOLU, KC_MUTE,
_______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
),
[2] = LAYOUT(
RGB_MOD, KC_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_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, RESET,
+ _______, _______, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, QK_BOOT,
_______, RGB_SAD, RGB_HUD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, _______,
_______, _______, _______, _______, _______, _______, RGB_SPI, RGB_VAD, RGB_SPD
diff --git a/keyboards/dztech/dz60rgb/keymaps/perseid/keymap.c b/keyboards/dztech/dz60rgb/keymaps/perseid/keymap.c
index c13fcc1d35..eeffe66f40 100644
--- a/keyboards/dztech/dz60rgb/keymaps/perseid/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/perseid/keymap.c
@@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, FNM, KC_RALT, KC_LEFT, KC_DOWN, KC_RIGHT),
[_FNM] = LAYOUT( /* 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, 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, RGB_SPD, KC_HOME, KC_PGUP, EEP_RST,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_VOLU, KC_MUTE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT)
@@ -37,7 +37,7 @@ void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue) {
void rgb_matrix_indicators_user(void)
{
if (!g_suspend_state) {
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _QWERTY:
rgb_matrix_layer_helper(0x00, 0x0F, 0xFF); break;
@@ -46,7 +46,7 @@ void rgb_matrix_indicators_user(void)
}
}
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _FNM:
rgb_matrix_set_color(0, 0x00, 0xFF, 0x00);
rgb_matrix_set_color(1, 0x00, 0x00, 0x00);
diff --git a/keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c b/keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c
index 38c5959374..b6644ed14b 100644
--- a/keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/piv3rt/keymap.c
@@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_RGB] = 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,
- _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET,
+ _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, RGB_PCY, _______, _______, RGB_SPI, RGB_SPD, _______, _______, EEP_RST,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_000, _______,
_______, _______, _______, RGB_RST, _______, _______, KC_PWR, AMDREC, AMDREP
diff --git a/keyboards/dztech/dz60rgb/keymaps/xunz/config.h b/keyboards/dztech/dz60rgb/keymaps/xunz/config.h
index cfeba003bd..2fdb3e5f4c 100644
--- a/keyboards/dztech/dz60rgb/keymaps/xunz/config.h
+++ b/keyboards/dztech/dz60rgb/keymaps/xunz/config.h
@@ -46,8 +46,6 @@
// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH
// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define QMK_KEYS_PER_SCAN 4
-
// #define RGB_MATRIX_KEYRELEASES
#define NO_ACTION_ONESHOT
diff --git a/keyboards/dztech/dz60rgb/keymaps/xunz/keymap.c b/keyboards/dztech/dz60rgb/keymaps/xunz/keymap.c
index 523fd05555..1de0d2632d 100644
--- a/keyboards/dztech/dz60rgb/keymaps/xunz/keymap.c
+++ b/keyboards/dztech/dz60rgb/keymaps/xunz/keymap.c
@@ -10,12 +10,12 @@ 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, RSFT_T(KC_SLSH), KC_UP, LT(2,KC_DEL),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
[_LAYER1] = 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_DEL,
- KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, EEP_RST,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_VOLU, KC_MUTE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
[_LAYER2] = LAYOUT(KC_TRNS, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, KC_DEL,
- KC_TRNS, RGB_TOG, KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, KC_TRNS, KC_PSLS, KC_PAST, RESET,
+ KC_TRNS, RGB_TOG, KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, KC_TRNS, KC_PSLS, KC_PAST, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, EEP_RST,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PDOT, 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/dz60rgb/v1/config.h b/keyboards/dztech/dz60rgb/v1/config.h
index 7bdad00144..b150e4a162 100644
--- a/keyboards/dztech/dz60rgb/v1/config.h
+++ b/keyboards/dztech/dz60rgb/v1/config.h
@@ -1,12 +1,5 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0x1120
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DZTECH
-#define PRODUCT DZ60RGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -23,7 +16,6 @@
*/
#define MATRIX_ROW_PINS { B1, B10, B11, B14, B12 }
#define MATRIX_COL_PINS { A6, A7, B0, B13, B15, A8, A15, B3, B4, B5, B8, B9, C13, C14 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dztech/dz60rgb/v1/info.json b/keyboards/dztech/dz60rgb/v1/info.json
new file mode 100644
index 0000000000..914ae82cd9
--- /dev/null
+++ b/keyboards/dztech/dz60rgb/v1/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x1120",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/dztech/dz60rgb/v2/config.h b/keyboards/dztech/dz60rgb/v2/config.h
index 9426a7be99..3c6d07121b 100644
--- a/keyboards/dztech/dz60rgb/v2/config.h
+++ b/keyboards/dztech/dz60rgb/v2/config.h
@@ -1,12 +1,5 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0x1121
-#define DEVICE_VER 0x0002
-#define MANUFACTURER DZTECH
-#define PRODUCT DZ60RGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -23,7 +16,6 @@
*/
#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
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dztech/dz60rgb/v2/info.json b/keyboards/dztech/dz60rgb/v2/info.json
new file mode 100644
index 0000000000..172ca21102
--- /dev/null
+++ b/keyboards/dztech/dz60rgb/v2/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x1121",
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/dztech/dz60rgb/v2_1/config.h b/keyboards/dztech/dz60rgb/v2_1/config.h
index 7e5dfd6703..2079390a3b 100644
--- a/keyboards/dztech/dz60rgb/v2_1/config.h
+++ b/keyboards/dztech/dz60rgb/v2_1/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0x1121
-#define DEVICE_VER 0x0003
-#define MANUFACTURER DZTECH
-#define PRODUCT DZ60RGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -39,7 +32,6 @@
*/
#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
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dztech/dz60rgb/v2_1/info.json b/keyboards/dztech/dz60rgb/v2_1/info.json
new file mode 100644
index 0000000000..7b2073bd4a
--- /dev/null
+++ b/keyboards/dztech/dz60rgb/v2_1/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x1121",
+ "device_version": "2.1.0"
+ }
+}
diff --git a/keyboards/dztech/dz60rgb_ansi/info.json b/keyboards/dztech/dz60rgb_ansi/info.json
index 8431f17708..31c04c9599 100644
--- a/keyboards/dztech/dz60rgb_ansi/info.json
+++ b/keyboards/dztech/dz60rgb_ansi/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "dz60rgb_ansi",
+ "keyboard_name": "DZ60RGB_ANSI",
+ "manufacturer": "DZTECH",
"url": "",
"maintainer": "dztech",
+ "usb": {
+ "vid": "0x445A"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/dztech/dz60rgb_ansi/keymaps/badger/keymap.c b/keyboards/dztech/dz60rgb_ansi/keymaps/badger/keymap.c
index 1d2144d7f4..e4387eacfd 100644
--- a/keyboards/dztech/dz60rgb_ansi/keymaps/badger/keymap.c
+++ b/keyboards/dztech/dz60rgb_ansi/keymaps/badger/keymap.c
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MOVE_LINUX] = LAYOUT_60_ansi(\
KC_GRV, VD_1, VD_2, VD_3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, \
- KC_BACK, WM_VD1, WM_UH, WM_VD2, RESET, KC_MSTP, KC_MPLY, KC_PGUP, KC_HOME, KC_END, KC_PGDN, _______, _______, KC_NEXT, \
+ KC_BACK, WM_VD1, WM_UH, WM_VD2, QK_BOOT, KC_MSTP, KC_MPLY, KC_PGUP, KC_HOME, KC_END, KC_PGDN, _______, _______, KC_NEXT, \
_______, WM_LH, WM_MAX, WM_RH, WD_FRWD, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, CS_RIGHT, CS_DOWN, _______, \
_______, WM_VD3, WM_BH, OS_COPY, OS_PAST, WD_BACK, KC_MNXT, KC_MUTE, KC_WBAK, KC_WFWD, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______),
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_CONFIG] = 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, \
- _______, NK_ON, NK_OFF, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \
+ _______, NK_ON, NK_OFF, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, \
_______, GE_SWAP, GE_NORM, DEBUG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_SPI, RGB_M_B, _______, _______, RGB_TOG, _______, \
_______, LAG_SWP, LAG_NRM, _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_SPD, RGB_M_K, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______)
diff --git a/keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/keymap.c b/keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/keymap.c
index 63282e8b6a..2d1d971f78 100644
--- a/keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/keymap.c
+++ b/keyboards/dztech/dz60rgb_ansi/keymaps/bingocaller/keymap.c
@@ -106,12 +106,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* F1-12
* Del on backspace
* Lots of RGB controls
- * RESET firmware on backslash
+ * QK_BOOT firmware on backslash
* Screen brightness: Z (decrease), X (increase)
*/
[_FN] = 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,
- _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, RGB_M_P, RGB_M_B, RGB_M_R, _______, _______, _______, RESET,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, RGB_M_P, RGB_M_B, RGB_M_R, _______, _______, _______, QK_BOOT,
_______, _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, RGB_M_SW, RGB_M_SN, RGB_M_K, _______, _______, _______,
_______, KC_BRID, KC_BRIU, _______, _______, _______, _______, RGB_M_X, RGB_M_G, RGB_M_T, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/dztech/dz60rgb_ansi/keymaps/kuru/keymap.c b/keyboards/dztech/dz60rgb_ansi/keymaps/kuru/keymap.c
new file mode 100644
index 0000000000..20eaed8247
--- /dev/null
+++ b/keyboards/dztech/dz60rgb_ansi/keymaps/kuru/keymap.c
@@ -0,0 +1,100 @@
+/* Copyright 2022 Murali Suresh
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, LT(2,KC_BSLS),
+ 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_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_60_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_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______,
+ KC_MPRV, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, NK_TOGG, _______, _______, KC_END, KC_PGDN, KC_MNXT,
+ _______, _______, _______, TO(3) , _______, _______, _______, _______
+ ),
+ [2] = 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,
+ _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_60_ansi(
+ 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, LT(4,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,
+ 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,
+ MO(4) , KC_LGUI, KC_RALT, KC_SPC, KC_RALT, KC_RGUI, MO(2), KC_RCTL
+ ),
+ [4] = LAYOUT_60_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_END, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
+ _______, KC_HOME, _______, _______, KC_PGDN, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_PGUP, NK_TOGG, _______, _______, _______, _______, _______,
+ _______, _______, _______, TO(0) , _______, _______, _______, _______
+ ),
+};
+
+void highlight_layer3(void){
+ // F9-F12
+ rgb_matrix_set_color(4, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(3, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(2, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(1, 0xFF, 0xFF, 0xFF);
+ // F1-F4
+ rgb_matrix_set_color(9, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(10, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(11, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(12, 0xFF, 0xFF, 0xFF);
+ // Reset
+ rgb_matrix_set_color(14, 0x99, 0x99, 0xFF);
+ // Pause + Slck + PrScr
+ rgb_matrix_set_color(15, 0xFF, 0x99, 0x00);
+ rgb_matrix_set_color(16, 0xFF, 0x99, 0x00);
+ rgb_matrix_set_color(17, 0xFF, 0x99, 0x00);
+ // Pgup, Home
+ rgb_matrix_set_color(39, 0x00, 0x99, 0x00);
+ rgb_matrix_set_color(24, 0x00, 0x99, 0x00);
+ // hjkl
+ rgb_matrix_set_color(31, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(32, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(33, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(34, 0x00, 0x00, 0xFF);
+ // PgDwn, End
+ rgb_matrix_set_color(36, 0x00, 0x99, 0x00);
+ rgb_matrix_set_color(46, 0x00, 0x99, 0x00);
+}
+
+void rgb_matrix_indicators_user(void) {
+ uint8_t this_led = host_keyboard_leds();
+ if (!g_suspend_state) {
+ switch (get_highest_layer(layer_state)) {
+ case 3:
+ highlight_layer3(); break;
+ default:
+ break;
+ }
+ }
+ if ( this_led & (1<<USB_LED_CAPS_LOCK)) {
+ rgb_matrix_set_color(40, 0xFF, 0xFF, 0xFF);
+ }
+}
diff --git a/keyboards/dztech/dz60rgb_ansi/keymaps/muralisc/keymap.c b/keyboards/dztech/dz60rgb_ansi/keymaps/muralisc/keymap.c
new file mode 100644
index 0000000000..aae1173988
--- /dev/null
+++ b/keyboards/dztech/dz60rgb_ansi/keymaps/muralisc/keymap.c
@@ -0,0 +1,168 @@
+/* Copyright 2022 Murali Suresh
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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] = {
+ /* Qwerty
+ * ,------------------------------------------------------------------------------------------.
+ * | ` ~ | 1! | 2@ | 3# | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | - | = | Bkspc |
+ * |------------------------------------------------------------------------------------------+
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
+ * |------------------------------------------------------------------------------------------+
+ * | Ctl_T(C) | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
+ * |------------------------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | / | RShift |
+ * |------------------------------------------------------------------------------------------+
+ * | MO1 | Cmd | Alt | Space | RAlt | Cmd | MO2 | RCTL |
+ * `------------------------------------------------------------------------------------------'
+ */
+ [0] = LAYOUT_60_ansi(
+ 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, LT(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, KC_LBRC, KC_RBRC, KC_BSLS,
+ 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,
+ MO(1) , KC_LGUI, KC_RALT, KC_SPC, KC_RALT, KC_RGUI, MO(2), KC_RCTL
+ ),
+ /* Layer1
+ * ,------------------------------------------------------------------------------------------.
+ * | ` ~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Del |
+ * |------------------------------------------------------------------------------------------+
+ * | | | | | | | Y | | I | | PScr| Slck| Paus| Reset |
+ * |------------------------------------------------------------------------------------------+
+ * | | | | | | | Left| Down| Up | Rght| Home| Pgup| |
+ * |------------------------------------------------------------------------------------------+
+ * | Shift | V- | V+ | C | | | | | | End | PgDn| |
+ * |------------------------------------------------------------------------------------------+
+ * | | | | TO3 | | | | |
+ * `------------------------------------------------------------------------------------------'
+ */
+ [1] = LAYOUT_60_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_END, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
+ _______, KC_HOME, _______, _______, KC_PGDN, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_PGUP, NK_TOGG, _______, _______, _______, _______, _______,
+ _______, _______, _______, TO(3) , _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_60_ansi(
+ _______, KC_1, 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, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_60_ansi(
+ _______, KC_1, KC_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_SLCK, KC_PAUS, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, TO(0),
+ _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______,
+ _______, _______, KC_DEL, KC_END, KC_PGDN, _______, _______, KC_P1, KC_P2, KC_P3, _______, KC_UP,
+ _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+};
+
+void rgb_matrix_layer_helper (uint8_t red, uint8_t green, uint8_t blue) {
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) {
+ rgb_matrix_set_color( i, red, green, blue );
+ }
+ }
+}
+
+void highlight_layer1(void){
+ // F9-F12
+ rgb_matrix_set_color(4, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(3, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(2, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(1, 0xFF, 0xFF, 0xFF);
+ // F1-F4
+ rgb_matrix_set_color(9, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(10, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(11, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(12, 0xFF, 0xFF, 0xFF);
+ // Reset
+ rgb_matrix_set_color(14, 0x99, 0x99, 0xFF);
+ // Pause + Slck + PrScr
+ rgb_matrix_set_color(15, 0xFF, 0x99, 0x00);
+ rgb_matrix_set_color(16, 0xFF, 0x99, 0x00);
+ rgb_matrix_set_color(17, 0xFF, 0x99, 0x00);
+ // Pgup, Home
+ rgb_matrix_set_color(39, 0x00, 0x99, 0x00);
+ rgb_matrix_set_color(24, 0x00, 0x99, 0x00);
+ // hjkl
+ rgb_matrix_set_color(31, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(32, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(33, 0x00, 0x00, 0xFF);
+ rgb_matrix_set_color(34, 0x00, 0x00, 0xFF);
+ // PgDwn, End
+ rgb_matrix_set_color(36, 0x00, 0x99, 0x00);
+ rgb_matrix_set_color(46, 0x00, 0x99, 0x00);
+}
+
+void highlight_layer2(void){
+ // Mode
+ rgb_matrix_set_color(18, 0xFF, 0xFF, 0xFF);
+ // Value
+ rgb_matrix_set_color(19, 0x4C, 0x00, 0x99);
+ rgb_matrix_set_color(20, 0x4C, 0x00, 0x99);
+ // Sat
+ rgb_matrix_set_color(21, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(22, 0xFF, 0xFF, 0xFF);
+ // Hue
+ rgb_matrix_set_color(23, 0x99, 0x99, 0x00);
+ rgb_matrix_set_color(24, 0x99, 0x99, 0x00);
+ // Toggle
+ rgb_matrix_set_color(26, 0xFF, 0xFF, 0xFF);
+ // Speed
+ rgb_matrix_set_color(31, 0xFF, 0x99, 0x00);
+ rgb_matrix_set_color(32, 0xFF, 0x99, 0x00);
+}
+
+void highlight_layer3(void) {
+ int ins_key_block[9] = {25, 24, 23, 38, 37, 36, 50, 49, 48};
+ for(int i = 0; i < 9; i++) {
+ rgb_matrix_set_color(ins_key_block[i], 0x00, 0x99, 0x00);
+ }
+ int num_key_block[9] = {20, 19, 18, 33, 32, 31, 45, 44, 43};
+ for(int i = 0; i < 9; i++) {
+ rgb_matrix_set_color(num_key_block[i], 0x00, 0x09, 0x09);
+ }
+ int easy_arrow_keys[4] = {41, 55, 54, 53};
+ for(int i = 0; i < 4; i++) {
+ rgb_matrix_set_color(easy_arrow_keys[i], 0x09, 0x00, 0x09);
+ }
+}
+
+void rgb_matrix_indicators_user(void) {
+ uint8_t this_led = host_keyboard_leds();
+ if (!g_suspend_state) {
+ switch (get_highest_layer(layer_state)) {
+ case 1:
+ highlight_layer1(); break;
+ case 2:
+ highlight_layer2(); break;
+ case 3:
+ /* rgb_matrix_layer_helper(0x03, 0x03, 0x00); */
+ highlight_layer3();
+ break;
+ default:
+ break;
+ }
+ }
+ if ( this_led & (1<<USB_LED_CAPS_LOCK)) {
+ rgb_matrix_set_color(40, 0xFF, 0xFF, 0xFF);
+ }
+
+}
diff --git a/keyboards/dztech/dz60rgb_ansi/keymaps/muralisc/readme.md b/keyboards/dztech/dz60rgb_ansi/keymaps/muralisc/readme.md
new file mode 100644
index 0000000000..905a21e9c8
--- /dev/null
+++ b/keyboards/dztech/dz60rgb_ansi/keymaps/muralisc/readme.md
@@ -0,0 +1,26 @@
+### ansi vim
+
+Keymap for dz60rgb terminal users
+
+### Philosophy
+
+Touch typing largely relies on muscle memory and hence
+maintaining a uniform position of keys across devices helps a lot.
+
+The below keymap attempts to maintain a uniform keymap across Linux and Mac.
+
+Avoiding the use of `KC_GESC` as the intention is to use the same layer for mac and linux.
+`KC_GESC` causes `` CMD+` `` to be send which has a default mapping
+
+Layer: 1
+
+Using `A` for `Home`
+Using `E` for `End`
+Using `F` for `PgDN`
+Using `B` for `PgUP`
+
+Layer 3:
+
+Dedicated Num keys block and `Ins, Home, PgUp` block.
+
+Dedicated Layer for arrow keys and Num keys and `Ins`, `Home` and `PgUp`.
diff --git a/keyboards/dztech/dz60rgb_ansi/v1/config.h b/keyboards/dztech/dz60rgb_ansi/v1/config.h
index ccfe91b66b..9b31f27f2f 100644
--- a/keyboards/dztech/dz60rgb_ansi/v1/config.h
+++ b/keyboards/dztech/dz60rgb_ansi/v1/config.h
@@ -1,12 +1,5 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0x1220
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DZTECH
-#define PRODUCT DZ60RGB_ANSI
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -23,7 +16,6 @@
*/
#define MATRIX_ROW_PINS { B1, B10, B11, B14, B12 }
#define MATRIX_COL_PINS { A6, A7, B0, B13, B15, A8, A15, B3, B4, B5, B8, B9, C13, C14 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dztech/dz60rgb_ansi/v1/info.json b/keyboards/dztech/dz60rgb_ansi/v1/info.json
new file mode 100644
index 0000000000..6fcbd0806f
--- /dev/null
+++ b/keyboards/dztech/dz60rgb_ansi/v1/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x1220",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/dztech/dz60rgb_ansi/v2/config.h b/keyboards/dztech/dz60rgb_ansi/v2/config.h
index 865ac2ab21..92fcd17c88 100644
--- a/keyboards/dztech/dz60rgb_ansi/v2/config.h
+++ b/keyboards/dztech/dz60rgb_ansi/v2/config.h
@@ -1,12 +1,5 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0x1221
-#define DEVICE_VER 0x0002
-#define MANUFACTURER DZTECH
-#define PRODUCT DZ60RGB_ANSI
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -23,7 +16,6 @@
*/
#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
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dztech/dz60rgb_ansi/v2/info.json b/keyboards/dztech/dz60rgb_ansi/v2/info.json
new file mode 100644
index 0000000000..6d2ac4fbab
--- /dev/null
+++ b/keyboards/dztech/dz60rgb_ansi/v2/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x1221",
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/dztech/dz60rgb_ansi/v2_1/config.h b/keyboards/dztech/dz60rgb_ansi/v2_1/config.h
index 64e2a40bda..7ec226c30b 100644
--- a/keyboards/dztech/dz60rgb_ansi/v2_1/config.h
+++ b/keyboards/dztech/dz60rgb_ansi/v2_1/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0x1221
-#define DEVICE_VER 0x0002
-#define MANUFACTURER DZTECH
-#define PRODUCT DZ60RGB_ANSI
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -39,7 +32,6 @@
*/
#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
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dztech/dz60rgb_ansi/v2_1/info.json b/keyboards/dztech/dz60rgb_ansi/v2_1/info.json
new file mode 100644
index 0000000000..f2afc157ed
--- /dev/null
+++ b/keyboards/dztech/dz60rgb_ansi/v2_1/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x1221",
+ "device_version": "2.1.0"
+ }
+}
diff --git a/keyboards/dztech/dz60rgb_wkl/info.json b/keyboards/dztech/dz60rgb_wkl/info.json
index 304c571f22..e5d0b7b962 100644
--- a/keyboards/dztech/dz60rgb_wkl/info.json
+++ b/keyboards/dztech/dz60rgb_wkl/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "dz60rgb_wkl",
+ "keyboard_name": "DZ60RGB_WKL",
+ "manufacturer": "DZTECH",
"url": "",
"maintainer": "dztech",
+ "usb": {
+ "vid": "0x445A"
+ },
"layouts": {
"LAYOUT_60_tsangan_hhkb": {
"layout": [
diff --git a/keyboards/dztech/dz60rgb_wkl/keymaps/hhkb/keymap.c b/keyboards/dztech/dz60rgb_wkl/keymaps/hhkb/keymap.c
index c5cdfa2326..8fe1c06792 100644
--- a/keyboards/dztech/dz60rgb_wkl/keymaps/hhkb/keymap.c
+++ b/keyboards/dztech/dz60rgb_wkl/keymaps/hhkb/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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_DEL, _______,
- _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET,
+ _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/dztech/dz60rgb_wkl/v1/config.h b/keyboards/dztech/dz60rgb_wkl/v1/config.h
index 9af78167ad..d7d8c3a0a1 100644
--- a/keyboards/dztech/dz60rgb_wkl/v1/config.h
+++ b/keyboards/dztech/dz60rgb_wkl/v1/config.h
@@ -1,12 +1,5 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0x1320
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DZTECH
-#define PRODUCT DZ60RGB_WKL
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -23,7 +16,6 @@
*/
#define MATRIX_ROW_PINS { B1, B10, B11, B14, B12 }
#define MATRIX_COL_PINS { A6, A7, B0, B13, B15, A8, A15, B3, B4, B5, B8, B9, C13, C14 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dztech/dz60rgb_wkl/v1/info.json b/keyboards/dztech/dz60rgb_wkl/v1/info.json
new file mode 100644
index 0000000000..767be04f31
--- /dev/null
+++ b/keyboards/dztech/dz60rgb_wkl/v1/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x1320",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/dztech/dz60rgb_wkl/v2/config.h b/keyboards/dztech/dz60rgb_wkl/v2/config.h
index 140d74fee0..a4416e806c 100644
--- a/keyboards/dztech/dz60rgb_wkl/v2/config.h
+++ b/keyboards/dztech/dz60rgb_wkl/v2/config.h
@@ -1,12 +1,5 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0x1321
-#define DEVICE_VER 0x0002
-#define MANUFACTURER DZTECH
-#define PRODUCT DZ60RGB_WKL
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -23,7 +16,6 @@
*/
#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
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dztech/dz60rgb_wkl/v2/info.json b/keyboards/dztech/dz60rgb_wkl/v2/info.json
new file mode 100644
index 0000000000..ee69be3b5a
--- /dev/null
+++ b/keyboards/dztech/dz60rgb_wkl/v2/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x1321",
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/dztech/dz60rgb_wkl/v2_1/config.h b/keyboards/dztech/dz60rgb_wkl/v2_1/config.h
index 3ab221391e..3803b4834f 100644
--- a/keyboards/dztech/dz60rgb_wkl/v2_1/config.h
+++ b/keyboards/dztech/dz60rgb_wkl/v2_1/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0x1321
-#define DEVICE_VER 0x0003
-#define MANUFACTURER DZTECH
-#define PRODUCT DZ60RGB_WKL
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -39,7 +32,6 @@
*/
#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
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dztech/dz60rgb_wkl/v2_1/info.json b/keyboards/dztech/dz60rgb_wkl/v2_1/info.json
new file mode 100644
index 0000000000..3b2b23e989
--- /dev/null
+++ b/keyboards/dztech/dz60rgb_wkl/v2_1/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x1321",
+ "device_version": "2.1.0"
+ }
+}
diff --git a/keyboards/dztech/dz64rgb/config.h b/keyboards/dztech/dz64rgb/config.h
index b50c15810e..11f623c1bd 100644
--- a/keyboards/dztech/dz64rgb/config.h
+++ b/keyboards/dztech/dz64rgb/config.h
@@ -16,17 +16,10 @@
#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
diff --git a/keyboards/dztech/dz64rgb/info.json b/keyboards/dztech/dz64rgb/info.json
index 8e602bd7c0..c119e5cc4d 100644
--- a/keyboards/dztech/dz64rgb/info.json
+++ b/keyboards/dztech/dz64rgb/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "DZ64RGB",
+ "manufacturer": "DZTECH",
"url": "",
"maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x445A",
+ "pid": "0x1013",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_64_ansi": {
"layout": [
diff --git a/keyboards/dztech/dz64rgb/readme.md b/keyboards/dztech/dz64rgb/readme.md
index 132a1710d7..cf1ff7b110 100644
--- a/keyboards/dztech/dz64rgb/readme.md
+++ b/keyboards/dztech/dz64rgb/readme.md
@@ -12,7 +12,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/dztech/dz65rgb/info.json b/keyboards/dztech/dz65rgb/info.json
index 4a97f4fd82..32171cd74a 100644
--- a/keyboards/dztech/dz65rgb/info.json
+++ b/keyboards/dztech/dz65rgb/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "dz65rgb",
+ "keyboard_name": "DZ65RGB",
+ "manufacturer": "DZTECH",
"url": "",
"maintainer": "dztech",
+ "usb": {
+ "vid": "0x445A"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/dztech/dz65rgb/keymaps/adi/keymap.c b/keyboards/dztech/dz65rgb/keymaps/adi/keymap.c
index f3d3cbf9a4..2dd25c170c 100644
--- a/keyboards/dztech/dz65rgb/keymaps/adi/keymap.c
+++ b/keyboards/dztech/dz65rgb/keymaps/adi/keymap.c
@@ -10,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_65_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_HOME,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_PGUP,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_PGUP,
LCTL_T(KC_CAPS), RGB_SPD, RGB_SPI, 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_PSCR, KC_SLCK, KC_PAUS, KC_VOLU, KC_MUTE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
diff --git a/keyboards/dztech/dz65rgb/keymaps/catrielmuller/keymap.c b/keyboards/dztech/dz65rgb/keymaps/catrielmuller/keymap.c
index 8bd6069107..b85b582b39 100644
--- a/keyboards/dztech/dz65rgb/keymaps/catrielmuller/keymap.c
+++ b/keyboards/dztech/dz65rgb/keymaps/catrielmuller/keymap.c
@@ -223,7 +223,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_CONFIG] = LAYOUT_65_ansi(
TO(_MAIN), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ACL2,
- KC_NO, KC_PWR, KC_SLEP, KC_WAKE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET, DEBUG, EEP_RST, KC_NO, KC_ACL1,
+ KC_NO, KC_PWR, KC_SLEP, KC_WAKE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, DEBUG, EEP_RST, KC_NO, KC_ACL1,
KC_NO, UC_RMOD, UC_MOD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ACL0,
KC_NO, MAGIC_TOGGLE_NKRO, MAGIC_UNHOST_NKRO, MAGIC_HOST_NKRO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(_INDEX), KC_NO, KC_NO, KC_NO, KC_NO
@@ -238,5 +238,5 @@ void rgb_matrix_indicators_user(void) {
}
// Show Selected Layer
- rgb_matrix_set_color(layers_leds_map[biton32(layer_state)], MAIN_COLOR[0], MAIN_COLOR[1], MAIN_COLOR[2]);
-} \ No newline at end of file
+ rgb_matrix_set_color(layers_leds_map[get_highest_layer(layer_state)], MAIN_COLOR[0], MAIN_COLOR[1], MAIN_COLOR[2]);
+}
diff --git a/keyboards/dztech/dz65rgb/keymaps/chocol8/keymap.c b/keyboards/dztech/dz65rgb/keymaps/chocol8/keymap.c
index 6afa734cd6..b0ab0165f4 100644
--- a/keyboards/dztech/dz65rgb/keymaps/chocol8/keymap.c
+++ b/keyboards/dztech/dz65rgb/keymaps/chocol8/keymap.c
@@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FNM] = LAYOUT_65_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, KC_MUTE, KC_VOLU, \
- _______, RGB_TOG, RGB_MOD, RGB_HUI ,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET, KC_VOLD, \
+ _______, RGB_TOG, RGB_MOD, RGB_HUI ,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, QK_BOOT, KC_VOLD, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, AG_TOGG, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, _______, \
_______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R \
diff --git a/keyboards/dztech/dz65rgb/keymaps/drootz/keymap.c b/keyboards/dztech/dz65rgb/keymaps/drootz/keymap.c
index c313f467e3..2ebbddcef7 100644
--- a/keyboards/dztech/dz65rgb/keymaps/drootz/keymap.c
+++ b/keyboards/dztech/dz65rgb/keymaps/drootz/keymap.c
@@ -1,20 +1,20 @@
#include QMK_KEYBOARD_H
/**************** SOME GLOBALS *********************/
-
+
bool onMac = false;
bool isLeader = false;
bool isBlinking = false;
bool isRecording = false;
bool isPlaying = false;
-const float led_dim_ratio = 0.50;
-static uint16_t blink_cycle_timer,
- blink_fade_in_timer,
- blink_fade_out_timer,
+const float led_dim_ratio = 0.50;
+static uint16_t blink_cycle_timer,
+ blink_fade_in_timer,
+ blink_fade_out_timer,
macro_one_play_timer,
macro_two_play_timer,
macro_play_blink_timer = 2000;
-static uint8_t fade_in_step_counter,
+static uint8_t fade_in_step_counter,
fade_out_step_counter,
blink_hsv_value;
@@ -26,13 +26,13 @@ Function to set color with hsv arguments
- "val_ratio" is used to adjust brightness ratio
*/
void rgb_matrix_set_color_hsv(uint8_t led, uint16_t hue, uint16_t sat, uint16_t val, float val_ratio) {
- const uint8_t h = hue <= 255 ? hue : rgb_matrix_config.hsv.h;
+ const uint8_t h = hue <= 255 ? hue : rgb_matrix_config.hsv.h;
const uint8_t s = sat <= 255 ? sat : rgb_matrix_config.hsv.s;
const uint8_t v = val <= 255 ? val * val_ratio : rgb_matrix_config.hsv.v * val_ratio;
HSV hsv_in = {h, s, v};
RGB rgb_out = hsv_to_rgb(hsv_in);
rgb_matrix_set_color(led, rgb_out.r, rgb_out.g, rgb_out.b);
-}
+}
void reset_blink_cycle(void) {
blink_cycle_timer = timer_read();
@@ -110,31 +110,31 @@ const layers_leds_map[] = {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = 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_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_LEAD, KC_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_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_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_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, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_MAC] = 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_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_LALT, KC_LGUI, KC_TRNS, KC_TRNS, MO(_FN), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_FN] = LAYOUT_65_ansi(
- DYN_REC_STOP, KC_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_TRNS, KC_MUTE, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_SAD, RGB_SAI, DYN_MACRO_PLAY2, DYN_REC_START2,
- KC_TRNS, KC_BRID, KC_VOLD, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_HUD, RGB_HUI, DYN_MACRO_PLAY1, DYN_REC_START1,
- KC_TRNS, TO(_MAIN), TO(_MAC), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_SPD, RGB_SPI, KC_TRNS, RGB_VAI, KC_NO,
+ DYN_REC_STOP, KC_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_TRNS, KC_MUTE, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_SAD, RGB_SAI, DYN_MACRO_PLAY2, DYN_REC_START2,
+ KC_TRNS, KC_BRID, KC_VOLD, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_HUD, RGB_HUI, DYN_MACRO_PLAY1, DYN_REC_START1,
+ KC_TRNS, TO(_MAIN), TO(_MAC), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_SPD, RGB_SPI, KC_TRNS, RGB_VAI, KC_NO,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD, RGB_VAD, RGB_MOD
),
-};
+};
//**************** MATRIX SCANS *********************//
-void rgb_matrix_indicators_user(void) {
+void rgb_matrix_indicators_user(void) {
#ifdef RGB_MATRIX_ENABLE
@@ -144,7 +144,7 @@ void rgb_matrix_indicators_user(void) {
/* CapsLock LED indicator */
if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
rgb_matrix_set_color_hsv(30, 999, 0, led_constant_val, 0.75); // WHITE
- }
+ }
/* Current layer LED indicator */
rgb_matrix_set_color_hsv(layers_leds_map[get_highest_layer(layer_state)], 999, 0, led_constant_val, led_dim_ratio); // WHITE
@@ -155,7 +155,7 @@ void rgb_matrix_indicators_user(void) {
rgb_matrix_set_color_hsv(30, 999, 999, 999, 1); // CONFIG
} else {
rgb_matrix_set_color_hsv(14, 999, 999, 999, led_dim_ratio); // CONFIG
- }
+ }
/* Blinking LED indicator when recording Dynamic Macro */
if (isRecording && isBlinking) {
@@ -174,7 +174,7 @@ void rgb_matrix_indicators_user(void) {
}
}
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _FN:
/* Dynamic Macro LED indicator */
if (isRecording) {
@@ -188,12 +188,12 @@ void rgb_matrix_indicators_user(void) {
/* Layer LED indicators */
rgb_matrix_set_color_hsv(45, 999, 0, led_constant_val, led_dim_ratio); /* WHITE Layer _MAIN */
rgb_matrix_set_color_hsv(46, 999, 0, led_constant_val, led_dim_ratio); /* WHITE Layer _MAC */
- break;
+ break;
}
#endif /* RGB_MATRIX */
}
-
+
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
bool pressed = record->event.pressed;
if (pressed) {
@@ -202,12 +202,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
onMac = true;
break;
case TO(_MAIN):
- onMac = false;
+ onMac = false;
break;
}
}
return true;
-}
+}
//**************** LEADER *********************//
@@ -244,7 +244,7 @@ const uint8_t french_accent_index[3] = {
[_ACUTE] = 2
};
-/*
+/*
This represent unicode decimal values
Each index will be mapped to numpad keycode to out put the correct sequence
All codes in this array should be of size 3
@@ -272,8 +272,8 @@ const uint8_t french_decimal_unicodes[5][3][2] = { /*[Letter][Accent][Case]*/
}
},{
{
- 140, // î
- 206 // ÃŽ
+ 140, // î
+ 206 // ÃŽ
}
},{
{
@@ -306,7 +306,7 @@ This is designed and work on an English language keyboard setting on both Window
=> accept french_letter and french_accent enum's as argument
*/
void send_french_accent(uint8_t letter, uint8_t accent) {
-
+
bool isCaps;
uint8_t decimal_unicode_in;
uint8_t decimal_unicode_size = 3;
@@ -330,7 +330,7 @@ void send_french_accent(uint8_t letter, uint8_t accent) {
};
/*
- Function to tap the correct keycodes in sequence for the
+ Function to tap the correct keycodes in sequence for the
"Windows Alt Code" requested, aka Decimal Unicodes
*/
void tap_win_alt_code(void) {
@@ -341,7 +341,7 @@ void send_french_accent(uint8_t letter, uint8_t accent) {
tap_code(numpad_key_map[decimal_unicode_out[i]]);
}
}
-
+
isCaps = IS_HOST_LED_ON(USB_LED_CAPS_LOCK) ? true : false;
if (onMac) {
@@ -372,7 +372,7 @@ void send_french_accent(uint8_t letter, uint8_t accent) {
/*Couple functions used to output the same macro on two different sequences*/
-/* (|) */
+/* (|) */
void ldrkey_send_paranthesis_wrap_ini(void) {
SEND_STRING("()" SS_TAP(X_LEFT));
}
@@ -382,7 +382,7 @@ void ldrkey_send_paranthesis_wrap_word(void) {
onMac ? SEND_STRING(SS_LALT(SS_TAP(X_LEFT)) "(" SS_LALT(SS_TAP(X_RIGHT)) ")") : SEND_STRING(SS_LCTL(SS_TAP(X_LEFT)) "(" SS_LCTL(SS_TAP(X_RIGHT)) ")");
}
-/* (selection) */
+/* (selection) */
void ldrkey_send_paranthesis_wrap_selection(void) {
onMac ? SEND_STRING(SS_LGUI(SS_TAP(X_X)) "()" SS_TAP(X_LEFT) SS_LGUI(SS_TAP(X_V)) SS_TAP(X_RIGHT)) : SEND_STRING(SS_LCTL(SS_TAP(X_X)) "()" SS_TAP(X_LEFT) SS_LCTL(SS_TAP(X_V)) SS_TAP(X_RIGHT));
}
@@ -419,9 +419,9 @@ void ldrkey_send_curlybrace_wrap_selection(void) {
LEADER_EXTERNS();
-void matrix_scan_user(void)
+void matrix_scan_user(void)
{
- LEADER_DICTIONARY()
+ LEADER_DICTIONARY()
{
leading = false;
leader_end();
@@ -476,49 +476,49 @@ void matrix_scan_user(void)
tap_code(KC_CAPS);
}
/* ± => LdrKey > = > - */
- SEQ_TWO_KEYS(KC_EQL, KC_MINS) {
- onMac ? SEND_STRING(SS_LALT(SS_LSFT(SS_TAP(X_EQL)))) : SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P2) SS_TAP(X_P4) SS_TAP(X_P1) SS_UP(X_LALT));
+ SEQ_TWO_KEYS(KC_EQL, KC_MINS) {
+ onMac ? SEND_STRING(SS_LALT(SS_LSFT(SS_TAP(X_EQL)))) : SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P2) SS_TAP(X_P4) SS_TAP(X_P1) SS_UP(X_LALT));
}
/* ≤ => LdrKey > - > = */
- SEQ_TWO_KEYS(KC_MINS, KC_EQL) {
- onMac ? SEND_STRING(SS_LALT(SS_TAP(X_COMM))) : SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P2) SS_TAP(X_P4) SS_TAP(X_P3) SS_UP(X_LALT));
+ SEQ_TWO_KEYS(KC_MINS, KC_EQL) {
+ onMac ? SEND_STRING(SS_LALT(SS_TAP(X_COMM))) : SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P2) SS_TAP(X_P4) SS_TAP(X_P3) SS_UP(X_LALT));
}
/* ≥ => LdrKey > = > = */
- SEQ_TWO_KEYS(KC_EQL, KC_EQL) {
- onMac ? SEND_STRING(SS_LALT(SS_TAP(X_DOT))) : SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P2) SS_TAP(X_P4) SS_TAP(X_P2) SS_UP(X_LALT));
+ SEQ_TWO_KEYS(KC_EQL, KC_EQL) {
+ onMac ? SEND_STRING(SS_LALT(SS_TAP(X_DOT))) : SEND_STRING(SS_DOWN(X_LALT) SS_TAP(X_P2) SS_TAP(X_P4) SS_TAP(X_P2) SS_UP(X_LALT));
}
/* <= => LdrKey > , > , */
- SEQ_TWO_KEYS(KC_COMM, KC_COMM) {
- SEND_STRING(SS_LSFT(SS_TAP(X_COMM)) SS_TAP(X_SPC) SS_TAP(X_EQL) SS_TAP(X_LEFT) SS_TAP(X_BSPC) SS_TAP(X_RIGHT));
+ SEQ_TWO_KEYS(KC_COMM, KC_COMM) {
+ SEND_STRING(SS_LSFT(SS_TAP(X_COMM)) SS_TAP(X_SPC) SS_TAP(X_EQL) SS_TAP(X_LEFT) SS_TAP(X_BSPC) SS_TAP(X_RIGHT));
}
/* => => LdrKey > . > . */
- SEQ_TWO_KEYS(KC_DOT, KC_DOT) {
- SEND_STRING("=>");
+ SEQ_TWO_KEYS(KC_DOT, KC_DOT) {
+ SEND_STRING("=>");
}
/* ", " => LdrKey > " " */
- SEQ_ONE_KEY(KC_SPC) {
- SEND_STRING(", ");
+ SEQ_ONE_KEY(KC_SPC) {
+ SEND_STRING(", ");
}
/* ". " => LdrKey > " " > " " */
- SEQ_TWO_KEYS(KC_SPC, KC_SPC) {
- SEND_STRING(". ");
+ SEQ_TWO_KEYS(KC_SPC, KC_SPC) {
+ SEND_STRING(". ");
}
/* Backward delete current word (on cursor) */
- SEQ_TWO_KEYS(KC_BSPC, KC_BSPC) {
- onMac ? SEND_STRING(SS_LALT(SS_TAP(X_RIGHT)) SS_LALT(SS_LSFT(SS_TAP(X_LEFT))) SS_TAP(X_BSPC)) : SEND_STRING(SS_LCTL(SS_TAP(X_RIGHT)) SS_LCTL(SS_LSFT(SS_TAP(X_LEFT))) SS_TAP(X_BSPC));
+ SEQ_TWO_KEYS(KC_BSPC, KC_BSPC) {
+ onMac ? SEND_STRING(SS_LALT(SS_TAP(X_RIGHT)) SS_LALT(SS_LSFT(SS_TAP(X_LEFT))) SS_TAP(X_BSPC)) : SEND_STRING(SS_LCTL(SS_TAP(X_RIGHT)) SS_LCTL(SS_LSFT(SS_TAP(X_LEFT))) SS_TAP(X_BSPC));
}
/* Previous word delete */
- SEQ_ONE_KEY(KC_BSPC) {
- onMac ? SEND_STRING(SS_LALT(SS_LSFT(SS_TAP(X_LEFT))) SS_TAP(X_BSPC)) : SEND_STRING(SS_LCTL(SS_LSFT(SS_TAP(X_LEFT))) SS_TAP(X_BSPC));
+ SEQ_ONE_KEY(KC_BSPC) {
+ onMac ? SEND_STRING(SS_LALT(SS_LSFT(SS_TAP(X_LEFT))) SS_TAP(X_BSPC)) : SEND_STRING(SS_LCTL(SS_LSFT(SS_TAP(X_LEFT))) SS_TAP(X_BSPC));
}
/* Forward delete current word (on cursor) */
- SEQ_TWO_KEYS(KC_DEL, KC_DEL) {
+ SEQ_TWO_KEYS(KC_DEL, KC_DEL) {
- onMac ? SEND_STRING(SS_LALT(SS_TAP(X_LEFT)) SS_LALT(SS_LSFT(SS_TAP(X_RIGHT))) SS_TAP(X_DEL)) : SEND_STRING(SS_LCTL(SS_TAP(X_LEFT)) SS_LCTL(SS_LSFT(SS_TAP(X_RIGHT))) SS_TAP(X_DEL));
+ onMac ? SEND_STRING(SS_LALT(SS_TAP(X_LEFT)) SS_LALT(SS_LSFT(SS_TAP(X_RIGHT))) SS_TAP(X_DEL)) : SEND_STRING(SS_LCTL(SS_TAP(X_LEFT)) SS_LCTL(SS_LSFT(SS_TAP(X_RIGHT))) SS_TAP(X_DEL));
}
/* Next word delete */
- SEQ_ONE_KEY(KC_DEL) {
- onMac ? SEND_STRING(SS_LALT(SS_LSFT(SS_TAP(X_RIGHT))) SS_TAP(X_DEL)): SEND_STRING(SS_LCTL(SS_LSFT(SS_TAP(X_RIGHT))) SS_TAP(X_DEL));
+ SEQ_ONE_KEY(KC_DEL) {
+ onMac ? SEND_STRING(SS_LALT(SS_LSFT(SS_TAP(X_RIGHT))) SS_TAP(X_DEL)): SEND_STRING(SS_LCTL(SS_LSFT(SS_TAP(X_RIGHT))) SS_TAP(X_DEL));
}
/* ` => LdrKey > Escape */
SEQ_ONE_KEY(KC_GESC) {
@@ -548,7 +548,7 @@ void matrix_scan_user(void)
SEQ_ONE_KEY(KC_Q) {
onMac ? SEND_STRING(SS_LGUI(SS_TAP(X_Q))) : SEND_STRING(SS_LALT(SS_TAP(X_F4)));
}
- /* " => LdrKey > ' */
+ /* " => LdrKey > ' */
SEQ_ONE_KEY(KC_QUOT) {
SEND_STRING("\"");
}
@@ -657,48 +657,48 @@ void matrix_scan_user(void)
ldrkey_send_curlybrace_wrap_selection();
}
/* Select everything on this line before cursor => LdrKey > Left */
- SEQ_ONE_KEY(KC_LEFT) {
+ SEQ_ONE_KEY(KC_LEFT) {
onMac ? SEND_STRING(SS_LSFT(SS_LGUI(SS_TAP(X_LEFT)))) : SEND_STRING(SS_LSFT(SS_TAP(X_HOME)));
}
/* Select everything on this line after cursor => LdrKey > Right */
- SEQ_ONE_KEY(KC_RIGHT) {
+ SEQ_ONE_KEY(KC_RIGHT) {
onMac ? SEND_STRING(SS_LSFT(SS_LGUI(SS_TAP(X_RIGHT)))) : SEND_STRING(SS_LSFT(SS_TAP(X_END)));
}
/* Select everything on this line before cursor and bring on previous line => LdrKey > Left > Left */
- SEQ_TWO_KEYS(KC_LEFT, KC_LEFT) {
- onMac ? SEND_STRING(SS_LSFT(SS_TAP(X_UP) SS_LGUI(SS_TAP(X_RIGHT)))) : SEND_STRING(SS_LSFT(SS_TAP(X_UP) SS_TAP(X_END)));
+ SEQ_TWO_KEYS(KC_LEFT, KC_LEFT) {
+ onMac ? SEND_STRING(SS_LSFT(SS_TAP(X_UP) SS_LGUI(SS_TAP(X_RIGHT)))) : SEND_STRING(SS_LSFT(SS_TAP(X_UP) SS_TAP(X_END)));
}
/* Select everything on this line => LdrKey > Right > Left */
- SEQ_TWO_KEYS(KC_RIGHT, KC_LEFT) {
- onMac ? SEND_STRING(SS_LGUI(SS_TAP(X_RIGHT) SS_LSFT(SS_LGUI(SS_TAP(X_LEFT))))) : SEND_STRING(SS_TAP(X_END) SS_LSFT(SS_TAP(X_HOME)));
+ SEQ_TWO_KEYS(KC_RIGHT, KC_LEFT) {
+ onMac ? SEND_STRING(SS_LGUI(SS_TAP(X_RIGHT) SS_LSFT(SS_LGUI(SS_TAP(X_LEFT))))) : SEND_STRING(SS_TAP(X_END) SS_LSFT(SS_TAP(X_HOME)));
}
/* Select 1x Page Up on the page before the cursor => LdrKey > Up */
- SEQ_ONE_KEY(KC_UP) {
+ SEQ_ONE_KEY(KC_UP) {
SEND_STRING(SS_LSFT(SS_TAP(X_PGUP)));
}
/* Select 1x Page Down on the page after the cursor => LdrKey > Down */
- SEQ_ONE_KEY(KC_DOWN) {
- SEND_STRING(SS_LSFT(SS_TAP(X_PGDN)));
+ SEQ_ONE_KEY(KC_DOWN) {
+ SEND_STRING(SS_LSFT(SS_TAP(X_PGDN)));
}
/* Select everything on the page before the cursor => LdrKey > Up > Up */
- SEQ_TWO_KEYS(KC_UP, KC_UP) {
+ SEQ_TWO_KEYS(KC_UP, KC_UP) {
onMac ? SEND_STRING(SS_LSFT(SS_LGUI(SS_TAP(X_UP)))) : SEND_STRING(SS_LSFT(SS_LCTL(SS_TAP(X_HOME))));
}
/* Select everything on the page after the cursor => LdrKey > Down > Down */
- SEQ_TWO_KEYS(KC_DOWN, KC_DOWN) {
+ SEQ_TWO_KEYS(KC_DOWN, KC_DOWN) {
onMac ? SEND_STRING(SS_LSFT(SS_LGUI(SS_TAP(X_DOWN)))) : SEND_STRING(SS_LSFT(SS_LCTL(SS_TAP(X_END))));
}
/* HELPER => spit out the url of the layout description page on github */
- SEQ_FIVE_KEYS(KC_GESC, KC_GESC, KC_GESC, KC_GESC, KC_GESC) {
+ SEQ_FIVE_KEYS(KC_GESC, KC_GESC, KC_GESC, KC_GESC, KC_GESC) {
SEND_STRING("https://github.com/qmk/qmk_firmware/tree/master/keyboards/dztech/dz65rgb/keymaps/drootz");
}
/* google.ca => LdrKey > G > G */
- SEQ_TWO_KEYS(KC_G, KC_G) {
- SEND_STRING("https://google.ca" SS_TAP(X_ENT));
+ SEQ_TWO_KEYS(KC_G, KC_G) {
+ SEND_STRING("https://google.ca" SS_TAP(X_ENT));
}
/* @gmail => LdrKey > M > L > T */
- SEQ_THREE_KEYS(KC_M, KC_L, KC_T) {
- SEND_STRING("mailto." SS_TAP(X_D) SS_TAP(X_A) SS_TAP(X_N) SS_TAP(X_I) SS_TAP(X_E) SS_TAP(X_L) SS_TAP(X_R) SS_TAP(X_A) SS_TAP(X_C) SS_TAP(X_I) SS_TAP(X_N) SS_TAP(X_E) "@gmail.com");
+ SEQ_THREE_KEYS(KC_M, KC_L, KC_T) {
+ SEND_STRING("mailto." SS_TAP(X_D) SS_TAP(X_A) SS_TAP(X_N) SS_TAP(X_I) SS_TAP(X_E) SS_TAP(X_L) SS_TAP(X_R) SS_TAP(X_A) SS_TAP(X_C) SS_TAP(X_I) SS_TAP(X_N) SS_TAP(X_E) "@gmail.com");
}
/* Show Desktop => LdrKey > D */
SEQ_ONE_KEY(KC_D) {
diff --git a/keyboards/dztech/dz65rgb/keymaps/jumper149/keymap.c b/keyboards/dztech/dz65rgb/keymaps/jumper149/keymap.c
index b166a5629d..4980bad134 100644
--- a/keyboards/dztech/dz65rgb/keymaps/jumper149/keymap.c
+++ b/keyboards/dztech/dz65rgb/keymaps/jumper149/keymap.c
@@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, XXXXXXX, MO(_KB), XXXXXXX, KC_RCTL, KC_MPRV, KC_MPLY, KC_MNXT
),
[_KB] = LAYOUT_65_ansi(
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SPI, RGB_SPD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SPI, RGB_SPD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX,
XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, RGB_SAI, RGB_SAD, XXXXXXX, XXXXXXX, _BASEEF, _KITTEF, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, XXXXXXX,
KC_LSFT, RGB_VAI, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, NK_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT, XXXXXXX, XXXXXXX,
diff --git a/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h b/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h
index 586e5765aa..25842ac186 100644
--- a/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h
+++ b/keyboards/dztech/dz65rgb/keymaps/matthewrobo/config.h
@@ -47,8 +47,6 @@
// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH
// #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-#define QMK_KEYS_PER_SCAN 4
-
// #define RGB_MATRIX_KEYRELEASES
// some speed shit
diff --git a/keyboards/dztech/dz65rgb/keymaps/matthewrobo/keymap.c b/keyboards/dztech/dz65rgb/keymaps/matthewrobo/keymap.c
index 00915a9b4f..0c7bfbbb48 100644
--- a/keyboards/dztech/dz65rgb/keymaps/matthewrobo/keymap.c
+++ b/keyboards/dztech/dz65rgb/keymaps/matthewrobo/keymap.c
@@ -91,7 +91,7 @@ void rgb_matrix_indicators_user(void)
uint8_t this_led = host_keyboard_leds();
if (!g_suspend_state && rgb_matrix_config.enable) {
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _NAV:
if (IS_LED_ON(this_led, USB_LED_NUM_LOCK)) {
rgb_matrix_set_color(17, 0xFF, 0x00, 0x00);
diff --git a/keyboards/dztech/dz65rgb/keymaps/pagondel/keymap.c b/keyboards/dztech/dz65rgb/keymaps/pagondel/keymap.c
index 277323987c..2e24c370f1 100644
--- a/keyboards/dztech/dz65rgb/keymaps/pagondel/keymap.c
+++ b/keyboards/dztech/dz65rgb/keymaps/pagondel/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FL] = LAYOUT_65_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_PSCR,
- _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_SLCK, KC_PAUS, RESET, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_SLCK, KC_PAUS, QK_BOOT, _______,
_______, RGB_SPI, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, _______,
KC_LSFT, _______, _______, _______, _______, _______, NK_TOGG, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, KC_PGUP, _______,
_______, _______, _______, KC_MPLY, _______, _______, _______, KC_HOME, KC_VOLD, KC_END
diff --git a/keyboards/dztech/dz65rgb/keymaps/sbennett13/config.h b/keyboards/dztech/dz65rgb/keymaps/sbennett13/config.h
new file mode 100644
index 0000000000..2d4559fadd
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/keymaps/sbennett13/config.h
@@ -0,0 +1,43 @@
+// Copyright 2021 Scott Bennett (@SBennett13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define NO_MUSIC_MODE
+#define FORCE_NKRO
+
+// I don't use a bunch of layers
+#define LAYER_STATE_8BIT
+
+// Disable the RGB Light (underglow) stuff
+#undef RBGLIGHT_ANIMATIONS
+#undef RBGLIGHT_EFFECT_BREATHING
+#undef RBGLIGHT_EFFECT_RAINBOW_MOOD
+#undef RBGLIGHT_EFFECT_RAINBOW_SWIRL
+#undef RBGLIGHT_EFFECT_SNAKE
+#undef RBGLIGHT_EFFECT_KNIGHT
+#undef RBGLIGHT_EFFECT_CHRISTMAS
+#undef RBGLIGHT_EFFECT_STATIC_GRADIENT
+#undef RBGLIGHT_EFFECT_RGB_TEST
+#undef RBGLIGHT_EFFECT_ALTERNATING
+#undef RBGLIGHT_EFFECT_TWINKLE
+
+// No Cherry MX Lock switch
+#undef LOCKING_SUPPORT_ENABLE
+#undef LOCKING_RESYNC_ENABLE
+
+// No oneshot (Active until another key hit)
+#define NO_ACTION_ONESHOT
+
+// Remove some RGB
+#undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+#undef ENABLE_RGB_MATRIX_BREATHING
+#undef ENABLE_RGB_MATRIX_BAND_VAL
+#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#undef ENABLE_RGB_MATRIX_PIXEL_FLOW
+#undef ENABLE_RGB_MATRIX_PIXEL_RAIN
+#undef ENABLE_RGB_MATRIX_RAINDROPS
+#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#undef ENABLE_RGB_MATRIX_SOLID_SPLASH
diff --git a/keyboards/dztech/dz65rgb/keymaps/sbennett13/keymap.c b/keyboards/dztech/dz65rgb/keymaps/sbennett13/keymap.c
new file mode 100644
index 0000000000..511193e2b6
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/keymaps/sbennett13/keymap.c
@@ -0,0 +1,20 @@
+// Copyright 2021 Scott Bennett (@SBennett13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = 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_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,
+ 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_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_PSCR,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_SLCK, KC_PAUS, QK_BOOT, KC_PGUP,
+ CTL_T(KC_CAPS), RGB_SPI, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, KC_PGDN,
+ KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
+ )
+};
diff --git a/keyboards/dztech/dz65rgb/keymaps/sbennett13/readme.md b/keyboards/dztech/dz65rgb/keymaps/sbennett13/readme.md
new file mode 100644
index 0000000000..e5535e9ffc
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/keymaps/sbennett13/readme.md
@@ -0,0 +1,50 @@
+# sbennett13 DZ65RGB v2 layout
+
+Copyright 2022 Scott Bennett scottbennett027@gmail @SBennett13
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+```text
+ Keymap Default Layer
+ ,-----------------------------------------------------------------------------.
+ |Esc ~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Backsp|Home|
+ |-----------------------------------------------------------------------------|
+ |Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |PgUp|
+ |-----------------------------------------------------------------------------|
+ |FN | A | S | D | F | G | H | J | K | L | ; | ' |Return |PgDn|
+ |-----------------------------------------------------------------------------|
+ |Shift | Z | X | C | V | B | N | M | , | . | / |Shift | Up | End|
+ |-----------------------------------------------------------------------------|
+ |Ctrl |Win |Alt | Space |Alt | FN |Ctrl |Lef |Dow |Rig |
+ `-----------------------------------------------------------------------------'
+```
+
+```text
+ Keymap Function Layer
+ ,-----------------------------------------------------------------------------.
+ | `~ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 |F10 |F11 |F12 |DEL |PNTS|
+ |-----------------------------------------------------------------------------|
+ | |RgbT|RgbM|Hue+|Hue-|Sat+|Sat-|BR+ |BR- | | |SLCK|Paus|RST | |
+ |-----------------------------------------------------------------------------|
+ | |Eff+|Eff-| | | | | | | | | |EEP RST | |
+ |-----------------------------------------------------------------------------|
+ | | | | | | | | | | | | |Vol+|MUTE|
+ |-----------------------------------------------------------------------------|
+ | | | | | | | |LAST|Vol-|NEXT|
+ `-----------------------------------------------------------------------------'
+```
+
+### Build layout
+
+```qmk compile -kb dztech/dz65rgb/v2 -km sbennett13```
diff --git a/keyboards/dztech/dz65rgb/keymaps/sbennett13/rules.mk b/keyboards/dztech/dz65rgb/keymaps/sbennett13/rules.mk
new file mode 100644
index 0000000000..ed0a53416b
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/keymaps/sbennett13/rules.mk
@@ -0,0 +1,23 @@
+# Load Time Optimization
+LTO_ENABLE = yes
+
+# Space Cadet (Shift/Ctrl/Alt tapping for parenthesis)
+SPACE_CADET_ENABLE = no
+
+# Mouse keys bindable to keyboard
+MOUSEKEY_ENABLE = no
+
+# Console
+CONSOLE_ENABLE = no
+
+# Command (Change keyboard behavior without having to flash)
+COMMAND_ENABLE = no
+
+# Magic QMK keycodes
+MAGIC_ENABLE = no
+
+# No audio stuff
+MUSIC_ENABLE = no
+
+# No WPM
+WPM_ENABLE = no \ No newline at end of file
diff --git a/keyboards/dztech/dz65rgb/keymaps/yuannan/config.h b/keyboards/dztech/dz65rgb/keymaps/yuannan/config.h
new file mode 100644
index 0000000000..ef5023f8c6
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/keymaps/yuannan/config.h
@@ -0,0 +1,41 @@
+/* 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
+
+#undef ENABLE_RGB_MATRIX_PIXEL_FLOW
+#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#undef ENABLE_RGB_MATRIX_PIXEL_RAIN
+#undef ENABLE_RGB_MATRIX_RAINDROPS
+#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+
+#undef RGB_MATRIX_STARTUP_MODE
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_OUT_IN_DUAL
+
+#define RGB_MATRIX_HUE_STEP 8
+#define RGB_MATRIX_SAT_STEP 8
+#define RGB_MATRIX_VAL_STEP 8
+#define RGB_MATRIX_SPD_STEP 8
+
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_INTERVAL 1
+#define MOUSEKEY_MOVE_DELTA 1
+#define MOUSEKEY_MAX_SPEED 25
+#define MOUSEKEY_TIME_TO_MAX 255
+#define MOUSEKEY_WHEEL_DELAY 0
+#define MOUSEKEY_WHEEL_INTERVAL 100
+#define MOUSEKEY_WHEEL_MAX_SPEED 100
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 100
diff --git a/keyboards/dztech/dz65rgb/keymaps/yuannan/keymap.c b/keyboards/dztech/dz65rgb/keymaps/yuannan/keymap.c
new file mode 100644
index 0000000000..5baf32a7e4
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/keymaps/yuannan/keymap.c
@@ -0,0 +1,210 @@
+/* Copyright 2021 Yuannan (https://github.com/yuannan)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 {
+ AUTOCLICK_TOGGLE = SAFE_RANGE,
+ AUTO_BURST,
+ RAPID_BURST,
+ INC_CLICK_SPEED,
+ DEC_CLICK_SPEED,
+ DEL_LINE,
+ DEL_HOME,
+ DEL_END
+};
+
+enum my_layers {
+ _ALPHA_LAYER,
+ _VIM_EDITING_LAYER,
+ _MOUSE_LAYER,
+ _HYPER_LAYER
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_ALPHA_LAYER] = 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_MINUS, KC_EQUAL, KC_BSPACE, 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_LBRACKET,KC_RBRACKET, KC_BSLASH, KC_PGUP,
+ KC_LCTRL, 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_PGDOWN,
+ 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_END,
+ KC_CAPSLOCK,KC_LGUI,FN_MO13, KC_SPACE, FN_MO23, KC_LALT, KC_RCTRL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [_VIM_EDITING_LAYER] = LAYOUT_65_ansi(
+ 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_DELETE, KC_INSERT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DEL_HOME, KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SCROLLLOCK,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DEL_LINE, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_MPLY, KC_PAUSE,
+ KC_TRNS, AUTOCLICK_TOGGLE, KC_TRNS, AUTO_BURST,RAPID_BURST, KC_TRNS, DEL_END, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_PSCREEN,
+ DEC_CLICK_SPEED,INC_CLICK_SPEED, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+ [_MOUSE_LAYER] = LAYOUT_65_ansi(
+ 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_TRNS, KC_TRNS,
+ KC_ACL0, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_ACL1, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_ACL2, AUTOCLICK_TOGGLE, KC_BTN3, AUTO_BURST, RAPID_BURST, KC_TRNS, KC_TRNS, KC_BTN5, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ DEC_CLICK_SPEED,INC_CLICK_SPEED,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_HYPER_LAYER] = LAYOUT_65_ansi(
+ DYN_REC_STOP, DYN_REC_START1, DYN_REC_START2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_NO, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, 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_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_LSHIFT, KC_NO, KC_NO, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, RGB_MOD, 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
+ )
+};
+
+#define CLICKSPEEDS 5
+const uint16_t clickspeed_sets[CLICKSPEEDS] = {1000, 100, 50, 20, 1};
+uint16_t clickspeed_set = CLICKSPEEDS - 1;
+deferred_token autoclick_token = INVALID_DEFERRED_TOKEN;
+bool rapid = false;
+
+void decrement_click_speed(void){
+ clickspeed_set += CLICKSPEEDS - 1;
+ clickspeed_set %= CLICKSPEEDS;
+}
+
+void increment_click_speed(void){
+ clickspeed_set ++;
+ clickspeed_set %= CLICKSPEEDS;
+}
+
+uint32_t autoclick_callback(uint32_t trigger_time, void *cb_arg){
+ tap_code(KC_BTN1);
+
+ return rapid ? 1 : clickspeed_sets[clickspeed_set];
+}
+
+void start_autoclicker(void){
+ autoclick_token = defer_exec(1, autoclick_callback, NULL);
+}
+
+void stop_autoclicker(void){
+ cancel_deferred_exec(autoclick_token);
+ autoclick_token = INVALID_DEFERRED_TOKEN;
+}
+
+// Custom process key to allow for custom keycodes
+bool process_record_user(uint16_t keycode, keyrecord_t *record){
+ switch (keycode) {
+ case AUTOCLICK_TOGGLE:
+ if (record->event.pressed) {
+ if (autoclick_token == INVALID_DEFERRED_TOKEN){
+ start_autoclicker();
+ } else{
+ stop_autoclicker();
+ }
+ }
+ break;
+ case AUTO_BURST:
+ if (record->event.pressed && (autoclick_token == INVALID_DEFERRED_TOKEN)) {
+ start_autoclicker();
+ } else if (autoclick_token != INVALID_DEFERRED_TOKEN){
+ stop_autoclicker();
+ }
+ break;
+ case RAPID_BURST:
+ if (record->event.pressed){
+ rapid = true;
+ start_autoclicker();
+ } else{
+ rapid = false;
+ stop_autoclicker();
+ }
+ break;
+ case INC_CLICK_SPEED:
+ if (record->event.pressed){
+ if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){
+ decrement_click_speed();
+ } else{
+ increment_click_speed();
+ }
+ }
+ break;
+ case DEC_CLICK_SPEED:
+ if (record->event.pressed){
+ if (get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT)){
+ increment_click_speed();
+ } else{
+ decrement_click_speed();
+ }
+ }
+ break;
+ case DEL_LINE:
+ if(record->event.pressed){
+ SEND_STRING(SS_TAP(X_HOME) SS_LSFT(SS_TAP(X_END)) SS_TAP(X_DELETE));
+ }
+ break;
+ case DEL_HOME:
+ if(record->event.pressed){
+ SEND_STRING(SS_LSFT(SS_TAP(X_HOME)) SS_TAP(X_DELETE));
+ }
+ break;
+ case DEL_END:
+ if(record->event.pressed){
+ SEND_STRING(SS_LSFT(SS_TAP(X_END)) SS_TAP(X_DELETE));
+ }
+ break;
+ case RGB_TOG:
+ if(record->event.pressed){
+ if (!(get_mods() & MOD_BIT(KC_LSHIFT) || get_mods() & MOD_BIT(KC_RSHIFT))){
+ if(rgb_matrix_get_val() < 128){
+ rgb_matrix_sethsv(rgb_matrix_get_hue(), rgb_matrix_get_sat(), 255);
+ } else{
+ rgb_matrix_sethsv(rgb_matrix_get_hue(), rgb_matrix_get_sat(), 0);
+ }
+ return false;
+ }
+ }
+ break;
+ }
+
+ return true;
+};
+
+RGB get_inverted_RGB(void){
+ HSV current_HSV = rgb_matrix_get_hsv();
+ current_HSV.h = 255 - current_HSV.h;
+ current_HSV.s = 255;
+ current_HSV.v = 255;
+
+ return hsv_to_rgb(current_HSV);
+}
+
+// Move Caps indicator to the ctrl key where it belongs
+void rgb_matrix_indicators_user(void){
+ RGB inverted_RGB = get_inverted_RGB();
+ if (host_keyboard_led_state().caps_lock){
+ rgb_matrix_set_color(58, inverted_RGB.r, inverted_RGB.g, inverted_RGB.b);
+ }
+}
+
+// show coloured indicator for layers with a keybind
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max){
+ uint8_t layer = get_highest_layer(layer_state);
+ if (layer > 0) {
+ RGB inverted_RGB = get_inverted_RGB();
+ 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, inverted_RGB.r, inverted_RGB.g, inverted_RGB.b);
+ }
+ }
+ }
+ }
+}
diff --git a/keyboards/dztech/dz65rgb/keymaps/yuannan/readme.md b/keyboards/dztech/dz65rgb/keymaps/yuannan/readme.md
new file mode 100644
index 0000000000..c6768aceec
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/keymaps/yuannan/readme.md
@@ -0,0 +1,88 @@
+[DZ65RGB/v3 Yuannan's Layout Imgur Album](https://imgur.com/a/BI2RjgE)
+
+![Alpha](https://i.imgur.com/ikqvrtF.png)
+![Vim Editing Layer](https://i.imgur.com/hoBvSRR.png)
+![Mouse and Autoclicker](https://i.imgur.com/QWmWaWY.png)
+![Hyper functions and RGB Layer](https://i.imgur.com/Zm6Tf6p.png)
+
+# Yuannan's DZ65 Custom Profile. Autoclicker, Vim, and more!
+
+## Features
+
+1. Much better mouse support. Now able to:
+ - Move mouse around with 3 levels of acceleration
+ - Click and nav using mouse buttons 1-5
+ - Mouse scroll in all 4 directions, autoclick with 5 different levels of speed!
+ - Increase or Decrease the autoclick speed from the preset array of {500, 50, 20, 10, 1} clicks per second \*(Read Notes). Press Shift while using the Increase or Decrease button to do the opposite. Designed to work with other keymaps and keyboards!
+2. Ctrl and Caps swapped. The new indicator is dynamically colored and has been moved to the CTRL key to reflect the keymap.
+3. Improved navigation via Vim like keys.
+4. Dynamic Macros now enabled!
+5. Custom Editing Macros such as:
+ - Deleting entire line
+ - Deleting from cursor to start of line
+ - Deleting form cursor to end of line
+6. VIA support.
+7. Improved granularity of the RGB Matrix. Now with steps of 8/256, which is 32 steps!
+8. The default toggle for RGB now sets the matrix to be on low brightness. Why? If the matrix is completely toggled off then the indicators for Caps Locks and FN are also completely off. You can completely turn it off by pressing shift while processing the "RGB_TOG" keycode. (It is {FN1+FN2+Shift+Space} on this keymap.)
+9. Disabled some effects to free up more space.
+
+### Notes
+
+#### Note Autoclicker Speed
+
+The click events are now programmed with the new Deferred Execution API (https://docs.qmk.fm/#/custom_quantum_functions?id=deferred-execution).
+
+While it's programmed to input with a delay of 1ms (500CPS), the result will vary depending on your board and host. This is a massive improvment compared to timer based events. This new API is much faster and will work with less interference from other tasks on the board.
+
+#### Note Autoclick Linux libinput (Linux autoclicker not working)
+
+Linux's input driver (libinput) has a debounce feature. This is useful in normal usage as a person cannot feasibly click more than 20CPS. However when the keyboard tries to input 50+CPS and sometimes up to ~500CPS this is a problem.
+
+Create a file at "/etc/libinput/local-overrides.quirks" with the contents:
+
+ [Never Debounce]
+ MatchUdevType=mouse
+ ModelBouncingKeys=1
+
+This disables the debounce feature for libnput. This maybe be different if you use evdev, On Arch Linux the driver packages are {"libinput", "xf86-input-libinput"} compared to {"libevdev", "xf86-input-evdev"}. I have {"libinput", "xf86-input-libinput"} installed. In addition I have {"libevdev"} installed as a dependency of other packages. You maybe need to change the driver for your device if you have both installed. For me it was working just fine. Check what driver your xsession currently is utilizing with:
+
+ $cat /var/log/Xorg.0.log | grep libinput
+
+If it is using libinput then it will show contents. Otherwise search for "evdev".
+
+#### Still not working? (Linux)
+
+Check if the events are reaching your OS with either:
+
+ $evtest /dev/input/by-id/YOUR_KEYBOARD
+
+or
+
+ $cat /dev/input/by-id/YOUR_KEYBOARD
+
+It should end in `event-mouse`. In my case it was `/dev/input/by-id/usb-DZTECH_DZ65RGBV3-if02-event-mouse` which was a symlink to `/dev/input/event12`. It **WILL** vary on your setup.
+
+The output will appear "garbled" as it's trying to interoperate the data stream into text. The underlying data is actually a struct of the form:
+
+ struct input_event {
+ struct timeval time;
+ unsigned short type;
+ unsigned short code;
+ unsigned int value;
+ };
+
+You can read more about it here (https://www.kernel.org/doc/Documentation/input/input.txt)
+
+If it has an output when you autoclick but do not receive it in your desktop then it's a driver issue.
+
+View libinput with:
+
+ $libinput debug-events --device /dev/input/by-id/usb-DZTECH_DZ65RGBV3-if02-event-mouse --verbose
+
+If you experience "DEBOUNCE" events then it's a driver issue and should be able to be disabled with the above method, restart your display manager or just reboot afterwards.
+
+If you have any issues feel free to make bug report or pull request to me, QMK, or libinput. Please send logs along with any steps you have tried.
+
+#### ALT Position
+
+The physical Right_Alt is mapped as a Left_Alt. This is to ensure compatibility in legacy and programs which treat them differently. A key example would be the TTY system in Linux.
diff --git a/keyboards/dztech/dz65rgb/keymaps/yuannan/rules.mk b/keyboards/dztech/dz65rgb/keymaps/yuannan/rules.mk
new file mode 100644
index 0000000000..e98ba61c3a
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/keymaps/yuannan/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+DYNAMIC_MACRO_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+DEFERRED_EXEC_ENABLE = yes
diff --git a/keyboards/dztech/dz65rgb/v1/config.h b/keyboards/dztech/dz65rgb/v1/config.h
index d281eaa51e..0ae5173051 100644
--- a/keyboards/dztech/dz65rgb/v1/config.h
+++ b/keyboards/dztech/dz65rgb/v1/config.h
@@ -15,13 +15,6 @@
*/
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0x1420
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DZTECH
-#define PRODUCT DZ65RGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/dztech/dz65rgb/v1/info.json b/keyboards/dztech/dz65rgb/v1/info.json
new file mode 100644
index 0000000000..752d361728
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/v1/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x1420",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/dztech/dz65rgb/v2/config.h b/keyboards/dztech/dz65rgb/v2/config.h
index 5267f42aa2..d2dec023ef 100644
--- a/keyboards/dztech/dz65rgb/v2/config.h
+++ b/keyboards/dztech/dz65rgb/v2/config.h
@@ -15,13 +15,6 @@
*/
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0x1421
-#define DEVICE_VER 0x0002
-#define MANUFACTURER DZTECH
-#define PRODUCT DZ65RGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/dztech/dz65rgb/v2/info.json b/keyboards/dztech/dz65rgb/v2/info.json
new file mode 100644
index 0000000000..1cfb5abdbb
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/v2/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x1421",
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/dztech/dz65rgb/v3/config.h b/keyboards/dztech/dz65rgb/v3/config.h
index 6c21fa22c2..ed7775a74b 100755
--- a/keyboards/dztech/dz65rgb/v3/config.h
+++ b/keyboards/dztech/dz65rgb/v3/config.h
@@ -18,19 +18,11 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0x1424
-#define DEVICE_VER 0x0003
-#define MANUFACTURER DZTECH
-#define PRODUCT DZ65RGBV3
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { F0, F1, F4, E6, C6 }
#define MATRIX_COL_PINS { F7, F6, F5, C7, B0, B1, B2, B3, B4, D7, D6, D4, D5, D3, D2}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dztech/dz65rgb/v3/info.json b/keyboards/dztech/dz65rgb/v3/info.json
new file mode 100644
index 0000000000..f2c2236031
--- /dev/null
+++ b/keyboards/dztech/dz65rgb/v3/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x1424",
+ "device_version": "3.0.0"
+ }
+}
diff --git a/keyboards/dztech/dz96/config.h b/keyboards/dztech/dz96/config.h
index 351b394263..534bd56cd9 100644
--- a/keyboards/dztech/dz96/config.h
+++ b/keyboards/dztech/dz96/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0xDB96
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DZTECH
-#define PRODUCT DZ96
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 13
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B7, B3, E6, F0, D5, D4, D6, C7 }
#define MATRIX_COL_PINS { C6, F1, F4, F5, F6, F7, D7, B4, B5, D0, D1, D2, D3}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/dztech/dz96/info.json b/keyboards/dztech/dz96/info.json
index 25c4d2265d..1ce43d6d18 100644
--- a/keyboards/dztech/dz96/info.json
+++ b/keyboards/dztech/dz96/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "DZ96",
+ "manufacturer": "DZTECH",
"url": "",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0x445A",
+ "pid": "0xDB96",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/dztech/endless80/config.h b/keyboards/dztech/endless80/config.h
index 9874ea99a8..197dc46172 100644
--- a/keyboards/dztech/endless80/config.h
+++ b/keyboards/dztech/endless80/config.h
@@ -15,11 +15,6 @@
*/
#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
diff --git a/keyboards/dztech/endless80/info.json b/keyboards/dztech/endless80/info.json
index 219d7ec0fe..5a21c6aedc 100644
--- a/keyboards/dztech/endless80/info.json
+++ b/keyboards/dztech/endless80/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "endless80",
+ "manufacturer": "dztech",
"url": "",
"maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x445A",
+ "pid": "0x1015",
+ "device_version": "0.0.1"
+ },
"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/readme.md b/keyboards/dztech/endless80/readme.md
index 58238afefe..18b813566c 100644
--- a/keyboards/dztech/endless80/readme.md
+++ b/keyboards/dztech/endless80/readme.md
@@ -15,4 +15,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` \ No newline at end of file
diff --git a/keyboards/e88/config.h b/keyboards/e88/config.h
index e83dfb9b06..87b87b4365 100644
--- a/keyboards/e88/config.h
+++ b/keyboards/e88/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x0187
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Pink Labs
-#define PRODUCT e88
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -42,7 +35,6 @@
#define MATRIX_ROW_PINS { B7, D7, B4, C6, B5, B6 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D0, D1, D2, D3, B3, B2, B1, E6, D5, D6, D4 }
-#define UNUSED_PINS {B0}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/e88/info.json b/keyboards/e88/info.json
index ed240910ea..3f2bd18f29 100644
--- a/keyboards/e88/info.json
+++ b/keyboards/e88/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "e88",
+ "manufacturer": "Pink Labs",
"url": "",
"maintainer": "2-n",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x0187",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ealdin/quadrant/config.h b/keyboards/ealdin/quadrant/config.h
index b37af15ea6..ff217d933c 100644
--- a/keyboards/ealdin/quadrant/config.h
+++ b/keyboards/ealdin/quadrant/config.h
@@ -19,19 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0192 // Ealdin Keyboards "Æ’"
-#define PRODUCT_ID 0x5154 // Quadrant "QT"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ealdin
-#define PRODUCT Quadrant E-C
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { B2, F7, B3, B6, B1 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ealdin/quadrant/info.json b/keyboards/ealdin/quadrant/info.json
index e9e02e3d67..09a258a601 100644
--- a/keyboards/ealdin/quadrant/info.json
+++ b/keyboards/ealdin/quadrant/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Quadrant E-C",
+ "manufacturer": "Ealdin",
"url": "https://github.com/Ealdin/keyboards/tree/master/Quadrant",
"maintainer": "Ealdin Keyboards",
+ "usb": {
+ "vid": "0x0192",
+ "pid": "0x5154",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x14": {
"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":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":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":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":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}]
diff --git a/keyboards/earth_rover/config.h b/keyboards/earth_rover/config.h
index 2e7ceda4e1..081834972e 100644
--- a/keyboards/earth_rover/config.h
+++ b/keyboards/earth_rover/config.h
@@ -19,13 +19,6 @@ 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 0xEE11
-#define DEVICE_VER 0x0001
-#define MANUFACTURER k.bigwheel
-#define PRODUCT earth_rover
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
#define MATRIX_COL_PINS { F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/earth_rover/info.json b/keyboards/earth_rover/info.json
index 59249b819e..8a6ab27b35 100644
--- a/keyboards/earth_rover/info.json
+++ b/keyboards/earth_rover/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "earth_rover",
+ "manufacturer": "k.bigwheel",
"url": "https://github.com/bigwheel/earth_rover",
"maintainer": "k.bigwheel",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xEE11",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/eason/capsule65/config.h b/keyboards/eason/capsule65/config.h
index 34efb3f2a5..fb65c421f1 100644
--- a/keyboards/eason/capsule65/config.h
+++ b/keyboards/eason/capsule65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xF21E
-#define PRODUCT_ID 0x6E6E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER eason
-#define PRODUCT capsule65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/eason/capsule65/info.json b/keyboards/eason/capsule65/info.json
index cd091b550f..9af7b49778 100644
--- a/keyboards/eason/capsule65/info.json
+++ b/keyboards/eason/capsule65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "CAPSULE65",
+ "keyboard_name": "capsule65",
+ "manufacturer": "eason",
"url": "",
"maintainer": "EasonQian1",
+ "usb": {
+ "vid": "0xF21E",
+ "pid": "0x6E6E",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
diff --git a/keyboards/eason/capsule65/readme.md b/keyboards/eason/capsule65/readme.md
index 87576e34fa..5692cac027 100644
--- a/keyboards/eason/capsule65/readme.md
+++ b/keyboards/eason/capsule65/readme.md
@@ -14,4 +14,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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`
+* **Keycode in layout**: Press the key mapped to `QK_BOOT`
diff --git a/keyboards/ebastler/e80_1800/config.h b/keyboards/ebastler/e80_1800/config.h
index 968c7a1fc7..85e2a4e409 100644
--- a/keyboards/ebastler/e80_1800/config.h
+++ b/keyboards/ebastler/e80_1800/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6562 // "eb"
-#define PRODUCT_ID 0x1338
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ebastler
-#define PRODUCT E80-1800
-
/* Limit layer count to fit in storage with VIA enabled */
#define DYNAMIC_KEYMAP_LAYER_COUNT 3
@@ -33,7 +26,6 @@
#define MATRIX_ROW_PINS { B7, B3, D2, C12, C11, C10, A15 }
#define MATRIX_COL_PINS { A1, A0, C3, C2, F1, F0, C15, C14, C13, C4, C5, B0, B1, B2, B9, A13, A8, C9, C8 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ebastler/e80_1800/info.json b/keyboards/ebastler/e80_1800/info.json
index 503cafaa3d..8680f212d5 100644
--- a/keyboards/ebastler/e80_1800/info.json
+++ b/keyboards/ebastler/e80_1800/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "E80_1800",
+ "manufacturer": "ebastler",
"url": "https://github.com/ebastler/E80-1800",
"maintainer": "ebastler",
+ "usb": {
+ "vid": "0x6562",
+ "pid": "0x1338",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_1800_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":"Insert", "x":15.5, "y":0}, {"label":"Home", "x":16.5, "y":0}, {"label":"PgUp", "x":17.5, "y":0}, {"label":"PrtSc", "x":18.5, "y":0}, {"label":"Delete", "x":15.5, "y":1}, {"label":"End", "x":16.5, "y":1}, {"label":"PgDn", "x":17.5, "y":1}, {"label":"Scroll Lock", "x":18.5, "y":1}, {"label":"\u00ac", "x":0, "y":2}, {"label":"!", "x":1, "y":2}, {"label":"\"", "x":2, "y":2}, {"label":"\u00a7", "x":3, "y":2}, {"label":"$", "x":4, "y":2}, {"label":"%", "x":5, "y":2}, {"label":"&", "x":6, "y":2}, {"label":"/", "x":7, "y":2}, {"label":"(", "x":8, "y":2}, {"label":")", "x":9, "y":2}, {"label":"=", "x":10, "y":2}, {"label":"?", "x":11, "y":2}, {"label":"`", "x":12, "y":2}, {"label":"Backspace", "x":13, "y":2, "w":2}, {"label":"Num Lock", "x":15.5, "y":2}, {"label":"/", "x":16.5, "y":2}, {"label":"*", "x":17.5, "y":2}, {"label":"Pause", "x":18.5, "y":2}, {"label":"Tab", "x":0, "y":3, "w":1.5}, {"label":"Q", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"E", "x":3.5, "y":3}, {"label":"R", "x":4.5, "y":3}, {"label":"T", "x":5.5, "y":3}, {"label":"Y", "x":6.5, "y":3}, {"label":"U", "x":7.5, "y":3}, {"label":"I", "x":8.5, "y":3}, {"label":"O", "x":9.5, "y":3}, {"label":"P", "x":10.5, "y":3}, {"label":"{", "x":11.5, "y":3}, {"label":"}", "x":12.5, "y":3}, {"label":"|", "x":13.5, "y":3, "w":1.5}, {"label":"7", "x":15.5, "y":3}, {"label":"8", "x":16.5, "y":3}, {"label":"9", "x":17.5, "y":3}, {"label":"-", "x":18.5, "y":3}, {"label":"Caps Lock", "x":0, "y":4, "w":1.75}, {"label":"A", "x":1.75, "y":4}, {"label":"S", "x":2.75, "y":4}, {"label":"D", "x":3.75, "y":4}, {"label":"F", "x":4.75, "y":4}, {"label":"G", "x":5.75, "y":4}, {"label":"H", "x":6.75, "y":4}, {"label":"J", "x":7.75, "y":4}, {"label":"K", "x":8.75, "y":4}, {"label":"L", "x":9.75, "y":4}, {"label":":", "x":10.75, "y":4}, {"label":"@", "x":11.75, "y":4}, {"label":"~", "x":12.75, "y":4}, {"label":"Enter", "x":13.75, "y":3, "w":1.25, "h":2}, {"label":"4", "x":15.5, "y":4}, {"label":"5", "x":16.5, "y":4}, {"label":"6", "x":17.5, "y":4}, {"label":"+", "x":18.5, "y":4}, {"label":"Shift", "x":0, "y":5, "w":1.25}, {"label":"|", "x":1.25, "y":5}, {"label":"Z", "x":2.25, "y":5}, {"label":"X", "x":3.25, "y":5}, {"label":"C", "x":4.25, "y":5}, {"label":"V", "x":5.25, "y":5}, {"label":"B", "x":6.25, "y":5}, {"label":"N", "x":7.25, "y":5}, {"label":"M", "x":8.25, "y":5}, {"label":"<", "x":9.25, "y":5}, {"label":">", "x":10.25, "y":5}, {"label":"?", "x":11.25, "y":5}, {"label":"Shift", "x":12.25, "y":5, "w":1.75}, {"label":"up", "x":14.25, "y":5.25}, {"label":"1", "x":15.5, "y":5}, {"label":"2", "x":16.5, "y":5}, {"label":"3", "x":17.5, "y":5}, {"label":"Enter", "x":18.5, "y":5, "h":2}, {"label":"Ctrl", "x":0, "y":6}, {"label":"Win", "x":1, "y":6}, {"label":"Alt", "x":2, "y":6}, {"x":3, "y":6, "w":6}, {"label":"AltGr", "x":9, "y":6}, {"label":"Win", "x":10, "y":6}, {"label":"Menu", "x":11, "y":6}, {"label":"Ctrl", "x":12, "y":6}, {"label":"left", "x":13.25, "y":6.25}, {"label":"down", "x":14.25, "y":6.25}, {"label":"right", "x":15.25, "y":6.25}, {"label":"0", "x":16.5, "y":6}, {"label":".", "x":17.5, "y":6}]
diff --git a/keyboards/ebastler/isometria_75/rev1/config.h b/keyboards/ebastler/isometria_75/rev1/config.h
index 038fa18ac1..2c2a62fc26 100644
--- a/keyboards/ebastler/isometria_75/rev1/config.h
+++ b/keyboards/ebastler/isometria_75/rev1/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6562 // "eb"
-#define PRODUCT_ID 0x1337
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ebastler
-#define PRODUCT isometria 75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS { A15, B4, B5, B6, B7, B8}
#define MATRIX_COL_PINS { B12, B13, B14, B15, A8, A10, A13, A14, B9, C13, F0, F1, A0, B2, B10, B11 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ebastler/isometria_75/rev1/info.json b/keyboards/ebastler/isometria_75/rev1/info.json
index cbca4c40ff..ffc847a1d4 100644
--- a/keyboards/ebastler/isometria_75/rev1/info.json
+++ b/keyboards/ebastler/isometria_75/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "isometria_75",
+ "keyboard_name": "isometria 75",
+ "manufacturer": "ebastler",
"url": "https://github.com/ebastler/isometria-75",
"maintainer": "ebastler",
+ "usb": {
+ "vid": "0x6562",
+ "pid": "0x1337",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_iso": {
"layout": [
diff --git a/keyboards/eco/config.h b/keyboards/eco/config.h
index 5c4466985c..5717389e7a 100644
--- a/keyboards/eco/config.h
+++ b/keyboards/eco/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1337
-#define PRODUCT_ID 0x6006
-#define MANUFACTURER Bishop Keyboards
-#define PRODUCT The ECO Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
diff --git a/keyboards/eco/info.json b/keyboards/eco/info.json
index 2553371de2..36710f9996 100644
--- a/keyboards/eco/info.json
+++ b/keyboards/eco/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "ECO",
+ "keyboard_name": "The ECO Keyboard",
+ "manufacturer": "Bishop Keyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x1337",
+ "pid": "0x6006"
+ },
"layouts": {
"LAYOUT": {
"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":5, "y":0}, {"label":"k07", "x":6, "y":0}, {"label":"k08", "x":7, "y":0}, {"label":"k09", "x":8, "y":0}, {"label":"k010", "x":9, "y":0}, {"label":"k011", "x":10, "y":0}, {"label":"k012", "x":11, "y":0}, {"label":"k013", "x":12, "y":0}, {"label":"k014", "x":13, "y":0}, {"label":"k11", "x":0, "y":1}, {"label":"k12", "x":1, "y":1}, {"label":"k13", "x":2, "y":1}, {"label":"k14", "x":3, "y":1}, {"label":"k15", "x":4, "y":1}, {"label":"k16", "x":5, "y":1}, {"label":"k17", "x":6, "y":1}, {"label":"k18", "x":7, "y":1}, {"label":"k19", "x":8, "y":1}, {"label":"k110", "x":9, "y":1}, {"label":"k111", "x":10, "y":1}, {"label":"k112", "x":11, "y":1}, {"label":"k113", "x":12, "y":1}, {"label":"k114", "x":13, "y":1}, {"label":"k21", "x":0, "y":2}, {"label":"k22", "x":1, "y":2}, {"label":"k23", "x":2, "y":2}, {"label":"k24", "x":3, "y":2}, {"label":"k25", "x":4, "y":2}, {"label":"k26", "x":5, "y":2}, {"label":"k27", "x":6, "y":2}, {"label":"k28", "x":7, "y":2}, {"label":"k29", "x":8, "y":2}, {"label":"k210", "x":9, "y":2}, {"label":"k211", "x":10, "y":2}, {"label":"k212", "x":11, "y":2}, {"label":"k213", "x":12, "y":2}, {"label":"k214", "x":13, "y":2}, {"label":"k31", "x":0, "y":3}, {"label":"k32", "x":1, "y":3}, {"label":"k33", "x":2, "y":3}, {"label":"k34", "x":3, "y":3}, {"label":"k35", "x":4, "y":3}, {"label":"k36", "x":5, "y":3}, {"label":"k37", "x":6, "y":3}, {"label":"k38", "x":7, "y":3}, {"label":"k39", "x":8, "y":3}, {"label":"k310", "x":9, "y":3}, {"label":"k311", "x":10, "y":3}, {"label":"k312", "x":11, "y":3}, {"label":"k313", "x":12, "y":3}, {"label":"k314", "x":13, "y":3}]
diff --git a/keyboards/eco/keymaps/bcat/keymap.c b/keyboards/eco/keymaps/bcat/keymap.c
index 8c50a9ed55..e3345a677a 100644
--- a/keyboards/eco/keymaps/bcat/keymap.c
+++ b/keyboards/eco/keymaps/bcat/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/b18aafa0327d7e83eaf485546c067a21 */
[LAYER_ADJUST] = LAYOUT(
- _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______,
_______, _______, 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, _______, _______, _______, _______, _______
diff --git a/keyboards/eco/keymaps/that_canadian/keymap.c b/keyboards/eco/keymaps/that_canadian/keymap.c
index f9696c77e5..6561491b14 100644
--- a/keyboards/eco/keymaps/that_canadian/keymap.c
+++ b/keyboards/eco/keymaps/that_canadian/keymap.c
@@ -97,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT(
- TSKMGR, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CALTDEL,
+ TSKMGR, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CALTDEL,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/eco/keymaps/xyverz/keymap.c b/keyboards/eco/keymaps/xyverz/keymap.c
index 06054e9ac8..0050b79847 100644
--- a/keyboards/eco/keymaps/xyverz/keymap.c
+++ b/keyboards/eco/keymaps/xyverz/keymap.c
@@ -114,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT(
KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12 ,
- _______, RESET, _______, _______, _______, _______, KC_NO, KC_NO, _______, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, QK_BOOT, _______, _______, _______, _______, KC_NO, KC_NO, _______, QWERTY, COLEMAK, DVORAK, _______, _______,
_______, _______, _______, _______, _______, _______, KC_NO, KC_NO, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/eco/rev1/config.h b/keyboards/eco/rev1/config.h
index 65cb050d6c..1dc94e79b5 100644
--- a/keyboards/eco/rev1/config.h
+++ b/keyboards/eco/rev1/config.h
@@ -19,9 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "../config.h"
-#define DEVICE_VER 0x0001
-
/* ECO V1 pin-out */
#define MATRIX_ROW_PINS { B1, B6, B2, B3 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B5, B4, E6, D7, C6, D4, D0, D1, D2, D3 }
-#define UNUSED_PINS
diff --git a/keyboards/eco/rev1/info.json b/keyboards/eco/rev1/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/eco/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/eco/rev2/config.h b/keyboards/eco/rev2/config.h
index bbc0492e06..35a2334fc9 100644
--- a/keyboards/eco/rev2/config.h
+++ b/keyboards/eco/rev2/config.h
@@ -19,9 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "../config.h"
-#define DEVICE_VER 0x0002
-
/* ECO V2.1 pin-out */
#define MATRIX_ROW_PINS { D7, B5, B4, E6 }
#define MATRIX_COL_PINS { D1, D0, D4, C6, B6, B2, B3, B1, F7, F6, F5, F4, D2, D3 }
-#define UNUSED_PINS
diff --git a/keyboards/eco/rev2/info.json b/keyboards/eco/rev2/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/eco/rev2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/edc40/config.h b/keyboards/edc40/config.h
index be6cba5138..907cf257fe 100644
--- a/keyboards/edc40/config.h
+++ b/keyboards/edc40/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4F4A // "OJ"
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER OJ
-#define PRODUCT edc40
-
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
@@ -39,7 +32,6 @@
*/
#define MATRIX_ROW_PINS { D4, D6, D7, F7 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, D0, D1, D2, D3, D5, B4, B5 }
- #define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/edc40/info.json b/keyboards/edc40/info.json
index ae66ec2297..43b79f6a90 100644
--- a/keyboards/edc40/info.json
+++ b/keyboards/edc40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "edc40",
+ "manufacturer": "OJ",
"url": "",
"maintainer": "ojthetiny",
+ "usb": {
+ "vid": "0x4F4A",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/edda/config.h b/keyboards/edda/config.h
index bd9a0ab77d..33030c2fb6 100644
--- a/keyboards/edda/config.h
+++ b/keyboards/edda/config.h
@@ -15,13 +15,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D45
-#define PRODUCT_ID 0x4544
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mekanisk
-#define PRODUCT Edda PCB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/edda/info.json b/keyboards/edda/info.json
index 2945b2b22d..c9cdd45dbe 100644
--- a/keyboards/edda/info.json
+++ b/keyboards/edda/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Edda",
+ "manufacturer": "Mekanisk",
"url": "https://mekanisk.com",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D45",
+ "pid": "0x4544",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/edi/hardlight/mk1/config.h b/keyboards/edi/hardlight/mk1/config.h
index be136fe9c9..fbcab5e8e5 100644
--- a/keyboards/edi/hardlight/mk1/config.h
+++ b/keyboards/edi/hardlight/mk1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xF7E0
-#define PRODUCT_ID 0x2401
-#define DEVICE_VER 0x0000
-#define MANUFACTURER Everywhere Defense Industries
-#define PRODUCT Hard Light
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, D4, D6, D7, B4 }
#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, B5 }
-#define UNUSED_PINS { B7, D2, D3, D5 }
/* COL2ROW, ROW2COL */
diff --git a/keyboards/edi/hardlight/mk1/info.json b/keyboards/edi/hardlight/mk1/info.json
new file mode 100644
index 0000000000..f0ff1b915f
--- /dev/null
+++ b/keyboards/edi/hardlight/mk1/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Hard Light",
+ "manufacturer": "Everywhere Defense Industries",
+ "usb": {
+ "vid": "0xF7E0",
+ "pid": "0x2401",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/edi/hardlight/mk2/config.h b/keyboards/edi/hardlight/mk2/config.h
index 8580aabec5..2cf9ab9af9 100644
--- a/keyboards/edi/hardlight/mk2/config.h
+++ b/keyboards/edi/hardlight/mk2/config.h
@@ -17,13 +17,6 @@ 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
diff --git a/keyboards/edi/hardlight/mk2/info.json b/keyboards/edi/hardlight/mk2/info.json
new file mode 100644
index 0000000000..25e9b06d49
--- /dev/null
+++ b/keyboards/edi/hardlight/mk2/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Hard Light Mk 2",
+ "manufacturer": "Everywhere Defense Industries",
+ "usb": {
+ "vid": "0xF7E0",
+ "pid": "0x2408",
+ "device_version": "0.0.7"
+ }
+}
diff --git a/keyboards/edi/hardlight/mk2/keymaps/kate/keymap.c b/keyboards/edi/hardlight/mk2/keymaps/kate/keymap.c
index a493c2288a..6bf375c47c 100644
--- a/keyboards/edi/hardlight/mk2/keymaps/kate/keymap.c
+++ b/keyboards/edi/hardlight/mk2/keymaps/kate/keymap.c
@@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_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_HUI, RGB_SAI, RGB_VAI, RGB_M_SW,_______, QK_BOOT, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_M_K, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/edi/standaside/config.h b/keyboards/edi/standaside/config.h
index c72c915d82..ebf0f6de9a 100644
--- a/keyboards/edi/standaside/config.h
+++ b/keyboards/edi/standaside/config.h
@@ -4,13 +4,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xF7E0
-#define PRODUCT_ID 0x0412
-#define DEVICE_VER 0x0003
-#define MANUFACTURER Fate Everywhere
-#define PRODUCT Stand Aside
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
@@ -27,7 +20,6 @@
*/
#define MATRIX_ROW_PINS { D1, F4, F6, F7, B1, B3, B2, B6 }
#define MATRIX_COL_PINS { F5, D0, D4, C6, D7, E6, B4, B5 }
-#define UNUSED_PINS {}
/* COL2ROW, ROW2COL */
diff --git a/keyboards/edi/standaside/info.json b/keyboards/edi/standaside/info.json
index 797a3419b7..464b5b1c84 100644
--- a/keyboards/edi/standaside/info.json
+++ b/keyboards/edi/standaside/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Stand Aside",
+ "manufacturer": "Fate Everywhere",
"url": "",
"maintainer": "fateeverywhere",
+ "usb": {
+ "vid": "0xF7E0",
+ "pid": "0x0412",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_ortho_4x16": {
"layout": [
diff --git a/keyboards/eek/config.h b/keyboards/eek/config.h
index 919c112722..e183afa0be 100644
--- a/keyboards/eek/config.h
+++ b/keyboards/eek/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4A53
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0004
-#define MANUFACTURER klackygears
-#define PRODUCT eek!
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D7, E6, B4, B5 }
#define MATRIX_COL_PINS { D4, C6, B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS { D2, D1, D0 }
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/eek/info.json b/keyboards/eek/info.json
index b6934c2a39..2566cd6fef 100644
--- a/keyboards/eek/info.json
+++ b/keyboards/eek/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "eek!",
+ "manufacturer": "klackygears",
"url": "http://www.keyboard-layout-editor.com/#/gists/3e4d0cd1534dd4e4b9f25cf2b36d0d63",
"maintainer": "klackygears",
+ "usb": {
+ "vid": "0x4A53",
+ "pid": "0x0002",
+ "device_version": "0.0.4"
+ },
"layouts": {
"LAYOUT_split_3x5_3": {
"layout": [
diff --git a/keyboards/eek/keymaps/ledtest/keymap.c b/keyboards/eek/keymaps/ledtest/keymap.c
index 8b046223c7..3a6cc6f38c 100644
--- a/keyboards/eek/keymaps/ledtest/keymap.c
+++ b/keyboards/eek/keymaps/ledtest/keymap.c
@@ -67,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_split_3x5_3(
RGB_VAI, RGB_SAI, RGB_HUI, RGB_MOD, RGB_TOG, _______, KC_F9, KC_F10, KC_F11, KC_F12,
RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD, _______, _______, KC_F5, KC_F6, KC_F7, KC_F8,
- _______, _______, _______, _______, _______, RESET, KC_F1, KC_F2, KC_F3, KC_F4,
+ _______, _______, _______, _______, _______, QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4,
_______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/efreet/config.h b/keyboards/efreet/config.h
index 90e76d9c5a..e937fe57c2 100644
--- a/keyboards/efreet/config.h
+++ b/keyboards/efreet/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x534F // "SO"
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Soran
-#define PRODUCT Efreet
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, D6, D5, D4, D3, D2, D1, C2 }
#define MATRIX_COL_PINS { B3, B4, B5, B6, B7, C7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/efreet/info.json b/keyboards/efreet/info.json
index 0b34c4c6f1..2ef2e59a0d 100644
--- a/keyboards/efreet/info.json
+++ b/keyboards/efreet/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "efreet",
+ "keyboard_name": "Efreet",
+ "manufacturer": "Soran",
"url": "",
"maintainer": "amberstarlight",
+ "usb": {
+ "vid": "0x534F",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_planck_mit": {
"layout": [
diff --git a/keyboards/ein_60/config.h b/keyboards/ein_60/config.h
index c701f1f6d6..91311dea37 100644
--- a/keyboards/ein_60/config.h
+++ b/keyboards/ein_60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4A53
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER klackygears
-#define PRODUCT EIN_60
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
diff --git a/keyboards/ein_60/info.json b/keyboards/ein_60/info.json
index c1cd5c7f77..d7b2c529e1 100644
--- a/keyboards/ein_60/info.json
+++ b/keyboards/ein_60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ein_60",
+ "manufacturer": "klackygears",
"url": "",
"maintainer": "klackygears",
+ "usb": {
+ "vid": "0x4A53",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ein_60/keymaps/ledtest/keymap.c b/keyboards/ein_60/keymaps/ledtest/keymap.c
index 5fb5217c98..dc0c31d5de 100644
--- a/keyboards/ein_60/keymaps/ledtest/keymap.c
+++ b/keyboards/ein_60/keymaps/ledtest/keymap.c
@@ -88,14 +88,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | | | | | | | |BLSTEP|
* |------+------+------|--------------------+ ,------. +--------------------|------+------+------|
- * | | | | | | | | | | | | | | | RESET|
+ * | | | | | | | | | | | | | | | QK_BOOT|
* `-----------------------------------------' `------' `-----------------------------------------'
*/
[_ADJUST] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, RGBRST, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, _______,
_______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_VAD, RGB_SAD, RGB_HUD, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_STEP,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT
),
/* Function
* ,-----------------------------------------. ,------. ,-----------------------------------------.
diff --git a/keyboards/ekow/akira/config.h b/keyboards/ekow/akira/config.h
index 678827543f..7d6df19f50 100644
--- a/keyboards/ekow/akira/config.h
+++ b/keyboards/ekow/akira/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B59 // KY
-#define PRODUCT_ID 0x414B // AK
-#define DEVICE_VER 0x0000
-#define MANUFACTURER Keeboyzlab
-#define PRODUCT AKIRA
-
// key matrix size
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/ekow/akira/info.json b/keyboards/ekow/akira/info.json
index b6ebf9b8a2..1beb48e899 100644
--- a/keyboards/ekow/akira/info.json
+++ b/keyboards/ekow/akira/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "KEYBOYZLAB:AKIRA",
+ "keyboard_name": "AKIRA",
+ "manufacturer": "Keeboyzlab",
"maintainer": "eugenepy",
"url": "http://github.com/EugenePY",
+ "usb": {
+ "vid": "0x4B59",
+ "pid": "0x414B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_hhkb": {
"layout": [
diff --git a/keyboards/ekow/akira/readme.md b/keyboards/ekow/akira/readme.md
index e1a0c90366..62ec95acf4 100644
--- a/keyboards/ekow/akira/readme.md
+++ b/keyboards/ekow/akira/readme.md
@@ -20,5 +20,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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 Buttom on the back of the PCB, the board will enter the dfu-mode, no extra pads need to short.
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/elephant42/config.h b/keyboards/elephant42/config.h
new file mode 100644
index 0000000000..26d9daba4e
--- /dev/null
+++ b/keyboards/elephant42/config.h
@@ -0,0 +1,85 @@
+/*
+Copyright 2021 illness072
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 8
+#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 }
+#define MATRIX_COL_PINS \
+ { F4, F5, F6, F7, B1, B3 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define SOFT_SERIAL_PIN D2
+
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+# define RGBLED_SPLIT { 27, 27 }
+# define RGBLED_NUM 54 // backlight x42 + underglow x12
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 170 /* The maximum brightness level */
+# 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
+
+#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 RGBLIGHT_LIMIT_VAL
+# define RGB_MATRIX_HUE_STEP RGBLIGHT_HUE_STEP
+# define RGB_MATRIX_SAT_STEP RGBLIGHT_SAT_STEP
+# define RGB_MATRIX_VAL_STEP RGBLIGHT_VAL_STEP
+# define RGB_MATRIX_SPD_STEP 8
+#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
+
+#ifndef OLED_FONT_H
+# define OLED_FONT_H "keyboards/elephant42/lib/glcdfont.c"
+#endif
diff --git a/keyboards/elephant42/elephant42.c b/keyboards/elephant42/elephant42.c
new file mode 100644
index 0000000000..a459442231
--- /dev/null
+++ b/keyboards/elephant42/elephant42.c
@@ -0,0 +1,66 @@
+/* Copyright 2021 illness072
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "elephant42.h"
+
+#if defined(RGB_MATRIX_ENABLE)
+led_config_t g_led_config = {
+ { // keymap to LED number
+ // left
+ { 19, 18, 13, 12, 7, 6}, // R3
+ { 20, 17, 14, 11, 8, 5}, // R2
+ {NO_LED, 16, 15, 10, 9, 4}, // R1
+ {NO_LED, NO_LED, 0, 1, 2, 3}, // R0
+ // right
+ { 46, 45, 40, 39, 34, 33}, // R3
+ { 47, 44, 41, 38, 35, 32}, // R2
+ {NO_LED, 43, 42, 37, 36, 31}, // R1
+ {NO_LED, NO_LED, 27, 28, 29, 30}, // R0
+ },
+ {// phisical LED position, {x, y} : x = 0..224, y = 0..64
+ // left-bg [LED_01-21]
+ {56, 65}, {77, 68}, {95, 79}, {109, 91},
+ {87, 46}, {87, 29}, {87, 12}, { 69, 43}, { 69, 26}, { 69, 8},
+ {52, 35}, {52, 17}, {52, 0}, { 35, 4}, { 35, 21}, { 35, 38},
+ {17, 54}, {17, 36}, {17, 19}, { 0, 26}, { 0, 43},
+ // left-ug [LED_22-27]
+ {25, 49}, {26, 19}, {60, 14}, {106, 33}, {107, 72}, { 70, 66},
+ // right-bg [LED_28-48]
+ {199, 65}, {179, 68}, {160, 79}, {146, 91},
+ {168, 46}, {168, 29}, {168, 12}, {186, 43}, {186, 26}, {186, 8},
+ {203, 35}, {203, 17}, {203, 0}, {220, 4}, {220, 21}, {220, 38},
+ {238, 54}, {238, 36}, {238, 19}, {255, 26}, {255, 43},
+ // right-ug [LED_49-54]
+ {230, 49}, {230, 19}, {195, 14}, {149, 33}, {148, 72}, {185, 66},
+ },
+ {// LED Index to Flag
+ // Left-bg [LED_01-21]
+ 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,
+ // left-ug [LED_22-27]
+ LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW,
+ // right-bg [LED_28-48]
+ 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,
+ // right-ug [LED_49-54]
+ LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW, LED_FLAG_UNDERGLOW
+ }
+};
+#endif
diff --git a/keyboards/elephant42/elephant42.h b/keyboards/elephant42/elephant42.h
new file mode 100644
index 0000000000..ad79c1e1fc
--- /dev/null
+++ b/keyboards/elephant42/elephant42.h
@@ -0,0 +1,35 @@
+/* Copyright 2021 illness072
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, R00, R01, R02, R03, R04, R05, \
+ L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
+ L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, \
+ L30, L31, L32, L33, R30, R31, R32, R33 \
+) { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { KC_NO, L21, L22, L23, L24, L25 }, \
+ { KC_NO, KC_NO, L30, L31, L32, L33 }, \
+ { R05, R04, R03, R02, R01, R00 }, \
+ { R15, R14, R13, R12, R11, R10 }, \
+ { KC_NO, R24, R23, R22, R21, R20 }, \
+ { KC_NO, KC_NO, R33, R32, R31, R30 } \
+}
diff --git a/keyboards/elephant42/info.json b/keyboards/elephant42/info.json
new file mode 100644
index 0000000000..cbc7b78378
--- /dev/null
+++ b/keyboards/elephant42/info.json
@@ -0,0 +1,66 @@
+{
+ "keyboard_name": "elephant42",
+ "manufacturer": "illness072",
+ "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/elephant42",
+ "maintainer": "illness072",
+ "usb": {
+ "vid": "0x4649",
+ "pid": "0x0721",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Tab", "x":0, "y":1.6},
+ {"label":"Q", "x":1, "y":1.1},
+ {"label":"W", "x":2, "y":0.3},
+ {"label":"E", "x":3, "y":0},
+ {"label":"R", "x":4, "y":0.6},
+ {"label":"T", "x":5, "y":0.8},
+
+ {"label":"Y", "x":10.5, "y":0.8},
+ {"label":"U", "x":11.5, "y":0.6},
+ {"label":"I", "x":12.5, "y":0},
+ {"label":"O", "x":13.5, "y":0.3},
+ {"label":"P", "x":14.5, "y":1.1},
+ {"label":"\\", "x":15.5, "y":1.6},
+
+ {"label":"Ctrl", "x":0, "y":2.6},
+ {"label":"A", "x":1, "y":2.1},
+ {"label":"S", "x":2, "y":1.3},
+ {"label":"D", "x":3, "y":1},
+ {"label":"F", "x":4, "y":1.6},
+ {"label":"G", "x":5, "y":1.8},
+
+ {"label":"H", "x":10.5, "y":1.8},
+ {"label":"J", "x":11.5, "y":1.6},
+ {"label":"K", "x":12.5, "y":1},
+ {"label":"L", "x":13.5, "y":1.3},
+ {"label":":", "x":14.5, "y":2.1},
+ {"label":"\"", "x":15.5, "y":2.6},
+
+ {"label":"Z", "x":1, "y":3.1},
+ {"label":"X", "x":2, "y":2.3},
+ {"label":"C", "x":3, "y":2},
+ {"label":"V", "x":4, "y":2.6},
+ {"label":"B", "x":5, "y":2.8},
+
+ {"label":"N", "x":10.5, "y":2.8},
+ {"label":"M", "x":11.5, "y":2.6},
+ {"label":"<", "x":12.5, "y":2},
+ {"label":">", "x":13.5, "y":2.3},
+ {"label":"?", "x":14.5, "y":3.1},
+
+ {"label":"Alt", "x":3.5, "y":4.0},
+ {"label":"Cmd", "x":4.5, "y":4.0},
+ {"label":"Lower", "x":5.5, "y":4.0},
+ {"label":"Shift", "x":6.5, "y":4.0},
+
+ {"label":"Del", "x":9.25, "y":4.0},
+ {"label":"Raise", "x":10.25, "y":4.0},
+ {"label":"Enter", "x":11.25, "y":4.0},
+ {"label":"Backspace", "x":12.25, "y":4.0}
+ ]
+ }
+ }
+}
diff --git a/keyboards/elephant42/keymaps/default/keymap.c b/keyboards/elephant42/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e0235d75bb
--- /dev/null
+++ b/keyboards/elephant42/keymaps/default/keymap.c
@@ -0,0 +1,114 @@
+/* Copyright 2021 illness072
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 KC_VU KC_AUDIO_VOL_UP
+#define KC_VD KC_AUDIO_VOL_DOWN
+#define KC_MU KC_AUDIO_MUTE
+#define KC_LSPC LT(_LOWER, KC_SPC)
+#define KC_RSPC LT(_RAISE, KC_SPC)
+
+enum layer_names {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+
+ NUMBER_OF_LAYERS
+};
+
+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_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_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,
+ // `-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------'
+ KC_LALT,KC_LCMD,KC_LSPC,KC_LSFT, KC_DEL ,KC_RSPC,KC_ENT ,KC_BSPC
+ // `-------+-------+-------+-------' `-------+-------+-------+-------'
+ ),
+
+ [_LOWER] = LAYOUT(
+ //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------.
+ KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_TILD,
+ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
+ KC_LCTL,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_MINS,KC_PLUS,KC_GRV,
+ //`-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
+ XXXXXXX,XXXXXXX,KC_LCBR,KC_LBRC,KC_LPRN, KC_RPRN,KC_RBRC,KC_RCBR,KC_UNDS,KC_EQL ,
+ // `-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------'
+ KC_LALT,KC_LCMD,KC_LSPC,KC_LSFT, KC_DEL ,KC_RSPC,KC_ENT ,KC_BSPC
+ // `-------+-------+-------+-------' `-------+-------+-------+-------'
+ ),
+
+ [_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_LCTL, KC_VD , KC_VU , KC_MU ,RGB_HUI,RGB_VAI, KC_LEFT,KC_DOWN, KC_UP ,KC_RGHT,XXXXXXX,KC_F12 ,
+ //`-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------'
+ KC_BRMD,KC_BRMU,RGB_TOG,RGB_MOD,RGB_VAD, KC_HOME,KC_PGDN,KC_PGUP,KC_END ,XXXXXXX,
+ // `-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------'
+ KC_LALT,KC_LCMD,KC_LSPC,KC_LSFT, KC_DEL ,KC_RSPC,KC_ENT ,KC_BSPC
+ // `-------+-------+-------+-------' `-------+-------+-------+-------'
+ )
+};
+
+
+#ifdef OLED_ENABLE
+# define STEPS 32
+
+uint8_t keypresses = 0;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ keypresses = (keypresses + 1) % STEPS;
+ }
+ return true;
+}
+
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
+ static char layer_names[NUMBER_OF_LAYERS][10] = {"Default", "Lower", "Raise"};
+ static char l1[] = " \x94\x95\x96\x97";
+ static char l2[] = " \xB4\xB5\xB6\xB7";
+ static char r1[] = " \x98\x99\x9A\x9B";
+ static char r2[] = " \xB8\xB9\xBA\xBB";
+ int iconShift = keypresses % STEPS;
+ if (iconShift > STEPS / 2) {
+ iconShift = STEPS - iconShift;
+ }
+ bool goingLeft = keypresses < STEPS / 2;
+
+ oled_write_P(PSTR("Layer: "), false);
+ oled_write_ln(layer_names[get_highest_layer(layer_state)], false);
+ oled_advance_page(true);
+ oled_write_ln((goingLeft ? l1 : r1) + iconShift, false);
+ oled_write_ln((goingLeft ? l2 : r2) + iconShift, false);
+ } else {
+ oled_advance_page(true);
+ static const char PROGMEM logo[] = {
+ 0x8f,0x90,0x91,0x92,0x93,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x0a,
+ 0xaf,0xb0,0xb1,0xb2,0xb3,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0x0a,
+ 0xcf,0xd0,0xd1,0xd2,0xd3,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0
+ };
+
+ oled_write_ln_P(logo, false);
+ }
+
+ return false;
+}
+#endif
diff --git a/keyboards/elephant42/keymaps/default/readme.md b/keyboards/elephant42/keymaps/default/readme.md
new file mode 100644
index 0000000000..632fe222b0
--- /dev/null
+++ b/keyboards/elephant42/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for elephant42
diff --git a/keyboards/elephant42/keymaps/via/keymap.c b/keyboards/elephant42/keymaps/via/keymap.c
new file mode 100644
index 0000000000..4ecf5d86ab
--- /dev/null
+++ b/keyboards/elephant42/keymaps/via/keymap.c
@@ -0,0 +1,127 @@
+/* Copyright 2021 illness072
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 KC_VU KC_AUDIO_VOL_UP
+#define KC_VD KC_AUDIO_VOL_DOWN
+#define KC_MU KC_AUDIO_MUTE
+#define KC_LSPC LT(_LOWER, KC_SPC)
+#define KC_RSPC LT(_RAISE, KC_SPC)
+
+enum layer_names {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+
+ NUMBER_OF_LAYERS
+};
+
+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_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_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,
+ // `-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------'
+ KC_LALT,KC_LCMD,KC_LSPC,KC_LSFT, KC_DEL ,KC_RSPC,KC_ENT ,KC_BSPC
+ // `-------+-------+-------+-------' `-------+-------+-------+-------'
+ ),
+
+ [_LOWER] = LAYOUT(
+ //,-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------.
+ KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_TILD,
+ //|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
+ KC_LCTL,KC_EXLM,KC_AT ,KC_HASH,KC_DLR ,KC_PERC, KC_CIRC,KC_AMPR,KC_ASTR,KC_MINS,KC_PLUS,KC_GRV,
+ //`-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
+ XXXXXXX,XXXXXXX,KC_LCBR,KC_LBRC,KC_LPRN, KC_RPRN,KC_RBRC,KC_RCBR,KC_UNDS,KC_EQL ,
+ // `-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------'
+ KC_LALT,KC_LCMD,KC_LSPC,KC_LSFT, KC_DEL ,KC_RSPC,KC_ENT ,KC_BSPC
+ // `-------+-------+-------+-------' `-------+-------+-------+-------'
+ ),
+
+ [_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_LCTL, KC_VD , KC_VU , KC_MU ,RGB_HUI,RGB_VAI, KC_LEFT,KC_DOWN, KC_UP ,KC_RGHT,XXXXXXX,KC_F12 ,
+ //`-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------'
+ KC_BRMD,KC_BRMU,RGB_TOG,RGB_MOD,RGB_VAD, KC_HOME,KC_PGDN,KC_PGUP,KC_END ,XXXXXXX,
+ // `-------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------'
+ KC_LALT,KC_LCMD,KC_LSPC,KC_LSFT, KC_DEL ,KC_RSPC,KC_ENT ,KC_BSPC
+ // `-------+-------+-------+-------' `-------+-------+-------+-------'
+ ),
+
+ [_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
+ // `-------+-------+-------+-------' `-------+-------+-------+-------'
+ )
+};
+
+
+#ifdef OLED_ENABLE
+# define STEPS 32
+
+uint8_t keypresses = 0;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ keypresses = (keypresses + 1) % STEPS;
+ }
+ return true;
+}
+
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
+ static char layer_names[NUMBER_OF_LAYERS][10] = {"Default", "Lower", "Raise", "Adjust"};
+ static char l1[] = " \x94\x95\x96\x97";
+ static char l2[] = " \xB4\xB5\xB6\xB7";
+ static char r1[] = " \x98\x99\x9A\x9B";
+ static char r2[] = " \xB8\xB9\xBA\xBB";
+ int iconShift = keypresses % STEPS;
+ if (iconShift > STEPS / 2) {
+ iconShift = STEPS - iconShift;
+ }
+ bool goingLeft = keypresses < STEPS / 2;
+
+ oled_write_P(PSTR("Layer: "), false);
+ oled_write_ln(layer_names[get_highest_layer(layer_state)], false);
+ oled_advance_page(true);
+ oled_write_ln((goingLeft ? l1 : r1) + iconShift, false);
+ oled_write_ln((goingLeft ? l2 : r2) + iconShift, false);
+ } else {
+ oled_advance_page(true);
+ static const char PROGMEM logo[] = {
+ 0x8f,0x90,0x91,0x92,0x93,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x0a,
+ 0xaf,0xb0,0xb1,0xb2,0xb3,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0x0a,
+ 0xcf,0xd0,0xd1,0xd2,0xd3,0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0
+ };
+
+ oled_write_ln_P(logo, false);
+ }
+
+ return false;
+}
+#endif
diff --git a/keyboards/elephant42/keymaps/via/readme.md b/keyboards/elephant42/keymaps/via/readme.md
new file mode 100644
index 0000000000..4457bf9f46
--- /dev/null
+++ b/keyboards/elephant42/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The keymap with VIA support for elephant42
diff --git a/keyboards/elephant42/keymaps/via/rules.mk b/keyboards/elephant42/keymaps/via/rules.mk
new file mode 100644
index 0000000000..237172cc8b
--- /dev/null
+++ b/keyboards/elephant42/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+RGBLIGHT_ENABLE = yes
+RGB_MATRIX_ENABLE = no
diff --git a/keyboards/elephant42/lib/glcdfont.c b/keyboards/elephant42/lib/glcdfont.c
new file mode 100755
index 0000000000..31372e85d7
--- /dev/null
+++ b/keyboards/elephant42/lib/glcdfont.c
@@ -0,0 +1,233 @@
+// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
+// See gfxfont.h for newer custom bitmap font info.
+
+#pragma once
+
+#include "progmem.h"
+
+static 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,
+ 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, 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,
+ 0xE0, 0xE0, 0xE0, 0xE0, 0xE1, 0xE0,
+ 0xE0, 0xE0, 0xE0, 0xE1, 0xE0, 0xE0,
+ 0xE0, 0xE0, 0x01, 0xF0, 0xF0, 0xF0,
+ 0xF0, 0xF1, 0x00, 0x00, 0x00, 0xC0,
+ 0xF1, 0xF0, 0xF0, 0xE0, 0x60, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0xC0, 0xC0, 0xE0,
+ 0xE0, 0xE1, 0x00, 0x00, 0x00, 0x00,
+ 0xF1, 0xF0, 0xF0, 0xF0, 0xF0, 0x01,
+ 0xE0, 0xE0, 0xE0, 0xE0, 0xE1, 0xE0,
+ 0xE0, 0xE0, 0xE0, 0xE1, 0xE0, 0xE0,
+ 0xE0, 0xE0, 0x01, 0xF0, 0xF0, 0xF0,
+ 0xF0, 0xF1, 0x00, 0x00, 0x00, 0xE0,
+ 0xE1, 0xE0, 0xE0, 0xE0, 0x00, 0x01,
+ 0x80, 0x80, 0xFC, 0xF8, 0xB0, 0xE0,
+ 0xC0, 0x80, 0x00, 0x00, 0x00, 0x03,
+ 0x03, 0x03, 0x07, 0x07, 0x0F, 0x9E,
+ 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0x70,
+ 0x60, 0xC0, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x80, 0xE0, 0xF0, 0xF8, 0xFC,
+ 0xFE, 0xFE, 0xF3, 0xFF, 0xFF, 0x87,
+ 0x7F, 0x7F, 0xBE, 0xDD, 0xE3, 0xFF,
+ 0xFE, 0xFE, 0xFC, 0xF8, 0xF0, 0xC0,
+ 0xC0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFE,
+ 0xFF, 0xE3, 0xDD, 0xBE, 0x7F, 0x7F,
+ 0x87, 0xFF, 0xFF, 0xF3, 0xFE, 0xFE,
+ 0xFC, 0xF8, 0xF0, 0xE0, 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,
+ 0x07, 0x07, 0x07, 0x07, 0xE7, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x07, 0x07,
+ 0x07, 0x07, 0x00, 0x0F, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xF8, 0x80, 0x1C, 0x1F,
+ 0x3F, 0x3F, 0x3F, 0x03, 0x00, 0x00,
+ 0x0E, 0x1E, 0x3F, 0x3F, 0x7C, 0x78,
+ 0x78, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x0F, 0x3F, 0xFF,
+ 0xFF, 0xFF, 0xFC, 0xF0, 0xC0, 0xC0,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
+ 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xE7, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x00, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x7E, 0x7E, 0x7E, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFD, 0xF9, 0x77, 0xE7, 0xC1, 0x8D,
+ 0xDD, 0xF9, 0x71, 0x00, 0x00, 0x6C,
+ 0x6C, 0xEC, 0xFC, 0xFC, 0xFE, 0xFF,
+ 0xFF, 0xE7, 0xDB, 0xBB, 0x7B, 0x7B,
+ 0x7F, 0xBF, 0xDF, 0x00, 0x00, 0x00,
+ 0xFC, 0xFF, 0x1F, 0x07, 0x03, 0x01,
+ 0x01, 0x03, 0x03, 0x07, 0xFF, 0xFF,
+ 0x1F, 0xFF, 0xFF, 0x3F, 0x1F, 0x1F,
+ 0x3F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x3F,
+ 0x1F, 0x1F, 0x3F, 0xFF, 0xFF, 0x1F,
+ 0xFF, 0xFF, 0x07, 0x03, 0x03, 0x01,
+ 0x01, 0x03, 0x07, 0x1F, 0xFF, 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, 0x07, 0x87, 0x07,
+ 0x07, 0x07, 0x01, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x07,
+ 0x0F, 0x8F, 0x0F, 0x0F, 0x0C, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x87, 0x07,
+ 0x07, 0x0F, 0x0F, 0x8F, 0x0F, 0x0F,
+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+ 0x01, 0x83, 0x07, 0x0F, 0x0F, 0x0F,
+ 0x8F, 0x0F, 0x0F, 0x0F, 0x0F, 0x80,
+ 0x00, 0x00, 0x03, 0x0F, 0x8F, 0x0F,
+ 0x0F, 0x0F, 0x0C, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x0F, 0x0F, 0x0F,
+ 0x0F, 0x8F, 0x00, 0x00, 0x00, 0x07,
+ 0x87, 0x07, 0x07, 0x07, 0x00, 0x80,
+ 0x7D, 0x55, 0x28, 0x28, 0x29, 0x01,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0xD8,
+ 0xD8, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F,
+ 0x0F, 0x07, 0x01, 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, 0x00, 0x00, 0x00, 0x00,
+};
diff --git a/keyboards/elephant42/readme.md b/keyboards/elephant42/readme.md
new file mode 100644
index 0000000000..e6ceb5b17f
--- /dev/null
+++ b/keyboards/elephant42/readme.md
@@ -0,0 +1,27 @@
+# elephant42
+
+[![elephant42](https://i.imgur.com/rgvNteb.jpg)](https://i.imgur.com/rgvNteb.jpg)
+
+A split keyboard with 3x5+2 vertically staggered keys and 4 thumb keys.
+
+* Keyboard Maintainer: [illness072](https://github.com/illness072), [Twitter](https://twitter.com/illness072)
+* Hardware Supported: elephant42 PCB, ProMicro
+* Hardware Availability: [https://illness072.booth.pm/](https://illness072.booth.pm/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make elephant42:default
+
+Flashing example for this keyboard:
+
+ make elephant42: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 `QK_BOOT` if it is available
diff --git a/keyboards/elephant42/rules.mk b/keyboards/elephant42/rules.mk
new file mode 100644
index 0000000000..642314b9c2
--- /dev/null
+++ b/keyboards/elephant42/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 = no # 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
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes
+OLED_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/emajesty/eiri/config.h b/keyboards/emajesty/eiri/config.h
index 99b606770d..fb8f2d357d 100644
--- a/keyboards/emajesty/eiri/config.h
+++ b/keyboards/emajesty/eiri/config.h
@@ -19,13 +19,6 @@ 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 0x9372
-#define DEVICE_VER 0x0001
-#define MANUFACTURER EMajesty
-#define PRODUCT eiri
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4, B5, B2, B6 }
#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/emajesty/eiri/info.json b/keyboards/emajesty/eiri/info.json
index 2816dba4c7..b271741880 100644
--- a/keyboards/emajesty/eiri/info.json
+++ b/keyboards/emajesty/eiri/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "eiri",
+ "manufacturer": "EMajesty",
"url": "https://github.com/EMajesty/eiri",
"maintainer": "EMajesty",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x9372",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/emery65/config.h b/keyboards/emery65/config.h
index cbe31b75da..dfbd4db1ac 100644
--- a/keyboards/emery65/config.h
+++ b/keyboards/emery65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4536
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT Emery65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -39,7 +32,7 @@ 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
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* Indicator LEDs */
diff --git a/keyboards/emery65/info.json b/keyboards/emery65/info.json
index 9d8058e831..aba9820928 100644
--- a/keyboards/emery65/info.json
+++ b/keyboards/emery65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Emery65",
+ "manufacturer": "Yiancar-Designs",
"url": "https://yiancar-designs.com",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4536",
+ "device_version": "0.0.1"
+ },
"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":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/emi20/config.h b/keyboards/emi20/config.h
index 98eefdc6ad..6bd6981274 100644
--- a/keyboards/emi20/config.h
+++ b/keyboards/emi20/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Aquacylinder
-#define PRODUCT emi20
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F4, F5, F6, F7, B6 }
#define MATRIX_COL_PINS { C7, C6, B5, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/emi20/info.json b/keyboards/emi20/info.json
index 408c30d04b..79f5359e01 100644
--- a/keyboards/emi20/info.json
+++ b/keyboards/emi20/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Emi20",
+ "manufacturer": "Aquacylinder",
"url": "",
"maintainer": "Aquacylinder",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [
diff --git a/keyboards/emptystring/NQG/config.h b/keyboards/emptystring/NQG/config.h
index 9598707240..66abf55834 100644
--- a/keyboards/emptystring/NQG/config.h
+++ b/keyboards/emptystring/NQG/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0076
-#define PRODUCT_ID 0x0037
-#define DEVICE_VER 0x0100
-#define MANUFACTURER emptystring
-#define PRODUCT NQG
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
diff --git a/keyboards/emptystring/NQG/info.json b/keyboards/emptystring/NQG/info.json
index 14191209d6..6ccbc01370 100644
--- a/keyboards/emptystring/NQG/info.json
+++ b/keyboards/emptystring/NQG/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "NQG (Not Quite Gherkin)",
+ "keyboard_name": "NQG",
+ "manufacturer": "emptystring",
"url": "",
"maintainer": "culturalsnow",
+ "usb": {
+ "vid": "0x0076",
+ "pid": "0x0037",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/eniigmakeyboards/ek60/config.h b/keyboards/eniigmakeyboards/ek60/config.h
index 2565375010..75cadda935 100644
--- a/keyboards/eniigmakeyboards/ek60/config.h
+++ b/keyboards/eniigmakeyboards/ek60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x454B
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Eniigma Keyboards
-#define PRODUCT ek60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { B2, B1, B0, F0, B4 }
#define MATRIX_COL_PINS { F7, C6, F6, B6, F5, F4, B5, F1, E6, D0, D7, D5, D1, D3, D2 }
-#define UNUSED_PINS { B3, B7, C7, D4, D6 }
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/eniigmakeyboards/ek60/info.json b/keyboards/eniigmakeyboards/ek60/info.json
index 37bb01b0be..d2875196ba 100644
--- a/keyboards/eniigmakeyboards/ek60/info.json
+++ b/keyboards/eniigmakeyboards/ek60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ek60",
+ "keyboard_name": "EK60",
+ "manufacturer": "Eniigma Keyboards",
"url": "",
"maintainer": "adamws",
+ "usb": {
+ "vid": "0x454B",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout":[
diff --git a/keyboards/eniigmakeyboards/ek65/config.h b/keyboards/eniigmakeyboards/ek65/config.h
index 7a272c1491..a3872f02f2 100644
--- a/keyboards/eniigmakeyboards/ek65/config.h
+++ b/keyboards/eniigmakeyboards/ek65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x454B
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Eniigma Keyboards
-#define PRODUCT ek65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, E6, B2, B1, B0 }
-#define UNUSED_PINS { B3, B7, D4, D6 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/eniigmakeyboards/ek65/info.json b/keyboards/eniigmakeyboards/ek65/info.json
index 361a444128..a957ae1512 100644
--- a/keyboards/eniigmakeyboards/ek65/info.json
+++ b/keyboards/eniigmakeyboards/ek65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ek65",
+ "keyboard_name": "EK65",
+ "manufacturer": "Eniigma Keyboards",
"url": "",
"maintainer": "adamws",
+ "usb": {
+ "vid": "0x454B",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout":[
diff --git a/keyboards/eniigmakeyboards/ek87/config.h b/keyboards/eniigmakeyboards/ek87/config.h
index 838f46f844..133738e460 100644
--- a/keyboards/eniigmakeyboards/ek87/config.h
+++ b/keyboards/eniigmakeyboards/ek87/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x454B
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Eniigma Keyboards
-#define PRODUCT Eniigma Keyboards ek87
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, D0 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, F0, F1, E6, D3, D2, D1 }
-#define UNUSED_PINS { D5 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/eniigmakeyboards/ek87/info.json b/keyboards/eniigmakeyboards/ek87/info.json
index 6f934e75a8..c05ca3bcd9 100644
--- a/keyboards/eniigmakeyboards/ek87/info.json
+++ b/keyboards/eniigmakeyboards/ek87/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ek87",
+ "keyboard_name": "EK87",
+ "manufacturer": "Eniigma Keyboards",
"url": "",
"maintainer": "adamws",
+ "usb": {
+ "vid": "0x454B",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout":[
diff --git a/keyboards/ep/40/config.h b/keyboards/ep/40/config.h
index 780d64fd69..fb67f5509c 100644
--- a/keyboards/ep/40/config.h
+++ b/keyboards/ep/40/config.h
@@ -19,13 +19,6 @@ 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 0x4040
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Elliot Powell
-#define PRODUCT ep40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/ep/40/info.json b/keyboards/ep/40/info.json
index 58e76c608c..3c482198d5 100644
--- a/keyboards/ep/40/info.json
+++ b/keyboards/ep/40/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name":"ep40",
+ "manufacturer": "Elliot Powell",
"maintainer":"e11i0t23",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x4040",
+ "device_version": "0.0.1"
+ },
"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":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, "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, "w":1.25}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3, "w":2.25}, {"x":5.25, "y":3, "w":2.75}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}]
diff --git a/keyboards/ep/96/config.h b/keyboards/ep/96/config.h
index bcb1074867..a7d9d1a91b 100644
--- a/keyboards/ep/96/config.h
+++ b/keyboards/ep/96/config.h
@@ -19,13 +19,6 @@ 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 0x9696
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Elliot Powell
-#define PRODUCT ep96
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 19
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B3, B2, B7, C6 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C7, F7, F6, F5, F4, F1, F0, E6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ep/96/info.json b/keyboards/ep/96/info.json
index 6f216064eb..8f964f670c 100644
--- a/keyboards/ep/96/info.json
+++ b/keyboards/ep/96/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "ep96",
+ "manufacturer": "Elliot Powell",
"maintainer": "e11i0t23",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x9696",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ep/comsn/hs68/config.h b/keyboards/ep/comsn/hs68/config.h
index e26f07044c..7998faf673 100644
--- a/keyboards/ep/comsn/hs68/config.h
+++ b/keyboards/ep/comsn/hs68/config.h
@@ -19,13 +19,6 @@ 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 0x6868
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Elliot Powell
-#define PRODUCT ephs68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B6, B5, B4, D0, F6 }
#define MATRIX_COL_PINS \
{ B0, B1, B3, B2, B7, D3, F1, D5, D6, D7, F4, F5, C7, C6, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ep/comsn/hs68/info.json b/keyboards/ep/comsn/hs68/info.json
index 8463ce491b..631afb029b 100644
--- a/keyboards/ep/comsn/hs68/info.json
+++ b/keyboards/ep/comsn/hs68/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "EPHS68",
+ "manufacturer": "Elliot Powell",
"maintainer": "Elliot Powell (u/e11i0t23)",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6868",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ep/comsn/mollydooker/config.h b/keyboards/ep/comsn/mollydooker/config.h
index def201cd8b..416f3b5477 100644
--- a/keyboards/ep/comsn/mollydooker/config.h
+++ b/keyboards/ep/comsn/mollydooker/config.h
@@ -19,13 +19,6 @@ 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 0x9696
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Elliot Powell
-#define PRODUCT mollydooker
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 19
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ F4, F5, F6, F7, D2 }
#define MATRIX_COL_PINS \
{ B1, B2, B3, E6, B7, F1, F0, D0, D1, D7, D5, D4, D6, B4, B5, D3, B6, C6, C7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ep/comsn/mollydooker/info.json b/keyboards/ep/comsn/mollydooker/info.json
index 611efe6c64..58d7bb288c 100644
--- a/keyboards/ep/comsn/mollydooker/info.json
+++ b/keyboards/ep/comsn/mollydooker/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "mollydooker",
+ "manufacturer": "Elliot Powell",
"maintainer": "Elliot Powell (u/e11i0t23)",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x9696",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ep/comsn/tf_longeboye/config.h b/keyboards/ep/comsn/tf_longeboye/config.h
index f02d560330..964705bff3 100644
--- a/keyboards/ep/comsn/tf_longeboye/config.h
+++ b/keyboards/ep/comsn/tf_longeboye/config.h
@@ -19,13 +19,6 @@ 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 0x9696
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Elliot Powell
-#define PRODUCT TF Longeboye
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B5, B4, D1, D2, D3 }
#define MATRIX_COL_PINS \
{ F4, F5, F6, F7, B1, B3, B2, B6, F0, F1, C7, D5, B7, E6, D7, C6, D4, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ep/comsn/tf_longeboye/info.json b/keyboards/ep/comsn/tf_longeboye/info.json
index e6992f4481..3fa58d61c1 100644
--- a/keyboards/ep/comsn/tf_longeboye/info.json
+++ b/keyboards/ep/comsn/tf_longeboye/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "tf_longeboye",
+ "keyboard_name": "TF Longeboye",
+ "manufacturer": "Elliot Powell",
"maintainer": "Elliot Powell (u/e11i0t23)",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x9696",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/epoch80/config.h b/keyboards/epoch80/config.h
index ba79c4c26c..7c1e66ddc0 100644
--- a/keyboards/epoch80/config.h
+++ b/keyboards/epoch80/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6463
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER caryworks
-#define PRODUCT epoch80
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { D1, D0, B3, B0, B2, B1 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D6, D2, D3, D5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/epoch80/info.json b/keyboards/epoch80/info.json
index 97a23cac6d..f3e74171c0 100644
--- a/keyboards/epoch80/info.json
+++ b/keyboards/epoch80/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "epoch80",
+ "manufacturer": "caryworks",
"url": "https://kbdfans.com/collections/80-diy-kit/products/coming-soon-epoch-80-mechanical-keyboard",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0x6463",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ergodox_ez/base/info.json b/keyboards/ergodox_ez/base/info.json
new file mode 100644
index 0000000000..be1433ccba
--- /dev/null
+++ b/keyboards/ergodox_ez/base/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "ErgoDox EZ",
+ "usb": {
+ "pid": "0x4974"
+ }
+}
diff --git a/keyboards/ergodox_ez/base/rules.mk b/keyboards/ergodox_ez/base/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/ergodox_ez/base/rules.mk
diff --git a/keyboards/ergodox_ez/config.h b/keyboards/ergodox_ez/config.h
index f25ff162cd..8a3f4eb7dc 100644
--- a/keyboards/ergodox_ez/config.h
+++ b/keyboards/ergodox_ez/config.h
@@ -22,13 +22,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3297
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ZSA Technology Labs
-#define PRODUCT_ID 0x4974
-#define PRODUCT ErgoDox EZ
-
/* key matrix size */
#define MATRIX_ROWS 14
#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2)
diff --git a/keyboards/ergodox_ez/glow/config.h b/keyboards/ergodox_ez/glow/config.h
deleted file mode 100644
index 674b7bffb0..0000000000
--- a/keyboards/ergodox_ez/glow/config.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
-Copyright 2015 ZSA Technology Labs Inc (@zsa)
-Copyright 2020 Christopher Courtney <drashna@live.com> (@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
-
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x4976
-#undef PRODUCT
-#define PRODUCT ErgoDox EZ Glow
diff --git a/keyboards/ergodox_ez/glow/info.json b/keyboards/ergodox_ez/glow/info.json
new file mode 100644
index 0000000000..dcbb1999ca
--- /dev/null
+++ b/keyboards/ergodox_ez/glow/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "ErgoDox EZ Glow",
+ "usb": {
+ "pid": "0x4976"
+ }
+}
diff --git a/keyboards/ergodox_ez/info.json b/keyboards/ergodox_ez/info.json
index 1682f4bb45..46a0fbbacd 100644
--- a/keyboards/ergodox_ez/info.json
+++ b/keyboards/ergodox_ez/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "ErgoDox EZ",
+ "manufacturer": "ZSA Technology Labs",
"url": "ergodox-ez.com",
"maintainer": "ZSA via Drashna",
+ "usb": {
+ "vid": "0x3297",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ergodox": {
"layout": [
diff --git a/keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c b/keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c
index a5b107baae..91798ab188 100755
--- a/keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/bepo_tm_style/keymap.c
@@ -190,7 +190,7 @@ static bool is_macro1_recording = false;
// The current set of active layers (as a bitmask).
// There is a global 'layer_state' variable but it is set after the call
// to layer_state_set_user().
-static uint32_t current_layer_state = 0;
+static layer_state_t current_layer_state = 0;
layer_state_t layer_state_set_user(layer_state_t state);
// Method called at the end of the tap dance on the TAP_MACRO key. That key is
diff --git a/keyboards/ergodox_ez/keymaps/blakedietz/keymap.c b/keyboards/ergodox_ez/keymaps/blakedietz/keymap.c
index 5c08d30727..67c50eb129 100644
--- a/keyboards/ergodox_ez/keymaps/blakedietz/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/blakedietz/keymap.c
@@ -200,7 +200,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
@@ -262,4 +262,3 @@ void matrix_scan_user(void) {
// }
// return true;
//}
-
diff --git a/keyboards/ergodox_ez/keymaps/bpruitt-goddard/keymap.c b/keyboards/ergodox_ez/keymaps/bpruitt-goddard/keymap.c
index 229ece0d74..eff7f111b4 100644
--- a/keyboards/ergodox_ez/keymaps/bpruitt-goddard/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/bpruitt-goddard/keymap.c
@@ -98,7 +98,7 @@ static bool is_macro1_recording = false;
// The current set of active layers (as a bitmask).
// There is a global 'layer_state' variable but it is set after the call
// to layer_state_set_user().
-static uint32_t current_layer_state = 0;
+static layer_state_t current_layer_state = 0;
layer_state_t layer_state_set_user(layer_state_t state);
// Method called at the end of the tap dance on the TAP_MACRO key. That key is
diff --git a/keyboards/ergodox_ez/keymaps/danielo515/keymap.c b/keyboards/ergodox_ez/keymaps/danielo515/keymap.c
index ee8c321352..68ddeedc22 100644
--- a/keyboards/ergodox_ez/keymaps/danielo515/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/danielo515/keymap.c
@@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_AMPR ,KC_LPRN ,KC_RPRN ,CLN_EQ ,KC_KP_PLUS ,KC_PIPE ,
LALT(LSFT(KC_DOWN)),KC_EXLM ,KC_TILD ,KC_CIRC ,ARROW ,KC_BSLASH ,KC_BSLASH ,
KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,KC_TRANSPARENT ,
- RESET ,KC_TRANSPARENT ,
+ QK_BOOT ,KC_TRANSPARENT ,
KC_TRANSPARENT ,
KC_TRANSPARENT ,KC_TRANSPARENT ,KC_SPACE
),
diff --git a/keyboards/ergodox_ez/keymaps/default_osx/keymap.c b/keyboards/ergodox_ez/keymaps/default_osx/keymap.c
index 73b1077b83..3ab66078fe 100644
--- a/keyboards/ergodox_ez/keymaps/default_osx/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/default_osx/keymap.c
@@ -141,7 +141,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c b/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c
index fab2977356..48b2dec636 100644
--- a/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/dvorak_42_key/keymap.c
@@ -20,8 +20,6 @@
// debounce settings
// remove these after getting a new keyboard
// #define DEBOUNCE 50
-// #define QMK_KEYS_PER_SCAN 4
-
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
@@ -269,7 +267,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS,MEH(KC_L), MEH(KC_M),MEH(KC_N), MEH(KC_O), MEH(KC_P),
KC_TRNS,MEH(KC_Q), MEH(KC_R),MEH(KC_S), MEH(KC_T), MEH(KC_U), KC_TRNS,
// bottom row
- RESET,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ QK_BOOT,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
// thumb cluster
KC_TRNS,KC_TRNS,
KC_TRNS,
@@ -725,7 +723,7 @@ void led_set_user(uint8_t usb_led) {
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_2_off();
diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h b/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h
index da20820787..acd3a44e16 100644
--- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h
+++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/config.h
@@ -7,6 +7,7 @@
#undef TAPPING_TERM
#define TAPPING_TERM 175
+#define TAPPING_TERM_PER_KEY
#undef DEBOUNCE
#define DEBOUNCE 15
@@ -24,7 +25,6 @@
#define LEADER_TIMEOUT 1000
#define PERMISSIVE_HOLD
-#define QMK_KEYS_PER_SCAN 4
#define DANCING_TERM 175
#define ONESHOT_TAP_TOGGLE 5
diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c
index 71cf1053aa..7b2076e05b 100644
--- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c
+++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/hacker_dvorak.c
@@ -336,7 +336,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// left thumb
XXXXXXX, XXXXXXX,
XXXXXXX,
- RESET, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX, XXXXXXX,
// right hand
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dance_actions.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dance_actions.c
index 59e3e2b0dc..1d5e1cee00 100644
--- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dance_actions.c
+++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/tap_dance/tap_dance_actions.c
@@ -13,14 +13,32 @@ qk_tap_dance_action_t tap_dance_actions[] = {
[RPRN_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_RPRN, KC_RBRC),
[LCBR_LABK] = ACTION_TAP_DANCE_DOUBLE(KC_LCBR, KC_LABK),
[RCBR_RABK] = ACTION_TAP_DANCE_DOUBLE(KC_RCBR, KC_RABK),
- [SCLN_COLN] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, scln_coln_finished, scln_coln_reset, DANCING_TERM),
- [QUOT_DQUO] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, quot_dquot_finished, quot_dquot_reset, DANCING_TERM),
- [DOT_COMM] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, dot_comm_finished, dot_comm_reset, DANCING_TERM),
- [NONE_LEAD] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, none_lead_finished, none_lead_reset, DANCING_TERM),
- [U_ARR_GUI] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, u_arrows_gui_finished, u_arrows_gui_reset, DANCING_TERM),
- [H_MOU_GUI] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, h_mouse_gui_finished, h_mouse_gui_reset, DANCING_TERM),
- [J_MED_MEH] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, j_media_meh_finished, j_media_meh_reset, DANCING_TERM),
- [W_MED_MEH] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, w_media_meh_finished, w_media_meh_reset, DANCING_TERM),
- [K_NUM_HYP] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, k_numpad_hyper_finished, k_numpad_hyper_reset, DANCING_TERM),
- [M_CHO_HYP] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, m_chords_hyper_finished, m_chords_hyper_reset, DANCING_TERM),
+ [SCLN_COLN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, scln_coln_finished, scln_coln_reset),
+ [QUOT_DQUO] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, quot_dquot_finished, quot_dquot_reset),
+ [DOT_COMM] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dot_comm_finished, dot_comm_reset),
+ [NONE_LEAD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, none_lead_finished, none_lead_reset),
+ [U_ARR_GUI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, u_arrows_gui_finished, u_arrows_gui_reset),
+ [H_MOU_GUI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, h_mouse_gui_finished, h_mouse_gui_reset),
+ [J_MED_MEH] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, j_media_meh_finished, j_media_meh_reset),
+ [W_MED_MEH] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, w_media_meh_finished, w_media_meh_reset),
+ [K_NUM_HYP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, k_numpad_hyper_finished, k_numpad_hyper_reset),
+ [M_CHO_HYP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, m_chords_hyper_finished, m_chords_hyper_reset),
};
+
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case TD(SCLN_COLN):
+ case TD(QUOT_DQUO):
+ case TD(DOT_COMM):
+ case TD(NONE_LEAD):
+ case TD(U_ARR_GUI):
+ case TD(H_MOU_GUI):
+ case TD(J_MED_MEH):
+ case TD(W_MED_MEH):
+ case TD(K_NUM_HYP):
+ case TD(M_CHO_HYP):
+ return DANCING_TERM;
+ default:
+ return TAPPING_TERM;
+ }
+}
diff --git a/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c b/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c
index fd022681b0..ed407def79 100644
--- a/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c
+++ b/keyboards/ergodox_ez/keymaps/hacker_dvorak/user/layer_set_state_user.c
@@ -1,6 +1,6 @@
layer_state_t layer_state_set_user(layer_state_t state) {
- uint8_t layer = biton32(state);
+ uint8_t layer = get_highest_layer(state);
switch (layer) {
case DVORAK:
diff --git a/keyboards/ergodox_ez/keymaps/heartrobotninja/keymap.c b/keyboards/ergodox_ez/keymaps/heartrobotninja/keymap.c
index b6edc17532..91884c8e76 100644
--- a/keyboards/ergodox_ez/keymaps/heartrobotninja/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/heartrobotninja/keymap.c
@@ -370,7 +370,7 @@ LEADER_EXTERNS();
void matrix_scan_user(void)
{
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
((get_oneshot_mods() & MOD_BIT(KC_LSFT)) &&
@@ -677,4 +677,4 @@ void matrix_init_user(void)
wait_ms(1000);
rgblight_effect_knight(50);
-} \ No newline at end of file
+}
diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/config.h b/keyboards/ergodox_ez/keymaps/ifohancroft/config.h
index 9a0d0e54f7..b279371a0b 100644
--- a/keyboards/ergodox_ez/keymaps/ifohancroft/config.h
+++ b/keyboards/ergodox_ez/keymaps/ifohancroft/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 IFo Hancroft
+/* Copyright 2022 IFo Hancroft
*
* This 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,5 +17,9 @@
#pragma once
// place overrides here
-#define USB_POLLING_INTERVAL_MS 1
#define FORCE_NKRO
+#ifdef TAPPING_TOGGLE
+# undef TAPPING_TOGGLE
+#endif
+#define TAPPING_TOGGLE 3
+
diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c b/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c
index 56c1ff28a7..58c3beaeaa 100644
--- a/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/ifohancroft/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2021 IFo Hancroft
+/* Copyright 2022 IFo Hancroft
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -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 | Del | | | H | J | K | L | ; | ' |
+ * | Esc | A | S | D | F | G | | | | H | J | K | L | ; | ' |
* |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------|
* | Shift | Z | X | C | V | B | | N | M | , | . | / | Shift |
* |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------|
- * | Ctrl | Super | Alt | MO(4) | MO(3) | | MO(3) | Left | Down | Up | Right |
+ * | Ctrl | Super | Alt | | OSL(1) | | TT(1) | | Alt | Super | Ctrl |
* *-------------------------------------------------* *-------------------------------------------------*
*
* *-------------------* *-------------------*
- * | MO(2) | | | | |
+ * | | | | | |
* *---------+---------+---------| |---------+---------+---------*
* | | | | | | | |
* | Bckspc | Enter |---------| |---------| Enter | Space |
- * | | | Space | | | | |
+ * | | | SH_OS | | | | |
* *---------+---------+---------* *---------+---------+---------*
*/
@@ -44,88 +44,14 @@ 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_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_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, KC_NO, OSL(1), TT(1), KC_NO, KC_RALT, KC_RGUI, KC_RCTL,
- MO(2), KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO,
- KC_BSPC, KC_ENT, KC_SPC, KC_NO, KC_ENT, KC_SPC
- ),
-
-
-
- /* Gaming Layer
- * *---------------------------------------------------------------------* *---------------------------------------------------------------------*
- * | | | | | | | 6 | | | | | | | | |
- * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
- * | | | | | | | | | | | | | | | |
- * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
- * | | | | | | | | | | | | | | | |
- * |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------|
- * | | | | | | | | | | | | | |
- * |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------|
- * | | | | | | | | | | | |
- * *-------------------------------------------------* *-------------------------------------------------*
- *
- * *-------------------* *-------------------*
- * | | | | | |
- * *---------+---------+---------| |---------+---------+---------*
- * | | | | | | | |
- * | Space | |---------| |---------| | |
- * | | | | | | | |
- * *---------+---------+---------* *---------+---------+---------*
- */
-
- LAYOUT_ergodox_pretty(
- _______, _______, _______, _______, _______, _______, KC_6, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
-
- _______, _______, _______, _______,
- _______, _______,
- KC_SPC, _______, _______, _______, _______, _______
- ),
-
-
-
- /* Left Hand Layer
- * *---------------------------------------------------------------------* *---------------------------------------------------------------------*
- * | | 6 | 7 | 8 | 9 | 0 | = | | | | | | | | |
- * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
- * | \ | Y | U | I | O | P | ] | | | | | | | | |
- * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
- * | ' | H | J | K | L | ; | | | | | | | | | |
- * |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------|
- * | | N | M | , | . | / | | | | | | | |
- * |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------|
- * | | | | | | | | | | | |
- * *-------------------------------------------------* *-------------------------------------------------*
- *
- * *-------------------* *-------------------*
- * | | | | | |
- * *---------+---------+---------| |---------+---------+---------*
- * | | | | | | | |
- * | | |---------| |---------| | |
- * | | | | | | | |
- * *---------+---------+---------* *---------+---------+---------*
- */
-
- LAYOUT_ergodox_pretty(
- _______, 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, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
-
- _______, _______, _______, _______,
- _______, _______,
- _______, _______, _______, _______, _______, _______
+ KC_BSPC, KC_ENT, SH_OS, KC_NO, KC_ENT, KC_SPC
),
-
-
/* Function Keys Layer
* *---------------------------------------------------------------------* *---------------------------------------------------------------------*
* | NumLock | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | |
@@ -134,9 +60,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
* | | - | 4 | 5 | 6 | / | | | | Left | Down | Up | Right | | |
* |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------|
- * | | 0 | 1 | 2 | 3 | . | | | | | | | |
+ * | | 0 | 1 | 2 | 3 | . | | NK_TOGG | | | | | |
* |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------|
- * | | | | | | | | | | | |
+ * | | | | | | | | Left | Down | Up | Right |
* *-------------------------------------------------* *-------------------------------------------------*
*
* *-------------------* *-------------------*
@@ -152,40 +78,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_P0, KC_P1, KC_P2, KC_P3, KC_PDOT, _______, _______, NK_TOGG, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
_______, _______, _______, _______,
_______, _______,
_______, KC_PENT, KC_PGUP, KC_PGDN, _______, _______
),
+ /* Empty Layer */
+ LAYOUT_ergodox_pretty(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______,
+ _______, _______, _______, _______, _______, _______
+ ),
- /* Layers Layer
- * *---------------------------------------------------------------------* *---------------------------------------------------------------------*
- * | | TO(0) | TO(1) | | | | | | | | | | | | |
- * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
- * | | | | | | | | | | | | | | | |
- * |---------+---------+---------+---------+---------+---------+---------| |---------+---------+---------+---------+---------+---------+---------|
- * | | | | | | | | | | | | | | | |
- * |---------+---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------+---------|
- * | | | | | | | | | | | | | |
- * |---------+---------+---------+---------+---------+---------* *---------+---------+---------+---------+---------+---------|
- * | | | | | | | | | | | |
- * *-------------------------------------------------* *-------------------------------------------------*
- *
- * *-------------------* *-------------------*
- * | | | | | |
- * *---------+---------+---------| |---------+---------+---------*
- * | | | | | | | |
- * | | |---------| |---------| | |
- * | | | | | | | |
- * *---------+---------+---------* *---------+---------+---------*
- */
-
+ /* Empty Layer */
LAYOUT_ergodox_pretty(
- _______, TO(0), TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -195,5 +111,41 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______,
_______, _______, _______, _______, _______, _______
)
+};
+ /* Swap Hands
+ * *-------------------------------------------------*
+ * | Del | \ | ' | | |
+ * |---------+---------+---------+---------+---------+---------*
+ * | 6 | Y | H | N | | |
+ * |---------+---------+---------+---------+---------+---------|
+ * | 7 | U | J | M | | |
+ * |---------+---------+---------+---------+---------+---------|
+ * | 8 | I | K | , | | Space |
+ * |---------+---------+---------+---------+---------+---------|
+ * | 9 | O | L | . | | |
+ * |---------+---------+---------+---------+---------+---------|
+ * | 0 | P | ; | / | | |
+ * |---------+---------+---------+---------| |---------|
+ * | = | ] | | | | |
+ * *---------------------------------------* *---------*
+ */
+
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ {{0, 13}, {1, 13}, {2, 13}, {3, 0}, {4, 0}},
+ {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 1}, {5, 1}},
+ {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 2}, {5, 2}},
+ {{0, 10}, {1, 10}, {2, 10}, {3, 10}, {4, 3}, {5, 10}},
+ {{0, 11}, {1, 11}, {2, 11}, {3, 11}, {4, 4}, {5, 9}},
+ {{0, 12}, {1, 12}, {2, 12}, {3, 12}, {0, 0}, {5, 8}},
+ {{0, 7}, {1, 7}, {0, 0}, {3, 7}, {0, 0}, {5, 7}},
+
+ {{0, 7}, {1, 7}, {0, 0}, {3, 7}, {0, 0}, {5, 7}},
+ {{0, 8}, {1, 8}, {2, 8}, {3, 8}, {0, 0}, {5, 8}},
+ {{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9}},
+ {{0, 10}, {1, 10}, {2, 10}, {3, 10}, {4, 10}, {5, 10}},
+ {{0, 11}, {1, 11}, {2, 11}, {3, 11}, {4, 11}, {5, 11}},
+ {{0, 12}, {1, 12}, {2, 12}, {3, 12}, {4, 12}, {5, 12}},
+ {{0, 13}, {1, 13}, {2, 13}, {3, 13}, {4, 13}}
};
+
diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md b/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md
index daa581062c..7a94a05eae 100644
--- a/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md
+++ b/keyboards/ergodox_ez/keymaps/ifohancroft/readme.md
@@ -1,20 +1,18 @@
-![IFo Hancroft ErgoDox EZ Layout Image](https://i.imgur.com/BlH0ZdE.png)
+![IFo Hancroft ErgoDox EZ Layout Image](https://i.imgur.com/bSWyBCV.png)
# IFo Hancroft's ErgoDox EZ Layout
-- 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.
-
+- Layer 0: A QWERTY Layer.
+- Layer 1: A Function Layer.
+- Layer 2: Empty Layer.
+- Layer 3: Empty Layer.
This keymap also does the following:
-- Sets the polling rate of the keyboard to 1ms
- Forces NKRO on
- Enables:
- - Command
+ - Via
+ - The Swap Hands feature
- Disables:
- Mouse Key
- Extra Key
diff --git a/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk b/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk
index 775ecbd12b..3b18c2b9d2 100644
--- a/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk
+++ b/keyboards/ergodox_ez/keymaps/ifohancroft/rules.mk
@@ -1,3 +1,4 @@
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = no
-COMMAND_ENABLE = yes
+SWAP_HANDS_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/ergodox_ez/keymaps/kou/keymap.c b/keyboards/ergodox_ez/keymaps/kou/keymap.c
index c8d0a6b5dd..01427c2d2d 100644
--- a/keyboards/ergodox_ez/keymaps/kou/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/kou/keymap.c
@@ -284,7 +284,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/ergodox_ez/keymaps/lukaus/keymap.c b/keyboards/ergodox_ez/keymaps/lukaus/keymap.c
index 5d797beb18..542e123db3 100644
--- a/keyboards/ergodox_ez/keymaps/lukaus/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/lukaus/keymap.c
@@ -813,7 +813,7 @@ case RU_7:
layer_state_t layer_state_set_user(layer_state_t state) {
- uint8_t layer = biton32(state);
+ uint8_t layer = get_highest_layer(state);
// ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/ergodox_ez/keymaps/matrixman/keymap.c b/keyboards/ergodox_ez/keymaps/matrixman/keymap.c
index 10b6567cdb..bb6ba5ae34 100644
--- a/keyboards/ergodox_ez/keymaps/matrixman/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/matrixman/keymap.c
@@ -165,7 +165,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/ergodox_ez/keymaps/nathanvercaemert/keymap.c b/keyboards/ergodox_ez/keymaps/nathanvercaemert/keymap.c
index e31391a674..a3c2176951 100644
--- a/keyboards/ergodox_ez/keymaps/nathanvercaemert/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/nathanvercaemert/keymap.c
@@ -218,7 +218,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
layer_state_t layer_state_set_user(layer_state_t state) {
- uint8_t layer = biton32(state);
+ uint8_t layer = get_highest_layer(state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
@@ -431,4 +431,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return true;
}
-
diff --git a/keyboards/ergodox_ez/keymaps/nfriend/keymap.c b/keyboards/ergodox_ez/keymaps/nfriend/keymap.c
index 1d12093bab..39f2d5fe5b 100644
--- a/keyboards/ergodox_ez/keymaps/nfriend/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/nfriend/keymap.c
@@ -918,7 +918,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
- /**/ _______, /**/ KC_F14, /**/ KC_F15, /**/ _______, /**/ _______, /**/ _______, /**/ RESET, /**/
+ /**/ _______, /**/ KC_F14, /**/ KC_F15, /**/ _______, /**/ _______, /**/ _______, /**/ QK_BOOT, /**/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
/*=========================================================================================================*/
/**/ /**/ /**/ /**/ /**/ /**/ /**/ /**/
@@ -1057,7 +1057,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
layer_state_t layer_state_set_user(layer_state_t state) {
- uint8_t layer = biton32(state);
+ uint8_t layer = get_highest_layer(state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/ergodox_ez/keymaps/profet_80/keymap.c b/keyboards/ergodox_ez/keymaps/profet_80/keymap.c
index 85455fa9d9..6f602e828e 100644
--- a/keyboards/ergodox_ez/keymaps/profet_80/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/profet_80/keymap.c
@@ -157,7 +157,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/ergodox_ez/keymaps/pvinis/keymap.c b/keyboards/ergodox_ez/keymaps/pvinis/keymap.c
index 024cefd270..c69621ab98 100644
--- a/keyboards/ergodox_ez/keymaps/pvinis/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/pvinis/keymap.c
@@ -245,11 +245,11 @@ void keyboard_post_init_user_keymap(void) {
}
// light up leds based on the layer
-uint32_t layer_state_set_user_keymap(uint32_t state) {
+layer_state_t layer_state_set_user_keymap(layer_state_t state) {
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case LR_SYSCTL:
ergodox_right_led_3_on(); // blue
break;
@@ -306,7 +306,7 @@ uint32_t layer_state_set_user_keymap(uint32_t state) {
// SYSCTL on first tap, MOUSE ON second tap
// void layers_dance_finished(qk_tap_dance_state_t *state, void *user_data) {
-// uint8_t layer = biton32(layer_state);
+// uint8_t layer = get_highest_layer(layer_state);
// switch(state->count) {
// case 1:
diff --git a/keyboards/ergodox_ez/keymaps/rgb_layer/config.h b/keyboards/ergodox_ez/keymaps/rgb_layer/config.h
index 1913a2d369..84c5adfc9e 100644
--- a/keyboards/ergodox_ez/keymaps/rgb_layer/config.h
+++ b/keyboards/ergodox_ez/keymaps/rgb_layer/config.h
@@ -2,13 +2,9 @@
#define KEYMAP_CONFIG_H
- #define RGBLIGHT_SLEEP
+#define RGBLIGHT_SLEEP
-#ifndef QMK_KEYS_PER_SCAN
-#define QMK_KEYS_PER_SCAN 4
-#endif // !QMK_KEYS_PER_SCAN
-
#define IGNORE_MOD_TAP_INTERRUPT
#undef PERMISSIVE_HOLD
diff --git a/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c b/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c
index 3e607edb39..a41a21072c 100644
--- a/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[SYMB] = LAYOUT_ergodox(
// left hand
VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
- RESET, KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+ QK_BOOT, KC_EXLM,KC_AT, KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
EPRM,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
@@ -228,7 +228,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case SYMB:
ergodox_right_led_1_on();
if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom_red(); rgblight_mode_noeeprom(1); }
@@ -268,4 +268,3 @@ layer_state_t layer_state_set_user(layer_state_t state) {
}
return state;
}
-
diff --git a/keyboards/ergodox_ez/keymaps/rishka/keymap.c b/keyboards/ergodox_ez/keymaps/rishka/keymap.c
index 102803e512..c39c0c476b 100644
--- a/keyboards/ergodox_ez/keymaps/rishka/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/rishka/keymap.c
@@ -101,7 +101,7 @@ _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______,
_______,
- RESET, _______, _______,
+ QK_BOOT, _______, _______,
// right hand
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
@@ -138,7 +138,7 @@ void keyboard_post_init_user(void) {
};
// Runs whenever there is a layer state change.
-uint32_t layer_state_set_user(layer_state_t state) {
+layer_state_t layer_state_set_user(layer_state_t state) {
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
diff --git a/keyboards/ergodox_ez/keymaps/rmw/config.h b/keyboards/ergodox_ez/keymaps/rmw/config.h
index 1ecf8b8b79..1b7528a4a7 100644
--- a/keyboards/ergodox_ez/keymaps/rmw/config.h
+++ b/keyboards/ergodox_ez/keymaps/rmw/config.h
@@ -22,7 +22,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define USB_MAX_POWER_CONSUMPTION 500
-#define QMK_KEYS_PER_SCAN 4
/* Set 0 if debouncing isn't needed */
#undef DEBOUNCE
#define DEBOUNCE 5
diff --git a/keyboards/ergodox_ez/keymaps/skug/keymap.c b/keyboards/ergodox_ez/keymaps/skug/keymap.c
index 1446ea7466..04aa6a99fd 100644
--- a/keyboards/ergodox_ez/keymaps/skug/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/skug/keymap.c
@@ -228,7 +228,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/ergodox_ez/keymaps/smurmann/keymap.c b/keyboards/ergodox_ez/keymaps/smurmann/keymap.c
index 42ac13775f..13ae246e85 100644
--- a/keyboards/ergodox_ez/keymaps/smurmann/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/smurmann/keymap.c
@@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MDIA] = LAYOUT_ergodox(
// left hand
VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
- RESET,_______,KC_BTN1,KC_MS_U,KC_BTN2,_______,_______,
+ QK_BOOT,_______,KC_BTN1,KC_MS_U,KC_BTN2,_______,_______,
_______,_______,KC_MS_L,KC_MS_D,KC_MS_R,_______,
_______,_______,KC_ACL0,KC_ACL1,KC_ACL2,_______,_______,
_______,_______,_______,_______,_______,
@@ -139,7 +139,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
if(layer == 1)
{
@@ -157,7 +157,7 @@ void matrix_scan_user(void) {
}
if(keyboard_report->mods & MOD_BIT(KC_LSFT))
- {
+ {
ergodox_right_led_1_set (LED_BRIGHTNESS_HI);
ergodox_right_led_1_on ();
} else {
@@ -182,7 +182,7 @@ void matrix_scan_user(void) {
}
if(keyboard_report->mods & MOD_BIT(KC_LCTRL))
- {
+ {
ergodox_right_led_3_set (LED_BRIGHTNESS_HI);
ergodox_right_led_3_on ();
} else {
@@ -195,7 +195,7 @@ void matrix_scan_user(void) {
};
void led_set_user(uint8_t usb_led){
- if (usb_led & (1 << USB_LED_CAPS_LOCK))
+ if (usb_led & (1 << USB_LED_CAPS_LOCK))
{
capsOn = true;
}else {
diff --git a/keyboards/ergodox_ez/keymaps/stamm/keymap.c b/keyboards/ergodox_ez/keymaps/stamm/keymap.c
index 19eecae03d..c03c6525af 100644
--- a/keyboards/ergodox_ez/keymaps/stamm/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/stamm/keymap.c
@@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
- RESET, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______,
_______, _______,
_______,
_______, _______, _______,
diff --git a/keyboards/ergodox_ez/keymaps/steno/keymap.c b/keyboards/ergodox_ez/keymaps/steno/keymap.c
index 080d3f6cef..0e5d7e3a22 100644
--- a/keyboards/ergodox_ez/keymaps/steno/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/steno/keymap.c
@@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 2: Media and mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
- * | RESET | | | | | | | | | | | | | | |
+ * | QK_BOOT | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | MsUp | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
@@ -118,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
// MEDIA AND MOUSE
[MDIA] = LAYOUT_ergodox(
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, 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_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -228,7 +228,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/ergodox_ez/keymaps/testing/keymap.c b/keyboards/ergodox_ez/keymaps/testing/keymap.c
index 5c1fc4af28..3aee63ddf1 100644
--- a/keyboards/ergodox_ez/keymaps/testing/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/testing/keymap.c
@@ -62,7 +62,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
layer_state_t layer_state_set_user(layer_state_t state) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/ergodox_ez/keymaps/toshi0383/keymap.c b/keyboards/ergodox_ez/keymaps/toshi0383/keymap.c
index 77242596d2..c419f8893f 100644
--- a/keyboards/ergodox_ez/keymaps/toshi0383/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/toshi0383/keymap.c
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______,
- KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, KC_BRIU, RESET, _______,
+ KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, KC_BRIU, QK_BOOT, _______,
_______, _______, _______, _______, KC_LGUI,
_______, _______,
_______,
diff --git a/keyboards/ergodox_ez/keymaps/vim/keymap.c b/keyboards/ergodox_ez/keymaps/vim/keymap.c
index 948f2b4794..c1c037ef23 100644
--- a/keyboards/ergodox_ez/keymaps/vim/keymap.c
+++ b/keyboards/ergodox_ez/keymaps/vim/keymap.c
@@ -330,7 +330,7 @@ void matrix_init_user(void) {
};
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/ergodox_ez/rules.mk b/keyboards/ergodox_ez/rules.mk
index 1b4ace5ee5..021ea0f130 100644
--- a/keyboards/ergodox_ez/rules.mk
+++ b/keyboards/ergodox_ez/rules.mk
@@ -38,3 +38,5 @@ AUDIO_SUPPORTED = no
BACKLIGHT_SUPPORTED = no
MOUSE_SHARED_EP = no
+
+DEFAULT_FOLDER = ergodox_ez/base
diff --git a/keyboards/ergodox_ez/shine/config.h b/keyboards/ergodox_ez/shine/config.h
deleted file mode 100644
index cf4f59f3b8..0000000000
--- a/keyboards/ergodox_ez/shine/config.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
-Copyright 2015 ZSA Technology Labs Inc (@zsa)
-Copyright 2020 Christopher Courtney <drashna@live.com> (@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
-
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x4975
-#undef PRODUCT
-#define PRODUCT ErgoDox EZ Shine
diff --git a/keyboards/ergodox_ez/shine/info.json b/keyboards/ergodox_ez/shine/info.json
new file mode 100644
index 0000000000..11c3a8b209
--- /dev/null
+++ b/keyboards/ergodox_ez/shine/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "ErgoDox EZ Shine",
+ "usb": {
+ "pid": "0x4975"
+ }
+}
diff --git a/keyboards/ergodox_ez/util/compile_keymap.py b/keyboards/ergodox_ez/util/compile_keymap.py
index b447ecaf5c..310512c920 100755
--- a/keyboards/ergodox_ez/util/compile_keymap.py
+++ b/keyboards/ergodox_ez/util/compile_keymap.py
@@ -27,29 +27,34 @@ PY2 = sys.version_info.major == 2
if PY2:
chr = unichr
-
KEYBOARD_LAYOUTS = {
# These map positions in the parsed layout to
# positions in the KEYMAP MATRIX
'ergodox_ez': [
- [ 0, 1, 2, 3, 4, 5, 6], [38, 39, 40, 41, 42, 43, 44],
- [ 7, 8, 9, 10, 11, 12, 13], [45, 46, 47, 48, 49, 50, 51],
- [14, 15, 16, 17, 18, 19 ], [ 52, 53, 54, 55, 56, 57],
- [20, 21, 22, 23, 24, 25, 26], [58, 59, 60, 61, 62, 63, 64],
- [27, 28, 29, 30, 31 ], [ 65, 66, 67, 68, 69],
- [ 32, 33], [70, 71 ],
- [ 34], [72 ],
- [ 35, 36, 37], [73, 74, 75 ],
+ [0, 1, 2, 3, 4, 5, 6],
+ [38, 39, 40, 41, 42, 43, 44],
+ [7, 8, 9, 10, 11, 12, 13],
+ [45, 46, 47, 48, 49, 50, 51],
+ [14, 15, 16, 17, 18, 19],
+ [52, 53, 54, 55, 56, 57],
+ [20, 21, 22, 23, 24, 25, 26],
+ [58, 59, 60, 61, 62, 63, 64],
+ [27, 28, 29, 30, 31],
+ [65, 66, 67, 68, 69],
+ [32, 33],
+ [70, 71],
+ [34],
+ [72],
+ [35, 36, 37],
+ [73, 74, 75],
]
}
-ROW_INDENTS = {
- 'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0]
-}
+ROW_INDENTS = {'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0]}
BLANK_LAYOUTS = [
-# Compact Layout
-"""
+ # Compact Layout
+ """
.------------------------------------.------------------------------------.
| | | | | | | | | | | | | | |
!-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
@@ -70,8 +75,8 @@ BLANK_LAYOUTS = [
'-----------------' '-----------------'
""",
-# Wide Layout
-"""
+ # Wide Layout
+ """
.---------------------------------------------. .---------------------------------------------.
| | | | | | | | ! | | | | | | |
!-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
@@ -93,26 +98,22 @@ BLANK_LAYOUTS = [
""",
]
-
DEFAULT_CONFIG = {
- "keymaps_includes": [
- "keymap_common.h",
- ],
+ "keymaps_includes": ["keymap_common.h",],
'filler': "-+.'!:x",
'separator': "|",
'default_key_prefix': ["KC_"],
}
-
SECTIONS = [
'layout_config',
'layers',
]
-
# Markdown Parsing
-ONELINE_COMMENT_RE = re.compile(r"""
+ONELINE_COMMENT_RE = re.compile(
+ r"""
^ # comment must be at the start of the line
\s* # arbitrary whitespace
// # start of the comment
@@ -121,22 +122,26 @@ ONELINE_COMMENT_RE = re.compile(r"""
""", re.MULTILINE | re.VERBOSE
)
-INLINE_COMMENT_RE = re.compile(r"""
+INLINE_COMMENT_RE = re.compile(
+ r"""
([\,\"\[\]\{\}\d]) # anythig that might end a expression
\s+ # comment must be preceded by whitespace
// # start of the comment
\s # and succeded by whitespace
(?:[^\"\]\}\{\[]*) # the comment (except things which might be json)
$ # until the end of line
-""", re.MULTILINE | re.VERBOSE)
+""", re.MULTILINE | re.VERBOSE
+)
-TRAILING_COMMA_RE = re.compile(r"""
+TRAILING_COMMA_RE = re.compile(
+ r"""
, # the comma
(?:\s*) # arbitrary whitespace
$ # only works if the trailing comma is followed by newline
(\s*) # arbitrary whitespace
([\]\}]) # end of an array or object
-""", re.MULTILINE | re.VERBOSE)
+""", re.MULTILINE | re.VERBOSE
+)
def loads(raw_data):
@@ -178,9 +183,7 @@ def parse_config(path):
def end_section():
if section['start_line'] >= 0:
if section['name'] == 'layout_config':
- config.update(loads("\n".join(
- section['code_lines']
- )))
+ config.update(loads("\n".join(section['code_lines'])))
elif section['sub_name'].startswith('layer'):
layer_name = section['sub_name']
config['layer_lines'][layer_name] = section['code_lines']
@@ -215,6 +218,7 @@ def parse_config(path):
assert 'layout' in config
return config
+
# header file parsing
IF0_RE = re.compile(r"""
@@ -224,7 +228,6 @@ IF0_RE = re.compile(r"""
#endif
""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
COMMENT_RE = re.compile(r"""
/\*
.*?
@@ -244,6 +247,7 @@ def regex_partial(re_str_fmt, flags):
def partial(*args, **kwargs):
re_str = re_str_fmt.format(*args, **kwargs)
return re.compile(re_str, flags)
+
return partial
@@ -256,7 +260,6 @@ KEYDEF_REP = regex_partial(r"""
) # capture group end
""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
ENUM_RE = re.compile(r"""
(
enum
@@ -268,7 +271,6 @@ ENUM_RE = re.compile(r"""
) # capture group end
""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
ENUM_KEY_REP = regex_partial(r"""
(
{} # the prefixes
@@ -309,14 +311,13 @@ def parse_valid_keys(config, out_path):
include_path = os.path.join(dirpath, include)
if os.path.exists(include_path):
header_data = read_header_file(include_path)
- valid_keycodes.update(
- parse_keydefs(config, header_data)
- )
+ valid_keycodes.update(parse_keydefs(config, header_data))
return valid_keycodes
# Keymap Parsing
+
def iter_raw_codes(layer_lines, filler, separator):
filler_re = re.compile("[" + filler + " ]")
for line in layer_lines:
@@ -346,28 +347,21 @@ LAYER_CHANGE_RE = re.compile(r"""
(DF|TG|MO)\(\d+\)
""", re.VERBOSE)
-
MACRO_RE = re.compile(r"""
M\(\w+\)
""", re.VERBOSE)
-
UNICODE_RE = re.compile(r"""
U[0-9A-F]{4}
""", re.VERBOSE)
-
NON_CODE = re.compile(r"""
^[^A-Z0-9_]$
""", re.VERBOSE)
def parse_uni_code(raw_code):
- macro_id = "UC_" + (
- unicodedata.name(raw_code)
- .replace(" ", "_")
- .replace("-", "_")
- )
+ macro_id = "UC_" + (unicodedata.name(raw_code).replace(" ", "_").replace("-", "_"))
code = "M({})".format(macro_id)
uc_hex = "{:04X}".format(ord(raw_code))
return code, macro_id, uc_hex
@@ -407,19 +401,13 @@ def parse_code(raw_code, key_prefixes, valid_keycodes):
def parse_keymap(config, key_indexes, layer_lines, valid_keycodes):
keymap = {}
- raw_codes = list(iter_raw_codes(
- layer_lines, config['filler'], config['separator']
- ))
+ raw_codes = list(iter_raw_codes(layer_lines, config['filler'], config['separator']))
indexed_codes = iter_indexed_codes(raw_codes, key_indexes)
key_prefixes = config['key_prefixes']
for raw_code, key_index, row_index in indexed_codes:
- code, macro_id, uc_hex = parse_code(
- raw_code, key_prefixes, valid_keycodes
- )
+ code, macro_id, uc_hex = parse_code(raw_code, key_prefixes, valid_keycodes)
# TODO: line numbers for invalid codes
- err_msg = "Could not parse key '{}' on row {}".format(
- raw_code, row_index
- )
+ err_msg = "Could not parse key '{}' on row {}".format(raw_code, row_index)
assert code is not None, err_msg
# print(repr(raw_code), repr(code), macro_id, uc_hex)
if macro_id:
@@ -432,17 +420,14 @@ def parse_keymap(config, key_indexes, layer_lines, valid_keycodes):
def parse_keymaps(config, valid_keycodes):
keymaps = collections.OrderedDict()
- key_indexes = config.get(
- 'key_indexes', KEYBOARD_LAYOUTS[config['layout']]
- )
+ key_indexes = config.get('key_indexes', KEYBOARD_LAYOUTS[config['layout']])
# TODO: maybe validate key_indexes
for layer_name, layer_lines, in config['layer_lines'].items():
- keymaps[layer_name] = parse_keymap(
- config, key_indexes, layer_lines, valid_keycodes
- )
+ keymaps[layer_name] = parse_keymap(config, key_indexes, layer_lines, valid_keycodes)
return keymaps
+
# keymap.c output
USERCODE = """
@@ -453,7 +438,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
@@ -572,7 +557,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{
}};
"""
-
UNICODE_MACRO_TEMPLATE = """
case {macro_id}:
unicode_action_function(0x{hi:02x}, 0x{lo:02x});
@@ -584,9 +568,7 @@ def unicode_macro_cases(config):
for macro_id, uc_hex in config['unicode_macros'].items():
hi = int(uc_hex, 16) >> 8
lo = int(uc_hex, 16) & 0xFF
- yield UNICODE_MACRO_TEMPLATE.format(
- macro_id=macro_id, hi=hi, lo=lo
- )
+ yield UNICODE_MACRO_TEMPLATE.format(macro_id=macro_id, hi=hi, lo=lo)
def iter_keymap_lines(keymap, row_indents=None):
diff --git a/keyboards/ergodox_stm32/config.h b/keyboards/ergodox_stm32/config.h
index b627f44ebb..46514eaeb7 100644
--- a/keyboards/ergodox_stm32/config.h
+++ b/keyboards/ergodox_stm32/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x1308
-#define DEVICE_VER 0x0101
-#define MANUFACTURER ErgoDox
-#define PRODUCT ErgoDox STM
-
#define MATRIX_ROWS 14
#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2)
#define MATRIX_COLS 6
diff --git a/keyboards/ergodox_stm32/info.json b/keyboards/ergodox_stm32/info.json
index ee406e4743..e93c71e29c 100644
--- a/keyboards/ergodox_stm32/info.json
+++ b/keyboards/ergodox_stm32/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ErgoDox STM32",
+ "manufacturer": "ErgoDox",
"url": "github.com/codetector1374",
"maintainer": "codetector1374",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1308",
+ "device_version": "1.0.1"
+ },
"layouts": {
"LAYOUT_ergodox": {
"layout": [
diff --git a/keyboards/ergoslab/info.json b/keyboards/ergoslab/info.json
deleted file mode 100644
index e37a3b7cbf..0000000000
--- a/keyboards/ergoslab/info.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "keyboard_name": "ergoslab",
- "url": "https://github.com/tomsaleeba/ergoslab",
- "maintainer": "tomsaleeba",
- "layouts": {
- "LAYOUT_ergoslab": {
- "layout": [
- {"label":"Q", "x":0, "y":0.625},
- {"label":"W", "x":1, "y":0.125},
- {"label":"E", "x":2, "y":0},
- {"label":"R", "x":3, "y":0.125},
- {"label":"T", "x":4, "y":0.25},
- {"label":"Y", "x":8, "y":0.25},
- {"label":"U", "x":9, "y":0.125},
- {"label":"I", "x":10, "y":0},
- {"label":"O", "x":11, "y":0.125},
- {"label":"P", "x":12, "y":0.625},
- {"label":"A", "x":0, "y":1.625},
- {"label":"S", "x":1, "y":1.125},
- {"label":"D", "x":2, "y":1},
- {"label":"F", "x":3, "y":1.125},
- {"label":"G", "x":4, "y":1.25},
- {"label":"H", "x":8, "y":1.25},
- {"label":"J", "x":9, "y":1.125},
- {"label":"K", "x":10, "y":1},
- {"label":"L", "x":11, "y":1.125},
- {"label":";", "x":12, "y":1.625},
- {"label":"Z", "x":0, "y":2.625},
- {"label":"X", "x":1, "y":2.125},
- {"label":"C", "x":2, "y":2},
- {"label":"V", "x":3, "y":2.125},
- {"label":"B", "x":4, "y":2.25},
- {"label":"N", "x":8, "y":2.25},
- {"label":"M", "x":9, "y":2.125},
- {"label":",", "x":10, "y":2},
- {"label":".", "x":11, "y":2.125},
- {"label":"/", "x":12, "y":2.625},
- {"label":"'", "x":0, "y":3.625},
- {"label":"Alt", "x":1, "y":3.125},
- {"label":"Del", "x":2, "y":3},
- {"label":"Enter", "x":3, "y":3.125},
- {"label":"Shift", "x":4, "y":3.25},
- {"label":"Ctrl", "x":5, "y":3.25},
- {"label":"Numb", "x":7, "y":3.25},
- {"label":"Space", "x":8, "y":3.25},
- {"label":"Left", "x":9, "y":3.125},
- {"label":"Down", "x":10, "y":3},
- {"label":"Up", "x":11, "y":3.125},
- {"label":"Right", "x":12, "y":3.625},
- {"label":"[", "x":1, "y":4.25},
- {"label":"(", "x":2, "y":4.25},
- {"label":"Esc", "x":3, "y":4.25},
- {"label":"Media", "x":4, "y":4.25},
- {"label":"GUI", "x":5, "y":4.25},
- {"label":"Tab", "x":7, "y":4.25},
- {"label":"Mouse", "x":8, "y":4.25},
- {"label":"Bspc", "x":9, "y":4.25},
- {"label":")", "x":10, "y":4.25},
- {"label":"]", "x":11, "y":4.25}
- ]
- }
- }
-}
diff --git a/keyboards/ergoslab/keymaps/default/keymap.c b/keyboards/ergoslab/keymaps/default/keymap.c
index 59415618a8..093d586eba 100644
--- a/keyboards/ergoslab/keymaps/default/keymap.c
+++ b/keyboards/ergoslab/keymaps/default/keymap.c
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#ifdef RGBLIGHT_ENABLE
layer_state_t layer_state_set_user(layer_state_t state) {
- uint8_t layer = biton32(state);
+ uint8_t layer = get_highest_layer(state);
switch (layer) {
case BASE:
rgblight_sethsv(HSV_ERGOSLAB_ORANGE);
diff --git a/keyboards/ergoslab/rev1/config.h b/keyboards/ergoslab/rev1/config.h
index b754a7810c..7bb092834b 100644
--- a/keyboards/ergoslab/rev1/config.h
+++ b/keyboards/ergoslab/rev1/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x5148
-#define DEVICE_VER 0x0100
-#define MANUFACTURER tomsaleeba
-#define PRODUCT Ergoslab Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/ergoslab/rev1/info.json b/keyboards/ergoslab/rev1/info.json
new file mode 100644
index 0000000000..38530960a5
--- /dev/null
+++ b/keyboards/ergoslab/rev1/info.json
@@ -0,0 +1,69 @@
+{
+ "keyboard_name": "Ergoslab Keyboard",
+ "manufacturer": "tomsaleeba",
+ "url": "https://github.com/tomsaleeba/ergoslab",
+ "maintainer": "tomsaleeba",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x5148",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT_ergoslab": {
+ "layout": [
+ {"label":"Q", "x":0, "y":0.625},
+ {"label":"W", "x":1, "y":0.125},
+ {"label":"E", "x":2, "y":0},
+ {"label":"R", "x":3, "y":0.125},
+ {"label":"T", "x":4, "y":0.25},
+ {"label":"Y", "x":8, "y":0.25},
+ {"label":"U", "x":9, "y":0.125},
+ {"label":"I", "x":10, "y":0},
+ {"label":"O", "x":11, "y":0.125},
+ {"label":"P", "x":12, "y":0.625},
+ {"label":"A", "x":0, "y":1.625},
+ {"label":"S", "x":1, "y":1.125},
+ {"label":"D", "x":2, "y":1},
+ {"label":"F", "x":3, "y":1.125},
+ {"label":"G", "x":4, "y":1.25},
+ {"label":"H", "x":8, "y":1.25},
+ {"label":"J", "x":9, "y":1.125},
+ {"label":"K", "x":10, "y":1},
+ {"label":"L", "x":11, "y":1.125},
+ {"label":";", "x":12, "y":1.625},
+ {"label":"Z", "x":0, "y":2.625},
+ {"label":"X", "x":1, "y":2.125},
+ {"label":"C", "x":2, "y":2},
+ {"label":"V", "x":3, "y":2.125},
+ {"label":"B", "x":4, "y":2.25},
+ {"label":"N", "x":8, "y":2.25},
+ {"label":"M", "x":9, "y":2.125},
+ {"label":",", "x":10, "y":2},
+ {"label":".", "x":11, "y":2.125},
+ {"label":"/", "x":12, "y":2.625},
+ {"label":"'", "x":0, "y":3.625},
+ {"label":"Alt", "x":1, "y":3.125},
+ {"label":"Del", "x":2, "y":3},
+ {"label":"Enter", "x":3, "y":3.125},
+ {"label":"Shift", "x":4, "y":3.25},
+ {"label":"Ctrl", "x":5, "y":3.25},
+ {"label":"Numb", "x":7, "y":3.25},
+ {"label":"Space", "x":8, "y":3.25},
+ {"label":"Left", "x":9, "y":3.125},
+ {"label":"Down", "x":10, "y":3},
+ {"label":"Up", "x":11, "y":3.125},
+ {"label":"Right", "x":12, "y":3.625},
+ {"label":"[", "x":1, "y":4.25},
+ {"label":"(", "x":2, "y":4.25},
+ {"label":"Esc", "x":3, "y":4.25},
+ {"label":"Media", "x":4, "y":4.25},
+ {"label":"GUI", "x":5, "y":4.25},
+ {"label":"Tab", "x":7, "y":4.25},
+ {"label":"Mouse", "x":8, "y":4.25},
+ {"label":"Bspc", "x":9, "y":4.25},
+ {"label":")", "x":10, "y":4.25},
+ {"label":"]", "x":11, "y":4.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/ergotravel/info.json b/keyboards/ergotravel/info.json
deleted file mode 100644
index 71e9cf7f4f..0000000000
--- a/keyboards/ergotravel/info.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "keyboard_name": "ErgoTravel",
- "identifier": "0x1256",
- "url": "https://github.com/jpconstantineau/ErgoTravel",
- "maintainer": "qmk",
- "bootloader": "caterina",
- "processor": "atmega32u4",
- "layouts": {
- "LAYOUT": {
- "layout": [{"label":"L00", "x":0, "y":0.375}, {"label":"L01", "x":1, "y":0.25}, {"label":"L02", "x":2, "y":0.125}, {"label":"L03", "x":3, "y":0}, {"label":"L04", "x":4, "y":0.125}, {"label":"L05", "x":5, "y":0.25}, {"label":"L06", "x":6, "y":0.5}, {"label":"R00", "x":9, "y":0.5}, {"label":"R01", "x":10, "y":0.25}, {"label":"R02", "x":11, "y":0.125}, {"label":"R03", "x":12, "y":0}, {"label":"R04", "x":13, "y":0.125}, {"label":"R05", "x":14, "y":0.25}, {"label":"R06", "x":15, "y":0.375}, {"label":"L10", "x":0, "y":1.375}, {"label":"L11", "x":1, "y":1.25}, {"label":"L12", "x":2, "y":1.125}, {"label":"L13", "x":3, "y":1}, {"label":"L14", "x":4, "y":1.125}, {"label":"L15", "x":5, "y":1.25}, {"label":"L16", "x":6, "y":1.5}, {"label":"R10", "x":9, "y":1.5}, {"label":"R11", "x":10, "y":1.25}, {"label":"R12", "x":11, "y":1.125}, {"label":"R13", "x":12, "y":1}, {"label":"R14", "x":13, "y":1.125}, {"label":"R15", "x":14, "y":1.25}, {"label":"R16", "x":15, "y":1.375}, {"label":"L20", "x":0, "y":2.375}, {"label":"L21", "x":1, "y":2.25}, {"label":"L22", "x":2, "y":2.125}, {"label":"L23", "x":3, "y":2}, {"label":"L24", "x":4, "y":2.125}, {"label":"L25", "x":5, "y":2.25}, {"label":"L26", "x":6.5, "y":3}, {"label":"R20", "x":8.5, "y":3}, {"label":"R21", "x":10, "y":2.25}, {"label":"R22", "x":11, "y":2.125}, {"label":"R23", "x":12, "y":2}, {"label":"R24", "x":13, "y":2.125}, {"label":"R25", "x":14, "y":2.25}, {"label":"R26", "x":15, "y":2.375}, {"label":"L30", "x":0, "y":3.375}, {"label":"L31", "x":1, "y":3.25}, {"label":"L32", "x":2, "y":3.125}, {"label":"L33", "x":3, "y":3}, {"label":"L34", "x":5.5, "y":4}, {"label":"L35", "x":6.5, "y":4}, {"label":"R30", "x":8.5, "y":4}, {"label":"R31", "x":9.5, "y":4}, {"label":"R32", "x":12, "y":3}, {"label":"R33", "x":13, "y":3.125}, {"label":"R34", "x":14, "y":3.25}, {"label":"R35", "x":15, "y":3.375}]
- }
- }
-}
diff --git a/keyboards/ergotravel/keymaps/default/keymap.c b/keyboards/ergotravel/keymaps/default/keymap.c
index 7c96296a16..2a43968814 100644
--- a/keyboards/ergotravel/keymaps/default/keymap.c
+++ b/keyboards/ergotravel/keymaps/default/keymap.c
@@ -1,10 +1,12 @@
#include QMK_KEYBOARD_H
-#define _QWERTY 0
-#define _LOWER 1
-#define _RAISE 2
-#define _ADJUST 16
+enum layer_names {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
@@ -39,12 +41,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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
-
+
),
[_ADJUST] = LAYOUT(
diff --git a/keyboards/ergotravel/keymaps/ian/keymap.c b/keyboards/ergotravel/keymaps/ian/keymap.c
index 0dbf3278ac..cd1e01043e 100644
--- a/keyboards/ergotravel/keymaps/ian/keymap.c
+++ b/keyboards/ergotravel/keymaps/ian/keymap.c
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
//,------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
- BASELYR,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, RESET ,
+ BASELYR,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, QK_BOOT ,
//,------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
//,------+-------+-------+-------+-------+-------+-------. ,-------+-------+-------+-------+-------+-------+-------.
diff --git a/keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h b/keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h
index a246476ddc..40cf1e3752 100644
--- a/keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/ergotravel/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/ergotravel/keymaps/yanfali/keymap.c b/keyboards/ergotravel/keymaps/yanfali/keymap.c
index 399dc9998c..b2b62484a9 100644
--- a/keyboards/ergotravel/keymaps/yanfali/keymap.c
+++ b/keyboards/ergotravel/keymaps/yanfali/keymap.c
@@ -55,7 +55,7 @@ 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,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QK_BOOT,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/ergotravel/rev1/config.h b/keyboards/ergotravel/rev1/config.h
index 096a85d370..3703884c67 100644
--- a/keyboards/ergotravel/rev1/config.h
+++ b/keyboards/ergotravel/rev1/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4A50 //JP
-#define PRODUCT_ID 0x4554 //ET
-#define DEVICE_VER 0x0100
-#define MANUFACTURER JPConstantineau.com
-#define PRODUCT ErgoTravel Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/ergotravel/rev1/info.json b/keyboards/ergotravel/rev1/info.json
new file mode 100644
index 0000000000..5170788eba
--- /dev/null
+++ b/keyboards/ergotravel/rev1/info.json
@@ -0,0 +1,18 @@
+{
+ "keyboard_name": "ErgoTravel Keyboard",
+ "manufacturer": "JPConstantineau.com",
+ "url": "https://github.com/jpconstantineau/ErgoTravel",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x4A50",
+ "pid": "0x4554",
+ "device_version": "1.0.0"
+ },
+ "bootloader": "caterina",
+ "processor": "atmega32u4",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"L00", "x":0, "y":0.375}, {"label":"L01", "x":1, "y":0.25}, {"label":"L02", "x":2, "y":0.125}, {"label":"L03", "x":3, "y":0}, {"label":"L04", "x":4, "y":0.125}, {"label":"L05", "x":5, "y":0.25}, {"label":"L06", "x":6, "y":0.5}, {"label":"R00", "x":9, "y":0.5}, {"label":"R01", "x":10, "y":0.25}, {"label":"R02", "x":11, "y":0.125}, {"label":"R03", "x":12, "y":0}, {"label":"R04", "x":13, "y":0.125}, {"label":"R05", "x":14, "y":0.25}, {"label":"R06", "x":15, "y":0.375}, {"label":"L10", "x":0, "y":1.375}, {"label":"L11", "x":1, "y":1.25}, {"label":"L12", "x":2, "y":1.125}, {"label":"L13", "x":3, "y":1}, {"label":"L14", "x":4, "y":1.125}, {"label":"L15", "x":5, "y":1.25}, {"label":"L16", "x":6, "y":1.5}, {"label":"R10", "x":9, "y":1.5}, {"label":"R11", "x":10, "y":1.25}, {"label":"R12", "x":11, "y":1.125}, {"label":"R13", "x":12, "y":1}, {"label":"R14", "x":13, "y":1.125}, {"label":"R15", "x":14, "y":1.25}, {"label":"R16", "x":15, "y":1.375}, {"label":"L20", "x":0, "y":2.375}, {"label":"L21", "x":1, "y":2.25}, {"label":"L22", "x":2, "y":2.125}, {"label":"L23", "x":3, "y":2}, {"label":"L24", "x":4, "y":2.125}, {"label":"L25", "x":5, "y":2.25}, {"label":"L26", "x":6.5, "y":3}, {"label":"R20", "x":8.5, "y":3}, {"label":"R21", "x":10, "y":2.25}, {"label":"R22", "x":11, "y":2.125}, {"label":"R23", "x":12, "y":2}, {"label":"R24", "x":13, "y":2.125}, {"label":"R25", "x":14, "y":2.25}, {"label":"R26", "x":15, "y":2.375}, {"label":"L30", "x":0, "y":3.375}, {"label":"L31", "x":1, "y":3.25}, {"label":"L32", "x":2, "y":3.125}, {"label":"L33", "x":3, "y":3}, {"label":"L34", "x":5.5, "y":4}, {"label":"L35", "x":6.5, "y":4}, {"label":"R30", "x":8.5, "y":4}, {"label":"R31", "x":9.5, "y":4}, {"label":"R32", "x":12, "y":3}, {"label":"R33", "x":13, "y":3.125}, {"label":"R34", "x":14, "y":3.25}, {"label":"R35", "x":15, "y":3.375}]
+ }
+ }
+}
diff --git a/keyboards/ericrlau/numdiscipline/info.json b/keyboards/ericrlau/numdiscipline/info.json
deleted file mode 100644
index 202aceda76..0000000000
--- a/keyboards/ericrlau/numdiscipline/info.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "keyboard_name": "ELau NumDiscipline KB",
- "url": "https://github.com/ericrlau/NumDiscipline",
- "maintainer": "ericrlau",
- "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":"BackSpace", "x":13, "y":0, "w":2}, {"label":"Del", "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, "h":2}, {"label":"CapsLock", "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":15.5, "y":2}, {"label":"5", "x":16.5, "y":2}, {"label":"6", "x":17.5, "y":2}, {"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":1.75}, {"label":"<i class='kb kb-Arrows-Up'></i>", "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":"Left Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "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 Alt", "x":10, "y":4}, {"label":"Right Ctrl", "x":11, "y":4}, {"label":"Func", "x":12, "y":4}, {"label":"<i class='kb kb-Arrows-Left'></i>", "x":13.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Down'></i>", "x":14.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Right'></i>", "x":15.25, "y":4.25}, {"label":"0", "x":16.5, "y":4}, {"label":".", "x":17.5, "y":4}]
- },
- "LAYOUT_std_2_right_mods": {
- "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":"Del", "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, "h":2}, {"label":"CapsLock", "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":15.5, "y":2}, {"label":"5", "x":16.5, "y":2}, {"label":"6", "x":17.5, "y":2}, {"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":1.75}, {"label":"<i class='kb kb-Arrows-Up'></i>", "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":"Left Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "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.5}, {"label":"Func", "x":11.5, "y":4, "w":1.5}, {"label":"<i class='kb kb-Arrows-Left'></i>", "x":13.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Down'></i>", "x":14.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Right'></i>", "x":15.25, "y":4.25}, {"label":"0", "x":16.5, "y":4}, {"label":".", "x":17.5, "y":4}]
- },
- "LAYOUT_wkl_2_right_mods": {
- "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":"Del", "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, "h":2}, {"label":"CapsLock", "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":15.5, "y":2}, {"label":"5", "x":16.5, "y":2}, {"label":"6", "x":17.5, "y":2}, {"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":1.75}, {"label":"<i class='kb kb-Arrows-Up'></i>", "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":"Left Ctrl", "x":0, "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.5}, {"label":"Func", "x":11.5, "y":4, "w":1.5}, {"label":"<i class='kb kb-Arrows-Left'></i>", "x":13.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Down'></i>", "x":14.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Right'></i>", "x":15.25, "y":4.25}, {"label":"0", "x":16.5, "y":4}, {"label":".", "x":17.5, "y":4}]
- },
- "LAYOUT_wkl_3_right_mods": {
- "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":"Del", "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, "h":2}, {"label":"CapsLock", "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":15.5, "y":2}, {"label":"5", "x":16.5, "y":2}, {"label":"6", "x":17.5, "y":2}, {"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":1.75}, {"label":"<i class='kb kb-Arrows-Up'></i>", "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":"Left Ctrl", "x":0, "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 Alt", "x":10, "y":4}, {"label":"Right Ctrl", "x":11, "y":4}, {"label":"Func", "x":12, "y":4}, {"label":"<i class='kb kb-Arrows-Left'></i>", "x":13.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Down'></i>", "x":14.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Right'></i>", "x":15.25, "y":4.25}, {"label":"0", "x":16.5, "y":4}, {"label":".", "x":17.5, "y":4}]
- }
- }
-}
diff --git a/keyboards/ericrlau/numdiscipline/rev1/config.h b/keyboards/ericrlau/numdiscipline/rev1/config.h
index 72abf556d4..57c969ca79 100644
--- a/keyboards/ericrlau/numdiscipline/rev1/config.h
+++ b/keyboards/ericrlau/numdiscipline/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x454C // EL
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ELau
-#define PRODUCT NumDiscipline
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B2, A1, B1, A0, B0 }
#define MATRIX_COL_PINS { A2, B3, A3, B4, A4, D5, D6, C6, C5, C4, C3, C2, C1, C0, D7, A5, A6, A7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ericrlau/numdiscipline/rev1/info.json b/keyboards/ericrlau/numdiscipline/rev1/info.json
new file mode 100644
index 0000000000..cdaa9be039
--- /dev/null
+++ b/keyboards/ericrlau/numdiscipline/rev1/info.json
@@ -0,0 +1,25 @@
+{
+ "keyboard_name": "NumDiscipline",
+ "manufacturer": "ELau",
+ "url": "https://github.com/ericrlau/NumDiscipline",
+ "maintainer": "ericrlau",
+ "usb": {
+ "vid": "0x454C",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
+ "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":"BackSpace", "x":13, "y":0, "w":2}, {"label":"Del", "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, "h":2}, {"label":"CapsLock", "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":15.5, "y":2}, {"label":"5", "x":16.5, "y":2}, {"label":"6", "x":17.5, "y":2}, {"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":1.75}, {"label":"<i class='kb kb-Arrows-Up'></i>", "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":"Left Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "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 Alt", "x":10, "y":4}, {"label":"Right Ctrl", "x":11, "y":4}, {"label":"Func", "x":12, "y":4}, {"label":"<i class='kb kb-Arrows-Left'></i>", "x":13.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Down'></i>", "x":14.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Right'></i>", "x":15.25, "y":4.25}, {"label":"0", "x":16.5, "y":4}, {"label":".", "x":17.5, "y":4}]
+ },
+ "LAYOUT_std_2_right_mods": {
+ "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":"Del", "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, "h":2}, {"label":"CapsLock", "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":15.5, "y":2}, {"label":"5", "x":16.5, "y":2}, {"label":"6", "x":17.5, "y":2}, {"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":1.75}, {"label":"<i class='kb kb-Arrows-Up'></i>", "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":"Left Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "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.5}, {"label":"Func", "x":11.5, "y":4, "w":1.5}, {"label":"<i class='kb kb-Arrows-Left'></i>", "x":13.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Down'></i>", "x":14.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Right'></i>", "x":15.25, "y":4.25}, {"label":"0", "x":16.5, "y":4}, {"label":".", "x":17.5, "y":4}]
+ },
+ "LAYOUT_wkl_2_right_mods": {
+ "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":"Del", "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, "h":2}, {"label":"CapsLock", "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":15.5, "y":2}, {"label":"5", "x":16.5, "y":2}, {"label":"6", "x":17.5, "y":2}, {"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":1.75}, {"label":"<i class='kb kb-Arrows-Up'></i>", "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":"Left Ctrl", "x":0, "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.5}, {"label":"Func", "x":11.5, "y":4, "w":1.5}, {"label":"<i class='kb kb-Arrows-Left'></i>", "x":13.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Down'></i>", "x":14.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Right'></i>", "x":15.25, "y":4.25}, {"label":"0", "x":16.5, "y":4}, {"label":".", "x":17.5, "y":4}]
+ },
+ "LAYOUT_wkl_3_right_mods": {
+ "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":"Del", "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, "h":2}, {"label":"CapsLock", "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":15.5, "y":2}, {"label":"5", "x":16.5, "y":2}, {"label":"6", "x":17.5, "y":2}, {"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":1.75}, {"label":"<i class='kb kb-Arrows-Up'></i>", "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":"Left Ctrl", "x":0, "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 Alt", "x":10, "y":4}, {"label":"Right Ctrl", "x":11, "y":4}, {"label":"Func", "x":12, "y":4}, {"label":"<i class='kb kb-Arrows-Left'></i>", "x":13.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Down'></i>", "x":14.25, "y":4.25}, {"label":"<i class='kb kb-Arrows-Right'></i>", "x":15.25, "y":4.25}, {"label":"0", "x":16.5, "y":4}, {"label":".", "x":17.5, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/esca/getawayvan/config.h b/keyboards/esca/getawayvan/config.h
index 34498cc3fb..a3ccbc7f30 100644
--- a/keyboards/esca/getawayvan/config.h
+++ b/keyboards/esca/getawayvan/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xE5CA
-#define PRODUCT_ID 0x0401
-#define DEVICE_VER 0x0001
-#define MANUFACTURER esca
-#define PRODUCT GetawayVan
-
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/esca/getawayvan/info.json b/keyboards/esca/getawayvan/info.json
index e49d4a8e47..2d793203f3 100644
--- a/keyboards/esca/getawayvan/info.json
+++ b/keyboards/esca/getawayvan/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GetawayVan",
+ "manufacturer": "esca",
"url": "",
"maintainer": "esca",
+ "usb": {
+ "vid": "0xE5CA",
+ "pid": "0x0401",
+ "device_version": "0.0.1"
+ },
"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":"NoNo Key", "x":11, "y":0, "w":1.75}, {"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":"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}, {"x":10.75, "y":2}, {"label":"Shift", "x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Win", "x":1, "y":3, "w":1.25}, {"label":"Alt", "x":2.25, "y":3}, {"label":"", "x":3.25, "y":3, "w":2.75}, {"label":"", "x":6, "y":3, "w":2.25}, {"label":"Alt", "x":8.25, "y":3, "w":1.25}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}]
diff --git a/keyboards/esca/getawayvan/keymaps/7u/keymap.c b/keyboards/esca/getawayvan/keymaps/7u/keymap.c
index c837b1d4af..5e20978332 100644
--- a/keyboards/esca/getawayvan/keymaps/7u/keymap.c
+++ b/keyboards/esca/getawayvan/keymaps/7u/keymap.c
@@ -36,7 +36,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
),
[3] = LAYOUT( /* LAYER 3 */
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, 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, RGB_TOG, KC_TRNS, KC_TRNS
diff --git a/keyboards/esca/getawayvan_f042/config.h b/keyboards/esca/getawayvan_f042/config.h
index 6812d4e52b..a3ccbc7f30 100644
--- a/keyboards/esca/getawayvan_f042/config.h
+++ b/keyboards/esca/getawayvan_f042/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xE5CA
-#define PRODUCT_ID 0x0401
-#define DEVICE_VER 0x0001
-#define MANUFACTURER esca
-#define PRODUCT GetawayVan
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/esca/getawayvan_f042/info.json b/keyboards/esca/getawayvan_f042/info.json
index e49d4a8e47..2d793203f3 100644
--- a/keyboards/esca/getawayvan_f042/info.json
+++ b/keyboards/esca/getawayvan_f042/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GetawayVan",
+ "manufacturer": "esca",
"url": "",
"maintainer": "esca",
+ "usb": {
+ "vid": "0xE5CA",
+ "pid": "0x0401",
+ "device_version": "0.0.1"
+ },
"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":"NoNo Key", "x":11, "y":0, "w":1.75}, {"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":"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}, {"x":10.75, "y":2}, {"label":"Shift", "x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Win", "x":1, "y":3, "w":1.25}, {"label":"Alt", "x":2.25, "y":3}, {"label":"", "x":3.25, "y":3, "w":2.75}, {"label":"", "x":6, "y":3, "w":2.25}, {"label":"Alt", "x":8.25, "y":3, "w":1.25}, {"x":9.75, "y":3}, {"x":10.75, "y":3}, {"x":11.75, "y":3}]
diff --git a/keyboards/esca/getawayvan_f042/keymaps/7u/keymap.c b/keyboards/esca/getawayvan_f042/keymaps/7u/keymap.c
index c837b1d4af..5e20978332 100644
--- a/keyboards/esca/getawayvan_f042/keymaps/7u/keymap.c
+++ b/keyboards/esca/getawayvan_f042/keymaps/7u/keymap.c
@@ -36,7 +36,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
),
[3] = LAYOUT( /* LAYER 3 */
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
KC_TRNS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, 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, RGB_TOG, KC_TRNS, KC_TRNS
diff --git a/keyboards/eternal_keypad/config.h b/keyboards/eternal_keypad/config.h
index 5b5ad02f44..29933bcbb0 100644
--- a/keyboards/eternal_keypad/config.h
+++ b/keyboards/eternal_keypad/config.h
@@ -19,13 +19,6 @@ 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 0xDB00
-#define DEVICE_VER 0x0001
-#define MANUFACTURER duckyb
-#define PRODUCT eternal_keypad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
@@ -62,6 +54,11 @@ 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 RGBLED_NUM 8
+#define RGBLIGHT_SLEEP
+#define RGBLIGHT_ANIMATIONS
+
//#define RGB_DI_PIN E2
//#ifdef RGB_DI_PIN
//# define RGBLED_NUM 16
diff --git a/keyboards/eternal_keypad/info.json b/keyboards/eternal_keypad/info.json
index 2bdf9624ce..55c4d67bed 100644
--- a/keyboards/eternal_keypad/info.json
+++ b/keyboards/eternal_keypad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "eternal_keypad",
+ "manufacturer": "duckyb",
"url": "https://github.com/duckyb/eternal-keypad",
"maintainer": "duckyb",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0xDB00",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/eternal_keypad/keymaps/default/keymap.c b/keyboards/eternal_keypad/keymaps/default/keymap.c
index f4d06bc1ff..d94b0781f6 100644
--- a/keyboards/eternal_keypad/keymaps/default/keymap.c
+++ b/keyboards/eternal_keypad/keymaps/default/keymap.c
@@ -44,23 +44,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F15, KC_LCTL, OSL(_FN), KC_LALT, KC_SPC, LT(_ARROW, KC_0)
),
/* Arrows Layer
- * ,-----------------------------------------.
- * | | | | | | | | |
- * | |-------+----+----+-----+---+---+---|
- * | | | | UP| | | | |
- * |----||-------+----+----+-----+---+---+---|
- * | || |LEFT|DOWN|RIGHT| | | |
- * |----||-------+----+----+-----+---+---+---|
- * | || | | | | | | |
- * |----||-----------------------------------|
- * | RST|| | | | | |
- * `----'`-----------------------------------'
+ * ,--------------------------------------------------.
+ * | | | | | | | | |
+ * | |-------+----+----+-----+----+-------+-------|
+ * | | | | UP| |RGB?| HUE+ | HUE- |
+ * |----||-------+----+----+-----+----+-------+-------|
+ * | || |LEFT|DOWN|RIGHT| |BRIGHT+|BRIGHT-|
+ * |----||-------+----+----+-----+----+-------+-------|
+ * | || | | | | | MODE+ | MODE- |
+ * |----||--------------------------------------------|
+ * | RST|| | | | | |
+ * `----'`--------------------------------------------'
*/
[_ARROW] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______,
- _______, _______, KC_UP, _______, _______, _______, _______,
- _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_UP, _______, RGB_TOG, RGB_HUI, RGB_HUD,
+ _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, RGB_VAI, RGB_VAD,
+ _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_RMOD,
QK_BOOT, _______, _______, _______, _______, _______
),
/* Function Layer
diff --git a/keyboards/eternal_keypad/keymaps/kyek/config.h b/keyboards/eternal_keypad/keymaps/kyek/config.h
index 226b16e546..36ab46334c 100644
--- a/keyboards/eternal_keypad/keymaps/kyek/config.h
+++ b/keyboards/eternal_keypad/keymaps/kyek/config.h
@@ -17,5 +17,3 @@
#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
index 592e73bc74..1dd2f2f0b3 100644
--- a/keyboards/eternal_keypad/keymaps/kyek/keymap.c
+++ b/keyboards/eternal_keypad/keymaps/kyek/keymap.c
@@ -57,11 +57,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----'`-----------------------------------'
*/
[_ARROW] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______,
- _______, _______, KC_UP, _______, _______, _______, _______,
- _______, KC_DEL , KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, RGB_MODE_RGBTEST, RGB_TOG, RGB_HUI,
+ _______, _______, KC_UP, _______, _______, RGB_MODE_PLAIN, RGB_HUD,
+ _______, KC_DEL , KC_LEFT, KC_DOWN, KC_RIGHT, _______, RGB_MODE_BREATHE, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, RGB_MODE_SWIRL, RGB_VAD,
+ QK_BOOT, _______, _______, _______, _______, _______
),
/* Function Layer
* ,-------------------------------------.
diff --git a/keyboards/eternal_keypad/keymaps/lefty/keymap.c b/keyboards/eternal_keypad/keymaps/lefty/keymap.c
index 886ac25ccd..2b14774aeb 100644
--- a/keyboards/eternal_keypad/keymaps/lefty/keymap.c
+++ b/keyboards/eternal_keypad/keymaps/lefty/keymap.c
@@ -44,24 +44,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F15, KC_LCTL, OSL(_FN), KC_LALT, KC_SPC, LT(_ARROW, KC_0)
),
/* Arrows Layer
- * ,-----------------------------------------.
- * | | | | | | | | |
- * | |-------+----+----+-----+---+---+---|
- * | | | | UP| | | | |
- * |----||-------+----+----+-----+---+---+---|
- * | || |RIGHT|DOWN|LEFT| | | |
- * |----||-------+----+----+-----+---+---+---|
- * | || | | | | | | |
- * |----||-----------------------------------|
- * | RST|| | | | | |
- * `----'`-----------------------------------'
+ * ,--------------------------------------------------.
+ * | | | | | | | | |
+ * | |-------+----+----+-----+----+-------+-------|
+ * | | | | UP| |RGB?| HUE+ | HUE- |
+ * |----||-------+----+----+-----+----+-------+-------|
+ * | || |LEFT|DOWN|RIGHT| |BRIGHT+|BRIGHT-|
+ * |----||-------+----+----+-----+----+-------+-------|
+ * | || | | | | | MODE+ | MODE- |
+ * |----||--------------------------------------------|
+ * | RST|| | | | | |
+ * `----'`--------------------------------------------'
*/
[_ARROW] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______,
- _______, _______, KC_UP, _______, _______, _______, _______,
- _______, _______, KC_RIGHT,KC_DOWN, KC_LEFT, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______
+ _______, _______, KC_UP, _______, RGB_TOG, RGB_HUI, RGB_HUD,
+ _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, RGB_VAI, RGB_VAD,
+ _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_RMOD,
+ QK_BOOT, _______, _______, _______, _______, _______
),
/* Function Layer
* ,-------------------------------------.
diff --git a/keyboards/eternal_keypad/readme.md b/keyboards/eternal_keypad/readme.md
index 196f51b31d..05c13bc516 100644
--- a/keyboards/eternal_keypad/readme.md
+++ b/keyboards/eternal_keypad/readme.md
@@ -23,5 +23,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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)
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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
index e0403a960b..4d1d6e2d05 100644
--- a/keyboards/eternal_keypad/rules.mk
+++ b/keyboards/eternal_keypad/rules.mk
@@ -14,5 +14,5 @@ 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
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/eu_isolation/config.h b/keyboards/eu_isolation/config.h
index e1564b8d6b..0681896cb9 100644
--- a/keyboards/eu_isolation/config.h
+++ b/keyboards/eu_isolation/config.h
@@ -16,13 +16,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x4373
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TuckTuckFloof
-#define PRODUCT EU ISOlation
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
@@ -30,7 +23,6 @@
/* NIU Mini PCB default pin-out */
#define MATRIX_ROW_PINS { D2, D3, F1, F0 }
#define MATRIX_COL_PINS { D0, D1, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/eu_isolation/eu_isolation.h b/keyboards/eu_isolation/eu_isolation.h
index f4c9f11085..90ff29e69f 100644
--- a/keyboards/eu_isolation/eu_isolation.h
+++ b/keyboards/eu_isolation/eu_isolation.h
@@ -20,10 +20,10 @@
#define ___ KC_NO
#define LAYOUT_euiso_mit( \
- k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ 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, \
- k32, k33, k34, k35, k36, k37, k39, k3a, k3b, k3c, k3d \
+ k32, k33, k34, k35, k36, k37, k39, k3a, k3b, k3c, k3d \
) \
{ \
{ ___, ___, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
@@ -33,10 +33,10 @@
}
#define LAYOUT_euiso_ortho( \
- k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ 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, \
- k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d \
+ k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d \
) \
{ \
{ ___, ___, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
@@ -46,10 +46,10 @@
}
#define LAYOUT_euiso_bigspace( \
- k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
+ 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, \
- k32, k33, k37, k3c, k3d \
+ k32, k33, k37, k3c, k3d \
) \
{ \
{ ___, ___, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d }, \
diff --git a/keyboards/eu_isolation/info.json b/keyboards/eu_isolation/info.json
index 03de853c42..5d82ca333b 100644
--- a/keyboards/eu_isolation/info.json
+++ b/keyboards/eu_isolation/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "EUISOlation",
+ "keyboard_name": "EU ISOlation",
+ "manufacturer": "TuckTuckFloof",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x4373",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_euiso_ortho": {
"layout": [
@@ -17,6 +23,9 @@
{"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},
@@ -29,8 +38,9 @@
{"x":11, "y":1},
{"x":12, "y":1},
{"x":13, "y":1},
- {"x":0, "y":1},
- {"x":1, "y":1},
+
+ {"x":0, "y":2},
+ {"x":1, "y":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
@@ -43,8 +53,7 @@
{"x":11, "y":2},
{"x":12, "y":2},
{"x":13, "y":2},
- {"x":0, "y":2},
- {"x":1, "y":2},
+
{"x":2, "y":3},
{"x":3, "y":3},
{"x":4, "y":3},
@@ -74,6 +83,9 @@
{"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},
@@ -86,8 +98,9 @@
{"x":11, "y":1},
{"x":12, "y":1},
{"x":13, "y":1},
- {"x":0, "y":1},
- {"x":1, "y":1},
+
+ {"x":0, "y":2},
+ {"x":1, "y":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
@@ -100,8 +113,7 @@
{"x":11, "y":2},
{"x":12, "y":2},
{"x":13, "y":2},
- {"x":0, "y":2},
- {"x":1, "y":2},
+
{"x":2, "y":3},
{"x":3, "y":3},
{"x":4, "y":3},
@@ -130,6 +142,9 @@
{"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},
@@ -142,8 +157,9 @@
{"x":11, "y":1},
{"x":12, "y":1},
{"x":13, "y":1},
- {"x":0, "y":1},
- {"x":1, "y":1},
+
+ {"x":0, "y":2},
+ {"x":1, "y":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
@@ -156,8 +172,7 @@
{"x":11, "y":2},
{"x":12, "y":2},
{"x":13, "y":2},
- {"x":0, "y":2},
- {"x":1, "y":2},
+
{"x":2, "y":3, "w":1.25},
{"x":3.25, "y":3, "w":1.25},
{"x":4.5, "y":3, "w":7},
diff --git a/keyboards/eu_isolation/readme.md b/keyboards/eu_isolation/readme.md
index 711981ff02..c1272ea6a9 100644
--- a/keyboards/eu_isolation/readme.md
+++ b/keyboards/eu_isolation/readme.md
@@ -16,7 +16,7 @@ enters from you collection of keyboard kits.
Enter the bootloader in 3 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**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
## Information
diff --git a/keyboards/evancookaudio/sleepingdinosaur/config.h b/keyboards/evancookaudio/sleepingdinosaur/config.h
index ca1bdbf1c2..73c24861c5 100644
--- a/keyboards/evancookaudio/sleepingdinosaur/config.h
+++ b/keyboards/evancookaudio/sleepingdinosaur/config.h
@@ -18,13 +18,6 @@
#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
@@ -39,4 +32,3 @@
#define MATRIX_ROW_PINS {D1, D0, D4, C6, D7}
#define MATRIX_COL_PINS {B3, B1, F7, F6, F5, F4}
-#define UNUSED_PINS
diff --git a/keyboards/evancookaudio/sleepingdinosaur/info.json b/keyboards/evancookaudio/sleepingdinosaur/info.json
index 2c21777d49..de5cab5eb4 100644
--- a/keyboards/evancookaudio/sleepingdinosaur/info.json
+++ b/keyboards/evancookaudio/sleepingdinosaur/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "evancook.audio sleepingdinosaur",
+ "keyboard_name": "sleepingdinosaur",
+ "manufacturer": "evancook.audio",
"url": "https://evancook.audio/",
"maintainer": "evanmcook",
+ "usb": {
+ "vid": "0x636F",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/evancookaudio/tenpad/config.h b/keyboards/evancookaudio/tenpad/config.h
index c9d7d05251..f72ffeb685 100644
--- a/keyboards/evancookaudio/tenpad/config.h
+++ b/keyboards/evancookaudio/tenpad/config.h
@@ -18,13 +18,6 @@
#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
@@ -40,5 +33,4 @@
#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
index 52c62775dc..02ba27ccf3 100644
--- a/keyboards/evancookaudio/tenpad/info.json
+++ b/keyboards/evancookaudio/tenpad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "evancook.audio tenpad",
+ "keyboard_name": "tenpad",
+ "manufacturer": "evancook.audio",
"url": "https://evancook.audio/",
"maintainer": "evanmcook",
+ "usb": {
+ "vid": "0x636F",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_2x5": {
diff --git a/keyboards/eve/meteor/config.h b/keyboards/eve/meteor/config.h
index a6b2c9b69d..fd40e2e568 100644
--- a/keyboards/eve/meteor/config.h
+++ b/keyboards/eve/meteor/config.h
@@ -19,19 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x4556 // "EV"
-#define PRODUCT_ID 0x4D54 // "MT"
-#define DEVICE_VER 0x0200
-#define MANUFACTURER EVE
-#define PRODUCT Meteor
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
// 0 1 2 3 4 5 6 7 8 9 A B C D E
#define MATRIX_ROW_PINS { B5, B0, B1, B2, B3, B4 }
#define MATRIX_COL_PINS { C2, C3, C4, C5, C6, C7, A7, A6, A5, A4, A3, A2, A1, A0, D7}
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/eve/meteor/info.json b/keyboards/eve/meteor/info.json
index 4c86d09bfd..4ec8488889 100644
--- a/keyboards/eve/meteor/info.json
+++ b/keyboards/eve/meteor/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "EVE Meteor",
+ "keyboard_name": "Meteor",
+ "manufacturer": "EVE",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4556",
+ "pid": "0x4D54",
+ "device_version": "2.0.0"
+ },
"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":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":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":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":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":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, "y":5.5}, {"x":14, "y":5.5}]
diff --git a/keyboards/evil80/config.h b/keyboards/evil80/config.h
index 6876c0e086..bf086b394a 100644
--- a/keyboards/evil80/config.h
+++ b/keyboards/evil80/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evil
-#define PRODUCT Evil80
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -16,7 +9,6 @@
/* Planck PCB default pin-out */
#define MATRIX_ROW_PINS { F1, F4, F5, F0, B3, B0 }
#define MATRIX_COL_PINS { B2, D0, D1, D2, D3, D5, D4, D6, D7, B4, B1, C6, C7, E6, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evil80/info.json b/keyboards/evil80/info.json
index b37086c1a7..25d0dea712 100644
--- a/keyboards/evil80/info.json
+++ b/keyboards/evil80/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Evil80",
+ "manufacturer": "Evil",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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.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}, {"x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":3.5, "w":1.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":1.75}, {"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":"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/evolv/config.h b/keyboards/evolv/config.h
index 3a3ff3be35..babc1d88c1 100644
--- a/keyboards/evolv/config.h
+++ b/keyboards/evolv/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7865 // NA for NathanAlpha
-#define PRODUCT_ID 0x0E75 // For Evolv75
-#define DEVICE_VER 0x0001 // Revision pre-Alpha
-#define MANUFACTURER NathanAlpha
-#define PRODUCT Evolv75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
diff --git a/keyboards/evolv/info.json b/keyboards/evolv/info.json
index baa7b9c843..2eaf92e7d4 100644
--- a/keyboards/evolv/info.json
+++ b/keyboards/evolv/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Evolv75",
+ "manufacturer": "NathanAlpha",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7865",
+ "pid": "0x0E75",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_evolv_ansi": {
"layout": [
diff --git a/keyboards/evyd13/atom47/keymaps/LEdiodes/keymap.c b/keyboards/evyd13/atom47/keymaps/LEdiodes/keymap.c
index ae72a3fd94..06203112c0 100644
--- a/keyboards/evyd13/atom47/keymaps/LEdiodes/keymap.c
+++ b/keyboards/evyd13/atom47/keymaps/LEdiodes/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, TG(_L3), KC_SPC, KC_SPC, MO(_L2), KC_RALT, KC_APP, KC_RCTRL),
[_L2] = LAYOUT_split_space(
- _______, KC_VOLD, KC_VOLU, KC_MUTE, RESET, _______, KC_CALC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS,
+ _______, KC_VOLD, KC_VOLU, KC_MUTE, QK_BOOT, _______, KC_CALC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS,
KC_CAPS, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_INS, _______,
_______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
@@ -46,5 +46,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_1, KC_2, KC_3, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, KC_0, KC_DOT, _______, _______, _______, RESET)
+ _______, _______, _______, _______, KC_0, KC_DOT, _______, _______, _______, QK_BOOT)
};
diff --git a/keyboards/evyd13/atom47/keymaps/evyd13/keymap.c b/keyboards/evyd13/atom47/keymaps/evyd13/keymap.c
index 2150f33e2b..cb1eb4cf45 100644
--- a/keyboards/evyd13/atom47/keymaps/evyd13/keymap.c
+++ b/keyboards/evyd13/atom47/keymaps/evyd13/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT),
[_RA] = LAYOUT_split_space(
_______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, _______, _______,
diff --git a/keyboards/evyd13/atom47/keymaps/junonum_a47/keymap.c b/keyboards/evyd13/atom47/keymaps/junonum_a47/keymap.c
index 8204bc32b4..6ccf1ba9e8 100644
--- a/keyboards/evyd13/atom47/keymaps/junonum_a47/keymap.c
+++ b/keyboards/evyd13/atom47/keymaps/junonum_a47/keymap.c
@@ -93,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Safety layer for special functions
[_ADJUST] = LAYOUT_split_space(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DP_ON,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/evyd13/atom47/rev2/config.h b/keyboards/evyd13/atom47/rev2/config.h
index 42661c3311..a314395501 100644
--- a/keyboards/evyd13/atom47/rev2/config.h
+++ b/keyboards/evyd13/atom47/rev2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x8E66
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Atom47 rev2
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS {B1,B2,B3,B7}
#define MATRIX_COL_PINS {D7,D5,F0,F1,F4,F6,F7,D4,C7,C6,D6,B5,B4}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
diff --git a/keyboards/evyd13/atom47/rev2/info.json b/keyboards/evyd13/atom47/rev2/info.json
index 5603c0e247..6a57c77d64 100644
--- a/keyboards/evyd13/atom47/rev2/info.json
+++ b/keyboards/evyd13/atom47/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Atom47 rev2",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x8E66",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_space": {
"layout": [
diff --git a/keyboards/evyd13/atom47/rev3/config.h b/keyboards/evyd13/atom47/rev3/config.h
index 90cb4a1952..4ca725705b 100644
--- a/keyboards/evyd13/atom47/rev3/config.h
+++ b/keyboards/evyd13/atom47/rev3/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x0E6D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Atom47 rev3
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS {B3,B2,B1,B0}
#define MATRIX_COL_PINS {B7,F0,F1,F4,F6,D4,D6,D7,B4,B5,C6,C7,F7}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
diff --git a/keyboards/evyd13/atom47/rev3/info.json b/keyboards/evyd13/atom47/rev3/info.json
index fc602f699b..bbeaea667e 100644
--- a/keyboards/evyd13/atom47/rev3/info.json
+++ b/keyboards/evyd13/atom47/rev3/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Atom47 rev3",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x0E6D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_space": {
"layout": [
diff --git a/keyboards/evyd13/atom47/rev4/config.h b/keyboards/evyd13/atom47/rev4/config.h
index a88c538716..8d8b477e4a 100644
--- a/keyboards/evyd13/atom47/rev4/config.h
+++ b/keyboards/evyd13/atom47/rev4/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x8446
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Atom47 rev4
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS {D0,C2,C5,C6}
#define MATRIX_COL_PINS {C4,C7,B7,B6,B5,B2,B1,B0,D6,D5,D4,D3,D2}
-#define UNUSED_PINS
#define ENCODERS_PAD_A { B3 }
#define ENCODERS_PAD_B { B4 }
diff --git a/keyboards/evyd13/atom47/rev4/info.json b/keyboards/evyd13/atom47/rev4/info.json
index d0fbf98742..8e117850cb 100644
--- a/keyboards/evyd13/atom47/rev4/info.json
+++ b/keyboards/evyd13/atom47/rev4/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Atom47 rev4",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x8446",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_space": {
"layout": [
diff --git a/keyboards/evyd13/atom47/rev5/config.h b/keyboards/evyd13/atom47/rev5/config.h
index 25c419b4cd..d16ac9404f 100644
--- a/keyboards/evyd13/atom47/rev5/config.h
+++ b/keyboards/evyd13/atom47/rev5/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x92EA
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Atom47 rev5
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS {B1,B2,B3,D4}
#define MATRIX_COL_PINS {F0,F1,F4,F5,F6,F7,E6,D7,B4,B5,B6,C6,C7}
-#define UNUSED_PINS {B0,B7,D2,D3,D5,D6}
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/atom47/rev5/info.json b/keyboards/evyd13/atom47/rev5/info.json
index eae42fe746..4ecc240182 100644
--- a/keyboards/evyd13/atom47/rev5/info.json
+++ b/keyboards/evyd13/atom47/rev5/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Atom47 rev5",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x92EA",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_space": {
"layout": [
diff --git a/keyboards/evyd13/eon40/config.h b/keyboards/evyd13/eon40/config.h
index 14cbe42099..3a3fdfccff 100644
--- a/keyboards/evyd13/eon40/config.h
+++ b/keyboards/evyd13/eon40/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x0140
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Eon40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS {B7,D5,F5,F6}
#define MATRIX_COL_PINS {F0,F1,F4,D3,D4,D6,D7,B4,B5,B6,C6,C7}
-#define UNUSED_PINS {B1,B2,B3}
#define ENCODERS_PAD_A { E6, B0, D1 }
#define ENCODERS_PAD_B { F7, D0, D2 }
diff --git a/keyboards/evyd13/eon40/info.json b/keyboards/evyd13/eon40/info.json
index 38348b49b9..e255caf9fc 100644
--- a/keyboards/evyd13/eon40/info.json
+++ b/keyboards/evyd13/eon40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Eon40",
+ "manufacturer": "Evyd13",
"url": "https://maartenwut.com/product/eon40/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x0140",
+ "device_version": "0.0.1"
+ },
"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/evyd13/eon65/config.h b/keyboards/evyd13/eon65/config.h
index 08922a2d4c..c9796792aa 100644
--- a/keyboards/evyd13/eon65/config.h
+++ b/keyboards/evyd13/eon65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0xAEB4
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Eon65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS {D3,D5,B1,B2,B3}
#define MATRIX_COL_PINS {B0,D2,D4,D6,D7,B4,B5,B6,C6,C7,F7,F6,F5,F4,F1,F0}
-#define UNUSED_PINS {B7,D0,D1}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/eon65/info.json b/keyboards/evyd13/eon65/info.json
index 41b1b056ee..26f70f5a52 100644
--- a/keyboards/evyd13/eon65/info.json
+++ b/keyboards/evyd13/eon65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Eon65",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0xAEB4",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/evyd13/eon65/keymaps/mrsendyyk/keymap.c b/keyboards/evyd13/eon65/keymaps/mrsendyyk/keymap.c
index f9c7178f6a..091b0749a9 100644
--- a/keyboards/evyd13/eon65/keymaps/mrsendyyk/keymap.c
+++ b/keyboards/evyd13/eon65/keymaps/mrsendyyk/keymap.c
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └────┴────┴────┴────────────────────────┴────┴────┴┴┴───┴───┴───┘
*/
[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_TRNS, KC_TRNS,
- KC_BRIU, KC_TRNS, KC_TRNS, KC_END, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_EJCT, KC_TRNS,
+ KC_BRIU, KC_TRNS, KC_TRNS, KC_END, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_EJCT, KC_TRNS,
KC_BRID, KC_TRNS, KC_SLCK, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_TRNS,
KC_VOLU, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_NLCK, KC_MAIL, KC_TRNS, KC_TRNS, KC_TRNS, KC_PAUS, KC_TRNS, KC_TRNS,
KC_VOLD, KC_MRWD, KC_MFFD, KC_MPLY, KC_MSTP, KC_NO, KC_MPRV, KC_NO, KC_MNXT
diff --git a/keyboards/evyd13/eon75/config.h b/keyboards/evyd13/eon75/config.h
index 203cfe8a7d..c77a0c9be9 100644
--- a/keyboards/evyd13/eon75/config.h
+++ b/keyboards/evyd13/eon75/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x5C62
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Eon75
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 8
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS {D1,D0,D3,D2,D6,D4,D7,B4,B5,B6,C6,C7}
#define MATRIX_COL_PINS {E6,F0,F1,F4,F5,F6,F7,B3}
-#define UNUSED_PINS {B2,B1}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/eon75/info.json b/keyboards/evyd13/eon75/info.json
index 9730b069e8..4fe35a9090 100644
--- a/keyboards/evyd13/eon75/info.json
+++ b/keyboards/evyd13/eon75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Eon75",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x5C62",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/evyd13/eon87/config.h b/keyboards/evyd13/eon87/config.h
index bfa593db51..4379f6106e 100644
--- a/keyboards/evyd13/eon87/config.h
+++ b/keyboards/evyd13/eon87/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0xAA6B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Eon87
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS {B1,B2,B3,D4,D1,D5}
#define MATRIX_COL_PINS {F0,F1,F4,F5,F6,F7,C7,C6,B6,B5,B4,D7,D6,E6,B7,D3,D2}
-#define UNUSED_PINS {B0}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/eon87/info.json b/keyboards/evyd13/eon87/info.json
index 1020ccd06e..d3bde7565e 100644
--- a/keyboards/evyd13/eon87/info.json
+++ b/keyboards/evyd13/eon87/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Eon87",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0xAA6B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/evyd13/eon95/config.h b/keyboards/evyd13/eon95/config.h
index 6a6b329c29..4fb9906832 100644
--- a/keyboards/evyd13/eon95/config.h
+++ b/keyboards/evyd13/eon95/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x8A18
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Eon95
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 10
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS {D1,D0,D3,D2,D6,D4,D7,B4,B5,B6,C6,C7}
#define MATRIX_COL_PINS {E6,F0,F1,F4,F5,F6,F7,B3,B2,B1}
-#define UNUSED_PINS {}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/eon95/info.json b/keyboards/evyd13/eon95/info.json
index 18cb38ad2f..c165088997 100644
--- a/keyboards/evyd13/eon95/info.json
+++ b/keyboards/evyd13/eon95/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Eon95",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x8A18",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/evyd13/fin_pad/config.h b/keyboards/evyd13/fin_pad/config.h
new file mode 100644
index 0000000000..2155d337a8
--- /dev/null
+++ b/keyboards/evyd13/fin_pad/config.h
@@ -0,0 +1,20 @@
+// Copyright 2022 Evelien Dekkers (@evyd13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/*
+ * 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
diff --git a/keyboards/evyd13/fin_pad/info.json b/keyboards/evyd13/fin_pad/info.json
new file mode 100644
index 0000000000..f2fb0b90a7
--- /dev/null
+++ b/keyboards/evyd13/fin_pad/info.json
@@ -0,0 +1,88 @@
+{
+ "manufacturer": "Evelien Dekkers",
+ "keyboard_name": "Fin Pad",
+ "maintainer": "evyd13",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["C4", "C5", "D0", "C2"],
+ "rows": ["C6", "C7", "B7", "B6", "B5", "B4"]
+ },
+ "community_layouts": [
+ "numpad_6x4",
+ "ortho_6x4"
+ ],
+ "processor": "atmega32u2",
+ "url": "",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0xA6E2",
+ "vid": "0x4705"
+ },
+ "layout_aliases": {
+ "LAYOUT_all": "LAYOUT_ortho_6x4"
+ },
+ "layouts": {
+ "LAYOUT_ortho_6x4": {
+ "layout": [
+ {"matrix": [0, 0], "label":"ESC", "x":0, "y":0},
+ {"matrix": [0, 1], "label":"TAB", "x":1, "y":0},
+ {"matrix": [0, 2], "label":"PEQL", "x":2, "y":0},
+ {"matrix": [0, 3], "label":"BSPC", "x":3, "y":0},
+ {"matrix": [1, 0], "label":"NUM", "x":0, "y":1.25},
+ {"matrix": [1, 1], "label":"PSLS", "x":1, "y":1.25},
+ {"matrix": [1, 2], "label":"PAST", "x":2, "y":1.25},
+ {"matrix": [1, 3], "label":"PMNS", "x":3, "y":1.25},
+ {"matrix": [2, 0], "label":"P7", "x":0, "y":2.25},
+ {"matrix": [2, 1], "label":"P8", "x":1, "y":2.25},
+ {"matrix": [2, 2], "label":"P9", "x":2, "y":2.25},
+ {"matrix": [2, 3], "label":"PPLS", "x":3, "y":2.25},
+ {"matrix": [3, 0], "label":"P4", "x":0, "y":3.25},
+ {"matrix": [3, 1], "label":"P5", "x":1, "y":3.25},
+ {"matrix": [3, 2], "label":"P6", "x":2, "y":3.25},
+ {"matrix": [3, 3], "label":"PPLS", "x":3, "y":3.25},
+ {"matrix": [4, 0], "label":"P1", "x":0, "y":4.25},
+ {"matrix": [4, 1], "label":"P2", "x":1, "y":4.25},
+ {"matrix": [4, 2], "label":"P3", "x":2, "y":4.25},
+ {"matrix": [4, 3], "label":"PENT", "x":3, "y":4.25},
+ {"matrix": [5, 0], "label":"P0", "x":0, "y":5.25},
+ {"matrix": [5, 1], "label":"P0", "x":1, "y":5.25},
+ {"matrix": [5, 2], "label":"PDOT", "x":2, "y":5.25},
+ {"matrix": [5, 3], "label":"PENT", "x":3, "y":5.25}
+ ]
+ },
+ "LAYOUT_numpad_6x4": {
+ "layout": [
+ {"matrix": [0, 0], "label":"ESC", "x":0, "y":0},
+ {"matrix": [0, 1], "label":"TAB", "x":1, "y":0},
+ {"matrix": [0, 2], "label":"PEQL", "x":2, "y":0},
+ {"matrix": [0, 3], "label":"BSPC", "x":3, "y":0},
+ {"matrix": [1, 0], "label":"NUM", "x":0, "y":1.25},
+ {"matrix": [1, 1], "label":"PSLS", "x":1, "y":1.25},
+ {"matrix": [1, 2], "label":"PAST", "x":2, "y":1.25},
+ {"matrix": [1, 3], "label":"PMNS", "x":3, "y":1.25},
+ {"matrix": [2, 0], "label":"P7", "x":0, "y":2.25},
+ {"matrix": [2, 1], "label":"P8", "x":1, "y":2.25},
+ {"matrix": [2, 2], "label":"P9", "x":2, "y":2.25},
+ {"matrix": [3, 0], "label":"P4", "x":0, "y":3.25},
+ {"matrix": [3, 1], "label":"P5", "x":1, "y":3.25},
+ {"matrix": [3, 2], "label":"P6", "x":2, "y":3.25},
+ {"matrix": [3, 3], "label":"PPLS", "x":3, "y":2.25, "h":2},
+ {"matrix": [4, 0], "label":"P1", "x":0, "y":4.25},
+ {"matrix": [4, 1], "label":"P2", "x":1, "y":4.25},
+ {"matrix": [4, 2], "label":"P3", "x":2, "y":4.25},
+ {"matrix": [5, 0], "label":"P0", "x":0, "y":5.25},
+ {"matrix": [5, 2], "label":"PDOT", "x":2, "y":5.25},
+ {"matrix": [5, 3], "label":"PENT", "x":3, "y":4.25, "h":2}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/evyd13/fin_pad/keymaps/default/keymap.c b/keyboards/evyd13/fin_pad/keymaps/default/keymap.c
new file mode 100644
index 0000000000..2e59bc05b7
--- /dev/null
+++ b/keyboards/evyd13/fin_pad/keymaps/default/keymap.c
@@ -0,0 +1,16 @@
+// Copyright 2022 Evelien Dekkers (@evyd13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_ortho_6x4(
+ KC_ESC, KC_TAB, KC_EQL, KC_BSPC,
+ KC_NUM, 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/evyd13/fin_pad/keymaps/via/keymap.c b/keyboards/evyd13/fin_pad/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f199e27981
--- /dev/null
+++ b/keyboards/evyd13/fin_pad/keymaps/via/keymap.c
@@ -0,0 +1,41 @@
+// Copyright 2022 Evelien Dekkers (@evyd13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_all(
+ KC_ESC, KC_TAB, KC_EQL, KC_BSPC,
+ KC_NUM, 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_all(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
+
diff --git a/keyboards/evyd13/fin_pad/keymaps/via/rules.mk b/keyboards/evyd13/fin_pad/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/evyd13/fin_pad/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/evyd13/fin_pad/readme.md b/keyboards/evyd13/fin_pad/readme.md
new file mode 100644
index 0000000000..bfeec8e449
--- /dev/null
+++ b/keyboards/evyd13/fin_pad/readme.md
@@ -0,0 +1,27 @@
+# Fin Pad
+
+![Fin Pad](https://i.imgur.com/OC5O2SZ.png)
+
+A replacement PCB for the Lin Dolphin Pad
+
+* Keyboard Maintainer: [Evelien Dekkers](https://github.com/evyd13)
+* Hardware Supported: Fin Pad PCB
+* Hardware Availability: [Open source on GitHub](https://github.com/evyd13/fin-pad)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make evyd13/fin_pad:default
+
+Flashing example for this keyboard:
+
+ make evyd13/fin_pad: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 `QK_BOOT` if it is available
diff --git a/keyboards/evyd13/fin_pad/rules.mk b/keyboards/evyd13/fin_pad/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/evyd13/fin_pad/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/evyd13/gh80_1800/config.h b/keyboards/evyd13/gh80_1800/config.h
index d2fa370c0d..c1e0a1533c 100644
--- a/keyboards/evyd13/gh80_1800/config.h
+++ b/keyboards/evyd13/gh80_1800/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x8B23
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT GH80 1800
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 11
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS {D5,B4,B5,B6,C6,C7,B0,B2,B1,B3}
#define MATRIX_COL_PINS {F0,F1,F4,F5,F6,F7,D3,D2,D1,D0,B7}
-#define UNUSED_PINS {E6}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/gh80_1800/info.json b/keyboards/evyd13/gh80_1800/info.json
index 5019157c06..d85a412c99 100644
--- a/keyboards/evyd13/gh80_1800/info.json
+++ b/keyboards/evyd13/gh80_1800/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GH80-1800",
+ "manufacturer": "Evyd13",
"url": "https://github.com/evyd13/gh80-series/tree/master/GH80-1800",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x8B23",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/evyd13/gh80_3700/config.h b/keyboards/evyd13/gh80_3700/config.h
index d05ca87958..a83c5563bf 100644
--- a/keyboards/evyd13/gh80_3700/config.h
+++ b/keyboards/evyd13/gh80_3700/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x633A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT GH80 3700
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS {B3,C7,C6,B6,B5,B4}
#define MATRIX_COL_PINS {B0,D7,D6,D4}
-#define UNUSED_PINS {}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/gh80_3700/info.json b/keyboards/evyd13/gh80_3700/info.json
index 8f6402a45e..a5c128d29b 100644
--- a/keyboards/evyd13/gh80_3700/info.json
+++ b/keyboards/evyd13/gh80_3700/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GH80-3700",
+ "manufacturer": "Evyd13",
"url": "https://github.com/evyd13/gh80-series/tree/master/GH80-3700",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x633A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_6x4": {
"layout": [
diff --git a/keyboards/evyd13/gud70/config.h b/keyboards/evyd13/gud70/config.h
index 395d1c303e..a6aeea3423 100644
--- a/keyboards/evyd13/gud70/config.h
+++ b/keyboards/evyd13/gud70/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x198B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Gud70
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS {D7,D6,D4,E6,B7}
#define MATRIX_COL_PINS {D5,D3,D2,D1,D0,B4,B5,B6,C6,C7,F0,F1,F4,F5,F6,F7}
-#define UNUSED_PINS {}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/gud70/info.json b/keyboards/evyd13/gud70/info.json
index bf0ac9df4e..c7d94c93a8 100644
--- a/keyboards/evyd13/gud70/info.json
+++ b/keyboards/evyd13/gud70/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Gud70",
+ "manufacturer": "Evyd13",
"url": "https://github.com/evyd13/gud70-pcb",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x198B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/evyd13/gud70/keymaps/evyd13/keymap.c b/keyboards/evyd13/gud70/keymaps/evyd13/keymap.c
index 45c332a5d7..2fd6f56f8c 100644
--- a/keyboards/evyd13/gud70/keymaps/evyd13/keymap.c
+++ b/keyboards/evyd13/gud70/keymaps/evyd13/keymap.c
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_APP),
[1] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______,
diff --git a/keyboards/evyd13/minitomic/config.h b/keyboards/evyd13/minitomic/config.h
index 01af62d69d..f17184715f 100644
--- a/keyboards/evyd13/minitomic/config.h
+++ b/keyboards/evyd13/minitomic/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x0145
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Minitomic
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS {B1,B3,D4,D6}
#define MATRIX_COL_PINS {C6,B6,B5,B4,D7,F0,F1,F4,F5,F6,F7,B7,E6}
-#define UNUSED_PINS {B2,D0,D1,D2,D3,D5}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/minitomic/info.json b/keyboards/evyd13/minitomic/info.json
index 388569fac8..650442a736 100644
--- a/keyboards/evyd13/minitomic/info.json
+++ b/keyboards/evyd13/minitomic/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Minitomic",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x0145",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_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":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.25}, {"x":1.25, "y":3, "w":1.25}, {"x":2.5, "y":3}, {"x":3.5, "y":3}, {"x":4.5, "y":3, "w":1.75}, {"x":6.25, "y":3, "w":2}, {"x":8.25, "y":3}, {"x":9.25, "y":3, "w":1.25}, {"x":10.5, "y":3, "w":1.25}, {"x":11.75, "y":3, "w":1.25}]
diff --git a/keyboards/evyd13/mx5160/config.h b/keyboards/evyd13/mx5160/config.h
index 3d25e1704f..eccfd287b7 100644
--- a/keyboards/evyd13/mx5160/config.h
+++ b/keyboards/evyd13/mx5160/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x5160
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT MX-5160
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS {C6,C7,B5,B6,D7,B4,D4,D6,D5,D3}
#define MATRIX_COL_PINS {D0,D1,D2,F7,F6,F5,F4,F1,F0,E6}
-#define UNUSED_PINS {B7,B0}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/evyd13/mx5160/info.json b/keyboards/evyd13/mx5160/info.json
index 7c1a0bb396..c1d7068048 100644
--- a/keyboards/evyd13/mx5160/info.json
+++ b/keyboards/evyd13/mx5160/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "mx5160",
+ "keyboard_name": "MX-5160",
+ "manufacturer": "Evyd13",
"url": "https://github.com/evyd13/mx-5160",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x5160",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"x":0, "y":0}, {"x":1, "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.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"x":14.5, "y":0}, {"x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":18, "y":0}, {"x":19, "y":0}, {"x":20, "y":0}, {"x":21, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2.5, "y":1, "w":1.5}, {"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":16, "y":1, "w":1.5}, {"x":18, "y":1}, {"x":19, "y":1}, {"x":20, "y":1}, {"x":21, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2.5, "y":2, "w":1.75}, {"x":4.25, "y":2}, {"x":5.25, "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}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":13.25, "y":2}, {"x":14.25, "y":2}, {"x":15.25, "y":2}, {"x":16.25, "y":2, "w":1.25}, {"x":18, "y":2}, {"x":19, "y":2}, {"x":20, "y":2}, {"x":21, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.5, "y":3, "w":1.25}, {"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}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.75}, {"x":16.5, "y":3}, {"x":18, "y":3}, {"x":19, "y":3}, {"x":20, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":5, "y":4, "w":1.5}, {"x":6.5, "y":4, "w":7}, {"x":13.5, "y":4, "w":1.5}, {"x":16, "y":4, "w":1.5}, {"x":18, "y":4}, {"x":19, "y":4}, {"x":20, "y":4}, {"x":21, "y":3, "h":2}]
diff --git a/keyboards/evyd13/nt210/readme.md b/keyboards/evyd13/nt210/readme.md
index b6b7bc940e..3a7117bcd1 100644
--- a/keyboards/evyd13/nt210/readme.md
+++ b/keyboards/evyd13/nt210/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/evyd13/nt650/config.h b/keyboards/evyd13/nt650/config.h
new file mode 100644
index 0000000000..91cf8ceccb
--- /dev/null
+++ b/keyboards/evyd13/nt650/config.h
@@ -0,0 +1,22 @@
+// Copyright 2022 Evelien Dekkers (@evyd13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define LED_PIN_ON_STATE 0
+
+/*
+ * 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
diff --git a/keyboards/evyd13/nt650/info.json b/keyboards/evyd13/nt650/info.json
new file mode 100644
index 0000000000..ca134daa2b
--- /dev/null
+++ b/keyboards/evyd13/nt650/info.json
@@ -0,0 +1,104 @@
+{
+ "manufacturer": "Evelien Dekkers",
+ "keyboard_name": "nt650",
+ "maintainer": "evyd13",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "ROW2COL",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "indicators": {
+ "caps_lock": "E6",
+ "scroll_lock": "E2"
+ },
+ "matrix_pins": {
+ "cols": ["F4", "F5", "F6", "C7", "C6", "B3", "B1", "B2", "B7", "D7", "B5", "B4", "D0", "B6", "D1"],
+ "rows": ["F7", "D6", "D4", "F1", "D5", "F0", "D3", "D2"]
+ },
+ "processor": "atmega32u4",
+ "url": "",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0xD5DF",
+ "vid": "0x4705"
+ },
+ "layout_aliases": {
+ "LAYOUT_all": "LAYOUT_ansi_split_space"
+ },
+ "layouts": {
+ "LAYOUT_ansi_split_space": {
+ "layout": [
+ {"matrix": [0, 0], "label":"ESC", "x":0, "y":0},
+ {"matrix": [1, 0], "label":"1", "x":1, "y":0},
+ {"matrix": [1, 1], "label":"2", "x":2, "y":0},
+ {"matrix": [1, 2], "label":"3", "x":3, "y":0},
+ {"matrix": [1, 3], "label":"4", "x":4, "y":0},
+ {"matrix": [2, 3], "label":"5", "x":5, "y":0},
+ {"matrix": [2, 4], "label":"6", "x":6, "y":0},
+ {"matrix": [1, 4], "label":"7", "x":7, "y":0},
+ {"matrix": [1, 5], "label":"8", "x":8, "y":0},
+ {"matrix": [1, 6], "label":"9", "x":9, "y":0},
+ {"matrix": [1, 7], "label":"0", "x":10, "y":0},
+ {"matrix": [2, 7], "label":"MINS", "x":11, "y":0},
+ {"matrix": [2, 5], "label":"EQL", "x":12, "y":0},
+ {"matrix": [3, 8], "label":"BSPC", "x":13, "y":0, "w":2},
+ {"matrix": [3, 0], "label":"TAB", "x":0, "y":1, "w":1.5},
+ {"matrix": [5, 0], "label":"Q", "x":1.5, "y":1},
+ {"matrix": [5, 1], "label":"W", "x":2.5, "y":1},
+ {"matrix": [5, 2], "label":"E", "x":3.5, "y":1},
+ {"matrix": [5, 3], "label":"R", "x":4.5, "y":1},
+ {"matrix": [3, 3], "label":"T", "x":5.5, "y":1},
+ {"matrix": [3, 4], "label":"Y", "x":6.5, "y":1},
+ {"matrix": [5, 4], "label":"U", "x":7.5, "y":1},
+ {"matrix": [5, 5], "label":"I", "x":8.5, "y":1},
+ {"matrix": [5, 6], "label":"O", "x":9.5, "y":1},
+ {"matrix": [5, 7], "label":"P", "x":10.5, "y":1},
+ {"matrix": [3, 7], "label":"LBRC", "x":11.5, "y":1},
+ {"matrix": [3, 5], "label":"RBRC", "x":12.5, "y":1},
+ {"matrix": [4, 8], "label":"BSLS", "x":13.5, "y":1, "w":1.5},
+ {"matrix": [3, 1], "label":"CAPS", "x":0, "y":2, "w":1.75},
+ {"matrix": [4, 0], "label":"A", "x":1.75, "y":2},
+ {"matrix": [4, 1], "label":"S", "x":2.75, "y":2},
+ {"matrix": [4, 2], "label":"D", "x":3.75, "y":2},
+ {"matrix": [4, 3], "label":"F", "x":4.75, "y":2},
+ {"matrix": [0, 3], "label":"G", "x":5.75, "y":2},
+ {"matrix": [0, 4], "label":"H", "x":6.75, "y":2},
+ {"matrix": [4, 4], "label":"J", "x":7.75, "y":2},
+ {"matrix": [4, 5], "label":"K", "x":8.75, "y":2},
+ {"matrix": [4, 6], "label":"L", "x":9.75, "y":2},
+ {"matrix": [4, 7], "label":"SCLN", "x":10.75, "y":2},
+ {"matrix": [0, 7], "label":"QUOT", "x":11.75, "y":2},
+ {"matrix": [6, 8], "label":"ENT", "x":12.75, "y":2, "w":2.25},
+ {"matrix": [3, 10], "label":"LSFT", "x":0, "y":3, "w":2.25},
+ {"matrix": [6, 0], "label":"Z", "x":2.25, "y":3},
+ {"matrix": [6, 1], "label":"X", "x":3.25, "y":3},
+ {"matrix": [6, 2], "label":"C", "x":4.25, "y":3},
+ {"matrix": [6, 3], "label":"V", "x":5.25, "y":3},
+ {"matrix": [7, 3], "label":"B", "x":6.25, "y":3},
+ {"matrix": [7, 4], "label":"N", "x":7.25, "y":3},
+ {"matrix": [6, 4], "label":"M", "x":8.25, "y":3},
+ {"matrix": [6, 5], "label":"COMM", "x":9.25, "y":3},
+ {"matrix": [6, 6], "label":"DOT", "x":10.25, "y":3},
+ {"matrix": [7, 7], "label":"SLSH", "x":11.25, "y":3},
+ {"matrix": [4, 10], "label":"RSFT", "x":12.25, "y":3, "w":1.75},
+ {"matrix": [3, 9], "label":"APP", "x":14, "y":3},
+ {"matrix": [2, 11], "label":"LCTL", "x":0, "y":4, "w":1.25},
+ {"matrix": [3, 11], "label":"LGUI", "x":1.25, "y":4},
+ {"matrix": [0, 9], "label":"LALT", "x":2.25, "y":4, "w":1.25},
+ {"matrix": [0, 13], "label":"SPC", "x":3.5, "y":4, "w":3},
+ {"matrix": [6, 9], "label":"SPC", "x":6.5, "y":4, "w":3},
+ {"matrix": [7, 9], "label":"RALT", "x":9.5, "y":4, "w":1.25},
+ {"matrix": [6, 11], "label":"RCTL", "x":10.75, "y":4},
+ {"matrix": [0, 12], "label":"UP", "x":13, "y":4},
+ {"matrix": [7, 12], "label":"LEFT", "x":12, "y":5},
+ {"matrix": [7, 13], "label":"DOWN", "x":13, "y":5},
+ {"matrix": [7, 14], "label":"RGHT", "x":14, "y":5}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/evyd13/nt650/keymaps/default/keymap.c b/keyboards/evyd13/nt650/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e9978376d0
--- /dev/null
+++ b/keyboards/evyd13/nt650/keymaps/default/keymap.c
@@ -0,0 +1,69 @@
+// Copyright 2022 Evelien Dekkers (@evyd13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// 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.
+enum layer_names {
+ _BASE,
+ _FUNC,
+ _LOCK,
+ _XTRA
+};
+
+#define LOCK_LED_PIN B0
+#define GRV_TG TG(_LOCK)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_ansi_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_TAB, KC_Q, KC_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(_FUNC),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_UP,
+ KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FUNC] = LAYOUT_ansi_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, _______,
+ _______, GRV_TG, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDN, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_APP, _______,
+ _______, _______, _______
+ ),
+ [_LOCK] = LAYOUT_ansi_split_space(
+ KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______
+ ),
+ [_XTRA] = LAYOUT_ansi_split_space(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______
+ )
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ setPinOutput(LOCK_LED_PIN);
+ switch (get_highest_layer(state)) {
+ case _LOCK:
+ writePin(LOCK_LED_PIN, 0);
+ break;
+ default: // for any other layers, or the default layer
+ writePin(LOCK_LED_PIN, 1);
+ break;
+ }
+ return state;
+}
diff --git a/keyboards/evyd13/nt650/keymaps/via/config.h b/keyboards/evyd13/nt650/keymaps/via/config.h
new file mode 100644
index 0000000000..fe36d02575
--- /dev/null
+++ b/keyboards/evyd13/nt650/keymaps/via/config.h
@@ -0,0 +1,6 @@
+// Copyright 2022 Evelien Dekkers (@evyd13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3 \ No newline at end of file
diff --git a/keyboards/evyd13/nt650/keymaps/via/keymap.c b/keyboards/evyd13/nt650/keymaps/via/keymap.c
new file mode 100644
index 0000000000..cc48f380eb
--- /dev/null
+++ b/keyboards/evyd13/nt650/keymaps/via/keymap.c
@@ -0,0 +1,32 @@
+// Copyright 2022 Evelien Dekkers (@evyd13)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT_ansi_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_TAB, KC_Q, KC_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_SPC, KC_RALT, KC_RCTL, KC_UP,
+ KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_ansi_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_PSCR, KC_SCRL, KC_PAUS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_END, KC_PGDN, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_APP, _______,
+ _______, _______, _______
+ ),
+ [2] = LAYOUT_ansi_split_space(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______
+ )
+};
diff --git a/keyboards/evyd13/nt650/keymaps/via/rules.mk b/keyboards/evyd13/nt650/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/evyd13/nt650/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/evyd13/nt650/readme.md b/keyboards/evyd13/nt650/readme.md
new file mode 100644
index 0000000000..ba2a967f32
--- /dev/null
+++ b/keyboards/evyd13/nt650/readme.md
@@ -0,0 +1,27 @@
+# nt650
+
+![nt650](https://i.imgur.com/z0Xi6qoh.png)
+
+A replacement controller PCB for the Leopold FC650M.
+
+* Keyboard Maintainer: [Evelien Dekkers](https://github.com/evyd13)
+* Hardware Supported: nt-650 PCB
+* Hardware Availability: [Open source on GitHub](https://github.com/evyd13/nt-series/tree/main/nt-650)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make evyd13/nt650:default
+
+Flashing example for this keyboard:
+
+ make evyd13/nt650: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 `QK_BOOT` if it is available
diff --git a/keyboards/evyd13/nt650/rules.mk b/keyboards/evyd13/nt650/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/evyd13/nt650/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/evyd13/nt660/config.h b/keyboards/evyd13/nt660/config.h
index f633a4206e..be1b892280 100644
--- a/keyboards/evyd13/nt660/config.h
+++ b/keyboards/evyd13/nt660/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x1F02
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT nt660
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS {B7,E6,F6,F7,C7}
#define MATRIX_COL_PINS {D6,D7,B4,B5,B6,C6,B0,B1,B2,B3,F0,F1,F4,F5,D4}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/nt660/info.json b/keyboards/evyd13/nt660/info.json
index 8f087c68c3..fb7f694e95 100644
--- a/keyboards/evyd13/nt660/info.json
+++ b/keyboards/evyd13/nt660/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "nt660",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x1F02",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/evyd13/nt660/keymaps/evyd13/keymap.c b/keyboards/evyd13/nt660/keymaps/evyd13/keymap.c
index b7eaa5d6c1..86528ebfaf 100644
--- a/keyboards/evyd13/nt660/keymaps/evyd13/keymap.c
+++ b/keyboards/evyd13/nt660/keymaps/evyd13/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, KC_SPC, _______, _______, _______, _______, _______, _______),
[_FL] = 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, RESET, KC_PSCR,
+ 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, QK_BOOT, KC_PSCR,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
_______, _______, _______, _______, _______, TG(_GA), _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______,
diff --git a/keyboards/evyd13/nt750/config.h b/keyboards/evyd13/nt750/config.h
index 076bb344a5..30f453ebd8 100644
--- a/keyboards/evyd13/nt750/config.h
+++ b/keyboards/evyd13/nt750/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x3320
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT nt750
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS {B2,B3,B7,D0,D1,D2}
#define MATRIX_COL_PINS {F0,F1,F4,F5,F6,F7,C7,C6,B6,B5,B4,D7,D6,D4,E6,B1,B0}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/nt750/info.json b/keyboards/evyd13/nt750/info.json
index 5342807d65..414d1f8ba1 100644
--- a/keyboards/evyd13/nt750/info.json
+++ b/keyboards/evyd13/nt750/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "nt750",
+ "manufacturer": "Evyd13",
"url": "https://github.com/evyd13/nt-series/tree/main/nt-750",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x3320",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/evyd13/nt980/config.h b/keyboards/evyd13/nt980/config.h
index e483ab46c9..b4757a844d 100644
--- a/keyboards/evyd13/nt980/config.h
+++ b/keyboards/evyd13/nt980/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0xAAF8
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT nt980
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, D1, D0, C6, C7, B5, B6, B4, D7, D4, D6 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, E6, D3, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/nt980/info.json b/keyboards/evyd13/nt980/info.json
index 8b1b32449e..c8c1060d42 100644
--- a/keyboards/evyd13/nt980/info.json
+++ b/keyboards/evyd13/nt980/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "nt980",
+ "manufacturer": "Evyd13",
"url": "",
- "maintainer": "maartenwut",
+ "maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0xAAF8",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/evyd13/omrontkl/config.h b/keyboards/evyd13/omrontkl/config.h
index 40f8384831..9f51b63a9f 100644
--- a/keyboards/evyd13/omrontkl/config.h
+++ b/keyboards/evyd13/omrontkl/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0xEA78
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT OmronTKL
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS {D0,D1,D2,D3,D4,B7}
#define MATRIX_COL_PINS {F0,C7,F1,C6,F4,B6,F5,B5,F6,B4,F7,D7,D6,D5,B3,B1,B2}
-#define UNUSED_PINS {E6,B0}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/omrontkl/info.json b/keyboards/evyd13/omrontkl/info.json
index 3f0dfb9bc3..6e9b2423f6 100644
--- a/keyboards/evyd13/omrontkl/info.json
+++ b/keyboards/evyd13/omrontkl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "OmronTKL",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0xEA78",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/evyd13/plain60/config.h b/keyboards/evyd13/plain60/config.h
index 987081a9f1..2cb4ad565c 100644
--- a/keyboards/evyd13/plain60/config.h
+++ b/keyboards/evyd13/plain60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x0160
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Plain60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/evyd13/plain60/info.json b/keyboards/evyd13/plain60/info.json
index 64eb305464..3b08a935dc 100644
--- a/keyboards/evyd13/plain60/info.json
+++ b/keyboards/evyd13/plain60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Plain60",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x0160",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/evyd13/plain60/keymaps/audio/keymap.c b/keyboards/evyd13/plain60/keymaps/audio/keymap.c
index 91ac37501c..6512cb3645 100644
--- a/keyboards/evyd13/plain60/keymaps/audio/keymap.c
+++ b/keyboards/evyd13/plain60/keymaps/audio/keymap.c
@@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
AU_TOG, MU_TOG, MU_MOD, CK_TOGG, _______, _______, _______, _______)
diff --git a/keyboards/evyd13/plain60/keymaps/kwerdenker/keymap.c b/keyboards/evyd13/plain60/keymaps/kwerdenker/keymap.c
index 2d736212f4..986f55e040 100644
--- a/keyboards/evyd13/plain60/keymaps/kwerdenker/keymap.c
+++ b/keyboards/evyd13/plain60/keymaps/kwerdenker/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
______, ______, ______, ______ , ______, KC_LEFT, KC_DOWN, KC_RIGHT ),
[_LED] = LAYOUT(
- ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, RESET, \
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, QK_BOOT, \
______, RGB_TOG, RGB_MI, RGB_MD, RGB_ST, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, ______, RGB_VAI, RGB_VAD, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
diff --git a/keyboards/evyd13/plain60/keymaps/rgb/keymap.c b/keyboards/evyd13/plain60/keymaps/rgb/keymap.c
index abfb5f6b15..fa6aaa7f99 100644
--- a/keyboards/evyd13/plain60/keymaps/rgb/keymap.c
+++ b/keyboards/evyd13/plain60/keymaps/rgb/keymap.c
@@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______)
diff --git a/keyboards/evyd13/pockettype/config.h b/keyboards/evyd13/pockettype/config.h
index b62c3549f8..21e27d130e 100644
--- a/keyboards/evyd13/pockettype/config.h
+++ b/keyboards/evyd13/pockettype/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0xFA7D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT PocketType
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS {D3,D1,D7,B5}
#define MATRIX_COL_PINS {F6,F7,B1,B3,B2,B6,B4,E6,C6,D4,D0,D2}
-#define UNUSED_PINS {B1,B2,B3}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/pockettype/info.json b/keyboards/evyd13/pockettype/info.json
index f81dbec539..f54e382e6a 100644
--- a/keyboards/evyd13/pockettype/info.json
+++ b/keyboards/evyd13/pockettype/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "PocketType",
+ "manufacturer": "Evyd13",
"url": "https://mechboards.co.uk/shop/kits/pockettype/",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0xFA7D",
+ "device_version": "0.0.1"
+ },
"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/evyd13/quackfire/config.h b/keyboards/evyd13/quackfire/config.h
index 4df2abd5a8..c2bf0598c3 100644
--- a/keyboards/evyd13/quackfire/config.h
+++ b/keyboards/evyd13/quackfire/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x87C9
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Quackfire
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS {D3,F5,F4,F0,B7,B2,E6,B0}
#define MATRIX_COL_PINS {B3,F1,B1,D5,D2,D1,D0,D4,D6,D7,B4,B5,B6,C6,C7}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/evyd13/quackfire/info.json b/keyboards/evyd13/quackfire/info.json
index 68a0767c94..88b168aa63 100644
--- a/keyboards/evyd13/quackfire/info.json
+++ b/keyboards/evyd13/quackfire/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Quackfire",
+ "manufacturer": "Evyd13",
"url": "https://github.com/evyd13/quackfire-controller",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x87C9",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/evyd13/solheim68/config.h b/keyboards/evyd13/solheim68/config.h
index ef449ab7d4..d622cc1695 100644
--- a/keyboards/evyd13/solheim68/config.h
+++ b/keyboards/evyd13/solheim68/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x7BFF
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Solheim68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS {E6,B0,B1,B2,B3}
#define MATRIX_COL_PINS {F0,F1,F4,F5,F6,F7,C7,C6,B6,B5,B4,D7,D6,D4,D5,D3}
-#define UNUSED_PINS {B7,D0,D1,D2}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/evyd13/solheim68/info.json b/keyboards/evyd13/solheim68/info.json
index b0776223b6..1cadeeb9fa 100644
--- a/keyboards/evyd13/solheim68/info.json
+++ b/keyboards/evyd13/solheim68/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Solheim68",
+ "manufacturer": "Evyd13",
"url": "https://github.com/evyd13/solheim68",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x7BFF",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/evyd13/ta65/config.h b/keyboards/evyd13/ta65/config.h
index 518c854d9b..a65210e0ed 100644
--- a/keyboards/evyd13/ta65/config.h
+++ b/keyboards/evyd13/ta65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x7465
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT ta-65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS {B4,D7,D6,D4,B3}
#define MATRIX_COL_PINS {D2,D1,D0,D3,D5,C7,C6,B6,B5,F0,F1,F4,F5,F6,F7,B0}
-#define UNUSED_PINS
#define ENCODERS_PAD_A { B2 }
#define ENCODERS_PAD_B { B1 }
diff --git a/keyboards/evyd13/ta65/info.json b/keyboards/evyd13/ta65/info.json
index 5d390c9f6e..f24f599df1 100644
--- a/keyboards/evyd13/ta65/info.json
+++ b/keyboards/evyd13/ta65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ta65",
+ "keyboard_name": "ta-65",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x7465",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/evyd13/ta65/keymaps/evyd13/keymap.c b/keyboards/evyd13/ta65/keymaps/evyd13/keymap.c
index a8ce0f180e..04dba9da75 100644
--- a/keyboards/evyd13/ta65/keymaps/evyd13/keymap.c
+++ b/keyboards/evyd13/ta65/keymaps/evyd13/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, KC_SPC, _______, _______, _______, _______, _______, _______),
[_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, RESET, KC_PSCR,
+ 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, QK_BOOT, KC_PSCR,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
_______, _______, _______, _______, _______, TG(_GA), _______, _______, _______, _______, _______, _______, _______, KC_HOME,
_______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_END,
diff --git a/keyboards/evyd13/wasdat/config.h b/keyboards/evyd13/wasdat/config.h
index 821cc26b65..02db1dc2ab 100644
--- a/keyboards/evyd13/wasdat/config.h
+++ b/keyboards/evyd13/wasdat/config.h
@@ -35,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D6, D4, F6, F7, F4, F5, F0, F1 }
#define MATRIX_COL_PINS { C7, B6, C6, B4, B5, D7, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, D3, B7, B3 } // Columns 6-12 controlled by demux
-#define UNUSED_PINS
#define SN74X138_ADDRESS_PINS { D2, D1, D0 }
diff --git a/keyboards/evyd13/wasdat_code/config.h b/keyboards/evyd13/wasdat_code/config.h
index a8b5c032ca..ca79477e12 100644
--- a/keyboards/evyd13/wasdat_code/config.h
+++ b/keyboards/evyd13/wasdat_code/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0xB00E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Wasdat Code
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6, C7, C6, B6, B5, B4, D7, D6 }
#define MATRIX_COL_PINS { F7, F5, F6, F1, F4, F0, NO_PIN, D5, D3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN } // Columns 6 and 9-15 controlled by demux
-#define UNUSED_PINS
#define SN74X138_ADDRESS_PINS { D2, D1, D0 }
#define SN74X138_E3_PIN D4
diff --git a/keyboards/evyd13/wasdat_code/info.json b/keyboards/evyd13/wasdat_code/info.json
index 1c0f14ed3d..4ebbc5aa15 100644
--- a/keyboards/evyd13/wasdat_code/info.json
+++ b/keyboards/evyd13/wasdat_code/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Wasdat Code",
+ "manufacturer": "Evyd13",
"url": "https://maartenwut.com/product/wasdat-code/",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0xB00E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_fullsize_ansi": {
"layout": [
diff --git a/keyboards/evyd13/wonderland/config.h b/keyboards/evyd13/wonderland/config.h
index c5c7a8b6c6..b0ac35cff8 100644
--- a/keyboards/evyd13/wonderland/config.h
+++ b/keyboards/evyd13/wonderland/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0xA71C
-#define DEVICE_VER 0x0003
-#define MANUFACTURER Evyd13
-#define PRODUCT Wonderland
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS {B0,D1,D2,D3,D5}
#define MATRIX_COL_PINS {F0,F1,F4,F5,F6,F7,E6,C7,C6,B6,B5,B4,D7,D6,D4}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
diff --git a/keyboards/evyd13/wonderland/info.json b/keyboards/evyd13/wonderland/info.json
index fd91f32dc1..8e94e2fe20 100644
--- a/keyboards/evyd13/wonderland/info.json
+++ b/keyboards/evyd13/wonderland/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Wonderland",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0xA71C",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/evyd13/wonderland/keymaps/keebs/keymap.c b/keyboards/evyd13/wonderland/keymaps/keebs/keymap.c
index ceb9856061..4781f3d63f 100644
--- a/keyboards/evyd13/wonderland/keymaps/keebs/keymap.c
+++ b/keyboards/evyd13/wonderland/keymaps/keebs/keymap.c
@@ -14,7 +14,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LAPO, KC_LGUI, RGUI(KC_SPC), 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_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, QK_BOOT, \
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, \
diff --git a/keyboards/evyd13/wonderland/keymaps/rafael-azevedo/keymap.c b/keyboards/evyd13/wonderland/keymaps/rafael-azevedo/keymap.c
index 5c59d53a7d..231922a144 100644
--- a/keyboards/evyd13/wonderland/keymaps/rafael-azevedo/keymap.c
+++ b/keyboards/evyd13/wonderland/keymaps/rafael-azevedo/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MPLY, KC_LALT, _______, _______, _______, KC_RALT, XXXXXXX
),
[_RGB] = 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_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, QK_BOOT,
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, 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,
diff --git a/keyboards/evyd13/wonderland/keymaps/rys/keymap.c b/keyboards/evyd13/wonderland/keymaps/rys/keymap.c
index 7669df535e..998b53c012 100644
--- a/keyboards/evyd13/wonderland/keymaps/rys/keymap.c
+++ b/keyboards/evyd13/wonderland/keymaps/rys/keymap.c
@@ -14,7 +14,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_NUBS, KC_LALT, KC_SPC, KC_NUHS, 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_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, QK_BOOT,
RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX,
RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX,
diff --git a/keyboards/exclusive/e65/config.h b/keyboards/exclusive/e65/config.h
index 1d43011b80..6b65d5ea9b 100644
--- a/keyboards/exclusive/e65/config.h
+++ b/keyboards/exclusive/e65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4558 // "EX"
-#define PRODUCT_ID 0xE605 // E6.5
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Exclusive / E-Team
-#define PRODUCT E6.5
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -34,7 +27,6 @@
{ B0, B1, B2, B3, B4 }
#define MATRIX_COL_PINS \
{ C6, C7, D0, D1, D2, D3, D4, D5, D6, D7, F0, F1, F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/exclusive/e65/info.json b/keyboards/exclusive/e65/info.json
index 409f110a09..6b7aa9b069 100644
--- a/keyboards/exclusive/e65/info.json
+++ b/keyboards/exclusive/e65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "E6.5",
+ "manufacturer": "Exclusive / E-Team",
"url": "",
"maintainer": "masterzen",
+ "usb": {
+ "vid": "0x4558",
+ "pid": "0xE605",
+ "device_version": "0.0.1"
+ },
"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":"Ins", "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":"Page up", "x":15, "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":"Page down", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"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":"&uarr;", "x":14, "y":3}, {"label":"Del", "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}, {"label":"Fn", "x":11, "y":4}, {"x":12, "y":4}, {"label":"&larr;", "x":13, "y":4}, {"label":"&darr;", "x":14, "y":4}, {"label":"&rarr;", "x":15, "y":4}]
diff --git a/keyboards/exclusive/e65/keymaps/crd/keymap.c b/keyboards/exclusive/e65/keymaps/crd/keymap.c
index 38a1944ef9..18b0920667 100644
--- a/keyboards/exclusive/e65/keymaps/crd/keymap.c
+++ b/keyboards/exclusive/e65/keymaps/crd/keymap.c
@@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FL] = LAYOUT_65_ansi_7u_wk_splitbs(
_______, KC_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, _______,
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, KC_SLCK, KC_PAUS, KC_UP, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, KC_SLCK, KC_PAUS, KC_UP, _______, _______, _______,
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/exclusive/e65/keymaps/madhatter/keymap.c b/keyboards/exclusive/e65/keymaps/madhatter/keymap.c
index f8617f3ef4..bc2c3d7a62 100644
--- a/keyboards/exclusive/e65/keymaps/madhatter/keymap.c
+++ b/keyboards/exclusive/e65/keymaps/madhatter/keymap.c
@@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FNM] = LAYOUT_65_ansi_7u_wk_splitbs(
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_MPLY,
- _______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, RESET, KC_VOLU,
+ _______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, QK_BOOT, KC_VOLU,
AG_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, KC_VOLD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_MNXT,
_______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
diff --git a/keyboards/exclusive/e65/keymaps/masterzen/keymap.c b/keyboards/exclusive/e65/keymaps/masterzen/keymap.c
index 156832de4e..f39a3b056d 100644
--- a/keyboards/exclusive/e65/keymaps/masterzen/keymap.c
+++ b/keyboards/exclusive/e65/keymaps/masterzen/keymap.c
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_LGUI, _______, KC_LGUI, KC_RALT, _______, _______, _______),
[_ADJUST] = LAYOUT_65_ansi_blocker_splitbs(
- RESET, LAY_LIN, LAY_OSX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MO(_ADJUST),
+ QK_BOOT, LAY_LIN, LAY_OSX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MO(_ADJUST),
BL_TOGG, BL_DEC, BL_INC, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______,
@@ -102,7 +102,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
edit = false;
}
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _ADJUST:
temp_config.mode = rgblight_get_mode();
rgblight_mode_noeeprom(1);
diff --git a/keyboards/exclusive/e6_rgb/config.h b/keyboards/exclusive/e6_rgb/config.h
index fd221f1765..c4765ce93c 100644
--- a/keyboards/exclusive/e6_rgb/config.h
+++ b/keyboards/exclusive/e6_rgb/config.h
@@ -6,20 +6,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4154 //AT
-#define PRODUCT_ID 0x4536 //E6
-#define DEVICE_VER 0x0062
-#define MANUFACTURER astro
-#define PRODUCT e6rgb
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
/* key matrix pins */
#define MATRIX_ROW_PINS { F1, F4, F5, F6, D6 }
#define MATRIX_COL_PINS { D7, B4, B5, B6, C6, C7, F7, F0, B0, B1, D2, D3, B3, B2 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
//rgb light setting
diff --git a/keyboards/exclusive/e6_rgb/info.json b/keyboards/exclusive/e6_rgb/info.json
index c08cd12ae6..46c90a7163 100644
--- a/keyboards/exclusive/e6_rgb/info.json
+++ b/keyboards/exclusive/e6_rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "e6_rgb",
+ "keyboard_name": "E6 RGB",
+ "manufacturer": "astro",
"url": "",
"maintainer": "yulei",
+ "usb": {
+ "vid": "0x4154",
+ "pid": "0x4536",
+ "device_version": "0.6.2"
+ },
"layout_aliases": {
"LAYOUT_60_wkl_split_bs": "LAYOUT_60_tsangan_hhkb"
},
diff --git a/keyboards/exclusive/e6_rgb/keymaps/60_ansi_split_bs_rshift/keymap.c b/keyboards/exclusive/e6_rgb/keymaps/60_ansi_split_bs_rshift/keymap.c
index 0678b7d145..7cb58ac123 100644
--- a/keyboards/exclusive/e6_rgb/keymaps/60_ansi_split_bs_rshift/keymap.c
+++ b/keyboards/exclusive/e6_rgb/keymaps/60_ansi_split_bs_rshift/keymap.c
@@ -10,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = 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_PSCR,
- RESET, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______,
+ QK_BOOT, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/exclusive/e6_rgb/keymaps/60_hhkb/keymap.c b/keyboards/exclusive/e6_rgb/keymaps/60_hhkb/keymap.c
index a1d8e5c784..ccb6d85482 100644
--- a/keyboards/exclusive/e6_rgb/keymaps/60_hhkb/keymap.c
+++ b/keyboards/exclusive/e6_rgb/keymaps/60_hhkb/keymap.c
@@ -10,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_60_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, _______, _______,
- RESET, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______
diff --git a/keyboards/exclusive/e6_rgb/keymaps/60_tsangan_hhkb/keymap.c b/keyboards/exclusive/e6_rgb/keymaps/60_tsangan_hhkb/keymap.c
index 5483ebb835..7842cf317a 100644
--- a/keyboards/exclusive/e6_rgb/keymaps/60_tsangan_hhkb/keymap.c
+++ b/keyboards/exclusive/e6_rgb/keymaps/60_tsangan_hhkb/keymap.c
@@ -10,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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, _______, KC_PSCR,
- RESET, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______,
+ QK_BOOT, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/exclusive/e6_rgb/keymaps/allleds/keymap.c b/keyboards/exclusive/e6_rgb/keymaps/allleds/keymap.c
index b0b06766bf..4c719e7481 100644
--- a/keyboards/exclusive/e6_rgb/keymaps/allleds/keymap.c
+++ b/keyboards/exclusive/e6_rgb/keymaps/allleds/keymap.c
@@ -10,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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, _______, KC_PSCR,
- RESET, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______,
+ QK_BOOT, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, TG(0), _______
diff --git a/keyboards/exclusive/e6v2/le/config.h b/keyboards/exclusive/e6v2/le/config.h
index f9295145ec..6f684a24e6 100644
--- a/keyboards/exclusive/e6v2/le/config.h
+++ b/keyboards/exclusive/e6v2/le/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Exclusive / E-Team
-#define PRODUCT E6-V2 LE
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* QMK E6-V2 PCB default pin-out */
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 }
#define MATRIX_COL_PINS { B5, D0, D1, D2, D3, D4, D5, D6, D7, C6, C7, F4, F5, F6, F7 }
-#define UNUSED_PINS
#define LED_CAPS_LOCK_PIN B7
#define LED_PIN_ON_STATE 0
diff --git a/keyboards/exclusive/e6v2/le/info.json b/keyboards/exclusive/e6v2/le/info.json
index 095fe66a02..bec33b8216 100644
--- a/keyboards/exclusive/e6v2/le/info.json
+++ b/keyboards/exclusive/e6v2/le/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "E6-V2 LE",
+ "manufacturer": "Exclusive / E-Team",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.2"
+ },
"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":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}, {"x":13, "y":0}, {"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}, {"x":0, "y":3}, {"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}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3}, {"x":0, "y":4, "w":1.75}, {"label":"Ctrl", "x":1.75, "y":4, "w":1.25}, {"label":"Win", "x":3, "y":4, "w":1.25}, {"label":"Alt", "x":4.25, "y":4, "w":1.25}, {"x":5.5, "y":4, "w":2.75}, {"x":8.25, "y":4, "w":1.75}, {"x":10, "y":4}, {"label":"Alt", "x":11, "y":4}, {"label":"Win", "x":12, "y":4}, {"label":"Menu", "x":13, "y":4}, {"label":"Ctrl", "x":14, "y":4}]
diff --git a/keyboards/exclusive/e6v2/le/keymaps/eric/keymap.c b/keyboards/exclusive/e6v2/le/keymaps/eric/keymap.c
index 4d3052ef2c..34a4f60a3e 100644
--- a/keyboards/exclusive/e6v2/le/keymaps/eric/keymap.c
+++ b/keyboards/exclusive/e6v2/le/keymaps/eric/keymap.c
@@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Reset layer */
[2] = LAYOUT(
- RESET, KC_A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ QK_BOOT, KC_A, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, 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/exclusive/e6v2/le/keymaps/johu/keymap.c b/keyboards/exclusive/e6v2/le/keymaps/johu/keymap.c
index 691f0e73cd..bb2f2a030c 100644
--- a/keyboards/exclusive/e6v2/le/keymaps/johu/keymap.c
+++ b/keyboards/exclusive/e6v2/le/keymaps/johu/keymap.c
@@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |-----------------------------------------------------------------------------------------+
- * | | BL- | BL+ | BL | | | | | | | | | | RESET |
+ * | | BL- | BL+ | BL | | | | | | | | | | QK_BOOT |
* |-----------------------------------------------------------------------------------------+
* | | RGBT| RGBM| | | | | | | | | | |
* |-----------------------------------------------------------------------------------------+
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT_60_hhkb(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, BL_TOGG, BL_STEP, BL_DEC, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, BL_TOGG, BL_STEP, BL_DEC, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_CAPS, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______
diff --git a/keyboards/exclusive/e6v2/le_bmc/config.h b/keyboards/exclusive/e6v2/le_bmc/config.h
index 8115f4ae12..9e7b65d565 100644
--- a/keyboards/exclusive/e6v2/le_bmc/config.h
+++ b/keyboards/exclusive/e6v2/le_bmc/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4558
-#define PRODUCT_ID 0xE62D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Exclusive / E-Team
-#define PRODUCT E6-V2 LE BMC
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 11
diff --git a/keyboards/exclusive/e6v2/le_bmc/info.json b/keyboards/exclusive/e6v2/le_bmc/info.json
index e6a8a0ccbf..2d493afad3 100644
--- a/keyboards/exclusive/e6v2/le_bmc/info.json
+++ b/keyboards/exclusive/e6v2/le_bmc/info.json
@@ -1,5 +1,12 @@
{
+ "keyboard_name": "E6-V2 LE BMC",
+ "manufacturer": "Exclusive / E-Team",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4558",
+ "pid": "0xE62D",
+ "device_version": "0.0.1"
+ },
"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":6.25}, {"x":10.0, "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/exclusive/e6v2/oe/config.h b/keyboards/exclusive/e6v2/oe/config.h
index d9362cfc03..6e82f4650b 100644
--- a/keyboards/exclusive/e6v2/oe/config.h
+++ b/keyboards/exclusive/e6v2/oe/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Exclusive / E-Team
-#define PRODUCT E6-V2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* QMK E6-V2 PCB default pin-out */
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { C7, C6, B5, B4, D7, D6, D4, F6, F7, F5, F4, F1, F0, B0, B1 }
-#define UNUSED_PINS { E6, B2, B3, B7 }
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
diff --git a/keyboards/exclusive/e6v2/oe/info.json b/keyboards/exclusive/e6v2/oe/info.json
index 16cf613d30..46281fbbd2 100644
--- a/keyboards/exclusive/e6v2/oe/info.json
+++ b/keyboards/exclusive/e6v2/oe/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "E6-V2 OE",
+ "manufacturer": "Exclusive / E-Team",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.2"
+ },
"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":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}, {"x":13, "y":0}, {"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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"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}, {"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":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/exclusive/e6v2/oe/keymaps/amnesia0287/keymap.c b/keyboards/exclusive/e6v2/oe/keymaps/amnesia0287/keymap.c
index 7e64b1212e..274e7395f2 100644
--- a/keyboards/exclusive/e6v2/oe/keymaps/amnesia0287/keymap.c
+++ b/keyboards/exclusive/e6v2/oe/keymaps/amnesia0287/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_HL] = LAYOUT_hhkb(
RGB_TOG, RGB_M_P, RGB_RMOD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, BL_BRTG, BL_OFF, BL_STEP, BL_ON, BL_DEC, BL_INC, LALT(KC_F4),
- RESET, 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,
+ QK_BOOT, 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, 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, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_MPRV, KC_MNXT, KC_MPLY, KC_TRNS, KC_TRNS
diff --git a/keyboards/exclusive/e6v2/oe_bmc/config.h b/keyboards/exclusive/e6v2/oe_bmc/config.h
index 3f2a50cdef..9e7b65d565 100644
--- a/keyboards/exclusive/e6v2/oe_bmc/config.h
+++ b/keyboards/exclusive/e6v2/oe_bmc/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4558
-#define PRODUCT_ID 0xE62B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Exclusive / E-Team
-#define PRODUCT E6-V2 OE BMC
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 11
diff --git a/keyboards/exclusive/e6v2/oe_bmc/info.json b/keyboards/exclusive/e6v2/oe_bmc/info.json
index e6a8a0ccbf..6dadde916a 100644
--- a/keyboards/exclusive/e6v2/oe_bmc/info.json
+++ b/keyboards/exclusive/e6v2/oe_bmc/info.json
@@ -1,5 +1,12 @@
{
+ "keyboard_name": "E6-V2 OE BMC",
+ "manufacturer": "Exclusive / E-Team",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4558",
+ "pid": "0xE62B",
+ "device_version": "0.0.1"
+ },
"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":6.25}, {"x":10.0, "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/exclusive/e7v1/config.h b/keyboards/exclusive/e7v1/config.h
index 5809144ba3..ff985f4255 100644
--- a/keyboards/exclusive/e7v1/config.h
+++ b/keyboards/exclusive/e7v1/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4558 // EX
-#define PRODUCT_ID 0xE701 // E7-V1
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Exclusive / E-Team
-#define PRODUCT E7-V1
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5 }
#define MATRIX_COL_PINS { B6, D0, D1, D2, D3, D4, D5, D6, D7, C6, C7, F4, F5, F6, F7, F1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/exclusive/e7v1/info.json b/keyboards/exclusive/e7v1/info.json
index 0d341e7af4..2d1f6a19d0 100644
--- a/keyboards/exclusive/e7v1/info.json
+++ b/keyboards/exclusive/e7v1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "E7-V1",
+ "manufacturer": "Exclusive / E-Team",
"url": "",
"maintainer": "masterzen",
+ "usb": {
+ "vid": "0x4558",
+ "pid": "0xE701",
+ "device_version": "0.0.1"
+ },
"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":"Home", "x":14, "y":0}, {"label":"End", "x":15.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}, {"x":13, "y":1.5}, {"label":"Backspace", "x":14, "y":1.5}, {"label":"Page Up", "x":15.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":"Page down", "x":15.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}, {"label":"Z", "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.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":"Alt", "x":10, "y":5.5}, {"label":"Win", "x":11, "y":5.5}, {"x":12, "y":5.5}, {"label":"\u2190", "x":13.25, "y":5.75}, {"label":"\u2193", "x":14.25, "y":5.75}, {"label":"\u2192", "x":15.25, "y":5.75}]
diff --git a/keyboards/exclusive/e7v1/keymaps/ansi_splitbs/keymap.c b/keyboards/exclusive/e7v1/keymaps/ansi_splitbs/keymap.c
index 242020b20a..dbc9dd2063 100644
--- a/keyboards/exclusive/e7v1/keymaps/ansi_splitbs/keymap.c
+++ b/keyboards/exclusive/e7v1/keymaps/ansi_splitbs/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_75_ansi_splitbs(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_DEC, BL_INC, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/exclusive/e7v1/keymaps/masterzen/keymap.c b/keyboards/exclusive/e7v1/keymaps/masterzen/keymap.c
index 6987e84021..08899cd6bf 100644
--- a/keyboards/exclusive/e7v1/keymaps/masterzen/keymap.c
+++ b/keyboards/exclusive/e7v1/keymaps/masterzen/keymap.c
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_LGUI, _______, KC_LGUI, KC_RALT, _______, _______, _______),
[_ADJUST] = LAYOUT_75_ansi_splitbs(
- RESET, LAY_LIN, LAY_OSX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MO(_ADJUST),
+ QK_BOOT, LAY_LIN, LAY_OSX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MO(_ADJUST),
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_DEC, BL_INC, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______,
@@ -121,7 +121,7 @@ layer_state_t layer_state_set_user(layer_state_t state)
edit = false;
}
- switch (biton32(state))
+ switch (get_highest_layer(state))
{
case _ADJUST:
mode = rgblight_get_mode();
diff --git a/keyboards/exclusive/e7v1se/config.h b/keyboards/exclusive/e7v1se/config.h
index cce08878eb..32e913bd12 100644
--- a/keyboards/exclusive/e7v1se/config.h
+++ b/keyboards/exclusive/e7v1se/config.h
@@ -19,13 +19,6 @@ 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 0x7051
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Exclusive / E-Team
-#define PRODUCT E7-V1 SE
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6, B0, B1, B2, B3, F0 }
#define MATRIX_COL_PINS { D5, D3, D2, D1, D0, D7, D6, D4, B4, B5, B6, C6, C7, F7, F6, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/exclusive/e7v1se/info.json b/keyboards/exclusive/e7v1se/info.json
index f72eaebb68..43a8cba0fe 100644
--- a/keyboards/exclusive/e7v1se/info.json
+++ b/keyboards/exclusive/e7v1se/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "e7v1se",
+ "keyboard_name": "E7-V1 SE",
+ "manufacturer": "Exclusive / E-Team",
"url": "https://geekhack.org/index.php?topic=101363",
"maintainer": "Bart Riemens",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x7051",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/exclusive/e7v1se/keymaps/mac/keymap.c b/keyboards/exclusive/e7v1se/keymaps/mac/keymap.c
index ab863fcafd..d9641f56f7 100644
--- a/keyboards/exclusive/e7v1se/keymaps/mac/keymap.c
+++ b/keyboards/exclusive/e7v1se/keymaps/mac/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, BL_DEC, BL_INC, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/exclusive/e85/config.h b/keyboards/exclusive/e85/config.h
index 2683403204..f880b6d304 100644
--- a/keyboards/exclusive/e85/config.h
+++ b/keyboards/exclusive/e85/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4558 // EX
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Exclusive
-
/* key matrix size */
#define MATRIX_ROWS 11
#define MATRIX_COLS 9
@@ -42,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 0 1 2 3 4 5 6 7 8 9 A
#define MATRIX_ROW_PINS { E6, B0, B1, B2, B3, B7, F7, F6, F5, F4, F1 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/exclusive/e85/hotswap/config.h b/keyboards/exclusive/e85/hotswap/config.h
deleted file mode 100644
index a0f957db87..0000000000
--- a/keyboards/exclusive/e85/hotswap/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* 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/>.
- */
-
-#define PRODUCT_ID 0xE851 // E8.5 Hotswap
-#define PRODUCT E8.5 Hotswap PCB
diff --git a/keyboards/exclusive/e85/hotswap/info.json b/keyboards/exclusive/e85/hotswap/info.json
index e8c65f32d2..53ca1e3759 100644
--- a/keyboards/exclusive/e85/hotswap/info.json
+++ b/keyboards/exclusive/e85/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Exclusive E8.5 TKL",
+ "keyboard_name": "E8.5 Hotswap",
+ "manufacturer": "Exclusive",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4558",
+ "pid": "0xE851",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi_standard": {
"layout": [
diff --git a/keyboards/exclusive/e85/hotswap/keymaps/standard/keymap.c b/keyboards/exclusive/e85/hotswap/keymaps/standard/keymap.c
index c6778180be..fe17ab3292 100644
--- a/keyboards/exclusive/e85/hotswap/keymaps/standard/keymap.c
+++ b/keyboards/exclusive/e85/hotswap/keymaps/standard/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_ansi_standard(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_MOD, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/exclusive/e85/soldered/config.h b/keyboards/exclusive/e85/soldered/config.h
deleted file mode 100644
index c76fcf8074..0000000000
--- a/keyboards/exclusive/e85/soldered/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* 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/>.
- */
-
-#define PRODUCT_ID 0xE852 // E8.5 Soldered
-#define PRODUCT E8.5 Soldered PCB
diff --git a/keyboards/exclusive/e85/soldered/info.json b/keyboards/exclusive/e85/soldered/info.json
index fa4be15647..937c2ad245 100644
--- a/keyboards/exclusive/e85/soldered/info.json
+++ b/keyboards/exclusive/e85/soldered/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Exclusive E8.5 TKL",
+ "keyboard_name": "E8.5 Soldered",
+ "manufacturer": "Exclusive",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4558",
+ "pid": "0xE852",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/exclusive/e85/soldered/keymaps/standard/keymap.c b/keyboards/exclusive/e85/soldered/keymaps/standard/keymap.c
index c6778180be..fe17ab3292 100644
--- a/keyboards/exclusive/e85/soldered/keymaps/standard/keymap.c
+++ b/keyboards/exclusive/e85/soldered/keymaps/standard/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_ansi_standard(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_MOD, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/exent/config.h b/keyboards/exent/config.h
index e9dc026867..ad7938f17c 100644
--- a/keyboards/exent/config.h
+++ b/keyboards/exent/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5143 // "QC"
-#define PRODUCT_ID 0x4558 // "EX"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Quadcube
-#define PRODUCT Exent
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 14
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6 }
#define MATRIX_COL_PINS { D7, C2, C3, C4, C5, C6, C7, A7, A6, A5, A4, A3, A1, A0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/exent/info.json b/keyboards/exent/info.json
index c783086ff8..d69c6163ae 100644
--- a/keyboards/exent/info.json
+++ b/keyboards/exent/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Exent",
+ "manufacturer": "Quadcube",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5143",
+ "pid": "0x4558",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/eyeohdesigns/babyv/config.h b/keyboards/eyeohdesigns/babyv/config.h
index f90d68e2e5..00f609b282 100644
--- a/keyboards/eyeohdesigns/babyv/config.h
+++ b/keyboards/eyeohdesigns/babyv/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Eye Oh Designs
-#define PRODUCT babyv
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B5, D2, D5, D3 }
#define MATRIX_COL_PINS { D0, D1, B4, D7, D6, D4, B0, B1, B2, F0, F1, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/eyeohdesigns/babyv/info.json b/keyboards/eyeohdesigns/babyv/info.json
index 79ae8b23f5..65453ffaf6 100644
--- a/keyboards/eyeohdesigns/babyv/info.json
+++ b/keyboards/eyeohdesigns/babyv/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "babyv",
+ "manufacturer": "Eye Oh Designs",
"url": "",
"maintainer": "eye oh designs",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_2u": {
"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":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":"Back Space", "x":12, "y":0}, {"label":"Tab", "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":7, "y":1}, {"label":"J", "x":8, "y":1}, {"label":"K", "x":9, "y":1}, {"label":"L", "x":10, "y":1}, {"label":";", "x":11, "y":1}, {"label":"Return", "x":12, "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":7, "y":2}, {"label":"M", "x":8, "y":2}, {"label":",", "x":9, "y":2}, {"label":".", "x":10, "y":2}, {"label":"/", "x":11, "y":2}, {"label":"Shift", "x":12, "y":2}, {"label":"Ctl", "x":0, "y":3}, {"label":"Alt", "x":3, "y":3}, {"x":4, "y":3, "w":2}, {"x":7, "y":3, "w":2}, {"label":"Fn", "x":9, "y":3}, {"label":"OS", "x":12, "y":3}]
diff --git a/keyboards/eyeohdesigns/babyv/keymaps/1u/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/1u/keymap.c
index 056c36d32a..2dcd7f9a37 100644
--- a/keyboards/eyeohdesigns/babyv/keymaps/1u/keymap.c
+++ b/keyboards/eyeohdesigns/babyv/keymaps/1u/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCTN] = LAYOUT_1u(
KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL,
- KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET,
+ KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, QK_BOOT,
KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT,
KC_LCTL, KC_TRNS, KC_TRNS, KC_SPC, KC_SPC, KC_TRNS, KC_TRNS, KC_TRNS
),
diff --git a/keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c
index c161c714b3..1dcfdc2b50 100644
--- a/keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c
+++ b/keyboards/eyeohdesigns/babyv/keymaps/1u2u/keymap.c
@@ -31,9 +31,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCTN] = LAYOUT_1u_2u(
KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL,
- KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET,
+ KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, QK_BOOT,
KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT,
- KC_LGUI, KC_LALT, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, RESET
+ KC_LGUI, KC_LALT, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, QK_BOOT
),
[_NUMBRS] = LAYOUT_1u_2u(
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/eyeohdesigns/babyv/keymaps/2u1u/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c
index 3c5de89d65..b0fd634dce 100644
--- a/keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c
+++ b/keyboards/eyeohdesigns/babyv/keymaps/2u1u/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCTN] = LAYOUT_2u_1u(
KC_VOLU, KC_Q, KC_PGUP, RGB_TOG, BL_STEP, KC_T, KC_Y, KC_U, KC_UP, RGB_MOD, RGB_RMOD, KC_DEL,
- KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, RESET,
+ KC_VOLD, KC_HOME, KC_PGDN, KC_D, KC_U, KC_MINS, KC_EQL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_QUOT, QK_BOOT,
KC_LSFT, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_LBRC, KC_RBRC, RGB_VAI, RGB_VAD, KC_DOT, KC_BSLS, KC_RSFT,
KC_LCTL, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS
),
diff --git a/keyboards/eyeohdesigns/babyv/keymaps/melonbred/keymap.c b/keyboards/eyeohdesigns/babyv/keymaps/melonbred/keymap.c
index ea62241e9d..909c40ba5a 100644
--- a/keyboards/eyeohdesigns/babyv/keymaps/melonbred/keymap.c
+++ b/keyboards/eyeohdesigns/babyv/keymaps/melonbred/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER2] = LAYOUT_2u(
KC_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_MPLY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- KC_VOLD, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, KC_RCTL, KC_RALT, KC_DEL, XXXXXXX,
+ KC_VOLD, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, KC_RCTL, KC_RALT, KC_DEL, XXXXXXX,
_______, KC_NLCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
};
diff --git a/keyboards/eyeohdesigns/babyv/readme.md b/keyboards/eyeohdesigns/babyv/readme.md
index 6a367f376d..b3b179aea7 100644
--- a/keyboards/eyeohdesigns/babyv/readme.md
+++ b/keyboards/eyeohdesigns/babyv/readme.md
@@ -16,6 +16,6 @@ Flashing example for this keyboard:
make eyeohdesigns/babyv: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.
+To enter the bootloader, either depress the reset button on the back of the PCB, or use the `QK_BOOT` 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).
diff --git a/keyboards/eyeohdesigns/sprh/config.h b/keyboards/eyeohdesigns/sprh/config.h
index 45a3158536..319fd17ad6 100644
--- a/keyboards/eyeohdesigns/sprh/config.h
+++ b/keyboards/eyeohdesigns/sprh/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Eye Oh Designs
-#define PRODUCT sprh
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/eyeohdesigns/sprh/info.json b/keyboards/eyeohdesigns/sprh/info.json
index 7e79dd821e..ed26433daf 100644
--- a/keyboards/eyeohdesigns/sprh/info.json
+++ b/keyboards/eyeohdesigns/sprh/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "sprh",
+ "manufacturer": "Eye Oh Designs",
"url": "https://github.com/joedinkle/eyeohdesigns/tree/main/keyboards/sprh",
"maintainer": "joedinkle",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ac5": {
"layout": [
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/acs/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/acs/keymap.c
index 06f9af8811..2028e09daa 100644
--- a/keyboards/eyeohdesigns/sprh/keymaps/acs/keymap.c
+++ b/keyboards/eyeohdesigns/sprh/keymaps/acs/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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,
+ QK_BOOT, 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,
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/ad5/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/ad5/keymap.c
index 0ceebfd3ce..37388cb15e 100644
--- a/keyboards/eyeohdesigns/sprh/keymaps/ad5/keymap.c
+++ b/keyboards/eyeohdesigns/sprh/keymaps/ad5/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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,
+ QK_BOOT, 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,
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/ads/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/ads/keymap.c
index 614236bddc..9038281e3f 100644
--- a/keyboards/eyeohdesigns/sprh/keymaps/ads/keymap.c
+++ b/keyboards/eyeohdesigns/sprh/keymaps/ads/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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,
+ QK_BOOT, 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,
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/bc5/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/bc5/keymap.c
index 0de227f085..bb0c60eb21 100644
--- a/keyboards/eyeohdesigns/sprh/keymaps/bc5/keymap.c
+++ b/keyboards/eyeohdesigns/sprh/keymaps/bc5/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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, _______, _______,
+ QK_BOOT, 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,
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/bcs/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/bcs/keymap.c
index bfb3bc5938..c6c878702e 100644
--- a/keyboards/eyeohdesigns/sprh/keymaps/bcs/keymap.c
+++ b/keyboards/eyeohdesigns/sprh/keymaps/bcs/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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, _______, _______,
+ QK_BOOT, 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,
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/bd5/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/bd5/keymap.c
index 022b62e932..ab2a313420 100644
--- a/keyboards/eyeohdesigns/sprh/keymaps/bd5/keymap.c
+++ b/keyboards/eyeohdesigns/sprh/keymaps/bd5/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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, _______, _______,
+ QK_BOOT, 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,
diff --git a/keyboards/eyeohdesigns/sprh/keymaps/bds/keymap.c b/keyboards/eyeohdesigns/sprh/keymaps/bds/keymap.c
index 7755bab5a8..ec7550b262 100644
--- a/keyboards/eyeohdesigns/sprh/keymaps/bds/keymap.c
+++ b/keyboards/eyeohdesigns/sprh/keymaps/bds/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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, _______, _______,
+ QK_BOOT, 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,
diff --git a/keyboards/eyeohdesigns/sprh/readme.md b/keyboards/eyeohdesigns/sprh/readme.md
index 59c5bce2c7..e4b7ced608 100644
--- a/keyboards/eyeohdesigns/sprh/readme.md
+++ b/keyboards/eyeohdesigns/sprh/readme.md
@@ -16,6 +16,6 @@ Flashing example for this keyboard:
make eyeohdesigns/sprh: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.
+To enter the bootloader, either depress the reset button on the back of the PCB, or use the `QK_BOOT` 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).
diff --git a/keyboards/eyeohdesigns/theboulevard/config.h b/keyboards/eyeohdesigns/theboulevard/config.h
index db734bbb6c..7417e63143 100644
--- a/keyboards/eyeohdesigns/theboulevard/config.h
+++ b/keyboards/eyeohdesigns/theboulevard/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER eye oh designs
-#define PRODUCT theboulevard
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 13
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/eyeohdesigns/theboulevard/info.json b/keyboards/eyeohdesigns/theboulevard/info.json
index ca2b888648..439cf7ed1d 100644
--- a/keyboards/eyeohdesigns/theboulevard/info.json
+++ b/keyboards/eyeohdesigns/theboulevard/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "the boulevard",
+ "manufacturer": "eye oh designs",
"url": "",
"maintainer": "eye oh designs",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/ortho2/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho2/keymap.c
index 38d4bbfb47..8956c71854 100644
--- a/keyboards/eyeohdesigns/theboulevard/keymaps/ortho2/keymap.c
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho2/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCTN] = LAYOUT_ortho2(
- RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ QK_BOOT, 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,
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/ortho3/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho3/keymap.c
index d4dbd5aa92..21db5952d7 100644
--- a/keyboards/eyeohdesigns/theboulevard/keymaps/ortho3/keymap.c
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho3/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCTN] = LAYOUT_ortho3(
- RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ QK_BOOT, 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,
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/ortho4/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho4/keymap.c
index 2c9f792e51..d24547f720 100644
--- a/keyboards/eyeohdesigns/theboulevard/keymaps/ortho4/keymap.c
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho4/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCTN] = LAYOUT_ortho4(
- RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ QK_BOOT, 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,
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/ortho5/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho5/keymap.c
index 09fc9e5fac..fe3b7e6baa 100644
--- a/keyboards/eyeohdesigns/theboulevard/keymaps/ortho5/keymap.c
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/ortho5/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCTN] = LAYOUT_ortho5(
- RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ QK_BOOT, 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,
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger1/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger1/keymap.c
index f0a19ce659..6f08ef45d3 100644
--- a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger1/keymap.c
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger1/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCTN] = LAYOUT_stagger1(
- RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ QK_BOOT, 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),
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger2/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger2/keymap.c
index 189e584371..db24f6798b 100644
--- a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger2/keymap.c
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger2/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCTN] = LAYOUT_stagger2(
- RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ QK_BOOT, 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),
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger3/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger3/keymap.c
index da25899479..cc2071e72c 100644
--- a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger3/keymap.c
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger3/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCTN] = LAYOUT_stagger3(
- RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ QK_BOOT, 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),
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger4/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger4/keymap.c
index 2a4910965c..aef725fcd4 100644
--- a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger4/keymap.c
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger4/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCTN] = LAYOUT_stagger4(
- RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ QK_BOOT, 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),
diff --git a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger5/keymap.c b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger5/keymap.c
index 367cf1ccb5..26e6865832 100644
--- a/keyboards/eyeohdesigns/theboulevard/keymaps/stagger5/keymap.c
+++ b/keyboards/eyeohdesigns/theboulevard/keymaps/stagger5/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCTN] = LAYOUT_stagger5(
- RESET, RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD,
+ QK_BOOT, 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),
diff --git a/keyboards/eyeohdesigns/theboulevard/readme.md b/keyboards/eyeohdesigns/theboulevard/readme.md
index c1f29becb7..bfe330ab21 100644
--- a/keyboards/eyeohdesigns/theboulevard/readme.md
+++ b/keyboards/eyeohdesigns/theboulevard/readme.md
@@ -16,6 +16,6 @@ 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.
+To enter the bootloader, either depress the reset button on the back of the PCB, or use the `QK_BOOT` 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/ez_maker/directpins/promicro/config.h b/keyboards/ez_maker/directpins/promicro/config.h
deleted file mode 100644
index 436e169c19..0000000000
--- a/keyboards/ez_maker/directpins/promicro/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-Copyright 2021 Zach White
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have 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/ez_maker/directpins/promicro/info.json b/keyboards/ez_maker/directpins/promicro/info.json
index 264ee350c8..c7f8f2d2b6 100644
--- a/keyboards/ez_maker/directpins/promicro/info.json
+++ b/keyboards/ez_maker/directpins/promicro/info.json
@@ -4,7 +4,6 @@
"maintainer": "skullydazed",
"bootloader": "atmel-dfu",
"debounce": 5,
- "diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"extrakey": true,
diff --git a/keyboards/ez_maker/directpins/promicro/promicro.c b/keyboards/ez_maker/directpins/promicro/promicro.c
deleted file mode 100644
index 1f89eb39ef..0000000000
--- a/keyboards/ez_maker/directpins/promicro/promicro.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2021 Zach White
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You 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/ez_maker/directpins/promicro/promicro.h b/keyboards/ez_maker/directpins/promicro/promicro.h
deleted file mode 100644
index 386e50fb5b..0000000000
--- a/keyboards/ez_maker/directpins/promicro/promicro.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2021 Zach White
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have 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"
diff --git a/keyboards/ez_maker/directpins/promicro/rules.mk b/keyboards/ez_maker/directpins/promicro/rules.mk
index e69de29bb2..6e7633bfe0 100644
--- a/keyboards/ez_maker/directpins/promicro/rules.mk
+++ b/keyboards/ez_maker/directpins/promicro/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/ez_maker/directpins/proton_c/keymaps/default/readme.md b/keyboards/ez_maker/directpins/proton_c/keymaps/default/readme.md
deleted file mode 100644
index 69c6d2663b..0000000000
--- a/keyboards/ez_maker/directpins/proton_c/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The default keymap for directpins
diff --git a/keyboards/ez_maker/directpins/proton_c/proton_c.c b/keyboards/ez_maker/directpins/proton_c/proton_c.c
deleted file mode 100644
index 75534b609f..0000000000
--- a/keyboards/ez_maker/directpins/proton_c/proton_c.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2021 Zach White
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You 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/ez_maker/directpins/proton_c/proton_c.h b/keyboards/ez_maker/directpins/proton_c/proton_c.h
deleted file mode 100644
index 386e50fb5b..0000000000
--- a/keyboards/ez_maker/directpins/proton_c/proton_c.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2021 Zach White
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have 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"
diff --git a/keyboards/ez_maker/directpins/proton_c/rules.mk b/keyboards/ez_maker/directpins/proton_c/rules.mk
index e69de29bb2..6e7633bfe0 100644
--- a/keyboards/ez_maker/directpins/proton_c/rules.mk
+++ b/keyboards/ez_maker/directpins/proton_c/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/ez_maker/directpins/rp2040/info.json b/keyboards/ez_maker/directpins/rp2040/info.json
new file mode 100644
index 0000000000..9b707d257f
--- /dev/null
+++ b/keyboards/ez_maker/directpins/rp2040/info.json
@@ -0,0 +1,64 @@
+{
+ "manufacturer": "Raspberry Pi",
+ "keyboard_name": "DirectPins RP2040",
+ "maintainer": "jepler",
+ "bootloader": "rp2040",
+ "debounce": 5,
+ "features": {
+ "bootmagic": true,
+ "extrakey": true,
+ "mousekey": true
+ },
+ "matrix_pins": {
+ "direct": [
+ ["GP0", null],
+ ["GP1", null],
+
+ ["GP2", null],
+ ["GP3", null],
+ ["GP4", null],
+ ["GP5", "GP28"],
+
+ ["GP6", "GP27"],
+ ["GP7", "GP26"],
+ ["GP8", null],
+ ["GP9", "GP22"],
+
+ ["GP10", "GP21"],
+ ["GP11", "GP20"],
+ ["GP12", "GP19"],
+ ["GP13", "GP18"],
+
+ ["GP14", "GP17"],
+ ["GP15", "GP16"]
+ ]
+ },
+ "processor": "RP2040",
+ "usb": {
+ "device_version": "0.0.1",
+ "pid": "0x2326",
+ "vid": "0xFEED"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"GP0", "matrix": [0, 0], "x":0, "y":0},
+ {"label":"GP1", "matrix": [1, 0], "x":0, "y":1},
+ {"label":"GP2", "matrix": [2, 0], "x":0, "y":3},
+ {"label":"GP3", "matrix": [3, 0], "x":0, "y":4},
+ {"label":"GP4", "matrix": [4, 0], "x":0, "y":5},
+ {"label":"GP5", "matrix": [5, 0], "x":0, "y":6}, {"label":"GP28", "matrix": [5, 1], "x":2, "y":6},
+ {"label":"GP6", "matrix": [6, 0], "x":0, "y":8}, {"label":"GP27", "matrix": [6, 1], "x":2, "y":8},
+ {"label":"GP7", "matrix": [7, 0], "x":0, "y":9}, {"label":"GP26", "matrix": [7, 1], "x":2, "y":9},
+ {"label":"GP8", "matrix": [8, 0], "x":0, "y":10},
+ {"label":"GP9", "matrix": [9, 0], "x":0, "y":11}, {"label":"GP22", "matrix": [9, 1], "x":2, "y":11},
+ {"label":"GP10", "matrix": [10, 0], "x":0, "y":13}, {"label":"GP21", "matrix": [10, 1], "x":2, "y":13},
+ {"label":"GP11", "matrix": [11, 0], "x":0, "y":14}, {"label":"GP20", "matrix": [11, 1], "x":2, "y":14},
+ {"label":"GP12", "matrix": [12, 0], "x":0, "y":15}, {"label":"GP19", "matrix": [12, 1], "x":2, "y":15},
+ {"label":"GP13", "matrix": [13, 0], "x":0, "y":16}, {"label":"GP18", "matrix": [13, 1], "x":2, "y":16},
+ {"label":"GP14", "matrix": [14, 0], "x":0, "y":18}, {"label":"GP17", "matrix": [14, 1], "x":2, "y":18},
+ {"label":"GP15", "matrix": [15, 0], "x":0, "y":19}, {"label":"GP16", "matrix": [15, 1], "x":2, "y":19}
+ ]
+ }
+ }
+}
diff --git a/keyboards/ez_maker/directpins/rp2040/keymaps/default/keymap.json b/keyboards/ez_maker/directpins/rp2040/keymaps/default/keymap.json
new file mode 100644
index 0000000000..3bae28a360
--- /dev/null
+++ b/keyboards/ez_maker/directpins/rp2040/keymaps/default/keymap.json
@@ -0,0 +1,25 @@
+{
+ "keyboard": "ez_maker/directpins/rp2040",
+ "keymap": "default",
+ "layout": "LAYOUT_all",
+ "layers": [
+ [
+ "KC_0",
+ "KC_1",
+ "KC_2",
+ "KC_3",
+ "KC_4",
+ "KC_5", "KC_P",
+ "KC_6", "KC_O",
+ "KC_7", "KC_N",
+ "KC_8",
+ "KC_9", "KC_M",
+ "KC_A", "KC_L",
+ "KC_B", "KC_K",
+ "KC_C", "KC_J",
+ "KC_D", "KC_I",
+ "KC_E", "KC_H",
+ "KC_F", "KC_G"
+ ]
+ ]
+}
diff --git a/keyboards/ez_maker/directpins/rp2040/readme.md b/keyboards/ez_maker/directpins/rp2040/readme.md
new file mode 100644
index 0000000000..945ee88c9b
--- /dev/null
+++ b/keyboards/ez_maker/directpins/rp2040/readme.md
@@ -0,0 +1,19 @@
+# DirectPins
+
+![Raspberry Pi Pico pinout guide](https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/pinouts)
+
+Easily assign keys to pins for your custom project using QMK Configurator.
+
+* Keyboard Maintainer: [Jeff Epler](https://github.com/jepler)
+* Hardware Supported: Raspberry Pi Pico, other RP2040 boards
+* Hardware Availability: Raspberry Pi, SparkFun, Adafruit, other makers
+
+Make example for this keyboard (after setting up your build environment):
+
+ qmk compile -kb ez_maker/directpins/rp2040 -km default
+
+Flashing example for this keyboard:
+
+ qmk flash -kb ez_maker/directpins/rp2040 -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).
diff --git a/keyboards/ez_maker/directpins/rp2040/rules.mk b/keyboards/ez_maker/directpins/rp2040/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/ez_maker/directpins/rp2040/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/ez_maker/directpins/teensy_2/config.h b/keyboards/ez_maker/directpins/teensy_2/config.h
deleted file mode 100644
index 436e169c19..0000000000
--- a/keyboards/ez_maker/directpins/teensy_2/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-Copyright 2021 Zach White
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have 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/ez_maker/directpins/teensy_2/info.json b/keyboards/ez_maker/directpins/teensy_2/info.json
index 731d089322..00799aa853 100644
--- a/keyboards/ez_maker/directpins/teensy_2/info.json
+++ b/keyboards/ez_maker/directpins/teensy_2/info.json
@@ -5,7 +5,6 @@
"processor": "atmega32u4",
"bootloader": "halfkay",
"debounce": 5,
- "diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"extrakey": true,
diff --git a/keyboards/ez_maker/directpins/teensy_2/keymaps/default/keymap.json b/keyboards/ez_maker/directpins/teensy_2/keymaps/default/keymap.json
index f52247ec27..9af03008e9 100644
--- a/keyboards/ez_maker/directpins/teensy_2/keymaps/default/keymap.json
+++ b/keyboards/ez_maker/directpins/teensy_2/keymaps/default/keymap.json
@@ -1,5 +1,5 @@
{
- "keyboard": "ez_maker/directpins/teensy2",
+ "keyboard": "ez_maker/directpins/teensy_2",
"keymap": "default",
"layout": "LAYOUT_all",
"layers": [
diff --git a/keyboards/ez_maker/directpins/teensy_2/rules.mk b/keyboards/ez_maker/directpins/teensy_2/rules.mk
index e69de29bb2..6e7633bfe0 100644
--- a/keyboards/ez_maker/directpins/teensy_2/rules.mk
+++ b/keyboards/ez_maker/directpins/teensy_2/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/ez_maker/directpins/teensy_2/teensy2.c b/keyboards/ez_maker/directpins/teensy_2/teensy2.c
deleted file mode 100644
index 1ef3337a1a..0000000000
--- a/keyboards/ez_maker/directpins/teensy_2/teensy2.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2021 Zach White
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You 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/ez_maker/directpins/teensy_2/teensy2.h b/keyboards/ez_maker/directpins/teensy_2/teensy2.h
deleted file mode 100644
index 386e50fb5b..0000000000
--- a/keyboards/ez_maker/directpins/teensy_2/teensy2.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2021 Zach White
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have 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"
diff --git a/keyboards/ez_maker/directpins/teensy_2pp/config.h b/keyboards/ez_maker/directpins/teensy_2pp/config.h
deleted file mode 100644
index 436e169c19..0000000000
--- a/keyboards/ez_maker/directpins/teensy_2pp/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-Copyright 2021 Zach White
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have 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/ez_maker/directpins/teensy_2pp/info.json b/keyboards/ez_maker/directpins/teensy_2pp/info.json
index d1aa41edd5..5baac9d6ab 100644
--- a/keyboards/ez_maker/directpins/teensy_2pp/info.json
+++ b/keyboards/ez_maker/directpins/teensy_2pp/info.json
@@ -5,7 +5,6 @@
"processor": "at90usb1286",
"bootloader": "halfkay",
"debounce": 5,
- "diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"extrakey": true,
diff --git a/keyboards/ez_maker/directpins/teensy_2pp/keymaps/default/keymap.json b/keyboards/ez_maker/directpins/teensy_2pp/keymaps/default/keymap.json
index 444f8cacb3..80de4c7ce4 100644
--- a/keyboards/ez_maker/directpins/teensy_2pp/keymaps/default/keymap.json
+++ b/keyboards/ez_maker/directpins/teensy_2pp/keymaps/default/keymap.json
@@ -1,5 +1,5 @@
{
- "keyboard": "ez_maker/directpins/promicro",
+ "keyboard": "ez_maker/directpins/teensy_2pp",
"keymap": "default",
"layout": "LAYOUT_all",
"layers": [
diff --git a/keyboards/ez_maker/directpins/teensy_2pp/rules.mk b/keyboards/ez_maker/directpins/teensy_2pp/rules.mk
index e69de29bb2..6e7633bfe0 100644
--- a/keyboards/ez_maker/directpins/teensy_2pp/rules.mk
+++ b/keyboards/ez_maker/directpins/teensy_2pp/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/ez_maker/directpins/teensy_2pp/teensy2.c b/keyboards/ez_maker/directpins/teensy_2pp/teensy2.c
deleted file mode 100644
index 1ef3337a1a..0000000000
--- a/keyboards/ez_maker/directpins/teensy_2pp/teensy2.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2021 Zach White
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You 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/ez_maker/directpins/teensy_2pp/teensy2.h b/keyboards/ez_maker/directpins/teensy_2pp/teensy2.h
deleted file mode 100644
index 386e50fb5b..0000000000
--- a/keyboards/ez_maker/directpins/teensy_2pp/teensy2.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Copyright 2021 Zach White
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have 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"
diff --git a/keyboards/ez_maker/directpins/teensy_32/config.h b/keyboards/ez_maker/directpins/teensy_32/config.h
deleted file mode 100644
index c487a84ab1..0000000000
--- a/keyboards/ez_maker/directpins/teensy_32/config.h
+++ /dev/null
@@ -1,23 +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
-
-// i2c_master defines
-#define I2C1_SCL_PIN B0 // A2 on pinout = B0
-#define I2C1_SDA_PIN B1 // A3 on pinout = B1
-#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
-#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
diff --git a/keyboards/ez_maker/directpins/teensy_32/halconf.h b/keyboards/ez_maker/directpins/teensy_32/halconf.h
deleted file mode 100644
index 9ba6e8fc31..0000000000
--- a/keyboards/ez_maker/directpins/teensy_32/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/ez_maker/onekey/teensy_32/halconf.h -r platforms/chibios/common/configs/halconf.h`
- */
-
-#pragma once
-
-#define HAL_USE_I2C TRUE
-
-#include_next <halconf.h>
-
diff --git a/keyboards/ez_maker/directpins/teensy_32/mcuconf.h b/keyboards/ez_maker/directpins/teensy_32/mcuconf.h
index 327f5c9aa3..4d96941426 100644
--- a/keyboards/ez_maker/directpins/teensy_32/mcuconf.h
+++ b/keyboards/ez_maker/directpins/teensy_32/mcuconf.h
@@ -45,7 +45,7 @@
/*
* I2C driver settings
*/
-#define KINETIS_I2C_USE_I2C0 TRUE
+#define KINETIS_I2C_USE_I2C0 FALSE
#define KINETIS_I2C_I2C0_PRIORITY 4
#endif /* _MCUCONF_H_ */
diff --git a/keyboards/ez_maker/directpins/teensy_32/rules.mk b/keyboards/ez_maker/directpins/teensy_32/rules.mk
index a92b099328..9803d8cc70 100644
--- a/keyboards/ez_maker/directpins/teensy_32/rules.mk
+++ b/keyboards/ez_maker/directpins/teensy_32/rules.mk
@@ -1,2 +1,4 @@
+USE_CHIBIOS_CONTRIB = yes
+
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/ez_maker/directpins/teensy_lc/config.h b/keyboards/ez_maker/directpins/teensy_lc/config.h
deleted file mode 100644
index c487a84ab1..0000000000
--- a/keyboards/ez_maker/directpins/teensy_lc/config.h
+++ /dev/null
@@ -1,23 +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
-
-// i2c_master defines
-#define I2C1_SCL_PIN B0 // A2 on pinout = B0
-#define I2C1_SDA_PIN B1 // A3 on pinout = B1
-#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
-#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
diff --git a/keyboards/ez_maker/directpins/teensy_lc/halconf.h b/keyboards/ez_maker/directpins/teensy_lc/halconf.h
deleted file mode 100644
index bd9fe497f2..0000000000
--- a/keyboards/ez_maker/directpins/teensy_lc/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/ez_maker/onekey/teensy_lc/halconf.h -r platforms/chibios/common/configs/halconf.h`
- */
-
-#pragma once
-
-#define HAL_USE_I2C TRUE
-
-#include_next <halconf.h>
-
diff --git a/keyboards/ez_maker/directpins/teensy_lc/mcuconf.h b/keyboards/ez_maker/directpins/teensy_lc/mcuconf.h
index f73bec3dc3..ec7de16c97 100644
--- a/keyboards/ez_maker/directpins/teensy_lc/mcuconf.h
+++ b/keyboards/ez_maker/directpins/teensy_lc/mcuconf.h
@@ -45,7 +45,7 @@
/*
* I2C driver settings
*/
-#define KINETIS_I2C_USE_I2C0 TRUE
+#define KINETIS_I2C_USE_I2C0 FALSE
#define KINETIS_I2C_I2C0_PRIORITY 4
#endif /* _MCUCONF_H_ */
diff --git a/keyboards/ez_maker/directpins/teensy_lc/rules.mk b/keyboards/ez_maker/directpins/teensy_lc/rules.mk
index e04e843284..9803d8cc70 100644
--- a/keyboards/ez_maker/directpins/teensy_lc/rules.mk
+++ b/keyboards/ez_maker/directpins/teensy_lc/rules.mk
@@ -1,4 +1,3 @@
-# MCU name
USE_CHIBIOS_CONTRIB = yes
# Enter lower-power sleep mode when on the ChibiOS idle thread
diff --git a/keyboards/facew/config.h b/keyboards/facew/config.h
index 14583dc831..1dc4236c51 100644
--- a/keyboards/facew/config.h
+++ b/keyboards/facew/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x422D
-#define DEVICE_VER 0x0200
-#define MANUFACTURER SPRiT
-#define PRODUCT FaceW
-
#define RGBLED_NUM 16
#define MATRIX_ROWS 8
@@ -32,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/facew/info.json b/keyboards/facew/info.json
index b8b817970d..fc9b024c2f 100644
--- a/keyboards/facew/info.json
+++ b/keyboards/facew/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "FaceW",
+ "manufacturer": "SPRiT",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x422D",
+ "device_version": "2.0.0"
+ },
"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}, {"x":13, "y":0}, {"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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"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}, {"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":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/fallacy/config.h b/keyboards/fallacy/config.h
index c99653f2c5..4aa7aaf348 100755
--- a/keyboards/fallacy/config.h
+++ b/keyboards/fallacy/config.h
@@ -17,14 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter
- */
-#define VENDOR_ID 0xBF00
-#define PRODUCT_ID 0xBFFA
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SheuBox
-#define PRODUCT Fallacy
-
/* key matrix size
*/
#define MATRIX_ROWS 5
@@ -34,7 +26,6 @@
*/
#define MATRIX_ROW_PINS { B1, B2, B3, C6, C7 }
#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, B6, B5, B4, D7, D6, D4, D5, D3 }
-#define UNUSED_PINS { B0, B7 }
/* COL2ROW or ROW2COL
*/
diff --git a/keyboards/fallacy/info.json b/keyboards/fallacy/info.json
index c1ec9328c0..c0a9293267 100644
--- a/keyboards/fallacy/info.json
+++ b/keyboards/fallacy/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Fallacy",
+ "manufacturer": "SheuBox",
"maintainer": "Toraifu",
+ "usb": {
+ "vid": "0xBF00",
+ "pid": "0xBFFA",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/fc660c/config.h b/keyboards/fc660c/config.h
index 7df5811f42..82cbfe4c29 100644
--- a/keyboards/fc660c/config.h
+++ b/keyboards/fc660c/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4853 /* HS */
-#define PRODUCT_ID 0x660C
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Hasu
-#define PRODUCT FC660C
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/fc660c/info.json b/keyboards/fc660c/info.json
index 2259156d0f..a7f95eea1b 100644
--- a/keyboards/fc660c/info.json
+++ b/keyboards/fc660c/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "fc660c",
+ "keyboard_name": "FC660C",
+ "manufacturer": "Hasu",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4853",
+ "pid": "0x660C",
+ "device_version": "1.0.0"
+ },
"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":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}, {"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":"|", "x":13.5, "y":1, "w":1.5}, {"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":"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.25}, {"x":14.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":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6}, {"label":"Alt", "x":9.75, "y":4, "w":1.25}, {"label":"Win", "x":11, "y":4, "w":1.25}, {"label":"Menu", "x":12.25, "y":4, "w":1.25}, {"x":13.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4}]
diff --git a/keyboards/fc660c/keymaps/siroleo/keymap.c b/keyboards/fc660c/keymaps/siroleo/keymap.c
index 3711336713..82b7f7b473 100644
--- a/keyboards/fc660c/keymaps/siroleo/keymap.c
+++ b/keyboards/fc660c/keymaps/siroleo/keymap.c
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FNM] = 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, KC_VOLU,
- _______,_______,_______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS,_______,_______, RESET, KC_VOLD,
+ _______,_______,_______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS,_______,_______, QK_BOOT, KC_VOLD,
_______,_______,_______, QWERTY,COLEMAK,_______,_______,_______,KC_HOME,KC_PGUP,_______,_______, _______,
_______,_______,_______,_______,_______,_______,_______,_______,KC_END, KC_PGDN,_______,KC_BTN1, KC_MS_U,
_______,_______,_______, _______, _______,_______,_______, KC_MS_L,KC_MS_D,KC_MS_R
diff --git a/keyboards/fc660c/keymaps/via_rgb/keymap.c b/keyboards/fc660c/keymaps/via_rgb/keymap.c
index f9d95b332d..50bf58ffcb 100644
--- a/keyboards/fc660c/keymaps/via_rgb/keymap.c
+++ b/keyboards/fc660c/keymaps/via_rgb/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______,_______,_______, _______, _______,MO(2), _______, KC_HOME,KC_PGDN,KC_END
),
[2] = LAYOUT(
- RESET, EEPROM_RESET,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RGB_TOG,
+ QK_BOOT, EEPROM_RESET,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RGB_TOG,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_MOD,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAI,
diff --git a/keyboards/fc980c/config.h b/keyboards/fc980c/config.h
index 250e7336a9..68c14ea61c 100644
--- a/keyboards/fc980c/config.h
+++ b/keyboards/fc980c/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4853
-#define PRODUCT_ID 0x980C
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Hasu
-#define PRODUCT FC980C
-
/* Maximum dynamic keymap layers (constrained by EEPROM space) */
#define DYNAMIC_KEYMAP_LAYER_COUNT 3
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MATRIX_ROW_PINS { B0, B2, B4, B5, B6 }
// #define MATRIX_COL_PINS { F5, B1, F0, F1, F4, B3, D7, D6, D4, D5, D3, D2, D1, D0 }
-// #define UNUSED_PINS
//#define DIODE_DIRECTION
diff --git a/keyboards/fc980c/info.json b/keyboards/fc980c/info.json
index 681b2c1503..043df7a944 100644
--- a/keyboards/fc980c/info.json
+++ b/keyboards/fc980c/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "fc980c",
+ "keyboard_name": "FC980C",
+ "manufacturer": "Hasu",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4853",
+ "pid": "0x980C",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/feels/feels65/config.h b/keyboards/feels/feels65/config.h
index f311a44834..d036fdddd9 100644
--- a/keyboards/feels/feels65/config.h
+++ b/keyboards/feels/feels65/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xE965
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT Feels65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -31,6 +24,5 @@
/* default pinout */
#define MATRIX_ROW_PINS { D5, D3, D2, D1, D0 }
#define MATRIX_COL_PINS { B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0, E6, B0, B1, B2, B3 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/feels/feels65/info.json b/keyboards/feels/feels65/info.json
index 2d00880d81..b295bf9042 100644
--- a/keyboards/feels/feels65/info.json
+++ b/keyboards/feels/feels65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Feels65",
+ "manufacturer": "Swiftrax",
"url": "https://github.com/swiftrax",
"maintainer": "Swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE965",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/feker/ik75/config.h b/keyboards/feker/ik75/config.h
new file mode 100644
index 0000000000..541fb86b73
--- /dev/null
+++ b/keyboards/feker/ik75/config.h
@@ -0,0 +1,108 @@
+/* Copyright 2022 Feker
+ * 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 16
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F7, F6, F5, F4, F1, F0 }
+#define MATRIX_COL_PINS { E6, B0, B1, B2, B3, B7, D2, D3, D5, D4, D6, D7, B4, B5, B6, E2 }
+
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#ifdef ENCODER_ENABLE
+ /* Encoder pins */
+ #define ENCODERS_PAD_A { C6 }
+ #define ENCODERS_PAD_B { C7 }
+
+ /* Encoder config */
+ #define ENCODER_RESOLUTION 2
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+ #define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+ #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 DRIVER_ADDR_1 0b1011111
+ #define DRIVER_ADDR_2 0b1010000
+ #define DRIVER_COUNT 2
+ #define DRIVER_1_LED_TOTAL 63
+ #define DRIVER_2_LED_TOTAL 64
+
+ /* 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_FLOW
+ #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+ #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/feker/ik75/ik75.c b/keyboards/feker/ik75/ik75.c
new file mode 100644
index 0000000000..58464e1934
--- /dev/null
+++ b/keyboards/feker/ik75/ik75.c
@@ -0,0 +1,191 @@
+/* Copyright 2022 Feker
+ * 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 "ik75.h"
+
+#ifdef RGB_MATRIX_ENABLE
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | G location
+ * | | B location
+ * | | | R location
+ * | | | | */
+ {0, A_1, C_1, B_1}, // 0, `~, K10
+ {0, A_2, C_2, B_2}, // 1, 1!, K11
+ {0, A_3, C_3, B_3}, // 2, 2@, K12
+ {0, A_4, C_4, B_4}, // 3, 3#, K13
+ {0, A_5, C_5, B_5}, // 4, 4$, K14
+ {0, A_6, C_6, B_6}, // 5, 5%, K15
+ {0, A_7, C_7, B_7}, // 6, 6^, K16
+ {0, A_8, C_8, B_8}, // 7, 7&, K17
+ {0, A_9, C_9, B_9}, // 8, 8*, K18
+ {0, A_10, C_10, B_10}, // 9, 9(, K19
+ {0, A_11, C_11, B_11}, // 10, 0), K1A
+ {0, A_12, C_12, B_12}, // 11, -_, K1B
+ {0, A_13, C_13, B_13}, // 12, =+, K1C
+ {0, A_14, C_14, B_14}, // 13, Backspace, K1D
+ {0, A_15, C_15, B_15}, // 14, Left Alt, K52
+ {0, A_16, C_16, B_16}, // 15, Space, K56
+
+ {0, D_1, F_1, E_1}, // 16, Tab, K20
+ {0, D_2, F_2, E_2}, // 17, Q, K21
+ {0, D_3, F_3, E_3}, // 18, W, K22
+ {0, D_4, F_4, E_4}, // 19, E, K23
+ {0, D_5, F_5, E_5}, // 20, R, K24
+ {0, D_6, F_6, E_6}, // 21, T, K25
+ {0, D_7, F_7, E_7}, // 22, Y, K26
+ {0, D_8, F_8, E_8}, // 23, U, K27
+ {0, D_9, F_9, E_9}, // 24, I, K28
+ {0, D_10, F_10, E_10}, // 25, O, K29
+ {0, D_11, F_11, E_11}, // 26, P, K2A
+ {0, D_12, F_12, E_12}, // 27, [{, K2B
+ {0, D_13, F_13, E_13}, // 28, ]}, K2C
+ {0, D_14, F_14, E_14}, // 29, \|, K2D
+ {0, D_15, F_15, E_15}, // 30, Right Ctrl, K5C
+ {0, D_16, F_16, E_16}, // 31, Function, K5A
+
+ {0, G_1, I_1, H_1}, // 32, Caps Lock, K30
+ {0, G_2, I_2, H_2}, // 33, A, K31
+ {0, G_3, I_3, H_3}, // 34, S, K32
+ {0, G_4, I_4, H_4}, // 35, D, K33
+ {0, G_5, I_5, H_5}, // 36, F, K34
+ {0, G_6, I_6, H_6}, // 37, G, K35
+ {0, G_7, I_7, H_7}, // 38, H, K36
+ {0, G_8, I_8, H_8}, // 39, J, K37
+ {0, G_9, I_9, H_9}, // 40, K, K38
+ {0, G_10, I_10, H_10}, // 41, L, K39
+ {0, G_11, I_11, H_11}, // 42, ;:, K3A
+ {0, G_12, I_12, H_12}, // 43, '", K3B
+ {0, G_13, I_13, H_13}, // 44, Enter, K3D
+ {0, G_14, I_14, H_14}, // 45, Up, K4E
+ {0, G_15, I_15, H_15}, // 46, Num Lock LED
+ {0, G_16, I_16, H_16}, // 47, Right Alt, K59
+
+ {0, J_1, L_1, K_1}, // 48, Left Shift, K40
+// {0, J_2, L_2, K_2}, // Unused LED
+ {0, J_3, L_3, K_3}, // 49, Z, K42
+ {0, J_4, L_4, K_4}, // 50, X, K43
+ {0, J_5, L_5, K_5}, // 51, C, K44
+ {0, J_6, L_6, K_6}, // 52, V, K45
+ {0, J_7, L_7, K_7}, // 53, B, K46
+ {0, J_8, L_8, K_8}, // 54, N, K47
+ {0, J_9, L_9, K_9}, // 55, M, K48
+ {0, J_10, L_10, K_10}, // 56, ,<, K49
+ {0, J_11, L_11, K_11}, // 57, .>, K4A
+ {0, J_12, L_12, K_12}, // 58, /?, K4B
+ {0, J_13, L_13, K_13}, // 59, Right Shift, K4D
+ {0, J_14, L_14, K_14}, // 60, Left, K5D
+ {0, J_15, L_15, K_15}, // 61, Down, K5E
+ {0, J_16, L_16, K_16}, // 62, Right, K5F
+
+ {1, A_1, C_1, B_1}, // 63, Underglow 20
+ {1, A_2, C_2, B_2}, // 64, Underglow 19
+ {1, A_3, C_3, B_3}, // 65, Underglow 18
+ {1, A_4, C_4, B_4}, // 66, Underglow 17
+ {1, A_5, C_5, B_5}, // 67, Underglow 16
+ {1, A_6, C_6, B_6}, // 68, Underglow 15
+ {1, A_7, C_7, B_7}, // 69, Underglow 14
+ {1, A_8, C_8, B_8}, // 70, Underglow 13
+ {1, A_9, C_9, B_9}, // 71, Underglow 12
+ {1, A_10, C_10, B_10}, // 72, Underglow 11
+ {1, A_11, C_11, B_11}, // 73, Underglow 10
+ {1, A_12, C_12, B_12}, // 74, Underglow 9
+ {1, A_13, C_13, B_13}, // 75, Underglow 8
+ {1, A_14, C_14, B_14}, // 76, Underglow 7
+ {1, A_15, C_15, B_15}, // 77, Underglow 6
+ {1, A_16, C_16, B_16}, // 78, Underglow 5
+
+ {1, D_1, F_1, E_1}, // 79, Esc, K00
+ {1, D_2, F_2, E_2}, // 80, F1, K01
+ {1, D_3, F_3, E_3}, // 81, F2, K02
+ {1, D_4, F_4, E_4}, // 82, F3, K03
+ {1, D_5, F_5, E_5}, // 83, F4, K04
+ {1, D_6, F_6, E_6}, // 84, F5, K05
+ {1, D_7, F_7, E_7}, // 85, F6, K06
+ {1, D_8, F_8, E_8}, // 86, F7, K07
+ {1, D_9, F_9, E_9}, // 87, F8, K08
+ {1, D_10, F_10, E_10}, // 88, F9, K09
+ {1, D_11, F_11, E_11}, // 89, F10, K0A
+ {1, D_12, F_12, E_12}, // 90, F11, K0B
+ {1, D_13, F_13, E_13}, // 91, F12, K0C
+ {1, D_14, F_14, E_14}, // 92, Delete, K0D
+ {1, D_15, F_15, E_15}, // 93, Left Ctrl, K50
+ {1, D_16, F_16, E_16}, // 94, Left Windows, K51
+
+ {1, G_1, I_1, H_1}, // 95, Underglow 21
+ {1, G_2, I_2, H_2}, // 96, Underglow 22
+ {1, G_3, I_3, H_3}, // 97, Underglow 23
+ {1, G_4, I_4, H_4}, // 98, Underglow 24
+ {1, G_5, I_5, H_5}, // 99, Knob LED 3, K53
+ {1, G_6, I_6, H_6}, // 100, Knob LED 2, K54
+ {1, G_7, I_7, H_7}, // 101, Knob LED 1, K4F
+ {1, G_8, I_8, H_8}, // 102, Insert, K1F
+ {1, G_9, I_9, H_9}, // 103, Page Up, K3E
+ {1, G_10, I_10, H_10}, // 104, Caps/Win/Scr LED
+ {1, G_11, I_11, H_11}, // 105, End, K2F
+ {1, G_12, I_12, H_12}, // 106, Page Down, K3F
+ {1, G_13, I_13, H_13}, // 107, Underglow 1
+ {1, G_14, I_14, H_14}, // 108, Underglow 2
+ {1, G_15, I_15, H_15}, // 109, Underglow 3
+ {1, G_16, I_16, H_16}, // 110, Underglow 4
+
+ {1, J_1, L_1, K_1}, // 111, Underglow 25
+ {1, J_2, L_2, K_2}, // 112, Underglow 26
+ {1, J_3, L_3, K_3}, // 113, Underglow 27
+ {1, J_4, L_4, K_4}, // 114, Underglow 28
+ {1, J_5, L_5, K_5}, // 115, Underglow 29
+ {1, J_6, L_6, K_6}, // 116, Underglow 30
+ {1, J_7, L_7, K_7}, // 117, Underglow 31
+ {1, J_8, L_8, K_8}, // 118, Underglow 32
+ {1, J_9, L_9, K_9}, // 119, Underglow 33
+ {1, J_10, L_10, K_10}, // 120, Underglow 34
+ {1, J_11, L_11, K_11}, // 121, Underglow 35
+ {1, J_12, L_12, K_12}, // 122, Underglow 36
+ {1, J_13, L_13, K_13}, // 123, Underglow 37
+ {1, J_14, L_14, K_14}, // 124, Underglow 38
+ {1, J_15, L_15, K_15}, // 125, Underglow 39
+ {1, J_16, L_16, K_16}, // 126, Underglow 40
+};
+
+led_config_t g_led_config = { {
+ { 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, NO_LED, NO_LED },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, NO_LED, 102 },
+ { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, NO_LED, 105 },
+ { 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, NO_LED, 44, 103, 106 },
+ { 48, NO_LED, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, NO_LED, 59, 45, 101 },
+ { 93, 94, 14, NO_LED, NO_LED, NO_LED, 15, NO_LED, NO_LED, 30, 31, NO_LED, 47, 60, 61, 62 }
+}, {
+ {0 , 15}, {14 , 15}, {29 , 15}, {43 , 15}, {58 , 15}, {72 , 15}, {87 , 15}, {101, 15}, {116, 15}, {130, 15}, {145, 15}, {159, 15}, {173, 15}, {195, 15}, {38 , 61}, {92 , 61},
+ {4 , 26}, {22 , 26}, {36 , 26}, {51 , 26}, {65 , 26}, {79 , 26}, {94 , 26}, {108, 26}, {123, 26}, {137, 26}, {152, 26}, {166, 26}, {181, 26}, {199, 26}, {173, 61}, {159, 61},
+ {5 , 38}, {25 , 38}, {40 , 38}, {54 , 38}, {69 , 38}, {83 , 38}, {98 , 38}, {112, 38}, {126, 38}, {141, 38}, {155, 38}, {170, 38}, {193, 38}, {206, 52}, {210, 12}, {145, 61},
+ {9 , 49}, {33 , 49}, {47 , 49}, {61 , 49}, {76 , 49}, {90 , 49}, {105, 49}, {119, 49}, {134, 49}, {148, 49}, {163, 49}, {182, 49}, {191, 64}, {206, 64}, {220, 64},
+ {14 , 0}, {28 , 0}, {53 , 0}, {63 , 0}, {74 , 0}, {88 , 0}, {102, 0}, {116, 0}, {130, 0}, {144, 0}, {158, 0}, {172, 0}, {189, 0}, {210, 0}, {224, 0}, {224, 11},
+ {0 , 0}, {18 , 0}, {33 , 0}, {47 , 0}, {61 , 0}, {79 , 0}, {94 , 0}, {108, 0}, {123, 0}, {141, 0}, {155, 0}, {170, 0}, {184, 0}, {202, 0}, {2 , 61}, {20 , 61},
+ {0 , 0}, {0 , 11}, {0 , 27}, {0 , 37}, {224, 5}, {210, 5}, {217, 0}, {224, 15}, {224, 38}, {210, 18}, {224, 26}, {224, 49}, {224, 56}, {224, 45}, {224, 35}, {224, 24},
+ {0 , 48}, {0 , 56}, {0 , 64}, {14 , 64}, {28 , 64}, {49 , 64}, {67 , 64}, {84 , 64}, {98 , 64}, {112, 64}, {126, 64}, {140, 64}, {158, 64}, {172, 64}, {196, 64}, {224, 64},
+}, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 8, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 2, 2, 2, 2, 1, 1, 4, 4, 4, 8, 4, 4, 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/feker/ik75/ik75.h b/keyboards/feker/ik75/ik75.h
new file mode 100644
index 0000000000..c4e5743bac
--- /dev/null
+++ b/keyboards/feker/ik75/ik75.h
@@ -0,0 +1,56 @@
+/* Copyright 2022 Feker
+ * 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 │ │4F │
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───â”
+ * │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 │2D │ │2F │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │3E │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┤
+ * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4D │┌───â”│3F │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┘│4E │└───┘
+ * │50 │51 │52 │56 │5C │5A │59 │┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┘│5D │5E │5F │
+ * └───┴───┴───┘
+ */
+
+#define LAYOUT( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K4F, \
+ 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, K3D, K3E, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4E, K3F, \
+ K50, K51, K52, K56, K5C, K5A, K59, K5D, K5E, K5F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, XXX }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, K1F }, \
+ { K20, K21, 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, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, K4E, K4F }, \
+ { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, K59, K5A, XXX, K5C, K5D, K5E, K5F } \
+}
diff --git a/keyboards/feker/ik75/info.json b/keyboards/feker/ik75/info.json
new file mode 100644
index 0000000000..bdba79703e
--- /dev/null
+++ b/keyboards/feker/ik75/info.json
@@ -0,0 +1,105 @@
+{
+ "keyboard_name": "IK75",
+ "manufacturer": "Feker",
+ "url": "https://epomaker.com/products/epomaker-feker-ik75-v3-qmk-via",
+ "maintainer": "Feker",
+ "usb": {
+ "vid": "0xF2E7",
+ "pid": "0x1226",
+ "device_version": "0.0.1"
+ },
+ "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":"Delete", "x":14, "y":0},
+ {"label":"Mute", "x":15.5, "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.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":"End", "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":"PgUp", "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":"\u2191", "x":14.25, "y":4.5},
+ {"label":"PgDn", "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":"\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/feker/ik75/keymaps/bkzshen/keymap.c b/keyboards/feker/ik75/keymaps/bkzshen/keymap.c
new file mode 100644
index 0000000000..95d41853f9
--- /dev/null
+++ b/keyboards/feker/ik75/keymaps/bkzshen/keymap.c
@@ -0,0 +1,224 @@
+/* Copyright 2022 Feker
+ * 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,
+ _FN1,
+ _FN2,
+};
+
+// enum layer_keycodes { };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┠┌───â”
+ │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││Del│ │Mut│
+ └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───â”
+ │ ` │ 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 │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(
+ KC_ESC, KC_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(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┠┌───â”
+ │Rst││Mcm│Hom│Cal│Sel││Prv│Nxt│Ply│Stp││Mut│VoD│VoU│Mai││Ins│ │Tog│
+ └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───â”
+ │NKO│ │ │ │ │ │ │ │ │ │ │Spd│Spi│ │ │Mod│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │Prt│ │ │ │ │Hui│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┤
+ │ │ │Scr│ │ │ │ │ │ │ │ │ │ │ │Sai│
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┤
+ │ │ │ │ │ │ │Num│ │ │ │ │ │┌───â”│Sad│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─────┘│Vai│└───┘
+ │ │GTog│ │ │ │ │ ┌───┼───┼───â”
+ └────┴────┴────┴────────────────────────┴────┴────┘ │ │Vad│ │
+ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
+ [_FN] = LAYOUT(
+ QK_BOOT, KC_MYCM, KC_WHOM, KC_CALC, KC_SLCT, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_MAIL, KC_INS, RGB_TOG,
+ NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, RGB_MOD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, RGB_HUI,
+ _______, _______, KC_SCRL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
+ _______, _______, _______, _______, _______, _______, KC_NUM, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAD,
+ _______, GUI_TOG, _______, _______, _______, _______, _______, _______, RGB_VAD, _______
+ ),
+
+/*
+ ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┠┌───â”
+ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │
+ └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │┌───â”│ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─────┘│ │└───┘
+ │ │ │ │ │ │ │ ┌───┼───┼───â”
+ └────┴────┴────┴────────────────────────┴────┴────┘ │ │ │ │
+ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
+ [_FN1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+/*
+ ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┠┌───â”
+ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │
+ └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │┌───â”│ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─────┘│ │└───┘
+ │ │ │ │ │ │ │ ┌───┼───┼───â”
+ └────┴────┴────┴────────────────────────┴────┴────┘ │ │ │ │
+ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
+ [_FN2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
+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);
+ }
+ 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_set_color_all(0, 0, 0);
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+ }
+ return false;
+ }
+
+ return true;
+}
+
+void rgb_matrix_indicators_user(void) {
+ rgb_matrix_set_color(46, 0, 0, 0);
+ rgb_matrix_set_color(104, 0, 0, 0);
+
+ uint8_t red = host_keyboard_led_state().caps_lock ? 255 : 0;
+ uint8_t green = host_keyboard_led_state().scroll_lock ? 255 : 0;
+ uint8_t blue = keymap_config.no_gui ? 255 : 0;
+
+
+ if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) {
+ if (host_keyboard_led_state().num_lock) {
+ rgb_matrix_set_color(46, 255, 0, 0);
+ }
+ rgb_matrix_set_color(104, red, green, blue);
+ } else {
+ if (host_keyboard_led_state().num_lock) {
+ rgb_matrix_set_color(46, 255, 0, 0);
+ } else {
+ rgb_matrix_set_color(46, 0, 0, 0);
+ }
+ rgb_matrix_set_color(104, red, green, blue);
+ }
+}
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif
diff --git a/keyboards/feker/ik75/keymaps/bkzshen/rules.mk b/keyboards/feker/ik75/keymaps/bkzshen/rules.mk
new file mode 100644
index 0000000000..d76c12896f
--- /dev/null
+++ b/keyboards/feker/ik75/keymaps/bkzshen/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+
+# Encoder enabled
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/feker/ik75/keymaps/default/keymap.c b/keyboards/feker/ik75/keymaps/default/keymap.c
new file mode 100644
index 0000000000..582340650c
--- /dev/null
+++ b/keyboards/feker/ik75/keymaps/default/keymap.c
@@ -0,0 +1,166 @@
+/* Copyright 2022 Feker
+ * 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││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││Del│ │Mut│
+ └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───â”
+ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Bckspc│ │Ins│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┤
+ │ 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 │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(
+ KC_ESC, KC_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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┠┌───â”
+ │Rst││Mcm│Hom│Cal│Sel││Prv│Nxt│Ply│Stp││Mut│VoD│VoU│Mai││ │ │Tog│
+ └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───â”
+ │NKO│ │ │ │ │ │ │ │ │ │ │Spd│Spi│ │ │Mod│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │Prt│ │ │ │ │Hui│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┤
+ │ │ │Scr│ │ │ │ │ │ │ │ │ │ │ │Sai│
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┤
+ │ │ │ │ │ │ │Num│ │ │ │ │ │┌───â”│Sad│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─────┘│Vai│└───┘
+ │ │GTog│ │ │ │ │ ┌───┼───┼───â”
+ └────┴────┴────┴────────────────────────┴────┴────┘ │ │Vad│ │
+ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
+ [_FN] = LAYOUT(
+ QK_BOOT, KC_MYCM, KC_WHOM, KC_CALC, KC_SLCT, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_MAIL, _______, RGB_TOG,
+ NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, RGB_MOD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, RGB_HUI,
+ _______, _______, KC_SCRL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
+ _______, _______, _______, _______, _______, _______, KC_NUM, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAD,
+ _______, GUI_TOG, _______, _______, _______, _______, _______, _______, RGB_VAD, _______
+ ),
+};
+
+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);
+ }
+ 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_set_color_all(0, 0, 0);
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+ }
+ return false;
+ }
+
+ return true;
+}
+
+void rgb_matrix_indicators_user(void) {
+ rgb_matrix_set_color(46, 0, 0, 0);
+ rgb_matrix_set_color(104, 0, 0, 0);
+
+ uint8_t red = host_keyboard_led_state().caps_lock ? 255 : 0;
+ uint8_t green = host_keyboard_led_state().scroll_lock ? 255 : 0;
+ uint8_t blue = keymap_config.no_gui ? 255 : 0;
+
+
+ if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) {
+ if (host_keyboard_led_state().num_lock) {
+ rgb_matrix_set_color(46, 255, 0, 0);
+ }
+ rgb_matrix_set_color(104, red, green, blue);
+ } else {
+ if (host_keyboard_led_state().num_lock) {
+ rgb_matrix_set_color(46, 255, 0, 0);
+ } else {
+ rgb_matrix_set_color(46, 0, 0, 0);
+ }
+ rgb_matrix_set_color(104, red, green, blue);
+ }
+}
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif
diff --git a/keyboards/feker/ik75/keymaps/default/rules.mk b/keyboards/feker/ik75/keymaps/default/rules.mk
new file mode 100644
index 0000000000..00003ba11b
--- /dev/null
+++ b/keyboards/feker/ik75/keymaps/default/rules.mk
@@ -0,0 +1,2 @@
+# Encoder enabled
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/feker/ik75/keymaps/via/keymap.c b/keyboards/feker/ik75/keymaps/via/keymap.c
new file mode 100644
index 0000000000..6f0c6890ed
--- /dev/null
+++ b/keyboards/feker/ik75/keymaps/via/keymap.c
@@ -0,0 +1,224 @@
+/* Copyright 2022 Feker
+ * 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,
+ _FN1,
+ _FN2,
+};
+
+// enum layer_keycodes { };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┠┌───â”
+ │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││Del│ │Mut│
+ └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───â”
+ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Bckspc│ │Ins│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┤
+ │ 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 │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(
+ KC_ESC, KC_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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┠┌───â”
+ │Rst││Mcm│Hom│Cal│Sel││Prv│Nxt│Ply│Stp││Mut│VoD│VoU│Mai││ │ │Tog│
+ └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───â”
+ │NKO│ │ │ │ │ │ │ │ │ │ │Spd│Spi│ │ │Mod│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │Prt│ │ │ │ │Hui│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┤
+ │ │ │Scr│ │ │ │ │ │ │ │ │ │ │ │Sai│
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┤
+ │ │ │ │ │ │ │Num│ │ │ │ │ │┌───â”│Sad│
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─────┘│Vai│└───┘
+ │ │GTog│ │ │ │ │ ┌───┼───┼───â”
+ └────┴────┴────┴────────────────────────┴────┴────┘ │ │Vad│ │
+ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
+ [_FN] = LAYOUT(
+ QK_BOOT, KC_MYCM, KC_WHOM, KC_CALC, KC_SLCT, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_MAIL, _______, RGB_TOG,
+ NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, RGB_MOD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, RGB_HUI,
+ _______, _______, KC_SCRL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
+ _______, _______, _______, _______, _______, _______, KC_NUM, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAD,
+ _______, GUI_TOG, _______, _______, _______, _______, _______, _______, RGB_VAD, _______
+ ),
+
+/*
+ ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┠┌───â”
+ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │
+ └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │┌───â”│ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─────┘│ │└───┘
+ │ │ │ │ │ │ │ ┌───┼───┼───â”
+ └────┴────┴────┴────────────────────────┴────┴────┘ │ │ │ │
+ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
+ [_FN1] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+/*
+ ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┠┌───â”
+ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │
+ └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘ └───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │┌───â”│ │
+ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─────┘│ │└───┘
+ │ │ │ │ │ │ │ ┌───┼───┼───â”
+ └────┴────┴────┴────────────────────────┴────┴────┘ │ │ │ │
+ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
+ [_FN2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
+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);
+ }
+ 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_set_color_all(0, 0, 0);
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+ }
+ return false;
+ }
+
+ return true;
+}
+
+void rgb_matrix_indicators_user(void) {
+ rgb_matrix_set_color(46, 0, 0, 0);
+ rgb_matrix_set_color(104, 0, 0, 0);
+
+ uint8_t red = host_keyboard_led_state().caps_lock ? 255 : 0;
+ uint8_t green = host_keyboard_led_state().scroll_lock ? 255 : 0;
+ uint8_t blue = keymap_config.no_gui ? 255 : 0;
+
+
+ if ((rgb_matrix_get_flags() & LED_FLAG_KEYLIGHT)) {
+ if (host_keyboard_led_state().num_lock) {
+ rgb_matrix_set_color(46, 255, 0, 0);
+ }
+ rgb_matrix_set_color(104, red, green, blue);
+ } else {
+ if (host_keyboard_led_state().num_lock) {
+ rgb_matrix_set_color(46, 255, 0, 0);
+ } else {
+ rgb_matrix_set_color(46, 0, 0, 0);
+ }
+ rgb_matrix_set_color(104, red, green, blue);
+ }
+}
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif
diff --git a/keyboards/feker/ik75/keymaps/via/rules.mk b/keyboards/feker/ik75/keymaps/via/rules.mk
new file mode 100644
index 0000000000..d76c12896f
--- /dev/null
+++ b/keyboards/feker/ik75/keymaps/via/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+
+# Encoder enabled
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/feker/ik75/readme.md b/keyboards/feker/ik75/readme.md
new file mode 100644
index 0000000000..e533f4a200
--- /dev/null
+++ b/keyboards/feker/ik75/readme.md
@@ -0,0 +1,25 @@
+# Feker IK75
+
+A 75% exploded keyboard made by Feker, which controlled by an Atmega32u4 chipset. The keyboard features per-key RGB, RGB underglow and 1 encoder.
+
+* Keyboard Maintainer: Feker
+* Hardware Supported: Atmega32u4
+* Hardware Availability: https://epomaker.com/products/epomaker-feker-ik75-v3-qmk-via
+
+Make example for this keyboard (after setting up your build environment):
+
+ make feker/ik75:default
+
+Flashing example for this keyboard:
+
+ make feker/ik75: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 (Esc 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 `QK_BOOT` if it is available
diff --git a/keyboards/feker/ik75/rules.mk b/keyboards/feker/ik75/rules.mk
new file mode 100644
index 0000000000..97a872d23e
--- /dev/null
+++ b/keyboards/feker/ik75/rules.mk
@@ -0,0 +1,29 @@
+# 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
+
+# Additional thing to reduce compiled size
+LTO_ENABLE = yes
+SPACE_CADET_ENABLE = no
+
+# RGB Matrix enabled
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = IS31FL3733
+
+# Encoder enabled
+ENCODER_ENABLE = yes
diff --git a/keyboards/ferris/0_1/config.h b/keyboards/ferris/0_1/config.h
index 6cd5c91621..79a74ae9bb 100644
--- a/keyboards/ferris/0_1/config.h
+++ b/keyboards/ferris/0_1/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC2AB
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Pierre
-#define PRODUCT Ferris the keeb
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 10
diff --git a/keyboards/ferris/0_1/info.json b/keyboards/ferris/0_1/info.json
new file mode 100644
index 0000000000..354545b3bd
--- /dev/null
+++ b/keyboards/ferris/0_1/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Ferris the keeb",
+ "manufacturer": "Pierre",
+ "usb": {
+ "vid": "0xC2AB",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/ferris/0_2/base/info.json b/keyboards/ferris/0_2/base/info.json
new file mode 100644
index 0000000000..d0d22b8047
--- /dev/null
+++ b/keyboards/ferris/0_2/base/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Ferris 0.2",
+ "usb": {
+ "pid": "0x0001"
+ }
+}
diff --git a/keyboards/ferris/0_2/base/rules.mk b/keyboards/ferris/0_2/base/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/ferris/0_2/base/rules.mk
diff --git a/keyboards/ferris/0_2/bling/config.h b/keyboards/ferris/0_2/bling/config.h
index 4b2efd378d..ceb02e737b 100644
--- a/keyboards/ferris/0_2/bling/config.h
+++ b/keyboards/ferris/0_2/bling/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x0002
-#undef PRODUCT
-#define PRODUCT Ferris 0.2 - Bling
-
-
-
/* LED Drivers */
#define DRIVER_ADDR_1 0b1110100
#define DRIVER_ADDR_2 0b1110101
diff --git a/keyboards/ferris/0_2/bling/info.json b/keyboards/ferris/0_2/bling/info.json
new file mode 100644
index 0000000000..5473c33295
--- /dev/null
+++ b/keyboards/ferris/0_2/bling/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Ferris 0.2 - Bling",
+ "usb": {
+ "pid": "0x0002"
+ }
+}
diff --git a/keyboards/ferris/0_2/compact/config.h b/keyboards/ferris/0_2/compact/config.h
deleted file mode 100644
index ee465b9acd..0000000000
--- a/keyboards/ferris/0_2/compact/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Copyright 2021 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
-
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x0003
-#undef PRODUCT
-#define PRODUCT Ferris 0.2 - Compact
diff --git a/keyboards/ferris/0_2/compact/info.json b/keyboards/ferris/0_2/compact/info.json
new file mode 100644
index 0000000000..4ca1555776
--- /dev/null
+++ b/keyboards/ferris/0_2/compact/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Ferris 0.2 - Compact",
+ "usb": {
+ "pid": "0x0003"
+ }
+}
diff --git a/keyboards/ferris/0_2/config.h b/keyboards/ferris/0_2/config.h
index f51e5dd8f1..5de356f3cf 100644
--- a/keyboards/ferris/0_2/config.h
+++ b/keyboards/ferris/0_2/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC2AB
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Cuddly Keyboards Ltd.
-#define PRODUCT Ferris 0.2
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 10
@@ -52,8 +45,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B7, B6, B5, A2, A0, A0, A0, A0 }
#define MATRIX_COL_PINS \
{ B8, B4, B3, A15, A14, A1, A1, A1, A1, A1 }
-#define UNUSED_PINS \
- { A3, A4, A5, A6, A7, A8, A9, A10, A13, B0, B1, B2, B9, B12, B13, B14, B15, C13, C14, C15, F0, F1 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ferris/0_2/high/config.h b/keyboards/ferris/0_2/high/config.h
deleted file mode 100644
index 67786241b4..0000000000
--- a/keyboards/ferris/0_2/high/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Copyright 2021 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
-
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x0005
-#undef PRODUCT
-#define PRODUCT Ferris 0.2 - High
diff --git a/keyboards/ferris/0_2/high/info.json b/keyboards/ferris/0_2/high/info.json
new file mode 100644
index 0000000000..adb9d07af3
--- /dev/null
+++ b/keyboards/ferris/0_2/high/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Ferris 0.2 - High",
+ "usb": {
+ "pid": "0x0005"
+ }
+}
diff --git a/keyboards/ferris/0_2/info.json b/keyboards/ferris/0_2/info.json
new file mode 100644
index 0000000000..9ab2ffbdfb
--- /dev/null
+++ b/keyboards/ferris/0_2/info.json
@@ -0,0 +1,7 @@
+{
+ "manufacturer": "Cuddly Keyboards Ltd.",
+ "usb": {
+ "vid": "0xC2AB",
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/ferris/0_2/mini/config.h b/keyboards/ferris/0_2/mini/config.h
deleted file mode 100644
index e357cabe0b..0000000000
--- a/keyboards/ferris/0_2/mini/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Copyright 2021 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
-
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x0004
-#undef PRODUCT
-#define PRODUCT Ferris 0.2 - Mini
diff --git a/keyboards/ferris/0_2/mini/info.json b/keyboards/ferris/0_2/mini/info.json
new file mode 100644
index 0000000000..0ab5db559a
--- /dev/null
+++ b/keyboards/ferris/0_2/mini/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Ferris 0.2 - Mini",
+ "usb": {
+ "pid": "0x0004"
+ }
+}
diff --git a/keyboards/ferris/0_2/rules.mk b/keyboards/ferris/0_2/rules.mk
index 2d406f5c1d..c5a44ca9ef 100644
--- a/keyboards/ferris/0_2/rules.mk
+++ b/keyboards/ferris/0_2/rules.mk
@@ -25,3 +25,5 @@ SRC += matrix.c
QUANTUM_LIB_SRC += i2c_master.c
LAYOUTS = split_3x5_2
+
+DEFAULT_FOLDER = ferris/0_2/base
diff --git a/keyboards/ferris/info.json b/keyboards/ferris/info.json
index 93470c7253..52485bd9e9 100644
--- a/keyboards/ferris/info.json
+++ b/keyboards/ferris/info.json
@@ -1,5 +1,4 @@
{
- "keyboard_name": "Ferris",
"url": "https://github.com/pierrechevalier83/ferris/",
"maintainer": "@pierrec83",
"layouts": {
diff --git a/keyboards/ferris/keymaps/bruun-baer/config.h b/keyboards/ferris/keymaps/bruun-baer/config.h
new file mode 100644
index 0000000000..4f63ee544f
--- /dev/null
+++ b/keyboards/ferris/keymaps/bruun-baer/config.h
@@ -0,0 +1,39 @@
+/*
+Copyright 2022 Alexander Bruun <alex@bruun.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/>.
+*/
+
+#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/ferris/keymaps/bruun-baer/keymap.json b/keyboards/ferris/keymaps/bruun-baer/keymap.json
new file mode 100644
index 0000000000..ee966ab1b5
--- /dev/null
+++ b/keyboards/ferris/keymaps/bruun-baer/keymap.json
@@ -0,0 +1,71 @@
+{
+ "version": 1,
+ "notes": "Personal 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": "ferris/sweep",
+ "keymap": "bruun-baer",
+ "layout": "LAYOUT_split_3x5_2",
+ "layers": [
+ ["KC_Q" , "KC_D" , "KC_R" , "KC_W" , "KC_B",
+ "KC_J" , "KC_F" , "KC_U" , "KC_P" , "KC_QUOT",
+
+ "LGUI_T(KC_A)", "LALT_T(KC_S)", "LSFT_T(KC_H)", "LCTL_T(KC_T)" , "KC_G",
+ "KC_Y" , "LCTL_T(KC_N)", "LSFT_T(KC_E)", "LALT_T(KC_O)" , "LGUI_T(KC_I)",
+
+ "KC_Z" , "RALT_T(KC_X)", "KC_M" , "KC_C" , "KC_V",
+ "KC_K" , "KC_L" , "KC_COMM" , "RALT_T(KC_DOT)", "KC_SLSH",
+
+ "LT(3,KC_SPC)", "LT(4,KC_TAB)",
+ "LT(2,KC_ENT)", "LT(1,KC_BSPC)"
+ ],
+ ["KC_LBRC" , "KC_7" , "KC_8" , "KC_9" , "KC_RBRC",
+ "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO",
+
+ "KC_SCLN" , "KC_4" , "KC_5" , "KC_6" , "KC_EQL",
+ "KC_NO" , "KC_LCTL" , "KC_LSFT" , "KC_LALT" , "KC_LGUI",
+
+ "KC_GRV" , "KC_1" , "KC_2" , "KC_3" , "KC_BSLS",
+ "KC_NO" , "KC_NO" , "KC_NO" , "KC_RALT" , "KC_NO",
+
+ "KC_0" , "KC_MINS",
+ "KC_NO" , "KC_NO"
+ ],
+ ["KC_LCBR" , "KC_AMPR" , "KC_ASTR" , "KC_LPRN" , "KC_RCBR",
+ "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO",
+
+ "KC_COLN" , "KC_DLR" , "KC_PERC" , "KC_CIRC" , "KC_PLUS",
+ "KC_NO" , "KC_LCTL" , "KC_LSFT" , "KC_LALT" , "KC_LGUI",
+
+ "KC_TILD" , "KC_EXLM" , "KC_AT" , "KC_HASH" , "KC_PIPE",
+ "KC_NO" , "KC_NO" , "KC_NO" , "KC_RALT" , "KC_NO",
+
+ "KC_RPRN" , "KC_UNDS",
+ "KC_NO" , "KC_NO"
+ ],
+ ["KC_F12" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_PSCR",
+ "KC_AGIN" , "KC_PSTE" , "KC_COPY" , "KC_CUT" , "KC_UNDO",
+
+ "KC_F11" , "KC_F4" , "KC_F5" , "KC_F6" , "KC_SCRL",
+ "KC_CAPS" , "KC_LEFT" , "KC_DOWN" , "KC_UP" , "KC_RGHT",
+
+ "KC_F10" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_PAUS",
+ "KC_INS" , "KC_HOME" , "KC_PGDN" , "KC_PGUP" , "KC_END",
+
+ "KC_NO" , "KC_NO",
+ "KC_ESC" , "KC_DEL"
+ ],
+ ["KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO",
+ "KC_MPLY" , "KC_MPRV" , "KC_VOLD" , "KC_VOLU" , "KC_MNXT",
+
+ "KC_LGUI" , "KC_LALT" , "KC_LSFT" , "KC_LCTL" , "KC_NO",
+ "KC_MUTE" , "KC_MS_L" , "KC_MS_D" , "KC_MS_U" , "KC_MS_R",
+
+ "KC_NO" , "KC_RALT" , "KC_NO" , "KC_NO" , "KC_NO",
+ "KC_BTN3" , "KC_WH_L" , "KC_WH_D" , "KC_WH_U" , "KC_WH_R",
+
+ "KC_NO" , "KC_NO",
+ "KC_BTN1" , "KC_BTN2"
+ ]
+ ],
+ "author": "@bruun-baer"
+}
diff --git a/keyboards/ferris/keymaps/bruun-baer/readme.md b/keyboards/ferris/keymaps/bruun-baer/readme.md
new file mode 100644
index 0000000000..7d1d78b5f1
--- /dev/null
+++ b/keyboards/ferris/keymaps/bruun-baer/readme.md
@@ -0,0 +1,2 @@
+Personal Ferris Sweep Keymap
+===============================================
diff --git a/keyboards/ferris/keymaps/madhatter/keymap.c b/keyboards/ferris/keymaps/madhatter/keymap.c
index 5a3f416e74..1bdc8604f2 100644
--- a/keyboards/ferris/keymaps/madhatter/keymap.c
+++ b/keyboards/ferris/keymaps/madhatter/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_RAISE] = LAYOUT( /* [> RAISE <] */
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, KC_TRNS, KC_UNDS, KC_PLUS, KC_TRNS, KC_TRNS, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
diff --git a/keyboards/ferris/keymaps/manna-harbour_miryoku/config.h b/keyboards/ferris/keymaps/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..dbbff11bb6
--- /dev/null
+++ b/keyboards/ferris/keymaps/manna-harbour_miryoku/config.h
@@ -0,0 +1,19 @@
+// Copyright 2021 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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 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( \
+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 \
+)
diff --git a/keyboards/ferris/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/ferris/keymaps/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..dbab7f9820
--- /dev/null
+++ b/keyboards/ferris/keymaps/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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/ferris/keymaps/manna-harbour_miryoku/rules.mk b/keyboards/ferris/keymaps/manna-harbour_miryoku/rules.mk
new file mode 100644
index 0000000000..ef40279cbc
--- /dev/null
+++ b/keyboards/ferris/keymaps/manna-harbour_miryoku/rules.mk
@@ -0,0 +1,4 @@
+# Copyright 2021 Manna Harbour
+# https://github.com/manna-harbour/miryoku
+
+MIRYOKU_KLUDGE_THUMBCOMBOS=yes
diff --git a/keyboards/ferris/keymaps/pierrec83/keymap.json b/keyboards/ferris/keymaps/pierrec83/keymap.json
index f42259be90..2cbc47d912 100644
--- a/keyboards/ferris/keymaps/pierrec83/keymap.json
+++ b/keyboards/ferris/keymaps/pierrec83/keymap.json
@@ -108,7 +108,7 @@
"DF(1)" , "KC_LGUI" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
- "DF(0)" , "KC_TRNS" , "RALT_T(KC_COMM)", "RCTL_T(KC_DOT)" , "RESET",
+ "DF(0)" , "KC_TRNS" , "RALT_T(KC_COMM)", "RCTL_T(KC_DOT)" , "QK_BOOT",
"KC_TRNS" , "KC_TAB",
"KC_NO" , "KC_TRNS"
diff --git a/keyboards/ferris/sweep/config.h b/keyboards/ferris/sweep/config.h
index 4d4d7d309f..1708ec6e2b 100644
--- a/keyboards/ferris/sweep/config.h
+++ b/keyboards/ferris/sweep/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2018-2020
+/* Copyright 2018-2020
ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
David Philip Barr <@davidphilipbarr>
Pierre Chevalier <pierrechevalier83@gmail.com>
@@ -21,28 +21,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC2AB
-#define PRODUCT_ID 0x3939
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DPB
-#define PRODUCT Ferris sweep
-
/* key matrix size */
#define MATRIX_ROWS 8
#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)
- * NO_DIODE = switches are directly connected to AVR pins
- *
-*/
#define DIRECT_PINS { \
{ E6, F7, F6, F5, F4 }, \
{ B1, B3, B2, B6, D3 }, \
@@ -57,10 +39,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B5, B4, NO_PIN, NO_PIN, NO_PIN } \
}
-
-
-#define UNUSED_PINS
-
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/ferris/sweep/info.json b/keyboards/ferris/sweep/info.json
new file mode 100644
index 0000000000..fc53028c34
--- /dev/null
+++ b/keyboards/ferris/sweep/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Ferris sweep",
+ "manufacturer": "DPB",
+ "usb": {
+ "vid": "0xC2AB",
+ "pid": "0x3939",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/ferris/sweep/readme.md b/keyboards/ferris/sweep/readme.md
index 332ab2c790..b6dd436a8b 100644
--- a/keyboards/ferris/sweep/readme.md
+++ b/keyboards/ferris/sweep/readme.md
@@ -31,13 +31,20 @@ For Elite-C or compatible controllers using `DFU` bootloader, add the line `BOOT
[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
+### RP2040 Controllers
+
+Pro Micro RP2040 controllers are supported with [QMK Converters](https://docs.qmk.fm/#/feature_converters). The make command example with handedness setting for Adafruit's KB2040 are:
+
+ make CONVERT_TO=kb2040 ferris/sweep:default:uf2-split-left
+ make CONVERT_TO=kb2040 ferris/sweep:default:uf2-split-right
+
## Bootloader
Enter the bootloader in 3 ways:
* **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.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is configured.
## Swapped Pins
diff --git a/keyboards/ffkeebs/puca/config.h b/keyboards/ffkeebs/puca/config.h
index e8e57c72e8..779c0fc477 100644
--- a/keyboards/ffkeebs/puca/config.h
+++ b/keyboards/ffkeebs/puca/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4646 // FF
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER FootFingers
-#define PRODUCT Puca
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 5
// 0 , 1 , 2 , 3 , 4 , 5
diff --git a/keyboards/ffkeebs/puca/info.json b/keyboards/ffkeebs/puca/info.json
index 204f0ca497..14f71ffee7 100644
--- a/keyboards/ffkeebs/puca/info.json
+++ b/keyboards/ffkeebs/puca/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Puca",
+ "manufacturer": "FootFingers",
"url": "https://ffkeebs.com/collections/puca/",
"maintainer": "Sleepdealr",
+ "usb": {
+ "vid": "0x4646",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
diff --git a/keyboards/ffkeebs/puca/readme.md b/keyboards/ffkeebs/puca/readme.md
index ca4e0f93f9..bfd814e2b6 100644
--- a/keyboards/ffkeebs/puca/readme.md
+++ b/keyboards/ffkeebs/puca/readme.md
@@ -10,7 +10,7 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the encoder)
* **Physical reset button**: Briefly press the button on the front of the PCB - some may have pads you must short instead
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/ffkeebs/siris/config.h b/keyboards/ffkeebs/siris/config.h
index 6b7733b361..f57d79b30d 100644
--- a/keyboards/ffkeebs/siris/config.h
+++ b/keyboards/ffkeebs/siris/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xE96C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT Siris
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
diff --git a/keyboards/ffkeebs/siris/info.json b/keyboards/ffkeebs/siris/info.json
index fe5161779f..fc4d7f7f22 100644
--- a/keyboards/ffkeebs/siris/info.json
+++ b/keyboards/ffkeebs/siris/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Siris",
+ "manufacturer": "Swiftrax",
"url": "https: //github.com/swiftrax",
"maintainer": "Swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE96C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/fjlabs/7vhotswap/config.h b/keyboards/fjlabs/7vhotswap/config.h
index 66ee195a58..1bb8d77a22 100644
--- a/keyboards/fjlabs/7vhotswap/config.h
+++ b/keyboards/fjlabs/7vhotswap/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 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
diff --git a/keyboards/fjlabs/7vhotswap/info.json b/keyboards/fjlabs/7vhotswap/info.json
index 07404031e3..b577a68bd2 100644
--- a/keyboards/fjlabs/7vhotswap/info.json
+++ b/keyboards/fjlabs/7vhotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "7V Hotswap PCBs",
+ "keyboard_name": "7V Hotswap",
+ "manufacturer": "FJLaboratories",
"url": "http://www.fjlaboratories.com/",
"maintainer": "mrnoisytiger",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x0014",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_75_all": {
"layout": [
diff --git a/keyboards/fjlabs/ad65/config.h b/keyboards/fjlabs/ad65/config.h
index 3bbf7a01d1..de19592464 100644
--- a/keyboards/fjlabs/ad65/config.h
+++ b/keyboards/fjlabs/ad65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLaboratories
-#define PRODUCT_ID 0x0010 // AD65
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER Absolute Designs
-#define PRODUCT AD65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { 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
diff --git a/keyboards/fjlabs/ad65/info.json b/keyboards/fjlabs/ad65/info.json
index 36ed900b6c..81a65cc262 100644
--- a/keyboards/fjlabs/ad65/info.json
+++ b/keyboards/fjlabs/ad65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Absolute Designs 65",
+ "keyboard_name": "AD65",
+ "manufacturer": "Absolute Designs",
"url": "https://arnoldh93.wixsite.com/website",
"maintainer": "FJLaboratories",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x0010",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/fjlabs/avalon/avalon.c b/keyboards/fjlabs/avalon/avalon.c
new file mode 100644
index 0000000000..9f6b63e4c8
--- /dev/null
+++ b/keyboards/fjlabs/avalon/avalon.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2022 <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 "avalon.h"
diff --git a/keyboards/fjlabs/avalon/avalon.h b/keyboards/fjlabs/avalon/avalon.h
new file mode 100644
index 0000000000..c24b0e53ce
--- /dev/null
+++ b/keyboards/fjlabs/avalon/avalon.h
@@ -0,0 +1,32 @@
+/*
+Copyright 2022 <hello@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"
+
+/* Phantom Keymap Definitions */
+#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, K1E, K1F, \
+ 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, \
+ K40, K41, K42, K43, K47, K4A, K4B, K4D, K4E, 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, K1E, K1F }, \
+ { 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, KC_NO }, \
+ { K40, K41, K42, K43, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F } \
+}
diff --git a/keyboards/fjlabs/avalon/config.h b/keyboards/fjlabs/avalon/config.h
new file mode 100644
index 0000000000..2d2c53c14e
--- /dev/null
+++ b/keyboards/fjlabs/avalon/config.h
@@ -0,0 +1,76 @@
+/*
+Copyright 2022 <hello@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"
+
+/* 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)
+ *Ã¥
+*/
+
+// Checked with Eagle Schematic
+#define MATRIX_ROW_PINS { F4, F1, F7, F6, F5 }
+#define MATRIX_COL_PINS { B0, 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 Indicator LED's */
+#define LED_CAPS_LOCK_PIN C7
+
+/* Define RGB Underglow */
+#define RGB_DI_PIN D6
+#define RGBLED_NUM 6
+#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 RGBLIGHT_DEFAULT_SPD 144
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL
+
diff --git a/keyboards/fjlabs/avalon/info.json b/keyboards/fjlabs/avalon/info.json
new file mode 100644
index 0000000000..040db5f197
--- /dev/null
+++ b/keyboards/fjlabs/avalon/info.json
@@ -0,0 +1,94 @@
+{
+ "keyboard_name": "Avalon",
+ "manufacturer": "Trailblazer Keyboards",
+ "url": "https://fjlaboratories.com/",
+ "maintainer": "FJLaboratories",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x0015",
+ "device_version": "0.0.1"
+ },
+ "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": 15.25, "y": 0},
+ {"x": 16.5, "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": 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, "w": 1.5},
+ {"x": 16.5, "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},
+ {"x": 13, "y": 2},
+ {"x": 14, "y": 2, "w": 2.25},
+ {"x": 16.5, "y": 2},
+
+ {"x": 0, "y": 3},
+ {"x": 1.25, "y": 3, "w": 1.25},
+ {"x": 2.5, "y": 3},
+ {"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": 19.5, "y": 3},
+ {"x": 11.5, "y": 3},
+ {"x": 12.5, "y": 3},
+ {"x": 13.5, "y": 3, "w": 1.75},
+ {"x": 15.25, "y": 3},
+
+ {"x": 0, "y": 4},
+ {"x": 1.25, "y": 4, "w": 1.25},
+ {"x": 2.5, "y": 4, "w": 1.25},
+ {"x": 3.75, "y": 4, "w": 1.25},
+ {"x": 5, "y": 4, "w": 6.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/fjlabs/avalon/keymaps/default/keymap.c b/keyboards/fjlabs/avalon/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b5e2b84480
--- /dev/null
+++ b/keyboards/fjlabs/avalon/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/*
+Copyright 2022 <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,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_all(
+ KC_F1, 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_GRV,
+ 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_PGUP,
+ 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_PGDN,
+ KC_F4, 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_F5, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_all(
+ KC_TRNS, 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_BSPC, 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_PSCR, KC_SLCK, KC_PAUS, QK_BOOT, 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_TRNS, KC_PGDN,
+ KC_TRNS, KC_TRNS, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ )
+};
diff --git a/keyboards/fjlabs/avalon/keymaps/via/keymap.c b/keyboards/fjlabs/avalon/keymaps/via/keymap.c
new file mode 100644
index 0000000000..61aa6f155c
--- /dev/null
+++ b/keyboards/fjlabs/avalon/keymaps/via/keymap.c
@@ -0,0 +1,57 @@
+/*
+Copyright 2022 <hello@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_all(
+ KC_F1, 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_GRV,
+ 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_PGUP,
+ 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_DEL, KC_PGDN,
+ KC_F4, 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_F5, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_all(
+ KC_TRNS, 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_BSPC, 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_PSCR, KC_SLCK, KC_PAUS, QK_BOOT, 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_TRNS, KC_PGDN,
+ KC_TRNS, KC_TRNS, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+ [_LAYER2] = 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
+ ),
+
+ [_LAYER3] = 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/fjlabs/avalon/keymaps/via/rules.mk b/keyboards/fjlabs/avalon/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/fjlabs/avalon/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/fjlabs/avalon/readme.md b/keyboards/fjlabs/avalon/readme.md
new file mode 100644
index 0000000000..154f48ac6c
--- /dev/null
+++ b/keyboards/fjlabs/avalon/readme.md
@@ -0,0 +1,19 @@
+# Avalon PCB by FJLaboratories
+
+The following is the QMK Firmware for the Avalon PCB, both Solder and Hotswap, for Trailblazer Keyboards.
+* Keyboard Maintainer: FJLaboratories
+* Hardware Supported: Avalon
+
+Make example for this keyboard (after setting up your build environment):
+
+ make fjlabs/avalon: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 `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/fjlabs/avalon/rules.mk b/keyboards/fjlabs/avalon/rules.mk
new file mode 100644
index 0000000000..f54595dd64
--- /dev/null
+++ b/keyboards/fjlabs/avalon/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/bks65/config.h b/keyboards/fjlabs/bks65/config.h
index b1deccd4e1..d7da95f678 100644
--- a/keyboards/fjlabs/bks65/config.h
+++ b/keyboards/fjlabs/bks65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLabs
-#define PRODUCT_ID 0x1001 // BKS65
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER FJLabs
-#define PRODUCT BKS65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { 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
diff --git a/keyboards/fjlabs/bks65/info.json b/keyboards/fjlabs/bks65/info.json
index 8ffc39896f..ba1bd5d961 100644
--- a/keyboards/fjlabs/bks65/info.json
+++ b/keyboards/fjlabs/bks65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BKS65",
+ "manufacturer": "FJLabs",
"url": "https://www.bolsakeyboardsupply.com",
"maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x1001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/fjlabs/bks65solder/config.h b/keyboards/fjlabs/bks65solder/config.h
index 5dff84a0c1..5bb4800aa0 100644
--- a/keyboards/fjlabs/bks65solder/config.h
+++ b/keyboards/fjlabs/bks65solder/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLabs
-#define PRODUCT_ID 0x0099 // BKS65 Solder
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER FJLabs
-#define PRODUCT BKS65 Solder
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { 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
diff --git a/keyboards/fjlabs/bks65solder/info.json b/keyboards/fjlabs/bks65solder/info.json
index 327c50da20..7528d94dae 100644
--- a/keyboards/fjlabs/bks65solder/info.json
+++ b/keyboards/fjlabs/bks65solder/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BKS65 Solder",
+ "manufacturer": "FJLabs",
"url": "https://www.bolsakeyboardsupply.com",
"maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x0099",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/fjlabs/bolsa65/config.h b/keyboards/fjlabs/bolsa65/config.h
index bf389ee445..4c0b2bdfad 100644
--- a/keyboards/fjlabs/bolsa65/config.h
+++ b/keyboards/fjlabs/bolsa65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLabs
-#define PRODUCT_ID 0x0001 // Bolsa65
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER FJLabs
-#define PRODUCT bolsa65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { F1, F0, F6, F5, F4 }
#define MATRIX_COL_PINS { C7, B1, B2, B3, B7, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fjlabs/bolsa65/info.json b/keyboards/fjlabs/bolsa65/info.json
index a1baffc056..b9ce0d3507 100644
--- a/keyboards/fjlabs/bolsa65/info.json
+++ b/keyboards/fjlabs/bolsa65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Bolsa65",
+ "manufacturer": "FJLabs",
"url": "https://www.bolsakeyboardsupply.com",
"maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/fjlabs/kf87/config.h b/keyboards/fjlabs/kf87/config.h
index b133e375bb..0313d0247d 100644
--- a/keyboards/fjlabs/kf87/config.h
+++ b/keyboards/fjlabs/kf87/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLaboratories
-#define PRODUCT_ID 0x0006 // KF87
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER FJLaboratories
-#define PRODUCT KF87
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { B4, B5, B6, C0, E1, E0 }
#define MATRIX_COL_PINS { F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, D5, D6, D7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fjlabs/kf87/info.json b/keyboards/fjlabs/kf87/info.json
index 41542d166b..736bc2b991 100644
--- a/keyboards/fjlabs/kf87/info.json
+++ b/keyboards/fjlabs/kf87/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "KF87 Replacement PCB's",
+ "keyboard_name": "KF87",
+ "manufacturer": "FJLaboratories",
"url": "http://www.fjlaboratories.com/",
"maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x0006",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_all": {
"layout": [
diff --git a/keyboards/fjlabs/kyuu/config.h b/keyboards/fjlabs/kyuu/config.h
index 75f9643a79..7d83a83dc8 100644
--- a/keyboards/fjlabs/kyuu/config.h
+++ b/keyboards/fjlabs/kyuu/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLabs
-#define PRODUCT_ID 0x1012 // Kyuu Hotswap
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER FJLabs
-#define PRODUCT Kyuu Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { 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
diff --git a/keyboards/fjlabs/kyuu/info.json b/keyboards/fjlabs/kyuu/info.json
index 2bb1ebe843..c158157418 100644
--- a/keyboards/fjlabs/kyuu/info.json
+++ b/keyboards/fjlabs/kyuu/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "BKS65",
+ "keyboard_name": "Kyuu Hotswap",
+ "manufacturer": "FJLabs",
"url": "https://www.bolsakeyboardsupply.com",
"maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x1012",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker_badge": {
"layout": [
diff --git a/keyboards/fjlabs/ldk65/config.h b/keyboards/fjlabs/ldk65/config.h
index 15626c0700..5321f569fa 100644
--- a/keyboards/fjlabs/ldk65/config.h
+++ b/keyboards/fjlabs/ldk65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLabs
-#define PRODUCT_ID 0x0002 // LDK65
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER FJLabs
-#define PRODUCT LDK65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { 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
diff --git a/keyboards/fjlabs/ldk65/info.json b/keyboards/fjlabs/ldk65/info.json
index ae5a0a5924..562b7c5b6b 100644
--- a/keyboards/fjlabs/ldk65/info.json
+++ b/keyboards/fjlabs/ldk65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "LDK65",
+ "manufacturer": "FJLabs",
"url": "https://www.bolsakeyboardsupply.com",
"maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/fjlabs/midway60/config.h b/keyboards/fjlabs/midway60/config.h
index f70a932a51..d218cb7022 100644
--- a/keyboards/fjlabs/midway60/config.h
+++ b/keyboards/fjlabs/midway60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLabs
-#define PRODUCT_ID 0x1002 // Midway60
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER FJLabs
-#define PRODUCT Midway60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { F4, F1, F7, F6, F5 }
#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fjlabs/midway60/info.json b/keyboards/fjlabs/midway60/info.json
index 251c57dc8e..885b74cc5b 100644
--- a/keyboards/fjlabs/midway60/info.json
+++ b/keyboards/fjlabs/midway60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Midway60",
+ "manufacturer": "FJLabs",
"url": "https://www.bolsakeyboardsupply.com",
"maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x1002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/fjlabs/mk61rgbansi/config.h b/keyboards/fjlabs/mk61rgbansi/config.h
index fdc8571344..02b2a741d4 100644
--- a/keyboards/fjlabs/mk61rgbansi/config.h
+++ b/keyboards/fjlabs/mk61rgbansi/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLabs
-#define PRODUCT_ID 0x1011 // mk61-rgb-ansi
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER Mechanical Keyboards LLC
-#define PRODUCT MK61-RGB-ANSI
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, B3, B2, B1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fjlabs/mk61rgbansi/info.json b/keyboards/fjlabs/mk61rgbansi/info.json
index 84cc8a46ae..67a8ae8860 100644
--- a/keyboards/fjlabs/mk61rgbansi/info.json
+++ b/keyboards/fjlabs/mk61rgbansi/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MK61-RGB-ANSI",
+ "manufacturer": "Mechanical Keyboards LLC",
"url": "https://www.fjlaboratories.com/",
"maintainer": "Mechanical Keyboards, LLC",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x1011",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/fjlabs/peaker/config.h b/keyboards/fjlabs/peaker/config.h
new file mode 100644
index 0000000000..c7d19f0c6c
--- /dev/null
+++ b/keyboards/fjlabs/peaker/config.h
@@ -0,0 +1,93 @@
+/*
+Copyright 2022 <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/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#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 { B5, B6, C0, E1, E0 }
+#define MATRIX_COL_PINS { F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, D5, D6, D7 }
+#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 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
diff --git a/keyboards/fjlabs/peaker/info.json b/keyboards/fjlabs/peaker/info.json
new file mode 100644
index 0000000000..92e622725c
--- /dev/null
+++ b/keyboards/fjlabs/peaker/info.json
@@ -0,0 +1,94 @@
+{
+ "keyboard_name": "Peaker",
+ "manufacturer": "FJLaboratories",
+ "url": "http://www.lucidkb.com",
+ "maintainer": "Lucid",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x0020",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_tkl_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":"Back Space", "x":13, "y":0},
+ {"label":"Back Space", "x":14, "y":0},
+ {"label":"Insert", "x":15.25, "y":0},
+ {"label":"Home", "x":16.25, "y":0},
+ {"label":"PgUp", "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":"Delete", "x":15.25, "y":1},
+ {"label":"End", "x":16.25, "y":1},
+ {"label":"PgDn", "x":17.25, "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":"SQ", "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":"\u2191", "x":16.25, "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":"Menu", "x":12.5, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":4, "w":1.25},
+ {"label":"\u2190", "x":15.25, "y":4},
+ {"label":"\u2193", "x":16.25, "y":4},
+ {"label":"\u2192", "x":17.25, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/fjlabs/peaker/keymaps/default/keymap.c b/keyboards/fjlabs/peaker/keymaps/default/keymap.c
new file mode 100644
index 0000000000..ab46cd89db
--- /dev/null
+++ b/keyboards/fjlabs/peaker/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/*
+Copyright 2022 <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,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_tkl_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_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_BSPC, 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_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_tkl_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/fjlabs/peaker/keymaps/via/keymap.c b/keyboards/fjlabs/peaker/keymaps/via/keymap.c
new file mode 100644
index 0000000000..9e8ece8ff9
--- /dev/null
+++ b/keyboards/fjlabs/peaker/keymaps/via/keymap.c
@@ -0,0 +1,57 @@
+/*
+Copyright 2022 <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_tkl_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_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_BSPC, 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_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_tkl_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
+ ),
+
+ [_LAYER1] = LAYOUT_tkl_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
+ ),
+
+ [_LAYER1] = LAYOUT_tkl_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
+ )
+}; \ No newline at end of file
diff --git a/keyboards/fjlabs/peaker/keymaps/via/rules.mk b/keyboards/fjlabs/peaker/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/fjlabs/peaker/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/fjlabs/peaker/peaker.c b/keyboards/fjlabs/peaker/peaker.c
new file mode 100644
index 0000000000..2c8830a731
--- /dev/null
+++ b/keyboards/fjlabs/peaker/peaker.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2022 <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 "peaker.h"
diff --git a/keyboards/fjlabs/peaker/peaker.h b/keyboards/fjlabs/peaker/peaker.h
new file mode 100644
index 0000000000..a1f53a87d6
--- /dev/null
+++ b/keyboards/fjlabs/peaker/peaker.h
@@ -0,0 +1,32 @@
+/*
+Copyright 2022 <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/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/* === All used matrix spots populated === */
+#define LAYOUT_tkl_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, K1F, K1G, \
+ 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, K3F, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4D, K4E, K4F, 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, K21, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, KC_NO, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, KC_NO, K3F, KC_NO }, \
+ { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, KC_NO, K4D, K4E, K4F, K4G } \
+}
diff --git a/keyboards/fjlabs/peaker/readme.md b/keyboards/fjlabs/peaker/readme.md
new file mode 100644
index 0000000000..ca85b99629
--- /dev/null
+++ b/keyboards/fjlabs/peaker/readme.md
@@ -0,0 +1,13 @@
+# Peaker Hotswap PCB by FJLaboratories
+
+The following is the QMK Firmware for the Peaker by [FJLaboratories](http://www.fjlaboratories.com).
+* Keyboard Maintainer: FJLaboratories
+* Hardware Supported: Peaker
+
+Make example for this keyboard (after setting up your build environment):
+
+ make fjlabs/peaker: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).
+
+You can enter the bootloader by pressing the Reset button on the back of the PCB. \ No newline at end of file
diff --git a/keyboards/fjlabs/peaker/rules.mk b/keyboards/fjlabs/peaker/rules.mk
new file mode 100644
index 0000000000..aed2d80b8b
--- /dev/null
+++ b/keyboards/fjlabs/peaker/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = at90usb646
+
+# 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 = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/polaris/config.h b/keyboards/fjlabs/polaris/config.h
index 6efae34205..dc6fce6c84 100644
--- a/keyboards/fjlabs/polaris/config.h
+++ b/keyboards/fjlabs/polaris/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLaboratories
-#define PRODUCT_ID 0x9001 // Polaris HS and Solder
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER FJLaboratories
-#define PRODUCT Polaris
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { F4, F1, F7, F6, F5 }
#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fjlabs/polaris/info.json b/keyboards/fjlabs/polaris/info.json
index f2b1213e85..011776dc40 100644
--- a/keyboards/fjlabs/polaris/info.json
+++ b/keyboards/fjlabs/polaris/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Polaris Hotswap and Solder",
+ "keyboard_name": "Polaris",
+ "manufacturer": "FJLaboratories",
"url": "http://www.fjlaboratories.com/projects/",
"maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x9001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/fjlabs/ready100/config.h b/keyboards/fjlabs/ready100/config.h
index 31adbd7f4b..9258d4ddba 100644
--- a/keyboards/fjlabs/ready100/config.h
+++ b/keyboards/fjlabs/ready100/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLabs
-#define PRODUCT_ID 0x1003 // Ready100
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER FJLabs
-#define PRODUCT Ready100
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, B3, B2, B1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fjlabs/ready100/info.json b/keyboards/fjlabs/ready100/info.json
index 2bc20ad2ff..4f1762470d 100644
--- a/keyboards/fjlabs/ready100/info.json
+++ b/keyboards/fjlabs/ready100/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ready100",
+ "manufacturer": "FJLabs",
"url": "https://www.ready100.com",
"maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x1003",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_64key": "LAYOUT_64_ansi"
},
diff --git a/keyboards/fjlabs/sinanju/config.h b/keyboards/fjlabs/sinanju/config.h
new file mode 100644
index 0000000000..751dd24383
--- /dev/null
+++ b/keyboards/fjlabs/sinanju/config.h
@@ -0,0 +1,95 @@
+/*
+Copyright 2022 <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/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* 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)
+ *
+*/
+
+// Checked with Eagle Schematic
+#define MATRIX_ROW_PINS { F4, F1, F7, F6, F5 }
+#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6 }
+
+/* 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 Indicator LED's */
+#define LED_CAPS_LOCK_PIN C7
+
+/* 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
diff --git a/keyboards/fjlabs/sinanju/info.json b/keyboards/fjlabs/sinanju/info.json
new file mode 100644
index 0000000000..c458b9fd79
--- /dev/null
+++ b/keyboards/fjlabs/sinanju/info.json
@@ -0,0 +1,147 @@
+{
+ "keyboard_name": "Sinanju",
+ "manufacturer": "FJLabs",
+ "url": "https://www.fjlaboratories.com",
+ "maintainer": "mrnoisytiger",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x1022",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_60_ansi_wkl": {
+ "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":"=+", "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":"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":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_60_ansi_wkl_split_bs_rshift": {
+ "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":"=+", "x":12, "y":0},
+ {"label":"Backspace", "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":"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":"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":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/fjlabs/sinanju/keymaps/default/keymap.c b/keyboards/fjlabs/sinanju/keymaps/default/keymap.c
new file mode 100644
index 0000000000..996b5d48d5
--- /dev/null
+++ b/keyboards/fjlabs/sinanju/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/*
+Copyright 2022 <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,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_60_ansi_wkl_split_bs_rshift(
+ 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_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_LALT, KC_SPC, KC_RALT, KC_RCTL
+ ),
+
+ [_LAYER1] = LAYOUT_60_ansi_wkl_split_bs_rshift(
+ 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,
+ 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, QK_BOOT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/fjlabs/sinanju/keymaps/default_ansi_wkl/keymap.c b/keyboards/fjlabs/sinanju/keymaps/default_ansi_wkl/keymap.c
new file mode 100644
index 0000000000..192bda366f
--- /dev/null
+++ b/keyboards/fjlabs/sinanju/keymaps/default_ansi_wkl/keymap.c
@@ -0,0 +1,39 @@
+/*
+Copyright 2022 <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,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_60_ansi_wkl(
+ 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_LALT, KC_SPC, MO(1), KC_RCTL
+ ),
+
+ [_LAYER1] = LAYOUT_60_ansi_wkl(
+ 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, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/fjlabs/sinanju/keymaps/via/keymap.c b/keyboards/fjlabs/sinanju/keymaps/via/keymap.c
new file mode 100644
index 0000000000..2fcaab747e
--- /dev/null
+++ b/keyboards/fjlabs/sinanju/keymaps/via/keymap.c
@@ -0,0 +1,58 @@
+/*
+Copyright 2022 <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_60_ansi_wkl_split_bs_rshift(
+ 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_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_LALT, KC_SPC, KC_RALT, KC_RCTL
+ ),
+
+ [_LAYER1] = LAYOUT_60_ansi_wkl_split_bs_rshift(
+ 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,
+ 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, QK_BOOT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_LAYER2] = LAYOUT_60_ansi_wkl_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, NK_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
+ ),
+
+ [_LAYER3] = LAYOUT_60_ansi_wkl_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, NK_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
+ )
+
+};
diff --git a/keyboards/fjlabs/sinanju/keymaps/via/rules.mk b/keyboards/fjlabs/sinanju/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/fjlabs/sinanju/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/fjlabs/sinanju/readme.md b/keyboards/fjlabs/sinanju/readme.md
new file mode 100644
index 0000000000..9d3a0f4330
--- /dev/null
+++ b/keyboards/fjlabs/sinanju/readme.md
@@ -0,0 +1,15 @@
+# Sinanju
+
+The following is the QMK Firmware for the Windz Sinanju PCB.
+
+
+* Keyboard Maintainer: FJLabs
+* Hardware Supported: Sinanju
+
+Make example for this keyboard (after setting up your build environment):
+
+ make fjlabs/sinanju: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 can be entered by pressing the reset button near the main microcontroller while the board is plugged in. Alternatively, it may be entered by holding the top-left-most switch and plugging in the PCB while held. \ No newline at end of file
diff --git a/keyboards/fjlabs/sinanju/rules.mk b/keyboards/fjlabs/sinanju/rules.mk
new file mode 100644
index 0000000000..67f00abb1e
--- /dev/null
+++ b/keyboards/fjlabs/sinanju/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 = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/sinanju/sinanju.c b/keyboards/fjlabs/sinanju/sinanju.c
new file mode 100644
index 0000000000..2c84310ea5
--- /dev/null
+++ b/keyboards/fjlabs/sinanju/sinanju.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2022 <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 "sinanju.h"
diff --git a/keyboards/fjlabs/sinanju/sinanju.h b/keyboards/fjlabs/sinanju/sinanju.h
new file mode 100644
index 0000000000..0e4c85ea0a
--- /dev/null
+++ b/keyboards/fjlabs/sinanju/sinanju.h
@@ -0,0 +1,59 @@
+/*
+Copyright 2022 <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/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───────â”
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2D │ │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 │2C │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌──────────â”
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ │3C │ 2.75u RShift
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬────┴┬───┬─┴───┤ └──────────┘
+ * │40 │ │42 │47 │4B │ │4D │ WKL
+ * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘
+ */
+
+#define LAYOUT_60_ansi_wkl( \
+ 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, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+ K40, K42, K47, 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, KC_NO }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, KC_NO }, \
+ { K40, KC_NO, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, KC_NO, K4B, KC_NO, K4D } \
+}
+
+#define LAYOUT_60_ansi_wkl_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, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K42, K47, 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, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { K40, KC_NO, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, KC_NO, K4B, KC_NO, K4D } \
+}
diff --git a/keyboards/fjlabs/sinanjuwk/config.h b/keyboards/fjlabs/sinanjuwk/config.h
new file mode 100644
index 0000000000..01d81a2f3d
--- /dev/null
+++ b/keyboards/fjlabs/sinanjuwk/config.h
@@ -0,0 +1,96 @@
+/*
+Copyright 2022 <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/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* 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)
+ *
+*/
+
+// Checked with Eagle Schematic
+#define MATRIX_ROW_PINS { F4, F1, F7, F6, F5 }
+#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6 }
+#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 Indicator LED's */
+#define LED_CAPS_LOCK_PIN C7
+
+/* 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
diff --git a/keyboards/fjlabs/sinanjuwk/info.json b/keyboards/fjlabs/sinanjuwk/info.json
new file mode 100644
index 0000000000..3f1d7b4463
--- /dev/null
+++ b/keyboards/fjlabs/sinanjuwk/info.json
@@ -0,0 +1,84 @@
+{
+ "keyboard_name": "Sinanju WK",
+ "manufacturer": "FJLabs",
+ "url": "https://www.fjlaboratories.com",
+ "maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x1023",
+ "device_version": "0.0.1"
+ },
+ "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}
+ ]
+ }
+ }
+}
diff --git a/keyboards/fjlabs/sinanjuwk/keymaps/default/keymap.c b/keyboards/fjlabs/sinanjuwk/keymaps/default/keymap.c
new file mode 100644
index 0000000000..1dd28d8d13
--- /dev/null
+++ b/keyboards/fjlabs/sinanjuwk/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/*
+Copyright 2022 <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,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = 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_TAB, KC_Q, KC_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_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_LWIN, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RWIN, KC_RCTL
+ ),
+
+ [_LAYER1] = LAYOUT_all(
+ 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, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/fjlabs/sinanjuwk/keymaps/via/keymap.c b/keyboards/fjlabs/sinanjuwk/keymaps/via/keymap.c
new file mode 100644
index 0000000000..dc1fd0d4f5
--- /dev/null
+++ b/keyboards/fjlabs/sinanjuwk/keymaps/via/keymap.c
@@ -0,0 +1,58 @@
+/*
+Copyright 2022 <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_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_TAB, KC_Q, KC_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_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_LWIN, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RWIN, KC_RCTL
+ ),
+
+ [_LAYER1] = LAYOUT_all(
+ 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, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_LAYER2] = 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, NK_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
+ ),
+
+ [_LAYER3] = 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, NK_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
+ )
+
+};
diff --git a/keyboards/fjlabs/sinanjuwk/keymaps/via/rules.mk b/keyboards/fjlabs/sinanjuwk/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/fjlabs/sinanjuwk/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/fjlabs/sinanjuwk/readme.md b/keyboards/fjlabs/sinanjuwk/readme.md
new file mode 100644
index 0000000000..126fc73ec8
--- /dev/null
+++ b/keyboards/fjlabs/sinanjuwk/readme.md
@@ -0,0 +1,17 @@
+# Sinanju WK
+
+The following is the QMK Firmware for the Windz Sinanju WK PCB.
+
+
+* Keyboard Maintainer: FJLabs
+* Hardware Supported: Sinanju WK
+
+Make example for this keyboard (after setting up your build environment):
+
+ make fjlabs/sinanjuwk: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
+
+Bootloader can be entered by pressing the reset button near the main microcontroller while the board is plugged in. Alternatively, it may be entered by holding the top-left-most switch and plugging in the PCB while held. \ No newline at end of file
diff --git a/keyboards/fjlabs/sinanjuwk/rules.mk b/keyboards/fjlabs/sinanjuwk/rules.mk
new file mode 100644
index 0000000000..67f00abb1e
--- /dev/null
+++ b/keyboards/fjlabs/sinanjuwk/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 = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/sinanjuwk/sinanjuwk.c b/keyboards/fjlabs/sinanjuwk/sinanjuwk.c
new file mode 100644
index 0000000000..e6af5203ad
--- /dev/null
+++ b/keyboards/fjlabs/sinanjuwk/sinanjuwk.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2022 <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 "sinanjuwk.h"
diff --git a/keyboards/fjlabs/sinanjuwk/sinanjuwk.h b/keyboards/fjlabs/sinanjuwk/sinanjuwk.h
new file mode 100644
index 0000000000..045e34621d
--- /dev/null
+++ b/keyboards/fjlabs/sinanjuwk/sinanjuwk.h
@@ -0,0 +1,32 @@
+/*
+Copyright 2022 <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/>.
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/* Midway60 Keymap Definitions */
+#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, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K41, K42, 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, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, K4C, K4D } \
+}
diff --git a/keyboards/fjlabs/solanis/config.h b/keyboards/fjlabs/solanis/config.h
index 50649889fc..05c528efb6 100644
--- a/keyboards/fjlabs/solanis/config.h
+++ b/keyboards/fjlabs/solanis/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLaboratories
-#define PRODUCT_ID 0x0017 // Solanis
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER FJLaboratories
-#define PRODUCT Solanis
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { B4, B5, B6, C0, E1, E0 }
#define MATRIX_COL_PINS { F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, D5, D6, D7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fjlabs/solanis/info.json b/keyboards/fjlabs/solanis/info.json
index d05857e0a8..6fb66c6574 100644
--- a/keyboards/fjlabs/solanis/info.json
+++ b/keyboards/fjlabs/solanis/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Solanis",
+ "manufacturer": "FJLaboratories",
"url": "http://www.fjlaboratories.com/",
"maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x0017",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/fjlabs/solanis/keymaps/default/keymap.c b/keyboards/fjlabs/solanis/keymaps/default/keymap.c
index 62c7d01b67..418aa87150 100644
--- a/keyboards/fjlabs/solanis/keymaps/default/keymap.c
+++ b/keyboards/fjlabs/solanis/keymaps/default/keymap.c
@@ -22,20 +22,20 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = 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_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_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_RSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, 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_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_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_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_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LAYER1] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
};
diff --git a/keyboards/fjlabs/solanis/keymaps/via/keymap.c b/keyboards/fjlabs/solanis/keymaps/via/keymap.c
index 6bff23728f..4e17594aab 100644
--- a/keyboards/fjlabs/solanis/keymaps/via/keymap.c
+++ b/keyboards/fjlabs/solanis/keymaps/via/keymap.c
@@ -24,38 +24,38 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER0] = 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_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_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_RSFT, KC_UP,
- KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, 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_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_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_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_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LAYER1] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
[_LAYER2] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_LAYER3] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
-}; \ No newline at end of file
+};
diff --git a/keyboards/fjlabs/solanis/solanis.h b/keyboards/fjlabs/solanis/solanis.h
index 507f087001..697a91ef68 100644
--- a/keyboards/fjlabs/solanis/solanis.h
+++ b/keyboards/fjlabs/solanis/solanis.h
@@ -16,14 +16,43 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quantum.h"
+/*
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”
+ * │00 ││01 │02 │03 │04 ││05 │06 │07 │08 ││09 │0A │0B │0C ││0D │ F13 Row
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │00 │ │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 │3E │ │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 │3D │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┠┌──────────â”
+ * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4C │4D │ │4F │ │4C │ 2.75u RShift
+ * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───┠└──────────┘
+ * │50 │51 │52 │54 │55 │58 │59 │5A │5B │5D │ │5E │5F │5G │
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ * ┌────┬────┬────┬────────────────────────┬────┬────┬────┬────â”
+ * │50 │51 │52 │55 │59 │5A │5B │5D │ Standard Bottom Row
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────â”
+ * │50 │51 │52 │55 │5A │5B │5D │ Tsangan/WKL
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ * ┌─────┬───┬─────┬───────────┬───┬───────────┬─────┬───┬─────â”
+ * │50 │51 │52 │54 │55 │58 │5A │5B │5D │ Tsangan/WKL with Split Spacebar
+ * └─────┴───┴─────┴───────────┴───┴───────────┴─────┴───┴─────┘
+ */
+
/* === All used matrix spots populated === */
#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, 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, K3E, \
- K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4C, K4D, K4F, \
- K50, K51, K52, K54, K55, K58, K59, K5A, K5B, 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, K3E, 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, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4C, K4D, K4F, \
+ K50, K51, K52, K54, K55, K58, K59, K5A, K5B, 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 }, \
diff --git a/keyboards/fjlabs/swordfish/config.h b/keyboards/fjlabs/swordfish/config.h
new file mode 100644
index 0000000000..0a0f66f275
--- /dev/null
+++ b/keyboards/fjlabs/swordfish/config.h
@@ -0,0 +1,108 @@
+/*
+Copyright 2022 <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"
+
+/* 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)
+ *Ã¥
+*/
+
+// Checked with Eagle Schematic
+#define MATRIX_ROW_PINS { B0, B1, C7, C6, B6 }
+#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B2, B3, B7, B5, B4, D7, D6, D4, D5 }
+
+/* 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 D3
+#define RGBLED_NUM 1
+#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
diff --git a/keyboards/fjlabs/swordfish/info.json b/keyboards/fjlabs/swordfish/info.json
new file mode 100644
index 0000000000..bdb2e3a2c3
--- /dev/null
+++ b/keyboards/fjlabs/swordfish/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Swordfish",
+ "manufacturer": "FJLaboratories",
+ "url": "http://www.fjlaboratories.com/",
+ "maintainer": "mrnoisytiger",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x0024",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_alice_all": {
+ "layout": [{"x":18.33, "y":0.142}, {"x":2.37, "y":0.27}, {"x":3.37, "y":0.27}, {"x":14.13, "y":0.27}, {"x":15.13, "y":0.27}, {"x":17.13, "y":0.27}, {"x":16.13, "y":0.27}, {"x":18.45, "y":1.142}, {"x":2.24, "y":1.28, "w":1.5}, {"x":3.74, "y":1.28}, {"x":13.75, "y":1.28}, {"x":14.75, "y":1.28}, {"x":15.75, "y":1.28}, {"x":16.75, "y":1.28, "w":1.5}, {"x":18.61, "y":2.142}, {"x":2.1, "y":2.28, "w":1.75}, {"x":3.85, "y":2.28}, {"x":14.16, "y":2.28}, {"x":15.16, "y":2.28}, {"x":16.16, "y":2.28, "w":2.25}, {"x":1.95, "y":3.28, "w":2.25}, {"x":4.2, "y":3.28}, {"x":13.81, "y":3.28}, {"x":14.81, "y":3.28}, {"x":15.81, "y":3.28, "w":1.75}, {"x":17.77, "y":3.48}, {"x":1.95, "y":4.28, "w":1.25}, {"x":3.2, "y":4.28, "w":1.25}, {"x":14.06, "y":4.28, "w":1.25}, {"x":15.31, "y":4.28, "w":1.25}, {"x":16.77, "y":4.475}, {"x":17.77, "y":4.475}, {"x":18.77, "y":4.475}, {"x":0, "y":5.28}, {"x":1, "y":5.28}, {"x":2, "y":5.28}, {"x":3, "y":5.28}, {"x":4, "y":5.28}, {"x":0.5, "y":6.28}, {"x":1.5, "y":6.28}, {"x":2.5, "y":6.28}, {"x":3.5, "y":6.28}, {"x":0.75, "y":7.28}, {"x":1.75, "y":7.28}, {"x":2.75, "y":7.28}, {"x":3.75, "y":7.28}, {"x":1.25, "y":8.28}, {"x":2.25, "y":8.28}, {"x":3.25, "y":8.28}, {"x":4.25, "y":8.28}, {"x":1.25, "y":9.28, "w":1.25}, {"x":2.5, "y":9.28, "w":2.75}, {"x":-4.5, "y":10.08}, {"x":-3.5, "y":10.08}, {"x":-2.5, "y":10.08}, {"x":-1.5, "y":10.08}, {"x":-5.0, "y":11.08}, {"x":-4, "y":11.08}, {"x":-3.0, "y":11.08}, {"x":-2, "y":11.08}, {"x":-4.75, "y":12.08}, {"x":-3.75, "y":12.08}, {"x":-2.75, "y":12.08}, {"x":-1.75, "y":12.08}, {"x":-5.25, "y":13.08}, {"x":-4.25, "y":13.08}, {"x":-3.25, "y":13.08}, {"x":-2.25, "y":13.08}, {"x":-5.25, "y":14.08, "w":2.25}, {"x":-3.0, "y":14.08, "w":1.25}]
+ }
+ }
+}
diff --git a/keyboards/fjlabs/swordfish/keymaps/default/keymap.c b/keyboards/fjlabs/swordfish/keymaps/default/keymap.c
new file mode 100644
index 0000000000..ecce4f1a7b
--- /dev/null
+++ b/keyboards/fjlabs/swordfish/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/*
+Copyright 2022 <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_alice_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_MPLY,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_5, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_VOLU,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_T, 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_G, 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_B, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_alice_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_MOD, RGB_RMOD, RGB_TOG,
+ 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, RGB_VAI,
+ 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, 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_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
+ )
+};
diff --git a/keyboards/fjlabs/swordfish/keymaps/via/keymap.c b/keyboards/fjlabs/swordfish/keymaps/via/keymap.c
new file mode 100644
index 0000000000..50ade4767e
--- /dev/null
+++ b/keyboards/fjlabs/swordfish/keymaps/via/keymap.c
@@ -0,0 +1,57 @@
+/*
+Copyright 2022 <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_alice_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV, KC_MPLY,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_5, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_VOLU,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_T, 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_G, 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_B, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_alice_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_MOD, RGB_RMOD, RGB_TOG,
+ 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, RGB_VAI,
+ 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, 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_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
+ ),
+
+ [_LAYER2] = LAYOUT_alice_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
+ ),
+
+ [_LAYER3] = LAYOUT_alice_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/fjlabs/swordfish/keymaps/via/rules.mk b/keyboards/fjlabs/swordfish/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/fjlabs/swordfish/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/fjlabs/swordfish/readme.md b/keyboards/fjlabs/swordfish/readme.md
new file mode 100644
index 0000000000..0f6f847285
--- /dev/null
+++ b/keyboards/fjlabs/swordfish/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/swordfish/rules.mk b/keyboards/fjlabs/swordfish/rules.mk
new file mode 100644
index 0000000000..82e9a04fa5
--- /dev/null
+++ b/keyboards/fjlabs/swordfish/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/swordfish/swordfish.c b/keyboards/fjlabs/swordfish/swordfish.c
new file mode 100644
index 0000000000..a8689fefe8
--- /dev/null
+++ b/keyboards/fjlabs/swordfish/swordfish.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2022 <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 "swordfish.h"
diff --git a/keyboards/fjlabs/swordfish/swordfish.h b/keyboards/fjlabs/swordfish/swordfish.h
new file mode 100644
index 0000000000..0b2e8acc62
--- /dev/null
+++ b/keyboards/fjlabs/swordfish/swordfish.h
@@ -0,0 +1,32 @@
+/*
+Copyright 2022 <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_alice_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, \
+ 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, \
+ K50, K51, K52, K54, K55, K57, K58, 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 }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO }, \
+ { K50, K51, K52, KC_NO, K54, K55, KC_NO, K57, K58, KC_NO, K5A, K5B, K5C, K5D, K5E } \
+}
diff --git a/keyboards/fjlabs/tf60ansi/config.h b/keyboards/fjlabs/tf60ansi/config.h
index 1b19a0e2ec..02b2a741d4 100644
--- a/keyboards/fjlabs/tf60ansi/config.h
+++ b/keyboards/fjlabs/tf60ansi/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLabs
-#define PRODUCT_ID 0x1004 // tf60ansi
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER FJLabs
-#define PRODUCT TF60ANSI
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, B3, B2, B1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fjlabs/tf60ansi/info.json b/keyboards/fjlabs/tf60ansi/info.json
index 4ed7aa91dc..46c386ca5f 100644
--- a/keyboards/fjlabs/tf60ansi/info.json
+++ b/keyboards/fjlabs/tf60ansi/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "TF60 ANSI",
+ "manufacturer": "FJLabs",
"url": "https://www.fjlaboratories.com/",
"maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x1004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/fjlabs/tf60ansi/readme.md b/keyboards/fjlabs/tf60ansi/readme.md
index 29cbad3fca..274db0c27e 100644
--- a/keyboards/fjlabs/tf60ansi/readme.md
+++ b/keyboards/fjlabs/tf60ansi/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/fjlabs/tf60v2/config.h b/keyboards/fjlabs/tf60v2/config.h
index 0c1a069464..02b2a741d4 100644
--- a/keyboards/fjlabs/tf60v2/config.h
+++ b/keyboards/fjlabs/tf60v2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLabs
-#define PRODUCT_ID 0x1005 // tf60v2
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER FJLabs
-#define PRODUCT TF60v2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, B3, B2, B1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fjlabs/tf60v2/info.json b/keyboards/fjlabs/tf60v2/info.json
index c2d6c02872..989f18a001 100644
--- a/keyboards/fjlabs/tf60v2/info.json
+++ b/keyboards/fjlabs/tf60v2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TF60 RGB V2",
+ "keyboard_name": "TF60 V2",
+ "manufacturer": "FJLabs",
"url": "https://www.fjlaboratories.com/",
"maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x1005",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_arrow": {
"layout": [
diff --git a/keyboards/fjlabs/tf60v2/readme.md b/keyboards/fjlabs/tf60v2/readme.md
index 22e624e68f..73b1473e2a 100644
--- a/keyboards/fjlabs/tf60v2/readme.md
+++ b/keyboards/fjlabs/tf60v2/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/fjlabs/tf65rgbv2/config.h b/keyboards/fjlabs/tf65rgbv2/config.h
index 111b2c8928..981eb2144e 100644
--- a/keyboards/fjlabs/tf65rgbv2/config.h
+++ b/keyboards/fjlabs/tf65rgbv2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7074 // FJLabs
-#define PRODUCT_ID 0x1007 // tf60v2
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER FJLabs
-#define PRODUCT TF65RGBv2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, B3, B2, B1, D1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fjlabs/tf65rgbv2/info.json b/keyboards/fjlabs/tf65rgbv2/info.json
index fe91dcaec5..3da715d5fa 100644
--- a/keyboards/fjlabs/tf65rgbv2/info.json
+++ b/keyboards/fjlabs/tf65rgbv2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "TF65 RGB V2",
+ "manufacturer": "FJLabs",
"url": "https://www.fjlaboratories.com/",
"maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x7074",
+ "pid": "0x1007",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/fjlabs/tf65rgbv2/readme.md b/keyboards/fjlabs/tf65rgbv2/readme.md
index 0aea9ef8fd..b46c40cbfe 100644
--- a/keyboards/fjlabs/tf65rgbv2/readme.md
+++ b/keyboards/fjlabs/tf65rgbv2/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/flehrad/bigswitch/config.h b/keyboards/flehrad/bigswitch/config.h
index c0f73366a7..44229ae65c 100644
--- a/keyboards/flehrad/bigswitch/config.h
+++ b/keyboards/flehrad/bigswitch/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1209
-#define PRODUCT_ID 0xB195
-#define DEVICE_VER 0x0001
-#define MANUFACTURER flehrad
-#define PRODUCT BigSwitch PCB
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 1
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B5 }
#define MATRIX_COL_PINS { B6 }
-#define UNUSED_PINS { }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/flehrad/bigswitch/info.json b/keyboards/flehrad/bigswitch/info.json
index 8b1411775a..9e600672f8 100644
--- a/keyboards/flehrad/bigswitch/info.json
+++ b/keyboards/flehrad/bigswitch/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "Bigswitch PCB",
+ "keyboard_name": "BigSwitch PCB",
+ "manufacturer": "flehrad",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0xB195",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0, "w":4, "h":4}]
diff --git a/keyboards/flehrad/bigswitch/keymaps/333fred/config.h b/keyboards/flehrad/bigswitch/keymaps/333fred/config.h
index 3273cc8db4..6e9219115c 100644
--- a/keyboards/flehrad/bigswitch/keymaps/333fred/config.h
+++ b/keyboards/flehrad/bigswitch/keymaps/333fred/config.h
@@ -24,3 +24,4 @@
// Long tapping term on the big switch, because it takes so long to press
#define TAPPING_TERM 500
+#define PERMISSIVE_HOLD
diff --git a/keyboards/flehrad/downbubble/config.h b/keyboards/flehrad/downbubble/config.h
index fa13006a97..aa5691dc32 100644
--- a/keyboards/flehrad/downbubble/config.h
+++ b/keyboards/flehrad/downbubble/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Flehrad
-#define PRODUCT downbubble
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 20
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F1, F2, F3, F4, F5, F6 }
#define MATRIX_COL_PINS { F7, C7, C6, C5, C4, C3, C2, C1, C0, E1, E0, D7, D6, D5, D4, D3, D2, D1, D0, B7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/flehrad/downbubble/info.json b/keyboards/flehrad/downbubble/info.json
index 6314e4f966..4e3ab26bb6 100644
--- a/keyboards/flehrad/downbubble/info.json
+++ b/keyboards/flehrad/downbubble/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "downbubble",
+ "manufacturer": "Flehrad",
"maintainer": "flehrad",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_standard": {
"layout": [
diff --git a/keyboards/flehrad/numbrero/config.h b/keyboards/flehrad/numbrero/config.h
index 8360dfb3f9..68216287d1 100644
--- a/keyboards/flehrad/numbrero/config.h
+++ b/keyboards/flehrad/numbrero/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Flehrad
-#define PRODUCT Numbrero
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 5
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F6, B5, B4, E6, F7 }
#define MATRIX_COL_PINS { D1, D0, D4, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/flehrad/numbrero/info.json b/keyboards/flehrad/numbrero/info.json
index f0bce2bda2..30c93d035c 100644
--- a/keyboards/flehrad/numbrero/info.json
+++ b/keyboards/flehrad/numbrero/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Numbrero",
+ "manufacturer": "Flehrad",
"url": "",
"maintainer": "Flehrad",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numbrero_numpad": {
"layout": [
diff --git a/keyboards/flehrad/snagpad/config.h b/keyboards/flehrad/snagpad/config.h
index 946534ebb8..0360aa7446 100644
--- a/keyboards/flehrad/snagpad/config.h
+++ b/keyboards/flehrad/snagpad/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4443 // "DC" = Don Chiou
-#define PRODUCT_ID 0x5350 // "SP" = Snagpad
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Flehrad
-#define PRODUCT Snagpad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7 }
#define MATRIX_COL_PINS { F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/flehrad/snagpad/info.json b/keyboards/flehrad/snagpad/info.json
index 785eaa6a93..c2c8bdadfc 100644
--- a/keyboards/flehrad/snagpad/info.json
+++ b/keyboards/flehrad/snagpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Snagpad",
+ "manufacturer": "Flehrad",
"url": "",
"maintainer": "Flehrad",
+ "usb": {
+ "vid": "0x4443",
+ "pid": "0x5350",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
diff --git a/keyboards/flehrad/tradestation/config.h b/keyboards/flehrad/tradestation/config.h
index 6b8f021ebc..0b3a3c63f2 100644
--- a/keyboards/flehrad/tradestation/config.h
+++ b/keyboards/flehrad/tradestation/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Flehrad
-#define PRODUCT Trade Station
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
@@ -31,7 +24,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D1, C6, D4, D0 }
#define MATRIX_COL_PINS { F7, B1, D7, E6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/flehrad/tradestation/info.json b/keyboards/flehrad/tradestation/info.json
index cf0344c01b..f61ccb7d2f 100644
--- a/keyboards/flehrad/tradestation/info.json
+++ b/keyboards/flehrad/tradestation/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Tradestation",
+ "keyboard_name": "Trade Station",
+ "manufacturer": "Flehrad",
"url": "",
"maintainer": "Flehrad",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tradestation": {
"layout": [
diff --git a/keyboards/fleuron/config.h b/keyboards/fleuron/config.h
index 24212bfdc1..d10f94bc00 100644
--- a/keyboards/fleuron/config.h
+++ b/keyboards/fleuron/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER You
-#define PRODUCT Fleuron v1
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, F7 }
#define MATRIX_COL_PINS { C7, B6, B3, B5, B4, D7, D4, D5, D3, D2, D1, D0, B7, B0, B1, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fleuron/info.json b/keyboards/fleuron/info.json
index 2bb31b852b..106c3eba5e 100644
--- a/keyboards/fleuron/info.json
+++ b/keyboards/fleuron/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "Fleuron v1.0",
+ "keyboard_name": "Fleuron v1",
+ "manufacturer": "Fleuron",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_6x16": {
"layout": [
diff --git a/keyboards/fleuron/keymaps/dollartacos/keymap.c b/keyboards/fleuron/keymaps/dollartacos/keymap.c
index f8535fdc78..445204f8b9 100644
--- a/keyboards/fleuron/keymaps/dollartacos/keymap.c
+++ b/keyboards/fleuron/keymaps/dollartacos/keymap.c
@@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT_fleuron_grid(
/* Lower
* ,---------------------------------------------------------------------------------------------------------------.
- * |RESET | | | | | | | | | | | | | | | |
+ * |QK_BOOT | | | | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |RGBtog| | | | | | | | | Home | PgUp | PgDn | End | | | |
* `---------------------------------------------------------------------------------------------------------------'
*/
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, _______, _______, _______, _______, _______, _______, _______, \
diff --git a/keyboards/fluorite/config.h b/keyboards/fluorite/config.h
index 397fdaaebf..f4e973d5d1 100644
--- a/keyboards/fluorite/config.h
+++ b/keyboards/fluorite/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER ihotsuno
-#define PRODUCT fluorite
-
/* key matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 9
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
#define MATRIX_COL_PINS { D3, D1, D0, D4, C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fluorite/info.json b/keyboards/fluorite/info.json
index d816a6b251..04d3fa5c53 100644
--- a/keyboards/fluorite/info.json
+++ b/keyboards/fluorite/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "fluorite",
+ "manufacturer": "ihotsuno",
"url": "",
"maintainer": "ihotsuno, qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/flx/lodestone/config.h b/keyboards/flx/lodestone/config.h
index d4238c8eb8..b232e7f06e 100644
--- a/keyboards/flx/lodestone/config.h
+++ b/keyboards/flx/lodestone/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4658 //FX
-#define PRODUCT_ID 0x4C53 //LS
-#define DEVICE_VER 0x0001
-#define MANUFACTURER FLX
-#define PRODUCT Lodestone
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { B3, B7, F0, F1, F4 }
#define MATRIX_COL_PINS { B2, F5, F6, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/flx/lodestone/info.json b/keyboards/flx/lodestone/info.json
index 8053aa36d4..e68241722f 100644
--- a/keyboards/flx/lodestone/info.json
+++ b/keyboards/flx/lodestone/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "lodestone",
+ "keyboard_name": "Lodestone",
+ "manufacturer": "FLX",
"url": "https://prototypist.net/",
"maintainer": "Flexerm",
+ "usb": {
+ "vid": "0x4658",
+ "pid": "0x4C53",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/flx/virgo/config.h b/keyboards/flx/virgo/config.h
index 8ceb1e4ed1..facc392358 100644
--- a/keyboards/flx/virgo/config.h
+++ b/keyboards/flx/virgo/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4658 //FX
-#define PRODUCT_ID 0x5647 //VG
-#define DEVICE_VER 0x0001
-#define MANUFACTURER FLX
-#define PRODUCT Virgo
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
diff --git a/keyboards/flx/virgo/info.json b/keyboards/flx/virgo/info.json
index 5184e4fb15..6ae793eefb 100644
--- a/keyboards/flx/virgo/info.json
+++ b/keyboards/flx/virgo/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "FLX Virgo",
+ "keyboard_name": "Virgo",
+ "manufacturer": "FLX",
"url": "",
"maintainer": "mechmerlin",
+ "usb": {
+ "vid": "0x4658",
+ "pid": "0x5647",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/flxlb/zplit/config.h b/keyboards/flxlb/zplit/config.h
index 74c7339bdc..c45931fd32 100644
--- a/keyboards/flxlb/zplit/config.h
+++ b/keyboards/flxlb/zplit/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7076
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER fluxlab
-#define PRODUCT zplit
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/flxlb/zplit/info.json b/keyboards/flxlb/zplit/info.json
index e21f740f35..4687f16513 100644
--- a/keyboards/flxlb/zplit/info.json
+++ b/keyboards/flxlb/zplit/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "zplit",
+ "manufacturer": "fluxlab",
"url": "https://github.com/cccywj/qmk_firmware",
"maintainer": "flxlb",
+ "usb": {
+ "vid": "0x7076",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/flygone60/rev3/config.h b/keyboards/flygone60/rev3/config.h
index b670def338..cb752315e0 100644
--- a/keyboards/flygone60/rev3/config.h
+++ b/keyboards/flygone60/rev3/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7877
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0003
-#define MANUFACTURER ShandonCodes
-#define PRODUCT Flygone60 Rev3
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D2, D3, D5, B7, F1}
#define MATRIX_COL_PINS { F0, E6, B1, B2, B3, B0, D4, D6, D7, B4, B5, B6, C6, C7}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/flygone60/rev3/info.json b/keyboards/flygone60/rev3/info.json
index fdae44c6b4..dc446d5efc 100644
--- a/keyboards/flygone60/rev3/info.json
+++ b/keyboards/flygone60/rev3/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Flygone60 Rev3",
+ "manufacturer": "ShandonCodes",
"url": "https://qmk.fm/keyboards/",
"maintainer": "ShandonCodes",
+ "usb": {
+ "vid": "0x7877",
+ "pid": "0x0001",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_60_ansi_arrow": {
"layout": [
diff --git a/keyboards/foostan/cornelius/config.h b/keyboards/foostan/cornelius/config.h
index a3e784150f..e3b7ed4f64 100644
--- a/keyboards/foostan/cornelius/config.h
+++ b/keyboards/foostan/cornelius/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3265
-#define PRODUCT_ID 0x0005
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yushakobo
-#define PRODUCT Cornelius
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, C7 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C6, B6, B5, B4, D7, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/foostan/cornelius/info.json b/keyboards/foostan/cornelius/info.json
index adb20ded53..fa7a40b5aa 100644
--- a/keyboards/foostan/cornelius/info.json
+++ b/keyboards/foostan/cornelius/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name":"cornelius",
+ "keyboard_name":"Cornelius",
+ "manufacturer":"Yushakobo",
"url":"",
"maintainer":"foostan",
+ "usb": {
+ "vid": "0x3265",
+ "pid": "0x0005",
+ "device_version": "0.0.1"
+ },
"layouts":{
"LAYOUT":{
"layout":[
diff --git a/keyboards/foostan/cornelius/keymaps/gipsy-king/keymap.c b/keyboards/foostan/cornelius/keymaps/gipsy-king/keymap.c
index 8f6adffa2e..f99bd7461b 100644
--- a/keyboards/foostan/cornelius/keymaps/gipsy-king/keymap.c
+++ b/keyboards/foostan/cornelius/keymaps/gipsy-king/keymap.c
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* Some macros, Keyboard-reset, mouse and audio.
*/
[3] = LAYOUT(
- _______,_______,EMAIL_W,EMAIL, _______,_______,_______,_______,_______,_______,_______,RESET,
+ _______,_______,EMAIL_W,EMAIL, _______,_______,_______,_______,_______,_______,_______,QK_BOOT,
_______,_______,_______,_______,_______,_______,KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R,_______,_______,
_______,_______,_______,_______,_______,_______,KC_BTN1,KC_MUTE,KC_VOLD,KC_VOLU,KC_BRID,KC_BRIU,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______
diff --git a/keyboards/foostan/cornelius/keymaps/hvp/keymap.c b/keyboards/foostan/cornelius/keymaps/hvp/keymap.c
index bac74edbce..c740017540 100644
--- a/keyboards/foostan/cornelius/keymaps/hvp/keymap.c
+++ b/keyboards/foostan/cornelius/keymaps/hvp/keymap.c
@@ -54,13 +54,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), KC_7, KC_8, KC_9, KC_BSPC,
_______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_4, KC_5, KC_6, KC_0,
_______, _______, _______, _______, _______, _______, XXXXXXX, KC_0, KC_1, KC_2, KC_3, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[5] = LAYOUT(
_______, G(S(KC_1)), G(S(KC_2)), G(S(KC_3)), G(S(KC_4)), G(S(KC_5)), G(S(KC_6)), G(S(KC_7)), G(S(KC_8)), G(S(KC_9)), G(S(KC_0)), _______,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CAPS,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NLCK
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NLCK
),
};
diff --git a/keyboards/foostan/cornelius/readme.md b/keyboards/foostan/cornelius/readme.md
index ffd6b60a16..ce0854dd75 100644
--- a/keyboards/foostan/cornelius/readme.md
+++ b/keyboards/foostan/cornelius/readme.md
@@ -16,6 +16,6 @@ Flashing example for this keyboard:
make foostan/cornelius:default:flash
-The board reset into bootloader mode via either the reset button (on the back of the PCB) or a configured RESET shortcut (which may vary depending on when the PCB was flashed).
+The board reset into bootloader mode via either the reset button (on the back of the PCB) or a configured `QK_BOOT` shortcut (which may vary depending on when the PCB was flashed).
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/for_science/config.h b/keyboards/for_science/config.h
index 9c2f484dc9..f3f2d1ffc9 100644
--- a/keyboards/for_science/config.h
+++ b/keyboards/for_science/config.h
@@ -16,13 +16,6 @@ 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 0xF22C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Peej
-#define PRODUCT For Science
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D4, D7, E6, B4, B5 }
//#define MATRIX_COL_PINS { D4, C6, D7, E6, B4 }
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2 }
-#define UNUSED_PINS
//#define USE_I2C
#define SOFT_SERIAL_PIN D0
diff --git a/keyboards/for_science/info.json b/keyboards/for_science/info.json
index 1dd1f6cd8f..9d2808c9c5 100644
--- a/keyboards/for_science/info.json
+++ b/keyboards/for_science/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "For Science",
+ "manufacturer": "Peej",
"url": "https://github.com/peej/for-science-keyboard",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xF22C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_4x5_3": {
"layout": [
diff --git a/keyboards/for_science/keymaps/manna-harbour_miryoku/config.h b/keyboards/for_science/keymaps/manna-harbour_miryoku/config.h
index 1794ba4fd6..c05e920287 100644
--- a/keyboards/for_science/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/for_science/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/for_science/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/fortitude60/info.json b/keyboards/fortitude60/info.json
deleted file mode 100644
index db8959706f..0000000000
--- a/keyboards/fortitude60/info.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "keyboard_name": "Fortitude60",
- "url": "",
- "maintainer": "qmk",
- "layouts": {
- "LAYOUT": {
- "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":9, "y":0}, {"label":"R01", "x":10, "y":0}, {"label":"R02", "x":11, "y":0}, {"label":"R03", "x":12, "y":0}, {"label":"R04", "x":13, "y":0}, {"label":"R05", "x":14, "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":9, "y":1}, {"label":"R11", "x":10, "y":1}, {"label":"R12", "x":11, "y":1}, {"label":"R13", "x":12, "y":1}, {"label":"R14", "x":13, "y":1}, {"label":"R15", "x":14, "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":9, "y":2}, {"label":"R21", "x":10, "y":2}, {"label":"R22", "x":11, "y":2}, {"label":"R23", "x":12, "y":2}, {"label":"R24", "x":13, "y":2}, {"label":"R25", "x":14, "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":"LT5", "x":6, "y":3}, {"label":"RT5", "x":8, "y":3}, {"label":"R30", "x":9, "y":3}, {"label":"R31", "x":10, "y":3}, {"label":"R32", "x":11, "y":3}, {"label":"R33", "x":12, "y":3}, {"label":"R34", "x":13, "y":3}, {"label":"R35", "x":14, "y":3}, {"label":"LT0", "x":2, "y":4}, {"label":"LT1", "x":3, "y":4}, {"label":"LT2", "x":4, "y":4}, {"label":"LT3", "x":5, "y":4}, {"label":"LT4", "x":6, "y":4}, {"label":"RT4", "x":8, "y":4}, {"label":"RT3", "x":9, "y":4}, {"label":"RT2", "x":10, "y":4}, {"label":"RT1", "x":11, "y":4}, {"label":"RT0", "x":12, "y":4}]
- }
- }
-}
diff --git a/keyboards/fortitude60/keymaps/manna-harbour_miryoku/config.h b/keyboards/fortitude60/keymaps/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..e335d5d8b8
--- /dev/null
+++ b/keyboards/fortitude60/keymaps/manna-harbour_miryoku/config.h
@@ -0,0 +1,22 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\
+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, XXX, XXX, K25, K26, K27, K28, K29, XXX,\
+ XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX\
+)
diff --git a/keyboards/fortitude60/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/fortitude60/keymaps/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..dbab7f9820
--- /dev/null
+++ b/keyboards/fortitude60/keymaps/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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/fortitude60/rev1/config.h b/keyboards/fortitude60/rev1/config.h
index e4366f959f..7d9cfab899 100644
--- a/keyboards/fortitude60/rev1/config.h
+++ b/keyboards/fortitude60/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1156
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Pekaso
-#define PRODUCT Fortitude60
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/fortitude60/rev1/info.json b/keyboards/fortitude60/rev1/info.json
new file mode 100644
index 0000000000..f8c7f0a995
--- /dev/null
+++ b/keyboards/fortitude60/rev1/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Fortitude60",
+ "manufacturer": "Pekaso",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1156",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "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":9, "y":0}, {"label":"R01", "x":10, "y":0}, {"label":"R02", "x":11, "y":0}, {"label":"R03", "x":12, "y":0}, {"label":"R04", "x":13, "y":0}, {"label":"R05", "x":14, "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":9, "y":1}, {"label":"R11", "x":10, "y":1}, {"label":"R12", "x":11, "y":1}, {"label":"R13", "x":12, "y":1}, {"label":"R14", "x":13, "y":1}, {"label":"R15", "x":14, "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":9, "y":2}, {"label":"R21", "x":10, "y":2}, {"label":"R22", "x":11, "y":2}, {"label":"R23", "x":12, "y":2}, {"label":"R24", "x":13, "y":2}, {"label":"R25", "x":14, "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":"LT5", "x":6, "y":3}, {"label":"RT5", "x":8, "y":3}, {"label":"R30", "x":9, "y":3}, {"label":"R31", "x":10, "y":3}, {"label":"R32", "x":11, "y":3}, {"label":"R33", "x":12, "y":3}, {"label":"R34", "x":13, "y":3}, {"label":"R35", "x":14, "y":3}, {"label":"LT0", "x":2, "y":4}, {"label":"LT1", "x":3, "y":4}, {"label":"LT2", "x":4, "y":4}, {"label":"LT3", "x":5, "y":4}, {"label":"LT4", "x":6, "y":4}, {"label":"RT4", "x":8, "y":4}, {"label":"RT3", "x":9, "y":4}, {"label":"RT2", "x":10, "y":4}, {"label":"RT1", "x":11, "y":4}, {"label":"RT0", "x":12, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/foxlab/key65/hotswap/config.h b/keyboards/foxlab/key65/hotswap/config.h
index 8c0e5a1b9e..6ffaa1b331 100644
--- a/keyboards/foxlab/key65/hotswap/config.h
+++ b/keyboards/foxlab/key65/hotswap/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x464C // "FL"
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Fox Lab
-#define PRODUCT Key 65 Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/foxlab/key65/hotswap/info.json b/keyboards/foxlab/key65/hotswap/info.json
index 4c43f13c80..e6615681ef 100644
--- a/keyboards/foxlab/key65/hotswap/info.json
+++ b/keyboards/foxlab/key65/hotswap/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Key 65 Hotswap",
+ "manufacturer": "Fox Lab",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x464C",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/foxlab/key65/universal/config.h b/keyboards/foxlab/key65/universal/config.h
index 44911bed77..b02b60698d 100644
--- a/keyboards/foxlab/key65/universal/config.h
+++ b/keyboards/foxlab/key65/universal/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x464C // "FL"
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Fox Lab
-#define PRODUCT Key 65 Universal
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/foxlab/key65/universal/info.json b/keyboards/foxlab/key65/universal/info.json
index d1303b6a47..3aa36fcc62 100644
--- a/keyboards/foxlab/key65/universal/info.json
+++ b/keyboards/foxlab/key65/universal/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Key 65 Universal",
+ "manufacturer": "Fox Lab",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x464C",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker_split_bs": {
"layout": [
diff --git a/keyboards/foxlab/leaf60/hotswap/config.h b/keyboards/foxlab/leaf60/hotswap/config.h
index f224957c59..725e3d7a79 100644
--- a/keyboards/foxlab/leaf60/hotswap/config.h
+++ b/keyboards/foxlab/leaf60/hotswap/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x464C // "FL"
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Fox Lab
-#define PRODUCT Leaf 60 Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D2, D1, D0, D3, D5 }
#define MATRIX_COL_PINS { F5, F4, F1, F0, B0, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/foxlab/leaf60/hotswap/info.json b/keyboards/foxlab/leaf60/hotswap/info.json
index 1dd5e47b2f..b577d864dd 100644
--- a/keyboards/foxlab/leaf60/hotswap/info.json
+++ b/keyboards/foxlab/leaf60/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Fox Lab Hotswap Leaf60",
+ "keyboard_name": "Leaf 60 Hotswap",
+ "manufacturer": "Fox Lab",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x464C",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"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/foxlab/leaf60/hotswap/keymaps/crd/keymap.c b/keyboards/foxlab/leaf60/hotswap/keymaps/crd/keymap.c
index 117edf3524..4f5a60d91c 100644
--- a/keyboards/foxlab/leaf60/hotswap/keymaps/crd/keymap.c
+++ b/keyboards/foxlab/leaf60/hotswap/keymaps/crd/keymap.c
@@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FL] = 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,
- _______, _______, _______, EEP_RST, RESET, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______,
+ _______, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, _______,
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______,
_______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______,
_______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/foxlab/leaf60/universal/config.h b/keyboards/foxlab/leaf60/universal/config.h
index d25e145361..eb702fc948 100644
--- a/keyboards/foxlab/leaf60/universal/config.h
+++ b/keyboards/foxlab/leaf60/universal/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x464C // "FL"
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Fox Lab
-#define PRODUCT Leaf 60 Universal
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, F0, F4, F1 }
#define MATRIX_COL_PINS { B0, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/foxlab/leaf60/universal/info.json b/keyboards/foxlab/leaf60/universal/info.json
index 25687994a9..2675639455 100644
--- a/keyboards/foxlab/leaf60/universal/info.json
+++ b/keyboards/foxlab/leaf60/universal/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Fox Lab Leaf60",
+ "keyboard_name": "Leaf 60 Universal",
+ "manufacturer": "Fox Lab",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x464C",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"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.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}]
diff --git a/keyboards/foxlab/leaf60/universal/keymaps/jarred/keymap.c b/keyboards/foxlab/leaf60/universal/keymaps/jarred/keymap.c
index 5590ff8416..63374f401f 100644
--- a/keyboards/foxlab/leaf60/universal/keymaps/jarred/keymap.c
+++ b/keyboards/foxlab/leaf60/universal/keymaps/jarred/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, KC_DEL , KC_BSPC, _______, KC_HOME, KC_UP , KC_END , KC_INS , _______, _______, _______,
_______, _______, _______, KC_LSFT, KC_LCTL, KC_ENT , _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL , KC_DEL , _______,
_______ , _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______, _______, _______, _______,
- _______, _______, ALT_TAB , _______, RESET
+ _______, _______, ALT_TAB , _______, QK_BOOT
),
};
diff --git a/keyboards/foxlab/leaf60/universal/keymaps/mguterl/keymap.c b/keyboards/foxlab/leaf60/universal/keymaps/mguterl/keymap.c
index 158bdde89c..0aa1dc6376 100644
--- a/keyboards/foxlab/leaf60/universal/keymaps/mguterl/keymap.c
+++ b/keyboards/foxlab/leaf60/universal/keymaps/mguterl/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______),
[_UTIL] = 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, _______, _______,
+ QK_BOOT, 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_GAME, KC_MPLY, KC_MPRV, KC_MNXT, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, _______, _______,
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/foxlab/time80/config.h b/keyboards/foxlab/time80/config.h
index 27013c5c67..e0a1cbeaf8 100644
--- a/keyboards/foxlab/time80/config.h
+++ b/keyboards/foxlab/time80/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x464C // "FL"
-#define PRODUCT_ID 0x0005
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Fox Lab
-#define PRODUCT Time80
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 15
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 0 1 2 3 4 5 6 7 8 9 A B C D E
#define MATRIX_ROW_PINS { B1, B2, B3, B5, B6, B7, B0 }
#define MATRIX_COL_PINS { A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7, A0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/foxlab/time80/info.json b/keyboards/foxlab/time80/info.json
index b17866391e..5173c152b2 100644
--- a/keyboards/foxlab/time80/info.json
+++ b/keyboards/foxlab/time80/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Fox Lab Time 80",
+ "keyboard_name": "Time80",
+ "manufacturer": "Fox Lab",
"url": "",
"maintainer": "lukelex",
+ "usb": {
+ "vid": "0x464C",
+ "pid": "0x0005",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/foxlab/time80/readme.md b/keyboards/foxlab/time80/readme.md
index 66fd66b4b6..58ad560400 100644
--- a/keyboards/foxlab/time80/readme.md
+++ b/keyboards/foxlab/time80/readme.md
@@ -21,7 +21,7 @@ Flashing example for this keyboard ([after setting up the bootloadHID flashing e
**Reset Key**: There are no reset switches or pads. Follow this
[guide](https://docs.qmk.fm/#/flashing_bootloadhid)
-to have it flashed for the first time. Remember to add a `RESET`
+to have it flashed for the first time. Remember to add a `QK_BOOT`
key on your keymap for future endeavors.
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/foxlab/time_re/hotswap/config.h b/keyboards/foxlab/time_re/hotswap/config.h
index 8ca58e4341..1b3d814c66 100644
--- a/keyboards/foxlab/time_re/hotswap/config.h
+++ b/keyboards/foxlab/time_re/hotswap/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x464C // "FL"
-#define PRODUCT_ID 0x0006
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Fox Lab
-#define PRODUCT Time 80 Reforged
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/foxlab/time_re/hotswap/info.json b/keyboards/foxlab/time_re/hotswap/info.json
index bf4a81873d..3479c1e33e 100644
--- a/keyboards/foxlab/time_re/hotswap/info.json
+++ b/keyboards/foxlab/time_re/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Time RE Hotswap",
+ "keyboard_name": "Time 80 Reforged",
+ "manufacturer": "Fox Lab",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x464C",
+ "pid": "0x0006",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/foxlab/time_re/universal/config.h b/keyboards/foxlab/time_re/universal/config.h
index 8ca58e4341..1b3d814c66 100644
--- a/keyboards/foxlab/time_re/universal/config.h
+++ b/keyboards/foxlab/time_re/universal/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x464C // "FL"
-#define PRODUCT_ID 0x0006
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Fox Lab
-#define PRODUCT Time 80 Reforged
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/foxlab/time_re/universal/info.json b/keyboards/foxlab/time_re/universal/info.json
index 9161a345aa..3479c1e33e 100644
--- a/keyboards/foxlab/time_re/universal/info.json
+++ b/keyboards/foxlab/time_re/universal/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Time RE Universal",
+ "keyboard_name": "Time 80 Reforged",
+ "manufacturer": "Fox Lab",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x464C",
+ "pid": "0x0006",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/fr4/southpaw75/config.h b/keyboards/fr4/southpaw75/config.h
index 3dd93ec540..3f613c371b 100644
--- a/keyboards/fr4/southpaw75/config.h
+++ b/keyboards/fr4/southpaw75/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x350C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kelvinhall05
-#define PRODUCT Southpaw75
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 9
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4 }
#define MATRIX_COL_PINS { B5, F4, F5, F6, F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fr4/southpaw75/info.json b/keyboards/fr4/southpaw75/info.json
index c5c6123221..11d4031769 100644
--- a/keyboards/fr4/southpaw75/info.json
+++ b/keyboards/fr4/southpaw75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Southpaw75",
+ "manufacturer": "kelvinhall05",
"url": "https://github.com/kelvinhall05/southpaw75",
"maintainer": "kelvinhall05",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x350C",
+ "device_version": "0.0.1"
+ },
"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":"~", "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":"_", "x":15, "y":0}, {"label":"+", "x":16, "y":0}, {"label":"Backspace", "x":17, "y":0, "w":2}, {"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":"Tab", "x":4, "y":1, "w":1.5}, {"label":"Q", "x":5.5, "y":1}, {"label":"W", "x":6.5, "y":1}, {"label":"E", "x":7.5, "y":1}, {"label":"R", "x":8.5, "y":1}, {"label":"T", "x":9.5, "y":1}, {"label":"Y", "x":10.5, "y":1}, {"label":"U", "x":11.5, "y":1}, {"label":"I", "x":12.5, "y":1}, {"label":"O", "x":13.5, "y":1}, {"label":"P", "x":14.5, "y":1}, {"label":"{", "x":15.5, "y":1}, {"label":"}", "x":16.5, "y":1}, {"label":"|", "x":17.5, "y":1, "w":1.5}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"Caps Lock", "x":4, "y":2, "w":1.75}, {"label":"A", "x":5.75, "y":2}, {"label":"S", "x":6.75, "y":2}, {"label":"D", "x":7.75, "y":2}, {"label":"F", "x":8.75, "y":2}, {"label":"G", "x":9.75, "y":2}, {"label":"H", "x":10.75, "y":2}, {"label":"J", "x":11.75, "y":2}, {"label":"K", "x":12.75, "y":2}, {"label":"L", "x":13.75, "y":2}, {"label":":", "x":14.75, "y":2}, {"label":"\"", "x":15.75, "y":2}, {"label":"Enter", "x":16.75, "y":2, "w":2.25}, {"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":"Shift", "x":4, "y":3, "w":2.25}, {"label":"Z", "x":6.25, "y":3}, {"label":"X", "x":7.25, "y":3}, {"label":"C", "x":8.25, "y":3}, {"label":"V", "x":9.25, "y":3}, {"label":"B", "x":10.25, "y":3}, {"label":"N", "x":11.25, "y":3}, {"label":"M", "x":12.25, "y":3}, {"label":"<", "x":13.25, "y":3}, {"label":">", "x":14.25, "y":3}, {"label":"?", "x":15.25, "y":3}, {"label":"Shift", "x":16.25, "y":3, "w":2.75}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}, {"label":"Ctrl", "x":4, "y":4, "w":1.25}, {"label":"Win", "x":5.25, "y":4, "w":1.25}, {"label":"Alt", "x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":6.25}, {"label":"Alt", "x":14, "y":4, "w":1.25}, {"label":"Win", "x":15.25, "y":4, "w":1.25}, {"label":"Menu", "x":16.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":17.75, "y":4, "w":1.25}]
diff --git a/keyboards/fr4/unix60/config.h b/keyboards/fr4/unix60/config.h
index 53d2104fdd..5e0b52ee80 100644
--- a/keyboards/fr4/unix60/config.h
+++ b/keyboards/fr4/unix60/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4652 // "FR"
-#define PRODUCT_ID 0x5558 // "UX"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER FR4Boards
-#define PRODUCT unix60
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 9
@@ -33,7 +26,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D3, D2, D1, D0, D4, C6, D7 }
#define MATRIX_COL_PINS { E6, B4, B5, F4, F5, F6, F7, B1, B3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fr4/unix60/info.json b/keyboards/fr4/unix60/info.json
index 6debabc7aa..19a04e8ced 100644
--- a/keyboards/fr4/unix60/info.json
+++ b/keyboards/fr4/unix60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "unix60",
+ "manufacturer": "FR4Boards",
"url": "https://github.com/mkdl/Unix60",
"maintainer": "mkdl",
+ "usb": {
+ "vid": "0x4652",
+ "pid": "0x5558",
+ "device_version": "0.0.1"
+ },
"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":0.6}, {"x":13.6, "y":0, "w":0.8}, {"x":14.4, "y":0, "w":0.6}, {"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":13.75, "y":2, "w":1.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":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}]
diff --git a/keyboards/fractal/config.h b/keyboards/fractal/config.h
index b9aeac3855..9db3d0abe5 100755
--- a/keyboards/fractal/config.h
+++ b/keyboards/fractal/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KeyPCB
-#define PRODUCT Fractal
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -17,7 +10,6 @@
#define MATRIX_ROW_PINS { B1, F7, F6, F5, F4 }
#define MATRIX_COL_PINS { B3, B2, B6, B5, B4, E6, D7, C6, D4, D0, D1, D3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/fractal/info.json b/keyboards/fractal/info.json
index 7d7a2ba5a4..7d39a296d3 100644
--- a/keyboards/fractal/info.json
+++ b/keyboards/fractal/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Fractal",
+ "manufacturer": "KeyPCB",
"url": "https://keypcb.bigcartel.com/product/fractal-keyboard-group-buy",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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/fractal/keymaps/default/keymap.c b/keyboards/fractal/keymaps/default/keymap.c
index 6b0a8cc18c..ded4890d8c 100644
--- a/keyboards/fractal/keymaps/default/keymap.c
+++ b/keyboards/fractal/keymaps/default/keymap.c
@@ -158,7 +158,7 @@ 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,
- _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______,_______, _______, 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/free_willy/config.h b/keyboards/free_willy/config.h
index cecd2a8211..a5250a8c39 100644
--- a/keyboards/free_willy/config.h
+++ b/keyboards/free_willy/config.h
@@ -17,20 +17,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5351 // SQ
-#define PRODUCT_ID 0x4657 // FW
-#define DEVICE_VER 0x0001
-#define MANUFACTURER squashkb
-#define PRODUCT free willy
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/free_willy/info.json b/keyboards/free_willy/info.json
index c2bb3b95d9..61a707b245 100644
--- a/keyboards/free_willy/info.json
+++ b/keyboards/free_willy/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "free willy",
+ "manufacturer": "squashkb",
"url": "https://www.squashkb.com/product/free-willy",
"maintainer": "tsquash",
+ "usb": {
+ "vid": "0x5351",
+ "pid": "0x4657",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/free_willy/keymaps/colemak/keymap.c b/keyboards/free_willy/keymaps/colemak/keymap.c
index 9d666e1bf0..5be593ad50 100644
--- a/keyboards/free_willy/keymaps/colemak/keymap.c
+++ b/keyboards/free_willy/keymaps/colemak/keymap.c
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_NAV] = LAYOUT(
- RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ QK_BOOT, KC_NO, 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_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
diff --git a/keyboards/friedrich/config.h b/keyboards/friedrich/config.h
index 1e4e36f2e4..531a9af4d5 100644
--- a/keyboards/friedrich/config.h
+++ b/keyboards/friedrich/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6481
-#define PRODUCT_ID 0xB4A2
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kb-elmo
-#define PRODUCT Friedrich
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { F4, F1, F0, F5, D5 }
#define MATRIX_COL_PINS { F6, F7, E6, B2, B3, D4, D6, D7, B4, C6, B5, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/friedrich/info.json b/keyboards/friedrich/info.json
index 17492e6faf..ccaaf2753e 100644
--- a/keyboards/friedrich/info.json
+++ b/keyboards/friedrich/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Friedrich",
+ "manufacturer": "kb-elmo",
"url": "https://github.com/MarvFPV/Friedrich",
"maintainer": "kb-elmo<mail@elmo.space>",
+ "usb": {
+ "vid": "0x6481",
+ "pid": "0xB4A2",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0},
diff --git a/keyboards/frooastboard/nano/config.h b/keyboards/frooastboard/nano/config.h
index 48af8e7e9c..f7a025a251 100644
--- a/keyboards/frooastboard/nano/config.h
+++ b/keyboards/frooastboard/nano/config.h
@@ -18,10 +18,6 @@
#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
diff --git a/keyboards/frooastboard/nano/info.json b/keyboards/frooastboard/nano/info.json
index ae94705195..a524545a7c 100644
--- a/keyboards/frooastboard/nano/info.json
+++ b/keyboards/frooastboard/nano/info.json
@@ -1,5 +1,6 @@
{
"keyboard_name": "Frooastboard Nano",
+ "manufacturer": "frooastside",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/frooastboard/nano",
"maintainer": "frooastside",
"debounce": 5,
diff --git a/keyboards/frooastboard/nano/keymaps/safe_mode/keymap.c b/keyboards/frooastboard/nano/keymaps/safe_mode/keymap.c
index d237438da3..83d7c07da2 100644
--- a/keyboards/frooastboard/nano/keymaps/safe_mode/keymap.c
+++ b/keyboards/frooastboard/nano/keymaps/safe_mode/keymap.c
@@ -39,5 +39,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[5] = LAYOUT(
KC_TRNS, KC_TRNS,
- RESET, TO(4))
+ QK_BOOT, TO(4))
};
diff --git a/keyboards/frooastboard/walnut/readme.md b/keyboards/frooastboard/walnut/readme.md
index c4baa40ce4..324069b4d7 100644
--- a/keyboards/frooastboard/walnut/readme.md
+++ b/keyboards/frooastboard/walnut/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/ft/mars65/config.h b/keyboards/ft/mars65/config.h
new file mode 100644
index 0000000000..69efcea1fc
--- /dev/null
+++ b/keyboards/ft/mars65/config.h
@@ -0,0 +1,53 @@
+// Copyright 2022 wonderbeel (https://github.com/wonderbeel)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* 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 { B0, B1, B2, B3, B4 }
+#define MATRIX_COL_PINS { C6, C7, D0, D1, D2, D3, D4, D5, D6, D7, F0, F1, F4, F5, F6, F7 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+#define BACKLIGHT_LEVELS 3
+
+#define RGB_DI_PIN E6
+#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 130 /* 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
+
+// generated by KBFirmware JSON to QMK Parser
+// https://noroadsleft.github.io/kbf_qmk_converter/
+
diff --git a/keyboards/ft/mars65/info.json b/keyboards/ft/mars65/info.json
new file mode 100644
index 0000000000..f2307b60c1
--- /dev/null
+++ b/keyboards/ft/mars65/info.json
@@ -0,0 +1,397 @@
+{
+ "keyboard_name": "Mars 6.5",
+ "manufacturer": "FT",
+ "url": "",
+ "maintainer": "wonderbeel",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x422F",
+ "device_version": "0.0.1"
+ },
+ "community_layouts": ["65_ansi_blocker", "65_ansi_blocker_split_bs", "65_iso_blocker", "65_iso_blocker_split_bs"],
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"K00 (B0,C6)", "x":0, "y":0},
+ {"label":"K01 (B0,C7)", "x":1, "y":0},
+ {"label":"K02 (B0,D0)", "x":2, "y":0},
+ {"label":"K03 (B0,D1)", "x":3, "y":0},
+ {"label":"K04 (B0,D2)", "x":4, "y":0},
+ {"label":"K05 (B0,D3)", "x":5, "y":0},
+ {"label":"K06 (B0,D4)", "x":6, "y":0},
+ {"label":"K07 (B0,D5)", "x":7, "y":0},
+ {"label":"K08 (B0,D6)", "x":8, "y":0},
+ {"label":"K09 (B0,D7)", "x":9, "y":0},
+ {"label":"K0A (B0,F0)", "x":10, "y":0},
+ {"label":"K0B (B0,F1)", "x":11, "y":0},
+ {"label":"K0C (B0,F4)", "x":12, "y":0},
+ {"label":"K0D (B0,F5)", "x":13, "y":0},
+ {"label":"K0E (B0,F6)", "x":14, "y":0},
+ {"label":"K0F (B0,F7)", "x":15, "y":0},
+
+ {"label":"K10 (B1,C6)", "x":0, "y":1, "w":1.5},
+ {"label":"K12 (B1,D0)", "x":1.5, "y":1},
+ {"label":"K13 (B1,D1)", "x":2.5, "y":1},
+ {"label":"K14 (B1,D2)", "x":3.5, "y":1},
+ {"label":"K15 (B1,D3)", "x":4.5, "y":1},
+ {"label":"K16 (B1,D4)", "x":5.5, "y":1},
+ {"label":"K17 (B1,D5)", "x":6.5, "y":1},
+ {"label":"K18 (B1,D6)", "x":7.5, "y":1},
+ {"label":"K19 (B1,D7)", "x":8.5, "y":1},
+ {"label":"K1A (B1,F0)", "x":9.5, "y":1},
+ {"label":"K1B (B1,F1)", "x":10.5, "y":1},
+ {"label":"K1C (B1,F4)", "x":11.5, "y":1},
+ {"label":"K1D (B1,F5)", "x":12.5, "y":1},
+ {"label":"K1E (B1,F6)", "x":13.5, "y":1, "w":1.5},
+ {"label":"K1F (B1,F7)", "x":15, "y":1},
+
+ {"label":"K20 (B2,C6)", "x":0, "y":2, "w":1.75},
+ {"label":"K22 (B2,D0)", "x":1.75, "y":2},
+ {"label":"K23 (B2,D1)", "x":2.75, "y":2},
+ {"label":"K24 (B2,D2)", "x":3.75, "y":2},
+ {"label":"K25 (B2,D3)", "x":4.75, "y":2},
+ {"label":"K26 (B2,D4)", "x":5.75, "y":2},
+ {"label":"K27 (B2,D5)", "x":6.75, "y":2},
+ {"label":"K28 (B2,D6)", "x":7.75, "y":2},
+ {"label":"K29 (B2,D7)", "x":8.75, "y":2},
+ {"label":"K2A (B2,F0)", "x":9.75, "y":2},
+ {"label":"K2B (B2,F1)", "x":10.75, "y":2},
+ {"label":"K2C (B2,F4)", "x":11.75, "y":2},
+ {"label":"K2E (B2,F6)", "x":12.75, "y":2, "w":2.25},
+ {"label":"K2F (B2,F7)", "x":15, "y":2},
+
+ {"label":"K30 (B3,C6)", "x":0, "y":3, "w":1.25},
+ {"label":"K31 (B3,C7)", "x":1.25, "y":3},
+ {"label":"K32 (B3,D0)", "x":2.25, "y":3},
+ {"label":"K33 (B3,D1)", "x":3.25, "y":3},
+ {"label":"K34 (B3,D2)", "x":4.25, "y":3},
+ {"label":"K35 (B3,D3)", "x":5.25, "y":3},
+ {"label":"K36 (B3,D4)", "x":6.25, "y":3},
+ {"label":"K37 (B3,D5)", "x":7.25, "y":3},
+ {"label":"K38 (B3,D6)", "x":8.25, "y":3},
+ {"label":"K39 (B3,D7)", "x":9.25, "y":3},
+ {"label":"K3A (B3,F0)", "x":10.25, "y":3},
+ {"label":"K3B (B3,F1)", "x":11.25, "y":3},
+ {"label":"K3D (B3,F5)", "x":12.25, "y":3, "w":1.75},
+ {"label":"K3E (B3,F6)", "x":14, "y":3},
+ {"label":"K3F (B3,F7)", "x":15, "y":3},
+
+ {"label":"K40 (B4,C6)", "x":0, "y":4, "w":1.25},
+ {"label":"K41 (B4,C7)", "x":1.25, "y":4, "w":1.25},
+ {"label":"K43 (B4,D1)", "x":2.5, "y":4, "w":1.25},
+ {"label":"K46 (B4,D4)", "x":3.75, "y":4, "w":6.25},
+ {"label":"K4A (B4,F0)", "x":10, "y":4},
+ {"label":"K4B (B4,F1)", "x":11, "y":4},
+ {"label":"K4C (B4,F4)", "x":12, "y":4},
+ {"label":"K4D (B4,F5)", "x":13, "y":4},
+ {"label":"K4E (B4,F6)", "x":14, "y":4},
+ {"label":"K4F (B4,F7)", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_ansi_blocker": {
+ "layout": [
+ {"label":"K00 (B0,C6)", "x":0, "y":0},
+ {"label":"K01 (B0,C7)", "x":1, "y":0},
+ {"label":"K02 (B0,D0)", "x":2, "y":0},
+ {"label":"K03 (B0,D1)", "x":3, "y":0},
+ {"label":"K04 (B0,D2)", "x":4, "y":0},
+ {"label":"K05 (B0,D3)", "x":5, "y":0},
+ {"label":"K06 (B0,D4)", "x":6, "y":0},
+ {"label":"K07 (B0,D5)", "x":7, "y":0},
+ {"label":"K08 (B0,D6)", "x":8, "y":0},
+ {"label":"K09 (B0,D7)", "x":9, "y":0},
+ {"label":"K0A (B0,F0)", "x":10, "y":0},
+ {"label":"K0B (B0,F1)", "x":11, "y":0},
+ {"label":"K0C (B0,F4)", "x":12, "y":0},
+ {"label":"K0D (B0,F5)", "x":13, "y":0, "w":2},
+ {"label":"K0F (B0,F7)", "x":15, "y":0},
+
+ {"label":"K10 (B1,C6)", "x":0, "y":1, "w":1.5},
+ {"label":"K12 (B1,D0)", "x":1.5, "y":1},
+ {"label":"K13 (B1,D1)", "x":2.5, "y":1},
+ {"label":"K14 (B1,D2)", "x":3.5, "y":1},
+ {"label":"K15 (B1,D3)", "x":4.5, "y":1},
+ {"label":"K16 (B1,D4)", "x":5.5, "y":1},
+ {"label":"K17 (B1,D5)", "x":6.5, "y":1},
+ {"label":"K18 (B1,D6)", "x":7.5, "y":1},
+ {"label":"K19 (B1,D7)", "x":8.5, "y":1},
+ {"label":"K1A (B1,F0)", "x":9.5, "y":1},
+ {"label":"K1B (B1,F1)", "x":10.5, "y":1},
+ {"label":"K1C (B1,F4)", "x":11.5, "y":1},
+ {"label":"K1D (B1,F5)", "x":12.5, "y":1},
+ {"label":"K1E (B1,F6)", "x":13.5, "y":1, "w":1.5},
+ {"label":"K1F (B1,F7)", "x":15, "y":1},
+
+ {"label":"K20 (B2,C6)", "x":0, "y":2, "w":1.75},
+ {"label":"K22 (B2,D0)", "x":1.75, "y":2},
+ {"label":"K23 (B2,D1)", "x":2.75, "y":2},
+ {"label":"K24 (B2,D2)", "x":3.75, "y":2},
+ {"label":"K25 (B2,D3)", "x":4.75, "y":2},
+ {"label":"K26 (B2,D4)", "x":5.75, "y":2},
+ {"label":"K27 (B2,D5)", "x":6.75, "y":2},
+ {"label":"K28 (B2,D6)", "x":7.75, "y":2},
+ {"label":"K29 (B2,D7)", "x":8.75, "y":2},
+ {"label":"K2A (B2,F0)", "x":9.75, "y":2},
+ {"label":"K2B (B2,F1)", "x":10.75, "y":2},
+ {"label":"K2C (B2,F4)", "x":11.75, "y":2},
+ {"label":"K2E (B2,F6)", "x":12.75, "y":2, "w":2.25},
+ {"label":"K2F (B2,F7)", "x":15, "y":2},
+
+ {"label":"K30 (B3,C6)", "x":0, "y":3, "w":2.25},
+ {"label":"K32 (B3,D0)", "x":2.25, "y":3},
+ {"label":"K33 (B3,D1)", "x":3.25, "y":3},
+ {"label":"K34 (B3,D2)", "x":4.25, "y":3},
+ {"label":"K35 (B3,D3)", "x":5.25, "y":3},
+ {"label":"K36 (B3,D4)", "x":6.25, "y":3},
+ {"label":"K37 (B3,D5)", "x":7.25, "y":3},
+ {"label":"K38 (B3,D6)", "x":8.25, "y":3},
+ {"label":"K39 (B3,D7)", "x":9.25, "y":3},
+ {"label":"K3A (B3,F0)", "x":10.25, "y":3},
+ {"label":"K3B (B3,F1)", "x":11.25, "y":3},
+ {"label":"K3D (B3,F5)", "x":12.25, "y":3, "w":1.75},
+ {"label":"K3E (B3,F6)", "x":14, "y":3},
+ {"label":"K3F (B3,F7)", "x":15, "y":3},
+
+ {"label":"K40 (B4,C6)", "x":0, "y":4, "w":1.25},
+ {"label":"K41 (B4,C7)", "x":1.25, "y":4, "w":1.25},
+ {"label":"K43 (B4,D1)", "x":2.5, "y":4, "w":1.25},
+ {"label":"K46 (B4,D4)", "x":3.75, "y":4, "w":6.25},
+ {"label":"K4A (B4,F0)", "x":10, "y":4, "w":1.25},
+ {"label":"K4B (B4,F1)", "x":11.25, "y":4, "w":1.25},
+ {"label":"K4D (B4,F5)", "x":13, "y":4},
+ {"label":"K4E (B4,F6)", "x":14, "y":4},
+ {"label":"K4F (B4,F7)", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_ansi_blocker_split_bs": {
+ "layout": [
+ {"label":"K00 (B0,C6)", "x":0, "y":0},
+ {"label":"K01 (B0,C7)", "x":1, "y":0},
+ {"label":"K02 (B0,D0)", "x":2, "y":0},
+ {"label":"K03 (B0,D1)", "x":3, "y":0},
+ {"label":"K04 (B0,D2)", "x":4, "y":0},
+ {"label":"K05 (B0,D3)", "x":5, "y":0},
+ {"label":"K06 (B0,D4)", "x":6, "y":0},
+ {"label":"K07 (B0,D5)", "x":7, "y":0},
+ {"label":"K08 (B0,D6)", "x":8, "y":0},
+ {"label":"K09 (B0,D7)", "x":9, "y":0},
+ {"label":"K0A (B0,F0)", "x":10, "y":0},
+ {"label":"K0B (B0,F1)", "x":11, "y":0},
+ {"label":"K0C (B0,F4)", "x":12, "y":0},
+ {"label":"K0D (B0,F5)", "x":13, "y":0},
+ {"label":"K0E (B0,F6)", "x":14, "y":0},
+ {"label":"K0F (B0,F7)", "x":15, "y":0},
+
+ {"label":"K10 (B1,C6)", "x":0, "y":1, "w":1.5},
+ {"label":"K12 (B1,D0)", "x":1.5, "y":1},
+ {"label":"K13 (B1,D1)", "x":2.5, "y":1},
+ {"label":"K14 (B1,D2)", "x":3.5, "y":1},
+ {"label":"K15 (B1,D3)", "x":4.5, "y":1},
+ {"label":"K16 (B1,D4)", "x":5.5, "y":1},
+ {"label":"K17 (B1,D5)", "x":6.5, "y":1},
+ {"label":"K18 (B1,D6)", "x":7.5, "y":1},
+ {"label":"K19 (B1,D7)", "x":8.5, "y":1},
+ {"label":"K1A (B1,F0)", "x":9.5, "y":1},
+ {"label":"K1B (B1,F1)", "x":10.5, "y":1},
+ {"label":"K1C (B1,F4)", "x":11.5, "y":1},
+ {"label":"K1D (B1,F5)", "x":12.5, "y":1},
+ {"label":"K1E (B1,F6)", "x":13.5, "y":1, "w":1.5},
+ {"label":"K1F (B1,F7)", "x":15, "y":1},
+
+ {"label":"K20 (B2,C6)", "x":0, "y":2, "w":1.75},
+ {"label":"K22 (B2,D0)", "x":1.75, "y":2},
+ {"label":"K23 (B2,D1)", "x":2.75, "y":2},
+ {"label":"K24 (B2,D2)", "x":3.75, "y":2},
+ {"label":"K25 (B2,D3)", "x":4.75, "y":2},
+ {"label":"K26 (B2,D4)", "x":5.75, "y":2},
+ {"label":"K27 (B2,D5)", "x":6.75, "y":2},
+ {"label":"K28 (B2,D6)", "x":7.75, "y":2},
+ {"label":"K29 (B2,D7)", "x":8.75, "y":2},
+ {"label":"K2A (B2,F0)", "x":9.75, "y":2},
+ {"label":"K2B (B2,F1)", "x":10.75, "y":2},
+ {"label":"K2C (B2,F4)", "x":11.75, "y":2},
+ {"label":"K2E (B2,F6)", "x":12.75, "y":2, "w":2.25},
+ {"label":"K2F (B2,F7)", "x":15, "y":2},
+
+ {"label":"K30 (B3,C6)", "x":0, "y":3, "w":2.25},
+ {"label":"K32 (B3,D0)", "x":2.25, "y":3},
+ {"label":"K33 (B3,D1)", "x":3.25, "y":3},
+ {"label":"K34 (B3,D2)", "x":4.25, "y":3},
+ {"label":"K35 (B3,D3)", "x":5.25, "y":3},
+ {"label":"K36 (B3,D4)", "x":6.25, "y":3},
+ {"label":"K37 (B3,D5)", "x":7.25, "y":3},
+ {"label":"K38 (B3,D6)", "x":8.25, "y":3},
+ {"label":"K39 (B3,D7)", "x":9.25, "y":3},
+ {"label":"K3A (B3,F0)", "x":10.25, "y":3},
+ {"label":"K3B (B3,F1)", "x":11.25, "y":3},
+ {"label":"K3D (B3,F5)", "x":12.25, "y":3, "w":1.75},
+ {"label":"K3E (B3,F6)", "x":14, "y":3},
+ {"label":"K3F (B3,F7)", "x":15, "y":3},
+
+ {"label":"K40 (B4,C6)", "x":0, "y":4, "w":1.25},
+ {"label":"K41 (B4,C7)", "x":1.25, "y":4, "w":1.25},
+ {"label":"K43 (B4,D1)", "x":2.5, "y":4, "w":1.25},
+ {"label":"K46 (B4,D4)", "x":3.75, "y":4, "w":6.25},
+ {"label":"K4A (B4,F0)", "x":10, "y":4, "w":1.25},
+ {"label":"K4B (B4,F1)", "x":11.25, "y":4, "w":1.25},
+ {"label":"K4D (B4,F5)", "x":13, "y":4},
+ {"label":"K4E (B4,F6)", "x":14, "y":4},
+ {"label":"K4F (B4,F7)", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_iso_blocker": {
+ "layout": [
+ {"label":"K00 (B0,C6)", "x":0, "y":0},
+ {"label":"K01 (B0,C7)", "x":1, "y":0},
+ {"label":"K02 (B0,D0)", "x":2, "y":0},
+ {"label":"K03 (B0,D1)", "x":3, "y":0},
+ {"label":"K04 (B0,D2)", "x":4, "y":0},
+ {"label":"K05 (B0,D3)", "x":5, "y":0},
+ {"label":"K06 (B0,D4)", "x":6, "y":0},
+ {"label":"K07 (B0,D5)", "x":7, "y":0},
+ {"label":"K08 (B0,D6)", "x":8, "y":0},
+ {"label":"K09 (B0,D7)", "x":9, "y":0},
+ {"label":"K0A (B0,F0)", "x":10, "y":0},
+ {"label":"K0B (B0,F1)", "x":11, "y":0},
+ {"label":"K0C (B0,F4)", "x":12, "y":0},
+ {"label":"K0D (B0,F5)", "x":13, "y":0, "w":2},
+ {"label":"K0F (B0,F7)", "x":15, "y":0},
+
+ {"label":"K10 (B1,C6)", "x":0, "y":1, "w":1.5},
+ {"label":"K12 (B1,D0)", "x":1.5, "y":1},
+ {"label":"K13 (B1,D1)", "x":2.5, "y":1},
+ {"label":"K14 (B1,D2)", "x":3.5, "y":1},
+ {"label":"K15 (B1,D3)", "x":4.5, "y":1},
+ {"label":"K16 (B1,D4)", "x":5.5, "y":1},
+ {"label":"K17 (B1,D5)", "x":6.5, "y":1},
+ {"label":"K18 (B1,D6)", "x":7.5, "y":1},
+ {"label":"K19 (B1,D7)", "x":8.5, "y":1},
+ {"label":"K1A (B1,F0)", "x":9.5, "y":1},
+ {"label":"K1B (B1,F1)", "x":10.5, "y":1},
+ {"label":"K1C (B1,F4)", "x":11.5, "y":1},
+ {"label":"K1D (B1,F5)", "x":12.5, "y":1},
+ {"label":"K1F (B1,F7)", "x":15, "y":1},
+
+ {"label":"K20 (B2,C6)", "x":0, "y":2, "w":1.75},
+ {"label":"K22 (B2,D0)", "x":1.75, "y":2},
+ {"label":"K23 (B2,D1)", "x":2.75, "y":2},
+ {"label":"K24 (B2,D2)", "x":3.75, "y":2},
+ {"label":"K25 (B2,D3)", "x":4.75, "y":2},
+ {"label":"K26 (B2,D4)", "x":5.75, "y":2},
+ {"label":"K27 (B2,D5)", "x":6.75, "y":2},
+ {"label":"K28 (B2,D6)", "x":7.75, "y":2},
+ {"label":"K29 (B2,D7)", "x":8.75, "y":2},
+ {"label":"K2A (B2,F0)", "x":9.75, "y":2},
+ {"label":"K2B (B2,F1)", "x":10.75, "y":2},
+ {"label":"K2C (B2,F4)", "x":11.75, "y":2},
+ {"label":"K2E (B2,F6)", "x":12.75, "y":2},
+ {"label":"K1E (B1,F6)", "x":13.75, "y":1, "w":1.25, "h":2},
+ {"label":"K2F (B2,F7)", "x":15, "y":2},
+
+ {"label":"K30 (B3,C6)", "x":0, "y":3, "w":1.25},
+ {"label":"K31 (B3,C7)", "x":1.25, "y":3},
+ {"label":"K32 (B3,D0)", "x":2.25, "y":3},
+ {"label":"K33 (B3,D1)", "x":3.25, "y":3},
+ {"label":"K34 (B3,D2)", "x":4.25, "y":3},
+ {"label":"K35 (B3,D3)", "x":5.25, "y":3},
+ {"label":"K36 (B3,D4)", "x":6.25, "y":3},
+ {"label":"K37 (B3,D5)", "x":7.25, "y":3},
+ {"label":"K38 (B3,D6)", "x":8.25, "y":3},
+ {"label":"K39 (B3,D7)", "x":9.25, "y":3},
+ {"label":"K3A (B3,F0)", "x":10.25, "y":3},
+ {"label":"K3B (B3,F1)", "x":11.25, "y":3},
+ {"label":"K3D (B3,F5)", "x":12.25, "y":3, "w":1.75},
+ {"label":"K3E (B3,F6)", "x":14, "y":3},
+ {"label":"K3F (B3,F7)", "x":15, "y":3},
+
+ {"label":"K40 (B4,C6)", "x":0, "y":4, "w":1.25},
+ {"label":"K41 (B4,C7)", "x":1.25, "y":4, "w":1.25},
+ {"label":"K43 (B4,D1)", "x":2.5, "y":4, "w":1.25},
+ {"label":"K46 (B4,D4)", "x":3.75, "y":4, "w":6.25},
+ {"label":"K4A (B4,F0)", "x":10, "y":4, "w":1.25},
+ {"label":"K4B (B4,F1)", "x":11.25, "y":4, "w":1.25},
+ {"label":"K4D (B4,F5)", "x":13, "y":4},
+ {"label":"K4E (B4,F6)", "x":14, "y":4},
+ {"label":"K4F (B4,F7)", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_iso_blocker_split_bs": {
+ "layout": [
+ {"label":"K00 (B0,C6)", "x":0, "y":0},
+ {"label":"K01 (B0,C7)", "x":1, "y":0},
+ {"label":"K02 (B0,D0)", "x":2, "y":0},
+ {"label":"K03 (B0,D1)", "x":3, "y":0},
+ {"label":"K04 (B0,D2)", "x":4, "y":0},
+ {"label":"K05 (B0,D3)", "x":5, "y":0},
+ {"label":"K06 (B0,D4)", "x":6, "y":0},
+ {"label":"K07 (B0,D5)", "x":7, "y":0},
+ {"label":"K08 (B0,D6)", "x":8, "y":0},
+ {"label":"K09 (B0,D7)", "x":9, "y":0},
+ {"label":"K0A (B0,F0)", "x":10, "y":0},
+ {"label":"K0B (B0,F1)", "x":11, "y":0},
+ {"label":"K0C (B0,F4)", "x":12, "y":0},
+ {"label":"K0D (B0,F5)", "x":13, "y":0},
+ {"label":"K0E (B0,F6)", "x":14, "y":0},
+ {"label":"K0F (B0,F7)", "x":15, "y":0},
+
+ {"label":"K10 (B1,C6)", "x":0, "y":1, "w":1.5},
+ {"label":"K12 (B1,D0)", "x":1.5, "y":1},
+ {"label":"K13 (B1,D1)", "x":2.5, "y":1},
+ {"label":"K14 (B1,D2)", "x":3.5, "y":1},
+ {"label":"K15 (B1,D3)", "x":4.5, "y":1},
+ {"label":"K16 (B1,D4)", "x":5.5, "y":1},
+ {"label":"K17 (B1,D5)", "x":6.5, "y":1},
+ {"label":"K18 (B1,D6)", "x":7.5, "y":1},
+ {"label":"K19 (B1,D7)", "x":8.5, "y":1},
+ {"label":"K1A (B1,F0)", "x":9.5, "y":1},
+ {"label":"K1B (B1,F1)", "x":10.5, "y":1},
+ {"label":"K1C (B1,F4)", "x":11.5, "y":1},
+ {"label":"K1D (B1,F5)", "x":12.5, "y":1},
+ {"label":"K1F (B1,F7)", "x":15, "y":1},
+
+ {"label":"K20 (B2,C6)", "x":0, "y":2, "w":1.75},
+ {"label":"K22 (B2,D0)", "x":1.75, "y":2},
+ {"label":"K23 (B2,D1)", "x":2.75, "y":2},
+ {"label":"K24 (B2,D2)", "x":3.75, "y":2},
+ {"label":"K25 (B2,D3)", "x":4.75, "y":2},
+ {"label":"K26 (B2,D4)", "x":5.75, "y":2},
+ {"label":"K27 (B2,D5)", "x":6.75, "y":2},
+ {"label":"K28 (B2,D6)", "x":7.75, "y":2},
+ {"label":"K29 (B2,D7)", "x":8.75, "y":2},
+ {"label":"K2A (B2,F0)", "x":9.75, "y":2},
+ {"label":"K2B (B2,F1)", "x":10.75, "y":2},
+ {"label":"K2C (B2,F4)", "x":11.75, "y":2},
+ {"label":"K2E (B2,F6)", "x":12.75, "y":2},
+ {"label":"K1E (B1,F6)", "x":13.75, "y":1, "w":1.25, "h":2},
+ {"label":"K2F (B2,F7)", "x":15, "y":2},
+
+ {"label":"K30 (B3,C6)", "x":0, "y":3, "w":1.25},
+ {"label":"K31 (B3,C7)", "x":1.25, "y":3},
+ {"label":"K32 (B3,D0)", "x":2.25, "y":3},
+ {"label":"K33 (B3,D1)", "x":3.25, "y":3},
+ {"label":"K34 (B3,D2)", "x":4.25, "y":3},
+ {"label":"K35 (B3,D3)", "x":5.25, "y":3},
+ {"label":"K36 (B3,D4)", "x":6.25, "y":3},
+ {"label":"K37 (B3,D5)", "x":7.25, "y":3},
+ {"label":"K38 (B3,D6)", "x":8.25, "y":3},
+ {"label":"K39 (B3,D7)", "x":9.25, "y":3},
+ {"label":"K3A (B3,F0)", "x":10.25, "y":3},
+ {"label":"K3B (B3,F1)", "x":11.25, "y":3},
+ {"label":"K3D (B3,F5)", "x":12.25, "y":3, "w":1.75},
+ {"label":"K3E (B3,F6)", "x":14, "y":3},
+ {"label":"K3F (B3,F7)", "x":15, "y":3},
+
+ {"label":"K40 (B4,C6)", "x":0, "y":4, "w":1.25},
+ {"label":"K41 (B4,C7)", "x":1.25, "y":4, "w":1.25},
+ {"label":"K43 (B4,D1)", "x":2.5, "y":4, "w":1.25},
+ {"label":"K46 (B4,D4)", "x":3.75, "y":4, "w":6.25},
+ {"label":"K4A (B4,F0)", "x":10, "y":4, "w":1.25},
+ {"label":"K4B (B4,F1)", "x":11.25, "y":4, "w":1.25},
+ {"label":"K4D (B4,F5)", "x":13, "y":4},
+ {"label":"K4E (B4,F6)", "x":14, "y":4},
+ {"label":"K4F (B4,F7)", "x":15, "y":4}
+ ]
+ }
+ },
+ "meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
+}
diff --git a/keyboards/ft/mars65/keymaps/default/keymap.c b/keyboards/ft/mars65/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c3fbf9cc3f
--- /dev/null
+++ b/keyboards/ft/mars65/keymaps/default/keymap.c
@@ -0,0 +1,25 @@
+// Copyright 2022 wonderbeel (https://github.com/wonderbeel)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#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_GRV, 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_NLCK, KC_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), 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, _______, QK_BOOT,
+ BL_TOGG, BL_DEC, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______,
+ _______, _______, _______, _______, _______, _______, _______, RGB_SAI, RGB_VAD, RGB_SAD
+ ),
+
+};
+
diff --git a/keyboards/ft/mars65/keymaps/via/keymap.c b/keyboards/ft/mars65/keymaps/via/keymap.c
new file mode 100644
index 0000000000..c3fbf9cc3f
--- /dev/null
+++ b/keyboards/ft/mars65/keymaps/via/keymap.c
@@ -0,0 +1,25 @@
+// Copyright 2022 wonderbeel (https://github.com/wonderbeel)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#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_GRV, 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_NLCK, KC_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), 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, _______, QK_BOOT,
+ BL_TOGG, BL_DEC, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______,
+ _______, _______, _______, _______, _______, _______, _______, RGB_SAI, RGB_VAD, RGB_SAD
+ ),
+
+};
+
diff --git a/keyboards/ft/mars65/keymaps/via/rules.mk b/keyboards/ft/mars65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/ft/mars65/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/ft/mars65/mars65.c b/keyboards/ft/mars65/mars65.c
new file mode 100644
index 0000000000..d4fbf86d5a
--- /dev/null
+++ b/keyboards/ft/mars65/mars65.c
@@ -0,0 +1,8 @@
+// Copyright 2022 wonderbeel (https://github.com/wonderbeel)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "mars65.h"
+
+// generated by KBFirmware JSON to QMK Parser
+// https://noroadsleft.github.io/kbf_qmk_converter/
+
diff --git a/keyboards/ft/mars65/mars65.h b/keyboards/ft/mars65/mars65.h
new file mode 100644
index 0000000000..8627ad09bb
--- /dev/null
+++ b/keyboards/ft/mars65/mars65.h
@@ -0,0 +1,111 @@
+// Copyright 2022 wonderbeel (https://github.com/wonderbeel)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+/* ANSI
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───────â”
+ * │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 │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │20 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2E │2F │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │3E │3F │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │43 │46 │4A │4B │ │4D │4E │4F │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+
+
+/* ISO
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───────â”
+ * │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 │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠├───┤
+ * │20 │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 │3D │3E │3F │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │43 │46 │4A │4B │ │4D │4E │4F │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+
+#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, K2E, K2F, \
+ K30, 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, 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, XXX, K2E, K2F }, \
+ { K30, 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 }, \
+}
+
+#define LAYOUT_65_ansi_blocker( \
+ 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, K2E, 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, XXX, 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, XXX, K2E, 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( \
+ 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, K2E, 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, XXX, K2E, 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_iso_blocker( \
+ 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, K2E, K1E, K2F, \
+ K30, 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, XXX, 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, XXX, K2E, K2F }, \
+ { K30, 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 }, \
+}
+
+#define LAYOUT_65_iso_blocker_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, K2E, K1E, K2F, \
+ K30, 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, XXX, K2E, K2F }, \
+ { K30, 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/ft/mars65/readme.md b/keyboards/ft/mars65/readme.md
new file mode 100644
index 0000000000..6853994ee4
--- /dev/null
+++ b/keyboards/ft/mars65/readme.md
@@ -0,0 +1,21 @@
+# Mars 6.5
+
+65% Keyboard with in switch backlight and RGB Underglow.
+
+![Mars 6.5 image](https://i.imgur.com/cg5qADrh.jpg)
+
+* Keyboard Maintainer: [wonderbeel](https://github.com/wonderbeel)
+* Hardware Supported: Mars 6.5 PCB
+* Hardware Availability: [Group Buy now completed](https://geekhack.org/index.php?topic=98601.0)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ft/mars65:default
+
+Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
+
+ make ft/mars65:default:flash
+
+**Reset Key:** Hold down the key located at `K00`, commonly programmed as `Pause/Break` 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/ft/mars65/rules.mk b/keyboards/ft/mars65/rules.mk
new file mode 100644
index 0000000000..f3e472d0cd
--- /dev/null
+++ b/keyboards/ft/mars65/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 = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+BLUETOOTH_ENABLE = no # Enable Bluetooth
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = yes # Reduce firmware size
+
+# generated by KBFirmware JSON to QMK Parser
+# https://noroadsleft.github.io/kbf_qmk_converter/
+
diff --git a/keyboards/ft/mars80/config.h b/keyboards/ft/mars80/config.h
index 1670044315..d922620dde 100644
--- a/keyboards/ft/mars80/config.h
+++ b/keyboards/ft/mars80/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x422D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER FT
-#define PRODUCT Mars 8.0
-
#define RGBLED_NUM 20
#define MATRIX_ROWS 7
@@ -32,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 0 1 2 3 4 5 6 7 8 9 A B C D
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B5, B6, B7 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2 }
-#define UNUSED_PINS {}
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/ft/mars80/info.json b/keyboards/ft/mars80/info.json
index 060e7eee65..091e3a94c0 100644
--- a/keyboards/ft/mars80/info.json
+++ b/keyboards/ft/mars80/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mars 8.0",
+ "manufacturer": "FT",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x422D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"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, "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}]
diff --git a/keyboards/function96/v1/config.h b/keyboards/function96/v1/config.h
index eaa7183843..e3f603cd7c 100644
--- a/keyboards/function96/v1/config.h
+++ b/keyboards/function96/v1/config.h
@@ -19,14 +19,6 @@ 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 0x672A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER JTM
-#define PRODUCT function96v1
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 19
@@ -43,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F1, F0, C15, C14, C13, B9 }
#define MATRIX_COL_PINS { A3, A4, A5, A6, A7, B0, B1, B2, B10, B12, A13, A14, A15, B3, B4, B5, B6, B7, B8}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/function96/v1/info.json b/keyboards/function96/v1/info.json
index 45f987a355..92b016c165 100644
--- a/keyboards/function96/v1/info.json
+++ b/keyboards/function96/v1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "function96v1",
+ "manufacturer": "JTM",
"url": "jtmkeebdesign@gmail.com",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x672A",
+ "device_version": "0.0.1"
+ },
"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":"Print", "x":13, "y":0}, {"label":"Del", "x":14, "y":0}, {"x":15, "y":0}, {"x":16, "y":0}, {"x":17, "y":0}, {"x":18, "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", "x":13, "y":1, "w":2}, {"x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"-", "x":18, "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":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"+", "x":18, "y":2, "h":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":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"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":"\u2191", "x":14, "y":4}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"x":18, "y":4, "h":2}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":2.25}, {"x":6, "y":5, "w":1.25}, {"x":7.25, "y":5, "w":2.75}, {"x":10, "y":5, "w":1.25}, {"x":11.25, "y":5, "w":1.25}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"x":17, "y":5}]
diff --git a/keyboards/function96/v2/config.h b/keyboards/function96/v2/config.h
index b0e986785a..5f44ea397e 100644
--- a/keyboards/function96/v2/config.h
+++ b/keyboards/function96/v2/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x2A34 // JT , JTMDesign
-#define PRODUCT_ID 0x672B
-#define DEVICE_VER 0x0002
-#define MANUFACTURER JTMDesign
-#define PRODUCT function96v2
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 19
@@ -43,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { A9, A8, B15, B14, B13, B12 }
#define MATRIX_COL_PINS { A3, A4, A5, A6, A7, B0, B1, B2, B10, B11, A14, A15, B3, B4, B5, B6, B7, B8, B9}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/function96/v2/info.json b/keyboards/function96/v2/info.json
index d494f617ea..7bb6adfcad 100644
--- a/keyboards/function96/v2/info.json
+++ b/keyboards/function96/v2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "function96v2",
+ "manufacturer": "JTMDesign",
"url": "jtmkeebdesign@gmail.com",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x2A34",
+ "pid": "0x672B",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/fungo/fungo.c b/keyboards/fungo/fungo.c
new file mode 100644
index 0000000000..1446234b36
--- /dev/null
+++ b/keyboards/fungo/fungo.c
@@ -0,0 +1,18 @@
+/* Copyright 2022 bojiguard (@bojiguard)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ #include "fungo.h"
+
diff --git a/keyboards/fungo/fungo.h b/keyboards/fungo/fungo.h
new file mode 100644
index 0000000000..dd267c3463
--- /dev/null
+++ b/keyboards/fungo/fungo.h
@@ -0,0 +1,23 @@
+/* Copyright 2022 bojiguard (@bojiguard)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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_fungo_rev1
+ #include "rev1.h"
+#endif
diff --git a/keyboards/fungo/keymaps/default/config.h b/keyboards/fungo/keymaps/default/config.h
new file mode 100644
index 0000000000..c6d778d109
--- /dev/null
+++ b/keyboards/fungo/keymaps/default/config.h
@@ -0,0 +1,24 @@
+/* This is the c configuration file for the keymap
+ * Copyright 2022 bojiguard (@bojiguard)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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
+
diff --git a/keyboards/fungo/keymaps/default/keymap.c b/keyboards/fungo/keymaps/default/keymap.c
new file mode 100644
index 0000000000..4c48b6467f
--- /dev/null
+++ b/keyboards/fungo/keymaps/default/keymap.c
@@ -0,0 +1,156 @@
+/* Copyright 2022 bojiguard (@bojiguard)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 {
+ SAM1,
+ SAM2,
+ SAM3,
+ SAM4,
+ BASE,
+ F3LAY,
+ F4LAY,
+};
+
+
+
+
+
+#define SFCTLNO MT(MOD_LCTL|MOD_LSFT,KC_NO)
+
+#define SFCT_S MT(MOD_LCTL|MOD_LSFT,KC_S)
+#define CT_D MT(MOD_LCTL,KC_D)
+#define SF_F MT(MOD_LSFT,KC_F)
+
+#define SF_J MT(MOD_RSFT,KC_J)
+#define CT_K MT(MOD_RCTL,KC_K)
+
+#define MTC_F7 MT(MOD_LCTL|MOD_LSFT, KC_F7)
+#define MTC_F8 MT(MOD_LCTL, KC_F8)
+#define MTC_F9 MT(MOD_LSFT, KC_F9)
+
+#define MTC_K MT(MOD_RCTL, KC_K)
+#define MTC_J MT(MOD_RSFT, KC_J)
+
+#define MTC_8 MT(MOD_RCTL, KC_8)
+#define MTC_7 MT(MOD_RSFT, KC_7)
+
+//#define MTLC_8 MT(MOD_LCTL, KC_8)
+#define MTLC_9 MT(MOD_LSFT, KC_9)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* BASE
+ * ,------------------------------------------------. ,------------------------------------------------.
+ * | ~ | 1 | 2 | 3 | 4 | 5 | ESC | | BS | 6 | 7 | 8 | 9 | [ | \ |
+ * |------+------+------+------+------+------+------| |-------------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | ` | | \ | Y | U | I | O | P | Tab |
+ * |------+------+------+------+------+------+------| |-------------+------+------+------+------+------|
+ * | ctrl | A | S | D | F | G | [ | | ] | H | J | K | L | ; | ctrl |
+ * |------+------+------+------+------+------+------| |------|------+------+------+------+------+------|
+ * | shift| Z | X | C | V | B | 3 | - | 7 || 1 | 2 | = | 4 | N | M | , | . |shift |
+ * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ * | 1 | 2 | 3 | 4 | alt | spc | MO(1) |enter ||enter | MO(0) | spc | alt | 1 | 2 | 3 | 4 |
+ * `------------------------------------------------' ------------------------------------------------'
+ */
+
+ [BASE] = LAYOUT_fungo_split_num(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, KC_BSPC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
+ 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_TAB,
+ KC_NO, KC_A, SFCT_S, CT_D, SF_F, KC_G, KC_LBRC, KC_RBRC, KC_H, MTC_J, MTC_K, KC_L, KC_SCLN, KC_NO,
+ KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BSLS, LM(F3LAY, MOD_LSFT), KC_NO, KC_NO, LM(F3LAY, MOD_RSFT), KC_QUOT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RCTL,
+ KC_NO, TT(SAM1), KC_NO, KC_LALT, KC_LSHIFT, KC_SPC, MO(F3LAY), KC_ENT, KC_ENT, TT(F3LAY), KC_SPC, KC_RSHIFT, KC_RALT, KC_NO, TT(SAM1),TG(F4LAY)
+ ),
+
+ /* BASE
+ * ,------------------------------------------------. ,------------------------------------------------.
+ * | ~ | 1 | 2 | 3 | 4 | 5 | ESC | | BS | 6 | 7 | 8 | 9 | [ | \ |
+ * |------+------+------+------+------+------+------| |-------------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | ` | | DEL | HOME | UP | END | O | P | Tab |
+ * |------+------+------+------+------+------+------| |-------------+------+------+------+------+------|
+ * | ctrl | A | S | D | F | G | [ | | INS | LEFT | DOWN | RIGHT| L | ; | ctrl |
+ * |------+------+------+------+------+------+------| |------|------+------+------+------+------+------|
+ * | shift| Z | X | ctr+C|ctr+V | B | 3 | - | 7 || 1 | 2 | NO | PGUP | NO | PGDN | , | . |shift |
+ * |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
+ * | 1 | 2 | 3 | 4 | alt | spc | MO(1) |enter ||enter | MO(0) | spc | alt | 1 | 2 | 3 | 4 |
+ * `------------------------------------------------' ------------------------------------------------'
+ */
+
+ [F3LAY] = LAYOUT_fungo_split_num(
+ KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_ESC, KC_BSPC, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
+ KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_CAPS, KC_CAPS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TAB,
+ KC_NO, KC_NO, SFCTLNO, KC_LCTL, KC_LSFT, KC_PAUS, KC_PSCR, KC_BSPC, KC_DEL, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO,
+ KC_LCTL, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_NO, KC_NO, LM(F3LAY, MOD_LSFT), KC_NO, KC_NO, LM(F3LAY, MOD_RSFT), KC_NO, KC_INS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_RCTL,
+ KC_NO, KC_NO, KC_NO, KC_LALT, KC_LSHIFT, KC_SPC, MO(F3LAY), KC_ENT, KC_ENT, TT(F3LAY), KC_SPC, KC_RSHIFT, KC_RALT, KC_NO, KC_NO, TG(F4LAY)
+ ),
+
+
+ [F4LAY] = LAYOUT_fungo_split_num(
+ KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_ESC, KC_BSPC, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
+ KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_CAPS, KC_CAPS, KC_DEL, KC_HOME, KC_UP, KC_END, KC_NO, KC_TAB,
+ KC_NO, KC_NO, SFCTLNO, KC_LCTL, KC_LSFT, KC_PAUS, KC_PSCR, KC_BSPC, KC_INS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO, KC_NO,
+ KC_LCTL, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_NO, KC_NO, LM(F3LAY, MOD_LSFT), KC_NO, KC_NO, LM(F3LAY, MOD_RSFT), KC_NO, KC_INS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_RCTL,
+ KC_NO, KC_NO, KC_NO, KC_LALT, KC_LSHIFT, KC_SPC, MO(F3LAY), KC_ENT, KC_ENT, TT(F3LAY), KC_SPC, KC_RSHIFT, KC_RALT, KC_NO, KC_NO, TG(F4LAY)
+ ),
+
+ /*
+ [TEST] = LAYOUT_fungo_split_num(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, KC_BSPC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
+ 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_TAB,
+ KC_LSFT, 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_RSFT,
+ KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_BSLS, KC_LCTL, KC_NO, KC_NO, TG(F4LAY), KC_QUOT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RCTL,
+ KC_NO, KC_NO, KC_NO, KC_LALT, KC_LSHIFT, KC_SPC, MO(F3LAY), KC_ENT, KC_ENT, TT(F3LAY), KC_SPC, KC_RSHIFT, KC_RALT, KC_NO, KC_NO, KC_NO
+ ),
+ */
+
+ //--------------------------------------------------------NEW-----------------------------------------------
+ //SAM1ì„ ê¸°ë°˜ìœ¼ë¡œ 새로운 모드
+ [SAM1] = LAYOUT_fungo_split_num(
+ KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC, KC_ESC, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO,
+ KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NO,
+ KC_TAB, KC_A, SFCT_S, CT_D, SF_F, KC_G, KC_CAPS, KC_CAPS, KC_H, MTC_J, MTC_K, KC_L, KC_SCLN, KC_TAB,
+ KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, TT(SAM3), KC_NO, KC_NO, TT(SAM2), KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RCTL,
+ KC_NO, TT(SAM1), KC_NO, KC_LALT, KC_SPC, TT(SAM2), KC_ENT, MO(SAM4), KC_NO, KC_ENT, TT(SAM3), KC_SPC, KC_RALT, KC_NO, TT(SAM1), KC_NO
+ ),
+
+ [SAM3] = LAYOUT_fungo_split_num(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ESC, KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_BSPC, KC_BSPC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_NO,
+ KC_TAB, KC_6, KC_7, KC_8, MTLC_9, KC_0, KC_CAPS, KC_CAPS, KC_6, MTC_7, MTC_8, KC_9, KC_0, KC_TAB,
+ KC_LCTL, KC_PSLS, KC_PAST, KC_MINS, KC_PPLS, KC_EQL, KC_DOT, TT(SAM3), KC_NO, KC_NO, TT(SAM2), KC_DOT, KC_EQL, KC_PPLS, KC_PMNS, KC_PAST, KC_PSLS, KC_RCTL,
+ KC_NO, TT(SAM1), KC_NO, KC_LALT, KC_SPC, TT(SAM2), KC_ENT, MO(SAM4), KC_NO, KC_ENT, TT(SAM3), KC_SPC, KC_RALT, KC_NO, TT(SAM1), KC_NO
+ ),
+
+ [SAM2] = LAYOUT_fungo_split_num(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ESC, KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_BSPC, KC_DEL, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO,
+ KC_TAB, KC_F6, MTC_F7, MTC_F8, MTC_F9, KC_F10, KC_F12, KC_CAPS, KC_INS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TAB,
+ KC_LCTL, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), KC_NO, KC_NO, TT(SAM3), KC_NO, KC_NO, TT(SAM2), KC_NO, KC_BSLS, KC_QUOT, KC_LBRC, KC_RBRC, KC_GRV, KC_RCTL,
+ KC_NO, TT(SAM1), KC_NO, KC_LALT, KC_SPC, TT(SAM2), KC_ENT, MO(SAM4), KC_NO, KC_ENT, TT(SAM3), KC_SPC, KC_RALT, KC_NO, TT(SAM1), KC_NO
+ ),
+ [SAM4] = LAYOUT_fungo_split_num(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ESC, KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_BSPC, KC_ACL0, KC_BTN1, KC_MS_U, KC_BTN2, KC_NO, KC_NO,
+ KC_TAB, KC_F6, MTC_F7, MTC_F8, MTC_F9, KC_F10, KC_F12, KC_CAPS, KC_ACL1, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_TAB,
+ KC_NO, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_NO, KC_NO, TT(SAM3), KC_NO, KC_NO, TT(SAM2), KC_NO, KC_ACL2, KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, KC_RCTL,
+ KC_NO, TT(SAM1), KC_NO, KC_LALT, KC_SPC, TT(SAM2), KC_ENT, MO(SAM4), KC_NO, KC_ENT, TT(SAM3), KC_SPC, KC_RALT, KC_NO, TT(SAM1), KC_NO
+ ),
+};
+
+
+
diff --git a/keyboards/fungo/readme.md b/keyboards/fungo/readme.md
new file mode 100644
index 0000000000..fffd820d60
--- /dev/null
+++ b/keyboards/fungo/readme.md
@@ -0,0 +1,28 @@
+# fungo split keyboard (fungo)
+
+
+A split keyboard for my hands.
+
+* Keyboard Maintainer: [bojiguard](https://github.com/bojiguard/)
+* Hardware Supported: Pro Micro, elite-c, nicenano
+* Hardware Availability: [fungo split keyboard](https://github.com/bojiguard/fungo-split-keyboard)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make fungo/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).
+
+
+## Bootloader
+
+* **Physical reset button**: Briefly press the button on the front of the PCB
+
+## Characteristics
+
+The circuits on the left and right keyboard are different.
+Hardware Information: [Document](https://github.com/bojiguard/fungo-split-keyboard)
+matrix: 5x7+3
+left : support oled
+right: support external spi connection
+all: battery switch, battery jack for nicenano
diff --git a/keyboards/fungo/rev1/config.h b/keyboards/fungo/rev1/config.h
new file mode 100644
index 0000000000..5026099f7d
--- /dev/null
+++ b/keyboards/fungo/rev1/config.h
@@ -0,0 +1,70 @@
+/* Copyright 2022 bojiguard (@bojiguard)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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"
+
+/* Use I2C or Serial, not both */
+#define USE_SERIAL
+#define SOFT_SERIAL_PIN D3 // RX8
+
+/* select keyboard master board - I2C or Serial communication master */
+#define MASTER_RIGHT
+
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 7
+
+// wiring of each half
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2}
+#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5}
+
+#define MATRIX_COL_PINS_RIGHT {F7, F6, F5, F4, B5, B4, E6}
+#define MATRIX_ROW_PINS_RIGHT { D1, D0, D4, C6, D7, D3} // TX
+
+
+
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+
+
+/*************************************/
+/** public parameter **/
+/*************************************/
+
+#define MATRIX_IO_DELAY 15 // default 30
+#define TAP_CODE_DELAY 50 // default 0, disabled
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 3
+
+/* 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 TAPPING_TOGGLE 3
+
+
diff --git a/keyboards/fungo/rev1/info.json b/keyboards/fungo/rev1/info.json
new file mode 100644
index 0000000000..cb5b7c6991
--- /dev/null
+++ b/keyboards/fungo/rev1/info.json
@@ -0,0 +1,97 @@
+{
+ "keyboard_name": "FungoSplit",
+ "manufacturer": "Fungo",
+ "url": "https://github.com/bojiguard/",
+ "maintainer": "@bojiguard",
+ "usb": {
+ "vid": "0x5892",
+ "pid": "0x1233",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_fungo_split_num": {
+ "layout": [
+ {"x":0, "y":0.375},
+ {"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":6, "y":0.5},
+ {"x":12, "y":0.5},
+ {"x":13, "y":0.25},
+ {"x":14, "y":0.125},
+ {"x":15, "y":0},
+ {"x":16, "y":0.125},
+ {"x":17, "y":0.375},
+ {"x":18, "y":0.375},
+
+ {"x":0, "y":1.375},
+ {"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":6, "y":1.5},
+ {"x":12, "y":1.5},
+ {"x":13, "y":1.25},
+ {"x":14, "y":1.125},
+ {"x":15, "y":1},
+ {"x":16, "y":1.125},
+ {"x":17, "y":1.375},
+ {"x":18, "y":1.375},
+
+ {"x":0, "y":2.375},
+ {"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":6, "y":2.5},
+ {"x":12, "y":2.5},
+ {"x":13, "y":2.25},
+ {"x":14, "y":2.125},
+ {"x":15, "y":2},
+ {"x":16, "y":2.125},
+ {"x":17, "y":2.375},
+ {"x":18, "y":2.375},
+
+ {"x":0, "y":3.375},
+ {"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":3.5},
+ {"x":7, "y":4.25},
+ {"x":8, "y":4.5},
+ {"x":10, "y":4.5},
+ {"x":11, "y":4.25},
+ {"x":12, "y":3.5},
+ {"x":13, "y":3.25},
+ {"x":14, "y":3.125},
+ {"x":15, "y":3},
+ {"x":16, "y":3.125},
+ {"x":17, "y":3.375},
+ {"x":18, "y":3.375},
+
+ {"x":0, "y":4.375},
+ {"x":1, "y":4.375},
+ {"x":2, "y":4.25},
+ {"x":3.25, "y":4.25},
+ {"x":4.5, "y":4.5},
+ {"x":5.75, "y":5},
+ {"x":7, "y":5.25},
+ {"x":8, "y":5.5},
+ {"x":10, "y":5.5},
+ {"x":11, "y":5.25},
+ {"x":12.25, "y":5},
+ {"x":13.5, "y":4.5},
+ {"x":14.75, "y":4.25},
+ {"x":16, "y":4.25},
+ {"x":17, "y":4.375},
+ {"x":18, "y":4.375}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/fungo/rev1/post_config.h b/keyboards/fungo/rev1/post_config.h
new file mode 100644
index 0000000000..16a06bf0c7
--- /dev/null
+++ b/keyboards/fungo/rev1/post_config.h
@@ -0,0 +1,30 @@
+/* Copyright 2022 bojiguard (@bojiguard)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 MK_3_SPEED
+#define MK_3_SPEED
+#endif
+
+#ifndef MOUSEKEY_INTERVAL
+#define MOUSEKEY_INTERVAL 3
+#endif
+
+#ifndef MOUSEKEY_INITIAL_SPEED
+#define MOUSEKEY_INITIAL_SPEED 20
+#endif \ No newline at end of file
diff --git a/keyboards/fungo/rev1/rev1.c b/keyboards/fungo/rev1/rev1.c
new file mode 100644
index 0000000000..5fd3a11049
--- /dev/null
+++ b/keyboards/fungo/rev1/rev1.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 bojiguard (@bojiguard)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ #include "fungo.h"
diff --git a/keyboards/fungo/rev1/rev1.h b/keyboards/fungo/rev1/rev1.h
new file mode 100644
index 0000000000..97161482ff
--- /dev/null
+++ b/keyboards/fungo/rev1/rev1.h
@@ -0,0 +1,48 @@
+/* Copyright 2022 bojiguard (@bojiguard)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "fungo.h"
+#include "quantum.h"
+
+
+
+#define LAYOUT_fungo_split_num( \
+ L00, L01, L02, L03, L04, L05, L06, R06, R05, R04, R03, R02, R01, R00, \
+ L10, L11, L12, L13, L14, L15, L16, R16, R15, R14, R13, R12, R11, R10, \
+ L20, L21, L22, L23, L24, L25, L26, R26, R25, R24, R23, R22, R21, R20, \
+ L30, L31, L32, L33, L34, L35, L36, L46, L52, R52, R46, R36, R35, R34, R33, R32, R31, R30, \
+ L50, L51, L40, L41, L42, L43, L44, L45, R45, R44, R43, R42, R41, R40, R51, R50 \
+ ) \
+ { \
+ { 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}, \
+ { L50, L51, L52, KC_NO, KC_NO, KC_NO, KC_NO}, \
+ { 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}, \
+ { KC_NO, KC_NO, KC_NO, KC_NO, R52, R51, R50}, \
+ }
+
+
+
+
diff --git a/keyboards/fungo/rev1/rules.mk b/keyboards/fungo/rev1/rules.mk
new file mode 100644
index 0000000000..4cfaca9bc3
--- /dev/null
+++ b/keyboards/fungo/rev1/rules.mk
@@ -0,0 +1,28 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina # controller pro micro
+# BOOTLOADER = atmel-dfu # controller Elite-C
+
+
+
+# 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
+KEY_LOCK_ENABLE = yes # kc_lock use
+
+
+OLED_ENABLE = no
+OLED_DRIVER = SSD1306 # OLED display
+SPLIT_KEYBOARD = yes # split type
+
diff --git a/keyboards/funky40/config.h b/keyboards/funky40/config.h
index c79a8f2da6..20e2c890a4 100644
--- a/keyboards/funky40/config.h
+++ b/keyboards/funky40/config.h
@@ -17,14 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xC4B5
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TheFourthCow
-#define PRODUCT Funky40
-
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -32,7 +24,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D4, C6, B4, B5 }
#define MATRIX_COL_PINS { D3, F5, F4, F7, B1, B6, B2, B3, D2, F6, E6, D7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/funky40/info.json b/keyboards/funky40/info.json
index ce385b76dd..9faf90c230 100644
--- a/keyboards/funky40/info.json
+++ b/keyboards/funky40/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "funky40",
+ "keyboard_name": "Funky40",
+ "manufacturer": "TheFourthCow",
"url": "",
"maintainer": "TheFourthCow",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xC4B5",
+ "device_version": "0.0.1"
+ },
"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":"Back<br>Space", "x":11, "y":0}, {"label":"Tab", "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":"Shift", "x":11, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Super", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"x":3, "y":3, "w":2}, {"label":"Del", "x":5, "y":3}, {"x":6, "y":3, "w":2}, {"label":"Left", "x":8, "y":3}, {"label":"Up", "x":9, "y":3}, {"label":"Down", "x":10, "y":3}, {"label":"Right", "x":11, "y":3}]
diff --git a/keyboards/gami_studio/lex60/config.h b/keyboards/gami_studio/lex60/config.h
index d19ecd78a0..311f355589 100644
--- a/keyboards/gami_studio/lex60/config.h
+++ b/keyboards/gami_studio/lex60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7353
-#define PRODUCT_ID 0x0160
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT Lex60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/gami_studio/lex60/info.json b/keyboards/gami_studio/lex60/info.json
index b8535c7fd9..7422287bd6 100644
--- a/keyboards/gami_studio/lex60/info.json
+++ b/keyboards/gami_studio/lex60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Gami Studio Lex60",
+ "keyboard_name": "Lex60",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "GamiStudio",
+ "usb": {
+ "vid": "0x7353",
+ "pid": "0x0160",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/gboards/butterstick/config.h b/keyboards/gboards/butterstick/config.h
index 69632cd4f7..50f23cb945 100644
--- a/keyboards/gboards/butterstick/config.h
+++ b/keyboards/gboards/butterstick/config.h
@@ -2,12 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x1337
-#define DEVICE_VER 0x0001
-#define MANUFACTURER g Heavy Industries
-#define PRODUCT Butter Stick
#define VERSION "Paula Deen"
#define DEBOUNCE 5
@@ -18,7 +12,6 @@
#define MATRIX_COLS 10
#define MATRIX_ROW_PINS { F4, F5 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5, B6, B7, C6, C7}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/gboards/butterstick/info.json b/keyboards/gboards/butterstick/info.json
index 6bfd58e594..158769dbd1 100644
--- a/keyboards/gboards/butterstick/info.json
+++ b/keyboards/gboards/butterstick/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Butter Stick",
+ "manufacturer": "g Heavy Industries",
"url": "",
"maintainer": "germ",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1337",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_butter": {
"layout": [
diff --git a/keyboards/gboards/ergotaco/config.h b/keyboards/gboards/ergotaco/config.h
index d415e77dc6..21d14144d9 100644
--- a/keyboards/gboards/ergotaco/config.h
+++ b/keyboards/gboards/ergotaco/config.h
@@ -23,13 +23,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define VERBOSE
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x1337
-#define DEVICE_VER 0x0001
-#define MANUFACTURER g Heavy Industries
-#define PRODUCT ErgoTaco
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2)
diff --git a/keyboards/gboards/ergotaco/info.json b/keyboards/gboards/ergotaco/info.json
index e7794e6ee3..bd1863288e 100644
--- a/keyboards/gboards/ergotaco/info.json
+++ b/keyboards/gboards/ergotaco/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ErgoTaco",
+ "manufacturer": "g Heavy Industries",
"url": "http://gboards.ca",
"maintainer": "germ",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1337",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/gboards/georgi/config.h b/keyboards/gboards/georgi/config.h
index f2e73da899..e3da59a781 100644
--- a/keyboards/gboards/georgi/config.h
+++ b/keyboards/gboards/georgi/config.h
@@ -30,13 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define NO_ACTION_ONESHOT
#define IGNORE_MOD_TAP_INTERRUPT
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x1337
-#define DEVICE_VER 0x0001
-#define MANUFACTURER g Heavy Industries
-#define PRODUCT Georgi
-
/* key matrix size */
#define MATRIX_ROWS 14
#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2)
diff --git a/keyboards/gboards/georgi/info.json b/keyboards/gboards/georgi/info.json
index 89d2cd883f..0bfe2a52aa 100644
--- a/keyboards/gboards/georgi/info.json
+++ b/keyboards/gboards/georgi/info.json
@@ -1,130 +1,51 @@
{
"keyboard_name": "Georgi",
+ "manufacturer": "g Heavy Industries",
"url": "http://gboards.ca",
"maintainer": "germ",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1337",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_georgi": {
"layout": [
- {
- "x": 0.05,
- "y": 0.54
- },
- {
- "x": 1.06,
- "y": 0.55
- },
- {
- "x": 2.06,
- "y": 0.29
- },
- {
- "x": 3.05,
- "y": 0.16
- },
- {
- "x": 4.06,
- "y": 0.41
- },
- {
- "x": 5.06,
- "y": 0.54
- },
- {
- "x": 7.1899999999999995,
- "y": 0.41
- },
- {
- "x": 8.2,
- "y": 0.3
- },
- {
- "x": 9.2,
- "y": 0.05
- },
- {
- "x": 10.2,
- "y": 0.29
- },
- {
- "x": 11.2,
- "y": 0.43
- },
- {
- "x": 12.2,
- "y": 0.42
- },
- {
- "x": 0.05,
- "y": 1.54
- },
- {
- "x": 1.06,
- "y": 1.54
- },
- {
- "x": 2.06,
- "y": 1.28
- },
- {
- "x": 3.05,
- "y": 1.16
- },
- {
- "x": 4.06,
- "y": 1.4
- },
- {
- "x": 5.06,
- "y": 1.54
- },
- {
- "x": 7.1899999999999995,
- "y": 1.4
- },
- {
- "x": 8.2,
- "y": 1.28
- },
- {
- "x": 9.2,
- "y": 1.04
- },
- {
- "x": 10.2,
- "y": 1.28
- },
- {
- "x": 11.2,
- "y": 1.42
- },
- {
- "x": 12.2,
- "y": 1.42
- },
- {
- "x": 3.05,
- "y": 2.67
- },
- {
- "x": 4.06,
- "y": 2.68
- },
- {
- "x": 5.06,
- "y": 2.68
- },
- {
- "x": 7.19,
- "y": 2.67
- },
- {
- "x": 8.2,
- "y": 2.67
- },
- {
- "x": 9.2,
- "y": 2.66
- }
+ {"x": 0, "y": 0.5},
+ {"x": 1, "y": 0.5},
+ {"x": 2, "y": 0.3},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0.4},
+ {"x": 5, "y": 0.5},
+
+ {"x": 7, "y": 0.5},
+ {"x": 8, "y": 0.4},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0.3},
+ {"x": 11, "y": 0.5},
+ {"x": 12, "y": 0.5},
+
+ {"x": 0, "y": 1.5},
+ {"x": 1, "y": 1.5},
+ {"x": 2, "y": 1.3},
+ {"x": 3, "y": 1},
+ {"x": 4, "y": 1.4},
+ {"x": 5, "y": 1.5},
+
+ {"x": 7, "y": 1.5},
+ {"x": 8, "y": 1.4},
+ {"x": 9, "y": 1},
+ {"x": 10, "y": 1.3},
+ {"x": 11, "y": 1.5},
+ {"x": 12, "y": 1.5},
+
+ {"x": 3, "y": 2.75},
+ {"x": 4, "y": 2.75},
+ {"x": 5, "y": 2.75},
+
+ {"x": 7, "y": 2.75},
+ {"x": 8, "y": 2.75},
+ {"x": 9, "y": 2.75}
]
}
}
diff --git a/keyboards/gboards/georgi/keymaps/colemak-dh/rules.mk b/keyboards/gboards/georgi/keymaps/colemak-dh/rules.mk
index 07394aef48..ef710269a4 100644
--- a/keyboards/gboards/georgi/keymaps/colemak-dh/rules.mk
+++ b/keyboards/gboards/georgi/keymaps/colemak-dh/rules.mk
@@ -1,12 +1,6 @@
-#----------------------------------------------------------------------------
-# make georgi:claymager:dfu
-# Make sure you have dfu-programmer installed!
-#----------------------------------------------------------------------------
-
NO_REPEAT = yes
VERBOSE = yes
KEYBOARD_SHARED_EP = yes
-CUSTOM_MATRIX = yes
STENO_LAYERS = yes
#Firmware reduction options
@@ -24,7 +18,6 @@ ONLY_QWERTY = no
# know what you're doing.
#
# No touchy, capiche?
-SRC += matrix.c i2c_master.c
ifeq ($(strip $(DEBUG_MATRIX)), yes)
OPT_DEFS += -DDEBUG_MATRIX
endif
@@ -43,3 +36,5 @@ endif
ifeq ($(strip $(STENO_LAYERS)), yes)
OPT_DEFS += -DSTENOLAYERS
endif
+
+SRC += sten.c
diff --git a/keyboards/gboards/georgi/keymaps/default-flipped/rules.mk b/keyboards/gboards/georgi/keymaps/default-flipped/rules.mk
index 90d8057c32..8f3d0419ab 100644
--- a/keyboards/gboards/georgi/keymaps/default-flipped/rules.mk
+++ b/keyboards/gboards/georgi/keymaps/default-flipped/rules.mk
@@ -1,12 +1,6 @@
-#----------------------------------------------------------------------------
-# make georgi:default:dfu
-# Make sure you have dfu-programmer installed!
-#----------------------------------------------------------------------------
-
NO_REPEAT = no
VERBOSE = yes
KEYBOARD_SHARED_EP = yes
-CUSTOM_MATRIX = yes
#Firmware reduction options
MOUSEKEY_ENABLE = yes # 1500 bytes
@@ -23,7 +17,6 @@ ONLY_QWERTY = no
# know what you're doing.
#
# No touchy, capiche?
-SRC += matrix.c i2c_master.c
ifeq ($(strip $(DEBUG_MATRIX)), yes)
OPT_DEFS += -DDEBUG_MATRIX
endif
@@ -39,3 +32,5 @@ endif
ifeq ($(strip $(NO_TAPPING)), yes)
OPT_DEFS += -DNO_ACTION_TAPPING
endif
+
+SRC += sten.c
diff --git a/keyboards/gboards/georgi/keymaps/default/rules.mk b/keyboards/gboards/georgi/keymaps/default/rules.mk
index 7bd3d7aa20..242f95fa23 100644
--- a/keyboards/gboards/georgi/keymaps/default/rules.mk
+++ b/keyboards/gboards/georgi/keymaps/default/rules.mk
@@ -1,12 +1,6 @@
-#----------------------------------------------------------------------------
-# make georgi:default:dfu
-# Make sure you have dfu-programmer installed!
-#----------------------------------------------------------------------------
-
NO_REPEAT = no
VERBOSE = yes
KEYBOARD_SHARED_EP = yes
-CUSTOM_MATRIX = yes
STENO_LAYERS = no
#Firmware reduction options
@@ -24,7 +18,6 @@ ONLY_QWERTY = no
# know what you're doing.
#
# No touchy, capiche?
-SRC += matrix.c i2c_master.c
ifeq ($(strip $(DEBUG_MATRIX)), yes)
OPT_DEFS += -DDEBUG_MATRIX
endif
@@ -40,3 +33,5 @@ endif
ifeq ($(strip $(NO_TAPPING)), yes)
OPT_DEFS += -DNO_ACTION_TAPPING
endif
+
+SRC += sten.c
diff --git a/keyboards/gboards/georgi/keymaps/dennytom/rules.mk b/keyboards/gboards/georgi/keymaps/dennytom/rules.mk
index 1155f72c04..af3726f14a 100644
--- a/keyboards/gboards/georgi/keymaps/dennytom/rules.mk
+++ b/keyboards/gboards/georgi/keymaps/dennytom/rules.mk
@@ -1,8 +1,2 @@
MOUSEKEY_ENABLE = yes
-EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
-# COMMAND_ENABLE = no
-NKRO_ENABLE = yes
-
-TMPVAR := $(SRC)
-SRC = $(filter-out sten.c, $(TMPVAR)) \ No newline at end of file
diff --git a/keyboards/gboards/georgi/keymaps/minimal/rules.mk b/keyboards/gboards/georgi/keymaps/minimal/rules.mk
index cdbbbc280e..d95158f051 100644
--- a/keyboards/gboards/georgi/keymaps/minimal/rules.mk
+++ b/keyboards/gboards/georgi/keymaps/minimal/rules.mk
@@ -1,12 +1,6 @@
-#----------------------------------------------------------------------------
-# make georgi:default:dfu
-# Make sure you have dfu-programmer installed!
-#----------------------------------------------------------------------------
-
NO_REPEAT = no
VERBOSE = yes
KEYBOARD_SHARED_EP = yes
-CUSTOM_MATRIX = yes
#Firmware reduction options
MOUSEKEY_ENABLE = no # 1500 bytes
@@ -23,7 +17,6 @@ ONLY_QWERTY = no
# know what you're doing.
#
# No touchy, capiche?
-SRC += matrix.c i2c_master.c
ifeq ($(strip $(DEBUG_MATRIX)), yes)
OPT_DEFS += -DDEBUG_MATRIX
endif
@@ -39,3 +32,5 @@ endif
ifeq ($(strip $(NO_TAPPING)), yes)
OPT_DEFS += -DNO_ACTION_TAPPING
endif
+
+SRC += sten.c
diff --git a/keyboards/gboards/georgi/keymaps/norman/rules.mk b/keyboards/gboards/georgi/keymaps/norman/rules.mk
index bb97bef281..d550e882c6 100644
--- a/keyboards/gboards/georgi/keymaps/norman/rules.mk
+++ b/keyboards/gboards/georgi/keymaps/norman/rules.mk
@@ -1,12 +1,6 @@
-#----------------------------------------------------------------------------
-# make georgi:default:dfu
-# Make sure you have dfu-programmer installed!
-#----------------------------------------------------------------------------
-
NO_REPEAT = yes
VERBOSE = yes
KEYBOARD_SHARED_EP = yes
-CUSTOM_MATRIX = yes
MOUSEKEY_ENABLE = yes
#Debug options
@@ -20,7 +14,6 @@ ONLY_QWERTY = no
# know what you're doing.
#
# No touchy, capiche?
-SRC += matrix.c i2c_master.c
ifeq ($(strip $(DEBUG_MATRIX)), yes)
OPT_DEFS += -DDEBUG_MATRIX
endif
@@ -33,3 +26,5 @@ endif
ifeq ($(strip $(ONLY_QWERTY)), yes)
OPT_DEFS += -DONLYQWERTY
endif
+
+SRC += sten.c
diff --git a/keyboards/gboards/georgi/rules.mk b/keyboards/gboards/georgi/rules.mk
index a884d8b3b9..9f66bb0d5b 100644
--- a/keyboards/gboards/georgi/rules.mk
+++ b/keyboards/gboards/georgi/rules.mk
@@ -7,13 +7,17 @@ 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
+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 # 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 = yes
+STENO_ENABLE = yes
LTO_ENABLE = yes
-SRC += matrix.c i2c_master.c sten.c
+
+SRC += matrix.c i2c_master.c
diff --git a/keyboards/gboards/gergo/config.h b/keyboards/gboards/gergo/config.h
index 9d56c0e24f..1308312950 100644
--- a/keyboards/gboards/gergo/config.h
+++ b/keyboards/gboards/gergo/config.h
@@ -35,13 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define VERBOSE
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x1307
-#define DEVICE_VER 0x0001
-#define MANUFACTURER g Heavy Industries
-#define PRODUCT Gergo
-
/* key matrix size */
#define MATRIX_ROWS 14
#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2)
diff --git a/keyboards/gboards/gergo/info.json b/keyboards/gboards/gergo/info.json
index be52e49046..e3f8b1caff 100644
--- a/keyboards/gboards/gergo/info.json
+++ b/keyboards/gboards/gergo/info.json
@@ -1,7 +1,13 @@
{
- "maintainer": "germ",
"keyboard_name": "Gergo",
+ "manufacturer": "g Heavy Industries",
"url": "http://gboards.ca",
+ "maintainer": "germ",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1307",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_gergo": {
"layout": [
diff --git a/keyboards/gboards/gergo/keymaps/colemak/keymap.c b/keyboards/gboards/gergo/keymaps/colemak/keymap.c
index b2e79114f2..35b1e0b653 100644
--- a/keyboards/gboards/gergo/keymaps/colemak/keymap.c
+++ b/keyboards/gboards/gergo/keymaps/colemak/keymap.c
@@ -146,8 +146,8 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- //uint8_t layer = biton32(layer_state);
- biton32(layer_state);
+ //uint8_t layer = get_highest_layer(layer_state);
+ get_highest_layer(layer_state);
};
@@ -171,4 +171,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return true;
};
-
diff --git a/keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/config.h b/keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/config.h
index 2bfb5befb3..e86d030fd7 100644
--- a/keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/gboards/gergo/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/gboards/gergo/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/gboards/gergoplex/config.h b/keyboards/gboards/gergoplex/config.h
index 6a73ccc4ea..bd8c075190 100644
--- a/keyboards/gboards/gergoplex/config.h
+++ b/keyboards/gboards/gergoplex/config.h
@@ -21,13 +21,6 @@ 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 0x6B0A
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER g Heavy Industries
-#define PRODUCT GergoPlex
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2)
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F6, F5, F4, F1 }
#define MATRIX_COL_PINS { B1, B2, B3, D2, D3 }
-#define UNUSED_PINS
#define IGNORE_MOD_TAP_INTERRUPT
#define IS_COMMAND() (get_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_RCTL)) || get_mods() == (MOD_BIT(KC_LSFT) | MOD_BIT(KC_RSFT)))
diff --git a/keyboards/gboards/gergoplex/info.json b/keyboards/gboards/gergoplex/info.json
index 5aa696d5de..462c2434a3 100644
--- a/keyboards/gboards/gergoplex/info.json
+++ b/keyboards/gboards/gergoplex/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GergoPlex",
+ "manufacturer": "g Heavy Industries",
"url": "",
"maintainer": "germ",
+ "usb": {
+ "vid": "0x6B0A",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x5_3": {
"layout": [
diff --git a/keyboards/gboards/gergoplex/keymaps/georgepetri/config.h b/keyboards/gboards/gergoplex/keymaps/georgepetri/config.h
index f66c334b85..e2c27583fa 100644
--- a/keyboards/gboards/gergoplex/keymaps/georgepetri/config.h
+++ b/keyboards/gboards/gergoplex/keymaps/georgepetri/config.h
@@ -27,3 +27,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define COMBO_ALLOW_ACTION_KEYS
#define COMBO_VARIABLE_LEN
+
+#define TAPPING_TERM_PER_KEY
diff --git a/keyboards/gboards/gergoplex/keymaps/georgepetri/keymap.c b/keyboards/gboards/gergoplex/keymaps/georgepetri/keymap.c
index e3b8944814..8b832cbac8 100644
--- a/keyboards/gboards/gergoplex/keymaps/georgepetri/keymap.c
+++ b/keyboards/gboards/gergoplex/keymaps/georgepetri/keymap.c
@@ -199,5 +199,14 @@ void ql_reset(qk_tap_dance_state_t *state, void *user_data) {
}
qk_tap_dance_action_t tap_dance_actions[] = {
- [GAME] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ql_finished, ql_reset, 275)
+ [GAME] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ql_finished, ql_reset)
};
+
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QK_TAP_DANCE ... QK_TAP_DANCE_MAX:
+ return 275;
+ default:
+ return TAPPING_TERM;
+ }
+}
diff --git a/keyboards/geekboards/macropad_v2/config.h b/keyboards/geekboards/macropad_v2/config.h
index cb671bfab7..7ddbefea2a 100644
--- a/keyboards/geekboards/macropad_v2/config.h
+++ b/keyboards/geekboards/macropad_v2/config.h
@@ -15,19 +15,11 @@
*/
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0483
-#define PRODUCT_ID 0xA372
-#define DEVICE_VER 0x0002
-#define MANUFACTURER GeekBoards
-#define PRODUCT Macropad v2
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
#define DIRECT_PINS {{B13, B15, B3, B5}, {B12, B14, A13, B7}}
-#define UNUSED_PINS
#define RGBLED_NUM 42
#define DRIVER_LED_TOTAL 42
diff --git a/keyboards/geekboards/macropad_v2/info.json b/keyboards/geekboards/macropad_v2/info.json
index 770ebbb0f4..b62620af9b 100644
--- a/keyboards/geekboards/macropad_v2/info.json
+++ b/keyboards/geekboards/macropad_v2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "macropad_v2",
+ "keyboard_name": "Macropad v2",
+ "manufacturer": "GeebBoards",
"url": "https://geekboards.ru/",
"maintainer": "ruddy17",
+ "usb": {
+ "vid": "0x0483",
+ "pid": "0xA372",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/geekboards/tester/config.h b/keyboards/geekboards/tester/config.h
index ac3b95c7e7..bdf2d39c98 100644
--- a/keyboards/geekboards/tester/config.h
+++ b/keyboards/geekboards/tester/config.h
@@ -2,20 +2,11 @@
#include "config_common.h"
-
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x1319
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Geekboards
-#define PRODUCT Geekboards Tester
-
-
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
#define MATRIX_ROW_PINS { B0, D4}
#define MATRIX_COL_PINS { F7, F6, D2, D3}
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define LOCKING_SUPPORT_ENABL
diff --git a/keyboards/geekboards/tester/info.json b/keyboards/geekboards/tester/info.json
index 9882aa6850..2da610fb3f 100644
--- a/keyboards/geekboards/tester/info.json
+++ b/keyboards/geekboards/tester/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Geekboards 8-keys macropad",
+ "keyboard_name": "Tester",
+ "manufacturer": "Geekboards",
"url": "",
"maintainer": "moyi4681",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1319",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/generic_panda/panda65_01/config.h b/keyboards/generic_panda/panda65_01/config.h
index 9d4f0c19b4..e3cab53758 100644
--- a/keyboards/generic_panda/panda65_01/config.h
+++ b/keyboards/generic_panda/panda65_01/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6770 // gp generic_panda
-#define PRODUCT_ID 0x6501 // 65_01
-#define DEVICE_VER 0x0001
-#define MANUFACTURER generic_panda
-#define PRODUCT panda65_01
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { A9, A8, B15, A6, A4 }
#define MATRIX_COL_PINS { A3, A10, B7, B6, B5, B4, B3, A15, A14, A2, A1, A0, F1, F0, B10, B11 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/generic_panda/panda65_01/info.json b/keyboards/generic_panda/panda65_01/info.json
index a2ad377615..83daae6631 100644
--- a/keyboards/generic_panda/panda65_01/info.json
+++ b/keyboards/generic_panda/panda65_01/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Panda65_01",
+ "manufacturer": "generic_panda",
"url": "https://github.com/JesseLeung97/qmk_firmware/tree/master/keyboards/generic_panda/panda65_01",
"maintainer": "generic_panda",
+ "usb": {
+ "vid": "0x6770",
+ "pid": "0x6501",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_bs": {
"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":"Del", "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":"PGup", "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":"PgDn", "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":"FN", "x":15, "y":3}, {"label":"LControl", "x":0, "y":4, "w":1.5}, {"label":"LAlt", "x":2.25, "y":4, "w":1.5}, {"label":"Space", "x":3.75, "y":4, "w":7}, {"label":"RWin", "x":10.75, "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/genone/eclipse_65/config.h b/keyboards/genone/eclipse_65/config.h
index e9869e3694..0bc5fa68a1 100644
--- a/keyboards/genone/eclipse_65/config.h
+++ b/keyboards/genone/eclipse_65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x2222
-#define DEVICE_VER 0x0001
-#define MANUFACTURER GEN ONE LLC
-#define PRODUCT Eclipse65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { B3, B7, B0, B1, B2 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/genone/eclipse_65/info.json b/keyboards/genone/eclipse_65/info.json
index df0607946f..72d721d612 100644
--- a/keyboards/genone/eclipse_65/info.json
+++ b/keyboards/genone/eclipse_65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "eclipse_65",
+ "keyboard_name": "Eclipse65",
+ "manufacturer": "GEN ONE LLC",
"url": "https://genonemerch.com",
"maintainer": "rojasa1990",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x2222",
+ "device_version": "0.0.1"
+ },
"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/genone/g1_65/config.h b/keyboards/genone/g1_65/config.h
index 3236160c12..de1714f7cd 100644
--- a/keyboards/genone/g1_65/config.h
+++ b/keyboards/genone/g1_65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xE720 // GEN ONE
-#define PRODUCT_ID 0x0001 // G1_65
-#define DEVICE_VER 0x0001
-#define MANUFACTURER GEN ONE LLC
-#define PRODUCT G1_65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { B3, B7, B0, B1, B2 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/genone/g1_65/info.json b/keyboards/genone/g1_65/info.json
index c73d2d64d0..670b219380 100644
--- a/keyboards/genone/g1_65/info.json
+++ b/keyboards/genone/g1_65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "G1_65",
+ "manufacturer": "GEN ONE LLC",
"url": "https://genonemerch.com",
"maintainer": "rojasa1990",
+ "usb": {
+ "vid": "0xE720",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"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/gentleman65/config.h b/keyboards/gentleman65/config.h
deleted file mode 100644
index 34cd4d4899..0000000000
--- a/keyboards/gentleman65/config.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-Copyright 2021 Omar Afzal
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have 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 0x00FA
-#define PRODUCT_ID 0x2020
-#define DEVICE_VER 0x0001
-#define MANUFACTURER JJ48_24 & Omar Afzal
-#define PRODUCT Gentleman 65
-
-/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 16
-
-/* key matrix pins */
-#define MATRIX_ROW_PINS { D3, D2, D1, F7, F1 }
-#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, D5, C7, F0, B2, B1, B3, B0, B7, D0 }
-#define UNUSED_PINS
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-
-#define RGB_DI_PIN F4
-#define RGBLED_NUM 14
-#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 ENCODERS_PAD_A { F6 }
-#define ENCODERS_PAD_B { F5 }
-#define ENCODER_RESOLUTION 3
-
-#define DRIVER_LED_TOTAL 14 \ No newline at end of file
diff --git a/keyboards/gentleman65/info.json b/keyboards/gentleman65/info.json
deleted file mode 100644
index d42b3ff6db..0000000000
--- a/keyboards/gentleman65/info.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "name": "The Gentleman 65",
- "url": "https://jkeys.design/products/gentleman-65",
- "maintainer": "0marA",
- "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":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}]
- }
- }
-} \ No newline at end of file
diff --git a/keyboards/gentleman65/readme.md b/keyboards/gentleman65/readme.md
deleted file mode 100644
index b2b4e017ce..0000000000
--- a/keyboards/gentleman65/readme.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Gentleman65
-
-![Render](https://i.imgur.com/uNdJqBuh.jpg)
-
-The Gentleman 65 combines the sleek look of natural wood, with the fun of frosted acrylic to produce a truly unique look that differs from existing boards on the market. The board consists of 2 3mm frosted acrylic layers, topped by 2 layers of 6mm of wood, a frosted acrylic wedge, and 2 feet that give the board an angle of 7°. The board is unique in its inclusion of a top mounting system, something rarely seen on the laser cut board.
-
-
-* Keyboard Maintainer: [Omar Afzal](https://github.com/0marA)
-* Hardware Supported: Gentleman 65 PCB for Gentleman65
-* Hardware Availability: [Jkeys.Design](https://jkeys.design/)
-
-Getting the board into bootloader mode:
-
-To flash firmware onto this board, you'll need to bring the PCB into bootloader mode. To enter bootloader mode, press the reset button on the back of the PCB twice. The reset button is located in the bottom center near the spacebar switch footprint.
-
-Make example for this keyboard (after setting up your build environment):
-
- make gentleman65:default
-
-Flashing example for this keyboard:
-
- make gentleman65: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/geonworks/frogmini/fmh/config.h b/keyboards/geonworks/frogmini/fmh/config.h
new file mode 100644
index 0000000000..174fa2678b
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fmh/config.h
@@ -0,0 +1,44 @@
+/*
+Copyright 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
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 MATRIX_ROWS 6
+#define MATRIX_COLS 14
+
+// C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 , C9 , C10, C11, C12, C13
+#define MATRIX_COL_PINS { C4 , C5 , B0 , C13, C14, C15, B9 , C1 , C2 , C3 , A6 , A5 , A4 , A0 }
+// R0 , R1 , R2 , R3 , R4 , R5 , R6
+#define MATRIX_ROW_PINS { A3 , A2 , A1 , B8 , A7 , C0 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define DEBOUNCE 5
+
+#define I2C_DRIVER I2CD1
+#define I2C_SCL_PIN B6
+#define I2C_SDA_PIN B7
+#define I2C_SCL_PAL_MODE 4
+#define I2C_SDA_PAL_MODE 4
+#define EEPROM_I2C_24LC256
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+#define LOCKING_SUPPORT_ENABLE
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/geonworks/frogmini/fmh/fmh.c b/keyboards/geonworks/frogmini/fmh/fmh.c
new file mode 100644
index 0000000000..f642a86f44
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fmh/fmh.c
@@ -0,0 +1,17 @@
+/* Copyright 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
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "fmh.h"
diff --git a/keyboards/geonworks/frogmini/fmh/fmh.h b/keyboards/geonworks/frogmini/fmh/fmh.h
new file mode 100644
index 0000000000..e352cdc003
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fmh/fmh.h
@@ -0,0 +1,120 @@
+/* Copyright 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
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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"
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───────â”
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │5D │ │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 │56 │5A │5B │5C │ Tsangan
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ * ┌───┬─────┬───────────────────────────┬─────┬───â”
+ * │41 │42 │56 │5A │5B │ HHKB
+ * └───┴─────┴───────────────────────────┴─────┴───┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────â”
+ * │40 │ │42 │56 │5A │ │5C │ WKL
+ * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘
+ */
+
+#define LAYOUT_60_tsangan_hhkb( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
+ 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, K56, K5A, K5B, K5C \
+)\
+{\
+ { 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, K3D }, \
+ { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D } \
+}
+
+#define LAYOUT_60_ansi_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, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+ K40, K41, K42, K56, K5A, K5B, K5C \
+)\
+{\
+ { 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, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, ___ } \
+}
+
+#define LAYOUT_60_hhkb( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
+ 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, K56, 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, ___, K2D }, \
+ { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { ___, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, ___, K5D } \
+}
+
+#define LAYOUT_60_ansi_wkl( \
+ 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, K42, K56, K5A, K5C \
+)\
+{\
+ { 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, ___, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, K5A, ___, K5C, ___ } \
+}
+
+#define LAYOUT_60_ansi_wkl_split_bs_rshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
+ 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, K42, K56, K5A, K5C \
+)\
+{\
+ { 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, K3D }, \
+ { K40, ___, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, K5A, ___, K5C, K5D } \
+}
diff --git a/keyboards/geonworks/frogmini/fmh/halconf.h b/keyboards/geonworks/frogmini/fmh/halconf.h
new file mode 100644
index 0000000000..41bddcb279
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fmh/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/geonworks/frogmini/fmh/info.json b/keyboards/geonworks/frogmini/fmh/info.json
new file mode 100644
index 0000000000..3961df2fc9
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fmh/info.json
@@ -0,0 +1,357 @@
+{
+ "keyboard_name": "Frog Mini FM-H",
+ "manufacturer": "GeonWorks",
+ "url": "https://geon.works",
+ "maintainer": "gondolindrim",
+ "usb": {
+ "vid": "0x6777",
+ "pid": "0x2D28",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT_all": "LAYOUT_60_tsangan_hhkb"
+ },
+ "community_layouts": ["60_tsangan_hhkb", "60_ansi_tsangan", "60_hhkb"],
+ "layouts": {
+ "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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "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":"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":"Alt", "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_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":"Bksp", "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":"Alt", "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_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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "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":"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":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"Win", "x":12.5, "y":4}
+ ]
+ },
+ "LAYOUT_60_ansi_wkl": {
+ "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":"Bksp", "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":"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":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_60_ansi_wkl_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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "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":"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":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/geonworks/frogmini/fmh/keymaps/default/keymap.c b/keyboards/geonworks/frogmini/fmh/keymaps/default/keymap.c
new file mode 100644
index 0000000000..1c69068bd6
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fmh/keymaps/default/keymap.c
@@ -0,0 +1,47 @@
+/* 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_60_tsangan_hhkb( /* 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_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(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tsangan_hhkb(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tsangan_hhkb(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/geonworks/frogmini/fmh/keymaps/via/keymap.c b/keyboards/geonworks/frogmini/fmh/keymaps/via/keymap.c
new file mode 100644
index 0000000000..1c69068bd6
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fmh/keymaps/via/keymap.c
@@ -0,0 +1,47 @@
+/* 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_60_tsangan_hhkb( /* 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_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(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tsangan_hhkb(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tsangan_hhkb(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/geonworks/frogmini/fmh/keymaps/via/rules.mk b/keyboards/geonworks/frogmini/fmh/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fmh/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/geonworks/frogmini/fmh/mcuconf.h b/keyboards/geonworks/frogmini/fmh/mcuconf.h
new file mode 100644
index 0000000000..0ca8c64850
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fmh/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/geonworks/frogmini/fmh/rules.mk b/keyboards/geonworks/frogmini/fmh/rules.mk
new file mode 100644
index 0000000000..bb5f9341d2
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fmh/rules.mk
@@ -0,0 +1,26 @@
+MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
+
+# 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
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = no
+ENCODER_ENABLE = no
+
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+
+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/geonworks/frogmini/fms/config.h b/keyboards/geonworks/frogmini/fms/config.h
new file mode 100644
index 0000000000..e73df78949
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fms/config.h
@@ -0,0 +1,50 @@
+/*
+Copyright 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
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 MATRIX_ROWS 6
+#define MATRIX_COLS 14
+
+// C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 , C9 , C10, C11, C12, C13
+#define MATRIX_COL_PINS { C4 , C5 , B0 , C13, C14, C15, B9 , C1 , C2 , C3 , A6 , A5 , A4 , A0 }
+// R0 , R1 , R2 , R3 , R4 , R5 , R6
+#define MATRIX_ROW_PINS { A3 , A2 , A1 , B8 , A7 , C0 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define DEBOUNCE 5
+
+#define BACKLIGHT_PIN A10
+#define BACKLIGHT_PWM_DRIVER PWMD1
+#define BACKLIGHT_PWM_CHANNEL 3
+#define BACKLIGHT_PAL_MODE 1
+#define BACKLIGHT_LEVELS 20
+
+#define I2C_DRIVER I2CD1
+#define I2C_SCL_PIN B6
+#define I2C_SDA_PIN B7
+#define I2C_SCL_PAL_MODE 4
+#define I2C_SDA_PAL_MODE 4
+#define EEPROM_I2C_24LC256
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+#define LOCKING_SUPPORT_ENABLE
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/geonworks/frogmini/fms/fms.c b/keyboards/geonworks/frogmini/fms/fms.c
new file mode 100644
index 0000000000..551e126a78
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fms/fms.c
@@ -0,0 +1,23 @@
+/* Copyright 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
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "fms.h"
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ if (res) led_state.caps_lock ? backlight_enable() : backlight_disable() ;
+ return res;
+}
diff --git a/keyboards/geonworks/frogmini/fms/fms.h b/keyboards/geonworks/frogmini/fms/fms.h
new file mode 100644
index 0000000000..89880a3c64
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fms/fms.h
@@ -0,0 +1,324 @@
+/* Copyright 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
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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"
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───────â”
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │5D │ │0E │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴â”2D │ ISO Enter
+ * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │2C │ │
+ * ┌────────┠├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌─┴───┴────┤
+ * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ │3C │ 2.75u RShift
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ └──────────┘
+ * │40 │41 │42 │56 │59 │5A │5B │5C │ Standard
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────â”
+ * │40 │41 │42 │56 │59 │5B │5C │ Tsangan/WKL/HHKB
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────â”
+ * │40 │ │42 │56 │59 │ │5C │ WKL
+ * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘
+ * ┌───┬─────┬───────────────────────────┬─────┬───â”
+ * │41 │42 │56 │59 │5B │ ˂──── HHKB
+ * └───┴─────┴───────────────────────────┴─────┴───┘
+ * ┌─────┬───┬───────────────────────────────────────┬───┬─────â”
+ * │40 │41 │56 │5B │5C │ Tsangan 10u Space
+ * └─────┴───┴───────────────────────────────────────┴───┴─────┘
+ * ┌─────┬───┬───────────────────────────────────────┬───┬─────â”
+ * │40 │ │56 │ │5C │ WKL 10u Space
+ * └─────┘ └───────────────────────────────────────┘ └─────┘
+ * ┌───┬───────────────────────────────────────┬───â”
+ * │41 │56 │5B │ ˂──── HHKB 10u Space
+ * └───┴───────────────────────────────────────┴───┘
+ */
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
+ 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, K56, K59, K5A, K5B, K5C \
+)\
+{\
+ { 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, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D } \
+}
+
+#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, K56, K59, K5A, K5B, K5C \
+)\
+{\
+ { 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, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, ___ } \
+}
+
+#define LAYOUT_60_ansi_split_bs_rshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
+ 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, K56, K59, K5A, K5B, K5C \
+)\
+{\
+ { 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, K3D }, \
+ { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D } \
+}
+
+#define LAYOUT_60_ansi_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, K2D, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+ K40, K41, K42, K56, K59, K5B, K5C \
+)\
+{\
+ { 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, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, K5B, K5C, ___ } \
+}
+
+#define LAYOUT_60_tsangan_hhkb( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
+ 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, K56, K59, K5B, K5C \
+)\
+{\
+ { 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, K3D }, \
+ { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, K5B, K5C, K5D } \
+}
+
+#define LAYOUT_60_ansi_wkl( \
+ 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, K42, K56, K59, K5C \
+)\
+{\
+ { 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, ___, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, ___, K5C, ___ } \
+}
+
+#define LAYOUT_60_ansi_wkl_split_bs_rshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
+ 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, K42, K56, K59, K5C \
+)\
+{\
+ { 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, K3D }, \
+ { K40, ___, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, ___, K5C, K5D } \
+}
+
+#define LAYOUT_60_hhkb( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
+ 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, K56, K59, 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, ___, K2D }, \
+ { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { ___, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, K5B, ___, K5D } \
+}
+
+#define LAYOUT_60_tsangan_hhkb_10u_space( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
+ 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, K56, K5B, K5C \
+)\
+{\
+ { 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, K3D }, \
+ { K40, K41, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, ___, K5B, K5C, K5D } \
+}
+
+#define LAYOUT_60_hhkb_10u_space( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
+ 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, K56, 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, ___, K2D }, \
+ { K30, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { ___, K41, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, ___, K5B, ___, K5D } \
+}
+
+#define LAYOUT_60_ansi_wkl_split_bs_rshift_10u_space( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
+ 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, K56, K5C \
+)\
+{\
+ { 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, K3D }, \
+ { K40, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, ___, ___, ___, K5C, K5D } \
+}
+
+#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, K2D, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+ K40, K41, K42, K56, K59, K5A, K5B, K5C \
+)\
+{\
+ { 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, ___ }, \
+ { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, ___ } \
+}
+
+#define LAYOUT_60_iso_split_bs_rshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
+ 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, K56, K59, K5A, K5B, K5C \
+)\
+{\
+ { 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, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, K5A, K5B, K5C, K5D } \
+}
+
+#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, \
+ 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, K56, K59, K5B, K5C \
+)\
+{\
+ { 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, ___ }, \
+ { K40, K41, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, K5B, K5C, ___ } \
+}
+
+#define LAYOUT_60_iso_tsangan_split_bs_rshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
+ 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, K56, K59, K5B, K5C \
+)\
+{\
+ { 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, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, K5B, K5C, K5D } \
+}
+
+#define LAYOUT_60_iso_wkl( \
+ 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, \
+ K40, K42, K56, K59, K5C \
+)\
+{\
+ { 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, ___ }, \
+ { K40, ___, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, ___, K5C, ___ } \
+}
+
+#define LAYOUT_60_iso_wkl_split_bs_rshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K5D, \
+ 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, K42, K56, K59, K5C \
+)\
+{\
+ { 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, ___, K42, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, K56, ___, ___, K59, ___, ___, K5C, K5D } \
+}
diff --git a/keyboards/geonworks/frogmini/fms/halconf.h b/keyboards/geonworks/frogmini/fms/halconf.h
new file mode 100644
index 0000000000..202dd838fe
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fms/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
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/geonworks/frogmini/fms/info.json b/keyboards/geonworks/frogmini/fms/info.json
new file mode 100644
index 0000000000..34f7f63251
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fms/info.json
@@ -0,0 +1,1184 @@
+{
+ "keyboard_name": "Frog Mini FM-S",
+ "manufacturer": "GeonWorks",
+ "url": "https://geon.works/",
+ "maintainer": "gondolindrim",
+ "usb": {
+ "vid": "0x6777",
+ "pid": "0x2D33",
+ "device_version": "0.0.1"
+ },
+ "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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "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", "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":"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":"Win", "x":11.25, "y":4, "w":1.25},
+ {"label":"Menu", "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":"Bksp", "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", "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":"Win", "x":11.25, "y":4, "w":1.25},
+ {"label":"Menu", "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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "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", "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":"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":"Win", "x":11.25, "y":4, "w":1.25},
+ {"label":"Menu", "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":"Bksp", "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", "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":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"Menu", "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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "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", "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":"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":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"Menu", "x":12.5, "y":4},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_60_ansi_wkl": {
+ "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":"Bksp", "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", "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":"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":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_60_ansi_wkl_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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "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", "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":"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":"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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "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", "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":"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":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"Menu", "x":12.5, "y":4}
+ ]
+ },
+ "LAYOUT_60_tsangan_hhkb_10u_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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "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", "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":"Win", "x":1.5, "y":4},
+ {"label":"Space", "x":2.5, "y":4, "w":10},
+ {"label":"Menu", "x":12.5, "y":4},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_60_hhkb_10u_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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "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", "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":"Win", "x":1.5, "y":4},
+ {"label":"Space", "x":2.5, "y":4, "w":10},
+ {"label":"Menu", "x":12.5, "y":4}
+ ]
+ },
+ "LAYOUT_60_ansi_wkl_split_bs_rshift_10u_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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "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", "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":"Space", "x":2.5, "y":4, "w":10},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_60_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":"Bksp", "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", "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":"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":"Win", "x":11.25, "y":4, "w":1.25},
+ {"label":"Menu", "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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "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", "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":"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":"Win", "x":11.25, "y":4, "w":1.25},
+ {"label":"Menu", "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":"Bksp", "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", "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":"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":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"Menu", "x":12.5, "y":4},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_60_iso_tsangan_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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "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", "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.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":"Alt", "x":11, "y":4, "w":1.5},
+ {"label":"Menu", "x":12.5, "y":4},
+ {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_60_iso_wkl": {
+ "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":"Bksp", "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", "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":"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":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ },
+ "LAYOUT_60_iso_wkl_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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "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", "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.5},
+ {"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":"Ctrl", "x":13.5, "y":4, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/geonworks/frogmini/fms/keymaps/default/keymap.c b/keyboards/geonworks/frogmini/fms/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e09b7d830d
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fms/keymaps/default/keymap.c
@@ -0,0 +1,47 @@
+/* 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = 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_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, MO(1), KC_RCTL
+),
+[1] = LAYOUT_all(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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
+)
+};
diff --git a/keyboards/geonworks/frogmini/fms/keymaps/default_60_ansi_wkl_split_bs_rshift_10u_space/keymap.c b/keyboards/geonworks/frogmini/fms/keymaps/default_60_ansi_wkl_split_bs_rshift_10u_space/keymap.c
new file mode 100644
index 0000000000..49a78a3382
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fms/keymaps/default_60_ansi_wkl_split_bs_rshift_10u_space/keymap.c
@@ -0,0 +1,47 @@
+/* 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_60_ansi_wkl_split_bs_rshift_10u_space( /* 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_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_SPC, KC_RCTL
+),
+[1] = LAYOUT_60_ansi_wkl_split_bs_rshift_10u_space(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_wkl_split_bs_rshift_10u_space(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_wkl_split_bs_rshift_10u_space(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/geonworks/frogmini/fms/keymaps/default_60_hhkb_10u_space/keymap.c b/keyboards/geonworks/frogmini/fms/keymaps/default_60_hhkb_10u_space/keymap.c
new file mode 100644
index 0000000000..bcb4ea1aea
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fms/keymaps/default_60_hhkb_10u_space/keymap.c
@@ -0,0 +1,47 @@
+/* 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_60_hhkb_10u_space( /* 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_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_LGUI, KC_SPC, MO(1)
+),
+[1] = LAYOUT_60_hhkb_10u_space(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_hhkb_10u_space(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_10u_space(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/geonworks/frogmini/fms/keymaps/default_60_tsangan_hhkb_10u_space/keymap.c b/keyboards/geonworks/frogmini/fms/keymaps/default_60_tsangan_hhkb_10u_space/keymap.c
new file mode 100644
index 0000000000..384669101d
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fms/keymaps/default_60_tsangan_hhkb_10u_space/keymap.c
@@ -0,0 +1,47 @@
+/* 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_60_tsangan_hhkb_10u_space( /* 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_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_SPC, MO(1), KC_RCTL
+),
+[1] = LAYOUT_60_tsangan_hhkb_10u_space(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tsangan_hhkb_10u_space(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_tsangan_hhkb_10u_space(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/geonworks/frogmini/fms/keymaps/via/keymap.c b/keyboards/geonworks/frogmini/fms/keymaps/via/keymap.c
new file mode 100644
index 0000000000..e09b7d830d
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fms/keymaps/via/keymap.c
@@ -0,0 +1,47 @@
+/* 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = 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_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, MO(1), KC_RCTL
+),
+[1] = LAYOUT_all(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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
+)
+};
diff --git a/keyboards/geonworks/frogmini/fms/keymaps/via/rules.mk b/keyboards/geonworks/frogmini/fms/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fms/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/geonworks/frogmini/fms/mcuconf.h b/keyboards/geonworks/frogmini/fms/mcuconf.h
new file mode 100644
index 0000000000..80ade18ca1
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fms/mcuconf.h
@@ -0,0 +1,25 @@
+/* Copyright 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/>.
+ */
+
+#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
diff --git a/keyboards/geonworks/frogmini/fms/rules.mk b/keyboards/geonworks/frogmini/fms/rules.mk
new file mode 100644
index 0000000000..b58f583fea
--- /dev/null
+++ b/keyboards/geonworks/frogmini/fms/rules.mk
@@ -0,0 +1,27 @@
+MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
+
+# 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
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+LTO_ENABLE = no
+ENCODER_ENABLE = no
+
+BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BACKLIGHT_DRIVER = pwm
+
+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/geonworks/frogmini/readme.md b/keyboards/geonworks/frogmini/readme.md
new file mode 100644
index 0000000000..79ee6f2e32
--- /dev/null
+++ b/keyboards/geonworks/frogmini/readme.md
@@ -0,0 +1,49 @@
+# GeonWorks Frog Mini PCB firmware
+
+![FM_image](https://i.imgur.com/mhCsc6Mh.jpg)
+
+The Frog Mini is a 60% keyboard designed by GeonWorks, with PCB by Gondolindrim.
+
+Two PCB variants are offered: FM-S (solderable) and FM-H (hotswap with Kailh sockets).
+
+* Keyboard Maintainer: [Gondolindrim](https://github.com/gondolindrim)
+* Hardware Availability: proprietary PCB sold by [Geon.Works](https://geon.works/)
+* Website: [GeonWorks](https://geon.works/pages/frog-mini)
+
+## How to flash
+
+### Enter bootloader
+
+### Release Alpha:
+
+The DFU state in the bootloader can be accessed in 2 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 back of the PCB
+* **Keycode in layout**: press the key mapped to `QK_BOOT` if it is available (ESC key at layer 1 in the default layout)
+
+### Release Beta:
+
+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 back of the PCB, for at least five seconds
+* **Keycode in layout**: press the key mapped to `QK_BOOT` if it is available (ESC key at layer 1 in the default layout)
+
+## Compile firmware
+
+### FM-S (solderable)
+
+After accessing the DFU state in your PCB, build the default layout using:
+
+ make geonworks/frogmini/fms:default
+
+### FM-H (hotswap)
+
+After accessing the DFU state in your PCB, build the default layout using:
+
+ make geonworks/frogmini/fmh:default
+
+Then download the resulting binary `*bin` file using `dfu-util` or QMK Toolbox.
+
+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/ggkeyboards/genesis/hotswap/config.h b/keyboards/ggkeyboards/genesis/hotswap/config.h
index 52f6fc8524..298d6ab354 100644
--- a/keyboards/ggkeyboards/genesis/hotswap/config.h
+++ b/keyboards/ggkeyboards/genesis/hotswap/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBB00
-#define PRODUCT_ID 0xD4D3
-#define DEVICE_VER 0x0001
-#define MANUFACTURER GG Keyboards
-#define PRODUCT Genesis Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
diff --git a/keyboards/ggkeyboards/genesis/hotswap/info.json b/keyboards/ggkeyboards/genesis/hotswap/info.json
index 8843b6a4bc..149e0e1d80 100644
--- a/keyboards/ggkeyboards/genesis/hotswap/info.json
+++ b/keyboards/ggkeyboards/genesis/hotswap/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Genesis Hotswap",
+ "manufacturer": "GG Keyboards",
"url": "",
"maintainer": "Spooknik",
+ "usb": {
+ "vid": "0xBB00",
+ "pid": "0xD4D3",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_tkl_ansi"
},
diff --git a/keyboards/ggkeyboards/genesis/solder/config.h b/keyboards/ggkeyboards/genesis/solder/config.h
index 6bfeaf9a54..1d4bafdd0d 100644
--- a/keyboards/ggkeyboards/genesis/solder/config.h
+++ b/keyboards/ggkeyboards/genesis/solder/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBB00
-#define PRODUCT_ID 0xD4D2
-#define DEVICE_VER 0x0001
-#define MANUFACTURER GG Keyboards
-#define PRODUCT Genesis Solder
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
diff --git a/keyboards/ggkeyboards/genesis/solder/info.json b/keyboards/ggkeyboards/genesis/solder/info.json
index a316ad019d..9b07ecd290 100644
--- a/keyboards/ggkeyboards/genesis/solder/info.json
+++ b/keyboards/ggkeyboards/genesis/solder/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Genesis Solder",
+ "manufacturer": "GG Keyboards",
"url": "",
"maintainer": "Spooknik",
+ "usb": {
+ "vid": "0xBB00",
+ "pid": "0xD4D2",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
diff --git a/keyboards/gh60/revc/config.h b/keyboards/gh60/revc/config.h
index 527bf4c959..286bb53cba 100644
--- a/keyboards/gh60/revc/config.h
+++ b/keyboards/gh60/revc/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4335 // GEEKhack
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER geekhack
-#define PRODUCT GH60 Rev C
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -45,7 +38,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B0, B5, B4, D7, D6, B3 }
// Rev B/C
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/gh60/revc/info.json b/keyboards/gh60/revc/info.json
index 116cf233c6..1b7fb2e40b 100644
--- a/keyboards/gh60/revc/info.json
+++ b/keyboards/gh60/revc/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GH60 Rev C",
+ "manufacturer": "geekhack",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4335",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/gh60/revc/keymaps/bluezio/keymap.c b/keyboards/gh60/revc/keymaps/bluezio/keymap.c
index 98ca935053..daa8a290bc 100644
--- a/keyboards/gh60/revc/keymaps/bluezio/keymap.c
+++ b/keyboards/gh60/revc/keymaps/bluezio/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
and caps lock where it used to be */
LAYOUT_BZIO(
KC_ESC, KC_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_PGUP, KC_UP, KC_PGDOWN, KC_INSERT, KC_MS_BTN2, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, \
+ KC_TRNS, KC_PGUP, KC_UP, KC_PGDOWN, KC_INSERT, KC_MS_BTN2, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, \
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_DELETE, KC_MS_BTN1, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_HOME, KC_SPC, KC_END, KC_PSCREEN, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
diff --git a/keyboards/gh60/revc/keymaps/chaser/keymap.c b/keyboards/gh60/revc/keymaps/chaser/keymap.c
index 29228eec2d..5fca630a7c 100644
--- a/keyboards/gh60/revc/keymaps/chaser/keymap.c
+++ b/keyboards/gh60/revc/keymaps/chaser/keymap.c
@@ -72,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layer 1: Functions */
[_FL] = LAYOUT_60_ansi_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, \
- KC_BTN3, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_U, _______, _______, _______, KC_INS, _______, RESET, _______, _______, KC_PSCR, \
+ KC_BTN3, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_U, _______, _______, _______, KC_INS, _______, QK_BOOT, _______, _______, KC_PSCR, \
KC_CAPS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, _______, _______, _______, _______, _______, KC_TILD, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, \
_______, _______, _______, _______, KC_RCTL, KC_HOME, KC_PGDN, KC_END \
diff --git a/keyboards/gh60/revc/keymaps/dbroqua/keymap.c b/keyboards/gh60/revc/keymaps/dbroqua/keymap.c
index 964f40f1c0..ffb87ef009 100644
--- a/keyboards/gh60/revc/keymaps/dbroqua/keymap.c
+++ b/keyboards/gh60/revc/keymaps/dbroqua/keymap.c
@@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
void matrix_scan_user(void) {
- uint32_t layer = layer_state;
+ layer_state_t layer = layer_state;
if (layer & (1<<1)) {
gh60_fn_led_on();
@@ -120,4 +120,4 @@ void matrix_scan_user(void) {
} else {
gh60_esc_led_off();
}
-}; \ No newline at end of file
+};
diff --git a/keyboards/gh60/revc/keymaps/default/keymap.c b/keyboards/gh60/revc/keymaps/default/keymap.c
index a8fd4f3c22..4ebc71ff4b 100644
--- a/keyboards/gh60/revc/keymaps/default/keymap.c
+++ b/keyboards/gh60/revc/keymaps/default/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void matrix_scan_user(void) {
//Layer LED indicators
- uint32_t layer = layer_state;
+ layer_state_t layer = layer_state;
if (layer & (1<<1)) {
gh60_wasd_leds_on();
diff --git a/keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c b/keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c
index b84e7564fc..77bf54de63 100644
--- a/keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c
+++ b/keyboards/gh60/revc/keymaps/robotmaxtron/keymap.c
@@ -97,7 +97,7 @@ void matrix_scan_user(void) {
// Layer LED indicators
// ESC led on when in function layer, WASD cluster leds enabled when on arrow cluster
- uint32_t layer = layer_state;
+ layer_state_t layer = layer_state;
if (layer & (1<<1)) {
gh60_wasd_leds_on();
} else {
diff --git a/keyboards/gh60/satan/config.h b/keyboards/gh60/satan/config.h
index 98218d8466..3a094be74f 100644
--- a/keyboards/gh60/satan/config.h
+++ b/keyboards/gh60/satan/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4335
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0003
-#define MANUFACTURER SATAN
-#define PRODUCT GH60 Satan
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 }
-#define UNUSED_PINS
#define LED_CAPS_LOCK_PIN B2
#define LED_PIN_ON_STATE 0
diff --git a/keyboards/gh60/satan/info.json b/keyboards/gh60/satan/info.json
index 167025799b..8374cad110 100644
--- a/keyboards/gh60/satan/info.json
+++ b/keyboards/gh60/satan/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GH60 Satan",
+ "manufacturer": "SATAN",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4335",
+ "pid": "0x0002",
+ "device_version": "0.0.3"
+ },
"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":"k49", "x":14, "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":"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":"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":"k3c", "x":14, "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":"k45", "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":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}]
@@ -23,6 +29,14 @@
},
"LAYOUT_60_iso_split_rshift": {
"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":"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":"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":"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":"k3c", "x":14, "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":"k45", "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":"k4c", "x":12.5, "y":4, "w":1.25}, {"label":"k4d", "x":13.75, "y":4, "w":1.25}]
+ },
+ "LAYOUT_60_hhkb": {
+ "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":"k49", "x":14, "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":"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":"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":1.75}, {"label":"k3c", "x":14, "y":3},
+ {"label":"k41", "x":1.5, "y":4}, {"label":"k42", "x":2.5, "y":4, "w":1.5}, {"label":"k45", "x":4, "y":4, "w":7}, {"label":"k4b", "x":11, "y":4, "w":1.5}, {"label":"k4c", "x":12.5, "y":4}]
}
}
}
diff --git a/keyboards/gh60/satan/keymaps/addcninblue/keymap.c b/keyboards/gh60/satan/keymaps/addcninblue/keymap.c
index 5012fee56b..0226624094 100644
--- a/keyboards/gh60/satan/keymaps/addcninblue/keymap.c
+++ b/keyboards/gh60/satan/keymaps/addcninblue/keymap.c
@@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS , KC_VOLD , KC_MUTE , KC_VOLU , DYN_REC_START1 , DYN_MACRO_PLAY1 , DYN_REC_STOP , KC_PGUP , KC_HOME , ______ , KC_PSCR , KC_UP , ______ , KC_DEL , \
KC_LCTL , KC_END , ______ , KC_PGDN , ______ , ______ , KC_LEFT , KC_DOWN , KC_UP , KC_RIGHT , KC_LEFT , KC_RGHT , KC_ENT , \
KC_LSFT , KC_MPRV , KC_MPLY , KC_MNXT , BL_DEC , BL_TOGG , BL_INC , ______ , ______ , ______ , KC_DOWN , KC_RSFT , TO(_DEFAULT) , \
- ______ , ______ , KC_LALT , KC_SPC , KC_RALT , RESET , ______ , ______ \
+ ______ , ______ , KC_LALT , KC_SPC , KC_RALT , QK_BOOT , ______ , ______ \
),
/* VIM Layer
@@ -112,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXX , XXXXXX , KC_NEXT_WORD , KC_NEXT_WORD , XXXXXX , XXXXXX , XXXXXX , XXXXXX , I_MACRO , O_MACRO , XXXXXX , XXXXXX , XXXXXX , KC_DEL , \
XXXXXX , A_MACRO , XXXXXX , KC_PGDN , XXXXXX , XXXXXX , KC_LEFT , KC_DOWN , KC_UP , KC_RIGHT , XXXXXX , XXXXXX , KC_ENTER , \
XXXXXX , XXXXXX , XXXXXX , XXXXXX , XXXXXX , KC_PREV_WORD , XXXXXX , XXXXXX , XXXXXX , XXXXXX , XXXXXX , KC_RSFT , TO(_DEFAULT) , \
- XXXXXX , XXXXXX , KC_LALT , KC_SPC , KC_RALT , RESET , XXXXXX , XXXXXX \
+ XXXXXX , XXXXXX , KC_LALT , KC_SPC , KC_RALT , QK_BOOT , XXXXXX , XXXXXX \
),
/* FN Layer
@@ -133,7 +133,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXX , XXXXXX , KC_NEXT_WORD , KC_NEXT_WORD , XXXXXX , XXXXXX , XXXXXX , XXXXXX , I_MACRO , O_MACRO , XXXXXX , XXXXXX , XXXXXX , KC_DEL , \
XXXXXX , A_MACRO , XXXXXX , KC_PGDN , XXXXXX , XXXXXX , KC_LEFT , KC_DOWN , KC_UP , KC_RIGHT , XXXXXX , XXXXXX , KC_ENTER , \
XXXXXX , XXXXXX , XXXXXX , XXXXXX , XXXXXX , KC_PREV_WORD , XXXXXX , XXXXXX , XXXXXX , XXXXXX , XXXXXX , KC_RSFT , TO(_DEFAULT) , \
- XXXXXX , XXXXXX , KC_LALT , KC_SPC , KC_RALT , RESET , XXXXXX , XXXXXX \
+ XXXXXX , XXXXXX , KC_LALT , KC_SPC , KC_RALT , QK_BOOT , XXXXXX , XXXXXX \
) ,
};
@@ -177,7 +177,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
if (old_layer != layer) {
switch (layer) {
diff --git a/keyboards/gh60/satan/keymaps/admiralStrokers/config.h b/keyboards/gh60/satan/keymaps/admiralStrokers/config.h
index b1c1600e9d..5bb9bd59a8 100644
--- a/keyboards/gh60/satan/keymaps/admiralStrokers/config.h
+++ b/keyboards/gh60/satan/keymaps/admiralStrokers/config.h
@@ -36,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B6
diff --git a/keyboards/gh60/satan/keymaps/bri/keymap.c b/keyboards/gh60/satan/keymaps/bri/keymap.c
index 2f742411d6..fd9bb7e672 100644
--- a/keyboards/gh60/satan/keymaps/bri/keymap.c
+++ b/keyboards/gh60/satan/keymaps/bri/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----------------------------------------------------------|
* | | F1|F2 | F3|F4 | F5| F6| F7| F8| | | |
* |-----------------------------------------------------------|
- * |RESET| | | | | | | |
+ * |QK_BOOT| | | | | | | |
* `-----------------------------------------------------------'
*/
[_FL] = LAYOUT_60_ansi(
@@ -48,13 +48,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
_______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______,_______, \
- RESET ,_______,_______, _______, _______,_______,_______, _______),
+ QK_BOOT,_______,_______, _______, _______,_______,_______, _______),
#else
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_DEC, BL_INC,BL_TOGG, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
- RESET ,_______,_______, _______, _______,_______,_______,_______),
+ QK_BOOT,_______,_______, _______, _______,_______,_______,_______),
#endif
[_NAV] = LAYOUT_60_ansi(
diff --git a/keyboards/gh60/satan/keymaps/chaser/keymap.c b/keyboards/gh60/satan/keymaps/chaser/keymap.c
index 4427f793e8..41bc3c8cbf 100644
--- a/keyboards/gh60/satan/keymaps/chaser/keymap.c
+++ b/keyboards/gh60/satan/keymaps/chaser/keymap.c
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FL] = 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_MS_BTN3 ,KC_MS_BTN2 ,KC_MS_UP ,KC_MS_BTN1 ,KC_MS_WH_UP ,_______,_______,_______,KC_INS ,_______,RESET ,_______,_______ ,KC_PSCREEN , \
+ KC_MS_BTN3 ,KC_MS_BTN2 ,KC_MS_UP ,KC_MS_BTN1 ,KC_MS_WH_UP ,_______,_______,_______,KC_INS ,_______,QK_BOOT,_______,_______ ,KC_PSCREEN , \
_______ ,KC_MS_LEFT ,KC_MS_DOWN ,KC_MS_RIGHT,KC_MS_WH_DOWN,_______,_______,_______,_______,_______,_______,_______,_______ ,_______ , \
_______ ,_______ ,_______ ,_______ ,_______ ,_______,_______,_______,_______,_______,_______,_______,KC_PGUP ,_______ , \
KC_LCTL ,_______ ,KC_LALT , _______, KC_RCTL,KC_HOME,KC_PGDOWN ,KC_END ),
diff --git a/keyboards/gh60/satan/keymaps/colemak/keymap.c b/keyboards/gh60/satan/keymaps/colemak/keymap.c
index 08d456d6ce..d55bbb9213 100644
--- a/keyboards/gh60/satan/keymaps/colemak/keymap.c
+++ b/keyboards/gh60/satan/keymaps/colemak/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _FL: Function Layer
* ,-----------------------------------------------------------.
- * | | | | | | | | | | | | | | RESET|
+ * | | | | | | | | | | | | | | QK_BOOT|
* |-----------------------------------------------------------|
* | | | | | | | | | | | |BL-|BL+|BL |
* |-----------------------------------------------------------|
@@ -52,13 +52,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FL] = LAYOUT_60_ansi(
#ifdef RGBLIGHT_ENABLE
- KC_GRV, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET, \
+ KC_GRV, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,QK_BOOT, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, BL_DEC,BL_INC, BL_TOGG, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
_______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,_______,_______,_______, \
_______,_______,_______, _______, _______,_______,_______, _______),
#else
- KC_GRV, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET, \
+ KC_GRV, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,QK_BOOT, \
_______,KC_MPRV,KC_MPLY,KC_MNXT,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP, KC_END, BL_DEC, BL_INC,BL_TOGG, \
KC_DEL, KC_VOLD,KC_MUTE,KC_VOLU,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,_______,_______, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
diff --git a/keyboards/gh60/satan/keymaps/dbroqua/keymap.c b/keyboards/gh60/satan/keymaps/dbroqua/keymap.c
index 79fa86d18d..ca6838d2aa 100644
--- a/keyboards/gh60/satan/keymaps/dbroqua/keymap.c
+++ b/keyboards/gh60/satan/keymaps/dbroqua/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* SFX Layer
* ,-----------------------------------------------------------------------------------------.
- * | | | | | | | | | | | | | | |RESET|
+ * | | | | | | | | | | | | | | |QK_BOOT|
* |-----------------------------------------------------------------------------------------+
* | | BL- | BL+ | BL | | | | | | | | | | |
* |-----------------------------------------------------------------------------------------+
@@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------'
*/
[_SFX] = LAYOUT_60_ansi_split_bs_rshift(
- ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, RESET, \
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, QK_BOOT, \
______, BL_DEC, BL_INC, BL_TOGG,______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, RGB_TOG,RGB_MOD,______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,______, ______, ______, ______, ______, ______, \
diff --git a/keyboards/gh60/satan/keymaps/denolfe/keymap.c b/keyboards/gh60/satan/keymaps/denolfe/keymap.c
index 612c5075e6..03c5007c8c 100644
--- a/keyboards/gh60/satan/keymaps/denolfe/keymap.c
+++ b/keyboards/gh60/satan/keymaps/denolfe/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _FL: Function Layer
* ,-----------------------------------------------------------.
- * | | | | | | | | | | | | | | RESET|
+ * | | | | | | | | | | | | | | QK_BOOT|
* |-----------------------------------------------------------|
* | | | | | | | | | | | |BL-|BL+|BL |
* |-----------------------------------------------------------|
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FL] = LAYOUT_60_ansi(
#ifdef RGBLIGHT_ENABLE
- KC_GRV, 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_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_INC, BL_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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, \
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_PGDN, KC_PGUP, KC_TRNS, KC_END, KC_MPRV, KC_MNXT, KC_MPLY, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, KC_HOME, LCTL(KC_LEFT), LCTL(KC_END), LCTL(KC_RIGHT), KC_TRNS, RESET, \
+ KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, KC_HOME, LCTL(KC_LEFT), LCTL(KC_END), LCTL(KC_RIGHT), KC_TRNS, QK_BOOT, \
KC_TRNS, KC_TRNS, LM(2, MOD_LSFT), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
#endif
@@ -66,6 +66,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_PGDN, KC_PGUP, KC_TRNS, LSFT(KC_END), KC_MPRV, KC_MNXT, KC_MPLY, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LSFT(KC_LEFT), LSFT(KC_DOWN), LSFT(KC_UP), LSFT(KC_RIGHT), KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, LSFT(KC_HOME), LCTL(LSFT(KC_LEFT)), LCTL(LSFT(KC_END)), LCTL(LSFT(KC_RIGHT)), KC_TRNS, RESET, \
+ KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, LSFT(KC_HOME), LCTL(LSFT(KC_LEFT)), LCTL(LSFT(KC_END)), LCTL(LSFT(KC_RIGHT)), KC_TRNS, QK_BOOT, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
diff --git a/keyboards/gh60/satan/keymaps/dkrieger/keymap.c b/keyboards/gh60/satan/keymaps/dkrieger/keymap.c
index ac688d7eaf..05df3ff194 100644
--- a/keyboards/gh60/satan/keymaps/dkrieger/keymap.c
+++ b/keyboards/gh60/satan/keymaps/dkrieger/keymap.c
@@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* MOUSE Layer
* ,-----------------------------------------------------------------------------------------.
- * | | | | | | | | | | | | | | |RESET|
+ * | | | | | | | | | | | | | | |QK_BOOT|
* |-----------------------------------------------------------------------------------------
* | | | | | | | | | | | |UCurs| | |
* |-----------------------------------------------------------------------------------------
@@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------'
*/
[_MOUSE] = LAYOUT_60_ansi_split_bs_rshift(
- ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, RESET, \
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, QK_BOOT, \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_MS_UP, ______, ______, \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_MS_LEFT, KC_MS_RIGHT, ______, \
MO(_MOUSESHIFT), ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_MS_DOWN, MO(_MOUSESHIFT), ______, \
@@ -145,7 +145,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* UTIL Layer
* ,-----------------------------------------------------------------------------------------.
- * | | | | | | | | | | | | | | |RESET|
+ * | | | | | | | | | | | | | | |QK_BOOT|
* |-----------------------------------------------------------------------------------------
* | | | | | | | | | | | | | | |
* |-----------------------------------------------------------------------------------------
@@ -157,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------'
*/
[_UTIL] = LAYOUT_60_ansi_split_bs_rshift(
- ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, RESET, \
+ ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, QK_BOOT, \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
diff --git a/keyboards/gh60/satan/keymaps/fakb/config.h b/keyboards/gh60/satan/keymaps/fakb/config.h
index fcdf1f1528..720b359c1e 100644
--- a/keyboards/gh60/satan/keymaps/fakb/config.h
+++ b/keyboards/gh60/satan/keymaps/fakb/config.h
@@ -18,7 +18,6 @@
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B6
diff --git a/keyboards/gh60/satan/keymaps/fakb/keymap.c b/keyboards/gh60/satan/keymaps/fakb/keymap.c
index 93e11a5de2..b6dda8e3ef 100644
--- a/keyboards/gh60/satan/keymaps/fakb/keymap.c
+++ b/keyboards/gh60/satan/keymaps/fakb/keymap.c
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______,_______,_______, _______, _______,_______,_______,_______),
[2] = LAYOUT_all(
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET ,\
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,QK_BOOT,\
KC_BTN5,KC_BTN4,KC_BTN3,KC_BTN2,KC_BTN1,KC_HOME,KC_END ,_______,_______,_______,_______,_______,_______,_______,\
_______,_______,KC_WH_L,KC_WH_U,KC_WH_D,KC_WH_R,KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R,_______,_______,_______,_______,\
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,\
diff --git a/keyboards/gh60/satan/keymaps/gipsy-king/keymap.c b/keyboards/gh60/satan/keymaps/gipsy-king/keymap.c
index 6e0345d9a0..9f2e167399 100644
--- a/keyboards/gh60/satan/keymaps/gipsy-king/keymap.c
+++ b/keyboards/gh60/satan/keymaps/gipsy-king/keymap.c
@@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FL] = 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_HOME,
+ QK_BOOT, KC_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,
RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, BL_TOGG,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______,
_______, RGB_TOG, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,
diff --git a/keyboards/gh60/satan/keymaps/hhkb_7u/keymap.c b/keyboards/gh60/satan/keymaps/hhkb_7u/keymap.c
index b0bc48b455..68e362b59c 100644
--- a/keyboards/gh60/satan/keymaps/hhkb_7u/keymap.c
+++ b/keyboards/gh60/satan/keymaps/hhkb_7u/keymap.c
@@ -8,9 +8,6 @@ enum planck_keycodes {
DEFAULT = SAFE_RANGE
};
-// Fillers to make layering more clear
-#define ______ KC_TRNS
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty gui/alt/space/alt/gui
* ,-----------------------------------------------------------------------------------------.
@@ -22,15 +19,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----------------------------------------------------------------------------------------+
* | Shift | Z | X | C | V | B | N | M | , | . | / | RShift | FN |
* |-----------------------------------------------------------------------------------------+
- * |LGUI | LAlt | 7U Space | RAlt |RGUI |
- * `-----------------------------------------------------------------'
+ * | |LGUI | LAlt | 7U Space | RAlt |RGUI | |
+ * `-----------------------------------------------------------------------------------------'
*/
[_DEFAULT] = LAYOUT_60_hhkb( /* Basic 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_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_LGUI,KC_LALT, KC_SPC, ______,KC_RALT, KC_RGUI, ______ \
+ KC_ESC, KC_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_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI\
),
/* FN Layer
@@ -43,14 +40,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----------------------------------------------------------------------------------------+
* | | BL | BL- | BL+ | | | + | - | End |PgDn| Down| | |
* |-----------------------------------------------------------------------------------------+
- * | | | | | |
- * `-----------------------------------------------------------------'
+ * | | | | | | | |
+ * `-----------------------------------------------------------------------------------------'
*/
[_FN] = LAYOUT_60_hhkb( /* Layer 1 */
- ______, KC_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, ______, ______, ______, ______, ______, ______, ______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, ______, ______, \
- ______, KC_VOLD,KC_VOLU,KC_MUTE,______, ______, KC_PAST,KC_PSLS,KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, ______, \
- ______, BL_DEC,BL_INC,BL_TOGG,______, ______, KC_PPLS,KC_PMNS,KC_END, KC_PGDN, KC_DOWN, ______, ______, \
- ______, ______, ______, ______, ______, ______, ______, ______ \
+ _______,KC_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, _______,_______,_______,_______,_______,_______,_______,KC_PSCR,KC_SLCK,KC_PAUS,KC_UP, _______,_______,\
+ _______, KC_VOLD,KC_VOLU,KC_MUTE,_______, _______, KC_PAST,KC_PSLS,KC_HOME,KC_PGUP,KC_LEFT,KC_RGHT,_______,\
+ _______, BL_DEC, BL_INC, BL_TOGG,_______, _______, KC_PPLS,KC_PMNS,KC_END, KC_PGDN,KC_DOWN,_______,_______,\
+ _______,_______, _______, _______,_______\
)
};
diff --git a/keyboards/gh60/satan/keymaps/hhkb_7u/readme.md b/keyboards/gh60/satan/keymaps/hhkb_7u/readme.md
index 39e71beedd..3ea92f79f9 100644
--- a/keyboards/gh60/satan/keymaps/hhkb_7u/readme.md
+++ b/keyboards/gh60/satan/keymaps/hhkb_7u/readme.md
@@ -1,9 +1,14 @@
-# Dbroqua HHKB like Layout
+# HHKB like Layout with 7u Space
-Like the HHKB but with a Satan GH60 PCB :D.
+Like the HHKB but on a Satan GH60 PCB :D.
# Programming Instructions:
+Compile the firmware
+```
+$ qmk compile -kb gh60/satan -km hhkb_7u
+```
+
Enter into programming mode and run the following command.
```
-$ sudo KEYMAP=dbroqua_hhkb make dfu
-``` \ No newline at end of file
+$ qmk flash -kb gh60/satan -km hhkb_7u
+```
diff --git a/keyboards/gh60/satan/keymaps/isoHHKB/keymap.c b/keyboards/gh60/satan/keymaps/isoHHKB/keymap.c
index d6647cbb30..3db6231353 100644
--- a/keyboards/gh60/satan/keymaps/isoHHKB/keymap.c
+++ b/keyboards/gh60/satan/keymaps/isoHHKB/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _FL: (Function Layer) Second Layer
* ,-----------------------------------------------------------.
- * | |F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|PSR| RESET|
+ * | |F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|PSR| QK_BOOT|
* |-----------------------------------------------------------|
* | | |VUP| | | | | | | | | | | |
* |-------------------------------------------------------. |
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------'
*/
[_FL] = LAYOUT_60_iso_split_rshift(\
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_PSCR, RESET,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_PSCR, QK_BOOT,
_______, _______, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_CAPS, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, RGB_TOG, RGB_MOD, RGB_M_B, RGB_VAI, RGB_VAD, BL_INC, BL_DEC, _______,
_______, _______, _______, _______, KC_CEDL, _______, BL_TOGG, _______, KC_MUTE, _______, _______, _______, _______, _______,
diff --git a/keyboards/gh60/satan/keymaps/iso_split_rshift/keymap.c b/keyboards/gh60/satan/keymaps/iso_split_rshift/keymap.c
index a21f83505e..7f68901c88 100644
--- a/keyboards/gh60/satan/keymaps/iso_split_rshift/keymap.c
+++ b/keyboards/gh60/satan/keymaps/iso_split_rshift/keymap.c
@@ -107,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------'
*/
[_SFX] = LAYOUT_60_iso_split_rshift(
- RESET, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, KC_BSPC, \
+ QK_BOOT, _______, _______, _______, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, KC_BSPC, \
_______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, \
_______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, XXXXXXX, KC_ENT, \
_______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_0, _______, KC_SLSH, KC_UP, _______, \
diff --git a/keyboards/gh60/satan/keymaps/jarred/keymap.c b/keyboards/gh60/satan/keymaps/jarred/keymap.c
index c6852e4eb5..767d1ff76b 100644
--- a/keyboards/gh60/satan/keymaps/jarred/keymap.c
+++ b/keyboards/gh60/satan/keymaps/jarred/keymap.c
@@ -17,6 +17,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______,_______,_______,_______,KC_DEL ,KC_BSPC,_______,KC_HOME,KC_UP ,KC_END ,KC_INS ,_______,_______,_______, \
_______,_______,_______,KC_LSFT,KC_LCTL,KC_ENT ,_______,KC_LEFT,KC_DOWN,KC_RGHT,KC_DEL ,KC_DEL , _______, \
_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,_______,_______, \
- _______,_______,_______, _______, _______,_______, RESET, _______),
+ _______,_______,_______, _______, _______,_______, QK_BOOT, _______),
};
diff --git a/keyboards/gh60/satan/keymaps/lepa/keymap.c b/keyboards/gh60/satan/keymaps/lepa/keymap.c
index 85fdb743d3..249df2c371 100644
--- a/keyboards/gh60/satan/keymaps/lepa/keymap.c
+++ b/keyboards/gh60/satan/keymaps/lepa/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, 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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, DEBUG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/gh60/satan/keymaps/poker/keymap.c b/keyboards/gh60/satan/keymaps/poker/keymap.c
index 13251a5645..18207f7c36 100644
--- a/keyboards/gh60/satan/keymaps/poker/keymap.c
+++ b/keyboards/gh60/satan/keymaps/poker/keymap.c
@@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _RL: Function Layer
* ,-----------------------------------------------------------.
- * | | | | | | | | | | | | | | RESET|
+ * | | | | | | | | | | | | | | QK_BOOT|
* |-----------------------------------------------------------|
* | | | | | | | | | | | |BL-|BL+|BL |
* |-----------------------------------------------------------|
@@ -74,13 +74,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_RL] = LAYOUT_60_ansi(
#ifdef RGBLIGHT_ENABLE
- KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
+ KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, BL_TOGG, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______
#else
- KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
+ KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, BL_TOGG, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
diff --git a/keyboards/gh60/satan/keymaps/rask63/keymap.c b/keyboards/gh60/satan/keymaps/rask63/keymap.c
index bbe15fde88..8c9ec35114 100644
--- a/keyboards/gh60/satan/keymaps/rask63/keymap.c
+++ b/keyboards/gh60/satan/keymaps/rask63/keymap.c
@@ -78,6 +78,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
________, ________, ________, ________, ________, ________, ________, ________, ________, KC_MPRV, KC_MPLY, KC_MNXT, ________, ________, \
KC_CAPS, ________, ________, ________, ________, ________, ________, ________, ________, KC_VOLD, KC_VOLU, KC_MUTE, ________, \
________, ________, ________, ________, ________, ________, ________, ________, ________, KC_MSTP, ________, ________, ________, \
- RESET, KC_MENU, ________, ________, ________, ________, ________, ________
+ QK_BOOT, KC_MENU, ________, ________, ________, ________, ________, ________
),
};
diff --git a/keyboards/gh60/satan/keymaps/sethbc/keymap.c b/keyboards/gh60/satan/keymaps/sethbc/keymap.c
index 63d65ca23c..ad0a6a9948 100644
--- a/keyboards/gh60/satan/keymaps/sethbc/keymap.c
+++ b/keyboards/gh60/satan/keymaps/sethbc/keymap.c
@@ -31,13 +31,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FL] = LAYOUT_60_ansi_split_bs_rshift(
#ifdef RGBLIGHT_ENABLE
- 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, _______, 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, _______, QK_BOOT, \
KC_CAPS, _______, RGB_TOG, RGB_MOD, RGB_HUI, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_DEL, \
_______, KC_VOLD, RGB_HUD, RGB_SAI, RGB_SAD, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
_______, RGB_VAI, RGB_VAD, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______
#else
- 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, _______, 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, _______, QK_BOOT, \
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_DEL, \
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
_______, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, \
diff --git a/keyboards/gh60/satan/keymaps/smt/keymap.c b/keyboards/gh60/satan/keymaps/smt/keymap.c
index 829032a829..7cbdf07766 100644
--- a/keyboards/gh60/satan/keymaps/smt/keymap.c
+++ b/keyboards/gh60/satan/keymaps/smt/keymap.c
@@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----------------------------------------------------------|
* | | | |Prv|Ply|Nxt| | | |Pg-|DN | |
* |-----------------------------------------------------------|
- * |RESET| | | | | | | |
+ * |QK_BOOT| | | | | | | |
* `-----------------------------------------------------------'
*/
[_FUNC] = LAYOUT_60_ansi(
@@ -108,7 +108,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_HOME, KC_UP, KC_END, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, KC_UP, BL_DEC, BL_INC, \
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_PGUP, KC_LEFT, KC_RGHT, _______, \
_______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, KC_PGDN, KC_DOWN, _______, \
- RESET, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/gh60/satan/keymaps/spacemanspiff/keymap.c b/keyboards/gh60/satan/keymaps/spacemanspiff/keymap.c
index 8caa70e02a..3f92899a5f 100644
--- a/keyboards/gh60/satan/keymaps/spacemanspiff/keymap.c
+++ b/keyboards/gh60/satan/keymaps/spacemanspiff/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _FL: Function Layer
* ,-----------------------------------------------------------.
- * | `| | | | | | | | | | | | | RESET|
+ * | `| | | | | | | | | | | | | QK_BOOT|
* |-----------------------------------------------------------|
* | | | | | | | | | | | | | | |
* |-----------------------------------------------------------|
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------'
*/
[_FL] = LAYOUT_60_ansi(
- KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
+ KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
diff --git a/keyboards/gh60/satan/keymaps/stanleylai/keymap.c b/keyboards/gh60/satan/keymaps/stanleylai/keymap.c
index e3cbae285d..49c65ac446 100644
--- a/keyboards/gh60/satan/keymaps/stanleylai/keymap.c
+++ b/keyboards/gh60/satan/keymaps/stanleylai/keymap.c
@@ -34,13 +34,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// RGB Layer
[_RGBL] = LAYOUT_60_ansi_split_bs_rshift(
#ifdef RGBLIGHT_ENABLE
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 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_TOGG, BL_STEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, XXXXXXX, XXXXXXX, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______
#else
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 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_TOGG, BL_STEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, \
diff --git a/keyboards/gh60/satan/keymaps/unxmaal/keymap.c b/keyboards/gh60/satan/keymaps/unxmaal/keymap.c
index 8d9b1dc45d..9d585f4035 100644
--- a/keyboards/gh60/satan/keymaps/unxmaal/keymap.c
+++ b/keyboards/gh60/satan/keymaps/unxmaal/keymap.c
@@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _FL: Function Layer
* ,-----------------------------------------------------------.
- * | | | | | | | | | | | | | | RESET|
+ * | | | | | | | | | | | | | | QK_BOOT|
* |-----------------------------------------------------------|
* | | | | | | | | | | | |BL-|BL+|BL |
* |-----------------------------------------------------------|
@@ -68,13 +68,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FL] = LAYOUT_60_ansi(
#ifdef RGBLIGHT_ENABLE
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, BL_TOGG, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______
#else
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, BL_TOGG, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
diff --git a/keyboards/gh60/satan/rules.mk b/keyboards/gh60/satan/rules.mk
index 14a7691e0f..a7da68cf01 100644
--- a/keyboards/gh60/satan/rules.mk
+++ b/keyboards/gh60/satan/rules.mk
@@ -17,4 +17,4 @@ RGBLIGHT_ENABLE = yes # Enable keyboard underlight functionality
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
AUDIO_ENABLE = no
-LAYOUTS = 60_ansi 60_iso 60_ansi_split_bs_rshift
+LAYOUTS = 60_ansi 60_iso 60_ansi_split_bs_rshift 60_hhkb
diff --git a/keyboards/gh60/satan/satan.h b/keyboards/gh60/satan/satan.h
index baa669fc96..9cb01a0af1 100644
--- a/keyboards/gh60/satan/satan.h
+++ b/keyboards/gh60/satan/satan.h
@@ -201,3 +201,30 @@
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
{ k40, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, XXX, k4a, k4b, k4c, k4d }, \
}
+
+/* HHKB layout
+ * ,-----------------------------------------------------------.
+ * | 00| 01| 02| 03| 04| 05| 06| 07| 08| 09| 0a| 0b| 0c| 0d| 49|
+ * |-----------------------------------------------------------|
+ * | 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 | 3c|
+ * |-----------------------------------------------------------|
+ * | 41| 42 | 45 | 4b |4c |
+ * `-------------------------------------------------'
+ */
+#define LAYOUT_60_hhkb( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k49,\
+ 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, k3c, \
+ k41, k42, k45, 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, XXX, k2d }, \
+ { k30, XXX, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d }, \
+ { XXX, k41, k42, XXX, XXX, k45, XXX, XXX, XXX, k49, XXX, k4b, k4c, XXX }, \
+}
diff --git a/keyboards/gh60/v1p3/config.h b/keyboards/gh60/v1p3/config.h
index 211dff948f..6d5d56915b 100644
--- a/keyboards/gh60/v1p3/config.h
+++ b/keyboards/gh60/v1p3/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Unknown
-#define PRODUCT GH60 v1.3
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/gh60/v1p3/info.json b/keyboards/gh60/v1p3/info.json
index 8e09949e0f..7b5ac465b9 100644
--- a/keyboards/gh60/v1p3/info.json
+++ b/keyboards/gh60/v1p3/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GH60 v1.3",
+ "manufacturer": "Unknown",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/gh60/v1p3/keymaps/factory_hhkb/keymap.c b/keyboards/gh60/v1p3/keymaps/factory_hhkb/keymap.c
index b3908e7ef7..784a26ff93 100644
--- a/keyboards/gh60/v1p3/keymaps/factory_hhkb/keymap.c
+++ b/keyboards/gh60/v1p3/keymaps/factory_hhkb/keymap.c
@@ -27,7 +27,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, KC_INS, _______, KC_BSPC,
_______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, KC_BSPC,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_TILD, _______,
- _______, _______, RESET, KC_APP, BL_DEC, BL_TOGG, BL_INC, KC_VOLD, KC_MUTE, KC_VOLU, KC_END, KC_PGDN, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, KC_APP, BL_DEC, BL_TOGG, BL_INC, KC_VOLD, KC_MUTE, KC_VOLU, KC_END, KC_PGDN, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/gh60/v1p3/keymaps/factory_layout5/keymap.c b/keyboards/gh60/v1p3/keymaps/factory_layout5/keymap.c
index 31003909a1..5a9a53e4a1 100644
--- a/keyboards/gh60/v1p3/keymaps/factory_layout5/keymap.c
+++ b/keyboards/gh60/v1p3/keymaps/factory_layout5/keymap.c
@@ -27,7 +27,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, _______, KC_DEL, KC_DEL,
_______, 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_HASH, _______,
- _______, _______, RESET, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/gh60/v1p3/keymaps/factory_layout7/keymap.c b/keyboards/gh60/v1p3/keymaps/factory_layout7/keymap.c
index ed08a087e2..3d80254de7 100644
--- a/keyboards/gh60/v1p3/keymaps/factory_layout7/keymap.c
+++ b/keyboards/gh60/v1p3/keymaps/factory_layout7/keymap.c
@@ -27,7 +27,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, _______, KC_DEL, KC_DEL,
_______, 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_HASH, _______,
- _______, _______, RESET, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/gh60/v1p3/keymaps/factory_layout9/keymap.c b/keyboards/gh60/v1p3/keymaps/factory_layout9/keymap.c
index 5a779d9baf..13e807f319 100644
--- a/keyboards/gh60/v1p3/keymaps/factory_layout9/keymap.c
+++ b/keyboards/gh60/v1p3/keymaps/factory_layout9/keymap.c
@@ -27,7 +27,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, _______, KC_DEL, _______,
_______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_HASH, _______,
- _______, _______, RESET, BL_DEC, BL_TOGG, BL_INC, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_END, KC_PGDN, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, BL_DEC, BL_TOGG, BL_INC, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_END, KC_PGDN, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/gh60/v1p3/keymaps/factory_minila/keymap.c b/keyboards/gh60/v1p3/keymaps/factory_minila/keymap.c
index 166ddd7c19..9f24f9b8e5 100644
--- a/keyboards/gh60/v1p3/keymaps/factory_minila/keymap.c
+++ b/keyboards/gh60/v1p3/keymaps/factory_minila/keymap.c
@@ -27,7 +27,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, _______, _______, _______,
_______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_HASH, _______,
- _______, _______, RESET, BL_DEC, BL_TOGG, BL_INC, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_END, KC_PGDN, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, BL_DEC, BL_TOGG, BL_INC, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_END, KC_PGDN, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/gh60/v1p3/keymaps/factory_poker/keymap.c b/keyboards/gh60/v1p3/keymaps/factory_poker/keymap.c
index 68d0ea01b4..c5cfce195c 100644
--- a/keyboards/gh60/v1p3/keymaps/factory_poker/keymap.c
+++ b/keyboards/gh60/v1p3/keymaps/factory_poker/keymap.c
@@ -27,7 +27,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, _______, KC_DEL, KC_DEL,
_______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_HASH, _______,
- _______, _______, RESET, BL_DEC, BL_TOGG, BL_INC, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_END, KC_PGDN, _______, _______, _______, _______,
+ _______, _______, QK_BOOT, BL_DEC, BL_TOGG, BL_INC, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_END, KC_PGDN, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/gh80_3000/config.h b/keyboards/gh80_3000/config.h
index 71adb3e249..b3df0ae2f6 100644
--- a/keyboards/gh80_3000/config.h
+++ b/keyboards/gh80_3000/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER farmakon
-#define PRODUCT GH80-3000
-
/* key matrix size */
#define MATRIX_ROWS 11
#define MATRIX_COLS 11
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F4, F1, F0, F5, F6, F7, D4, D5, D3, D2, D0 }
#define MATRIX_COL_PINS { C7, C6, B4, D7, B3, B2, B0, E6, B1, D1, D6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/gh80_3000/info.json b/keyboards/gh80_3000/info.json
index abd041df67..4d9c52fced 100644
--- a/keyboards/gh80_3000/info.json
+++ b/keyboards/gh80_3000/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GH80-3000",
+ "manufacturer": "farmakon",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":2, "y":0}, {"label":"K002", "x":3, "y":0}, {"label":"K003", "x":4, "y":0}, {"label":"K300", "x":5, "y":0}, {"label":"K301", "x":6.5, "y":0}, {"label":"K302", "x":7.5, "y":0}, {"label":"K303", "x":8.5, "y":0}, {"label":"K306", "x":9.5, "y":0}, {"label":"K307", "x":11, "y":0}, {"label":"K308", "x":12, "y":0}, {"label":"K309", "x":13, "y":0}, {"label":"K310", "x":14, "y":0}, {"label":"K004", "x":15.25, "y":0}, {"label":"K005", "x":16.25, "y":0}, {"label":"K006", "x":17.25, "y":0}, {"label":"K007", "x":18.5, "y":0}, {"label":"K008", "x":19.5, "y":0}, {"label":"K009", "x":20.5, "y":0}, {"label":"K010", "x":21.5, "y":0}, {"label":"K100", "x":0, "y":1.5}, {"label":"K101", "x":1, "y":1.5}, {"label":"K102", "x":2, "y":1.5}, {"label":"K103", "x":3, "y":1.5}, {"label":"K400", "x":4, "y":1.5}, {"label":"K401", "x":5, "y":1.5}, {"label":"K402", "x":6, "y":1.5}, {"label":"K403", "x":7, "y":1.5}, {"label":"K404", "x":8, "y":1.5}, {"label":"K405", "x":9, "y":1.5}, {"label":"K406", "x":10, "y":1.5}, {"label":"K407", "x":11, "y":1.5}, {"label":"K408", "x":12, "y":1.5}, {"label":"K409", "x":13, "y":1.5}, {"label":"K410", "x":14, "y":1.5}, {"label":"K104", "x":15.25, "y":1.5}, {"label":"K105", "x":16.25, "y":1.5}, {"label":"K106", "x":17.25, "y":1.5}, {"label":"K107", "x":18.5, "y":1.5}, {"label":"K108", "x":19.5, "y":1.5}, {"label":"K109", "x":20.5, "y":1.5}, {"label":"K110", "x":21.5, "y":1.5}, {"label":"K200", "x":0, "y":2.5, "w":1.5}, {"label":"K201", "x":1.5, "y":2.5}, {"label":"K202", "x":2.5, "y":2.5}, {"label":"K203", "x":3.5, "y":2.5}, {"label":"K500", "x":4.5, "y":2.5}, {"label":"K501", "x":5.5, "y":2.5}, {"label":"K502", "x":6.5, "y":2.5}, {"label":"K503", "x":7.5, "y":2.5}, {"label":"K505", "x":8.5, "y":2.5}, {"label":"K506", "x":9.5, "y":2.5}, {"label":"K507", "x":10.5, "y":2.5}, {"label":"K508", "x":11.5, "y":2.5}, {"label":"K509", "x":12.5, "y":2.5}, {"label":"K510", "x":13.5, "y":2.5, "w":1.5}, {"label":"K204", "x":15.25, "y":2.5}, {"label":"K205", "x":16.25, "y":2.5}, {"label":"K206", "x":17.25, "y":2.5}, {"label":"K207", "x":18.5, "y":2.5}, {"label":"K208", "x":19.5, "y":2.5}, {"label":"K209", "x":20.5, "y":2.5}, {"label":"K210", "x":21.5, "y":2.5}, {"label":"K800", "x":0, "y":3.5, "w":1.75}, {"label":"K801", "x":1.75, "y":3.5}, {"label":"K802", "x":2.75, "y":3.5}, {"label":"K803", "x":3.75, "y":3.5}, {"label":"K600", "x":4.75, "y":3.5}, {"label":"K601", "x":5.75, "y":3.5}, {"label":"K602", "x":6.75, "y":3.5}, {"label":"K603", "x":7.75, "y":3.5}, {"label":"K606", "x":8.75, "y":3.5}, {"label":"K607", "x":9.75, "y":3.5}, {"label":"K608", "x":10.75, "y":3.5}, {"label":"K609", "x":11.75, "y":3.5}, {"label":"K610", "x":12.75, "y":3.5, "w":2.25}, {"label":"K807", "x":18.5, "y":3.5}, {"label":"K808", "x":19.5, "y":3.5}, {"label":"K809", "x":20.5, "y":3.5}, {"label":"K810", "x":21.5, "y":3.5}, {"label":"K900", "x":0, "y":4.5, "w":1.25}, {"label":"K901", "x":1.25, "y":4.5}, {"label":"K902", "x":2.25, "y":4.5}, {"label":"K903", "x":3.25, "y":4.5}, {"label":"K700", "x":4.25, "y":4.5}, {"label":"K701", "x":5.25, "y":4.5}, {"label":"K702", "x":6.25, "y":4.5}, {"label":"K703", "x":7.25, "y":4.5}, {"label":"K705", "x":8.25, "y":4.5}, {"label":"K706", "x":9.25, "y":4.5}, {"label":"K707", "x":10.25, "y":4.5}, {"label":"K708", "x":11.25, "y":4.5}, {"label":"K709", "x":12.25, "y":4.5, "w":1.75}, {"label":"K710", "x":14, "y":4.5}, {"label":"K906", "x":16.25, "y":4.5}, {"label":"K907", "x":18.5, "y":4.5}, {"label":"K908", "x":19.5, "y":4.5}, {"label":"K909", "x":20.5, "y":4.5}, {"label":"K910", "x":21.5, "y":4.5}, {"label":"KA00", "x":0, "y":5.5, "w":1.5}, {"label":"KA01", "x":1.5, "y":5.5}, {"label":"KA02", "x":2.5, "y":5.5, "w":1.5}, {"label":"KA03", "x":4, "y":5.5}, {"label":"K804", "x":5, "y":5.5, "w":2}, {"label":"K805", "x":7, "y":5.5}, {"label":"K806", "x":8, "y":5.5, "w":2}, {"label":"K604", "x":10, "y":5.5}, {"label":"K605", "x":11, "y":5.5, "w":1.5}, {"label":"K904", "x":12.5, "y":5.5}, {"label":"K905", "x":13.5, "y":5.5, "w":1.5}, {"label":"KA04", "x":15.25, "y":5.5}, {"label":"KA05", "x":16.25, "y":5.5}, {"label":"KA06", "x":17.25, "y":5.5}, {"label":"KA07", "x":18.5, "y":5.5}, {"label":"KA08", "x":19.5, "y":5.5}, {"label":"KA09", "x":20.5, "y":5.5}, {"label":"KA10", "x":21.5, "y":5.5}]
diff --git a/keyboards/ghs/rar/config.h b/keyboards/ghs/rar/config.h
index d97e8841f1..7b93dc2197 100644
--- a/keyboards/ghs/rar/config.h
+++ b/keyboards/ghs/rar/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0645
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Gone Hacking Studio
-#define PRODUCT GHS.RAR
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ghs/rar/info.json b/keyboards/ghs/rar/info.json
index ed362b40f6..2f5a75a4f4 100644
--- a/keyboards/ghs/rar/info.json
+++ b/keyboards/ghs/rar/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GHS.RAR",
+ "manufacturer": "Gone Hacking Studio",
"url": "https://gonehacking.studio/",
"maintainer": "Gone Hacking Studio",
+ "usb": {
+ "vid": "0x0645",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/giabalanai/config.h b/keyboards/giabalanai/config.h
new file mode 100644
index 0000000000..efad053aae
--- /dev/null
+++ b/keyboards/giabalanai/config.h
@@ -0,0 +1,294 @@
+/*
+Copyright 2020 3araht
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 12
+#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 { B5, B4, E6, D7, C6, D4 }
+#define MATRIX_COL_PINS { B1, F7, F6, F5, F4, B3, B2, B6, D0, D1 }
+#define MATRIX_ROW_PINS_RIGHT { D1, D0, D4, C6, D7, E6 }
+#define MATRIX_COL_PINS_RIGHT { F4, F5, F6, F7, B1, B3, B2, C7, B7, F1 }
+
+/* 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
+#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
+
+// Right side has to be the master since 1, LED data is output from right side, and 2, Audio pin is prepared on right side as a reserve.
+#define MASTER_RIGHT
+
+// for "Generic" Promicro to be detected correctly as lefthand side (slave)
+#define SPLIT_USB_DETECT
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN D3
+
+#ifdef RGBLIGHT_ENABLE
+# define RGBLED_NUM 123
+
+// Do not define "RGBLED_SPLIT" since somehow it doesn't work well yet.
+// Even thhough "#define RGBLED_SPLIT { 60, 63 }" was set, LEDs on the sub keyboad side didn't turn on.
+// Not sure but rgblight_sethsv_at() might not support RGBLED_SPLIT yet.
+// Instead, LED data is tranferred from right side to the left via TRRS cable.
+
+# define RGBLIGHT_LIMIT_VAL 80
+# define RGBLIGHT_LAYERS
+
+// By default, LEDs of the buttons which are pressed turn on.
+// # define RGBLIGHT_EFFECT_TWINKLE
+// # define RGBLIGHT_EFFECT_KNIGHT
+
+
+// RGBLIGHT LED MAP
+// Right 1st row (12 LEDs)
+// ENCODER
+// Right 2nd .. 5th row(13, 12, 13, 12 LEDs)
+// Left 1st .. 5th row (12 LEDs x 5 rows)
+
+# define RGBLIGHT_LED_MAP { \
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, \
+ 97, \
+ 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, \
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, \
+ 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, \
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, \
+ \
+ 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, \
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, \
+ 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, \
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, \
+ 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48 \
+ }
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+/* ws2812 RGB MATRIX */
+# define DRIVER_LED_TOTAL 123
+# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+
+// for all fingers used at once.
+# define LED_HITS_TO_REMEMBER 10
+
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
+
+// the above brighness setting has no effect on rgb_matrix_set_color().
+// Use darker colors instead.
+/* RGB darker COLORS */
+# define RGB_DARKWHITE 0x66, 0x66, 0x66
+# define RGB_DARKRED 0x66, 0x0, 0x0
+# define RGB_DARKCORAL 0x66, 0x31, 0x1E
+# define RGB_DARKORANGE 0x66, 0x33, 0x0
+# define RGB_DARKGOLDENROD 0x56, 0x42, 0xD
+# define RGB_DARKGOLD 0x66, 0x56, 0x0
+# define RGB_DARKYELLOW 0x66, 0x66, 0x0
+# define RGB_DARKCHARTREUSE 0x33, 0x66, 0x0
+# define RGB_DARKGREEN 0x0, 0x66, 0x0
+# define RGB_DARKSPRINGGREEN 0x0, 0x66, 0x33
+# define RGB_DARKTURQUOISE 0x1C, 0x2C, 0x2A
+# define RGB_DARKTEAL 0x0, 0x33, 0x33
+# define RGB_DARKCYAN 0x0, 0x66, 0x66
+# define RGB_DARKAZURE 0x3D, 0x62, 0x66
+# define RGB_DARKBLUE 0x0, 0x0, 0x66
+# define RGB_DARKPURPLE 0x30, 0x0, 0x66
+# define RGB_DARKMAGENTA 0x66, 0x0, 0x66
+# define RGB_DARKPINK 0x66, 0x33, 0x4C
+
+// https://docs.qmk.fm/#/feature_rgb_matrix
+// Enable suspend mode.
+// # define RGB_DISABLE_WHEN_USB_SUSPENDED true
+
+# 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_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 // RGB_MATRIX_ENABLE
+
+/* 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
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
+
+/* Audio */
+#ifdef AUDIO_ENABLE
+# define AUDIO_PIN B5 // use EX1 = PB5 = PIN9 as Audio output
+// #define DAC_SAMPLE_MAX 32768U
+# define DAC_SAMPLE_MAX 65535U
+// #define AUDIO_CLICKY
+# define NO_MUSIC_MODE
+// #define STARTUP_SONG SONG(FANTASIE_IMPROMPTU)
+// #define STARTUP_SONG SONG(NOCTURNE_OP_9_NO_1)
+// #define STARTUP_SONG SONG(USSR_ANTHEM)
+// #define STARTUP_SONG SONG(CAMPANELLA)
+#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.
+*/
+#ifdef MIDI_ENABLE
+# define MIDI_ADVANCED
+// Initial velocity value (avoid using 127 since it is used as a special number in some sound sources.)
+# define MIDI_INITIAL_VELOCITY 117
+#endif // MIDI_ENABLE
+
+/*
+ * Encoder options
+ */
+#ifdef ENCODER_ENABLE
+# define ENCODERS_PAD_A { }
+# define ENCODERS_PAD_B { }
+# define ENCODER_RESOLUTIONS { }
+# define ENCODERS_PAD_A_RIGHT { B4 }
+# define ENCODERS_PAD_B_RIGHT { B6 }
+# define ENCODER_RESOLUTIONS_RIGHT { 4 }
+# define TAP_CODE_DELAY 10
+#endif // ENCODER_ENABLE
+
+/* 2021/01/22 added to shrink firmware size */
+// NO_ACTION_TAPPING -1964 bytes, however, this disables Layer mods...
+// #define NO_ACTION_TAPPING
+// NO_ACTION_ONESHOT -388 bytes
+#define NO_ACTION_ONESHOT
diff --git a/keyboards/giabalanai/giabalanai.c b/keyboards/giabalanai/giabalanai.c
new file mode 100644
index 0000000000..6f8e359479
--- /dev/null
+++ b/keyboards/giabalanai/giabalanai.c
@@ -0,0 +1,255 @@
+/* Copyright 2020 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "giabalanai.h"
+
+// the velocity difference from the velocity of the root note.
+#define UNISON_VELOCITY_OFFSET 30
+
+#ifdef RGBLIGHT_ENABLE
+# define NO_LED 255
+/* Conversion map from keylocation (MATRIX_ROWS x2(split) x MATRIX_COLS) to led IDs.
+ led IDs are the number starts "0" from upper left corner of left side,
+ enumerated from left to right, from top to bottom.
+ Then emumeration follows to the right side, starting from "60".
+
+ Note that the conversion from physical LED serial alighment to
+ the led IDs is done with RGBLIGHT_LED_MAP beforehand. */
+
+# ifdef GIABARINAIX2
+const uint8_t PROGMEM convert_key_to_led[] =
+{
+ 0, 12, 24, 36, 48, 11, 23, 35, 47, 59,
+ 1, 13, 25, 37, 49, 10, 22, 34, 46, 58,
+ 2, 14, 26, 38, 50, 9, 21, 33, 45, 57,
+ 3, 15, 27, 39, 51, 8, 20, 32, 44, 56,
+ 4, 16, 28, 40, 52, 7, 19, 31, 43, 55,
+ 5, 17, 29, 41, 53, 6, 18, 30, 42, 54,
+ 119, 107, 95, 83, 71, 108, 96, 84, 72, 60,
+ 118, 106, 94, 82, 70, 109, 97, 85, 73, 61,
+ 117, 105, 93, 81, 69, 110, 98, 86, 74, 62,
+ 116, 104, 92, 80, 68, 111, 99, 87, 75, 63,
+ 115, 103, 91, 79, 67, 112, 100, 88, 76, 64,
+ 114, 102, 90, 78, 66, 113, 101, 89, 77, 65
+};
+
+# else
+const uint8_t PROGMEM convert_key_to_led[] =
+{
+0, 12, 24, 36, 48, 11, 23, 35, 47, 59,
+1, 13, 25, 37, 49, 10, 22, 34, 46, 58,
+2, 14, 26, 38, 50, 9, 21, 33, 45, 57,
+3, 15, 27, 39, 51, 8, 20, 32, 44, 56,
+4, 16, 28, 40, 52, 7, 19, 31, 43, 55,
+5, 17, 29, 41, 53, 6, 18, 30, 42, 54,
+
+85, 86, 87, 88, 89, 90, 91, NO_LED, NO_LED, NO_LED,
+98, 99, 100, 101, 102, 103, 104, NO_LED, NO_LED, NO_LED,
+NO_LED, 111, 112, 113, 114, 115, 116, NO_LED, NO_LED, NO_LED,
+NO_LED, 97, 96, 95, 94, 93, 92, NO_LED, NO_LED, NO_LED,
+NO_LED, 110, 109, 108, 107, 106, 105, NO_LED, NO_LED, NO_LED,
+NO_LED, 122, 121, 120, 119, 118, 117, NO_LED, NO_LED, NO_LED
+};
+
+/* Top 2 rows on the right side (LED:60-84) are
+ duplicates of the bottom 2 rows (LED:85-122).
+ LED:97 = Encoder,
+ LED:110 don't have a duplicate on the top row,
+ LED:72 is used when r20 is pressed (not a duplicate) */
+const uint8_t PROGMEM convert_key_to_led2[] =
+{
+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
+
+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
+60, 61, 62, 63, 64, 65, 66, NO_LED, NO_LED, NO_LED,
+72, 73, 74, 75, 76, 77, 78, NO_LED, NO_LED, NO_LED,
+NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED,
+NO_LED, NO_LED, 71, 70, 69, 68, 67, NO_LED, NO_LED, NO_LED,
+NO_LED, 84, 83, 82, 81, 80, 79, NO_LED, NO_LED, NO_LED
+};
+# endif
+#endif // RGBLIGHT_ENABLE
+
+#ifdef RGB_MATRIX_ENABLE
+
+led_config_t g_led_config = {
+ {
+ { 74, 75, 98, 99, 122, 63, 86, 87, 110, 111 },
+ { 73, 76, 97, 100, 121, 64, 85, 88, 109, 112 },
+ { 72, 77, 96, 101, 120, 65, 84, 89, 108, 113 },
+ { 71, 78, 95, 102, 119, 66, 83, 90, 107, 114 },
+ { 70, 79, 94, 103, 118, 67, 82, 91, 106, 115 },
+ { 69, 80, 93, 104, 117, 68, 81, 92, 105, 116 },
+ { 26, 27, 28, 29, 30, 31, 32, NO_LED, NO_LED, NO_LED },
+ { 50, 49, 48, 47, 46, 45, 44, NO_LED, NO_LED, NO_LED },
+ { 25, 51, 52, 53, 54, 55, 56, NO_LED, NO_LED, NO_LED },
+ { NO_LED, 12, 37, 36, 35, 34, 33, NO_LED, NO_LED, NO_LED },
+ { NO_LED, 38, 39, 40, 41, 42, 43, NO_LED, NO_LED, NO_LED },
+ { NO_LED, 62, 61, 60, 59, 58, 57, NO_LED, NO_LED, NO_LED }
+ }, {
+ { 120, 0 }, { 128, 0 }, { 136, 0 }, { 144, 0 }, { 152, 0 }, { 160, 0 }, { 168, 0 }, { 176, 0 }, { 184, 0 }, { 192, 0 }, { 200, 0 }, { 208, 0 },
+ { 224, 32 },
+ { 212, 16 }, { 204, 16 }, { 196, 16 }, { 188, 16 }, { 180, 16 }, { 172, 16 }, { 164, 16 }, { 156, 16 }, { 148, 16 }, { 140, 16 }, { 132, 16 }, { 124, 16 }, { 116, 16 },
+ { 120, 32 }, { 128, 32 }, { 136, 32 }, { 144, 32 }, { 152, 32 }, { 160, 32 }, { 168, 32 }, { 176, 32 }, { 184, 32 }, { 192, 32 }, { 200, 32 }, { 208, 32 },
+ { 212, 48 }, { 204, 48 }, { 196, 48 }, { 188, 48 }, { 180, 48 }, { 172, 48 }, { 164, 48 }, { 156, 48 }, { 148, 48 }, { 140, 48 }, { 132, 48 }, { 124, 48 }, { 116, 48 },
+ { 120, 64 }, { 128, 64 }, { 136, 64 }, { 144, 64 }, { 152, 64 }, { 160, 64 }, { 168, 64 }, { 176, 64 }, { 184, 64 }, { 192, 64 }, { 200, 64 }, { 208, 64 },
+
+ { 88, 0 }, { 80, 0 }, { 72, 0 }, { 64, 0 }, { 56, 0 }, { 48, 0 }, { 40, 0 }, { 32, 0 }, { 24, 0 }, { 16, 0 }, { 8, 0 }, { 0, 0 },
+ { 4, 16 }, { 12, 16 }, { 20, 16 }, { 28, 16 }, { 36, 16 }, { 44, 16 }, { 52, 16 }, { 60, 16 }, { 68, 16 }, { 76, 16 }, { 84, 16 }, { 92, 16 },
+ { 96, 32 }, { 88, 32 }, { 80, 32 }, { 72, 32 }, { 64, 32 }, { 56, 32 }, { 48, 32 }, { 40, 32 }, { 32, 32 }, { 24, 32 }, { 16, 32 }, { 8, 32 },
+ { 12, 48 }, { 20, 48 }, { 28, 48 }, { 36, 48 }, { 44, 48 }, { 52, 48 }, { 60, 48 }, { 68, 48 }, { 76, 48 }, { 84, 48 }, { 92, 48 }, { 100, 48 },
+ { 104, 64 }, { 96, 64 }, { 88, 64 }, { 80, 64 }, { 72, 64 }, { 64, 64 }, { 56, 64 }, { 48, 64 }, { 40, 64 }, { 32, 64 }, { 24, 64 }, { 16, 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, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ }
+};
+
+// const uint8_t PROGMEM convert_led_location2number[] = {
+// 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63,
+// 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+// 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87,
+// 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+// 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111,
+//
+// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+// 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13,
+// 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 12,
+// 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38,
+// 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62
+// };
+#endif
+
+void my_process_midi4Bass(uint8_t channel, keyrecord_t *record,
+ uint8_t *chord_status, uint8_t chord, uint16_t root_note, bool is_single_bass) {
+ uint8_t velocity = midi_config.velocity;
+ if (record->event.pressed) {
+ if (chord_status[chord] == MIDI_INVALID_NOTE) {
+ uint8_t note = midi_compute_note(root_note);
+ if (is_single_bass) {
+ midi_send_noteon(&midi_device, channel, note, velocity);
+ } else {
+ midi_send_noteon(&midi_device, channel, note, velocity);
+ midi_send_noteon(&midi_device, channel, note + 12, velocity); // +1 Octave
+ }
+ dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity);
+ chord_status[chord] = note; // store root_note status.
+ }
+ } else {
+ uint8_t note = chord_status[chord];
+ if (note != MIDI_INVALID_NOTE) {
+ if (is_single_bass) {
+ midi_send_noteoff(&midi_device, channel, note, velocity);
+ } else {
+ midi_send_noteoff(&midi_device, channel, note, velocity);
+ midi_send_noteoff(&midi_device, channel, note + 12, velocity); // +1 Octave
+ }
+ dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity);
+ }
+ chord_status[chord] = MIDI_INVALID_NOTE;
+ }
+}
+
+void my_process_midi4TriadChords(uint8_t channel, keyrecord_t *record,
+ uint8_t *chord_status, uint8_t chord, uint16_t root_note,
+ int8_t offset1, int8_t offset2, int8_t offset3) {
+ uint8_t velocity = midi_config.velocity;
+ if (record->event.pressed) {
+ if (chord_status[chord] == MIDI_INVALID_NOTE) {
+ uint8_t note = midi_compute_note(root_note);
+ midi_send_noteon(&midi_device, channel, note + offset1, velocity);
+ midi_send_noteon(&midi_device, channel, note + offset2, velocity);
+ midi_send_noteon(&midi_device, channel, note + offset3, velocity);
+ dprintf("midi noteon channel:%d note:%d velocity:%d\n", channel, note, velocity);
+ chord_status[chord] = note; // store root_note status.
+ }
+ } else {
+ uint8_t note = chord_status[chord];
+ if (note != MIDI_INVALID_NOTE) {
+ midi_send_noteoff(&midi_device, channel, note + offset1, velocity);
+ midi_send_noteoff(&midi_device, channel, note + offset2, velocity);
+ midi_send_noteoff(&midi_device, channel, note + offset3, velocity);
+ dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, velocity);
+ }
+ chord_status[chord] = MIDI_INVALID_NOTE;
+ }
+}
+
+void my_process_midi(uint8_t channel, uint16_t keycode, keyrecord_t *record, uint8_t *my_tone_status, int8_t offset, bool melody_unison_suppress) {
+
+ uint8_t tone = keycode - MIDI_TONE_MIN;
+
+ uint8_t melody_unison_velocity;
+ if (melody_unison_suppress) {
+ if (midi_config.velocity > UNISON_VELOCITY_OFFSET){
+ melody_unison_velocity = midi_config.velocity - UNISON_VELOCITY_OFFSET;
+ } else {
+ melody_unison_velocity = 0;
+ }
+ } else {
+ melody_unison_velocity = midi_config.velocity;
+ }
+
+ if (record->event.pressed) {
+ if (my_tone_status[tone] == MIDI_INVALID_NOTE) {
+ uint8_t note = midi_compute_note(keycode);
+ midi_send_noteon(&midi_device, channel, note + offset, melody_unison_velocity);
+ dprintf("midi noteon channel:%d note:%d tone:%d velocity:%d\n", channel, note, tone, melody_unison_velocity);
+ my_tone_status[tone] = note; // store root_note status.
+ }
+ } else {
+ uint8_t note = my_tone_status[tone];
+ if (note != MIDI_INVALID_NOTE) {
+ midi_send_noteoff(&midi_device, channel, note + offset, melody_unison_velocity);
+ dprintf("midi noteoff channel:%d note:%d velocity:%d\n", channel, note, melody_unison_velocity);
+ }
+ my_tone_status[tone] = MIDI_INVALID_NOTE;
+ }
+}
+
+#ifdef RGBLIGHT_ENABLE
+void keylight_manager(keyrecord_t *record, uint8_t hue, uint8_t sat, uint8_t val, uint8_t keylocation) {
+ if (keylocation == NO_LED) {
+ return; // do nothing.
+# ifdef CONSOLE_ENABLE
+ uprintf("keylight_manager, NO_LED\n");
+# endif
+ }
+
+ if (record->event.pressed) {
+ rgblight_sethsv_at(hue, sat, val, keylocation);
+ } else {
+ rgblight_sethsv_at(HSV_BLACK, keylocation);
+ }
+}
+
+#endif // RGBLIGHT_ENABLE
+
diff --git a/keyboards/giabalanai/giabalanai.h b/keyboards/giabalanai/giabalanai.h
new file mode 100644
index 0000000000..df4759f00f
--- /dev/null
+++ b/keyboards/giabalanai/giabalanai.h
@@ -0,0 +1,132 @@
+/* Copyright 2020 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, l0a, l0b, \
+ l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l1a, l1b, \
+ l20, l21, l22, l23, l24, l25, l26, l27, l28, l29, l2a, l2b, \
+ l30, l31, l32, l33, l34, l35, l36, l37, l38, l39, l3a, l3b, \
+ l40, l41, l42, l43, l44, l45, l46, l47, l48, l49, l4a, l4b, \
+ \
+ r20, \
+ r00, r01, r02, r03, r04, r05, r06, r07, r08, r09, r0a, r0b, renc, \
+ r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r1a, r1b, r1c, \
+ r21, r22, r23, r24, r25, r26, r27, r28, r29, r2a, r2b, r2c \
+) { \
+ { l00, l10, l20, l30, l40, l0b, l1b, l2b, l3b, l4b }, \
+ { l01, l11, l21, l31, l41, l0a, l1a, l2a, l3a, l4a }, \
+ { l02, l12, l22, l32, l42, l09, l19, l29, l39, l49 }, \
+ { l03, l13, l23, l33, l43, l08, l18, l28, l38, l48 }, \
+ { l04, l14, l24, l34, l44, l07, l17, l27, l37, l47 }, \
+ { l05, l15, l25, l35, l45, l06, l16, l26, l36, l46 }, \
+ \
+ { r00, r01, r02, r03, r04, r05, r06, KC_NO, KC_NO, KC_NO }, \
+ { r10, r11, r12, r13, r14, r15, r16, KC_NO, KC_NO, KC_NO }, \
+ { r20, r21, r22, r23, r24, r25, r26, KC_NO, KC_NO, KC_NO }, \
+ { KC_NO, renc, r0b, r0a, r09, r08, r07, KC_NO, KC_NO, KC_NO }, \
+ { KC_NO, r1c, r1b, r1a, r19, r18, r17, KC_NO, KC_NO, KC_NO }, \
+ { KC_NO, r2c, r2b, r2a, r29, r28, r27, KC_NO, KC_NO, KC_NO } \
+}
+
+#define LAYOUT_giabarinaix2( \
+ l00, l01, l02, l03, l04, l05, l06, l07, l08, l09, l0a, l0b, \
+ l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l1a, l1b, \
+ l20, l21, l22, l23, l24, l25, l26, l27, l28, l29, l2a, l2b, \
+ l30, l31, l32, l33, l34, l35, l36, l37, l38, l39, l3a, l3b, \
+ l40, l41, l42, l43, l44, l45, l46, l47, l48, l49, l4a, l4b, \
+ \
+ r00, r01, r02, r03, r04, r05, r06, r07, r08, r09, r0a, r0b, \
+ r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r1a, r1b, \
+ r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r2a, r2b, \
+ r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r3a, r3b, \
+ r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r4a, r4b \
+) { \
+ { l00, l10, l20, l30, l40, l0b, l1b, l2b, l3b, l4b }, \
+ { l01, l11, l21, l31, l41, l0a, l1a, l2a, l3a, l4a }, \
+ { l02, l12, l22, l32, l42, l09, l19, l29, l39, l49 }, \
+ { l03, l13, l23, l33, l43, l08, l18, l28, l38, l48 }, \
+ { l04, l14, l24, l34, l44, l07, l17, l27, l37, l47 }, \
+ { l05, l15, l25, l35, l45, l06, l16, l26, l36, l46 }, \
+ \
+ { r4b, r3b, r2b, r1b, r0b, r40, r30, r20, r10, r00 }, \
+ { r4a, r3a, r2a, r1a, r0a, r41, r31, r21, r11, r01 }, \
+ { r49, r39, r29, r19, r09, r42, r32, r22, r12, r02 }, \
+ { r48, r38, r28, r18, r08, r43, r33, r23, r13, r03 }, \
+ { r47, r37, r27, r17, r07, r44, r34, r24, r14, r04 }, \
+ { r46, r36, r26, r16, r06, r45, r35, r25, r15, r05 } \
+}
+
+
+#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
+#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
+#define _________________COLEMAK_R3________________ KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
+
+#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 _________________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
+
+#ifdef RGBLIGHT_ENABLE
+
+extern const uint8_t PROGMEM convert_key_to_led[];
+# ifndef GIABARINAIX2
+extern const uint8_t PROGMEM convert_key_to_led2[];
+# endif
+#endif // RGBLIGHT_ENABLE
+
+// #ifdef RGB_MATRIX_ENABLE
+// extern const uint8_t PROGMEM convert_led_location2number[];
+// #endif
+
+extern MidiDevice midi_device;
+void my_process_midi4Bass(uint8_t channel, keyrecord_t *record,
+ uint8_t *chord_status, uint8_t chord, uint16_t root_note, bool is_single_bass);
+
+void my_process_midi4TriadChords(uint8_t channel, keyrecord_t *record,
+ uint8_t *chord_status, uint8_t chord, uint16_t root_note,
+ int8_t offset1, int8_t offset2, int8_t offset3);
+
+void my_process_midi(uint8_t channel, uint16_t keycode, keyrecord_t *record, uint8_t *my_tone_status, int8_t offset, bool melody_unison_suppress);
+
+
+#ifdef RGBLIGHT_ENABLE
+void keylight_manager(keyrecord_t *record, uint8_t hue, uint8_t sat, uint8_t val, uint8_t keylocation);
+#endif // RGBLIGHT_ENABLE
diff --git a/keyboards/giabalanai/info.json b/keyboards/giabalanai/info.json
new file mode 100644
index 0000000000..b0b52b4ab8
--- /dev/null
+++ b/keyboards/giabalanai/info.json
@@ -0,0 +1,125 @@
+{
+ "keyboard_name": "giabalanai",
+ "manufacturer": "3araht",
+ "url": "https://github.com/3araht",
+ "maintainer": "3araht",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xF4B0",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "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": "l06", "x": 6, "y": 0},
+ {"label": "l07", "x": 7, "y": 0},
+ {"label": "l08", "x": 8, "y": 0},
+ {"label": "l09", "x": 9, "y": 0},
+ {"label": "l0a", "x": 10, "y": 0},
+ {"label": "l0b", "x": 11, "y": 0},
+
+ {"label": "l10", "x": 0.5, "y": 1},
+ {"label": "l11", "x": 1.5, "y": 1},
+ {"label": "l12", "x": 2.5, "y": 1},
+ {"label": "l13", "x": 3.5, "y": 1},
+ {"label": "l14", "x": 4.5, "y": 1},
+ {"label": "l15", "x": 5.5, "y": 1},
+ {"label": "l16", "x": 6.5, "y": 1},
+ {"label": "l17", "x": 7.5, "y": 1},
+ {"label": "l18", "x": 8.5, "y": 1},
+ {"label": "l19", "x": 9.5, "y": 1},
+ {"label": "l1a", "x": 10.5, "y": 1},
+ {"label": "l1b", "x": 11.5, "y": 1},
+
+ {"label": "r20", "x": 14.5, "y": 1},
+
+ {"label": "l20", "x": 1, "y": 2},
+ {"label": "l21", "x": 2, "y": 2},
+ {"label": "l22", "x": 3, "y": 2},
+ {"label": "l23", "x": 4, "y": 2},
+ {"label": "l24", "x": 5, "y": 2},
+ {"label": "l25", "x": 6, "y": 2},
+ {"label": "l26", "x": 7, "y": 2},
+ {"label": "l27", "x": 8, "y": 2},
+ {"label": "l28", "x": 9, "y": 2},
+ {"label": "l29", "x": 10, "y": 2},
+ {"label": "l2a", "x": 11, "y": 2},
+ {"label": "l2b", "x": 12, "y": 2},
+
+ {"label": "r00", "x": 15, "y": 2},
+ {"label": "r01", "x": 16, "y": 2},
+ {"label": "r02", "x": 17, "y": 2},
+ {"label": "r03", "x": 18, "y": 2},
+ {"label": "r04", "x": 19, "y": 2},
+ {"label": "r05", "x": 20, "y": 2},
+ {"label": "r06", "x": 21, "y": 2},
+ {"label": "r07", "x": 22, "y": 2},
+ {"label": "r08", "x": 23, "y": 2},
+ {"label": "r09", "x": 24, "y": 2},
+ {"label": "r0a", "x": 25, "y": 2},
+ {"label": "r0b", "x": 26, "y": 2},
+
+ {"label": "renc", "x": 27.5, "y": 2},
+
+ {"label": "l30", "x": 1.5, "y": 3},
+ {"label": "l31", "x": 2.5, "y": 3},
+ {"label": "l32", "x": 3.5, "y": 3},
+ {"label": "l33", "x": 4.5, "y": 3},
+ {"label": "l34", "x": 5.5, "y": 3},
+ {"label": "l35", "x": 6.5, "y": 3},
+ {"label": "l36", "x": 7.5, "y": 3},
+ {"label": "l37", "x": 8.5, "y": 3},
+ {"label": "l38", "x": 9.5, "y": 3},
+ {"label": "l39", "x": 10.5, "y": 3},
+ {"label": "l3a", "x": 11.5, "y": 3},
+ {"label": "l3b", "x": 12.5, "y": 3},
+
+ {"label": "r10", "x": 14.5, "y": 3},
+ {"label": "r11", "x": 15.5, "y": 3},
+ {"label": "r12", "x": 16.5, "y": 3},
+ {"label": "r13", "x": 17.5, "y": 3},
+ {"label": "r14", "x": 18.5, "y": 3},
+ {"label": "r15", "x": 19.5, "y": 3},
+ {"label": "r16", "x": 20.5, "y": 3},
+ {"label": "r17", "x": 21.5, "y": 3},
+ {"label": "r18", "x": 22.5, "y": 3},
+ {"label": "r19", "x": 23.5, "y": 3},
+ {"label": "r1a", "x": 24.5, "y": 3},
+ {"label": "r1b", "x": 25.5, "y": 3},
+ {"label": "r1c", "x": 26.5, "y": 3},
+
+ {"label": "l40", "x": 2, "y": 4},
+ {"label": "l41", "x": 3, "y": 4},
+ {"label": "l42", "x": 4, "y": 4},
+ {"label": "l43", "x": 5, "y": 4},
+ {"label": "l44", "x": 6, "y": 4},
+ {"label": "l45", "x": 7, "y": 4},
+ {"label": "l46", "x": 8, "y": 4},
+ {"label": "l47", "x": 9, "y": 4},
+ {"label": "l48", "x": 10, "y": 4},
+ {"label": "l49", "x": 11, "y": 4},
+ {"label": "l4a", "x": 12, "y": 4},
+ {"label": "l4b", "x": 13, "y": 4},
+
+ {"label": "r21", "x": 15, "y": 4},
+ {"label": "r22", "x": 16, "y": 4},
+ {"label": "r23", "x": 17, "y": 4},
+ {"label": "r24", "x": 18, "y": 4},
+ {"label": "r25", "x": 19, "y": 4},
+ {"label": "r26", "x": 20, "y": 4},
+ {"label": "r27", "x": 21, "y": 4},
+ {"label": "r28", "x": 22, "y": 4},
+ {"label": "r29", "x": 23, "y": 4},
+ {"label": "r2a", "x": 24, "y": 4},
+ {"label": "r2b", "x": 25, "y": 4},
+ {"label": "r2c", "x": 26, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/giabalanai/keymaps/2firmware/config.h b/keyboards/giabalanai/keymaps/2firmware/config.h
new file mode 100644
index 0000000000..a9c772adef
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/2firmware/config.h
@@ -0,0 +1,9 @@
+#pragma once
+
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+// #define MASTER_LEFT
+// #define MASTER_RIGHT
+#define EE_HANDS
diff --git a/keyboards/giabalanai/keymaps/2firmware/keymap.c b/keyboards/giabalanai/keymaps/2firmware/keymap.c
new file mode 100644
index 0000000000..2877f8ecd8
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/2firmware/keymap.c
@@ -0,0 +1,739 @@
+/* Copyright 2020 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "split_util.h"
+#include "print.h"
+#include "version.h"
+
+// Alias layout macros that expand groups of keys.
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+
+#define DF_QWER DF(_QWERTY)
+#define DF_COLE DF(_COLEMAK)
+#define MO_ADJ MO(_ADJUST)
+// Long press: go to _FN layer, tap: MUTE
+#define FN_MUTE LT(_FN, KC_MUTE)
+#define SHIF_UP RSFT_T(KC_UP)
+#define ADJ_EIS LT(_ADJUST,KC_LANG2)
+#define MIS_KAN LT(_MISC,KC_LANG1)
+
+// Used to set octave to MI_OCT_0
+extern midi_config_t midi_config;
+uint8_t midi_bass_ch = 0, midi_chord_ch = 0; // By default, all use the same channel.
+
+// UNISON flags
+static bool melody_dyad_high = false; // true when +1 octave unison dyad is enabled.
+static bool melody_dyad_low = false; // true when -1 octave unison dyad is enabled.
+
+static bool melody_unison_suppress = true; // true: velocity of octave unison note is suppressd to UNISON_VELOCITY_RATIO
+
+// To record the status of Bass Chord (single or dyad, default: dyad.)
+typedef union {
+ uint32_t raw;
+ struct {
+ bool isSingleBass:1;
+ };
+} user_config_t;
+user_config_t user_config;
+
+#define IS_SINGLE_BASS() (user_config.isSingleBass)
+
+#ifdef RGBLIGHT_ENABLE
+/* used to specify there is no LED on the keylocation. */
+# define NO_LED 255
+#endif // RGBLIGHT_ENABLE
+
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _C_SYSTEM_BASE, // MIDI C-system
+ _FAKE_B_SYSTEM, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system.
+ _C_SYSTEM_BASS2ROW, // counter bass system
+ _C_SYSTEM_ENTIRELY, // single notes for both left and right keybaords.
+ _CHROMATONE,
+ _CFLIP_BASS2ROW, // 180 degree flipped layout on right side keyboard
+ _QWERTY,
+ _COLEMAK,
+ _ADJUST, // for Fn keys, etc.
+ _FN // for changing layers, octaves, etc.
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+
+ // MIDI Chord Keycodes - Root notes
+ MY_CHORD_MIN = SAFE_RANGE,
+
+ MI_CH_Cr = MY_CHORD_MIN,
+ MI_CH_Csr,
+ MI_CH_Dbr = MI_CH_Csr,
+ MI_CH_Dr,
+ MI_CH_Dsr,
+ MI_CH_Ebr = MI_CH_Dsr,
+ MI_CH_Er,
+ MI_CH_Fr,
+ MI_CH_Fsr,
+ MI_CH_Gbr = MI_CH_Fsr,
+ MI_CH_Gr,
+ MI_CH_Gsr,
+ MI_CH_Abr = MI_CH_Gsr,
+ MI_CH_Ar,
+ MI_CH_Asr,
+ MI_CH_Bbr = MI_CH_Asr,
+ MI_CH_Br,
+
+ // MIDI Chord Keycodes - Major
+
+ MI_CH_C,
+ MI_CH_Cs,
+ MI_CH_Db = MI_CH_Cs,
+ MI_CH_D,
+ MI_CH_Ds,
+ MI_CH_Eb = MI_CH_Ds,
+ MI_CH_E,
+ MI_CH_F,
+ MI_CH_Fs,
+ MI_CH_Gb = MI_CH_Fs,
+ MI_CH_G,
+ MI_CH_Gs,
+ MI_CH_Ab = MI_CH_Gs,
+ MI_CH_A,
+ MI_CH_As,
+ MI_CH_Bb = MI_CH_As,
+ MI_CH_B,
+
+ // MIDI Chord Keycodes Minor
+
+ MI_CH_Cm,
+ MI_CH_Csm,
+ MI_CH_Dbm = MI_CH_Csm,
+ MI_CH_Dm,
+ MI_CH_Dsm,
+ MI_CH_Ebm = MI_CH_Dsm,
+ MI_CH_Em,
+ MI_CH_Fm,
+ MI_CH_Fsm,
+ MI_CH_Gbm = MI_CH_Fsm,
+ MI_CH_Gm,
+ MI_CH_Gsm,
+ MI_CH_Abm = MI_CH_Gsm,
+ MI_CH_Am,
+ MI_CH_Asm,
+ MI_CH_Bbm = MI_CH_Asm,
+ MI_CH_Bm,
+
+ //MIDI Chord Keycodes Dominant Seventh
+
+ MI_CH_CDom7,
+ MI_CH_CsDom7,
+ MI_CH_DbDom7 = MI_CH_CsDom7,
+ MI_CH_DDom7,
+ MI_CH_DsDom7,
+ MI_CH_EbDom7 = MI_CH_DsDom7,
+ MI_CH_EDom7,
+ MI_CH_FDom7,
+ MI_CH_FsDom7,
+ MI_CH_GbDom7 = MI_CH_FsDom7,
+ MI_CH_GDom7,
+ MI_CH_GsDom7,
+ MI_CH_AbDom7 = MI_CH_GsDom7,
+ MI_CH_ADom7,
+ MI_CH_AsDom7,
+ MI_CH_BbDom7 = MI_CH_AsDom7,
+ MI_CH_BDom7,
+
+ // MIDI Chord Keycodes Diminished Seventh
+
+ MI_CH_CDim7,
+ MI_CH_CsDim7,
+ MI_CH_DbDim7 = MI_CH_CsDim7,
+ MI_CH_DDim7,
+ MI_CH_DsDim7,
+ MI_CH_EbDim7 = MI_CH_DsDim7,
+ MI_CH_EDim7,
+ MI_CH_FDim7,
+ MI_CH_FsDim7,
+ MI_CH_GbDim7 = MI_CH_FsDim7,
+ MI_CH_GDim7,
+ MI_CH_GsDim7,
+ MI_CH_AbDim7 = MI_CH_GsDim7,
+ MI_CH_ADim7,
+ MI_CH_AsDim7,
+ MI_CH_BbDim7 = MI_CH_AsDim7,
+ MI_CH_BDim7,
+
+ MY_CHORD_MAX = MI_CH_BDim7,
+
+ VERSION,
+ CSYSTEM, // C-SYSTEM layout
+ BSYSTEM, // B-SYSTEM layout
+ CNTBASC, // CouNTer BASs C-system layout
+ CSYSALL, // C-SYStem ALL layout
+ CHRTONE, // CHRomaTONE layout
+ CFLIP2B, // C-system FLIPped 2(to) Backwards
+ TGLBASS, // ToGgLe BASS unison
+ TGLMICH, // ToGgLe MIdi CHannel separation
+ MELDYAL, // MELody DYad Low
+ MELODYS, // MELODY Single
+ MELDYAH, // MELody DYad High
+ TGLUVEL // ToGgLe Unison VELocity
+};
+
+#define MY_CHORD_COUNT (MY_CHORD_MAX - MY_CHORD_MIN + 1)
+static uint8_t chord_status[MY_CHORD_COUNT];
+static uint8_t my_tone_status[MIDI_TONE_COUNT];
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* C-system Base */
+ [_C_SYSTEM_BASE] = LAYOUT(
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+ MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
+
+ MI_Fs_2,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5, FN_MUTE,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5
+ ),
+
+ /* fake B-system */
+ [_FAKE_B_SYSTEM] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+
+ MI_Ab_2,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Gb_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Gb_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Gb_5, _______,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5
+ ),
+
+ /* BASS2row */
+ [_C_SYSTEM_BASS2ROW] = LAYOUT(
+ MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, MI_CH_Csr, MI_CH_Gsr, MI_CH_Dsr, MI_CH_Asr,
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+
+ MI_Fs_2,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5, _______,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5
+ ),
+
+ /* C-system entirely */
+ [_C_SYSTEM_ENTIRELY] = LAYOUT(
+ MI_BENDU, XXXXXXX, XXXXXXX, MI_Db, MI_E, MI_G, MI_Bb, MI_Db_1, MI_E_1, MI_G_1, MI_Bb_1, MI_Db_2,
+ MI_BENDD, XXXXXXX, MI_C, MI_Eb, MI_Fs, MI_A, MI_C_1, MI_Eb_1, MI_Fs_1, MI_A_1, MI_C_2, MI_Eb_2,
+ XXXXXXX, XXXXXXX, MI_D, MI_F, MI_Ab, MI_B, MI_D_1, MI_F_1, MI_Ab_1, MI_B_1, MI_D_2, MI_F_2,
+ XXXXXXX, MI_Db, MI_E, MI_G, MI_Bb, MI_Db_1, MI_E_1, MI_G_1, MI_Bb_1, MI_Db_2, MI_E_2, MI_G_2,
+ MI_C, MI_Eb, MI_Fs, MI_A, MI_C_1, MI_Eb_1, MI_Fs_1, MI_A_1, MI_C_2, MI_Eb_2, MI_Fs_2, MI_A_2,
+
+ MI_Fs_2,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5, FN_MUTE,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5
+ ),
+
+ /* Chromatone */
+ [_CHROMATONE] = LAYOUT(
+ MI_Db, MI_Eb, MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1, MI_A_1, MI_B_1,
+ MI_D, MI_E, MI_Fs, MI_Ab, MI_Bb, MI_C_1, MI_D_1, MI_E_1, MI_Fs_1, MI_Ab_1, MI_Bb_1, MI_C_2,
+ MI_Eb, MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1, MI_A_1, MI_B_1, MI_Db_2,
+ MI_E, MI_Fs, MI_Ab, MI_Bb, MI_C_1, MI_D_1, MI_E_1, MI_Fs_1, MI_Ab_1, MI_Bb_1, MI_C_2, MI_D_2,
+ MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1, MI_A_1, MI_B_1, MI_Db_2, MI_Eb_2,
+
+ MI_C_2,
+ MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, FN_MUTE,
+ MI_C_2, MI_D_2, MI_E_2, MI_Gb_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Gb_3, MI_Ab_3, MI_Bb_3, MI_C_4,
+ MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3
+ ),
+
+ [_CFLIP_BASS2ROW] = LAYOUT(
+ MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, MI_CH_Csr, MI_CH_Gsr, MI_CH_Dsr, MI_CH_Asr,
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+
+ MI_G_5,
+ MI_F_5, MI_D_5, MI_B_4, MI_Ab_4, MI_F_4, MI_D_4, MI_B_3, MI_Ab_3, MI_F_3, MI_D_3, MI_B_2, MI_Ab_2, FN_MUTE,
+ MI_Fs_5, MI_Eb_5, MI_C_5, MI_A_4, MI_Fs_4, MI_Eb_4, MI_C_4, MI_A_3, MI_Fs_3, MI_Eb_3, MI_C_3, MI_A_2, MI_Fs_2,
+ MI_E_5, MI_Db_5, MI_Bb_4, MI_G_4, MI_E_4, MI_Db_4, MI_Bb_3, MI_G_3, MI_E_3, MI_Db_3, MI_Bb_2, MI_G_2
+ ),
+
+ /* QWERTY */
+ [_QWERTY] = LAYOUT_wrapper(
+ KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC,
+ KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_DEL,
+ KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_ENT,
+ KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, ADJ_EIS, KC_SPC, KC_SPC, KC_LANG1, KC_APP, MO_ADJ, KC_LEFT, KC_DOWN, KC_RGHT,
+
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* COLEMAK */
+ [_COLEMAK] = LAYOUT_wrapper(
+ KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC,
+ KC_TAB, _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, KC_DEL,
+ KC_LCTL, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_ENT,
+ KC_LSFT, _________________COLEMAK_L3________________, _________________COLEMAK_R3________________, SHIF_UP,
+ KC_CAPS, KC_LGUI, KC_LALT, ADJ_EIS, KC_SPC, KC_SPC, KC_LANG1, KC_APP, MO_ADJ, KC_LEFT, KC_DOWN, KC_RGHT,
+
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* ADJUST */
+ [_ADJUST] = LAYOUT_wrapper(
+ _______, _________________FUNC__L___________________, _________________FUNC__R___________________, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, _______,
+ _______, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_GRV, _______,
+ _______, KC_BRID, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_BSLS, _______,
+
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+
+ /* Fn */
+ [_FN] = LAYOUT(
+ CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG,
+ DF_QWER, TGLBASS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ DF_COLE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLMICH,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ XXXXXXX,
+ MI_OCT_N2, MI_OCT_N1, MI_OCT_0, MI_OCT_1, MI_OCT_2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, EEP_RST, _______,
+ CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, XXXXXXX, XXXXXXX, XXXXXXX, MI_VELD, MI_VELU, XXXXXXX, RGB_TOG,
+ XXXXXXX, TGLBASS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLUVEL, MELDYAL, MELODYS, MELDYAH
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FAKE_B_SYSTEM] = { ENCODER_CCW_CW(_______, _______) },
+ [_C_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) },
+ [_C_SYSTEM_ENTIRELY] = { ENCODER_CCW_CW(_______, _______) },
+ [_CHROMATONE] = { ENCODER_CCW_CW(_______, _______) },
+ [_CFLIP_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) },
+ [_QWERTY] = { ENCODER_CCW_CW(_______, _______) },
+ [_COLEMAK] = { ENCODER_CCW_CW(_______, _______) },
+ [_ADJUST] = { ENCODER_CCW_CW(_______, _______) },
+ [_FN] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+
+// Light up adjust layer keys (left keyboard)
+const rgblight_segment_t PROGMEM my_adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, 10, HSV_ORANGE},
+ {21, 2, HSV_ORANGE},
+ {25, 3, HSV_ORANGE},
+ {30, 5, HSV_ORANGE},
+ {37, 2, HSV_ORANGE},
+ {45, 2, HSV_ORANGE},
+ {57, 2, HSV_ORANGE}
+);
+
+// Light up fn layer keys
+const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( // left keyboard
+ {0, 6, HSV_ORANGE}, // MIDI layouts
+ {11, 1, HSV_RED}, // RGB_TOG
+ {12, 1, HSV_WHITE}, // DF_QWER
+ {13, 1, HSV_CORAL}, // TGLBASS
+ {24, 1, HSV_WHITE}, // DF_COLE
+ {35, 1, HSV_TEAL}, // TGLMICH
+#if 0 // Color Test
+ {36, 1, HSV_WHITE},
+ {37, 1, HSV_RED},
+ {38, 1, HSV_CORAL},
+ {39, 1, HSV_ORANGE},
+ {40, 1, HSV_GOLDENROD},
+ {41, 1, HSV_GOLD},
+ {42, 1, HSV_YELLOW},
+ {43, 1, HSV_CHARTREUSE},
+ {44, 1, HSV_GREEN},
+ {45, 1, HSV_SPRINGGREEN},
+ {46, 1, HSV_TURQUOISE},
+ {47, 1, HSV_TEAL},
+ {48, 1, HSV_CYAN},
+ {49, 1, HSV_AZURE},
+ {50, 1, HSV_BLUE},
+ {51, 1, HSV_PURPLE},
+ {52, 1, HSV_MAGENTA},
+ {53, 1, HSV_PINK},
+#endif
+ // right keyboard
+ {60, 6, HSV_ORANGE}, // MIDI layouts
+ {74, 1, HSV_CORAL}, // TGLBASS
+ {85, 1, HSV_BLUE}, // MIDI Oct
+ {86, 1, HSV_CYAN}, // MIDI Oct
+ {87, 1, HSV_SPRINGGREEN}, // MIDI Oct
+ {88, 1, HSV_GREEN}, // MIDI Oct
+ {89, 1, HSV_CHARTREUSE}, // MIDI Oct
+ {96, 1, HSV_PINK}, // EEP_RST
+ {98, 6, HSV_ORANGE}, // MIDI layouts
+ {107, 1, HSV_YELLOW}, // MI_VELD
+ {108, 1, HSV_GREEN}, // MI_VELU
+ {110, 1, HSV_RED}, // RGB_TOG
+ {112, 1, HSV_CORAL}, // TGLBASS
+ {119, 1, HSV_CORAL}, // TGLUVEL
+ {120, 1, HSV_CYAN}, // MELDYAL
+ {121, 1, HSV_GOLD}, // MELODYS
+ {122, 1, HSV_SPRINGGREEN} // MELDYAH
+);
+
+
+
+// Now define the array of layers. Later layers take precedence
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_fn_layer, my_adjust_layer);
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ // Both layers will light up if both kb layers are active
+ rgblight_set_layer_state(0, layer_state_cmp(state, _FN));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _ADJUST));
+ return state;
+};
+
+#endif // RGBLIGHT_ENABLE
+
+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) {
+ midi_init();
+ my_init();
+
+ // Used to set octave to MI_OCT_0
+ midi_bass_ch = 0, midi_chord_ch = 0; // By default, all use the same channel.
+
+ // UNISON flags
+ melody_dyad_high = false; // true when +1 octave unison dyad is enabled.
+ melody_dyad_low = false; // true when -1 octave unison dyad is enabled.
+ melody_unison_suppress = true; // true: velocity of octave unison note is suppressd to UNISON_VELOCITY_RATIO
+
+ // Reset Bass setting
+ user_config.raw = 0; // default: dyad
+ eeconfig_update_user(user_config.raw);
+
+ // Reset the midi keyboard layout
+ set_single_persistent_default_layer(_C_SYSTEM_BASS2ROW);
+}
+
+void keyboard_post_init_user(void) {
+ my_init();
+
+ for (uint8_t i = 0; i < MY_CHORD_COUNT; i++) {
+ chord_status[i] = MIDI_INVALID_NOTE;
+ }
+
+ for (uint8_t i = 0; i < MIDI_TONE_COUNT; i++) {
+ my_tone_status[i] = MIDI_INVALID_NOTE;
+ }
+ // load EEPROM data for isSingleBass
+ user_config.raw = eeconfig_read_user();
+
+ // When USB cable is connected to the left side keyboard, use QWERTY layout by default.
+ if (is_keyboard_master() && isLeftHand) {
+ default_layer_set(1UL << _QWERTY);
+ }
+
+#ifdef RGBLIGHT_ENABLE
+
+ rgblight_layers = my_rgb_layers;
+
+ // Reset LED off
+ rgblight_sethsv(HSV_BLACK);
+# if defined(RGBLIGHT_EFFECT_KNIGHT) || defined(RGBLIGHT_EFFECT_TWINKLE)
+ rgblight_sethsv(30, 50, 40);
+# ifdef RGBLIGHT_EFFECT_KNIGHT
+ rgblight_mode(RGBLIGHT_MODE_KNIGHT);
+# elif defined(RGBLIGHT_EFFECT_TWINKLE)
+ rgblight_mode(RGBLIGHT_MODE_TWINKLE+3);
+# endif
+# endif
+#endif // RGBLIGHT_ENABLE
+};
+
+void toggle_isSingleBass(void) {
+#ifdef CONSOLE_ENABLE
+ uprintf("isSingleBass(before) %u\n", user_config.isSingleBass);
+#endif
+ user_config.isSingleBass = !user_config.isSingleBass;
+#ifdef CONSOLE_ENABLE
+ uprintf("isSingleBass(after) %u\n", user_config.isSingleBass);
+#endif
+
+ eeconfig_update_user(user_config.raw);
+}
+
+void toggle_MIDI_channel_separation(void) {
+ if (midi_chord_ch > 0) {
+ midi_chord_ch = 0;
+ midi_bass_ch = 0;
+ } else {
+ midi_chord_ch = 1;
+ midi_bass_ch = 2;
+ }
+}
+
+#ifdef RGBLIGHT_ENABLE
+void switch_keylight_color4bass(keyrecord_t *record, uint8_t keylocation){
+ switch (biton32(default_layer_state)) {
+ case _C_SYSTEM_BASE:
+ keylight_manager(record, HSV_GREEN, keylocation);
+ break;
+ case _FAKE_B_SYSTEM:
+ keylight_manager(record, HSV_ORANGE, keylocation);
+ break;
+ case _C_SYSTEM_BASS2ROW:
+ keylight_manager(record, HSV_YELLOW, keylocation);
+ break;
+ case _CFLIP_BASS2ROW:
+ keylight_manager(record, HSV_PURPLE, keylocation);
+ break;
+ }
+}
+void switch_keylight_color4chords(keyrecord_t *record, uint8_t keylocation){
+ switch (biton32(default_layer_state)) {
+ case _C_SYSTEM_BASE:
+ keylight_manager(record, HSV_SPRINGGREEN, keylocation);
+ break;
+ case _FAKE_B_SYSTEM:
+ keylight_manager(record, HSV_YELLOW, keylocation);
+ break;
+ case _C_SYSTEM_BASS2ROW:
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+ break;
+ case _CFLIP_BASS2ROW:
+ keylight_manager(record, HSV_MAGENTA, keylocation);
+ break;
+ }
+}
+#endif // RGBLIGHT_ENABLE
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ uint16_t root_note = MIDI_INVALID_NOTE; // Starting value for the root note of each chord
+
+#ifdef RGBLIGHT_ENABLE
+ /* prepare for turning on LEDs when keys are pressed. */
+ uint8_t r = record->event.key.row;
+ uint8_t c = record->event.key.col;
+ // uint8_t keylocation = convert_key_to_led[MATRIX_COLS * r + c];
+ // uint8_t keylocation2 = convert_key_to_led2[MATRIX_COLS * r + c];
+ uint8_t keylocation = pgm_read_byte(&convert_key_to_led[MATRIX_COLS * r + c]);
+ uint8_t keylocation2 = pgm_read_byte(&convert_key_to_led2[MATRIX_COLS * r + c]);
+#endif // RGBLIGHT_ENABLE
+
+ uint8_t chord = keycode - MY_CHORD_MIN;
+
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+
+ // set default layer and save it to EEPROM when MIDI key layers are selected.
+ case CSYSTEM:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_C_SYSTEM_BASE);
+ }
+ break;
+
+ case BSYSTEM:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_FAKE_B_SYSTEM);
+ }
+ break;
+
+ case CNTBASC:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_C_SYSTEM_BASS2ROW);
+ }
+ break;
+
+ case CSYSALL:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_C_SYSTEM_ENTIRELY);
+ }
+ break;
+
+ case CHRTONE:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_CHROMATONE);
+ }
+ break;
+
+ case CFLIP2B:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_CFLIP_BASS2ROW);
+ }
+ break;
+
+ case TGLBASS:
+ if (record->event.pressed) {
+ toggle_isSingleBass();
+ };
+ break;
+
+ case TGLMICH:
+ if (record->event.pressed) {
+ toggle_MIDI_channel_separation();
+ };
+ break;
+
+ case MELDYAL:
+ if (record->event.pressed) {
+ melody_dyad_low = true;
+ melody_dyad_high = false;
+ };
+ break;
+
+ case MELODYS:
+ if (record->event.pressed) {
+ melody_dyad_low = false;
+ melody_dyad_high = false;
+ };
+ break;
+
+ case MELDYAH:
+ if (record->event.pressed) {
+ melody_dyad_low = false;
+ melody_dyad_high = true;
+ };
+ break;
+
+ case TGLUVEL:
+ if (record->event.pressed) {
+ melody_unison_suppress = !melody_unison_suppress;
+ };
+ break;
+
+ // MIDI Chord Keycodes, on the left side.
+ case MI_CH_Cr ... MI_CH_Br: // Root Notes
+ root_note = keycode - MI_CH_Cr + MI_C_1;
+ my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, IS_SINGLE_BASS());
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4bass(record, keylocation);
+#endif
+ break;
+
+ case MI_CH_C ... MI_CH_B: // Major Chords
+ root_note = keycode - MI_CH_C + MI_C_2;
+ // Root, Major Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4chords(record, keylocation);
+#endif
+ break;
+
+ case MI_CH_Cm ... MI_CH_Bm: // Minor Chord
+ root_note = keycode - MI_CH_Cm + MI_C_2;
+ // Root, Minor Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4chords(record, keylocation);
+#endif
+ break;
+
+ case MI_CH_CDom7 ... MI_CH_BDom7: // Dominant 7th Chord
+ root_note = keycode - MI_CH_CDom7 + MI_C_2;
+ // Major Third, Major Fifth, and Minor Seventh Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4chords(record, keylocation);
+#endif
+ break;
+
+ case MI_CH_CDim7 ... MI_CH_BDim7: // Diminished 7th Chord
+ root_note = keycode - MI_CH_CDim7 + MI_C_2;
+ // Root, Minor Third, and Diminished 5th Note
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4chords(record, keylocation);
+#endif
+ break;
+
+#ifdef RGBLIGHT_ENABLE
+ case KC_A ... KC_RGUI: // for QWERTY
+ case KC_GESC:
+ case ADJ_EIS:
+ case MO_ADJ:
+ case SHIF_UP:
+ keylight_manager(record, HSV_RED, keylocation);
+ break;
+#endif
+
+ // Keycodes on the right side.
+ case MIDI_TONE_MIN ... MIDI_TONE_MAX: // notes on the right side keyboard.
+ // root_note is played by process_midi().
+ if ( melody_dyad_high == true ) { // play 1 octave higher as well.
+ my_process_midi(0, keycode, record, my_tone_status, 12, melody_unison_suppress);
+#ifdef RGBLIGHT_ENABLE
+ keylight_manager(record, HSV_RED, keylocation);
+ keylight_manager(record, HSV_RED, keylocation2);
+#endif
+ } else if ( melody_dyad_low == true ) { // play 1 octave lower as well.
+ my_process_midi(0, keycode, record, my_tone_status, -12, melody_unison_suppress);
+#ifdef RGBLIGHT_ENABLE
+ keylight_manager(record, HSV_CYAN, keylocation);
+ keylight_manager(record, HSV_CYAN, keylocation2);
+#endif
+ } else {
+ uprintf("layer=%u, default_layer_state = %u\n", biton32(default_layer_state), default_layer_state);
+#ifdef RGBLIGHT_ENABLE
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+ keylight_manager(record, HSV_GOLDENROD, keylocation2);
+#endif
+ }
+ break;
+
+#ifdef RGBLIGHT_ENABLE
+ // case KC_MUTE:
+ case FN_MUTE:
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+ break;
+#endif
+ }
+ // If console is enabled, it will print the matrix position and status of each key pressed
+#if defined(CONSOLE_ENABLE) && defined(RGBLIGHT_ENABLE)
+ uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
+ uprintf("r=%d, c=%d, keyloc=%d, keyloc2=%d, matrix_col x r + c = %d\n", r, c, keylocation, keylocation2, MATRIX_COLS * r + c);
+#endif
+ return true;
+}
diff --git a/keyboards/giabalanai/keymaps/2firmware/readme.md b/keyboards/giabalanai/keymaps/2firmware/readme.md
new file mode 100644
index 0000000000..e851c97af8
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/2firmware/readme.md
@@ -0,0 +1,12 @@
+# A personal keymap for giabalanai with RGBLIGHT_ENABLE = yes in rules.mk, which 3araht is using.
+"2firmware" requires writing the firmware separately to left and right keyboards in order to have different functionality when USB cable is connected to the left side keyboard. It can be used without the right side.
+(EE_HANDS is defined in 2firmware/config.h).
+
+When USB cable is connected to the left side keyboard, QWERTY layout is used by default.
+
+
+Use below for writing the firmware to the left side keyboard.
+> make giabalanai:2firmware:avrdude-split-left
+
+Use below for writing the firmware to the right side keyboard.
+> make giabalanai:2firmware:avrdude-split-right
diff --git a/keyboards/giabalanai/keymaps/2firmware/rules.mk b/keyboards/giabalanai/keymaps/2firmware/rules.mk
new file mode 100644
index 0000000000..2ecc5f55c1
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/2firmware/rules.mk
@@ -0,0 +1,4 @@
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+CONSOLE_ENABLE = no # Console for debug
+
+ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
diff --git a/keyboards/giabalanai/keymaps/3araht/keymap.c b/keyboards/giabalanai/keymaps/3araht/keymap.c
new file mode 100644
index 0000000000..418b6e0ceb
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/3araht/keymap.c
@@ -0,0 +1,754 @@
+/* Copyright 2020 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "version.h"
+
+// Alias layout macros that expand groups of keys.
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+
+#define DF_QWER DF(_QWERTY)
+#define DF_COLE DF(_COLEMAK)
+#define MO_ADJ MO(_ADJUST)
+// Long press: go to _FN layer, tap: MUTE
+#define FN_MUTE LT(_FN, KC_MUTE)
+#define SHIF_UP RSFT_T(KC_UP)
+#define ADJ_EIS LT(_ADJUST,KC_LANG2)
+#define MIS_KAN LT(_MISC,KC_LANG1)
+
+// Used to set octave to MI_OCT_0
+extern midi_config_t midi_config;
+uint8_t midi_bass_ch = 0, midi_chord_ch = 0; // By default, all use the same channel.
+
+// UNISON flags
+static bool melody_dyad_high = false; // true when +1 octave unison dyad is enabled.
+static bool melody_dyad_low = false; // true when -1 octave unison dyad is enabled.
+
+static bool melody_unison_suppress = true; // true: velocity of octave unison note is suppressd to UNISON_VELOCITY_RATIO
+
+// To record the status of Bass Chord (single or dyad, default: dyad.)
+typedef union {
+ uint32_t raw;
+ struct {
+ bool isSingleBass:1;
+ };
+} user_config_t;
+user_config_t user_config;
+
+#define IS_SINGLE_BASS() (user_config.isSingleBass)
+
+#ifdef RGBLIGHT_ENABLE
+/* used to specify there is no LED on the keylocation. */
+# define NO_LED 255
+#endif // RGBLIGHT_ENABLE
+
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _C_SYSTEM_BASE, // MIDI C-system
+ _FAKE_B_SYSTEM, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system.
+ _C_SYSTEM_BASS2ROW, // counter bass system
+ _C_SYSTEM_ENTIRELY, // single notes for both left and right keybaords.
+ _C_SYSTEM_FREEBASS, // C-system Free Bass
+ _CHROMATONE,
+ _CFLIP_BASS2ROW, // 180 degree flipped layout on right side keyboard
+ _QWERTY,
+ _COLEMAK,
+ _ADJUST, // for Fn keys, etc.
+ _FN // for changing layers, octaves, etc.
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+
+ // MIDI Chord Keycodes - Root notes
+ MY_CHORD_MIN = SAFE_RANGE,
+
+ MI_CH_Cr = MY_CHORD_MIN,
+ MI_CH_Csr,
+ MI_CH_Dbr = MI_CH_Csr,
+ MI_CH_Dr,
+ MI_CH_Dsr,
+ MI_CH_Ebr = MI_CH_Dsr,
+ MI_CH_Er,
+ MI_CH_Fr,
+ MI_CH_Fsr,
+ MI_CH_Gbr = MI_CH_Fsr,
+ MI_CH_Gr,
+ MI_CH_Gsr,
+ MI_CH_Abr = MI_CH_Gsr,
+ MI_CH_Ar,
+ MI_CH_Asr,
+ MI_CH_Bbr = MI_CH_Asr,
+ MI_CH_Br,
+
+ // MIDI Chord Keycodes - Major
+
+ MI_CH_C,
+ MI_CH_Cs,
+ MI_CH_Db = MI_CH_Cs,
+ MI_CH_D,
+ MI_CH_Ds,
+ MI_CH_Eb = MI_CH_Ds,
+ MI_CH_E,
+ MI_CH_F,
+ MI_CH_Fs,
+ MI_CH_Gb = MI_CH_Fs,
+ MI_CH_G,
+ MI_CH_Gs,
+ MI_CH_Ab = MI_CH_Gs,
+ MI_CH_A,
+ MI_CH_As,
+ MI_CH_Bb = MI_CH_As,
+ MI_CH_B,
+
+ // MIDI Chord Keycodes Minor
+
+ MI_CH_Cm,
+ MI_CH_Csm,
+ MI_CH_Dbm = MI_CH_Csm,
+ MI_CH_Dm,
+ MI_CH_Dsm,
+ MI_CH_Ebm = MI_CH_Dsm,
+ MI_CH_Em,
+ MI_CH_Fm,
+ MI_CH_Fsm,
+ MI_CH_Gbm = MI_CH_Fsm,
+ MI_CH_Gm,
+ MI_CH_Gsm,
+ MI_CH_Abm = MI_CH_Gsm,
+ MI_CH_Am,
+ MI_CH_Asm,
+ MI_CH_Bbm = MI_CH_Asm,
+ MI_CH_Bm,
+
+ //MIDI Chord Keycodes Dominant Seventh
+
+ MI_CH_CDom7,
+ MI_CH_CsDom7,
+ MI_CH_DbDom7 = MI_CH_CsDom7,
+ MI_CH_DDom7,
+ MI_CH_DsDom7,
+ MI_CH_EbDom7 = MI_CH_DsDom7,
+ MI_CH_EDom7,
+ MI_CH_FDom7,
+ MI_CH_FsDom7,
+ MI_CH_GbDom7 = MI_CH_FsDom7,
+ MI_CH_GDom7,
+ MI_CH_GsDom7,
+ MI_CH_AbDom7 = MI_CH_GsDom7,
+ MI_CH_ADom7,
+ MI_CH_AsDom7,
+ MI_CH_BbDom7 = MI_CH_AsDom7,
+ MI_CH_BDom7,
+
+ // MIDI Chord Keycodes Diminished Seventh
+
+ MI_CH_CDim7,
+ MI_CH_CsDim7,
+ MI_CH_DbDim7 = MI_CH_CsDim7,
+ MI_CH_DDim7,
+ MI_CH_DsDim7,
+ MI_CH_EbDim7 = MI_CH_DsDim7,
+ MI_CH_EDim7,
+ MI_CH_FDim7,
+ MI_CH_FsDim7,
+ MI_CH_GbDim7 = MI_CH_FsDim7,
+ MI_CH_GDim7,
+ MI_CH_GsDim7,
+ MI_CH_AbDim7 = MI_CH_GsDim7,
+ MI_CH_ADim7,
+ MI_CH_AsDim7,
+ MI_CH_BbDim7 = MI_CH_AsDim7,
+ MI_CH_BDim7,
+
+ MY_CHORD_MAX = MI_CH_BDim7,
+
+ VERSION,
+ CSYSTEM, // C-SYSTEM layout
+ BSYSTEM, // B-SYSTEM layout
+ CNTBASC, // CouNTer BASs C-system layout
+ CSYSALL, // C-SYStem ALL layout
+ CSYSFBS, // C-SYStem Free BaSs
+ CHRTONE, // CHRomaTONE layout
+ CFLIP2B, // C-system FLIPped 2(to) Backwards
+ TGLBASS, // ToGgLe BASS unison
+ TGLMICH, // ToGgLe MIdi CHannel separation
+ MELDYAL, // MELody DYad Low
+ MELODYS, // MELODY Single
+ MELDYAH, // MELody DYad High
+ TGLUVEL // ToGgLe Unison VELocity
+};
+
+#define MY_CHORD_COUNT (MY_CHORD_MAX - MY_CHORD_MIN + 1)
+static uint8_t chord_status[MY_CHORD_COUNT];
+static uint8_t my_tone_status[MIDI_TONE_COUNT];
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* C-system Base */
+ [_C_SYSTEM_BASE] = LAYOUT(
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+ MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
+
+ MI_Fs_2,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5, FN_MUTE,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5
+ ),
+
+ /* fake B-system */
+ [_FAKE_B_SYSTEM] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+
+ MI_Ab_2,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Gb_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Gb_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Gb_5, _______,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5
+ ),
+
+ /* BASS2row */
+ [_C_SYSTEM_BASS2ROW] = LAYOUT(
+ MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, MI_CH_Csr, MI_CH_Gsr, MI_CH_Dsr, MI_CH_Asr,
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+
+ MI_Fs_2,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5, _______,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5
+ ),
+
+ /* C-system entirely */
+ [_C_SYSTEM_ENTIRELY] = LAYOUT(
+ MI_BENDU, XXXXXXX, XXXXXXX, MI_Db, MI_E, MI_G, MI_Bb, MI_Db_1, MI_E_1, MI_G_1, MI_Bb_1, MI_Db_2,
+ MI_BENDD, XXXXXXX, MI_C, MI_Eb, MI_Fs, MI_A, MI_C_1, MI_Eb_1, MI_Fs_1, MI_A_1, MI_C_2, MI_Eb_2,
+ XXXXXXX, XXXXXXX, MI_D, MI_F, MI_Ab, MI_B, MI_D_1, MI_F_1, MI_Ab_1, MI_B_1, MI_D_2, MI_F_2,
+ XXXXXXX, MI_Db, MI_E, MI_G, MI_Bb, MI_Db_1, MI_E_1, MI_G_1, MI_Bb_1, MI_Db_2, MI_E_2, MI_G_2,
+ MI_C, MI_Eb, MI_Fs, MI_A, MI_C_1, MI_Eb_1, MI_Fs_1, MI_A_1, MI_C_2, MI_Eb_2, MI_Fs_2, MI_A_2,
+
+ MI_Fs_2,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5, FN_MUTE,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5
+ ),
+
+ /* C-system free bass */
+ [_C_SYSTEM_FREEBASS] = LAYOUT(
+ MI_Db_3, MI_Bb_2, MI_G_2, MI_E_2, MI_Db_2, MI_Bb_1, MI_G_1, MI_E_1, MI_Db_1, MI_Bb, MI_G, MI_E,
+ MI_C_3, MI_A_2, MI_Fs_2, MI_Eb_2, MI_C_2, MI_A_1, MI_Fs_1, MI_Eb_1, MI_C_1, MI_A, MI_Fs, MI_Eb,
+ MI_B_2, MI_Ab_2, MI_F_2, MI_D_2, MI_B_1, MI_Ab_1, MI_F_1, MI_D_1, MI_B, MI_Ab, MI_F, MI_D,
+ MI_Bb_2, MI_G_2, MI_E_2, MI_Db_2, MI_Bb_1, MI_G_1, MI_E_1, MI_Db_1, MI_Bb, MI_G, MI_E, MI_Db,
+ MI_A_2, MI_Fs_2, MI_Eb_2, MI_C_2, MI_A_1, MI_Fs_1, MI_Eb_1, MI_C_1, MI_A, MI_Fs, MI_Eb, MI_C,
+
+ MI_Fs_2,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5, FN_MUTE,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5
+ ),
+
+ /* Chromatone */
+ [_CHROMATONE] = LAYOUT(
+ MI_Db, MI_Eb, MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1, MI_A_1, MI_B_1,
+ MI_D, MI_E, MI_Fs, MI_Ab, MI_Bb, MI_C_1, MI_D_1, MI_E_1, MI_Fs_1, MI_Ab_1, MI_Bb_1, MI_C_2,
+ MI_Eb, MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1, MI_A_1, MI_B_1, MI_Db_2,
+ MI_E, MI_Fs, MI_Ab, MI_Bb, MI_C_1, MI_D_1, MI_E_1, MI_Fs_1, MI_Ab_1, MI_Bb_1, MI_C_2, MI_D_2,
+ MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1, MI_A_1, MI_B_1, MI_Db_2, MI_Eb_2,
+
+ MI_C_2,
+ MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, FN_MUTE,
+ MI_C_2, MI_D_2, MI_E_2, MI_Gb_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Gb_3, MI_Ab_3, MI_Bb_3, MI_C_4,
+ MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3
+ ),
+
+ [_CFLIP_BASS2ROW] = LAYOUT(
+ MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, MI_CH_Csr, MI_CH_Gsr, MI_CH_Dsr, MI_CH_Asr,
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+
+ MI_G_5,
+ MI_F_5, MI_D_5, MI_B_4, MI_Ab_4, MI_F_4, MI_D_4, MI_B_3, MI_Ab_3, MI_F_3, MI_D_3, MI_B_2, MI_Ab_2, FN_MUTE,
+ MI_Fs_5, MI_Eb_5, MI_C_5, MI_A_4, MI_Fs_4, MI_Eb_4, MI_C_4, MI_A_3, MI_Fs_3, MI_Eb_3, MI_C_3, MI_A_2, MI_Fs_2,
+ MI_E_5, MI_Db_5, MI_Bb_4, MI_G_4, MI_E_4, MI_Db_4, MI_Bb_3, MI_G_3, MI_E_3, MI_Db_3, MI_Bb_2, MI_G_2
+ ),
+
+ /* QWERTY */
+ [_QWERTY] = LAYOUT_wrapper(
+ KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC,
+ KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_DEL,
+ KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_ENT,
+ KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, ADJ_EIS, KC_SPC, KC_SPC, KC_LANG1, KC_APP, MO_ADJ, KC_LEFT, KC_DOWN, KC_RGHT,
+
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* COLEMAK */
+ [_COLEMAK] = LAYOUT_wrapper(
+ KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC,
+ KC_TAB, _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, KC_DEL,
+ KC_LCTL, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_ENT,
+ KC_LSFT, _________________COLEMAK_L3________________, _________________COLEMAK_R3________________, SHIF_UP,
+ KC_CAPS, KC_LGUI, KC_LALT, ADJ_EIS, KC_SPC, KC_SPC, KC_LANG1, KC_APP, MO_ADJ, KC_LEFT, KC_DOWN, KC_RGHT,
+
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* ADJUST */
+ [_ADJUST] = LAYOUT_wrapper(
+ _______, _________________FUNC__L___________________, _________________FUNC__R___________________, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, _______,
+ _______, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_GRV, _______,
+ _______, KC_BRID, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_BSLS, _______,
+
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+
+ /* Fn */
+ [_FN] = LAYOUT(
+ CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG,
+ DF_QWER, TGLBASS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ DF_COLE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLMICH,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ XXXXXXX,
+ MI_OCT_N2, MI_OCT_N1, MI_OCT_0, MI_OCT_1, MI_OCT_2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, EEP_RST, _______,
+ CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, XXXXXXX, XXXXXXX, MI_VELD, MI_VELU, XXXXXXX, RGB_TOG,
+ XXXXXXX, TGLBASS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLUVEL, MELDYAL, MELODYS, MELDYAH
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FAKE_B_SYSTEM] = { ENCODER_CCW_CW(_______, _______) },
+ [_C_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) },
+ [_C_SYSTEM_ENTIRELY] = { ENCODER_CCW_CW(_______, _______) },
+ [_C_SYSTEM_FREEBASS] = { ENCODER_CCW_CW(_______, _______) },
+ [_CHROMATONE] = { ENCODER_CCW_CW(_______, _______) },
+ [_CFLIP_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) },
+ [_QWERTY] = { ENCODER_CCW_CW(_______, _______) },
+ [_COLEMAK] = { ENCODER_CCW_CW(_______, _______) },
+ [_ADJUST] = { ENCODER_CCW_CW(_______, _______) },
+ [_FN] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+
+// Light up adjust layer keys (left keyboard)
+const rgblight_segment_t PROGMEM my_adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, 10, HSV_ORANGE},
+ {21, 2, HSV_ORANGE},
+ {25, 3, HSV_ORANGE},
+ {30, 5, HSV_ORANGE},
+ {37, 2, HSV_ORANGE},
+ {45, 2, HSV_ORANGE},
+ {57, 2, HSV_ORANGE}
+);
+
+// Light up fn layer keys
+const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( // left keyboard
+ {0, 7, HSV_ORANGE}, // MIDI layouts
+ {11, 1, HSV_RED}, // RGB_TOG
+ {12, 1, HSV_WHITE}, // DF_QWER
+ {13, 1, HSV_CORAL}, // TGLBASS
+ {24, 1, HSV_WHITE}, // DF_COLE
+ {35, 1, HSV_TEAL}, // TGLMICH
+#if 0 // Color Test
+ {36, 1, HSV_WHITE},
+ {37, 1, HSV_RED},
+ {38, 1, HSV_CORAL},
+ {39, 1, HSV_ORANGE},
+ {40, 1, HSV_GOLDENROD},
+ {41, 1, HSV_GOLD},
+ {42, 1, HSV_YELLOW},
+ {43, 1, HSV_CHARTREUSE},
+ {44, 1, HSV_GREEN},
+ {45, 1, HSV_SPRINGGREEN},
+ {46, 1, HSV_TURQUOISE},
+ {47, 1, HSV_TEAL},
+ {48, 1, HSV_CYAN},
+ {49, 1, HSV_AZURE},
+ {50, 1, HSV_BLUE},
+ {51, 1, HSV_PURPLE},
+ {52, 1, HSV_MAGENTA},
+ {53, 1, HSV_PINK},
+#endif
+ // right keyboard
+ {60, 7, HSV_ORANGE}, // MIDI layouts
+ {74, 1, HSV_CORAL}, // TGLBASS
+ {85, 1, HSV_BLUE}, // MIDI Oct
+ {86, 1, HSV_CYAN}, // MIDI Oct
+ {87, 1, HSV_SPRINGGREEN}, // MIDI Oct
+ {88, 1, HSV_GREEN}, // MIDI Oct
+ {89, 1, HSV_CHARTREUSE}, // MIDI Oct
+ {96, 1, HSV_PINK}, // EEP_RST
+ {98, 7, HSV_ORANGE}, // MIDI layouts
+ {107, 1, HSV_YELLOW}, // MI_VELD
+ {108, 1, HSV_GREEN}, // MI_VELU
+ {110, 1, HSV_RED}, // RGB_TOG
+ {112, 1, HSV_CORAL}, // TGLBASS
+ {119, 1, HSV_CORAL}, // TGLUVEL
+ {120, 1, HSV_CYAN}, // MELDYAL
+ {121, 1, HSV_GOLD}, // MELODYS
+ {122, 1, HSV_SPRINGGREEN} // MELDYAH
+);
+
+// Now define the array of layers. Later layers take precedence
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_fn_layer, my_adjust_layer);
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ // Both layers will light up if both kb layers are active
+ rgblight_set_layer_state(0, layer_state_cmp(state, _FN));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _ADJUST));
+ return state;
+};
+
+#endif // RGBLIGHT_ENABLE
+
+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) {
+ midi_init();
+ my_init();
+
+ // Used to set octave to MI_OCT_0
+ midi_bass_ch = 0, midi_chord_ch = 0; // By default, all use the same channel.
+
+ // UNISON flags
+ melody_dyad_high = false; // true when +1 octave unison dyad is enabled.
+ melody_dyad_low = false; // true when -1 octave unison dyad is enabled.
+ melody_unison_suppress = true; // true: velocity of octave unison note is suppressd to UNISON_VELOCITY_RATIO
+
+ // Reset Bass setting
+ user_config.raw = 0; // default: dyad
+ eeconfig_update_user(user_config.raw);
+
+ // Reset the midi keyboard layout
+ set_single_persistent_default_layer(_C_SYSTEM_BASS2ROW);
+}
+
+void keyboard_post_init_user(void) {
+ my_init();
+
+ for (uint8_t i = 0; i < MY_CHORD_COUNT; i++) {
+ chord_status[i] = MIDI_INVALID_NOTE;
+ }
+
+ for (uint8_t i = 0; i < MIDI_TONE_COUNT; i++) {
+ my_tone_status[i] = MIDI_INVALID_NOTE;
+ }
+ // load EEPROM data for isSingleBass
+ user_config.raw = eeconfig_read_user();
+
+#ifdef RGBLIGHT_ENABLE
+
+ rgblight_layers = my_rgb_layers;
+
+ // Reset LED off
+ rgblight_sethsv(HSV_BLACK);
+# if defined(RGBLIGHT_EFFECT_KNIGHT) || defined(RGBLIGHT_EFFECT_TWINKLE)
+ rgblight_sethsv(30, 50, 40);
+# ifdef RGBLIGHT_EFFECT_KNIGHT
+ rgblight_mode(RGBLIGHT_MODE_KNIGHT);
+# elif defined(RGBLIGHT_EFFECT_TWINKLE)
+ rgblight_mode(RGBLIGHT_MODE_TWINKLE+3);
+# endif
+# endif
+#endif // RGBLIGHT_ENABLE
+};
+
+void toggle_isSingleBass(void) {
+#ifdef CONSOLE_ENABLE
+ uprintf("isSingleBass(before) %u\n", user_config.isSingleBass);
+#endif
+ user_config.isSingleBass = !user_config.isSingleBass;
+#ifdef CONSOLE_ENABLE
+ uprintf("isSingleBass(after) %u\n", user_config.isSingleBass);
+#endif
+
+ eeconfig_update_user(user_config.raw);
+}
+
+void toggle_MIDI_channel_separation(void) {
+ if (midi_chord_ch > 0) {
+ midi_chord_ch = 0;
+ midi_bass_ch = 0;
+ } else {
+ midi_chord_ch = 1;
+ midi_bass_ch = 2;
+ }
+}
+
+#ifdef RGBLIGHT_ENABLE
+void switch_keylight_color4bass(keyrecord_t *record, uint8_t keylocation){
+ switch (biton32(default_layer_state)) {
+ case _C_SYSTEM_BASE:
+ keylight_manager(record, HSV_GREEN, keylocation);
+ break;
+ case _FAKE_B_SYSTEM:
+ keylight_manager(record, HSV_ORANGE, keylocation);
+ break;
+ case _C_SYSTEM_BASS2ROW:
+ keylight_manager(record, HSV_YELLOW, keylocation);
+ break;
+ case _CFLIP_BASS2ROW:
+ keylight_manager(record, HSV_PURPLE, keylocation);
+ break;
+ }
+}
+void switch_keylight_color4chords(keyrecord_t *record, uint8_t keylocation){
+ switch (biton32(default_layer_state)) {
+ case _C_SYSTEM_BASE:
+ keylight_manager(record, HSV_SPRINGGREEN, keylocation);
+ break;
+ case _FAKE_B_SYSTEM:
+ keylight_manager(record, HSV_YELLOW, keylocation);
+ break;
+ case _C_SYSTEM_BASS2ROW:
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+ break;
+ case _CFLIP_BASS2ROW:
+ keylight_manager(record, HSV_MAGENTA, keylocation);
+ break;
+ }
+}
+#endif // RGBLIGHT_ENABLE
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ uint16_t root_note = MIDI_INVALID_NOTE; // Starting value for the root note of each chord
+
+#ifdef RGBLIGHT_ENABLE
+ /* prepare for turning on LEDs when keys are pressed. */
+ uint8_t r = record->event.key.row;
+ uint8_t c = record->event.key.col;
+ // uint8_t keylocation = convert_key_to_led[MATRIX_COLS * r + c];
+ // uint8_t keylocation2 = convert_key_to_led2[MATRIX_COLS * r + c];
+ uint8_t keylocation = pgm_read_byte(&convert_key_to_led[MATRIX_COLS * r + c]);
+ uint8_t keylocation2 = pgm_read_byte(&convert_key_to_led2[MATRIX_COLS * r + c]);
+#endif // RGBLIGHT_ENABLE
+
+ uint8_t chord = keycode - MY_CHORD_MIN;
+
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+
+ // set default layer and save it to EEPROM when MIDI key layers are selected.
+ case CSYSTEM:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_C_SYSTEM_BASE);
+ }
+ break;
+
+ case BSYSTEM:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_FAKE_B_SYSTEM);
+ }
+ break;
+
+ case CNTBASC:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_C_SYSTEM_BASS2ROW);
+ }
+ break;
+
+ case CSYSALL:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_C_SYSTEM_ENTIRELY);
+ }
+ break;
+
+ case CHRTONE:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_CHROMATONE);
+ }
+ break;
+
+ case CFLIP2B:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_CFLIP_BASS2ROW);
+ }
+ break;
+
+ case CSYSFBS:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_C_SYSTEM_FREEBASS);
+ }
+ break;
+
+ case TGLBASS:
+ if (record->event.pressed) {
+ toggle_isSingleBass();
+ };
+ break;
+
+ case TGLMICH:
+ if (record->event.pressed) {
+ toggle_MIDI_channel_separation();
+ };
+ break;
+
+ case MELDYAL:
+ if (record->event.pressed) {
+ melody_dyad_low = true;
+ melody_dyad_high = false;
+ };
+ break;
+
+ case MELODYS:
+ if (record->event.pressed) {
+ melody_dyad_low = false;
+ melody_dyad_high = false;
+ };
+ break;
+
+ case MELDYAH:
+ if (record->event.pressed) {
+ melody_dyad_low = false;
+ melody_dyad_high = true;
+ };
+ break;
+
+ case TGLUVEL:
+ if (record->event.pressed) {
+ melody_unison_suppress = !melody_unison_suppress;
+ };
+ break;
+
+ // MIDI Chord Keycodes, on the left side.
+ case MI_CH_Cr ... MI_CH_Br: // Root Notes
+ root_note = keycode - MI_CH_Cr + MI_C_1;
+ my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, IS_SINGLE_BASS());
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4bass(record, keylocation);
+#endif
+ break;
+
+ case MI_CH_C ... MI_CH_B: // Major Chords
+ root_note = keycode - MI_CH_C + MI_C_2;
+ // Root, Major Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4chords(record, keylocation);
+#endif
+ break;
+
+ case MI_CH_Cm ... MI_CH_Bm: // Minor Chord
+ root_note = keycode - MI_CH_Cm + MI_C_2;
+ // Root, Minor Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4chords(record, keylocation);
+#endif
+ break;
+
+ case MI_CH_CDom7 ... MI_CH_BDom7: // Dominant 7th Chord
+ root_note = keycode - MI_CH_CDom7 + MI_C_2;
+ // Major Third, Major Fifth, and Minor Seventh Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4chords(record, keylocation);
+#endif
+ break;
+
+ case MI_CH_CDim7 ... MI_CH_BDim7: // Diminished 7th Chord
+ root_note = keycode - MI_CH_CDim7 + MI_C_2;
+ // Root, Minor Third, and Diminished 5th Note
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4chords(record, keylocation);
+#endif
+ break;
+
+#ifdef RGBLIGHT_ENABLE
+ case KC_A ... KC_RGUI: // for QWERTY
+ case KC_GESC:
+ case ADJ_EIS:
+ case MO_ADJ:
+ case SHIF_UP:
+ keylight_manager(record, HSV_RED, keylocation);
+ break;
+#endif
+
+ // Keycodes on the right side.
+ case MIDI_TONE_MIN ... MIDI_TONE_MAX: // notes on the right side keyboard.
+ // root_note is played by process_midi().
+ if ( melody_dyad_high == true ) { // play 1 octave higher as well.
+ my_process_midi(0, keycode, record, my_tone_status, 12, melody_unison_suppress);
+#ifdef RGBLIGHT_ENABLE
+ keylight_manager(record, HSV_RED, keylocation);
+ keylight_manager(record, HSV_RED, keylocation2);
+#endif
+ } else if ( melody_dyad_low == true ) { // play 1 octave lower as well.
+ my_process_midi(0, keycode, record, my_tone_status, -12, melody_unison_suppress);
+#ifdef RGBLIGHT_ENABLE
+ keylight_manager(record, HSV_CYAN, keylocation);
+ keylight_manager(record, HSV_CYAN, keylocation2);
+#endif
+ } else {
+ uprintf("layer=%u, default_layer_state = %u\n", biton32(default_layer_state), default_layer_state);
+#ifdef RGBLIGHT_ENABLE
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+ keylight_manager(record, HSV_GOLDENROD, keylocation2);
+#endif
+ }
+ break;
+
+#ifdef RGBLIGHT_ENABLE
+ // case KC_MUTE:
+ case FN_MUTE:
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+ break;
+#endif
+ }
+ // If console is enabled, it will print the matrix position and status of each key pressed
+#if defined(CONSOLE_ENABLE) && defined(RGBLIGHT_ENABLE)
+ uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
+ uprintf("r=%d, c=%d, keyloc=%d, keyloc2=%d, matrix_col x r + c = %d\n", r, c, keylocation, keylocation2, MATRIX_COLS * r + c);
+#endif
+ return true;
+}
diff --git a/keyboards/giabalanai/keymaps/3araht/readme.md b/keyboards/giabalanai/keymaps/3araht/readme.md
new file mode 100644
index 0000000000..a731456db6
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/3araht/readme.md
@@ -0,0 +1 @@
+# A personal keymap for giabalanai with RGBLIGHT_ENABLE = yes in rules.mk, which 3araht is using.
diff --git a/keyboards/giabalanai/keymaps/3araht/rules.mk b/keyboards/giabalanai/keymaps/3araht/rules.mk
new file mode 100644
index 0000000000..2ecc5f55c1
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/3araht/rules.mk
@@ -0,0 +1,4 @@
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+CONSOLE_ENABLE = no # Console for debug
+
+ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
diff --git a/keyboards/giabalanai/keymaps/default/keymap.c b/keyboards/giabalanai/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7b5f524a4f
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/default/keymap.c
@@ -0,0 +1,259 @@
+/* Copyright 2020 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+// Alias layout macros that expand groups of keys.
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+
+#define DFCBASE DF(_C_SYSTEM_BASE)
+#define DF_QWER DF(_QWERTY)
+// Long press: go to _FN layer, tap: MUTE
+#define FN_MUTE LT(_FN, KC_MUTE)
+
+// Used to set octave to MI_OCT_0
+extern midi_config_t midi_config;
+uint8_t midi_bass_ch = 0, midi_chord_ch = 0; // By default, all use the same channel.
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _C_SYSTEM_BASE, // MIDI C-system
+ _QWERTY, // just in case
+ _FN
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+
+ // MIDI Chord Keycodes - Root notes
+ MY_CHORD_MIN = SAFE_RANGE,
+
+ MI_CH_Cr = MY_CHORD_MIN,
+ MI_CH_Csr,
+ MI_CH_Dbr = MI_CH_Csr,
+ MI_CH_Dr,
+ MI_CH_Dsr,
+ MI_CH_Ebr = MI_CH_Dsr,
+ MI_CH_Er,
+ MI_CH_Fr,
+ MI_CH_Fsr,
+ MI_CH_Gbr = MI_CH_Fsr,
+ MI_CH_Gr,
+ MI_CH_Gsr,
+ MI_CH_Abr = MI_CH_Gsr,
+ MI_CH_Ar,
+ MI_CH_Asr,
+ MI_CH_Bbr = MI_CH_Asr,
+ MI_CH_Br,
+
+ // MIDI Chord Keycodes - Major
+
+ MI_CH_C,
+ MI_CH_Cs,
+ MI_CH_Db = MI_CH_Cs,
+ MI_CH_D,
+ MI_CH_Ds,
+ MI_CH_Eb = MI_CH_Ds,
+ MI_CH_E,
+ MI_CH_F,
+ MI_CH_Fs,
+ MI_CH_Gb = MI_CH_Fs,
+ MI_CH_G,
+ MI_CH_Gs,
+ MI_CH_Ab = MI_CH_Gs,
+ MI_CH_A,
+ MI_CH_As,
+ MI_CH_Bb = MI_CH_As,
+ MI_CH_B,
+
+ // MIDI Chord Keycodes Minor
+
+ MI_CH_Cm,
+ MI_CH_Csm,
+ MI_CH_Dbm = MI_CH_Csm,
+ MI_CH_Dm,
+ MI_CH_Dsm,
+ MI_CH_Ebm = MI_CH_Dsm,
+ MI_CH_Em,
+ MI_CH_Fm,
+ MI_CH_Fsm,
+ MI_CH_Gbm = MI_CH_Fsm,
+ MI_CH_Gm,
+ MI_CH_Gsm,
+ MI_CH_Abm = MI_CH_Gsm,
+ MI_CH_Am,
+ MI_CH_Asm,
+ MI_CH_Bbm = MI_CH_Asm,
+ MI_CH_Bm,
+
+ //MIDI Chord Keycodes Dominant Seventh
+
+ MI_CH_CDom7,
+ MI_CH_CsDom7,
+ MI_CH_DbDom7 = MI_CH_CsDom7,
+ MI_CH_DDom7,
+ MI_CH_DsDom7,
+ MI_CH_EbDom7 = MI_CH_DsDom7,
+ MI_CH_EDom7,
+ MI_CH_FDom7,
+ MI_CH_FsDom7,
+ MI_CH_GbDom7 = MI_CH_FsDom7,
+ MI_CH_GDom7,
+ MI_CH_GsDom7,
+ MI_CH_AbDom7 = MI_CH_GsDom7,
+ MI_CH_ADom7,
+ MI_CH_AsDom7,
+ MI_CH_BbDom7 = MI_CH_AsDom7,
+ MI_CH_BDom7,
+
+ // MIDI Chord Keycodes Diminished Seventh
+
+ MI_CH_CDim7,
+ MI_CH_CsDim7,
+ MI_CH_DbDim7 = MI_CH_CsDim7,
+ MI_CH_DDim7,
+ MI_CH_DsDim7,
+ MI_CH_EbDim7 = MI_CH_DsDim7,
+ MI_CH_EDim7,
+ MI_CH_FDim7,
+ MI_CH_FsDim7,
+ MI_CH_GbDim7 = MI_CH_FsDim7,
+ MI_CH_GDim7,
+ MI_CH_GsDim7,
+ MI_CH_AbDim7 = MI_CH_GsDim7,
+ MI_CH_ADim7,
+ MI_CH_AsDim7,
+ MI_CH_BbDim7 = MI_CH_AsDim7,
+ MI_CH_BDim7,
+
+ MY_CHORD_MAX = MI_CH_BDim7,
+
+ VERSION
+};
+
+#define MY_CHORD_COUNT (MY_CHORD_MAX - MY_CHORD_MIN + 1)
+static uint8_t chord_status[MY_CHORD_COUNT];
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* C-system Base */
+ [_C_SYSTEM_BASE] = LAYOUT(
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+ MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
+
+ MI_Fs_2,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5, FN_MUTE,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5
+ ),
+
+ /* QWERTY */
+ [_QWERTY] = LAYOUT_wrapper(
+ KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC,
+ KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_DEL,
+ KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_ENT,
+ KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_LANG2, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LANG1, KC_RALT, KC_RGUI, KC_RCTRL,
+
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* Fn */
+ [_FN] = LAYOUT(
+ DFCBASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ DF_QWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, XXXXXXX, _______,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_QWERTY] = { ENCODER_CCW_CW(_______, _______) },
+ [_FN] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
+
+void keyboard_post_init_user(void) {
+ // Set otave 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;
+
+ for (uint8_t i = 0; i < MY_CHORD_COUNT; i++) {
+ chord_status[i] = MIDI_INVALID_NOTE;
+ }
+
+ default_layer_set(1UL << _C_SYSTEM_BASE);
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ uint16_t root_note = MIDI_INVALID_NOTE; // Starting value for the root note of each chord
+
+ uint8_t chord = keycode - MY_CHORD_MIN;
+
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+
+ // MIDI Chord Keycodes, on the left side.
+ case MI_CH_Cr ... MI_CH_Br: // Root Notes
+ root_note = keycode - MI_CH_Cr + MI_C_1;
+ my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, false);
+ break;
+
+ case MI_CH_C ... MI_CH_B: // Major Chords
+ root_note = keycode - MI_CH_C + MI_C_2;
+ // Root, Major Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
+ break;
+
+ case MI_CH_Cm ... MI_CH_Bm: // Minor Chord
+ root_note = keycode - MI_CH_Cm + MI_C_2;
+ // Root, Minor Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
+ break;
+
+ case MI_CH_CDom7 ... MI_CH_BDom7: // Dominant 7th Chord
+ root_note = keycode - MI_CH_CDom7 + MI_C_2;
+ // Major Third, Major Fifth, and Minor Seventh Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
+ break;
+
+ case MI_CH_CDim7 ... MI_CH_BDim7: // Diminished 7th Chord
+ root_note = keycode - MI_CH_CDim7 + MI_C_2;
+ // Root, Minor Third, and Diminished 5th Note
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/giabalanai/keymaps/default/readme.md b/keyboards/giabalanai/keymaps/default/readme.md
new file mode 100644
index 0000000000..d929aa1f5e
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for giabalanai
diff --git a/keyboards/giabalanai/keymaps/default/rules.mk b/keyboards/giabalanai/keymaps/default/rules.mk
new file mode 100644
index 0000000000..8006608ea9
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
diff --git a/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h b/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h
new file mode 100644
index 0000000000..684287ba98
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/default_giabarinaix2/config.h
@@ -0,0 +1,26 @@
+#pragma once
+
+#define GIABARINAIX2
+#ifdef GIABARINAIX2
+# undef MATRIX_ROW_PINS_RIGHT
+# undef MATRIX_COL_PINS_RIGHT
+
+# ifdef RGBLIGHT_ENABLE
+# undef RGBLED_NUM
+# define RGBLED_NUM 120
+# undef RGBLIGHT_LED_MAP
+# define RGBLIGHT_LED_MAP { \
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, \
+ 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, \
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, \
+ 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, \
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, \
+ \
+ 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, \
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, \
+ 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, \
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, \
+ 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48 \
+ }
+# endif
+#endif
diff --git a/keyboards/giabalanai/keymaps/default_giabarinaix2/info.json b/keyboards/giabalanai/keymaps/default_giabarinaix2/info.json
new file mode 100644
index 0000000000..20a52326dd
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/default_giabarinaix2/info.json
@@ -0,0 +1,146 @@
+{
+ "keyboard_name": "giabarinaix2",
+ "manufacturer": "3araht",
+ "url": "https://github.com/3araht",
+ "maintainer": "3araht",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xF4B2",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "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": "l06", "x": 6, "y": 0},
+ {"label": "l07", "x": 7, "y": 0},
+ {"label": "l08", "x": 8, "y": 0},
+ {"label": "l09", "x": 9, "y": 0},
+ {"label": "l0a", "x": 10, "y": 0},
+ {"label": "l0b", "x": 11, "y": 0},
+
+ {"label": "r00", "x": 14.5, "y": 0},
+ {"label": "r01", "x": 15.5, "y": 0},
+ {"label": "r02", "x": 16.5, "y": 0},
+ {"label": "r03", "x": 17.5, "y": 0},
+ {"label": "r04", "x": 18.5, "y": 0},
+ {"label": "r05", "x": 19.5, "y": 0},
+ {"label": "r06", "x": 20.5, "y": 0},
+ {"label": "r07", "x": 21.5, "y": 0},
+ {"label": "r08", "x": 22.5, "y": 0},
+ {"label": "r09", "x": 23.5, "y": 0},
+ {"label": "r0a", "x": 24.5, "y": 0},
+ {"label": "r0b", "x": 25.5, "y": 0},
+
+ {"label": "l10", "x": 0.5, "y": 1},
+ {"label": "l11", "x": 1.5, "y": 1},
+ {"label": "l12", "x": 2.5, "y": 1},
+ {"label": "l13", "x": 3.5, "y": 1},
+ {"label": "l14", "x": 4.5, "y": 1},
+ {"label": "l15", "x": 5.5, "y": 1},
+ {"label": "l16", "x": 6.5, "y": 1},
+ {"label": "l17", "x": 7.5, "y": 1},
+ {"label": "l18", "x": 8.5, "y": 1},
+ {"label": "l19", "x": 9.5, "y": 1},
+ {"label": "l1a", "x": 10.5, "y": 1},
+ {"label": "l1b", "x": 11.5, "y": 1},
+
+ {"label": "r10", "x": 15, "y": 1},
+ {"label": "r11", "x": 16, "y": 1},
+ {"label": "r12", "x": 17, "y": 1},
+ {"label": "r13", "x": 18, "y": 1},
+ {"label": "r14", "x": 19, "y": 1},
+ {"label": "r15", "x": 20, "y": 1},
+ {"label": "r16", "x": 21, "y": 1},
+ {"label": "r17", "x": 22, "y": 1},
+ {"label": "r18", "x": 23, "y": 1},
+ {"label": "r19", "x": 24, "y": 1},
+ {"label": "r1a", "x": 25, "y": 1},
+ {"label": "r1b", "x": 26, "y": 1},
+
+ {"label": "l20", "x": 1, "y": 2},
+ {"label": "l21", "x": 2, "y": 2},
+ {"label": "l22", "x": 3, "y": 2},
+ {"label": "l23", "x": 4, "y": 2},
+ {"label": "l24", "x": 5, "y": 2},
+ {"label": "l25", "x": 6, "y": 2},
+ {"label": "l26", "x": 7, "y": 2},
+ {"label": "l27", "x": 8, "y": 2},
+ {"label": "l28", "x": 9, "y": 2},
+ {"label": "l29", "x": 10, "y": 2},
+ {"label": "l2a", "x": 11, "y": 2},
+ {"label": "l2b", "x": 12, "y": 2},
+
+ {"label": "r20", "x": 15.5, "y": 2},
+ {"label": "r21", "x": 16.5, "y": 2},
+ {"label": "r22", "x": 17.5, "y": 2},
+ {"label": "r23", "x": 18.5, "y": 2},
+ {"label": "r24", "x": 19.5, "y": 2},
+ {"label": "r25", "x": 20.5, "y": 2},
+ {"label": "r26", "x": 21.5, "y": 2},
+ {"label": "r27", "x": 22.5, "y": 2},
+ {"label": "r28", "x": 23.5, "y": 2},
+ {"label": "r29", "x": 24.5, "y": 2},
+ {"label": "r2a", "x": 25.5, "y": 2},
+ {"label": "r2b", "x": 26.5, "y": 2},
+
+ {"label": "l30", "x": 1.5, "y": 3},
+ {"label": "l31", "x": 2.5, "y": 3},
+ {"label": "l32", "x": 3.5, "y": 3},
+ {"label": "l33", "x": 4.5, "y": 3},
+ {"label": "l34", "x": 5.5, "y": 3},
+ {"label": "l35", "x": 6.5, "y": 3},
+ {"label": "l36", "x": 7.5, "y": 3},
+ {"label": "l37", "x": 8.5, "y": 3},
+ {"label": "l38", "x": 9.5, "y": 3},
+ {"label": "l39", "x": 10.5, "y": 3},
+ {"label": "l3a", "x": 11.5, "y": 3},
+ {"label": "l3b", "x": 12.5, "y": 3},
+
+ {"label": "r30", "x": 16, "y": 3},
+ {"label": "r31", "x": 17, "y": 3},
+ {"label": "r32", "x": 18, "y": 3},
+ {"label": "r33", "x": 19, "y": 3},
+ {"label": "r34", "x": 20, "y": 3},
+ {"label": "r35", "x": 21, "y": 3},
+ {"label": "r36", "x": 22, "y": 3},
+ {"label": "r37", "x": 23, "y": 3},
+ {"label": "r38", "x": 24, "y": 3},
+ {"label": "r39", "x": 25, "y": 3},
+ {"label": "r3a", "x": 26, "y": 3},
+ {"label": "r3b", "x": 27, "y": 3},
+
+ {"label": "l40", "x": 2, "y": 4},
+ {"label": "l41", "x": 3, "y": 4},
+ {"label": "l42", "x": 4, "y": 4},
+ {"label": "l43", "x": 5, "y": 4},
+ {"label": "l44", "x": 6, "y": 4},
+ {"label": "l45", "x": 7, "y": 4},
+ {"label": "l46", "x": 8, "y": 4},
+ {"label": "l47", "x": 9, "y": 4},
+ {"label": "l48", "x": 10, "y": 4},
+ {"label": "l49", "x": 11, "y": 4},
+ {"label": "l4a", "x": 12, "y": 4},
+ {"label": "l4b", "x": 13, "y": 4},
+
+ {"label": "r40", "x": 16.5, "y": 4},
+ {"label": "r41", "x": 17.5, "y": 4},
+ {"label": "r42", "x": 18.5, "y": 4},
+ {"label": "r43", "x": 19.5, "y": 4},
+ {"label": "r44", "x": 20.5, "y": 4},
+ {"label": "r45", "x": 21.5, "y": 4},
+ {"label": "r46", "x": 22.5, "y": 4},
+ {"label": "r47", "x": 23.5, "y": 4},
+ {"label": "r48", "x": 24.5, "y": 4},
+ {"label": "r49", "x": 25.5, "y": 4},
+ {"label": "r4a", "x": 26.5, "y": 4},
+ {"label": "r4b", "x": 27.5, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/giabalanai/keymaps/default_giabarinaix2/keymap.c b/keyboards/giabalanai/keymaps/default_giabarinaix2/keymap.c
new file mode 100644
index 0000000000..82d86594df
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/default_giabarinaix2/keymap.c
@@ -0,0 +1,262 @@
+/* Copyright 2020 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+// Alias layout macros that expand groups of keys.
+#define LAYOUT_wrapper_giabarinaix2(...) LAYOUT_giabarinaix2(__VA_ARGS__)
+
+#define DFCBASE DF(_C_SYSTEM_BASE)
+#define DF_QWER DF(_QWERTY)
+// Long press: go to _FN layer, tap: MUTE
+#define FN_MUTE LT(_FN, KC_MUTE)
+
+// Used to set octave to MI_OCT_0
+extern midi_config_t midi_config;
+uint8_t midi_bass_ch = 0, midi_chord_ch = 0; // By default, all use the same channel.
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _C_SYSTEM_BASE, // MIDI C-system
+ _QWERTY, // just in case
+ _FN
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+
+ // MIDI Chord Keycodes - Root notes
+ MY_CHORD_MIN = SAFE_RANGE,
+
+ MI_CH_Cr = MY_CHORD_MIN,
+ MI_CH_Csr,
+ MI_CH_Dbr = MI_CH_Csr,
+ MI_CH_Dr,
+ MI_CH_Dsr,
+ MI_CH_Ebr = MI_CH_Dsr,
+ MI_CH_Er,
+ MI_CH_Fr,
+ MI_CH_Fsr,
+ MI_CH_Gbr = MI_CH_Fsr,
+ MI_CH_Gr,
+ MI_CH_Gsr,
+ MI_CH_Abr = MI_CH_Gsr,
+ MI_CH_Ar,
+ MI_CH_Asr,
+ MI_CH_Bbr = MI_CH_Asr,
+ MI_CH_Br,
+
+ // MIDI Chord Keycodes - Major
+
+ MI_CH_C,
+ MI_CH_Cs,
+ MI_CH_Db = MI_CH_Cs,
+ MI_CH_D,
+ MI_CH_Ds,
+ MI_CH_Eb = MI_CH_Ds,
+ MI_CH_E,
+ MI_CH_F,
+ MI_CH_Fs,
+ MI_CH_Gb = MI_CH_Fs,
+ MI_CH_G,
+ MI_CH_Gs,
+ MI_CH_Ab = MI_CH_Gs,
+ MI_CH_A,
+ MI_CH_As,
+ MI_CH_Bb = MI_CH_As,
+ MI_CH_B,
+
+ // MIDI Chord Keycodes Minor
+
+ MI_CH_Cm,
+ MI_CH_Csm,
+ MI_CH_Dbm = MI_CH_Csm,
+ MI_CH_Dm,
+ MI_CH_Dsm,
+ MI_CH_Ebm = MI_CH_Dsm,
+ MI_CH_Em,
+ MI_CH_Fm,
+ MI_CH_Fsm,
+ MI_CH_Gbm = MI_CH_Fsm,
+ MI_CH_Gm,
+ MI_CH_Gsm,
+ MI_CH_Abm = MI_CH_Gsm,
+ MI_CH_Am,
+ MI_CH_Asm,
+ MI_CH_Bbm = MI_CH_Asm,
+ MI_CH_Bm,
+
+ //MIDI Chord Keycodes Dominant Seventh
+
+ MI_CH_CDom7,
+ MI_CH_CsDom7,
+ MI_CH_DbDom7 = MI_CH_CsDom7,
+ MI_CH_DDom7,
+ MI_CH_DsDom7,
+ MI_CH_EbDom7 = MI_CH_DsDom7,
+ MI_CH_EDom7,
+ MI_CH_FDom7,
+ MI_CH_FsDom7,
+ MI_CH_GbDom7 = MI_CH_FsDom7,
+ MI_CH_GDom7,
+ MI_CH_GsDom7,
+ MI_CH_AbDom7 = MI_CH_GsDom7,
+ MI_CH_ADom7,
+ MI_CH_AsDom7,
+ MI_CH_BbDom7 = MI_CH_AsDom7,
+ MI_CH_BDom7,
+
+ // MIDI Chord Keycodes Diminished Seventh
+
+ MI_CH_CDim7,
+ MI_CH_CsDim7,
+ MI_CH_DbDim7 = MI_CH_CsDim7,
+ MI_CH_DDim7,
+ MI_CH_DsDim7,
+ MI_CH_EbDim7 = MI_CH_DsDim7,
+ MI_CH_EDim7,
+ MI_CH_FDim7,
+ MI_CH_FsDim7,
+ MI_CH_GbDim7 = MI_CH_FsDim7,
+ MI_CH_GDim7,
+ MI_CH_GsDim7,
+ MI_CH_AbDim7 = MI_CH_GsDim7,
+ MI_CH_ADim7,
+ MI_CH_AsDim7,
+ MI_CH_BbDim7 = MI_CH_AsDim7,
+ MI_CH_BDim7,
+
+ MY_CHORD_MAX = MI_CH_BDim7,
+
+ VERSION
+};
+
+#define MY_CHORD_COUNT (MY_CHORD_MAX - MY_CHORD_MIN + 1)
+static uint8_t chord_status[MY_CHORD_COUNT];
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* C-system Base */
+ [_C_SYSTEM_BASE] = LAYOUT_giabarinaix2(
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+ MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
+
+ MI_Db_2, MI_E_2, MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4,
+ MI_Eb_2, MI_Fs_2, MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5,
+ MI_F_2, MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, FN_MUTE
+ ),
+
+ /* QWERTY */
+ [_QWERTY] = LAYOUT_wrapper_giabarinaix2(
+ KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC,
+ KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_DEL,
+ KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_ENT,
+ KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_LANG2, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LANG1, KC_RALT, KC_RGUI, KC_RCTRL,
+
+ KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC,
+ KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_DEL,
+ KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_ENT,
+ KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_LANG2, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LANG1, KC_RALT, KC_RGUI, _______
+ ),
+
+ /* Fn */
+ [_FN] = LAYOUT_giabarinaix2(
+ DFCBASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ DF_QWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ DFCBASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ DF_QWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_QWERTY] = { ENCODER_CCW_CW(_______, _______) },
+ [_FN] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
+
+void keyboard_post_init_user(void) {
+ // Set otave 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;
+
+ for (uint8_t i = 0; i < MY_CHORD_COUNT; i++) {
+ chord_status[i] = MIDI_INVALID_NOTE;
+ }
+
+ default_layer_set(1UL << _C_SYSTEM_BASE);
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ uint16_t root_note = MIDI_INVALID_NOTE; // Starting value for the root note of each chord
+
+ uint8_t chord = keycode - MY_CHORD_MIN;
+
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+
+ // MIDI Chord Keycodes, on the left side.
+ case MI_CH_Cr ... MI_CH_Br: // Root Notes
+ root_note = keycode - MI_CH_Cr + MI_C_1;
+ my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, false);
+ break;
+
+ case MI_CH_C ... MI_CH_B: // Major Chords
+ root_note = keycode - MI_CH_C + MI_C_2;
+ // Root, Major Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
+ break;
+
+ case MI_CH_Cm ... MI_CH_Bm: // Minor Chord
+ root_note = keycode - MI_CH_Cm + MI_C_2;
+ // Root, Minor Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
+ break;
+
+ case MI_CH_CDom7 ... MI_CH_BDom7: // Dominant 7th Chord
+ root_note = keycode - MI_CH_CDom7 + MI_C_2;
+ // Major Third, Major Fifth, and Minor Seventh Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
+ break;
+
+ case MI_CH_CDim7 ... MI_CH_BDim7: // Diminished 7th Chord
+ root_note = keycode - MI_CH_CDim7 + MI_C_2;
+ // Root, Minor Third, and Diminished 5th Note
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/giabalanai/keymaps/default_giabarinaix2/readme.md b/keyboards/giabalanai/keymaps/default_giabarinaix2/readme.md
new file mode 100644
index 0000000000..ecdae4723d
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/default_giabarinaix2/readme.md
@@ -0,0 +1 @@
+# The default keymap for giabarinaix2
diff --git a/keyboards/giabalanai/keymaps/default_giabarinaix2/rules.mk b/keyboards/giabalanai/keymaps/default_giabarinaix2/rules.mk
new file mode 100644
index 0000000000..3542233884
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/default_giabarinaix2/rules.mk
@@ -0,0 +1,3 @@
+ENCODER_ENABLE = no # encoder on mute button
+
+ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/config.h b/keyboards/giabalanai/keymaps/giabarinaix2led/config.h
new file mode 100644
index 0000000000..684287ba98
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/giabarinaix2led/config.h
@@ -0,0 +1,26 @@
+#pragma once
+
+#define GIABARINAIX2
+#ifdef GIABARINAIX2
+# undef MATRIX_ROW_PINS_RIGHT
+# undef MATRIX_COL_PINS_RIGHT
+
+# ifdef RGBLIGHT_ENABLE
+# undef RGBLED_NUM
+# define RGBLED_NUM 120
+# undef RGBLIGHT_LED_MAP
+# define RGBLIGHT_LED_MAP { \
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, \
+ 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, \
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, \
+ 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, \
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, \
+ \
+ 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, \
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, \
+ 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, \
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, \
+ 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48 \
+ }
+# endif
+#endif
diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/info.json b/keyboards/giabalanai/keymaps/giabarinaix2led/info.json
new file mode 100644
index 0000000000..20a52326dd
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/giabarinaix2led/info.json
@@ -0,0 +1,146 @@
+{
+ "keyboard_name": "giabarinaix2",
+ "manufacturer": "3araht",
+ "url": "https://github.com/3araht",
+ "maintainer": "3araht",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xF4B2",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "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": "l06", "x": 6, "y": 0},
+ {"label": "l07", "x": 7, "y": 0},
+ {"label": "l08", "x": 8, "y": 0},
+ {"label": "l09", "x": 9, "y": 0},
+ {"label": "l0a", "x": 10, "y": 0},
+ {"label": "l0b", "x": 11, "y": 0},
+
+ {"label": "r00", "x": 14.5, "y": 0},
+ {"label": "r01", "x": 15.5, "y": 0},
+ {"label": "r02", "x": 16.5, "y": 0},
+ {"label": "r03", "x": 17.5, "y": 0},
+ {"label": "r04", "x": 18.5, "y": 0},
+ {"label": "r05", "x": 19.5, "y": 0},
+ {"label": "r06", "x": 20.5, "y": 0},
+ {"label": "r07", "x": 21.5, "y": 0},
+ {"label": "r08", "x": 22.5, "y": 0},
+ {"label": "r09", "x": 23.5, "y": 0},
+ {"label": "r0a", "x": 24.5, "y": 0},
+ {"label": "r0b", "x": 25.5, "y": 0},
+
+ {"label": "l10", "x": 0.5, "y": 1},
+ {"label": "l11", "x": 1.5, "y": 1},
+ {"label": "l12", "x": 2.5, "y": 1},
+ {"label": "l13", "x": 3.5, "y": 1},
+ {"label": "l14", "x": 4.5, "y": 1},
+ {"label": "l15", "x": 5.5, "y": 1},
+ {"label": "l16", "x": 6.5, "y": 1},
+ {"label": "l17", "x": 7.5, "y": 1},
+ {"label": "l18", "x": 8.5, "y": 1},
+ {"label": "l19", "x": 9.5, "y": 1},
+ {"label": "l1a", "x": 10.5, "y": 1},
+ {"label": "l1b", "x": 11.5, "y": 1},
+
+ {"label": "r10", "x": 15, "y": 1},
+ {"label": "r11", "x": 16, "y": 1},
+ {"label": "r12", "x": 17, "y": 1},
+ {"label": "r13", "x": 18, "y": 1},
+ {"label": "r14", "x": 19, "y": 1},
+ {"label": "r15", "x": 20, "y": 1},
+ {"label": "r16", "x": 21, "y": 1},
+ {"label": "r17", "x": 22, "y": 1},
+ {"label": "r18", "x": 23, "y": 1},
+ {"label": "r19", "x": 24, "y": 1},
+ {"label": "r1a", "x": 25, "y": 1},
+ {"label": "r1b", "x": 26, "y": 1},
+
+ {"label": "l20", "x": 1, "y": 2},
+ {"label": "l21", "x": 2, "y": 2},
+ {"label": "l22", "x": 3, "y": 2},
+ {"label": "l23", "x": 4, "y": 2},
+ {"label": "l24", "x": 5, "y": 2},
+ {"label": "l25", "x": 6, "y": 2},
+ {"label": "l26", "x": 7, "y": 2},
+ {"label": "l27", "x": 8, "y": 2},
+ {"label": "l28", "x": 9, "y": 2},
+ {"label": "l29", "x": 10, "y": 2},
+ {"label": "l2a", "x": 11, "y": 2},
+ {"label": "l2b", "x": 12, "y": 2},
+
+ {"label": "r20", "x": 15.5, "y": 2},
+ {"label": "r21", "x": 16.5, "y": 2},
+ {"label": "r22", "x": 17.5, "y": 2},
+ {"label": "r23", "x": 18.5, "y": 2},
+ {"label": "r24", "x": 19.5, "y": 2},
+ {"label": "r25", "x": 20.5, "y": 2},
+ {"label": "r26", "x": 21.5, "y": 2},
+ {"label": "r27", "x": 22.5, "y": 2},
+ {"label": "r28", "x": 23.5, "y": 2},
+ {"label": "r29", "x": 24.5, "y": 2},
+ {"label": "r2a", "x": 25.5, "y": 2},
+ {"label": "r2b", "x": 26.5, "y": 2},
+
+ {"label": "l30", "x": 1.5, "y": 3},
+ {"label": "l31", "x": 2.5, "y": 3},
+ {"label": "l32", "x": 3.5, "y": 3},
+ {"label": "l33", "x": 4.5, "y": 3},
+ {"label": "l34", "x": 5.5, "y": 3},
+ {"label": "l35", "x": 6.5, "y": 3},
+ {"label": "l36", "x": 7.5, "y": 3},
+ {"label": "l37", "x": 8.5, "y": 3},
+ {"label": "l38", "x": 9.5, "y": 3},
+ {"label": "l39", "x": 10.5, "y": 3},
+ {"label": "l3a", "x": 11.5, "y": 3},
+ {"label": "l3b", "x": 12.5, "y": 3},
+
+ {"label": "r30", "x": 16, "y": 3},
+ {"label": "r31", "x": 17, "y": 3},
+ {"label": "r32", "x": 18, "y": 3},
+ {"label": "r33", "x": 19, "y": 3},
+ {"label": "r34", "x": 20, "y": 3},
+ {"label": "r35", "x": 21, "y": 3},
+ {"label": "r36", "x": 22, "y": 3},
+ {"label": "r37", "x": 23, "y": 3},
+ {"label": "r38", "x": 24, "y": 3},
+ {"label": "r39", "x": 25, "y": 3},
+ {"label": "r3a", "x": 26, "y": 3},
+ {"label": "r3b", "x": 27, "y": 3},
+
+ {"label": "l40", "x": 2, "y": 4},
+ {"label": "l41", "x": 3, "y": 4},
+ {"label": "l42", "x": 4, "y": 4},
+ {"label": "l43", "x": 5, "y": 4},
+ {"label": "l44", "x": 6, "y": 4},
+ {"label": "l45", "x": 7, "y": 4},
+ {"label": "l46", "x": 8, "y": 4},
+ {"label": "l47", "x": 9, "y": 4},
+ {"label": "l48", "x": 10, "y": 4},
+ {"label": "l49", "x": 11, "y": 4},
+ {"label": "l4a", "x": 12, "y": 4},
+ {"label": "l4b", "x": 13, "y": 4},
+
+ {"label": "r40", "x": 16.5, "y": 4},
+ {"label": "r41", "x": 17.5, "y": 4},
+ {"label": "r42", "x": 18.5, "y": 4},
+ {"label": "r43", "x": 19.5, "y": 4},
+ {"label": "r44", "x": 20.5, "y": 4},
+ {"label": "r45", "x": 21.5, "y": 4},
+ {"label": "r46", "x": 22.5, "y": 4},
+ {"label": "r47", "x": 23.5, "y": 4},
+ {"label": "r48", "x": 24.5, "y": 4},
+ {"label": "r49", "x": 25.5, "y": 4},
+ {"label": "r4a", "x": 26.5, "y": 4},
+ {"label": "r4b", "x": 27.5, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/keymap.c b/keyboards/giabalanai/keymaps/giabarinaix2led/keymap.c
new file mode 100644
index 0000000000..1e773bd233
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/giabarinaix2led/keymap.c
@@ -0,0 +1,464 @@
+/* Copyright 2020 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+// Alias layout macros that expand groups of keys.
+#define LAYOUT_wrapper_giabarinaix2(...) LAYOUT_giabarinaix2(__VA_ARGS__)
+
+#define DFCBASE DF(_C_SYSTEM_BASE)
+#define DF_QWER DF(_QWERTY)
+// Long press: go to _FN layer, tap: MUTE
+#define FN_MUTE LT(_FN, KC_MUTE)
+
+// Used to set octave to MI_OCT_0
+extern midi_config_t midi_config;
+uint8_t midi_bass_ch = 0, midi_chord_ch = 0; // By default, all use the same channel.
+
+#ifdef RGBLIGHT_ENABLE
+/* used to specify there is no LED on the keylocation. */
+# define NO_LED 255
+#endif // RGBLIGHT_ENABLE
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _C_SYSTEM_BASE, // MIDI C-system
+ _C_SYSTEM_BASS2ROW, // counter bass system
+ _C_SYSTEM_ENTIRELY, // single notes for both left and right keybaords.
+ _CHROMATONE,
+ _QWERTY, // just in case
+ _FN
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+
+ // MIDI Chord Keycodes - Root notes
+ MY_CHORD_MIN = SAFE_RANGE,
+
+ MI_CH_Cr = MY_CHORD_MIN,
+ MI_CH_Csr,
+ MI_CH_Dbr = MI_CH_Csr,
+ MI_CH_Dr,
+ MI_CH_Dsr,
+ MI_CH_Ebr = MI_CH_Dsr,
+ MI_CH_Er,
+ MI_CH_Fr,
+ MI_CH_Fsr,
+ MI_CH_Gbr = MI_CH_Fsr,
+ MI_CH_Gr,
+ MI_CH_Gsr,
+ MI_CH_Abr = MI_CH_Gsr,
+ MI_CH_Ar,
+ MI_CH_Asr,
+ MI_CH_Bbr = MI_CH_Asr,
+ MI_CH_Br,
+
+ // MIDI Chord Keycodes - Major
+
+ MI_CH_C,
+ MI_CH_Cs,
+ MI_CH_Db = MI_CH_Cs,
+ MI_CH_D,
+ MI_CH_Ds,
+ MI_CH_Eb = MI_CH_Ds,
+ MI_CH_E,
+ MI_CH_F,
+ MI_CH_Fs,
+ MI_CH_Gb = MI_CH_Fs,
+ MI_CH_G,
+ MI_CH_Gs,
+ MI_CH_Ab = MI_CH_Gs,
+ MI_CH_A,
+ MI_CH_As,
+ MI_CH_Bb = MI_CH_As,
+ MI_CH_B,
+
+ // MIDI Chord Keycodes Minor
+
+ MI_CH_Cm,
+ MI_CH_Csm,
+ MI_CH_Dbm = MI_CH_Csm,
+ MI_CH_Dm,
+ MI_CH_Dsm,
+ MI_CH_Ebm = MI_CH_Dsm,
+ MI_CH_Em,
+ MI_CH_Fm,
+ MI_CH_Fsm,
+ MI_CH_Gbm = MI_CH_Fsm,
+ MI_CH_Gm,
+ MI_CH_Gsm,
+ MI_CH_Abm = MI_CH_Gsm,
+ MI_CH_Am,
+ MI_CH_Asm,
+ MI_CH_Bbm = MI_CH_Asm,
+ MI_CH_Bm,
+
+ //MIDI Chord Keycodes Dominant Seventh
+
+ MI_CH_CDom7,
+ MI_CH_CsDom7,
+ MI_CH_DbDom7 = MI_CH_CsDom7,
+ MI_CH_DDom7,
+ MI_CH_DsDom7,
+ MI_CH_EbDom7 = MI_CH_DsDom7,
+ MI_CH_EDom7,
+ MI_CH_FDom7,
+ MI_CH_FsDom7,
+ MI_CH_GbDom7 = MI_CH_FsDom7,
+ MI_CH_GDom7,
+ MI_CH_GsDom7,
+ MI_CH_AbDom7 = MI_CH_GsDom7,
+ MI_CH_ADom7,
+ MI_CH_AsDom7,
+ MI_CH_BbDom7 = MI_CH_AsDom7,
+ MI_CH_BDom7,
+
+ // MIDI Chord Keycodes Diminished Seventh
+
+ MI_CH_CDim7,
+ MI_CH_CsDim7,
+ MI_CH_DbDim7 = MI_CH_CsDim7,
+ MI_CH_DDim7,
+ MI_CH_DsDim7,
+ MI_CH_EbDim7 = MI_CH_DsDim7,
+ MI_CH_EDim7,
+ MI_CH_FDim7,
+ MI_CH_FsDim7,
+ MI_CH_GbDim7 = MI_CH_FsDim7,
+ MI_CH_GDim7,
+ MI_CH_GsDim7,
+ MI_CH_AbDim7 = MI_CH_GsDim7,
+ MI_CH_ADim7,
+ MI_CH_AsDim7,
+ MI_CH_BbDim7 = MI_CH_AsDim7,
+ MI_CH_BDim7,
+
+ MY_CHORD_MAX = MI_CH_BDim7,
+
+ VERSION,
+ CSYSTEM, // C-SYSTEM layout
+ CNTBASC, // CouNTer BASs C-system layout
+ CSYSALL, // C-SYStem ALL layout
+ CHRTONE, // CHRomaTONE layout
+ TGLMICH // ToGgLe MIdi CHannel separation
+};
+
+#define MY_CHORD_COUNT (MY_CHORD_MAX - MY_CHORD_MIN + 1)
+static uint8_t chord_status[MY_CHORD_COUNT];
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* C-system Base */
+ [_C_SYSTEM_BASE] = LAYOUT_giabarinaix2(
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+ MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
+
+ MI_Db_2, MI_E_2, MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4,
+ MI_Eb_2, MI_Fs_2, MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5,
+ MI_F_2, MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, FN_MUTE
+ ),
+
+ /* BASS2row */
+ [_C_SYSTEM_BASS2ROW] = LAYOUT_giabarinaix2(
+ MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, MI_CH_Csr, MI_CH_Gsr, MI_CH_Dsr, MI_CH_Asr,
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+
+
+ MI_Db_2, MI_E_2, MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4,
+ MI_Eb_2, MI_Fs_2, MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5,
+ MI_F_2, MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, FN_MUTE
+ ),
+
+ /* C-system entirely */
+ [_C_SYSTEM_ENTIRELY] = LAYOUT_giabarinaix2(
+ XXXXXXX, XXXXXXX, XXXXXXX, MI_Db, MI_E, MI_G, MI_Bb, MI_Db_1, MI_E_1, MI_G_1, MI_Bb_1, MI_Db_2,
+ XXXXXXX, XXXXXXX, MI_C, MI_Eb, MI_Fs, MI_A, MI_C_1, MI_Eb_1, MI_Fs_1, MI_A_1, MI_C_2, MI_Eb_2,
+ XXXXXXX, XXXXXXX, MI_D, MI_F, MI_Ab, MI_B, MI_D_1, MI_F_1, MI_Ab_1, MI_B_1, MI_D_2, MI_F_2,
+ XXXXXXX, MI_Db, MI_E, MI_G, MI_Bb, MI_Db_1, MI_E_1, MI_G_1, MI_Bb_1, MI_Db_2, MI_E_2, MI_G_2,
+ MI_C, MI_Eb, MI_Fs, MI_A, MI_C_1, MI_Eb_1, MI_Fs_1, MI_A_1, MI_C_2, MI_Eb_2, MI_Fs_2, MI_A_2,
+
+ MI_E_2, MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5,
+ MI_Fs_2, MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5,
+ MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5, FN_MUTE
+ ),
+
+ /* Chromatone */
+ [_CHROMATONE] = LAYOUT_giabarinaix2(
+ XXXXXXX, XXXXXXX, MI_Db, MI_Eb, MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1,
+ XXXXXXX, MI_C, MI_D, MI_E, MI_Fs, MI_Ab, MI_Bb, MI_C_1, MI_D_1, MI_E_1, MI_Fs_1, MI_Ab_1,
+ XXXXXXX, MI_Db, MI_Eb, MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1, MI_A_1,
+ MI_C, MI_D, MI_E, MI_Fs, MI_Ab, MI_Bb, MI_C_1, MI_D_1, MI_E_1, MI_Fs_1, MI_Ab_1, MI_Bb_1,
+ MI_Db, MI_Eb, MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1, MI_A_1, MI_B_1,
+
+ MI_A_1, MI_B_1, MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3,
+ MI_Bb_1, MI_C_2, MI_D_2, MI_E_2, MI_Gb_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Gb_3, MI_Ab_3,
+ MI_B_1, MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3,
+ MI_C_2, MI_D_2, MI_E_2, MI_Gb_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Gb_3, MI_Ab_3, MI_Bb_3,
+ MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, FN_MUTE
+ ),
+
+ /* QWERTY */
+ [_QWERTY] = LAYOUT_wrapper_giabarinaix2(
+ KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC,
+ KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_DEL,
+ KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_ENT,
+ KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_LANG2, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LANG1, KC_RALT, KC_RGUI, KC_RCTRL,
+
+ KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC,
+ KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_DEL,
+ KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_ENT,
+ KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_LANG2, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LANG1, KC_RALT, KC_RGUI, _______
+ ),
+
+ /* Fn */
+ [_FN] = LAYOUT_giabarinaix2(
+ CSYSTEM, CNTBASC, CSYSALL, CHRTONE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG,
+ DF_QWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLMICH,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ CSYSTEM, CNTBASC, CSYSALL, CHRTONE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG,
+ DF_QWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, TGLMICH,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_C_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) },
+ [_C_SYSTEM_ENTIRELY] = { ENCODER_CCW_CW(_______, _______) },
+ [_CHROMATONE] = { ENCODER_CCW_CW(_______, _______) },
+ [_QWERTY] = { ENCODER_CCW_CW(_______, _______) },
+ [_FN] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+
+// Light up fn layer keys
+const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( // left keyboard
+ {0, 4, HSV_ORANGE}, // MIDI layouts
+ {11, 1, HSV_RED}, // RGB_TOG
+ {12, 1, HSV_WHITE}, // DF_QWER
+ {35, 1, HSV_TEAL}, // TGLMICH
+
+ // right keyboard
+ {60, 4, HSV_ORANGE}, // MIDI layouts
+ {71 , 1, HSV_RED}, // RGB_TOG
+ {72, 1, HSV_WHITE}, // DF_QWER
+ {83, 1, HSV_TEAL} // TGLMICH
+);
+
+
+// Now define the array of layers. Later layers take precedence
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_fn_layer);
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ // Both layers will light up if both kb layers are active
+ rgblight_set_layer_state(0, layer_state_cmp(state, _FN));
+ return state;
+};
+
+#endif // RGBLIGHT_ENABLE
+void keyboard_post_init_user(void) {
+ // Set otave 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;
+
+ for (uint8_t i = 0; i < MY_CHORD_COUNT; i++) {
+ chord_status[i] = MIDI_INVALID_NOTE;
+ }
+
+#ifdef RGBLIGHT_ENABLE
+
+ rgblight_layers = my_rgb_layers;
+
+ // Reset LED off
+ rgblight_sethsv(HSV_BLACK);
+# if defined(RGBLIGHT_EFFECT_KNIGHT) || defined(RGBLIGHT_EFFECT_TWINKLE)
+ rgblight_sethsv(30, 50, 40);
+# ifdef RGBLIGHT_EFFECT_KNIGHT
+ rgblight_mode(RGBLIGHT_MODE_KNIGHT);
+# elif defined(RGBLIGHT_EFFECT_TWINKLE)
+ rgblight_mode(RGBLIGHT_MODE_TWINKLE+3);
+# endif
+# endif
+#endif // RGBLIGHT_ENABLE
+};
+
+void toggle_MIDI_channel_separation(void) {
+ if (midi_chord_ch > 0) {
+ midi_chord_ch = 0;
+ midi_bass_ch = 0;
+ } else {
+ midi_chord_ch = 1;
+ midi_bass_ch = 2;
+ }
+}
+
+#ifdef RGBLIGHT_ENABLE
+void switch_keylight_color4bass(keyrecord_t *record, uint8_t keylocation){
+ switch (biton32(default_layer_state)) {
+ case _C_SYSTEM_BASE:
+ keylight_manager(record, HSV_GREEN, keylocation);
+ break;
+ case _C_SYSTEM_BASS2ROW:
+ keylight_manager(record, HSV_YELLOW, keylocation);
+ break;
+ }
+}
+void switch_keylight_color4chords(keyrecord_t *record, uint8_t keylocation){
+ switch (biton32(default_layer_state)) {
+ case _C_SYSTEM_BASE:
+ keylight_manager(record, HSV_SPRINGGREEN, keylocation);
+ break;
+ case _C_SYSTEM_BASS2ROW:
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+ break;
+ }
+}
+#endif // RGBLIGHT_ENABLE
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ uint16_t root_note = MIDI_INVALID_NOTE; // Starting value for the root note of each chord
+
+ #ifdef RGBLIGHT_ENABLE
+ /* prepare for turning on LEDs when keys are pressed. */
+ uint8_t r = record->event.key.row;
+ uint8_t c = record->event.key.col;
+ uint8_t keylocation = pgm_read_byte(&convert_key_to_led[MATRIX_COLS * r + c]);
+ #endif // RGBLIGHT_ENABLE
+
+ uint8_t chord = keycode - MY_CHORD_MIN;
+
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+
+ // set default layer and save it to EEPROM when MIDI key layers are selected.
+ case CSYSTEM:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_C_SYSTEM_BASE);
+ }
+ break;
+
+ case CNTBASC:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_C_SYSTEM_BASS2ROW);
+ }
+ break;
+
+ case CSYSALL:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_C_SYSTEM_ENTIRELY);
+ }
+ break;
+
+ case CHRTONE:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_CHROMATONE);
+ }
+ break;
+
+ case TGLMICH:
+ if (record->event.pressed) {
+ toggle_MIDI_channel_separation();
+ };
+ break;
+
+
+ // MIDI Chord Keycodes, on the left side.
+ case MI_CH_Cr ... MI_CH_Br: // Root Notes
+ root_note = keycode - MI_CH_Cr + MI_C_1;
+ my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, false);
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4bass(record, keylocation);
+#endif
+ break;
+ case MI_CH_C ... MI_CH_B: // Major Chords
+ root_note = keycode - MI_CH_C + MI_C_2;
+ // Root, Major Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4chords(record, keylocation);
+#endif
+ break;
+ case MI_CH_Cm ... MI_CH_Bm: // Minor Chord
+ root_note = keycode - MI_CH_Cm + MI_C_2;
+ // Root, Minor Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4chords(record, keylocation);
+#endif
+ break;
+ case MI_CH_CDom7 ... MI_CH_BDom7: // Dominant 7th Chord
+ root_note = keycode - MI_CH_CDom7 + MI_C_2;
+ // Major Third, Major Fifth, and Minor Seventh Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4chords(record, keylocation);
+#endif
+ break;
+ case MI_CH_CDim7 ... MI_CH_BDim7: // Diminished 7th Chord
+ root_note = keycode - MI_CH_CDim7 + MI_C_2;
+ // Root, Minor Third, and Diminished 5th Note
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
+#ifdef RGBLIGHT_ENABLE
+ switch_keylight_color4chords(record, keylocation);
+#endif
+ break;
+
+#ifdef RGBLIGHT_ENABLE
+ case KC_A ... KC_RGUI: // for QWERTY
+ case KC_GESC:
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+ break;
+#endif
+ // Keycodes on the right side.
+#ifdef RGBLIGHT_ENABLE
+ case MIDI_TONE_MIN ... MIDI_TONE_MAX: // notes on the right side.
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+ break;
+ // case KC_MUTE:
+ case FN_MUTE:
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+ break;
+#endif
+ }
+ return true;
+}
diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/readme.md b/keyboards/giabalanai/keymaps/giabarinaix2led/readme.md
new file mode 100644
index 0000000000..89139ec1b3
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/giabarinaix2led/readme.md
@@ -0,0 +1 @@
+# A keymap for giabarinaix2 with LEDs.
diff --git a/keyboards/giabalanai/keymaps/giabarinaix2led/rules.mk b/keyboards/giabalanai/keymaps/giabarinaix2led/rules.mk
new file mode 100644
index 0000000000..d8dc6a10e7
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/giabarinaix2led/rules.mk
@@ -0,0 +1,3 @@
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+
+ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
diff --git a/keyboards/giabalanai/keymaps/party/keymap.c b/keyboards/giabalanai/keymaps/party/keymap.c
new file mode 100644
index 0000000000..5a4361e5ae
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/party/keymap.c
@@ -0,0 +1,792 @@
+/* Copyright 2020 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "version.h"
+
+// Alias layout macros that expand groups of keys.
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+
+#define DF_QWER DF(_QWERTY)
+#define DF_COLE DF(_COLEMAK)
+#define MO_ADJ MO(_ADJUST)
+// Long press: go to _FN layer, tap: MUTE
+#define FN_MUTE LT(_FN, KC_MUTE)
+#define SHIF_UP RSFT_T(KC_UP)
+#define ADJ_EIS LT(_ADJUST,KC_LANG2)
+#define MIS_KAN LT(_MISC,KC_LANG1)
+
+// Used to set octave to MI_OCT_0
+extern midi_config_t midi_config;
+uint8_t midi_bass_ch = 0, midi_chord_ch = 0; // By default, all use the same channel.
+
+// UNISON flags
+static bool melody_dyad_high = false; // true when +1 octave unison dyad is enabled.
+static bool melody_dyad_low = false; // true when -1 octave unison dyad is enabled.
+
+static bool melody_unison_suppress = true; // true: velocity of octave unison note is suppressd to UNISON_VELOCITY_RATIO
+
+// To record the status of Bass Chord (single or dyad, default: dyad.)
+typedef union {
+ uint32_t raw;
+ struct {
+ bool isSingleBass:1;
+ };
+} user_config_t;
+user_config_t user_config;
+
+#define IS_SINGLE_BASS() (user_config.isSingleBass)
+
+#ifdef RGBLIGHT_ENABLE
+/* used to specify there is no LED on the keylocation. */
+# define NO_LED 255
+#endif // RGBLIGHT_ENABLE
+
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _C_SYSTEM_BASE, // MIDI C-system
+ _FAKE_B_SYSTEM, // MIDI fake B-system doesn't have correct assignments on top two rows. The bottom 3 rows are B-system.
+ _C_SYSTEM_BASS2ROW, // counter bass system
+ _C_SYSTEM_ENTIRELY, // single notes for both left and right keybaords.
+ _C_SYSTEM_FREEBASS, // C-system Free Bass
+ _CHROMATONE,
+ _CFLIP_BASS2ROW, // 180 degree flipped layout on right side keyboard
+ _QWERTY,
+ _COLEMAK,
+ _ADJUST, // for Fn keys, etc.
+ _FN // for changing layers, octaves, etc.
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+
+ // MIDI Chord Keycodes - Root notes
+ MY_CHORD_MIN = SAFE_RANGE,
+
+ MI_CH_Cr = MY_CHORD_MIN,
+ MI_CH_Csr,
+ MI_CH_Dbr = MI_CH_Csr,
+ MI_CH_Dr,
+ MI_CH_Dsr,
+ MI_CH_Ebr = MI_CH_Dsr,
+ MI_CH_Er,
+ MI_CH_Fr,
+ MI_CH_Fsr,
+ MI_CH_Gbr = MI_CH_Fsr,
+ MI_CH_Gr,
+ MI_CH_Gsr,
+ MI_CH_Abr = MI_CH_Gsr,
+ MI_CH_Ar,
+ MI_CH_Asr,
+ MI_CH_Bbr = MI_CH_Asr,
+ MI_CH_Br,
+
+ // MIDI Chord Keycodes - Major
+
+ MI_CH_C,
+ MI_CH_Cs,
+ MI_CH_Db = MI_CH_Cs,
+ MI_CH_D,
+ MI_CH_Ds,
+ MI_CH_Eb = MI_CH_Ds,
+ MI_CH_E,
+ MI_CH_F,
+ MI_CH_Fs,
+ MI_CH_Gb = MI_CH_Fs,
+ MI_CH_G,
+ MI_CH_Gs,
+ MI_CH_Ab = MI_CH_Gs,
+ MI_CH_A,
+ MI_CH_As,
+ MI_CH_Bb = MI_CH_As,
+ MI_CH_B,
+
+ // MIDI Chord Keycodes Minor
+
+ MI_CH_Cm,
+ MI_CH_Csm,
+ MI_CH_Dbm = MI_CH_Csm,
+ MI_CH_Dm,
+ MI_CH_Dsm,
+ MI_CH_Ebm = MI_CH_Dsm,
+ MI_CH_Em,
+ MI_CH_Fm,
+ MI_CH_Fsm,
+ MI_CH_Gbm = MI_CH_Fsm,
+ MI_CH_Gm,
+ MI_CH_Gsm,
+ MI_CH_Abm = MI_CH_Gsm,
+ MI_CH_Am,
+ MI_CH_Asm,
+ MI_CH_Bbm = MI_CH_Asm,
+ MI_CH_Bm,
+
+ //MIDI Chord Keycodes Dominant Seventh
+
+ MI_CH_CDom7,
+ MI_CH_CsDom7,
+ MI_CH_DbDom7 = MI_CH_CsDom7,
+ MI_CH_DDom7,
+ MI_CH_DsDom7,
+ MI_CH_EbDom7 = MI_CH_DsDom7,
+ MI_CH_EDom7,
+ MI_CH_FDom7,
+ MI_CH_FsDom7,
+ MI_CH_GbDom7 = MI_CH_FsDom7,
+ MI_CH_GDom7,
+ MI_CH_GsDom7,
+ MI_CH_AbDom7 = MI_CH_GsDom7,
+ MI_CH_ADom7,
+ MI_CH_AsDom7,
+ MI_CH_BbDom7 = MI_CH_AsDom7,
+ MI_CH_BDom7,
+
+ // MIDI Chord Keycodes Diminished Seventh
+
+ MI_CH_CDim7,
+ MI_CH_CsDim7,
+ MI_CH_DbDim7 = MI_CH_CsDim7,
+ MI_CH_DDim7,
+ MI_CH_DsDim7,
+ MI_CH_EbDim7 = MI_CH_DsDim7,
+ MI_CH_EDim7,
+ MI_CH_FDim7,
+ MI_CH_FsDim7,
+ MI_CH_GbDim7 = MI_CH_FsDim7,
+ MI_CH_GDim7,
+ MI_CH_GsDim7,
+ MI_CH_AbDim7 = MI_CH_GsDim7,
+ MI_CH_ADim7,
+ MI_CH_AsDim7,
+ MI_CH_BbDim7 = MI_CH_AsDim7,
+ MI_CH_BDim7,
+
+ MY_CHORD_MAX = MI_CH_BDim7,
+
+ VERSION,
+ CSYSTEM, // C-SYSTEM layout
+ BSYSTEM, // B-SYSTEM layout
+ CNTBASC, // CouNTer BASs C-system layout
+ CSYSALL, // C-SYStem ALL layout
+ CSYSFBS, // C-SYStem Free BaSs
+ CHRTONE, // CHRomaTONE layout
+ CFLIP2B, // C-system FLIPped 2(to) Backwards
+ TGLBASS, // ToGgLe BASS unison
+ TGLMICH, // ToGgLe MIdi CHannel separation
+ MELDYAL, // MELody DYad Low
+ MELODYS, // MELODY Single
+ MELDYAH, // MELody DYad High
+ TGLUVEL // ToGgLe Unison VELocity
+};
+
+#define MY_CHORD_COUNT (MY_CHORD_MAX - MY_CHORD_MIN + 1)
+static uint8_t chord_status[MY_CHORD_COUNT];
+static uint8_t my_tone_status[MIDI_TONE_COUNT];
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* C-system Base */
+ [_C_SYSTEM_BASE] = LAYOUT(
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+ MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
+
+ MI_Fs_2,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5, FN_MUTE,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5
+ ),
+
+ /* fake B-system */
+ [_FAKE_B_SYSTEM] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+
+ MI_Ab_2,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Gb_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Gb_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Gb_5, _______,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5
+ ),
+
+ /* BASS2row */
+ [_C_SYSTEM_BASS2ROW] = LAYOUT(
+ MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, MI_CH_Csr, MI_CH_Gsr, MI_CH_Dsr, MI_CH_Asr,
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+
+ MI_Fs_2,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5, _______,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5
+ ),
+
+ /* C-system entirely */
+ [_C_SYSTEM_ENTIRELY] = LAYOUT(
+ MI_BENDU, XXXXXXX, XXXXXXX, MI_Db, MI_E, MI_G, MI_Bb, MI_Db_1, MI_E_1, MI_G_1, MI_Bb_1, MI_Db_2,
+ MI_BENDD, XXXXXXX, MI_C, MI_Eb, MI_Fs, MI_A, MI_C_1, MI_Eb_1, MI_Fs_1, MI_A_1, MI_C_2, MI_Eb_2,
+ XXXXXXX, XXXXXXX, MI_D, MI_F, MI_Ab, MI_B, MI_D_1, MI_F_1, MI_Ab_1, MI_B_1, MI_D_2, MI_F_2,
+ XXXXXXX, MI_Db, MI_E, MI_G, MI_Bb, MI_Db_1, MI_E_1, MI_G_1, MI_Bb_1, MI_Db_2, MI_E_2, MI_G_2,
+ MI_C, MI_Eb, MI_Fs, MI_A, MI_C_1, MI_Eb_1, MI_Fs_1, MI_A_1, MI_C_2, MI_Eb_2, MI_Fs_2, MI_A_2,
+
+ MI_Fs_2,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5, FN_MUTE,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5
+ ),
+
+ /* C-system free bass */
+ [_C_SYSTEM_FREEBASS] = LAYOUT(
+ MI_Db_3, MI_Bb_2, MI_G_2, MI_E_2, MI_Db_2, MI_Bb_1, MI_G_1, MI_E_1, MI_Db_1, MI_Bb, MI_G, MI_E,
+ MI_C_3, MI_A_2, MI_Fs_2, MI_Eb_2, MI_C_2, MI_A_1, MI_Fs_1, MI_Eb_1, MI_C_1, MI_A, MI_Fs, MI_Eb,
+ MI_B_2, MI_Ab_2, MI_F_2, MI_D_2, MI_B_1, MI_Ab_1, MI_F_1, MI_D_1, MI_B, MI_Ab, MI_F, MI_D,
+ MI_Bb_2, MI_G_2, MI_E_2, MI_Db_2, MI_Bb_1, MI_G_1, MI_E_1, MI_Db_1, MI_Bb, MI_G, MI_E, MI_Db,
+ MI_A_2, MI_Fs_2, MI_Eb_2, MI_C_2, MI_A_1, MI_Fs_1, MI_Eb_1, MI_C_1, MI_A, MI_Fs, MI_Eb, MI_C,
+
+ MI_Fs_2,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5, FN_MUTE,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5
+ ),
+
+ /* Chromatone */
+ [_CHROMATONE] = LAYOUT(
+ MI_Db, MI_Eb, MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1, MI_A_1, MI_B_1,
+ MI_D, MI_E, MI_Fs, MI_Ab, MI_Bb, MI_C_1, MI_D_1, MI_E_1, MI_Fs_1, MI_Ab_1, MI_Bb_1, MI_C_2,
+ MI_Eb, MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1, MI_A_1, MI_B_1, MI_Db_2,
+ MI_E, MI_Fs, MI_Ab, MI_Bb, MI_C_1, MI_D_1, MI_E_1, MI_Fs_1, MI_Ab_1, MI_Bb_1, MI_C_2, MI_D_2,
+ MI_F, MI_G, MI_A, MI_B, MI_Db_1, MI_Eb_1, MI_F_1, MI_G_1, MI_A_1, MI_B_1, MI_Db_2, MI_Eb_2,
+
+ MI_C_2,
+ MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3, FN_MUTE,
+ MI_C_2, MI_D_2, MI_E_2, MI_Gb_2, MI_Ab_2, MI_Bb_2, MI_C_3, MI_D_3, MI_E_3, MI_Gb_3, MI_Ab_3, MI_Bb_3, MI_C_4,
+ MI_Db_2, MI_Eb_2, MI_F_2, MI_G_2, MI_A_2, MI_B_2, MI_Db_3, MI_Eb_3, MI_F_3, MI_G_3, MI_A_3, MI_B_3
+ ),
+
+ [_CFLIP_BASS2ROW] = LAYOUT(
+ MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr, MI_CH_Csr, MI_CH_Gsr, MI_CH_Dsr, MI_CH_Asr,
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+
+ MI_G_5,
+ MI_F_5, MI_D_5, MI_B_4, MI_Ab_4, MI_F_4, MI_D_4, MI_B_3, MI_Ab_3, MI_F_3, MI_D_3, MI_B_2, MI_Ab_2, FN_MUTE,
+ MI_Fs_5, MI_Eb_5, MI_C_5, MI_A_4, MI_Fs_4, MI_Eb_4, MI_C_4, MI_A_3, MI_Fs_3, MI_Eb_3, MI_C_3, MI_A_2, MI_Fs_2,
+ MI_E_5, MI_Db_5, MI_Bb_4, MI_G_4, MI_E_4, MI_Db_4, MI_Bb_3, MI_G_3, MI_E_3, MI_Db_3, MI_Bb_2, MI_G_2
+ ),
+
+ /* QWERTY */
+ [_QWERTY] = LAYOUT_wrapper(
+ KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC,
+ KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_DEL,
+ KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_ENT,
+ KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, ADJ_EIS, KC_SPC, KC_SPC, KC_LANG1, KC_APP, MO_ADJ, KC_LEFT, KC_DOWN, KC_RGHT,
+
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* COLEMAK */
+ [_COLEMAK] = LAYOUT_wrapper(
+ KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC,
+ KC_TAB, _________________COLEMAK_L1________________, _________________COLEMAK_R1________________, KC_DEL,
+ KC_LCTL, _________________COLEMAK_L2________________, _________________COLEMAK_R2________________, KC_ENT,
+ KC_LSFT, _________________COLEMAK_L3________________, _________________COLEMAK_R3________________, SHIF_UP,
+ KC_CAPS, KC_LGUI, KC_LALT, ADJ_EIS, KC_SPC, KC_SPC, KC_LANG1, KC_APP, MO_ADJ, KC_LEFT, KC_DOWN, KC_RGHT,
+
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /* ADJUST */
+ [_ADJUST] = LAYOUT_wrapper(
+ _______, _________________FUNC__L___________________, _________________FUNC__R___________________, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, _______,
+ _______, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_GRV, _______,
+ _______, KC_BRID, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_RBRC, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_BSLS, _______,
+
+ _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+
+ /* Fn */
+ [_FN] = LAYOUT(
+ CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_TOG,
+ DF_QWER, TGLBASS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ DF_COLE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLMICH,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ XXXXXXX,
+ MI_OCT_N2, MI_OCT_N1, MI_OCT_0, MI_OCT_1, MI_OCT_2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, EEP_RST, _______,
+ CSYSTEM, BSYSTEM, CNTBASC, CSYSALL, CHRTONE, CFLIP2B, CSYSFBS, XXXXXXX, XXXXXXX, MI_VELD, MI_VELU, RGB_MOD, RGB_TOG,
+ XXXXXXX, TGLBASS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TGLUVEL, MELDYAL, MELODYS, MELDYAH
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FAKE_B_SYSTEM] = { ENCODER_CCW_CW(_______, _______) },
+ [_C_SYSTEM_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) },
+ [_C_SYSTEM_ENTIRELY] = { ENCODER_CCW_CW(_______, _______) },
+ [_C_SYSTEM_FREEBASS] = { ENCODER_CCW_CW(_______, _______) },
+ [_CHROMATONE] = { ENCODER_CCW_CW(_______, _______) },
+ [_CFLIP_BASS2ROW] = { ENCODER_CCW_CW(_______, _______) },
+ [_QWERTY] = { ENCODER_CCW_CW(_______, _______) },
+ [_COLEMAK] = { ENCODER_CCW_CW(_______, _______) },
+ [_ADJUST] = { ENCODER_CCW_CW(_______, _______) },
+ [_FN] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
+};
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+
+// Light up adjust layer keys (left keyboard)
+const rgblight_segment_t PROGMEM my_adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS({1, 10, HSV_ORANGE},
+ {21, 2, HSV_ORANGE},
+ {25, 3, HSV_ORANGE},
+ {30, 5, HSV_ORANGE},
+ {37, 2, HSV_ORANGE},
+ {45, 2, HSV_ORANGE},
+ {57, 2, HSV_ORANGE}
+);
+
+// Light up fn layer keys
+const rgblight_segment_t PROGMEM my_fn_layer[] = RGBLIGHT_LAYER_SEGMENTS( // left keyboard
+ {0, 7, HSV_ORANGE}, // MIDI layouts
+ {11, 1, HSV_RED}, // RGB_TOG
+ {12, 1, HSV_WHITE}, // DF_QWER
+ {13, 1, HSV_CORAL}, // TGLBASS
+ {24, 1, HSV_WHITE}, // DF_COLE
+ {35, 1, HSV_TEAL}, // TGLMICH
+#if 0 // Color Test
+ {36, 1, HSV_WHITE},
+ {37, 1, HSV_RED},
+ {38, 1, HSV_CORAL},
+ {39, 1, HSV_ORANGE},
+ {40, 1, HSV_GOLDENROD},
+ {41, 1, HSV_GOLD},
+ {42, 1, HSV_YELLOW},
+ {43, 1, HSV_CHARTREUSE},
+ {44, 1, HSV_GREEN},
+ {45, 1, HSV_SPRINGGREEN},
+ {46, 1, HSV_TURQUOISE},
+ {47, 1, HSV_TEAL},
+ {48, 1, HSV_CYAN},
+ {49, 1, HSV_AZURE},
+ {50, 1, HSV_BLUE},
+ {51, 1, HSV_PURPLE},
+ {52, 1, HSV_MAGENTA},
+ {53, 1, HSV_PINK},
+#endif
+ // right keyboard
+ {60, 7, HSV_ORANGE}, // MIDI layouts
+ {74, 1, HSV_CORAL}, // TGLBASS
+ {85, 1, HSV_BLUE}, // MIDI Oct
+ {86, 1, HSV_CYAN}, // MIDI Oct
+ {87, 1, HSV_SPRINGGREEN}, // MIDI Oct
+ {88, 1, HSV_GREEN}, // MIDI Oct
+ {89, 1, HSV_CHARTREUSE}, // MIDI Oct
+ {96, 1, HSV_PINK}, // EEP_RST
+ {98, 7, HSV_ORANGE}, // MIDI layouts
+ {107, 1, HSV_YELLOW}, // MI_VELD
+ {108, 1, HSV_GREEN}, // MI_VELU
+ {110, 1, HSV_RED}, // RGB_TOG
+ {112, 1, HSV_CORAL}, // TGLBASS
+ {119, 1, HSV_CORAL}, // TGLUVEL
+ {120, 1, HSV_CYAN}, // MELDYAL
+ {121, 1, HSV_GOLD}, // MELODYS
+ {122, 1, HSV_SPRINGGREEN} // MELDYAH
+);
+
+// Now define the array of layers. Later layers take precedence
+const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_fn_layer, my_adjust_layer);
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ // Both layers will light up if both kb layers are active
+ rgblight_set_layer_state(0, layer_state_cmp(state, _FN));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _ADJUST));
+ return state;
+};
+
+#endif // RGBLIGHT_ENABLE
+
+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) {
+ midi_init();
+ my_init();
+
+ // Used to set octave to MI_OCT_0
+ midi_bass_ch = 0, midi_chord_ch = 0; // By default, all use the same channel.
+
+ // UNISON flags
+ melody_dyad_high = false; // true when +1 octave unison dyad is enabled.
+ melody_dyad_low = false; // true when -1 octave unison dyad is enabled.
+ melody_unison_suppress = true; // true: velocity of octave unison note is suppressd to UNISON_VELOCITY_RATIO
+
+ // Reset Bass setting
+ user_config.raw = 0; // default: dyad
+ eeconfig_update_user(user_config.raw);
+
+ // Reset the midi keyboard layout
+ set_single_persistent_default_layer(_C_SYSTEM_BASS2ROW);
+
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_sethsv(HSV_BLUE);
+ // party mode (for LED soldering test.)
+ rgb_matrix_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON);
+#endif
+}
+
+#ifdef RGB_MATRIX_ENABLE
+void rgb_matrix_indicators_user(void) {
+ uint8_t i;
+ // uint32_t mode = rgblight_get_mode();
+
+ if (rgb_matrix_is_enabled()) { // turn the lights on when it is enabled.
+
+ uint8_t layer = biton32(layer_state);
+
+ switch (layer) {
+ case _ADJUST:
+ rgb_matrix_set_color(30, RGB_DARKORANGE);
+ rgb_matrix_set_color(34, RGB_DARKORANGE);
+ // rgb_matrix_set_color(72, RGB_DARKORANGE);
+ break;
+ case _FN:
+ for (i = 0;i < 7;i++) {
+ rgb_matrix_set_color(74 - i, RGB_DARKORANGE); // MIDI layouts
+ // right keyboard
+ rgb_matrix_set_color(i, RGB_DARKORANGE); // MIDI layouts
+ rgb_matrix_set_color(50 - i, RGB_DARKORANGE); // MIDI layouts
+ }
+
+ // rgb_matrix_set_color(pgm_read_byte(&convert_led_location2number[11]), RGB_RED); // RGB_TOG <- too heavy.
+ rgb_matrix_set_color(64, RGB_DARKBLUE); // RGB_MOD
+ rgb_matrix_set_color(63, RGB_DARKRED); // RGB_TOG
+ rgb_matrix_set_color(76, RGB_DARKCORAL); // TGLBASS
+
+ rgb_matrix_set_color(75, RGB_DARKWHITE); // DF_QWER
+ rgb_matrix_set_color(98, RGB_DARKWHITE); // DF_COLE
+ rgb_matrix_set_color(87, RGB_DARKTEAL); // TGLMICH
+
+ rgb_matrix_set_color(23, RGB_DARKCORAL); // TGLBASS
+ rgb_matrix_set_color(26, RGB_DARKBLUE); // MIDI Oct
+ rgb_matrix_set_color(27, RGB_DARKCYAN); // MIDI Oct
+ rgb_matrix_set_color(28, RGB_DARKSPRINGGREEN); // MIDI Oct
+ rgb_matrix_set_color(29, RGB_DARKGREEN); // MIDI Oct
+ rgb_matrix_set_color(30, RGB_DARKCHARTREUSE); // MIDI Oct
+ rgb_matrix_set_color(37, RGB_DARKPINK); // EEP_RST
+ rgb_matrix_set_color(41, RGB_DARKYELLOW); // MI_VELD
+ rgb_matrix_set_color(40, RGB_DARKGREEN); // MI_VELU
+ rgb_matrix_set_color(39, RGB_DARKBLUE); // RGB_MOD
+ rgb_matrix_set_color(38, RGB_DARKRED); // RGB_TOG
+ rgb_matrix_set_color(52, RGB_DARKCORAL); // TGLBASS
+ rgb_matrix_set_color(59, RGB_DARKCORAL); // TGLUVEL
+ rgb_matrix_set_color(60, RGB_DARKCYAN); // MELDYAL
+ rgb_matrix_set_color(61, RGB_DARKGOLD); // MELODYS
+ rgb_matrix_set_color(62, RGB_DARKSPRINGGREEN); // MELDYAH
+ break;
+ }
+ }
+}
+#endif
+
+void keyboard_post_init_user(void) {
+ my_init();
+
+ for (uint8_t i = 0; i < MY_CHORD_COUNT; i++) {
+ chord_status[i] = MIDI_INVALID_NOTE;
+ }
+
+ for (uint8_t i = 0; i < MIDI_TONE_COUNT; i++) {
+ my_tone_status[i] = MIDI_INVALID_NOTE;
+ }
+ // load EEPROM data for isSingleBass
+ user_config.raw = eeconfig_read_user();
+
+#ifdef RGBLIGHT_ENABLE
+
+ rgblight_layers = my_rgb_layers;
+
+ // Reset LED off
+ rgblight_sethsv(HSV_BLACK);
+# if defined(RGBLIGHT_EFFECT_KNIGHT) || defined(RGBLIGHT_EFFECT_TWINKLE)
+ rgblight_sethsv(30, 50, 40);
+# ifdef RGBLIGHT_EFFECT_KNIGHT
+ rgblight_mode(RGBLIGHT_MODE_KNIGHT);
+# elif defined(RGBLIGHT_EFFECT_TWINKLE)
+ rgblight_mode(RGBLIGHT_MODE_TWINKLE+3);
+# endif
+# endif
+#endif // RGBLIGHT_ENABLE
+
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_sethsv(HSV_BLUE);
+ // party mode (for LED soldering test.)
+ rgb_matrix_mode(RGB_MATRIX_RAINBOW_MOVING_CHEVRON);
+#endif
+};
+
+void toggle_isSingleBass(void) {
+#ifdef CONSOLE_ENABLE
+ uprintf("isSingleBass(before) %u\n", user_config.isSingleBass);
+#endif
+ user_config.isSingleBass = !user_config.isSingleBass;
+#ifdef CONSOLE_ENABLE
+ uprintf("isSingleBass(after) %u\n", user_config.isSingleBass);
+#endif
+
+ eeconfig_update_user(user_config.raw);
+}
+
+void toggle_MIDI_channel_separation(void) {
+ if (midi_chord_ch > 0) {
+ midi_chord_ch = 0;
+ midi_bass_ch = 0;
+ } else {
+ midi_chord_ch = 1;
+ midi_bass_ch = 2;
+ }
+}
+
+#ifdef RGBLIGHT_ENABLE
+void keylight_manager(keyrecord_t *record, uint8_t hue, uint8_t sat, uint8_t val, uint8_t keylocation) {
+ if (keylocation == NO_LED) {
+ return; // do nothing.
+# ifdef CONSOLE_ENABLE
+ uprintf("keylight_manager, NO_LED\n");
+# endif
+ }
+
+ if (record->event.pressed) {
+ rgblight_sethsv_at(hue, sat, val, keylocation);
+ } else {
+ rgblight_sethsv_at(HSV_BLACK, keylocation);
+ }
+}
+#endif // RGBLIGHT_ENABLE
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ uint16_t root_note = MIDI_INVALID_NOTE; // Starting value for the root note of each chord
+
+#ifdef RGBLIGHT_ENABLE
+ /* prepare for turning on LEDs when keys are pressed. */
+ uint8_t r = record->event.key.row;
+ uint8_t c = record->event.key.col;
+ // uint8_t keylocation = convert_key_to_led[MATRIX_COLS * r + c];
+ // uint8_t keylocation2 = convert_key_to_led2[MATRIX_COLS * r + c];
+ uint8_t keylocation = pgm_read_byte(&convert_key_to_led[MATRIX_COLS * r + c]);
+ uint8_t keylocation2 = pgm_read_byte(&convert_key_to_led2[MATRIX_COLS * r + c]);
+#endif // RGBLIGHT_ENABLE
+
+ uint8_t chord = keycode - MY_CHORD_MIN;
+
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+
+ // set default layer and save it to EEPROM when MIDI key layers are selected.
+ case CSYSTEM:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_C_SYSTEM_BASE);
+ }
+ break;
+
+ case BSYSTEM:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_FAKE_B_SYSTEM);
+ }
+ break;
+
+ case CNTBASC:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_C_SYSTEM_BASS2ROW);
+ }
+ break;
+
+ case CSYSALL:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_C_SYSTEM_ENTIRELY);
+ }
+ break;
+
+ case CHRTONE:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_CHROMATONE);
+ }
+ break;
+
+ case CFLIP2B:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_CFLIP_BASS2ROW);
+ }
+ break;
+
+ case CSYSFBS:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_C_SYSTEM_FREEBASS);
+ }
+ break;
+
+ case TGLBASS:
+ if (record->event.pressed) {
+ toggle_isSingleBass();
+ };
+ break;
+
+ case TGLMICH:
+ if (record->event.pressed) {
+ toggle_MIDI_channel_separation();
+ };
+ break;
+
+ case MELDYAL:
+ if (record->event.pressed) {
+ melody_dyad_low = true;
+ melody_dyad_high = false;
+ };
+ break;
+
+ case MELODYS:
+ if (record->event.pressed) {
+ melody_dyad_low = false;
+ melody_dyad_high = false;
+ };
+ break;
+
+ case MELDYAH:
+ if (record->event.pressed) {
+ melody_dyad_low = false;
+ melody_dyad_high = true;
+ };
+ break;
+
+ case TGLUVEL:
+ if (record->event.pressed) {
+ melody_unison_suppress = !melody_unison_suppress;
+ };
+ break;
+
+ // MIDI Chord Keycodes, on the left side.
+ case MI_CH_Cr ... MI_CH_Br: // Root Notes
+ root_note = keycode - MI_CH_Cr + MI_C_1;
+ my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, IS_SINGLE_BASS());
+#ifdef RGBLIGHT_ENABLE
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+#endif
+ break;
+
+ case MI_CH_C ... MI_CH_B: // Major Chords
+ root_note = keycode - MI_CH_C + MI_C_2;
+ // Root, Major Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
+#ifdef RGBLIGHT_ENABLE
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+#endif
+ break;
+
+ case MI_CH_Cm ... MI_CH_Bm: // Minor Chord
+ root_note = keycode - MI_CH_Cm + MI_C_2;
+ // Root, Minor Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
+#ifdef RGBLIGHT_ENABLE
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+#endif
+ break;
+
+ case MI_CH_CDom7 ... MI_CH_BDom7: // Dominant 7th Chord
+ root_note = keycode - MI_CH_CDom7 + MI_C_2;
+ // Major Third, Major Fifth, and Minor Seventh Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
+#ifdef RGBLIGHT_ENABLE
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+#endif
+ break;
+
+ case MI_CH_CDim7 ... MI_CH_BDim7: // Diminished 7th Chord
+ root_note = keycode - MI_CH_CDim7 + MI_C_2;
+ // Root, Minor Third, and Diminished 5th Note
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
+#ifdef RGBLIGHT_ENABLE
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+#endif
+ break;
+
+#ifdef RGBLIGHT_ENABLE
+ case KC_A ... KC_RGUI: // for QWERTY
+ case KC_GESC:
+ case ADJ_EIS:
+ case MO_ADJ:
+ case SHIF_UP:
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+ break;
+#endif
+
+ // Keycodes on the right side.
+ case MIDI_TONE_MIN ... MIDI_TONE_MAX: // notes on the right side keyboard.
+ // root_note is played by process_midi().
+ if ( melody_dyad_high == true ) { // play 1 octave higher as well.
+ my_process_midi(0, keycode, record, my_tone_status, 12, melody_unison_suppress);
+ } else if ( melody_dyad_low == true ) { // play 1 octave lower as well.
+ my_process_midi(0, keycode, record, my_tone_status, -12, melody_unison_suppress);
+ }
+#ifdef RGBLIGHT_ENABLE
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+ keylight_manager(record, HSV_GOLDENROD, keylocation2);
+#endif
+ break;
+
+#ifdef RGBLIGHT_ENABLE
+ // case KC_MUTE:
+ case FN_MUTE:
+ keylight_manager(record, HSV_GOLDENROD, keylocation);
+ break;
+#endif
+ }
+ // If console is enabled, it will print the matrix position and status of each key pressed
+#if defined(CONSOLE_ENABLE) && defined(RGBLIGHT_ENABLE)
+ uprintf("KL: kc: %u, col: %u, row: %u, pressed: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed);
+ uprintf("r=%d, c=%d, keyloc=%d, keyloc2=%d, matrix_col x r + c = %d\n", r, c, keylocation, keylocation2, MATRIX_COLS * r + c);
+#endif
+ return true;
+}
diff --git a/keyboards/giabalanai/keymaps/party/readme.md b/keyboards/giabalanai/keymaps/party/readme.md
new file mode 100644
index 0000000000..797fed76f8
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/party/readme.md
@@ -0,0 +1,3 @@
+# The fancy LED ver. for giabalanai
+# warning: There is little space left for the firmware. You can't do anything further with this firmware.
+# Power consumption might exceed 5 V * 500 mA = 2.5 W or so.
diff --git a/keyboards/giabalanai/keymaps/party/rgb_matrix_user.inc b/keyboards/giabalanai/keymaps/party/rgb_matrix_user.inc
new file mode 100644
index 0000000000..40ce7148d3
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/party/rgb_matrix_user.inc
@@ -0,0 +1,57 @@
+#ifdef RGB_MATRIX_KEYREACTIVE_ENABLED
+RGB_MATRIX_EFFECT(my_solid_reactive_with_CnoteIndicator)
+RGB_MATRIX_EFFECT(my_party_rocks)
+
+# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+
+bool my_solid_reactive_with_CnoteIndicator(effect_params_t* params) {
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+ uint16_t max_tick = 65535 / rgb_matrix_config.speed;
+ for (uint8_t i = led_min; i < led_max; i++) {
+ RGB_MATRIX_TEST_LED_FLAGS();
+ HSV hsv = rgb_matrix_config.hsv;
+ switch (i) {
+ // C note indicator
+ case 15:
+ case 19:
+ case 23:
+ case 52:
+ case 56:
+ case 60:
+ case 80: // left hand side, bass C note when counter bass is chosen.
+ // HSV_GOLDENROD
+ hsv.h = 30;
+ hsv.s = 218;
+ hsv.v = 218;
+ break;
+ }
+ 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.x[j] == g_led_config.point[i].x && g_last_hit_tracker.y[j] == g_led_config.point[i].y && g_last_hit_tracker.tick[j] < tick) {
+ tick = g_last_hit_tracker.tick[j];
+ break;
+ }
+ }
+
+ uint16_t offset = scale16by8(tick, rgb_matrix_config.speed);
+ hsv.h += qsub8(130, offset);
+ 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;
+}
+
+bool my_party_rocks(effect_params_t* params) {
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+ HSV hsv = {rand() & 0xFF, rand() & 0xFF, rgb_matrix_config.hsv.v};
+ RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
+ // rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ rgb_matrix_set_color_all(rgb.r, rgb.g, rgb.b);
+ return led_max < DRIVER_LED_TOTAL;
+}
+
+
+# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+#endif // RGB_MATRIX_KEYREACTIVE_ENABLED
diff --git a/keyboards/giabalanai/keymaps/party/rules.mk b/keyboards/giabalanai/keymaps/party/rules.mk
new file mode 100644
index 0000000000..c05207feeb
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/party/rules.mk
@@ -0,0 +1,6 @@
+# RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+CONSOLE_ENABLE = no # Console for debug
+RGB_MATRIX_ENABLE = yes # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
+RGB_MATRIX_CUSTOM_USER = yes #
+
+ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
diff --git a/keyboards/giabalanai/keymaps/via/config.h b/keyboards/giabalanai/keymaps/via/config.h
new file mode 100644
index 0000000000..a3b77a5b4d
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/via/config.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/giabalanai/keymaps/via/keymap.c b/keyboards/giabalanai/keymaps/via/keymap.c
new file mode 100644
index 0000000000..774260d052
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/via/keymap.c
@@ -0,0 +1,260 @@
+/* Copyright 2020 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+// Alias layout macros that expand groups of keys.
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+
+#define DFCBASE DF(_C_SYSTEM_BASE)
+#define DF_QWER DF(_QWERTY)
+// Long press: go to _FN layer, tap: MUTE
+#define FN_MUTE LT(_FN, KC_MUTE)
+
+// Used to set octave to MI_OCT_0
+extern midi_config_t midi_config;
+uint8_t midi_bass_ch = 0, midi_chord_ch = 0; // By default, all use the same channel.
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _C_SYSTEM_BASE, // MIDI C-system
+ _QWERTY, // just in case
+ _FN
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+
+ // MIDI Chord Keycodes - Root notes
+ MY_CHORD_MIN = SAFE_RANGE,
+
+ MI_CH_Cr = MY_CHORD_MIN,
+ MI_CH_Csr,
+ MI_CH_Dbr = MI_CH_Csr,
+ MI_CH_Dr,
+ MI_CH_Dsr,
+ MI_CH_Ebr = MI_CH_Dsr,
+ MI_CH_Er,
+ MI_CH_Fr,
+ MI_CH_Fsr,
+ MI_CH_Gbr = MI_CH_Fsr,
+ MI_CH_Gr,
+ MI_CH_Gsr,
+ MI_CH_Abr = MI_CH_Gsr,
+ MI_CH_Ar,
+ MI_CH_Asr,
+ MI_CH_Bbr = MI_CH_Asr,
+ MI_CH_Br,
+
+ // MIDI Chord Keycodes - Major
+
+ MI_CH_C,
+ MI_CH_Cs,
+ MI_CH_Db = MI_CH_Cs,
+ MI_CH_D,
+ MI_CH_Ds,
+ MI_CH_Eb = MI_CH_Ds,
+ MI_CH_E,
+ MI_CH_F,
+ MI_CH_Fs,
+ MI_CH_Gb = MI_CH_Fs,
+ MI_CH_G,
+ MI_CH_Gs,
+ MI_CH_Ab = MI_CH_Gs,
+ MI_CH_A,
+ MI_CH_As,
+ MI_CH_Bb = MI_CH_As,
+ MI_CH_B,
+
+ // MIDI Chord Keycodes Minor
+
+ MI_CH_Cm,
+ MI_CH_Csm,
+ MI_CH_Dbm = MI_CH_Csm,
+ MI_CH_Dm,
+ MI_CH_Dsm,
+ MI_CH_Ebm = MI_CH_Dsm,
+ MI_CH_Em,
+ MI_CH_Fm,
+ MI_CH_Fsm,
+ MI_CH_Gbm = MI_CH_Fsm,
+ MI_CH_Gm,
+ MI_CH_Gsm,
+ MI_CH_Abm = MI_CH_Gsm,
+ MI_CH_Am,
+ MI_CH_Asm,
+ MI_CH_Bbm = MI_CH_Asm,
+ MI_CH_Bm,
+
+ //MIDI Chord Keycodes Dominant Seventh
+
+ MI_CH_CDom7,
+ MI_CH_CsDom7,
+ MI_CH_DbDom7 = MI_CH_CsDom7,
+ MI_CH_DDom7,
+ MI_CH_DsDom7,
+ MI_CH_EbDom7 = MI_CH_DsDom7,
+ MI_CH_EDom7,
+ MI_CH_FDom7,
+ MI_CH_FsDom7,
+ MI_CH_GbDom7 = MI_CH_FsDom7,
+ MI_CH_GDom7,
+ MI_CH_GsDom7,
+ MI_CH_AbDom7 = MI_CH_GsDom7,
+ MI_CH_ADom7,
+ MI_CH_AsDom7,
+ MI_CH_BbDom7 = MI_CH_AsDom7,
+ MI_CH_BDom7,
+
+ // MIDI Chord Keycodes Diminished Seventh
+
+ MI_CH_CDim7,
+ MI_CH_CsDim7,
+ MI_CH_DbDim7 = MI_CH_CsDim7,
+ MI_CH_DDim7,
+ MI_CH_DsDim7,
+ MI_CH_EbDim7 = MI_CH_DsDim7,
+ MI_CH_EDim7,
+ MI_CH_FDim7,
+ MI_CH_FsDim7,
+ MI_CH_GbDim7 = MI_CH_FsDim7,
+ MI_CH_GDim7,
+ MI_CH_GsDim7,
+ MI_CH_AbDim7 = MI_CH_GsDim7,
+ MI_CH_ADim7,
+ MI_CH_AsDim7,
+ MI_CH_BbDim7 = MI_CH_AsDim7,
+ MI_CH_BDim7,
+
+ MY_CHORD_MAX = MI_CH_BDim7,
+
+ VERSION = USER00
+};
+
+#define MY_CHORD_COUNT (MY_CHORD_MAX - MY_CHORD_MIN + 1)
+static uint8_t chord_status[MY_CHORD_COUNT];
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* C-system Base */
+ [_C_SYSTEM_BASE] = LAYOUT(
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+ MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
+
+ MI_Fs_2,
+ MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5, MI_F_5, FN_MUTE,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5, MI_G_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, MI_Fs_5
+ ),
+
+ /* QWERTY */
+ [_QWERTY] = LAYOUT_wrapper(
+ KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC,
+ KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_DEL,
+ KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_ENT,
+ KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_LANG2, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LANG1, KC_RALT, KC_RGUI, KC_RCTRL,
+
+ KC_GESC,
+ _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_MINS, KC_BSPC, _______,
+ KC_LCTL, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT, KC_ENT,
+ KC_LALT, _________________QWERTY_L3_________________, KC_N, KC_M, KC_COMM, KC_DOT, KC_SPC, KC_RSFT
+ ),
+
+ /* Fn */
+ [_FN] = LAYOUT(
+ DFCBASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ DF_QWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ _______,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, XXXXXXX, _______,
+ DFCBASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ DF_QWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_QWERTY] = { ENCODER_CCW_CW(_______, _______) },
+ [_FN] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
+
+void keyboard_post_init_user(void) {
+ // Set otave 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;
+
+
+ for (uint8_t i = 0; i < MY_CHORD_COUNT; i++) {
+ chord_status[i] = MIDI_INVALID_NOTE;
+ }
+
+ default_layer_set(1UL << _C_SYSTEM_BASE);
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ uint16_t root_note = MIDI_INVALID_NOTE; // Starting value for the root note of each chord
+
+ uint8_t chord = keycode - MY_CHORD_MIN;
+
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+
+ // MIDI Chord Keycodes, on the left side.
+ case MI_CH_Cr ... MI_CH_Br: // Root Notes
+ root_note = keycode - MI_CH_Cr + MI_C_1;
+ my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, false);
+ break;
+
+ case MI_CH_C ... MI_CH_B: // Major Chords
+ root_note = keycode - MI_CH_C + MI_C_2;
+ // Root, Major Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
+ break;
+
+ case MI_CH_Cm ... MI_CH_Bm: // Minor Chord
+ root_note = keycode - MI_CH_Cm + MI_C_2;
+ // Root, Minor Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
+ break;
+
+ case MI_CH_CDom7 ... MI_CH_BDom7: // Dominant 7th Chord
+ root_note = keycode - MI_CH_CDom7 + MI_C_2;
+ // Major Third, Major Fifth, and Minor Seventh Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
+ break;
+
+ case MI_CH_CDim7 ... MI_CH_BDim7: // Diminished 7th Chord
+ root_note = keycode - MI_CH_CDim7 + MI_C_2;
+ // Root, Minor Third, and Diminished 5th Note
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/giabalanai/keymaps/via/readme.md b/keyboards/giabalanai/keymaps/via/readme.md
new file mode 100644
index 0000000000..3c599bfe0e
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The default VIA keymap for giabalanai
diff --git a/keyboards/giabalanai/keymaps/via/rules.mk b/keyboards/giabalanai/keymaps/via/rules.mk
new file mode 100644
index 0000000000..da4a83087f
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
diff --git a/keyboards/giabalanai/keymaps/via_giabarinaix2/config.h b/keyboards/giabalanai/keymaps/via_giabarinaix2/config.h
new file mode 100644
index 0000000000..01905b8dfe
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/via_giabarinaix2/config.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
+#define GIABARINAIX2
+#ifdef GIABARINAIX2
+# undef MATRIX_ROW_PINS_RIGHT
+# undef MATRIX_COL_PINS_RIGHT
+
+# ifdef RGBLIGHT_ENABLE
+# undef RGBLED_NUM
+# define RGBLED_NUM 120
+# undef RGBLIGHT_LED_MAP
+# define RGBLIGHT_LED_MAP { \
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, \
+ 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, \
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, \
+ 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, \
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, \
+ \
+ 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, \
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, \
+ 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, \
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, \
+ 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48 \
+ }
+# endif
+#endif
diff --git a/keyboards/giabalanai/keymaps/via_giabarinaix2/info.json b/keyboards/giabalanai/keymaps/via_giabarinaix2/info.json
new file mode 100644
index 0000000000..20a52326dd
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/via_giabarinaix2/info.json
@@ -0,0 +1,146 @@
+{
+ "keyboard_name": "giabarinaix2",
+ "manufacturer": "3araht",
+ "url": "https://github.com/3araht",
+ "maintainer": "3araht",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xF4B2",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "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": "l06", "x": 6, "y": 0},
+ {"label": "l07", "x": 7, "y": 0},
+ {"label": "l08", "x": 8, "y": 0},
+ {"label": "l09", "x": 9, "y": 0},
+ {"label": "l0a", "x": 10, "y": 0},
+ {"label": "l0b", "x": 11, "y": 0},
+
+ {"label": "r00", "x": 14.5, "y": 0},
+ {"label": "r01", "x": 15.5, "y": 0},
+ {"label": "r02", "x": 16.5, "y": 0},
+ {"label": "r03", "x": 17.5, "y": 0},
+ {"label": "r04", "x": 18.5, "y": 0},
+ {"label": "r05", "x": 19.5, "y": 0},
+ {"label": "r06", "x": 20.5, "y": 0},
+ {"label": "r07", "x": 21.5, "y": 0},
+ {"label": "r08", "x": 22.5, "y": 0},
+ {"label": "r09", "x": 23.5, "y": 0},
+ {"label": "r0a", "x": 24.5, "y": 0},
+ {"label": "r0b", "x": 25.5, "y": 0},
+
+ {"label": "l10", "x": 0.5, "y": 1},
+ {"label": "l11", "x": 1.5, "y": 1},
+ {"label": "l12", "x": 2.5, "y": 1},
+ {"label": "l13", "x": 3.5, "y": 1},
+ {"label": "l14", "x": 4.5, "y": 1},
+ {"label": "l15", "x": 5.5, "y": 1},
+ {"label": "l16", "x": 6.5, "y": 1},
+ {"label": "l17", "x": 7.5, "y": 1},
+ {"label": "l18", "x": 8.5, "y": 1},
+ {"label": "l19", "x": 9.5, "y": 1},
+ {"label": "l1a", "x": 10.5, "y": 1},
+ {"label": "l1b", "x": 11.5, "y": 1},
+
+ {"label": "r10", "x": 15, "y": 1},
+ {"label": "r11", "x": 16, "y": 1},
+ {"label": "r12", "x": 17, "y": 1},
+ {"label": "r13", "x": 18, "y": 1},
+ {"label": "r14", "x": 19, "y": 1},
+ {"label": "r15", "x": 20, "y": 1},
+ {"label": "r16", "x": 21, "y": 1},
+ {"label": "r17", "x": 22, "y": 1},
+ {"label": "r18", "x": 23, "y": 1},
+ {"label": "r19", "x": 24, "y": 1},
+ {"label": "r1a", "x": 25, "y": 1},
+ {"label": "r1b", "x": 26, "y": 1},
+
+ {"label": "l20", "x": 1, "y": 2},
+ {"label": "l21", "x": 2, "y": 2},
+ {"label": "l22", "x": 3, "y": 2},
+ {"label": "l23", "x": 4, "y": 2},
+ {"label": "l24", "x": 5, "y": 2},
+ {"label": "l25", "x": 6, "y": 2},
+ {"label": "l26", "x": 7, "y": 2},
+ {"label": "l27", "x": 8, "y": 2},
+ {"label": "l28", "x": 9, "y": 2},
+ {"label": "l29", "x": 10, "y": 2},
+ {"label": "l2a", "x": 11, "y": 2},
+ {"label": "l2b", "x": 12, "y": 2},
+
+ {"label": "r20", "x": 15.5, "y": 2},
+ {"label": "r21", "x": 16.5, "y": 2},
+ {"label": "r22", "x": 17.5, "y": 2},
+ {"label": "r23", "x": 18.5, "y": 2},
+ {"label": "r24", "x": 19.5, "y": 2},
+ {"label": "r25", "x": 20.5, "y": 2},
+ {"label": "r26", "x": 21.5, "y": 2},
+ {"label": "r27", "x": 22.5, "y": 2},
+ {"label": "r28", "x": 23.5, "y": 2},
+ {"label": "r29", "x": 24.5, "y": 2},
+ {"label": "r2a", "x": 25.5, "y": 2},
+ {"label": "r2b", "x": 26.5, "y": 2},
+
+ {"label": "l30", "x": 1.5, "y": 3},
+ {"label": "l31", "x": 2.5, "y": 3},
+ {"label": "l32", "x": 3.5, "y": 3},
+ {"label": "l33", "x": 4.5, "y": 3},
+ {"label": "l34", "x": 5.5, "y": 3},
+ {"label": "l35", "x": 6.5, "y": 3},
+ {"label": "l36", "x": 7.5, "y": 3},
+ {"label": "l37", "x": 8.5, "y": 3},
+ {"label": "l38", "x": 9.5, "y": 3},
+ {"label": "l39", "x": 10.5, "y": 3},
+ {"label": "l3a", "x": 11.5, "y": 3},
+ {"label": "l3b", "x": 12.5, "y": 3},
+
+ {"label": "r30", "x": 16, "y": 3},
+ {"label": "r31", "x": 17, "y": 3},
+ {"label": "r32", "x": 18, "y": 3},
+ {"label": "r33", "x": 19, "y": 3},
+ {"label": "r34", "x": 20, "y": 3},
+ {"label": "r35", "x": 21, "y": 3},
+ {"label": "r36", "x": 22, "y": 3},
+ {"label": "r37", "x": 23, "y": 3},
+ {"label": "r38", "x": 24, "y": 3},
+ {"label": "r39", "x": 25, "y": 3},
+ {"label": "r3a", "x": 26, "y": 3},
+ {"label": "r3b", "x": 27, "y": 3},
+
+ {"label": "l40", "x": 2, "y": 4},
+ {"label": "l41", "x": 3, "y": 4},
+ {"label": "l42", "x": 4, "y": 4},
+ {"label": "l43", "x": 5, "y": 4},
+ {"label": "l44", "x": 6, "y": 4},
+ {"label": "l45", "x": 7, "y": 4},
+ {"label": "l46", "x": 8, "y": 4},
+ {"label": "l47", "x": 9, "y": 4},
+ {"label": "l48", "x": 10, "y": 4},
+ {"label": "l49", "x": 11, "y": 4},
+ {"label": "l4a", "x": 12, "y": 4},
+ {"label": "l4b", "x": 13, "y": 4},
+
+ {"label": "r40", "x": 16.5, "y": 4},
+ {"label": "r41", "x": 17.5, "y": 4},
+ {"label": "r42", "x": 18.5, "y": 4},
+ {"label": "r43", "x": 19.5, "y": 4},
+ {"label": "r44", "x": 20.5, "y": 4},
+ {"label": "r45", "x": 21.5, "y": 4},
+ {"label": "r46", "x": 22.5, "y": 4},
+ {"label": "r47", "x": 23.5, "y": 4},
+ {"label": "r48", "x": 24.5, "y": 4},
+ {"label": "r49", "x": 25.5, "y": 4},
+ {"label": "r4a", "x": 26.5, "y": 4},
+ {"label": "r4b", "x": 27.5, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/giabalanai/keymaps/via_giabarinaix2/keymap.c b/keyboards/giabalanai/keymaps/via_giabarinaix2/keymap.c
new file mode 100644
index 0000000000..afe1faff1b
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/via_giabarinaix2/keymap.c
@@ -0,0 +1,262 @@
+/* Copyright 2020 3araht
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+// Alias layout macros that expand groups of keys.
+#define LAYOUT_wrapper_giabarinaix2(...) LAYOUT_giabarinaix2(__VA_ARGS__)
+
+#define DFCBASE DF(_C_SYSTEM_BASE)
+#define DF_QWER DF(_QWERTY)
+// Long press: go to _FN layer, tap: MUTE
+#define FN_MUTE LT(_FN, KC_MUTE)
+
+// Used to set octave to MI_OCT_0
+extern midi_config_t midi_config;
+uint8_t midi_bass_ch = 0, midi_chord_ch = 0; // By default, all use the same channel.
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _C_SYSTEM_BASE, // MIDI C-system
+ _QWERTY, // just in case
+ _FN
+};
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+
+ // MIDI Chord Keycodes - Root notes
+ MY_CHORD_MIN = SAFE_RANGE,
+
+ MI_CH_Cr = MY_CHORD_MIN,
+ MI_CH_Csr,
+ MI_CH_Dbr = MI_CH_Csr,
+ MI_CH_Dr,
+ MI_CH_Dsr,
+ MI_CH_Ebr = MI_CH_Dsr,
+ MI_CH_Er,
+ MI_CH_Fr,
+ MI_CH_Fsr,
+ MI_CH_Gbr = MI_CH_Fsr,
+ MI_CH_Gr,
+ MI_CH_Gsr,
+ MI_CH_Abr = MI_CH_Gsr,
+ MI_CH_Ar,
+ MI_CH_Asr,
+ MI_CH_Bbr = MI_CH_Asr,
+ MI_CH_Br,
+
+ // MIDI Chord Keycodes - Major
+
+ MI_CH_C,
+ MI_CH_Cs,
+ MI_CH_Db = MI_CH_Cs,
+ MI_CH_D,
+ MI_CH_Ds,
+ MI_CH_Eb = MI_CH_Ds,
+ MI_CH_E,
+ MI_CH_F,
+ MI_CH_Fs,
+ MI_CH_Gb = MI_CH_Fs,
+ MI_CH_G,
+ MI_CH_Gs,
+ MI_CH_Ab = MI_CH_Gs,
+ MI_CH_A,
+ MI_CH_As,
+ MI_CH_Bb = MI_CH_As,
+ MI_CH_B,
+
+ // MIDI Chord Keycodes Minor
+
+ MI_CH_Cm,
+ MI_CH_Csm,
+ MI_CH_Dbm = MI_CH_Csm,
+ MI_CH_Dm,
+ MI_CH_Dsm,
+ MI_CH_Ebm = MI_CH_Dsm,
+ MI_CH_Em,
+ MI_CH_Fm,
+ MI_CH_Fsm,
+ MI_CH_Gbm = MI_CH_Fsm,
+ MI_CH_Gm,
+ MI_CH_Gsm,
+ MI_CH_Abm = MI_CH_Gsm,
+ MI_CH_Am,
+ MI_CH_Asm,
+ MI_CH_Bbm = MI_CH_Asm,
+ MI_CH_Bm,
+
+ //MIDI Chord Keycodes Dominant Seventh
+
+ MI_CH_CDom7,
+ MI_CH_CsDom7,
+ MI_CH_DbDom7 = MI_CH_CsDom7,
+ MI_CH_DDom7,
+ MI_CH_DsDom7,
+ MI_CH_EbDom7 = MI_CH_DsDom7,
+ MI_CH_EDom7,
+ MI_CH_FDom7,
+ MI_CH_FsDom7,
+ MI_CH_GbDom7 = MI_CH_FsDom7,
+ MI_CH_GDom7,
+ MI_CH_GsDom7,
+ MI_CH_AbDom7 = MI_CH_GsDom7,
+ MI_CH_ADom7,
+ MI_CH_AsDom7,
+ MI_CH_BbDom7 = MI_CH_AsDom7,
+ MI_CH_BDom7,
+
+ // MIDI Chord Keycodes Diminished Seventh
+
+ MI_CH_CDim7,
+ MI_CH_CsDim7,
+ MI_CH_DbDim7 = MI_CH_CsDim7,
+ MI_CH_DDim7,
+ MI_CH_DsDim7,
+ MI_CH_EbDim7 = MI_CH_DsDim7,
+ MI_CH_EDim7,
+ MI_CH_FDim7,
+ MI_CH_FsDim7,
+ MI_CH_GbDim7 = MI_CH_FsDim7,
+ MI_CH_GDim7,
+ MI_CH_GsDim7,
+ MI_CH_AbDim7 = MI_CH_GsDim7,
+ MI_CH_ADim7,
+ MI_CH_AsDim7,
+ MI_CH_BbDim7 = MI_CH_AsDim7,
+ MI_CH_BDim7,
+
+ MY_CHORD_MAX = MI_CH_BDim7,
+
+ VERSION = USER00
+};
+
+#define MY_CHORD_COUNT (MY_CHORD_MAX - MY_CHORD_MIN + 1)
+static uint8_t chord_status[MY_CHORD_COUNT];
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* C-system Base */
+ [_C_SYSTEM_BASE] = LAYOUT_giabarinaix2(
+ MI_CH_Dbr, MI_CH_Abr, MI_CH_Ebr, MI_CH_Bbr, MI_CH_Fr, MI_CH_Cr, MI_CH_Gr, MI_CH_Dr, MI_CH_Ar, MI_CH_Er, MI_CH_Br, MI_CH_Fsr,
+ MI_CH_Db, MI_CH_Ab, MI_CH_Eb, MI_CH_Bb, MI_CH_F, MI_CH_C, MI_CH_G, MI_CH_D, MI_CH_A, MI_CH_E, MI_CH_B, MI_CH_Fs,
+ MI_CH_Dbm, MI_CH_Abm, MI_CH_Ebm, MI_CH_Bbm, MI_CH_Fm, MI_CH_Cm, MI_CH_Gm, MI_CH_Dm, MI_CH_Am, MI_CH_Em, MI_CH_Bm, MI_CH_Fsm,
+ MI_CH_DbDom7, MI_CH_AbDom7, MI_CH_EbDom7, MI_CH_BbDom7, MI_CH_FDom7, MI_CH_CDom7, MI_CH_GDom7, MI_CH_DDom7, MI_CH_ADom7, MI_CH_EDom7, MI_CH_BDom7, MI_CH_FsDom7,
+ MI_CH_DbDim7, MI_CH_AbDim7, MI_CH_EbDim7, MI_CH_BbDim7, MI_CH_FDim7, MI_CH_CDim7, MI_CH_GDim7, MI_CH_DDim7, MI_CH_ADim7, MI_CH_EDim7, MI_CH_BDim7, MI_CH_FsDim7,
+
+ MI_Db_2, MI_E_2, MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4,
+ MI_Eb_2, MI_Fs_2, MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5,
+ MI_F_2, MI_Ab_2, MI_B_2, MI_D_3, MI_F_3, MI_Ab_3, MI_B_3, MI_D_4, MI_F_4, MI_Ab_4, MI_B_4, MI_D_5,
+ MI_G_2, MI_Bb_2, MI_Db_3, MI_E_3, MI_G_3, MI_Bb_3, MI_Db_4, MI_E_4, MI_G_4, MI_Bb_4, MI_Db_5, MI_E_5,
+ MI_A_2, MI_C_3, MI_Eb_3, MI_Fs_3, MI_A_3, MI_C_4, MI_Eb_4, MI_Fs_4, MI_A_4, MI_C_5, MI_Eb_5, FN_MUTE
+ ),
+
+ /* QWERTY */
+ [_QWERTY] = LAYOUT_wrapper_giabarinaix2(
+ KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC,
+ KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_DEL,
+ KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_ENT,
+ KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_LANG2, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LANG1, KC_RALT, KC_RGUI, KC_RCTRL,
+
+ KC_GESC, _________________NUMBER_L__________________, _________________NUMBER_R__________________, KC_BSPC,
+ KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_DEL,
+ KC_CAPS, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_ENT,
+ KC_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_LANG2, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_LANG1, KC_RALT, KC_RGUI, _______
+ ),
+
+ /* Fn */
+ [_FN] = LAYOUT_giabarinaix2(
+ DFCBASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ DF_QWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ DFCBASE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ DF_QWER, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, VERSION, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_C_SYSTEM_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_QWERTY] = { ENCODER_CCW_CW(_______, _______) },
+ [_FN] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
+
+void keyboard_post_init_user(void) {
+ // Set otave 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;
+
+ for (uint8_t i = 0; i < MY_CHORD_COUNT; i++) {
+ chord_status[i] = MIDI_INVALID_NOTE;
+ }
+
+ default_layer_set(1UL << _C_SYSTEM_BASE);
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ uint16_t root_note = MIDI_INVALID_NOTE; // Starting value for the root note of each chord
+
+ uint8_t chord = keycode - MY_CHORD_MIN;
+
+ switch (keycode) {
+ case VERSION: // Output firmware info.
+ if (record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION " | " QMK_BUILDDATE);
+ }
+ break;
+
+ // MIDI Chord Keycodes, on the left side.
+ case MI_CH_Cr ... MI_CH_Br: // Root Notes
+ root_note = keycode - MI_CH_Cr + MI_C_1;
+ my_process_midi4Bass(midi_bass_ch, record, chord_status, chord, root_note, false);
+ break;
+
+ case MI_CH_C ... MI_CH_B: // Major Chords
+ root_note = keycode - MI_CH_C + MI_C_2;
+ // Root, Major Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 4, 7);
+ break;
+
+ case MI_CH_Cm ... MI_CH_Bm: // Minor Chord
+ root_note = keycode - MI_CH_Cm + MI_C_2;
+ // Root, Minor Third, and Fifth Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 7);
+ break;
+
+ case MI_CH_CDom7 ... MI_CH_BDom7: // Dominant 7th Chord
+ root_note = keycode - MI_CH_CDom7 + MI_C_2;
+ // Major Third, Major Fifth, and Minor Seventh Notes
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 4, 7, 10);
+ break;
+
+ case MI_CH_CDim7 ... MI_CH_BDim7: // Diminished 7th Chord
+ root_note = keycode - MI_CH_CDim7 + MI_C_2;
+ // Root, Minor Third, and Diminished 5th Note
+ my_process_midi4TriadChords(midi_chord_ch, record, chord_status, chord, root_note, 0, 3, 6);
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/giabalanai/keymaps/via_giabarinaix2/readme.md b/keyboards/giabalanai/keymaps/via_giabarinaix2/readme.md
new file mode 100644
index 0000000000..04c1613d53
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/via_giabarinaix2/readme.md
@@ -0,0 +1 @@
+# The default keymap for giabarinaix2, VIA version.
diff --git a/keyboards/giabalanai/keymaps/via_giabarinaix2/rules.mk b/keyboards/giabalanai/keymaps/via_giabarinaix2/rules.mk
new file mode 100644
index 0000000000..f4836fd4f2
--- /dev/null
+++ b/keyboards/giabalanai/keymaps/via_giabarinaix2/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+ENCODER_ENABLE = no # encoder on mute button
+
+ENCODER_MAP_ENABLE = yes # replacing ENCODERS_CW_KEY method to this on 2022/08/31.
diff --git a/keyboards/giabalanai/readme.md b/keyboards/giabalanai/readme.md
new file mode 100644
index 0000000000..30b1b60cd1
--- /dev/null
+++ b/keyboards/giabalanai/readme.md
@@ -0,0 +1,24 @@
+# giabalanai
+
+<p align=center>
+<img width="700" alt="giabalanai_logo" src="https://github.com/3araht/giabalanai/blob/main/pictures/giabalanai_logo.png">
+</p>
+
+![giabalanai overview](https://github.com/3araht/giabalanai/blob/main/pictures/giabalanai_overview.jpg)
+
+giabalanai keyboard is a simple-design Chromatic Button Accordion-ish MIDI keyboard (60 bass + C-system 62 keys = 38 notes) that doesn't have bellows nor register switches.
+
+* Keyboard Maintainer: [3araht](https://github.com/3araht)
+* Hardware Supported: giabalanai keyboard, a split keyboard mainly work as MIDI keyboard.
+* Hardware Availability: [Yushakobo](https://yushakobo.jp/shop/consign_giabalanai/) or [BOOTH](https://3araht.booth.pm/). Click [here](https://www.tenso.com/en/static/lp_shop_booth) for BOOTH overseas shipping!
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make giabalanai:default
+
+Flashing example for this keyboard:
+
+ make giabalanai: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/giabalanai/rules.mk b/keyboards/giabalanai/rules.mk
new file mode 100644
index 0000000000..b642aa9aa3
--- /dev/null
+++ b/keyboards/giabalanai/rules.mk
@@ -0,0 +1,26 @@
+# 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 = 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
+MIDI_ENABLE = yes # MIDI support
+ENCODER_ENABLE = yes # encoder on mute button
+SPLIT_KEYBOARD = yes # Enables split keyboard support
+# RGB_MATRIX_ENABLE is not suitable for giabalanai keyboard on the right side (there are dulpicate keys).
+RGB_MATRIX_ENABLE = no # Use RGB matrix (Don't enable this when RGBLIGHT_ENABLE is used.)
+RGB_MATRIX_DRIVER = WS2812 # 2021/01/23 added.
+
+LTO_ENABLE = yes
diff --git a/keyboards/gizmo_engineering/gk6/config.h b/keyboards/gizmo_engineering/gk6/config.h
index f437840f91..1a8bf51312 100755
--- a/keyboards/gizmo_engineering/gk6/config.h
+++ b/keyboards/gizmo_engineering/gk6/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/gizmo_engineering/gk6/info.json b/keyboards/gizmo_engineering/gk6/info.json
index ffd59e41b1..8dfdfbf93b 100755
--- a/keyboards/gizmo_engineering/gk6/info.json
+++ b/keyboards/gizmo_engineering/gk6/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Gizmo Engineering GK6",
+ "keyboard_name": "GK6",
+ "manufacturer": "Gizmo Engineering",
"url": "https://gizmo.engineering/",
"maintainer": "federicoweber",
+ "usb": {
+ "vid": "0x6532",
+ "pid": "0x0001",
+ "device_version": "30.3.1"
+ },
"layouts": {
"LAYOUT_gk6_2x2u": {
"layout": [
diff --git a/keyboards/gkeyboard/gkb_m16/config.h b/keyboards/gkeyboard/gkb_m16/config.h
index 690ecf42d1..9df13da954 100644
--- a/keyboards/gkeyboard/gkb_m16/config.h
+++ b/keyboards/gkeyboard/gkb_m16/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x474B // "GK"
-#define PRODUCT_ID 0x4201
-#define DEVICE_VER 0x0001
-#define MANUFACTURER gkeyboard
-#define PRODUCT GKB-M16
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, D5, D6, D7 }
#define MATRIX_COL_PINS { F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/gkeyboard/gkb_m16/info.json b/keyboards/gkeyboard/gkb_m16/info.json
index 1a3817b88b..ff299c5b89 100644
--- a/keyboards/gkeyboard/gkb_m16/info.json
+++ b/keyboards/gkeyboard/gkb_m16/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "gkb_m16",
+ "keyboard_name": "GKB-M16",
+ "manufacturer": "gkeyboard",
"url": "",
"maintainer": "gkeyboard",
+ "usb": {
+ "vid": "0x474B",
+ "pid": "0x4201",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x4": {
"layout": [
diff --git a/keyboards/gl516/a52gl/config.h b/keyboards/gl516/a52gl/config.h
index c9f54e0928..0841d8e26e 100644
--- a/keyboards/gl516/a52gl/config.h
+++ b/keyboards/gl516/a52gl/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 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
diff --git a/keyboards/gl516/a52gl/info.json b/keyboards/gl516/a52gl/info.json
index b2332c0eda..39f872e5cf 100644
--- a/keyboards/gl516/a52gl/info.json
+++ b/keyboards/gl516/a52gl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "a52gl",
+ "manufacturer": "Salicylic_Acid",
"url": "https://salicylic-acid3.hatenablog.com/",
"maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE8D1",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/gl516/a52gl/readme.md b/keyboards/gl516/a52gl/readme.md
index cfc7277eef..71d68942ac 100644
--- a/keyboards/gl516/a52gl/readme.md
+++ b/keyboards/gl516/a52gl/readme.md
@@ -19,7 +19,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/gl516/j73gl/config.h b/keyboards/gl516/j73gl/config.h
index 50d745ebb1..bbbb1110c6 100644
--- a/keyboards/gl516/j73gl/config.h
+++ b/keyboards/gl516/j73gl/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 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
diff --git a/keyboards/gl516/j73gl/info.json b/keyboards/gl516/j73gl/info.json
index 32b771c983..4ef656f230 100644
--- a/keyboards/gl516/j73gl/info.json
+++ b/keyboards/gl516/j73gl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "j73gl",
+ "manufacturer": "Salicylic_Acid",
"url": "https://salicylic-acid3.hatenablog.com/",
"maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE8D0",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/keymap.c b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/keymap.c
index 942775e4b0..47fe094fee 100644
--- a/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/keymap.c
+++ b/keyboards/gl516/j73gl/keymaps/via_rgb_matrix/keymap.c
@@ -34,7 +34,7 @@ LT(1,JP_ZKHK), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J,
),
[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,
+ QK_BOOT, KC_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,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/gl516/j73gl/readme.md b/keyboards/gl516/j73gl/readme.md
index b6f1ebdc24..58842e09c1 100644
--- a/keyboards/gl516/j73gl/readme.md
+++ b/keyboards/gl516/j73gl/readme.md
@@ -19,7 +19,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/gl516/n51gl/config.h b/keyboards/gl516/n51gl/config.h
index ea50fcfa1a..44b31834c1 100644
--- a/keyboards/gl516/n51gl/config.h
+++ b/keyboards/gl516/n51gl/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 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 }
diff --git a/keyboards/gl516/n51gl/info.json b/keyboards/gl516/n51gl/info.json
index 6c94d32e30..99ae8d764f 100644
--- a/keyboards/gl516/n51gl/info.json
+++ b/keyboards/gl516/n51gl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "n51gl",
+ "manufacturer": "Salicylic_Acid",
"url": "https://salicylic-acid3.hatenablog.com/",
"maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE8CF",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/gl516/n51gl/keymaps/salicylic/keymap.c b/keyboards/gl516/n51gl/keymaps/salicylic/keymap.c
index fd0bc7f8e3..42b2204cf1 100644
--- a/keyboards/gl516/n51gl/keymaps/salicylic/keymap.c
+++ b/keyboards/gl516/n51gl/keymaps/salicylic/keymap.c
@@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_rotary_layer(
//,--------------------------------------------------------------| |--------------------------------------------------------------.
- RESET, KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LALT(KC_PSCR),KC_PSCR,
+ QK_BOOT, 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, _______,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/gl516/n51gl/readme.md b/keyboards/gl516/n51gl/readme.md
index 916b8ff671..b01ba883d7 100644
--- a/keyboards/gl516/n51gl/readme.md
+++ b/keyboards/gl516/n51gl/readme.md
@@ -19,7 +19,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/glenpickle/chimera_ergo/config.h b/keyboards/glenpickle/chimera_ergo/config.h
index 616d8af24e..e7492f7297 100644
--- a/keyboards/glenpickle/chimera_ergo/config.h
+++ b/keyboards/glenpickle/chimera_ergo/config.h
@@ -19,14 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER unknown
-#define PRODUCT Chimera Ergo
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 12
diff --git a/keyboards/glenpickle/chimera_ergo/info.json b/keyboards/glenpickle/chimera_ergo/info.json
index 28a9689bae..26faa0343a 100644
--- a/keyboards/glenpickle/chimera_ergo/info.json
+++ b/keyboards/glenpickle/chimera_ergo/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Chimera Ergo",
+ "manufacturer": "Unknown",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"k00", "x":0, "y":1}, {"label":"k01", "x":1, "y":0.75}, {"label":"k02", "x":2, "y":0.25}, {"label":"k03", "x":3, "y":0}, {"label":"k04", "x":4, "y":0.25}, {"label":"k05", "x":5, "y":0.5}, {"label":"k06", "x":7, "y":0.5}, {"label":"k07", "x":8, "y":0.25}, {"label":"k08", "x":9, "y":0}, {"label":"k09", "x":10, "y":0.25}, {"label":"k10", "x":11, "y":0.75}, {"label":"k11", "x":12, "y":1}, {"label":"k12", "x":0, "y":2}, {"label":"k13", "x":1, "y":1.75}, {"label":"k14", "x":2, "y":1.25}, {"label":"k15", "x":3, "y":1}, {"label":"k16", "x":4, "y":1.25}, {"label":"k17", "x":5, "y":1.5}, {"label":"k18", "x":7, "y":1.5}, {"label":"k19", "x":8, "y":1.25}, {"label":"k20", "x":9, "y":1}, {"label":"k21", "x":10, "y":1.25}, {"label":"k22", "x":11, "y":1.75}, {"label":"k23", "x":12, "y":2}, {"label":"k24", "x":0, "y":3}, {"label":"k25", "x":1, "y":2.75}, {"label":"k26", "x":2, "y":2.25}, {"label":"k27", "x":3, "y":2}, {"label":"k28", "x":4, "y":2.25}, {"label":"k29", "x":5, "y":2.5}, {"label":"k30", "x":7, "y":2.5}, {"label":"k31", "x":8, "y":2.25}, {"label":"k32", "x":9, "y":2}, {"label":"k33", "x":10, "y":2.25}, {"label":"k34", "x":11, "y":2.75}, {"label":"k35", "x":12, "y":3}, {"label":"k36", "x":0, "y":4}, {"label":"k37", "x":1, "y":3.75}, {"label":"k38", "x":2, "y":3.25}, {"label":"k39", "x":3, "y":3}, {"label":"k40", "x":4, "y":3.25}, {"label":"k41", "x":5, "y":3.5}, {"label":"k42", "x":7, "y":3.5}, {"label":"k43", "x":8, "y":3.25}, {"label":"k44", "x":9, "y":3}, {"label":"k45", "x":10, "y":3.25}, {"label":"k46", "x":11, "y":3.75}, {"label":"k47", "x":12, "y":4}, {"label":"k48", "x":4, "y":4.75}, {"label":"k49", "x":5, "y":5}, {"label":"k50", "x":7, "y":5}, {"label":"k51", "x":8, "y":4.75}]
diff --git a/keyboards/glenpickle/chimera_ergo/keymaps/default/keymap.c b/keyboards/glenpickle/chimera_ergo/keymaps/default/keymap.c
index 51ab0e92cd..dd7e32f7dc 100644
--- a/keyboards/glenpickle/chimera_ergo/keymaps/default/keymap.c
+++ b/keyboards/glenpickle/chimera_ergo/keymaps/default/keymap.c
@@ -131,7 +131,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
};
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _QWERTY:
diff --git a/keyboards/glenpickle/chimera_ls/config.h b/keyboards/glenpickle/chimera_ls/config.h
index f5da32e3c3..581f133571 100644
--- a/keyboards/glenpickle/chimera_ls/config.h
+++ b/keyboards/glenpickle/chimera_ls/config.h
@@ -19,14 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER unknown
-#define PRODUCT Chimera Lets Split
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
diff --git a/keyboards/glenpickle/chimera_ls/info.json b/keyboards/glenpickle/chimera_ls/info.json
index b6585a5c28..02b9aba091 100644
--- a/keyboards/glenpickle/chimera_ls/info.json
+++ b/keyboards/glenpickle/chimera_ls/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Chimera LS",
+ "keyboard_name": "Chimera Lets Split",
+ "manufacturer": "Unknown",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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":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}]
diff --git a/keyboards/glenpickle/chimera_ls/keymaps/default/keymap.c b/keyboards/glenpickle/chimera_ls/keymaps/default/keymap.c
index 0affeef389..1ae70e6245 100644
--- a/keyboards/glenpickle/chimera_ls/keymaps/default/keymap.c
+++ b/keyboards/glenpickle/chimera_ls/keymaps/default/keymap.c
@@ -158,7 +158,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _QWERTY:
diff --git a/keyboards/glenpickle/chimera_ortho/config.h b/keyboards/glenpickle/chimera_ortho/config.h
index 8ae25c1eb4..1310866fbb 100644
--- a/keyboards/glenpickle/chimera_ortho/config.h
+++ b/keyboards/glenpickle/chimera_ortho/config.h
@@ -19,14 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER unknown
-#define PRODUCT Chimera Ortho
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 10
diff --git a/keyboards/glenpickle/chimera_ortho/info.json b/keyboards/glenpickle/chimera_ortho/info.json
index 73e15c64f3..ac4ecfb201 100644
--- a/keyboards/glenpickle/chimera_ortho/info.json
+++ b/keyboards/glenpickle/chimera_ortho/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Chimera Ortho",
+ "manufacturer": "Unknown",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/glenpickle/chimera_ortho/keymaps/default/keymap.c b/keyboards/glenpickle/chimera_ortho/keymaps/default/keymap.c
index 6a676493dd..bc783f540c 100644
--- a/keyboards/glenpickle/chimera_ortho/keymaps/default/keymap.c
+++ b/keyboards/glenpickle/chimera_ortho/keymaps/default/keymap.c
@@ -151,7 +151,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _QWERTY:
diff --git a/keyboards/glenpickle/chimera_ortho_plus/config.h b/keyboards/glenpickle/chimera_ortho_plus/config.h
index 4846a1b20d..e7492f7297 100644
--- a/keyboards/glenpickle/chimera_ortho_plus/config.h
+++ b/keyboards/glenpickle/chimera_ortho_plus/config.h
@@ -19,14 +19,6 @@ 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 0xDE1D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER unknown
-#define PRODUCT Chimera Ortho Plus
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 12
diff --git a/keyboards/glenpickle/chimera_ortho_plus/info.json b/keyboards/glenpickle/chimera_ortho_plus/info.json
index 29a2c2a634..fb7dfbbf6c 100644
--- a/keyboards/glenpickle/chimera_ortho_plus/info.json
+++ b/keyboards/glenpickle/chimera_ortho_plus/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Chimera Ortho Plus",
+ "manufacturer": "Unknown",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xDE1D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/ansi.c b/keyboards/gmmk/gmmk2/p65/ansi/ansi.c
new file mode 100644
index 0000000000..437b50648e
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/ansi.c
@@ -0,0 +1,236 @@
+/* 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 "ansi.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+const aw_led g_aw_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, CS1_SW1, CS2_SW1, CS3_SW1 }, // 0 Esc
+ {0, CS4_SW2, CS5_SW2, CS6_SW2 }, // 1 1
+ {0, CS4_SW3, CS5_SW3, CS6_SW3 }, // 2 2
+ {0, CS4_SW4, CS5_SW4, CS6_SW4 }, // 3 3
+ {0, CS4_SW5, CS5_SW5, CS6_SW5 }, // 4 4
+ {0, CS4_SW6, CS5_SW6, CS6_SW6 }, // 5 5
+ {0, CS4_SW7, CS5_SW7, CS6_SW7 }, // 6 6
+ {0, CS4_SW8, CS5_SW8, CS6_SW8 }, // 7 7
+ {0, CS4_SW9, CS5_SW9, CS6_SW9 }, // 8 8
+ {0, CS4_SW10, CS5_SW10, CS6_SW10 }, // 9 9
+ {0, CS4_SW11, CS5_SW11, CS6_SW11 }, // 10 0
+ {0, CS4_SW12, CS5_SW12, CS6_SW12 }, // 11 -
+ {1, CS1_SW5, CS2_SW5, CS3_SW5 }, // 12 =
+ {1, CS1_SW7, CS2_SW7, CS3_SW7 }, // 13 Backspace
+ {1, CS4_SW4, CS5_SW4, CS6_SW4 }, // 14 Del
+
+ {0, CS7_SW1, CS8_SW1, CS9_SW1 }, // 15 Tab
+ {0, CS7_SW2, CS8_SW2, CS9_SW2 }, // 16 Q
+ {0, CS7_SW3, CS8_SW3, CS9_SW3 }, // 17 W
+ {0, CS7_SW4, CS8_SW4, CS9_SW4 }, // 18 E
+ {0, CS7_SW5, CS8_SW5, CS9_SW5 }, // 19 R
+ {0, CS7_SW6, CS8_SW6, CS9_SW6 }, // 20 T
+ {0, CS7_SW7, CS8_SW7, CS9_SW7 }, // 21 Y
+ {0, CS7_SW8, CS8_SW8, CS9_SW8 }, // 22 U
+ {0, CS7_SW9, CS8_SW9, CS9_SW9 }, // 23 I
+ {0, CS7_SW10, CS8_SW10, CS9_SW10 }, // 24 O
+ {0, CS7_SW11, CS8_SW11, CS9_SW11 }, // 25 P
+ {0, CS7_SW12, CS8_SW12, CS9_SW12 }, // 26 [
+ {1, CS1_SW8, CS2_SW8, CS3_SW8 }, // 27 ]
+ {1, CS1_SW9, CS2_SW9, CS3_SW9 }, // 28 \|
+ {1, CS4_SW7, CS5_SW7, CS6_SW7 }, // 29 PgUp
+
+ {0, CS10_SW1, CS11_SW1, CS12_SW1 }, // 30 Caps Lock
+ {0, CS10_SW2, CS11_SW2, CS12_SW2 }, // 31 A
+ {0, CS10_SW3, CS11_SW3, CS12_SW3 }, // 32 S
+ {0, CS10_SW4, CS11_SW4, CS12_SW4 }, // 33 D
+ {0, CS10_SW5, CS11_SW5, CS12_SW5 }, // 34 F
+ {0, CS10_SW6, CS11_SW6, CS12_SW6 }, // 35 G
+ {0, CS10_SW7, CS11_SW7, CS12_SW7 }, // 36 H
+ {0, CS10_SW8, CS11_SW8, CS12_SW8 }, // 37 J
+ {0, CS10_SW9, CS11_SW9, CS12_SW9 }, // 38 K
+ {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 39 L
+ {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 40 ;
+ {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 41 '
+ {1, CS1_SW11, CS2_SW11, CS3_SW11 }, // 42 Enter
+ {1, CS4_SW5, CS5_SW5, CS6_SW5 }, // 43 PgDn
+
+ {0, CS13_SW1, CS14_SW1, CS15_SW1 }, // 44 Shift_L
+ {0, CS13_SW3, CS14_SW3, CS15_SW3 }, // 45 Z
+ {0, CS13_SW4, CS14_SW4, CS15_SW4 }, // 46 X
+ {0, CS13_SW5, CS14_SW5, CS15_SW5 }, // 47 C
+ {0, CS13_SW6, CS14_SW6, CS15_SW6 }, // 48 V
+ {0, CS13_SW7, CS14_SW7, CS15_SW7 }, // 49 B
+ {0, CS13_SW8, CS14_SW8, CS15_SW8 }, // 50 N
+ {0, CS13_SW9, CS14_SW9, CS15_SW9 }, // 51 M
+ {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 52 ,
+ {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 53 .
+ {0, CS13_SW12, CS14_SW12, CS15_SW12}, // 54 /
+ {1, CS4_SW8, CS5_SW8, CS6_SW8 }, // 55 Shift_R
+ {1, CS4_SW9, CS5_SW9, CS6_SW9 }, // 56 Up
+ {1, CS4_SW6, CS5_SW6, CS6_SW6 }, // 57 END
+
+ {0, CS16_SW1, CS17_SW1, CS18_SW1 }, // 58 Ctrl_L
+ {0, CS16_SW2, CS17_SW2, CS18_SW2 }, // 59 Win_L
+ {0, CS16_SW3, CS17_SW3, CS18_SW3 }, // 60 Alt_L
+ {0, CS16_SW6, CS17_SW6, CS18_SW6 }, // 61 Space
+ {0, CS16_SW9, CS17_SW9, CS18_SW9 }, // 62 Alt_R
+ {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 63 FN
+ {1, CS4_SW10, CS5_SW10, CS6_SW10 }, // 64 Left
+ {1, CS4_SW11, CS5_SW11, CS6_SW11 }, // 65 Down
+ {1, CS4_SW12, CS5_SW12, CS6_SW12 }, // 66 Right
+
+ {1, CS13_SW1, CS14_SW1, CS15_SW1 }, // 69 LED 1
+ {1, CS13_SW2, CS14_SW2, CS15_SW2 }, // 70 LED 2
+ {1, CS13_SW3, CS14_SW3, CS15_SW3 }, // 71 LED 3
+ {1, CS13_SW4, CS14_SW4, CS15_SW4 }, // 72 LED 4
+ {1, CS13_SW5, CS14_SW5, CS15_SW5 }, // 73 LED 5
+ {1, CS13_SW6, CS14_SW6, CS15_SW6 }, // 74 LED 6
+ {1, CS13_SW7, CS14_SW7, CS15_SW7 }, // 75 LED 7
+ {1, CS13_SW8, CS14_SW8, CS15_SW8 }, // 76 LED 8
+ {1, CS13_SW9, CS14_SW9, CS15_SW9 }, // 77 LED 9
+ {1, CS13_SW10, CS14_SW10, CS15_SW10}, // 78 LED 10
+ {1, CS16_SW1, CS17_SW1, CS18_SW1 }, // 79 LED 11
+ {1, CS16_SW2, CS17_SW2, CS18_SW2 }, // 80 LED 12
+ {1, CS16_SW3, CS17_SW3, CS18_SW3 }, // 81 LED 13
+ {1, CS16_SW4, CS17_SW4, CS18_SW4 }, // 82 LED 14
+ {1, CS16_SW5, CS17_SW5, CS18_SW5 }, // 83 LED 15
+ {1, CS16_SW6, CS17_SW6, CS18_SW6 }, // 84 LED 16
+ {1, CS16_SW7, CS17_SW7, CS18_SW7 }, // 85 LED 17
+ {1, CS16_SW8, CS17_SW8, CS18_SW8 }, // 86 LED 18
+ {1, CS16_SW9, CS17_SW9, CS18_SW9 }, // 87 LED 19
+ {1, CS16_SW10, CS17_SW10, CS18_SW10} // 88 LED 20
+};
+
+#define __ NO_LED
+
+led_config_t g_led_config = {{
+ { 44, 57, __, 64, __, 66, 58, 55},
+ { 16, 15, 31, 0, 45, 59, __, 1},
+ { 17, 30, 32, 60, 46, 14, 29, 2},
+ { 18, 61, 33, 63, 47, 56, 62, 3},
+ { 19, 20, 34, 35, 48, 49, 5, 4},
+ { 22, 21, 37, 36, 51, 50, 6, 7},
+ { 23, 27, 38, __, 52, 43, 12, 8},
+ { 24, 13, 39, 65, 53, __, 28, 9},
+ { 25, 26, 40, 41, 42, 54, 11, 10}
+}, {
+ {14, 0 }, // 0 Esc
+ {28, 0 }, // 1 1
+ {42, 0 }, // 2 2
+ {56, 0 }, // 3 3
+ {70, 0 }, // 4 4
+ {84, 0 }, // 5 5
+ {98, 0 }, // 6 6
+ {112, 0 }, // 7 7
+ {126, 0 }, // 8 8
+ {140, 0 }, // 9 9
+ {154, 0 }, // 10 0
+ {168, 0 }, // 11 -
+ {182, 0 }, // 12 =
+ {196, 0 }, // 13 Backspace
+ {210, 0 }, // 14 Del
+
+ {14, 16}, // 15 Tab
+ {28, 16}, // 16 Q
+ {42, 16}, // 17 W
+ {56, 16}, // 18 E
+ {70, 16}, // 19 R
+ {84, 16}, // 20 T
+ {98, 16}, // 21 Y
+ {112, 16}, // 22 U
+ {126, 16}, // 23 I
+ {140, 16}, // 24 O
+ {154, 16}, // 25 P
+ {168, 16}, // 26 [
+ {182, 16}, // 27 ]
+ {196, 16}, // 28 \|
+ {210, 16}, // 29 PgUp
+
+ {14, 32}, // 30 Caps Lock
+ {28, 32}, // 31 A
+ {42, 32}, // 32 S
+ {56, 32}, // 33 D
+ {70, 32}, // 34 F
+ {84, 32}, // 35 G
+ {98, 32}, // 36 H
+ {112, 32}, // 37 J
+ {126, 32}, // 38 K
+ {140, 32}, // 39 L
+ {154, 32}, // 40 ;
+ {168, 32}, // 41 '
+ {196, 32}, // 42 Enter
+ {210, 32}, // 43 PgDn
+
+ {14, 48}, // 44 Shift_L
+ {42, 48}, // 45 Z
+ {56, 48}, // 46 X
+ {70, 48}, // 47 C
+ {84, 48}, // 48 V
+ {98, 48}, // 49 B
+ {112, 48}, // 50 N
+ {126, 48}, // 51 M
+ {140, 48}, // 52 ,
+ {154, 48}, // 53 .
+ {168, 48}, // 54 /
+ {182, 48}, // 55 Shift_R
+ {196, 48}, // 56 Up
+ {210, 48}, // 57 END
+
+ {14, 64}, // 58 Ctrl_L
+ {28, 64}, // 59 Win_L
+ {42, 64}, // 60 Alt_L
+ {84, 64}, // 61 Space
+ {126, 64}, // 62 Alt_R
+ {140, 64}, // 63 FN
+ {182, 64}, // 64 Left
+ {196, 64}, // 65 Down
+ {210, 64}, // 66 Right
+
+ {0, 0}, // 69 LED 1
+ {0, 7}, // 70 LED 2
+ {0, 14}, // 71 LED 3
+ {0, 21}, // 72 LED 4
+ {0, 28}, // 73 LED 5
+ {0, 35}, // 74 LED 6
+ {0, 42}, // 75 LED 7
+ {0, 49}, // 76 LED 8
+ {0, 56}, // 77 LED 9
+ {0, 64}, // 78 LED 10
+ {224, 0 }, // 79 LED 11
+ {224, 7 }, // 80 LED 12
+ {224, 14}, // 81 LED 13
+ {224, 21}, // 82 LED 14
+ {224, 28}, // 83 LED 15
+ {224, 35}, // 84 LED 16
+ {224, 42}, // 85 LED 17
+ {224, 49}, // 86 LED 18
+ {224, 56}, // 87 LED 19
+ {224, 64}, // 88 LED 20
+}, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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
+} };
+#endif
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/ansi.h b/keyboards/gmmk/gmmk2/p65/ansi/ansi.h
new file mode 100644
index 0000000000..2c25a72bef
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/ansi.h
@@ -0,0 +1,47 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+// ESC 1 2 3 4 5 6 7 8 9 0 - = BS 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 Left Down Right
+
+// clang-format off
+#define LAYOUT( \
+ k13, k17, k27, k37, k47, k46, k56, k57, k67, k77, k87, k86, k66, k71, k25,\
+ k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, k76, k26,\
+ k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, k84, k65,\
+ k00, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k07, k35, k01,\
+ k06, k15, k23, k31, k36, k33, k03, k73, k05 \
+)\
+{\
+ { k00, k01, ___, k03, ___, k05, k06, k07},\
+ { k10, k11, k12, k13, k14, k15, ___, 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, k57},\
+ { k60, k61, k62, ___, k64, k65, k66, k67},\
+ { k70, k71, k72, k73, k74, ___, k76, k77},\
+ { k80, k81, k82, k83, k84, k85, k86, k87} \
+}
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/info.json b/keyboards/gmmk/gmmk2/p65/ansi/info.json
new file mode 100644
index 0000000000..8aedd894ae
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/info.json
@@ -0,0 +1,90 @@
+{
+ "keyboard_name": "GMMK V2 65 ANSI",
+ "manufacturer": "Glorious",
+ "url": "http://www.pcgamingrace.com",
+ "maintainer": "GloriousThrall",
+ "usb": {
+ "vid": "0x320F",
+ "pid": "0x5045",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "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": "=", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0, "w": 2.25},
+ { "label": "PgUp", "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.75},
+ { "label": "PgDn", "x": 15.25, "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": "HOME", "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": "Up", "x": 14.25, "y": 3 },
+ { "label": "END", "x": 15.25, "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": "Left", "x": 13.25, "y": 4 },
+ { "label": "Down", "x": 14.25, "y": 4 },
+ { "label": "Right", "x": 15.25, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/keymap.c b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e331d60c4e
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/* 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
+
+// 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.
+enum custom_layers {
+ _BL,
+ _FL,
+};
+
+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_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 _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_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME,
+ _______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD)
+};
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/readme.md b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/readme.md
new file mode 100644
index 0000000000..4f80a5b956
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/readme.md
@@ -0,0 +1 @@
+# ANSI GMMKV2 65% Layout
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/keymap.c b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/keymap.c
new file mode 100644
index 0000000000..365c7578cc
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* 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] = {
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+[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_TAB, KC_Q, KC_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 _FL: Function Layer
+ */
+[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_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME,
+ _______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD),
+
+[2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______),
+[3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/rules.mk b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/gmmk/gmmk2/p65/ansi/readme.md b/keyboards/gmmk/gmmk2/p65/ansi/readme.md
new file mode 100644
index 0000000000..b231b48883
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/readme.md
@@ -0,0 +1,23 @@
+# GMMK V2 65% (ANSI)
+
+A keyboard made and sold by Glorious LLC. Equipped with the WestBerry G7 ARM Cortex-M4 microcontroller
+
+* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall)
+* Hardware Supported: GMMK V2
+* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make gmmk/gmmk2/p65/ansi:default
+
+Flashing example for this keyboard:
+
+ make gmmk/gmmk2/p65/ansi:default:flash
+
+To reset the board into bootloader mode, do one of the following:
+
+* Hold the Reset switch mounted on the surface of the PCB while connecting the USB cable (remove the spacebar key and press and hold the pin on the right side)
+* Hold the Escape key while connecting the USB cable (also erases persistent settings)
+* Fn+Backslash will reset the board to bootloader mode if you have flashed the default QMK 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/gmmk/gmmk2/p65/ansi/rules.mk b/keyboards/gmmk/gmmk2/p65/ansi/rules.mk
new file mode 100644
index 0000000000..1cf9d7a709
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/ansi/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = WB32F3G71
+
+# Bootloader selection
+BOOTLOADER = wb32-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 NKRO 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 effects.
+RGB_MATRIX_DRIVER = AW20216 # Enable RGB matrix effects.
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = embedded_flash
diff --git a/keyboards/gmmk/gmmk2/p65/config.h b/keyboards/gmmk/gmmk2/p65/config.h
new file mode 100644
index 0000000000..6a6c22c6f0
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/config.h
@@ -0,0 +1,117 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 9
+#define MATRIX_COLS 8
+
+#define MATRIX_ROW_PINS \
+ { B0, B1, B2, B3, B4, B5, B6, B7, B8 }
+#define MATRIX_COL_PINS \
+ { A0, A1, A2, A3, A4, A8, A9, A10 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Hold ESC on start up to clear EEPROM and boot into bootloader mode */
+#define BOOTMAGIC_LITE_ROW 1
+#define BOOTMAGIC_LITE_COLUMN 3
+
+#define TAP_CODE_DELAY 10
+
+/* 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_DISABLE_WHEN_USB_SUSPENDED
+
+/* SPI Config for LED Driver */
+#define SPI_DRIVER SPIDM2
+#define SPI_SCK_PIN B13
+#define SPI_MOSI_PIN B15
+#define SPI_MISO_PIN B14
+
+#define DRIVER_1_CS A15
+#define DRIVER_2_CS B9
+#define DRIVER_1_EN C13
+#define DRIVER_2_EN C13
+
+#define DRIVER_COUNT 2
+#define DRIVER_1_LED_TOTAL 54
+#define DRIVER_2_LED_TOTAL 34
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+// 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 RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#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 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
+
+/* Set debounce time to 5ms */
+#define DEBOUNCE 5
+
+/* Force NKRO on boot up regardless of the setting saved in the EEPROM (uncomment to enable it) */
+// #define FORCE_NKRO
diff --git a/keyboards/gmmk/gmmk2/p65/halconf.h b/keyboards/gmmk/gmmk2/p65/halconf.h
new file mode 100644
index 0000000000..293d182917
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/halconf.h
@@ -0,0 +1,29 @@
+/* Copyright (C) 2021 Westberry Technology (ChangZhou) Corp., Ltd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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/wb_support/gmmk2/halconf.h -r platforms/chibios/boards/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_SPI TRUE
+#define SPI_USE_WAIT TRUE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+
+#include_next <halconf.h>
+
diff --git a/keyboards/gmmk/gmmk2/p65/iso/info.json b/keyboards/gmmk/gmmk2/p65/iso/info.json
new file mode 100644
index 0000000000..9f0285abbb
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/info.json
@@ -0,0 +1,91 @@
+{
+ "keyboard_name": "GMMK V2 65 ISO",
+ "manufacturer": "Glorious",
+ "url": "http://www.pcgamingrace.com",
+ "maintainer": "GloriousThrall",
+ "usb": {
+ "vid": "0x320F",
+ "pid": "0x504A",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "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": "=", "x": 12, "y": 0 },
+ { "label": "Backspace", "x": 13, "y": 0, "w": 2.25},
+ { "label": "PgUp", "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": "Enter", "x": 13.5, "y": 1 ,"h":2, "w": 1.75},
+ { "label": "PgDn", "x": 15.25, "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": "HOME", "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": "Up", "x": 14.25, "y": 3 },
+ { "label": "END", "x": 15.25, "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": "Left", "x": 13.25, "y": 4 },
+ { "label": "Down", "x": 14.25, "y": 4 },
+ { "label": "Right", "x": 15.25, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/gmmk/gmmk2/p65/iso/iso.c b/keyboards/gmmk/gmmk2/p65/iso/iso.c
new file mode 100644
index 0000000000..651a612a58
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/iso.c
@@ -0,0 +1,238 @@
+/* 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 "iso.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+const aw_led g_aw_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, CS1_SW1, CS2_SW1, CS3_SW1 }, // 0 Esc
+ {0, CS4_SW2, CS5_SW2, CS6_SW2 }, // 1 1
+ {0, CS4_SW3, CS5_SW3, CS6_SW3 }, // 2 2
+ {0, CS4_SW4, CS5_SW4, CS6_SW4 }, // 3 3
+ {0, CS4_SW5, CS5_SW5, CS6_SW5 }, // 4 4
+ {0, CS4_SW6, CS5_SW6, CS6_SW6 }, // 5 5
+ {0, CS4_SW7, CS5_SW7, CS6_SW7 }, // 6 6
+ {0, CS4_SW8, CS5_SW8, CS6_SW8 }, // 7 7
+ {0, CS4_SW9, CS5_SW9, CS6_SW9 }, // 8 8
+ {0, CS4_SW10, CS5_SW10, CS6_SW10 }, // 9 9
+ {0, CS4_SW11, CS5_SW11, CS6_SW11 }, // 10 0
+ {0, CS4_SW12, CS5_SW12, CS6_SW12 }, // 11 -
+ {1, CS1_SW5, CS2_SW5, CS3_SW5 }, // 12 =
+ {1, CS1_SW7, CS2_SW7, CS3_SW7 }, // 13 Backspace
+ {1, CS4_SW4, CS5_SW4, CS6_SW4 }, // 14 HOME
+
+ {0, CS7_SW1, CS8_SW1, CS9_SW1 }, // 15 Tab
+ {0, CS7_SW2, CS8_SW2, CS9_SW2 }, // 16 Q
+ {0, CS7_SW3, CS8_SW3, CS9_SW3 }, // 17 W
+ {0, CS7_SW4, CS8_SW4, CS9_SW4 }, // 18 E
+ {0, CS7_SW5, CS8_SW5, CS9_SW5 }, // 19 R
+ {0, CS7_SW6, CS8_SW6, CS9_SW6 }, // 20 T
+ {0, CS7_SW7, CS8_SW7, CS9_SW7 }, // 21 Y
+ {0, CS7_SW8, CS8_SW8, CS9_SW8 }, // 22 U
+ {0, CS7_SW9, CS8_SW9, CS9_SW9 }, // 23 I
+ {0, CS7_SW10, CS8_SW10, CS9_SW10 }, // 24 O
+ {0, CS7_SW11, CS8_SW11, CS9_SW11 }, // 25 P
+ {0, CS7_SW12, CS8_SW12, CS9_SW12 }, // 26 [
+ {1, CS1_SW8, CS2_SW8, CS3_SW8 }, // 27 ]
+ {1, CS1_SW11, CS2_SW11, CS3_SW11 }, // 28 ENTER
+ {1, CS4_SW7, CS5_SW7, CS6_SW7 }, // 29 PgUp
+
+ {0, CS10_SW1, CS11_SW1, CS12_SW1 }, // 30 Caps Lock
+ {0, CS10_SW2, CS11_SW2, CS12_SW2 }, // 31 A
+ {0, CS10_SW3, CS11_SW3, CS12_SW3 }, // 32 S
+ {0, CS10_SW4, CS11_SW4, CS12_SW4 }, // 33 D
+ {0, CS10_SW5, CS11_SW5, CS12_SW5 }, // 34 F
+ {0, CS10_SW6, CS11_SW6, CS12_SW6 }, // 35 G
+ {0, CS10_SW7, CS11_SW7, CS12_SW7 }, // 36 H
+ {0, CS10_SW8, CS11_SW8, CS12_SW8 }, // 37 J
+ {0, CS10_SW9, CS11_SW9, CS12_SW9 }, // 38 K
+ {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 39 L
+ {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 40 ;
+ {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 41 '
+ {1, CS1_SW10, CS2_SW10, CS3_SW10 }, // 42 k42
+ {1, CS4_SW5, CS5_SW5, CS6_SW5 }, // 43 PgDn
+
+ {0, CS13_SW1, CS14_SW1, CS15_SW1 }, // 44 Shift_L
+ {0, CS13_SW2, CS14_SW2, CS15_SW2 }, // 45 k45
+ {0, CS13_SW3, CS14_SW3, CS15_SW3 }, // 46 Z
+ {0, CS13_SW4, CS14_SW4, CS15_SW4 }, // 47 X
+ {0, CS13_SW5, CS14_SW5, CS15_SW5 }, // 48 C
+ {0, CS13_SW6, CS14_SW6, CS15_SW6 }, // 49 V
+ {0, CS13_SW7, CS14_SW7, CS15_SW7 }, // 50 B
+ {0, CS13_SW8, CS14_SW8, CS15_SW8 }, // 51 N
+ {0, CS13_SW9, CS14_SW9, CS15_SW9 }, // 52 M
+ {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 53 ,
+ {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 54 .
+ {0, CS13_SW12, CS14_SW12, CS15_SW12}, // 55 /
+ {1, CS4_SW8, CS5_SW8, CS6_SW8 }, // 56 Shift_R
+ {1, CS4_SW9, CS5_SW9, CS6_SW9 }, // 57 Up
+ {1, CS4_SW6, CS5_SW6, CS6_SW6 }, // 58 END
+
+ {0, CS16_SW1, CS17_SW1, CS18_SW1 }, // 59 Ctrl_L
+ {0, CS16_SW2, CS17_SW2, CS18_SW2 }, // 60 Win_L
+ {0, CS16_SW3, CS17_SW3, CS18_SW3 }, // 61 Alt_L
+ {0, CS16_SW6, CS17_SW6, CS18_SW6 }, // 62 Space
+ {0, CS16_SW9, CS17_SW9, CS18_SW9 }, // 63 Alt_R
+ {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 64 FN
+ {1, CS4_SW10, CS5_SW10, CS6_SW10 }, // 65 Left
+ {1, CS4_SW11, CS5_SW11, CS6_SW11 }, // 66 Down
+ {1, CS4_SW12, CS5_SW12, CS6_SW12 }, // 67 Right
+
+ {1, CS13_SW1, CS14_SW1, CS15_SW1 }, // 68 LED 1
+ {1, CS13_SW2, CS14_SW2, CS15_SW2 }, // 69 LED 2
+ {1, CS13_SW3, CS14_SW3, CS15_SW3 }, // 70 LED 3
+ {1, CS13_SW4, CS14_SW4, CS15_SW4 }, // 71 LED 4
+ {1, CS13_SW5, CS14_SW5, CS15_SW5 }, // 72 LED 5
+ {1, CS13_SW6, CS14_SW6, CS15_SW6 }, // 73 LED 6
+ {1, CS13_SW7, CS14_SW7, CS15_SW7 }, // 74 LED 7
+ {1, CS13_SW8, CS14_SW8, CS15_SW8 }, // 75 LED 8
+ {1, CS13_SW9, CS14_SW9, CS15_SW9 }, // 76 LED 9
+ {1, CS13_SW10, CS14_SW10, CS15_SW10}, // 77 LED 10
+ {1, CS16_SW1, CS17_SW1, CS18_SW1 }, // 78 LED 11
+ {1, CS16_SW2, CS17_SW2, CS18_SW2 }, // 79 LED 12
+ {1, CS16_SW3, CS17_SW3, CS18_SW3 }, // 80 LED 13
+ {1, CS16_SW4, CS17_SW4, CS18_SW4 }, // 81 LED 14
+ {1, CS16_SW5, CS17_SW5, CS18_SW5 }, // 82 LED 15
+ {1, CS16_SW6, CS17_SW6, CS18_SW6 }, // 83 LED 16
+ {1, CS16_SW7, CS17_SW7, CS18_SW7 }, // 84 LED 17
+ {1, CS16_SW8, CS17_SW8, CS18_SW8 }, // 85 LED 18
+ {1, CS16_SW9, CS17_SW9, CS18_SW9 }, // 86 LED 19
+ {1, CS16_SW10, CS17_SW10, CS18_SW10} // 87 LED 20
+};
+
+#define __ NO_LED
+
+led_config_t g_led_config = {{
+ { 44, 58, 45, 65, __, 67, 59, 56},
+ { 16, 15, 31, 0, 46, 60, __, 1},
+ { 17, 30, 32, 61, 47, 14, 29, 2},
+ { 18, 62, 33, 64, 48, 57, 63, 3},
+ { 19, 20, 34, 35, 49, 50, 5, 4},
+ { 22, 21, 37, 36, 52, 51, 6, 7},
+ { 23, 27, 38, __, 53, 43, 12, 8},
+ { 24, 13, 39, 66, 54, 42, __, 9},
+ { 25, 26, 40, 41, 28, 55, 11, 10}
+}, {
+ {14, 0 }, // 0 Esc
+ {28, 0 }, // 1 1
+ {42, 0 }, // 2 2
+ {56, 0 }, // 3 3
+ {70, 0 }, // 4 4
+ {84, 0 }, // 5 5
+ {98, 0 }, // 6 6
+ {112, 0 }, // 7 7
+ {126, 0 }, // 8 8
+ {140, 0 }, // 9 9
+ {154, 0 }, // 10 0
+ {168, 0 }, // 11 -
+ {182, 0 }, // 12 =
+ {196, 0 }, // 13 Backspace
+ {210, 0 }, // 14 HOME
+
+ {14, 16}, // 15 Tab
+ {28, 16}, // 16 Q
+ {42, 16}, // 17 W
+ {56, 16}, // 18 E
+ {70, 16}, // 19 R
+ {84, 16}, // 20 T
+ {98, 16}, // 21 Y
+ {112, 16}, // 22 U
+ {126, 16}, // 23 I
+ {140, 16}, // 24 O
+ {154, 16}, // 25 P
+ {168, 16}, // 26 [
+ {182, 16}, // 27 ]
+ {196, 16}, // 28 ENTER
+ {210, 16}, // 29 PgUp
+
+ {14, 32}, // 30 Caps Lock
+ {28, 32}, // 31 A
+ {42, 32}, // 32 S
+ {56, 32}, // 33 D
+ {70, 32}, // 34 F
+ {84, 32}, // 35 G
+ {98, 32}, // 36 H
+ {112, 32}, // 37 J
+ {126, 32}, // 38 K
+ {140, 32}, // 39 L
+ {154, 32}, // 40 ;
+ {168, 32}, // 41 '
+ {182, 32}, // 42 k42
+ {210, 32}, // 43 PgDn
+
+ {14, 48}, // 44 Shift_L
+ {28, 48}, // 45 k45
+ {42, 48}, // 46 Z
+ {56, 48}, // 47 X
+ {70, 48}, // 48 C
+ {84, 48}, // 49 V
+ {98, 48}, // 50 B
+ {112, 48}, // 51 N
+ {126, 48}, // 52 M
+ {140, 48}, // 53 ,
+ {154, 48}, // 54 .
+ {168, 48}, // 55 /
+ {182, 48}, // 56 Shift_R
+ {196, 48}, // 57 Up
+ {210, 48}, // 58 END
+
+ {14, 64}, // 59 Ctrl_L
+ {28, 64}, // 60 Win_L
+ {42, 64}, // 61 Alt_L
+ {84, 64}, // 62 Space
+ {126, 64}, // 63 Alt_R
+ {140, 64}, // 64 FN
+ {182, 64}, // 65 Left
+ {196, 64}, // 66 Down
+ {210, 64}, // 67 Right
+
+ {0, 0}, // 68 LED 1
+ {0, 7}, // 69 LED 2
+ {0, 14}, // 70 LED 3
+ {0, 21}, // 71 LED 4
+ {0, 28}, // 72 LED 5
+ {0, 35}, // 73 LED 6
+ {0, 42}, // 74 LED 7
+ {0, 49}, // 75 LED 8
+ {0, 56}, // 76 LED 9
+ {0, 64}, // 77 LED 10
+ {224, 0 }, // 78 LED 11
+ {224, 7 }, // 79 LED 12
+ {224, 14}, // 80 LED 13
+ {224, 21}, // 81 LED 14
+ {224, 28}, // 82 LED 15
+ {224, 35}, // 83 LED 16
+ {224, 42}, // 84 LED 17
+ {224, 49}, // 85 LED 18
+ {224, 56}, // 86 LED 19
+ {224, 64}, // 87 LED 20
+}, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 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
+} };
+#endif
diff --git a/keyboards/gmmk/gmmk2/p65/iso/iso.h b/keyboards/gmmk/gmmk2/p65/iso/iso.h
new file mode 100644
index 0000000000..206647cf79
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/iso.h
@@ -0,0 +1,47 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+// ESC 1 2 3 4 5 6 7 8 9 0 - = BS PgUp
+// Tab Q W E R T Y U I O P [ ] Enter PgUp
+// 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 Left Down Right
+
+// clang-format off
+#define LAYOUT( \
+ k13, k17, k27, k37, k47, k46, k56, k57, k67, k77, k87, k86, k66, k71, k25,\
+ k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, k84, k26,\
+ k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, k75, k65,\
+ k00, k02, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k07, k35, k01,\
+ k06, k15, k23, k31, k36, k33, k03, k73, k05 \
+)\
+{\
+ { k00, k01, k02, k03, ___, k05, k06, k07},\
+ { k10, k11, k12, k13, k14, k15, ___, 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, k57},\
+ { k60, k61, k62, ___, k64, k65, k66, k67},\
+ { k70, k71, k72, k73, k74, k75, ___, k77},\
+ { k80, k81, k82, k83, k84, k85, k86, k87} \
+}
diff --git a/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/keymap.c b/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/keymap.c
new file mode 100644
index 0000000000..61072536d7
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/* 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
+
+// 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.
+enum custom_layers {
+ _BL,
+ _FL,
+};
+
+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_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_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_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Keymap _FL: Function Layer
+ */
+[_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_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME,
+ _______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD)
+};
diff --git a/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/readme.md b/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/readme.md
new file mode 100644
index 0000000000..89d52f6afa
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/keymaps/default/readme.md
@@ -0,0 +1 @@
+# ISO GMMKV2 65% Layout
diff --git a/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/keymap.c b/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/keymap.c
new file mode 100644
index 0000000000..53918fc1e1
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+[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_TAB, KC_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_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Keymap _FL: Function Layer
+ */
+[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_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME,
+ _______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD),
+
+[2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______),
+[3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/rules.mk b/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/gmmk/gmmk2/p65/iso/readme.md b/keyboards/gmmk/gmmk2/p65/iso/readme.md
new file mode 100644
index 0000000000..1775862e0f
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/readme.md
@@ -0,0 +1,23 @@
+# GMMK V2 65% (ISO)
+
+A keyboard made and sold by Glorious LLC. Equipped with the WestBerry G7 ARM Cortex-M4 microcontroller
+
+* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall)
+* Hardware Supported: GMMK V2
+* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make gmmk/gmmk2/p65/iso:default
+
+Flashing example for this keyboard:
+
+ make gmmk/gmmk2/p65/iso:default:flash
+
+To reset the board into bootloader mode, do one of the following:
+
+* Hold the Reset switch mounted on the surface of the PCB while connecting the USB cable (remove the spacebar key and press and hold the pin on the right side)
+* Hold the Escape key while connecting the USB cable (also erases persistent settings)
+* Fn+Backslash will reset the board to bootloader mode if you have flashed the default QMK 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/gmmk/gmmk2/p65/iso/rules.mk b/keyboards/gmmk/gmmk2/p65/iso/rules.mk
new file mode 100644
index 0000000000..1cf9d7a709
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/iso/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = WB32F3G71
+
+# Bootloader selection
+BOOTLOADER = wb32-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 NKRO 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 effects.
+RGB_MATRIX_DRIVER = AW20216 # Enable RGB matrix effects.
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = embedded_flash
diff --git a/keyboards/gmmk/gmmk2/p65/mcuconf.h b/keyboards/gmmk/gmmk2/p65/mcuconf.h
new file mode 100644
index 0000000000..e5b8188e9e
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/mcuconf.h
@@ -0,0 +1,27 @@
+/* Copyright (C) 2021 Westberry Technology (ChangZhou) Corp., Ltd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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/wb_support/gmmk2/mcuconf.h -r platforms/chibios/GENERIC_WB32_F3G71XX/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef WB32_SPI_USE_SPIM2
+#define WB32_SPI_USE_SPIM2 TRUE
diff --git a/keyboards/gmmk/gmmk2/p65/p65.c b/keyboards/gmmk/gmmk2/p65/p65.c
new file mode 100644
index 0000000000..d7e06f6488
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/p65.c
@@ -0,0 +1,17 @@
+/* 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 "p65.h"
diff --git a/keyboards/gmmk/gmmk2/p65/p65.h b/keyboards/gmmk/gmmk2/p65/p65.h
new file mode 100644
index 0000000000..7a6339c2e0
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p65/p65.h
@@ -0,0 +1,25 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#if defined(KEYBOARD_gmmk_gmmk2_p65_ansi)
+# include "ansi/ansi.h"
+#elif defined(KEYBOARD_gmmk_gmmk2_p65_iso)
+# include "iso/iso.h"
+#endif // GMMK V2 revisions
diff --git a/keyboards/gmmk/gmmk2/p96/ansi/ansi.c b/keyboards/gmmk/gmmk2/p96/ansi/ansi.c
new file mode 100644
index 0000000000..455a598982
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/ansi/ansi.c
@@ -0,0 +1,332 @@
+/* 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 "ansi.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+const aw_led g_aw_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, k00, Esc
+ {0, CS1_SW2, CS2_SW2, CS3_SW2}, // 1, k10, F1
+ {0, CS1_SW3, CS2_SW3, CS3_SW3}, // 2, k20, F2
+ {0, CS1_SW4, CS2_SW4, CS3_SW4}, // 3, k30, F3
+ {0, CS1_SW5, CS2_SW5, CS3_SW5}, // 4, k40, F4
+ {0, CS1_SW6, CS2_SW6, CS3_SW6}, // 5, k50, F5
+ {0, CS1_SW7, CS2_SW7, CS3_SW7}, // 6, k60, F6
+ {0, CS1_SW8, CS2_SW8, CS3_SW8}, // 7, k70, F7
+ {0, CS1_SW9, CS2_SW9, CS3_SW9}, // 8, k80, F8
+ {0, CS1_SW10, CS2_SW10, CS3_SW10}, // 9, k90, F9
+ {0, CS1_SW11, CS2_SW11, CS3_SW11}, // 10, ka0, F10
+ {0, CS1_SW12, CS2_SW12, CS3_SW12}, // 11, kb0, F11
+ {1, CS1_SW1, CS2_SW1, CS3_SW1}, // 12, kc0, F12
+ {1, CS4_SW2, CS5_SW2, CS6_SW2}, // 13, kd0, Printscreen
+ {1, CS4_SW3, CS5_SW3, CS6_SW3}, // 14, k06, Delete
+ {1, CS1_SW2, CS2_SW2, CS3_SW2}, // 15, k16, Insert
+ {1, CS4_SW4, CS5_SW4, CS6_SW4}, // 16, k26, Page Up
+ {1, CS4_SW7, CS5_SW7, CS6_SW7}, // 17, k36, Page Down
+
+ {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 18, k01, `
+ {0, CS4_SW2, CS5_SW2, CS6_SW2}, // 19, k11, 1
+ {0, CS4_SW3, CS5_SW3, CS6_SW3}, // 20, k21, 2
+ {0, CS4_SW4, CS5_SW4, CS6_SW4}, // 21, k31, 3
+ {0, CS4_SW5, CS5_SW5, CS6_SW5}, // 22, k41, 4
+ {0, CS4_SW6, CS5_SW6, CS6_SW6}, // 23, k51, 5
+ {0, CS4_SW7, CS5_SW7, CS6_SW7}, // 24, k61, 6
+ {0, CS4_SW8, CS5_SW8, CS6_SW8}, // 25, k71, 7
+ {0, CS4_SW9, CS5_SW9, CS6_SW9}, // 26, k81, 8
+ {0, CS4_SW10, CS5_SW10, CS6_SW10}, // 27, k91, 9
+ {0, CS4_SW11, CS5_SW11, CS6_SW11}, // 28, ka1, 0
+ {0, CS4_SW12, CS5_SW12, CS6_SW12}, // 29, kb1, -
+ {1, CS1_SW5, CS2_SW5, CS3_SW5}, // 30, kc1, =
+ {1, CS1_SW7, CS2_SW7, CS3_SW7}, // 31, kd1, Backspace
+ {1, CS7_SW1, CS8_SW1, CS9_SW1}, // 32, k46, Num Lock
+ {1, CS7_SW2, CS8_SW2, CS9_SW2}, // 33, k56, Num /
+ {1, CS7_SW3, CS8_SW3, CS9_SW3}, // 34, k66, Num *
+ {1, CS7_SW4, CS8_SW4, CS9_SW4}, // 35, k76, Num -
+
+ {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 36, k02, Tab
+ {0, CS7_SW2, CS8_SW2, CS9_SW2}, // 37, k12, Q
+ {0, CS7_SW3, CS8_SW3, CS9_SW3}, // 38, k22, W
+ {0, CS7_SW4, CS8_SW4, CS9_SW4}, // 39, k32, E
+ {0, CS7_SW5, CS8_SW5, CS9_SW5}, // 40, k42, R
+ {0, CS7_SW6, CS8_SW6, CS9_SW6}, // 41, k52, T
+ {0, CS7_SW7, CS8_SW7, CS9_SW7}, // 42, k62, Y
+ {0, CS7_SW8, CS8_SW8, CS9_SW8}, // 43, k72, U
+ {0, CS7_SW9, CS8_SW9, CS9_SW9}, // 44, k82, I
+ {0, CS7_SW10, CS8_SW10, CS9_SW10}, // 45, k92, O
+ {0, CS7_SW11, CS8_SW11, CS9_SW11}, // 46, ka2, P
+ {0, CS7_SW12, CS8_SW12, CS9_SW12}, // 47, kb2, [
+ {1, CS1_SW8, CS2_SW8, CS3_SW8}, // 48, kc2, ]
+ {1, CS1_SW9, CS2_SW9, CS3_SW9}, // 49, kd3, "\\"
+ {1, CS7_SW5, CS8_SW5, CS9_SW5}, // 50, k86, Num 7
+ {1, CS7_SW6, CS8_SW6, CS9_SW6}, // 51, k96, Num 8
+ {1, CS7_SW7, CS8_SW7, CS9_SW7}, // 52, ka6, Num 9
+ {1, CS7_SW8, CS8_SW8, CS9_SW8}, // 53, kb6, Num +
+
+ {0, CS10_SW1, CS11_SW1, CS12_SW1}, // 54, k03, Caps Lock
+ {0, CS10_SW2, CS11_SW2, CS12_SW2}, // 55, k13, A
+ {0, CS10_SW3, CS11_SW3, CS12_SW3}, // 56, k23, S
+ {0, CS10_SW4, CS11_SW4, CS12_SW4}, // 57, k33, D
+ {0, CS10_SW5, CS11_SW5, CS12_SW5}, // 58, k43, F
+ {0, CS10_SW6, CS11_SW6, CS12_SW6}, // 59, k53, G
+ {0, CS10_SW7, CS11_SW7, CS12_SW7}, // 60, k63, H
+ {0, CS10_SW8, CS11_SW8, CS12_SW8}, // 61, k73, J
+ {0, CS10_SW9, CS11_SW9, CS12_SW9}, // 62, k83, K
+ {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 63, k93, L
+ {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 64, ka3, ;
+ {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 65, kb3, '
+ {1, CS1_SW11, CS2_SW11, CS3_SW11}, // 66, kc3, Enter
+ {1, CS7_SW9, CS8_SW9, CS9_SW9}, // 67, ka7, Num 4
+ {1, CS7_SW10, CS8_SW10, CS9_SW10}, // 68, kb7, Num 5
+ {1, CS7_SW11, CS8_SW11, CS9_SW11}, // 69, kc7, Num 6
+
+ {0, CS13_SW1, CS14_SW1, CS15_SW1}, // 70, k04, Shift_L
+ {0, CS13_SW2, CS14_SW2, CS15_SW2}, // 71, k24, Z
+ {0, CS13_SW3, CS14_SW3, CS15_SW3}, // 72, k34, X
+ {0, CS13_SW4, CS14_SW4, CS15_SW4}, // 73, k44, C
+ {0, CS13_SW5, CS14_SW5, CS15_SW5}, // 74, k54, V
+ {0, CS13_SW6, CS14_SW6, CS15_SW6}, // 75, k64, B
+ {0, CS13_SW7, CS14_SW7, CS15_SW7}, // 76, k74, N
+ {0, CS13_SW8, CS14_SW8, CS15_SW8}, // 77, k84, M
+ {0, CS13_SW9, CS14_SW9, CS15_SW9}, // 78, k94, ,
+ {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 79, ka4, .
+ {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 80, kb4, /
+ {1, CS4_SW8, CS5_SW8, CS6_SW8}, // 81, kd4, Shift_R
+ {1, CS4_SW9, CS5_SW9, CS6_SW9}, // 82, k17, Up
+ {1, CS10_SW1, CS11_SW1, CS12_SW1}, // 83, k67, Num 1
+ {1, CS10_SW2, CS11_SW2, CS12_SW2}, // 84, k77, Num 2
+ {1, CS10_SW3, CS11_SW3, CS12_SW3}, // 85, k87, Num 3
+ {1, CS10_SW4, CS11_SW4, CS12_SW4}, // 86, k97, Enter_R
+
+ {0, CS16_SW1, CS17_SW1, CS18_SW1}, // 87, k05, Ctrl_L
+ {0, CS16_SW2, CS17_SW2, CS18_SW2}, // 88, k15, Win_L
+ {0, CS16_SW3, CS17_SW3, CS18_SW3}, // 89, k25, Alt_L
+ {0, CS16_SW6, CS17_SW6, CS18_SW6}, // 90, k65, Space
+ {0, CS16_SW9, CS17_SW9, CS18_SW9}, // 91, k95, Alt_R
+ {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 92, ka5, FN
+ {0, CS16_SW12, CS17_SW12, CS18_SW12}, // 93, kc5, Ctrl_R
+ {1, CS4_SW10, CS5_SW10, CS6_SW10}, // 94, k07, Left
+ {1, CS4_SW11, CS5_SW11, CS6_SW11}, // 95, k27, Down
+ {1, CS10_SW5, CS11_SW5, CS12_SW5}, // 96, k37, Right
+ {1, CS10_SW6, CS11_SW6, CS12_SW6}, // 97, k47, Num 0
+ {1, CS10_SW7, CS11_SW7, CS12_SW7}, // 98, k57, Num .
+
+ {1, CS13_SW1, CS14_SW1, CS15_SW1}, // 101, LED 1
+ {1, CS13_SW2, CS14_SW2, CS15_SW2}, // 102, LED 2
+ {1, CS13_SW3, CS14_SW3, CS15_SW3}, // 103, LED 3
+ {1, CS13_SW4, CS14_SW4, CS15_SW4}, // 104, LED 4
+ {1, CS13_SW5, CS14_SW5, CS15_SW5}, // 105, LED 5
+ {1, CS13_SW6, CS14_SW6, CS15_SW6}, // 106, LED 6
+ {1, CS13_SW7, CS14_SW7, CS15_SW7}, // 107, LED 7
+ {1, CS13_SW8, CS14_SW8, CS15_SW8}, // 108, LED 8
+ {1, CS13_SW9, CS14_SW9, CS15_SW9}, // 109, LED 9
+ {1, CS13_SW10, CS14_SW10, CS15_SW10}, // 110, LED 10
+ {1, CS16_SW1, CS17_SW1, CS18_SW1}, // 111, LED 11
+ {1, CS16_SW2, CS17_SW2, CS18_SW2}, // 112, LED 12
+ {1, CS16_SW3, CS17_SW3, CS18_SW3}, // 113, LED 13
+ {1, CS16_SW4, CS17_SW4, CS18_SW4}, // 114, LED 14
+ {1, CS16_SW5, CS17_SW5, CS18_SW5}, // 115, LED 15
+ {1, CS16_SW6, CS17_SW6, CS18_SW6}, // 116, LED 16
+ {1, CS16_SW7, CS17_SW7, CS18_SW7}, // 117, LED 17
+ {1, CS16_SW8, CS17_SW8, CS18_SW8}, // 118, LED 18
+ {1, CS16_SW9, CS17_SW9, CS18_SW9}, // 119, LED 19
+ {1, CS16_SW10, CS17_SW10, CS18_SW10} // 120, LED 20
+};
+
+#define __ NO_LED
+
+led_config_t g_led_config = {{
+ { 0, 18, 36, 54, 70, 87, 14, 94},
+ { 1, 19, 37, 55, __, 88, 15, 82},
+ { 2, 20, 38, 56, 71, 89, 16, 95},
+ { 3, 21, 39, 57, 72, __, 17, 96},
+ { 4, 22, 40, 58, 73, __, 32, 97},
+ { 5, 23, 41, 59, 74, __, 33, 98},
+ { 6, 24, 42, 60, 75, 90, 34, 83},
+ { 7, 25, 43, 61, 76, __, 35, 84},
+ { 8, 26, 44, 62, 77, __, 50, 85},
+ { 9, 27, 45, 63, 78, 91, 51, 86},
+ {10, 28, 46, 64, 79, 92, 52, 67},
+ {11, 29, 47, 65, 80, __, 53, 68},
+ {12, 30, 48, __, __, 93, __, 69},
+ {13, 31, 49, 66, 81, __, __, __}
+}, {
+ { 11, 0}, // 0, k00, Esc
+ { 22, 0}, // 1, k10, F1
+ { 33, 0}, // 2, k20, F2
+ { 44, 0}, // 3, k30, F3
+ { 55, 0}, // 4, k40, F4
+ { 66, 0}, // 5, k50, F5
+ { 77, 0}, // 6, k60, F6
+ { 88, 0}, // 7, k70, F7
+ { 99, 0}, // 8, k80, F8
+ { 110, 0}, // 9, k90, F9
+ { 121, 0}, // 10, ka0, F10
+ { 132, 0}, // 11, kb0, F11
+ { 143, 0}, // 12, kc0, F12
+ { 154, 0}, // 13, kd0, Printscreen
+ { 165, 0}, // 14, k06, Delete
+ { 176, 0}, // 15, k16, Insert
+ { 187, 0}, // 16, k26, Page Up
+ { 198, 0}, // 17, k36, Page Down
+
+ { 11, 11}, // 18, k01, `
+ { 22, 11}, // 19, k11, 1
+ { 33, 11}, // 20, k21, 2
+ { 44, 11}, // 21, k31, 3
+ { 55, 11}, // 22, k41, 4
+ { 66, 11}, // 23, k51, 5
+ { 77, 11}, // 24, k61, 6
+ { 88, 11}, // 25, k71, 7
+ { 99, 11}, // 26, k81, 8
+ { 110, 11}, // 27, k91, 9
+ { 121, 11}, // 28, ka1, 0
+ { 132, 11}, // 29, kb1, -
+ { 143, 11}, // 30, kc1, =
+ { 154, 11}, // 31, kd1, Backspace
+ { 165, 11}, // 32, k46, Num Lock
+ { 176, 11}, // 33, k56, Num /
+ { 187, 11}, // 34, k66, Num *
+ { 198, 11}, // 35, k76, Num -
+
+ { 11, 22}, // 36, k02, Tab
+ { 22, 22}, // 37, k12, Q
+ { 33, 22}, // 38, k22, W
+ { 44, 22}, // 39, k32, E
+ { 55, 22}, // 40, k42, R
+ { 66, 22}, // 41, k52, T
+ { 77, 22}, // 42, k62, Y
+ { 88, 22}, // 43, k72, U
+ { 99, 22}, // 44, k82, I
+ { 110, 22}, // 45, k92, O
+ { 121, 22}, // 46, ka2, P
+ { 132, 22}, // 47, kb2, [
+ { 143, 22}, // 48, kc2, ]
+ { 154, 22}, // 49, kd3, "\\"
+ { 165, 22}, // 50, k86, Num 7
+ { 176, 22}, // 51, k96, Num 8
+ { 187, 22}, // 52, ka6, Num 9
+ { 198, 22}, // 53, kb6, Num +
+
+ { 11, 33}, // 54, k03, Caps Lock
+ { 22, 33}, // 55, k13, A
+ { 33, 33}, // 56, k23, S
+ { 44, 33}, // 57, k33, D
+ { 55, 33}, // 58, k43, F
+ { 66, 33}, // 59, k53, G
+ { 77, 33}, // 60, k63, H
+ { 88, 33}, // 61, k73, J
+ { 99, 33}, // 62, k83, K
+ { 110, 33}, // 63, k93, L
+ { 121, 33}, // 64, ka3, ;
+ { 132, 33}, // 65, kb3, '
+ { 154, 33}, // 66, kc3, Enter
+ { 165, 33}, // 67, ka7, Num 4
+ { 176, 33}, // 68, kb7, Num 5
+ { 187, 33}, // 69, kc7, Num 6
+
+ { 11, 44}, // 70, k04, Shift_L
+ { 33, 44}, // 71, k24, Z
+ { 44, 44}, // 72, k34, X
+ { 55, 44}, // 73, k44, C
+ { 66, 44}, // 74, k54, V
+ { 77, 44}, // 75, k64, B
+ { 88, 44}, // 76, k74, N
+ { 99, 44}, // 77, k84, M
+ { 110, 44}, // 78, k94, ,
+ { 121, 44}, // 79, ka4, .
+ { 132, 44}, // 80, kb4, /
+ { 143, 44}, // 81, kd4, Shift_R
+ { 154, 44}, // 82, k17, Up
+ { 165, 44}, // 83, k67, Num 1
+ { 176, 44}, // 84, k77, Num 2
+ { 187, 44}, // 85, k87, Num 3
+ { 198, 44}, // 86, k97, Enter_R
+
+ { 11, 55}, // 87, k05, Ctrl_L
+ { 22, 55}, // 88, k15, Win_L
+ { 33, 55}, // 89, k25, Alt_L
+ { 77, 55}, // 90, k65, Space
+ { 110, 55}, // 91, k95, Alt_R
+ { 121, 55}, // 92, ka5, FN
+ { 132, 55}, // 93, kc5, Ctrl_R
+ { 143, 55}, // 94, k07, Left
+ { 154, 55}, // 95, k27, Down
+ { 165, 55}, // 96, k37, Right
+ { 176, 55}, // 97, k47, Num 0
+ { 187, 55}, // 98, k57, Num .
+
+ { 0, 0}, // 101, LED 1
+ { 0, 6}, // 102, LED 2
+ { 0, 12}, // 103, LED 3
+ { 0, 18}, // 104, LED 4
+ { 0, 24}, // 105, LED 5
+ { 0, 30}, // 106, LED 6
+ { 0, 36}, // 107, LED 7
+ { 0, 42}, // 108, LED 8
+ { 0, 48}, // 109, LED 9
+ { 0, 54}, // 110, LED 10
+ { 209, 0}, // 111, LED 11
+ { 209, 6}, // 112, LED 12
+ { 209, 12}, // 113, LED 13
+ { 209, 18}, // 114, LED 14
+ { 209, 24}, // 115, LED 15
+ { 209, 30}, // 116, LED 16
+ { 209, 36}, // 117, LED 17
+ { 209, 42}, // 118, LED 18
+ { 209, 48}, // 119, LED 19
+ { 209, 54} // 120, LED 20
+}, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 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, 4, 4,
+ 4, 4, 4, 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, 4, 4, 4,
+ 4, 4, 4, 4, 4, 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
+} };
+#endif
+
+#ifdef EEPROM_ENABLE
+
+#include "spi_master.h"
+
+void spi_init(void) {
+ static bool is_initialised = false;
+ if (!is_initialised) {
+ is_initialised = true;
+
+ // Try releasing special pins for a short time
+ setPinInput(SPI_SCK_PIN);
+ setPinInput(SPI_MOSI_PIN);
+ setPinInput(SPI_MISO_PIN);
+
+ chThdSleepMilliseconds(10);
+
+ palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST | PAL_WB32_CURRENT_LEVEL3);
+ palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
+ palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
+ }
+}
+
+#endif
diff --git a/keyboards/gmmk/gmmk2/p96/ansi/ansi.h b/keyboards/gmmk/gmmk2/p96/ansi/ansi.h
new file mode 100644
index 0000000000..d449a198df
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/ansi/ansi.h
@@ -0,0 +1,54 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Del Ins PgUp PgDn
+// ` 1 2 3 4 5 6 7 8 9 0 - = BSpc Num / * -
+// Tab Q W E R T Y U I O P [ ] \\ 7 8 9 +
+// Caps A S D F G H J K L ; ' Enter 4 5 6 +
+// Sh_L Z X C V B N M , . / Sh_R Up 1 2 3 Enter
+// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right 0 . Enter
+
+// clang-format off
+#define LAYOUT( \
+ k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, ka0, kb0, kc0, kd0, k06, k16, k26, k36,\
+ k01, k11, k21, k31, k41, k51, k61, k71, k81, k91, ka1, kb1, kc1, kd1, k46, k56, k66, k76,\
+ k02, k12, k22, k32, k42, k52, k62, k72, k82, k92, ka2, kb2, kc2, kd2, k86, k96, ka6, kb6,\
+ k03, k13, k23, k33, k43, k53, k63, k73, k83, k93, ka3, kb3, kd3, ka7, kb7, kc7, \
+ k04, k24, k34, k44, k54, k64, k74, k84, k94, ka4, kb4, kd4, k17, k67, k77, k87, k97,\
+ k05, k15, k25, k65, k95, ka5, kc5, k07, k27, k37, k47, k57 \
+)\
+{\
+ { k00, k01, k02, k03, k04, k05, k06, k07},\
+ { k10, k11, k12, k13, ___, k15, k16, k17},\
+ { k20, k21, k22, k23, k24, k25, k26, k27},\
+ { k30, k31, k32, k33, k34, ___, k36, k37},\
+ { k40, k41, k42, k43, k44, ___, k46, k47},\
+ { k50, k51, k52, k53, k54, ___, k56, k57},\
+ { k60, k61, k62, k63, k64, k65, k66, k67},\
+ { k70, k71, k72, k73, k74, ___, k76, k77},\
+ { k80, k81, k82, k83, k84, ___, k86, k87},\
+ { k90, k91, k92, k93, k94, k95, k96, k97},\
+ { ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7},\
+ { kb0, kb1, kb2, kb3, kb4, ___, kb6, kb7},\
+ { kc0, kc1, kc2, ___, ___, kc5, ___, kc7},\
+ { kd0, kd1, kd2, kd3, kd4, ___, ___, ___} \
+}
diff --git a/keyboards/gmmk/gmmk2/p96/ansi/info.json b/keyboards/gmmk/gmmk2/p96/ansi/info.json
new file mode 100644
index 0000000000..a5a1d6c3d5
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/ansi/info.json
@@ -0,0 +1,125 @@
+{
+ "keyboard_name": "GMMK V2 96 ANSI",
+ "manufacturer": "Glorious",
+ "url": "http://www.pcgamingrace.com",
+ "maintainer": "GloriousThrall",
+ "usb": {
+ "vid": "0x320F",
+ "pid": "0x504B",
+ "device_version": "0.0.1"
+ },
+ "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": "Printscreen", "x": 14, "y": 0 },
+ { "label": "Delete", "x": 15.5, "y": 0 },
+ { "label": "Insert", "x": 16.5, "y": 0 },
+ { "label": "Page Up", "x": 17.5, "y": 0 },
+ { "label": "Page Down", "x": 18.5, "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, "w": 2},
+ { "label": "Num Lock", "x": 15.5, "y": 1 },
+ { "label": "/", "x": 16.5, "y": 1 },
+ { "label": "*", "x": 17.5, "y": 1 },
+ { "label": "-", "x": 18.5, "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.25},
+ { "label": "7", "x": 15.5, "y": 2 },
+ { "label": "8", "x": 16.5, "y": 2 },
+ { "label": "9", "x": 17.5, "y": 2, "w": 1.5},
+ { "label": "+", "x": 18.5, "y": 2 ,"h":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": "4", "x": 15.5, "y": 3 },
+ { "label": "5", "x": 16.5, "y": 3 },
+ { "label": "6", "x": 17.5, "y": 3 },
+
+ { "label": "Shift", "x": 0, "y": 4, "w": 2.25},
+ { "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": "Up", "x": 14.25, "y": 4 },
+ { "label": "1", "x": 15.5, "y": 4 },
+ { "label": "2", "x": 16.5, "y": 4 },
+ { "label": "3", "x": 17.5, "y": 4 },
+ { "label": "Enter", "x": 18.5, "y": 4 ,"h":2},
+
+ { "label": "Ctrl", "x": 0, "y": 5, "w": 1.25},
+ { "label": "Win", "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 },
+ { "label": "FN", "x": 11, "y": 5 },
+ { "label": "Ctrl", "x": 12, "y": 5 },
+ { "label": "Left", "x": 13.25, "y": 5 },
+ { "label": "Down", "x": 14.25, "y": 5 },
+ { "label": "Right", "x": 15.25, "y": 5 },
+ { "label": "0", "x": 16.5, "y": 5 },
+ { "label": ".", "x": 17.5, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/gmmk/gmmk2/p96/ansi/keymaps/default/keymap.c b/keyboards/gmmk/gmmk2/p96/ansi/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f03eda7e37
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/ansi/keymaps/default/keymap.c
@@ -0,0 +1,46 @@
+/* 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
+
+// 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.
+enum custom_layers {
+ _BL,
+ _FL,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+[_BL] = 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_PSCR, 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_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(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+
+ /* Keymap _FL: Function Layer
+ */
+[_FL] = LAYOUT(
+ QK_BOOT, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MRWD, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
+ _______, UC_M_WI, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD, _______, _______)
+};
diff --git a/keyboards/gmmk/gmmk2/p96/ansi/keymaps/default/readme.md b/keyboards/gmmk/gmmk2/p96/ansi/keymaps/default/readme.md
new file mode 100644
index 0000000000..fd8536d5de
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/ansi/keymaps/default/readme.md
@@ -0,0 +1 @@
+# ANSI GMMKV2 96% Layout
diff --git a/keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/config.h b/keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/config.h
new file mode 100644
index 0000000000..b656a22f1b
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/config.h
@@ -0,0 +1,21 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/keymap.c b/keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/keymap.c
new file mode 100644
index 0000000000..19f01f53b6
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/* 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
+
+// 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.
+enum custom_layers {
+ _BL,
+ _FL,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+[_BL] = 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_PSCR, 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_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(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+
+ /* Keymap _FL: Function Layer
+ */
+[_FL] = LAYOUT(
+ QK_BOOT, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MRWD, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLU, KC_VOLD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
+ _______, UC_M_WI, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD, _______, _______),
+[2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/rules.mk b/keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/ansi/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/gmmk/gmmk2/p96/ansi/readme.md b/keyboards/gmmk/gmmk2/p96/ansi/readme.md
new file mode 100644
index 0000000000..0d01979bb3
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/ansi/readme.md
@@ -0,0 +1,23 @@
+# GMMK V2 96% (ANSI)
+
+A keyboard made and sold by Glorious LLC. Equipped with the WestBerry G7 ARM Cortex-M4 microcontroller
+
+* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall)
+* Hardware Supported: GMMK V2
+* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make gmmk/gmmk2/p96/ansi:default
+
+Flashing example for this keyboard:
+
+ make gmmk/gmmk2/p96/ansi:default:flash
+
+To reset the board into bootloader mode, do one of the following:
+
+* Hold the Reset switch mounted on the surface of the PCB while connecting the USB cable (remove the spacebar key and press and hold the pin on the right side)
+* Hold the Escape key while connecting the USB cable (also erases persistent settings)
+* Fn+Backslash will reset the board to bootloader mode if you have flashed the default QMK 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/gmmk/gmmk2/p96/ansi/rules.mk b/keyboards/gmmk/gmmk2/p96/ansi/rules.mk
new file mode 100644
index 0000000000..ba78129495
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/ansi/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = WB32F3G71
+
+# Bootloader selection
+BOOTLOADER = wb32-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 NKRO 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 effects.
+RGB_MATRIX_DRIVER = AW20216 # Enable RGB matrix effects.
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = spi_flash
diff --git a/keyboards/gmmk/gmmk2/p96/config.h b/keyboards/gmmk/gmmk2/p96/config.h
new file mode 100644
index 0000000000..03a7f58538
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/config.h
@@ -0,0 +1,119 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 14
+#define MATRIX_COLS 8
+
+#define MATRIX_ROW_PINS \
+ { B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13 }
+#define MATRIX_COL_PINS \
+ { A0, A1, A2, A3, A4, A8, A9, A10 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Hold ESC on start up to clear EEPROM and boot into bootloader mode */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+#define TAP_CODE_DELAY 10
+
+/* 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_DISABLE_WHEN_USB_SUSPENDED
+
+/* External spi flash */
+#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14
+#define WEAR_LEVELING_BACKING_SIZE 2048
+
+/* SPI Config for LED Driver */
+#define SPI_DRIVER SPIDQ
+#define SPI_SCK_PIN A5
+#define SPI_MOSI_PIN A7
+#define SPI_MISO_PIN A6
+
+#define DRIVER_1_CS A15
+#define DRIVER_2_CS B15
+#define DRIVER_1_EN C13
+#define DRIVER_2_EN C13
+
+#define DRIVER_COUNT 2
+#define DRIVER_1_LED_TOTAL 66
+#define DRIVER_2_LED_TOTAL 54
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
+
+// 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
+
+/* Set debounce time to 5ms */
+#define DEBOUNCE 5
+
+/* Force NKRO on boot up regardless of the setting saved in the EEPROM (uncomment to enable it) */
+// #define FORCE_NKRO
diff --git a/keyboards/gmmk/gmmk2/p96/halconf.h b/keyboards/gmmk/gmmk2/p96/halconf.h
new file mode 100644
index 0000000000..293d182917
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/halconf.h
@@ -0,0 +1,29 @@
+/* Copyright (C) 2021 Westberry Technology (ChangZhou) Corp., Ltd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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/wb_support/gmmk2/halconf.h -r platforms/chibios/boards/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_SPI TRUE
+#define SPI_USE_WAIT TRUE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+
+#include_next <halconf.h>
+
diff --git a/keyboards/gmmk/gmmk2/p96/iso/info.json b/keyboards/gmmk/gmmk2/p96/iso/info.json
new file mode 100644
index 0000000000..df30007a01
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/iso/info.json
@@ -0,0 +1,126 @@
+{
+ "keyboard_name": "GMMK V2 96 ISO",
+ "manufacturer": "Glorious",
+ "url": "http://www.pcgamingrace.com",
+ "maintainer": "GloriousThrall",
+ "usb": {
+ "vid": "0x320F",
+ "pid": "0x505A",
+ "device_version": "0.0.1"
+ },
+ "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": "Printscreen", "x": 14, "y": 0 },
+ { "label": "Delete", "x": 15.5, "y": 0 },
+ { "label": "Insert", "x": 16.5, "y": 0 },
+ { "label": "Page Up", "x": 17.5, "y": 0 },
+ { "label": "Page Down", "x": 18.5, "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, "w": 2},
+ { "label": "Num Lock", "x": 15.5, "y": 1 },
+ { "label": "/", "x": 16.5, "y": 1 },
+ { "label": "*", "x": 17.5, "y": 1 },
+ { "label": "-", "x": 18.5, "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": "Enter", "x": 13.5, "y": 2 ,"h":2, "w": 1.25},
+ { "label": "7", "x": 15.5, "y": 2 },
+ { "label": "8", "x": 16.5, "y": 2 },
+ { "label": "9", "x": 17.5, "y": 2, "w": 1.5},
+ { "label": "+", "x": 18.5, "y": 2 ,"h":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": "#", "x": 12.75, "y": 3 },
+ { "label": "4", "x": 15.5, "y": 3 },
+ { "label": "5", "x": 16.5, "y": 3 },
+ { "label": "6", "x": 17.5, "y": 3 },
+
+ { "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": "Up", "x": 14.25, "y": 4 },
+ { "label": "1", "x": 15.5, "y": 4 },
+ { "label": "2", "x": 16.5, "y": 4 },
+ { "label": "3", "x": 17.5, "y": 4 },
+ { "label": "Enter", "x": 18.5, "y": 4 ,"h":2},
+
+ { "label": "Ctrl", "x": 0, "y": 5, "w": 1.25},
+ { "label": "Win", "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 },
+ { "label": "FN", "x": 11, "y": 5 },
+ { "label": "Ctrl", "x": 12, "y": 5 },
+ { "label": "Left", "x": 13.25, "y": 5 },
+ { "label": "Down", "x": 14.25, "y": 5 },
+ { "label": "Right", "x": 15.25, "y": 5 },
+ { "label": "0", "x": 16.5, "y": 5 },
+ { "label": ".", "x": 17.5, "y": 5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/gmmk/gmmk2/p96/iso/iso.c b/keyboards/gmmk/gmmk2/p96/iso/iso.c
new file mode 100644
index 0000000000..e1fee18079
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/iso/iso.c
@@ -0,0 +1,328 @@
+/* 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 "iso.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+const aw_led g_aw_leds[DRIVER_LED_TOTAL] = {
+/* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, k00, Esc
+ {0, CS1_SW2, CS2_SW2, CS3_SW2}, // 1, k10, F1
+ {0, CS1_SW3, CS2_SW3, CS3_SW3}, // 2, k20, F2
+ {0, CS1_SW4, CS2_SW4, CS3_SW4}, // 3, k30, F3
+ {0, CS1_SW5, CS2_SW5, CS3_SW5}, // 4, k40, F4
+ {0, CS1_SW6, CS2_SW6, CS3_SW6}, // 5, k50, F5
+ {0, CS1_SW7, CS2_SW7, CS3_SW7}, // 6, k60, F6
+ {0, CS1_SW8, CS2_SW8, CS3_SW8}, // 7, k70, F7
+ {0, CS1_SW9, CS2_SW9, CS3_SW9}, // 8, k80, F8
+ {0, CS1_SW10, CS2_SW10, CS3_SW10}, // 9, k90, F9
+ {0, CS1_SW11, CS2_SW11, CS3_SW11}, // 10, ka0, F10
+ {0, CS1_SW12, CS2_SW12, CS3_SW12}, // 11, kb0, F11
+ {1, CS1_SW1, CS2_SW1, CS3_SW1}, // 12, kc0, F12
+ {1, CS4_SW2, CS5_SW2, CS6_SW2}, // 13, kd0, Printscreen
+ {1, CS4_SW3, CS5_SW3, CS6_SW3}, // 14, k06, Delete
+ {1, CS1_SW2, CS2_SW2, CS3_SW2}, // 15, k16, Insert
+ {1, CS4_SW4, CS5_SW4, CS6_SW4}, // 16, k26, Page Up
+ {1, CS4_SW7, CS5_SW7, CS6_SW7}, // 17, k36, Page Down
+
+ {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 18, k01, `
+ {0, CS4_SW2, CS5_SW2, CS6_SW2}, // 19, k11, 1
+ {0, CS4_SW3, CS5_SW3, CS6_SW3}, // 20, k21, 2
+ {0, CS4_SW4, CS5_SW4, CS6_SW4}, // 21, k31, 3
+ {0, CS4_SW5, CS5_SW5, CS6_SW5}, // 22, k41, 4
+ {0, CS4_SW6, CS5_SW6, CS6_SW6}, // 23, k51, 5
+ {0, CS4_SW7, CS5_SW7, CS6_SW7}, // 24, k61, 6
+ {0, CS4_SW8, CS5_SW8, CS6_SW8}, // 25, k71, 7
+ {0, CS4_SW9, CS5_SW9, CS6_SW9}, // 26, k81, 8
+ {0, CS4_SW10, CS5_SW10, CS6_SW10}, // 27, k91, 9
+ {0, CS4_SW11, CS5_SW11, CS6_SW11}, // 28, ka1, 0
+ {0, CS4_SW12, CS5_SW12, CS6_SW12}, // 29, kb1, -
+ {1, CS1_SW5, CS2_SW5, CS3_SW5}, // 30, kc1, =
+ {1, CS1_SW7, CS2_SW7, CS3_SW7}, // 31, kd1, Backspace
+ {1, CS7_SW1, CS8_SW1, CS9_SW1}, // 32, k46, Num Lock
+ {1, CS7_SW2, CS8_SW2, CS9_SW2}, // 33, k56, Num /
+ {1, CS7_SW3, CS8_SW3, CS9_SW3}, // 34, k66, Num *
+ {1, CS7_SW4, CS8_SW4, CS9_SW4}, // 35, k76, Num -
+
+ {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 36, k02, Tab
+ {0, CS7_SW2, CS8_SW2, CS9_SW2}, // 37, k12, Q
+ {0, CS7_SW3, CS8_SW3, CS9_SW3}, // 38, k22, W
+ {0, CS7_SW4, CS8_SW4, CS9_SW4}, // 39, k32, E
+ {0, CS7_SW5, CS8_SW5, CS9_SW5}, // 40, k42, R
+ {0, CS7_SW6, CS8_SW6, CS9_SW6}, // 41, k52, T
+ {0, CS7_SW7, CS8_SW7, CS9_SW7}, // 42, k62, Y
+ {0, CS7_SW8, CS8_SW8, CS9_SW8}, // 43, k72, U
+ {0, CS7_SW9, CS8_SW9, CS9_SW9}, // 44, k82, I
+ {0, CS7_SW10, CS8_SW10, CS9_SW10}, // 45, k92, O
+ {0, CS7_SW11, CS8_SW11, CS9_SW11}, // 46, ka2, P
+ {0, CS7_SW12, CS8_SW12, CS9_SW12}, // 47, kb2, [
+ {1, CS1_SW8, CS2_SW8, CS3_SW8}, // 48, kc2, ]
+ {1, CS1_SW11, CS2_SW11, CS3_SW11}, // 49, kd3, Enter
+ {1, CS7_SW5, CS8_SW5, CS9_SW5}, // 50, k86, Num 7
+ {1, CS7_SW6, CS8_SW6, CS9_SW6}, // 51, k96, Num 8
+ {1, CS7_SW7, CS8_SW7, CS9_SW7}, // 52, ka6, Num 9
+ {1, CS7_SW8, CS8_SW8, CS9_SW8}, // 53, kb6, Num +
+
+ {0, CS10_SW1, CS11_SW1, CS12_SW1}, // 54, k03, Caps Lock
+ {0, CS10_SW2, CS11_SW2, CS12_SW2}, // 55, k13, A
+ {0, CS10_SW3, CS11_SW3, CS12_SW3}, // 56, k23, S
+ {0, CS10_SW4, CS11_SW4, CS12_SW4}, // 57, k33, D
+ {0, CS10_SW5, CS11_SW5, CS12_SW5}, // 58, k43, F
+ {0, CS10_SW6, CS11_SW6, CS12_SW6}, // 59, k53, G
+ {0, CS10_SW7, CS11_SW7, CS12_SW7}, // 60, k63, H
+ {0, CS10_SW8, CS11_SW8, CS12_SW8}, // 61, k73, J
+ {0, CS10_SW9, CS11_SW9, CS12_SW9}, // 62, k83, K
+ {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 63, k93, L
+ {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 64, ka3, ;
+ {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 65, kb3, '
+ {1, CS1_SW10, CS2_SW10, CS3_SW10}, // 66, kc3, #
+ {1, CS7_SW9, CS8_SW9, CS9_SW9}, // 67, ka7, Num 4
+ {1, CS7_SW10, CS8_SW10, CS9_SW10}, // 68, kb7, Num 5
+ {1, CS7_SW11, CS8_SW11, CS9_SW11}, // 69, kc7, Num 6
+
+ {0, CS13_SW1, CS14_SW1, CS15_SW1}, // 70, k04, Shift_L
+ {0, CS13_SW12, CS14_SW12, CS15_SW12}, // 71, k14, "\\"
+ {0, CS13_SW2, CS14_SW2, CS15_SW2}, // 72, k24, Z
+ {0, CS13_SW3, CS14_SW3, CS15_SW3}, // 73, k34, X
+ {0, CS13_SW4, CS14_SW4, CS15_SW4}, // 74, k44, C
+ {0, CS13_SW5, CS14_SW5, CS15_SW5}, // 75, k54, V
+ {0, CS13_SW6, CS14_SW6, CS15_SW6}, // 76, k64, B
+ {0, CS13_SW7, CS14_SW7, CS15_SW7}, // 77, k74, N
+ {0, CS13_SW8, CS14_SW8, CS15_SW8}, // 78, k84, M
+ {0, CS13_SW9, CS14_SW9, CS15_SW9}, // 79, k94, ,
+ {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 80, ka4, .
+ {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 81, kb4, /
+ {1, CS4_SW8, CS5_SW8, CS6_SW8}, // 82, kd4, Shift_R
+ {1, CS4_SW9, CS5_SW9, CS6_SW9}, // 83, k17, Up
+ {1, CS10_SW1, CS11_SW1, CS12_SW1}, // 84, k67, Num 1
+ {1, CS10_SW2, CS11_SW2, CS12_SW2}, // 85, k77, Num 2
+ {1, CS10_SW3, CS11_SW3, CS12_SW3}, // 86, k87, Num 3
+ {1, CS10_SW4, CS11_SW4, CS12_SW4}, // 87, k97, Enter_R
+
+ {0, CS16_SW1, CS17_SW1, CS18_SW1}, // 88, k05, Ctrl_L
+ {0, CS16_SW2, CS17_SW2, CS18_SW2}, // 89, k15, Win_L
+ {0, CS16_SW3, CS17_SW3, CS18_SW3}, // 90, k25, Alt_L
+ {0, CS16_SW6, CS17_SW6, CS18_SW6}, // 91, k65, Space
+ {0, CS16_SW9, CS17_SW9, CS18_SW9}, // 92, k95, Alt_R
+ {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 93, ka5, FN
+ {0, CS16_SW12, CS17_SW12, CS18_SW12}, // 94, kc5, Ctrl_R
+ {1, CS4_SW10, CS5_SW10, CS6_SW10}, // 95, k07, Left
+ {1, CS4_SW11, CS5_SW11, CS6_SW11}, // 96, k27, Down
+ {1, CS10_SW5, CS11_SW5, CS12_SW5}, // 97, k37, Right
+ {1, CS10_SW6, CS11_SW6, CS12_SW6}, // 98, k47, Num 0
+ {1, CS10_SW7, CS11_SW7, CS12_SW7}, // 99, k57, Num .
+
+ {1, CS13_SW1, CS14_SW1, CS15_SW1}, // 101, LED 1
+ {1, CS13_SW2, CS14_SW2, CS15_SW2}, // 102, LED 2
+ {1, CS13_SW3, CS14_SW3, CS15_SW3}, // 103, LED 3
+ {1, CS13_SW4, CS14_SW4, CS15_SW4}, // 104, LED 4
+ {1, CS13_SW5, CS14_SW5, CS15_SW5}, // 105, LED 5
+ {1, CS13_SW6, CS14_SW6, CS15_SW6}, // 106, LED 6
+ {1, CS13_SW7, CS14_SW7, CS15_SW7}, // 107, LED 7
+ {1, CS13_SW8, CS14_SW8, CS15_SW8}, // 108, LED 8
+ {1, CS13_SW9, CS14_SW9, CS15_SW9}, // 109, LED 9
+ {1, CS13_SW10, CS14_SW10, CS15_SW10}, // 110, LED 10
+ {1, CS16_SW1, CS17_SW1, CS18_SW1}, // 111, LED 11
+ {1, CS16_SW2, CS17_SW2, CS18_SW2}, // 112, LED 12
+ {1, CS16_SW3, CS17_SW3, CS18_SW3}, // 113, LED 13
+ {1, CS16_SW4, CS17_SW4, CS18_SW4}, // 114, LED 14
+ {1, CS16_SW5, CS17_SW5, CS18_SW5}, // 115, LED 15
+ {1, CS16_SW6, CS17_SW6, CS18_SW6}, // 116, LED 16
+ {1, CS16_SW7, CS17_SW7, CS18_SW7}, // 117, LED 17
+ {1, CS16_SW8, CS17_SW8, CS18_SW8}, // 118, LED 18
+ {1, CS16_SW9, CS17_SW9, CS18_SW9}, // 119, LED 19
+ {1, CS16_SW10, CS17_SW10, CS18_SW10} // 120, LED 20
+};
+
+#define __ NO_LED
+
+led_config_t g_led_config = {{
+ { 0, 18, 36, 54, 70, 88, 14, 95},
+ { 1, 19, 37, 55, 71, 89, 15, 83},
+ { 2, 20, 38, 56, 72, 90, 16, 96},
+ { 3, 21, 39, 57, 73, __, 17, 97},
+ { 4, 22, 40, 58, 74, __, 32, 98},
+ { 5, 23, 41, 59, 75, __, 33, 99},
+ { 6, 24, 42, 60, 76, 91, 34, 84},
+ { 7, 25, 43, 61, 77, __, 35, 85},
+ { 8, 26, 44, 62, 78, __, 50, 86},
+ { 9, 27, 45, 63, 79, 92, 51, 87},
+ {10, 28, 46, 64, 80, 93, 52, 67},
+ {11, 29, 47, 65, 81, __, 53, 68},
+ {12, 30, 48, 66, __, 94, __, 69},
+ {13, 31, __, 49, 82, __, __, __}
+}, {
+ { 11, 0}, // 0, k00, Esc
+ { 22, 0}, // 1, k10, F1
+ { 33, 0}, // 2, k20, F2
+ { 44, 0}, // 3, k30, F3
+ { 55, 0}, // 4, k40, F4
+ { 66, 0}, // 5, k50, F5
+ { 77, 0}, // 6, k60, F6
+ { 88, 0}, // 7, k70, F7
+ { 99, 0}, // 8, k80, F8
+ { 110, 0}, // 9, k90, F9
+ { 121, 0}, // 10, ka0, F10
+ { 132, 0}, // 11, kb0, F11
+ { 143, 0}, // 12, kc0, F12
+ { 154, 0}, // 13, kd0, Printscreen
+ { 165, 0}, // 14, k06, Delete
+ { 176, 0}, // 15, k16, Insert
+ { 187, 0}, // 16, k26, Page Up
+ { 198, 0}, // 17, k36, Page Down
+ { 11, 11}, // 18, k01, `
+ { 22, 11}, // 19, k11, 1
+ { 33, 11}, // 20, k21, 2
+ { 44, 11}, // 21, k31, 3
+ { 55, 11}, // 22, k41, 4
+ { 66, 11}, // 23, k51, 5
+ { 77, 11}, // 24, k61, 6
+ { 88, 11}, // 25, k71, 7
+ { 99, 11}, // 26, k81, 8
+ { 110, 11}, // 27, k91, 9
+ { 121, 11}, // 28, ka1, 0
+ { 132, 11}, // 29, kb1, -
+ { 143, 11}, // 30, kc1, =
+ { 154, 11}, // 31, kd1, Backspace
+ { 165, 11}, // 32, k46, Num Lock
+ { 176, 11}, // 33, k56, Num /
+ { 187, 11}, // 34, k66, Num *
+ { 198, 11}, // 35, k76, Num -
+ { 11, 22}, // 36, k02, Tab
+ { 22, 22}, // 37, k12, Q
+ { 33, 22}, // 38, k22, W
+ { 44, 22}, // 39, k32, E
+ { 55, 22}, // 40, k42, R
+ { 66, 22}, // 41, k52, T
+ { 77, 22}, // 42, k62, Y
+ { 88, 22}, // 43, k72, U
+ { 99, 22}, // 44, k82, I
+ { 110, 22}, // 45, k92, O
+ { 121, 22}, // 46, ka2, P
+ { 132, 22}, // 47, kb2, [
+ { 143, 22}, // 48, kc2, ]
+ { 154, 22}, // 49, kd3, Enter
+ { 165, 22}, // 50, k86, Num 7
+ { 176, 22}, // 51, k96, Num 8
+ { 187, 22}, // 52, ka6, Num 9
+ { 198, 22}, // 53, kb6, Num +
+ { 11, 33}, // 54, k03, Caps Lock
+ { 22, 33}, // 55, k13, A
+ { 33, 33}, // 56, k23, S
+ { 44, 33}, // 57, k33, D
+ { 55, 33}, // 58, k43, F
+ { 66, 33}, // 59, k53, G
+ { 77, 33}, // 60, k63, H
+ { 88, 33}, // 61, k73, J
+ { 99, 33}, // 62, k83, K
+ { 110, 33}, // 63, k93, L
+ { 121, 33}, // 64, ka3, ;
+ { 132, 33}, // 65, kb3, '
+ { 143, 33}, // 66, kc3, #
+ { 165, 33}, // 67, ka7, Num 4
+ { 176, 33}, // 68, kb7, Num 5
+ { 187, 33}, // 69, kc7, Num 6
+ { 11, 44}, // 70, k04, Shift_L
+ { 22, 44}, // 71, k14, "\\"
+ { 33, 44}, // 72, k24, Z
+ { 44, 44}, // 73, k34, X
+ { 55, 44}, // 74, k44, C
+ { 66, 44}, // 75, k54, V
+ { 77, 44}, // 76, k64, B
+ { 88, 44}, // 77, k74, N
+ { 99, 44}, // 78, k84, M
+ { 110, 44}, // 79, k94, ,
+ { 121, 44}, // 80, ka4, .
+ { 132, 44}, // 81, kb4, /
+ { 143, 44}, // 82, kd4, Shift_R
+ { 154, 44}, // 83, k17, Up
+ { 165, 44}, // 84, k67, Num 1
+ { 176, 44}, // 85, k77, Num 2
+ { 187, 44}, // 86, k87, Num 3
+ { 198, 44}, // 87, k97, Enter_R
+ { 11, 55}, // 88, k05, Ctrl_L
+ { 22, 55}, // 89, k15, Win_L
+ { 33, 55}, // 90, k25, Alt_L
+ { 77, 55}, // 91, k65, Space
+ { 110, 55}, // 92, k95, Alt_R
+ { 121, 55}, // 93, ka5, FN
+ { 132, 55}, // 94, kc5, Ctrl_R
+ { 143, 55}, // 95, k07, Left
+ { 154, 55}, // 96, k27, Down
+ { 165, 55}, // 97, k37, Right
+ { 176, 55}, // 98, k47, Num 0
+ { 187, 55}, // 99, k57, Num .
+ { 0, 0}, // 101, LED 1
+ { 0, 6}, // 102, LED 2
+ { 0, 12}, // 103, LED 3
+ { 0, 18}, // 104, LED 4
+ { 0, 24}, // 105, LED 5
+ { 0, 30}, // 106, LED 6
+ { 0, 36}, // 107, LED 7
+ { 0, 42}, // 108, LED 8
+ { 0, 48}, // 109, LED 9
+ { 0, 54}, // 110, LED 10
+ { 209, 0}, // 111, LED 11
+ { 209, 6}, // 112, LED 12
+ { 209, 12}, // 113, LED 13
+ { 209, 18}, // 114, LED 14
+ { 209, 24}, // 115, LED 15
+ { 209, 30}, // 116, LED 16
+ { 209, 36}, // 117, LED 17
+ { 209, 42}, // 118, LED 18
+ { 209, 48}, // 119, LED 19
+ { 209, 54} // 120, LED 20
+}, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 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, 4, 4,
+ 4, 4, 4, 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, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 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
+} };
+#endif
+
+#ifdef EEPROM_ENABLE
+
+#include "spi_master.h"
+
+void spi_init(void) {
+ static bool is_initialised = false;
+ if (!is_initialised) {
+ is_initialised = true;
+
+ // Try releasing special pins for a short time
+ setPinInput(SPI_SCK_PIN);
+ setPinInput(SPI_MOSI_PIN);
+ setPinInput(SPI_MISO_PIN);
+
+ chThdSleepMilliseconds(10);
+
+ palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST | PAL_WB32_CURRENT_LEVEL3);
+ palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
+ palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
+ }
+}
+
+#endif
diff --git a/keyboards/gmmk/gmmk2/p96/iso/iso.h b/keyboards/gmmk/gmmk2/p96/iso/iso.h
new file mode 100644
index 0000000000..f575befdc1
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/iso/iso.h
@@ -0,0 +1,54 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Del Ins PgUp PgDn
+// ` 1 2 3 4 5 6 7 8 9 0 - = BSpc Num / * -
+// Tab Q W E R T Y U I O P [ ] Enter 7 8 9 +
+// Caps A S D F G H J K L ; ' # Enter 4 5 6 +
+// Sh_L \ Z X C V B N M , . / Sh_R Up 1 2 3 Enter
+// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right 0 . Enter
+
+// clang-format off
+#define LAYOUT( \
+ k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, ka0, kb0, kc0, kd0, k06, k16, k26, k36,\
+ k01, k11, k21, k31, k41, k51, k61, k71, k81, k91, ka1, kb1, kc1, kd1, k46, k56, k66, k76,\
+ k02, k12, k22, k32, k42, k52, k62, k72, k82, k92, ka2, kb2, kc2, kd3, k86, k96, ka6, kb6,\
+ k03, k13, k23, k33, k43, k53, k63, k73, k83, k93, ka3, kb3, kc3, ka7, kb7, kc7, \
+ k04, k14, k24, k34, k44, k54, k64, k74, k84, k94, ka4, kb4, kd4, k17, k67, k77, k87, k97,\
+ k05, k15, k25, k65, k95, ka5, kc5, k07, k27, k37, k47, k57 \
+)\
+{\
+ { k00, k01, 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, ___, k36, k37},\
+ { k40, k41, k42, k43, k44, ___, k46, k47},\
+ { k50, k51, k52, k53, k54, ___, k56, k57},\
+ { k60, k61, k62, k63, k64, k65, k66, k67},\
+ { k70, k71, k72, k73, k74, ___, k76, k77},\
+ { k80, k81, k82, k83, k84, ___, k86, k87},\
+ { k90, k91, k92, k93, k94, k95, k96, k97},\
+ { ka0, ka1, ka2, ka3, ka4, ka5, ka6, ka7},\
+ { kb0, kb1, kb2, kb3, kb4, ___, kb6, kb7},\
+ { kc0, kc1, kc2, kc3, ___, kc5, ___, kc7},\
+ { kd0, kd1, ___, kd3, kd4, ___, ___, ___} \
+}
diff --git a/keyboards/gmmk/gmmk2/p96/iso/keymaps/default/keymap.c b/keyboards/gmmk/gmmk2/p96/iso/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d9b0dce016
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/iso/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/* 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
+
+// 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.
+#define _BL 0
+#define _FL 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+[_BL] = 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_PSCR, 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_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_ENT, 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_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(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+
+ /* Keymap _FL: Function Layer
+ */
+[_FL] = LAYOUT(
+ QK_BOOT, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MRWD, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLU, KC_VOLD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_SAI, RGB_SAD, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
+ _______, UC_M_WI, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD, _______, _______)
+};
diff --git a/keyboards/gmmk/gmmk2/p96/iso/keymaps/default/readme.md b/keyboards/gmmk/gmmk2/p96/iso/keymaps/default/readme.md
new file mode 100644
index 0000000000..b83b40941d
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/iso/keymaps/default/readme.md
@@ -0,0 +1 @@
+# ISO GMMKV2 96% Layout
diff --git a/keyboards/gmmk/gmmk2/p96/iso/keymaps/via/config.h b/keyboards/gmmk/gmmk2/p96/iso/keymaps/via/config.h
new file mode 100644
index 0000000000..b656a22f1b
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/iso/keymaps/via/config.h
@@ -0,0 +1,21 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/gmmk/gmmk2/p96/iso/keymaps/via/keymap.c b/keyboards/gmmk/gmmk2/p96/iso/keymaps/via/keymap.c
new file mode 100644
index 0000000000..6d33fdcccc
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/iso/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* 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
+
+// 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.
+#define _BL 0
+#define _FL 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Keymap _BL: Base Layer (Default Layer)
+ */
+[_BL] = 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_PSCR, 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_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_ENT, 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_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(_FL), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
+
+ /* Keymap _FL: Function Layer
+ */
+[_FL] = LAYOUT(
+ QK_BOOT, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MRWD, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLU, KC_VOLD, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_SAI, RGB_SAD, RGB_SPD, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
+ _______, UC_M_WI, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD, _______, _______),
+[2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/gmmk/gmmk2/p96/iso/keymaps/via/rules.mk b/keyboards/gmmk/gmmk2/p96/iso/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/iso/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/gmmk/gmmk2/p96/iso/readme.md b/keyboards/gmmk/gmmk2/p96/iso/readme.md
new file mode 100644
index 0000000000..88a9211973
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/iso/readme.md
@@ -0,0 +1,23 @@
+# GMMK V2 96% (ISO)
+
+A keyboard made and sold by Glorious LLC. Equipped with the WestBerry G7 ARM Cortex-M4 microcontroller
+
+* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall)
+* Hardware Supported: GMMK V2
+* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make gmmk/gmmk2/p96/iso:default
+
+Flashing example for this keyboard:
+
+ make gmmk/gmmk2/p96/iso:default:flash
+
+To reset the board into bootloader mode, do one of the following:
+
+* Hold the Reset switch mounted on the surface of the PCB while connecting the USB cable (remove the spacebar key and press and hold the pin on the right side)
+* Hold the Escape key while connecting the USB cable (also erases persistent settings)
+* Fn+Backslash will reset the board to bootloader mode if you have flashed the default QMK 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/gmmk/gmmk2/p96/iso/rules.mk b/keyboards/gmmk/gmmk2/p96/iso/rules.mk
new file mode 100644
index 0000000000..ba78129495
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/iso/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = WB32F3G71
+
+# Bootloader selection
+BOOTLOADER = wb32-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 NKRO 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 effects.
+RGB_MATRIX_DRIVER = AW20216 # Enable RGB matrix effects.
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = spi_flash
diff --git a/keyboards/gmmk/gmmk2/p96/mcuconf.h b/keyboards/gmmk/gmmk2/p96/mcuconf.h
new file mode 100644
index 0000000000..c58ff986b1
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/mcuconf.h
@@ -0,0 +1,30 @@
+/* Copyright (C) 2021 Westberry Technology (ChangZhou) Corp., Ltd
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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/wb_support/gmmk2/mcuconf.h -r platforms/chibios/GENERIC_WB32_F3G71XX/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef WB32_SPI_USE_QSPI
+#define WB32_SPI_USE_QSPI TRUE
+
+#undef WB32_SPI_USE_SPIM2
+#define WB32_SPI_USE_SPIM2 TRUE
diff --git a/keyboards/gmmk/gmmk2/p96/p96.c b/keyboards/gmmk/gmmk2/p96/p96.c
new file mode 100644
index 0000000000..47edcfe1ad
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/p96.c
@@ -0,0 +1,17 @@
+/* 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 "p96.h"
diff --git a/keyboards/gmmk/gmmk2/p96/p96.h b/keyboards/gmmk/gmmk2/p96/p96.h
new file mode 100644
index 0000000000..e7b37d6816
--- /dev/null
+++ b/keyboards/gmmk/gmmk2/p96/p96.h
@@ -0,0 +1,25 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#if defined(KEYBOARD_gmmk_gmmk2_p96_ansi)
+# include "ansi/ansi.h"
+#elif defined(KEYBOARD_gmmk_gmmk2_p96_iso)
+# include "iso/iso.h"
+#endif // GMMK V2 revisions
diff --git a/keyboards/gmmk/pro/config.h b/keyboards/gmmk/pro/config.h
index aba69c8872..9582de5265 100644
--- a/keyboards/gmmk/pro/config.h
+++ b/keyboards/gmmk/pro/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0001
-#define VENDOR_ID 0x320F
-#define PRODUCT_ID 0x5044
-#define MANUFACTURER Glorious
-#define PRODUCT GMMK Pro
-
/* key matrix size */
#define MATRIX_ROWS 11
#define MATRIX_COLS 8
@@ -113,9 +106,6 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-/* Send up to 4 key press events per scan */
-#define QMK_KEYS_PER_SCAN 4
-
/* Set debounce time to 5ms */
#define DEBOUNCE 5
diff --git a/keyboards/gmmk/pro/pro.h b/keyboards/gmmk/pro/pro.h
index 0e53ffe225..c83d6c99c5 100644
--- a/keyboards/gmmk/pro/pro.h
+++ b/keyboards/gmmk/pro/pro.h
@@ -22,4 +22,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# include "rev1/ansi/ansi.h"
#elif defined(KEYBOARD_gmmk_pro_rev1_iso)
# include "rev1/iso/iso.h"
+#elif defined(KEYBOARD_gmmk_pro_rev2_ansi)
+# include "rev2/ansi/ansi.h"
+#elif defined(KEYBOARD_gmmk_pro_rev2_iso)
+# include "rev2/iso/iso.h"
#endif // GMMK Pro revisions
diff --git a/keyboards/gmmk/pro/rev1/ansi/info.json b/keyboards/gmmk/pro/rev1/ansi/info.json
index c3e76391d1..64f63e9593 100644
--- a/keyboards/gmmk/pro/rev1/ansi/info.json
+++ b/keyboards/gmmk/pro/rev1/ansi/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "GMMK Pro (ANSI)",
+ "keyboard_name": "GMMK Pro ANSI",
+ "manufacturer": "Glorious",
"url": "https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation",
"maintainer": "GloriousThrall",
+ "usb": {
+ "vid": "0x320F",
+ "pid": "0x5044",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/alexmarmon/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/alexmarmon/keymap.c
index 99504de956..d666454a3e 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/alexmarmon/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/alexmarmon/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Ct_L Alt_L Win_L SPACE Ct_R Alt_R FN 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
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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.
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, RGB_MODE_FORWARD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, RGB_MODE_FORWARD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MODE_REVERSE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, KC_MEDIA_PREV_TRACK, _______, KC_MEDIA_NEXT_TRACK
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/andrebrait/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/andrebrait/keymap.c
index e521425f26..e5599a787d 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/andrebrait/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/andrebrait/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 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
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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.
@@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, 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
@@ -94,7 +94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, 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
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/andrewcharnley/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/andrewcharnley/keymap.c
index d044008a23..16f1acd68b 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/andrewcharnley/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/andrewcharnley/keymap.c
@@ -25,7 +25,7 @@ enum userspace_layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- // 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
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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.
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[FNLAYER] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MEDIA_PLAY_PAUSE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET , _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, _______
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/batin/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/batin/keymap.c
index be88ea82f8..9d84e86889 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/batin/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/batin/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, RGB_MOD,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/benschaeff/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/benschaeff/keymap.c
index 5f3e3f5fd8..86743acf73 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/benschaeff/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/benschaeff/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 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
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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.
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[FNLAYER] = LAYOUT(
CLOSEAPPLICATION, CLOSETAB,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MEDIA_PLAY_PAUSE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, SWAP_L , MAXI , SWAP_R , _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET , _______,
+ _______, SWAP_L , MAXI , SWAP_R , _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, MINI , _______, POPOUT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_TRNS, _______, _______, _______
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/keymap.c
index 1ad8417de2..fb60872ea8 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/byungyoonc/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, _______, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_HUI, RGB_HUD, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
_______, GUI_TOG, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/cedrikl/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/cedrikl/keymap.c
index 2361ab5660..09f8aa147a 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/cedrikl/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/cedrikl/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 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
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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.
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT(
- EEP_RST, 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_MUTE,
+ EEP_RST, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QK_BOOT, KC_MUTE,
KC_NLCK, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, 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_PSLS, KC_PAST, KC_BSLS, KC_PGUP,
KC_CAPS, RGB_VAD, RGB_TOG, RGB_VAI, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_PENT, KC_PGDN,
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/coryginsberg/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/coryginsberg/keymap.c
index 41278868db..7d2c22506a 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/coryginsberg/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/coryginsberg/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Sh_L Z X C V B N M , . ? Sh_R Up End
// Ct_L Alt_L Win_L SPACE Ct_R Alt_R FN 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
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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.
@@ -85,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[4] = LAYOUT(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TD(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, RGB_M_P, XXXXXXX, XXXXXXX, RESET, RGB_MODE_FORWARD,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_P, XXXXXXX, XXXXXXX, QK_BOOT, RGB_MODE_FORWARD,
XXXXXXX, XXXXXXX, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MODE_REVERSE,
_______, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, RGB_TOG,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.c
deleted file mode 100644
index d2f7b6ee7f..0000000000
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.c
+++ /dev/null
@@ -1,150 +0,0 @@
-// 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;
-
-#if CAPS_WORD_IDLE_TIMEOUT > 0
-#if CAPS_WORD_IDLE_TIMEOUT < 100 || CAPS_WORD_IDLE_TIMEOUT > 30000
-// Constrain timeout to a sensible range. With the 16-bit timer, the longest
-// representable timeout is 32768 ms, rounded here to 30000 ms = half a minute.
-#error "caps_word: CAPS_WORD_IDLE_TIMEOUT must be between 100 and 30000 ms"
-#endif
-
-static uint16_t idle_timer = 0;
-
-void caps_word_task(void) {
- if (caps_word_active && timer_expired(timer_read(), idle_timer)) {
- caps_word_set(false);
- }
-}
-#endif // CAPS_WORD_IDLE_TIMEOUT > 0
-
-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;
- } else {
-#if CAPS_WORD_IDLE_TIMEOUT > 0
- idle_timer = record->event.time + CAPS_WORD_IDLE_TIMEOUT;
-#endif // CAPS_WORD_IDLE_TIMEOUT > 0
- }
-
- 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_MAX:
- case QK_TO ... QK_TO_MAX:
- case QK_TOGGLE_LAYER ... QK_TOGGLE_LAYER_MAX:
- case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX:
- case QK_ONE_SHOT_LAYER ... QK_ONE_SHOT_LAYER_MAX:
- 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
-#if CAPS_WORD_IDLE_TIMEOUT > 0
- idle_timer = timer_read() + CAPS_WORD_IDLE_TIMEOUT;
-#endif // CAPS_WORD_IDLE_TIMEOUT > 0
- } else if ((get_weak_mods() & MOD_BIT(KC_LSFT)) != 0) {
- // If the weak shift mod is still on, turn it off and send an update to
- // the host computer.
- del_weak_mods(MOD_BIT(KC_LSFT));
- send_keyboard_report();
- }
-
- 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_BSPC:
- case KC_MINS:
- case KC_UNDS:
- return true;
-
- default:
- return false; // Deactivate Caps Word.
- }
-}
-
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.h
deleted file mode 100644
index 7f58dd3f17..0000000000
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/caps_word.h
+++ /dev/null
@@ -1,127 +0,0 @@
-// 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.
-//
-// Optionally, Caps Word may be configured to deactivate if the keyboard is idle
-// for some time. This is useful to mitigate unintended shifting when you get
-// interrupted or switch to the mouse while Caps Word is active. In your
-// config.h, define `CAPS_WORD_IDLE_TIMEOUT` with a time in milliseconds:
-//
-// #define CAPS_WORD_IDLE_TIMEOUT 5000 // Turn off Caps Word after 5 seconds.
-//
-// and in your keymap.c, define (or add to) `matrix_scan_user()` as
-//
-// void matrix_scan_user(void) {
-// caps_word_task();
-// // Other tasks...
-// }
-//
-// 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);
-
-// If CAPS_WORD_IDLE_TIMEOUT is set, call `caps_word_task()` from
-// `matrix_scan_user()` as described above.
-//
-// If CAPS_WORD_IDLE_TIMEOUT isn't set, calling this function has no effect (but
-// will still compile).
-#if CAPS_WORD_IDLE_TIMEOUT > 0
-void caps_word_task(void);
-#else
-static inline void caps_word_task(void) {}
-#endif
-
-// 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);
-
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/config.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/config.h
index 582e473cb2..a37fb08d31 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/config.h
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/config.h
@@ -1,5 +1,5 @@
/* Copyright 2021 Jonavin Eng @Jonavin
- Copyright 2022 gourdo1 <jcblake@outlook.com>
+ Copyright 2022 gourdo1 <gourdo1@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
@@ -17,10 +17,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
+// Force n-key rollover
+#define FORCE_NKRO
+
+// Set TT to two taps
#define TAPPING_TOGGLE 2
-// TT set to two taps
-/* Handle GRAVESC combo keys */
+#ifdef COMMAND_ENABLE
+#define IS_COMMAND() (get_mods() == MOD_MASK_CTRL) //debug commands accessed by holding down both CTRLs: https://github.com/qmk/qmk_firmware/blob/master/docs/feature_command.md
+#endif
+
+// Caps Word configuration
+#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD
+#define CAPS_WORD_IDLE_TIMEOUT 10000 // Automatically turn off after x milliseconds of idle. 0 to never timeout.
+
+// Handle GRAVESC combo keys
#define GRAVE_ESC_ALT_OVERRIDE
// Always send Escape if Alt is pressed
#define GRAVE_ESC_CTRL_OVERRIDE
@@ -31,19 +42,79 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define TAPPING_TERM_PER_KEY
#ifdef RGB_MATRIX_ENABLE
-#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
-#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#endif
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED
+ #define RGB_MATRIX_KEYPRESSES // Enables REACTIVE & SPLASH modes
+ #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Enables Heatmap, Rain
+
+ // RGB step values
+ #define RGBLIGHT_HUE_STEP 32 // The number of steps to cycle through the hue by (default 10)
+ #define RGBLIGHT_SAT_STEP 17 // The number of steps to increment the saturation by (default 17)
+ #define RGBLIGHT_VAL_STEP 17 // The number of steps to increment the brightness by (default 17)
+
+ // Startup values, when none have been set
+ #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default effect mode, if none has been set (was RGB_MATRIX_SOLID_COLOR)
+ #define RGB_MATRIX_STARTUP_HUE 24 // 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 127 // 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
-// RGB step values
-#define RGBLIGHT_HUE_STEP 32 // The number of steps to cycle through the hue by (default 10)
-#define RGBLIGHT_SAT_STEP 17 // The number of steps to increment the saturation by (default 17)
-#define RGBLIGHT_VAL_STEP 17 // The number of steps to increment the brightness by (default 17)
+ // Uncomment any #undef line below to turn OFF any default enabled RGB background effect (enabled in keyboards/gmmk/pro/config.h).
+ #undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Solid color (seems redundant; seems same as RGB_MATRIX_SOLID_COLOR?)
+ //#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static, horizontal rainbow
+ //#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static, vertical Rainbow
+ //#undef ENABLE_RGB_MATRIX_BREATHING // Breathing animation using selected HSV color
+ #undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right (with white)
+ //#undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right (with black)
+ #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades sat (with white)
+ //#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness (with black)
+ #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades brightness (with white)
+ //#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness (with black)
+ //#undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard cycling through rainbow
+ //#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient moving left to right
+ //#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+ #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient chevron scrolling left to right (too similar to cycle left right)
+ //#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Rainbow circles coming to center.
+ #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Two Rainbow circles coming to 1/3 and 2/3 points. (seems mostly redundant with above)
+ #undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Built-in cycling pinwheel (seems redundant with below)
+ //#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+ #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Spinning rainbow (more distracting transitions)
+ //#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Spinning rainbow (smoother)
+ #undef ENABLE_RGB_MATRIX_DUAL_BEACON // Two rainbows spinning around keyboard (distracting, busy)
+ #undef ENABLE_RGB_MATRIX_RAINDROPS // Sustained raindrops of blue, green, yellow (confusing to use with RGB layers)
+ //#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Sustained raindrops of blue, purple, pink, green (confusing to use with RGB layers, but slightly better than above)
+ #undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back (very subtle)
+ #undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left (very subtle)
+ #undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right (very subtle)
+ //#undef ENABLE_RGB_MATRIX_PIXEL_RAIN // Non-sustained raindrops of pastel colors
+ #undef ENABLE_RGB_MATRIX_PIXEL_FLOW // More active version of pixel rain with quick cycling (unusable, very distracting)
+ #undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL // Same as Pixel Flow but with current HSV only (somewhat distracting)
+ //Only enabled if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+ //#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // Fading heatmap that follows keystrokes (has buggy side LEDs that glow red)
+ //#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // The Matrix (has buggy side LEDs that glow red)
+ //Only enabled if RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+ //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Key hits shown in current hue - all other keys black
+ //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Keyboard lights up in chosen hue, key hits shown in complementary hue (try this as default?)
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse around a single key hit then fades value out (Single key)
+ //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // same as above but more intense (Multi-key)
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Column and Row single current color fade (Single key)
+ //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Column and Row single color fade. (Multi-key)
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of key hit then fades (Single key)
+ //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multi-key hit then fades
+ //#undef ENABLE_RGB_MATRIX_SPLASH // Full rainbow pulses from key hit. All else black.
+ #undef ENABLE_RGB_MATRIX_MULTISPLASH // Full rainbow pulses from multi-keys. All else black. (distracting on multiple keystroke hits)
+ #undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Single color pulses from key hit. All else black. (distracting on multiple key hits)
+ //#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Single color pulses from muli-keys. All else black.
+#endif //RGB_MATRIX_ENABLE
-// add fifth layer for colemak -- set "COLEMAK_LAYER_ENABLE = yes" in rules.mk to enable
+// Add a 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
+ #ifdef GAME_ENABLE
+ #define DYNAMIC_KEYMAP_LAYER_COUNT 6
+ #define _COLEMAK 5
+ #else
+ #define DYNAMIC_KEYMAP_LAYER_COUNT 5
+ #define _COLEMAK 4
+ #endif //GAME_ENABLE
#endif // COLEMAK_LAYER_ENABLE
/*
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/keymap.c
index 97db98dd12..ab98693649 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/keymap.c
@@ -1,7 +1,7 @@
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
Copyright 2021 Jonavin Eng @Jonavin
- Copyright 2022 gourdo1 <jcblake@outlook.com>
-
+ Copyright 2022 gourdo1 <gourdo1@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 2 of the License, or
@@ -16,7 +16,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/>.
*/
-// Note: Several advanced functions referenced in this file (like Tap Dance functions) are defined in users/gourdo1/gourdo1.c
+// Note: Many advanced functions referenced in this file are defined in /users/gourdo1/gourdo1.c
#include QMK_KEYBOARD_H
@@ -24,6 +24,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "gourdo1.h"
+#include "paddlegame.h"
+
+#include <math.h>
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base Layout
@@ -44,39 +48,60 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_BASE] = LAYOUT(
- KC_ESCLYR, KC_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_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_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, LEFTOFENC, ENCFUNC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, BELOWENC,
KC_TAB, KC_Q, KC_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,
- TT(_NUMPADMOUSE), KC_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,
+ CAPSNUM, KC_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(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/* FN1 Layout
*
* ,-------------------------------------------------------------------------------------------------------------.
- * | Esc ||MyCmp |WbHom | Calc |MdSel ||MdPrv |MdNxt |MdPly |MdStp ||VolDn |VolUp |PrScr |ScrLk ||Pause || ____ |
+ * | Esc ||MyCmp |WbHom | Calc |MdSel ||MdPrv |MdNxt |MdPly |MdStp ||VolDn |VolUp |PrScr |ScrLk ||Pause ||Sleep |
* |=============================================================================================================|
* | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |RGBTOD|RGBTOI| ________ ||RGBTOG|
* |------+------+------+------+------+------+------+------+------+------+------+------+------+----------++------|
- * | ______ |RGBSAD|RGBVAI|RGBSAI| NKRO | ____ |YAHOO | ____ | ____ |OUTLK |Pause | ____ | ____ | Reset || Home |
+ * | ______ |RGBSAD|RGBVAI|RGBSAI| NKRO | ____ |YAHOO | ____ | ____ |OUTLK |Pause | ____ | ____ |QK_BOOT|| Home |
* |---------+------+------+------+------+------+------+------+------+------+------+------+------+-------++------|
* | Capslock |RGBHUD|RGBVAD|RGBHUI| ____|GMAIL |HTMAIL| ____ | ____ | ____ | ____ | ____ | __________ || End |
* |------------+------+------+------+-----+------+------+------+------+------+------+------|----+========+------|
- * | __________ |RGBNIT| ____ | ____ | ____ | ____ |NumLk | ____ | ____ |DOTCOM| ____ | ______ ||RGBMOD|| ____ |
+ * | __________ |RGBNIT| ____ | ____ | ____ | ____ |NumLk | ____ | ____ |DOTCOM| CAD | ______ ||RGBMOD|| ____ |
* |--------------+------+------+------+------+------+------+------+------+------+------+--+=====++------++======|
* | ____ | WinKyLk | ____ | _____ | ____ | ____ | ____ ||RGBSPD|RGBRMD|RGBSPI|
* `------------------------------------------------------------------------------------------------------------'
*/
+ #ifdef GAME_ENABLE
+ [_FN1] = LAYOUT(
+ EE_CLR, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_VOLD, KC_VOLU, KC_PSCR, KC_SLCK, KC_PAUS, KC_SLEP,
+ PRNCONF, TG_CAPS, TG_PAD, TG_ESC, TG_DEL, TG_TDCAP,TG_ENC, TG_INS,TG_SPCMOD,TG_AUTOCR, _______, RGB_TOD, RGB_TOI, _______, RGB_TOG,
+ _______, RGB_SAD, RGB_VAI, RGB_SAI, NK_TOGG, _______, YAHOO, _______, _______, OUTLOOK, TG(_GAME),SWAP_L, SWAP_R, QK_BOOT, KC_HOME,
+ KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, _______, GMAIL, HOTMAIL, _______, _______, LOCKPC, _______, _______, _______, KC_END,
+ _______, RGB_NITE,_______, _______, _______, QK_BOOT, KC_NLCK, _______, _______, DOTCOM, KC_CAD, _______, RGB_MOD, _______,
+ _______, WINLOCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
+ ),
+
+ [_GAME] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ #else
[_FN1] = LAYOUT(
- EE_CLR, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_VOLD, KC_VOLU, KC_PSCR, KC_SLCK, KC_PAUS, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOD, RGB_TOI, _______, RGB_TOG,
- _______, RGB_SAD, RGB_VAI, RGB_SAI, NK_TOGG, _______, YAHOO, _______, _______, OUTLOOK, KC_PAUS, SWAP_L, SWAP_R, RESET, KC_HOME,
- KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, _______, GMAIL, HOTMAIL, _______, _______, _______, _______, _______, _______, KC_END,
- _______, RGB_NITE,_______, _______, _______, _______, KC_NLCK, _______, _______, DOTCOM, KC_CAD, _______, RGB_MOD, _______,
- _______, KC_WINLCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
+ EE_CLR, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_VOLD, KC_VOLU, KC_PSCR, KC_SLCK, KC_PAUS, KC_SLEP,
+ PRNCONF, TG_CAPS, TG_PAD, TG_ESC, TG_DEL, TG_TDCAP,TG_ENC, TG_INS,TG_SPCMOD,TG_AUTOCR, _______, RGB_TOD, RGB_TOI, _______, RGB_TOG,
+ _______, RGB_SAD, RGB_VAI, RGB_SAI, NK_TOGG, _______, YAHOO, _______, _______, OUTLOOK, KC_PAUS, SWAP_L, SWAP_R, QK_BOOT, KC_HOME,
+ KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, _______, GMAIL, HOTMAIL, _______, _______, LOCKPC, _______, _______, _______, KC_END,
+ _______, RGB_NITE,_______, _______, _______, QK_BOOT, KC_NLCK, _______, _______, DOTCOM, KC_CAD, _______, RGB_MOD, _______,
+ _______, WINLOCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
),
+ #endif //GAME_ENABLE
/* _NUMPADMOUSE Layout
* Note: A symbol preceded by "P" is a Numpad-encoded version of the key -- any app that differentiates will recognize the char as coming from a physical numpad.
@@ -100,8 +125,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, _______, _______,
_______, KC_PGUP, KC_UP, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, _______, KC_WH_U,
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_PAST, _______, KC_PENT, KC_WH_D,
- _______, KC_NO, _______, _______, _______, KC_NO, KC_NO, KC_P0, KC_00, KC_PDOT, KC_PSLS, KC_BTN1, KC_MS_U, KC_BTN2,
- _______, _______, _______, _______, _______, _______, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R
+ _______, KC_NO, _______, _______, _______, _______, _______, KC_P0, KC_00, KC_PDOT, KC_PSLS, KC_BTN1, KC_MS_U, KC_BTN2,
+ _______, _______, _______, KC_PENT, _______, _______, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R
),
[_MOUSEKEY] = LAYOUT(
@@ -115,19 +140,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#ifdef COLEMAK_LAYER_ENABLE
[_COLEMAK] = 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, 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_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_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_BSLS, KC_PGUP,
- _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_PGDN,
- _______, 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_SPC, KC_RALT, _______,KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- ),
+ _______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, KC_ENT, KC_PGDN,
+ _______, 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_SPC, KC_RALT, _______, 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)
+ if (clockwise)
rgblight_increase_hue_noeeprom();
else
rgblight_decrease_hue_noeeprom();
@@ -154,6 +179,18 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
timeout_update_threshold(clockwise);
#endif
break;
+ #ifdef GAME_ENABLE
+ case _GAME:
+ // Game: Paddle movement
+ if (damage_count == 0) {
+ if (clockwise) {
+ if (paddle_pos_full < 15) ++paddle_pos_full;
+ } else {
+ if (paddle_pos_full > 0) --paddle_pos_full;
+ }
+ }
+ break;
+ #endif //GAME_ENABLE
default:
encoder_action_volume(clockwise); // Otherwise it just changes volume
break;
@@ -165,6 +202,45 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
#endif // ENCODER_ENABLE && !ENCODER_DEFAULTACTIONS_ENABLE
#ifdef RGB_MATRIX_ENABLE
+
+// Game logic
+#ifdef GAME_ENABLE
+void init_ball(uint8_t i) {
+ i &= 1;
+ ball[i].on = true;
+ ball[i].up = false;
+ ball[i].y = 0;
+ ball[i].x = rand() % 16;
+
+ // Set initial ball state
+ if (ball[i].x < 8) {
+ ball[i].left = false;
+ } else {
+ ball[i].x -= 4;
+ ball[i].left = true;
+ }
+
+ // 1/4 chance of being an enemy ball after level 6
+ if (level_number > 3) {
+ ball[i].enemy = ((rand() % 4) == 0);
+ } else {
+ ball[i].enemy = false;
+ }
+}
+
+void hurt_paddle(void) {
+ if (paddle_lives > 0) {
+ --paddle_lives;
+ }
+ damage_timer = timer_read();
+ damage_count = 10;
+
+ // Reset board
+ init_ball(0);
+ ball[1].on = false;
+}
+#endif //GAME_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);
@@ -174,8 +250,10 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
rgb_matrix_set_color(LED_L3, RGB_RED);
rgb_matrix_set_color(LED_L4, RGB_RED);
rgb_matrix_set_color(LED_TAB, RGB_RED);
+ rgb_matrix_set_color(LED_F12, RGB_RED);
}
+/*
// System NumLock warning indicator RGB setup
#ifdef INVERT_NUMLOCK_INDICATOR
if (!IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // on if NUM lock is OFF to bring attention to overlay numpad not functional when enabled
@@ -194,15 +272,23 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
rgb_matrix_set_color(LED_FN, RGB_ORANGE2);
}
#endif // INVERT_NUMLOCK_INDICATOR
+*/
// CapsLock RGB setup
if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
- for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_LETTERS); i++) {
- rgb_matrix_set_color(LED_LIST_LETTERS[i], RGB_CHARTREUSE);
+ if (user_config.rgb_hilite_caps) {
+ for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_LETTERS); i++) {
+ rgb_matrix_set_color(LED_LIST_LETTERS[i], RGB_CHARTREUSE);
+ }
+ rgb_matrix_set_color(LED_L7, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_L8, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_LSFT, RGB_CHARTREUSE);
+ }
+ else {
+ rgb_matrix_set_color(LED_L7, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_L8, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_LSFT, RGB_CHARTREUSE);
}
- rgb_matrix_set_color(LED_L7, RGB_CHARTREUSE);
- rgb_matrix_set_color(LED_L8, RGB_CHARTREUSE);
- rgb_matrix_set_color(LED_LSFT, RGB_CHARTREUSE);
}
// Winkey disabled (gaming) mode RGB setup
@@ -239,9 +325,9 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
rgb_matrix_set_color(LED_LALT, RGB_RED);
rgb_matrix_set_color(LED_SPC, RGB_RED);
rgb_matrix_set_color(LED_LWIN, RGB_RED);
- rgb_matrix_set_color(LED_RALT, RGB_RED);
+ //rgb_matrix_set_color(LED_RALT, RGB_RED);
rgb_matrix_set_color(LED_FN, RGB_OFFBLUE);
- rgb_matrix_set_color(LED_RCTL, RGB_RED);
+ //rgb_matrix_set_color(LED_RCTL, RGB_RED);
rgb_matrix_set_color(LED_BSLS, RGB_RED);
rgb_matrix_set_color(LED_L1, RGB_RED);
rgb_matrix_set_color(LED_L2, RGB_RED);
@@ -265,36 +351,116 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
rgb_matrix_set_color(LED_MINS, RGB_OFFBLUE);
rgb_matrix_set_color(LED_EQL, RGB_OFFBLUE);
+ // Indicator for paddle game enabled in build
+ #ifdef GAME_ENABLE
+ rgb_matrix_set_color(LED_P, RGB_CHARTREUSE);
+ #else
+ rgb_matrix_set_color(LED_P, RGB_RED);
+ #endif // GAME_ENABLE
+
+ // System NumLock warning indicator RGB setup
+ #ifdef INVERT_NUMLOCK_INDICATOR
+ if (!IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // on if NUM lock is OFF to bring attention to overlay numpad not functional when enabled
+ rgb_matrix_set_color(LED_N, RGB_ORANGE2);
+ }
+ #else
+ if (IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // Normal, on if NUM lock is ON
+ rgb_matrix_set_color(LED_N, RGB_ORANGE2);
+ }
+ #endif // INVERT_NUMLOCK_INDICATOR
+
+ //Add RGB statuses for user.config toggles
+ if (user_config.rgb_hilite_caps) {
+ rgb_matrix_set_color(LED_1, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_1, RGB_PURPLE);
+ }
+ if (user_config.rgb_hilite_numpad) {
+ rgb_matrix_set_color(LED_2, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_2, RGB_PURPLE);
+ }
+ if (user_config.esc_double_tap_to_baselyr) {
+ rgb_matrix_set_color(LED_3, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_3, RGB_PURPLE);
+ }
+ if (user_config.del_right_home_top) {
+ rgb_matrix_set_color(LED_4, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_4, RGB_PURPLE);
+ }
+ if (user_config.double_tap_shift_for_capslock) {
+ rgb_matrix_set_color(LED_5, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_5, RGB_PURPLE);
+ }
+ if (user_config.encoder_press_mute_or_media) {
+ rgb_matrix_set_color(LED_6, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_6, RGB_PURPLE);
+ }
+ if (user_config.ins_on_shft_bkspc_or_del) {
+ rgb_matrix_set_color(LED_7, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_7, RGB_PURPLE);
+ }
+ if (user_config.disable_space_mods) {
+ rgb_matrix_set_color(LED_8, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_8, RGB_PURPLE);
+ }
+ if (user_config.autocorrect) {
+ rgb_matrix_set_color(LED_9, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_9, RGB_PURPLE);
+ }
+
// 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_CYAN);
+ if (timeout_threshold <= 10) rgb_matrix_set_color(LED_LIST_FUNCROW[timeout_threshold], RGB_BLUE);
else if (timeout_threshold < 140) {
rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold / 10)], RGB_CYAN);
- rgb_matrix_set_color(LED_LIST_NUMROW[(timeout_threshold % 10)], RGB_CYAN);
+ rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold % 10)], RGB_BLUE);
} else { // >= 140 minutes, just show these 3 lights
- rgb_matrix_set_color(LED_LIST_NUMROW[10], RGB_CYAN);
- rgb_matrix_set_color(LED_LIST_NUMROW[11], RGB_CYAN);
- rgb_matrix_set_color(LED_LIST_NUMROW[12], RGB_CYAN);
+ rgb_matrix_set_color(LED_LIST_FUNCROW[10], RGB_CYAN);
+ rgb_matrix_set_color(LED_LIST_FUNCROW[11], RGB_CYAN);
+ rgb_matrix_set_color(LED_LIST_FUNCROW[12], RGB_CYAN);
}
break;
// Numpad & Mouse Keys overlay RGB
case _NUMPADMOUSE:
- for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_NUMPAD); i++) {
- rgb_matrix_set_color(LED_LIST_NUMPAD[i], RGB_OFFBLUE);
+ #ifdef INVERT_NUMLOCK_INDICATOR
+ if (!IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // on if NUM lock is OFF to bring attention to overlay numpad not functional when enabled
+ rgb_matrix_set_color(LED_N, RGB_ORANGE2);
+ }
+ #else
+ if (IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // Normal, on if NUM lock is ON
+ rgb_matrix_set_color(LED_N, RGB_ORANGE2);
+ }
+ #endif // INVERT_NUMLOCK_INDICATOR
+ if (user_config.rgb_hilite_numpad) {
+ for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_NUMPAD); i++) {
+ rgb_matrix_set_color(LED_LIST_NUMPAD[i], RGB_OFFBLUE);
+ }
+ rgb_matrix_set_color(LED_L5, RGB_OFFBLUE);
+ rgb_matrix_set_color(LED_L6, RGB_OFFBLUE);
+ rgb_matrix_set_color(LED_CAPS, RGB_OFFBLUE);
+ rgb_matrix_set_color(LED_UP, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_DOWN, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_LEFT, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_RIGHT, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_RCTL, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_RSFT, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_END, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_PGUP, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_PGDN, RGB_CHARTREUSE);
+ } else {
+ rgb_matrix_set_color(LED_L5, RGB_OFFBLUE);
+ rgb_matrix_set_color(LED_L6, RGB_OFFBLUE);
+ rgb_matrix_set_color(LED_CAPS, RGB_OFFBLUE);
}
- rgb_matrix_set_color(LED_L5, RGB_OFFBLUE);
- rgb_matrix_set_color(LED_L6, RGB_OFFBLUE);
- rgb_matrix_set_color(LED_CAPS, RGB_OFFBLUE);
- rgb_matrix_set_color(LED_UP, RGB_CHARTREUSE);
- rgb_matrix_set_color(LED_DOWN, RGB_CHARTREUSE);
- rgb_matrix_set_color(LED_LEFT, RGB_CHARTREUSE);
- rgb_matrix_set_color(LED_RIGHT, RGB_CHARTREUSE);
- rgb_matrix_set_color(LED_RCTL, RGB_CHARTREUSE);
- rgb_matrix_set_color(LED_RSFT, RGB_CHARTREUSE);
- rgb_matrix_set_color(LED_END, RGB_CHARTREUSE);
- rgb_matrix_set_color(LED_PGUP, RGB_CHARTREUSE);
- rgb_matrix_set_color(LED_PGDN, RGB_CHARTREUSE);
break;
// MOUSEKEYS mode RGB
@@ -308,19 +474,229 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
rgb_matrix_set_color(LED_END, RGB_CYAN);
rgb_matrix_set_color(LED_PGUP, RGB_OFFBLUE);
rgb_matrix_set_color(LED_PGDN, RGB_OFFBLUE);
-
break;
- // Colemak layer RGB
- #ifdef COLEMAK_LAYER_ENABLE
+ // Colemak layer RGB
+ #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_MAGENTA);
rgb_matrix_set_color(LED_SIDE_LEFT[i], RGB_MAGENTA);
}
break;
- #endif
+ #endif
+
+ // Paddle game logic
+ #ifdef GAME_ENABLE
+ case _GAME:
+ if (!game_start) {
+ srand((unsigned int) timer_read());
+
+ // Store user light settings
+ last_hsv = rgb_matrix_get_hsv();
+ rgb_matrix_sethsv_noeeprom(0, 0, 0);
+
+ paddle_pos_full = 8;
+ paddle_lives = 4;
+ bounce_count = 0;
+ level_number = 0;
+ damage_count = 0;
+
+ init_ball(0);
+ ball[1].on = false;
+ ball_timer = timer_read();
+
+ game_start = true;
+ }
+
+ // Set level indicator
+ if (level_number < 12) {
+ rgb_matrix_set_color(GAME_R0[level_number], RGB_BLUE);
+ }
+
+ // Set life bar
+ for (uint8_t i = 0; i < paddle_lives; i++) {
+ rgb_matrix_set_color(GAME_LIVES[i], RGB_GREEN);
+ }
+
+ uint8_t paddle_pos = paddle_pos_full >> 1;
+
+ if (damage_count > 0) {
+ // Flash paddle when receiving damage
+ if (timer_elapsed(damage_timer) > 500) {
+ --damage_count;
+ damage_timer = timer_read();
+ }
+ if ((damage_count & 1) == 0) {
+ for (uint8_t i = 0; i < 3; i++) {
+ rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_RED);
+ }
+ }
+ if (damage_count == 0) {
+ ball_timer = timer_read();
+ }
+
+ } else if (paddle_lives == 0) {
+ // Game over
+ for (uint8_t i = 0; i < sizeof(LED_GAME_OVER) / sizeof(LED_GAME_OVER[0]); i++) {
+ rgb_matrix_set_color(LED_GAME_OVER[i], RGB_RED);
+ }
+
+ } else if (level_number >= 12) {
+ // You win
+ if (rgb_value.r == 0xff && rgb_value.g < 0xff) {
+ if (rgb_value.b > 0) {
+ --rgb_value.b;
+ } else {
+ ++rgb_value.g;
+ }
+ } else if (rgb_value.g == 0xff && rgb_value.b < 0xff) {
+ if (rgb_value.r > 0) {
+ --rgb_value.r;
+ } else {
+ ++rgb_value.b;
+ }
+ } else if (rgb_value.b == 0xff && rgb_value.r < 0xff) {
+ if (rgb_value.g > 0) {
+ --rgb_value.g;
+ } else {
+ ++rgb_value.r;
+ }
+ }
+
+ for (uint8_t i = 0; i < 3; i++) {
+ rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], rgb_value.r, rgb_value.g, rgb_value.b);
+ }
+ rgb_matrix_set_color(GAME_SMILE1[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b);
+ rgb_matrix_set_color(GAME_SMILE1[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b);
+ rgb_matrix_set_color(GAME_SMILE2[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b);
+ rgb_matrix_set_color(GAME_SMILE2[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b);
+
+ } else {
+ // normal game loop
+
+ // Set paddle position
+ for (uint8_t i = 0; i < 3; i++) {
+ rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_GREEN);
+ }
+
+ // Ball movement logic happens at intervals
+ if (timer_elapsed(ball_timer) > GAME_TIMER[level_number]) {
+ for (int i = 0; i < 2; ++i) {
+ if (ball[i].on) {
+ // Ball movement
+ if (ball[i].up) {
+ if (ball[i].y > 0) {
+ --ball[i].y;
+ if (!ball[i].left) ++ball[i].x;
+ } else {
+ // Count reflections. If > 10, increase level
+ ++bounce_count;
+ if (bounce_count >= 10) {
+ bounce_count = 0;
+ ++level_number;
+ }
+ ball[i].on = false;
+ }
+ } else {
+ ++ball[i].y;
+ if (ball[i].left) --ball[i].x;
+ if (ball[i].y > 4) {
+ // Remove a life if ball isn't returned and isn't enemy
+ if (!ball[i].enemy) {
+ hurt_paddle();
+ i = 2;
+ } else {
+ ball[i].on = false;
+ }
+ }
+ }
+ }
+ }
+ if (ball[0].y == 4 && !ball[1].on) {
+ init_ball(1);
+ }
+ if (ball[1].y == 4 && !ball[0].on) {
+ init_ball(0);
+ }
+ if (!ball[0].on && !ball[1].on) {
+ init_ball(0);
+ }
+ ball_timer = timer_read();
+ }
+
+ // Other ball stuff
+ for (int i = 0; i < 2; ++i) {
+ if (ball[i].on) {
+ // Ball deflection logic
+ if (!ball[i].up && ball[i].y == 4 && (ball[i].x == paddle_pos || ball[i].x == paddle_pos - 1 || ball[i].x == paddle_pos + 1)) {
+ if (!ball[i].enemy) {
+ --ball[i].y;
+ if (!ball[i].left) {
+ ++ball[i].x;
+ }
+ ball[i].up = true;
+ } else {
+ hurt_paddle();
+ i = 2;
+ }
+ }
+
+ // Ball display
+ switch (ball[i].y) {
+ case 0:
+ if (ball[i].enemy) {
+ rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_RED);
+ } else {
+ rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_WHITE);
+ }
+ break;
+
+ case 1:
+ if (ball[i].enemy) {
+ rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_RED);
+ } else {
+ rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_WHITE);
+ }
+ break;
+
+ case 2:
+ if (ball[i].enemy) {
+ rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_RED);
+ } else {
+ rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_WHITE);
+ }
+ break;
+
+ case 3:
+ if (ball[i].enemy) {
+ rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_RED);
+ } else {
+ rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_WHITE);
+ }
+ break;
+
+ case 4:
+ if (ball[i].enemy) {
+ rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_RED);
+ } else {
+ rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_WHITE);
+ }
+ break;
+ }
+ }
+ }
+ }
+ break;
+ #endif //GAME_ENABLE
default:
+ #ifdef GAME_ENABLE
+ if (game_start) {
+ // Reset lighting settings
+ game_start = false;
+ rgb_matrix_sethsv_noeeprom(last_hsv.h, last_hsv.s, last_hsv.v);
+ }
+ #endif //GAME_ENABLE
break;
}
}
@@ -329,8 +705,6 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
void keyboard_post_init_keymap(void) {
// keyboard_post_init_user() moved to userspace
#ifdef RGB_MATRIX_ENABLE
- rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
- rgb_matrix_sethsv_noeeprom(20, 255, 127); // Default startup color (Hue:amber Saturation:full Value(brightness):mid)
activate_rgb_nightmode(false); // Set to true if you want to startup in nightmode, otherwise use Fn + Z to toggle
#endif
} \ No newline at end of file
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/paddlegame.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/paddlegame.h
new file mode 100644
index 0000000000..3d33975cfe
--- /dev/null
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/paddlegame.h
@@ -0,0 +1,48 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
+ Copyright 2021 Tomas Guinan
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 GAME_ENABLE
+const uint16_t GAME_TIMER[] = {
+ 400, 350, 300, 250, 400, 350, 300, 250, 225, 200, 175, 150
+};
+
+bool game_start = false;
+HSV last_hsv;
+static uint8_t paddle_pos_full;
+static uint8_t paddle_lives;
+static uint8_t level_number;
+static uint8_t bounce_count;
+static uint8_t damage_count;
+static uint16_t damage_timer;
+static uint16_t ball_timer;
+
+struct BallStruct
+{
+ uint8_t x;
+ uint8_t y;
+ bool on;
+ bool up;
+ bool left;
+ bool enemy;
+};
+
+struct BallStruct ball[2];
+
+void init_ball(uint8_t i);
+void hurt_paddle(void);
+
+#endif //GAME_ENABLE \ No newline at end of file
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/readme.md b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/readme.md
index 3db6923d76..aebccf6d14 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/readme.md
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/readme.md
@@ -1,97 +1,124 @@
-# gourdo1's GMMK Pro ANSI layout
+# [gourdo1's](mailto:gourdo1@outlook.com) GMMK Pro Keyboard Layouts
-This Windows-centric layout is based on [Jonavin's](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/ansi/keymaps/jonavin) GMMK Pro layout with several additions, modifications, a tweaked keymap, updated layers and expanded RGB controls.
+These Windows-centric layouts are based on Jonavin's GMMK Pro [layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin) with many additions, fixes, a revamped keymap, persistent user customizations, updated layers, Pascal Getreuer's [autocorrect](https://getreuer.info/posts/keyboards/autocorrection/), Tomas Guinan's [paddle game](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame) and expanded RGB controls and effects.
![image](https://raw.githubusercontent.com/gourdo1/media/main/susuwatari.jpg)
-## Features:
+* Up-to-date [Changelog](https://github.com/gourdo1/gmmkpro-media/blob/main/changelog.md)
+* Latest [ANSI firmware](https://github.com/gourdo1/gmmkpro-media/raw/main/gmmk_pro_rev1_ansi_gourdo1.bin) download. (Flash with [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases))
+* Latest [ISO firmware](https://github.com/gourdo1/gmmkpro-media/raw/main/gmmk_pro_rev1_iso_gourdo1.bin) download. (Flash with [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases))
+* Printable Keyboard [Cheatsheet](https://github.com/gourdo1/gmmkpro-media/raw/main/GMMK_Pro_Cheatsheet.pdf)
+
+## Features
### Core Functionality
-* [VIA](https://www.caniusevia.com/) support enabled (added Mar 16, 2022)
+* Support for both [ANSI](https://keebnews.com/ansi-vs-iso/) and [ISO](https://keebnews.com/ansi-vs-iso/) keyboard layouts.
+* Quick & Easy Customization: Open a text editor and hit [FN]` (tilde on ANSI; the key left of '1' on ISO layouts) to view toggle-able settings.
+* [VIA](https://www.caniusevia.com/) support enabled.
+* AutoCorrection: Pascal Getreuer's AutoCorrect code incorporated with 400 word dictionary on words > 4 characters.
* Most [default Glorious shortcuts](https://cdn.shopify.com/s/files/1/0549/2681/files/GMMK_Pro_User_Guide.pdf) enabled
-* [N-key Rollover](https://en.wikipedia.org/wiki/Rollover_\(keyboard\)#n-key_rollover) (NKRO) -- toggled with FN+R
-* Gaming mode (FN + Win-key) locks out Win-key as well as double-tap Shift Capslock; Also RGB highlights WSAD and nearby gaming related keys
-* [Caps Word](https://getreuer.info/posts/keyboards/caps-word/index.html) enabled: To capitalize the next word only, press and release both left and right shift keys at the same time. (added Feb 25, 2022)
-* Multi-monitor app moving shortcuts: FN + [,] (square brackets) to move current app window to next monitor (added Apr 11, 2022)
-* Domain shortcuts: FN+.=".com", FN+O="outlook.com", FN+Y="yahoo.com", FN+H="hotmail.com", FN+G="gmail.com". (added Apr 7, 2022)
-* Capslock toggled by double tap of Left Shift key or FN + Capslock (RGB green highlighted)
-* Fn-Backslash for [Bootloader mode](https://github.com/qmk/qmk_firmware/blob/master/docs/newbs_flashing.md)
-* Home key on F13, Del key right of Backspace
-* Insert accessible via Shift-Backspace (so shift delete still works in Windows Explorer)
-* PrtScrn, Scroll Lock, Pause/Break are top right on the keyboard: Fn+F11, Fn+F12, Fn+F13
-* [Colemak](https://colemak.com/) key layout support (Layer accessible via Left Shift + turn Encoder clockwise until side LEDs light up purple)
-* Double tap ESC any time to revert to base layer (added Feb 26, 2022)
+* [N-key Rollover](https://en.wikipedia.org/wiki/Rollover_\(keyboard\)#n-key_rollover) (NKRO) -- toggled with [FN]R
+* 1000Hz polling rate with 5ms debounce time for quick response in games.
+* Mouse Keys! Don't want to move your hands off the keyboard or you didn't bring it with you? Use cursor keys to move the mouse.
+* Overlay numpad on 789-UIOP-JKL;-M,. & Space-bar mapped to Enter key for rapid number entry.
+* Gaming mode ([FN]Win-key) locks out Win-key and double-tap Shift Capslock; Also RGB highlights WSAD and nearby gaming keys.
+* Caps Word enabled: To capitalize the next word only, press and release left and right shift at the same time.
+* Multi-monitor app moving shortcuts: [FN] ],[ (square brackets) to move current app window to next monitor.
+* Capslock toggled by double tap of Left Shift key or FN + Capslock (RGB green highlighted).
+* Paddle game accessible via [FN]P. Hit [FN]P again or double tap [ESC] to exit.
+* Single-handed shortcut for Ctrl-Alt-Delete: [FN]/
+* Single-handed shortcut for WinKey-L (lock Windows): [FN]L
+* Domain shortcuts: [FN]. for .com, [FN]O for outlook.com, [FN]Y for yahoo.com, [FN]H for hotmail.com, [FN]G for gmail.com.
+* [Bootloader mode](https://github.com/qmk/qmk_firmware/blob/master/docs/newbs_flashing.md) accessible via [FN]Backslash for ANSI and FN(key next to Left Shift) for ISO
+* PrtScrn, Scroll Lock, Pause/Break are top right on the keyboard: [FN]F11, [FN]F12, [FN]F13
+* [Colemak](https://colemak.com/) key layout support (Accessible via Left Shift + turn Encoder clockwise until side LEDs light up purple)
+* Double tap ESC any time to revert to base layer.
+* RGB backlight effects expanded to include framebuffer effects and reactive keypress modes.
+* RGB backlight now remembers last color & effect settings after power down.
+
+### Quick & Easy Customization
+* Below features can be toggled by holding [FN] and pressing the number corresponding to that feature. Changes are saved to EEPROM for persistence.
+* Print current settings by opening a text editor and pressing [FN]~ (the key left of '1' on ISO layout keyboards)
+* Quick view current settings by holding [FN] and viewing RGB under number keys (green means ON, violet means OFF)
+
+#### Toggle-able Settings:
+ 1. CapsLock RGB - Highlight under alpha keys
+ 2. Numpad RGB - Highlight under numpad layer keys
+ 3. ESC key - Double tap ESC key to go to base layer
+ 4. Swap DEL and HOME - Default is DEL to the right of BKSPC & HOME is above BKSPC
+ 5. Capslock function - Toggle between double tap LShift for CapsLock with Numpad on CapsLock key (default) and standard CapsLock
+ 6. Encoder button - Default mutes volume; alternate plays/pauses media
+ 7. Insert function - Toggle between SHIFT-BKSPC and SHIFT-DEL
+ 8. Modded-Space override - Use standard Space in place of modded-Space functions
+ 9. AutoCorrect - Internal (English) AutoCorrect; default is enabled
+ 0. (ISO layouts only) CapsLock highlights extended alpha keys
### Numpad + Mouse Keys (Capslock key)
* Overlay numpad + [Mouse Keys](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_mouse_keys.md) are accessed through Capslock key hold (temp) or double press (locked) with RGB highlighting
+* Numpad uses Space-bar as Enter for rapid number entry.
* This layer disables much of the keyboard, except X/C/V for cut/copy/paste, WASD for cursor, Q/E for PgUp/PgDn, cursor keys become mouse keys, surrounding keys become mouse buttons and all number keys become numpad versions (so Alt char codes work regardless of which set you use)
-* Fn & N keys light up orange if system numlock is off (inverted status), indicating numpad keys will not deliver expected output (FN + N to toggle)
+* FN and N keys light up orange if system numlock is off (inverted status), indicating numpad keys will not deliver expected output ([FN]N to toggle)
* Double zero on comma key.
-* [Mouse Keys](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_mouse_keys.md) allow you to use the mouse without taking your hand off the keyboard. (added Mar 15, 2022)
+* [Mouse Keys](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_mouse_keys.md) allow you to use the mouse without taking your hand off the keyboard.
* Mouse controls are: Cursor keys = move mouse; RShift = button1, End = button2, RCtrl = button3, PgUp/PgDn = Scroll wheel
* Mouse Keys can also be accessed as a standalone layer by Left Shift-turning the Encoder until the cursor keys light up green
### Encoder Functionality
* Default knob turn changes volume; button press toggles mute
-* Exponential encoder - quick repeated volume up doubles increase; quick repeated volume down triples decrease (added Feb 17, 2022)
-* FN knob turn changes RGB idle timeout
+* Exponential encoder: quick repeated volume up doubles increase; quick repeated volume down triples decrease.
+* FN + knob turn changes RGB idle timeout
+* FN + knob push puts PC to Sleep
* holding Left Shift changes layers
* holding Right Shift navigates page up/down
* holding Left Ctrl navigates prev/next word
* holding Right Ctrl changes RGB hue/color
* holding Left Alt changes media prev/next track
-### Global RGB Controls
-
-* RGB backlight lighting effect: FN + up/down
-* RGB backlight effect speed: FN + left/right
-* RGB backlight hue cycle: FN + A/D
-* RGB backlight brightness: FN + W/S
-* RGB backlight saturation: FN + Q/E (added Feb 4, 2022)
-* RGB backlight night mode toggle: FN + Z (indicators still work)
-* RGB backlight timeout: FN + Encoder or "-" and "=" (default 15 minutes) (updated Apr 7, 2022)
- * indicators in FN layer using RGB in F-key and number rows to show the current timeout in minutes
-* RGB indicators on left side LEDs: Capslock (green), Scroll Lock (red), and Num Lock not set (orange)
-* FN + Z to turn off RGB backlighting; press again to toggle
-
-### Advanced Controls
-
-* FN + \ to get to bootloader mode
-* FN + [ESC] to clear EEPROM (then unplug and re-plug) (added Apr 11, 2022)
-* FN + R to toggle N-key Rollover (added Apr 11, 2022)
-
-Link to latest firmware binary: https://github.com/gourdo1/media/raw/main/gmmk_pro_ansi_gourdo1.bin
+### Paddle Game
-Link to cheatsheet: https://github.com/gourdo1/media/raw/main/GMMK_Pro_Cheatsheet.pdf
+* Based on [Tomas Guinan's excellent GMMK Pro paddle game](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame)
+* Paddle Game playable by pressing [FN]P (P lights up green in FN layer if game is enabled in firmware, otherwise it lights up red)
+* Use rotary encoder to control paddle
+* Contains 12 levels, indicated by blue LED on F-key row
+* Player has 4 lives, indicated by nav cluster
+* Deflect white balls while avoiding red ones
+* Use [FN]P, double tap ESC or otherwise change layer to quit game
+### Global RGB Controls
-## rules.mk Options
-
-STARTUP_NUMLOCK_ON = yes - turns on NUMLOCK by default
-
-ENCODER_DEFAULTACTIONS_ENABLE = yes - Enabled default encoder functions
-
-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 Numlock indicator, LED is on when numlock is off -- numlock interferes with numpad keys, so should generally be off when numpad layer is active.
+* RGB backlight lighting effect: [FN]up/down
+* RGB backlight effect speed: [FN]left/right
+* RGB backlight hue cycle: [FN]A/D
+* RGB backlight brightness: [FN]W/S
+* RGB backlight saturation: [FN]Q/E
+* RGB backlight night mode toggle: [FN]Z (indicators still work)
+* RGB backlight timeout: [FN]Encoder or "-" and "=" (default 15 minutes)
+ * F-key row indicator lights (cyan and blue) in FN layer display the current backlight timeout in minutes
+* [FN]Z to turn off RGB backlighting (indicator lights still work); press again to toggle
+* Left side RGB indicators in order from top: Scroll Lock (red), Numpad (blue), Capslock (green).
-COLEMAK_LAYER_ENABLE = yes - Enable optional 5th layer for COLEMAK layout. Use Shift + encoder to enter 5th layer.
+### Advanced Controls
+* [FN]\ or [FN]B to get to bootloader mode (use key next to Left Shift on ISO)
+* [FN][ESC] to clear EEPROM
+* [FN]R to toggle N-key Rollover
+* [FN]N to toggle system numlock
+* [FN]/ is single-handed shortcut to Ctrl-Alt-Delete
+* [FN]L is single-handed shortcut to Win-L (lock Windows)
+* [FN][Encoder press] to sleep Windows PC
-## Layer Diagrams
+## Layer Diagrams (ANSI)
### Base layer
-![image](https://raw.githubusercontent.com/gourdo1/media/main/base.png)
+![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/base.png)
-### Fn Layer
-![image](https://raw.githubusercontent.com/gourdo1/media/main/fn1.png)
+### FN Layer
+![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/fn1.png)
### Layer 2 (Numpad)
-![image](https://raw.githubusercontent.com/gourdo1/media/main/numpad.png)
+![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/numpad.png)
### COLEMAK layer
![image](https://user-images.githubusercontent.com/71780717/131235050-980d2f54-2d23-4ae8-a83f-9fcdbe60d6cb.png)
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rgb_matrix_map.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rgb_matrix_map.h
index 38da50754b..f1609a4bb3 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rgb_matrix_map.h
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rgb_matrix_map.h
@@ -1,5 +1,5 @@
/* Copyright 2021 Jonavin Eng @Jonavin
- Copyright 2022 gourdo1 <jcblake@outlook.com>
+ Copyright 2022 gourdo1 <gourdo1@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
@@ -16,6 +16,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifdef RGB_MATRIX_ENABLE
+
+//Define variables for Game
+bool fn_active = false;
+RGB rgb_value;
+
// Custom GMMK Pro-specific RGB color customizations (defaults found in quantum/color.h)
#define RGB_GODSPEED 0x00, 0xE4, 0xFF // color for matching keycaps
#define RGB_NAUTILUS 0x00, 0xA4, 0xA9 // Nautilus Font colors
@@ -194,7 +199,7 @@ const uint8_t LED_LIST_NUMROW[] = {
};
const uint8_t LED_LIST_LETTERS[] = {
- LED_1,
+/* LED_1,
LED_2,
LED_3,
LED_4,
@@ -203,7 +208,7 @@ const uint8_t LED_LIST_LETTERS[] = {
LED_7,
LED_8,
LED_9,
- LED_0,
+ LED_0, */
LED_Q,
LED_W,
LED_E,
@@ -284,4 +289,122 @@ const uint8_t LED_SIDE_RIGHT[] = {
LED_R8
};
+#ifdef GAME_ENABLE
+// Game LED rules
+const uint8_t GAME_LIVES[] = {
+ LED_DEL,
+ LED_PGUP,
+ LED_PGDN,
+ LED_END
+};
+const uint8_t GAME_PADDLE[] = {
+ LED_Z,
+ LED_X,
+ LED_C,
+ LED_V,
+ LED_B,
+ LED_N,
+ LED_M,
+ LED_COMM,
+ LED_DOT,
+ LED_SLSH
+};
+const uint8_t GAME_SMILE1[] = {
+ LED_A,
+ LED_S,
+ LED_D,
+ LED_F,
+ LED_G,
+ LED_H,
+ LED_J,
+ LED_K,
+ LED_L,
+ LED_SCLN,
+ LED_QUOT
+};
+const uint8_t GAME_SMILE2[] = {
+ LED_2,
+ LED_3,
+ LED_4,
+ LED_5,
+ LED_6,
+ LED_7,
+ LED_8,
+ LED_9,
+ LED_0,
+ LED_MINS,
+ LED_EQL
+};
+const uint8_t GAME_R4[] = {
+ LED_X,
+ LED_C,
+ LED_V,
+ LED_B,
+ LED_N,
+ LED_M,
+ LED_COMM,
+ LED_DOT
+};
+const uint8_t GAME_R3[] = {
+ LED_S,
+ LED_D,
+ LED_F,
+ LED_G,
+ LED_H,
+ LED_J,
+ LED_K,
+ LED_L,
+ LED_SCLN
+};
+const uint8_t GAME_R2[] = {
+ LED_W,
+ LED_E,
+ LED_R,
+ LED_T,
+ LED_Y,
+ LED_U,
+ LED_I,
+ LED_O,
+ LED_P,
+ LED_LBRC
+};
+const uint8_t GAME_R1[] = {
+ LED_2,
+ LED_3,
+ LED_4,
+ LED_5,
+ LED_6,
+ LED_7,
+ LED_8,
+ LED_9,
+ LED_0,
+ LED_MINS,
+ LED_EQL
+};
+const uint8_t GAME_R0[] = {
+ LED_F1,
+ LED_F2,
+ LED_F3,
+ LED_F4,
+ LED_F5,
+ LED_F6,
+ LED_F7,
+ LED_F8,
+ LED_F9,
+ LED_F10,
+ LED_F11,
+ LED_F12
+};
+const uint8_t LED_GAME_OVER[] = {
+ LED_5,
+ LED_8,
+ LED_F,
+ LED_G,
+ LED_H,
+ LED_J,
+ LED_C,
+ LED_M
+};
+#endif //GAME_ENABLE
+
#endif \ No newline at end of file
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rules.mk b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rules.mk
index b236d9132c..3a6786af68 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rules.mk
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/gourdo1/rules.mk
@@ -1,18 +1,18 @@
-SRC += caps_word.c
-
LTO_ENABLE = yes # link time optimization -- achieves a smaller compiled size
CONSOLE_ENABLE = no
COMMAND_ENABLE = no
-MOUSEKEY_ENABLE = yes
-
-VIA_ENABLE = yes
-TAP_DANCE_ENABLE = yes
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+VIA_ENABLE = yes
-TD_LSFT_CAPSLOCK_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+TAP_DANCE_ENABLE = no
+CAPS_WORD_ENABLE = yes # Enable built-in Caps Word functionality
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
+GAME_ENABLE ?= yes # Enable Paddle Game / set to no to disable
+ifeq ($(strip $(GAME_ENABLE)), yes)
+ OPT_DEFS += -DGAME_ENABLE
+endif
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/hachetman/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/hachetman/keymap.c
index 19694d54c1..3be0e5e31b 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/hachetman/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/hachetman/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 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
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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.
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
_______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/jackkenney/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/jackkenney/keymap.c
index cfca7960ca..98354b4654 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/jackkenney/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/jackkenney/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 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
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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.
@@ -45,10 +45,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_PSCR,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
KC_INS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, RESET, KC_RGUI, _______, _______, _______, _______, _______
+ _______, _______, _______, QK_BOOT, KC_RGUI, _______, _______, _______, _______, _______
),
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/keymap.c
index 0d318885f4..47490a0617 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin/keymap.c
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_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, _______, _______, _______, RESET, KC_HOME,
+ _______, _______, RGB_VAI, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, QK_BOOT, KC_HOME,
KC_CAPS, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
_______, RGB_NITE,RGB_HUI, _______, _______, _______, KC_NLCK, _______, RGB_TOD, RGB_TOI, _______, _______, RGB_MOD, _______,
_______, KC_WINLCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/lalitmaganti/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/lalitmaganti/keymap.c
index 7bedf05987..c87532990f 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/lalitmaganti/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/lalitmaganti/keymap.c
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/macos/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/macos/keymap.c
index 1f8c47306a..8175cf68c8 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/macos/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/macos/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Ct_L Opt_L Cmd_L SPACE Cmd_R Opt_R FN 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
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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.
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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,
LED_TLDE, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL, _______, KC_PSCR,
- _______, RGB_HUI, RGB_VAI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, RGB_HUI, RGB_VAI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, RGB_HUD, RGB_VAD, RGB_SAD, TG(2), _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/keymap.c
index f96be6ffe9..020322085b 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/mattgauf/keymap.c
@@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
- [_DFUMODE] = LAYOUT(RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MG_F19, DEBUG,
+ [_DFUMODE] = LAYOUT(QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MG_F19, DEBUG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/mike1808/mike1808.h b/keyboards/gmmk/pro/rev1/ansi/keymaps/mike1808/mike1808.h
index bc010108fb..30b1b389bc 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/mike1808/mike1808.h
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/mike1808/mike1808.h
@@ -55,7 +55,7 @@ enum git_macros {
G_CONF, // git config --global
G_ADD, // git add
G_DIFF, // git diff
- G_RESET, // git reset
+ G_QK_BOOT, // git reset
G_REBAS, // git rebase
G_BRANH, // git branch
G_CHECK, // git checkout
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/moults31/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/moults31/keymap.c
index 90ac428c74..759c4034c0 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/moults31/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/moults31/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 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
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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.
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, _______, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, _______, _______, QK_BOOT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_PGDN, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame/keymap.c
index 5c702b1686..e59db7b984 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame/keymap.c
@@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN1] = LAYOUT(
KC_SLEP, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_INS, _______,
RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_HUI, _______, RGB_M_P,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_MO2), RGB_SAD, RGB_SAI, RESET, RGB_M_B,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_MO2), RGB_SAD, RGB_SAI, QK_BOOT, RGB_M_B,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_MOD, _______, RGB_M_R,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_M_SW,
_______, KC_WINLK, _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/stickandgum/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/stickandgum/keymap.c
index 762fe00df2..e4569ac3ad 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/stickandgum/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/stickandgum/keymap.c
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT(
_______, KC_CALC, KC_MYCM, KC_MSEL, KC_MAIL, KC_WHOM, _______, _______, _______, _______, _______, KC_WAKE, KC_SLEP, KC_PAUS, _______,
LED_TILDE, LED_1, LED_2, LED_3, LED_4, LED_5, LED_6, LED_7, LED_8, LED_9, LED_0, LED_MINS, LED_EQL, KC_INS, KC_SLCK,
- _______, RGB_SAI, RGB_VAI, RGB_HUI, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_BRIU,
+ _______, RGB_SAI, RGB_VAI, RGB_HUI, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, KC_BRIU,
_______, RGB_RMOD, RGB_VAD, RGB_MOD, RGB_SPI, _______, _______, _______, _______, QMKBEST, _______, _______, _______, KC_BRID,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_MPLY, KC_PWR,
_______, _______, _______, _______, KC_RALT, _______, KC_APP, KC_MPRV, KC_MSTP, KC_MNXT
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/wholesomeducky/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/wholesomeducky/keymap.c
index fded532562..fd64902108 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/wholesomeducky/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/wholesomeducky/keymap.c
@@ -40,7 +40,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_INS,
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_HOME,
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_END,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, RESET, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, QK_BOOT, 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_END
),
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/willwm/keymap.c b/keyboards/gmmk/pro/rev1/ansi/keymaps/willwm/keymap.c
index a32fef1041..2ee79eae79 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/willwm/keymap.c
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/willwm/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR,
- KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______,
_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
diff --git a/keyboards/gmmk/pro/rev1/ansi/keymaps/willwm/keymap.json b/keyboards/gmmk/pro/rev1/ansi/keymaps/willwm/keymap.json
index d2325d2c13..bdb9e95264 100644
--- a/keyboards/gmmk/pro/rev1/ansi/keymaps/willwm/keymap.json
+++ b/keyboards/gmmk/pro/rev1/ansi/keymaps/willwm/keymap.json
@@ -135,7 +135,7 @@
"KC_NO",
"KC_NO",
"KC_NO",
- "RESET",
+ "QK_BOOT",
"KC_NO",
"KC_TRNS",
"KC_NO",
diff --git a/keyboards/gmmk/pro/rev1/iso/info.json b/keyboards/gmmk/pro/rev1/iso/info.json
index 32fac89336..3638e9d684 100644
--- a/keyboards/gmmk/pro/rev1/iso/info.json
+++ b/keyboards/gmmk/pro/rev1/iso/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "GMMK Pro (ISO)",
+ "keyboard_name": "GMMK Pro ISO",
+ "manufacturer": "Glorious",
"url": "https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation",
"maintainer": "GloriousThrall",
+ "usb": {
+ "vid": "0x320F",
+ "pid": "0x5044",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/chofstede/keymap.c b/keyboards/gmmk/pro/rev1/iso/keymaps/chofstede/keymap.c
index 84fbcf37ff..b28809fdf6 100644
--- a/keyboards/gmmk/pro/rev1/iso/keymaps/chofstede/keymap.c
+++ b/keyboards/gmmk/pro/rev1/iso/keymaps/chofstede/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 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
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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.
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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_PSCR, _______,
- _______, RGB_TOG, RGB_M_P, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, RGB_TOG, RGB_M_P, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, _______, _______,
_______, _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/falkecarlsen/keymap.c b/keyboards/gmmk/pro/rev1/iso/keymaps/falkecarlsen/keymap.c
new file mode 100644
index 0000000000..694fd80e19
--- /dev/null
+++ b/keyboards/gmmk/pro/rev1/iso/keymaps/falkecarlsen/keymap.c
@@ -0,0 +1,72 @@
+/* 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] = {
+
+// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt 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
+
+
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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+backspace. 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_MPLY,
+ KC_GRV, KC_1, KC_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,
+ 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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT(
+ _______, KC_BRID, KC_BRIU, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MSTP, KC_MNXT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_VAD, RGB_TOG, RGB_VAI, 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/rev1/iso/keymaps/falkecarlsen/readme.md b/keyboards/gmmk/pro/rev1/iso/keymaps/falkecarlsen/readme.md
new file mode 100644
index 0000000000..4239e0dcb8
--- /dev/null
+++ b/keyboards/gmmk/pro/rev1/iso/keymaps/falkecarlsen/readme.md
@@ -0,0 +1,8 @@
+# Falke Carlsen keymap for GMMK PRO ISO
+Based on the default keymap, inheriting rotary encoder and LED configs without modification.
+
+## Changes:
+- Fixes layer 1 of top-row to correspond to 'Keychron ISO Q1 & K2 Dye-Sub PBT Nordic' printed legend multimedia keys.
+- Adds early 2010s Ducky layer 1 mouse-emulation to WASD with left+right click and scroll in the 2x4 cluster.
+- Remaps default keymaps LED-handling to 2nd-row due to addition of mouse-emulation.
+- Swap layer 0 rotary encoder click to play/pause, and layer 1 click to next.
diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/config.h b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/config.h
new file mode 100644
index 0000000000..a37fb08d31
--- /dev/null
+++ b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/config.h
@@ -0,0 +1,146 @@
+/* Copyright 2021 Jonavin Eng @Jonavin
+ Copyright 2022 gourdo1 <gourdo1@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 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+// Force n-key rollover
+#define FORCE_NKRO
+
+// Set TT to two taps
+#define TAPPING_TOGGLE 2
+
+#ifdef COMMAND_ENABLE
+#define IS_COMMAND() (get_mods() == MOD_MASK_CTRL) //debug commands accessed by holding down both CTRLs: https://github.com/qmk/qmk_firmware/blob/master/docs/feature_command.md
+#endif
+
+// Caps Word configuration
+#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD
+#define CAPS_WORD_IDLE_TIMEOUT 10000 // Automatically turn off after x milliseconds of idle. 0 to never timeout.
+
+// 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 TAPPING_TERM 300
+#define TAPPING_TERM_PER_KEY
+
+#ifdef RGB_MATRIX_ENABLE
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED
+ #define RGB_MATRIX_KEYPRESSES // Enables REACTIVE & SPLASH modes
+ #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Enables Heatmap, Rain
+
+ // RGB step values
+ #define RGBLIGHT_HUE_STEP 32 // The number of steps to cycle through the hue by (default 10)
+ #define RGBLIGHT_SAT_STEP 17 // The number of steps to increment the saturation by (default 17)
+ #define RGBLIGHT_VAL_STEP 17 // The number of steps to increment the brightness by (default 17)
+
+ // Startup values, when none have been set
+ #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_REACTIVE // Sets the default effect mode, if none has been set (was RGB_MATRIX_SOLID_COLOR)
+ #define RGB_MATRIX_STARTUP_HUE 24 // 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 127 // 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
+
+ // Uncomment any #undef line below to turn OFF any default enabled RGB background effect (enabled in keyboards/gmmk/pro/config.h).
+ #undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Solid color (seems redundant; seems same as RGB_MATRIX_SOLID_COLOR?)
+ //#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static, horizontal rainbow
+ //#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static, vertical Rainbow
+ //#undef ENABLE_RGB_MATRIX_BREATHING // Breathing animation using selected HSV color
+ #undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right (with white)
+ //#undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right (with black)
+ #undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades sat (with white)
+ //#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness (with black)
+ #undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades brightness (with white)
+ //#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness (with black)
+ //#undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard cycling through rainbow
+ //#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient moving left to right
+ //#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+ #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradient chevron scrolling left to right (too similar to cycle left right)
+ //#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Rainbow circles coming to center.
+ #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Two Rainbow circles coming to 1/3 and 2/3 points. (seems mostly redundant with above)
+ #undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Built-in cycling pinwheel (seems redundant with below)
+ //#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+ #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Spinning rainbow (more distracting transitions)
+ //#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Spinning rainbow (smoother)
+ #undef ENABLE_RGB_MATRIX_DUAL_BEACON // Two rainbows spinning around keyboard (distracting, busy)
+ #undef ENABLE_RGB_MATRIX_RAINDROPS // Sustained raindrops of blue, green, yellow (confusing to use with RGB layers)
+ //#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Sustained raindrops of blue, purple, pink, green (confusing to use with RGB layers, but slightly better than above)
+ #undef ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight amount at the same time, then shifts back (very subtle)
+ #undef ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left (very subtle)
+ #undef ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right (very subtle)
+ //#undef ENABLE_RGB_MATRIX_PIXEL_RAIN // Non-sustained raindrops of pastel colors
+ #undef ENABLE_RGB_MATRIX_PIXEL_FLOW // More active version of pixel rain with quick cycling (unusable, very distracting)
+ #undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL // Same as Pixel Flow but with current HSV only (somewhat distracting)
+ //Only enabled if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+ //#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // Fading heatmap that follows keystrokes (has buggy side LEDs that glow red)
+ //#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // The Matrix (has buggy side LEDs that glow red)
+ //Only enabled if RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+ //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Key hits shown in current hue - all other keys black
+ //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Keyboard lights up in chosen hue, key hits shown in complementary hue (try this as default?)
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse around a single key hit then fades value out (Single key)
+ //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // same as above but more intense (Multi-key)
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Column and Row single current color fade (Single key)
+ //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Column and Row single color fade. (Multi-key)
+ #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of key hit then fades (Single key)
+ //#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multi-key hit then fades
+ //#undef ENABLE_RGB_MATRIX_SPLASH // Full rainbow pulses from key hit. All else black.
+ #undef ENABLE_RGB_MATRIX_MULTISPLASH // Full rainbow pulses from multi-keys. All else black. (distracting on multiple keystroke hits)
+ #undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Single color pulses from key hit. All else black. (distracting on multiple key hits)
+ //#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Single color pulses from muli-keys. All else black.
+#endif //RGB_MATRIX_ENABLE
+
+// Add a layer for colemak -- set "COLEMAK_LAYER_ENABLE = yes" in rules.mk to enable
+#if defined COLEMAK_LAYER_ENABLE
+ #ifdef GAME_ENABLE
+ #define DYNAMIC_KEYMAP_LAYER_COUNT 6
+ #define _COLEMAK 5
+ #else
+ #define DYNAMIC_KEYMAP_LAYER_COUNT 5
+ #define _COLEMAK 4
+ #endif //GAME_ENABLE
+#endif // COLEMAK_LAYER_ENABLE
+
+/*
+// Mouse Keys Accelerated Mode Definitions
+#define MOUSEKEY_DELAY 3 // Delay between pressing a movement key and cursor movement (default: 10)
+#define MOUSEKEY_INTERVAL 13 // Time between cursor movements in milliseconds (default: 20); Try setting to 1000/monitor refresh for smooth movement.
+#define MOUSEKEY_MOVE_DELTA 8 // Step size (default: 8)
+#define MOUSEKEY_MAX_SPEED 9 // Maximum cursor speed at which acceleration stops (default: 10)
+#define MOUSEKEY_TIME_TO_MAX 150 // Time until maximum cursor speed is reached (default: 30)
+#define MOUSEKEY_WHEEL_DELAY 0 // Delay between pressing a wheel key and wheel movement (default: 10)
+#define MOUSEKEY_WHEEL_INTERVAL 80 // Time between wheel movements (default: 80)
+#define MOUSEKEY_WHEEL_MAX_SPEED 8 // Maximum number of scroll steps per scroll action (default: 8)
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 40 // Time until maximum scroll speed is reached (default: 40)
+*/
+
+// Mouse Keys Kinetic Mode Definitions
+#define MK_KINETIC_SPEED // Enable Kinetic mode: Uses a quadratic curve on cursor speed to allow precise movements at the beginning and increases speed thereafter.
+#define MOUSEKEY_DELAY 3 // Delay between pressing a movement key and cursor movement (default: 10)
+#define MOUSEKEY_INTERVAL 13 // Time between cursor movements in milliseconds (default: 20); Try setting to 1000/monitor refresh for smooth movement.
+#define MOUSEKEY_MOVE_DELTA 5 // Step size for accelerating from initial to base speed (default: 8)
+#define MOUSEKEY_MOVE_MAX 50 // use instead of BASE SPEED to limit speed in Kinetic mode
+#define MOUSEKEY_INITIAL_SPEED 100 // Initial speed of the cursor in pixels per second (default: 100)
+//#define MOUSEKEY_BASE_SPEED 800 // (broken in QMK 0.16.0) Maximum cursor speed at which acceleration stops (default: 1000)
+#define MOUSEKEY_DECELERATED_SPEED 400 // Decelerated cursor speed (default: 400)
+#define MOUSEKEY_ACCELERATED_SPEED 2000 // Accelerated cursor speed (default: 3000)
+#define MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 16 // Initial number of movements of the mouse wheel (default: 16)
+#define MOUSEKEY_WHEEL_BASE_MOVEMENTS 32 // Maximum number of movements at which acceleration stops (default: 32)
+#define MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48 // Accelerated wheel movements (default: 48)
+#define MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8 // Decelerated wheel movements (default: 8)
diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/keymap.c b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/keymap.c
new file mode 100644
index 0000000000..30e8fc5f44
--- /dev/null
+++ b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/keymap.c
@@ -0,0 +1,723 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
+ Copyright 2021 Jonavin Eng @Jonavin
+ Copyright 2022 RustyBrakes (ISO conversion)
+ Copyright 2022 gourdo1 <gourdo1@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 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+// Note: Many advanced functions referenced in this file are defined in /users/gourdo1/gourdo1.c
+
+#include QMK_KEYBOARD_H
+
+#include "rgb_matrix_map.h"
+
+#include "gourdo1.h"
+
+#include "paddlegame.h"
+
+#include <math.h>
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Base Layout
+ *
+ * ,-------------------------------------------------------------------------------------------------------------.
+ * | Esc || F1 | F2 | F3 | F4 || F5 | F6 | F7 | F8 || F9 | F10 | F11 | F12 || Home || Mute |
+ * |=============================================================================================================|
+ * | ISO | 1 ! | 2 @ | 3 # | 4 $ | 5 % | 6 ^ | 7 & | 8 * | 9 ( | 0 ) | - _ | = + | Backspc || Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+----------++------|
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ } | ] } | || PgUp |
+ * |---------+------+------+------+------+------+------+------+------+------+------+------+------+ ++------|
+ * | Capslock | A | S | D | F | G | H | J | K | L | ; : | ' " | ISO| Enter || PgDn |
+ * |------------+------+------+------+-----+------+------+------+------+------+------+------|----+========+------|
+ * | LShift | ISO | Z | X | C | V | B | N | M | , < | . > | / ? | RShift || Up || End |
+ * |--------------+------+------+------+------+------+------+------+------+------+------+--+=====++------++======|
+ * | Ctrl | Win | LAlt | Space | RAlt | Fn | Ctrl || Left | Down | Rght |
+ * `------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_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, LEFTOFENC, ENCFUNC,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, BELOWENC,
+ KC_TAB, KC_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,
+ CAPSNUM, 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(_FN1),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /* FN1 Layout
+ *
+ * ,-------------------------------------------------------------------------------------------------------------.
+ * | Esc ||MyCmp |WbHom | Calc |MdSel ||MdPrv |MdNxt |MdPly |MdStp ||VolDn |VolUp |PrScr |ScrLk ||Pause ||Sleep |
+ * |=============================================================================================================|
+ * | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |RGBTOD|RGBTOI| ________ ||RGBTOG|
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+----------++------|
+ * | ______ |RGBSAD|RGBVAI|RGBSAI| NKRO | ____ |YAHOO | ____ | ____ |OUTLK |Pause | ____ | ____ | || Home |
+ * |---------+------+------+------+------+------+------+------+------+------+------+------+------+ ++------|
+ * | Capslock |RGBHUD|RGBVAD|RGBHUI| ____|GMAIL |HTMAIL| ____ | ____ | ____ | ____ | ____ | ___ | ____ || End |
+ * |------------+------+------+------+-----+------+------+------+------+------+------+------|----+========+------|
+ * | ____ |QK_BOOT|RGBNIT| ____ | ____ | ____ | ____ |NumLk | ____ | ____ |DOTCOM| CAD | ______ ||RGBMOD|| ____ |
+ * |--------------+------+------+------+------+------+------+------+------+------+------+--+=====++------++======|
+ * | ____ | WinKyLk | ____ | _____ | ____ | ____ | ____ ||RGBSPD|RGBRMD|RGBSPI|
+ * `------------------------------------------------------------------------------------------------------------'
+ */
+
+ #ifdef GAME_ENABLE
+ [_FN1] = LAYOUT(
+ EE_CLR, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_VOLD, KC_VOLU, KC_PSCR, KC_SLCK, KC_PAUS, KC_SLEP,
+ PRNCONF, TG_CAPS, TG_PAD, TG_ESC, TG_DEL, TG_TDCAP,TG_ENC, TG_INS,TG_SPCMOD,TG_AUTOCR,TG_ENGCAP,RGB_TOD,RGB_TOI, _______, RGB_TOG,
+ _______, RGB_SAD, RGB_VAI, RGB_SAI, NK_TOGG, _______, YAHOO, _______, _______, OUTLOOK, TG(_GAME),SWAP_L, SWAP_R, KC_HOME,
+ KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, _______, GMAIL, HOTMAIL, _______, _______, LOCKPC, _______, _______, _______, _______, KC_END,
+ _______, QK_BOOT, RGB_NITE,_______, _______, _______, QK_BOOT, KC_NLCK, _______, _______, DOTCOM, KC_CAD, _______, RGB_MOD, _______,
+ _______, WINLOCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
+ ),
+
+ [_GAME] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ #else
+ [_FN1] = LAYOUT(
+ EE_CLR, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_VOLD, KC_VOLU, KC_PSCR, KC_SLCK, KC_PAUS, KC_SLEP,
+ PRNCONF, TG_CAPS, TG_PAD, TG_ESC, TG_DEL, TG_TDCAP,TG_ENC, TG_INS,TG_SPCMOD,TG_AUTOCR,TG_ENGCAP,RGB_TOD,RGB_TOI, _______, RGB_TOG,
+ _______, RGB_SAD, RGB_VAI, RGB_SAI, NK_TOGG, _______, YAHOO, _______, _______, OUTLOOK, KC_PAUS, SWAP_L, SWAP_R, KC_HOME,
+ KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, _______, GMAIL, HOTMAIL, _______, _______, LOCKPC, _______, _______, _______, _______, KC_END,
+ _______, QK_BOOT, RGB_NITE,_______, _______, _______, QK_BOOT, KC_NLCK, _______, _______, DOTCOM, KC_CAD, _______, RGB_MOD, _______,
+ _______, WINLOCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
+ ),
+ #endif //GAME_ENABLE
+
+ /* _NUMPADMOUSE Layout
+ * Note: A symbol preceded by "P" is a Numpad-encoded version of the key -- any app that differentiates will recognize the char as coming from a physical numpad.
+ * ,-------------------------------------------------------------------------------------------------------------.
+ * | ____ || ____ | ____ | ____ | ____ || ____ | ____ | ____ | ____ || ____ | ____ | ____ | ____ || ____ || ____ |
+ * |=============================================================================================================|
+ * | ____ | P1 | P2 | P3 | P4 | P5 | P6 | P7 | P8 | P9 | P0 | P- | P+ | ________ || ____ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------+------+----------++------|
+ * | ______ | PGUP | Up | PGDN | None | None | None | P4 | P5 | P6 | P+ | ____ | ____ | || WhUp |
+ * |---------+------+------+------+------+------+------+------+------+------+------+------+------+ ++------|
+ * | ________ | Left | Down | Rght | None| None | None | P1 | P2 | P3 | P* | ___ | ___ |P-Enter|| WhDn |
+ * |------------+------+------+------+-----+------+------+------+------+------+------+------|----+========+------|
+ * | __________ | None | ____ | ____ | ____ | None | None | 0 | 00 | P. | P/ | MBt1 ||MS_UP || MBt2 |
+ * |--------------+------+------+------+------+------+------+------+------+------+------+--+=====++------++======|
+ * | ____ | ____ | ____ | _____ | ____ | ____ | MBt3 ||MS_LT |MS_DN |MS_RT |
+ * `------------------------------------------------------------------------------------------------------------'
+ */
+
+ [_NUMPADMOUSE] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_P1, KC_P2, KC_P3, KC_P4, KC_P5, KC_P6, KC_P7, KC_P8, KC_P9, KC_P0, KC_PMNS, KC_PPLS, _______, _______,
+ _______, KC_PGUP, KC_UP, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS, _______, _______, KC_WH_U,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_PAST, _______, _______, KC_PENT, KC_WH_D,
+ _______, _______, KC_NO, _______, _______, _______, _______, _______, KC_P0, KC_00, KC_PDOT, KC_PSLS, KC_BTN1, KC_MS_U, KC_BTN2,
+ _______, _______, _______, KC_PENT, _______, _______, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R
+ ),
+
+ [_MOUSEKEY] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_D,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2,
+ _______, _______, _______, _______, _______, _______, KC_BTN3, KC_MS_L, KC_MS_D, KC_MS_R
+ ),
+
+ #ifdef COLEMAK_LAYER_ENABLE
+ [_COLEMAK] = 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_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_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LBRC, KC_RBRC, KC_PGUP,
+ _______, 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_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_SPC, KC_RALT, _______, 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;
+ #ifdef GAME_ENABLE
+ case _GAME:
+ // Game: Paddle movement
+ if (damage_count == 0) {
+ if (clockwise) {
+ if (paddle_pos_full < 15) ++paddle_pos_full;
+ } else {
+ if (paddle_pos_full > 0) --paddle_pos_full;
+ }
+ }
+ break;
+ #endif //GAME_ENABLE
+ default:
+ encoder_action_volume(clockwise); // Otherwise it just changes volume
+ break;
+ }
+ }
+ //return true; //set to return false to counteract enabled encoder in pro.c
+ return false;
+}
+#endif // ENCODER_ENABLE && !ENCODER_DEFAULTACTIONS_ENABLE
+
+#ifdef RGB_MATRIX_ENABLE
+
+// Game logic
+#ifdef GAME_ENABLE
+void init_ball(uint8_t i) {
+ i &= 1;
+ ball[i].on = true;
+ ball[i].up = false;
+ ball[i].y = 0;
+ ball[i].x = rand() % 16;
+
+ // Set initial ball state
+ if (ball[i].x < 8) {
+ ball[i].left = false;
+ } else {
+ ball[i].x -= 4;
+ ball[i].left = true;
+ }
+
+ // 1/4 chance of being an enemy ball after level 6
+ if (level_number > 3) {
+ ball[i].enemy = ((rand() % 4) == 0);
+ } else {
+ ball[i].enemy = false;
+ }
+}
+
+void hurt_paddle(void) {
+ if (paddle_lives > 0) {
+ --paddle_lives;
+ }
+ damage_timer = timer_read();
+ damage_count = 10;
+
+ // Reset board
+ init_ball(0);
+ ball[1].on = false;
+}
+#endif //GAME_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);
+
+ // Scroll Lock RGB setup
+ if (IS_HOST_LED_ON(USB_LED_SCROLL_LOCK)) {
+ rgb_matrix_set_color(LED_L3, RGB_RED);
+ rgb_matrix_set_color(LED_L4, RGB_RED);
+ rgb_matrix_set_color(LED_TAB, RGB_RED);
+ rgb_matrix_set_color(LED_F12, RGB_RED);
+ }
+
+/*
+ // System NumLock warning indicator RGB setup
+ #ifdef INVERT_NUMLOCK_INDICATOR
+ if (!IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // on if NUM lock is OFF to bring attention to overlay numpad not functional when enabled
+ rgb_matrix_set_color(LED_GRV, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_L1, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_L2, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_N, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_FN, RGB_ORANGE2);
+ }
+ #else
+ if (IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // Normal, on if NUM lock is ON
+ rgb_matrix_set_color(LED_GRV, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_L1, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_L2, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_N, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_FN, RGB_ORANGE2);
+ }
+ #endif // INVERT_NUMLOCK_INDICATOR
+*/
+
+ // CapsLock RGB setup
+ if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
+ if (user_config.rgb_hilite_caps) {
+ if (user_config.rgb_english_caps) {
+ for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_LETTERS); i++) {
+ rgb_matrix_set_color(LED_LIST_LETTERS[i], RGB_CHARTREUSE);
+ }
+ }
+ else {
+ for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_LETTERS_DE); i++) {
+ rgb_matrix_set_color(LED_LIST_LETTERS_DE[i], RGB_CHARTREUSE);
+ }
+ }
+ rgb_matrix_set_color(LED_L7, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_L8, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_LSFT, RGB_CHARTREUSE);
+ }
+ else {
+ rgb_matrix_set_color(LED_L7, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_L8, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_LSFT, RGB_CHARTREUSE);
+ }
+ }
+
+ // Winkey disabled (gaming) mode RGB setup
+ if (keymap_config.no_gui) {
+ rgb_matrix_set_color(LED_LWIN, RGB_RED); //light up Winkey red when disabled
+ rgb_matrix_set_color(LED_W, RGB_CHARTREUSE); //light up gaming keys with WSAD higlighted
+ rgb_matrix_set_color(LED_S, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_A, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_D, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_Q, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_E, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_R, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_TAB, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_F, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_Z, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_X, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_C, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_V, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_SPC, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_LCTL, RGB_ORANGE2);
+ rgb_matrix_set_color(LED_LSFT, RGB_ORANGE2);
+ }
+
+ // Fn selector mode RGB setup
+ 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_RED); //FN key
+
+ //NEW RGB LIGHTING TO RING KEYBOARD ON FN LAYER ACTIVATION:
+ for (uint8_t j = 0; j < ARRAYSIZE(LED_LIST_FUNCROW); j++) {
+ rgb_matrix_set_color(LED_LIST_FUNCROW[j], RGB_RED);
+ }
+ rgb_matrix_set_color(LED_LCTL, RGB_RED);
+ rgb_matrix_set_color(LED_LALT, RGB_RED);
+ rgb_matrix_set_color(LED_SPC, RGB_RED);
+ rgb_matrix_set_color(LED_LWIN, RGB_RED);
+ //rgb_matrix_set_color(LED_RALT, RGB_RED);
+ rgb_matrix_set_color(LED_FN, RGB_OFFBLUE);
+ //rgb_matrix_set_color(LED_RCTL, RGB_RED);
+ rgb_matrix_set_color(LED_BSLS, RGB_RED);
+ rgb_matrix_set_color(LED_L1, RGB_RED);
+ rgb_matrix_set_color(LED_L2, RGB_RED);
+ rgb_matrix_set_color(LED_L3, RGB_RED);
+ rgb_matrix_set_color(LED_L4, RGB_RED);
+ rgb_matrix_set_color(LED_L5, RGB_RED);
+ rgb_matrix_set_color(LED_L6, RGB_RED);
+ rgb_matrix_set_color(LED_L7, RGB_RED);
+ rgb_matrix_set_color(LED_L8, RGB_RED);
+ rgb_matrix_set_color(LED_DOWN, RGB_RED);
+ rgb_matrix_set_color(LED_LEFT, RGB_RED);
+ rgb_matrix_set_color(LED_RIGHT, RGB_RED);
+ rgb_matrix_set_color(LED_R1, RGB_RED);
+ 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_R5, RGB_RED);
+ rgb_matrix_set_color(LED_R6, RGB_RED);
+ rgb_matrix_set_color(LED_R7, RGB_RED);
+ rgb_matrix_set_color(LED_R8, RGB_RED);
+ rgb_matrix_set_color(LED_MINS, RGB_OFFBLUE);
+ rgb_matrix_set_color(LED_EQL, RGB_OFFBLUE);
+
+ // Indicator for paddle game enabled in build
+ #ifdef GAME_ENABLE
+ rgb_matrix_set_color(LED_P, RGB_CHARTREUSE);
+ #else
+ rgb_matrix_set_color(LED_P, RGB_RED);
+ #endif // GAME_ENABLE
+
+ // System NumLock warning indicator RGB setup
+ #ifdef INVERT_NUMLOCK_INDICATOR
+ if (!IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // on if NUM lock is OFF to bring attention to overlay numpad not functional when enabled
+ rgb_matrix_set_color(LED_N, RGB_ORANGE2);
+ }
+ #else
+ if (IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // Normal, on if NUM lock is ON
+ rgb_matrix_set_color(LED_N, RGB_ORANGE2);
+ }
+ #endif // INVERT_NUMLOCK_INDICATOR
+
+ //Add RGB statuses for user.config toggles
+ if (user_config.rgb_hilite_caps) {
+ rgb_matrix_set_color(LED_1, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_1, RGB_PURPLE);
+ }
+ if (user_config.rgb_hilite_numpad) {
+ rgb_matrix_set_color(LED_2, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_2, RGB_PURPLE);
+ }
+ if (user_config.esc_double_tap_to_baselyr) {
+ rgb_matrix_set_color(LED_3, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_3, RGB_PURPLE);
+ }
+ if (user_config.del_right_home_top) {
+ rgb_matrix_set_color(LED_4, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_4, RGB_PURPLE);
+ }
+ if (user_config.double_tap_shift_for_capslock) {
+ rgb_matrix_set_color(LED_5, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_5, RGB_PURPLE);
+ }
+ if (user_config.encoder_press_mute_or_media) {
+ rgb_matrix_set_color(LED_6, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_6, RGB_PURPLE);
+ }
+ if (user_config.ins_on_shft_bkspc_or_del) {
+ rgb_matrix_set_color(LED_7, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_7, RGB_PURPLE);
+ }
+ if (user_config.disable_space_mods) {
+ rgb_matrix_set_color(LED_8, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_8, RGB_PURPLE);
+ }
+ if (user_config.autocorrect) {
+ rgb_matrix_set_color(LED_9, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_9, RGB_PURPLE);
+ }
+ if (user_config.rgb_english_caps) {
+ rgb_matrix_set_color(LED_0, RGB_GREEN);
+ } else {
+ rgb_matrix_set_color(LED_0, RGB_PURPLE);
+ }
+
+ // 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_BLUE);
+ else if (timeout_threshold < 140) {
+ rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold / 10)], RGB_CYAN);
+ rgb_matrix_set_color(LED_LIST_FUNCROW[(timeout_threshold % 10)], RGB_BLUE);
+ } else { // >= 140 minutes, just show these 3 lights
+ rgb_matrix_set_color(LED_LIST_FUNCROW[10], RGB_CYAN);
+ rgb_matrix_set_color(LED_LIST_FUNCROW[11], RGB_CYAN);
+ rgb_matrix_set_color(LED_LIST_FUNCROW[12], RGB_CYAN);
+ }
+ break;
+
+ // Numpad & Mouse Keys overlay RGB
+ case _NUMPADMOUSE:
+ #ifdef INVERT_NUMLOCK_INDICATOR
+ if (!IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // on if NUM lock is OFF to bring attention to overlay numpad not functional when enabled
+ rgb_matrix_set_color(LED_N, RGB_ORANGE2);
+ }
+ #else
+ if (IS_HOST_LED_ON(USB_LED_NUM_LOCK)) { // Normal, on if NUM lock is ON
+ rgb_matrix_set_color(LED_N, RGB_ORANGE2);
+ }
+ #endif // INVERT_NUMLOCK_INDICATOR
+ if (user_config.rgb_hilite_numpad) {
+ for (uint8_t i = 0; i < ARRAYSIZE(LED_LIST_NUMPAD); i++) {
+ rgb_matrix_set_color(LED_LIST_NUMPAD[i], RGB_OFFBLUE);
+ }
+ rgb_matrix_set_color(LED_L5, RGB_OFFBLUE);
+ rgb_matrix_set_color(LED_L6, RGB_OFFBLUE);
+ rgb_matrix_set_color(LED_CAPS, RGB_OFFBLUE);
+ rgb_matrix_set_color(LED_UP, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_DOWN, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_LEFT, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_RIGHT, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_RCTL, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_RSFT, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_END, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_PGUP, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_PGDN, RGB_CHARTREUSE);
+ } else {
+ rgb_matrix_set_color(LED_L5, RGB_OFFBLUE);
+ rgb_matrix_set_color(LED_L6, RGB_OFFBLUE);
+ rgb_matrix_set_color(LED_CAPS, RGB_OFFBLUE);
+ }
+ break;
+
+ // MOUSEKEYS mode RGB
+ case _MOUSEKEY:
+ rgb_matrix_set_color(LED_UP, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_DOWN, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_LEFT, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_RIGHT, RGB_CHARTREUSE);
+ rgb_matrix_set_color(LED_RCTL, RGB_CYAN);
+ rgb_matrix_set_color(LED_RSFT, RGB_CYAN);
+ rgb_matrix_set_color(LED_END, RGB_CYAN);
+ rgb_matrix_set_color(LED_PGUP, RGB_OFFBLUE);
+ rgb_matrix_set_color(LED_PGDN, RGB_OFFBLUE);
+ break;
+
+ // Colemak layer RGB
+ #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_MAGENTA);
+ rgb_matrix_set_color(LED_SIDE_LEFT[i], RGB_MAGENTA);
+ }
+ break;
+ #endif
+
+ // Paddle game logic
+ #ifdef GAME_ENABLE
+ case _GAME:
+ if (!game_start) {
+ srand((unsigned int) timer_read());
+
+ // Store user light settings
+ last_hsv = rgb_matrix_get_hsv();
+ rgb_matrix_sethsv_noeeprom(0, 0, 0);
+
+ paddle_pos_full = 8;
+ paddle_lives = 4;
+ bounce_count = 0;
+ level_number = 0;
+ damage_count = 0;
+
+ init_ball(0);
+ ball[1].on = false;
+ ball_timer = timer_read();
+
+ game_start = true;
+ }
+
+ // Set level indicator
+ if (level_number < 12) {
+ rgb_matrix_set_color(GAME_R0[level_number], RGB_BLUE);
+ }
+
+ // Set life bar
+ for (uint8_t i = 0; i < paddle_lives; i++) {
+ rgb_matrix_set_color(GAME_LIVES[i], RGB_GREEN);
+ }
+
+ uint8_t paddle_pos = paddle_pos_full >> 1;
+
+ if (damage_count > 0) {
+ // Flash paddle when receiving damage
+ if (timer_elapsed(damage_timer) > 500) {
+ --damage_count;
+ damage_timer = timer_read();
+ }
+ if ((damage_count & 1) == 0) {
+ for (uint8_t i = 0; i < 3; i++) {
+ rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_RED);
+ }
+ }
+ if (damage_count == 0) {
+ ball_timer = timer_read();
+ }
+
+ } else if (paddle_lives == 0) {
+ // Game over
+ for (uint8_t i = 0; i < sizeof(LED_GAME_OVER) / sizeof(LED_GAME_OVER[0]); i++) {
+ rgb_matrix_set_color(LED_GAME_OVER[i], RGB_RED);
+ }
+
+ } else if (level_number >= 12) {
+ // You win
+ if (rgb_value.r == 0xff && rgb_value.g < 0xff) {
+ if (rgb_value.b > 0) {
+ --rgb_value.b;
+ } else {
+ ++rgb_value.g;
+ }
+ } else if (rgb_value.g == 0xff && rgb_value.b < 0xff) {
+ if (rgb_value.r > 0) {
+ --rgb_value.r;
+ } else {
+ ++rgb_value.b;
+ }
+ } else if (rgb_value.b == 0xff && rgb_value.r < 0xff) {
+ if (rgb_value.g > 0) {
+ --rgb_value.g;
+ } else {
+ ++rgb_value.r;
+ }
+ }
+
+ for (uint8_t i = 0; i < 3; i++) {
+ rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], rgb_value.r, rgb_value.g, rgb_value.b);
+ }
+ rgb_matrix_set_color(GAME_SMILE1[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b);
+ rgb_matrix_set_color(GAME_SMILE1[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b);
+ rgb_matrix_set_color(GAME_SMILE2[paddle_pos], rgb_value.r, rgb_value.g, rgb_value.b);
+ rgb_matrix_set_color(GAME_SMILE2[paddle_pos + 3], rgb_value.r, rgb_value.g, rgb_value.b);
+
+ } else {
+ // normal game loop
+
+ // Set paddle position
+ for (uint8_t i = 0; i < 3; i++) {
+ rgb_matrix_set_color(GAME_PADDLE[paddle_pos + i], RGB_GREEN);
+ }
+
+ // Ball movement logic happens at intervals
+ if (timer_elapsed(ball_timer) > GAME_TIMER[level_number]) {
+ for (int i = 0; i < 2; ++i) {
+ if (ball[i].on) {
+ // Ball movement
+ if (ball[i].up) {
+ if (ball[i].y > 0) {
+ --ball[i].y;
+ if (!ball[i].left) ++ball[i].x;
+ } else {
+ // Count reflections. If > 10, increase level
+ ++bounce_count;
+ if (bounce_count >= 10) {
+ bounce_count = 0;
+ ++level_number;
+ }
+ ball[i].on = false;
+ }
+ } else {
+ ++ball[i].y;
+ if (ball[i].left) --ball[i].x;
+ if (ball[i].y > 4) {
+ // Remove a life if ball isn't returned and isn't enemy
+ if (!ball[i].enemy) {
+ hurt_paddle();
+ i = 2;
+ } else {
+ ball[i].on = false;
+ }
+ }
+ }
+ }
+ }
+ if (ball[0].y == 4 && !ball[1].on) {
+ init_ball(1);
+ }
+ if (ball[1].y == 4 && !ball[0].on) {
+ init_ball(0);
+ }
+ if (!ball[0].on && !ball[1].on) {
+ init_ball(0);
+ }
+ ball_timer = timer_read();
+ }
+
+ // Other ball stuff
+ for (int i = 0; i < 2; ++i) {
+ if (ball[i].on) {
+ // Ball deflection logic
+ if (!ball[i].up && ball[i].y == 4 && (ball[i].x == paddle_pos || ball[i].x == paddle_pos - 1 || ball[i].x == paddle_pos + 1)) {
+ if (!ball[i].enemy) {
+ --ball[i].y;
+ if (!ball[i].left) {
+ ++ball[i].x;
+ }
+ ball[i].up = true;
+ } else {
+ hurt_paddle();
+ i = 2;
+ }
+ }
+
+ // Ball display
+ switch (ball[i].y) {
+ case 0:
+ if (ball[i].enemy) {
+ rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_RED);
+ } else {
+ rgb_matrix_set_color(GAME_R0[ball[i].x], RGB_WHITE);
+ }
+ break;
+
+ case 1:
+ if (ball[i].enemy) {
+ rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_RED);
+ } else {
+ rgb_matrix_set_color(GAME_R1[ball[i].x], RGB_WHITE);
+ }
+ break;
+
+ case 2:
+ if (ball[i].enemy) {
+ rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_RED);
+ } else {
+ rgb_matrix_set_color(GAME_R2[ball[i].x], RGB_WHITE);
+ }
+ break;
+
+ case 3:
+ if (ball[i].enemy) {
+ rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_RED);
+ } else {
+ rgb_matrix_set_color(GAME_R3[ball[i].x], RGB_WHITE);
+ }
+ break;
+
+ case 4:
+ if (ball[i].enemy) {
+ rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_RED);
+ } else {
+ rgb_matrix_set_color(GAME_R4[ball[i].x], RGB_WHITE);
+ }
+ break;
+ }
+ }
+ }
+ }
+ break;
+ #endif //GAME_ENABLE
+ default:
+ #ifdef GAME_ENABLE
+ if (game_start) {
+ // Reset lighting settings
+ game_start = false;
+ rgb_matrix_sethsv_noeeprom(last_hsv.h, last_hsv.s, last_hsv.v);
+ }
+ #endif //GAME_ENABLE
+ break;
+ }
+}
+#endif
+
+void keyboard_post_init_keymap(void) {
+ // keyboard_post_init_user() moved to userspace
+ #ifdef RGB_MATRIX_ENABLE
+ activate_rgb_nightmode(false); // Set to true if you want to startup in nightmode, otherwise use Fn + Z to toggle
+ #endif
+} \ No newline at end of file
diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/paddlegame.h b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/paddlegame.h
new file mode 100644
index 0000000000..3d33975cfe
--- /dev/null
+++ b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/paddlegame.h
@@ -0,0 +1,48 @@
+/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.com>
+ Copyright 2021 Tomas Guinan
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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 GAME_ENABLE
+const uint16_t GAME_TIMER[] = {
+ 400, 350, 300, 250, 400, 350, 300, 250, 225, 200, 175, 150
+};
+
+bool game_start = false;
+HSV last_hsv;
+static uint8_t paddle_pos_full;
+static uint8_t paddle_lives;
+static uint8_t level_number;
+static uint8_t bounce_count;
+static uint8_t damage_count;
+static uint16_t damage_timer;
+static uint16_t ball_timer;
+
+struct BallStruct
+{
+ uint8_t x;
+ uint8_t y;
+ bool on;
+ bool up;
+ bool left;
+ bool enemy;
+};
+
+struct BallStruct ball[2];
+
+void init_ball(uint8_t i);
+void hurt_paddle(void);
+
+#endif //GAME_ENABLE \ No newline at end of file
diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/readme.md b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/readme.md
new file mode 100644
index 0000000000..aebccf6d14
--- /dev/null
+++ b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/readme.md
@@ -0,0 +1,124 @@
+# [gourdo1's](mailto:gourdo1@outlook.com) GMMK Pro Keyboard Layouts
+
+These Windows-centric layouts are based on Jonavin's GMMK Pro [layout](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/jonavin) with many additions, fixes, a revamped keymap, persistent user customizations, updated layers, Pascal Getreuer's [autocorrect](https://getreuer.info/posts/keyboards/autocorrection/), Tomas Guinan's [paddle game](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame) and expanded RGB controls and effects.
+
+![image](https://raw.githubusercontent.com/gourdo1/media/main/susuwatari.jpg)
+
+* Up-to-date [Changelog](https://github.com/gourdo1/gmmkpro-media/blob/main/changelog.md)
+* Latest [ANSI firmware](https://github.com/gourdo1/gmmkpro-media/raw/main/gmmk_pro_rev1_ansi_gourdo1.bin) download. (Flash with [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases))
+* Latest [ISO firmware](https://github.com/gourdo1/gmmkpro-media/raw/main/gmmk_pro_rev1_iso_gourdo1.bin) download. (Flash with [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases))
+* Printable Keyboard [Cheatsheet](https://github.com/gourdo1/gmmkpro-media/raw/main/GMMK_Pro_Cheatsheet.pdf)
+
+## Features
+
+### Core Functionality
+
+* Support for both [ANSI](https://keebnews.com/ansi-vs-iso/) and [ISO](https://keebnews.com/ansi-vs-iso/) keyboard layouts.
+* Quick & Easy Customization: Open a text editor and hit [FN]` (tilde on ANSI; the key left of '1' on ISO layouts) to view toggle-able settings.
+* [VIA](https://www.caniusevia.com/) support enabled.
+* AutoCorrection: Pascal Getreuer's AutoCorrect code incorporated with 400 word dictionary on words > 4 characters.
+* Most [default Glorious shortcuts](https://cdn.shopify.com/s/files/1/0549/2681/files/GMMK_Pro_User_Guide.pdf) enabled
+* [N-key Rollover](https://en.wikipedia.org/wiki/Rollover_\(keyboard\)#n-key_rollover) (NKRO) -- toggled with [FN]R
+* 1000Hz polling rate with 5ms debounce time for quick response in games.
+* Mouse Keys! Don't want to move your hands off the keyboard or you didn't bring it with you? Use cursor keys to move the mouse.
+* Overlay numpad on 789-UIOP-JKL;-M,. & Space-bar mapped to Enter key for rapid number entry.
+* Gaming mode ([FN]Win-key) locks out Win-key and double-tap Shift Capslock; Also RGB highlights WSAD and nearby gaming keys.
+* Caps Word enabled: To capitalize the next word only, press and release left and right shift at the same time.
+* Multi-monitor app moving shortcuts: [FN] ],[ (square brackets) to move current app window to next monitor.
+* Capslock toggled by double tap of Left Shift key or FN + Capslock (RGB green highlighted).
+* Paddle game accessible via [FN]P. Hit [FN]P again or double tap [ESC] to exit.
+* Single-handed shortcut for Ctrl-Alt-Delete: [FN]/
+* Single-handed shortcut for WinKey-L (lock Windows): [FN]L
+* Domain shortcuts: [FN]. for .com, [FN]O for outlook.com, [FN]Y for yahoo.com, [FN]H for hotmail.com, [FN]G for gmail.com.
+* [Bootloader mode](https://github.com/qmk/qmk_firmware/blob/master/docs/newbs_flashing.md) accessible via [FN]Backslash for ANSI and FN(key next to Left Shift) for ISO
+* PrtScrn, Scroll Lock, Pause/Break are top right on the keyboard: [FN]F11, [FN]F12, [FN]F13
+* [Colemak](https://colemak.com/) key layout support (Accessible via Left Shift + turn Encoder clockwise until side LEDs light up purple)
+* Double tap ESC any time to revert to base layer.
+* RGB backlight effects expanded to include framebuffer effects and reactive keypress modes.
+* RGB backlight now remembers last color & effect settings after power down.
+
+### Quick & Easy Customization
+* Below features can be toggled by holding [FN] and pressing the number corresponding to that feature. Changes are saved to EEPROM for persistence.
+* Print current settings by opening a text editor and pressing [FN]~ (the key left of '1' on ISO layout keyboards)
+* Quick view current settings by holding [FN] and viewing RGB under number keys (green means ON, violet means OFF)
+
+#### Toggle-able Settings:
+ 1. CapsLock RGB - Highlight under alpha keys
+ 2. Numpad RGB - Highlight under numpad layer keys
+ 3. ESC key - Double tap ESC key to go to base layer
+ 4. Swap DEL and HOME - Default is DEL to the right of BKSPC & HOME is above BKSPC
+ 5. Capslock function - Toggle between double tap LShift for CapsLock with Numpad on CapsLock key (default) and standard CapsLock
+ 6. Encoder button - Default mutes volume; alternate plays/pauses media
+ 7. Insert function - Toggle between SHIFT-BKSPC and SHIFT-DEL
+ 8. Modded-Space override - Use standard Space in place of modded-Space functions
+ 9. AutoCorrect - Internal (English) AutoCorrect; default is enabled
+ 0. (ISO layouts only) CapsLock highlights extended alpha keys
+
+### Numpad + Mouse Keys (Capslock key)
+
+* Overlay numpad + [Mouse Keys](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_mouse_keys.md) are accessed through Capslock key hold (temp) or double press (locked) with RGB highlighting
+* Numpad uses Space-bar as Enter for rapid number entry.
+* This layer disables much of the keyboard, except X/C/V for cut/copy/paste, WASD for cursor, Q/E for PgUp/PgDn, cursor keys become mouse keys, surrounding keys become mouse buttons and all number keys become numpad versions (so Alt char codes work regardless of which set you use)
+* FN and N keys light up orange if system numlock is off (inverted status), indicating numpad keys will not deliver expected output ([FN]N to toggle)
+* Double zero on comma key.
+* [Mouse Keys](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_mouse_keys.md) allow you to use the mouse without taking your hand off the keyboard.
+* Mouse controls are: Cursor keys = move mouse; RShift = button1, End = button2, RCtrl = button3, PgUp/PgDn = Scroll wheel
+* Mouse Keys can also be accessed as a standalone layer by Left Shift-turning the Encoder until the cursor keys light up green
+
+### Encoder Functionality
+
+* Default knob turn changes volume; button press toggles mute
+* Exponential encoder: quick repeated volume up doubles increase; quick repeated volume down triples decrease.
+* FN + knob turn changes RGB idle timeout
+* FN + knob push puts PC to Sleep
+* holding Left Shift changes layers
+* holding Right Shift navigates page up/down
+* holding Left Ctrl navigates prev/next word
+* holding Right Ctrl changes RGB hue/color
+* holding Left Alt changes media prev/next track
+
+### Paddle Game
+
+* Based on [Tomas Guinan's excellent GMMK Pro paddle game](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gmmk/pro/rev1/ansi/keymaps/paddlegame)
+* Paddle Game playable by pressing [FN]P (P lights up green in FN layer if game is enabled in firmware, otherwise it lights up red)
+* Use rotary encoder to control paddle
+* Contains 12 levels, indicated by blue LED on F-key row
+* Player has 4 lives, indicated by nav cluster
+* Deflect white balls while avoiding red ones
+* Use [FN]P, double tap ESC or otherwise change layer to quit game
+
+### Global RGB Controls
+
+* RGB backlight lighting effect: [FN]up/down
+* RGB backlight effect speed: [FN]left/right
+* RGB backlight hue cycle: [FN]A/D
+* RGB backlight brightness: [FN]W/S
+* RGB backlight saturation: [FN]Q/E
+* RGB backlight night mode toggle: [FN]Z (indicators still work)
+* RGB backlight timeout: [FN]Encoder or "-" and "=" (default 15 minutes)
+ * F-key row indicator lights (cyan and blue) in FN layer display the current backlight timeout in minutes
+* [FN]Z to turn off RGB backlighting (indicator lights still work); press again to toggle
+* Left side RGB indicators in order from top: Scroll Lock (red), Numpad (blue), Capslock (green).
+
+### Advanced Controls
+
+* [FN]\ or [FN]B to get to bootloader mode (use key next to Left Shift on ISO)
+* [FN][ESC] to clear EEPROM
+* [FN]R to toggle N-key Rollover
+* [FN]N to toggle system numlock
+* [FN]/ is single-handed shortcut to Ctrl-Alt-Delete
+* [FN]L is single-handed shortcut to Win-L (lock Windows)
+* [FN][Encoder press] to sleep Windows PC
+
+## Layer Diagrams (ANSI)
+### Base layer
+![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/base.png)
+
+### FN Layer
+![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/fn1.png)
+
+### Layer 2 (Numpad)
+![image](https://raw.githubusercontent.com/gourdo1/gmmkpro-media/main/numpad.png)
+
+### COLEMAK layer
+![image](https://user-images.githubusercontent.com/71780717/131235050-980d2f54-2d23-4ae8-a83f-9fcdbe60d6cb.png)
diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rgb_matrix_map.h b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rgb_matrix_map.h
new file mode 100644
index 0000000000..abcdb82aeb
--- /dev/null
+++ b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rgb_matrix_map.h
@@ -0,0 +1,433 @@
+/* Copyright 2021 Jonavin Eng @Jonavin
+ Copyright 2022 gourdo1 <gourdo1@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 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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
+
+//Define variables for Game
+bool fn_active = false;
+RGB rgb_value;
+
+// Custom GMMK Pro-specific RGB color customizations (defaults found in quantum/color.h)
+#define RGB_GODSPEED 0x00, 0xE4, 0xFF // color for matching keycaps
+#define RGB_NAUTILUS 0x00, 0xA4, 0xA9 // Nautilus Font colors
+#define RGB_OFFBLUE 0x00, 0x80, 0xFF // new color: blue with a hint of green
+#define RGB_DKRED 0x28, 0x00, 0x00 // new color: dark red
+#define RGB_ORANGE2 0xFF, 0x28, 0x00 // fix: reduced green from 80 to 28
+#define RGB_PURPLE2 0x80, 0x00, 0xFF // fix: increased red from 7A to 80
+#define RGB_SPRINGGREEN2 0x00, 0xFF, 0x10 // fix: blue was 80, now 10
+#define RGB_YELLOW2 0xFF, 0xB0, 0x00 // fix: green was FF, now B0
+#define RGB_OFF RGB_BLACK
+
+// Added by gourdo1 for RGB testing
+// Red Green Blue Expected GMMK Pro result
+#define RGB_TEST1 0xFF, 0x00, 0x00 // Q - red good!
+#define RGB_TEST2 0x0F, 0xFF, 0x00 // W - green good!
+#define RGB_TEST3 0x00, 0x00, 0xFF // E - blue good!
+#define RGB_TEST4 0xFF, 0xB0, 0x00 // R - yellow slightly green heavy - reduced green LED by quite a bit
+#define RGB_TEST5 0x00, 0xFF, 0xFF // T - cyan good!
+#define RGB_TEST6 0xFF, 0x00, 0xFF // Y - magenta very slightly blue heavy?
+#define RGB_TEST7 0xFF, 0x28, 0x00 // U - orange very green heavy at default
+#define RGB_TEST8 0xFF, 0x00, 0x80 // I - pink good!
+#define RGB_TEST9 0x80, 0xFF, 0x00 // O - chartreus good!
+#define RGB_TEST10 0x00, 0xFF, 0x10 // P - springgrn fixed: was too blue because green LED has blue in it already
+#define RGB_TEST11 0x00, 0x80, 0xFF // A - grn blue good!
+#define RGB_TEST12 0x80, 0x00, 0xFF // S - purple good!
+
+// RGB LED locations
+enum led_location_map {
+ LED_ESC, // 0, ESC, k13
+ LED_GRV, // 1, `, k16
+ LED_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_LETTERS[] = {
+ LED_Q,
+ LED_W,
+ LED_E,
+ LED_R,
+ LED_T,
+ LED_Y,
+ LED_U,
+ LED_I,
+ LED_O,
+ LED_P,
+ LED_A,
+ LED_S,
+ LED_D,
+ LED_F,
+ LED_G,
+ LED_H,
+ LED_J,
+ LED_K,
+ LED_L,
+ LED_Z,
+ LED_X,
+ LED_C,
+ LED_V,
+ LED_B,
+ LED_N,
+ LED_M
+};
+
+const uint8_t LED_LIST_LETTERS_DE[] = {
+ LED_Q,
+ LED_W,
+ LED_E,
+ LED_R,
+ LED_T,
+ LED_Y,
+ LED_U,
+ LED_I,
+ LED_O,
+ LED_P,
+ LED_A,
+ LED_S,
+ LED_D,
+ LED_F,
+ LED_G,
+ LED_H,
+ LED_J,
+ LED_K,
+ LED_L,
+ LED_Z,
+ LED_X,
+ LED_C,
+ LED_V,
+ LED_B,
+ LED_N,
+ LED_M,
+ LED_SCLN,
+ LED_LBRC,
+ LED_QUOT
+};
+
+const uint8_t LED_LIST_NUMPAD[] = {
+ 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_U,
+ LED_I,
+ LED_O,
+ LED_P,
+ LED_J,
+ LED_K,
+ LED_L,
+ LED_SCLN,
+ LED_ENT,
+ LED_M,
+ LED_COMM,
+ LED_DOT,
+ LED_SLSH,
+ LED_END,
+ LED_RIGHT
+};
+
+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
+};
+
+#ifdef GAME_ENABLE
+// Game LED rules
+const uint8_t GAME_LIVES[] = {
+ LED_DEL,
+ LED_PGUP,
+ LED_PGDN,
+ LED_END
+};
+const uint8_t GAME_PADDLE[] = {
+ LED_Z,
+ LED_X,
+ LED_C,
+ LED_V,
+ LED_B,
+ LED_N,
+ LED_M,
+ LED_COMM,
+ LED_DOT,
+ LED_SLSH
+};
+const uint8_t GAME_SMILE1[] = {
+ LED_A,
+ LED_S,
+ LED_D,
+ LED_F,
+ LED_G,
+ LED_H,
+ LED_J,
+ LED_K,
+ LED_L,
+ LED_SCLN,
+ LED_QUOT
+};
+const uint8_t GAME_SMILE2[] = {
+ LED_2,
+ LED_3,
+ LED_4,
+ LED_5,
+ LED_6,
+ LED_7,
+ LED_8,
+ LED_9,
+ LED_0,
+ LED_MINS,
+ LED_EQL
+};
+const uint8_t GAME_R4[] = {
+ LED_X,
+ LED_C,
+ LED_V,
+ LED_B,
+ LED_N,
+ LED_M,
+ LED_COMM,
+ LED_DOT
+};
+const uint8_t GAME_R3[] = {
+ LED_S,
+ LED_D,
+ LED_F,
+ LED_G,
+ LED_H,
+ LED_J,
+ LED_K,
+ LED_L,
+ LED_SCLN
+};
+const uint8_t GAME_R2[] = {
+ LED_W,
+ LED_E,
+ LED_R,
+ LED_T,
+ LED_Y,
+ LED_U,
+ LED_I,
+ LED_O,
+ LED_P,
+ LED_LBRC
+};
+const uint8_t GAME_R1[] = {
+ LED_2,
+ LED_3,
+ LED_4,
+ LED_5,
+ LED_6,
+ LED_7,
+ LED_8,
+ LED_9,
+ LED_0,
+ LED_MINS,
+ LED_EQL
+};
+const uint8_t GAME_R0[] = {
+ LED_F1,
+ LED_F2,
+ LED_F3,
+ LED_F4,
+ LED_F5,
+ LED_F6,
+ LED_F7,
+ LED_F8,
+ LED_F9,
+ LED_F10,
+ LED_F11,
+ LED_F12
+};
+const uint8_t LED_GAME_OVER[] = {
+ LED_5,
+ LED_8,
+ LED_F,
+ LED_G,
+ LED_H,
+ LED_J,
+ LED_C,
+ LED_M
+};
+#endif //GAME_ENABLE
+
+#endif \ No newline at end of file
diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rules.mk b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rules.mk
new file mode 100644
index 0000000000..1eb14ebbef
--- /dev/null
+++ b/keyboards/gmmk/pro/rev1/iso/keymaps/gourdo1/rules.mk
@@ -0,0 +1,22 @@
+LTO_ENABLE = yes # link time optimization -- achieves a smaller compiled size
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+MOUSEKEY_ENABLE = yes
+
+VIA_ENABLE = yes
+TAP_DANCE_ENABLE = no
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+CAPS_WORD_ENABLE = yes # Enable built-in Caps Word functionality
+
+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
+
+GAME_ENABLE ?= yes # Enable Paddle Game / set to no to disable
+ifeq ($(strip $(GAME_ENABLE)), yes)
+ OPT_DEFS += -DGAME_ENABLE
+endif
diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/keymap.c b/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/keymap.c
index 3164ecbf68..e4b5711e8b 100644
--- a/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/keymap.c
+++ b/keyboards/gmmk/pro/rev1/iso/keymaps/jonavin/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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, _______,
+ _______, QK_BOOT, RGB_NITE,RGB_HUI, _______, _______, _______, KC_NLCK, _______, RGB_TOD, RGB_TOI, _______, _______, RGB_MOD, _______,
_______, KC_WINLCK, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
),
diff --git a/keyboards/gmmk/pro/rev1/iso/keymaps/vitoni/keymap.c b/keyboards/gmmk/pro/rev1/iso/keymaps/vitoni/keymap.c
index d5b64c153a..1e32e7e9c0 100644
--- a/keyboards/gmmk/pro/rev1/iso/keymaps/vitoni/keymap.c
+++ b/keyboards/gmmk/pro/rev1/iso/keymaps/vitoni/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_MOV] = LAYOUT(
- RESET, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ QK_BOOT, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_RGB] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, RGB_MOD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, RGB_MOD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_SPI,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, RGB_SPD,
@@ -136,7 +136,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
switch (keycode) {
- case RESET: // when activating RESET mode for flashing
+ case QK_BOOT: // when activating QK_BOOT mode for flashing
if (record->event.pressed) {
rgb_matrix_set_color_all(63, 0, 0);
rgb_matrix_driver.flush();
diff --git a/keyboards/gmmk/pro/rev2/ansi/ansi.c b/keyboards/gmmk/pro/rev2/ansi/ansi.c
new file mode 100644
index 0000000000..9cf28e4648
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/ansi/ansi.c
@@ -0,0 +1,241 @@
+/* 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 "ansi.h"
+
+#ifdef RGB_MATRIX_ENABLE
+// clang-format off
+led_config_t g_led_config = {{
+ { 4, NO_LED, NO_LED, 95, 65, 79, 5, 28 },
+ { 8, 2, 9, 0, 10, 75, 1, 7 },
+ { 14, 3, 15, NO_LED, 16, 86, 6, 13 },
+ { 20, 18, 21, 23, 22, 94, 12, 19 },
+ { 25, 30, 26, 31, 27, 32, 29, 24 },
+ { 41, 36, 42, 37, 43, 38, 35, 40 },
+ { 46, 89, 47, 34, 48, 72, 78, 45 },
+ { 52, 39, 53, 97, 54, 82, 44, 51 },
+ { 58, 63, 59, 64, NO_LED, 60, 62, 57 },
+ { 11, 90, 55, 17, 33, 49, NO_LED, 69 },
+ { NO_LED, 85, 93, 61, 96, 66, 50, 56 }
+}, {
+ {0, 0}, // 0, ESC, k13
+ {0, 15}, // 1, ~, k16
+ {4, 26}, // 2, Tab, k11
+ {5, 38}, // 3, Caps, k21
+ {9, 49}, // 4, Sh_L, k00
+ {2, 61}, // 5, Ct_L, k06
+ {18, 0}, // 6, F1, k26
+ {14, 15}, // 7, 1, k17
+ {22, 26}, // 8, Q, k10
+ {25, 38}, // 9, A, k12
+ {33, 49}, // 10, Z, k14
+ {20, 61}, // 11, Win_L, k90
+ {33, 0}, // 12, F2, k36
+ {29, 15}, // 13, 2, k27
+ {36, 26}, // 14, W, k20
+ {40, 38}, // 15, S, k22
+ {47, 49}, // 16, X, k24
+ {38, 61}, // 17, Alt_L, k93
+ {47, 0}, // 18, F3, k31
+ {43, 15}, // 19, 3, k37
+ {51, 26}, // 20, E, k30
+ {54, 38}, // 21, D, k32
+ {61, 49}, // 22, C, k34
+ {61, 0}, // 23, F4, k33
+ {58, 15}, // 24, 4, k47
+ {65, 26}, // 25, R, k40
+ {69, 38}, // 26, F, k42
+ {76, 49}, // 27, V, k44
+ {79, 0}, // 28, F5, k07
+ {72, 15}, // 29, 5, k46
+ {79, 26}, // 30, T, k41
+ {83, 38}, // 31, G, k43
+ {90, 49}, // 32, B, k45
+ {92, 61}, // 33, SPACE, k94
+ {94, 0}, // 34, F6, k63
+ {87, 15}, // 35, 6, k56
+ {94, 26}, // 36, Y, k51
+ {98, 38}, // 37, H, k53
+ {105, 49}, // 38, N, k55
+ {108, 0}, // 39, F7, k71
+ {101, 15}, // 40, 7, k57
+ {108, 26}, // 41, U, k50
+ {112, 38}, // 42, J, k52
+ {119, 49}, // 43, M, k54
+ {123, 0}, // 44, F8, k76
+ {116, 15}, // 45, 8, k67
+ {123, 26}, // 46, I, k60
+ {126, 38}, // 47, K, k62
+ {134, 49}, // 48, ,, k64
+ {145, 61}, // 49, Alt_R, k95
+ {141, 0}, // 50, F9, ka6
+ {130, 15}, // 51, 9, k77
+ {137, 26}, // 52, O, k70
+ {141, 38}, // 53, L, k72
+ {148, 49}, // 54, ., k74
+ {159, 61}, // 55, FN, k92
+ {155, 0}, // 56, F10, ka7
+ {145, 15}, // 57, 0, k87
+ {152, 26}, // 58, P, k80
+ {155, 38}, // 59, ;, k82
+ {163, 49}, // 60, ?, k85
+ {170, 0}, // 61, F11, ka3
+ {159, 15}, // 62, -, k86
+ {166, 26}, // 63, [, k81
+ {170, 38}, // 64, ", k83
+ {173, 61}, // 65, Ct_R, k04
+ {184, 0}, // 66, F12, ka5
+ {0, 8}, // 67, LED, l01
+ {224, 8}, // 68, LED, l11
+ {202, 0}, // 69, Prt, k97
+ {0, 15}, // 70, LED, l02
+ {224, 15}, // 71, LED, l12
+ {224, 15}, // 72, Del, k65
+ {0, 21}, // 73, LED, l03
+ {224, 21}, // 74, LED, l13
+ {224, 26}, // 75, PgUp, k15
+ {0, 28}, // 76, LED, l04
+ {224, 28}, // 77, LED, l14
+ {173, 15}, // 78, =, k66
+ {220, 64}, // 79, Right, k05
+ {0, 35}, // 80, LED, l05
+ {224, 35}, // 81, LED, l15
+ {224, 49}, // 82, End, k75
+ {0, 42}, // 83, LED, l06
+ {224, 42}, // 84, LED, l16
+ {195, 15}, // 85, BSpc, ka1
+ {224, 38}, // 86, PgDn, k25
+ {0, 48}, // 87, LED, l07
+ {224, 48}, // 88, LED, l17
+ {181, 26}, // 89, ], k61
+ {182, 49}, // 90, Sh_R, k91
+ {0, 55}, // 91, LED, l08
+ {224, 55}, // 92, LED, l18
+ {199, 26}, // 93, \, ka2
+ {206, 52}, // 94, Up, k35
+ {191, 64}, // 95, Left, k03
+ {193, 38}, // 96, Enter, ka4
+ {206, 64} // 97, Down, k73
+}, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 4, 2, 2, 4, 2, 2,
+ 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4
+}};
+
+const aw_led g_aw_leds[DRIVER_LED_TOTAL] = {
+ {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13
+ {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16
+ {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11
+ {0, CS10_SW1, CS11_SW1, CS12_SW1}, // 3, Caps, k21
+ {0, CS13_SW1, CS14_SW1, CS15_SW1}, // 4, Sh_L, k00
+ {0, CS16_SW1, CS17_SW1, CS18_SW1}, // 5, Ct_L, k06
+ {0, CS1_SW2, CS2_SW2, CS3_SW2}, // 6, F1, k26
+ {0, CS4_SW2, CS5_SW2, CS6_SW2}, // 7, 1, k17
+ {0, CS7_SW2, CS8_SW2, CS9_SW2}, // 8, Q, k10
+ {0, CS10_SW2, CS11_SW2, CS12_SW2}, // 9, A, k12
+ {0, CS13_SW2, CS14_SW2, CS15_SW2}, // 10, Z, k14
+ {0, CS16_SW2, CS17_SW2, CS18_SW2}, // 11, Win_L, k90
+ {0, CS1_SW3, CS2_SW3, CS3_SW3}, // 12, F2, k36
+ {0, CS4_SW3, CS5_SW3, CS6_SW3}, // 13, 2, k27
+ {0, CS7_SW3, CS8_SW3, CS9_SW3}, // 14, W, k20
+ {0, CS10_SW3, CS11_SW3, CS12_SW3}, // 15, S, k22
+ {0, CS13_SW3, CS14_SW3, CS15_SW3}, // 16, X, k24
+ {0, CS16_SW3, CS17_SW3, CS18_SW3}, // 17, Alt_L, k93
+ {0, CS1_SW4, CS2_SW4, CS3_SW4}, // 18, F3, k31
+ {0, CS4_SW4, CS5_SW4, CS6_SW4}, // 19, 3, k37
+ {0, CS7_SW4, CS8_SW4, CS9_SW4}, // 20, E, k30
+ {0, CS10_SW4, CS11_SW4, CS12_SW4}, // 21, D, k32
+ {0, CS13_SW4, CS14_SW4, CS15_SW4}, // 22, C, k34
+ {0, CS1_SW5, CS2_SW5, CS3_SW5}, // 23, F4, k33
+ {0, CS4_SW5, CS5_SW5, CS6_SW5}, // 24, 4, k47
+ {0, CS7_SW5, CS8_SW5, CS9_SW5}, // 25, R, k40
+ {0, CS10_SW5, CS11_SW5, CS12_SW5}, // 26, F, k42
+ {0, CS13_SW5, CS14_SW5, CS15_SW5}, // 27, V, k44
+ {0, CS1_SW6, CS2_SW6, CS3_SW6}, // 28, F5, k07
+ {0, CS4_SW6, CS5_SW6, CS6_SW6}, // 29, 5, k46
+ {0, CS7_SW6, CS8_SW6, CS9_SW6}, // 30, T, k41
+ {0, CS10_SW6, CS11_SW6, CS12_SW6}, // 31, G, k43
+ {0, CS13_SW6, CS14_SW6, CS15_SW6}, // 32, B, k45
+ {0, CS16_SW6, CS17_SW6, CS18_SW6}, // 33, SPACE, k94
+ {0, CS1_SW7, CS2_SW7, CS3_SW7}, // 34, F6, k63
+ {0, CS4_SW7, CS5_SW7, CS6_SW7}, // 35, 6, k56
+ {0, CS7_SW7, CS8_SW7, CS9_SW7}, // 36, Y, k51
+ {0, CS10_SW7, CS11_SW7, CS12_SW7}, // 37, H, k53
+ {0, CS13_SW7, CS14_SW7, CS15_SW7}, // 38, N, k55
+ {0, CS1_SW8, CS2_SW8, CS3_SW8}, // 39, F7, k71
+ {0, CS4_SW8, CS5_SW8, CS6_SW8}, // 40, 7, k57
+ {0, CS7_SW8, CS8_SW8, CS9_SW8}, // 41, U, k50
+ {0, CS10_SW8, CS11_SW8, CS12_SW8}, // 42, J, k52
+ {0, CS13_SW8, CS14_SW8, CS15_SW8}, // 43, M, k54
+ {0, CS1_SW9, CS2_SW9, CS3_SW9}, // 44, F8, k76
+ {0, CS4_SW9, CS5_SW9, CS6_SW9}, // 45, 8, k67
+ {0, CS7_SW9, CS8_SW9, CS9_SW9}, // 46, I, k60
+ {0, CS10_SW9, CS11_SW9, CS12_SW9}, // 47, K, k62
+ {0, CS13_SW9, CS14_SW9, CS15_SW9}, // 48, ,, k64
+ {0, CS16_SW9, CS17_SW9, CS18_SW9}, // 49, Alt_R, k95
+ {0, CS1_SW10, CS2_SW10, CS3_SW10}, // 50, F9, ka6
+ {0, CS4_SW10, CS5_SW10, CS6_SW10}, // 51, 9, k77
+ {0, CS7_SW10, CS8_SW10, CS9_SW10}, // 52, O, k70
+ {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 53, L, k72
+ {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 54, ., k74
+ {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 55, FN, k92
+ {0, CS1_SW11, CS2_SW11, CS3_SW11}, // 56, F10, ka7
+ {0, CS4_SW11, CS5_SW11, CS6_SW11}, // 57, 0, k87
+ {0, CS7_SW11, CS8_SW11, CS9_SW11}, // 58, P, k80
+ {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 59, ;, k82
+ {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 60, ?, k85
+ {0, CS1_SW12, CS2_SW12, CS3_SW12}, // 61, F11, ka3
+ {0, CS4_SW12, CS5_SW12, CS6_SW12}, // 62, -, k86
+ {0, CS7_SW12, CS8_SW12, CS9_SW12}, // 63, [, k81
+ {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 64, ", k83
+ {0, CS16_SW12, CS17_SW12, CS18_SW12}, // 65, Ct_R, k04
+
+ {1, CS1_SW1, CS2_SW1, CS3_SW1}, // 66, F12, ka5
+ {1, CS13_SW1, CS14_SW1, CS15_SW1}, // 67, LED, l01
+ {1, CS16_SW1, CS17_SW1, CS18_SW1}, // 68, LED, l11
+ {1, CS4_SW2, CS5_SW2, CS6_SW2}, // 69, Prt, k97
+ {1, CS13_SW2, CS14_SW2, CS15_SW2}, // 70, LED, l02
+ {1, CS16_SW2, CS17_SW2, CS18_SW2}, // 71, LED, l12
+ {1, CS4_SW3, CS5_SW3, CS6_SW3}, // 72, Del, k65
+ {1, CS13_SW3, CS14_SW3, CS15_SW3}, // 73, LED, l03
+ {1, CS16_SW3, CS17_SW3, CS18_SW3}, // 74, LED, l13
+ {1, CS4_SW4, CS5_SW4, CS6_SW4}, // 75, PgUp, k15
+ {1, CS13_SW4, CS14_SW4, CS15_SW4}, // 76, LED, l04
+ {1, CS16_SW4, CS17_SW4, CS18_SW4}, // 77, LED, l14
+ {1, CS1_SW5, CS2_SW5, CS3_SW5}, // 78, =, k66
+ {1, CS10_SW5, CS11_SW5, CS12_SW5}, // 79, Right, k05
+ {1, CS13_SW5, CS14_SW5, CS15_SW5}, // 80, LED, l05
+ {1, CS16_SW5, CS17_SW5, CS18_SW5}, // 81, LED, l15
+ {1, CS4_SW6, CS5_SW6, CS6_SW6}, // 82, End, k75
+ {1, CS13_SW6, CS14_SW6, CS15_SW6}, // 83, LED, l06
+ {1, CS16_SW6, CS17_SW6, CS18_SW6}, // 84, LED, l16
+ {1, CS1_SW7, CS2_SW7, CS3_SW7}, // 85, BSpc, ka1
+ {1, CS4_SW7, CS5_SW7, CS6_SW7}, // 86, PgDn, k25
+ {1, CS13_SW7, CS14_SW7, CS15_SW7}, // 87, LED, l07
+ {1, CS16_SW7, CS17_SW7, CS18_SW7}, // 88, LED, l17
+ {1, CS1_SW8, CS2_SW8, CS3_SW8}, // 89, ], k61
+ {1, CS4_SW8, CS5_SW8, CS6_SW8}, // 90, Sh_R, k91
+ {1, CS13_SW8, CS14_SW8, CS15_SW8}, // 91, LED, l08
+ {1, CS16_SW8, CS17_SW8, CS18_SW8}, // 92, LED, l18
+ {1, CS1_SW9, CS2_SW9, CS3_SW9}, // 93, \, ka2
+ {1, CS4_SW9, CS5_SW9, CS6_SW9}, // 94, Up, k35
+ {1, CS4_SW10, CS5_SW10, CS6_SW10}, // 95, Left, k03
+ {1, CS1_SW11, CS2_SW11, CS3_SW11}, // 96, Enter, ka4
+ {1, CS4_SW11, CS5_SW11, CS6_SW11}, // 97, Down, k73
+};
+// clang-format on
+#endif
diff --git a/keyboards/gmmk/pro/rev2/ansi/ansi.h b/keyboards/gmmk/pro/rev2/ansi/ansi.h
new file mode 100644
index 0000000000..2f8a28b940
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/ansi/ansi.h
@@ -0,0 +1,52 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "pro.h"
+
+#define ___ KC_NO
+
+// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
+// ` 1 2 3 4 5 6 7 8 9 0 - = BSpc 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
+
+// clang-format off
+#define LAYOUT( \
+ k13, k26, k36, k31, k33, k07, k63, k71, k76, ka6, ka7, ka3, ka5, k97, k01, \
+ k16, k17, k27, k37, k47, k46, k56, k57, k67, k77, k87, k86, k66, ka1, k65, \
+ k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, ka2, k15, \
+ k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, ka4, k25, \
+ k00, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k91, k35, k75, \
+ k06, k90, k93, k94, k95, k92, k04, k03, k73, k05 \
+) \
+{ \
+ { k00, k01, ___, k03, k04, k05, k06, k07}, \
+ { k10, k11, k12, k13, k14, k15, k16, k17}, \
+ { k20, k21, k22, ___, 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, k57}, \
+ { k60, k61, k62, k63, k64, k65, k66, k67}, \
+ { k70, k71, k72, k73, k74, k75, k76, k77}, \
+ { k80, k81, k82, k83, ___, k85, k86, k87}, \
+ { k90, k91, k92, k93, k94, k95, ___, k97}, \
+ { ___, ka1, ka2, ka3, ka4, ka5, ka6, ka7} \
+}
+// clang-format on
diff --git a/keyboards/gmmk/pro/rev2/ansi/config.h b/keyboards/gmmk/pro/rev2/ansi/config.h
new file mode 100644
index 0000000000..996ee21afc
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/ansi/config.h
@@ -0,0 +1,23 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+#define DRIVER_1_LED_TOTAL 66
+#define DRIVER_2_LED_TOTAL 32
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
diff --git a/keyboards/gmmk/pro/rev2/ansi/info.json b/keyboards/gmmk/pro/rev2/ansi/info.json
new file mode 100644
index 0000000000..a78e608f2f
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/ansi/info.json
@@ -0,0 +1,115 @@
+{
+ "keyboard_name": "GMMK Pro ANSI",
+ "manufacturer": "Glorious",
+ "url": "https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation",
+ "maintainer": "GloriousThrall",
+ "usb": {
+ "vid": "0x320F",
+ "pid": "0x5044",
+ "device_version": "0.0.2"
+ },
+ "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.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, "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.5, "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.5, "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":15.5, "y":3.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":1.75},
+
+ {"x":14.25, "y":4.5},
+
+ {"x":15.5, "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},
+ {"x":11, "y":5.25},
+ {"x":12, "y":5.25},
+
+ {"x":13.25, "y":5.5},
+ {"x":14.25, "y":5.5},
+ {"x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/gmmk/pro/rev2/ansi/keymaps/default/keymap.c b/keyboards/gmmk/pro/rev2/ansi/keymaps/default/keymap.c
new file mode 100644
index 0000000000..dc56a9ff8f
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/ansi/keymaps/default/keymap.c
@@ -0,0 +1,72 @@
+/* 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] = {
+
+// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt 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
+
+
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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_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_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, _______, _______, _______,
+ _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, _______, 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 // ENCODER_ENABLE
diff --git a/keyboards/gmmk/pro/rev2/ansi/keymaps/via/keymap.c b/keyboards/gmmk/pro/rev2/ansi/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d1c42ca26f
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/ansi/keymaps/via/keymap.c
@@ -0,0 +1,88 @@
+/* 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] = {
+
+// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt 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
+
+
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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_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_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, _______, _______, _______,
+ _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
+ _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
+// clang-format on
+
+/* encoder; start */
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
+};
+#endif
diff --git a/keyboards/gmmk/pro/rev2/ansi/keymaps/via/rules.mk b/keyboards/gmmk/pro/rev2/ansi/keymaps/via/rules.mk
new file mode 100644
index 0000000000..f1adcab005
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/ansi/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/gmmk/pro/rev2/ansi/readme.md b/keyboards/gmmk/pro/rev2/ansi/readme.md
new file mode 100644
index 0000000000..dd60a0f138
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/ansi/readme.md
@@ -0,0 +1,37 @@
+# GMMK PRO (ANSI)
+
+A tenkeyless 75% keyboard made and sold by Glorious LLC. Equipped with the WestBerry G7 ARM Cortex-M4 microcontroller, with support for rotary encoders and three additional layouts. [More info at Glorious](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black)
+
+* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall)
+* Hardware Supported: GMMK Pro
+* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make gmmk/pro/rev2/ansi:default
+
+Flashing example for this keyboard:
+
+ make gmmk/pro/rev2/ansi:default:flash
+
+To reset the board into bootloader mode, do one of the following:
+
+* Hold the Reset switch mounted on the bottom side of the PCB while connecting the USB cable
+* Hold the Escape key while connecting the USB cable (also erases persistent settings)
+* Fn+Backslash will reset the board to bootloader mode if you have flashed the default QMK 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).
+
+## Case Screw Replacements
+
+Many users report stripped case screws when disassembling the board.
+
+The stock case screws are:
+* Thread: M2
+* Thread length: ~5 mm
+* Head diameter: ~3.8 mm
+* Head counterbore diameter: ~4.0 mm
+* Head counterbore depth: ~1.9 mm
+
+Most M2x5mm screws should fit fine, although it's best to ensure that the screw head will fit inside the counterbore.
+For reference, [this hex socket head screw](https://www.mcmaster.com/91292A005/) from McMaster-Carr should fit nearly flush (head will protrude above the counterbore by ~0.1 mm).
diff --git a/keyboards/gmmk/pro/rev2/ansi/rules.mk b/keyboards/gmmk/pro/rev2/ansi/rules.mk
new file mode 100644
index 0000000000..8d81af0fdf
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/ansi/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = WB32F3G71
+
+# Bootloader selection
+BOOTLOADER = wb32-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 = AW20216
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = spi_flash
diff --git a/keyboards/gmmk/pro/rev2/config.h b/keyboards/gmmk/pro/rev2/config.h
new file mode 100644
index 0000000000..c2b3755d77
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/config.h
@@ -0,0 +1,26 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* External spi flash */
+#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B12
+#define WEAR_LEVELING_BACKING_SIZE 2048
+
+/* SPI Config for LED Driver */
+#define SPI_DRIVER SPIDQ
diff --git a/keyboards/gmmk/pro/rev2/halconf.h b/keyboards/gmmk/pro/rev2/halconf.h
new file mode 100644
index 0000000000..8d9b60c234
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/halconf.h
@@ -0,0 +1,23 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#define HAL_USE_SPI TRUE
+#define SPI_USE_WAIT TRUE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+
+#include_next <halconf.h>
diff --git a/keyboards/gmmk/pro/rev2/iso/config.h b/keyboards/gmmk/pro/rev2/iso/config.h
new file mode 100644
index 0000000000..82390fc147
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/iso/config.h
@@ -0,0 +1,23 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+#define DRIVER_1_LED_TOTAL 66
+#define DRIVER_2_LED_TOTAL 33
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
diff --git a/keyboards/gmmk/pro/rev2/iso/info.json b/keyboards/gmmk/pro/rev2/iso/info.json
new file mode 100644
index 0000000000..afec8e275b
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/iso/info.json
@@ -0,0 +1,116 @@
+{
+ "keyboard_name": "GMMK Pro ISO",
+ "manufacturer": "Glorious",
+ "url": "https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-black-reservation",
+ "maintainer": "GloriousThrall",
+ "usb": {
+ "vid": "0x320F",
+ "pid": "0x5044",
+ "device_version": "0.0.2"
+ },
+ "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":"Printscreen", "x":14, "y":0},
+ {"label":"Rotary", "x":15.5, "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":"Delete", "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":"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":"Iso #", "x":12.75, "y":3.25},
+ {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2},
+
+ {"label":"Page Down", "x":15.5, "y":3.25},
+
+ {"label":"Shift", "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":"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":"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},
+ {"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/gmmk/pro/rev2/iso/iso.c b/keyboards/gmmk/pro/rev2/iso/iso.c
new file mode 100644
index 0000000000..3567a52d0d
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/iso/iso.c
@@ -0,0 +1,243 @@
+/* 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 "iso.h"
+
+#ifdef RGB_MATRIX_ENABLE
+// clang-format off
+led_config_t g_led_config = {{
+ { 4, NO_LED, NO_LED, 96, 65, 80, 5, 28 },
+ { 8, 2, 9, 0, 10, 76, 1, 7 },
+ { 14, 3, 15, 67, 16, 87, 6, 13 },
+ { 20, 18, 21, 23, 22, 94, 12, 19 },
+ { 25, 30, 26, 31, 27, 32, 29, 24 },
+ { 41, 36, 42, 37, 43, 38, 35, 40 },
+ { 46, 90, 47, 34, 48, 73, 79, 45 },
+ { 52, 39, 53, 98, 54, 83, 44, 51 },
+ { 58, 63, 59, 64, 95, 60, 62, 57 },
+ { 11, 91, 55, 17, 33, 49, NO_LED, 70 },
+ { NO_LED, 86, NO_LED, 61, 97, 66, 50, 56 }
+}, {
+ {0, 0}, // 0, ESC, k13
+ {0, 15}, // 1, `, k16
+ {4, 26}, // 2, Tab, k11
+ {5, 38}, // 3, Caps, k21
+ {2, 49}, // 4, Sh_L, k00
+ {2, 61}, // 5, Ct_L, k06
+ {18, 0}, // 6, F1, k26
+ {14, 15}, // 7, 1, k17
+ {22, 26}, // 8, Q, k10
+ {25, 38}, // 9, A, k12
+ {33, 49}, // 10, Z, k14
+ {20, 61}, // 11, Win_L, k90
+ {33, 0}, // 12, F2, k36
+ {29, 15}, // 13, 2, k27
+ {36, 26}, // 14, W, k20
+ {40, 38}, // 15, S, k22
+ {47, 49}, // 16, X, k24
+ {38, 61}, // 17, Alt_L, k93
+ {47, 0}, // 18, F3, k31
+ {43, 15}, // 19, 3, k37
+ {51, 26}, // 20, E, k30
+ {54, 38}, // 21, D, k32
+ {61, 49}, // 22, C, k34
+ {61, 0}, // 23, F4, k33
+ {58, 15}, // 24, 4, k47
+ {65, 26}, // 25, R, k40
+ {69, 38}, // 26, F, k42
+ {76, 49}, // 27, V, k44
+ {79, 0}, // 28, F5, k07
+ {72, 15}, // 29, 5, k46
+ {79, 26}, // 30, T, k41
+ {83, 38}, // 31, G, k43
+ {90, 49}, // 32, B, k45
+ {92, 61}, // 33, SPACE, k94
+ {94, 0}, // 34, F6, k63
+ {87, 15}, // 35, 6, k56
+ {94, 26}, // 36, Y, k51
+ {98, 38}, // 37, H, k53
+ {105, 49}, // 38, N, k55
+ {108, 0}, // 39, F7, k71
+ {101, 15}, // 40, 7, k57
+ {108, 26}, // 41, U, k50
+ {112, 38}, // 42, J, k52
+ {119, 49}, // 43, M, k54
+ {123, 0}, // 44, F8, k76
+ {116, 15}, // 45, 8, k67
+ {123, 26}, // 46, I, k60
+ {126, 38}, // 47, K, k62
+ {134, 49}, // 48, ,, k64
+ {145, 61}, // 49, Alt_R, k95
+ {141, 0}, // 50, F9, ka6
+ {130, 15}, // 51, 9, k77
+ {137, 26}, // 52, O, k70
+ {141, 38}, // 53, L, k72
+ {148, 49}, // 54, ., k74
+ {159, 61}, // 55, FN, k92
+ {155, 0}, // 56, F10, ka7
+ {145, 15}, // 57, 0, k87
+ {152, 26}, // 58, P, k80
+ {155, 38}, // 59, ;, k82
+ {163, 49}, // 60, /, k85
+ {170, 0}, // 61, F11, ka3
+ {159, 15}, // 62, -, k86
+ {166, 26}, // 63, [, k81
+ {170, 38}, // 64, ", k83
+ {173, 61}, // 65, Ct_R, k04
+ {184, 0}, // 66, F12, ka5
+ {18, 49}, // 67, \, k23
+ {0, 8}, // 68, LED, l01
+ {224, 8}, // 69, LED, l11
+ {202, 0}, // 70, Prt, k97
+ {0, 15}, // 71, LED, l02
+ {224, 15}, // 72, LED, l12
+ {224, 15}, // 73, Del, k65
+ {0, 21}, // 74, LED, l03
+ {224, 21}, // 75, LED, l13
+ {224, 26}, // 76, PgUp, k15
+ {0, 28}, // 77, LED, l04
+ {224, 28}, // 78, LED, l14
+ {173, 15}, // 79, =, k66
+ {220, 64}, // 80, Right, k05
+ {0, 35}, // 81, LED, l05
+ {224, 35}, // 82, LED, l15
+ {224, 49}, // 83, End, k75
+ {0, 42}, // 84, LED, l06
+ {224, 42}, // 85, LED, l16
+ {195, 15}, // 86, BSpc, ka1
+ {224, 38}, // 87, PgDn, k25
+ {0, 48}, // 88, LED, l07
+ {224, 48}, // 89, LED, l17
+ {181, 26}, // 90, ], k61
+ {182, 49}, // 91, Sh_R, k91
+ {0, 55}, // 92, LED, l08
+ {224, 55}, // 93, LED, l18
+ {206, 52}, // 94, Up, k35
+ {184, 38}, // 95, #, k84
+ {191, 64}, // 96, Left, k03
+ {201, 26}, // 97, Enter, ka4
+ {206, 64}, // 98, Down, k73
+}, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 4, 2, 2, 4, 2,
+ 2, 4, 2, 2, 4, 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 4, 4, 2, 2, 4, 4, 4, 4, 4
+}};
+
+const aw_led g_aw_leds[DRIVER_LED_TOTAL] = {
+ {0, CS1_SW1, CS2_SW1, CS3_SW1}, // 0, ESC, k13
+ {0, CS4_SW1, CS5_SW1, CS6_SW1}, // 1, ~, k16
+ {0, CS7_SW1, CS8_SW1, CS9_SW1}, // 2, Tab, k11
+ {0, CS10_SW1, CS11_SW1, CS12_SW1}, // 3, Caps, k21
+ {0, CS13_SW1, CS14_SW1, CS15_SW1}, // 4, Sh_L, k00
+ {0, CS16_SW1, CS17_SW1, CS18_SW1}, // 5, Ct_L, k06
+ {0, CS1_SW2, CS2_SW2, CS3_SW2}, // 6, F1, k26
+ {0, CS4_SW2, CS5_SW2, CS6_SW2}, // 7, 1, k17
+ {0, CS7_SW2, CS8_SW2, CS9_SW2}, // 8, Q, k10
+ {0, CS10_SW2, CS11_SW2, CS12_SW2}, // 9, A, k12
+ {0, CS13_SW2, CS14_SW2, CS15_SW2}, // 10, Z, k14
+ {0, CS16_SW2, CS17_SW2, CS18_SW2}, // 11, Win_L, k90
+ {0, CS1_SW3, CS2_SW3, CS3_SW3}, // 12, F2, k36
+ {0, CS4_SW3, CS5_SW3, CS6_SW3}, // 13, 2, k27
+ {0, CS7_SW3, CS8_SW3, CS9_SW3}, // 14, W, k20
+ {0, CS10_SW3, CS11_SW3, CS12_SW3}, // 15, S, k22
+ {0, CS13_SW3, CS14_SW3, CS15_SW3}, // 16, X, k24
+ {0, CS16_SW3, CS17_SW3, CS18_SW3}, // 17, Alt_L, k93
+ {0, CS1_SW4, CS2_SW4, CS3_SW4}, // 18, F3, k31
+ {0, CS4_SW4, CS5_SW4, CS6_SW4}, // 19, 3, k37
+ {0, CS7_SW4, CS8_SW4, CS9_SW4}, // 20, E, k30
+ {0, CS10_SW4, CS11_SW4, CS12_SW4}, // 21, D, k32
+ {0, CS13_SW4, CS14_SW4, CS15_SW4}, // 22, C, k34
+ {0, CS1_SW5, CS2_SW5, CS3_SW5}, // 23, F4, k33
+ {0, CS4_SW5, CS5_SW5, CS6_SW5}, // 24, 4, k47
+ {0, CS7_SW5, CS8_SW5, CS9_SW5}, // 25, R, k40
+ {0, CS10_SW5, CS11_SW5, CS12_SW5}, // 26, F, k42
+ {0, CS13_SW5, CS14_SW5, CS15_SW5}, // 27, V, k44
+ {0, CS1_SW6, CS2_SW6, CS3_SW6}, // 28, F5, k07
+ {0, CS4_SW6, CS5_SW6, CS6_SW6}, // 29, 5, k46
+ {0, CS7_SW6, CS8_SW6, CS9_SW6}, // 30, T, k41
+ {0, CS10_SW6, CS11_SW6, CS12_SW6}, // 31, G, k43
+ {0, CS13_SW6, CS14_SW6, CS15_SW6}, // 32, B, k45
+ {0, CS16_SW6, CS17_SW6, CS18_SW6}, // 33, SPACE, k94
+ {0, CS1_SW7, CS2_SW7, CS3_SW7}, // 34, F6, k63
+ {0, CS4_SW7, CS5_SW7, CS6_SW7}, // 35, 6, k56
+ {0, CS7_SW7, CS8_SW7, CS9_SW7}, // 36, Y, k51
+ {0, CS10_SW7, CS11_SW7, CS12_SW7}, // 37, H, k53
+ {0, CS13_SW7, CS14_SW7, CS15_SW7}, // 38, N, k55
+ {0, CS1_SW8, CS2_SW8, CS3_SW8}, // 39, F7, k71
+ {0, CS4_SW8, CS5_SW8, CS6_SW8}, // 40, 7, k57
+ {0, CS7_SW8, CS8_SW8, CS9_SW8}, // 41, U, k50
+ {0, CS10_SW8, CS11_SW8, CS12_SW8}, // 42, J, k52
+ {0, CS13_SW8, CS14_SW8, CS15_SW8}, // 43, M, k54
+ {0, CS1_SW9, CS2_SW9, CS3_SW9}, // 44, F8, k76
+ {0, CS4_SW9, CS5_SW9, CS6_SW9}, // 45, 8, k67
+ {0, CS7_SW9, CS8_SW9, CS9_SW9}, // 46, I, k60
+ {0, CS10_SW9, CS11_SW9, CS12_SW9}, // 47, K, k62
+ {0, CS13_SW9, CS14_SW9, CS15_SW9}, // 48, ,, k64
+ {0, CS16_SW9, CS17_SW9, CS18_SW9}, // 49, Alt_R, k95
+ {0, CS1_SW10, CS2_SW10, CS3_SW10}, // 50, F9, ka6
+ {0, CS4_SW10, CS5_SW10, CS6_SW10}, // 51, 9, k77
+ {0, CS7_SW10, CS8_SW10, CS9_SW10}, // 52, O, k70
+ {0, CS10_SW10, CS11_SW10, CS12_SW10}, // 53, L, k72
+ {0, CS13_SW10, CS14_SW10, CS15_SW10}, // 54, ., k74
+ {0, CS16_SW10, CS17_SW10, CS18_SW10}, // 55, FN, k92
+ {0, CS1_SW11, CS2_SW11, CS3_SW11}, // 56, F10, ka7
+ {0, CS4_SW11, CS5_SW11, CS6_SW11}, // 57, 0, k87
+ {0, CS7_SW11, CS8_SW11, CS9_SW11}, // 58, P, k80
+ {0, CS10_SW11, CS11_SW11, CS12_SW11}, // 59, ;, k82
+ {0, CS13_SW11, CS14_SW11, CS15_SW11}, // 60, ?, k85
+ {0, CS1_SW12, CS2_SW12, CS3_SW12}, // 61, F11, ka3
+ {0, CS4_SW12, CS5_SW12, CS6_SW12}, // 62, -, k86
+ {0, CS7_SW12, CS8_SW12, CS9_SW12}, // 63, [, k81
+ {0, CS10_SW12, CS11_SW12, CS12_SW12}, // 64, ", k83
+ {0, CS16_SW12, CS17_SW12, CS18_SW12}, // 65, Ct_R, k04
+
+ {1, CS1_SW1, CS2_SW1, CS3_SW1}, // 66, F12, ka5
+ {1, CS4_SW1, CS5_SW1, CS6_SW1}, // 67, \, k23
+ {1, CS13_SW1, CS14_SW1, CS15_SW1}, // 68, LED, l01
+ {1, CS16_SW1, CS17_SW1, CS18_SW1}, // 69, LED, l11
+ {1, CS4_SW2, CS5_SW2, CS6_SW2}, // 70, Prt, k97
+ {1, CS13_SW2, CS14_SW2, CS15_SW2}, // 71, LED, l02
+ {1, CS16_SW2, CS17_SW2, CS18_SW2}, // 72, LED, l12
+ {1, CS4_SW3, CS5_SW3, CS6_SW3}, // 73, Del, k65
+ {1, CS13_SW3, CS14_SW3, CS15_SW3}, // 74, LED, l03
+ {1, CS16_SW3, CS17_SW3, CS18_SW3}, // 75, LED, l13
+ {1, CS4_SW4, CS5_SW4, CS6_SW4}, // 76, PgUp, k15
+ {1, CS13_SW4, CS14_SW4, CS15_SW4}, // 77, LED, l04
+ {1, CS16_SW4, CS17_SW4, CS18_SW4}, // 78, LED, l14
+ {1, CS1_SW5, CS2_SW5, CS3_SW5}, // 79, =, k66
+ {1, CS10_SW5, CS11_SW5, CS12_SW5}, // 80, Right, k05
+ {1, CS13_SW5, CS14_SW5, CS15_SW5}, // 81, LED, l05
+ {1, CS16_SW5, CS17_SW5, CS18_SW5}, // 82, LED, l15
+ {1, CS4_SW6, CS5_SW6, CS6_SW6}, // 83, End, k75
+ {1, CS13_SW6, CS14_SW6, CS15_SW6}, // 84, LED, l06
+ {1, CS16_SW6, CS17_SW6, CS18_SW6}, // 85, LED, l16
+ {1, CS1_SW7, CS2_SW7, CS3_SW7}, // 86, BSpc, ka1
+ {1, CS4_SW7, CS5_SW7, CS6_SW7}, // 87, PgDn, k25
+ {1, CS13_SW7, CS14_SW7, CS15_SW7}, // 88, LED, l07
+ {1, CS16_SW7, CS17_SW7, CS18_SW7}, // 89, LED, l17
+ {1, CS1_SW8, CS2_SW8, CS3_SW8}, // 90, ], k61
+ {1, CS4_SW8, CS5_SW8, CS6_SW8}, // 91, Sh_R, k91
+ {1, CS13_SW8, CS14_SW8, CS15_SW8}, // 92, LED, l08
+ {1, CS16_SW8, CS17_SW8, CS18_SW8}, // 93, LED, l18
+ {1, CS4_SW9, CS5_SW9, CS6_SW9}, // 94, Up, k35
+ {1, CS1_SW10, CS2_SW10, CS3_SW10}, // 95, #, k84
+ {1, CS4_SW10, CS5_SW10, CS6_SW10}, // 96, Left, k03
+ {1, CS1_SW11, CS2_SW11, CS3_SW11}, // 97, Enter, ka4
+ {1, CS4_SW11, CS5_SW11, CS6_SW11}, // 98, Down, k73
+};
+// clang-format on
+#endif
diff --git a/keyboards/gmmk/pro/rev2/iso/iso.h b/keyboards/gmmk/pro/rev2/iso/iso.h
new file mode 100644
index 0000000000..a5844e10eb
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/iso/iso.h
@@ -0,0 +1,52 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "pro.h"
+
+#define ___ KC_NO
+
+// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
+// ` 1 2 3 4 5 6 7 8 9 0 - = BSpc 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
+
+// clang-format off
+#define LAYOUT( \
+ k13, k26, k36, k31, k33, k07, k63, k71, k76, ka6, ka7, ka3, ka5, k97, k01, \
+ k16, k17, k27, k37, k47, k46, k56, k57, k67, k77, k87, k86, k66, ka1, k65, \
+ k11, k10, k20, k30, k40, k41, k51, k50, k60, k70, k80, k81, k61, k15, \
+ k21, k12, k22, k32, k42, k43, k53, k52, k62, k72, k82, k83, k84, ka4, k25, \
+ k00, k23, k14, k24, k34, k44, k45, k55, k54, k64, k74, k85, k91, k35, k75, \
+ k06, k90, k93, k94, k95, k92, k04, k03, k73, k05 \
+) \
+{ \
+ { k00, k01, ___, 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, 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}, \
+ { k90, k91, k92, k93, k94, k95, ___, k97}, \
+ { ___, ka1, ___, ka3, ka4, ka5, ka6, ka7} \
+}
+// clang-format on
diff --git a/keyboards/gmmk/pro/rev2/iso/keymaps/default/keymap.c b/keyboards/gmmk/pro/rev2/iso/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c44e4905d0
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/iso/keymaps/default/keymap.c
@@ -0,0 +1,72 @@
+/* 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] = {
+
+// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt 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
+
+
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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+backspace. 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_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_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, 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, _______, _______, _______,
+ _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, 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/rev2/iso/keymaps/via/keymap.c b/keyboards/gmmk/pro/rev2/iso/keymaps/via/keymap.c
new file mode 100644
index 0000000000..acd41ebec1
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/iso/keymaps/via/keymap.c
@@ -0,0 +1,90 @@
+/* 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] = {
+
+// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt 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
+
+
+ // The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT 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+backspace. 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_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_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, 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, _______, _______, _______,
+ _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, _______, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
+ _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
+ ),
+
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+
+};
+// clang-format on
+
+/* encoder; start */
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
+};
+#endif
diff --git a/keyboards/gmmk/pro/rev2/iso/keymaps/via/rules.mk b/keyboards/gmmk/pro/rev2/iso/keymaps/via/rules.mk
new file mode 100644
index 0000000000..f1adcab005
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/iso/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/gmmk/pro/rev2/iso/readme.md b/keyboards/gmmk/pro/rev2/iso/readme.md
new file mode 100644
index 0000000000..7d46370e3a
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/iso/readme.md
@@ -0,0 +1,37 @@
+# GMMK PRO (ISO)
+
+A tenkeyless 75% keyboard made and sold by Glorious LLC. Equipped with the WestBerry G7 ARM Cortex-M4 microcontroller, with support for rotary encoders and three additional layouts. [More info at Glorious](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-iso-black-slate)
+
+* Keyboard Maintainer: [GloriousThrall](https://github.com/GloriousThrall)
+* Hardware Supported: GMMK Pro
+* Hardware Availability: [GloriousPCGaming.com](https://www.pcgamingrace.com/products/glorious-gmmk-pro-75-barebone-iso-black-slate)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make gmmk/pro/rev2/iso:default
+
+Flashing example for this keyboard:
+
+ make gmmk/pro/rev2/iso:default:flash
+
+To reset the board into bootloader mode, do one of the following:
+
+* Hold the Reset switch mounted on the bottom side of the PCB while connecting the USB cable
+* Hold the Escape key while connecting the USB cable (also erases persistent settings)
+* Fn+Backspace will reset the board to bootloader mode if you have flashed the default QMK 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).
+
+## Case Screw Replacements
+
+Many users report stripped case screws when disassembling the board.
+
+The stock case screws are:
+* Thread: M2
+* Thread length: ~5 mm
+* Head diameter: ~3.8 mm
+* Head counterbore diameter: ~4.0 mm
+* Head counterbore depth: ~1.9 mm
+
+Most M2x5mm screws should fit fine, although it's best to ensure that the screw head will fit inside the counterbore.
+For reference, [this hex socket head screw](https://www.mcmaster.com/91292A005/) from McMaster-Carr should fit nearly flush (head will protrude above the counterbore by ~0.1 mm).
diff --git a/keyboards/gmmk/pro/rev2/iso/rules.mk b/keyboards/gmmk/pro/rev2/iso/rules.mk
new file mode 100644
index 0000000000..cf6373ae46
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/iso/rules.mk
@@ -0,0 +1,26 @@
+# MCU name
+MCU = WB32F3G71
+
+# Bootloader selection
+BOOTLOADER = wb32-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
+ENCODER_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = AW20216
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = spi_flash
diff --git a/keyboards/gmmk/pro/rev2/mcuconf.h b/keyboards/gmmk/pro/rev2/mcuconf.h
new file mode 100644
index 0000000000..4fa7c1e256
--- /dev/null
+++ b/keyboards/gmmk/pro/rev2/mcuconf.h
@@ -0,0 +1,22 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef WB32_SPI_USE_QSPI
+#define WB32_SPI_USE_QSPI TRUE
diff --git a/keyboards/gon/nerd60/config.h b/keyboards/gon/nerd60/config.h
index 5e2fe57327..90b4b18494 100644
--- a/keyboards/gon/nerd60/config.h
+++ b/keyboards/gon/nerd60/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E45 // NE
-#define PRODUCT_ID 0x3630 // 60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER GON
-#define PRODUCT NerD 60
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -20,7 +13,6 @@
/* matrix pins */
#define MATRIX_ROW_PINS { B4, E2, F4, F7, F1, F6, C6, F5, D7, C7 }
#define MATRIX_COL_PINS { E6, B0, B1, B2, B3, F0, D0, D5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/gon/nerd60/info.json b/keyboards/gon/nerd60/info.json
index 66db3f1185..baf67fe528 100644
--- a/keyboards/gon/nerd60/info.json
+++ b/keyboards/gon/nerd60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "GON NerD 60",
+ "keyboard_name": "NerD 60",
+ "manufacturer": "GON",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4E45",
+ "pid": "0x3630",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/gon/nerd60/keymaps/mauin/keymap.c b/keyboards/gon/nerd60/keymaps/mauin/keymap.c
index 78a2eb353c..314b55199a 100644
--- a/keyboards/gon/nerd60/keymaps/mauin/keymap.c
+++ b/keyboards/gon/nerd60/keymaps/mauin/keymap.c
@@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------'
*/
[_SY] = LAYOUT_all(
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, 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/nerd60/readme.md b/keyboards/gon/nerd60/readme.md
index 1b4689ea03..fe7b01bf7e 100644
--- a/keyboards/gon/nerd60/readme.md
+++ b/keyboards/gon/nerd60/readme.md
@@ -24,4 +24,4 @@ not work anymore. You will lose your warranty and official support from GON!_
## Reset button
-To run the `make dfu` command to flash keymaps onto the board, you need to put the board into DFU mode. As the GON NerD PCBs do not have a reset button on the board to put it into DFU mode, be sure to include a `RESET` button on your keymap. Otherwise you'll have to unscrew your keyboard from the case and short the GND and RST pins.
+To run the `make dfu` command to flash keymaps onto the board, you need to put the board into DFU mode. As the GON NerD PCBs do not have a reset button on the board to put it into DFU mode, be sure to include a `QK_BOOT` button on your keymap. Otherwise you'll have to unscrew your keyboard from the case and short the GND and RST pins.
diff --git a/keyboards/gon/nerdtkl/config.h b/keyboards/gon/nerdtkl/config.h
index 74d67f30d4..66b132e052 100644
--- a/keyboards/gon/nerdtkl/config.h
+++ b/keyboards/gon/nerdtkl/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E45 // NE
-#define PRODUCT_ID 0x5244 // RD
-#define DEVICE_VER 0x0001
-#define MANUFACTURER GON
-#define PRODUCT NerD TKL
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 9
@@ -20,7 +13,6 @@
/* matrix pins */
#define MATRIX_ROW_PINS { B4, E2, F4, F7, F1, F6, C6, F5, D7, C7 }
#define MATRIX_COL_PINS { E6, B0, B1, B2, B3, F0, D0, D5, D1 }
-#define UNUSED_PINS
#define BOOTMAGIC_LITE_ROW 8
#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/gon/nerdtkl/info.json b/keyboards/gon/nerdtkl/info.json
index 45155fd737..1af13bf237 100644
--- a/keyboards/gon/nerdtkl/info.json
+++ b/keyboards/gon/nerdtkl/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "GON NerD TKL",
+ "keyboard_name": "NerD TKL",
+ "manufacturer": "GON",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4E45",
+ "pid": "0x5244",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl": {
"layout": [
diff --git a/keyboards/gon/nerdtkl/keymaps/gam3cat/keymap.c b/keyboards/gon/nerdtkl/keymaps/gam3cat/keymap.c
index c4294c812e..39dcb175ab 100644
--- a/keyboards/gon/nerdtkl/keymaps/gam3cat/keymap.c
+++ b/keyboards/gon/nerdtkl/keymaps/gam3cat/keymap.c
@@ -183,7 +183,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* *-----------------------------------------------------------------------*
*/
[_AL] = LAYOUT_tkl( \
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
QMK_REV, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, XXXXXXX, BL_TOGG, BL_DEC, BL_INC, XXXXXXX, XXXXXXX, KC_DMR1, KC_DMP1, \
_______, DF(_BL), DF(_WL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DMRS, KC_DMR2, KC_DMP2, \
XXXXXXX, XXXXXXX, XXXXXXX, DF(_DL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
@@ -241,7 +241,7 @@ void matrix_scan_user(void) {
}
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _BL:
custom_backlight_level(0);
break;
diff --git a/keyboards/gon/nerdtkl/readme.md b/keyboards/gon/nerdtkl/readme.md
index f8e982e770..db7025f10b 100644
--- a/keyboards/gon/nerdtkl/readme.md
+++ b/keyboards/gon/nerdtkl/readme.md
@@ -24,4 +24,4 @@ not work anymore. You will lose your warranty and official support from GON!_
## Reset button
-To run the `make dfu` command to flash keymaps onto the board, you need to put the board into DFU mode. As the GON NerD PCBs do not have a reset button on the board to put it into DFU mode, be sure to include a `RESET` button on your keymap. Otherwise you'll have to unscrew your keyboard from the case and short the GND and RST pins.
+To run the `make dfu` command to flash keymaps onto the board, you need to put the board into DFU mode. As the GON NerD PCBs do not have a reset button on the board to put it into DFU mode, be sure to include a `QK_BOOT` button on your keymap. Otherwise you'll have to unscrew your keyboard from the case and short the GND and RST pins.
diff --git a/keyboards/gopolar/gg86/config.h b/keyboards/gopolar/gg86/config.h
new file mode 100644
index 0000000000..7964834623
--- /dev/null
+++ b/keyboards/gopolar/gg86/config.h
@@ -0,0 +1,90 @@
+/* Copyright 2021 Gopolar
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 6
+#define MATRIX_COLS 17
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, D5 }
+#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C6, B6, B5, B4, D7, D6, D4, C7, E6, D2, D3 }
+
+/* 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
+
+/* Use the custom font */
+#define OLED_FONT_H "lib/glcdfont.c"
+
+#ifdef RGB_MATRIX_ENABLE
+ /* RGB Matrix config */
+ #define RGB_DI_PIN E2
+ #define DRIVER_LED_TOTAL 100
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
+ #define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+ #define RGB_MATRIX_KEYPRESSES
+
+ /* 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_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/gopolar/gg86/gg86.c b/keyboards/gopolar/gg86/gg86.c
new file mode 100644
index 0000000000..3e790cd61e
--- /dev/null
+++ b/keyboards/gopolar/gg86/gg86.c
@@ -0,0 +1,79 @@
+/* Copyright 2021 Gopolar
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "gg86.h"
+
+// OLED animation
+#include "lib/logo.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ { 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, NO_LED, 74, 73, 72 },
+ { 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71 },
+ { 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38 },
+ { 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, NO_LED, 37, NO_LED, NO_LED, NO_LED },
+ { 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, NO_LED, 10, NO_LED },
+ { 0, 1, 2, NO_LED, NO_LED, 3, NO_LED, NO_LED, NO_LED, NO_LED, 4, 5, 6, NO_LED, 7, 8, 9 }
+}, {
+ // Key matrix (0 -> 87)
+ {3 , 64}, {19 , 64}, {36 , 64}, {91 , 64}, {146, 64}, {162, 64}, {179, 64}, {198, 64}, {211, 64}, {224, 64},
+ {211, 52}, {182, 52}, {170, 52}, {146, 52}, {133, 52}, {120, 52}, {107, 52}, {94 , 52}, {81 , 52}, {68 , 52}, {55 , 52}, {42 , 52}, {29 , 52}, {16 , 52}, {2 , 52},
+ {2 , 41}, {23 , 41}, {36 , 41}, {49 , 41}, {62 , 41}, {75 , 41}, {88 , 41}, {101, 41}, {114, 41}, {127, 41}, {140, 41}, {153, 41}, {174, 41},
+ {224, 29}, {211, 29}, {198, 29}, {179, 29}, {162, 29}, {149, 29}, {136, 29}, {123, 29}, {110, 29}, {97 , 29}, {84 , 29}, {71 , 29}, {58 , 29}, {45 , 29}, {32 , 29}, {19 , 29}, {3 , 29},
+ {0 , 17}, {13 , 17}, {26 , 17}, {39 , 17}, {52 , 17}, {65 , 17}, {78 , 17}, {91 , 17}, {104, 17}, {117, 17}, {130, 17}, {143, 17}, {156, 17}, {175, 17}, {198, 17}, {211, 17}, {224, 17},
+ {224, 0}, {211, 0}, {198, 0}, {182, 0}, {169, 0}, {156, 0}, {143, 0}, {123, 0}, {110, 0}, {97 , 0}, {84 , 0}, {65 , 0}, {52 , 0}, {39 , 0}, {26 , 0}, {0 , 0},
+
+ // Underglow (88 -> 99)
+ {1 , 6}, {50 , 6}, {89 , 6}, {135, 6}, {176, 6}, {198, 6}, {221, 55}, {192, 58}, {138, 59}, {96 , 61}, {42 , 59}, {7 , 60},
+}, {
+ // Key matrix (0 -> 87)
+ 1, 1, 1, 4, 1, 1, 1, 4, 4, 4,
+ 4, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 8, 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, 4, 4, 4, 1,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 4, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+
+ // Underglow (88 -> 99)
+ 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/gopolar/gg86/gg86.h b/keyboards/gopolar/gg86/gg86.h
new file mode 100644
index 0000000000..6922f8dab5
--- /dev/null
+++ b/keyboards/gopolar/gg86/gg86.h
@@ -0,0 +1,116 @@
+/* Copyright 2021 Gopolar
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │4D │ │4F │
+ * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+ * │50 │51 │52 │55 │5A │5B │5C │ │5E │5F │5G │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+ */
+
+#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, 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, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \
+ K50, K51, K52, K55, K5A, K5B, K5C, 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, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, XXX, K4F, XXX }, \
+ { K50, K51, K52, XXX, XXX, K55, XXX, XXX, XXX, XXX, K5A, K5B, K5C, XXX, K5E, K5F, K5G }, \
+}
+
+/* ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │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 │4C │ │4F │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───â”
+ * │50 │51 │52 │55 │5A │5B │5C │ │5E │5F │5G │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+ */
+
+#define LAYOUT_tkl_ansi_tsangan( \
+ 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, K4C, K4F, \
+ K50, K51, K52, K55, K5A, K5B, K5C, 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, K4C, XXX, XXX, K4F, XXX }, \
+ { K50, K51, K52, XXX, XXX, K55, XXX, XXX, XXX, XXX, K5A, K5B, K5C, XXX, K5E, K5F, K5G }, \
+}
+
+/* ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │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 │ │ │2E │2F │2G │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴â”3D │ └───┴───┴───┘
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │2D │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───â”
+ * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │ │4F │
+ * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───â”
+ * │50 │51 │52 │55 │5A │5B │5C │ │5E │5F │5G │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+ */
+
+#define LAYOUT_tkl_iso_tsangan( \
+ 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, K2D, K3D, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \
+ K50, K51, K52, K55, K5A, K5B, K5C, 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, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, XXX, XXX, K4F, XXX }, \
+ { K50, K51, K52, XXX, XXX, K55, XXX, XXX, XXX, XXX, K5A, K5B, K5C, XXX, K5E, K5F, K5G }, \
+}
diff --git a/keyboards/gopolar/gg86/info.json b/keyboards/gopolar/gg86/info.json
new file mode 100644
index 0000000000..9fbca5b36d
--- /dev/null
+++ b/keyboards/gopolar/gg86/info.json
@@ -0,0 +1,301 @@
+{
+ "keyboard_name": "GG86 Tai-Chi",
+ "manufacturer": "Gopolar",
+ "url": "",
+ "maintainer": "Gopolar",
+ "usb": {
+ "vid": "0x0007",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
+ "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":"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":"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":"\\| / ISO Hash", "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},
+ {"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":"Shift", "x":12.25, "y":4.5, "w":1.75},
+ {"label":"Shift", "x":14, "y":4.5},
+ {"label":"\u2191", "x":16.25, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.5},
+ {"label":"Win", "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":"Alt", "x":11, "y":5.5, "w":1.5},
+ {"label":"Fn", "x":12.5, "y":5.5},
+ {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5},
+ {"label":"\u2190", "x":15.25, "y":5.5},
+ {"label":"\u2193", "x":16.25, "y":5.5},
+ {"label":"\u2192", "x":17.25, "y":5.5}
+ ]
+ }
+ "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.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":"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.5},
+ {"label":"Win", "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":"Alt", "x":11, "y":5.5, "w":1.5},
+ {"label":"Fn", "x":12.5, "y":5.5},
+ {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5},
+ {"label":"\u2190", "x":15.25, "y":5.5},
+ {"label":"\u2193", "x":16.25, "y":5.5},
+ {"label":"\u2192", "x":17.25, "y":5.5}
+ ]
+ }
+ "LAYOUT_tkl_iso_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.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":"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":"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 Hash", "x":12.75, "y":3.5},
+ {"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2},
+
+ {"label":"Shift", "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":"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.5},
+ {"label":"Win", "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":"Alt", "x":11, "y":5.5, "w":1.5},
+ {"label":"Fn", "x":12.5, "y":5.5},
+ {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5},
+ {"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/gopolar/gg86/keymaps/bongocat/config.h b/keyboards/gopolar/gg86/keymaps/bongocat/config.h
new file mode 100644
index 0000000000..7255016531
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/bongocat/config.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
+
+/* Additional thing to reduce compiled size */
+#define DYNAMIC_KEYMAP_LAYER_COUNT 2
+#define NO_ACTION_ONESHOT
+
+#ifdef RGB_MATRIX_ENABLE
+ /* RGB Matrix config */
+ #undef RGB_MATRIX_KEYPRESSES
+
+ /* RGB Matrix effect */
+ #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_UP_DOWN
+ #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+ #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+ #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_PENDULUM
+ #undef ENABLE_RGB_MATRIX_HUE_WAVE
+ #undef ENABLE_RGB_MATRIX_PIXEL_RAIN
+#endif
diff --git a/keyboards/gopolar/gg86/keymaps/bongocat/keymap.c b/keyboards/gopolar/gg86/keymaps/bongocat/keymap.c
new file mode 100644
index 0000000000..de1046c5d3
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/bongocat/keymap.c
@@ -0,0 +1,226 @@
+/* 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
+
+// OLED animation
+#include "oled/bongocat.h"
+
+#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,
+ _FN,
+};
+
+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│ │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 │ - │ = │ Bckspc│ │Hom│Scr│Pse│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │ │End│Scr│Pse│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter│
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │LSft│ \ │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │RSt│ │ ↑ │
+ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+ │LCrl │GUI│ LAlt│ Space │ RAlt│ Fn│ RCrl│ │ ↠│ ↓ │ → │
+ └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+ ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ │ │ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │ │ │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │LSft│ | │ 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 15 16 */
+ [_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_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_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, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ │Slp│ │M_T│F13│F14│F15│ │F16│Rfh│Stp│ │ │ │ │ │Est│ │ │VoD│VoU│
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hui│Sai│Spi│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hud│Sad│Spd│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ │ │ │ │ │ │ │ │ │ │ │ │ RGB_Tog│
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │ │ │ │ │Cal│ │ │ │ │ │ │ │ │ │ │Vai│
+ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+ │ │ │ │ │ │ │ │ │Rod│Vad│Mod│
+ └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ [_FN] = LAYOUT_all(
+ KC_SLEP, RGB_M_T, KC_F13, KC_F14, KC_F15, KC_F16, KC_WREF, KC_WSTP, _______, _______, _______, _______, EEP_RST, _______, KC_VOLD, KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_SPI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_SPD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
+ _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
+ ),
+};
+
+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(25, rgb.r, rgb.g, rgb.b);
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b);
+ }
+ } else {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(25, 0, 0, 0);
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(73, 0, 0, 0);
+ }
+ }
+}
+
+#ifdef OLED_ENABLE
+ bool oled_task_user(void) {
+ led_t led_usb_state = host_keyboard_led_state();
+
+ 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);
+
+ return true;
+ }
+#endif
diff --git a/keyboards/gopolar/gg86/keymaps/bongocat/oled/bongocat.c b/keyboards/gopolar/gg86/keymaps/bongocat/oled/bongocat.c
new file mode 100644
index 0000000000..e328efd24a
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/bongocat/oled/bongocat.c
@@ -0,0 +1,378 @@
+/* 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 "quantum.h"
+
+// 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 525 // 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
+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/gopolar/gg86/keymaps/bongocat/oled/bongocat.h b/keyboards/gopolar/gg86/keymaps/bongocat/oled/bongocat.h
new file mode 100644
index 0000000000..a7ec3c5028
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/bongocat/oled/bongocat.h
@@ -0,0 +1,17 @@
+/* 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/>.
+ */
+
+void render_bongocat(void);
diff --git a/keyboards/gopolar/gg86/keymaps/bongocat/readme.md b/keyboards/gopolar/gg86/keymaps/bongocat/readme.md
new file mode 100644
index 0000000000..632f9c67e2
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/bongocat/readme.md
@@ -0,0 +1,3 @@
+# Keymap with VIA and Bongo Cat on OLED
+
+Keymap is default 87 qwerty, with TKL 7u-spacebar layout
diff --git a/keyboards/gopolar/gg86/keymaps/bongocat/rules.mk b/keyboards/gopolar/gg86/keymaps/bongocat/rules.mk
new file mode 100644
index 0000000000..05f6cfd501
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/bongocat/rules.mk
@@ -0,0 +1,4 @@
+SRC += oled/bongocat.c
+
+VIA_ENABLE = yes
+WPM_ENABLE = yes
diff --git a/keyboards/gopolar/gg86/keymaps/default/keymap.c b/keyboards/gopolar/gg86/keymaps/default/keymap.c
new file mode 100644
index 0000000000..070858c958
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/default/keymap.c
@@ -0,0 +1,325 @@
+/* Copyright 2021 Gopolar
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// OLED animation
+#include "lib/wave.h"
+
+#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 { };
+
+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│ │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 │ - │ = │ Bckspc│ │Hom│Scr│Pse│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │ │End│Scr│Pse│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter│
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │LSft│ \ │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │RSt│ │ ↑ │
+ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+ │LCrl │GUI│ LAlt│ Space │ RAlt│ Fn│ RCrl│ │ ↠│ ↓ │ → │
+ └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+ ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ │ │ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │ │ │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │LSft│ | │ 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 15 16 */
+ [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_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_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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ │Slp│ │M_T│F13│F14│F15│ │F16│Rfh│Stp│ │ │ │ │ │Est│ │ │VoD│VoU│
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hui│Sai│Spi│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hud│Sad│Spd│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ │ │ │ │ │ │ │ │ │ │ │ │ RGB_Tog│
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │ │ │ │ │Cal│ │ │ │ │ │ │ │ │ │ │Vai│
+ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+ │ │ │ │ │ │ │ │ │Rod│Vad│Mod│
+ └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ [1] = LAYOUT_all(
+ KC_SLEP, RGB_M_T, KC_F13, KC_F14, KC_F15, KC_F16, KC_WREF, KC_WSTP, _______, _______, _______, _______, EEP_RST, _______, KC_VOLD, KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_SPI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_SPD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
+ _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
+ ),
+
+/*
+ ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ │Slp│ │F13│F14│F15│F16│ │Rfh│Stp│ │ │ │ │ │ │ │ │ │VoD│VoU│
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hui│Sai│Spi│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hud│Sad│Spd│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ │ │ │ │ │ │ │ │ │ │ │ │ RGB_Tog│
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │ │ │ │ │Cal│ │ │ │ │ │ │ │ │ │ │Vai│
+ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+ │ │ │ │ │ │ │ │ │Rod│Vad│Mod│
+ └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ [2] = LAYOUT_all(
+ KC_SLEP, KC_F13, KC_F14, KC_F15, KC_F16, KC_WREF, KC_WSTP, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_SPI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_SPD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
+ _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
+ ),
+
+/*
+ ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ │Slp│ │F13│F14│F15│F16│ │Rfh│Stp│ │ │ │ │ │ │ │ │ │VoD│VoU│
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hui│Sai│Spi│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hud│Sad│Spd│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ │ │ │ │ │ │ │ │ │ │ │ │ RGB_Tog│
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │ │ │ │ │Cal│ │ │ │ │ │ │ │ │ │ │Vai│
+ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+ │ │ │ │ │ │ │ │ │Rod│Vad│Mod│
+ └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ [3] = LAYOUT_all(
+ KC_SLEP, KC_F13, KC_F14, KC_F15, KC_F16, KC_WREF, KC_WSTP, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_SPI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_SPD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
+ _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
+ ),
+};
+
+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(25, rgb.r, rgb.g, rgb.b);
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b);
+ }
+ } else {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(25, 0, 0, 0);
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(73, 0, 0, 0);
+ }
+ }
+}
+
+#ifdef OLED_ENABLE
+ static void render_layer_info(void) {
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_P(PSTR("QWERTY "), false);
+ break;
+ case 1:
+ oled_write_P(PSTR("Function "), false);
+ break;
+ case 2:
+ oled_write_P(PSTR("Function "), false);
+ break;
+ case 3:
+ oled_write_P(PSTR("Function "), false);
+ break;
+ default:
+ oled_write_P(PSTR("Undefined "), false);
+ }
+ }
+
+ static void render_layer_number(void) {
+ 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_P(PSTR("X"), false);
+ }
+ }
+
+ bool oled_task_user(void) {
+ led_t led_usb_state = host_keyboard_led_state();
+
+ oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLK ") : PSTR("----- "), false);
+ oled_write_P(PSTR(" GOPOLAR "), false);
+ oled_write_P(led_usb_state.scroll_lock ? PSTR(" SCRLK") : PSTR(" -----"), false);
+
+ // 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);
+ render_layer_info();
+ oled_write_P(PSTR("Layer: "), false);
+ render_layer_number();
+
+ return true;
+ }
+#endif
diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/config.h b/keyboards/gopolar/gg86/keymaps/horrortroll/config.h
new file mode 100644
index 0000000000..246f36bb94
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/horrortroll/config.h
@@ -0,0 +1,52 @@
+/* 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
+#define NO_ACTION_ONESHOT
+
+#ifdef RGB_MATRIX_ENABLE
+ /* RGB Matrix effect */
+ #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+ #undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+ #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_UP_DOWN
+ #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+ #undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+ #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_WAVE
+ #undef ENABLE_RGB_MATRIX_PIXEL_RAIN
+
+ #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_SPLASH
+ #undef ENABLE_RGB_MATRIX_SOLID_SPLASH
+ #undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c b/keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c
new file mode 100644
index 0000000000..f5e398ecbe
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/horrortroll/keymap.c
@@ -0,0 +1,88 @@
+/* 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 │ - │ = │ Bckspc│ │Hom│Scr│Pse│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │ │End│Scr│Pse│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter│
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │LSft│ \ │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │RSt│ │ ↑ │
+ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+ │LCrl │GUI│ LAlt│ Space │ RAlt│ Fn│ RCrl│ │ ↠│ ↓ │ → │
+ └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+ ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ │ │ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │ │ │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │LSft│ | │ 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 15 16 */
+ [_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_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_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, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ │Rst│ │MeP│VoD│VoU│Mut│ │Stp│Prv│Ply│Nxt│ │Mai│Hom│Cal│Sch│ │Rod│Mod│Tog│
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ │NKO│ │ │ │ │ │ │ │ │ │ │Spd│Spi│ │ │C_E│ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │1Hd│1Hi│1Sd│1Si│1Vd│1Vi│ │ │ │ │ │ │ │ │ │ │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ │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_all(
+ QK_BOOT, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, 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/gopolar/gg86/keymaps/horrortroll/keymap_stuff.h b/keyboards/gopolar/gg86/keymaps/horrortroll/keymap_stuff.h
new file mode 100644
index 0000000000..ad7a3238ce
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/horrortroll/keymap_stuff.h
@@ -0,0 +1,304 @@
+/* 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 "oled/oled_stuff.h"
+#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,
+ _FN,
+};
+
+// 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_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) {
+ 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_COOL_DIAGONAL);
+ return false;
+ case RGB_MATRIX_CUSTOM_COOL_DIAGONAL:
+ rgb_matrix_mode(RGB_MATRIX_CUSTOM_FLOWER_BLOOMING);
+ return false;
+ case RGB_MATRIX_CUSTOM_FLOWER_BLOOMING:
+ 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;
+}
+
+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(25, rgb.r, rgb.g, rgb.b);
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b);
+ }
+ } else {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(25, 0, 0, 0);
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(73, 0, 0, 0);
+ }
+ }
+}
diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/cool_diagonal.c b/keyboards/gopolar/gg86/keymaps/horrortroll/led/cool_diagonal.c
new file mode 100644
index 0000000000..2c518a5431
--- /dev/null
+++ b/keyboards/gopolar/gg86/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); } \ No newline at end of file
diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/custom_gradient.c b/keyboards/gopolar/gg86/keymaps/horrortroll/led/custom_gradient.c
new file mode 100644
index 0000000000..fcedf777eb
--- /dev/null
+++ b/keyboards/gopolar/gg86/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;
+} \ No newline at end of file
diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.c b/keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.c
new file mode 100644
index 0000000000..add83149cc
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.c
@@ -0,0 +1,27 @@
+/* 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 "led/flower_blooming/flower_blooming.h"
+
+static HSV FLOWER_BLOOMING_math(HSV hsv, uint8_t i, uint8_t time) {
+ if (g_led_config.point[i].y > k_rgb_matrix_center.y)
+ hsv.h = g_led_config.point[i].x * 3 - g_led_config.point[i].y * 3 + time;
+ else
+ hsv.h = g_led_config.point[i].x * 3 - g_led_config.point[i].y * 3 - time;
+ return hsv;
+}
+
+bool FLOWER_BLOOMING(effect_params_t* params) { return effect_runner_bloom(params, &FLOWER_BLOOMING_math); }
diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.h b/keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.h
new file mode 100644
index 0000000000..941dab975a
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/horrortroll/led/flower_blooming/flower_blooming.h
@@ -0,0 +1,20 @@
+#pragma once
+
+typedef HSV (*flower_blooming_f)(HSV hsv, uint8_t i, uint8_t time);
+
+bool effect_runner_bloom(effect_params_t* params, flower_blooming_f effect_func) {
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+ uint8_t time = scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed / 10, 1));
+ for (uint8_t i = led_min; i < led_max; i++) {
+ RGB_MATRIX_TEST_LED_FLAGS();
+ if (g_led_config.point[i].y > k_rgb_matrix_center.y) {
+ RGB bgr = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time));
+ rgb_matrix_set_color(i, bgr.b, bgr.g, bgr.r);
+ } else {
+ RGB rgb = rgb_matrix_hsv_to_rgb(effect_func(rgb_matrix_config.hsv, i, time));
+ rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+ }
+ }
+ return rgb_matrix_check_finished_leds(led_max);
+}
diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/kitt.c b/keyboards/gopolar/gg86/keymaps/horrortroll/led/kitt.c
new file mode 100644
index 0000000000..bfc32ce040
--- /dev/null
+++ b/keyboards/gopolar/gg86/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 = 11;
+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); } \ No newline at end of file
diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.c b/keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.c
new file mode 100644
index 0000000000..ce3fff8ec5
--- /dev/null
+++ b/keyboards/gopolar/gg86/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); } \ No newline at end of file
diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.h b/keyboards/gopolar/gg86/keymaps/horrortroll/led/rainbow_reactive_simple/rainbow_reactive_simple.h
new file mode 100644
index 0000000000..5b610716e0
--- /dev/null
+++ b/keyboards/gopolar/gg86/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;
+} \ No newline at end of file
diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/led/random_breath_rainbow.c b/keyboards/gopolar/gg86/keymaps/horrortroll/led/random_breath_rainbow.c
new file mode 100644
index 0000000000..e5f399cdd3
--- /dev/null
+++ b/keyboards/gopolar/gg86/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;
+} \ No newline at end of file
diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/oled/oled_stuff.h b/keyboards/gopolar/gg86/keymaps/horrortroll/oled/oled_stuff.h
new file mode 100644
index 0000000000..d67e5a18c5
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/horrortroll/oled/oled_stuff.h
@@ -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/>.
+ */
+
+// OLED animation
+#include "lib/wave.h"
+
+#ifdef OLED_ENABLE
+ static void render_layer_info(void) {
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_P(PSTR(" QWERTY "), false);
+ break;
+ case 1:
+ oled_write_P(PSTR(" Function "), false);
+ break;
+ default:
+ oled_write_P(PSTR(" Undefined "), false);
+ }
+ }
+
+ static void render_layer_number(void) {
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_P(PSTR("0"), false);
+ break;
+ case 1:
+ oled_write_P(PSTR("1"), false);
+ break;
+ default:
+ oled_write_P(PSTR("X"), false);
+ }
+ }
+
+ bool oled_task_user(void) {
+ render_layer_info();
+
+ // 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(PSTR(" Layer: "), false);
+ render_layer_number();
+
+ return true;
+ }
+#endif
diff --git a/keyboards/gopolar/gg86/keymaps/horrortroll/readme.md b/keyboards/gopolar/gg86/keymaps/horrortroll/readme.md
new file mode 100644
index 0000000000..363330e98f
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/horrortroll/readme.md
@@ -0,0 +1,12 @@
+# My personal keymap with VIA and custom LED / OLED
+
+Keymap is default 87 qwerty, with TKL 7u-spacebar layout
+
+It have new LED effect:
+
+- Custom gradient (ported from SirTimmyTimbit code [https://github.com/SirTimmyTimbit/customizable-gradient-effect-for-drop-alt])
+- Cool diagonal (ported from pleasuretek code [https://github.com/pleasuretek/qmk_firmware])
+- Flower Blooming
+- 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/gopolar/gg86/keymaps/horrortroll/rgb_matrix_user.inc b/keyboards/gopolar/gg86/keymaps/horrortroll/rgb_matrix_user.inc
new file mode 100644
index 0000000000..7a31991027
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/horrortroll/rgb_matrix_user.inc
@@ -0,0 +1,17 @@
+RGB_MATRIX_EFFECT(CUSTOM_GRADIENT)
+RGB_MATRIX_EFFECT(COOL_DIAGONAL)
+RGB_MATRIX_EFFECT(FLOWER_BLOOMING)
+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/cool_diagonal.c"
+#include "led/flower_blooming/flower_blooming.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/gopolar/gg86/keymaps/horrortroll/rules.mk b/keyboards/gopolar/gg86/keymaps/horrortroll/rules.mk
new file mode 100644
index 0000000000..d475530c87
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/horrortroll/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+
+RGB_MATRIX_CUSTOM_USER = yes
diff --git a/keyboards/gopolar/gg86/keymaps/via/keymap.c b/keyboards/gopolar/gg86/keymaps/via/keymap.c
new file mode 100644
index 0000000000..070858c958
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/via/keymap.c
@@ -0,0 +1,325 @@
+/* Copyright 2021 Gopolar
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// OLED animation
+#include "lib/wave.h"
+
+#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 { };
+
+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│ │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 │ - │ = │ Bckspc│ │Hom│Scr│Pse│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ Tab │ q │ w │ e │ r │ t │ y │ u │ i │ o │ p │ [ │ ] │ \ │ │End│Scr│Pse│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ Caps │ a │ s │ d │ f │ g │ h │ j │ k │ l │ ; │ ' │ Enter│
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │LSft│ \ │ z │ x │ c │ v │ b │ n │ m │ , │ . │ / │ RSft │RSt│ │ ↑ │
+ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+ │LCrl │GUI│ LAlt│ Space │ RAlt│ Fn│ RCrl│ │ ↠│ ↓ │ → │
+ └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+ ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │ │ │ │ │
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ { │ } │ | │ │ │ │ │
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ : │ " │ │
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │LSft│ | │ 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 15 16 */
+ [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_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_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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/*
+ ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ │Slp│ │M_T│F13│F14│F15│ │F16│Rfh│Stp│ │ │ │ │ │Est│ │ │VoD│VoU│
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hui│Sai│Spi│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hud│Sad│Spd│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ │ │ │ │ │ │ │ │ │ │ │ │ RGB_Tog│
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │ │ │ │ │Cal│ │ │ │ │ │ │ │ │ │ │Vai│
+ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+ │ │ │ │ │ │ │ │ │Rod│Vad│Mod│
+ └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ [1] = LAYOUT_all(
+ KC_SLEP, RGB_M_T, KC_F13, KC_F14, KC_F15, KC_F16, KC_WREF, KC_WSTP, _______, _______, _______, _______, EEP_RST, _______, KC_VOLD, KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_SPI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_SPD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
+ _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
+ ),
+
+/*
+ ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ │Slp│ │F13│F14│F15│F16│ │Rfh│Stp│ │ │ │ │ │ │ │ │ │VoD│VoU│
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hui│Sai│Spi│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hud│Sad│Spd│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ │ │ │ │ │ │ │ │ │ │ │ │ RGB_Tog│
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │ │ │ │ │Cal│ │ │ │ │ │ │ │ │ │ │Vai│
+ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+ │ │ │ │ │ │ │ │ │Rod│Vad│Mod│
+ └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ [2] = LAYOUT_all(
+ KC_SLEP, KC_F13, KC_F14, KC_F15, KC_F16, KC_WREF, KC_WSTP, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_SPI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_SPD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
+ _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
+ ),
+
+/*
+ ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ │Slp│ │F13│F14│F15│F16│ │Rfh│Stp│ │ │ │ │ │ │ │ │ │VoD│VoU│
+ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hui│Sai│Spi│
+ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hud│Sad│Spd│
+ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ │ │ │ │ │ │ │ │ │ │ │ │ │ RGB_Tog│
+ ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ │ │ │ │ │Cal│ │ │ │ │ │ │ │ │ │ │Vai│
+ ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+ │ │ │ │ │ │ │ │ │Rod│Vad│Mod│
+ └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+*/
+ /* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ [3] = LAYOUT_all(
+ KC_SLEP, KC_F13, KC_F14, KC_F15, KC_F16, KC_WREF, KC_WSTP, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_SPI,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_SPD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
+ _______, _______, _______, _______, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD
+ ),
+};
+
+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(25, rgb.r, rgb.g, rgb.b);
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b);
+ }
+ } else {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(25, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(25, 0, 0, 0);
+ }
+ if (host_keyboard_led_state().scroll_lock) {
+ rgb_matrix_set_color(73, rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(73, 0, 0, 0);
+ }
+ }
+}
+
+#ifdef OLED_ENABLE
+ static void render_layer_info(void) {
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_P(PSTR("QWERTY "), false);
+ break;
+ case 1:
+ oled_write_P(PSTR("Function "), false);
+ break;
+ case 2:
+ oled_write_P(PSTR("Function "), false);
+ break;
+ case 3:
+ oled_write_P(PSTR("Function "), false);
+ break;
+ default:
+ oled_write_P(PSTR("Undefined "), false);
+ }
+ }
+
+ static void render_layer_number(void) {
+ 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_P(PSTR("X"), false);
+ }
+ }
+
+ bool oled_task_user(void) {
+ led_t led_usb_state = host_keyboard_led_state();
+
+ oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLK ") : PSTR("----- "), false);
+ oled_write_P(PSTR(" GOPOLAR "), false);
+ oled_write_P(led_usb_state.scroll_lock ? PSTR(" SCRLK") : PSTR(" -----"), false);
+
+ // 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);
+ render_layer_info();
+ oled_write_P(PSTR("Layer: "), false);
+ render_layer_number();
+
+ return true;
+ }
+#endif
diff --git a/keyboards/gopolar/gg86/keymaps/via/rules.mk b/keyboards/gopolar/gg86/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/gopolar/gg86/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/gopolar/gg86/lib/glcdfont.c b/keyboards/gopolar/gg86/lib/glcdfont.c
new file mode 100644
index 0000000000..6b2294ea58
--- /dev/null
+++ b/keyboards/gopolar/gg86/lib/glcdfont.c
@@ -0,0 +1,249 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ * Copyright 2021 Gopolar
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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,
+}; \ No newline at end of file
diff --git a/keyboards/gopolar/gg86/lib/logo.c b/keyboards/gopolar/gg86/lib/logo.c
new file mode 100644
index 0000000000..3db3acdac1
--- /dev/null
+++ b/keyboards/gopolar/gg86/lib/logo.c
@@ -0,0 +1,60 @@
+/* Copyright 2021 Gopolar
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You 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 ANIM_SIZE 525 // number of bytes in array, minimize for adequate firmware size, max is 1024
+
+void render_logo(void) {
+ static const char PROGMEM gopolar[][ANIM_SIZE] = {
+ {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf0, 0xf8, 0x78, 0x78,
+ 0x38, 0x3c, 0x3c, 0x3c, 0x3c, 0x38, 0xf8, 0xf8, 0xf8, 0xf0, 0x78, 0x3c, 0x1e, 0x0f, 0x07, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0,
+ 0xe0, 0xe0, 0xc0, 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, 0xc0, 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, 0xf0, 0xfe, 0xff, 0xff, 0x0f, 0x07, 0x01, 0x00, 0xe0, 0xf0, 0xf8,
+ 0xf8, 0xfc, 0xfc, 0x3c, 0x1e, 0x8f, 0xc7, 0xe3, 0xe1, 0x00, 0x00, 0x07, 0x1f, 0xff, 0xff, 0xfc,
+ 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfe, 0xff, 0x0f, 0x03, 0x01, 0x01, 0x00, 0xe0, 0xe0,
+ 0xe0, 0xe0, 0xe1, 0xe1, 0xe3, 0xe7, 0xe7, 0xe6, 0x00, 0x80, 0xe0, 0xf0, 0x70, 0x38, 0x38, 0x38,
+ 0x38, 0x70, 0xf0, 0xe0, 0x80, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x70,
+ 0xf0, 0xe0, 0xc0, 0x00, 0x80, 0xe0, 0xf0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x70, 0xf0, 0xe0, 0x80,
+ 0x00, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xe0, 0xf0, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x70, 0xf0,
+ 0xe0, 0xc0, 0x00, 0xf8, 0xf8, 0xf8, 0xf0, 0x70, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3f, 0x7f, 0xff, 0xf8, 0x60, 0x00, 0x00, 0x07, 0x0f, 0x1f,
+ 0x1f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1f, 0x1f, 0x0f, 0x07, 0x80, 0xc0, 0xe0, 0xf8, 0xff, 0x7f, 0x3f,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0f, 0x1f, 0x3c, 0x38, 0x38, 0x70, 0x70, 0x70,
+ 0x70, 0x70, 0x38, 0x38, 0x3c, 0x1f, 0x0f, 0x07, 0x00, 0x07, 0x1f, 0x3f, 0x38, 0x70, 0x70, 0x70,
+ 0x70, 0x38, 0x3f, 0x1f, 0x07, 0x00, 0xff, 0xff, 0xff, 0x00, 0x60, 0x60, 0x60, 0x60, 0x70, 0x78,
+ 0x3f, 0x1f, 0x0f, 0x00, 0x07, 0x1f, 0x3f, 0x38, 0x70, 0x70, 0x70, 0x70, 0x38, 0x3f, 0x1f, 0x07,
+ 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x0f, 0x3f, 0x7f, 0x78, 0x70, 0x60, 0x60, 0x60, 0x60, 0x00, 0x7f,
+ 0x7f, 0x7f, 0x00, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x78, 0x3c, 0x1e, 0x0f, 0x0f, 0x1e, 0x1e,
+ 0x1e, 0x1e, 0x1c, 0x1c, 0x1e, 0x1e, 0x1e, 0x1e, 0x0f, 0x0f, 0x07, 0x07, 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, 0x0f, 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, 0x00, 0x00, 0x00, 0x00, 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(gopolar[0], ANIM_SIZE);
+}
diff --git a/keyboards/gopolar/gg86/lib/logo.h b/keyboards/gopolar/gg86/lib/logo.h
new file mode 100644
index 0000000000..08ab8ea529
--- /dev/null
+++ b/keyboards/gopolar/gg86/lib/logo.h
@@ -0,0 +1,17 @@
+/* Copyright 2021 Gopolar
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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 render_logo(void);
diff --git a/keyboards/gopolar/gg86/lib/wave.h b/keyboards/gopolar/gg86/lib/wave.h
new file mode 100644
index 0000000000..11a3198ab1
--- /dev/null
+++ b/keyboards/gopolar/gg86/lib/wave.h
@@ -0,0 +1,130 @@
+/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
+ * Copyright 2021 Gopolar
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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/28)
+
+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_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/gopolar/gg86/readme.md b/keyboards/gopolar/gg86/readme.md
new file mode 100644
index 0000000000..169d7e1904
--- /dev/null
+++ b/keyboards/gopolar/gg86/readme.md
@@ -0,0 +1,24 @@
+# Gopolar GG86 Tai-Chi
+
+![GG86 Tai-Chi](https://i.imgur.com/SgXOZjt.png?2)
+
+A tenkeyless 86-key keyboard made by Gopolar, which controlled by an Atmega32u4 chipset. The keyboard features per-key RGB as well as underglow RGB, and an OLED screen for displaying useful information.
+
+* Keyboard Maintainer: Gopolar
+* Hardware Supported: Atmega32u4
+* Hardware Availability: [mecha.store](https://mecha.store/collections/gopolar/products/gopolar-gg86-tenkeyless-hotswappable-barebones-keyboard) / [AliExpress](https://www.aliexpress.com/item/1005003605711613.html)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make gopolar/gg86:default
+
+Flashing example for this keyboard:
+
+ make gopolar/gg86: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 key at (0,0) in the matrix (Esc key) and plug in the keyboard
+* **Physical reset button**: Short press the button under Spacebar keycap to enter the Bootloader and flash the firmware
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/gopolar/gg86/rules.mk b/keyboards/gopolar/gg86/rules.mk
new file mode 100644
index 0000000000..0f0bdec2b6
--- /dev/null
+++ b/keyboards/gopolar/gg86/rules.mk
@@ -0,0 +1,32 @@
+SRC += lib/logo.c
+
+# 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
+
+# Additional thing to reduce compiled size
+LTO_ENABLE = yes
+NO_USB_STARTUP_CHECK = yes
+
+# RGB Matrix enabled
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+# OLED enabled
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306 # OLED display
diff --git a/keyboards/gorthage_truck/config.h b/keyboards/gorthage_truck/config.h
index 46a928b9d6..2e1c9ea0a6 100644
--- a/keyboards/gorthage_truck/config.h
+++ b/keyboards/gorthage_truck/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB33F
-#define PRODUCT_ID 0x58E4
-#define DEVICE_VER 0x0001
-#define MANUFACTURER s8erdude
-#define PRODUCT gorthage_truck
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 9
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6, B6, B5, B4, C7, B3, B7, D7}
#define MATRIX_COL_PINS { F0, F1, F4, F7, D6, E6, B0, B1, B2}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/gorthage_truck/info.json b/keyboards/gorthage_truck/info.json
index 8f344ee860..8b083b3229 100644
--- a/keyboards/gorthage_truck/info.json
+++ b/keyboards/gorthage_truck/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "gorthage_truck",
+ "manufacturer": "s8erdude",
"url": "https://github.com/jpuerto96",
"maintainer": "jpuerto96 (s8erdude)",
+ "usb": {
+ "vid": "0xB33F",
+ "pid": "0x58E4",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_3u": {
"layout": [
diff --git a/keyboards/gowla/config.h b/keyboards/gowla/config.h
index fed13df57d..c0eef6ba5b 100644
--- a/keyboards/gowla/config.h
+++ b/keyboards/gowla/config.h
@@ -17,13 +17,6 @@ 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 0xE9B6
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Gowla
-#define PRODUCT Gowla Macro Board
-
/* Matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -31,7 +24,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Pin-out */
#define MATRIX_ROW_PINS { D1, D0, D4 }
#define MATRIX_COL_PINS { B5, B4, E6 }
-#define UNUSED_PINS
/* ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/gowla/info.json b/keyboards/gowla/info.json
index c4926000bb..bf9f17e4ad 100644
--- a/keyboards/gowla/info.json
+++ b/keyboards/gowla/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Gowla Macro Pad",
+ "keyboard_name": "Gowla Macro Board",
+ "manufacturer": "Gowla",
"url": "https://github.com/SamGowland/Gowla-Macro-Board",
"maintainer": "Gowla",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xE9B6",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_3x3": {
"layout": [
diff --git a/keyboards/gray_studio/apollo80/config.h b/keyboards/gray_studio/apollo80/config.h
index f00550fb65..89fc00653a 100644
--- a/keyboards/gray_studio/apollo80/config.h
+++ b/keyboards/gray_studio/apollo80/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4753
-#define PRODUCT_ID 0x3001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Graystudio
-#define PRODUCT apollo80
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/gray_studio/apollo80/info.json b/keyboards/gray_studio/apollo80/info.json
index c0e3efdb88..32d36d766d 100644
--- a/keyboards/gray_studio/apollo80/info.json
+++ b/keyboards/gray_studio/apollo80/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "apollo 80",
+ "keyboard_name": "apollo80",
+ "manufacturer": "Graystudio",
"url": "https://graystudio.club/products/gb-space80-apollo",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4753",
+ "pid": "0x3001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/gray_studio/cod67/config.h b/keyboards/gray_studio/cod67/config.h
index 466ddcebc0..178cc3dc13 100644
--- a/keyboards/gray_studio/cod67/config.h
+++ b/keyboards/gray_studio/cod67/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4753
-#define PRODUCT_ID 0x1000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Graystudio
-#define PRODUCT COD67
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C7, C6, B6, B5, B4 }
#define MATRIX_COL_PINS { D7, F7, F6, F5, F4, F1, F0, E6, B0, B7, D0, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/gray_studio/cod67/info.json b/keyboards/gray_studio/cod67/info.json
index b95f5eb8e4..c75d4786a5 100644
--- a/keyboards/gray_studio/cod67/info.json
+++ b/keyboards/gray_studio/cod67/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "COD67",
+ "manufacturer": "Graystudio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4753",
+ "pid": "0x1000",
+ "device_version": "0.0.1"
+ },
"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":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":"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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"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":"Shift", "x":11.25, "y":3, "w":1.75}, {"x":13, "y":3}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4}, {"label":"Win", "x":1, "y":4}, {"label":"Alt", "x":2, "y":4}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4}, {"x":6, "y":4, "w":2}, {"x":8, "y":4}, {"x":9, "y":4}, {"x":10, "y":4}, {"label":"Alt", "x":11, "y":4}, {"label":"Win", "x":12, "y":4}, {"label":"Menu", "x":13, "y":4}, {"label":"Ctrl", "x":14, "y":4}]
diff --git a/keyboards/gray_studio/cod67/keymaps/rys/keymap.c b/keyboards/gray_studio/cod67/keymaps/rys/keymap.c
index 9f1d069b73..06532a8460 100644
--- a/keyboards/gray_studio/cod67/keymaps/rys/keymap.c
+++ b/keyboards/gray_studio/cod67/keymaps/rys/keymap.c
@@ -18,6 +18,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, RGB_TOG, RGB_MOD,RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG,
_______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/gray_studio/cod67/keymaps/via/keymap.c b/keyboards/gray_studio/cod67/keymaps/via/keymap.c
index 12ffe56244..caca2febfa 100644
--- a/keyboards/gray_studio/cod67/keymaps/via/keymap.c
+++ b/keyboards/gray_studio/cod67/keymaps/via/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, RGB_TOG, RGB_MOD,RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG,
_______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/gray_studio/hb85/config.h b/keyboards/gray_studio/hb85/config.h
index 0e1f0aff42..d1240e6b9c 100644
--- a/keyboards/gray_studio/hb85/config.h
+++ b/keyboards/gray_studio/hb85/config.h
@@ -17,12 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define VENDOR_ID 0x4753
-#define PRODUCT_ID 0x2000
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Gray Studio
-#define PRODUCT HB85
-
/* matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 15
diff --git a/keyboards/gray_studio/hb85/info.json b/keyboards/gray_studio/hb85/info.json
index a60047df9a..a2895c1ee6 100644
--- a/keyboards/gray_studio/hb85/info.json
+++ b/keyboards/gray_studio/hb85/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Gray Studio HB85",
+ "keyboard_name": "HB85",
+ "manufacturer": "Gray Studio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4753",
+ "pid": "0x2000",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"x":1.5, "y":0}, {"x":2.75, "y":0}, {"x":3.75, "y":0}, {"x":4.75, "y":0}, {"x":5.75, "y":0}, {"x":7, "y":0}, {"x":8, "y":0}, {"x":9, "y":0}, {"x":10, "y":0}, {"x":11.25, "y":0}, {"x":12.25, "y":0}, {"x":13.25, "y":0}, {"x":14.25, "y":0}, {"x":15.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, "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, "y":1.25}, {"x":16, "y":1.25}, {"x":17, "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, "y":2.25}, {"x":16, "y":2.25}, {"x":17, "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":15, "y":3.25}, {"x":16, "y":3.25}, {"x":17, "y":3.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":15, "y":4.25}, {"x":16, "y":4.25}, {"x":17, "y":4.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}, {"x":11, "y":5.25}, {"x":12, "y":5.25}, {"x":13, "y":5.25}, {"x":14, "y":5.25}, {"x":15, "y":5.25}, {"x":16, "y":5.25}]
diff --git a/keyboards/gray_studio/hb85/keymaps/stt/keymap.c b/keyboards/gray_studio/hb85/keymaps/stt/keymap.c
index 5665e2f0e1..9a173d7885 100644
--- a/keyboards/gray_studio/hb85/keymaps/stt/keymap.c
+++ b/keyboards/gray_studio/hb85/keymaps/stt/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_stt(
- RESET, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
+ QK_BOOT, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
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, \
BL_TOGG, BL_STEP, 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, \
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, \
diff --git a/keyboards/gray_studio/space65/config.h b/keyboards/gray_studio/space65/config.h
index 23bf1e7f94..d8b67b3c50 100644
--- a/keyboards/gray_studio/space65/config.h
+++ b/keyboards/gray_studio/space65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4753
-#define PRODUCT_ID 0x3000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Graystudio
-#define PRODUCT Space65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, F0, F4, F1 }
#define MATRIX_COL_PINS { B0, B3, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/gray_studio/space65/info.json b/keyboards/gray_studio/space65/info.json
index a14df5ca8f..9d3e600307 100644
--- a/keyboards/gray_studio/space65/info.json
+++ b/keyboards/gray_studio/space65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Gray Studio Space65",
+ "keyboard_name": "Space65",
+ "manufacturer": "Graystudio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4753",
+ "pid": "0x3000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/gray_studio/space65/keymaps/billiams/keymap.c b/keyboards/gray_studio/space65/keymaps/billiams/keymap.c
index 9a0a004033..d83be466ed 100644
--- a/keyboards/gray_studio/space65/keymaps/billiams/keymap.c
+++ b/keyboards/gray_studio/space65/keymaps/billiams/keymap.c
@@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------------------------------------------------------------------------------------------------+
* | | | | | | | | | | | | | | |
* |------------------------------------------------------------------------------------------------+
- * | | | | | | | | | | | | | | | RESET |
+ * | | | | | | | | | | | | | | | QK_BOOT |
* |------------------------------------------------------------------------------------------------+
* | | | | | | | | | |
* `------------------------------------------------------------------------------------------------'
@@ -79,7 +79,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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
- KC_TRNS, KC_TRNS, 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, QK_BOOT, \
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/gray_studio/space65/keymaps/conor/keymap.c b/keyboards/gray_studio/space65/keymaps/conor/keymap.c
index 39bec338c5..1ae64e1114 100644
--- a/keyboards/gray_studio/space65/keymaps/conor/keymap.c
+++ b/keyboards/gray_studio/space65/keymaps/conor/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, MO(3), _______, _______, _______, _______, _______
),
[_FN4] = LAYOUT(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/gray_studio/space65/keymaps/madhatter/keymap.c b/keyboards/gray_studio/space65/keymaps/madhatter/keymap.c
index 2fa47f427b..943d5eae4c 100644
--- a/keyboards/gray_studio/space65/keymaps/madhatter/keymap.c
+++ b/keyboards/gray_studio/space65/keymaps/madhatter/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FNM] = 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_VOLD, KC_VOLU, KC_MFFD,
- 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, RESET, KC_MRWD,
+ 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, QK_BOOT, KC_MRWD,
KC_TRNS, RGB_M_P, RGB_M_G, RGB_M_K, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS,
AG_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BRID, KC_BRIU, 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
diff --git a/keyboards/gray_studio/think65/hotswap/config.h b/keyboards/gray_studio/think65/hotswap/config.h
index b42e3cebdf..c9a8937436 100644
--- a/keyboards/gray_studio/think65/hotswap/config.h
+++ b/keyboards/gray_studio/think65/hotswap/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4753
-#define PRODUCT_ID 0x4001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Graystudio
-#define PRODUCT Think6.5° Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/gray_studio/think65/hotswap/info.json b/keyboards/gray_studio/think65/hotswap/info.json
index 4cbd8744b7..6de7e15c73 100644
--- a/keyboards/gray_studio/think65/hotswap/info.json
+++ b/keyboards/gray_studio/think65/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "THINK6.5",
+ "keyboard_name": "Think6.5° Hotswap",
+ "manufacturer": "Graystudio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4753",
+ "pid": "0x4001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/gray_studio/think65/solder/config.h b/keyboards/gray_studio/think65/solder/config.h
index 32a1769a6b..e2fb811cf9 100644
--- a/keyboards/gray_studio/think65/solder/config.h
+++ b/keyboards/gray_studio/think65/solder/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4753
-#define PRODUCT_ID 0x4000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Graystudio
-#define PRODUCT Think6.5°
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/gray_studio/think65/solder/info.json b/keyboards/gray_studio/think65/solder/info.json
index 5a7b7bea00..54c2cd2cc4 100644
--- a/keyboards/gray_studio/think65/solder/info.json
+++ b/keyboards/gray_studio/think65/solder/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "THINK6.5",
+ "keyboard_name": "Think6.5°",
+ "manufacturer": "Graystudio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4753",
+ "pid": "0x4000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/keymap.c b/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/keymap.c
index 5955401998..0286444fe1 100644
--- a/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/keymap.c
+++ b/keyboards/gray_studio/think65/solder/keymaps/brandonschlack/keymap.c
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DELT, KC_VOLU, \
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, KC_F13, KC_F14, KC_F15, MC_SLPD, KC_VOLD, \
RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, MC_MSSN, MC_LHPD, _______, XXXXXXX, \
- _______, RGB_LYR, RGB_THM, _______, _______, RESET, _______, QM_MAKE, KC_MPRV, KC_MNXT, KC_MPLY, MUT_SFT, KC_PGUP, XXXXXXX, \
+ _______, RGB_LYR, RGB_THM, _______, _______, QK_BOOT, _______, QM_MAKE, KC_MPRV, KC_MNXT, KC_MPLY, MUT_SFT, KC_PGUP, XXXXXXX, \
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
),
/* Blank Layout
diff --git a/keyboards/gray_studio/think65/solder/keymaps/dangjoeltang/keymap.c b/keyboards/gray_studio/think65/solder/keymaps/dangjoeltang/keymap.c
index 4994fb3fa0..f9c171f1ae 100644
--- a/keyboards/gray_studio/think65/solder/keymaps/dangjoeltang/keymap.c
+++ b/keyboards/gray_studio/think65/solder/keymaps/dangjoeltang/keymap.c
@@ -221,7 +221,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴────┴───┘
*/
[1] = 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, _______, KVM_SW1,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KVM_SW1,
TOG_BDG, RGB_M_P, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_HOME, KC_END, _______, KVM_SW2,
_______, CYC_LED, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______,
diff --git a/keyboards/gray_studio/think65/solder/keymaps/rys/keymap.c b/keyboards/gray_studio/think65/solder/keymaps/rys/keymap.c
index 658798ed67..e0d9e00448 100644
--- a/keyboards/gray_studio/think65/solder/keymaps/rys/keymap.c
+++ b/keyboards/gray_studio/think65/solder/keymaps/rys/keymap.c
@@ -261,7 +261,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* │    │    │    │                        │    │    │ │ESC│BDG│UGL│
* └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
*/
- 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, _______, _______,
+ QK_BOOT, 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_M_P, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CYC_LED,
diff --git a/keyboards/grid600/press/config.h b/keyboards/grid600/press/config.h
index 0f6fe305cb..9800c38402 100644
--- a/keyboards/grid600/press/config.h
+++ b/keyboards/grid600/press/config.h
@@ -19,13 +19,6 @@ 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 0x7539
-#define DEVICE_VER 0x0005
-#define MANUFACTURER Grid
-#define PRODUCT PRESS
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0 }
#define MATRIX_COL_PINS { F1, F4, F5, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/grid600/press/info.json b/keyboards/grid600/press/info.json
index 7ee2a93d0a..e1ed976dc0 100644
--- a/keyboards/grid600/press/info.json
+++ b/keyboards/grid600/press/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Grid 600 Type 05 PRESS Cover Module",
+ "keyboard_name": "PRESS",
+ "manufacturer": "Grid",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x7539",
+ "device_version": "0.0.5"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}]
diff --git a/keyboards/gvalchca/ga150/config.h b/keyboards/gvalchca/ga150/config.h
index c815217702..0e54d66141 100644
--- a/keyboards/gvalchca/ga150/config.h
+++ b/keyboards/gvalchca/ga150/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6776
-#define PRODUCT_ID 0x6135
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Gvalchca
-#define PRODUCT GA15.0
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/gvalchca/ga150/info.json b/keyboards/gvalchca/ga150/info.json
index b81082d32f..b2c5208558 100644
--- a/keyboards/gvalchca/ga150/info.json
+++ b/keyboards/gvalchca/ga150/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GA15.0",
+ "manufacturer": "Gvalchca",
"url": "",
"maintainer": "Gvalchca",
+ "usb": {
+ "vid": "0x6776",
+ "pid": "0x6135",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/gvalchca/spaccboard/config.h b/keyboards/gvalchca/spaccboard/config.h
index 64b13bd9bc..518337ca94 100644
--- a/keyboards/gvalchca/spaccboard/config.h
+++ b/keyboards/gvalchca/spaccboard/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6776
-#define PRODUCT_ID 0x5342
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Gvalchca
-#define PRODUCT SpaccBoard
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/gvalchca/spaccboard/info.json b/keyboards/gvalchca/spaccboard/info.json
index 654c3eb4ad..468dd972ab 100644
--- a/keyboards/gvalchca/spaccboard/info.json
+++ b/keyboards/gvalchca/spaccboard/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "SpaccBoard",
+ "manufacturer": "Gvalchca",
"url": "https://keebmeup.com",
"maintainer": "Gvalchca",
+ "usb": {
+ "vid": "0x6776",
+ "pid": "0x5342",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/h0oni/deskpad/config.h b/keyboards/h0oni/deskpad/config.h
index c5c8054ca1..7d6e4605ad 100644
--- a/keyboards/h0oni/deskpad/config.h
+++ b/keyboards/h0oni/deskpad/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D53
-#define PRODUCT_ID 0x4450 //hD
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Hydrogen
-#define PRODUCT Deskpad
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { D7, C6 }
#define MATRIX_COL_PINS { D0, D4, D1}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/h0oni/deskpad/info.json b/keyboards/h0oni/deskpad/info.json
index b5622d578f..d02a5b0012 100644
--- a/keyboards/h0oni/deskpad/info.json
+++ b/keyboards/h0oni/deskpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Deskpad",
+ "manufacturer": "Hydrogen",
"url": "",
"maintainer": "Hydrogen BD",
+ "usb": {
+ "vid": "0x4D53",
+ "pid": "0x4450",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"k1", "x":0, "y":0},
diff --git a/keyboards/h0oni/hotduck/config.h b/keyboards/h0oni/hotduck/config.h
index 9865f5d303..67cb2fdced 100644
--- a/keyboards/h0oni/hotduck/config.h
+++ b/keyboards/h0oni/hotduck/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D53
-#define PRODUCT_ID 0x6844 //hD
-#define DEVICE_VER 0x0001
-#define MANUFACTURER h0oni
-#define PRODUCT hotDuck
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 10
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { B6, B2, B3, B1, F7, F6, F5 }
#define MATRIX_COL_PINS { B5, B4, E6, D7, C6, D4, D0, D1, D2, D3}
-#define UNUSED_PINS
// #define LED_CAPS_LOCK_PIN B2
// #define LED_PIN_ON_STATE 0
diff --git a/keyboards/h0oni/hotduck/info.json b/keyboards/h0oni/hotduck/info.json
index 32e4ae7c2f..29f6471600 100644
--- a/keyboards/h0oni/hotduck/info.json
+++ b/keyboards/h0oni/hotduck/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "hotDuck",
+ "manufacturer": "h0oni",
"url": "",
"maintainer": "h0oni",
+ "usb": {
+ "vid": "0x4D53",
+ "pid": "0x6844",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"Esc", "x":0, "y":0},
diff --git a/keyboards/hadron/config.h b/keyboards/hadron/config.h
index 3281984d19..5fd8c70482 100644
--- a/keyboards/hadron/config.h
+++ b/keyboards/hadron/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFB30
-#define PRODUCT_ID 0x5F37
-#define MANUFACTURER ishtob
-#define PRODUCT Hadron Keyboard
-
//#define AUDIO_VOICES
//#define BACKLIGHT_PIN B7
diff --git a/keyboards/hadron/info.json b/keyboards/hadron/info.json
index 7fb7d41cf2..c5a19a2e14 100644
--- a/keyboards/hadron/info.json
+++ b/keyboards/hadron/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "Hadron",
+ "manufacturer": "ishtob",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFB30",
+ "pid": "0x5F37"
+ },
"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":"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":"K1C", "x":12, "y":1}, {"label":"K1D", "x":13, "y":1}, {"label":"K1E", "x":14, "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":"K2C", "x":12, "y":2}, {"label":"K2D", "x":13, "y":2}, {"label":"K2E", "x":14, "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}, {"label":"K3C", "x":12, "y":3}, {"label":"K3D", "x":13, "y":3}, {"label":"K3E", "x":14, "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":"K47", "x":7, "y":4}, {"label":"K48", "x":8, "y":4}, {"label":"K49", "x":9, "y":4}, {"label":"K4A", "x":10, "y":4}, {"label":"K4B", "x":11, "y":4}, {"label":"K4C", "x":12, "y":4}, {"label":"K4D", "x":13, "y":4}, {"label":"K4E", "x":14, "y":4}]
diff --git a/keyboards/hadron/ver2/config.h b/keyboards/hadron/ver2/config.h
index c992f7fe33..a19ae41ffc 100644
--- a/keyboards/hadron/ver2/config.h
+++ b/keyboards/hadron/ver2/config.h
@@ -16,9 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0002
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -26,7 +23,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Hadron Ver0 PCB default pin-out */
#define MATRIX_ROW_PINS { D7, E6, B4, B5, B6 }
#define MATRIX_COL_PINS { F6, F7, D6, C7, F5, F4, F1, F0, D2, D3, D5, B3, B2, B1, B0 }
-#define UNUSED_PINS
// configure oled driver for the 128x32 oled
#define OLED_UPDATE_INTERVAL 33 // ~30fps
diff --git a/keyboards/hadron/ver2/info.json b/keyboards/hadron/ver2/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/hadron/ver2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c b/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c
index 74f95b4b75..64e7841d8e 100644
--- a/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c
+++ b/keyboards/hadron/ver2/keymaps/side_numpad/keymap.c
@@ -189,7 +189,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT(
- RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLD, KC_VOLU, KC_MUTE, \
+ QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLD, KC_VOLU, KC_MUTE, \
_______, 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, _______, _______, _______, _______, _______, _______, _______, \
_______, 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/ver3/config.h b/keyboards/hadron/ver3/config.h
index c61cc9a1e0..f130189b58 100644
--- a/keyboards/hadron/ver3/config.h
+++ b/keyboards/hadron/ver3/config.h
@@ -17,9 +17,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0003
-
#undef MATRIX_ROWS
#undef MATRIX_COLS
/* key matrix size */
@@ -41,7 +38,6 @@
#define MATRIX_ROW_PINS { C15, C14, A10, A9, A8 }
#define MATRIX_COL_PINS { B8, B2, B10, A0, A1, A2, B0, A3, B1, A6, A7, B12, C13, B11, B9 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { B13 }
#define ENCODERS_PAD_B { B14 }
diff --git a/keyboards/hadron/ver3/info.json b/keyboards/hadron/ver3/info.json
new file mode 100644
index 0000000000..b377cdff00
--- /dev/null
+++ b/keyboards/hadron/ver3/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/hadron/ver3/keymaps/ishtob/keymap.c b/keyboards/hadron/ver3/keymaps/ishtob/keymap.c
index c1bfe1f1c1..569921c773 100644
--- a/keyboards/hadron/ver3/keymaps/ishtob/keymap.c
+++ b/keyboards/hadron/ver3/keymaps/ishtob/keymap.c
@@ -166,7 +166,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_wrapper(
_______, HPT_TOG, HPT_FBK, HPT_MODI, HPT_MODD, HPT_RST, _______, _______, _______, _______, _______, EEP_RST, \
- RESET, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, KC_DEL, \
+ QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, KC_DEL, \
_______, MAGIC_TOGGLE_NKRO, _______, 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/halfcliff/config.h b/keyboards/halfcliff/config.h
index 9cd03089ba..23b40935ee 100644
--- a/keyboards/halfcliff/config.h
+++ b/keyboards/halfcliff/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0335
-#define PRODUCT_ID 0x0021
-#define DEVICE_VER 0x0001
-#define MANUFACTURER n2
-#define PRODUCT halfcliff
-
/* key matrix size */
#define MATRIX_ROWS 20
#define MATRIX_COLS 5
#define MATRIX_ROW_PINS { F5, F6, F7, D7, B5, F5, F6, F7, D7, B5 }
#define MATRIX_COL_PINS { B4, E6, C6, B6, B2 }
-#define UNUSED_PINS
//#define NUMBER_OF_ENCODERS 1
#define ENCODERS_PAD_A { D4 }
diff --git a/keyboards/halfcliff/info.json b/keyboards/halfcliff/info.json
index d5b5d4e53f..fa189c1056 100644
--- a/keyboards/halfcliff/info.json
+++ b/keyboards/halfcliff/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "halfcliff",
+ "manufacturer": "n2",
"url": "https://github.com/N2-Sumikko",
"maintainer": "n2",
+ "usb": {
+ "vid": "0x0335",
+ "pid": "0x0021",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/halokeys/elemental75/chconf.h b/keyboards/halokeys/elemental75/chconf.h
new file mode 100644
index 0000000000..b780a0e77b
--- /dev/null
+++ b/keyboards/halokeys/elemental75/chconf.h
@@ -0,0 +1,21 @@
+/* Copyright 2022 Halokeys
+ *
+ * This program is free software: you can 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
+// Need to override the SysTick timer to use TIM3 -- this is a 16-bit timer on F303
+// so we need to change resolution and frequency to match.
+#define CH_CFG_ST_RESOLUTION 16
+#define CH_CFG_ST_FREQUENCY 10000
+#include_next "chconf.h"
diff --git a/keyboards/halokeys/elemental75/config.h b/keyboards/halokeys/elemental75/config.h
new file mode 100644
index 0000000000..bdc70b7a42
--- /dev/null
+++ b/keyboards/halokeys/elemental75/config.h
@@ -0,0 +1,58 @@
+ /* Copyright 2022 Halokeys
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 6
+#define MATRIX_COLS 15
+
+#define MATRIX_ROW_PINS { A2, A3, A4, A5, A6, A7 }
+#define MATRIX_COL_PINS { B2, B1, B0, B10, B11, B13, B14, B15, A8, A9, A14, A15, B3, B4, B7 }
+#define DIODE_DIRECTION COL2ROW
+#define DEBOUNCE 5
+
+#define ENCODERS_PAD_A { B6 }
+#define ENCODERS_PAD_B { B5 }
+#define TAP_CODE_DELAY 10 // tap_code function delay for register and unregister
+
+#define RGB_DI_PIN A10
+#define RGBLED_NUM 22
+#define RGBLIGHT_LIMIT_VAL 225 // value set lower than 255 since current draw is too high
+#define RGBLIGHT_SLEEP
+
+/* animations enabled */
+#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_DISABLE_KEYCODES
+
+// Tap dance term declaration
+#define TAPPING_TERM 300
+
+/* 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/halokeys/elemental75/elemental75.c b/keyboards/halokeys/elemental75/elemental75.c
new file mode 100644
index 0000000000..2b5dc1ca2e
--- /dev/null
+++ b/keyboards/halokeys/elemental75/elemental75.c
@@ -0,0 +1,35 @@
+ /* Copyright 2022 Halokeys
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "elemental75.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+ uprintf("Encoder Hit: clockwise: %d, index: %u\n", clockwise, index);
+ if (index == 0) {
+ if (clockwise) {
+ print("Tapped code: KC_VOLU\n");
+ tap_code(KC_VOLU);
+ } else {
+ print("Tapped code: KC_VOLD\n");
+ tap_code(KC_VOLD);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/halokeys/elemental75/elemental75.h b/keyboards/halokeys/elemental75/elemental75.h
new file mode 100644
index 0000000000..265d1c9437
--- /dev/null
+++ b/keyboards/halokeys/elemental75/elemental75.h
@@ -0,0 +1,34 @@
+/* Copyright 2022 Halokeys
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have 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, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K59, 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, 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, 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, KC_NO, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E }, \
+ { K50, K51, K52, KC_NO, K54, KC_NO, K56, KC_NO, K58, K59, K5A, K5B, K5C, K5D, K5E }, \
+}
diff --git a/keyboards/halokeys/elemental75/info.json b/keyboards/halokeys/elemental75/info.json
new file mode 100644
index 0000000000..84febe2cab
--- /dev/null
+++ b/keyboards/halokeys/elemental75/info.json
@@ -0,0 +1,103 @@
+{
+ "keyboard_name": "Elemental75",
+ "manufacturer": "Halokeys",
+ "url": "",
+ "maintainer": "shamit05",
+ "usb": {
+ "vid": "0xEA0B",
+ "pid": "0xEA75",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"K00 (A2,B2)", "x":0, "y":0},
+ {"label":"K01 (A2,B1)", "x":1.25, "y":0},
+ {"label":"K02 (A2,B0)", "x":2.25, "y":0},
+ {"label":"K03 (A2,B10)", "x":3.25, "y":0},
+ {"label":"K04 (A2,B11)", "x":4.25, "y":0},
+ {"label":"K05 (A2,B13)", "x":5.5, "y":0},
+ {"label":"K06 (A2,B14)", "x":6.5, "y":0},
+ {"label":"K07 (A2,B15)", "x":7.5, "y":0},
+ {"label":"K08 (A2,A8)", "x":8.5, "y":0},
+ {"label":"K09 (A2,A9)", "x":9.75, "y":0},
+ {"label":"K0A (A2,A14)", "x":10.75, "y":0},
+ {"label":"K0B (A2,A15)", "x":11.75, "y":0},
+ {"label":"K0C (A2,B3)", "x":12.75, "y":0},
+ {"label":"K0D (A2,B4)", "x":14, "y":0},
+ {"label":"K0E (A2,B7)", "x":15.25, "y":0},
+ {"label":"K10 (A3,B2)", "x":0, "y":1.25},
+ {"label":"K11 (A3,B1)", "x":1, "y":1.25},
+ {"label":"K12 (A3,B0)", "x":2, "y":1.25},
+ {"label":"K13 (A3,B10)", "x":3, "y":1.25},
+ {"label":"K14 (A3,B11)", "x":4, "y":1.25},
+ {"label":"K15 (A3,B13)", "x":5, "y":1.25},
+ {"label":"K16 (A3,B14)", "x":6, "y":1.25},
+ {"label":"K17 (A3,B15)", "x":7, "y":1.25},
+ {"label":"K18 (A3,A8)", "x":8, "y":1.25},
+ {"label":"K19 (A3,A9)", "x":9, "y":1.25},
+ {"label":"K1A (A3,A14)", "x":10, "y":1.25},
+ {"label":"K1B (A3,A15)", "x":11, "y":1.25},
+ {"label":"K1C (A3,B3)", "x":12, "y":1.25},
+ {"label":"K1D (A3,B4)", "x":13, "y":1.25},
+ {"label":"K59 (A7,A9)", "x":14, "y":1.25},
+ {"label":"K1E (A3,B7)", "x":15.25, "y":1.25},
+ {"label":"K20 (A4,B2)", "x":0, "y":2.25, "w":1.5},
+ {"label":"K21 (A4,B1)", "x":1.5, "y":2.25},
+ {"label":"K22 (A4,B0)", "x":2.5, "y":2.25},
+ {"label":"K23 (A4,B10)", "x":3.5, "y":2.25},
+ {"label":"K24 (A4,B11)", "x":4.5, "y":2.25},
+ {"label":"K25 (A4,B13)", "x":5.5, "y":2.25},
+ {"label":"K26 (A4,B14)", "x":6.5, "y":2.25},
+ {"label":"K27 (A4,B15)", "x":7.5, "y":2.25},
+ {"label":"K28 (A4,A8)", "x":8.5, "y":2.25},
+ {"label":"K29 (A4,A9)", "x":9.5, "y":2.25},
+ {"label":"K2A (A4,A14)", "x":10.5, "y":2.25},
+ {"label":"K2B (A4,A15)", "x":11.5, "y":2.25},
+ {"label":"K2C (A4,B3)", "x":12.5, "y":2.25},
+ {"label":"K2D (A4,B4)", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"K2E (A4,B7)", "x":15.25, "y":2.25},
+ {"label":"K30 (A5,B2)", "x":0, "y":3.25, "w":1.75},
+ {"label":"K31 (A5,B1)", "x":1.75, "y":3.25},
+ {"label":"K32 (A5,B0)", "x":2.75, "y":3.25},
+ {"label":"K33 (A5,B10)", "x":3.75, "y":3.25},
+ {"label":"K34 (A5,B11)", "x":4.75, "y":3.25},
+ {"label":"K35 (A5,B13)", "x":5.75, "y":3.25},
+ {"label":"K36 (A5,B14)", "x":6.75, "y":3.25},
+ {"label":"K37 (A5,B15)", "x":7.75, "y":3.25},
+ {"label":"K38 (A5,A8)", "x":8.75, "y":3.25},
+ {"label":"K39 (A5,A9)", "x":9.75, "y":3.25},
+ {"label":"K3A (A5,A14)", "x":10.75, "y":3.25},
+ {"label":"K3B (A5,A15)", "x":11.75, "y":3.25},
+ {"label":"K3C (A5,B3)", "x":12.75, "y":3.25, "w":2.25},
+ {"label":"K3E (A5,B7)", "x":15.25, "y":3.25},
+ {"label":"K40 (A6,B2)", "x":0, "y":4.25, "w":1.25},
+ {"label":"K41 (A6,B1)", "x":1.25, "y":4.25},
+ {"label":"K42 (A6,B0)", "x":2.25, "y":4.25},
+ {"label":"K43 (A6,B10)", "x":3.25, "y":4.25},
+ {"label":"K44 (A6,B11)", "x":4.25, "y":4.25},
+ {"label":"K45 (A6,B13)", "x":5.25, "y":4.25},
+ {"label":"K46 (A6,B14)", "x":6.25, "y":4.25},
+ {"label":"K47 (A6,B15)", "x":7.25, "y":4.25},
+ {"label":"K48 (A6,A8)", "x":8.25, "y":4.25},
+ {"label":"K49 (A6,A9)", "x":9.25, "y":4.25},
+ {"label":"K4A (A6,A14)", "x":10.25, "y":4.25},
+ {"label":"K4B (A6,A15)", "x":11.25, "y":4.25},
+ {"label":"K4C (A6,B3)", "x":12.25, "y":4.25, "w":1.5},
+ {"label":"K4D (A6,B4)", "x":14, "y":4.5},
+ {"label":"K4E (A6,B7)", "x":15.25, "y":4.25},
+ {"label":"K50 (A7,B2)", "x":0, "y":5.25, "w":1.5},
+ {"label":"K51 (A7,B1)", "x":1.5, "y":5.25},
+ {"label":"K52 (A7,B0)", "x":2.5, "y":5.25, "w":1.5},
+ {"label":"K54 (A7,B11)", "x":4, "y":5.25, "w":2.25},
+ {"label":"K56 (A7,B14)", "x":6.25, "y":5.25, "w":1.25},
+ {"label":"K58 (A7,A8)", "x":7.5, "y":5.25, "w":2.75},
+ {"label":"K5A (A7,A14)", "x":10.25, "y":5.25, "w":1.25},
+ {"label":"K5B (A7,A15)", "x":11.5, "y":5.25, "w":1.25},
+ {"label":"K5C (A7,B3)", "x":13, "y":5.5},
+ {"label":"K5D (A7,B4)", "x":14, "y":5.5},
+ {"label":"K5E (A7,B7)", "x":15, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/halokeys/elemental75/keymaps/default/keymap.c b/keyboards/halokeys/elemental75/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f34220b6f9
--- /dev/null
+++ b/keyboards/halokeys/elemental75/keymaps/default/keymap.c
@@ -0,0 +1,82 @@
+ /* Copyright 2022 Halokeys
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+/* [Keymaps] ----------------------------------------------------------------- */
+enum layer_names {
+ _BASE,
+ _FN
+};
+
+/* Tap Dance declarations */
+enum {
+ TD_PLAY_FORWARD_BACK,
+};
+
+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: %d, time: %u, interrupt: %d, 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 dance_cln_finished(qk_tap_dance_state_t *state, void *user_data) {
+ uprintf("Tap Dance count: %u", state->count);
+ if (state->count == 1) {
+ tap_code(KC_MPLY);
+ } else if (state->count == 2) {
+ tap_code(KC_MNXT);
+ } else {
+ tap_code(KC_MPRV);
+ }
+}
+
+/* All tap dance functions would go here. Only showing this one. */
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_PLAY_FORWARD_BACK] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, NULL),
+};
+
+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, MO(1), TD(TD_PLAY_FORWARD_BACK),
+ KC_GRV, KC_1, KC_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, XXXXXXX, 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_LSFT, KC_SPC, KC_BSPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN] = LAYOUT(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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 keyboard_post_init_user(void) {
+ /* Customise these values to desired behaviour */
+ debug_enable=true;
+ debug_matrix=true;
+ /* debug_keyboard=true; */
+ /* debug_mouse=true; */
+}
diff --git a/keyboards/halokeys/elemental75/keymaps/default/rules.mk b/keyboards/halokeys/elemental75/keymaps/default/rules.mk
new file mode 100644
index 0000000000..e5ddcae8d9
--- /dev/null
+++ b/keyboards/halokeys/elemental75/keymaps/default/rules.mk
@@ -0,0 +1 @@
+TAP_DANCE_ENABLE = yes
diff --git a/keyboards/halokeys/elemental75/keymaps/via/keymap.c b/keyboards/halokeys/elemental75/keymaps/via/keymap.c
new file mode 100644
index 0000000000..59b9211d83
--- /dev/null
+++ b/keyboards/halokeys/elemental75/keymaps/via/keymap.c
@@ -0,0 +1,97 @@
+ /* Copyright 2022 Halokeys
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+/* [Keymaps] ----------------------------------------------------------------- */
+enum layer_names { _BASE, _FN ,_FN1 ,_FN2 };
+
+/* Tap Dance declarations */
+enum {
+ TD_PLAY_FORWARD_BACK,
+};
+
+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: %d, time: %u, interrupt: %d, 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 dance_cln_finished(qk_tap_dance_state_t *state, void *user_data) {
+ uprintf("Tap Dance count: %u", state->count);
+ if (state->count == 1) {
+ tap_code(KC_MPLY);
+ } else if (state->count == 2) {
+ tap_code(KC_MNXT);
+ } else {
+ tap_code(KC_MPRV);
+ }
+}
+
+/* All tap dance functions would go here. Only showing this one. */
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_PLAY_FORWARD_BACK] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, NULL),
+};
+
+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, MO(1), TD(TD_PLAY_FORWARD_BACK),
+ KC_GRV, KC_1, KC_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, XXXXXXX, 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_LSFT, KC_SPC, KC_BSPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_FN] = LAYOUT(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_FN1] = 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
+ ),
+
+ [_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, KC_TRNS, KC_TRNS, 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 keyboard_post_init_user(void) {
+ /* Customise these values to desired behaviour */
+ debug_enable=true;
+ debug_matrix=true;
+ /* debug_keyboard=true; */
+ /* debug_mouse=true; */
+}
diff --git a/keyboards/halokeys/elemental75/keymaps/via/rules.mk b/keyboards/halokeys/elemental75/keymaps/via/rules.mk
new file mode 100644
index 0000000000..791d5ab502
--- /dev/null
+++ b/keyboards/halokeys/elemental75/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+TAP_DANCE_ENABLE = yes
diff --git a/keyboards/halokeys/elemental75/readme.md b/keyboards/halokeys/elemental75/readme.md
new file mode 100644
index 0000000000..405bfb67b1
--- /dev/null
+++ b/keyboards/halokeys/elemental75/readme.md
@@ -0,0 +1,21 @@
+# Elemental75
+
+A compact 75% keyboard made and sold by Halokeys.
+
+* Keyboard Maintainer: [Shamit Surana](https://github.com/shamit05)
+* Hardware Supported: Elemental75
+* Hardware Availability: Not Available Yet
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the Escape key down (top left key) and plug in the keyboard
+* **Physical reset button**: Hold the reset button on the back of the PCB for at least 5 seconds.
+* **Keycode in layout**: Hold the key mapped to `QK_BOOT` if it is available
+
+Make example for this keyboard (after setting up your build environment):
+
+ make halokeys/elemental75: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/halokeys/elemental75/rules.mk b/keyboards/halokeys/elemental75/rules.mk
new file mode 100644
index 0000000000..226c430d25
--- /dev/null
+++ b/keyboards/halokeys/elemental75/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = STM32F303
+BOARD = QMK_PROTON_C
+
+# 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 = 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
diff --git a/keyboards/han60/config.h b/keyboards/han60/config.h
index c96cb6782f..1c65f6ba90 100644
--- a/keyboards/han60/config.h
+++ b/keyboards/han60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/han60/info.json b/keyboards/han60/info.json
index 474b20de04..1722996c85 100644
--- a/keyboards/han60/info.json
+++ b/keyboards/han60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "han60",
+ "manufacturer": "HanBoards",
"maintainer": "qmk",
"url": "hanboards.com",
+ "usb": {
+ "vid": "0x4842",
+ "pid": "0xFB60",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/han60/readme.md b/keyboards/han60/readme.md
index d2f0fb9811..94dd28c1ec 100644
--- a/keyboards/han60/readme.md
+++ b/keyboards/han60/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/hand88/config.h b/keyboards/hand88/config.h
index 7e013224dd..cb2c25cb8f 100755
--- a/keyboards/hand88/config.h
+++ b/keyboards/hand88/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x3838
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT Hand 88
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -39,7 +32,7 @@ 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
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* Indicator LEDs */
diff --git a/keyboards/hand88/info.json b/keyboards/hand88/info.json
index 1afb77570c..05cef0d06c 100755
--- a/keyboards/hand88/info.json
+++ b/keyboards/hand88/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Hand 88",
+ "manufacturer": "Yiancar-Designs",
"url": "https://yiancar-designs.com",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x3838",
+ "device_version": "0.0.1"
+ },
"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.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/handwired/108key_trackpoint/config.h b/keyboards/handwired/108key_trackpoint/config.h
index b5bf98271a..703cd93e64 100644
--- a/keyboards/handwired/108key_trackpoint/config.h
+++ b/keyboards/handwired/108key_trackpoint/config.h
@@ -2,12 +2,6 @@
#include "config_common.h"
-#define VENDOR_ID 0x1234
-#define PRODUCT_ID 0x5678
-#define DEVICE_VER 0x0001
-#define MANUFACTURER QMK
-#define PRODUCT 108Key-Trackpoint
-
#define MATRIX_ROWS 8
#define MATRIX_COLS 23
@@ -49,7 +43,6 @@
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
#define MATRIX_COL_PINS { C0, C1, C2, C3, C4, C5, C6, C7, D0, D1, F0, D3, D4, F1, D6, D7, E0, E1, E2, E3, E4, E5, E6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/108key_trackpoint/info.json b/keyboards/handwired/108key_trackpoint/info.json
index d3cf5ad26a..a652ee74a9 100644
--- a/keyboards/handwired/108key_trackpoint/info.json
+++ b/keyboards/handwired/108key_trackpoint/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "108 Key with TrackPoint",
+ "keyboard_name": "108Key-TrackPoint",
+ "manufacturer": "QMK",
"url": "",
"maintainer": "mkem114",
+ "usb": {
+ "vid": "0x1234",
+ "pid": "0x5678",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/10k/readme.md b/keyboards/handwired/10k/readme.md
index 270297e927..e681a274d3 100644
--- a/keyboards/handwired/10k/readme.md
+++ b/keyboards/handwired/10k/readme.md
@@ -21,4 +21,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/handwired/2x5keypad/config.h b/keyboards/handwired/2x5keypad/config.h
index 174fb736a2..00c4ac1ab4 100644
--- a/keyboards/handwired/2x5keypad/config.h
+++ b/keyboards/handwired/2x5keypad/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x2020
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Jonathan Cameron
-#define PRODUCT 2x5keypad
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 5
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B3, B2 }
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/2x5keypad/info.json b/keyboards/handwired/2x5keypad/info.json
index 77ce9a8b50..72b5e185b7 100644
--- a/keyboards/handwired/2x5keypad/info.json
+++ b/keyboards/handwired/2x5keypad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "2x5keypad",
+ "manufacturer": "Jonathan Cameron",
"url": "",
"maintainer": "jmcameron",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x2020",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/3dfoxc/config.h b/keyboards/handwired/3dfoxc/config.h
index ea73f91ba0..a0fd24c136 100644
--- a/keyboards/handwired/3dfoxc/config.h
+++ b/keyboards/handwired/3dfoxc/config.h
@@ -18,13 +18,6 @@
#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
diff --git a/keyboards/handwired/3dfoxc/info.json b/keyboards/handwired/3dfoxc/info.json
index 06e849bb11..aa8875e0dd 100644
--- a/keyboards/handwired/3dfoxc/info.json
+++ b/keyboards/handwired/3dfoxc/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "3dfoxc",
+ "manufacturer": "dlgoodr",
"url": "",
"maintainer": "dlgoodr",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/3dfoxc/keymaps/dlg/keymap.c b/keyboards/handwired/3dfoxc/keymaps/dlg/keymap.c
index c4431acecc..2af9802049 100644
--- a/keyboards/handwired/3dfoxc/keymaps/dlg/keymap.c
+++ b/keyboards/handwired/3dfoxc/keymaps/dlg/keymap.c
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------''-----------'
*/
[_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, _______,
+ _______, KC_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, QK_BOOT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, 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,
diff --git a/keyboards/handwired/3dfoxc/readme.md b/keyboards/handwired/3dfoxc/readme.md
index 3d6e33a5c1..9f4dff57d6 100644
--- a/keyboards/handwired/3dfoxc/readme.md
+++ b/keyboards/handwired/3dfoxc/readme.md
@@ -37,6 +37,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/handwired/3dortho14u/readme.md b/keyboards/handwired/3dortho14u/readme.md
index 3163891d48..926721fc72 100644
--- a/keyboards/handwired/3dortho14u/readme.md
+++ b/keyboards/handwired/3dortho14u/readme.md
@@ -37,4 +37,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/handwired/3dortho14u/rev1/readme.md b/keyboards/handwired/3dortho14u/rev1/readme.md
index e785369b23..7a30179797 100644
--- a/keyboards/handwired/3dortho14u/rev1/readme.md
+++ b/keyboards/handwired/3dortho14u/rev1/readme.md
@@ -36,4 +36,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/handwired/3dortho14u/rev2/readme.md b/keyboards/handwired/3dortho14u/rev2/readme.md
index bb2e982130..0b2f1c09df 100644
--- a/keyboards/handwired/3dortho14u/rev2/readme.md
+++ b/keyboards/handwired/3dortho14u/rev2/readme.md
@@ -36,4 +36,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/handwired/3dp660/config.h b/keyboards/handwired/3dp660/config.h
index 60ab13deaa..eaae958e4d 100644
--- a/keyboards/handwired/3dp660/config.h
+++ b/keyboards/handwired/3dp660/config.h
@@ -18,12 +18,6 @@ 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 0x676F // "go" - gooberpsycho
-#define PRODUCT_ID 0x3660 // "3" "660"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER gooberpsycho
-#define PRODUCT 3dp660 Handwired
#define TAPPING_TERM 400
@@ -35,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7 }
#define MATRIX_COL_PINS { D2, D3, C6, C7, D5, D4, D7, B4, B5, B6, F7, F6, F5, F4, F1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/3dp660/info.json b/keyboards/handwired/3dp660/info.json
index db3d47b068..d3bfd24550 100644
--- a/keyboards/handwired/3dp660/info.json
+++ b/keyboards/handwired/3dp660/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "3dp660",
+ "manufacturer": "gooberpsycho",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x676F",
+ "pid": "0x3660",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_66_ansi": {
diff --git a/keyboards/handwired/412_64/config.h b/keyboards/handwired/412_64/config.h
index df8961dc04..b32afc2033 100644
--- a/keyboards/handwired/412_64/config.h
+++ b/keyboards/handwired/412_64/config.h
@@ -4,13 +4,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xF7E0
-#define PRODUCT_ID 0x0412
-#define DEVICE_VER 0x0000
-#define MANUFACTURER EDI/SCI
-#define PRODUCT 412 64 Model 00
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
@@ -27,7 +20,6 @@
*/
#define MATRIX_ROW_PINS { D3, F4, F5, F6, F7, B1, B3, B2 }
#define MATRIX_COL_PINS { B0, D2, D0, D1, D4, C6, D7, E6 }
-#define UNUSED_PINS { B4, B5, B6, B7, C7, F0, F1 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/412_64/info.json b/keyboards/handwired/412_64/info.json
index dad67a3f2a..cbf068c36a 100644
--- a/keyboards/handwired/412_64/info.json
+++ b/keyboards/handwired/412_64/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "412-64",
+ "keyboard_name": "412-64 Model 00",
+ "manufacturer": "EDI/SCI",
"url": "",
"maintainer": "fateeverywhere",
+ "usb": {
+ "vid": "0xF7E0",
+ "pid": "0x0412",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x16": {
"layout": [
diff --git a/keyboards/handwired/42/config.h b/keyboards/handwired/42/config.h
index 9381b7e94f..5ec89cce84 100644
--- a/keyboards/handwired/42/config.h
+++ b/keyboards/handwired/42/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0003
-#define MANUFACTURER nglgzz
-#define PRODUCT 42
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -25,7 +18,6 @@
*/
#define MATRIX_COL_PINS { F5, F6, F7, F0, F1, F4, B6, B5, D7, C7, D6, B7 }
#define MATRIX_ROW_PINS { D2, D3, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/42/info.json b/keyboards/handwired/42/info.json
index 33d8e8ff91..8174c0d230 100644
--- a/keyboards/handwired/42/info.json
+++ b/keyboards/handwired/42/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "42",
+ "manufacturer": "nglgzz",
"url": "",
"maintainer": "nglgzz",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/6key/6key.c b/keyboards/handwired/6key/6key.c
index ab4263bde4..22c766a30f 100644
--- a/keyboards/handwired/6key/6key.c
+++ b/keyboards/handwired/6key/6key.c
@@ -1,16 +1,24 @@
- /* Copyright 2020 Bratzworth
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * 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 Bratzworth
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
#include "6key.h"
+
+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/handwired/6key/6key.h b/keyboards/handwired/6key/6key.h
index fe02df44e9..f63abc35d2 100644
--- a/keyboards/handwired/6key/6key.h
+++ b/keyboards/handwired/6key/6key.h
@@ -1,17 +1,17 @@
- /* Copyright 2020 Bratzworth
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * 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 Bratzworth
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
@@ -24,4 +24,4 @@
{ \
{ k00, k01, k02 }, \
{ k03, k04, k05 } \
-}
+}
diff --git a/keyboards/handwired/6key/config.h b/keyboards/handwired/6key/config.h
index 40eb478b0a..42d7a5cb32 100644
--- a/keyboards/handwired/6key/config.h
+++ b/keyboards/handwired/6key/config.h
@@ -1,30 +1,23 @@
- /* Copyright 2020 Bratzworth
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * 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 Bratzworth
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 0xBEEF
-#define PRODUCT_ID 0x0007
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Bratzworth
-#define PRODUCT 6key
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
@@ -32,7 +25,6 @@
/* pin-out */
#define MATRIX_ROW_PINS { B4, D0 }
#define MATRIX_COL_PINS { D3, D2, D1 }
-#define UNUSED_PINS
/* dip switch */
#define DIP_SWITCH_PINS { C6 }
diff --git a/keyboards/handwired/6key/info.json b/keyboards/handwired/6key/info.json
index 8d165a59ae..b069f067c5 100644
--- a/keyboards/handwired/6key/info.json
+++ b/keyboards/handwired/6key/info.json
@@ -1,10 +1,19 @@
{
"keyboard_name": "6key",
+ "manufacturer": "bratzworth",
"url": "https://github.com/Bratzworth/6key",
"maintainer": "bratzworth",
+ "usb": {
+ "vid": "0xD143",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
- "layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}]
+ "layout": [
+ {"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0},
+ {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}
+ ]
}
}
}
diff --git a/keyboards/handwired/6key/keymaps/default/keymap.c b/keyboards/handwired/6key/keymaps/default/keymap.c
index ad73597bab..ab93024064 100644
--- a/keyboards/handwired/6key/keymaps/default/keymap.c
+++ b/keyboards/handwired/6key/keymaps/default/keymap.c
@@ -15,33 +15,18 @@
*/
#include QMK_KEYBOARD_H
-#define _MAIN 0
-#define _FN 1
-
-#define KC_UNDO LCTL(KC_Z)
-#define KC_REDO LCTL(KC_Y)
+enum layers{
+ _MAIN,
+ _FN
+};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT(
- KC_UNDO, KC_REDO, KC_A,
- KC_C, KC_D, KC_S
+ KC_Z, KC_Y, KC_A,
+ KC_C, KC_D, KC_S
),
-
[_FN] = LAYOUT(
KC_F13, KC_F14, KC_F15,
KC_F16, KC_F17, KC_F18
)
};
-
-bool dip_switch_update_user(uint8_t index, bool active) {
- switch (index) {
- case 0: {
- if (active) {
- set_single_persistent_default_layer(_FN);
- } else {
- set_single_persistent_default_layer(_MAIN);
- }
- }
- }
- return true;
-}
diff --git a/keyboards/handwired/6key/keymaps/via/keymap.c b/keyboards/handwired/6key/keymaps/via/keymap.c
new file mode 100644
index 0000000000..4e1922da56
--- /dev/null
+++ b/keyboards/handwired/6key/keymaps/via/keymap.c
@@ -0,0 +1,35 @@
+ /* Copyright 2022 Bratzworth
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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(
+ LCTL(KC_Z), LCTL(KC_Y), KC_A,
+ KC_C, KC_D, KC_S
+ ),
+ [1] = LAYOUT(
+ KC_F13, KC_F14, KC_F15,
+ KC_F16, KC_F17, KC_F18
+ ),
+ [2] = LAYOUT(
+ 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
+ ),
+};
diff --git a/keyboards/handwired/6key/keymaps/via/rules.mk b/keyboards/handwired/6key/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/handwired/6key/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/handwired/6key/rules.mk b/keyboards/handwired/6key/rules.mk
index 5be28d8a57..3cb12386cc 100644
--- a/keyboards/handwired/6key/rules.mk
+++ b/keyboards/handwired/6key/rules.mk
@@ -7,7 +7,7 @@ BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+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
diff --git a/keyboards/handwired/6macro/config.h b/keyboards/handwired/6macro/config.h
index cfa15ee15b..1e8c296855 100644
--- a/keyboards/handwired/6macro/config.h
+++ b/keyboards/handwired/6macro/config.h
@@ -19,13 +19,6 @@ 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 0x0037
-#define DEVICE_VER 0x0001
-#define MANUFACTURER joaofbmaia
-#define PRODUCT 6macro
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pinout - DON'T CHANGE */
#define MATRIX_ROW_PINS { B3, B4 }
#define MATRIX_COL_PINS { B0, B1, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/6macro/info.json b/keyboards/handwired/6macro/info.json
index eac751e3a8..2fd8e24a5b 100644
--- a/keyboards/handwired/6macro/info.json
+++ b/keyboards/handwired/6macro/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "6macro",
+ "manufacturer": "joaofbmaia",
"url": "",
"maintainer": "joaofbmaia",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0037",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}]
diff --git a/keyboards/handwired/6macro/keymaps/osu/keymap.c b/keyboards/handwired/6macro/keymaps/osu/keymap.c
index ffed7d909f..c3ee0f2ccf 100644
--- a/keyboards/handwired/6macro/keymaps/osu/keymap.c
+++ b/keyboards/handwired/6macro/keymaps/osu/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------.
* |RGB_TOG|RGBMOD+| |
* |-------+-------+-------|
- * |RGBHUE+|RGBBRI+|Spec FN| Hold along with previous to access special funtions (RESET)
+ * |RGBHUE+|RGBBRI+|Spec FN| Hold along with previous to access special funtions (QK_BOOT)
* `-------+-------+-------'
*/
[1] = LAYOUT(
@@ -43,13 +43,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* LAYER 2
* ,-----------------------.
- * | RESET |RGBMOD-| |
+ * | QK_BOOT |RGBMOD-| |
* |-------+-------+-------|
* |RGBHUE-|RGBBRI-| |
* `-------+-------+-------'
*/
[2] = LAYOUT(
- RESET, RGB_RMOD, KC_NO, \
+ QK_BOOT, RGB_RMOD, KC_NO, \
RGB_HUD, RGB_VAD, KC_TRNS \
)
diff --git a/keyboards/handwired/aball/config.h b/keyboards/handwired/aball/config.h
index 33a6cd2a97..6de7b03f43 100644
--- a/keyboards/handwired/aball/config.h
+++ b/keyboards/handwired/aball/config.h
@@ -19,13 +19,6 @@ 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 0xC2F0
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Richard Sutherland
-#define PRODUCT ABall
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 1
diff --git a/keyboards/handwired/aball/info.json b/keyboards/handwired/aball/info.json
index c8afff6a2b..60f40d1935 100644
--- a/keyboards/handwired/aball/info.json
+++ b/keyboards/handwired/aball/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "aball",
+ "keyboard_name": "ABall",
+ "manufacturer": "Richard Sutherland",
"url": "https://github.com/brickbots/aball/",
"maintainer": "@brickbots",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xC2F0",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/aek64/config.h b/keyboards/handwired/aek64/config.h
index cc90dba00f..784eeb1298 100644
--- a/keyboards/handwired/aek64/config.h
+++ b/keyboards/handwired/aek64/config.h
@@ -19,13 +19,6 @@ 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 0x6464
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 4sStylZ and others makers
-#define PRODUCT AEK64
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Originally made for a Teensy 2++
#define MATRIX_COL_PINS { F0, E6, E7, B0, B1, B2, B3, B4, B5, B6, D3, D0, D1, D2 }
#define MATRIX_ROW_PINS { E0, E1, C0, C1, C2 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/aek64/info.json b/keyboards/handwired/aek64/info.json
index 75cb254024..d0e2474d1d 100644
--- a/keyboards/handwired/aek64/info.json
+++ b/keyboards/handwired/aek64/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "aek64",
+ "keyboard_name": "AEK64",
+ "manufacturer": "4sStylZ and others makers",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6464",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"Esc", "x":0, "y":0, "w":1.25}, {"label":"1", "x":1.25, "y":0}, {"label":"2", "x":2.25, "y":0}, {"label":"3", "x":3.25, "y":0}, {"label":"4", "x":4.25, "y":0}, {"label":"5", "x":5.25, "y":0}, {"label":"6", "x":6.25, "y":0}, {"label":"7", "x":7.25, "y":0}, {"label":"8", "x":8.25, "y":0}, {"label":"9", "x":9.25, "y":0}, {"label":"0", "x":10.25, "y":0}, {"label":"\u00b0", "x":11.25, "y":0}, {"label":"+", "x":12.25, "y":0}, {"label":"Backspace", "x":13.25, "y":0, "w":1.75}, {"label":"Tab", "x":0, "y":1, "w":1.75}, {"label":"A", "x":1.75, "y":1}, {"label":"Z", "x":2.75, "y":1}, {"label":"E", "x":3.75, "y":1}, {"label":"R", "x":4.75, "y":1}, {"label":"T", "x":5.75, "y":1}, {"label":"Y", "x":6.75, "y":1}, {"label":"U", "x":7.75, "y":1}, {"label":"I", "x":8.75, "y":1}, {"label":"O", "x":9.75, "y":1}, {"label":"P", "x":10.75, "y":1}, {"label":"{", "x":11.75, "y":1}, {"label":"}", "x":12.75, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":2}, {"label":"Q", "x":2, "y":2}, {"label":"S", "x":3, "y":2}, {"label":"D", "x":4, "y":2}, {"label":"F", "x":5, "y":2}, {"label":"G", "x":6, "y":2}, {"label":"H", "x":7, "y":2}, {"label":"J", "x":8, "y":2}, {"label":"K", "x":9, "y":2}, {"label":"L", "x":10, "y":2}, {"label":"M", "x":11, "y":2}, {"label":"%", "x":12, "y":2}, {"label":"&micro;", "x":13, "y":2}, {"label":"Enter", "x":14, "y":1, "h":2}, {"label":"Shift", "x":0, "y":3, "w":1.5}, {"label":">", "x":1.5, "y":3}, {"label":"W", "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":"?", "x":8.5, "y":3}, {"label":".", "x":9.5, "y":3}, {"label":"/", "x":10.5, "y":3}, {"label":"&sect;", "x":11.5, "y":3}, {"label":"Shift", "x":12.5, "y":3, "w":2.5}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Opt", "x":1.5, "y":4, "w":1.25}, {"label":"Cmd", "x":2.75, "y":4, "w":1.5}, {"label":"Space", "x":4.25, "y":4, "w":6.5}, {"label":"Cmd", "x":10.75, "y":4, "w":1.5}, {"label":"Opt", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}]
diff --git a/keyboards/handwired/aek64/keymaps/4sstylz/keymap.c b/keyboards/handwired/aek64/keymaps/4sstylz/keymap.c
index cb62fb001c..f063329104 100644
--- a/keyboards/handwired/aek64/keymaps/4sstylz/keymap.c
+++ b/keyboards/handwired/aek64/keymaps/4sstylz/keymap.c
@@ -64,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LALT(KC_F4), KC_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 ,
_______ , _______ , SLC_ALL , SLC_ROW , SLC_WRD , _______, KC_BSPC, KC_HOME, KC_UP , KC_END , KC_BRIU, KC_BRID , KC_PSCR,
_______ , _______ , LSFT(KC_DEL), LCTL(KC_INS), LSFT(KC_INS), KC_DEL , KC_ENT , KC_LEFT, KC_DOWN, KC_RIGHT, BL_TOGG, BL_STEP , BL_BRTG, _______,
- _______ , _______ , KC_MUTE , KC_VOLD , KC_VOLU , ALT_TAB, _______, _______, _______, _______ , _______, RESET , _______ ,
+ _______ , _______ , KC_MUTE , KC_VOLD , KC_VOLU , ALT_TAB, _______, _______, _______, _______ , _______, QK_BOOT , _______ ,
_______ , _______ , _______ , _______, _______ , _______, _______
)
};
diff --git a/keyboards/handwired/aim65/config.h b/keyboards/handwired/aim65/config.h
index 1c0468c7b0..ae03460cc3 100644
--- a/keyboards/handwired/aim65/config.h
+++ b/keyboards/handwired/aim65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0F34
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Hi-Tek
-#define PRODUCT AIM-65
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
diff --git a/keyboards/handwired/aim65/info.json b/keyboards/handwired/aim65/info.json
index 1559c19f88..adb446d3cb 100644
--- a/keyboards/handwired/aim65/info.json
+++ b/keyboards/handwired/aim65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Hi-Tek AIM-65",
+ "keyboard_name": "AIM-65",
+ "manufacturer": "Hi-Tek",
"url": "https://github.com/Bonnee/aim-65_keyboard",
"maintainer": "bonnee",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0F34",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/aim65/keymaps/bonnee/keymap.c b/keyboards/handwired/aim65/keymaps/bonnee/keymap.c
index 62f2d21e95..7884841b21 100644
--- a/keyboards/handwired/aim65/keymaps/bonnee/keymap.c
+++ b/keyboards/handwired/aim65/keymaps/bonnee/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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,
- KC_TAB, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_TAB, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______
diff --git a/keyboards/handwired/amigopunk/config.h b/keyboards/handwired/amigopunk/config.h
index 473f33aa9d..c6f1a99537 100644
--- a/keyboards/handwired/amigopunk/config.h
+++ b/keyboards/handwired/amigopunk/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x1805
-#define DEVICE_VER 0x0001
-#define MANUFACTURER haesbaert
-#define PRODUCT amigopunk
-
/* Key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -32,7 +25,6 @@
/* Key matrix pins */
#define MATRIX_ROW_PINS { C0, C1, C2, C3, C4, C5 }
#define MATRIX_COL_PINS { B6, B5, B4, B3, B2, B1, B0, E7, E6, F0, F1, F2, F3, F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/amigopunk/info.json b/keyboards/handwired/amigopunk/info.json
index f3cf31a843..c5ff09f831 100644
--- a/keyboards/handwired/amigopunk/info.json
+++ b/keyboards/handwired/amigopunk/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "amigopunk",
+ "manufacturer": "haesbaert",
"url": "www.haesbaert.org",
"maintainer": "haesbaert",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1805",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/angel/config.h b/keyboards/handwired/angel/config.h
index e2472a1a27..ce1bf11ed6 100644
--- a/keyboards/handwired/angel/config.h
+++ b/keyboards/handwired/angel/config.h
@@ -17,17 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0805
-
-#define MANUFACTURER JSA
-#define PRODUCT Angel
-/* USB Version in Binary-coded decimal: 0xJJMN where
- * JJ is the major number, M is minor, N is sub minor. */
-#define DEVICE_VER 0x0100 // Version 1.00: hand-wire
-
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -41,7 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, B2, B5, B4 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B3, B1, F7, F6, F5 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
// https://docs.qmk.fm/using-qmk/software-features/tap_hold
diff --git a/keyboards/handwired/angel/info.json b/keyboards/handwired/angel/info.json
index 12ac29ffa7..8e932c9a47 100644
--- a/keyboards/handwired/angel/info.json
+++ b/keyboards/handwired/angel/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Angel",
+ "manufacturer": "JSA",
"url": "https://github.com/jamessa/Angel",
"maintainer": "jamessa",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0805",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"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.5, "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":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.5, "y":3}, {"x":1.5, "y":3}, {"x":2.5, "y":3}, {"x":3.5, "y":3}, {"x":4.5, "y":3, "w":1.25}, {"x":5.75, "y":3, "w":1.5}, {"x":7.25, "y":3, "w":1.25}, {"x":8.5, "y":3}, {"x":9.5, "y":3}, {"x":10.5, "y":3}, {"x":11.5, "y":3}]
diff --git a/keyboards/handwired/aplx2/config.h b/keyboards/handwired/aplx2/config.h
index a02b5954ae..cbe0ef91ba 100644
--- a/keyboards/handwired/aplx2/config.h
+++ b/keyboards/handwired/aplx2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xE0E0
-#define PRODUCT_ID 0x0030
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Aplyard
-#define PRODUCT Aplx2
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 2
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pin-out */
#define MATRIX_ROW_PINS { D1 }
#define MATRIX_COL_PINS { B5, D3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/aplx2/info.json b/keyboards/handwired/aplx2/info.json
index e514ed07d8..d1a6a32c26 100644
--- a/keyboards/handwired/aplx2/info.json
+++ b/keyboards/handwired/aplx2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Aplx2",
+ "manufacturer": "Aplyard",
"url": "",
"maintainer": "Aplyard",
+ "usb": {
+ "vid": "0xE0E0",
+ "pid": "0x0030",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/aranck/config.h b/keyboards/handwired/aranck/config.h
index 88b394a29e..1b9a0b2419 100644
--- a/keyboards/handwired/aranck/config.h
+++ b/keyboards/handwired/aranck/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Ardakilic
-#define PRODUCT Aranck
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ D3, D2, D1, D0 }
#define MATRIX_COL_PINS \
{ C6, D7, E6, B4, B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/aranck/info.json b/keyboards/handwired/aranck/info.json
index f3b48378fa..4bf69e192a 100644
--- a/keyboards/handwired/aranck/info.json
+++ b/keyboards/handwired/aranck/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Aranck",
+ "manufacturer": "Ardakilic",
"url": "https://github.com/Ardakilic",
"maintainer": "Arda Kilicdagi",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_planck_mit": {
"layout": [
diff --git a/keyboards/handwired/aranck/keymaps/turkishish/keymap.c b/keyboards/handwired/aranck/keymaps/turkishish/keymap.c
index 4e7ef57b71..d69c705a42 100644
--- a/keyboards/handwired/aranck/keymaps/turkishish/keymap.c
+++ b/keyboards/handwired/aranck/keymaps/turkishish/keymap.c
@@ -206,7 +206,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_mit(
- _______, RESET, EEP_RST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, QK_BOOT, EEP_RST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, MU_MOD, AU_ON, AU_OFF, _______, _______, _______, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/handwired/arrow_pad/config.h b/keyboards/handwired/arrow_pad/config.h
index c8b19524bb..9615075121 100644
--- a/keyboards/handwired/arrow_pad/config.h
+++ b/keyboards/handwired/arrow_pad/config.h
@@ -19,13 +19,6 @@ 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 0x4096
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nobody
-#define PRODUCT GoldPad
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, F7 }
#define MATRIX_COL_PINS { B0, B1, B2, B3 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B7
diff --git a/keyboards/handwired/arrow_pad/info.json b/keyboards/handwired/arrow_pad/info.json
index fc24898f06..d4c3137735 100644
--- a/keyboards/handwired/arrow_pad/info.json
+++ b/keyboards/handwired/arrow_pad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "arrow_pad",
+ "keyboard_name": "GoldPad",
+ "manufacturer": "Nobody",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x4096",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/arrow_pad/keymaps/pad_21/config.h b/keyboards/handwired/arrow_pad/keymaps/pad_21/config.h
index 550bfd183f..1f07965555 100644
--- a/keyboards/handwired/arrow_pad/keymaps/pad_21/config.h
+++ b/keyboards/handwired/arrow_pad/keymaps/pad_21/config.h
@@ -43,7 +43,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, D5 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B6, B5, B4, D7, D4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/handwired/arrow_pad/keymaps/pad_21/keymap.c b/keyboards/handwired/arrow_pad/keymaps/pad_21/keymap.c
index 8bb833b21d..e2ec848b59 100644
--- a/keyboards/handwired/arrow_pad/keymaps/pad_21/keymap.c
+++ b/keyboards/handwired/arrow_pad/keymaps/pad_21/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______,
- RESET, _______, _______ ),
+ QK_BOOT, _______, _______ ),
};
diff --git a/keyboards/handwired/arrow_pad/keymaps/pad_24/config.h b/keyboards/handwired/arrow_pad/keymaps/pad_24/config.h
index 51d3b9080b..4bc89f5ce7 100644
--- a/keyboards/handwired/arrow_pad/keymaps/pad_24/config.h
+++ b/keyboards/handwired/arrow_pad/keymaps/pad_24/config.h
@@ -43,7 +43,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, F7 }
#define MATRIX_COL_PINS { B0, B1, B2, B3 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B7
diff --git a/keyboards/handwired/arrow_pad/keymaps/pad_24/keymap.c b/keyboards/handwired/arrow_pad/keymaps/pad_24/keymap.c
index caee60d6ae..0126aa49fb 100644
--- a/keyboards/handwired/arrow_pad/keymaps/pad_24/keymap.c
+++ b/keyboards/handwired/arrow_pad/keymaps/pad_24/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, XXXXXXX,
- RESET, _______, _______, _______ ),
+ QK_BOOT, _______, _______, _______ ),
};
diff --git a/keyboards/handwired/atreus50/config.h b/keyboards/handwired/atreus50/config.h
index 0356bf3d7d..f433427ab0 100644
--- a/keyboards/handwired/atreus50/config.h
+++ b/keyboards/handwired/atreus50/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBB80
-#define PRODUCT_ID 0x040D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Hexwire
-#define PRODUCT Atreus 50 Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Planck PCB default pin-out */
#define MATRIX_ROW_PINS { D3, D2, D1, D0 }
#define MATRIX_COL_PINS { D4, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/atreus50/info.json b/keyboards/handwired/atreus50/info.json
index 5007c3135e..640c633157 100644
--- a/keyboards/handwired/atreus50/info.json
+++ b/keyboards/handwired/atreus50/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Atreus50",
+ "manufacturer": "Hexwire",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xBB80",
+ "pid": "0x040D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c b/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c
index 49a53cfe21..5ac74e6f8a 100644
--- a/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c
+++ b/keyboards/handwired/atreus50/keymaps/ajp10304/keymap.c
@@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT(
- M_CUSTOM, RESET, QWERTY, _______, _______, DYN_REC_START1, DYN_REC_START2, _______, _______, _______, _______, KC_DEL ,
+ M_CUSTOM, QK_BOOT, 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, _______, 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/default/keymap.c b/keyboards/handwired/atreus50/keymaps/default/keymap.c
index 68724c0506..52a450c3a0 100644
--- a/keyboards/handwired/atreus50/keymaps/default/keymap.c
+++ b/keyboards/handwired/atreus50/keymaps/default/keymap.c
@@ -4,13 +4,15 @@
// 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 _MOVEMENT 5
-#define _ADJUST 16
+enum layer_names {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _MOVEMENT,
+ _ADJUST,
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/handwired/axon/config.h b/keyboards/handwired/axon/config.h
index ef015194e8..50be74b882 100644
--- a/keyboards/handwired/axon/config.h
+++ b/keyboards/handwired/axon/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RobinL
-#define PRODUCT Axon
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { D5, D6, D4, D0 }
#define MATRIX_COL_PINS { B0, D7, B1, B2, C0, C1, C2, C3, C4, C5, D1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/axon/info.json b/keyboards/handwired/axon/info.json
index 5eabffadb4..e74f63e74f 100644
--- a/keyboards/handwired/axon/info.json
+++ b/keyboards/handwired/axon/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Axon",
+ "manufacturer": "RobinL",
"url": "https://github.com/thatfellarobin/axon",
"maintainer": "Robin L.",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/handwired/axon/readme.md b/keyboards/handwired/axon/readme.md
index ca422130ef..d48297b4f7 100644
--- a/keyboards/handwired/axon/readme.md
+++ b/keyboards/handwired/axon/readme.md
@@ -15,8 +15,8 @@ Make example for this keyboard (after setting up your build environment):
## To reset into bootloader mode:
1. While plugged in, press and hold `BOOT` switch
-2. While holding `BOOT`, press `RESET` and hold it for a second or two
-3. Release `RESET`
+2. While holding `BOOT`, press `QK_BOOT` and hold it for a second or two
+3. Release `QK_BOOT`
4. Release `BOOT`
5. The keyboard should now be recognized as a USBasp programmer device.
diff --git a/keyboards/handwired/baredev/rev1/info.json b/keyboards/handwired/baredev/rev1/info.json
index 6292817538..d35e3644ba 100644
--- a/keyboards/handwired/baredev/rev1/info.json
+++ b/keyboards/handwired/baredev/rev1/info.json
@@ -9,13 +9,6 @@
"term": 175
},
"matrix_pins": {
- "unused": [
- "F1",
- "F4",
- "F5",
- "F6",
- "F7"
- ],
"cols": [
"B6",
"B7",
@@ -703,4 +696,4 @@
]
}
}
-} \ 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
index 73113385d3..82277e2158 100644
--- a/keyboards/handwired/baredev/rev1/keymaps/manoshu/keymap.c
+++ b/keyboards/handwired/baredev/rev1/keymaps/manoshu/keymap.c
@@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[LAYER_FUNCTIONS] = LAYOUT(
/* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┠*/
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSBR, KC_SNIP,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSBR, KC_SNIP,
/* ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┴─────────┤ */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WMGM, KC_WMGP, _______,
/* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┤ */
diff --git a/keyboards/handwired/baredev/rev1/readme.md b/keyboards/handwired/baredev/rev1/readme.md
index 3f852f2bc6..1dac2fb6ad 100644
--- a/keyboards/handwired/baredev/rev1/readme.md
+++ b/keyboards/handwired/baredev/rev1/readme.md
@@ -26,4 +26,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/handwired/battleship_gamepad/config.h b/keyboards/handwired/battleship_gamepad/config.h
index 1cbfbf87e9..25389c0245 100644
--- a/keyboards/handwired/battleship_gamepad/config.h
+++ b/keyboards/handwired/battleship_gamepad/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4142
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER arbraini
-#define PRODUCT Battleship Gamepad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 8
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B6, B2, B3, B1, F7 }
#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* joystick configuration */
#define JOYSTICK_BUTTON_COUNT 25
diff --git a/keyboards/handwired/battleship_gamepad/info.json b/keyboards/handwired/battleship_gamepad/info.json
index 581f290aa2..b2278a79ac 100644
--- a/keyboards/handwired/battleship_gamepad/info.json
+++ b/keyboards/handwired/battleship_gamepad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Battleship Gamepad",
+ "manufacturer": "arbraini",
"url": "https://github.com/abraini-Nascent/battleship_gamepad",
"maintainer": "arbraini",
+ "usb": {
+ "vid": "0x4142",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/battleship_gamepad/readme.md b/keyboards/handwired/battleship_gamepad/readme.md
index c566753161..58eb72bd28 100644
--- a/keyboards/handwired/battleship_gamepad/readme.md
+++ b/keyboards/handwired/battleship_gamepad/readme.md
@@ -24,6 +24,6 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (the top left key in the 2x5 bank) 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`. In the default layout this is the key at (0,0) on layer 1.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT`. In the default layout this is the key at (0,0) on layer 1.
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/bdn9_ble/config.h b/keyboards/handwired/bdn9_ble/config.h
index 1d9ad6ecdd..b23a9bfba8 100644
--- a/keyboards/handwired/bdn9_ble/config.h
+++ b/keyboards/handwired/bdn9_ble/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1134
-#define DEVICE_VER 0x0100
-#define MANUFACTURER KeyPCB/Keebio
-#define PRODUCT BDN9-BLE
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
diff --git a/keyboards/handwired/bdn9_ble/info.json b/keyboards/handwired/bdn9_ble/info.json
index 6b2faf14d2..8d3bdf9d98 100644
--- a/keyboards/handwired/bdn9_ble/info.json
+++ b/keyboards/handwired/bdn9_ble/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "KeyPCB/Keeb.io BDN9-BLE",
+ "keyboard_name": "BDN9-BLE",
+ "manufacturer": "KeyPCB/Keebio",
"url": "",
"maintainer": "merlin04",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1134",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/bento/info.json b/keyboards/handwired/bento/info.json
deleted file mode 100644
index cae2773de2..0000000000
--- a/keyboards/handwired/bento/info.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "keyboard_name": "Bento Macropad",
- "url": "https://www.thingiverse.com/thing:4416966",
- "maintainer": "Ghostseven",
- "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}
- ]
- }
- }
-}
diff --git a/keyboards/handwired/bento/keymaps/mac/keymap.c b/keyboards/handwired/bento/keymaps/mac/keymap.c
index bb584c9a5b..b90c086977 100644
--- a/keyboards/handwired/bento/keymaps/mac/keymap.c
+++ b/keyboards/handwired/bento/keymaps/mac/keymap.c
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ---- | Shift+CMD+B (Build VS Code) | DFU Mode
* Shift+CMD+C (FF Console) | Ctrl+Alt+U (Upload PIO) | Ctrl+Alt+S (Serial PIO) */
[_CODE] = LAYOUT(
- _______, S(G(KC_B)), RESET,
+ _______, S(G(KC_B)), QK_BOOT,
G(A(KC_C)), C(A(KC_U)), C(A(KC_S))
),
};
diff --git a/keyboards/handwired/bento/rev1/config.h b/keyboards/handwired/bento/rev1/config.h
index 9bb7ef666d..0eb7664878 100644
--- a/keyboards/handwired/bento/rev1/config.h
+++ b/keyboards/handwired/bento/rev1/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xDAD3
-#define DEVICE_VER 0x0100
-#define MANUFACTURER GhostSeven
-#define PRODUCT Bento Macropad Rev. 1
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
diff --git a/keyboards/handwired/bento/rev1/info.json b/keyboards/handwired/bento/rev1/info.json
new file mode 100644
index 0000000000..26aab3813a
--- /dev/null
+++ b/keyboards/handwired/bento/rev1/info.json
@@ -0,0 +1,23 @@
+{
+ "keyboard_name": "Bento Macropad Rev. 1",
+ "manufacturer": "GhostSeven",
+ "url": "https://www.thingiverse.com/thing:4416966",
+ "maintainer": "Ghostseven",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xDAD3",
+ "device_version": "1.0.0"
+ },
+ "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}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/bigmac/config.h b/keyboards/handwired/bigmac/config.h
index b036accaa2..d953dea55e 100644
--- a/keyboards/handwired/bigmac/config.h
+++ b/keyboards/handwired/bigmac/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x1010
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Taylore101
-#define PRODUCT BigMac
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
diff --git a/keyboards/handwired/bigmac/info.json b/keyboards/handwired/bigmac/info.json
index 3774530912..d8ee9837f2 100644
--- a/keyboards/handwired/bigmac/info.json
+++ b/keyboards/handwired/bigmac/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BigMac",
+ "manufacturer": "Taylore101",
"url": "",
"maintainer": "Taylore101",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1010",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/bolek/config.h b/keyboards/handwired/bolek/config.h
index aafaa62174..b6cbea8f39 100644
--- a/keyboards/handwired/bolek/config.h
+++ b/keyboards/handwired/bolek/config.h
@@ -19,13 +19,6 @@ 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 0x3708
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mikołaj Biel
-#define PRODUCT bolek
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, B5, D3, D2, D1, B4 }
#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, E6, D7, C6, D0, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/bolek/info.json b/keyboards/handwired/bolek/info.json
index 2fc0b5614d..dcbfdb236e 100644
--- a/keyboards/handwired/bolek/info.json
+++ b/keyboards/handwired/bolek/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "bolek",
+ "manufacturer": "Mikołaj Biel",
"url": "https://github.com/klausweiss/bolek",
"maintainer": "klausweiss",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3708",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/boss566y/redragon_vara/config.h b/keyboards/handwired/boss566y/redragon_vara/config.h
index 8d731763b9..bbb1a78dbe 100644
--- a/keyboards/handwired/boss566y/redragon_vara/config.h
+++ b/keyboards/handwired/boss566y/redragon_vara/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5048 //PH
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER PH
-#define PRODUCT Redragon Vara
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 11
diff --git a/keyboards/handwired/boss566y/redragon_vara/info.json b/keyboards/handwired/boss566y/redragon_vara/info.json
index 235999bc32..7521d3daff 100644
--- a/keyboards/handwired/boss566y/redragon_vara/info.json
+++ b/keyboards/handwired/boss566y/redragon_vara/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Handwired Redragon Vara",
+ "keyboard_name": "Redragon Vara",
+ "manufacturer": "PH",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5048",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_fullsize_ansi": {
"layout": [
diff --git a/keyboards/handwired/brain/config.h b/keyboards/handwired/brain/config.h
index 6b9e650bcf..317d25f5f5 100644
--- a/keyboards/handwired/brain/config.h
+++ b/keyboards/handwired/brain/config.h
@@ -21,12 +21,6 @@ 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 0x4A53
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER klackygears
-#define PRODUCT Brain
#define SPLIT_USB_DETECT
diff --git a/keyboards/handwired/brain/info.json b/keyboards/handwired/brain/info.json
index c10a33db99..89af811654 100644
--- a/keyboards/handwired/brain/info.json
+++ b/keyboards/handwired/brain/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Brain",
+ "manufacturer": "Klackygears",
"url": "",
"maintainer": "Klackygears",
+ "usb": {
+ "vid": "0x4A53",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/bstk100/config.h b/keyboards/handwired/bstk100/config.h
index 29a5afa35e..c51031b2b5 100644
--- a/keyboards/handwired/bstk100/config.h
+++ b/keyboards/handwired/bstk100/config.h
@@ -20,13 +20,6 @@ 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 0xB100
-#define DEVICE_VER 0x0001
-#define MANUFACTURER FREE WING
-#define PRODUCT bstk100
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 5
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/handwired/bstk100/info.json b/keyboards/handwired/bstk100/info.json
index aec01fccc9..05d1ad212f 100644
--- a/keyboards/handwired/bstk100/info.json
+++ b/keyboards/handwired/bstk100/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "bstk100",
+ "manufacturer": "FREE WING",
"url": "http://www.neko.ne.jp/~freewing/",
"maintainer": "FREE WING",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xB100",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/cans12er/config.h b/keyboards/handwired/cans12er/config.h
index 269471ac0b..240a2a5da9 100644
--- a/keyboards/handwired/cans12er/config.h
+++ b/keyboards/handwired/cans12er/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Can
-#define PRODUCT cans12er
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 4
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F7, B1, B3 }
#define MATRIX_COL_PINS { D0, D4, C6, D7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/handwired/cans12er/info.json b/keyboards/handwired/cans12er/info.json
index 15c01dd6de..28d6d2c83e 100644
--- a/keyboards/handwired/cans12er/info.json
+++ b/keyboards/handwired/cans12er/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Cans12er",
+ "manufacturer": "Can",
"url": "",
"maintainer": "canbaytok",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_3x4": {
"layout": [
diff --git a/keyboards/handwired/carpolly/config.h b/keyboards/handwired/carpolly/config.h
index e0890cf7ac..8830ebff52 100644
--- a/keyboards/handwired/carpolly/config.h
+++ b/keyboards/handwired/carpolly/config.h
@@ -18,13 +18,6 @@
#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
diff --git a/keyboards/handwired/carpolly/info.json b/keyboards/handwired/carpolly/info.json
index 7a7395e914..5648033aca 100644
--- a/keyboards/handwired/carpolly/info.json
+++ b/keyboards/handwired/carpolly/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Carpolly",
+ "manufacturer": "paul",
"url": "https://github.com/PollyV1",
"maintainer": "Paul Enrico N. Viola",
+ "usb": {
+ "vid": "0x6532",
+ "pid": "0x0017",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/chiron/config.h b/keyboards/handwired/chiron/config.h
index 0e8d697025..52bb89519b 100644
--- a/keyboards/handwired/chiron/config.h
+++ b/keyboards/handwired/chiron/config.h
@@ -19,12 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Mike Hix
-#define PRODUCT chiron
-
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
@@ -33,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Pro Micro Pins A3, A2, A1, A0, 15, 14, 16
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
-#define UNUSED_PINS
// Pro Micro Pins RX1
#define SPLIT_HAND_PIN D2
diff --git a/keyboards/handwired/chiron/info.json b/keyboards/handwired/chiron/info.json
index 46cf5a1d47..92f650c6f8 100644
--- a/keyboards/handwired/chiron/info.json
+++ b/keyboards/handwired/chiron/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Chiron Keyboard",
+ "keyboard_name": "Chiron",
+ "manufacturer": "Mike Hix",
"url": "",
"maintainer": "musl",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/ck4x4/config.h b/keyboards/handwired/ck4x4/config.h
index 428a163170..1d7a351568 100644
--- a/keyboards/handwired/ck4x4/config.h
+++ b/keyboards/handwired/ck4x4/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6464
-#define DEVICE_VER 0x0001
-#define MANUFACTURER QMK
-#define PRODUCT CK4x4
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
diff --git a/keyboards/handwired/ck4x4/info.json b/keyboards/handwired/ck4x4/info.json
index 11f5c31054..ff165e75f7 100644
--- a/keyboards/handwired/ck4x4/info.json
+++ b/keyboards/handwired/ck4x4/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "CK4x4",
+ "manufacturer": "QMK",
"url": "",
"maintainer": "awkannan",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6464",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/cmd60/config.h b/keyboards/handwired/cmd60/config.h
index 14bcdec530..433aabc5b7 100644
--- a/keyboards/handwired/cmd60/config.h
+++ b/keyboards/handwired/cmd60/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER cmd
-#define PRODUCT CMD60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F4, F5, F6, F7 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D0, D1, D2, D3, C6, D7, B4, B5, B6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/cmd60/info.json b/keyboards/handwired/cmd60/info.json
index 41d73348c4..077fdbce67 100644
--- a/keyboards/handwired/cmd60/info.json
+++ b/keyboards/handwired/cmd60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "CMD60",
+ "manufacturer": "cmd",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/co60/info.json b/keyboards/handwired/co60/info.json
index 95fb155836..a6b2ae15dd 100644
--- a/keyboards/handwired/co60/info.json
+++ b/keyboards/handwired/co60/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "CO60",
+ "manufacturer": "John M Daly",
"url": "https://github.com/jmdaly/CO60",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000"
+ },
"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":"Del", "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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"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":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"label":"LSpace", "x":3.75, "y":4, "w":2.25}, {"label":"Fn", "x":6, "y":4, "w":1.25}, {"label":"RSpace", "x":7.25, "y":4, "w":2.75}, {"label":"Alt", "x":10, "y":4, "w":1}, {"label":"Win", "x":11, "y":4, "w":1}, {"label":"Menu", "x":12, "y":4, "w":1}, {"label":"Ctrl", "x":13, "y":4, "w":1}, {"label":"Fn", "x":14, "y":4, "w":1}]
diff --git a/keyboards/handwired/co60/keymaps/jmdaly_hhkb_split_space/keymap.c b/keyboards/handwired/co60/keymaps/jmdaly_hhkb_split_space/keymap.c
index 0f19f9fbe3..f16f39e68e 100644
--- a/keyboards/handwired/co60/keymaps/jmdaly_hhkb_split_space/keymap.c
+++ b/keyboards/handwired/co60/keymaps/jmdaly_hhkb_split_space/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LALT, KC_LGUI, KC_ENT, MO(_L3), KC_SPC, KC_LEAD, KC_RGUI, KC_RALT
),
[_L3] = LAYOUT_60_hhkb_split_625u_space( /* Function */
- 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, _______, _______,
+ QK_BOOT, 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_BRTG, BL_TOGG, BL_INC, BL_DEC, BL_ON, BL_OFF, _______, _______, _______, _______, _______, KC_PGUP, KC_INSERT, KC_DEL,
_______, RGB_TOG, RGB_MOD, RGB_RMOD, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_HOME, KC_END, _______,
_______, BL_DEC, _______, _______, _______, _______, _______, DF(_L1), DF(_L2), _______, KC_PGDOWN, _______, _______,
diff --git a/keyboards/handwired/co60/rev1/config.h b/keyboards/handwired/co60/rev1/config.h
index a41bde6fa2..e018e0cd8d 100644
--- a/keyboards/handwired/co60/rev1/config.h
+++ b/keyboards/handwired/co60/rev1/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER John M Daly
-#define PRODUCT CO60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B2, B5, B4, D7, D6, B3, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/co60/rev1/info.json b/keyboards/handwired/co60/rev1/info.json
new file mode 100644
index 0000000000..0b24f1e805
--- /dev/null
+++ b/keyboards/handwired/co60/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "CO60 rev 1",
+ "usb": {
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/handwired/co60/rev6/config.h b/keyboards/handwired/co60/rev6/config.h
index c142d10f29..3ab4305841 100644
--- a/keyboards/handwired/co60/rev6/config.h
+++ b/keyboards/handwired/co60/rev6/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER John M Daly
-#define PRODUCT CO60 rev6
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/handwired/co60/rev6/info.json b/keyboards/handwired/co60/rev6/info.json
new file mode 100644
index 0000000000..f24eaa40e2
--- /dev/null
+++ b/keyboards/handwired/co60/rev6/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "CO60 rev 6",
+ "usb": {
+ "device_version": "6.0.0"
+ }
+}
diff --git a/keyboards/handwired/co60/rev7/config.h b/keyboards/handwired/co60/rev7/config.h
index 16fa7cb4c5..150da56dc6 100644
--- a/keyboards/handwired/co60/rev7/config.h
+++ b/keyboards/handwired/co60/rev7/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER John M Daly
-#define PRODUCT CO60 rev7
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { A8, A2, B13, B2, B10 }
#define MATRIX_COL_PINS { A10, A9, A3, A4, A5, A6, B0, B1, A15, B3, B4, B5, C13, C14, C15 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/co60/rev7/info.json b/keyboards/handwired/co60/rev7/info.json
new file mode 100644
index 0000000000..8befb8663c
--- /dev/null
+++ b/keyboards/handwired/co60/rev7/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "CO60 rev 7",
+ "usb": {
+ "device_version": "7.0.0"
+ }
+}
diff --git a/keyboards/handwired/colorlice/config.h b/keyboards/handwired/colorlice/config.h
index 6fdd87ccf5..a941ea493d 100644
--- a/keyboards/handwired/colorlice/config.h
+++ b/keyboards/handwired/colorlice/config.h
@@ -19,13 +19,6 @@ 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 0x0302
-#define DEVICE_VER 0x0001
-#define MANUFACTURER marhalloweenvt
-#define PRODUCT Colorlice
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, B6, B5, B4, D7, D6, D4, E6, B0, B3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/colorlice/info.json b/keyboards/handwired/colorlice/info.json
index 582013c506..4e13a7c2c6 100644
--- a/keyboards/handwired/colorlice/info.json
+++ b/keyboards/handwired/colorlice/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ColorLice",
+ "manufacturer": "marhalloweenvt",
"url": "",
"maintainer": "marhalloweenvt",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0302",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/handwired/concertina/64key/config.h b/keyboards/handwired/concertina/64key/config.h
index 45b5a05ca4..cb897ba109 100644
--- a/keyboards/handwired/concertina/64key/config.h
+++ b/keyboards/handwired/concertina/64key/config.h
@@ -18,19 +18,11 @@
#include "config_common.h"
-/* USB device descriptors */
-#define VENDOR_ID 0x444D
-#define PRODUCT_ID 0x3632
-#define DEVICE_VER 0x0001
-#define PRODUCT Concertina
-#define MANUFACTURER Viktor Eikman
-
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
-#define UNUSED_PINS { D3, D2 }
/* LEDs are not used in the standard 64key configuration. */
#define RGB_DI_PIN D3
diff --git a/keyboards/handwired/concertina/64key/info.json b/keyboards/handwired/concertina/64key/info.json
index 3b0a01346d..d826f46031 100644
--- a/keyboards/handwired/concertina/64key/info.json
+++ b/keyboards/handwired/concertina/64key/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Concertina",
+ "manufacturer": "Viktor Eikman",
"url": "https://viktor.eikman.se/article/the-concertina/",
"maintainer": "veikman",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3632",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_64key": {
"layout": [
diff --git a/keyboards/handwired/consolekeyboard/18key/config.h b/keyboards/handwired/consolekeyboard/18key/config.h
index 00e99da9fd..98aa5895e4 100644
--- a/keyboards/handwired/consolekeyboard/18key/config.h
+++ b/keyboards/handwired/consolekeyboard/18key/config.h
@@ -18,12 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6761
-#define PRODUCT_ID 0x3332
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Stream Cheap
-#define PRODUCT Console Keyboard 18
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 11
diff --git a/keyboards/handwired/consolekeyboard/18key/info.json b/keyboards/handwired/consolekeyboard/18key/info.json
index a635818f64..8ab498b4e3 100644
--- a/keyboards/handwired/consolekeyboard/18key/info.json
+++ b/keyboards/handwired/consolekeyboard/18key/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Console Keyboard",
+ "keyboard_name": "Console Keyboard 18",
+ "manufacturer": "Stream Cheap",
"url": "https://www.thingiverse.com/thing:3167050",
"maintainer": "Gareth Edwards",
+ "usb": {
+ "vid": "0x6761",
+ "pid": "0x3332",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/consolekeyboard/20key/config.h b/keyboards/handwired/consolekeyboard/20key/config.h
index 077e73321f..1ed0e5743f 100644
--- a/keyboards/handwired/consolekeyboard/20key/config.h
+++ b/keyboards/handwired/consolekeyboard/20key/config.h
@@ -18,12 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6761
-#define PRODUCT_ID 0x3432
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Stream Cheap
-#define PRODUCT Console Keyboard 20
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 12
diff --git a/keyboards/handwired/consolekeyboard/20key/info.json b/keyboards/handwired/consolekeyboard/20key/info.json
index 32c9521e68..6ac860de2a 100644
--- a/keyboards/handwired/consolekeyboard/20key/info.json
+++ b/keyboards/handwired/consolekeyboard/20key/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Console Keyboard",
+ "keyboard_name": "Console Keyboard 20",
+ "manufacturer": "Stream Cheap",
"url": "https://www.thingiverse.com/thing:3167050",
"maintainer": "Gareth Edwards",
+ "usb": {
+ "vid": "0x6761",
+ "pid": "0x3432",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/consolekeyboard/27key/config.h b/keyboards/handwired/consolekeyboard/27key/config.h
index daddbd6fcb..f2f97c5ddd 100644
--- a/keyboards/handwired/consolekeyboard/27key/config.h
+++ b/keyboards/handwired/consolekeyboard/27key/config.h
@@ -18,12 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6761
-#define PRODUCT_ID 0x3433
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Stream Cheap
-#define PRODUCT Console Keyboard 30
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 11
diff --git a/keyboards/handwired/consolekeyboard/27key/info.json b/keyboards/handwired/consolekeyboard/27key/info.json
index 4d6145c5d5..48c0ef5cff 100644
--- a/keyboards/handwired/consolekeyboard/27key/info.json
+++ b/keyboards/handwired/consolekeyboard/27key/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Console Keyboard",
+ "keyboard_name": "Console Keyboard 27",
+ "manufacturer": "Stream Cheap",
"url": "https://www.thingiverse.com/thing:3167050",
"maintainer": "Gareth Edwards",
+ "usb": {
+ "vid": "0x6761",
+ "pid": "0x3433",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/consolekeyboard/30key/config.h b/keyboards/handwired/consolekeyboard/30key/config.h
index 447f4e2a9c..6839a40dc3 100644
--- a/keyboards/handwired/consolekeyboard/30key/config.h
+++ b/keyboards/handwired/consolekeyboard/30key/config.h
@@ -18,12 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6761
-#define PRODUCT_ID 0x3433
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Stream Cheap
-#define PRODUCT Console Keyboard 30
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 12
diff --git a/keyboards/handwired/consolekeyboard/30key/info.json b/keyboards/handwired/consolekeyboard/30key/info.json
index aa3c67d1d5..604093b143 100644
--- a/keyboards/handwired/consolekeyboard/30key/info.json
+++ b/keyboards/handwired/consolekeyboard/30key/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Console Keyboard",
+ "keyboard_name": "Console Keyboard 30",
+ "manufacturer": "Streap Cheap",
"url": "https://www.thingiverse.com/thing:3167050",
"maintainer": "Gareth Edwards",
+ "usb": {
+ "vid": "0x6761",
+ "pid": "0x3433",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/croxsplit44/config.h b/keyboards/handwired/croxsplit44/config.h
index 009da2785e..d215b763af 100644
--- a/keyboards/handwired/croxsplit44/config.h
+++ b/keyboards/handwired/croxsplit44/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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 }
diff --git a/keyboards/handwired/croxsplit44/info.json b/keyboards/handwired/croxsplit44/info.json
index e10a390bbd..032da273d2 100644
--- a/keyboards/handwired/croxsplit44/info.json
+++ b/keyboards/handwired/croxsplit44/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "croxsplit44",
+ "keyboard_name": "splitcustom44",
+ "manufacturer": "Samux6146",
"url": "",
"maintainer": "Samux6146",
+ "usb": {
+ "vid": "0xB62C",
+ "pid": "0x6146",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/croxsplit44/readme.md b/keyboards/handwired/croxsplit44/readme.md
index b9eeb305b2..64a5e2593e 100644
--- a/keyboards/handwired/croxsplit44/readme.md
+++ b/keyboards/handwired/croxsplit44/readme.md
@@ -20,4 +20,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/handwired/curiosity/config.h b/keyboards/handwired/curiosity/config.h
index 8b632a5ec4..4cd00d8b2d 100644
--- a/keyboards/handwired/curiosity/config.h
+++ b/keyboards/handwired/curiosity/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5342 // "SB"
-#define PRODUCT_ID 0x4355 // "CU"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Spaceman
-#define PRODUCT Curiosity
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, F7, F6, F5 }
#define MATRIX_COL_PINS { D3, D4, F4, C6, D7, E6, B5, B4, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/curiosity/info.json b/keyboards/handwired/curiosity/info.json
index 5218abc46d..738056625c 100644
--- a/keyboards/handwired/curiosity/info.json
+++ b/keyboards/handwired/curiosity/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Curiosity",
+ "manufacturer": "Spaceman",
"url": "",
"maintainer": "Spaceman",
+ "usb": {
+ "vid": "0x5342",
+ "pid": "0x4355",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_small_mods": {
"layout": [
diff --git a/keyboards/handwired/cyberstar/config.h b/keyboards/handwired/cyberstar/config.h
new file mode 100644
index 0000000000..bedeb157be
--- /dev/null
+++ b/keyboards/handwired/cyberstar/config.h
@@ -0,0 +1,94 @@
+/*
+Copyright 2022 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 18
+
+#define MATRIX_ROW_PINS { A15, B3, A9, B5, A3 }
+#define MATRIX_COL_PINS { A4, A5, A6, A7, B0, B1, B2, B10, B11, B12, B13, B14, B15, A8, A10, A14, B8, B9 }
+
+/* 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 QK_BOOT keycode was pressed */
+#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+/* RGB Light */
+#define WS2812_PWM_DRIVER PWMD3
+#define WS2812_PWM_CHANNEL 1
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM3
+#define WS2812_DMA_CHANNEL 3
+#define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_RGB
+
+#define RGB_DI_PIN B4
+#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_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 (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/handwired/cyberstar/cyberstar.c b/keyboards/handwired/cyberstar/cyberstar.c
new file mode 100644
index 0000000000..1ddabcab0f
--- /dev/null
+++ b/keyboards/handwired/cyberstar/cyberstar.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 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 "cyberstar.h"
diff --git a/keyboards/handwired/cyberstar/cyberstar.h b/keyboards/handwired/cyberstar/cyberstar.h
new file mode 100644
index 0000000000..13b3117c97
--- /dev/null
+++ b/keyboards/handwired/cyberstar/cyberstar.h
@@ -0,0 +1,34 @@
+/* Copyright 2022 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, K1E, K0F, K0G, K0H, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2D, K1F, K1G, K1H, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K31, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3G, \
+ K43, K44, K46, K48, K4B, K4C, 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, XXX, XXX, XXX }, \
+ { K30, K31, XXX, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, XXX, K3G, XXX }, \
+ { XXX, XXX, XXX, K43, K44, XXX, K46, XXX, K48, XXX, XXX, K4B, K4C, XXX, XXX, K4F, K4G, K4H } \
+}
diff --git a/keyboards/handwired/cyberstar/halconf.h b/keyboards/handwired/cyberstar/halconf.h
new file mode 100644
index 0000000000..4abd83bd3b
--- /dev/null
+++ b/keyboards/handwired/cyberstar/halconf.h
@@ -0,0 +1,21 @@
+/* Copyright 2022 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 HAL_USE_PWM TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/handwired/cyberstar/info.json b/keyboards/handwired/cyberstar/info.json
new file mode 100644
index 0000000000..c680e6b418
--- /dev/null
+++ b/keyboards/handwired/cyberstar/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Cyberstar",
+ "manufacturer": "Yiancar-Designs",
+ "url": "https://yiancar-designs.com",
+ "maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x432A",
+ "device_version": "0.0.1"
+ },
+ "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":15.25, "y":0}, {"x":16.5, "y":0}, {"x":17.5, "y":0}, {"x":18.5, "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":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, "w":1.5}, {"x":16.5, "y":1}, {"x":17.5, "y":1}, {"x":18.5, "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}, {"x":13, "y":2}, {"x":14, "y":2, "w":2.25}, {"x":0, "y":3}, {"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":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, "w":1.75}, {"x":15.25, "y":3}, {"x":17.5, "y":3}, {"x":3.25, "y":4}, {"x":4.25, "y":4, "w":1.5}, {"x":5.75, "y":4, "w":2.25}, {"x":8, "y":4, "w":2.75}, {"x":10.75, "y":4, "w":1.5}, {"x":12.25, "y":4}, {"x":16.5, "y":4}, {"x":17.5, "y":4}, {"x":18.5, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/handwired/cyberstar/keymaps/default/keymap.c b/keyboards/handwired/cyberstar/keymaps/default/keymap.c
new file mode 100644
index 0000000000..04ce749c44
--- /dev/null
+++ b/keyboards/handwired/cyberstar/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+/* Copyright 2022 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_F1, 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_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_END, 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_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_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT_all( /* FN */
+ KC_VOLU, KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/cyberstar/keymaps/default/readme.md b/keyboards/handwired/cyberstar/keymaps/default/readme.md
new file mode 100644
index 0000000000..3a430bff3c
--- /dev/null
+++ b/keyboards/handwired/cyberstar/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Cyberstar. VIA support disabled.
diff --git a/keyboards/handwired/cyberstar/keymaps/via/keymap.c b/keyboards/handwired/cyberstar/keymaps/via/keymap.c
new file mode 100644
index 0000000000..1c2e1bf256
--- /dev/null
+++ b/keyboards/handwired/cyberstar/keymaps/via/keymap.c
@@ -0,0 +1,46 @@
+/* Copyright 2022 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_F1, 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_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_END, 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_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_LALT, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[1] = LAYOUT_all( /* FN */
+ KC_VOLU, KC_GRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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),
+
+[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)
+};
diff --git a/keyboards/handwired/cyberstar/keymaps/via/readme.md b/keyboards/handwired/cyberstar/keymaps/via/readme.md
new file mode 100644
index 0000000000..fce02861d6
--- /dev/null
+++ b/keyboards/handwired/cyberstar/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The default keymap for Cyberstar. VIA support enabled.
diff --git a/keyboards/handwired/cyberstar/keymaps/via/rules.mk b/keyboards/handwired/cyberstar/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/handwired/cyberstar/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/handwired/cyberstar/mcuconf.h b/keyboards/handwired/cyberstar/mcuconf.h
new file mode 100644
index 0000000000..6b3ae79e8b
--- /dev/null
+++ b/keyboards/handwired/cyberstar/mcuconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2022 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_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
diff --git a/keyboards/handwired/cyberstar/readme.md b/keyboards/handwired/cyberstar/readme.md
new file mode 100644
index 0000000000..affe90201a
--- /dev/null
+++ b/keyboards/handwired/cyberstar/readme.md
@@ -0,0 +1,32 @@
+# Cyberstar
+
+This is a 60% with nav claster layout custom PCB. It supports VIA.
+
+* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
+* Hardware Supported: A custom keyboard with STM32F072CB
+* Hardware Availability: COntact YungBirk#1714 on discord
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/cyberstar: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 handwired/cyberstar:<keymap>:flash`)
diff --git a/keyboards/handwired/cyberstar/rules.mk b/keyboards/handwired/cyberstar/rules.mk
new file mode 100644
index 0000000000..a53d7daeb0
--- /dev/null
+++ b/keyboards/handwired/cyberstar/rules.mk
@@ -0,0 +1,27 @@
+# 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 = yes # Enable keyboard RGB underglow
+WS2812_DRIVER = pwm # Driver for RGB uderglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/handwired/d48/config.h b/keyboards/handwired/d48/config.h
index 83ca9b2247..47ae30a98f 100644
--- a/keyboards/handwired/d48/config.h
+++ b/keyboards/handwired/d48/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Andrew Dunai
-#define PRODUCT D48
-
/* Key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -17,7 +10,6 @@
#define MATRIX_ROW_PINS { B8, B9, B1, B2, B4 }
#define MATRIX_COL_PINS { A2, B0, A7, A8, A13, A14, B12, B11, B10, B15, B14, B13 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/d48/info.json b/keyboards/handwired/d48/info.json
index 03cbd0edb4..3329c4c599 100644
--- a/keyboards/handwired/d48/info.json
+++ b/keyboards/handwired/d48/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "D48",
+ "manufacturer": "Andrew Dunai",
"url": "",
"maintainer": "and3rson",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/d48/keymaps/anderson/keymap.c b/keyboards/handwired/d48/keymaps/anderson/keymap.c
index 11bc62e537..003c757ff8 100644
--- a/keyboards/handwired/d48/keymaps/anderson/keymap.c
+++ b/keyboards/handwired/d48/keymaps/anderson/keymap.c
@@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
┣â”â”â”â”â”╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊â”â”â”â”â”┫
┃L_MOD┃ F1 │ F2 │ F3 │ F4 │ F5 ┃ F6 │ F7 │ F8 │ F9 │ F10 ┃ F11 ┃
┣â”â”â”â”â”╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊â”â”â”â”â”┫
- ┃ ┃RESET│DEBUG│ │ │TIME ┃SLEEP│ SEQ │ { │ } │PTSCR┃ ┃
+ ┃ ┃QK_BOOT│DEBUG│ │ │TIME ┃SLEEP│ SEQ │ { │ } │PTSCR┃ ┃
┣â”â”â”â”â”╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊â”â”â”â”â”┫
┃ ┃ │ │ │ │ ┃ │ │ │ │ ┃ ┃
â”—â”â”â”â”â”â”»â”â”â”â”â”â”·â”â”â”â”â”â”·â”â”â”â”â”â”·â”â”â”â”â”â”·â”â”â”â”â”â”»â”â”â”â”â”â”·â”â”â”â”â”â”·â”â”â”â”â”â”·â”â”â”â”â”â”·â”â”â”â”â”â”»â”â”â”â”â”â”›
@@ -112,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______,
#endif
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_SEQ,KC_LCBR, KC_RCBR, KC_PSCR, _______, \
+ _______, QK_BOOT, DEBUG, _______, _______, KC_SET_TIME,KC_SLEP,KC_SEQ,KC_LCBR, KC_RCBR, KC_PSCR, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
)
};
@@ -205,7 +205,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
beta_pressed = record->event.pressed;
}
- if (keycode == RESET) {
+ if (keycode == QK_BOOT) {
rgblight_setrgb(255, 255, 0);
}
#ifdef LIGHTMODE_ENABLE
diff --git a/keyboards/handwired/dactyl/config.h b/keyboards/handwired/dactyl/config.h
index 29a008f0c6..be4891c65c 100644
--- a/keyboards/handwired/dactyl/config.h
+++ b/keyboards/handwired/dactyl/config.h
@@ -21,13 +21,6 @@ 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 0x1308
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Adereth
-#define PRODUCT Dactyl
-
#define DIODE_DIRECTION ROW2COL
#define MATRIX_ROWS 6
#define MATRIX_COLS 12
diff --git a/keyboards/handwired/dactyl/info.json b/keyboards/handwired/dactyl/info.json
index d48ceeb9ad..ec0fe2b7b6 100644
--- a/keyboards/handwired/dactyl/info.json
+++ b/keyboards/handwired/dactyl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dactyl",
+ "manufacturer": "Adereth",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1308",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_dactyl": {
"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":"k55", "x":6, "y":5}, {"label":"k50", "x":7, "y":5}, {"label":"k54", "x":7, "y":6}, {"label":"k53", "x":5, "y":6, "h":2}, {"label":"k52", "x":6, "y":6, "h":2}, {"label":"k51", "x":7, "y":7}, {"label":"k06", "x":11, "y":0}, {"label":"k07", "x":12, "y":0}, {"label":"k08", "x":13, "y":0}, {"label":"k09", "x":14, "y":0}, {"label":"k0A", "x":15, "y":0}, {"label":"k0B", "x":16, "y":0}, {"label":"k16", "x":11, "y":1}, {"label":"k17", "x":12, "y":1}, {"label":"k18", "x":13, "y":1}, {"label":"k19", "x":14, "y":1}, {"label":"k1A", "x":15, "y":1}, {"label":"k1B", "x":16, "y":1}, {"label":"k26", "x":11, "y":2}, {"label":"k27", "x":12, "y":2}, {"label":"k28", "x":13, "y":2}, {"label":"k29", "x":14, "y":2}, {"label":"k2A", "x":15, "y":2}, {"label":"k2B", "x":16, "y":2}, {"label":"k36", "x":11, "y":3}, {"label":"k37", "x":12, "y":3}, {"label":"k38", "x":13, "y":3}, {"label":"k39", "x":14, "y":3}, {"label":"k3A", "x":15, "y":3}, {"label":"k3B", "x":16, "y":3}, {"label":"k47", "x":12, "y":4}, {"label":"k48", "x":13, "y":4}, {"label":"k49", "x":14, "y":4}, {"label":"k4A", "x":15, "y":4}, {"label":"k4B", "x":16, "y":4}, {"label":"k5B", "x":9, "y":5}, {"label":"k56", "x":10, "y":5}, {"label":"k57", "x":9, "y":6}, {"label":"k5A", "x":9, "y":7}, {"label":"k59", "x":10, "y":6, "h":2}, {"label":"k58", "x":11, "y":6, "h":2}]
diff --git a/keyboards/handwired/dactyl/keymaps/dvorak/keymap.c b/keyboards/handwired/dactyl/keymaps/dvorak/keymap.c
index 40ef3b019c..8d980f7818 100644
--- a/keyboards/handwired/dactyl/keymaps/dvorak/keymap.c
+++ b/keyboards/handwired/dactyl/keymaps/dvorak/keymap.c
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | % | ^ | [ | ] | ~ | | & | 1 | 2 | 3 | \ | |
* |------+------+------+------+------+------' `------+------+------+------+------+------|
- * |RESET | | | | | | | . | 0 | = | |
+ * |QK_BOOT | | | | | | | . | 0 | = | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE,
KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV,
KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD,
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, 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/dactyl/keymaps/erincalling/keymap.c b/keyboards/handwired/dactyl/keymaps/erincalling/keymap.c
index e439af3e54..e54d31c184 100644
--- a/keyboards/handwired/dactyl/keymaps/erincalling/keymap.c
+++ b/keyboards/handwired/dactyl/keymaps/erincalling/keymap.c
@@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 1: Control layer (media keys, Fkeys, numpad)
*
* ,-----------------------------------------. ,-----------------------------------------.
- * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | RESET|
+ * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | QK_BOOT|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | Mute | VolD | VolU | | | | 7 | 8 | 9 | + | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
@@ -85,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
- KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RESET,
+ KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, QK_BOOT,
KC_TRNS, KC_7, KC_8, KC_9, KC_KP_PLUS, KC_TRNS,
KC_TRNS, KC_4, KC_5, KC_6, KC_EQL, KC_TRNS,
KC_TRNS, KC_1, KC_2, KC_3, KC_COMM, KC_TRNS,
diff --git a/keyboards/handwired/dactyl/readme.md b/keyboards/handwired/dactyl/readme.md
index 698ef29e01..e99df7f5a2 100644
--- a/keyboards/handwired/dactyl/readme.md
+++ b/keyboards/handwired/dactyl/readme.md
@@ -21,7 +21,7 @@ To flash the firmware:
- Load the .hex file into it.
- Put the Teensy in firmware-loading mode:
- * If your current layout has a RESET key, press it.
+ * If your current layout has a `QK_BOOT` key, press it.
* If you lack a RESET key, press the reset button on the Teensy board itself.
- Click the button in the Teensy app to download the firmware.
@@ -35,5 +35,5 @@ To flash with ´teensy-loader-cli´:
- If you like, you can do both at once: `make handwired/dactyl:<keymapname>:teensy`
- Put the Teensy in firmware-loading mode:
- * If your current layout has a RESET key, press it.
+ * If your current layout has a `QK_BOOT` key, press it.
* If you lack a RESET key, press the reset button on the Teensy board itself.
diff --git a/keyboards/handwired/dactyl_left/config.h b/keyboards/handwired/dactyl_left/config.h
index c962f6e176..c10096e590 100644
--- a/keyboards/handwired/dactyl_left/config.h
+++ b/keyboards/handwired/dactyl_left/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER RedForty
-#define PRODUCT dactyl_left
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 6
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ F0, F1, F4, F5, F6, F7 }
#define MATRIX_COL_PINS \
{ D0, B7, B3, B2, B1, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/dactyl_left/info.json b/keyboards/handwired/dactyl_left/info.json
index 980601758f..e8ab5e04c6 100644
--- a/keyboards/handwired/dactyl_left/info.json
+++ b/keyboards/handwired/dactyl_left/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "dactyl_left",
+ "manufacturer": "RedForty",
"url": "",
"maintainer": "RedForty",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0.375, "w":1.5}, {"x":1.5, "y":0.375}, {"x":2.5, "y":0.125}, {"x":3.5, "y":0}, {"x":4.5, "y":0.125}, {"x":5.5, "y":0.25}, {"x":0, "y":1.375, "w":1.5}, {"x":1.5, "y":1.375}, {"x":2.5, "y":1.125}, {"x":3.5, "y":1}, {"x":4.5, "y":1.125}, {"x":5.5, "y":1.25}, {"x":0, "y":2.375, "w":1.5}, {"x":1.5, "y":2.375}, {"x":2.5, "y":2.125}, {"x":3.5, "y":2}, {"x":4.5, "y":2.125}, {"x":5.5, "y":2.25}, {"x":0, "y":3.375, "w":1.5}, {"x":1.5, "y":3.375}, {"x":2.5, "y":3.125}, {"x":3.5, "y":3}, {"x":4.5, "y":3.125}, {"x":5.5, "y":3.25}, {"x":0.5, "y":4.375}, {"x":1.5, "y":4.375}, {"x":2.5, "y":4.125}, {"x":3.5, "y":4}, {"x":4.5, "y":4.125}, {"x":6, "y":4.75}, {"x":7, "y":4.75}, {"x":5, "y":5.75, "h":2}, {"x":6, "y":5.75, "h":2}, {"x":7, "y":5.75}, {"x":7, "y":6.75}]
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.h b/keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.h
index 7db11618cf..0a03dd9b1f 100644
--- a/keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.h
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.h
@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#include "dactyl_manuform.h"
+#include "quantum.h"
#define XXX KC_NO
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/config.h b/keyboards/handwired/dactyl_manuform/3x5_3/config.h
index e417599a40..804db6c7e3 100644
--- a/keyboards/handwired/dactyl_manuform/3x5_3/config.h
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/config.h
@@ -18,14 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define PRODUCT_ID 0x3536
-#define DEVICE_VER 0x0003
-#ifdef MANUFACTURER
- #undef MANUFACTURER
-#endif
-#define MANUFACTURER DLFord
-#define PRODUCT Dactyl Minidox (3x5+3)
-
// Communication
// #define USE_I2C
#define USE_SERIAL
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/info.json b/keyboards/handwired/dactyl_manuform/3x5_3/info.json
index abf23aa45d..b7c2c99f09 100644
--- a/keyboards/handwired/dactyl_manuform/3x5_3/info.json
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Dactyl Manuform 3x5_3",
+ "keyboard_name": "Dactyl Minidox (3x5+3)",
+ "manufacturer": "DLFord",
"url": "https://www.dlford.io/keyboard-build-guide-per-key-rgb-leds/",
"maintainer": "dlford",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3536",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_split_3x5_3": {
"layout": [
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/keymap.c b/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/keymap.c
index b403c2ce3b..cbb1b42fca 100644
--- a/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/keymap.c
@@ -355,7 +355,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
LGUI_FIND,LALT_HOME,LCTL_PGUP,LSFT_PGDN,KC_END, KC_LEFT,RSFT_DOWN,RCTL_UP,RALT_RGHT,RGUI_F11,
//|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
- DF_QWERTY,DF_COLEMAK,KC_VOLD, KC_VOLU, RESET, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, KC_F12,
+ DF_QWERTY,DF_COLEMAK,KC_VOLD, KC_VOLU, QK_BOOT, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, KC_F12,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
VVV, TG(4), VVV, VVV, VVV, VVV
// |--------+--------+--------| |--------+--------+--------|
diff --git a/keyboards/handwired/dactyl_manuform/4x5/4x5.h b/keyboards/handwired/dactyl_manuform/4x5/4x5.h
index 73f6be64c2..e410c22466 100644
--- a/keyboards/handwired/dactyl_manuform/4x5/4x5.h
+++ b/keyboards/handwired/dactyl_manuform/4x5/4x5.h
@@ -1,6 +1,6 @@
#pragma once
-#include "dactyl_manuform.h"
+#include "quantum.h"
#define XXX KC_NO
diff --git a/keyboards/handwired/dactyl_manuform/4x5/config.h b/keyboards/handwired/dactyl_manuform/4x5/config.h
index 8a06aeab8e..d6d568bf4e 100644
--- a/keyboards/handwired/dactyl_manuform/4x5/config.h
+++ b/keyboards/handwired/dactyl_manuform/4x5/config.h
@@ -20,11 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x3435
-#define DEVICE_VER 0x0001
-#define MANUFACTURER tshort
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/handwired/dactyl_manuform/4x5/info.json b/keyboards/handwired/dactyl_manuform/4x5/info.json
index beeafd06e0..7dfe18c06e 100644
--- a/keyboards/handwired/dactyl_manuform/4x5/info.json
+++ b/keyboards/handwired/dactyl_manuform/4x5/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dactyl Manuform 4x5",
+ "manufacturer": "tshort",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3435",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/config.h b/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/config.h
index 682c7a868b..6b0ddbfe8e 100644
--- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/config.h
+++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/config.h
@@ -20,8 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#include "../../config.h"
-
/* Use I2C or Serial, not both */
#define USE_SERIAL
diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/keymap.c b/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/keymap.c
index 0a1c90b6bf..009d88fd0e 100644
--- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/dvorak/keymap.c
@@ -1,6 +1,4 @@
-#include "dactyl_manuform.h"
-#include "action_layer.h"
-#include "eeconfig.h"
+#include QMK_KEYBOARD_H
extern keymap_config_t keymap_config;
diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/keymap.c b/keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/keymap.c
index bf2c08e805..092bd3e430 100644
--- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/ibnuda/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_dm_base_wrapper(
_______,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, _______,_______,_______,_______,_______,
+ _______,CLSGUI, _______,CONPST, QK_BOOT, _______,_______,_______,_______,_______,
_______,_______,_______, _______,_______,_______
),};
// clang-format on
diff --git a/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h b/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h
index 27526140c9..3860a696c8 100644
--- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/4x5/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/4x5_5/4x5_5.h b/keyboards/handwired/dactyl_manuform/4x5_5/4x5_5.h
new file mode 100644
index 0000000000..d2790473b5
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x5_5/4x5_5.h
@@ -0,0 +1,29 @@
+// Copyright 2022 Shem Sedrick (@ssedrick)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+#define LAYOUT( \
+ 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, \
+ L31, L32, R32, R33, \
+ L33, R31, \
+ L34, L44, R40, R30, \
+ L42, L43, R41, R42 \
+) { \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { XXX, L31, L32, L33, L34 }, \
+ { XXX, XXX, L42, L43, L44 }, \
+\
+ { R00, R01, R02, R03, R04 }, \
+ { R10, R11, R12, R13, R14 }, \
+ { R20, R21, R22, R23, R24 }, \
+ { R30, R31, R32, R33, XXX }, \
+ { R40, R41, R42, XXX, XXX }, \
+}
diff --git a/keyboards/handwired/dactyl_manuform/4x5_5/config.h b/keyboards/handwired/dactyl_manuform/4x5_5/config.h
new file mode 100644
index 0000000000..baaab51614
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x5_5/config.h
@@ -0,0 +1,18 @@
+// Copyright 2022 Shem Sedrick (@ssedrick)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+#define MATRIX_ROWS 10
+#define MATRIX_COLUMNS 5
+
+// Wiring pins
+#define MATRIX_ROW_PINS { F7, B1, B3, B2, B4 }
+#define MATRIX_COL_PINS { D4, C6, D7, E6, F6 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define EE_HANDS
+#define SPLIT_USB_DETECT
diff --git a/keyboards/handwired/dactyl_manuform/4x5_5/info.json b/keyboards/handwired/dactyl_manuform/4x5_5/info.json
new file mode 100644
index 0000000000..10b938a5c9
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x5_5/info.json
@@ -0,0 +1,70 @@
+{
+ "keyboard_name": "Dactyl Manuform 4x5 5 thumb keys",
+ "manufacturer": "ssedrick",
+ "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/dactyl_manuform/4x5_5",
+ "maintainer": "ssedrick",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3435",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "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": 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": 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": 10, "y": 3},
+ {"x": 11, "y": 3},
+ {"x": 12, "y": 3},
+ {"x": 13, "y": 3},
+
+ {"x": 2, "y": 4},
+ {"x": 3, "y": 4},
+ {"x": 4, "y": 4},
+
+ {"x": 10, "y": 4},
+ {"x": 11, "y": 4},
+ {"x": 12, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/dactyl_manuform/4x5_5/keymaps/default/keymap.c b/keyboards/handwired/dactyl_manuform/4x5_5/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7362505f0f
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x5_5/keymaps/default/keymap.c
@@ -0,0 +1,155 @@
+// Copyright 2022 Shem Sedrick (@ssedrick)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+#include "print.h"
+
+enum key_layers {
+ _BASE,
+ _COLEMAK,
+ _RAISE,
+ _LOWER
+};
+
+enum layer_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+#define SH_ESC SFT_T(KC_ESC)
+#define ____ KC_TRANSPARENT
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base (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 | | BSPC |
+ * |-------------, ,------+------|
+ * | GUI | TAB | | SHIFT| SPACE|
+ * |------+------| |------+------|
+ * | RAISE| CTRL | | LOWER| ENTER|
+ * '-------------' '-------------'
+ */
+ [_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_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LBRC, KC_RBRC, KC_QUOT, KC_GRV,
+ SH_ESC, KC_BSPC,
+ KC_LGUI, KC_TAB, KC_RSFT, KC_SPC,
+ RAISE, KC_LCTRL, LOWER, KC_ENT
+ ),
+
+ /* Colemak
+ * ,----------------------------------, ,----------------------------------,
+ * | q | w | f | p | g | | j | l | u | y | ; |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | a | r | s | t | d | | h | n | e | i | o |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | z | x | c | v | b | | k | m | , | . | / |
+ * '------+------+------+-------------' '------+------+------+------+------'
+ * | [ | ] | | ' | `~ |
+ * '-------------+------, ,------|-------------'
+ * | ESC | | BSPC |
+ * |-------------, ,------+------|
+ * | GUI | TAB | | SHIFT| SPACE|
+ * |------+------| |------+------|
+ * | RAISE| CTRL | | LOWER| ENTER|
+ * '-------------' '-------------'
+ */
+ [_COLEMAK] = LAYOUT(
+ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
+ 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_LBRC, KC_RBRC, KC_QUOT, KC_GRV,
+ KC_ESC, KC_BSPC,
+ KC_LGUI, KC_TAB, KC_RSFT, KC_SPC,
+ RAISE, KC_LCTRL, LOWER, KC_ENT
+ ),
+ /* RAISE
+ * ,----------------------------------, ,----------------------------------,
+ * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | ( | ) | { | } | = | | - | 4 | 5 | 6 | ; |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | QK_BOOT| BOOT | [ | ] | | | | 1 | 2 | 3 | |
+ * |------+------+------+-------------| |------+------+------+------+------,
+ * | | | | 0 | . |
+ * '-------------+------, ,------|-------------'
+ * | ESC | | BSPC |
+ * |-------------, ,------+------|
+ * | GUI | TAB | | SHIFT| SPACE|
+ * |------+------| |------+------|
+ * | RAISE| CTRL | | LOWER| ENTER|
+ * '-------------' '-------------'
+ */
+ [_RAISE] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ S(KC_9), S(KC_0), KC_LCBR, KC_RCBR, KC_EQL, KC_MINS, KC_4, KC_5, KC_6, KC_QUOT,
+ QK_RBT, QK_BOOT, KC_LBRC, KC_RBRC, ____, ____, KC_1, KC_2, KC_3, ____,
+ ____, ____, KC_0, KC_DOT,
+ ____, ____,
+ ____, ____, ____, ____,
+ ____, ____, ____, ____
+ ),
+
+ /* LOWER
+ * ,----------------------------------, ,----------------------------------,
+ * | ! | @ | # | $ | % | | ^ | & | * | ( | ) |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | ( | ) | { | } | = | | | - | + | | | |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | | | | | | | | LEFT | DOWN | UP | RIGHT|
+ * |------+------+------+-------------| |------+------+------+------+------,
+ * | | | |QWERTY|COLEMA|
+ * '-------------+------, ,------|-------------'
+ * | ESC | | BSPC |
+ * |-------------, ,------+------|
+ * | GUI | TAB | | SHIFT| SPACE|
+ * |------+------| |------+------|
+ * | RAISE| CTRL | | LOWER| ENTER|
+ * '-------------' '-------------'
+ */
+ [_LOWER] = LAYOUT(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ S(KC_9), S(KC_0), KC_LBRC, KC_RBRC, KC_EQL, ____, KC_MINS, KC_EQL, KC_PIPE, ____,
+ ____, ____, ____, ____, ____, ____, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ ____, ____, QWERTY, COLEMAK,
+ ____, ____,
+ ____, ____, ____, ____,
+ ____, ____, ____, ____
+ )
+};
+
+
+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: %d, time: %u, interrupt: %d, 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 QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_BASE);
+ }
+ return false;
+ break;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
diff --git a/keyboards/handwired/dactyl_manuform/4x5_5/keymaps/ssedrick/keymap.c b/keyboards/handwired/dactyl_manuform/4x5_5/keymaps/ssedrick/keymap.c
new file mode 100644
index 0000000000..cf6d7d7120
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x5_5/keymaps/ssedrick/keymap.c
@@ -0,0 +1,161 @@
+// Copyright 2022 Shem Sedrick (@ssedrick)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+#include "print.h"
+
+enum key_layers {
+ _BASE,
+ _COLEMAK,
+ _RAISE,
+ _LOWER
+};
+
+enum layer_keycodes {
+ QWERTY = SAFE_RANGE,
+ COLEMAK,
+};
+
+
+#define RAISE TT(_RAISE)
+#define LOWER MO(_LOWER)
+#define SH_ESC SFT_T(KC_ESC)
+#define UNDSC RSFT(KC_MINS)
+#define MAC_LOCK C(G(KC_D))
+#define ____ KC_TRANSPARENT
+
+#undef TAPPING_TOGGLE
+#define TAPPING_TOGGLE 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base (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|
+ * |-------------, ,------+------|
+ * | GUI | TAB | | BCKSP| SPACE|
+ * |------+------| |------+------|
+ * | RAISE| CTRL | | SHIFT| LOWER|
+ * '-------------' '-------------'
+ */
+ [_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_SCLN,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_LCBR, KC_RCBR, KC_QUOT, KC_GRV,
+ SH_ESC, KC_ENT,
+ KC_LGUI, KC_TAB, KC_RSFT, KC_SPC,
+ RAISE, KC_LCTRL, KC_BSPC, LOWER
+ ),
+
+ /* Colemak
+ * ,----------------------------------, ,----------------------------------,
+ * | q | w | f | p | g | | j | l | u | y | ; |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | a | r | s | t | d | | h | n | e | i | o |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | z | x | c | v | b | | k | m | , | . | / |
+ * '------+------+------+-------------' '------+------+------+------+------'
+ * | [ | ] | | ' | `~ |
+ * '-------------+------, ,------|-------------'
+ * | ESC | | BSPC |
+ * |-------------, ,------+------|
+ * | GUI | TAB | | SHIFT| SPACE|
+ * |------+------| |------+------|
+ * | RAISE| CTRL | | LOWER| ENTER|
+ * '-------------' '-------------'
+ */
+ [_COLEMAK] = LAYOUT(
+ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
+ 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_LCBR, KC_RCBR, KC_QUOT, KC_GRV,
+ SH_ESC, KC_ENT,
+ KC_LGUI, KC_TAB, KC_RSFT, KC_SPC,
+ RAISE, KC_LCTRL, KC_BSPC, LOWER
+ ),
+ /* RAISE
+ * ,----------------------------------, ,----------------------------------,
+ * | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | ( | ) | [ | ] | = | | _ | 4 | 5 | 6 | ; |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | QK_BOOT| BOOT | | | | | | 1 | 2 | 3 | |
+ * |------+------+------+-------------| |------+------+------+------+------,
+ * |MAC_LC| | | 0 | . |
+ * '-------------+------, ,------|-------------'
+ * | ESC | | BSPC |
+ * |-------------, ,------+------|
+ * | GUI | TAB | | SHIFT| SPACE|
+ * |------+------| |------+------|
+ * | RAISE| CTRL | | LOWER| ENTER|
+ * '-------------' '-------------'
+ */
+ [_RAISE] = LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ S(KC_9), S(KC_0), KC_LBRC, KC_RBRC, KC_EQL, KC_MINS, KC_4, KC_5, KC_6, KC_QUOT,
+ QK_RBT, QK_BOOT, ____, ____, ____, ____, KC_1, KC_2, KC_3, ____,
+ MAC_LOCK, ____, KC_0, KC_DOT,
+ ____, ____,
+ ____, ____, ____, ____,
+ ____, ____, ____, ____
+ ),
+
+ /* LOWER
+ * ,----------------------------------, ,----------------------------------,
+ * | ! | @ | # | $ | % | | ^ | & | * | ( | ) |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | ( | ) | { | } | = | | _ | - | + | \ | | |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | NEXT | PLAY | VOLU | VOLD | | | | LEFT | DOWN | UP | RIGHT|
+ * |------+------+------+-------------| |------+------+------+------+------,
+ * | | | |QWERTY|COLEMA|
+ * '-------------+------, ,------|-------------'
+ * | ESC | | BSPC |
+ * |-------------, ,------+------|
+ * | GUI | TAB | | SHIFT| SPACE|
+ * |------+------| |------+------|
+ * | RAISE| CTRL | | LOWER| ENTER|
+ * '-------------' '-------------'
+ */
+ [_LOWER] = LAYOUT(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ S(KC_9), S(KC_0), KC_LBRC, KC_RBRC, KC_EQL, UNDSC, KC_MINS, KC_EQL, KC_BSLS, KC_PIPE,
+ KC_MNXT, KC_MPLY, KC_VOLU, KC_VOLD, ____, ____, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ ____, ____, QWERTY, COLEMAK,
+ ____, ____,
+ ____, ____, ____, ____,
+ ____, ____, ____, ____
+ )
+};
+
+
+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: %d, time: %u, interrupt: %d, 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 QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_BASE);
+ }
+ return false;
+ break;
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
+
diff --git a/keyboards/handwired/dactyl_manuform/4x5_5/rules.mk b/keyboards/handwired/dactyl_manuform/4x5_5/rules.mk
new file mode 100644
index 0000000000..fec29f5419
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/4x5_5/rules.mk
@@ -0,0 +1,21 @@
+
+# MCU for Elite-C/Pro Micro
+MCU = atmega32u4
+
+# BOOTLOADER for Elite-C
+# BOOTLOADER = atmel-dfu
+# BOOTLOADER for Pro Micro
+# BOOTLOADER = caterina
+
+# Build Options
+
+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
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes
diff --git a/keyboards/handwired/dactyl_manuform/4x6/4x6.h b/keyboards/handwired/dactyl_manuform/4x6/4x6.h
index dcdb1a39ec..99b11a712a 100644
--- a/keyboards/handwired/dactyl_manuform/4x6/4x6.h
+++ b/keyboards/handwired/dactyl_manuform/4x6/4x6.h
@@ -1,6 +1,6 @@
#pragma once
-#include "dactyl_manuform.h"
+#include "quantum.h"
#define XXX KC_NO
diff --git a/keyboards/handwired/dactyl_manuform/4x6/config.h b/keyboards/handwired/dactyl_manuform/4x6/config.h
index 2e79517b25..9d2e3880ed 100644
--- a/keyboards/handwired/dactyl_manuform/4x6/config.h
+++ b/keyboards/handwired/dactyl_manuform/4x6/config.h
@@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/handwired/dactyl_manuform/4x6/info.json b/keyboards/handwired/dactyl_manuform/4x6/info.json
index 4a5c8d5eeb..f2c26516eb 100644
--- a/keyboards/handwired/dactyl_manuform/4x6/info.json
+++ b/keyboards/handwired/dactyl_manuform/4x6/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dactyl Manuform 4x6",
+ "manufacturer": "tshort",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3436",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/keymap.c b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/keymap.c
index 7f3fc2585f..2e92d4b86b 100644
--- a/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/4x6/keymaps/scheikled/keymap.c
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_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_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 , QK_BOOT ,
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 ,
diff --git a/keyboards/handwired/dactyl_manuform/4x6_5/4x6_5.h b/keyboards/handwired/dactyl_manuform/4x6_5/4x6_5.h
index f34d8be4df..df639cbf22 100644
--- a/keyboards/handwired/dactyl_manuform/4x6_5/4x6_5.h
+++ b/keyboards/handwired/dactyl_manuform/4x6_5/4x6_5.h
@@ -1,6 +1,6 @@
#pragma once
-#include "dactyl_manuform.h"
+#include "quantum.h"
#define XXX KC_NO
diff --git a/keyboards/handwired/dactyl_manuform/4x6_5/config.h b/keyboards/handwired/dactyl_manuform/4x6_5/config.h
index 2e79517b25..9d2e3880ed 100644
--- a/keyboards/handwired/dactyl_manuform/4x6_5/config.h
+++ b/keyboards/handwired/dactyl_manuform/4x6_5/config.h
@@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/handwired/dactyl_manuform/4x6_5/info.json b/keyboards/handwired/dactyl_manuform/4x6_5/info.json
index 3534cc01a6..e62f9f5b07 100644
--- a/keyboards/handwired/dactyl_manuform/4x6_5/info.json
+++ b/keyboards/handwired/dactyl_manuform/4x6_5/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dactyl Manuform 4x6 5 thumb keys",
+ "manufacturer": "tshort",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3436",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/dactyl_manuform/5x6/5x6.h b/keyboards/handwired/dactyl_manuform/5x6/5x6.h
index 606a213492..ebc959ddf1 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/5x6.h
+++ b/keyboards/handwired/dactyl_manuform/5x6/5x6.h
@@ -1,6 +1,6 @@
#pragma once
-#include "dactyl_manuform.h"
+#include "quantum.h"
#define XXX KC_NO
diff --git a/keyboards/handwired/dactyl_manuform/5x6/config.h b/keyboards/handwired/dactyl_manuform/5x6/config.h
index 6b93da9588..fc3f00bbc4 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/config.h
+++ b/keyboards/handwired/dactyl_manuform/5x6/config.h
@@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define PRODUCT_ID 0x3536
-#define DEVICE_VER 0x0001
-#define PRODUCT Dactyl-Manuform (5x6)
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
diff --git a/keyboards/handwired/dactyl_manuform/5x6/info.json b/keyboards/handwired/dactyl_manuform/5x6/info.json
index d5778f0455..81bf8b19e8 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/info.json
+++ b/keyboards/handwired/dactyl_manuform/5x6/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Dactyl Manuform 5x6",
+ "keyboard_name": "Dactyl-Manuform (5x6)",
+ "manufacturer": "tshort",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3536",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_5x6": {
"layout": [
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c
index 78c16fb554..326eded640 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[VIM] = LAYOUT_5x6(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______,
_______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h b/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h
index 5a848d26e5..a213d43d39 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/5x6/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/5x6/keymaps/rishka/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/rishka/keymap.c
index 71a91cfd2a..54ecf8101d 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/rishka/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/rishka/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _________________SYMBOL_L3_________________, _________________SYMBOL_R3_________________, _______,
_______, _______, KC_P0 , KC_PDOT,
_______, _______, _______, _______,
- RESET , _______, _______, _______,
+ QK_BOOT, _______, _______, _______,
RGB_TOG, _______, _______, _______
),
[MDIA] = LAYOUT_5x6_wrapper(
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/keymap.c
index 001687b57d..1f9102e829 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/scheiklp/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_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_ESC, KC_TRNS, KC_TRNS, KC_MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
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,
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/squirrel/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/squirrel/keymap.c
index 41d8ee94fa..a4bd37c27b 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/squirrel/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/squirrel/keymap.c
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______,_______,_______,KC_WH_U,_______,_______, _______, _______ , KC_MS_U , _______ ,_______,_______,
_______,_______,KC_WH_L,KC_WH_D,KC_WH_R ,_______, KC_BTN1, KC_MS_L , KC_MS_D , KC_MS_R ,_______,_______,
_______,_______,KC_ACL0,KC_ACL1,KC_ACL2,_______, _______, KC_BTN2 , _______ , _______ ,_______ ,_______,
- _______,_______, _______, RESET,
+ _______,_______, _______, QK_BOOT,
KC_BTN1,KC_BTN2, _______,_______,
_______,KC_BTN2, _______,_______,
_______,_______, _______,_______
@@ -55,11 +55,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ARROWS] = LAYOUT_5x6(
- RESET,_______, _______ ,_______,_______ ,TG(_WINDOWS), _______,_______,_______,_______,_______,_______,
+ QK_BOOT,_______, _______ ,_______,_______ ,TG(_WINDOWS), _______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______, _______, KC_HOME , KC_UP , KC_END ,_______,_______,
_______,_______,_______,_______,_______ ,_______, KC_HOME, KC_LEFT , KC_DOWN , KC_RIGHT ,KC_END,_______,
_______,_______,_______,_______,_______,_______, _______, KC_PGDOWN , _______ , KC_PGUP ,_______ ,_______,
- RESET,_______, _______, _______,
+ QK_BOOT,_______, _______, _______,
_______,_______, _______,_______,
_______,_______, _______,_______,
_______,_______, _______,_______
@@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_NUMBERS] = LAYOUT_5x6(
- RESET,_______, _______ ,_______,_______ ,_______, KC_PSLS,KC_PAST,KC_PPLS,KC_PMNS,_______,_______,
+ QK_BOOT,_______, _______ ,_______,_______ ,_______, KC_PSLS,KC_PAST,KC_PPLS,KC_PMNS,_______,_______,
_______,_______,_______,KC_PSLS,KC_PAST,_______, _______, KC_7 , KC_8 , KC_9 ,_______,_______,
_______,_______,_______,KC_PMNS,KC_PPLS ,_______, _______, KC_4 , KC_5 , KC_6 ,_______,_______,
_______,_______,_______,_______,_______,_______, _______, KC_1 , KC_2 , KC_3 ,_______ ,_______,
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/swedish/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/swedish/keymap.c
index de931feabd..d3ce17882f 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/swedish/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/swedish/keymap.c
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_RAISE] = LAYOUT_5x6(
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 , _______, _______, _______, KC_MUTE, SE_PIPE,
+ _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, KC_MUTE, SE_PIPE,
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END , KC_VOLU, SE_BSLS,
_______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MPRV, KC_MNXT, KC_VOLD, _______,
_______, _______, _______, _______,
diff --git a/keyboards/handwired/dactyl_manuform/5x6/keymaps/thattolleyguy/keymap.c b/keyboards/handwired/dactyl_manuform/5x6/keymaps/thattolleyguy/keymap.c
index b89b798fd6..055df1b87d 100644
--- a/keyboards/handwired/dactyl_manuform/5x6/keymaps/thattolleyguy/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/5x6/keymaps/thattolleyguy/keymap.c
@@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├────────┼────────┤ ├────────┼────────┤
_______, _______, _______, _______,
// ├────────┼────────┤ ├────────┼────────┤
- _______, RESET, _______, _______
+ _______, QK_BOOT, _______, _______
// └────────┴────────┘ └────────┴────────┘
),
@@ -92,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├────────┼────────┤ ├────────┼────────┤
KC_LGUI, KC_GRV, KC_DEL, KC_RALT,
// ├────────┼────────┤ ├────────┼────────┤
- XXXXXXX, XXXXXXX, RESET, XXXXXXX
+ XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX
// └────────┴────────┘ └────────┴────────┘
),
};
diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.h b/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.h
index 790fdb0695..7191119fd9 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.h
+++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/5x6_2_5.h
@@ -16,7 +16,7 @@
#pragma once
-#include "dactyl_manuform.h"
+#include "quantum.h"
#define XXX KC_NO
diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h b/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h
index cb147654ba..031400fe0c 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h
+++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define PRODUCT_ID 0x3536
-#define DEVICE_VER 0x0003
-#define PRODUCT Dactyl-Manuform (5x6+2)
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 6
diff --git a/keyboards/handwired/dactyl_manuform/5x6_2_5/info.json b/keyboards/handwired/dactyl_manuform/5x6_2_5/info.json
index 6c4f6b2fca..efb791d63a 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_2_5/info.json
+++ b/keyboards/handwired/dactyl_manuform/5x6_2_5/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Dactyl Manuform 5x6 2 extra keys and 5 thumb keys",
+ "keyboard_name": "Dactyl-Manuform (5x6+2)",
+ "manufacturer": "tshort",
"url": "",
"maintainer": "jceb",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3536",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_5x6_2_5": {
"layout": [
diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/5x6_5.h b/keyboards/handwired/dactyl_manuform/5x6_5/5x6_5.h
index 794b0be9fe..3179426585 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_5/5x6_5.h
+++ b/keyboards/handwired/dactyl_manuform/5x6_5/5x6_5.h
@@ -1,6 +1,6 @@
#pragma once
-#include "dactyl_manuform.h"
+#include "quantum.h"
#define XXX KC_NO
diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/config.h b/keyboards/handwired/dactyl_manuform/5x6_5/config.h
index 031ccf88d7..273f90c600 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_5/config.h
+++ b/keyboards/handwired/dactyl_manuform/5x6_5/config.h
@@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define PRODUCT_ID 0x3536
-#define DEVICE_VER 0x0002
-#define PRODUCT Dactyl-Manuform (5x6)
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/info.json b/keyboards/handwired/dactyl_manuform/5x6_5/info.json
index 7bcbf65812..82885646eb 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_5/info.json
+++ b/keyboards/handwired/dactyl_manuform/5x6_5/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Dactyl Manuform 5x6 5 thumb keys",
+ "keyboard_name": "Dactyl-Manuform (5x6)",
+ "manufacturer": "tshort",
"url": "",
"maintainer": "jceb",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3536",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_5x6_5": {
"layout": [
diff --git a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/keymap.c b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/keymap.c
index 1e164081f2..c341bdf0b6 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/333fred/keymap.c
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[VIM] = LAYOUT_5x6_5(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______,
_______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
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 3503bfd368..413fa70492 100644
--- a/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/cykedev/keymap.c
@@ -134,7 +134,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ QK_BOOT, XXXXXXX, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX,
_______, KC_PGUP, KC_PGDN, _______
),
[_LOWER] = LAYOUT_5x6_5(
@@ -160,7 +160,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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 ,
+ XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, XXXXXXX, QK_BOOT,
_______, KC_PGUP, KC_PGDN, _______
),
[_ADJUST] = LAYOUT_5x6_5(
diff --git a/keyboards/handwired/dactyl_manuform/5x7/5x7.h b/keyboards/handwired/dactyl_manuform/5x7/5x7.h
index 0c0c781be7..7cd2597a1f 100644
--- a/keyboards/handwired/dactyl_manuform/5x7/5x7.h
+++ b/keyboards/handwired/dactyl_manuform/5x7/5x7.h
@@ -1,6 +1,6 @@
#pragma once
-#include "dactyl_manuform.h"
+#include "quantum.h"
#define XXX KC_NO
diff --git a/keyboards/handwired/dactyl_manuform/5x7/config.h b/keyboards/handwired/dactyl_manuform/5x7/config.h
index 6b915d6118..b24d002006 100644
--- a/keyboards/handwired/dactyl_manuform/5x7/config.h
+++ b/keyboards/handwired/dactyl_manuform/5x7/config.h
@@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define PRODUCT_ID 0x3537
-#define DEVICE_VER 0x0001
-#define PRODUCT Dactyl-Manuform (5x7)
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
diff --git a/keyboards/handwired/dactyl_manuform/5x7/info.json b/keyboards/handwired/dactyl_manuform/5x7/info.json
index 7280e90ca0..6a0b8f21ae 100644
--- a/keyboards/handwired/dactyl_manuform/5x7/info.json
+++ b/keyboards/handwired/dactyl_manuform/5x7/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Dactyl Manuform 5x7",
+ "keyboard_name": "Dactyl-Manuform (5x7)",
+ "manufacturer": "tshort",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3537",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_5x7": {
"layout": [
diff --git a/keyboards/handwired/dactyl_manuform/6x6/6x6.h b/keyboards/handwired/dactyl_manuform/6x6/6x6.h
index 7bff55701a..657d057787 100644
--- a/keyboards/handwired/dactyl_manuform/6x6/6x6.h
+++ b/keyboards/handwired/dactyl_manuform/6x6/6x6.h
@@ -1,6 +1,6 @@
#pragma once
-#include "dactyl_manuform.h"
+#include "quantum.h"
#define XXX KC_NO
diff --git a/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk b/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk
index af3cc49296..d929a3516d 100644
--- a/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk
@@ -3,6 +3,7 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = tinyuf2
diff --git a/keyboards/handwired/dactyl_manuform/6x6/config.h b/keyboards/handwired/dactyl_manuform/6x6/config.h
index 15682fcadf..3568b56143 100644
--- a/keyboards/handwired/dactyl_manuform/6x6/config.h
+++ b/keyboards/handwired/dactyl_manuform/6x6/config.h
@@ -20,10 +20,6 @@ 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)"
-
/* USB Device descriptor parameter */
/* key matrix size */
diff --git a/keyboards/handwired/dactyl_manuform/6x6/info.json b/keyboards/handwired/dactyl_manuform/6x6/info.json
index 1f4e7dc3a4..bfc65baf18 100644
--- a/keyboards/handwired/dactyl_manuform/6x6/info.json
+++ b/keyboards/handwired/dactyl_manuform/6x6/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Dactyl Manuform 6x6",
+ "keyboard_name": "Dactyl-Manuform (6x6)",
+ "manufacturer": "tshort",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3636",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_6x6": {
"layout": [
diff --git a/keyboards/handwired/dactyl_manuform/6x6/keymaps/dumam/keymap.c b/keyboards/handwired/dactyl_manuform/6x6/keymaps/dumam/keymap.c
index 2fb783e0b8..ab258a0c5e 100644
--- a/keyboards/handwired/dactyl_manuform/6x6/keymaps/dumam/keymap.c
+++ b/keyboards/handwired/dactyl_manuform/6x6/keymaps/dumam/keymap.c
@@ -14,7 +14,7 @@ enum custom_layers {
#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
+#define RESET__ QK_BOOT
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
diff --git a/keyboards/handwired/dactyl_manuform/6x6/readme.md b/keyboards/handwired/dactyl_manuform/6x6/readme.md
index 9b079be466..c7500448da 100644
--- a/keyboards/handwired/dactyl_manuform/6x6/readme.md
+++ b/keyboards/handwired/dactyl_manuform/6x6/readme.md
@@ -60,4 +60,4 @@ 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.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT`, in dumam keymap it's assigned to F1 and F12 keys on mod layers.
diff --git a/keyboards/handwired/dactyl_manuform/6x6_4/6x6_4.h b/keyboards/handwired/dactyl_manuform/6x6_4/6x6_4.h
index 7c767cae7e..74cb474a5b 100644
--- a/keyboards/handwired/dactyl_manuform/6x6_4/6x6_4.h
+++ b/keyboards/handwired/dactyl_manuform/6x6_4/6x6_4.h
@@ -4,7 +4,7 @@
#pragma once
-#include "dactyl_manuform.h"
+#include "quantum.h"
#define XXX KC_NO
diff --git a/keyboards/handwired/dactyl_manuform/6x6_4/config.h b/keyboards/handwired/dactyl_manuform/6x6_4/config.h
index 8f965f6957..b7aeb2cc0d 100644
--- a/keyboards/handwired/dactyl_manuform/6x6_4/config.h
+++ b/keyboards/handwired/dactyl_manuform/6x6_4/config.h
@@ -20,10 +20,6 @@ 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+4)
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 14
diff --git a/keyboards/handwired/dactyl_manuform/6x6_4/info.json b/keyboards/handwired/dactyl_manuform/6x6_4/info.json
index 470e775c0e..1ee5e566be 100644
--- a/keyboards/handwired/dactyl_manuform/6x6_4/info.json
+++ b/keyboards/handwired/dactyl_manuform/6x6_4/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Dactyl Manuform 6x6 4 extra keys",
+ "keyboard_name": "Dactyl-Manuform (6x6+4)",
+ "manufacturer": "tshort",
"url": "",
"maintainer": "dmik",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3636",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_6x6_4": {
"layout": [
diff --git a/keyboards/handwired/dactyl_manuform/6x6_kinesis/6x6_kinesis.h b/keyboards/handwired/dactyl_manuform/6x6_kinesis/6x6_kinesis.h
index 00f931281b..1adb7d4696 100644
--- a/keyboards/handwired/dactyl_manuform/6x6_kinesis/6x6_kinesis.h
+++ b/keyboards/handwired/dactyl_manuform/6x6_kinesis/6x6_kinesis.h
@@ -4,7 +4,7 @@
#pragma once
-#include "dactyl_manuform.h"
+#include "quantum.h"
#define XXX KC_NO
diff --git a/keyboards/handwired/dactyl_manuform/6x6_kinesis/config.h b/keyboards/handwired/dactyl_manuform/6x6_kinesis/config.h
index 8f965f6957..b7aeb2cc0d 100644
--- a/keyboards/handwired/dactyl_manuform/6x6_kinesis/config.h
+++ b/keyboards/handwired/dactyl_manuform/6x6_kinesis/config.h
@@ -20,10 +20,6 @@ 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+4)
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 14
diff --git a/keyboards/handwired/dactyl_manuform/6x6_kinesis/info.json b/keyboards/handwired/dactyl_manuform/6x6_kinesis/info.json
index e106a04c69..a78fe14fcd 100644
--- a/keyboards/handwired/dactyl_manuform/6x6_kinesis/info.json
+++ b/keyboards/handwired/dactyl_manuform/6x6_kinesis/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Dactyl Manuform 6x6 Kinesis Advantage edition",
+ "keyboard_name": "Dactyl-Manuform (6x6+4)",
+ "manufacturer": "tshort",
"url": "",
"maintainer": "dmik",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3636",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_6x6_kinesis": {
"layout": [
diff --git a/keyboards/handwired/dactyl_manuform/6x7/6x7.h b/keyboards/handwired/dactyl_manuform/6x7/6x7.h
index 8d69ddd097..bd66c309fc 100644
--- a/keyboards/handwired/dactyl_manuform/6x7/6x7.h
+++ b/keyboards/handwired/dactyl_manuform/6x7/6x7.h
@@ -2,7 +2,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
-#include "dactyl_manuform.h"
+#include "quantum.h"
#define XXX KC_NO
diff --git a/keyboards/handwired/dactyl_manuform/6x7/config.h b/keyboards/handwired/dactyl_manuform/6x7/config.h
index f66f4b036f..5805496e2b 100644
--- a/keyboards/handwired/dactyl_manuform/6x7/config.h
+++ b/keyboards/handwired/dactyl_manuform/6x7/config.h
@@ -20,10 +20,6 @@ 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 (6x7)
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 14
diff --git a/keyboards/handwired/dactyl_manuform/6x7/info.json b/keyboards/handwired/dactyl_manuform/6x7/info.json
index 7b08dd8881..89548923b6 100644
--- a/keyboards/handwired/dactyl_manuform/6x7/info.json
+++ b/keyboards/handwired/dactyl_manuform/6x7/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Dactyl Manuform 6x7",
+ "keyboard_name": "Dactyl-Manuform (6x7)",
+ "manufacturer": "tshort",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3636",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_6x7": {
"layout": [
diff --git a/keyboards/handwired/dactyl_manuform/config.h b/keyboards/handwired/dactyl_manuform/config.h
index 18942f9e5f..b0745f8573 100644
--- a/keyboards/handwired/dactyl_manuform/config.h
+++ b/keyboards/handwired/dactyl_manuform/config.h
@@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x444D
-#define MANUFACTURER tshort
-
/* mouse config */
#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_DELAY 0
diff --git a/keyboards/handwired/dactyl_manuform/dactyl_manuform.c b/keyboards/handwired/dactyl_manuform/dactyl_manuform.c
deleted file mode 100644
index 043bbd5672..0000000000
--- a/keyboards/handwired/dactyl_manuform/dactyl_manuform.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "dactyl_manuform.h"
diff --git a/keyboards/handwired/dactyl_manuform/dactyl_manuform.h b/keyboards/handwired/dactyl_manuform/dactyl_manuform.h
deleted file mode 100644
index c339370f8b..0000000000
--- a/keyboards/handwired/dactyl_manuform/dactyl_manuform.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#pragma once
-
-#if defined(KEYBOARD_handwired_dactyl_manuform_4x5)
-# 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)
-# include "5x6_5.h"
-#elif defined(KEYBOARD_handwired_dactyl_manuform_5x6_2_5)
-# include "5x6_2_5.h"
-#elif defined(KEYBOARD_handwired_dactyl_manuform_5x7)
-# 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_3x5_3)
-# include "3x5_3.h"
-#elif defined(KEYBOARD_handwired_dactyl_manuform_dmote_62key)
-# include "62key.h"
-#endif
-
-#include "quantum.h"
diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/62key.h b/keyboards/handwired/dactyl_manuform/dmote/62key/62key.h
index 2d52e7e5fb..673164b424 100644
--- a/keyboards/handwired/dactyl_manuform/dmote/62key/62key.h
+++ b/keyboards/handwired/dactyl_manuform/dmote/62key/62key.h
@@ -1,6 +1,6 @@
#pragma once
-#include "dactyl_manuform.h"
+#include "quantum.h"
// This uses the same coordinate system as the program that defines
// the case model, but not the same coordinates.
diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/config.h b/keyboards/handwired/dactyl_manuform/dmote/62key/config.h
index cb65d8c19c..8b256a86f1 100644
--- a/keyboards/handwired/dactyl_manuform/dmote/62key/config.h
+++ b/keyboards/handwired/dactyl_manuform/dmote/62key/config.h
@@ -2,9 +2,6 @@
#include "config_common.h"
-#define PRODUCT_ID 0x3632
-#define DEVICE_VER 0x0001
-#define PRODUCT DMOTE (62-key)
#define MATRIX_ROWS 12
#define MATRIX_COLS 6
diff --git a/keyboards/handwired/dactyl_manuform/dmote/62key/info.json b/keyboards/handwired/dactyl_manuform/dmote/62key/info.json
index 82b9738cd5..7860fe6c6a 100644
--- a/keyboards/handwired/dactyl_manuform/dmote/62key/info.json
+++ b/keyboards/handwired/dactyl_manuform/dmote/62key/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "DMOTE 62-key",
+ "keyboard_name": "DMOTE (62-key)",
+ "manufacturer": "tshort",
"url": "",
"maintainer": "veikman",
+ "usb": {
+ "vid": "0x444D",
+ "pid": "0x3632",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_62key": {
"layout": [
diff --git a/keyboards/handwired/dactyl_promicro/config.h b/keyboards/handwired/dactyl_promicro/config.h
index 19874be799..a110a81c81 100644
--- a/keyboards/handwired/dactyl_promicro/config.h
+++ b/keyboards/handwired/dactyl_promicro/config.h
@@ -19,7 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "config_common.h"
-#define PRODUCT Dactyl Ergo(6x6)
/* key matrix size */
// Rows are doubled-up
@@ -32,12 +31,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIODE_DIRECTION COL2ROW
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3060
-#define DEVICE_VER 0x0001
-//#define MANUFACTURER tshort
-
/* mouse config */
#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_DELAY 0
diff --git a/keyboards/handwired/dactyl_promicro/info.json b/keyboards/handwired/dactyl_promicro/info.json
index 0f0ac0b357..c923591309 100644
--- a/keyboards/handwired/dactyl_promicro/info.json
+++ b/keyboards/handwired/dactyl_promicro/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Dactyl ProMicro",
+ "keyboard_name": "Dactyl Ergo(6x6)",
+ "manufacturer": "tshort",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_6x6": {
"layout": [
diff --git a/keyboards/handwired/dactyl_rah/config.h b/keyboards/handwired/dactyl_rah/config.h
index b5f272ba70..08f53541a3 100644
--- a/keyboards/handwired/dactyl_rah/config.h
+++ b/keyboards/handwired/dactyl_rah/config.h
@@ -19,13 +19,6 @@ 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 0x3060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ralphie02
-#define PRODUCT DACTYL_RAH
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
diff --git a/keyboards/handwired/dactyl_rah/info.json b/keyboards/handwired/dactyl_rah/info.json
index 55e0c6c521..4612b3a9b1 100644
--- a/keyboards/handwired/dactyl_rah/info.json
+++ b/keyboards/handwired/dactyl_rah/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dactyl RAH",
+ "manufacturer": "ralphie02",
"url": "https://qmk.fm/keyboards/",
"maintainer": "ralphie02",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_6x6": {
"layout": [
diff --git a/keyboards/handwired/dactyl_rah/keymaps/right/keymap.c b/keyboards/handwired/dactyl_rah/keymaps/right/keymap.c
index 6b07051c4b..6f0c25a4dd 100644
--- a/keyboards/handwired/dactyl_rah/keymaps/right/keymap.c
+++ b/keyboards/handwired/dactyl_rah/keymaps/right/keymap.c
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_BSPC,CTL_ESC,KC_LALT, KC_RALT,KC_ENT ,KC_SPC
),
[NAV] = LAYOUT_6x6(
- RESET , KC_NO ,KC_MPRV,KC_MPLY,KC_MNXT, KC_NO , KC_BRIU, KC_7 , KC_8 , KC_9 , KC_NO , RESET ,
+ QK_BOOT , KC_NO ,KC_MPRV,KC_MPLY,KC_MNXT, KC_NO , KC_BRIU, KC_7 , KC_8 , KC_9 , KC_NO , QK_BOOT ,
_______,KC_VOLU,KC_WBAK,KC_MS_U,KC_WFWD,KC_WH_U, KC_BRID, KC_4 , KC_5 , KC_6 , KC_NO , KC_F9 ,
_______,KC_VOLD,KC_MS_L,KC_MS_D,KC_MS_R,KC_WH_D, KC_PPLS, KC_1 , KC_2 , KC_3 ,KC_PMNS, KC_F10,
KC_NO , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_NO , KC_PAST, KC_0 , KC_NO ,_______,KC_PSLS, KC_F11,
diff --git a/keyboards/handwired/daishi/config.h b/keyboards/handwired/daishi/config.h
index e4a45972c8..e02c7c889c 100644
--- a/keyboards/handwired/daishi/config.h
+++ b/keyboards/handwired/daishi/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6D6D
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MetaMechs
-#define PRODUCT Daishi
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 18
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D6, D7, E0, E1, C0, C1, C2 }
#define MATRIX_COL_PINS { E6, E7, E3, B0, B1, B2, A6, A5, A4, A3, A2, A1, A0, F7, F6, F5, F4, F3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/daishi/info.json b/keyboards/handwired/daishi/info.json
index f0b18bebbc..96afaa6a5b 100644
--- a/keyboards/handwired/daishi/info.json
+++ b/keyboards/handwired/daishi/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Daishi",
+ "manufacturer": "MetaMechs",
"url": "",
"maintainer": "Croktopus",
+ "usb": {
+ "vid": "0x6D6D",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/datahand/config.h b/keyboards/handwired/datahand/config.h
index c9726f6ddb..f12b446e51 100644
--- a/keyboards/handwired/datahand/config.h
+++ b/keyboards/handwired/datahand/config.h
@@ -17,14 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-/* Taken from the DataHand PS/2-USB adaptor. */
-#define VENDOR_ID 0x13BA
-#define PRODUCT_ID 0x0017
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DataHand
-#define PRODUCT DataHand
-
/* key matrix size */
#define MATRIX_ROWS 13
#define MATRIX_COLS 4
diff --git a/keyboards/handwired/datahand/info.json b/keyboards/handwired/datahand/info.json
index 21ec229a98..a0779c11ed 100644
--- a/keyboards/handwired/datahand/info.json
+++ b/keyboards/handwired/datahand/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Handwired DataHand",
+ "keyboard_name": "DataHand",
+ "manufacturer": "DataHand",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x13BA",
+ "pid": "0x0017",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/dc/mc/001/config.h b/keyboards/handwired/dc/mc/001/config.h
index 5cba80831f..b6d6f60dfc 100644
--- a/keyboards/handwired/dc/mc/001/config.h
+++ b/keyboards/handwired/dc/mc/001/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4443 // 'D' 'C'
-#define PRODUCT_ID 0x4D43 // 'M' 'C'
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Daniel Cormier
-#define PRODUCT DC MC 001
-
/*
BUTTON_MUTE = _BV(4),
BUTTON_STOP = _BV(0),
@@ -37,7 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ \
{ B4, B0, B1, B2, B3 } \
}
-#define UNUSED_PINS
/*
RE_CHANNEL_A = _BV(6),
diff --git a/keyboards/handwired/dc/mc/001/info.json b/keyboards/handwired/dc/mc/001/info.json
index d9562f660e..9162b6e77e 100644
--- a/keyboards/handwired/dc/mc/001/info.json
+++ b/keyboards/handwired/dc/mc/001/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Daniel Cormier's Media Controller (v1)",
+ "keyboard_name": "DC MC 001",
+ "manufacturer": "Daniel Cormier",
"url": "https://imgur.com/a/PM9lQ",
"maintainer": "Daniel Cormier (Twitter: @danielcormier)",
+ "usb": {
+ "vid": "0x4443",
+ "pid": "0x4D43",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/ddg_56/config.h b/keyboards/handwired/ddg_56/config.h
index 6d880d1fd5..ab3c0738a0 100644
--- a/keyboards/handwired/ddg_56/config.h
+++ b/keyboards/handwired/ddg_56/config.h
@@ -16,13 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xB195
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Spaceman
-#define PRODUCT DDG_56
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/handwired/ddg_56/info.json b/keyboards/handwired/ddg_56/info.json
index 300de84132..697f6c7762 100644
--- a/keyboards/handwired/ddg_56/info.json
+++ b/keyboards/handwired/ddg_56/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ddg_56",
+ "keyboard_name": "DDG_56",
+ "manufacturer": "Spaceman",
"url": "",
"maintainer": "spaceman",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xB195",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/dqz11n1g/config.h b/keyboards/handwired/dqz11n1g/config.h
new file mode 100644
index 0000000000..3bd8123426
--- /dev/null
+++ b/keyboards/handwired/dqz11n1g/config.h
@@ -0,0 +1,51 @@
+/*
+Copyright (c) 2022 David Kuehling <dvdkhlng TA posteo TOD 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/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* Matrix size */
+#define MATRIX_ROWS 7
+#define MATRIX_COLS 19
+
+/* Pin-out */
+#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7, E6, B4 }
+
+/* The pin connecting to the SN74HC165 SH/~LD in */
+#define ROW_SHIFT_PIN B6
+
+/* Column read via SPI (shift register) */
+/* #define MATRIX_COL_PINS { } */
+
+#define LED_CAPS_LOCK_PIN F7 /* A0 */
+#define LED_NUM_LOCK_PIN F5 /*A2 */
+#define LED_SCROLL_LOCK_PIN F4 /*A3 */
+
+#define LED_FUN_LOCK_PIN F6 /* A1 (handled in layer_state_set_user()) */
+
+/* audio config */
+#define AUDIO_PIN B5
+#define AUDIO_CLICKY
+#define AUDIO_INIT_DELAY
+#define AUDIO_CLICKY_FREQ_RANDOMNESS 0.0f
+#define NO_MUSIC_MODE
+
+/* diodes go row->col, though this is hard-coded in matrix.c and we drive the
+ * matrix differently: we have pull-down on the columns and drive the selected
+ * row high */
+/* #define DIODE_DIRECTION ROW2COL */
diff --git a/keyboards/handwired/dqz11n1g/dqz11n1g.h b/keyboards/handwired/dqz11n1g/dqz11n1g.h
new file mode 100644
index 0000000000..f5c55bd6d5
--- /dev/null
+++ b/keyboards/handwired/dqz11n1g/dqz11n1g.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2022 David Kuehling <dvdkhlng TA posteo TOD 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/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+/* Fill actually existing keys into the 7x19 keyboard matrix */
+#define LAYOUT( \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0J, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1J, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2J, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3J, \
+ k40, k41, k42, k43, k44, k45, k4D, k4E, k4F, k4G, k4H, k4J, \
+ k51, k52, k53, k54, k5E, k5F, k5G, k5H, \
+ k46, k47, k48, k4A, k4B, k4C, \
+ k56, k57, k58, k5A, k5B, k5C, \
+ k68, k6A \
+) { \
+ /* left hand */ /* middle/thumb block */ /* right hand */ \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, k0C, k0D, k0E, k0F, k0G, k0H, k0J }, \
+ { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k1H, k1J }, \
+ { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G, k2H, k2J }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G, k3H, k3J }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, XXX, k4A, k4B, k4C, k4D, k4E, k4F, k4G, k4H, k4J }, \
+ { XXX, k51, k52, k53, k54, XXX, k56, k57, k58, XXX, k5A, k5B, k5C, XXX, k5E, k5F, k5G, k5H, XXX }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, k68, XXX, k6A, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
+}
+
+/*
+ * Local Variables:
+ * c-basic-offset:4
+ * fill-column: 76
+ * End:
+ */
diff --git a/keyboards/handwired/dqz11n1g/info.json b/keyboards/handwired/dqz11n1g/info.json
new file mode 100644
index 0000000000..24605b34d2
--- /dev/null
+++ b/keyboards/handwired/dqz11n1g/info.json
@@ -0,0 +1,147 @@
+{
+ "keyboard_name": "DQz11N1G",
+ "manufacturer": "Unknown",
+ "url": "https://github.com/dvdkhlng/qmk_firmware_dqz11n1g",
+ "maintainer": "dvdkhlng",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x4451",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x": 0, "y": 0, "matrix": [0, 0] },
+ {"x": 1, "y": 0, "matrix": [0, 1] },
+ {"x": 2, "y": 0, "matrix": [0, 2] },
+ {"x": 3, "y": 0, "matrix": [0, 3] },
+ {"x": 4, "y": 0, "matrix": [0, 4] },
+ {"x": 5, "y": 0, "matrix": [0, 5] },
+
+ {"x": 7, "y": 0, "matrix": [0, 6] },
+ {"x": 8, "y": 0, "matrix": [0, 7] },
+ {"x": 9, "y": 0, "matrix": [0, 8] },
+ {"x": 10, "y": 0, "matrix": [0, 9] },
+ {"x": 11, "y": 0, "matrix": [0, 10] },
+ {"x": 12, "y": 0, "matrix": [0, 11] },
+ {"x": 13, "y": 0, "matrix": [0, 12] },
+
+ {"x": 15, "y": 0, "matrix": [0, 13] },
+ {"x": 16, "y": 0, "matrix": [0, 14] },
+ {"x": 17, "y": 0, "matrix": [0, 15] },
+ {"x": 18, "y": 0, "matrix": [0, 16] },
+ {"x": 19, "y": 0, "matrix": [0, 17] },
+ {"x": 20, "y": 0, "matrix": [0, 18] },
+
+ {"x": 0, "y": 1, "matrix": [1, 0] },
+ {"x": 1, "y": 1, "matrix": [1, 1] },
+ {"x": 2, "y": 1, "matrix": [1, 2] },
+ {"x": 3, "y": 1, "matrix": [1, 3] },
+ {"x": 4, "y": 1, "matrix": [1, 4] },
+ {"x": 5, "y": 1, "matrix": [1, 5] },
+
+ {"x": 7, "y": 1, "matrix": [1, 6] },
+ {"x": 8, "y": 1, "matrix": [1, 7] },
+ {"x": 9, "y": 1, "matrix": [1, 8] },
+ {"x": 10, "y": 1, "matrix": [1, 9] },
+ {"x": 11, "y": 1, "matrix": [1, 10] },
+ {"x": 12, "y": 1, "matrix": [1, 11] },
+ {"x": 13, "y": 1, "matrix": [1, 12] },
+
+ {"x": 15, "y": 1, "matrix": [1, 13] },
+ {"x": 16, "y": 1, "matrix": [1, 14] },
+ {"x": 17, "y": 1, "matrix": [1, 15] },
+ {"x": 18, "y": 1, "matrix": [1, 16] },
+ {"x": 19, "y": 1, "matrix": [1, 17] },
+ {"x": 20, "y": 1, "matrix": [1, 18] },
+
+ {"x": 0, "y": 2, "matrix": [2, 0] },
+ {"x": 1, "y": 2, "matrix": [2, 1] },
+ {"x": 2, "y": 2, "matrix": [2, 2] },
+ {"x": 3, "y": 2, "matrix": [2, 3] },
+ {"x": 4, "y": 2, "matrix": [2, 4] },
+ {"x": 5, "y": 2, "matrix": [2, 5] },
+
+ {"x": 7, "y": 2, "matrix": [2, 6] },
+ {"x": 8, "y": 2, "matrix": [2, 7] },
+ {"x": 9, "y": 2, "matrix": [2, 8] },
+ {"x": 10, "y": 2, "matrix": [2, 9] },
+ {"x": 11, "y": 2, "matrix": [2, 10] },
+ {"x": 12, "y": 2, "matrix": [2, 11] },
+ {"x": 13, "y": 2, "matrix": [2, 12] },
+
+ {"x": 15, "y": 2, "matrix": [2, 13] },
+ {"x": 16, "y": 2, "matrix": [2, 14] },
+ {"x": 17, "y": 2, "matrix": [2, 15] },
+ {"x": 18, "y": 2, "matrix": [2, 16] },
+ {"x": 19, "y": 2, "matrix": [2, 17] },
+ {"x": 20, "y": 2, "matrix": [2, 18] },
+
+ {"x": 0, "y": 3, "matrix": [3, 0] },
+ {"x": 1, "y": 3, "matrix": [3, 1] },
+ {"x": 2, "y": 3, "matrix": [3, 2] },
+ {"x": 3, "y": 3, "matrix": [3, 3] },
+ {"x": 4, "y": 3, "matrix": [3, 4] },
+ {"x": 5, "y": 3, "matrix": [3, 5] },
+
+ {"x": 7, "y": 3, "matrix": [3, 6] },
+ {"x": 8, "y": 3, "matrix": [3, 7] },
+ {"x": 9, "y": 3, "matrix": [3, 8] },
+ {"x": 10, "y": 3, "matrix": [3, 9] },
+ {"x": 11, "y": 3, "matrix": [3, 10] },
+ {"x": 12, "y": 3, "matrix": [3, 11] },
+ {"x": 13, "y": 3, "matrix": [3, 12] },
+
+ {"x": 15, "y": 3, "matrix": [3, 13] },
+ {"x": 16, "y": 3, "matrix": [3, 14] },
+ {"x": 17, "y": 3, "matrix": [3, 15] },
+ {"x": 18, "y": 3, "matrix": [3, 16] },
+ {"x": 19, "y": 3, "matrix": [3, 17] },
+ {"x": 20, "y": 3, "matrix": [3, 18] },
+
+ {"x": 0, "y": 4, "h": 2, "matrix": [4, 0] },
+ {"x": 1, "y": 4, "matrix": [4, 1] },
+ {"x": 2, "y": 4, "matrix": [4, 2] },
+ {"x": 3, "y": 4, "matrix": [4, 3] },
+ {"x": 4, "y": 4, "matrix": [4, 4] },
+ {"x": 5, "y": 4, "matrix": [4, 5] },
+
+ {"x": 15, "y": 4, "matrix": [4, 13] },
+ {"x": 16, "y": 4, "matrix": [4, 14] },
+ {"x": 17, "y": 4, "matrix": [4, 15] },
+ {"x": 18, "y": 4, "matrix": [4, 16] },
+ {"x": 19, "y": 4, "matrix": [4, 17] },
+ {"x": 20, "y": 4, "h": 2, "matrix": [4, 18] },
+
+ {"x": 1, "y": 5, "matrix": [5, 1] },
+ {"x": 2, "y": 5, "matrix": [5, 2] },
+ {"x": 3, "y": 5, "matrix": [5, 3] },
+ {"x": 4, "y": 5, "matrix": [5, 4] },
+
+ {"x": 16, "y": 5, "matrix": [5, 14] },
+ {"x": 17, "y": 5, "matrix": [5, 15] },
+ {"x": 18, "y": 5, "matrix": [5, 16] },
+ {"x": 19, "y": 5, "matrix": [5, 17] },
+
+ {"x": 5, "y": 7, "matrix": [4, 6] },
+ {"x": 6, "y": 7, "matrix": [4, 7] },
+ {"x": 7, "y": 7, "matrix": [4, 8] },
+
+ {"x": 13, "y": 7, "matrix": [4, 10] },
+ {"x": 14, "y": 7, "matrix": [4, 11] },
+ {"x": 15, "y": 7, "matrix": [4, 12] },
+
+ {"x": 5, "y": 8, "h": 2, "matrix": [5, 6] },
+ {"x": 6, "y": 8, "h": 2, "matrix": [5, 7] },
+ {"x": 7, "y": 8, "matrix": [5, 8] },
+
+ {"x": 13, "y": 8, "matrix": [5, 10] },
+ {"x": 14, "y": 8, "h": 2, "matrix": [5, 11] },
+ {"x": 15, "y": 8, "h": 2, "matrix": [5, 12] },
+
+ {"x": 7, "y": 9, "matrix": [6, 8] },
+ {"x": 13, "y": 9, "matrix": [6, 10] }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/dqz11n1g/keymaps/default/keymap.c b/keyboards/handwired/dqz11n1g/keymaps/default/keymap.c
new file mode 100644
index 0000000000..29d9cad7b7
--- /dev/null
+++ b/keyboards/handwired/dqz11n1g/keymaps/default/keymap.c
@@ -0,0 +1,72 @@
+/* Copyright (c) 2022 David Kuehling < dvdkhlng TA posteo TOD 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 QMK_KEYBOARD_H
+
+enum layer_names { _DEFAULT, _FUNCTION };
+#define KC_FUN TG(_FUNCTION)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_DEFAULT] = LAYOUT(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_FUN, KC_NUM, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_PSCR, 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_VOLU, KC_ESC, KC_P4, KC_P5, KC_P6, KC_PAST, KC_SCRL, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL,
+ KC_NUBS,KC_Q, KC_W, KC_E, KC_R, KC_T, KC_VOLD, KC_GRV, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_BRK, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
+ KC_CAPS,KC_A, KC_S, KC_D, KC_F, KC_G, KC_MUTE, KC_WSCH,KC_P0,KC_PDOT,KC_PENT,KC_PPLS,KC_INS, 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_LCTL, KC_LGUI,KC_LALT,KC_RBRC, KC_NUHS,KC_RALT,KC_APP, KC_RCTL, /* */
+
+ /* thumb keys: */ KC_BSPC, KC_HOME, KC_END, KC_LEFT, KC_RGHT, KC_DEL,
+ /* thumb keys: */ KC_SPC, KC_TAB, KC_PGUP, KC_UP, KC_ENT, KC_SPC,
+ /* thumb keys: */ KC_PGDN, KC_DOWN
+ ),
+
+ /* This is the "function key locked" layer. It is not documented by
+ * Maltron, so just putting some "Quantum" keycodes here for testing that
+ * the layer exists and Fun Lock LED works. */
+ [_FUNCTION] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,KC_TRNS,KC_BTN3,KC_MS_U,KC_WH_U,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CK_UP, AU_ON, KC_MS_L,KC_BTN1,KC_MS_R,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, CK_DOWN,AU_OFF, KC_BTN2,KC_MS_D,KC_WH_D,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, CK_TOGG,KC_NO, KC_ACL0,KC_ACL1,KC_ACL2,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ /* */ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, /* */
+
+ /* thumb keys: */ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ /* thumb keys: */ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ /* thumb keys: */ KC_NO, KC_NO
+ )
+};
+
+/* Show "Fun Lock" layer state via the "Fun Lock" LED */
+layer_state_t layer_state_set_user(layer_state_t state) {
+
+ setPinOutput(LED_FUN_LOCK_PIN);
+
+ if (layer_state_cmp(state, _FUNCTION))
+ writePinHigh(LED_FUN_LOCK_PIN);
+ else
+ writePinLow(LED_FUN_LOCK_PIN);
+
+ return state;
+}
+
+/*
+ * Local Variables:
+ * c-basic-offset:4
+ * fill-column: 76
+ * End:
+ */
diff --git a/keyboards/handwired/dqz11n1g/keymaps/default/readme.md b/keyboards/handwired/dqz11n1g/keymaps/default/readme.md
new file mode 100644
index 0000000000..d61546eb37
--- /dev/null
+++ b/keyboards/handwired/dqz11n1g/keymaps/default/readme.md
@@ -0,0 +1,17 @@
+![DQz11N1G-DE Layout Image](https://u.cubeupload.com/ddklg/OPBN5q.jpg)
+
+# Default Layout for DQz11N1G-DE
+
+This is the layout corresponding to what the Maltron keyboard DQz11N1G-DE I
+own came with (using the original pre-installed controller). Note that this
+differs from German Maltron layout as published on [Maltron's
+website](https://www.maltron.com/germany.html). Use the photo above as a
+reference for the layout implemented here.
+
+I did not find any official documentation about the the Function Lock key on
+the original Maltron keyboards. It seems that it implements some of the
+features that are documented for the one-handed Maltron keyboards. Most
+keys don't send any keycodes at all when function lock is enabed.
+
+We instead map some of the Quantum keycodes (mouse keys and audio control)
+in the middle (keypad) section of the keypad, when Function Lock is enabled. \ No newline at end of file
diff --git a/keyboards/handwired/dqz11n1g/matrix.c b/keyboards/handwired/dqz11n1g/matrix.c
new file mode 100644
index 0000000000..f9f3f2b68f
--- /dev/null
+++ b/keyboards/handwired/dqz11n1g/matrix.c
@@ -0,0 +1,131 @@
+/*
+ Copyright (c) 2022 David Kuehling <dvdkhlng TA posteo TOD 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 <stdint.h>
+#include <stdbool.h>
+#include <string.h>
+
+#include <avr/io.h>
+
+#include "spi_master.h"
+#include "quantum.h"
+#include "matrix.h"
+
+static pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+
+static void unselect_rows(void);
+
+void matrix_init_custom(void) {
+ /* initialize row pins */
+ for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+ setPinOutput(row_pins[row]);
+ }
+ unselect_rows();
+
+ /* columns read via shift-register on SPI lines */
+
+ /* Enable SPI, Master, set clock rate fck/2. First bit already at Qh
+ * output before clock edge (CPHA=0). SN74HC165 shift register shifts
+ * on low-to-high transition (CPOL=1). Receive the LSB first (DORD=1).
+ */
+ bool lsbFirst = true;
+ uint8_t mode = 2; /* CPOL=1, CPHA=0 */
+ uint16_t divisor = 16;
+
+ /* According to Atmega32U4 datasheet, PB0 *must* be set to output,
+ * otherwise it will interfere with SPI master operation. On pro-micro
+ * it's connected to a yellew LED. */
+ pin_t slavePin = PB0;
+ spi_init();
+ spi_start(slavePin, lsbFirst, mode, divisor);
+
+ /* Initialize pin controlling the shift register's SH/~LD pin */
+ setPinOutput(ROW_SHIFT_PIN);
+}
+
+static void select_row(uint8_t row) {
+ pin_t pin = row_pins[row];
+ if (pin != NO_PIN) {
+ writePinHigh(pin);
+ }
+}
+
+static void unselect_row(uint8_t row) {
+ pin_t pin = row_pins[row];
+ if (pin != NO_PIN) {
+ writePinLow(pin);
+ }
+}
+
+static void unselect_rows(void) {
+ for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+ unselect_row(row);
+ }
+}
+
+bool matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) {
+ /* Start with a clear matrix row */
+ matrix_row_t current_row_value = 0;
+
+ /* Set shift register SH/~LD pin to "load" mode */
+ writePinLow(ROW_SHIFT_PIN);
+ select_row(current_row);
+ matrix_output_select_delay();
+
+ /* Set shift register SH/~LD pin to "shift" mode */
+ writePinHigh(ROW_SHIFT_PIN);
+
+ /* For each octet of columns... */
+ for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index += 8) {
+ spi_status_t read_result = spi_read();
+ if (read_result >= 0) {
+ /* only if SPI read successful: populate the matrix row with the
+ state of the 8 consecutive column bits */
+ current_row_value |= ((matrix_row_t)read_result << col_index);
+ }
+ }
+
+ /* Unselect row & wait for all columns signals to go high. */
+ unselect_row(current_row);
+ matrix_output_unselect_delay(current_row, current_row_value != 0);
+
+ /* Update row in matrix. */
+ if (current_row_value != current_matrix[current_row]) {
+ current_matrix[current_row] = current_row_value;
+ return true;
+ }
+
+ return false;
+}
+
+bool matrix_scan_custom(matrix_row_t curr_matrix[]) {
+ bool changed = false;
+
+ /* set row, read cols */
+ for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
+ changed |= matrix_read_cols_on_row(curr_matrix, current_row);
+ }
+
+ return changed;
+}
+
+/*
+ * Local Variables:
+ * c-basic-offset:4
+ * fill-column: 76
+ * End:
+ */
diff --git a/keyboards/handwired/dqz11n1g/readme.md b/keyboards/handwired/dqz11n1g/readme.md
new file mode 100644
index 0000000000..0e3a57873d
--- /dev/null
+++ b/keyboards/handwired/dqz11n1g/readme.md
@@ -0,0 +1,80 @@
+# DQz11N1G
+
+![DQz11N1G](https://u.cubeupload.com/ddklg/OPBN5q.jpg)
+
+Firmware for a DIY controller replacement for one of the ortholinear contoured
+keyboards manufactured by [PCD Maltron Ltd](https://www.maltron.com)
+
+This work here in no way officially associated with PCD Maltron Ltd and comes
+with NO WARRANTY. Modifying your Maltron keyboard as described below will
+certainly void your warranty and may cause damage to your keyboard. Proceed
+at your own risk!
+
+* maintainer: [David Kuehling](https://github.com/dvdkhlng/qmk_firmware_dqz11n1g)
+* Hardware Supported: Maltron DQz11N1G with a replacement controller board
+ assembled as described below. The work here is based on a german version
+ of the keyboard: DQz11N1G-DE. I assume, but don't know for sure, that
+ minor or no changes at all are required to make this work on different
+ language versions of the keyboard.
+* Hardware Availability:
+ * [PCD Maltron Ltd](https://www.maltron.com), for the original keyboard
+ * 1x [Arduino Pro Micro](https://www.sparkfun.com/products/12640)
+ * 3x [SN74HC165](https://www.ti.com/product/SN74HC165)
+ * 1x DIL connector 2 rows a 17 pins.
+ * 19x pull-down resistors (10k Ohm),
+ * 4 LED current limiting resistors (not sure about the correct resistance,
+ using 470 Ohm here)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/dqz11n1g:default
+
+## In Detail
+
+[PCD Maltron Ltd](https://www.maltron.com) manufacturs ergonomic keyboards
+that appear to be hand-wired internally. For the Maltron DQz11N1G-DE
+keyboard that I happen to own, the keyboard matrix is wired to a 34-pin DIL
+connector. This makes it rather easy to replace the proprietary
+controller-board with a self-made board based on the QMK firmware.
+
+I don't really like the default layout of my Maltron DQz11N1G-DE keyboard,
+and modding it to work with QMK allows me to adapt it to my needs. It
+especially allows for the two space keys to assume different roles, thereby
+creating an additional easily reachable thumb-key.
+
+### Internal Details of Keyboard Matrix and DIL Connector
+
+![DQz11N1G-DE keyboard matrix](https://u.cubeupload.com/ddklg/OJFue6.jpg)
+
+![DQz11N1G-DE keyboard matrix connector](https://u.cubeupload.com/ddklg/fjFXeL.png)
+
+### Replacement Keyboard Controller Board
+
+Due to supply chain problems, I decided to base this on an
+Arduino-compatible [Pro Micro](https://www.sparkfun.com/products/12640)
+board which is still easy to source.
+
+Unfortunately pin-count of the DQz11N1G-DE's keyboard matrix is way beyond
+the Pro Micro's available I/O pin count. I'm using three 8-bit
+shift-registers ([SN74HC165](https://www.ti.com/product/SN74HC165) ) to
+connect the 19 colums of the keyboard matrix for readout. Due to diode
+direction in DQz11N1G-DE we also need 19 pull-down resistors one for each of
+the utilized shift-register inputs.
+
+This is a design sketch of the replacement board this is based on. Note how
+we need a custom matrix.c source file to deal with the shift register based
+keyboard readout.
+
+![Sketch of Keyboard Controller Board](https://u.cubeupload.com/ddklg/GBZgSf.png)
+
+This is how the assembled controller board looks like, on the right side you
+see the original PIC-based controller the keyboard ships with.
+
+![The assembled controller next to the original controller the keyboard ships with](https://u.cubeupload.com/ddklg/KLYF2V.jpg)
+
+Inside of the keyboard after installing the new controller board:
+
+![Installed controller](https://u.cubeupload.com/ddklg/Br0aiF.jpg)
+
+(Not visible in the photo: I drilled hole into the keyboard above the USB
+connector for a reset switch to simplify flashing controller firmware)
diff --git a/keyboards/handwired/dqz11n1g/rules.mk b/keyboards/handwired/dqz11n1g/rules.mk
new file mode 100644
index 0000000000..db8a809da9
--- /dev/null
+++ b/keyboards/handwired/dqz11n1g/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Keyboard matrix uses shift-registers read via SPI
+CUSTOM_MATRIX = lite
+SRC += matrix.c
+QUANTUM_LIB_SRC += spi_master.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 = 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 = yes # Audio output
+
diff --git a/keyboards/handwired/dygma/raise/ansi/info.json b/keyboards/handwired/dygma/raise/ansi/info.json
index f7f9a07c1c..34fae50a89 100644
--- a/keyboards/handwired/dygma/raise/ansi/info.json
+++ b/keyboards/handwired/dygma/raise/ansi/info.json
@@ -1,7 +1,4 @@
{
- "keyboard_name": "Dygma Raise",
- "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/dygma/raise",
- "maintainer": "ibash",
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/handwired/dygma/raise/config.h b/keyboards/handwired/dygma/raise/config.h
index 674fd592cf..64c6bad8e8 100644
--- a/keyboards/handwired/dygma/raise/config.h
+++ b/keyboards/handwired/dygma/raise/config.h
@@ -17,13 +17,6 @@
#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
diff --git a/keyboards/handwired/dygma/raise/info.json b/keyboards/handwired/dygma/raise/info.json
new file mode 100644
index 0000000000..9bf37d6d27
--- /dev/null
+++ b/keyboards/handwired/dygma/raise/info.json
@@ -0,0 +1,11 @@
+{
+ "keyboard_name": "Raise",
+ "manufacturer": "Dygma",
+ "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/dygma/raise",
+ "maintainer": "ibash",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0x2201",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/handwired/dygma/raise/iso/info.json b/keyboards/handwired/dygma/raise/iso/info.json
index f7f9a07c1c..34fae50a89 100644
--- a/keyboards/handwired/dygma/raise/iso/info.json
+++ b/keyboards/handwired/dygma/raise/iso/info.json
@@ -1,7 +1,4 @@
{
- "keyboard_name": "Dygma Raise",
- "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/dygma/raise",
- "maintainer": "ibash",
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/handwired/dygma/raise/rules.mk b/keyboards/handwired/dygma/raise/rules.mk
index a0120c8159..b7ff577361 100644
--- a/keyboards/handwired/dygma/raise/rules.mk
+++ b/keyboards/handwired/dygma/raise/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/handwired/eagleii/config.h b/keyboards/handwired/eagleii/config.h
index aa53dfa460..2007137d84 100644
--- a/keyboards/handwired/eagleii/config.h
+++ b/keyboards/handwired/eagleii/config.h
@@ -2,17 +2,9 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x9789
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Eagle
-#define PRODUCT II
-
#define MATRIX_ROWS 12
#define MATRIX_COLS 12
#define MATRIX_ROW_PINS { D0, B5, F1, B2, F7, F6, D4, D7, B4, B7, F5, B0 }
#define MATRIX_COL_PINS { D2, C6, E6, D5, B3, D3, D1, C7, F0, B6, B1, F4 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/handwired/eagleii/info.json b/keyboards/handwired/eagleii/info.json
index 366a3ad35f..7a221e8224 100644
--- a/keyboards/handwired/eagleii/info.json
+++ b/keyboards/handwired/eagleii/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "EagleII",
+ "keyboard_name": "II",
+ "manufacturer": "Eagle",
"url": "",
"maintainer": "Spaceman",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x9789",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/elrgo_s/config.h b/keyboards/handwired/elrgo_s/config.h
index 0ba6f77586..dc20ab1d3e 100644
--- a/keyboards/handwired/elrgo_s/config.h
+++ b/keyboards/handwired/elrgo_s/config.h
@@ -30,13 +30,6 @@ Copyright 2021 Yaroslav Smirnov <elorenn@bk.ru>
#define DIODE_DIRECTION COL2ROW
-/* USB Device descriptor parameter */
-#define PRODUCT Elrgo S
-#define MANUFACTURER Eloren
-#define VENDOR_ID 0x454C
-#define PRODUCT_ID 0x3436
-#define DEVICE_VER 0x0001
-
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/handwired/elrgo_s/info.json b/keyboards/handwired/elrgo_s/info.json
index 7c2039605d..a176872fbf 100644
--- a/keyboards/handwired/elrgo_s/info.json
+++ b/keyboards/handwired/elrgo_s/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Elrgo S",
+ "manufacturer": "Eloren",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x454C",
+ "pid": "0x3436",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x6_5": {
"layout": [
diff --git a/keyboards/handwired/elrgo_s/keymaps/default/keymap.c b/keyboards/handwired/elrgo_s/keymaps/default/keymap.c
index 075879bbf0..8049050f5c 100644
--- a/keyboards/handwired/elrgo_s/keymaps/default/keymap.c
+++ b/keyboards/handwired/elrgo_s/keymaps/default/keymap.c
@@ -53,6 +53,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_NO , KC_SLEP , KC_VOLU , KC_BRIU , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NLCK ,
KC_NO , KC_WAKE , KC_VOLD , KC_BRID , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
KC_NO , KC_NO , KC_NO , KC_F13 , KC_F14 , KC_F15 , KC_F16 , KC_F17 , KC_F18 , KC_NO , KC_NO , MO(_ADJUST),
- QK_BOOT , KC_NO , KC_NO , KC_TRNS , KC_NO , KC_NO , KC_TRNS , KC_TRNS , KC_NO , KC_NO
+ QK_BOOT, KC_NO , KC_NO , KC_TRNS , KC_NO , KC_NO , KC_TRNS , KC_TRNS , KC_NO , KC_NO
)
};
diff --git a/keyboards/handwired/elrgo_s/readme.md b/keyboards/handwired/elrgo_s/readme.md
index 5fb5ab6acb..d741f423d9 100644
--- a/keyboards/handwired/elrgo_s/readme.md
+++ b/keyboards/handwired/elrgo_s/readme.md
@@ -25,4 +25,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
Enter the bootloader in 2 ways:
* **Physical reset button**: Briefly press the button through the hole on the left side of the case.
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/handwired/ergocheap/config.h b/keyboards/handwired/ergocheap/config.h
index 26905e8cb3..9d99463961 100644
--- a/keyboards/handwired/ergocheap/config.h
+++ b/keyboards/handwired/ergocheap/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEDE //0xFEED
-#define PRODUCT_ID 0x6942 //0x6465
-#define DEVICE_VER 0x0001
-#define MANUFACTURER xSteins
-#define PRODUCT ERGOCHEAP
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -47,6 +40,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
#define TAPPING_TERM 500
+#define PERMISSIVE_HOLD
/*
* Feature disable options
diff --git a/keyboards/handwired/ergocheap/info.json b/keyboards/handwired/ergocheap/info.json
index 8896b932f2..4e2853cd85 100644
--- a/keyboards/handwired/ergocheap/info.json
+++ b/keyboards/handwired/ergocheap/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ergocheap",
+ "manufacturer": "xSteins",
"url": "",
"maintainer": "xSteins",
+ "usb": {
+ "vid": "0xFEDE",
+ "pid": "0x6942",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/evk/v1_3/config.h b/keyboards/handwired/evk/v1_3/config.h
index 374ad9d0c3..9a2192ec44 100644
--- a/keyboards/handwired/evk/v1_3/config.h
+++ b/keyboards/handwired/evk/v1_3/config.h
@@ -17,13 +17,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Yang Cui
-#define PRODUCT evk v1_3
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B0, B1, B2, B3, B7, D0 }
#define MATRIX_COL_PINS \
{ D1, D2, D3, C6, C7, F0, F1, F4, F5, F6, F7, B6, B5, B4, D7, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL // the positive current flows into the rows and then out of the columns negative.
diff --git a/keyboards/handwired/evk/v1_3/info.json b/keyboards/handwired/evk/v1_3/info.json
index fb225566fd..99f7256522 100644
--- a/keyboards/handwired/evk/v1_3/info.json
+++ b/keyboards/handwired/evk/v1_3/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Ergonomic Vertical Keyboard (EVK) version 1.3 with Teensy 2.0",
+ "keyboard_name": "evk v1_3",
+ "manufacturer": "Yang Cui",
"url": "https://github.com/YangPiCui/ErgonomicVerticalKeyboard",
"maintainer": "YangPiCui",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/fc200rt_qmk/config.h b/keyboards/handwired/fc200rt_qmk/config.h
index 2eec7f584c..1ac044e8b2 100644
--- a/keyboards/handwired/fc200rt_qmk/config.h
+++ b/keyboards/handwired/fc200rt_qmk/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBEEF
-#define PRODUCT_ID 0xFFFF
-#define DEVICE_VER 0x0001
-#define MANUFACTURER NaCly
-#define PRODUCT fc200rt_qmk
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS { B0, B1, B2, B3, E6, B7, D0, D1 }
#define MATRIX_COL_PINS { D2, D3, C6, C7, D5, D4, D6, D7, B4, B5, B6, F7, F6, F5, F4, F1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/handwired/fc200rt_qmk/info.json b/keyboards/handwired/fc200rt_qmk/info.json
index e6c295831c..261692012e 100644
--- a/keyboards/handwired/fc200rt_qmk/info.json
+++ b/keyboards/handwired/fc200rt_qmk/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "fc200rt_qmk",
+ "manufacturer": "NaCly",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xBEEF",
+ "pid": "0xFFFF",
+ "device_version": "0.0.1"
+ },
"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.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":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":"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/handwired/fivethirteen/config.h b/keyboards/handwired/fivethirteen/config.h
index 6ef436506b..9b5af88e57 100644
--- a/keyboards/handwired/fivethirteen/config.h
+++ b/keyboards/handwired/fivethirteen/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER rdg
-#define PRODUCT fivethirteen
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 13
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F6, F7, B6, B5, B4 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, F0, D0, D1, D2, D3, C6, C7, D6, D7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/fivethirteen/info.json b/keyboards/handwired/fivethirteen/info.json
index e1f429e548..51dd52faa6 100644
--- a/keyboards/handwired/fivethirteen/info.json
+++ b/keyboards/handwired/fivethirteen/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "fivethirteen",
+ "manufacturer": "rdg",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/floorboard/config.h b/keyboards/handwired/floorboard/config.h
index 74be3e4426..2f071df7bd 100644
--- a/keyboards/handwired/floorboard/config.h
+++ b/keyboards/handwired/floorboard/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Kevin Lockwood
-#define PRODUCT Floorboard
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { A2, A1, A0, B8 }
#define MATRIX_COL_PINS { B7, B6, B5, B4, B3, B2, B1, B9, B0, B15, B14, B13 }
-#define UNUSED_PINS { B10, B11, B12, A14, A13, A4, A5, A6, A7, A8, A15, A10, A9 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/floorboard/info.json b/keyboards/handwired/floorboard/info.json
index 6ccff9e60d..2dcc40d1af 100644
--- a/keyboards/handwired/floorboard/info.json
+++ b/keyboards/handwired/floorboard/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Floorboard",
+ "manufacturer": "Kevin Lockwood",
"url": "https://imgur.com/gJLgwQI",
"maintainer": "Kevin Lockwood",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
diff --git a/keyboards/handwired/frankie_macropad/config.h b/keyboards/handwired/frankie_macropad/config.h
index 57e6d7e0dd..883807239b 100644
--- a/keyboards/handwired/frankie_macropad/config.h
+++ b/keyboards/handwired/frankie_macropad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xF00D
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Eric Wood
-#define PRODUCT frankie_macropad
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2 }
#define MATRIX_COL_PINS { B3, B4, B5, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/frankie_macropad/info.json b/keyboards/handwired/frankie_macropad/info.json
index 55d8fcf16f..00a0d17615 100644
--- a/keyboards/handwired/frankie_macropad/info.json
+++ b/keyboards/handwired/frankie_macropad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "frankie_macropad",
+ "manufacturer": "Eric Wood",
"url": "https://github.com/eric-wood/macro-pad",
"maintainer": "eric-wood",
+ "usb": {
+ "vid": "0xF00D",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/frenchdev/config.h b/keyboards/handwired/frenchdev/config.h
index 84f16ea96e..f3d5398270 100644
--- a/keyboards/handwired/frenchdev/config.h
+++ b/keyboards/handwired/frenchdev/config.h
@@ -19,13 +19,6 @@ 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 0x1307
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nicolas Poirey
-#define PRODUCT Frenchdev V1
-
/* key matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 6
diff --git a/keyboards/handwired/frenchdev/info.json b/keyboards/handwired/frenchdev/info.json
index ca29c96e51..48725f37ac 100644
--- a/keyboards/handwired/frenchdev/info.json
+++ b/keyboards/handwired/frenchdev/info.json
@@ -1,5 +1,12 @@
{
+ "keyboard_name": "Frenchdev V1",
+ "manufacturer": "Nicolas Poirey",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1307",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/frenchdev/keymaps/default/keymap.c b/keyboards/handwired/frenchdev/keymaps/default/keymap.c
index 2d917b412e..11463a0162 100644
--- a/keyboards/handwired/frenchdev/keymaps/default/keymap.c
+++ b/keyboards/handwired/frenchdev/keymaps/default/keymap.c
@@ -209,7 +209,7 @@ void press_underscore(void) {
uint8_t old_layer=_BASE;
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
frenchdev_led_1_off();
frenchdev_led_2_off();
diff --git a/keyboards/handwired/freoduo/config.h b/keyboards/handwired/freoduo/config.h
index 3af04f4ea7..e4393a319d 100644
--- a/keyboards/handwired/freoduo/config.h
+++ b/keyboards/handwired/freoduo/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB141
-#define PRODUCT_ID 0x0602 //F is 6th in alphabet, 02 as in DUO
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ParyzFilip
-#define PRODUCT Freoduo
-
/* key matrix size */
/* rows are doubled-up */
#define MATRIX_ROWS 10
diff --git a/keyboards/handwired/freoduo/info.json b/keyboards/handwired/freoduo/info.json
index 2fe8a4a485..de0a04392b 100644
--- a/keyboards/handwired/freoduo/info.json
+++ b/keyboards/handwired/freoduo/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Freoduo",
+"manufacturer": "ParyzFilip",
"url": "https://github.com/FilipParyz",
"maintainer": "https://github.com/FilipParyz",
+"usb": {
+ "vid": "0xB141",
+ "pid": "0x0602",
+ "device_version": "0.0.1"
+},
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/fruity60/config.h b/keyboards/handwired/fruity60/config.h
index 7d63a657ec..b21e752d85 100644
--- a/keyboards/handwired/fruity60/config.h
+++ b/keyboards/handwired/fruity60/config.h
@@ -19,13 +19,6 @@ 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 0xB170
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yanfali
-#define PRODUCT fruity60
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 11
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B6, B5, D7, C6, D0, D1 }
#define MATRIX_COL_PINS \
{ F7, F6, F5, F4, F1, F0, D2, D3, B7, D6, C7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/fruity60/info.json b/keyboards/handwired/fruity60/info.json
index d9b583faaf..40e38795e8 100644
--- a/keyboards/handwired/fruity60/info.json
+++ b/keyboards/handwired/fruity60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "fruity60",
+ "manufacturer": "yanfali",
"url": "https://github.com/yanfali/fruity60",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xB170",
+ "device_version": "0.0.1"
+ },
"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":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}, {"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}, {"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}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Menu", "x":13.5, "y":4, "w":1.5}]
diff --git a/keyboards/handwired/gamenum/config.h b/keyboards/handwired/gamenum/config.h
index 6fba6586da..eb9efef846 100644
--- a/keyboards/handwired/gamenum/config.h
+++ b/keyboards/handwired/gamenum/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1234
-#define PRODUCT_ID 0x5678
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Seth-Senpai
-#define PRODUCT GameNum
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, B2, B3, B1, F7 }
#define MATRIX_COL_PINS { D7, E6, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/handwired/gamenum/info.json b/keyboards/handwired/gamenum/info.json
index d7d87ad202..a2d4bb3ce4 100644
--- a/keyboards/handwired/gamenum/info.json
+++ b/keyboards/handwired/gamenum/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "gamenum",
+ "keyboard_name": "GameNum",
+ "manufacturer": "Seth-Senpai",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x1234",
+ "pid": "0x5678",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/hacked_motospeed/config.h b/keyboards/handwired/hacked_motospeed/config.h
index 062376222f..690e96365c 100644
--- a/keyboards/handwired/hacked_motospeed/config.h
+++ b/keyboards/handwired/hacked_motospeed/config.h
@@ -19,13 +19,6 @@ 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 0x0690
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MMO_Corp
-#define PRODUCT hacked_motospeed
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 12
@@ -46,7 +39,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// ER DR CR BR AR FR FL AL BL CL DL EL
#define MATRIX_COL_PINS { F7, F6, F5, F4, F3, F2, E0, E1, C0, C1, C2, C3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/hacked_motospeed/info.json b/keyboards/handwired/hacked_motospeed/info.json
index d5da5e4578..a0fcd930c3 100644
--- a/keyboards/handwired/hacked_motospeed/info.json
+++ b/keyboards/handwired/hacked_motospeed/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Hacked Motospeed",
+ "manufacturer": "MMO_Corp",
"url": "",
"maintainer": "Deckweiss",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0690",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"ESC", "x":0, "y":0, "h":2}, {"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":"Z", "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, "w":2}, {"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":7, "y":1}, {"label":"J", "x":8, "y":1}, {"label":"K", "x":9, "y":1}, {"label":"L", "x":10, "y":1}, {"label":"(", "x":11, "y":1}, {"label":")", "x":12, "y":1}, {"label":"=", "x":0, "y":2}, {"label":"Y", "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":7, "y":2}, {"label":"M", "x":8, "y":2}, {"label":",", "x":9, "y":2}, {"label":".", "x":10, "y":2}, {"label":"?", "x":11, "y":2}, {"label":"Fn", "x":0, "y":3, "w":2}, {"label":"Num", "x":2, "y":3}, {"label":"Bksp", "x":3, "y":3}, {"label":"Enter", "x":4, "y":3}, {"label":"Spc", "x":5, "y":3}, {"label":"LShift", "x":7, "y":3}, {"label":"LCtrl", "x":8, "y":3}, {"label":"LAlt", "x":9, "y":3}, {"label":"RAlt", "x":10, "y":3}, {"label":"Meta", "x":11, "y":3}, {"label":"Fn", "x":12, "y":2, "h":2}]
diff --git a/keyboards/handwired/heisenberg/config.h b/keyboards/handwired/heisenberg/config.h
index 9438f3a082..84224a4514 100644
--- a/keyboards/handwired/heisenberg/config.h
+++ b/keyboards/handwired/heisenberg/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Ardakilic
-#define PRODUCT Heisenberg
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ D3, D2, D1, D0 }
#define MATRIX_COL_PINS \
{ C6, D7, E6, B4, B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/heisenberg/info.json b/keyboards/handwired/heisenberg/info.json
index 4f08514d2f..9756e8981e 100644
--- a/keyboards/handwired/heisenberg/info.json
+++ b/keyboards/handwired/heisenberg/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Heisenberg",
+ "manufacturer": "Ardakilic",
"url": "https://github.com/Ardakilic",
"maintainer": "Arda Kilicdagi",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_planck_mit": {
"layout": [
diff --git a/keyboards/handwired/heisenberg/keymaps/turkishish/keymap.c b/keyboards/handwired/heisenberg/keymaps/turkishish/keymap.c
index 2581e01bf8..bfce6420af 100644
--- a/keyboards/handwired/heisenberg/keymaps/turkishish/keymap.c
+++ b/keyboards/handwired/heisenberg/keymaps/turkishish/keymap.c
@@ -206,7 +206,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_mit(
- _______, RESET, EEP_RST, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL,
+ _______, QK_BOOT, EEP_RST, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL,
_______, _______, MU_MOD, AU_ON, AU_OFF, _______, _______, _______, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/handwired/hexon38/config.h b/keyboards/handwired/hexon38/config.h
index 6187aa539e..b6529b3ddf 100644
--- a/keyboards/handwired/hexon38/config.h
+++ b/keyboards/handwired/hexon38/config.h
@@ -4,13 +4,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER pepaslabs
-#define PRODUCT hexon38
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -18,7 +11,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, F0, B2, F4 }
#define MATRIX_COL_PINS { C6, D3, D2, D1, D0, B7, F6, F7, B6, B5, B4, D7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/handwired/hexon38/info.json b/keyboards/handwired/hexon38/info.json
index 09127debb7..d993e33a37 100644
--- a/keyboards/handwired/hexon38/info.json
+++ b/keyboards/handwired/hexon38/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "hexon38",
+ "manufacturer": "pepaslabs",
"url": "",
"maintainer": "cellularmitosis",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/hillside/0_1/0_1.c b/keyboards/handwired/hillside/0_1/0_1.c
deleted file mode 100644
index ee096f18a7..0000000000
--- a/keyboards/handwired/hillside/0_1/0_1.c
+++ /dev/null
@@ -1,4 +0,0 @@
-// 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
deleted file mode 100644
index 0aeefdf630..0000000000
--- a/keyboards/handwired/hillside/0_1/0_1.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// 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/info.json b/keyboards/handwired/hillside/0_1/info.json
deleted file mode 100644
index 7e128d5191..0000000000
--- a/keyboards/handwired/hillside/0_1/info.json
+++ /dev/null
@@ -1,109 +0,0 @@
-{
- "manufacturer": "mmccoyd",
- "maintainer": "mmccoyd",
-
- "keyboard_name": "Hillside",
- "url": "http://github.com/mmccoyd/hillside/",
-
- "tags": ["split", "column stagger", "choc v1", "choc spaced" ],
-
- "processor": "atmega32u4",
-
- "matrix_pins": {
- "rows": ["D7", "E6", "B4", "B5"],
- "cols": ["F6", "F7", "B1", "B3", "B2", "B6"]
- },
- "diode_direction": "COL2ROW",
-
- "usb": {
- "vid": "0xFEED",
- "pid": "0x67C0",
- "device_version": "0.0.1"
- },
-
- "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/0_1/keymaps/default/keymap.json b/keyboards/handwired/hillside/0_1/keymaps/default/keymap.json
deleted file mode 100644
index 5c672f8b8b..0000000000
--- a/keyboards/handwired/hillside/0_1/keymaps/default/keymap.json
+++ /dev/null
@@ -1,101 +0,0 @@
-{ "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",
- "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_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_GRV",
- "KC_ESC" , "KC_N" , "KC_M" , "KC_COMM" , "KC_DOT" , "KC_SLSH" , "KC_RSFT",
-
- "KC_LCTL", "KC_LGUI" , "KC_LALT" , "MO(5)" , "MO(3)",
- "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" , "KC_QUOT"
-
- ],
- ["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_CAPS", "KC_A" , "KC_O" , "KC_E" , "KC_U" , "KC_I",
- "KC_D" , "KC_H" , "KC_T" , "KC_N" , "KC_S" , "KC_ENT",
-
- "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_LCTL", "KC_LGUI" , "KC_LALT" , "MO(5)" , "MO(3)",
- "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" , "KC_SLSH"
-
- ],
- ["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_CAPS", "KC_A" , "KC_R" , "KC_S" , "KC_T" , "KC_G",
- "KC_M" , "KC_N" , "KC_E" , "KC_I" , "KC_O" , "KC_ENT",
-
- "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_LCTL", "KC_LGUI" , "KC_LALT" , "MO(5)" , "MO(3)",
- "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI" , "KC_QUOT"
-
- ],
- ["KC_NO" , "KC_INS" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_VOLU",
- "KC_PGUP", "KC_HOME" , "KC_NO" , "KC_END" , "KC_NO" , "KC_DEL",
-
- "KC_NO" , "KC_LGUI" , "KC_LALT" , "KC_LCTL" , "KC_LSFT" , "KC_VOLD",
- "KC_PGDN", "KC_LEFT" , "KC_UP" , "KC_RGHT" , "KC_NO" , "KC_TRNS",
-
- "KC_LSFT", "LCTL(KC_Z)" , "LCTL(KC_X)" , "LCTL(KC_C)", "LCTL(KC_V)" , "LCTL(KC_Y)", "KC_MUTE",
- "KC_ESC" , "OSM(MOD_RALT)", "LCTL(KC_LEFT)", "KC_DOWN" , "LCTL(KC_RGHT)", "KC_APP" , "KC_TRNS",
-
- "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
- "MO(6)" , "KC_BSPC" , "KC_TRNS" , "KC_TRNS" , "KC_RCTL"
-
- ],
- ["KC_F11" , "KC_EXLM" , "KC_AT" , "KC_HASH" , "KC_DLR" , "KC_PERC",
- "KC_CIRC", "KC_AMPR" , "KC_ASTR" , "KC_LPRN" , "KC_RPRN" , "KC_TRNS",
-
- "KC_F12" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5",
- "KC_PIPE", "KC_LSFT" , "KC_LCTL" , "KC_LALT" , "KC_LGUI" , "KC_TRNS",
-
- "KC_LSFT", "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_PSCR",
- "KC_ESC" , "KC_BSLS" , "KC_LBRC" , "KC_RBRC" , "KC_LCBR" , "KC_RCBR" , "KC_TRNS",
-
- "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "MO(6)",
- "KC_TRNS", "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_RCTL"
-
- ],
- ["KC_TAB" , "KC_MINS" , "KC_PLUS" , "KC_EQL" , "KC_SLSH" , "KC_ASTR",
- "KC_COMM", "KC_7" , "KC_8" , "KC_9" , "KC_NO" , "KC_TRNS",
-
- "KC_NO" , "KC_LGUI" , "KC_LALT" , "KC_LCTL" , "KC_LSFT" , "KC_NO",
- "KC_0" , "KC_1" , "KC_2" , "KC_3" , "KC_UNDS" , "KC_TRNS",
-
- "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_RCTL"
-
- ],
- ["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" , "CL_SWAP" , "CL_NORM",
- "RGB_MOD", "RGB_VAI" , "RGB_HUI" , "RGB_SAI" , "KC_NO" , "KC_NO",
-
- "QK_BOOT", "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"
-
- ]
- ],
- "author": "@mmccoyd"
-}
diff --git a/keyboards/handwired/hillside/0_1/keymaps/default/readme.md b/keyboards/handwired/hillside/0_1/keymaps/default/readme.md
deleted file mode 100644
index 1890d5808c..0000000000
--- a/keyboards/handwired/hillside/0_1/keymaps/default/readme.md
+++ /dev/null
@@ -1,212 +0,0 @@
-# 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 |
-| CAPS | A | S | D | F | G |---------------------------| H | J | K | L | ; | ENTER |
-| SHIFT | Z | X | C | V | B | ~ |---------------| ESC | N | M | , | . | / | SHIFT |
---------------|CTRL |-----| GUI | ALT | Num | Nav |---| Sym |SPACE| ALT | GUI |-----| ' |--------------
-```
-
-The base layer provides a very standard key layout:
-
-- Return, Tab, backspace and shift keys in the outer columns.
-- Alt/option and win/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.
-- Esc and `~ are above the thumbs.
-- The Menu and AltGr keys are on a layer.
-
-The default layout is QWERTY with alternatives of Dvorak and Colemak-DH
-and the alt/option and win/command key locations are swappable for windows or mac.
-
-<details>
-<summary>Details of Dvorak and Colemak-DH</summary>
-The Dvorak and Colemak-DH base layers
- have identical non-alpha and non-symbol keys as the QWERTY base layer.
-In the Dvorak layout, the symbol key in the bottom row 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 |
-| CAPS | A | O | E | U | I |---------------------------| D | H | T | N | S | ENTER |
-| SHIFT | ; | Q | J | K | X | ~ |---------------| ESC | B | M | W | V | Z | SHIFT |
---------------|CTRL |-----| GUI | ALT | Num | Nav |---| Sym |SPACE| ALT | GUI |-----| / |--------------
-
-Colemak-DH
-| TAB | Q | W | F | P | B |---------------------------| J | L | U | Y | ; | BKSPC |
-| CAPS | A | R | S | T | G |---------------------------| M | N | E | I | O | ENTER |
-| SHIFT | Z | X | C | D | V | ~ |---------------| ESC | K | H | , | . | / | SHIFT |
---------------|CTRL |-----| GUI | ALT | Num | Nav |---| Sym |SPACE| ALT | GUI |-----| ' |--------------
-```
-</details>
-
-## Navigation, Editing and Media Layer
-
-```
-| | INS | | | |VOL+ |---------------------------|PG_UP|HOME | | END| | DEL |
-| | GUI | ALT |CTRL |SHIFT|VOL- |---------------------------|PG_DN|LEFT | UP |RIGHT| | ENTER |
-| SHIFT |UNDO | CUT |COPY |PASTE|REDO |MUTE |---------------| ESC |RALT |WORDL|DOWN |WORDR|MENU | SHIFT |
---------------|CTRL |-----| GUI | ALT | Num | *** |---| Adj |BSPC | ALT | GUI |-----|CTRL |--------------
-```
-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.
-- Menu and AltGr keys fill out the layer.
-- A few keys do nothing and are available for more user-specific needs.
-
-## Symbol and Function Layer
-
-```
-| F11 | ! | @ | # | $ | % |---------------------------| ^ | & | * | ( | ) | BSPC |
-| F12 | F1 | F2 | F3 | F4 | F5 |---------------------------| | |SHIFT|CTRL | ALT | GUI | ENTER |
-| SHIFT | F6 | F7 | F8 | F9 | F10 |PRTSC|---------------| ESC | \ | [ | ] | { | } | SHIFT |
---------------|CTRL |-----| GUI | ALT | Num | Adj |---| *** |SPACE| ALT | GUI |-----|CTRL |--------------
-```
-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.
-- Several more 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
-```
-| TAB | - | + | = | / | * |---------------------------| . | 7 | 8 | 9 | | BSPC |
-| | GUI | ALT |CTRL |SHIFT| |---------------------------| 0 | 1 | 2 | 3 | _ | ENTER |
-| SHIFT | | | | | | |---------------| ESC | , | 4 | 5 | 6 | | SHIFT |
---------------|CTRL |-----| GUI | ALT | *** | |---| |BSPC | ALT | GUI |-----|CTRL |--------------
-```
-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|-----------------------| | | | | | |
-| | | | |CTR_S|CTR_N|---------------------------|MOD+ |BRI+ |HUE+ |SAT+ | | |
-| QK_BOOT | | | | | | |--------------|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/0_1/keymaps/json2hill.py --input <Your download directory>/default.json > ./keyboards/handwired/hillside/0_1/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/0_1/keymaps/json2hill.py b/keyboards/handwired/hillside/0_1/keymaps/json2hill.py
deleted file mode 100755
index a9971c0d78..0000000000
--- a/keyboards/handwired/hillside/0_1/keymaps/json2hill.py
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/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/0_1/keymaps/via/keymap.json b/keyboards/handwired/hillside/0_1/keymaps/via/keymap.json
deleted file mode 100644
index a015f0241c..0000000000
--- a/keyboards/handwired/hillside/0_1/keymaps/via/keymap.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{ "version": 1,
- "notes": "",
- "keyboard": "handwired/hillside/0_1",
- "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_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_GRV",
- "KC_ESC" , "KC_N" , "KC_M" , "KC_COMM", "KC_DOT" , "KC_SLSH", "KC_RSFT",
-
- "KC_LCTL" , "KC_LGUI", "KC_LALT", "MO(3)" , "MO(1)",
- "MO(2)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_QUOT"
-
- ],
- ["KC_NO" , "KC_INS" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_VOLU",
- "KC_PGUP" , "KC_HOME", "KC_NO" , "KC_END" , "KC_NO" , "KC_DEL",
-
- "KC_NO" , "KC_LGUI", "KC_LALT", "KC_LCTL", "KC_LSFT", "KC_VOLD",
- "KC_PGDN" , "KC_LEFT", "KC_UP" , "KC_RGHT", "KC_NO" , "KC_TRNS",
-
- "KC_LSFT" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_MUTE",
- "KC_ESC" , "KC_CAPS", "KC_NO" , "KC_DOWN", "KC_NO" , "KC_APP" , "KC_TRNS",
-
- "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
- "KC_TRNS" , "KC_BSPC", "KC_TRNS", "KC_TRNS", "KC_RCTL"
-
- ],
- ["KC_F11" , "KC_EXLM", "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC",
- "KC_CIRC" , "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "KC_TRNS",
-
- "KC_F12" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5",
- "KC_PIPE" , "KC_LSFT", "KC_LCTL", "KC_LALT", "KC_LGUI", "KC_TRNS",
-
- "KC_LSFT" , "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_PSCR",
- "KC_ESC" , "KC_BSLS", "KC_LBRC", "KC_RBRC", "KC_LCBR", "KC_RCBR", "KC_TRNS",
-
- "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
- "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_RCTL"
-
- ],
- ["KC_TAB" , "KC_MINS", "KC_PLUS", "KC_EQL" , "KC_SLSH", "KC_ASTR",
- "KC_COMM" , "KC_7" , "KC_8" , "KC_9" , "KC_NO" , "KC_TRNS",
-
- "ANY(RGB_TOG)", "KC_LGUI", "KC_LALT", "KC_LCTL", "KC_LSFT", "KC_NO",
- "KC_0" , "KC_1" , "KC_2" , "KC_3" , "KC_UNDS", "KC_TRNS",
-
- "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_RCTL"
-
- ]
- ],
- "author": "@mmccoyd"
-}
diff --git a/keyboards/handwired/hillside/0_1/readme.md b/keyboards/handwired/hillside/0_1/readme.md
deleted file mode 100644
index f1ff0f8506..0000000000
--- a/keyboards/handwired/hillside/0_1/readme.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# 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/hillside/46/46.c b/keyboards/handwired/hillside/46/46.c
new file mode 100644
index 0000000000..9a3bd3abc8
--- /dev/null
+++ b/keyboards/handwired/hillside/46/46.c
@@ -0,0 +1,19 @@
+// Copyright 2022 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "46.h"
+
+// Keymatrix spots to ignore, as one signals handedness and others have no key
+const matrix_row_t matrix_mask[] = {
+//c:543210 column id's
+ 0b111111,
+ 0b111111,
+ 0b111111,
+ 0b111110,
+
+//c:543210
+ 0b111111,
+ 0b111111,
+ 0b111111,
+ 0b111110
+};
diff --git a/keyboards/handwired/hillside/46/46.h b/keyboards/handwired/hillside/46/46.h
new file mode 100644
index 0000000000..880b244237
--- /dev/null
+++ b/keyboards/handwired/hillside/46/46.h
@@ -0,0 +1,37 @@
+// Copyright 2022 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a mapping so keymap files can be more readable to humans.
+ *
+ * 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.
+ *
+ * The identifiers could be anything, but for human sanity have the folowing form
+ * <Left or Right><Physical or thumb row><Circuit column counting from outer pinky>
+ */
+
+// clang-format off
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, R05, R04, R03, R02, R01, R00, \
+ L10, L11, L12, L13, L14, L15, R15, R14, R13, R12, R11, R10, \
+ L20, L21, L22, L23, L24, L25, LT5, RT5, R25, R24, R23, R22, R21, R20, \
+ LT1, LT2, LT3, LT4, RT4, RT3, RT2, RT1 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { KC_NO, LT1, LT2, LT3, LT4, LT5 }, \
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { KC_NO, RT1, RT2, RT3, RT4, RT5 } \
+ }
+// clang-format on
diff --git a/keyboards/handwired/hillside/46/config.h b/keyboards/handwired/hillside/46/config.h
new file mode 100644
index 0000000000..5cad8e3d5a
--- /dev/null
+++ b/keyboards/handwired/hillside/46/config.h
@@ -0,0 +1,39 @@
+// Copyright 2022 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
+
+/* Split */
+#define SPLIT_HAND_MATRIX_GRID B5, F6
+#define MATRIX_MASKED
+
+/* 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/46/info.json b/keyboards/handwired/hillside/46/info.json
new file mode 100644
index 0000000000..b21906818c
--- /dev/null
+++ b/keyboards/handwired/hillside/46/info.json
@@ -0,0 +1,105 @@
+{
+ "manufacturer": "mmccoyd",
+ "maintainer": "mmccoyd",
+
+ "keyboard_name": "Hillside 46",
+ "url": "http://github.com/mmccoyd/hillside/",
+
+ "tags": ["split", "column stagger", "choc v1", "choc spaced" ],
+
+ "processor": "atmega32u4",
+
+ "matrix_pins": {
+ "rows": ["C6", "D7", "E6", "B5"],
+ "cols": ["F6", "F7", "B1", "B3", "B2", "B6"]
+ },
+ "diode_direction": "COL2ROW",
+
+ "usb": {
+ "vid": "0x4D4D",
+ "pid": "0x4846",
+ "device_version": "0.0.1"
+ },
+
+ "features": {
+ "encoder": true,
+ "extrakey": true,
+ "rgblight": true
+ },
+ "split": {
+ "soft_serial_pin": "D2"
+ },
+
+ "rgblight": {
+ "led_count": 4,
+ "pin": "D3",
+ "split": true,
+ "hue_steps": 8,
+ "saturation_steps": 8,
+ "brightness_steps": 8
+ },
+
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+
+ {"label": "`~", "x": 0, "y": 1.13},
+ {"label": "Q", "x": 1, "y": 0.93},
+ {"label": "W", "x": 2.1, "y": 0.31},
+ {"label": "E", "x": 3.2, "y": 0},
+ {"label": "R", "x": 4.2, "y": 0.28},
+ {"label": "T", "x": 5.2, "y": 0.42},
+
+ {"label": "Y", "x": 9.7, "y": 0.42},
+ {"label": "U", "x": 10.7, "y": 0.28},
+ {"label": "I", "x": 11.7, "y": 0},
+ {"label": "O", "x": 12.8, "y": 0.31},
+ {"label": "P", "x": 13.9, "y": 0.93},
+ {"label": "Backspace", "x": 14.9, "y": 1.13},
+
+
+ {"label": "Tab", "x": 0.1, "y": 2.13},
+ {"label": "A", "x": 1.1, "y": 1.93},
+ {"label": "S", "x": 2.15, "y": 1.31},
+ {"label": "D", "x": 3.2, "y": 1},
+ {"label": "F", "x": 4.2, "y": 1.28},
+ {"label": "G", "x": 5.2, "y": 1.42},
+
+ {"label": "H", "x": 9.7, "y": 1.42},
+ {"label": "J", "x": 10.7, "y": 1.28},
+ {"label": "K", "x": 11.7, "y": 1},
+ {"label": "L", "x": 12.75, "y": 1.31},
+ {"label": ";", "x": 13.8, "y": 1.93},
+ {"label": "Enter", "x": 14.8, "y": 2.13},
+
+
+ {"label": "Ctrl", "x": 0.2, "y": 3.13},
+ {"label": "Z", "x": 1.2, "y": 2.93},
+ {"label": "X", "x": 2.2, "y": 2.31},
+ {"label": "C", "x": 3.2, "y": 2},
+ {"label": "V", "x": 4.2, "y": 2.28},
+ {"label": "B", "x": 5.2, "y": 2.42},
+ {"label": "ESC", "x": 6.2, "y": 2.88},
+
+ {"label": "CAP", "x": 8.7, "y": 2.88},
+ {"label": "N", "x": 9.7, "y": 2.42},
+ {"label": "M", "x": 10.7, "y": 2.28},
+ {"label": ",", "x": 11.7, "y": 2},
+ {"label": ".", "x": 12.7, "y": 2.31},
+ {"label": "/", "x": 13.7, "y": 2.93},
+ {"label": "'", "x": 14.7, "y": 3.13},
+
+
+ {"label": "Gui", "x": 3.7, "y": 3.28},
+ {"label": "Alt", "x": 4.7, "y": 3.42},
+ {"label": "Shift", "x": 5.7, "y": 3.88},
+ {"label": "Nav", "x": 6.7, "y": 4.44},
+
+ {"label": "Sym", "x": 8.2, "y": 4.44},
+ {"label": "Space", "x": 9.2, "y": 3.88},
+ {"label": "Alt", "x": 10.2, "y": 3.42},
+ {"label": "Gui", "x": 11.2, "y": 3.28}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/hillside/46/keymaps/default/config.h b/keyboards/handwired/hillside/46/keymaps/default/config.h
new file mode 100644
index 0000000000..d209c914bf
--- /dev/null
+++ b/keyboards/handwired/hillside/46/keymaps/default/config.h
@@ -0,0 +1,9 @@
+// Copyright 2022 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Some boards have issues detecting handedness using the vbus voltage.
+// Such as Elite-C v3, but not v3.1 on. Also apparently some ProMicro boards.
+// For those boands, use usb detection instead.
+// #define SPLIT_USB_DETECT
diff --git a/keyboards/handwired/hillside/46/keymaps/default/keymap.json b/keyboards/handwired/hillside/46/keymaps/default/keymap.json
new file mode 100644
index 0000000000..9e5e8eec6f
--- /dev/null
+++ b/keyboards/handwired/hillside/46/keymaps/default/keymap.json
@@ -0,0 +1,88 @@
+{ "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/46",
+ "keymap": "default",
+ "layout": "LAYOUT",
+ "layers": [
+ ["KC_GRV" , "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_LCTL" , "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "KC_ESC",
+ "ANY(CAPSWRD)", "KC_N" , "KC_M" , "KC_COMM", "KC_DOT" , "KC_SLSH" , "KC_QUOT",
+
+ "KC_LGUI" , "KC_LALT" , "OSM(MOD_LSFT)", "MO(3)",
+ "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI"
+
+ ],
+ ["KC_GRV" , "KC_QUOT" , "KC_COMM" , "KC_DOT" , "KC_P" , "KC_Y",
+ "KC_F" , "KC_G" , "KC_C" , "KC_R" , "KC_L" , "KC_BSPC",
+
+ "KC_TAB" , "KC_A" , "KC_O" , "KC_E" , "KC_U" , "KC_I",
+ "KC_D" , "KC_H" , "KC_T" , "KC_N" , "KC_S" , "KC_ENT",
+
+ "KC_LCTL" , "KC_SCLN" , "KC_Q" , "KC_J" , "KC_K" , "KC_X" , "KC_ESC",
+ "ANY(CAPSWRD)", "KC_B" , "KC_M" , "KC_W" , "KC_V" , "KC_Z" , "KC_SLSH",
+
+ "KC_LGUI" , "KC_LALT" , "OSM(MOD_LSFT)", "MO(3)",
+ "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI"
+
+ ],
+ ["KC_GRV" , "KC_Q" , "KC_W" , "KC_F" , "KC_P" , "KC_B",
+ "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_M" , "KC_N" , "KC_E" , "KC_I" , "KC_O" , "KC_ENT",
+
+ "KC_LCTL" , "KC_Z" , "KC_TRNS" , "KC_C" , "KC_D" , "KC_V" , "KC_ESC",
+ "ANY(CAPSWRD)", "KC_K" , "KC_H" , "KC_COMM", "KC_DOT" , "KC_SLSH" , "KC_QUOT",
+
+ "KC_LGUI" , "KC_LALT" , "OSM(MOD_LSFT)", "MO(3)",
+ "MO(4)" , "KC_SPC" , "KC_LALT" , "KC_RGUI"
+
+ ],
+ ["LCTL(KC_C)" , "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5",
+ "KC_6" , "KC_7" , "KC_8" , "KC_9" , "KC_0" , "KC_TRNS",
+
+ "LCTL(KC_X)" , "KC_LGUI" , "KC_LALT" , "KC_LCTL", "KC_LSFT", "LCTL(KC_V)",
+ "KC_PGUP" , "KC_LEFT" , "KC_UP" , "KC_DOWN", "KC_RGHT", "KC_PGDN",
+
+ "KC_TRNS" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , "LCTL(KC_Z)",
+ "LCTL(KC_Y)" , "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_RCTL",
+
+ "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
+ "MO(5)" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS"
+
+ ],
+ ["KC_INS" , "KC_EXLM" , "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC",
+ "KC_CIRC" , "KC_AMPR" , "KC_ASTR" , "KC_LPRN", "KC_RPRN", "KC_DEL",
+
+ "KC_NO" , "KC_BSLS" , "KC_MINS" , "KC_EQL" , "KC_LBRC", "KC_RBRC",
+ "KC_HOME" , "KC_RSFT" , "KC_RCTL" , "KC_LALT", "KC_RGUI", "KC_END",
+
+ "KC_TRNS" , "KC_PIPE" , "KC_UNDS" , "KC_PLUS", "KC_LCBR", "KC_RCBR" , "OSM(MOD_RALT)",
+ "KC_APP" , "KC_MUTE" , "KC_VOLD" , "KC_VOLU", "KC_MPLY", "KC_NO" , "KC_RCTL",
+
+ "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "MO(5)",
+ "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS"
+
+ ],
+ ["KC_NO" , "DF(0)" , "DF(1)" , "DF(2)" , "AG_SWAP", "CG_SWAP",
+ "KC_NO" , "KC_F11" , "KC_F12" , "KC_PSCR", "KC_NO" , "EE_CLR",
+
+ "KC_NO" , "KC_NO" , "KC_BRID" , "KC_BRIU", "AG_NORM", "CG_NORM",
+ "RGB_MOD" , "RGB_VAI" , "RGB_HUI" , "RGB_SAI", "KC_NO" , "KC_NO",
+
+ "KC_NO" , "KC_LGUI" , "KC_LALT" , "KC_LCTL", "KC_LSFT", "KC_NO" , "KC_NO",
+ "RGB_TOG" , "RGB_RMOD", "RGB_VAD" , "RGB_HUD", "RGB_SAD", "KC_NO" , "QK_BOOT",
+
+ "KC_NO" , "KC_NO" , "KC_NO" , "KC_TRNS",
+ "KC_TRNS" , "KC_NO" , "KC_NO" , "KC_NO"
+
+ ]
+ ],
+ "author": "@mmccoyd"
+}
diff --git a/keyboards/handwired/hillside/46/keymaps/default/readme.md b/keyboards/handwired/hillside/46/keymaps/default/readme.md
new file mode 100644
index 0000000000..aacdc92aad
--- /dev/null
+++ b/keyboards/handwired/hillside/46/keymaps/default/readme.md
@@ -0,0 +1,136 @@
+# Hillside 46 Default Keymap
+
+For easier initial use, this keymap follows the layout of more standard keyboards where possible. It is a starting point for you to tweak over time to suit your preferences better. You can easily customize it with the [QMK configurator](https://config.qmk.fm/#/handwired/hillside/46/LAYOUT).
+
+Some of its key features are:
+
+- Numbers and symbols along the top row of their layers for familiarity.
+- Comfortable modifier and function or symbol combinations on the non-base layers using modifiers on the home row of the symbol and number/function layers.
+- A layer with both navigation and editing keys allows document editing without leaving the layer.
+- QWERTY, Colemak-DH and Dvorak base layer options.
+
+## Base Layer
+
+
+![Base QWERTY layer](https://imgur.com/C2kxwOuh.png)
+
+The base layer provides a very standard key layout with four differences:
+
+- Numbers, functions and most symbols are accessed with number and symbol shift keys.
+- Escape is on the upper left thumb.
+- The left thumb has a shift key that affects the next key pressed. So to get 'A', press and release the thumb shift key, press 'a'. You can also hold the key down, and it will work like a standard shift key.
+- Caps word toggles a mode that capitalizes all letters until something other than a letter, digit, dash, underscore, delete or backspace is typed. The mode also times out five seconds after the last key press.
+- The Menu and AltGr keys are on a layer.
+
+The default layout is QWERTY with alternatives of Dvorak and Colemak-DH, and the alt/option and win/command key locations are swappable for windows or mac.
+
+<details>
+<summary>Details of Dvorak and Colemak-DH</summary>
+The Dvorak and Colemak-DH base layers have identical non-alpha and non-symbol keys as the QWERTY base layer.
+![Base Dvorak layer](https://imgur.com/5gGk2rOh.png)
+![Base Colemak layer](https://imgur.com/xExBB8eh.png)
+</details>
+
+
+## Navigation, Editing, Number and Function Layer
+
+![Navigation layer](https://imgur.com/Obx6oRTh.png)
+
+Holding down the Nav/Edit key accesses the navigation, editing, number and function layer:
+
+- Numbers are along the top row, and function keys are on the bottom.
+- The arrow keys on the right can be combined with the home row modifiers on the left to easily move around and select text, which can then be cut, copied and pasted.
+
+
+## Symbol and Media Layer
+
+![Symbol layer](https://imgur.com/mzcB2JFh.png)
+
+Holding down the SYM key accesses the symbol layer:
+
+- The symbols not present on the base layer are along the top row and left side, arranged similarly to a large keyboard.
+- Duplicates of the modifier keys are along the right home keys. This positioning allows a very comfortable combination of any set of modifiers plus a key on the left side of the board.
+- Forward delete is on the upper right, taking backspace's place.
+- The Window OS application menu key is on the right upper thumb.
+- The AltGr key affects the next key pressed so that it can combine with a key on any layer. It changes the meaning of the next key pressed after the AltGr key is pressed and released. For example, to do AltGr-h: press SYM, press and release AltGr, release SYM, press and release h.
+
+
+## Adjust Layer
+
+![Adjust layer](https://imgur.com/r3Ip7hxh.png)
+
+Simultaneously holding down the Sym and Nav/Edit keys enables keys to adjust keyboard settings:
+
+- The base layer can be set to QWERTY, Colemak-DH or Dvorak, although 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.
+- The backlight LEDs can be enabled, disabled, and controlled.
+- BOOT allows loading new firmware, such as for keymap changes.
+
+## Make it Yours
+
+If you are coming from a traditional keyboard,
+ with 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.
+
+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.
+
+Some changes you might consider making:
+
+- If you are on a mac, switch the editing keys from ctrl-x to cmd-x.
+- Put some of your most-used key combinations on the unused keys
+ on the symbol layer.
+- 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 layer,
+ you could make it a layer toggle.
+
+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.
+
+## Why no keymap.c
+
+The online configurator provides a straightforward visual way
+ to work with a simple layout and uses a .json keymap format.
+So this default ```keymap.json``` was created with the online configurator.
+
+If you wish, you can edit the ```keymap.json``` directly in a text editor, compile it 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/46/LAYOUT)
+- Using the green up arrow button, load the keymap from ```qmk_firmware/keyboards/handwired/hillside/46/keymaps/default/keymap.json```
+- Make the changes you wish to the layout
+- Save the keymap using the green down arrow button.
+- Move the downloaded keymap back into your QMK repository
+ at the same location as above.
+- Rename it back to keymap.json
+- Compile and flash the firmware.
+
+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).
+
+
+### Pretty Printing
+
+The QMK configurator's .json download has only one key per line,
+so it is hard to visualize the keymap if editing manually.
+If you want, the Hillside git repo has a pretty-printing script for the keymap.json file.
+
+As with anything downloaded from the internet, you should take some steps to assure yourself that the script will not harm your computer nor steal your data. The script is short, so reading it should at least convince you it is rearranging and printing the keymap feed to it, not reading any banking data on your computer.
+See the [Hillside wiki](https://github.com/mmccoyd/hillside/wiki) for the script.
+
diff --git a/keyboards/handwired/hillside/46/keymaps/default/rules.mk b/keyboards/handwired/hillside/46/keymaps/default/rules.mk
new file mode 100644
index 0000000000..4711d2ff74
--- /dev/null
+++ b/keyboards/handwired/hillside/46/keymaps/default/rules.mk
@@ -0,0 +1 @@
+CAPS_WORD_ENABLE = yes
diff --git a/keyboards/handwired/hillside/46/keymaps/default_dot_c/config.h b/keyboards/handwired/hillside/46/keymaps/default_dot_c/config.h
new file mode 100644
index 0000000000..d209c914bf
--- /dev/null
+++ b/keyboards/handwired/hillside/46/keymaps/default_dot_c/config.h
@@ -0,0 +1,9 @@
+// Copyright 2022 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Some boards have issues detecting handedness using the vbus voltage.
+// Such as Elite-C v3, but not v3.1 on. Also apparently some ProMicro boards.
+// For those boands, use usb detection instead.
+// #define SPLIT_USB_DETECT
diff --git a/keyboards/handwired/hillside/46/keymaps/default_dot_c/keymap.c b/keyboards/handwired/hillside/46/keymaps/default_dot_c/keymap.c
new file mode 100644
index 0000000000..ca58cdeef5
--- /dev/null
+++ b/keyboards/handwired/hillside/46/keymaps/default_dot_c/keymap.c
@@ -0,0 +1,64 @@
+// Copyright 2022 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY = 0,
+ _NAV,
+ _SYM,
+ _ADJUST,
+};
+
+#define xxxxxxx KC_NO
+
+#define LY_NAV MO(_NAV)
+#define LY_SYM MO(_SYM)
+#define LY_ADJ MO(_ADJUST)
+#define ALT_GR OSM(MOD_RALT)
+#define OSM_SFT OSM(MOD_LSFT)
+#define PLY_PAU KC_MEDIA_PLAY_PAUSE
+
+#define UNDO LCTL(KC_Z)
+#define CUT LCTL(KC_X)
+#define COPY LCTL(KC_C)
+#define PASTE LCTL(KC_V)
+#define REDO LCTL(KC_Y)
+// (For OS X, you'll want to change these editing keys to LGUI(KC_Z) etc.)
+
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_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,
+ 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_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ESC, CAPSWRD, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
+ KC_LGUI, KC_LALT, OSM_SFT, LY_NAV , LY_SYM , KC_SPC , KC_LALT, KC_RGUI
+ ),
+ [_NAV] = LAYOUT(
+ COPY , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______,
+ CUT , KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, PASTE , KC_PGUP, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, KC_PGDN,
+ _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , UNDO , REDO , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_RCTL,
+ _______, _______, _______, _______, LY_ADJ , _______, _______, _______
+ ),
+ [_SYM] = LAYOUT(
+ KC_INS, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ xxxxxxx, KC_BSLS, KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, KC_HOME, KC_RSFT, KC_RCTL, KC_LALT, KC_RGUI, KC_END,
+ _______, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, ALT_GR , KC_APP , KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, xxxxxxx, KC_RCTL,
+ _______, _______, _______, LY_ADJ , _______, _______, _______, _______
+ ),
+ [_ADJUST] = LAYOUT(
+ xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, AG_SWAP, CG_SWAP, xxxxxxx, KC_F11 , KC_F12 , KC_PSCR, xxxxxxx, EE_CLR,
+ xxxxxxx, xxxxxxx, KC_BRID, KC_BRIU, AG_NORM, CG_NORM, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, xxxxxxx, xxxxxxx,
+ xxxxxxx, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, xxxxxxx, xxxxxxx, RGB_TOG, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, xxxxxxx, QK_BOOT,
+ xxxxxxx, xxxxxxx, xxxxxxx, _______, _______, xxxxxxx, xxxxxxx, xxxxxxx
+ ),
+};
+
+// Template:
+// [_INDEX] = LAYOUT(
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______
+// ),
diff --git a/keyboards/handwired/hillside/46/keymaps/default_dot_c/readme.md b/keyboards/handwired/hillside/46/keymaps/default_dot_c/readme.md
new file mode 100644
index 0000000000..564691d611
--- /dev/null
+++ b/keyboards/handwired/hillside/46/keymaps/default_dot_c/readme.md
@@ -0,0 +1,25 @@
+# Default Hillside 46 Layout (in .c format)
+
+This layout is for those who prefer defining their layout in a keymap.c,
+ instead of graphically with a keymap.json.
+It is the same as the [default keymap.json layout](https://github.com/qmk/qmk_firmware/blob/master/keyboards/handwired/hillside/46/keymaps/default),
+ except for having only a QWERTY base layer.
+
+The make and flash commands are
+
+```
+make handwired/hillside/46:default_dot_c
+make handwired/hillside/46:default_doc_c:flash
+
+```
+
+It also serves as a simple, clean layout
+ to verify that the configuration and switches work.
+Use the [QMK Configurator Tester](https://config.qmk.fm/#/test)
+ to see that the switches produce output.
+All the keys should register on the layout tester
+ except for the caps word and the two layer keys.
+The LEDs should glow a nice red.
+If they do not, you may need to clear the persistent EEPROM settings with the
+ EE_CLR key on the adjust layer,
+ or enable them with the RGB_TOG key.
diff --git a/keyboards/handwired/hillside/46/keymaps/default_dot_c/rules.mk b/keyboards/handwired/hillside/46/keymaps/default_dot_c/rules.mk
new file mode 100644
index 0000000000..4711d2ff74
--- /dev/null
+++ b/keyboards/handwired/hillside/46/keymaps/default_dot_c/rules.mk
@@ -0,0 +1 @@
+CAPS_WORD_ENABLE = yes
diff --git a/keyboards/handwired/hillside/46/keymaps/manna-harbour_miryoku/config.h b/keyboards/handwired/hillside/46/keymaps/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..fa808ef681
--- /dev/null
+++ b/keyboards/handwired/hillside/46/keymaps/manna-harbour_miryoku/config.h
@@ -0,0 +1,38 @@
+// Copyright 2022 Davide Masserut (@mssdvd)
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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
+
+// clang-format off
+#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS
+#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, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
+ XXX, K32, K33, K34, K35, K36, K37, XXX \
+)
+#else
+#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, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
+ K32, K33, K34, XXX, XXX, K35, K36, K37 \
+)
+#endif
diff --git a/keyboards/handwired/hillside/46/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/handwired/hillside/46/keymaps/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..dbab7f9820
--- /dev/null
+++ b/keyboards/handwired/hillside/46/keymaps/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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/hillside/46/keymaps/via/keymap.c b/keyboards/handwired/hillside/46/keymaps/via/keymap.c
new file mode 100644
index 0000000000..ca58cdeef5
--- /dev/null
+++ b/keyboards/handwired/hillside/46/keymaps/via/keymap.c
@@ -0,0 +1,64 @@
+// Copyright 2022 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY = 0,
+ _NAV,
+ _SYM,
+ _ADJUST,
+};
+
+#define xxxxxxx KC_NO
+
+#define LY_NAV MO(_NAV)
+#define LY_SYM MO(_SYM)
+#define LY_ADJ MO(_ADJUST)
+#define ALT_GR OSM(MOD_RALT)
+#define OSM_SFT OSM(MOD_LSFT)
+#define PLY_PAU KC_MEDIA_PLAY_PAUSE
+
+#define UNDO LCTL(KC_Z)
+#define CUT LCTL(KC_X)
+#define COPY LCTL(KC_C)
+#define PASTE LCTL(KC_V)
+#define REDO LCTL(KC_Y)
+// (For OS X, you'll want to change these editing keys to LGUI(KC_Z) etc.)
+
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_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,
+ 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_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_ESC, CAPSWRD, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
+ KC_LGUI, KC_LALT, OSM_SFT, LY_NAV , LY_SYM , KC_SPC , KC_LALT, KC_RGUI
+ ),
+ [_NAV] = LAYOUT(
+ COPY , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______,
+ CUT , KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, PASTE , KC_PGUP, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, KC_PGDN,
+ _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , UNDO , REDO , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_RCTL,
+ _______, _______, _______, _______, LY_ADJ , _______, _______, _______
+ ),
+ [_SYM] = LAYOUT(
+ KC_INS, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ xxxxxxx, KC_BSLS, KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, KC_HOME, KC_RSFT, KC_RCTL, KC_LALT, KC_RGUI, KC_END,
+ _______, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, ALT_GR , KC_APP , KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, xxxxxxx, KC_RCTL,
+ _______, _______, _______, LY_ADJ , _______, _______, _______, _______
+ ),
+ [_ADJUST] = LAYOUT(
+ xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, AG_SWAP, CG_SWAP, xxxxxxx, KC_F11 , KC_F12 , KC_PSCR, xxxxxxx, EE_CLR,
+ xxxxxxx, xxxxxxx, KC_BRID, KC_BRIU, AG_NORM, CG_NORM, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, xxxxxxx, xxxxxxx,
+ xxxxxxx, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, xxxxxxx, xxxxxxx, RGB_TOG, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, xxxxxxx, QK_BOOT,
+ xxxxxxx, xxxxxxx, xxxxxxx, _______, _______, xxxxxxx, xxxxxxx, xxxxxxx
+ ),
+};
+
+// Template:
+// [_INDEX] = LAYOUT(
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______
+// ),
diff --git a/keyboards/handwired/hillside/46/keymaps/via/rules.mk b/keyboards/handwired/hillside/46/keymaps/via/rules.mk
new file mode 100644
index 0000000000..fcd5f229ea
--- /dev/null
+++ b/keyboards/handwired/hillside/46/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+CAPS_WORD_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/handwired/hillside/46/readme.md b/keyboards/handwired/hillside/46/readme.md
new file mode 100644
index 0000000000..f1c9483cab
--- /dev/null
+++ b/keyboards/handwired/hillside/46/readme.md
@@ -0,0 +1,29 @@
+# Hillside 46
+
+![hillside](https://imgur.com/VFA9E4Yh.png)
+
+[Hillside 46](https://github.com/mmccoyd/hillside)
+ is a split ergonomic keyboard with 3x6+5 choc-spaced keys,
+ splayed ring and pinkie columns, aggressive column stagger,
+ a longer thumb arc and a breakoff outer-pinkie 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/46:default
+
+Flashing example for this keyboard:
+
+ make handwired/hillside/46: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 `QK_BOOT` 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/hillside/0_1/rules.mk b/keyboards/handwired/hillside/46/rules.mk
index 2501147ea8..2501147ea8 100644
--- a/keyboards/handwired/hillside/0_1/rules.mk
+++ b/keyboards/handwired/hillside/46/rules.mk
diff --git a/keyboards/handwired/hillside/48/48.c b/keyboards/handwired/hillside/48/48.c
new file mode 100644
index 0000000000..a1d2c2f6e4
--- /dev/null
+++ b/keyboards/handwired/hillside/48/48.c
@@ -0,0 +1,4 @@
+// Copyright 2022 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "48.h"
diff --git a/keyboards/handwired/hillside/48/48.h b/keyboards/handwired/hillside/48/48.h
new file mode 100644
index 0000000000..65e1aaee30
--- /dev/null
+++ b/keyboards/handwired/hillside/48/48.h
@@ -0,0 +1,34 @@
+// Copyright 2022 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/48/config.h
index c83b23d0e8..c83b23d0e8 100644
--- a/keyboards/handwired/hillside/0_1/config.h
+++ b/keyboards/handwired/hillside/48/config.h
diff --git a/keyboards/handwired/hillside/48/info.json b/keyboards/handwired/hillside/48/info.json
new file mode 100644
index 0000000000..2325c2d8d3
--- /dev/null
+++ b/keyboards/handwired/hillside/48/info.json
@@ -0,0 +1,109 @@
+{
+ "manufacturer": "mmccoyd",
+ "maintainer": "mmccoyd",
+
+ "keyboard_name": "Hillside48",
+ "url": "http://github.com/mmccoyd/hillside/",
+
+ "tags": ["split", "column stagger", "choc v1", "choc spaced" ],
+
+ "processor": "atmega32u4",
+
+ "matrix_pins": {
+ "rows": ["D7", "E6", "B4", "B5"],
+ "cols": ["F6", "F7", "B1", "B3", "B2", "B6"]
+ },
+ "diode_direction": "COL2ROW",
+
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x67C0",
+ "device_version": "0.0.1"
+ },
+
+ "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": "`", "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": "Tab", "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": "Enter", "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": "Esc", "x": 6, "y": 2.78},
+
+ {"label": "Caps", "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": "Ctrl", "x": 2, "y": 3.31},
+ {"label": "Gui", "x": 3.5, "y": 3.28},
+ {"label": "Alt", "x": 4.5, "y": 3.42},
+ {"label": "Sym", "x": 5.5, "y": 3.78},
+ {"label": "Shift", "x": 6.5, "y": 4.14},
+
+
+ {"label": "Nav", "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": "'", "x": 12.5, "y": 3.31}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/hillside/48/keymaps/default/config.h b/keyboards/handwired/hillside/48/keymaps/default/config.h
new file mode 100644
index 0000000000..1f71d42e67
--- /dev/null
+++ b/keyboards/handwired/hillside/48/keymaps/default/config.h
@@ -0,0 +1,9 @@
+// Copyright 2022 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Some boards have issues detecting handedness using the vbus voltage,
+// such as Elite-C v3, but not v3.1 on, and apparently some ProMicro boards.
+// For those boards, use usb detection instead.
+// #define SPLIT_USB_DETECT
diff --git a/keyboards/handwired/hillside/48/keymaps/default/keymap.json b/keyboards/handwired/hillside/48/keymaps/default/keymap.json
new file mode 100644
index 0000000000..364ab726a0
--- /dev/null
+++ b/keyboards/handwired/hillside/48/keymaps/default/keymap.json
@@ -0,0 +1,88 @@
+{ "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/48",
+ "keymap": "default",
+ "layout": "LAYOUT",
+ "layers": [
+ ["KC_GRV" , "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_ESC",
+ "CAPS_WORD" , "KC_N" , "KC_M" , "KC_COMM", "KC_DOT" , "KC_SLSH" , "KC_RSFT",
+
+ "KC_LCTL" , "KC_LGUI" , "KC_LALT", "MO(3)" , "OSM(MOD_LSFT)",
+ "MO(4)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_QUOT"
+
+ ],
+ ["KC_GRV" , "KC_QUOT" , "KC_COMM", "KC_DOT" , "KC_P" , "KC_Y",
+ "KC_F" , "KC_G" , "KC_C" , "KC_R" , "KC_L" , "KC_BSPC",
+
+ "KC_TAB" , "KC_A" , "KC_O" , "KC_E" , "KC_U" , "KC_I",
+ "KC_D" , "KC_H" , "KC_T" , "KC_N" , "KC_S" , "KC_ENT",
+
+ "KC_LSFT" , "KC_SCLN" , "KC_Q" , "KC_J" , "KC_K" , "KC_X" , "KC_ESC",
+ "CAPS_WORD" , "KC_B" , "KC_M" , "KC_W" , "KC_V" , "KC_Z" , "KC_RSFT",
+
+ "KC_LCTL" , "KC_LGUI" , "KC_LALT", "MO(3)" , "OSM(MOD_LSFT)",
+ "MO(4)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_SLSH"
+
+ ],
+ ["KC_GRV" , "KC_Q" , "KC_W" , "KC_F" , "KC_P" , "KC_B",
+ "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_M" , "KC_N" , "KC_E" , "KC_I" , "KC_O" , "KC_ENT",
+
+ "KC_LSFT" , "KC_Z" , "KC_X" , "KC_C" , "KC_D" , "KC_V" , "KC_ESC",
+ "CAPS_WORD" , "KC_K" , "KC_H" , "KC_COMM", "KC_DOT" , "KC_SLSH" , "KC_RSFT",
+
+ "KC_LCTL" , "KC_LGUI" , "KC_LALT", "MO(3)" , "OSM(MOD_LSFT)",
+ "MO(4)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_QUOT"
+
+ ],
+ ["KC_HOME" , "KC_EXLM" , "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC",
+ "KC_CIRC" , "KC_AMPR" , "KC_ASTR", "KC_LPRN", "KC_RPRN" , "KC_DEL",
+
+ "KC_END" , "KC_LGUI" , "KC_LALT", "KC_LCTL", "KC_LSFT" , "KC_INS",
+ "KC_LBRC" , "KC_RBRC" , "KC_MINS", "KC_EQL" , "KC_BSLS" , "KC_TRNS",
+
+ "KC_LSFT" , "KC_NO" , "KC_VOLD", "KC_MUTE", "KC_VOLU" , "KC_MPLY" , "OSM(MOD_RALT)",
+ "KC_APP" , "KC_LCBR" , "KC_RCBR", "KC_UNDS", "KC_PLUS" , "KC_PIPE" , "KC_TRNS",
+
+ "KC_TRNS" , "KC_TRNS" , "KC_TRNS", "KC_TRNS", "OSM(MOD_LSFT)",
+ "MO(5)" , "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_RCTL"
+
+ ],
+ ["LCTL(KC_X)", "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5",
+ "KC_6" , "KC_7" , "KC_8" , "KC_9" , "KC_0" , "KC_BSPC",
+
+ "LCTL(KC_C)", "KC_LEFT" , "KC_DOWN", "KC_UP" , "KC_RGHT" , "LCTL(KC_V)",
+ "KC_PGUP" , "KC_RSFT" , "KC_RCTL", "KC_LALT", "KC_RGUI" , "KC_PGDN",
+
+ "KC_LSFT" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , "LCTL(KC_Z)",
+ "LCTL(KC_Y)", "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_TRNS",
+
+ "KC_TRNS" , "KC_TRNS" , "KC_TRNS", "MO(5)" , "KC_TRNS",
+ "KC_TRNS" , "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_RCTL"
+
+ ],
+ ["KC_NO" , "DF(0)" , "DF(1)" , "DF(2)" , "AG_SWAP" , "CG_SWAP",
+ "KC_NO" , "KC_F11" , "KC_F12" , "KC_PSCR", "KC_NO" , "KC_NO",
+
+ "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "AG_NORM" , "CG_NORM",
+ "RGB_MOD" , "RGB_VAI" , "RGB_HUI", "RGB_SAI", "KC_NO" , "KC_NO",
+
+ "KC_NO" , "KC_LGUI" , "KC_LALT", "KC_LCTL", "KC_LSFT" , "KC_NO" , "KC_NO",
+ "RGB_TOG" , "RGB_RMOD", "RGB_VAD", "RGB_HUD", "RGB_SAD" , "KC_NO" , "QK_BOOT",
+
+ "KC_NO" , "KC_NO" , "KC_NO" , "KC_TRNS", "KC_NO",
+ "KC_TRNS" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO"
+
+ ]
+ ],
+ "author": "@mmccoyd"
+}
diff --git a/keyboards/handwired/hillside/48/keymaps/default/readme.md b/keyboards/handwired/hillside/48/keymaps/default/readme.md
new file mode 100644
index 0000000000..9bf294eff0
--- /dev/null
+++ b/keyboards/handwired/hillside/48/keymaps/default/readme.md
@@ -0,0 +1,159 @@
+# Default Keymap
+
+For easier initial use, this keymap follows the layout of more standard keyboards where possible. It is a starting point for you to tweak over time to suit your preferences better. You can easily customize it with the [QMK configurator](https://config.qmk.fm/#/handwired/hillside/48/LAYOUT).
+
+Some of its key features are:
+- Numbers and symbols along the top row of their layers for familiarity.
+- Comfortable combination of modifier and function or symbol on the non-base layers
+ using modifiers on the home row of the symbol and number/function layers.
+- A layer with both navigation and editing keys allows document editing without leaving the layer.
+- QWERTY, Colemak-DH and Dvorak base layer options.
+
+## Base Layer
+
+```
+| ` | Q | W | E | R | T |---------------------------| Y | U | I | O | P | BKSPC |
+| TAB | A | S | D | F | G |---------------------------| H | J | K | L | ; | ENTER |
+| SHIFT | Z | X | C | V | B | ESC |---------------|CAPS | N | M | , | . | / | SHIFT |
+--------------|CTRL |-----| GUI | ALT | Sym |SHIFT|---| Nav |SPACE| ALT | GUI |-----| ' |--------------
+```
+
+The base layer provides a very standard key layout with five differences:
+
+- Numbers, functions and most symbols are accessed with number and symbol shift keys.
+- Escape is on the left thumb.
+- The left thumb has a shift key that affects the next key pressed. So to get 'A', press and release the thumb shift key, press 'a'. You can also hold the key down, and it will work like a standard shift key. There are still standard shift keys at either end of the keyboard.
+- The right upper thumb turns on a mode that capitalizes all letters until something other than a letter, digit, dash, underscore, delete or backspace is typed. The caps word mode also times out after five seconds of no key presses.
+- The Menu and AltGr keys are on a layer.
+
+The default layout is QWERTY with alternatives of Dvorak and Colemak-DH, and the alt/option and the win/command key locations are swappable for windows or mac.
+
+
+<details>
+<summary>Details of Dvorak and Colemak-DH</summary>
+The Dvorak and Colemak-DH base layers
+ have identical non-alpha and non-symbol keys as the QWERTY base layer.
+
+```
+Dvorak
+| ` | ' | , | . | P | Y |---------------------------| F | G | C | R | L | BKSPC |
+| TAB | A | O | E | U | I |---------------------------| D | H | T | N | S | ENTER |
+| SHIFT | ; | Q | J | K | X | ESC |---------------|CAPS | B | M | W | V | Z | SHIFT |
+--------------|CTRL |-----| GUI | ALT | Sym |SHIFT|---| Nav |SPACE| ALT | GUI |-----| / |--------------
+
+Colemak-DH
+| ` | Q | W | F | P | B |---------------------------| J | L | U | Y | ; | BKSPC |
+| TAB | A | R | S | T | G |---------------------------| M | N | E | I | O | ENTER |
+| SHIFT | Z | X | C | D | V | ESC |---------------|CAPS | K | H | , | . | / | SHIFT |
+--------------|CTRL |-----| GUI | ALT | Sym |SHIFT|---| Nav |SPACE| ALT | GUI |-----| ' |--------------
+```
+</details>
+
+## Symbol and Media Layer
+
+```
+| HOME | ! | @ | # | $ | % |---------------------------| ^ | & | * | ( | ) | DEL |
+| END | GUI | ALT |CTRL |SHIFT| INS |---------------------------| [ | ] | - | = | \ | ENTER |
+| SHIFT | |VOL- |MUTE |VOL+ |PLAY |OSM ALT |------------|MENU | { | } | _ | + | | | SHIFT |
+--------------|CTRL |-----| GUI | ALT | *** |SHIFT|---| Adj |SPACE| ALT | GUI |-----|CTRL |--------------
+```
+Holding down the SYM key accesses the symbol layer:
+
+- The symbols not present on the base layer are along the top row and right side, similar to a full-size keyboard.
+- Duplicates of the modifier keys are along the left home keys. This allows a very comfortable combination of any set of modifiers plus a key on the right side of the board.
+- Forward delete is on the upper right, taking backspace's place.
+- The Windows OS application menu key is on the upper right thumb.
+- The AltGr key affects the next key pressed so that it can combine with a key on any layer. It changes the meaning of the next key pressed after the AltGr key is pressed and released. For example, to do AltGr-h: press SYM, press and release AltGr, release SYM, press and release h.
+
+## Navigation, Editing, Number and Function Layer
+
+```
+| CUT | 1 | 2 | 3 | 4 | 5 |---------------------------| 6 | 7 | 8 | 9 | 0 | BSPC |
+| COPY |LEFT |DOWN | UP |RIGHT|PASTE|---------------------------|PG_UP|SHIFT|CTRL | ALT | GUI | PG_DN |
+| SHIFT | F1 | F2 | F3 | F4 | F5 |UNDO |---------------|REDO | F6 | F7 | F8 | F9 | F10 | SHIFT |
+--------------|CTRL |-----| GUI | ALT | Adj |SHIFT|---| *** |SPACE| ALT | GUI |-----|CTRL |--------------
+```
+Holding down the Nav/Edit key accesses the navigation, editing, number and function layer:
+
+- Numbers are along the top row, and function keys are on the bottom row.
+- The arrow keys on the left can be combined with the home row modifiers on the right to easily move around and select text, which can then be cut, copied and pasted.
+
+
+## Adjust Layer
+```
+| |QWERT|DVORK|COLMK|AG_SWAP|CTR_SWAP|----------------------| | F11 | F12 |PR_SCR| | |
+| | | | |AG_NORM|CTR_NORM|----------------------|MOD+ |BRI+ |HUE+ |SAT+ | | |
+| | GUI | ALT |CTRL |SHIFT| | |--------------|RGBTOG|MOD- |BRI- |HUE- |SAT- | | BOOT |
+--------------| |-----| | | *** | |---| *** | | | |-----| |--------------
+```
+Simultaneously holding down the Sym and Nav/Edit keys enables keys to adjust keyboard settings:
+
+- The base layer can be set to QWERTY, Colemak-DH or Dvorak, although 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.
+- The backlight LEDs can be enabled, disabled, and controlled.
+- BOOT allows loading new firmware, such as for keymap changes.
+- The remaining Fn keys are here with modifiers to use with them.
+
+## 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.
+
+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.
+
+Some changes you might consider making:
+- If you are on a mac, switch the editing 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.
+
+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.
+- 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.
+
+
+
+## Why no keymap.c
+
+The online configurator provides a straightforward visual way to work with a simple layout
+ and uses 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 ```json2hill48.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/48/LAYOUT)
+- Using the green up arrow button, load the keymap from ```qmk_firmware/keyboards/handwired/hillside/48/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/48/keymaps/json2hill48.py \
+ --input <Your download directory>/default.json \
+ > ./keyboards/handwired/hillside/48/keymaps/default/keymap.json
+```
+ You may need to make that script executable with ```chmod +x```. After your keymap is safely copied and formatted, 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). \ No newline at end of file
diff --git a/keyboards/handwired/hillside/48/keymaps/default/rules.mk b/keyboards/handwired/hillside/48/keymaps/default/rules.mk
new file mode 100644
index 0000000000..4711d2ff74
--- /dev/null
+++ b/keyboards/handwired/hillside/48/keymaps/default/rules.mk
@@ -0,0 +1 @@
+CAPS_WORD_ENABLE = yes
diff --git a/keyboards/handwired/hillside/48/keymaps/json2hill48.py b/keyboards/handwired/hillside/48/keymaps/json2hill48.py
new file mode 100755
index 0000000000..c4fb5b1037
--- /dev/null
+++ b/keyboards/handwired/hillside/48/keymaps/json2hill48.py
@@ -0,0 +1,146 @@
+#!/usr/bin/env python3
+
+# Copyright 2020-2022 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, based on ROW_SIZES."""
+
+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"
+ ],
+"""
+
+# The structure of the keymap. Tuples describing row sizes.
+# (<Keys upto and including (one-indexed) keycount x> <are in half rows of y>)
+ROW_SIZES = [(24, 6),
+ (38, 7),
+ (48, 5),
+ ]
+
+###
+### Below here should not need to changed for different keyboards
+###
+
+LAST_KEY = ROW_SIZES[-1][0] - 1
+
+indent_level=4 # number of spaces of initial indent per output line
+
+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."""
+ index_prior = 0 # index of last key in rows of the prior size
+ for keys_upto, num_cols in ROW_SIZES: # For row sizes from top
+ if key_index < keys_upto: # Find range key_index is in
+ col_num = (key_index - index_prior) % num_cols
+ return Column(col_num, # Return column plus side and row ends flags
+ ends_side=col_num == num_cols - 1,
+ ends_row=(keys_upto - 1 - key_index) %
+ (2 * num_cols) == 0)
+ index_prior = keys_upto # Big O: row ranges * keys, but range is small
+
+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))
+
+if __name__ == "__main__":
+ main()
diff --git a/keyboards/handwired/hillside/48/keymaps/manna-harbour_miryoku/config.h b/keyboards/handwired/hillside/48/keymaps/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..e779de8a99
--- /dev/null
+++ b/keyboards/handwired/hillside/48/keymaps/manna-harbour_miryoku/config.h
@@ -0,0 +1,38 @@
+// Copyright 2022 Davide Masserut (@mssdvd)
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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
+
+// clang-format off
+#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS
+#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, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
+ XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \
+)
+#else
+#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, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
+ XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX \
+)
+#endif
diff --git a/keyboards/handwired/hillside/48/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/handwired/hillside/48/keymaps/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..dbab7f9820
--- /dev/null
+++ b/keyboards/handwired/hillside/48/keymaps/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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/hillside/48/keymaps/via/keymap.json b/keyboards/handwired/hillside/48/keymaps/via/keymap.json
new file mode 100644
index 0000000000..b4848a72ee
--- /dev/null
+++ b/keyboards/handwired/hillside/48/keymaps/via/keymap.json
@@ -0,0 +1,61 @@
+{ "version": 1,
+ "notes": "",
+ "keyboard": "handwired/hillside/48",
+ "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_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_GRV",
+ "KC_ESC" , "KC_N" , "KC_M" , "KC_COMM", "KC_DOT" , "KC_SLSH", "KC_RSFT",
+
+ "KC_LCTL" , "KC_LGUI", "KC_LALT", "MO(3)" , "MO(1)",
+ "MO(2)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_QUOT"
+
+ ],
+ ["KC_NO" , "KC_INS" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_VOLU",
+ "KC_PGUP" , "KC_HOME", "KC_NO" , "KC_END" , "KC_NO" , "KC_DEL",
+
+ "KC_NO" , "KC_LGUI", "KC_LALT", "KC_LCTL", "KC_LSFT", "KC_VOLD",
+ "KC_PGDN" , "KC_LEFT", "KC_UP" , "KC_RGHT", "KC_NO" , "KC_TRNS",
+
+ "KC_LSFT" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_MUTE",
+ "KC_ESC" , "KC_CAPS", "KC_NO" , "KC_DOWN", "KC_NO" , "KC_APP" , "KC_TRNS",
+
+ "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS" , "KC_BSPC", "KC_TRNS", "KC_TRNS", "KC_RCTL"
+
+ ],
+ ["KC_F11" , "KC_EXLM", "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC",
+ "KC_CIRC" , "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "KC_TRNS",
+
+ "KC_F12" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5",
+ "KC_PIPE" , "KC_LSFT", "KC_LCTL", "KC_LALT", "KC_LGUI", "KC_TRNS",
+
+ "KC_LSFT" , "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_PSCR",
+ "KC_ESC" , "KC_BSLS", "KC_LBRC", "KC_RBRC", "KC_LCBR", "KC_RCBR", "KC_TRNS",
+
+ "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_RCTL"
+
+ ],
+ ["KC_TAB" , "KC_MINS", "KC_PLUS", "KC_EQL" , "KC_SLSH", "KC_ASTR",
+ "KC_COMM" , "KC_7" , "KC_8" , "KC_9" , "KC_NO" , "KC_TRNS",
+
+ "ANY(RGB_TOG)", "KC_LGUI", "KC_LALT", "KC_LCTL", "KC_LSFT", "KC_NO",
+ "KC_0" , "KC_1" , "KC_2" , "KC_3" , "KC_UNDS", "KC_TRNS",
+
+ "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_RCTL"
+
+ ]
+ ],
+ "author": "@mmccoyd"
+}
diff --git a/keyboards/handwired/hillside/48/readme.md b/keyboards/handwired/hillside/48/readme.md
new file mode 100644
index 0000000000..e65deed9c8
--- /dev/null
+++ b/keyboards/handwired/hillside/48/readme.md
@@ -0,0 +1,29 @@
+# Hillside
+
+![hillside](https://imgur.com/XW0rX13.png)
+
+[Hillside 48](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/48:default
+
+Flashing example for this keyboard:
+
+ make handwired/hillside/48: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 `QK_BOOT` 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/hillside/48/rules.mk b/keyboards/handwired/hillside/48/rules.mk
new file mode 100644
index 0000000000..2501147ea8
--- /dev/null
+++ b/keyboards/handwired/hillside/48/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/52/52.c b/keyboards/handwired/hillside/52/52.c
new file mode 100644
index 0000000000..b4d6b4629d
--- /dev/null
+++ b/keyboards/handwired/hillside/52/52.c
@@ -0,0 +1,21 @@
+// Copyright 2022 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "52.h"
+
+// Keymatrix spots to ignore, as one signals handedness and others have no key
+const matrix_row_t matrix_mask[] = {
+//c:543210 column id's
+ 0b111111,
+ 0b111111,
+ 0b111111,
+ 0b000111,
+ 0b111110,
+
+//c:543210
+ 0b111111,
+ 0b111111,
+ 0b111111,
+ 0b000111,
+ 0b111110
+};
diff --git a/keyboards/handwired/hillside/52/52.h b/keyboards/handwired/hillside/52/52.h
new file mode 100644
index 0000000000..f09d896938
--- /dev/null
+++ b/keyboards/handwired/hillside/52/52.h
@@ -0,0 +1,39 @@
+// Copyright 2021 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a mapping so keymap files can be more readable to humans.
+ *
+ * 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.
+ *
+ * The identifiers could be anything, but for human sanity have the folowing form
+ * <Left or Right><Physical or thumb row><Circuit column counting from outer pinky>
+ */
+
+// clang-format off
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, R05, R04, R03, R02, R01, R00, \
+ L10, L11, L12, L13, L14, L15, R15, R14, R13, R12, R11, R10, \
+ L20, L21, L22, L23, L24, L25, LT5, RT5, R25, R24, R23, R22, R21, R20, \
+ L30, L31, L32, LT1, LT2, LT3, LT4, RT4, RT3, RT2, RT1, R32, R31, R30 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { L30, L31, L32, KC_NO, KC_NO, KC_NO }, \
+ { KC_NO, LT1, LT2, LT3, LT4, LT5 }, \
+ { R00, R01, R02, R03, R04, R05 }, \
+ { R10, R11, R12, R13, R14, R15 }, \
+ { R20, R21, R22, R23, R24, R25 }, \
+ { R30, R31, R32, KC_NO, KC_NO, KC_NO }, \
+ { KC_NO, RT1, RT2, RT3, RT4, RT5 } \
+ }
+// clang-format on
diff --git a/keyboards/handwired/hillside/52/config.h b/keyboards/handwired/hillside/52/config.h
new file mode 100644
index 0000000000..23872aa37b
--- /dev/null
+++ b/keyboards/handwired/hillside/52/config.h
@@ -0,0 +1,39 @@
+// Copyright 2022 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 10
+#define MATRIX_COLS 6
+
+/* Split */
+#define SPLIT_HAND_MATRIX_GRID B5, F6
+#define MATRIX_MASKED
+
+/* 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/52/info.json b/keyboards/handwired/hillside/52/info.json
new file mode 100644
index 0000000000..2a78ccd9b6
--- /dev/null
+++ b/keyboards/handwired/hillside/52/info.json
@@ -0,0 +1,111 @@
+{
+ "manufacturer": "mmccoyd",
+ "maintainer": "mmccoyd",
+
+ "keyboard_name": "Hillside 52",
+ "url": "http://github.com/mmccoyd/hillside/",
+
+ "tags": ["split", "column stagger", "choc v1", "choc spaced" ],
+
+ "processor": "atmega32u4",
+
+ "matrix_pins": {
+ "rows": ["C6", "D7", "E6", "B4", "B5"],
+ "cols": ["F6", "F7", "B1", "B3", "B2", "B6"]
+ },
+ "diode_direction": "COL2ROW",
+
+ "usb": {
+ "vid": "0x4D4D",
+ "pid": "0x4852",
+ "device_version": "0.0.1"
+ },
+
+ "features": {
+ "encoder": true,
+ "extrakey": true,
+ "rgblight": true
+ },
+ "split": {
+ "soft_serial_pin": "D2"
+ },
+
+ "rgblight": {
+ "led_count": 5,
+ "pin": "D3",
+ "split": true,
+ "hue_steps": 8,
+ "saturation_steps": 8,
+ "brightness_steps": 8
+ },
+
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+
+ {"label": "`~", "x": 0, "y": 1.13},
+ {"label": "Q", "x": 1, "y": 0.93},
+ {"label": "W", "x": 2.1, "y": 0.31},
+ {"label": "E", "x": 3.2, "y": 0},
+ {"label": "R", "x": 4.2, "y": 0.28},
+ {"label": "T", "x": 5.2, "y": 0.42},
+
+ {"label": "Y", "x": 9.7, "y": 0.42},
+ {"label": "U", "x": 10.7, "y": 0.28},
+ {"label": "I", "x": 11.7, "y": 0},
+ {"label": "O", "x": 12.8, "y": 0.31},
+ {"label": "P", "x": 13.9, "y": 0.93},
+ {"label": "Backspace", "x": 14.9, "y": 1.13},
+
+
+ {"label": "Tab", "x": 0.1, "y": 2.13},
+ {"label": "A", "x": 1.1, "y": 1.93},
+ {"label": "S", "x": 2.15, "y": 1.31},
+ {"label": "D", "x": 3.2, "y": 1},
+ {"label": "F", "x": 4.2, "y": 1.28},
+ {"label": "G", "x": 5.2, "y": 1.42},
+
+ {"label": "H", "x": 9.7, "y": 1.42},
+ {"label": "J", "x": 10.7, "y": 1.28},
+ {"label": "K", "x": 11.7, "y": 1},
+ {"label": "L", "x": 12.75, "y": 1.31},
+ {"label": ";", "x": 13.8, "y": 1.93},
+ {"label": "Enter", "x": 14.8, "y": 2.13},
+
+
+ {"label": "Shift", "x": 0.2, "y": 3.13},
+ {"label": "Z", "x": 1.2, "y": 2.93},
+ {"label": "X", "x": 2.2, "y": 2.31},
+ {"label": "C", "x": 3.2, "y": 2},
+ {"label": "V", "x": 4.2, "y": 2.28},
+ {"label": "B", "x": 5.2, "y": 2.42},
+ {"label": "'", "x": 6.2, "y": 2.88},
+
+ {"label": "/", "x": 8.7, "y": 2.88},
+ {"label": "N", "x": 9.7, "y": 2.42},
+ {"label": "M", "x": 10.7, "y": 2.28},
+ {"label": ", ", "x": 11.7, "y": 2},
+ {"label": ".", "x": 12.7, "y": 2.31},
+ {"label": "Up", "x": 13.7, "y": 2.93},
+ {"label": "Shift", "x": 14.7, "y": 3.13},
+
+
+ {"label": "Mute", "x": 0.3, "y": 4.13},
+ {"label": "Esc", "x": 1.3, "y": 3.93},
+ {"label": "Ctrl", "x": 2.3, "y": 3.73},
+ {"label": "Gui", "x": 3.7, "y": 3.28},
+ {"label": "Alt", "x": 4.7, "y": 3.42},
+ {"label": "Shift", "x": 5.7, "y": 3.88},
+ {"label": "Nav", "x": 6.7, "y": 4.44},
+
+ {"label": "Sym", "x": 8.2, "y": 4.44},
+ {"label": "Space", "x": 9.2, "y": 3.88},
+ {"label": "Alt", "x": 10.2, "y": 3.42},
+ {"label": "Gui", "x": 11.2, "y": 3.28},
+ {"label": "Left", "x": 12.6, "y": 3.73},
+ {"label": "Down", "x": 13.6, "y": 3.93},
+ {"label": "Right", "x": 14.6, "y": 4.13}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/hillside/52/keymaps/default/config.h b/keyboards/handwired/hillside/52/keymaps/default/config.h
new file mode 100644
index 0000000000..d209c914bf
--- /dev/null
+++ b/keyboards/handwired/hillside/52/keymaps/default/config.h
@@ -0,0 +1,9 @@
+// Copyright 2022 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Some boards have issues detecting handedness using the vbus voltage.
+// Such as Elite-C v3, but not v3.1 on. Also apparently some ProMicro boards.
+// For those boands, use usb detection instead.
+// #define SPLIT_USB_DETECT
diff --git a/keyboards/handwired/hillside/52/keymaps/default/keymap.json b/keyboards/handwired/hillside/52/keymaps/default/keymap.json
new file mode 100644
index 0000000000..c9760428ed
--- /dev/null
+++ b/keyboards/handwired/hillside/52/keymaps/default/keymap.json
@@ -0,0 +1,88 @@
+{ "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/52",
+ "keymap": "default",
+ "layout": "LAYOUT",
+ "layers": [
+ ["KC_GRV" , "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_QUOT",
+ "KC_SLSH" , "KC_N" , "KC_M" , "KC_COMM", "KC_DOT" , "KC_UP" , "KC_RSFT",
+
+ "KC_MUTE" , "KC_ESC" , "KC_LCTL", "KC_LGUI", "KC_LALT", "OSM(MOD_LSFT)", "MO(3)",
+ "MO(4)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_LEFT", "KC_DOWN" , "KC_RGHT"
+
+ ],
+ ["KC_GRV" , "KC_QUOT" , "KC_COMM", "KC_DOT" , "KC_P" , "KC_Y",
+ "KC_F" , "KC_G" , "KC_C" , "KC_R" , "KC_L" , "KC_BSPC",
+
+ "KC_TAB" , "KC_A" , "KC_O" , "KC_E" , "KC_U" , "KC_I",
+ "KC_D" , "KC_H" , "KC_T" , "KC_N" , "KC_S" , "KC_ENT",
+
+ "KC_LSFT" , "KC_SCLN" , "KC_Q" , "KC_J" , "KC_K" , "KC_X" , "KC_SLSH",
+ "KC_Z" , "KC_B" , "KC_M" , "KC_W" , "KC_V" , "KC_UP" , "KC_RSFT",
+
+ "KC_MUTE" , "KC_ESC" , "KC_LCTL", "KC_LGUI", "KC_LALT", "OSM(MOD_LSFT)", "MO(3)",
+ "MO(4)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_LEFT", "KC_DOWN" , "KC_RGHT"
+
+ ],
+ ["KC_GRV" , "KC_Q" , "KC_W" , "KC_F" , "KC_P" , "KC_B",
+ "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_M" , "KC_N" , "KC_E" , "KC_I" , "KC_O" , "KC_ENT",
+
+ "KC_LSFT" , "KC_Z" , "KC_TRNS", "KC_C" , "KC_D" , "KC_V" , "KC_QUOT",
+ "KC_SLSH" , "KC_K" , "KC_H" , "KC_COMM", "KC_DOT" , "KC_UP" , "KC_RSFT",
+
+ "KC_MUTE" , "KC_ESC" , "KC_LCTL", "KC_LGUI", "KC_LALT", "OSM(MOD_LSFT)", "MO(3)",
+ "MO(4)" , "KC_SPC" , "KC_LALT", "KC_RGUI", "KC_LEFT", "KC_DOWN" , "KC_RGHT"
+
+ ],
+ ["LCTL(KC_C)" , "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5",
+ "KC_6" , "KC_7" , "KC_8" , "KC_9" , "KC_0" , "KC_TRNS",
+
+ "LCTL(KC_X)" , "KC_LGUI" , "KC_LALT", "KC_LCTL", "KC_LSFT", "LCTL(KC_V)",
+ "KC_PGUP" , "KC_LEFT" , "KC_UP" , "KC_DOWN", "KC_RGHT", "KC_PGDN",
+
+ "KC_TRNS" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , "LCTL(KC_Z)",
+ "LCTL(KC_Y)" , "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_TRNS",
+
+ "KC_F11" , "KC_F12" , "KC_LCTL", "KC_TRNS", "KC_TRNS", "KC_TRNS" , "KC_TRNS",
+ "MO(5)" , "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_RCTL", "KC_HOME" , "KC_END"
+
+ ],
+ ["KC_INS" , "KC_EXLM" , "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC",
+ "KC_CIRC" , "KC_AMPR" , "KC_ASTR", "KC_LPRN", "KC_RPRN", "KC_DEL",
+
+ "ANY(CAPSWRD)", "KC_BSLS" , "KC_MINS", "KC_EQL" , "KC_LBRC", "KC_RBRC",
+ "KC_VOLU" , "KC_RSFT" , "KC_RCTL", "KC_LALT", "KC_RGUI", "KC_TRNS",
+
+ "KC_TRNS" , "KC_PIPE" , "KC_UNDS", "KC_PLUS", "KC_LCBR", "KC_RCBR" , "KC_MPLY",
+ "KC_MUTE" , "KC_VOLD" , "KC_0" , "KC_1" , "KC_2" , "KC_NO" , "KC_TRNS",
+
+ "KC_NO" , "KC_NO" , "KC_LCTL", "KC_TRNS", "KC_TRNS", "KC_TRNS" , "MO(5)",
+ "KC_TRNS" , "KC_TRNS" , "KC_TRNS", "KC_TRNS", "KC_RCTL", "KC_APP" , "OSM(MOD_RALT)"
+
+ ],
+ ["KC_NO" , "DF(0)" , "DF(1)" , "DF(2)" , "AG_SWAP", "CG_SWAP",
+ "KC_NO" , "KC_PSCR" , "KC_NO" , "KC_NO" , "KC_NO" , "KC_NO",
+
+ "KC_NO" , "KC_NO" , "KC_BRIU", "KC_NO" , "AG_NORM", "CG_NORM",
+ "RGB_MOD" , "RGB_VAI" , "RGB_HUI", "RGB_SAI", "KC_NO" , "KC_NO",
+
+ "QK_BOOT" , "KC_NO" , "KC_BRID", "KC_NO" , "KC_NO" , "KC_NO" , "EE_CLR",
+ "RGB_TOG" , "RGB_RMOD", "RGB_VAD", "RGB_HUD", "RGB_SAD", "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" , "KC_NO"
+
+ ]
+ ],
+ "author": "@mmccoyd"
+}
diff --git a/keyboards/handwired/hillside/52/keymaps/default/readme.md b/keyboards/handwired/hillside/52/keymaps/default/readme.md
new file mode 100644
index 0000000000..1617b0d431
--- /dev/null
+++ b/keyboards/handwired/hillside/52/keymaps/default/readme.md
@@ -0,0 +1,161 @@
+# Hillside 52 Default Keymap
+
+For easier initial use, this keymap follows the layout of more standard keyboards where possible. It is a starting point for you to tweak over time to suit your preferences better. You can easily customize it with the [QMK configurator](https://config.qmk.fm/#/handwired/hillside/52/LAYOUT).
+
+Some of its key features are:
+
+- An inverted-T arrow cluster on the base layer.
+- Numbers and symbols along the top row of their layers for familiarity.
+- Comfortable modifier and function or symbol combinations on the non-base layers using modifiers on the home row of the navigation/edit and symbol layers.
+- A layer with both navigation and editing keys allows document editing without leaving the layer.
+- QWERTY, Colemak-DH and Dvorak base layer options.
+
+## Base Layer
+
+![Base QWERTY layer](https://imgur.com/pscLDLth.png)
+
+The base layer provides a very standard key layout with four differences:
+
+- Numbers, functions and most symbols are accessed with number and symbol shift keys.
+- Escape is on the bottom row.
+- The left thumb has a shift key that affects the next key pressed. So to get 'A,' press and release the thumb shift key, press 'a'. You can also hold the key down, and it will work like a standard shift key. There are still standard shift keys at either end of the keyboard.
+- The Menu and AltGr keys are on a layer.
+
+The default layout is QWERTY with alternatives of Dvorak and Colemak-DH, and the alt/option and win/command key locations are swappable for windows or mac.
+
+<details>
+<summary>Details of Dvorak and Colemak-DH</summary>
+The Dvorak and Colemak-DH base layers have identical non-alpha and non-symbol keys as the QWERTY base layer.
+
+![Base Dvorak layer](https://imgur.com/cVZXtZxh.png)
+![Base Colemak layer](https://imgur.com/OsVDdrph.png)
+</details>
+
+
+## Navigation, Editing, Number and Function Layer
+
+![Navigation layer](https://imgur.com/y48mEmeh.png)
+
+Holding down the Nav/Edit key accesses the navigation, editing, number and function layer:
+
+- Numbers are along the top row, and function keys are on the bottom.
+- The arrow keys on the right can be combined with the home row modifiers on the left to easily move around and select text, which can then be cut, copied and pasted.
+
+
+## Symbol and Media Layer
+
+![Symbol layer](https://imgur.com/zL8re91h.png)
+
+Holding down the SYM key accesses the symbol layer:
+
+- The symbols not present on the base layer are along the top row and left side, arranged similarly to a large keyboard.
+- Duplicates of the modifier keys are along the right home keys. This positioning allows a very comfortable combination of any set of modifiers plus a key on the left side of the board.
+- Forward delete is on the upper right, taking backspace's place.
+- Caps word toggles a mode that capitalizes all letters until something other than a letter, digit, dash, underscore, delete or backspace is typed. The mode also times out five seconds after the last key press.
+- The Windows OS application menu key is on the lower right.
+- The AltGr key affects the next key pressed so that it can combine with a key on any layer. It changes the meaning of the next key pressed after the AltGr key is pressed and released. For example, to do AltGr-h: press SYM, press and release AltGr, release SYM, press and release h.
+
+
+## Adjust Layer
+
+![Adjust layer](https://imgur.com/9dhChrXh.png)
+
+Simultaneously holding down the Nav/Edit and Sym keys enables keys to adjust keyboard settings:
+
+- The base layer can be set to QWERTY, Colemak-DH or Dvorak, although 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.
+- The backlight LEDs can be enabled, disabled, and controlled.
+- BOOT allows loading new firmware, such as for keymap changes.
+
+## Make it Yours
+
+If you are coming from a traditional keyboard,
+ with 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](https://config.qmk.fm/#/handwired/hillside/52/LAYOUT) makes it easy to tweak this layout to your needs.
+You can add additional layers or completely switch around what these do.
+
+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.
+
+Some changes you might consider making:
+
+- If you are on a mac, switch the editing keys from ctrl-x to cmd-x.
+- Put some of your most-used key combinations on the unused keys
+ on the symbol layer.
+- Remove the pinkie shift keys and just use the one-shot thumb shift key.
+- 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.
+
+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.
+
+## Rationale
+Any keymap or keyboard is a set of compromises between priorities. Here are some of the priorities of this keymap.
+
+- Ease for new users coming from a large keyboard: Making it easier to shift to a split column-stagger keyboard drove:
+ - Traditional number row and symbol row
+ - Nearly complete set of modifiers along the bottom rows
+ - An arrow T cluster on the base layer.
+- Simple three layers: Just two extra layers makes shifting to them clearer. (Not counting the infrequent adjust layer.)
+- Orthogonal-mods: Being able to choose any combination of modifiers with one hand and any key with the other hand without leaving home is easier on your hands. It generally means a [row of modifiers](https://precondition.github.io/home-row-mods#home-row-mods-order) on the home row of the hand selecting the layer and all the keys of interest on the other hand. But that usually doubles the layers needed. We have the modifiers but also used the space around them on that side. The modifiers along the bottom rows are still there, though they are less ergonomic.
+- A Nav/Edit layer: It is very convenient to be able to move, select, cut and paste without moving your fingers away from orientation on the home row. Arrows for that work best on the right, which places the mods on the left. This also makes the mods convenient to use with a mouse while editing.
+- Hints toward a better way:
+ - One shot shift on thumb: Tapping two keys in turn is easier on your hands than holding one while tapping another. The pinkie shifts are still there, but you may find you use them less often.
+ - The mods on the home row.
+ - The home row arrows.
+ - The common digits 0 and 1 on the sym layer, in a spot that might go well with a full number pad on a new layer.
+
+A theme of the keymap might be "offering but not requiring a better way," offering options for navigation, editing, mods and numbers.
+
+
+
+## Why no keymap.c
+
+The online configurator provides a straightforward visual way
+ to work with a simple layout and uses a .json keymap format.
+So this default ```keymap.json``` was created with the online configurator.
+
+If you wish, you can edit the ```keymap.json``` directly in a text editor, compile it 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/52/LAYOUT)
+- Using the green up arrow button, load the keymap from ```qmk_firmware/keyboards/handwired/hillside/52/keymaps/default/keymap.json```
+- Make the changes you wish to the layout
+- Save the keymap using the green down arrow button.
+- Move the downloaded keymap back into your QMK repository
+ at the same location as above.
+- Rename it back to keymap.json
+- Compile and flash the firmware.
+
+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).
+
+
+### Pretty Printing
+
+The QMK configurator's .json download has only one key per line,
+so it is hard to visualize the keymap if editing manually.
+If you want, the Hillside git repo has a pretty-printing script for the keymap.json file.
+
+As with anything downloaded from the internet, you should take some steps to assure yourself that the script will not harm your computer nor steal your data. The script is short, so reading it should at least convince you it is rearranging and printing the keymap provided, not reading your banking data.
+See the [Hillside wiki](https://github.com/mmccoyd/hillside/wiki) for the script.
+
+
+
+
+
+
diff --git a/keyboards/handwired/hillside/52/keymaps/default/rules.mk b/keyboards/handwired/hillside/52/keymaps/default/rules.mk
new file mode 100644
index 0000000000..4711d2ff74
--- /dev/null
+++ b/keyboards/handwired/hillside/52/keymaps/default/rules.mk
@@ -0,0 +1 @@
+CAPS_WORD_ENABLE = yes
diff --git a/keyboards/handwired/hillside/52/keymaps/default_dot_c/config.h b/keyboards/handwired/hillside/52/keymaps/default_dot_c/config.h
new file mode 100644
index 0000000000..d209c914bf
--- /dev/null
+++ b/keyboards/handwired/hillside/52/keymaps/default_dot_c/config.h
@@ -0,0 +1,9 @@
+// Copyright 2022 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Some boards have issues detecting handedness using the vbus voltage.
+// Such as Elite-C v3, but not v3.1 on. Also apparently some ProMicro boards.
+// For those boands, use usb detection instead.
+// #define SPLIT_USB_DETECT
diff --git a/keyboards/handwired/hillside/52/keymaps/default_dot_c/keymap.c b/keyboards/handwired/hillside/52/keymaps/default_dot_c/keymap.c
new file mode 100644
index 0000000000..f0c5b755d5
--- /dev/null
+++ b/keyboards/handwired/hillside/52/keymaps/default_dot_c/keymap.c
@@ -0,0 +1,64 @@
+// Copyright 2022 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY = 0,
+ _NAV,
+ _SYM,
+ _ADJUST,
+};
+
+#define xxxxxxx KC_NO
+
+#define LY_NAV MO(_NAV)
+#define LY_SYM MO(_SYM)
+#define LY_ADJ MO(_ADJUST)
+#define ALT_GR OSM(MOD_RALT)
+#define OSM_SFT OSM(MOD_LSFT)
+#define PLY_PAU KC_MEDIA_PLAY_PAUSE
+
+#define UNDO LCTL(KC_Z)
+#define CUT LCTL(KC_X)
+#define COPY LCTL(KC_C)
+#define PASTE LCTL(KC_V)
+#define REDO LCTL(KC_Y)
+// (For OS X, you'll want to change these editing keys to LGUI(KC_Z) etc.)
+
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_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,
+ 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_QUOT, KC_SLSH, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
+ KC_MUTE, KC_ESC, KC_LCTL, KC_LGUI, KC_LALT, OSM_SFT, LY_NAV, LY_SYM , KC_SPC , KC_LALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_NAV] = LAYOUT(
+ COPY , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______,
+ CUT , KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, PASTE , KC_PGUP, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, KC_PGDN,
+ _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , UNDO , REDO , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_TRNS,
+ KC_F11 , KC_F12 , KC_LCTL, _______, _______, _______, _______, LY_ADJ , _______, _______, _______, KC_RCTL, KC_HOME, KC_END
+ ),
+ [_SYM] = LAYOUT(
+ KC_INS, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ CAPSWRD, KC_BSLS, KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, KC_VOLU, KC_RSFT, KC_RCTL, KC_LALT, KC_RGUI, _______,
+ _______, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_MPLY, KC_MUTE, KC_VOLD, KC_0 , KC_1 , KC_2 , xxxxxxx, _______,
+ xxxxxxx, xxxxxxx, _______, _______, _______, _______, LY_ADJ , _______, _______, _______, _______, KC_RCTL, KC_APP, ALT_GR
+ ),
+ [_ADJUST] = LAYOUT(
+ xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, AG_SWAP, CG_SWAP, xxxxxxx, KC_PSCR, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx,
+ xxxxxxx, xxxxxxx, KC_BRIU, xxxxxxx, AG_NORM, CG_NORM, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, xxxxxxx, xxxxxxx,
+ QK_BOOT, xxxxxxx, KC_BRID, xxxxxxx, xxxxxxx, xxxxxxx, EE_CLR, RGB_TOG, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, xxxxxxx, xxxxxxx,
+ XXXXXXX, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, _______, _______, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx
+ ),
+};
+
+// Template:
+// [_INDEX] = LAYOUT(
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+// ),
diff --git a/keyboards/handwired/hillside/52/keymaps/default_dot_c/readme.md b/keyboards/handwired/hillside/52/keymaps/default_dot_c/readme.md
new file mode 100644
index 0000000000..2963e3452d
--- /dev/null
+++ b/keyboards/handwired/hillside/52/keymaps/default_dot_c/readme.md
@@ -0,0 +1,25 @@
+# Default Hillside 52 Layout (in .c format)
+
+This layout is for those who prefer defining their layout in a keymap.c,
+ instead of graphically with a keymap.json.
+It is the same as the [default keymap.json layout](https://github.com/qmk/qmk_firmware/blob/master/keyboards/handwired/hillside/52/keymaps/default),
+ except for having only a QWERTY base layer.
+
+The make and flash commands are
+
+```
+make handwired/hillside/52:default_dot_c
+make handwired/hillside/52:default_doc_c:flash
+
+```
+
+It also serves as a simple, clean layout
+ to verify that the configuration and switches work.
+Use the [QMK Configurator Tester](https://config.qmk.fm/#/test)
+ to see that the switches produce output.
+All the keys should register on the layout tester
+ except for the caps word and the two layer keys.
+The LEDs should glow a nice red.
+If they do not, you may need to clear the persistent EEPROM settings with the
+ EE_CLR key on the adjust layer,
+ or enable them with the RGB_TOG key.
diff --git a/keyboards/handwired/hillside/52/keymaps/default_dot_c/rules.mk b/keyboards/handwired/hillside/52/keymaps/default_dot_c/rules.mk
new file mode 100644
index 0000000000..4711d2ff74
--- /dev/null
+++ b/keyboards/handwired/hillside/52/keymaps/default_dot_c/rules.mk
@@ -0,0 +1 @@
+CAPS_WORD_ENABLE = yes
diff --git a/keyboards/handwired/hillside/52/keymaps/manna-harbour_miryoku/config.h b/keyboards/handwired/hillside/52/keymaps/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..388f6b9a91
--- /dev/null
+++ b/keyboards/handwired/hillside/52/keymaps/manna-harbour_miryoku/config.h
@@ -0,0 +1,38 @@
+// Copyright 2022 Davide Masserut (@mssdvd)
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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
+
+// clang-format off
+#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS
+#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, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
+XXX, XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX, XXX \
+)
+#else
+#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, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
+XXX, XXX, XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX, XXX, XXX \
+)
+#endif
diff --git a/keyboards/handwired/hillside/52/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/handwired/hillside/52/keymaps/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..dbab7f9820
--- /dev/null
+++ b/keyboards/handwired/hillside/52/keymaps/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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/hillside/52/keymaps/via/keymap.c b/keyboards/handwired/hillside/52/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f0c5b755d5
--- /dev/null
+++ b/keyboards/handwired/hillside/52/keymaps/via/keymap.c
@@ -0,0 +1,64 @@
+// Copyright 2022 Michael McCoyd (@mmccoyd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY = 0,
+ _NAV,
+ _SYM,
+ _ADJUST,
+};
+
+#define xxxxxxx KC_NO
+
+#define LY_NAV MO(_NAV)
+#define LY_SYM MO(_SYM)
+#define LY_ADJ MO(_ADJUST)
+#define ALT_GR OSM(MOD_RALT)
+#define OSM_SFT OSM(MOD_LSFT)
+#define PLY_PAU KC_MEDIA_PLAY_PAUSE
+
+#define UNDO LCTL(KC_Z)
+#define CUT LCTL(KC_X)
+#define COPY LCTL(KC_C)
+#define PASTE LCTL(KC_V)
+#define REDO LCTL(KC_Y)
+// (For OS X, you'll want to change these editing keys to LGUI(KC_Z) etc.)
+
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_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,
+ 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_QUOT, KC_SLSH, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
+ KC_MUTE, KC_ESC, KC_LCTL, KC_LGUI, KC_LALT, OSM_SFT, LY_NAV, LY_SYM , KC_SPC , KC_LALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_NAV] = LAYOUT(
+ COPY , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______,
+ CUT , KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, PASTE , KC_PGUP, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, KC_PGDN,
+ _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , UNDO , REDO , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_TRNS,
+ KC_F11 , KC_F12 , KC_LCTL, _______, _______, _______, _______, LY_ADJ , _______, _______, _______, KC_RCTL, KC_HOME, KC_END
+ ),
+ [_SYM] = LAYOUT(
+ KC_INS, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ CAPSWRD, KC_BSLS, KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, KC_VOLU, KC_RSFT, KC_RCTL, KC_LALT, KC_RGUI, _______,
+ _______, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_MPLY, KC_MUTE, KC_VOLD, KC_0 , KC_1 , KC_2 , xxxxxxx, _______,
+ xxxxxxx, xxxxxxx, _______, _______, _______, _______, LY_ADJ , _______, _______, _______, _______, KC_RCTL, KC_APP, ALT_GR
+ ),
+ [_ADJUST] = LAYOUT(
+ xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, AG_SWAP, CG_SWAP, xxxxxxx, KC_PSCR, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx,
+ xxxxxxx, xxxxxxx, KC_BRIU, xxxxxxx, AG_NORM, CG_NORM, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, xxxxxxx, xxxxxxx,
+ QK_BOOT, xxxxxxx, KC_BRID, xxxxxxx, xxxxxxx, xxxxxxx, EE_CLR, RGB_TOG, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, xxxxxxx, xxxxxxx,
+ XXXXXXX, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, _______, _______, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx
+ ),
+};
+
+// Template:
+// [_INDEX] = LAYOUT(
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+// ),
diff --git a/keyboards/handwired/hillside/52/keymaps/via/rules.mk b/keyboards/handwired/hillside/52/keymaps/via/rules.mk
new file mode 100644
index 0000000000..fcd5f229ea
--- /dev/null
+++ b/keyboards/handwired/hillside/52/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+CAPS_WORD_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/handwired/hillside/52/readme.md b/keyboards/handwired/hillside/52/readme.md
new file mode 100644
index 0000000000..3878bc062a
--- /dev/null
+++ b/keyboards/handwired/hillside/52/readme.md
@@ -0,0 +1,29 @@
+# Hillside 52
+
+![hillside](https://imgur.com/eDqDMk7h.png)
+
+[Hillside 52](https://github.com/mmccoyd/hillside)
+ is a split ergonomic keyboard with 3x6+3+5 choc-spaced keys,
+ splayed ring and pinkie columns, aggressive column stagger,
+ a longer thumb arc, an inverted-T arrow cluster and a breakoff outer-pinkie 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/52:default
+
+Flashing example for this keyboard:
+
+ make handwired/hillside/52: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 `QK_BOOT` 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/hillside/52/rules.mk b/keyboards/handwired/hillside/52/rules.mk
new file mode 100644
index 0000000000..2501147ea8
--- /dev/null
+++ b/keyboards/handwired/hillside/52/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
deleted file mode 100644
index 781b43c0ff..0000000000
--- a/keyboards/handwired/hillside/info.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "manufacturer": "mmccoyd",
- "maintainer": "mmccoyd",
-
- "url": "http://github.com/mmccoyd/hillside/"
-}
diff --git a/keyboards/handwired/hillside/readme.md b/keyboards/handwired/hillside/readme.md
index cffb3875aa..b2ea11d420 100644
--- a/keyboards/handwired/hillside/readme.md
+++ b/keyboards/handwired/hillside/readme.md
@@ -1,11 +1,14 @@
# Hillside
-![hillside](https://imgur.com/XW0rX13.png)
+![hillside](https://imgur.com/4POduewh.png)
-Hillside is a small family of split ergonomic keyboards, currently of one.
-Inside this directory is support for each model.
+[Hillside](https://github.com/mmccoyd/hillside)
+ is a small family of split ergonomic keyboards.
+Inside this directory is support for the two smaller models,
+ the 52 and 48.
* Keyboard Maintainer: [Michael McCoyd](https://github.com/mmccoyd)
* Hardware Supported:
- * [Hillside 0_1](https://github.com/qmk/qmk_firmware/blob/master/keyboards/handwired/hillside/0_1): ProMicro/Elite-C and compatible
-* Hardware Availability: https://github.com/mmccoyd/hillside
+ * [Hillside 52](https://github.com/qmk/qmk_firmware/blob/master/keyboards/handwired/hillside/52): ProMicro/Elite-C and compatible
+ * [Hillside 48](https://github.com/qmk/qmk_firmware/blob/master/keyboards/handwired/hillside/48): ProMicro/Elite-C and compatible
+* Hardware Availability: [https://github.com/mmccoyd/hillside](https://github.com/mmccoyd/hillside)
diff --git a/keyboards/handwired/hnah108/config.h b/keyboards/handwired/hnah108/config.h
index e0249ba0c2..825edd40ca 100644
--- a/keyboards/handwired/hnah108/config.h
+++ b/keyboards/handwired/hnah108/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0002
-#define MANUFACTURER HnahKB
-#define PRODUCT Hnah108
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 11
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F7, F6, F5, F4, F1, C7, B4, B5, B6, C6 }
#define MATRIX_COL_PINS { F0, E6, B0, D0, D1, D2, D3, D5, D4, D6, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/hnah108/info.json b/keyboards/handwired/hnah108/info.json
index 71fee54ed9..5671ad4a7e 100644
--- a/keyboards/handwired/hnah108/info.json
+++ b/keyboards/handwired/hnah108/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "hnah108",
+ "keyboard_name": "Hnah108",
+ "manufacturer": "HnahKB",
"url": "",
"maintainer": "HnahKB",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/handwired/hnah40/config.h b/keyboards/handwired/hnah40/config.h
index 123c4ca38a..6d4e8f7d33 100644
--- a/keyboards/handwired/hnah40/config.h
+++ b/keyboards/handwired/hnah40/config.h
@@ -18,13 +18,6 @@ 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 DEVICE_VER 0x0002
-#define MANUFACTURER HnahKB
-#define PRODUCT Hnah40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
@@ -41,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4, B5, B3, D4 }
#define MATRIX_COL_PINS { B0, D7, D6, D5, B2, B1, C0, C1, C2, C3, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/hnah40/info.json b/keyboards/handwired/hnah40/info.json
index df95f0bf94..e4ca3fbb84 100644
--- a/keyboards/handwired/hnah40/info.json
+++ b/keyboards/handwired/hnah40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Hnah40",
+ "manufacturer": "HnahKB",
"url": "https://github.com/vuhopkep/PCB/tree/master/Hnah40-Atmega328p/PCB_V1/PCB",
"maintainer": "HnahKB",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/hnah40rgb/config.h b/keyboards/handwired/hnah40rgb/config.h
index 8204550d00..916fe15a20 100644
--- a/keyboards/handwired/hnah40rgb/config.h
+++ b/keyboards/handwired/hnah40rgb/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER HnahKB
-#define PRODUCT Hnah40V2
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
diff --git a/keyboards/handwired/hnah40rgb/info.json b/keyboards/handwired/hnah40rgb/info.json
index 79a5ddefb2..d00935ec26 100644
--- a/keyboards/handwired/hnah40rgb/info.json
+++ b/keyboards/handwired/hnah40rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Hnah40",
+ "keyboard_name": "Hnah40V2",
+ "manufacturer": "HnahKB",
"url": "",
"maintainer": "HnahKB",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/handwired/ibm122m/config.h b/keyboards/handwired/ibm122m/config.h
index cf65a8b909..e9f99eaba3 100644
--- a/keyboards/handwired/ibm122m/config.h
+++ b/keyboards/handwired/ibm122m/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER IBM
-#define PRODUCT IBM Model M 122 key
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 20
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_COL_PINS { E6, B7, D0, D1, D2, D3, D4, D5, D6, D7, E0, E1, C0, C1, C2, C3, C4, C5, C7, F1 }
#define MATRIX_ROW_PINS { F0, B5, B4, B3, B2, B1, B0, E7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/handwired/ibm122m/info.json b/keyboards/handwired/ibm122m/info.json
index 71f216d32f..970aa57240 100644
--- a/keyboards/handwired/ibm122m/info.json
+++ b/keyboards/handwired/ibm122m/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "IBM Model M 122-key",
+ "keyboard_name": "IBM Model M 122 key",
+ "manufacturer": "IBM",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/ibm_wheelwriter/config.h b/keyboards/handwired/ibm_wheelwriter/config.h
index ecca69fff8..eda98c03b5 100644
--- a/keyboards/handwired/ibm_wheelwriter/config.h
+++ b/keyboards/handwired/ibm_wheelwriter/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8767
-#define PRODUCT_ID 0x5f89
-#define DEVICE_VER 0x0002
-#define MANUFACTURER IBM
-#define PRODUCT ibm6715
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 13
diff --git a/keyboards/handwired/ibm_wheelwriter/info.json b/keyboards/handwired/ibm_wheelwriter/info.json
index 58babe0a94..35e1e8c404 100644
--- a/keyboards/handwired/ibm_wheelwriter/info.json
+++ b/keyboards/handwired/ibm_wheelwriter/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ibm_wheelwriter",
+ "keyboard_name": "6715 Wheelwriter",
+ "manufacturer": "IBM",
"url": "https://github.com/andresteare/qmk_firmware",
"maintainer": "andresteare",
+ "usb": {
+ "vid": "0x8767",
+ "pid": "0x5F89",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/jn68m/config.h b/keyboards/handwired/jn68m/config.h
index 56a3e11696..cabfebbfcd 100644
--- a/keyboards/handwired/jn68m/config.h
+++ b/keyboards/handwired/jn68m/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC714
-#define PRODUCT_ID 0x1010
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MxBlue
-#define PRODUCT JN68M
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, B1, D5, D3, D2 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, E6, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/jn68m/info.json b/keyboards/handwired/jn68m/info.json
index 625b3bb96e..d244bbbb4e 100644
--- a/keyboards/handwired/jn68m/info.json
+++ b/keyboards/handwired/jn68m/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "JN68M",
+ "manufacturer": "MxBlue",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xC714",
+ "pid": "0x1010",
+ "device_version": "0.0.1"
+ },
"bootloader": "atmel-dfu",
"layouts": {
"LAYOUT": {
diff --git a/keyboards/handwired/jopr/config.h b/keyboards/handwired/jopr/config.h
index 7e1da5bbc3..5625f99521 100644
--- a/keyboards/handwired/jopr/config.h
+++ b/keyboards/handwired/jopr/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4DAE
-#define PRODUCT_ID 0x1000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER joelproko
-#define PRODUCT jopr-106-Nl2SR-Cl2nL
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 11
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D6, D2, D4, D3, D5, D7, C6, B6, F5 }
#define MATRIX_COL_PINS { B3, B2, B1, B0, F7, E6, F6, B5, C7, B4, D1 }
-#define UNUSED_PINS { B7 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/jopr/info.json b/keyboards/handwired/jopr/info.json
index 7062f9e318..7da42ae0f4 100644
--- a/keyboards/handwired/jopr/info.json
+++ b/keyboards/handwired/jopr/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "jopr-106",
+ "keyboard_name": "jopr-106-Nl2SR-Cl2nL",
+ "manufacturer": "joelproko",
"url": "https://github.com/joelproko/keyboard_layout_jopr",
"maintainer": "joelproko",
+ "usb": {
+ "vid": "0x4DAE",
+ "pid": "0x1000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/jot50/config.h b/keyboards/handwired/jot50/config.h
index c44ceb3a71..d3ce848df6 100644
--- a/keyboards/handwired/jot50/config.h
+++ b/keyboards/handwired/jot50/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Jotix
-#define PRODUCT Jot50
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -16,7 +9,6 @@
/* pro_micro pin-out */
#define MATRIX_ROW_PINS { D7, E6, B4, B6, B2 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, D3, D2, D1, D0, D4, C6 }
-#define UNUSED_PINS
/* leds */
#define BACKLIGHT_LEVELS 3
diff --git a/keyboards/handwired/jot50/info.json b/keyboards/handwired/jot50/info.json
index 817dd12878..8df364e5a6 100644
--- a/keyboards/handwired/jot50/info.json
+++ b/keyboards/handwired/jot50/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Jot50",
+ "manufacturer": "Jotix",
"url": "",
"maintainer": "jotix",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x12": {
"layout": [
diff --git a/keyboards/handwired/jotanck/config.h b/keyboards/handwired/jotanck/config.h
index db4a51f52f..9468505c44 100644
--- a/keyboards/handwired/jotanck/config.h
+++ b/keyboards/handwired/jotanck/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Jotix
-#define PRODUCT Jotanck
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -16,7 +9,6 @@
/* pro_micro pin-out */
#define MATRIX_ROW_PINS { D7, E6, B6, B2 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, D3, D2, D1, D0, D4, C6 }
-#define UNUSED_PINS
/* leds */
#define JOTANCK_LEDS
diff --git a/keyboards/handwired/jotanck/info.json b/keyboards/handwired/jotanck/info.json
index 914c254849..c0b009c3ae 100644
--- a/keyboards/handwired/jotanck/info.json
+++ b/keyboards/handwired/jotanck/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Jotanck",
+ "manufacturer": "Jotix",
"url": "",
"maintainer": "jotix",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
diff --git a/keyboards/handwired/jotpad16/config.h b/keyboards/handwired/jotpad16/config.h
index 78f28059e5..b0e3ebcf8c 100644
--- a/keyboards/handwired/jotpad16/config.h
+++ b/keyboards/handwired/jotpad16/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Jotix
-#define PRODUCT JotPad16
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
@@ -16,7 +9,6 @@
/* pro_micro pin-out */
#define MATRIX_ROW_PINS { B6, B2, D2, D3 }
#define MATRIX_COL_PINS { E6, D7, B3, B1 }
-#define UNUSED_PINS
/* leds */
#define JOTPAD16_LEDS
diff --git a/keyboards/handwired/jotpad16/info.json b/keyboards/handwired/jotpad16/info.json
index 39a043e9e1..97c2ddbd75 100644
--- a/keyboards/handwired/jotpad16/info.json
+++ b/keyboards/handwired/jotpad16/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "JotPad16",
+ "manufacturer": "Jotix",
"url": "",
"maintainer": "jotix",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x4": {
"layout": [
diff --git a/keyboards/handwired/jscotto/scotto36/info.json b/keyboards/handwired/jscotto/scotto36/info.json
new file mode 100644
index 0000000000..b6828edd21
--- /dev/null
+++ b/keyboards/handwired/jscotto/scotto36/info.json
@@ -0,0 +1,77 @@
+{
+ "manufacturer": "Joe Scotto",
+ "keyboard_name": "Scotto36",
+ "maintainer": "joe-scotto",
+ "bootloader": "caterina",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ // 4, 5, 6, 7, 8, 9, A3, A2, A1, A0
+ "cols": ["D4", "C6", "D7", "E6", "B4", "B5", "F4", "F5", "F6", "F7"],
+
+ // 15, 14, 16, 10
+ "rows": ["B1", "B3", "B2", "B6"]
+ },
+ "processor": "atmega32u4",
+ "url": "",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0000",
+ "vid": "0xFEED"
+ },
+ "layouts": {
+ "LAYOUT_ortho_3x10_6": {
+ "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 },
+
+ // Row 2
+ { "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 },
+
+ // Row 3
+ { "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 },
+
+ // Row 4
+ { "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 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/jscotto/scotto36/keymaps/default/config.h b/keyboards/handwired/jscotto/scotto36/keymaps/default/config.h
new file mode 100644
index 0000000000..8723c294cb
--- /dev/null
+++ b/keyboards/handwired/jscotto/scotto36/keymaps/default/config.h
@@ -0,0 +1,24 @@
+/*
+Copyright 2022 Joe Scotto
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 options
+#define IGNORE_MOD_TAP_INTERRUPT
+#define TAPPING_TERM 135
+#define PERMISSIVE_HOLD
+#define TAPPING_TERM_PER_KEY
diff --git a/keyboards/handwired/jscotto/scotto36/keymaps/default/keymap.c b/keyboards/handwired/jscotto/scotto36/keymaps/default/keymap.c
new file mode 100644
index 0000000000..cd9b1599a5
--- /dev/null
+++ b/keyboards/handwired/jscotto/scotto36/keymaps/default/keymap.c
@@ -0,0 +1,281 @@
+/*
+Copyright 2022 Joe Scotto
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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 <stdio.h>
+char wpm_str[10];
+
+// Tap Dance declarations
+enum {
+ TD_ESC_SPOTLIGHT_EMOJI,
+ TD_ESC_WINDOWS_EMOJI
+};
+
+void td_esc_spotlight_emoji (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ tap_code(KC_ESC);
+ } else if (state->count == 2) {
+ tap_code16(G(KC_SPC));
+ } else if (state->count == 3) {
+ tap_code16(C(G(KC_SPC)));
+ }
+}
+
+void td_esc_windows_emoji (qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ tap_code(KC_ESC);
+ } else if (state->count == 2) {
+ tap_code(KC_LGUI);
+ } else if (state->count == 3) {
+ tap_code16(G(KC_DOT));
+ }
+};
+
+ // Tap Dance definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_spotlight_emoji),
+ [TD_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_windows_emoji)
+};
+
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case TD(TD_ESC_SPOTLIGHT_EMOJI) :
+ case TD(TD_ESC_WINDOWS_EMOJI) :
+ case LGUI_T(KC_SPC) :
+ case LT(1, KC_TAB) :
+ case LT(2, KC_ENT) :
+ return 200;
+ default:
+ return TAPPING_TERM;
+ }
+};
+
+// Layer Names
+enum layer_names {
+ _MAC_DEFAULT,
+ _MAC_CODE,
+ _MAC_NUM,
+ _MAC_FUNC,
+ _WIN_DEFAULT,
+ _WIN_CODE,
+ _WIN_NUM,
+ _WIN_FUNC
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_3x10_6(
+ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
+ KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
+ LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
+ KC_LCTL, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_ESC_SPOTLIGHT_EMOJI)
+ ),
+ [1] = LAYOUT_ortho_3x10_6(
+ KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
+ KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
+ LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
+ KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI)
+ ),
+ [2] = LAYOUT_ortho_3x10_6(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
+ KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI)
+ ),
+ [3] = LAYOUT_ortho_3x10_6(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4),
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
+ KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI)
+ ),
+ [4] = LAYOUT_ortho_3x10_6(
+ KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
+ KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
+ LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
+ KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_ESC_WINDOWS_EMOJI)
+ ),
+ [5] = LAYOUT_ortho_3x10_6(
+ KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
+ KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
+ LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE,KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
+ KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI)
+ ),
+ [6] = LAYOUT_ortho_3x10_6(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
+ KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI)
+ ),
+ [7] = LAYOUT_ortho_3x10_6(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0),
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
+ KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI)
+ )
+};
+
+// OLED
+#ifdef OLED_ENABLE
+// WPM responsiveness
+#define IDLE_FRAMES 5
+#define IDLE_SPEED 20 // Speed at which animation goes into idle
+#define TAP_FRAMES 2
+#define TAP_SPEED 40 // WPM to trigger Bongo
+#define ANIM_FRAME_DURATION 200 // Frame MS
+#define ANIM_SIZE 636 // Number of bytes in array, max 1024
+
+uint32_t anim_timer = 0;
+uint32_t anim_sleep = 0;
+uint8_t current_idle_frame = 0;
+uint8_t current_tap_frame = 0;
+
+static void render_animation(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},
+ };
+
+ 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(); // Enables OLED on 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();
+ }
+ }
+ }
+}
+
+// Draw to OLED
+bool oled_task_user() {
+ // Render Bongo Cat
+ render_animation();
+
+ // WPM text
+ oled_set_cursor(0, 0);
+ sprintf(wpm_str, "%03d", get_current_wpm()); // %03d defines digits to display
+ oled_write(wpm_str, false);
+
+ // Layer text
+ oled_set_cursor(0, 1);
+ switch (get_highest_layer(layer_state)) {
+ case _MAC_DEFAULT :
+ oled_write_P(PSTR("MAC"), false);
+ oled_set_cursor(0, 2);
+ oled_write_P(PSTR("MAIN"), false);
+ break;
+ case _MAC_CODE :
+ oled_write_P(PSTR("MAC"), false);
+ oled_set_cursor(0, 2);
+ oled_write_P(PSTR("CODE"), false);
+ break;
+ case _MAC_NUM :
+ oled_write_P(PSTR("MAC"), false);
+ oled_set_cursor(0, 2);
+ oled_write_P(PSTR("NUM"), false);
+ break;
+ case _MAC_FUNC :
+ oled_write_P(PSTR("MAC"), false);
+ oled_set_cursor(0, 2);
+ oled_write_P(PSTR("FUNC"), false);
+ break;
+ case _WIN_DEFAULT :
+ oled_write_P(PSTR("WIN"), false);
+ oled_set_cursor(0, 2);
+ oled_write_P(PSTR("MAIN"), false);
+ break;
+ case _WIN_CODE :
+ oled_write_P(PSTR("WIN"), false);
+ oled_set_cursor(0, 2);
+ oled_write_P(PSTR("CODE"), false);
+ break;
+ case _WIN_NUM :
+ oled_write_P(PSTR("WIN"), false);
+ oled_set_cursor(0, 2);
+ oled_write_P(PSTR("NUM"), false);
+ break;
+ case _WIN_FUNC :
+ oled_write_P(PSTR("WIN"), false);
+ oled_set_cursor(0, 2);
+ oled_write_P(PSTR("FUNC"), false);
+ break;
+ }
+
+ // Caps lock text
+ led_t led_state = host_keyboard_led_state();
+ oled_set_cursor(0, 3);
+ oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(""), false);
+
+ return false;
+}
+#endif
+
diff --git a/keyboards/handwired/jscotto/scotto36/keymaps/default/rules.mk b/keyboards/handwired/jscotto/scotto36/keymaps/default/rules.mk
new file mode 100644
index 0000000000..6e339da6c6
--- /dev/null
+++ b/keyboards/handwired/jscotto/scotto36/keymaps/default/rules.mk
@@ -0,0 +1,4 @@
+OLED_ENABLE = yes
+WPM_ENABLE = yes
+LTO_ENABLE = yes
+TAP_DANCE_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/handwired/jscotto/scotto36/readme.md b/keyboards/handwired/jscotto/scotto36/readme.md
new file mode 100644
index 0000000000..f38d0231c5
--- /dev/null
+++ b/keyboards/handwired/jscotto/scotto36/readme.md
@@ -0,0 +1,25 @@
+# Scotto36
+
+![Scotto36](https://i.imgur.com/MCGv0ZHh.jpeg)
+
+A 36 key handwired ortholinear ergo keyboard. Featuring an OLED display with Bongo Cat. Case files available [here](https://github.com/joe-scotto/keyboards.git).
+
+- Keyboard Maintainer: [Joe Scotto](https://github.com/joe-scotto)
+- Hardware Supported: ATmega32U4
+- Hardware Availability: [Amazon](https://amazon.com)
+
+
+# Compiling
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/jscotto/scotto36:default
+
+Flashing example for this keyboard:
+
+ make handwired/jscotto/scotto36:default
+
+# Bootloader
+Uses [bootmagic](https://github.com/qmk/qmk_firmware/blob/master/docs/feature_bootmagic.md) allowing you to hold the top left key (0, 0) when plugging the board in 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/handwired/jscotto/scotto36/rules.mk b/keyboards/handwired/jscotto/scotto36/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/handwired/jscotto/scotto36/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/handwired/jtallbean/split_65/config.h b/keyboards/handwired/jtallbean/split_65/config.h
index 196b0bc55d..e3c08722e2 100644
--- a/keyboards/handwired/jtallbean/split_65/config.h
+++ b/keyboards/handwired/jtallbean/split_65/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER jtallbean
-#define PRODUCT split_65
-
/* key matrix size */
#define MATRIX_ROWS 10 // Double rows for split keyboards. split_65 has 5, so define 10
#define MATRIX_COLS 9
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { C6, B5, B4, D7, D6, D4, D2, D3, B7 } // B7 is not actually used, but it is needed since # of entries must equal 9
#define MATRIX_ROW_PINS_RIGHT { E6, F0, F1, F7, D7 }
#define MATRIX_COL_PINS_RIGHT { B4, B5, B6, C6, C7, D4, D6, D3, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/jtallbean/split_65/info.json b/keyboards/handwired/jtallbean/split_65/info.json
index a4082533a1..0cc04c93dc 100644
--- a/keyboards/handwired/jtallbean/split_65/info.json
+++ b/keyboards/handwired/jtallbean/split_65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "split_65",
+ "manufacturer": "jtallbean",
"url": "",
"maintainer": "jtallbean",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/handwired/juliet/config.h b/keyboards/handwired/juliet/config.h
index 5189017dfb..4b8cc99995 100644
--- a/keyboards/handwired/juliet/config.h
+++ b/keyboards/handwired/juliet/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x6B62
-#define PRODUCT_ID 0x4069
-#define DEVICE_VER 0x0001
-#define MANUFACTURER nacly
-#define PRODUCT juliet
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/handwired/juliet/info.json b/keyboards/handwired/juliet/info.json
index 9d80b112d6..053b662e4d 100644
--- a/keyboards/handwired/juliet/info.json
+++ b/keyboards/handwired/juliet/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "juliet",
+ "manufacturer": "nacly",
"url": "https://github.com/Na-Cly/juliet",
"maintainer": "Na-Cly",
+ "usb": {
+ "vid": "0x6B62",
+ "pid": "0x4069",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"1.5u", "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}, {"label":"1.5u", "x":11.5, "y":0, "w":1.5}, {"label":"1.75u", "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}, {"label":"2.25u", "x":10.75, "y":1, "w":2.25}, {"label":"1.25u", "x":0, "y":2, "w":1.25}, {"x":1.25, "y":2}, {"x":2.25, "y":2}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "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}, {"label":"1.75u", "x":11.25, "y":2, "w":1.75}, {"label":"1.25u", "x":0, "y":3, "w":1.25}, {"label":"1u", "x":1.25, "y":3}, {"label":"1.25u", "x":2.25, "y":3, "w":1.25}, {"label":"2.25u", "x":3.5, "y":3, "w":2.25}, {"label":"1u", "x":5.75, "y":3}, {"label":"2.75u", "x":6.75, "y":3, "w":2.75}, {"label":"1.25u", "x":9.5, "y":3, "w":1.25}, {"label":"1u", "x":10.75, "y":3}, {"label":"1.25u", "x":11.75, "y":3, "w":1.25}]
diff --git a/keyboards/handwired/k8split/config.h b/keyboards/handwired/k8split/config.h
index c1afef9a33..58708012f6 100644
--- a/keyboards/handwired/k8split/config.h
+++ b/keyboards/handwired/k8split/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC81D
-#define PRODUCT_ID 0xC868
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ckat
-#define PRODUCT k8split
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 8
diff --git a/keyboards/handwired/k8split/info.json b/keyboards/handwired/k8split/info.json
index b7a39c56c7..c4da6abfb4 100644
--- a/keyboards/handwired/k8split/info.json
+++ b/keyboards/handwired/k8split/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "k8split",
+ "manufacturer": "Ckat",
"url": "",
"maintainer": "Ckath",
+ "usb": {
+ "vid": "0xC81D",
+ "pid": "0xC868",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/k_numpad17/config.h b/keyboards/handwired/k_numpad17/config.h
index 849460520a..ebe38b9d31 100644
--- a/keyboards/handwired/k_numpad17/config.h
+++ b/keyboards/handwired/k_numpad17/config.h
@@ -18,12 +18,6 @@ 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 Handwired
-#define PRODUCT K-Numpad17
#define TAPPING_TERM 400
@@ -35,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D1, D4, C6, D7, E6 }
#define MATRIX_COL_PINS { B2, B1, F6 , F4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/k_numpad17/info.json b/keyboards/handwired/k_numpad17/info.json
index a382df0081..10dc814fc7 100644
--- a/keyboards/handwired/k_numpad17/info.json
+++ b/keyboards/handwired/k_numpad17/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "K-Numpad17",
+ "manufacturer": "Handwired",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_5x4": {
"layout": [
diff --git a/keyboards/handwired/kbod/config.h b/keyboards/handwired/kbod/config.h
index 8cf38f59dc..44046dcfa1 100644
--- a/keyboards/handwired/kbod/config.h
+++ b/keyboards/handwired/kbod/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER fudanchii
-#define PRODUCT kbod
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5, B6, B7, D6 }
#define MATRIX_COL_PINS { D0, D1, F0, F1, F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/kbod/info.json b/keyboards/handwired/kbod/info.json
index 2026bde377..3c62ad9f74 100644
--- a/keyboards/handwired/kbod/info.json
+++ b/keyboards/handwired/kbod/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "kbod",
+ "manufacturer": "fudanchii",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/kbod/keymaps/default/keymap.c b/keyboards/handwired/kbod/keymaps/default/keymap.c
index 333f8a769f..0ffc3e9d97 100644
--- a/keyboards/handwired/kbod/keymaps/default/keymap.c
+++ b/keyboards/handwired/kbod/keymaps/default/keymap.c
@@ -89,7 +89,7 @@ void matrix_init_user(void) {
}
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
if (layer) {
PORTC |= _BV(PC7);
} else {
diff --git a/keyboards/handwired/ks63/config.h b/keyboards/handwired/ks63/config.h
index b75346e6f5..565c48ab9e 100644
--- a/keyboards/handwired/ks63/config.h
+++ b/keyboards/handwired/ks63/config.h
@@ -20,13 +20,6 @@ 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 0x3061
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kleshwong
-#define PRODUCT ks63
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
diff --git a/keyboards/handwired/ks63/info.json b/keyboards/handwired/ks63/info.json
index fe3ee22bf7..600bd2252d 100644
--- a/keyboards/handwired/ks63/info.json
+++ b/keyboards/handwired/ks63/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ks60",
+ "keyboard_name": "ks63",
+ "manufacturer": "kleshwong",
"url": "",
"maintainer": "Klesh Wong",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3061",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/lagrange/config.h b/keyboards/handwired/lagrange/config.h
index 309603ad39..14a5767272 100644
--- a/keyboards/handwired/lagrange/config.h
+++ b/keyboards/handwired/lagrange/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x2718
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Dimitris Papavasiliou
-#define PRODUCT Lagrange
-
#define EE_HANDS
#define SPLIT_USB_DETECT
@@ -37,7 +30,6 @@
#define MATRIX_COL_PINS { B4, B5, D7, B6, C6, D6 }
#define MATRIX_ROW_PINS_RIGHT { B5, B4, D7, B6, C6, D6, D4 }
#define MATRIX_COL_PINS_RIGHT { C7, F7, F6, F5, F4, F1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/handwired/lagrange/info.json b/keyboards/handwired/lagrange/info.json
index 48714c75c3..9dd3891ebc 100644
--- a/keyboards/handwired/lagrange/info.json
+++ b/keyboards/handwired/lagrange/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Lagrange",
+ "manufacturer": "Dimitris Papavasiliou",
"url": "https://github.com/dpapavas/lagrange-keyboard",
"maintainer": "dpapavas",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x2718",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/lagrange/keymaps/dpapavas/keymap.c b/keyboards/handwired/lagrange/keymaps/dpapavas/keymap.c
index bbcb83913f..c2eb4406d1 100644
--- a/keyboards/handwired/lagrange/keymaps/dpapavas/keymap.c
+++ b/keyboards/handwired/lagrange/keymaps/dpapavas/keymap.c
@@ -61,7 +61,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_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, RESET, 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, QK_BOOT, QK_BOOT, KC_TRNS, KC_TRNS, 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/lagrange/readme.md b/keyboards/handwired/lagrange/readme.md
index 5d7f5bb08e..a4157771a4 100644
--- a/keyboards/handwired/lagrange/readme.md
+++ b/keyboards/handwired/lagrange/readme.md
@@ -16,6 +16,6 @@ Flashing example for this keyboard:
make handwired/lagrange:default:flash
-To program the keyboard you'll need to reset it. This can be accomplished, either through the reset button, accessible via a hole in the bottom cover, or, if you've assigned the `RESET` keycode to a key, by pressing that key.
+To program the keyboard you'll need to reset it. This can be accomplished, either through the reset button, accessible via a hole in the bottom cover, or, if you've assigned the `QK_BOOT` keycode to a key, by pressing that key.
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/leftynumpad/config.h b/keyboards/handwired/leftynumpad/config.h
index db89057e62..e05ceae098 100644
--- a/keyboards/handwired/leftynumpad/config.h
+++ b/keyboards/handwired/leftynumpad/config.h
@@ -19,12 +19,6 @@ 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 0xBEEF
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Tom Swartz
-#define PRODUCT LeftyNumpad
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 5
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7 }
#define MATRIX_COL_PINS { E6, B4, B5, B6, B2 }
-#define UNUSED_PINS {D3, D2, B0, D5, B3, B1, F7, F6, F5, F4 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/leftynumpad/info.json b/keyboards/handwired/leftynumpad/info.json
index bd9f1919cf..c25e9c758e 100644
--- a/keyboards/handwired/leftynumpad/info.json
+++ b/keyboards/handwired/leftynumpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "LeftyNumpad",
+ "manufacturer": "Tom Swartz",
"url": "https://github.com/tomswartz07",
"maintainer": "Tom Swartz",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xBEEF",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/lemonpad/config.h b/keyboards/handwired/lemonpad/config.h
index c4e488f572..7db499aba4 100644
--- a/keyboards/handwired/lemonpad/config.h
+++ b/keyboards/handwired/lemonpad/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6473
-#define PRODUCT_ID 0x4C50
-#define DEVICE_VER 0x0001
-#define MANUFACTURER dari-studios
-#define PRODUCT lemonpad
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
@@ -44,7 +37,6 @@
{ E6, D7, C6 }, \
{ B4, B5, D4 } \
}
-#define UNUSED_PINS
//#define BACKLIGHT_PIN B7
//#define BACKLIGHT_LEVELS 3
diff --git a/keyboards/handwired/lemonpad/info.json b/keyboards/handwired/lemonpad/info.json
index e9d13d147f..e2824f8fa7 100644
--- a/keyboards/handwired/lemonpad/info.json
+++ b/keyboards/handwired/lemonpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "lemonpad",
+ "manufacturer": "dari-studios",
"url": "",
"maintainer": "dari-studios",
+ "usb": {
+ "vid": "0x6473",
+ "pid": "0x4C50",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/lemonpad/readme.md b/keyboards/handwired/lemonpad/readme.md
index 4c1c2082e9..788bca6b43 100644
--- a/keyboards/handwired/lemonpad/readme.md
+++ b/keyboards/handwired/lemonpad/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/handwired/lovelive9/config.h b/keyboards/handwired/lovelive9/config.h
index 9a55ee95f3..42974d48a5 100644
--- a/keyboards/handwired/lovelive9/config.h
+++ b/keyboards/handwired/lovelive9/config.h
@@ -3,13 +3,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0007
-#define DEVICE_VER 0x0001
-#define MANUFACTURER numazu Keyboards
-#define PRODUCT lovelive9
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 9
@@ -20,7 +13,6 @@
#define DIODE_DIRECTION COL2ROW
-#define UNUSED_PINS
/* ws2812 RGB LED */
#define RGB_DI_PIN D3
diff --git a/keyboards/handwired/lovelive9/info.json b/keyboards/handwired/lovelive9/info.json
index c7ef2cf83c..7f8bd65fae 100644
--- a/keyboards/handwired/lovelive9/info.json
+++ b/keyboards/handwired/lovelive9/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "lovelive9",
+ "manufacturer": "numazu Keyboards",
"url": "https://github.com/ginjake",
"maintainer": "ginjake",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/m40/5x5_macropad/config.h b/keyboards/handwired/m40/5x5_macropad/config.h
index 4f71b79d43..fb9938c9d6 100644
--- a/keyboards/handwired/m40/5x5_macropad/config.h
+++ b/keyboards/handwired/m40/5x5_macropad/config.h
@@ -5,13 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER m40
-#define PRODUCT macropad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 5
@@ -28,7 +21,6 @@
*/
#define MATRIX_ROW_PINS { B5, B4, E6, D7, C6 }
#define MATRIX_COL_PINS { B6, B2, B3, B1, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/m40/5x5_macropad/info.json b/keyboards/handwired/m40/5x5_macropad/info.json
index 7d5ae8c6cb..1b0d95bf2d 100644
--- a/keyboards/handwired/m40/5x5_macropad/info.json
+++ b/keyboards/handwired/m40/5x5_macropad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "5x5_macropad",
+ "manufacturer": "m40",
"url": "https://www.thingiverse.com/thing:5239739",
"maintainer": "m40-dev",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x5": {
"layout": [
diff --git a/keyboards/handwired/m40/5x5_macropad/readme.md b/keyboards/handwired/m40/5x5_macropad/readme.md
index 7ce38d6593..457b8cf4ee 100644
--- a/keyboards/handwired/m40/5x5_macropad/readme.md
+++ b/keyboards/handwired/m40/5x5_macropad/readme.md
@@ -23,4 +23,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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**: Press the key mapped to `RESET` if it is available. In default layout (if you flashed it already once) it is the top-right button.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. In default layout (if you flashed it already once) it is the top-right button.
diff --git a/keyboards/handwired/macroboard/config.h b/keyboards/handwired/macroboard/config.h
index 42a4deb5d8..0d2aba2a38 100644
--- a/keyboards/handwired/macroboard/config.h
+++ b/keyboards/handwired/macroboard/config.h
@@ -19,12 +19,6 @@ 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 0x2137
-#define DEVICE_VER 0x0001
-#define MANUFACTURER QMK
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 6
@@ -39,7 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/macroboard/f401/rules.mk b/keyboards/handwired/macroboard/f401/rules.mk
index bcb612f5cc..3ce53701da 100644
--- a/keyboards/handwired/macroboard/f401/rules.mk
+++ b/keyboards/handwired/macroboard/f401/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/handwired/macroboard/f411/config.h b/keyboards/handwired/macroboard/f411/config.h
index d0d88f0c9e..31cb5fa11b 100644
--- a/keyboards/handwired/macroboard/f411/config.h
+++ b/keyboards/handwired/macroboard/f411/config.h
@@ -21,7 +21,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { A15, B3, B4, B5, B7 }
#define MATRIX_COL_PINS { B12, B13, B14, B15, A8, A10 }
-#define UNUSED_PINS
#define AUDIO_INIT_DELAY
#define AUDIO_PIN B10
diff --git a/keyboards/handwired/macroboard/f411/rules.mk b/keyboards/handwired/macroboard/f411/rules.mk
index 1bb37ec02c..0a580be07a 100644
--- a/keyboards/handwired/macroboard/f411/rules.mk
+++ b/keyboards/handwired/macroboard/f411/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/handwired/macroboard/info.json b/keyboards/handwired/macroboard/info.json
index 2aa44eb803..cb3645f358 100644
--- a/keyboards/handwired/macroboard/info.json
+++ b/keyboards/handwired/macroboard/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "macroboard",
+ "keyboard_name": "Macroboard",
+ "manufacturer": "QMK",
"url": "",
"maintainer": "Michał Szczepaniak",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x2137",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x6": {
"layout": [
diff --git a/keyboards/handwired/macroboard/keymaps/via/keymap.c b/keyboards/handwired/macroboard/keymaps/via/keymap.c
index f074fede51..63d2768e27 100644
--- a/keyboards/handwired/macroboard/keymaps/via/keymap.c
+++ b/keyboards/handwired/macroboard/keymaps/via/keymap.c
@@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, RGB_MODE_FORWARD, RESET, KC_SPC
+ KC_LCTL, KC_LGUI, RGB_TOG, RGB_MODE_FORWARD, QK_BOOT, KC_SPC
),
[1] = LAYOUT_ortho_5x6(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/handwired/macroboard/readme.md b/keyboards/handwired/macroboard/readme.md
index ee2351f99f..ea32085bc0 100644
--- a/keyboards/handwired/macroboard/readme.md
+++ b/keyboards/handwired/macroboard/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available, by default 5th column, 5th row
diff --git a/keyboards/handwired/magicforce61/config.h b/keyboards/handwired/magicforce61/config.h
index e54ee545da..ab24503ea0 100644
--- a/keyboards/handwired/magicforce61/config.h
+++ b/keyboards/handwired/magicforce61/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Hexwire
-#define PRODUCT Magicforce 61
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D4 }
#define MATRIX_COL_PINS { B5, B4, B3, B2, B1, B0, E7, E6, F0, F1, F2, F3, F4, F5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/magicforce61/info.json b/keyboards/handwired/magicforce61/info.json
index e4bab8a0d2..2a69b22e2f 100644
--- a/keyboards/handwired/magicforce61/info.json
+++ b/keyboards/handwired/magicforce61/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Magicforce \"61\"",
+ "keyboard_name": "Magicforce 61",
+ "manufacturer": "Hexwire",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/magicforce68/config.h b/keyboards/handwired/magicforce68/config.h
index 0539fab023..7eab860061 100644
--- a/keyboards/handwired/magicforce68/config.h
+++ b/keyboards/handwired/magicforce68/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Hexwire
-#define PRODUCT Magicforce 68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { B2, B0, D3, D2, D1, D0, D4, C6, D7, E6, B4, B5, B6, B7, D6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/magicforce68/info.json b/keyboards/handwired/magicforce68/info.json
index f3ad1287ea..82f329e29d 100644
--- a/keyboards/handwired/magicforce68/info.json
+++ b/keyboards/handwired/magicforce68/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Magicforce 68 Handwired",
+ "keyboard_name": "Magicforce 68",
+ "manufacturer": "Hexwire",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/marauder/config.h b/keyboards/handwired/marauder/config.h
index 7c6a6d74d4..a3165c480d 100644
--- a/keyboards/handwired/marauder/config.h
+++ b/keyboards/handwired/marauder/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D52
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER BB-66
-#define PRODUCT Minshara Marauder
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -43,7 +36,7 @@
#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4, B0 }
#define DIODE_DIRECTION COL2ROW
#define LAYER_STATE_8BIT
-#define QMK_KEYS_PER_SCAN 12 // moar gaming code
+
#define RGB_DI_PIN D3
#ifdef RGB_DI_PIN
#define RGBLED_NUM 7
diff --git a/keyboards/handwired/marauder/info.json b/keyboards/handwired/marauder/info.json
index d2e1be4ff8..8c0e23fafb 100644
--- a/keyboards/handwired/marauder/info.json
+++ b/keyboards/handwired/marauder/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Minshara Marauder",
+ "manufacturer": "BB-66",
"url": "https://imgur.com/a/TvsXpq5",
"maintainer": "BB-66",
+ "usb": {
+ "vid": "0x4D52",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/mechboards_micropad/config.h b/keyboards/handwired/mechboards_micropad/config.h
index f008d596f1..659bed03e2 100644
--- a/keyboards/handwired/mechboards_micropad/config.h
+++ b/keyboards/handwired/mechboards_micropad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar
-#define PRODUCT Mechboards Micropad
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6 }
#define MATRIX_COL_PINS { B2, B3, B1, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/mechboards_micropad/info.json b/keyboards/handwired/mechboards_micropad/info.json
index abbf6e649d..aefc0b89c0 100644
--- a/keyboards/handwired/mechboards_micropad/info.json
+++ b/keyboards/handwired/mechboards_micropad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mechboards Micropad",
+ "manufacturer": "Yiancar",
"url": "",
"maintainer": "yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/handwired/meck_tkl/blackpill_f401/config.h b/keyboards/handwired/meck_tkl/blackpill_f401/config.h
index cca2eac3a9..eff5d5d81f 100644
--- a/keyboards/handwired/meck_tkl/blackpill_f401/config.h
+++ b/keyboards/handwired/meck_tkl/blackpill_f401/config.h
@@ -7,8 +7,6 @@
{ 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
index e01b22e8fd..d2eae19dfb 100644
--- a/keyboards/handwired/meck_tkl/blackpill_f401/rules.mk
+++ b/keyboards/handwired/meck_tkl/blackpill_f401/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/handwired/meck_tkl/config.h b/keyboards/handwired/meck_tkl/config.h
index 7029e22530..07fd3dd314 100644
--- a/keyboards/handwired/meck_tkl/config.h
+++ b/keyboards/handwired/meck_tkl/config.h
@@ -5,13 +5,6 @@
#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
diff --git a/keyboards/handwired/meck_tkl/info.json b/keyboards/handwired/meck_tkl/info.json
index 5976b67584..a8d6e281e2 100644
--- a/keyboards/handwired/meck_tkl/info.json
+++ b/keyboards/handwired/meck_tkl/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "meck_tkl",
+ "keyboard_name": "Meck TKL",
+ "manufacturer": "gabrielkim13",
"url": "github.com/gabrielkim13",
"maintainer": "gabrielkim13",
+ "usb": {
+ "vid": "0x474B",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/handwired/meck_tkl/readme.md b/keyboards/handwired/meck_tkl/readme.md
index ec09047dde..9db9cd222f 100644
--- a/keyboards/handwired/meck_tkl/readme.md
+++ b/keyboards/handwired/meck_tkl/readme.md
@@ -24,7 +24,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
## Wiring instructions
diff --git a/keyboards/handwired/minorca/config.h b/keyboards/handwired/minorca/config.h
index e987ba67f0..4c27d9da4d 100644
--- a/keyboards/handwired/minorca/config.h
+++ b/keyboards/handwired/minorca/config.h
@@ -19,13 +19,6 @@ 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 0x6660
-#define DEVICE_VER 0x0001
-#define MANUFACTURER panc.co
-#define PRODUCT Minorca
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* MinOrca PCB default pin-out */
#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, F7, F6, F5, F4, F1, F0 }
#define MATRIX_ROW_PINS { B0, B1, B2, B3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
@@ -67,9 +59,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-
-/* bootmagic salt key */
-#define BOOTMAGIC_KEY_SALT KC_ESC
-
-/* skip bootmagic and eeconfig */
-#define BOOTMAGIC_KEY_SKIP KC_SPACE
diff --git a/keyboards/handwired/minorca/info.json b/keyboards/handwired/minorca/info.json
index 9882d0cf7e..34b2539a11 100644
--- a/keyboards/handwired/minorca/info.json
+++ b/keyboards/handwired/minorca/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Minorca Handwired",
+ "keyboard_name": "Minorca",
+ "manufacturer": "panc.co",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6660",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/minorca/keymaps/ridingqwerty/keymap.c b/keyboards/handwired/minorca/keymaps/ridingqwerty/keymap.c
index ae490914d5..eac0802e33 100644
--- a/keyboards/handwired/minorca/keymaps/ridingqwerty/keymap.c
+++ b/keyboards/handwired/minorca/keymaps/ridingqwerty/keymap.c
@@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
},
[_SECRET] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- {RESET, _______, _______, _______, SECRET0, SECRET1, _______, _______, _______, _______, VERSION, _______ },
+ {QK_BOOT, _______, _______, _______, SECRET0, SECRET1, _______, _______, _______, _______, VERSION, _______ },
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤
{_______, SECRET4, SECRET8, DEBUG, _______, _______, _______, _______, _______, SECRET7, XXXXXXX, MAKE },
//├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤
diff --git a/keyboards/handwired/ms_sculpt_mobile/astar/config.h b/keyboards/handwired/ms_sculpt_mobile/astar/config.h
index c34b86acb2..aafa6953c7 100644
--- a/keyboards/handwired/ms_sculpt_mobile/astar/config.h
+++ b/keyboards/handwired/ms_sculpt_mobile/astar/config.h
@@ -1,6 +1,4 @@
#pragma once
-#define PRODUCT sculpt mobile astar
-
#define MATRIX_ROW_PINS { D7, C6, D4, D0, D1, D3, D2, E2 }
#define MATRIX_COL_PINS { B4, B5, E6, B7, B6, D6, C7, F7, F6, F4, F5, F1, F0, D5, B0, B1, B2, B3 }
diff --git a/keyboards/handwired/ms_sculpt_mobile/astar/info.json b/keyboards/handwired/ms_sculpt_mobile/astar/info.json
new file mode 100644
index 0000000000..bbdfe24cf3
--- /dev/null
+++ b/keyboards/handwired/ms_sculpt_mobile/astar/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "sculpt mobile astar"
+}
diff --git a/keyboards/handwired/ms_sculpt_mobile/config.h b/keyboards/handwired/ms_sculpt_mobile/config.h
index df478e6d8a..54bc2689a2 100644
--- a/keyboards/handwired/ms_sculpt_mobile/config.h
+++ b/keyboards/handwired/ms_sculpt_mobile/config.h
@@ -19,12 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Microsoftplus
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 18
diff --git a/keyboards/handwired/ms_sculpt_mobile/info.json b/keyboards/handwired/ms_sculpt_mobile/info.json
index 1c171af8f3..a66f43fadc 100644
--- a/keyboards/handwired/ms_sculpt_mobile/info.json
+++ b/keyboards/handwired/ms_sculpt_mobile/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "MS Sculpt Mobile",
+ "manufacturer": "Microsoftplus",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/ms_sculpt_mobile/teensy2pp/config.h b/keyboards/handwired/ms_sculpt_mobile/teensy2pp/config.h
index a69d3fd3b0..7a514a76cb 100644
--- a/keyboards/handwired/ms_sculpt_mobile/teensy2pp/config.h
+++ b/keyboards/handwired/ms_sculpt_mobile/teensy2pp/config.h
@@ -1,6 +1,4 @@
#pragma once
-#define PRODUCT sculpt mobile teensypp
-
#define MATRIX_ROW_PINS { F7, F6, F4, F5, F3, F2, F1, F0 }
#define MATRIX_COL_PINS { B7, D0, D1, D2, D3, D4, D5, D6, D7, E0, E1, C1, C0, C3, C2, C5, C4, C7 }
diff --git a/keyboards/handwired/ms_sculpt_mobile/teensy2pp/info.json b/keyboards/handwired/ms_sculpt_mobile/teensy2pp/info.json
new file mode 100644
index 0000000000..e94752a82d
--- /dev/null
+++ b/keyboards/handwired/ms_sculpt_mobile/teensy2pp/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "sculpt mobile teensypp"
+}
diff --git a/keyboards/handwired/mutepad/config.h b/keyboards/handwired/mutepad/config.h
index 7113063223..bc763fc29d 100644
--- a/keyboards/handwired/mutepad/config.h
+++ b/keyboards/handwired/mutepad/config.h
@@ -5,13 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER JoshwJB
-#define PRODUCT MutePad
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 4
@@ -30,7 +23,6 @@
{ F6 }
#define MATRIX_COL_PINS \
{ B1, B3, B2, B6 }
-#define UNUSED_PINS
/* encoder support */
#define ENCODERS_PAD_A \
diff --git a/keyboards/handwired/mutepad/info.json b/keyboards/handwired/mutepad/info.json
index 60218924a0..1ae80088eb 100644
--- a/keyboards/handwired/mutepad/info.json
+++ b/keyboards/handwired/mutepad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MutePad",
+ "manufacturer": "JoshwJB",
"url": "https://github.com/JoshwJB/MutePad",
"maintainer": "JoshwJB",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/myskeeb/config.h b/keyboards/handwired/myskeeb/config.h
index ef6dcb13b7..0e64b01274 100644
--- a/keyboards/handwired/myskeeb/config.h
+++ b/keyboards/handwired/myskeeb/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device Descriptor Parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0100
-#define MANUFACTURER DAG3
-#define PRODUCT MySKeeb
-
// Key Matrix Size //
// Rows are Doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/handwired/myskeeb/info.json b/keyboards/handwired/myskeeb/info.json
index 27f1d2ae52..8aff23d617 100644
--- a/keyboards/handwired/myskeeb/info.json
+++ b/keyboards/handwired/myskeeb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "myskeeb",
+ "keyboard_name": "MySKeeb",
+ "manufacturer": "DAG3",
"url": "",
"maintainer": "su8044",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/nicekey/config.h b/keyboards/handwired/nicekey/config.h
index 7a41e62a57..4cb41fc431 100644
--- a/keyboards/handwired/nicekey/config.h
+++ b/keyboards/handwired/nicekey/config.h
@@ -19,20 +19,12 @@ 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 0x6464
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Lukas
-#define PRODUCT nicekey
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 1
#define MATRIX_COL_PINS { C6 }
#define MATRIX_ROW_PINS { B6 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/nicekey/info.json b/keyboards/handwired/nicekey/info.json
index fd6b0f1689..3f965bf1b2 100644
--- a/keyboards/handwired/nicekey/info.json
+++ b/keyboards/handwired/nicekey/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "nicekey handwired",
+ "keyboard_name": "nicekey",
+ "manufacturer": "Lukas",
"url": "",
"maintainer": "spydon",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6464",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/not_so_minidox/config.h b/keyboards/handwired/not_so_minidox/config.h
index aa6319cb0f..e137931a1a 100644
--- a/keyboards/handwired/not_so_minidox/config.h
+++ b/keyboards/handwired/not_so_minidox/config.h
@@ -19,13 +19,6 @@ 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 0x3060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER mtdjr
-#define PRODUCT Not So MiniDox
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/handwired/not_so_minidox/info.json b/keyboards/handwired/not_so_minidox/info.json
index 7a458add9c..5d8f7ff960 100644
--- a/keyboards/handwired/not_so_minidox/info.json
+++ b/keyboards/handwired/not_so_minidox/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Not So MiniDox",
+ "manufacturer": "mtdjr",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/novem/config.h b/keyboards/handwired/novem/config.h
index 1b6d8587f0..81fe2d877f 100644
--- a/keyboards/handwired/novem/config.h
+++ b/keyboards/handwired/novem/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Jose I. Martinez
-#define PRODUCT novem
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6, B4, B5 }
#define MATRIX_COL_PINS { B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/novem/info.json b/keyboards/handwired/novem/info.json
index 5c7d24bca0..e1699e99e2 100644
--- a/keyboards/handwired/novem/info.json
+++ b/keyboards/handwired/novem/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "novem",
+ "manufacturer": "Jose I. Martinez",
"url": "",
"maintainer": "Jose I. Martinez",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/nozbe_macro/config.h b/keyboards/handwired/nozbe_macro/config.h
index 996ed08ab6..fe69a0833a 100644
--- a/keyboards/handwired/nozbe_macro/config.h
+++ b/keyboards/handwired/nozbe_macro/config.h
@@ -19,13 +19,6 @@
#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
@@ -35,7 +28,6 @@
{ B0 }
#define MATRIX_COL_PINS \
{ D1, D0, D4, C6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/nozbe_macro/info.json b/keyboards/handwired/nozbe_macro/info.json
index 056ccf9fc1..57a4751bdb 100644
--- a/keyboards/handwired/nozbe_macro/info.json
+++ b/keyboards/handwired/nozbe_macro/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "nozbe_macro",
+ "keyboard_name": "Nozbe Reunion Pad",
+ "manufacturer": "Leon Omelan",
"url": "",
"maintainer": "Leon Omelan",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/numpad20/config.h b/keyboards/handwired/numpad20/config.h
index 4b9ca1baf3..0651b524f8 100644
--- a/keyboards/handwired/numpad20/config.h
+++ b/keyboards/handwired/numpad20/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBB80
-#define PRODUCT_ID 0x0504
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Hexwire
-#define PRODUCT Numpad 20
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F6, B1, B3, B6, B5 }
#define MATRIX_COL_PINS { D1, D0, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/numpad20/info.json b/keyboards/handwired/numpad20/info.json
index f031160e75..b6b277503a 100644
--- a/keyboards/handwired/numpad20/info.json
+++ b/keyboards/handwired/numpad20/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "numpad20 handwired",
+ "keyboard_name": "Numpad 20",
+ "manufacturer": "Hexwire",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xBB80",
+ "pid": "0x0504",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/obuwunkunubi/spaget/config.h b/keyboards/handwired/obuwunkunubi/spaget/config.h
index 1558acb55a..7b0fc127e8 100644
--- a/keyboards/handwired/obuwunkunubi/spaget/config.h
+++ b/keyboards/handwired/obuwunkunubi/spaget/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1337
-#define PRODUCT_ID 0x6969
-#define DEVICE_VER 0x0001
-#define MANUFACTURER obuwunkunubi
-#define PRODUCT spaget
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
diff --git a/keyboards/handwired/obuwunkunubi/spaget/info.json b/keyboards/handwired/obuwunkunubi/spaget/info.json
index fcf98ad293..124f74fd3c 100644
--- a/keyboards/handwired/obuwunkunubi/spaget/info.json
+++ b/keyboards/handwired/obuwunkunubi/spaget/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "spaget",
+ "manufacturer": "obuwunkunubi",
"url": "",
"maintainer": "obuwunkunubi",
+ "usb": {
+ "vid": "0x1337",
+ "pid": "0x6969",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/oem_ansi_fullsize/config.h b/keyboards/handwired/oem_ansi_fullsize/config.h
index 710b4a871b..0ba0cb3897 100644
--- a/keyboards/handwired/oem_ansi_fullsize/config.h
+++ b/keyboards/handwired/oem_ansi_fullsize/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Cian Johnston
-#define PRODUCT oem_ansi_fullsize
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 22
@@ -49,7 +42,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ C3, C2, C1, C0, E1, E0, D7, E6, D5, D4, D3, D2, D1, D0, B7, B0, B1, B2, B3, B4, B5, F6 }
// C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF CG CH CI CJ CK CL
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/oem_ansi_fullsize/info.json b/keyboards/handwired/oem_ansi_fullsize/info.json
index 1ab1559fc0..9d86df7075 100644
--- a/keyboards/handwired/oem_ansi_fullsize/info.json
+++ b/keyboards/handwired/oem_ansi_fullsize/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "oem_ansi_fullsize",
+ "manufacturer": "Cian Johnston",
"url": "https://github.com/johnstcn/qmk",
"maintainer": "johnstcn",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_fullsize_ansi": {
"layout": [
diff --git a/keyboards/handwired/oem_iso_fullsize/config.h b/keyboards/handwired/oem_iso_fullsize/config.h
index 566af03b0f..5270c77f47 100644
--- a/keyboards/handwired/oem_iso_fullsize/config.h
+++ b/keyboards/handwired/oem_iso_fullsize/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x9856 // "Gamdias"
-#define PRODUCT_ID 0x7070
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Gamdias
-#define PRODUCT teclado_oscar
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 21
diff --git a/keyboards/handwired/oem_iso_fullsize/info.json b/keyboards/handwired/oem_iso_fullsize/info.json
index 6df2a57ca7..a3736dc768 100644
--- a/keyboards/handwired/oem_iso_fullsize/info.json
+++ b/keyboards/handwired/oem_iso_fullsize/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "oem_iso_fullsize",
+ "keyboard_name": "teclado_oscar",
+ "manufacturer": "Gamdias",
"url": "https://github.com/andresteare/qmk_firmware",
"maintainer": "andresteare",
+ "usb": {
+ "vid": "0x9856",
+ "pid": "0x7070",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/onekey/blackpill_f401/config.h b/keyboards/handwired/onekey/blackpill_f401/config.h
index 3825d3f7ec..2554e2207c 100644
--- a/keyboards/handwired/onekey/blackpill_f401/config.h
+++ b/keyboards/handwired/onekey/blackpill_f401/config.h
@@ -18,11 +18,8 @@
#include "config_common.h"
-#define PRODUCT Onekey Blackpill STM32F401
-
#define MATRIX_COL_PINS { B0 }
#define MATRIX_ROW_PINS { A7 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN A0
#define BACKLIGHT_PWM_DRIVER PWMD5
diff --git a/keyboards/handwired/onekey/blackpill_f401/info.json b/keyboards/handwired/onekey/blackpill_f401/info.json
new file mode 100644
index 0000000000..50afb4b9b0
--- /dev/null
+++ b/keyboards/handwired/onekey/blackpill_f401/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Blackpill STM32F401"
+}
diff --git a/keyboards/handwired/onekey/blackpill_f401/rules.mk b/keyboards/handwired/onekey/blackpill_f401/rules.mk
index 264e71d0b5..1fec226e9b 100644
--- a/keyboards/handwired/onekey/blackpill_f401/rules.mk
+++ b/keyboards/handwired/onekey/blackpill_f401/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/handwired/onekey/blackpill_f411/config.h b/keyboards/handwired/onekey/blackpill_f411/config.h
index 3797217153..9e9737fbf5 100644
--- a/keyboards/handwired/onekey/blackpill_f411/config.h
+++ b/keyboards/handwired/onekey/blackpill_f411/config.h
@@ -18,11 +18,8 @@
#include "config_common.h"
-#define PRODUCT Onekey Blackpill STM32F411
-
#define MATRIX_COL_PINS { B0 }
#define MATRIX_ROW_PINS { A7 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN A0
#define BACKLIGHT_PWM_DRIVER PWMD5
diff --git a/keyboards/handwired/onekey/blackpill_f411/info.json b/keyboards/handwired/onekey/blackpill_f411/info.json
new file mode 100644
index 0000000000..0b2c14d5b9
--- /dev/null
+++ b/keyboards/handwired/onekey/blackpill_f411/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Blackpill STM32F411"
+}
diff --git a/keyboards/handwired/onekey/blackpill_f411/rules.mk b/keyboards/handwired/onekey/blackpill_f411/rules.mk
index 75bc794ef0..cd1657335d 100644
--- a/keyboards/handwired/onekey/blackpill_f411/rules.mk
+++ b/keyboards/handwired/onekey/blackpill_f411/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h
index 44ec0bfc6e..f4b589c6d2 100755
--- a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h
+++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h
@@ -18,11 +18,8 @@
#include "config_common.h"
-#define PRODUCT Onekey Blackpill STM32F411 TinyUF2
-
#define MATRIX_COL_PINS { B0 }
#define MATRIX_ROW_PINS { A7 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN A0
#define BACKLIGHT_PWM_DRIVER PWMD5
diff --git a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/info.json b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/info.json
new file mode 100644
index 0000000000..59cdec59f7
--- /dev/null
+++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Blackpill STM32F411 TinyUF2"
+}
diff --git a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk
index 70180ee790..2c38e9b580 100755
--- a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk
+++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = tinyuf2
diff --git a/keyboards/handwired/onekey/bluepill/config.h b/keyboards/handwired/onekey/bluepill/config.h
index 3eb7699a8b..0f85ad91c7 100644
--- a/keyboards/handwired/onekey/bluepill/config.h
+++ b/keyboards/handwired/onekey/bluepill/config.h
@@ -18,11 +18,8 @@
#include "config_common.h"
-#define PRODUCT Onekey Bluepill STM32F103
-
#define MATRIX_COL_PINS { B0 }
#define MATRIX_ROW_PINS { A7 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN A0
#define BACKLIGHT_PWM_DRIVER PWMD2
diff --git a/keyboards/handwired/onekey/bluepill/info.json b/keyboards/handwired/onekey/bluepill/info.json
new file mode 100644
index 0000000000..2126c62b05
--- /dev/null
+++ b/keyboards/handwired/onekey/bluepill/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Bluepill STM32F103"
+}
diff --git a/keyboards/handwired/onekey/bluepill_f103c6/board.h b/keyboards/handwired/onekey/bluepill_f103c6/board.h
new file mode 100644
index 0000000000..4889f351a6
--- /dev/null
+++ b/keyboards/handwired/onekey/bluepill_f103c6/board.h
@@ -0,0 +1,6 @@
+// Copyright 2022 Sergey Vlasov (@sigprof)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include_next <board.h>
+
+#undef STM32F103xB
+#define STM32F103x6
diff --git a/keyboards/handwired/onekey/bluepill_f103c6/config.h b/keyboards/handwired/onekey/bluepill_f103c6/config.h
new file mode 100644
index 0000000000..903277bd3b
--- /dev/null
+++ b/keyboards/handwired/onekey/bluepill_f103c6/config.h
@@ -0,0 +1,38 @@
+/* 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"
+
+#define MATRIX_COL_PINS { B0 }
+#define MATRIX_ROW_PINS { A7 }
+#define UNUSED_PINS
+
+#define BACKLIGHT_PIN A0
+#define BACKLIGHT_PWM_DRIVER PWMD2
+#define BACKLIGHT_PWM_CHANNEL 1
+
+#define RGB_DI_PIN A1
+
+#define ADC_PIN A0
+
+// This code does not fit into the really small flash of STM32F103x6 together
+// with CONSOLE_ENABLE=yes, and the debugging console is probably more
+// important for the "okeney" testing firmware. In a real firmware you may be
+// able to use these features if you keep the debugging console disabled.
+#define NO_ACTION_LAYER
+#define NO_ACTION_TAPPING
diff --git a/keyboards/handwired/onekey/bluepill_f103c6/halconf.h b/keyboards/handwired/onekey/bluepill_f103c6/halconf.h
new file mode 100644
index 0000000000..923b4e52d2
--- /dev/null
+++ b/keyboards/handwired/onekey/bluepill_f103c6/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/onekey/bluepill_f103c6/info.json b/keyboards/handwired/onekey/bluepill_f103c6/info.json
new file mode 100644
index 0000000000..0ef180f6ec
--- /dev/null
+++ b/keyboards/handwired/onekey/bluepill_f103c6/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Bluepill STM32F103C6"
+}
diff --git a/keyboards/handwired/onekey/bluepill_f103c6/mcuconf.h b/keyboards/handwired/onekey/bluepill_f103c6/mcuconf.h
new file mode 100644
index 0000000000..5e94a97e21
--- /dev/null
+++ b/keyboards/handwired/onekey/bluepill_f103c6/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/onekey/bluepill_f103c6/readme.md b/keyboards/handwired/onekey/bluepill_f103c6/readme.md
new file mode 100644
index 0000000000..65ba9b0d4f
--- /dev/null
+++ b/keyboards/handwired/onekey/bluepill_f103c6/readme.md
@@ -0,0 +1,7 @@
+# STM32F103C6xx Bluepill onekey
+
+* Supported hardware: Bluepill boards with the STM32F103C**6**xx chips
+
+Note that STM32F103C6xx chips have only 32 KiB of flash and 10 KiB of RAM, and the stm32duino bootloader occupies 8 KiB of flash, leaving only 24 KiB for the firmware, therefore the capabilities of this board are severely restricted in comparison to proper Bluepill boards with STM32F103CBxx or STM32F103C8xx chips (128 or 64 KiB of flash and 20 KiB of RAM). You may need to disable many features in the QMK firmware to bring its compiled size below 24 KiB. Please avoid designing new keyboards with these MCUs unless you are stuck with some hardware that you already have and don't want to just throw away.
+
+To trigger keypress, short together pins *B0* and *A7*.
diff --git a/keyboards/handwired/onekey/bluepill_f103c6/rules.mk b/keyboards/handwired/onekey/bluepill_f103c6/rules.mk
new file mode 100644
index 0000000000..f2280a1a59
--- /dev/null
+++ b/keyboards/handwired/onekey/bluepill_f103c6/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+MCU = STM32F103
+
+# Bootloader selection
+# Cannot use `BOOTLOADER = stm32duino` due to the need to override
+# `MCU_LDSCRIPT`, therefore all parameters need to be specified here manually.
+OPT_DEFS += -DBOOTLOADER_STM32DUINO
+MCU_LDSCRIPT = STM32F103x6_stm32duino_bootloader
+BOARD = STM32_F103_STM32DUINO
+BOOTLOADER_TYPE = stm32duino
+DFU_ARGS = -d 1EAF:0003 -a 2 -R
+DFU_SUFFIX_ARGS = -v 1EAF -p 0003
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+
+# LTO is required to fit the firmware into the available 24K of flash
+LTO_ENABLE = yes
+
+# Disable some features which still don't fit into flash even with LTO
+MOUSEKEY_ENABLE = no
+NKRO_ENABLE = no
+
+# EEPROM emulation not supported yet (need to implement a proper firmware size
+# check first, otherwise the chance of the EEPROM backing store overwriting
+# some part of the firmware code is really high).
+EEPROM_DRIVER = transient
diff --git a/keyboards/handwired/onekey/config.h b/keyboards/handwired/onekey/config.h
index f491d4d393..f1ce6d9491 100644
--- a/keyboards/handwired/onekey/config.h
+++ b/keyboards/handwired/onekey/config.h
@@ -17,12 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* 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 1
#define MATRIX_COLS 1
@@ -42,6 +36,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_RESYNC_ENABLE
#define TAPPING_TERM 500
+#define PERMISSIVE_HOLD
/*
* Feature disable options
diff --git a/keyboards/handwired/onekey/elite_c/config.h b/keyboards/handwired/onekey/elite_c/config.h
index f495a1c38b..83eded68de 100644
--- a/keyboards/handwired/onekey/elite_c/config.h
+++ b/keyboards/handwired/onekey/elite_c/config.h
@@ -18,11 +18,8 @@
#include "config_common.h"
-#define PRODUCT Onekey Elite-C
-
#define MATRIX_COL_PINS { F4 }
#define MATRIX_ROW_PINS { F5 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B6
@@ -30,3 +27,6 @@
#define RGB_CI_PIN B1
#define ADC_PIN F6
+
+#define QMK_WAITING_TEST_BUSY_PIN F6
+#define QMK_WAITING_TEST_YIELD_PIN F7
diff --git a/keyboards/handwired/onekey/elite_c/info.json b/keyboards/handwired/onekey/elite_c/info.json
new file mode 100644
index 0000000000..d86f8b4395
--- /dev/null
+++ b/keyboards/handwired/onekey/elite_c/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Elite-C"
+}
diff --git a/keyboards/handwired/onekey/evb_wb32f3g71/config.h b/keyboards/handwired/onekey/evb_wb32f3g71/config.h
index 91ae8b8996..722aa59821 100644
--- a/keyboards/handwired/onekey/evb_wb32f3g71/config.h
+++ b/keyboards/handwired/onekey/evb_wb32f3g71/config.h
@@ -4,8 +4,5 @@
#include "config_common.h"
-#define PRODUCT Onekey WB32F3G71
-
#define MATRIX_COL_PINS { B12 }
#define MATRIX_ROW_PINS { B13 }
-#define UNUSED_PINS
diff --git a/keyboards/handwired/onekey/evb_wb32f3g71/info.json b/keyboards/handwired/onekey/evb_wb32f3g71/info.json
new file mode 100644
index 0000000000..c4d9d317e5
--- /dev/null
+++ b/keyboards/handwired/onekey/evb_wb32f3g71/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey WB32F3G71 Eval"
+}
diff --git a/keyboards/handwired/onekey/evb_wb32fq95/config.h b/keyboards/handwired/onekey/evb_wb32fq95/config.h
index 9014d08f52..722aa59821 100644
--- a/keyboards/handwired/onekey/evb_wb32fq95/config.h
+++ b/keyboards/handwired/onekey/evb_wb32fq95/config.h
@@ -4,8 +4,5 @@
#include "config_common.h"
-#define PRODUCT Onekey WB32FQ95
-
#define MATRIX_COL_PINS { B12 }
#define MATRIX_ROW_PINS { B13 }
-#define UNUSED_PINS
diff --git a/keyboards/handwired/onekey/evb_wb32fq95/info.json b/keyboards/handwired/onekey/evb_wb32fq95/info.json
new file mode 100644
index 0000000000..ccc65b2e70
--- /dev/null
+++ b/keyboards/handwired/onekey/evb_wb32fq95/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey WB32FQ95 Eval"
+}
diff --git a/keyboards/handwired/onekey/info.json b/keyboards/handwired/onekey/info.json
index 7455e9f362..46cdc82827 100644
--- a/keyboards/handwired/onekey/info.json
+++ b/keyboards/handwired/onekey/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "onekey handwired",
+ "manufacturer": "QMK",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6465",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_1x1": {
"layout": [
diff --git a/keyboards/handwired/onekey/kb2040/config.h b/keyboards/handwired/onekey/kb2040/config.h
new file mode 100644
index 0000000000..0bf7adf37f
--- /dev/null
+++ b/keyboards/handwired/onekey/kb2040/config.h
@@ -0,0 +1,28 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+#define MATRIX_COL_PINS \
+ { GP4 }
+#define MATRIX_ROW_PINS \
+ { GP5 }
+#define DEBUG_MATRIX_SCAN_RATE
+
+#define QMK_WAITING_TEST_BUSY_PIN GP8
+#define QMK_WAITING_TEST_YIELD_PIN GP9
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP25
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
+
+#define RGB_DI_PIN A1
+
+// settings for the oled keyboard demo with Adafruit 0.91" OLED display on the Stemma QT port
+#define OLED_DISPLAY_128X32
+#define I2C_DRIVER I2CD1
+#define I2C1_SDA_PIN GP12
+#define I2C1_SCL_PIN GP13
+
diff --git a/keyboards/handwired/onekey/kb2040/info.json b/keyboards/handwired/onekey/kb2040/info.json
new file mode 100644
index 0000000000..696b772142
--- /dev/null
+++ b/keyboards/handwired/onekey/kb2040/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey KB2040"
+}
diff --git a/keyboards/handwired/onekey/kb2040/mcuconf.h b/keyboards/handwired/onekey/kb2040/mcuconf.h
new file mode 100644
index 0000000000..57e58e14d7
--- /dev/null
+++ b/keyboards/handwired/onekey/kb2040/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/>.
+ */
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef RP_I2C_USE_I2C0
+#define RP_I2C_USE_I2C0 TRUE
+
+#undef RP_I2C_USE_I2C1
+#define RP_I2C_USE_I2C1 TRUE
diff --git a/keyboards/handwired/onekey/kb2040/readme.md b/keyboards/handwired/onekey/kb2040/readme.md
new file mode 100644
index 0000000000..54ea25a6a5
--- /dev/null
+++ b/keyboards/handwired/onekey/kb2040/readme.md
@@ -0,0 +1,10 @@
+# Adafruit KB2040 onekey with OLED
+
+To trigger keypress, short together pins *GP4* and *GP5*.
+
+Double-tap reset to enter bootloader mode. Copy the built uf2 file to the device by dragging the file to the new USB disk.
+
+## Supported Hardware
+
+* [Adafruit KB2040 - RP2040 Kee Boar](https://www.adafruit.com/product/5302)
+* Optional [128x32 OLED display on the Stemma QT port](https://www.adafruit.com/product/4440)
diff --git a/keyboards/handwired/onekey/kb2040/rules.mk b/keyboards/handwired/onekey/kb2040/rules.mk
new file mode 100644
index 0000000000..624b331bf8
--- /dev/null
+++ b/keyboards/handwired/onekey/kb2040/rules.mk
@@ -0,0 +1,9 @@
+# MCU name
+MCU = RP2040
+BOOTLOADER = rp2040
+
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+
+OPT_DEFS += -DHAL_USE_I2C=TRUE
+
diff --git a/keyboards/handwired/onekey/keymaps/chibios_waiting_test/config.h b/keyboards/handwired/onekey/keymaps/chibios_waiting_test/config.h
new file mode 100644
index 0000000000..0c75fa3044
--- /dev/null
+++ b/keyboards/handwired/onekey/keymaps/chibios_waiting_test/config.h
@@ -0,0 +1,12 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#if !defined(QMK_WAITING_TEST_BUSY_PIN)
+# define QMK_WAITING_TEST_BUSY_PIN A8
+#endif
+
+#if !defined(QMK_WAITING_TEST_YIELD_PIN)
+# define QMK_WAITING_TEST_YIELD_PIN A9
+#endif
diff --git a/keyboards/handwired/onekey/keymaps/chibios_waiting_test/keymap.c b/keyboards/handwired/onekey/keymaps/chibios_waiting_test/keymap.c
new file mode 100644
index 0000000000..ecf67d3b3c
--- /dev/null
+++ b/keyboards/handwired/onekey/keymaps/chibios_waiting_test/keymap.c
@@ -0,0 +1,47 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {LAYOUT_ortho_1x1(KC_A)};
+
+#if defined(__AVR__)
+# pragma message "AVR uses polled waiting by default, running theses tests will not show any difference"
+static inline void chThdSleepMicroseconds(uint32_t us) {
+ wait_us(us);
+}
+#endif
+
+void keyboard_post_init_user(void) {
+ setPinOutput(QMK_WAITING_TEST_BUSY_PIN);
+ setPinOutput(QMK_WAITING_TEST_YIELD_PIN);
+}
+
+static inline void wait_us_polling_with_strobe(uint32_t us) {
+ writePinHigh(QMK_WAITING_TEST_BUSY_PIN);
+ wait_us(us);
+ writePinLow(QMK_WAITING_TEST_BUSY_PIN);
+}
+
+static inline void wait_us_yield_with_strobe(uint32_t us) {
+ writePinHigh(QMK_WAITING_TEST_YIELD_PIN);
+ chThdSleepMicroseconds(us);
+ writePinLow(QMK_WAITING_TEST_YIELD_PIN);
+}
+
+static const uint32_t waiting_values[] = {0, 1, 5, 10, 25, 50, 100, 150, 200, 500, 1000};
+
+void housekeeping_task_user(void) {
+ static uint32_t last_bench = 0;
+ if (timer_elapsed32(last_bench) > 500) {
+ for (int i = 0; i < (sizeof(waiting_values) / sizeof(waiting_values[0])); i++) {
+ wait_us_polling_with_strobe(waiting_values[i]);
+ wait_us(10);
+ }
+ for (int i = 0; i < (sizeof(waiting_values) / sizeof(waiting_values[0])); i++) {
+ wait_us_yield_with_strobe(waiting_values[i]);
+ wait_us(10);
+ }
+ last_bench = timer_read32();
+ }
+}
diff --git a/keyboards/handwired/onekey/keymaps/reset/keymap.c b/keyboards/handwired/onekey/keymaps/reset/keymap.c
index ec1b33e64f..0484209b35 100644
--- a/keyboards/handwired/onekey/keymaps/reset/keymap.c
+++ b/keyboards/handwired/onekey/keymaps/reset/keymap.c
@@ -1,5 +1,5 @@
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- LAYOUT_ortho_1x1(RESET)
+ LAYOUT_ortho_1x1(QK_BOOT)
};
diff --git a/keyboards/handwired/onekey/nucleo_l432kc/config.h b/keyboards/handwired/onekey/nucleo_l432kc/config.h
index 7aa74f6682..b6b36c4cee 100644
--- a/keyboards/handwired/onekey/nucleo_l432kc/config.h
+++ b/keyboards/handwired/onekey/nucleo_l432kc/config.h
@@ -4,11 +4,8 @@
#include "config_common.h"
-#define PRODUCT Onekey L432KC
-
#define MATRIX_COL_PINS { A2 }
#define MATRIX_ROW_PINS { A1 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B8
#define BACKLIGHT_PWM_DRIVER PWMD4
diff --git a/keyboards/handwired/onekey/nucleo_l432kc/info.json b/keyboards/handwired/onekey/nucleo_l432kc/info.json
new file mode 100644
index 0000000000..3f497fc80a
--- /dev/null
+++ b/keyboards/handwired/onekey/nucleo_l432kc/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Nucleo L432KC"
+}
diff --git a/keyboards/handwired/onekey/onekey.c b/keyboards/handwired/onekey/onekey.c
index cbd67012ce..a29f9ea6d0 100644
--- a/keyboards/handwired/onekey/onekey.c
+++ b/keyboards/handwired/onekey/onekey.c
@@ -1 +1,12 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include "onekey.h"
+
+void keyboard_post_init_kb(void) {
+ debug_enable = true;
+ debug_matrix = true;
+ debug_keyboard = true;
+ debug_mouse = true;
+ keyboard_post_init_user();
+}
diff --git a/keyboards/handwired/onekey/promicro/config.h b/keyboards/handwired/onekey/promicro/config.h
index 9c8961d5ca..83eded68de 100644
--- a/keyboards/handwired/onekey/promicro/config.h
+++ b/keyboards/handwired/onekey/promicro/config.h
@@ -18,11 +18,8 @@
#include "config_common.h"
-#define PRODUCT Onekey Pro Micro
-
#define MATRIX_COL_PINS { F4 }
#define MATRIX_ROW_PINS { F5 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B6
@@ -30,3 +27,6 @@
#define RGB_CI_PIN B1
#define ADC_PIN F6
+
+#define QMK_WAITING_TEST_BUSY_PIN F6
+#define QMK_WAITING_TEST_YIELD_PIN F7
diff --git a/keyboards/handwired/onekey/promicro/info.json b/keyboards/handwired/onekey/promicro/info.json
new file mode 100644
index 0000000000..6b35da4d75
--- /dev/null
+++ b/keyboards/handwired/onekey/promicro/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Pro Micro"
+}
diff --git a/keyboards/handwired/onekey/proton_c/config.h b/keyboards/handwired/onekey/proton_c/config.h
index 5600ae33ae..6e8e28edb4 100644
--- a/keyboards/handwired/onekey/proton_c/config.h
+++ b/keyboards/handwired/onekey/proton_c/config.h
@@ -18,11 +18,8 @@
#include "config_common.h"
-#define PRODUCT Onekey Proton-C
-
#define MATRIX_COL_PINS { A2 }
#define MATRIX_ROW_PINS { A1 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B8
#define BACKLIGHT_PWM_DRIVER PWMD4
diff --git a/keyboards/handwired/onekey/proton_c/info.json b/keyboards/handwired/onekey/proton_c/info.json
new file mode 100644
index 0000000000..47ac089f7a
--- /dev/null
+++ b/keyboards/handwired/onekey/proton_c/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Proton-C"
+}
diff --git a/keyboards/handwired/onekey/rp2040/config.h b/keyboards/handwired/onekey/rp2040/config.h
new file mode 100644
index 0000000000..c0ef468aa9
--- /dev/null
+++ b/keyboards/handwired/onekey/rp2040/config.h
@@ -0,0 +1,21 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+#define MATRIX_COL_PINS \
+ { GP4 }
+#define MATRIX_ROW_PINS \
+ { GP5 }
+#define DEBUG_MATRIX_SCAN_RATE
+
+#define QMK_WAITING_TEST_BUSY_PIN GP8
+#define QMK_WAITING_TEST_YIELD_PIN GP9
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP25
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
+
+#define RGB_DI_PIN A1
diff --git a/keyboards/handwired/onekey/rp2040/info.json b/keyboards/handwired/onekey/rp2040/info.json
new file mode 100644
index 0000000000..696b021dc1
--- /dev/null
+++ b/keyboards/handwired/onekey/rp2040/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey RP2040"
+}
diff --git a/keyboards/handwired/onekey/rp2040/readme.md b/keyboards/handwired/onekey/rp2040/readme.md
new file mode 100644
index 0000000000..9014479f8d
--- /dev/null
+++ b/keyboards/handwired/onekey/rp2040/readme.md
@@ -0,0 +1,12 @@
+# Raspberry Pi 2040 onekey
+
+To trigger keypress, short together pins *GP4* and *GP5*.
+
+Double-tap reset to enter bootloader mode. Copy the built uf2 file to the device by dragging the file to the new USB disk.
+
+## Supported Hardware
+
+* Raspberry Pi Pico
+* SparkFun Pro Micro - RP2040
+* Adafruit KB2040 - RP2040 Kee Boar
+* ...and many more RP2040 based development boards
diff --git a/keyboards/handwired/onekey/rp2040/rules.mk b/keyboards/handwired/onekey/rp2040/rules.mk
new file mode 100644
index 0000000000..646402d0bb
--- /dev/null
+++ b/keyboards/handwired/onekey/rp2040/rules.mk
@@ -0,0 +1,3 @@
+# MCU name
+MCU = RP2040
+BOOTLOADER = rp2040
diff --git a/keyboards/handwired/onekey/sipeed_longan_nano/config.h b/keyboards/handwired/onekey/sipeed_longan_nano/config.h
index 1825b936d8..6f97baf57f 100644
--- a/keyboards/handwired/onekey/sipeed_longan_nano/config.h
+++ b/keyboards/handwired/onekey/sipeed_longan_nano/config.h
@@ -22,7 +22,6 @@
{ B0 }
#define MATRIX_ROW_PINS \
{ A7 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN A1 /* Green LED. */
#define BACKLIGHT_PWM_DRIVER PWMD5 /* GD32 numbering scheme starts from 0, TIMER4 on GD32 boards is TIMER5 on STM32 boards. */
diff --git a/keyboards/handwired/onekey/sipeed_longan_nano/info.json b/keyboards/handwired/onekey/sipeed_longan_nano/info.json
new file mode 100644
index 0000000000..10f661c3d9
--- /dev/null
+++ b/keyboards/handwired/onekey/sipeed_longan_nano/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Sipeed Longan Nano"
+}
diff --git a/keyboards/handwired/onekey/stm32f0_disco/config.h b/keyboards/handwired/onekey/stm32f0_disco/config.h
index e0f6d00050..373f1c943a 100644
--- a/keyboards/handwired/onekey/stm32f0_disco/config.h
+++ b/keyboards/handwired/onekey/stm32f0_disco/config.h
@@ -18,11 +18,8 @@
#include "config_common.h"
-#define PRODUCT Onekey STM32F072 Discovery
-
#define MATRIX_COL_PINS { B4 }
#define MATRIX_ROW_PINS { B5 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN C8
#define BACKLIGHT_PWM_DRIVER PWMD3
diff --git a/keyboards/handwired/onekey/stm32f0_disco/info.json b/keyboards/handwired/onekey/stm32f0_disco/info.json
new file mode 100644
index 0000000000..ef4312059b
--- /dev/null
+++ b/keyboards/handwired/onekey/stm32f0_disco/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey STM32F072 Discovery"
+}
diff --git a/keyboards/handwired/onekey/stm32f405_feather/config.h b/keyboards/handwired/onekey/stm32f405_feather/config.h
index 32d7807975..ea9f409640 100644
--- a/keyboards/handwired/onekey/stm32f405_feather/config.h
+++ b/keyboards/handwired/onekey/stm32f405_feather/config.h
@@ -18,8 +18,5 @@
#include "config_common.h"
-#define PRODUCT Onekey Adafruit Feather STM32F405
-
#define MATRIX_COL_PINS { C2 }
#define MATRIX_ROW_PINS { C3 }
-#define UNUSED_PINS
diff --git a/keyboards/handwired/onekey/stm32f405_feather/info.json b/keyboards/handwired/onekey/stm32f405_feather/info.json
new file mode 100644
index 0000000000..410ddbdd32
--- /dev/null
+++ b/keyboards/handwired/onekey/stm32f405_feather/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Adafruit Feather STM32F405"
+}
diff --git a/keyboards/handwired/onekey/teensy_2/config.h b/keyboards/handwired/onekey/teensy_2/config.h
index b83262ef05..fb775a06b0 100644
--- a/keyboards/handwired/onekey/teensy_2/config.h
+++ b/keyboards/handwired/onekey/teensy_2/config.h
@@ -18,14 +18,14 @@
#include "config_common.h"
-#define PRODUCT Onekey Teensy 2.0
-
#define MATRIX_COL_PINS { F4 }
#define MATRIX_ROW_PINS { F5 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B6
#define RGB_DI_PIN F6
#define ADC_PIN F6
+
+#define QMK_WAITING_TEST_BUSY_PIN F6
+#define QMK_WAITING_TEST_YIELD_PIN F7
diff --git a/keyboards/handwired/onekey/teensy_2/info.json b/keyboards/handwired/onekey/teensy_2/info.json
new file mode 100644
index 0000000000..f081d3a25c
--- /dev/null
+++ b/keyboards/handwired/onekey/teensy_2/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Teensy 2.0"
+}
diff --git a/keyboards/handwired/onekey/teensy_2pp/config.h b/keyboards/handwired/onekey/teensy_2pp/config.h
index 886ad70cbf..fb775a06b0 100644
--- a/keyboards/handwired/onekey/teensy_2pp/config.h
+++ b/keyboards/handwired/onekey/teensy_2pp/config.h
@@ -18,14 +18,14 @@
#include "config_common.h"
-#define PRODUCT Onekey Teensy 2++
-
#define MATRIX_COL_PINS { F4 }
#define MATRIX_ROW_PINS { F5 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B6
#define RGB_DI_PIN F6
#define ADC_PIN F6
+
+#define QMK_WAITING_TEST_BUSY_PIN F6
+#define QMK_WAITING_TEST_YIELD_PIN F7
diff --git a/keyboards/handwired/onekey/teensy_2pp/info.json b/keyboards/handwired/onekey/teensy_2pp/info.json
new file mode 100644
index 0000000000..bec94fa3dc
--- /dev/null
+++ b/keyboards/handwired/onekey/teensy_2pp/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Teensy 2.0++"
+}
diff --git a/keyboards/handwired/onekey/teensy_32/config.h b/keyboards/handwired/onekey/teensy_32/config.h
index e388b01af8..3444cca67f 100644
--- a/keyboards/handwired/onekey/teensy_32/config.h
+++ b/keyboards/handwired/onekey/teensy_32/config.h
@@ -19,11 +19,8 @@
// TODO: including this causes "error: expected identifier before '(' token" errors
//#include "config_common.h"
-#define PRODUCT Onekey Teensy 3.2
-
#define MATRIX_COL_PINS { D5 }
#define MATRIX_ROW_PINS { B2 }
-#define UNUSED_PINS
// i2c_master defines
#define I2C1_SCL_PIN B0 // A2 on pinout = B0
diff --git a/keyboards/handwired/onekey/teensy_32/info.json b/keyboards/handwired/onekey/teensy_32/info.json
new file mode 100644
index 0000000000..213b4ea153
--- /dev/null
+++ b/keyboards/handwired/onekey/teensy_32/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Teensy 3.2"
+}
diff --git a/keyboards/handwired/onekey/teensy_35/chconf.h b/keyboards/handwired/onekey/teensy_35/chconf.h
new file mode 100644
index 0000000000..ee8312c526
--- /dev/null
+++ b/keyboards/handwired/onekey/teensy_35/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/teensy_35/chconf.h -r platforms/chibios/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_TIMEDELTA 0
+
+#define CH_CFG_TIME_QUANTUM 20
+
+#include_next <chconf.h>
diff --git a/keyboards/handwired/onekey/teensy_35/config.h b/keyboards/handwired/onekey/teensy_35/config.h
new file mode 100644
index 0000000000..13eaf1a4f6
--- /dev/null
+++ b/keyboards/handwired/onekey/teensy_35/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
+
+// TODO: including this causes "error: expected identifier before '(' token" errors
+//#include "config_common.h"
+
+#define MATRIX_COL_PINS { D5 } // 20/A6
+#define MATRIX_ROW_PINS { B2 } // 19/A5
+
+// i2c_master defines
+#define I2C1_SCL_PIN B0 // 16/A2 on pinout
+#define I2C1_SDA_PIN B1 // 17/A3 on pinout
+#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
+#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
diff --git a/keyboards/handwired/onekey/teensy_35/halconf.h b/keyboards/handwired/onekey/teensy_35/halconf.h
new file mode 100644
index 0000000000..6ac756d0f2
--- /dev/null
+++ b/keyboards/handwired/onekey/teensy_35/halconf.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/teensy_35/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_SERIAL TRUE
+
+#define SERIAL_USB_BUFFERS_SIZE 256
+
+#include_next <halconf.h>
diff --git a/keyboards/handwired/onekey/teensy_35/info.json b/keyboards/handwired/onekey/teensy_35/info.json
new file mode 100644
index 0000000000..99b6a236c5
--- /dev/null
+++ b/keyboards/handwired/onekey/teensy_35/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Teensy 3.5"
+}
diff --git a/keyboards/handwired/onekey/teensy_35/mcuconf.h b/keyboards/handwired/onekey/teensy_35/mcuconf.h
new file mode 100644
index 0000000000..dc508eee7d
--- /dev/null
+++ b/keyboards/handwired/onekey/teensy_35/mcuconf.h
@@ -0,0 +1,50 @@
+/*
+ ChibiOS - Copyright (C) 2006..2015 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 _MCUCONF_H_
+#define _MCUCONF_H_
+
+#define K60x_MCUCONF
+
+/*
+ * HAL driver system settings.
+ */
+
+/* Select the MCU clocking mode below by enabling the appropriate block. */
+
+/* PEE mode - 120MHz system clock driven by external crystal. */
+#define KINETIS_MCG_MODE KINETIS_MCG_MODE_PEE
+#define KINETIS_PLLCLK_FREQUENCY 120000000UL // 120 MHz (RUN)
+#define KINETIS_SYSCLK_FREQUENCY KINETIS_PLLCLK_FREQUENCY
+#define KINETIS_BUSCLK_FREQUENCY 60000000UL
+#define KINETIS_FLASHCLK_FREQUENCY 24000000UL // 24 MHz (RUN)
+
+#define KINETIS_CLKDIV1_OUTDIV1 1 // -> 0
+#define KINETIS_CLKDIV1_OUTDIV2 2 // -> 1
+#define KINETIS_CLKDIV1_OUTDIV4 5 // -> 4
+
+/*
+ * SERIAL driver system settings.
+ */
+#define KINETIS_SERIAL_USE_UART0 TRUE
+
+/*
+ * USB driver settings
+ */
+#define KINETIS_USB_USE_USB0 TRUE
+#define KINETIS_USB_USB0_IRQ_PRIORITY 5
+
+#endif /* _MCUCONF_H_ */
diff --git a/keyboards/handwired/onekey/teensy_35/rules.mk b/keyboards/handwired/onekey/teensy_35/rules.mk
new file mode 100644
index 0000000000..8ebefd03f5
--- /dev/null
+++ b/keyboards/handwired/onekey/teensy_35/rules.mk
@@ -0,0 +1,8 @@
+# MCU name
+MCU = MK64FX512
+
+# Bootloader selection
+BOOTLOADER = halfkay
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/handwired/onekey/teensy_lc/config.h b/keyboards/handwired/onekey/teensy_lc/config.h
index 4e594e7d7e..3444cca67f 100644
--- a/keyboards/handwired/onekey/teensy_lc/config.h
+++ b/keyboards/handwired/onekey/teensy_lc/config.h
@@ -19,11 +19,8 @@
// TODO: including this causes "error: expected identifier before '(' token" errors
//#include "config_common.h"
-#define PRODUCT Onekey Teensy LC
-
#define MATRIX_COL_PINS { D5 }
#define MATRIX_ROW_PINS { B2 }
-#define UNUSED_PINS
// i2c_master defines
#define I2C1_SCL_PIN B0 // A2 on pinout = B0
diff --git a/keyboards/handwired/onekey/teensy_lc/info.json b/keyboards/handwired/onekey/teensy_lc/info.json
new file mode 100644
index 0000000000..68eea92235
--- /dev/null
+++ b/keyboards/handwired/onekey/teensy_lc/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Onekey Teensy LC"
+}
diff --git a/keyboards/handwired/onekey/teensy_lc/readme.md b/keyboards/handwired/onekey/teensy_lc/readme.md
index 676d794d87..20e9be5bed 100644
--- a/keyboards/handwired/onekey/teensy_lc/readme.md
+++ b/keyboards/handwired/onekey/teensy_lc/readme.md
@@ -33,8 +33,6 @@ When setting matrix pins, you need to use the MCU definitions instead of what is
| 21/A7 | D6 | |
| 22/A8 | C1 | |
| 23/A9 | C2 | |
-| 24/A10 | E2 | |
-| 25/A11 | E21 | *[1]* |
-| 26/A12 | E30 | *[1]* |
-
-*[1]* - Currently not configured and may require extra work to implement.
+| 24/A10 | E20 | |
+| 25/A11 | E21 | |
+| 26/A12 | E30 | | \ No newline at end of file
diff --git a/keyboards/handwired/ortho5x13/config.h b/keyboards/handwired/ortho5x13/config.h
index 7731d29f0c..f88d2b7002 100644
--- a/keyboards/handwired/ortho5x13/config.h
+++ b/keyboards/handwired/ortho5x13/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBB80
-#define PRODUCT_ID 0x050D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Hexwire
-#define PRODUCT Ortho 5x13
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 13
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, D2, D1, D0, D4 }
#define MATRIX_COL_PINS { C6, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/ortho5x13/info.json b/keyboards/handwired/ortho5x13/info.json
index 1ec13f93a7..0fe0530e33 100644
--- a/keyboards/handwired/ortho5x13/info.json
+++ b/keyboards/handwired/ortho5x13/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ortho5x13",
+ "keyboard_name": "Ortho 5x13",
+ "manufacturer": "Hexwire",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xBB80",
+ "pid": "0x050D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/ortho5x13/keymaps/default/keymap.c b/keyboards/handwired/ortho5x13/keymaps/default/keymap.c
index 39ae1872a2..aeecfa1d8e 100644
--- a/keyboards/handwired/ortho5x13/keymaps/default/keymap.c
+++ b/keyboards/handwired/ortho5x13/keymaps/default/keymap.c
@@ -4,12 +4,14 @@
// 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 layer_names {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/handwired/ortho5x14/config.h b/keyboards/handwired/ortho5x14/config.h
index a5aab6168f..e74a645870 100644
--- a/keyboards/handwired/ortho5x14/config.h
+++ b/keyboards/handwired/ortho5x14/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBB80
-#define PRODUCT_ID 0x050D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MPInc
-#define PRODUCT Ortho 5x14
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, C7, D5, B7 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B4, E6, D7, C6, D4, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/ortho5x14/info.json b/keyboards/handwired/ortho5x14/info.json
index 7ccd121a22..3702a2ff38 100644
--- a/keyboards/handwired/ortho5x14/info.json
+++ b/keyboards/handwired/ortho5x14/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ortho5x14",
+ "keyboard_name": "Ortho5 x14",
+ "manufacturer": "MPInc",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xBB80",
+ "pid": "0x050D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/ortho5x14/keymaps/2u/keymap.c b/keyboards/handwired/ortho5x14/keymaps/2u/keymap.c
index 70a96fac9d..62d17206ee 100644
--- a/keyboards/handwired/ortho5x14/keymaps/2u/keymap.c
+++ b/keyboards/handwired/ortho5x14/keymaps/2u/keymap.c
@@ -343,9 +343,9 @@ qk_tap_dance_action_t tap_dance_actions[] = {
[TD_PGUP_HOME] = ACTION_TAP_DANCE_DOUBLE(KC_PGUP, KC_HOME),
[TD_PGDN_END] = ACTION_TAP_DANCE_DOUBLE(KC_PGDN, KC_END),
- [TD_Q_LrALT] = ACTION_TAP_DANCE_DUAL_ROLE(KC_Q, _ALT),
- [TD_R_LrKey] = ACTION_TAP_DANCE_DUAL_ROLE(KC_R, _RAISE),
- [TD_T_LrMS] = ACTION_TAP_DANCE_DUAL_ROLE(KC_T, _MOUSE),
+ [TD_Q_LrALT] = ACTION_TAP_DANCE_LAYER_MOVE(KC_Q, _ALT),
+ [TD_R_LrKey] = ACTION_TAP_DANCE_LAYER_MOVE(KC_R, _RAISE),
+ [TD_T_LrMS] = ACTION_TAP_DANCE_LAYER_MOVE(KC_T, _MOUSE),
[TD_SHIFT_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL,lshift_finished, lshift_reset),
[TD_SPC_ENT] = ACTION_TAP_DANCE_DOUBLE(KC_SPACE, KC_ENT),
@@ -497,7 +497,7 @@ KC_PAUS
[_RAISE] = LAYOUT(
KC_INS , XXXXXXX , KC_BRIU, KC_BRID, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_7 , KC_8 , KC_9 , KC_SLASH , KC_MINUS, KC_EQUAL,
- KC_HOME , KC_PSCR , XXXXXXX, XXXXXXX, XXXXXXX, RESET , XXXXXXX, XXXXXXX, KC_4 , KC_5 , KC_6 , KC_ASTR , XXXXXXX , XXXXXXX,
+ KC_HOME , KC_PSCR , XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, KC_4 , KC_5 , KC_6 , KC_ASTR , XXXXXXX , XXXXXXX,
KC_END , KC_SLCK , XXXXXXX, XXXXXXX, DEBUG , XXXXXXX, XXXXXXX, XXXXXXX, KC_1 , KC_2 , KC_3 , KC_MINUS , XXXXXXX , XXXXXXX,
XXXXXXX , KC_PAUSE , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_0 , KC_DOT , KC_COMMA , KC_PLUS , XXXXXXX , XXXXXXX,
LALT(LCTL(KC_DEL)), _______ , _______, _______, _______, _______ , KC_KP_ENTER , _______, _______ , _______ , _______ , _______
@@ -518,7 +518,7 @@ KC_PAUS
*/
[_ADJUST] = LAYOUT(
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,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, _______,
XXXXXXX, XXXXXXX, XXXXXXX, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
@@ -562,7 +562,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed && is_oneshot_layer_active())
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
return true;
- case RESET:
+ case QK_BOOT:
/* Don't allow reset from oneshot layer state */
if (record->event.pressed && is_oneshot_layer_active()){
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
diff --git a/keyboards/handwired/ortho5x14/keymaps/split1/keymap.c b/keyboards/handwired/ortho5x14/keymaps/split1/keymap.c
index b152503aaf..10f23c2735 100644
--- a/keyboards/handwired/ortho5x14/keymaps/split1/keymap.c
+++ b/keyboards/handwired/ortho5x14/keymaps/split1/keymap.c
@@ -279,9 +279,9 @@ qk_tap_dance_action_t tap_dance_actions[] = {
[TD_PGUP_HOME] = ACTION_TAP_DANCE_DOUBLE(KC_PGUP, KC_HOME),
[TD_PGDN_END] = ACTION_TAP_DANCE_DOUBLE(KC_PGUP, KC_END),
- [TD_Q_LrALT] = ACTION_TAP_DANCE_DUAL_ROLE(KC_Q, _ALT),
- [TD_R_LrKey] = ACTION_TAP_DANCE_DUAL_ROLE(KC_R, _RAISE),
- [TD_T_LrMS] = ACTION_TAP_DANCE_DUAL_ROLE(KC_T, _MOUSE),
+ [TD_Q_LrALT] = ACTION_TAP_DANCE_LAYER_MOVE(KC_Q, _ALT),
+ [TD_R_LrKey] = ACTION_TAP_DANCE_LAYER_MOVE(KC_R, _RAISE),
+ [TD_T_LrMS] = ACTION_TAP_DANCE_LAYER_MOVE(KC_T, _MOUSE),
[TD_SHIFT_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL,lshift_finished, lshift_reset),
[TD_SPC_ENT] = ACTION_TAP_DANCE_DOUBLE(KC_SPACE, KC_ENT),
@@ -453,7 +453,7 @@ KC_PAUS
*/
[_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,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, _______,
XXXXXXX, XXXXXXX, XXXXXXX, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, _______, _______, _______, _______, _______, _______, _______,_______,_______, _______, _______
@@ -492,7 +492,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed && is_oneshot_layer_active())
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
return true;
- case RESET:
+ case QK_BOOT:
/* Don't allow reset from oneshot layer state */
if (record->event.pressed && is_oneshot_layer_active()){
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
diff --git a/keyboards/handwired/ortho_brass/config.h b/keyboards/handwired/ortho_brass/config.h
index 816a8fe597..8b546c04c0 100644
--- a/keyboards/handwired/ortho_brass/config.h
+++ b/keyboards/handwired/ortho_brass/config.h
@@ -18,13 +18,6 @@
#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
@@ -34,8 +27,6 @@
{ 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
diff --git a/keyboards/handwired/ortho_brass/info.json b/keyboards/handwired/ortho_brass/info.json
index 9178f8d89b..ab79b9df72 100644
--- a/keyboards/handwired/ortho_brass/info.json
+++ b/keyboards/handwired/ortho_brass/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ortho Brass",
+ "manufacturer": "BifbofII",
"url": "",
"maintainer": "BifbofII",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
diff --git a/keyboards/handwired/ortho_brass/keymaps/default/keymap.c b/keyboards/handwired/ortho_brass/keymaps/default/keymap.c
index 948a7bd1bc..f32529b6a7 100644
--- a/keyboards/handwired/ortho_brass/keymaps/default/keymap.c
+++ b/keyboards/handwired/ortho_brass/keymaps/default/keymap.c
@@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_ortho_4x12_1x2uC(
_______, QK_BOOT, 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, _______, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/handwired/owlet60/config.h b/keyboards/handwired/owlet60/config.h
index 9613a97580..3dfccbd218 100644
--- a/keyboards/handwired/owlet60/config.h
+++ b/keyboards/handwired/owlet60/config.h
@@ -19,13 +19,6 @@ 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 0xDA19
-#define DEVICE_VER 0x0001
-#define MANUFACTURER worthlessowl
-#define PRODUCT Owlet60
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 8
diff --git a/keyboards/handwired/owlet60/info.json b/keyboards/handwired/owlet60/info.json
index 18e57fe815..df230a9b01 100644
--- a/keyboards/handwired/owlet60/info.json
+++ b/keyboards/handwired/owlet60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Owlet60",
+ "manufacturer": "worthlessowl",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/owlet60/",
"maintainer": "worthlessowl",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xDA19",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_owlet60_full_bsp": {
"layout": [{"label":"F1", "x":0.5, "y":0}, {"label":"~", "x":1.75, "y":0}, {"label":"!", "x":2.75, "y":0}, {"label":"@", "x":3.75, "y":0}, {"label":"#", "x":4.75, "y":0}, {"label":"$", "x":5.75, "y":0}, {"label":"%", "x":6.75, "y":0}, {"label":"^", "x":7.75, "y":0}, {"label":"&", "x":9.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":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"PgUp", "x":17.25, "y":0}, {"label":"F2", "x":0.25, "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":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":"PgDn", "x":17.5, "y":1}, {"label":"F3", "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":9.5, "y":2}, {"label":"J", "x":10.5, "y":2}, {"label":"K", "x":11.5, "y":2}, {"label":"L", "x":12.5, "y":2}, {"label":":", "x":13.5, "y":2}, {"label":"\"", "x":14.5, "y":2}, {"label":"Enter", "x":15.5, "y":2, "w":2.25}, {"label":"Home", "x":17.75, "y":2}, {"label":"Shift", "x":1, "y":3, "w":2.25}, {"label":"Z", "x":3.25, "y":3}, {"label":"X", "x":4.25, "y":3}, {"label":"C", "x":5.25, "y":3}, {"label":"V", "x":6.25, "y":3}, {"label":"B", "x":7.25, "y":3}, {"label":"B", "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, "w":1.75}, {"label":"Up", "x":17, "y":3}, {"label":"End", "x":18, "y":3}, {"label":"Ctrl", "x":1, "y":4, "w":1.5}, {"label":"Alt", "x":3.5, "y":4, "w":1.5}, {"x":5, "y":4, "w":2.25}, {"label":"Super", "x":7.25, "y":4, "w":1.25}, {"x":9.25, "y":4, "w":2}, {"label":"Alt", "x":11.25, "y":4, "w":1.5}, {"label":"Left", "x":16, "y":4}, {"label":"Down", "x":17, "y":4}, {"label":"Right", "x":18, "y":4}]
diff --git a/keyboards/handwired/p65rgb/config.h b/keyboards/handwired/p65rgb/config.h
index 2ff3da8119..abb5efc284 100644
--- a/keyboards/handwired/p65rgb/config.h
+++ b/keyboards/handwired/p65rgb/config.h
@@ -19,13 +19,6 @@ 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 0x75B4
-#define DEVICE_VER 0x0001
-#define MANUFACTURER marhalloweenvt
-#define PRODUCT p65rgb
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { C7, C6, B6, B5, D5 }
#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, B0, B1, B2, B3, B7, D0, D1, D2, D3, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/p65rgb/info.json b/keyboards/handwired/p65rgb/info.json
index 5b688404e3..5daf9d1c99 100644
--- a/keyboards/handwired/p65rgb/info.json
+++ b/keyboards/handwired/p65rgb/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "p65rgb",
+ "manufacturer": "marhalloweenvt",
"url": "",
"maintainer": "marhalloweenvt",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x75B4",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/pilcrow/config.h b/keyboards/handwired/pilcrow/config.h
index 3ed0f5de6a..c846dd387a 100644
--- a/keyboards/handwired/pilcrow/config.h
+++ b/keyboards/handwired/pilcrow/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER You
-#define PRODUCT pilcrow
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4, F7, B1, B3 }
#define MATRIX_COL_PINS { D4, C6, D7, E6, F5, F6, B6, B2, F4, B5}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/pilcrow/info.json b/keyboards/handwired/pilcrow/info.json
index 6aac0760e2..ee3a0e733d 100644
--- a/keyboards/handwired/pilcrow/info.json
+++ b/keyboards/handwired/pilcrow/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "pilcrow",
+ "manufacturer": "Unknown",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/pill60/blackpill_f401/config.h b/keyboards/handwired/pill60/blackpill_f401/config.h
index d56ba94ea4..7de8654319 100644
--- a/keyboards/handwired/pill60/blackpill_f401/config.h
+++ b/keyboards/handwired/pill60/blackpill_f401/config.h
@@ -20,5 +20,3 @@
{ A8, B2, B1, B15, A10, A0, A1, A2, A3, A4, A5, A6, A7, B0 }
#define MATRIX_ROW_PINS \
{ B4, B3, A15, B13, B5 }
-#define UNUSED_PINS \
- { A9, A11, A12, C13, C14, C15, B10 }
diff --git a/keyboards/handwired/pill60/blackpill_f401/rules.mk b/keyboards/handwired/pill60/blackpill_f401/rules.mk
index 9b0a72afb9..8d72b0e446 100644
--- a/keyboards/handwired/pill60/blackpill_f401/rules.mk
+++ b/keyboards/handwired/pill60/blackpill_f401/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/handwired/pill60/blackpill_f411/config.h b/keyboards/handwired/pill60/blackpill_f411/config.h
index b106c2d290..7de8654319 100644
--- a/keyboards/handwired/pill60/blackpill_f411/config.h
+++ b/keyboards/handwired/pill60/blackpill_f411/config.h
@@ -20,6 +20,3 @@
{ A8, B2, B1, B15, A10, A0, A1, A2, A3, A4, A5, A6, A7, B0 }
#define MATRIX_ROW_PINS \
{ B4, B3, A15, B13, B5 }
-#define UNUSED_PINS \
- { A9, A11, A12, C13, C14, C15, B10 }
-
diff --git a/keyboards/handwired/pill60/blackpill_f411/rules.mk b/keyboards/handwired/pill60/blackpill_f411/rules.mk
index 1243557019..13a6cb5286 100644
--- a/keyboards/handwired/pill60/blackpill_f411/rules.mk
+++ b/keyboards/handwired/pill60/blackpill_f411/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/handwired/pill60/bluepill/config.h b/keyboards/handwired/pill60/bluepill/config.h
index f68f518b97..1ba5ff2069 100644
--- a/keyboards/handwired/pill60/bluepill/config.h
+++ b/keyboards/handwired/pill60/bluepill/config.h
@@ -20,5 +20,3 @@
{ A8, B11, B10, B15, A10, A1, A2, A3, A4, A5, A6, A7, B0, B1 }
#define MATRIX_ROW_PINS \
{ B4, B3, A15, B13, B5 }
-#define UNUSED_PINS \
- { A0, A9, A11, A12, C13, C14, C15 }
diff --git a/keyboards/handwired/pill60/config.h b/keyboards/handwired/pill60/config.h
index 16147e584b..90edb12b87 100644
--- a/keyboards/handwired/pill60/config.h
+++ b/keyboards/handwired/pill60/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-#define VENDOR_ID 0x4454
-#define PRODUCT_ID 0x5444
-#define DEVICE_VER 0x0001
-
-#define MANUFACTURER "IktaS"
-#define PRODUCT "Pill60"
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/pill60/info.json b/keyboards/handwired/pill60/info.json
index ce8c9dcc53..02fb75983a 100644
--- a/keyboards/handwired/pill60/info.json
+++ b/keyboards/handwired/pill60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pill60",
+ "manufacturer": "IktaS",
"url": "https://github.com/IktaS/Pill60",
"maintainer": "IktaS <imamrafiiia@gmail.com>",
+ "usb": {
+ "vid": "0x4454",
+ "pid": "0x5444",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/postageboard/info.json b/keyboards/handwired/postageboard/info.json
index c4489c3c80..d15d6ef750 100644
--- a/keyboards/handwired/postageboard/info.json
+++ b/keyboards/handwired/postageboard/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "Postage Board",
+ "manufacturer": "LifeIsOnTheWire",
"url": "",
"maintainer": "LifeIsOnTheWire",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xB07D"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/postageboard/mini/config.h b/keyboards/handwired/postageboard/mini/config.h
index d4f654a7a4..e245460161 100644
--- a/keyboards/handwired/postageboard/mini/config.h
+++ b/keyboards/handwired/postageboard/mini/config.h
@@ -19,13 +19,6 @@ 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 0xB07D
-#define DEVICE_VER 0x0002
-#define MANUFACTURER LifeIsOnTheWire
-#define PRODUCT PostageBoard
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 3
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D5 }
#define MATRIX_COL_PINS { E6, B3, B7 }
-#define UNUSED_PINS { D0, D1, D2, D3, D4, D6, D7, B4, B5, B6, C6, C7, B2, B1, B0, F7, F6, F5, F4, F1, F0 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/postageboard/mini/info.json b/keyboards/handwired/postageboard/mini/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/handwired/postageboard/mini/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/handwired/postageboard/r1/config.h b/keyboards/handwired/postageboard/r1/config.h
index 078e66dd75..631a479455 100644
--- a/keyboards/handwired/postageboard/r1/config.h
+++ b/keyboards/handwired/postageboard/r1/config.h
@@ -19,13 +19,6 @@ 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 0xB07D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LifeIsOnTheWire
-#define PRODUCT PostageBoard
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 3
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6 }
#define MATRIX_COL_PINS { B7, C6, C7 }
-#define UNUSED_PINS { D4, D6, D7, B4, B5, D5, D3, D2, D1, D0, B2, B3, F0, F1, F4, F5, F6, F7, E6, B0, B1 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/postageboard/r1/info.json b/keyboards/handwired/postageboard/r1/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/handwired/postageboard/r1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/handwired/prime_exl/config.h b/keyboards/handwired/prime_exl/config.h
index 436715a7d9..88919b934e 100644
--- a/keyboards/handwired/prime_exl/config.h
+++ b/keyboards/handwired/prime_exl/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5052
-#define PRODUCT_ID 0x6578
-#define DEVICE_VER 0x0001
-#define MANUFACTURER PrimeKB
-#define PRODUCT Prime_EXL
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 9
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { B1, E6, D5, D6, B4, D7, D4, F1, F0, B0 }
#define MATRIX_COL_PINS { D0, B3, B2, D1, D2, D3, F7, F6, F5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/prime_exl/info.json b/keyboards/handwired/prime_exl/info.json
index bc43b5e3f7..9c40e5e69e 100644
--- a/keyboards/handwired/prime_exl/info.json
+++ b/keyboards/handwired/prime_exl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Prime_EXL",
+ "manufacturer": "PrimeKB",
"url": "https://www.primekb.com",
"maintainer": "holtenc",
+ "usb": {
+ "vid": "0x5052",
+ "pid": "0x6578",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0,"y":0,"w":1,"h":1}, {"x":1,"y":0,"w":1,"h":1}, {"x":2,"y":0,"w":1,"h":1}, {"x":3,"y":0,"w":1,"h":1}, {"x":4,"y":0,"w":1,"h":1}, {"x":5,"y":0,"w":1,"h":1}, {"x":6.5,"y":0,"w":1,"h":1}, {"x":7.5,"y":0,"w":1,"h":1}, {"x":8.5,"y":0,"w":1,"h":1}, {"x":9.5,"y":0,"w":1,"h":1}, {"x":10.5,"y":0,"w":1,"h":1}, {"x":11.5,"y":0,"w":1,"h":1}, {"x":13.75,"y":0,"w":1,"h":1}, {"x":14.75,"y":0,"w":1,"h":1}, {"x":15.75,"y":0,"w":1,"h":1}, {"x":16.75,"y":0,"w":1,"h":1}, {"x":17.75,"y":0,"w":1,"h":1}, {"x":18.75,"y":0,"w":2,"h":1}, {"x":0,"y":1,"w":1,"h":1}, {"x":1,"y":1,"w":1,"h":1}, {"x":2,"y":1,"w":1,"h":1}, {"x":3,"y":1,"w":1,"h":1}, {"x":4,"y":1,"w":1,"h":1}, {"x":5,"y":1,"w":1,"h":1}, {"x":6.5,"y":1,"w":1.25,"h":1}, {"x":7.75,"y":1,"w":1,"h":1}, {"x":8.75,"y":1,"w":1,"h":1}, {"x":9.75,"y":1,"w":1,"h":1}, {"x":10.75,"y":1,"w":1,"h":1}, {"x":11.75,"y":1,"w":1,"h":1}, {"x":14,"y":1,"w":1,"h":1}, {"x":15,"y":1,"w":1,"h":1}, {"x":16,"y":1,"w":1,"h":1}, {"x":17,"y":1,"w":1,"h":1}, {"x":18,"y":1,"w":1,"h":1}, {"x":19,"y":1,"w":1.75,"h":1}, {"x":0,"y":2,"w":1,"h":1}, {"x":1,"y":2,"w":1,"h":1}, {"x":2,"y":2,"w":1,"h":1}, {"x":3,"y":2,"w":1,"h":1}, {"x":4,"y":2,"w":1,"h":1}, {"x":5,"y":2,"w":1,"h":1}, {"x":6.5,"y":2,"w":1.75,"h":1}, {"x":8.25,"y":2,"w":1,"h":1}, {"x":9.25,"y":2,"w":1,"h":1}, {"x":10.25,"y":2,"w":1,"h":1}, {"x":11.25,"y":2,"w":1,"h":1}, {"x":12.25,"y":2,"w":1,"h":1}, {"x":13.5,"y":2,"w":1,"h":1}, {"x":14.5,"y":2,"w":1,"h":1}, {"x":15.5,"y":2,"w":1,"h":1}, {"x":16.5,"y":2,"w":1,"h":1}, {"x":17.5,"y":2,"w":1,"h":1}, {"x":18.5,"y":2,"w":1,"h":1}, {"x":19.5,"y":2,"w":1.25,"h":1}, {"x":0,"y":3,"w":1,"h":1}, {"x":1,"y":3,"w":1,"h":1}, {"x":2,"y":3,"w":1,"h":1}, {"x":3,"y":3,"w":1,"h":1}, {"x":4,"y":3,"w":1,"h":1}, {"x":5,"y":3,"w":1,"h":1}, {"x":6.5,"y":3,"w":1.25,"h":1}, {"x":7.75,"y":3,"w":1.25,"h":1}, {"x":9,"y":3,"w":1,"h":1}, {"x":10,"y":3,"w":1,"h":1}, {"x":11,"y":3,"w":2,"h":1}, {"x":13.5,"y":3,"w":2,"h":1}, {"x":15.5,"y":3,"w":1,"h":1}, {"x":16.5,"y":3,"w":1,"h":1}, {"x":17.5,"y":3,"w":1.5,"h":1}, {"x":19,"y":3,"w":1.5,"h":1}, {"x":0,"y":4,"w":1,"h":1}, {"x":1,"y":4,"w":1,"h":1}, {"x":2,"y":4,"w":1,"h":1}, {"x":3,"y":4,"w":1,"h":1}, {"x":4,"y":4,"w":1,"h":1}, {"x":5,"y":4,"w":1,"h":1}]
diff --git a/keyboards/handwired/prime_exl/keymaps/via/keymap.c b/keyboards/handwired/prime_exl/keymaps/via/keymap.c
index 0e6802996d..b5b616d55b 100644
--- a/keyboards/handwired/prime_exl/keymaps/via/keymap.c
+++ b/keyboards/handwired/prime_exl/keymaps/via/keymap.c
@@ -87,7 +87,7 @@ void led_set_user(uint8_t usb_led) {
//function for layer indicator LED
layer_state_t layer_state_set_user(layer_state_t state)
{
- if (biton32(state) == 1) {
+ if (get_highest_layer(state) == 1) {
writePinHigh(C6);
} else {
writePinLow(C6);
diff --git a/keyboards/handwired/prime_exl_plus/config.h b/keyboards/handwired/prime_exl_plus/config.h
index 4583e443aa..46b235f9ee 100644
--- a/keyboards/handwired/prime_exl_plus/config.h
+++ b/keyboards/handwired/prime_exl_plus/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5052
-#define PRODUCT_ID 0x6579
-#define DEVICE_VER 0x0001
-#define MANUFACTURER PrimeKB
-#define PRODUCT Prime_EXL Plus
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { D2, D6, B4, F1, E6, F0, F4, B5, D7, D3 }
#define MATRIX_COL_PINS { F5, F6, F7, C7, C6, B6, B7, B3, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/prime_exl_plus/info.json b/keyboards/handwired/prime_exl_plus/info.json
index f54de6f840..1ae1b33152 100644
--- a/keyboards/handwired/prime_exl_plus/info.json
+++ b/keyboards/handwired/prime_exl_plus/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Prime_EXL Plus",
+ "manufacturer": "PrimeKB",
"url": "https://www.primekb.com",
"maintainer": "holtenc",
+ "usb": {
+ "vid": "0x5052",
+ "pid": "0x6579",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"K040", "x":0, "y":0}, {"label":"K050", "x":1, "y":0}, {"label":"K041", "x":2, "y":0}, {"label":"K051", "x":3, "y":0}, {"label":"K042", "x":4, "y":0}, {"label":"K052", "x":5, "y":0}, {"label":"K043", "x":6.5, "y":0}, {"label":"K053", "x":7.5, "y":0}, {"label":"K044", "x":8.5, "y":0}, {"label":"K054", "x":9.5, "y":0}, {"label":"K045", "x":10.5, "y":0}, {"label":"K055", "x":11.5, "y":0}, {"label":"K046", "x":14, "y":0}, {"label":"K056", "x":15, "y":0}, {"label":"K047", "x":16, "y":0}, {"label":"K057", "x":17, "y":0}, {"label":"K048", "x":18, "y":0}, {"label":"K058", "x":19, "y":0, "w":2}, {"label":"K030", "x":0, "y":1}, {"label":"K060", "x":1, "y":1}, {"label":"K031", "x":2, "y":1}, {"label":"K061", "x":3, "y":1}, {"label":"K032", "x":4, "y":1}, {"label":"K062", "x":5, "y":1}, {"label":"K033", "x":6.5, "y":1}, {"label":"K063", "x":7.5, "y":1}, {"label":"K034", "x":8.5, "y":1}, {"label":"K064", "x":9.5, "y":1}, {"label":"K035", "x":10.5, "y":1}, {"label":"K065", "x":11.5, "y":1}, {"label":"K036", "x":14, "y":1}, {"label":"K066", "x":15, "y":1}, {"label":"K037", "x":16, "y":1}, {"label":"K067", "x":17, "y":1}, {"label":"K038", "x":18, "y":1}, {"label":"K068", "x":19, "y":1}, {"label":"K039", "x":20, "y":1}, {"label":"K020", "x":0, "y":2}, {"label":"K070", "x":1, "y":2}, {"label":"K021", "x":2, "y":2}, {"label":"K071", "x":3, "y":2}, {"label":"K022", "x":4, "y":2}, {"label":"K072", "x":5, "y":2}, {"label":"K023", "x":6.5, "y":2, "w":1.25}, {"label":"K073", "x":7.75, "y":2}, {"label":"K024", "x":8.75, "y":2}, {"label":"K074", "x":9.75, "y":2}, {"label":"K025", "x":10.75, "y":2}, {"label":"K075", "x":11.75, "y":2}, {"label":"K026", "x":14.25, "y":2}, {"label":"K076", "x":15.25, "y":2}, {"label":"K027", "x":16.25, "y":2}, {"label":"K077", "x":17.25, "y":2}, {"label":"K028", "x":18.25, "y":2}, {"label":"K029", "x":19.25, "y":2, "w":1.75}, {"label":"K010", "x":0, "y":3}, {"label":"K080", "x":1, "y":3}, {"label":"K011", "x":2, "y":3}, {"label":"K081", "x":3, "y":3}, {"label":"K012", "x":4, "y":3}, {"label":"K082", "x":5, "y":3}, {"label":"K013", "x":6.5, "y":3, "w":1.75}, {"label":"K083", "x":8.25, "y":3}, {"label":"K014", "x":9.25, "y":3}, {"label":"K084", "x":10.25, "y":3}, {"label":"K015", "x":11.25, "y":3}, {"label":"K085", "x":12.25, "y":3}, {"label":"K016", "x":13.75, "y":3}, {"label":"K086", "x":14.75, "y":3}, {"label":"K017", "x":15.75, "y":3}, {"label":"K087", "x":16.75, "y":3}, {"label":"K018", "x":17.75, "y":3}, {"label":"K088", "x":18.75, "y":3}, {"label":"K019", "x":19.75, "y":3, "w":1.25}, {"label":"K000", "x":0, "y":4}, {"label":"K090", "x":1, "y":4}, {"label":"K001", "x":2, "y":4}, {"label":"K091", "x":3, "y":4}, {"label":"K002", "x":4, "y":4}, {"label":"K092", "x":5, "y":4}, {"label":"K003", "x":6.5, "y":4, "w":1.25}, {"label":"K093", "x":7.75, "y":4, "w":1.25}, {"label":"K004", "x":10.25, "y":4, "w":1.25}, {"label":"K095", "x":11.5, "y":4, "w":1.75}, {"label":"K006", "x":13.75, "y":4, "w":1.75}, {"label":"K097", "x":15.5, "y":4, "w":1.25}, {"label":"K098", "x":18.5, "y":4, "w":1.25}, {"label":"K009", "x":19.75, "y":4, "w":1.25}]
diff --git a/keyboards/handwired/prkl30/feather/config.h b/keyboards/handwired/prkl30/feather/config.h
index 875b3d7401..bbed6c0b0b 100644
--- a/keyboards/handwired/prkl30/feather/config.h
+++ b/keyboards/handwired/prkl30/feather/config.h
@@ -16,13 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xE0E0
-#define PRODUCT_ID 0x0030
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Ergorius & Tooni Skyy
-#define PRODUCT PRKL30
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -35,7 +28,6 @@
#define ENCODERS_PAD_A { F7 }
#define ENCODERS_PAD_B { F6 }
#define ENCODER_RESOLUTION 4
-#define UNUSED_PINS
/* RGB Light Configuration */
diff --git a/keyboards/handwired/prkl30/info.json b/keyboards/handwired/prkl30/info.json
index c558d21794..b122fe3328 100644
--- a/keyboards/handwired/prkl30/info.json
+++ b/keyboards/handwired/prkl30/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "prkl30",
+ "keyboard_name": "PRKL30",
+ "manufacturer": "Ergorius & Tooni Skyy",
"url": "https://github.com/ErkHal/prkl30",
"maintainer": "ErkHal",
+ "usb": {
+ "vid": "0xE0E0",
+ "pid": "0x0030",
+ "device_version": "0.0.2"
+ },
"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, "w":1.5}, {"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.25, "y":1, "w":1.25, "h":2}, {"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, "w":1.25}]
diff --git a/keyboards/handwired/prkl30/keymaps/erkhal/keymap.c b/keyboards/handwired/prkl30/keymaps/erkhal/keymap.c
index 71e5ed529b..af5a01e64c 100644
--- a/keyboards/handwired/prkl30/keymaps/erkhal/keymap.c
+++ b/keyboards/handwired/prkl30/keymaps/erkhal/keymap.c
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* FN
* ,------------------------------------------------------------------------------------------.
- * |RESET | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |QK_BOOT | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+------+------+------+------+------+------+------|------|
* | |RGB_P |RGB_HD|RGB_HI| VOL- | PREV | NEXT | VOL+ | | | | PRKL | |
* |------+------+------+------+------+------+------+------+------+------+------+------|------'
@@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------+------+------+------+------+------+------+------+------+------+------+------'
*/
[_FN] = LAYOUT_2u_space(
- 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,
+ QK_BOOT, 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_M_P, RGB_HUD, RGB_HUI, KC_VOLD, KC_MPRV, KC_MNXT, KC_VOLU, _______, _______, _______, PRKL, _______,
RGB_MOD, RGB_VAD, RGB_VAI, RGB_TOG, _______, KC_MPLY, _______, _______, _______, LCA(KC_DEL), _______
),
diff --git a/keyboards/handwired/prkl30/promicro/config.h b/keyboards/handwired/prkl30/promicro/config.h
index d9ccb00314..9f7c4f4f9a 100644
--- a/keyboards/handwired/prkl30/promicro/config.h
+++ b/keyboards/handwired/prkl30/promicro/config.h
@@ -16,13 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xE0E0
-#define PRODUCT_ID 0x0030
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Ergorius & Tooni Skyy
-#define PRODUCT PRKL30
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -35,7 +28,6 @@
#define ENCODERS_PAD_A { D3 }
#define ENCODERS_PAD_B { D2 }
#define ENCODER_RESOLUTION 4
-#define UNUSED_PINS
/* RGB Light Configuration */
diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h
index 68f83035f9..a447a70abd 100644
--- a/keyboards/handwired/promethium/config.h
+++ b/keyboards/handwired/promethium/config.h
@@ -19,16 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x17EF // Lenovo
-//#define PRODUCT_ID 0x6009 // ThinkPad Keyboard with TrackPoint
-//#define PRODUCT_ID 0x6047 // ThinkPad Compact USB Keyboard with TrackPoint
-#define PRODUCT_ID 0x6048 // ThinkPad Compact Bluetooth Keyboard with TrackPoint
-//#define PRODUCT_ID 0x6067 // ThinkPad Pro Docking Station
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Priyadi
-#define PRODUCT Promethium Keyboard
-
/* key matrix size */
#define MATRIX_COLS 6
#define MATRIX_ROWS 9
@@ -40,7 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ F5, F6, F7, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
#define TRACKPOINT_PINS \
{ B7, B6, D7 }
-#define UNUSED_PINS
/*
* Keyboard Matrix Assignments
diff --git a/keyboards/handwired/promethium/info.json b/keyboards/handwired/promethium/info.json
index 365ee2fe32..618b680ff1 100644
--- a/keyboards/handwired/promethium/info.json
+++ b/keyboards/handwired/promethium/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Promethium51",
+ "keyboard_name": "Promethium",
+ "manufacturer": "Priyadi",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x17EF",
+ "pid": "0x6048",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/promethium/keymaps/default/config.h b/keyboards/handwired/promethium/keymaps/default/config.h
index 0630fd43e3..1e5e8906ed 100644
--- a/keyboards/handwired/promethium/keymaps/default/config.h
+++ b/keyboards/handwired/promethium/keymaps/default/config.h
@@ -2,12 +2,6 @@
#define PRIYADI_PROMETHIUM
-/* bootmagic salt key */
-#define BOOTMAGIC_KEY_SALT KC_ESC
-
-/* skip bootmagic and eeconfig */
-#define BOOTMAGIC_KEY_SKIP KC_SPACE
-
#define RGBSPS_ENABLE
#define RGBSPS_DEMO_ENABLE
diff --git a/keyboards/handwired/promethium/keymaps/default/keymap.c b/keyboards/handwired/promethium/keymaps/default/keymap.c
index 1903b2f9ba..77f83361e6 100644
--- a/keyboards/handwired/promethium/keymaps/default/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/default/keymap.c
@@ -529,7 +529,7 @@ void led_reset(void) {
}
void led_set_default_layer_indicator(void) {
- uint8_t default_layer = biton32(default_layer_state);
+ uint8_t default_layer = get_highest_layer(default_layer_state);
if (default_layer == _QWERTY) {
rgbsps_set(LED_IND_QWERTY, THEME_COLOR_QWERTY);
rgbsps_set(LED_IND_ALT, COLOR_BLANK);
@@ -553,7 +553,7 @@ void led_set_layer_indicator(void) {
rgbsps_set(LED_IND_GREEK, COLOR_BLANK);
rgbsps_set(LED_IND_EMOJI, COLOR_BLANK);
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
if (oldlayer == layer) {
return;
}
@@ -1014,7 +1014,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
lshift = keyboard_report->mods & MOD_BIT(KC_LSFT);
rshift = keyboard_report->mods & MOD_BIT(KC_RSFT);
- layer = biton32(layer_state);
+ layer = get_highest_layer(layer_state);
#ifdef DOUBLESPACE_LAYER_ENABLE
// double-space: send space immediately if any other key depressed before space is released
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/config.h b/keyboards/handwired/promethium/keymaps/priyadi/config.h
index 0630fd43e3..1e5e8906ed 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/config.h
+++ b/keyboards/handwired/promethium/keymaps/priyadi/config.h
@@ -2,12 +2,6 @@
#define PRIYADI_PROMETHIUM
-/* bootmagic salt key */
-#define BOOTMAGIC_KEY_SALT KC_ESC
-
-/* skip bootmagic and eeconfig */
-#define BOOTMAGIC_KEY_SKIP KC_SPACE
-
#define RGBSPS_ENABLE
#define RGBSPS_DEMO_ENABLE
diff --git a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
index 94b505aa2c..31ce811e53 100644
--- a/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
+++ b/keyboards/handwired/promethium/keymaps/priyadi/keymap.c
@@ -532,7 +532,7 @@ void led_reset(void) {
}
void led_set_default_layer_indicator(void) {
- uint8_t default_layer = biton32(default_layer_state);
+ uint8_t default_layer = get_highest_layer(default_layer_state);
if (default_layer == _QWERTY) {
rgbsps_set(LED_IND_QWERTY, THEME_COLOR_QWERTY);
rgbsps_set(LED_IND_ALT, COLOR_BLANK);
@@ -556,7 +556,7 @@ void led_set_layer_indicator(void) {
rgbsps_set(LED_IND_GREEK, COLOR_BLANK);
rgbsps_set(LED_IND_EMOJI, COLOR_BLANK);
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
if (oldlayer == layer) {
return;
}
@@ -943,7 +943,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_SYS] = LAYOUT(
- DEBUG, QWERTY, WIN, XXXXXXX, RESET, XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, RGBDEMO,
+ DEBUG, QWERTY, WIN, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, OUT_USB, XXXXXXX, XXXXXXX, XXXXXXX, RGBDEMO,
XXXXXXX, FC_TOG, XXXXXXX, DVORAK, XXXXXXX, GLOW, XXXXXXX, XXXXXXX, WORKMAN, LINUX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, OUT_BT, NORMAN, OSX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
@@ -989,7 +989,7 @@ void process_doublespace(bool pressed, bool *isactive, bool *otheractive, bool *
}
#endif
-uint32_t layer_state_set_kb(uint32_t state)
+layer_state_t layer_state_set_kb(layer_state_t state)
{
// turn on punc layer if both fun & num are on
if ((state & ((1UL<<_NUM) | (1UL<<_FUN))) == ((1UL<<_NUM) | (1UL<<_FUN))) {
@@ -1017,7 +1017,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
lshift = keyboard_report->mods & MOD_BIT(KC_LSFT);
rshift = keyboard_report->mods & MOD_BIT(KC_RSFT);
- layer = biton32(layer_state);
+ layer = get_highest_layer(layer_state);
#ifdef DOUBLESPACE_LAYER_ENABLE
// double-space: send space immediately if any other key depressed before space is released
diff --git a/keyboards/handwired/pterodactyl/config.h b/keyboards/handwired/pterodactyl/config.h
index 044fa12f78..eb67deecc4 100644
--- a/keyboards/handwired/pterodactyl/config.h
+++ b/keyboards/handwired/pterodactyl/config.h
@@ -21,13 +21,6 @@ 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 0x1308
-#define DEVICE_VER 0x0002
-#define MANUFACTURER myoung34
-#define PRODUCT Pterodactyl
-
#define DIODE_DIRECTION COL2ROW
#define MATRIX_ROWS 6
#define MATRIX_COLS 12
diff --git a/keyboards/handwired/pterodactyl/info.json b/keyboards/handwired/pterodactyl/info.json
index 6d396dc0b4..77d5db7ec7 100644
--- a/keyboards/handwired/pterodactyl/info.json
+++ b/keyboards/handwired/pterodactyl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pterodactyl",
+ "manufacturer": "myoung34",
"url": "https://marcyoung.us/post/pterodactyl/",
"maintainer": "Marcus Young",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1308",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_pterodactyl": {
"layout": [
diff --git a/keyboards/handwired/pteron/config.h b/keyboards/handwired/pteron/config.h
index a368f5cbd2..5d26b9f430 100644
--- a/keyboards/handwired/pteron/config.h
+++ b/keyboards/handwired/pteron/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER QMK Community
-#define PRODUCT Pteron Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D7, E6, B4, B5, B6 }
#define MATRIX_COL_PINS { F4, F6, F5, F7, B1, B3, C6, D4, D0, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/handwired/pteron/info.json b/keyboards/handwired/pteron/info.json
index 346d7c39bd..f23728f92e 100644
--- a/keyboards/handwired/pteron/info.json
+++ b/keyboards/handwired/pteron/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "pteron",
+ "keyboard_name": "Pteron",
+ "manufacturer": "QMK",
"url": "",
"maintainer": "FSund",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/pteron/keymaps/FSund/keymap.c b/keyboards/handwired/pteron/keymaps/FSund/keymap.c
index 98acdcf339..0bcd44f65d 100644
--- a/keyboards/handwired/pteron/keymaps/FSund/keymap.c
+++ b/keyboards/handwired/pteron/keymaps/FSund/keymap.c
@@ -104,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, F_UML, F_GRAVE, F_ACUTE, _______, RESET, _______, _______, _______, _______, KC_PSCR, _______,
+ _______, F_UML, F_GRAVE, F_ACUTE, _______, QK_BOOT, _______, _______, _______, _______, KC_PSCR, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/handwired/pteron/keymaps/alzafacon/keymap.c b/keyboards/handwired/pteron/keymaps/alzafacon/keymap.c
index bbb77fa87c..ea217fcc3e 100644
--- a/keyboards/handwired/pteron/keymaps/alzafacon/keymap.c
+++ b/keyboards/handwired/pteron/keymaps/alzafacon/keymap.c
@@ -107,7 +107,7 @@ 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,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/handwired/pteron38/config.h b/keyboards/handwired/pteron38/config.h
index 967872aaa9..a877d8dfa3 100644
--- a/keyboards/handwired/pteron38/config.h
+++ b/keyboards/handwired/pteron38/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER QMK Community
-#define PRODUCT Pteron38 Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { E6, B4, B5, B6 }
#define MATRIX_COL_PINS { F6, F5, F7, B1, B3, C6, D4, D0, D1, D2 }
-#define UNUSED_PINS { D7, F4, D3 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/pteron38/info.json b/keyboards/handwired/pteron38/info.json
index e474d988b4..2051d86e0b 100644
--- a/keyboards/handwired/pteron38/info.json
+++ b/keyboards/handwired/pteron38/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "pteron38",
+ "keyboard_name": "Pteron38",
+ "manufacturer": "QMK",
"url": "",
"maintainer": "fidelcoria",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x5_4": {
"layout": [
diff --git a/keyboards/handwired/pteron44/config.h b/keyboards/handwired/pteron44/config.h
index 94622fa8cf..517d498eaa 100644
--- a/keyboards/handwired/pteron44/config.h
+++ b/keyboards/handwired/pteron44/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x542C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER QMK Community
-#define PRODUCT Pteron44
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { E6, B4, B5, B6 }
#define MATRIX_COL_PINS { F4, F6, F5, F7, B1, B3, C6, D4, D0, D1, D2, D3 }
-#define UNUSED_PINS { D7 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/pteron44/info.json b/keyboards/handwired/pteron44/info.json
index a640adc9c6..53b123dbe0 100644
--- a/keyboards/handwired/pteron44/info.json
+++ b/keyboards/handwired/pteron44/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "pteron44",
+ "keyboard_name": "Pteron44",
+ "manufacturer": "QMK",
"url": "",
"maintainer": "fidelcoria",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x542C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/qc60/config.h b/keyboards/handwired/qc60/config.h
index db3d88dcf4..a1719ce06f 100644
--- a/keyboards/handwired/qc60/config.h
+++ b/keyboards/handwired/qc60/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0C60
-#define DEVICE_VER 0x0100
-#define MANUFACTURER PeiorisBoards
-#define PRODUCT QC60
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/handwired/qc60/info.json b/keyboards/handwired/qc60/info.json
index f2e12ebccb..f3ccde01db 100644
--- a/keyboards/handwired/qc60/info.json
+++ b/keyboards/handwired/qc60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "QC60",
+ "manufacturer": "PeiorisBoards",
"url": "",
"maintainer": "coarse",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0C60",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/qc60/keymaps/wntrmln/keymap.c b/keyboards/handwired/qc60/keymaps/wntrmln/keymap.c
index f024ddb4b9..d904dfe85b 100644
--- a/keyboards/handwired/qc60/keymaps/wntrmln/keymap.c
+++ b/keyboards/handwired/qc60/keymaps/wntrmln/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN] = LAYOUT_hhkb_split_lshift(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
diff --git a/keyboards/handwired/reclined/info.json b/keyboards/handwired/reclined/info.json
index 1398a9a2df..a5f308fa75 100644
--- a/keyboards/handwired/reclined/info.json
+++ b/keyboards/handwired/reclined/info.json
@@ -23,7 +23,7 @@
},
"processor": "atmega32u4",
"usb": {
- "device_ver": "0x0001",
+ "device_version": "0.0.1",
"pid": "0x0000",
"vid": "0xFEED"
},
diff --git a/keyboards/handwired/retro_refit/config.h b/keyboards/handwired/retro_refit/config.h
index beb9b26deb..89e6fc9595 100644
--- a/keyboards/handwired/retro_refit/config.h
+++ b/keyboards/handwired/retro_refit/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nobody
-#define PRODUCT retro_refit
-
/* key matrix size */
#define MATRIX_ROWS 11
#define MATRIX_COLS 8
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// See note in retro_refit.h for an explanation of how this matrix is wired up
#define MATRIX_ROW_PINS { D4, D7, B4, B5, B6, F7, F6, F5, F4, F1, F0 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, D2, D3, C7, D5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/retro_refit/info.json b/keyboards/handwired/retro_refit/info.json
index 47970247b0..beb03c6a0e 100644
--- a/keyboards/handwired/retro_refit/info.json
+++ b/keyboards/handwired/retro_refit/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "handwired/retro_refit",
+ "keyboard_name": "retro_refit",
+ "manufacturer": "Nobody",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/riblee_f401/config.h b/keyboards/handwired/riblee_f401/config.h
index 6e5c079799..ed0ff636f1 100644
--- a/keyboards/handwired/riblee_f401/config.h
+++ b/keyboards/handwired/riblee_f401/config.h
@@ -18,18 +18,11 @@
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x002A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Riblee
-#define PRODUCT Handwired F401
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
#define MATRIX_ROW_PINS { A6, A5, A4, A3, A2 }
#define MATRIX_COL_PINS { B10, B1, B0, B15, A8, B3, B4, B5, B6, B7, B8, B9 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/riblee_f401/info.json b/keyboards/handwired/riblee_f401/info.json
index cebc3ba86b..2852e621d1 100644
--- a/keyboards/handwired/riblee_f401/info.json
+++ b/keyboards/handwired/riblee_f401/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Handwired Preonic (Blackpill F401)",
+ "keyboard_name": "Handwired F401",
+ "manufacturer": "Riblee",
"url": "",
"maintainer": "riblee",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x002A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x12": {
"layout": [
diff --git a/keyboards/handwired/riblee_f401/keymaps/default/keymap.c b/keyboards/handwired/riblee_f401/keymaps/default/keymap.c
index 6892c0fb49..bee4de5ede 100644
--- a/keyboards/handwired/riblee_f401/keymaps/default/keymap.c
+++ b/keyboards/handwired/riblee_f401/keymaps/default/keymap.c
@@ -158,7 +158,7 @@ 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,
- _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______,_______, _______, KC_DEL,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, LCG_SWP, LCG_NRM, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/handwired/riblee_f401/rules.mk b/keyboards/handwired/riblee_f401/rules.mk
index a2fe4f3a19..9abda835da 100644
--- a/keyboards/handwired/riblee_f401/rules.mk
+++ b/keyboards/handwired/riblee_f401/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/handwired/riblee_f411/config.h b/keyboards/handwired/riblee_f411/config.h
index f335871dec..6cf4b6370a 100644
--- a/keyboards/handwired/riblee_f411/config.h
+++ b/keyboards/handwired/riblee_f411/config.h
@@ -18,18 +18,11 @@
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x002B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Riblee
-#define PRODUCT Handwired F411
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
#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 { A1, A7, B2, B11, B12, B13 }
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/riblee_f411/info.json b/keyboards/handwired/riblee_f411/info.json
index 9e44d4de22..ac90dd65db 100644
--- a/keyboards/handwired/riblee_f411/info.json
+++ b/keyboards/handwired/riblee_f411/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Handwired Preonic (Blackpill F411)",
+ "keyboard_name": "Handwired F411",
+ "manufacturer": "Riblee",
"url": "",
"maintainer": "riblee",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x002B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x12": {
"layout": [
diff --git a/keyboards/handwired/riblee_f411/keymaps/default/keymap.c b/keyboards/handwired/riblee_f411/keymaps/default/keymap.c
index 2e9485d6b9..ff7e1117b8 100644
--- a/keyboards/handwired/riblee_f411/keymaps/default/keymap.c
+++ b/keyboards/handwired/riblee_f411/keymaps/default/keymap.c
@@ -158,7 +158,7 @@ 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,
- _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______,_______, _______, KC_DEL,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, LCG_SWP, LCG_NRM, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/handwired/riblee_f411/rules.mk b/keyboards/handwired/riblee_f411/rules.mk
index 7d0652ad24..ae4bc544a7 100644
--- a/keyboards/handwired/riblee_f411/rules.mk
+++ b/keyboards/handwired/riblee_f411/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/handwired/rs60/config.h b/keyboards/handwired/rs60/config.h
index 169517362f..506b0bff0d 100644
--- a/keyboards/handwired/rs60/config.h
+++ b/keyboards/handwired/rs60/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x4260
-#define DEVICE_VER 0x0001
-#define MANUFACTURER rs
-#define PRODUCT rs60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -30,7 +23,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B5, B6, B4, B2, E6 }
#define MATRIX_COL_PINS { C6, D4, D0, D1, D2, D3, F4, F5, F6, F7, B1, B3}
-#define UNUSED_PINS { }
#define QMK_ESC_OUTPUT C6
#define QMK_ESC_INPUT B4
diff --git a/keyboards/handwired/rs60/info.json b/keyboards/handwired/rs60/info.json
index d3db01eb79..cbf81141aa 100644
--- a/keyboards/handwired/rs60/info.json
+++ b/keyboards/handwired/rs60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "rs60",
+ "manufacturer": "rs",
"url": "",
"maintainer": "rs",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x4260",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x12": {
"layout": [
diff --git a/keyboards/handwired/rs60/keymaps/default/keymap.c b/keyboards/handwired/rs60/keymaps/default/keymap.c
index 6b311a7ebb..6d5dc4a32a 100644
--- a/keyboards/handwired/rs60/keymaps/default/keymap.c
+++ b/keyboards/handwired/rs60/keymaps/default/keymap.c
@@ -155,7 +155,7 @@ 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,
- _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______,_______, _______, KC_DEL,
_______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/handwired/selene/config.h b/keyboards/handwired/selene/config.h
index ced93e5164..25603183a7 100644
--- a/keyboards/handwired/selene/config.h
+++ b/keyboards/handwired/selene/config.h
@@ -18,18 +18,11 @@
#include "config_common.h"
-#define VENDOR_ID 0x4244 //-B-pen-D-ragon
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Bpendragon
-#define PRODUCT Selene
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 21
#define MATRIX_ROW_PINS { B10, B9, B15, B14, B13, B8}
#define MATRIX_COL_PINS { A9, A10, B11, B7, B6, B5, B4, B3, B2, B1, B0, C14, A4, A5, A6, A7, A8, A15, A13, A14, B12 }
-#define UNUSED_PINS
#define RGB_DI_PIN A3
#define RGBLED_NUM 50
diff --git a/keyboards/handwired/selene/info.json b/keyboards/handwired/selene/info.json
index c7f69b42bd..eb515eb11e 100644
--- a/keyboards/handwired/selene/info.json
+++ b/keyboards/handwired/selene/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Selene",
+ "manufacturer": "Bpendragon",
"url": "https://github.com/Bpendragon/Selene-Keyboard",
"maintainer": "Bpendragon",
+ "usb": {
+ "vid": "0x4244",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/sick68/config.h b/keyboards/handwired/sick68/config.h
index 16b5fc76e7..79ce50ba8b 100644
--- a/keyboards/handwired/sick68/config.h
+++ b/keyboards/handwired/sick68/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5E68
-#define PRODUCT_ID 0x5F00
-#define DEVICE_VER 0x0001
-#define MANUFACTURER umbynos
-#define PRODUCT sick68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ D3, D2, D1, D0, D4 }
#define MATRIX_COL_PINS \
{ C6, D7, E6, B4, B5, B0, D5, B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/sick68/info.json b/keyboards/handwired/sick68/info.json
index e607e100e6..52bcad8197 100644
--- a/keyboards/handwired/sick68/info.json
+++ b/keyboards/handwired/sick68/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "sick68",
+ "manufacturer": "umbynos",
"url": "",
"maintainer": "umbynos",
+ "usb": {
+ "vid": "0x5E68",
+ "pid": "0x5F00",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/handwired/sick_pad/config.h b/keyboards/handwired/sick_pad/config.h
index f431daf38e..7f8df32c06 100644
--- a/keyboards/handwired/sick_pad/config.h
+++ b/keyboards/handwired/sick_pad/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xDA20
-#define DEVICE_VER 0x0001
-#define MANUFACTURER FedorSosnin
-#define PRODUCT SiCK-PAD
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 }
#define MATRIX_COL_PINS { B9, B15, B14, B13 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/sick_pad/info.json b/keyboards/handwired/sick_pad/info.json
index d751035d12..458526cce8 100644
--- a/keyboards/handwired/sick_pad/info.json
+++ b/keyboards/handwired/sick_pad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "sick_pad",
+ "keyboard_name": "SiCK-PAD",
+ "manufacturer": "FedorSosnin",
"url": "https://www.thingiverse.com/thing:3682168",
"maintainer": "jmschneider",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xDA20",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_5x4": {
"layout": [
diff --git a/keyboards/handwired/skakunm_dactyl/config.h b/keyboards/handwired/skakunm_dactyl/config.h
new file mode 100644
index 0000000000..1fb0cc6b2a
--- /dev/null
+++ b/keyboards/handwired/skakunm_dactyl/config.h
@@ -0,0 +1,60 @@
+// Copyright 2022 Marko Skakun <skakun.marko@gmail.com>
+// 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 5
+
+// wiring of each half
+#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 }
+#define MATRIX_ROW_PINS { B1, B3, B2, B6 }
+
+#define DIODE_DIRECTION COL2ROW
+
+/* mouse config */
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 7
+#define MOUSEKEY_WHEEL_DELAY 0
+
+/* 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
+
+/* Enables This makes it easier for fast typists to use dual-function keys */
+#define PERMISSIVE_HOLD
+
+/* 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
diff --git a/keyboards/handwired/skakunm_dactyl/info.json b/keyboards/handwired/skakunm_dactyl/info.json
new file mode 100644
index 0000000000..2eed23d809
--- /dev/null
+++ b/keyboards/handwired/skakunm_dactyl/info.json
@@ -0,0 +1,57 @@
+{
+ "keyboard_name": "Dactyl Min (3x5_5)",
+ "manufacturer": "skakunm",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_3x5_5": {
+ "layout": [
+ {"label":"L10", "x":0, "y":0},
+ {"label":"L11", "x":1, "y":0},
+ {"label":"L12", "x":2, "y":0},
+ {"label":"L13", "x":3, "y":0},
+ {"label":"L14", "x":4, "y":0},
+ {"label":"R13", "x":9, "y":0},
+ {"label":"R13", "x":10, "y":0},
+ {"label":"R12", "x":11, "y":0},
+ {"label":"R11", "x":12, "y":0},
+ {"label":"R10", "x":13, "y":0},
+ {"label":"L20", "x":0, "y":1},
+ {"label":"L21", "x":1, "y":1},
+ {"label":"L22", "x":2, "y":1},
+ {"label":"L23", "x":3, "y":1},
+ {"label":"L24", "x":4, "y":1},
+ {"label":"R23", "x":9, "y":1},
+ {"label":"R23", "x":10, "y":1},
+ {"label":"R22", "x":11, "y":1},
+ {"label":"R21", "x":12, "y":1},
+ {"label":"R20", "x":13, "y":1},
+ {"label":"L30", "x":0, "y":2},
+ {"label":"L31", "x":1, "y":2},
+ {"label":"L32", "x":2, "y":2},
+ {"label":"L33", "x":3, "y":2},
+ {"label":"L34", "x":4, "y":2},
+ {"label":"R33", "x":9, "y":2},
+ {"label":"R33", "x":10, "y":2},
+ {"label":"R32", "x":11, "y":2},
+ {"label":"R31", "x":12, "y":2},
+ {"label":"R30", "x":13, "y":2},
+ {"label":"L00", "x":4, "y":3},
+ {"label":"L01", "x":5, "y":3},
+ {"label":"R01", "x":8, "y":3},
+ {"label":"R00", "x":9, "y":3},
+ {"label":"L02", "x":4, "y":4},
+ {"label":"L03", "x":5, "y":4},
+ {"label":"L04", "x":6, "y":4},
+ {"label":"R04", "x":7, "y":4},
+ {"label":"R03", "x":8, "y":4},
+ {"label":"R02", "x":9, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/skakunm_dactyl/keymaps/default/keymap.c b/keyboards/handwired/skakunm_dactyl/keymaps/default/keymap.c
new file mode 100644
index 0000000000..0109b18c6c
--- /dev/null
+++ b/keyboards/handwired/skakunm_dactyl/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+// Copyright 2022 Marko Skakun <skakun.marko@gmail.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _LAYER0,
+ _LAYER1,
+ _LAYER2,
+};
+
+enum custom_keycodes {
+ LAYER0 = SAFE_RANGE,
+ LAYER1,
+ LAYER2,
+};
+
+ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_3x5_5(
+ 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,
+ LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
+ KC_LCTL, KC_LALT, KC_RALT, KC_RCTL,
+ KC_BSPC, LT(2,KC_ESC), KC_DEL, KC_TAB, LT(1,KC_ENT), KC_SPC),
+
+[_LAYER1] = LAYOUT_3x5_5(
+ KC_BSLS, KC_HOME, KC_UP, KC_END, KC_LBRC, KC_RBRC, KC_P7, KC_P8, KC_P9, KC_LGUI,
+ KC_PSLS, KC_LEFT, KC_DOWN, KC_RGHT, KC_LPRN, KC_RPRN, KC_P4, KC_P5, KC_P6, KC_ENT,
+ KC_LSFT, KC_SCLN, KC_QUOT, KC_MINS, KC_EQL, KC_P0, KC_P1, KC_P2, KC_P3, KC_RSFT,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[_LAYER2] = LAYOUT_3x5_5(
+ KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
+ KC_F1, KC_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_QUOT, KC_QUES, KC_TRNS, KC_F12,
+ 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/handwired/skakunm_dactyl/readme.md b/keyboards/handwired/skakunm_dactyl/readme.md
new file mode 100644
index 0000000000..73174fbd1b
--- /dev/null
+++ b/keyboards/handwired/skakunm_dactyl/readme.md
@@ -0,0 +1,15 @@
+# skakunm dactyl
+
+![SkakunM-Dactyl](https://cdn.thingiverse.com/assets/98/52/da/e2/15/featured_preview_41db84f8-1ffb-4198-bd3f-ae2e5d112ec6.jpg)
+
+This is a variation of Dactyl, main idea is to have 3x5 + 5 keys arrangement, 5 keys for thumb and a minimal set of keys for other fingers. Also having 20 keys enables easy wiring of 4 rows (1 for thumb and 3 for other fingers) and 5 columns (5 buttons for thumb and 5 columns for other fingers). Hardware form factor is somewhat similar to the Moonlander, but smaller. It is designed to be 3D printed using a SLA resin 3D printer.
+
+* Keyboard Maintainer: [Marko Skakun](https://github.com/skakunm)
+* Hardware Supported: Arduino Pro Micro
+* Hardware Availability: [Files to print](https://www.thingiverse.com/thing:5461125)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/skakunm_dactyl: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/handwired/skakunm_dactyl/rules.mk b/keyboards/handwired/skakunm_dactyl/rules.mk
new file mode 100644
index 0000000000..bd53948797
--- /dev/null
+++ b/keyboards/handwired/skakunm_dactyl/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 = yes # Commands for debug and configuration
+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
diff --git a/keyboards/handwired/skakunm_dactyl/skakunm_dactyl.c b/keyboards/handwired/skakunm_dactyl/skakunm_dactyl.c
new file mode 100644
index 0000000000..4105eea751
--- /dev/null
+++ b/keyboards/handwired/skakunm_dactyl/skakunm_dactyl.c
@@ -0,0 +1,4 @@
+// Copyright 2022 Marko Skakun <skakun.marko@gmail.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "skakunm_dactyl.h" \ No newline at end of file
diff --git a/keyboards/handwired/skakunm_dactyl/skakunm_dactyl.h b/keyboards/handwired/skakunm_dactyl/skakunm_dactyl.h
new file mode 100644
index 0000000000..fa08dd3bb0
--- /dev/null
+++ b/keyboards/handwired/skakunm_dactyl/skakunm_dactyl.h
@@ -0,0 +1,25 @@
+// Copyright 2022 Marko Skakun <skakun.marko@gmail.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_3x5_5(\
+ L10, L11, L12, L13, L14, R14, R13, R12, R11, R10, \
+ L20, L21, L22, L23, L24, R24, R23, R22, R21, R20, \
+ L30, L31, L32, L33, L34, R34, R33, R32, R31, R30, \
+ L00, L01, R01, R00, \
+ L04, L03, L02, R02, R03, R04 \
+ )\
+ {\
+ { L34, L33, L32, L31, L30 }, \
+ { L24, L23, L22, L21, L20 }, \
+ { L14, L13, L12, L11, L10 }, \
+ { L04, L03, L02, L01, L00 }, \
+\
+ { R34, R33, R32, R31, R30 }, \
+ { R24, R23, R22, R21, R20 }, \
+ { R14, R13, R12, R11, R10 }, \
+ { R04, R03, R02, R01, R00 }, \
+}
diff --git a/keyboards/handwired/slash/config.h b/keyboards/handwired/slash/config.h
index 4afdf9d4b9..f3c92e6dd2 100644
--- a/keyboards/handwired/slash/config.h
+++ b/keyboards/handwired/slash/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER asdftemp
-#define PRODUCT Slash
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C7, D6, B7, B6, B5, D7, C6, D0 }
#define MATRIX_COL_PINS { D2, F0, F1, F4, F5, F6, F7, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/slash/info.json b/keyboards/handwired/slash/info.json
index ce15788160..3fd0f1918e 100644
--- a/keyboards/handwired/slash/info.json
+++ b/keyboards/handwired/slash/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "slash",
+ "keyboard_name": "Slash",
+ "manufacturer": "asdftemp",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/snatchpad/config.h b/keyboards/handwired/snatchpad/config.h
index c0ac5ebbde..188135b4d6 100644
--- a/keyboards/handwired/snatchpad/config.h
+++ b/keyboards/handwired/snatchpad/config.h
@@ -5,13 +5,6 @@
#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
@@ -28,7 +21,6 @@
*/
#define MATRIX_ROW_PINS { F4, F5, F6 }
#define MATRIX_COL_PINS { B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/snatchpad/info.json b/keyboards/handwired/snatchpad/info.json
index 1306d72b06..22840d7352 100644
--- a/keyboards/handwired/snatchpad/info.json
+++ b/keyboards/handwired/snatchpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "snatchpad",
+ "manufacturer": "xia0",
"url": "",
"maintainer": "xia0",
+ "usb": {
+ "vid": "0x6662",
+ "pid": "0x7370",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/snatchpad/readme.md b/keyboards/handwired/snatchpad/readme.md
index 98021cc6bd..9e502579b5 100644
--- a/keyboards/handwired/snatchpad/readme.md
+++ b/keyboards/handwired/snatchpad/readme.md
@@ -31,4 +31,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/handwired/sono1/config.h b/keyboards/handwired/sono1/config.h
index 91519e884a..f20b77b231 100644
--- a/keyboards/handwired/sono1/config.h
+++ b/keyboards/handwired/sono1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x515A // "QZ"
-#define PRODUCT_ID 0x5331 // "S1"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ASKeyboard
-#define PRODUCT Sono1
-
/* key matrix size */
#define MATRIX_ROWS 15
#define MATRIX_COLS 8
diff --git a/keyboards/handwired/sono1/info.json b/keyboards/handwired/sono1/info.json
index 4d35c67b19..519ed121ed 100644
--- a/keyboards/handwired/sono1/info.json
+++ b/keyboards/handwired/sono1/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "sono1",
+ "keyboard_name": "Sono1",
+ "manufacturer": "ASKeyboard",
"url": "",
"maintainer": "DmNosachev",
+ "usb": {
+ "vid": "0x515A",
+ "pid": "0x5331"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/sono1/stm32f103/config.h b/keyboards/handwired/sono1/stm32f103/config.h
index 8da1256900..33563c3cf7 100644
--- a/keyboards/handwired/sono1/stm32f103/config.h
+++ b/keyboards/handwired/sono1/stm32f103/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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 }
diff --git a/keyboards/handwired/sono1/stm32f103/info.json b/keyboards/handwired/sono1/stm32f103/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/handwired/sono1/stm32f103/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/handwired/sono1/t2pp/config.h b/keyboards/handwired/sono1/t2pp/config.h
index 8a20aeeb1d..3ecf674050 100644
--- a/keyboards/handwired/sono1/t2pp/config.h
+++ b/keyboards/handwired/sono1/t2pp/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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 }
diff --git a/keyboards/handwired/sono1/t2pp/info.json b/keyboards/handwired/sono1/t2pp/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/handwired/sono1/t2pp/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/handwired/space_oddity/config.h b/keyboards/handwired/space_oddity/config.h
index 2e3b74041f..0c8e86704e 100644
--- a/keyboards/handwired/space_oddity/config.h
+++ b/keyboards/handwired/space_oddity/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER James Taylor
-#define PRODUCT Space Odyssey
-
#define MOUSEKEY_INTERVAL 16
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 60
@@ -22,7 +15,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, B3 }
#define MATRIX_COL_PINS { B2, B6, B5, B4, E6, D7, C6, D4, D0, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/space_oddity/info.json b/keyboards/handwired/space_oddity/info.json
index b1f2a801d9..33d24c3905 100644
--- a/keyboards/handwired/space_oddity/info.json
+++ b/keyboards/handwired/space_oddity/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Space Oddity",
+ "manufacturer": "James Taylor",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/split65/info.json b/keyboards/handwired/split65/info.json
index 34d9a21205..c766f894e1 100644
--- a/keyboards/handwired/split65/info.json
+++ b/keyboards/handwired/split65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "split65",
+ "manufacturer": "percyjw",
"url": "https://github.com/PercyJW-2/Split65",
"maintainer": "PercyJW-2",
+ "usb": {
+ "vid": "0x4A57",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/split65/promicro/config.h b/keyboards/handwired/split65/promicro/config.h
index e700578e08..3284c5e0d3 100644
--- a/keyboards/handwired/split65/promicro/config.h
+++ b/keyboards/handwired/split65/promicro/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-// USB Device descriptor parameter
-#define VENDOR_ID 0x4A57 // JW
-#define PRODUCT_ID 0x0000 // first keeb
-#define DEVICE_VER 0x0000 // first revision
-#define MANUFACTURER percyjw
-#define PRODUCT split65
-
// Matrix Assignments
#define MATRIX_ROWS 10 //Rows are doubled-up
#define MATRIX_COLS 8
diff --git a/keyboards/handwired/split65/stm32/config.h b/keyboards/handwired/split65/stm32/config.h
index b173481280..6c3d653d1d 100644
--- a/keyboards/handwired/split65/stm32/config.h
+++ b/keyboards/handwired/split65/stm32/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-// USB Device descriptor parameter
-#define VENDOR_ID 0x4A57 // JW
-#define PRODUCT_ID 0x0000 // first keeb
-#define DEVICE_VER 0x0000 // first revision
-#define MANUFACTURER percyjw
-#define PRODUCT split65
-
// Audio
#define AUDIO_PIN A5
#define AUDIO_PIN_ALT A4
diff --git a/keyboards/handwired/split89/config.h b/keyboards/handwired/split89/config.h
index 7927c1d83c..8cb8f4e1ea 100644
--- a/keyboards/handwired/split89/config.h
+++ b/keyboards/handwired/split89/config.h
@@ -18,13 +18,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER jurassic73
-#define PRODUCT split89
-
/*
* Keyboard Matrix Assignments
*
diff --git a/keyboards/handwired/split89/info.json b/keyboards/handwired/split89/info.json
index 7147420f32..fda9b2c9f0 100644
--- a/keyboards/handwired/split89/info.json
+++ b/keyboards/handwired/split89/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "split89",
- "maintainer": "jurassic73",
+ "manufacturer": "jurassic73",
"url": "https://github.com/jurassic73/split89",
+ "maintainer": "jurassic73",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"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, "y":0}, {"label":"F6", "x":10.25, "y":0}, {"label":"F7", "x":11.25, "y":0}, {"label":"F8", "x":12.25, "y":0}, {"label":"F9", "x":13.75, "y":0}, {"label":"F10", "x":14.75, "y":0}, {"label":"F11", "x":15.75, "y":0}, {"label":"F12", "x":16.75, "y":0}, {"label":"PrtSc", "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":9.75, "y":1.5}, {"label":"*", "x":10.75, "y":1.5}, {"label":"(", "x":11.75, "y":1.5}, {"label":")", "x":12.75, "y":1.5}, {"label":"_", "x":13.75, "y":1.5}, {"label":"+", "x":14.75, "y":1.5}, {"label":"Backspace", "x":15.75, "y":1.5, "w":2}, {"label":"Insert", "x":18, "y":1.5}, {"label":"Home", "x":19, "y":1.5}, {"label":"PgUp", "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":9.25, "y":2.5}, {"label":"U", "x":10.25, "y":2.5}, {"label":"I", "x":11.25, "y":2.5}, {"label":"O", "x":12.25, "y":2.5}, {"label":"P", "x":13.25, "y":2.5}, {"label":"{", "x":14.25, "y":2.5}, {"label":"}", "x":15.25, "y":2.5}, {"label":"|", "x":16.25, "y":2.5, "w":1.5}, {"label":"Delete", "x":18, "y":2.5}, {"label":"End", "x":19, "y":2.5}, {"label":"PgDn", "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":9.5, "y":3.5}, {"label":"J", "x":10.5, "y":3.5}, {"label":"K", "x":11.5, "y":3.5}, {"label":"L", "x":12.5, "y":3.5}, {"label":":", "x":13.5, "y":3.5}, {"label":"\"", "x":14.5, "y":3.5}, {"label":"Enter", "x":15.5, "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":10, "y":4.5}, {"label":"M", "x":11, "y":4.5}, {"label":"<", "x":12, "y":4.5}, {"label":">", "x":13, "y":4.5}, {"label":"?", "x":14, "y":4.5}, {"label":"Shift", "x":15, "y":4.5, "w":2.75}, {"label":"\u2191", "x":19, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Fn", "x":1.25, "y":5.5, "w":1.25}, {"label":"Win", "x":2.5, "y":5.5, "w":1.25}, {"label":"Alt", "x":3.75, "y":5.5, "w":1.25}, {"x":5, "y":5.5, "w":2.25}, {"x":10, "y":5.5, "w":2.75}, {"label":"Alt", "x":12.75, "y":5.5, "w":1.25}, {"label":"Win", "x":14, "y":5.5, "w":1.25}, {"label":"Menu", "x":15.25, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":16.5, "y":5.5, "w":1.25}, {"label":"\u2190", "x":18, "y":5.5}, {"label":"\u2193", "x":19, "y":5.5}, {"label":"\u2192", "x":20, "y":5.5}]
diff --git a/keyboards/handwired/splittest/bluepill/config.h b/keyboards/handwired/splittest/bluepill/config.h
new file mode 100644
index 0000000000..b1315ee3c7
--- /dev/null
+++ b/keyboards/handwired/splittest/bluepill/config.h
@@ -0,0 +1,16 @@
+// Copyright 2022 dvermd (@dvermd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+// wiring of each half
+#define MATRIX_ROW_PINS { B10 }
+#define MATRIX_COL_PINS { B1 }
+
+#define SPLIT_HAND_PIN A7
+
+#if !(defined(USE_SDI1_ON_STANDARD_ROLE_PINS) || defined(USE_SDI1_ON_ALTERNATE_ROLE_PINS) || defined(USE_SDI2))
+ #define USE_SDI1_ON_STANDARD_ROLE_PINS
+#endif
diff --git a/keyboards/handwired/splittest/bluepill/halconf.h b/keyboards/handwired/splittest/bluepill/halconf.h
new file mode 100644
index 0000000000..e11e5b637a
--- /dev/null
+++ b/keyboards/handwired/splittest/bluepill/halconf.h
@@ -0,0 +1,11 @@
+// Copyright 2022 dvermd (@dvermd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/* Needed for serial bitbang, half-duplex and full-duplex */
+#define HAL_USE_PAL TRUE
+#define PAL_USE_WAIT TRUE
+#define PAL_USE_CALLBACKS TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/handwired/splittest/bluepill/mcuconf.h b/keyboards/handwired/splittest/bluepill/mcuconf.h
new file mode 100644
index 0000000000..af2f14a9d3
--- /dev/null
+++ b/keyboards/handwired/splittest/bluepill/mcuconf.h
@@ -0,0 +1,14 @@
+// Copyright 2022 dvermd (@dvermd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+// These are needed if the communication is on the SD1 USART, either with standard or alternate pins
+#undef STM32_SERIAL_USE_USART1
+#define STM32_SERIAL_USE_USART1 TRUE
+
+// These are needed if the communication is on the SD2 USART, either with standard or alternate pins
+#undef STM32_SERIAL_USE_USART2
+#define STM32_SERIAL_USE_USART2 TRUE
diff --git a/keyboards/handwired/splittest/bluepill/post_config.h b/keyboards/handwired/splittest/bluepill/post_config.h
new file mode 100644
index 0000000000..be9dd398ff
--- /dev/null
+++ b/keyboards/handwired/splittest/bluepill/post_config.h
@@ -0,0 +1,43 @@
+// Copyright 2022 dvermd (@dvermd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#if defined(SPLIT_SERIAL_HALFDUPLEX)
+
+ #if defined(USE_SDI1_ON_STANDARD_ROLE_PINS)
+ #define SOFT_SERIAL_PIN A9
+ #elif defined(USE_SDI1_ON_ALTERNATE_ROLE_PINS)
+ #define SOFT_SERIAL_PIN B6
+ #define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs
+ #elif defined(USE_SDI2)
+ #define SOFT_SERIAL_PIN A2
+ #define SERIAL_USART_DRIVER SD2 // USART driver of TX and RX pin. default: SD1
+ #else
+ #error "splittest serial_halfduplex keymap is missing a configuration (USE_SDI1_ON_STANDARD_ROLE_PINS, USE_SDI1_ON_ALTERNATE_ROLE_PINS, USE_SDI2)"
+ #endif
+
+#elif defined(SPLIT_SERIAL_FULLDUPLEX)
+
+ #define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
+
+ #if defined(USE_SDI1_ON_STANDARD_ROLE_PINS)
+ #define SOFT_SERIAL_PIN A9
+ #define SERIAL_USART_RX_PIN A10 // USART RX pin
+ #elif defined(USE_SDI1_ON_ALTERNATE_ROLE_PINS)
+ #define SOFT_SERIAL_PIN B6
+ #define SERIAL_USART_RX_PIN B7 // USART RX pin
+ #define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs
+ #elif defined(USE_SDI2)
+ #define SOFT_SERIAL_PIN A2
+ #define SERIAL_USART_RX_PIN A3 // USART RX pin
+ #define SERIAL_USART_DRIVER SD2 // USART driver of TX and RX pin. default: SD1
+ #else
+ #error "splittest serial_fullduplex keymap is missing a configuration (USE_SDI1_ON_STANDARD_ROLE_PINS, USE_SDI1_ON_ALTERNATE_ROLE_PINS, USE_SDI2)"
+ #endif
+
+#else // defined(SPLIT_BITBANG)
+
+ #define SOFT_SERIAL_PIN B8
+
+#endif
diff --git a/keyboards/handwired/splittest/bluepill/readme.md b/keyboards/handwired/splittest/bluepill/readme.md
new file mode 100644
index 0000000000..381aa6ba3a
--- /dev/null
+++ b/keyboards/handwired/splittest/bluepill/readme.md
@@ -0,0 +1,65 @@
+# bluepill splittest
+
+This is the splittest example for the bluepill MCU.
+To trigger keypress, short together pins _B10_ and _B1_.
+
+## Keyboard Configuration
+
+The type of communication (bitbang, serial (half/full duplex)) is set by the keymap `config.h` file with variables with `SPLIT_` prefix.
+So this example uses:
+
+- `config.h` to set which SDI to use for serial. Either define `USE_SDI1_ON_STANDARD_ROLE_PINS`, `USE_SDI1_ON_ALTERNATE_ROLE_PINS` or `USE_SDI2` before the `#ifdef` that configures the default case when none of these variable is defined.
+- `post_config.h` for defining the communication pins between the halves once the keymap is configured.
+
+On your keyboard, you most likely will only use `config.h` because you'd have already chosen your communication scheme: serial type, SDI, pins.
+
+## Wiring
+
+### Switches
+
+- Add switches to both Bluepills across B10 and B1 pins
+
+### Handedness
+
+Have a look at the [handedness documentation](https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness)
+
+- Add pull-up resistor to left side between VCC and A7
+- Add pull-down resistors to right side between GND and A7
+
+### Send power to the other half
+
+- Connect the following pins on both sides together: GND, VCC
+
+### Halves data connection
+
+Choose one of the connection type
+
+#### serial - bitbang
+
+- Connect the B8 pins on both sides together
+
+#### serial - usart half duplex
+
+Check the [documentation](https://docs.qmk.fm/#/serial_driver?id=usart-half-duplex) to determine the pull-up resistor.
+
+- To use the default usart (USART1) with the standard role pins,
+ - Connect the A9 pins on both sides together and to add a pull-up resistor on one of these pins
+ - Define USE_SDI1_ON_STANDARD_ROLE_PINS in config.h
+- To use the default usart (USART1) with the alternate role pins,
+ - Connect the B6 pins on both sides together and to add a pull-up resistor on one of these pins
+ - Define USE_SDI1_ON_ALTERNATE_ROLE_PINS in config.h
+- To use the usart2 (USART2) pins,
+ - Connect the A2 pins on both sides together and to add a pull-up resistor on one of these pins
+ - Define USE_SDI2 in config.h
+
+#### serial - usart full duplex
+
+- To use the default usart (USART1) with the standard role pins,
+ - Connect the mpins on A9, A10 one to the other on each side
+ - Define USE_SDI1_ON_STANDARD_ROLE_PINS in config.h
+- To use the default usart (USART1) with the alternate role pins,
+ - Connect the pins B6, B7 one to the other on each side
+ - Define USE_SDI1_ON_ALTERNATE_ROLE_PINS in config.h
+- To use the usart2 (USART2) pins,
+ - Connect the pins A2, A3 one to the other on each side
+ - Define USE_SDI2 in config.h
diff --git a/keyboards/handwired/splittest/bluepill/rules.mk b/keyboards/handwired/splittest/bluepill/rules.mk
new file mode 100644
index 0000000000..019b1130d9
--- /dev/null
+++ b/keyboards/handwired/splittest/bluepill/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/splittest/config.h b/keyboards/handwired/splittest/config.h
index d4816e4355..eecffe3803 100644
--- a/keyboards/handwired/splittest/config.h
+++ b/keyboards/handwired/splittest/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1111
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT Split Tester
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 2
diff --git a/keyboards/handwired/splittest/info.json b/keyboards/handwired/splittest/info.json
index 9c7412ad82..973eebd1f9 100644
--- a/keyboards/handwired/splittest/info.json
+++ b/keyboards/handwired/splittest/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Split Tester",
+ "manufacturer": "Keebio",
"url": "",
"maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1111",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/splittest/keymaps/bitbang/config.h b/keyboards/handwired/splittest/keymaps/bitbang/config.h
new file mode 100644
index 0000000000..fddd3d88b2
--- /dev/null
+++ b/keyboards/handwired/splittest/keymaps/bitbang/config.h
@@ -0,0 +1,16 @@
+// Copyright 2022 dvermd (@dvermd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define SPLIT_BITBANG
+
+#define FORCED_SYNC_THROTTLE_MS 100
+
+#define SELECT_SOFT_SERIAL_SPEED 3 // or 0, 1, 2, 4, 5
+ // 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/handwired/splittest/keymaps/bitbang/keymap.c b/keyboards/handwired/splittest/keymaps/bitbang/keymap.c
new file mode 100644
index 0000000000..8a83e19850
--- /dev/null
+++ b/keyboards/handwired/splittest/keymaps/bitbang/keymap.c
@@ -0,0 +1,14 @@
+// Copyright 2022 dvermd (@dvermd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {[0] = LAYOUT(KC_L, KC_R)};
+
+void keyboard_post_init_user(void) {
+ // Customise these values to desired behaviour
+ debug_enable = true;
+ debug_matrix = true;
+ debug_keyboard = true;
+ // debug_mouse=true;
+} \ No newline at end of file
diff --git a/keyboards/handwired/splittest/keymaps/bitbang/rules.mk b/keyboards/handwired/splittest/keymaps/bitbang/rules.mk
new file mode 100644
index 0000000000..a4f16a0b6b
--- /dev/null
+++ b/keyboards/handwired/splittest/keymaps/bitbang/rules.mk
@@ -0,0 +1 @@
+SERIAL_DRIVER = bitbang
diff --git a/keyboards/handwired/splittest/keymaps/default/keymap.c b/keyboards/handwired/splittest/keymaps/default/keymap.c
index 0057478c1c..fcef718983 100644
--- a/keyboards/handwired/splittest/keymaps/default/keymap.c
+++ b/keyboards/handwired/splittest/keymaps/default/keymap.c
@@ -1,5 +1,8 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(RGB_MOD, QK_BOOT)
+ [0] = LAYOUT(KC_L, KC_R)
};
diff --git a/keyboards/handwired/splittest/keymaps/rgb/keymap.c b/keyboards/handwired/splittest/keymaps/rgb/keymap.c
new file mode 100644
index 0000000000..1fa86057c9
--- /dev/null
+++ b/keyboards/handwired/splittest/keymaps/rgb/keymap.c
@@ -0,0 +1,8 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(RGB_MOD, QK_BOOT)
+};
diff --git a/keyboards/handwired/splittest/keymaps/rgb/rules.mk b/keyboards/handwired/splittest/keymaps/rgb/rules.mk
new file mode 100644
index 0000000000..1e3cebb145
--- /dev/null
+++ b/keyboards/handwired/splittest/keymaps/rgb/rules.mk
@@ -0,0 +1 @@
+RGBLIGHT_ENABLE = yes
diff --git a/keyboards/handwired/splittest/keymaps/serial_fullduplex/config.h b/keyboards/handwired/splittest/keymaps/serial_fullduplex/config.h
new file mode 100644
index 0000000000..1a2899751b
--- /dev/null
+++ b/keyboards/handwired/splittest/keymaps/serial_fullduplex/config.h
@@ -0,0 +1,6 @@
+// Copyright 2022 dvermd (@dvermd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define SPLIT_SERIAL_FULLDUPLEX
diff --git a/keyboards/handwired/splittest/keymaps/serial_fullduplex/halconf.h b/keyboards/handwired/splittest/keymaps/serial_fullduplex/halconf.h
new file mode 100644
index 0000000000..58840c28a7
--- /dev/null
+++ b/keyboards/handwired/splittest/keymaps/serial_fullduplex/halconf.h
@@ -0,0 +1,8 @@
+// Copyright 2022 dvermd (@dvermd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define HAL_USE_SERIAL TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/handwired/splittest/keymaps/serial_fullduplex/keymap.c b/keyboards/handwired/splittest/keymaps/serial_fullduplex/keymap.c
new file mode 100644
index 0000000000..7535715da1
--- /dev/null
+++ b/keyboards/handwired/splittest/keymaps/serial_fullduplex/keymap.c
@@ -0,0 +1,14 @@
+// Copyright 2022 dvermd (@dvermd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {[0] = LAYOUT(KC_L, KC_R)};
+
+void keyboard_post_init_user(void) {
+ // Customise these values to desired behaviour
+ debug_enable = true;
+ debug_matrix = true;
+ debug_keyboard = true;
+ // debug_mouse=true;
+}
diff --git a/keyboards/handwired/splittest/keymaps/serial_fullduplex/rules.mk b/keyboards/handwired/splittest/keymaps/serial_fullduplex/rules.mk
new file mode 100644
index 0000000000..c6e2988321
--- /dev/null
+++ b/keyboards/handwired/splittest/keymaps/serial_fullduplex/rules.mk
@@ -0,0 +1 @@
+SERIAL_DRIVER = usart
diff --git a/keyboards/handwired/splittest/keymaps/serial_halfduplex/config.h b/keyboards/handwired/splittest/keymaps/serial_halfduplex/config.h
new file mode 100644
index 0000000000..3cb68f6e7d
--- /dev/null
+++ b/keyboards/handwired/splittest/keymaps/serial_halfduplex/config.h
@@ -0,0 +1,6 @@
+// Copyright 2022 dvermd (@dvermd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define SPLIT_SERIAL_HALFDUPLEX
diff --git a/keyboards/handwired/splittest/keymaps/serial_halfduplex/halconf.h b/keyboards/handwired/splittest/keymaps/serial_halfduplex/halconf.h
new file mode 100644
index 0000000000..58840c28a7
--- /dev/null
+++ b/keyboards/handwired/splittest/keymaps/serial_halfduplex/halconf.h
@@ -0,0 +1,8 @@
+// Copyright 2022 dvermd (@dvermd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define HAL_USE_SERIAL TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/handwired/splittest/keymaps/serial_halfduplex/keymap.c b/keyboards/handwired/splittest/keymaps/serial_halfduplex/keymap.c
new file mode 100644
index 0000000000..d65d04b623
--- /dev/null
+++ b/keyboards/handwired/splittest/keymaps/serial_halfduplex/keymap.c
@@ -0,0 +1,16 @@
+// Copyright 2022 dvermd (@dvermd)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {[0] = LAYOUT(KC_L, KC_R)};
+
+void keyboard_post_init_user(void) {
+ // Customise these values to desired behaviour
+ debug_enable = true;
+ debug_matrix = true;
+ debug_keyboard = true;
+ // debug_mouse=true;
+}
diff --git a/keyboards/handwired/splittest/keymaps/serial_halfduplex/rules.mk b/keyboards/handwired/splittest/keymaps/serial_halfduplex/rules.mk
new file mode 100644
index 0000000000..c6e2988321
--- /dev/null
+++ b/keyboards/handwired/splittest/keymaps/serial_halfduplex/rules.mk
@@ -0,0 +1 @@
+SERIAL_DRIVER = usart
diff --git a/keyboards/handwired/splittest/rules.mk b/keyboards/handwired/splittest/rules.mk
index b33e198bbd..cc924d61d8 100644
--- a/keyboards/handwired/splittest/rules.mk
+++ b/keyboards/handwired/splittest/rules.mk
@@ -3,13 +3,12 @@
#
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
+EXTRAKEY_ENABLE = no # 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
AUDIO_ENABLE = no # Audio output
-RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SPLIT_KEYBOARD = yes
diff --git a/keyboards/handwired/steamvan/info.json b/keyboards/handwired/steamvan/info.json
deleted file mode 100644
index 165fa0a38f..0000000000
--- a/keyboards/handwired/steamvan/info.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "keyboard_name": "steamvan",
- "url": "",
- "maintainer": "qmk",
- "layouts": {
- "LAYOUT_standard": {
- "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":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "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, "w":1.5}, {"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}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.5}, {"label":"Alt", "x":2.75, "y":3, "w":1.25}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"label":"Alt", "x":8.25, "y":3, "w":1.25}, {"label":"Win", "x":9.5, "y":3, "w":1.5}, {"label":"Menu", "x":11, "y":3, "w":1.75}]
- },
-
- "LAYOUT_arrow": {
- "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":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "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, "w":1.5}, {"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}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.5}, {"label":"Alt", "x":2.75, "y":3, "w":1.25}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"x":8.25, "y":3, "w":1.5}, {"label":"Alt", "x":9.75, "y":3}, {"label":"Win", "x":10.75, "y":3}, {"label":"Menu", "x":11.75, "y":3}]
- },
-
- "LAYOUT_command": {
- "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":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "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, "w":1.5}, {"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}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Win", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"x":8.25, "y":3, "w":1.5}, {"label":"Alt", "x":9.75, "y":3, "w":1.5}, {"label":"Win", "x":11.25, "y":3, "w":1.5}]
- },
-
- "LAYOUT_arrow_command": {
- "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":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "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, "w":1.5}, {"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}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Win", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"x":8.25, "y":3, "w":1.5}, {"label":"Alt", "x":9.75, "y":3}, {"label":"Win", "x":10.75, "y":3}, {"label":"Menu", "x":11.75, "y":3}]
- }
- }
-}
diff --git a/keyboards/handwired/steamvan/keymaps/jmdaly/keymap.c b/keyboards/handwired/steamvan/keymaps/jmdaly/keymap.c
index 1c835bad1f..ad52fcfaf8 100644
--- a/keyboards/handwired/steamvan/keymaps/jmdaly/keymap.c
+++ b/keyboards/handwired/steamvan/keymaps/jmdaly/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______
),
[_L4] = LAYOUT_standard( /* LAYER 4 */
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_PGUP, _______,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_PGUP, _______,
KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_HOME, KC_END, _______,
KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_PGDN, KC_F12, _______,
_______, KC_LSFT, KC_B, KC_SPC, KC_C, _______, _______, _______
diff --git a/keyboards/handwired/steamvan/rev1/config.h b/keyboards/handwired/steamvan/rev1/config.h
index 18a6690c25..2a33f1fc13 100644
--- a/keyboards/handwired/steamvan/rev1/config.h
+++ b/keyboards/handwired/steamvan/rev1/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER John M Daly
-#define PRODUCT SteamVan rev1
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { A6, A5, A4, A3 }
#define MATRIX_COL_PINS { A9, A8, B15, B14, B13, A10, B9, B6, B5, B4, B3, A15 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/steamvan/rev1/info.json b/keyboards/handwired/steamvan/rev1/info.json
new file mode 100644
index 0000000000..e84a73ab8e
--- /dev/null
+++ b/keyboards/handwired/steamvan/rev1/info.json
@@ -0,0 +1,28 @@
+{
+ "keyboard_name": "SteamVan rev1",
+ "manufacturer": "John M Daly",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_standard": {
+ "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":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "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, "w":1.5}, {"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}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.5}, {"label":"Alt", "x":2.75, "y":3, "w":1.25}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"label":"Alt", "x":8.25, "y":3, "w":1.25}, {"label":"Win", "x":9.5, "y":3, "w":1.5}, {"label":"Menu", "x":11, "y":3, "w":1.75}]
+ },
+
+ "LAYOUT_arrow": {
+ "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":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "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, "w":1.5}, {"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}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.5}, {"label":"Alt", "x":2.75, "y":3, "w":1.25}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"x":8.25, "y":3, "w":1.5}, {"label":"Alt", "x":9.75, "y":3}, {"label":"Win", "x":10.75, "y":3}, {"label":"Menu", "x":11.75, "y":3}]
+ },
+
+ "LAYOUT_command": {
+ "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":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "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, "w":1.5}, {"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}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Win", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"x":8.25, "y":3, "w":1.5}, {"label":"Alt", "x":9.75, "y":3, "w":1.5}, {"label":"Win", "x":11.25, "y":3, "w":1.5}]
+ },
+
+ "LAYOUT_arrow_command": {
+ "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":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "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, "w":1.5}, {"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}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Win", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"x":8.25, "y":3, "w":1.5}, {"label":"Alt", "x":9.75, "y":3}, {"label":"Win", "x":10.75, "y":3}, {"label":"Menu", "x":11.75, "y":3}]
+ }
+ }
+}
diff --git a/keyboards/handwired/stef9998/split_5x7/config.h b/keyboards/handwired/stef9998/split_5x7/config.h
new file mode 100644
index 0000000000..d04675e7db
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/config.h
@@ -0,0 +1,20 @@
+/*
+Copyright 2022 stef9998
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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" \ No newline at end of file
diff --git a/keyboards/handwired/stef9998/split_5x7/info.json b/keyboards/handwired/stef9998/split_5x7/info.json
new file mode 100644
index 0000000000..a1248b2d9e
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/info.json
@@ -0,0 +1,97 @@
+{
+ "keyboard_name": "Split_5x7",
+ "url": "",
+ "maintainer": "stef9998",
+ "manufacturer": "Stef9998",
+ "usb": {
+ "vid": "0x57EF",
+ "pid": "0x6063",
+ "device_version": "1.0.0"
+ },
+ "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":"F1", "x":6, "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":"[", "x":6, "y":1},
+
+ {"label":"Caps Lock", "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":"=", "x":6, "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":"F3", "x":6, "y":3},
+
+ {"label":"Ctrl", "x":0, "y":4},
+ {"label":"Ctrl", "x":1, "y":4},
+ {"label":"Gui", "x":2, "y":4, "w":1.25},
+ {"label":"Alt", "x":3.25, "y":4, "w":1.25},
+ {"label":"Space", "x":4.5, "y":4, "w":1.5},
+ {"label":"F5", "x":6, "y":4},
+
+
+ {"label":"F2", "x":14, "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":"Backspace", "x":14, "y":0},
+
+ {"label":"]", "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":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":"Enter", "x":14, "y":2},
+
+ {"label":"F4", "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":"Shift", "x":14, "y":3},
+
+ {"label":"F5", "x":8, "y":4},
+ {"label":"Space", "x":9, "y":4, "w":1.5},
+ {"label":"AltGr", "x":10.5, "y":4, "w":1.25},
+ {"label":"Fn", "x":11.75, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":13, "y":4},
+ {"label":"Ctrl", "x":13, "y":4}
+
+
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/stef9998/split_5x7/keymaps/default/config.h b/keyboards/handwired/stef9998/split_5x7/keymaps/default/config.h
new file mode 100644
index 0000000000..2a19e47502
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/keymaps/default/config.h
@@ -0,0 +1,28 @@
+/*
+Copyright 2022 stef9998
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#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
+
diff --git a/keyboards/handwired/stef9998/split_5x7/keymaps/default/keymap.c b/keyboards/handwired/stef9998/split_5x7/keymaps/default/keymap.c
new file mode 100644
index 0000000000..ce130d6e79
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/keymaps/default/keymap.c
@@ -0,0 +1,96 @@
+/*
+Copyright 2022 stef9998
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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.
+// You can also skip layer-names entirely and just use numbers.
+enum custom_layer {
+ _QWERTY,
+ _FN,
+ _SYM, //symbols & numbers
+ _CFG, //config
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ FN,
+ SYM,
+ CONFIG,
+};
+
+// Shortcut to make keymap more readable
+#define KC_FN MO(_FN)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_QWERTY] = LAYOUT(
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ QK_GESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_NO , KC_NO ,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 ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_CAPS ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_EQL , KC_MINS ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,SH_OS , KC_NO ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSPC ,
+// ├────────┼────────┼────────┴─┬──────┴───┬────┴────────┼────────┤ ├────────┼────────┴────┬───┴──────┬─┴────────┼────────┼────────┤
+ KC_LCTL ,KC_LCPO ,KC_LGUI ,KC_LALT ,KC_SPC ,MO(_SYM), MO(_SYM),KC_SPC ,KC_RALT ,MO(_FN) ,KC_RCPC ,KC_RCTL
+// └────────┴────────┴──────────┴──────────┴─────────────┴────────┘ └────────┴─────────────┴──────────┴──────────┴────────┴────────┘
+),
+
+[_FN] = LAYOUT(
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,KC_DEL ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_PIPE ,_______ , _______ ,KC_PGUP ,KC_HOME ,KC_UP ,KC_END ,KC_PSCR ,XXXXXXX ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_HASH ,KC_DLR ,KC_LBRC ,KC_RBRC ,KC_GRV ,_______ , _______ ,KC_PGDN ,KC_LEFT ,KC_DOWN ,KC_RIGHT,_______ ,KC_QUOT ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_PERC ,KC_CIRC ,KC_LPRN ,KC_RPRN ,KC_TILD ,_______ , _______ ,KC_MSEL ,KC_MPLY ,KC_MPRV ,KC_MNXT ,KC_MPLY ,_______ ,
+// ├────────┼────────┼────────┴─┬──────┴───┬────┴────────┼────────┤ ├────────┼────────┴────┬───┴──────┬─┴────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______
+// └────────┴────────┴──────────┴──────────┴─────────────┴────────┘ └────────┴─────────────┴──────────┴──────────┴────────┴────────┘
+),
+
+[_SYM] = LAYOUT(
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_GRV ,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_DEL ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_EXLM ,KC_AT ,KC_HASH ,KC_DLR ,KC_PERC ,_______ , _______ ,KC_CIRC ,KC_AMPR ,KC_ASTR ,KC_LPRN ,KC_RPRN ,XXXXXXX ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,_______ , _______ ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_MSEL ,KC_MPLY ,XXXXXXX , KC_MPRV, KC_MNXT,_______ , _______ ,KC_MSEL ,KC_MPLY , KC_MPRV, KC_MNXT,KC_MPLY ,_______ ,
+// ├────────┼────────┼────────┴─┬──────┴───┬────┴────────┼────────┤ ├────────┼────────┴────┬───┴──────┬─┴────────┼────────┼────────┤
+ QK_BOOT ,_______ ,_______ ,_______ ,_______ ,TG(_CFG), TG(_CFG),_______ ,_______ ,_______ ,_______ ,QK_BOOT
+// └────────┴────────┴──────────┴──────────┴─────────────┴────────┘ └────────┴─────────────┴──────────┴──────────┴────────┴────────┘
+),
+
+[_CFG] = LAYOUT(
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ TG(_CFG),_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┼────────┼────────┴─┬──────┴───┬────┴────────┼────────┤ ├────────┼────────┴────┬───┴──────┬─┴────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______
+// └────────┴────────┴──────────┴──────────┴─────────────┴────────┘ └────────┴─────────────┴──────────┴──────────┴────────┴────────┘
+),
+};
diff --git a/keyboards/handwired/stef9998/split_5x7/keymaps/default/readme.md b/keyboards/handwired/stef9998/split_5x7/keymaps/default/readme.md
new file mode 100644
index 0000000000..9d3e057bc6
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/keymaps/default/readme.md
@@ -0,0 +1,7 @@
+![Split_5x7 Layout Image](https://i.imgur.com/XnDWlJOh.png)
+
+# Default Layout
+
+This is the default layout.
+For the most part it's a straightforward and easy to follow layout.
+The only thing to note is the apostrophe key which is on the second layer under return. \ No newline at end of file
diff --git a/keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/config.h b/keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/config.h
new file mode 100644
index 0000000000..3b7ee90f92
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/config.h
@@ -0,0 +1,34 @@
+/*
+Copyright 2022 stef9998
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#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
+
+#define LCPO_KEYS KC_LCTL,KC_TRNS,KC_LBRC
+#define RCPC_KEYS KC_RCTL,KC_TRNS,KC_RBRC
+
+#define TAPPING_TERM_PER_KEY
+#define IGNORE_MOD_TAP_INTERRUPT
+#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY \ No newline at end of file
diff --git a/keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/keymap.c b/keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/keymap.c
new file mode 100644
index 0000000000..0be1e4cbb3
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/keymap.c
@@ -0,0 +1,188 @@
+/*
+Copyright 2022 stef9998
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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.
+enum custom_layer {
+ _QWERTY,
+ _HOMEMOD,
+ _FN,
+ _SYM, //symbols & numbers
+ _SPARE,
+ _CFG, //config
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ HOMEMOD,
+ FN,
+ SYM,
+ SPARE,
+ CONFIG,
+};
+
+// Shortcut to make keymap more readable
+#define KC_FN MO(_FN)
+
+bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_LSPO:
+ // 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 false;
+// case MT(MOD_LSFT,KC_9):
+// return false;
+ case KC_RSPC:
+ return false;
+ default:
+ // 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;
+ }
+}
+
+//layer_state_t layer_state_set_user(layer_state_t state) {
+// return update_tri_layer_state(state, _ESS, _SYM, _SYM_ESS);
+//}
+
+//Modified from default, cause I want CapsLock to still be there even when I swap hands
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+{ {0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}, {6, 5}},
+{ {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}, {6, 6}},
+{ {0, 2}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}, {6, 7}}, // caps won't be switched, because of extend
+{ {0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8}, {6, 8}},
+{ {0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9}, {6, 9}},
+
+{ {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}},
+{ {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {6, 1}},
+{ {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {6, 2}},
+{ {0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {6, 3}},
+{ {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}, {6, 4}},
+};
+
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case SH_T(KC_SPC):
+ return TAPPING_TERM + 300;
+ default:
+ return TAPPING_TERM;
+ }
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_QWERTY] = LAYOUT(
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ QK_GESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_NO , KC_NO ,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 ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_CAPS ,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_EQL , KC_MINS ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_ENT ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSPO ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,SH_OS , KC_NO ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSPC ,
+// ├────────┼────────┼────────┴─┬──────┴───┬────┴────────┼────────┤ ├────────┼────────┴────┬───┴──────┬─┴────────┼────────┼────────┤
+ KC_LCTL ,KC_LCPO ,KC_LGUI ,KC_LALT ,SH_T(KC_SPC) ,MO(_SYM), MO(_SYM),KC_SPC ,KC_RALT ,MO(_FN) ,KC_RCPC ,KC_RCTL
+// └────────┴────────┴──────────┴──────────┴─────────────┴────────┘ └────────┴─────────────┴──────────┴──────────┴────────┴────────┘
+),
+
+[_HOMEMOD] = LAYOUT(
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+_______ ,_______ ,RALT_T(KC_S),LCTL_T(KC_D),LSFT_T(KC_F),LT(_SYM,KC_G),_______ , _______ ,LT(_SYM,KC_H),RSFT_T(KC_J),RCTL_T(KC_K),LALT_T(KC_L),_______ ,_______ ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,KC_RSFT ,
+// ├────────┼────────┼────────┴─┬──────┴───┬────┴────────┼────────┤ ├────────┼────────┴────┬───┴──────┬─┴────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______
+// └────────┴────────┴──────────┴──────────┴─────────────┴────────┘ └────────┴─────────────┴──────────┴──────────┴────────┴────────┘
+),
+
+[_FN] = LAYOUT(
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,KC_DEL ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_EXLM ,KC_AT ,KC_LCBR ,KC_RCBR ,KC_PIPE ,_______ , _______ ,KC_PGUP ,KC_HOME ,KC_UP ,KC_END ,KC_PSCR ,XXXXXXX ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_HASH ,KC_DLR ,KC_LBRC ,KC_RBRC ,KC_GRV ,_______ , _______ ,KC_PGDN ,KC_LEFT ,KC_DOWN ,KC_RIGHT,_______ ,_______ ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_PERC ,KC_CIRC ,KC_LPRN ,KC_RPRN ,KC_TILD ,_______ , _______ ,KC_MSEL ,KC_MPLY ,KC_MPRV ,KC_MNXT ,KC_MPLY ,_______ ,
+// ├────────┼────────┼────────┴─┬──────┴───┬────┴────────┼────────┤ ├────────┼────────┴────┬───┴──────┬─┴────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______
+// └────────┴────────┴──────────┴──────────┴─────────────┴────────┘ └────────┴─────────────┴──────────┴──────────┴────────┴────────┘
+),
+
+[_SYM] = LAYOUT(
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ KC_GRV ,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_DEL ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_EXLM ,KC_AT ,KC_HASH ,KC_DLR ,KC_PERC ,_______ , _______ ,KC_CIRC ,KC_AMPR ,KC_ASTR ,KC_LPRN ,KC_RPRN ,XXXXXXX ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ CAPSWRD ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,_______ , _______ ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_QUOT ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,KC_MSEL ,KC_MPLY ,XXXXXXX ,KC_EQL ,KC_PLUS ,_______ , _______ ,KC_UNDS ,KC_MINS , KC_MPRV, KC_MNXT,KC_MPLY ,_______ ,
+// ├────────┼────────┼────────┴─┬──────┴───┬────┴────────┼────────┤ ├────────┼────────┴────┬───┴──────┬─┴────────┼────────┼────────┤
+ QK_BOOT ,_______ ,_______ ,_______ ,_______ ,TG(_CFG), TG(_CFG),_______ ,_______ ,_______ ,_______ ,QK_BOOT
+// └────────┴────────┴──────────┴──────────┴─────────────┴────────┘ └────────┴─────────────┴──────────┴──────────┴────────┴────────┘
+),
+
+[_CFG] = LAYOUT(
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ TG(_CFG),_______ ,TG(_HOMEMOD),_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,KC_1 , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┼────────┼────────┴─┬──────┴───┬────┴────────┼────────┤ ├────────┼────────┴────┬───┴──────┬─┴────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______
+// └────────┴────────┴──────────┴──────────┴─────────────┴────────┘ └────────┴─────────────┴──────────┴──────────┴────────┴────────┘
+),
+
+[_SPARE] = LAYOUT(
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,XXXXXXX , XXXXXXX ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ XXXXXXX ,QK_BOOT ,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+// ├────────┼────────┼────────┴─┬──────┴───┬────┴────────┼────────┤ ├────────┼────────┴────┬───┴──────┬─┴────────┼────────┼────────┤
+ XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
+// └────────┴────────┴──────────┴──────────┴─────────────┴────────┘ └────────┴─────────────┴──────────┴──────────┴────────┴────────┘
+)
+};
+
+/*
+[_] = LAYOUT(
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────â”
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______ ,_______ ,
+// ├────────┼────────┼────────┴─┬──────┴───┬────┴────────┼────────┤ ├────────┼────────┴────┬───┴──────┬─┴────────┼────────┼────────┤
+ _______ ,_______ ,_______ ,_______ ,_______ ,_______ , _______ ,_______ ,_______ ,_______ ,_______ ,_______
+// └────────┴────────┴──────────┴──────────┴─────────────┴────────┘ └────────┴─────────────┴──────────┴──────────┴────────┴────────┘
+),
+ */ \ No newline at end of file
diff --git a/keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/readme.md b/keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/readme.md
new file mode 100644
index 0000000000..329ba39a4a
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/readme.md
@@ -0,0 +1,4 @@
+![Split_5x7 Layout Image](https://i.imgur.com/m9LkQsWh.png)
+
+# The keymap I currently use
+Pretty much a default qwerty on a 60%-ish with some function-layers
diff --git a/keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/rules.mk b/keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/rules.mk
new file mode 100644
index 0000000000..f18f03c2c7
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/keymaps/stef9998/rules.mk
@@ -0,0 +1,2 @@
+CAPS_WORD_ENABLE = yes
+SWAP_HANDS_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/handwired/stef9998/split_5x7/readme.md b/keyboards/handwired/stef9998/split_5x7/readme.md
new file mode 100644
index 0000000000..bf6c9ef719
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/readme.md
@@ -0,0 +1,26 @@
+# Split_5x7
+
+![Split_5x7](https://i.imgur.com/fVw8al1h.jpg)
+
+A handwired Split keyboard with the unusual layout of 5x7 on either side.
+
+3d print files will be made available soon.
+
+* Keyboard Maintainer: [Stefan](https://github.com/stef9998)
+* Hardware Supported: Pro Micro
+
+Make example for this keyboard (after setting up your build environment):
+
+ make handwired/stef9998/split_5x7/rev1:default
+
+Flashing example for left side:
+
+ make handwired/stef9998/split_5x7/rev1: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
+
+How to enter the bootloader:
+* **Keycode in layout**: Press the key mapped to `QK_BOOT`.\
+In the default keymap it's accessible by pressing either of the buttons bringing you to layer `_SYM` and then pressing one of the outer Ctrl's. \ No newline at end of file
diff --git a/keyboards/handwired/stef9998/split_5x7/rev1/config.h b/keyboards/handwired/stef9998/split_5x7/rev1/config.h
new file mode 100644
index 0000000000..6308b1cf19
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/rev1/config.h
@@ -0,0 +1,58 @@
+/*
+Copyright 2022 stef9998
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 */
+// 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 { B2, B6, B1, B3, F7, F5, F6 }
+
+#define MATRIX_ROW_PINS_RIGHT { B5, B4, E6, D7, C6 }
+#define MATRIX_COL_PINS_RIGHT { F5, F6, F7, B1, B3, B2, B6 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* serial.c configuration for split keyboard */
+#define SOFT_SERIAL_PIN D0
+
+
+/*
+ * 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
diff --git a/keyboards/handwired/stef9998/split_5x7/rev1/rev1.c b/keyboards/handwired/stef9998/split_5x7/rev1/rev1.c
new file mode 100644
index 0000000000..cf8e7d9fa3
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/rev1/rev1.c
@@ -0,0 +1,17 @@
+/*
+Copyright 2022 stef9998
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "split_5x7.h"
diff --git a/keyboards/handwired/stef9998/split_5x7/rev1/rev1.h b/keyboards/handwired/stef9998/split_5x7/rev1/rev1.h
new file mode 100644
index 0000000000..9ffed66727
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/rev1/rev1.h
@@ -0,0 +1,40 @@
+/*
+Copyright 2022 stef9998
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#pragma once
+
+#include "split_5x7.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, k61, k62, k63, k64, k66, k67, k68, k69 \
+) \
+{ \
+ { k00, k01, k02, k03, k04 , k05, k06 }, \
+ { k14, k15, k16, k17, k18 , k19, k20 }, \
+ { k28, k29, k30, k31, k32 , k33, k34 }, \
+ { k42, k43, k44, k45, k46 , k47, k48 }, \
+ { k56, k57, k58, k59, KC_NO, k61, k62 }, \
+ { k13, k12, k11, k10, k09 , k08, k07 }, \
+ { k27, k26, k25, k24, k23 , k22, k21 }, \
+ { k41, k40, k39, k38, k37 , k36, k35 }, \
+ { k55, k54, k53, k52, k51 , k50, k49 }, \
+ { k69, k68, k67, k66, KC_NO, k64, k63 } \
+}
diff --git a/keyboards/handwired/stef9998/split_5x7/rev1/rules.mk b/keyboards/handwired/stef9998/split_5x7/rev1/rules.mk
new file mode 100644
index 0000000000..3cd6d040b8
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/rev1/rules.mk
@@ -0,0 +1,4 @@
+# Disable unsupported hardware
+AUDIO_SUPPORTED = no
+BACKLIGHT_SUPPORTED = no
+RGBLIGHT_SUPPORTED = no \ No newline at end of file
diff --git a/keyboards/handwired/stef9998/split_5x7/rules.mk b/keyboards/handwired/stef9998/split_5x7/rules.mk
new file mode 100644
index 0000000000..01f4b93976
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/rules.mk
@@ -0,0 +1,22 @@
+# 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
+
+DEFAULT_FOLDER = handwired/stef9998/split_5x7/rev1 \ No newline at end of file
diff --git a/keyboards/handwired/stef9998/split_5x7/split_5x7.c b/keyboards/handwired/stef9998/split_5x7/split_5x7.c
new file mode 100644
index 0000000000..5e19d47175
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/split_5x7.c
@@ -0,0 +1,33 @@
+/* Copyright 2017 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 "split_5x7.h"
+
+#ifdef SWAP_HANDS_ENABLE
+__attribute__ ((weak))
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+{{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}, {6, 5}},
+{{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}, {6, 6}},
+{{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}, {6, 7}},
+{{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8}, {6, 8}},
+{{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9}, {6, 9}},
+
+{{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}},
+{{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}, {6, 1}},
+{{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}, {6, 2}},
+{{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}, {6, 3}},
+{{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}, {6, 4}},
+};
+#endif \ No newline at end of file
diff --git a/keyboards/handwired/stef9998/split_5x7/split_5x7.h b/keyboards/handwired/stef9998/split_5x7/split_5x7.h
new file mode 100644
index 0000000000..55ed1cc98f
--- /dev/null
+++ b/keyboards/handwired/stef9998/split_5x7/split_5x7.h
@@ -0,0 +1,23 @@
+/* Copyright 2017 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
+
+#if defined(KEYBOARD_handwired_stef9998_split_5x7_rev1)
+# include "rev1.h"
+#endif
+
+#include "quantum.h"
diff --git a/keyboards/handwired/sticc14/config.h b/keyboards/handwired/sticc14/config.h
index c269f4706d..19ae8d1dbf 100644
--- a/keyboards/handwired/sticc14/config.h
+++ b/keyboards/handwired/sticc14/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER u/ergorius
-#define PRODUCT Sticc14
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 3
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1 }
#define MATRIX_COL_PINS { B6, B2, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/sticc14/info.json b/keyboards/handwired/sticc14/info.json
index e7bbd5e73c..ab602839ac 100644
--- a/keyboards/handwired/sticc14/info.json
+++ b/keyboards/handwired/sticc14/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Sticc14",
+ "manufacturer": "u/ergorius",
"url": "",
"maintainer": "erkhal",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/stream_cheap/2x3/config.h b/keyboards/handwired/stream_cheap/2x3/config.h
index 5e571e356a..8ae6ffb988 100644
--- a/keyboards/handwired/stream_cheap/2x3/config.h
+++ b/keyboards/handwired/stream_cheap/2x3/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7363 // Stream Cheap
-#define PRODUCT_ID 0x1213
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Stream Cheap
-#define PRODUCT 2x3
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
diff --git a/keyboards/handwired/stream_cheap/2x3/info.json b/keyboards/handwired/stream_cheap/2x3/info.json
index 3522dda596..c16c853804 100644
--- a/keyboards/handwired/stream_cheap/2x3/info.json
+++ b/keyboards/handwired/stream_cheap/2x3/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Stream Cheap 2x3",
+ "keyboard_name": "2x3",
+ "manufacturer": "Stream Cheap",
"url": "https://www.thingiverse.com/thing:4497991",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7363",
+ "pid": "0x1213",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_2x3": {
"layout": [
diff --git a/keyboards/handwired/stream_cheap/2x4/config.h b/keyboards/handwired/stream_cheap/2x4/config.h
index 432f23c7d9..41e30a6dc1 100644
--- a/keyboards/handwired/stream_cheap/2x4/config.h
+++ b/keyboards/handwired/stream_cheap/2x4/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7363 // Stream Cheap
-#define PRODUCT_ID 0x1214
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Stream Cheap
-#define PRODUCT 2x4
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
diff --git a/keyboards/handwired/stream_cheap/2x4/info.json b/keyboards/handwired/stream_cheap/2x4/info.json
index d472eecd1e..441a68caaa 100644
--- a/keyboards/handwired/stream_cheap/2x4/info.json
+++ b/keyboards/handwired/stream_cheap/2x4/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Stream Cheap 2x4",
+ "keyboard_name": "2x4",
+ "manufacturer": "Stream Cheap",
"url": "https://www.thingiverse.com/thing:4497991",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7363",
+ "pid": "0x1214",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_2x4": {
"layout": [
diff --git a/keyboards/handwired/stream_cheap/2x5/config.h b/keyboards/handwired/stream_cheap/2x5/config.h
index e7a73107b9..45694ed822 100644
--- a/keyboards/handwired/stream_cheap/2x5/config.h
+++ b/keyboards/handwired/stream_cheap/2x5/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7363 // Stream Cheap
-#define PRODUCT_ID 0x1215
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Stream Cheap
-#define PRODUCT 2x5
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 5
diff --git a/keyboards/handwired/stream_cheap/2x5/info.json b/keyboards/handwired/stream_cheap/2x5/info.json
index 694e0758d4..57088d112b 100644
--- a/keyboards/handwired/stream_cheap/2x5/info.json
+++ b/keyboards/handwired/stream_cheap/2x5/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Stream Cheap 2x5",
+ "keyboard_name": "2x5",
+ "manufacturer": "Stream Cheap",
"url": "https://www.thingiverse.com/thing:4497991",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7363",
+ "pid": "0x1215",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_2x5": {
"layout": [
diff --git a/keyboards/handwired/swiftrax/astro65/config.h b/keyboards/handwired/swiftrax/astro65/config.h
index 6f77ba2006..39e1004233 100644
--- a/keyboards/handwired/swiftrax/astro65/config.h
+++ b/keyboards/handwired/swiftrax/astro65/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEAEF
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT Astro65
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/handwired/swiftrax/astro65/info.json b/keyboards/handwired/swiftrax/astro65/info.json
index 20de968e6e..d577cfafa0 100644
--- a/keyboards/handwired/swiftrax/astro65/info.json
+++ b/keyboards/handwired/swiftrax/astro65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Astro65",
+ "manufacturer": "Swiftrax",
"url": "https://github.com/swiftrax",
"maintainer": "Swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEAEF",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker_split_bs": {
"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}, {"label":"0,14", "x":14, "y":0}, {"label":"0,15", "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,15", "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,12", "x":12.75, "y":2, "w":2.25}, {"label":"2,15", "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,14", "x":14, "y":3}, {"label":"3,15", "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,14", "x":14, "y":4}, {"label":"4,15", "x":15, "y":4}]
diff --git a/keyboards/handwired/swiftrax/bebol/config.h b/keyboards/handwired/swiftrax/bebol/config.h
index 44345f81f5..0d35bd1abc 100644
--- a/keyboards/handwired/swiftrax/bebol/config.h
+++ b/keyboards/handwired/swiftrax/bebol/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEAC4
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT Bebol
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/handwired/swiftrax/bebol/info.json b/keyboards/handwired/swiftrax/bebol/info.json
index 57c7938653..0f4ddd0d95 100644
--- a/keyboards/handwired/swiftrax/bebol/info.json
+++ b/keyboards/handwired/swiftrax/bebol/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Bebol",
+ "manufacturer": "Swiftrax",
"url": "https://github.com/swiftrax",
"maintainer": "Swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEAC4",
+ "device_version": "0.0.1"
+ },
"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":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/handwired/swiftrax/beegboy/config.h b/keyboards/handwired/swiftrax/beegboy/config.h
index a211573b75..a6a6e12f1b 100644
--- a/keyboards/handwired/swiftrax/beegboy/config.h
+++ b/keyboards/handwired/swiftrax/beegboy/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEAC5
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT Beegboy
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
diff --git a/keyboards/handwired/swiftrax/beegboy/info.json b/keyboards/handwired/swiftrax/beegboy/info.json
index 78fb7ff64c..7e4d05a198 100644
--- a/keyboards/handwired/swiftrax/beegboy/info.json
+++ b/keyboards/handwired/swiftrax/beegboy/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Beegboy",
+ "manufacturer": "Swiftrax",
"url": "https://github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEAC5",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/swiftrax/bumblebee/bumblebee.h b/keyboards/handwired/swiftrax/bumblebee/bumblebee.h
index 2d1fdf7a46..1ab4c00abc 100644
--- a/keyboards/handwired/swiftrax/bumblebee/bumblebee.h
+++ b/keyboards/handwired/swiftrax/bumblebee/bumblebee.h
@@ -16,7 +16,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
-#define KC_NO XXX
+#define XXX KC_NO
#include "quantum.h"
diff --git a/keyboards/handwired/swiftrax/bumblebee/config.h b/keyboards/handwired/swiftrax/bumblebee/config.h
index 89b51a762f..4d3d808a14 100644
--- a/keyboards/handwired/swiftrax/bumblebee/config.h
+++ b/keyboards/handwired/swiftrax/bumblebee/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/handwired/swiftrax/bumblebee/info.json b/keyboards/handwired/swiftrax/bumblebee/info.json
index 3d9a8730a6..c210e75c14 100644
--- a/keyboards/handwired/swiftrax/bumblebee/info.json
+++ b/keyboards/handwired/swiftrax/bumblebee/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BumbleBee",
+ "manufacturer": "Swiftrax",
"url": "https://www.github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE881",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/handwired/swiftrax/bumblebee/readme.md b/keyboards/handwired/swiftrax/bumblebee/readme.md
index 32091cb83b..343fb81bf8 100644
--- a/keyboards/handwired/swiftrax/bumblebee/readme.md
+++ b/keyboards/handwired/swiftrax/bumblebee/readme.md
@@ -12,7 +12,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/handwired/swiftrax/cowfish/config.h b/keyboards/handwired/swiftrax/cowfish/config.h
index 422807b758..c3e13a27fe 100644
--- a/keyboards/handwired/swiftrax/cowfish/config.h
+++ b/keyboards/handwired/swiftrax/cowfish/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEB53
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT CowFish
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
diff --git a/keyboards/handwired/swiftrax/cowfish/info.json b/keyboards/handwired/swiftrax/cowfish/info.json
index eb990e44a0..9dd2fde67d 100644
--- a/keyboards/handwired/swiftrax/cowfish/info.json
+++ b/keyboards/handwired/swiftrax/cowfish/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "CowFish",
+ "manufacturer": "Swiftrax",
"url": "",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEB53",
+ "device_version": "0.0.1"
+ },
"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}, {"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":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/keyboards/handwired/swiftrax/digicarp65/config.h b/keyboards/handwired/swiftrax/digicarp65/config.h
index 1f11e310d1..d5336ec447 100644
--- a/keyboards/handwired/swiftrax/digicarp65/config.h
+++ b/keyboards/handwired/swiftrax/digicarp65/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/handwired/swiftrax/digicarp65/info.json b/keyboards/handwired/swiftrax/digicarp65/info.json
index 48a4d31368..73c2cf3415 100644
--- a/keyboards/handwired/swiftrax/digicarp65/info.json
+++ b/keyboards/handwired/swiftrax/digicarp65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "digicarp65",
+ "keyboard_name": "DigiCarp65",
+ "manufacturer": "Swiftrax",
"url": "https://github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE7F1",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/handwired/swiftrax/digicarp65/readme.md b/keyboards/handwired/swiftrax/digicarp65/readme.md
index 619ec519f0..34e0c0b755 100644
--- a/keyboards/handwired/swiftrax/digicarp65/readme.md
+++ b/keyboards/handwired/swiftrax/digicarp65/readme.md
@@ -17,5 +17,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Physical reset button**: Briefly short the pad on the back of the PCB labeled QK_BOOT
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/handwired/swiftrax/digicarpice/config.h b/keyboards/handwired/swiftrax/digicarpice/config.h
index 30e62655fb..5ec256abb8 100644
--- a/keyboards/handwired/swiftrax/digicarpice/config.h
+++ b/keyboards/handwired/swiftrax/digicarpice/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xE79A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT DigiCarpice
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/handwired/swiftrax/digicarpice/info.json b/keyboards/handwired/swiftrax/digicarpice/info.json
index 762cc69af8..bbb62b101f 100644
--- a/keyboards/handwired/swiftrax/digicarpice/info.json
+++ b/keyboards/handwired/swiftrax/digicarpice/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "DigiCarpice",
+ "manufacturer": "Swiftrax",
"url": "https://github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE79A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_unified_bs": {
"layout": [
diff --git a/keyboards/handwired/swiftrax/digicarpice/readme.md b/keyboards/handwired/swiftrax/digicarpice/readme.md
index 228db23a7f..d9deec7dc7 100644
--- a/keyboards/handwired/swiftrax/digicarpice/readme.md
+++ b/keyboards/handwired/swiftrax/digicarpice/readme.md
@@ -12,7 +12,7 @@ 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**: short the pads on the back of the pcb
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/handwired/swiftrax/equator/config.h b/keyboards/handwired/swiftrax/equator/config.h
index 325cdde3c7..fe3af92e45 100644
--- a/keyboards/handwired/swiftrax/equator/config.h
+++ b/keyboards/handwired/swiftrax/equator/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xE984
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT Equator
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/handwired/swiftrax/equator/info.json b/keyboards/handwired/swiftrax/equator/info.json
index fdcfc44afa..e648e452c7 100644
--- a/keyboards/handwired/swiftrax/equator/info.json
+++ b/keyboards/handwired/swiftrax/equator/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Equator",
+ "manufacturer": "Swiftrax",
"url": "https://github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE984",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_unified_bs_rshift": {
"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":2.75}, {"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/swiftrax/glacier/config.h b/keyboards/handwired/swiftrax/glacier/config.h
index b8496d76a1..8d12cc6f60 100644
--- a/keyboards/handwired/swiftrax/glacier/config.h
+++ b/keyboards/handwired/swiftrax/glacier/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -48,4 +42,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* RGB */
#define RGB_DI_PIN B0
-#define RGBLED_NUM 12 \ No newline at end of file
+#define RGBLED_NUM 12
+#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_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
diff --git a/keyboards/handwired/swiftrax/glacier/info.json b/keyboards/handwired/swiftrax/glacier/info.json
index f185e9f898..8e27f9cc44 100644
--- a/keyboards/handwired/swiftrax/glacier/info.json
+++ b/keyboards/handwired/swiftrax/glacier/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Glacier",
+ "manufacturer": "Digital Carpentry",
"url": "https://www.github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE890",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/handwired/swiftrax/glacier/readme.md b/keyboards/handwired/swiftrax/glacier/readme.md
index 36588e000e..e09c179ae9 100644
--- a/keyboards/handwired/swiftrax/glacier/readme.md
+++ b/keyboards/handwired/swiftrax/glacier/readme.md
@@ -9,7 +9,7 @@
## 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
+ * **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for flashing this keyboard (after setting up your build environment):
diff --git a/keyboards/handwired/swiftrax/joypad/config.h b/keyboards/handwired/swiftrax/joypad/config.h
index da326086bf..8aca892618 100644
--- a/keyboards/handwired/swiftrax/joypad/config.h
+++ b/keyboards/handwired/swiftrax/joypad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEA68
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT Joypad
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
diff --git a/keyboards/handwired/swiftrax/joypad/info.json b/keyboards/handwired/swiftrax/joypad/info.json
index c3a4d98c5d..5916bb705d 100644
--- a/keyboards/handwired/swiftrax/joypad/info.json
+++ b/keyboards/handwired/swiftrax/joypad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Joypad",
+ "manufacturer": "Swiftrax",
"url": "https://github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEA68",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_6x4": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}]
diff --git a/keyboards/handwired/swiftrax/koalafications/config.h b/keyboards/handwired/swiftrax/koalafications/config.h
index 6da0b308d5..05e30ec982 100644
--- a/keyboards/handwired/swiftrax/koalafications/config.h
+++ b/keyboards/handwired/swiftrax/koalafications/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEA44
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT Koalafications
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
diff --git a/keyboards/handwired/swiftrax/koalafications/info.json b/keyboards/handwired/swiftrax/koalafications/info.json
index 99bd6828e6..35a8f73e39 100644
--- a/keyboards/handwired/swiftrax/koalafications/info.json
+++ b/keyboards/handwired/swiftrax/koalafications/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Koalafications",
+ "manufacturer": "Swiftrax",
"url": "https://github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEA44",
+ "device_version": "0.0.1"
+ },
"layouts": {
"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,A", "x":10.75, "y":0}, {"label":"0,B", "x":11.75, "y":0}, {"label":"0,C", "x":12.75, "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,A", "x":10, "y":1.25}, {"label":"1,B", "x":11, "y":1.25}, {"label":"1,C", "x":12, "y":1.25}, {"label":"1,D", "x":13, "y":1.25}, {"label":"3,D", "x":14, "y":1.25}, {"label":"1,E", "x":15, "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,A", "x":10.5, "y":2.25}, {"label":"2,B", "x":11.5, "y":2.25}, {"label":"2,C", "x":12.5, "y":2.25}, {"label":"2,D", "x":13.5, "y":2.25, "w":1.5}, {"label":"2,E", "x":15, "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,A", "x":10.75, "y":3.25}, {"label":"3,B", "x":11.75, "y":3.25}, {"label":"3,C", "x":12.75, "y":3.25, "w":2.25}, {"label":"3,E", "x":15, "y":3.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,A", "x":11.25, "y":4.25}, {"label":"4,B", "x":12.25, "y":4.25, "w":1.75}, {"label":"4,C", "x":14, "y":4.25}, {"label":"4,E", "x":15, "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,6", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,8", "x":10, "y":5.25}, {"label":"5,9", "x":11, "y":5.25}, {"label":"5,A", "x":12, "y":5.25}, {"label":"5,B", "x":13, "y":5.25}, {"label":"5,C", "x":14, "y":5.25}, {"label":"5,E", "x":15, "y":5.25}]
diff --git a/keyboards/handwired/swiftrax/nodu/config.h b/keyboards/handwired/swiftrax/nodu/config.h
index 9de601784d..485ba97b46 100644
--- a/keyboards/handwired/swiftrax/nodu/config.h
+++ b/keyboards/handwired/swiftrax/nodu/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEA6E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT Nodu
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/handwired/swiftrax/nodu/info.json b/keyboards/handwired/swiftrax/nodu/info.json
index 8fc83c196d..40d0073fa7 100644
--- a/keyboards/handwired/swiftrax/nodu/info.json
+++ b/keyboards/handwired/swiftrax/nodu/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Nodu",
+ "manufacturer": "Swiftrax",
"url": "github.com/swiftrax",
"maintainer": "Swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEA6E",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_60_ansi_split_bs_rshift"
},
diff --git a/keyboards/handwired/swiftrax/pandamic/config.h b/keyboards/handwired/swiftrax/pandamic/config.h
index 0916bbf1c7..9c5757f9c6 100644
--- a/keyboards/handwired/swiftrax/pandamic/config.h
+++ b/keyboards/handwired/swiftrax/pandamic/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEB0E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT Pandamic
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10
diff --git a/keyboards/handwired/swiftrax/pandamic/info.json b/keyboards/handwired/swiftrax/pandamic/info.json
index 230786008b..59008905dc 100644
--- a/keyboards/handwired/swiftrax/pandamic/info.json
+++ b/keyboards/handwired/swiftrax/pandamic/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pandamic",
+ "manufacturer": "Swiftrax",
"url": "https://github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEB0E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "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.25, "y":0}, {"x":18.25, "y":0}, {"x":19.75, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1, "h":2}, {"x":4.25, "y":1, "w":1.5}, {"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}, {"x":16.75, "y":1}, {"x":17.75, "y":1, "w":1.5}, {"x":19.75, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":4.25, "y":2, "w":1.75}, {"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":16, "y":2}, {"x":17, "y":2, "w":2.25}, {"x":19.75, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3, "h":2}, {"x":4.25, "y":3, "w":1.25}, {"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}, {"x":15.5, "y":3}, {"x":16.5, "y":3, "w":1.75}, {"x":18.5, "y":3.25}, {"x":19.75, "y":3}, {"x":0, "y":4, "w":2}, {"x":2, "y":4}, {"x":4.25, "y":4, "w":1.25}, {"x":5.5, "y":4, "w":1.25}, {"x":6.75, "y":4, "w":1.25}, {"x":8, "y":4, "w":6.25}, {"x":14.25, "y":4}, {"x":15.25, "y":4}, {"x":16.25, "y":4}, {"x":17.5, "y":4.25}, {"x":18.5, "y":4.25}, {"x":19.5, "y":4.25}]
diff --git a/keyboards/handwired/swiftrax/the_galleon/config.h b/keyboards/handwired/swiftrax/the_galleon/config.h
index b37861c964..c20624f68a 100644
--- a/keyboards/handwired/swiftrax/the_galleon/config.h
+++ b/keyboards/handwired/swiftrax/the_galleon/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEA2D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT The Galleon
-
/* key matrix size */
#define MATRIX_ROWS 14
#define MATRIX_COLS 9
diff --git a/keyboards/handwired/swiftrax/the_galleon/info.json b/keyboards/handwired/swiftrax/the_galleon/info.json
index 7f93b9c98c..52a62f2620 100644
--- a/keyboards/handwired/swiftrax/the_galleon/info.json
+++ b/keyboards/handwired/swiftrax/the_galleon/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "The Galleon",
+ "manufacturer": "Swiftrax",
"url": "github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEA2D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/handwired/swiftrax/unsplit/config.h b/keyboards/handwired/swiftrax/unsplit/config.h
index 95fdab280e..8d1cb90179 100644
--- a/keyboards/handwired/swiftrax/unsplit/config.h
+++ b/keyboards/handwired/swiftrax/unsplit/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEAB1
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT UnSplit
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/handwired/swiftrax/unsplit/info.json b/keyboards/handwired/swiftrax/unsplit/info.json
index a0aee45157..9f39a2857b 100644
--- a/keyboards/handwired/swiftrax/unsplit/info.json
+++ b/keyboards/handwired/swiftrax/unsplit/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "UnSplit",
+ "manufacturer": "Swiftrax",
"url": "github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEAB1",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":3, "y":0.25}, {"x":13, "y":0.25}, {"x":2, "y":0.5}, {"x":4, "y":0.5}, {"x":12, "y":0.5}, {"x":14, "y":0.5}, {"x":5, "y":0.625}, {"x":11, "y":0.625}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":15, "y":1}, {"x":16, "y":1}, {"x":3, "y":1.25}, {"x":13, "y":1.25}, {"x":2, "y":1.5}, {"x":4, "y":1.5}, {"x":12, "y":1.5}, {"x":14, "y":1.5}, {"x":5, "y":1.625}, {"x":11, "y":1.625}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":15, "y":2}, {"x":16, "y":2}, {"x":3, "y":2.25}, {"x":13, "y":2.25}, {"x":2, "y":2.5}, {"x":4, "y":2.5}, {"x":12, "y":2.5}, {"x":14, "y":2.5}, {"x":5, "y":2.625}, {"x":11, "y":2.625}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":15, "y":3}, {"x":16, "y":3}, {"x":2.5, "y":3.5}, {"x":13.5, "y":3.5}, {"x":3.5, "y":3.5}, {"x":12.5, "y":3.5}, {"x":4.5, "y":3.75}, {"x":11.5, "y":3.75}, {"x":5.5, "y":4}, {"x":10.5, "y":4}]
diff --git a/keyboards/handwired/swiftrax/walter/config.h b/keyboards/handwired/swiftrax/walter/config.h
index 8cf2d0d833..9797563edd 100644
--- a/keyboards/handwired/swiftrax/walter/config.h
+++ b/keyboards/handwired/swiftrax/walter/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xE964
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT Walter
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/handwired/swiftrax/walter/info.json b/keyboards/handwired/swiftrax/walter/info.json
index e811bc51be..72f3ce4f40 100644
--- a/keyboards/handwired/swiftrax/walter/info.json
+++ b/keyboards/handwired/swiftrax/walter/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "walter",
+ "keyboard_name": "Walter",
+ "manufacturer": "Swiftrax",
"url": "https://github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE964",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/handwired/symmetric70_proto/info.json b/keyboards/handwired/symmetric70_proto/info.json
index 6c70b9d963..36828784c4 100644
--- a/keyboards/handwired/symmetric70_proto/info.json
+++ b/keyboards/handwired/symmetric70_proto/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "symmetric70_proto",
+ "manufacturer": "mtei",
"url": "",
"maintainer": "mtei",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x2BE5",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/symmetric70_proto/promicro/config.h b/keyboards/handwired/symmetric70_proto/promicro/config.h
index 570de7039d..48ef0cbdb5 100644
--- a/keyboards/handwired/symmetric70_proto/promicro/config.h
+++ b/keyboards/handwired/symmetric70_proto/promicro/config.h
@@ -19,13 +19,6 @@ 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 0x2BE5
-#define DEVICE_VER 0x0001
-#define MANUFACTURER mtei
-#define PRODUCT Symmetric70 prototype promicro
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -48,7 +41,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
+-----------------+
***************************************/
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/symmetric70_proto/promicro/info.json b/keyboards/handwired/symmetric70_proto/promicro/info.json
new file mode 100644
index 0000000000..8ee579cd60
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/promicro/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Symmetric70 prototype promicro"
+}
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/config.h b/keyboards/handwired/symmetric70_proto/proton_c/config.h
index 92716a21f6..040575ef55 100644
--- a/keyboards/handwired/symmetric70_proto/proton_c/config.h
+++ b/keyboards/handwired/symmetric70_proto/proton_c/config.h
@@ -19,13 +19,6 @@ 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 0x2BE5
-#define DEVICE_VER 0x0001
-#define MANUFACTURER mtei
-#define PRODUCT Symmetric70 prototype proton-c
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -56,7 +49,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
+-----------------+
***************************************/
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/symmetric70_proto/proton_c/info.json b/keyboards/handwired/symmetric70_proto/proton_c/info.json
new file mode 100644
index 0000000000..a105f39be6
--- /dev/null
+++ b/keyboards/handwired/symmetric70_proto/proton_c/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Symmetric70 prototype proton-c"
+}
diff --git a/keyboards/handwired/symmetry60/config.h b/keyboards/handwired/symmetry60/config.h
index d3b1f18411..17ea91745b 100644
--- a/keyboards/handwired/symmetry60/config.h
+++ b/keyboards/handwired/symmetry60/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Marhalloweenvt
-#define PRODUCT Symmetry60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, B6, B5, B4, D7, D6, D4, E6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/symmetry60/info.json b/keyboards/handwired/symmetry60/info.json
index 5202c61438..e585e367a8 100644
--- a/keyboards/handwired/symmetry60/info.json
+++ b/keyboards/handwired/symmetry60/info.json
@@ -1,7 +1,13 @@
{
"Keyboard_name": "Symmetry60",
+ "manufacturer": "Marhalloweenvt",
"url": "",
"maintainer": "marhalloweenvt",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x14": {
"layout": [
diff --git a/keyboards/handwired/t111/config.h b/keyboards/handwired/t111/config.h
index 04c1ece0e5..691bc7d121 100644
--- a/keyboards/handwired/t111/config.h
+++ b/keyboards/handwired/t111/config.h
@@ -19,13 +19,6 @@ 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 0x6FAA
-#define DEVICE_VER 0x0001
-#define MANUFACTURER FUJITSU
-#define PRODUCT T111
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 14
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { B15, B11, B10, B1, B0, A10, A9, A7, A6, A5, A4, A8, B13, B14 }
/* 0 1 2 3 4 5 6 7 8 9 A B C D*/
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/handwired/t111/info.json b/keyboards/handwired/t111/info.json
index e02373fff5..ff231bb66a 100644
--- a/keyboards/handwired/t111/info.json
+++ b/keyboards/handwired/t111/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "t111",
+ "keyboard_name": "T111",
+ "manufacturer": "FUJITSU",
"url": "",
"maintainer": "DmNosachev",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6FAA",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"Break", "x":0, "y":0}, {"label":"PF1", "x":2, "y":0}, {"label":"PF2", "x":3, "y":0}, {"label":"PF3", "x":4, "y":0}, {"label":"PF4", "x":5, "y":0}, {"label":"PF5", "x":6, "y":0}, {"label":"PF6", "x":7, "y":0}, {"label":"PF7", "x":8, "y":0}, {"label":"PF8", "x":9, "y":0}, {"label":"PF9", "x":10, "y":0}, {"label":"PF10", "x":11, "y":0}, {"label":"PF11", "x":12, "y":0}, {"label":"PF12", "x":13, "y":0}, {"label":"PF13", "x":14, "y":0}, {"label":"PF14", "x":15, "y":0}, {"label":"PF15", "x":16, "y":0}, {"label":"PF16", "x":17, "y":0}, {"label":"Esc", "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":"~", "x":13, "y":1.5}, {"label":"bkspc", "x":14, "y":1.5, "w":1.25}, {"label":"Ins", "x":15.5, "y":1.5}, {"label":"Cls", "x":16.5, "y":1.5}, {"label":"*", "x":17.75, "y":1.5}, {"label":"/", "x":18.75, "y":1.5}, {"label":"+", "x":19.75, "y":1.5}, {"label":"-", "x":20.75, "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":"El", "x":15.5, "y":2.5}, {"label":"Dup", "x":16.5, "y":2.5}, {"label":"7", "x":17.75, "y":2.5}, {"label":"8", "x":18.75, "y":2.5}, {"label":"9", "x":19.75, "y":2.5}, {"label":"=", "x":20.75, "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.5, "h":2}, {"label":"Del", "x":15.5, "y":3.5}, {"label":"Home", "x":16.5, "y":3.5}, {"label":"4", "x":17.75, "y":3.5}, {"label":"5", "x":18.75, "y":3.5}, {"label":"6", "x":19.75, "y":3.5}, {"label":",", "x":20.75, "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}, {"x":12.25, "y":4.5}, {"label":"Shift", "x":13.25, "y":4.5, "w":2}, {"label":"\u0432\u2020\u2018", "x":15.5, "y":4.5}, {"label":"\u0432\u2020\u201c", "x":16.5, "y":4.5}, {"label":"1", "x":17.75, "y":4.5}, {"label":"2", "x":18.75, "y":4.5}, {"label":"3", "x":19.75, "y":4.5}, {"label":"Enter", "x":20.75, "y":4.5, "h":2}, {"label":"Caps", "x":1.75, "y":5.5}, {"label":"Graph", "x":2.75, "y":5.5, "w":1.5}, {"x":4.25, "y":5.5, "w":8}, {"label":"Alt", "x":12.25, "y":5.5, "w":1.5}, {"label":"\u0432\u2020\u0452", "x":15.5, "y":5.5}, {"label":"\u0432\u2020\u2019", "x":16.5, "y":5.5}, {"label":"0", "x":17.75, "y":5.5, "w":2}, {"label":".", "x":19.75, "y":5.5}]
diff --git a/keyboards/handwired/tennie/config.h b/keyboards/handwired/tennie/config.h
index e74b9f2aee..e59f7efbe1 100644
--- a/keyboards/handwired/tennie/config.h
+++ b/keyboards/handwired/tennie/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1EEE
-#define PRODUCT_ID 0x1313
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Jsck
-#define PRODUCT Tennie
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6, D4, D0}
#define MATRIX_COL_PINS { D7, E6, B4, B5 }
-#define UNUSED_PINS { B1, B2, B3, B6, F4, F5, F6, F7, D1}
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/tennie/info.json b/keyboards/handwired/tennie/info.json
index 6db07eafee..4a810d84d9 100644
--- a/keyboards/handwired/tennie/info.json
+++ b/keyboards/handwired/tennie/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Tennie",
+ "manufacturer": "Jsck",
"url": "https://github.com/StoutIEEE/macropad-workshop",
"maintainer": "UW Stout IEEE, Jack Hildebrandt (onemorebyte)",
+ "usb": {
+ "vid": "0x1EEE",
+ "pid": "0x1313",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0.5, "y":0}, {"x":1.5, "y":0}, {"x":2.5, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":0.5, "y":2}, {"x":1.5, "y":2}, {"x":2.5, "y":2}]
diff --git a/keyboards/handwired/terminus_mini/config.h b/keyboards/handwired/terminus_mini/config.h
index 94c182eb4a..4dec0f1341 100644
--- a/keyboards/handwired/terminus_mini/config.h
+++ b/keyboards/handwired/terminus_mini/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER James Morgan
-#define PRODUCT terminus_mini
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B5, B4, D7, D6 }
#define MATRIX_COL_PINS { B0, D0, D5, B6, D4, C7, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/terminus_mini/info.json b/keyboards/handwired/terminus_mini/info.json
index b3e4491b0f..79cbe720a3 100644
--- a/keyboards/handwired/terminus_mini/info.json
+++ b/keyboards/handwired/terminus_mini/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "handwired/terminus_mini",
+ "keyboard_name": "Terminus Mini",
+ "manufacturer": "James Morgan",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/terminus_mini/keymaps/default/keymap.c b/keyboards/handwired/terminus_mini/keymaps/default/keymap.c
index 8062aa711f..8d0631072f 100644
--- a/keyboards/handwired/terminus_mini/keymaps/default/keymap.c
+++ b/keyboards/handwired/terminus_mini/keymaps/default/keymap.c
@@ -193,7 +193,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT(
- _______, _______, _______, _______, _______, QK_BOOT, _______, TERM_ON, TERM_OFF, _______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/handwired/trackpoint/config.h b/keyboards/handwired/trackpoint/config.h
index cf8b5605f4..a4b468faef 100644
--- a/keyboards/handwired/trackpoint/config.h
+++ b/keyboards/handwired/trackpoint/config.h
@@ -2,12 +2,6 @@
#include "config_common.h"
-#define VENDOR_ID 0x1234
-#define PRODUCT_ID 0x5678
-#define DEVICE_VER 0x0001
-#define MANUFACTURER QMK
-#define PRODUCT TRACKPOINT-DEMO
-
#define MATRIX_ROWS 1
#define MATRIX_COLS 3
@@ -49,7 +43,6 @@
#define MATRIX_COL_PINS { F1, F4, F5 }
#define MATRIX_ROW_PINS { F0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/trackpoint/info.json b/keyboards/handwired/trackpoint/info.json
index 176a30e9a0..3f2d1f2290 100644
--- a/keyboards/handwired/trackpoint/info.json
+++ b/keyboards/handwired/trackpoint/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Trackpoint",
+ "keyboard_name": "Trackpoint Demo",
+ "manufacturer": "QMK",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x1234",
+ "pid": "0x5678",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/config.h b/keyboards/handwired/tractyl_manuform/4x6_right/config.h
index ab46bc5276..0e15056baf 100644
--- a/keyboards/handwired/tractyl_manuform/4x6_right/config.h
+++ b/keyboards/handwired/tractyl_manuform/4x6_right/config.h
@@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define PRODUCT_ID 0x3537
-#define DEVICE_VER 0x0001
-#define PRODUCT Tractyl Manuform(4x6)
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
@@ -85,7 +81,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
-/* PMW3360 Settings */
-#define PMW3360_CS_PIN B0
+/* PMW33XX Settings */
+#define PMW33XX_CS_PIN B0
#define POINTING_DEVICE_RIGHT
diff --git a/keyboards/handwired/tractyl_manuform/4x6_right/info.json b/keyboards/handwired/tractyl_manuform/4x6_right/info.json
index e3da8b444c..62b61072ec 100644
--- a/keyboards/handwired/tractyl_manuform/4x6_right/info.json
+++ b/keyboards/handwired/tractyl_manuform/4x6_right/info.json
@@ -1,9 +1,13 @@
{
- "keyboard_name": "Tractyl Manuform 4x6",
+ "keyboard_name": "Tractyl Manuform (4x6)",
"url": "",
"maintainer": "drashna",
+ "usb": {
+ "pid": "0x3537",
+ "device_version": "0.0.1"
+ },
"layouts": {
- "LAYOUT_5x6_right": {
+ "LAYOUT_4x6_right": {
"layout": [
{"label":"L00", "x":0, "y":0},
{"label":"L01", "x":1, "y":0},
@@ -41,32 +45,20 @@
{"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":"L42", "x":2, "y":4},
- {"label":"L43", "x":3, "y":4},
- {"label":"R42", "x":13, "y":4},
- {"label":"R43", "x":14, "y":4},
- {"label":"L44", "x":4, "y":5},
- {"label":"L45", "x":5, "y":5},
- {"label":"R41", "x":12, "y":5},
- {"label":"L54", "x":6, "y":6},
- {"label":"L55", "x":7, "y":6},
- {"label":"R51", "x":10, "y":6},
- {"label":"L52", "x":6, "y":7},
- {"label":"L53", "x":7, "y":7},
- {"label":"R52", "x":9, "y":7},
- {"label":"R53", "x":10, "y":7}
+ {"label":"L34", "x":4, "y":4},
+ {"label":"L35", "x":5, "y":4},
+ {"label":"R31", "x":12, "y":4},
+ {"label":"L44", "x":6, "y":5},
+ {"label":"L45", "x":7, "y":5},
+ {"label":"R41", "x":10, "y":5},
+ {"label":"L42", "x":6, "y":6},
+ {"label":"L43", "x":7, "y":6},
+ {"label":"R42", "x":9, "y":6},
+ {"label":"R43", "x":10, "y":6}
]
}
}
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/config.h
index fc5037ae9d..53a2b41e06 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/config.h
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/config.h
@@ -20,9 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define PRODUCT_ID 0x3536
-#define DEVICE_VER 0x0001
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
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 d8d36e824c..402f0c99e5 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/config.h
@@ -18,8 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define PRODUCT Tractyl Manuform(5x6) Elite C
-
// wiring of each half
#define MATRIX_COL_PINS \
{ D4, D7, E6, B4, B5, B7 }
@@ -47,5 +45,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENCODERS_PAD_B \
{ C7 }
-/* PMW3360 Settings */
-#define PMW3360_CS_PIN B6
+/* PMW33XX Settings */
+#define PMW33XX_CS_PIN B6
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/info.json b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/info.json
new file mode 100644
index 0000000000..b3cb5928de
--- /dev/null
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/elite_c/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Tractyl Manuform (5x6) Elite-C"
+}
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h
index f9a44587b0..f3f3fb7e22 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/config.h
@@ -18,16 +18,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define PRODUCT Tractyl Manuform(5x6) Proton C
-
// wiring of each half
#define MATRIX_COL_PINS \
{ B0, B1, B2, B3, B4, B5 }
#define MATRIX_ROW_PINS \
{ B10, B11, B12, A14, A13, A15 }
-
-#define UNUSED_PINS \
- { A0, A2, A7, A8 }
// B2 used for BOOT1, has internal pull down?
// A9 has internal pull-down
// A11 and A12 are used for USB sense. DO NOT USE.
@@ -99,6 +94,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #define DEBUG_EEPROM_OUTPUT
/* pmw3360 config */
-#define PMW3360_CS_PIN B9
-#define PMW3360_SPI_MODE 3
-#define PMW3360_SPI_DIVISOR 8
+#define PMW33XX_CS_PIN B9
+#define PMW33XX_SPI_DIVISOR 8
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f303/info.json b/keyboards/handwired/tractyl_manuform/5x6_right/f303/info.json
new file mode 100644
index 0000000000..d88708d17d
--- /dev/null
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f303/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Tractyl Manuform (5x6) Proton-C"
+}
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h
index 5f0350810c..f7e9cfb7d6 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/config.h
@@ -18,17 +18,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define PRODUCT Tractyl Manuform(5x6) BlackPill
-
// wiring of each half
#define MATRIX_COL_PINS \
{ A15, B3, B4, B5, B6, B7 }
#define MATRIX_ROW_PINS \
{ B12, B13, B14, B15, A8, A10 }
-#define UNUSED_PINS \
- { C15 }
-
#define DIODE_DIRECTION COL2ROW
// #define USB_VBUS_PIN B10 // doesn't seem to work for me on one of my controllers... */
@@ -80,7 +75,7 @@ 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
-#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_16_9
/* encoder config */
#define ENCODERS_PAD_A \
@@ -102,7 +97,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 64
/* pmw3360 config */
-#define PMW3360_CS_PIN B0
-#define PMW3360_SPI_MODE 3
-#define PMW3360_SPI_DIVISOR 64
-#define PMW3360_FIRMWARE_UPLOAD_FAST
+#define PMW33XX_CS_PIN B0
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c b/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c
index 990b835843..09f1b57008 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/f411.c
@@ -24,7 +24,7 @@ void matrix_scan_sub_kb(void) {
}
}
-void bootmagic_lite(void) {
+__attribute__((weak)) void bootmagic_lite(void) {
// We need multiple scans because debouncing can't be turned off.
matrix_scan();
#if defined(DEBOUNCE) && DEBOUNCE > 0
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/info.json b/keyboards/handwired/tractyl_manuform/5x6_right/f411/info.json
new file mode 100644
index 0000000000..7466004165
--- /dev/null
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Tractyl Manuform (5x6) BlackPill"
+}
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md b/keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md
index f732295ba3..6b98bdc9b9 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/readme.md
@@ -35,4 +35,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
* **Bootmagic reset**: Hold down the top right key on the right side, or the top left key on the left side while plugging in.
* **Physical reset button**: Briefly press the "USER" button on the BlackPill
-* **Keycode in layout**: Press the key mapped to `RESET`.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT`.
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk b/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk
index 0a4fbee0e5..dcbcc7ee7e 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/f411/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/info.json b/keyboards/handwired/tractyl_manuform/5x6_right/info.json
index 81a308fd21..5000486242 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/info.json
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/info.json
@@ -1,6 +1,9 @@
{
- "keyboard_name": "Tractyl Manuform 5x6",
"url": "",
+ "usb": {
+ "pid": "0x3536",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_5x6_right": {
"layout": [
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 31539062b3..f159a69174 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/config.h
@@ -29,7 +29,8 @@
#define ENCODER_DEFAULT_POS 0x3
-#define SECURE_UNLOCK_SEQUENCE \
- { \
- { 2, 1 }, { 2, 2 }, { 2, 3 }, { 2, 4 } \
- }
+
+#define BOOTMAGIC_LITE_EEPROM_ROW 1
+#define BOOTMAGIC_LITE_EEPROM_COLUMN 0
+#define BOOTMAGIC_LITE_EEPROM_ROW_RIGHT 7
+#define BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT 5
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 223649e8bf..1a46317a42 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/keymaps/drashna/keymap.c
@@ -59,16 +59,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_________________DVORAK_L3_________________, _________________DVORAK_R3_________________
),
- [_MOUSE] = LAYOUT_5x6_right(
- _______, _______, _______, _______, _______, _______, DRGSCRL, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, SNP_TOG,
- _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING,
- _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______,
- _______, _______, _______, _______,
- _______, _______, KC_BTN3,
- _______, _______, _______,
- _______, _______, _______, _______
- ),
[_GAMEPAD] = LAYOUT_5x6_right(
KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, _______, _______, _______, _______, _______, _______,
KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______,
@@ -99,6 +89,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, _______, _______,
KC_LCTL, KC_V, _______, _______
),
+ [_MOUSE] = LAYOUT_5x6_right(
+ _______, _______, _______, _______, _______, _______, DRGSCRL, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, SNP_TOG,
+ _______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING,
+ _______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, KC_BTN3,
+ _______, _______, _______,
+ _______, _______, _______, _______
+ ),
[_LOWER] = LAYOUT_5x6_right_wrapper(
KC_F12, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11,
_______, _________________LOWER_L1__________________, _________________LOWER_R1__________________, _______,
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/config.h b/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/config.h
index 442d474920..735fe96f0f 100644
--- a/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/config.h
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/config.h
@@ -18,8 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define PRODUCT Tractyl Manuform(5x6) Teensy 2.0 ++
-
// wiring of each half
#define MATRIX_COL_PINS \
{ C0, C1, C2, C3, C4, C5 }
@@ -51,5 +49,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENCODERS_PAD_B \
{ D4 }
-/* PMW3360 Settings */
-#define PMW3360_CS_PIN B0
+/* PMW33XX Settings */
+#define PMW33XX_CS_PIN B0
diff --git a/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/info.json b/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/info.json
new file mode 100644
index 0000000000..dfdbc435bc
--- /dev/null
+++ b/keyboards/handwired/tractyl_manuform/5x6_right/teensy2pp/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Tractyl Manuform (5x6) Teensy 2.0++"
+}
diff --git a/keyboards/handwired/tractyl_manuform/config.h b/keyboards/handwired/tractyl_manuform/config.h
index 845125c5cd..6f62685f4e 100644
--- a/keyboards/handwired/tractyl_manuform/config.h
+++ b/keyboards/handwired/tractyl_manuform/config.h
@@ -20,9 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x44DD
-
/* disable debug print */
// #define NO_DEBUG
diff --git a/keyboards/handwired/tractyl_manuform/info.json b/keyboards/handwired/tractyl_manuform/info.json
index 7214e6773b..c84d008e15 100644
--- a/keyboards/handwired/tractyl_manuform/info.json
+++ b/keyboards/handwired/tractyl_manuform/info.json
@@ -1,4 +1,7 @@
{
"manufacturer": "QMK Community",
- "maintainer": "Drashna Jael're"
+ "maintainer": "Drashna Jael're",
+ "usb": {
+ "vid": "0x44DD"
+ }
}
diff --git a/keyboards/handwired/tractyl_manuform/readme.md b/keyboards/handwired/tractyl_manuform/readme.md
index e78fd2ee06..576a7cc74e 100644
--- a/keyboards/handwired/tractyl_manuform/readme.md
+++ b/keyboards/handwired/tractyl_manuform/readme.md
@@ -22,4 +22,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/handwired/tractyl_manuform/tractyl_manuform.c b/keyboards/handwired/tractyl_manuform/tractyl_manuform.c
index 0ae49b6397..d3e2e02975 100644
--- a/keyboards/handwired/tractyl_manuform/tractyl_manuform.c
+++ b/keyboards/handwired/tractyl_manuform/tractyl_manuform.c
@@ -159,10 +159,8 @@ void charybdis_set_pointer_dragscroll_enabled(bool 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)))
+# define CONSTRAIN_HID(value) ((value) < XY_REPORT_MIN ? XY_REPORT_MIN : ((value) > XY_REPORT_MAX ? XY_REPORT_MAX : (value)))
# endif // !CONSTRAIN_HID
/**
@@ -249,17 +247,17 @@ static bool has_shift_mod(void) {
*/
__attribute__((unused)) 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
+ IGNORE_FORMAT_WARNING(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) {
@@ -339,6 +337,7 @@ void charybdis_config_sync_handler(uint8_t initiator2target_buffer_size, const v
}
void keyboard_post_init_kb(void) {
+ maybe_update_pointing_device_cpi(&g_charybdis_config);
transaction_register_rpc(RPC_ID_KB_CONFIG_SYNC, charybdis_config_sync_handler);
keyboard_post_init_user();
diff --git a/keyboards/handwired/traveller/config.h b/keyboards/handwired/traveller/config.h
index 815ec7fdd5..82de3bc0ba 100644
--- a/keyboards/handwired/traveller/config.h
+++ b/keyboards/handwired/traveller/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER You
-#define PRODUCT traveller
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D3, D2 }
#define MATRIX_COL_PINS { B5, D6, B7, B6, F6, B1, B3, F7, B4, E6, D7, C6, D4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/traveller/info.json b/keyboards/handwired/traveller/info.json
index 2a59527b89..143bf50b91 100644
--- a/keyboards/handwired/traveller/info.json
+++ b/keyboards/handwired/traveller/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Traveller",
+ "manufacturer": "Unknown",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/traveller/keymaps/default/keymap.c b/keyboards/handwired/traveller/keymaps/default/keymap.c
index 288acbe108..2cd57db35f 100644
--- a/keyboards/handwired/traveller/keymaps/default/keymap.c
+++ b/keyboards/handwired/traveller/keymaps/default/keymap.c
@@ -219,7 +219,7 @@ void LayerLEDSet(uint8_t layr) {
uint8_t old_layer = _QW;
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
if (old_layer != layer) {
LayerLEDSet(layer);
diff --git a/keyboards/handwired/tritium_numpad/config.h b/keyboards/handwired/tritium_numpad/config.h
index ef835ad2aa..7fee66e04f 100644
--- a/keyboards/handwired/tritium_numpad/config.h
+++ b/keyboards/handwired/tritium_numpad/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0003
-#define MANUFACTURER Handwired
-#define PRODUCT Tritium Numpad
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7, E6 }
#define MATRIX_COL_PINS { F4, F6, B1, B2 }
-#define UNUSED_PINS
#define LED_NUM_LOCK_PIN D5
#define LED_PIN_ON_STATE 0
diff --git a/keyboards/handwired/tritium_numpad/info.json b/keyboards/handwired/tritium_numpad/info.json
index d7190c197e..1a2f22a835 100644
--- a/keyboards/handwired/tritium_numpad/info.json
+++ b/keyboards/handwired/tritium_numpad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Tritium_numpad",
+ "keyboard_name": "Tritium Numpad",
+ "manufacturer": "Handwired",
"url": "https://www.thingiverse.com/thing:2855938",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_numpad_6x4": {
"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}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}, {"label":"k13", "x":3, "y":1}, {"label":"k20", "x":0, "y":2}, {"label":"k21", "x":1, "y":2}, {"label":"k22", "x":2, "y":2}, {"label":"k30", "x":0, "y":3}, {"label":"k31", "x":1, "y":3}, {"label":"k32", "x":2, "y":3}, {"label":"k23", "x":3, "y":2, "h":2}, {"label":"k40", "x":0, "y":4}, {"label":"k41", "x":1, "y":4}, {"label":"k42", "x":2, "y":4}, {"label":"k50", "x":0, "y":5, "w":2}, {"label":"k52", "x":2, "y":5}, {"label":"k43", "x":3, "y":4, "h":2}]
diff --git a/keyboards/handwired/tritium_numpad/keymaps/blu/keymap.c b/keyboards/handwired/tritium_numpad/keymaps/blu/keymap.c
index b618675295..50bbf232b5 100644
--- a/keyboards/handwired/tritium_numpad/keymaps/blu/keymap.c
+++ b/keyboards/handwired/tritium_numpad/keymaps/blu/keymap.c
@@ -9,7 +9,7 @@ void keyboard_pre_init_user(void)
layer_state_t layer_state_set_user(layer_state_t state)
{
// Switch layer LED accordingly
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case 0:
writePinHigh(B0);
break;
diff --git a/keyboards/handwired/tritium_numpad/keymaps/max/keymap.c b/keyboards/handwired/tritium_numpad/keymaps/max/keymap.c
index bba5c43bbb..9f1f8b014b 100644
--- a/keyboards/handwired/tritium_numpad/keymaps/max/keymap.c
+++ b/keyboards/handwired/tritium_numpad/keymaps/max/keymap.c
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FL] = LAYOUT_ortho_6x4(
KC_ESC, KC_TAB, KC_BSPC, KC_PEQL,
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
- KC_P7, KC_P8, KC_P9, RESET,
+ KC_P7, KC_P8, KC_P9, QK_BOOT,
KC_P4, KC_P5, KC_P6, KC_PENT,
KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
diff --git a/keyboards/handwired/twadlee/tp69/config.h b/keyboards/handwired/twadlee/tp69/config.h
index f16444c119..dd69394916 100644
--- a/keyboards/handwired/twadlee/tp69/config.h
+++ b/keyboards/handwired/twadlee/tp69/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBEEF
-#define PRODUCT_ID 0xCACA
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Tracy Wadleigh
-#define PRODUCT tp69
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B2, B1, B0, C0, D1, D0, D3, D4, D2, C3 }
/* 20 21 18 0 1 3 4 5 */
#define MATRIX_COL_PINS { D5, D6, A4, B16, B17, A1, A2, D7 }
-#define UNUSED_PINS
/* for trackpoint: C1 (22) C2 (23) */
diff --git a/keyboards/handwired/twadlee/tp69/info.json b/keyboards/handwired/twadlee/tp69/info.json
index f51059014a..3669be349f 100644
--- a/keyboards/handwired/twadlee/tp69/info.json
+++ b/keyboards/handwired/twadlee/tp69/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Twadlee TP69",
+ "keyboard_name": "TP69",
+ "manufacturer": "Tracy Wadleigh",
"url": "https://github.com/twadleigh/qmk_firmware",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xBEEF",
+ "pid": "0xCACA",
+ "device_version": "0.0.1"
+ },
"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}, {"x":14.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":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":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}, {"x":13.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":2}, {"x":5.75, "y":4}, {"x":6.75, "y":4}, {"x":7.75, "y":4}, {"x":8.75, "y":4, "w":2.25}, {"x":11, "y":4, "w":1.25}, {"x":12.25, "y":4, "w":1.25}, {"x":13.5, "y":4, "w":1.25}, {"x":14.75, "y":4, "w":1.25}]
diff --git a/keyboards/handwired/unicomp_mini_m/config.h b/keyboards/handwired/unicomp_mini_m/config.h
index 41676ec805..77e2d1c7ea 100644
--- a/keyboards/handwired/unicomp_mini_m/config.h
+++ b/keyboards/handwired/unicomp_mini_m/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER stevendlander
-#define PRODUCT Unicomp Mini M
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F7, F6, F5, F4, F3, F2, F1, F0, E6, E7, B0, B1 }
#define MATRIX_COL_PINS { C7, C6, C5, C4, C3, C2, C1, C0, E1, E0, D7, B7, D5, D4, D3, D2 }
-#define UNUSED_PINS
#define LED_PIN_ON_STATE 0
#define LED_NUM_LOCK_PIN B6
diff --git a/keyboards/handwired/unicomp_mini_m/info.json b/keyboards/handwired/unicomp_mini_m/info.json
index d1a0558aa2..ea2ab10b1b 100644
--- a/keyboards/handwired/unicomp_mini_m/info.json
+++ b/keyboards/handwired/unicomp_mini_m/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Unicomp Mini M",
- "maintainer": "stevendlander",
+ "manufacturer": "stevendlander",
"url": "",
+ "maintainer": "stevendlander",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/unk/info.json b/keyboards/handwired/unk/info.json
deleted file mode 100644
index f3445a3859..0000000000
--- a/keyboards/handwired/unk/info.json
+++ /dev/null
@@ -1,90 +0,0 @@
-{
- "keyboard_name": "UNK",
- "url": "https://github.com/herpiko/unk",
- "maintainer": "herpiko",
- "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": 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": 0, "y": 1},
- {"x": 1, "y": 1, "w": 1.5},
- {"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": 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": 0, "y": 2},
- {"x": 1, "y": 2, "w": 1.75},
- {"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": 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": 0, "y": 3},
- {"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": 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, "y": 3},
- {"x": 0, "y": 4},
- {"x": 1, "y": 4, "w": 1.25},
- {"x": 2.25, "y": 4, "w": 1.25},
- {"x": 3.5, "y": 4, "w": 1.25},
- {"x": 4.75, "y": 4},
- {"x": 5.75, "y": 4, "w": 2.25},
-
- {"x": 9, "y": 4, "w": 2.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, "y": 4},
- {"x": 16, "y": 4}
- ]
- }
- }
-}
diff --git a/keyboards/handwired/unk/rev1/config.h b/keyboards/handwired/unk/rev1/config.h
index 65a02ff7ca..611b415d7a 100644
--- a/keyboards/handwired/unk/rev1/config.h
+++ b/keyboards/handwired/unk/rev1/config.h
@@ -19,13 +19,6 @@ 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 0x3060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER herpiko
-#define PRODUCT UNK
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/handwired/unk/rev1/info.json b/keyboards/handwired/unk/rev1/info.json
new file mode 100644
index 0000000000..ec0927a0d3
--- /dev/null
+++ b/keyboards/handwired/unk/rev1/info.json
@@ -0,0 +1,96 @@
+{
+ "keyboard_name": "UNK",
+ "manufacturer": "herpiko",
+ "url": "https://github.com/herpiko/unk",
+ "maintainer": "herpiko",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
+ "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": 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": 0, "y": 1},
+ {"x": 1, "y": 1, "w": 1.5},
+ {"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": 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": 0, "y": 2},
+ {"x": 1, "y": 2, "w": 1.75},
+ {"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": 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": 0, "y": 3},
+ {"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": 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, "y": 3},
+ {"x": 0, "y": 4},
+ {"x": 1, "y": 4, "w": 1.25},
+ {"x": 2.25, "y": 4, "w": 1.25},
+ {"x": 3.5, "y": 4, "w": 1.25},
+ {"x": 4.75, "y": 4},
+ {"x": 5.75, "y": 4, "w": 2.25},
+
+ {"x": 9, "y": 4, "w": 2.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, "y": 4},
+ {"x": 16, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/uthol/config.h b/keyboards/handwired/uthol/config.h
index 1e0b533386..de93efe186 100644
--- a/keyboards/handwired/uthol/config.h
+++ b/keyboards/handwired/uthol/config.h
@@ -19,10 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define MANUFACTURER Uthol
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
diff --git a/keyboards/handwired/uthol/info.json b/keyboards/handwired/uthol/info.json
index 40f99dbade..f8891331ed 100644
--- a/keyboards/handwired/uthol/info.json
+++ b/keyboards/handwired/uthol/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Uthol",
+ "manufacturer": "Uthol",
"url": "",
"maintainer": "uthol",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x67F3"
+ },
"layouts": {
"LAYOUT_uthol": {
"layout": [
diff --git a/keyboards/handwired/uthol/keymaps/numswap/keymap.c b/keyboards/handwired/uthol/keymaps/numswap/keymap.c
index b571ba8b91..7e06ee4da1 100644
--- a/keyboards/handwired/uthol/keymaps/numswap/keymap.c
+++ b/keyboards/handwired/uthol/keymaps/numswap/keymap.c
@@ -30,5 +30,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_COLEMAK] = LAYOUT_uthol(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_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, KC_ESC, 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_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_LCTL, SETTINGS, KC_LGUI, KC_LALT, RAISE, KC_SPC, LOWER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
[_LOWER] = LAYOUT_uthol(KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_MINS, KC_EQL, KC_INS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_TRNS, KC_TRNS, KC_P0, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT),
[_RAISE] = LAYOUT_uthol(KC_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_P7, KC_P8, KC_P9, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_BSLS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_TRNS, KC_TRNS, KC_P0, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT),
- [_SETTINGS] = LAYOUT_uthol(QWERTY, COLEMAK, 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_SLCK, KC_NO, KC_NO, KC_PSCR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SLEP, KC_PWR, KC_NO, KC_NO, KC_NLCK, KC_CAPS, 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_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO)
+ [_SETTINGS] = LAYOUT_uthol(QWERTY, COLEMAK, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SLCK, KC_NO, KC_NO, KC_PSCR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SLEP, KC_PWR, KC_NO, KC_NO, KC_NLCK, KC_CAPS, 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_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO)
};
diff --git a/keyboards/handwired/uthol/keymaps/oled/keymap.c b/keyboards/handwired/uthol/keymaps/oled/keymap.c
index 3019a1fe85..6c25db3b6f 100644
--- a/keyboards/handwired/uthol/keymaps/oled/keymap.c
+++ b/keyboards/handwired/uthol/keymaps/oled/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_COLEMAK] = LAYOUT_uthol(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_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL, KC_ESC, 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_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_LCTL, SETTINGS, KC_LGUI, KC_LALT, RAISE, KC_SPC, LOWER, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
[_LOWER] = LAYOUT_uthol(KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_MINS, KC_EQL, KC_INS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_BSLS, KC_P0, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT),
[_RAISE] = LAYOUT_uthol(KC_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_P7, KC_P8, KC_P9, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_BSLS, KC_P0, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT),
- [_SETTINGS] = LAYOUT_uthol(QWERTY, COLEMAK, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET, RGB_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SLEP, KC_PWR, KC_NO, KC_SLCK, KC_NO, KC_NO, KC_PSCR, KC_NO, KC_NO, KC_NO, KC_NO, RGB_HUD, RGB_HUI, KC_NO, KC_NO, KC_NO, KC_NLCK, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_SAI, RGB_SAI, RGB_MODE_PLAIN, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MODE_REVERSE, RGB_VAD, RGB_VAI, RGB_MODE_FORWARD)
+ [_SETTINGS] = LAYOUT_uthol(QWERTY, COLEMAK, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, RGB_TOG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SLEP, KC_PWR, KC_NO, KC_SLCK, KC_NO, KC_NO, KC_PSCR, KC_NO, KC_NO, KC_NO, KC_NO, RGB_HUD, RGB_HUI, KC_NO, KC_NO, KC_NO, KC_NLCK, KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_SAI, RGB_SAI, RGB_MODE_PLAIN, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MODE_REVERSE, RGB_VAD, RGB_VAI, RGB_MODE_FORWARD)
};
#define ANIM_SIZE 1024 // number of bytes in array, minimize for adequate firmware size, max is 1024
diff --git a/keyboards/handwired/uthol/rev1/config.h b/keyboards/handwired/uthol/rev1/config.h
index dbda8e90ed..89115c5aee 100644
--- a/keyboards/handwired/uthol/rev1/config.h
+++ b/keyboards/handwired/uthol/rev1/config.h
@@ -19,11 +19,6 @@
#include "config_common.h"
-#define DEVICE_VER 0x0001
-#define PRODUCT_ID 0x67F3
-#define PRODUCT UtholOne
-
/* Uthol PCB default pin-out */
#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7 }
#define MATRIX_COL_PINS { D3, B6, B2, B3, B1, F7, F6, F5, F4, B5, B4, D2 }
-#define UNUSED_PINS
diff --git a/keyboards/handwired/uthol/rev1/info.json b/keyboards/handwired/uthol/rev1/info.json
new file mode 100644
index 0000000000..44de6469f5
--- /dev/null
+++ b/keyboards/handwired/uthol/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "UtholOne",
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/handwired/uthol/rev2/config.h b/keyboards/handwired/uthol/rev2/config.h
index 3ef6fc172c..6fccc3047d 100644
--- a/keyboards/handwired/uthol/rev2/config.h
+++ b/keyboards/handwired/uthol/rev2/config.h
@@ -19,14 +19,9 @@
#include "config_common.h"
-#define DEVICE_VER 0x0002
-#define PRODUCT_ID 0x67F3
-#define PRODUCT UtholTwo
-
/* Uthol PCB default pin-out */
#define MATRIX_ROW_PINS { B1, F7, F6, F5, F4 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, B5, B4, B6, B2, B3 }
-#define UNUSED_PINS
//RGB Stuff
#define RGB_DI_PIN E6
diff --git a/keyboards/handwired/uthol/rev2/info.json b/keyboards/handwired/uthol/rev2/info.json
new file mode 100644
index 0000000000..fbb7309629
--- /dev/null
+++ b/keyboards/handwired/uthol/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "UtholTwo",
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/handwired/uthol/rev3/config.h b/keyboards/handwired/uthol/rev3/config.h
index 90880998b7..14da0d8a60 100644
--- a/keyboards/handwired/uthol/rev3/config.h
+++ b/keyboards/handwired/uthol/rev3/config.h
@@ -19,10 +19,6 @@
#include "config_common.h"
-#define DEVICE_VER 0x0003
-#define PRODUCT_ID 0x67F3
-#define PRODUCT UtholThree
-
/* key matrix size */
// A11 and A12 dont work. They are reserved for USB. B2 is reserved for BOOT1
#define MATRIX_COL_PINS \
@@ -30,7 +26,6 @@
#define MATRIX_ROW_PINS \
{ A4, A3, A2, A1, A0 }
-#define UNUSED_PINS
// Encoder config
#define ENCODERS_PAD_A \
@@ -57,6 +52,7 @@
#define LOCKING_RESYNC_ENABLE
#define TAPPING_TERM 500
+#define PERMISSIVE_HOLD
// RGB Stuff
#define RGB_DI_PIN B0
diff --git a/keyboards/handwired/uthol/rev3/info.json b/keyboards/handwired/uthol/rev3/info.json
new file mode 100644
index 0000000000..44078b4ab1
--- /dev/null
+++ b/keyboards/handwired/uthol/rev3/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "UtholThree",
+ "usb": {
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/handwired/uthol/rev3/rules.mk b/keyboards/handwired/uthol/rev3/rules.mk
index b64e4ec8d1..8752bb87eb 100644
--- a/keyboards/handwired/uthol/rev3/rules.mk
+++ b/keyboards/handwired/uthol/rev3/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/handwired/videowriter/config.h b/keyboards/handwired/videowriter/config.h
index b4909ffba1..8bb4835e3d 100644
--- a/keyboards/handwired/videowriter/config.h
+++ b/keyboards/handwired/videowriter/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x515A // "QZ"
-#define PRODUCT_ID 0x5657 // "VW"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Magnavox
-#define PRODUCT Videowriter
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D7, C6, D1, D0, D4, D2, D3, E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/videowriter/info.json b/keyboards/handwired/videowriter/info.json
index bf7603e3db..23f8b712e5 100644
--- a/keyboards/handwired/videowriter/info.json
+++ b/keyboards/handwired/videowriter/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "videowriter",
+ "keyboard_name": "Videowriter",
+ "manufacturer": "Magnavox",
"url": "https://deskthority.net/viewtopic.php?f=7&t=20210",
"maintainer": "DmNosachev",
+ "usb": {
+ "vid": "0x515A",
+ "pid": "0x5657",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/handwired/videowriter/keymaps/oleg/keymap.c b/keyboards/handwired/videowriter/keymaps/oleg/keymap.c
index fec2ed31e7..9ae6e04054 100644
--- a/keyboards/handwired/videowriter/keymaps/oleg/keymap.c
+++ b/keyboards/handwired/videowriter/keymaps/oleg/keymap.c
@@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FN1] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_PAUS, KC_HOME, KC_PGDN, KC_PGUP, KC_END,
+ _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, KC_PAUS, KC_HOME, KC_PGDN, KC_PGUP, 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_DEL, _______,
_______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U ,_______, _______, _______, KC_UP, _______, _______, _______, _______, KC_RCTRL,
_______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______,
diff --git a/keyboards/handwired/wabi/config.h b/keyboards/handwired/wabi/config.h
index 68700d4873..f78413445a 100644
--- a/keyboards/handwired/wabi/config.h
+++ b/keyboards/handwired/wabi/config.h
@@ -16,14 +16,6 @@ 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 0xB07D
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Montsinger
-#define PRODUCT Wabi
-
/* key matrix size */
#define MATRIX_ROWS 5
@@ -43,7 +35,6 @@ diode)
#define MATRIX_ROW_PINS { D5, F5, F6, F7, B0 }
#define MATRIX_COL_PINS { F4, F1, F0, E6, B3, B7, D0, D1, D2, D3, D4, D6, D7, B5 }
-#define UNUSED_PINS { B1, B2, C7, C6, B6, B4 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/wabi/info.json b/keyboards/handwired/wabi/info.json
index 7d58bd3634..624bc739f2 100644
--- a/keyboards/handwired/wabi/info.json
+++ b/keyboards/handwired/wabi/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Wabi",
+ "manufacturer": "Montsinger",
"url": "www.montsinger.net",
"maintainer": "Montsinger",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xB07D",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"Esc", "x":1.25, "y":0}, {"label":"1", "x":2.25, "y":0}, {"label":"2", "x":3.25, "y":0}, {"label":"3", "x":4.25, "y":0}, {"label":"4", "x":5.25, "y":0}, {"label":"5", "x":6.25, "y":0}, {"label":"6", "x":8.75, "y":0}, {"label":"7", "x":9.75, "y":0}, {"label":"8", "x":10.75, "y":0}, {"label":"9", "x":11.75, "y":0}, {"label":"0", "x":12.75, "y":0}, {"label":"-", "x":13.75, "y":0}, {"label":"=", "x":14.75, "y":0}, {"label":"Backspace", "x":15.75, "y":0, "w":2}, {"label":"Tab", "x":0.75, "y":1, "w":1.5}, {"label":"Q", "x":2.25, "y":1}, {"label":"W", "x":3.25, "y":1}, {"label":"E", "x":4.25, "y":1}, {"label":"R", "x":5.25, "y":1}, {"label":"T", "x":6.25, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"[", "x":13.75, "y":1}, {"label":"]", "x":14.75, "y":1}, {"label":"\\", "x":15.75, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0.5, "y":2, "w":1.75}, {"label":"A", "x":2.25, "y":2}, {"label":"S", "x":3.25, "y":2}, {"label":"D", "x":4.25, "y":2}, {"label":"F", "x":5.25, "y":2}, {"label":"G", "x":6.25, "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":"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":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":2.75}, {"label":"Up", "x":16.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":4, "y":4, "w":1.25}, {"label":"Space", "x":5.25, "y":4}, {"label":"Page Down", "x":6.25, "y":4, "w":1.25}, {"label":"Enter", "x":8.5, "y":4, "w":1.25}, {"label":"Space", "x":9.75, "y":4}, {"label":"Backspace", "x":10.75, "y":4, "w":1.25}, {"label":"Left", "x":15.5, "y":4}, {"label":"Down", "x":16.5, "y":4}, {"label":"Right", "x":17.5, "y":4}] }
diff --git a/keyboards/handwired/wabi/keymaps/rossman360/keymap.c b/keyboards/handwired/wabi/keymaps/rossman360/keymap.c
index dba4e77c25..3bd46bf191 100644
--- a/keyboards/handwired/wabi/keymaps/rossman360/keymap.c
+++ b/keyboards/handwired/wabi/keymaps/rossman360/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, BLINE , KC_BSPC, BWORD , KC_NO , KC_NO , _______, _______, _______, _______
),
[_FN1] = LAYOUT(
- RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NTAB,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NTAB,
_______, _______, _______, _______, _______, _______, _______, UNDO , _______, _______, _______, _______, _______, KC_SLSH,
_______, _______, _______, _______, _______, _______, KC_HOME, KC_LEFT, KC_UP , KC_RIGHT,KC_END , _______, CTAB,
_______, _______, XPANDR , _______, PMERGE , _______, _______, PMERGE , KC_DOWN, _______, _______, _______, _______,
diff --git a/keyboards/handwired/wakizashi40/readme.md b/keyboards/handwired/wakizashi40/readme.md
index 8bb6c2aebc..b419f5032b 100644
--- a/keyboards/handwired/wakizashi40/readme.md
+++ b/keyboards/handwired/wakizashi40/readme.md
@@ -18,4 +18,4 @@ See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools)
* **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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/handwired/woodpad/config.h b/keyboards/handwired/woodpad/config.h
index 9b92798d96..16290df805 100644
--- a/keyboards/handwired/woodpad/config.h
+++ b/keyboards/handwired/woodpad/config.h
@@ -19,13 +19,6 @@ 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 0x6069
-#define DEVICE_VER 0x0001
-#define MANUFACTURER WoodKeys.click
-#define PRODUCT Woodpad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7 }
#define MATRIX_COL_PINS { B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/woodpad/info.json b/keyboards/handwired/woodpad/info.json
index fe5e5a943a..3e82a0cc42 100644
--- a/keyboards/handwired/woodpad/info.json
+++ b/keyboards/handwired/woodpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Woodpad",
+ "manufacturer": "WoodKeys.click",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6069",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [
diff --git a/keyboards/handwired/wulkan/config.h b/keyboards/handwired/wulkan/config.h
index 72e2c9e373..3f35e214e4 100644
--- a/keyboards/handwired/wulkan/config.h
+++ b/keyboards/handwired/wulkan/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Wulkan
-#define PRODUCT Handwired48Keys
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/handwired/wulkan/info.json b/keyboards/handwired/wulkan/info.json
index afb9611e2b..bef51cdb2b 100644
--- a/keyboards/handwired/wulkan/info.json
+++ b/keyboards/handwired/wulkan/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wulkan",
+ "keyboard_name": "Handwired48Keys",
+ "manufacturer": "Wulkan",
"url": "",
"maintainer": "Napoleon Wulkan",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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/handwired/xealous/config.h b/keyboards/handwired/xealous/config.h
index 5c1469b1f0..2502b4d196 100644
--- a/keyboards/handwired/xealous/config.h
+++ b/keyboards/handwired/xealous/config.h
@@ -29,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define DEBUG_MATRIX_SCAN_RATE //Use this to determine scan-rate.
#define FORCE_NKRO
-#define QMK_KEYS_PER_SCAN 4 //if we press four keys simultaneously, lets process them simultaneously...
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/xealous/info.json b/keyboards/handwired/xealous/info.json
deleted file mode 100644
index 9cd634a210..0000000000
--- a/keyboards/handwired/xealous/info.json
+++ /dev/null
@@ -1,83 +0,0 @@
-{
- "keyboard_name": "Xealous",
- "url": "",
- "maintainer": "alex-ong",
- "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.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":"CapsLock", "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},
- {"x":3.75, "y":4, "w":1.25},
- {"x":5, "y":4, "w":2.25},
-
- {"x":7.25, "y":4, "w":2.75},
- {"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":"Ctrl", "x":13.75, "y":4, "w":1.25}
- ]
- }
- }
-}
diff --git a/keyboards/handwired/xealous/rev1/config.h b/keyboards/handwired/xealous/rev1/config.h
index cbb4648d19..40fe502340 100644
--- a/keyboards/handwired/xealous/rev1/config.h
+++ b/keyboards/handwired/xealous/rev1/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4131
-#define PRODUCT_ID 0x5141
-#define DEVICE_VER 0x0001
-#define MANUFACTURER XeaLouS
-#define PRODUCT XeaL60
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/handwired/xealous/rev1/info.json b/keyboards/handwired/xealous/rev1/info.json
new file mode 100644
index 0000000000..59865e9321
--- /dev/null
+++ b/keyboards/handwired/xealous/rev1/info.json
@@ -0,0 +1,89 @@
+{
+ "keyboard_name": "XeaL60",
+ "manufacturer": "XeaLouS",
+ "url": "",
+ "maintainer": "alex-ong",
+ "usb": {
+ "vid": "0x4131",
+ "pid": "0x5141",
+ "device_version": "0.0.1"
+ },
+ "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.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":"CapsLock", "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},
+ {"x":3.75, "y":4, "w":1.25},
+ {"x":5, "y":4, "w":2.25},
+
+ {"x":7.25, "y":4, "w":2.75},
+ {"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":"Ctrl", "x":13.75, "y":4, "w":1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/xealousbrown/config.h b/keyboards/handwired/xealousbrown/config.h
index cb787ba0c2..37d424b01e 100644
--- a/keyboards/handwired/xealousbrown/config.h
+++ b/keyboards/handwired/xealousbrown/config.h
@@ -18,13 +18,6 @@ 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 0x606A
-#define DEVICE_VER 0x0002
-#define MANUFACTURER XeaL
-#define PRODUCT XeaLous Brown Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 13
@@ -50,7 +43,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, D2, D1, D0, D4 }
#define MATRIX_COL_PINS { C6, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS { }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/xealousbrown/info.json b/keyboards/handwired/xealousbrown/info.json
index cecd7e9e2e..372158baad 100644
--- a/keyboards/handwired/xealousbrown/info.json
+++ b/keyboards/handwired/xealousbrown/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Xealous-Brown",
+ "keyboard_name": "XeaLous Brown Keyboard",
+ "manufacturer": "XeaL",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x606A",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/handwired/z150/config.h b/keyboards/handwired/z150/config.h
index 5d11c31a2a..96bda8c8d8 100644
--- a/keyboards/handwired/z150/config.h
+++ b/keyboards/handwired/z150/config.h
@@ -19,19 +19,12 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER ALPS
-#define PRODUCT Z150
/* key matrix size */
#define MATRIX_ROWS 11
#define MATRIX_COLS 8
#define MATRIX_ROW_PINS { B13, B14, B15, A8, A9, A3, A10, A1, A2, A15, A0 }
#define MATRIX_COL_PINS { B11, B10, B1, B0, A7, A6, A5, A4 }
-#define UNUSED_PINS
#define NUM_LOCK_LED_PIN B5
#define SCROLL_LOCK_LED_PIN B4
diff --git a/keyboards/handwired/z150/info.json b/keyboards/handwired/z150/info.json
index 17b94b521d..823467b694 100644
--- a/keyboards/handwired/z150/info.json
+++ b/keyboards/handwired/z150/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "z150",
+ "keyboard_name": "Z150",
+ "manufacturer": "ALPS",
"url": "",
"maintainer": "DmNosachev",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"Esc", "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":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":"+", "x":14.5, "y":0}, {"label":"Backspace", "x":15.5, "y":0, "w":1.75}, {"label":"", "x":17.25, "y":0}, {"label":"", "x":18.25, "y":0, "w":1.5}, {"label":"", "x":19.75, "y":0, "w":1.5}, {"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, "w":1.25}, {"label":"7", "x":17.25, "y":1}, {"label":"8", "x":18.25, "y":1}, {"label":"9", "x":19.25, "y":1}, {"label":"PrtSc", "x":20.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Ctrl", "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}, {"label":"4", "x":17.25, "y":2}, {"label":"5", "x":18.25, "y":2}, {"label":"6", "x":19.25, "y":2}, {"label":"\u0432\u0402\u201c", "x":20.25, "y":2}, {"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.5}, {"label":"|", "x":16.25, "y":3}, {"label":"1", "x":17.25, "y":3}, {"label":"2", "x":18.25, "y":3}, {"label":"6", "x":19.25, "y":3}, {"label":"+", "x":20.25, "y":3, "h":2}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.75}, {"label":"~", "x":4.25, "y":4}, {"x":5.25, "y":4, "w":9}, {"label":"CapsLock", "x":14.25, "y":4, "w":2}, {"label":"0", "x":16.25, "y":4, "w":2}, {"label":".", "x":18.25, "y":4, "w":2}]
diff --git a/keyboards/handwired/z150/keymaps/zyxx/keymap.c b/keyboards/handwired/z150/keymaps/zyxx/keymap.c
index 446f392203..b342b66be2 100644
--- a/keyboards/handwired/z150/keymaps/zyxx/keymap.c
+++ b/keyboards/handwired/z150/keymaps/zyxx/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------------------------------------------------------------------'
*/
[_FN1] = LAYOUT(
- RESET, _______, _______, KC_F11, KC_F12, AU_ON, AU_OFF, CK_TOGG, CK_UP, CK_DOWN, CK_RST, _______, _______, _______, _______, KC_DEL, KC_NLCK, KC_PSLS, _______,
+ QK_BOOT, _______, _______, KC_F11, KC_F12, AU_ON, AU_OFF, CK_TOGG, CK_UP, CK_DOWN, CK_RST, _______, _______, _______, _______, KC_DEL, KC_NLCK, KC_PSLS, _______,
_______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PAST,
_______, _______, _______ , _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PMNS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PPLS,
diff --git a/keyboards/handwired/zergo/config.h b/keyboards/handwired/zergo/config.h
index 8bac9970a6..8453b8efc9 100644
--- a/keyboards/handwired/zergo/config.h
+++ b/keyboards/handwired/zergo/config.h
@@ -19,13 +19,6 @@ 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 0xB92B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER GreenJack
-#define PRODUCT zErgo
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 14
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B1, D7, C3, D6, D5, D4 }
#define MATRIX_COL_PINS { C7, C6, C5, C4, C2, C1, B7, D3, D2, B6, B5, B4, B3, B2 }
-#define UNUSED_PINS { A0, A1, A2, A3, A4, A5, A6, A7, B0, C0, E0, E1, E4, E5, F0, F1, F2, F3, F4, F5, F6, F7 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/handwired/zergo/info.json b/keyboards/handwired/zergo/info.json
index 2b59b48de6..cec0c8954d 100644
--- a/keyboards/handwired/zergo/info.json
+++ b/keyboards/handwired/zergo/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "zergo",
+ "keyboard_name": "zErgo",
+ "manufacturer": "GreenJack",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/handwired/zergo",
"maintainer": "greenjack",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xB92B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/hardlineworks/otd_plus/config.h b/keyboards/hardlineworks/otd_plus/config.h
index 15e6df7588..95c5ee6ec6 100644
--- a/keyboards/hardlineworks/otd_plus/config.h
+++ b/keyboards/hardlineworks/otd_plus/config.h
@@ -2,20 +2,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x484C // "HL"
-#define PRODUCT_ID 0x0087 // "TKL"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Hardlineworks
-#define PRODUCT OTD-PLUS
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
#define MATRIX_ROW_PINS { D2, D4, D1, E6, F5, C6, B6, F6, F0, D0, D6, D3 }
#define MATRIX_COL_PINS { B3, B2, B1, B7, B0, F1, D7, F7, C7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hardlineworks/otd_plus/info.json b/keyboards/hardlineworks/otd_plus/info.json
index 59668dc243..d61987b65f 100644
--- a/keyboards/hardlineworks/otd_plus/info.json
+++ b/keyboards/hardlineworks/otd_plus/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "OTD-PLUS",
+ "manufacturer": "Hardlineworks",
"url": "",
"maintainer": "Hardlineworks",
+ "usb": {
+ "vid": "0x484C",
+ "pid": "0x0087",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi_wkl": {
"layout": [
diff --git a/keyboards/heliar/wm1_hotswap/config.h b/keyboards/heliar/wm1_hotswap/config.h
index d25527ab35..88f1b246ef 100644
--- a/keyboards/heliar/wm1_hotswap/config.h
+++ b/keyboards/heliar/wm1_hotswap/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xD070
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Heliar
-#define PRODUCT wm1 hotswap
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/heliar/wm1_hotswap/info.json b/keyboards/heliar/wm1_hotswap/info.json
index 165dad94bc..bee3c03ab2 100644
--- a/keyboards/heliar/wm1_hotswap/info.json
+++ b/keyboards/heliar/wm1_hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wm1",
+ "keyboard_name": "wm1 hotswap",
+ "manufacturer": "Heliar",
"url": "",
"maintainer": "heliar",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xD070",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/helix/pico/config.h b/keyboards/helix/pico/config.h
index b08865d0a4..461fbd426b 100644
--- a/keyboards/helix/pico/config.h
+++ b/keyboards/helix/pico/config.h
@@ -19,13 +19,6 @@ 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 0x0001
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Yushakobo
-#define PRODUCT HelixPico
-
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100
diff --git a/keyboards/helix/pico/info.json b/keyboards/helix/pico/info.json
index b9b573a37d..9c69f52fcd 100644
--- a/keyboards/helix/pico/info.json
+++ b/keyboards/helix/pico/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "HelixPico",
+ "manufacturer": "Yushakobo",
"url": "https://github.com/MakotoKurauchi/helix",
"maintainer": "MakotoKurauchi",
+ "usb": {
+ "vid": "0x3265",
+ "pid": "0x0001",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/helix/pico/keymaps/biacco/keymap.c b/keyboards/helix/pico/keymaps/biacco/keymap.c
index aa196c7e6a..8bec3647d2 100644
--- a/keyboards/helix/pico/keymaps/biacco/keymap.c
+++ b/keyboards/helix/pico/keymaps/biacco/keymap.c
@@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \
_______, KC_F1, XXXXXXX, KC_MHEN, KC_HENK, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, \
_______, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, SFT_T(KC_RO), \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______ \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______ \
),
/* SYMB
diff --git a/keyboards/helix/pico/keymaps/mtei/config.h b/keyboards/helix/pico/keymaps/mtei/config.h
index 1a4dc2c842..a633105ff9 100644
--- a/keyboards/helix/pico/keymaps/mtei/config.h
+++ b/keyboards/helix/pico/keymaps/mtei/config.h
@@ -13,8 +13,6 @@
#undef TAPPING_TERM
#define TAPPING_TERM 300
#define PERMISSIVE_HOLD
-/* when TAPPING_TERM >= 500 same effect PERMISSIVE_HOLD.
- see tmk_core/common/action_tapping.c */
// If you need more program area, try select and reduce rgblight modes to use.
diff --git a/keyboards/helix/pico/keymaps/mtei/keymap.c b/keyboards/helix/pico/keymaps/mtei/keymap.c
index b703ca376d..b3d988530e 100644
--- a/keyboards/helix/pico/keymaps/mtei/keymap.c
+++ b/keyboards/helix/pico/keymaps/mtei/keymap.c
@@ -223,7 +223,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, XXXXXXX, QWERTY, EUCALYN, COLEMAK, DVORAK, \
+ XXXXXXX, QK_BOOT, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, XXXXXXX, QWERTY, EUCALYN, COLEMAK, DVORAK, \
RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
_______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ___,___, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______ \
@@ -242,7 +242,7 @@ float music_scale[][2] = SONG(MUSIC_SCALE_SOUND);
static int current_default_layer;
-uint32_t default_layer_state_set_kb(uint32_t state) {
+layer_state_t default_layer_state_set_kb(layer_state_t state) {
// 1<<_QWERTY - 1 == 1 - 1 == _QWERTY (=0)
// 1<<_COLEMAK - 1 == 2 - 1 == _COLEMAK (=1)
current_default_layer = state - 1;
diff --git a/keyboards/helix/rev2/config.h b/keyboards/helix/rev2/config.h
index 8c6210bae4..c7e9e35db5 100644
--- a/keyboards/helix/rev2/config.h
+++ b/keyboards/helix/rev2/config.h
@@ -19,13 +19,6 @@ 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 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yushakobo
-#define PRODUCT Helix Beta
-
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100
diff --git a/keyboards/helix/rev2/info.json b/keyboards/helix/rev2/info.json
index f46508de5a..9efe7fdb53 100644
--- a/keyboards/helix/rev2/info.json
+++ b/keyboards/helix/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Helix rev. 2",
+ "keyboard_name": "Helix Beta",
+ "manufacturer": "Yushakobo",
"url": "https://github.com/MakotoKurauchi/helix",
"maintainer": "MakotoKurauchi",
+ "usb": {
+ "vid": "0x3265",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/helix/rev2/keymaps/default/oled_display.c b/keyboards/helix/rev2/keymaps/default/oled_display.c
index ad5558869f..384356bd14 100644
--- a/keyboards/helix/rev2/keymaps/default/oled_display.c
+++ b/keyboards/helix/rev2/keymaps/default/oled_display.c
@@ -86,7 +86,7 @@ static void render_layer_status(void) {
break;
default:
oled_write_P(PSTR("Undef-"), false);
- snprintf(buf,sizeof(buf), "%ld", layer_state);
+ snprintf(buf,sizeof(buf), "%u", layer_state);
oled_write(buf, false);
}
oled_write_P(PSTR("\n"), false);
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c b/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c
index 5de00cb14c..80d0392ffb 100644
--- a/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/keymap.c
@@ -5,9 +5,9 @@
// keymaps definitions are moved to keymap_Xrows.c.
#ifdef RGBLIGHT_ENABLE
-uint32_t layer_state_set_keymap(uint32_t state) {
+layer_state_t layer_state_set_keymap(layer_state_t state) {
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case L_EDVORAKJP_LOWER:
rgblight_sethsv_noeeprom_red();
break;
diff --git a/keyboards/helix/rev2/keymaps/edvorakjp/oled.c b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c
index 207aebc423..14e3e5533b 100644
--- a/keyboards/helix/rev2/keymaps/edvorakjp/oled.c
+++ b/keyboards/helix/rev2/keymaps/edvorakjp/oled.c
@@ -19,7 +19,7 @@ void render_layer_state(void) {
char layer_name[17];
oled_write_P(PSTR("Layer: "), false);
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case L_EDVORAKJP_BASE:
oled_write_ln_P(PSTR("Default"), false);
break;
diff --git a/keyboards/helix/rev2/keymaps/five_rows/config.h b/keyboards/helix/rev2/keymaps/five_rows/config.h
index 4aae9b5cac..43f14aaf2c 100644
--- a/keyboards/helix/rev2/keymaps/five_rows/config.h
+++ b/keyboards/helix/rev2/keymaps/five_rows/config.h
@@ -6,8 +6,6 @@
#undef TAPPING_TERM
#define TAPPING_TERM 300
#define PERMISSIVE_HOLD
-/* when TAPPING_TERM >= 500 same effect PERMISSIVE_HOLD.
- see tmk_core/common/action_tapping.c */
#undef OLED_UPDATE_INTERVAL
#ifdef DEBUG_MATRIX_SCAN_RATE
diff --git a/keyboards/helix/rev2/keymaps/five_rows/keymap.c b/keyboards/helix/rev2/keymaps/five_rows/keymap.c
index d992425de7..77d7f1607e 100644
--- a/keyboards/helix/rev2/keymaps/five_rows/keymap.c
+++ b/keyboards/helix/rev2/keymaps/five_rows/keymap.c
@@ -343,7 +343,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT(
XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX,
- XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX,
+ XXXXXXX, QK_BOOT, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX,
RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI,
RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD,
_______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______
@@ -379,8 +379,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
int current_default_layer;
-uint32_t default_layer_state_set_user(uint32_t state) {
- current_default_layer = biton32(state);
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ current_default_layer = get_highest_layer(state);
return state;
}
diff --git a/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c b/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c
index 23b45ef317..e8b3087701 100644
--- a/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c
+++ b/keyboards/helix/rev2/keymaps/five_rows_jis/keymap.c
@@ -185,7 +185,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- XXXXXXX, RESET, RGBRST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, RGBRST, XXXXXXX, XXXXXXX, XXXXXXX, \
+ XXXXXXX, QK_BOOT, RGBRST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, RGBRST, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, DL_BAS, DL_BASE, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, DL_BAS, DL_BASE, AG_NORM, AG_SWAP, XXXXXXX, \
XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, \
XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, \
diff --git a/keyboards/helix/rev2/keymaps/fraanrosi/keymap.c b/keyboards/helix/rev2/keymaps/fraanrosi/keymap.c
index 1ac0c8239e..69f54a9de2 100644
--- a/keyboards/helix/rev2/keymaps/fraanrosi/keymap.c
+++ b/keyboards/helix/rev2/keymaps/fraanrosi/keymap.c
@@ -129,7 +129,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_1, RGB_2, RGB_3, RGB_4, RGB_TOG, KC_NO, KC_NO, RGB_MOD, RGB_RMOD,KC_NO, KC_NO, KC_NO, \
RGB_5, RGB_6, RGB_7, RGB_8, RGB_9, KC_NO, KC_NO, RGB_HUI, RGB_HUD, KC_NO, KC_NO, KC_NO, \
- KC_NO, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, KC_NO, RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
+ KC_NO, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, KC_NO, QK_BOOT, 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 \
)
};
diff --git a/keyboards/helix/rev2/keymaps/froggy/keymap.c b/keyboards/helix/rev2/keymaps/froggy/keymap.c
index 484a0a34b9..eb574f9778 100644
--- a/keyboards/helix/rev2/keymaps/froggy/keymap.c
+++ b/keyboards/helix/rev2/keymaps/froggy/keymap.c
@@ -129,7 +129,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------'
*/
[_FUNC] = LAYOUT_half( \
- RGBRST,RGB_HUI, _______, RESET, MAC, WIN, \
+ RGBRST,RGB_HUI, _______, QK_BOOT, MAC, WIN, \
RGB1, RGB_VAI, KC_F7, KC_F8, KC_F9, _______, \
RGB2, RGB_VAD, KC_F4, KC_F5, KC_F6, KC_F12, \
RGB3, KC_F10, KC_F1, KC_F2, KC_F3, KC_F11, _______, \
diff --git a/keyboards/helix/rev2/keymaps/froggy_106/keymap.c b/keyboards/helix/rev2/keymaps/froggy_106/keymap.c
index 2e1464bedf..a5a82eca98 100644
--- a/keyboards/helix/rev2/keymaps/froggy_106/keymap.c
+++ b/keyboards/helix/rev2/keymaps/froggy_106/keymap.c
@@ -225,7 +225,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------'
*/
[_FUNC] = LAYOUT_half( \
- RGBRST,RGB_HUI, TO_101, RESET, MAC, WIN, \
+ RGBRST,RGB_HUI, TO_101, QK_BOOT, MAC, WIN, \
RGB1, RGB_VAI, KC_F7, KC_F8, KC_F9, TO_106, \
RGB2, RGB_VAD, KC_F4, KC_F5, KC_F6, KC_F12, \
RGB3, KC_F10, KC_F1, KC_F2, KC_F3, KC_F11, _______, \
diff --git a/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c b/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c
index d9102cb59f..5fecc2f766 100644
--- a/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c
+++ b/keyboards/helix/rev2/keymaps/yshrsmz/keymap.c
@@ -161,7 +161,7 @@ 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, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, 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 \
@@ -274,7 +274,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- _______, RESET, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, 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/rev3_4rows/config.h b/keyboards/helix/rev3_4rows/config.h
index 1c0ec4d36c..5050599075 100644
--- a/keyboards/helix/rev3_4rows/config.h
+++ b/keyboards/helix/rev3_4rows/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
#include <stdio.h>
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3265 //yushakobo
-#define PRODUCT_ID 0x0004 //Helix rev3 4rows
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yushakobo
-#define PRODUCT Helix rev3 4rows
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 7
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/helix/rev3_4rows/info.json b/keyboards/helix/rev3_4rows/info.json
index 7e825ff90c..e5c19a02b5 100644
--- a/keyboards/helix/rev3_4rows/info.json
+++ b/keyboards/helix/rev3_4rows/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Helix rev3 4rows",
+ "manufacturer": "yushakobo",
"url": "",
"maintainer": "yushakobo",
+ "usb": {
+ "vid": "0x3265",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/helix/rev3_5rows/config.h b/keyboards/helix/rev3_5rows/config.h
index c880e27c88..489eeded06 100644
--- a/keyboards/helix/rev3_5rows/config.h
+++ b/keyboards/helix/rev3_5rows/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
#include <stdio.h>
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3265 //yushakobo
-#define PRODUCT_ID 0x0003 //Helix rev3 5rows
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yushakobo
-#define PRODUCT Helix rev3 5rows
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/helix/rev3_5rows/info.json b/keyboards/helix/rev3_5rows/info.json
index 5a1e35d8b2..95580e0c08 100644
--- a/keyboards/helix/rev3_5rows/info.json
+++ b/keyboards/helix/rev3_5rows/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Helix rev3 5rows",
+ "manufacturer": "yushakobo",
"url": "",
"maintainer": "yushakobo",
+ "usb": {
+ "vid": "0x3265",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h b/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h
index ab679d14b9..a6fd32c613 100644
--- a/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h
+++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/config.h
@@ -6,8 +6,6 @@
#undef TAPPING_TERM
#define TAPPING_TERM 300
#define PERMISSIVE_HOLD
-/* when TAPPING_TERM >= 500 same effect PERMISSIVE_HOLD.
- see tmk_core/common/action_tapping.c */
#undef OLED_UPDATE_INTERVAL
#ifdef DEBUG_MATRIX_SCAN_RATE
diff --git a/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c b/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c
index d992425de7..77d7f1607e 100644
--- a/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c
+++ b/keyboards/helix/rev3_5rows/keymaps/five_rows/keymap.c
@@ -343,7 +343,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT(
XXXXXXX, KEYPAD, DVORAK, COLEMAK, EUCALYN, QWERTY, QWERTY, EUCALYN, COLEMAK, DVORAK, KEYPAD, XXXXXXX,
- XXXXXXX, RESET, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX,
+ XXXXXXX, QK_BOOT, RGBRST, RGB_TOG, AU_ON, AG_SWAP, AG_SWAP, AU_ON, RGB_TOG, RGBRST, XXXXXXX, XXXXXXX,
RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, AU_OFF, AG_NORM, AG_NORM, AU_OFF, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI,
RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_SAD, RGB_HUD,
_______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,____,____,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______
@@ -379,8 +379,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
int current_default_layer;
-uint32_t default_layer_state_set_user(uint32_t state) {
- current_default_layer = biton32(state);
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ current_default_layer = get_highest_layer(state);
return state;
}
diff --git a/keyboards/hhkb/ansi/32u2/rules.mk b/keyboards/hhkb/ansi/32u2/rules.mk
new file mode 100644
index 0000000000..0c0b4c37c2
--- /dev/null
+++ b/keyboards/hhkb/ansi/32u2/rules.mk
@@ -0,0 +1,5 @@
+# MCU name
+MCU = atmega32u2
+
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
diff --git a/keyboards/hhkb/ansi/config.h b/keyboards/hhkb/ansi/config.h
index 8307fc1679..f2ba9fd74a 100644
--- a/keyboards/hhkb/ansi/config.h
+++ b/keyboards/hhkb/ansi/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4848 // HH = happy hacking
-#define PRODUCT_ID 0x0001 // ANSI HHKB
-#define DEVICE_VER 0x0104
-#define MANUFACTURER q.m.k
-#define PRODUCT HHKB mod
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
diff --git a/keyboards/hhkb/ansi/hhkb_avr.h b/keyboards/hhkb/ansi/hhkb_avr.h
index f9446deef7..a805445e9b 100644
--- a/keyboards/hhkb/ansi/hhkb_avr.h
+++ b/keyboards/hhkb/ansi/hhkb_avr.h
@@ -78,6 +78,60 @@ static inline void KEY_SELECT(uint8_t ROW, uint8_t COL)
}
+#elif defined(__AVR_ATmega32U2__)
+/*
+ * For TMK HHKB alt controller(ATMega32U4)
+ *
+ * row: PB0-2
+ * col: PB3-5,6
+ * key: PD3(pull-uped)
+ * prev: PB7
+ * power: PD4(L:off/H:on)
+ * row-ext: PC6,7 for HHKB JP(active low)
+ */
+static inline void KEY_ENABLE(void) { (PORTB &= ~(1<<6)); }
+static inline void KEY_UNABLE(void) { (PORTB |= (1<<6)); }
+static inline bool KEY_STATE(void) { return (PIND & (1<<3)); }
+static inline void KEY_PREV_ON(void) { (PORTB |= (1<<7)); }
+static inline void KEY_PREV_OFF(void) { (PORTB &= ~(1<<7)); }
+#ifdef HHKB_POWER_SAVING
+static inline void KEY_POWER_ON(void) {
+ DDRB = 0xFF; PORTB = 0x40; // change pins output
+ DDRD |= (1<<4); PORTD |= (1<<4); // MOS FET switch on
+ /* Without this wait you will miss or get false key events. */
+ _delay_ms(5); // wait for powering up
+}
+static inline void KEY_POWER_OFF(void) {
+ /* input with pull-up consumes less than without it when pin is open. */
+ DDRB = 0x00; PORTB = 0xFF; // change pins input with pull-up
+ DDRD |= (1<<4); PORTD &= ~(1<<4); // MOS FET switch off
+}
+static inline bool KEY_POWER_STATE(void) { return PORTD & (1<<4); }
+#else
+static inline void KEY_POWER_ON(void) {}
+static inline void KEY_POWER_OFF(void) {}
+static inline bool KEY_POWER_STATE(void) { return true; }
+#endif
+static inline void KEY_INIT(void)
+{
+ /* row,col,prev: output */
+ DDRB = 0xFF;
+ PORTB = 0x40; // unable
+ /* key: input with pull-up */
+ DDRD &= ~0x80;
+ PORTD |= 0x80;
+
+ KEY_UNABLE();
+ KEY_PREV_OFF();
+
+ KEY_POWER_OFF();
+}
+static inline void KEY_SELECT(uint8_t ROW, uint8_t COL)
+{
+ PORTB = (PORTB & 0xC0) | (((COL) & 0x07)<<3) | ((ROW) & 0x07);
+
+}
+
#elif defined(__AVR_AT90USB1286__)
/*
diff --git a/keyboards/hhkb/ansi/info.json b/keyboards/hhkb/ansi/info.json
index d2a6e42318..fdc8363141 100644
--- a/keyboards/hhkb/ansi/info.json
+++ b/keyboards/hhkb/ansi/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "HHKB",
+ "keyboard_name": "ANSI",
+ "manufacturer": "HHKB",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4848",
+ "pid": "0x0001",
+ "device_version": "1.0.4"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/hhkb/ansi/keymaps/cinaeco/keymap.c b/keyboards/hhkb/ansi/keymaps/cinaeco/keymap.c
index 55d482e062..d57d3ccdc7 100644
--- a/keyboards/hhkb/ansi/keymaps/cinaeco/keymap.c
+++ b/keyboards/hhkb/ansi/keymaps/cinaeco/keymap.c
@@ -131,7 +131,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[UTIL] = LAYOUT(
- RESET, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, ____, ____, ____, ____, ____, ____, ____, ____, DF(QWER), DF(COLE), DF(DVOR), DEBUG,
+ QK_BOOT, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, ____, ____, ____, ____, ____, ____, ____, ____, DF(QWER), DF(COLE), DF(DVOR), DEBUG,
____, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, ____, KC_HOME, KC_PGDN, KC_PGUP, KC_END, ____, ____, ____, ____,
____, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, ____, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, ____, ____, ____,
____, ____, ____, ____, ____, KC_SPC, ____, ____, ____, ____, ____, ____, ____,
diff --git a/keyboards/hhkb/ansi/keymaps/tominabox1/keymap.c b/keyboards/hhkb/ansi/keymaps/tominabox1/keymap.c
index d7aea97736..1adb6ce5be 100644
--- a/keyboards/hhkb/ansi/keymaps/tominabox1/keymap.c
+++ b/keyboards/hhkb/ansi/keymaps/tominabox1/keymap.c
@@ -6,7 +6,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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_INS, KC_DEL, KC_CAPS, KC_MFFD, 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__MUTE, KC__VOLDOWN, KC__VOLUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [2] = 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, 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_TRNS),
+ [2] = 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, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_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),
[3] = LAYOUT(KC_GESC, KC_EXLM, KC_EML, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGDN, KC_UP, KC_PGUP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_TRNS)
};
diff --git a/keyboards/hhkb/ansi/keymaps/xyverz/keymap.c b/keyboards/hhkb/ansi/keymaps/xyverz/keymap.c
index eebaede979..9bc5d59302 100644
--- a/keyboards/hhkb/ansi/keymaps/xyverz/keymap.c
+++ b/keyboards/hhkb/ansi/keymaps/xyverz/keymap.c
@@ -109,7 +109,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* Layer 3: Functions */
[_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, _______, 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, _______, QK_BOOT,
_______, _______, QWERTY, DVORAK, COLEMAK, _______, _______, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, _______,
KC_CAPS, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______,
_______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_END, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/hhkb/ansi/rules.mk b/keyboards/hhkb/ansi/rules.mk
index 0b110d6561..40a34662bc 100644
--- a/keyboards/hhkb/ansi/rules.mk
+++ b/keyboards/hhkb/ansi/rules.mk
@@ -14,9 +14,9 @@ CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
CUSTOM_MATRIX = yes # Custom matrix file for the HHKB
NKRO_ENABLE = no # Enable N-Key Rollover
-# BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-# HHKB_RN42_ENABLE = yes # Enable support for hasu's BT alt controller -- code borrowed from tmk source tree.
+HHKB_RN42_ENABLE = no # Enable support for hasu's BT alt controller -- code borrowed from tmk source tree.
# Either uncomment the HHKB_RN42_ENABLE line above, or run make enabling the
# feature. Be sure to clean any existing build before trying to enable rn42
diff --git a/keyboards/hhkb/jp/config.h b/keyboards/hhkb/jp/config.h
index 04ee61c768..a3e7dbd3a6 100644
--- a/keyboards/hhkb/jp/config.h
+++ b/keyboards/hhkb/jp/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4848 // HH = happy hacking
-#define PRODUCT_ID 0x0002 // HHKB JP
-#define DEVICE_VER 0x0104
-#define MANUFACTURER q.m.k
-#define PRODUCT HHKB mod
-
/* key matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 8
diff --git a/keyboards/hhkb/jp/info.json b/keyboards/hhkb/jp/info.json
index ee9d1de53a..dd1cfbc870 100644
--- a/keyboards/hhkb/jp/info.json
+++ b/keyboards/hhkb/jp/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "HHKB JP",
+ "keyboard_name": "JP",
+ "manufacturer": "HHKB",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4848",
+ "pid": "0x0002",
+ "device_version": "1.0.4"
+ },
"layouts": {
"LAYOUT_jp": {
"layout": [
diff --git a/tmk_core/protocol/serial.h b/keyboards/hhkb/serial.h
index 0204b84a92..0204b84a92 100644
--- a/tmk_core/protocol/serial.h
+++ b/keyboards/hhkb/serial.h
diff --git a/tmk_core/protocol/serial_uart.c b/keyboards/hhkb/serial_uart.c
index d5b5657095..d5b5657095 100644
--- a/tmk_core/protocol/serial_uart.c
+++ b/keyboards/hhkb/serial_uart.c
diff --git a/keyboards/hhkb/yang/config.h b/keyboards/hhkb/yang/config.h
new file mode 100644
index 0000000000..e1fa406a0b
--- /dev/null
+++ b/keyboards/hhkb/yang/config.h
@@ -0,0 +1,123 @@
+/*
+Copyright 2020 Kan-Ru Chen <kanru@kanru.info>
+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/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 8
+
+/* matrix power saving */
+#define MATRIX_POWER_SAVE_TIMEOUT_MS 10000
+#define MATRIX_POWER_SAVE_TIMEOUT_L2_MS 1800000
+#define MATRIX_POWER_SAVE_TIMEOUT_L3_MS 7200000
+
+#define LED_CAPS_LOCK_PIN F4
+
+#ifdef BLUETOOTH_ENABLE
+# define OUTPUT_DEFAULT OUTPUT_AUTO
+
+# undef SERIAL_UART_BAUD
+# undef SERIAL_UART_DATA
+# undef SERIAL_UART_UBRR
+# undef SERIAL_UART_RXD_VECT
+# undef SERIAL_UART_TXD_READY
+# undef SERIAL_UART_INIT
+
+# define SERIAL_UART_BAUD 76800
+# define SERIAL_UART_DATA UDR1
+# define SERIAL_UART_UBRR (F_CPU / (8UL * SERIAL_UART_BAUD) - 1)
+# define SERIAL_UART_RXD_VECT USART1_RX_vect
+# define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
+# define SERIAL_UART_INIT() \
+ do { \
+ cli(); \
+ /* baud rate */ \
+ UBRR1L = SERIAL_UART_UBRR; \
+ /* baud rate */ \
+ UBRR1H = SERIAL_UART_UBRR >> 8; \
+ /* enable TX */ \
+ UCSR1B |= (0 << TXCIE1) | (1 << TXEN1); \
+ /* enable RX */ \
+ UCSR1B |= (1 << RXCIE1) | (1 << RXEN1); \
+ /* parity: none(00), even(01), odd(11) */ \
+ UCSR1C |= (0 << UPM11) | (0 << UPM10); \
+ /* 2x speed (error = 0.2%) */ \
+ UCSR1A |= (1 << U2X1); \
+ sei(); \
+ } while (0)
+#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
+
+/* 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
+
+//#define DEBUG_MATRIX_SCAN_RATE
+
+// Disable debounce
+#define DEBOUNCE 0
diff --git a/keyboards/hhkb/yang/info.json b/keyboards/hhkb/yang/info.json
new file mode 100644
index 0000000000..23e26fe2cb
--- /dev/null
+++ b/keyboards/hhkb/yang/info.json
@@ -0,0 +1,77 @@
+{
+ "keyboard_name": "HHKB BLE",
+ "manufacturer": "YANG",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x4848",
+ "pid": "0x0001",
+ "device_version": "1.0.4"
+ },
+ "layouts": {
+ "LAYOUT_60_hhkb": {
+ "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": "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": 13.5, "y": 1, "w": 1.5 },
+ { "label": "Control", "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": "Return", "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": "", "x": 1.5, "y": 4 },
+ { "label": "", "x": 2.5, "y": 4, "w": 1.5 },
+ { "x": 4, "y": 4, "w": 6 },
+ { "label": "", "x": 10, "y": 4, "w": 1.5 },
+ { "label": "", "x": 11.5, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/hhkb/yang/keymaps/default/keymap.c b/keyboards/hhkb/yang/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f91e1fc243
--- /dev/null
+++ b/keyboards/hhkb/yang/keymaps/default/keymap.c
@@ -0,0 +1,73 @@
+/* -*- eval: (turn-on-orgtbl); -*-
+ * default HHKB Layout
+ *
+ * Copyright 2021 Kan-Ru Chen <kanru@kanru.info>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 {
+ BASE,
+ HHKB,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* BASE Level: Default Layer
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+ | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+ | Cont | A | S | D | F | G | H | J | K | L | ; | ' | Ent | | |
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+ | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | |
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+
+ |------+------+-----------------------+------+------|
+ | LAlt | LGUI | ******* Space ******* | RGUI | RAlt |
+ |------+------+-----------------------+------+------|
+ */
+
+ [BASE] = LAYOUT_60_hhkb( // default layer
+ KC_ESC, KC_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(HHKB),
+ KC_LALT, KC_LGUI, /* */ KC_SPC, KC_RGUI, KC_RALT),
+
+ /* Layer HHKB: HHKB mode (HHKB Fn)
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | Caps | | | | | | | | Psc | Slk | Pus | Up | | Backs | |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | | | | | | | + | - | End | PgD | Dow | | | | |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+
+ |------+------+----------------------+------+------+
+ | **** | **** | ******************** | **** | **** |
+ |------+------+----------------------+------+------+
+
+ */
+
+ [HHKB] = 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, 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_BSPC,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, 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/hhkb/yang/keymaps/kanru/config.h b/keyboards/hhkb/yang/keymaps/kanru/config.h
new file mode 100644
index 0000000000..81fef2ea5e
--- /dev/null
+++ b/keyboards/hhkb/yang/keymaps/kanru/config.h
@@ -0,0 +1,21 @@
+/* Copyright 2021 Kan-Ru Chen <kanru@kanru.info>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 MOUSEKEY_DELAY 90
+#define MOUSEKEY_INTERVAL 16
+#define MOUSEKEY_MAX_SPEED 4
+#define MOUSEKEY_WHEEL_INTERVAL 50
diff --git a/keyboards/hhkb/yang/keymaps/kanru/keymap.c b/keyboards/hhkb/yang/keymaps/kanru/keymap.c
new file mode 100644
index 0000000000..c5d57c4cb3
--- /dev/null
+++ b/keyboards/hhkb/yang/keymaps/kanru/keymap.c
@@ -0,0 +1,126 @@
+/* -*- eval: (turn-on-orgtbl); -*-
+ * kanru's HHKB Layout
+ *
+ * Copyright 2021 Kan-Ru Chen <kanru@kanru.info>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 <stdio.h>
+
+enum custom_layers {
+ BASE,
+ HHKB,
+ MOUSE,
+};
+
+#define BATTERY_FULL 550
+#define BATTERY_EMPTY 326
+
+enum my_keycodes { KC_VBAT = SAFE_RANGE };
+
+uint32_t adafruit_ble_read_battery_voltage(void);
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+#ifdef BLUETOOTH_ENABLE
+ case KC_VBAT:
+ if (record->event.pressed) {
+ char vbat[8];
+ uint8_t level = (adafruit_ble_read_battery_voltage() - BATTERY_EMPTY) / (float)(BATTERY_FULL - BATTERY_EMPTY) * 100;
+ snprintf(vbat, sizeof(vbat), "%d", level);
+ send_string(vbat);
+ }
+ return false;
+#endif
+ default:
+ return true;
+ }
+}
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* BASE Level: Default Layer
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+ | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | ` |
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+ | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | Backs | |
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+ | Cont | A | S | D | F | G | H | J | K | L | ; | ' | Ent | | |
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+ | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 | | |
+ |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+
+ |------+------+-----------------------+------+------|
+ | LAlt | LGUI | ******* Space ******* | RGUI | RAlt |
+ |------+------+-----------------------+------+------|
+ */
+
+ [BASE] = LAYOUT_60_hhkb( // default layer
+ LT(MOUSE, KC_ESC), KC_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(HHKB),
+ KC_LALT, KC_LGUI, /* */ KC_SPC, KC_RGUI, KC_RALT),
+
+ /* Layer HHKB: HHKB mode (HHKB Fn)
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | Pwr | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Ins | Del |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | Caps | | | BAT | | | | | Psc | Slk | Pus | Up | | Backs | |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | | VoD | VoU | Mut | | | * | / | Hom | PgU | Lef | Rig | Enter | | |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+ | | | | | | | + | - | End | PgD | Dow | | | | |
+ |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+
+ |------+------+----------------------+------+------+
+ | **** | **** | ******************** | **** | **** |
+ |------+------+----------------------+------+------+
+
+ */
+
+ [HHKB] = 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, KC_TRNS, KC_TRNS, KC_VBAT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_BSPC,
+ KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, 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),
+
+ /* Layer MOUSE: Mouse Key mode (ESC)
+ |------+------+------+-----+----+----+----+----+----+----+-----+-----+-------+-------+----- |
+ | | | | | | | | | | | | | | | |
+ |------+------+------+-----+----+----+----+----+----+----+-----+-----+-------+-------+-----|
+ | | BTN1 | WH_U | | | | | | | | | | | | |
+ |------+------+------+-----+----+----+----+----+----+----+-----+-----+-------+-------+-----|
+ | | BTN2 | WH_D | | | |MS_L|MS_D|MS_U|MS_R| | | | | |
+ |------+------+------+-----+----+----+----+----+----+----+-----+-----+-------+-------+-----|
+ | | BTN3 | | | | | | | | | | | | | |
+ |------+------+------+-----+----+----+----+----+----+----+-----+-----+-------+-------+-----|
+
+ |------+------+----------------------+------+------+
+ | **** | **** | ******************** | **** | **** |
+ |------+------+----------------------+------+------+
+
+ */
+
+ [MOUSE] = LAYOUT_60_hhkb(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_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_TRNS, KC_BTN2, KC_WH_D, KC_TRNS, 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_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+// clang-format on
diff --git a/keyboards/hhkb/yang/matrix.c b/keyboards/hhkb/yang/matrix.c
new file mode 100644
index 0000000000..f0eccc899d
--- /dev/null
+++ b/keyboards/hhkb/yang/matrix.c
@@ -0,0 +1,173 @@
+/*
+Copyright 2011 Jun Wako <wakojun@gmail.com>
+Copyright 2020 Kan-Ru Chen <kanru@kanru.info>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You 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 BLUETOOTH_ENABLE
+# include "adafruit_ble.h"
+#endif
+
+#define RELAX_TIME_US 5
+#define ADC_READ_TIME_US 5
+
+uint8_t power_save_level;
+
+static uint32_t matrix_last_modified = 0;
+
+static inline void key_strobe_high(void) { writePinLow(B6); }
+static inline void key_strobe_low(void) { writePinHigh(B6); }
+static inline bool key_state(void) { return readPin(D7); }
+static inline void key_prev_on(void) { writePinHigh(B7); }
+static inline void key_prev_off(void) { writePinLow(B7); }
+static inline bool key_power_state(void) { return !readPin(D6); }
+
+static inline void suspend_power_down_longer(void) {
+ uint8_t times = 60;
+ while (--times) suspend_power_down();
+}
+
+void matrix_power_up(void) {
+ dprint("[matrix_on]\n");
+ // change pins output
+ DDRB = 0xFF;
+ PORTB = 0x40;
+ // switch MOS FET on
+ setPinOutput(D6);
+ writePinLow(D6);
+}
+
+void matrix_power_down(void) {
+ dprint("[matrix_off]\n");
+ // input with pull-up consumes less than without it when pin is open
+ DDRB = 0x00;
+ PORTB = 0xFF;
+ // switch MOS FET off
+ setPinOutput(D6);
+ writePinHigh(D6);
+}
+
+static inline void key_select_row(uint8_t row) { PORTB = (PORTB & 0b11111000) | ((row)&0b111); }
+static inline void key_select_col(uint8_t col) { PORTB = (PORTB & 0b11000111) | (((col)&0b111) << 3); }
+static inline bool key_prev_was_on(matrix_row_t matrix[], uint8_t row, uint8_t col) { return matrix[row] & (1 << col); }
+
+void matrix_init_custom(void) { power_save_level = 0; }
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ bool matrix_has_changed = false;
+
+ // power on
+ if (!key_power_state()) {
+ matrix_power_up();
+ }
+ for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+ matrix_row_t last_row_value = current_matrix[row];
+
+ key_select_row(row);
+ wait_us(RELAX_TIME_US);
+
+ for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+ // Hysteresis control: assert(1) when previous key state is on
+ if (key_prev_was_on(current_matrix, row, col)) {
+ key_prev_on();
+ } else {
+ key_prev_off();
+ }
+
+ // Disable interrupts to encure the ADC timing is correct
+ cli();
+
+ // strobe
+ key_select_col(col);
+ key_strobe_high();
+
+ // Wait for ADC to outputs its value.
+ // 1us was ok on one HHKB, but not worked on another.
+ // no wait doesn't work on Teensy++ with pro(1us works)
+ // no wait does work on tmk PCB(8MHz) with pro2
+ // 1us wait does work on both of above
+ // 1us wait doesn't work on tmk(16MHz)
+ // 5us wait does work on tmk(16MHz)
+ // 5us wait does work on tmk(16MHz/2)
+ // 5us wait does work on tmk(8MHz)
+ // 10us wait does work on Teensy++ with pro
+ // 10us wait does work on 328p+iwrap with pro
+ // 10us wait doesn't work on tmk PCB(8MHz) with pro2(very lagged scan)
+ wait_us(ADC_READ_TIME_US);
+
+ if (key_state()) {
+ current_matrix[row] &= ~(1 << col);
+ } else {
+ current_matrix[row] |= (1 << col);
+ }
+
+ key_strobe_low();
+ sei();
+
+ // Make sure enough time has elapsed since the last call
+ // This is to ensure the matrix voltages have relaxed
+ wait_us(RELAX_TIME_US);
+ }
+ if (current_matrix[row] ^ last_row_value) {
+ matrix_has_changed = true;
+ matrix_last_modified = timer_read32();
+ }
+ }
+
+ // Power saving
+ uint32_t time_diff = timer_elapsed32(matrix_last_modified);
+ if (time_diff > MATRIX_POWER_SAVE_TIMEOUT_L3_MS) {
+ power_save_level = 3;
+ suspend_power_down_longer();
+ } else if (time_diff > MATRIX_POWER_SAVE_TIMEOUT_L2_MS) {
+ power_save_level = 2;
+#ifdef BLUETOOTH_ENABLE
+ if (!adafruit_ble_is_connected()) {
+ power_save_level = 3;
+ }
+#endif
+ suspend_power_down_longer();
+ } else if (time_diff > MATRIX_POWER_SAVE_TIMEOUT_MS) {
+ power_save_level = 1;
+ suspend_power_down();
+ } else {
+ if (power_save_level != 0) {
+ power_save_level = 0;
+ suspend_wakeup_init();
+ }
+ }
+
+ return matrix_has_changed;
+}
+
+bool adafruit_ble_delbonds(void);
+bool adafruit_ble_reconnect(void);
+
+bool command_extra(uint8_t code) {
+ switch (code) {
+#ifdef BLUETOOTH_ENABLE
+ case KC_R:
+ adafruit_ble_delbonds();
+ return true;
+ case KC_S:
+ adafruit_ble_reconnect();
+ return true;
+#endif
+ default:
+ return false;
+ }
+}
diff --git a/keyboards/hhkb/yang/memo.md b/keyboards/hhkb/yang/memo.md
new file mode 100644
index 0000000000..5c710482b3
--- /dev/null
+++ b/keyboards/hhkb/yang/memo.md
@@ -0,0 +1,135 @@
+## Hardware Information
+
+The YANG HHKB BLE controller design is similiar to hasu's
+controller. Most pins are compatiable.
+
+**MCU**: ATmega32U4
+**Bluetooth**: MDBT40 (nRF51822-based), with Adafruit Bluefruit LE UART Friend firmware.
+**Power**: 3.3V
+**CPU Frequency**: 8MHz
+**Bootloader**: Lufa MassStorage
+
+## Pin usage
+
+| Description | HASU pin usage | YANG mod changed |
+|:------------------------------------ | ---------------------- | -------------------------- |
+| ~KEY: Lo(0) when key is pressed | PD7 input(with pullup) | |
+| Hysteresis: Hi(1) if key was pressed | PB7 output | |
+| Row selector bit0 | PB0 output | |
+| Row selector bit1 | PB1 output | |
+| Row selector bit2 | PB2 output | |
+| Col selector bit0 | PB3 output | |
+| Col selector bit1 | PB4 output | |
+| Col selector bit2 | PB5 output | |
+| Key unable | PB6 output | |
+| Switch power | PD4 output | PD6 output (PMOS FET) |
+| Bluetooth UART Rx | PC4 input | PD2 |
+| Bluetooth UART Tx | PC5 output | PD3 |
+| Bluetooth power | | PD5 output (low: power on) |
+| LED 0 | | PF4 |
+| LED 2 | | PF1 |
+| LED 4 | | PF0 |
+| Unused for PRO2 | PC6 | |
+| Unused for PRO2 | PC7 | |
+| Inner USB power | | PF7 |
+
+## How to flash LUFA MassStorage bootloader on Linux
+
+The FAT filesystem on Linux very often cannot flush the write cache,
+leading to broken firmware in the flash.
+
+We can use `dd` to write to the virtual block storage directly to
+bypass the vfs layer.
+
+```
+dd if=FLASH.bin of=<path of virtual block device> seek=4
+```
+
+Skip 4 sectors because the default sector size of the virtual device
+and dd is 512 bytes and the emulated flash file starts at 5th sector.
+
+## How to find the path of the virtual block device
+
+After the keyboard boots into flash mode, on Linux system you should
+be able to find the block device in `dmesg` logs.
+
+For exmaple if you type
+
+```
+sudo dmesg
+```
+
+You should find something like
+
+```
+[357885.143593] usb 1-1.4: USB disconnect, device number 24
+[357885.627740] usb 1-1.4: new full-speed USB device number 25 using xhci_hcd
+[357885.729486] usb 1-1.4: New USB device found, idVendor=03eb, idProduct=1962, bcdDevice= 0.01
+[357885.729492] usb 1-1.4: New USB device strings: Mfr=0, Product=0, SerialNumber=0
+[357885.745620] SCSI subsystem initialized
+[357885.746712] usb-storage 1-1.4:1.0: USB Mass Storage device detected
+[357885.746818] scsi host0: usb-storage 1-1.4:1.0
+[357885.746919] usbcore: registered new interface driver usb-storage
+[357885.747689] usbcore: registered new interface driver uas
+[357886.766755] scsi 0:0:0:0: Direct-Access LUFA Bootloader 0.00 PQ: 0 ANSI: 0
+[357886.773216] scsi 0:0:0:0: Attached scsi generic sg0 type 0
+[357886.777474] sd 0:0:0:0: [sdx] 134 512-byte logical blocks: (68.6 kB/67.0 KiB)
+[357886.780300] sd 0:0:0:0: [sdx] Write Protect is off
+[357886.780302] sd 0:0:0:0: [sdx] Mode Sense: 00 00 00 00
+[357886.783113] sd 0:0:0:0: [sdx] Asking for cache data failed
+[357886.783114] sd 0:0:0:0: [sdx] Assuming drive cache: write through
+[357886.842676] sdx:
+[357886.859528] sd 0:0:0:0: [sdx] Attached SCSI removable disk
+```
+
+The `sdx` is the block device name and the full path is at `/dev/sdx`
+The above flash command will become
+
+```
+dd if=FLASH.bin of=/dev/sdx seek=4
+```
+
+## Adafruit Bluefruit LE UART configuraton
+
+The default baud rate used by the firmware is 76800 although adafruit
+do not recommend using higher baudrates than 9600 because the nRF51
+UART can drop characters.
+
+Double speed mode to get more accurate async reading because the F_CPU
+speed is 8MHz.
+
+## Power saving mode design
+
+Power saving is only enabled when USB is detached and using battery
+power. Here we define several levels of power saving mode, each saves
+more power but takes longer to resume operation.
+
+1. Level 1: idle mode is activated after a short configurable time
+ (MATRIX_POWER_SAVE_TIMEOUT_MS) MCU is put into sleep mode and only
+ scan the matrix per 15ms. PORTB pins are set to input with pull-up
+ to save power. Sensing PCB is powered down between scans.
+
+2. Level 2: after idling for longer (MATRIX_POWER_SAVE_TIMEOUT_L2_MS)
+ we entry this state. Matrix scan is skipped until the time lapses
+ 900ms.
+
+2. Level 3: sleep mode is activated after a longer timeout
+ (MATRIX_POWER_SAVE_TIMEOUT_L3_MS) Bluetooth module is powered down.
+
+## Battery reading
+
+VBAT is connected to AIN6 pin on the MDBT40 module and the AREF pin is
+the reference voltage. Doing a ADC with AT+HWDAC=6 will return the
+difference between VBAT and VREF.
+
+It seems when fully charged the ADC read is 550. Likely VREF is 3311mV
+and the fully charged VBAT is thus 3861mV.
+
+Enable battery service with AT+BLEBATTEN=1 first then we can update the
+battery level by using AT+BLEBATTVAL=%d
+
+## References
+
+* https://github.com/joric/qmk/wiki/hhkb_ble
+* https://github.com/tomsmalley/custom-topre-guide
+* https://github.com/abcminiuser/lufa/blob/master/Bootloaders/MassStorage/Lib/VirtualFAT.h
diff --git a/keyboards/hhkb/yang/readme.md b/keyboards/hhkb/yang/readme.md
new file mode 100644
index 0000000000..6f85c0f198
--- /dev/null
+++ b/keyboards/hhkb/yang/readme.md
@@ -0,0 +1,118 @@
+# HHKB Alternate Controller (YANG HHKB BLE Mod)
+
+![YANG HHKB BLE Mod](https://i.imgur.com/aZP1GYc.jpeg)
+
+An alternative controler for the HHKB designed by YANG (yangdigi)
+based on the hasu controller.
+
+* Keyboard Maintainer: [Kan-Ru Chen](https://github.com/kanru)
+* Hardware Supported: YANG HHKB BLE Controller
+* Hardware Availability: https://kbdfans.com/products/hhkb-ble-mod-upgrade-module
+
+Make example for this keyboard (after setting up your build environment):
+
+ make hhkb/yang:default
+
+To flash, first boot your keyboard into bootloader (hold ESC and attach usb cable)
+then a virtual USB storage should appear. You can copy the `hhkb_yang_default.bin`
+file to the virtual USB storage and override the `HHKB_BLE.BIN` file in there.
+
+Make sure to unmount and eject the virtual USB storage.
+
+## Features:
+
+- [x] QMK (via USB)
+- [x] Bluetooth (BLE)
+- [x] Power saving mode
+ - [x] Idle mode
+ - [x] Deep sleep mode
+- [x] LEDs
+- [x] Battery service
+- [x] Special commands
+ - [x] Switch BT peer
+
+## Entering flash mode
+
+Different ways to enter flash mode:
+
+* Press and hold the ESC key. Insert the USB cable to enter the flash
+ mode. When the OS shows the drive disk, you can release the key.
+
+* Use the magic command LSHIFT+RSHIFT+B to reboot to bootloader then
+ quickly hold the ESC key.
+
+If you reflash the wrong firmware or did not reflash successfully, you
+can no longer enter the flash mode, especially the wireless keyboard
+with battery. You need to turn off the keyboard's power switch, and
+re-enter the flash mode, reflash the correct firmware.
+
+After entering the bootloader(flash mode), three indicators on the top
+right of the HHKB BLE controller will flash. LED3(green) will flash
+quickly when writing firmware to the controller.
+
+If these three leds are not soldered or your hhkb case is black, you
+can't know their status, but you can still see LED3 under the right
+USB port.
+
+## How to reliably flash LUFA MassStorage bootloader on Linux
+
+The FAT filesystem on Linux very often cannot flush the write cache,
+leading to broken firmware in the flash.
+
+We can use `dd` to write to the virtual block storage directly to
+bypass the vfs layer.
+
+```
+dd if=FLASH.bin of=<path of virtual block device> seek=4
+```
+
+Skip 4 sectors because the default sector size of the virtual device
+and dd is 512 bytes and the emulated flash file starts at 5th sector.
+
+## How to find the path of the virtual block device
+
+After the keyboard boots into flash mode, on Linux system you should
+be able to find the block device in `dmesg` logs.
+
+For exmaple if you type
+
+```
+sudo dmesg
+```
+
+You should find something like
+
+```
+[357885.143593] usb 1-1.4: USB disconnect, device number 24
+[357885.627740] usb 1-1.4: new full-speed USB device number 25 using xhci_hcd
+[357885.729486] usb 1-1.4: New USB device found, idVendor=03eb, idProduct=1962, bcdDevice= 0.01
+[357885.729492] usb 1-1.4: New USB device strings: Mfr=0, Product=0, SerialNumber=0
+[357885.745620] SCSI subsystem initialized
+[357885.746712] usb-storage 1-1.4:1.0: USB Mass Storage device detected
+[357885.746818] scsi host0: usb-storage 1-1.4:1.0
+[357885.746919] usbcore: registered new interface driver usb-storage
+[357885.747689] usbcore: registered new interface driver uas
+[357886.766755] scsi 0:0:0:0: Direct-Access LUFA Bootloader 0.00 PQ: 0 ANSI: 0
+[357886.773216] scsi 0:0:0:0: Attached scsi generic sg0 type 0
+[357886.777474] sd 0:0:0:0: [sdx] 134 512-byte logical blocks: (68.6 kB/67.0 KiB)
+[357886.780300] sd 0:0:0:0: [sdx] Write Protect is off
+[357886.780302] sd 0:0:0:0: [sdx] Mode Sense: 00 00 00 00
+[357886.783113] sd 0:0:0:0: [sdx] Asking for cache data failed
+[357886.783114] sd 0:0:0:0: [sdx] Assuming drive cache: write through
+[357886.842676] sdx:
+[357886.859528] sd 0:0:0:0: [sdx] Attached SCSI removable disk
+```
+
+The `sdx` is the block device name and the full path is at `/dev/sdx`
+The above flash command will become
+
+```
+dd if=FLASH.bin of=/dev/sdx seek=4
+```
+
+**Caution**: if set to incorrect device it may wipe out
+your actual disk.
+
+## Help page of original firmware
+
+http://help.ydkb.io/doku.php?id=en:kb-mods:hhkb-ble
diff --git a/keyboards/hhkb/yang/rules.mk b/keyboards/hhkb/yang/rules.mk
new file mode 100644
index 0000000000..6027a07176
--- /dev/null
+++ b/keyboards/hhkb/yang/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+MCU = atmega32u4
+
+# MCU frequency
+F_CPU = 8000000
+
+# Bootloader selection
+BOOTLOADER = lufa-ms
+
+# 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 # USB Nkey Rollover
+
+LAYOUTS = 60_hhkb
+
+# Disable bluetooth until the UART code is merged
+BLUETOOTH_DRIVER = BluefruitLE
+
+# Custom matrix file for the HHKB
+CUSTOM_MATRIX = lite
+SRC += matrix.c
diff --git a/keyboards/hhkb/yang/yang.c b/keyboards/hhkb/yang/yang.c
new file mode 100644
index 0000000000..7ae0d76390
--- /dev/null
+++ b/keyboards/hhkb/yang/yang.c
@@ -0,0 +1,118 @@
+/* Copyright 2021 Kan-Ru Chen <kanru@kanru.info>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "yang.h"
+
+extern uint8_t power_save_level;
+
+void hhkb_led_on(uint8_t led) {
+ switch (led) {
+ case 1:
+ writePinHigh(F4);
+ break;
+ case 2:
+ writePinHigh(F2);
+ break;
+ case 3:
+ writePinHigh(F0);
+ break;
+ }
+}
+
+void hhkb_led_off(uint8_t led) {
+ switch (led) {
+ case 1:
+ writePinLow(F4);
+ break;
+ case 2:
+ writePinLow(F2);
+ break;
+ case 3:
+ writePinLow(F0);
+ break;
+ }
+}
+
+void keyboard_pre_init_kb(void) {
+ // BT power up
+ setPinOutput(D5);
+ writePinLow(D5);
+
+ // Row selectors
+ setPinOutput(B0);
+ setPinOutput(B1);
+ setPinOutput(B2);
+
+ // Col selectors
+ setPinOutput(B3);
+ setPinOutput(B4);
+ setPinOutput(B5);
+
+ // Key strobe
+ setPinOutput(B6);
+ writePinHigh(B6);
+
+ // Key: input with pull-up
+ setPinInputHigh(D7);
+
+ // Unused pins on Pro2 ANSI
+ // Input with pull up to save power
+ setPinInputHigh(C6);
+ setPinInputHigh(C7);
+
+ // LED pin configuration
+ setPinOutput(F0);
+ setPinOutput(F1);
+ setPinOutput(F4);
+ writePinLow(F0);
+ writePinLow(F1);
+ writePinLow(F4);
+
+ // Turn on switch PCB
+ setPinOutput(D6);
+ writePinLow(D6);
+
+ keyboard_pre_init_user();
+}
+
+void suspend_power_down_kb(void) {
+ if (power_save_level > 2) {
+ // Disable UART TX to avoid current leakage
+ UCSR1B &= ~_BV(TXEN1);
+ // Power down BLE module
+ writePinHigh(D5);
+ }
+
+ suspend_power_down_user();
+}
+
+void suspend_wakeup_init_kb(void) {
+ // Power up BLE module
+ writePinLow(D5);
+ // Enable UART TX
+ UCSR1B |= _BV(TXEN1);
+
+ suspend_wakeup_init_user();
+}
+
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ state = layer_state_set_user(state);
+
+ writePin(F1, IS_LAYER_ON_STATE(state, 1));
+ writePin(F0, IS_LAYER_ON_STATE(state, 2));
+
+ return state;
+}
diff --git a/keyboards/hhkb/yang/yang.h b/keyboards/hhkb/yang/yang.h
new file mode 100644
index 0000000000..4858c18554
--- /dev/null
+++ b/keyboards/hhkb/yang/yang.h
@@ -0,0 +1,36 @@
+/* Copyright 2021 Kan-Ru Chen <kanru@kanru.info>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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_hhkb( \
+ K31, K30, K00, K10, K11, K20, K21, K40, K41, K60, K61, K70, K71, K50, K51, \
+ K32, K01, K02, K13, K12, K23, K22, K42, K43, K62, K63, K73, K72, K52, \
+ K33, K04, K03, K14, K15, K24, K25, K45, K44, K65, K64, K74, K53, \
+ K34, K05, K06, K07, K16, K17, K26, K46, K66, K76, K75, K55, K54, \
+ K35, K36, K37, K57, K56) \
+ \
+{ \
+ { 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, K46, KC_NO }, \
+ { K50, K51, K52, K53, K54, K55, K56, K57 }, \
+ { K60, K61, K62, K63, K64, K65, K66, KC_NO }, \
+ { K70, K71, K72, K73, K74, K75, K76, KC_NO } \
+}
diff --git a/keyboards/hhkb_lite_2/config.h b/keyboards/hhkb_lite_2/config.h
index d9dd641951..c264169d5b 100644
--- a/keyboards/hhkb_lite_2/config.h
+++ b/keyboards/hhkb_lite_2/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x88B2
-#define PRODUCT_ID 0x88B2
-#define DEVICE_VER 0x0002
-#define MANUFACTURER PFU
-#define PRODUCT HHKB Lite 2
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 14
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F5, F4, F1, F0, B0, B1, B2, B3 }
#define MATRIX_COL_PINS { F6, F7, B6, B5, B4, D7, D6, D4, D5, C7, C6, D3, D2, D1}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hhkb_lite_2/info.json b/keyboards/hhkb_lite_2/info.json
index 0793adafd1..bceac58ba4 100644
--- a/keyboards/hhkb_lite_2/info.json
+++ b/keyboards/hhkb_lite_2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "HHKB Lite 2",
+ "manufacturer": "PFU",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x88B2",
+ "pid": "0x88B2",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/hidtech/bastyl/config.h b/keyboards/hidtech/bastyl/config.h
index f89e993abe..22bdc6c8bd 100644
--- a/keyboards/hidtech/bastyl/config.h
+++ b/keyboards/hidtech/bastyl/config.h
@@ -18,11 +18,6 @@
#pragma once
#include "config_common.h"
-#define VENDOR_ID 0xA8F7
-#define PRODUCT_ID 0x1827
-#define DEVICE_VER 0x0001
-#define MANUFACTURER HID Technologies
-#define PRODUCT Bastyl
#define MATRIX_ROWS 10
#define MATRIX_COLS 6
diff --git a/keyboards/hidtech/bastyl/info.json b/keyboards/hidtech/bastyl/info.json
index 5730cf5af2..a15d5efcf0 100644
--- a/keyboards/hidtech/bastyl/info.json
+++ b/keyboards/hidtech/bastyl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Bastyl",
+ "manufacturer": "HID Technologies",
"url": "https://www.hidtech.ca/?product=bastyl-black",
"maintainer": "HID-Technologies",
+ "usb": {
+ "vid": "0xA8F7",
+ "pid": "0x1827",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/hidtech/bastyl/keymaps/german_gaming/keymap.c b/keyboards/hidtech/bastyl/keymaps/german_gaming/keymap.c
index 0b986a5099..16844a6c6e 100644
--- a/keyboards/hidtech/bastyl/keymaps/german_gaming/keymap.c
+++ b/keyboards/hidtech/bastyl/keymaps/german_gaming/keymap.c
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_PLUS, KC_PIPE, KC_UNDS, _______, _______, KC_P0 , KC_P1 , KC_P2 , KC_P3 , KC_PENT, KC_KP_EQUAL,
_______, KC_RGHT, _______, _______, _______, _______,
- KC_LEFT, _______, RESET , _______
+ KC_LEFT, _______, QK_BOOT, _______
),
[_RAISE] = LAYOUT(
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, RESET , _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, DF(_GAME), _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, DF(_BASE), _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/hidtech/bastyl/keymaps/nstickney/keymap.c b/keyboards/hidtech/bastyl/keymaps/nstickney/keymap.c
index 507dd0b151..96d94d253c 100644
--- a/keyboards/hidtech/bastyl/keymaps/nstickney/keymap.c
+++ b/keyboards/hidtech/bastyl/keymaps/nstickney/keymap.c
@@ -65,6 +65,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//-------------------------------//
_______, KC_MPRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_MNXT, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, _______,
//-------------------------------//
- RESET, _______, _______, _______, _______, RESET,
+ QK_BOOT, _______, _______, _______, _______, QK_BOOT,
//-------------------------------//
_______, KC_F11, KC_F12, _______)};
diff --git a/keyboards/hidtech/bastyl/keymaps/xyverz/keymap.c b/keyboards/hidtech/bastyl/keymaps/xyverz/keymap.c
index 0ed6ca94e7..cb575caf88 100644
--- a/keyboards/hidtech/bastyl/keymaps/xyverz/keymap.c
+++ b/keyboards/hidtech/bastyl/keymaps/xyverz/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT(
KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
- RESET, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
+ QK_BOOT, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_PGUP, _______, KC_PLUS, KC_LCBR, KC_RCBR, _______,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, KC_DEL, _______, _______, _______, _______,
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_RAISE] = LAYOUT(
KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
- _______, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, RESET,
+ _______, _______, _______, KC_UP, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, QK_BOOT,
KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_PGUP, _______, KC_EQL, KC_LBRC, KC_RBRC, _______,
_______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_END, KC_PGDN, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, KC_DEL, _______, _______, _______, _______,
@@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, WINDOWS, MAC, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
diff --git a/keyboards/hifumi/config.h b/keyboards/hifumi/config.h
index cdbc9ea4f1..3475843da2 100644
--- a/keyboards/hifumi/config.h
+++ b/keyboards/hifumi/config.h
@@ -18,13 +18,6 @@ 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 0x3060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER riconken
-#define PRODUCT hifumi
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
@@ -41,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6 }
#define MATRIX_COL_PINS { F4, F5, F6 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/hifumi/info.json b/keyboards/hifumi/info.json
index 27310fc8ef..5f9821a7d8 100644
--- a/keyboards/hifumi/info.json
+++ b/keyboards/hifumi/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "hifumi",
+ "manufacturer": "riconken",
"url": "https://github.com/zk-phi/1x2x3-keyboard",
"maintainer": "riconken",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"F5", "x":0, "y":0}, {"label":"Up", "x":1, "y":0}, {"label":"PrSc", "x":2, "y":0}, {"label":"Left", "x":0, "y":1}, {"label":"Down", "x":1, "y":1}, {"label":"Right", "x":2, "y":1}]
diff --git a/keyboards/hineybush/h08_ocelot/config.h b/keyboards/hineybush/h08_ocelot/config.h
index 80f1a1df1e..2499e4ba50 100644
--- a/keyboards/hineybush/h08_ocelot/config.h
+++ b/keyboards/hineybush/h08_ocelot/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4, B6 }
#define MATRIX_COL_PINS { F4, C7, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hineybush/h08_ocelot/info.json b/keyboards/hineybush/h08_ocelot/info.json
index 2e8dd25a87..94de718a3e 100644
--- a/keyboards/hineybush/h08_ocelot/info.json
+++ b/keyboards/hineybush/h08_ocelot/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "h08",
+ "manufacturer": "Hiney LLC",
"url": "",
"maintainer": "hineybush",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE8E9",
+ "device_version": "0.0.1"
+ },
"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/readme.md b/keyboards/hineybush/h08_ocelot/readme.md
index 07d170101c..fd44f4263d 100644
--- a/keyboards/hineybush/h08_ocelot/readme.md
+++ b/keyboards/hineybush/h08_ocelot/readme.md
@@ -14,7 +14,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/hineybush/h10/config.h b/keyboards/hineybush/h10/config.h
index eafcd95eef..2f8fb70069 100644
--- a/keyboards/hineybush/h10/config.h
+++ b/keyboards/hineybush/h10/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEBD8
-#define DEVICE_VER 0x0001
-#define MANUFACTURER hineybush
-#define PRODUCT h10
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, C6, B6, B5, B4, D7 }
#define MATRIX_COL_PINS { F0, C7, B1, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hineybush/h10/info.json b/keyboards/hineybush/h10/info.json
index ecc8bd4c39..6570e0af49 100644
--- a/keyboards/hineybush/h10/info.json
+++ b/keyboards/hineybush/h10/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "h10",
+ "manufacturer": "hineybush",
"url": "",
"maintainer": "hineybush",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEBD8",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_6x4": {
"layout": [
diff --git a/keyboards/hineybush/h60/config.h b/keyboards/hineybush/h60/config.h
index 00c238a860..f2205d1121 100644
--- a/keyboards/hineybush/h60/config.h
+++ b/keyboards/hineybush/h60/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEBBE
-#define DEVICE_VER 0x0001
-#define MANUFACTURER hineybush keyboards
-#define PRODUCT h60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { B6, B5, B4, D7, E6 }
#define MATRIX_COL_PINS { B3, D0, D1, D2, D3, D5, D6, C7, F0, F1, F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hineybush/h60/info.json b/keyboards/hineybush/h60/info.json
index 81b4757a77..b32da796d7 100644
--- a/keyboards/hineybush/h60/info.json
+++ b/keyboards/hineybush/h60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "h60",
+ "manufacturer": "hineybush",
"url": "",
"maintainer": "hineybush",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEBBE",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/hineybush/h60/keymaps/kei/keymap.c b/keyboards/hineybush/h60/keymaps/kei/keymap.c
index 528e1ac970..30a289b9ff 100644
--- a/keyboards/hineybush/h60/keymaps/kei/keymap.c
+++ b/keyboards/hineybush/h60/keymaps/kei/keymap.c
@@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT),
[_FN] = LAYOUT_60_hhkb(
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, 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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_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),
diff --git a/keyboards/hineybush/h65/config.h b/keyboards/hineybush/h65/config.h
index 19c9c5b5d8..f4f3900afe 100644
--- a/keyboards/hineybush/h65/config.h
+++ b/keyboards/hineybush/h65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/hineybush/h65/info.json b/keyboards/hineybush/h65/info.json
index dcca3f4868..500843fe07 100644
--- a/keyboards/hineybush/h65/info.json
+++ b/keyboards/hineybush/h65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "h65",
+ "manufacturer": "Hiney LLC",
"url": "",
"maintainer": "hineybush",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE9E4",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/hineybush/h65/readme.md b/keyboards/hineybush/h65/readme.md
index c793a44966..91a15c6222 100644
--- a/keyboards/hineybush/h65/readme.md
+++ b/keyboards/hineybush/h65/readme.md
@@ -14,7 +14,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/hineybush/h65_hotswap/config.h b/keyboards/hineybush/h65_hotswap/config.h
index f266003a88..f4f3900afe 100644
--- a/keyboards/hineybush/h65_hotswap/config.h
+++ b/keyboards/hineybush/h65_hotswap/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/hineybush/h65_hotswap/info.json b/keyboards/hineybush/h65_hotswap/info.json
index 46b5192d68..c2472e6879 100644
--- a/keyboards/hineybush/h65_hotswap/info.json
+++ b/keyboards/hineybush/h65_hotswap/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "h65 hotswap",
+ "manufacturer": "Hiney LLC",
"url": "",
"maintainer": "hineybush",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE8B7",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
diff --git a/keyboards/hineybush/h65_hotswap/readme.md b/keyboards/hineybush/h65_hotswap/readme.md
index 5e2250b5af..591b25b337 100644
--- a/keyboards/hineybush/h65_hotswap/readme.md
+++ b/keyboards/hineybush/h65_hotswap/readme.md
@@ -14,7 +14,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/hineybush/h660s/config.h b/keyboards/hineybush/h660s/config.h
index 45a1c53508..582c1b0958 100644
--- a/keyboards/hineybush/h660s/config.h
+++ b/keyboards/hineybush/h660s/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEB1B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER hineybush keyboards
-#define PRODUCT h660s
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B1, E6, B3, D3, D2 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hineybush/h660s/info.json b/keyboards/hineybush/h660s/info.json
index 6671a8d777..f3a5f7aaf4 100644
--- a/keyboards/hineybush/h660s/info.json
+++ b/keyboards/hineybush/h660s/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "h660-s",
+ "keyboard_name": "h660s",
+ "manufacturer": "hineybush",
"url": "",
"maintainer": "Josh Hinnebusch",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEB1B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_66_ansi": {
"layout": [
diff --git a/keyboards/hineybush/h75_singa/config.h b/keyboards/hineybush/h75_singa/config.h
index c8b3ab7285..f1428d0b19 100644
--- a/keyboards/hineybush/h75_singa/config.h
+++ b/keyboards/hineybush/h75_singa/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEC9A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Singa Keyboards
-#define PRODUCT h75_singa
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, D0, D1, D2, D6 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, B2, D4, D5, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hineybush/h75_singa/info.json b/keyboards/hineybush/h75_singa/info.json
index 89a3c34667..ba2f50b355 100644
--- a/keyboards/hineybush/h75_singa/info.json
+++ b/keyboards/hineybush/h75_singa/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "h75_singa",
+ "manufacturer": "Singa Keyboards",
"url": "",
"maintainer": "hineybush",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEC9A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"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":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "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", "x":13, "y":1}, {"x":14, "y":1}, {"label":"Home", "x":15, "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":"Page Up", "x":15, "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}, {"x":12.75, "y":3}, {"label":"Enter", "x":13.75, "y":3, "w":1.25}, {"label":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":1.25}, {"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":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":2.75}, {"x":6.5, "y":5, "w":1.25}, {"x":7.75, "y":5, "w":2.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}]
diff --git a/keyboards/hineybush/h75_singa/keymaps/wkl_std/keymap.c b/keyboards/hineybush/h75_singa/keymaps/wkl_std/keymap.c
index 694d851d94..3b3aa15679 100644
--- a/keyboards/hineybush/h75_singa/keymaps/wkl_std/keymap.c
+++ b/keyboards/hineybush/h75_singa/keymaps/wkl_std/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_wkl_std(
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,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, RESET, 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, QK_BOOT, 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,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,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/h87a/config.h b/keyboards/hineybush/h87a/config.h
index e6aeb38707..1200dbd9fb 100644
--- a/keyboards/hineybush/h87a/config.h
+++ b/keyboards/hineybush/h87a/config.h
@@ -15,13 +15,6 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xECE9
-#define DEVICE_VER 0x0001
-#define MANUFACTURER hineybush keyboards
-#define PRODUCT h87a
-
#define CONFIG_H
#include "config_common.h"
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, D0, D1, B5, B6, D7, B4, D6, D4 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hineybush/h87a/info.json b/keyboards/hineybush/h87a/info.json
index 40f844335a..e9164edfcd 100644
--- a/keyboards/hineybush/h87a/info.json
+++ b/keyboards/hineybush/h87a/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "h87a",
+ "manufacturer": "hineybush",
"url": "",
"maintainer": "hineybush",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xECE9",
+ "device_version": "0.0.1"
+ },
"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}, {"x":13, "y":1.5}, {"label":"Bksp", "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}, {"x":12.75, "y":3.5}, {"label":"Enter", "x":13.75, "y":3.5, "w":1.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":1.75}, {"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":"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/hineybush/h87a/keymaps/gam3cat/keymap.c b/keyboards/hineybush/h87a/keymaps/gam3cat/keymap.c
index d59438f6b3..8a0013b55e 100644
--- a/keyboards/hineybush/h87a/keymaps/gam3cat/keymap.c
+++ b/keyboards/hineybush/h87a/keymaps/gam3cat/keymap.c
@@ -183,7 +183,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* *-----------------------------------------------------------------------*
*/
[_AL] = LAYOUT_all( \
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
QMK_REV, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, XXXXXXX, BL_TOGG, BL_DEC, BL_INC, XXXXXXX, XXXXXXX, XXXXXXX, KC_DMR1, KC_DMP1, \
_______, DF(_BL), DF(_WL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DMRS, KC_DMR2, KC_DMP2, \
XXXXXXX, XXXXXXX, XXXXXXX, DF(_DL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
@@ -245,7 +245,7 @@ void matrix_scan_user(void) {
}
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _BL:
custom_backlight_level(0);
rgblight_sethsv_noeeprom(180,100,255);
diff --git a/keyboards/hineybush/h87a/keymaps/peott-fr/keymap.c b/keyboards/hineybush/h87a/keymaps/peott-fr/keymap.c
index 985baca2a7..8e3c1efcb7 100644
--- a/keyboards/hineybush/h87a/keymaps/peott-fr/keymap.c
+++ b/keyboards/hineybush/h87a/keymaps/peott-fr/keymap.c
@@ -23,5 +23,5 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(KC_NO, KC_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_ESC, KC_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_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_BSPC, 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_ENT, 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, LT(2,KC_HOME), KC_UP, LCTL_T(KC_MPRV), LGUI_T(KC_MPLY), LALT_T(KC_MNXT), LT(1,KC_SPC), KC_RALT, KC_RGUI, KC_APP, RCTL_T(KC_END), 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, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, 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_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MYCM, KC_TRNS, KC_ENT, KC_BSPC, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_VOLU, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
- [2] = LAYOUT_all(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, 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, RGB_TOG, RGB_MOD, RGB_HUI, KC_NO, KC_NO, 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_SAI, RGB_VAI, RGB_SPI, 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_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO)
+ [2] = LAYOUT_all(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, QK_BOOT, KC_NO, KC_NO, KC_NO, 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_TOG, RGB_MOD, RGB_HUI, KC_NO, KC_NO, 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_SAI, RGB_VAI, RGB_SPI, 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_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO)
}; \ No newline at end of file
diff --git a/keyboards/hineybush/h88/config.h b/keyboards/hineybush/h88/config.h
index 89af18b6e3..79481fbb0a 100644
--- a/keyboards/hineybush/h88/config.h
+++ b/keyboards/hineybush/h88/config.h
@@ -19,15 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xECA2
-#define DEVICE_VER 0x0001
-#define MANUFACTURER hineybush keyboards
-#define PRODUCT h88
-
-
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -44,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, D0, D1, B5, B6, D7, B4, D6, D4 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hineybush/h88/info.json b/keyboards/hineybush/h88/info.json
index 07aa168f48..559e7a2027 100644
--- a/keyboards/hineybush/h88/info.json
+++ b/keyboards/hineybush/h88/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "h88a",
+ "keyboard_name": "h88",
+ "manufacturer": "hineybush",
"url": "",
"maintainer": "hineybush",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xECA2",
+ "device_version": "0.0.1"
+ },
"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":"F13", "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}, {"x":13, "y":1.25}, {"label":"Bksp", "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}, {"x":12.75, "y":3.25}, {"label":"Enter", "x":13.75, "y":3.25, "w":1.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"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}, {"x":14, "y":4.25}, {"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":"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/hineybush/hbcp/config.h b/keyboards/hineybush/hbcp/config.h
index 5b7948883b..a92ddc1aa8 100644
--- a/keyboards/hineybush/hbcp/config.h
+++ b/keyboards/hineybush/hbcp/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xECE8
-#define DEVICE_VER 0x0001
-#define MANUFACTURER hineybush keyboards
-#define PRODUCT hbcp
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B1, B6, D0, C7, C6, C5 }
#define MATRIX_COL_PINS { F0, F1, F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, B5, B4, B3, B2 }
-#define UNUSED_PINS
//EITHERWAY is supported through a custom matrix
//#define DIODE_DIRECTION EITHERWAY
diff --git a/keyboards/hineybush/hbcp/info.json b/keyboards/hineybush/hbcp/info.json
index d6f7c84bbc..d63e293bb5 100644
--- a/keyboards/hineybush/hbcp/info.json
+++ b/keyboards/hineybush/hbcp/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "hbcp",
+ "manufacturer": "hineybush",
"url": "",
"maintainer": "hineybush",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xECE8",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c b/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c
index bcfb9ed5bc..aff976549d 100644
--- a/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c
+++ b/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_wkl(
KC_TRNS, KC_TRNS, 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_SLCK,KC_HOME, 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, RGB_HUD, RGB_HUI,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, RGB_SAD, RGB_SAI,KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, QK_BOOT ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_SAI,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, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, RGB_TOG, RGB_MOD,KC_TRNS,
KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT, KC_TRNS,KC_TRNS, KC_TRNS
diff --git a/keyboards/hineybush/hineyg80/config.h b/keyboards/hineybush/hineyg80/config.h
index 1567609ff7..4014bc804f 100644
--- a/keyboards/hineybush/hineyg80/config.h
+++ b/keyboards/hineybush/hineyg80/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER hineybush
-#define PRODUCT hineyG80
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B2, B3, D0, B1, D2, D1, D5, D3, D6, D4, B4, D7 }
#define MATRIX_COL_PINS { C7, F7, F6, F5, F4, F1, F0, B7, B0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hineybush/hineyg80/info.json b/keyboards/hineybush/hineyg80/info.json
index 68462b827e..40c54ebe40 100644
--- a/keyboards/hineybush/hineyg80/info.json
+++ b/keyboards/hineybush/hineyg80/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "hineyg80",
+ "keyboard_name": "hineyG80",
+ "manufacturer": "hineybush",
"url": "",
"maintainer": "hineybush",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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":"Pause", "x":15.5, "y":0}, {"label":"Insert", "x":16.5, "y":0}, {"label":"Home", "x":17.5, "y":0}, {"label":"PgUp", "x":18.5, "y":0}, {"label":"Scroll Lock", "x":15.5, "y":1}, {"label":"Delete", "x":16.5, "y":1}, {"label":"End", "x":17.5, "y":1}, {"label":"PgDn", "x":18.5, "y":1}, {"label":"~", "x":0, "y":2}, {"label":"!", "x":1, "y":2}, {"label":"@", "x":2, "y":2}, {"label":"#", "x":3, "y":2}, {"label":"$", "x":4, "y":2}, {"label":"%", "x":5, "y":2}, {"label":"^", "x":6, "y":2}, {"label":"&", "x":7, "y":2}, {"label":"*", "x":8, "y":2}, {"label":"(", "x":9, "y":2}, {"label":")", "x":10, "y":2}, {"label":"_", "x":11, "y":2}, {"label":"+", "x":12, "y":2}, {"label":"Bksp", "x":13, "y":2}, {"x":14, "y":2}, {"label":"Num Lock", "x":15.5, "y":2}, {"label":"/", "x":16.5, "y":2}, {"label":"*", "x":17.5, "y":2}, {"label":"-", "x":18.5, "y":2}, {"label":"Tab", "x":0, "y":3, "w":1.5}, {"label":"Q", "x":1.5, "y":3}, {"label":"W", "x":2.5, "y":3}, {"label":"E", "x":3.5, "y":3}, {"label":"R", "x":4.5, "y":3}, {"label":"T", "x":5.5, "y":3}, {"label":"Y", "x":6.5, "y":3}, {"label":"U", "x":7.5, "y":3}, {"label":"I", "x":8.5, "y":3}, {"label":"O", "x":9.5, "y":3}, {"label":"P", "x":10.5, "y":3}, {"label":"{", "x":11.5, "y":3}, {"label":"}", "x":12.5, "y":3}, {"label":"|", "x":13.5, "y":3, "w":1.5}, {"label":"7", "x":15.5, "y":3}, {"label":"8", "x":16.5, "y":3}, {"label":"9", "x":17.5, "y":3}, {"label":"+", "x":18.5, "y":3}, {"label":"Caps Lock", "x":0, "y":4, "w":1.75}, {"label":"A", "x":1.75, "y":4}, {"label":"S", "x":2.75, "y":4}, {"label":"D", "x":3.75, "y":4}, {"label":"F", "x":4.75, "y":4}, {"label":"G", "x":5.75, "y":4}, {"label":"H", "x":6.75, "y":4}, {"label":"J", "x":7.75, "y":4}, {"label":"K", "x":8.75, "y":4}, {"label":"L", "x":9.75, "y":4}, {"label":":", "x":10.75, "y":4}, {"label":"\"", "x":11.75, "y":4}, {"x":12.75, "y":4}, {"label":"Enter", "x":13.75, "y":4, "w":1.25}, {"label":"4", "x":15.5, "y":4}, {"label":"5", "x":16.5, "y":4}, {"label":"6", "x":17.5, "y":4}, {"x":18.5, "y":4}, {"label":"Shift", "x":0, "y":5, "w":1.25}, {"x":1.25, "y":5}, {"label":"Z", "x":2.25, "y":5}, {"label":"X", "x":3.25, "y":5}, {"label":"C", "x":4.25, "y":5}, {"label":"V", "x":5.25, "y":5}, {"label":"B", "x":6.25, "y":5}, {"label":"N", "x":7.25, "y":5}, {"label":"M", "x":8.25, "y":5}, {"label":"<", "x":9.25, "y":5}, {"label":">", "x":10.25, "y":5}, {"label":"?", "x":11.25, "y":5}, {"label":"Shift", "x":12.25, "y":5, "w":1.75}, {"label":"\u2191", "x":14.25, "y":5.25}, {"label":"1", "x":15.5, "y":5}, {"label":"2", "x":16.5, "y":5}, {"label":"3", "x":17.5, "y":5}, {"label":"Enter", "x":18.5, "y":5, "h":2}, {"label":"Ctrl", "x":0, "y":6}, {"label":"Win", "x":1, "y":6}, {"label":"Alt", "x":2, "y":6}, {"x":3, "y":6, "w":6}, {"label":"Alt", "x":9, "y":6}, {"label":"Win", "x":10, "y":6}, {"label":"Menu", "x":11, "y":6}, {"label":"Ctrl", "x":12, "y":6}, {"label":"\u2190", "x":13.25, "y":6.25}, {"label":"\u2193", "x":14.25, "y":6.25}, {"label":"\u2192", "x":15.25, "y":6.25}, {"label":"0", "x":16.5, "y":6}, {"label":".", "x":17.5, "y":6}]
diff --git a/keyboards/hineybush/ibis/readme.md b/keyboards/hineybush/ibis/readme.md
index 0c345e7c81..e20be2e7f6 100644
--- a/keyboards/hineybush/ibis/readme.md
+++ b/keyboards/hineybush/ibis/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/hineybush/physix/config.h b/keyboards/hineybush/physix/config.h
index 87c49270b3..6557696f89 100644
--- a/keyboards/hineybush/physix/config.h
+++ b/keyboards/hineybush/physix/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEC81
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LZ
-#define PRODUCT PhysiX
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, C7, C6 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B3, B2, B1, B0, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS { B6 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hineybush/physix/info.json b/keyboards/hineybush/physix/info.json
index 4d5133945f..274f9bb725 100644
--- a/keyboards/hineybush/physix/info.json
+++ b/keyboards/hineybush/physix/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "physix",
+ "keyboard_name": "PhysiX",
+ "manufacturer": "LZ",
"url": "",
"maintainer": "hineybush",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEC81",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/hineybush/sm68/config.h b/keyboards/hineybush/sm68/config.h
index 89541179c2..62de4db381 100644
--- a/keyboards/hineybush/sm68/config.h
+++ b/keyboards/hineybush/sm68/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEC9F
-#define DEVICE_VER 0x0001
-#define MANUFACTURER hineybush keyboards
-#define PRODUCT sm68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B2, B1, B0, D4, D1 }
#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D3, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hineybush/sm68/info.json b/keyboards/hineybush/sm68/info.json
index ec4227af86..a3b9e4c051 100644
--- a/keyboards/hineybush/sm68/info.json
+++ b/keyboards/hineybush/sm68/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "sm68",
+ "manufacturer": "hineybush",
"url": "",
"maintainer": "hineybush",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEC9F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_68_ansi_split_bs_rshift": {
"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}, {"x":13, "y":0}, {"x":14, "y":0}, {"label":"Insert", "x":15.5, "y":0}, {"x":16.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.5, "y":1}, {"x":16.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":"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}, {"x":14, "y":3}, {"label":"\u2191", "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":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":"Ctrl", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"\u2190", "x":14.5, "y":4}, {"label":"\u2193", "x":15.5, "y":4}, {"label":"\u2192", "x":16.5, "y":4}]
diff --git a/keyboards/hnahkb/freyr/config.h b/keyboards/hnahkb/freyr/config.h
index 9658793aa2..57abe3e37e 100644
--- a/keyboards/hnahkb/freyr/config.h
+++ b/keyboards/hnahkb/freyr/config.h
@@ -19,13 +19,6 @@ 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 0x1895
-#define DEVICE_VER 0x0002
-#define MANUFACTURER HnahKB
-#define PRODUCT Freyr
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, B2, B1, B0, E6, F0, D2, D5, F4, F1 }
#define MATRIX_COL_PINS { B4, D7, D6, D4, B5, C7, C6, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hnahkb/freyr/info.json b/keyboards/hnahkb/freyr/info.json
index e2b1c6c2c0..4bb8ae739d 100644
--- a/keyboards/hnahkb/freyr/info.json
+++ b/keyboards/hnahkb/freyr/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "freyr",
+ "keyboard_name": "Freyr",
+ "manufacturer": "HnahKB",
"url": "",
"maintainer": "vuhopkep",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1895",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/hnahkb/stella/config.h b/keyboards/hnahkb/stella/config.h
index 2ca475c38c..043c9933da 100644
--- a/keyboards/hnahkb/stella/config.h
+++ b/keyboards/hnahkb/stella/config.h
@@ -19,13 +19,6 @@ 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 0x0AB7
-#define DEVICE_VER 0x0001
-#define MANUFACTURER HnahKB
-#define PRODUCT Stella
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, B2, B1, B0, E6, F0, D2, D5, F4, F1 }
#define MATRIX_COL_PINS { B4, D7, D6, D4, B5, C7, C6, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hnahkb/stella/info.json b/keyboards/hnahkb/stella/info.json
index da36b6b264..bd3870bd4e 100644
--- a/keyboards/hnahkb/stella/info.json
+++ b/keyboards/hnahkb/stella/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Stella",
+ "manufacturer": "HnahKB",
"url": "",
"maintainer": "VGS",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0AB7",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/hnahkb/vn66/config.h b/keyboards/hnahkb/vn66/config.h
index 1f6387fafa..92fd3d456c 100644
--- a/keyboards/hnahkb/vn66/config.h
+++ b/keyboards/hnahkb/vn66/config.h
@@ -19,13 +19,6 @@ 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 0xCA2C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER HnahKB
-#define PRODUCT VN66
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B1, B2, B3, D2, F7 }
#define MATRIX_COL_PINS { F6, F5, F4, F1, F0, C6, C7, B5, B4, D7, D6, D4, D5, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/hnahkb/vn66/info.json b/keyboards/hnahkb/vn66/info.json
index a1063ce993..bff3ba596d 100644
--- a/keyboards/hnahkb/vn66/info.json
+++ b/keyboards/hnahkb/vn66/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "vn66",
+ "keyboard_name": "VN66",
+ "manufacturer": "HnahKB",
"url": "fb.com/groups/VietNamMechKey/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xCA2C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/holyswitch/southpaw75/config.h b/keyboards/holyswitch/southpaw75/config.h
index c9971625ad..eebe290e14 100644
--- a/keyboards/holyswitch/southpaw75/config.h
+++ b/keyboards/holyswitch/southpaw75/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x484F // "HO" short for Holy Switch
-#define PRODUCT_ID 0x5350 // "SP" short for Southpaw
-#define DEVICE_VER 0x0001
-#define MANUFACTURER drewguy
-#define PRODUCT southpaw default
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 9
diff --git a/keyboards/holyswitch/southpaw75/info.json b/keyboards/holyswitch/southpaw75/info.json
index ff993260ba..f96a75e3cc 100644
--- a/keyboards/holyswitch/southpaw75/info.json
+++ b/keyboards/holyswitch/southpaw75/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Southpaw75",
+ "keyboard_name": "southpaw default",
+ "manufacturer": "drewguy",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x484F",
+ "pid": "0x5350",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/horizon/config.h b/keyboards/horizon/config.h
index bb0a6dcbfc..65af08d288 100644
--- a/keyboards/horizon/config.h
+++ b/keyboards/horizon/config.h
@@ -19,20 +19,12 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Steven Karrmann
-#define PRODUCT Horizon
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { D3, D2, D1, F4 }
#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6, B5, B4, E6, D7, C6, D4, D0 }
-#define UNUSED_PINS { }
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/horizon/info.json b/keyboards/horizon/info.json
index ea5f9cb034..c0dc63c1f1 100644
--- a/keyboards/horizon/info.json
+++ b/keyboards/horizon/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Horizon",
+ "manufacturer": "Steven Karrmann",
"url": "https://github.com/skarrmann/horizon",
"maintainer": "Steven Karrmann",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/horizon/readme.md b/keyboards/horizon/readme.md
index 7999503fb5..1ac64b42ce 100644
--- a/keyboards/horizon/readme.md
+++ b/keyboards/horizon/readme.md
@@ -24,4 +24,4 @@ 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 top center of the PCB.
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
diff --git a/keyboards/horrortroll/chinese_pcb/black_e65/config.h b/keyboards/horrortroll/chinese_pcb/black_e65/config.h
index c3b5ff75a5..bcd38d62c7 100644
--- a/keyboards/horrortroll/chinese_pcb/black_e65/config.h
+++ b/keyboards/horrortroll/chinese_pcb/black_e65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7516
-#define PRODUCT_ID 0x6003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER HorrorTroll
-#define PRODUCT Black E6.5
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -45,9 +38,6 @@
/* Forcing to use NKRO instead 6KRO */
#define FORCE_NKRO
-/* Change larger keys per scan for elite gaming */
-#define QMK_KEYS_PER_SCAN 12
-
/* LED Indicator */
#define LED_CAPS_LOCK_PIN C7
diff --git a/keyboards/horrortroll/chinese_pcb/black_e65/info.json b/keyboards/horrortroll/chinese_pcb/black_e65/info.json
index 6e53613d4c..f08cdf109f 100644
--- a/keyboards/horrortroll/chinese_pcb/black_e65/info.json
+++ b/keyboards/horrortroll/chinese_pcb/black_e65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Devil68 Pro",
+ "keyboard_name": "Black E6.5",
+ "manufacturer": "HorrorTroll",
"url": "",
"maintainer": "HorrorTroll",
+ "usb": {
+ "vid": "0x7516",
+ "pid": "0x6003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/horrortroll/chinese_pcb/black_e65/readme.md b/keyboards/horrortroll/chinese_pcb/black_e65/readme.md
index 2a08ee20f3..115f91424b 100644
--- a/keyboards/horrortroll/chinese_pcb/black_e65/readme.md
+++ b/keyboards/horrortroll/chinese_pcb/black_e65/readme.md
@@ -21,4 +21,4 @@ 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**: 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h b/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h
index af7affbb83..8a227f3c49 100644
--- a/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/config.h
@@ -18,13 +18,6 @@
#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
@@ -45,9 +38,6 @@
/* Forcing to use NKRO instead 6KRO */
#define FORCE_NKRO
-/* Change larger keys per scan for elite gaming */
-#define QMK_KEYS_PER_SCAN 12
-
#ifdef RGB_MATRIX_ENABLE
#define DRIVER_LED_TOTAL 86
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/info.json b/keyboards/horrortroll/chinese_pcb/devil68_pro/info.json
index 9e7f4524a3..ff541f7ef2 100644
--- a/keyboards/horrortroll/chinese_pcb/devil68_pro/info.json
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Devil68 Pro",
+ "manufacturer": "HorrorTroll",
"url": "",
"maintainer": "HorrorTroll",
+ "usb": {
+ "vid": "0x7516",
+ "pid": "0x6001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/horrortroll/chinese_pcb/devil68_pro/readme.md b/keyboards/horrortroll/chinese_pcb/devil68_pro/readme.md
index 27bd974af4..0d486832b3 100644
--- a/keyboards/horrortroll/chinese_pcb/devil68_pro/readme.md
+++ b/keyboards/horrortroll/chinese_pcb/devil68_pro/readme.md
@@ -21,4 +21,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/horrortroll/handwired_k552/config.h b/keyboards/horrortroll/handwired_k552/config.h
index 3caaee51e5..d3c385f64e 100644
--- a/keyboards/horrortroll/handwired_k552/config.h
+++ b/keyboards/horrortroll/handwired_k552/config.h
@@ -18,13 +18,6 @@
#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
@@ -46,9 +39,6 @@
/* Forcing to use NKRO instead 6KRO */
#define FORCE_NKRO
-/* Change larger keys per scan for elite gaming */
-#define QMK_KEYS_PER_SCAN 12
-
/* EEPROM size */
#define EEPROM_PAGE_SIZE
#define FEE_PAGE_SIZE 0x800
diff --git a/keyboards/horrortroll/handwired_k552/info.json b/keyboards/horrortroll/handwired_k552/info.json
index 2db30bb552..825493738a 100644
--- a/keyboards/horrortroll/handwired_k552/info.json
+++ b/keyboards/horrortroll/handwired_k552/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Handwired K552 Kumara",
+ "keyboard_name": "K552 Kumara",
+ "manufacturer": "HorrorTroll",
"url": "",
"maintainer": "HorrorTroll",
+ "usb": {
+ "vid": "0x7516",
+ "pid": "0x5104",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/horrortroll/handwired_k552/readme.md b/keyboards/horrortroll/handwired_k552/readme.md
index 85e99f4cd4..e45cab9f9c 100644
--- a/keyboards/horrortroll/handwired_k552/readme.md
+++ b/keyboards/horrortroll/handwired_k552/readme.md
@@ -19,4 +19,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/horrortroll/lemon40/config.h b/keyboards/horrortroll/lemon40/config.h
index 8bc8f01d4c..c3e1972ae3 100644
--- a/keyboards/horrortroll/lemon40/config.h
+++ b/keyboards/horrortroll/lemon40/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7516
-#define PRODUCT_ID 0x2434
-#define DEVICE_VER 0x0001
-#define MANUFACTURER HorrorTroll
-#define PRODUCT Lemon40
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 7
@@ -45,9 +38,6 @@
/* Forcing to use NKRO instead 6KRO */
#define FORCE_NKRO
-/* Larger keys per scan */
-#define QMK_KEYS_PER_SCAN 12
-
/* RGB light config */
#ifdef RGBLIGHT_ENABLE
diff --git a/keyboards/horrortroll/lemon40/info.json b/keyboards/horrortroll/lemon40/info.json
index 322fcc3a0c..9aa73df1fa 100644
--- a/keyboards/horrortroll/lemon40/info.json
+++ b/keyboards/horrortroll/lemon40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Lemon40",
+ "manufacturer": "HorrorTroll",
"url": "",
"maintainer": "HorrorTroll",
+ "usb": {
+ "vid": "0x7516",
+ "pid": "0x2434",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/horrortroll/lemon40/readme.md b/keyboards/horrortroll/lemon40/readme.md
index 4c2a7bd543..7cb71f9f20 100644
--- a/keyboards/horrortroll/lemon40/readme.md
+++ b/keyboards/horrortroll/lemon40/readme.md
@@ -21,4 +21,4 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (Esc key) and plug in the keyboard
* **Reset by wire**: Using a wire, 1 head to GND hole and other one to RST hole
-* **Keycode in layout**: Press the key mapped to RESET if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/horrortroll/paws60/config.h b/keyboards/horrortroll/paws60/config.h
index d502ee985c..055a6ae319 100644
--- a/keyboards/horrortroll/paws60/config.h
+++ b/keyboards/horrortroll/paws60/config.h
@@ -18,13 +18,6 @@
#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
@@ -44,6 +37,3 @@
/* 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
index 78cb1a7938..2a67134750 100644
--- a/keyboards/horrortroll/paws60/info.json
+++ b/keyboards/horrortroll/paws60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Paws 60",
+ "manufacturer": "HorrorTroll",
"url": "https://github.com/HorrorTroll/KeebProj/tree/default/paws60/pcb/Hotswap",
"maintainer": "HorrorTroll",
+ "usb": {
+ "vid": "0x7516",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
diff --git a/keyboards/horrortroll/paws60/readme.md b/keyboards/horrortroll/paws60/readme.md
index 62783d3b5e..93acfdfc3e 100644
--- a/keyboards/horrortroll/paws60/readme.md
+++ b/keyboards/horrortroll/paws60/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/hotdox/config.h b/keyboards/hotdox/config.h
index b72faa613c..7dc6840c4b 100644
--- a/keyboards/hotdox/config.h
+++ b/keyboards/hotdox/config.h
@@ -2,15 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-
-#define VENDOR_ID 0x414B // 'AK' for Alpaca Keyboards
-#define PRODUCT_ID 0x0001 // sequentially numbered
-
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Alpaca Keyboards
-#define PRODUCT ErgoDox 76 "HotDox"
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 14
diff --git a/keyboards/hotdox/info.json b/keyboards/hotdox/info.json
index 953c12f712..0303f1eb1e 100644
--- a/keyboards/hotdox/info.json
+++ b/keyboards/hotdox/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "HotDox",
+ "keyboard_name": "Ergodox 76 \"HotDox\"",
+ "manufacturer": "Alpaca Keyboards",
"maintainer": "layne001365",
+ "usb": {
+ "vid": "0x414B",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ergodox": {
diff --git a/keyboards/hotdox/keymaps/default/keymap.c b/keyboards/hotdox/keymaps/default/keymap.c
index fe07e6f91d..eb4692a4c2 100644
--- a/keyboards/hotdox/keymaps/default/keymap.c
+++ b/keyboards/hotdox/keymaps/default/keymap.c
@@ -163,7 +163,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_right_led_1_off();
ergodox_right_led_2_off();
diff --git a/keyboards/hotdox/keymaps/eozaki/keymap.c b/keyboards/hotdox/keymaps/eozaki/keymap.c
index 3516f20303..d4b8f491fd 100644
--- a/keyboards/hotdox/keymaps/eozaki/keymap.c
+++ b/keyboards/hotdox/keymaps/eozaki/keymap.c
@@ -170,7 +170,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/hotdox/keymaps/imchipwood/keymap.c b/keyboards/hotdox/keymaps/imchipwood/keymap.c
index c5d7bc34cf..6dda884fa6 100644
--- a/keyboards/hotdox/keymaps/imchipwood/keymap.c
+++ b/keyboards/hotdox/keymaps/imchipwood/keymap.c
@@ -121,7 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | Lclk | Rclk | | | | Prev |VolDn | Next |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
- * |RESET | | | | |
+ * |QK_BOOT | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* |MPENT | |------| |------| |Play |
@@ -141,7 +141,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT,
// `---------------------------------------------------------------' `----------------------------------------------------------------'
// ,-------------------------. ,-------------------------.
- RESET, KC_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS,
// ,------------+------------+------------| |------------+------------+------------.
KC_TRNS, KC_TRNS,
// | | +------------| |------------+ | |
diff --git a/keyboards/hotdox/keymaps/kloki/keymap.c b/keyboards/hotdox/keymaps/kloki/keymap.c
index f858effd54..2550b68978 100644
--- a/keyboards/hotdox/keymaps/kloki/keymap.c
+++ b/keyboards/hotdox/keymaps/kloki/keymap.c
@@ -189,7 +189,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/hotdox/keymaps/ninjonas/keymap.c b/keyboards/hotdox/keymaps/ninjonas/keymap.c
index 93c0b266b6..2f9609c5c5 100644
--- a/keyboards/hotdox/keymaps/ninjonas/keymap.c
+++ b/keyboards/hotdox/keymaps/ninjonas/keymap.c
@@ -257,7 +257,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,--------------------------------------------------. ,----------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |-------+------+------+------+------+-------+--------|
- * | M_MAKE |RESET | | | | | | | | | | |COLMAK|DVORAK |QWERTY |
+ * | M_MAKE |QK_BOOT | | | | | | | | | | |COLMAK|DVORAK |QWERTY |
* |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------|
* | M_VRSN |M_MALL| | | | |------| |-------| | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+-------+--------|
diff --git a/keyboards/hp69/config.h b/keyboards/hp69/config.h
index ba6e55f86d..3bb4793186 100644
--- a/keyboards/hp69/config.h
+++ b/keyboards/hp69/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x416B
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0011
-#define MANUFACTURER Desiboards
-#define PRODUCT hp69
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/hp69/info.json b/keyboards/hp69/info.json
index dac0887fbf..c026ca99e7 100644
--- a/keyboards/hp69/info.json
+++ b/keyboards/hp69/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "hp69",
+ "manufacturer": "Desiboards",
"url": "",
"maintainer": "Ananya Kirti",
+ "usb": {
+ "vid": "0x416B",
+ "pid": "0x0001",
+ "device_version": "0.1.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/hs60/v1/config.h b/keyboards/hs60/v1/config.h
index b3444db38d..adc6f94f1f 100644
--- a/keyboards/hs60/v1/config.h
+++ b/keyboards/hs60/v1/config.h
@@ -19,13 +19,6 @@ 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 0x0257
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT HS60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, F7 }
#define MATRIX_COL_PINS { F1, F4, F5, E6, F0, B7, D2, D3, D5, D4, D6, D7, B4, B5 }
-#define UNUSED_PINS { B6, C6, C7, F6 }
/* bootloader configuration */
diff --git a/keyboards/hs60/v1/info.json b/keyboards/hs60/v1/info.json
index fe2d998311..34c0be67d9 100644
--- a/keyboards/hs60/v1/info.json
+++ b/keyboards/hs60/v1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "HS60",
+ "manufacturer": "Yiancar-Designs",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0257",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_iso": {
"layout": [{"label":"\u00ac", "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":"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":"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":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/hs60/v2/ansi/config.h b/keyboards/hs60/v2/ansi/config.h
index 9f4fab42f7..04c7d8c701 100644
--- a/keyboards/hs60/v2/ansi/config.h
+++ b/keyboards/hs60/v2/ansi/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4854
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT HS60 V2
-
#define HS60_ANSI
/* key matrix size */
diff --git a/keyboards/hs60/v2/ansi/info.json b/keyboards/hs60/v2/ansi/info.json
index 2aae7c7472..89812b210d 100644
--- a/keyboards/hs60/v2/ansi/info.json
+++ b/keyboards/hs60/v2/ansi/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "HS60v2",
- "maintainer": "yiancar",
+ "keyboard_name": "HS60 V2",
+ "manufacturer": "Yiancar-Designs",
"url": "",
+ "maintainer": "yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4854",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/hs60/v2/ansi/keymaps/stanrc85/keymap.c b/keyboards/hs60/v2/ansi/keymaps/stanrc85/keymap.c
index 11d8048f13..b691b115fb 100644
--- a/keyboards/hs60/v2/ansi/keymaps/stanrc85/keymap.c
+++ b/keyboards/hs60/v2/ansi/keymaps/stanrc85/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN2_60] = LAYOUT_60_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST,
- _______, EF_INC, ES_INC, S1_INC, H1_INC, S2_INC, H2_INC, BR_INC, _______, _______, _______, _______, _______, RESET,
+ _______, EF_INC, ES_INC, S1_INC, H1_INC, S2_INC, H2_INC, BR_INC, _______, _______, _______, _______, _______, QK_BOOT,
_______, EF_DEC, ES_DEC, S1_DEC, H1_DEC, S2_DEC, H2_DEC, BR_DEC, _______, _______, _______, _______, KC_MAKE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, TG(_DEFAULT))
diff --git a/keyboards/hs60/v2/hhkb/config.h b/keyboards/hs60/v2/hhkb/config.h
index c7b8c57b72..4dac657b39 100644
--- a/keyboards/hs60/v2/hhkb/config.h
+++ b/keyboards/hs60/v2/hhkb/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4855
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT HS60 V2
-
#define HS60_HHKB
/* key matrix size */
diff --git a/keyboards/hs60/v2/hhkb/info.json b/keyboards/hs60/v2/hhkb/info.json
index 1a7f509758..5e43f8bdba 100644
--- a/keyboards/hs60/v2/hhkb/info.json
+++ b/keyboards/hs60/v2/hhkb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "HS60v2",
- "maintainer": "yiancar",
+ "keyboard_name": "HS60 V2",
+ "manufacturer": "Yiancar-Designs",
"url": "",
+ "maintainer": "yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4855",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_60_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/hs60/v2/hhkb/keymaps/goatmaster/keymap.c b/keyboards/hs60/v2/hhkb/keymaps/goatmaster/keymap.c
index 6273dbc646..0b94aa88da 100644
--- a/keyboards/hs60/v2/hhkb/keymaps/goatmaster/keymap.c
+++ b/keyboards/hs60/v2/hhkb/keymaps/goatmaster/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,\
+ QK_BOOT, KC_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,\
diff --git a/keyboards/hs60/v2/iso/config.h b/keyboards/hs60/v2/iso/config.h
index 70e4e166fd..da918955c3 100644
--- a/keyboards/hs60/v2/iso/config.h
+++ b/keyboards/hs60/v2/iso/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4853
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT HS60 V2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/hs60/v2/iso/info.json b/keyboards/hs60/v2/iso/info.json
index 89b9912c79..8f207ac9c3 100644
--- a/keyboards/hs60/v2/iso/info.json
+++ b/keyboards/hs60/v2/iso/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "HS60v2",
- "maintainer": "yiancar",
+ "keyboard_name": "HS60 V2",
+ "manufacturer": "Yiancar-Designs",
"url": "",
+ "maintainer": "yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4853",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_60_iso": {
"layout": [
diff --git a/keyboards/hs60/v2/iso/keymaps/iso_andys8/keymap.c b/keyboards/hs60/v2/iso/keymaps/iso_andys8/keymap.c
index 12272ee798..309ba1d834 100644
--- a/keyboards/hs60/v2/iso/keymaps/iso_andys8/keymap.c
+++ b/keyboards/hs60/v2/iso/keymaps/iso_andys8/keymap.c
@@ -28,14 +28,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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_NO, KC_NO, KC_NO, KC_NO, RESET, KC_NO, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_PSCR, KC_NO, KC_NO, \
+ KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_PSCR, 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_END, KC_DEL, KC_NO, KC_NO, \
KC_LSFT, KC_NO, KC_APP, KC_PAUS, KC_INS, KC_NO, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_RSFT,\
KC_LCTL, KC_LGUI, KC_LALT, KC_BSPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT),
[2] = LAYOUT_60_iso( /* Light (Default 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_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT , \
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),
diff --git a/keyboards/hs60/v2/iso/keymaps/win_osx_dual/keymap.c b/keyboards/hs60/v2/iso/keymaps/win_osx_dual/keymap.c
index 31d7ec1ed8..81abccb313 100644
--- a/keyboards/hs60/v2/iso/keymaps/win_osx_dual/keymap.c
+++ b/keyboards/hs60/v2/iso/keymaps/win_osx_dual/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, OSX_ALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, RAISE , KC_RCTL),
[_RAISE] = LAYOUT_60_iso( /* Configuration */
- 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 ,\
+ QK_BOOT, KC_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, QWERTY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, OSX, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, EF_INC, H1_INC, S1_INC, H2_INC, S2_INC, BR_INC, ES_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
KC_TRNS, KC_UP, EF_DEC, H1_DEC, S2_DEC, H2_DEC, S2_DEC, BR_DEC, ES_DEC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,\
diff --git a/keyboards/hub16/config.h b/keyboards/hub16/config.h
index eeaa5f1a77..e88fba018b 100755
--- a/keyboards/hub16/config.h
+++ b/keyboards/hub16/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6A6A
-#define PRODUCT_ID 0x4810
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Josh Johnson
-#define PRODUCT Hub16
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
diff --git a/keyboards/hub16/info.json b/keyboards/hub16/info.json
index e6546f6cbd..a7ba0ae895 100644
--- a/keyboards/hub16/info.json
+++ b/keyboards/hub16/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Hub16",
+ "manufacturer": "Josh Johnson",
"url": "https://joshajohnson.com/hub16-keyboard/",
"maintainer": "Josh Johnson",
+ "usb": {
+ "vid": "0x6A6A",
+ "pid": "0x4810",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/hub16/keymaps/ahk_companion/keymap.c b/keyboards/hub16/keymaps/ahk_companion/keymap.c
index 10f641b6f8..39d94b340b 100644
--- a/keyboards/hub16/keymaps/ahk_companion/keymap.c
+++ b/keyboards/hub16/keymaps/ahk_companion/keymap.c
@@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MPLY, KC_MUTE,
KC_MPRV, KC_MPLY, KC_U, KC_K,
KC_NO, KC_NO, KC_ENT, KC_X,
- KC_NO, RESET, LSFT(KC_HASH), KC_J,
+ KC_NO, QK_BOOT, LSFT(KC_HASH), KC_J,
TG(5), KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
),
@@ -71,7 +71,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MPLY, KC_MUTE,
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD,
- RGB_TOG, EEP_RST, RESET, KC_LSHIFT,
+ RGB_TOG, EEP_RST, QK_BOOT, KC_LSHIFT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
),
};
diff --git a/keyboards/hub16/keymaps/macro/keymap.c b/keyboards/hub16/keymaps/macro/keymap.c
index e4cf9da5eb..1da30d564f 100755
--- a/keyboards/hub16/keymaps/macro/keymap.c
+++ b/keyboards/hub16/keymaps/macro/keymap.c
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, RGB_MOD, RGB_RMOD, RGB_TOG,
RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI,
RGB_SAD, RGB_SAI, _______, _______,
- _______, _______, RESET, TD(BASE)
+ _______, _______, QK_BOOT, TD(BASE)
),
};
diff --git a/keyboards/hub16/keymaps/peepeetee/keymap.c b/keyboards/hub16/keymaps/peepeetee/keymap.c
index 4790feda0a..ba4fe59235 100644
--- a/keyboards/hub16/keymaps/peepeetee/keymap.c
+++ b/keyboards/hub16/keymaps/peepeetee/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, //Transparent to let you go between layers
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD,
- RGB_TOG, EEP_RST, RESET, KC_TRNS
+ RGB_TOG, EEP_RST, QK_BOOT, KC_TRNS
),
[3] = LAYOUT(
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, //Transparent to let you go between layers
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD,
- RGB_TOG, EEP_RST, RESET, KC_TRNS
+ RGB_TOG, EEP_RST, QK_BOOT, KC_TRNS
)
@@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// KC_MPLY, KC_MUTE,
// KC_MPRV, KC_MPLY, KC_U, KC_K,
// KC_NO, KC_NO, KC_ENT, KC_X,
- // KC_NO, RESET, LSFT(KC_HASH), KC_J,
+ // KC_NO, QK_BOOT, LSFT(KC_HASH), KC_J,
// TG(5), KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
// ),
@@ -110,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// KC_MPLY, KC_MUTE,
// RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
// RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD,
- // RGB_TOG, EEP_RST, RESET, KC_LSHIFT,
+ // RGB_TOG, EEP_RST, QK_BOOT, KC_LSHIFT,
// KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
// ),
};
diff --git a/keyboards/hub20/config.h b/keyboards/hub20/config.h
index aca3d7acce..24bcdb0061 100644
--- a/keyboards/hub20/config.h
+++ b/keyboards/hub20/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6A6A // JJ
-#define PRODUCT_ID 0x4414 // H20
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Josh Johnson
-#define PRODUCT Hub20
-
/* key matrix */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
diff --git a/keyboards/hub20/info.json b/keyboards/hub20/info.json
index 2b44836728..3f829a3c7b 100644
--- a/keyboards/hub20/info.json
+++ b/keyboards/hub20/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Hub20",
+ "manufacturer": "Josh Johnson",
"url": "https://github.com/joshajohnson/hub20",
"maintainer": "joshajohnson",
+ "usb": {
+ "vid": "0x6A6A",
+ "pid": "0x4414",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/hub20/keymaps/left_hand_numpad/keymap.c b/keyboards/hub20/keymaps/left_hand_numpad/keymap.c
index b5817ab3c5..2b522a9975 100644
--- a/keyboards/hub20/keymaps/left_hand_numpad/keymap.c
+++ b/keyboards/hub20/keymaps/left_hand_numpad/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_PENT, KC_PDOT, KC_P0
),
[1] = LAYOUT_left_handed(
- RESET, _______,
+ QK_BOOT, _______,
RGB_TOG, RGB_RMOD, RGB_MOD, _______,
_______, RGB_VAD, RGB_VAI, _______,
RGB_HUD, RGB_HUI, _______,
diff --git a/keyboards/hub20/keymaps/macro/keymap.c b/keyboards/hub20/keymaps/macro/keymap.c
index 099fff8755..5fb1891ea7 100644
--- a/keyboards/hub20/keymaps/macro/keymap.c
+++ b/keyboards/hub20/keymaps/macro/keymap.c
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_Q, KC_R, KC_S, KC_T
),
[_CTRL] = LAYOUT_all(
- RESET, _______,
+ QK_BOOT, _______,
RGB_TOG, RGB_RMOD, RGB_MOD, TD(BASE),
_______, RGB_VAD, RGB_VAI, _______,
_______, RGB_HUD, RGB_HUI, _______,
diff --git a/keyboards/hub20/keymaps/right_hand_numpad/keymap.c b/keyboards/hub20/keymaps/right_hand_numpad/keymap.c
index ad3e5f49a3..d6244d652c 100644
--- a/keyboards/hub20/keymaps/right_hand_numpad/keymap.c
+++ b/keyboards/hub20/keymaps/right_hand_numpad/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_P0, KC_PDOT, KC_PENT
),
[1] = LAYOUT_right_handed(
- RESET, _______,
+ QK_BOOT, _______,
RGB_TOG, RGB_RMOD, RGB_MOD, _______,
_______, RGB_VAD, RGB_VAI,
_______, RGB_HUD, RGB_HUI, _______,
diff --git a/keyboards/ianklug/grooveboard/config.h b/keyboards/ianklug/grooveboard/config.h
index 4103759d02..1a42b95b41 100644
--- a/keyboards/ianklug/grooveboard/config.h
+++ b/keyboards/ianklug/grooveboard/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B4C // "KL" = klug
-#define PRODUCT_ID 0x4742 // "GB" = grooveboard
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ianklug
-#define PRODUCT grooveboard
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 4
@@ -45,7 +38,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIRECT_PINS { \
{ F7, F6, D1, D2 } \
}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
//#define DIODE_DIRECTION COL2ROW
@@ -149,5 +141,3 @@ 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/ianklug/grooveboard/info.json b/keyboards/ianklug/grooveboard/info.json
index e08cf62574..a4bb849952 100644
--- a/keyboards/ianklug/grooveboard/info.json
+++ b/keyboards/ianklug/grooveboard/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "grooveboard",
+ "manufacturer": "ianklug",
"url": "https://github.com/ianklug/grooveboard",
"maintainer": "ianklug",
+ "usb": {
+ "vid": "0x4B4C",
+ "pid": "0x4742",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ibm/model_m_4th_gen/info.json b/keyboards/ibm/model_m_4th_gen/info.json
deleted file mode 100644
index 932bfb8d73..0000000000
--- a/keyboards/ibm/model_m_4th_gen/info.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "keyboard_name": "ibm/model_m_4th_gen",
- "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb",
- "maintainer": "purdeaandrei",
- "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}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.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.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.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}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "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}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":6}, {"x":11, "y":5.5, "w":1.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}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}]
- },
- "LAYOUT_ansi": {
- "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":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.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.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"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":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.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":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.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":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}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}]
- },
- "LAYOUT_iso": {
- "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":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.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.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":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"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":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "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":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.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":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}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}]
- }
- }
-}
diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h
index df30e84aca..90ece5dd95 100644
--- a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h
+++ b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/config.h
@@ -17,12 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x16C0
-#define PRODUCT_ID 0x27DB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER IBM/Purdea Andrei
-#define PRODUCT IBM Model M (4th generation)
#define SERIAL_NUMBER "purdea.ro:overnumpad_controller"
/* key matrix size */
@@ -50,7 +44,6 @@
#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, C4, B0, B10, B13, C6, C7, C8, C9 }
#define MATRIX_ROW_PINS { A7, C5, B1, B12, B14, B15, A8, A9 }
-//#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/info.json b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/info.json
new file mode 100644
index 0000000000..b6cecf4309
--- /dev/null
+++ b/keyboards/ibm/model_m_4th_gen/overnumpad_1xb/info.json
@@ -0,0 +1,22 @@
+{
+ "keyboard_name": "IBM Model M (4th generation)",
+ "manufacturer": "IBM/Purdea Andrei",
+ "url": "https://github.com/purdeaandrei/overnumpad_controller_1xb",
+ "maintainer": "purdeaandrei",
+ "usb": {
+ "vid": "0x16C0",
+ "pid": "0x27DB",
+ "device_version": "0.0.1"
+ },
+ "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}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.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.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.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}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "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}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":6}, {"x":11, "y":5.5, "w":1.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}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}]
+ },
+ "LAYOUT_ansi": {
+ "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":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.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.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"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":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.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":2.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.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":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}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}]
+ },
+ "LAYOUT_iso": {
+ "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":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.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.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":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.5, "y":2.5, "h":2}, {"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":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "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":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5, "h":2}, {"x":0, "y":5.5, "w":1.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":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}, {"x":18.5, "y":5.5, "w":2}, {"x":20.5, "y":5.5}]
+ }
+ }
+}
diff --git a/keyboards/ibnuda/alicia_cook/config.h b/keyboards/ibnuda/alicia_cook/config.h
index 28db5f3420..8e8c46b694 100644
--- a/keyboards/ibnuda/alicia_cook/config.h
+++ b/keyboards/ibnuda/alicia_cook/config.h
@@ -19,13 +19,6 @@ 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 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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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/ibnuda/alicia_cook/info.json b/keyboards/ibnuda/alicia_cook/info.json
index c07be77190..3ce8256003 100644
--- a/keyboards/ibnuda/alicia_cook/info.json
+++ b/keyboards/ibnuda/alicia_cook/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Alicia Cook",
+ "manufacturer": "Ibnu D. Aji",
"url": "https://github.com/ibnuda/alicia-cook",
"maintainer": "ibnuda",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6955",
+ "device_version": "8.9.9"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ibnuda/alicia_cook/keymaps/rick/keymap.c b/keyboards/ibnuda/alicia_cook/keymaps/rick/keymap.c
index 35e0e1db97..909b1035c5 100644
--- a/keyboards/ibnuda/alicia_cook/keymaps/rick/keymap.c
+++ b/keyboards/ibnuda/alicia_cook/keymaps/rick/keymap.c
@@ -240,7 +240,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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_LSFT,KC_Z, KC_X, KC_C, KC_V, QK_BOOT, 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/ibnuda/gurindam/config.h b/keyboards/ibnuda/gurindam/config.h
index a79ea6c5db..ec281a7c56 100644
--- a/keyboards/ibnuda/gurindam/config.h
+++ b/keyboards/ibnuda/gurindam/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/ibnuda/gurindam/info.json b/keyboards/ibnuda/gurindam/info.json
index a196f066e0..4c7db56fd9 100644
--- a/keyboards/ibnuda/gurindam/info.json
+++ b/keyboards/ibnuda/gurindam/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "gurindam",
+ "keyboard_name": "Gurindam",
+ "manufacturer": "Ibnu D. Aji",
"url": "https://github.com/ibnuda/gurindam",
"maintainer": "Ibnu D. Aji",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0x6974",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ibnuda/squiggle/config.h b/keyboards/ibnuda/squiggle/config.h
index d9a144aca7..9e4c4f71bc 100644
--- a/keyboards/ibnuda/squiggle/config.h
+++ b/keyboards/ibnuda/squiggle/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1209
-#define PRODUCT_ID 0x6969
-#define MANUFACTURER ibnuda
-#define PRODUCT squiggle
-
#define USE_SERIAL
/*
diff --git a/keyboards/ibnuda/squiggle/keymaps/rick-complicated/keymap.c b/keyboards/ibnuda/squiggle/keymaps/rick-complicated/keymap.c
index eb5853e90e..66973a32ed 100644
--- a/keyboards/ibnuda/squiggle/keymaps/rick-complicated/keymap.c
+++ b/keyboards/ibnuda/squiggle/keymaps/rick-complicated/keymap.c
@@ -175,7 +175,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_complicated(
_______,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, _______,_______,_______,_______,_______,
+ _______,CLSGUI, _______,CONPST, QK_BOOT, _______,_______,_______,_______,_______,
_______,_______, _______,_______,
_______,_______, _______,_______
),
diff --git a/keyboards/ibnuda/squiggle/keymaps/rick/keymap.c b/keyboards/ibnuda/squiggle/keymaps/rick/keymap.c
index 7dddeb4089..3e61839b14 100644
--- a/keyboards/ibnuda/squiggle/keymaps/rick/keymap.c
+++ b/keyboards/ibnuda/squiggle/keymaps/rick/keymap.c
@@ -172,7 +172,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
_______,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, _______,_______,_______,_______,_______,
+ _______,CLSGUI, _______,CONPST, QK_BOOT, _______,_______,_______,_______,_______,
_______,_______, _______,_______
),
};
diff --git a/keyboards/ibnuda/squiggle/readme.md b/keyboards/ibnuda/squiggle/readme.md
index 95204ade57..20998844c9 100644
--- a/keyboards/ibnuda/squiggle/readme.md
+++ b/keyboards/ibnuda/squiggle/readme.md
@@ -21,4 +21,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
To enter to the bootloader you need to:
-* Press the key mapped to `RESET`
+* Press the key mapped to `QK_BOOT`
diff --git a/keyboards/ibnuda/squiggle/rev1/config.h b/keyboards/ibnuda/squiggle/rev1/config.h
index 9dec7e30f5..3d2752c8d4 100644
--- a/keyboards/ibnuda/squiggle/rev1/config.h
+++ b/keyboards/ibnuda/squiggle/rev1/config.h
@@ -1,7 +1,5 @@
#pragma once
-#define DEVICE_VER 0x0001
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 5
diff --git a/keyboards/ibnuda/squiggle/rev1/info.json b/keyboards/ibnuda/squiggle/rev1/info.json
index 754164e5d7..0b32e42620 100644
--- a/keyboards/ibnuda/squiggle/rev1/info.json
+++ b/keyboards/ibnuda/squiggle/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "squiggle",
+ "manufacturer": "ibnuda",
"url": "https://github.com/ibnuda/squiggle",
"maintainer": "Ibnu D. Aji",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0x6969",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/idb/idb_60/config.h b/keyboards/idb/idb_60/config.h
index 81dcfa854e..24960dcbd5 100644
--- a/keyboards/idb/idb_60/config.h
+++ b/keyboards/idb/idb_60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x494B // "IB" for idb Keyboards
-#define PRODUCT_ID 0x0001 // idb 60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER idb Keyboards
-#define PRODUCT idb 60
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C2, D0, D1, D2, D3, D4, D5, D6, B0, B1 }
#define MATRIX_COL_PINS { B2, B3, B4, C6, B6, B7, C7, B5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/idb/idb_60/info.json b/keyboards/idb/idb_60/info.json
index d78c848c6d..675fce4582 100644
--- a/keyboards/idb/idb_60/info.json
+++ b/keyboards/idb/idb_60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "idb 60",
+ "manufacturer": "idb Keyboards",
"url": "https://idb-keyboards.xyz/60",
"maintainer": "itspngu",
+ "usb": {
+ "vid": "0x494B",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all",
"LAYOUT_default": "LAYOUT_60_ansi_wkl_split_rshift"
diff --git a/keyboards/idb/idb_60/keymaps/all_keys/keymap.c b/keyboards/idb/idb_60/keymaps/all_keys/keymap.c
index 87a6692090..eac16f142a 100644
--- a/keyboards/idb/idb_60/keymaps/all_keys/keymap.c
+++ b/keyboards/idb/idb_60/keymaps/all_keys/keymap.c
@@ -10,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_MENU, 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, _______, _______,
+ QK_BOOT, 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/idb/idb_60/keymaps/pngu/keymap.c b/keyboards/idb/idb_60/keymaps/pngu/keymap.c
index c34d1774ea..bda744bef3 100644
--- a/keyboards/idb/idb_60/keymaps/pngu/keymap.c
+++ b/keyboards/idb/idb_60/keymaps/pngu/keymap.c
@@ -10,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_MENU, KC_RGUI
),
[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, _______,
+ QK_BOOT, KC_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,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/idobao/id42/config.h b/keyboards/idobao/id42/config.h
new file mode 100755
index 0000000000..a95578a9b3
--- /dev/null
+++ b/keyboards/idobao/id42/config.h
@@ -0,0 +1,75 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* Other settings */
+
+/* NKRO by default is required to be turned on. This forces it on
+ during keyboard startup regardless of EEPROM setting. */
+#define FORCE_NKRO
+
+/* Change the USB polling rate [default = 1000Hz (1ms)] and
+ * use larger value of keys per scan for elite games */
+#define USB_POLLING_INTERVAL_MS 2 // 500Hz
+
+/* LED Matrix & Animations */
+#ifdef RGB_MATRIX_ENABLE
+
+ #define RGB_DI_PIN B3
+ #define DRIVER_LED_TOTAL 42
+
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to x out of 255. If not defined maximum brightness is set to 255
+
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+
+ #define RGB_MATRIX_KEYPRESSES // enable key press effects
+
+ #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
+ #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 gradient Chevron shaped 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 amount at the same time, then shifts back
+ #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
+ #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount 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 // RGB_MATRIX_KEYPRESSES | RGB_MATRIX_KEYRELEASES */
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/idobao/id42/id42.c b/keyboards/idobao/id42/id42.c
new file mode 100755
index 0000000000..ea3dccdfed
--- /dev/null
+++ b/keyboards/idobao/id42/id42.c
@@ -0,0 +1,45 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "id42.h"
+
+#define __ NO_LED
+
+#ifdef RGB_MATRIX_ENABLE
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │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_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ // WS2812 LED strings are addressed from 0 (1st) to DRIVER_LED_TOTAL-1 (last)
+ { 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
+ // **NB**: Reversed order
+ // Generated from: https://xelus.netlify.app/guides/KLE_to_RGB_parser
+ {224,64 }, {204,64 }, {183,64 }, {135,64 }, { 84,64 }, { 48,64 }, { 25,64 }, { 3,64 },
+ {224,43 }, {204,43 }, {181,43 }, {158,43 }, {137,43 }, {117,43 }, { 97,43 }, { 76,43 }, { 56,43 }, { 36,43 }, { 8,43 },
+ {216,21 }, {188,21 }, {168,21 }, {148,21 }, {127,21 }, {107,21 }, { 87,21 }, { 66,21 }, { 46,21 }, { 25,21 }, { 3,21 },
+ {224,0 }, {204,0 }, {183,0 }, {163,0 }, {143,0 }, {122,0 }, {102,0 }, { 81,0 }, { 61,0 }, { 41,0 }, { 20,0 }, { 0,0 }
+}, {
+ // LED Index to Flag
+ // **NB**: Reversed order
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 4,
+ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
+ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4
+} };
+
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/idobao/id42/id42.h b/keyboards/idobao/id42/id42.h
new file mode 100755
index 0000000000..d9bef6d021
--- /dev/null
+++ b/keyboards/idobao/id42/id42.h
@@ -0,0 +1,6 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
diff --git a/keyboards/idobao/id42/info.json b/keyboards/idobao/id42/info.json
new file mode 100644
index 0000000000..8e9029b04e
--- /dev/null
+++ b/keyboards/idobao/id42/info.json
@@ -0,0 +1,80 @@
+{
+ "manufacturer": "IDOBAO",
+ "keyboard_name": "Abacus ID42",
+ "maintainer": "vinorodrigues",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "debounce": 5,
+ "features": {
+ "bootmagic": true,
+ "mousekey": true,
+ "extrakey": true,
+ "console": false,
+ "command": false,
+ "nkro": true,
+ "backlight": false,
+ "rgblight": false
+ },
+ "matrix_pins": {
+ "cols": ["B4", "D7", "D6", "D4", "B5", "C7", "F0", "F7", "F6", "F1", "F4", "F5"],
+ "rows": ["D5", "C6", "B6", "E6"]
+ },
+ "processor": "atmega32u4",
+ "url": "https://idobao.net/search?type=product&q=ID42*",
+ "usb": {
+ "vid": "0x6964",
+ "pid": "0x0042",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "matrix": [0, 0], "label": "Esc", "x": 0, "y": 0 },
+ { "matrix": [0, 1], "label": "Q", "x": 1, "y": 0 },
+ { "matrix": [0, 2], "label": "W", "x": 2, "y": 0 },
+ { "matrix": [0, 3], "label": "E", "x": 3, "y": 0 },
+ { "matrix": [0, 4], "label": "R", "x": 4, "y": 0 },
+ { "matrix": [0, 5], "label": "T", "x": 5, "y": 0 },
+ { "matrix": [0, 6], "label": "Y", "x": 6, "y": 0 },
+ { "matrix": [0, 7], "label": "U", "x": 7, "y": 0 },
+ { "matrix": [0, 8], "label": "I", "x": 8, "y": 0 },
+ { "matrix": [0, 9], "label": "O", "x": 9, "y": 0 },
+ { "matrix": [0, 10], "label": "P", "x": 10, "y": 0 },
+ { "matrix": [0, 11], "label": "BSpc", "x": 11, "y": 0 },
+
+ { "matrix": [1, 0], "label": "Tab", "x": 0, "y": 1, "w": 1.25 },
+ { "matrix": [1, 1], "label": "A", "x": 1.25, "y": 1 },
+ { "matrix": [1, 2], "label": "S", "x": 2.25, "y": 1 },
+ { "matrix": [1, 3], "label": "D", "x": 3.25, "y": 1 },
+ { "matrix": [1, 4], "label": "F", "x": 4.25, "y": 1 },
+ { "matrix": [1, 5], "label": "G", "x": 5.25, "y": 1 },
+ { "matrix": [1, 6], "label": "H", "x": 6.25, "y": 1 },
+ { "matrix": [1, 7], "label": "J", "x": 7.25, "y": 1 },
+ { "matrix": [1, 8], "label": "K", "x": 8.25, "y": 1 },
+ { "matrix": [1, 9], "label": "L", "x": 9.25, "y": 1 },
+ { "matrix": [1, 11], "label": "Ent", "x": 10.25, "y": 1, "w": 1.75 },
+
+ { "matrix": [2, 0], "label": "Shft", "x": 0, "y": 2, "w": 1.75 },
+ { "matrix": [2, 1], "label": "Z", "x": 1.75, "y": 2 },
+ { "matrix": [2, 2], "label": "X", "x": 2.75, "y": 2 },
+ { "matrix": [2, 3], "label": "C", "x": 3.75, "y": 2 },
+ { "matrix": [2, 4], "label": "V", "x": 4.75, "y": 2 },
+ { "matrix": [2, 5], "label": "B", "x": 5.75, "y": 2 },
+ { "matrix": [2, 6], "label": "N", "x": 6.75, "y": 2 },
+ { "matrix": [2, 7], "label": "M", "x": 7.75, "y": 2 },
+ { "matrix": [2, 8], "label": "Shft", "x": 8.75, "y": 2, "w": 1.25 },
+ { "matrix": [2, 10], "label": "\u21E7", "x": 10, "y": 2 },
+ { "matrix": [2, 11], "label": "Del", "x": 11, "y": 2 },
+
+ { "matrix": [3, 0], "label": "Ctrl", "x": 0, "y": 3, "w": 1.25 },
+ { "matrix": [3, 1], "label": "Win", "x": 1.25, "y": 3 },
+ { "matrix": [3, 2], "label": "Alt", "x": 2.25, "y": 3, "w": 1.25 },
+ { "matrix": [3, 3], "label": "", "x": 3.5, "y": 3, "w": 2.75 },
+ { "matrix": [3, 6], "label": "Fn", "x": 6.25, "y": 3, "w": 2.75 },
+ { "matrix": [3, 9], "label": "\u21E6", "x": 9, "y": 3 },
+ { "matrix": [3, 10], "label": "\u21E9", "x": 10, "y": 3 },
+ { "matrix": [3, 11], "label": "\u21E8", "x": 11, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/idobao/id42/keymaps/default/keymap.c b/keyboards/idobao/id42/keymaps/default/keymap.c
new file mode 100644
index 0000000000..bce2096ea5
--- /dev/null
+++ b/keyboards/idobao/id42/keymaps/default/keymap.c
@@ -0,0 +1,114 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ FN_MO13 = SAFE_RANGE,
+ FN_MO23,
+};
+
+// more Layer Tap stuff
+#define SPC_FN1 LT(1, KC_SPC)
+#define SPC_FN2 LT(2, KC_SPC)
+#define SPC_FN3 LT(3, KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Layer 1
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │BSp│
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ Tab│ A │ S │ D │ F │ G │ H │ J │ K │ L │ Entr │
+ * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──┬┴──┬───┤
+ * │ Sft │ Z │ X │ C │ V │ B │ N │ M │ Sft │ ↑ │Del│
+ * ├────┬┴──┬┴───┼───┴───┴─┬─┴───┴───┼─┬───┼───┼───┤
+ * │Ctrl│Win│ Alt│Space/Fn2│ Fn1/Fn3 │ │ ↠│ ↓ │ → │
+ * └────┴───┴────┴─────────┴─────────┘ └───┴───┴───┘
+ */
+ [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_BSPC,
+ 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_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, SPC_FN2, FN_MO13, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ /* Layer 2
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ~ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ▿ │
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ ▿ │ │ │ │ │-_ │=+ │[{ │]} │\| │ ▿ │
+ * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──┬┴──┬───┤
+ * │ ▿ │ │ │;: │'" │,< │.> │/? │ ▿ │PUp│Ins│
+ * ├────┬┴──┬┴───┼───┴───┴─┬─┴───┴───┼─┬───┼───┼───┤
+ * │ ▿ │ ▿ │ ▿ │ Fn3 │ ▿ │ │Hom│Pdn│End│
+ * └────┴───┴────┴─────────┴─────────┘ └───┴───┴───┘
+ */
+ [1] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______,
+ _______, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_COMM, KC_DOT, KC_SLSH, _______, KC_PGUP, KC_INS,
+ _______, _______, _______, MO(3), _______, KC_HOME, KC_PGDN, KC_END
+ ),
+
+ /* Layer 3
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│ ▿ │
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ ▿ │ │ │ │ │F11│F12│Psc│SLk│Pau│ ▿ │
+ * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──┬┴──┬───┤
+ * │ ▿ │ │ │ │ │ │ │ │Menu │Vl+│Mut│
+ * ├────┬┴──┬┴───┼───┴───┴─┬─┴───┴───┼─┬───┼───┼───┤
+ * │ ▿ │ ▿ │ ▿ │ ▿ │ ▿ │ │Sto│Vl-│Ply│
+ * └────┴───┴────┴─────────┴─────────┘ └───┴───┴───┘
+ */
+ [2] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_APP, KC_VOLU, KC_MUTE,
+ KC_RCTL, KC_RGUI, KC_RALT, _______, _______, KC_MSTP, KC_VOLD, KC_MPLY
+ ),
+
+ /* Layer 4
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ▿ │ │ │ │Rst│ │ │ │ │ │ │ ▿ │
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ ▿ │Tog│Mod│Hu-│Hu+│St-│St+│ │ │ │ ▿ │
+ * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──┬┴──┬───┤
+ * │ ▿ │mod│ │ │ │ │NRO│ │ │Br+│ │
+ * ├────┬┴──┬┴───┼───┴───┴─┬─┴───┴───┼─┬───┼───┼───┤
+ * │ ▿ │ ▿ │ ▿ │ ▿ │ ▿ │ │Sp-│Br-│Sp+│
+ * └────┴───┴────┴─────────┴─────────┘ └───┴───┴───┘
+ */
+ [3] = LAYOUT(
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ _______, RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, NK_TOGG, XXXXXXX, XXXXXXX, RGB_VAI, XXXXXXX,
+ _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI
+ ),
+};
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case FN_MO13:
+ if (record->event.pressed) {
+ layer_on(1);
+ update_tri_layer(1, 2, 3);
+ } else {
+ layer_off(1);
+ update_tri_layer(1, 2, 3);
+ }
+ return false;
+ break;
+ case FN_MO23:
+ if (record->event.pressed) {
+ layer_on(2);
+ update_tri_layer(1, 2, 3);
+ } else {
+ layer_off(2);
+ update_tri_layer(1, 2, 3);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/idobao/id42/keymaps/idobao/keymap.c b/keyboards/idobao/id42/keymaps/idobao/keymap.c
new file mode 100644
index 0000000000..6a52c476ca
--- /dev/null
+++ b/keyboards/idobao/id42/keymaps/idobao/keymap.c
@@ -0,0 +1,119 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/* ------------------------------------------------------------------
+ * This is the IDOBAO factory default keymap ;)
+ * ------------------------------------------------------------------ */
+
+#include QMK_KEYBOARD_H
+#include "version.h"
+
+enum {
+ KB_VRSN = USER09 // debug, type version
+};
+
+#define SPC_FN1 LT(1, KC_SPC)
+#define SPC_FN2 LT(2, KC_SPC)
+#define SPC_FN3 LT(3, KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Layer 0
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │BSp│
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ Tab│ A │ S │ D │ F │ G │ H │ J │ K │ L │ Entr │
+ * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──┬┴──┬───┤
+ * │ Sft │ Z │ X │ C │ V │ B │ N │ M │ Sft │ ↑ │Del│
+ * ├────┬┴──┬┴───┼───┴───┴─┬─┴───┴───┼─┬───┼───┼───┤
+ * │Ctrl│Win│ Alt│Space/Fn2│ Fn1/Fn3 │ │ ↠│ ↓ │ → │
+ * └────┴───┴────┴─────────┴─────────┘ └───┴───┴───┘
+ */
+ [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_BSPC,
+ 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_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, SPC_FN2, FN_MO13, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ /* Layer 1
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ~ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ▿ │
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ ▿ │ │ │ │ │-_ │=+ │[{ │]} │\| │ ▿ │
+ * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──┬┴──┬───┤
+ * │ ▿ │ │ │;: │'" │,< │.> │/? │ ▿ │PUp│Ins│
+ * ├────┬┴──┬┴───┼───┴───┴─┬─┴───┴───┼─┬───┼───┼───┤
+ * │ ▿ │ ▿ │ ▿ │ Fn3 │ ▿ │ │Hom│Pdn│End│
+ * └────┴───┴────┴─────────┴─────────┘ └───┴───┴───┘
+ */
+ [1] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______,
+ _______, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_COMM, KC_DOT, KC_SLSH, _______, KC_PGUP, KC_INS,
+ _______, _______, _______, MO(3), _______, KC_HOME, KC_PGDN, KC_END
+ ),
+
+ /* Layer 2
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│ ▿ │
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ ▿ │ │ │ │ │F11│F12│Psc│SLk│Pau│ ▿ │
+ * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──┬┴──┬───┤
+ * │ ▿ │ │ │ │ │ │ │ │Menu │Vl+│Mut│
+ * ├────┬┴──┬┴───┼───┴───┴─┬─┴───┴───┼─┬───┼───┼───┤
+ * │ ▿ │ ▿ │ ▿ │ ▿ │ ▿ │ │Sto│Vl-│Ply│
+ * └────┴───┴────┴─────────┴─────────┘ └───┴───┴───┘
+ */
+ [2] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_APP, KC_VOLU, KC_MUTE,
+ KC_RCTL, KC_RGUI, KC_RALT, _______, _______, KC_MSTP, KC_VOLD, KC_MPLY
+ ),
+
+ /* Layer 3
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ▿ │ │ │ │Rst│ │ │ │ │ │ │ ▿ │
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ ▿ │Tog│Mod│Hu-│Hu+│St-│St+│ │ │ │ ▿ │
+ * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──┬┴──┬───┤
+ * │ ▿ │mod│ │ │Ver│ │NRO│ │ │Br+│ │
+ * ├────┬┴──┬┴───┼───┴───┴─┬─┴───┴───┼─┬───┼───┼───┤
+ * │ ▿ │ ▿ │ ▿ │ ▿ │ ▿ │ │Sp-│Br-│Sp+│
+ * └────┴───┴────┴─────────┴─────────┘ └───┴───┴───┘
+ */
+ [3] = LAYOUT(
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ _______, RGB_RMOD, XXXXXXX, XXXXXXX, KB_VRSN, XXXXXXX, NK_TOGG, XXXXXXX, XXXXXXX, RGB_VAI, XXXXXXX,
+ _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+
+ #ifdef RGB_MATRIX_ENABLE
+
+ case QK_BOOT:
+ if (record->event.pressed) {
+ rgb_matrix_set_color_all(RGB_MATRIX_MAXIMUM_BRIGHTNESS, 0, 0); // All red
+ rgb_matrix_driver.flush();
+ }
+ return true;
+
+ #endif // RGB_MATRIX_ENABLE
+
+ // print firmware version
+ case KB_VRSN:
+ if (!get_mods()) {
+ if (!record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " (v" QMK_VERSION ")");
+ }
+ }
+ return false;
+
+ default:
+ return true; /* Process all other keycodes normally */
+ }
+}
diff --git a/keyboards/idobao/id42/keymaps/idobao/rules.mk b/keyboards/idobao/id42/keymaps/idobao/rules.mk
new file mode 100644
index 0000000000..974ef99660
--- /dev/null
+++ b/keyboards/idobao/id42/keymaps/idobao/rules.mk
@@ -0,0 +1,3 @@
+
+LTO_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/idobao/id42/keymaps/via/keymap.c b/keyboards/idobao/id42/keymaps/via/keymap.c
new file mode 100644
index 0000000000..590b8b54a3
--- /dev/null
+++ b/keyboards/idobao/id42/keymaps/via/keymap.c
@@ -0,0 +1,82 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#define SPC_FN1 LT(1, KC_SPC)
+#define SPC_FN2 LT(2, KC_SPC)
+#define SPC_FN3 LT(3, KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │Esc│ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │BSp│
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ Tab│ A │ S │ D │ F │ G │ H │ J │ K │ L │ Entr │
+ * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──┬┴──┬───┤
+ * │ Sft │ Z │ X │ C │ V │ B │ N │ M │ Sft │ ↑ │Del│
+ * ├────┬┴──┬┴───┼───┴───┴─┬─┴───┴───┼─┬───┼───┼───┤
+ * │Ctrl│Win│ Alt│Space/Fn2│ Fn1/Fn3 │ │ ↠│ ↓ │ → │
+ * └────┴───┴────┴─────────┴─────────┘ └───┴───┴───┘
+ */
+ [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_BSPC,
+ 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_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, SPC_FN2, FN_MO13, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ~ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ ▿ │
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ ▿ │ │ │ │ │-_ │=+ │[{ │]} │\| │ ▿ │
+ * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──┬┴──┬───┤
+ * │ ▿ │ │ │;: │'" │,< │.> │/? │ ▿ │PUp│Ins│
+ * ├────┬┴──┬┴───┼───┴───┴─┬─┴───┴───┼─┬───┼───┼───┤
+ * │ ▿ │ ▿ │ ▿ │ Fn3 │ ▿ │ │Hom│Pdn│End│
+ * └────┴───┴────┴─────────┴─────────┘ └───┴───┴───┘
+ */
+ [1] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______,
+ _______, XXXXXXX, XXXXXXX, KC_SCLN, KC_QUOT, KC_COMM, KC_DOT, KC_SLSH, _______, KC_PGUP, KC_INS,
+ _______, _______, _______, MO(3), _______, KC_HOME, KC_PGDN, KC_END
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │Esc│F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│ ▿ │
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ ▿ │ │ │ │ │F11│F12│Psc│SLk│Pau│ ▿ │
+ * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──┬┴──┬───┤
+ * │ ▿ │ │ │ │ │ │ │ │Menu │Vl+│Mut│
+ * ├────┬┴──┬┴───┼───┴───┴─┬─┴───┴───┼─┬───┼───┼───┤
+ * │ ▿ │ ▿ │ ▿ │ ▿ │ ▿ │ │Sto│Vl-│Ply│
+ * └────┴───┴────┴─────────┴─────────┘ └───┴───┴───┘
+ */
+ [2] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_APP, KC_VOLU, KC_MUTE,
+ KC_RCTL, KC_RGUI, KC_RALT, _______, _______, KC_MSTP, KC_VOLD, KC_MPLY
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ▿ │ │ │ │Rst│ │ │ │ │ │ │ ▿ │
+ * ├───┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴───┤
+ * │ ▿ │Tog│Mod│Hu-│Hu+│St-│St+│ │ │ │ ▿ │
+ * ├────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──┬┴──┬───┤
+ * │ ▿ │mod│ │ │ │ │NRO│ │ │Br+│ │
+ * ├────┬┴──┬┴───┼───┴───┴─┬─┴───┴───┼─┬───┼───┼───┤
+ * │ ▿ │ ▿ │ ▿ │ ▿ │ ▿ │ │Sp-│Br-│Sp+│
+ * └────┴───┴────┴─────────┴─────────┘ └───┴───┴───┘
+ */
+ [3] = LAYOUT(
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ _______, RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, NK_TOGG, XXXXXXX, XXXXXXX, RGB_VAI, XXXXXXX,
+ _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI
+ ),
+};
diff --git a/keyboards/idobao/id42/keymaps/via/rules.mk b/keyboards/idobao/id42/keymaps/via/rules.mk
new file mode 100644
index 0000000000..974ef99660
--- /dev/null
+++ b/keyboards/idobao/id42/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+
+LTO_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/idobao/id42/readme.md b/keyboards/idobao/id42/readme.md
new file mode 100644
index 0000000000..5921bffca1
--- /dev/null
+++ b/keyboards/idobao/id42/readme.md
@@ -0,0 +1,35 @@
+# IDOBAO Abacus ID42
+
+![IDOBAO Abacus ID42](https://idobao.github.io/assets/img/idobao-id42.png)
+
+Sized just right at 40% — with a compact configuration the IDOBAO Abacus ID42 makes a great fit for any desk.
+
+## 42 Keys
+
+* Keyboard Maintainer: [Vino Rodrigues](https://github.com/vinorodrigues)
+* Hardware Supported: **IDOBAO Abacus ID42**
+* Hardware Availability: [IDOBAO.net](https://idobao.net/search?type=product&q=ID42*)
+
+## Layout
+
+![](https://cdn.jsdelivr.net/gh/Idobao/idobao.github.io/kle/idobao-id42-all.png)
+
+## Compiling and Flashing
+
+Make example for this keyboard (after setting up your build environment):
+
+ make idobao/id42:default
+
+Flashing example for this keyboard:
+
+ make idobao/id42: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. <br>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
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to *`RESET`* *(Default = `[Fn]`+`[R]`)* if it is available
diff --git a/keyboards/idobao/id42/rules.mk b/keyboards/idobao/id42/rules.mk
new file mode 100755
index 0000000000..eab741fd0a
--- /dev/null
+++ b/keyboards/idobao/id42/rules.mk
@@ -0,0 +1,5 @@
+# This file intentionally left blank
+# ** settings are data driven & stored in `info.json` **
+
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/idobao/id63/config.h b/keyboards/idobao/id63/config.h
new file mode 100644
index 0000000000..10fb9d5f08
--- /dev/null
+++ b/keyboards/idobao/id63/config.h
@@ -0,0 +1,102 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* NB: Most configuration information resides in `info.json` */
+
+/* ----------------
+ * RGB Matrix stuff
+ * ---------------- */
+
+#define RGB_DI_PIN B7
+
+// RGB Matrix config
+#if defined(RGB_DI_PIN) && defined(RGB_MATRIX_ENABLE)
+
+ /* Denwir case is solid back. Please disable underglow at compile with compile command line:
+ *
+ * `make idobao/id63:default UNDERGLOW=off`
+ *
+ * */
+ #ifndef ID63_DISABLE_UNDERGLOW
+ #define DRIVER_LED_TOTAL 75
+ #else
+ #define DRIVER_LED_TOTAL (75 - 12)
+ #endif
+
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to x out of 255. If not defined maximum brightness is set to 255
+
+ #define RGB_MATRIX_KEYPRESSES
+ // do not enable RGB_MATRIX_FRAMEBUFFER_EFFECTS as these effects don't work will with this LED placement
+
+ // changes to this list will break the sequence set in the VIA `json` file.
+ /* Standard animation set */
+ #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
+ #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 gradient Chevron shaped 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 amount at the same time, then shifts back
+ #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
+ #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
+ // #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL // ** do not enable
+ // #define ENABLE_RGB_MATRIX_PIXEL_FLOW // ** do not enable
+ // #define ENABLE_RGB_MATRIX_PIXEL_RAIN // ** do not enable
+
+ /* RGB_MATRIX_FRAMEBUFFER_EFFECTS */
+ // #define ENABLE_RGB_MATRIX_TYPING_HEATMAP // ** do not enable
+ // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN // ** do not enable
+
+ /* RGB_MATRIX_KEYPRESSES */
+ #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 // RGB_MATRIX_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
diff --git a/keyboards/idobao/id63/id63.c b/keyboards/idobao/id63/id63.c
new file mode 100644
index 0000000000..d9b7fdef39
--- /dev/null
+++ b/keyboards/idobao/id63/id63.c
@@ -0,0 +1,68 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "id63.h"
+
+#define __ NO_LED
+
+#ifdef RGB_MATRIX_ENABLE
+
+/* Pre-key LED addresses
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”
+ * │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 │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+ *
+ * Underglow LED addresses (as seen from top / [Esc] = top left)
+ * ┌────┬────┬────┬────┬────┬────â”
+ * │ 63 │ 64 │ 65 │ 66 │ 67 │ 68 │
+ * ├────┴────┴────┴────┴────┴────┤
+ * ├────┬────┬────┬────┬────┬────┤
+ * │ 74 │ 73 │ 72 │ 71 │ 70 │ 69 │
+ * └────┴────┴────┴────┴────┴────┘
+ */
+
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { 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
+ // generated from: https://xelus.netlify.app/guides/KLE_to_RGB_parser
+ /* NB: Reverse & upside-down order! */
+ {224,64 }, {208,64 }, {192,64 }, {176,64 }, {160,64 }, {102,64 }, { 42,64 }, { 22,64 }, { 2,64 },
+ {224,48 }, {208,48 }, {186,48 }, {164,48 }, {148,48 }, {132,48 }, {116,48 }, {100,48 }, { 84,48 }, { 68,48 }, { 52,48 }, { 36,48 }, { 10,48 },
+ {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 },
+ {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 },
+ {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 }
+ // underglow LEDs (positions pushed to nearest edge to match edge key colors)
+ #ifndef ID63_DISABLE_UNDERGLOW
+ , { 0,0 }, { 45,0 }, { 90,0 }, {134,0 }, {179,0 }, {224,0 },
+ {224,64 }, {179,64 }, {134,64 }, { 90,64 }, { 45,64 }, { 0,64 }
+ #endif
+}, {
+ // LED Index to Flag
+ /* NB: Reverse & upside-down order! */
+ 4, 4, 4, 1, 1, 4, 1, 1, 1,
+ 1, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9,
+ 1, 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
+ // underglow LEDs
+ #ifndef ID63_DISABLE_UNDERGLOW
+ , 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2
+ #endif
+} };
+
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/idobao/id63/id63.h b/keyboards/idobao/id63/id63.h
new file mode 100644
index 0000000000..d9bef6d021
--- /dev/null
+++ b/keyboards/idobao/id63/id63.h
@@ -0,0 +1,6 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
diff --git a/keyboards/idobao/id63/info.json b/keyboards/idobao/id63/info.json
new file mode 100644
index 0000000000..ab34c2a676
--- /dev/null
+++ b/keyboards/idobao/id63/info.json
@@ -0,0 +1,106 @@
+{
+ "manufacturer": "IDOBAO",
+ "keyboard_name": "ID63",
+ "maintainer": "vinorodrigues",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "debounce": 5,
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "backlight": false,
+ "rgblight": false
+ },
+ "matrix_pins": {
+ "cols": ["C7", "F6", "F5", "F4", "F1", "B3", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7"],
+ "rows": ["B0", "B1", "B2", "E6", "F7"]
+ },
+ "processor": "atmega32u4",
+ "url": "https://idobao.net/search?type=product&q=id63*",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0063",
+ "vid": "0x6964"
+ },
+ "layout_aliases": {
+ "LAYOUT_63_ansi": "LAYOUT_60_ansi_arrow"
+ },
+ "community_layouts": ["60_ansi_arrow"],
+ "layouts": {
+ "LAYOUT_60_ansi_arrow": {
+ "layout": [
+ { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label": "1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label": "2@", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label": "3#", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label": "4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label": "5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label": "6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label": "7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label": "8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label": "9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label": "0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label": "-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label": "=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
+
+ { "label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
+ { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
+ { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
+ { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
+ { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
+ { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
+ { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
+ { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
+ { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
+ { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
+ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
+ { "label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1 },
+ { "label": "]}", "matrix": [1, 12], "x": 12.5, "y": 1 },
+ { "label": "\\|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5 },
+
+ { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
+ { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
+ { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
+ { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
+ { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
+ { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
+ { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
+ { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
+ { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
+ { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
+ { "label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2 },
+ { "label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
+ { "label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25 },
+
+ { "label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25 },
+ { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label": ",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label": ".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label": "Shift", "matrix": [3, 11], "x": 11.25, "y": 3, "w": 1.75 },
+ { "label": "\u2191", "matrix": [3, 12], "x": 13, "y": 3 },
+ { "label": "/?", "matrix": [3, 13], "x": 14, "y": 3 },
+
+ { "label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25 },
+ { "label": "GUI", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "Space", "matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "Fn", "matrix": [4, 9], "x": 10, "y": 4 },
+ { "label": "Menu", "matrix": [4, 10], "x": 11, "y": 4 },
+ { "label": "\u2190", "matrix": [4, 11], "x": 12, "y": 4 },
+ { "label": "\u2193", "matrix": [4, 12], "x": 13, "y": 4 },
+ { "label": "\u2192", "matrix": [4, 13], "x": 14, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/idobao/id63/keymaps/default/keymap.c b/keyboards/idobao/id63/keymaps/default/keymap.c
new file mode 100644
index 0000000000..617a876b80
--- /dev/null
+++ b/keyboards/idobao/id63/keymaps/default/keymap.c
@@ -0,0 +1,48 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Backspc│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ 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 │Up │ / │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
+ * │Ctrl│Win │Alt │ │Fn │Mnu│Lf │Dn │Rt │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+ */
+ [0] = LAYOUT_60_ansi_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_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_APP, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”
+ * │ ~ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Del │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │tog│up │mod│hu+│hu-│sa+│sa-│br+│br-│prn│slk│pus│ Ins │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ │lf │dn │rt │ │ │ │ │sp+│sp-│ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
+ * │ │ │ │ │ │Rst│NKR│ │ │ │ │PUp│ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │Hom│PDn│End│
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+ */
+ [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,
+ _______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______,
+ _______, _______, _______, _______, _______, QK_BOOT, NK_TOGG, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ )
+};
diff --git a/keyboards/idobao/id63/keymaps/idobao/config.h b/keyboards/idobao/id63/keymaps/idobao/config.h
new file mode 100644
index 0000000000..01d96f9dcd
--- /dev/null
+++ b/keyboards/idobao/id63/keymaps/idobao/config.h
@@ -0,0 +1,7 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/* Denwir D60 has solid back case - no underglow LED's are visible. */
+#define ID63_DISABLE_UNDERGLOW
diff --git a/keyboards/idobao/id63/keymaps/idobao/keymap.c b/keyboards/idobao/id63/keymaps/idobao/keymap.c
new file mode 100644
index 0000000000..f49304fb24
--- /dev/null
+++ b/keyboards/idobao/id63/keymaps/idobao/keymap.c
@@ -0,0 +1,359 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// Copyright 2022 IDOBAO (@idobaokb)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/* ------------------------------------------------------------------
+ * This is the IDOBAO factory default keymap ;)
+ * ------------------------------------------------------------------ */
+
+#include QMK_KEYBOARD_H
+#include "version.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+typedef union {
+ uint32_t raw;
+ struct {
+ bool rgb_disable_perkey:1;
+ #ifndef ID63_DISABLE_UNDERGLOW
+ bool rgb_disable_underglow:1;
+ #endif // ID63_DISABLE_UNDERGLOW
+ };
+} user_config_t;
+
+#endif // RGB_MATRIX_ENABLE
+
+enum {
+ _BASE = 0,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+enum {
+ KC_MCON = USER00, // macOS Open Mission Control
+ KC_LPAD, // macOS Open Launchpad
+ #ifdef RGB_MATRIX_ENABLE
+ RGB_TPK, // Toggle Per-Key
+ #ifndef ID63_DISABLE_UNDERGLOW
+ RGB_TUG, // Toggle Underglow
+ #endif // ID63_DISABLE_UNDERGLOW
+ #endif // RGB_MATRIX_ENABLE
+ KB_VRSN = USER09 // debug, type version
+};
+
+#ifndef RGB_MATRIX_ENABLE
+ #define RGB_TPK _______
+ #define RGB_TUG _______
+#else
+ #ifdef ID63_DISABLE_UNDERGLOW
+ #define RGB_TUG _______
+ #endif // ID63_DISABLE_UNDERGLOW
+#endif // RGB_MATRIX_ENABLE
+
+enum macos_consumer_usages {
+ _AC_SHOW_ALL_WINDOWS = 0x29F, // mapped to KC_MCON
+ _AC_SHOW_ALL_APPS = 0x2A0 // mapped to KC_LPAD
+};
+
+/* Special Keys */
+#define SK_LT1C LT(_FN1, KC_CAPS) // Layer Tap 1, i.e., Tap = Caps Lock, Hold = Layer 1
+#define SK_LT2A LT(_FN2, KC_APP) // Layer Tap 2, i.e., Tap = Menu, Hold = Layer 2
+
+/* key matrix */
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Backspc│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │*Caps*│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ *Caps* => Tap = Caps Lock, Hold = Layer 1 (Fn1)
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │Shift │Up │ / │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
+ * │Ctrl│Win │Alt │ │Fn1│*M*│Lf │Dn │Rt │ *M* => Tap = Menu, Hold = Layer 2 (Fn2)
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+ */
+ [_BASE] = LAYOUT_60_ansi_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_BSLS,
+ SK_LT1C, KC_A, KC_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, FN_MO13, SK_LT2A, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”
+ * │ ~ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Del │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ ↑ │ │ │Tog│Hu+│Sa+│Br+│Sp+│prn│slk│pus│ Ins │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ Caps │ ↠│ ↓ │ → │ │Mod│Hu-│Sa-│Br-│Sp-│ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
+ * │ │ │ │ │Ver│Rst│NKR│ │ │ │ │PUp│ / │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │Hom│PDn│End│
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+ */
+ [_FN1] = 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_UP, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______,
+ _______, _______, _______, _______, KB_VRSN, QK_BOOT, NK_TOGG, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, MO(_FN3), KC_HOME, KC_PGDN, KC_END
+ ),
+
+ [_FN2] = LAYOUT_60_ansi_arrow(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCON, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_POWER,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, MO(_FN3), _______, _______, _______, _______
+ ),
+
+ [_FN3] = LAYOUT_60_ansi_arrow(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+uint8_t mod_state;
+bool delkey_registered;
+
+#ifdef RGB_MATRIX_ENABLE
+
+/*
+ * RGB Stuff
+ */
+
+#define ID63_CAPS_LOCK_KEY_INDEX 34 // position of Caps Lock key
+
+#define ID63_CAPS_LOCK_MAX_BRIGHTNESS 0xFF
+#ifdef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+ #undef ID63_CAPS_LOCK_MAX_BRIGHTNESS
+ #define ID63_CAPS_LOCK_MAX_BRIGHTNESS RGB_MATRIX_MAXIMUM_BRIGHTNESS
+#endif
+
+#define ID63_CAPS_LOCK_VAL_STEP 8
+#ifdef RGB_MATRIX_VAL_STEP
+ #undef ID63_CAPS_LOCK_VAL_STEP
+ #define ID63_CAPS_LOCK_VAL_STEP RGB_MATRIX_VAL_STEP
+#endif
+
+user_config_t user_config;
+
+void id63_update_rgb_mode(void) {
+ uint8_t flags = LED_FLAG_ALL;
+
+ if (user_config.rgb_disable_perkey
+ #ifndef ID63_DISABLE_UNDERGLOW
+ && user_config.rgb_disable_underglow
+ #endif // ID63_DISABLE_UNDERGLOW
+ ) {
+ flags = 0; // All OFF Condition
+ } else {
+ if (user_config.rgb_disable_perkey) {
+ #ifndef ID63_DISABLE_UNDERGLOW
+ flags = LED_FLAG_UNDERGLOW | 0xF0;
+ #else
+ flags = 0xF0;
+ #endif // ID63_DISABLE_UNDERGLOW
+ }
+ #ifndef ID63_DISABLE_UNDERGLOW
+ if (user_config.rgb_disable_underglow) {
+ flags = LED_FLAG_MODIFIER | LED_FLAG_KEYLIGHT | LED_FLAG_INDICATOR | 0xF0;
+ }
+ #endif // ID63_DISABLE_UNDERGLOW
+ }
+
+ if (flags == 0) {
+ rgb_matrix_set_flags(0);
+ rgb_matrix_set_color_all(HSV_OFF);
+ } else {
+ rgb_matrix_set_flags(flags);
+ rgb_matrix_enable_noeeprom();
+ }
+
+ eeconfig_update_kb(user_config.raw); // write back to EEPROM
+}
+
+void id63_get_rgb_mode(void) {
+ user_config.raw = eeconfig_read_kb(); // read config from EEPROM
+ id63_update_rgb_mode();
+}
+
+void keyboard_post_init_user(void) {
+ id63_get_rgb_mode();
+}
+
+void eeconfig_init_user(void) {
+ // EEPROM is getting reset!
+ user_config.raw = 0;
+ id63_update_rgb_mode();
+}
+
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ // Caps Lock key stuff
+
+ if (host_keyboard_led_state().caps_lock) {
+ uint8_t v = rgb_matrix_get_val();
+ if (v < ID63_CAPS_LOCK_VAL_STEP) {
+ v = ID63_CAPS_LOCK_VAL_STEP;
+ } else if (v < (ID63_CAPS_LOCK_MAX_BRIGHTNESS - ID63_CAPS_LOCK_VAL_STEP)) {
+ if (!user_config.rgb_disable_perkey) {
+ v += ID63_CAPS_LOCK_VAL_STEP; // inc. by one more step than current brightness
+ } // else leave as current brightness
+ } else {
+ v = ID63_CAPS_LOCK_MAX_BRIGHTNESS;
+ }
+ rgb_matrix_set_color(ID63_CAPS_LOCK_KEY_INDEX, v, v, v); // white, brightness adjusted
+ } else if (user_config.rgb_disable_perkey) {
+ rgb_matrix_set_color(ID63_CAPS_LOCK_KEY_INDEX, HSV_OFF); // off
+ }
+}
+
+#endif // RGB_MATRIX_ENABLE
+
+/*
+ * Extra keys and RGB Toggle handler
+ */
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ mod_state = get_mods();
+
+ switch (keycode) {
+
+ // handle RGB toggle key - this ensures caps lock always works
+ #ifdef RGB_MATRIX_ENABLE
+
+ case QK_BOOT:
+ if (record->event.pressed) {
+ rgb_matrix_set_color_all(RGB_MATRIX_MAXIMUM_BRIGHTNESS, 0, 0); // All red
+ rgb_matrix_driver.flush();
+ }
+ return true;
+
+ case RGB_TOG:
+ /* roll through the LED modes
+ * | Level | Per-key | Underglow |
+ * |-------------|---------|-----------|
+ * | 0 (default) | on | on |
+ * | 1 | OFF | on |
+ * | 2 | on | OFF |
+ * | 3 | OFF | OFF |
+ *
+ * for ID63_DISABLE_UNDERGLOW
+ * | Level | Per-key |
+ * |-------------|---------|
+ * | 0 (default) | on |
+ * | 1 | OFF |
+ */
+ if (record->event.pressed) {
+ if ( (!user_config.rgb_disable_perkey)
+ #ifndef ID63_DISABLE_UNDERGLOW
+ && (!user_config.rgb_disable_underglow)
+ #endif // ID63_DISABLE_UNDERGLOW
+ ) {
+ user_config.rgb_disable_perkey = 1;
+
+ #ifndef ID63_DISABLE_UNDERGLOW
+
+ } else if ( user_config.rgb_disable_perkey && (!user_config.rgb_disable_underglow) ) {
+ user_config.rgb_disable_perkey = 0;
+ user_config.rgb_disable_underglow = 1;
+
+ } else if ( (!user_config.rgb_disable_perkey) && user_config.rgb_disable_underglow ) {
+ user_config.rgb_disable_perkey = 1;
+
+ #endif // ID63_DISABLE_UNDERGLOW
+
+ } else {
+ user_config.rgb_disable_perkey = 0;
+ #ifndef ID63_DISABLE_UNDERGLOW
+ user_config.rgb_disable_underglow = 0;
+ #endif // ID63_DISABLE_UNDERGLOW
+ }
+ id63_update_rgb_mode();
+ }
+ return false;
+
+ case RGB_TPK:
+ if (record->event.pressed) {
+ user_config.rgb_disable_perkey ^= 1;
+ id63_update_rgb_mode();
+ }
+ return false;
+
+ #ifndef ID63_DISABLE_UNDERGLOW
+
+ case RGB_TUG:
+ if (record->event.pressed) {
+ user_config.rgb_disable_underglow ^= 1;
+ id63_update_rgb_mode();
+ }
+ return false;
+
+ #endif // ID63_DISABLE_UNDERGLOW
+
+ case EE_CLR:
+ if (!record->event.pressed) { // on release
+ id63_get_rgb_mode();
+ }
+ return true; // let this one pass on
+
+ #endif // RGB_MATRIX_ENABLE
+
+ // print firmware version
+ case KB_VRSN:
+ if (!get_mods()) {
+ if (!record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " (v" QMK_VERSION ")");
+ }
+ }
+ return false;
+
+ // @see: https://github.com/qmk/qmk_firmware/issues/10111#issuecomment-752300353
+ case KC_MCON:
+ if (record->event.pressed) {
+ host_consumer_send(_AC_SHOW_ALL_WINDOWS);
+ } else {
+ host_consumer_send(0);
+ }
+ return false;
+
+ case KC_LPAD:
+ if (record->event.pressed) {
+ host_consumer_send(_AC_SHOW_ALL_APPS);
+ } else {
+ host_consumer_send(0);
+ }
+ return false;
+
+ // Shift + Backspace = Delete, see: https://docs.qmk.fm/#/feature_advanced_keycodes?id=shift-backspace-for-delete
+ case KC_BSPC:
+ if (record->event.pressed) {
+ if (mod_state & MOD_MASK_SHIFT) {
+ del_mods(MOD_MASK_SHIFT);
+ register_code(KC_DEL);
+ delkey_registered = true;
+ set_mods(mod_state);
+ return false;
+ }
+ } else {
+ if (delkey_registered) {
+ unregister_code(KC_DEL);
+ delkey_registered = false;
+ return false;
+ }
+ }
+ return true;
+
+ default:
+ return true; /* Process all other keycodes normally */
+ }
+}
diff --git a/keyboards/idobao/id63/keymaps/idobao/rules.mk b/keyboards/idobao/id63/keymaps/idobao/rules.mk
new file mode 100644
index 0000000000..974ef99660
--- /dev/null
+++ b/keyboards/idobao/id63/keymaps/idobao/rules.mk
@@ -0,0 +1,3 @@
+
+LTO_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/idobao/id63/keymaps/via/keymap.c b/keyboards/idobao/id63/keymaps/via/keymap.c
new file mode 100644
index 0000000000..e8ad0eb82a
--- /dev/null
+++ b/keyboards/idobao/id63/keymaps/via/keymap.c
@@ -0,0 +1,64 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Backspc│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ 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 │Up │ / │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
+ * │Ctrl│Win │Alt │ │Fn │Mnu│Lf │Dn │Rt │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+ */
+ [0] = LAYOUT_60_ansi_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_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_APP, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”
+ * │ ~ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Del │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │tog│up │mod│hu+│hu-│sa+│sa-│br+│br-│prn│slk│pus│ Ins │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ Caps │lf │dn │rt │ │ │ │ │sp+│sp-│ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
+ * │ │ │ │ │ │Rst│NRK│ │ │ │ │PUp│ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │Hom│PDn│End│
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┘
+ */
+ [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,
+ _______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______,
+ _______, _______, _______, _______, _______, QK_BOOT, NK_TOGG, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+
+ [2] = LAYOUT_60_ansi_arrow(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_60_ansi_arrow(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/idobao/id63/keymaps/via/rules.mk b/keyboards/idobao/id63/keymaps/via/rules.mk
new file mode 100644
index 0000000000..974ef99660
--- /dev/null
+++ b/keyboards/idobao/id63/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+
+LTO_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/idobao/id63/post_rules.mk b/keyboards/idobao/id63/post_rules.mk
new file mode 100644
index 0000000000..1a465397fd
--- /dev/null
+++ b/keyboards/idobao/id63/post_rules.mk
@@ -0,0 +1,8 @@
+# The Denwir D60 case has a sealed/solid undercase,
+# this enables switching off thoes LEDs
+# Usage: `make idobao/id63:default UNDERGLOW=off`
+
+UNDERGLOW ?= yes
+ifneq ($(strip $(UNDERGLOW)), yes)
+ OPT_DEFS += -DID63_DISABLE_UNDERGLOW
+endif
diff --git a/keyboards/idobao/id63/readme.md b/keyboards/idobao/id63/readme.md
new file mode 100644
index 0000000000..a4566f6f20
--- /dev/null
+++ b/keyboards/idobao/id63/readme.md
@@ -0,0 +1,39 @@
+# IDOBAO ID63
+
+![IDOBAO ID63](https://i.imgur.com/DxlOr9xh.png)
+
+*The ID63 Keyboard Kit brings a tailored gasket-mounted build to an ultra-compact 60% layout with a unique ribbed side texture.*
+
+## ANSI Support
+
+* Keyboard Maintainer: [Vino Rodrigues](https://github.com/vinorodrigues)
+* Hardware Supported: **IDOBAO ID63**
+* Hardware Availability: [Drop.com](https://drop.com/buy/idobao-id63-60-gasket-hot-swappable-aluminum-mechanical-keyboard-kit) & [IDOBAO.net](https://idobao.net/search?type=product&q=id63*)
+
+## Layout
+
+![IDOBAO ID63](https://idobao.github.io/kle/idobao-id63.png)
+
+## Compiling and Flashing
+
+Make example for this keyboard (after setting up your build environment):
+
+ qmk compile -kb idobao/id63 -km default
+
+*{..or..}*
+
+ make idobao/id63:default
+
+Flashing example for this keyboard:
+
+ make idobao/id63: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. <br>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 `QK_BOOT`, default is [Fn]+[B]
diff --git a/keyboards/idobao/id63/rules.mk b/keyboards/idobao/id63/rules.mk
new file mode 100644
index 0000000000..eab741fd0a
--- /dev/null
+++ b/keyboards/idobao/id63/rules.mk
@@ -0,0 +1,5 @@
+# This file intentionally left blank
+# ** settings are data driven & stored in `info.json` **
+
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/idobao/id67/config.h b/keyboards/idobao/id67/config.h
index f94606c9e7..59e34654b5 100644
--- a/keyboards/idobao/id67/config.h
+++ b/keyboards/idobao/id67/config.h
@@ -1,49 +1,12 @@
-/* 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/>.
- */
+// Copyright 2021 Tybera (@tybera)
+// Copyright 2021 Werther (@thewerther)
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6964 /* "id" */
-#define PRODUCT_ID 0x0067
-#define DEVICE_VER 0x0002
-#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 Matrix config
@@ -51,60 +14,73 @@
#ifndef ID67_DISABLE_UNDERGLOW
#define DRIVER_LED_TOTAL 77
#else
- #define DRIVER_LED_TOTAL 67
+ #define DRIVER_LED_TOTAL (77 - 10)
#endif
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
- #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to x out of 255. If not defined maximum brightness is set to 255
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to x 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 gradient Chevron shaped 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 amount at the same time, then shifts back
- #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
- #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
+ #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
+ #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 gradient Chevron shaped 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 amount at the same time, then shifts back
+ #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
+ #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
- // don't need `#if`, animation modes themselves check defines
- // #if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
+ /* RGB_MATRIX_FRAMEBUFFER_EFFECTS -- don't enable */
// #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
// #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
- // #endif // #if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
- // don't need `#if`, animation modes themselves check defines
- // #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
+ /* RGB_MATRIX_KEYPRESSES || 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)
+ #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 // RGB_MATRIX_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
diff --git a/keyboards/idobao/id67/id67.c b/keyboards/idobao/id67/id67.c
index 155cc74087..17bcd9a943 100644
--- a/keyboards/idobao/id67/id67.c
+++ b/keyboards/idobao/id67/id67.c
@@ -1,19 +1,7 @@
-/* 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/>.
- */
+// Copyright 2021 Tybera (@tybera)
+// Copyright 2021 Werther (@thewerther)
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
#include "id67.h"
@@ -25,6 +13,23 @@
* These "LED Index to *" arrays are in that reversed order!
* i.e., Space row on top, listed right to left */
led_config_t g_led_config = { {
+ /* Under- / Per-Key
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │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 │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ *
+ * Bottom Side (as seen from top orientation)
+ * 67 68 69 70 71
+ * 76 75 74 73 72
+ */
// 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},
@@ -34,63 +39,30 @@ led_config_t g_led_config = { {
}, {
// LED Index to Physical Position
// based on: https://gist.github.com/vinorodrigues/07fd735683856b2a06c7c52b9b3878cb
- {224, 64}, {209, 64}, {194, 64}, {170, 64}, {151, 64}, {95, 64}, {39, 64}, {21, 64}, {2, 64},
- {224, 48}, {209, 48}, {189, 48}, {168, 48}, {153, 48}, {138, 48}, {123, 48}, {108, 48}, {93, 48}, {78, 48}, {63, 48}, {49, 48}, {34, 48}, {9, 48},
- {224, 32}, {200, 32}, {175, 32}, {161, 32}, {146, 32}, {131, 32}, {116, 32}, {101, 32}, {86, 32}, {71, 32}, {56, 32}, {41, 32}, {26, 32}, {6, 32},
- {224, 16}, {205, 16}, {187, 16}, {172, 16}, {157, 16}, {142, 16}, {127, 16}, {112, 16}, {97, 16}, {82, 16}, {67, 16}, {52, 16}, {37, 16}, {22, 16}, {4, 16},
- {224, 0}, {202, 0}, {179, 0}, {164, 0}, {149, 0}, {134, 0}, {119, 0}, {105, 0}, {90, 0}, {75, 0}, {60, 0}, {45, 0}, {30, 0}, {15, 0}, {0, 0}
- #ifndef ID67_DISABLE_UNDERGLOW
+ // **NB: In reverse order**
+ {224,64 }, {209,64 }, {194,64 }, {170,64 }, {151,64 }, { 95,64 }, { 39,64 }, { 21,64 }, { 2,64 },
+ {224,48 }, {209,48 }, {189,48 }, {168,48 }, {153,48 }, {138,48 }, {123,48 }, {108,48 }, { 93,48 }, { 78,48 }, { 63,48 }, { 49,48 }, { 34,48 }, { 9,48 },
+ {224,32 }, {200,32 }, {175,32 }, {161,32 }, {146,32 }, {131,32 }, {116,32 }, {101,32 }, { 86,32 }, { 71,32 }, { 56,32 }, { 41,32 }, { 26,32 }, { 6,32 },
+ {224,16 }, {205,16 }, {187,16 }, {172,16 }, {157,16 }, {142,16 }, {127,16 }, {112,16 }, { 97,16 }, { 82,16 }, { 67,16 }, { 52,16 }, { 37,16 }, { 22,16 }, { 4,16 },
+ {224,0 }, {202,0 }, {179,0 }, {164,0 }, {149,0 }, {134,0 }, {119,0 }, {105,0 }, { 90,0 }, { 75,0 }, { 60,0 }, { 45,0 }, { 30,0 }, { 15,0 }, { 0,0 }
// underglow LEDs
+ #ifndef ID67_DISABLE_UNDERGLOW
, {0, 0}, {56, 0}, {112, 0}, {168, 0}, {224, 0},
{224, 64}, {168, 64}, {112, 64}, {56, 64}, {0, 64}
#endif
}, {
// 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
+ // **NB: In reverse order**
+ 1, 1, 1, 1, 1, 4, 1, 1, 1, // fifth/bottom row
+ 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, // fourth row
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9, // third row
- 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, // fourth row
- 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 // fifth row
+ 1, 4, 4, 4, 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, 4, 1 // first/top row
// underglow LEDs
#ifndef ID67_DISABLE_UNDERGLOW
- , 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
+ , 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2
#endif
} };
-#endif // #ifdef RGB_MATRIX_ENABLE
-
-
-/* Use `#define ID67_CAPS_LOCK_KEY_INDEX 36` in `keymaps/yourkeymap/config.h`
- * if you want to enable Caps-Lock LED mode */
-#if defined(RGB_MATRIX_ENABLE) && defined(ID67_CAPS_LOCK_KEY_INDEX)
-
-#define ID67_CAPS_LOCK_MAX_BRIGHTNESS 0xFF
-#ifdef RGB_MATRIX_MAXIMUM_BRIGHTNESS
- #undef ID67_CAPS_LOCK_MAX_BRIGHTNESS
- #define ID67_CAPS_LOCK_MAX_BRIGHTNESS RGB_MATRIX_MAXIMUM_BRIGHTNESS
-#endif
-
-#define ID67_CAPS_LOCK_VAL_STEP 8
-#ifdef RGB_MATRIX_VAL_STEP
- #undef ID67_CAPS_LOCK_VAL_STEP
- #define ID67_CAPS_LOCK_VAL_STEP RGB_MATRIX_VAL_STEP
-#endif
-
-/* This function is defined as weak, so if you create your own in keymap then
- * that will compile, not this */
-__attribute__((weak))
-void rgb_matrix_indicators_user(void) {
- if (host_keyboard_led_state().caps_lock) {
- uint8_t b = rgb_matrix_get_val();
- if (b < ID67_CAPS_LOCK_VAL_STEP) {
- b = ID67_CAPS_LOCK_VAL_STEP;
- } else if (b < (ID67_CAPS_LOCK_MAX_BRIGHTNESS - ID67_CAPS_LOCK_VAL_STEP)) {
- b += ID67_CAPS_LOCK_VAL_STEP; // one step more than current brightness
- } else {
- b = ID67_CAPS_LOCK_MAX_BRIGHTNESS;
- }
- rgb_matrix_set_color(ID67_CAPS_LOCK_KEY_INDEX, b, b, b); // white, with the adjusted brightness
- }
-}
-
-#endif // #ifdef ID67_CAPS_LOCK_KEY_INDEX
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/idobao/id67/id67.h b/keyboards/idobao/id67/id67.h
index a8eead92a0..cd5ab8de09 100644
--- a/keyboards/idobao/id67/id67.h
+++ b/keyboards/idobao/id67/id67.h
@@ -1,36 +1,8 @@
-/* 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/>.
- */
+// Copyright 2021 Tybera (@tybera)
+// Copyright 2021 Werther (@thewerther)
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "quantum.h"
-
-#define ___ 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, 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, ___, 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 }, \
-}
diff --git a/keyboards/idobao/id67/info.json b/keyboards/idobao/id67/info.json
index 545cd863d8..5d70e19cd8 100644
--- a/keyboards/idobao/id67/info.json
+++ b/keyboards/idobao/id67/info.json
@@ -1,84 +1,105 @@
{
+ "manufacturer": "IDOBAO",
"keyboard_name": "ID67",
- "url": "https://idobao.net",
"maintainer": "thewerther",
- "layout_aliases": {
- "LAYOUT": "LAYOUT_65_ansi_blocker"
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "debounce": 5,
+ "features": {
+ "bootmagic": true,
+ "mousekey": true,
+ "extrakey": true,
+ "command": false,
+ "console": false,
+ "nkro": true,
+ "backlight": false,
+ "rgblight": false
+ },
+ "matrix_pins": {
+ "cols": ["C7", "F6", "F5", "F4", "F1", "B7", "D5", "D1", "D2", "D3", "D4", "D0", "D6", "D7", "B4"],
+ "rows": ["B0", "B1", "B2", "B3", "F7"]
+ },
+ "processor": "atmega32u4",
+ "url": "https://idobao.net/search?type=product&q=ID67*",
+ "usb": {
+ "vid": "0x6964",
+ "pid": "0x0267",
+ "device_version": "2.0.0"
},
"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},
+ { "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, "w":2 },
+ { "matrix": [0, 14], "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},
+ { "matrix": [1, 0], "x":0, "y":1, "w":1.5 },
+ { "matrix": [1, 1], "x":1.5, "y":1 },
+ { "matrix": [1, 2], "x":2.5, "y":1 },
+ { "matrix": [1, 3], "x":3.5, "y":1 },
+ { "matrix": [1, 4], "x":4.5, "y":1 },
+ { "matrix": [1, 5], "x":5.5, "y":1 },
+ { "matrix": [1, 6], "x":6.5, "y":1 },
+ { "matrix": [1, 7], "x":7.5, "y":1 },
+ { "matrix": [1, 8], "x":8.5, "y":1 },
+ { "matrix": [1, 9], "x":9.5, "y":1 },
+ { "matrix": [1, 10], "x":10.5, "y":1 },
+ { "matrix": [1, 11], "x":11.5, "y":1 },
+ { "matrix": [1, 12], "x":12.5, "y":1 },
+ { "matrix": [1, 13], "x":13.5, "y":1, "w":1.5 },
+ { "matrix": [1, 14], "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},
+ { "matrix": [2, 0], "x":0, "y":2, "w":1.75 },
+ { "matrix": [2, 1], "x":1.75, "y":2 },
+ { "matrix": [2, 2], "x":2.75, "y":2 },
+ { "matrix": [2, 3], "x":3.75, "y":2 },
+ { "matrix": [2, 4], "x":4.75, "y":2 },
+ { "matrix": [2, 5], "x":5.75, "y":2 },
+ { "matrix": [2, 6], "x":6.75, "y":2 },
+ { "matrix": [2, 7], "x":7.75, "y":2 },
+ { "matrix": [2, 8], "x":8.75, "y":2 },
+ { "matrix": [2, 9], "x":9.75, "y":2 },
+ { "matrix": [2, 10], "x":10.75, "y":2 },
+ { "matrix": [2, 11], "x":11.75, "y":2 },
+ { "matrix": [2, 13], "x":12.75, "y":2, "w":2.25 },
+ { "matrix": [2, 14], "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},
+ { "matrix": [3, 0], "x":0, "y":3, "w":2.25 },
+ { "matrix": [3, 2], "x":2.25, "y":3 },
+ { "matrix": [3, 3], "x":3.25, "y":3 },
+ { "matrix": [3, 4], "x":4.25, "y":3 },
+ { "matrix": [3, 5], "x":5.25, "y":3 },
+ { "matrix": [3, 6], "x":6.25, "y":3 },
+ { "matrix": [3, 7], "x":7.25, "y":3 },
+ { "matrix": [3, 8], "x":8.25, "y":3 },
+ { "matrix": [3, 9], "x":9.25, "y":3 },
+ { "matrix": [3, 10], "x":10.25, "y":3 },
+ { "matrix": [3, 11], "x":11.25, "y":3 },
+ { "matrix": [3, 12], "x":12.25, "y":3, "w":1.75 },
+ { "matrix": [3, 13], "x":14, "y":3 },
+ { "matrix": [3, 14], "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}
+ { "matrix": [4, 0], "x":0, "y":4, "w":1.25 },
+ { "matrix": [4, 1], "x":1.25, "y":4, "w":1.25 },
+ { "matrix": [4, 3], "x":2.5, "y":4, "w":1.25 },
+ { "matrix": [4, 6], "x":3.75, "y":4, "w":6.25 },
+ { "matrix": [4, 10], "x":10, "y":4, "w":1.25 },
+ { "matrix": [4, 11], "x":11.25, "y":4, "w":1.25 },
+ { "matrix": [4, 12], "x":13, "y":4 },
+ { "matrix": [4, 13], "x":14, "y":4 },
+ { "matrix": [4, 14], "x":15, "y":4 }
]
}
}
diff --git a/keyboards/idobao/id67/keymaps/default/keymap.c b/keyboards/idobao/id67/keymaps/default/keymap.c
index 54b39ad4a7..55e6fd88cd 100644
--- a/keyboards/idobao/id67/keymaps/default/keymap.c
+++ b/keyboards/idobao/id67/keymaps/default/keymap.c
@@ -1,23 +1,22 @@
-/* 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/>.
- */
+// Copyright 2021 Tybera (@tybera)
+// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Backspc│ ~ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │Del│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PUp│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shft │Up │PDn│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │Ctrl│Win │Alt │ │Fn1 │Ctrl│ │Lf │Dn │Rt │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
[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,
@@ -25,12 +24,25 @@ 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_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │Tog│Up │Mod│Hu+│Hu-│Sa+│Sa-│Br+│Br-│ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │Lf │Dn │Rt │ │ │ │ │ │Ins│Hom│PUp│ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │RST│Sp+│Sp-│ │Vl-│Mut│Vl+│Del│End│PDn│ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
[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, _______, _______,
- _______, QK_BOOT, RGB_SPI, RGB_SPD, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_DEL, KC_END, KC_PGDN, _______, _______,
+ _______, QK_BOOT, RGB_SPI, RGB_SPD, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_DEL, KC_END, KC_PGDN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
-
+ )
};
diff --git a/keyboards/idobao/id67/keymaps/idobao/keymap.c b/keyboards/idobao/id67/keymaps/idobao/keymap.c
new file mode 100644
index 0000000000..55ff6e5730
--- /dev/null
+++ b/keyboards/idobao/id67/keymaps/idobao/keymap.c
@@ -0,0 +1,341 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// Copyright 2022 IDOBAO (@idobaokb)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/* ------------------------------------------------------------------
+ * This is the IDOBAO factory default keymap ;)
+ * ------------------------------------------------------------------ */
+
+#include QMK_KEYBOARD_H
+#include "version.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+typedef union {
+ uint32_t raw;
+ struct {
+ bool rgb_disable_perkey:1;
+ #ifndef ID67_DISABLE_UNDERGLOW
+ bool rgb_disable_underglow:1;
+ #endif // ID67_DISABLE_UNDERGLOW
+ };
+} user_config_t;
+
+#endif // RGB_MATRIX_ENABLE
+
+enum {
+ KC_MCON = USER00, // macOS Open Mission Control
+ KC_LPAD, // macOS Open Launchpad
+ #ifdef RGB_MATRIX_ENABLE
+ RGB_TPK, // Toggle Per-Key
+ #ifndef ID67_DISABLE_UNDERGLOW
+ RGB_TUG, // Toggle Underglow
+ #endif // ID67_DISABLE_UNDERGLOW
+ #endif //RGB_MATRIX_ENABLE
+ KB_VRSN = USER09 // debug, type version
+};
+
+#ifndef RGB_MATRIX_ENABLE
+ #define RGB_TPK _______
+ #define RGB_TUG _______
+#else
+ #ifdef ID67_DISABLE_UNDERGLOW
+ #define RGB_TUG _______
+ #endif // ID67_DISABLE_UNDERGLOW
+#endif // RGB_MATRIX_ENABLE
+
+enum macos_consumer_usages {
+ _AC_SHOW_ALL_WINDOWS = 0x29F, // mapped to KC_MCON
+ _AC_SHOW_ALL_APPS = 0x2A0 // mapped to KC_LPAD
+};
+
+/* Special Keys */
+#define SK_LT1C LT(1, KC_CAPS) // Layer Tap 1, i.e., Tap = Caps Lock, Hold = Layer 1
+#define SK_LT2A LT(2, KC_APP) // Layer Tap 2, i.e., Tap = Menu, Hold = Layer 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Backspc│ ~ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │Del│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │*Caps*│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PUp│ *Caps* => `LT(1, KC_CAPS)`
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shft │Up │PDn│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │Ctrl│Win │Alt │ │Fn1 │*Mn*│ │Lf │Dn │Rt │ *Mn* => `LT(2, KC_APP)`
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+ [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,
+ SK_LT1C, KC_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), SK_LT2A, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │Tog│Up │Mod│Hu+│Hu-│Sa+│Sa-│Br+│Br-│ │TUG│TPK│ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │Lf │Dn │Rt │ │ │ │ │ │Ins│Hom│PUp│ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │RST│Sp+│Sp-│ │Vl-│Mut│Vl+│Del│End│PDn│ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+ [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, _______, _______,
+ _______, RGB_TOG, KC_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, RGB_TUG, RGB_TPK, _______, _______,
+ KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _______, _______,
+ _______, QK_BOOT, RGB_SPI, RGB_SPD, KB_VRSN, KC_VOLD, KC_MUTE, KC_VOLU, KC_DEL, KC_END, KC_PGDN, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+ [2] = LAYOUT_65_ansi_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_65_ansi_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#ifdef RGB_MATRIX_ENABLE
+
+/*
+ * RGB Stuff
+ */
+
+#define ID67_CAPS_LOCK_KEY_INDEX 36 // position of Caps Lock key
+
+#define ID67_CAPS_LOCK_MAX_BRIGHTNESS 0xFF
+#ifdef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+ #undef ID67_CAPS_LOCK_MAX_BRIGHTNESS
+ #define ID67_CAPS_LOCK_MAX_BRIGHTNESS RGB_MATRIX_MAXIMUM_BRIGHTNESS
+#endif
+
+#define ID67_CAPS_LOCK_VAL_STEP 8
+#ifdef RGB_MATRIX_VAL_STEP
+ #undef ID67_CAPS_LOCK_VAL_STEP
+ #define ID67_CAPS_LOCK_VAL_STEP RGB_MATRIX_VAL_STEP
+#endif
+
+user_config_t user_config;
+
+void id67_update_rgb_mode(void) {
+ uint8_t flags = LED_FLAG_ALL;
+
+ if (user_config.rgb_disable_perkey
+ #ifndef ID67_DISABLE_UNDERGLOW
+ && user_config.rgb_disable_underglow
+ #endif // ID67_DISABLE_UNDERGLOW
+ ) {
+ flags = 0; // All OFF Condition
+ } else {
+ if (user_config.rgb_disable_perkey) {
+ #ifndef ID67_DISABLE_UNDERGLOW
+ flags = LED_FLAG_UNDERGLOW | 0xF0;
+ #else
+ flags = 0xF0;
+ #endif // ID67_DISABLE_UNDERGLOW
+ }
+ #ifndef ID67_DISABLE_UNDERGLOW
+ if (user_config.rgb_disable_underglow) {
+ flags = LED_FLAG_MODIFIER | LED_FLAG_KEYLIGHT | LED_FLAG_INDICATOR | 0xF0;
+ }
+ #endif // ID67_DISABLE_UNDERGLOW
+ }
+
+ if (flags == 0) {
+ rgb_matrix_set_flags(0);
+ rgb_matrix_set_color_all(HSV_OFF);
+ } else {
+ rgb_matrix_set_flags(flags);
+ rgb_matrix_enable_noeeprom();
+ }
+
+ eeconfig_update_kb(user_config.raw); // write back to EEPROM
+}
+
+void id67_get_rgb_mode(void) {
+ user_config.raw = eeconfig_read_kb(); // read config from EEPROM
+ id67_update_rgb_mode();
+}
+
+void keyboard_post_init_user(void) {
+ id67_get_rgb_mode();
+}
+
+void eeconfig_init_user(void) {
+ // EEPROM is getting reset!
+ user_config.raw = 0;
+ id67_update_rgb_mode();
+}
+
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ // Caps Lock key stuff
+
+ if (host_keyboard_led_state().caps_lock) {
+ uint8_t v = rgb_matrix_get_val();
+ if (v < ID67_CAPS_LOCK_VAL_STEP) {
+ v = ID67_CAPS_LOCK_VAL_STEP;
+ } else if (v < (ID67_CAPS_LOCK_MAX_BRIGHTNESS - ID67_CAPS_LOCK_VAL_STEP)) {
+ if (!user_config.rgb_disable_perkey) {
+ v += ID67_CAPS_LOCK_VAL_STEP; // inc. by one more step than current brightness
+ } // else leave as current brightness
+ } else {
+ v = ID67_CAPS_LOCK_MAX_BRIGHTNESS;
+ }
+ rgb_matrix_set_color(ID67_CAPS_LOCK_KEY_INDEX, v, v, v); // white, brightness adjusted
+ } else if (user_config.rgb_disable_perkey) {
+ rgb_matrix_set_color(ID67_CAPS_LOCK_KEY_INDEX, HSV_OFF); // off
+ }
+}
+
+#endif // RGB_MATRIX_ENABLE
+
+/*
+ * Extra keys and RGB Toggle handler
+ */
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ switch (keycode) {
+
+ // handle RGB toggle key - this ensures caps lock always works
+ #ifdef RGB_MATRIX_ENABLE
+
+ case QK_BOOT:
+ if (record->event.pressed) {
+ rgb_matrix_set_color_all(RGB_MATRIX_MAXIMUM_BRIGHTNESS, 0, 0); // All red
+ rgb_matrix_driver.flush();
+ }
+ return true;
+
+ case RGB_TOG:
+ /* roll through the LED modes
+ * | Level | Per-key | Underglow |
+ * |-------------|---------|-----------|
+ * | 0 (default) | on | on |
+ * | 1 | OFF | on |
+ * | 2 | on | OFF |
+ * | 3 | OFF | OFF |
+ *
+ * for ID67_DISABLE_UNDERGLOW
+ * | Level | Per-key |
+ * |-------------|---------|
+ * | 0 (default) | on |
+ * | 1 | OFF |
+ */
+ if (record->event.pressed) {
+ if ((!user_config.rgb_disable_perkey)
+ #ifndef ID67_DISABLE_UNDERGLOW
+ && (!user_config.rgb_disable_underglow)
+ #endif // ID67_DISABLE_UNDERGLOW
+ ) {
+ user_config.rgb_disable_perkey = 1;
+
+ #ifndef ID67_DISABLE_UNDERGLOW
+
+ } else if (user_config.rgb_disable_perkey && (!user_config.rgb_disable_underglow)) {
+ user_config.rgb_disable_perkey = 0;
+ user_config.rgb_disable_underglow = 1;
+
+ } else if ((!user_config.rgb_disable_perkey) && user_config.rgb_disable_underglow) {
+ user_config.rgb_disable_perkey = 1;
+
+ #endif // ID67_DISABLE_UNDERGLOW
+
+ } else {
+ user_config.rgb_disable_perkey = 0;
+ #ifndef ID67_DISABLE_UNDERGLOW
+ user_config.rgb_disable_underglow = 0;
+ #endif // ID67_DISABLE_UNDERGLOW
+ }
+
+ id67_update_rgb_mode();
+ }
+ return false;
+
+ case RGB_TPK:
+ if (record->event.pressed) {
+ user_config.rgb_disable_perkey ^= 1;
+ id67_update_rgb_mode();
+ }
+ return false;
+
+ #ifndef ID67_DISABLE_UNDERGLOW
+
+ case RGB_TUG:
+ if (record->event.pressed) {
+ user_config.rgb_disable_underglow ^= 1;
+ id67_update_rgb_mode();
+ }
+ return false;
+
+ #endif // ID67_DISABLE_UNDERGLOW
+
+ case EE_CLR:
+ if (!record->event.pressed) { // on release
+ id67_get_rgb_mode();
+ }
+ return true; // let this one pass on
+
+ #endif // RGB_MATRIX_ENABLE
+
+ // print firmware version
+ case KB_VRSN:
+ if (!get_mods()) {
+ if (!record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " (v" QMK_VERSION ")");
+ }
+ }
+ return false;
+
+ // @see: https://github.com/qmk/qmk_firmware/issues/10111#issuecomment-752300353
+ case KC_MCON:
+ if (record->event.pressed) {
+ host_consumer_send(_AC_SHOW_ALL_WINDOWS);
+ } else {
+ host_consumer_send(0);
+ }
+ return false;
+
+ case KC_LPAD:
+ if (record->event.pressed) {
+ host_consumer_send(_AC_SHOW_ALL_APPS);
+ } else {
+ host_consumer_send(0);
+ }
+ return false;
+
+ default:
+ return true; /* Process all other keycodes normally */
+ }
+}
diff --git a/keyboards/idobao/id80/v1/iso/keymaps/via/rules.mk b/keyboards/idobao/id67/keymaps/idobao/rules.mk
index ca9fed0e6b..ca9fed0e6b 100644
--- a/keyboards/idobao/id80/v1/iso/keymaps/via/rules.mk
+++ b/keyboards/idobao/id67/keymaps/idobao/rules.mk
diff --git a/keyboards/idobao/id67/keymaps/thewerther/config.h b/keyboards/idobao/id67/keymaps/thewerther/config.h
index a63a92b171..4cd526feea 100644
--- a/keyboards/idobao/id67/keymaps/thewerther/config.h
+++ b/keyboards/idobao/id67/keymaps/thewerther/config.h
@@ -1,23 +1,11 @@
-/* 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/>.
- */
+// Copyright 2021 Werther (@thewerther)
+// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define DRIVER_LED_UNDERGLOW 10
#define TAPPING_TERM 500
+#define PERMISSIVE_HOLD
#if defined(RGB_MATRIX_ENABLE)
#undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
diff --git a/keyboards/idobao/id67/keymaps/thewerther/keymap.c b/keyboards/idobao/id67/keymaps/thewerther/keymap.c
index 8af720755f..ef37b210f5 100644
--- a/keyboards/idobao/id67/keymaps/thewerther/keymap.c
+++ b/keyboards/idobao/id67/keymaps/thewerther/keymap.c
@@ -1,19 +1,5 @@
-/* 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/>.
- */
+// Copyright 2021 Werther (@thewerther)
+// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
@@ -36,14 +22,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, 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,
+ _______, QK_BOOT, RGB_SPI, RGB_SPD, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, _______, _______, _______, KC_END,
_______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
void matrix_scan_user(void) {
-# if defined(RGB_MATRIX_ENABLE)
+ #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
@@ -52,6 +38,5 @@ void matrix_scan_user(void) {
rgb_matrix_set_color(i, current_color.r, current_color.g, current_color.b);
}
}
-# endif
+ #endif
}
-
diff --git a/keyboards/idobao/id67/keymaps/via/keymap.c b/keyboards/idobao/id67/keymaps/via/keymap.c
index ff0bfff745..0014fb3bbf 100644
--- a/keyboards/idobao/id67/keymaps/via/keymap.c
+++ b/keyboards/idobao/id67/keymaps/via/keymap.c
@@ -1,22 +1,22 @@
-/* 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/>.
- */
+// Copyright 2021 Tybera (@tybera)
+// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Backspc│ ~ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │Del│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PUp│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shft │Up │PDn│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │Ctrl│Win │Alt │ │Fn1 │Ctrl│ │Lf │Dn │Rt │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
[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,
@@ -24,13 +24,41 @@ 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_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │Tog│Up │Mod│Hu+│Hu-│Sa+│Sa-│Br+│Br-│ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │Lf │Dn │Rt │ │ │ │ │ │Ins│Hom│PUp│ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │RST│Sp+│Sp-│ │Vl-│Mut│Vl+│Del│End│PDn│ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
[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, _______, _______,
_______, 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, _______, _______,
- _______, QK_BOOT, BL_DEC, BL_TOGG, BL_INC, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_DEL, KC_END, KC_PGDN, _______, _______,
+ _______, QK_BOOT, RGB_SPI, RGB_SPD, _______, KC_VOLD, KC_MUTE, KC_VOLU, KC_DEL, KC_END, KC_PGDN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
[2] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -38,11 +66,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
+
[3] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
+ )
};
diff --git a/keyboards/idobao/id67/keymaps/vinorodrigues/config.h b/keyboards/idobao/id67/keymaps/vinorodrigues/config.h
index 92b3ec0658..f7ada65953 100644
--- a/keyboards/idobao/id67/keymaps/vinorodrigues/config.h
+++ b/keyboards/idobao/id67/keymaps/vinorodrigues/config.h
@@ -1,26 +1,14 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
/*
* IDOBAO ID67 Keymap for a ID67 Bestype, built for Mac use
- * Copyright (C) 2022 Vino 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 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
-#if defined(RGB_MATRIX_ENABLE)
- #define VIA_QMK_RGBLIGHT_ENABLE
- #define ID67_DISABLE_UNDERGLOW // personal choice, I use a ID67 Bestype
+#ifdef RGB_MATRIX_ENABLE
+ #define ID67_DISABLE_UNDERGLOW
#ifdef RGB_MATRIX_MAXIMUM_BRIGHTNESS
#undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
diff --git a/keyboards/idobao/id67/keymaps/vinorodrigues/keymap.c b/keyboards/idobao/id67/keymaps/vinorodrigues/keymap.c
index c62db2c724..1bf6971730 100644
--- a/keyboards/idobao/id67/keymaps/vinorodrigues/keymap.c
+++ b/keyboards/idobao/id67/keymaps/vinorodrigues/keymap.c
@@ -1,19 +1,8 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
/*
* IDOBAO ID67 Keymap for a ID67 Bestype, built for Mac use
- * Copyright (C) 2022 Vino 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 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
@@ -44,30 +33,85 @@ enum macos_consumer_usages {
#endif
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Backspc│ ~ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │Del│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │*Caps*│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PUp│ *Caps* => `LT(1, KC_CAPS)`
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shft │Up │PDn│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │Ctrl│Opt │Comm│ │Fn1 │Fn2 │ │Lf │Dn │Rt │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
[_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_GRAVE, \
KC_TAB, KC_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_DELETE, \
LT1_C_L, KC_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, KC_SPC, FN_MO13, FN_MO23, KC_LEFT, KC_DOWN, KC_RIGHT),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ ~ │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ ERASE │F13│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │Up │ │ │ │ │ │ │ │PSc│Hom│End│Eject│Ins│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ Caps │Lf │Dn │Rt │ │ │ │ │ │ │PUp│PDn│ enter │Hom│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ Shft │ │ │ │ │ │ │ │ │Ins│Del│Shift │ │End│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ctrl│opt │comm│ │ │Fn3 │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
[_FN1] = LAYOUT_65_ansi_blocker(
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_ERAS, KC_F13, \
_______, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_HOME, KC_END, KC_EJCT, KC_INS, \
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, KC_PGDN, KC_PENT, KC_HOME, \
KC_RSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_DELETE, KC_LSFT, _______, KC_END, \
KC_RCTL, KC_RALT, KC_RGUI, _______, _______, _______, _______, _______, _______),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │Esc│SB-│SB+│mMC│mLP│Br-│Br+│Prv│Ply│Nxt│Mut│Vl-│Vl+│ out │F14│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ Tog │Mod│ │ │ │ │ │ │ │ │ │ │ │ │PSc│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │mod│ │ │ │ │ │ │ │ │Hu+│Sa+│ │SLk│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │ │ │ │ │Hu-│Sa-│ │Br+│Pau│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │Fn3 │ │ │Sp-│Br-│Sp+│
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
[_FN2] = LAYOUT_65_ansi_blocker(
KC_ESC, KC_BRID, KC_BRIU, KC_MCON, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_OUT, KC_F14, \
RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, \
XXXXXXX, RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_SAI, XXXXXXX, KC_SLCK, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUD, RGB_SAD, XXXXXXX, RGB_VAI, KC_PAUS, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SPD, RGB_VAD, RGB_SPI),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │RST│M01│M02│M03│M04│M05│M06│M07│M08│M09│M10│M11│M12│ Power │F15│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │Sleep│ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ Debug │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │Ver│ │ │ │ │ │ │ │M00│ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ Wake │ │ │ │M13│M14│M15│
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
[_FN3] = LAYOUT_65_ansi_blocker(
- RESET, MACRO01, MACRO02, MACRO03, MACRO04, MACRO05, MACRO06, MACRO07, MACRO08, MACRO09, MACRO10, MACRO11, MACRO12, KC_POWER, KC_F15, \
+ QK_BOOT, MACRO01, MACRO02, MACRO03, MACRO04, MACRO05, MACRO06, MACRO07, MACRO08, MACRO09, MACRO10, MACRO11, MACRO12, KC_POWER, KC_F15, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLEP, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KB_VRSN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MACRO00, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, KC_WAKE, XXXXXXX, XXXXXXX, MACRO13, MACRO14, MACRO15),
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_WAKE, XXXXXXX, XXXXXXX, MACRO13, MACRO14, MACRO15)
};
#ifdef RGB_MATRIX_ENABLE
@@ -248,12 +292,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case KC_MCON:
if (record->event.pressed) {
host_consumer_send(_AC_SHOW_ALL_WINDOWS);
+ } else {
+ host_consumer_send(0);
}
return false;
case KC_LPAD:
if (record->event.pressed) {
host_consumer_send(_AC_SHOW_ALL_APPS);
+ } else {
+ host_consumer_send(0);
}
return false;
diff --git a/keyboards/idobao/id67/keymaps/vinorodrigues/rules.mk b/keyboards/idobao/id67/keymaps/vinorodrigues/rules.mk
index 24f7bdab9c..cf6371fda0 100644
--- a/keyboards/idobao/id67/keymaps/vinorodrigues/rules.mk
+++ b/keyboards/idobao/id67/keymaps/vinorodrigues/rules.mk
@@ -1,5 +1,3 @@
LTO_ENABLE = yes
VIA_ENABLE = yes
-
-KEY_LOCK_ENABLE = no # Enable KC_LOCK support
-NKRO_ENABLE = no # N-Key Rollover must be OFF for mac keys to work
+NKRO_ENABLE = no # N-Key Rollover must be OFF for mac keys to work
diff --git a/keyboards/idobao/id67/post_rules.mk b/keyboards/idobao/id67/post_rules.mk
index 5eecdef4ce..32832a65b2 100644
--- a/keyboards/idobao/id67/post_rules.mk
+++ b/keyboards/idobao/id67/post_rules.mk
@@ -2,13 +2,7 @@
# this enables switching off thoes LEDs
# Usage: `make idobao/id67:default UNDERGLOW=off`
-ifeq ($(findstring off,$(UNDERGLOW)), off)
- $(info ** UNDERGLOW OFF)
- OPT_DEFS += -DID67_DISABLE_UNDERGLOW
-else ifeq ($(findstring no,$(UNDERGLOW)), no)
- $(info ** NO UNDERGLOW)
- OPT_DEFS += -DID67_DISABLE_UNDERGLOW
-else ifeq ($(findstring 0,$(UNDERGLOW)), 0)
- $(info ** Nil UNDERGLOW)
+UNDERGLOW ?= yes
+ifneq ($(strip $(UNDERGLOW)), yes)
OPT_DEFS += -DID67_DISABLE_UNDERGLOW
endif
diff --git a/keyboards/idobao/id67/readme.md b/keyboards/idobao/id67/readme.md
index b69e2e60b1..55d5f5b512 100644
--- a/keyboards/idobao/id67/readme.md
+++ b/keyboards/idobao/id67/readme.md
@@ -1,25 +1,32 @@
# IDOBAO ID67
-![id67](https://idobao.github.io/assets/img/idobao-id67.png)
+![id67](https://i.imgur.com/XiEnksS.png)
A 65% hotswap keyboard from IDOBAO.
## ANSI support:
-* Keyboard Maintainer: Tybera *(fmr.)*, [thewerther](https://github.com/thewerther) *(curr.)*
-* Hardware Supported: IDOBAO ID67, ID67V2, ID67 Crystal & ID67 Bestype
-* Hardware Availability: IDOBAO website:
+* Keyboard Maintainer:
+ - [Tybera](https://github.com/tybera) *(fmr.)*
+ - [Werther](https://github.com/thewerther) *(curr.)*
+ - [Vino Rodrigues](https://github.com/vinorodrigues) *(curr.)*
+* Hardware Supported:
+ - **IDOBAO ID67**
+ - **ID67v2**
+ - **ID67 Crystal**
+ - **ID67 Bestype**
+* Hardware Availability: [IDOBAO.net](https://idobao.net/search?type=product&q=ID67*):
* [ID67](https://www.idobao.net/products/idobao-id67-65-hot-swappable-mechanical-keyboard-kit-1)
- * [ID67V2](https://idobao.net/products/idobao-id67v2-65-hot-swappable-mechanical-keyboard-kit)
+ * [ID67v2](https://idobao.net/products/idobao-id67v2-65-hot-swappable-mechanical-keyboard-kit)
* [ID67 Crystal](https://idobao.net/products/idobao-id67-crystal-keyboard-kit-gasket-mount-version)
* [ID67 Bestype](https://idobao.net/products/idobao-id67-bestype-keyboard-kit-aluminum-with-brass-weight)
-## Layout
+## ANSI Layout
-![ID67 layout](https://idobao.github.io/kle/idobao-id67.png)
+![ID67 Layout](https://idobao.github.io/kle/idobao-id67.png)
-## Compiling and flashing
+## Compiling and Flashing
Make example for this keyboard (after setting up your build environment):
@@ -37,4 +44,4 @@ 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).
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` (FN+Z).
diff --git a/keyboards/idobao/id67/rules.mk b/keyboards/idobao/id67/rules.mk
index 729e1ca67c..ce58b87be5 100644
--- a/keyboards/idobao/id67/rules.mk
+++ b/keyboards/idobao/id67/rules.mk
@@ -1,21 +1,5 @@
-# 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
-LAYOUTS = 65_ansi_blocker
diff --git a/keyboards/idobao/id75/keymaps/drewdobo/keymap.c b/keyboards/idobao/id75/keymaps/drewdobo/keymap.c
index 9dfc335e82..1fc047edcc 100644
--- a/keyboards/idobao/id75/keymaps/drewdobo/keymap.c
+++ b/keyboards/idobao/id75/keymaps/drewdobo/keymap.c
@@ -48,7 +48,7 @@ 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, XXXXXXX, RESET, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, QK_BOOT, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, Z_MAC, _______, XXXXXXX, KC_HOME, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, \
diff --git a/keyboards/idobao/id75/keymaps/egstad/keymap.c b/keyboards/idobao/id75/keymaps/egstad/keymap.c
index febbad7c6e..9bd350aa7e 100644
--- a/keyboards/idobao/id75/keymaps/egstad/keymap.c
+++ b/keyboards/idobao/id75/keymaps/egstad/keymap.c
@@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, TD_BRAC, \
_______, 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, MT_SHFT, \
- LG_ZMOT, LG_ZMIN, KC_LCTL, KC_LALT, KC_LGUI, KC_BSPC, _______, RESET, _______, FN_SPC, KC_ENT, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT \
+ LG_ZMOT, LG_ZMIN, KC_LCTL, KC_LALT, KC_LGUI, KC_BSPC, _______, QK_BOOT, _______, FN_SPC, KC_ENT, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT \
),
@@ -114,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | RGB | | | | | | RGB VD | RGB VI | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | RESET | | | | | | RGB RMD| RGB MD | | | PLAY | PREV | VOL UP | VOL DN | NEXT |
+ * | QK_BOOT | | | | | | RGB RMD| RGB MD | | | PLAY | PREV | VOL UP | VOL DN | NEXT |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
@@ -123,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, \
KC_ASTG, _______, _______, _______, _______, _______, RGB_SAD, RGB_SAI, _______, _______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, _______, \
RGB_TOG, _______, _______, _______, _______, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, \
- RESET, _______, _______, _______, _______, _______, RGB_RMOD,RGB_MOD, _______, _______, KC_MPLY, KC_MRWD, KC_VOLU, KC_VOLD, KC_MFFD \
+ QK_BOOT, _______, _______, _______, _______, _______, RGB_RMOD,RGB_MOD, _______, _______, KC_MPLY, KC_MRWD, KC_VOLU, KC_VOLD, KC_MFFD \
),
};
diff --git a/keyboards/idobao/id75/keymaps/gkbd/keymap.c b/keyboards/idobao/id75/keymaps/gkbd/keymap.c
index 16e16cd855..b4dec42cad 100644
--- a/keyboards/idobao/id75/keymaps/gkbd/keymap.c
+++ b/keyboards/idobao/id75/keymaps/gkbd/keymap.c
@@ -32,7 +32,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
),
[2] = LAYOUT_ortho_5x15(/* Function keys */
- RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TG(1), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG,
+ QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TG(1), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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,
KC_SLCK, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO, KC_PAUS,
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_TRNS,
diff --git a/keyboards/idobao/id75/keymaps/gkbd_75/keymap.c b/keyboards/idobao/id75/keymaps/gkbd_75/keymap.c
index be67aead4e..b7f7477904 100644
--- a/keyboards/idobao/id75/keymaps/gkbd_75/keymap.c
+++ b/keyboards/idobao/id75/keymaps/gkbd_75/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_PGDN, KC_PSCR, KC_INS, KC_DEL, LT(1,KC_F11), KC_BSPC, KC_LSFT, KC_RCTL, KC_SPC, LT(1,KC_F12), KC_HOME, KC_END, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_ortho_5x15(
- 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, RGB_TOG,
+ QK_BOOT, KC_NO, 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_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,
KC_NO, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_SLCK, KC_NO, KC_NO, KC_PAUS, KC_BSLS, KC_PIPE, KC_SCLN, KC_COLN, 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, KC_NO, KC_NO,
diff --git a/keyboards/idobao/id75/keymaps/gkbd_orthon/keymap.c b/keyboards/idobao/id75/keymaps/gkbd_orthon/keymap.c
index a603eae657..8fa10b0ac2 100644
--- a/keyboards/idobao/id75/keymaps/gkbd_orthon/keymap.c
+++ b/keyboards/idobao/id75/keymaps/gkbd_orthon/keymap.c
@@ -73,6 +73,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_SLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO, KC_TRNS, KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PAUS,
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,
- RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_F11, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG
+ QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_F11, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, RGB_TOG
)
};
diff --git a/keyboards/idobao/id75/keymaps/greenshadowmaker/keymap.c b/keyboards/idobao/id75/keymaps/greenshadowmaker/keymap.c
index d23bc7c7df..ffe2c6053b 100644
--- a/keyboards/idobao/id75/keymaps/greenshadowmaker/keymap.c
+++ b/keyboards/idobao/id75/keymaps/greenshadowmaker/keymap.c
@@ -81,7 +81,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* ADJUST
* .--------------------------------------------------------------------------------------------------------------------------------------.
- * | RESET | | | | | | | | |rgbplain|rgbtest | rgbmode| | | |
+ * | QK_BOOT | | | | | | | | |rgbplain|rgbtest | rgbmode| | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | | | | |rgb tog | bl_tog | | | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
@@ -93,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_5x15(
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_P, RGB_M_T, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_M_P, RGB_M_T, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, BL_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
RAISE, XXXXXXX, RGB_HUI, RGB_SAI, RGB_VAI, BL_INC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
EEP_RST, XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/keyboards/idobao/id75/keymaps/pathnirvana/keymap.c b/keyboards/idobao/id75/keymaps/pathnirvana/keymap.c
index ea6831d6da..e622660d96 100644
--- a/keyboards/idobao/id75/keymaps/pathnirvana/keymap.c
+++ b/keyboards/idobao/id75/keymaps/pathnirvana/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[2] = LAYOUT_ortho_5x15(
KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_MUTE, KC_VOLD, KC_VOLU, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_MSEL, BL_BRTG, RGB_HUD, RGB_HUI, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, LSFT(KC_LEFT), LSFT(KC_DOWN), LSFT(KC_UP), LSFT(KC_RGHT), KC_NO, KC_NO,
- KC_SLEP, BL_STEP, RGB_SAD, RGB_SAI, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, RESET,
+ KC_SLEP, BL_STEP, RGB_SAD, RGB_SAI, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, QK_BOOT,
KC_NO, BL_TOGG, RGB_VAD, RGB_VAI, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NO, LCTL(KC_LEFT), LCTL(KC_DOWN), LCTL(KC_UP), LCTL(KC_RGHT), KC_NO, KC_NO,
KC_NO, RGB_TOG, RGB_RMOD, RGB_MOD, KC_NO, KC_NO, KC_WBAK, KC_NO, KC_WFWD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO),
[3] = LAYOUT_ortho_5x15(
diff --git a/keyboards/idobao/id75/keymaps/revok75/keymap.c b/keyboards/idobao/id75/keymaps/revok75/keymap.c
index a380240326..3c23bfff5a 100644
--- a/keyboards/idobao/id75/keymaps/revok75/keymap.c
+++ b/keyboards/idobao/id75/keymaps/revok75/keymap.c
@@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* .--------------------------------------------------------------------------------------------------------------------------------------.
* | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | VOLDN | VOLUP | MUTE | DEL |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
- * | TAB | - | WIN | - | - | RGB_TOG| - | - | OPTION | RESET | - | [ | ] | - | - |
+ * | TAB | - | WIN | - | - | RGB_TOG| - | - | OPTION | QK_BOOT | - | [ | ] | - | - |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
* | CAP LK | MAC | RAINBOW| PLAIN | - | - | - | - | - | - | ; | ' | ENTER | ENTER | REF |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
@@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN] = LAYOUT_ortho_5x15( /* OSLAYOUT + NUMPAD + MEDIA + LIGHTING */
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_VOLD, KC_VOLU, KC_MUTE, KC_DEL, \
- KC_TRNS, KC_NO, DF(_QW_W), KC_NO, KC_NO, RGB_TOG, KC_NO, KC_NO, KC_RALT, RESET, KC_NO, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_NO, DF(_QW_W), KC_NO, KC_NO, RGB_TOG, KC_NO, KC_NO, KC_RALT, QK_BOOT, KC_NO, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, \
KC_TRNS, DF(_QW_M), RGB_MODE_RAINBOW, RGB_MODE_PLAIN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_NO, KC_NO, KC_DOT, KC_TRNS, KC_TRNS, KC_TRNS, 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_TRNS, KC_TRNS, KC_PGUP, KC_END, KC_PGDN \
diff --git a/keyboards/idobao/id75/keymaps/xaceofspaidsx/keymap.c b/keyboards/idobao/id75/keymaps/xaceofspaidsx/keymap.c
index c157317e2d..fee0df2b4b 100644
--- a/keyboards/idobao/id75/keymaps/xaceofspaidsx/keymap.c
+++ b/keyboards/idobao/id75/keymaps/xaceofspaidsx/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | SELECT | CALC | UP | | | NEXT | P7 | P8 | P9 | - | | | PR SCR | SCR LK | PAUSE |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | PREV | LEFT | DOWN | RIGHT | DEL | PLAY | P4 | P5 | P6 | + | | RESET | | | |
+ * | PREV | LEFT | DOWN | RIGHT | DEL | PLAY | P4 | P5 | P6 | + | | QK_BOOT | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | VOL- | MUTE | VOL+ | APP | | STOP | P1 | P2 | P3 | PENT | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
@@ -60,7 +60,7 @@ 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_UP , _______, _______, KC_MNXT, KC_P7, KC_P8, KC_P9, KC_MINS, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, \
- KC_MPRV, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL , KC_MPLY, KC_P4, KC_P5, KC_P6, KC_PLUS, _______, RESET, _______, _______, _______, \
+ KC_MPRV, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL , KC_MPLY, KC_P4, KC_P5, KC_P6, KC_PLUS, _______, QK_BOOT, _______, _______, _______, \
KC_VOLD, KC_MUTE, KC_VOLU, KC_APP, _______, KC_MSTP, 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/idobao/id75/v1/config.h b/keyboards/idobao/id75/v1/config.h
index 918dc16481..0bb05a810c 100644
--- a/keyboards/idobao/id75/v1/config.h
+++ b/keyboards/idobao/id75/v1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6964 // ID
-#define PRODUCT_ID 0x0075
-#define DEVICE_VER 0x0001
-#define MANUFACTURER IDOBAO
-#define PRODUCT ID75
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
@@ -53,11 +45,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_DI_PIN F0
#ifdef RGB_DI_PIN
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 16
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
+ // RGBLIGHT_ANIMATIONS
+ #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 16
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
#endif
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/idobao/id75/v1/info.json b/keyboards/idobao/id75/v1/info.json
index bacdc42235..cb1e21e554 100644
--- a/keyboards/idobao/id75/v1/info.json
+++ b/keyboards/idobao/id75/v1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "IDOBO",
+ "keyboard_name": "ID75",
+ "manufacturer": "IDOBAO",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x6964",
+ "pid": "0x0075",
+ "device_version": "0.0.1"
+ },
"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/config.h b/keyboards/idobao/id75/v2/config.h
index c2e54f611d..4029d80bf8 100644
--- a/keyboards/idobao/id75/v2/config.h
+++ b/keyboards/idobao/id75/v2/config.h
@@ -18,13 +18,6 @@
#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
@@ -41,7 +34,6 @@
*/
#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
diff --git a/keyboards/idobao/id75/v2/info.json b/keyboards/idobao/id75/v2/info.json
index fe24920f81..b1afe268de 100644
--- a/keyboards/idobao/id75/v2/info.json
+++ b/keyboards/idobao/id75/v2/info.json
@@ -1,10 +1,96 @@
{
- "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}]
- }
- }
+ "keyboard_name": "ID75",
+ "manufacturer": "IDOBAO",
+ "url": "",
+ "maintainer": "peepeetee",
+ "usb": {
+ "vid": "0x6964",
+ "pid": "0x0075",
+ "device_version": "0.0.2"
+ },
+ "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
index 76a94ae38c..6e6209b467 100644
--- a/keyboards/idobao/id75/v2/readme.md
+++ b/keyboards/idobao/id75/v2/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/idobao/id80/v1/ansi/config.h b/keyboards/idobao/id80/v1/ansi/config.h
deleted file mode 100644
index 253c0757b8..0000000000
--- a/keyboards/idobao/id80/v1/ansi/config.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-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 "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6964 /* "id" */
-#define PRODUCT_ID 0x0080
-#define DEVICE_VER 0x0001
-#define MANUFACTURER IDOBAO
-#define PRODUCT ID80
diff --git a/keyboards/idobao/id80/v1/ansi/keymaps/default/keymap.c b/keyboards/idobao/id80/v1/ansi/keymaps/default/keymap.c
deleted file mode 100644
index ac2fb15b83..0000000000
--- a/keyboards/idobao/id80/v1/ansi/keymaps/default/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* 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(
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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/v1/ansi/keymaps/default/readme.md b/keyboards/idobao/id80/v1/ansi/keymaps/default/readme.md
deleted file mode 100644
index 8ae9f656cd..0000000000
--- a/keyboards/idobao/id80/v1/ansi/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The default keymap for id80
diff --git a/keyboards/idobao/id80/v1/ansi/keymaps/msf/keymap.c b/keyboards/idobao/id80/v1/ansi/keymaps/msf/keymap.c
deleted file mode 100644
index 6bb91f0f19..0000000000
--- a/keyboards/idobao/id80/v1/ansi/keymaps/msf/keymap.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copyright 2021 Miguel Filipe <miguel.filipe@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_VOLD, KC_VOLU, KC_F8, KC_F9, KC_F10, KC_PSTE, KC_PSCR, KC_DEL, MO(1),
- KC_GRV, KC_1, KC_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_LSFT, KC_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_CALC, _______, _______, _______, KC_MUTE, KC_F6, KC_F7, KC_MPLY, KC_MSTP, KC_BRID, KC_BRIU, KC_F11, KC_F12, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
- _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, KC_DEL,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, NK_TOGG, _______, _______, _______, _______, _______, BL_INC,
- _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_STEP
- ),
- [2] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
-};
-
-enum combos {
- SLSHDN_PGDN,
- SLSHUP_PGUP,
- RALTBKSPC_DELETE,
-};
-
-const uint16_t PROGMEM slashDown_combo[] = {KC_SLSH, KC_DOWN, COMBO_END};
-const uint16_t PROGMEM slashUp_combo[] = {KC_SLSH, KC_UP, COMBO_END};
-const uint16_t PROGMEM raltBackspace_combo[] = {KC_RALT, KC_BSPACE, COMBO_END};
-
-combo_t key_combos[COMBO_COUNT] = {
- [SLSHDN_PGDN] = COMBO(slashDown_combo, KC_PGDN),
- [SLSHUP_PGUP] = COMBO(slashUp_combo, KC_PGUP),
- [RALTBKSPC_DELETE] = COMBO(raltBackspace_combo, KC_DEL),
-};
diff --git a/keyboards/idobao/id80/v1/ansi/keymaps/rverst/keymap.c b/keyboards/idobao/id80/v1/ansi/keymaps/rverst/keymap.c
deleted file mode 100644
index 3656f48dfe..0000000000
--- a/keyboards/idobao/id80/v1/ansi/keymaps/rverst/keymap.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Copyright 2021 Robert Verst <robert@verst.eu> @rverst
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "rverst.h"
-
-//#define CLOSED_CASE // no underglow RGB visible
-
-// clang-format off
-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(4) , 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_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_RSFT, KC_UP,
- KC_LCTL, KC_LALT, KC_LGUI, KC_SPC , OSL(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- ),
- [1] = LAYOUT(
- RV_SNAP, 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_TRNS, KC_MUTE,
- RV_DEG , RV_SUP1, RV_SUP2, RV_SUP3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_UNEQ, RV_PM , KC_TRNS, KC_VOLU,
- KC_TRNS, KC_TRNS, KC_TRNS, RV_EUR , RV_RT , RV_TM , KC_TRNS, RV_UUML, KC_TRNS, RV_OUML, KC_TRNS, RV_VDEC, RV_VINC, RV_SEQU, KC_VOLD,
- KC_CAPS, RV_AUML, RV_SZ , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_LOCK, KC_TRNS, RV_SINC, KC_PENT,
- KC_TRNS, KC_TRNS, KC_TRNS, RV_CC , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_SDEC, KC_TRNS, KC_MSTP,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_MPRV, KC_MPLY, KC_MNXT
- ),
- [2] = 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_TRNS, MO(4) , 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_VOLU,
- 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_BSLS, KC_VOLD,
- 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_ENT,
- 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_UP,
- KC_LCTL, KC_LALT, KC_LGUI, KC_SPC , OSL(3) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- ),
- [3] = LAYOUT(
- RV_SNAP, 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_TRNS, KC_MUTE,
- RV_DEG , RV_SUP1, RV_SUP2, RV_SUP3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_UNEQ, RV_PM , KC_TRNS, KC_VOLU,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_LOCK, RV_UUML, KC_TRNS, KC_TRNS, RV_VDEC, RV_VINC, RV_SEQU, KC_VOLD,
- KC_CAPS, RV_AUML, RV_RT , RV_SZ , RV_TM , KC_TRNS, KC_TRNS, KC_TRNS, RV_EUR , KC_TRNS, RV_OUML, RV_SINC, KC_PENT,
- KC_TRNS, KC_TRNS, KC_TRNS, RV_CC , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_SDEC, KC_TRNS, KC_MSTP,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_MPRV, KC_MPLY, KC_MNXT
- ),
- [4] = LAYOUT(
- DEBUG , RV_SM0 , RV_SM1 , RV_SM2 , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , DF(0) , DF(2) , KC_TRNS, MO(5) ,
- RV_SAYM, RV_SM3 , RV_SM4 , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
- KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
- KC_NO , KC_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, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , RGB_TOG,
- KC_NO , KC_NO , GUI_ON , KC_NO , KC_NO , RCG_SWP, RGB_RMOD,RGB_M_P, RGB_MOD
- ),
- [5] = LAYOUT(
- RESET , RV_SM0S, RV_SM1S, RV_SM2S, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_TRNS,
- KC_NO , RV_SM3S, RV_SM4S, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
- KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
- KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
- KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
- KC_NO , KC_NO , GUI_OFF, KC_NO , KC_NO , RCG_NRM, KC_NO , KC_NO , KC_NO
- )
-};
-// clang-format on
-
-void keyboard_post_init_keymap(void) {
-#ifdef CLOSED_CASE
- if (rgblight_is_enabled()) {
- rgblight_disable();
- }
-#endif
-}
diff --git a/keyboards/idobao/id80/v1/ansi/keymaps/rverst/readme.md b/keyboards/idobao/id80/v1/ansi/keymaps/rverst/readme.md
deleted file mode 100644
index ba33980edb..0000000000
--- a/keyboards/idobao/id80/v1/ansi/keymaps/rverst/readme.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# idobao id80
-
-This is my layout for the idobao id80. It depends of my [user files](../../../../users/rverst)
-and the main goal is to give an convenient and unified access to some special keys
-(umlauts, ß, €) for different operating systems (Mac, Windows and Linux).
-
-## Overview
-
-- Layer 0 is the base US-ANSI layout with Mac-style system keys and a OSL-Key for Layer 1 right of the space bar.
-- Layer 1 has the special keys and some media-functions like mute, volume up/down etc.
-- Layer 2 and 3 are basically the same as Layer 0 and 1 but in Colemak-Layout
-- Layer 4 and 5 has some functions like switching the keyboard mode, switching the default layer etc.
-
-
-## Keyboard modes
-
-- *F1:* Mac Unicode mode (use 'Unicode Hex Input' as input source)
-- *F2:* Windows Unicode mode (use [WinCompse](https://github.com/SamHocevar/wincompose) software)
-- *F3:* Linux Unicode mode (not tested yet but should work out of the box)
-- *1:* Mac legacy mode (uses option-sequences, e.g. `<option>+u a` for an `ä`), if I'm not able to set the input source
-- *2:* Windows legacy mode (uses altgr-sequences e.g. `<altgr>+0228` for an `ä`, if I'm not able to use WinCompose)
-
-Layer 4 to switch the modes temporary, layer 5 to switch and save to eeprom.
diff --git a/keyboards/idobao/id80/v1/ansi/keymaps/rverst/rverst.json b/keyboards/idobao/id80/v1/ansi/keymaps/rverst/rverst.json
deleted file mode 100644
index 50235498fe..0000000000
--- a/keyboards/idobao/id80/v1/ansi/keymaps/rverst/rverst.json
+++ /dev/null
@@ -1,499 +0,0 @@
-{
- "keyboard": "id80",
- "keymap": "rverst",
- "layout": "LAYOUT",
- "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",
- "MO(4)",
- "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_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_RSFT",
- "KC_UP",
- "KC_LCTL",
- "KC_LALT",
- "KC_LGUI",
- "KC_SPC",
- "OSL(1)",
- "KC_RCTL",
- "KC_LEFT",
- "KC_DOWN",
- "KC_RGHT"
- ],
- [
- "RV_SNAP",
- "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_TRNS",
- "KC_MUTE",
- "RV_DEG",
- "RV_SUP1",
- "RV_SUP2",
- "RV_SUP3",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "RV_UNEQ",
- "RV_PM",
- "KC_TRNS",
- "KC_VOLU",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "RV_EUR",
- "RV_RT",
- "RV_TM",
- "KC_TRNS",
- "RV_UUML",
- "KC_TRNS",
- "RV_OUML",
- "KC_TRNS",
- "RV_VDEC",
- "RV_VINC",
- "RV_SEQU",
- "KC_VOLD",
- "KC_CAPS",
- "RV_AUML",
- "RV_SZ",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "RV_LOCK",
- "KC_TRNS",
- "RV_SINC",
- "KC_PENT",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "RV_CC",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_PDOT",
- "RV_SDEC",
- "KC_TRNS",
- "KC_MSTP",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_RGUI",
- "KC_MPRV",
- "KC_MPLY",
- "KC_MNXT"
- ],
- [
- "KC_ESC",
- "KC_F1",
- "KC_F2",
- "KC_F3",
- "KC_F4",
- "KC_F5",
- "KC_F6",
- "KC_F7",
- "KC_F8",
- "KC_F9",
- "KC_F10",
- "KC_F11",
- "KC_TRNS",
- "MO(4)",
- "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_VOLU",
- "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_BSLS",
- "KC_VOLD",
- "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_ENT",
- "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_UP",
- "KC_LCTL",
- "KC_LALT",
- "KC_LGUI",
- "KC_SPC",
- "OSL(3)",
- "KC_RCTL",
- "KC_LEFT",
- "KC_DOWN",
- "KC_RGHT"
- ],
- [
- "RV_SNAP",
- "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_TRNS",
- "KC_MUTE",
- "RV_DEG",
- "RV_SUP1",
- "RV_SUP2",
- "RV_SUP3",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "RV_UNEQ",
- "RV_PM",
- "KC_TRNS",
- "KC_VOLU",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "RV_LOCK",
- "RV_UUML",
- "KC_TRNS",
- "KC_TRNS",
- "RV_VDEC",
- "RV_VINC",
- "RV_SEQU",
- "KC_VOLD",
- "KC_CAPS",
- "RV_AUML",
- "RV_RT",
- "RV_SZ",
- "RV_TM",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "RV_EUR",
- "KC_TRNS",
- "RV_OUML",
- "RV_SINC",
- "KC_PENT",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "RV_CC",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_PDOT",
- "RV_SDEC",
- "KC_TRNS",
- "KC_MSTP",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_TRNS",
- "KC_RGUI",
- "KC_MPRV",
- "KC_MPLY",
- "KC_MNXT"
- ],
- [
- "EEP_RST",
- "RV_SM0",
- "RV_SM1",
- "RV_SM2",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "DF(0)",
- "DF(2)",
- "KC_TRNS",
- "MO(5)",
- "RV_SAYM",
- "RV_SM3",
- "RV_SM4",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_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",
- "RGB_HUI",
- "RGB_SAI",
- "RGB_VAI",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "RGB_TOG",
- "KC_NO",
- "KC_NO",
- "GUI_ON",
- "KC_NO",
- "KC_NO",
- "RCG_SWP",
- "RGB_RMOD",
- "RGB_M_P",
- "RGB_MOD"
- ],
- [
- "RESET",
- "RV_SM0S",
- "RV_SM1S",
- "RV_SM2S",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_TRNS",
- "KC_NO",
- "RV_SM3S",
- "RV_SM4S",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "KC_NO",
- "GUI_OFF",
- "KC_NO",
- "KC_NO",
- "RCG_NRM",
- "KC_NO",
- "KC_NO",
- "KC_NO"
- ]
- ]
-}
diff --git a/keyboards/idobao/id80/v1/ansi/keymaps/via/keymap.c b/keyboards/idobao/id80/v1/ansi/keymaps/via/keymap.c
deleted file mode 100644
index 669eb702d8..0000000000
--- a/keyboards/idobao/id80/v1/ansi/keymaps/via/keymap.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* 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(
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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/v1/ansi/readme.md b/keyboards/idobao/id80/v1/ansi/readme.md
deleted file mode 100644
index 1bfae43735..0000000000
--- a/keyboards/idobao/id80/v1/ansi/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ANSI variant of the id80
diff --git a/keyboards/idobao/id80/v1/config.h b/keyboards/idobao/id80/v1/config.h
deleted file mode 100644
index c6cf667382..0000000000
--- a/keyboards/idobao/id80/v1/config.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-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 "config_common.h"
-
-/* 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 BACKLIGHT_PIN B6
-#define BACKLIGHT_BREATHING
-#define BACKLIGHT_LEVELS 3
-
-#define LED_CAPS_LOCK_PIN C7
-#define LED_PIN_ON_STATE 0
-
-#define RGB_DI_PIN E2
-#ifdef RGB_DI_PIN
- #define RGBLED_NUM 20 /* 16 underglow LEDs, 4 top LEDs */
- #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
-
-/* Bootmagic Lite key configuration: use the Esc key */
-#define BOOTMAGIC_LITE_ROW 0
-#define BOOTMAGIC_LITE_COLUMN 5
diff --git a/keyboards/idobao/id80/v1/info.json b/keyboards/idobao/id80/v1/info.json
deleted file mode 100644
index 072b4ca4db..0000000000
--- a/keyboards/idobao/id80/v1/info.json
+++ /dev/null
@@ -1,188 +0,0 @@
-{
- "keyboard_name": "ID80",
- "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}
- ]
- },
-
- "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":"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":"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":"ISO #", "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":"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":"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":"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.5},
- {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5},
-
- {"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/idobao/id80/v1/iso/config.h b/keyboards/idobao/id80/v1/iso/config.h
deleted file mode 100644
index cd9c497442..0000000000
--- a/keyboards/idobao/id80/v1/iso/config.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-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 "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6964 /* "id" */
-#define PRODUCT_ID 0x0081
-#define DEVICE_VER 0x0001
-#define MANUFACTURER IDOBAO
-#define PRODUCT ID80 ISO
diff --git a/keyboards/idobao/id80/v1/iso/keymaps/default/keymap.c b/keyboards/idobao/id80/v1/iso/keymaps/default/keymap.c
deleted file mode 100644
index 9784ce8253..0000000000
--- a/keyboards/idobao/id80/v1/iso/keymaps/default/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* 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_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, 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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- ),
- [1] = LAYOUT_iso(
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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/v1/iso/keymaps/default/readme.md b/keyboards/idobao/id80/v1/iso/keymaps/default/readme.md
deleted file mode 100644
index 8ae9f656cd..0000000000
--- a/keyboards/idobao/id80/v1/iso/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The default keymap for id80
diff --git a/keyboards/idobao/id80/v1/iso/keymaps/via/keymap.c b/keyboards/idobao/id80/v1/iso/keymaps/via/keymap.c
deleted file mode 100644
index 808c4d3c89..0000000000
--- a/keyboards/idobao/id80/v1/iso/keymaps/via/keymap.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright 2020 Carsten Rose
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received 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, 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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- ),
- [1] = LAYOUT_iso(
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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_iso(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
- [3] = LAYOUT_iso(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
-};
diff --git a/keyboards/idobao/id80/v1/iso/readme.md b/keyboards/idobao/id80/v1/iso/readme.md
deleted file mode 100644
index 3e0d8ce231..0000000000
--- a/keyboards/idobao/id80/v1/iso/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The ISO variant of the id80
diff --git a/keyboards/idobao/id80/v1/readme.md b/keyboards/idobao/id80/v1/readme.md
index 8a26378b3b..c9c446e1b7 100644
--- a/keyboards/idobao/id80/v1/readme.md
+++ b/keyboards/idobao/id80/v1/readme.md
@@ -1,27 +1,27 @@
# IDOBAO ID80
-![ID80](https://ae01.alicdn.com/kf/H0f617c6129c24cfaa26a8c9e8e54851aj.jpg)
+![ID80](https://i.imgur.com/977ENjph.png)
A 75% hotswap keyboard from IDOBAO.
-## ANSI support:
-
* Keyboard Maintainer: [Sergey Vlasov](https://github.com/sigprof)
* Hardware Supported: IDOBAO ID80
-* Hardware Availability: [AliExpress](https://www.aliexpress.com/item/4000590804514.html), [Drop](https://drop.com/buy/idobao-id80-75-hot-swappable-mechanical-keyboard-kit?mode=guest_open)
+* Hardware Availability: [Drop](https://drop.com/buy/idobao-id80-75-hot-swappable-mechanical-keyboard-kit?mode=guest_open)
+
+---
+> &#x26a0; **Please note:** The source folder for this keyboard has moved to `../v2`.
+---
Make example for this keyboard (after setting up your build environment):
- make idobao/id80/v1/ansi:default
+ make idobao/id80/v2:default BACKLIGHT_ENABLE=no
-## ISO support:
-
-* Keyboard Maintainer: [Carsten Rose](https://github.com/cwr10010)
-* Hardware Supported: IDOBAO ID80v2
-* Hardware Availability: [IDOBAO](https://www.idobao.net/products/idobao-id80v2-75-hot-swappable-mechanical-keyboard-kit)
+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
- make idobao/id80/v1/iso:default
+Enter the bootloader in 3 ways:
-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).
+* **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 `QK_BOOT` if it is available
diff --git a/keyboards/idobao/id80/v1/rules.mk b/keyboards/idobao/id80/v1/rules.mk
index 0baebd07fc..20283f04be 100644
--- a/keyboards/idobao/id80/v1/rules.mk
+++ b/keyboards/idobao/id80/v1/rules.mk
@@ -1,24 +1,2 @@
# Defalt to the ansi version
-DEFAULT_FOLDER = idobao/id80/v1/ansi
-
-# 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
-
-# partially generated by KBFirmware JSON to QMK Parser
-# https://noroadsleft.github.io/kbf_qmk_converter/
+DEFAULT_FOLDER = idobao/id80/v2/ansi
diff --git a/keyboards/idobao/id80/v1/v1.c b/keyboards/idobao/id80/v1/v1.c
deleted file mode 100644
index 7147b6163e..0000000000
--- a/keyboards/idobao/id80/v1/v1.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* 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 "v1.h"
diff --git a/keyboards/idobao/id80/v1/v1.h b/keyboards/idobao/id80/v1/v1.h
deleted file mode 100644
index a016e39083..0000000000
--- a/keyboards/idobao/id80/v1/v1.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* 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 }, \
-}
-
-#define LAYOUT_iso( \
- 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, K82, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K78, K77, K75, K74, K83, \
- K10, K11, 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, K11, 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/id80/v2/ansi/info.json b/keyboards/idobao/id80/v2/ansi/info.json
new file mode 100644
index 0000000000..e44e5f8b00
--- /dev/null
+++ b/keyboards/idobao/id80/v2/ansi/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "ID80 ANSI",
+ "usb": {
+ "pid": "0x0080",
+ }
+}
diff --git a/keyboards/idobao/id80/v2/ansi/keymaps/default/keymap.c b/keyboards/idobao/id80/v2/ansi/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b09718dda0
--- /dev/null
+++ b/keyboards/idobao/id80/v2/ansi/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/* 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_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, 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_ansi(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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/v1/ansi/keymaps/msf/config.h b/keyboards/idobao/id80/v2/ansi/keymaps/msf/config.h
index 4f3cc95f30..4f3cc95f30 100644
--- a/keyboards/idobao/id80/v1/ansi/keymaps/msf/config.h
+++ b/keyboards/idobao/id80/v2/ansi/keymaps/msf/config.h
diff --git a/keyboards/idobao/id80/v2/ansi/keymaps/msf/keymap.c b/keyboards/idobao/id80/v2/ansi/keymaps/msf/keymap.c
new file mode 100644
index 0000000000..bc31cfb0b8
--- /dev/null
+++ b/keyboards/idobao/id80/v2/ansi/keymaps/msf/keymap.c
@@ -0,0 +1,59 @@
+/* Copyright 2021 Miguel Filipe <miguel.filipe@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_ansi(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_VOLD, KC_VOLU, KC_F8, KC_F9, KC_F10, KC_PSTE, KC_PSCR, KC_DEL, MO(1),
+ KC_GRV, KC_1, KC_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_LSFT, KC_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_ansi(
+ QK_BOOT, KC_CALC, _______, _______, _______, KC_MUTE, KC_F6, KC_F7, KC_MPLY, KC_MSTP, KC_BRID, KC_BRIU, KC_F11, KC_F12, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
+ _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, NK_TOGG, _______, _______, _______, _______, _______, BL_INC,
+ _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_STEP
+ ),
+ [2] = LAYOUT_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
+enum combos {
+ SLSHDN_PGDN,
+ SLSHUP_PGUP,
+ RALTBKSPC_DELETE,
+};
+
+const uint16_t PROGMEM slashDown_combo[] = {KC_SLSH, KC_DOWN, COMBO_END};
+const uint16_t PROGMEM slashUp_combo[] = {KC_SLSH, KC_UP, COMBO_END};
+const uint16_t PROGMEM raltBackspace_combo[] = {KC_RALT, KC_BSPACE, COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+ [SLSHDN_PGDN] = COMBO(slashDown_combo, KC_PGDN),
+ [SLSHUP_PGUP] = COMBO(slashUp_combo, KC_PGUP),
+ [RALTBKSPC_DELETE] = COMBO(raltBackspace_combo, KC_DEL),
+};
diff --git a/keyboards/idobao/id80/v1/ansi/keymaps/msf/readme.md b/keyboards/idobao/id80/v2/ansi/keymaps/msf/readme.md
index 7ab300f672..7ab300f672 100644
--- a/keyboards/idobao/id80/v1/ansi/keymaps/msf/readme.md
+++ b/keyboards/idobao/id80/v2/ansi/keymaps/msf/readme.md
diff --git a/keyboards/idobao/id80/v2/ansi/keymaps/msf/rules.mk b/keyboards/idobao/id80/v2/ansi/keymaps/msf/rules.mk
new file mode 100644
index 0000000000..ab1e438182
--- /dev/null
+++ b/keyboards/idobao/id80/v2/ansi/keymaps/msf/rules.mk
@@ -0,0 +1 @@
+COMBO_ENABLE = yes
diff --git a/keyboards/idobao/id80/v2/ansi/keymaps/rverst/keymap.c b/keyboards/idobao/id80/v2/ansi/keymaps/rverst/keymap.c
new file mode 100644
index 0000000000..1e751e751d
--- /dev/null
+++ b/keyboards/idobao/id80/v2/ansi/keymaps/rverst/keymap.c
@@ -0,0 +1,80 @@
+/* Copyright 2021 Robert Verst <robert@verst.eu> @rverst
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "rverst.h"
+
+//#define CLOSED_CASE // no underglow RGB visible
+
+// clang-format off
+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 , MO(4) , 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_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_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC , OSL(1) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_ansi(
+ RV_SNAP, 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_TRNS, KC_MUTE,
+ RV_DEG , RV_SUP1, RV_SUP2, RV_SUP3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_UNEQ, RV_PM , KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, RV_EUR , RV_RT , RV_TM , KC_TRNS, RV_UUML, KC_TRNS, RV_OUML, KC_TRNS, RV_VDEC, RV_VINC, RV_SEQU, KC_VOLD,
+ KC_CAPS, RV_AUML, RV_SZ , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_LOCK, KC_TRNS, RV_SINC, KC_PENT,
+ KC_TRNS, KC_TRNS, KC_TRNS, RV_CC , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_SDEC, KC_TRNS, KC_MSTP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_MPRV, KC_MPLY, KC_MNXT
+ ),
+ [2] = 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_TRNS, MO(4) , 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_VOLU,
+ 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_BSLS, KC_VOLD,
+ 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_ENT,
+ 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_UP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC , OSL(3) , KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [3] = LAYOUT_ansi(
+ RV_SNAP, 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_TRNS, KC_MUTE,
+ RV_DEG , RV_SUP1, RV_SUP2, RV_SUP3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_UNEQ, RV_PM , KC_TRNS, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_LOCK, RV_UUML, KC_TRNS, KC_TRNS, RV_VDEC, RV_VINC, RV_SEQU, KC_VOLD,
+ KC_CAPS, RV_AUML, RV_RT , RV_SZ , RV_TM , KC_TRNS, KC_TRNS, KC_TRNS, RV_EUR , KC_TRNS, RV_OUML, RV_SINC, KC_PENT,
+ KC_TRNS, KC_TRNS, KC_TRNS, RV_CC , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RV_SDEC, KC_TRNS, KC_MSTP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_MPRV, KC_MPLY, KC_MNXT
+ ),
+ [4] = LAYOUT_ansi(
+ DEBUG , RV_SM0 , RV_SM1 , RV_SM2 , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , DF(0) , DF(2) , KC_TRNS, MO(5) ,
+ RV_SAYM, RV_SM3 , RV_SM4 , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
+ KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
+ KC_NO , KC_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, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , RGB_TOG,
+ KC_NO , KC_NO , GUI_ON , KC_NO , KC_NO , RCG_SWP, RGB_RMOD,RGB_M_P, RGB_MOD
+ ),
+ [5] = LAYOUT_ansi(
+ QK_BOOT, RV_SM0S, RV_SM1S, RV_SM2S, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_TRNS,
+ KC_NO , RV_SM3S, RV_SM4S, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
+ KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
+ KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
+ KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO ,
+ KC_NO , KC_NO , GUI_OFF, KC_NO , KC_NO , RCG_NRM, KC_NO , KC_NO , KC_NO
+ )
+};
+// clang-format on
+
+void keyboard_post_init_keymap(void) {
+#ifdef CLOSED_CASE
+ if (rgblight_is_enabled()) {
+ rgblight_disable();
+ }
+#endif
+}
diff --git a/keyboards/idobao/id80/v2/ansi/keymaps/rverst/readme.md b/keyboards/idobao/id80/v2/ansi/keymaps/rverst/readme.md
new file mode 100644
index 0000000000..66dd2b5287
--- /dev/null
+++ b/keyboards/idobao/id80/v2/ansi/keymaps/rverst/readme.md
@@ -0,0 +1,23 @@
+# IDOBAO ID80
+
+This is my layout for the IDOBAO ID80. It depends of my [user files](../../../../users/rverst)
+and the main goal is to give an convenient and unified access to some special keys
+(umlauts, ß, €) for different operating systems (Mac, Windows and Linux).
+
+## Overview
+
+- Layer 0 is the base US-ANSI layout with Mac-style system keys and a OSL-Key for Layer 1 right of the space bar.
+- Layer 1 has the special keys and some media-functions like mute, volume up/down etc.
+- Layer 2 and 3 are basically the same as Layer 0 and 1 but in Colemak-Layout
+- Layer 4 and 5 has some functions like switching the keyboard mode, switching the default layer etc.
+
+
+## Keyboard modes
+
+- *F1:* Mac Unicode mode (use 'Unicode Hex Input' as input source)
+- *F2:* Windows Unicode mode (use [WinCompse](https://github.com/SamHocevar/wincompose) software)
+- *F3:* Linux Unicode mode (not tested yet but should work out of the box)
+- *1:* Mac legacy mode (uses option-sequences, e.g. `<option>+u a` for an `ä`), if I'm not able to set the input source
+- *2:* Windows legacy mode (uses altgr-sequences e.g. `<altgr>+0228` for an `ä`, if I'm not able to use WinCompose)
+
+Layer 4 to switch the modes temporary, layer 5 to switch and save to eeprom.
diff --git a/keyboards/idobao/id80/v2/ansi/keymaps/rverst/rverst.json b/keyboards/idobao/id80/v2/ansi/keymaps/rverst/rverst.json
new file mode 100644
index 0000000000..07a7b16229
--- /dev/null
+++ b/keyboards/idobao/id80/v2/ansi/keymaps/rverst/rverst.json
@@ -0,0 +1,499 @@
+{
+ "keyboard": "ID80",
+ "keymap": "rverst",
+ "layout": "LAYOUT_ansi",
+ "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",
+ "MO(4)",
+ "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_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_RSFT",
+ "KC_UP",
+ "KC_LCTL",
+ "KC_LALT",
+ "KC_LGUI",
+ "KC_SPC",
+ "OSL(1)",
+ "KC_RCTL",
+ "KC_LEFT",
+ "KC_DOWN",
+ "KC_RGHT"
+ ],
+ [
+ "RV_SNAP",
+ "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_TRNS",
+ "KC_MUTE",
+ "RV_DEG",
+ "RV_SUP1",
+ "RV_SUP2",
+ "RV_SUP3",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "RV_UNEQ",
+ "RV_PM",
+ "KC_TRNS",
+ "KC_VOLU",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "RV_EUR",
+ "RV_RT",
+ "RV_TM",
+ "KC_TRNS",
+ "RV_UUML",
+ "KC_TRNS",
+ "RV_OUML",
+ "KC_TRNS",
+ "RV_VDEC",
+ "RV_VINC",
+ "RV_SEQU",
+ "KC_VOLD",
+ "KC_CAPS",
+ "RV_AUML",
+ "RV_SZ",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "RV_LOCK",
+ "KC_TRNS",
+ "RV_SINC",
+ "KC_PENT",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "RV_CC",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_PDOT",
+ "RV_SDEC",
+ "KC_TRNS",
+ "KC_MSTP",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_RGUI",
+ "KC_MPRV",
+ "KC_MPLY",
+ "KC_MNXT"
+ ],
+ [
+ "KC_ESC",
+ "KC_F1",
+ "KC_F2",
+ "KC_F3",
+ "KC_F4",
+ "KC_F5",
+ "KC_F6",
+ "KC_F7",
+ "KC_F8",
+ "KC_F9",
+ "KC_F10",
+ "KC_F11",
+ "KC_TRNS",
+ "MO(4)",
+ "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_VOLU",
+ "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_BSLS",
+ "KC_VOLD",
+ "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_ENT",
+ "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_UP",
+ "KC_LCTL",
+ "KC_LALT",
+ "KC_LGUI",
+ "KC_SPC",
+ "OSL(3)",
+ "KC_RCTL",
+ "KC_LEFT",
+ "KC_DOWN",
+ "KC_RGHT"
+ ],
+ [
+ "RV_SNAP",
+ "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_TRNS",
+ "KC_MUTE",
+ "RV_DEG",
+ "RV_SUP1",
+ "RV_SUP2",
+ "RV_SUP3",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "RV_UNEQ",
+ "RV_PM",
+ "KC_TRNS",
+ "KC_VOLU",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "RV_LOCK",
+ "RV_UUML",
+ "KC_TRNS",
+ "KC_TRNS",
+ "RV_VDEC",
+ "RV_VINC",
+ "RV_SEQU",
+ "KC_VOLD",
+ "KC_CAPS",
+ "RV_AUML",
+ "RV_RT",
+ "RV_SZ",
+ "RV_TM",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "RV_EUR",
+ "KC_TRNS",
+ "RV_OUML",
+ "RV_SINC",
+ "KC_PENT",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "RV_CC",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_PDOT",
+ "RV_SDEC",
+ "KC_TRNS",
+ "KC_MSTP",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_RGUI",
+ "KC_MPRV",
+ "KC_MPLY",
+ "KC_MNXT"
+ ],
+ [
+ "EEP_RST",
+ "RV_SM0",
+ "RV_SM1",
+ "RV_SM2",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "DF(0)",
+ "DF(2)",
+ "KC_TRNS",
+ "MO(5)",
+ "RV_SAYM",
+ "RV_SM3",
+ "RV_SM4",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_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",
+ "RGB_HUI",
+ "RGB_SAI",
+ "RGB_VAI",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "RGB_TOG",
+ "KC_NO",
+ "KC_NO",
+ "GUI_ON",
+ "KC_NO",
+ "KC_NO",
+ "RCG_SWP",
+ "RGB_RMOD",
+ "RGB_M_P",
+ "RGB_MOD"
+ ],
+ [
+ "QK_BOOT",
+ "RV_SM0S",
+ "RV_SM1S",
+ "RV_SM2S",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_TRNS",
+ "KC_NO",
+ "RV_SM3S",
+ "RV_SM4S",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "GUI_OFF",
+ "KC_NO",
+ "KC_NO",
+ "RCG_NRM",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO"
+ ]
+ ]
+}
diff --git a/keyboards/idobao/id80/v2/ansi/keymaps/via/keymap.c b/keyboards/idobao/id80/v2/ansi/keymaps/via/keymap.c
new file mode 100644
index 0000000000..4fc88dc592
--- /dev/null
+++ b/keyboards/idobao/id80/v2/ansi/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* 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_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, 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_ansi(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/idobao/id80/v3/keymaps/via/rules.mk b/keyboards/idobao/id80/v2/ansi/keymaps/via/rules.mk
index ca9fed0e6b..ca9fed0e6b 100644
--- a/keyboards/idobao/id80/v3/keymaps/via/rules.mk
+++ b/keyboards/idobao/id80/v2/ansi/keymaps/via/rules.mk
diff --git a/keyboards/idobao/id80/v1/ansi/rules.mk b/keyboards/idobao/id80/v2/ansi/rules.mk
index 323c12fc6e..323c12fc6e 100644
--- a/keyboards/idobao/id80/v1/ansi/rules.mk
+++ b/keyboards/idobao/id80/v2/ansi/rules.mk
diff --git a/keyboards/idobao/id80/v2/config.h b/keyboards/idobao/id80/v2/config.h
new file mode 100644
index 0000000000..a007cff40c
--- /dev/null
+++ b/keyboards/idobao/id80/v2/config.h
@@ -0,0 +1,89 @@
+/*
+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 "config_common.h"
+
+/* 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
+
+#ifdef BACKLIGHT_ENABLE
+ #define BACKLIGHT_PIN B6
+ #define BACKLIGHT_BREATHING
+ #define BACKLIGHT_LEVELS 3
+#endif
+
+#define LED_CAPS_LOCK_PIN C7
+#define LED_PIN_ON_STATE 0
+
+#define RGB_DI_PIN E2
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 20 /* 16 underglow LEDs, 4 top LEDs */
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 180 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+
+ // RGBLIGHT_ANIMATIONS
+ #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
+#endif
+
+/* Bootmagic Lite key configuration: use the Esc key */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 5
diff --git a/keyboards/idobao/id80/v2/info.json b/keyboards/idobao/id80/v2/info.json
new file mode 100644
index 0000000000..391460b3b2
--- /dev/null
+++ b/keyboards/idobao/id80/v2/info.json
@@ -0,0 +1,192 @@
+{
+ "manufacturer": "IDOBAO",
+ "url": "",
+ "maintainer": "IDOBAOKB",
+ "usb": {
+ "vid": "0x6964",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_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":"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}
+ ]
+ },
+
+ "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":"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":"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":"ISO #", "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":"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":"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":"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.5},
+ {"label":"Ctrl", "x":11.5, "y":5.25, "w":1.5},
+
+ {"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/idobao/id80/v2/iso/info.json b/keyboards/idobao/id80/v2/iso/info.json
new file mode 100644
index 0000000000..7512d696e2
--- /dev/null
+++ b/keyboards/idobao/id80/v2/iso/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "ID80 ISO",
+ "usb": {
+ "pid": "0x0081",
+ }
+}
diff --git a/keyboards/idobao/id80/v2/iso/keymaps/default/keymap.c b/keyboards/idobao/id80/v2/iso/keymaps/default/keymap.c
new file mode 100644
index 0000000000..01eaa2a44f
--- /dev/null
+++ b/keyboards/idobao/id80/v2/iso/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/* 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_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, 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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_iso(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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/v2/iso/keymaps/via/keymap.c b/keyboards/idobao/id80/v2/iso/keymaps/via/keymap.c
new file mode 100644
index 0000000000..25ff6b084d
--- /dev/null
+++ b/keyboards/idobao/id80/v2/iso/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2020 Carsten Rose
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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, 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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_iso(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/idobao/id80/v2/iso/keymaps/via/rules.mk b/keyboards/idobao/id80/v2/iso/keymaps/via/rules.mk
new file mode 100644
index 0000000000..ca9fed0e6b
--- /dev/null
+++ b/keyboards/idobao/id80/v2/iso/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+LTO_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/idobao/id80/v1/iso/rules.mk b/keyboards/idobao/id80/v2/iso/rules.mk
index 323c12fc6e..323c12fc6e 100644
--- a/keyboards/idobao/id80/v1/iso/rules.mk
+++ b/keyboards/idobao/id80/v2/iso/rules.mk
diff --git a/keyboards/idobao/id80/v2/readme.md b/keyboards/idobao/id80/v2/readme.md
new file mode 100644
index 0000000000..333de28523
--- /dev/null
+++ b/keyboards/idobao/id80/v2/readme.md
@@ -0,0 +1,41 @@
+# IDOBAO ID80
+
+![ID80](https://i.imgur.com/977ENjph.png)
+
+A 75% hotswap keyboard from IDOBAO.
+
+## ANSI support *(v1 & v2)*:
+
+* Keyboard Maintainer: [Sergey Vlasov](https://github.com/sigprof)
+* Hardware Supported:
+ * IDOBAO ID80v1
+ * IDOBAO ID80v2
+* Hardware Availability: [IDOBAO.net](https://idobao.net/search?type=product&q=ID80*), [AliExpress](https://www.aliexpress.com/store/5072109/search?origin=y&SearchText=ID80)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make idobao/id80/v2/ansi:default
+
+To compile for the **v1** please use:
+
+ make idobao/id80/v2:default BACKLIGHT_ENABLE=no
+
+## ISO support *(v2-iso)*:
+
+* Keyboard Maintainer: [Carsten Rose](https://github.com/cwr10010)
+* Hardware Supported: IDOBAO ID80v2
+* Hardware Availability: [IDOBAO](https://www.idobao.net/products/idobao-id80v2-75-hot-swappable-mechanical-keyboard-kit)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make idobao/id80/v2/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 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 `QK_BOOT` if it is available *(default is [Fn]+[Esc])*
diff --git a/keyboards/idobao/id80/v2/rules.mk b/keyboards/idobao/id80/v2/rules.mk
new file mode 100644
index 0000000000..3966212230
--- /dev/null
+++ b/keyboards/idobao/id80/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 = yes # Enable N-Key Rollover
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+BACKLIGHT_ENABLE = yes # Enable underkey LED backlight
+
+DEFAULT_FOLDER = idobao/id80/v2/ansi
diff --git a/keyboards/idobao/id80/v2/v2.c b/keyboards/idobao/id80/v2/v2.c
new file mode 100644
index 0000000000..f92f5e0629
--- /dev/null
+++ b/keyboards/idobao/id80/v2/v2.c
@@ -0,0 +1,17 @@
+/* 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 "v2.h"
diff --git a/keyboards/idobao/id80/v2/v2.h b/keyboards/idobao/id80/v2/v2.h
new file mode 100644
index 0000000000..d45b75853b
--- /dev/null
+++ b/keyboards/idobao/id80/v2/v2.h
@@ -0,0 +1,57 @@
+/* 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_ansi( \
+ 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 }, \
+}
+
+#define LAYOUT_iso( \
+ 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, K82, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K78, K77, K75, K74, K83, \
+ K10, K11, 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, K11, 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/id80/v3/ansi/ansi.c b/keyboards/idobao/id80/v3/ansi/ansi.c
new file mode 100644
index 0000000000..2b298924cf
--- /dev/null
+++ b/keyboards/idobao/id80/v3/ansi/ansi.c
@@ -0,0 +1,76 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "ansi.h"
+
+#define __ NO_LED
+
+#ifdef RGB_MATRIX_ENABLE
+
+/* Per-key LED's
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───â”
+ * │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 │┌───â”
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┘│ 9 │
+ * │ 8 │ 7 │ 6 │ 5 │ 4 │ 3 │┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴─────┴─────┘│ 2 │ 1 │ 0 │
+ * └───┴───┴───┘
+ * Underglow (as seen from top)
+ * ┌────┬────┬────┬────┬────┬────â”
+ * │ 80 │ 81 │ 82 │ 83 │ 84 │ 85 │
+ * ├────┼────┴────┴────┴────┼────┤
+ * │ 93 │ │ 86 │
+ * ├────┼────┬────┬────┬────┼────┤
+ * │ 92 │ 91 │ 90 │ 89 │ 88 │ 87 │
+ * └────┴────┴────┴────┴────┴────┘
+ */
+
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ /* Generated with: https://xelus.netlify.app/guides/KLE_to_RGB_parser */
+ { 8, 21, 34, 49, 64, 79, __, __, __, __, __ },
+ { 7, __, 33, 48, 63, 78, __, __, __, __, __ },
+ { 6, 20, 32, 47, 62, 77, __, __, 35, 50, 65 },
+ { 0, 19, 31, 46, 61, 76, 9, __, 36, __, 67 },
+ { 1, 18, 30, 45, 60, 75, 10, 22, 37, 52, 68 },
+ { 2, 17, 29, 44, 59, 74, 11, 23, 38, 53, 69 },
+ { 5, 16, 28, 43, 58, 73, __, __, __, 51, 66 },
+ { 3, 15, 27, 42, 57, 72, 12, 24, 39, 54, 70 },
+ { 4, 14, 26, 41, 56, 71, 13, 25, 40, 55, __ },
+}, {
+ /* NB: Reversed order */
+ // per-key
+ {224,64 }, {209,64 }, {195,64 }, {173,61 }, {151,61 }, { 94,61 }, { 39,61 }, { 20,61 }, { 2,61 },
+ {209,52 }, {185,49 }, {165,49 }, {151,49 }, {136,49 }, {121,49 }, {106,49 }, { 92,49 }, { 77,49 }, { 62,49 }, { 48,49 }, { 33,49 }, { 9,49 },
+ {196,38 }, {173,38 }, {158,38 }, {143,38 }, {129,38 }, {114,38 }, { 99,38 }, { 84,38 }, { 70,38 }, { 55,38 }, { 40,38 }, { 26,38 }, { 6,38 },
+ {224,26 }, {202,26 }, {184,26 }, {169,26 }, {154,26 }, {140,26 }, {125,26 }, {110,26 }, { 95,26 }, { 81,26 }, { 66,26 }, { 51,26 }, { 37,26 }, { 22,26 }, { 4,26 },
+ {224,15 }, {198,15 }, {176,15 }, {162,15 }, {147,15 }, {132,15 }, {118,15 }, {103,15 }, { 88,15 }, { 73,15 }, { 59,15 }, { 44,15 }, { 29,15 }, { 15,15 }, { 0,15 },
+ {224,0 }, {206,0 }, {187,0 }, {173,0 }, {158,0 }, {143,0 }, {125,0 }, {110,0 }, { 95,0 }, { 81,0 }, { 62,0 }, { 48,0 }, { 33,0 }, { 18,0 }, { 0,0 },
+ // underglow
+ { 0,0 }, { 45,0 }, { 90,0 }, {134,0 }, {179,0 }, {224,0 },
+ {224,32 },
+ {224,64 }, {179,64 }, {134,64 }, { 90,64 }, { 45,64 }, { 0,64 },
+ { 0,32 }
+}, {
+ /* NB: Reversed order */
+ 4, 4, 4, 4, 4, 1, 4, 4, 4,
+ 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
+ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
+ 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
+ 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 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
+} };
+
+#endif
diff --git a/keyboards/idobao/id80/v3/ansi/ansi.h b/keyboards/idobao/id80/v3/ansi/ansi.h
new file mode 100644
index 0000000000..d9bef6d021
--- /dev/null
+++ b/keyboards/idobao/id80/v3/ansi/ansi.h
@@ -0,0 +1,6 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
diff --git a/keyboards/idobao/id80/v3/ansi/config.h b/keyboards/idobao/id80/v3/ansi/config.h
new file mode 100644
index 0000000000..1b99fd7908
--- /dev/null
+++ b/keyboards/idobao/id80/v3/ansi/config.h
@@ -0,0 +1,97 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* --------------------------------
+ * Bootmagic Lite key configuration
+ * use the Esc key
+ * -------------------------------- */
+
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 5
+
+/* ----------------
+ * RGB Matrix stuff
+ * ---------------- */
+
+#define RGB_DI_PIN E2
+
+// RGB Matrix config
+#if defined(RGB_DI_PIN) && defined(RGB_MATRIX_ENABLE)
+
+ #define DRIVER_LED_TOTAL 94
+
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to x out of 255. If not defined maximum brightness is set to 255
+
+ #define RGB_MATRIX_KEYPRESSES
+
+ #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
+ #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 gradient Chevron shaped 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 amount at the same time, then shifts back
+ #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
+ #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
+
+ /* don't need `#if`, animation modes themselves check defines
+ * #if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) */
+ // #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+ // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+ /* #endif // RGB_MATRIX_FRAMEBUFFER_EFFECTS */
+
+ /* don't need `#if`, animation modes themselves check defines
+ * #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 // RGB_MATRIX_KEYPRESSES | RGB_MATRIX_KEYRELEASES */
+#endif // RGB_MATRIX_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
diff --git a/keyboards/idobao/id80/v3/ansi/info.json b/keyboards/idobao/id80/v3/ansi/info.json
new file mode 100644
index 0000000000..fccff8efda
--- /dev/null
+++ b/keyboards/idobao/id80/v3/ansi/info.json
@@ -0,0 +1,121 @@
+{
+ "manufacturer": "IDOBAO",
+ "keyboard_name": "IDOBAO ID80v3",
+ "maintainer": "vinorodrigues",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "mousekey": true,
+ "extrakey": true,
+ "console": false,
+ "command": false,
+ "nkro": true,
+ "backlight": false,
+ "rgblight": false
+ },
+ "matrix_pins": {
+ "cols": ["B7", "B3", "B2", "B1", "B0", "E6", "F1", "F4", "F5", "F6", "F7"],
+ "rows": ["D0", "D1", "D2", "D3", "D5", "D4", "D6", "D7", "B4"]
+ },
+ "processor": "atmega32u4",
+ "url": "https://idobao.net/search?type=product&q=id80*",
+ "usb": {
+ "vid": "0x6964",
+ "pid": "0x0380",
+ "device_version": "3.0.0"
+ },
+ "layouts": {
+ "LAYOUT_80_ansi": {
+ "layout": [
+ { "matrix": [0, 5], "x": 0, "y": 0 },
+ { "matrix": [1, 5], "x": 1.25, "y": 0 },
+ { "matrix": [2, 5], "x": 2.25, "y": 0 },
+ { "matrix": [3, 5], "x": 3.25, "y": 0 },
+ { "matrix": [4, 5], "x": 4.25, "y": 0 },
+ { "matrix": [5, 5], "x": 5.5, "y": 0 },
+ { "matrix": [6, 5], "x": 6.5, "y": 0 },
+ { "matrix": [7, 5], "x": 7.5, "y": 0 },
+ { "matrix": [8, 5], "x": 8.5, "y": 0 },
+ { "matrix": [7, 10], "x": 9.75, "y": 0 },
+ { "matrix": [5, 10], "x": 10.75, "y": 0 },
+ { "matrix": [4, 10], "x": 11.75, "y": 0 },
+ { "matrix": [3, 10], "x": 12.75, "y": 0 },
+ { "matrix": [6, 10], "x": 14, "y": 0 },
+ { "matrix": [2, 10], "x": 15.25, "y": 0 },
+
+ { "matrix": [0, 4], "x": 0, "y": 1.25 },
+ { "matrix": [1, 4], "x": 1, "y": 1.25 },
+ { "matrix": [2, 4], "x": 2, "y": 1.25 },
+ { "matrix": [3, 4], "x": 3, "y": 1.25 },
+ { "matrix": [4, 4], "x": 4, "y": 1.25 },
+ { "matrix": [5, 4], "x": 5, "y": 1.25 },
+ { "matrix": [6, 4], "x": 6, "y": 1.25 },
+ { "matrix": [7, 4], "x": 7, "y": 1.25 },
+ { "matrix": [8, 4], "x": 8, "y": 1.25 },
+ { "matrix": [8, 9], "x": 9, "y": 1.25 },
+ { "matrix": [7, 9], "x": 10, "y": 1.25 },
+ { "matrix": [5, 9], "x": 11, "y": 1.25 },
+ { "matrix": [4, 9], "x": 12, "y": 1.25 },
+ { "matrix": [6, 9], "x": 13, "y": 1.25, "w": 2 },
+ { "matrix": [2, 9], "x": 15.25, "y": 1.25 },
+
+ { "matrix": [0, 3], "x":0, "y":2.25, "w":1.5},
+ { "matrix": [1, 3], "x":1.5, "y":2.25},
+ { "matrix": [2, 3], "x":2.5, "y":2.25},
+ { "matrix": [3, 3], "x":3.5, "y":2.25},
+ { "matrix": [4, 3], "x":4.5, "y":2.25},
+ { "matrix": [5, 3], "x":5.5, "y":2.25},
+ { "matrix": [6, 3], "x":6.5, "y":2.25},
+ { "matrix": [7, 3], "x":7.5, "y":2.25},
+ { "matrix": [8, 3], "x":8.5, "y":2.25},
+ { "matrix": [8, 8], "x":9.5, "y":2.25},
+ { "matrix": [7, 8], "x":10.5, "y":2.25},
+ { "matrix": [5, 8], "x":11.5, "y":2.25},
+ { "matrix": [4, 8], "x":12.5, "y":2.25},
+ { "matrix": [3, 8], "x":13.5, "y":2.25, "w":1.5},
+ { "matrix": [2, 8], "x":15.25, "y":2.25},
+
+ { "matrix": [0, 2], "x":0, "y":3.25, "w":1.75},
+ { "matrix": [1, 2], "x":1.75, "y":3.25},
+ { "matrix": [2, 2], "x":2.75, "y":3.25},
+ { "matrix": [3, 2], "x":3.75, "y":3.25},
+ { "matrix": [4, 2], "x":4.75, "y":3.25},
+ { "matrix": [5, 2], "x":5.75, "y":3.25},
+ { "matrix": [6, 2], "x":6.75, "y":3.25},
+ { "matrix": [7, 2], "x":7.75, "y":3.25},
+ { "matrix": [8, 2], "x":8.75, "y":3.25},
+ { "matrix": [8, 7], "x":9.75, "y":3.25},
+ { "matrix": [7, 7], "x":10.75, "y":3.25},
+ { "matrix": [5, 7], "x":11.75, "y":3.25},
+ { "matrix": [4, 7], "x":12.75, "y":3.25, "w":2.25},
+
+ { "matrix": [0, 1], "x":0, "y":4.25, "w":2.25},
+ { "matrix": [2, 1], "x":2.25, "y":4.25},
+ { "matrix": [3, 1], "x":3.25, "y":4.25},
+ { "matrix": [4, 1], "x":4.25, "y":4.25},
+ { "matrix": [5, 1], "x":5.25, "y":4.25},
+ { "matrix": [6, 1], "x":6.25, "y":4.25},
+ { "matrix": [7, 1], "x":7.25, "y":4.25},
+ { "matrix": [8, 1], "x":8.25, "y":4.25},
+ { "matrix": [8, 6], "x":9.25, "y":4.25},
+ { "matrix": [7, 6], "x":10.25, "y":4.25},
+ { "matrix": [5, 6], "x":11.25, "y":4.25},
+ { "matrix": [4, 6], "x":12.25, "y":4.25, "w":1.75},
+
+ { "matrix": [3, 6], "x":14.25, "y":4.5},
+
+ { "matrix": [0, 0], "x":0, "y":5.25, "w":1.25},
+ { "matrix": [1, 0], "x":1.25, "y":5.25, "w":1.25},
+ { "matrix": [2, 0], "x":2.5, "y":5.25, "w":1.25},
+ { "matrix": [6, 0], "x":3.75, "y":5.25, "w":6.25},
+ { "matrix": [8, 0], "x":10, "y":5.25, "w":1.5},
+ { "matrix": [7, 0], "x":11.5, "y":5.25, "w":1.5},
+
+ { "matrix": [5, 0], "x":13.25, "y":5.5},
+ { "matrix": [4, 0], "x":14.25, "y":5.5},
+ { "matrix": [3, 0], "x":15.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/idobao/id80/v3/ansi/keymaps/default/keymap.c b/keyboards/idobao/id80/v3/ansi/keymaps/default/keymap.c
new file mode 100644
index 0000000000..127647c664
--- /dev/null
+++ b/keyboards/idobao/id80/v3/ansi/keymaps/default/keymap.c
@@ -0,0 +1,56 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#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││Fn1││Ins│
+ * ├───┼┴──┬┴──┬┴──┬┴──┬┴┴─┬─┴─┬─┴─┬─┴─┬─┴┴┬──┴┬──┴┬──┴┬──┴┴───┤├───┤
+ * │`~ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │-_ │=+ │Backspc││Hom│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │[{ │]} │ \| ││Del│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┘
+ * │ 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 │Ctrl │┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴─────┴─────┘│ ↠│ ↓ │ → │
+ * └───┴───┴───┘
+ */
+ [0] = LAYOUT_80_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, 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
+ ),
+
+ /*
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───â”
+ * │Rst││ │ │ │ ││ │ │ │ ││ │PSc│SLk│Pau││ ││Mut│
+ * ├───┼┴──┬┴──┬┴──┬┴──┬┴┴─┬─┴─┬─┴─┬─┴─┬─┴┴┬──┴┬──┴┬──┴┬──┴┴───┤├───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││Vl+│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┤
+ * │ │Tog│ │Mod│Hu+│Hu-│Sa+│Sa-│Br+│Br-│Sp+│Sp-│ │ ││Vl-│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┘
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘
+ * │ │ │ │mod│ │ │NKR│ │ │ │ │ │┌───â”
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┘│PUp│
+ * │ │ │ │ │ │ │┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴─────┴─────┘│Hom│PDn│End│
+ * └───┴───┴───┘
+ */
+ [1] = LAYOUT_80_ansi(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
+ _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______, KC_VOLD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, RGB_RMOD, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ )
+};
diff --git a/keyboards/idobao/id80/v3/ansi/keymaps/idobao/keymap.c b/keyboards/idobao/id80/v3/ansi/keymaps/idobao/keymap.c
new file mode 100644
index 0000000000..e0d786e5e2
--- /dev/null
+++ b/keyboards/idobao/id80/v3/ansi/keymaps/idobao/keymap.c
@@ -0,0 +1,315 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// Copyright 2022 IDOBAO (@idobaokb)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/* ------------------------------------------------------------------
+ * This is the IDOBAO factory default keymap ;)
+ * ------------------------------------------------------------------ */
+
+#include QMK_KEYBOARD_H
+#include "version.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+typedef union {
+ uint32_t raw;
+ struct {
+ bool rgb_disable_perkey:1;
+ bool rgb_disable_underglow:1;
+ };
+} user_config_t;
+
+#endif // RGB_MATRIX_ENABLE
+
+enum {
+ _BASE = 0,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+enum {
+ KC_MCON = USER00, // macOS Open Mission Control
+ KC_LPAD, // macOS Open Launchpad
+ #ifdef RGB_MATRIX_ENABLE
+ RGB_TPK, // Toggle Per-Key
+ RGB_TUG, // Toggle Underglow
+ #endif // RGB_MATRIX_ENABLE
+ KB_VRSN = USER09 // debug, type version
+};
+
+#ifndef RGB_MATRIX_ENABLE
+ #define RGB_TPK _______
+ #define RGB_TUG _______
+#endif // RGB_MATRIX_ENABLE
+
+enum macos_consumer_usages {
+ _AC_SHOW_ALL_WINDOWS = 0x29F, // mapped to KC_MCON
+ _AC_SHOW_ALL_APPS = 0x2A0 // mapped to KC_LPAD
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───â”
+ * │Esc││F1 │F2 │F3 │F4 ││F5 │F6 │F7 │F8 ││F9 │F10│F11│F12││Fn1││Ins│
+ * ├───┼┴──┬┴──┬┴──┬┴──┬┴┴─┬─┴─┬─┴─┬─┴─┬─┴┴┬──┴┬──┴┬──┴┬──┴┴───┤├───┤
+ * │`~ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │-_ │=+ │Backspc││Hom│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │[{ │]} │ \| ││Del│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┘
+ * │ 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 │Ctrl │┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴─────┴─────┘│ ↠│ ↓ │ → │
+ * └───┴───┴───┘
+ */
+ [_BASE] = LAYOUT_80_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, MO(_FN1), 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
+ ),
+
+ /*
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───â”
+ * │Rst││ │ │ │ ││ │ │ │ ││ │PSc│SLk│Pau││ ││Mut│
+ * ├───┼┴──┬┴──┬┴──┬┴──┬┴┴─┬─┴─┬─┴─┬─┴─┬─┴┴┬──┴┬──┴┬──┴┬──┴┴───┤├───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││Vl+│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┤
+ * │ │Tog│ │Mod│Hu+│Hu-│Sa+│Sa-│Br+│Br-│Sp+│Sp-│ │ ││Vl-│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┘
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘
+ * │ │ │ │mod│Ver│ │NKR│ │ │ │ │ │┌───â”
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┘│PUp│
+ * │ │ │ │ │ │ │┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴─────┴─────┘│Hom│PDn│End│
+ * └───┴───┴───┘
+ */
+ [_FN1] = LAYOUT_80_ansi(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
+ _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______, KC_VOLD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, RGB_RMOD, KB_VRSN, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+
+ /*
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───â”
+ * │ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ ││ │
+ * ├───┼┴──┬┴──┬┴──┬┴──┬┴┴─┬─┴─┬─┴─┬─┴─┬─┴┴┬──┴┬──┴┬──┴┬──┴┴───┤├───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┘
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘
+ * │ │ │ │ │ │ │ │ │ │ │ │ │┌───â”
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┘│ │
+ * │ │ │ │ │ │ │┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴─────┴─────┘│ │ │ │
+ * └───┴───┴───┘
+ */
+ [_FN2] = LAYOUT_80_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [_FN3] = LAYOUT_80_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#ifdef RGB_MATRIX_ENABLE
+
+/*
+ * RGB Stuff
+ */
+
+#define ID80_CAPS_LOCK_KEY_INDEX 34 // position of Caps Lock key
+
+#define ID80_CAPS_LOCK_MAX_BRIGHTNESS 0xFF
+#ifdef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+ #undef ID80_CAPS_LOCK_MAX_BRIGHTNESS
+ #define ID80_CAPS_LOCK_MAX_BRIGHTNESS RGB_MATRIX_MAXIMUM_BRIGHTNESS
+#endif
+
+#define ID80_CAPS_LOCK_VAL_STEP 8
+#ifdef RGB_MATRIX_VAL_STEP
+ #undef ID80_CAPS_LOCK_VAL_STEP
+ #define ID80_CAPS_LOCK_VAL_STEP RGB_MATRIX_VAL_STEP
+#endif
+
+user_config_t user_config;
+
+void id80_update_rgb_mode(void) {
+ uint8_t flags = LED_FLAG_ALL;
+
+ if (user_config.rgb_disable_perkey && user_config.rgb_disable_underglow) {
+ flags = 0; // All OFF Condition
+ } else {
+ if (user_config.rgb_disable_perkey) {
+ flags = LED_FLAG_UNDERGLOW | 0xF0;
+ }
+ if (user_config.rgb_disable_underglow) {
+ flags = LED_FLAG_MODIFIER | LED_FLAG_KEYLIGHT | LED_FLAG_INDICATOR | 0xF0;
+ }
+ }
+
+ if (flags == 0) {
+ rgb_matrix_set_flags(0);
+ rgb_matrix_set_color_all(HSV_OFF);
+ } else {
+ rgb_matrix_set_flags(flags);
+ rgb_matrix_enable_noeeprom();
+ }
+
+ eeconfig_update_kb(user_config.raw); // write back to EEPROM
+}
+
+void id80_get_rgb_mode(void) {
+ user_config.raw = eeconfig_read_kb(); // read config from EEPROM
+ id80_update_rgb_mode();
+}
+
+void keyboard_post_init_user(void) {
+ id80_get_rgb_mode();
+}
+
+void eeconfig_init_user(void) {
+ // EEPROM is getting reset!
+ user_config.raw = 0;
+ id80_update_rgb_mode();
+}
+
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ // Caps Lock key stuff
+
+ if (host_keyboard_led_state().caps_lock) {
+ uint8_t v = rgb_matrix_get_val();
+ if (v < ID80_CAPS_LOCK_VAL_STEP) {
+ v = ID80_CAPS_LOCK_VAL_STEP;
+ } else if (v < (ID80_CAPS_LOCK_MAX_BRIGHTNESS - ID80_CAPS_LOCK_VAL_STEP)) {
+ if (!user_config.rgb_disable_perkey) {
+ v += ID80_CAPS_LOCK_VAL_STEP; // inc. by one more step than current brightness
+ } // else leave as current brightness
+ } else {
+ v = ID80_CAPS_LOCK_MAX_BRIGHTNESS;
+ }
+ rgb_matrix_set_color(ID80_CAPS_LOCK_KEY_INDEX, v, v, v); // white, brightness adjusted
+ } else if (user_config.rgb_disable_perkey) {
+ rgb_matrix_set_color(ID80_CAPS_LOCK_KEY_INDEX, HSV_OFF); // off
+ }
+}
+
+#endif // RGB_MATRIX_ENABLE
+
+/*
+ * Extra keys and RGB Toggle handler
+ */
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ switch (keycode) {
+
+ // handle RGB toggle key - this ensures caps lock always works
+ #ifdef RGB_MATRIX_ENABLE
+
+ case QK_BOOT:
+ if (record->event.pressed) {
+ rgb_matrix_set_color_all(RGB_MATRIX_MAXIMUM_BRIGHTNESS, 0, 0); // All red
+ rgb_matrix_driver.flush();
+ }
+ return true;
+
+ case RGB_TOG:
+ /* roll through the LED modes
+ * | Level | Per-key | Underglow |
+ * |------------|---------|-----------|
+ * | 0 (defalt) | on | on |
+ * | 1 | OFF | on |
+ * | 2 | on | OFF |
+ * | 3 | OFF | OFF |
+ */
+ if (record->event.pressed) {
+ if ( (!user_config.rgb_disable_perkey) && (!user_config.rgb_disable_underglow) ) {
+ user_config.rgb_disable_perkey = 1;
+ } else if ( user_config.rgb_disable_perkey && (!user_config.rgb_disable_underglow) ) {
+ user_config.rgb_disable_perkey = 0;
+ user_config.rgb_disable_underglow = 1;
+ } else if ( (!user_config.rgb_disable_perkey) && user_config.rgb_disable_underglow ) {
+ user_config.rgb_disable_perkey = 1;
+ } else {
+ user_config.rgb_disable_perkey = 0;
+ user_config.rgb_disable_underglow = 0;
+ }
+ id80_update_rgb_mode();
+ }
+ return false;
+
+ case RGB_TPK:
+ if (record->event.pressed) {
+ user_config.rgb_disable_perkey ^= 1;
+ id80_update_rgb_mode();
+ }
+ return false;
+
+ case RGB_TUG:
+ if (record->event.pressed) {
+ user_config.rgb_disable_underglow ^= 1;
+ id80_update_rgb_mode();
+ }
+ return false;
+
+ case EE_CLR:
+ if (!record->event.pressed) { // on release
+ id80_get_rgb_mode();
+ }
+ return true; // let this one pass on
+
+ #endif // RGB_MATRIX_ENABLE
+
+ // print firmware version
+ case KB_VRSN:
+ if (!get_mods()) {
+ if (!record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " (v" QMK_VERSION ")");
+ }
+ }
+ return false;
+
+ // @see: https://github.com/qmk/qmk_firmware/issues/10111#issuecomment-752300353
+ case KC_MCON:
+ if (record->event.pressed) {
+ host_consumer_send(_AC_SHOW_ALL_WINDOWS);
+ } else {
+ host_consumer_send(0);
+ }
+ return false;
+
+ case KC_LPAD:
+ if (record->event.pressed) {
+ host_consumer_send(_AC_SHOW_ALL_APPS);
+ } else {
+ host_consumer_send(0);
+ }
+ return false;
+
+ default:
+ return true; /* Process all other keycodes normally */
+ }
+}
diff --git a/keyboards/idobao/id80/v3/ansi/keymaps/idobao/rules.mk b/keyboards/idobao/id80/v3/ansi/keymaps/idobao/rules.mk
new file mode 100644
index 0000000000..ca9fed0e6b
--- /dev/null
+++ b/keyboards/idobao/id80/v3/ansi/keymaps/idobao/rules.mk
@@ -0,0 +1,2 @@
+LTO_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/idobao/id80/v3/ansi/keymaps/via/keymap.c b/keyboards/idobao/id80/v3/ansi/keymaps/via/keymap.c
new file mode 100644
index 0000000000..9ca5d285fa
--- /dev/null
+++ b/keyboards/idobao/id80/v3/ansi/keymaps/via/keymap.c
@@ -0,0 +1,90 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#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││Fn1││Ins│
+ * ├───┼┴──┬┴──┬┴──┬┴──┬┴┴─┬─┴─┬─┴─┬─┴─┬─┴┴┬──┴┬──┴┬──┴┬──┴┴───┤├───┤
+ * │`~ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │-_ │=+ │Backspc││Hom│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │[{ │]} │ \| ││Del│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┘
+ * │ 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 │Ctrl │┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴─────┴─────┘│ ↠│ ↓ │ → │
+ * └───┴───┴───┘
+ */
+ [0] = LAYOUT_80_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, 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
+ ),
+
+ /*
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───â”
+ * │Rst││ │ │ │ ││ │ │ │ ││ │PSc│SLk│Pau││ ││Mut│
+ * ├───┼┴──┬┴──┬┴──┬┴──┬┴┴─┬─┴─┬─┴─┬─┴─┬─┴┴┬──┴┬──┴┬──┴┬──┴┴───┤├───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││Vl+│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┤
+ * │ │Tog│ │Mod│Hu+│Hu-│Sa+│Sa-│Br+│Br-│Sp+│Sp-│ │ ││Vl-│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┘
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘
+ * │ │ │ │mod│ │ │NKR│ │ │ │ │ │┌───â”
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┘│PUp│
+ * │ │ │ │ │ │ │┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴─────┴─────┘│Hom│PDn│End│
+ * └───┴───┴───┘
+ */
+ [1] = LAYOUT_80_ansi(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, KC_MUTE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
+ _______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, _______, _______, KC_VOLD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, RGB_RMOD, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_PGUP,
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+
+ /*
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───â”
+ * │ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ ││ │
+ * ├───┼┴──┬┴──┬┴──┬┴──┬┴┴─┬─┴─┬─┴─┬─┴─┬─┴┴┬──┴┬──┴┬──┴┬──┴┴───┤├───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤├───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┘
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘
+ * │ │ │ │ │ │ │ │ │ │ │ │ │┌───â”
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┘│ │
+ * │ │ │ │ │ │ │┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴─────┴─────┘│ │ │ │
+ * └───┴───┴───┘
+ */
+ [2] = LAYOUT_80_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_80_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/idobao/id80/v3/ansi/keymaps/via/rules.mk b/keyboards/idobao/id80/v3/ansi/keymaps/via/rules.mk
new file mode 100644
index 0000000000..ca9fed0e6b
--- /dev/null
+++ b/keyboards/idobao/id80/v3/ansi/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+LTO_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/idobao/id80/v3/ansi/rules.mk b/keyboards/idobao/id80/v3/ansi/rules.mk
new file mode 100644
index 0000000000..eab741fd0a
--- /dev/null
+++ b/keyboards/idobao/id80/v3/ansi/rules.mk
@@ -0,0 +1,5 @@
+# This file intentionally left blank
+# ** settings are data driven & stored in `info.json` **
+
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/idobao/id80/v3/config.h b/keyboards/idobao/id80/v3/config.h
deleted file mode 100644
index 4b2fb8d056..0000000000
--- a/keyboards/idobao/id80/v3/config.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
-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
-
-#undef RGB_DI_PIN
-#define RGB_DI_PIN B6
-#ifdef RGB_MATRIX_ENABLE
-# define DRIVER_LED_TOTAL 96 /* 16 Bottom 80 top*/
-# 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 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
-
-/* 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
deleted file mode 100644
index 0dc8efaf02..0000000000
--- a/keyboards/idobao/id80/v3/info.json
+++ /dev/null
@@ -1,96 +0,0 @@
-{
- "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
deleted file mode 100644
index f7886f1e0e..0000000000
--- a/keyboards/idobao/id80/v3/keymaps/default/keymap.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* 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(
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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
deleted file mode 100644
index 8ae9f656cd..0000000000
--- a/keyboards/idobao/id80/v3/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# 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
deleted file mode 100644
index 19787b6b89..0000000000
--- a/keyboards/idobao/id80/v3/keymaps/via/keymap.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* 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(
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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/readme.md b/keyboards/idobao/id80/v3/readme.md
index dc6c67b4f4..e4eb50f9e7 100644
--- a/keyboards/idobao/id80/v3/readme.md
+++ b/keyboards/idobao/id80/v3/readme.md
@@ -1,27 +1,36 @@
-# ID80v3
+# IDOBAO ID80v3
-![ID80v3](https://i.imgur.com/PGvZfQj.jpg)
+![IDOBAO ID80](https://i.imgur.com/977ENjp.png)
-A 75% hotswap in-switch RGB keyboard with an encoder.
+A 75% hotswap keyboard from IDOBAO.
-* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee)
-* Hardware Supported: ID80v3
-* Hardware Availability: Not avaliable yet
+## ANSI Support
+
+* Keyboard Maintainer: [Vino Rodrigues](https://github.com/vinorodrigues)
+* Hardware Supported: **IDOBAO ID80v3**
+* Hardware Availability: [IDOBAO.net](https://idobao.net/search?type=product&q=id80*)
+
+## ANSI Layout
+
+![](https://idobao.github.io/kle/idobao-id80.png)
+
+## Compiling and Flashing
Make example for this keyboard (after setting up your build environment):
- make idobao/id80/v3:default
+ make idobao/id80/v3/ansi:default
Flashing example for this keyboard:
- make idobao/id80/v3:default:flash
+ make idobao/id80/v3/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).
+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
+* **Bootmagic reset**: Hold down the [Escape] 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/idobao/id80/v3/rules.mk b/keyboards/idobao/id80/v3/rules.mk
index 6805b8f0f9..218fc05539 100644
--- a/keyboards/idobao/id80/v3/rules.mk
+++ b/keyboards/idobao/id80/v3/rules.mk
@@ -1,23 +1,2 @@
-# 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
-LTO_ENABLE = yes
-
-RGB_MATRIX_ENABLE = yes
-RGB_MATRIX_DRIVER = WS2812
+# Defalt to the ansi version
+DEFAULT_FOLDER = idobao/id80/v3/ansi
diff --git a/keyboards/idobao/id80/v3/v3.c b/keyboards/idobao/id80/v3/v3.c
deleted file mode 100644
index cd05a26a49..0000000000
--- a/keyboards/idobao/id80/v3/v3.c
+++ /dev/null
@@ -1,62 +0,0 @@
-// 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
deleted file mode 100644
index 94626fe4f6..0000000000
--- a/keyboards/idobao/id80/v3/v3.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* 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/id87/v1/config.h b/keyboards/idobao/id87/v1/config.h
index a268091d40..6c2d6fc9ce 100644
--- a/keyboards/idobao/id87/v1/config.h
+++ b/keyboards/idobao/id87/v1/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6964 // "id"
-#define PRODUCT_ID 0x0087
-#define DEVICE_VER 0x0001
-#define MANUFACTURER IDOBAO
-#define PRODUCT IDOBAO ID87
-
/* key matrix size */
#define MATRIX_ROWS 11
#define MATRIX_COLS 9
@@ -41,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { E6, B0, B1, B2, B3, B7, F7, F6, F5, F4, F1 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
-//#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
@@ -58,9 +50,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_DI_PIN E2
#ifdef RGB_DI_PIN
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 22 /* 16 Bottom 6 top*/
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
+ // RGBLIGHT_ANIMATIONS
+ #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 22 /* 16 Bottom 6 top*/
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
#endif
diff --git a/keyboards/idobao/id87/v1/info.json b/keyboards/idobao/id87/v1/info.json
index f154bbd940..9f7c94619f 100644
--- a/keyboards/idobao/id87/v1/info.json
+++ b/keyboards/idobao/id87/v1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ID87",
+ "manufacturer": "IDOBAO",
"url": "https://www.idobao.net/products/idobao-id87-80-hot-swappable-mechanical-keyboard-kit",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x6964",
+ "pid": "0x0087",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/idobao/id87/v2/config.h b/keyboards/idobao/id87/v2/config.h
index f094ef0638..8f1a9ddf03 100644
--- a/keyboards/idobao/id87/v2/config.h
+++ b/keyboards/idobao/id87/v2/config.h
@@ -1,144 +1,78 @@
-// Copyright 2022 peepeetee (@peepeetee)
+// Copyright 2022 vinorodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6964 // "id"
-#define PRODUCT_ID 0x0087
-#define DEVICE_VER 0x0002
-#define MANUFACTURER IDOBAO
-#define PRODUCT ID87
-
-/* key matrix size */
-#define MATRIX_ROWS 11
-#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)
- *
- */
-#define MATRIX_ROW_PINS { E6, B0, B1, B2, B3, B7, F7, F6, F5, F4, F1 }
-
-#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
-//#define UNUSED_PINS
-
-/* COL2ROW, ROW2COL*/
-#define DIODE_DIRECTION ROW2COL
-
-#define LED_CAPS_LOCK_PIN C7
-
-//#define BACKLIGHT_PIN B7
-//#define BACKLIGHT_LEVELS 3
-//#define BACKLIGHT_BREATHING
+/* ----------------
+ * RGB Matrix stuff
+ * ---------------- */
#define RGB_DI_PIN E2
-# define DRIVER_LED_TOTAL 103 /* 16 Bottom 87 top*/
-#ifdef RGB_DI_PIN
-# define RGBLED_NUM 103 /* 16 Bottom 87 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
-// 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
-
-
-/* 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
-
-/*
+
+// RGB Matrix config
+#if defined(RGB_MATRIX_ENABLE)
+
+ #define DRIVER_LED_TOTAL 103
+
+ #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+ #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // limits maximum brightness of LEDs to x out of 255. If not defined maximum brightness is set to 255
+
+ #define RGB_MATRIX_KEYPRESSES
+
+ #define ENABLE_RGB_MATRIX_SOLID_COLOR // Static single color
+ #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 gradient Chevron shaped 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 amount at the same time, then shifts back
+ #define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight amount in a wave to the right, then back to the left
+ #define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight amount and then back down in a wave to the right
+
+ /* RGB_MATRIX_FRAMEBUFFER_EFFECTS -- do not enable */
+ // #define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+ // #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+ /* RGB_MATRIX_KEYPRESSES | 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 // RGB_MATRIX_ENABLE
+
+
+/* -----------------------
* Feature disable options
* These options are also useful to firmware size reduction.
- */
+ * ----------------------- */
/* disable debug print */
//#define NO_DEBUG
@@ -150,7 +84,3 @@
//#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/idobao/id87/v2/info.json b/keyboards/idobao/id87/v2/info.json
index e4e252aa64..7292ce29ca 100644
--- a/keyboards/idobao/id87/v2/info.json
+++ b/keyboards/idobao/id87/v2/info.json
@@ -1,97 +1,126 @@
{
- "keyboard_name": "ID87",
- "url": "https://www.idobao.net/products/idobao-id87-80-hot-swappable-mechanical-keyboard-kit",
- "maintainer": "qmk",
+ "manufacturer": "IDOBAO",
+ "keyboard_name": "ID87v2",
+ "maintainer": "vinorodrigues",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "ROW2COL",
+ "features": {
+ "bootmagic": true,
+ "mousekey": true,
+ "extrakey": true,
+ "console": false,
+ "command": false,
+ "nkro": true,
+ "backlight": false,
+ "rgblight": false
+ },
+ "debounce": 5,
+ "matrix_pins": {
+ "cols": ["D0", "D1", "D2", "D3", "D5", "D4", "D6", "D7", "B4"],
+ "rows": ["E6", "B0", "B1", "B2", "B3", "B7", "F7", "F6", "F5", "F4", "F1"]
+ },
+ "processor": "atmega32u4",
+ "url": "https://idobao.net/search?type=product&q=ID87*",
+ "usb": {
+ "vid": "0x6964",
+ "pid": "0x0287",
+ "device_version": "2.0.0"
+ },
"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":"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":"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":"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":"Up", "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},
- {"label":"Space", "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":"LT(1, KC_APP)", "x":12.5, "y":5.5, "w":1.25},
- {"label":"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}
+ { "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": [6, 8], "x": 9.5, "y": 0 },
+ { "matrix": [6, 7], "x": 11, "y": 0 },
+ { "matrix": [6, 5], "x": 12, "y": 0 },
+ { "matrix": [6, 4], "x": 13, "y": 0 },
+ { "matrix": [6, 3], "x": 14, "y": 0 },
+ { "matrix": [6, 6], "x": 15.25, "y": 0 },
+ { "matrix": [6, 2], "x": 16.25, "y": 0 },
+ { "matrix": [6, 1], "x": 17.25, "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": [7, 8], "x": 9, "y": 1.25 },
+ { "matrix": [7, 0], "x": 10, "y": 1.25 },
+ { "matrix": [7, 7], "x": 11, "y": 1.25 },
+ { "matrix": [7, 5], "x": 12, "y": 1.25 },
+ { "matrix": [7, 3], "x": 13, "y": 1.25, "w": 2 },
+ { "matrix": [7, 6], "x": 15.25, "y": 1.25 },
+ { "matrix": [7, 2], "x": 16.25, "y": 1.25 },
+ { "matrix": [7, 1], "x": 17.25, "y": 1.25 },
+
+ { "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.25 },
+ { "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": [8, 8], "x": 9.5, "y": 2.25 },
+ { "matrix": [8, 7], "x": 10.5, "y": 2.25 },
+ { "matrix": [8, 5], "x": 11.5, "y": 2.25 },
+ { "matrix": [8, 4], "x": 12.5, "y": 2.25 },
+ { "matrix": [8, 3], "w": 1.5, "x": 13.5, "y": 2.25 },
+ { "matrix": [8, 6], "x": 15.25, "y": 2.25 },
+ { "matrix": [8, 2], "x": 16.25, "y": 2.25 },
+ { "matrix": [8, 1], "x": 17.25, "y": 2.25 },
+
+ { "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": [9, 8], "x": 9.75, "y": 3.25 },
+ { "matrix": [9, 7], "x": 10.75, "y": 3.25 },
+ { "matrix": [9, 5], "x": 11.75, "y": 3.25 },
+ { "matrix": [9, 3], "x": 12.75, "y": 3.25, "w": 2.25 },
+
+ { "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.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": [10, 8], "x": 9.25, "y": 4.25 },
+ { "matrix": [10, 7], "x": 10.25, "y": 4.25 },
+ { "matrix": [10, 5], "x": 11.25, "y": 4.25 },
+ { "matrix": [10, 4], "x": 12.25, "y": 4.25, "w": 2.75 },
+ { "matrix": [9, 2], "x": 16.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, 8], "x": 10, "y": 5.25, "w": 1.25 },
+ { "matrix": [5, 7], "x": 11.25, "y": 5.25, "w": 1.25 },
+ { "matrix": [5, 4], "x": 12.5, "y": 5.25, "w": 1.25 },
+ { "matrix": [5, 3], "x": 13.75, "y": 5.25, "w": 1.25 },
+ { "matrix": [10, 6], "x": 15.25, "y": 5.25 },
+ { "matrix": [10, 2], "x": 16.25, "y": 5.25 },
+ { "matrix": [10, 1], "x": 17.25, "y": 5.25 }
]
}
}
diff --git a/keyboards/idobao/id87/v2/keymaps/default/keymap.c b/keyboards/idobao/id87/v2/keymaps/default/keymap.c
index 9465dca531..53690899c1 100644
--- a/keyboards/idobao/id87/v2/keymaps/default/keymap.c
+++ b/keyboards/idobao/id87/v2/keymaps/default/keymap.c
@@ -1,35 +1,58 @@
-/*
-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/>.
-*/
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
+#define LT_1_AP LT(1, KC_APP) // Tap = Menu, Hold = MO(1)
+
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 │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───â”
+ * │Ctrl│GUI │Alt │ │ Alt│ GUI│Fn1*│Ctrl│ │ ↠│ ↓ │ → │ Fn1* => Tap = Menu, Hold = MO(1)
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
[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, LT(1, KC_APP), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- ),
- [1] = LAYOUT_tkl_ansi(
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, _______,
- _______, BL_TOGG, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAI, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, BL_INC,
- _______, _______, _______, _______, _______, _______, _______, _______, BL_INC, BL_DEC, RGB_MOD
+ KC_ESC, KC_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, LT_1_AP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
+ /*
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │Rst│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hu+│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ * │ │Tog│Mod│ │ │ │ │ │ │ │ │ │ │ │ │St-│Hu-│St+│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ * │ │ │mod│ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │ │ │ │ │ │ │NRO│ │ │ │ │ │ │Br+│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───â”
+ * │ │ │ │ │ │ │ │ │ │Sp-│Br-│Sp+│
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
+ [1] = LAYOUT_tkl_ansi(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, _______,
+ _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI,
+ _______, _______, RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI
+ )
};
diff --git a/keyboards/idobao/id87/v2/keymaps/default/readme.md b/keyboards/idobao/id87/v2/keymaps/default/readme.md
deleted file mode 100644
index 6054431de4..0000000000
--- a/keyboards/idobao/id87/v2/keymaps/default/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-# The default keymap for id87 \ No newline at end of file
diff --git a/keyboards/idobao/id87/v2/keymaps/idobao/config.h b/keyboards/idobao/id87/v2/keymaps/idobao/config.h
new file mode 100644
index 0000000000..a1612e6e32
--- /dev/null
+++ b/keyboards/idobao/id87/v2/keymaps/idobao/config.h
@@ -0,0 +1,4 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/idobao/id87/v2/keymaps/idobao/keymap.c b/keyboards/idobao/id87/v2/keymaps/idobao/keymap.c
new file mode 100644
index 0000000000..59b60b7e1d
--- /dev/null
+++ b/keyboards/idobao/id87/v2/keymaps/idobao/keymap.c
@@ -0,0 +1,299 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// Copyright 2022 IDOBAO (@idobaokb)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/* ------------------------------------------------------------------
+ * This is the IDOBAO factory default keymap ;)
+ * ------------------------------------------------------------------ */
+
+#include QMK_KEYBOARD_H
+#include "version.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+typedef union {
+ uint32_t raw;
+ struct {
+ bool rgb_disable_perkey:1;
+ bool rgb_disable_underglow:1;
+ };
+} user_config_t;
+
+#endif // RGB_MATRIX_ENABLE
+
+enum {
+ KC_MCON = USER00, // macOS Open Mission Control
+ KC_LPAD, // macOS Open Launchpad
+ #ifdef RGB_MATRIX_ENABLE
+ RGB_TPK, // Toggle Per-Key
+ RGB_TUG, // Toggle Underglow
+ #endif // RGB_MATRIX_ENABLE
+ KB_VRSN = USER09 // debug, type version
+};
+
+#ifndef RGB_MATRIX_ENABLE
+ #define RGB_TPK _______
+ #define RGB_TUG _______
+#endif
+
+enum macos_consumer_usages {
+ _AC_SHOW_ALL_WINDOWS = 0x29F, // mapped to KC_MCON
+ _AC_SHOW_ALL_APPS = 0x2A0 // mapped to KC_LPAD
+};
+
+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 │ - │ = │Backspc│ │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 │ space │ Alt│ GUI│MO(1│Ctrl│ │ ↠│ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
+ [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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │Rst│ │BR+│BR-│mMC│mLP│ │Br-│Br+│Prv│Ply│ │Nxt│Mut│Vl-│Vl+│ │ │ │ │
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hu+│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ * │ │Tog│Mod│ │ │ │ │ │ │ │ │ │ │ │ │St-│Hu-│St+│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ * │ │ │mod│ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │ │ │ │ │Ver│ │NRO│ │ │ │ │ MO(2) │ │Br+│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───â”
+ * │ │ │ │ │ │ │ │ │ │Sp-│Br-│Sp+│
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
+ [1] = LAYOUT_tkl_ansi(
+ QK_BOOT, KC_BRID, KC_BRIU, KC_MCON, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, _______,
+ _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI,
+ _______, _______, RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, KB_VRSN, _______, NK_TOGG, _______, _______, _______, _______, MO(2), RGB_VAI,
+ _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI
+ ),
+
+ /*
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ * │M00│M01│M02│M03│M04│M05│M06│M07│M08│M09│M10│ │ │ │ │ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ * │ │M11│M12│M13│M14│M15│M16│ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───â”
+ * │ │ │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
+ [2] = LAYOUT_tkl_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ MACRO00, MACRO01, MACRO02, MACRO03, MACRO04, MACRO05, MACRO06, MACRO07, MACRO08, MACRO09, MACRO10, _______, _______, _______, _______, _______, _______,
+ _______, MACRO11, MACRO12, MACRO13, MACRO14, MACRO15, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#ifdef RGB_MATRIX_ENABLE
+
+/*
+ * RGB Stuff
+ */
+
+#define ID87_CAPS_LOCK_KEY_INDEX 40 // position of Caps Lock key
+
+#define ID87_CAPS_LOCK_MAX_BRIGHTNESS 0xFF
+#ifdef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+ #undef ID87_CAPS_LOCK_MAX_BRIGHTNESS
+ #define ID87_CAPS_LOCK_MAX_BRIGHTNESS RGB_MATRIX_MAXIMUM_BRIGHTNESS
+#endif
+
+#define ID87_CAPS_LOCK_VAL_STEP 8
+#ifdef RGB_MATRIX_VAL_STEP
+ #undef ID87_CAPS_LOCK_VAL_STEP
+ #define ID87_CAPS_LOCK_VAL_STEP RGB_MATRIX_VAL_STEP
+#endif
+
+user_config_t user_config;
+
+void id87_update_rgb_mode(void) {
+ uint8_t flags = LED_FLAG_ALL;
+
+ if (user_config.rgb_disable_perkey && user_config.rgb_disable_underglow) {
+ flags = 0; // All OFF Condition
+ } else {
+ if (user_config.rgb_disable_perkey) {
+ flags = LED_FLAG_UNDERGLOW | 0xF0;
+ }
+ if (user_config.rgb_disable_underglow) {
+ flags = LED_FLAG_MODIFIER | LED_FLAG_KEYLIGHT | LED_FLAG_INDICATOR | 0xF0;
+ }
+ }
+
+ if (flags == 0) {
+ rgb_matrix_set_flags(0);
+ rgb_matrix_set_color_all(HSV_OFF);
+ } else {
+ rgb_matrix_set_flags(flags);
+ rgb_matrix_enable_noeeprom();
+ }
+
+ eeconfig_update_kb(user_config.raw); // write back to EEPROM
+}
+
+void id87_get_rgb_mode(void) {
+ user_config.raw = eeconfig_read_kb(); // read config from EEPROM
+ id87_update_rgb_mode();
+}
+
+void keyboard_post_init_user(void) {
+ id87_get_rgb_mode();
+}
+
+void eeconfig_init_user(void) {
+ // EEPROM is getting reset!
+ user_config.raw = 0;
+ id87_update_rgb_mode();
+}
+
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ // Caps Lock key stuff
+
+ if (host_keyboard_led_state().caps_lock) {
+ uint8_t v = rgb_matrix_get_val();
+ if (v < ID87_CAPS_LOCK_VAL_STEP) {
+ v = ID87_CAPS_LOCK_VAL_STEP;
+ } else if (v < (ID87_CAPS_LOCK_MAX_BRIGHTNESS - ID87_CAPS_LOCK_VAL_STEP)) {
+ if (!user_config.rgb_disable_perkey) {
+ v += ID87_CAPS_LOCK_VAL_STEP; // inc. by one more step than current brightness
+ } // else leave as current brightness
+ } else {
+ v = ID87_CAPS_LOCK_MAX_BRIGHTNESS;
+ }
+ rgb_matrix_set_color(ID87_CAPS_LOCK_KEY_INDEX, v, v, v); // white, brightness adjusted
+ } else if (user_config.rgb_disable_perkey) {
+ rgb_matrix_set_color(ID87_CAPS_LOCK_KEY_INDEX, HSV_OFF); // off
+ }
+}
+
+#endif // RGB_MATRIX_ENABLE
+
+/*
+ * Extra keys and RGB Toggle handler
+ */
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ switch (keycode) {
+
+ // handle RGB toggle key - this ensures caps lock always works
+ #ifdef RGB_MATRIX_ENABLE
+
+ case QK_BOOT:
+ if (record->event.pressed) {
+ rgb_matrix_set_color_all(RGB_MATRIX_MAXIMUM_BRIGHTNESS, 0, 0); // All red
+ rgb_matrix_driver.flush();
+ }
+ return true;
+
+ case RGB_TOG:
+ /* roll through the LED modes
+ * | Level | Per-key | Underglow |
+ * |------------|---------|-----------|
+ * | 0 (defalt) | on | on |
+ * | 1 | OFF | on |
+ * | 2 | on | OFF |
+ * | 3 | OFF | OFF |
+ */
+ if (record->event.pressed) {
+ if ( (!user_config.rgb_disable_perkey) && (!user_config.rgb_disable_underglow) ) {
+ user_config.rgb_disable_perkey = 1;
+ } else if ( user_config.rgb_disable_perkey && (!user_config.rgb_disable_underglow) ) {
+ user_config.rgb_disable_perkey = 0;
+ user_config.rgb_disable_underglow = 1;
+ } else if ( (!user_config.rgb_disable_perkey) && user_config.rgb_disable_underglow ) {
+ user_config.rgb_disable_perkey = 1;
+ } else {
+ user_config.rgb_disable_perkey = 0;
+ user_config.rgb_disable_underglow = 0;
+ }
+ id87_update_rgb_mode();
+ }
+ return false;
+
+ case RGB_TPK:
+ if (record->event.pressed) {
+ user_config.rgb_disable_perkey ^= 1;
+ id87_update_rgb_mode();
+ }
+ return false;
+
+ case RGB_TUG:
+ if (record->event.pressed) {
+ user_config.rgb_disable_underglow ^= 1;
+ id87_update_rgb_mode();
+ }
+ return false;
+
+ case EE_CLR:
+ if (!record->event.pressed) { // on release
+ id87_get_rgb_mode();
+ }
+ return true; // let this one pass on
+
+ #endif // RGB_MATRIX_ENABLE
+
+ // print firmware version
+ case KB_VRSN:
+ if (!get_mods()) {
+ if (!record->event.pressed) {
+ SEND_STRING(QMK_KEYBOARD ":" QMK_KEYMAP " (v" QMK_VERSION ")");
+ }
+ }
+ return false;
+
+ // @see: https://github.com/qmk/qmk_firmware/issues/10111#issuecomment-752300353
+ case KC_MCON:
+ if (record->event.pressed) {
+ host_consumer_send(_AC_SHOW_ALL_WINDOWS);
+ } else {
+ host_consumer_send(0);
+ }
+ return false;
+
+ case KC_LPAD:
+ if (record->event.pressed) {
+ host_consumer_send(_AC_SHOW_ALL_APPS);
+ } else {
+ host_consumer_send(0);
+ }
+ return false;
+
+ default:
+ return true; /* Process all other keycodes normally */
+ }
+}
diff --git a/keyboards/idobao/id87/v2/keymaps/idobao/rules.mk b/keyboards/idobao/id87/v2/keymaps/idobao/rules.mk
new file mode 100644
index 0000000000..974ef99660
--- /dev/null
+++ b/keyboards/idobao/id87/v2/keymaps/idobao/rules.mk
@@ -0,0 +1,3 @@
+
+LTO_ENABLE = yes
+VIA_ENABLE = yes
diff --git a/keyboards/idobao/id87/v2/keymaps/via/config.h b/keyboards/idobao/id87/v2/keymaps/via/config.h
new file mode 100644
index 0000000000..a1612e6e32
--- /dev/null
+++ b/keyboards/idobao/id87/v2/keymaps/via/config.h
@@ -0,0 +1,4 @@
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/idobao/id87/v2/keymaps/via/keymap.c b/keyboards/idobao/id87/v2/keymaps/via/keymap.c
index e71a924bfd..15e909c7e7 100644
--- a/keyboards/idobao/id87/v2/keymaps/via/keymap.c
+++ b/keyboards/idobao/id87/v2/keymaps/via/keymap.c
@@ -1,50 +1,81 @@
-/*
-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/>.
-*/
+// Copyright 2022 Vino Rodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
#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, LT(1, KC_APP), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ /*
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │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 │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───â”
+ * │Ctrl│GUI │Alt │ │ Alt│ GUI│MO(1│Ctrl│ │ ↠│ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
+ [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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
+
+ /*
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │Rst│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │Hu+│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ * │ │Tog│Mod│ │ │ │ │ │ │ │ │ │ │ │ │St-│Hu-│St+│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ * │ │ │mod│ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │ │ │ │ │ │ │NRO│ │ │ │ │ MO(2) │ │Br+│
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───â”
+ * │ │ │ │ │ │ │ │ │ │Sp-│Br-│Sp+│
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
[1] = LAYOUT_tkl_ansi(
- QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, _______,
- _______, BL_TOGG, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAI, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, BL_INC,
- _______, _______, _______, _______, _______, _______, _______, _______, BL_INC, BL_DEC, RGB_MOD
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, _______,
+ _______, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_SAI,
+ _______, _______, RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, MO(2), RGB_VAI,
+ _______, _______, _______, _______, _______, KC_APP, _______, _______, RGB_SPD, RGB_VAD, RGB_SPI
),
- [2] = LAYOUT_tkl_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
- [3] = LAYOUT_tkl_ansi(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
+
+ /*
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ * │M00│M01│M02│M03│M04│M05│M06│M07│M08│M09│M10│ │ │ │ │ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ * │ │M11│M12│M13│M14│M15│M16│ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───â”
+ * │ │ │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
+ [2] = LAYOUT_tkl_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ MACRO00, MACRO01, MACRO02, MACRO03, MACRO04, MACRO05, MACRO06, MACRO07, MACRO08, MACRO09, MACRO10, _______, _______, _______, _______, _______, _______,
+ _______, MACRO11, MACRO12, MACRO13, MACRO14, MACRO15, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
};
diff --git a/keyboards/idobao/id87/v2/keymaps/via/rules.mk b/keyboards/idobao/id87/v2/keymaps/via/rules.mk
index ca9fed0e6b..974ef99660 100644
--- a/keyboards/idobao/id87/v2/keymaps/via/rules.mk
+++ b/keyboards/idobao/id87/v2/keymaps/via/rules.mk
@@ -1,2 +1,3 @@
+
LTO_ENABLE = yes
VIA_ENABLE = yes
diff --git a/keyboards/idobao/id87/v2/readme.md b/keyboards/idobao/id87/v2/readme.md
index 06a3f2c08a..e779ad67d1 100644
--- a/keyboards/idobao/id87/v2/readme.md
+++ b/keyboards/idobao/id87/v2/readme.md
@@ -1,12 +1,24 @@
-# ID87 v2
+# IDOBAO ID87 v2
-![ID87 v2](https://i.imgur.com/woTSycN.jpg)
+![IDOBAO ID87](https://i.imgur.com/LIpWjog.png)
-A TKL keyboard with hotswap sockets and in switch RGB.
+A TKL hotswap board from IDOBAO.
-* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee)
-* Hardware Supported: ID87 v2
-* Hardware Availability: [Drop](https://drop.com/buy/idobao-id87-v2-tkl-mechanical-keyboard-kit), [idobao](https://idobao.net/products/idobao-id87-v2-tkl-pcb-mounted-hot-swappable-mechanical-keyboard-kit)
+## ANSI Support
+
+* Keyboard Maintainer: [Vino Rodrigues](https://github.com/vinorodrigues)
+* Hardware Supported:
+ - **IDOBAO ID87v2**
+ - **IDOBAO ID87 Crystal**
+ - **IDOBAO ID87 Bestype**
+ - **IDOBAO ID87 Charm** *(Limited Edition)*
+* Hardware Availability: [IDOBAO.net](https://idobao.net/search?type=product&q=ID87*)
+
+## ANSI Layout
+
+![](https://idobao.github.io/kle/idobao-id87.png)
+
+## Compiling & Flashing
Make example for this keyboard (after setting up your build environment):
@@ -22,6 +34,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 key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Bootmagic reset**: Hold down the [Escape] key *(the top left)* 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` *(default is [Fn]+[Escape])*
diff --git a/keyboards/idobao/id87/v2/rules.mk b/keyboards/idobao/id87/v2/rules.mk
index 1d519258e3..eab741fd0a 100644
--- a/keyboards/idobao/id87/v2/rules.mk
+++ b/keyboards/idobao/id87/v2/rules.mk
@@ -1,22 +1,5 @@
-# MCU name
-MCU = atmega32u4
+# This file intentionally left blank
+# ** settings are data driven & stored in `info.json` **
-# 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
-
-LAYOUTS = tkl_ansi
diff --git a/keyboards/idobao/id87/v2/v2.c b/keyboards/idobao/id87/v2/v2.c
index 5bca630ca3..34f0a74669 100644
--- a/keyboards/idobao/id87/v2/v2.c
+++ b/keyboards/idobao/id87/v2/v2.c
@@ -1,45 +1,83 @@
-// Copyright 2022 peepeetee (@peepeetee)
+// Copyright 2022 vinorodrigues (@vinorodrigues)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "v2.h"
-#ifdef RGB_MATRIX_ENABLE
+#define __ NO_LED
+
+#if defined(RGB_MATRIX_ENABLE)
+
+/* Under-, Per-Key
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │102│ │101│100│99 │98 │ │97 │96 │95 │94 │ │93 │92 │91 │90 │ │89 │88 │87 │
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+ * │70 │71 │72 │73 │74 │75 │76 │77 │78 │79 │80 │81 │82 │ 83 │ │84 │85 │86 │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+ * │ 69 │68 │67 │66 │65 │64 │63 │62 │61 │60 │59 │58 │57 │ 56 │ │55 │54 │53 │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+ * │ 40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │50 │51 │ 52 │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │ 39 │38 │37 │36 │35 │34 │33 │32 │31 │30 │29 │ 28 │ │27 │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───â”
+ * │ 16 │ 17 │ 18 │ 19 │ 20 │ 21 │ 22 │ 23 │ │24 │25 │26 │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ *
+ * Underglow (as seen from top)
+ * ┌───┬───┬───┬───┬───┬───┬───â”
+ * │14 │13 │12 │11 │10 │ 9 │ 8 │
+ * ├───┼───┴───┴───┴───┴───┼───┤
+ * │15 │ │ 7 │
+ * ├───┼───┬───┬───┬───┬───┼───┤
+ * │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │
+ * └───┴───┴───┴───┴───┴───┴───┘
+*/
led_config_t g_led_config = { {
// Key Matrix to LED Index
- { 102, NO_LED, 101, 100, 99, 98, 97, 96, 95 }, //0
- { 70, 71, 72, 73, 74, 75, 76, 77, 78 }, //1
- { 69, 68, 67, 66, 65, 64, 63, 62, 61 }, //2
- { 40, 41, 42, 43, 44, 45, 46, 47, 48 }, //3
- { 39, NO_LED, 38, 37, 36, 35, 34, 33, 32 }, //4
- { 16, 17, 18, 23, 22, NO_LED, 19, 21, 20 }, //5
- { NO_LED, 87, 88, 90, 91, 92, 89, 93, 94 }, //6
- { 80, 86, 85, 83, NO_LED, 82, 84, 81, 79 }, //7
- { NO_LED, 53, 54, 56, 57, 58, 55, 59, 60 }, //8
- { NO_LED, NO_LED, 27, 52, NO_LED, 51, NO_LED, 50, 49 }, //9
- { NO_LED, 26, 25, NO_LED, 28, 29, 24, 30, 31 } //A
+ // partially generated from: https://xelus.netlify.app/guides/KLE_to_RGB_parser & CSV Excel formula
+
+ { 102, __, 101, 100, 99, 98, 97, 96, 95 },
+ { 70, 71, 72, 73, 74, 75, 76, 77, 78 },
+ { 69, 68, 67, 66, 65, 64, 63, 62, 61 },
+ { 40, 41, 42, 43, 44, 45, 46, 47, 48 },
+ { 39, __, 38, 37, 36, 35, 34, 33, 32 },
+ { 16, 17, 18, 23, 22, __, 19, 21, 20 },
+ { __, 87, 88, 90, 91, 92, 89, 93, 94 },
+ { 80, 86, 85, 83, __, 82, 84, 81, 79 },
+ { __, 53, 54, 56, 57, 58, 55, 59, 60 },
+ { __, __, 27, 52, __, 51, __, 50, 49 },
+ { __, 26, 25, __, 28, 29, 24, 30, 31 }
}, {
// LED Index to Physical Position
- { 13, 51 },{ 40, 51},{ 73, 51},{ 108, 51},{ 141, 51},{ 174, 51},{ 207, 51},
- { 207, 32},
- { 207, 13},{ 174, 13},{ 141, 13},{ 108, 13},{ 73, 13},{ 40, 13},{ 13, 13},
- { 13, 32},
-
-{ 8, 59 }, { 23, 59 }, { 38, 59 }, { 83, 59 }, { 129, 59 }, { 144, 59 }, { 159, 59 }, { 174, 59 }, { 193, 59 }, { 205, 59 }, { 217, 59 },
-{ 205, 49 }, { 165, 49 }, { 142, 49 }, { 130, 49 }, { 118, 49 }, { 106, 49 }, { 94, 49 }, { 82, 49 }, { 70, 49 }, { 58, 49 }, { 46, 49 }, { 34, 49 }, { 14, 49 },
-{ 11, 39 }, { 28, 39 }, { 40, 39 }, { 52, 39 }, { 64, 39 }, { 76, 39 }, { 88, 39 }, { 100, 39 }, { 112, 39 }, { 124, 39 }, { 136, 39 }, { 148, 39 }, { 168, 39 },
-{ 217, 30 }, { 205, 30 }, { 193, 30 }, { 172, 30 }, { 157, 30 }, { 145, 30 }, { 133, 30 }, { 121, 30 }, { 109, 30 }, { 97, 30 }, { 85, 30 }, { 73, 30 }, { 61, 30 }, { 49, 30 }, { 37, 30 }, { 25, 30 }, { 10, 30 },
-{ 7, 20 }, { 19, 20 }, { 31, 20 }, { 43, 20 }, { 55, 20 }, { 67, 20 }, { 79, 20 }, { 91, 20 }, { 103, 20 }, { 115, 20 }, { 127, 20 }, { 139, 20 }, { 151, 20 }, { 169, 20 }, { 193, 20 }, { 205, 20 }, { 217, 20 },
-{ 217, 5 }, { 205, 5 }, { 193, 5 }, { 175, 5 }, { 163, 5 }, { 151, 5 }, { 139, 5 }, { 121, 5 }, { 109, 5 }, { 97, 5 }, { 85, 5 }, { 67, 5 }, { 55, 5 }, { 43, 5 }, { 31, 5 },{ 7, 5 },
+ // generated from: https://xelus.netlify.app/guides/KLE_to_RGB_parser
+ // underglow
+ /* colors are pushed to the edge as only the edges can be seen */
+ { 0,64 }, { 37,64 }, { 75,64 }, {112,64 }, {149,64 }, {187,64 }, {224,64 },
+ {224,32 },
+ {224,0 }, {187,0 }, {149,0 }, {112,0 }, { 75,0 }, { 37,0 }, { 0,0 },
+ { 0,32 },
+ // under-, per-key
+ /* pattern is complex; starts at btm-lft, zig-zags up, and ends top-lft */
+ { 2,64 }, { 18,64 }, { 34,64 }, { 83,64 }, {131,64 }, {148,64 }, {164,64 }, {180,64 }, {198,64 }, {211,64 }, {224,64 }, // lf-2-rt, btm
+ {211,52 }, {170,52 }, {146,52 }, {133,52 }, {120,52 }, {107,52 }, { 94,52 }, { 81,52 }, { 68,52 }, { 55,52 }, { 42,52 }, { 29,52 }, { 8,52 }, // rt-2-lf**
+ { 5,40 }, { 23,40 }, { 36,40 }, { 49,40 }, { 62,40 }, { 75,40 }, { 88,40 }, {101,40 }, {114,40 }, {127,40 }, {140,40 }, {153,40 }, {174,40 }, // lf-2-rt
+ {224,27 }, {211,27 }, {198,27 }, {179,27 }, {162,27 }, {149,27 }, {136,27 }, {123,27 }, {110,27 }, { 97,27 }, { 84,27 }, { 71,27 }, { 58,27 }, { 45,27 }, { 32,27 }, { 19,27 }, { 3,27 }, // rt-2-lf**
+ { 0,15 }, { 13,15 }, { 26,15 }, { 39,15 }, { 52,15 }, { 65,15 }, { 78,15 }, { 91,15 }, {104,15 }, {117,15 }, {130,15 }, {143,15 }, {156,15 }, {175,15 }, {198,15 }, {211,15 }, {224,15 }, // lf-2-rt
+ {224,0 }, {211,0 }, {198,0 }, {182,0 }, {169,0 }, {156,0 }, {143,0 }, {123,0 }, {110,0 }, { 97,0 }, { 84,0 }, { 65,0 }, { 52,0 }, { 39,0 }, { 26,0 }, { 0,0 }, // rt-2-lf**, top
}, {
// LED Index to Flag
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-
-1,1,1,4,1,1,1,1,1,1,1,
-1,1,4,4,4,4,4,4,4,4,4,4,1,
-9,4,4,4,4,4,4,4,4,4,4,4,1,
-1,1,1,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,4,1,1,1,1,
-1,9,1,4,4,4,4,1,1,1,1,4,4,4,4,1
+ // underglow
+ 2, 2, 2, 2, 2, 2, 2,
+ 2,
+ 2, 2, 2, 2, 2, 2, 2,
+ 2,
+ // under-, per-key
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 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, 1, 1, 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, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
} };
-#endif
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/idobao/id87/v2/v2.h b/keyboards/idobao/id87/v2/v2.h
index 1a75d95755..38b3c9dfda 100644
--- a/keyboards/idobao/id87/v2/v2.h
+++ b/keyboards/idobao/id87/v2/v2.h
@@ -1,40 +1,6 @@
-/*
-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/>.
-*/
+// Copyright 2022 vinorodrigues (@vinorodrigues)
+// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "quantum.h"
-
-#define LAYOUT_tkl_ansi( \
- K00, K02, K03, K04, K05, K06, K07, K08, K68, K67, K65, K64, K63, K66, K62, K61, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K78, K70, K77, K75, K73, K76, K72, K71, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K88, K87, K85, K84, K83, K86, K82, K81, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K98, K97, K95, K93, \
- K40, K42, K43, K44, K45, K46, K47, K48, KA8, KA7, KA5, KA4, K92, \
- K50, K51, K52, K56, K58, K57, K54, K53, KA6, KA2, KA1 \
-) { \
- { K00, KC_NO, K02, K03, K04, K05, K06, K07, K08 }, \
- { K10, K11, 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, KC_NO, K42, K43, K44, K45, K46, K47, K48 }, \
- { K50, K51, K52, K53, K54, KC_NO, K56, K57, K58 }, \
- { KC_NO, K61, K62, K63, K64, K65, K66, K67, K68 }, \
- { K70, K71, K72, K73, KC_NO, K75, K76, K77, K78 }, \
- { KC_NO, K81, K82, K83, K84, K85, K86, K87, K88 }, \
- { KC_NO, KC_NO, K92, K93, KC_NO, K95, KC_NO, K97, K98 }, \
- { KC_NO, KA1, KA2, KC_NO, KA4, KA5, KA6, KA7, KA8 }, \
-}
-
-
diff --git a/keyboards/idobao/id96/config.h b/keyboards/idobao/id96/config.h
index 6bf1f14c43..444464019b 100644
--- a/keyboards/idobao/id96/config.h
+++ b/keyboards/idobao/id96/config.h
@@ -20,13 +20,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6964 // "id"
-#define PRODUCT_ID 0x0096
-#define DEVICE_VER 0x0001
-#define MANUFACTURER IDOBAO
-#define PRODUCT ID96
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -34,7 +27,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0, E6, F0, F1, F4, F5, F6, F7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/idobao/id96/info.json b/keyboards/idobao/id96/info.json
index f972af64a2..0732bce154 100644
--- a/keyboards/idobao/id96/info.json
+++ b/keyboards/idobao/id96/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "id96",
+ "keyboard_name": "ID96",
+ "manufacturer": "IDOBAO",
"url": "https://www.idobao.net/collections/90/products/idobao-id96-aluminum-keyboard-kit",
"maintainer": "vinorodrigues",
+ "usb": {
+ "vid": "0x6964",
+ "pid": "0x0096",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/idobao/id96/readme.md b/keyboards/idobao/id96/readme.md
index 01c42b4e73..e9cbed5270 100644
--- a/keyboards/idobao/id96/readme.md
+++ b/keyboards/idobao/id96/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/idobao/montex/v1/config.h b/keyboards/idobao/montex/v1/config.h
index 2321ce364e..fe1ea61d35 100644
--- a/keyboards/idobao/montex/v1/config.h
+++ b/keyboards/idobao/montex/v1/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6964
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Idobao
-#define PRODUCT Montex
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 5
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D4, D6, D7, B4, B5, C6 }
#define MATRIX_COL_PINS { D5, D3, D2, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
@@ -52,13 +44,22 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-
#define RGB_DI_PIN B1
#ifdef RGB_DI_PIN
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 4
-#define RGBLIGHT_HUE_STEP 8
-#define RGBLIGHT_SAT_STEP 8
-#define RGBLIGHT_VAL_STEP 8
+ // RGBLIGHT_ANIMATIONS
+ #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 4
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
#endif
diff --git a/keyboards/idobao/montex/v1/info.json b/keyboards/idobao/montex/v1/info.json
index c205e0027a..f683456174 100644
--- a/keyboards/idobao/montex/v1/info.json
+++ b/keyboards/idobao/montex/v1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "montex numpad",
+ "keyboard_name": "Montex",
+ "manufacturer": "IDOBAO",
"url": "https://www.idobao.net/products/ldobao-montex-pad-hot-swappable-mechanical-keyboard-kit",
"maintainer": "NachoxMacho",
+ "usb": {
+ "vid": "0x6964",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_6x5": {
"layout": [
diff --git a/keyboards/idobao/montex/v1rgb/config.h b/keyboards/idobao/montex/v1rgb/config.h
index 609aeb417e..670b43462b 100755
--- a/keyboards/idobao/montex/v1rgb/config.h
+++ b/keyboards/idobao/montex/v1rgb/config.h
@@ -5,13 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6964 // "id"
-#define PRODUCT_ID 0x0127
-#define DEVICE_VER 0x0001
-#define MANUFACTURER IDOBAO
-#define PRODUCT Montex RGB
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 5
diff --git a/keyboards/idobao/montex/v1rgb/info.json b/keyboards/idobao/montex/v1rgb/info.json
index 27144e499c..9001a3dfec 100755
--- a/keyboards/idobao/montex/v1rgb/info.json
+++ b/keyboards/idobao/montex/v1rgb/info.json
@@ -1,5 +1,11 @@
{
- "keyboard_name": "IDOBAO MONTEX RGB",
+ "keyboard_name": "Montex RGB",
+ "manufacturer": "IDOBAO",
+ "usb": {
+ "vid": "0x6964",
+ "pid": "0x0127",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_6x5": {
"layout": [
diff --git a/keyboards/idobao/montex/v1rgb/readme.md b/keyboards/idobao/montex/v1rgb/readme.md
index 296f05f239..8066c2193d 100755
--- a/keyboards/idobao/montex/v1rgb/readme.md
+++ b/keyboards/idobao/montex/v1rgb/readme.md
@@ -27,4 +27,4 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or [Esc]) 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/idobao/montex/v2/config.h b/keyboards/idobao/montex/v2/config.h
index 47d43ca458..98ba567203 100755
--- a/keyboards/idobao/montex/v2/config.h
+++ b/keyboards/idobao/montex/v2/config.h
@@ -15,7 +15,6 @@
#define DRIVER_LED_TOTAL 27 // -4 disabled underglow LEDs
#endif
- // #define RGBLIGHT_ANIMATIONS // don't use, please explicitly define
// #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // don't use, too few key to make it look good
#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/idobao/montex/v2/readme.md b/keyboards/idobao/montex/v2/readme.md
index 793507b8f1..63808c0a50 100755
--- a/keyboards/idobao/montex/v2/readme.md
+++ b/keyboards/idobao/montex/v2/readme.md
@@ -38,4 +38,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/illuminati/is0/config.h b/keyboards/illuminati/is0/config.h
index cd7a7ce28f..f589733388 100644
--- a/keyboards/illuminati/is0/config.h
+++ b/keyboards/illuminati/is0/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0012
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Illuminati Works
-#define PRODUCT iS0
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 1
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D2 }
#define MATRIX_COL_PINS { D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/illuminati/is0/info.json b/keyboards/illuminati/is0/info.json
index f47cd753a9..f56850ca85 100644
--- a/keyboards/illuminati/is0/info.json
+++ b/keyboards/illuminati/is0/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "iS0",
+ "manufacturer": "Illuminati Works",
"url": "",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0012",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0.25, "y":0, "w":1.25, "h":2}]
diff --git a/keyboards/illusion/rosa/config.h b/keyboards/illusion/rosa/config.h
index 5ad421ecbe..1bfc08c8c8 100644
--- a/keyboards/illusion/rosa/config.h
+++ b/keyboards/illusion/rosa/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x694B // iK -> illusion keyboards
-#define PRODUCT_ID 0x6952 // iR -> illusion Rosa
-#define DEVICE_VER 0x0001
-#define MANUFACTURER illusion keyboards
-#define PRODUCT Rosa
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { D1, D4, F0, B0, B1 }
#define MATRIX_COL_PINS { D0, D2, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/illusion/rosa/info.json b/keyboards/illusion/rosa/info.json
index 60e285d66f..9b9a613d01 100644
--- a/keyboards/illusion/rosa/info.json
+++ b/keyboards/illusion/rosa/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Rosa",
+ "manufacturer": "illusion keyboards",
"url": "",
"maintainer": "illusion",
+ "usb": {
+ "vid": "0x694B",
+ "pid": "0x6952",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_tsangan": {
"layout": [
diff --git a/keyboards/illusion/rosa/keymaps/oggi/keymap.c b/keyboards/illusion/rosa/keymaps/oggi/keymap.c
index 9fdb762f04..3ddf9b8d2c 100644
--- a/keyboards/illusion/rosa/keymaps/oggi/keymap.c
+++ b/keyboards/illusion/rosa/keymaps/oggi/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN] = LAYOUT_60_ansi_tsangan_split_rshift(
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_TRNS, KC_TRNS, RESET, 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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, 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_LEFT, KC_RIGHT, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOWN, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
diff --git a/keyboards/illusion/rosa/keymaps/split_bs_rshift/keymap.c b/keyboards/illusion/rosa/keymaps/split_bs_rshift/keymap.c
index 6cd4378c74..14b9ef10e6 100644
--- a/keyboards/illusion/rosa/keymaps/split_bs_rshift/keymap.c
+++ b/keyboards/illusion/rosa/keymaps/split_bs_rshift/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN] = LAYOUT_60_ansi_tsangan_split_bs_rshift(
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, 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, QK_BOOT, 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
diff --git a/keyboards/illusion/rosa/keymaps/split_rshift/keymap.c b/keyboards/illusion/rosa/keymaps/split_rshift/keymap.c
index 15bbfef04a..072739c306 100644
--- a/keyboards/illusion/rosa/keymaps/split_rshift/keymap.c
+++ b/keyboards/illusion/rosa/keymaps/split_rshift/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN] = LAYOUT_60_ansi_tsangan_split_rshift(
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_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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/ilumkb/primus75/config.h b/keyboards/ilumkb/primus75/config.h
index 4b6901d096..2751eaea6c 100644
--- a/keyboards/ilumkb/primus75/config.h
+++ b/keyboards/ilumkb/primus75/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A
-#define PRODUCT_ID 0x1014
-#define DEVICE_VER 0x0001
-#define MANUFACTURER moyi4681
-#define PRODUCT Primus75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -31,7 +24,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5, B7 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, F5, D4, B1, B0, B5, B4, D7, D6, B3, F4, F6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ilumkb/primus75/info.json b/keyboards/ilumkb/primus75/info.json
index 56f2be0c81..30a970a5c9 100644
--- a/keyboards/ilumkb/primus75/info.json
+++ b/keyboards/ilumkb/primus75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Primus75",
+ "manufacturer": "moyi4681",
"url": "",
"maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x445A",
+ "pid": "0x1014",
+ "device_version": "0.0.1"
+ },
"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":"PrtSc", "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}, {"x":13, "y":1.25}, {"label":"Backspace", "x":14, "y":1.25}, {"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":"Page Up", "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":"Page Down", "x":15, "y":3.25}, {"label":"Shift", "x":0, "y":4.25, "w":1.25}, {"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":"Up", "x":14, "y":4.25}, {"label":"End", "x":15, "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}, {"label":"Fn", "x":11, "y":5.25}, {"label":"Ctrl", "x":12, "y":5.25}, {"label":"Left", "x":13, "y":5.25}, {"label":"Down", "x":14, "y":5.25}, {"label":"Right", "x":15, "y":5.25}]
diff --git a/keyboards/ilumkb/simpler61/config.h b/keyboards/ilumkb/simpler61/config.h
index ae737bd1b6..0b952c25e5 100644
--- a/keyboards/ilumkb/simpler61/config.h
+++ b/keyboards/ilumkb/simpler61/config.h
@@ -18,20 +18,12 @@
#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
diff --git a/keyboards/ilumkb/simpler61/info.json b/keyboards/ilumkb/simpler61/info.json
index 01dc02797f..7c2e0dd3af 100644
--- a/keyboards/ilumkb/simpler61/info.json
+++ b/keyboards/ilumkb/simpler61/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Simpler61",
+ "manufacturer": "Equalz",
"url": "",
"maintainer": "Equalz",
+ "usb": {
+ "vid": "0xC3C3",
+ "pid": "0xC361",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_61_ansi": {
"layout": [
diff --git a/keyboards/ilumkb/simpler64/config.h b/keyboards/ilumkb/simpler64/config.h
index faf8fd152d..324745efa8 100644
--- a/keyboards/ilumkb/simpler64/config.h
+++ b/keyboards/ilumkb/simpler64/config.h
@@ -18,20 +18,12 @@
#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
diff --git a/keyboards/ilumkb/simpler64/info.json b/keyboards/ilumkb/simpler64/info.json
index c0fd4800cc..0b99efb820 100644
--- a/keyboards/ilumkb/simpler64/info.json
+++ b/keyboards/ilumkb/simpler64/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Simpler64",
+ "manufacturer": "Equalz",
"url": "",
"maintainer": "Equalz",
+ "usb": {
+ "vid": "0xC3C3",
+ "pid": "0xC364",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_64_ansi": {
"layout": [
diff --git a/keyboards/ilumkb/volcano660/config.h b/keyboards/ilumkb/volcano660/config.h
index 9fb7b03c2b..7936e968b7 100644
--- a/keyboards/ilumkb/volcano660/config.h
+++ b/keyboards/ilumkb/volcano660/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x445A // "DZ"
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DZTECH
-#define PRODUCT VOLCANO660
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B6 }
#define MATRIX_COL_PINS { C6, C7, F7, F6, F5, F4, F1, F0, D3, D5, D4, D6, D7, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ilumkb/volcano660/info.json b/keyboards/ilumkb/volcano660/info.json
index db26ee3859..a48cabf720 100644
--- a/keyboards/ilumkb/volcano660/info.json
+++ b/keyboards/ilumkb/volcano660/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "volcano660",
+ "keyboard_name": "Volcano660",
+ "manufacturer": "DZTech",
"url": "",
"maintainer": "dztech",
+ "usb": {
+ "vid": "0x445A",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"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}, {"x":14, "y":0}, {"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":"|", "x":13.5, "y":1, "w":1.5}, {"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":"Enter", "x":12.75, "y":2, "w":2.25}, {"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":2.25}, {"x":14.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":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}, {"label":"Menu", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4}]
diff --git a/keyboards/inett_studio/sqx/hotswap/config.h b/keyboards/inett_studio/sqx/hotswap/config.h
index f516473cfa..af9c4ecbe2 100644
--- a/keyboards/inett_studio/sqx/hotswap/config.h
+++ b/keyboards/inett_studio/sqx/hotswap/config.h
@@ -20,19 +20,11 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x694E //'iN'
-#define PRODUCT_ID 0x5336 //'S6'
-#define DEVICE_VER 0x0001
-#define MANUFACTURER iNETT Studio
-#define PRODUCT SQUARE.X
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { F0, F1, F4, B7, D6}
#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, F7, F6, F5, E6, B0, D2, D4, D5, D3 }
-#define UNUSED_PINS
#define DIODE_DIRECTION ROW2COL
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/inett_studio/sqx/hotswap/info.json b/keyboards/inett_studio/sqx/hotswap/info.json
index f2d36a5035..6941c4c7d8 100644
--- a/keyboards/inett_studio/sqx/hotswap/info.json
+++ b/keyboards/inett_studio/sqx/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "sqx",
+ "keyboard_name": "SQUARE.X",
+ "manufacturer": "iNETT Studio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x694E",
+ "pid": "0x5336",
+ "device_version": "0.0.1"
+ },
"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/inett_studio/sqx/universal/config.h b/keyboards/inett_studio/sqx/universal/config.h
index d1fbf8f7a1..8c2405e644 100644
--- a/keyboards/inett_studio/sqx/universal/config.h
+++ b/keyboards/inett_studio/sqx/universal/config.h
@@ -20,19 +20,11 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x694E //'iN'
-#define PRODUCT_ID 0x5336 //'S6'
-#define DEVICE_VER 0x0001
-#define MANUFACTURER iNETT Studio
-#define PRODUCT SQUARE.X
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { F0, F1, F4, B7, D6}
#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, F7, F6, F5, E6, B0, D2, D4, D5, D3 }
-#define UNUSED_PINS
#define DIODE_DIRECTION ROW2COL
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/inett_studio/sqx/universal/info.json b/keyboards/inett_studio/sqx/universal/info.json
index 4588b27d58..8a2750f5ba 100644
--- a/keyboards/inett_studio/sqx/universal/info.json
+++ b/keyboards/inett_studio/sqx/universal/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "sqx",
+ "keyboard_name": "SQUARE.X",
+ "manufacturer": "iNETT Studio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x694E",
+ "pid": "0x5336",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_tsangan_split_rshift": {
"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, "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":1.75}, {"label":"Fn", "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}, {"x":4, "y":4, "w":7}, {"label":"Alt", "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/ingrained/config.h b/keyboards/ingrained/config.h
new file mode 100644
index 0000000000..7741dde0f7
--- /dev/null
+++ b/keyboards/ingrained/config.h
@@ -0,0 +1,51 @@
+// Copyright 2021 s8erdude (@jpuerto96)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 12
+
+#define MATRIX_ROWS_PER_SIDE (MATRIX_ROWS / 2)
+#define MATRIX_COLS_PER_SIDE (MATRIX_COLS / 2)
+
+#define UNUSED_MCU 13
+#define UNUSED_MCP 6
+
+
+// wiring
+#define MATRIX_ROW_PINS_MCU \
+ { B0, B1, B2, B3 }
+#define MATRIX_COL_PINS_MCU \
+ { F7, F6, F5, F4, F1, F0 }
+#define UNUSED_PINS_MCU \
+ { B4, B5, B6, B7, C6, C7, D2, D3, D4, D5, D6, D7, E6}
+#define MATRIX_ROW_PINS_MCP \
+ { B0, B1, B2, B3 }
+#define MATRIX_COL_PINS_MCP \
+ { A0, A1, A2, A3, A4, A5 }
+#define UNUSED_PINS_MCP \
+ { B4, B5, B6, B7, A6, A7 }
+
+/*
+ * 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
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
diff --git a/keyboards/ingrained/info.json b/keyboards/ingrained/info.json
new file mode 100644
index 0000000000..1db1c930f6
--- /dev/null
+++ b/keyboards/ingrained/info.json
@@ -0,0 +1,276 @@
+{
+ "keyboard_name": "ingrained",
+ "manufacturer": "s8erdude"
+ "url": "https://github.com/jpuerto96",
+ "maintainer": "jpuerto96 (s8erdude)",
+ "usb": {
+ "vid": "0xB33F",
+ "pid": "0x58E4",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_split_3x6_3": {
+ "layout": [
+ {
+ "label": "Esc",
+ "x": 0,
+ "y": 0.3
+ },
+ {
+ "label": "Q",
+ "x": 1,
+ "y": 0.3
+ },
+ {
+ "label": "W",
+ "x": 2,
+ "y": 0.1
+ },
+ {
+ "label": "E",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "R",
+ "x": 4,
+ "y": 0.1
+ },
+ {
+ "label": "T",
+ "x": 5,
+ "y": 0.2
+ },
+ {
+ "label": "Y",
+ "x": 9,
+ "y": 0.2
+ },
+ {
+ "label": "U",
+ "x": 10,
+ "y": 0.1
+ },
+ {
+ "label": "I",
+ "x": 11,
+ "y": 0
+ },
+ {
+ "label": "O",
+ "x": 12,
+ "y": 0.1
+ },
+ {
+ "label": "P",
+ "x": 13,
+ "y": 0.3
+ },
+ {
+ "label": "Back Space",
+ "x": 14,
+ "y": 0.3
+ },
+ {
+ "label": "Tab",
+ "x": 0,
+ "y": 1.3
+ },
+ {
+ "label": "A",
+ "x": 1,
+ "y": 1.3
+ },
+ {
+ "label": "S",
+ "x": 2,
+ "y": 1.1
+ },
+ {
+ "label": "D",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "F",
+ "x": 4,
+ "y": 1.1
+ },
+ {
+ "label": "G",
+ "x": 5,
+ "y": 1.2
+ },
+ {
+ "label": "H",
+ "x": 9,
+ "y": 1.2
+ },
+ {
+ "label": "J",
+ "x": 10,
+ "y": 1.1
+ },
+ {
+ "label": "K",
+ "x": 11,
+ "y": 1
+ },
+ {
+ "label": "L",
+ "x": 12,
+ "y": 1.1
+ },
+ {
+ "label": ";",
+ "x": 13,
+ "y": 1.3
+ },
+ {
+ "label": "'",
+ "x": 14,
+ "y": 1.3
+ },
+ {
+ "label": "Shift",
+ "x": 0,
+ "y": 2.3
+ },
+ {
+ "label": "Z",
+ "x": 1,
+ "y": 2.3
+ },
+ {
+ "label": "X",
+ "x": 2,
+ "y": 2.1
+ },
+ {
+ "label": "C",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "V",
+ "x": 4,
+ "y": 2.1
+ },
+ {
+ "label": "B",
+ "x": 5,
+ "y": 2.2
+ },
+ {
+ "label": "N",
+ "x": 9,
+ "y": 2.2
+ },
+ {
+ "label": "M",
+ "x": 10,
+ "y": 2.1
+ },
+ {
+ "label": ",",
+ "x": 11,
+ "y": 2
+ },
+ {
+ "label": ".",
+ "x": 12,
+ "y": 2.1
+ },
+ {
+ "label": "/",
+ "x": 13,
+ "y": 2.3
+ },
+ {
+ "label": "Shift",
+ "x": 14,
+ "y": 2.3
+ },
+ {
+ "label": "GUI",
+ "x": 4,
+ "y": 3.7
+ },
+ {
+ "label": "Lower",
+ "x": 5,
+ "y": 3.7
+ },
+ {
+ "label": "Space",
+ "x": 6,
+ "y": 3.2,
+ "h": 1.5
+ },
+ {
+ "label": "Enter",
+ "x": 8,
+ "y": 3.2,
+ "h": 1.5
+ },
+ {
+ "label": "Raise",
+ "x": 9,
+ "y": 3.7
+ },
+ {
+ "label": "Alt",
+ "x": 10,
+ "y": 3.7
+ }
+ ]
+ },
+ "LAYOUT_split_3x5_3": {
+ "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", "x":3, "y":3.7},
+ {"label":"Lower", "x":4, "y":3.7},
+ {"label":"Space", "x":5, "y":3.2, "h":1.5},
+
+ {"label":"Enter", "x":7, "y":3.2, "h":1.5},
+ {"label":"Raise", "x":8, "y":3.7},
+ {"label":"Alt", "x":9, "y":3.7}
+ ]
+ }
+ }
+}
diff --git a/keyboards/ingrained/ingrained.c b/keyboards/ingrained/ingrained.c
new file mode 100644
index 0000000000..80aa82f840
--- /dev/null
+++ b/keyboards/ingrained/ingrained.c
@@ -0,0 +1,4 @@
+// Copyright 2021 s8erdude (@jpuerto96)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "ingrained.h"
diff --git a/keyboards/ingrained/ingrained.h b/keyboards/ingrained/ingrained.h
new file mode 100644
index 0000000000..d2e3055951
--- /dev/null
+++ b/keyboards/ingrained/ingrained.h
@@ -0,0 +1,47 @@
+// Copyright 2021 s8erdude (@jpuerto96)
+// 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_split_3x6_3( \
+ k00, k01, k02, k03, k04, k05, k011, k010, k09, k08, k07, k06,\
+ k10, k11, k12, k13, k14, k15, k111, k110, k19, k18, k17, k16,\
+ k20, k21, k22, k23, k24, k25, k211, k210, k29, k28, k27, k26,\
+ k33, k34, k35, k311, k310, k39\
+) { \
+ { k00, k01, k02, k03, k04, k05 },\
+ { k10, k11, k12, k13, k14, k15 },\
+ { k20, k21, k22, k23, k24, k25 },\
+ { XXX, XXX, XXX, k33, k34, k35 },\
+ { k06, k07, k08, k09, k010, k011 },\
+ { k16, k17, k18, k19, k110, k111 },\
+ { k26, k27, k28, k29, k210, k211 },\
+ { XXX, XXX, XXX, k39, k310, k311 }\
+}
+#define LAYOUT_split_3x5_3( \
+ k01, k02, k03, k04, k05, k011, k010, k09, k08, k07,\
+ k11, k12, k13, k14, k15, k111, k110, k19, k18, k17,\
+ k21, k22, k23, k24, k25, k211, k210, k29, k28, k27,\
+ k33, k34, k35, k311, k310, k39\
+) { \
+ { XXX, k01, k02, k03, k04, k05 },\
+ { XXX, k11, k12, k13, k14, k15 },\
+ { XXX, k21, k22, k23, k24, k25 },\
+ { XXX, XXX, XXX, k33, k34, k35 },\
+ { XXX, k07, k08, k09, k010, k011 },\
+ { XXX, k17, k18, k19, k110, k111 },\
+ { XXX, k27, k28, k29, k210, k211 },\
+ { XXX, XXX, XXX, k39, k310, k311 }\
+}
diff --git a/keyboards/ingrained/keymaps/3x5/keymap.c b/keyboards/ingrained/keymaps/3x5/keymap.c
new file mode 100644
index 0000000000..ed34809b42
--- /dev/null
+++ b/keyboards/ingrained/keymaps/3x5/keymap.c
@@ -0,0 +1,23 @@
+// Copyright 2021 s8erdude (@jpuerto96)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#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,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = 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, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_RALT
+ )
+};
diff --git a/keyboards/ingrained/keymaps/3x5/readme.md b/keyboards/ingrained/keymaps/3x5/readme.md
new file mode 100644
index 0000000000..c2a997fcbf
--- /dev/null
+++ b/keyboards/ingrained/keymaps/3x5/readme.md
@@ -0,0 +1 @@
+# The 3x5 keymap for ingrained
diff --git a/keyboards/ingrained/keymaps/default/keymap.c b/keyboards/ingrained/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b09702e9ee
--- /dev/null
+++ b/keyboards/ingrained/keymaps/default/keymap.c
@@ -0,0 +1,23 @@
+// Copyright 2021 s8erdude (@jpuerto96)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#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,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_split_3x6_3(
+ 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_LGUI, KC_SPC, KC_TAB, KC_BSPC, KC_ENT, KC_RALT
+ ),
+};
diff --git a/keyboards/ingrained/keymaps/default/readme.md b/keyboards/ingrained/keymaps/default/readme.md
new file mode 100644
index 0000000000..804feead66
--- /dev/null
+++ b/keyboards/ingrained/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for ingrained
diff --git a/keyboards/ingrained/matrix.c b/keyboards/ingrained/matrix.c
new file mode 100644
index 0000000000..0dfb150b6c
--- /dev/null
+++ b/keyboards/ingrained/matrix.c
@@ -0,0 +1,253 @@
+/*
+Copyright 2013 Oleg Kostyuk <cub.uanic@gmail.com>
+ 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/>.
+*/
+
+/*
+ * This code was heavily inspired by the ergodox_ez keymap, and modernized
+ * to take advantage of the quantum.h microcontroller agnostics gpio control
+ * abstractions and use the macros defined in config.h for the wiring as opposed
+ * to repeating that information all over the place.
+ */
+
+#include QMK_KEYBOARD_H
+#include "i2c_master.h"
+
+extern i2c_status_t mcp23017_status;
+#define I2C_TIMEOUT 1000
+
+// For a better understanding of the i2c protocol, this is a good read:
+// https://www.robot-electronics.co.uk/i2c-tutorial
+
+// I2C address:
+// See the datasheet, section 3.3.1 on addressing I2C devices and figure 3-6 for an
+// illustration
+// http://ww1.microchip.com/downloads/en/devicedoc/20001952c.pdf
+// All address pins of the mcp23017 are connected to the ground on the ferris
+// | 0 | 1 | 0 | 0 | A2 | A1 | A0 |
+// | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
+#define I2C_ADDR 0b0100000
+#define I2C_ADDR_WRITE ((I2C_ADDR << 1) | I2C_WRITE)
+#define I2C_ADDR_READ ((I2C_ADDR << 1) | I2C_READ)
+
+// Register addresses
+// See https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library/blob/master/Adafruit_MCP23017.h
+#define IODIRA 0x00 // i/o direction register
+#define IODIRB 0x01
+#define GPPUA 0x0C // GPIO pull-up resistor register
+#define GPPUB 0x0D
+#define GPIOA 0x12 // general purpose i/o port register (write modifies OLAT)
+#define GPIOB 0x13
+#define OLATA 0x14 // output latch register
+#define OLATB 0x15
+
+bool i2c_initialized = 0;
+i2c_status_t mcp23017_status = I2C_ADDR;
+
+uint8_t init_mcp23017(void) {
+ print("starting init");
+ mcp23017_status = I2C_ADDR;
+
+ // I2C subsystem
+ if (i2c_initialized == 0) {
+ i2c_init(); // on pins D(1,0)
+ i2c_initialized = true;
+ wait_ms(I2C_TIMEOUT);
+ }
+
+ // set pin direction
+ // - unused : input : 1
+ // - input : input : 1
+ // - driving : output : 0
+ // This means: we will read all the bits on GPIOA
+ // This means: we will write to the pins 0-4 on GPIOB (in select_rows)
+ uint8_t buf[] = {IODIRA, 0b11111111, 0b11110000};
+ mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT);
+ if (!mcp23017_status) {
+ // set pull-up
+ // - unused : on : 1
+ // - input : on : 1
+ // - driving : off : 0
+ // This means: we will read all the bits on GPIOA
+ // This means: we will write to the pins 0-4 on GPIOB (in select_rows)
+ uint8_t pullup_buf[] = {GPPUA, 0b11111111, 0b11110000};
+ mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, pullup_buf, sizeof(pullup_buf), I2C_TIMEOUT);
+ }
+ return mcp23017_status;
+}
+
+/* matrix state(1:on, 0:off) */
+static matrix_row_t matrix[MATRIX_ROWS]; // debounced values
+
+static matrix_row_t read_cols(uint8_t row);
+static void init_cols(void);
+static void unselect_rows(void);
+static void select_row(uint8_t row);
+
+static uint8_t mcp23017_reset_loop;
+
+void matrix_init_custom(void) {
+ // initialize row and col
+
+ mcp23017_status = init_mcp23017();
+
+ unselect_rows();
+ init_cols();
+
+ // initialize matrix state: all keys off
+ for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+ matrix[i] = 0;
+ }
+}
+
+void matrix_power_up(void) {
+ mcp23017_status = init_mcp23017();
+
+ unselect_rows();
+ init_cols();
+
+ // initialize matrix state: all keys off
+ for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+ matrix[i] = 0;
+ }
+}
+
+// Reads and stores a row, returning
+// whether a change occurred.
+static inline bool store_matrix_row(matrix_row_t current_matrix[], uint8_t index) {
+ matrix_row_t temp = read_cols(index);
+ if (current_matrix[index] != temp) {
+ current_matrix[index] = temp;
+ return true;
+ }
+ return false;
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ if (mcp23017_status) { // if there was an error
+ if (++mcp23017_reset_loop == 0) {
+ // if (++mcp23017_reset_loop >= 1300) {
+ // since mcp23017_reset_loop is 8 bit - we'll try to reset once in 255 matrix scans
+ // this will be approx bit more frequent than once per second
+ dprint("trying to reset mcp23017\n");
+ mcp23017_status = init_mcp23017();
+ if (mcp23017_status) {
+ dprint("right side not responding\n");
+ } else {
+ dprint("right side attached\n");
+ }
+ }
+ }
+
+ bool changed = false;
+ for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) {
+ // select rows from left and right hands
+ uint8_t left_index = i;
+ uint8_t right_index = i + MATRIX_ROWS_PER_SIDE;
+ select_row(left_index);
+ select_row(right_index);
+
+ // we don't need a 30us delay anymore, because selecting a
+ // left-hand row requires more than 30us for i2c.
+
+ changed |= store_matrix_row(current_matrix, left_index);
+ changed |= store_matrix_row(current_matrix, right_index);
+
+ unselect_rows();
+ }
+
+ return changed;
+}
+
+static void init_cols(void) {
+ // init on mcp23017
+ // not needed, already done as part of init_mcp23017()
+
+ // init on mcu
+ pin_t matrix_col_pins_mcu[MATRIX_COLS_PER_SIDE] = MATRIX_COL_PINS_MCU;
+ for (int pin_index = 0; pin_index < MATRIX_COLS_PER_SIDE; pin_index++) {
+ pin_t pin = matrix_col_pins_mcu[pin_index];
+ setPinInput(pin);
+ writePinHigh(pin);
+ }
+}
+
+static matrix_row_t read_cols(uint8_t row) {
+ if (row < MATRIX_ROWS_PER_SIDE) {
+ pin_t matrix_col_pins_mcu[MATRIX_COLS_PER_SIDE] = MATRIX_COL_PINS_MCU;
+ matrix_row_t current_row_value = 0;
+ // For each col...
+ for (uint8_t col_index = 0; col_index < MATRIX_COLS_PER_SIDE; col_index++) {
+ // Select the col pin to read (active low)
+ uint8_t pin_state = readPin(matrix_col_pins_mcu[col_index]);
+
+ // Populate the matrix row with the state of the col pin
+ current_row_value |= pin_state ? 0 : (MATRIX_ROW_SHIFTER << col_index);
+ }
+ return current_row_value;
+ } else {
+ if (mcp23017_status) { // if there was an error
+ return 0;
+ } else {
+ uint8_t buf[] = {GPIOA};
+ mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT);
+ // We read all the pins on GPIOA.
+ // The initial state was all ones and any depressed key at a given column for the currently selected row will have its bit flipped to zero.
+ // The return value is a row as represented in the generic matrix code were the rightmost bits represent the lower columns and zeroes represent non-depressed keys while ones represent depressed keys.
+ // Since the pins connected to eact columns are sequential, and counting from zero up (col 5 -> GPIOA0, col 6 -> GPIOA1 and so on), the only transformation needed is a bitwise not to swap all zeroes and ones.
+ uint8_t data[] = {0};
+ if (!mcp23017_status) {
+ mcp23017_status = i2c_receive(I2C_ADDR_READ, data, sizeof(data), I2C_TIMEOUT);
+ data[0] = ~(data[0]);
+ }
+ return data[0];
+ }
+ }
+}
+
+static void unselect_rows(void) {
+ // no need to unselect on mcp23017, because the select step sets all
+ // the other row bits high, and it's not changing to a different
+ // direction
+
+ // unselect rows on microcontroller
+ pin_t matrix_row_pins_mcu[MATRIX_ROWS_PER_SIDE] = MATRIX_ROW_PINS_MCU;
+ for (int pin_index = 0; pin_index < MATRIX_ROWS_PER_SIDE; pin_index++) {
+ pin_t pin = matrix_row_pins_mcu[pin_index];
+ setPinInput(pin);
+ writePinLow(pin);
+ }
+}
+
+static void select_row(uint8_t row) {
+ if (row < MATRIX_ROWS_PER_SIDE) {
+ // select on atmega32u4
+ pin_t matrix_row_pins_mcu[MATRIX_ROWS_PER_SIDE] = MATRIX_ROW_PINS_MCU;
+ pin_t pin = matrix_row_pins_mcu[row];
+ setPinOutput(pin);
+ writePinLow(pin);
+ } else {
+ // select on mcp23017
+ if (mcp23017_status) { // if there was an error
+ // do nothing
+ } else {
+ // Select the desired row by writing a byte for the entire GPIOB bus where only the bit representing the row we want to select is a zero (write instruction) and every other bit is a one.
+ // Note that the row - MATRIX_ROWS_PER_SIDE reflects the fact that being on the right hand, the columns are numbered from MATRIX_ROWS_PER_SIDE to MATRIX_ROWS, but the pins we want to write to are indexed from zero up on the GPIOB bus.
+ uint8_t buf[] = {GPIOB, 0xFF & ~(1 << (row - MATRIX_ROWS_PER_SIDE))};
+ mcp23017_status = i2c_transmit(I2C_ADDR_WRITE, buf, sizeof(buf), I2C_TIMEOUT);
+ }
+ }
+}
diff --git a/keyboards/ingrained/readme.md b/keyboards/ingrained/readme.md
new file mode 100644
index 0000000000..3e616e52bb
--- /dev/null
+++ b/keyboards/ingrained/readme.md
@@ -0,0 +1,19 @@
+# ingrained
+
+This PCB is an integrated, USB-C to USB-C, Corne replacement.
+
+* Keyboard Maintainer: [s8erdude](https://github.com/jpuerto96)
+* Hardware Supported: Ingrained PCB
+* Hardware Availability: [Open Source PCB](https://github.com/jpuerto96/crkbd)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ingrained:default
+
+Flashing example for this keyboard:
+
+ make ingrained:default:flash
+
+To reset the board, you will want to short the pad labeled RESET on the main half (near the USB-C interconnect).
+
+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/ingrained/rules.mk b/keyboards/ingrained/rules.mk
new file mode 100644
index 0000000000..03e074deda
--- /dev/null
+++ b/keyboards/ingrained/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 = 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
+UNICODE_ENABLE = yes
+CUSTOM_MATRIX = lite
+NO_USB_STARTUP_CHECK = yes
+LTO_ENABLE = yes
+
+SRC += matrix.c
+QUANTUM_LIB_SRC += i2c_master.c
+
+LAYOUTS = split_3x5_3 split_3x6_3
diff --git a/keyboards/input_club/ergodox_infinity/config.h b/keyboards/input_club/ergodox_infinity/config.h
index debf9a62b9..00dd0bd1f3 100644
--- a/keyboards/input_club/ergodox_infinity/config.h
+++ b/keyboards/input_club/ergodox_infinity/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1c11
-#define PRODUCT_ID 0xb04d
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Input Club
-#define PRODUCT Infinity_Ergodox/QMK
-
#define MOUSEKEY_INTERVAL 20
#define MOUSEKEY_DELAY 0
#define MOUSEKEY_TIME_TO_MAX 60
@@ -56,7 +49,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// For some reason, the rows are colums in the schematic, and vice versa
#define MATRIX_ROW_PINS { B2, B3, B18, B19, C0, C9, C10, C11, D0 }
#define MATRIX_COL_PINS { D1, D4, D5, D6, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/input_club/ergodox_infinity/info.json b/keyboards/input_club/ergodox_infinity/info.json
index 22b20eec39..dd6b3ac9aa 100644
--- a/keyboards/input_club/ergodox_infinity/info.json
+++ b/keyboards/input_club/ergodox_infinity/info.json
@@ -1,5 +1,11 @@
{
- "keyboard_name": "Infinity Ergodox",
+ "keyboard_name": "Infinity Ergodox (QMK)",
+ "manufacturer": "Input:Club",
+ "usb": {
+ "vid": "0x1C11",
+ "pid": "0xB04D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ergodox": {
"layout": [
diff --git a/keyboards/input_club/ergodox_infinity/keymaps/default/keymap.c b/keyboards/input_club/ergodox_infinity/keymaps/default/keymap.c
index cd65001803..6f9967b46e 100644
--- a/keyboards/input_club/ergodox_infinity/keymaps/default/keymap.c
+++ b/keyboards/input_club/ergodox_infinity/keymaps/default/keymap.c
@@ -167,7 +167,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/input_club/ergodox_infinity/keymaps/dudeofawesome/keymap.c b/keyboards/input_club/ergodox_infinity/keymaps/dudeofawesome/keymap.c
index 675b56edec..266194de35 100644
--- a/keyboards/input_club/ergodox_infinity/keymaps/dudeofawesome/keymap.c
+++ b/keyboards/input_club/ergodox_infinity/keymaps/dudeofawesome/keymap.c
@@ -311,7 +311,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_ergodox(
// left hand
VRSN, _______, _______, _______, _______, _______, _______,
- _______, RESET, DEBUG, BL_TOGG, BL_STEP, _______, _______,
+ _______, QK_BOOT, DEBUG, BL_TOGG, BL_STEP, _______, _______,
KC_CAPS, _______, _______, _______, _______, AG_NORM,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
diff --git a/keyboards/input_club/ergodox_infinity/keymaps/gordon/keymap.c b/keyboards/input_club/ergodox_infinity/keymaps/gordon/keymap.c
index c321d546fb..a95302b3f6 100644
--- a/keyboards/input_club/ergodox_infinity/keymaps/gordon/keymap.c
+++ b/keyboards/input_club/ergodox_infinity/keymaps/gordon/keymap.c
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//**************************MOUSE MOVEMENT LAYER**************************
[_MOUSE] = LAYOUT_ergodox(UP_ENTER_RESET,________,________,________,________,________,MODRESET,
- RESET,KC_SECRET_5,________,KC_MS_UP,KC_SECRET_4,KC_MS_WH_UP,________,
+ QK_BOOT,KC_SECRET_5,________,KC_MS_UP,KC_SECRET_4,KC_MS_WH_UP,________,
________,________,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,KC_MS_WH_DOWN,
KC_SECRET_5,KC_SECRET_4,KC_SECRET_3,_XXXXXX_,KC_SECRET_2,KC_SECRET_1,_XXXXXX_,
________,________,HYPR(KC_F15),KC_MS_WH_LEFT,KC_MS_WH_RIGHT,
@@ -335,7 +335,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_on();
ergodox_led_all_on();
diff --git a/keyboards/input_club/ergodox_infinity/keymaps/halfkeyboard/keymap.c b/keyboards/input_club/ergodox_infinity/keymaps/halfkeyboard/keymap.c
index 3870dd8ffd..0498cb48bb 100644
--- a/keyboards/input_club/ergodox_infinity/keymaps/halfkeyboard/keymap.c
+++ b/keyboards/input_club/ergodox_infinity/keymaps/halfkeyboard/keymap.c
@@ -354,7 +354,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, LCTL(KC_Q), LCTL(KC_W),LCTL(KC_E),LCTL(KC_R),LCTL(KC_T), KC_NO,
KC_BSPC, LCTL(KC_A), LCTL(KC_S),LCTL(KC_D),LCTL(KC_F),LCTL(KC_G),
KC_LSFT, LCTL(KC_Z), LCTL(KC_X),LCTL(KC_C),LCTL(KC_V),LCTL(KC_B), KC_MINUS,
- RESET, KC_LALT, LCTL(LSFT(KC_TAB)),LCTL(KC_TAB), KC_TRANSPARENT,
+ QK_BOOT, KC_LALT, LCTL(LSFT(KC_TAB)),LCTL(KC_TAB), KC_TRANSPARENT,
TG(SYMB), TG(DVORAK),
TG(FUNCTION),
@@ -364,7 +364,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
TG(SYMB),LCTL(KC_Y),LCTL(KC_U),LCTL(KC_I),LCTL(KC_O),LCTL(KC_P),KC_BSLS,
LCTL(KC_H),LCTL(KC_J),LCTL(KC_K),LCTL(KC_L),LCTL(KC_SCLN),KC_ENT,
KC_EQL,LCTL(KC_N),LCTL(KC_M),LCTL(KC_COMM),LCTL(KC_DOT),LCTL(KC_SLASH),KC_RSFT,
- KC_TRNS, KC_UP,KC_DOWN,KC_RALT, RESET,
+ KC_TRNS, KC_UP,KC_DOWN,KC_RALT, QK_BOOT,
TG(PROPERSTENO),TG(PLVR),
KC_NO,
KC_NO,KC_NO, KC_NO
@@ -492,7 +492,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/input_club/ergodox_infinity/keymaps/input_club/keymap.c b/keyboards/input_club/ergodox_infinity/keymaps/input_club/keymap.c
index 545429fca0..13cf68e758 100644
--- a/keyboards/input_club/ergodox_infinity/keymaps/input_club/keymap.c
+++ b/keyboards/input_club/ergodox_infinity/keymaps/input_club/keymap.c
@@ -149,7 +149,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | |
* +-----+-----+-----+
*/
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -223,7 +223,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/input_club/ergodox_infinity/keymaps/narze/keymap.c b/keyboards/input_club/ergodox_infinity/keymaps/narze/keymap.c
index dd721e9a78..4869cfae20 100644
--- a/keyboards/input_club/ergodox_infinity/keymaps/narze/keymap.c
+++ b/keyboards/input_club/ergodox_infinity/keymaps/narze/keymap.c
@@ -427,7 +427,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_ergodox(
// left hand
_______, _______, _______, _______, _______, _______, _______,
- _______, RESET, _______, _______, _______, _______, _______,
+ _______, QK_BOOT, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, AG_NORM,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
@@ -659,7 +659,7 @@ void matrix_setup(void) {
}
void matrix_scan_user(void) {
- // uint8_t layer = biton32(layer_state);
+ // uint8_t layer = get_highest_layer(layer_state);
// ergodox_board_led_off();
// ergodox_right_led_1_off();
diff --git a/keyboards/input_club/ergodox_infinity/keymaps/nordic_ergo/keymap.c b/keyboards/input_club/ergodox_infinity/keymaps/nordic_ergo/keymap.c
index d08b96cc6e..a122b83af8 100644
--- a/keyboards/input_club/ergodox_infinity/keymaps/nordic_ergo/keymap.c
+++ b/keyboards/input_club/ergodox_infinity/keymaps/nordic_ergo/keymap.c
@@ -153,7 +153,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 3: Media and mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
- * | RESET | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * | QK_BOOT | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | Lclk | MsUp | Rclk | | | | | |VolDwn| Mute |VolUp | | F12 |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
@@ -174,7 +174,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// MEDIA AND MOUSE
[MDIA] = LAYOUT_ergodox(
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
_______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______,
_______, KC_BTN4, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN5,
_______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN3, _______,
@@ -221,7 +221,7 @@ void matrix_init_user(void){
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/input_club/ergodox_infinity/keymaps/not-quite-neo/keymap.c b/keyboards/input_club/ergodox_infinity/keymaps/not-quite-neo/keymap.c
index 8cf51842a2..ad512082fb 100644
--- a/keyboards/input_club/ergodox_infinity/keymaps/not-quite-neo/keymap.c
+++ b/keyboards/input_club/ergodox_infinity/keymaps/not-quite-neo/keymap.c
@@ -215,7 +215,7 @@ L06 -> <TBD>: UNSPECIFIED
/* LFN -> MO(FN): FUNCTION
* ,--------------------------------------------------. ,--------------------------------------------------.
- * | RESET | | | | | | | | | | | | | | RESET |
+ * | QK_BOOT | | | | | | | | | | | | | | QK_BOOT |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | | | | BACKSPC|
* |--------+ | | | | +--------|
@@ -234,7 +234,7 @@ L06 -> <TBD>: UNSPECIFIED
* `--------------------' `--------------------'
*/
[LFN] = LAYOUT_ergodox_wrapper(
- RESET, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______,
_______, L06_LEFT_01, _______,
_______, L06_LEFT_02,
_______, L06_LEFT_03, _______,
@@ -243,7 +243,7 @@ L06 -> <TBD>: UNSPECIFIED
_______,
_______, _______, _______,
//--
- _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, L06_RIGHT_01, KC_BSPACE,
L06_RIGHT_02, KC_INSERT,
_______, L06_RIGHT_03, KC_DELETE,
diff --git a/keyboards/input_club/ergodox_infinity/keymaps/rask/keymap.c b/keyboards/input_club/ergodox_infinity/keymaps/rask/keymap.c
index e31c1c5d6b..e8df522bee 100644
--- a/keyboards/input_club/ergodox_infinity/keymaps/rask/keymap.c
+++ b/keyboards/input_club/ergodox_infinity/keymaps/rask/keymap.c
@@ -137,7 +137,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RESET, KC_TRNS,
+ QK_BOOT, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
@@ -179,7 +179,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/input_club/ergodox_infinity/keymaps/rjhilgefort/keymap.c b/keyboards/input_club/ergodox_infinity/keymaps/rjhilgefort/keymap.c
index 31d218ebfb..c322222baf 100644
--- a/keyboards/input_club/ergodox_infinity/keymaps/rjhilgefort/keymap.c
+++ b/keyboards/input_club/ergodox_infinity/keymaps/rjhilgefort/keymap.c
@@ -309,7 +309,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/input_club/ergodox_infinity/keymaps/trulyergonomic/keymap.c b/keyboards/input_club/ergodox_infinity/keymaps/trulyergonomic/keymap.c
index 02f409ad9e..bbc24ea27f 100644
--- a/keyboards/input_club/ergodox_infinity/keymaps/trulyergonomic/keymap.c
+++ b/keyboards/input_club/ergodox_infinity/keymaps/trulyergonomic/keymap.c
@@ -137,7 +137,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/input_club/infinity60/config.h b/keyboards/input_club/infinity60/config.h
index 18fedcb219..a9901ce1e8 100644
--- a/keyboards/input_club/infinity60/config.h
+++ b/keyboards/input_club/infinity60/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1C11
-#define PRODUCT_ID 0xB04D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Input Club
-#define PRODUCT Infinity 60% (QMK)
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 9
diff --git a/keyboards/input_club/infinity60/info.json b/keyboards/input_club/infinity60/info.json
index 3fbd8b1b25..8ec3f7dc68 100644
--- a/keyboards/input_club/infinity60/info.json
+++ b/keyboards/input_club/infinity60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Infinity 60%",
+ "keyboard_name": "Infinity 60% (QMK)",
+ "manufacturer": "Input:Club",
"url": "https://input.club/devices/infinity-keyboard/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x1C11",
+ "pid": "0xB04D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
diff --git a/keyboards/input_club/infinity60/keymaps/jpetermans/keymap.c b/keyboards/input_club/infinity60/keymaps/jpetermans/keymap.c
index 3c2e0d4da8..a19be6664c 100644
--- a/keyboards/input_club/infinity60/keymaps/jpetermans/keymap.c
+++ b/keyboards/input_club/infinity60/keymaps/jpetermans/keymap.c
@@ -239,7 +239,7 @@ void matrix_scan_user(void) {
//Turn on layer indicator or page depending on mode
switch(led_mode_global) {
case MODE_FLASH: //flash preset page leds then single indicator
- page = biton32(layer_state) > max_pages ? 7 : biton32(layer_state);
+ page = get_highest_layer(layer_state) > max_pages ? 7 : get_highest_layer(layer_state);
msg=(page << 8) | DISPLAY_PAGE;
chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
chThdSleepMilliseconds(500);
@@ -254,7 +254,7 @@ void matrix_scan_user(void) {
break;
case MODE_PAGE: //display pre-defined led page
- page = biton32(layer_state) > max_pages ? 7 : biton32(layer_state);
+ page = get_highest_layer(layer_state) > max_pages ? 7 : get_highest_layer(layer_state);
msg=(page << 8) | DISPLAY_PAGE;
chMBPost(&led_mailbox, msg, TIME_IMMEDIATE);
break;
diff --git a/keyboards/input_club/infinity60/led/config.h b/keyboards/input_club/infinity60/led/config.h
index 5bd3b590b9..301003e8b9 100644
--- a/keyboards/input_club/infinity60/led/config.h
+++ b/keyboards/input_club/infinity60/led/config.h
@@ -20,4 +20,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Keyboard Matrix Assignments
#define MATRIX_ROW_PINS { D1, D2, D3, D4, D5, D6, D7 }
#define MATRIX_COL_PINS { C0, C1, C2, C3, C4, C5, C6, C7, D0 }
-#define UNUSED_PINS
diff --git a/keyboards/input_club/infinity60/rev1/config.h b/keyboards/input_club/infinity60/rev1/config.h
index d4ab34bccc..1207dffc78 100644
--- a/keyboards/input_club/infinity60/rev1/config.h
+++ b/keyboards/input_club/infinity60/rev1/config.h
@@ -20,6 +20,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Keyboard Matrix Assignments
#define MATRIX_ROW_PINS { D1, D2, D3, D4, D5, D6, D7 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, B16, B17, C4, C5, D0 }
-#define UNUSED_PINS
diff --git a/keyboards/input_club/k_type/config.h b/keyboards/input_club/k_type/config.h
index 8502ba7046..12cda14a3a 100644
--- a/keyboards/input_club/k_type/config.h
+++ b/keyboards/input_club/k_type/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1C11
-#define PRODUCT_ID 0xB04D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Input:Club
-#define PRODUCT K-Type (QMK)
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10
@@ -40,7 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D5, D6, D7, C1, C2, C3, C4, C5, C6, C7 }
#define MATRIX_COL_PINS { B2, B3, B18, B19, C0, C8, C9, D0, D1, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/input_club/k_type/info.json b/keyboards/input_club/k_type/info.json
index cf0c9253bd..6c9e1ebc16 100644
--- a/keyboards/input_club/k_type/info.json
+++ b/keyboards/input_club/k_type/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "K-Type",
+ "keyboard_name": "K-Type (QMK)",
+ "manufacturer": "Input:Club",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x1C11",
+ "pid": "0xB04D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/input_club/k_type/keymaps/andrew-fahmy/keymap.c b/keyboards/input_club/k_type/keymaps/andrew-fahmy/keymap.c
index 1611c25e41..96325514c9 100644
--- a/keyboards/input_club/k_type/keymaps/andrew-fahmy/keymap.c
+++ b/keyboards/input_club/k_type/keymaps/andrew-fahmy/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, _______, KC_LALT, KC_SPC, KC_RALT, MO(_L1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_L1] = LAYOUT_tkl_ansi(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, RGB_HUI, RGB_SAI, RGB_VAI,
_______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD,
diff --git a/keyboards/input_club/whitefox/config.h b/keyboards/input_club/whitefox/config.h
index 4ea7e7806f..2c2e8c6324 100644
--- a/keyboards/input_club/whitefox/config.h
+++ b/keyboards/input_club/whitefox/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1C11
-#define PRODUCT_ID 0xB04D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Input:Club
-#define PRODUCT WhiteFox (QMK)
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 9
@@ -40,7 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D4, D5, D6, D7, C1, C2 }
#define MATRIX_COL_PINS { B2, B3, B18, B19, C0, C8, C9, C10, C11 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/input_club/whitefox/info.json b/keyboards/input_club/whitefox/info.json
index a920d7c129..ed46ce1702 100644
--- a/keyboards/input_club/whitefox/info.json
+++ b/keyboards/input_club/whitefox/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "Whitefox",
+ "keyboard_name": "Whitefox (QMK)",
+ "manufacturer": "Input:Club",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x1C11",
+ "pid": "0xB04D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/input_club/whitefox/keymaps/dudeofawesome/keymap.c b/keyboards/input_club/whitefox/keymaps/dudeofawesome/keymap.c
index 2388201b7e..5c63d2e5e7 100644
--- a/keyboards/input_club/whitefox/keymaps/dudeofawesome/keymap.c
+++ b/keyboards/input_club/whitefox/keymaps/dudeofawesome/keymap.c
@@ -111,7 +111,7 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------------------------------------------------------'
*/
[_FUNC] = 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, _______,_______,_______,\
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,_______,_______,\
_______,KC_WH_D,KC_BTN2,KC_MS_U,KC_BTN1,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,\
_______,KC_WH_U,KC_MS_L,KC_MS_D,KC_MS_R,AG_NORM,AG_SWAP,QWERTY, WORKMAN,DVORAK, COLEMAK,_______,_______,_______, _______,\
_______,_______,KC_WH_L,KC_BTN3,KC_WH_R,_______,_______,_______,_______,_______,_______,_______,_______, KC_VOLU,_______,\
diff --git a/keyboards/input_club/whitefox/keymaps/kim-kim/keymap.c b/keyboards/input_club/whitefox/keymaps/kim-kim/keymap.c
index baaa136873..eab5ad85d7 100644
--- a/keyboards/input_club/whitefox/keymaps/kim-kim/keymap.c
+++ b/keyboards/input_club/whitefox/keymaps/kim-kim/keymap.c
@@ -46,7 +46,7 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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_MPRV,KC_MNXT,KC_VOLU,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ , BL_TOGG ,\
- _______,KC_MPLY,KC_MSTP,KC_VOLD,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET, BL_INC,\
+ _______,KC_MPLY,KC_MSTP,KC_VOLD,_______,_______,_______,_______,_______,_______,_______,_______,_______,QK_BOOT, BL_INC,\
_______,_______,_______,KC_MUTE,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,BL_DEC,\
_______,_______,_______, _______, _______,_______,_______, KC_HOME,_______,KC_END \
),
diff --git a/keyboards/input_club/whitefox/keymaps/mattrighetti/keymap.c b/keyboards/input_club/whitefox/keymaps/mattrighetti/keymap.c
index 67aed537dd..584719ed25 100644
--- a/keyboards/input_club/whitefox/keymaps/mattrighetti/keymap.c
+++ b/keyboards/input_club/whitefox/keymaps/mattrighetti/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[1] = LAYOUT_truefox(
_______, KC_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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, MO(2), KC_TRNS, _______, _______, _______
diff --git a/keyboards/io_mini1800/config.h b/keyboards/io_mini1800/config.h
index ea7efd8ff4..3190c1bb45 100644
--- a/keyboards/io_mini1800/config.h
+++ b/keyboards/io_mini1800/config.h
@@ -5,13 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER jpuerto96
-#define PRODUCT io_mini1800
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10
@@ -28,7 +21,6 @@
*/
#define MATRIX_ROW_PINS { D6, D7, B4, B5, D4, E6, B3, D2, D5, D3 }
#define MATRIX_COL_PINS { D1, D0, B7, B2, F0, F1, F7, F6, F4, F5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/io_mini1800/info.json b/keyboards/io_mini1800/info.json
index 13a5fb3262..0db951f44a 100644
--- a/keyboards/io_mini1800/info.json
+++ b/keyboards/io_mini1800/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "io_mini1800",
+ "manufacturer": "jpuerto96",
"url": "https://github.com/jpuerto96",
"maintainer": "jpuerto96 (s8erdude)",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_625u": {
"layout": [
diff --git a/keyboards/irene/config.h b/keyboards/irene/config.h
index 34093e33a1..9eb72dcc11 100644
--- a/keyboards/irene/config.h
+++ b/keyboards/irene/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1434
-#define PRODUCT_ID 0x3000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Andrei Collado
-#define PRODUCT Irene
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, F0, C7, B4, B7 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, C6, B6, B5, D7, D6, D4, D5, D3, D2, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/irene/info.json b/keyboards/irene/info.json
index 1219010915..1500f81ca2 100644
--- a/keyboards/irene/info.json
+++ b/keyboards/irene/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Irene",
+ "manufacturer": "Andrei Collado",
"url": "",
"maintainer": "Andrei Collado",
+ "usb": {
+ "vid": "0x1434",
+ "pid": "0x3000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/iriskeyboards/config.h b/keyboards/iriskeyboards/config.h
index 8757c407b2..e761d76895 100644
--- a/keyboards/iriskeyboards/config.h
+++ b/keyboards/iriskeyboards/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x494B // IK (IrisKeyboards)
-#define PRODUCT_ID 0x3031 // 01 (PCB no.01)
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SonOfAres
-#define PRODUCT IrisRev0
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 0 1 2 3 4 5 6 7 8 9 A B C D
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, D4, D6, D7, B4, B5, B6, C6, C7, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/iriskeyboards/info.json b/keyboards/iriskeyboards/info.json
index 480fb0428e..9091531538 100644
--- a/keyboards/iriskeyboards/info.json
+++ b/keyboards/iriskeyboards/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "iriskeyboards",
+ "keyboard_name": "Iris Rev0",
+ "manufacturer": "SonOfAres",
"url": "",
"maintainer": "SonOfAres",
+ "usb": {
+ "vid": "0x494B",
+ "pid": "0x3031",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/iron180/config.h b/keyboards/iron180/config.h
index cc5c81a50c..2f69d00937 100644
--- a/keyboards/iron180/config.h
+++ b/keyboards/iron180/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8384 //SR for Smith and Rune
-#define PRODUCT_ID 0x1180
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SmithRune
-#define PRODUCT IRON180
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/iron180/info.json b/keyboards/iron180/info.json
index 64ee4b4ee3..cd68970641 100644
--- a/keyboards/iron180/info.json
+++ b/keyboards/iron180/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Iron180",
+ "manufacturer": "SmithRune",
"url": "",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x8384",
+ "pid": "0x1180",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/iron180/readme.md b/keyboards/iron180/readme.md
index d89ca912ef..bfcce13f09 100644
--- a/keyboards/iron180/readme.md
+++ b/keyboards/iron180/readme.md
@@ -18,7 +18,7 @@ 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 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);
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (ESCAPE key in layer 1 of the default layout);
## Compile firmware and flash
diff --git a/keyboards/j80/config.h b/keyboards/j80/config.h
index 3aaeb26dad..dbf277bc4e 100644
--- a/keyboards/j80/config.h
+++ b/keyboards/j80/config.h
@@ -19,18 +19,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x422D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER JER
-#define PRODUCT J80
-
#define MATRIX_ROWS 7
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { B1, B2, B3, B5, B6, B7, B0 }
#define MATRIX_COL_PINS { A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, A0 }
-#define UNUSED_PINS { B4, C1, C0, D0, D1, D2, D3, D4, D5, D6, D7 }
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/j80/info.json b/keyboards/j80/info.json
index 6c14139bd7..bbb86f66f7 100644
--- a/keyboards/j80/info.json
+++ b/keyboards/j80/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "J80",
+ "manufacturer": "JER",
"url": "",
"maintainer": "oeywil",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x422D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/jacky_studio/bear_65/config.h b/keyboards/jacky_studio/bear_65/config.h
index e68ed4a928..92a6a5b60a 100644
--- a/keyboards/jacky_studio/bear_65/config.h
+++ b/keyboards/jacky_studio/bear_65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA13B // Jacky's vendor ID, arbitrarily selected by MudkipMao
-#define PRODUCT_ID 0x000A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Jacky
-#define PRODUCT Jacky Bear 65 Ergo
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/jacky_studio/bear_65/info.json b/keyboards/jacky_studio/bear_65/info.json
index 5f7f059696..151fd6fa5f 100644
--- a/keyboards/jacky_studio/bear_65/info.json
+++ b/keyboards/jacky_studio/bear_65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Bear 65",
+ "manufacturer": "Jacky",
"url": "https://qmk.fm/keyboards",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xA13B",
+ "pid": "0x000A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"Esc", "x":0.5, "y":0}, {"label":"~", "x":1.75, "y":0}, {"label":"!", "x":2.75, "y":0}, {"label":"@", "x":3.75, "y":0}, {"label":"#", "x":4.75, "y":0}, {"label":"$", "x":5.75, "y":0}, {"label":"%", "x":6.75, "y":0}, {"label":"^", "x":7.75, "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":"~", "x":18.25, "y":0}, {"label":"Del", "x":19.75, "y":0}, {"label":"PgUp", "x":0.25, "y":1}, {"label":"Tab", "x":1.75, "y":1, "w":1.5}, {"label":"Q", "x":3.25, "y":1}, {"label":"W", "x":4.25, "y":1}, {"label":"E", "x":5.25, "y":1}, {"label":"R", "x":6.25, "y":1}, {"label":"T", "x":7.25, "y":1}, {"label":"Y", "x":10.75, "y":1}, {"label":"U", "x":11.75, "y":1}, {"label":"I", "x":12.75, "y":1}, {"label":"O", "x":13.75, "y":1}, {"label":"P", "x":14.75, "y":1}, {"label":"{", "x":15.75, "y":1}, {"label":"}", "x":16.75, "y":1}, {"label":"Backspace", "x":17.75, "y":1, "w":1.5}, {"label":"PgDn", "x":0, "y":2}, {"label":"Caps Lock", "x":1.75, "y":2, "w":1.75}, {"label":"A", "x":3.5, "y":2}, {"label":"S", "x":4.5, "y":2}, {"label":"D", "x":5.5, "y":2}, {"label":"F", "x":6.5, "y":2}, {"label":"G", "x":7.5, "y":2}, {"label":"H", "x":11, "y":2}, {"label":"J", "x":12, "y":2}, {"label":"K", "x":13, "y":2}, {"label":"L", "x":14, "y":2}, {"label":":", "x":15, "y":2}, {"label":"\"", "x":16, "y":2}, {"label":"Enter", "x":17, "y":2, "w":2.25}, {"label":"Shift", "x":1.75, "y":3, "w":2.25}, {"label":"Z", "x":4, "y":3}, {"label":"X", "x":5, "y":3}, {"label":"C", "x":6, "y":3}, {"label":"V", "x":7, "y":3}, {"label":"B", "x":8, "y":3}, {"label":"B", "x":10.5, "y":3}, {"label":"N", "x":11.5, "y":3}, {"label":"M", "x":12.5, "y":3}, {"label":"<", "x":13.5, "y":3}, {"label":">", "x":14.5, "y":3}, {"label":"?", "x":15.5, "y":3}, {"label":"Shift", "x":16.5, "y":3, "w":1.75}, {"label":"Up", "x":18.25, "y":3}, {"label":"Ctrl", "x":1.75, "y":4, "w":1.5}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":2.25}, {"label":"Win", "x":8.25, "y":4}, {"x":10.5, "y":4, "w":2.75}, {"label":"Alt", "x":13.25, "y":4, "w":1.5}, {"label":"Left", "x":17.25, "y":4}, {"label":"Down", "x":18.25, "y":4}, {"label":"Right", "x":19.25, "y":4}]
diff --git a/keyboards/jacky_studio/bear_65/keymaps/stanrc85/keymap.c b/keyboards/jacky_studio/bear_65/keymaps/stanrc85/keymap.c
index 7ee14dda8b..8f0ce714ec 100644
--- a/keyboards/jacky_studio/bear_65/keymaps/stanrc85/keymap.c
+++ b/keyboards/jacky_studio/bear_65/keymaps/stanrc85/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN2_60] = LAYOUT_full_bs(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE,
_______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, RGB_MOD, RGB_VAI,
TG(_DEFAULT), _______, _______, _______, _______, _______, RGB_HUD, RGB_VAD, RGB_HUI
diff --git a/keyboards/jacky_studio/piggy60/hotswap/info.json b/keyboards/jacky_studio/piggy60/hotswap/info.json
new file mode 100644
index 0000000000..8b10920700
--- /dev/null
+++ b/keyboards/jacky_studio/piggy60/hotswap/info.json
@@ -0,0 +1,4 @@
+{
+ "diode_direction": "ROW2COL",
+ "community_layouts": ["60_hhkb", "60_tsangan_hhkb"]
+}
diff --git a/keyboards/jacky_studio/piggy60/hotswap/rules.mk b/keyboards/jacky_studio/piggy60/hotswap/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/jacky_studio/piggy60/hotswap/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/jacky_studio/piggy60/info.json b/keyboards/jacky_studio/piggy60/info.json
new file mode 100644
index 0000000000..2805209f47
--- /dev/null
+++ b/keyboards/jacky_studio/piggy60/info.json
@@ -0,0 +1,250 @@
+{
+ "manufacturer": "Jacky",
+ "keyboard_name": "Piggy60",
+ "maintainer": "qmk",
+ "bootloader": "atmel-dfu",
+ "build": {
+ "lto": true
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "caps_word": true,
+ "debug": false,
+ "extrakey": true,
+ "mousekey": true,
+ "rgblight": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["F0", "F1", "E6", "C7", "C6", "B6", "D4", "B1", "F7", "B5", "B4", "D7", "D6", "B3", "B2"],
+ "rows": ["D0", "D1", "D2", "D3", "D5"]
+ },
+ "processor": "atmega32u4",
+ "url": "https://www.notion.so/Piggy-60-Everything-You-Should-Know-7308d056551d4edabdbcc95748e9dabc",
+ "usb": {
+ "device_version": "1.0.0",
+ "vid": "0xA13B",
+ "pid": "0x1001"
+ },
+ "indicators": {
+ "caps_lock": "F4",
+ "on_state": 0
+ },
+ "rgblight": {
+ "led_count": 14,
+ "pin": "E2",
+ "animations": {
+ "all": true
+ },
+ "sleep": true,
+ "max_brightness": 255
+ },
+ "tapping": {
+ "tap_keycode_delay": 10,
+ "tap_capslock_delay": 10,
+ "term": 170
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label": "1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label": "2@", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label": "3#", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label": "4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label": "5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label": "6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label": "7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label": "8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label": "9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label": "0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label": "-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label": "=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0 },
+ { "label": "Del", "matrix": [0, 14], "x": 14, "y": 0 },
+ { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
+ { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
+ { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
+ { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
+ { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
+ { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
+ { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
+ { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
+ { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
+ { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
+ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
+ { "label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1 },
+ { "label": "]}", "matrix": [1, 12], "x": 12.5, "y": 1 },
+ { "label": "\\|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
+ { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
+ { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
+ { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
+ { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
+ { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
+ { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
+ { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
+ { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
+ { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
+ { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
+ { "label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2 },
+ { "label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
+ { "label": "#~", "matrix": [2, 12], "x": 12.75, "y": 2 },
+ { "label": "Enter", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 2 },
+ { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
+ { "label": "|\\", "matrix": [3, 1], "x": 1.25, "y": 3 },
+ { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label": ",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label": ".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label": "/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 },
+ { "label": "Fn", "matrix": [3, 14], "x": 14, "y": 3 },
+ { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
+ { "label": "GUI", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
+ { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 },
+ { "label": "Space", "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4 },
+ { "label": "Menu", "matrix": [4, 9], "w": 1.25, "x": 10, "y": 4 },
+ { "label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 11.25, "y": 4 },
+ { "label": "GUI", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 },
+ { "label": "Ctrl", "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 }
+ ]
+ },
+ "LAYOUT_60_hhkb": {
+ "layout": [
+ { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label": "1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label": "2@", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label": "3#", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label": "4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label": "5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label": "6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label": "7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label": "8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label": "9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label": "0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label": "-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label": "=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0 },
+ { "label": "Del", "matrix": [0, 14], "x": 14, "y": 0 },
+ { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
+ { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
+ { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
+ { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
+ { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
+ { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
+ { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
+ { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
+ { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
+ { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
+ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
+ { "label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1 },
+ { "label": "]}", "matrix": [1, 12], "x": 12.5, "y": 1 },
+ { "label": "\\|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
+ { "label": "Control", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
+ { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
+ { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
+ { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
+ { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
+ { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
+ { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
+ { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
+ { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
+ { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
+ { "label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2 },
+ { "label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
+ { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
+ { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
+ { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label": ",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label": ".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label": "/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 },
+ { "label": "Fn", "matrix": [3, 14], "x": 14, "y": 3 },
+ { "label": "Alt", "matrix": [4, 1], "x": 1.5, "y": 4 },
+ { "label": "GUI", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 },
+ { "label": "Space", "matrix": [4, 7], "w": 7, "x": 4, "y": 4 },
+ { "label": "GUI", "matrix": [4, 10], "w": 1.5, "x": 11, "y": 4 },
+ { "label": "Alt", "matrix": [4, 12], "x": 12.5, "y": 4 }
+ ]
+ },
+ "LAYOUT_60_tsangan_hhkb": {
+ "layout": [
+ { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label": "1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label": "2@", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label": "3#", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label": "4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label": "5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label": "6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label": "7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label": "8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label": "9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label": "0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label": "-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label": "=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0 },
+ { "label": "Del", "matrix": [0, 14], "x": 14, "y": 0 },
+ { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
+ { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
+ { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
+ { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
+ { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
+ { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
+ { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
+ { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
+ { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
+ { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
+ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
+ { "label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1 },
+ { "label": "]}", "matrix": [1, 12], "x": 12.5, "y": 1 },
+ { "label": "\\|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
+ { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
+ { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
+ { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
+ { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
+ { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
+ { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
+ { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
+ { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
+ { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
+ { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
+ { "label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2 },
+ { "label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
+ { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
+ { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
+ { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label": ",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label": ".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label": "/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 },
+ { "label": "Fn", "matrix": [3, 14], "x": 14, "y": 3 },
+ { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
+ { "label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4 },
+ { "label": "Alt", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 },
+ { "label": "Space", "matrix": [4, 7], "w": 7, "x": 4, "y": 4 },
+ { "label": "Alt", "matrix": [4, 10], "w": 1.5, "x": 11, "y": 4 },
+ { "label": "GUI", "matrix": [4, 12], "x": 12.5, "y": 4 },
+ { "label": "Ctrl", "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/jacky_studio/piggy60/keymaps/default/keymap.c b/keyboards/jacky_studio/piggy60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d2458a1422
--- /dev/null
+++ b/keyboards/jacky_studio/piggy60/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+// Copyright 2022 The QMK Community (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+/*
+ * Check the list of supported LAYOUTS (qmk info jacky_studio/piggy60 -m) to make keymap customization easier.
+ * ISO users may wish to start customization from LAYOUT_60_iso_tsangan_hhkb, for instance.
+ *
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ \ │ ` │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ Del │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│LT1│
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤
+ * │Ctrl │GUI│ Alt │ │ Alt │GUI│ Ctrl│
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ */
+ [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_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,
+ 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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, LT(1,KC_MUTE),
+ 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_INS, KC_PSCR,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_PGUP, KC_HOME, KC_TRNS, KC_VOLU, KC_BRIU, KC_TRNS, KC_WH_U, KC_TRNS, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_TRNS, KC_VOLD, KC_BRID, KC_TRNS, KC_WH_D, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, 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
+ )
+};
diff --git a/keyboards/jacky_studio/piggy60/keymaps/via/keymap.json b/keyboards/jacky_studio/piggy60/keymaps/via/keymap.json
new file mode 100644
index 0000000000..b166c6771f
--- /dev/null
+++ b/keyboards/jacky_studio/piggy60/keymaps/via/keymap.json
@@ -0,0 +1,38 @@
+{
+ "keyboard": "jacky_studio/piggy60",
+ "keymap": "via",
+ "layout": "LAYOUT_all",
+ "layers": [
+ [
+ "KC_ESC", "KC_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",
+ "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_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", "LT(1,KC_MUTE)",
+ "KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "LT(1,KC_APP)", "KC_RALT", "KC_RGUI", "KC_RCTL"
+ ],
+ [
+ "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_DEL",
+ "KC_TRNS", "KC_TRNS", "KC_UP", "KC_TRNS", "KC_PGUP", "KC_HOME", "KC_TRNS", "KC_VOLU", "KC_BRIU", "KC_TRNS", "KC_WH_U", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_PGDN", "KC_END", "KC_TRNS", "KC_VOLD", "KC_BRID", "KC_TRNS", "KC_WH_D", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "RGB_TOG", "KC_TRNS", "RGB_MOD", "RGB_HUI", "RGB_SAI", "RGB_VAI", "RGB_SPI", "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_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"
+ ],
+ [
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
+ "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"
+ ]
+ ],
+ "author": "qmk",
+ "notes": "",
+ "version": 1
+}
diff --git a/keyboards/jacky_studio/piggy60/keymaps/via/rules.mk b/keyboards/jacky_studio/piggy60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..74edb2bf0d
--- /dev/null
+++ b/keyboards/jacky_studio/piggy60/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE=yes
diff --git a/keyboards/jacky_studio/piggy60/readme.md b/keyboards/jacky_studio/piggy60/readme.md
new file mode 100644
index 0000000000..d546c63bf8
--- /dev/null
+++ b/keyboards/jacky_studio/piggy60/readme.md
@@ -0,0 +1,27 @@
+# Piggy60
+
+![piggy60](https://i.imgur.com/QXuKDual.jpg)
+
+A gasket-mounted 60% in the style of the S7 Elephant.
+
+* Keyboard Maintainer: [The QMK Community](https://github.com/qmk)
+* Hardware Supported: Piggy60
+* Hardware Availability: Group Buy took place between 2021-05-22 1600 UTC and 2021-05-25 1600 UTC on [https://jackylab.com/](https://jackylab.com/).
+
+Make example for this keyboard (after setting up your build environment):
+
+ make jacky_studio/piggy60:default
+
+Flashing example for this keyboard:
+
+ make jacky_studio/piggy60: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 top left key and plug in the keyboard. This will also clear EEPROM, so it is a good first step if the keyboard is misbehaving.
+* **Physical reset**: Short the set of vertical holes on the third row, to the right of Caps Lock. These can be reached with tweezers after the board has been assembled.
+* **Keycode in layout**: There is no key mapped to `QK_BOOT` in the pre-created keymaps, but you may assign this key in any keymaps you create.
diff --git a/keyboards/jacky_studio/piggy60/rules.mk b/keyboards/jacky_studio/piggy60/rules.mk
new file mode 100644
index 0000000000..530e6598df
--- /dev/null
+++ b/keyboards/jacky_studio/piggy60/rules.mk
@@ -0,0 +1 @@
+DEFAULT_FOLDER = jacky_studio/piggy60/solder
diff --git a/keyboards/jacky_studio/piggy60/solder/info.json b/keyboards/jacky_studio/piggy60/solder/info.json
new file mode 100644
index 0000000000..6a4cacb0fc
--- /dev/null
+++ b/keyboards/jacky_studio/piggy60/solder/info.json
@@ -0,0 +1,477 @@
+{
+ "diode_direction": "COL2ROW",
+ "community_layouts": [
+ "60_ansi",
+ "60_ansi_split_bs_rshift",
+ "60_ansi_tsangan",
+ "60_hhkb",
+ "60_iso",
+ "60_iso_split_bs_rshift",
+ "60_iso_tsangan",
+ "60_tsangan_hhkb"
+ ],
+ "layouts": {
+ "LAYOUT_60_ansi": {
+ "layout": [
+ { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label": "1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label": "2@", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label": "3#", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label": "4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label": "5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label": "6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label": "7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label": "8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label": "9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label": "0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label": "-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label": "=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 },
+ { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
+ { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
+ { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
+ { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
+ { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
+ { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
+ { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
+ { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
+ { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
+ { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
+ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
+ { "label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1 },
+ { "label": "]}", "matrix": [1, 12], "x": 12.5, "y": 1 },
+ { "label": "\\|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
+ { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
+ { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
+ { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
+ { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
+ { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
+ { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
+ { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
+ { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
+ { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
+ { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
+ { "label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2 },
+ { "label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
+ { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
+ { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
+ { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label": ",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label": ".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label": "/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
+ { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
+ { "label": "GUI", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
+ { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 },
+ { "label": "Space", "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4 },
+ { "label": "Menu", "matrix": [4, 9], "w": 1.25, "x": 10, "y": 4 },
+ { "label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 11.25, "y": 4 },
+ { "label": "GUI", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 },
+ { "label": "Ctrl", "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 }
+ ]
+ },
+ "LAYOUT_60_ansi_split_bs_rshift": {
+ "layout": [
+ { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label": "1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label": "2@", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label": "3#", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label": "4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label": "5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label": "6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label": "7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label": "8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label": "9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label": "0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label": "-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label": "=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0 },
+ { "label": "Del", "matrix": [0, 14], "x": 14, "y": 0 },
+ { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
+ { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
+ { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
+ { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
+ { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
+ { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
+ { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
+ { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
+ { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
+ { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
+ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
+ { "label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1 },
+ { "label": "]}", "matrix": [1, 12], "x": 12.5, "y": 1 },
+ { "label": "\\|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
+ { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
+ { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
+ { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
+ { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
+ { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
+ { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
+ { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
+ { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
+ { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
+ { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
+ { "label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2 },
+ { "label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
+ { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
+ { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
+ { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label": ",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label": ".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label": "/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 },
+ { "label": "Fn", "matrix": [3, 14], "x": 14, "y": 3 },
+ { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
+ { "label": "GUI", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
+ { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 },
+ { "label": "Space", "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4 },
+ { "label": "Menu", "matrix": [4, 9], "w": 1.25, "x": 10, "y": 4 },
+ { "label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 11.25, "y": 4 },
+ { "label": "GUI", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 },
+ { "label": "Ctrl", "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 }
+ ]
+ },
+ "LAYOUT_60_ansi_tsangan": {
+ "layout": [
+ { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label": "1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label": "2@", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label": "3#", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label": "4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label": "5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label": "6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label": "7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label": "8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label": "9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label": "0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label": "-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label": "=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 },
+ { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
+ { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
+ { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
+ { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
+ { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
+ { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
+ { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
+ { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
+ { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
+ { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
+ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
+ { "label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1 },
+ { "label": "]}", "matrix": [1, 12], "x": 12.5, "y": 1 },
+ { "label": "\\|", "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
+ { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
+ { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
+ { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
+ { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
+ { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
+ { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
+ { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
+ { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
+ { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
+ { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
+ { "label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2 },
+ { "label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
+ { "label": "Enter", "matrix": [2, 13], "w": 2.25, "x": 12.75, "y": 2 },
+ { "label": "Shift", "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
+ { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label": ",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label": ".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label": "/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
+ { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
+ { "label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4 },
+ { "label": "Alt", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 },
+ { "label": "Space", "matrix": [4, 7], "w": 7, "x": 4, "y": 4 },
+ { "label": "Alt", "matrix": [4, 10], "w": 1.5, "x": 11, "y": 4 },
+ { "label": "GUI", "matrix": [4, 12], "x": 12.5, "y": 4 },
+ { "label": "Ctrl", "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 }
+ ]
+ },
+ "LAYOUT_60_iso": {
+ "layout": [
+ { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label": "1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label": "2@", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label": "3#", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label": "4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label": "5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label": "6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label": "7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label": "8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label": "9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label": "0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label": "-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label": "=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 },
+ { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
+ { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
+ { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
+ { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
+ { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
+ { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
+ { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
+ { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
+ { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
+ { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
+ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
+ { "label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1 },
+ { "label": "]}", "matrix": [1, 12], "x": 12.5, "y": 1 },
+ { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
+ { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
+ { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
+ { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
+ { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
+ { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
+ { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
+ { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
+ { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
+ { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
+ { "label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2 },
+ { "label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
+ { "label": "#~", "matrix": [2, 12], "x": 12.75, "y": 2 },
+ { "label": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 },
+ { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
+ { "label": "\\|", "matrix": [3, 1], "x": 1.25, "y": 3 },
+ { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label": ",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label": ".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label": "/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
+ { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
+ { "label": "GUI", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
+ { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 },
+ { "label": "Space", "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4 },
+ { "label": "Menu", "matrix": [4, 9], "w": 1.25, "x": 10, "y": 4 },
+ { "label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 11.25, "y": 4 },
+ { "label": "GUI", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 },
+ { "label": "Ctrl", "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 }
+ ]
+ },
+ "LAYOUT_60_iso_split_bs_rshift": {
+ "layout": [
+ { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label": "1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label": "2@", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label": "3#", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label": "4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label": "5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label": "6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label": "7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label": "8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label": "9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label": "0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label": "-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label": "=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0 },
+ { "label": "Del", "matrix": [0, 14], "x": 14, "y": 0 },
+ { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
+ { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
+ { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
+ { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
+ { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
+ { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
+ { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
+ { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
+ { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
+ { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
+ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
+ { "label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1 },
+ { "label": "]}", "matrix": [1, 12], "x": 12.5, "y": 1 },
+ { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
+ { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
+ { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
+ { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
+ { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
+ { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
+ { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
+ { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
+ { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
+ { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
+ { "label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2 },
+ { "label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
+ { "label": "#~", "matrix": [2, 12], "x": 12.75, "y": 2 },
+ { "label": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 },
+ { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
+ { "label": "\\|", "matrix": [3, 1], "x": 1.25, "y": 3 },
+ { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label": ",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label": ".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label": "/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 },
+ { "label": "Fn", "matrix": [3, 14], "x": 14, "y": 3 },
+ { "label": "Ctrl", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
+ { "label": "GUI", "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
+ { "label": "Alt", "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 },
+ { "label": "Space", "matrix": [4, 7], "w": 6.25, "x": 3.75, "y": 4 },
+ { "label": "Menu", "matrix": [4, 9], "w": 1.25, "x": 10, "y": 4 },
+ { "label": "Alt", "matrix": [4, 10], "w": 1.25, "x": 11.25, "y": 4 },
+ { "label": "GUI", "matrix": [4, 12], "w": 1.25, "x": 12.5, "y": 4 },
+ { "label": "Ctrl", "matrix": [4, 13], "w": 1.25, "x": 13.75, "y": 4 }
+ ]
+ },
+ "LAYOUT_60_iso_tsangan": {
+ "layout": [
+ { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label": "1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label": "2@", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label": "3#", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label": "4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label": "5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label": "6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label": "7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label": "8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label": "9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label": "0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label": "-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label": "=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label": "Backspace", "matrix": [0, 14], "w": 2, "x": 13, "y": 0 },
+ { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
+ { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
+ { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
+ { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
+ { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
+ { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
+ { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
+ { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
+ { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
+ { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
+ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
+ { "label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1 },
+ { "label": "]}", "matrix": [1, 12], "x": 12.5, "y": 1 },
+ { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
+ { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
+ { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
+ { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
+ { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
+ { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
+ { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
+ { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
+ { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
+ { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
+ { "label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2 },
+ { "label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
+ { "label": "#~", "matrix": [2, 12], "x": 12.75, "y": 2 },
+ { "label": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 },
+ { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
+ { "label": "\\|", "matrix": [3, 1], "x": 1.25, "y": 3 },
+ { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label": ",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label": ".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label": "/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label": "Shift", "matrix": [3, 13], "w": 2.75, "x": 12.25, "y": 3 },
+ { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
+ { "label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4 },
+ { "label": "Alt", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 },
+ { "label": "Space", "matrix": [4, 7], "w": 7, "x": 4, "y": 4 },
+ { "label": "Alt", "matrix": [4, 10], "w": 1.5, "x": 11, "y": 4 },
+ { "label": "GUI", "matrix": [4, 12], "x": 12.5, "y": 4 },
+ { "label": "Ctrl", "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 }
+ ]
+ },
+ "LAYOUT_60_iso_tsangan_hhkb": {
+ "layout": [
+ { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
+ { "label": "1!", "matrix": [0, 1], "x": 1, "y": 0 },
+ { "label": "2@", "matrix": [0, 2], "x": 2, "y": 0 },
+ { "label": "3#", "matrix": [0, 3], "x": 3, "y": 0 },
+ { "label": "4$", "matrix": [0, 4], "x": 4, "y": 0 },
+ { "label": "5%", "matrix": [0, 5], "x": 5, "y": 0 },
+ { "label": "6^", "matrix": [0, 6], "x": 6, "y": 0 },
+ { "label": "7&", "matrix": [0, 7], "x": 7, "y": 0 },
+ { "label": "8*", "matrix": [0, 8], "x": 8, "y": 0 },
+ { "label": "9(", "matrix": [0, 9], "x": 9, "y": 0 },
+ { "label": "0)", "matrix": [0, 10], "x": 10, "y": 0 },
+ { "label": "-_", "matrix": [0, 11], "x": 11, "y": 0 },
+ { "label": "=+", "matrix": [0, 12], "x": 12, "y": 0 },
+ { "label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0 },
+ { "label": "Del", "matrix": [0, 14], "x": 14, "y": 0 },
+ { "label": "Tab", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
+ { "label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1 },
+ { "label": "W", "matrix": [1, 2], "x": 2.5, "y": 1 },
+ { "label": "E", "matrix": [1, 3], "x": 3.5, "y": 1 },
+ { "label": "R", "matrix": [1, 4], "x": 4.5, "y": 1 },
+ { "label": "T", "matrix": [1, 5], "x": 5.5, "y": 1 },
+ { "label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1 },
+ { "label": "U", "matrix": [1, 7], "x": 7.5, "y": 1 },
+ { "label": "I", "matrix": [1, 8], "x": 8.5, "y": 1 },
+ { "label": "O", "matrix": [1, 9], "x": 9.5, "y": 1 },
+ { "label": "P", "matrix": [1, 10], "x": 10.5, "y": 1 },
+ { "label": "[{", "matrix": [1, 11], "x": 11.5, "y": 1 },
+ { "label": "]}", "matrix": [1, 12], "x": 12.5, "y": 1 },
+ { "label": "Caps Lock", "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
+ { "label": "A", "matrix": [2, 1], "x": 1.75, "y": 2 },
+ { "label": "S", "matrix": [2, 2], "x": 2.75, "y": 2 },
+ { "label": "D", "matrix": [2, 3], "x": 3.75, "y": 2 },
+ { "label": "F", "matrix": [2, 4], "x": 4.75, "y": 2 },
+ { "label": "G", "matrix": [2, 5], "x": 5.75, "y": 2 },
+ { "label": "H", "matrix": [2, 6], "x": 6.75, "y": 2 },
+ { "label": "J", "matrix": [2, 7], "x": 7.75, "y": 2 },
+ { "label": "K", "matrix": [2, 8], "x": 8.75, "y": 2 },
+ { "label": "L", "matrix": [2, 9], "x": 9.75, "y": 2 },
+ { "label": ";:", "matrix": [2, 10], "x": 10.75, "y": 2 },
+ { "label": "'\"", "matrix": [2, 11], "x": 11.75, "y": 2 },
+ { "label": "#~", "matrix": [2, 12], "x": 12.75, "y": 2 },
+ { "label": "Enter", "matrix": [2, 13], "w": 1.25, "h": 2, "x": 13.75, "y": 1 },
+ { "label": "Shift", "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
+ { "label": "\\|", "matrix": [3, 1], "x": 1.25, "y": 3 },
+ { "label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3 },
+ { "label": "X", "matrix": [3, 3], "x": 3.25, "y": 3 },
+ { "label": "C", "matrix": [3, 4], "x": 4.25, "y": 3 },
+ { "label": "V", "matrix": [3, 5], "x": 5.25, "y": 3 },
+ { "label": "B", "matrix": [3, 6], "x": 6.25, "y": 3 },
+ { "label": "N", "matrix": [3, 7], "x": 7.25, "y": 3 },
+ { "label": "M", "matrix": [3, 8], "x": 8.25, "y": 3 },
+ { "label": ",<", "matrix": [3, 9], "x": 9.25, "y": 3 },
+ { "label": ".>", "matrix": [3, 10], "x": 10.25, "y": 3 },
+ { "label": "/?", "matrix": [3, 11], "x": 11.25, "y": 3 },
+ { "label": "Shift", "matrix": [3, 13], "w": 1.75, "x": 12.25, "y": 3 },
+ { "label": "Fn", "matrix": [3, 14], "x": 14, "y": 3 },
+ { "label": "Ctrl", "matrix": [4, 0], "w": 1.5, "x": 0, "y": 4 },
+ { "label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4 },
+ { "label": "Alt", "matrix": [4, 2], "w": 1.5, "x": 2.5, "y": 4 },
+ { "label": "Space", "matrix": [4, 7], "w": 7, "x": 4, "y": 4 },
+ { "label": "Alt", "matrix": [4, 10], "w": 1.5, "x": 11, "y": 4 },
+ { "label": "GUI", "matrix": [4, 12], "x": 12.5, "y": 4 },
+ { "label": "Ctrl", "matrix": [4, 13], "w": 1.5, "x": 13.5, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/jacky_studio/piggy60/solder/rules.mk b/keyboards/jacky_studio/piggy60/solder/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/jacky_studio/piggy60/solder/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/jacky_studio/s7_elephant/readme.md b/keyboards/jacky_studio/s7_elephant/readme.md
index 1cfeefb209..7e441ac8ea 100644
--- a/keyboards/jacky_studio/s7_elephant/readme.md
+++ b/keyboards/jacky_studio/s7_elephant/readme.md
@@ -15,6 +15,6 @@ Make example for this keyboard (after setting up your build environment):
make jacky_studio/s7_elephant/rev1:default # 2018 run
make jacky_studio/s7_elephant/rev2:default # 2019 run
-To enter the bootloader, either short the pins on the PCB or the RESET button on the FN layer.
+To enter the bootloader, either short the pins on the PCB or the `QK_BOOT` key on the FN 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).
diff --git a/keyboards/jacky_studio/s7_elephant/rev1/config.h b/keyboards/jacky_studio/s7_elephant/rev1/config.h
index 76c4c7d406..b4de22c83e 100644
--- a/keyboards/jacky_studio/s7_elephant/rev1/config.h
+++ b/keyboards/jacky_studio/s7_elephant/rev1/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA13B // Hexidecimal A13B will be Jacky's vendor ID
-#define PRODUCT_ID 0x0007
-#define DEVICE_VER 0x0001
-#define MANUFACTURER jacky
-#define PRODUCT S7 Elephant
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 }
#define MATRIX_COL_PINS { B6, D0, D1, D2, D3, D4, D5, D6, D7, C6, C7, F4, F5, F6, F7, F1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/jacky_studio/s7_elephant/rev1/info.json b/keyboards/jacky_studio/s7_elephant/rev1/info.json
index b47f326456..b1621eecd7 100644
--- a/keyboards/jacky_studio/s7_elephant/rev1/info.json
+++ b/keyboards/jacky_studio/s7_elephant/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "S7 Elephant",
+ "keyboard_name": "S7 Elephant Rev1",
+ "manufacturer": "Jacky",
"url": "https://geekhack.org/index.php?topic=96434.0",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xA13B",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/jacky_studio/s7_elephant/rev1/readme.md b/keyboards/jacky_studio/s7_elephant/rev1/readme.md
index 702be4c3a7..8308f60f62 100644
--- a/keyboards/jacky_studio/s7_elephant/rev1/readme.md
+++ b/keyboards/jacky_studio/s7_elephant/rev1/readme.md
@@ -12,6 +12,6 @@ Make example for this keyboard (after setting up your build environment):
make s7_elephant/rev1:default
-To enter the bootloader, either short the pins on the PCB or the RESET button on the FN layer.
+To enter the bootloader, either short the pins on the PCB or the `QK_BOOT` key on the FN 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).
diff --git a/keyboards/jacky_studio/s7_elephant/rev2/config.h b/keyboards/jacky_studio/s7_elephant/rev2/config.h
index 246479dd37..41a8c77f9d 100644
--- a/keyboards/jacky_studio/s7_elephant/rev2/config.h
+++ b/keyboards/jacky_studio/s7_elephant/rev2/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA13B // Hexidecimal A13B will be Jacky's vendor ID
-#define PRODUCT_ID 0x0008 // 8 for S7++
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Jacky
-#define PRODUCT Jacky S7 Elephant Rev 2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/jacky_studio/s7_elephant/rev2/info.json b/keyboards/jacky_studio/s7_elephant/rev2/info.json
index e3be4afe38..c9f45edca9 100644
--- a/keyboards/jacky_studio/s7_elephant/rev2/info.json
+++ b/keyboards/jacky_studio/s7_elephant/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "S7 Elephant Rev2",
+ "manufacturer": "Jacky",
"url": "https://geekhack.org/index.php?topic=103148.0",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xA13B",
+ "pid": "0x0008",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/jadookb/jkb2/config.h b/keyboards/jadookb/jkb2/config.h
index ac5808f236..ec9deec35c 100644
--- a/keyboards/jadookb/jkb2/config.h
+++ b/keyboards/jadookb/jkb2/config.h
@@ -16,17 +16,10 @@
#pragma once
#include "config_common.h"
-#define VENDOR_ID 0x4A4B // "JK"
-#define PRODUCT_ID 0x3225 // "2%"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER JadooKB
-#define PRODUCT JKB2
-
#define MATRIX_ROWS 1
#define MATRIX_COLS 2
#define MATRIX_ROW_PINS { B1 }
#define MATRIX_COL_PINS { B3 ,B2}
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/jadookb/jkb2/info.json b/keyboards/jadookb/jkb2/info.json
index ed818d6412..ef27783c7a 100644
--- a/keyboards/jadookb/jkb2/info.json
+++ b/keyboards/jadookb/jkb2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "jkb2",
+ "keyboard_name": "JKB2",
+ "manufacturer": "JadooKB",
"url": "https://jadookb.com/",
"maintainer": "Wizard-GG",
+ "usb": {
+ "vid": "0x4A4B",
+ "pid": "0x3225",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [ {"label":"z","x": 0, "y": 0 }, {"label":"x","x": 1, "y": 0 }]
diff --git a/keyboards/jadookb/jkb2/keymaps/via/config.h b/keyboards/jadookb/jkb2/keymaps/via/config.h
deleted file mode 100644
index 31022ca535..0000000000
--- a/keyboards/jadookb/jkb2/keymaps/via/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-
- /* Copyright 2021 Wizard-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
-
-#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/jadookb/jkb65/config.h b/keyboards/jadookb/jkb65/config.h
index dae3cea49a..a3fd5a0fa7 100644
--- a/keyboards/jadookb/jkb65/config.h
+++ b/keyboards/jadookb/jkb65/config.h
@@ -18,20 +18,9 @@
#include "config_common.h"
-#define VENDOR_ID 0x4A4B
-#define PRODUCT_ID 0xEF6A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER JadooKB
-#define PRODUCT JKB65 RGB
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
-#define MATRIX_ROW_PINS { E6, B7, F7, F4, F5 }
-#define MATRIX_COL_PINS { F6,B1,F1,C7,C6,B6,B5,B4,D7,B3,D4,D5,D3,D2,D1,D0 }
-
-#define UNUSED_PINS
-
#define DIODE_DIRECTION COL2ROW
#define RGB_DI_PIN F0
diff --git a/keyboards/jadookb/jkb65/info.json b/keyboards/jadookb/jkb65/info.json
index 8bb0ab7524..c6f5813fee 100644
--- a/keyboards/jadookb/jkb65/info.json
+++ b/keyboards/jadookb/jkb65/info.json
@@ -1,9 +1,17 @@
{
- "keyboard_name": "jkb65",
+ "manufacturer": "JadooKB",
"url": "https://jadookb.com/",
"maintainer": "Wizard-GG",
+ "usb": {
+ "vid": "0x4A4B",
+ "pid": "0xEF6A"
+ },
+ "layout_aliases": {
+ "LAYOUT_67_ansi": "LAYOUT_65_ansi_blocker"
+ },
+ "community_layouts": ["65_ansi_blocker"],
"layouts": {
- "LAYOUT_67_ansi": {
+ "LAYOUT_65_ansi_blocker": {
"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":"~", "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}, {"x":3.75, "y":4, "w":6.25}, {"label":"Fn", "x":10, "y":4, "w":1.25}, {"label":"Menu", "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/jadookb/jkb65/jkb65.h b/keyboards/jadookb/jkb65/jkb65.h
index fa88e64bf7..97f65bf4da 100644
--- a/keyboards/jadookb/jkb65/jkb65.h
+++ b/keyboards/jadookb/jkb65/jkb65.h
@@ -18,7 +18,7 @@
#include "quantum.h"
-#define LAYOUT_67_ansi( \
+#define LAYOUT_65_ansi_blocker( \
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, \
diff --git a/keyboards/jadookb/jkb65/keymaps/default/keymap.c b/keyboards/jadookb/jkb65/keymaps/default/keymap.c
index f03211d220..22016cea76 100644
--- a/keyboards/jadookb/jkb65/keymaps/default/keymap.c
+++ b/keyboards/jadookb/jkb65/keymaps/default/keymap.c
@@ -20,14 +20,14 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_67_ansi(
+ [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_67_ansi(
+ [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_PSCR,
_______, RGB_RMOD, RGB_HUI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/jadookb/jkb65/keymaps/via/config.h b/keyboards/jadookb/jkb65/keymaps/via/config.h
deleted file mode 100644
index 9d4eaf74ee..0000000000
--- a/keyboards/jadookb/jkb65/keymaps/via/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
- /* Copyright 2021 Wizard-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
-
-#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/jadookb/jkb65/keymaps/via/keymap.c b/keyboards/jadookb/jkb65/keymaps/via/keymap.c
index 5713fe3805..950410d1af 100644
--- a/keyboards/jadookb/jkb65/keymaps/via/keymap.c
+++ b/keyboards/jadookb/jkb65/keymaps/via/keymap.c
@@ -20,28 +20,28 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_67_ansi(
+ [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_67_ansi(
+ [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_PSCR,
_______, RGB_RMOD, RGB_HUI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______,
MAGIC_UNNO_GUI,MAGIC_NO_GUI, _______, RGB_TOG, _______, MO(2), RGB_SPD, RGB_VAD, RGB_SPI
),
- [2] = LAYOUT_67_ansi(
+ [2] = LAYOUT_65_ansi_blocker(
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
- [3] = LAYOUT_67_ansi(
+ [3] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/jadookb/jkb65/r1/config.h b/keyboards/jadookb/jkb65/r1/config.h
new file mode 100644
index 0000000000..78f13414c9
--- /dev/null
+++ b/keyboards/jadookb/jkb65/r1/config.h
@@ -0,0 +1,20 @@
+ /* 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
+
+#define MATRIX_ROW_PINS { E6, B7, F7, F4, F5 }
+#define MATRIX_COL_PINS { F6,B1,F1,C7,C6,B6,B5,B4,D7,B3,D4,D5,D3,D2,D1,D0 } \ No newline at end of file
diff --git a/keyboards/jadookb/jkb65/r1/info.json b/keyboards/jadookb/jkb65/r1/info.json
new file mode 100644
index 0000000000..4bfe3aa763
--- /dev/null
+++ b/keyboards/jadookb/jkb65/r1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "JKB65 RGB R1",
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/jadookb/jkb65/r1/rules.mk b/keyboards/jadookb/jkb65/r1/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/jadookb/jkb65/r1/rules.mk
diff --git a/keyboards/jadookb/jkb65/r2/config.h b/keyboards/jadookb/jkb65/r2/config.h
index a0039001a8..5db93f75cb 100644
--- a/keyboards/jadookb/jkb65/r2/config.h
+++ b/keyboards/jadookb/jkb65/r2/config.h
@@ -16,12 +16,5 @@
#pragma once
-#undef DEVICE_VER
-#define DEVICE_VER 0x0002
-
-#undef PRODUCT
-#define PRODUCT JKB65 RGB R2
-
-
-#undef MATRIX_COL_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,D0 } \ No newline at end of file
diff --git a/keyboards/jadookb/jkb65/r2/info.json b/keyboards/jadookb/jkb65/r2/info.json
new file mode 100644
index 0000000000..8a23a21d5f
--- /dev/null
+++ b/keyboards/jadookb/jkb65/r2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "JKB65 RGB R2",
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/jadookb/jkb65/r2/rules.mk b/keyboards/jadookb/jkb65/r2/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/jadookb/jkb65/r2/rules.mk
diff --git a/keyboards/jadookb/jkb65/rules.mk b/keyboards/jadookb/jkb65/rules.mk
index 239ea39a74..f230e8ae9f 100644
--- a/keyboards/jadookb/jkb65/rules.mk
+++ b/keyboards/jadookb/jkb65/rules.mk
@@ -19,3 +19,5 @@ AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
LTO_ENABLE = yes
+
+DEFAULT_FOLDER = jadookb/jkb65/r1
diff --git a/keyboards/jae/j01/config.h b/keyboards/jae/j01/config.h
index 552f6930cb..4f94a69603 100644
--- a/keyboards/jae/j01/config.h
+++ b/keyboards/jae/j01/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4705
-#define PRODUCT_ID 0x0143
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Evyd13
-#define PRODUCT J-01
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS {B2, B1, B3, B0, D0}
#define MATRIX_COL_PINS {D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/jae/j01/info.json b/keyboards/jae/j01/info.json
index 03c18c46d1..94363e3aa5 100644
--- a/keyboards/jae/j01/info.json
+++ b/keyboards/jae/j01/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "J01",
+ "keyboard_name": "J-01",
+ "manufacturer": "Evyd13",
"url": "",
"maintainer": "MechMerlin",
+ "usb": {
+ "vid": "0x4705",
+ "pid": "0x0143",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [{"x":0, "y":0}, {"x":1, "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.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"x":14.5, "y":0}, {"x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":18, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2.5, "y":1, "w":1.5}, {"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":16, "y":1, "w":1.5}, {"x":18, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2.5, "y":2, "w":1.75}, {"x":4.25, "y":2}, {"x":5.25, "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}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":13.25, "y":2}, {"x":14.25, "y":2}, {"x":15.25, "y":2, "w":2.25}, {"x":18, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.5, "y":3, "w":2.25}, {"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}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.75}, {"x":16.75, "y":3.25}, {"x":18, "y":3}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":1.25}, {"x":6.25, "y":4, "w":6.25}, {"x":12.5, "y":4, "w":1.5}, {"x":14, "y":4, "w":1.5}, {"x":15.75, "y":4.25}, {"x":16.75, "y":4.25}, {"x":17.75, "y":4.25}]
diff --git a/keyboards/jagdpietr/drakon/config.h b/keyboards/jagdpietr/drakon/config.h
index 611b107137..cab8ec9d05 100644
--- a/keyboards/jagdpietr/drakon/config.h
+++ b/keyboards/jagdpietr/drakon/config.h
@@ -19,13 +19,6 @@ 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 0x7776
-#define DEVICE_VER 0x0001
-#define MANUFACTURER jagdpietr
-#define PRODUCT drakon
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C7, B5, B6, B0, B1, F1 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, C6, B2, B3, B7, D3, D5, D4, D6, D7, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/jagdpietr/drakon/info.json b/keyboards/jagdpietr/drakon/info.json
index 8208fa22bb..48945eaf3e 100644
--- a/keyboards/jagdpietr/drakon/info.json
+++ b/keyboards/jagdpietr/drakon/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "drakon",
+ "manufacturer": "jagdpietr",
"url": "",
"maintainer": "jagdpietr",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x7776",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_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}, {"x":14, "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":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, "w":2.25}, {"x":16.25, "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.25}, {"x":13.75, "y":3.25}, {"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.75, "y":4.25}, {"x":13.75, "y":4.25}, {"x":14.75, "y":4.25}]
diff --git a/keyboards/janus/config.h b/keyboards/janus/config.h
new file mode 100644
index 0000000000..8124f0db57
--- /dev/null
+++ b/keyboards/janus/config.h
@@ -0,0 +1,16 @@
+// Copyright 2022 Steven Karrmann (@skarrmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* Serial communication */
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+
+/* Double tap reset button to enter bootloader */
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U \ No newline at end of file
diff --git a/keyboards/janus/halconf.h b/keyboards/janus/halconf.h
new file mode 100644
index 0000000000..550a6e0abf
--- /dev/null
+++ b/keyboards/janus/halconf.h
@@ -0,0 +1,9 @@
+// Copyright 2022 Steven Karrmann (@skarrmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next <halconf.h>
+
+#undef HAL_USE_SIO
+#define HAL_USE_SIO TRUE \ No newline at end of file
diff --git a/keyboards/janus/info.json b/keyboards/janus/info.json
new file mode 100644
index 0000000000..6169dc6ed5
--- /dev/null
+++ b/keyboards/janus/info.json
@@ -0,0 +1,75 @@
+{
+ "keyboard_name": "Janus",
+ "manufacturer": "Steven Karrmann",
+ "url": "https://github.com/skarrmann/janus",
+ "maintainer": "skarrmann",
+ "processor": "RP2040",
+ "bootloader": "rp2040",
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "cols": ["GP6", "GP7", "GP2", "GP4", "GP3"],
+ "rows": ["GP26", "GP27", "GP28", "GP29"]
+ },
+ "indicators": {
+ "num_lock": "GP17",
+ "caps_lock": "GP16",
+ "scroll_lock": "GP25",
+ "on_state": 0
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "split": {
+ "enabled": true
+ },
+ "layouts": {
+ "LAYOUT_split_3x5_2": {
+ "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": [4, 4], "x": 6, "y": 0 },
+ { "matrix": [4, 3], "x": 7, "y": 0 },
+ { "matrix": [4, 2], "x": 8, "y": 0 },
+ { "matrix": [4, 1], "x": 9, "y": 0 },
+ { "matrix": [4, 0], "x": 10, "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": [5, 4], "x": 6, "y": 1 },
+ { "matrix": [5, 3], "x": 7, "y": 1 },
+ { "matrix": [5, 2], "x": 8, "y": 1 },
+ { "matrix": [5, 1], "x": 9, "y": 1 },
+ { "matrix": [5, 0], "x": 10, "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": [6, 4], "x": 6, "y": 2 },
+ { "matrix": [6, 3], "x": 7, "y": 2 },
+ { "matrix": [6, 2], "x": 8, "y": 2 },
+ { "matrix": [6, 1], "x": 9, "y": 2 },
+ { "matrix": [6, 0], "x": 10, "y": 2 },
+ { "matrix": [3, 3], "x": 3, "y": 3 },
+ { "matrix": [3, 4], "x": 4, "y": 3 },
+ { "matrix": [7, 4], "x": 6, "y": 3 },
+ { "matrix": [7, 3], "x": 7, "y": 3 }
+ ]
+ }
+ },
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x9A25",
+ "vid": "0xFEED"
+ }
+} \ No newline at end of file
diff --git a/keyboards/janus/keymaps/default/keymap.c b/keyboards/janus/keymaps/default/keymap.c
new file mode 100644
index 0000000000..440645a15d
--- /dev/null
+++ b/keyboards/janus/keymaps/default/keymap.c
@@ -0,0 +1,50 @@
+// Copyright 2022 Steven Karrmann (@skarrmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _BASE,
+ _SYMBOL,
+ _NAVIGATION,
+ _FUNCTION
+};
+
+#define MO_SYM MO(_SYMBOL)
+#define MO_NAV MO(_NAVIGATION)
+#define MO_FUN MO(_FUNCTION)
+#define OS_LCTL OSM(MOD_LCTL)
+#define OS_LSFT OSM(MOD_LSFT)
+#define OS_LALT OSM(MOD_LALT)
+#define OS_LGUI OSM(MOD_LGUI)
+#define OS_RCTL OSM(MOD_RCTL)
+#define OS_RSFT OSM(MOD_RSFT)
+#define OS_RALT OSM(MOD_RALT)
+#define OS_RGUI OSM(MOD_RGUI)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = 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_QUOT,
+ KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH,
+ MO_NAV , KC_LSFT, KC_SPC , MO_SYM
+ ),
+ [_SYMBOL] = LAYOUT_split_3x5_2(
+ KC_SCLN, KC_LBRC, KC_RBRC, KC_5 , XXXXXXX, XXXXXXX, KC_6 , KC_MINS, KC_EQL , KC_GRV ,
+ KC_1 , KC_2 , KC_3 , KC_4 , KC_BSLS, XXXXXXX, KC_7 , KC_8 , KC_9 , KC_0 ,
+ OS_LGUI, OS_LALT, OS_LSFT, OS_LCTL, XXXXXXX, XXXXXXX, OS_RCTL, OS_RSFT, OS_RALT, OS_RGUI,
+ MO_FUN , _______, _______, _______
+ ),
+ [_NAVIGATION] = LAYOUT_split_3x5_2(
+ KC_PSCR, KC_INS , KC_APP , KC_DEL , XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END ,
+ KC_ESC , KC_TAB , KC_ENT , KC_BSPC, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT,
+ OS_LGUI, OS_LALT, OS_LSFT, OS_LCTL, XXXXXXX, XXXXXXX, OS_RCTL, OS_RSFT, OS_RALT, OS_RGUI,
+ _______, _______, _______, MO_FUN
+ ),
+ [_FUNCTION] = LAYOUT_split_3x5_2(
+ KC_F1 , KC_F2 , KC_F3 , KC_F4 , QK_BOOT, KC_SLCK, KC_F9 , KC_F10 , KC_F11 , KC_F12 ,
+ KC_F5 , KC_F6 , KC_F7 , KC_F8 , XXXXXXX, KC_CLCK, KC_MUTE, KC_VOLD, KC_VOLU, KC_PAUS,
+ OS_LGUI, OS_LALT, OS_LSFT, OS_LCTL, XXXXXXX, KC_NLCK, OS_RCTL, OS_RSFT, OS_RALT, OS_RGUI,
+ _______, _______, _______, _______
+ ),
+}; \ No newline at end of file
diff --git a/keyboards/janus/keymaps/default/readme.md b/keyboards/janus/keymaps/default/readme.md
new file mode 100644
index 0000000000..dc7534e317
--- /dev/null
+++ b/keyboards/janus/keymaps/default/readme.md
@@ -0,0 +1,13 @@
+# Janus Default Keymap
+
+![Janus default keymap image](https://i.imgur.com/7FevUIZh.png)
+
+The default Janus keymap is simple and organized. The only QMK special features used are layers and one shot keys for modifiers.
+
+It is inspired by [Callum's keymap](https://github.com/qmk/qmk_firmware/tree/master/users/callum), with a few differences:
+
+* Modifier keys are moved to the bottom row on every layer, and are mirrored on both sides.
+* Symbol layer only contains non-shifted symbol keys.
+* General differences in key positions.
+
+For simplicity's sake, the keymap uses QMK's native one shot key implementation. There are other excellent one shot implementations out there, including Callum's in the aforementioned keymap. \ No newline at end of file
diff --git a/keyboards/janus/mcuconf.h b/keyboards/janus/mcuconf.h
new file mode 100644
index 0000000000..c41253d4fb
--- /dev/null
+++ b/keyboards/janus/mcuconf.h
@@ -0,0 +1,9 @@
+// Copyright 2022 Steven Karrmann (@skarrmann)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef RP_SIO_USE_UART0
+#define RP_SIO_USE_UART0 TRUE \ No newline at end of file
diff --git a/keyboards/janus/readme.md b/keyboards/janus/readme.md
new file mode 100644
index 0000000000..aa9e65cdc4
--- /dev/null
+++ b/keyboards/janus/readme.md
@@ -0,0 +1,27 @@
+# Janus
+
+![Janus](https://i.imgur.com/7Lzhafeh.jpg)
+
+A 34-key split ortholinear keyboard, powered by two Seeed XIAO RP2040.
+
+* Keyboard Maintainer: [Steven Karrmann](https://github.com/skarrmann)
+* Hardware Supported: Janus PCBs, Seeed XIAO RP2040
+* Hardware Availability: [Janus GitHub repository](https://github.com/skarrmann/janus)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make janus:default
+
+Flashing example for this keyboard:
+
+ make janus: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 top left key on the left half, or top right key on the right half, and then plug in the USB cable on that keyboard half.
+* **Physical reset button**: Double tap the reset button on the XIAO RP2040.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
diff --git a/keyboards/janus/rules.mk b/keyboards/janus/rules.mk
new file mode 100644
index 0000000000..59b74ac86b
--- /dev/null
+++ b/keyboards/janus/rules.mk
@@ -0,0 +1 @@
+SERIAL_DRIVER = usart \ No newline at end of file
diff --git a/keyboards/jc65/v32a/config.h b/keyboards/jc65/v32a/config.h
index b4cef251b5..01b73b34db 100644
--- a/keyboards/jc65/v32a/config.h
+++ b/keyboards/jc65/v32a/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x1234
-#define PRODUCT_ID 0x5679
-#define DEVICE_VER 0x0200
-#define MANUFACTURER RAMA
-#define PRODUCT JC65 BMC
-
/* matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 15
diff --git a/keyboards/jc65/v32a/info.json b/keyboards/jc65/v32a/info.json
index 9c22289d8f..a6130b77c6 100644
--- a/keyboards/jc65/v32a/info.json
+++ b/keyboards/jc65/v32a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "jc65",
+ "keyboard_name": "JC65 BMC",
+ "manufacturer": "RAMA",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x1234",
+ "pid": "0x5679",
+ "device_version": "2.0.0"
+ },
"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":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}, {"x":13, "y":0}, {"x":14, "y":0}, {"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}, {"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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"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}, {"x":14, "y":3}, {"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":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Win", "x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
diff --git a/keyboards/jc65/v32a/keymaps/ptillemans/keymap.c b/keyboards/jc65/v32a/keymaps/ptillemans/keymap.c
index c384d36d3f..cbb5e8c237 100644
--- a/keyboards/jc65/v32a/keymaps/ptillemans/keymap.c
+++ b/keyboards/jc65/v32a/keymaps/ptillemans/keymap.c
@@ -17,8 +17,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_RAISE] = 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_BSLS,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_PSCR,KC_LBRC,KC_RBRC, RESET,KC_PGUP,
- KC_CTES, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, RESET, KC_ENT,KC_PGDN,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O,KC_PSCR,KC_LBRC,KC_RBRC, QK_BOOT,KC_PGUP,
+ KC_CTES, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,KC_SCLN,KC_QUOT, QK_BOOT, 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_HOME,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT,KC_RGUI,KC_RCTL,KC_LEFT,KC_DOWN,KC_RGHT
),
diff --git a/keyboards/jc65/v32a/keymaps/rys/keymap.c b/keyboards/jc65/v32a/keymaps/rys/keymap.c
index f946c8eebf..a88c7a8685 100644
--- a/keyboards/jc65/v32a/keymaps/rys/keymap.c
+++ b/keyboards/jc65/v32a/keymaps/rys/keymap.c
@@ -14,7 +14,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_LGUI, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FUNC] = LAYOUT(
- 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, XXXXXXX, XXXXXXX, RESET,
+ 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, XXXXXXX, XXXXXXX, QK_BOOT,
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, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
diff --git a/keyboards/jc65/v32u4/config.h b/keyboards/jc65/v32u4/config.h
index 108e4126be..d59d30a12e 100644
--- a/keyboards/jc65/v32u4/config.h
+++ b/keyboards/jc65/v32u4/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0002
-#define MANUFACTURER dou
-#define PRODUCT KEYCLACK65-V1
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* QMK JC65 PCB default pin-out */
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3, F4, F5 }
-#define UNUSED_PINS
#define LED_CAPS_LOCK_PIN B2
#define LED_PIN_ON_STATE 0
diff --git a/keyboards/jc65/v32u4/info.json b/keyboards/jc65/v32u4/info.json
index 84d832eede..83e248fc30 100644
--- a/keyboards/jc65/v32u4/info.json
+++ b/keyboards/jc65/v32u4/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "jc65",
+ "keyboard_name": "JC65",
+ "manufacturer": "dou",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.2"
+ },
"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":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}, {"x":13, "y":0}, {"x":14, "y":0}, {"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}, {"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}, {"x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"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}, {"x":14, "y":3}, {"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":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"label":"Alt", "x":10, "y":4}, {"label":"Win", "x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
diff --git a/keyboards/jc65/v32u4/keymaps/coth/keymap.c b/keyboards/jc65/v32u4/keymaps/coth/keymap.c
index 800516a2be..990d32220b 100644
--- a/keyboards/jc65/v32u4/keymaps/coth/keymap.c
+++ b/keyboards/jc65/v32u4/keymaps/coth/keymap.c
@@ -16,7 +16,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_HOME, KC_PGDN, KC_END
),
[2] = LAYOUT(
- RGB_TOG, 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_MOD, RGB_RMOD, BL_STEP, BL_TOGG, KC_TRNS, KC_TRNS, RESET,
+ RGB_TOG, 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_MOD, RGB_RMOD, BL_STEP, BL_TOGG, KC_TRNS, KC_TRNS, QK_BOOT,
KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, RGB_HUD, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/jc65/v32u4/keymaps/dead_encryption/keymap.c b/keyboards/jc65/v32u4/keymaps/dead_encryption/keymap.c
index 528bde8852..d02b67a930 100644
--- a/keyboards/jc65/v32u4/keymaps/dead_encryption/keymap.c
+++ b/keyboards/jc65/v32u4/keymaps/dead_encryption/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_SPACE, KC_SPACE, KC_RALT, MO(1), 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_INS, KC_PAUS, KC_TRNS,
+ QK_BOOT, KC_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_PAUS, KC_TRNS,
KC_TRNS, RGB_TOG, 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_MOD, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS,
KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, RGB_HUD, RGB_SAD, RGB_VAD, KC_DOWN, KC_HOME, KC_PGUP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, BL_TOGG, BL_STEP, BL_INC, BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/jc65/v32u4/keymaps/gam3cat/keymap.c b/keyboards/jc65/v32u4/keymaps/gam3cat/keymap.c
index 7572b9e073..7d0902b967 100644
--- a/keyboards/jc65/v32u4/keymaps/gam3cat/keymap.c
+++ b/keyboards/jc65/v32u4/keymaps/gam3cat/keymap.c
@@ -167,7 +167,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, DF(_BL), DF(_WL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DMR1,
_______, XXXXXXX, XXXXXXX, DF(_DL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DMRS,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DF(_CL), XXXXXXX, DF(_BL), DF(_NL), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DMR2,
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DMP2
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DMP2
),
};
@@ -224,7 +224,7 @@ void matrix_scan_user(void) {
}
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _BL:
custom_backlight_level(0);
rgblight_sethsv_noeeprom(180,100,255);
diff --git a/keyboards/jc65/v32u4/keymaps/jetpacktuxedo/keymap.c b/keyboards/jc65/v32u4/keymaps/jetpacktuxedo/keymap.c
index 992640523a..7e24d2f96b 100644
--- a/keyboards/jc65/v32u4/keymaps/jetpacktuxedo/keymap.c
+++ b/keyboards/jc65/v32u4/keymaps/jetpacktuxedo/keymap.c
@@ -16,7 +16,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, MO(2), 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, 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, QK_BOOT,
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,
MO(1), RGB_SAD, RGB_SAI, KC_TRNS, KC_TRNS, RGB_HUD, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/jc65/v32u4/keymaps/na7thana/keymap.c b/keyboards/jc65/v32u4/keymaps/na7thana/keymap.c
index 68560464b6..e7e907972d 100644
--- a/keyboards/jc65/v32u4/keymaps/na7thana/keymap.c
+++ b/keyboards/jc65/v32u4/keymaps/na7thana/keymap.c
@@ -9,7 +9,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_LALT, KC_SPACE, KC_SPACE, KC_SPACE, KC_SPACE, KC_RALT, MO(1), 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_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, KC_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_HOME, KC_END, KC_DEL, KC_TRNS,
KC_CAPS, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, 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_MPRV, KC_MNXT, KC_MPLY, KC_MPLY, KC_VOLU, KC_TRNS,
diff --git a/keyboards/jc65/v32u4/keymaps/naut/keymap.c b/keyboards/jc65/v32u4/keymaps/naut/keymap.c
index 2fa5ec47c4..33e0a264ff 100644
--- a/keyboards/jc65/v32u4/keymaps/naut/keymap.c
+++ b/keyboards/jc65/v32u4/keymaps/naut/keymap.c
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, 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
+ QK_BOOT, 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/jd40/config.h b/keyboards/jd40/config.h
index dd6984f108..340123270e 100644
--- a/keyboards/jd40/config.h
+++ b/keyboards/jd40/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER geekhack
-#define PRODUCT jd40v2
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F5, B4 }
#define MATRIX_COL_PINS { F4, D7, B5, B6, C6, C7, D4, D6, D5, D0, D1, D2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/jd40/info.json b/keyboards/jd40/info.json
index 6cfdcdc3ee..b94e9076f7 100644
--- a/keyboards/jd40/info.json
+++ b/keyboards/jd40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "jd40",
+ "manufacturer": "geekhack",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/jd45/config.h b/keyboards/jd45/config.h
index 3deea19740..a1b59f236f 100644
--- a/keyboards/jd45/config.h
+++ b/keyboards/jd45/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER geekhack
-#define PRODUCT JD45
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Planck PCB default pin-out */
#define MATRIX_ROW_PINS { F0, F1, F5, B4 }
#define MATRIX_COL_PINS { F4, D7, B5, B6, C6, C7, D4, D6, D5, D0, D1, D2, B0 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B7
diff --git a/keyboards/jd45/info.json b/keyboards/jd45/info.json
index 99059b0960..3fa16119f6 100644
--- a/keyboards/jd45/info.json
+++ b/keyboards/jd45/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "jd45",
+ "keyboard_name": "JD45",
+ "manufacturer": "geekhack",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/jd45/keymaps/blakedietz/keymap.c b/keyboards/jd45/keymaps/blakedietz/keymap.c
index a40a2c604e..a6631c9d99 100644
--- a/keyboards/jd45/keymaps/blakedietz/keymap.c
+++ b/keyboards/jd45/keymaps/blakedietz/keymap.c
@@ -196,7 +196,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
- _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET),
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT),
/*`----------+-----------+-----------+-----------+----^^^----+----^^^----+-----------+-----------+-----------+--------'*/
/* VIM
diff --git a/keyboards/jd45/keymaps/jeebak/keymap.c b/keyboards/jd45/keymaps/jeebak/keymap.c
index bb6c829382..a14009a43b 100644
--- a/keyboards/jd45/keymaps/jeebak/keymap.c
+++ b/keyboards/jd45/keymaps/jeebak/keymap.c
@@ -277,7 +277,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
- _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET)
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT)
/*`----------+-----------+-----------+-----------+----^^^----+----^^^----+-----------+-----------+-----------+--------'*/
};
diff --git a/keyboards/jd45/keymaps/mjt6u/keymap.c b/keyboards/jd45/keymaps/mjt6u/keymap.c
index dc7c3bb7e3..64b6139a50 100644
--- a/keyboards/jd45/keymaps/mjt6u/keymap.c
+++ b/keyboards/jd45/keymaps/mjt6u/keymap.c
@@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT( \
- _______, RESET, _______, _______, _______, _______, _______, DYN_REC_START1, DYN_REC_START2, _______, KC_PSCR, _______, _______, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, DYN_REC_START1, DYN_REC_START2, _______, KC_PSCR, _______, _______, \
_______, _______, _______, _______, USEFNMODS, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, MACSLEEP, _______, _______, \
_______, _______, _______, _______, _______, _______, USENUMMODS, _______, _______, _______, _______, _______, \
XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, __MOD__, __MOD__, XXXXXXX \
diff --git a/keyboards/jels/jels60/config.h b/keyboards/jels/jels60/config.h
index 6805018dd7..ab9c51335b 100644
--- a/keyboards/jels/jels60/config.h
+++ b/keyboards/jels/jels60/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor paramater */
-#define VENDOR_ID 0x006A //Jels (J)
-#define PRODUCT_ID 0x0060 //Jels 60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER jels
-#define PRODUCT jels60
-
/* Define Matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/jels/jels60/info.json b/keyboards/jels/jels60/info.json
index b958bb6905..d8c6590ccb 100644
--- a/keyboards/jels/jels60/info.json
+++ b/keyboards/jels/jels60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Jels60",
+ "manufacturer": "Jels",
"url": "",
"maintainer": "Jels",
+ "usb": {
+ "vid": "0x006A",
+ "pid": "0x0060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/jels/jels60/readme.md b/keyboards/jels/jels60/readme.md
index 0b72d3e346..8def326cba 100644
--- a/keyboards/jels/jels60/readme.md
+++ b/keyboards/jels/jels60/readme.md
@@ -20,4 +20,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
* **Bootmagic reset**: Hold down the top left key (ESC/Tilde) 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/jels/jels88/config.h b/keyboards/jels/jels88/config.h
index 3018e15c86..54c2fecc5c 100644
--- a/keyboards/jels/jels88/config.h
+++ b/keyboards/jels/jels88/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor paramater */
-#define VENDOR_ID 0x006a // Jels (J)
-#define PRODUCT_ID 0x0088 // Jels 88
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Jels
-#define PRODUCT Jels88
-
/* Define Matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
diff --git a/keyboards/jels/jels88/info.json b/keyboards/jels/jels88/info.json
index 827e911494..dc4887cbb7 100644
--- a/keyboards/jels/jels88/info.json
+++ b/keyboards/jels/jels88/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Jels88",
+ "manufacturer": "Jels",
"url": "",
"maintainer": "Jels",
+ "usb": {
+ "vid": "0x006A",
+ "pid": "0x0088",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/jels/jels88/readme.md b/keyboards/jels/jels88/readme.md
index 37d18dbf40..fa590aa303 100644
--- a/keyboards/jels/jels88/readme.md
+++ b/keyboards/jels/jels88/readme.md
@@ -22,4 +22,4 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the top right key (ESC) 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/jian/handwired/config.h b/keyboards/jian/handwired/config.h
index ebcda62f44..055568b06c 100644
--- a/keyboards/jian/handwired/config.h
+++ b/keyboards/jian/handwired/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC0DE
-#define PRODUCT_ID 0x1337
-#define DEVICE_VER 0x0010
-#define MANUFACTURER KgOfHedgehogs
-#define PRODUCT Huma
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 4
diff --git a/keyboards/jian/handwired/info.json b/keyboards/jian/handwired/info.json
new file mode 100644
index 0000000000..120c6c4a24
--- /dev/null
+++ b/keyboards/jian/handwired/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Huma",
+ "usb": {
+ "device_version": "0.1.0"
+ }
+}
diff --git a/keyboards/jian/info.json b/keyboards/jian/info.json
index e9c875e792..2e59944921 100644
--- a/keyboards/jian/info.json
+++ b/keyboards/jian/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "jian",
+ "manufacturer": "KgOfHedgehogs",
"url": "t.me/s/kgofhedgehogs",
"maintainer": "KGOH",
+ "usb": {
+ "vid": "0xC0DE",
+ "pid": "0x1337"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/jian/keymaps/advanced/keymap.c b/keyboards/jian/keymaps/advanced/keymap.c
index 4aad7b65ad..721adaaee7 100644
--- a/keyboards/jian/keymaps/advanced/keymap.c
+++ b/keyboards/jian/keymaps/advanced/keymap.c
@@ -212,7 +212,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT_symmetric(
- RESET, DEBUG, KC_ASUP, CH_WMN, CH_CMK, CH_QWE, CH_DVK,
+ QK_BOOT, DEBUG, KC_ASUP, CH_WMN, CH_CMK, CH_QWE, CH_DVK,
KC_ASRP, KC_ASTG, XXXXXXX, XXXXXXX, QWERTY, PLOVER,
BL_ADJ, KC_ASDN, XXXXXXX, XXXXXXX, ISO, THUMB_ALT,
_______, SW_TG, _______
diff --git a/keyboards/jian/keymaps/left_hand/keymap.c b/keyboards/jian/keymaps/left_hand/keymap.c
index d2518a2535..ab24c63ed4 100644
--- a/keyboards/jian/keymaps/left_hand/keymap.c
+++ b/keyboards/jian/keymaps/left_hand/keymap.c
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, LT(_ADJUST, KC_ESC)
),
[_ADJUST] = LAYOUT_symmetric_left(
- RESET, DEBUG, XXXXXXX, BL_INC, RGB_VAI, RGB_HUD, RGB_HUI,
+ QK_BOOT, DEBUG, XXXXXXX, BL_INC, RGB_VAI, RGB_HUD, RGB_HUI,
XXXXXXX, XXXXXXX, BL_DEC, RGB_VAD, RGB_SAD, RGB_SAI,
XXXXXXX, BL_BRTG, BL_TOGG, RGB_TOG, RGB_RMOD,RGB_MOD,
_______, _______, _______
diff --git a/keyboards/jian/nsrev2/config.h b/keyboards/jian/nsrev2/config.h
index 7a2cabeb4c..6b36049f94 100644
--- a/keyboards/jian/nsrev2/config.h
+++ b/keyboards/jian/nsrev2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC0DE
-#define PRODUCT_ID 0x1337
-#define DEVICE_VER 0x0210
-#define MANUFACTURER KgOfHedgehogs
-#define PRODUCT Huma
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/jian/nsrev2/info.json b/keyboards/jian/nsrev2/info.json
new file mode 100644
index 0000000000..06fbfeb833
--- /dev/null
+++ b/keyboards/jian/nsrev2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Huma",
+ "usb": {
+ "device_version": "2.1.0"
+ }
+}
diff --git a/keyboards/jian/rev1/config.h b/keyboards/jian/rev1/config.h
index 5758115035..988b6d5176 100644
--- a/keyboards/jian/rev1/config.h
+++ b/keyboards/jian/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC0DE
-#define PRODUCT_ID 0x1337
-#define DEVICE_VER 0x0100
-#define MANUFACTURER KgOfHedgehogs
-#define PRODUCT Jian
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/jian/rev1/info.json b/keyboards/jian/rev1/info.json
new file mode 100644
index 0000000000..32540b3f78
--- /dev/null
+++ b/keyboards/jian/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Jian",
+ "usb": {
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/jian/rev2/config.h b/keyboards/jian/rev2/config.h
index ec3c206d46..52c8b6ad0e 100644
--- a/keyboards/jian/rev2/config.h
+++ b/keyboards/jian/rev2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC0DE
-#define PRODUCT_ID 0x1337
-#define DEVICE_VER 0x0200
-#define MANUFACTURER KgOfHedgehogs
-#define PRODUCT Jian
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/jian/rev2/info.json b/keyboards/jian/rev2/info.json
new file mode 100644
index 0000000000..db130bf467
--- /dev/null
+++ b/keyboards/jian/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Jian",
+ "usb": {
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/jiran/config.h b/keyboards/jiran/config.h
index da100292e2..0579f44a77 100644
--- a/keyboards/jiran/config.h
+++ b/keyboards/jiran/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1209
-#define PRODUCT_ID 0x3735
-#define DEVICE_VER 0x0300
-#define MANUFACTURER Ladniy
-#define PRODUCT Jiran
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/jiran/info.json b/keyboards/jiran/info.json
index 8dd6a43fe8..93b8ad11ce 100644
--- a/keyboards/jiran/info.json
+++ b/keyboards/jiran/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "jiran",
+ "keyboard_name": "Jiran",
+ "manufacturer": "Ladniy",
"url": "t.me/s/ladniys",
"maintainer": "Ladniy",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0x3735",
+ "device_version": "3.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/jkdlab/binary_monkey/config.h b/keyboards/jkdlab/binary_monkey/config.h
index ba8bfcd8d1..1c12761600 100644
--- a/keyboards/jkdlab/binary_monkey/config.h
+++ b/keyboards/jkdlab/binary_monkey/config.h
@@ -20,12 +20,6 @@
#include "config_common.h"
-#define VENDOR_ID 0x4934
-#define PRODUCT_ID 0x0101
-#define DEVICE_VER 0x0001
-#define MANUFACTURER JKDLAB.
-#define PRODUCT Binary_Monkey
-
#define MATRIX_ROWS 1
#define MATRIX_COLS 3
#define MATRIX_ROW_PINS { D0 }
diff --git a/keyboards/jkdlab/binary_monkey/info.json b/keyboards/jkdlab/binary_monkey/info.json
index 9d563c0b12..24671d285d 100644
--- a/keyboards/jkdlab/binary_monkey/info.json
+++ b/keyboards/jkdlab/binary_monkey/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Binary_Monkey",
+ "manufacturer": "JKDLAB.",
"url": "https://gumroad.com/jkdlab",
"maintainer": "JKDLAB.",
+ "usb": {
+ "vid": "0x4934",
+ "pid": "0x0101",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/jkeys_design/gentleman65/config.h b/keyboards/jkeys_design/gentleman65/config.h
new file mode 100644
index 0000000000..eed1d351a7
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65/config.h
@@ -0,0 +1,51 @@
+/*
+Copyright 2021 Omar Afzal
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 5
+#define MATRIX_COLS 16
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { D3, D2, D1, F7, F1 }
+#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, D5, C7, F0, B2, B1, B3, B0, B7, D0 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN F4
+#define RGBLED_NUM 14
+#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 ENCODERS_PAD_A { F6 }
+#define ENCODERS_PAD_B { F5 }
+#define ENCODER_RESOLUTION 4
+
+#define DRIVER_LED_TOTAL 14
diff --git a/keyboards/gentleman65/gentleman65.c b/keyboards/jkeys_design/gentleman65/gentleman65.c
index 9e9baa011e..9e9baa011e 100644
--- a/keyboards/gentleman65/gentleman65.c
+++ b/keyboards/jkeys_design/gentleman65/gentleman65.c
diff --git a/keyboards/gentleman65/gentleman65.h b/keyboards/jkeys_design/gentleman65/gentleman65.h
index c313e41102..c313e41102 100644
--- a/keyboards/gentleman65/gentleman65.h
+++ b/keyboards/jkeys_design/gentleman65/gentleman65.h
diff --git a/keyboards/jkeys_design/gentleman65/info.json b/keyboards/jkeys_design/gentleman65/info.json
new file mode 100644
index 0000000000..3a8e6168aa
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65/info.json
@@ -0,0 +1,16 @@
+{
+ "name": "Gentleman 65",
+ "manufacturer": "JJ48_24 & Omar Afzal",
+ "url": "https://jkeys.design/products/gentleman-65",
+ "maintainer": "0marA",
+ "usb": {
+ "vid": "0x00FA",
+ "pid": "0x2020",
+ "device_version": "0.0.1"
+ },
+ "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":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}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/jkeys_design/gentleman65/keymaps/briianpowell/keymap.c b/keyboards/jkeys_design/gentleman65/keymaps/briianpowell/keymap.c
new file mode 100644
index 0000000000..bd036c8cb2
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65/keymaps/briianpowell/keymap.c
@@ -0,0 +1,96 @@
+/* Copyright 2021 Omar Afzal
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 FN_ESC LT(_FUNC, KC_ESC)
+
+enum gentleman_layers {
+ _QWERTY,
+ _WORKMAN,
+ _FUNC,
+};
+
+enum gentleman_keycodes {
+ QWERTY = SAFE_RANGE,
+ WORKMAN,
+ FUNC,
+};
+
+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_BSPC, KC_TRNS,
+ KC_TAB, KC_Q, KC_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,
+ FN_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,
+ KC_LSFT, KC_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
+ ),
+
+ [_WORKMAN] = 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_TRNS,
+ KC_TAB, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
+ FN_ESC, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, KC_ENT, KC_PGUP,
+ KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, 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
+ ),
+
+ [_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_TRNS, KC_TRNS, QK_BOOT,
+ KC_TRNS, KC_WH_U, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, AG_NORM, AG_SWAP, QWERTY, WORKMAN, KC_TRNS, KC_INS,
+ KC_TRNS, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_END, KC_TRNS, KC_HOME,
+ KC_TRNS, KC_WH_L, KC_BTN3, KC_WH_R, KC_TRNS, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_SAI, RGB_SAD, KC_TRNS, RGB_HUI, KC_END,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, KC_MPRV, RGB_HUD, KC_MNXT
+ ),
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (index == 0) {
+ switch (get_highest_layer(layer_state)) {
+ case _FUNC:
+ // Vertical Scroll
+ clockwise ? tap_code(KC_WH_D) : tap_code(KC_WH_U);
+ return false;
+ break;
+ default:
+ // Horizontal Scroll
+ if ((get_mods() & MOD_BIT(KC_LSFT)) == MOD_BIT(KC_LSFT)) {
+ clockwise ? tap_code(KC_WH_D) : tap_code(KC_WH_U);
+ return false;
+ }
+ // Volume
+ clockwise ? tap_code(KC_AUDIO_VOL_UP) : tap_code(KC_AUDIO_VOL_DOWN);
+ break;
+ }
+ }
+ return false;
+}
+
+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;
+ case WORKMAN:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_WORKMAN);
+ }
+ return false;
+ }
+
+ return true;
+}
+
diff --git a/keyboards/jkeys_design/gentleman65/keymaps/briianpowell/readme.md b/keyboards/jkeys_design/gentleman65/keymaps/briianpowell/readme.md
new file mode 100644
index 0000000000..b7c0fb5c5d
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65/keymaps/briianpowell/readme.md
@@ -0,0 +1,14 @@
+# Gentleman65 Keyboard Compilation
+
+## Features
+
+- Base Layers
+ - QWERTY
+ - Workman
+- Entertainment Keys
+
+## Building and flashing
+
+```
+make gentleman65:briianpowell:flash
+```
diff --git a/keyboards/gentleman65/keymaps/default/keymap.c b/keyboards/jkeys_design/gentleman65/keymaps/default/keymap.c
index 9f822c396c..9f822c396c 100644
--- a/keyboards/gentleman65/keymaps/default/keymap.c
+++ b/keyboards/jkeys_design/gentleman65/keymaps/default/keymap.c
diff --git a/keyboards/gentleman65/keymaps/via/keymap.c b/keyboards/jkeys_design/gentleman65/keymaps/via/keymap.c
index c965b0bf21..c965b0bf21 100644
--- a/keyboards/gentleman65/keymaps/via/keymap.c
+++ b/keyboards/jkeys_design/gentleman65/keymaps/via/keymap.c
diff --git a/keyboards/jkeys_design/gentleman65/keymaps/via/rules.mk b/keyboards/jkeys_design/gentleman65/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/jkeys_design/gentleman65/readme.md b/keyboards/jkeys_design/gentleman65/readme.md
new file mode 100644
index 0000000000..2754a0cfcd
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65/readme.md
@@ -0,0 +1,24 @@
+# Gentleman65
+
+![Render](https://i.imgur.com/uNdJqBuh.jpg)
+
+The Gentleman 65 combines the sleek look of natural wood, with the fun of frosted acrylic to produce a truly unique look that differs from existing boards on the market. The board consists of 2 3mm frosted acrylic layers, topped by 2 layers of 6mm of wood, a frosted acrylic wedge, and 2 feet that give the board an angle of 7°. The board is unique in its inclusion of a top mounting system, something rarely seen on the laser cut board.
+
+
+* Keyboard Maintainer: [Omar Afzal](https://github.com/0marA)
+* Hardware Supported: Gentleman 65 PCB for Gentleman65 & Gentleman 65 Suited Edition hotswap PCB
+* Hardware Availability: [Jkeys.Design](https://jkeys.design/)
+
+Getting the board into bootloader mode:
+
+To flash firmware onto this board, you'll need to bring the PCB into bootloader mode. To enter bootloader mode, press the reset button on the back of the PCB twice. The reset button is located in the bottom center near the spacebar switch footprint.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make jkeys_design/gentleman65:default
+
+Flashing example for this keyboard:
+
+ make jkeys_design/gentleman65: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/gentleman65/rules.mk b/keyboards/jkeys_design/gentleman65/rules.mk
index fceba7b48c..fceba7b48c 100644
--- a/keyboards/gentleman65/rules.mk
+++ b/keyboards/jkeys_design/gentleman65/rules.mk
diff --git a/keyboards/jkeys_design/gentleman65_se_s/config.h b/keyboards/jkeys_design/gentleman65_se_s/config.h
new file mode 100644
index 0000000000..effdb281e6
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65_se_s/config.h
@@ -0,0 +1,52 @@
+/*
+Copyright 2021 Omar Afzal
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 5
+#define MATRIX_COLS 16
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
+#define MATRIX_COL_PINS { D5, D3, D2, D1, D0, B7, B2, B3, D4, D6, D7, C7, C6, B6, B5, B4 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN F7
+#define RGBLED_NUM 14
+#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 ENCODERS_PAD_A { B0 }
+#define ENCODERS_PAD_B { B1 }
+#define ENCODER_RESOLUTION 4
+
+#define DRIVER_LED_TOTAL 14
diff --git a/keyboards/jkeys_design/gentleman65_se_s/gentleman65_se_s.c b/keyboards/jkeys_design/gentleman65_se_s/gentleman65_se_s.c
new file mode 100644
index 0000000000..1b6133cf2a
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65_se_s/gentleman65_se_s.c
@@ -0,0 +1,32 @@
+
+/* Copyright 2021 Omar Afzal
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "gentleman65_se_s.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_delay(KC_AUDIO_VOL_UP, 10);
+ } else {
+ tap_code_delay(KC_AUDIO_VOL_DOWN, 10);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/jkeys_design/gentleman65_se_s/gentleman65_se_s.h b/keyboards/jkeys_design/gentleman65_se_s/gentleman65_se_s.h
new file mode 100644
index 0000000000..c313e41102
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65_se_s/gentleman65_se_s.h
@@ -0,0 +1,33 @@
+/* Copyright 2021 Omar Afzal
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, 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, K315, \
+ K400, K401, K403, K406, K410, K412, K413, K414, K415 \
+) { \
+ { 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 }, \
+ { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314, K315 }, \
+ { K400, K401, KC_NO, K403, KC_NO, KC_NO, K406, KC_NO, KC_NO, KC_NO, K410, KC_NO, K412, K413, K414, K415 } \
+}
diff --git a/keyboards/jkeys_design/gentleman65_se_s/info.json b/keyboards/jkeys_design/gentleman65_se_s/info.json
new file mode 100644
index 0000000000..477940ffa6
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65_se_s/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Gentleman 65",
+ "manufacturer": "JJ48_24 & Omar Afzal",
+ "url": "https://jkeys.design/products/gentleman-65-suited-edition",
+ "maintainer": "OmarA",
+ "usb": {
+ "vid": "0x00FA",
+ "pid": "0x2322",
+ "device_version": "0.0.1"
+ },
+ "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":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/jkeys_design/gentleman65_se_s/keymaps/default/keymap.c b/keyboards/jkeys_design/gentleman65_se_s/keymaps/default/keymap.c
new file mode 100644
index 0000000000..2123947ac1
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65_se_s/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2021 Omar Afzal
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_BSLS, 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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = 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_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, RGB_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, 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, RGB_HUI, RGB_VAD,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_HUD, RGB_SAI
+ ),
+
+};
diff --git a/keyboards/jkeys_design/gentleman65_se_s/keymaps/via/keymap.c b/keyboards/jkeys_design/gentleman65_se_s/keymaps/via/keymap.c
new file mode 100644
index 0000000000..9f996bb43b
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65_se_s/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/* Copyright 2021 Omar Afzal
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_BSLS, 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, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = 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_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, RGB_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, 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, RGB_HUI, RGB_VAD,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAD, RGB_HUD, RGB_SAI
+ ),
+
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
+
diff --git a/keyboards/jkeys_design/gentleman65_se_s/keymaps/via/rules.mk b/keyboards/jkeys_design/gentleman65_se_s/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65_se_s/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/jkeys_design/gentleman65_se_s/readme.md b/keyboards/jkeys_design/gentleman65_se_s/readme.md
new file mode 100644
index 0000000000..b7c9411701
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65_se_s/readme.md
@@ -0,0 +1,24 @@
+# Gentleman65
+
+![Render](https://cdn.shopify.com/s/files/1/0526/3389/5105/products/render_1080x.png?v=1633234311)
+
+The Gentleman 65 Suited Edition aims to provide high levels of customization, unique features, and end game quality all at an accessible price. The board features a burger top mount for plates and an option for plateless mounting on soldered PCBs. The rear exposed brass weight and the knob add to the board's premium and minimalistic aesthetic, while the board's sound profile is accentuated with precut tape PCB backings.
+
+
+* Keyboard Maintainer: [Omar Afzal](https://github.com/0marA)
+* Hardware Supported: Gentleman 65 SE Solderd PCB for Gentleman 65 Suited Edition
+* Hardware Availability: [Jkeys.Design](https://jkeys.design/)
+
+Getting the board into bootloader mode:
+
+To flash firmware onto this board, you'll need to bring the PCB into bootloader mode. To enter bootloader mode, press the reset button on the back of the PCB twice. The reset button is located in the bottom center near the spacebar switch footprint.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make jkeys_design/gentleman65_se_s:default
+
+Flashing example for this keyboard:
+
+ make jkeys_design/gentleman65_se_s: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/jkeys_design/gentleman65_se_s/rules.mk b/keyboards/jkeys_design/gentleman65_se_s/rules.mk
new file mode 100644
index 0000000000..fceba7b48c
--- /dev/null
+++ b/keyboards/jkeys_design/gentleman65_se_s/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
+RGB_MATRIX_ENABLE = no
+RGB_MATRIX_DRIVER = WS2812
+ENCODER_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/jm60/config.h b/keyboards/jm60/config.h
index 113c6b4dfb..bee9ee0ac0 100644
--- a/keyboards/jm60/config.h
+++ b/keyboards/jm60/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6464
-#define DEVICE_VER 0x0001
-#define MANUFACTURER JMWS
-#define PRODUCT JM60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -40,7 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B11, B10, B2, B1, B0 }
#define MATRIX_COL_PINS { A15, C10, C11, C12, D2, B3, B4, B5, B6, B7, B8, B9, A2, A3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/jm60/info.json b/keyboards/jm60/info.json
index cdb0da4671..5ad1053aa9 100644
--- a/keyboards/jm60/info.json
+++ b/keyboards/jm60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "JM60",
+ "manufacturer": "JMWS",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6464",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/jolofsor/denial75/config.h b/keyboards/jolofsor/denial75/config.h
index 702fee324f..4e7852dbc1 100644
--- a/keyboards/jolofsor/denial75/config.h
+++ b/keyboards/jolofsor/denial75/config.h
@@ -17,13 +17,6 @@
#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
@@ -31,7 +24,6 @@
/* 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
diff --git a/keyboards/jolofsor/denial75/info.json b/keyboards/jolofsor/denial75/info.json
index 71c9651a8a..0224187eff 100644
--- a/keyboards/jolofsor/denial75/info.json
+++ b/keyboards/jolofsor/denial75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "denial75",
+ "manufacturer": "jsor-hpoli",
"url": "",
"maintainer": "jolofsor",
+ "usb": {
+ "vid": "0x4A48",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_denial75_ansi": {
"layout": [
diff --git a/keyboards/jones/v03/config.h b/keyboards/jones/v03/config.h
index 706c1d05e9..2c44bbd6bd 100644
--- a/keyboards/jones/v03/config.h
+++ b/keyboards/jones/v03/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB9DD
-#define PRODUCT_ID 0x175A
-#define DEVICE_VER 0x0030
-#define MANUFACTURER jpskenn
-#define PRODUCT Jones
-
/* key matrix size */
// Same size for Jones' custom Round-Robin matrix.
#define MATRIX_ROWS 11
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Same pins for Jones' custom Round-Robin matrix.
#define MATRIX_ROW_PINS { D4, D7, C7, F1, F4, F5, D6, D5, E6, B0, B1 }
#define MATRIX_COL_PINS { D4, D7, C7, F1, F4, F5, D6, D5, E6, B0, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
// No need to define DIODE_DIRECTION for Jones' custom Round-Robin matrix.
diff --git a/keyboards/jones/v03/info.json b/keyboards/jones/v03/info.json
index c3d0477afc..c2884886b6 100644
--- a/keyboards/jones/v03/info.json
+++ b/keyboards/jones/v03/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Jones",
+ "manufacturer": "jpskenn",
"url": "https://github.com/jpskenn/Jones",
"maintainer": "jpskenn",
+ "usb": {
+ "vid": "0xB9DD",
+ "pid": "0x175A",
+ "device_version": "0.3.0"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/jones/v03/keymaps/default_jp/config.h b/keyboards/jones/v03/keymaps/default_jp/config.h
index aa06121c1c..7545003ac7 100644
--- a/keyboards/jones/v03/keymaps/default_jp/config.h
+++ b/keyboards/jones/v03/keymaps/default_jp/config.h
@@ -21,3 +21,4 @@
// time for long press
#define TAPPING_TERM 200
+#define TAPPING_TERM_PER_KEY
diff --git a/keyboards/jones/v03/keymaps/default_jp/keymap.c b/keyboards/jones/v03/keymaps/default_jp/keymap.c
index 3f5b10208c..bdcb9e88b1 100644
--- a/keyboards/jones/v03/keymaps/default_jp/keymap.c
+++ b/keyboards/jones/v03/keymaps/default_jp/keymap.c
@@ -51,9 +51,18 @@ void ql_reset(qk_tap_dance_state_t *state, void *user_data);
// Tap Dance definitions
qk_tap_dance_action_t tap_dance_actions[] = {
[TD_LSFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS),
- [TD_ESC_NUM] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ql_finished, ql_reset, 275),
+ [TD_ESC_NUM] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ql_finished, ql_reset),
};
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case TD(TD_ESC_NUM):
+ return 275;
+ default:
+ return TAPPING_TERM;
+ }
+}
+
// Defines the keycodes used by our macros in process_record_user
enum custom_keycodes {
MAC = SAFE_RANGE,
@@ -303,7 +312,7 @@ static tap ql_tap_state = {
// Functions that control what our tap dance key does
void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
ql_tap_state.state = cur_dance(state);
- switch(state->keycode) {
+ switch(TAP_DANCE_KEYCODE(state)) {
case TD(TD_ESC_NUM): // ESC key action
switch (ql_tap_state.state) {
case SINGLE_TAP:
@@ -332,7 +341,7 @@ void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
}
void ql_reset(qk_tap_dance_state_t *state, void *user_data) {
- switch(state->keycode) {
+ switch(TAP_DANCE_KEYCODE(state)) {
case TD(TD_ESC_NUM):
// If the key was held down and now is released then switch off the layer
if (ql_tap_state.state == TAP_HOLD) {
diff --git a/keyboards/jones/v03_1/config.h b/keyboards/jones/v03_1/config.h
index 33dd0994a5..9359b0a51b 100644
--- a/keyboards/jones/v03_1/config.h
+++ b/keyboards/jones/v03_1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB9DD
-#define PRODUCT_ID 0x175A
-#define DEVICE_VER 0x0031
-#define MANUFACTURER jpskenn
-#define PRODUCT Jones
-
/* key matrix size */
// Same size for Jones' custom Round-Robin matrix.
#define MATRIX_ROWS 11
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Same pins for Jones' custom Round-Robin matrix.
#define MATRIX_ROW_PINS { D4, D7, C7, F1, F4, F5, D6, D5, E6, B0, B1 }
#define MATRIX_COL_PINS { D4, D7, C7, F1, F4, F5, D6, D5, E6, B0, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
// No need to define DIODE_DIRECTION for Jones' custom Round-Robin matrix.
diff --git a/keyboards/jones/v03_1/info.json b/keyboards/jones/v03_1/info.json
index c3d0477afc..365178b9d5 100644
--- a/keyboards/jones/v03_1/info.json
+++ b/keyboards/jones/v03_1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Jones",
+ "manufacturer": "jpskenn",
"url": "https://github.com/jpskenn/Jones",
"maintainer": "jpskenn",
+ "usb": {
+ "vid": "0xB9DD",
+ "pid": "0x175A",
+ "device_version": "0.3.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/jones/v03_1/keymaps/default_ansi/config.h b/keyboards/jones/v03_1/keymaps/default_ansi/config.h
index 0b51190bbe..ee7b09a90c 100644
--- a/keyboards/jones/v03_1/keymaps/default_ansi/config.h
+++ b/keyboards/jones/v03_1/keymaps/default_ansi/config.h
@@ -21,6 +21,7 @@
// time for long press
#define TAPPING_TERM 200
+#define TAPPING_TERM_PER_KEY
// music map for music-mode
#define MUSIC_MAP
diff --git a/keyboards/jones/v03_1/keymaps/default_ansi/keymap.c b/keyboards/jones/v03_1/keymaps/default_ansi/keymap.c
index 5b1486bb86..a592418c4d 100644
--- a/keyboards/jones/v03_1/keymaps/default_ansi/keymap.c
+++ b/keyboards/jones/v03_1/keymaps/default_ansi/keymap.c
@@ -50,9 +50,18 @@ void ql_reset(qk_tap_dance_state_t *state, void *user_data);
// Tap Dance definitions
qk_tap_dance_action_t tap_dance_actions[] = {
[TD_LSFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS),
- [TD_ESC_NUM] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ql_finished, ql_reset, 275),
+ [TD_ESC_NUM] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ql_finished, ql_reset),
};
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case TD(TD_ESC_NUM):
+ return 275;
+ default:
+ return TAPPING_TERM;
+ }
+}
+
// Defines the keycodes used by our macros in process_record_user
enum custom_keycodes {
MAC = SAFE_RANGE,
@@ -244,7 +253,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
}
if (index == 1) { /* Second encoder, Left side */
- switch(biton32(layer_state)) {
+ switch(get_highest_layer(layer_state)) {
case _LOWER:
if (clockwise) {
rgblight_decrease_hue();
@@ -322,7 +331,7 @@ static tap ql_tap_state = {
// Functions that control what our tap dance key does
void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
ql_tap_state.state = cur_dance(state);
- switch(state->keycode) {
+ switch(TAP_DANCE_KEYCODE(state)) {
case TD(TD_ESC_NUM): // ESC key action
switch (ql_tap_state.state) {
case SINGLE_TAP:
@@ -351,7 +360,7 @@ void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
}
void ql_reset(qk_tap_dance_state_t *state, void *user_data) {
- switch(state->keycode) {
+ switch(TAP_DANCE_KEYCODE(state)) {
case TD(TD_ESC_NUM):
// If the key was held down and now is released then switch off the layer
if (ql_tap_state.state == TAP_HOLD) {
diff --git a/keyboards/jones/v03_1/keymaps/default_jp/config.h b/keyboards/jones/v03_1/keymaps/default_jp/config.h
index 0b51190bbe..ee7b09a90c 100644
--- a/keyboards/jones/v03_1/keymaps/default_jp/config.h
+++ b/keyboards/jones/v03_1/keymaps/default_jp/config.h
@@ -21,6 +21,7 @@
// time for long press
#define TAPPING_TERM 200
+#define TAPPING_TERM_PER_KEY
// music map for music-mode
#define MUSIC_MAP
diff --git a/keyboards/jones/v03_1/keymaps/default_jp/keymap.c b/keyboards/jones/v03_1/keymaps/default_jp/keymap.c
index 436586a721..56f51d56ce 100644
--- a/keyboards/jones/v03_1/keymaps/default_jp/keymap.c
+++ b/keyboards/jones/v03_1/keymaps/default_jp/keymap.c
@@ -51,9 +51,18 @@ void ql_reset(qk_tap_dance_state_t *state, void *user_data);
// Tap Dance definitions
qk_tap_dance_action_t tap_dance_actions[] = {
[TD_LSFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS),
- [TD_ESC_NUM] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ql_finished, ql_reset, 275),
+ [TD_ESC_NUM] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ql_finished, ql_reset),
};
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case TD(TD_ESC_NUM):
+ return 275;
+ default:
+ return TAPPING_TERM;
+ }
+}
+
// Defines the keycodes used by our macros in process_record_user
enum custom_keycodes {
MAC = SAFE_RANGE,
@@ -246,7 +255,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
}
if (index == 1) { /* Second encoder, Left side */
- switch(biton32(layer_state)) {
+ switch(get_highest_layer(layer_state)) {
case _LOWER:
if (clockwise) {
rgblight_decrease_hue();
@@ -324,7 +333,7 @@ static tap ql_tap_state = {
// Functions that control what our tap dance key does
void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
ql_tap_state.state = cur_dance(state);
- switch(state->keycode) {
+ switch(TAP_DANCE_KEYCODE(state)) {
case TD(TD_ESC_NUM): // ESC key action
switch (ql_tap_state.state) {
case SINGLE_TAP:
@@ -353,7 +362,7 @@ void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
}
void ql_reset(qk_tap_dance_state_t *state, void *user_data) {
- switch(state->keycode) {
+ switch(TAP_DANCE_KEYCODE(state)) {
case TD(TD_ESC_NUM):
// If the key was held down and now is released then switch off the layer
if (ql_tap_state.state == TAP_HOLD) {
diff --git a/keyboards/jones/v1/config.h b/keyboards/jones/v1/config.h
index 16610eef4a..0d4ab90a60 100644
--- a/keyboards/jones/v1/config.h
+++ b/keyboards/jones/v1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB9DD
-#define PRODUCT_ID 0x175A
-#define DEVICE_VER 0x0100
-#define MANUFACTURER jpskenn
-#define PRODUCT Jones
-
/* key matrix size */
// Same number for Round-Robin matrix.
#define MATRIX_ROWS 10
diff --git a/keyboards/jones/v1/info.json b/keyboards/jones/v1/info.json
index 6aba4fd74b..e323445fc9 100644
--- a/keyboards/jones/v1/info.json
+++ b/keyboards/jones/v1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Jones",
+ "manufacturer": "jpskenn",
"url": "https://github.com/jpskenn/Jones",
"maintainer": "jpskenn",
+ "usb": {
+ "vid": "0xB9DD",
+ "pid": "0x175A",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/jorne/info.json b/keyboards/jorne/info.json
deleted file mode 100644
index a28af0a320..0000000000
--- a/keyboards/jorne/info.json
+++ /dev/null
@@ -1,240 +0,0 @@
-{
- "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/keymaps/manna-harbour_miryoku/config.h b/keyboards/jorne/keymaps/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..76b24aa99e
--- /dev/null
+++ b/keyboards/jorne/keymaps/manna-harbour_miryoku/config.h
@@ -0,0 +1,21 @@
+// Copyright 2022 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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, XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, 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, \
+ K32, K33, K34, K35, K36, K37 \
+)
diff --git a/keyboards/jorne/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/jorne/keymaps/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..dbab7f9820
--- /dev/null
+++ b/keyboards/jorne/keymaps/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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/jorne/readme.md b/keyboards/jorne/readme.md
index 71c698e67e..77d56b9d51 100644
--- a/keyboards/jorne/readme.md
+++ b/keyboards/jorne/readme.md
@@ -14,7 +14,7 @@ Jorne is essentially [Corne](https://github.com/foostan/crkbd) but with an extra
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`
+* **Keycode in layout**: Press the key mapped to `QK_BOOT`
## Make
diff --git a/keyboards/jorne/rev1/config.h b/keyboards/jorne/rev1/config.h
index 7144d9fe0a..81483f04cc 100644
--- a/keyboards/jorne/rev1/config.h
+++ b/keyboards/jorne/rev1/config.h
@@ -2,14 +2,6 @@
// 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
@@ -17,7 +9,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
diff --git a/keyboards/jorne/rev1/info.json b/keyboards/jorne/rev1/info.json
new file mode 100644
index 0000000000..9e0cf7be41
--- /dev/null
+++ b/keyboards/jorne/rev1/info.json
@@ -0,0 +1,246 @@
+{
+ "keyboard_name": "Jorne",
+ "manufacturer": "joric",
+ "url": "https://github.com/joric/jorne/wiki",
+ "maintainer": "joric",
+ "usb": {
+ "vid": "0x4753",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
+ "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/k34/config.h b/keyboards/k34/config.h
index 4d9910d50d..b7cbe618c2 100644
--- a/keyboards/k34/config.h
+++ b/keyboards/k34/config.h
@@ -5,13 +5,6 @@
#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
@@ -28,7 +21,6 @@
*/
#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
diff --git a/keyboards/k34/info.json b/keyboards/k34/info.json
index 0917e44961..fe80b8b999 100644
--- a/keyboards/k34/info.json
+++ b/keyboards/k34/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "k34",
+ "manufacturer": "jp_smasher",
"url": "https://github.com/wongjingping/k34",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/k34/readme.md b/keyboards/k34/readme.md
index 8f17c7e5de..8576def947 100644
--- a/keyboards/k34/readme.md
+++ b/keyboards/k34/readme.md
@@ -11,7 +11,7 @@ All hardware supported can be found in the [k34 repository](https://github.com/w
## Flashing Instructions
-To enter the bootloader, short the RST and GND pins, or press the key mapped to `RESET`.
+To enter the bootloader, short the RST and GND pins, or press the key mapped to `QK_BOOT`.
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/kabedon/kabedon78s/config.h b/keyboards/kabedon/kabedon78s/config.h
index e0076afed8..fe34ddf67c 100644
--- a/keyboards/kabedon/kabedon78s/config.h
+++ b/keyboards/kabedon/kabedon78s/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B44 //KD
-#define PRODUCT_ID 0x3738 //78
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Kabe_Don
-#define PRODUCT 78S
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
diff --git a/keyboards/kabedon/kabedon78s/info.json b/keyboards/kabedon/kabedon78s/info.json
index beaf71bd14..83668c5458 100644
--- a/keyboards/kabedon/kabedon78s/info.json
+++ b/keyboards/kabedon/kabedon78s/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "KabeDon78s",
+ "keyboard_name": "78S",
+ "manufacturer": "Kabe_Don",
"url": "",
"maintainer": "370490639",
+ "usb": {
+ "vid": "0x4B44",
+ "pid": "0x3738",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kabedon/kabedon980/config.h b/keyboards/kabedon/kabedon980/config.h
index db93dfcf85..ad667ae252 100644
--- a/keyboards/kabedon/kabedon980/config.h
+++ b/keyboards/kabedon/kabedon980/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B44 //KD
-#define PRODUCT_ID 0x3938 //98
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Kabe_Don
-#define PRODUCT 980
-
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 13
@@ -34,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS {D0,D2,F7,B1,B0,D6,C7,D7,B5,B2}
#define MATRIX_COL_PINS {F5,F4,F6,C6,B6,B4,D3,D1,D4,F1,B3,D5,F0}
-#define UNUSED_PINS
#define DYNAMIC_KEYMAP_LAYER_COUNT 3
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/kabedon/kabedon980/info.json b/keyboards/kabedon/kabedon980/info.json
index 5be1ee11dd..879ea537be 100644
--- a/keyboards/kabedon/kabedon980/info.json
+++ b/keyboards/kabedon/kabedon980/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "KabeDon980",
+ "keyboard_name": "980",
+ "manufacturer": "Kabe_Don",
"url": "https://kabedon.taobao.com",
"maintainer": "370490639",
+ "usb": {
+ "vid": "0x4B44",
+ "pid": "0x3938",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kabedon/kabedon98e/config.h b/keyboards/kabedon/kabedon98e/config.h
index a34e99bccd..e5cd98c40b 100644
--- a/keyboards/kabedon/kabedon98e/config.h
+++ b/keyboards/kabedon/kabedon98e/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B44
-#define PRODUCT_ID 0x3935
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Kabe_Don
-#define PRODUCT 98e
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 11
diff --git a/keyboards/kabedon/kabedon98e/info.json b/keyboards/kabedon/kabedon98e/info.json
index de8f975b2d..60a1cd25c6 100644
--- a/keyboards/kabedon/kabedon98e/info.json
+++ b/keyboards/kabedon/kabedon98e/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "KabeDon98E",
+ "keyboard_name": "98e",
+ "manufacturer": "Kabe_Don",
"url": "",
"maintainer": "370490639",
+ "usb": {
+ "vid": "0x4B44",
+ "pid": "0x3935",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kagizaraya/chidori/config.h b/keyboards/kagizaraya/chidori/config.h
index fba0ab1e39..cf9c38b64f 100644
--- a/keyboards/kagizaraya/chidori/config.h
+++ b/keyboards/kagizaraya/chidori/config.h
@@ -19,13 +19,6 @@ 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 0x3942
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Kagizaraya
-#define PRODUCT Chidori
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 6
@@ -46,7 +39,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS \
{ F1, F0, B0 }
*/
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
// #define DIODE_DIRECTION COL2ROW
@@ -160,3 +152,11 @@ 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
+
+/* USB config */
+#define USB_MAX_POWER_CONSUMPTION 100
+#define USB_COUNT_SOF 0
+#define USB_INTR_CFG_SET (1 << ISC01)
+#define USB_INTR_ENABLE_BIT INT0
+#define USB_INTR_PENDING_BIT INTF0
+#define USB_INTR_VECTOR INT0_vect
diff --git a/keyboards/kagizaraya/chidori/info.json b/keyboards/kagizaraya/chidori/info.json
index 9c879c7649..a57b82bf04 100644
--- a/keyboards/kagizaraya/chidori/info.json
+++ b/keyboards/kagizaraya/chidori/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Chidori",
+ "manufacturer": "Kagizaraya",
"url": "",
"maintainer": "ka2hiro",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3942",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kagizaraya/chidori/keymaps/extended/keymap.c b/keyboards/kagizaraya/chidori/keymaps/extended/keymap.c
index 174e9ff2e6..33fa31c261 100644
--- a/keyboards/kagizaraya/chidori/keymaps/extended/keymap.c
+++ b/keyboards/kagizaraya/chidori/keymaps/extended/keymap.c
@@ -129,7 +129,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------' `-----------------------------------------' `-----------------------------------------'
*/
[_ADJUST] = LAYOUT_extended(
- _______, RESET, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, KC_INS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_NLCK, KC_ESC,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, KC_INS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_NLCK, KC_ESC,
KC_CAPS, _______, _______, _______, _______, AG_NORM, AG_SWAP, KC_MINS, KC_EQL, KC_PSCR, KC_SLCK, KC_PAUS, KC_P4, KC_P5, KC_P6, _______, KC_PSLS, KC_TAB,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PENT, KC_PAST, KC_PEQL,
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_P0, _______, KC_PDOT,_______, KC_PMNS, KC_BSPC
diff --git a/keyboards/kagizaraya/chidori/keymaps/oled_sample/keymap.c b/keyboards/kagizaraya/chidori/keymaps/oled_sample/keymap.c
index 78107a18ec..ee96358e81 100644
--- a/keyboards/kagizaraya/chidori/keymaps/oled_sample/keymap.c
+++ b/keyboards/kagizaraya/chidori/keymaps/oled_sample/keymap.c
@@ -141,7 +141,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------' `-----------------------------------------'
*/
[_ADJUST] = LAYOUT(
- _______, RESET, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, KC_INS,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, KC_INS,
KC_CAPS, _______, _______, _______, _______, AG_NORM, AG_SWAP, KC_MINS, KC_EQL, KC_PSCR, KC_SLCK, KC_PAUS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
diff --git a/keyboards/kagizaraya/halberd/config.h b/keyboards/kagizaraya/halberd/config.h
index 085688e335..932c8cac3a 100644
--- a/keyboards/kagizaraya/halberd/config.h
+++ b/keyboards/kagizaraya/halberd/config.h
@@ -18,13 +18,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Kagizaraya
-#define PRODUCT Halberd
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
@@ -41,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D6, D4, D5, E6 }
#define MATRIX_COL_PINS { D7, B4, C7, C6, B6, B5, F7, F6, F5, F4, F1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kagizaraya/halberd/info.json b/keyboards/kagizaraya/halberd/info.json
index cd8ae3b27a..e345972680 100644
--- a/keyboards/kagizaraya/halberd/info.json
+++ b/keyboards/kagizaraya/halberd/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Halberd",
+ "manufacturer": "Kagizaraya",
"url": "",
"maintainer": "ka2hiro",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"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":"Tab", "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":"Tab", "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":"BkSp", "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":"Caps", "x":0, "y":2}, {"label":"-", "x":1, "y":2}, {"label":"=", "x":2, "y":2}, {"label":"\\", "x":3, "y":2}, {"label":"`", "x":4, "y":2}, {"label":"Enter", "x":5, "y":2}, {"label":";", "x":6, "y":2}, {"label":"'", "x":7, "y":2}, {"label":"<", "x":8, "y":2}, {"label":"[", "x":9, "y":2}, {"label":"]", "x":10, "y":2}, {"label":"GUI", "x":2, "y":3}, {"label":"Lower", "x":3, "y":3}, {"label":"Esc", "x":4, "y":3}, {"x":5, "y":3}, {"label":"Shift", "x":6, "y":3}, {"label":"Raise", "x":7, "y":3}, {"label":"Alt", "x":8, "y":3}]
diff --git a/keyboards/kagizaraya/halberd/keymaps/right_modifiers/keymap.c b/keyboards/kagizaraya/halberd/keymaps/right_modifiers/keymap.c
index f74eef4541..d75b5b6079 100644
--- a/keyboards/kagizaraya/halberd/keymaps/right_modifiers/keymap.c
+++ b/keyboards/kagizaraya/halberd/keymaps/right_modifiers/keymap.c
@@ -105,7 +105,7 @@ 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, RGB_RMOD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,
- RESET, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, KC_MPRV, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______,
+ QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, KC_MPRV, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______,
_______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/kagizaraya/scythe/config.h b/keyboards/kagizaraya/scythe/config.h
index fb75e32b62..1df0fb6593 100644
--- a/keyboards/kagizaraya/scythe/config.h
+++ b/keyboards/kagizaraya/scythe/config.h
@@ -18,13 +18,6 @@ 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 0x3941
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Kagizaraya
-#define PRODUCT Scythe
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
@@ -41,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F7, F6, F5, F4, D5 }
#define MATRIX_COL_PINS { D6, D7, B4, B5, B6, C6, C7 }
-#define UNUSED_PINS
#define SOFT_SERIAL_PIN D0
diff --git a/keyboards/kagizaraya/scythe/info.json b/keyboards/kagizaraya/scythe/info.json
index 23151ea841..8b91a851ec 100644
--- a/keyboards/kagizaraya/scythe/info.json
+++ b/keyboards/kagizaraya/scythe/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Scythe",
+ "manufacturer": "Kagizaraya",
"url": "",
"maintainer": "ka2hiro",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3941",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"Esc", "x":2, "y":0}, {"label":"1", "x":3, "y":0}, {"label":"2", "x":4, "y":0}, {"label":"3", "x":5, "y":0}, {"label":"4", "x":6, "y":0}, {"label":"5", "x":7, "y":0}, {"label":"_", "x":8, "y":0}, {"label":"+", "x":9.5, "y":0}, {"label":"6", "x":10.5, "y":0}, {"label":"7", "x":11.5, "y":0}, {"label":"8", "x":12.5, "y":0}, {"label":"9", "x":13.5, "y":0}, {"label":"0", "x":14.5, "y":0}, {"label":"\\", "x":15.5, "y":0}, {"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":"{", "x":7.75, "y":1}, {"label":"}", "x":9.75, "y":1}, {"label":"Y", "x":10.75, "y":1}, {"label":"U", "x":11.75, "y":1}, {"label":"I", "x":12.75, "y":1}, {"label":"O", "x":13.75, "y":1}, {"label":"P", "x":14.75, "y":1}, {"label":"Backace", "x":15.75, "y":1, "w":1.5}, {"label":"Control", "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":"~", "x":7.5, "y":2}, {"label":"\"", "x":10, "y":2}, {"label":"H", "x":11, "y":2}, {"label":"J", "x":12, "y":2}, {"label":"K", "x":13, "y":2}, {"label":"L", "x":14, "y":2}, {"label":":", "x":15, "y":2}, {"label":"Return", "x":16, "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":"Caps", "x":7.25, "y":3}, {"label":"Del", "x":10.25, "y":3}, {"label":"N", "x":11.25, "y":3}, {"label":"M", "x":12.25, "y":3}, {"label":"<", "x":13.25, "y":3}, {"label":">", "x":14.25, "y":3}, {"label":"?", "x":15.25, "y":3}, {"label":"Shift", "x":16.25, "y":3, "w":1.75}, {"label":"Fn", "x":18, "y":3}, {"label":"", "x":2.75, "y":4, "w":1.25}, {"label":"", "x":4, "y":4, "w":1.25}, {"label":"Fn", "x":5.25, "y":4, "w":1.25}, {"x":6.5, "y":4, "w":2}, {"x":10, "y":4, "w":2}, {"label":"Fn", "x":12, "y":4, "w":1.25}, {"label":"", "x":13.25, "y":4, "w":1.25}, {"label":"", "x":14.5, "y":4, "w":1.25}]
diff --git a/keyboards/kagizaraya/scythe/keymaps/forties/keymap.c b/keyboards/kagizaraya/scythe/keymaps/forties/keymap.c
index 4d2fc88243..ba1c970cf7 100644
--- a/keyboards/kagizaraya/scythe/keymaps/forties/keymap.c
+++ b/keyboards/kagizaraya/scythe/keymaps/forties/keymap.c
@@ -142,7 +142,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_F10, KC_F12, BL_TOGG, _______, BL_INC , BL_DEC , _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______,
- _______, RESET, _______, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, _______, KC_MPRV, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______,
+ _______, QK_BOOT, _______, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, _______, KC_MPRV, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/kakunpc/angel17/alpha/config.h b/keyboards/kakunpc/angel17/alpha/config.h
index 192464c216..ae74b25e1a 100644
--- a/keyboards/kakunpc/angel17/alpha/config.h
+++ b/keyboards/kakunpc/angel17/alpha/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER kakunpc
-#define PRODUCT angel17
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 5
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kakunpc/angel17/info.json b/keyboards/kakunpc/angel17/info.json
index 24a6c6be08..f3532f8fb6 100644
--- a/keyboards/kakunpc/angel17/info.json
+++ b/keyboards/kakunpc/angel17/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "angel17",
+ "manufacturer": "kakunpc",
"url": "https://kakunpc.booth.pm/",
"maintainer": "kakunpc",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_5x4": {
"layout": [
diff --git a/keyboards/kakunpc/angel17/rev1/config.h b/keyboards/kakunpc/angel17/rev1/config.h
index f042a089c4..0d5f8d597f 100644
--- a/keyboards/kakunpc/angel17/rev1/config.h
+++ b/keyboards/kakunpc/angel17/rev1/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER kakunpc
-#define PRODUCT angel17
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 5
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kakunpc/angel64/alpha/config.h b/keyboards/kakunpc/angel64/alpha/config.h
index d2057266ce..796bd9dc51 100644
--- a/keyboards/kakunpc/angel64/alpha/config.h
+++ b/keyboards/kakunpc/angel64/alpha/config.h
@@ -19,13 +19,6 @@ 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 0x0A64
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kakunpc
-#define PRODUCT angel64
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 6
@@ -36,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
-#define UNUSED_PINS
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
diff --git a/keyboards/kakunpc/angel64/alpha/info.json b/keyboards/kakunpc/angel64/alpha/info.json
index 6fceff4490..a73004f092 100644
--- a/keyboards/kakunpc/angel64/alpha/info.json
+++ b/keyboards/kakunpc/angel64/alpha/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "angel64_alpha",
+ "keyboard_name": "angel64 alpha",
+ "manufacturer": "kakunpc",
"url": "https://kakunpc.booth.pm/",
"maintainer": "kakunpc",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0A64",
+ "device_version": "0.0.1"
+ },
"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":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", "x":13, "y":0}, {"label":"Q", "x":0, "y":1, "w":1.5}, {"label":"W", "x":1.5, "y":1}, {"label":"E", "x":2.5, "y":1}, {"label":"R", "x":3.5, "y":1}, {"label":"T", "x":4.5, "y":1}, {"label":"Y", "x":5.5, "y":1}, {"label":"U", "x":6.5, "y":1}, {"label":"I", "x":7.5, "y":1}, {"label":"O", "x":8.5, "y":1}, {"label":"P", "x":9.5, "y":1}, {"label":"[", "x":10.5, "y":1}, {"label":"]", "x":11.5, "y":1}, {"label":"|", "x":12.5, "y":1, "w":1.5}, {"label":"Ctrl", "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":"Enter", "x":12, "y":2, "w":2}, {"label":"Shift", "x":0, "y":3, "w":1.5}, {"label":"Z", "x":1.5, "y":3}, {"label":"X", "x":2.5, "y":3}, {"label":"C", "x":3.5, "y":3}, {"label":"V", "x":4.5, "y":3}, {"label":"B", "x":5.5, "y":3}, {"label":"N", "x":6.5, "y":3}, {"label":"M", "x":7.5, "y":3}, {"label":"<", "x":8.5, "y":3}, {"label":">", "x":9.5, "y":3}, {"label":"?", "x":10.5, "y":3}, {"label":"\u2191", "x":11.5, "y":3}, {"label":"Fn", "x":12.5, "y":3, "w":1.5}, {"label":"Caps", "x":0, "y":4}, {"label":"Alt", "x":1, "y":4}, {"label":"Start", "x":2, "y":4, "w":1.5}, {"label":"Ctrl", "x":3.5, "y":4, "w":1.5}, {"label":"Space", "x":5, "y":4, "w":2}, {"label":"Ctrl", "x":7, "y":4, "w":1.5}, {"label":"Alt", "x":8.5, "y":4, "w":1.5}, {"label":"\u2190", "x":10, "y":4}, {"label":"\u2193", "x":11, "y":4}, {"label":"\u2192", "x":12, "y":4}, {"label":"Alt", "x":13, "y":4}]
diff --git a/keyboards/kakunpc/angel64/alpha/keymaps/default/keymap.c b/keyboards/kakunpc/angel64/alpha/keymaps/default/keymap.c
index 0f2a8dada1..92dfa7da6e 100644
--- a/keyboards/kakunpc/angel64/alpha/keymaps/default/keymap.c
+++ b/keyboards/kakunpc/angel64/alpha/keymaps/default/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#ifdef OLED_ENABLE
bool oled_task_user(void) {
oled_write_P(PSTR("Layer: "), false);
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case BASE:
oled_write_P(PSTR("Default\n"), false);
break;
diff --git a/keyboards/kakunpc/angel64/rev1/config.h b/keyboards/kakunpc/angel64/rev1/config.h
index d2057266ce..796bd9dc51 100644
--- a/keyboards/kakunpc/angel64/rev1/config.h
+++ b/keyboards/kakunpc/angel64/rev1/config.h
@@ -19,13 +19,6 @@ 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 0x0A64
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kakunpc
-#define PRODUCT angel64
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 6
@@ -36,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
-#define UNUSED_PINS
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
diff --git a/keyboards/kakunpc/angel64/rev1/info.json b/keyboards/kakunpc/angel64/rev1/info.json
index fe6b4f5e05..688674c8c7 100644
--- a/keyboards/kakunpc/angel64/rev1/info.json
+++ b/keyboards/kakunpc/angel64/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "angel64_rev1",
+ "keyboard_name": "angel64 rev1",
+ "manufacturer": "kakunpc",
"url": "https://kakunpc.booth.pm/",
"maintainer": "kakunpc",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0A64",
+ "device_version": "0.0.1"
+ },
"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, "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":2}, {"label":"A", "x":2, "y":2}, {"label":"S", "x":3, "y":2}, {"label":"D", "x":4, "y":2}, {"label":"F", "x":5, "y":2}, {"label":"G", "x":6, "y":2}, {"label":"H", "x":7, "y":2}, {"label":"J", "x":8, "y":2}, {"label":"K", "x":9, "y":2}, {"label":"L", "x":10, "y":2}, {"label":":", "x":11, "y":2}, {"label":"\"", "x":12, "y":2}, {"label":"Enter", "x":13, "y":2, "w":2}, {"label":"Shift", "x":0, "y":3, "w":2.5}, {"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.5}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Alt", "x":1.25, "y":4, "w":1.5}, {"label":"Win", "x":2.75, "y":4, "w":1.5}, {"x":4.25, "y":4}, {"x":5.25, "y":4, "w":1.5}, {"x":6.75, "y":4, "w":1.5}, {"x":8.25, "y":4, "w":1.5}, {"x":9.75, "y":4}, {"label":"Alt", "x":10.75, "y":4, "w":1.5}, {"label":"Menu", "x":12.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/kakunpc/angel64/rev1/keymaps/kakunpc/keymap.c b/keyboards/kakunpc/angel64/rev1/keymaps/kakunpc/keymap.c
index 6c5184c1b3..601bf5f02f 100644
--- a/keyboards/kakunpc/angel64/rev1/keymaps/kakunpc/keymap.c
+++ b/keyboards/kakunpc/angel64/rev1/keymaps/kakunpc/keymap.c
@@ -175,7 +175,7 @@ void matrix_scan_user(void) {
#ifdef OLED_ENABLE
bool oled_task_user(void) {
oled_write_P(PSTR("Layer: "), false);
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case BASE:
oled_write_P(PSTR("Default\n"), false);
break;
diff --git a/keyboards/kakunpc/business_card/alpha/config.h b/keyboards/kakunpc/business_card/alpha/config.h
index e7b5f7147d..9673d0328e 100644
--- a/keyboards/kakunpc/business_card/alpha/config.h
+++ b/keyboards/kakunpc/business_card/alpha/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER kakunpc
-#define PRODUCT business_card
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B2, B6 }
#define MATRIX_COL_PINS { E6, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kakunpc/business_card/alpha/info.json b/keyboards/kakunpc/business_card/alpha/info.json
index 57f0fbd9a6..efa3ad965a 100644
--- a/keyboards/kakunpc/business_card/alpha/info.json
+++ b/keyboards/kakunpc/business_card/alpha/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "business_card alpha",
+ "manufacturer": "kakunpc",
"url": "",
"maintainer": "kakunpc",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kakunpc/business_card/beta/config.h b/keyboards/kakunpc/business_card/beta/config.h
index 2bee5f5337..3f78333468 100644
--- a/keyboards/kakunpc/business_card/beta/config.h
+++ b/keyboards/kakunpc/business_card/beta/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER kakunpc
-#define PRODUCT business_card
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 2
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B3, B2, B6 }
#define MATRIX_COL_PINS { B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kakunpc/business_card/beta/info.json b/keyboards/kakunpc/business_card/beta/info.json
index 58f2a5b20d..87c8c07930 100644
--- a/keyboards/kakunpc/business_card/beta/info.json
+++ b/keyboards/kakunpc/business_card/beta/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "business_card beta",
+ "manufacturer": "kakunpc",
"url": "",
"maintainer": "kakunpc",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kakunpc/choc_taro/config.h b/keyboards/kakunpc/choc_taro/config.h
index e81abe07a6..5ccbbee0cd 100644
--- a/keyboards/kakunpc/choc_taro/config.h
+++ b/keyboards/kakunpc/choc_taro/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter
- VID & PID are lisenced from microchip sublisence program, Don't use other project! */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEB60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kakunpc
-#define PRODUCT choc_taro
-
/* key matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 5
@@ -42,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4 }
-#define UNUSED_PINS
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
diff --git a/keyboards/kakunpc/choc_taro/info.json b/keyboards/kakunpc/choc_taro/info.json
index 3a193ee05e..d08b6a093d 100644
--- a/keyboards/kakunpc/choc_taro/info.json
+++ b/keyboards/kakunpc/choc_taro/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "choc_taro",
+ "manufacturer": "kakunpc",
"url": "https://kakunpc.booth.pm/",
"maintainer": "kakunpc",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEB60",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kakunpc/rabbit_capture_plan/config.h b/keyboards/kakunpc/rabbit_capture_plan/config.h
index a115454fcc..89aaf90ee3 100644
--- a/keyboards/kakunpc/rabbit_capture_plan/config.h
+++ b/keyboards/kakunpc/rabbit_capture_plan/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter
- VID & PID are lisenced from microchip sublisence program, Don't use other project! */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEB59
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kakunpc
-#define PRODUCT rabbit_capture_plan
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -43,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kakunpc/rabbit_capture_plan/info.json b/keyboards/kakunpc/rabbit_capture_plan/info.json
index 4a660cf85e..d587ec1797 100644
--- a/keyboards/kakunpc/rabbit_capture_plan/info.json
+++ b/keyboards/kakunpc/rabbit_capture_plan/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "rabbit_capture_plan",
+ "manufacturer": "kakunpc",
"url": "https://kakunpc.booth.pm/",
"maintainer": "kakunpc",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEB59",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kakunpc/suihankey/alpha/config.h b/keyboards/kakunpc/suihankey/alpha/config.h
index 3d821566ae..2d20aa16e9 100644
--- a/keyboards/kakunpc/suihankey/alpha/config.h
+++ b/keyboards/kakunpc/suihankey/alpha/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER kakunpc
-#define PRODUCT Suihankey
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 5
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4 }
-#define UNUSED_PINS
// #define USE_I2C
// #undef USE_SERIAL
diff --git a/keyboards/kakunpc/suihankey/alpha/info.json b/keyboards/kakunpc/suihankey/alpha/info.json
index 70029e17c9..299c847aab 100644
--- a/keyboards/kakunpc/suihankey/alpha/info.json
+++ b/keyboards/kakunpc/suihankey/alpha/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "suihankey",
+ "keyboard_name": "Suihankey",
+ "manufacturer": "kakunpc",
"url": "https://kakunpc.booth.pm/",
"maintainer": "kakunpc",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kakunpc/suihankey/alpha/keymaps/default/keymap.c b/keyboards/kakunpc/suihankey/alpha/keymaps/default/keymap.c
index b682f0f15d..d937b68813 100644
--- a/keyboards/kakunpc/suihankey/alpha/keymaps/default/keymap.c
+++ b/keyboards/kakunpc/suihankey/alpha/keymaps/default/keymap.c
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#ifdef OLED_ENABLE
bool oled_task_user(void) {
oled_write_P(PSTR("Layer: "), false);
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case BASE:
oled_write_P(PSTR("Default\n"), false);
break;
diff --git a/keyboards/kakunpc/suihankey/rev1/config.h b/keyboards/kakunpc/suihankey/rev1/config.h
index 106cfc2c3b..a1e7183124 100644
--- a/keyboards/kakunpc/suihankey/rev1/config.h
+++ b/keyboards/kakunpc/suihankey/rev1/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER kakunpc
-#define PRODUCT Suihankey
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
#define MATRIX_COL_PINS { F4, F5, F6, F7 }
-#define UNUSED_PINS
//#define USE_I2C
//#undef USE_SERIAL
diff --git a/keyboards/kakunpc/suihankey/rev1/info.json b/keyboards/kakunpc/suihankey/rev1/info.json
index 70029e17c9..299c847aab 100644
--- a/keyboards/kakunpc/suihankey/rev1/info.json
+++ b/keyboards/kakunpc/suihankey/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "suihankey",
+ "keyboard_name": "Suihankey",
+ "manufacturer": "kakunpc",
"url": "https://kakunpc.booth.pm/",
"maintainer": "kakunpc",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kakunpc/suihankey/rev1/keymaps/default/keymap.c b/keyboards/kakunpc/suihankey/rev1/keymaps/default/keymap.c
index b682f0f15d..d937b68813 100644
--- a/keyboards/kakunpc/suihankey/rev1/keymaps/default/keymap.c
+++ b/keyboards/kakunpc/suihankey/rev1/keymaps/default/keymap.c
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#ifdef OLED_ENABLE
bool oled_task_user(void) {
oled_write_P(PSTR("Layer: "), false);
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case BASE:
oled_write_P(PSTR("Default\n"), false);
break;
diff --git a/keyboards/kakunpc/suihankey/split/alpha/config.h b/keyboards/kakunpc/suihankey/split/alpha/config.h
index 4131283166..b58b370e66 100644
--- a/keyboards/kakunpc/suihankey/split/alpha/config.h
+++ b/keyboards/kakunpc/suihankey/split/alpha/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER kakunpc
-#define PRODUCT Suihankey
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 5
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4 }
-#define UNUSED_PINS
#define USE_I2C
#undef USE_SERIAL
diff --git a/keyboards/kakunpc/suihankey/split/info.json b/keyboards/kakunpc/suihankey/split/info.json
index 2f40949f6b..c440c905fa 100644
--- a/keyboards/kakunpc/suihankey/split/info.json
+++ b/keyboards/kakunpc/suihankey/split/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "suihankey_split",
+ "keyboard_name": "Suihankey",
+ "manufacturer": "kakunpc",
"url": "https://kakunpc.booth.pm/",
"maintainer": "kakunpc",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x5_3": {
"layout": [
diff --git a/keyboards/kakunpc/suihankey/split/rev1/config.h b/keyboards/kakunpc/suihankey/split/rev1/config.h
index 83dc587e57..14b5b2ad9d 100644
--- a/keyboards/kakunpc/suihankey/split/rev1/config.h
+++ b/keyboards/kakunpc/suihankey/split/rev1/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER kakunpc
-#define PRODUCT Suihankey
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
#define MATRIX_COL_PINS { F4, F5, F6, F7 }
-#define UNUSED_PINS
#define USE_I2C
#undef USE_SERIAL
diff --git a/keyboards/kakunpc/thedogkeyboard/config.h b/keyboards/kakunpc/thedogkeyboard/config.h
index fdf0336f5f..a0cfbc6405 100644
--- a/keyboards/kakunpc/thedogkeyboard/config.h
+++ b/keyboards/kakunpc/thedogkeyboard/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER kakunpc
-#define PRODUCT thedogkeyboard
-
/* key matrix size */
#define MATRIX_ROWS 20
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, B3, B2, B6, B4, B5 }
#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6 }
-#define UNUSED_PINS
/*
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
diff --git a/keyboards/kakunpc/thedogkeyboard/info.json b/keyboards/kakunpc/thedogkeyboard/info.json
index df6cc6ffdc..5712db3d1b 100644
--- a/keyboards/kakunpc/thedogkeyboard/info.json
+++ b/keyboards/kakunpc/thedogkeyboard/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "TheDogKeyboard",
+ "manufacturer": "kakunpc",
"url": "https://kakunpc.booth.pm/",
"maintainer": "kakunpc",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"1", "x":0, "y":0}, {"label":"7", "x":2, "y":0}, {"label":"13", "x":3, "y":0}, {"label":"19", "x":4, "y":0}, {"label":"24", "x":5, "y":0}, {"label":"29", "x":6.5, "y":0}, {"label":"35", "x":7.5, "y":0}, {"label":"40", "x":8.5, "y":0}, {"label":"45", "x":9.5, "y":0}, {"label":"50", "x":11, "y":0}, {"label":"56", "x":12, "y":0}, {"label":"62", "x":13, "y":0}, {"label":"66", "x":14, "y":0}, {"label":"70", "x":15.25, "y":0}, {"label":"76", "x":16.25, "y":0}, {"label":"82", "x":17.25, "y":0}, {"label":"2", "x":0, "y":1.5}, {"label":"8", "x":1, "y":1.5}, {"label":"14", "x":2, "y":1.5}, {"label":"20", "x":3, "y":1.5}, {"label":"25", "x":4, "y":1.5}, {"label":"30", "x":5, "y":1.5}, {"label":"36", "x":6, "y":1.5}, {"label":"41", "x":7, "y":1.5}, {"label":"46", "x":8, "y":1.5}, {"label":"51", "x":9, "y":1.5}, {"label":"57", "x":10, "y":1.5}, {"label":"63", "x":11, "y":1.5}, {"label":"67", "x":12, "y":1.5}, {"label":"71", "x":13, "y":1.5, "w":2}, {"label":"77", "x":15.25, "y":1.5}, {"label":"84", "x":16.25, "y":1.5}, {"label":"83", "x":17.25, "y":1.5}, {"label":"88", "x":18.5, "y":1.5}, {"label":"93", "x":19.5, "y":1.5}, {"label":"97", "x":20.5, "y":1.5}, {"label":"102", "x":21.5, "y":1.5}, {"label":"3", "x":0, "y":2.5, "w":1.5}, {"label":"9", "x":1.5, "y":2.5}, {"label":"15", "x":2.5, "y":2.5}, {"label":"21", "x":3.5, "y":2.5}, {"label":"26", "x":4.5, "y":2.5}, {"label":"31", "x":5.5, "y":2.5}, {"label":"37", "x":6.5, "y":2.5}, {"label":"42", "x":7.5, "y":2.5}, {"label":"47", "x":8.5, "y":2.5}, {"label":"52", "x":9.5, "y":2.5}, {"label":"58", "x":10.5, "y":2.5}, {"label":"64", "x":11.5, "y":2.5}, {"label":"68", "x":12.5, "y":2.5}, {"label":"72", "x":13.5, "y":2.5, "w":1.5}, {"label":"78", "x":15.25, "y":2.5}, {"label":"86", "x":16.25, "y":2.5}, {"label":"85", "x":17.25, "y":2.5}, {"label":"89", "x":18.5, "y":2.5}, {"label":"94", "x":19.5, "y":2.5}, {"label":"98", "x":20.5, "y":2.5}, {"label":"103", "x":21.5, "y":2.5}, {"label":"4", "x":0, "y":3.5, "w":1.75}, {"label":"10", "x":1.75, "y":3.5}, {"label":"16", "x":2.75, "y":3.5}, {"label":"22", "x":3.75, "y":3.5}, {"label":"27", "x":4.75, "y":3.5}, {"label":"32", "x":5.75, "y":3.5}, {"label":"38", "x":6.75, "y":3.5}, {"label":"43", "x":7.75, "y":3.5}, {"label":"48", "x":8.75, "y":3.5}, {"label":"53", "x":9.75, "y":3.5}, {"label":"59", "x":10.75, "y":3.5}, {"label":"65", "x":11.75, "y":3.5}, {"label":"73", "x":12.75, "y":3.5, "w":2.25}, {"label":"90", "x":18.5, "y":3.5}, {"label":"95", "x":19.5, "y":3.5}, {"label":"99", "x":20.5, "y":3.5}, {"label":"110", "x":21.5, "y":3.5}, {"label":"5", "x":0, "y":4.5, "w":2.25}, {"label":"11", "x":2.25, "y":4.5}, {"label":"17", "x":3.25, "y":4.5}, {"label":"23", "x":4.25, "y":4.5}, {"label":"28", "x":5.25, "y":4.5}, {"label":"33", "x":6.25, "y":4.5}, {"label":"39", "x":7.25, "y":4.5}, {"label":"44", "x":8.25, "y":4.5}, {"label":"49", "x":9.25, "y":4.5}, {"label":"54", "x":10.25, "y":4.5}, {"label":"60", "x":11.25, "y":4.5}, {"label":"74", "x":12.25, "y":4.5, "w":2.75}, {"label":"87", "x":16.25, "y":4.5}, {"label":"91", "x":18.5, "y":4.5}, {"label":"96", "x":19.5, "y":4.5}, {"label":"100", "x":20.5, "y":4.5}, {"label":"104", "x":21.5, "y":4.5}, {"label":"6", "x":0, "y":5.5, "w":1.25}, {"label":"12", "x":1.25, "y":5.5, "w":1.25}, {"label":"18", "x":2.5, "y":5.5, "w":1.25}, {"label":"105", "x":3.75, "y":5.5, "w":1.25}, {"label":"106", "x":5, "y":5.5, "w":1.25}, {"label":"34", "x":6.25, "y":5.5, "w":1.25}, {"label":"107", "x":7.5, "y":5.5, "w":1.25}, {"label":"108", "x":8.75, "y":5.5, "w":1.25}, {"label":"55", "x":10, "y":5.5, "w":1.25}, {"label":"61", "x":11.25, "y":5.5, "w":1.25}, {"label":"69", "x":12.5, "y":5.5, "w":1.25}, {"label":"75", "x":13.75, "y":5.5, "w":1.25}, {"label":"79", "x":15.25, "y":5.5}, {"label":"80", "x":16.25, "y":5.5}, {"label":"81", "x":17.25, "y":5.5}, {"label":"92", "x":18.5, "y":5.5}, {"label":"109", "x":19.5, "y":5.5}, {"label":"101", "x":20.5, "y":5.5}, {"label":"111", "x":21.5, "y":5.5}]
diff --git a/keyboards/kapcave/arya/config.h b/keyboards/kapcave/arya/config.h
index c6b6c61cf5..32bc9f3aa5 100644
--- a/keyboards/kapcave/arya/config.h
+++ b/keyboards/kapcave/arya/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B43
-#define PRODUCT_ID 0x4152
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KapCave
-#define PRODUCT Arya
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 8
diff --git a/keyboards/kapcave/arya/info.json b/keyboards/kapcave/arya/info.json
index 72ee2e1d74..8efa84b8b0 100644
--- a/keyboards/kapcave/arya/info.json
+++ b/keyboards/kapcave/arya/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Arya",
+ "manufacturer": "KapCave",
"url": "https://kapcave.com/products/arya",
"maintainer": "nachie",
+ "usb": {
+ "vid": "0x4B43",
+ "pid": "0x4152",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/kapcave/gskt00/config.h b/keyboards/kapcave/gskt00/config.h
index 91c34182e7..5a77496032 100755
--- a/keyboards/kapcave/gskt00/config.h
+++ b/keyboards/kapcave/gskt00/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B43
-#define PRODUCT_ID 0x6061
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KapCave
-#define PRODUCT GSKT00
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
@@ -32,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { F1, D1, D2, D4, D6, F7, B0, F4 }
#define MATRIX_COL_PINS { F6, D7, F5, C7, B4, C6, B6, B5 }
-#define UNUSED_PINS
#define BOOTMAGIC_LITE_ROW 3
#define BOOTMAGIC_LITE_COLUMN 6
diff --git a/keyboards/kapcave/gskt00/info.json b/keyboards/kapcave/gskt00/info.json
index ba1455fae9..5c011e4e1b 100644
--- a/keyboards/kapcave/gskt00/info.json
+++ b/keyboards/kapcave/gskt00/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GSKT-00",
+ "manufacturer": "KapCave",
"url": "https://kapcave.com/products/gskt-00-pcb-usb-c",
"maintainer": "nachie",
+ "usb": {
+ "vid": "0x4B43",
+ "pid": "0x6061",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_tsangan": {
"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, "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}, {"x":4, "y":4, "w":7}, {"label":"Alt", "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/kapcave/gskt00/keymaps/nachie/keymap.c b/keyboards/kapcave/gskt00/keymaps/nachie/keymap.c
index 8606d24841..d1b02d00bf 100755
--- a/keyboards/kapcave/gskt00/keymaps/nachie/keymap.c
+++ b/keyboards/kapcave/gskt00/keymaps/nachie/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* FUNCTION */
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, RESET, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_BSPC,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, KC_BSPC,
KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS,
KC_CAPS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, KC_TRNS, RGB_TOG)
diff --git a/keyboards/kapcave/paladin64/config.h b/keyboards/kapcave/paladin64/config.h
index 7c3d1a0fa1..4ab6863c4f 100755
--- a/keyboards/kapcave/paladin64/config.h
+++ b/keyboards/kapcave/paladin64/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B43
-#define PRODUCT_ID 0x5036
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KapCave
-#define PRODUCT paladin64
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
@@ -91,7 +84,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { C6, B6, B5, B4, D7, D6, B0, D3 }
#define MATRIX_COL_PINS { C7, F7, F6, F5, F4, F1, F0, D1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kapcave/paladin64/info.json b/keyboards/kapcave/paladin64/info.json
index 207010c24e..c207cbb062 100644
--- a/keyboards/kapcave/paladin64/info.json
+++ b/keyboards/kapcave/paladin64/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Paladin64",
+ "manufacturer": "KapCave",
"url": "https://kapcave.com/products/paladin64-pcb",
"maintainer": "nachie",
+ "usb": {
+ "vid": "0x4B43",
+ "pid": "0x5036",
+ "device_version": "0.0.1"
+ },
"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}, {"x":13, "y":0}, {"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":1.25}, {"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}, {"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":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/kapcave/paladinpad/config.h b/keyboards/kapcave/paladinpad/config.h
index 2b7d6e363a..5b36ee1113 100644
--- a/keyboards/kapcave/paladinpad/config.h
+++ b/keyboards/kapcave/paladinpad/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B43
-#define PRODUCT_ID 0x5050
-#define MANUFACTURER KapCave
-#define PRODUCT paladinpad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
diff --git a/keyboards/kapcave/paladinpad/info.json b/keyboards/kapcave/paladinpad/info.json
index 7d1afccf60..23aacf4456 100644
--- a/keyboards/kapcave/paladinpad/info.json
+++ b/keyboards/kapcave/paladinpad/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "PaladinPad",
+ "manufacturer": "KapCave",
"url": "https://kapcave.com/products/paladinpad-pcb",
"maintainer": "nachie",
+ "usb": {
+ "vid": "0x4B43",
+ "pid": "0x5050"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [
diff --git a/keyboards/kapcave/paladinpad/keymaps/aek/keymap.c b/keyboards/kapcave/paladinpad/keymaps/aek/keymap.c
index 79c3baae44..bb4ca32cf0 100644
--- a/keyboards/kapcave/paladinpad/keymaps/aek/keymap.c
+++ b/keyboards/kapcave/paladinpad/keymaps/aek/keymap.c
@@ -33,6 +33,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS,
RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, RESET, KC_NLCK)
+ KC_TRNS, QK_BOOT, KC_NLCK)
};
diff --git a/keyboards/kapcave/paladinpad/keymaps/ortho/keymap.c b/keyboards/kapcave/paladinpad/keymaps/ortho/keymap.c
index a65b53b341..e2a43886ec 100644
--- a/keyboards/kapcave/paladinpad/keymaps/ortho/keymap.c
+++ b/keyboards/kapcave/paladinpad/keymaps/ortho/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_NLCK)
+ KC_TRNS, KC_TRNS, QK_BOOT, KC_NLCK)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/kapcave/paladinpad/rev1/config.h b/keyboards/kapcave/paladinpad/rev1/config.h
index 84af56ec25..5a59246355 100644
--- a/keyboards/kapcave/paladinpad/rev1/config.h
+++ b/keyboards/kapcave/paladinpad/rev1/config.h
@@ -18,8 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define DEVICE_VER 0x0001
-
/* key matrix pins */
#define MATRIX_ROW_PINS { C7, B6, B4, D7, D6 }
#define MATRIX_COL_PINS { D4, D5, D3, B7 }
diff --git a/keyboards/kapcave/paladinpad/rev1/info.json b/keyboards/kapcave/paladinpad/rev1/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/kapcave/paladinpad/rev2/config.h b/keyboards/kapcave/paladinpad/rev2/config.h
index a27ac03ab1..a04bfcd46e 100644
--- a/keyboards/kapcave/paladinpad/rev2/config.h
+++ b/keyboards/kapcave/paladinpad/rev2/config.h
@@ -18,8 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define DEVICE_VER 0x0002
-
/* key matrix pins */
#define MATRIX_ROW_PINS { F4, F6, D7, B4, D6 }
#define MATRIX_COL_PINS { F7, F5, D3, B7 }
diff --git a/keyboards/kapcave/paladinpad/rev2/info.json b/keyboards/kapcave/paladinpad/rev2/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/kapcave/paladinpad/rev2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/kapl/info.json b/keyboards/kapl/info.json
deleted file mode 100644
index 67e5470288..0000000000
--- a/keyboards/kapl/info.json
+++ /dev/null
@@ -1,85 +0,0 @@
-{
- "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/readme.md b/keyboards/kapl/readme.md
index c42a5d8947..4ccfb8dcba 100644
--- a/keyboards/kapl/readme.md
+++ b/keyboards/kapl/readme.md
@@ -24,4 +24,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/kapl/rev1/config.h b/keyboards/kapl/rev1/config.h
index 4984459275..ef6e5449f6 100644
--- a/keyboards/kapl/rev1/config.h
+++ b/keyboards/kapl/rev1/config.h
@@ -2,14 +2,6 @@
// 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
diff --git a/keyboards/kapl/rev1/info.json b/keyboards/kapl/rev1/info.json
new file mode 100644
index 0000000000..2b497b9848
--- /dev/null
+++ b/keyboards/kapl/rev1/info.json
@@ -0,0 +1,91 @@
+{
+ "keyboard_name": "Kapl",
+ "manufacturer": "keyzog",
+ "url": "https://github.com/keyzog/kapl",
+ "maintainer": "keyzog",
+ "usb": {
+ "vid": "0x4C41",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
+ "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/kb58/config.h b/keyboards/kb58/config.h
index 81d946aaab..b50f1021af 100644
--- a/keyboards/kb58/config.h
+++ b/keyboards/kb58/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER beanaccle
-#define PRODUCT kb58
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F5, F6, F7, B1, D7, D4, D0 }
#define MATRIX_ROW_PINS_RIGHT { F7, B5, B3, B2, B6 }
#define MATRIX_COL_PINS_RIGHT { F6, B1, E6, D7, C6, D4, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kb58/info.json b/keyboards/kb58/info.json
index 5114eec6ae..1ee4082433 100644
--- a/keyboards/kb58/info.json
+++ b/keyboards/kb58/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "KB58",
+ "manufacturer": "beanaccle",
"url": "https://github.com/beanaccle/kb58_pico",
"maintainer": "beanaccle",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kb58/readme.md b/keyboards/kb58/readme.md
index 6d02b1787a..4ea36cbbde 100644
--- a/keyboards/kb58/readme.md
+++ b/keyboards/kb58/readme.md
@@ -18,6 +18,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/kb_elmo/67mk_e/config.h b/keyboards/kb_elmo/67mk_e/config.h
index 60c90ed522..9d0ab1a10c 100644
--- a/keyboards/kb_elmo/67mk_e/config.h
+++ b/keyboards/kb_elmo/67mk_e/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA68C
-#define PRODUCT_ID 0xD03E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kb_elmo
-#define PRODUCT 67mk_E
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/kb_elmo/67mk_e/info.json b/keyboards/kb_elmo/67mk_e/info.json
index fd417097b8..ca0437811e 100644
--- a/keyboards/kb_elmo/67mk_e/info.json
+++ b/keyboards/kb_elmo/67mk_e/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "67mk_e",
+ "keyboard_name": "67mk_E",
+ "manufacturer": "kb_elmo",
"url": "",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0xA68C",
+ "pid": "0xD03E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kb_elmo/aek2_usb/config.h b/keyboards/kb_elmo/aek2_usb/config.h
index 9cad5d5c72..345195b428 100644
--- a/keyboards/kb_elmo/aek2_usb/config.h
+++ b/keyboards/kb_elmo/aek2_usb/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA68C
-#define PRODUCT_ID 0xDB52
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kb-elmo
-#define PRODUCT AEK II USB
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 14
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D5, C1, C4, D0, C3, C2, B3, B4 }
#define MATRIX_COL_PINS { A1, A0, A2, A3, A4, A5, A6, A7, C7, C6, C5, C0, D6, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kb_elmo/aek2_usb/info.json b/keyboards/kb_elmo/aek2_usb/info.json
index 82050e6fae..ef94b0994e 100644
--- a/keyboards/kb_elmo/aek2_usb/info.json
+++ b/keyboards/kb_elmo/aek2_usb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "aek 2 usb",
+ "keyboard_name": "AEK II USB",
+ "manufacturer": "kb-elmo",
"url": "https://github.com/kb-elmo/aek2_usb",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0xA68C",
+ "pid": "0xDB52",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kb_elmo/elmopad/config.h b/keyboards/kb_elmo/elmopad/config.h
index 1dd6cff5b3..4581fbf94f 100644
--- a/keyboards/kb_elmo/elmopad/config.h
+++ b/keyboards/kb_elmo/elmopad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA68C
-#define PRODUCT_ID 0x8B35
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kb-elmo
-#define PRODUCT ElmoPad
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C5, C4, B2, B1, D7, B0 }
#define MATRIX_COL_PINS { C0, C1, C2, C3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kb_elmo/elmopad/info.json b/keyboards/kb_elmo/elmopad/info.json
index 6193342c6b..bfe97e3161 100644
--- a/keyboards/kb_elmo/elmopad/info.json
+++ b/keyboards/kb_elmo/elmopad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "elmopad",
+ "keyboard_name": "ElmoPad",
+ "manufacturer": "kb-elmo",
"url": "https://github.com/kb-elmo/numpad",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0xA68C",
+ "pid": "0x8B35",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_6x4": {
"layout": [
diff --git a/keyboards/kb_elmo/isolation/config.h b/keyboards/kb_elmo/isolation/config.h
index 2f083955b0..6088cd5de2 100644
--- a/keyboards/kb_elmo/isolation/config.h
+++ b/keyboards/kb_elmo/isolation/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA68C
-#define PRODUCT_ID 0x4EE6
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kb-elmo
-#define PRODUCT ISOlation
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 1
/* direct key pin */
#define DIRECT_PINS {{ B0 }}
-#define UNUSED_PINS
/* RGB backlight */
#define RGB_DI_PIN B2
diff --git a/keyboards/kb_elmo/isolation/info.json b/keyboards/kb_elmo/isolation/info.json
index 1cca4610d7..4042b2677c 100644
--- a/keyboards/kb_elmo/isolation/info.json
+++ b/keyboards/kb_elmo/isolation/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "isolation",
+ "keyboard_name": "ISOlation",
+ "manufacturer": "kb-elmo",
"url": "",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0xA68C",
+ "pid": "0x4EE6",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kb_elmo/m0110a_usb/config.h b/keyboards/kb_elmo/m0110a_usb/config.h
index 0010f0d27e..4509b76933 100644
--- a/keyboards/kb_elmo/m0110a_usb/config.h
+++ b/keyboards/kb_elmo/m0110a_usb/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA68C
-#define PRODUCT_ID 0xDB4B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kb-elmo
-#define PRODUCT M0110A USB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, D5 }
#define MATRIX_COL_PINS { D7, C0, C1, C2, C3, D1, B4, C6, C7, A7, A6, A5, A4, A3, A2, A1, A0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kb_elmo/m0110a_usb/info.json b/keyboards/kb_elmo/m0110a_usb/info.json
index 1970c4960c..e515a1e142 100644
--- a/keyboards/kb_elmo/m0110a_usb/info.json
+++ b/keyboards/kb_elmo/m0110a_usb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "m0110a usb",
+ "keyboard_name": "M0110A USB",
+ "manufacturer": "kb-elmo",
"url": "https://github.com/kb-elmo/m0110a_usb",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0xA68C",
+ "pid": "0xDB4B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kb_elmo/m0116_usb/config.h b/keyboards/kb_elmo/m0116_usb/config.h
index 693d3ab6a8..7d3581efff 100644
--- a/keyboards/kb_elmo/m0116_usb/config.h
+++ b/keyboards/kb_elmo/m0116_usb/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA68C
-#define PRODUCT_ID 0x8F7E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kb-elmo
-#define PRODUCT M0116 USB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B1, A0, B2, A2, A1 }
#define MATRIX_COL_PINS { D6, D5, D1, D0, D7, C0, C1, C2, C3, C4, C5, C6, C7, A7, A6, A5, A4, A3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kb_elmo/m0116_usb/info.json b/keyboards/kb_elmo/m0116_usb/info.json
index 9a5386b838..1b52a8c0e6 100644
--- a/keyboards/kb_elmo/m0116_usb/info.json
+++ b/keyboards/kb_elmo/m0116_usb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "m0116 usb",
+ "keyboard_name": "M0116 USB",
+ "manufacturer": "kb-elmo",
"url": "https://github.com/kb-elmo/m0116_usb",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0xA68C",
+ "pid": "0x8F7E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kb_elmo/noah_avr/config.h b/keyboards/kb_elmo/noah_avr/config.h
index 5c6dfe8b5e..6c462d7176 100644
--- a/keyboards/kb_elmo/noah_avr/config.h
+++ b/keyboards/kb_elmo/noah_avr/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA68C
-#define PRODUCT_ID 0x1DB0
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kb-elmo
-#define PRODUCT Noah AVR
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { B4, B6, D7, D5, D0 }
#define MATRIX_COL_PINS { D1, D2, D3, D4, C6, C7, F7, F6, F5, F4, F0, F1, B3, B2, B1, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kb_elmo/noah_avr/info.json b/keyboards/kb_elmo/noah_avr/info.json
index 6bc9b32b07..91875a6505 100644
--- a/keyboards/kb_elmo/noah_avr/info.json
+++ b/keyboards/kb_elmo/noah_avr/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Noah AVR",
+ "manufacturer": "kb-elmo",
"url": "https://github.com/kb-elmo/noah_avr",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0xA68C",
+ "pid": "0x1DB0",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_ansi": "LAYOUT_65_ansi_blocker",
"LAYOUT_ansi_splitbs": "LAYOUT_65_ansi_blocker_split_bs",
diff --git a/keyboards/kb_elmo/qez/config.h b/keyboards/kb_elmo/qez/config.h
index 055ebe2a4b..4b51eb3ff4 100644
--- a/keyboards/kb_elmo/qez/config.h
+++ b/keyboards/kb_elmo/qez/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA68C
-#define PRODUCT_ID 0x675F
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kb_elmo
-#define PRODUCT QEZ
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
diff --git a/keyboards/kb_elmo/qez/info.json b/keyboards/kb_elmo/qez/info.json
index a7cdd219d4..a0c2da02f9 100644
--- a/keyboards/kb_elmo/qez/info.json
+++ b/keyboards/kb_elmo/qez/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "qez",
+ "keyboard_name": "QEZ",
+ "manufacturer": "kb_elmo",
"url": "",
"maintainer": "kb-elmo<mail@elmo.space>",
+ "usb": {
+ "vid": "0xA68C",
+ "pid": "0x675F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_space": {
"layout": [
diff --git a/keyboards/kb_elmo/sesame/config.h b/keyboards/kb_elmo/sesame/config.h
index 5015cc87b9..432bb769c3 100644
--- a/keyboards/kb_elmo/sesame/config.h
+++ b/keyboards/kb_elmo/sesame/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA68C
-#define PRODUCT_ID 0xE2BD
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kb-elmo
-#define PRODUCT Sesame
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C4, C5, C6, C7, A7 }
#define MATRIX_COL_PINS { D1, D5, D6, D7, C0, C1, C2, C3, A6, A5, A4, A3, A2, A1, A0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
@@ -46,3 +38,6 @@ 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 1
+
+/* Workaround for https://github.com/qmk/qmk_firmware/issues/11389 */
+#define IGNORE_ATOMIC_BLOCK
diff --git a/keyboards/kb_elmo/sesame/info.json b/keyboards/kb_elmo/sesame/info.json
index 639c8b4d7c..d537ed1973 100644
--- a/keyboards/kb_elmo/sesame/info.json
+++ b/keyboards/kb_elmo/sesame/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "sesame",
+ "keyboard_name": "Sesame",
+ "manufacturer": "kb-elmo",
"url": "https://github.com/kb-elmo/sesame",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0xA68C",
+ "pid": "0xE2BD",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice": {
"layout": [
diff --git a/keyboards/kb_elmo/twelvekey/config.h b/keyboards/kb_elmo/twelvekey/config.h
index 4be5f4f313..2ffc1e4589 100644
--- a/keyboards/kb_elmo/twelvekey/config.h
+++ b/keyboards/kb_elmo/twelvekey/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA68C
-#define PRODUCT_ID 0x9879
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kb-elmo
-#define PRODUCT Twelvekey
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 4
diff --git a/keyboards/kb_elmo/twelvekey/info.json b/keyboards/kb_elmo/twelvekey/info.json
index c44d88ce45..27a67923d0 100644
--- a/keyboards/kb_elmo/twelvekey/info.json
+++ b/keyboards/kb_elmo/twelvekey/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "twelvekey",
+ "keyboard_name": "Twelvekey",
+ "manufacturer": "kb-elmo",
"url": "https://github.com/kb-elmo/twelvekey",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0xA68C",
+ "pid": "0x9879",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_3x4": {
"layout": [{"x":0, "y":0},
diff --git a/keyboards/kb_elmo/vertex/config.h b/keyboards/kb_elmo/vertex/config.h
index 9d8eafe5bf..9bf46423b4 100644
--- a/keyboards/kb_elmo/vertex/config.h
+++ b/keyboards/kb_elmo/vertex/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 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
diff --git a/keyboards/kb_elmo/vertex/info.json b/keyboards/kb_elmo/vertex/info.json
index a7bea40772..e443ae5f72 100644
--- a/keyboards/kb_elmo/vertex/info.json
+++ b/keyboards/kb_elmo/vertex/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "vertex",
+ "keyboard_name": "Vertex",
+ "manufacturer": "kb_elmo",
"url": "",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0xA68C",
+ "pid": "0x6B47",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_8keys": {
"layout": [
diff --git a/keyboards/kb_elmo/vertex/readme.md b/keyboards/kb_elmo/vertex/readme.md
index 0710e48070..cbcdd9a179 100644
--- a/keyboards/kb_elmo/vertex/readme.md
+++ b/keyboards/kb_elmo/vertex/readme.md
@@ -22,4 +22,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
* **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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/kbdclack/kaishi65/config.h b/keyboards/kbdclack/kaishi65/config.h
index d9ac9b8137..aa8c1e4dd0 100644
--- a/keyboards/kbdclack/kaishi65/config.h
+++ b/keyboards/kbdclack/kaishi65/config.h
@@ -19,13 +19,6 @@ 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 0x1A81
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDClack
-#define PRODUCT kaishi65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, B0, F0, F1 }
#define MATRIX_COL_PINS { B2, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdclack/kaishi65/info.json b/keyboards/kbdclack/kaishi65/info.json
index f1e30b7e5e..e8d1ad8699 100644
--- a/keyboards/kbdclack/kaishi65/info.json
+++ b/keyboards/kbdclack/kaishi65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "kaishi65",
+ "manufacturer": "KBDClack",
"url": "https://github.com/powerlemming/KBDClack",
"maintainer": "KBDClack",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1A81",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_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":"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":"Del", "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 up", "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":"up", "x":14, "y":3}, {"label":"Pg dn", "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}, {"label":"Fn", "x":11, "y":4}, {"label":"Ctrl", "x":12, "y":4}, {"label":"left", "x":13, "y":4}, {"label":"down", "x":14, "y":4}, {"label":"right", "x":15, "y":4}]
diff --git a/keyboards/kbdfans/baguette66/rgb/config.h b/keyboards/kbdfans/baguette66/rgb/config.h
new file mode 100644
index 0000000000..4f23460964
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/rgb/config.h
@@ -0,0 +1,82 @@
+/* Copyright 2022 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+#define MATRIX_ROW_PINS { F0, F1, F4, F5, B6 }
+#define MATRIX_COL_PINS { C6, C7, F7, F6, B0, B1, B2, B3, D0, D1, D2, D3, D5, D4, D6}
+
+/* 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 USB_SUSPEND_WAKEUP_DELAY 5000
+#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
+
+#define RGB_DI_PIN E6
+#define RGBLED_NUM 66
+#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/baguette66/rgb/info.json b/keyboards/kbdfans/baguette66/rgb/info.json
new file mode 100644
index 0000000000..c9b4c545a9
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/rgb/info.json
@@ -0,0 +1,15 @@
+{
+ "keyboard_name": "Baguette66 RGB",
+ "manufacturer": "KBDfans",
+ "maintainer": "DZTECH",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x0106",
+ "device_version": "0.0.1"
+ },
+ "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}, {"x":14, "y":0}, {"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":"|", "x":13.5, "y":1, "w":1.5}, {"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":"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.25}, {"x":13.5, "y":3}, {"x":14.5, "y":3}, {"label":"Win", "x":1.25, "y":4}, {"label":"Alt", "x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":6.25}, {"label":"Alt", "x":9.75, "y":4, "w":1.25}, {"label":"Win", "x":11, "y":4}, {"x":13.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/kbdfans/baguette66/rgb/keymaps/default/keymap.c b/keyboards/kbdfans/baguette66/rgb/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3e0eb8d96f
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/rgb/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/* Copyright 2022 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRAVE, 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_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_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_UP,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT,KC_DOWN, KC_RIGHT),
+ [1] = LAYOUT_all(
+ 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_GRAVE, KC_PGUP,
+ 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, QK_BOOT, KC_PGDN,
+ 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_LSFT, 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_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+ [2] = LAYOUT_all(
+ 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_GRAVE, KC_PGUP,
+ 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, QK_BOOT, KC_PGDN,
+ 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_LSFT, 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_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+ [3] = LAYOUT_all(
+ 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_GRAVE, KC_PGUP,
+ 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, QK_BOOT, KC_PGDN,
+ 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_LSFT, 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_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+};
diff --git a/keyboards/kbdfans/baguette66/rgb/keymaps/via/keymap.c b/keyboards/kbdfans/baguette66/rgb/keymaps/via/keymap.c
new file mode 100644
index 0000000000..73c34ec12a
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/rgb/keymaps/via/keymap.c
@@ -0,0 +1,44 @@
+/* Copyright 2022 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRAVE, 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_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_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_UP,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT,KC_DOWN, KC_RIGHT),
+ [1] = LAYOUT_all(
+ 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_GRAVE, KC_PGUP,
+ 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, QK_BOOT, KC_PGDN,
+ 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_LSFT, 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_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+ [2] = LAYOUT_all(
+ 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_GRAVE, KC_PGUP,
+ 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, QK_BOOT, KC_PGDN,
+ 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_LSFT, 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_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+ [3] = LAYOUT_all(
+ 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_GRAVE, KC_PGUP,
+ 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, QK_BOOT, KC_PGDN,
+ 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_LSFT, 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_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+};
diff --git a/keyboards/kbdfans/baguette66/rgb/keymaps/via/rules.mk b/keyboards/kbdfans/baguette66/rgb/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/rgb/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kbdfans/baguette66/rgb/readme.md b/keyboards/kbdfans/baguette66/rgb/readme.md
new file mode 100644
index 0000000000..a5b67d03b8
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/rgb/readme.md
@@ -0,0 +1,23 @@
+# BAGUETTE66_RGB
+
+A customizable 66% 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 `QK_BOOT` if it is available
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kbdfans/baguette66/rgb: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/baguette66/rgb/rgb.c b/keyboards/kbdfans/baguette66/rgb/rgb.c
new file mode 100644
index 0000000000..def3e10c97
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/rgb/rgb.c
@@ -0,0 +1,48 @@
+/* Copyright 2022 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 "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, 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,NO_LED, 14 },
+ { 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, NO_LED},
+ { NO_LED, 58, 59, NO_LED, NO_LED, 60, NO_LED, NO_LED, 61, NO_LED, 62, NO_LED, 63, 64, 65 }
+}, {
+ {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}, {210,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},
+ {220,48},{205,48},{187,48},{169,48},{154,48},{139,48},{124,48},{109,48},{94,48},{79,48},{64,48},{49,48},{34,48},{9,48},
+ {21,64},{39,64},{96,64},{152,64},{171,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,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 1, 1, 1
+} };
+
+__attribute__ ((weak))
+void rgb_matrix_indicators_user(void)
+{
+ if (host_keyboard_led_state().caps_lock)
+ {
+ rgb_matrix_set_color(31, 0xFF, 0xFF, 0xFF);
+ }
+}
+#endif
diff --git a/keyboards/kbdfans/baguette66/rgb/rgb.h b/keyboards/kbdfans/baguette66/rgb/rgb.h
new file mode 100644
index 0000000000..1ba364d8bd
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/rgb/rgb.h
@@ -0,0 +1,32 @@
+/* Copyright 2022 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, K2E,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, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K41, K42, K45, K48, 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, K2C, XXX, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX }, \
+ { XXX, K41, K42, XXX, XXX, K45, XXX, XXX, K48, XXX, K4A, XXX, K4C, K4D, K4E } \
+}
diff --git a/keyboards/kbdfans/baguette66/rgb/rules.mk b/keyboards/kbdfans/baguette66/rgb/rules.mk
new file mode 100644
index 0000000000..17a78c939f
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/rgb/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
+RGB_MATRIX_ENABLE = yes # Use RGB matrix
+RGB_MATRIX_DRIVER = WS2812
diff --git a/keyboards/kbdfans/baguette66/soldered/config.h b/keyboards/kbdfans/baguette66/soldered/config.h
new file mode 100644
index 0000000000..0d96871a74
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/soldered/config.h
@@ -0,0 +1,36 @@
+/* Copyright 2022 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+#define MATRIX_ROW_PINS { F0, F1, F4, F5, B6 }
+#define MATRIX_COL_PINS { C6, C7, F7, F6, B0, B1, B2, B3, D0, D1, D2, D3, D5, D4, D6}
+
+/* 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 USB_SUSPEND_WAKEUP_DELAY 5000
+#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
+
+#define LED_CAPS_LOCK_PIN B7
+#define LED_PIN_ON_STATE 0
diff --git a/keyboards/kbdfans/baguette66/soldered/info.json b/keyboards/kbdfans/baguette66/soldered/info.json
new file mode 100644
index 0000000000..dbad08e260
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/soldered/info.json
@@ -0,0 +1,15 @@
+{
+ "keyboard_name": "Baguette66 Soldered",
+ "manufacturer": "KBDfans",
+ "maintainer": "DZTECH",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x0107",
+ "device_version": "0.0.1"
+ },
+ "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}, {"x":14, "y":0}, {"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":"|", "x":13.5, "y":1, "w":1.5}, {"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":"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.25}, {"x":13.5, "y":3}, {"x":14.5, "y":3}, {"label":"Win", "x":1.25, "y":4}, {"label":"Alt", "x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":6.25}, {"label":"Alt", "x":9.75, "y":4, "w":1.25}, {"label":"Win", "x":11, "y":4}, {"x":13.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/kbdfans/baguette66/soldered/keymaps/default/keymap.c b/keyboards/kbdfans/baguette66/soldered/keymaps/default/keymap.c
new file mode 100644
index 0000000000..56ed15ad30
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/soldered/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/* Copyright 2022 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRAVE, 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_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_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_UP,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT,KC_DOWN, KC_RIGHT),
+ [1] = LAYOUT_all(
+ 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_GRAVE, KC_PGUP,
+ 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, QK_BOOT, 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, EEP_RST,
+ 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_DEL, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+ [2] = LAYOUT_all(
+ 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_GRAVE, KC_PGUP,
+ 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, QK_BOOT, 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, EEP_RST,
+ 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_DEL, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+ [3] = LAYOUT_all(
+ 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_GRAVE, KC_PGUP,
+ 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, QK_BOOT, 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, EEP_RST,
+ 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_DEL, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+};
diff --git a/keyboards/kbdfans/baguette66/soldered/keymaps/via/keymap.c b/keyboards/kbdfans/baguette66/soldered/keymaps/via/keymap.c
new file mode 100644
index 0000000000..56ed15ad30
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/soldered/keymaps/via/keymap.c
@@ -0,0 +1,44 @@
+/* Copyright 2022 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRAVE, 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_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_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_UP,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT,KC_DOWN, KC_RIGHT),
+ [1] = LAYOUT_all(
+ 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_GRAVE, KC_PGUP,
+ 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, QK_BOOT, 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, EEP_RST,
+ 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_DEL, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+ [2] = LAYOUT_all(
+ 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_GRAVE, KC_PGUP,
+ 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, QK_BOOT, 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, EEP_RST,
+ 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_DEL, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+ [3] = LAYOUT_all(
+ 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_GRAVE, KC_PGUP,
+ 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, QK_BOOT, 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, EEP_RST,
+ 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_DEL, KC_VOLU,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+};
diff --git a/keyboards/kbdfans/baguette66/soldered/keymaps/via/rules.mk b/keyboards/kbdfans/baguette66/soldered/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/soldered/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kbdfans/baguette66/soldered/readme.md b/keyboards/kbdfans/baguette66/soldered/readme.md
new file mode 100644
index 0000000000..148e042c6c
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/soldered/readme.md
@@ -0,0 +1,23 @@
+# BAGUETTE66_SOLDERED
+
+A customizable 66% Mechnical 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 `QK_BOOT` if it is available
+
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kbdfans/baguette66/soldered: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/baguette66/soldered/rules.mk b/keyboards/kbdfans/baguette66/soldered/rules.mk
new file mode 100644
index 0000000000..e0403a960b
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/soldered/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 = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/kbdfans/baguette66/soldered/soldered.c b/keyboards/kbdfans/baguette66/soldered/soldered.c
new file mode 100644
index 0000000000..f2848c1b32
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/soldered/soldered.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 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 "soldered.h"
diff --git a/keyboards/kbdfans/baguette66/soldered/soldered.h b/keyboards/kbdfans/baguette66/soldered/soldered.h
new file mode 100644
index 0000000000..1ba364d8bd
--- /dev/null
+++ b/keyboards/kbdfans/baguette66/soldered/soldered.h
@@ -0,0 +1,32 @@
+/* Copyright 2022 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, K2E,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, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K41, K42, K45, K48, 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, K2C, XXX, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX }, \
+ { XXX, K41, K42, XXX, XXX, K45, XXX, XXX, K48, XXX, K4A, XXX, K4C, K4D, K4E } \
+}
diff --git a/keyboards/kbdfans/bella/rgb/config.h b/keyboards/kbdfans/bella/rgb/config.h
index 18add4d136..837701c7c4 100644
--- a/keyboards/kbdfans/bella/rgb/config.h
+++ b/keyboards/kbdfans/bella/rgb/config.h
@@ -16,19 +16,12 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x0008
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDFANS
-#define PRODUCT BELLA RGB ANSI
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, B6 }
#define MATRIX_COL_PINS { C6, C7, F7, F6, F5, F4, F1, F0, D2, D3, D5, D4, D6, D7, B4, B5 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/bella/rgb/info.json b/keyboards/kbdfans/bella/rgb/info.json
index 2db8efb3f8..1e080471ce 100644
--- a/keyboards/kbdfans/bella/rgb/info.json
+++ b/keyboards/kbdfans/bella/rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "BELLA RGB ANSI",
+ "keyboard_name": "Bella RGB ANSI",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x0008",
+ "device_version": "0.0.1"
+ },
"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":"~", "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", "x":13, "y":1, "w":2}, {"label":"Home", "x":15.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":"Page Up", "x":15.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":"Page Down", "x":15.25, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"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":"\u2191", "x":14.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Fn", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13.25, "y":5.25}, {"label":"\u2193", "x":14.25, "y":5.25}, {"label":"\u2192", "x":15.25, "y":5.25}]
diff --git a/keyboards/kbdfans/bella/rgb_iso/config.h b/keyboards/kbdfans/bella/rgb_iso/config.h
index 78082a0a01..b1024b4e21 100644
--- a/keyboards/kbdfans/bella/rgb_iso/config.h
+++ b/keyboards/kbdfans/bella/rgb_iso/config.h
@@ -16,19 +16,12 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x0009
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDFANS
-#define PRODUCT BELLA RGB ISO
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, B6 }
#define MATRIX_COL_PINS { C6, C7, F7, F6, F5, F4, F1, F0, D2, D3, D5, D4, D6, D7, B4, B5 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/bella/rgb_iso/info.json b/keyboards/kbdfans/bella/rgb_iso/info.json
index bca3e220ce..632f41a09e 100644
--- a/keyboards/kbdfans/bella/rgb_iso/info.json
+++ b/keyboards/kbdfans/bella/rgb_iso/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "BELLA RGB ISO",
+ "keyboard_name": "Bella RGB ISO",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x0009",
+ "device_version": "0.0.1"
+ },
"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":"Page Up", "x":15.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", "x":13, "y":1, "w":2}, {"label":"Insert", "x":15.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":"Delete", "x":15.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":"~", "x":12.75, "y":3}, {"label":"Enter", "x":13.75, "y":2, "w":1.25, "h":2}, {"label":"Page Down", "x":15.25, "y":3}, {"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":"\u2191", "x":14.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Fn", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13.25, "y":5.25}, {"label":"\u2193", "x":14.25, "y":5.25}, {"label":"\u2192", "x":15.25, "y":5.25}]
diff --git a/keyboards/kbdfans/bella/soldered/config.h b/keyboards/kbdfans/bella/soldered/config.h
index 0d729bebe8..3f499624b9 100755
--- a/keyboards/kbdfans/bella/soldered/config.h
+++ b/keyboards/kbdfans/bella/soldered/config.h
@@ -16,19 +16,12 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x0007
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDFANS
-#define PRODUCT BELLA SOLDERED
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS { B0, B1, B2, B3, D1, B6 }
#define MATRIX_COL_PINS { C6, C7, F7, F6, F5, F4, F1, F0, D2, D3, D5, D4, D6, D7, B4, B5 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/bella/soldered/info.json b/keyboards/kbdfans/bella/soldered/info.json
index 4a967e2685..c958b17d4a 100644
--- a/keyboards/kbdfans/bella/soldered/info.json
+++ b/keyboards/kbdfans/bella/soldered/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "bella_soldered",
+ "keyboard_name": "Bella Soldered",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "kbdfans",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kbdfans/boop65/rgb/config.h b/keyboards/kbdfans/boop65/rgb/config.h
index b74da64e20..2d4cbe4e85 100644
--- a/keyboards/kbdfans/boop65/rgb/config.h
+++ b/keyboards/kbdfans/boop65/rgb/config.h
@@ -18,19 +18,11 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x1000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDFANS
-#define PRODUCT BOOP65RGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { F0, F1, F4, E6, C6 }
#define MATRIX_COL_PINS { F7, F6, F5, C7, B0, B1, B2, B3, B4, D7, D6, D4, D5, D3, D2}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/boop65/rgb/info.json b/keyboards/kbdfans/boop65/rgb/info.json
index 8cec411098..97eddd4fe4 100644
--- a/keyboards/kbdfans/boop65/rgb/info.json
+++ b/keyboards/kbdfans/boop65/rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "boop65_rgb",
+ "keyboard_name": "Boop65 RGB",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x1000",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/kbdfans/boop65/rgb/readme.md b/keyboards/kbdfans/boop65/rgb/readme.md
index 9b24b62af4..b8a2e5993c 100644
--- a/keyboards/kbdfans/boop65/rgb/readme.md
+++ b/keyboards/kbdfans/boop65/rgb/readme.md
@@ -16,6 +16,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/bounce/75/hotswap/config.h b/keyboards/kbdfans/bounce/75/hotswap/config.h
new file mode 100644
index 0000000000..7921b12edb
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/hotswap/config.h
@@ -0,0 +1,56 @@
+/* Copyright 2022 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+#define MATRIX_ROW_PINS { E6, B0, B1, B2, B3, B6 }
+#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5}
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+#define LED_CAPS_LOCK_PIN C6
+#define LED_PIN_ON_STATE 0
+
+#define RGB_DI_PIN F0
+#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 +8 )
+#define RGBLIGHT_DEFAULT_SPD 15
+#define RGBLED_NUM 4
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 10
+#define RGBLIGHT_VAL_STEP 10
+#define RGBLIGHT_SLEEP
+#endif
+#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 \ No newline at end of file
diff --git a/keyboards/kbdfans/bounce/75/hotswap/hotswap.c b/keyboards/kbdfans/bounce/75/hotswap/hotswap.c
new file mode 100644
index 0000000000..702a9b096d
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/hotswap/hotswap.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 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 "hotswap.h" \ No newline at end of file
diff --git a/keyboards/kbdfans/bounce/75/hotswap/hotswap.h b/keyboards/kbdfans/bounce/75/hotswap/hotswap.h
new file mode 100644
index 0000000000..7f9f64a9d6
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/hotswap/hotswap.h
@@ -0,0 +1,34 @@
+/* Copyright 2022 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 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, 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, \
+ K500, K501, K502, K505, K508, 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, KC_NO, K313, K314 }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, KC_NO}, \
+ { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, K508, KC_NO, K510, K511, KC_NO, K513, K514 } \
+}
diff --git a/keyboards/kbdfans/bounce/75/hotswap/info.json b/keyboards/kbdfans/bounce/75/hotswap/info.json
new file mode 100644
index 0000000000..bc9622f874
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/hotswap/info.json
@@ -0,0 +1,15 @@
+{
+ "keyboard_name": "Bounce75 Hotswap",
+ "manufacturer": "KBDfans",
+ "maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x7001",
+ "device_version": "0.0.3"
+ },
+ "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":"PrtSc", "x":14, "y":0}, {"label":"Pause", "x":15.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":"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":"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}, {"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}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/kbdfans/bounce/75/hotswap/keymaps/default/keymap.c b/keyboards/kbdfans/bounce/75/hotswap/keymaps/default/keymap.c
new file mode 100644
index 0000000000..8b0ddf88fe
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/hotswap/keymaps/default/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2022 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, 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_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, 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_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, 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/bounce/75/hotswap/keymaps/via/keymap.c b/keyboards/kbdfans/bounce/75/hotswap/keymaps/via/keymap.c
new file mode 100644
index 0000000000..8b0ddf88fe
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/hotswap/keymaps/via/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2022 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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, 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_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, 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_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, 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/bounce/75/hotswap/keymaps/via/rules.mk b/keyboards/kbdfans/bounce/75/hotswap/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/hotswap/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kbdfans/bounce/75/hotswap/readme.md b/keyboards/kbdfans/bounce/75/hotswap/readme.md
new file mode 100644
index 0000000000..7e631099cc
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/hotswap/readme.md
@@ -0,0 +1,21 @@
+# BOUNCE75 HOTSWAP
+
+A customizable 75% HOTSWAP 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/bounce/75/hotswap:default
+
+## 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 `QK_BOOT` 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). \ No newline at end of file
diff --git a/keyboards/kbdfans/bounce/75/hotswap/rules.mk b/keyboards/kbdfans/bounce/75/hotswap/rules.mk
new file mode 100644
index 0000000000..85eec9079f
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/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 = 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/bounce/75/soldered/config.h b/keyboards/kbdfans/bounce/75/soldered/config.h
new file mode 100644
index 0000000000..b0ad114346
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/soldered/config.h
@@ -0,0 +1,56 @@
+/* Copyright 2022 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+#define MATRIX_ROW_PINS { E6, B0, B1, B2, B3, B6 }
+#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5}
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+#define LED_CAPS_LOCK_PIN C6
+#define LED_PIN_ON_STATE 0
+
+#define RGB_DI_PIN B7
+#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 +8 )
+#define RGBLIGHT_DEFAULT_SPD 15
+#define RGBLED_NUM 4
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 10
+#define RGBLIGHT_VAL_STEP 10
+#define RGBLIGHT_SLEEP
+#endif
+#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2 \ No newline at end of file
diff --git a/keyboards/kbdfans/bounce/75/soldered/info.json b/keyboards/kbdfans/bounce/75/soldered/info.json
new file mode 100644
index 0000000000..00ae5d3f6f
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/soldered/info.json
@@ -0,0 +1,469 @@
+{
+ "keyboard_name": "Bounce75 Soldered",
+ "manufacturer": "KBDfans",
+ "url": "",
+ "maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x7000",
+ "device_version": "0.0.3"
+ },
+ "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":"PrtSc", "x":14, "y":0},
+ {"label":"Pause", "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":"Backspace2", "x":13, "y":1.25},
+ {"label":"Backspace", "x":14, "y":1.25},
+ {"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":"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":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":"\u2191", "x":14.25, "y":4.5},
+
+ {"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.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}
+ ]
+ },
+ "LAYOUT_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":"PrtSc", "x":14, "y":0},
+ {"label":"Pause", "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":"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":"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.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}
+ ]
+ },
+ "LAYOUT_ansi_split_bs": {
+ "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":"PrtSc", "x":14, "y":0},
+ {"label":"Pause", "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},
+ {"label":"Backspace", "x":14, "y":1.25},
+ {"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":"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":"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.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}
+ ]
+ },
+ "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":"PrtSc", "x":14, "y":0},
+ {"label":"Pause", "x":15.25, "y":0},
+
+ {"label":"`\u00ac", "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":"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":"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":"#~", "x":12.75, "y":3.25},
+ {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"label":"Page Down", "x":15.25, "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":1.75},
+ {"label":"\u2191", "x":14.25, "y":4.5},
+
+ {"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":"AltGr", "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}
+ ]
+ },
+ "LAYOUT_iso_split_bs": {
+ "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":"PrtSc", "x":14, "y":0},
+ {"label":"Pause", "x":15.25, "y":0},
+
+ {"label":"`\u00ac", "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},
+ {"label":"Backspace", "x":14, "y":1.25},
+ {"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":"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":"#~", "x":12.75, "y":3.25},
+ {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"label":"Page Down", "x":15.25, "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":1.75},
+ {"label":"\u2191", "x":14.25, "y":4.5},
+
+ {"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":"AltGr", "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/kbdfans/bounce/75/soldered/keymaps/default/keymap.c b/keyboards/kbdfans/bounce/75/soldered/keymaps/default/keymap.c
new file mode 100644
index 0000000000..91339709c4
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/soldered/keymaps/default/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2022 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_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_DEL, 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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______,
+ _______, 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_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______,
+ _______, 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_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______,
+ _______, 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/bounce/75/soldered/keymaps/default_ansi/keymap.c b/keyboards/kbdfans/bounce/75/soldered/keymaps/default_ansi/keymap.c
new file mode 100644
index 0000000000..25d4f63b7c
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/soldered/keymaps/default_ansi/keymap.c
@@ -0,0 +1,56 @@
+/* Copyright 2022 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_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_GRV, KC_1, KC_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, 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_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, 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_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, 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/bounce/75/soldered/keymaps/default_ansi_split_bs/keymap.c b/keyboards/kbdfans/bounce/75/soldered/keymaps/default_ansi_split_bs/keymap.c
new file mode 100644
index 0000000000..1ef7179a10
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/soldered/keymaps/default_ansi_split_bs/keymap.c
@@ -0,0 +1,56 @@
+/* Copyright 2022 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_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_PSCR, 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_DEL, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_ansi_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______,
+ _______, 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_ansi_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______,
+ _______, 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_ansi_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______,
+ _______, 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/bounce/75/soldered/keymaps/default_iso/keymap.c b/keyboards/kbdfans/bounce/75/soldered/keymaps/default_iso/keymap.c
new file mode 100644
index 0000000000..b4d9c5f581
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/soldered/keymaps/default_iso/keymap.c
@@ -0,0 +1,56 @@
+/* Copyright 2022 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_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_GRV, KC_1, KC_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_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, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, 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_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, 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_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ _______, 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/bounce/75/soldered/keymaps/default_iso_split_bs/keymap.c b/keyboards/kbdfans/bounce/75/soldered/keymaps/default_iso_split_bs/keymap.c
new file mode 100644
index 0000000000..1caa9f8519
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/soldered/keymaps/default_iso_split_bs/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2022 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_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_PSCR, 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_DEL, 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_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, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_iso_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______,
+ _______, 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_iso_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______,
+ _______, 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_iso_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______,
+ _______, 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/bounce/75/soldered/keymaps/via/keymap.c b/keyboards/kbdfans/bounce/75/soldered/keymaps/via/keymap.c
new file mode 100644
index 0000000000..91339709c4
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/soldered/keymaps/via/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2022 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_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_DEL, 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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______,
+ _______, 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_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______,
+ _______, 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_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______,
+ _______, 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/bounce/75/soldered/keymaps/via/rules.mk b/keyboards/kbdfans/bounce/75/soldered/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/soldered/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kbdfans/bounce/75/soldered/readme.md b/keyboards/kbdfans/bounce/75/soldered/readme.md
new file mode 100644
index 0000000000..f18847b8fb
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/soldered/readme.md
@@ -0,0 +1,21 @@
+# BOUNCE75 SOLDERED
+
+A customizable 75% HOTSWAP 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/bounce/75/soldered:default
+
+## 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 `QK_BOOT` 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/bounce/75/soldered/rules.mk b/keyboards/kbdfans/bounce/75/soldered/rules.mk
new file mode 100644
index 0000000000..cb5238f27d
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/soldered/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/kbdfans/bounce/75/soldered/soldered.c b/keyboards/kbdfans/bounce/75/soldered/soldered.c
new file mode 100644
index 0000000000..a24bc9a36c
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/soldered/soldered.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 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 "soldered.h" \ No newline at end of file
diff --git a/keyboards/kbdfans/bounce/75/soldered/soldered.h b/keyboards/kbdfans/bounce/75/soldered/soldered.h
new file mode 100644
index 0000000000..01fe2df7f9
--- /dev/null
+++ b/keyboards/kbdfans/bounce/75/soldered/soldered.h
@@ -0,0 +1,121 @@
+/* Copyright 2022 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 ___ 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 │3C │1D ││1E │ │1D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┤ └─┬─────┤
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D ││2E │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤├───┤ ┌──┴â”3D │ ISO Enter
+ * LShift │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D ││3E │ │2D │ │
+ * ┌────────┠├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘└───┘ └───┴────┘
+ * │40 │ │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4B │4C │┌───â”
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┘│4D │
+ * │50 │51 │52 │56 │5A │5B │┌───┼───┼───â”
+ * └────┴────┴────┴────────────────────────┴─────┴─────┘│5C │5D │5E │
+ * └───┴───┴───┘
+ * ┌────┬───┬────┬───────────────────────────┬────┬────â”
+ * │50 │51 │52 │56 │5A │5B │ 7u Spacebar
+ * └────┴───┴────┴───────────────────────────┴────┴────┘
+ */
+
+#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, K3C, 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, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, \
+ K50, K51, K52, 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, 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, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E } \
+}
+
+#define LAYOUT_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, K3D, K3E, \
+ K40, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, \
+ K50, K51, K52, 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, 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, K4C, K4D, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E } \
+}
+
+#define LAYOUT_ansi_split_bs( \
+ 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, K3C, 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, K4C, K4D, \
+ K50, K51, K52, 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, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E } \
+}
+
+#define LAYOUT_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, 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, K2D, K3D, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, \
+ K50, K51, K52, 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, K2C, K2D, 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, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E } \
+}
+
+#define LAYOUT_iso_split_bs( \
+ 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, K3C, 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, K2D, K3D, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, \
+ K50, K51, K52, 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, 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, ___ }, \
+ { K50, K51, K52, ___, ___, ___, K56, ___, ___, ___, K5A, K5B, K5C, K5D, K5E } \
+}
diff --git a/keyboards/kbdfans/bounce/pad/config.h b/keyboards/kbdfans/bounce/pad/config.h
new file mode 100644
index 0000000000..dab7f6f9fe
--- /dev/null
+++ b/keyboards/kbdfans/bounce/pad/config.h
@@ -0,0 +1,29 @@
+/* Copyright 2022 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 MATRIX_ROWS 6
+#define MATRIX_COLS 4
+#define MATRIX_ROW_PINS { C7, B7, B6, B0, B1, B2 }
+#define MATRIX_COL_PINS { B5, B4, D0, C2 }
+#define DIODE_DIRECTION COL2ROW
+#define LED_NUM_LOCK_PIN C6
+#define LED_PIN_ON_STATE 1
+#define DEBOUNCE 5
+#define LOCKING_SUPPORT_ENABLE
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/kbdfans/bounce/pad/info.json b/keyboards/kbdfans/bounce/pad/info.json
new file mode 100644
index 0000000000..9857f94cb4
--- /dev/null
+++ b/keyboards/kbdfans/bounce/pad/info.json
@@ -0,0 +1,42 @@
+{
+ "keyboard_name": "Bounce Pad",
+ "manufacturer": "KBDfans",
+ "maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x7002",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_numpad_6x4": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"Ctrl", "x":1, "y":0},
+ {"label":"Alt", "x":2, "y":0},
+ {"label":"Backspace", "x":3, "y":0},
+
+ {"label":"Num Lock", "x":0, "y":1.25},
+ {"label":"/", "x":1, "y":1.25},
+ {"label":"*", "x":2, "y":1.25},
+ {"label":"-", "x":3, "y":1.25},
+
+ {"label":"7", "x":0, "y":2.25},
+ {"label":"8", "x":1, "y":2.25},
+ {"label":"9", "x":2, "y":2.25},
+
+ {"label":"4", "x":0, "y":3.25},
+ {"label":"5", "x":1, "y":3.25},
+ {"label":"6", "x":2, "y":3.25},
+ {"label":"+", "x":3, "y":2.25, "h":2},
+
+ {"label":"1", "x":0, "y":4.25},
+ {"label":"2", "x":1, "y":4.25},
+ {"label":"3", "x":2, "y":4.25},
+
+ {"label":"0", "x":0, "y":5.25, "w":2},
+ {"label":".", "x":2, "y":5.25},
+ {"label":"Enter", "x":3, "y":4.25, "h":2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kbdfans/bounce/pad/keymaps/default/keymap.c b/keyboards/kbdfans/bounce/pad/keymaps/default/keymap.c
new file mode 100644
index 0000000000..118c74debb
--- /dev/null
+++ b/keyboards/kbdfans/bounce/pad/keymaps/default/keymap.c
@@ -0,0 +1,28 @@
+/* Copyright 2022 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_numpad_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_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT
+ ),
+}; \ No newline at end of file
diff --git a/keyboards/kbdfans/bounce/pad/keymaps/via/keymap.c b/keyboards/kbdfans/bounce/pad/keymaps/via/keymap.c
new file mode 100644
index 0000000000..12916db402
--- /dev/null
+++ b/keyboards/kbdfans/bounce/pad/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2022 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_numpad_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_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT
+ ),
+ [1] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+ [2] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+ [3] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+}; \ No newline at end of file
diff --git a/keyboards/kbdfans/bounce/pad/keymaps/via/rules.mk b/keyboards/kbdfans/bounce/pad/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/kbdfans/bounce/pad/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kbdfans/bounce/pad/pad.c b/keyboards/kbdfans/bounce/pad/pad.c
new file mode 100644
index 0000000000..18c18838ca
--- /dev/null
+++ b/keyboards/kbdfans/bounce/pad/pad.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 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 "pad.h" \ No newline at end of file
diff --git a/keyboards/kbdfans/bounce/pad/pad.h b/keyboards/kbdfans/bounce/pad/pad.h
new file mode 100644
index 0000000000..a4bf9af55b
--- /dev/null
+++ b/keyboards/kbdfans/bounce/pad/pad.h
@@ -0,0 +1,35 @@
+/* Copyright 2022 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 LAYOUT_numpad_6x4( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, \
+ K30, K31, K32, K33, \
+ K40, K41, K42, \
+ K51, K52, K53 \
+) \
+{ \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, KC_NO }, \
+ { K30, K31, K32, K33 }, \
+ { K40, K41, K42, KC_NO }, \
+ { KC_NO,K51, K52, K53 } \
+}
diff --git a/keyboards/kbdfans/bounce/pad/readme.md b/keyboards/kbdfans/bounce/pad/readme.md
new file mode 100644
index 0000000000..54ba70a011
--- /dev/null
+++ b/keyboards/kbdfans/bounce/pad/readme.md
@@ -0,0 +1,21 @@
+# BOUNCE PAD
+
+A customizable pad keyboard, include hotswap and soldered version.
+
+* 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/bounce/pad:default
+
+## 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 `QK_BOOT` 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/bounce/pad/rules.mk b/keyboards/kbdfans/bounce/pad/rules.mk
new file mode 100644
index 0000000000..e71a8b4313
--- /dev/null
+++ b/keyboards/kbdfans/bounce/pad/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 = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = numpad_6x4
diff --git a/keyboards/kbdfans/kbd19x/config.h b/keyboards/kbdfans/kbd19x/config.h
index e738f77177..675128d354 100644
--- a/keyboards/kbdfans/kbd19x/config.h
+++ b/keyboards/kbdfans/kbd19x/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x0191
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDFans
-#define PRODUCT kbd19x
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 13
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B7, B3, E6, F0, D5, D4, D6, C7 }
#define MATRIX_COL_PINS { C6, F1, F4, F5, F6, F7, D7, B4, B5, D0, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/kbd19x/info.json b/keyboards/kbdfans/kbd19x/info.json
index 68832438d0..d5c0c68197 100644
--- a/keyboards/kbdfans/kbd19x/info.json
+++ b/keyboards/kbdfans/kbd19x/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "KBD19x",
+ "manufacturer": "KBDfans",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/kbdfans/kbd19x",
"maintainer": "jshuf, mechmerlin",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x0191",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/kbdfans/kbd19x/readme.md b/keyboards/kbdfans/kbd19x/readme.md
index 910b2f1b89..1c2f7f2c1c 100644
--- a/keyboards/kbdfans/kbd19x/readme.md
+++ b/keyboards/kbdfans/kbd19x/readme.md
@@ -25,6 +25,6 @@ Flashing example for this keyboard:
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)
+* **Keycode in keymap**: Press the key mapped to `QK_BOOT` 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/kbd4x/config.h b/keyboards/kbdfans/kbd4x/config.h
index 86989e2b08..a2da25a983 100644
--- a/keyboards/kbdfans/kbd4x/config.h
+++ b/keyboards/kbdfans/kbd4x/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER KBDFans
-#define PRODUCT KBD4x
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B3, B1, B0, D5, B7, C7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/kbd4x/info.json b/keyboards/kbdfans/kbd4x/info.json
index 939420c971..0a776250a2 100644
--- a/keyboards/kbdfans/kbd4x/info.json
+++ b/keyboards/kbdfans/kbd4x/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "kbd4x",
+ "keyboard_name": "KBD4x",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_planck_mit": {
"layout": [
diff --git a/keyboards/kbdfans/kbd66/config.h b/keyboards/kbdfans/kbd66/config.h
index 2a10bf08ae..4c2cb170d8 100644
--- a/keyboards/kbdfans/kbd66/config.h
+++ b/keyboards/kbdfans/kbd66/config.h
@@ -19,13 +19,6 @@ 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 0xBD66
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDFans
-#define PRODUCT KBD66
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, F0, F1, D4 } // From qmkeyboard.cn
#define MATRIX_COL_PINS { C6, C7, E2, F5, F6, F4, D3, D2, D5, D0, D1, B4, D7, D6, E6, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/kbd66/info.json b/keyboards/kbdfans/kbd66/info.json
index 5e4d9aacf3..bed764ef6a 100644
--- a/keyboards/kbdfans/kbd66/info.json
+++ b/keyboards/kbdfans/kbd66/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "KBD66",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xBD66",
+ "device_version": "0.0.1"
+ },
"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}, {"x":13, "y":0}, {"x":14, "y":0}, {"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":"|", "x":13.5, "y":1, "w":1.5}, {"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":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"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.25}, {"x":13.5, "y":3}, {"x":14.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":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":2.75}, {"x":6.75, "y":4, "w":2.75}, {"label":"Alt", "x":9.5, "y":4, "w":1.5}, {"label":"Win", "x":11, "y":4, "w":1.25}, {"label":"Menu", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4}]
diff --git a/keyboards/kbdfans/kbd67/hotswap/config.h b/keyboards/kbdfans/kbd67/hotswap/config.h
index 4c0e0b794d..d22de44672 100644
--- a/keyboards/kbdfans/kbd67/hotswap/config.h
+++ b/keyboards/kbdfans/kbd67/hotswap/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x6065
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDFans
-#define PRODUCT KBD67 Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B3, B2, B1, B0, D4 }
#define MATRIX_COL_PINS { C7, F7, F6, F5, F4, F1, E6, D1, D0, D2, D3, D5, D6, D7, C6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/kbd67/hotswap/info.json b/keyboards/kbdfans/kbd67/hotswap/info.json
index cf27cfe231..4a115a31bc 100644
--- a/keyboards/kbdfans/kbd67/hotswap/info.json
+++ b/keyboards/kbdfans/kbd67/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "kbd67 hotswap",
+ "keyboard_name": "KBD67 Hotswap",
+ "manufacturer": "KBDFans",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x6065",
+ "device_version": "0.0.1"
+ },
"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":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/kbdfans/kbd67/hotswap/keymaps/brandonschlack/keymap.c b/keyboards/kbdfans/kbd67/hotswap/keymaps/brandonschlack/keymap.c
index a73c961db0..5f2deda04b 100644
--- a/keyboards/kbdfans/kbd67/hotswap/keymaps/brandonschlack/keymap.c
+++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/brandonschlack/keymap.c
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FN1] = LAYOUT(
QM_MAKE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MC_LHPD, MC_MSSN, MC_SLPD, \
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, KC_F13, KC_F14, KC_F15, KC_DEL, KC_VOLU, \
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, KC_F13, KC_F14, KC_F15, KC_DEL, KC_VOLU, \
_______, _______, _______, _______, _______, _______, _______, _______, QM_KYMP, _______, _______, _______, TG_ADJT, KC_VOLD, \
_______, _______, _______, _______, QM_VRSN, _______, _______, _______, KC_MPRV, KC_MNXT, KC_MPLY, _______, KC_PGUP, KC_MUTE, \
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END ),
@@ -72,7 +72,7 @@ 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, EEP_RST, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG_ADJT, XXXXXXX, \
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, \
_______, _______, _______, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX),
diff --git a/keyboards/kbdfans/kbd67/hotswap/keymaps/madhatter/keymap.c b/keyboards/kbdfans/kbd67/hotswap/keymaps/madhatter/keymap.c
index 84c1791f81..cced6df8d7 100644
--- a/keyboards/kbdfans/kbd67/hotswap/keymaps/madhatter/keymap.c
+++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/madhatter/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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_TRNS, KC_TRNS, KC_MFFD,
- KC_TRNS, 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_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, QK_BOOT, 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_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/keymaps/zunger/keymap.c b/keyboards/kbdfans/kbd67/hotswap/keymaps/zunger/keymap.c
index 0d542bf843..dc27913cca 100644
--- a/keyboards/kbdfans/kbd67/hotswap/keymaps/zunger/keymap.c
+++ b/keyboards/kbdfans/kbd67/hotswap/keymaps/zunger/keymap.c
@@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------------------------------------'
*/
[_FUNCTION] = 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_F13, KC_PSCR, KC_MPLY, \
+ QK_BOOT, KC_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_MPLY, \
DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, _______, \
_______, KC_NO, KC__VOLUP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
_______, KC_MRWD, KC__VOLDOWN, KC_MFFD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_MS_U, KC_BTN2, \
@@ -141,7 +141,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
shifted = record->event.pressed;
} else if (keycode == MAGIC) {
magic = record->event.pressed;
- } else if (keycode == RESET) {
+ } else if (keycode == QK_BOOT) {
// Safe reset: Only actually let this keycode through if shift is held as well. Since there's no
// right-shift in the function layer, this means that reset is Fn+LShift+Esc, something you're
// not likely to hit by accident. (Especially since AltGr+Esc is backtick!)
diff --git a/keyboards/kbdfans/kbd67/mkii_soldered/config.h b/keyboards/kbdfans/kbd67/mkii_soldered/config.h
index ef47d33292..0af4b7ad7b 100644
--- a/keyboards/kbdfans/kbd67/mkii_soldered/config.h
+++ b/keyboards/kbdfans/kbd67/mkii_soldered/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103 // ai03
-#define PRODUCT_ID 0x0013
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDfans
-#define PRODUCT KBD67-MKII
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B3, D0, D1, D2, D3 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/kbd67/mkii_soldered/info.json b/keyboards/kbdfans/kbd67/mkii_soldered/info.json
index c31fb4f3fb..3a0ffe0943 100644
--- a/keyboards/kbdfans/kbd67/mkii_soldered/info.json
+++ b/keyboards/kbdfans/kbd67/mkii_soldered/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "KBD67 MKII Soldered Variant",
+ "keyboard_name": "KBD67-MKII Soldered",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0013",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"~", "x":0, "y":0},
diff --git a/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/adamdehaven/keymap.c b/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/adamdehaven/keymap.c
index ec5c0c8a8e..3248acff84 100644
--- a/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/adamdehaven/keymap.c
+++ b/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/adamdehaven/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 1: _FN1
* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬───────────────────┬─────────â”
- * │ 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 │ _______ (2) │ KC_MUTE │
+ * │ QK_BOOT │ 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) │ KC_MUTE │
* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┼─────────┤
* │ _______ │ _______ │ _______ │ _______ │ _______ │ _______ │ _______ │ _______ │ _______ │ _______ │ KC_PSCR │ _______ │ _______ │ _______ │ KC_VOLU │
* ├──────────────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴──────────────┼─────────┤
@@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
*/
[_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_MUTE,
+ QK_BOOT, KC_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_PSCR, _______, _______, _______, KC_VOLU,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, _______,
diff --git a/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/ai03/keymap.c b/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/ai03/keymap.c
index 0e6cdf776a..d04874f182 100644
--- a/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/ai03/keymap.c
+++ b/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/ai03/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_GRV, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all( /* 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, _______, _______, _______,
+ QK_BOOT, KC_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_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, _______, _______, _______, BL_INC,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, BL_DEC,
diff --git a/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/ansi_split_bs/keymap.c b/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/ansi_split_bs/keymap.c
index 1c443ae734..2d00724086 100644
--- a/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/ansi_split_bs/keymap.c
+++ b/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/ansi_split_bs/keymap.c
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_65_ansi_blocker_split_bs( /* 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, _______, _______, BL_INC,
+ QK_BOOT, 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_INC,
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______,
diff --git a/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/king/keymap.c b/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/king/keymap.c
index 70e2237d3a..2158d6d126 100644
--- a/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/king/keymap.c
+++ b/keyboards/kbdfans/kbd67/mkii_soldered/keymaps/king/keymap.c
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 1: _FN1
* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬───────┬───────┬─────────â”
- * │ 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) │ RESET │
+ * │ 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) │ QK_BOOT │
* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──┴───────┼─────────┤
* │ _______ │ _______ │ _______ │ _______ │ _______ │ _______ │ _______ │ _______ │ _______ │ _______ │ _______ │ _______ │ _______ │ _______ │ KC_VOLU │
* ├──────────────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴─┬───────┴──────────┼─────────┤
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────┴─────────┴─────────┴─────────┘
*/
[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_MUTE,
+ QK_BOOT, KC_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_HOME, KC_UP, KC_END, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
KC_CAPS, _______, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, KC_VOLD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/info.json b/keyboards/kbdfans/kbd67/mkiirgb/info.json
index 7010ba59d9..34e29bca8e 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/info.json
+++ b/keyboards/kbdfans/kbd67/mkiirgb/info.json
@@ -1,7 +1,10 @@
{
- "keyboard_name": "kbd67mkiirgb",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x4B42"
+ },
"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}]
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/codecoffeecode/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/codecoffeecode/keymap.c
index 4ad4663ca8..ab13116a07 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/codecoffeecode/keymap.c
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/codecoffeecode/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_65_ansi_blocker( /* MO(1) - 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_HOME,
- _______, RGB_TOG, RGB_MOD, RGB_HUI,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI,RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT, KC_PGUP,
CTL_T(KC_CAPS),RGB_SPI, RGB_SPD, _______,_______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, KC_PGDN,
KC_LSFT, _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, KC_MUTE,
_______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/cykedev/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/cykedev/keymap.c
index c77bbc756c..aeba99b928 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/cykedev/keymap.c
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/cykedev/keymap.c
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------------------┘ └-------------+------´
*/
[_FN2] = LAYOUT_65_ansi_blocker(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, EEP_RST,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, EEP_RST,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD, RGB_MOD, _______, RGB_M_P,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, RGB_VAI,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, RGB_VAD,
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/config.h b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/config.h
index 25f645f734..bb3409256c 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/config.h
@@ -16,8 +16,6 @@
#pragma once
/* place overrides here */
-#undef QMK_KEYS_PER_SCAN
-#define QMK_KEYS_PER_SCAN 4
#undef DEBOUNCE
#define DEBOUNCE 8
#undef TAPPING_TOGGLE
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/keymap.c
index 889a1e5f1b..be5f251dac 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/keymap.c
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/dnsnrk/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, RGB_HUD, RGB_VAD, RGB_HUI),
[_LAYER2] = LAYOUT_65_ansi_blocker( /* Media, Programming */
_______, KC_BRMD, KC_BRMU, _______, _______, _______, _______, KC_MRWD, KC_MPLY, KC_MFFD, KC__MUTE, KC_VOLD, KC_VOLU, KC_EJCT, _______,
- _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______)
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/keymap.c
index 98711fcd86..c2e409ed35 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/keymap.c
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______, QK_BOOT, 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
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/import-for-qmk-configurator/kemmeldev-4-layered-layout.json b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/import-for-qmk-configurator/kemmeldev-4-layered-layout.json
index 65797f216d..e8df1d05bb 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/import-for-qmk-configurator/kemmeldev-4-layered-layout.json
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/import-for-qmk-configurator/kemmeldev-4-layered-layout.json
@@ -1 +1 @@
-{"keyboard":"kbdfans/kbd67/mkiirgb","keymap":"default_37b6a2a","layout":"LAYOUT_65_ansi_blocker","layers":[["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_CALC","KC_TAB","KC_Q","KC_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","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_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_RCTL","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","KC_CALC","KC_CAPS","KC_BTN1","KC_MS_U","KC_BTN2","KC_WH_U","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_UP","KC_PSCR","KC_SLCK","KC_PAUS","RESET","KC_MYCM","KC_TRNS","KC_MS_L","KC_MS_D","KC_MS_R","KC_WH_D","KC_TRNS","RGB_SAI","RGB_SAD","KC_LEFT","KC_DOWN","KC_RGHT","KC_TRNS","EEP_RST","KC_HOME","KC_LSFT","RGB_TOG","RGB_MOD","RGB_VAI","RGB_VAD","RGB_SPI","RGB_SPD","RGB_HUI","RGB_HUD","KC_TRNS","KC_TRNS","KC_TRNS","KC_VOLU","KC_MUTE","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","TO(2)","KC_MPRV","KC_VOLD","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_BSPC","KC_CALC","KC_TAB","KC_Q","KC_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","MO(3)","KC_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_TRNS","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_DEL","KC_CALC","KC_CAPS","KC_BTN1","KC_MS_U","KC_BTN2","KC_WH_U","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_UP","KC_PSCR","KC_SLCK","KC_PAUS","RESET","KC_MYCM","KC_TRNS","KC_MS_L","KC_MS_D","KC_MS_R","KC_WH_D","KC_TRNS","RGB_SAI","RGB_SAD","KC_LEFT","KC_DOWN","KC_RGHT","KC_TRNS","EEP_RST","KC_HOME","KC_LSFT","RGB_TOG","RGB_MOD","RGB_VAI","RGB_VAD","RGB_SPI","RGB_SPD","RGB_HUI","RGB_HUD","KC_TRNS","KC_TRNS","KC_TRNS","KC_VOLU","KC_MUTE","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","TO(0)","KC_MPRV","KC_VOLD","KC_MNXT"]],"author":"","notes":""} \ No newline at end of file
+{"keyboard":"kbdfans/kbd67/mkiirgb","keymap":"default_37b6a2a","layout":"LAYOUT_65_ansi_blocker","layers":[["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_CALC","KC_TAB","KC_Q","KC_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","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_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_RCTL","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","KC_CALC","KC_CAPS","KC_BTN1","KC_MS_U","KC_BTN2","KC_WH_U","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_UP","KC_PSCR","KC_SLCK","KC_PAUS","QK_BOOT","KC_MYCM","KC_TRNS","KC_MS_L","KC_MS_D","KC_MS_R","KC_WH_D","KC_TRNS","RGB_SAI","RGB_SAD","KC_LEFT","KC_DOWN","KC_RGHT","KC_TRNS","EEP_RST","KC_HOME","KC_LSFT","RGB_TOG","RGB_MOD","RGB_VAI","RGB_VAD","RGB_SPI","RGB_SPD","RGB_HUI","RGB_HUD","KC_TRNS","KC_TRNS","KC_TRNS","KC_VOLU","KC_MUTE","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","TO(2)","KC_MPRV","KC_VOLD","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_BSPC","KC_CALC","KC_TAB","KC_Q","KC_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","MO(3)","KC_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_TRNS","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_DEL","KC_CALC","KC_CAPS","KC_BTN1","KC_MS_U","KC_BTN2","KC_WH_U","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_UP","KC_PSCR","KC_SLCK","KC_PAUS","QK_BOOT","KC_MYCM","KC_TRNS","KC_MS_L","KC_MS_D","KC_MS_R","KC_WH_D","KC_TRNS","RGB_SAI","RGB_SAD","KC_LEFT","KC_DOWN","KC_RGHT","KC_TRNS","EEP_RST","KC_HOME","KC_LSFT","RGB_TOG","RGB_MOD","RGB_VAI","RGB_VAD","RGB_SPI","RGB_SPD","RGB_HUI","RGB_HUD","KC_TRNS","KC_TRNS","KC_TRNS","KC_VOLU","KC_MUTE","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","TO(0)","KC_MPRV","KC_VOLD","KC_MNXT"]],"author":"","notes":""} \ No newline at end of file
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/keymap.c
index 0aabb6d6fd..8c74707f26 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/keymap.c
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/keymap.c
@@ -2,7 +2,7 @@
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_CALC, KC_TAB, KC_Q, KC_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, 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_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_RCTL, 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_DEL, KC_CALC, KC_CAPS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_MYCM, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_TRNS, RGB_SAI, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, EEP_RST, KC_HOME, KC_LSFT, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(2), KC_MPRV, KC_VOLD, KC_MNXT),
+ [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_CALC, KC_CAPS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT, KC_MYCM, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_TRNS, RGB_SAI, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, EEP_RST, KC_HOME, KC_LSFT, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(2), KC_MPRV, KC_VOLD, KC_MNXT),
[2] = 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_BSPC, KC_CALC, KC_TAB, KC_Q, KC_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, MO(3), KC_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_TRNS, KC_LEFT, KC_DOWN, KC_RGHT),
- [3] = 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_DEL, KC_CALC, KC_CAPS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_MYCM, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_TRNS, RGB_SAI, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, EEP_RST, KC_HOME, KC_LSFT, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(0), KC_MPRV, KC_VOLD, KC_MNXT)
+ [3] = 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_DEL, KC_CALC, KC_CAPS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT, KC_MYCM, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_TRNS, RGB_SAI, RGB_SAD, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, EEP_RST, KC_HOME, KC_LSFT, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(0), KC_MPRV, KC_VOLD, KC_MNXT)
};
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/layers.json b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/layers.json
index 9711685d4b..e6351271ea 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/layers.json
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/kemmeldev/layers.json
@@ -1 +1 @@
-[["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_CALC", "KC_TAB", "KC_Q", "KC_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", "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_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_RCTL", "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", "KC_CALC", "KC_CAPS", "KC_BTN1", "KC_MS_U", "KC_BTN2", "KC_WH_U", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_UP", "KC_PSCR", "KC_SLCK", "KC_PAUS", "RESET", "KC_MYCM", "KC_TRNS", "KC_MS_L", "KC_MS_D", "KC_MS_R", "KC_WH_D", "KC_TRNS", "RGB_SAI", "RGB_SAD", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_TRNS", "EEP_RST", "KC_HOME", "KC_LSFT", "RGB_TOG", "RGB_MOD", "RGB_VAI", "RGB_VAD", "RGB_SPI", "RGB_SPD", "RGB_HUI", "RGB_HUD", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_VOLU", "KC_MUTE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "TO(2)", "KC_MPRV", "KC_VOLD", "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_BSPC", "KC_CALC", "KC_TAB", "KC_Q", "KC_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", "MO(3)", "KC_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_TRNS", "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_DEL", "KC_CALC", "KC_CAPS", "KC_BTN1", "KC_MS_U", "KC_BTN2", "KC_WH_U", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_UP", "KC_PSCR", "KC_SLCK", "KC_PAUS", "RESET", "KC_MYCM", "KC_TRNS", "KC_MS_L", "KC_MS_D", "KC_MS_R", "KC_WH_D", "KC_TRNS", "RGB_SAI", "RGB_SAD", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_TRNS", "EEP_RST", "KC_HOME", "KC_LSFT", "RGB_TOG", "RGB_MOD", "RGB_VAI", "RGB_VAD", "RGB_SPI", "RGB_SPD", "RGB_HUI", "RGB_HUD", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_VOLU", "KC_MUTE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "TO(0)", "KC_MPRV", "KC_VOLD", "KC_MNXT"]] \ No newline at end of file
+[["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_CALC", "KC_TAB", "KC_Q", "KC_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", "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_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_RCTL", "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", "KC_CALC", "KC_CAPS", "KC_BTN1", "KC_MS_U", "KC_BTN2", "KC_WH_U", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_UP", "KC_PSCR", "KC_SLCK", "KC_PAUS", "QK_BOOT", "KC_MYCM", "KC_TRNS", "KC_MS_L", "KC_MS_D", "KC_MS_R", "KC_WH_D", "KC_TRNS", "RGB_SAI", "RGB_SAD", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_TRNS", "EEP_RST", "KC_HOME", "KC_LSFT", "RGB_TOG", "RGB_MOD", "RGB_VAI", "RGB_VAD", "RGB_SPI", "RGB_SPD", "RGB_HUI", "RGB_HUD", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_VOLU", "KC_MUTE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "TO(2)", "KC_MPRV", "KC_VOLD", "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_BSPC", "KC_CALC", "KC_TAB", "KC_Q", "KC_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", "MO(3)", "KC_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_TRNS", "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_DEL", "KC_CALC", "KC_CAPS", "KC_BTN1", "KC_MS_U", "KC_BTN2", "KC_WH_U", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_UP", "KC_PSCR", "KC_SLCK", "KC_PAUS", "QK_BOOT", "KC_MYCM", "KC_TRNS", "KC_MS_L", "KC_MS_D", "KC_MS_R", "KC_WH_D", "KC_TRNS", "RGB_SAI", "RGB_SAD", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_TRNS", "EEP_RST", "KC_HOME", "KC_LSFT", "RGB_TOG", "RGB_MOD", "RGB_VAI", "RGB_VAD", "RGB_SPI", "RGB_SPD", "RGB_HUI", "RGB_HUD", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_VOLU", "KC_MUTE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "TO(0)", "KC_MPRV", "KC_VOLD", "KC_MNXT"]] \ No newline at end of file
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h
index 2cd513223a..cda14c4bc0 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/pascalpfeil/config.h
@@ -19,9 +19,6 @@
/* 1000Hz USB polling */
#define USB_POLLING_INTERVAL_MS 1
-/* Send up to 4 key press events per scan */
-#define QMK_KEYS_PER_SCAN 4
-
/* Force NKRO on boot up */
#define FORCE_NKRO
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/config.h b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/config.h
new file mode 100644
index 0000000000..2d2dc00132
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/config.h
@@ -0,0 +1,41 @@
+/* Copyright 2022 spx01 (@spx01)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+/* --- custom defines only used in my own code --- */
+
+/* easily switch on debugging features */
+#define CUSTOM_DEBUG false
+
+/* hexrgb mode special keys, these shouldn't be KC_A to KC_F or KC_0 to KC_9 */
+/* keycode that triggers saving the current rgb_static color into eeprom */
+#define HEXRGB_SAVE_KC KC_S
+/* keycode that triggers resetting rgb_static to the color saved in the eeprom */
+#define HEXRGB_RESET_KC KC_R
+
+/* --- keyboard configuration macros --- */
+
+#if CUSTOM_DEBUG
+# define NO_DEBUG
+# define NO_PRINT
+#endif
+
+#define RETRO_TAPPING
+#define PERMISSIVE_HOLD
+
+#undef RGB_MATRIX_STARTUP_MODE
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CUSTOM_RGB_STATIC
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/keymap.c
new file mode 100644
index 0000000000..04b1afc691
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/keymap.c
@@ -0,0 +1,158 @@
+/* Copyright 2022 spx01 (@spx01)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+enum CustomKeycodes {
+ CK_HEXRGB = SAFE_RANGE,
+ /* esc when shift is held, grave otherwise; particularly useful for windows' task manager shortcut */
+ CK_ESCG,
+};
+
+enum Layers {
+ _LAYER1,
+ _LAYER2,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // clang-format off
+ [_LAYER1] = LAYOUT_65_ansi_blocker(
+ QK_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,
+ LT(_LAYER2, KC_CAPS), KC_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),
+ [_LAYER2] = LAYOUT_65_ansi_blocker(
+ CK_ESCG, KC_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_TRNS, EE_CLR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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, CK_HEXRGB, KC_MPLY, KC_VOLU, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT),
+ /* [] = 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), */
+ // clang-format on
+};
+
+/* exported by the rgb_static effect */
+void RGB_STATIC_save_eeprom(void);
+void RGB_STATIC_reset(void);
+extern uint8_t g_rgb_static_color[3];
+
+/* returns number corresponding to hex digit represented by keycode or -1 if keycode isn't a valid hex digit */
+static int8_t key_hexdigit(uint16_t keycode) {
+ if (keycode >= KC_A && keycode <= KC_F) {
+ return keycode - KC_A + 10;
+ }
+ if (keycode >= KC_1 && keycode <= KC_0) {
+ int8_t res = keycode - KC_1 + 1;
+ /* mod 10 considering res is between 1 and 10 */
+ res *= res != 10;
+ return res;
+ }
+ return -1;
+}
+
+typedef struct {
+ bool active;
+ uint8_t color[3];
+ uint8_t count;
+} RGBHexState;
+static RGBHexState hexrgb;
+
+/* handles input mode for an rgb value */
+static void hexrgb_input(uint16_t keycode) {
+ /* only check for special keys when input mode has just been triggered */
+ if (hexrgb.count == 0) {
+ switch (keycode) {
+ case HEXRGB_SAVE_KC:
+ RGB_STATIC_save_eeprom();
+ hexrgb.active = false;
+ return;
+ case HEXRGB_RESET_KC:
+ RGB_STATIC_reset();
+ hexrgb.active = false;
+ return;
+ default:
+ }
+ }
+
+ int8_t digit = key_hexdigit(keycode);
+ /* exit input mode if an invalid key has been pressed */
+ if (digit == -1) {
+ hexrgb.count = 0;
+ hexrgb.active = false;
+ return;
+ }
+
+ /* append digit to current color */
+ uint8_t idx = hexrgb.count / 2;
+ hexrgb.color[idx] <<= 4;
+ hexrgb.color[idx] |= digit;
+
+ ++hexrgb.count;
+ /* done with input */
+ if (hexrgb.count == 6) {
+ hexrgb.active = false;
+ hexrgb.count = 0;
+ /* copy color to rgb_static's buffer */
+ for (int8_t i = 0; i < 3; ++i) {
+ g_rgb_static_color[i] = hexrgb.color[i];
+ hexrgb.color[i] = 0;
+ }
+ }
+}
+
+void keyboard_post_init_user(void) {
+#if CUSTOM_DEBUG
+ debug_enable = true;
+ debug_matrix = true;
+#endif
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ /* shift status last time ck_escg was pressed so that the correct key can be released */
+ static bool ck_escg_last_shifted;
+
+ if (hexrgb.active && record->event.pressed) {
+ hexrgb_input(keycode);
+ /* while in input mode nothing passes through */
+ return false;
+ }
+
+ switch (keycode) {
+ case CK_HEXRGB:
+ hexrgb.active = record->event.pressed;
+ return false;
+ case CK_ESCG:
+ /* if pressed, inject key, otherwise delete it */
+ if (record->event.pressed) {
+ bool shifted = get_mods() & MOD_BIT(KC_LSHIFT);
+ add_key(shifted ? KC_ESC : KC_GRV);
+ ck_escg_last_shifted = shifted;
+ } else {
+ del_key(ck_escg_last_shifted ? KC_ESC : KC_GRV);
+ }
+ send_keyboard_report();
+ return false;
+ default:
+ }
+ return true;
+}
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/readme.md b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/readme.md
new file mode 100644
index 0000000000..86b90772b0
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/readme.md
@@ -0,0 +1,23 @@
+# spx01's KBD67 MKIIRGB Layout
+
+This is a fairly simple QWERTY 2 layer layout, full list of particularities below:
+
+* Besides Fn acting like a standard layer switch, CapsLock is set to switch to layer 2 while held and activate CapsLock when tapped.
+* The Esc key/grave key (top left) is set to QMK's "Grave Escape" (sends Esc when tapped alone, Grave when tapped together with Shift/Ctrl/GUI), but on the 2nd layer it's set to the CK_ESCG custom keycode, acting like grave when tapped alone and as Esc when Shift is also held down. This means that there is easy access to both the characters (grave and tilde) and the Esc key while also allowing for shortcuts such as Ctrl+Shift+Esc with Ctrl+Shift+Caps+Esc (the Windows Task Manager shortcut).
+* The default RGB Matrix effect is set to a custom one, RGB_STATIC, which sets a solid RGB color based on a global variable, featuring EEPROM saving and automatic loading independent on the HSV EEPROM memory that the standard effects use. This was done in order to accomodate the next feature.
+* The HexRGB mode is triggered by pressing the '/' key in the second layer (CK_HEXRGB) and enables the user to type a 6 digit hexadecimal color code that is then stored as the color for the RGB_STATIC effect. If any invalid key is pressed during color input, the keymap will go back to its normal behavior without any changes to RGB.
+* Besides keys representing hexadecimal digits (0-9 and a-f), there are also 2 more keys that provide functionality in the HexRGB input mode (only as a first keypress). HEXRGB_SAVE_KC (set by default to S) triggers the RGB_STATIC effect to save the currently set RGB color to EEPROM and the HEXRGB_RESET_KC (set by default to R) resets the RGB color to the one currently saved in EEPROM. These 2 keys can be reassigned in config.h.
+
+Various 2nd layer keys:
+* 1 to '+' for F1-12
+* P for PrtSc/Print
+* Backspace for Delete
+* Home (top right key) for Insert
+* E for resetting EEPROM
+* '\\' for bootloader mode
+* Space for toggling RGB on or off
+* Right Shift for pausing media
+* Left/Right for previous track/next track
+* Up/Down for volume up/down
+
+**Note: I disabled VIA in rules.mk because I don't use it, but there is enough memory space for it to be enabled.**
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/rgb_matrix_user.inc b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/rgb_matrix_user.inc
new file mode 100644
index 0000000000..85c4dc2cad
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/rgb_matrix_user.inc
@@ -0,0 +1,68 @@
+/* Copyright 2022 spx01 (@spx01)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+RGB_MATRIX_EFFECT(RGB_STATIC)
+
+#define UNWRAP_RGB_PARAMS(x) x[0], x[1], x[2]
+#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+
+/* eeprom saved data structure */
+typedef struct {
+ union {
+ uint32_t whole;
+ uint8_t rgb[3];
+ };
+} UserData;
+
+uint8_t g_rgb_static_color[3];
+
+/* save current colors to eeprom */
+void RGB_STATIC_save_eeprom(void) {
+ UserData data = {0};
+ for (int8_t i = 0; i < 3; ++i) {
+ data.rgb[i] = g_rgb_static_color[i];
+ }
+ eeconfig_update_user(data.whole);
+}
+
+/* initialize by loading the eeprom colors */
+static void RGB_STATIC_init(void) {
+ UserData data;
+ data.whole = eeconfig_read_user();
+ for (int8_t i = 0; i < 3; ++i) {
+ g_rgb_static_color[i] = data.rgb[i];
+ }
+}
+
+/* reset colors to eeprom values */
+void RGB_STATIC_reset(void) {
+ RGB_STATIC_init();
+}
+
+static bool RGB_STATIC(effect_params_t *params) {
+ if (params->init) {
+ RGB_STATIC_init();
+ }
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+ for (uint8_t i = led_min; i < led_max; i++) {
+ RGB_MATRIX_TEST_LED_FLAGS();
+ rgb_matrix_set_color(i, UNWRAP_RGB_PARAMS(g_rgb_static_color));
+ }
+ return rgb_matrix_check_finished_leds(led_max);
+}
+
+#endif
+#undef UNWRAP_RGB_PARAMS
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/rules.mk
new file mode 100644
index 0000000000..2700c035cc
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/spx01/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = no
+LTO_ENABLE = yes
+CONSOLE_ENABLE = no
+RGB_MATRIX_CUSTOM_USER = yes
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h
index d88d384f98..a6a56cdced 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v1/config.h
@@ -1,10 +1,5 @@
#pragma once
#include "config_common.h"
-#define VENDOR_ID 0x4B42 // KB
-#define PRODUCT_ID 0x1224
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDfans
-#define PRODUCT kbd67mkiirgb v1
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v1/info.json b/keyboards/kbdfans/kbd67/mkiirgb/v1/info.json
new file mode 100644
index 0000000000..88d1bb38f4
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v1/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "kbd67mkiirgb v1",
+ "usb": {
+ "pid": "0x1224",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h
index ffdace7a5f..a5dfdae5ed 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v2/config.h
@@ -1,10 +1,5 @@
#pragma once
#include "config_common.h"
-#define VENDOR_ID 0x4B42 // KB
-#define PRODUCT_ID 0x1225
-#define DEVICE_VER 0x0002
-#define MANUFACTURER KBDfans
-#define PRODUCT kbd67mkiirgb v2
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v2/info.json b/keyboards/kbdfans/kbd67/mkiirgb/v2/info.json
new file mode 100644
index 0000000000..62f1bf6cbb
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v2/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "kbd67mkiirgb v2",
+ "usb": {
+ "pid": "0x1225",
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h
index 23b0a8a30c..cb847e9b45 100755
--- a/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v3/config.h
@@ -18,19 +18,11 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B42 // KB
-#define PRODUCT_ID 0x1226
-#define DEVICE_VER 0x0002
-#define MANUFACTURER KBDfans
-#define PRODUCT kbd67mkiirgb v3
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { F0, F1, F4, E6, C6 }
#define MATRIX_COL_PINS { F7, F6, F5, C7, B0, B1, B2, B3, B4, D7, D6, D4, D5, D3, D2}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v3/info.json b/keyboards/kbdfans/kbd67/mkiirgb/v3/info.json
new file mode 100644
index 0000000000..496016ea8c
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v3/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "kbd67mkiirgb v3",
+ "usb": {
+ "pid": "0x1226",
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h b/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h
index a63a3ee61b..f7e0e06278 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v4/config.h
@@ -18,19 +18,11 @@
#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
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v4/info.json b/keyboards/kbdfans/kbd67/mkiirgb/v4/info.json
new file mode 100644
index 0000000000..1bb937c0c2
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v4/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "kbd67mkiirgb v4",
+ "usb": {
+ "pid": "0x1227",
+ "device_version": "0.0.4"
+ }
+}
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/v4/readme.md b/keyboards/kbdfans/kbd67/mkiirgb/v4/readme.md
index b603992f69..ad8b38a62e 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/v4/readme.md
+++ b/keyboards/kbdfans/kbd67/mkiirgb/v4/readme.md
@@ -15,4 +15,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` \ No newline at end of file
diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h b/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h
index 0877d04cca..415da00b48 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/config.h
@@ -18,19 +18,11 @@
#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
diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/info.json b/keyboards/kbdfans/kbd67/mkiirgb_iso/info.json
index 36ff2f1fe5..26eabc6293 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb_iso/info.json
+++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "kbd67mkiirgb_iso",
+ "keyboard_name": "KBD67MKIIRGB ISO",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x0105",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_iso_blocker": {
"layout": [
diff --git a/keyboards/kbdfans/kbd67/mkiirgb_iso/readme.md b/keyboards/kbdfans/kbd67/mkiirgb_iso/readme.md
index 7673acc580..b542cb5aaa 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb_iso/readme.md
+++ b/keyboards/kbdfans/kbd67/mkiirgb_iso/readme.md
@@ -15,4 +15,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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`
+* **Keycode in layout**: Press the key mapped to `QK_BOOT`
diff --git a/keyboards/kbdfans/kbd67/rev1/config.h b/keyboards/kbdfans/kbd67/rev1/config.h
index b7ad8de4e2..145a928e22 100644
--- a/keyboards/kbdfans/kbd67/rev1/config.h
+++ b/keyboards/kbdfans/kbd67/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x6066
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kbdfans
-#define PRODUCT kbd67
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3, F4, F5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/kbd67/rev1/info.json b/keyboards/kbdfans/kbd67/rev1/info.json
index 6b7219f891..78d36aeeb2 100644
--- a/keyboards/kbdfans/kbd67/rev1/info.json
+++ b/keyboards/kbdfans/kbd67/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "kbd67",
+ "keyboard_name": "KBD67 Rev1",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x6066",
+ "device_version": "0.0.1"
+ },
"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":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}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
diff --git a/keyboards/kbdfans/kbd67/rev1/keymaps/koba/keymap.c b/keyboards/kbdfans/kbd67/rev1/keymaps/koba/keymap.c
index 15e995bb1c..e44da80cf8 100644
--- a/keyboards/kbdfans/kbd67/rev1/keymaps/koba/keymap.c
+++ b/keyboards/kbdfans/kbd67/rev1/keymaps/koba/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------' `------------'
*/
[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, XXXXXXX,_______,KC_INS, \
+ QK_BOOT, 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,_______,KC_INS, \
_______, RGB_RMO,RGB_MOD,RGB_TOG,RGB_HUD,RGB_HUI,XXXXXXX,XXXXXXX,KC_PSCR,KC_SLCK,KC_PAUS,XXXXXXX,XXXXXXX,XXXXXXX, _______, \
KC_CAPS, KC_VOLD,KC_VOLU,KC_MUTE,RGB_SAD,RGB_SAI,KC_PAST,KC_PSLS,KC_HOME,KC_PGUP,XXXXXXX,XXXXXXX, KC_PENT, _______, \
_______,_______,BL_DEC, BL_INC, BL_TOGG,RGB_VAD,RGB_VAI,KC_PPLS,KC_PMNS,KC_END, KC_PGDN,JP_UNDS,_______, KC_PGUP,_______, \
diff --git a/keyboards/kbdfans/kbd67/rev2/config.h b/keyboards/kbdfans/kbd67/rev2/config.h
index ce6c990d69..f156afd9b1 100644
--- a/keyboards/kbdfans/kbd67/rev2/config.h
+++ b/keyboards/kbdfans/kbd67/rev2/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x6067
-#define DEVICE_VER 0x0002
-#define MANUFACTURER KBDFans
-#define PRODUCT KBD67v2
-
/* 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
diff --git a/keyboards/kbdfans/kbd67/rev2/info.json b/keyboards/kbdfans/kbd67/rev2/info.json
index 7e23e70c40..6cad9be45d 100644
--- a/keyboards/kbdfans/kbd67/rev2/info.json
+++ b/keyboards/kbdfans/kbd67/rev2/info.json
@@ -1,7 +1,17 @@
{
- "keyboard_name": "kbd67v2",
+ "keyboard_name": "KBD67 Rev2",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x6067",
+ "device_version": "0.0.2"
+ },
+ "layout_aliases": {
+ "LAYOUT_65_ansi_blocker_splitbs": "LAYOUT_65_ansi_blocker_split_bs",
+ "LAYOUT_65_ansi_split_bs_2_right_mods": "LAYOUT_65_ansi_rwkl_split_bs"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
@@ -384,7 +394,7 @@
{"x":14, "y":4},
{"x":15, "y":4}]
},
- "LAYOUT_65_ansi_split_bs_2_right_mods": {
+ "LAYOUT_65_ansi_rwkl_split_bs": {
"layout": [
{"x":0, "y":0},
{"x":1, "y":0},
@@ -536,6 +546,163 @@
{"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}
+ ]
+ },
+ "LAYOUT_65_iso_split_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, "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":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},
+ {"x":15, "y":4}
+ ]
+ },
"LAYOUT_65_ansi_split_space": {
"layout": [
{"x":0, "y":0},
diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/adi/keymap.c b/keyboards/kbdfans/kbd67/rev2/keymaps/adi/keymap.c
index 807b67d6f1..d5d07e1312 100644
--- a/keyboards/kbdfans/kbd67/rev2/keymaps/adi/keymap.c
+++ b/keyboards/kbdfans/kbd67/rev2/keymaps/adi/keymap.c
@@ -10,7 +10,7 @@ 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_HOME,
- KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, KC_BRID, KC_BRIU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_PGUP,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, KC_BRID, KC_BRIU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_PGUP,
KC_TRNS, RGB_SPD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEP_RST, KC_PGDN,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_MPLY, KC_VOLU, KC_MUTE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MRWD, KC_VOLD, KC_MFFD
diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/brandonschlack/keymap.c b/keyboards/kbdfans/kbd67/rev2/keymaps/brandonschlack/keymap.c
index 235cb2e87e..94b94a8212 100644
--- a/keyboards/kbdfans/kbd67/rev2/keymaps/brandonschlack/keymap.c
+++ b/keyboards/kbdfans/kbd67/rev2/keymaps/brandonschlack/keymap.c
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FN1] = LAYOUT_all(
QM_MAKE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MC_LHPD, MC_MSSN, MC_SLPD, \
- RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RESET, _______, _______, _______, _______, _______, KC_F13, KC_F14, KC_F15, KC_DEL, KC_VOLU, \
+ RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, QK_BOOT, _______, _______, _______, _______, _______, KC_F13, KC_F14, KC_F15, KC_DEL, KC_VOLU, \
_______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, QM_KYMP, _______, _______, _______, TG_ADJT, KC_VOLD, \
_______, XXXXXXX, RGB_TOG, RGB_LYR, RGB_THM, QM_VRSN, _______, _______, _______, KC_MPRV, KC_MNXT, KC_MPLY, _______, KC_PGUP, KC_MUTE, \
_______, _______, _______, XXXXXXX, _______, XXXXXXX, _______, _______, XXXXXXX, KC_HOME, KC_PGDN, KC_END ),
@@ -72,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_all(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
- XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG_ADJT, 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/kbdfans/kbd67/rev2/keymaps/koba/keymap.c b/keyboards/kbdfans/kbd67/rev2/keymaps/koba/keymap.c
index 15e995bb1c..e44da80cf8 100644
--- a/keyboards/kbdfans/kbd67/rev2/keymaps/koba/keymap.c
+++ b/keyboards/kbdfans/kbd67/rev2/keymaps/koba/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------' `------------'
*/
[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, XXXXXXX,_______,KC_INS, \
+ QK_BOOT, 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,_______,KC_INS, \
_______, RGB_RMO,RGB_MOD,RGB_TOG,RGB_HUD,RGB_HUI,XXXXXXX,XXXXXXX,KC_PSCR,KC_SLCK,KC_PAUS,XXXXXXX,XXXXXXX,XXXXXXX, _______, \
KC_CAPS, KC_VOLD,KC_VOLU,KC_MUTE,RGB_SAD,RGB_SAI,KC_PAST,KC_PSLS,KC_HOME,KC_PGUP,XXXXXXX,XXXXXXX, KC_PENT, _______, \
_______,_______,BL_DEC, BL_INC, BL_TOGG,RGB_VAD,RGB_VAI,KC_PPLS,KC_PMNS,KC_END, KC_PGDN,JP_UNDS,_______, KC_PGUP,_______, \
diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/naphtaline/keymap.c b/keyboards/kbdfans/kbd67/rev2/keymaps/naphtaline/keymap.c
new file mode 100644
index 0000000000..27fbf0be53
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/rev2/keymaps/naphtaline/keymap.c
@@ -0,0 +1,58 @@
+/* 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/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap (Base Layer) Default Layer
+ * ,----------------------------------------------------------------.
+ * |GESC| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|Backsp| Del|
+ * |----------------------------------------------------------------|
+ * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| Ent |PgUp|
+ * |-------------------------------------------------------. |----|
+ * |Caps | A| S| D| F| G| H| J| K| L| ;| '| | |PgDn|
+ * |----------------------------------------------------------------|
+ * |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | Up|End |
+ * |----------------------------------------------------------------|
+ * |Ctrl|Win |Alt | Space |MS3| Space |Alt |MO1|Ctrl|Lef|Dow|Rig|
+ * `----------------------------------------------------------------'
+ */
+[0] = LAYOUT_65_iso_split_space(
+ QK_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_DELETE,
+ KC_TAB, KC_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_MS_BTN3, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ /* Keymap Fn Layer
+ * ,----------------------------------------------------------------.
+ * |~ `|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del |Mute|
+ * |----------------------------------------------------------------|
+ * | | |Up | | | | | | | | | | | |Vol+|
+ * |----------------------------------------------------------------|
+ * | |Lef|Dow|Rig| | | | | | | | | |Vol-|
+ * |----------------------------------------------------------------|
+ * | | | | | | | | | | | | | | |
+ * |----------------------------------------------------------------|
+ * | | | | Space |Space| Space | | | | | | |
+ * `----------------------------------------------------------------'
+ */
+[1] = LAYOUT_65_iso_split_space(
+ QK_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_MUTE,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, KC_SPC, KC_SPC, KC_SPC, _______, _______, _______, _______, _______, _______),
+};
diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/naphtaline/readme.md b/keyboards/kbdfans/kbd67/rev2/keymaps/naphtaline/readme.md
new file mode 100644
index 0000000000..d7b9c29e38
--- /dev/null
+++ b/keyboards/kbdfans/kbd67/rev2/keymaps/naphtaline/readme.md
@@ -0,0 +1,4 @@
+# Not the default keymap for kbd67
+
+ - this is my personnal layout, but is meant to be used as a base for the new layout LAYOUT_65_iso_split_space
+ - 3 splitted space bar. (Space - Mouse click 3 - Space)
diff --git a/keyboards/kbdfans/kbd67/rev2/keymaps/tucznak/keymap.c b/keyboards/kbdfans/kbd67/rev2/keymaps/tucznak/keymap.c
index 7c6ef155b7..0a4648d41e 100644
--- a/keyboards/kbdfans/kbd67/rev2/keymaps/tucznak/keymap.c
+++ b/keyboards/kbdfans/kbd67/rev2/keymaps/tucznak/keymap.c
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI,_______,KC_PSCR,KC_SLCK,KC_PAUS,_______,_______,_______, KC_HOME,
_______, VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD,_______,_______,_______,_______,_______, _______, KC_END,
_______,_______,BL_TOGG, BL_DEC, BL_INC, BL_BRTG,_______,_______,_______,_______,_______,_______,_______, KC_PGUP,_______,
- KC_SLEP,RESET ,_______, LCA(KC_DEL), LCA(KC_DEL), LCA(KC_DEL), LCA(KC_INS),KC_APP, _______,KC_HOME,KC_PGDN,KC_END),
+ KC_SLEP,QK_BOOT,_______, LCA(KC_DEL), LCA(KC_DEL), LCA(KC_DEL), LCA(KC_INS),KC_APP, _______,KC_HOME,KC_PGDN,KC_END),
/* Keymap Numpad Layer
* ,----------------------------------------------------------------.
diff --git a/keyboards/kbdfans/kbd67/rev2/rev2.h b/keyboards/kbdfans/kbd67/rev2/rev2.h
index 1c1c0bf418..ce2ddfab05 100644
--- a/keyboards/kbdfans/kbd67/rev2/rev2.h
+++ b/keyboards/kbdfans/kbd67/rev2/rev2.h
@@ -17,6 +17,29 @@
#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 │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 │ │
+ * ┌────────┠├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ └───┴────┘
+ * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │3E │3F │
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │40 │41 │43 │44 │46 │48 │4A │4B │4C │4D │4E │4F │
+ * └────┴────┴────┴────────┴────┴──────────┴───┴───┴───┴───┴───┴───┘
+ * ┌───────────────────┴───────────────────â”┌────┴──────â”
+ * ┌────┬────┬────┬────────────────────────â”┌─────┬─────â”
+ * Standard │40 │41 │43 │46 ││4A │4C │ RWKL (2x 1.5u)
+ * └────┴────┴────┴────────────────────────┘└─────┴─────┘
+ * ┌─────┬─────┬───────────────────────────â”┌────┬────â”
+ * WKL │40 │41 │46 ││4A │4B │ Blocker (2x 1.25u)
+ * └─────┴─────┴───────────────────────────┘└────┴────┘
+ */
+
/* This a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
@@ -33,11 +56,11 @@
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, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, KC_NO, 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, KC_NO, K3D, K3E, K3F }, \
- { K40, K41, KC_NO, K43, K44, KC_NO, K46, KC_NO, K48, KC_NO, 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, K3F }, \
+ { K40, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D, K4E, K4F }, \
}
#define LAYOUT_65_ansi( \
@@ -48,11 +71,11 @@
K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E, K4F \
) \
{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F }, \
- { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, K2F }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \
- { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \
+ { 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, K4C, K4D, K4E, K4F }, \
}
#define LAYOUT_65_ansi_blocker( \
@@ -63,11 +86,11 @@
K40, K41, K43, K46, K4A, K4B, K4D, K4E, K4F \
) \
{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F }, \
- { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, K2F }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \
- { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, K4D, K4E, K4F }, \
+ { 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 }, \
}
#define LAYOUT_65_ansi_blocker_split_bs( \
@@ -78,11 +101,11 @@
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, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, K2F }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \
- { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, KC_NO, 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, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
+ { K40, K41, ___, K43, ___, ___, K46, ___, ___, ___, K4A, K4B, ___, K4D, K4E, K4F }, \
}
#define LAYOUT_65_ansi_split_bs( \
@@ -93,14 +116,14 @@
K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E, K4F \
) \
{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
- { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, K2F }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \
- { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, 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, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
+ { K40, K41, ___, K43, ___, ___, K46, ___, ___, ___, K4A, K4B, K4C, K4D, K4E, K4F }, \
}
-#define LAYOUT_65_ansi_split_bs_2_right_mods( \
+#define LAYOUT_65_ansi_rwkl_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, \
@@ -108,11 +131,26 @@
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, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, K2F }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \
- { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, KC_NO, K4B, 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, ___, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
+ { K40, K41, ___, K43, ___, ___, K46, ___, ___, ___, K4A, ___, K4B, 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, K43, K46, 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, K3F }, \
+ { K40, K41, ___, K43, ___, ___, K46, ___, ___, ___, K4A, K4B, K4C, K4D, K4E, K4F }, \
}
#define LAYOUT_65_iso( \
@@ -123,13 +161,29 @@
K40, K41, K43, K46, K4A, K4B, K4C, K4D, K4E, K4F \
) \
{ \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, KC_NO, K0E, K0F }, \
- { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, KC_NO, 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, KC_NO, K3D, K3E, K3F }, \
- { K40, K41, KC_NO, K43, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \
+ { 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, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
+ { K40, K41, ___, K43, ___, ___, K46, ___, ___, ___, K4A, K4B, K4C, K4D, K4E, K4F }, \
}
+#define LAYOUT_65_iso_split_space( \
+ 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, K43, K44, K46, K48, K4A, K4B, K4C, K4D, K4E, K4F \
+) \
+{ \
+ { 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, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, ___, K3D, K3E, K3F }, \
+ { K40, K41, ___, K43, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D, K4E, K4F }, \
+}
+
+
#define LAYOUT_65_ansi_split_space( \
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, \
@@ -138,11 +192,9 @@
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, KC_NO, K0E, K0F }, \
- { K10, KC_NO, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
- { K20, KC_NO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, K2F }, \
- { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, K3F }, \
- { K40, K41, KC_NO, K43, K44, KC_NO, K46, KC_NO, K48, KC_NO, K4A, K4B, K4C, K4D, K4E, K4F }, \
+ { 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, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D, K4E, K4F }, \
}
-
-#define LAYOUT_65_ansi_blocker_splitbs LAYOUT_65_ansi_blocker_split_bs
diff --git a/keyboards/kbdfans/kbd6x/config.h b/keyboards/kbdfans/kbd6x/config.h
index 080bdb33b2..7eb6019c74 100644
--- a/keyboards/kbdfans/kbd6x/config.h
+++ b/keyboards/kbdfans/kbd6x/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x3658
-#define DEVICE_VER 0x0001
-#define MANUFACTURER You
-#define PRODUCT kbd6x
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B3, B2, B1, B0, D4 }
#define MATRIX_COL_PINS { F6, F5, F4, F1, E6, D0, D1, D2, D3, D5, D6, D7, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/kbd6x/info.json b/keyboards/kbdfans/kbd6x/info.json
index 2781eead10..a6e410878c 100644
--- a/keyboards/kbdfans/kbd6x/info.json
+++ b/keyboards/kbdfans/kbd6x/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "kbd6x",
+ "keyboard_name": "KBD6X",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x3658",
+ "device_version": "0.0.1"
+ },
"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":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}, {"x":13, "y":0}, {"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}, {"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}, {"x":4, "y":4, "w":7}, {"label":"Alt", "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/kbdfans/kbd6x/keymaps/dbroqua/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/dbroqua/keymap.c
index e7f6d90103..ef5533a59e 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/dbroqua/keymap.c
+++ b/keyboards/kbdfans/kbd6x/keymaps/dbroqua/keymap.c
@@ -85,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------------------´
*/
[_RGB] = 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,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, 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_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, 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,
diff --git a/keyboards/kbdfans/kbd6x/keymaps/hhkb-default-improved/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/hhkb-default-improved/keymap.c
index 80c22e5d90..0e2d450496 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/hhkb-default-improved/keymap.c
+++ b/keyboards/kbdfans/kbd6x/keymaps/hhkb-default-improved/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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_INS, RESET,
+ KC_ESC, KC_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, QK_BOOT,
KC_CAPS, 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_DEL,
KC_RCTL, KC_VOLU, KC_VOLD, KC_MUTE, KC_MPLY, KC_MSTP, KC_ASTR, KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PLUS, KC_UNDS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
diff --git a/keyboards/kbdfans/kbd6x/keymaps/hhkb-default/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/hhkb-default/keymap.c
index 03153b67ac..f59fa64ef2 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/hhkb-default/keymap.c
+++ b/keyboards/kbdfans/kbd6x/keymaps/hhkb-default/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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_INS, KC_DEL,
- KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, RESET,
+ KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, QK_BOOT,
KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_MSTP, KC_TRNS, KC_ASTR, KC_SLSH, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PLUS, KC_UNDS, 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/kbdfans/kbd6x/keymaps/mekberg/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/mekberg/keymap.c
index f3be992639..d78c51ef2d 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/mekberg/keymap.c
+++ b/keyboards/kbdfans/kbd6x/keymaps/mekberg/keymap.c
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, _______, 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, _______, QK_BOOT,
// |─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────|
// | 1,5u | | | | | | | | | | | | | 1,5u |
_______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kbdfans/kbd6x/keymaps/othi/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/othi/keymap.c
index 6bbbdd87c1..6282e1b895 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/othi/keymap.c
+++ b/keyboards/kbdfans/kbd6x/keymaps/othi/keymap.c
@@ -38,7 +38,7 @@ void eeconfig_init_user(void) {
#define DE_UDIA_CAP UC(0x00DC)
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case NM_MODE:
rgblight_setrgb (0x00, 0x66, 0x00);
break;
@@ -158,7 +158,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, TD(CTL_NM), TD(ALT_NM), KC_SPC, LM(CL,MOD_LGUI|MOD_LALT), OSL(ACCENT) , _______
),
[NM_MODE] = LAYOUT(
- KC_GRV, KC_MPRV, KC_MNXT, KC_MPLY, KC_END, _______, _______, _______, _______, _______, KC_HOME, _______, _______, RESET, KC_INS,
+ KC_GRV, KC_MPRV, KC_MNXT, KC_MPLY, KC_END, _______, _______, _______, _______, _______, KC_HOME, _______, _______, QK_BOOT, KC_INS,
LGUI(KC_TAB), _______, LCTL(KC_RGHT), _______, _______, _______, _______, KC_UP, KC_PGUP, _______, _______, _______, TG(CL), KC_DEL,
_______, KC_LEFT, _______, KC_RGHT, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_ENT, KC_QUOT, KC_LGUI,
KC_LSFT, _______, _______, _______, _______, LCTL(KC_LEFT), _______, _______, _______, _______, _______, TG(VI_MODE), TO(CL),
@@ -166,7 +166,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[VI_MODE] = LAYOUT(
- KC_GRV, KC_MPRV, KC_MNXT, KC_MPLY, LSFT(KC_END), KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, LSFT(KC_HOME), KC_F11, KC_F12, RESET, KC_INS,
+ KC_GRV, KC_MPRV, KC_MNXT, KC_MPLY, LSFT(KC_END), KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, LSFT(KC_HOME), KC_F11, KC_F12, QK_BOOT, KC_INS,
LGUI(KC_TAB), _______, LSFT(LCTL(KC_RGHT)), _______, _______, _______, _______, LSFT(KC_UP), _______, _______, _______, _______, TG(CL), KC_BSPC,
_______, _______, _______, _______, _______, _______, LSFT(LCTL(KC_LEFT)), LSFT(KC_DOWN), LSFT(KC_RGHT), _______, KC_SCLN, KC_QUOT, KC_LGUI,
KC_LSFT, _______, _______, _______, _______, LSFT(LCTL(KC_LEFT)), _______, _______, _______, _______, KC_SLSH, OSM(MOD_LSFT), TO(CL),
@@ -187,4 +187,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______
),
};
-
diff --git a/keyboards/kbdfans/kbd6x/keymaps/peott-fr/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/peott-fr/keymap.c
index c33982a517..2e52bacd21 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/peott-fr/keymap.c
+++ b/keyboards/kbdfans/kbd6x/keymaps/peott-fr/keymap.c
@@ -19,5 +19,5 @@
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_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_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, LT(2,KC_HOME), LCTL_T(KC_MPRV), LGUI_T(KC_MPLY), LALT_T(KC_MNXT), LT(1,KC_SPC), RALT_T(KC_DEL), KC_APP, RCTL_T(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_TRNS, KC_TRNS, KC_LBRC, KC_UP, KC_RBRC, KC_HOME, KC_PGUP, 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_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_MYCM, KC_PSCR, KC_ENT, KC_BSPC, KC_TRNS, KC_WREF, KC_WBAK, KC_WFWD, KC_WHOM, KC_TRNS, KC_PGUP, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_VOLU, KC_TRNS, KC_PGDN),
- [2] = LAYOUT(RGB_TOG, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_UP, KC_TRNS, KC_TRNS, KC_CAPS, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_LEFT, KC_RGHT, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_TRNS, KC_TRNS, KC_TRNS)
+ [2] = LAYOUT(RGB_TOG, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TRNS, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_UP, KC_TRNS, KC_TRNS, KC_CAPS, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_LEFT, KC_RGHT, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_TRNS, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/kbdfans/kbd6x/keymaps/wanleg/keymap.c b/keyboards/kbdfans/kbd6x/keymaps/wanleg/keymap.c
index f3aa991f31..4bf95fb4c9 100644
--- a/keyboards/kbdfans/kbd6x/keymaps/wanleg/keymap.c
+++ b/keyboards/kbdfans/kbd6x/keymaps/wanleg/keymap.c
@@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[ONE] = LAYOUT_wrapper(
- KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, BL_BRTG, BL_DEC, BL_INC, BL_TOGG, BL_STEP, BL_ON, KC_PGUP, KC_HOME, _______, _______, _______, _______, _______,
_______, RGB_M_B, RGB_VAD, RGB_VAI, RGB_TOG, RGB_MOD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______,
_______, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, KC_PGDN, KC_END, _______, gGHERKIN,_______, _______,
diff --git a/keyboards/kbdfans/kbd75/config.h b/keyboards/kbdfans/kbd75/config.h
index b54ce4d24c..a743691e70 100644
--- a/keyboards/kbdfans/kbd75/config.h
+++ b/keyboards/kbdfans/kbd75/config.h
@@ -5,11 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B42
-#define MANUFACTURER qmkbuilder
-#define PRODUCT KBD75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -17,7 +12,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5, B7 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, F5, D4, B1, B0, B5, B4, D7, D6, B3, F4, F6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/kbd75/keymaps/aaronireland/keymap.c b/keyboards/kbdfans/kbd75/keymaps/aaronireland/keymap.c
index d12ee6e1fb..32f59cfb10 100644
--- a/keyboards/kbdfans/kbd75/keymaps/aaronireland/keymap.c
+++ b/keyboards/kbdfans/kbd75/keymaps/aaronireland/keymap.c
@@ -160,11 +160,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* QRT - QWERTY Layout
* CLK - COLEMAK Layout
* DVK - DVORAK Layout
- * RESET - Put PCB into Bootstrap mode
+ * QK_BOOT - Put PCB into Bootstrap mode
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
* │ │ │ │ │ │ │ │ │ │ │ │ │ │PSN│ │ │
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┴───┼───┤
- * │ │TOG│MOD│HU+│HU-│SA+│SA-│VA+│VA-│ │ │ │ │ RESET │F13│
+ * │ │TOG│MOD│HU+│HU-│SA+│SA-│VA+│VA-│ │ │ │ │ QK_BOOT │F13│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
* │ TAB │QRT│ │ │ │ │ │ │ │ │ │ │ │ │SNU│
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
@@ -178,7 +178,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FL] = LAYOUT_ansi_1u(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CAPP, _______, _______,
- _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, RESET , KC_F13 ,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, QK_BOOT, KC_F13 ,
KC_TAB , QWERTY , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SNU ,
KC_CAPS, _______, _______, DVORAK , _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SND ,
_______, _______, _______, COLEMAK, BL_DEC , BL_TOGG, BL_INC , BL_STEP, _______, _______, _______, _______, KC_PAUS, KC_MUTE,
diff --git a/keyboards/kbdfans/kbd75/keymaps/adit/keymap.c b/keyboards/kbdfans/kbd75/keymaps/adit/keymap.c
index af4243c49d..c9f201ac60 100644
--- a/keyboards/kbdfans/kbd75/keymaps/adit/keymap.c
+++ b/keyboards/kbdfans/kbd75/keymaps/adit/keymap.c
@@ -12,7 +12,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kbdfans/kbd75/keymaps/broswen/keymap.c b/keyboards/kbdfans/kbd75/keymaps/broswen/keymap.c
index 3828cb4a1f..bfbdd9111a 100644
--- a/keyboards/kbdfans/kbd75/keymaps/broswen/keymap.c
+++ b/keyboards/kbdfans/kbd75/keymaps/broswen/keymap.c
@@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MNXT, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______,
_______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kbdfans/kbd75/keymaps/digital/keymap.c b/keyboards/kbdfans/kbd75/keymaps/digital/keymap.c
index cb43052c22..ba751369bd 100644
--- a/keyboards/kbdfans/kbd75/keymaps/digital/keymap.c
+++ b/keyboards/kbdfans/kbd75/keymaps/digital/keymap.c
@@ -12,7 +12,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, KC_INS,
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kbdfans/kbd75/keymaps/edulpn/keymap.c b/keyboards/kbdfans/kbd75/keymaps/edulpn/keymap.c
index 998f1a25d2..9a3c61f7d4 100644
--- a/keyboards/kbdfans/kbd75/keymaps/edulpn/keymap.c
+++ b/keyboards/kbdfans/kbd75/keymaps/edulpn/keymap.c
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[MAC_FN_LAYER] = LAYOUT(
- RESET, KC_BRID, KC_BRIU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MRWD, KC_MPLY, KC_MFFD, KC__MUTE, KC__VOLDOWN, KC__VOLUP, KC_TRNS, KC_TRNS, KC_INS,
+ QK_BOOT, KC_BRID, KC_BRIU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MRWD, KC_MPLY, KC_MFFD, KC__MUTE, KC__VOLDOWN, KC__VOLUP, KC_TRNS, KC_TRNS, KC_INS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case WINDOWS_LAYER:
rgblight_setrgb_blue();
break;
diff --git a/keyboards/kbdfans/kbd75/keymaps/ethan605/keymap.c b/keyboards/kbdfans/kbd75/keymaps/ethan605/keymap.c
index 4a987b9a90..79424226da 100644
--- a/keyboards/kbdfans/kbd75/keymaps/ethan605/keymap.c
+++ b/keyboards/kbdfans/kbd75/keymaps/ethan605/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────â”
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ FN │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┴─────┼─────┤
- * │ │ │ │ │ │ │ │ │ │ │ │ │ │ RESET │ │
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ QK_BOOT │ │
* ├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬────────┼─────┤
* │ │ TOG │ MOD │ HU+ │ HU- │ SA+ │ SA- │ VA+ │ VA- │ │ │ │ │ │ │ // RGB controls
* ├────────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴────────┼─────┤
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[1] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, 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/kbd75/keymaps/kingwangwong/keymap.c b/keyboards/kbdfans/kbd75/keymaps/kingwangwong/keymap.c
index fb074e1210..486294c980 100644
--- a/keyboards/kbdfans/kbd75/keymaps/kingwangwong/keymap.c
+++ b/keyboards/kbdfans/kbd75/keymaps/kingwangwong/keymap.c
@@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 3: Control layer
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────â”
- * │RESET│QWERT│FORTY│ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * │QK_BOOT│QWERT│FORTY│ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├─────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴─────┼─────┤
@@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 3: Control layer */
[_CL] = LAYOUT(
- RESET, TO(_QW), TO(_FO), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
+ QK_BOOT, TO(_QW), TO(_FO), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD,
KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL, _______, _______, KC_VOLU,
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, _______, KC_VOLD,
@@ -136,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 3: D control layer */
[_DL] = LAYOUT(
- RESET, TO(_QW), TO(_FO), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
+ QK_BOOT, TO(_QW), TO(_FO), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD,
_______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, KC_VOLU,
_______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______, KC_VOLD,
diff --git a/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c b/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c
index 87cab80f59..de656357f9 100644
--- a/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c
+++ b/keyboards/kbdfans/kbd75/keymaps/noroadsleft/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2020-2021 James Young (@noroadsleft)
+/* Copyright 2020-2022 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
@@ -16,22 +16,6 @@
#include "noroadsleft.h"
-#define LAYOUT_75_ansi_wkl( \
- 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, K313, K315, \
- K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, K415, \
- K500, K501, K506, K510, K512, K513, K514, K515 \
-) { \
- { 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, K114, K115 }, \
- { K200, KC_NO, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215 }, \
- { K300, KC_NO, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, KC_NO, K315 }, \
- { K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414, K415 }, \
- { K500, K501, KC_NO, KC_NO, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, KC_NO, K512, K513, K514, K515 } \
-}
-
enum layer_names {
_DV,
_QW,
@@ -88,13 +72,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, DM_REC1,
_______, KC_CALC, KC_APP, G_PUSH, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS, DM_REC2,
- _______, M_SALL, _______, G_FTCH, _______, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, DM_RSTP, DM_PLY1,
+ _______, M_SALL, _______, G_FTCH, G_PWD, _______, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, DM_RSTP, DM_PLY1,
_______, M_UNDO, M_CUT, M_COPY, M_PASTE, G_BRCH, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, DM_PLY2,
_______, _______, _______, _______, _______, _______, _______, _______
),
[_SY] = LAYOUT_75_ansi_wkl(
- TG(_SY), TO(_DV), TO(_QW), XXXXXXX, TG(_Q2), XXXXXXX, XXXXXXX, XXXXXXX, RESET, EEP_RST, DEBUG, XXXXXXX, VRSN, XXXXXXX, XXXXXXX, XXXXXXX,
+ TG(_SY), TO(_DV), TO(_QW), XXXXXXX, TG(_Q2), XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, EE_CLR, DB_TOGG, 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,
diff --git a/keyboards/kbdfans/kbd75/keymaps/smt/keymap.c b/keyboards/kbdfans/kbd75/keymaps/smt/keymap.c
index edf01c854e..87edeed1c9 100644
--- a/keyboards/kbdfans/kbd75/keymaps/smt/keymap.c
+++ b/keyboards/kbdfans/kbd75/keymaps/smt/keymap.c
@@ -125,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ RGB │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ │ │RESET│ │ │QWRTY│COLMK│DVORK│ │ │ │ │█████│RGBV+│
+ * │ │ │ │ │QK_BOOT│ │ │QWRTY│COLMK│DVORK│ │ │ │ │█████│RGBV+│
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ _CL │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│RGBV-│
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
@@ -139,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_CL] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, \
- _______, _______, _______, _______, RESET, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, RGB_VAI, \
+ _______, _______, _______, _______, QK_BOOT, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, RGB_VAI, \
_______, _______, MO(_CL), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, \
MO(_FL), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, _______, \
_______, _______, _______, _______, RGB_MOD, _______, _______, MO(_FL), _______, RGB_HUD, RGB_SAD, RGB_HUI),
diff --git a/keyboards/kbdfans/kbd75/keymaps/spacemanspiff/keymap.c b/keyboards/kbdfans/kbd75/keymaps/spacemanspiff/keymap.c
index 05e7c56713..e0541293c7 100644
--- a/keyboards/kbdfans/kbd75/keymaps/spacemanspiff/keymap.c
+++ b/keyboards/kbdfans/kbd75/keymaps/spacemanspiff/keymap.c
@@ -21,8 +21,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN] = LAYOUT(
- RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, BL_STEP, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c b/keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c
index 1221e753a4..476b50b8e4 100644
--- a/keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c
+++ b/keyboards/kbdfans/kbd75/keymaps/tucznak/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FUNC), KC_RCTRL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FUNC] = LAYOUT_ansi_1u(
- RESET, KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLCK, KC_PAUS,
+ QK_BOOT, KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLCK, KC_PAUS,
KC_TRNS, MACRO1, MACRO2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
MACROTAB, 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_NUBS, KC_TRNS,
KC_TRNS, VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, DYN_REC_START2, DYN_MACRO_PLAY2, KC_TRNS, KC_TRNS,
diff --git a/keyboards/kbdfans/kbd75/rev1/config.h b/keyboards/kbdfans/kbd75/rev1/config.h
deleted file mode 100644
index 9e036b5839..0000000000
--- a/keyboards/kbdfans/kbd75/rev1/config.h
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2020 QMK
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
diff --git a/keyboards/kbdfans/kbd75/rev1/info.json b/keyboards/kbdfans/kbd75/rev1/info.json
index 499b9e9a43..fe1541b78f 100644
--- a/keyboards/kbdfans/kbd75/rev1/info.json
+++ b/keyboards/kbdfans/kbd75/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "KBD75 rev1",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_ansi_1u": "LAYOUT_75_ansi"
},
diff --git a/keyboards/kbdfans/kbd75/rev2/config.h b/keyboards/kbdfans/kbd75/rev2/config.h
deleted file mode 100644
index c65ac48677..0000000000
--- a/keyboards/kbdfans/kbd75/rev2/config.h
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2020 QMK
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#define PRODUCT_ID 0x6061
-#define DEVICE_VER 0x0002
diff --git a/keyboards/kbdfans/kbd75/rev2/info.json b/keyboards/kbdfans/kbd75/rev2/info.json
index 8518527eed..ac07971b59 100644
--- a/keyboards/kbdfans/kbd75/rev2/info.json
+++ b/keyboards/kbdfans/kbd75/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "KBD75 rev2",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x6061",
+ "device_version": "0.0.2"
+ },
"layout_aliases": {
"LAYOUT_ansi_1u": "LAYOUT_75_ansi"
},
diff --git a/keyboards/kbdfans/kbd75hs/config.h b/keyboards/kbdfans/kbd75hs/config.h
index bf14934d2b..6cb9064461 100644
--- a/keyboards/kbdfans/kbd75hs/config.h
+++ b/keyboards/kbdfans/kbd75hs/config.h
@@ -18,19 +18,11 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x6062
-#define DEVICE_VER 0x0003
-#define MANUFACTURER KBDFANS
-#define PRODUCT KBD75_HOTSWAP
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { E6, B0, B1, B2, B3, B6 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/kbd75hs/info.json b/keyboards/kbdfans/kbd75hs/info.json
index f1d3368827..d9982d3d6f 100644
--- a/keyboards/kbdfans/kbd75hs/info.json
+++ b/keyboards/kbdfans/kbd75hs/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "KBD75HS",
+ "keyboard_name": "KBD75 Hotswap",
+ "manufacturer": "KBDfans",
"maintainer": "DZTECH",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x6062",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_75_ansi": {
"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":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "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", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "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":"Page Up", "x":15, "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":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"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":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}]
diff --git a/keyboards/kbdfans/kbd75hs/readme.md b/keyboards/kbdfans/kbd75hs/readme.md
index 4f7943d4fe..0326a1e008 100644
--- a/keyboards/kbdfans/kbd75hs/readme.md
+++ b/keyboards/kbdfans/kbd75hs/readme.md
@@ -16,6 +16,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/kbd75rgb/config.h b/keyboards/kbdfans/kbd75rgb/config.h
index 2499c25933..eff9c8eae1 100644
--- a/keyboards/kbdfans/kbd75rgb/config.h
+++ b/keyboards/kbdfans/kbd75rgb/config.h
@@ -18,19 +18,11 @@
#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
diff --git a/keyboards/kbdfans/kbd75rgb/info.json b/keyboards/kbdfans/kbd75rgb/info.json
new file mode 100644
index 0000000000..32201ff192
--- /dev/null
+++ b/keyboards/kbdfans/kbd75rgb/info.json
@@ -0,0 +1,106 @@
+{
+ "keyboard_name": "KBD75RGB",
+ "manufacturer": "KBDfans",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x6063",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_75_ansi": {
+ "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": "PrintScr", "x":13, "y":0},
+ {"label": "Ins", "x":14, "y":0},
+ {"label": "Home", "x":15, "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, "w":2},
+ {"label": "End", "x":15, "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": "Pg Up", "x":15, "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": "Pg Dn", "x":15, "y":3},
+
+ {"label": "Shift", "x":0, "y":4, "w":2.25},
+ {"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": "Up", "x":14, "y":4},
+ {"label": "Del", "x":15, "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},
+ {"label": "GUI", "x":11, "y":5},
+ {"label": "Ctrl", "x":12, "y":5},
+ {"label": "Left", "x":13, "y":5},
+ {"label": "Down", "x":14, "y":5},
+ {"label": "Right", "x":15, "y":5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kbdfans/kbd75rgb/readme.md b/keyboards/kbdfans/kbd75rgb/readme.md
index 2dc002022f..acd3d30329 100644
--- a/keyboards/kbdfans/kbd75rgb/readme.md
+++ b/keyboards/kbdfans/kbd75rgb/readme.md
@@ -13,7 +13,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/kbdfans/kbd8x/config.h b/keyboards/kbdfans/kbd8x/config.h
index b53a898a27..e37124632b 100644
--- a/keyboards/kbdfans/kbd8x/config.h
+++ b/keyboards/kbdfans/kbd8x/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER KBDFans
-#define PRODUCT kbd8x
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6, B7, D4, F0, D6, D7 }
#define MATRIX_COL_PINS { D1, D0, F7, F6, F5, D5, D3, D2, C7, C6, B5, F4, F1, B4, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/kbd8x/info.json b/keyboards/kbdfans/kbd8x/info.json
index fb2e97a296..8749577d63 100644
--- a/keyboards/kbdfans/kbd8x/info.json
+++ b/keyboards/kbdfans/kbd8x/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "KBD 8X",
+ "keyboard_name": "KBD8X",
+ "manufacturer": "KBDfans",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"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}, {"x":13, "y":1.5}, {"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":"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":1.75}, {"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":"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/kbdfans/kbd8x_mk2/config.h b/keyboards/kbdfans/kbd8x_mk2/config.h
index 010bba4617..7a2b2aa3c8 100644
--- a/keyboards/kbdfans/kbd8x_mk2/config.h
+++ b/keyboards/kbdfans/kbd8x_mk2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0005
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDfans
-#define PRODUCT KBD8X-MKII
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, B0, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/kbd8x_mk2/info.json b/keyboards/kbdfans/kbd8x_mk2/info.json
index 82aacc550d..162b037dc2 100644
--- a/keyboards/kbdfans/kbd8x_mk2/info.json
+++ b/keyboards/kbdfans/kbd8x_mk2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "kbd8x_mk2",
+ "keyboard_name": "KBD8X-MKII",
+ "manufacturer": "KBDfans",
"url": "https://kb.ai03.me/projects/kbd8x-mkii.html",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0005",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kbdfans/kbdmini/config.h b/keyboards/kbdfans/kbdmini/config.h
index a3e0a0237e..1f7d095e9f 100644
--- a/keyboards/kbdfans/kbdmini/config.h
+++ b/keyboards/kbdfans/kbdmini/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x2001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DZTECH
-#define PRODUCT KBDMINI
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -25,7 +18,6 @@
*/
#define MATRIX_ROW_PINS { B7, E6, F5, F4 }
#define MATRIX_COL_PINS { B3, B2, B1, B0, F1, F0, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/kbdmini/info.json b/keyboards/kbdfans/kbdmini/info.json
index c3d04c9d16..4b2bac56a9 100644
--- a/keyboards/kbdfans/kbdmini/info.json
+++ b/keyboards/kbdfans/kbdmini/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "KBDMini",
+ "keyboard_name": "KBDMINI",
+ "manufacturer": "DZTECH",
"url": "",
"maintainer": "KBDFans",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x2001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kbdfans/kbdpad/mk1/config.h b/keyboards/kbdfans/kbdpad/mk1/config.h
index 80a1abef57..28ce21e88e 100644
--- a/keyboards/kbdfans/kbdpad/mk1/config.h
+++ b/keyboards/kbdfans/kbdpad/mk1/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x422D
-#define DEVICE_VER 0x0200
-#define MANUFACTURER KBDfans
-#define PRODUCT KBDPAD Mk. I
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
diff --git a/keyboards/kbdfans/kbdpad/mk1/info.json b/keyboards/kbdfans/kbdpad/mk1/info.json
index 760d1d94ea..97736cf44f 100644
--- a/keyboards/kbdfans/kbdpad/mk1/info.json
+++ b/keyboards/kbdfans/kbdpad/mk1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "KBDfans KBDPad MKI",
+ "keyboard_name": "KBDPAD Mk. I",
+ "manufacturer": "KBDfans",
"url": "https://kbdfans.com/products/kbdfans-pad-custom-mechanical-keyboard-diy-kit",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x422D",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kbdfans/kbdpad/mk2/config.h b/keyboards/kbdfans/kbdpad/mk2/config.h
index 99f3792d55..c0f1632169 100644
--- a/keyboards/kbdfans/kbdpad/mk2/config.h
+++ b/keyboards/kbdfans/kbdpad/mk2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0006
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDfans
-#define PRODUCT KBDPAD-MKII
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, D1, D2, C6, C7, B6 }
#define MATRIX_COL_PINS { C4, C5, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/kbdpad/mk2/info.json b/keyboards/kbdfans/kbdpad/mk2/info.json
index 2f61318575..11522e14f8 100644
--- a/keyboards/kbdfans/kbdpad/mk2/info.json
+++ b/keyboards/kbdfans/kbdpad/mk2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "kbdpad_mk2",
+ "keyboard_name": "KBDPAD-MKII",
+ "manufacturer": "KBDfans",
"url": "https://kb.ai03.me/projects/kbdpad-mkii.html",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0006",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_6x4": {
"layout": [
diff --git a/keyboards/kbdfans/maja/config.h b/keyboards/kbdfans/maja/config.h
index 19a5e1dfa4..0800de1ece 100755
--- a/keyboards/kbdfans/maja/config.h
+++ b/keyboards/kbdfans/maja/config.h
@@ -2,12 +2,6 @@
#include "config_common.h"
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x6068
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDFANS
-#define PRODUCT MAJA
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { F0, B6, B5, B4, D7 }
diff --git a/keyboards/kbdfans/maja/info.json b/keyboards/kbdfans/maja/info.json
index 3245687689..edd26a26fe 100644
--- a/keyboards/kbdfans/maja/info.json
+++ b/keyboards/kbdfans/maja/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MAJA",
+ "keyboard_name": "Maja",
+ "manufacturer": "KBDFans",
"url": "",
"maintainer": "DZTECH",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x6068",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kbdfans/maja_soldered/config.h b/keyboards/kbdfans/maja_soldered/config.h
index bc284893d5..62a0201c17 100755
--- a/keyboards/kbdfans/maja_soldered/config.h
+++ b/keyboards/kbdfans/maja_soldered/config.h
@@ -17,12 +17,6 @@
#include "config_common.h"
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x6069
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDFANS
-#define PRODUCT MAJA_SOLDERED
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { F0, B6, D6, B4, D7 }
diff --git a/keyboards/kbdfans/maja_soldered/info.json b/keyboards/kbdfans/maja_soldered/info.json
index 407a189f60..296ece294c 100644
--- a/keyboards/kbdfans/maja_soldered/info.json
+++ b/keyboards/kbdfans/maja_soldered/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MAJA_SOLDERED",
+ "keyboard_name": "Maja Soldered",
+ "manufacturer": "KBDFans",
"url": "",
"maintainer": "DZTECH",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x6069",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kbdfans/niu_mini/config.h b/keyboards/kbdfans/niu_mini/config.h
index 82f23e3d5c..945c932da9 100644
--- a/keyboards/kbdfans/niu_mini/config.h
+++ b/keyboards/kbdfans/niu_mini/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6E6D
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDFans
-#define PRODUCT NIU Mini
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -34,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* NIU Mini PCB default pin-out */
#define MATRIX_ROW_PINS { D0, D1, D2, D3 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B3, B1, B0, D5, B7, C7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/niu_mini/info.json b/keyboards/kbdfans/niu_mini/info.json
index 1c4310576e..12a004d63e 100644
--- a/keyboards/kbdfans/niu_mini/info.json
+++ b/keyboards/kbdfans/niu_mini/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NIU Mini",
+ "manufacturer": "KBDFans",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x6E6D",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
diff --git a/keyboards/kbdfans/niu_mini/keymaps/abhixec/keymap.c b/keyboards/kbdfans/niu_mini/keymaps/abhixec/keymap.c
index 6d3ff8a376..a373b463ab 100644
--- a/keyboards/kbdfans/niu_mini/keymaps/abhixec/keymap.c
+++ b/keyboards/kbdfans/niu_mini/keymaps/abhixec/keymap.c
@@ -121,7 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_mit(
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
_______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/kbdfans/niu_mini/keymaps/codecoffeecode/keymap.c b/keyboards/kbdfans/niu_mini/keymaps/codecoffeecode/keymap.c
index 7c794b2037..523b6cf1a0 100644
--- a/keyboards/kbdfans/niu_mini/keymaps/codecoffeecode/keymap.c
+++ b/keyboards/kbdfans/niu_mini/keymaps/codecoffeecode/keymap.c
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, KC_F11, KC_F12, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Layer 2 (r_ Indicates RGB Controls)
diff --git a/keyboards/kbdfans/niu_mini/keymaps/dyesub/keymap.c b/keyboards/kbdfans/niu_mini/keymaps/dyesub/keymap.c
index d859062d39..752aa519c8 100644
--- a/keyboards/kbdfans/niu_mini/keymaps/dyesub/keymap.c
+++ b/keyboards/kbdfans/niu_mini/keymaps/dyesub/keymap.c
@@ -51,7 +51,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_DEL,
_______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT
),
/* Layer 2 (r_ Indicates RGB Controls)
diff --git a/keyboards/kbdfans/niu_mini/keymaps/edvard/keymap.c b/keyboards/kbdfans/niu_mini/keymaps/edvard/keymap.c
index aca4a86b0e..69613cfbcf 100644
--- a/keyboards/kbdfans/niu_mini/keymaps/edvard/keymap.c
+++ b/keyboards/kbdfans/niu_mini/keymaps/edvard/keymap.c
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_NO, KC_NO, KC_PWR, KC_NO, RGB_M_G, KC_NO, KC_NO, KC_7, KC_8, KC_9, KC_NO, KC_BSPC,
KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO, KC_NO, KC_4, KC_5, KC_6, KC_NO, KC_NO,
KC_TRNS, KC_NO, RGB_RMOD, RGB_MOD, RGB_TOG, KC_NO, KC_NO, KC_1, KC_2, KC_3, KC_NO, KC_NO,
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_0, KC_COMM, KC_DOT, KC_NO, RESET
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_SPC, KC_0, KC_COMM, KC_DOT, KC_NO, QK_BOOT
),
/* ARROWS
diff --git a/keyboards/kbdfans/niu_mini/keymaps/framtava/keymap.c b/keyboards/kbdfans/niu_mini/keymaps/framtava/keymap.c
index 5ffbd1b49a..ec06d54d0c 100644
--- a/keyboards/kbdfans/niu_mini/keymaps/framtava/keymap.c
+++ b/keyboards/kbdfans/niu_mini/keymaps/framtava/keymap.c
@@ -163,7 +163,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_mit(
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, 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, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/kbdfans/niu_mini/keymaps/mason/keymap.c b/keyboards/kbdfans/niu_mini/keymaps/mason/keymap.c
index 4f2e2b37b5..d8b5b37c54 100644
--- a/keyboards/kbdfans/niu_mini/keymaps/mason/keymap.c
+++ b/keyboards/kbdfans/niu_mini/keymaps/mason/keymap.c
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_mit(
- _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_POWER,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_POWER,
_______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_HUI, RGB_HUD, RGB_MOD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/kbdfans/niu_mini/keymaps/planck/keymap.c b/keyboards/kbdfans/niu_mini/keymaps/planck/keymap.c
index f7f933c7b1..bfd95e137f 100644
--- a/keyboards/kbdfans/niu_mini/keymaps/planck/keymap.c
+++ b/keyboards/kbdfans/niu_mini/keymaps/planck/keymap.c
@@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_mit(
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, 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, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/kbdfans/niu_mini/keymaps/tobias/keymap.c b/keyboards/kbdfans/niu_mini/keymaps/tobias/keymap.c
index 935dd5c506..67f0111112 100644
--- a/keyboards/kbdfans/niu_mini/keymaps/tobias/keymap.c
+++ b/keyboards/kbdfans/niu_mini/keymaps/tobias/keymap.c
@@ -8,7 +8,7 @@
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
@@ -103,8 +103,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_EQL, S(KC_EQL), RALT(KC_2), RALT(KC_3), RALT(KC_4), RALT(KC_E), KC_RBRC, RALT(KC_7), RALT(KC_8), RALT(KC_9), RALT(KC_0), RALT(KC_MINS),
KC_LSFT, KC_NUBS, RALT(KC_NUBS), S(KC_NUBS), DGRMCRO, XXXXXXX, XXXXXXX, RALT(KC_M), KC_RBRC, S(KC_RBRC), RALT(KC_RBRC), _______,
_______, _______, KC_RALT, _______,TO(_ADJUST), _______, _______, _______, _______, _______, _______, TO(_QWERTY)
-),
-
+),
+
/* Lower
* ,-----------------------------------------------------------------------------------.
@@ -154,7 +154,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- TO(_GAMEMODE), RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, WRKMOD,
+ TO(_GAMEMODE), QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, WRKMOD,
_______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_HUI, RGB_HUD, RGB_MOD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, RGB_MODE_FORWARD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_R, TO(_QWERTY)
@@ -257,10 +257,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
else {
workmode = false;
- return false;
- }
+ return false;
+ }
}
-
+
}
return true;
}
@@ -293,7 +293,7 @@ void rgbflag(uint8_t r, uint8_t g, uint8_t b) {
layer_state_t layer_state_set_user(layer_state_t state) {
// if(rgblight_get_mode() == 1) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _QWERTY:
if(!workmode){
rgblight_mode(9);
@@ -312,7 +312,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
tap_code(KC_NLCK);
}
rgbflag(0xFF, 0x00, 0x00);
-
+
break;
case _ADJUST:
rgblight_mode(1);
@@ -350,7 +350,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
rgblight_mode(1);
if(bnumlock) {
tap_code(KC_NLCK);
- }
+ }
rgbflag(0xFF, 0xFF, 0xFF);
break;
}
@@ -363,8 +363,8 @@ layer_state_t layer_state_set_user(layer_state_t state) {
//Layer LED indicators
uint32_t layer = layer_state;
-
-
+
+
if (layer & (1<<2)) {
if(!bnumlock) {
numlock_changed = true;
@@ -373,10 +373,10 @@ layer_state_t layer_state_set_user(layer_state_t state) {
bnumlock = true;
}
}
-}
+}
*/
-
-
+
+
void led_set_user(uint8_t usb_led) {
if (usb_led & (1 << USB_LED_NUM_LOCK)) {
@@ -410,4 +410,4 @@ void led_set_user(uint8_t usb_led) {
}
-} \ No newline at end of file
+}
diff --git a/keyboards/kbdfans/niu_mini/keymaps/tucznak/keymap.c b/keyboards/kbdfans/niu_mini/keymaps/tucznak/keymap.c
index 94743fe2c8..47adafeffa 100644
--- a/keyboards/kbdfans/niu_mini/keymaps/tucznak/keymap.c
+++ b/keyboards/kbdfans/niu_mini/keymaps/tucznak/keymap.c
@@ -108,7 +108,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, BL_STEP, _______, KC_SLEP, _______, _______, _______, DYN_REC_START1, DYN_MACRO_PLAY1, DYN_REC_STOP, _______, KC_VOLU,
_______, VLK_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, DYN_REC_START2, DYN_MACRO_PLAY2, _______, _______, KC_VOLD,
_______, RGB_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, KC_MSTP, KC_MUTE,
- RESET, _______, _______, _______, _______, LCA(KC_DEL), LCA(KC_INS), _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
+ QK_BOOT, _______, _______, _______, _______, LCA(KC_DEL), LCA(KC_INS), _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
)
};
diff --git a/keyboards/kbdfans/niu_mini/keymaps/xtonhasvim/keymap.c b/keyboards/kbdfans/niu_mini/keymaps/xtonhasvim/keymap.c
index bfda812738..639d3b69e8 100644
--- a/keyboards/kbdfans/niu_mini/keymaps/xtonhasvim/keymap.c
+++ b/keyboards/kbdfans/niu_mini/keymaps/xtonhasvim/keymap.c
@@ -116,7 +116,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_mit(
- RGB_MODE_PLAIN, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ RGB_MODE_PLAIN, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
RGB_MODE_REVERSE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI,
RGB_MODE_FORWARD, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, RGB_VAD,
RGB_TOG, TO(_QWERTY), _______, _______, _______, _______, _______, _______, _______, TO(_QWERTY), X_____X
@@ -187,7 +187,7 @@ void rgbflag(uint8_t r, uint8_t g, uint8_t b, uint8_t rr, uint8_t gg, uint8_t bb
void set_state_leds(void) {
if (rgblight_get_mode() == 1) {
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _RAISE:
rgbflag(C_BLU, C_GRN);
break;
diff --git a/keyboards/kbdfans/odin/rgb/config.h b/keyboards/kbdfans/odin/rgb/config.h
index 9e2a12fcca..571f6d0d1c 100644
--- a/keyboards/kbdfans/odin/rgb/config.h
+++ b/keyboards/kbdfans/odin/rgb/config.h
@@ -15,18 +15,11 @@
*/
#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
diff --git a/keyboards/kbdfans/odin/rgb/info.json b/keyboards/kbdfans/odin/rgb/info.json
index d5c63b5700..b4845f9468 100644
--- a/keyboards/kbdfans/odin/rgb/info.json
+++ b/keyboards/kbdfans/odin/rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ODIN_RGB",
- "maintainer": "moyi4681",
+ "keyboard_name": "Odin RGB",
+ "manufacturer": "KBDFans",
"url": "",
+ "maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x0102",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kbdfans/odin/rgb/readme.md b/keyboards/kbdfans/odin/rgb/readme.md
index 3530fcca40..e37fc13ce1 100644
--- a/keyboards/kbdfans/odin/rgb/readme.md
+++ b/keyboards/kbdfans/odin/rgb/readme.md
@@ -16,6 +16,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/config.h b/keyboards/kbdfans/odin/soldered/config.h
index d51dd06e82..57ad7e8533 100644
--- a/keyboards/kbdfans/odin/soldered/config.h
+++ b/keyboards/kbdfans/odin/soldered/config.h
@@ -15,19 +15,11 @@
*/
#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
diff --git a/keyboards/kbdfans/odin/soldered/info.json b/keyboards/kbdfans/odin/soldered/info.json
index 1e4da0d275..bfc6f6f1bc 100644
--- a/keyboards/kbdfans/odin/soldered/info.json
+++ b/keyboards/kbdfans/odin/soldered/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ODIN_SOLDERED",
- "maintainer": "moyi4681",
+ "keyboard_name": "Odin Soldered",
+ "manufacturer": "KBDFans",
"url": "",
+ "maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x0101",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kbdfans/odin/soldered/readme.md b/keyboards/kbdfans/odin/soldered/readme.md
index 1ffc34597f..723bceecb2 100644
--- a/keyboards/kbdfans/odin/soldered/readme.md
+++ b/keyboards/kbdfans/odin/soldered/readme.md
@@ -16,6 +16,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/phaseone/config.h b/keyboards/kbdfans/phaseone/config.h
index 42fcdedc6a..34ab024a60 100644
--- a/keyboards/kbdfans/phaseone/config.h
+++ b/keyboards/kbdfans/phaseone/config.h
@@ -16,18 +16,12 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x0103
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDFans
-#define PRODUCT phaseone
+
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 }
#define MATRIX_COL_PINS { B5, C6, C7, F7, F6, F5, F4, F1, E6, B7, D0, D1, D2, D3, D5 }
-#define UNUSED_PINS
#define LED_NUM_LOCK_PIN D7
#define LED_CAPS_LOCK_PIN D6
#define LED_PIN_ON_STATE 0
diff --git a/keyboards/kbdfans/phaseone/info.json b/keyboards/kbdfans/phaseone/info.json
index 31f64801c9..45ad884530 100644
--- a/keyboards/kbdfans/phaseone/info.json
+++ b/keyboards/kbdfans/phaseone/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Phase One",
+ "manufacturer": "KBDFans",
"url": "",
"maintainer": "moyi4681",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x0103",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_65_ansi_wkl": "LAYOUT_65_ansi_blocker_tsangan_wkl"
},
diff --git a/keyboards/kbdfans/phaseone/readme.md b/keyboards/kbdfans/phaseone/readme.md
index b5b21da672..451a3e2a44 100644
--- a/keyboards/kbdfans/phaseone/readme.md
+++ b/keyboards/kbdfans/phaseone/readme.md
@@ -12,7 +12,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/kbdfans/tiger80/config.h b/keyboards/kbdfans/tiger80/config.h
index ea68effd4f..207f627f7e 100644
--- a/keyboards/kbdfans/tiger80/config.h
+++ b/keyboards/kbdfans/tiger80/config.h
@@ -18,18 +18,10 @@
#include "config_common.h"
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x0011
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBDFANS
-#define PRODUCT TIGER80
-
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS { B0, E6, B1, B4, D1, D2 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, D3, D5, D4, D6, D7, B5, B6, C6, E2, D0 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kbdfans/tiger80/info.json b/keyboards/kbdfans/tiger80/info.json
index 2d331500c5..42ed680b28 100644
--- a/keyboards/kbdfans/tiger80/info.json
+++ b/keyboards/kbdfans/tiger80/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "tiger80",
+ "keyboard_name": "Tiger80",
+ "manufacturer": "KBDFans",
"url": "",
"maintainer": "kbdfans",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x0011",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_all": "LAYOUT_tkl_f13_ansi_tsangan"
},
diff --git a/keyboards/kbdfans/tiger80/readme.md b/keyboards/kbdfans/tiger80/readme.md
index 60190805d7..c5fc056875 100644
--- a/keyboards/kbdfans/tiger80/readme.md
+++ b/keyboards/kbdfans/tiger80/readme.md
@@ -16,6 +16,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/kbnordic/nordic60/info.json b/keyboards/kbnordic/nordic60/info.json
deleted file mode 100644
index aa5a82a002..0000000000
--- a/keyboards/kbnordic/nordic60/info.json
+++ /dev/null
@@ -1,361 +0,0 @@
-{
- "keyboard_name": "Nordic60 Rev A",
- "url": "kbnordic.se",
- "maintainer": "4pplet",
- "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":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":"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":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":"\\|", "w":1.5, "x":13.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":"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":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", "w":1.75, "x":12.25, "y":3},
- {"label":"Fn", "x":14, "y":3},
-
- {"label":"Ctrl", "w":1.25, "x":0, "y":4},
- {"label":"Win", "w":1.25, "x":1.25, "y":4},
- {"label":"Alt", "w":1.25, "x":2.5, "y":4},
- {"label":"Space", "w":6.25, "x":3.75, "y":4},
- {"label":"Alt", "w":1.25, "x":10, "y":4},
- {"label":"Win", "w":1.25, "x":11.25, "y":4},
- {"label":"Menu", "w":1.25, "x":12.5, "y":4},
- {"label":"Ctrl", "w":1.25, "x":13.75, "y":4}
- ]
- },
- "LAYOUT_60_iso": {
- "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":"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":"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":"Win", "x":11.25, "y":4, "w":1.25},
- {"label":"Menu", "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":"`\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},
- {"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":"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":"Win", "x":11.25, "y":4, "w":1.25},
- {"label":"Menu", "x":12.5, "y":4, "w":1.25},
- {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
- ]
- },
- "LAYOUT_60_ansi": {
- "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":"=+", "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":"Win", "x":11.25, "y":4, "w":1.25},
- {"label":"Menu", "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":"`~", "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":"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":"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":"Win", "x":11.25, "y":4, "w":1.25},
- {"label":"Menu", "x":12.5, "y":4, "w":1.25},
- {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
- ]
- }
- }
-}
diff --git a/keyboards/kbnordic/nordic60/keymaps/all/keymap.c b/keyboards/kbnordic/nordic60/keymaps/all/keymap.c
index 57475e95ed..2d677ab328 100644
--- a/keyboards/kbnordic/nordic60/keymaps/all/keymap.c
+++ b/keyboards/kbnordic/nordic60/keymaps/all/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL),
// basic 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_TRNS, KC_TRNS,
+ QK_BOOT, KC_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_LEFT, KC_DOWN, KC_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/kbnordic/nordic60/readme.md b/keyboards/kbnordic/nordic60/readme.md
index 7b4f29d22e..43b2bb761d 100644
--- a/keyboards/kbnordic/nordic60/readme.md
+++ b/keyboards/kbnordic/nordic60/readme.md
@@ -17,4 +17,4 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the ESC key
* **Physical reset button**: Briefly press the button on the back of the PCB (S301) or short the two pads in the "RST" header.
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/kbnordic/nordic60/rev_a/config.h b/keyboards/kbnordic/nordic60/rev_a/config.h
index be555417d7..d2b6b5712b 100644
--- a/keyboards/kbnordic/nordic60/rev_a/config.h
+++ b/keyboards/kbnordic/nordic60/rev_a/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4445
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KBNORDIC
-#define PRODUCT Nordic60 Rev A
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/kbnordic/nordic60/rev_a/info.json b/keyboards/kbnordic/nordic60/rev_a/info.json
new file mode 100644
index 0000000000..99d8fe874c
--- /dev/null
+++ b/keyboards/kbnordic/nordic60/rev_a/info.json
@@ -0,0 +1,367 @@
+{
+ "keyboard_name": "Nordic60 Rev A",
+ "manufacturer": "KBNORDIC",
+ "url": "kbnordic.se",
+ "maintainer": "4pplet",
+ "usb": {
+ "vid": "0x4445",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
+ "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":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":"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":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":"\\|", "w":1.5, "x":13.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":"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":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", "w":1.75, "x":12.25, "y":3},
+ {"label":"Fn", "x":14, "y":3},
+
+ {"label":"Ctrl", "w":1.25, "x":0, "y":4},
+ {"label":"Win", "w":1.25, "x":1.25, "y":4},
+ {"label":"Alt", "w":1.25, "x":2.5, "y":4},
+ {"label":"Space", "w":6.25, "x":3.75, "y":4},
+ {"label":"Alt", "w":1.25, "x":10, "y":4},
+ {"label":"Win", "w":1.25, "x":11.25, "y":4},
+ {"label":"Menu", "w":1.25, "x":12.5, "y":4},
+ {"label":"Ctrl", "w":1.25, "x":13.75, "y":4}
+ ]
+ },
+ "LAYOUT_60_iso": {
+ "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":"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":"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":"Win", "x":11.25, "y":4, "w":1.25},
+ {"label":"Menu", "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":"`\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},
+ {"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":"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":"Win", "x":11.25, "y":4, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
+ ]
+ },
+ "LAYOUT_60_ansi": {
+ "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":"=+", "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":"Win", "x":11.25, "y":4, "w":1.25},
+ {"label":"Menu", "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":"`~", "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":"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":"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":"Win", "x":11.25, "y":4, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":4, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kc60/config.h b/keyboards/kc60/config.h
index c536ab83f0..8939dd2fbe 100644
--- a/keyboards/kc60/config.h
+++ b/keyboards/kc60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x530A
-#define PRODUCT_ID 0x6FFC
-#define DEVICE_VER 0x0001
-#define MANUFACTURER NPKC
-#define PRODUCT KC60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, F6, F7, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kc60/info.json b/keyboards/kc60/info.json
index a92a72f6a1..e3c4efa411 100644
--- a/keyboards/kc60/info.json
+++ b/keyboards/kc60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "KC60",
+ "manufacturer": "NPKC",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x530A",
+ "pid": "0x6FFC",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kc60/keymaps/noroadsleft/keymap.c b/keyboards/kc60/keymaps/noroadsleft/keymap.c
index 1721861b9a..37091fccdd 100644
--- a/keyboards/kc60/keymaps/noroadsleft/keymap.c
+++ b/keyboards/kc60/keymaps/noroadsleft/keymap.c
@@ -1,4 +1,4 @@
-/* Copyright 2018-2021 James Young (@noroadsleft)
+/* Copyright 2018-2022 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
@@ -101,13 +101,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MA] = LAYOUT_60_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DM_REC1, DM_REC2, _______,
_______, _______, _______, G_PUSH, _______, _______, _______, _______, _______, _______, _______, DM_PLY1, DM_PLY2, DM_RSTP,
- _______, _______, _______, G_FTCH, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, G_FTCH, G_PWD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, G_BRCH, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
[_SY] = LAYOUT_60_ansi(
- TG(_SY), TO(_DV), TO(_QW), TO(_CM), TG(_Q2), XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, DEBUG, XXXXXXX, VRSN, XXXXXXX,
+ TG(_SY), TO(_DV), TO(_QW), TO(_CM), TG(_Q2), XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, DB_TOGG, XXXXXXX, VRSN, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 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,
diff --git a/keyboards/kc60/keymaps/sgoodwin/keymap.c b/keyboards/kc60/keymaps/sgoodwin/keymap.c
index 79b0b8af4e..be439c365e 100644
--- a/keyboards/kc60/keymaps/sgoodwin/keymap.c
+++ b/keyboards/kc60/keymaps/sgoodwin/keymap.c
@@ -25,6 +25,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, BL_INC, BL_DEC, BL_STEP, \
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO, KC_TRNS, \
KC_TRNS, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, \
- KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_NO, DEBUG, RESET, KC_TRNS, KC_NO \
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_NO, DEBUG, QK_BOOT, KC_TRNS, KC_NO \
),
};
diff --git a/keyboards/kc60/keymaps/stanleylai/keymap.c b/keyboards/kc60/keymaps/stanleylai/keymap.c
index 54428f2875..ccc2644d6a 100644
--- a/keyboards/kc60/keymaps/stanleylai/keymap.c
+++ b/keyboards/kc60/keymaps/stanleylai/keymap.c
@@ -33,13 +33,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// RGB Layer
[_RGBL] = LAYOUT(
#ifdef RGBLIGHT_ENABLE
- 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, \
+ QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_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, RGB_TOG,RGB_MOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,BL_STEP,BL_TOGG, KC_TRNS, KC_TRNS,\
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_NO, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS),
#else
- 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, \
+ QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_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, BL_STEP,BL_TOGG, KC_TRNS, KC_TRNS,\
diff --git a/keyboards/kc60/keymaps/wigguno/keymap.c b/keyboards/kc60/keymaps/wigguno/keymap.c
index 00cf194336..add7ccec9a 100644
--- a/keyboards/kc60/keymaps/wigguno/keymap.c
+++ b/keyboards/kc60/keymaps/wigguno/keymap.c
@@ -47,6 +47,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, BL_DEC, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_TRNS, KC_TRNS, KC_TRNS, \
- RESET, KC_TRNS, KC_TRNS, BL_TOGG, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
+ QK_BOOT, KC_TRNS, KC_TRNS, BL_TOGG, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS \
),
};
diff --git a/keyboards/kc60/keymaps/workman-dead/keymap.c b/keyboards/kc60/keymaps/workman-dead/keymap.c
index b524b61cf7..6c3560d393 100644
--- a/keyboards/kc60/keymaps/workman-dead/keymap.c
+++ b/keyboards/kc60/keymaps/workman-dead/keymap.c
@@ -116,7 +116,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_CMDQ, KC_CMDD, KC_CSTB, KC_C_TB, _______, _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______, _______, KC_INS, \
KC_LSFT, KC_CMDA, KC_CMDS, KC_C_LF, KC_C_RT, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_HOME, KC_END, _______, KC_BSPC, \
KC_LSFT, _______, KC_CMDZ, KC_CMDX, _______, KC_CMDC, KC_CMDV, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, \
- KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS, _______, KC_RALT, KC_RGUI, KC_RCTL, RESET),
+ KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS, _______, KC_RALT, KC_RGUI, KC_RCTL, QK_BOOT),
// mouse layer
/*
diff --git a/keyboards/kc60/keymaps/ws2812/keymap.c b/keyboards/kc60/keymaps/ws2812/keymap.c
index e0a5f600e7..aca89bf9a0 100644
--- a/keyboards/kc60/keymaps/ws2812/keymap.c
+++ b/keyboards/kc60/keymaps/ws2812/keymap.c
@@ -9,7 +9,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, LT(1, 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, XXXXXXX, XXXXXXX,
+ QK_BOOT, 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, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_PSCR, KC_SLCK, KC_PAUS,
XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX,
_______, XXXXXXX, XXXXXXX, BL_DEC, BL_TOGG, BL_INC, BL_BRTG, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, _______, _______,
diff --git a/keyboards/kc60se/config.h b/keyboards/kc60se/config.h
index 876aa891df..f6d4e2e42b 100644
--- a/keyboards/kc60se/config.h
+++ b/keyboards/kc60se/config.h
@@ -19,19 +19,11 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Unknown
-#define PRODUCT kc60se
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
/* * Keyboard Matrix Assignments */
-#define UNUSED_PINS
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 }
diff --git a/keyboards/kc60se/info.json b/keyboards/kc60se/info.json
index 1c8cde0989..f36972e0a0 100644
--- a/keyboards/kc60se/info.json
+++ b/keyboards/kc60se/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "kc60se",
+ "manufacturer": "Unknown",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/keebio/bamfk1/config.h b/keyboards/keebio/bamfk1/config.h
index 5cd86a9d16..908b969da9 100644
--- a/keyboards/keebio/bamfk1/config.h
+++ b/keyboards/keebio/bamfk1/config.h
@@ -5,13 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1111
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Keebio
-#define PRODUCT BAMFK-1
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
diff --git a/keyboards/keebio/bamfk1/info.json b/keyboards/keebio/bamfk1/info.json
index 817eb98af0..858dcfc948 100644
--- a/keyboards/keebio/bamfk1/info.json
+++ b/keyboards/keebio/bamfk1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BAMFK-1",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1111",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keebio/bamfk1/readme.md b/keyboards/keebio/bamfk1/readme.md
index a90ee8ac8c..5fdd285afd 100644
--- a/keyboards/keebio/bamfk1/readme.md
+++ b/keyboards/keebio/bamfk1/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/keebio/bamfk4/bamfk4.c b/keyboards/keebio/bamfk4/bamfk4.c
new file mode 100644
index 0000000000..6a382bfaf6
--- /dev/null
+++ b/keyboards/keebio/bamfk4/bamfk4.c
@@ -0,0 +1,37 @@
+// Copyright 2022 Danny Nguyen (@nooges)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "bamfk4.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { NO_LED, NO_LED, NO_LED, NO_LED },
+}, {
+ // LED Index to Physical Position
+ //through switch
+ { 26.6, 10 }, { 4.3, 10 }, { 3.8, 49.3 }, { 23.3, 49.3 },
+ { 69.4, 49.3 }, { 68.9, 10 }, { 90.6, 10 }, { 89.5, 49.3 },
+ { 134, 49.3 }, { 132.9, 10 }, { 155.7, 10 }, { 155.1, 49.3 },
+ { 199.6, 49.3 }, { 199.6, 10 }, { 219.1, 10 }, { 219.1, 49.3 },
+
+ //underglow
+ { 218, 62.2 }, { 188.7, 62.2 }, { 159.5, 62.2 }, { 123.7, 62.2 }, //bottom right
+ { 100.3, 62.2 }, { 59.1, 62.2 }, { 35.3, 62.2 }, { 5.4, 62.2 }, //bottom left
+ { 6, 6.4 }, { 35.3, 6.4 }, { 59.1, 6.4 }, { 100.3, 6.4 }, //top left
+ { 123.7, 6.4 }, { 159.5, 6.4 }, { 188.7, 6.4 }, { 218, 6.4 } //top right
+}, {
+ // LED Index to Flag
+ 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
+} };
+
+
+
+#endif \ No newline at end of file
diff --git a/keyboards/keebio/bamfk4/bamfk4.h b/keyboards/keebio/bamfk4/bamfk4.h
new file mode 100644
index 0000000000..0bdc2f602f
--- /dev/null
+++ b/keyboards/keebio/bamfk4/bamfk4.h
@@ -0,0 +1,12 @@
+// Copyright 2022 Danny Nguyen (@nooges)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT( \
+ k00, k01, k02, k03 \
+) { \
+ { k00, k01, k02, k03 }, \
+}
diff --git a/keyboards/keebio/bamfk4/config.h b/keyboards/keebio/bamfk4/config.h
new file mode 100644
index 0000000000..b18b94da10
--- /dev/null
+++ b/keyboards/keebio/bamfk4/config.h
@@ -0,0 +1,146 @@
+// Copyright 2022 Danny Nguyen (@nooges)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+
+/* key matrix size */
+#define MATRIX_ROWS 1
+#define MATRIX_COLS 4
+
+/*
+ * Keyboard Matrix Assignments
+ */
+#define MATRIX_ROW_PINS { F0 }
+#define MATRIX_COL_PINS { E6, D5, B6, B7 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN D3
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 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 */
+/*== enabled 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
+# define RGBLIGHT_DEFAULT_VAL 120
+# 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_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_KEYPRESSES
+//# endif
+#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
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/keebio/bamfk4/info.json b/keyboards/keebio/bamfk4/info.json
new file mode 100644
index 0000000000..1d04f4348b
--- /dev/null
+++ b/keyboards/keebio/bamfk4/info.json
@@ -0,0 +1,20 @@
+{
+ "keyboard_name": "BAMFK-4",
+ "url": "https://keeb.io",
+ "maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1114",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x": 0, "y": 0, "w": 2, "h": 2},
+ {"x": 2, "y": 0, "w": 2, "h": 2},
+ {"x": 4, "y": 0, "w": 2, "h": 2},
+ {"x": 6, "y": 0, "w": 2, "h": 2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keebio/bamfk4/keymaps/default/keymap.c b/keyboards/keebio/bamfk4/keymaps/default/keymap.c
new file mode 100644
index 0000000000..960c436da3
--- /dev/null
+++ b/keyboards/keebio/bamfk4/keymaps/default/keymap.c
@@ -0,0 +1,18 @@
+// Copyright 2021 Danny Nguyen (@nooges)
+// 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 {
+ _MAIN,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_MAIN] = LAYOUT(
+ KC_A,
+ KC_B,
+ KC_C,
+ KC_D
+ )
+}; \ No newline at end of file
diff --git a/keyboards/keebio/bamfk4/keymaps/via/keymap.c b/keyboards/keebio/bamfk4/keymaps/via/keymap.c
new file mode 100644
index 0000000000..454d9c6d62
--- /dev/null
+++ b/keyboards/keebio/bamfk4/keymaps/via/keymap.c
@@ -0,0 +1,15 @@
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _MAIN,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_MAIN] = LAYOUT(
+ KC_A,
+ KC_B,
+ KC_C,
+ KC_D
+ )
+}; \ No newline at end of file
diff --git a/keyboards/keebio/bamfk4/keymaps/via/rules.mk b/keyboards/keebio/bamfk4/keymaps/via/rules.mk
new file mode 100644
index 0000000000..25da8e7e85
--- /dev/null
+++ b/keyboards/keebio/bamfk4/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+MOUSEKEY_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/keebio/bamfk4/rules.mk b/keyboards/keebio/bamfk4/rules.mk
new file mode 100644
index 0000000000..b8ae254413
--- /dev/null
+++ b/keyboards/keebio/bamfk4/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 = 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
+ENCODER_ENABLE = no
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+LTO_ENABLE = yes
diff --git a/keyboards/keebio/bdn9/info.json b/keyboards/keebio/bdn9/info.json
index e383395eea..4bb378ea7a 100644
--- a/keyboards/keebio/bdn9/info.json
+++ b/keyboards/keebio/bdn9/info.json
@@ -1,7 +1,10 @@
{
- "keyboard_name": "Keebio BDN9",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "Keebio",
+ "usb": {
+ "vid": "0xCB10"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keebio/bdn9/keymaps/bcat/keymap.c b/keyboards/keebio/bdn9/keymaps/bcat/keymap.c
index 2028deb4f1..2313dec9d3 100644
--- a/keyboards/keebio/bdn9/keymaps/bcat/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/bcat/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F1, KC_F2, KC_F3
),
[LAYER_FUNCTION_1] = LAYOUT(
- EEP_RST, _______, RESET,
+ EEP_RST, _______, QK_BOOT,
KC_F10, KC_F11, KC_F12,
KC_F7, KC_F8, KC_F9
),
diff --git a/keyboards/keebio/bdn9/keymaps/codecoffeecode/keymap.c b/keyboards/keebio/bdn9/keymaps/codecoffeecode/keymap.c
index bce81500d5..89956afd7c 100644
--- a/keyboards/keebio/bdn9/keymaps/codecoffeecode/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/codecoffeecode/keymap.c
@@ -28,12 +28,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MPRV, MO(1), KC_MNXT
),
/*
- | RESET | Home | Media Stop |
+ | QK_BOOT | Home | Media Stop |
| | End | |
| CTRL_END | | CTRL_HOME |
*/
[1] = LAYOUT(
- RESET , KC_HOME, KC_STOP,
+ QK_BOOT, KC_HOME, KC_STOP,
_______, KC_END, _______,
LCTL(KC_END), _______, LCTL(KC_HOME)
),
diff --git a/keyboards/keebio/bdn9/keymaps/ghostseven/keymap.c b/keyboards/keebio/bdn9/keymaps/ghostseven/keymap.c
index 4d323a3126..1a1df0d501 100644
--- a/keyboards/keebio/bdn9/keymaps/ghostseven/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/ghostseven/keymap.c
@@ -34,12 +34,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LEFT, KC_DOWN, KC_RGHT
),
/*
- | RESET | Shift+CMD+B (Build VS Code) | Media Stop |
+ | QK_BOOT | Shift+CMD+B (Build VS Code) | Media Stop |
| Held: Layer 2 | Home | RGB Mode |
| Media Previous | End | Media Next |
*/
[1] = LAYOUT(
- RESET , S(G(KC_B)), KC_STOP,
+ QK_BOOT, S(G(KC_B)), KC_STOP,
_______, KC_HOME, RGB_MOD,
KC_MPRV, KC_END , KC_MNXT
),
diff --git a/keyboards/keebio/bdn9/keymaps/hbbisenieks/keymap.c b/keyboards/keebio/bdn9/keymaps/hbbisenieks/keymap.c
index 50d44bea14..1b44e88ccf 100644
--- a/keyboards/keebio/bdn9/keymaps/hbbisenieks/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/hbbisenieks/keymap.c
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//`-------+-------+-------'
),
/*
- | RESET | N/A | Media Stop |
+ | QK_BOOT | N/A | Media Stop |
| Held: Layer 2 | Home | RGB Mode |
| Media Previous | End | Media Next |
*/
diff --git a/keyboards/keebio/bdn9/keymaps/mousepad/keymap.c b/keyboards/keebio/bdn9/keymaps/mousepad/keymap.c
index 760bb3d5e5..268dd8002a 100644
--- a/keyboards/keebio/bdn9/keymaps/mousepad/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/mousepad/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_WH_D, TT(1), KC_WH_R
),
[1] = LAYOUT(
- RESET, KC_ACL0, KC_ACL1,
+ QK_BOOT, KC_ACL0, KC_ACL1,
KC_VOLU, KC_ACL2, KC_BRIU,
KC_VOLD, TO(1), KC_BRID
),
diff --git a/keyboards/keebio/bdn9/keymaps/rishka/keymap.c b/keyboards/keebio/bdn9/keymaps/rishka/keymap.c
index 9777debc3e..f164f66567 100644
--- a/keyboards/keebio/bdn9/keymaps/rishka/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/rishka/keymap.c
@@ -28,12 +28,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LEFT, KC_DOWN, KC_RGHT
),
/*
- | RESET | N/A | Media Stop |
+ | QK_BOOT | N/A | Media Stop |
| Held: Layer 2 | Home | RGB Mode |
| Media Previous | End | Media Next |
*/
[1] = LAYOUT(
- RESET , KC_HOME, _______,
+ QK_BOOT, KC_HOME, _______,
_______, _______, _______,
KC_MPRV, KC_END , KC_MNXT
),
diff --git a/keyboards/keebio/bdn9/keymaps/via/keymap.c b/keyboards/keebio/bdn9/keymaps/via/keymap.c
index fc5f22cd8b..6efb6003de 100644
--- a/keyboards/keebio/bdn9/keymaps/via/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/via/keymap.c
@@ -1,42 +1,45 @@
#include QMK_KEYBOARD_H
-enum encoder_names {
- _LEFT,
- _RIGHT,
- _MIDDLE,
-};
-
enum layer_names {
- _ZERO,
- _ONE,
- _TWO,
- _THREE
+ _MAIN,
+ _FN1,
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[_ZERO] = LAYOUT(
+[_MAIN] = LAYOUT(
KC_MPLY, KC_HOME, KC_MUTE,
MO(1), KC_UP, RGB_MOD,
KC_LEFT, KC_DOWN, KC_RGHT
),
-[_ONE] = LAYOUT(
- QK_BOOT, BL_STEP, KC_STOP,
+[_FN1] = LAYOUT(
+ QK_BOOT, BL_STEP, KC_STOP,
_______, KC_HOME, RGB_MOD,
KC_MPRV, KC_END , KC_MNXT
),
-[_TWO] = LAYOUT(
+[_FN2] = LAYOUT(
_______, _______, _______,
_______, _______, _______,
_______, _______, _______
),
-[_THREE] = LAYOUT(
+[_FN3] = LAYOUT(
_______, _______, _______,
_______, _______, _______,
_______, _______, _______
)
};
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_MAIN] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_UP, KC_DOWN), ENCODER_CCW_CW(KC_PGUP, KC_PGDN) },
+ [_FN1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN2] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
+ [_FN3] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
+};
+#endif
diff --git a/keyboards/keebio/bdn9/keymaps/via/rules.mk b/keyboards/keebio/bdn9/keymaps/via/rules.mk
index d96967a608..a7017de2b6 100644
--- a/keyboards/keebio/bdn9/keymaps/via/rules.mk
+++ b/keyboards/keebio/bdn9/keymaps/via/rules.mk
@@ -3,3 +3,4 @@ LTO_ENABLE = yes
MOUSEKEY_ENABLE = yes
CONSOLE_ENABLE = yes
COMMAND_ENABLE = no
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keebio/bdn9/keymaps/vosechu-browser/keymap.c b/keyboards/keebio/bdn9/keymaps/vosechu-browser/keymap.c
index f473c9a1f9..4b0fb147ec 100644
--- a/keyboards/keebio/bdn9/keymaps/vosechu-browser/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/vosechu-browser/keymap.c
@@ -11,7 +11,7 @@ enum custom_keycodes {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
- RESET , PAWFIVE, RELOAD ,
+ QK_BOOT, PAWFIVE, RELOAD ,
SLACKUP, KC_UP , KC_PGUP,
SLACKDN, KC_DOWN, KC_PGDN
),
diff --git a/keyboards/keebio/bdn9/keymaps/vosechu-ksp/keymap.c b/keyboards/keebio/bdn9/keymaps/vosechu-ksp/keymap.c
index a449c3ec3d..66483b51de 100644
--- a/keyboards/keebio/bdn9/keymaps/vosechu-ksp/keymap.c
+++ b/keyboards/keebio/bdn9/keymaps/vosechu-ksp/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX, XXXXXXX, XXXXXXX
),
[_PANIC] = LAYOUT(
- RESET , BASE , XXXXXXX,
+ QK_BOOT, BASE , XXXXXXX,
_______, XXXXXXX, _______,
KC_F2 , KC_F5 , KC_F9
),
@@ -64,7 +64,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
flight_mode = false;
rcs_mode = false;
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _PANIC:
panic_mode = true; // For use in encoder evaluation
rgblight_sethsv_noeeprom(HSV_RED);
diff --git a/keyboards/keebio/bdn9/rev1/config.h b/keyboards/keebio/bdn9/rev1/config.h
index ed5d5953f7..a674477d99 100644
--- a/keyboards/keebio/bdn9/rev1/config.h
+++ b/keyboards/keebio/bdn9/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1133
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT BDN9 Rev. 1
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
diff --git a/keyboards/keebio/bdn9/rev1/info.json b/keyboards/keebio/bdn9/rev1/info.json
new file mode 100644
index 0000000000..768ad3ad9b
--- /dev/null
+++ b/keyboards/keebio/bdn9/rev1/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "BDN9 Rev. 1",
+ "usb": {
+ "pid": "0x1133",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/keebio/bdn9/rev2/config.h b/keyboards/keebio/bdn9/rev2/config.h
index f9eb3babca..e3d004fc27 100644
--- a/keyboards/keebio/bdn9/rev2/config.h
+++ b/keyboards/keebio/bdn9/rev2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x2133
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Keebio
-#define PRODUCT BDN9 Rev. 2
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -55,6 +48,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// RGB Matrix
# ifdef RGB_MATRIX_ENABLE
# define DRIVER_LED_TOTAL RGBLED_NUM
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+# 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
diff --git a/keyboards/keebio/bdn9/rev2/info.json b/keyboards/keebio/bdn9/rev2/info.json
new file mode 100644
index 0000000000..2a610ba304
--- /dev/null
+++ b/keyboards/keebio/bdn9/rev2/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "BDN9 Rev. 2",
+ "usb": {
+ "pid": "0x2133",
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/keebio/bfo9000/config.h b/keyboards/keebio/bfo9000/config.h
index 7bb150d8cf..74d8bfbc46 100644
--- a/keyboards/keebio/bfo9000/config.h
+++ b/keyboards/keebio/bfo9000/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1169
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT BFO-9000
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
diff --git a/keyboards/keebio/bfo9000/info.json b/keyboards/keebio/bfo9000/info.json
index c492ccae18..3e455b3d6e 100644
--- a/keyboards/keebio/bfo9000/info.json
+++ b/keyboards/keebio/bfo9000/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Keebio BFO-9000",
+ "keyboard_name": "BFO-9000",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "Keebio",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1169",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keebio/bfo9000/keymaps/abstractkb/keymap.c b/keyboards/keebio/bfo9000/keymaps/abstractkb/keymap.c
index 29531b9973..ad56226ac6 100644
--- a/keyboards/keebio/bfo9000/keymaps/abstractkb/keymap.c
+++ b/keyboards/keebio/bfo9000/keymaps/abstractkb/keymap.c
@@ -42,7 +42,7 @@ void matrix_post_init_user(void) {
}
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _LIST:
rgblight_sethsv_noeeprom(0,255,255);
rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL);
@@ -87,6 +87,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true;
}
}
-
-
-
diff --git a/keyboards/keebio/bfo9000/keymaps/insertsnideremarks/keymap.c b/keyboards/keebio/bfo9000/keymaps/insertsnideremarks/keymap.c
index ba272ca63c..60bbbbdebe 100644
--- a/keyboards/keebio/bfo9000/keymaps/insertsnideremarks/keymap.c
+++ b/keyboards/keebio/bfo9000/keymaps/insertsnideremarks/keymap.c
@@ -272,7 +272,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
,-----------------------------------------------------------------------. ,-----------------------------------------------------------------------.
| | | | | | | | | | | | | | | | | | | |
|-------+-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------+-------+-------|
- | |Colemak| Qwerty| |ColmkGM| QWGM | | | | | | | | Numpad| | | | | RESET |
+ | |Colemak| Qwerty| |ColmkGM| QWGM | | | | | | | | Numpad| | | | | QK_BOOT |
|-------+-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------+-------+-------|
| | | | | | | | | | | | | | | | | | | |
|-------+-------+-------+-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------+-------+-------+-------|
@@ -285,7 +285,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, COLEMAK, QWERTY, _______, COLEMAKGM, QWERTYGM, _______, _______, _______, _______, _______, _______, NUMPAD, _______, _______, _______, _______, RESET,
+ _______, COLEMAK, QWERTY, _______, COLEMAKGM, QWERTYGM, _______, _______, _______, _______, _______, _______, NUMPAD, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -294,7 +294,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST2] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, COLEMAK, QWERTY, _______, COLEMAKGM, QWERTYGM, _______, _______, _______, _______, _______, _______, NUMPAD, _______, _______, _______, _______, RESET,
+ _______, COLEMAK, QWERTY, _______, COLEMAKGM, QWERTYGM, _______, _______, _______, _______, _______, _______, NUMPAD, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keebio/bfo9000/keymaps/rogthefrog6x9/keymap.c b/keyboards/keebio/bfo9000/keymaps/rogthefrog6x9/keymap.c
new file mode 100644
index 0000000000..8cdf12545b
--- /dev/null
+++ b/keyboards/keebio/bfo9000/keymaps/rogthefrog6x9/keymap.c
@@ -0,0 +1,20 @@
+// Copyright 2022 rogthefrog
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _BASE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_BASE] = LAYOUT(
+ KC_ESC, KC_CALC, 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_VOLU, KC_MUTE,
+ KC_NUM, KC_INS, KC_ESC, KC_1, KC_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_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_END,
+ KC_P4, KC_P5, KC_P6, 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_ENT, KC_INS, KC_PGUP,
+ 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_RCTL, KC_APP, KC_UP, KC_PGDN,
+ KC_P0, KC_PDOT, KC_ENT, KC_LCTL, KC_LGUI, KC_LALT, KC_CAPS, KC_ENT, KC_BSPC, KC_SPC, KC_BSPC, KC_RGUI, KC_CUT, KC_COPY, KC_PSTE, KC_LEFT, KC_DOWN, KC_RGHT
+)
+};
diff --git a/keyboards/keebio/bfo9000/keymaps/shadyproject/keymap.c b/keyboards/keebio/bfo9000/keymaps/shadyproject/keymap.c
index 56b21454d2..faa858da72 100644
--- a/keyboards/keebio/bfo9000/keymaps/shadyproject/keymap.c
+++ b/keyboards/keebio/bfo9000/keymaps/shadyproject/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
QWERTY
(Keys separated by /: tap for first, hold for second; uses Space Cadet Shifts)
,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------.
- | ESC | RESET | F1 | F2 | F3 | F4 | F5 | | | | | | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ | ESC | QK_BOOT | F1 | F2 | F3 | F4 | F5 | | | | | | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
|--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
| | | 1 | 2 | 3 | 4 | 5 | | | | | | 6 | 7 | 8 | 9 | 0 | | |
|--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
@@ -45,7 +45,7 @@ QWERTY
`--------------------------------------------------------------------------------' `--------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT(
- KC_ESC, 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_ESC, QK_BOOT, KC_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_BSLS, _______,
_______, KC_GRV, 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_EQL, _______,
_______, _______, KC_A, KC_S, KC_D, KC_F, KC_G, KC_TAB, MO(_FUNC), MO(_FUNC), KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, _______, // TODO: use OSL instead of MO
diff --git a/keyboards/keebio/bfo9000/keymaps/tuesdayjohn/keymap.c b/keyboards/keebio/bfo9000/keymaps/tuesdayjohn/keymap.c
index fe951ac019..604717b0c5 100644
--- a/keyboards/keebio/bfo9000/keymaps/tuesdayjohn/keymap.c
+++ b/keyboards/keebio/bfo9000/keymaps/tuesdayjohn/keymap.c
@@ -273,7 +273,7 @@ Adjust layer
,--------------------------------------------------------------------------------. ,--------------------------------------------------------------------------------.
| | | | | | | | | | | | | | | | | | | |
|--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
- | | Colemak| Qwerty | | Gaming | | | | | | | | | Numpad | | | | | RESET |
+ | | Colemak| Qwerty | | Gaming | | | | | | | | | Numpad | | | | | QK_BOOT |
|--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
| | | | | | | | | | | | | | | | | | | |
|--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
@@ -286,7 +286,7 @@ Adjust layer
*/
[_ADJUST] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, COLEMAK, QWERTY, _______, GAMING, _______, _______, _______, _______, _______, _______, _______, NUMPAD, _______, _______, _______, _______, RESET,
+ _______, COLEMAK, QWERTY, _______, GAMING, _______, _______, _______, _______, _______, _______, _______, NUMPAD, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -295,7 +295,7 @@ Adjust layer
[_ADJUST2] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, COLEMAK, QWERTY, _______, GAMING, _______, _______, _______, _______, _______, _______, _______, NUMPAD, _______, _______, _______, _______, RESET,
+ _______, COLEMAK, QWERTY, _______, GAMING, _______, _______, _______, _______, _______, _______, _______, NUMPAD, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keebio/bigswitchseat/config.h b/keyboards/keebio/bigswitchseat/config.h
index dbf8311c8d..ff4896c056 100644
--- a/keyboards/keebio/bigswitchseat/config.h
+++ b/keyboards/keebio/bigswitchseat/config.h
@@ -5,13 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1011
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Keebio
-#define PRODUCT Big Switch Seat
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 1
diff --git a/keyboards/keebio/bigswitchseat/info.json b/keyboards/keebio/bigswitchseat/info.json
index 10328da26f..d66ef5b5ce 100644
--- a/keyboards/keebio/bigswitchseat/info.json
+++ b/keyboards/keebio/bigswitchseat/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Big Switch Seat",
+ "manufacturer": "Keebio",
"url": "https://robotcandy.company/",
"maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1011",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x": 0, "y": 0, "w": 4, "h": 4}]
diff --git a/keyboards/keebio/bigswitchseat/readme.md b/keyboards/keebio/bigswitchseat/readme.md
index 43e62d4e53..dc20a9cb93 100644
--- a/keyboards/keebio/bigswitchseat/readme.md
+++ b/keyboards/keebio/bigswitchseat/readme.md
@@ -22,4 +22,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/keebio/choconum/config.h b/keyboards/keebio/choconum/config.h
index dcd116534a..afad80daef 100644
--- a/keyboards/keebio/choconum/config.h
+++ b/keyboards/keebio/choconum/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1154
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT Choconum
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
diff --git a/keyboards/keebio/choconum/info.json b/keyboards/keebio/choconum/info.json
index b036cf0b79..b6408f31cd 100644
--- a/keyboards/keebio/choconum/info.json
+++ b/keyboards/keebio/choconum/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Choconum",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "Keebio",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1154",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_numpad_5x4": {
"layout": [
diff --git a/keyboards/keebio/chocopad/config.h b/keyboards/keebio/chocopad/config.h
index e07bd5da5b..bbbc022849 100644
--- a/keyboards/keebio/chocopad/config.h
+++ b/keyboards/keebio/chocopad/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1144
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT Chocopad
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
diff --git a/keyboards/keebio/chocopad/info.json b/keyboards/keebio/chocopad/info.json
index 6fbbbbd4fc..426d9d72e8 100644
--- a/keyboards/keebio/chocopad/info.json
+++ b/keyboards/keebio/chocopad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Chocopad",
+ "manufacturer": "Keebio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1144",
+ "device_version": "1.0.0"
+ },
"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}]
diff --git a/keyboards/keebio/chocopad/keymaps/khord/keymap.c b/keyboards/keebio/chocopad/keymaps/khord/keymap.c
index 04811dfb4f..3459ffe8a6 100644
--- a/keyboards/keebio/chocopad/keymaps/khord/keymap.c
+++ b/keyboards/keebio/chocopad/keymaps/khord/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN2] = LAYOUT_ortho_4x4(
- RESET, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX,
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
BL_STEP, _______, XXXXXXX, XXXXXXX
diff --git a/keyboards/keebio/dilly/config.h b/keyboards/keebio/dilly/config.h
index 9d7b08509d..2dacb39e07 100644
--- a/keyboards/keebio/dilly/config.h
+++ b/keyboards/keebio/dilly/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x113a
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT Dilly
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 5
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D7, E6, B4, B1, B3, B2 }
#define MATRIX_COL_PINS { D2, D4, C6, F6, F5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keebio/dilly/info.json b/keyboards/keebio/dilly/info.json
index fd12fce337..af8a7a8416 100644
--- a/keyboards/keebio/dilly/info.json
+++ b/keyboards/keebio/dilly/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dilly",
+ "manufacturer": "Keebio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x113A",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_ortho_3x10": {
"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":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":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}]
diff --git a/keyboards/keebio/dsp40/info.json b/keyboards/keebio/dsp40/info.json
deleted file mode 100644
index e595a4d2a6..0000000000
--- a/keyboards/keebio/dsp40/info.json
+++ /dev/null
@@ -1,105 +0,0 @@
-{
- "keyboard_name": "DSP40",
- "url": "https://keeb.io",
- "maintainer": "nooges",
- "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": "Back<br>Space", "x": 11, "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": "Enter", "x": 10.25, "y": 1, "w": 1.75 },
- { "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": "Shift", "x": 9.75, "y": 2, "w": 1.25 },
- { "label": "Fn", "x": 11, "y": 2 },
- { "label": "Hyper", "x": 0, "y": 3, "w": 1.25 },
- { "label": "Super", "x": 1.25, "y": 3 },
- { "label": "Meta", "x": 2.25, "y": 3, "w": 1.25 },
- { "x": 3.5, "y": 3, "w": 2.25 },
- { "x": 5.75, "y": 3, "w": 2.75 },
- { "label": "Super", "x": 8.5, "y": 3, "w": 1.25 },
- { "label": "Meta", "x": 9.75, "y": 3 },
- { "label": "Super", "x": 10.75, "y": 3, "w": 1.25 }
- ]
- },
- "LAYOUT_ortho_4x12": {
- "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": "Enter", "x": 11, "y": 2 },
- { "x": 0, "y": 3 },
- { "label": "Ctrl", "x": 1, "y": 3 },
- { "label": "Alt", "x": 2, "y": 3 },
- { "label": "Super", "x": 3, "y": 3 },
- { "label": "Lower", "x": 4, "y": 3 },
- { "label": "Space", "x": 5, "y": 3 },
- { "label": "Space", "x": 6, "y": 3 },
- { "label": "Raise", "x": 7, "y": 3 },
- { "label": "Left", "x": 8, "y": 3 },
- { "label": "Down", "x": 9, "y": 3 },
- { "label": "Up", "x": 10, "y": 3 },
- { "label": "Right", "x": 11, "y": 3 }
- ]
- }
- }
-}
diff --git a/keyboards/keebio/dsp40/keymaps/bakingpy/keymap.c b/keyboards/keebio/dsp40/keymaps/bakingpy/keymap.c
index 7081eedbdd..29414c0976 100644
--- a/keyboards/keebio/dsp40/keymaps/bakingpy/keymap.c
+++ b/keyboards/keebio/dsp40/keymaps/bakingpy/keymap.c
@@ -152,7 +152,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______,
+ _______, QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, MAC, WINDOWS, TESTMODE,_______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/keebio/dsp40/rev1/config.h b/keyboards/keebio/dsp40/rev1/config.h
index 753af5ce2f..88dec69f59 100644
--- a/keyboards/keebio/dsp40/rev1/config.h
+++ b/keyboards/keebio/dsp40/rev1/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x144C
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT DSP40 Rev. 1
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/keebio/dsp40/rev1/info.json b/keyboards/keebio/dsp40/rev1/info.json
new file mode 100644
index 0000000000..3d5ce68f5f
--- /dev/null
+++ b/keyboards/keebio/dsp40/rev1/info.json
@@ -0,0 +1,111 @@
+{
+ "keyboard_name": "DSP40 Rev. 1",
+ "manufacturer": "Keebio",
+ "url": "https://keeb.io",
+ "maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x144C",
+ "device_version": "1.0.0"
+ },
+ "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": "Back<br>Space", "x": 11, "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": "Enter", "x": 10.25, "y": 1, "w": 1.75 },
+ { "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": "Shift", "x": 9.75, "y": 2, "w": 1.25 },
+ { "label": "Fn", "x": 11, "y": 2 },
+ { "label": "Hyper", "x": 0, "y": 3, "w": 1.25 },
+ { "label": "Super", "x": 1.25, "y": 3 },
+ { "label": "Meta", "x": 2.25, "y": 3, "w": 1.25 },
+ { "x": 3.5, "y": 3, "w": 2.25 },
+ { "x": 5.75, "y": 3, "w": 2.75 },
+ { "label": "Super", "x": 8.5, "y": 3, "w": 1.25 },
+ { "label": "Meta", "x": 9.75, "y": 3 },
+ { "label": "Super", "x": 10.75, "y": 3, "w": 1.25 }
+ ]
+ },
+ "LAYOUT_ortho_4x12": {
+ "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": "Enter", "x": 11, "y": 2 },
+ { "x": 0, "y": 3 },
+ { "label": "Ctrl", "x": 1, "y": 3 },
+ { "label": "Alt", "x": 2, "y": 3 },
+ { "label": "Super", "x": 3, "y": 3 },
+ { "label": "Lower", "x": 4, "y": 3 },
+ { "label": "Space", "x": 5, "y": 3 },
+ { "label": "Space", "x": 6, "y": 3 },
+ { "label": "Raise", "x": 7, "y": 3 },
+ { "label": "Left", "x": 8, "y": 3 },
+ { "label": "Down", "x": 9, "y": 3 },
+ { "label": "Up", "x": 10, "y": 3 },
+ { "label": "Right", "x": 11, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/keebio/ergodicity/config.h b/keyboards/keebio/ergodicity/config.h
index 014eb13759..80603481f1 100644
--- a/keyboards/keebio/ergodicity/config.h
+++ b/keyboards/keebio/ergodicity/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x125F
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Keebio
-#define PRODUCT Ergodicity
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, C7, B6, B4 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D7, D6, D4, D3, D2, D1, D0, B7, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keebio/ergodicity/info.json b/keyboards/keebio/ergodicity/info.json
index 83b5049e20..55090a01dc 100644
--- a/keyboards/keebio/ergodicity/info.json
+++ b/keyboards/keebio/ergodicity/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ergodicity",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "Keebio",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x125F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keebio/foldkb/info.json b/keyboards/keebio/foldkb/info.json
deleted file mode 100644
index e94389ef4e..0000000000
--- a/keyboards/keebio/foldkb/info.json
+++ /dev/null
@@ -1,87 +0,0 @@
-{
- "keyboard_name": "FoldKB",
- "url": "https://keeb.io",
- "maintainer": "nooges",
- "layouts": {
- "LAYOUT": {
- "layout": [
- { "label": "Mute", "x": 0, "y": 0 },
- { "label": "Esc", "x": 1.25, "y": 0 },
- { "label": "~", "x": 2.25, "y": 0 },
- { "label": "1", "x": 3.25, "y": 0 },
- { "label": "2", "x": 4.25, "y": 0 },
- { "label": "3", "x": 5.25, "y": 0 },
- { "label": "4", "x": 6.25, "y": 0 },
- { "label": "5", "x": 7.25, "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": "Bksp", "x": 16, "y": 0 },
-
- { "label": "Home", "x": 0, "y": 1 },
- { "label": "Tab", "x": 1.75, "y": 1, "w": 1.5 },
- { "label": "Q", "x": 3.25, "y": 1 },
- { "label": "W", "x": 4.25, "y": 1 },
- { "label": "E", "x": 5.25, "y": 1 },
- { "label": "R", "x": 6.25, "y": 1 },
- { "label": "T", "x": 7.25, "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": "End", "x": 0, "y": 2 },
- { "label": "Caps", "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": 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": "Enter", "x": 15, "y": 2, "w": 2.25 },
-
- { "label": "PgUp", "x": 0, "y": 3 },
- { "label": "Shift", "x": 1, "y": 3, "w": 2.25 },
- { "label": "Z", "x": 3.25, "y": 3 },
- { "label": "X", "x": 4.25, "y": 3 },
- { "label": "C", "x": 5.25, "y": 3 },
- { "label": "V", "x": 6.25, "y": 3 },
- { "label": "B", "x": 7.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", "x": 14, "y": 3, "w": 1.75 },
- { "label": "Fn1", "x": 15.75, "y": 3 },
-
- { "label": "PgDn", "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": 4, "y": 4, "w": 1.25 },
- { "label": "Fn1", "x": 5.25, "y": 4 },
- { "label": "Space", "x": 6.25, "y": 4 },
- { "label": "Space", "x": 7.25, "y": 4 },
- { "label": "Space", "x": 9, "y": 4, "w": 1.25 },
- { "label": "Space", "x": 10.25, "y": 4, "w": 1.5 },
- { "label": "Alt", "x": 11.75, "y": 4, "w": 1.25 },
- { "label": "Win", "x": 13, "y": 4, "w": 1.25 },
- { "label": "Menu", "x": 14.25, "y": 4, "w": 1.25 },
- { "label": "Ctrl", "x": 15.5, "y": 4, "w": 1.25 }
- ]
- }
- }
-}
diff --git a/keyboards/keebio/foldkb/keymaps/forrcaho/keymap.c b/keyboards/keebio/foldkb/keymaps/forrcaho/keymap.c
index 9ff1315f73..228cbd6079 100644
--- a/keyboards/keebio/foldkb/keymaps/forrcaho/keymap.c
+++ b/keyboards/keebio/foldkb/keymaps/forrcaho/keymap.c
@@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_PG] = LAYOUT(
// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- KC_MUTE, 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_MUTE, QK_BOOT, _______, KC_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,
// ├────────┼───┬────┴────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, PG_SLAS, PG_LPAR, PG_RPAR, PG_NEEQ, _______, KC_HOME, KC_UP, KC_PGUP, KC_INS, _______, _______, _______,
// ├────────┼───┼─────────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤
diff --git a/keyboards/keebio/foldkb/rev1/config.h b/keyboards/keebio/foldkb/rev1/config.h
index ab4751f1f3..7985c3eb42 100644
--- a/keyboards/keebio/foldkb/rev1/config.h
+++ b/keyboards/keebio/foldkb/rev1/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1258
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT FoldKB Rev. 1
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/keebio/foldkb/rev1/info.json b/keyboards/keebio/foldkb/rev1/info.json
new file mode 100644
index 0000000000..da06fadac1
--- /dev/null
+++ b/keyboards/keebio/foldkb/rev1/info.json
@@ -0,0 +1,93 @@
+{
+ "keyboard_name": "FoldKB Rev. 1",
+ "manufacturer": "Keebio",
+ "url": "https://keeb.io",
+ "maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1258",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "label": "Mute", "x": 0, "y": 0 },
+ { "label": "Esc", "x": 1.25, "y": 0 },
+ { "label": "~", "x": 2.25, "y": 0 },
+ { "label": "1", "x": 3.25, "y": 0 },
+ { "label": "2", "x": 4.25, "y": 0 },
+ { "label": "3", "x": 5.25, "y": 0 },
+ { "label": "4", "x": 6.25, "y": 0 },
+ { "label": "5", "x": 7.25, "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": "Bksp", "x": 16, "y": 0 },
+
+ { "label": "Home", "x": 0, "y": 1 },
+ { "label": "Tab", "x": 1.75, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 3.25, "y": 1 },
+ { "label": "W", "x": 4.25, "y": 1 },
+ { "label": "E", "x": 5.25, "y": 1 },
+ { "label": "R", "x": 6.25, "y": 1 },
+ { "label": "T", "x": 7.25, "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": "End", "x": 0, "y": 2 },
+ { "label": "Caps", "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": 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": "Enter", "x": 15, "y": 2, "w": 2.25 },
+
+ { "label": "PgUp", "x": 0, "y": 3 },
+ { "label": "Shift", "x": 1, "y": 3, "w": 2.25 },
+ { "label": "Z", "x": 3.25, "y": 3 },
+ { "label": "X", "x": 4.25, "y": 3 },
+ { "label": "C", "x": 5.25, "y": 3 },
+ { "label": "V", "x": 6.25, "y": 3 },
+ { "label": "B", "x": 7.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", "x": 14, "y": 3, "w": 1.75 },
+ { "label": "Fn1", "x": 15.75, "y": 3 },
+
+ { "label": "PgDn", "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": 4, "y": 4, "w": 1.25 },
+ { "label": "Fn1", "x": 5.25, "y": 4 },
+ { "label": "Space", "x": 6.25, "y": 4 },
+ { "label": "Space", "x": 7.25, "y": 4 },
+ { "label": "Space", "x": 9, "y": 4, "w": 1.25 },
+ { "label": "Space", "x": 10.25, "y": 4, "w": 1.5 },
+ { "label": "Alt", "x": 11.75, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 13, "y": 4, "w": 1.25 },
+ { "label": "Menu", "x": 14.25, "y": 4, "w": 1.25 },
+ { "label": "Ctrl", "x": 15.5, "y": 4, "w": 1.25 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/keebio/fourier/config.h b/keyboards/keebio/fourier/config.h
index faa3ef4004..ca55824404 100644
--- a/keyboards/keebio/fourier/config.h
+++ b/keyboards/keebio/fourier/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1247
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT Fourier
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/keebio/fourier/info.json b/keyboards/keebio/fourier/info.json
index 2449a399dd..598ca2af78 100644
--- a/keyboards/keebio/fourier/info.json
+++ b/keyboards/keebio/fourier/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Fourier",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1247",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keebio/fourier/keymaps/maxim/keymap.c b/keyboards/keebio/fourier/keymaps/maxim/keymap.c
index 68bd649ecc..23e65be477 100644
--- a/keyboards/keebio/fourier/keymaps/maxim/keymap.c
+++ b/keyboards/keebio/fourier/keymaps/maxim/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN1] = 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,
- RESET, RGB_HUI, RGB_SAI, RGB_VAI, KC_VOLU, KC_LBRC, KC_RBRC, KC_4, KC_5, KC_6, KC_SCLN, _______,
+ QK_BOOT, RGB_HUI, RGB_SAI, RGB_VAI, KC_VOLU, KC_LBRC, KC_RBRC, KC_4, KC_5, KC_6, KC_SCLN, _______,
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_VOLD, KC_LCBR, KC_RCBR, KC_1, KC_2, KC_3, KC_UP, _______,
RGB_TOG, _______, _______, _______, _______, KC_DEL, KC_0, KC_LEFT, KC_DOWN, KC_RGHT
),
diff --git a/keyboards/keebio/iris/info.json b/keyboards/keebio/iris/info.json
index ec52ef04d1..8641eed9c1 100644
--- a/keyboards/keebio/iris/info.json
+++ b/keyboards/keebio/iris/info.json
@@ -1,7 +1,10 @@
{
- "keyboard_name": "Iris",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "Keebio",
+ "usb": {
+ "vid": "0xCB10"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keebio/iris/iris.h b/keyboards/keebio/iris/iris.h
index e17b3b69c6..b7be3fc59e 100644
--- a/keyboards/keebio/iris/iris.h
+++ b/keyboards/keebio/iris/iris.h
@@ -16,6 +16,10 @@
#include "rev6.h"
#elif defined(KEYBOARD_keebio_iris_rev6a)
#include "rev6a.h"
+#elif defined(KEYBOARD_keebio_iris_rev6b)
+ #include "rev6b.h"
+#elif defined(KEYBOARD_keebio_iris_rev7)
+ #include "rev7.h"
#endif
#include "quantum.h"
diff --git a/keyboards/keebio/iris/keymaps/adamgate/config.h b/keyboards/keebio/iris/keymaps/adamgate/config.h
new file mode 100644
index 0000000000..48653a123e
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/adamgate/config.h
@@ -0,0 +1,24 @@
+/*
+Copyright 2022 Adam Applegate
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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_I2C
+#define EE_HANDS
+#define TAPPING_TOGGLE 3 //# of button presses needed to permanently toggle a layer
+// #define TAPPING_TERM 150 //# of ms before another input is accepted for tap dancing
+// #define RGBLIGHT_LAYERS 4 //# of layer of rgb (max of 8)ASDASDASDASDFASDF \ No newline at end of file
diff --git a/keyboards/keebio/iris/keymaps/adamgate/keymap.c b/keyboards/keebio/iris/keymaps/adamgate/keymap.c
new file mode 100644
index 0000000000..84c3b74711
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/adamgate/keymap.c
@@ -0,0 +1,82 @@
+/*
+ Copyright (c) 2022 Adam Applegate
+
+ 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.
+*/
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _QWERTY,
+ _LOWER,
+ _GAMING,
+ _RISE,
+}
+
+/*****************
+*** TAPDANCES ***
+*****************/
+enum custom_tapdances {
+ TD_SHFT_CAPS = 0,
+};
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_SHFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS), //shift if pressed 1x, caps lock if pressed 2x
+};
+
+/*****************
+*** KEYMAPS ***
+*****************/
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // layout for everyday use
+ [_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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL,
+ TD(TD_SHFT_CAPS), 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_DEL, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS,
+ KC_RALT, KC_LGUI, KC_BSPC, KC_SPC, TT(_LOWER), _______
+ ),
+
+ [_LOWER] = LAYOUT(
+ KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PEQL,
+ KC_F11, KC_F12, KC_UP, _______, _______, KC_LPRN, KC_RPRN, KC_7, KC_8, KC_9, KC_PSLS, KC_PAST,
+ KC_LSFT, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_LCBR, KC_RCBR, KC_4, KC_5, KC_6, KC_PMNS, KC_PPLS,
+ KC_LCTL, _______, _______, _______, _______, KC_LBRC, KC_DEL, KC_ENT, KC_RBRC, KC_1, KC_2, KC_3, KC_PDOT, _______,
+ _______, TO(_QWERTY), KC_BSPC, KC_SPC, TG(_GAMING), KC_0
+ ),
+
+ //makes gaming easier, adding a space for jumping closer to the movement keys
+ [_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_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_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS,
+ KC_RALT, KC_SPC, KC_BSPC, KC_SPC, TG(_RAISE), TO(_LOWER)
+ ),
+
+ //used for editing rgb settings, sound, and misc commands
+ [_RAISE] = LAYOUT(
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, KC_MUTE, KC_VOLU, KC_MNXT, _______, KC_BRIU, KC_CALC,
+ _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, KC_MSTP, KC_VOLD, KC_MPRV, _______, KC_BRID, KC_MYCM,
+ DM_REC1, DM_REC2, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WSCH,
+ DM_PLY1, DM_PLY2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ DM_RSTP, TO(_GAMING), _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/keebio/iris/keymaps/adamgate/rules.mk b/keyboards/keebio/iris/keymaps/adamgate/rules.mk
new file mode 100644
index 0000000000..916d614967
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/adamgate/rules.mk
@@ -0,0 +1,6 @@
+TAP_DANCE_ENABLE = yes
+# COMBO_ENABLE = yes
+# RGBLIGHT_ENABLE = yes
+
+# Disable unnecessary things to save space
+# LTO_ENABLE = yes #link time optimization
diff --git a/keyboards/keebio/iris/keymaps/antonlindstrom/keymap.c b/keyboards/keebio/iris/keymaps/antonlindstrom/keymap.c
index 3e06ffff29..81426852a6 100644
--- a/keyboards/keebio/iris/keymaps/antonlindstrom/keymap.c
+++ b/keyboards/keebio/iris/keymaps/antonlindstrom/keymap.c
@@ -11,7 +11,7 @@
#define KC_LOWR MO(_LOWER)
#define KC_RASE MO(_RAISE)
-#define KC_RST RESET
+#define KC_RST QK_BOOT
#define KC_LBR SE_LBRC
#define KC_RBR SE_RBRC
diff --git a/keyboards/keebio/iris/keymaps/ave-63/keymap.c b/keyboards/keebio/iris/keymaps/ave-63/keymap.c
index 3d393a71c7..a3919c413c 100644
--- a/keyboards/keebio/iris/keymaps/ave-63/keymap.c
+++ b/keyboards/keebio/iris/keymaps/ave-63/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_MEH] = LAYOUT(
- LALT(KC_F4), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
+ LALT(KC_F4), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
KC_TRNS, MEH(KC_Q), LCTL(KC_W), LSFT(KC_TAB), KC_DEL, MEH(KC_T), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, MEH(KC_A),LSFT(LCTL(KC_TAB)),KC_TAB,LCTL(KC_TAB),MEH(KC_G), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,MEH(KC_Z),MEH(KC_X),MEH(KC_C),MEH(KC_V),MEH(KC_B),KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/keebio/iris/keymaps/bmoorey/keymap.c b/keyboards/keebio/iris/keymaps/bmoorey/keymap.c
index 9484ccb3f4..5f7b026022 100644
--- a/keyboards/keebio/iris/keymaps/bmoorey/keymap.c
+++ b/keyboards/keebio/iris/keymaps/bmoorey/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
KC_TILD, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, KC_DEL,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- RESET, _______, KC_UP, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______,
+ QK_BOOT, _______, KC_UP, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_LBRC, KC_RBRC, KC_P1, KC_P2, KC_P3, KC_PLUS, KC_PIPE,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/keebio/iris/keymaps/boo/keymap.c b/keyboards/keebio/iris/keymaps/boo/keymap.c
index 27cbc5daf2..7fc9162b47 100644
--- a/keyboards/keebio/iris/keymaps/boo/keymap.c
+++ b/keyboards/keebio/iris/keymaps/boo/keymap.c
@@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_GRAVE,KC_RABK, KC_RCBR, KC_RBRC, KC_RPRN, KC_PIPE, KC_CIRC, KC_PLUS, KC_ASTR, KC_PERC, KC_UP, KC_EQL,
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- RESET, _______, _______, _______, _______, _______, KC_HOME, KC_END, KC_KAK, COPY, PASTE, KC_LEFT, KC_DOWN, KC_RIGHT,
+ QK_BOOT, _______, _______, _______, _______, _______, KC_HOME, KC_END, KC_KAK, COPY, PASTE, KC_LEFT, KC_DOWN, KC_RIGHT,
// └────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
_______, _______, _______, KC_DEL, _______, _______
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
diff --git a/keyboards/keebio/iris/keymaps/compilation-error/keymap.c b/keyboards/keebio/iris/keymaps/compilation-error/keymap.c
index 1b3f114607..c549b0dde0 100644
--- a/keyboards/keebio/iris/keymaps/compilation-error/keymap.c
+++ b/keyboards/keebio/iris/keymaps/compilation-error/keymap.c
@@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
RGB_MOD, KC_MPRV, KC_MNXT, KC_VOLU, KC_PGUP, KC_UNDS, KC_EQL, KC_HOME, RGB_HUI, RGB_SAI, RGB_VAI, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_MUTE, KC_MSTP, KC_MPLY, KC_VOLD, KC_PGDN, KC_MINS, RESET, EEP_RST, KC_PLUS, KC_END, RGB_HUD, RGB_SAD, RGB_VAD, _______,
+ KC_MUTE, KC_MSTP, KC_MPLY, KC_VOLD, KC_PGDN, KC_MINS, QK_BOOT, EEP_RST, KC_PLUS, KC_END, RGB_HUD, RGB_SAD, RGB_VAD, _______,
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
diff --git a/keyboards/keebio/iris/keymaps/csc027/config.h b/keyboards/keebio/iris/keymaps/csc027/config.h
index ec4c2bbc65..80a8c57cba 100644
--- a/keyboards/keebio/iris/keymaps/csc027/config.h
+++ b/keyboards/keebio/iris/keymaps/csc027/config.h
@@ -28,10 +28,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
-
-#define USB_POLLING_INTERVAL_MS 1
-
-#if defined(TAP_CODE_DELAY)
-# undef TAP_CODE_DELAY
-#endif
-#define TAP_CODE_DELAY 10
diff --git a/keyboards/keebio/iris/keymaps/csc027/rules.mk b/keyboards/keebio/iris/keymaps/csc027/rules.mk
index e922161e3c..6fff152f60 100644
--- a/keyboards/keebio/iris/keymaps/csc027/rules.mk
+++ b/keyboards/keebio/iris/keymaps/csc027/rules.mk
@@ -1,6 +1,6 @@
BACKLIGHT_ENABLE = yes
CONSOLE_ENABLE = no
-EXTRAKEY_ENABLE = no
+EXTRAKEY_ENABLE = yes
LTO_ENABLE = yes
MOUSEKEY_ENABLE = yes
NKRO_ENABLE = yes
diff --git a/keyboards/keebio/iris/keymaps/davidrambo/keymap.c b/keyboards/keebio/iris/keymaps/davidrambo/keymap.c
index b36abd4c56..188e3c3345 100644
--- a/keyboards/keebio/iris/keymaps/davidrambo/keymap.c
+++ b/keyboards/keebio/iris/keymaps/davidrambo/keymap.c
@@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVMAC] = LAYOUT(
- RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, C_TAB, ALEFT , KC_UP , ARGHT , KC_DEL , _______,
@@ -112,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVPC] = LAYOUT(
- RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, C_TAB , CLEFT , KC_UP , CRGHT , KC_DEL , _______,
diff --git a/keyboards/keebio/iris/keymaps/dcompact/keymap.c b/keyboards/keebio/iris/keymaps/dcompact/keymap.c
index baa7e5e583..447aff6f9a 100644
--- a/keyboards/keebio/iris/keymaps/dcompact/keymap.c
+++ b/keyboards/keebio/iris/keymaps/dcompact/keymap.c
@@ -149,7 +149,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, BL_STEP, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/keebio/iris/keymaps/ddone/keymap.c b/keyboards/keebio/iris/keymaps/ddone/keymap.c
index 815174bf74..a3905181ea 100644
--- a/keyboards/keebio/iris/keymaps/ddone/keymap.c
+++ b/keyboards/keebio/iris/keymaps/ddone/keymap.c
@@ -78,7 +78,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, RGB_VAD, RGB_VAI ,_______ , KC_PSCR, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/keebio/iris/keymaps/default/config.h b/keyboards/keebio/iris/keymaps/default/config.h
deleted file mode 100644
index 149a54be7f..0000000000
--- a/keyboards/keebio/iris/keymaps/default/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2017 Danny Nguyen <danny@keeb.io>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should 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_I2C
-#define EE_HANDS
diff --git a/keyboards/keebio/iris/keymaps/default/keymap.c b/keyboards/keebio/iris/keymaps/default/keymap.c
index f1a2bf2164..7c95c6189b 100644
--- a/keyboards/keebio/iris/keymaps/default/keymap.c
+++ b/keyboards/keebio/iris/keymaps/default/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- QK_BOOT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ QK_BOOT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_DEL, _______, KC_LEFT, KC_RGHT, KC_UP, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_PIPE,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
@@ -111,21 +111,3 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return true;
}
-
-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 false;
-}
diff --git a/keyboards/keebio/iris/keymaps/dvorak/keebio_iris_rev2_layout_dvorak.json b/keyboards/keebio/iris/keymaps/dvorak/keebio_iris_rev2_layout_dvorak.json
index be5cc37938..942116ef87 100644
--- a/keyboards/keebio/iris/keymaps/dvorak/keebio_iris_rev2_layout_dvorak.json
+++ b/keyboards/keebio/iris/keymaps/dvorak/keebio_iris_rev2_layout_dvorak.json
@@ -72,7 +72,7 @@
"KC_LPRN",
"KC_RPRN",
"KC_BSPC",
- "RESET",
+ "QK_BOOT",
"KC_1",
"KC_2",
"KC_3",
diff --git a/keyboards/keebio/iris/keymaps/dvorak/keymap.c b/keyboards/keebio/iris/keymaps/dvorak/keymap.c
index 3f0886521c..ce99d1a563 100644
--- a/keyboards/keebio/iris/keymaps/dvorak/keymap.c
+++ b/keyboards/keebio/iris/keymaps/dvorak/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRAVE,
+ QK_BOOT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRAVE,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_DEL, _______, KC_LEFT, KC_RGHT, KC_UP, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_BSPC,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/keebio/iris/keymaps/edvorakjp/keymap.c b/keyboards/keebio/iris/keymaps/edvorakjp/keymap.c
index 0c0fc5a746..013d6c00a5 100644
--- a/keyboards/keebio/iris/keymaps/edvorakjp/keymap.c
+++ b/keyboards/keebio/iris/keymaps/edvorakjp/keymap.c
@@ -59,9 +59,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void matrix_init_keymap() {}
#ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT
-uint32_t layer_state_set_keymap(uint32_t state) {
+layer_state_t layer_state_set_keymap(layer_state_t state) {
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case L_EDVORAKJP_LOWER:
rgblight_sethsv_noeeprom_red();
break;
diff --git a/keyboards/keebio/iris/keymaps/emp/config.h b/keyboards/keebio/iris/keymaps/emp/config.h
new file mode 100644
index 0000000000..a08db4d170
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/emp/config.h
@@ -0,0 +1,97 @@
+/*
+Copyright 2017 Danny Nguyen <danny@keeb.io>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* Use I2C or Serial, not both */
+#undef USE_I2C
+#define USE_SERIAL
+
+/* Select hand configuration */
+#undef MASTER_LEFT
+#undef MASTER_RIGHT
+#define EE_HANDS
+
+/* disable debugging features */
+#ifndef NO_DEBUG
+#define NO_DEBUG
+#endif // #ifndef NO_DEBUG
+
+/* disable printing features */
+#ifndef NO_PRINT
+#define NO_PRINT
+#endif // #ifndef NO_PRINT
+
+/* force n-key rollover to be enabled every boot */
+#undef FORCE_NKRO
+
+/* disable tap dance and other tapping features */
+#undef NO_ACTION_TAPPING
+
+/* disable one-shot modifiers */
+#undef NO_ACTION_ONESHOT
+
+/* PERMISSIVE_HOLD
+ * when on: tap-hold keys are held when typed fast, so long as the modifier key
+ * is pressed before and released after the rodified key(s)
+ * when off: tap-hold keys are both tapped when typed fast (within tapping term)
+ */
+#undef PERMISSIVE_HOLD
+
+/* IGNORE_MOD_TAP_INTERRUPT
+ * when on: rolling tap-hold keys taps all keys
+ * when off: rolling tap-hold keys modifies keys
+*/
+#undef IGNORE_MOD_TAP_INTERRUPT
+
+/* TAPPING_TERM x (ms)
+ * 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 200
+
+/* TAPPING_TOGGLE x (count)
+ * If you hold a TT key down, layer is activated, and then is de-activated when
+ * you let go (like MO()). If you repeatedly tap it, the layer will be toggled
+ * on or off (like TG()). It needs 5 taps by default, but you can change this by
+ * defining TAPPING_TOGGLE to another number.
+ */
+// #define TAPPING_TOGGLE 1
+
+/* RETRO_TAPPING
+ * tap anyway, even after TAPPING_TERM, if there was no other key interruption
+ * between press and release
+ */
+#undef RETRO_TAPPING
+
+/* ONESHOT_TIMEOUT x (ms)
+ * how long before oneshot times out
+ */
+// #define ONESHOT_TIMEOUT 2000
+
+/* TAP_CODE_DELAY x (ms)
+ * how long tapped keycodes are held down for
+ */
+// #define TAP_CODE_DELAY 100
+
+/* NO_USB_STARTUP_CHECK
+ * according to:
+ * https://github.com/qmk/qmk_firmware/issues/12732
+ * defining this can help with boards not being recognized by virtual keymapping
+ * software
+ */
+#define NO_USB_STARTUP_CHECK
diff --git a/keyboards/keebio/iris/keymaps/emp/keymap.c b/keyboards/keebio/iris/keymaps/emp/keymap.c
new file mode 100644
index 0000000000..d89477ed96
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/emp/keymap.c
@@ -0,0 +1,277 @@
+/* Copyright 2022 elliotpatros
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+// Layer definitions
+enum custom_layers {
+ _COLEMAK,
+ _FUNCTION,
+};
+
+// Custom keycodes, implemented later, in function: process_record_user()
+enum custom_keycodes {
+ CTL_ESC = SAFE_RANGE, // mod tap: left control / esc
+ SFT_ENT, // mod tap: left shift / enter
+ LST_PRN, // mod tap: left shift / left parenthesis
+ RST_PRN, // mod tap: right shift / right parenthesis
+};
+
+// Shorthand keycode definitions
+#define OSM_CAG OSM(MOD_LCTL | MOD_LALT | MOD_LGUI)
+#define LT_BSFN LT(_FUNCTION, KC_BSLS)
+
+// The layout
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // Default layer
+ [_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_MINS,
+// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_EQL,
+// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ CTL_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────â”┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ LST_PRN, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SPC, KC_ENT, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, RST_PRN,
+// └────────┴────────┴────────┴────────┼────────┼────────┼────────┘└────────┼────────┴────────┴────────┴────────┴────────┴────────┘
+ KC_LALT, KC_LGUI, SFT_ENT, KC_SPC, LT_BSFN, KC_BSPC
+// └────────┴────────┴────────┘└────────┴────────┴────────┘
+ ),
+
+ // Function (and I guess also media & navigation) layer
+ [_FUNCTION] = LAYOUT (
+
+// ┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, KC_GRV, KC_LPRN, KC_RPRN, KC_F11, KC_F12, KC_INS, KC_HOME, KC_UP, KC_PGUP, _______, _______,
+// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, KC_LCBR, KC_LBRC, KC_RBRC, KC_RCBR, OSM_CAG, KC_VOLU, KC_LEFT, KC_DOWN, KC_RGHT, KC_BSPC, _______,
+// ├────────┼────────┼────────┼────────┼────────┼────────┼────────â”┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, KC_MUTE, _______, _______, KC_VOLD, KC_DEL, KC_END, KC_PGDN, _______, _______,
+// └────────┴────────┴────────┴────────┼────────┼────────┼────────┘└────────┼────────┴────────┴────────┴────────┴────────┴────────┘
+ _______, _______, _______, _______, _______, _______
+// └────────┴────────┴────────┘└────────┴────────┴────────┘
+ )
+
+};
+
+static inline bool dualfunckey_was_tapped(const uint16_t time_when_pressed) {
+ return timer_elapsed(time_when_pressed) < TAPPING_TERM;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+
+ // Static variables
+ static uint16_t timer_control_escape = 0;
+ static uint16_t timer_shift_enter = 0;
+ static uint16_t timer_shift_lparen = 0;
+ static uint16_t timer_shift_rparen = 0;
+
+ static bool dualfunckey_pending = false;
+
+ static bool shift_enter_is_pressed = false;
+ static bool shift_lparen_is_pressed = false;
+
+ // Was this function called to handle a keydown? If not, it was called by a
+ // key up.
+ const bool pressed = record->event.pressed;
+
+ // Any keydown (at all) spends a pending dual function key check. Why? If,
+ // for example, you use shift to type a capital letter, and shift keys down
+ // and up faster than the tapping term, did you mean to call shift's tapping
+ // key? No. You just meant to call shift.
+ if (pressed) {
+ dualfunckey_pending = false;
+ }
+
+ // Only keycodes >= SAFE_RANGE are handled in this function
+ if (keycode < SAFE_RANGE) {
+ // This keypress was not handled
+ return true;
+ }
+
+ // Handle custom keypresses here
+ switch (keycode) {
+
+ // -------------------------------------------------------------------------
+ // Dual function key (hold: left shift; tap: enter)
+ // -------------------------------------------------------------------------
+ case SFT_ENT:
+
+ // There are multiple keys that are mapped to left shift. Keep track of
+ // which are pressed
+ shift_enter_is_pressed = pressed;
+
+ // Handle keypress routine
+ if (pressed) {
+
+ // The [left shift/enter] key was pressed
+ register_code(KC_LSFT);
+
+ // Save keydown time for checking hold/tap on keyup
+ timer_shift_enter = timer_read();
+
+ // Pressing a dual function key requires a hold/tap check on key up
+ dualfunckey_pending = true;
+
+ } else {
+
+ // The [left shift/enter] key was unpressed
+ // Note: unregister shift before pressing ENT so that ENT registers
+ // correctly
+
+ // If no other left shift keys are currently pressed, unregister it
+ if (! shift_lparen_is_pressed) {
+ unregister_code(KC_LSFT);
+ }
+
+ // If a pending dual function key hasn't been used yet, use it here
+ if (dualfunckey_pending && dualfunckey_was_tapped(timer_shift_enter)) {
+ tap_code(KC_ENT);
+ dualfunckey_pending = false;
+ }
+ }
+
+ // This keypress was handled
+ return false;
+
+ // -------------------------------------------------------------------------
+ // Dual function key (hold: left control; tap: escape)
+ // -------------------------------------------------------------------------
+ case CTL_ESC:
+
+ // Handle keypress routine
+ if (pressed) {
+
+ // Control/escape key was pressed
+ register_code(KC_LCTL);
+
+ // Save keydown time for checking hold/tap on keyup
+ timer_control_escape = timer_read();
+
+ // Pressing a dual function key requires a hold/tap check on key up
+ dualfunckey_pending = true;
+
+ } else {
+
+ // Control/escape key was unpressed
+ unregister_code(KC_LCTL);
+
+ // If a pending dual function key hasn't been used yet, use it here
+ if (dualfunckey_pending && dualfunckey_was_tapped(timer_control_escape)) {
+ tap_code(KC_ESC);
+ dualfunckey_pending = false;
+ }
+ }
+
+ // This keypress was handled
+ return false;
+
+ // -------------------------------------------------------------------------
+ // Dual function key (hold: left shift; tap: left parenthesis)
+ // -------------------------------------------------------------------------
+ case LST_PRN:
+
+ // There are multiple keys that are mapped to left shift. Keep track of
+ // which are pressed
+ shift_lparen_is_pressed = pressed;
+
+ // Handle keypress routine
+ if (pressed) {
+
+ // The [left shift/left parenthesis] key was pressed
+ register_code(KC_LSFT);
+
+ // Save keydown time for checking hold/tap on keyup
+ timer_shift_lparen = timer_read();
+
+ // Pressing a dual function key requires a hold/tap check on key up
+ dualfunckey_pending = true;
+
+ } else {
+
+ // The [left shift/left parenthesis] key was unpressed
+ // Note: unregister shift after tapping 9 so that left parenthesis
+ // registers correctly
+
+ // If a pending dual function key hasn't been used yet, use it here
+ if (dualfunckey_pending && dualfunckey_was_tapped(timer_shift_lparen)) {
+ tap_code(KC_9);
+ dualfunckey_pending = false;
+ }
+
+ // If no other left shift keys are currently pressed, unregister it
+ if (! shift_enter_is_pressed) {
+ unregister_code(KC_LSFT);
+ }
+ }
+
+ // This keypress was handled
+ return false;
+
+ // -------------------------------------------------------------------------
+ // Dual function key (hold: right shift; tap: right parenthesis)
+ // -------------------------------------------------------------------------
+ case RST_PRN:
+
+ // Handle keypress routine
+ if (pressed) {
+
+ // The [right shift/right parenthesis] key was pressed
+ register_code(KC_RSFT);
+
+ // Save keydown time for checking hold/tap on keyup
+ timer_shift_rparen = timer_read();
+
+ // Pressing a dual function key requires a hold/tap check on key up
+ dualfunckey_pending = true;
+
+ } else {
+
+ // The [right shift/right parenthesis] key was unpressed
+ // Note: unregister shift after tapping 0 so that right parenthesis
+ // registers correctly
+
+ // If a pending dual function key hasn't been used yet, use it here
+ if (dualfunckey_pending && dualfunckey_was_tapped(timer_shift_rparen)) {
+
+ // Space cadet shift: If the [left shift/left parenthesis] key
+ // is currently pressed, then tap the sequence ()
+ if (shift_lparen_is_pressed) {
+ tap_code(KC_9);
+ }
+
+ tap_code(KC_0);
+ dualfunckey_pending = false;
+ }
+
+ unregister_code(KC_RSFT);
+ }
+
+ // This keypress was handled
+ return false;
+
+ // -------------------------------------------------------------------------
+ // Some other key was pressed (this shouldn't happen)
+ // -------------------------------------------------------------------------
+ default:
+ // This keypress was not handled
+ return true;
+ }
+}
diff --git a/keyboards/keebio/iris/keymaps/fluffactually/keymap.c b/keyboards/keebio/iris/keymaps/fluffactually/keymap.c
index 8761dcbd6c..6caaed18d4 100644
--- a/keyboards/keebio/iris/keymaps/fluffactually/keymap.c
+++ b/keyboards/keebio/iris/keymaps/fluffactually/keymap.c
@@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[4] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_MUTE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RGB_TOG,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/keebio/iris/keymaps/hbbisenieks/keymap.c b/keyboards/keebio/iris/keymaps/hbbisenieks/keymap.c
index 7c477f8502..ef98331ca7 100644
--- a/keyboards/keebio/iris/keymaps/hbbisenieks/keymap.c
+++ b/keyboards/keebio/iris/keymaps/hbbisenieks/keymap.c
@@ -23,7 +23,7 @@ enum custom_keycodes {
#define KC_ESCC MT(MOD_LCTL, KC_ESC)
#define KC_LOWR LOWER
#define KC_RASE RAISE
-#define KC_RST RESET
+#define KC_RST QK_BOOT
#define KC_BL_S BL_STEP
// Left and right shift as mot-tap square braces
@@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
- RESET , DEBUG , RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, DEBUG , RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------+--------. ,--------|--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//`--------+--------+--------+----+---+--------+--------+--------/ \--------+--------+--------+---+----+--------+--------+--------'
diff --git a/keyboards/keebio/iris/keymaps/jerryhcooke/keymap.c b/keyboards/keebio/iris/keymaps/jerryhcooke/keymap.c
index e0c09638b2..5fe88a2289 100644
--- a/keyboards/keebio/iris/keymaps/jerryhcooke/keymap.c
+++ b/keyboards/keebio/iris/keymaps/jerryhcooke/keymap.c
@@ -5,13 +5,13 @@
#define _RAISE 2
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_DEL, 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_BSPC, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_ENT, LCTL_T(KC_LGUI), KC_Z, KC_X, KC_C, KC_D, KC_V, LGUI(KC_L), MEH_T(KC_MINS), KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_LGUI, LT(1, KC_QUOT), KC_SFTENT, KC_SPC, LT(2, KC_BSLS), LALT_T(KC_APP)),
- [1] = LAYOUT(KC_MPLY, KC_NO, KC_DQUO, KC_NO, LALT(KC_F4), KC_NO, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_NO, RESET, KC_MPRV, KC_END, KC_UP, KC_HOME, KC_PGUP, KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS, RGB_SAI, RGB_SAD, KC_MNXT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_P1, KC_P2, KC_P3, KC_PAST, RGB_HUI, RGB_HUD, KC_NO, KC_WBAK, KC_WFWD, KC_WSTP, KC_WREF, KC_NO, LCA(KC_DEL), KC_NLCK, KC_P0, KC_P0, KC_PDOT, KC_PENT, RGB_SPI, RGB_SPD, KC_PSCR, KC_NO, KC_LGUI, RGB_TOG, RGB_VAI, RGB_VAD),
+ [1] = LAYOUT(KC_MPLY, KC_NO, KC_DQUO, KC_NO, LALT(KC_F4), KC_NO, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_NO, QK_BOOT, KC_MPRV, KC_END, KC_UP, KC_HOME, KC_PGUP, KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS, RGB_SAI, RGB_SAD, KC_MNXT, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_P1, KC_P2, KC_P3, KC_PAST, RGB_HUI, RGB_HUD, KC_NO, KC_WBAK, KC_WFWD, KC_WSTP, KC_WREF, KC_NO, LCA(KC_DEL), KC_NLCK, KC_P0, KC_P0, KC_PDOT, KC_PENT, RGB_SPI, RGB_SPD, KC_PSCR, KC_NO, KC_LGUI, RGB_TOG, RGB_VAI, RGB_VAD),
[2] = LAYOUT(KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_NO, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_K, KC_NO, KC_WH_D, KC_MS_U, KC_WH_U, KC_NO, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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) {
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _LOWER:
clockwise ? tap_code(KC_MS_WH_UP) : tap_code(KC_MS_WH_DOWN);
break;
@@ -23,7 +23,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
break;
}
} else if (index == 1) {
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _LOWER:
clockwise ? tap_code(KC_UP) : tap_code(KC_DOWN);
break;
diff --git a/keyboards/keebio/iris/keymaps/khang/keymap.c b/keyboards/keebio/iris/keymaps/khang/keymap.c
index 71c36c8ff9..69c7d8fe64 100644
--- a/keyboards/keebio/iris/keymaps/khang/keymap.c
+++ b/keyboards/keebio/iris/keymaps/khang/keymap.c
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
KC_NO , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , ______ , KC_NO ,
//└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
- ______ , ______ , ______ , RESET , ______ , ______
+ ______ , ______ , ______ , QK_BOOT, ______ , ______
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
)
};
diff --git a/keyboards/keebio/iris/keymaps/khord/keymap.c b/keyboards/keebio/iris/keymaps/khord/keymap.c
index 379617a8b7..10ef4ce099 100644
--- a/keyboards/keebio/iris/keymaps/khord/keymap.c
+++ b/keyboards/keebio/iris/keymaps/khord/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- RESET, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ QK_BOOT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_DEL, _______, KC_LEFT, KC_RGHT, KC_UP, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_PIPE,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/keebio/iris/keymaps/krusli/keymap.c b/keyboards/keebio/iris/keymaps/krusli/keymap.c
index 095716621d..ef51a973f6 100644
--- a/keyboards/keebio/iris/keymaps/krusli/keymap.c
+++ b/keyboards/keebio/iris/keymaps/krusli/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_HUD, RGB_SAD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______,
- BL_STEP, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ BL_STEP, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h b/keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h
index 2a737462dd..17a89bb1e1 100644
--- a/keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/keebio/iris/keymaps/mattly/keymap.c b/keyboards/keebio/iris/keymaps/mattly/keymap.c
index 4c1057062f..a499d021a1 100644
--- a/keyboards/keebio/iris/keymaps/mattly/keymap.c
+++ b/keyboards/keebio/iris/keymaps/mattly/keymap.c
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FUNCT] = LAYOUT(
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, XXXXXXX, XXXXXXX, M_NXWIN, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_M_P, RGB_M_B, RGB_M_K, RESET,
+ QK_BOOT, XXXXXXX, XXXXXXX, M_NXWIN, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_M_P, RGB_M_B, RGB_M_K, QK_BOOT,
DEBUG, XXXXXXX, M_PVTAB, M_PVWIN, M_NXTAB, XXXXXXX, XXXXXXX, TOG_WIN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_MUTE, KC_VOLD, KC_VOLU, KC_MRWD, KC_MFFD, KC_MPLY, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, _______
diff --git a/keyboards/keebio/iris/keymaps/mnil/keymap.c b/keyboards/keebio/iris/keymaps/mnil/keymap.c
index 973122f0c4..1cac3be141 100644
--- a/keyboards/keebio/iris/keymaps/mnil/keymap.c
+++ b/keyboards/keebio/iris/keymaps/mnil/keymap.c
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
[_NUMPAD] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- RGB_TOG, RGB_M_P, RGB_M_B, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET,
+ RGB_TOG, RGB_M_P, RGB_M_B, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_TRNS, QUIT, WIN, MVWSL , MVWSR, CRYWS, TERM, KC_7, KC_8, KC_9, KC_COMM, KC_NO,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/keebio/iris/keymaps/mojitas/keymap.c b/keyboards/keebio/iris/keymaps/mojitas/keymap.c
index e3ec651834..959abd1a00 100644
--- a/keyboards/keebio/iris/keymaps/mojitas/keymap.c
+++ b/keyboards/keebio/iris/keymaps/mojitas/keymap.c
@@ -158,7 +158,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
//,--------+--------+--------+--------+--------+--------. ,--------+--------+--------+--------+--------+--------.
- _______, GAMING , DVORAK , COLEMAK , QWERTY , RESET, _______, _______, _______, _______, KC_PWR, RESET,
+ _______, GAMING , DVORAK , COLEMAK , QWERTY , QK_BOOT, _______, _______, _______, _______, KC_PWR, QK_BOOT,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
_______, _______, _______,LGUI(KC_UP),_______,LALT(KC_F4), _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/keebio/iris/keymaps/olligranlund_nordic/keymap.c b/keyboards/keebio/iris/keymaps/olligranlund_nordic/keymap.c
index dd7996a28d..c5911ae5d3 100644
--- a/keyboards/keebio/iris/keymaps/olligranlund_nordic/keymap.c
+++ b/keyboards/keebio/iris/keymaps/olligranlund_nordic/keymap.c
@@ -36,7 +36,7 @@ enum custom_keycodes {
#define KC_LOWER LOWER
#define KC_RAISE RAISE
#define KC_ADJ ADJUST
-#define KC_RST RESET
+#define KC_RST QK_BOOT
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
diff --git a/keyboards/keebio/iris/keymaps/omgvee/keymap.c b/keyboards/keebio/iris/keymaps/omgvee/keymap.c
index 6f29ccecd3..7434a8d19e 100644
--- a/keyboards/keebio/iris/keymaps/omgvee/keymap.c
+++ b/keyboards/keebio/iris/keymaps/omgvee/keymap.c
@@ -108,7 +108,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- BL_BRTG, _______, _______, _______, DEBUG, RESET, RESET, DEBUG, _______, RGB_HUI, RGB_SAI, RGB_VAI,
+ BL_BRTG, _______, _______, _______, DEBUG, QK_BOOT, QK_BOOT, DEBUG, _______, RGB_HUI, RGB_SAI, RGB_VAI,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
BL_INC, _______, _______, _______, _______, EEP_RST, EEP_RST, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
@@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_HWCT] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- BL_BRTG, _______, _______, _______, _______, RESET, RESET, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI,
+ BL_BRTG, _______, _______, _______, _______, QK_BOOT, QK_BOOT, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/keebio/iris/keymaps/osiris/keymap.c b/keyboards/keebio/iris/keymaps/osiris/keymap.c
index 09ad74733d..3df073dbdf 100644
--- a/keyboards/keebio/iris/keymaps/osiris/keymap.c
+++ b/keyboards/keebio/iris/keymaps/osiris/keymap.c
@@ -19,7 +19,7 @@ enum custom_keycodes {
#define KC_LOWR LOWER
#define KC_RASE RAISE
-#define KC_RST RESET
+#define KC_RST QK_BOOT
#define KC_BL_S BL_STEP
// left shift as a left key too - makes perfect sense
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
_______,RGB_TOG,RGB_MOD,RGB_HUI,RGB_SAI,RGB_VAI, _______,_______,_______,_______,_______,_______,
//|-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
- RESET ,DEBUG ,_______,RGB_HUD,RGB_SAD,RGB_VAD, _______,_______,_______,_______,_______,_______,
+ QK_BOOT,DEBUG ,_______,RGB_HUD,RGB_SAD,RGB_VAD, _______,_______,_______,_______,_______,_______,
//|-------+-------+-------+-------+-------+-------+-------. ,-------|-------+-------+-------+-------+-------+-------|
BL_STEP,_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,_______,
//`--------+-------+-------+----+--+-------+-------+-------/ \-------+-------+-------+---+---+-------+-------+-------'
diff --git a/keyboards/keebio/iris/keymaps/radlinskii/config.h b/keyboards/keebio/iris/keymaps/radlinskii/config.h
new file mode 100644
index 0000000000..c3d6b34070
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/radlinskii/config.h
@@ -0,0 +1,37 @@
+// Copyright 2022 Ignacy Radliński (@radlinskii)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// #define USE_I2C
+#define EE_HANDS
+
+#define TAPPING_TOGGLE 1 // tap just once for TT() to toggle the layer
+#define TAPPING_TERM 200
+#define IGNORE_MOD_TAP_INTERRUPT
+
+#define RGBLIGHT_LAYERS
+
+#define RGBLIGHT_DEFAULT_HUE 85
+#define RGBLIGHT_DEFAULT_SAT 255
+
+#undef RGBLIGHT_DEFAULT_MODE
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_LIGHT
+
+#undef RGBLIGHT_ANIMATIONS
+#undef RGBLIGHT_EFFECT_BREATHING // fading in and out
+#undef RGBLIGHT_EFFECT_RAINBOW_MOOD // rainbow all keys at the same time
+#undef RGBLIGHT_EFFECT_RAINBOW_SWIRL // rainbow top bottom
+#undef RGBLIGHT_EFFECT_SNAKE
+#undef RGBLIGHT_EFFECT_KNIGHT
+#undef RGBLIGHT_EFFECT_CHRISTMAS
+#undef RGBLIGHT_EFFECT_STATIC_GRADIENT
+#undef RGBLIGHT_EFFECT_RGB_TEST // red -> green -> blue
+#undef RGBLIGHT_EFFECT_ALTERNATING // blinking
+#undef RGBLIGHT_EFFECT_TWINKLE // randomly fading in and out single keys
+
+#define MOUSEKEY_DELAY 20
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_MAX_SPEED 5
+#define MOUSEKEY_TIME_TO_MAX 40
+#define MOUSEKEY_WHEEL_MAX_SPEED 10
diff --git a/keyboards/keebio/iris/keymaps/radlinskii/keymap.c b/keyboards/keebio/iris/keymaps/radlinskii/keymap.c
new file mode 100644
index 0000000000..b7d3e8f9b8
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/radlinskii/keymap.c
@@ -0,0 +1,193 @@
+// Copyright 2022 Ignacy Radliński (@radlinskii)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#include "light_layers.h"
+
+enum my_layers {
+ _COLEMAK,
+ _QWERTY,
+ _NUM_SYM,
+ _NAV,
+ _MOUSE,
+ _MEDIA_MISC,
+};
+
+enum custom_keycodes {
+ COLEMAK = SAFE_RANGE,
+ QWERTY,
+ DEFAULT
+};
+
+#define LALT_KA LALT_T(KC_A)
+#define LCTL_KS LCTL_T(KC_S)
+#define LGUI_KD LGUI_T(KC_D)
+#define LSFT_KF LSFT_T(KC_F)
+#define RSFT_KJ RSFT_T(KC_J)
+#define RGUI_KK RGUI_T(KC_K)
+#define RCTL_KL RCTL_T(KC_L)
+#define RA_SCLN RALT_T(KC_SCLN)
+
+#define LALT_K1 LALT_T(KC_1)
+#define LCTL_K2 LCTL_T(KC_2)
+#define LGUI_K3 LGUI_T(KC_3)
+#define LSFT_K4 LSFT_T(KC_4)
+#define RSFT_K7 RSFT_T(KC_7)
+#define RGUI_K8 RGUI_T(KC_8)
+#define RCTL_K9 RCTL_T(KC_9)
+#define RALT_K0 RALT_T(KC_0)
+
+#define LCTL_KR LCTL_T(KC_R)
+#define LGUI_KS LGUI_T(KC_S)
+#define LSFT_KT LSFT_T(KC_T)
+#define RSFT_KN RSFT_T(KC_N)
+#define RGUI_KE RGUI_T(KC_E)
+#define RCTL_KI RCTL_T(KC_I)
+#define RALT_KO RALT_T(KC_O)
+
+#define LGUI_BS LGUI_T(KC_BSPC)
+#define RALT_TB RALT_T(KC_TAB)
+
+#define TT_N_S TT(_NUM_SYM)
+#define TT_NAV TT(_NAV)
+#define TO_QWRT TO(_QWERTY)
+#define TO_N_S TO(_NUM_SYM)
+#define TO_NAV TO(_NAV)
+#define TO_MOUSE TO(_MOUSE)
+#define TO_M_M TO(_MEDIA_MISC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_COLEMAK] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ XXXXXXX, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, XXXXXXX,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_CAPS, LALT_KA, LCTL_KR, LGUI_KS, LSFT_KT, KC_G, KC_M, RSFT_KN, RGUI_KE, RCTL_KI, RALT_KO, KC_QUOT,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ XXXXXXX, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_DEL, KC_ESC, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ KC_BSPC, TT_N_S, KC_ENT, KC_SPC, TT_NAV, KC_TAB
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+
+ [_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_BSPC,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LCTL, LALT_KA, LCTL_KS, LGUI_KD, LSFT_KF, KC_G, KC_H, RSFT_KJ, RGUI_KK, RCTL_KL, RA_SCLN, KC_QUOT,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DEL, KC_ESC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ LGUI_BS, TT_N_S, KC_ENT, KC_SPC, TT_NAV, RALT_TB
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+
+ [_NUM_SYM] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+ 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_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_UNDS, KC_PLUS, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, LALT_K1, LCTL_K2, LGUI_K3, LSFT_K4, KC_5, KC_6, RSFT_K7, RGUI_K8, RCTL_K9, RALT_K0, KC_PIPE,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, KC_GRV, KC_LPRN, KC_LCBR, KC_LBRC, _______, _______, KC_RBRC, KC_RCBR, KC_RPRN, KC_MINS, KC_EQL, _______,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ _______, DEFAULT, _______, _______, TO_NAV, _______
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_NAV] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ _______, DEFAULT, _______, _______, TO_MOUSE, _______
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_MOUSE] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, _______, KC_WH_R, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_L, TO_M_M,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ _______, DEFAULT, KC_BTN2, KC_BTN1, TO_NAV, _______
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ ),
+
+ [_MEDIA_MISC] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+ QK_BOOT, _______, _______, _______, _______, QWERTY, COLEMAK, _______, _______, _______, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ KC_CAPS, KC_MPLY, KC_MNXT, KC_VOLU, KC_BRIU, _______, _______, _______, _______, _______, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, KC_MSTP, KC_MPRV, KC_VOLD, KC_BRID, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ _______, DEFAULT, _______, _______, DEFAULT, _______
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ )
+};
+
+void keyboard_post_init_user(void) {
+ rgblight_layers = MY_LIGHT_LAYERS;
+}
+
+layer_state_t default_layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(_COLEMAK, layer_state_cmp(state, _COLEMAK));
+ rgblight_set_layer_state(_QWERTY, layer_state_cmp(state, _QWERTY));
+
+ return state;
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(_NUM_SYM, layer_state_cmp(state, _NUM_SYM));
+ rgblight_set_layer_state(_NAV, layer_state_cmp(state, _NAV));
+ rgblight_set_layer_state(_MOUSE, layer_state_cmp(state, _MOUSE));
+ rgblight_set_layer_state(_MEDIA_MISC, layer_state_cmp(state, _MEDIA_MISC));
+
+ return state;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ layer_move(_COLEMAK);
+ }
+ return false;
+ case QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ layer_move(_QWERTY);
+ }
+ return false;
+ case DEFAULT:
+ if (record->event.pressed) {
+ if (layer_state_cmp(default_layer_state, _COLEMAK)) {
+ layer_move(_COLEMAK);
+ } else if (layer_state_cmp(default_layer_state, _QWERTY)) {
+ layer_move(_QWERTY);
+ }
+ }
+ return false;
+ }
+ return true;
+}
diff --git a/keyboards/keebio/iris/keymaps/radlinskii/light_layers.h b/keyboards/keebio/iris/keymaps/radlinskii/light_layers.h
new file mode 100644
index 0000000000..a1b754545a
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/radlinskii/light_layers.h
@@ -0,0 +1,179 @@
+// Copyright 2022 Ignacy Radliński (@radlinskii)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/*
+
+LED index mapping:
+
+ (31) (32) (33) (67) (66) (65)
+┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+│0 │1 │2 │3 │4 │5 │ │39 │38 │37 │36 │35 │34 │
+├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+│11 │10 │9 │8 │7 │6 │ │40 │41 │42 │43 │44 │45 │
+├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+│12 │13 │14 │15 │16 │17 │ │51 │50 │49 │48 │47 │46 │
+├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+│23 │22 │21 │20 │19 │18 │27 │ │61 │52 │53 │54 │55 │56 │57 │
+└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ │24 │25 │26 │ │60 │59 │58 │
+ └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ (30) (29) (28) (62) (63) (64)
+
+*/
+
+const rgblight_segment_t PROGMEM COLEMAK_LIGHT_LAYER[] = RGBLIGHT_LAYER_SEGMENTS(
+ // left side
+ {0, 6, 127, 255, 255},
+ {6, 6, 115, 255, 255},
+ {12, 6, 97, 255, 255},
+ {18, 6, 90, 255, 255},
+ {24, 1, 85, 255, 255},
+ {25, 1, 169, 255, 255}, // TT(_NUM_SYM)
+ {26, 2, 85, 255, 255},
+ {28, 3, 85, 255, 255}, // underglow
+ {31, 3, 127, 255, 255}, // underglow
+ // right side
+ {34, 6, 127, 255, 255},
+ {40, 6, 115, 255, 255},
+ {46, 6, 97, 255, 255},
+ {52, 6, 90, 255, 255},
+ {58, 1, 85, 255, 255},
+ {59, 1, 201, 255, 255}, // TT(_NAV)
+ {60, 2, 85, 255, 255},
+ {62, 3, 85, 255, 255}, // underglow
+ {65, 3, 127, 255, 255} // underglow
+);
+
+const rgblight_segment_t PROGMEM QWERTY_LIGHT_LAYER[] = RGBLIGHT_LAYER_SEGMENTS(
+ // left side
+ {0, 6, 85, 0, 255},
+ {6, 6, 85, 70, 255},
+ {12, 6, 85, 150, 255},
+ {18, 6, 85, 240, 255},
+ {24, 1, 85, 255, 255},
+ {25, 1, 169, 255, 255}, // TT(_NUM_SYM)
+ {26, 2, 85, 255, 255},
+ {28, 3, 85, 255, 255}, // underglow
+ {31, 3, 85, 0, 255}, // underglow
+ // right side
+ {34, 6, 85, 0, 255},
+ {40, 6, 85, 70, 255},
+ {46, 6, 85, 150, 255},
+ {52, 6, 85, 240, 255},
+ {58, 1, 85, 255, 255},
+ {59, 1, 201, 255, 255}, // TT(_NAV)
+ {60, 2, 85, 255, 255},
+ {62, 3, 85, 255, 255}, // underglow
+ {65, 3, 85, 0, 255} // underglow
+);
+
+const rgblight_segment_t PROGMEM NUM_SYM_LIGHT_LAYER[] = RGBLIGHT_LAYER_SEGMENTS(
+ // left side
+ {0, 6, 201, 255, 255},
+ {6, 6, 191, 255, 255},
+ {12, 6, 181, 255, 255},
+ {18, 6, 171, 255, 255},
+ {24, 1, 169, 255, 255},
+ {25, 1, 85, 255, 255}, // TO(DEFAULT)
+ {26, 2, 169, 255, 255},
+ {28, 3, 169, 255, 255}, // underglow
+ {31, 3, 201, 255, 255}, // underglow
+ // right side
+ {34, 6, 201, 255, 255},
+ {40, 6, 191, 255, 255},
+ {46, 6, 181, 255, 255},
+ {52, 6, 171, 255, 255},
+ {58, 1, 169, 255, 255},
+ {59, 1, 201, 255, 255}, // TO(_NAV)
+ {60, 2, 169, 255, 255},
+ {62, 3, 169, 255, 255}, // underglow
+ {65, 3, 201, 255, 255} // underglow
+);
+
+const rgblight_segment_t PROGMEM NAV_LIGHT_LAYER[] = RGBLIGHT_LAYER_SEGMENTS(
+ // left side
+ {0, 6, 248, 255, 255},
+ {6, 6, 240, 255, 255},
+ {12, 6, 225, 255, 255},
+ {18, 6, 210, 255, 255},
+ {24, 1, 201, 255, 255},
+ {25, 1, 85, 255, 255}, // TO(DEFAULT)
+ {26, 2, 201, 255, 255},
+ {28, 3, 201, 255, 255}, // underglow
+ {31, 3, 248, 255, 255}, // underglow
+ // right side
+ {34, 6, 248, 255, 255},
+ {40, 6, 240, 255, 255},
+ {46, 6, 225, 255, 255},
+ {52, 6, 210, 255, 255},
+ {58, 1, 201, 255, 255},
+ {59, 1, 43, 255, 255}, // TO(_MOUSE)
+ {60, 2, 201, 255, 255},
+ {62, 3, 201, 255, 255}, // underglow
+ {65, 3, 248, 255, 255} // underglow
+);
+
+const rgblight_segment_t PROGMEM MOUSE_LIGHT_LAYER[] = RGBLIGHT_LAYER_SEGMENTS(
+ // left side
+ {0, 6, 4, 255, 255},
+ {6, 6, 10, 255, 255},
+ {12, 6, 25, 255, 255},
+ {18, 6, 40, 255, 255},
+ {24, 1, 43, 255, 255},
+ {25, 1, 85, 255, 255}, // TO(DEFAULT)
+ {26, 2, 43, 255, 255},
+ {28, 3, 43, 255, 255}, // underglow
+ {31, 3, 4, 255, 255}, // underglow
+ // right side
+ {34, 6, 4, 255, 255},
+ {40, 6, 10, 255, 255},
+ {46, 1, 0, 255, 255}, // TO(_MEDIA_MISC)
+ {47, 5, 25, 255, 255},
+ {52, 6, 40, 255, 255},
+ {58, 1, 43, 255, 255},
+ {59, 1, 201, 255, 255}, // TO(_NAV)
+ {60, 2, 43, 255, 255},
+ {62, 3, 43, 255, 255}, // underglow
+ {65, 3, 4, 255, 255} // underglow
+);
+
+const rgblight_segment_t PROGMEM MEDIA_MISC_LIGHT_LAYER[] = RGBLIGHT_LAYER_SEGMENTS(
+ // both sides
+ {0, 1, 0, 255, 255}, // RESET
+ {1, 4, 0, 0, 0},
+ {5, 1, 85, 0, 255}, // set QWERTY as default
+ {6, 2, 0, 0, 0},
+ {8, 1, 160, 150, 150}, // MUTE
+ {9, 3, 0, 0, 0},
+ {12, 1, 201, 255, 255}, // CAPS
+ {13, 1, 120, 255, 255}, // PLAY
+ {14, 1, 0, 255, 255}, // NEXT
+ {15, 1, 160, 255, 255}, // VOLUME_UP
+ {16, 1, 43, 255, 255}, // BRIGHTNESS_UP
+ {17, 2, 0, 0, 0},
+ {19, 1, 43, 200, 200}, // BRIGHTNESS_DOWN
+ {20, 1, 160, 220, 200}, // VOLUME_DOWN
+ {21, 1, 0, 220, 200}, // PREV
+ {22, 1, 120, 220, 200}, // STOP
+ {23, 2, 0, 0, 0},
+ {25, 1, 85, 255, 255}, // TO(DEFAULT)
+ {26, 2, 0, 0, 0},
+ {28, 6, 0, 255, 255}, // underglow
+ {34, 5, 0, 0, 0},
+ {39, 1, 127, 255, 255}, // set COLEMAK as default
+ {40, 19, 0, 0, 0},
+ {59, 1, 85, 255, 255}, // TO(DEFAULT)
+ {60, 2, 0, 0, 0},
+ {62, 6, 0, 255, 255} // underglow
+);
+
+const rgblight_segment_t* const PROGMEM MY_LIGHT_LAYERS[] = RGBLIGHT_LAYERS_LIST(
+ COLEMAK_LIGHT_LAYER,
+ QWERTY_LIGHT_LAYER,
+ NUM_SYM_LIGHT_LAYER,
+ NAV_LIGHT_LAYER,
+ MOUSE_LIGHT_LAYER,
+ MEDIA_MISC_LIGHT_LAYER
+);
diff --git a/keyboards/keebio/iris/keymaps/radlinskii/readme.md b/keyboards/keebio/iris/keymaps/radlinskii/readme.md
new file mode 100644
index 0000000000..5a0e929991
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/radlinskii/readme.md
@@ -0,0 +1,137 @@
+# Iris rev. 6 keymap by radlinskii
+
+![iris rev. 6 by radlinskii lightning demo](https://user-images.githubusercontent.com/26116041/171883033-3c5ababe-88ae-4c9d-8436-3d6ab83dbf4b.gif)
+
+## Features:
+
+- [RGB Lightning layers](https://docs.qmk.fm/#/feature_rgblight?id=lighting-layers)
+- [MOUSE KEYS](https://docs.qmk.fm/#/keycodes?id=mouse-keys)
+- [MOD-TAPS](https://docs.qmk.fm/#/mod_tap)
+
+## Layers:
+
+### colemak - default
+
+> [Colemak DH](https://colemakmods.github.io/mod-dh/) keyboard layout.
+
+<details>
+ <summary>
+ keymap
+ </summary>
+
+<img width="800" alt="colemak layer keymap" src="https://user-images.githubusercontent.com/26116041/173403537-f2222651-c8ea-4c8b-b828-97520a222344.png">
+
+</details>
+<details>
+ <summary>
+ lightning
+ </summary>
+
+
+<img width="800" alt="colemak layer lightning" src="https://user-images.githubusercontent.com/26116041/173681398-cdcff1a5-ae79-4409-950a-1b671c350f07.jpeg">
+
+</details>
+
+### qwerty - alternative default
+
+> Can be set as persistent default layer.
+
+<details>
+ <summary>
+ keymap
+ </summary>
+
+<img width="800" alt="qwerty layer keymap" src="https://user-images.githubusercontent.com/26116041/173403371-1551976a-2f95-4dbd-ba07-96936651871d.png">
+
+</details>
+<details>
+ <summary>
+ lightning
+ </summary>
+
+<img width="800" alt="qwerty layer lightning" src="https://user-images.githubusercontent.com/26116041/173681525-aee3c927-995a-4f83-b688-ed8bfd3f8bb6.jpeg">
+
+</details>
+
+### numeric + symbols
+
+<details>
+ <summary>
+ keymap
+ </summary>
+
+<img width="800" alt="numeric and symbols layer keymap" src="https://user-images.githubusercontent.com/26116041/173403164-b0520501-761b-4567-bf04-57f7b6f7dd4d.png">
+
+</details>
+<details>
+ <summary>
+ lightning
+ </summary>
+
+<img width="800" alt="numeric and symbols layer lightning" src="https://user-images.githubusercontent.com/26116041/173681689-0b864e35-0e02-4204-a469-6e872e704903.jpeg">
+
+</details>
+
+### navigation
+
+> Layer with arrow navigation.
+
+<details>
+ <summary>
+ keymap
+ </summary>
+
+<img width="800" alt="navigation layer keymap" src="https://user-images.githubusercontent.com/26116041/173408142-1e1c297e-57db-42f8-bc18-a04dd4e202c9.png">
+
+</details>
+<details>
+ <summary>
+ lightning
+ </summary>
+
+<img width="800" alt="navigation layer lightning" src="https://user-images.githubusercontent.com/26116041/173681859-fa6f071a-98e9-48f8-a9a0-76d7510b302a.jpeg">
+
+</details>
+
+### mouse
+
+> Layer with mouse navigation on the same keys as arrow navigation.
+
+<details>
+ <summary>
+ keymap
+ </summary>
+
+<img width="800" alt="mouse layer keymap" src="https://user-images.githubusercontent.com/26116041/173402955-050ffd77-7b60-45dc-8e89-54cd43793132.png">
+
+</details>
+<details>
+ <summary>
+ lightning
+ </summary>
+
+<img width="800" alt="mouse layer lightning" src="https://user-images.githubusercontent.com/26116041/173682436-07c32e5e-f415-463d-8c93-d2cbd4e406a1.jpeg">
+
+</details>
+
+### media and miscellaneous
+
+> Used for media keys, switching default layer and keyboard reset.
+
+<details>
+ <summary>
+ keymap
+ </summary>
+
+<img width="800" alt="media and miscellaneous layer keymap" src="https://user-images.githubusercontent.com/26116041/173402837-75ce8ab1-7fbe-454b-b165-b22d171f9ad1.png">
+
+</details>
+<details>
+ <summary>
+ lightning
+ </summary>
+
+<img width="800" alt="media and miscellaneous layer lightning" src="https://user-images.githubusercontent.com/26116041/173682188-3eab9c09-d466-4729-89ac-48e09f55564c.jpeg">
+
+</details>
+
diff --git a/keyboards/keebio/iris/keymaps/radlinskii/rules.mk b/keyboards/keebio/iris/keymaps/radlinskii/rules.mk
new file mode 100644
index 0000000000..f1a0d40690
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/radlinskii/rules.mk
@@ -0,0 +1,3 @@
+RGBLIGHT_ENABLE = yes # by default this is no, but for the rgb light layers to work it needs to be `yes`
+RGB_MATRIX_ENABLE = no # by default this is yes, but for the rgb light layers to work it needs to be `no`
+MOUSEKEY_ENABLE = yes
diff --git a/keyboards/keebio/iris/keymaps/sq5rix/keymap.c b/keyboards/keebio/iris/keymaps/sq5rix/keymap.c
index 19a939a55b..752fc392f3 100644
--- a/keyboards/keebio/iris/keymaps/sq5rix/keymap.c
+++ b/keyboards/keebio/iris/keymaps/sq5rix/keymap.c
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_RAISE] = LAYOUT(
- _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_BRIGHTNESS_DOWN, KC_BRIGHTNESS_UP, KC_PSCREEN, _______, _______, _______, _______, RESET,
+ _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_BRIGHTNESS_DOWN, KC_BRIGHTNESS_UP, KC_PSCREEN, _______, _______, _______, _______, QK_BOOT,
_______, KC_SLSH, KC_6, KC_5, KC_4, KC_EQL, KC_CIRC, KC_PGUP, KC_UP, KC_PGDN, _______, RGB_VAI,
_______, KC_3, KC_2, KC_1, KC_0, KC_DOT, KC_EQL, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
_______, KC_ASTR, KC_9, KC_8, KC_7, KC_PLUS, _______, _______, KC_PLUS, KC_HOME, KC_COLN, KC_END, _______, RGB_MOD,
@@ -134,7 +134,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
// tmux screen
else if (index == 1) {
- switch(biton32(layer_state)){
+ switch(get_highest_layer(layer_state)){
case 0:
if (clockwise) {
send_string(SS_LCTL("B")"p");
@@ -182,4 +182,3 @@ layer_state_t layer_state_set_user(layer_state_t state) {
rgblight_set_layer_state(2, layer_state_cmp(state, 4));
return state;
}
-
diff --git a/keyboards/keebio/iris/keymaps/two_knob/config.h b/keyboards/keebio/iris/keymaps/two_knob/config.h
new file mode 100644
index 0000000000..37ffb20a2f
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/two_knob/config.h
@@ -0,0 +1,62 @@
+// Copyright 2022 Ryan Neff (@JellyTitan)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define EE_HANDS
+
+/* Turn off RGB light when host is asleep. (Doesn't seem to work for mac)? */
+#define RGBLIGHT_SLEEP
+#define RGBLIGHT_LAYERS
+/* Decrease decay of heatmap rgb effect */
+#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 50
+/* If you're setting colors per key, this is required. */
+#define SPLIT_LAYER_STATE_ENABLE
+
+/* If you type too fast, it confuses the Mod key combos. This resolves it: */
+#define IGNORE_MOD_TAP_INTERRUPT
+
+/* Set tapdance speed */
+#define TAPPING_TERM 210
+
+/* Allows for the setting of constant mouse speed levels. */
+/* Delay between pressing a movement key and cursor movement */
+#define MOUSEKEY_DELAY 10
+/* Time between cursor movements in milliseconds */
+#define MOUSEKEY_INTERVAL 16
+/* Step size */
+#define MOUSEKEY_MOVE_DELTA 8
+/* Maximum cursor speed at which acceleration stops */
+#define MOUSEKEY_MAX_SPEED 2
+/* Time until maximum cursor speed is reached */
+#define MOUSEKEY_TIME_TO_MAX 40
+/* Maximum number of scroll steps per scroll action */
+#define MOUSEKEY_WHEEL_MAX_SPEED 42
+/* Time until maximum scroll speed is reached */
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 15
+
+// Tweak how the mouse cursor moves. https://docs.qmk.fm/#/feature_mouse_keys
+// Accelerated mode (default).
+// MOUSEKEY_DELAY 10 Delady between pressing a movement key and cursor movement
+// MOUSEKEY_INTERVAL 20 Time between cursor movements in milliseconds
+// MOUSEKEY_MOVE_DELTA 8 Step size
+// MOUSEKEY_MAX_SPEED 10 Maximum cursor speed at which acceleration stops
+// MOUSEKEY_TIME_TO_MAX 30 Time until maximum cursor speed is reached
+// MOUSEKEY_WHEEL_DELAY 10 Delay between pressing a wheel key and wheel movement
+// MOUSEKEY_WHEEL_INTERVAL 80 Time between wheel movements
+// MOUSEKEY_WHEEL_MAX_SPEED 8 Maximum number of scroll steps per scroll action
+// MOUSEKEY_WHEEL_TIME_TO_MAX 40 Time until maximum scroll speed is reached
+
+// Kinetic mode, alternate to the default mode.
+// MK_KINETIC_SPEED undefined Enable kinetic mode
+// MOUSEKEY_DELAY 5 Delay between pressing a movement key and cursor movement
+// MOUSEKEY_INTERVAL 10 Time between cursor movements in milliseconds
+// MOUSEKEY_MOVE_DELTA 5 Step size for accelerating from initial to base speed
+// MOUSEKEY_INITIAL_SPEED 100 Initial speed of the cursor in pixel per second
+// MOUSEKEY_BASE_SPEED 1000 Maximum cursor speed at which acceleration stops
+// MOUSEKEY_DECELERATED_SPEED 400 Decelerated cursor speed
+// MOUSEKEY_ACCELERATED_SPEED 3000 Accelerated cursor speed
+// MOUSEKEY_WHEEL_INITIAL_MOVEMENTS 16 Initial number of movements of the mouse wheel
+// MOUSEKEY_WHEEL_BASE_MOVEMENTS 32 Maximum number of movements at which acceleration stops
+// MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS 48 Accelerated wheel movements
+// MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS 8 Decelerated wheel movements
diff --git a/keyboards/keebio/iris/keymaps/two_knob/keymap.c b/keyboards/keebio/iris/keymaps/two_knob/keymap.c
new file mode 100644
index 0000000000..aeeb2df905
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/two_knob/keymap.c
@@ -0,0 +1,261 @@
+// Copyright 2022 Ryan Neff (@JellyTitan)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+/* Defines macros for use with the configurators "Any" key. (These are non-standard macros). */
+/* Move active application right half. */
+#define KC_CSGRA LCTL(LSFT(LGUI(KC_RGHT)))
+/* Move active application to left half. */
+#define KC_CSGLA LCTL(LSFT(LGUI(KC_LEFT)))
+/* Maximize active application. */
+#define KC_MAXIM LCTL(LSFT(LGUI(KC_UP)))
+/* Minimize active application. */
+#define KC_MINIM LCTL(LSFT(LGUI(KC_DOWN)))
+
+/* Rotary encoder variables used to hold down Command (GUI) key while cycling through open programs. */
+bool is_cmd_tab_active = false;
+uint16_t cmd_tab_timer = 0;
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+ LOWER,
+ RAISE,
+ ADJUST,
+ CMD_TAB_CW,
+ CMD_TAB_CCW,
+};
+
+/**
+ * Tap Dance declarations
+ */
+enum tapdances {
+ _TD_FIVE_ENTER,
+};
+
+/* Tapdance */
+#define TD_FIVE_ENTER TD(_TD_FIVE_ENTER)
+
+/**
+ * Tap Dance definitions
+ *
+ * NOTE - if your not using tapdance, comment out:
+ * TAP_DANCE_ENABLE = yes in rules.mk
+ * define TAPPING_TERM 175 in config.h
+ * else you'll get a compile error.
+ *
+ * To use this in the configurator, enter the name 'TD_FIVE_ENTER' in the "Any" key.
+ */
+qk_tap_dance_action_t tap_dance_actions[] = {
+ /* Tap once for 5, twice for Enter. */
+ [_TD_FIVE_ENTER] = ACTION_TAP_DANCE_DOUBLE(KC_5, KC_ENT),
+};
+
+/**
+ * Keymap. Generated via configurator.
+ *
+ * You can download/upload the two_know.json to the configurator:
+ * https://config.qmk.fm/#/keebio/iris/rev6a/LAYOUT
+ *
+ * If you make changes and download the json, you can run qmk json2c two_knob.json to get converted text.
+ * You can copy and paste it here.
+ * You will have to reneame the array keys from ints to the custom keycode names.
+ *
+ * The rotary encoders are programmed manually below because the configurator does not support them yet.
+ */
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT(KC_EQL, KC_1, KC_2, KC_3, KC_4, TD_FIVE_ENTER, 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, LT(1, KC_DEL), LT(2, KC_A), LCTL_T(KC_S), KC_D, LGUI_T(KC_F), KC_G, KC_H, RGUI_T(KC_J), KC_K, RCTL_T(KC_L), LT(2, KC_SCLN), LT(1, KC_QUOT), KC_LSPO, LALT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_MINIM, KC_MAXIM, KC_N, KC_M, KC_COMM, KC_DOT, RALT_T(KC_SLSH), KC_RSPC, QK_GESC, KC_SPC, KC_BSPC, KC_TAB, KC_ENT, KC_DEL),
+ [_LOWER] = 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_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, DT_PRNT, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, DT_UP, KC_4, KC_5, KC_6, KC_PPLS, KC_TRNS, KC_TRNS, KC_HASH, KC_DLR, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS, KC_TRNS, DT_DOWN, KC_1, KC_2, KC_3, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0),
+ [_RAISE] = LAYOUT(RGB_TOG, KC_ACL0, KC_ACL1, KC_ACL2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_UP, KC_BTN2, RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, 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, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_CSGLA, KC_CSGRA, KC_TRNS, KC_TRNS),
+ [_ADJUST] = LAYOUT(
+ //┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
+ _______, _______, _______, _______, _______, _______
+ // └────────┴────────┴────────┘ └────────┴────────┴────────┘
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ 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;
+ case CMD_TAB_CW:
+ if (record->event.pressed) {
+ if (!is_cmd_tab_active) {
+ is_cmd_tab_active = true;
+ register_code(KC_LGUI);
+ }
+ cmd_tab_timer = timer_read();
+ register_code(KC_TAB);
+ } else {
+ unregister_code(KC_TAB);
+ }
+ break;
+ case CMD_TAB_CCW:
+ if (record->event.pressed) {
+ if (!is_cmd_tab_active) {
+ is_cmd_tab_active = true;
+ register_code(KC_LGUI);
+ }
+ cmd_tab_timer = timer_read();
+ tap_code16(S(KC_TAB));
+ } else {
+ unregister_code(KC_TAB);
+ }
+ break;
+ }
+ return true;
+}
+
+/**
+ * Define lighting layers.
+ *
+ * Iris rev6a uses WS2812 RGB Matrix lighting.
+ * The RGB Matrix lighting option has already been enabled in ../../rev6a/config.h
+ * You'll need to add #define SPLIT_LAYER_STATE_ENABLE to config.h if you
+ * will be customizing the LED's per key.
+ *
+ * Here's how to customize the colors per layer and per key:
+ * https://github.com/qmk/qmk_firmware/blob/master/docs/feature_rgb_matrix.md#direct-operation-iddirect-operation
+ *
+ * If you start getting real weird with it, your likely to exceed the firmware limit of 28672.
+ * You may need to selectively disable some effects:
+ * https://github.com/qmk/qmk_firmware/blob/master/docs/feature_rgb_matrix.md#rgb-matrix-effects-idrgb-matrix-effects
+ *
+ * There are 68 Leds. Printed on the board itself, the led numbers are 1-68.
+ * For color addressing, use 0-67 as the index number.
+ * rgb_matrix_set_color(index, r, g, b)
+ *
+ * Here's an LED number guide:
+ * FRONT
+ * Left Hand Right Hand
+ * |00|01|02|03|04|05| |39|38|37|36|35|34|
+ * |11|10|09|08|07|06| |40|41|42|43|44|45|
+ * |12|13|14|15|16|17| |51|50|49|48|47|46|
+ * |23|22|21|20|19|18|27| |61|52|53|54|55|56|57|
+ * |24|25|26| |60|59|58|
+ * REVERSE
+ * Right Hand Left Hand
+ * |65|--|--|66|--|67| |33|--|32|--|--|31|
+ * |--|--|--|--|--|--| |--|--|--|--|--|--|
+ * |--|--|--|--|--|--| |--|--|--|--|--|--|
+ * |64|--|--|63|--|--|--| |--|--|--|29|--|--|30|
+ * |--|62|--| |--|28|--|
+ */
+// void rgb_matrix_indicators_user(void) {
+// if (IS_LAYER_ON(1)) {
+// /* Upperleft most key red: */
+// rgb_matrix_set_color(0,255,0,0);
+// /* Upperright most front key blue: */
+// rgb_matrix_set_color(0,0,255,0);
+// /* Bottom right on lefthand Green: */
+// rgb_matrix_set_color(0, RGB_GREEN);
+// }
+// else if (IS_LAYER_ON(2)) {
+// /* RGB +/- controls. */
+// rgb_matrix_set_color(35, RGB_RED);
+// rgb_matrix_set_color(34, RGB_BLUE);
+// rgb_matrix_set_color(37, RGB_RED);
+// rgb_matrix_set_color(36, RGB_BLUE);
+// rgb_matrix_set_color(44, RGB_RED);
+// rgb_matrix_set_color(45, RGB_BLUE);
+// rgb_matrix_set_color(47, RGB_RED);
+// rgb_matrix_set_color(46, RGB_BLUE);
+// rgb_matrix_set_color(56, RGB_RED);
+// rgb_matrix_set_color(57, RGB_BLUE);
+// /* RGB Toggle. */
+// rgb_matrix_set_color(00, RGB_PURPLE);
+// /* Move screen left/right. */
+// rgb_matrix_set_color(26, RGB_YELLOW);
+// rgb_matrix_set_color(60, RGB_YELLOW);
+// /* Arrow keys. */
+// rgb_matrix_set_color(50, RGB_PURPLE);
+// rgb_matrix_set_color(49, RGB_PURPLE);
+// rgb_matrix_set_color(48, RGB_PURPLE);
+// rgb_matrix_set_color(42, RGB_PURPLE);
+// /* Mouse movement arrows. */
+// rgb_matrix_set_color(14, RGB_ORANGE);
+// rgb_matrix_set_color(15, RGB_ORANGE);
+// rgb_matrix_set_color(16, RGB_ORANGE);
+// rgb_matrix_set_color(8, RGB_ORANGE);
+// /* Mouse buttons. */
+// rgb_matrix_set_color(41, RGB_ORANGE);
+// rgb_matrix_set_color(43, RGB_ORANGE);
+// /* Mouse acceleration. */
+// rgb_matrix_set_color(01, 200, 165, 0);
+// rgb_matrix_set_color(02, 255, 200, 0);
+// rgb_matrix_set_color(03, 255, 235, 0);
+// }
+// }
+
+/**
+ * Rotary Encoder.
+ *
+ * This can't be programmed through configurator. You must do it here.
+ *
+ * This uses the amazing "Encoder map" feature which replicates the normal keyswitch layer handling functionality, but with encoders.
+ * https://docs.qmk.fm/#/feature_encoders?id=encoder-map
+ *
+ * Uses a variant of the Super-alt-tab macro to switch between open applications on a mac. (Command-tab)
+ * https://docs.qmk.fm/#/feature_macros?id=super-alt%e2%86%aftab
+ */
+#if defined(ENCODER_MAP_ENABLE)
+ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ /* Left Hand */ /* Right Hand */
+ /* Switch between tabs. (Control + Tab). */ /* Switch between open apps on Mac. (Command + Tab + timer logic) */
+ [_QWERTY] = { ENCODER_CCW_CW(S(C(KC_TAB)), C(KC_TAB)), ENCODER_CCW_CW(CMD_TAB_CCW, CMD_TAB_CW) },
+ /* Scrolls left & right. (Shift + Mouse Wheel Up). */ /* Scrolls up and down. (Page Down & Page Up - mouse wheel scroll incraments are too small) */
+ [_LOWER] = { ENCODER_CCW_CW(S(KC_MS_WH_UP), S(KC_MS_WH_DOWN)), ENCODER_CCW_CW(KC_PGDN, KC_PGUP) },
+ /* Selects adjacent words. (Command + Shift + Right Arrow). */ /* Jumps to end/start of line. Hold shift to select. (Gui + arrow). */
+ [_RAISE] = { ENCODER_CCW_CW(C(S(KC_LEFT)), C(S(KC_RGHT))), ENCODER_CCW_CW(G(KC_LEFT), G(KC_RGHT)) },
+ /* Scroll through RGB Modes */ /* Right & left arrow */
+ [_ADJUST] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_LEFT, KC_RGHT) },
+ };
+#endif
+
+
+/**
+ * Helper function for rotary encoder.
+ *
+ * If the timer has elapsed, the Command/Gui tab will be released.
+ * You can adjust the milliseconds to speed up the CMD key release.
+ */
+void matrix_scan_user(void) {
+ if (is_cmd_tab_active) {
+ if (timer_elapsed(cmd_tab_timer) > 900) {
+ unregister_code(KC_LGUI);
+ is_cmd_tab_active = false;
+ }
+ }
+}
diff --git a/keyboards/keebio/iris/keymaps/two_knob/readme.md b/keyboards/keebio/iris/keymaps/two_knob/readme.md
new file mode 100644
index 0000000000..728650fcb9
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/two_knob/readme.md
@@ -0,0 +1,15 @@
+# Two Knob Keymap for Iris Rev6a
+![two_knobs](https://i.imgur.com/JqGPWCn.png)
+
+This keymap is derived from Ergodox layouts and is adapted for the [Iris6a](https://docs.keeb.io/iris-rev6-build-guide). It is notable for it's semi-complex programming examples that include the use of rotary encoders.
+
+Plenty of useful examples:
+* Advanced knob programming! (Three-layer usage + clicks)
+* Advanced RGB! (Per-key lighting)
+* Macros! (Fancy key combos tied to the rotary encoders)
+* Tap Dance! (Double tap your '5' key for 'Enter')
+* Dynamic Tapping term! (Dial in the double tap speed)
+
+The qwerty key layout is my adaptation of the ergodox defaults. If this is your first split keyboard, you probably want a different key layout.
+
+I stopped using the fancy RGB programming pretty quickly. It was a complex to get working initially, so I'm leaving the examples here for others. (As a touch typist - not terribly helpful, but it looks nice). YMMV.
diff --git a/keyboards/keebio/iris/keymaps/two_knob/rules.mk b/keyboards/keebio/iris/keymaps/two_knob/rules.mk
new file mode 100644
index 0000000000..dd49f77547
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/two_knob/rules.mk
@@ -0,0 +1,15 @@
+# Copyright 2022 Ryan Neff (@JellyTitan)
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+# Turn on mouse:
+MOUSEKEY_ENABLE = yes
+# Turn on tap dance:
+TAP_DANCE_ENABLE = yes
+# Dynamic Tapping Term:
+DYNAMIC_TAPPING_TERM_ENABLE = yes
+# Replicates the normal keyswitch layer handling functionality, but with encoders:
+ENCODER_MAP_ENABLE = yes
+# Console for debug:
+# This is enabled by the parent iris rev6a config - turning it off saves us some space.
+# You can find the other iris default options here: keyboards/keebio/iris/rev6a/rules.mk
+CONSOLE_ENABLE = no
diff --git a/keyboards/keebio/iris/keymaps/two_knob/two_knob.json b/keyboards/keebio/iris/keymaps/two_knob/two_knob.json
new file mode 100644
index 0000000000..62fb931873
--- /dev/null
+++ b/keyboards/keebio/iris/keymaps/two_knob/two_knob.json
@@ -0,0 +1,185 @@
+{
+ "version": 1,
+ "notes": "Based on legacy Ergodox layouts.",
+ "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": "keebio/iris/rev6a",
+ "keymap": "two_knob",
+ "layout": "LAYOUT",
+ "layers": [
+ [
+ "KC_EQL",
+ "KC_1",
+ "KC_2",
+ "KC_3",
+ "KC_4",
+ "ANY(TD_FIVE_ENTER)",
+ "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",
+ "LT(1,KC_DEL)",
+ "LT(2,KC_A)",
+ "LCTL_T(KC_S)",
+ "KC_D",
+ "LGUI_T(KC_F)",
+ "KC_G",
+ "KC_H",
+ "RGUI_T(KC_J)",
+ "KC_K",
+ "RCTL_T(KC_L)",
+ "LT(2,KC_SCLN)",
+ "LT(1,KC_QUOT)",
+ "KC_LSPO",
+ "LALT_T(KC_Z)",
+ "KC_X",
+ "KC_C",
+ "KC_V",
+ "KC_B",
+ "ANY(KC_MINIM)",
+ "ANY(KC_MAXIM)",
+ "KC_N",
+ "KC_M",
+ "KC_COMM",
+ "KC_DOT",
+ "RALT_T(KC_SLSH)",
+ "KC_RSPC",
+ "QK_GESC",
+ "KC_SPC",
+ "KC_BSPC",
+ "KC_TAB",
+ "KC_ENT",
+ "KC_DEL"
+ ],
+ [
+ "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_TRNS",
+ "KC_EXLM",
+ "KC_AT",
+ "KC_LCBR",
+ "KC_RCBR",
+ "KC_PIPE",
+ "ANY(DT_PRNT)",
+ "KC_7",
+ "KC_8",
+ "KC_9",
+ "KC_ASTR",
+ "KC_F12",
+ "KC_TRNS",
+ "KC_HASH",
+ "KC_DLR",
+ "KC_LPRN",
+ "KC_RPRN",
+ "KC_GRV",
+ "ANY(DT_UP)",
+ "KC_4",
+ "KC_5",
+ "KC_6",
+ "KC_PPLS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_HASH",
+ "KC_DLR",
+ "KC_LBRC",
+ "KC_RBRC",
+ "KC_TILD",
+ "KC_TRNS",
+ "KC_TRNS",
+ "ANY(DT_DOWN)",
+ "KC_1",
+ "KC_2",
+ "KC_3",
+ "KC_PSLS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_P0"
+ ],
+ [
+ "RGB_TOG",
+ "KC_ACL0",
+ "KC_ACL1",
+ "KC_ACL2",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "RGB_MOD",
+ "RGB_RMOD",
+ "RGB_HUI",
+ "RGB_HUD",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_MS_U",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_BTN1",
+ "KC_UP",
+ "KC_BTN2",
+ "RGB_SAI",
+ "RGB_SAD",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_MS_L",
+ "KC_MS_D",
+ "KC_MS_R",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_LEFT",
+ "KC_DOWN",
+ "KC_RGHT",
+ "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",
+ "RGB_SPI",
+ "RGB_SPD",
+ "KC_TRNS",
+ "KC_TRNS",
+ "ANY(KC_CSGLA)",
+ "ANY(KC_CSGRA)",
+ "KC_TRNS",
+ "KC_TRNS"
+ ]
+ ],
+ "author": "https://github.com/JellyTitan"
+}
diff --git a/keyboards/keebio/iris/keymaps/via/keymap.c b/keyboards/keebio/iris/keymaps/via/keymap.c
index 1305a3b909..cfd274cd9a 100644
--- a/keyboards/keebio/iris/keymaps/via/keymap.c
+++ b/keyboards/keebio/iris/keymaps/via/keymap.c
@@ -1,11 +1,11 @@
#include QMK_KEYBOARD_H
-extern keymap_config_t keymap_config;
-
-#define _MAIN 0
-#define _FN1 1
-#define _FN2 2
-#define _FN3 3
+enum custom_layer {
+ _MAIN,
+ _FN1,
+ _FN2,
+ _FN3,
+};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
- QK_BOOT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
+ QK_BOOT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_DEL, _______, KC_LEFT, KC_RGHT, KC_UP, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_PLUS, KC_PIPE,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
@@ -65,3 +65,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// └────────┴────────┴────────┘ └────────┴────────┴────────┘
)
};
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+# if defined(KEYBOARD_keebio_iris_rev7)
+ [_MAIN] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_PGDN, KC_PGUP) },
+ [_FN1] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_HOME, KC_END), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_HOME, KC_END) },
+ [_FN2] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+ [_FN3] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(KC_UP, KC_DOWN), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_UP, KC_DOWN) },
+# else
+ [_MAIN] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN1] = { ENCODER_CCW_CW(KC_HOME, KC_END), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
+ [_FN2] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
+ [_FN3] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+# endif
+};
+#endif
diff --git a/keyboards/keebio/iris/keymaps/via/rules.mk b/keyboards/keebio/iris/keymaps/via/rules.mk
index 36b7ba9cbc..1189f4ad19 100644
--- a/keyboards/keebio/iris/keymaps/via/rules.mk
+++ b/keyboards/keebio/iris/keymaps/via/rules.mk
@@ -1,2 +1,3 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keebio/iris/keymaps/xyverz/keymap.c b/keyboards/keebio/iris/keymaps/xyverz/keymap.c
index e5e8aebd28..d59fd8fedf 100644
--- a/keyboards/keebio/iris/keymaps/xyverz/keymap.c
+++ b/keyboards/keebio/iris/keymaps/xyverz/keymap.c
@@ -25,7 +25,7 @@ enum custom_keycodes {
#define KC_LOWR LOWER
#define KC_RASE RAISE
-#define KC_RST RESET
+#define KC_RST QK_BOOT
#define KC_BL_S BL_STEP
#define KC_QWRT QWERTY
#define KC_CLMK COLEMAK
diff --git a/keyboards/keebio/iris/keymaps/yoonbae81/keymap.c b/keyboards/keebio/iris/keymaps/yoonbae81/keymap.c
index 58f115d6d1..07cd2cb094 100644
--- a/keyboards/keebio/iris/keymaps/yoonbae81/keymap.c
+++ b/keyboards/keebio/iris/keymaps/yoonbae81/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN3] = LAYOUT(
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/keebio/iris/rev1/config.h b/keyboards/keebio/iris/rev1/config.h
index c1d39cfbe7..6e0e720175 100644
--- a/keyboards/keebio/iris/rev1/config.h
+++ b/keyboards/keebio/iris/rev1/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1256
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT Iris Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/keebio/iris/rev1/info.json b/keyboards/keebio/iris/rev1/info.json
new file mode 100644
index 0000000000..414db5ad6a
--- /dev/null
+++ b/keyboards/keebio/iris/rev1/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Iris Rev. 1",
+ "usb": {
+ "pid": "0x1256",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/keebio/iris/rev1_led/config.h b/keyboards/keebio/iris/rev1_led/config.h
index 02bc73021c..2d88d72ac9 100644
--- a/keyboards/keebio/iris/rev1_led/config.h
+++ b/keyboards/keebio/iris/rev1_led/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1256
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT Iris Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/keebio/iris/rev1_led/info.json b/keyboards/keebio/iris/rev1_led/info.json
new file mode 100644
index 0000000000..38b09bbe35
--- /dev/null
+++ b/keyboards/keebio/iris/rev1_led/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Iris Rev. 1",
+ "usb": {
+ "pid": "0x1256",
+ "device_version": "1.1.0"
+ }
+}
diff --git a/keyboards/keebio/iris/rev2/config.h b/keyboards/keebio/iris/rev2/config.h
index 793d653c0b..0c795940cd 100644
--- a/keyboards/keebio/iris/rev2/config.h
+++ b/keyboards/keebio/iris/rev2/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x2256
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Keebio
-#define PRODUCT Keebio Iris Rev. 2
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/keebio/iris/rev2/info.json b/keyboards/keebio/iris/rev2/info.json
new file mode 100644
index 0000000000..dd223d4f94
--- /dev/null
+++ b/keyboards/keebio/iris/rev2/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Iris Rev. 2",
+ "usb": {
+ "pid": "0x2256",
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/keebio/iris/rev3/config.h b/keyboards/keebio/iris/rev3/config.h
index 921627382c..e08660612d 100644
--- a/keyboards/keebio/iris/rev3/config.h
+++ b/keyboards/keebio/iris/rev3/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1256
-#define DEVICE_VER 0x0300
-#define MANUFACTURER Keebio
-#define PRODUCT Keebio Iris Rev. 3
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/keebio/iris/rev3/info.json b/keyboards/keebio/iris/rev3/info.json
new file mode 100644
index 0000000000..af6215b201
--- /dev/null
+++ b/keyboards/keebio/iris/rev3/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Iris Rev. 3",
+ "usb": {
+ "pid": "0x3256",
+ "device_version": "3.0.0"
+ }
+}
diff --git a/keyboards/keebio/iris/rev4/config.h b/keyboards/keebio/iris/rev4/config.h
index 0ad59b9774..0af962ac52 100644
--- a/keyboards/keebio/iris/rev4/config.h
+++ b/keyboards/keebio/iris/rev4/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x4256
-#define DEVICE_VER 0x0400
-#define MANUFACTURER Keebio
-#define PRODUCT Keebio Iris Rev. 4
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/keebio/iris/rev4/info.json b/keyboards/keebio/iris/rev4/info.json
new file mode 100644
index 0000000000..aa42788154
--- /dev/null
+++ b/keyboards/keebio/iris/rev4/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Iris Rev. 4",
+ "usb": {
+ "pid": "0x4256",
+ "device_version": "4.0.0"
+ }
+}
diff --git a/keyboards/keebio/iris/rev5/config.h b/keyboards/keebio/iris/rev5/config.h
index 15eed8349f..2d06626486 100644
--- a/keyboards/keebio/iris/rev5/config.h
+++ b/keyboards/keebio/iris/rev5/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x5256
-#define DEVICE_VER 0x0500
-#define MANUFACTURER Keebio
-#define PRODUCT Iris Rev. 5
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/keebio/iris/rev5/info.json b/keyboards/keebio/iris/rev5/info.json
new file mode 100644
index 0000000000..60a73d4252
--- /dev/null
+++ b/keyboards/keebio/iris/rev5/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Iris Rev. 5",
+ "usb": {
+ "pid": "0x5256",
+ "device_version": "5.0.0"
+ }
+}
diff --git a/keyboards/keebio/iris/rev6/config.h b/keyboards/keebio/iris/rev6/config.h
index e26dc5fa50..7bc8c4132b 100644
--- a/keyboards/keebio/iris/rev6/config.h
+++ b/keyboards/keebio/iris/rev6/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x6256
-#define DEVICE_VER 0x0600
-#define MANUFACTURER Keebio
-#define PRODUCT Iris Rev. 6
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/keebio/iris/rev6/info.json b/keyboards/keebio/iris/rev6/info.json
new file mode 100644
index 0000000000..86dc585c81
--- /dev/null
+++ b/keyboards/keebio/iris/rev6/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Iris Rev. 6",
+ "usb": {
+ "pid": "0x6256",
+ "device_version": "6.0.0"
+ }
+}
diff --git a/keyboards/keebio/iris/rev6/rev6.c b/keyboards/keebio/iris/rev6/rev6.c
index 8b612c3555..0900ae5895 100644
--- a/keyboards/keebio/iris/rev6/rev6.c
+++ b/keyboards/keebio/iris/rev6/rev6.c
@@ -39,9 +39,9 @@ led_config_t g_led_config = { {
{ 80, 58 }, { 40, 50 }, { 8, 43 }, { 8, 5 }, { 40, 1 }, { 72, 3 },
// Right Half
{ 224, 5 }, { 208, 5 }, { 192, 2 }, { 176, 0 }, { 160, 2 }, { 144, 3 },
- { 144, 18 }, { 160, 18 }, { 176, 15 }, { 192, 13 }, { 208, 15 }, { 244, 17 },
+ { 144, 18 }, { 160, 18 }, { 176, 15 }, { 192, 13 }, { 208, 15 }, { 224, 17 },
{ 224, 32 }, { 208, 32 }, { 192, 28 }, { 176, 27 }, { 160, 28 }, { 144, 30 },
- { 144, 45 }, { 160, 45 }, { 176, 42 }, { 192, 40 }, { 208, 42 }, { 244, 43 },
+ { 144, 45 }, { 160, 45 }, { 176, 42 }, { 192, 40 }, { 208, 42 }, { 224, 43 },
{ 168, 47 }, { 152, 58 }, { 134, 64 }, { 126, 52 },
{ 144, 58 }, { 184, 50 }, { 216, 43 }, { 216, 5 }, { 184, 1 }, { 152, 3 }
}, {
diff --git a/keyboards/keebio/iris/rev6a/config.h b/keyboards/keebio/iris/rev6a/config.h
index d846891d92..08863797fb 100644
--- a/keyboards/keebio/iris/rev6a/config.h
+++ b/keyboards/keebio/iris/rev6a/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x6356
-#define DEVICE_VER 0x0610
-#define MANUFACTURER Keebio
-#define PRODUCT Iris Rev. 6a
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
@@ -118,7 +111,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# 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_MAXIMUM_BRIGHTNESS 120
# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
# define DRIVER_LED_TOTAL RGBLED_NUM
# define RGB_MATRIX_SPLIT { 34, 34 }
@@ -126,9 +119,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define RGB_MATRIX_KEYPRESSES
//# endif
#endif
-
-#define VIA_QMK_RGBLIGHT_ENABLE
-
-// Enable the workaround for the speed parameter mismatch between RGBLIGHT and
-// RGB Matrix, so that the speed slider in VIA behaves in a more useful way.
-#define VIA_CUSTOM_LIGHTING_ENABLE
diff --git a/keyboards/keebio/iris/rev6a/info.json b/keyboards/keebio/iris/rev6a/info.json
new file mode 100644
index 0000000000..c580018ea7
--- /dev/null
+++ b/keyboards/keebio/iris/rev6a/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Iris Rev. 6a",
+ "usb": {
+ "pid": "0x6356",
+ "device_version": "6.1.0"
+ }
+}
diff --git a/keyboards/keebio/iris/rev6a/rev6a.c b/keyboards/keebio/iris/rev6a/rev6a.c
index cc9c3f6b8f..a78c6a7c08 100644
--- a/keyboards/keebio/iris/rev6a/rev6a.c
+++ b/keyboards/keebio/iris/rev6a/rev6a.c
@@ -39,9 +39,9 @@ led_config_t g_led_config = { {
{ 80, 58 }, { 40, 50 }, { 8, 43 }, { 8, 5 }, { 40, 1 }, { 72, 3 },
// Right Half
{ 224, 5 }, { 208, 5 }, { 192, 2 }, { 176, 0 }, { 160, 2 }, { 144, 3 },
- { 144, 18 }, { 160, 18 }, { 176, 15 }, { 192, 13 }, { 208, 15 }, { 244, 17 },
+ { 144, 18 }, { 160, 18 }, { 176, 15 }, { 192, 13 }, { 208, 15 }, { 224, 17 },
{ 224, 32 }, { 208, 32 }, { 192, 28 }, { 176, 27 }, { 160, 28 }, { 144, 30 },
- { 144, 45 }, { 160, 45 }, { 176, 42 }, { 192, 40 }, { 208, 42 }, { 244, 43 },
+ { 144, 45 }, { 160, 45 }, { 176, 42 }, { 192, 40 }, { 208, 42 }, { 224, 43 },
{ 168, 47 }, { 152, 58 }, { 134, 64 }, { 126, 52 },
{ 144, 58 }, { 184, 50 }, { 216, 43 }, { 216, 5 }, { 184, 1 }, { 152, 3 }
}, {
@@ -63,61 +63,6 @@ led_config_t g_led_config = { {
} };
-
-# if defined(VIA_ENABLE) && defined(VIA_CUSTOM_LIGHTING_ENABLE)
-
-// VIA supports only 4 discrete values for effect speed; map these to some
-// useful speed values for RGB Matrix.
-enum speed_values {
- RGBLIGHT_SPEED_0 = UINT8_MAX / 16, // not 0 to avoid really slow effects
- RGBLIGHT_SPEED_1 = UINT8_MAX / 4,
- RGBLIGHT_SPEED_2 = UINT8_MAX / 2, // matches the default value
- RGBLIGHT_SPEED_3 = UINT8_MAX / 4 * 3, // UINT8_MAX is really fast
-};
-
-static uint8_t speed_from_rgblight(uint8_t rgblight_speed) {
- switch (rgblight_speed) {
- case 0:
- return RGBLIGHT_SPEED_0;
- case 1:
- return RGBLIGHT_SPEED_1;
- case 2:
- default:
- return RGBLIGHT_SPEED_2;
- case 3:
- return RGBLIGHT_SPEED_3;
- }
-}
-
-static uint8_t speed_to_rgblight(uint8_t rgb_matrix_speed) {
- if (rgb_matrix_speed < ((RGBLIGHT_SPEED_0 + RGBLIGHT_SPEED_1) / 2)) {
- return 0;
- } else if (rgb_matrix_speed < ((RGBLIGHT_SPEED_1 + RGBLIGHT_SPEED_2) / 2)) {
- return 1;
- } else if (rgb_matrix_speed < ((RGBLIGHT_SPEED_2 + RGBLIGHT_SPEED_3) / 2)) {
- return 2;
- } else {
- return 3;
- }
-}
-
-void raw_hid_receive_kb(uint8_t *data, uint8_t length) {
- switch (data[0]) {
- case id_lighting_get_value:
- if (data[1] == id_qmk_rgblight_effect_speed) {
- data[2] = speed_to_rgblight(rgb_matrix_get_speed());
- }
- break;
- case id_lighting_set_value:
- if (data[1] == id_qmk_rgblight_effect_speed) {
- rgb_matrix_set_speed_noeeprom(speed_from_rgblight(data[2]));
- }
- break;
- }
-}
-
-# endif // defined(VIA_ENABLE) && defined(VIA_CUSTOM_LIGHTING_ENABLE)
-
#endif
#ifdef ENCODER_ENABLE
diff --git a/keyboards/keebio/iris/rev6b/config.h b/keyboards/keebio/iris/rev6b/config.h
new file mode 100644
index 0000000000..08863797fb
--- /dev/null
+++ b/keyboards/keebio/iris/rev6b/config.h
@@ -0,0 +1,121 @@
+/*
+Copyright 2021 Danny Nguyen <danny@keeb.io>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_ROW_PINS { B1, F0, F5, B4, D7 }
+#define MATRIX_COL_PINS { F1, F4, B5, C7, D4, D6 }
+#define MATRIX_ROW_PINS_RIGHT { B1, F0, F5, B4, B5 }
+#define MATRIX_COL_PINS_RIGHT { D4, D6, D7, C7, F1, F4 }
+#define SPLIT_HAND_PIN D5
+
+#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
+
+/* 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 D0
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN E6
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 68
+# define RGBLED_SPLIT { 34, 34 }
+# 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 */
+/*== enabled 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
+# define RGBLIGHT_DEFAULT_VAL 120
+# 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 120
+# 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
+//# endif
+#endif
diff --git a/keyboards/keebio/iris/rev6b/info.json b/keyboards/keebio/iris/rev6b/info.json
new file mode 100644
index 0000000000..eafae19202
--- /dev/null
+++ b/keyboards/keebio/iris/rev6b/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Iris Rev. 6b",
+ "usb": {
+ "pid": "0x6456",
+ "device_version": "6.2.0"
+ }
+}
diff --git a/keyboards/keebio/iris/rev6b/rev6b.c b/keyboards/keebio/iris/rev6b/rev6b.c
new file mode 100644
index 0000000000..f4d9a6830b
--- /dev/null
+++ b/keyboards/keebio/iris/rev6b/rev6b.c
@@ -0,0 +1,85 @@
+/*
+Copyright 2021 Danny Nguyen <danny@keeb.io>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "rev6b.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ // Left Half
+ { 0, 1, 2, 3, 4, 5 },
+ { 11, 10, 9, 8, 7, 6 },
+ { 12, 13, 14, 15, 16, 17 },
+ { 23, 22, 21, 20, 19, 18 },
+ { NO_LED, NO_LED, 24, 25, 26, 27 },
+ // Right Half
+ { 34, 35, 36, 37, 38, 39 },
+ { 45, 44, 43, 42, 41, 40 },
+ { 46, 47, 48, 49, 50, 51 },
+ { 57, 56, 55, 54, 53, 52 },
+ { NO_LED, NO_LED, 58, 59, 60, 61 }
+}, {
+ // LED Index to Physical Position
+ // Left Half
+ { 0, 5 }, { 16, 5 }, { 32, 2 }, { 48, 0 }, { 64, 2 }, { 80, 3 },
+ { 80, 17 }, { 64, 15 }, { 48, 13 }, { 32, 15 }, { 16, 18 }, { 0, 18 },
+ { 0, 32 }, { 16, 32 }, { 32, 28 }, { 48, 27 }, { 64, 28 }, { 80, 30 },
+ { 80, 43 }, { 64, 42 }, { 48, 40 }, { 32, 42 }, { 16, 45 }, { 0, 45 },
+ { 56, 47 }, { 72, 58 }, { 90, 64 }, { 98, 52 },
+ { 80, 58 }, { 40, 50 }, { 8, 43 }, { 8, 5 }, { 40, 1 }, { 72, 3 },
+ // Right Half
+ { 224, 5 }, { 208, 5 }, { 192, 2 }, { 176, 0 }, { 160, 2 }, { 144, 3 },
+ { 144, 18 }, { 160, 18 }, { 176, 15 }, { 192, 13 }, { 208, 15 }, { 224, 17 },
+ { 224, 32 }, { 208, 32 }, { 192, 28 }, { 176, 27 }, { 160, 28 }, { 144, 30 },
+ { 144, 45 }, { 160, 45 }, { 176, 42 }, { 192, 40 }, { 208, 42 }, { 224, 43 },
+ { 168, 47 }, { 152, 58 }, { 134, 64 }, { 126, 52 },
+ { 144, 58 }, { 184, 50 }, { 216, 43 }, { 216, 5 }, { 184, 1 }, { 152, 3 }
+}, {
+ // LED Index to Flag
+ // Left Half
+ 4, 4, 4, 4, 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,
+ // Right Half
+ 4, 4, 4, 4, 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
+
+} };
+#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);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return false;
+}
+#endif
diff --git a/keyboards/keebio/iris/rev6b/rev6b.h b/keyboards/keebio/iris/rev6b/rev6b.h
new file mode 100644
index 0000000000..d13e24410e
--- /dev/null
+++ b/keyboards/keebio/iris/rev6b/rev6b.h
@@ -0,0 +1,42 @@
+/*
+Copyright 2021 Danny Nguyen <danny@keeb.io>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "iris.h"
+#include "quantum.h"
+
+
+#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, LE6, RE6, RD6, RD5, RD4, RD3, RD2, RD1, \
+ LE3, LE4, LE5, RE5, RE4, RE3 \
+ ) \
+ { \
+ { LA1, LA2, LA3, LA4, LA5, LA6 }, \
+ { LB1, LB2, LB3, LB4, LB5, LB6 }, \
+ { LC1, LC2, LC3, LC4, LC5, LC6 }, \
+ { LD1, LD2, LD3, LD4, LD5, LD6 }, \
+ { KC_NO, KC_NO, 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 }, \
+ { KC_NO, KC_NO, RE3, RE4, RE5, RE6 } \
+ }
diff --git a/keyboards/keebio/iris/rev6b/rules.mk b/keyboards/keebio/iris/rev6b/rules.mk
new file mode 100644
index 0000000000..87f19b5fc1
--- /dev/null
+++ b/keyboards/keebio/iris/rev6b/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 = 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
+ENCODER_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+LTO_ENABLE = yes
diff --git a/keyboards/keebio/iris/rev7/config.h b/keyboards/keebio/iris/rev7/config.h
new file mode 100644
index 0000000000..005f78e8a9
--- /dev/null
+++ b/keyboards/keebio/iris/rev7/config.h
@@ -0,0 +1,122 @@
+/*
+Copyright 2022 Danny Nguyen <danny@keeb.io>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 6
+
+// wiring of each half
+#define MATRIX_ROW_PINS { B1, F0, F5, B4, D7 }
+#define MATRIX_COL_PINS { F1, F4, B5, C7, D4, D6 }
+#define MATRIX_ROW_PINS_RIGHT { B1, F0, F5, B4, B5 }
+#define MATRIX_COL_PINS_RIGHT { D4, D6, D7, C7, F1, F4 }
+#define SPLIT_HAND_PIN D5
+
+#define ENCODERS_PAD_A { B3, F6 }
+#define ENCODERS_PAD_B { B2, F7 }
+#define ENCODERS_PAD_A_RIGHT { B3, F6 }
+#define ENCODERS_PAD_B_RIGHT { B2, F7 }
+
+/* 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 D0
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN E6
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 68
+# define RGBLED_SPLIT { 34, 34 }
+# 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 */
+/*== enabled 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
+# define RGBLIGHT_DEFAULT_VAL 120
+# 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 120
+# 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
+//# endif
+#endif
+
diff --git a/keyboards/keebio/iris/rev7/info.json b/keyboards/keebio/iris/rev7/info.json
new file mode 100644
index 0000000000..b0ba3ca359
--- /dev/null
+++ b/keyboards/keebio/iris/rev7/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Iris Rev. 7",
+ "usb": {
+ "pid": "0x7256",
+ "device_version": "7.0.0"
+ }
+}
diff --git a/keyboards/keebio/iris/rev7/rev7.c b/keyboards/keebio/iris/rev7/rev7.c
new file mode 100644
index 0000000000..25f3760025
--- /dev/null
+++ b/keyboards/keebio/iris/rev7/rev7.c
@@ -0,0 +1,99 @@
+/*
+Copyright 2021 Danny Nguyen <danny@keeb.io>
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include "rev7.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ // Left Half
+ { 0, 1, 2, 3, 4, 5 },
+ { 11, 10, 9, 8, 7, 6 },
+ { 12, 13, 14, 15, 16, 17 },
+ { 23, 22, 21, 20, 19, 18 },
+ { NO_LED, NO_LED, 24, 25, 26, 27 },
+ // Right Half
+ { 34, 35, 36, 37, 38, 39 },
+ { 45, 44, 43, 42, 41, 40 },
+ { 46, 47, 48, 49, 50, 51 },
+ { 57, 56, 55, 54, 53, 52 },
+ { NO_LED, NO_LED, 58, 59, 60, 61 }
+}, {
+ // LED Index to Physical Position
+ // Left Half
+ { 0, 5 }, { 16, 5 }, { 32, 2 }, { 48, 0 }, { 64, 2 }, { 80, 3 },
+ { 80, 17 }, { 64, 15 }, { 48, 13 }, { 32, 15 }, { 16, 18 }, { 0, 18 },
+ { 0, 32 }, { 16, 32 }, { 32, 28 }, { 48, 27 }, { 64, 28 }, { 80, 30 },
+ { 80, 43 }, { 64, 42 }, { 48, 40 }, { 32, 42 }, { 16, 45 }, { 0, 45 },
+ { 56, 47 }, { 72, 58 }, { 90, 64 }, { 98, 52 },
+ { 80, 58 }, { 40, 50 }, { 8, 43 }, { 8, 5 }, { 40, 1 }, { 72, 3 },
+ // Right Half
+ { 224, 5 }, { 208, 5 }, { 192, 2 }, { 176, 0 }, { 160, 2 }, { 144, 3 },
+ { 144, 18 }, { 160, 18 }, { 176, 15 }, { 192, 13 }, { 208, 15 }, { 224, 17 },
+ { 224, 32 }, { 208, 32 }, { 192, 28 }, { 176, 27 }, { 160, 28 }, { 144, 30 },
+ { 144, 45 }, { 160, 45 }, { 176, 42 }, { 192, 40 }, { 208, 42 }, { 224, 43 },
+ { 168, 47 }, { 152, 58 }, { 134, 64 }, { 126, 52 },
+ { 144, 58 }, { 184, 50 }, { 216, 43 }, { 216, 5 }, { 184, 1 }, { 152, 3 }
+}, {
+ // LED Index to Flag
+ // Left Half
+ 4, 4, 4, 4, 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,
+ // Right Half
+ 4, 4, 4, 4, 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
+
+} };
+
+
+#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);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ } else if (index == 2) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ } else if (index == 3) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ }
+ return false;
+}
+#endif
diff --git a/keyboards/keebio/iris/rev7/rev7.h b/keyboards/keebio/iris/rev7/rev7.h
new file mode 100644
index 0000000000..d13e24410e
--- /dev/null
+++ b/keyboards/keebio/iris/rev7/rev7.h
@@ -0,0 +1,42 @@
+/*
+Copyright 2021 Danny Nguyen <danny@keeb.io>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "iris.h"
+#include "quantum.h"
+
+
+#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, LE6, RE6, RD6, RD5, RD4, RD3, RD2, RD1, \
+ LE3, LE4, LE5, RE5, RE4, RE3 \
+ ) \
+ { \
+ { LA1, LA2, LA3, LA4, LA5, LA6 }, \
+ { LB1, LB2, LB3, LB4, LB5, LB6 }, \
+ { LC1, LC2, LC3, LC4, LC5, LC6 }, \
+ { LD1, LD2, LD3, LD4, LD5, LD6 }, \
+ { KC_NO, KC_NO, 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 }, \
+ { KC_NO, KC_NO, RE3, RE4, RE5, RE6 } \
+ }
diff --git a/keyboards/keebio/iris/rev7/rules.mk b/keyboards/keebio/iris/rev7/rules.mk
new file mode 100644
index 0000000000..87f19b5fc1
--- /dev/null
+++ b/keyboards/keebio/iris/rev7/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 = 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
+ENCODER_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+LTO_ENABLE = yes
diff --git a/keyboards/keebio/kbo5000/info.json b/keyboards/keebio/kbo5000/info.json
deleted file mode 100644
index f4d37e012d..0000000000
--- a/keyboards/keebio/kbo5000/info.json
+++ /dev/null
@@ -1,337 +0,0 @@
-{
- "keyboard_name": "KBO-5000",
- "url": "https://keeb.io",
- "maintainer": "nooges",
- "layouts": {
- "LAYOUT_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":10, "y":0},
- {"label":"F8", "x":11, "y":0},
- {"label":"F9", "x":12.5, "y":0},
- {"label":"F10", "x":13.5, "y":0},
- {"label":"F11", "x":14.5, "y":0},
- {"label":"F12", "x":15.5, "y":0},
- {"label":"Prt Sc", "x":17.5, "y":0},
- {"label":"Scr Lk", "x":18.5, "y":0},
- {"label":"Pause", "x":19.5, "y":0},
-
- {"label":"F13", "x":0, "y":1.25},
- {"label":"~", "x":1.5, "y":1.25},
- {"label":"!", "x":2.5, "y":1.25},
- {"label":"@", "x":3.5, "y":1.25},
- {"label":"#", "x":4.5, "y":1.25},
- {"label":"$", "x":5.5, "y":1.25},
- {"label":"%", "x":6.5, "y":1.25},
- {"label":"^", "x":7.5, "y":1.25},
-
- {"label":"&", "x":10, "y":1.25},
- {"label":"*", "x":11, "y":1.25},
- {"label":"(", "x":12, "y":1.25},
- {"label":")", "x":13, "y":1.25},
- {"label":"_", "x":14, "y":1.25},
- {"label":"+", "x":15, "y":1.25},
- {"label":"Del", "x":16, "y":1.25},
- {"label":"Bksp", "x":17, "y":1.25},
- {"label":"Ins", "x":18.5, "y":1.25},
- {"label":"Pg Up", "x":19.5, "y":1.25},
-
- {"label":"F14", "x":0, "y":2.25},
- {"label":"Tab", "x":1.5, "y":2.25, "w":1.5},
- {"label":"Q", "x":3, "y":2.25},
- {"label":"W", "x":4, "y":2.25},
- {"label":"E", "x":5, "y":2.25},
- {"label":"R", "x":6, "y":2.25},
- {"label":"T", "x":7, "y":2.25},
-
- {"label":"Y", "x":9.5, "y":2.25},
- {"label":"U", "x":10.5, "y":2.25},
- {"label":"I", "x":11.5, "y":2.25},
- {"label":"O", "x":12.5, "y":2.25},
- {"label":"P", "x":13.5, "y":2.25},
- {"label":"{", "x":14.5, "y":2.25},
- {"label":"}", "x":15.5, "y":2.25},
- {"label":"|", "x":16.5, "y":2.25, "w":1.5},
- {"label":"Del", "x":18.5, "y":2.25},
- {"label":"Pg Dn", "x":19.5, "y":2.25},
-
- {"label":"F15", "x":0, "y":3.25},
- {"label":"Caps Lock", "x":1.5, "y":3.25, "w":1.75},
- {"label":"A", "x":3.25, "y":3.25},
- {"label":"S", "x":4.25, "y":3.25},
- {"label":"D", "x":5.25, "y":3.25},
- {"label":"F", "x":6.25, "y":3.25},
- {"label":"G", "x":7.25, "y":3.25},
-
- {"label":"H", "x":9.75, "y":3.25},
- {"label":"J", "x":10.75, "y":3.25},
- {"label":"K", "x":11.75, "y":3.25},
- {"label":"L", "x":12.75, "y":3.25},
- {"label":":", "x":13.75, "y":3.25},
- {"label":"\"", "x":14.75, "y":3.25},
- {"label":"Enter", "x":15.75, "y":3.25, "w":2.25},
- {"label":"Home", "x":18.5, "y":3.25},
- {"label":"End", "x":19.5, "y":3.25},
-
- {"label":"F16", "x":0, "y":4.25},
- {"label":"Shift", "x":1.5, "y":4.25, "w":2.25},
- {"label":"Z", "x":3.75, "y":4.25},
- {"label":"X", "x":4.75, "y":4.25},
- {"label":"C", "x":5.75, "y":4.25},
- {"label":"V", "x":6.75, "y":4.25},
- {"label":"B", "x":7.75, "y":4.25},
- {"label":"N", "x":10.25, "y":4.25},
- {"label":"M", "x":11.25, "y":4.25},
- {"label":"<", "x":12.25, "y":4.25},
- {"label":">", "x":13.25, "y":4.25},
- {"label":"?", "x":14.25, "y":4.25},
- {"label":"Shift", "x":15.25, "y":4.25, "w":1.75},
- {"label":"Up", "x":18.5, "y":4.25},
-
- {"label":"F17", "x":0, "y":5.25},
- {"label":"Ctrl", "x":1.5, "y":5.25, "w":1.25},
- {"label":"Win", "x":2.75, "y":5.25},
- {"label":"Alt", "x":3.75, "y":5.25, "w":1.25},
- {"label":"Fn", "x":5, "y":5.25, "w":1.25},
- {"label":"Space", "x":6.25, "y":5.25},
- {"label":"Fn", "x":7.25, "y":5.25, "w":1.25},
- {"label":"Fn", "x":10, "y":5.25, "w":1.25},
- {"label":"Space", "x":11.25, "y":5.25, "w":2.25},
- {"label":"Alt", "x":13.5, "y":5.25, "w":1.25},
- {"label":"Win", "x":14.75, "y":5.25},
- {"label":"Ctrl", "x":15.75, "y":5.25, "w":1.25},
- {"label":"Left", "x":17.5, "y":5.25},
- {"label":"Down", "x":18.5, "y":5.25},
- {"label":"Right", "x":19.5, "y":5.25}
- ]
- },
- "LAYOUT_iso": {
- "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":10, "y":0},
- {"label":"F8", "x":11, "y":0},
- {"label":"F9", "x":12.5, "y":0},
- {"label":"F10", "x":13.5, "y":0},
- {"label":"F11", "x":14.5, "y":0},
- {"label":"F12", "x":15.5, "y":0},
- {"label":"Prt Sc", "x":17.5, "y":0},
- {"label":"Scr Lk", "x":18.5, "y":0},
- {"label":"Pause", "x":19.5, "y":0},
-
- {"label":"F13", "x":0, "y":1.25},
- {"label":"~", "x":1.5, "y":1.25},
- {"label":"!", "x":2.5, "y":1.25},
- {"label":"@", "x":3.5, "y":1.25},
- {"label":"#", "x":4.5, "y":1.25},
- {"label":"$", "x":5.5, "y":1.25},
- {"label":"%", "x":6.5, "y":1.25},
- {"label":"^", "x":7.5, "y":1.25},
-
- {"label":"&", "x":10, "y":1.25},
- {"label":"*", "x":11, "y":1.25},
- {"label":"(", "x":12, "y":1.25},
- {"label":")", "x":13, "y":1.25},
- {"label":"_", "x":14, "y":1.25},
- {"label":"+", "x":15, "y":1.25},
- {"label":"Del", "x":16, "y":1.25},
- {"label":"Bksp", "x":17, "y":1.25},
- {"label":"Ins", "x":18.5, "y":1.25},
- {"label":"Pg Up", "x":19.5, "y":1.25},
-
- {"label":"F14", "x":0, "y":2.25},
- {"label":"Tab", "x":1.5, "y":2.25, "w":1.5},
- {"label":"Q", "x":3, "y":2.25},
- {"label":"W", "x":4, "y":2.25},
- {"label":"E", "x":5, "y":2.25},
- {"label":"R", "x":6, "y":2.25},
- {"label":"T", "x":7, "y":2.25},
-
- {"label":"Y", "x":9.5, "y":2.25},
- {"label":"U", "x":10.5, "y":2.25},
- {"label":"I", "x":11.5, "y":2.25},
- {"label":"O", "x":12.5, "y":2.25},
- {"label":"P", "x":13.5, "y":2.25},
- {"label":"{", "x":14.5, "y":2.25},
- {"label":"}", "x":15.5, "y":2.25},
- {"label":"Del", "x":18.5, "y":2.25},
- {"label":"Pg Dn", "x":19.5, "y":2.25},
-
- {"label":"F15", "x":0, "y":3.25},
- {"label":"Caps Lock", "x":1.5, "y":3.25, "w":1.75},
- {"label":"A", "x":3.25, "y":3.25},
- {"label":"S", "x":4.25, "y":3.25},
- {"label":"D", "x":5.25, "y":3.25},
- {"label":"F", "x":6.25, "y":3.25},
- {"label":"G", "x":7.25, "y":3.25},
-
- {"label":"H", "x":9.75, "y":3.25},
- {"label":"J", "x":10.75, "y":3.25},
- {"label":"K", "x":11.75, "y":3.25},
- {"label":"L", "x":12.75, "y":3.25},
- {"label":":", "x":13.75, "y":3.25},
- {"label":"\"", "x":14.75, "y":3.25},
- {"label":"#", "x":15.75, "y":3.25},
- {"label":"Enter", "x":16.75, "y":2.25, "w":1.25, "h":2},
- {"label":"Home", "x":18.5, "y":3.25},
- {"label":"End", "x":19.5, "y":3.25},
-
- {"label":"F16", "x":0, "y":4.25},
- {"label":"Shift", "x":1.5, "y":4.25, "w":1.25},
- {"label":"\\", "x":2.75, "y":4.25},
- {"label":"Z", "x":3.75, "y":4.25},
- {"label":"X", "x":4.75, "y":4.25},
- {"label":"C", "x":5.75, "y":4.25},
- {"label":"V", "x":6.75, "y":4.25},
- {"label":"B", "x":7.75, "y":4.25},
- {"label":"N", "x":10.25, "y":4.25},
- {"label":"M", "x":11.25, "y":4.25},
- {"label":"<", "x":12.25, "y":4.25},
- {"label":">", "x":13.25, "y":4.25},
- {"label":"?", "x":14.25, "y":4.25},
- {"label":"Shift", "x":15.25, "y":4.25, "w":1.75},
- {"label":"Up", "x":18.5, "y":4.25},
-
- {"label":"F17", "x":0, "y":5.25},
- {"label":"Ctrl", "x":1.5, "y":5.25, "w":1.25},
- {"label":"Win", "x":2.75, "y":5.25},
- {"label":"Alt", "x":3.75, "y":5.25, "w":1.25},
- {"label":"Fn", "x":5, "y":5.25, "w":1.25},
- {"label":"Space", "x":6.25, "y":5.25},
- {"label":"Fn", "x":7.25, "y":5.25, "w":1.25},
- {"label":"Fn", "x":10, "y":5.25, "w":1.25},
- {"label":"Space", "x":11.25, "y":5.25, "w":2.25},
- {"label":"Alt", "x":13.5, "y":5.25, "w":1.25},
- {"label":"Win", "x":14.75, "y":5.25},
- {"label":"Ctrl", "x":15.75, "y":5.25, "w":1.25},
- {"label":"Left", "x":17.5, "y":5.25},
- {"label":"Down", "x":18.5, "y":5.25},
- {"label":"Right", "x":19.5, "y":5.25}
- ]
- },
- "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":10, "y":0},
- {"label":"F8", "x":11, "y":0},
- {"label":"F9", "x":12.5, "y":0},
- {"label":"F10", "x":13.5, "y":0},
- {"label":"F11", "x":14.5, "y":0},
- {"label":"F12", "x":15.5, "y":0},
- {"label":"Prt Sc", "x":17.5, "y":0},
- {"label":"Scr Lk", "x":18.5, "y":0},
- {"label":"Pause", "x":19.5, "y":0},
-
- {"label":"F13", "x":0, "y":1.25},
- {"label":"~", "x":1.5, "y":1.25},
- {"label":"!", "x":2.5, "y":1.25},
- {"label":"@", "x":3.5, "y":1.25},
- {"label":"#", "x":4.5, "y":1.25},
- {"label":"$", "x":5.5, "y":1.25},
- {"label":"%", "x":6.5, "y":1.25},
- {"label":"^", "x":7.5, "y":1.25},
-
- {"label":"&", "x":10, "y":1.25},
- {"label":"*", "x":11, "y":1.25},
- {"label":"(", "x":12, "y":1.25},
- {"label":")", "x":13, "y":1.25},
- {"label":"_", "x":14, "y":1.25},
- {"label":"+", "x":15, "y":1.25},
- {"label":"Del", "x":16, "y":1.25},
- {"label":"Bksp", "x":17, "y":1.25},
- {"label":"Ins", "x":18.5, "y":1.25},
- {"label":"Pg Up", "x":19.5, "y":1.25},
-
- {"label":"F14", "x":0, "y":2.25},
- {"label":"Tab", "x":1.5, "y":2.25, "w":1.5},
- {"label":"Q", "x":3, "y":2.25},
- {"label":"W", "x":4, "y":2.25},
- {"label":"E", "x":5, "y":2.25},
- {"label":"R", "x":6, "y":2.25},
- {"label":"T", "x":7, "y":2.25},
-
- {"label":"Y", "x":9.5, "y":2.25},
- {"label":"U", "x":10.5, "y":2.25},
- {"label":"I", "x":11.5, "y":2.25},
- {"label":"O", "x":12.5, "y":2.25},
- {"label":"P", "x":13.5, "y":2.25},
- {"label":"{", "x":14.5, "y":2.25},
- {"label":"}", "x":15.5, "y":2.25},
- {"label":"|", "x":16.5, "y":2.25, "w":1.5},
- {"label":"Del", "x":18.5, "y":2.25},
- {"label":"Pg Dn", "x":19.5, "y":2.25},
-
- {"label":"F15", "x":0, "y":3.25},
- {"label":"Caps Lock", "x":1.5, "y":3.25, "w":1.75},
- {"label":"A", "x":3.25, "y":3.25},
- {"label":"S", "x":4.25, "y":3.25},
- {"label":"D", "x":5.25, "y":3.25},
- {"label":"F", "x":6.25, "y":3.25},
- {"label":"G", "x":7.25, "y":3.25},
-
- {"label":"H", "x":9.75, "y":3.25},
- {"label":"J", "x":10.75, "y":3.25},
- {"label":"K", "x":11.75, "y":3.25},
- {"label":"L", "x":12.75, "y":3.25},
- {"label":":", "x":13.75, "y":3.25},
- {"label":"\"", "x":14.75, "y":3.25},
- {"label":"#", "x":15.75, "y":3.25},
- {"label":"Enter", "x":16.75, "y":3.25, "w":1.25},
- {"label":"Home", "x":18.5, "y":3.25},
- {"label":"End", "x":19.5, "y":3.25},
-
- {"label":"F16", "x":0, "y":4.25},
- {"label":"Shift", "x":1.5, "y":4.25, "w":1.25},
- {"label":"\\", "x":2.75, "y":4.25},
- {"label":"Z", "x":3.75, "y":4.25},
- {"label":"X", "x":4.75, "y":4.25},
- {"label":"C", "x":5.75, "y":4.25},
- {"label":"V", "x":6.75, "y":4.25},
- {"label":"B", "x":7.75, "y":4.25},
- {"label":"N", "x":10.25, "y":4.25},
- {"label":"M", "x":11.25, "y":4.25},
- {"label":"<", "x":12.25, "y":4.25},
- {"label":">", "x":13.25, "y":4.25},
- {"label":"?", "x":14.25, "y":4.25},
- {"label":"Shift", "x":15.25, "y":4.25, "w":1.75},
- {"label":"Up", "x":18.5, "y":4.25},
-
- {"label":"F17", "x":0, "y":5.25},
- {"label":"Ctrl", "x":1.5, "y":5.25, "w":1.25},
- {"label":"Win", "x":2.75, "y":5.25},
- {"label":"Alt", "x":3.75, "y":5.25, "w":1.25},
- {"label":"Fn", "x":5, "y":5.25, "w":1.25},
- {"label":"Space", "x":6.25, "y":5.25},
- {"label":"Fn", "x":7.25, "y":5.25, "w":1.25},
- {"label":"Fn", "x":10, "y":5.25, "w":1.25},
- {"label":"Space", "x":11.25, "y":5.25, "w":2.25},
- {"label":"Alt", "x":13.5, "y":5.25, "w":1.25},
- {"label":"Win", "x":14.75, "y":5.25},
- {"label":"Ctrl", "x":15.75, "y":5.25, "w":1.25},
- {"label":"Left", "x":17.5, "y":5.25},
- {"label":"Down", "x":18.5, "y":5.25},
- {"label":"Right", "x":19.5, "y":5.25}
- ]
- }
- }
-}
diff --git a/keyboards/keebio/kbo5000/rev1/config.h b/keyboards/keebio/kbo5000/rev1/config.h
index 5d065fe1c2..3d3253d2c3 100644
--- a/keyboards/keebio/kbo5000/rev1/config.h
+++ b/keyboards/keebio/kbo5000/rev1/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x126A
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT KBO-5000 Rev. 1
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
diff --git a/keyboards/keebio/kbo5000/rev1/info.json b/keyboards/keebio/kbo5000/rev1/info.json
new file mode 100644
index 0000000000..b07e73f17e
--- /dev/null
+++ b/keyboards/keebio/kbo5000/rev1/info.json
@@ -0,0 +1,343 @@
+{
+ "keyboard_name": "KBO-5000 Rev. 1",
+ "manufacturer": "Keebio",
+ "url": "https://keeb.io",
+ "maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x126A",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT_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":10, "y":0},
+ {"label":"F8", "x":11, "y":0},
+ {"label":"F9", "x":12.5, "y":0},
+ {"label":"F10", "x":13.5, "y":0},
+ {"label":"F11", "x":14.5, "y":0},
+ {"label":"F12", "x":15.5, "y":0},
+ {"label":"Prt Sc", "x":17.5, "y":0},
+ {"label":"Scr Lk", "x":18.5, "y":0},
+ {"label":"Pause", "x":19.5, "y":0},
+
+ {"label":"F13", "x":0, "y":1.25},
+ {"label":"~", "x":1.5, "y":1.25},
+ {"label":"!", "x":2.5, "y":1.25},
+ {"label":"@", "x":3.5, "y":1.25},
+ {"label":"#", "x":4.5, "y":1.25},
+ {"label":"$", "x":5.5, "y":1.25},
+ {"label":"%", "x":6.5, "y":1.25},
+ {"label":"^", "x":7.5, "y":1.25},
+
+ {"label":"&", "x":10, "y":1.25},
+ {"label":"*", "x":11, "y":1.25},
+ {"label":"(", "x":12, "y":1.25},
+ {"label":")", "x":13, "y":1.25},
+ {"label":"_", "x":14, "y":1.25},
+ {"label":"+", "x":15, "y":1.25},
+ {"label":"Del", "x":16, "y":1.25},
+ {"label":"Bksp", "x":17, "y":1.25},
+ {"label":"Ins", "x":18.5, "y":1.25},
+ {"label":"Pg Up", "x":19.5, "y":1.25},
+
+ {"label":"F14", "x":0, "y":2.25},
+ {"label":"Tab", "x":1.5, "y":2.25, "w":1.5},
+ {"label":"Q", "x":3, "y":2.25},
+ {"label":"W", "x":4, "y":2.25},
+ {"label":"E", "x":5, "y":2.25},
+ {"label":"R", "x":6, "y":2.25},
+ {"label":"T", "x":7, "y":2.25},
+
+ {"label":"Y", "x":9.5, "y":2.25},
+ {"label":"U", "x":10.5, "y":2.25},
+ {"label":"I", "x":11.5, "y":2.25},
+ {"label":"O", "x":12.5, "y":2.25},
+ {"label":"P", "x":13.5, "y":2.25},
+ {"label":"{", "x":14.5, "y":2.25},
+ {"label":"}", "x":15.5, "y":2.25},
+ {"label":"|", "x":16.5, "y":2.25, "w":1.5},
+ {"label":"Del", "x":18.5, "y":2.25},
+ {"label":"Pg Dn", "x":19.5, "y":2.25},
+
+ {"label":"F15", "x":0, "y":3.25},
+ {"label":"Caps Lock", "x":1.5, "y":3.25, "w":1.75},
+ {"label":"A", "x":3.25, "y":3.25},
+ {"label":"S", "x":4.25, "y":3.25},
+ {"label":"D", "x":5.25, "y":3.25},
+ {"label":"F", "x":6.25, "y":3.25},
+ {"label":"G", "x":7.25, "y":3.25},
+
+ {"label":"H", "x":9.75, "y":3.25},
+ {"label":"J", "x":10.75, "y":3.25},
+ {"label":"K", "x":11.75, "y":3.25},
+ {"label":"L", "x":12.75, "y":3.25},
+ {"label":":", "x":13.75, "y":3.25},
+ {"label":"\"", "x":14.75, "y":3.25},
+ {"label":"Enter", "x":15.75, "y":3.25, "w":2.25},
+ {"label":"Home", "x":18.5, "y":3.25},
+ {"label":"End", "x":19.5, "y":3.25},
+
+ {"label":"F16", "x":0, "y":4.25},
+ {"label":"Shift", "x":1.5, "y":4.25, "w":2.25},
+ {"label":"Z", "x":3.75, "y":4.25},
+ {"label":"X", "x":4.75, "y":4.25},
+ {"label":"C", "x":5.75, "y":4.25},
+ {"label":"V", "x":6.75, "y":4.25},
+ {"label":"B", "x":7.75, "y":4.25},
+ {"label":"N", "x":10.25, "y":4.25},
+ {"label":"M", "x":11.25, "y":4.25},
+ {"label":"<", "x":12.25, "y":4.25},
+ {"label":">", "x":13.25, "y":4.25},
+ {"label":"?", "x":14.25, "y":4.25},
+ {"label":"Shift", "x":15.25, "y":4.25, "w":1.75},
+ {"label":"Up", "x":18.5, "y":4.25},
+
+ {"label":"F17", "x":0, "y":5.25},
+ {"label":"Ctrl", "x":1.5, "y":5.25, "w":1.25},
+ {"label":"Win", "x":2.75, "y":5.25},
+ {"label":"Alt", "x":3.75, "y":5.25, "w":1.25},
+ {"label":"Fn", "x":5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":6.25, "y":5.25},
+ {"label":"Fn", "x":7.25, "y":5.25, "w":1.25},
+ {"label":"Fn", "x":10, "y":5.25, "w":1.25},
+ {"label":"Space", "x":11.25, "y":5.25, "w":2.25},
+ {"label":"Alt", "x":13.5, "y":5.25, "w":1.25},
+ {"label":"Win", "x":14.75, "y":5.25},
+ {"label":"Ctrl", "x":15.75, "y":5.25, "w":1.25},
+ {"label":"Left", "x":17.5, "y":5.25},
+ {"label":"Down", "x":18.5, "y":5.25},
+ {"label":"Right", "x":19.5, "y":5.25}
+ ]
+ },
+ "LAYOUT_iso": {
+ "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":10, "y":0},
+ {"label":"F8", "x":11, "y":0},
+ {"label":"F9", "x":12.5, "y":0},
+ {"label":"F10", "x":13.5, "y":0},
+ {"label":"F11", "x":14.5, "y":0},
+ {"label":"F12", "x":15.5, "y":0},
+ {"label":"Prt Sc", "x":17.5, "y":0},
+ {"label":"Scr Lk", "x":18.5, "y":0},
+ {"label":"Pause", "x":19.5, "y":0},
+
+ {"label":"F13", "x":0, "y":1.25},
+ {"label":"~", "x":1.5, "y":1.25},
+ {"label":"!", "x":2.5, "y":1.25},
+ {"label":"@", "x":3.5, "y":1.25},
+ {"label":"#", "x":4.5, "y":1.25},
+ {"label":"$", "x":5.5, "y":1.25},
+ {"label":"%", "x":6.5, "y":1.25},
+ {"label":"^", "x":7.5, "y":1.25},
+
+ {"label":"&", "x":10, "y":1.25},
+ {"label":"*", "x":11, "y":1.25},
+ {"label":"(", "x":12, "y":1.25},
+ {"label":")", "x":13, "y":1.25},
+ {"label":"_", "x":14, "y":1.25},
+ {"label":"+", "x":15, "y":1.25},
+ {"label":"Del", "x":16, "y":1.25},
+ {"label":"Bksp", "x":17, "y":1.25},
+ {"label":"Ins", "x":18.5, "y":1.25},
+ {"label":"Pg Up", "x":19.5, "y":1.25},
+
+ {"label":"F14", "x":0, "y":2.25},
+ {"label":"Tab", "x":1.5, "y":2.25, "w":1.5},
+ {"label":"Q", "x":3, "y":2.25},
+ {"label":"W", "x":4, "y":2.25},
+ {"label":"E", "x":5, "y":2.25},
+ {"label":"R", "x":6, "y":2.25},
+ {"label":"T", "x":7, "y":2.25},
+
+ {"label":"Y", "x":9.5, "y":2.25},
+ {"label":"U", "x":10.5, "y":2.25},
+ {"label":"I", "x":11.5, "y":2.25},
+ {"label":"O", "x":12.5, "y":2.25},
+ {"label":"P", "x":13.5, "y":2.25},
+ {"label":"{", "x":14.5, "y":2.25},
+ {"label":"}", "x":15.5, "y":2.25},
+ {"label":"Del", "x":18.5, "y":2.25},
+ {"label":"Pg Dn", "x":19.5, "y":2.25},
+
+ {"label":"F15", "x":0, "y":3.25},
+ {"label":"Caps Lock", "x":1.5, "y":3.25, "w":1.75},
+ {"label":"A", "x":3.25, "y":3.25},
+ {"label":"S", "x":4.25, "y":3.25},
+ {"label":"D", "x":5.25, "y":3.25},
+ {"label":"F", "x":6.25, "y":3.25},
+ {"label":"G", "x":7.25, "y":3.25},
+
+ {"label":"H", "x":9.75, "y":3.25},
+ {"label":"J", "x":10.75, "y":3.25},
+ {"label":"K", "x":11.75, "y":3.25},
+ {"label":"L", "x":12.75, "y":3.25},
+ {"label":":", "x":13.75, "y":3.25},
+ {"label":"\"", "x":14.75, "y":3.25},
+ {"label":"#", "x":15.75, "y":3.25},
+ {"label":"Enter", "x":16.75, "y":2.25, "w":1.25, "h":2},
+ {"label":"Home", "x":18.5, "y":3.25},
+ {"label":"End", "x":19.5, "y":3.25},
+
+ {"label":"F16", "x":0, "y":4.25},
+ {"label":"Shift", "x":1.5, "y":4.25, "w":1.25},
+ {"label":"\\", "x":2.75, "y":4.25},
+ {"label":"Z", "x":3.75, "y":4.25},
+ {"label":"X", "x":4.75, "y":4.25},
+ {"label":"C", "x":5.75, "y":4.25},
+ {"label":"V", "x":6.75, "y":4.25},
+ {"label":"B", "x":7.75, "y":4.25},
+ {"label":"N", "x":10.25, "y":4.25},
+ {"label":"M", "x":11.25, "y":4.25},
+ {"label":"<", "x":12.25, "y":4.25},
+ {"label":">", "x":13.25, "y":4.25},
+ {"label":"?", "x":14.25, "y":4.25},
+ {"label":"Shift", "x":15.25, "y":4.25, "w":1.75},
+ {"label":"Up", "x":18.5, "y":4.25},
+
+ {"label":"F17", "x":0, "y":5.25},
+ {"label":"Ctrl", "x":1.5, "y":5.25, "w":1.25},
+ {"label":"Win", "x":2.75, "y":5.25},
+ {"label":"Alt", "x":3.75, "y":5.25, "w":1.25},
+ {"label":"Fn", "x":5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":6.25, "y":5.25},
+ {"label":"Fn", "x":7.25, "y":5.25, "w":1.25},
+ {"label":"Fn", "x":10, "y":5.25, "w":1.25},
+ {"label":"Space", "x":11.25, "y":5.25, "w":2.25},
+ {"label":"Alt", "x":13.5, "y":5.25, "w":1.25},
+ {"label":"Win", "x":14.75, "y":5.25},
+ {"label":"Ctrl", "x":15.75, "y":5.25, "w":1.25},
+ {"label":"Left", "x":17.5, "y":5.25},
+ {"label":"Down", "x":18.5, "y":5.25},
+ {"label":"Right", "x":19.5, "y":5.25}
+ ]
+ },
+ "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":10, "y":0},
+ {"label":"F8", "x":11, "y":0},
+ {"label":"F9", "x":12.5, "y":0},
+ {"label":"F10", "x":13.5, "y":0},
+ {"label":"F11", "x":14.5, "y":0},
+ {"label":"F12", "x":15.5, "y":0},
+ {"label":"Prt Sc", "x":17.5, "y":0},
+ {"label":"Scr Lk", "x":18.5, "y":0},
+ {"label":"Pause", "x":19.5, "y":0},
+
+ {"label":"F13", "x":0, "y":1.25},
+ {"label":"~", "x":1.5, "y":1.25},
+ {"label":"!", "x":2.5, "y":1.25},
+ {"label":"@", "x":3.5, "y":1.25},
+ {"label":"#", "x":4.5, "y":1.25},
+ {"label":"$", "x":5.5, "y":1.25},
+ {"label":"%", "x":6.5, "y":1.25},
+ {"label":"^", "x":7.5, "y":1.25},
+
+ {"label":"&", "x":10, "y":1.25},
+ {"label":"*", "x":11, "y":1.25},
+ {"label":"(", "x":12, "y":1.25},
+ {"label":")", "x":13, "y":1.25},
+ {"label":"_", "x":14, "y":1.25},
+ {"label":"+", "x":15, "y":1.25},
+ {"label":"Del", "x":16, "y":1.25},
+ {"label":"Bksp", "x":17, "y":1.25},
+ {"label":"Ins", "x":18.5, "y":1.25},
+ {"label":"Pg Up", "x":19.5, "y":1.25},
+
+ {"label":"F14", "x":0, "y":2.25},
+ {"label":"Tab", "x":1.5, "y":2.25, "w":1.5},
+ {"label":"Q", "x":3, "y":2.25},
+ {"label":"W", "x":4, "y":2.25},
+ {"label":"E", "x":5, "y":2.25},
+ {"label":"R", "x":6, "y":2.25},
+ {"label":"T", "x":7, "y":2.25},
+
+ {"label":"Y", "x":9.5, "y":2.25},
+ {"label":"U", "x":10.5, "y":2.25},
+ {"label":"I", "x":11.5, "y":2.25},
+ {"label":"O", "x":12.5, "y":2.25},
+ {"label":"P", "x":13.5, "y":2.25},
+ {"label":"{", "x":14.5, "y":2.25},
+ {"label":"}", "x":15.5, "y":2.25},
+ {"label":"|", "x":16.5, "y":2.25, "w":1.5},
+ {"label":"Del", "x":18.5, "y":2.25},
+ {"label":"Pg Dn", "x":19.5, "y":2.25},
+
+ {"label":"F15", "x":0, "y":3.25},
+ {"label":"Caps Lock", "x":1.5, "y":3.25, "w":1.75},
+ {"label":"A", "x":3.25, "y":3.25},
+ {"label":"S", "x":4.25, "y":3.25},
+ {"label":"D", "x":5.25, "y":3.25},
+ {"label":"F", "x":6.25, "y":3.25},
+ {"label":"G", "x":7.25, "y":3.25},
+
+ {"label":"H", "x":9.75, "y":3.25},
+ {"label":"J", "x":10.75, "y":3.25},
+ {"label":"K", "x":11.75, "y":3.25},
+ {"label":"L", "x":12.75, "y":3.25},
+ {"label":":", "x":13.75, "y":3.25},
+ {"label":"\"", "x":14.75, "y":3.25},
+ {"label":"#", "x":15.75, "y":3.25},
+ {"label":"Enter", "x":16.75, "y":3.25, "w":1.25},
+ {"label":"Home", "x":18.5, "y":3.25},
+ {"label":"End", "x":19.5, "y":3.25},
+
+ {"label":"F16", "x":0, "y":4.25},
+ {"label":"Shift", "x":1.5, "y":4.25, "w":1.25},
+ {"label":"\\", "x":2.75, "y":4.25},
+ {"label":"Z", "x":3.75, "y":4.25},
+ {"label":"X", "x":4.75, "y":4.25},
+ {"label":"C", "x":5.75, "y":4.25},
+ {"label":"V", "x":6.75, "y":4.25},
+ {"label":"B", "x":7.75, "y":4.25},
+ {"label":"N", "x":10.25, "y":4.25},
+ {"label":"M", "x":11.25, "y":4.25},
+ {"label":"<", "x":12.25, "y":4.25},
+ {"label":">", "x":13.25, "y":4.25},
+ {"label":"?", "x":14.25, "y":4.25},
+ {"label":"Shift", "x":15.25, "y":4.25, "w":1.75},
+ {"label":"Up", "x":18.5, "y":4.25},
+
+ {"label":"F17", "x":0, "y":5.25},
+ {"label":"Ctrl", "x":1.5, "y":5.25, "w":1.25},
+ {"label":"Win", "x":2.75, "y":5.25},
+ {"label":"Alt", "x":3.75, "y":5.25, "w":1.25},
+ {"label":"Fn", "x":5, "y":5.25, "w":1.25},
+ {"label":"Space", "x":6.25, "y":5.25},
+ {"label":"Fn", "x":7.25, "y":5.25, "w":1.25},
+ {"label":"Fn", "x":10, "y":5.25, "w":1.25},
+ {"label":"Space", "x":11.25, "y":5.25, "w":2.25},
+ {"label":"Alt", "x":13.5, "y":5.25, "w":1.25},
+ {"label":"Win", "x":14.75, "y":5.25},
+ {"label":"Ctrl", "x":15.75, "y":5.25, "w":1.25},
+ {"label":"Left", "x":17.5, "y":5.25},
+ {"label":"Down", "x":18.5, "y":5.25},
+ {"label":"Right", "x":19.5, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keebio/laplace/config.h b/keyboards/keebio/laplace/config.h
index 9948067668..1c7c9e4432 100644
--- a/keyboards/keebio/laplace/config.h
+++ b/keyboards/keebio/laplace/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1147
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT Laplace
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 7
diff --git a/keyboards/keebio/laplace/info.json b/keyboards/keebio/laplace/info.json
index c4df4c3a9d..364bc08c0b 100644
--- a/keyboards/keebio/laplace/info.json
+++ b/keyboards/keebio/laplace/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Laplace",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1147",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keebio/levinson/info.json b/keyboards/keebio/levinson/info.json
index 1d98ca9f4e..7a21ac0efa 100644
--- a/keyboards/keebio/levinson/info.json
+++ b/keyboards/keebio/levinson/info.json
@@ -1,7 +1,11 @@
{
"keyboard_name": "Levinson",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "Keebio",
+ "usb": {
+ "vid": "0xCB10"
+ },
"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}]
diff --git a/keyboards/keebio/levinson/keymaps/atreus/keymap.c b/keyboards/keebio/levinson/keymaps/atreus/keymap.c
index 1eb12669ac..fc8d45b21a 100644
--- a/keyboards/keebio/levinson/keymaps/atreus/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/atreus/keymap.c
@@ -36,6 +36,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LW] = LAYOUT_ortho_4x12( /* [> LOWER <] */
KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_NO, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 ,
KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_NO, KC_NO, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 ,
- KC_NO, KC_VOLU, KC_NO, KC_NO, RESET, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F12 ,
+ KC_NO, KC_VOLU, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F12 ,
KC_NO, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, TO(_QW), KC_PSCR, KC_SLCK, KC_PAUS )
};
diff --git a/keyboards/keebio/levinson/keymaps/dcompact/keymap.c b/keyboards/keebio/levinson/keymaps/dcompact/keymap.c
index a0556c09b4..74b554ba34 100644
--- a/keyboards/keebio/levinson/keymaps/dcompact/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/dcompact/keymap.c
@@ -158,7 +158,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL , \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL , \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, RGB_TOG, RGB_MOD, _______, _______, _______, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, RGB_VAD, RGB_VAI, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/keebio/levinson/keymaps/default/keymap.c b/keyboards/keebio/levinson/keymaps/default/keymap.c
index ed4c7243d1..72da4addc3 100644
--- a/keyboards/keebio/levinson/keymaps/default/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/default/keymap.c
@@ -5,12 +5,14 @@
// 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 layer_names {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/keebio/levinson/keymaps/issmirnov/keymap.c b/keyboards/keebio/levinson/keymaps/issmirnov/keymap.c
index d9edfebaa0..1c71a5aa2b 100644
--- a/keyboards/keebio/levinson/keymaps/issmirnov/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/issmirnov/keymap.c
@@ -30,7 +30,7 @@ _______ , ___________________BLANK___________________, _______ , _______ , KC_ES
// Run `./qmk show levinson` from parent dir to see this layer.
[_NUMP] = LAYOUT_ortho_4x12_wrapper(
-_______ , _________________NUMP_L1___________________ , _________________NUMP_R1___________________ , RESET ,
+_______ , _________________NUMP_L1___________________ , _________________NUMP_R1___________________ , QK_BOOT,
_______ , _________________NUMP_L2___________________ , _________________NUMP_R2___________________ , _______ ,
_______ , _________________NUMP_L3___________________ , _________________NUMP_R3___________________ , _______ ,
_______ , ___________________BLANK___________________ , _______ , _______ , _______ , _______ , TO(_OVERWATCH) , _______
@@ -91,7 +91,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
#ifdef RGBLIGHT_ENABLE
layer_state_set_rgb(state);
#endif
- uint8_t layer = biton32(state);
+ uint8_t layer = get_highest_layer(state);
combo_enable(); // by default, enable combos.
switch (layer) {
case 0:
diff --git a/keyboards/keebio/levinson/keymaps/issmirnov/rgb.c b/keyboards/keebio/levinson/keymaps/issmirnov/rgb.c
index de3a5342c0..3695731353 100644
--- a/keyboards/keebio/levinson/keymaps/issmirnov/rgb.c
+++ b/keyboards/keebio/levinson/keymaps/issmirnov/rgb.c
@@ -45,7 +45,7 @@ void matrix_scan_rgb(void) {
}
void set_rgb_indicators(uint8_t this_mod, uint8_t this_osm) {
- if (biton32(layer_state) == _QWERTY) {
+ if (get_highest_layer(layer_state) == _QWERTY) {
if ((this_mod | this_osm) & MOD_MASK_SHIFT) {
rgblight_setrgb_gold_at(SHFT_LED1);
} else {
diff --git a/keyboards/keebio/levinson/keymaps/issmirnov/rgb.h b/keyboards/keebio/levinson/keymaps/issmirnov/rgb.h
index 254d3cbac0..8b14d8571d 100644
--- a/keyboards/keebio/levinson/keymaps/issmirnov/rgb.h
+++ b/keyboards/keebio/levinson/keymaps/issmirnov/rgb.h
@@ -6,7 +6,7 @@
void keyboard_post_init_rgb(void);
// If rgb enabled, set underglow for layer
-uint32_t layer_state_set_rgb(uint32_t state);
+layer_state_t layer_state_set_rgb(layer_state_t state);
// Enhance matrix scan code. Note: keep this light, since it runs every 100ms
void matrix_scan_rgb(void);
diff --git a/keyboards/keebio/levinson/keymaps/jyh/keymap.c b/keyboards/keebio/levinson/keymaps/jyh/keymap.c
index 310356cd68..452bda619c 100644
--- a/keyboards/keebio/levinson/keymaps/jyh/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/jyh/keymap.c
@@ -130,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT_ortho_4x12(
- RESET , XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL ,
+ QK_BOOT, XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL ,
_______, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, BL_TOGG, BL_STEP, XXXXXXX, XXXXXXX, XXXXXXX, _______,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/keebio/levinson/keymaps/jyh2/keymap.c b/keyboards/keebio/levinson/keymaps/jyh2/keymap.c
index 4b7442928e..b82ad24602 100644
--- a/keyboards/keebio/levinson/keymaps/jyh2/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/jyh2/keymap.c
@@ -151,7 +151,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------' `-----------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- RESET , XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, DREC_1 , DREC_2 , RGB_M_P, RGB_M_SN,RGB_M_G, XXXXXXX, KC_DEL ,
+ QK_BOOT, XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, DREC_1 , DREC_2 , RGB_M_P, RGB_M_SN,RGB_M_G, XXXXXXX, KC_DEL ,
KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, MKITPNK, DPLAY_1, DPLAY_2, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DSTOP , DSTOP , RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/keebio/levinson/keymaps/ksamborski/keymap.c b/keyboards/keebio/levinson/keymaps/ksamborski/keymap.c
index 4fc77fb830..3833b6a223 100644
--- a/keyboards/keebio/levinson/keymaps/ksamborski/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/ksamborski/keymap.c
@@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------' `-----------------------------------------'
*/
[_AD] = LAYOUT_ortho_4x12(
- RESET , XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, DM_REC1, DM_REC2, RGB_M_P, RGB_M_SN,RGB_M_G, XXXXXXX, KC_DEL ,
+ QK_BOOT, XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, DM_REC1, DM_REC2, RGB_M_P, RGB_M_SN,RGB_M_G, XXXXXXX, KC_DEL ,
KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, MKITPNK, DM_PLY1, DM_PLY2, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DM_RSTP, DM_RSTP, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/keebio/levinson/keymaps/losinggeneration/keymap.c b/keyboards/keebio/levinson/keymaps/losinggeneration/keymap.c
index aea6aed78c..0ea5e733f5 100644
--- a/keyboards/keebio/levinson/keymaps/losinggeneration/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/losinggeneration/keymap.c
@@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Adjust (Lower + Raise)
* ,-----------------------------------------..-----------------------------------------.
- * | | F1 | F2 | F3 | F4 |BL Off|| RESET| Game |Numpad|Mouse | |Sleep |
+ * | | F1 | F2 | F3 | F4 |BL Off|| QK_BOOT| Game |Numpad|Mouse | |Sleep |
* |------+------+------+------+------+------||------+------+------+------+------+------|
* | | F5 | F6 | F7 | F8 |BL Tg ||Aud on|Qwerty|Colmak|Workmn|Dvorak| |
* |------+------+------+------+------+------||------+------+------+------+------+------|
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------''-----------------------------------------'
*/
[_ADJUST] = CATMAP( \
- _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , BL_OFF , RESET , TO_GAME, TO_NUM , TO_MS , _______, KC_SLEP, \
+ _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , BL_OFF , QK_BOOT, TO_GAME, TO_NUM , TO_MS , _______, KC_SLEP, \
_______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , BL_TOGG, AU_ON , QWERTY , COLEMAK, WORKMAN, DVORAK , _______, \
KC_CAPS, KC_F9 , KC_F10, KC_F11 , KC_F12 , BL_ON , AU_OFF , _______, _______, _______, KC_UP , _______, \
_______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT \
diff --git a/keyboards/keebio/levinson/keymaps/mmacdougall/keymap.c b/keyboards/keebio/levinson/keymaps/mmacdougall/keymap.c
index 76d9c72998..3edaa6fed0 100644
--- a/keyboards/keebio/levinson/keymaps/mmacdougall/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/mmacdougall/keymap.c
@@ -126,7 +126,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
BL_STEP, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/keebio/levinson/keymaps/numpad/keymap.c b/keyboards/keebio/levinson/keymaps/numpad/keymap.c
index da11ac35fe..ad7442a7c8 100644
--- a/keyboards/keebio/levinson/keymaps/numpad/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/numpad/keymap.c
@@ -55,14 +55,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|
* | Right| M(3) | M(6) | M(9) | | |
* |------+------+------+------+------+------|
- * | NumLock | RESET| | | Calc |
+ * | NumLock | QK_BOOT| | | 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
+ KC_NUMLOCK, QK_BOOT, 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/keymaps/treadwell/keymap.c b/keyboards/keebio/levinson/keymaps/treadwell/keymap.c
index 55ac74e9d8..f94239af7b 100644
--- a/keyboards/keebio/levinson/keymaps/treadwell/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/treadwell/keymap.c
@@ -113,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \
+ _______, QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, GAME , _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c b/keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c
index 16aa965d7d..84e37ce5ef 100644
--- a/keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c
+++ b/keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c
@@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_BSPC, \
KC_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, X_____X, X_____X, X_____X, X_____X, FIREY_RETURN, \
- RESET, TO(_QWERTY), _______, _______, _______, _______, _______, MO(_RAISE), _______, _______, TO(_QWERTY), X_____X \
+ QK_BOOT, TO(_QWERTY), _______, _______, _______, _______, _______, MO(_RAISE), _______, _______, TO(_QWERTY), X_____X \
),
/* Raise
@@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSPC, \
KC_DEL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \
_______, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, FIREY_RETURN, \
- X_____X, TO(_QWERTY), _______, _______, MO(_LOWER), _______, _______, _______, _______, _______, TO(_QWERTY), RESET \
+ X_____X, TO(_QWERTY), _______, _______, MO(_LOWER), _______, _______, _______, _______, _______, TO(_QWERTY), QK_BOOT \
),
@@ -182,7 +182,7 @@ void rgbflag(uint8_t r, uint8_t g, uint8_t b, uint8_t rr, uint8_t gg, uint8_t bb
void set_state_leds(void) {
if (rgblight_get_mode() == 1) {
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _RAISE:
rgbflag(C_BLU, C_GRN);
break;
diff --git a/keyboards/keebio/levinson/rev1/config.h b/keyboards/keebio/levinson/rev1/config.h
index 2b10dcec0c..59781590d7 100644
--- a/keyboards/keebio/levinson/rev1/config.h
+++ b/keyboards/keebio/levinson/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1146
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT Levinson
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/keebio/levinson/rev1/info.json b/keyboards/keebio/levinson/rev1/info.json
new file mode 100644
index 0000000000..cd51368b09
--- /dev/null
+++ b/keyboards/keebio/levinson/rev1/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Levinson Rev. 1",
+ "usb": {
+ "pid": "0x1146",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/keebio/levinson/rev2/config.h b/keyboards/keebio/levinson/rev2/config.h
index c993861b82..01c901c234 100644
--- a/keyboards/keebio/levinson/rev2/config.h
+++ b/keyboards/keebio/levinson/rev2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x2146
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Keebio
-#define PRODUCT Levinson
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/keebio/levinson/rev2/info.json b/keyboards/keebio/levinson/rev2/info.json
new file mode 100644
index 0000000000..ec18ce1898
--- /dev/null
+++ b/keyboards/keebio/levinson/rev2/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Levinson Rev. 2",
+ "usb": {
+ "pid": "0x2146",
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/keebio/levinson/rev3/config.h b/keyboards/keebio/levinson/rev3/config.h
index 60e6c150f5..a5144ec9fb 100644
--- a/keyboards/keebio/levinson/rev3/config.h
+++ b/keyboards/keebio/levinson/rev3/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x3146
-#define DEVICE_VER 0x0300
-#define MANUFACTURER Keebio
-#define PRODUCT Levinson
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/keebio/levinson/rev3/info.json b/keyboards/keebio/levinson/rev3/info.json
new file mode 100644
index 0000000000..c814ce24e3
--- /dev/null
+++ b/keyboards/keebio/levinson/rev3/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Levinson Rev. 3",
+ "usb": {
+ "pid": "0x3146",
+ "device_version": "3.0.0"
+ }
+}
diff --git a/keyboards/keebio/nyquist/info.json b/keyboards/keebio/nyquist/info.json
index 43561a553f..449c779b69 100644
--- a/keyboards/keebio/nyquist/info.json
+++ b/keyboards/keebio/nyquist/info.json
@@ -1,6 +1,9 @@
{
- "keyboard_name": "Nyquist",
+ "manufacturer": "Keebio",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xCB10"
+ },
"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/keebio/nyquist/keymaps/DivergeJM/keymap.c b/keyboards/keebio/nyquist/keymaps/DivergeJM/keymap.c
index 605e9f1004..8e8743766b 100644
--- a/keyboards/keebio/nyquist/keymaps/DivergeJM/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/DivergeJM/keymap.c
@@ -206,7 +206,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Adjust (Lower + Raise)
* ,-----------------------------------------. ,----------------------------------------.
- * | | | | | |RESET | | | | | | | |
+ * | | | | | |QK_BOOT | | | | | | | |
* |------+------+------+------+------+------| |-----+------+------+------+------+------|
* | | | | | | | | |TermOn|TermOf| | | Del |
* |------+------+------+------+------+------| |-----+------+------+------+------+------|
@@ -219,7 +219,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT(
- _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \
_______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
diff --git a/keyboards/keebio/nyquist/keymaps/bramver/keymap.c b/keyboards/keebio/nyquist/keymaps/bramver/keymap.c
index c671b7798c..108f910400 100644
--- a/keyboards/keebio/nyquist/keymaps/bramver/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/bramver/keymap.c
@@ -231,7 +231,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_EMOJI] = LAYOUT( \
- TO(0) , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , /**/ RESET , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ , \
+ TO(0) , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , /**/ QK_BOOT , XXXXXXX , XXXXXXX , XXXXXXX , XXXXXXX , _______ , \
_______ , X(CLAP) , X(CUM) , X(BNIS) , X(BUTT) , X(CAR) , /**/ X(FIRE) , X(REDB) , X(MONY) , X(HNDR) , X(SOS) , _______ , \
XXXXXXX , X(CELE) , X(PRAY) , X(NAIL) , X(OK) , X(THNK) , /**/ X(UNAM) , X(HEYE) , X(COOL) , X(EYES) , X(SMIR) , KC_DEL , \
_______ , X(TRIU) , X(SCRM) , X(VOMI) , X(DTIV) , X(EXPL) , /**/ X(HAIR) , X(DANC) , X(STRN) , X(LEFT) , X(RGHT) , _______ , \
diff --git a/keyboards/keebio/nyquist/keymaps/danielhklein/config.h b/keyboards/keebio/nyquist/keymaps/danielhklein/config.h
index 09abbccb72..398b285b89 100644
--- a/keyboards/keebio/nyquist/keymaps/danielhklein/config.h
+++ b/keyboards/keebio/nyquist/keymaps/danielhklein/config.h
@@ -14,13 +14,11 @@ GNU General Public License for more details.
You should 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 150
#define USE_SERIAL
#define EE_HANDS
-#define BOOTMAGIC_KEY_SALT KC_ENT
-
#ifdef SUBPROJECT_rev1
#include "../../rev1/config.h"
diff --git a/keyboards/keebio/nyquist/keymaps/default/keymap.c b/keyboards/keebio/nyquist/keymaps/default/keymap.c
index 03de74a80d..a06cde9555 100644
--- a/keyboards/keebio/nyquist/keymaps/default/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/default/keymap.c
@@ -5,12 +5,14 @@
// 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 layer_names {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/keebio/nyquist/keymaps/jojiichan/keymap.c b/keyboards/keebio/nyquist/keymaps/jojiichan/keymap.c
index a0d8c46475..537d5cf2e4 100644
--- a/keyboards/keebio/nyquist/keymaps/jojiichan/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/jojiichan/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_O, KC_7, KC_8, KC_9, KC_PLUS,
KC_TRNS, KC_A, KC_S, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_4, KC_5, KC_6, KC_PLUS,
KC_LSFT, KC_TRNS, KC_X, KC_C, KC_TRNS, KC_TRNS, KC_N, KC_TRNS, KC_1, KC_2, KC_3, KC_ENT,
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_0, KC_0, KC_DOT, KC_ENT)
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_0, KC_0, KC_DOT, KC_ENT)
};
diff --git a/keyboards/keebio/nyquist/keymaps/losinggeneration/keymap.c b/keyboards/keebio/nyquist/keymaps/losinggeneration/keymap.c
index 3e2c6edb70..852b856c6a 100644
--- a/keyboards/keebio/nyquist/keymaps/losinggeneration/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/losinggeneration/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Adjust (Lower + Raise)
* ,-----------------------------------------..-----------------------------------------.
- * | RESET|DEBUG | | | | || | | | | | |
+ * | QK_BOOT|DEBUG | | | | || | | | | | |
* |------+------+------+------+------+------||------+------+------+------+------+------|
* | | F1 | F2 | F3 | F4 | || | Game |Numpad| Mouse| |Sleep |
* |------+------+------+------+------+------||------+------+------+------+------+------|
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------''-----------------------------------------'
*/
[_ADJUST] = CATMAP( \
- RESET , DEBUG , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ QK_BOOT , DEBUG , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, _______, TO_GAME, TO_NUM , TO_MS , _______, KC_SLEP, \
_______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______, _______, QWERTY , COLEMAK, WORKMAN, DVORAK , _______, \
KC_CAPS, KC_F9 , KC_F10, KC_F11 , KC_F12 , _______, _______, _______, _______, _______, KC_UP , _______, \
diff --git a/keyboards/keebio/nyquist/keymaps/peott-fr/keymap.c b/keyboards/keebio/nyquist/keymaps/peott-fr/keymap.c
index cff2e400c1..221e45a199 100644
--- a/keyboards/keebio/nyquist/keymaps/peott-fr/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/peott-fr/keymap.c
@@ -72,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_LEFTHAND] = LAYOUT(
- KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS, KC_BSLS,
+ KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS, KC_BSLS,
KC_TRNS, KC_TRNS, KC_LBRC, KC_UP, KC_RBRC, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_TRNS, KC_RBRC,
KC_LCTL, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PCMM, KC_TRNS, KC_ENT,
KC_LSFT, KC_CALC, KC_MYCM, KC_PSCR, KC_ENT, KC_BSPC, KC_P1, KC_P2, KC_P3, KC_PEQL, KC_PGUP, KC_HOME,
@@ -99,6 +99,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, QK_BOOT
),
}; \ No newline at end of file
diff --git a/keyboards/keebio/nyquist/keymaps/pipicanim/keymap.c b/keyboards/keebio/nyquist/keymaps/pipicanim/keymap.c
index 1aa9fffdb3..f8b3b5240d 100644
--- a/keyboards/keebio/nyquist/keymaps/pipicanim/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/pipicanim/keymap.c
@@ -20,7 +20,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
),
[3] = LAYOUT_ortho_4x12(
- RGB_TOG,RGB_MOD,RGB_RMOD,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,RESET,
+ RGB_TOG,RGB_MOD,RGB_RMOD,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,QK_BOOT,
RGB_HUI,RGB_SAI,RGB_VAI,RGB_SPI,KC_TRNS,KC_TRNS,KC_TRNS,KC_MPRV,KC_MPLY,KC_MNXT,KC_TRNS,KC_TRNS,
RGB_HUD,RGB_SAD,RGB_VAD,RGB_SPD,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,KC_TRNS
diff --git a/keyboards/keebio/nyquist/keymaps/pitty/keymap.c b/keyboards/keebio/nyquist/keymaps/pitty/keymap.c
index 31912bb63e..2016cd1c46 100644
--- a/keyboards/keebio/nyquist/keymaps/pitty/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/pitty/keymap.c
@@ -143,7 +143,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
#ifdef RGBLIGHT_ENABLE
uint8_t default_layer = eeconfig_read_default_layer();
if (rgb_layer_change) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _LOWER:
rgblight_set_purple;
rgblight_mode(5);
diff --git a/keyboards/keebio/nyquist/keymaps/pjanx/keymap.c b/keyboards/keebio/nyquist/keymaps/pjanx/keymap.c
index 44a30063b8..96cf700bb8 100644
--- a/keyboards/keebio/nyquist/keymaps/pjanx/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/pjanx/keymap.c
@@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______,
KC_MS_BTN1, KC_MS_BTN2, KC_MS_BTN3, _______, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT
diff --git a/keyboards/keebio/nyquist/keymaps/shovelpaw/keymap.c b/keyboards/keebio/nyquist/keymaps/shovelpaw/keymap.c
index 87e44ff043..47510a22db 100644
--- a/keyboards/keebio/nyquist/keymaps/shovelpaw/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/shovelpaw/keymap.c
@@ -114,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT( \
QWERTY, 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, KC_7, KC_8, KC_9, _______, KC_DEL, \
+ _______, QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, KC_7, KC_8, KC_9, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_6, KC_5, KC_4, _______, _______, \
_______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_1, KC_2, KC_3, _______, _______, \
_______, _______, _______, _______, _______, KC_LCBR, KC_RCBR, KC_0, KC_DOT, _______, _______, _______ \
diff --git a/keyboards/keebio/nyquist/keymaps/skug/keymap.c b/keyboards/keebio/nyquist/keymaps/skug/keymap.c
index f9f66892a3..70ad4b2a8a 100644
--- a/keyboards/keebio/nyquist/keymaps/skug/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/skug/keymap.c
@@ -165,7 +165,7 @@ 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, _______, _______, \
+ _______, QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \
_______, _______, _______, 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 ae692782fa..6109661ffd 100644
--- a/keyboards/keebio/nyquist/keymaps/tester/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/tester/keymap.c
@@ -144,7 +144,7 @@ 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,
+ _______, QK_BOOT, 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/winternebs/keymap.c b/keyboards/keebio/nyquist/keymaps/winternebs/keymap.c
index bb1ab6ca4d..b673a5f25f 100755
--- a/keyboards/keebio/nyquist/keymaps/winternebs/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/winternebs/keymap.c
@@ -113,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT(
- RESET, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, _______, _______, _______, _______, KC_WH_L, KC_WH_R, _______,
+ QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, _______, _______, _______, _______, KC_WH_L, KC_WH_R, _______,
RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, AG_NORM, AG_SWAP, KC_HOME, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______,
_______, _______, _______, QWERTY, WORKMAN, _______, KC_END, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_VOLU, KC_MPLY,
diff --git a/keyboards/keebio/nyquist/keymaps/yshrsmz/keymap.c b/keyboards/keebio/nyquist/keymaps/yshrsmz/keymap.c
index d4c2d4ba23..77eb7fd16b 100644
--- a/keyboards/keebio/nyquist/keymaps/yshrsmz/keymap.c
+++ b/keyboards/keebio/nyquist/keymaps/yshrsmz/keymap.c
@@ -121,7 +121,7 @@ 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, \
+ _______, QK_BOOT, 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, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/keebio/nyquist/rev1/config.h b/keyboards/keebio/nyquist/rev1/config.h
index 47622ba1e9..02d5a0510e 100644
--- a/keyboards/keebio/nyquist/rev1/config.h
+++ b/keyboards/keebio/nyquist/rev1/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1156
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT The Nyquist Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/keebio/nyquist/rev1/info.json b/keyboards/keebio/nyquist/rev1/info.json
new file mode 100644
index 0000000000..76affd233c
--- /dev/null
+++ b/keyboards/keebio/nyquist/rev1/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Nyquist Rev. 1",
+ "usb": {
+ "pid": "0x1156",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/keebio/nyquist/rev2/config.h b/keyboards/keebio/nyquist/rev2/config.h
index e47110b8a5..82f4778992 100644
--- a/keyboards/keebio/nyquist/rev2/config.h
+++ b/keyboards/keebio/nyquist/rev2/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x2156
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Keebio
-#define PRODUCT The Nyquist Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/keebio/nyquist/rev2/info.json b/keyboards/keebio/nyquist/rev2/info.json
new file mode 100644
index 0000000000..579fa5acb2
--- /dev/null
+++ b/keyboards/keebio/nyquist/rev2/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Nyquist Rev. 2",
+ "usb": {
+ "pid": "0x2156",
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/keebio/nyquist/rev3/config.h b/keyboards/keebio/nyquist/rev3/config.h
index 3536f5c629..8d70316b55 100644
--- a/keyboards/keebio/nyquist/rev3/config.h
+++ b/keyboards/keebio/nyquist/rev3/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x3156
-#define DEVICE_VER 0x0300
-#define MANUFACTURER Keebio
-#define PRODUCT The Nyquist Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/keebio/nyquist/rev3/info.json b/keyboards/keebio/nyquist/rev3/info.json
new file mode 100644
index 0000000000..1de3fe17c5
--- /dev/null
+++ b/keyboards/keebio/nyquist/rev3/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Nyquist Rev. 3",
+ "usb": {
+ "pid": "0x3156",
+ "device_version": "3.0.0"
+ }
+}
diff --git a/keyboards/keebio/quefrency/keymaps/bcat/keymap.c b/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
index 3dd48623fa..cfa70f4cff 100644
--- a/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/bcat/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Function layer: http://www.keyboard-layout-editor.com/#/gists/59636898946da51f91fb290f8e078b4d */
[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, _______, 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, QK_BOOT, 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/bfiedler/keymap.c b/keyboards/keebio/quefrency/keymaps/bfiedler/keymap.c
index e47cba88c0..bafbbe8cb1 100644
--- a/keyboards/keebio/quefrency/keymaps/bfiedler/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/bfiedler/keymap.c
@@ -16,7 +16,7 @@
#include QMK_KEYBOARD_H
-#define KC_RST RESET
+#define KC_RST QK_BOOT
// 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/keebio/quefrency/keymaps/default/config.h b/keyboards/keebio/quefrency/keymaps/default/config.h
index f9efe78c5b..53bf8fb933 100644
--- a/keyboards/keebio/quefrency/keymaps/default/config.h
+++ b/keyboards/keebio/quefrency/keymaps/default/config.h
@@ -21,7 +21,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* Use I2C or Serial, not both */
-
-#define USE_SERIAL
// #define USE_I2C
diff --git a/keyboards/keebio/quefrency/keymaps/default/keymap.c b/keyboards/keebio/quefrency/keymaps/default/keymap.c
index 008cf5128d..a152c304a7 100644
--- a/keyboards/keebio/quefrency/keymaps/default/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/default/keymap.c
@@ -1,31 +1,53 @@
-#include QMK_KEYBOARD_H
+// Copyright 2022 Danny Nguyen (@nooges)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#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 _BASE 0
-#define _FN1 1
+enum custom_layer {
+ _BASE,
+ _FN1,
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
};
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_LCTL, KC_LALT, KC_LGUI, MO(_FN1),KC_SPC, MO(_FN1),KC_BSPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ [_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_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(
- 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ [_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_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
+
+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/default60/config.h b/keyboards/keebio/quefrency/keymaps/default60/config.h
new file mode 100644
index 0000000000..f9efe78c5b
--- /dev/null
+++ b/keyboards/keebio/quefrency/keymaps/default60/config.h
@@ -0,0 +1,27 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+Copyright 2018 Danny Nguyen <danny@keeb.io>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* Use I2C or Serial, not both */
+
+#define USE_SERIAL
+// #define USE_I2C
diff --git a/keyboards/keebio/quefrency/keymaps/default60/keymap.c b/keyboards/keebio/quefrency/keymaps/default60/keymap.c
new file mode 100644
index 0000000000..f987d9aa4d
--- /dev/null
+++ b/keyboards/keebio/quefrency/keymaps/default60/keymap.c
@@ -0,0 +1,35 @@
+// Copyright 2022 Danny Nguyen (@nooges)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#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_layer {
+ _BASE,
+ _FN1,
+};
+
+enum custom_keycodes {
+ QWERTY = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_60(
+ 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_60(
+ 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/default65macro/config.h b/keyboards/keebio/quefrency/keymaps/default65macro/config.h
deleted file mode 100644
index 53bf8fb933..0000000000
--- a/keyboards/keebio/quefrency/keymaps/default65macro/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-This is the c configuration file for the keymap
-
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-Copyright 2015 Jack Humbert
-Copyright 2018 Danny Nguyen <danny@keeb.io>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should 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_I2C
diff --git a/keyboards/keebio/quefrency/keymaps/default65macro/keymap.c b/keyboards/keebio/quefrency/keymaps/default65macro/keymap.c
deleted file mode 100644
index f452232b2d..0000000000
--- a/keyboards/keebio/quefrency/keymaps/default65macro/keymap.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include QMK_KEYBOARD_H
-
-extern keymap_config_t keymap_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 _BASE 0
-#define _FN1 1
-
-enum custom_keycodes {
- QWERTY = SAFE_RANGE,
-};
-
-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_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_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- )
-};
-
-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/drashna_ms/keymap.c b/keyboards/keebio/quefrency/keymaps/drashna_ms/keymap.c
index 445709bc3d..f679130130 100644
--- a/keyboards/keebio/quefrency/keymaps/drashna_ms/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/drashna_ms/keymap.c
@@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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, 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, KC_BSPC, QK_BOOT, \
_______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
diff --git a/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c b/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c
index a367e877fe..7d6f9da30e 100644
--- a/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/georgepetri/keymap.c
@@ -64,7 +64,7 @@ void keyboard_post_init_user(void) {
}
void update_led(void) {
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _BASE:
rgblight_sethsv_noeeprom(HSV_BLUE);
break;
diff --git a/keyboards/keebio/quefrency/keymaps/kingwangwong/keymap.c b/keyboards/keebio/quefrency/keymaps/kingwangwong/keymap.c
index 7bdc115ab9..72197c0956 100644
--- a/keyboards/keebio/quefrency/keymaps/kingwangwong/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/kingwangwong/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MINS, KC_EQL, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/keebio/quefrency/keymaps/peott-fr/keymap.c b/keyboards/keebio/quefrency/keymaps/peott-fr/keymap.c
index 98f17f1870..6708d7a0ee 100644
--- a/keyboards/keebio/quefrency/keymaps/peott-fr/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/peott-fr/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_TRNS, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
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,
diff --git a/keyboards/keebio/quefrency/keymaps/via/keymap.c b/keyboards/keebio/quefrency/keymaps/via/keymap.c
index 5ac83ef57c..ad6cfd84eb 100644
--- a/keyboards/keebio/quefrency/keymaps/via/keymap.c
+++ b/keyboards/keebio/quefrency/keymaps/via/keymap.c
@@ -33,3 +33,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
+ [2] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
+ [3] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+};
+#endif
diff --git a/keyboards/keebio/quefrency/keymaps/via/rules.mk b/keyboards/keebio/quefrency/keymaps/via/rules.mk
index 36b7ba9cbc..1189f4ad19 100644
--- a/keyboards/keebio/quefrency/keymaps/via/rules.mk
+++ b/keyboards/keebio/quefrency/keymaps/via/rules.mk
@@ -1,2 +1,3 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/keebio/quefrency/quefrency.h b/keyboards/keebio/quefrency/quefrency.h
index 2c77dc2ad3..d9a14c439c 100644
--- a/keyboards/keebio/quefrency/quefrency.h
+++ b/keyboards/keebio/quefrency/quefrency.h
@@ -14,3 +14,6 @@
#ifdef KEYBOARD_keebio_quefrency_rev4
#include "rev4.h"
#endif
+#ifdef KEYBOARD_keebio_quefrency_rev5
+ #include "rev5.h"
+#endif
diff --git a/keyboards/keebio/quefrency/rev1/config.h b/keyboards/keebio/quefrency/rev1/config.h
index c3ddd8b1a3..872ca73ece 100644
--- a/keyboards/keebio/quefrency/rev1/config.h
+++ b/keyboards/keebio/quefrency/rev1/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1257
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT Quefrency Rev. 1
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
diff --git a/keyboards/keebio/quefrency/rev1/info.json b/keyboards/keebio/quefrency/rev1/info.json
index 1e50e2e698..4483234499 100644
--- a/keyboards/keebio/quefrency/rev1/info.json
+++ b/keyboards/keebio/quefrency/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Quefrency rev1",
+ "keyboard_name": "Quefrency Rev. 1",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1257",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keebio/quefrency/rev2/config.h b/keyboards/keebio/quefrency/rev2/config.h
index 1fb6896775..30044f174f 100644
--- a/keyboards/keebio/quefrency/rev2/config.h
+++ b/keyboards/keebio/quefrency/rev2/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x2257
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Keebio
-#define PRODUCT Quefrency Rev. 2
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
@@ -53,10 +46,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* ws2812 RGB LED */
#define RGB_DI_PIN E6
-#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 16 // Number of LEDs
#define RGBLED_SPLIT { 8, 8 }
#define RGBLIGHT_LED_MAP { 1, 2, 3, 12, 13, 14, 15, 0, 7, 6, 5, 4, 11, 10, 9, 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
// Set 65% column (option 3) and Macro (option 4) on by default
#define VIA_EEPROM_LAYOUT_OPTIONS_DEFAULT 0x00DE
diff --git a/keyboards/keebio/quefrency/rev2/info.json b/keyboards/keebio/quefrency/rev2/info.json
index 120add8eaa..e68f0ce892 100644
--- a/keyboards/keebio/quefrency/rev2/info.json
+++ b/keyboards/keebio/quefrency/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Quefrency rev2",
+ "keyboard_name": "Quefrency Rev. 2",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x2257",
+ "device_version": "2.0.0"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_60"
},
diff --git a/keyboards/keebio/quefrency/rev2/rev2.c b/keyboards/keebio/quefrency/rev2/rev2.c
index 590c9850c2..d2badbeb25 100644
--- a/keyboards/keebio/quefrency/rev2/rev2.c
+++ b/keyboards/keebio/quefrency/rev2/rev2.c
@@ -31,6 +31,7 @@ void eeconfig_init_kb(void) {
eeconfig_init_user();
}
+#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }
if (index == 0) {
@@ -48,3 +49,4 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
}
return false;
}
+#endif
diff --git a/keyboards/keebio/quefrency/rev3/config.h b/keyboards/keebio/quefrency/rev3/config.h
index 2f1311e943..30044f174f 100644
--- a/keyboards/keebio/quefrency/rev3/config.h
+++ b/keyboards/keebio/quefrency/rev3/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x3257
-#define DEVICE_VER 0x0300
-#define MANUFACTURER Keebio
-#define PRODUCT Quefrency Rev. 3
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
@@ -53,10 +46,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* ws2812 RGB LED */
#define RGB_DI_PIN E6
-#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 16 // Number of LEDs
#define RGBLED_SPLIT { 8, 8 }
#define RGBLIGHT_LED_MAP { 1, 2, 3, 12, 13, 14, 15, 0, 7, 6, 5, 4, 11, 10, 9, 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
// Set 65% column (option 3) and Macro (option 4) on by default
#define VIA_EEPROM_LAYOUT_OPTIONS_DEFAULT 0x00DE
diff --git a/keyboards/keebio/quefrency/rev3/info.json b/keyboards/keebio/quefrency/rev3/info.json
index 5f59c90e80..5baacbb4de 100644
--- a/keyboards/keebio/quefrency/rev3/info.json
+++ b/keyboards/keebio/quefrency/rev3/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Quefrency rev3",
+ "keyboard_name": "Quefrency Rev. 3",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x3357",
+ "device_version": "3.1.0"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_60"
},
diff --git a/keyboards/keebio/quefrency/rev3/rev3.c b/keyboards/keebio/quefrency/rev3/rev3.c
index 0f8f964d92..8911dbd018 100644
--- a/keyboards/keebio/quefrency/rev3/rev3.c
+++ b/keyboards/keebio/quefrency/rev3/rev3.c
@@ -47,6 +47,7 @@ void eeconfig_init_kb(void) {
eeconfig_init_user();
}
+#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }
if (index == 0) {
@@ -64,3 +65,4 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
}
return false;
}
+#endif
diff --git a/keyboards/keebio/quefrency/rev4/config.h b/keyboards/keebio/quefrency/rev4/config.h
index f92490c8ec..f047ffbdf0 100644
--- a/keyboards/keebio/quefrency/rev4/config.h
+++ b/keyboards/keebio/quefrency/rev4/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x4257
-#define DEVICE_VER 0x0400
-#define MANUFACTURER Keebio
-#define PRODUCT Quefrency Rev. 4
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
@@ -53,8 +46,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* ws2812 RGB LED */
#define RGB_DI_PIN E6
-#define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 16 // Number of LEDs
#define RGBLED_SPLIT { 8, 8 }
#define RGBLIGHT_LED_MAP { 1, 2, 3, 12, 13, 14, 15, 0, 7, 6, 5, 4, 11, 10, 9, 8 }
#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 2)
+#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/keebio/quefrency/rev4/info.json b/keyboards/keebio/quefrency/rev4/info.json
index 3c2364ef15..8cc78205ea 100644
--- a/keyboards/keebio/quefrency/rev4/info.json
+++ b/keyboards/keebio/quefrency/rev4/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Quefrency rev4",
+ "keyboard_name": "Quefrency Rev. 4",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x4357",
+ "device_version": "4.1.0"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_60"
},
@@ -365,473 +371,6 @@
{ "label": "Down", "x": 17.25, "y": 4 },
{ "label": "Right", "x": 18.25, "y": 4 }
]
- },
- "LAYOUT_60_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, "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": "Del", "x": 14, "y": 0 },
- { "label": "Bksp", "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": 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": "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": 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": ";", "x": 11.75, "y": 2 },
- { "label": "'", "x": 12.75, "y": 2 },
- { "label": "NUHS", "x": 13.75, "y": 2 },
- { "label": "Enter", "x": 14.75, "y": 1, "w": 1.25, "h": 2 },
-
- { "label": "Shift", "x": 0, "y": 3, "w": 1.25 },
- { "label": "NUBS", "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": "Up", "x": 15, "y": 3 },
-
- { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
- { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 },
- { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 },
- { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 },
- { "label": "Space", "x": 5, "y": 4, "w": 2.25 },
-
- { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 },
- { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 },
- { "label": "Alt", "x": 11, "y": 4 },
- { "label": "Ctrl", "x": 12, "y": 4 },
- { "label": "Left", "x": 13, "y": 4 },
- { "label": "Down", "x": 14, "y": 4 },
- { "label": "Right", "x": 15, "y": 4 }
- ]
- },
- "LAYOUT_65_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, "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": "Del", "x": 14, "y": 0 },
- { "label": "Bksp", "x": 15, "y": 0 },
- { "label": "Home", "x": 16, "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": "[", "x": 12.5, "y": 1 },
- { "label": "]", "x": 13.5, "y": 1 },
- { "label": "End", "x": 16, "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": 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": ";", "x": 11.75, "y": 2 },
- { "label": "'", "x": 12.75, "y": 2 },
- { "label": "NUHS", "x": 13.75, "y": 2 },
- { "label": "Enter", "x": 14.75, "y": 1, "w": 1.25, "h": 2 },
- { "label": "Page Up", "x": 16, "y": 2 },
-
- { "label": "Shift", "x": 0, "y": 3, "w": 1.25 },
- { "label": "NUBS", "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": "Up", "x": 15, "y": 3 },
- { "label": "Page Down", "x": 16, "y": 3 },
-
- { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
- { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 },
- { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 },
- { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 },
- { "label": "Space", "x": 5, "y": 4, "w": 2.25 },
-
- { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 },
- { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 },
- { "label": "Alt", "x": 11, "y": 4 },
- { "label": "Ctrl", "x": 12, "y": 4 },
- { "label": "Win", "x": 13, "y": 4 },
- { "label": "Left", "x": 14, "y": 4 },
- { "label": "Down", "x": 15, "y": 4 },
- { "label": "Right", "x": 16, "y": 4 }
- ]
- },
- "LAYOUT_60_iso_with_macro": {
- "layout": [
- { "label": "F1", "x": 0, "y": 0 },
- { "label": "F6", "x": 1, "y": 0 },
-
- { "label": "Esc", "x": 2.25, "y": 0 },
- { "label": "1", "x": 3.25, "y": 0 },
- { "label": "2", "x": 4.25, "y": 0 },
- { "label": "3", "x": 5.25, "y": 0 },
- { "label": "4", "x": 6.25, "y": 0 },
- { "label": "5", "x": 7.25, "y": 0 },
- { "label": "6", "x": 8.25, "y": 0 },
-
- { "label": "7", "x": 10.25, "y": 0 },
- { "label": "8", "x": 11.25, "y": 0 },
- { "label": "9", "x": 12.25, "y": 0 },
- { "label": "0", "x": 13.25, "y": 0 },
- { "label": "-", "x": 14.25, "y": 0 },
- { "label": "=", "x": 15.25, "y": 0 },
- { "label": "Del", "x": 16.25, "y": 0 },
- { "label": "Bksp", "x": 17.25, "y": 0 },
-
- { "label": "F2", "x": 0, "y": 1 },
- { "label": "F7", "x": 1, "y": 1 },
-
- { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 },
- { "label": "Q", "x": 3.75, "y": 1 },
- { "label": "W", "x": 4.75, "y": 1 },
- { "label": "E", "x": 5.75, "y": 1 },
- { "label": "R", "x": 6.75, "y": 1 },
- { "label": "T", "x": 7.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": "F3", "x": 0, "y": 2 },
- { "label": "F8", "x": 1, "y": 2 },
-
- { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 },
- { "label": "A", "x": 4, "y": 2 },
- { "label": "S", "x": 5, "y": 2 },
- { "label": "D", "x": 6, "y": 2 },
- { "label": "F", "x": 7, "y": 2 },
- { "label": "G", "x": 8, "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": "NUHS", "x": 16, "y": 2 },
- { "label": "Enter", "x": 17, "y": 1, "w": 1.25, "h": 2 },
-
- { "label": "F4", "x": 0, "y": 3 },
- { "label": "F9", "x": 1, "y": 3 },
-
- { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 },
- { "label": "NUBS", "x": 3.5, "y": 3 },
- { "label": "Z", "x": 4.5, "y": 3 },
- { "label": "X", "x": 5.5, "y": 3 },
- { "label": "C", "x": 6.5, "y": 3 },
- { "label": "V", "x": 7.5, "y": 3 },
- { "label": "B", "x": 8.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": "Up", "x": 17.25, "y": 3 },
-
- { "label": "F5", "x": 0, "y": 4 },
- { "label": "F10", "x": 1, "y": 4 },
-
- { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 },
- { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 },
- { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 },
- { "label": "Fn", "x": 6, "y": 4, "w": 1.25 },
- { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 },
-
- { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 },
- { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 },
- { "label": "Alt", "x": 13.25, "y": 4 },
- { "label": "Ctrl", "x": 14.25, "y": 4 },
- { "label": "Left", "x": 15.25, "y": 4 },
- { "label": "Down", "x": 16.25, "y": 4 },
- { "label": "Right", "x": 17.25, "y": 4 }
- ]
- },
- "LAYOUT_65_iso_with_macro": {
- "layout": [
- { "label": "F1", "x": 0, "y": 0 },
- { "label": "F6", "x": 1, "y": 0 },
-
- { "label": "Esc", "x": 2.25, "y": 0 },
- { "label": "1", "x": 3.25, "y": 0 },
- { "label": "2", "x": 4.25, "y": 0 },
- { "label": "3", "x": 5.25, "y": 0 },
- { "label": "4", "x": 6.25, "y": 0 },
- { "label": "5", "x": 7.25, "y": 0 },
- { "label": "6", "x": 8.25, "y": 0 },
-
- { "label": "7", "x": 10.25, "y": 0 },
- { "label": "8", "x": 11.25, "y": 0 },
- { "label": "9", "x": 12.25, "y": 0 },
- { "label": "0", "x": 13.25, "y": 0 },
- { "label": "-", "x": 14.25, "y": 0 },
- { "label": "=", "x": 15.25, "y": 0 },
- { "label": "Del", "x": 16.25, "y": 0 },
- { "label": "Bksp", "x": 17.25, "y": 0 },
- { "label": "Home", "x": 18.25, "y": 0 },
-
- { "label": "F2", "x": 0, "y": 1 },
- { "label": "F7", "x": 1, "y": 1 },
-
- { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 },
- { "label": "Q", "x": 3.75, "y": 1 },
- { "label": "W", "x": 4.75, "y": 1 },
- { "label": "E", "x": 5.75, "y": 1 },
- { "label": "R", "x": 6.75, "y": 1 },
- { "label": "T", "x": 7.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": "PgUp", "x": 18.25, "y": 1 },
-
- { "label": "F3", "x": 0, "y": 2 },
- { "label": "F8", "x": 1, "y": 2 },
-
- { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 },
- { "label": "A", "x": 4, "y": 2 },
- { "label": "S", "x": 5, "y": 2 },
- { "label": "D", "x": 6, "y": 2 },
- { "label": "F", "x": 7, "y": 2 },
- { "label": "G", "x": 8, "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": "NUHS", "x": 16, "y": 2 },
- { "label": "Enter", "x": 17, "y": 1, "w": 1.25, "h": 2 },
- { "label": "PgDn", "x": 18.25, "y": 2 },
-
- { "label": "F4", "x": 0, "y": 3 },
- { "label": "F9", "x": 1, "y": 3 },
-
- { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 },
- { "label": "NUBS", "x": 3.5, "y": 3 },
- { "label": "Z", "x": 4.5, "y": 3 },
- { "label": "X", "x": 5.5, "y": 3 },
- { "label": "C", "x": 6.5, "y": 3 },
- { "label": "V", "x": 7.5, "y": 3 },
- { "label": "B", "x": 8.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": "Up", "x": 17.25, "y": 3 },
- { "label": "End", "x": 18.25, "y": 3 },
-
- { "label": "F5", "x": 0, "y": 4 },
- { "label": "F10", "x": 1, "y": 4 },
-
- { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 },
- { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 },
- { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 },
- { "label": "Fn", "x": 6, "y": 4, "w": 1.25 },
- { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 },
-
- { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 },
- { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 },
- { "label": "Alt", "x": 13.25, "y": 4 },
- { "label": "Ctrl", "x": 14.25, "y": 4 },
- { "label": "Win", "x": 15.25, "y": 4 },
- { "label": "Left", "x": 16.25, "y": 4 },
- { "label": "Down", "x": 17.25, "y": 4 },
- { "label": "Right", "x": 18.25, "y": 4 }
- ]
- },
- "LAYOUT_all": {
- "layout": [
- { "label": "F1", "x": 0, "y": 0 },
- { "label": "F6", "x": 1, "y": 0 },
-
- { "label": "Esc", "x": 2.25, "y": 0 },
- { "label": "1", "x": 3.25, "y": 0 },
- { "label": "2", "x": 4.25, "y": 0 },
- { "label": "3", "x": 5.25, "y": 0 },
- { "label": "4", "x": 6.25, "y": 0 },
- { "label": "5", "x": 7.25, "y": 0 },
- { "label": "6", "x": 8.25, "y": 0 },
-
- { "label": "7", "x": 10.25, "y": 0 },
- { "label": "8", "x": 11.25, "y": 0 },
- { "label": "9", "x": 12.25, "y": 0 },
- { "label": "0", "x": 13.25, "y": 0 },
- { "label": "-", "x": 14.25, "y": 0 },
- { "label": "=", "x": 15.25, "y": 0 },
- { "label": "Del", "x": 16.25, "y": 0 },
- { "label": "Bksp", "x": 17.25, "y": 0 },
- { "label": "Home", "x": 18.25, "y": 0 },
-
- { "label": "F2", "x": 0, "y": 1 },
- { "label": "F7", "x": 1, "y": 1 },
-
- { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 },
- { "label": "Q", "x": 3.75, "y": 1 },
- { "label": "W", "x": 4.75, "y": 1 },
- { "label": "E", "x": 5.75, "y": 1 },
- { "label": "R", "x": 6.75, "y": 1 },
- { "label": "T", "x": 7.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": "Backslash", "x": 16.75, "y": 1, "w": 1.5 },
- { "label": "PgUp", "x": 18.25, "y": 1 },
-
- { "label": "F3", "x": 0, "y": 2 },
- { "label": "F8", "x": 1, "y": 2 },
-
- { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 },
- { "label": "A", "x": 4, "y": 2 },
- { "label": "S", "x": 5, "y": 2 },
- { "label": "D", "x": 6, "y": 2 },
- { "label": "F", "x": 7, "y": 2 },
- { "label": "G", "x": 8, "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": "NUHS", "x": 16, "y": 2 },
- { "label": "Enter", "x": 17, "y": 2, "w": 1.25 },
- { "label": "PgDn", "x": 18.25, "y": 2 },
-
- { "label": "F4", "x": 0, "y": 3 },
- { "label": "F9", "x": 1, "y": 3 },
-
- { "label": "Shift", "x": 2.25, "y": 3, "w": 1.25 },
- { "label": "NUBS", "x": 3.5, "y": 3 },
- { "label": "Z", "x": 4.5, "y": 3 },
- { "label": "X", "x": 5.5, "y": 3 },
- { "label": "C", "x": 6.5, "y": 3 },
- { "label": "V", "x": 7.5, "y": 3 },
- { "label": "B", "x": 8.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": "Up", "x": 17.25, "y": 3 },
- { "label": "End", "x": 18.25, "y": 3 },
-
- { "label": "F5", "x": 0, "y": 4 },
- { "label": "F10", "x": 1, "y": 4 },
-
- { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 },
- { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 },
- { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 },
- { "label": "Fn", "x": 6, "y": 4, "w": 1.25 },
- { "label": "Space", "x": 7.25, "y": 4 },
- { "label": "Space", "x": 8.25, "y": 4, "w": 1.25 },
-
- { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 },
- { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 },
- { "label": "Alt", "x": 13.25, "y": 4 },
- { "label": "Ctrl", "x": 14.25, "y": 4 },
- { "label": "Win", "x": 15.25, "y": 4 },
- { "label": "Left", "x": 16.25, "y": 4 },
- { "label": "Down", "x": 17.25, "y": 4 },
- { "label": "Right", "x": 18.25, "y": 4 }
- ]
}
}
}
diff --git a/keyboards/keebio/quefrency/rev4/rev4.c b/keyboards/keebio/quefrency/rev4/rev4.c
index 190135420f..66d73a934a 100644
--- a/keyboards/keebio/quefrency/rev4/rev4.c
+++ b/keyboards/keebio/quefrency/rev4/rev4.c
@@ -16,6 +16,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quefrency.h"
+#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }
if (index == 0) {
@@ -33,3 +34,4 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
}
return false;
}
+#endif
diff --git a/keyboards/keebio/quefrency/rev4/rev4.h b/keyboards/keebio/quefrency/rev4/rev4.h
index 12f76d5c85..2284a6da43 100644
--- a/keyboards/keebio/quefrency/rev4/rev4.h
+++ b/keyboards/keebio/quefrency/rev4/rev4.h
@@ -99,86 +99,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
}
-#define LAYOUT_60_iso( \
- LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, \
- LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, \
- LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, \
- LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
- LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \
- ) \
- { \
- { KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
- { KC_NO, KC_NO, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \
- { KC_NO, KC_NO, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \
- { KC_NO, KC_NO, LD3, LD4, LD5, LD6, LD7, LD8, LD9 }, \
- { KC_NO, KC_NO, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \
- { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, KC_NO }, \
- { RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, KC_NO }, \
- { RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, KC_NO }, \
- { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
- { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \
- }
-
-#define LAYOUT_65_iso( \
- LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
- LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB9, \
- LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \
- LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
- LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
- ) \
- { \
- { KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
- { KC_NO, KC_NO, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \
- { KC_NO, KC_NO, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \
- { KC_NO, KC_NO, LD3, LD4, LD5, LD6, LD7, LD8, LD9 }, \
- { KC_NO, KC_NO, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \
- { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9 }, \
- { RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, RB9 }, \
- { RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \
- { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
- { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
- }
-
-#define LAYOUT_60_iso_with_macro( \
- LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, \
- LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, \
- LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, \
- LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
- LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \
- ) \
- { \
- { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
- { LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \
- { LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \
- { LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9 }, \
- { LE1, LE2, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \
- { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, KC_NO }, \
- { RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, KC_NO }, \
- { RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, KC_NO }, \
- { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
- { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \
- }
-
-#define LAYOUT_65_iso_with_macro( \
- LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
- LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB9, \
- LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \
- LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
- LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
- ) \
- { \
- { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
- { LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \
- { LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \
- { LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9 }, \
- { LE1, LE2, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \
- { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9 }, \
- { RB1, RB2, RB3, RB4, RB5, RB6, RB7, KC_NO, RB9 }, \
- { RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \
- { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
- { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
- }
-
#define LAYOUT_all( \
LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
diff --git a/keyboards/keebio/quefrency/rev5/config.h b/keyboards/keebio/quefrency/rev5/config.h
new file mode 100644
index 0000000000..f047ffbdf0
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev5/config.h
@@ -0,0 +1,62 @@
+/* Copyright 2021 Danny Nguyen <danny@keeb.io>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 9
+
+#define DIODE_DIRECTION COL2ROW
+// wiring of each half
+#define MATRIX_ROW_PINS { B1, B2, C7, B4, D7 }
+#define MATRIX_COL_PINS { F4, F1, F0, B7, B3, D2, D3, D5, D4 }
+#define MATRIX_ROW_PINS_RIGHT { B3, B2, B6, B4, D7 }
+#define MATRIX_COL_PINS_RIGHT { F1, F0, F4, F5, F6, D5, C7, D3, B7 }
+#define SPLIT_HAND_PIN F7
+#define ENCODERS_PAD_A { F5 }
+#define ENCODERS_PAD_B { F6 }
+#define ENCODERS_PAD_A_RIGHT { D6 }
+#define ENCODERS_PAD_B_RIGHT { D4 }
+
+/* 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
+
+/* ws2812 RGB LED */
+#define RGB_DI_PIN E6
+#define RGBLED_NUM 16 // Number of LEDs
+#define RGBLED_SPLIT { 8, 8 }
+#define RGBLIGHT_LED_MAP { 1, 2, 3, 12, 13, 14, 15, 0, 7, 6, 5, 4, 11, 10, 9, 8 }
+#define RGBLIGHT_DEFAULT_MODE (RGBLIGHT_MODE_RAINBOW_SWIRL + 2)
+#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/keebio/quefrency/rev5/info.json b/keyboards/keebio/quefrency/rev5/info.json
new file mode 100644
index 0000000000..c7cc7b4bd2
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev5/info.json
@@ -0,0 +1,376 @@
+{
+ "keyboard_name": "Quefrency Rev. 5",
+ "manufacturer": "Keebio",
+ "url": "https://keeb.io",
+ "maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x5357",
+ "device_version": "5.1.0"
+ },
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_60"
+ },
+ "layouts": {
+ "LAYOUT_60": {
+ "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, "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": "Del", "x": 14, "y": 0 },
+ { "label": "Bksp", "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": 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": "Backslash", "x": 14.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": 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": ";", "x": 11.75, "y": 2 },
+ { "label": "'", "x": 12.75, "y": 2 },
+ { "label": "Enter", "x": 13.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": 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": "Up", "x": 15, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 },
+ { "label": "Space", "x": 5, "y": 4, "w": 2.25 },
+
+ { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 },
+ { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 },
+ { "label": "Alt", "x": 11, "y": 4 },
+ { "label": "Ctrl", "x": 12, "y": 4 },
+ { "label": "Left", "x": 13, "y": 4 },
+ { "label": "Down", "x": 14, "y": 4 },
+ { "label": "Right", "x": 15, "y": 4 }
+ ]
+ },
+ "LAYOUT_65": {
+ "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, "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": "Del", "x": 14, "y": 0 },
+ { "label": "Bksp", "x": 15, "y": 0 },
+ { "label": "Home", "x": 16, "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": "[", "x": 12.5, "y": 1 },
+ { "label": "]", "x": 13.5, "y": 1 },
+ { "label": "Backslash", "x": 14.5, "y": 1, "w": 1.5 },
+ { "label": "End", "x": 16, "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": 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": ";", "x": 11.75, "y": 2 },
+ { "label": "'", "x": 12.75, "y": 2 },
+ { "label": "Enter", "x": 13.75, "y": 2, "w": 2.25 },
+ { "label": "Page Up", "x": 16, "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": 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": "Up", "x": 15, "y": 3 },
+ { "label": "Page Down", "x": 16, "y": 3 },
+
+ { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 3.75, "y": 4, "w": 1.25 },
+ { "label": "Space", "x": 5, "y": 4, "w": 2.25 },
+
+ { "label": "Fn", "x": 8.25, "y": 4, "w": 1.25 },
+ { "label": "Space", "x": 9.5, "y": 4, "w": 1.5 },
+ { "label": "Alt", "x": 11, "y": 4 },
+ { "label": "Ctrl", "x": 12, "y": 4 },
+ { "label": "Win", "x": 13, "y": 4 },
+ { "label": "Left", "x": 14, "y": 4 },
+ { "label": "Down", "x": 15, "y": 4 },
+ { "label": "Right", "x": 16, "y": 4 }
+ ]
+ },
+ "LAYOUT_60_with_macro": {
+ "layout": [
+ { "label": "F1", "x": 0, "y": 0 },
+ { "label": "F6", "x": 1, "y": 0 },
+
+ { "label": "Esc", "x": 2.25, "y": 0 },
+ { "label": "1", "x": 3.25, "y": 0 },
+ { "label": "2", "x": 4.25, "y": 0 },
+ { "label": "3", "x": 5.25, "y": 0 },
+ { "label": "4", "x": 6.25, "y": 0 },
+ { "label": "5", "x": 7.25, "y": 0 },
+ { "label": "6", "x": 8.25, "y": 0 },
+
+ { "label": "7", "x": 10.25, "y": 0 },
+ { "label": "8", "x": 11.25, "y": 0 },
+ { "label": "9", "x": 12.25, "y": 0 },
+ { "label": "0", "x": 13.25, "y": 0 },
+ { "label": "-", "x": 14.25, "y": 0 },
+ { "label": "=", "x": 15.25, "y": 0 },
+ { "label": "Del", "x": 16.25, "y": 0 },
+ { "label": "Bksp", "x": 17.25, "y": 0 },
+
+ { "label": "F2", "x": 0, "y": 1 },
+ { "label": "F7", "x": 1, "y": 1 },
+
+ { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 3.75, "y": 1 },
+ { "label": "W", "x": 4.75, "y": 1 },
+ { "label": "E", "x": 5.75, "y": 1 },
+ { "label": "R", "x": 6.75, "y": 1 },
+ { "label": "T", "x": 7.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": "Backslash", "x": 16.75, "y": 1, "w": 1.5 },
+
+ { "label": "F3", "x": 0, "y": 2 },
+ { "label": "F8", "x": 1, "y": 2 },
+
+ { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 4, "y": 2 },
+ { "label": "S", "x": 5, "y": 2 },
+ { "label": "D", "x": 6, "y": 2 },
+ { "label": "F", "x": 7, "y": 2 },
+ { "label": "G", "x": 8, "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": "F4", "x": 0, "y": 3 },
+ { "label": "F9", "x": 1, "y": 3 },
+
+ { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 },
+ { "label": "Z", "x": 4.5, "y": 3 },
+ { "label": "X", "x": 5.5, "y": 3 },
+ { "label": "C", "x": 6.5, "y": 3 },
+ { "label": "V", "x": 7.5, "y": 3 },
+ { "label": "B", "x": 8.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": "Up", "x": 17.25, "y": 3 },
+
+ { "label": "F5", "x": 0, "y": 4 },
+ { "label": "F10", "x": 1, "y": 4 },
+
+ { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 6, "y": 4, "w": 1.25 },
+ { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 },
+
+ { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 },
+ { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 },
+ { "label": "Alt", "x": 13.25, "y": 4 },
+ { "label": "Ctrl", "x": 14.25, "y": 4 },
+ { "label": "Left", "x": 15.25, "y": 4 },
+ { "label": "Down", "x": 16.25, "y": 4 },
+ { "label": "Right", "x": 17.25, "y": 4 }
+ ]
+ },
+ "LAYOUT_65_with_macro": {
+ "layout": [
+ { "label": "F1", "x": 0, "y": 0 },
+ { "label": "F6", "x": 1, "y": 0 },
+
+ { "label": "Esc", "x": 2.25, "y": 0 },
+ { "label": "1", "x": 3.25, "y": 0 },
+ { "label": "2", "x": 4.25, "y": 0 },
+ { "label": "3", "x": 5.25, "y": 0 },
+ { "label": "4", "x": 6.25, "y": 0 },
+ { "label": "5", "x": 7.25, "y": 0 },
+ { "label": "6", "x": 8.25, "y": 0 },
+
+ { "label": "7", "x": 10.25, "y": 0 },
+ { "label": "8", "x": 11.25, "y": 0 },
+ { "label": "9", "x": 12.25, "y": 0 },
+ { "label": "0", "x": 13.25, "y": 0 },
+ { "label": "-", "x": 14.25, "y": 0 },
+ { "label": "=", "x": 15.25, "y": 0 },
+ { "label": "Del", "x": 16.25, "y": 0 },
+ { "label": "Bksp", "x": 17.25, "y": 0 },
+ { "label": "Home", "x": 18.25, "y": 0 },
+
+ { "label": "F2", "x": 0, "y": 1 },
+ { "label": "F7", "x": 1, "y": 1 },
+
+ { "label": "Tab", "x": 2.25, "y": 1, "w": 1.5 },
+ { "label": "Q", "x": 3.75, "y": 1 },
+ { "label": "W", "x": 4.75, "y": 1 },
+ { "label": "E", "x": 5.75, "y": 1 },
+ { "label": "R", "x": 6.75, "y": 1 },
+ { "label": "T", "x": 7.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": "Backslash", "x": 16.75, "y": 1, "w": 1.5 },
+ { "label": "PgUp", "x": 18.25, "y": 1 },
+
+ { "label": "F3", "x": 0, "y": 2 },
+ { "label": "F8", "x": 1, "y": 2 },
+
+ { "label": "Caps Lock", "x": 2.25, "y": 2, "w": 1.75 },
+ { "label": "A", "x": 4, "y": 2 },
+ { "label": "S", "x": 5, "y": 2 },
+ { "label": "D", "x": 6, "y": 2 },
+ { "label": "F", "x": 7, "y": 2 },
+ { "label": "G", "x": 8, "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": "PgDn", "x": 18.25, "y": 2 },
+
+ { "label": "F4", "x": 0, "y": 3 },
+ { "label": "F9", "x": 1, "y": 3 },
+
+ { "label": "Shift", "x": 2.25, "y": 3, "w": 2.25 },
+ { "label": "Z", "x": 4.5, "y": 3 },
+ { "label": "X", "x": 5.5, "y": 3 },
+ { "label": "C", "x": 6.5, "y": 3 },
+ { "label": "V", "x": 7.5, "y": 3 },
+ { "label": "B", "x": 8.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": "Up", "x": 17.25, "y": 3 },
+ { "label": "End", "x": 18.25, "y": 3 },
+
+ { "label": "F5", "x": 0, "y": 4 },
+ { "label": "F10", "x": 1, "y": 4 },
+
+ { "label": "Ctrl", "x": 2.25, "y": 4, "w": 1.25 },
+ { "label": "Alt", "x": 3.5, "y": 4, "w": 1.25 },
+ { "label": "Win", "x": 4.75, "y": 4, "w": 1.25 },
+ { "label": "Fn", "x": 6, "y": 4, "w": 1.25 },
+ { "label": "Space", "x": 7.25, "y": 4, "w": 2.25 },
+
+ { "label": "Fn", "x": 10.5, "y": 4, "w": 1.25 },
+ { "label": "Space", "x": 11.75, "y": 4, "w": 1.5 },
+ { "label": "Alt", "x": 13.25, "y": 4 },
+ { "label": "Ctrl", "x": 14.25, "y": 4 },
+ { "label": "Win", "x": 15.25, "y": 4 },
+ { "label": "Left", "x": 16.25, "y": 4 },
+ { "label": "Down", "x": 17.25, "y": 4 },
+ { "label": "Right", "x": 18.25, "y": 4 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/keebio/quefrency/rev5/readme.md b/keyboards/keebio/quefrency/rev5/readme.md
new file mode 100644
index 0000000000..77e296f5f1
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev5/readme.md
@@ -0,0 +1,18 @@
+# Quefrency Rev. 5
+
+Quefrency Rev. 5 features Kailh hotswap sockets with a fixed layout. The left macro portion and right column can be broken off, and split backspace or 2u backspace can be used.
+
+* Keyboard Maintainer: [Bakingpy/nooges](https://github.com/nooges)
+* Hardware Availability: [Keebio](https://keeb.io/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keebio/quefrency/rev5:default
+
+Example of flashing this keyboard:
+
+ make keebio/quefrency/rev5: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: [Keebio Build Guides](https://docs.keeb.io)
diff --git a/keyboards/keebio/quefrency/rev5/rev5.c b/keyboards/keebio/quefrency/rev5/rev5.c
new file mode 100644
index 0000000000..66d73a934a
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev5/rev5.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 Danny Nguyen <danny@keeb.io>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "quefrency.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(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return false;
+}
+#endif
diff --git a/keyboards/keebio/quefrency/rev5/rev5.h b/keyboards/keebio/quefrency/rev5/rev5.h
new file mode 100644
index 0000000000..2284a6da43
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev5/rev5.h
@@ -0,0 +1,120 @@
+/* Copyright 2021 Danny Nguyen <danny@keeb.io>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "quefrency.h"
+#include "quantum.h"
+
+#define LAYOUT_60( \
+ LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, \
+ LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \
+ LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \
+ LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
+ LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \
+ ) \
+ { \
+ { KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
+ { KC_NO, KC_NO, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \
+ { KC_NO, KC_NO, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \
+ { KC_NO, KC_NO, LD3, KC_NO, LD5, LD6, LD7, LD8, LD9 }, \
+ { KC_NO, KC_NO, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \
+ { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, KC_NO }, \
+ { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, KC_NO }, \
+ { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, KC_NO }, \
+ { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
+ { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \
+ }
+
+#define LAYOUT_65( \
+ LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
+ LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
+ LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \
+ LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
+ LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
+ ) \
+ { \
+ { KC_NO, KC_NO, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
+ { KC_NO, KC_NO, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \
+ { KC_NO, KC_NO, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \
+ { KC_NO, KC_NO, LD3, KC_NO, LD5, LD6, LD7, LD8, LD9 }, \
+ { KC_NO, KC_NO, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \
+ { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9 }, \
+ { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \
+ { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, RC9 }, \
+ { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
+ { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
+ }
+
+#define LAYOUT_60_with_macro( \
+ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, \
+ LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, \
+ LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, \
+ LD1, LD2, LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, \
+ LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8 \
+ ) \
+ { \
+ { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
+ { LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \
+ { LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \
+ { LD1, LD2, LD3, KC_NO, LD5, LD6, LD7, LD8, LD9 }, \
+ { LE1, LE2, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \
+ { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, KC_NO }, \
+ { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, KC_NO }, \
+ { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, KC_NO }, \
+ { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, KC_NO }, \
+ { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, KC_NO } \
+ }
+
+#define LAYOUT_65_with_macro( \
+ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
+ LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
+ LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC8, RC9, \
+ LD1, LD2, LD3, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
+ LE1, LE2, LE3, LE4, LE5, LE6, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
+ ) \
+ { \
+ { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
+ { LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \
+ { LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \
+ { LD1, LD2, LD3, KC_NO, LD5, LD6, LD7, LD8, LD9 }, \
+ { LE1, LE2, LE3, LE4, LE5, LE6, KC_NO, LE8, KC_NO }, \
+ { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9 }, \
+ { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \
+ { RC1, RC2, RC3, RC4, RC5, RC6, KC_NO, RC8, RC9 }, \
+ { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
+ { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
+ }
+
+#define LAYOUT_all( \
+ LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9, RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9, \
+ LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9, \
+ LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9, \
+ LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9, RD1, RD2, RD3, RD4, RD5, RD7, RD8, RD9, \
+ LE1, LE2, LE3, LE4, LE5, LE6, LE7, LE8, RE1, RE2, RE3, RE4, RE5, RE7, RE8, RE9 \
+ ) \
+ { \
+ { LA1, LA2, LA3, LA4, LA5, LA6, LA7, LA8, LA9 }, \
+ { LB1, LB2, LB3, LB4, LB5, LB6, LB7, LB8, KC_NO }, \
+ { LC1, LC2, LC3, LC4, LC5, LC6, LC7, LC8, KC_NO }, \
+ { LD1, LD2, LD3, LD4, LD5, LD6, LD7, LD8, LD9 }, \
+ { LE1, LE2, LE3, LE4, LE5, LE6, LE7, LE8, KC_NO }, \
+ { RA1, RA2, RA3, RA4, RA5, RA6, RA7, RA8, RA9 }, \
+ { RB1, RB2, RB3, RB4, RB5, RB6, RB7, RB8, RB9 }, \
+ { RC1, RC2, RC3, RC4, RC5, RC6, RC7, RC8, RC9 }, \
+ { RD1, RD2, RD3, RD4, RD5, KC_NO, RD7, RD8, RD9 }, \
+ { RE1, RE2, RE3, RE4, RE5, KC_NO, RE7, RE8, RE9 } \
+ }
diff --git a/keyboards/keebio/quefrency/rev5/rules.mk b/keyboards/keebio/quefrency/rev5/rules.mk
new file mode 100644
index 0000000000..f071ae81b8
--- /dev/null
+++ b/keyboards/keebio/quefrency/rev5/rules.mk
@@ -0,0 +1,4 @@
+BOOTLOADER = atmel-dfu
+BACKLIGHT_ENABLE = no
+RGBLIGHT_ENABLE = yes
+ENCODER_ENABLE = yes
diff --git a/keyboards/keebio/rorschach/info.json b/keyboards/keebio/rorschach/info.json
deleted file mode 100644
index 9675f96b8a..0000000000
--- a/keyboards/keebio/rorschach/info.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "keyboard_name": "Rorschach",
- "url": "https://keeb.io",
- "maintainer": "nooges",
- "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": 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": 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": 9, "y": 1 },
- { "w": 1, "x": 10, "y": 1 },
- { "w": 1, "x": 11, "y": 1 },
- { "w": 1, "x": 12, "y": 1 },
- { "w": 1, "x": 13, "y": 1 },
- { "w": 1, "x": 14, "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": 9, "y": 2 },
- { "w": 1, "x": 10, "y": 2 },
- { "w": 1, "x": 11, "y": 2 },
- { "w": 1, "x": 12, "y": 2 },
- { "w": 1, "x": 13, "y": 2 },
- { "w": 1, "x": 14, "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": 9, "y": 3 },
- { "w": 1, "x": 10, "y": 3 },
- { "w": 1, "x": 11, "y": 3 },
- { "w": 1, "x": 12, "y": 3 },
- { "w": 1, "x": 13, "y": 3 },
- { "w": 1, "x": 14, "y": 3 },
-
- { "w": 1, "x": 5.5, "y": 4 },
- { "w": 1, "x": 6, "y": 5 },
-
- { "w": 1, "x": 8, "y": 5 },
- { "w": 1, "x": 8.5, "y": 4 }
-
- ]
- }
- }
-}
diff --git a/keyboards/keebio/rorschach/keymaps/default/keymap.c b/keyboards/keebio/rorschach/keymaps/default/keymap.c
index 00f2a9cffb..c1efce8f2b 100644
--- a/keyboards/keebio/rorschach/keymaps/default/keymap.c
+++ b/keyboards/keebio/rorschach/keymaps/default/keymap.c
@@ -1,10 +1,12 @@
#include QMK_KEYBOARD_H
-#define _QWERTY 0
-#define _LOWER 1
-#define _RAISE 2
-#define _ADJUST 16
+enum layer_names {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
diff --git a/keyboards/keebio/rorschach/keymaps/insertsnideremarks/keymap.c b/keyboards/keebio/rorschach/keymaps/insertsnideremarks/keymap.c
index d03916617f..d8cc5b0989 100644
--- a/keyboards/keebio/rorschach/keymaps/insertsnideremarks/keymap.c
+++ b/keyboards/keebio/rorschach/keymaps/insertsnideremarks/keymap.c
@@ -213,7 +213,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Adjust layer
* (Enter/Number + Delete/Number2 to access; Numpad is a toggle)
* ,-----------------------------------------------. ,-----------------------------------------------.
-* | |Colemak| Qwerty| | | | | Numpad| | | Ctrl+Y| | RESET |
+* | |Colemak| Qwerty| | | | | Numpad| | | Ctrl+Y| | QK_BOOT |
* |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
* | | | | | | | | |NKROTog| | | | |
* |-------+-------+-------+-------+-------+-------| |-------+-------+-------+-------+-------+-------|
@@ -225,7 +225,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `---------------' `---------------'
*/
[_ADJUST] = LAYOUT(
- _______, COLEMAK, QWERTY, _______, _______, _______, NUMPAD, _______, _______, _______, _______, RESET,
+ _______, COLEMAK, QWERTY, _______, _______, _______, NUMPAD, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -233,7 +233,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST2] = LAYOUT(
- _______, COLEMAK, QWERTY, _______, _______, _______, NUMPAD, _______, _______, _______, _______, RESET,
+ _______, COLEMAK, QWERTY, _______, _______, _______, NUMPAD, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keebio/rorschach/keymaps/tuesdayjohn/keymap.c b/keyboards/keebio/rorschach/keymaps/tuesdayjohn/keymap.c
index ceb75d4f46..9621fb9ba0 100644
--- a/keyboards/keebio/rorschach/keymaps/tuesdayjohn/keymap.c
+++ b/keyboards/keebio/rorschach/keymaps/tuesdayjohn/keymap.c
@@ -241,7 +241,7 @@ Numpad layer
Adjust layer
(Enter/Number + Delete/Number2 to access; Numpad is a toggle)
,-----------------------------------------------------. ,-----------------------------------------------------.
- | | Colemak| Qwerty | | | | | Numpad | | | | | RESET |
+ | | Colemak| Qwerty | | | | | Numpad | | | | | QK_BOOT |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
| | | | | | | | |NKRO Tog| | | | |
|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
@@ -253,7 +253,7 @@ Adjust layer
`-----------------' `-----------------'
*/
[_ADJUST] = LAYOUT(
- _______, COLEMAK, QWERTY, _______, _______, _______, NUMPAD, _______, _______, _______, _______, RESET,
+ _______, COLEMAK, QWERTY, _______, _______, _______, NUMPAD, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -261,7 +261,7 @@ Adjust layer
),
[_ADJUST2] = LAYOUT(
- _______, COLEMAK, QWERTY, _______, _______, _______, NUMPAD, _______, _______, _______, _______, RESET,
+ _______, COLEMAK, QWERTY, _______, _______, _______, NUMPAD, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/keebio/rorschach/rev1/config.h b/keyboards/keebio/rorschach/rev1/config.h
index fa93d82de0..77db35cc9b 100644
--- a/keyboards/keebio/rorschach/rev1/config.h
+++ b/keyboards/keebio/rorschach/rev1/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1246
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT Rorschach Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/keebio/rorschach/rev1/info.json b/keyboards/keebio/rorschach/rev1/info.json
new file mode 100644
index 0000000000..8e04c211dd
--- /dev/null
+++ b/keyboards/keebio/rorschach/rev1/info.json
@@ -0,0 +1,79 @@
+{
+ "keyboard_name": "Rorschach Rev. 1",
+ "manufacturer": "Keebio",
+ "url": "https://keeb.io",
+ "maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1246",
+ "device_version": "1.0.0"
+ },
+ "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": 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": 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": 9, "y": 1 },
+ { "w": 1, "x": 10, "y": 1 },
+ { "w": 1, "x": 11, "y": 1 },
+ { "w": 1, "x": 12, "y": 1 },
+ { "w": 1, "x": 13, "y": 1 },
+ { "w": 1, "x": 14, "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": 9, "y": 2 },
+ { "w": 1, "x": 10, "y": 2 },
+ { "w": 1, "x": 11, "y": 2 },
+ { "w": 1, "x": 12, "y": 2 },
+ { "w": 1, "x": 13, "y": 2 },
+ { "w": 1, "x": 14, "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": 9, "y": 3 },
+ { "w": 1, "x": 10, "y": 3 },
+ { "w": 1, "x": 11, "y": 3 },
+ { "w": 1, "x": 12, "y": 3 },
+ { "w": 1, "x": 13, "y": 3 },
+ { "w": 1, "x": 14, "y": 3 },
+
+ { "w": 1, "x": 5.5, "y": 4 },
+ { "w": 1, "x": 6, "y": 5 },
+
+ { "w": 1, "x": 8, "y": 5 },
+ { "w": 1, "x": 8.5, "y": 4 }
+
+ ]
+ }
+ }
+}
diff --git a/keyboards/keebio/sinc/info.json b/keyboards/keebio/sinc/info.json
index 9b89484bba..a8d346ebe5 100644
--- a/keyboards/keebio/sinc/info.json
+++ b/keyboards/keebio/sinc/info.json
@@ -1,7 +1,10 @@
{
- "keyboard_name": "Sinc",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10"
+ },
"layouts": {
"LAYOUT_75": {
"layout": [
diff --git a/keyboards/keebio/sinc/rev1/config.h b/keyboards/keebio/sinc/rev1/config.h
index 92a9eb5675..0d31d1ad80 100644
--- a/keyboards/keebio/sinc/rev1/config.h
+++ b/keyboards/keebio/sinc/rev1/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1267
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT Sinc Rev. 1
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
diff --git a/keyboards/keebio/sinc/rev1/info.json b/keyboards/keebio/sinc/rev1/info.json
new file mode 100644
index 0000000000..d7a119807f
--- /dev/null
+++ b/keyboards/keebio/sinc/rev1/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Sinc Rev. 1",
+ "usb": {
+ "pid": "0x1267",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/keebio/sinc/rev2/config.h b/keyboards/keebio/sinc/rev2/config.h
index d78e0316f3..800400e905 100644
--- a/keyboards/keebio/sinc/rev2/config.h
+++ b/keyboards/keebio/sinc/rev2/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x2267
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Keebio
-#define PRODUCT Sinc Rev. 2
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
diff --git a/keyboards/keebio/sinc/rev2/info.json b/keyboards/keebio/sinc/rev2/info.json
new file mode 100644
index 0000000000..378b02d2e7
--- /dev/null
+++ b/keyboards/keebio/sinc/rev2/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Sinc Rev. 2",
+ "usb": {
+ "pid": "0x2267",
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/keebio/stick/config.h b/keyboards/keebio/stick/config.h
index cd641ea28b..8166510921 100644
--- a/keyboards/keebio/stick/config.h
+++ b/keyboards/keebio/stick/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x111C
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT The Stick
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 12
diff --git a/keyboards/keebio/stick/info.json b/keyboards/keebio/stick/info.json
index 494dbe664b..0a45edc35f 100644
--- a/keyboards/keebio/stick/info.json
+++ b/keyboards/keebio/stick/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "The Stick",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x111C",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keebio/tragicforce68/config.h b/keyboards/keebio/tragicforce68/config.h
index 3975175976..d39b78c010 100644
--- a/keyboards/keebio/tragicforce68/config.h
+++ b/keyboards/keebio/tragicforce68/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x0510
-#define DEVICE_VER 0x0101
-#define MANUFACTURER Keebio
-#define PRODUCT Tragicforce 68
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, D2, D1, D0, B4, E6, C6, D7, D4 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keebio/tragicforce68/info.json b/keyboards/keebio/tragicforce68/info.json
index cb806cc5cb..7b41614dae 100644
--- a/keyboards/keebio/tragicforce68/info.json
+++ b/keyboards/keebio/tragicforce68/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Tragicforce 68",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "Keebio",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x0510",
+ "device_version": "1.0.1"
+ },
"layouts": {
"LAYOUT_68_ansi": {
"layout": [
diff --git a/keyboards/keebio/tragicforce68/keymaps/buswerks/keymap.c b/keyboards/keebio/tragicforce68/keymaps/buswerks/keymap.c
index d74c0186d6..515f770eb2 100644
--- a/keyboards/keebio/tragicforce68/keymaps/buswerks/keymap.c
+++ b/keyboards/keebio/tragicforce68/keymaps/buswerks/keymap.c
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_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, _______, RESET, KC_HOME,
+ 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, _______, QK_BOOT, KC_HOME,
//├────────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────────────┤ ├────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
//├────────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴────────────┤ └────────┴────────┘
diff --git a/keyboards/keebio/tragicforce68/keymaps/rossman360/keymap.c b/keyboards/keebio/tragicforce68/keymaps/rossman360/keymap.c
index 127a0fd1ee..b0bc70b179 100755
--- a/keyboards/keebio/tragicforce68/keymaps/rossman360/keymap.c
+++ b/keyboards/keebio/tragicforce68/keymaps/rossman360/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MOD] = LAYOUT_split_space(
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────────────┠┌────────┬────────â”
- RESET, _______, _______, _______, _______, _______,_______, _______,KC_F8 , _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU,
+ QK_BOOT, _______, _______, _______, _______, _______,_______, _______,KC_F8 , _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU,
//├────────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────────────┤ ├────────┼────────┤
_______, _______, WREFRESH,_______, DF(_REV), _______, _______, UNDO, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴────────────┤ └────────┴────────┘
diff --git a/keyboards/keebio/tukey/config.h b/keyboards/keebio/tukey/config.h
index e6ee9a8f29..aefc51d5f5 100644
--- a/keyboards/keebio/tukey/config.h
+++ b/keyboards/keebio/tukey/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1112
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT Tukey
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 2
diff --git a/keyboards/keebio/tukey/info.json b/keyboards/keebio/tukey/info.json
index a17d5afa44..4427d0cc8b 100644
--- a/keyboards/keebio/tukey/info.json
+++ b/keyboards/keebio/tukey/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Tukey",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1112",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keebio/viterbi/info.json b/keyboards/keebio/viterbi/info.json
index f28a7410d1..1c42bd8f87 100644
--- a/keyboards/keebio/viterbi/info.json
+++ b/keyboards/keebio/viterbi/info.json
@@ -1,7 +1,10 @@
{
- "keyboard_name": "Viterbi",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "nooges",
+ "usb": {
+ "vid": "0xCB10"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keebio/viterbi/keymaps/default/keymap.c b/keyboards/keebio/viterbi/keymaps/default/keymap.c
index 1db80b7452..d23ebe6797 100644
--- a/keyboards/keebio/viterbi/keymaps/default/keymap.c
+++ b/keyboards/keebio/viterbi/keymaps/default/keymap.c
@@ -5,10 +5,12 @@
// 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 _LOWER 1
-#define _RAISE 2
-#define _ADJUST 16
+enum layer_names {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/keebio/viterbi/keymaps/vosechu/keymap.c b/keyboards/keebio/viterbi/keymaps/vosechu/keymap.c
index bbaa448574..32172690e5 100644
--- a/keyboards/keebio/viterbi/keymaps/vosechu/keymap.c
+++ b/keyboards/keebio/viterbi/keymaps/vosechu/keymap.c
@@ -15,7 +15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
A(KC_LEFT), KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F9 ,
SFT_SPC , A(KC_F1), A(KC_F2), A(KC_F3), A(KC_F4), _______ , _______ ,
A(KC_RGHT), C(KC_F1), C(KC_F2), C(KC_F3), C(KC_F4), _______ , _______ ,
- _______ , RESET , _______ , _______ , _LAYER_ , KC_DEL , KC_ENT
+ _______ , QK_BOOT, _______ , _______ , _LAYER_ , KC_DEL , KC_ENT
),
[LFT] = LAYOUT_ortho_half_5x7( // Media
_______ , KC_F10 , KC_F11 , KC_F12 , KC_PSCR , KC_SLCK , KC_PAUS ,
diff --git a/keyboards/keebio/viterbi/rev1/config.h b/keyboards/keebio/viterbi/rev1/config.h
index 15dea932f3..5aa5ef234c 100644
--- a/keyboards/keebio/viterbi/rev1/config.h
+++ b/keyboards/keebio/viterbi/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1157
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT The Viterbi Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/keebio/viterbi/rev1/info.json b/keyboards/keebio/viterbi/rev1/info.json
new file mode 100644
index 0000000000..5801f5f638
--- /dev/null
+++ b/keyboards/keebio/viterbi/rev1/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Viterbi Rev. 1",
+ "usb": {
+ "pid": "0x1157",
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/keebio/viterbi/rev2/config.h b/keyboards/keebio/viterbi/rev2/config.h
index ed4f87abab..9d87517c0a 100644
--- a/keyboards/keebio/viterbi/rev2/config.h
+++ b/keyboards/keebio/viterbi/rev2/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x2157
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Keebio
-#define PRODUCT The Viterbi Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/keebio/viterbi/rev2/info.json b/keyboards/keebio/viterbi/rev2/info.json
new file mode 100644
index 0000000000..9759016521
--- /dev/null
+++ b/keyboards/keebio/viterbi/rev2/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Viterbi Rev. 2",
+ "usb": {
+ "pid": "0x2157",
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/keebio/wavelet/config.h b/keyboards/keebio/wavelet/config.h
index d533d29350..37937eb371 100644
--- a/keyboards/keebio/wavelet/config.h
+++ b/keyboards/keebio/wavelet/config.h
@@ -21,13 +21,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1046
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keebio
-#define PRODUCT Wavelet
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
diff --git a/keyboards/keebio/wavelet/info.json b/keyboards/keebio/wavelet/info.json
index a4bc57b86f..f5df12cffb 100644
--- a/keyboards/keebio/wavelet/info.json
+++ b/keyboards/keebio/wavelet/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Wavelet",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "Keebio",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1046",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keebio/wavelet/keymaps/default/keymap.c b/keyboards/keebio/wavelet/keymaps/default/keymap.c
index ed4c7243d1..72da4addc3 100644
--- a/keyboards/keebio/wavelet/keymaps/default/keymap.c
+++ b/keyboards/keebio/wavelet/keymaps/default/keymap.c
@@ -5,12 +5,14 @@
// 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 layer_names {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/keebio/wtf60/config.h b/keyboards/keebio/wtf60/config.h
index d801a929e7..1ae31980c1 100644
--- a/keyboards/keebio/wtf60/config.h
+++ b/keyboards/keebio/wtf60/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCB10
-#define PRODUCT_ID 0x1337
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Keebio
-#define PRODUCT WTF60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/keebio/wtf60/info.json b/keyboards/keebio/wtf60/info.json
index ad7e9c8c89..440ecfb873 100644
--- a/keyboards/keebio/wtf60/info.json
+++ b/keyboards/keebio/wtf60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "WTF60",
+ "manufacturer": "Keebio",
"url": "https://keeb.io",
"maintainer": "Keebio",
+ "usb": {
+ "vid": "0xCB10",
+ "pid": "0x1337",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_full_wtf": {
"layout": [{"label":"Bksp", "x":0, "y":0}, {"label":"Del", "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":"Esc", "x":14, "y":0}, {"label":"|", "x":0, "y":1, "w":1.5}, {"label":"}", "x":1.5, "y":1}, {"label":"{", "x":2.5, "y":1}, {"label":"P", "x":3.5, "y":1}, {"label":"O", "x":4.5, "y":1}, {"label":"I", "x":5.5, "y":1}, {"label":"U", "x":6.5, "y":1}, {"label":"Y", "x":7.5, "y":1}, {"label":"T", "x":8.5, "y":1}, {"label":"R", "x":9.5, "y":1}, {"label":"E", "x":10.5, "y":1}, {"label":"W", "x":11.5, "y":1}, {"label":"Q", "x":12.5, "y":1}, {"label":"Tab", "x":13.5, "y":1, "w":1.5}, {"label":"Enter", "x":0, "y":2, "w":1.25}, {"label":"~", "x":1.25, "y":2}, {"label":"\"", "x":2.25, "y":2}, {"label":":", "x":3.25, "y":2}, {"label":"L", "x":4.25, "y":2}, {"label":"K", "x":5.25, "y":2}, {"label":"J", "x":6.25, "y":2}, {"label":"H", "x":7.25, "y":2}, {"label":"G", "x":8.25, "y":2}, {"label":"F", "x":9.25, "y":2}, {"label":"D", "x":10.25, "y":2}, {"label":"S", "x":11.25, "y":2}, {"label":"A", "x":12.25, "y":2}, {"label":"Caps Lock", "x":13.25, "y":2, "w":1.75}, {"label":"Fn", "x":0, "y":3}, {"label":"Shift", "x":1, "y":3, "w":1.75}, {"label":"?", "x":2.75, "y":3}, {"label":">", "x":3.75, "y":3}, {"label":"<", "x":4.75, "y":3}, {"label":"M", "x":5.75, "y":3}, {"label":"N", "x":6.75, "y":3}, {"label":"B", "x":7.75, "y":3}, {"label":"V", "x":8.75, "y":3}, {"label":"C", "x":9.75, "y":3}, {"label":"X", "x":10.75, "y":3}, {"label":"Z", "x":11.75, "y":3}, {"label":"|", "x":12.75, "y":3}, {"label":"Shift", "x":13.75, "y":3, "w":1.25}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Menu", "x":1.25, "y":4, "w":1.25}, {"label":"Win", "x":2.5, "y":4, "w":1.25}, {"label":"Alt", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":6.25}, {"label":"Alt", "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}]
diff --git a/keyboards/keebmonkey/kbmg68/config.h b/keyboards/keebmonkey/kbmg68/config.h
new file mode 100644
index 0000000000..3700587f58
--- /dev/null
+++ b/keyboards/keebmonkey/kbmg68/config.h
@@ -0,0 +1,61 @@
+/* Copyright 2022 Your Mom Loves My 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 "config_common.h"
+
+/* 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 { B1, B2, B3, B4, B5 }
+#define MATRIX_COL_PINS { B6, B7, D0, D1, D2, D3, D4, D5, D6, D7, C6, C7, F7, F6, F5, F4 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN B0
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 68
+ #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
+
+// generated by KBFirmware JSON to QMK Parser
+// https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/keebmonkey/kbmg68/info.json b/keyboards/keebmonkey/kbmg68/info.json
new file mode 100644
index 0000000000..4c331d1f6e
--- /dev/null
+++ b/keyboards/keebmonkey/kbmg68/info.json
@@ -0,0 +1,86 @@
+{
+ "keyboard_name": "kbmg68",
+ "manufacturer": "KeebMonkey",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_65_ansi": {
+ "layout": [
+ { "label": "K00 (B1,B6)", "x": 0, "y": 0 },
+ { "label": "K01 (B1,B7)", "x": 1, "y": 0 },
+ { "label": "K02 (B1,D0)", "x": 2, "y": 0 },
+ { "label": "K03 (B1,D1)", "x": 3, "y": 0 },
+ { "label": "K04 (B1,D2)", "x": 4, "y": 0 },
+ { "label": "K05 (B1,D3)", "x": 5, "y": 0 },
+ { "label": "K06 (B1,D4)", "x": 6, "y": 0 },
+ { "label": "K07 (B1,D5)", "x": 7, "y": 0 },
+ { "label": "K08 (B1,D6)", "x": 8, "y": 0 },
+ { "label": "K09 (B1,D7)", "x": 9, "y": 0 },
+ { "label": "K0A (B1,C6)", "x": 10, "y": 0 },
+ { "label": "K0B (B1,C7)", "x": 11, "y": 0 },
+ { "label": "K0C (B1,F7)", "x": 12, "y": 0 },
+ { "label": "K0E (B1,F5)", "x": 13, "y": 0, "w": 2 },
+ { "label": "K0F (B1,F4)", "x": 15, "y": 0 },
+ { "label": "K10 (B2,B6)", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "K12 (B2,D0)", "x": 1.5, "y": 1 },
+ { "label": "K13 (B2,D1)", "x": 2.5, "y": 1 },
+ { "label": "K14 (B2,D2)", "x": 3.5, "y": 1 },
+ { "label": "K15 (B2,D3)", "x": 4.5, "y": 1 },
+ { "label": "K16 (B2,D4)", "x": 5.5, "y": 1 },
+ { "label": "K17 (B2,D5)", "x": 6.5, "y": 1 },
+ { "label": "K18 (B2,D6)", "x": 7.5, "y": 1 },
+ { "label": "K19 (B2,D7)", "x": 8.5, "y": 1 },
+ { "label": "K1A (B2,C6)", "x": 9.5, "y": 1 },
+ { "label": "K1B (B2,C7)", "x": 10.5, "y": 1 },
+ { "label": "K1C (B2,F7)", "x": 11.5, "y": 1 },
+ { "label": "K1D (B2,F6)", "x": 12.5, "y": 1 },
+ { "label": "K1E (B2,F5)", "x": 13.5, "y": 1, "w": 1.5 },
+ { "label": "K1F (B2,F4)", "x": 15, "y": 1 },
+ { "label": "K20 (B3,B6)", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "K22 (B3,D0)", "x": 1.75, "y": 2 },
+ { "label": "K23 (B3,D1)", "x": 2.75, "y": 2 },
+ { "label": "K24 (B3,D2)", "x": 3.75, "y": 2 },
+ { "label": "K25 (B3,D3)", "x": 4.75, "y": 2 },
+ { "label": "K26 (B3,D4)", "x": 5.75, "y": 2 },
+ { "label": "K27 (B3,D5)", "x": 6.75, "y": 2 },
+ { "label": "K28 (B3,D6)", "x": 7.75, "y": 2 },
+ { "label": "K29 (B3,D7)", "x": 8.75, "y": 2 },
+ { "label": "K2A (B3,C6)", "x": 9.75, "y": 2 },
+ { "label": "K2B (B3,C7)", "x": 10.75, "y": 2 },
+ { "label": "K2C (B3,F7)", "x": 11.75, "y": 2 },
+ { "label": "K2D (B3,F6)", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "K2F (B3,F4)", "x": 15, "y": 2 },
+ { "label": "K31 (B4,B7)", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "K32 (B4,D0)", "x": 2.25, "y": 3 },
+ { "label": "K33 (B4,D1)", "x": 3.25, "y": 3 },
+ { "label": "K34 (B4,D2)", "x": 4.25, "y": 3 },
+ { "label": "K35 (B4,D3)", "x": 5.25, "y": 3 },
+ { "label": "K36 (B4,D4)", "x": 6.25, "y": 3 },
+ { "label": "K37 (B4,D5)", "x": 7.25, "y": 3 },
+ { "label": "K38 (B4,D6)", "x": 8.25, "y": 3 },
+ { "label": "K39 (B4,D7)", "x": 9.25, "y": 3 },
+ { "label": "K3A (B4,C6)", "x": 10.25, "y": 3 },
+ { "label": "K3B (B4,C7)", "x": 11.25, "y": 3 },
+ { "label": "K3D (B4,F6)", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "K3E (B4,F5)", "x": 14, "y": 3 },
+ { "label": "K3F (B4,F4)", "x": 15, "y": 3 },
+ { "label": "K40 (B5,B6)", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "K41 (B5,B7)", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "K43 (B5,D1)", "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "K46 (B5,D4)", "x": 3.75, "y": 4, "w": 6.25 },
+ { "label": "K4A (B5,C6)", "x": 10, "y": 4 },
+ { "label": "K4B (B5,C7)", "x": 11, "y": 4 },
+ { "label": "K4C (B5,F7)", "x": 12, "y": 4 },
+ { "label": "K4D (B5,F6)", "x": 13, "y": 4 },
+ { "label": "K4E (B5,F5)", "x": 14, "y": 4 },
+ { "label": "K4F (B5,F4)", "x": 15, "y": 4 }
+ ]
+ }
+ }
+ ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
+}
diff --git a/keyboards/keebmonkey/kbmg68/kbmg68.c b/keyboards/keebmonkey/kbmg68/kbmg68.c
new file mode 100644
index 0000000000..452624d771
--- /dev/null
+++ b/keyboards/keebmonkey/kbmg68/kbmg68.c
@@ -0,0 +1,20 @@
+/* Copyright 2022 Your Mom Loves My 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 "kbmg68.h"
+
+// generated by KBFirmware JSON to QMK Parser
+// https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/keebmonkey/kbmg68/kbmg68.h b/keyboards/keebmonkey/kbmg68/kbmg68.h
new file mode 100644
index 0000000000..a817a73d78
--- /dev/null
+++ b/keyboards/keebmonkey/kbmg68/kbmg68.h
@@ -0,0 +1,38 @@
+/* Copyright 2022 Your Mom Loves My 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 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, \
+ 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 }, \
+}
+
+// generated by KBFirmware JSON to QMK Parser
+// https://noroadsleft.github.io/kbf_qmk_converter/
diff --git a/keyboards/keebmonkey/kbmg68/keymaps/default/keymap.c b/keyboards/keebmonkey/kbmg68/keymaps/default/keymap.c
new file mode 100644
index 0000000000..945449dfdc
--- /dev/null
+++ b/keyboards/keebmonkey/kbmg68/keymaps/default/keymap.c
@@ -0,0 +1,45 @@
+/* Copyright 2022 Your Mom Loves My 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 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_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(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_65_ansi(
+ 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, _______, RGB_MOD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______,
+ MO(2), _______, _______, _______, _______, _______, _______, _______, RGB_VAD, _______
+ ),
+
+ [2] = LAYOUT_65_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT
+ ),
+
+};
diff --git a/keyboards/keebmonkey/kbmg68/readme.md b/keyboards/keebmonkey/kbmg68/readme.md
new file mode 100644
index 0000000000..59852c09a1
--- /dev/null
+++ b/keyboards/keebmonkey/kbmg68/readme.md
@@ -0,0 +1,27 @@
+# KBMG68
+
+![KBMG68](https://cdn.shopify.com/s/files/1/0463/5980/6101/products/IMG_2062_600x.jpg?v=1636042030)
+
+The Keebmonkey KBMG68 should be the cheapest gasket keyboard you can ever have. Both the plate and the PCB are gasket mounted, resulting in a deep thocky sound. The shell of the kit is made of 6-layers of acrylic boards, leaving huge space for modding and continuous improvements (even though this kit already sounds perfect when it's out of the box).
+
+* Keyboard Maintainer: Unknown
+* Hardware Supported: Unknown
+* Hardware Availability: [Keebmonkey KBMG68 Double Mounted Gasket Keyboard Kit](https://www.keebmonkey.com/products/kbmg68)
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keebmonkey/kbmg68:default
+
+Flashing example for this keyboard:
+
+ make keebmonkey/kbmg68: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 to Bootloader
+
+Hold the Escape key while plugging the board in.
diff --git a/keyboards/keebmonkey/kbmg68/rules.mk b/keyboards/keebmonkey/kbmg68/rules.mk
new file mode 100644
index 0000000000..0adb2c9996
--- /dev/null
+++ b/keyboards/keebmonkey/kbmg68/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 = 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 = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = 65_ansi
diff --git a/keyboards/keebsforall/coarse60/config.h b/keyboards/keebsforall/coarse60/config.h
index 7d14ea4cbd..b31e8c19cb 100644
--- a/keyboards/keebsforall/coarse60/config.h
+++ b/keyboards/keebsforall/coarse60/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6B66
-#define PRODUCT_ID 0x5341
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KeebsforAll
-#define PRODUCT coarse60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/keebsforall/coarse60/info.json b/keyboards/keebsforall/coarse60/info.json
index 8718b79f44..594f08a2fc 100644
--- a/keyboards/keebsforall/coarse60/info.json
+++ b/keyboards/keebsforall/coarse60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "coarse60",
+ "manufacturer": "KeebsForAll",
"url":"https://keebsforall.com",
"maintainer": "keebsforall",
+ "usb": {
+ "vid": "0x6B66",
+ "pid": "0x5341",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/keebsforall/coarse60/readme.md b/keyboards/keebsforall/coarse60/readme.md
index cde6152499..4d4f864eed 100644
--- a/keyboards/keebsforall/coarse60/readme.md
+++ b/keyboards/keebsforall/coarse60/readme.md
@@ -17,6 +17,6 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the top left key (Escape by default) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB (S1)
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/keebsforall/freebird60/config.h b/keyboards/keebsforall/freebird60/config.h
index 5d9f98cacf..44331c8612 100644
--- a/keyboards/keebsforall/freebird60/config.h
+++ b/keyboards/keebsforall/freebird60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xADAD
-#define PRODUCT_ID 0xFB60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KnoblesseOblige
-#define PRODUCT Freebird60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F5, F4, F1, F0, F6 }
#define MATRIX_COL_PINS { F7, C7, C6, B6, B5, B4, D7, D6, D4, D0, D1, D2, D3, D5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keebsforall/freebird60/info.json b/keyboards/keebsforall/freebird60/info.json
index 9b8b3ab5cc..a6d6b97325 100644
--- a/keyboards/keebsforall/freebird60/info.json
+++ b/keyboards/keebsforall/freebird60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "freebird60",
+ "keyboard_name": "Freebird60",
+ "manufacturer": "KnoblesseOblige",
"url": "",
"maintainer": "KnoblesseOblige",
+ "usb": {
+ "vid": "0xADAD",
+ "pid": "0xFB60",
+ "device_version": "0.0.1"
+ },
"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":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":"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}, {"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":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/keebsforall/freebirdnp/lite/config.h b/keyboards/keebsforall/freebirdnp/lite/config.h
index 317132eff3..031b2ba596 100644
--- a/keyboards/keebsforall/freebirdnp/lite/config.h
+++ b/keyboards/keebsforall/freebirdnp/lite/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/keebsforall/freebirdnp/lite/info.json b/keyboards/keebsforall/freebirdnp/lite/info.json
index 1553264e08..4cab1d4cdb 100644
--- a/keyboards/keebsforall/freebirdnp/lite/info.json
+++ b/keyboards/keebsforall/freebirdnp/lite/info.json
@@ -1,8 +1,13 @@
{
- "keyboard_name": "FreebirdNP Lite",
+ "keyboard_name": "Freebird Numpad Lite",
+ "manufacturer": "KeebsForAll",
"url": "https://keebsforall.com/products/fb-numpad-lite",
"maintainer": "e11i0t23",
- "manufacturer": "KeebsForAll",
+ "usb": {
+ "vid": "0x6B66",
+ "pid": "0x1013",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_5x4": {
"layout": [
diff --git a/keyboards/keebsforall/freebirdnp/lite/readme.md b/keyboards/keebsforall/freebirdnp/lite/readme.md
index e0d0dda059..b2860abc84 100644
--- a/keyboards/keebsforall/freebirdnp/lite/readme.md
+++ b/keyboards/keebsforall/freebirdnp/lite/readme.md
@@ -14,6 +14,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/config.h b/keyboards/keebsforall/freebirdnp/pro/config.h
index 53ced8ac03..8986e2ef64 100644
--- a/keyboards/keebsforall/freebirdnp/pro/config.h
+++ b/keyboards/keebsforall/freebirdnp/pro/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -45,7 +38,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/keebsforall/freebirdnp/pro/info.json b/keyboards/keebsforall/freebirdnp/pro/info.json
index ed2a6e0b41..c2432d6adc 100644
--- a/keyboards/keebsforall/freebirdnp/pro/info.json
+++ b/keyboards/keebsforall/freebirdnp/pro/info.json
@@ -1,8 +1,13 @@
{
- "keyboard_name": "FreebirdNP Pro",
+ "keyboard_name": "Freebird Numpad Pro",
+ "manufacturer": "KeebsForAll",
"url": "https://keebsforall.com/products/fb-numpad-pro",
"maintainer": "e11i0t23",
- "manufacturer": "KeebsForAll",
+ "usb": {
+ "vid": "0x6B66",
+ "pid": "0x1014",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_6x4": {
"layout": [
diff --git a/keyboards/keebsforall/freebirdnp/pro/readme.md b/keyboards/keebsforall/freebirdnp/pro/readme.md
index 3b06a72d11..b53e4b9fd9 100644
--- a/keyboards/keebsforall/freebirdnp/pro/readme.md
+++ b/keyboards/keebsforall/freebirdnp/pro/readme.md
@@ -16,6 +16,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/freebirdtkl/config.h b/keyboards/keebsforall/freebirdtkl/config.h
index 47c83ea5b7..06b8d65619 100644
--- a/keyboards/keebsforall/freebirdtkl/config.h
+++ b/keyboards/keebsforall/freebirdtkl/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x75FA /* "K"FA */
-#define PRODUCT_ID 0x0088
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KeebsForAll
-#define PRODUCT FreebirdTKL
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B2, B1, B0, B3, D5, B7 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D3, D2, D1 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keebsforall/freebirdtkl/info.json b/keyboards/keebsforall/freebirdtkl/info.json
index 0c21d22393..4c7f8de39e 100644
--- a/keyboards/keebsforall/freebirdtkl/info.json
+++ b/keyboards/keebsforall/freebirdtkl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "FreebirdTKL",
+ "manufacturer": "KeebsForAll",
"url": "https://keebsforall.com",
"maintainer": "KnoblesseOblige",
+ "usb": {
+ "vid": "0x75FA",
+ "pid": "0x0088",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_ansi": "LAYOUT_tkl_f13_ansi",
"LAYOUT_tsangan": "LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift",
diff --git a/keyboards/keebsforall/freebirdtkl/readme.md b/keyboards/keebsforall/freebirdtkl/readme.md
index 5b5bade278..1b61d3c141 100644
--- a/keyboards/keebsforall/freebirdtkl/readme.md
+++ b/keyboards/keebsforall/freebirdtkl/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/keebwerk/mega/ansi/config.h b/keyboards/keebwerk/mega/ansi/config.h
index 9f9a225ef1..15df557676 100755
--- a/keyboards/keebwerk/mega/ansi/config.h
+++ b/keyboards/keebwerk/mega/ansi/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4B41
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT Keebwerk Mega ANSI
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/keebwerk/mega/ansi/info.json b/keyboards/keebwerk/mega/ansi/info.json
index 5ac104c07b..852fad11a4 100755
--- a/keyboards/keebwerk/mega/ansi/info.json
+++ b/keyboards/keebwerk/mega/ansi/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Keebwerk Mega",
+ "keyboard_name": "Keebwerk Mega ANSI",
+ "manufacturer": "Yiancar-Designs",
"url": "",
"maintainer": "Yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4B41",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_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":"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":"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":"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":"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":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
diff --git a/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c b/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c
index 54e6ee4ac2..dde2e84e09 100644
--- a/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c
+++ b/keyboards/keebwerk/mega/ansi/keymaps/jesusvallejo/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, 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),
diff --git a/keyboards/keebwerk/nano_slider/config.h b/keyboards/keebwerk/nano_slider/config.h
index 53b887692b..7d6a9a8330 100644
--- a/keyboards/keebwerk/nano_slider/config.h
+++ b/keyboards/keebwerk/nano_slider/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x03A8
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER keebwerk.
-#define PRODUCT nano. slider
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1 }
#define MATRIX_COL_PINS { B0, B1, B2, B3 }
-#define UNUSED_PINS
#define SLIDER_PIN D4
diff --git a/keyboards/keebwerk/nano_slider/info.json b/keyboards/keebwerk/nano_slider/info.json
index b91ecffee3..257bc71110 100644
--- a/keyboards/keebwerk/nano_slider/info.json
+++ b/keyboards/keebwerk/nano_slider/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "nano. slider",
+ "manufacturer": "keebwerk.",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x03A8",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keebwerk/nano_slider/keymaps/midi2vol/keymap.c b/keyboards/keebwerk/nano_slider/keymaps/midi2vol/keymap.c
index 0623f7556c..07ba118e35 100644
--- a/keyboards/keebwerk/nano_slider/keymaps/midi2vol/keymap.c
+++ b/keyboards/keebwerk/nano_slider/keymaps/midi2vol/keymap.c
@@ -41,11 +41,11 @@ uint8_t midi2vol = 0x3E;
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 */
+ _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 */
+ _QK_BOOT, /* Layer to set nano in bootloader mode */
_TOOGLE, /* Momentary layer to switch between layers */
};
@@ -92,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_RESET] = LAYOUT(
MO(_TOOGLE),
KC_NO, KC_NO, KC_NO,
- KC_NO, KC_NO, KC_NO, RESET
+ KC_NO, KC_NO, KC_NO, QK_BOOT
),
[_TOOGLE] = LAYOUT(
MO(_TOOGLE),
diff --git a/keyboards/keebwerk/nano_slider/keymaps/via/keymap.c b/keyboards/keebwerk/nano_slider/keymaps/via/keymap.c
new file mode 100644
index 0000000000..ea1faadfda
--- /dev/null
+++ b/keyboards/keebwerk/nano_slider/keymaps/via/keymap.c
@@ -0,0 +1,67 @@
+/* Copyright 2020 Duckle
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+enum layer_names {
+ _BASE,
+ _FN,
+ _MEDIA,
+ _FN2
+};
+
+/* 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 */
+ [_BASE] = LAYOUT(
+ TO(_FN),
+ KC_1, KC_2, KC_3,
+ KC_4, KC_5, KC_6, KC_0
+ ),
+ [_FN] = LAYOUT(
+ TO(_MEDIA),
+ RGB_TOG, RGB_MOD, RGB_VAI,
+ RGB_SAI, BL_BRTG, BL_STEP, KC_LSFT
+ ),
+ [_MEDIA] = LAYOUT(
+ TO(_BASE),
+ KC_VOLD, KC_VOLU, KC_F24,
+ KC_MRWD, KC_MFFD, KC_F23, KC_MPLY
+ ),
+ [_FN2] = LAYOUT(
+ _______,
+ _______, _______, _______,
+ _______, _______, _______, _______
+ )
+};
+
+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, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3));
+}
+
+void matrix_scan_user(void) {
+ slider();
+}
diff --git a/keyboards/keebwerk/nano_slider/keymaps/via/rules.mk b/keyboards/keebwerk/nano_slider/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/keebwerk/nano_slider/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/keebzdotnet/fme/config.h b/keyboards/keebzdotnet/fme/config.h
index bbc273fa07..1723e314ef 100644
--- a/keyboards/keebzdotnet/fme/config.h
+++ b/keyboards/keebzdotnet/fme/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B5A
-#define PRODUCT_ID 0x8008
-#define DEVICE_VER 0x0001
-#define MANUFACTURER keebzdotnet
-#define PRODUCT FMe
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 5
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B6, B5, B7, D2 }
#define MATRIX_COL_PINS { B0, B4, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keebzdotnet/fme/info.json b/keyboards/keebzdotnet/fme/info.json
index f07d3fd791..3c24379865 100644
--- a/keyboards/keebzdotnet/fme/info.json
+++ b/keyboards/keebzdotnet/fme/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "FMe",
+ "manufacturer": "keebzdotnet",
"url": "",
"maintainer": "keebzdotnet",
+ "usb": {
+ "vid": "0x4B5A",
+ "pid": "0x8008",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
diff --git a/keyboards/keebzdotnet/wazowski/config.h b/keyboards/keebzdotnet/wazowski/config.h
index fe8b5cbcd5..9670585b45 100644
--- a/keyboards/keebzdotnet/wazowski/config.h
+++ b/keyboards/keebzdotnet/wazowski/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B5A // "KZ"
-#define PRODUCT_ID 0x53FC
-#define DEVICE_VER 0x0001
-#define MANUFACTURER keebzdotnet
-#define PRODUCT wazowski 23-19
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 5
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6 }
#define MATRIX_COL_PINS { F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keebzdotnet/wazowski/info.json b/keyboards/keebzdotnet/wazowski/info.json
index 2081cf92d3..699a588cf4 100644
--- a/keyboards/keebzdotnet/wazowski/info.json
+++ b/keyboards/keebzdotnet/wazowski/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wazowski",
+ "keyboard_name": "wazowski 23-19",
+ "manufacturer": "keebzdotnet",
"url": "https://www.keebz.net/shop/wazoski-pcb",
"maintainer": "keebzdotnet",
+ "usb": {
+ "vid": "0x4B5A",
+ "pid": "0x53FC",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kegen/gboy/config.h b/keyboards/kegen/gboy/config.h
new file mode 100644
index 0000000000..77f9ef3b21
--- /dev/null
+++ b/keyboards/kegen/gboy/config.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2022 Matt Chan
+ *
+ * This program is free software: you can 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"
+
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F1, F4, F5, F6, F7 }
+#define MATRIX_COL_PINS { E2, E6, C6, C7, D7, B6, B5, B4, B3, B2, B1, B0, D4, D6, D5, F0 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+#define BACKLIGHT_PIN B7
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 15
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+#define RGB_DI_PIN D1
+#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 14
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif
diff --git a/keyboards/kegen/gboy/gboy.c b/keyboards/kegen/gboy/gboy.c
new file mode 100644
index 0000000000..cd6869748d
--- /dev/null
+++ b/keyboards/kegen/gboy/gboy.c
@@ -0,0 +1,18 @@
+/*
+ * Copyright (C) 2022 Matt Chan
+ *
+ * This program is free software: you can 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 "gboy.h"
diff --git a/keyboards/kegen/gboy/gboy.h b/keyboards/kegen/gboy/gboy.h
new file mode 100644
index 0000000000..5a51343e95
--- /dev/null
+++ b/keyboards/kegen/gboy/gboy.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2022 Matt Chan
+ *
+ * This program is free software: you can 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"
+
+/*
+ * This diagram is based off the QK65 layout but without the blocker.
+ *
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───────â”
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │1D │0D │0E │ │0D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ └─┬─────┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │2C │1E │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴â”2D │ ISO Enter
+ * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │2E │ │2C │ │
+ * ┌────────┠├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤ ┌─┴───┴────┤
+ * │30 │ │30 │3C │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │3E │ │3B │ 2.75u Shift
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┼───┼───┤ └──────────┘
+ * │40 │41 │42 │46 │47 │49 │4C │4D │4E │
+ * └────┴────┴────┴────────────────────────┴─────┴─────┴───┴───┴───┘
+ * 1.25u, 1.25u, 1.25u, 6.25u, 1.5u, 1.5u
+ *
+ * ┌────┬────┬────┬────────────────────────┬───┬───┬───â”
+ * │40 │41 │42 │46 │47 │48 │49 │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┘
+ * 1.25u, 1.25u, 1.25u, 6.25u, 1u, 1u, 1u
+ *
+ * ┌─────┬─────┬───────────────────────────┬───┬───┬───â”
+ * │40 │42 │46 │47 │48 │49 │
+ * └─────┴─────┴───────────────────────────┴───┴───┴───┘
+ * 1.5u, 1.5u, 7u, 1u, 1u, 1u
+ *
+ * ┌─────┬─────┬───────────────────────────┬─────┬─────â”
+ * │40 │42 │46 │47 │49 │
+ * └─────┴─────┴───────────────────────────┴─────┴─────┘
+ * 1.5u, 1.5u, 7u, 1.5u, 1.5u
+ */
+
+
+
+#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, K212, K213, K215, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, \
+ K400, K401, K402, K406, K409, K410, K411, K412, K413, K414 \
+) { \
+ { 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, K212, K213, KC_NO, K215 }, \
+ { K300, K301, 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, K410, K411, K412, K413, K414, KC_NO } \
+}
diff --git a/keyboards/kegen/gboy/info.json b/keyboards/kegen/gboy/info.json
new file mode 100644
index 0000000000..880fd9611c
--- /dev/null
+++ b/keyboards/kegen/gboy/info.json
@@ -0,0 +1,92 @@
+{
+ "keyboard_name": "Kegen G-Boy",
+ "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/kegen/gboy",
+ "maintainer": "@mattchan",
+ "maintainer": "mattchan",
+ "usb": {
+ "vid": "0x4B65",
+ "pid": "0x6762",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label": "GESC", "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": "MINS", "x":11, "y":0},
+ {"label": "EQL", "x":12, "y":0},
+ {"label": "BSPC", "x":13, "y":0},
+ {"label": "BSPC", "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": "LBRC", "x":11.5, "y":1},
+ {"label": "RBRC", "x":12.5, "y":1},
+ {"label": "BSLS", "x":13.5, "y":1, "w":1.5},
+ {"label": "PGUP", "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": "SCLN", "x":10.75, "y":2},
+ {"label": "QUOT", "x":11.75, "y":2},
+ {"label": "BSLS", "x":12.75, "y":2},
+ {"label": "ENT", "x":13.75, "y":2, "w":1.25},
+ {"label": "PGDN", "x":15, "y":2},
+
+ {"label": "LSFT", "x":0, "y":3, "w":1.25},
+ {"label": "SLSH", "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": "COMM", "x":9.25, "y":3},
+ {"label": "DOT", "x":10.25, "y":3},
+ {"label": "SLSH", "x":11.25, "y":3},
+ {"label": "RSFT", "x":12.25, "y":3, "w":1.75},
+ {"label": "UP", "x":14, "y":3},
+ {"label": "END", "x":15, "y":3},
+
+ {"label": "LCTL", "x":0, "y":4, "w":1.25},
+ {"label": "LGUI", "x":1.25, "y":4, "w":1.25},
+ {"label": "LALT", "x":2.5, "y":4, "w":1.25},
+ {"label": "SPC", "x":3.75, "y":4, "w":6.25},
+ {"label": "RALT", "x":10, "y":4},
+ {"label": "MO(1)", "x":11, "y":4},
+ {"label": "RCTL", "x":12, "y":4},
+ {"label": "LEFT", "x":13, "y":4},
+ {"label": "DOWN", "x":14, "y":4},
+ {"label": "RGHT", "x":15, "y":4}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/kegen/gboy/keymaps/default/keymap.c b/keyboards/kegen/gboy/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f4b5d3c090
--- /dev/null
+++ b/keyboards/kegen/gboy/keymaps/default/keymap.c
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2022 Matt Chan
+ *
+ * This program is free software: you can 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] = {
+
+ [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_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_BSLS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_SLSH, KC_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_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, QK_BOOT,
+ RGB_TOG, RGB_RMOD, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, 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_VOLU, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+ [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
+ ),
+
+ [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
+ )
+
+};
diff --git a/keyboards/kegen/gboy/keymaps/via/keymap.c b/keyboards/kegen/gboy/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f4b5d3c090
--- /dev/null
+++ b/keyboards/kegen/gboy/keymaps/via/keymap.c
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2022 Matt Chan
+ *
+ * This program is free software: you can 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] = {
+
+ [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_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_BSLS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_SLSH, KC_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_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, QK_BOOT,
+ RGB_TOG, RGB_RMOD, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, 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_VOLU, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+ [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
+ ),
+
+ [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
+ )
+
+};
diff --git a/keyboards/kegen/gboy/keymaps/via/rules.mk b/keyboards/kegen/gboy/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/kegen/gboy/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/kegen/gboy/readme.md b/keyboards/kegen/gboy/readme.md
new file mode 100644
index 0000000000..b636d0462d
--- /dev/null
+++ b/keyboards/kegen/gboy/readme.md
@@ -0,0 +1,28 @@
+# G-Boy
+
+![G-Boy](https://i.imgur.com/APwppRwh.png)
+
+65% board that resembles a handheld gaming console
+
+* Keyboard Maintainer: [Matt Chan](https://github.com/mattchan)
+* Hardware Supported: Kegen G-Boy
+* Hardware Availability: Unfortunately, there is no site for this, and the Kegen Discord is no longer active. The group buy runners appear to have disappeared after round two units were delivered.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kegen/gboy:default
+
+Flashing example for this keyboard:
+
+ make kegen/gboy: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 `QK_BOOT` if it is available
diff --git a/keyboards/kegen/gboy/rules.mk b/keyboards/kegen/gboy/rules.mk
new file mode 100644
index 0000000000..8723047c1e
--- /dev/null
+++ b/keyboards/kegen/gboy/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# comment out to disable the options.
+#
+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
+AUDIO_ENABLE = no # Audio output
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
diff --git a/keyboards/keybage/radpad/config.h b/keyboards/keybage/radpad/config.h
index e0f4b76361..269f5a7967 100644
--- a/keyboards/keybage/radpad/config.h
+++ b/keyboards/keybage/radpad/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4253 // "BS"
-#define PRODUCT_ID 0x5250 // "RP"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Keybage
-#define PRODUCT RadPad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
#define MATRIX_ROW_PINS { F5, B5, B6, B2, B3 }
#define MATRIX_COL_PINS { E6, B4, D7, B1 }
-#define UNUSED_PINS { B0, B7, C7, D2, D3, D5, F0 }
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keybage/radpad/info.json b/keyboards/keybage/radpad/info.json
index 2236a43418..233144e95e 100644
--- a/keyboards/keybage/radpad/info.json
+++ b/keyboards/keybage/radpad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "radpad",
+ "keyboard_name": "RadPad",
+ "manufacturer": "Keybage",
"url": "",
"maintainer": "Brandon Schlack",
+ "usb": {
+ "vid": "0x4253",
+ "pid": "0x5250",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_4x4_encoders": {
"layout": [
diff --git a/keyboards/keybee/keybee65/config.h b/keyboards/keybee/keybee65/config.h
index 54f847a2dd..1e54bbfb15 100644
--- a/keyboards/keybee/keybee65/config.h
+++ b/keyboards/keybee/keybee65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6265 // KeyBee
-#define PRODUCT_ID 0x0001 // Keybee65
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER KeyBee
-#define PRODUCT KeyBee65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { D3, D2, D0, B0, F0 }
#define MATRIX_COL_PINS { E6, D1, D5, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keybee/keybee65/info.json b/keyboards/keybee/keybee65/info.json
index 63f05c9c2a..0a49a2bcad 100644
--- a/keyboards/keybee/keybee65/info.json
+++ b/keyboards/keybee/keybee65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "KeyBee65",
+ "manufacturer": "KeyBee",
"url": "",
"maintainer": "ToastyStoemp",
+ "usb": {
+ "vid": "0x6265",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/keybee/keybee65/readme.md b/keyboards/keybee/keybee65/readme.md
index afe9cfd225..a6fe9cb0c6 100644
--- a/keyboards/keybee/keybee65/readme.md
+++ b/keyboards/keybee/keybee65/readme.md
@@ -23,4 +23,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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 Enter key on layer 1 which is mapped to `RESET` \ No newline at end of file
+* **Keycode in layout**: Press the Enter key on layer 1 which is mapped to `QK_BOOT` \ No newline at end of file
diff --git a/keyboards/keyboardio/atreus/config.h b/keyboards/keyboardio/atreus/config.h
index 74b56ceb7d..6e6e68dcaf 100644
--- a/keyboards/keyboardio/atreus/config.h
+++ b/keyboards/keyboardio/atreus/config.h
@@ -18,14 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-
-#define VENDOR_ID 0x1209
-#define PRODUCT_ID 0x2303
-#define DEVICE_VER 0x0000
-#define MANUFACTURER Keyboardio
-#define PRODUCT Atreus
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -57,7 +49,6 @@
#define MATRIX_ROW_PINS { F6, F5, F4, F1 }
#define MATRIX_COL_PINS { F7, E2, C7, C6, B6, B5, D7, D6, D4, D5, D3, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keyboardio/atreus/info.json b/keyboards/keyboardio/atreus/info.json
index a23d81ac9d..8431c1e62d 100644
--- a/keyboards/keyboardio/atreus/info.json
+++ b/keyboards/keyboardio/atreus/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Keyboardio Atreus",
+ "keyboard_name": "Atreus",
+ "manufacturer": "Keyboardio",
"url": "",
"maintainer": "keyboardio",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0x2303",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keyboardio/atreus/keymaps/ardumont/keymap.c b/keyboards/keyboardio/atreus/keymaps/ardumont/keymap.c
index 6faabbc3ed..373438e4b4 100644
--- a/keyboards/keyboardio/atreus/keymaps/ardumont/keymap.c
+++ b/keyboards/keyboardio/atreus/keymaps/ardumont/keymap.c
@@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LW] = LAYOUT( /* [> LOWER <] */
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
KC_NO, KC_NO, KC_NO, KC_NO, KC_F11, KC_F12, KC_NO, KC_NO, KC_NO, KC_NO ,
- KC_NO, KC_NO, KC_NO, DEBUG, RESET, EEP_RST, _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ,
+ KC_NO, KC_NO, KC_NO, DEBUG, QK_BOOT, EEP_RST, _______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ,
_______, _______, _______, _______, _______, FN2, FN2, _______, _______, KC_NO, KC_ESC, _______
)
};
diff --git a/keyboards/keyboardio/atreus/keymaps/dshields/keymap.c b/keyboards/keyboardio/atreus/keymaps/dshields/keymap.c
index e9daa7fab8..0077c4d836 100644
--- a/keyboards/keyboardio/atreus/keymaps/dshields/keymap.c
+++ b/keyboards/keyboardio/atreus/keymaps/dshields/keymap.c
@@ -19,7 +19,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DEF] = 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,
+ MT_A, MT_S, MT_D, MT_F, KC_G, KC_H, MT_J, MT_K, MT_L, MT_SCLN,
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_TAB, KC_ENT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
OSMLCTL, MT_ESC, OSMLALT, OSL_FUN, MT_BSPC, OSL_LWR, OSL_RSE, MT_SPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[FUN] = 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_F13, KC_F14, KC_F15, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R,
- _______, _______, _______, _______, _______, RESET, EEP_RST, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3,
+ _______, _______, _______, _______, _______, QK_BOOT, EEP_RST, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R
)
};
diff --git a/keyboards/keyboardio/atreus/keymaps/kkokdae/config.h b/keyboards/keyboardio/atreus/keymaps/kkokdae/config.h
new file mode 100644
index 0000000000..f66f840bfd
--- /dev/null
+++ b/keyboards/keyboardio/atreus/keymaps/kkokdae/config.h
@@ -0,0 +1,27 @@
+/* Copyright 2022 kkokdae <kkokdae@me.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 PERMISSIVE_HOLD
+#define IGNORE_MOD_TAP_INTERRUPT
+#define TAPPING_TERM 200
+#define ONESHOT_TAP_TOGGLE 5
+#define ONESHOT_TIMEOUT 5000
+
+#define AUTO_SHIFT_DISABLED_AT_STARTUP
+#define AUTO_SHIFT_TIMEOUT 0
+#define NO_AUTO_SHIFT_SPECIAL
+#define NO_AUTO_SHIFT_NUMERIC
diff --git a/keyboards/keyboardio/atreus/keymaps/kkokdae/keymap.c b/keyboards/keyboardio/atreus/keymaps/kkokdae/keymap.c
new file mode 100644
index 0000000000..0110c64395
--- /dev/null
+++ b/keyboards/keyboardio/atreus/keymaps/kkokdae/keymap.c
@@ -0,0 +1,127 @@
+/* Copyright 2022 kkokdae <kkokdae@me.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 my_layers {
+ _COLEMAK,
+ _QWERTY,
+ _FUNC,
+ _NUMPAD,
+ _SYMBOL
+};
+
+enum my_tds {
+ TdH,
+ TdL
+};
+
+#define FUNC LT(_FUNC, KC_SPC)
+#define NUMPAD LT(_NUMPAD, KC_BSPC)
+#define DNUMPAD LT(_NUMPAD, KC_DEL)
+#define SYMBOL OSL(_SYMBOL)
+
+#define OSMCMD OSM(MOD_LGUI)
+#define OSMOPT OSM(MOD_LALT)
+#define OSMCTL OSM(MOD_LCTL)
+#define OSMSFT OSM(MOD_LSFT)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_COLEMAK] = LAYOUT(
+ KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
+ KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O,
+ KC_Z, KC_X, KC_C, KC_D, KC_V, _______, _______, KC_K, KC_H, KC_COMM, KC_DOT, KC_ENT,
+ OSMCMD, OSMOPT, OSMCTL, OSMSFT, FUNC, KC_TAB, KC_ESC, NUMPAD, SYMBOL, OSMCTL, OSMOPT, OSMCMD
+ ),
+
+ [_QWERTY] = 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_QUOT,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_ENT,
+ OSMCMD, OSMOPT, OSMCTL, OSMSFT, FUNC, KC_TAB, KC_ESC, NUMPAD, SYMBOL, OSMCTL, OSMOPT, OSMCMD
+ ),
+
+ [_FUNC] = LAYOUT(
+ KC_MRWD, KC_VOLU, KC_VOLD, KC_MFFD, KC_MPLY, KC_INS, KC_F7, KC_F8, KC_F9, KC_CAPS,
+ KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_BRIU, KC_F12, KC_F4, KC_F5, KC_F6, TD(TdL),
+ KC_HOME, KC_PGUP, KC_PGDN, KC_END, KC_BRID, _______, _______, KC_F10, KC_F1, KC_F2, KC_F3, KC_F11,
+ _______, _______, _______, KC_ASTG, _______, _______, _______, DNUMPAD, _______, _______, _______, _______
+ ),
+
+ [_NUMPAD] = LAYOUT(
+ _______, _______, _______, _______, _______, S(KC_E), KC_7, KC_8, KC_9, S(KC_F),
+ TD(TdL), KC_EQL, KC_ASTR, KC_PLUS, _______, S(KC_C), KC_4, KC_5, KC_6, S(KC_D),
+ TD(TdH), KC_DOT, KC_SLSH, KC_MINS, _______, _______, _______, S(KC_A), KC_1, KC_2, KC_3, S(KC_B),
+ _______, _______, _______, KC_ASTG, _______, _______, _______, _______, KC_0, _______, _______, _______
+ ),
+
+ [_SYMBOL] = LAYOUT(
+ KC_LCBR, KC_LBRC, KC_RBRC, KC_RCBR, KC_CIRC, KC_DLR, KC_BSLS, KC_PERC, KC_AT, KC_DQUO,
+ KC_QUES, KC_EXLM, KC_HASH, KC_ASTR, KC_AMPR, KC_PIPE, KC_MINS, KC_PLUS, KC_UNDS, KC_EQL,
+ KC_LT, KC_LPRN, KC_RPRN, KC_GT, KC_GRV, _______, _______, KC_TILD, KC_SLSH, C(KC_B), KC_COLN, KC_SCLN,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
+bool get_custom_auto_shifted_key(uint16_t keycode, keyrecord_t *record) {
+ switch(keycode) {
+ case KC_MINS:
+ case KC_UNDS:
+ case KC_BSPC:
+ return false;
+ }
+
+ switch(keycode & 0xFF) {
+ case KC_1 ... KC_UP:
+ autoshift_disable();
+ default:
+ return false;
+ }
+}
+
+void dance_hex(qk_tap_dance_state_t *state, void *user_data) {
+ switch(state->count) {
+ case 1:
+ SEND_STRING("0x");
+ break;
+ case 2:
+ SEND_STRING("\\x");
+ break;
+ }
+}
+
+void dance_lang(qk_tap_dance_state_t *state, void *user_data) {
+ uint32_t default_layer;
+ switch(state->count) {
+ case 1:
+ SEND_STRING(SS_LCTL(" ") SS_DELAY(200) SS_TAP(X_ENT));
+ case 2:
+ default_layer = get_highest_layer(default_layer_state);
+ if (default_layer == _COLEMAK) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ else if (default_layer == _QWERTY) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ break;
+ }
+}
+
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TdH] = ACTION_TAP_DANCE_FN(dance_hex),
+ [TdL] = ACTION_TAP_DANCE_FN(dance_lang)
+};
diff --git a/keyboards/keyboardio/atreus/keymaps/kkokdae/readme.md b/keyboards/keyboardio/atreus/keymaps/kkokdae/readme.md
new file mode 100644
index 0000000000..b67e31c49f
--- /dev/null
+++ b/keyboards/keyboardio/atreus/keymaps/kkokdae/readme.md
@@ -0,0 +1,7 @@
+# kkokdae keymap - Keyboardio Atreus
+
+This is the keymap available for keyboardio/atreus keyboards.
+
+The default layout used [Colemak Mod-DH](https://colemakmods.github.io/mod-dh/). The prefix keys for vim/tmux users. The symbol is designed for ease of use by programmers.
+
+It used the idea of [Caps Work Behavior](https://zmk.dev/docs/behaviors/caps-word) by ZMK Firmware. I want to officially add this feature to QMK in the future
diff --git a/keyboards/keyboardio/atreus/keymaps/kkokdae/rules.mk b/keyboards/keyboardio/atreus/keymaps/kkokdae/rules.mk
new file mode 100644
index 0000000000..d24c14122a
--- /dev/null
+++ b/keyboards/keyboardio/atreus/keymaps/kkokdae/rules.mk
@@ -0,0 +1,3 @@
+MOUSEKEY_ENABLE = no
+TAP_DANCE_ENABLE = yes
+AUTO_SHIFT_ENABLE = yes
diff --git a/keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h b/keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h
index 3de799f942..4251834da2 100644
--- a/keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/keyboardio/atreus/keymaps/replicaJunction/keymap.c b/keyboards/keyboardio/atreus/keymaps/replicaJunction/keymap.c
index 9e47155f44..2d4685c53a 100644
--- a/keyboards/keyboardio/atreus/keymaps/replicaJunction/keymap.c
+++ b/keyboards/keyboardio/atreus/keymaps/replicaJunction/keymap.c
@@ -67,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[L_FN] = LAYOUT(
_______,_______,_______,_______,_______, KC_VOLU,KC_F9, KC_F10, KC_F11, KC_F12,
_______,_______,_______,_______,_______, KC_MUTE,KC_F5, KC_F6, KC_F7, KC_F8,
- _______,K_SECR1,K_SECR2,K_SECR3,K_SECR4,MS_JIGL,RESET, KC_VOLD,KC_F1, KC_F2, KC_F3, KC_F4,
+ _______,K_SECR1,K_SECR2,K_SECR3,K_SECR4,MS_JIGL,QK_BOOT, KC_VOLD,KC_F1, KC_F2, KC_F3, KC_F4,
DF_TYPE,DF_GAME,_______,_______,_______,KC_LCTL,KC_LALT,_______,_______,_______,_______,ooooooo
),
diff --git a/keyboards/keyboardio/atreus/keymaps/xyverz/keymap.c b/keyboards/keyboardio/atreus/keymaps/xyverz/keymap.c
index 2bd30bc586..9d7dc826fb 100644
--- a/keyboards/keyboardio/atreus/keymaps/xyverz/keymap.c
+++ b/keyboards/keyboardio/atreus/keymaps/xyverz/keymap.c
@@ -167,13 +167,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|------+------+------+------+------+------.,------+------+------+------+------+------|
| |QWERTY|COLEMK|DVORAK|DVORMC| || | | | | | |
|------+------+------+------+------+------||------+------+------+------+------+------|
- | | | | | | || | | | | | RESET|
+ | | | | | | || | | | | | QK_BOOT|
`-----------------------------------------'`-----------------------------------------'*/
[_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_PSCR, KC_SLCK, KC_PAUS, KC_F12 ,
_______, QWERTY, COLEMAK, DVORAK, DVORMAC, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT
),
};
diff --git a/keyboards/keyboardio/model01/config.h b/keyboards/keyboardio/model01/config.h
index 30538c56f1..2bb5cb7386 100644
--- a/keyboards/keyboardio/model01/config.h
+++ b/keyboards/keyboardio/model01/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1209
-#define PRODUCT_ID 0x2301
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Keyboardio
-#define PRODUCT Model 01
-
/* key matrix size; rows are doubled for split */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
diff --git a/keyboards/keyboardio/model01/info.json b/keyboards/keyboardio/model01/info.json
index e934a7b66d..a99ab953c7 100644
--- a/keyboards/keyboardio/model01/info.json
+++ b/keyboards/keyboardio/model01/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "model01",
+ "keyboard_name": "Model 01",
+ "manufacturer": "Keyboardio",
"url": "https://keyboard.io",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0x2301",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keyboardio/model01/keymaps/dshields/keymap.c b/keyboards/keyboardio/model01/keymaps/dshields/keymap.c
index 04887124f9..2d257fe371 100644
--- a/keyboards/keyboardio/model01/keymaps/dshields/keymap.c
+++ b/keyboards/keyboardio/model01/keymaps/dshields/keymap.c
@@ -3,9 +3,9 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DEF] = LAYOUT(
- RESET , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______,
+ QK_BOOT, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______,
KC_GRV , KC_Q , KC_W , KC_E , KC_R , KC_T , RGB_TOG, DM_REC1, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_EQL ,
- KC_PGUP, KC_A , KC_S , KC_D , KC_F , KC_G , KC_TAB , KC_ENT , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT,
+ KC_PGUP, MT_A , MT_S , MT_D , MT_F , KC_G , KC_TAB , KC_ENT , KC_H , MT_J , MT_K , MT_L , MT_SCLN, KC_QUOT,
KC_PGDN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_ESC , DM_PLY1, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_MINS,
OSMLCTL, OSMRCTL,
KC_BSPC, KC_SPC ,
diff --git a/keyboards/keyboardio/model01/keymaps/tw1t611/keymap.c b/keyboards/keyboardio/model01/keymaps/tw1t611/keymap.c
index 3171dd36f9..900a3f29aa 100644
--- a/keyboards/keyboardio/model01/keymaps/tw1t611/keymap.c
+++ b/keyboards/keyboardio/model01/keymaps/tw1t611/keymap.c
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 ,
DE_CIRC, DE_QUOT, DE_DQUO, DE_LCBR, DE_RCBR, DE_GRV , RGB_TOG, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END , DE_EQL , DE_PERC,
DE_TILD, DE_EXLM, DE_DLR , DE_LPRN, DE_RPRN, DE_AMPR, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, DE_QUES, DE_ASTR,
- DE_BSLS, DE_HASH, DE_LABK, DE_LBRC, DE_RBRC, DE_RABK, _______, RESET , DE_AT , DE_EURO, DE_SCLN, DE_COLN, DE_UNDS, DE_PLUS,
+ DE_BSLS, DE_HASH, DE_LABK, DE_LBRC, DE_RBRC, DE_RABK, _______, QK_BOOT, DE_AT , DE_EURO, DE_SCLN, DE_COLN, DE_UNDS, DE_PLUS,
_______, _______,
_______, _______,
_______, _______,
diff --git a/keyboards/keycapsss/kimiko/info.json b/keyboards/keycapsss/kimiko/info.json
deleted file mode 100644
index 7b3749f503..0000000000
--- a/keyboards/keycapsss/kimiko/info.json
+++ /dev/null
@@ -1,75 +0,0 @@
-{
- "keyboard_name": "Kimiko",
- "url": "https://keycapsss.com",
- "maintainer": "@ben_roe Keycapsss",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"x":0, "y":0.8},
- {"x":1, "y":0.8},
- {"x":2, "y":0.15},
- {"x":3, "y":0},
- {"x":4, "y":0.15},
- {"x":5, "y":0.3},
- {"x":9, "y":0.3},
- {"x":10, "y":0.15},
- {"x":11, "y":0},
- {"x":12, "y":0.15},
- {"x":13, "y":0.8},
- {"x":14, "y":0.8},
-
- {"x":0, "y":1.8},
- {"x":1, "y":1.8},
- {"x":2, "y":1.15},
- {"x":3, "y":1},
- {"x":4, "y":1.15},
- {"x":5, "y":1.3},
- {"x":9, "y":1.3},
- {"x":10, "y":1.15},
- {"x":11, "y":1},
- {"x":12, "y":1.15},
- {"x":13, "y":1.8},
- {"x":14, "y":1.8},
-
- {"x":0, "y":2.8},
- {"x":1, "y":2.8},
- {"x":2, "y":2.15},
- {"x":3, "y":2},
- {"x":4, "y":2.15},
- {"x":5, "y":2.3},
- {"x":9, "y":2.3},
- {"x":10, "y":2.15},
- {"x":11, "y":2},
- {"x":12, "y":2.15},
- {"x":13, "y":2.8},
- {"x":14, "y":2.8},
-
- {"x":0, "y":3.8},
- {"x":1, "y":3.8},
- {"x":2, "y":3.15},
- {"x":3, "y":3},
- {"x":4, "y":3.15},
- {"x":5, "y":3.3},
- {"x":6.25, "y":3.3},
- {"x":7.75, "y":3.3},
- {"x":9, "y":3.3},
- {"x":10, "y":3.15},
- {"x":11, "y":3},
- {"x":12, "y":3.15},
- {"x":13, "y":3.8},
- {"x":14, "y":3.8},
-
- {"x":2, "y":4.15},
- {"x":3, "y":4},
- {"x":4, "y":4.15},
- {"x":5.25, "y":4.3},
- {"x":6.25, "y":4.25, "h":1.5},
- {"x":7.75, "y":4.25, "h":1.5},
- {"x":8.75, "y":4.3},
- {"x":10, "y":4.15},
- {"x":11, "y":4},
- {"x":12, "y":4.15}
- ]
- }
- }
-}
diff --git a/keyboards/keycapsss/kimiko/keymaps/default/keymap.c b/keyboards/keycapsss/kimiko/keymaps/default/keymap.c
index 7e767852f6..613041e858 100644
--- a/keyboards/keycapsss/kimiko/keymaps/default/keymap.c
+++ b/keyboards/keycapsss/kimiko/keymaps/default/keymap.c
@@ -332,78 +332,13 @@ bool oled_task_user(void) {
#endif
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_UP, KC_DOWN), ENCODER_CCW_CW(KC_RGHT, KC_LEFT) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_TAB, RGB_HUI), ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
+ [_RAISE] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
+ [_ADJUST] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(RGB_HUI, RGB_HUD) },
+};
+#endif // ENCODER_MAP_ENABLE
+
-#ifdef ENCODER_ENABLE
-bool encoder_update_user(uint8_t index, bool clockwise) {
- // Encoder on master side
- if (index == 0) {
- switch (get_highest_layer(layer_state)) {
- // If the Default (QWERTY) layer is active
- case _QWERTY:
- // Arrow Up/Down
- if (clockwise) {
- tap_code(KC_DOWN);
- } else {
- tap_code(KC_UP);
- }
- break;
-
- // If the RAISE layer is active
- case _RAISE:
- // Switch browser tabs
- if (clockwise) {
- tap_code16(LCTL(KC_TAB));
- } else {
- tap_code16(RCS(KC_TAB));
- }
- break;
- // If the ADJUST layer is active
- case _ADJUST:
- // RGB brightness up/down
- if (clockwise) {
- rgblight_decrease_val(); // tap_code(RGB_VAD);
- } else {
- rgblight_increase_val(); // tap_code(RGB_VAI);
- }
- break;
- }
- }
- // Encoder on slave side
- else if (index == 1) {
- switch (get_highest_layer(layer_state)) {
- // If the Default (QWERTY) layer is active
- case _QWERTY:
- // Scroll by Word
- if (clockwise) {
- tap_code16(LCTL(KC_RGHT));
- } else {
- tap_code16(LCTL(KC_LEFT));
- }
- break;
-
- // If the LOWER layer is active
- case _LOWER:
- // Volume up/down
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- break;
-
- // If the ADJUST layer is active
- case _ADJUST:
- // RGB hue up/down
- if (clockwise) {
- // tap_code(RGB_HUI);
- rgblight_increase_hue();
- } else {
- // tap_code(RGB_HUD);
- rgblight_decrease_hue();
- }
- break;
- }
- }
- return true;
-}
-#endif // ENCODER_ENABLE
diff --git a/keyboards/keycapsss/kimiko/keymaps/default/rules.mk b/keyboards/keycapsss/kimiko/keymaps/default/rules.mk
index 5dc0c64072..75655f2bd5 100644
--- a/keyboards/keycapsss/kimiko/keymaps/default/rules.mk
+++ b/keyboards/keycapsss/kimiko/keymaps/default/rules.mk
@@ -7,3 +7,5 @@ RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
# Reduce compiled size, but will automatically disable the legacy TMK Macros and Functions features.
# This does not affect QMK Macros and Layers
LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
diff --git a/keyboards/keycapsss/kimiko/keymaps/oriaj3/config.h b/keyboards/keycapsss/kimiko/keymaps/oriaj3/config.h
new file mode 100644
index 0000000000..5e91a21c73
--- /dev/null
+++ b/keyboards/keycapsss/kimiko/keymaps/oriaj3/config.h
@@ -0,0 +1,75 @@
+/* Copyright 2019 MechMerlin
+ * Copyright 2020 @ben_roe (keycapsss.com)
+ * Copyright 2022 @oriaj3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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
+
+#define OLED_FONT_H "keyboards/keycapsss/kimiko/keymaps/rgb_matrix/glcdfont.c"
+// #define OLED_FONT_WIDTH 5
+// #define OLED_FONT_HEIGHT 7
+
+
+#ifdef RGB_MATRIX_ENABLE
+
+// The pin connected to the data pin of the LEDs
+#define RGB_DI_PIN D3
+// The number of LEDs connected
+#define DRIVER_LED_TOTAL 60
+#define RGBLED_NUM 60
+#define RGB_MATRIX_SPLIT {30,30}
+#define SPLIT_LAYER_STATE_ENABLE
+#define SPLIT_TRANSPORT_MIRROR
+
+
+# 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 80 // limits maximum brightness of LEDs to 80 out of 255. Higher may cause the controller to crash.
+# define RGB_MATRIX_HUE_STEP 8
+# define RGB_MATRIX_SAT_STEP 8
+# define RGB_MATRIX_VAL_STEP 8
+# define RGB_MATRIX_SPD_STEP 10
+
+
+
+// ENABLES EFFECTS. See alls the effects -> https://github.com/samhocevar-forks/qmk-firmware/blob/master/docs/feature_rgb_matrix.md#rgb-matrix-effects
+# define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 50
+# define ENABLE_RGB_MATRIX_BAND_SPLIT
+# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+//# 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
+# define ENABLE_RGB_MATRIX_SPLASH
+#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/keycapsss/kimiko/keymaps/oriaj3/glcdfont.c b/keyboards/keycapsss/kimiko/keymaps/oriaj3/glcdfont.c
new file mode 100644
index 0000000000..ff2f3bdcd5
--- /dev/null
+++ b/keyboards/keycapsss/kimiko/keymaps/oriaj3/glcdfont.c
@@ -0,0 +1,251 @@
+/* Copyright 2019 MechMerlin
+ * Copyright 2020 @ben_roe (keycapsss.com)
+ * Copyright 2022 @oriaj3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You 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"
+
+// Corne 8x6 font
+// Online editor: https://helixfonteditor.netlify.com
+// or https://joric.github.io/qle/
+// See also: https://github.com/soundmonster/glcdfont_converter
+
+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, 0x13, 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, 0xF8, 0x04, 0x22, 0x52, 0xE2,
+ 0x42, 0x42, 0x42, 0xE2, 0x52, 0x22,
+ 0x22, 0x22, 0x42, 0x82, 0x02, 0x02,
+ 0x22, 0x22, 0x02, 0x04, 0xF8, 0x00,
+ 0x00, 0xF8, 0x04, 0x02, 0x02, 0x82,
+ 0x42, 0x22, 0x42, 0x82, 0x02, 0x02,
+ 0x02, 0x82, 0x42, 0x22, 0x12, 0x22,
+ 0x42, 0x82, 0x02, 0x04, 0xF8, 0x00,
+ 0x00, 0xF8, 0xFC, 0xDE, 0xAE, 0x1E,
+ 0xBE, 0xBE, 0xBE, 0x1E, 0xAE, 0xDE,
+ 0xDE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE,
+ 0xDE, 0xDE, 0xFE, 0xFC, 0xF8, 0x00,
+ 0x00, 0xF8, 0xFC, 0xFE, 0xFE, 0x7E,
+ 0xBE, 0xDE, 0xBE, 0x7E, 0xFE, 0xFE,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x80, 0x40, 0x40, 0x20, 0x20,
+ 0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
+ 0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
+ 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0,
+ 0xF0, 0xF0, 0xF8, 0xF8, 0xF0, 0xF0,
+ 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80,
+ 0x80, 0x80, 0x40, 0x40, 0x20, 0x20,
+ 0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
+ 0x20, 0x20, 0x40, 0x40, 0x80, 0x80,
+ 0x80, 0x80, 0x40, 0xC0, 0x60, 0xA0,
+ 0x50, 0xB0, 0x58, 0xA8, 0x50, 0xB0,
+ 0x60, 0xA0, 0x40, 0xC0, 0x80, 0x80,
+ 0x1F, 0x1F, 0x0E, 0x1B, 0x11, 0xC0,
+ 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x06,
+ 0x0C, 0xC6, 0x1F, 0x1F, 0x80, 0x5F,
+ 0x1F, 0x00, 0x1F, 0x1F, 0x8E, 0x9B,
+ 0x91, 0x80, 0x9F, 0x9F, 0x91, 0x1F,
+ 0x00, 0x1F, 0x20, 0x44, 0x4A, 0x47,
+ 0x42, 0x42, 0x42, 0x47, 0x4A, 0x44,
+ 0x40, 0x40, 0x40, 0x40, 0x41, 0x42,
+ 0x44, 0x44, 0x40, 0x20, 0x1F, 0x00,
+ 0x00, 0x1F, 0x20, 0x40, 0x41, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x41, 0x40,
+ 0x41, 0x41, 0x4F, 0x48, 0x48, 0x48,
+ 0x4F, 0x41, 0x41, 0x20, 0x1F, 0x00,
+ 0x00, 0x1F, 0x3F, 0x7B, 0x75, 0x78,
+ 0x7D, 0x7D, 0x7D, 0x78, 0x75, 0x7B,
+ 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7D,
+ 0x7B, 0x7B, 0x7F, 0x3F, 0x1F, 0x00,
+ 0x00, 0x1F, 0x3F, 0x7F, 0x7E, 0x7F,
+ 0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x88, 0x88, 0x5D, 0x5D, 0x3E, 0x3E,
+ 0x7C, 0x7C, 0xF8, 0xF8, 0x7C, 0x7C,
+ 0x3E, 0x3E, 0x5D, 0x5D, 0x88, 0x88,
+ 0x88, 0x88, 0x55, 0x55, 0x23, 0x23,
+ 0x47, 0x47, 0x8F, 0x8F, 0x47, 0x47,
+ 0x23, 0x23, 0x55, 0x55, 0x88, 0x88,
+ 0x88, 0x88, 0xD5, 0xD5, 0xE2, 0xE2,
+ 0xC4, 0xC4, 0x88, 0x88, 0xC4, 0xC4,
+ 0xE2, 0xE2, 0xD5, 0xD5, 0x88, 0x88,
+ 0x88, 0x88, 0x5D, 0xD5, 0x6B, 0xB6,
+ 0x6D, 0xD6, 0xAD, 0xDA, 0x6D, 0xD6,
+ 0x6B, 0xB6, 0x5D, 0xD5, 0x88, 0x88,
+ 0x00, 0x84, 0x87, 0x7D, 0x55, 0x57,
+ 0x55, 0x7D, 0x87, 0x84, 0x00, 0x91,
+ 0x95, 0x55, 0x55, 0x3F, 0x55, 0x55,
+ 0x95, 0x91, 0x00, 0x08, 0x08, 0x08,
+ 0x88, 0xFC, 0x0A, 0x09, 0x08, 0x08,
+ 0x04, 0xF8, 0x00, 0x00, 0xF8, 0x04,
+ 0x20, 0x1F, 0x00, 0x00, 0x1F, 0x20,
+ 0xFC, 0xF8, 0x00, 0x00, 0xF8, 0x04,
+ 0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x20,
+ 0x04, 0xF8, 0x00, 0x00, 0xF8, 0xFC,
+ 0x20, 0x1F, 0x00, 0x00, 0x1F, 0x3F,
+ 0xFC, 0xF8, 0x00, 0x00, 0xF8, 0xFC,
+ 0x3F, 0x1F, 0x00, 0x00, 0x1F, 0x3F,
+ 0xFE, 0x7E, 0xBE, 0xDE, 0xEE, 0xDE,
+ 0xBE, 0x7E, 0xFE, 0xFC, 0xF8, 0x00,
+ 0x7E, 0x7E, 0x70, 0x77, 0x77, 0x77,
+ 0x70, 0x7E, 0x7E, 0x3F, 0x1F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0x01, 0x01, 0x02, 0x02,
+ 0x04, 0x04, 0x08, 0x08, 0x04, 0x04,
+ 0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x01, 0x03, 0x03,
+ 0x07, 0x07, 0x0F, 0x0F, 0x07, 0x07,
+ 0x03, 0x03, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x01, 0x03, 0x02,
+ 0x05, 0x06, 0x0D, 0x0A, 0x05, 0x06,
+ 0x03, 0x02, 0x01, 0x01, 0x00, 0x00,
+};
diff --git a/keyboards/keycapsss/kimiko/keymaps/oriaj3/keymap.c b/keyboards/keycapsss/kimiko/keymaps/oriaj3/keymap.c
new file mode 100644
index 0000000000..fa90c8cce8
--- /dev/null
+++ b/keyboards/keycapsss/kimiko/keymaps/oriaj3/keymap.c
@@ -0,0 +1,413 @@
+/* Copyright 2019 Leo Batyuk
+ * Copyright 2020 Drashna Jaelre <@drashna>
+ * Copyright 2020 @ben_roe (keycapsss.com)
+ * Copyright 2022 @oriaj3
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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,
+ _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 | - |
+ * |---------+------+------+------+------+------| |------+------+------+------+------+-----------|
+ * | LShift | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
+ * |---------+------+------+------+------+------| [ | | ] |------+------+------+------+------+-----------|
+ * | LCTRL | Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift/Enter|
+ * `-------------------------------------------| / \ \-----------------------------------------------'
+ * | LCTRL| LGUI | LALT |LOWER| Space / \Enter \ |RAISE |BackSP| RGUI | RALT |
+ * `----------------------------------' '------------------------------------'
+ */
+
+ [_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_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_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_ENT),
+ KC_LCTL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC, KC_RGUI, KC_RALT
+),
+/* LOWER
+ * ,-------------------------------------------. ,-----------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | ~ |
+ * |--------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * | | | | | | |-------| |-------| | _ | + | { | } | \ |
+ * `-------------------------------------------| / \ \-----------------------------------------------'
+ * | LCTRL| LGUI | LALT |LOWER| Space / \Enter \ |RAISE |BackSP| RGUI | RALT |
+ * `----------------------------------' '------------------------------------'
+ */
+
+[_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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, 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_BSLS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+/* 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| LGUI | LALT |LOWER| Space / \Enter \ |RAISE |BackSP| RGUI | RALT |
+ * `----------------------------------' '------------------------------------'
+ */
+
+[_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 (Press LOWER and RAISE together)
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * |QK_BOOT | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * |RGB ON| HUE+ | SAT+ | VAL+ | | | | PREV | PLAY | NEXT | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | MODE | HUE- | SAT- | VAL- | | |-------. ,-------| VOL+ | MUTE | VOL- | | | |
+ * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * | | | | | | |-------| |-------| | | | | | |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * |LCTRL| LGUI | LALT |LOWER| Space / \Enter \ |RAISE |BackSP| RGUI | RALT |
+ * `----------------------------------' '------------------------------------'
+ */
+
+[_ADJUST] = LAYOUT(
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, KC_VOLU, KC_MUTE, KC_VOLD, 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) {
+ state = update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
+ return state;
+}
+
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ } else {
+ return OLED_ROTATION_270;
+ }
+}
+
+void render_space(void) {
+ oled_write_P(PSTR(" "), false);
+}
+
+void render_mod_status_gui_alt(uint8_t modifiers) {
+ static const char PROGMEM gui_off_1[] = {0x85, 0x86, 0};
+ static const char PROGMEM gui_off_2[] = {0xa5, 0xa6, 0};
+ static const char PROGMEM gui_on_1[] = {0x8d, 0x8e, 0};
+ static const char PROGMEM gui_on_2[] = {0xad, 0xae, 0};
+
+ static const char PROGMEM alt_off_1[] = {0x87, 0x88, 0};
+ static const char PROGMEM alt_off_2[] = {0xa7, 0xa8, 0};
+ static const char PROGMEM alt_on_1[] = {0x8f, 0x90, 0};
+ static const char PROGMEM alt_on_2[] = {0xaf, 0xb0, 0};
+
+ // fillers between the modifier icons bleed into the icon frames
+ static const char PROGMEM off_off_1[] = {0xc5, 0};
+ static const char PROGMEM off_off_2[] = {0xc6, 0};
+ static const char PROGMEM on_off_1[] = {0xc7, 0};
+ static const char PROGMEM on_off_2[] = {0xc8, 0};
+ static const char PROGMEM off_on_1[] = {0xc9, 0};
+ static const char PROGMEM off_on_2[] = {0xca, 0};
+ static const char PROGMEM on_on_1[] = {0xcb, 0};
+ static const char PROGMEM on_on_2[] = {0xcc, 0};
+
+ if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(gui_on_1, false);
+ } else {
+ oled_write_P(gui_off_1, false);
+ }
+
+ if ((modifiers & MOD_MASK_GUI) && (modifiers & MOD_MASK_ALT)) {
+ oled_write_P(on_on_1, false);
+ } else if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(on_off_1, false);
+ } else if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(off_on_1, false);
+ } else {
+ oled_write_P(off_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(alt_on_1, false);
+ } else {
+ oled_write_P(alt_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(gui_on_2, false);
+ } else {
+ oled_write_P(gui_off_2, false);
+ }
+
+ if (modifiers & MOD_MASK_GUI & MOD_MASK_ALT) {
+ oled_write_P(on_on_2, false);
+ } else if(modifiers & MOD_MASK_GUI) {
+ oled_write_P(on_off_2, false);
+ } else if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(off_on_2, false);
+ } else {
+ oled_write_P(off_off_2, false);
+ }
+
+ if(modifiers & MOD_MASK_ALT) {
+ oled_write_P(alt_on_2, false);
+ } else {
+ oled_write_P(alt_off_2, false);
+ }
+}
+
+void render_mod_status_ctrl_shift(uint8_t modifiers) {
+ static const char PROGMEM ctrl_off_1[] = {0x89, 0x8a, 0};
+ static const char PROGMEM ctrl_off_2[] = {0xa9, 0xaa, 0};
+ static const char PROGMEM ctrl_on_1[] = {0x91, 0x92, 0};
+ static const char PROGMEM ctrl_on_2[] = {0xb1, 0xb2, 0};
+
+ static const char PROGMEM shift_off_1[] = {0x8b, 0x8c, 0};
+ static const char PROGMEM shift_off_2[] = {0xab, 0xac, 0};
+ static const char PROGMEM shift_on_1[] = {0xcd, 0xce, 0};
+ static const char PROGMEM shift_on_2[] = {0xcf, 0xd0, 0};
+
+ // fillers between the modifier icons bleed into the icon frames
+ static const char PROGMEM off_off_1[] = {0xc5, 0};
+ static const char PROGMEM off_off_2[] = {0xc6, 0};
+ static const char PROGMEM on_off_1[] = {0xc7, 0};
+ static const char PROGMEM on_off_2[] = {0xc8, 0};
+ static const char PROGMEM off_on_1[] = {0xc9, 0};
+ static const char PROGMEM off_on_2[] = {0xca, 0};
+ static const char PROGMEM on_on_1[] = {0xcb, 0};
+ static const char PROGMEM on_on_2[] = {0xcc, 0};
+
+ if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(ctrl_on_1, false);
+ } else {
+ oled_write_P(ctrl_off_1, false);
+ }
+
+ if ((modifiers & MOD_MASK_CTRL) && (modifiers & MOD_MASK_SHIFT)) {
+ oled_write_P(on_on_1, false);
+ } else if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(on_off_1, false);
+ } else if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(off_on_1, false);
+ } else {
+ oled_write_P(off_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(shift_on_1, false);
+ } else {
+ oled_write_P(shift_off_1, false);
+ }
+
+ if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(ctrl_on_2, false);
+ } else {
+ oled_write_P(ctrl_off_2, false);
+ }
+
+ if (modifiers & MOD_MASK_CTRL & MOD_MASK_SHIFT) {
+ oled_write_P(on_on_2, false);
+ } else if(modifiers & MOD_MASK_CTRL) {
+ oled_write_P(on_off_2, false);
+ } else if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(off_on_2, false);
+ } else {
+ oled_write_P(off_off_2, false);
+ }
+
+ if(modifiers & MOD_MASK_SHIFT) {
+ oled_write_P(shift_on_2, false);
+ } else {
+ oled_write_P(shift_off_2, false);
+ }
+}
+
+void render_logo(void) {
+ static const char PROGMEM corne_logo[] = {
+ 0xA0, 0xA1, 0xA2, 0xA3, 0xA4,
+ 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0};
+ oled_write_P(corne_logo, false);
+ // oled_write_P(PSTR("Kimiko"), false);
+}
+
+void render_layer_state(void) {
+ static const char PROGMEM default_layer[] = {
+ 0x20, 0x94, 0x95, 0x96, 0x20,
+ 0x20, 0xb4, 0xb5, 0xb6, 0x20,
+ 0x20, 0xd4, 0xd5, 0xd6, 0x20, 0};
+ static const char PROGMEM raise_layer[] = {
+ 0x20, 0x97, 0x98, 0x99, 0x20,
+ 0x20, 0xb7, 0xb8, 0xb9, 0x20,
+ 0x20, 0xd7, 0xd8, 0xd9, 0x20, 0};
+ static const char PROGMEM lower_layer[] = {
+ 0x20, 0x9a, 0x9b, 0x9c, 0x20,
+ 0x20, 0xba, 0xbb, 0xbc, 0x20,
+ 0x20, 0xda, 0xdb, 0xdc, 0x20, 0};
+ static const char PROGMEM adjust_layer[] = {
+ 0x20, 0x9d, 0x9e, 0x9f, 0x20,
+ 0x20, 0xbd, 0xbe, 0xbf, 0x20,
+ 0x20, 0xdd, 0xde, 0xdf, 0x20, 0};
+ if(layer_state_is(_ADJUST)) {
+ oled_write_P(adjust_layer, false);
+ } else if(layer_state_is(_LOWER)) {
+ oled_write_P(lower_layer, false);
+ } else if(layer_state_is(_RAISE)) {
+ oled_write_P(raise_layer, false);
+ } else {
+ oled_write_P(default_layer, false);
+ }
+}
+
+void render_status_main(void) {
+ render_space();
+ render_space();
+ 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) {
+ render_space();
+ render_space();
+ render_logo();
+ render_space();
+}
+
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
+ render_status_main(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
+ } else {
+ render_status_secondary();
+ }
+ return false;
+}
+
+#endif
+
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ // Encoder on master side
+ if (index == 0) {
+ switch (get_highest_layer(layer_state)) {
+ // If the Default (QWERTY) layer is active
+ case _QWERTY:
+ // Arrow Up/Down
+ if (clockwise) {
+ tap_code(KC_DOWN);
+ } else {
+ tap_code(KC_UP);
+ }
+ break;
+
+ // If the RAISE layer is active
+ case _RAISE:
+ // Switch browser tabs
+ if (clockwise) {
+ tap_code16(LCTL(KC_TAB));
+ } else {
+ tap_code16(RCS(KC_TAB));
+ }
+ break;
+ // If the ADJUST layer is active
+ case _ADJUST:
+ // RGB brightness up/down
+ if (clockwise) {
+ rgblight_decrease_val(); // tap_code(RGB_VAD);
+ } else {
+ rgblight_increase_val(); // tap_code(RGB_VAI);
+ }
+ break;
+ }
+ }
+ // Encoder on slave side
+ else if (index == 1) {
+ switch (get_highest_layer(layer_state)) {
+ // If the Default (QWERTY) layer is active
+ case _QWERTY:
+ // Scroll by Word
+ if (clockwise) {
+ tap_code16(LCTL(KC_RGHT));
+ } else {
+ tap_code16(LCTL(KC_LEFT));
+ }
+ break;
+
+ // If the LOWER layer is active
+ case _LOWER:
+ // Volume up/down
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ break;
+
+ // If the ADJUST layer is active
+ case _ADJUST:
+ // RGB hue up/down
+ if (clockwise) {
+ // tap_code(RGB_HUI);
+ rgblight_increase_hue();
+ } else {
+ // tap_code(RGB_HUD);
+ rgblight_decrease_hue();
+ }
+ break;
+ }
+ }
+ return false;
+}
+#endif // ENCODER_ENABLE
+
+
+
diff --git a/keyboards/keycapsss/kimiko/keymaps/oriaj3/rules.mk b/keyboards/keycapsss/kimiko/keymaps/oriaj3/rules.mk
new file mode 100644
index 0000000000..0229490d44
--- /dev/null
+++ b/keyboards/keycapsss/kimiko/keymaps/oriaj3/rules.mk
@@ -0,0 +1,21 @@
+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 # Disable keyboard RGB underglow
+
+# LTO: Link Time Optimizations.
+# Reduce compiled size, but will automatically disable the legacy TMK Macros and Functions features.
+# This does not affect QMK Macros and Layers
+LTO_ENABLE = yes
+
+#ENABLE RGB MATRIX WITH DRIVER WS2812
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+
+#DEFINE SPLIT KEYBOARD AND SPLIT TRANSPORT MIRROR
+SPLIT_KEYBOARD = yes
+
+#DEACTIVATED FOR MEMORY SAVING
+MOUSEKEY_ENABLE = no
+CONSOLE_ENABLE = no
+
diff --git a/keyboards/keycapsss/kimiko/kimiko.c b/keyboards/keycapsss/kimiko/kimiko.c
index 6d44d45333..c35cb62544 100644
--- a/keyboards/keycapsss/kimiko/kimiko.c
+++ b/keyboards/keycapsss/kimiko/kimiko.c
@@ -15,3 +15,64 @@
*/
#include "kimiko.h"
+#ifdef RGB_MATRIX_ENABLE
+
+//Thanks to Ben (keycapsss) for helpipng me to create g_led_config
+
+// Physical LED position
+// X 0 16 32 48 64 80 96 112 128 144 160 176 208 224
+// -----------------------------------------------------------| Y
+// 5 4 3 2 1 0 0 1 2 3 4 5 | 0
+// 6 7 8 9 10 11 11 10 9 8 7 6 | 16
+// 17 16 15 14 13 12 12 13 14 15 16 17 | 32
+// 18 19 20 21 22 23 24 24 23 22 21 20 19 18 | 48
+// 29 28 27 26 25 25 26 27 28 29 | 64
+
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { 5, 4, 3, 2, 1, 0 },
+ { 6, 7, 8, 9, 10, 11 },
+ { 17, 16, 15, 14, 13, 12 },
+ { 18, 19, 20, 21, 22, 23 },
+ { 29, 28, 27, 26, 25, 24 },
+ { 35, 34, 33, 32, 31, 30 },
+ { 36, 37, 38, 39, 40, 41 },
+ { 47, 46, 45, 44, 43, 42 },
+ { 48, 49, 50, 51, 52, 53 },
+ { 59, 58, 57, 56, 55, 54 }
+}, {
+ // LED Index to Physical Position
+ // Left half
+ { 80, 0 }, { 64, 0 }, { 48, 0 }, { 32, 0 }, { 16, 0 }, { 0, 0 },
+ { 0, 16 }, { 16, 16 }, { 32, 16 }, { 48, 16 }, { 64, 16 }, { 80, 16 },
+ { 80, 32 }, { 64, 32 }, { 48, 32 }, { 32, 32 }, { 16, 32 }, { 0, 32 },
+ { 0, 48 }, { 16, 48 }, { 32, 48 }, { 48, 48 }, { 64, 48 }, { 80, 48 },
+ { 96, 48 }, { 96, 64 }, { 80, 64 }, { 64, 64 }, { 48, 64 }, { 32, 64 },
+ // Right half
+ { 128, 0 }, { 144, 0 }, { 160, 0 }, { 176, 0 }, { 208, 0 }, { 224, 0 },
+ { 224, 16 }, { 208, 16 }, { 176, 16 }, { 160, 16 }, { 144, 16 }, { 128, 16 },
+ { 128, 32 }, { 144, 32 }, { 160, 32 }, { 176, 32 }, { 208, 32 }, { 224, 32 },
+ { 224, 48 }, { 208, 48 }, { 176, 48 }, { 160, 48 }, { 144, 48 }, { 128, 48 },
+ { 112, 48 }, { 112, 64 }, { 128, 64 }, { 144, 64 }, { 160, 64 }, { 176, 64 }
+
+}, {
+ // LED Index to Flag
+ // 0x01 = 1 = modifier key
+ // 0x02 = 2 = underglow
+ // 0x04 = 4 = key backlight
+ // 0x08 = 8 = keyboard state indication
+ // Left half
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 1,
+ 4, 4, 4, 4, 4, 1,
+ 4, 4, 1, 1, 1, 1,
+ // Right half
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4,
+ 1, 4, 4, 4, 4, 4,
+ 4, 4, 1, 1, 1, 1
+} };
+
+#endif // RGB_MATRIX_ENABLE \ No newline at end of file
diff --git a/keyboards/keycapsss/kimiko/kimiko.h b/keyboards/keycapsss/kimiko/kimiko.h
index a67496eb50..948f397a90 100644
--- a/keyboards/keycapsss/kimiko/kimiko.h
+++ b/keyboards/keycapsss/kimiko/kimiko.h
@@ -15,25 +15,8 @@
*/
#pragma once
-#include "quantum.h"
-
-#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, L40, R40, R30, R31, R32, R33, R34, R35, \
- L41, L42, L43, L44, L45, 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 }, \
- { L41, L42, L43, L44, L45, L40 }, \
- { 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 } \
- }
+#ifdef KEYBOARD_keycapsss_kimiko_rev1
+# include "rev1.h"
+#endif
+#include "quantum.h"
diff --git a/keyboards/keycapsss/kimiko/rev1/config.h b/keyboards/keycapsss/kimiko/rev1/config.h
index 502eaa1e4a..5ba2fd4abf 100644
--- a/keyboards/keycapsss/kimiko/rev1/config.h
+++ b/keyboards/keycapsss/kimiko/rev1/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7983
-#define PRODUCT_ID 0x4B69 //Ki
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Keycapsss
-#define PRODUCT Kimiko
-
/* key matrix size */
// rows are doubled-up for split-keyboard
#define MATRIX_ROWS 10
diff --git a/keyboards/keycapsss/kimiko/rev1/info.json b/keyboards/keycapsss/kimiko/rev1/info.json
new file mode 100644
index 0000000000..2aef1306ec
--- /dev/null
+++ b/keyboards/keycapsss/kimiko/rev1/info.json
@@ -0,0 +1,81 @@
+{
+ "keyboard_name": "Kimiko",
+ "manufacturer": "Keycapsss",
+ "url": "https://keycapsss.com",
+ "maintainer": "@ben_roe Keycapsss",
+ "usb": {
+ "vid": "0x7983",
+ "pid": "0x4B69",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0.8},
+ {"x":1, "y":0.8},
+ {"x":2, "y":0.15},
+ {"x":3, "y":0},
+ {"x":4, "y":0.15},
+ {"x":5, "y":0.3},
+ {"x":9, "y":0.3},
+ {"x":10, "y":0.15},
+ {"x":11, "y":0},
+ {"x":12, "y":0.15},
+ {"x":13, "y":0.8},
+ {"x":14, "y":0.8},
+
+ {"x":0, "y":1.8},
+ {"x":1, "y":1.8},
+ {"x":2, "y":1.15},
+ {"x":3, "y":1},
+ {"x":4, "y":1.15},
+ {"x":5, "y":1.3},
+ {"x":9, "y":1.3},
+ {"x":10, "y":1.15},
+ {"x":11, "y":1},
+ {"x":12, "y":1.15},
+ {"x":13, "y":1.8},
+ {"x":14, "y":1.8},
+
+ {"x":0, "y":2.8},
+ {"x":1, "y":2.8},
+ {"x":2, "y":2.15},
+ {"x":3, "y":2},
+ {"x":4, "y":2.15},
+ {"x":5, "y":2.3},
+ {"x":9, "y":2.3},
+ {"x":10, "y":2.15},
+ {"x":11, "y":2},
+ {"x":12, "y":2.15},
+ {"x":13, "y":2.8},
+ {"x":14, "y":2.8},
+
+ {"x":0, "y":3.8},
+ {"x":1, "y":3.8},
+ {"x":2, "y":3.15},
+ {"x":3, "y":3},
+ {"x":4, "y":3.15},
+ {"x":5, "y":3.3},
+ {"x":6.25, "y":3.3},
+ {"x":7.75, "y":3.3},
+ {"x":9, "y":3.3},
+ {"x":10, "y":3.15},
+ {"x":11, "y":3},
+ {"x":12, "y":3.15},
+ {"x":13, "y":3.8},
+ {"x":14, "y":3.8},
+
+ {"x":2, "y":4.15},
+ {"x":3, "y":4},
+ {"x":4, "y":4.15},
+ {"x":5.25, "y":4.3},
+ {"x":6.25, "y":4.25, "h":1.5},
+ {"x":7.75, "y":4.25, "h":1.5},
+ {"x":8.75, "y":4.3},
+ {"x":10, "y":4.15},
+ {"x":11, "y":4},
+ {"x":12, "y":4.15}
+ ]
+ }
+ }
+}
diff --git a/keyboards/keycapsss/o4l_5x12/config.h b/keyboards/keycapsss/o4l_5x12/config.h
index 4b7b863906..84a262e874 100644
--- a/keyboards/keycapsss/o4l_5x12/config.h
+++ b/keyboards/keycapsss/o4l_5x12/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7983
-#define PRODUCT_ID 0x0512
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Keycapsss
-#define PRODUCT O4L:5x12
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -25,7 +18,6 @@
*/
#define MATRIX_ROW_PINS { F7, B1, B3, B2, B6 }
#define MATRIX_COL_PINS { B5, B4, E6, D7, C6, D4, D0, D1, D2, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keycapsss/o4l_5x12/info.json b/keyboards/keycapsss/o4l_5x12/info.json
index 3553ada42b..41f7732f5f 100644
--- a/keyboards/keycapsss/o4l_5x12/info.json
+++ b/keyboards/keycapsss/o4l_5x12/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "O4L 5x12",
+ "keyboard_name": "O4L:5x12",
+ "manufacturer": "Keycapsss",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/keycapsss/o4l_5x12",
"maintainer": "BenRoe",
+ "usb": {
+ "vid": "0x7983",
+ "pid": "0x0512",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x12": {
"layout": [
diff --git a/keyboards/keycapsss/o4l_5x12/keymaps/2x2u/keymap.c b/keyboards/keycapsss/o4l_5x12/keymaps/2x2u/keymap.c
index 75d89702c9..751e5faa00 100644
--- a/keyboards/keycapsss/o4l_5x12/keymaps/2x2u/keymap.c
+++ b/keyboards/keycapsss/o4l_5x12/keymaps/2x2u/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, KC_DEL,
RGB_M_P, KC_LCBR, KC_LBRC, KC_LPRN, KC_SLSH, KC_BSLS, KC_RPRN, KC_RBRC, KC_RCBR, _______, _______, KC_PIPE,
RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RGB_TOG, RESET, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ RGB_TOG, QK_BOOT, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
};
diff --git a/keyboards/keycapsss/o4l_5x12/keymaps/default/keymap.c b/keyboards/keycapsss/o4l_5x12/keymaps/default/keymap.c
index 050b5a2c3e..2f64a56e9a 100644
--- a/keyboards/keycapsss/o4l_5x12/keymaps/default/keymap.c
+++ b/keyboards/keycapsss/o4l_5x12/keymaps/default/keymap.c
@@ -92,7 +92,7 @@ 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,
- _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______,_______, _______, KC_DEL,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/keycapsss/plaid_pad/config.h b/keyboards/keycapsss/plaid_pad/config.h
index 373d3de14f..fd9c63f339 100644
--- a/keyboards/keycapsss/plaid_pad/config.h
+++ b/keyboards/keycapsss/plaid_pad/config.h
@@ -18,11 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7983
-#define PRODUCT_ID 0x5050 // "PP"
-#define MANUFACTURER Keycapsss
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
diff --git a/keyboards/keycapsss/plaid_pad/info.json b/keyboards/keycapsss/plaid_pad/info.json
index 1ccac5d2cc..c223b88065 100644
--- a/keyboards/keycapsss/plaid_pad/info.json
+++ b/keyboards/keycapsss/plaid_pad/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Plaid-Pad",
+ "manufacturer": "Keycapsss",
"url": "https://keycapsss.com/diy-kits/104/plaid-pad-4x4-numpad",
"maintainer": "BenRoe",
+ "usb": {
+ "vid": "0x7983",
+ "pid": "0x5050"
+ },
"layouts": {
"LAYOUT_ortho_4x4": {
"layout": [
diff --git a/keyboards/keycapsss/plaid_pad/rev1/config.h b/keyboards/keycapsss/plaid_pad/rev1/config.h
index fee25316dd..5956835a0b 100644
--- a/keyboards/keycapsss/plaid_pad/rev1/config.h
+++ b/keyboards/keycapsss/plaid_pad/rev1/config.h
@@ -16,11 +16,6 @@
#pragma once
-#define PRODUCT Plaid-Pad Rev1
-#define DEVICE_VER 0x0001
-
-#define UNUSED_PINS { B3, B4, B5, D4}
-
#define ENCODERS_PAD_A { D1, B2 }
#define ENCODERS_PAD_B { D0, B1 }
diff --git a/keyboards/keycapsss/plaid_pad/rev1/info.json b/keyboards/keycapsss/plaid_pad/rev1/info.json
new file mode 100644
index 0000000000..3d98c4cb57
--- /dev/null
+++ b/keyboards/keycapsss/plaid_pad/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Plaid-Pad Rev1",
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/keycapsss/plaid_pad/rev2/config.h b/keyboards/keycapsss/plaid_pad/rev2/config.h
index f3646dd575..efb2609edd 100644
--- a/keyboards/keycapsss/plaid_pad/rev2/config.h
+++ b/keyboards/keycapsss/plaid_pad/rev2/config.h
@@ -16,11 +16,6 @@
#pragma once
-#define PRODUCT Plaid-Pad Rev2
-#define DEVICE_VER 0x0002
-
-#define UNUSED_PINS { }
-
#define ENCODERS_PAD_A { D1, B2, B4, D4 }
#define ENCODERS_PAD_B { D0, B1, B3, B5 }
diff --git a/keyboards/keycapsss/plaid_pad/rev2/info.json b/keyboards/keycapsss/plaid_pad/rev2/info.json
new file mode 100644
index 0000000000..0a1da66f73
--- /dev/null
+++ b/keyboards/keycapsss/plaid_pad/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Plaid-Pad Rev2",
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/keycapsss/plaid_pad/rev3/config.h b/keyboards/keycapsss/plaid_pad/rev3/config.h
index 40f96cd5c8..7e4786c5bc 100644
--- a/keyboards/keycapsss/plaid_pad/rev3/config.h
+++ b/keyboards/keycapsss/plaid_pad/rev3/config.h
@@ -16,10 +16,5 @@
#pragma once
-#define PRODUCT Plaid-Pad Rev3
-#define DEVICE_VER 0x0003
-
-#define UNUSED_PINS { }
-
#define ENCODERS_PAD_A { D1, B2, B4, D4 }
#define ENCODERS_PAD_B { D0, B1, B3, B5 }
diff --git a/keyboards/keycapsss/plaid_pad/rev3/info.json b/keyboards/keycapsss/plaid_pad/rev3/info.json
new file mode 100644
index 0000000000..2f5b474c4d
--- /dev/null
+++ b/keyboards/keycapsss/plaid_pad/rev3/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Plaid-Pad Rev3",
+ "usb": {
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/keychron/q0/config.h b/keyboards/keychron/q0/config.h
new file mode 100644
index 0000000000..40f506fe80
--- /dev/null
+++ b/keyboards/keychron/q0/config.h
@@ -0,0 +1,101 @@
+/* Copyright 2022 @ 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
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 4
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B5, B4, B3, A15, A14, A13 }
+#define MATRIX_COL_PINS { A5, A6, A7, B0 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* RGB Matrix Driver Configuration */
+#define DRIVER_COUNT 1
+#define DRIVER_ADDR_1 0b1110100
+
+#define CONSTANT_CURRENT_STEP \
+ { 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70, 0xFF, 0xFF, 0x70 }
+
+/* NKRO */
+#define FORCE_NKRO
+
+/* turn off effects when suspended */
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+
+/* We have 2KB EEPROM size on STM32L432 */
+#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 2047
+
+/* EEPROM Driver Configuration */
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
+
+// 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 RGB_MATRIX_KEYPRESSES \ No newline at end of file
diff --git a/keyboards/keychron/q0/halconf.h b/keyboards/keychron/q0/halconf.h
new file mode 100644
index 0000000000..41bddcb279
--- /dev/null
+++ b/keyboards/keychron/q0/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/q0/mcuconf.h b/keyboards/keychron/q0/mcuconf.h
new file mode 100644
index 0000000000..0ca8c64850
--- /dev/null
+++ b/keyboards/keychron/q0/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/q0/q0.c b/keyboards/keychron/q0/q0.c
new file mode 100644
index 0000000000..c43157ac68
--- /dev/null
+++ b/keyboards/keychron/q0/q0.c
@@ -0,0 +1,57 @@
+/* Copyright 2022 @ 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 "q0.h"
+
+#if defined(RGB_MATRIX_ENABLE) && defined(CAPS_LOCK_LED_INDEX)
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+ switch (keycode) {
+# ifdef RGB_MATRIX_ENABLE
+ 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);
+ } break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ } break;
+ }
+ }
+ return false;
+# endif
+ }
+ return true;
+}
+
+__attribute__((weak)) void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ // RGB_MATRIX_INDICATOR_SET_COLOR(index, red, green, blue);
+
+ if (host_keyboard_led_state().caps_lock) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 255, 255, 255);
+ } else {
+ if (!rgb_matrix_get_flags()) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(CAPS_LOCK_LED_INDEX, 0, 0, 0);
+ }
+ }
+}
+
+#endif // NUM_LOCK_LED_INDEX
diff --git a/keyboards/keychron/q0/q0.h b/keyboards/keychron/q0/q0.h
new file mode 100644
index 0000000000..6eaa41e87c
--- /dev/null
+++ b/keyboards/keychron/q0/q0.h
@@ -0,0 +1,23 @@
+/* Copyright 2022 @ 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_q0_rev_0130)
+# include "rev_0130.h"
+#endif
diff --git a/keyboards/keychron/q0/readme.md b/keyboards/keychron/q0/readme.md
new file mode 100644
index 0000000000..d0180d386e
--- /dev/null
+++ b/keyboards/keychron/q0/readme.md
@@ -0,0 +1,19 @@
+# Keychron Q0
+
+A customizable number keypad.
+
+* Keyboard Maintainer: [Keychron](https://github.com/keychron)
+* Hardware Supported: Keychron Q0
+* Hardware Availability: [Keychron](https://www.keychron.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keychron/q0/rev_0130:default
+
+Flashing example for this keyboard:
+
+ make keychron/q0/rev_0130: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/q0/rev_0130/config.h b/keyboards/keychron/q0/rev_0130/config.h
new file mode 100644
index 0000000000..e7fabed664
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/config.h
@@ -0,0 +1,24 @@
+/* Copyright 2022 @ 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
+
+/* RGB Matrix Configuration */
+#define DRIVER_1_LED_TOTAL 21
+#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+
+/* Enable num-lock LED */
+#define NUM_LOCK_LED_INDEX 4
diff --git a/keyboards/keychron/q0/rev_0130/info.json b/keyboards/keychron/q0/rev_0130/info.json
new file mode 100644
index 0000000000..d42a43ef66
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/info.json
@@ -0,0 +1,43 @@
+{
+ "keyboard_name": "Q0",
+ "manufacturer": "Keychron",
+ "url": "https://github.com/Keychron",
+ "maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0130",
+ "device_version": "1.0.2"
+ },
+ "layouts": {
+ "LAYOUT_numpad_6x4": {
+ "layout": [
+ {"label":"Fn", "x":0, "y":0},
+ {"label":"Esc", "x":1, "y":0},
+ {"label":"Backspace", "x":2, "y":0},
+ {"label":"Tab", "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}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/keychron/q0/rev_0130/keymaps/default/keymap.c b/keyboards/keychron/q0/rev_0130/keymaps/default/keymap.c
new file mode 100644
index 0000000000..6a05648074
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2022 @ 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 { _BASE, _FN1};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_numpad_6x4(
+ MO(_FN1), KC_ESC, KC_BSPACE, KC_TAB,
+ KC_NUMLOCK, 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),
+
+ [_FN1] = LAYOUT_numpad_6x4(
+ _______, KC_MUTE, KC_VOLD, KC_VOLU,
+ RGB_MOD, RGB_VAI, RGB_HUI, KC_DEL,
+ RGB_RMOD, RGB_VAD, RGB_HUD,
+ RGB_SAI, RGB_SPI, KC_MPRV, _______,
+ RGB_SAD, RGB_SPD, KC_MPLY,
+ RGB_TOG, KC_MNXT, _______)
+};
diff --git a/keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c b/keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c
new file mode 100644
index 0000000000..078ede4041
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/* Copyright 2022 @ 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 { _BASE, _FN1, _RESERVED1, _RESERVED2 };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_numpad_6x4(
+ MO(_FN1), KC_ESC, KC_BSPACE, KC_TAB,
+ KC_NUMLOCK, 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),
+
+ [_FN1] = LAYOUT_numpad_6x4(
+ _______, KC_MUTE, KC_VOLD, KC_VOLU,
+ RGB_MOD, RGB_VAI, RGB_HUI, KC_DEL,
+ RGB_RMOD, RGB_VAD, RGB_HUD,
+ RGB_SAI, RGB_SPI, KC_MPRV, _______,
+ RGB_SAD, RGB_SPD, KC_MPLY,
+ RGB_TOG, KC_MNXT, _______),
+
+ [_RESERVED1] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______),
+
+ [_RESERVED2] = LAYOUT_numpad_6x4(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______)
+};
diff --git a/keyboards/keychron/q0/rev_0130/keymaps/via/rules.mk b/keyboards/keychron/q0/rev_0130/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/q0/rev_0130/readme.md b/keyboards/keychron/q0/rev_0130/readme.md
new file mode 100644
index 0000000000..a6db5bc015
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/readme.md
@@ -0,0 +1 @@
+# The base variant of the Keychron Q0
diff --git a/keyboards/keychron/q0/rev_0130/rev_0130.c b/keyboards/keychron/q0/rev_0130/rev_0130.c
new file mode 100644
index 0000000000..468e3cf04f
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/rev_0130.c
@@ -0,0 +1,88 @@
+/* Copyright 2022 @ 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, F_5, D_5, E_5}, // 0
+ {0, I_5, G_5, H_5}, // 1
+ {0, L_5, J_5, K_5}, // 2
+ {0, C_5, A_5, B_5}, // 3
+
+ {0, F_4, D_4, E_4}, // 4
+ {0, I_4, G_4, H_4}, // 5
+ {0, L_4, J_4, K_4}, // 6
+ {0, C_4, A_4, B_4}, // 7
+
+ {0, F_6, D_6, E_6}, // 8
+ {0, I_6, G_6, H_6}, // 9
+ {0, L_6, J_6, K_6}, // 10
+
+ {0, F_3, D_3, E_3}, // 11
+ {0, I_3, G_3, H_3}, // 12
+ {0, L_3, J_3, K_3}, // 13
+ {0, C_6, A_6, B_6}, // 14
+
+ {0, F_2, D_2, E_2}, // 15
+ {0, I_2, G_2, H_2}, // 16
+ {0, L_2, J_2, K_2}, // 17
+
+ {0, F_1, D_1, E_1}, // 18
+ {0, L_1, J_1, K_1}, // 19
+ {0, C_2, A_2, B_2}, // 20
+};
+
+#define __ NO_LED
+
+led_config_t g_led_config = {
+ {
+ // Key Matrix to LED Index
+ { 0, 1, 2, 3 },
+ { 4, 5, 6, 7 },
+ { 8, 9, 10, 14 },
+ { 11, 12, 13, __ },
+ { 15, 16, 17, 20 },
+ { 18, __, 19, __ }
+ },
+ {
+ // LED Index to Physical Position
+ {0,0}, {74,0}, {150,0}, {224,0},
+ {0,13}, {74,13}, {150,13}, {224,13},
+ {0,26}, {74,26}, {150,26},
+ {0,38}, {74,38}, {150,38}, {224,32},
+ {0,51}, {74,51}, {150,51},
+ {36,64}, {150,64}, {224,58},
+ },
+ {
+ // LED Index to Flag
+ 1, 1, 1, 1,
+ 9, 4, 4, 4,
+ 4, 4, 4,
+ 4, 4, 4, 4,
+ 4, 4, 4,
+ 4, 4, 1
+ }
+};
+
+#endif // RGB_MATRIX_ENABLE
diff --git a/keyboards/keychron/q0/rev_0130/rev_0130.h b/keyboards/keychron/q0/rev_0130/rev_0130.h
new file mode 100644
index 0000000000..d66c880aa9
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/rev_0130.h
@@ -0,0 +1,38 @@
+/* Copyright 2022 @ 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_numpad_6x4( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, \
+ K30, K31, K32, K23, \
+ K40, K41, K42, \
+ K50, K52, K43 \
+) \
+{ \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, K23 }, \
+ { K30, K31, K32, XXX }, \
+ { K40, K41, K42, K43 }, \
+ { K50, XXX, K52, XXX }, \
+}
diff --git a/keyboards/keychron/q0/rev_0130/rules.mk b/keyboards/keychron/q0/rev_0130/rules.mk
new file mode 100644
index 0000000000..5a04c755cd
--- /dev/null
+++ b/keyboards/keychron/q0/rev_0130/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+MCU = STM32L432
+
+# 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 USB N-key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+DIP_SWITCH_ENABLE = no
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = CKLED2001
+LTO_ENABLE = yes
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = embedded_flash
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/keychron/q1/config.h b/keyboards/keychron/q1/config.h
index de69b9e929..cda8799a79 100644
--- a/keyboards/keychron/q1/config.h
+++ b/keyboards/keychron/q1/config.h
@@ -16,11 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3434
-#define MANUFACTURER Keychron
-#define PRODUCT Keychron Q1
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
diff --git a/keyboards/keychron/q1/rev_0100/config.h b/keyboards/keychron/q1/rev_0100/config.h
index 435f386a59..1b8c65165c 100644
--- a/keyboards/keychron/q1/rev_0100/config.h
+++ b/keyboards/keychron/q1/rev_0100/config.h
@@ -16,11 +16,6 @@
#pragma once
-
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x0100
-#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 }
diff --git a/keyboards/keychron/q1/rev_0100/info.json b/keyboards/keychron/q1/rev_0100/info.json
index dba3320ba7..b708f15994 100644
--- a/keyboards/keychron/q1/rev_0100/info.json
+++ b/keyboards/keychron/q1/rev_0100/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Keychron Q1",
+ "keyboard_name": "Q1",
+ "manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0100",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_ansi_82": {
"layout": [{"label":"Esc", "x":0, "y":0},
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/teimor/config.h b/keyboards/keychron/q1/rev_0100/keymaps/teimor/config.h
new file mode 100644
index 0000000000..c3c10a1c2b
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/keymaps/teimor/config.h
@@ -0,0 +1,32 @@
+/* Copyright 2022 @ Teimor Epstein
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 TAPPING_TERM
+#define TAPPING_TERM 200
+
+/* RGB Matrix Configuration */
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define MAC_LAYER_DEFAULT_COLOR RGB_CYAN
+# define WIN_LAYER_DEFAULT_COLOR RGB_GREEN
+# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
+# define CAPS_LOCK_INDICATOR_LIGHT_60
+# define FN_LAYER_TRANSPARENT_KEYS_OFF
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR // Sets the default mode, if none has been set
+# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
+#endif
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/teimor/keymap.c b/keyboards/keychron/q1/rev_0100/keymaps/teimor/keymap.c
new file mode 100644
index 0000000000..3a0cddab7c
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/keymaps/teimor/keymap.c
@@ -0,0 +1,95 @@
+/* Copyright 2022 @ Teimor Epstein
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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
+
+enum custom_keycodes {
+ KC_MISSION_CONTROL = USER00,
+ KC_LAUNCHPAD,
+};
+
+#define KC_MCTL KC_MISSION_CONTROL
+#define KC_LPAD KC_LAUNCHPAD
+#define TG_NKRO MAGIC_TOGGLE_NKRO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_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_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_LGMAC, KC_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_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_MACFN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_ansi_82(
+ _______, 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_MACPS, KC_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ KC_CAPS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, KC_LMAC, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [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_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_LGWIN, KC_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_WINFN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_ansi_82(
+ _______, 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_PSCR, KC_INS,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
+ KC_CAPS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
+// clang-format on
+
+void matrix_init_user(void) {
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_init_user();
+#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_0100/keymaps/teimor/keymap_user.h b/keyboards/keychron/q1/rev_0100/keymaps/teimor/keymap_user.h
new file mode 100644
index 0000000000..57ac5258c2
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/keymaps/teimor/keymap_user.h
@@ -0,0 +1,48 @@
+/* Copyright 2022 @ Teimor Epstein
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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
+
+// Tap dance enums
+enum {
+ MAC_CAPS_LANGUAGE_CHANGE,
+ WIN_CAPS_LANGUAGE_CHANGE,
+};
+
+#ifdef TAP_DANCE_ENABLE
+# define KC_LGMAC TD(MAC_CAPS_LANGUAGE_CHANGE)
+# define KC_LGWIN TD(WIN_CAPS_LANGUAGE_CHANGE)
+#else
+# define KC_LGMAC KC_CAPS
+# define KC_LGWIN KC_CAPS
+#endif
+#define KC_MACFN MO(MAC_FN)
+#define KC_WINFN MO(WIN_FN)
+#define KC_LMAC C(G(KC_Q))
+#define KC_MACPS G(S(KC_5))
+#define KC_TASK G(KC_TAB)
+#define KC_FLXP G(KC_E)
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/teimor/readme.md b/keyboards/keychron/q1/rev_0100/keymaps/teimor/readme.md
new file mode 100644
index 0000000000..9aa16f9a89
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/keymaps/teimor/readme.md
@@ -0,0 +1,13 @@
+# teimor's Keychron Q1 keymap
+
+- Via Enabled.
+- Tap dance enabled.
+- On macOS, F3 opens Mission Control and F4 opens Launchpad without needing to configure shortcuts in System Preferences.
+- RGB lighting turns off when the computer sleeps.
+- The RGB lighting for keys that are not assigned turns off when the Fn layer is active
+- 60% layout turns red to indicate when Caps Lock is on.
+- Windows and macOS: A single tap will quickly change the language, and holding will trigger Caps Lock. (Using Tap Dance)
+- RGB Matrix based on layout - macOS base layout will turn on cyan color, Windows base layout will turn on green color.
+- `fn + N` will toggle NKRO, useful when using the keyboard on freebsd.
+- `fn + L` on macOS will lock the system.
+- `fn + del` will trigger screenshot on macOS and Windows.
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/teimor/rgb_matrix_user.c b/keyboards/keychron/q1/rev_0100/keymaps/teimor/rgb_matrix_user.c
new file mode 100644
index 0000000000..77f1c1011b
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/keymaps/teimor/rgb_matrix_user.c
@@ -0,0 +1,91 @@
+/* Copyright 2022 @ Teimor Epstein
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 | default_layer_state);
+ switch (current_layer) {
+ case MAC_BASE:
+ case WIN_BASE:
+#if defined CAPS_LOCK_INDICATOR_COLOR && defined MAC_LAYER_DEFAULT_COLOR && defined WIN_LAYER_DEFAULT_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);
+ } else if (current_layer == MAC_BASE)
+ rgb_matrix_set_color_all(MAC_LAYER_DEFAULT_COLOR);
+ else if (current_layer == WIN_BASE)
+ rgb_matrix_set_color_all(WIN_LAYER_DEFAULT_COLOR);
+#endif
+ break;
+ case MAC_FN:
+ case WIN_FN:
+#if defined MAC_LAYER_DEFAULT_COLOR && defined WIN_LAYER_DEFAULT_COLOR
+ if (current_layer == MAC_FN) {
+ rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_not_transparent, MAC_LAYER_DEFAULT_COLOR);
+ } else if (current_layer == WIN_FN) {
+ rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_not_transparent, WIN_LAYER_DEFAULT_COLOR);
+ }
+#endif
+#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);
+ }
+#if defined MAC_LAYER_DEFAULT_COLOR && defined WIN_LAYER_DEFAULT_COLOR
+ else {
+ if (layer == MAC_BASE)
+ rgb_matrix_set_color(i, MAC_LAYER_DEFAULT_COLOR);
+ else if (layer == WIN_BASE)
+ rgb_matrix_set_color(i, WIN_LAYER_DEFAULT_COLOR);
+ }
+#endif
+ }
+}
+
+bool is_caps_lock_indicator(uint16_t keycode) {
+ bool indicator = keycode == KC_CAPS || keycode == KC_LGMAC || keycode == KC_LGWIN;
+#ifdef CAPS_LOCK_INDICATOR_LIGHT_60
+ return (KC_A <= keycode && keycode <= KC_CAPS) || (KC_LEFT_CTRL <= keycode && keycode <= KC_RIGHT_GUI) || keycode == KC_MACFN || keycode == KC_WINFN || indicator;
+#else
+ return indicator;
+#endif
+}
+
+bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }
+bool is_not_transparent(uint16_t keycode) { return keycode != KC_TRNS; }
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/teimor/rgb_matrix_user.h b/keyboards/keychron/q1/rev_0100/keymaps/teimor/rgb_matrix_user.h
new file mode 100644
index 0000000000..5b53b5b8ec
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/keymaps/teimor/rgb_matrix_user.h
@@ -0,0 +1,25 @@
+/* Copyright 2022 @ Teimor Epstein
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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);
+bool is_not_transparent(uint16_t keycode);
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/teimor/rules.mk b/keyboards/keychron/q1/rev_0100/keymaps/teimor/rules.mk
new file mode 100644
index 0000000000..bafb40484b
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/keymaps/teimor/rules.mk
@@ -0,0 +1,14 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = no
+TAP_DANCE_ENABLE = yes
+
+ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
+ SRC += rgb_matrix_user.c
+endif
+
+ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
+ SRC += tap_dance_user.c
+ SRC += tap_dance_setup.c
+ SRC += tap_dance_mac_caps.c
+ SRC += tap_dance_win_caps.c
+endif
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_mac_caps.c b/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_mac_caps.c
new file mode 100644
index 0000000000..d979820923
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_mac_caps.c
@@ -0,0 +1,50 @@
+/* Copyright 2021 @ Teimor Epstein
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* macOS CapsLock language change */
+#include "tap_dance_mac_caps.h"
+
+static td_tap_t mac_caps_language_tap_state = {.is_press_action = true, .state = TD_NONE};
+
+void mac_caps_language_finished(qk_tap_dance_state_t *state, void *user_data) {
+ mac_caps_language_tap_state.state = current_dance(state);
+ switch (mac_caps_language_tap_state.state) {
+ case TD_SINGLE_TAP:
+ register_code(KC_LCTL);
+ register_code(KC_SPACE);
+ break;
+ case TD_SINGLE_HOLD:
+ register_code(KC_CAPS_LOCK);
+ break;
+ default:
+ break;
+ }
+}
+
+void mac_caps_language_reset(qk_tap_dance_state_t *state, void *user_data) {
+ switch (mac_caps_language_tap_state.state) {
+ case TD_SINGLE_TAP:
+ unregister_code(KC_SPACE);
+ unregister_code(KC_LCTL);
+ break;
+ case TD_SINGLE_HOLD:
+ unregister_code(KC_CAPS_LOCK);
+ break;
+ default:
+ break;
+ }
+ mac_caps_language_tap_state.state = TD_NONE;
+}
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_mac_caps.h b/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_mac_caps.h
new file mode 100644
index 0000000000..a5f07a58a1
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_mac_caps.h
@@ -0,0 +1,23 @@
+/* Copyright 2021 @ Teimor Epstein
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* macOS CapsLock language change */
+#pragma once
+
+#include "tap_dance_setup.h"
+
+void mac_caps_language_finished(qk_tap_dance_state_t *state, void *user_data);
+void mac_caps_language_reset(qk_tap_dance_state_t *state, void *user_data);
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_setup.c b/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_setup.c
new file mode 100644
index 0000000000..6d879419bc
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_setup.c
@@ -0,0 +1,49 @@
+/* Copyright 2022 @ Teimor Epstein
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You 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_dance_setup.h"
+
+td_state_t current_dance(qk_tap_dance_state_t *state) {
+ if (state->count == 1) {
+ if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;
+ /* Key has not been interrupted, but the key is still held. Means you w ant to send a 'HOLD'. */
+ else
+ return TD_SINGLE_HOLD;
+ } else if (state->count == 2) {
+ /* TD_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 TD_DOUBLE_SINGLE_TAP;
+ else if (state->pressed)
+ return TD_DOUBLE_HOLD;
+ else
+ return TD_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 'TD_TRIPLE_SINGLE_TAP', and define that enum just like 'TD_DOUBLE_SINGLE_TAP' */
+ if (state->count == 3) {
+ if (state->interrupted)
+ return TD_TRIPLE_SINGLE_TAP;
+ else if (state->pressed)
+ return TD_TRIPLE_HOLD;
+ else
+ return TD_TRIPLE_TAP;
+
+ } else
+ return TD_UNKNOWN;
+}
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_setup.h b/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_setup.h
new file mode 100644
index 0000000000..05160c77f5
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_setup.h
@@ -0,0 +1,38 @@
+/* Copyright 2022 @ Teimor Epstein
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include QMK_KEYBOARD_H
+
+typedef enum {
+ TD_NONE,
+ TD_UNKNOWN,
+ TD_SINGLE_TAP,
+ TD_SINGLE_HOLD,
+ TD_DOUBLE_TAP,
+ TD_DOUBLE_HOLD,
+ TD_DOUBLE_SINGLE_TAP, // Send two single taps
+ TD_TRIPLE_TAP,
+ TD_TRIPLE_HOLD,
+ TD_TRIPLE_SINGLE_TAP // Send three single tap
+} td_state_t;
+
+typedef struct {
+ bool is_press_action;
+ td_state_t state;
+} td_tap_t;
+
+td_state_t current_dance(qk_tap_dance_state_t *state);
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_user.c b/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_user.c
new file mode 100644
index 0000000000..1e9542d5ee
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_user.c
@@ -0,0 +1,28 @@
+/* Copyright 2022 @ Teimor Epstein
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You 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_user.h"
+#include "tap_dance_mac_caps.h"
+#include "tap_dance_win_caps.h"
+
+// clang-format off
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [MAC_CAPS_LANGUAGE_CHANGE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, mac_caps_language_finished, mac_caps_language_reset),
+ [WIN_CAPS_LANGUAGE_CHANGE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, win_caps_language_finished, win_caps_language_reset)
+};
+
+// clang-format on
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_win_caps.c b/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_win_caps.c
new file mode 100644
index 0000000000..fea72c5663
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_win_caps.c
@@ -0,0 +1,50 @@
+/* Copyright 2022 @ Teimor Epstein
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* Windows CapsLock language change */
+#include "tap_dance_win_caps.h"
+
+static td_tap_t win_caps_language_tap_state = {.is_press_action = true, .state = TD_NONE};
+
+void win_caps_language_finished(qk_tap_dance_state_t *state, void *user_data) {
+ win_caps_language_tap_state.state = current_dance(state);
+ switch (win_caps_language_tap_state.state) {
+ case TD_SINGLE_TAP:
+ register_code(KC_LGUI);
+ register_code(KC_SPACE);
+ break;
+ case TD_SINGLE_HOLD:
+ register_code(KC_CAPS_LOCK);
+ break;
+ default:
+ break;
+ }
+}
+
+void win_caps_language_reset(qk_tap_dance_state_t *state, void *user_data) {
+ switch (win_caps_language_tap_state.state) {
+ case TD_SINGLE_TAP:
+ unregister_code(KC_SPACE);
+ unregister_code(KC_LGUI);
+ break;
+ case TD_SINGLE_HOLD:
+ unregister_code(KC_CAPS_LOCK);
+ break;
+ default:
+ break;
+ }
+ win_caps_language_tap_state.state = TD_NONE;
+}
diff --git a/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_win_caps.h b/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_win_caps.h
new file mode 100644
index 0000000000..34b734ec89
--- /dev/null
+++ b/keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_win_caps.h
@@ -0,0 +1,23 @@
+/* Copyright 2022 @ Teimor Epstein
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* Windows CapsLock language change */
+#pragma once
+
+#include "tap_dance_setup.h"
+
+void win_caps_language_finished(qk_tap_dance_state_t *state, void *user_data);
+void win_caps_language_reset(qk_tap_dance_state_t *state, void *user_data);
diff --git a/keyboards/keychron/q1/rev_0101/config.h b/keyboards/keychron/q1/rev_0101/config.h
index c127a3630a..58d77477ca 100644
--- a/keyboards/keychron/q1/rev_0101/config.h
+++ b/keyboards/keychron/q1/rev_0101/config.h
@@ -16,10 +16,6 @@
#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 }
diff --git a/keyboards/keychron/q1/rev_0101/info.json b/keyboards/keychron/q1/rev_0101/info.json
index 75fb2d04e8..b4e5d002b7 100644
--- a/keyboards/keychron/q1/rev_0101/info.json
+++ b/keyboards/keychron/q1/rev_0101/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Keychron Q1",
+ "keyboard_name": "Q1",
+ "manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0101",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_ansi_82": {
"layout": [
diff --git a/keyboards/keychron/q1/rev_0102/config.h b/keyboards/keychron/q1/rev_0102/config.h
index a537ab4e0d..7aa0ae8662 100644
--- a/keyboards/keychron/q1/rev_0102/config.h
+++ b/keyboards/keychron/q1/rev_0102/config.h
@@ -16,11 +16,6 @@
#pragma once
-
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x0102
-#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 }
diff --git a/keyboards/keychron/q1/rev_0102/info.json b/keyboards/keychron/q1/rev_0102/info.json
index a71e0b24f0..9ee606b34e 100644
--- a/keyboards/keychron/q1/rev_0102/info.json
+++ b/keyboards/keychron/q1/rev_0102/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Keychron Q1",
+ "keyboard_name": "Q1",
+ "manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0102",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_iso_83": {
"layout": [
diff --git a/keyboards/keychron/q2/config.h b/keyboards/keychron/q2/config.h
index d019bcee15..511cc4f5ac 100644
--- a/keyboards/keychron/q2/config.h
+++ b/keyboards/keychron/q2/config.h
@@ -16,11 +16,6 @@
#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
@@ -64,7 +59,8 @@
#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 2047
/* EEPROM Driver Configuration */
-#define EXTERNAL_EEPROM_I2C_BASE_ADDRESS 0b10100010
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2)
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
diff --git a/keyboards/keychron/q2/rev_0110/config.h b/keyboards/keychron/q2/rev_0110/config.h
index e41857d9b2..f30b81b3af 100644
--- a/keyboards/keychron/q2/rev_0110/config.h
+++ b/keyboards/keychron/q2/rev_0110/config.h
@@ -16,10 +16,6 @@
#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
diff --git a/keyboards/keychron/q2/rev_0110/info.json b/keyboards/keychron/q2/rev_0110/info.json
index fb34a2427a..65e6c22519 100644
--- a/keyboards/keychron/q2/rev_0110/info.json
+++ b/keyboards/keychron/q2/rev_0110/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Keychron Q2",
+ "keyboard_name": "Q2",
+ "manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0110",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_ansi_67": {
"layout": [
diff --git a/keyboards/keychron/q2/rev_0110/rules.mk b/keyboards/keychron/q2/rev_0110/rules.mk
index 30394028b3..38d48f0b27 100644
--- a/keyboards/keychron/q2/rev_0110/rules.mk
+++ b/keyboards/keychron/q2/rev_0110/rules.mk
@@ -20,7 +20,8 @@ ENCODER_ENABLE = no # Enable Encoder
DIP_SWITCH_ENABLE = yes
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = CKLED2001
-EEPROM_DRIVER = i2c
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = embedded_flash
# 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
index 76cd5d0e78..249e589019 100644
--- a/keyboards/keychron/q2/rev_0111/config.h
+++ b/keyboards/keychron/q2/rev_0111/config.h
@@ -16,10 +16,6 @@
#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
diff --git a/keyboards/keychron/q2/rev_0111/info.json b/keyboards/keychron/q2/rev_0111/info.json
index f6ce1d9b27..875937baec 100644
--- a/keyboards/keychron/q2/rev_0111/info.json
+++ b/keyboards/keychron/q2/rev_0111/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Keychron Q2",
+ "keyboard_name": "Q2",
+ "manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0111",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_ansi_67": {
"layout": [
diff --git a/keyboards/keychron/q2/rev_0111/rules.mk b/keyboards/keychron/q2/rev_0111/rules.mk
index a295f48e10..9332d29432 100644
--- a/keyboards/keychron/q2/rev_0111/rules.mk
+++ b/keyboards/keychron/q2/rev_0111/rules.mk
@@ -20,7 +20,8 @@ ENCODER_ENABLE = yes # Enable Encoder
DIP_SWITCH_ENABLE = yes
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = CKLED2001
-EEPROM_DRIVER = i2c
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = embedded_flash
# 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
index 70a60fd026..4bab401a01 100644
--- a/keyboards/keychron/q2/rev_0112/config.h
+++ b/keyboards/keychron/q2/rev_0112/config.h
@@ -16,10 +16,6 @@
#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
diff --git a/keyboards/keychron/q2/rev_0112/info.json b/keyboards/keychron/q2/rev_0112/info.json
index 5f0d4ab249..3670c87688 100644
--- a/keyboards/keychron/q2/rev_0112/info.json
+++ b/keyboards/keychron/q2/rev_0112/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Keychron Q2",
+ "keyboard_name": "Q2",
+ "manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0112",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_iso_68": {
"layout": [
diff --git a/keyboards/keychron/q2/rev_0112/rules.mk b/keyboards/keychron/q2/rev_0112/rules.mk
index 30394028b3..38d48f0b27 100644
--- a/keyboards/keychron/q2/rev_0112/rules.mk
+++ b/keyboards/keychron/q2/rev_0112/rules.mk
@@ -20,7 +20,8 @@ ENCODER_ENABLE = no # Enable Encoder
DIP_SWITCH_ENABLE = yes
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = CKLED2001
-EEPROM_DRIVER = i2c
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = embedded_flash
# 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
index 486d3fd3b8..8f7fbef73a 100644
--- a/keyboards/keychron/q2/rev_0113/config.h
+++ b/keyboards/keychron/q2/rev_0113/config.h
@@ -16,10 +16,6 @@
#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
diff --git a/keyboards/keychron/q2/rev_0113/info.json b/keyboards/keychron/q2/rev_0113/info.json
index 151f42455d..297096aac3 100644
--- a/keyboards/keychron/q2/rev_0113/info.json
+++ b/keyboards/keychron/q2/rev_0113/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Keychron Q2",
+ "keyboard_name": "Q2",
+ "manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
+ "usb": {
+ "vid": "0x3434",
+ "pid": "0x0113",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_iso_68": {
"layout": [
diff --git a/keyboards/keychron/q2/rev_0113/rules.mk b/keyboards/keychron/q2/rev_0113/rules.mk
index a295f48e10..9332d29432 100644
--- a/keyboards/keychron/q2/rev_0113/rules.mk
+++ b/keyboards/keychron/q2/rev_0113/rules.mk
@@ -20,7 +20,8 @@ ENCODER_ENABLE = yes # Enable Encoder
DIP_SWITCH_ENABLE = yes
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = CKLED2001
-EEPROM_DRIVER = i2c
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = embedded_flash
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/keyhive/absinthe/config.h b/keyboards/keyhive/absinthe/config.h
index d6acd350cc..98ab67871c 100644
--- a/keyboards/keyhive/absinthe/config.h
+++ b/keyboards/keyhive/absinthe/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB00B
-#define PRODUCT_ID 0xFEED
-#define DEVICE_VER 0x0001
-#define MANUFACTURER cfbender
-#define PRODUCT absinthe
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 9
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D2, D1, B6, D4, C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, D3, D0 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { B7 }
#define ENCODERS_PAD_B { D5 }
diff --git a/keyboards/keyhive/absinthe/info.json b/keyboards/keyhive/absinthe/info.json
index f92e9e10ee..ed20471a3e 100644
--- a/keyboards/keyhive/absinthe/info.json
+++ b/keyboards/keyhive/absinthe/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "absinthe",
+ "manufacturer": "cfbender",
"url": "https://github.com/cfbender/keyboards/tree/master/absinthe",
"maintainer": "cfbender",
+ "usb": {
+ "vid": "0xB00B",
+ "pid": "0xFEED",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/keyhive/ergosaurus/config.h b/keyboards/keyhive/ergosaurus/config.h
index 41f9a09311..ddb9ef8bfe 100644
--- a/keyboards/keyhive/ergosaurus/config.h
+++ b/keyboards/keyhive/ergosaurus/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x434B
-#define PRODUCT_ID 0xE590
-#define DEVICE_VER 0x0001
-#define MANUFACTURER reggalicious
-#define PRODUCT ergosaurus
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 8
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B5, B4, E6, D4, F6, D3, D2, F4, F5 }
#define MATRIX_COL_PINS \
{ D7, C6, D0, D1, F7, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keyhive/ergosaurus/info.json b/keyboards/keyhive/ergosaurus/info.json
index 8048896be2..dba344f15c 100644
--- a/keyboards/keyhive/ergosaurus/info.json
+++ b/keyboards/keyhive/ergosaurus/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Ergosaurus",
+ "manufacturer": "reggalicious",
"maintainer": "cfbender",
+ "usb": {
+ "vid": "0x434B",
+ "pid": "0xE590",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/keyhive/honeycomb/config.h b/keyboards/keyhive/honeycomb/config.h
index 6780c2d41b..979d41f108 100755
--- a/keyboards/keyhive/honeycomb/config.h
+++ b/keyboards/keyhive/honeycomb/config.h
@@ -19,14 +19,6 @@ 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 0xACC8
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Keyhive
-#define PRODUCT Honeycomb Macropad
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 16
diff --git a/keyboards/keyhive/honeycomb/info.json b/keyboards/keyhive/honeycomb/info.json
index b11ece332b..e4be081425 100644
--- a/keyboards/keyhive/honeycomb/info.json
+++ b/keyboards/keyhive/honeycomb/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Honeycomb",
+ "manufacturer": "Keyhive",
"url": "",
"maintainer": "filoxo",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xACC8",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keyhive/honeycomb/keymaps/default/keymap.c b/keyboards/keyhive/honeycomb/keymaps/default/keymap.c
index d0a5961873..429624822e 100755
--- a/keyboards/keyhive/honeycomb/keymaps/default/keymap.c
+++ b/keyboards/keyhive/honeycomb/keymaps/default/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
report_mouse_t currentReport = {};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- //uint8_t layer = biton32(layer_state); // get the current layer
+ //uint8_t layer = get_highest_layer(layer_state); // get the current layer
// Basic example functions
switch (keycode) {
diff --git a/keyboards/keyhive/lattice60/config.h b/keyboards/keyhive/lattice60/config.h
index c1e067287b..e72a6ab6b3 100644
--- a/keyboards/keyhive/lattice60/config.h
+++ b/keyboards/keyhive/lattice60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x16C0
-#define PRODUCT_ID 0x27DB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER emdarcher
-#define PRODUCT LATTICE60
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B2, B3, B4, B5, C0, C1, C2, C3 }
#define MATRIX_COL_PINS { D7, D6, B0, D5, D1, D4, D0, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/keyhive/lattice60/info.json b/keyboards/keyhive/lattice60/info.json
index 824884ecbd..e7d22d1a77 100644
--- a/keyboards/keyhive/lattice60/info.json
+++ b/keyboards/keyhive/lattice60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "lattice60",
+ "keyboard_name": "LATTICE60",
+ "manufacturer": "emdarcher",
"url": "",
"maintainer": "emdarcher",
+ "usb": {
+ "vid": "0x16C0",
+ "pid": "0x27DB",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/keyhive/maypad/config.h b/keyboards/keyhive/maypad/config.h
index b85053888f..4a177fa93d 100644
--- a/keyboards/keyhive/maypad/config.h
+++ b/keyboards/keyhive/maypad/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B48 //KH for Keyhive
-#define PRODUCT_ID 0x4D50 // MP
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KeyHive
-#define PRODUCT maypad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F6, F7, B1, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keyhive/maypad/info.json b/keyboards/keyhive/maypad/info.json
index 91a3eeeb09..3001bae5b5 100644
--- a/keyboards/keyhive/maypad/info.json
+++ b/keyboards/keyhive/maypad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "maypad",
+ "manufacturer": "KeyHive",
"url": "https://keyhive.xyz/shop/may-pad",
"maintainer": "codybender",
+ "usb": {
+ "vid": "0x4B48",
+ "pid": "0x4D50",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/keyhive/navi10/info.json b/keyboards/keyhive/navi10/info.json
index e3fc49fbed..ecafbeb089 100644
--- a/keyboards/keyhive/navi10/info.json
+++ b/keyboards/keyhive/navi10/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "Navi10",
+ "manufacturer": "emdarcher",
"url": "",
"maintainer": "emdarcher",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"Fn", "x":0, "y":0}, {"label":"Home", "x":1, "y":0}, {"label":"PgUp", "x":2, "y":0}, {"label":"Del", "x":0, "y":1}, {"label":"End", "x":1, "y":1}, {"label":"PgDn", "x":2, "y":1}, {"label":"Up", "x":1, "y":3}, {"label":"Left", "x":0, "y":4}, {"label":"Down", "x":1, "y":4}, {"label":"Right", "x":2, "y":4}]
diff --git a/keyboards/keyhive/navi10/keymaps/default/keymap.c b/keyboards/keyhive/navi10/keymaps/default/keymap.c
index d1b3127760..c4295b1553 100644
--- a/keyboards/keyhive/navi10/keymaps/default/keymap.c
+++ b/keyboards/keyhive/navi10/keymaps/default/keymap.c
@@ -127,5 +127,5 @@ void tk_reset(qk_tap_dance_state_t *state, void *user_data){
//associate the tap dance key with its functionality
qk_tap_dance_action_t tap_dance_actions[] = {
- [TAPPY_KEY] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, tk_finished, tk_reset, 275)
+ [TAPPY_KEY] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tk_finished, tk_reset)
};
diff --git a/keyboards/keyhive/navi10/keymaps/devdev/keymap.c b/keyboards/keyhive/navi10/keymaps/devdev/keymap.c
index b0d43ebc69..0fc20cbbd4 100644
--- a/keyboards/keyhive/navi10/keymaps/devdev/keymap.c
+++ b/keyboards/keyhive/navi10/keymaps/devdev/keymap.c
@@ -259,5 +259,5 @@ void tk_reset(qk_tap_dance_state_t *state, void *user_data){
//associate the tap dance key with its functionality
qk_tap_dance_action_t tap_dance_actions[] = {
- [TAPPY_KEY] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, tk_finished, tk_reset, TAPPING_TERM)
+ [TAPPY_KEY] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tk_finished, tk_reset)
};
diff --git a/keyboards/keyhive/navi10/keymaps/emdarcher/keymap.c b/keyboards/keyhive/navi10/keymaps/emdarcher/keymap.c
index 40efed48d5..37850e28f3 100644
--- a/keyboards/keyhive/navi10/keymaps/emdarcher/keymap.c
+++ b/keyboards/keyhive/navi10/keymaps/emdarcher/keymap.c
@@ -178,5 +178,5 @@ void tk_reset(qk_tap_dance_state_t *state, void *user_data){
//associate the tap dance key with its functionality
qk_tap_dance_action_t tap_dance_actions[] = {
- [TAPPY_KEY] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, tk_finished, tk_reset, 275)
+ [TAPPY_KEY] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tk_finished, tk_reset)
};
diff --git a/keyboards/keyhive/navi10/rev0/config.h b/keyboards/keyhive/navi10/rev0/config.h
index 22a985c280..3d64b02771 100644
--- a/keyboards/keyhive/navi10/rev0/config.h
+++ b/keyboards/keyhive/navi10/rev0/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER emdarcher
-#define PRODUCT Navi10
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 3
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B6, B2, B3, B4 }
#define MATRIX_COL_PINS \
{ D1, D0, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keyhive/navi10/rev0/info.json b/keyboards/keyhive/navi10/rev0/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/keyhive/navi10/rev0/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/keyhive/navi10/rev2/config.h b/keyboards/keyhive/navi10/rev2/config.h
index 1dfb210b03..8d3217d65c 100644
--- a/keyboards/keyhive/navi10/rev2/config.h
+++ b/keyboards/keyhive/navi10/rev2/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0002
-#define MANUFACTURER emdarcher
-#define PRODUCT Navi10
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 3
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B6, B2, B3, B4 }
#define MATRIX_COL_PINS \
{ D4, C6, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keyhive/navi10/rev2/info.json b/keyboards/keyhive/navi10/rev2/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/keyhive/navi10/rev2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/keyhive/navi10/rev3/config.h b/keyboards/keyhive/navi10/rev3/config.h
index 205535273a..7336abb6d6 100644
--- a/keyboards/keyhive/navi10/rev3/config.h
+++ b/keyboards/keyhive/navi10/rev3/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0003
-#define MANUFACTURER emdarcher
-#define PRODUCT Navi10
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 3
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B6, B2, B3, B4 }
#define MATRIX_COL_PINS \
{ D4, E6, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keyhive/navi10/rev3/info.json b/keyboards/keyhive/navi10/rev3/info.json
new file mode 100644
index 0000000000..b377cdff00
--- /dev/null
+++ b/keyboards/keyhive/navi10/rev3/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/keyhive/opus/config.h b/keyboards/keyhive/opus/config.h
index 52ed10bc5a..5f7f279346 100644
--- a/keyboards/keyhive/opus/config.h
+++ b/keyboards/keyhive/opus/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x434B
-#define PRODUCT_ID 0x4F50
-#define DEVICE_VER 0x0001
-#define MANUFACTURER rtwayland
-#define PRODUCT Opus
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -32,7 +25,6 @@
/* PCB pin-out */
#define MATRIX_ROW_PINS {B1, B3, B2, B6}
#define MATRIX_COL_PINS {D1, D0, D4, C6, D7, E6, B4, B5, F4, F5, F6, F7}
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keyhive/opus/info.json b/keyboards/keyhive/opus/info.json
index 1b2da11367..422ede053f 100644
--- a/keyboards/keyhive/opus/info.json
+++ b/keyboards/keyhive/opus/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "opus",
+ "keyboard_name": "Opus",
+ "manufacturer": "rtwayland",
"maintainer": "rtwayland",
+ "usb": {
+ "vid": "0x434B",
+ "pid": "0x4F50",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keyhive/opus/keymaps/thefoxcodes/keymap.c b/keyboards/keyhive/opus/keymaps/thefoxcodes/keymap.c
index e0adb2af32..6c8b278264 100644
--- a/keyboards/keyhive/opus/keymaps/thefoxcodes/keymap.c
+++ b/keyboards/keyhive/opus/keymaps/thefoxcodes/keymap.c
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MEDIA] = LAYOUT(
KC_TRNS, SGUI(KC_5), SGUI(KC_3), SGUI(KC_4), MEH(KC_4), KC_VOLU, LCA(KC_U), LCAG(KC_LEFT), LCAG(KC_RGHT), LCA(KC_I), LCA(KC_EQL), LALT(LGUI(KC_POWER)),
KC_CAPS, KC_F11, KC_MPRV, KC_MNXT, KC_MPLY, KC_VOLD, LCA(KC_LEFT), LCA(KC_DOWN), LCA(KC_UP), LCA(KC_RIGHT), LCA(KC_MINS), KC_TRNS,
- KC_BRID, KC_BRIU, LGUI(KC_MINS), LGUI(KC_PLUS), LGUI(KC_GRV), KC_MUTE, LCA(KC_J), LCA(KC_ENT), LCA(KC_C), LCA(KC_K), MEH(KC_UP), RESET,
+ KC_BRID, KC_BRIU, LGUI(KC_MINS), LGUI(KC_PLUS), LGUI(KC_GRV), KC_MUTE, LCA(KC_J), LCA(KC_ENT), LCA(KC_C), LCA(KC_K), MEH(KC_UP), QK_BOOT,
LCTL(LSFT(KC_TAB)), LCTL(KC_TAB), KC_NO, KC_NO, MEH(KC_RGHT), MEH(KC_LEFT)
),
[_WORD] = LAYOUT(
diff --git a/keyboards/keyhive/smallice/config.h b/keyboards/keyhive/smallice/config.h
index 5ebafba42d..ac2db030f1 100644
--- a/keyboards/keyhive/smallice/config.h
+++ b/keyboards/keyhive/smallice/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x514B // QK Quark
-#define PRODUCT_ID 0x5341 // SA smAllice
-#define DEVICE_VER 0x0001
-#define MANUFACTURER quark
-#define PRODUCT smAllice
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B6, B5, B4 }
#define MATRIX_COL_PINS { C7, C6, F7, F6, F5, F4, F1, D4, D6, D7, D0, D1, D2, D3, D5 }
-#define UNUSED_PINS { E6, F0 }
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keyhive/smallice/info.json b/keyboards/keyhive/smallice/info.json
index 24ce4cce22..5eb8d0a42d 100644
--- a/keyboards/keyhive/smallice/info.json
+++ b/keyboards/keyhive/smallice/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "smAllice",
+ "manufacturer": "quark",
"url": "https://keyhive.xyz/shop/smallice",
"maintainer": "https://github.com/Armastardo",
+ "usb": {
+ "vid": "0x514B",
+ "pid": "0x5341",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"V+", "x":0.5, "y":0}, {"label":"Tab", "x":1.75, "y":0}, {"label":"Q", "x":2.75, "y":0}, {"label":"W", "x":3.75, "y":0}, {"label":"E", "x":4.75, "y":0}, {"label":"R", "x":5.75, "y":0}, {"label":"T", "x":6.75, "y":0}, {"label":"Y", "x":8.25, "y":0}, {"label":"U", "x":9.25, "y":0}, {"label":"I", "x":10.25, "y":0}, {"label":"O", "x":11.25, "y":0}, {"label":"P", "x":12.25, "y":0}, {"label":"[ {", "x":13.25, "y":0}, {"label":"] }", "x":14.25, "y":0}, {"label":"Bcsp", "x":15.25, "y":0}, {"label":"V-", "x":0.25, "y":1}, {"label":"Caps", "x":1.5, "y":1, "w":1.25}, {"label":"A", "x":2.75, "y":1}, {"label":"S", "x":3.75, "y":1}, {"label":"D", "x":4.75, "y":1}, {"label":"F", "x":5.75, "y":1}, {"label":"G", "x":6.75, "y":1}, {"label":"H", "x":8.75, "y":1}, {"label":"J", "x":9.75, "y":1}, {"label":"K", "x":10.75, "y":1}, {"label":"L", "x":11.75, "y":1}, {"label":": ;", "x":12.75, "y":1}, {"label":", \"", "x":13.75, "y":1}, {"label":"Enter", "x":14.75, "y":1, "w":1.75}, {"label":"V-", "x":0, "y":2}, {"label":"Shift", "x":1.25, "y":2, "w":1.75}, {"label":"Z", "x":3, "y":2}, {"label":"X", "x":4, "y":2}, {"label":"C", "x":5, "y":2}, {"label":"V", "x":6, "y":2}, {"label":"B", "x":7, "y":2}, {"label":"B", "x":8.5, "y":2}, {"label":"N", "x":9.5, "y":2}, {"label":"M", "x":10.5, "y":2}, {"label":"<", "x":11.5, "y":2}, {"label":">", "x":12.5, "y":2}, {"label":"Shift", "x":13.5, "y":2, "w":1.25}, {"label":"Up", "x":14.75, "y":2}, {"label":"?", "x":15.75, "y":2}, {"label":"Ctrl", "x":1.25, "y":3}, {"label":"Alt", "x":3, "y":3, "w":1.25}, {"x":4.25, "y":3, "w":2}, {"label":"Win", "x":6.25, "y":3}, {"x":9.5, "y":3, "w":2.75}, {"label":"Fn", "x":12.25, "y":3}, {"label":"left", "x":13.75, "y":3}, {"label":"down", "x":14.75, "y":3}, {"label":"right", "x":15.75, "y":3}]
diff --git a/keyboards/keyhive/southpole/config.h b/keyboards/keyhive/southpole/config.h
index 5603829c47..d74682cea2 100644
--- a/keyboards/keyhive/southpole/config.h
+++ b/keyboards/keyhive/southpole/config.h
@@ -2,13 +2,6 @@
//#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER u/waxpoetic
-#define PRODUCT southpole
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 20
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D2, D3, C6, C7, D5 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D0, D1, F0, F1, F4, F5, F6, F7, B6, B5, B4, D7, D6, D4, E6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keyhive/southpole/info.json b/keyboards/keyhive/southpole/info.json
index 9781fd35ab..1091c51911 100644
--- a/keyboards/keyhive/southpole/info.json
+++ b/keyboards/keyhive/southpole/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "southpole",
+ "manufacturer": "u/waxpoetic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keyhive/southpole/keymaps/foobeard/keymap.c b/keyboards/keyhive/southpole/keymaps/foobeard/keymap.c
index ef2710d0a3..76ff1f5637 100644
--- a/keyboards/keyhive/southpole/keymaps/foobeard/keymap.c
+++ b/keyboards/keyhive/southpole/keymaps/foobeard/keymap.c
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_RAISE] = LAYOUT(
- 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_CALC, \
+ QK_BOOT, _______, _______, _______, 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_CALC, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
diff --git a/keyboards/keyhive/uno/info.json b/keyboards/keyhive/uno/info.json
index d426f9e426..9d39163a1b 100644
--- a/keyboards/keyhive/uno/info.json
+++ b/keyboards/keyhive/uno/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Uno",
+ "manufacturer": "Broekhuijsen",
"url": "https://www.reddit.com/r/mechmarket/comments/gyijm7/gb_uno/",
"maintainer": "Snipeye",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xACC8"
+ },
"layouts": {
"LAYOUT": {
"layout": [ {"x": 0, "y": 0 }]
diff --git a/keyboards/keyhive/uno/rev1/config.h b/keyboards/keyhive/uno/rev1/config.h
index 11c84ad2ab..6e9298e261 100644
--- a/keyboards/keyhive/uno/rev1/config.h
+++ b/keyboards/keyhive/uno/rev1/config.h
@@ -17,13 +17,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xACC8
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Broekhuijsen
-#define PRODUCT Uno rev1
-
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
// #define RGBLIGHT_ANIMATIONS
@@ -35,7 +28,6 @@
#define DIRECT_PINS { \
{ B6 } \
}
-#define UNUSED_PINS
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN F6
diff --git a/keyboards/keyhive/uno/rev1/info.json b/keyboards/keyhive/uno/rev1/info.json
new file mode 100644
index 0000000000..69d6dfba0d
--- /dev/null
+++ b/keyboards/keyhive/uno/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Uno rev1",
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/keyhive/uno/rev2/config.h b/keyboards/keyhive/uno/rev2/config.h
index 37ea08c017..f53e38b617 100644
--- a/keyboards/keyhive/uno/rev2/config.h
+++ b/keyboards/keyhive/uno/rev2/config.h
@@ -17,13 +17,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xACC8
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Broekhuijsen
-#define PRODUCT Uno rev2
-
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
/* ENCODER */
@@ -38,7 +31,6 @@
#define DIRECT_PINS { \
{ D0 } \
}
-#define UNUSED_PINS
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN D1
diff --git a/keyboards/keyhive/uno/rev2/info.json b/keyboards/keyhive/uno/rev2/info.json
new file mode 100644
index 0000000000..787f306351
--- /dev/null
+++ b/keyboards/keyhive/uno/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Uno rev2",
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/keyhive/ut472/config.h b/keyboards/keyhive/ut472/config.h
index dc8f7f7555..a9d24c0c9e 100644
--- a/keyboards/keyhive/ut472/config.h
+++ b/keyboards/keyhive/ut472/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0472
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Keyhive
-#define PRODUCT UT47.2
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -32,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { D1, D2, D3, D4 }
#define MATRIX_COL_PINS { C4, C5, B7, B6, B5, B4, B3, B2, B1, B0, D6, D5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
diff --git a/keyboards/keyhive/ut472/info.json b/keyboards/keyhive/ut472/info.json
index fe60c5b7f7..e1ea825650 100644
--- a/keyboards/keyhive/ut472/info.json
+++ b/keyboards/keyhive/ut472/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "UT47.2",
+ "manufacturer": "Keyhive",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0472",
+ "device_version": "0.0.2"
+ },
"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":"Backspace", "x":11, "y":0, "w":1.5}, {"label":"LT(3) / 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, "w":1.25}, {"label":"Shift", "x":0, "y":2, "w":1.5}, {"label":"Z", "x":1.5, "y":2}, {"label":"X", "x":2.5, "y":2}, {"label":"C", "x":3.5, "y":2}, {"label":"V", "x":4.5, "y":2}, {"label":"B", "x":5.5, "y":2}, {"label":"N", "x":6.5, "y":2}, {"label":"M", "x":7.5, "y":2}, {"label":"<", "x":8.5, "y":2}, {"label":">", "x":9.5, "y":2}, {"label":"?", "x":10.5, "y":2}, {"label":"Shift / Enter", "x":11.5, "y":2}, {"label":"Ctrl", "x":0, "y":3}, {"label":"Alt", "x":1, "y":3}, {"label":"GUI", "x":2, "y":3}, {"label":"Menu", "x":3, "y":3}, {"label":"MO(2)", "x":4, "y":3, "w":1.25}, {"x":5.25, "y":3, "w":2}, {"label":"MO(1)", "x":7.25, "y":3, "w":1.25}, {"label":"\u2190", "x":8.5, "y":3}, {"label":"\u2193", "x":9.5, "y":3}, {"label":"\u2191", "x":10.5, "y":3}, {"label":"\u2192", "x":11.5, "y":3}]
diff --git a/keyboards/keyhive/ut472/keymaps/annihilator6000/UT472_Annihilator6000_Configurator_file.json b/keyboards/keyhive/ut472/keymaps/annihilator6000/UT472_Annihilator6000_Configurator_file.json
index 45569d5588..68e5272045 100755
--- a/keyboards/keyhive/ut472/keymaps/annihilator6000/UT472_Annihilator6000_Configurator_file.json
+++ b/keyboards/keyhive/ut472/keymaps/annihilator6000/UT472_Annihilator6000_Configurator_file.json
@@ -1 +1 @@
-{"keyboard":"ut472","keymap":"ut472_layout_switching","layout":"LAYOUT","layers":[["KC_ESC","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_BSPC","LT(3,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_SFTENT","KC_LCTL","KC_LALT","KC_LGUI","KC_APP","MO(2)","KC_SPC","MO(1)","KC_LEFT","KC_DOWN","KC_UP","KC_RGHT"],["KC_ESC","KC_Q","KC_D","KC_R","KC_W","KC_B","KC_J","KC_F","KC_U","KC_P","KC_SCLN","KC_BSPC","LT(3,KC_TAB)","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_SLSH","KC_SFTENT","KC_LCTL","KC_LALT","KC_LGUI","KC_APP","MO(2)","KC_SPC","MO(1)","KC_LEFT","KC_DOWN","KC_UP","KC_RGHT"],["KC_ESC","KC_Q","KC_W","KC_F","KC_P","KC_G","KC_J","KC_L","KC_U","KC_Y","KC_SCLN","KC_BSPC","LT(3,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_SFTENT","KC_LCTL","KC_LALT","KC_LGUI","KC_APP","MO(2)","KC_SPC","MO(1)","KC_LEFT","KC_DOWN","KC_UP","KC_RGHT"],["KC_ESC","KC_Q","KC_W","KC_F","KC_P","KC_B","KC_J","KC_L","KC_U","KC_Y","KC_SCLN","KC_BSPC","LT(3,KC_TAB)","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_X","KC_C","KC_D","KC_V","KC_Z","KC_M","KC_H","KC_COMM","KC_DOT","KC_SLSH","KC_SFTENT","KC_LCTL","KC_LALT","KC_LGUI","KC_APP","MO(2)","KC_SPC","MO(1)","KC_LEFT","KC_DOWN","KC_UP","KC_RGHT"],["KC_ESC","KC_QUOT","KC_COMM","KC_DOT","KC_P","KC_Y","KC_F","KC_G","KC_C","KC_R","KC_L","KC_BSPC","LT(3,KC_TAB)","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_SFTENT","KC_LCTL","KC_LALT","KC_LGUI","KC_APP","MO(2)","KC_SPC","MO(1)","KC_LEFT","KC_DOWN","KC_UP","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_DEL","KC_NO","RGB_TOG","RGB_MOD","RGB_VAI","RGB_VAD","KC_NO","KC_NO","KC_MINS","KC_EQL","KC_LBRC","KC_RBRC","KC_BSLS","KC_NO","KC_F11","KC_F12","KC_F13","KC_F14","KC_F15","KC_F16","KC_F17","KC_F18","KC_F19","KC_F20","KC_NO","KC_NO","KC_NO","KC_NO","KC_CAPS","KC_NO","KC_NO","KC_TRNS","KC_HOME","KC_PGDN","KC_PGUP","KC_END"],["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_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_UNDS","KC_PLUS","KC_LCBR","KC_RCBR","KC_PIPE","KC_NO","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_NO","KC_NO","KC_NO","KC_NO","KC_CAPS","KC_TRNS","KC_NO","KC_NO","KC_HOME","KC_PGDN","KC_PGUP","KC_END"],["KC_ESC","KC_CALC","KC_WHOM","KC_MAIL","KC_MYCM","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_PSCR","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","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_WH_L","KC_WH_D","KC_WH_U","KC_WH_R"],["RESET","KC_NO","KC_NO","RGB_TOG","RGB_MOD","RGB_HUI","RGB_HUD","RGB_SAI","RGB_SAD","RGB_VAI","RGB_VAD","KC_DEL","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","ANY(Qwerty)","ANY(Workman)","ANY(Colemak)","ANY(Colemak Mod-DH)","ANY(Dvorak)","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","DEBUG","KC_NO","KC_NO","KC_NO","KC_TRNS","KC_NO","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO"]],"author":"Annihilator6000","notes":"Layer 0 = Qwerty\nLayer 1 = Workman\nLayer 2 = Colemak\nLayer 3 = Colemak Mod-DH\nLayer 4 = Dvorak\nLayer 5 = Function Layer 1 (MO 1)\nLayer 6 = Function Layer 2 (MO 2)\nLayer 7 = Function Layer 3 (LT 3: Hold Tab)\nLayer 8 = Planck-style Adjust Layer (Hold MO 1 and MO 2 at the same time)"} \ No newline at end of file
+{"keyboard":"ut472","keymap":"ut472_layout_switching","layout":"LAYOUT","layers":[["KC_ESC","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_BSPC","LT(3,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_SFTENT","KC_LCTL","KC_LALT","KC_LGUI","KC_APP","MO(2)","KC_SPC","MO(1)","KC_LEFT","KC_DOWN","KC_UP","KC_RGHT"],["KC_ESC","KC_Q","KC_D","KC_R","KC_W","KC_B","KC_J","KC_F","KC_U","KC_P","KC_SCLN","KC_BSPC","LT(3,KC_TAB)","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_SLSH","KC_SFTENT","KC_LCTL","KC_LALT","KC_LGUI","KC_APP","MO(2)","KC_SPC","MO(1)","KC_LEFT","KC_DOWN","KC_UP","KC_RGHT"],["KC_ESC","KC_Q","KC_W","KC_F","KC_P","KC_G","KC_J","KC_L","KC_U","KC_Y","KC_SCLN","KC_BSPC","LT(3,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_SFTENT","KC_LCTL","KC_LALT","KC_LGUI","KC_APP","MO(2)","KC_SPC","MO(1)","KC_LEFT","KC_DOWN","KC_UP","KC_RGHT"],["KC_ESC","KC_Q","KC_W","KC_F","KC_P","KC_B","KC_J","KC_L","KC_U","KC_Y","KC_SCLN","KC_BSPC","LT(3,KC_TAB)","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_X","KC_C","KC_D","KC_V","KC_Z","KC_M","KC_H","KC_COMM","KC_DOT","KC_SLSH","KC_SFTENT","KC_LCTL","KC_LALT","KC_LGUI","KC_APP","MO(2)","KC_SPC","MO(1)","KC_LEFT","KC_DOWN","KC_UP","KC_RGHT"],["KC_ESC","KC_QUOT","KC_COMM","KC_DOT","KC_P","KC_Y","KC_F","KC_G","KC_C","KC_R","KC_L","KC_BSPC","LT(3,KC_TAB)","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_SFTENT","KC_LCTL","KC_LALT","KC_LGUI","KC_APP","MO(2)","KC_SPC","MO(1)","KC_LEFT","KC_DOWN","KC_UP","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_DEL","KC_NO","RGB_TOG","RGB_MOD","RGB_VAI","RGB_VAD","KC_NO","KC_NO","KC_MINS","KC_EQL","KC_LBRC","KC_RBRC","KC_BSLS","KC_NO","KC_F11","KC_F12","KC_F13","KC_F14","KC_F15","KC_F16","KC_F17","KC_F18","KC_F19","KC_F20","KC_NO","KC_NO","KC_NO","KC_NO","KC_CAPS","KC_NO","KC_NO","KC_TRNS","KC_HOME","KC_PGDN","KC_PGUP","KC_END"],["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_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_UNDS","KC_PLUS","KC_LCBR","KC_RCBR","KC_PIPE","KC_NO","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_NO","KC_NO","KC_NO","KC_NO","KC_CAPS","KC_TRNS","KC_NO","KC_NO","KC_HOME","KC_PGDN","KC_PGUP","KC_END"],["KC_ESC","KC_CALC","KC_WHOM","KC_MAIL","KC_MYCM","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_PSCR","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","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_WH_L","KC_WH_D","KC_WH_U","KC_WH_R"],["QK_BOOT","KC_NO","KC_NO","RGB_TOG","RGB_MOD","RGB_HUI","RGB_HUD","RGB_SAI","RGB_SAD","RGB_VAI","RGB_VAD","KC_DEL","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","ANY(Qwerty)","ANY(Workman)","ANY(Colemak)","ANY(Colemak Mod-DH)","ANY(Dvorak)","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","DEBUG","KC_NO","KC_NO","KC_NO","KC_TRNS","KC_NO","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO"]],"author":"Annihilator6000","notes":"Layer 0 = Qwerty\nLayer 1 = Workman\nLayer 2 = Colemak\nLayer 3 = Colemak Mod-DH\nLayer 4 = Dvorak\nLayer 5 = Function Layer 1 (MO 1)\nLayer 6 = Function Layer 2 (MO 2)\nLayer 7 = Function Layer 3 (LT 3: Hold Tab)\nLayer 8 = Planck-style Adjust Layer (Hold MO 1 and MO 2 at the same time)"} \ No newline at end of file
diff --git a/keyboards/keyhive/ut472/keymaps/annihilator6000/keymap.c b/keyboards/keyhive/ut472/keymaps/annihilator6000/keymap.c
index c4453279d2..8575da1901 100644
--- a/keyboards/keyhive/ut472/keymaps/annihilator6000/keymap.c
+++ b/keyboards/keyhive/ut472/keymaps/annihilator6000/keymap.c
@@ -201,7 +201,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT(
- RESET, _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL,
+ QK_BOOT, _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL,
_______, _______, _______, _______, _______, _______, QWERTY, WORKMAN, COLEMAK, COLEMAK_MOD_DH, DVORAK, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/keyhive/ut472/keymaps/gardego5/keymap.c b/keyboards/keyhive/ut472/keymaps/gardego5/keymap.c
new file mode 100644
index 0000000000..d72d4aa364
--- /dev/null
+++ b/keyboards/keyhive/ut472/keymaps/gardego5/keymap.c
@@ -0,0 +1,116 @@
+/* Copyright 2022 Garrett Davis (@Gardego5)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+/* This controls special press and hold keys.
+ * Maps right arrow to F15 when held, to be used for push to talk.
+ */
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LT(0, KC_RIGHT):
+ if (!record->tap.count) {
+ if (record->event.pressed) {
+ register_code16(KC_F15);
+ } else {
+ unregister_code16(KC_F15);
+ }
+ return false;
+ }
+ return true;
+ }
+
+ return true;
+}
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Base Layer
+ * ,-------------------------------------------------------------------------.
+ * | Esc | Q | W | E | R | T | Y | U | I | O | P |Bspace |
+ * |-------------------------------------------------------------------------+
+ * | Tab | A | S | D | F | G | H | J | K | L | ; |Sh/Ent|
+ * |-------------------------------------------------------------------------+
+ * | Shift | Z | X | C | V | B | N | M | , | . | / | ' |
+ * |-------------------------------------------------------------------------+
+ * | Ctrl| Alt | L3 | Gui | L2 | Space | L1 | Left| Down| Up|Rt/F15|
+ * `-------------------------------------------------------------------------'
+ */
+
+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_SFTENT,
+KC_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_LALT, MO(3) , KC_LGUI, MO(2) , KC_SPC , MO(1) , KC_LEFT, KC_DOWN, KC_UP , LT(0, KC_RIGHT)
+),
+
+ /* FN Layer 1
+ * ,-------------------------------------------------------------------------.
+ * | ` ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Delete|
+ * |-------------------------------------------------------------------------+
+ * | Tab | < | > | ( | ) | | | - | = | [ | ] |Sh/Ent|
+ * |-------------------------------------------------------------------------+
+ * | Shift | | | | | | | | , | . | \ |Caps |
+ * |-------------------------------------------------------------------------+
+ * | Ctrl| Alt | L3 | Gui | L2 | Space | L1 | Home| PgDn| PgUp| End |
+ * `-------------------------------------------------------------------------'
+ */
+
+LAYOUT( /* Right */
+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_TRNS, KC_LT , KC_GT , KC_LPRN, KC_RPRN, KC_NO , KC_NO , KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, KC_TRNS,
+KC_TRNS, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_TRNS, KC_TRNS, KC_BSLS, KC_CAPS,
+KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+),
+
+ /* FN Layer 2
+ * ,-------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |-------------------------------------------------------------------------+
+ * | Tab | | Mute| Vol-| Vol+| | | Left| Down| Up |Right|Sh/Ent|
+ * |-------------------------------------------------------------------------+
+ * | Shift | |Med<<|Pause|Med>>| | | |LMous|RMous| | |
+ * |-------------------------------------------------------------------------+
+ * | Ctrl| Alt | L3 | Gui | L2 | Space | L1 |<Mous|vMous|^Mous|>Mous|
+ * `-------------------------------------------------------------------------'
+ */
+
+LAYOUT( /* Left */
+KC_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_NO , KC_MUTE, KC_VOLD, KC_VOLU, KC_NO , KC_NO , KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_TRNS,
+KC_TRNS, KC_NO , KC_MPRV, KC_MPLY, KC_MNXT, KC_NO , KC_NO , KC_NO , KC_BTN1, KC_BTN2, KC_NO , KC_NO ,
+KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R
+),
+
+ /* FN Layer 3
+ * ,-------------------------------------------------------------------------.
+ * | Esc | RGB | RGB | | | |#Lock| 7 | 8 | 9 | |Bspace |
+ * |-------------------------------------------------------------------------+
+ * | Tab | / | * | - | + | = | | 4 | 5 | 6 | |Sh/Ent|
+ * |-------------------------------------------------------------------------+
+ * | Shift | | | | | | | 1 | 2 | 3 | Up | |
+ * |-------------------------------------------------------------------------+
+ * | Ctrl| Alt | L3 | Gui | L2 | Space | 0 | . | Left| Down|Right|
+ * `-------------------------------------------------------------------------'
+ */
+
+LAYOUT( /* 3 */
+KC_ESC , RGB_TOG, RGB_MOD, KC_NO , KC_NO , KC_NO , KC_NLCK, KC_P7 , KC_P8 , KC_P9 , KC_NO , KC_BSPC,
+KC_TRNS, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, KC_PEQL, KC_NO , KC_P4 , KC_P5 , KC_P6 , KC_NO , KC_TRNS,
+KC_TRNS, KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_P1 , KC_P2 , KC_P3 , KC_UP , KC_NO ,
+KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS , KC_P0 , KC_PDOT, KC_LEFT, KC_DOWN, KC_RGHT
+),
+};
diff --git a/keyboards/keyhive/ut472/keymaps/gardego5/readme.md b/keyboards/keyhive/ut472/keymaps/gardego5/readme.md
new file mode 100644
index 0000000000..44655ba346
--- /dev/null
+++ b/keyboards/keyhive/ut472/keymaps/gardego5/readme.md
@@ -0,0 +1,5 @@
+# Gardego5's modified layout
+
+![layout image](https://i.imgur.com/eM6YHcY.jpeg)
+
+This layout is designed to be familiar coming from a full-sized keyboard, if you like vim movement keys. Has (hopefully) friendly media keys, and F15 in the bottom right when held, so that you can bind F15 to push to talk.
diff --git a/keyboards/keyhive/ut472/keymaps/hvp/keymap.c b/keyboards/keyhive/ut472/keymaps/hvp/keymap.c
index 80d2d036bd..e39bb46b8d 100644
--- a/keyboards/keyhive/ut472/keymaps/hvp/keymap.c
+++ b/keyboards/keyhive/ut472/keymaps/hvp/keymap.c
@@ -55,13 +55,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), KC_7, KC_8, KC_9, KC_BSPC,
_______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_4, KC_5, KC_6, KC_0,
_______, _______, _______, _______, _______, _______, XXXXXXX, KC_0, KC_1, KC_2, KC_3, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[5] = LAYOUT( /* Tab */
_______, G(S(KC_1)), G(S(KC_2)), G(S(KC_3)), G(S(KC_4)), G(S(KC_5)), G(S(KC_6)), G(S(KC_7)), G(S(KC_8)), G(S(KC_9)), G(S(KC_0)), _______,
RGB_TOG, RGB_MOD, RGB_M_P, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______,
KC_PSCR, _______, RGB_RMOD, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, KC_CAPS,
- RESET, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, KC_NLCK
+ QK_BOOT, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, KC_NLCK
),
};
diff --git a/keyboards/keyhive/ut472/keymaps/stefanopace/keymap.c b/keyboards/keyhive/ut472/keymaps/stefanopace/keymap.c
index 7cc3b70082..25bb8cd984 100644
--- a/keyboards/keyhive/ut472/keymaps/stefanopace/keymap.c
+++ b/keyboards/keyhive/ut472/keymaps/stefanopace/keymap.c
@@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT
),
/* Fn Layer (Fn)
diff --git a/keyboards/keyhive/ut472/keymaps/tucznak/keymap.c b/keyboards/keyhive/ut472/keymaps/tucznak/keymap.c
index 7fbbd0e76e..44ef2ee2ef 100644
--- a/keyboards/keyhive/ut472/keymaps/tucznak/keymap.c
+++ b/keyboards/keyhive/ut472/keymaps/tucznak/keymap.c
@@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FN] = LAYOUT(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU,
_______, VLK_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, KC_VOLD,
_______, RGB_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, KC_MSTP, KC_MUTE,
KC_SLEP, _______, _______, _______, _______, LCA(KC_DEL), LCA(KC_INS), _______, KC_MPRV, KC_MPLY, KC_MNXT
diff --git a/keyboards/keyprez/bison/config.h b/keyboards/keyprez/bison/config.h
index b98cbc1be1..08a81a4a91 100644
--- a/keyboards/keyprez/bison/config.h
+++ b/keyboards/keyprez/bison/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER csandven
-#define PRODUCT bison
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D2, F7, B1, B3, D7 }
#define MATRIX_COL_PINS { D3, E6, B2, B4, D4, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keyprez/bison/info.json b/keyboards/keyprez/bison/info.json
index 66a9755946..36aeb27a10 100644
--- a/keyboards/keyprez/bison/info.json
+++ b/keyboards/keyprez/bison/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "bison",
+ "manufacturer": "csandven",
"url": "",
"maintainer": "Christian Sandven",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keyprez/corgi/config.h b/keyboards/keyprez/corgi/config.h
index a3ebf2747f..bebc94e14b 100644
--- a/keyboards/keyprez/corgi/config.h
+++ b/keyboards/keyprez/corgi/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Christian Sandven
-#define PRODUCT corgi
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 7
@@ -36,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F5, F7, B2, B6, F4, F6, B1, B3 }
#define MATRIX_COL_PINS { B5, B4, E6, D7, C6, D2, B7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/keyprez/corgi/info.json b/keyboards/keyprez/corgi/info.json
index 04d89e6b1b..f2b9c8f722 100644
--- a/keyboards/keyprez/corgi/info.json
+++ b/keyboards/keyprez/corgi/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "corgi",
+ "manufacturer": "Christian Sandven",
"url": "",
"maintainer": "Christian Sandven",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keyprez/rhino/config.h b/keyboards/keyprez/rhino/config.h
index 54077ac939..16782aad01 100644
--- a/keyboards/keyprez/rhino/config.h
+++ b/keyboards/keyprez/rhino/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Christian Sandven
-#define PRODUCT rhino
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 7
diff --git a/keyboards/keyprez/rhino/info.json b/keyboards/keyprez/rhino/info.json
index fbe403fc35..1ad313854d 100644
--- a/keyboards/keyprez/rhino/info.json
+++ b/keyboards/keyprez/rhino/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "rhino",
+ "manufacturer": "Christian Sandven",
"url": "",
"maintainer": "Christian Sandven",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_2x2u": {
"layout": [
diff --git a/keyboards/keyprez/unicorn/config.h b/keyboards/keyprez/unicorn/config.h
index 44eadb5bfb..739d5b525e 100644
--- a/keyboards/keyprez/unicorn/config.h
+++ b/keyboards/keyprez/unicorn/config.h
@@ -5,13 +5,6 @@
#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
@@ -31,7 +24,6 @@
#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
diff --git a/keyboards/keyprez/unicorn/info.json b/keyboards/keyprez/unicorn/info.json
index ff14396f2a..90a81b8cc8 100644
--- a/keyboards/keyprez/unicorn/info.json
+++ b/keyboards/keyprez/unicorn/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Unicorn",
+ "manufacturer": "Keyprez",
"url": "",
"maintainer": "Keyprez",
+ "usb": {
+ "vid": "0x6B7A",
+ "pid": "0x7563",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keyprez/unicorn/keymaps/jorge/keymap.c b/keyboards/keyprez/unicorn/keymaps/jorge/keymap.c
index f66e5670b0..6c21a3874c 100644
--- a/keyboards/keyprez/unicorn/keymaps/jorge/keymap.c
+++ b/keyboards/keyprez/unicorn/keymaps/jorge/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_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, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, KC_BRIU, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRID, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CALC
),
diff --git a/keyboards/keyquest/enclave/config.h b/keyboards/keyquest/enclave/config.h
new file mode 100644
index 0000000000..b91c01dca5
--- /dev/null
+++ b/keyboards/keyquest/enclave/config.h
@@ -0,0 +1,52 @@
+/* Copyright 2021 keyquest
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* key matrix size */
+#define MATRIX_ROWS 3
+#define MATRIX_COLS 3
+
+/* Keyboard Matrix Assignments*/
+#define MATRIX_ROW_PINS { D6, B6, F5 }
+#define MATRIX_COL_PINS { B4, B7, C7 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* RGB light setup*/
+#define RGB_DI_PIN B5
+#define RGBLED_NUM 2
+#define RGBLIGHT_SLEEP
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+#define RGBLIGHT_LIMIT_VAL 200
+
+/* RGB light 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
+
+/* 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
diff --git a/keyboards/keyquest/enclave/info.json b/keyboards/keyquest/enclave/info.json
new file mode 100644
index 0000000000..da42594e70
--- /dev/null
+++ b/keyboards/keyquest/enclave/info.json
@@ -0,0 +1,27 @@
+{
+ "manufacturer": "keyquest",
+ "keyboard_name": "Enclave-1",
+ "maintainer": "the keyquest team",
+ "usb": {
+ "vid": "0x1117",
+ "pid": "0x0E0E",
+ "device_version": "0.0.1"
+ },
+ "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": [1, 0], "x": 0, "y": 1 },
+ { "matrix": [1, 1], "x": 1, "y": 1 },
+ { "matrix": [1, 2], "x": 2, "y": 1 },
+
+ { "matrix": [2, 0], "x": 0, "y": 2 },
+ { "matrix": [2, 1], "x": 1, "y": 2 },
+ { "matrix": [2, 2], "x": 2, "y": 2 }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/keyquest/enclave/keymaps/default/keymap.c b/keyboards/keyquest/enclave/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d1008fac11
--- /dev/null
+++ b/keyboards/keyquest/enclave/keymaps/default/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2021 keyquest
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+/* what each layer does */
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * M = Macro
+ * ┌────┬────┬────â”
+ * │ M1 │ M2 │ M3 │
+ * ├────┼────┼────┤
+ * │ M4 │ M5 │ M6 │
+ * ├────┼────┼────┤
+ * │ M7 │ M8 │ M9 │
+ * └────┴────┴────┘
+ */
+ [0] = LAYOUT(
+ KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK,
+ C(KC_C), C(KC_V), G(KC_V),
+ KC_AUDIO_VOL_UP, KC_AUDIO_VOL_DOWN, MO(1)
+ ),
+
+ [1] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, MO(2), _______
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______,
+ MO(3), _______, _______
+ ),
+
+ [3] = LAYOUT(
+ RGB_TOG, RGB_MODE_PLAIN, RGB_MODE_BREATHE,
+ RGB_MODE_RAINBOW, RGB_MODE_SWIRL, RGB_MODE_GRADIENT,
+ _______, _______, _______
+ )
+};
diff --git a/keyboards/keyquest/enclave/keymaps/via/keymap.c b/keyboards/keyquest/enclave/keymaps/via/keymap.c
new file mode 100644
index 0000000000..766fbdc341
--- /dev/null
+++ b/keyboards/keyquest/enclave/keymaps/via/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2021 keyquest
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received 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] = {
+ /*
+ * M = Macro
+ * ┌────┬────┬────â”
+ * │ M1 │ M2 │ M3 │
+ * ├────┼────┼────┤
+ * │ M4 │ M5 │ M6 │
+ * ├────┼────┼────┤
+ * │ M7 │ M8 │ M9 │
+ * └────┴────┴────┘
+ */
+ [0] = LAYOUT(
+ KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK,
+ KC_AUDIO_VOL_UP, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN,
+ _______, _______, _______
+ ),
+
+ [1] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______,
+ _______, _______, _______,
+ _______, _______, _______
+ )
+};
diff --git a/keyboards/keyquest/enclave/keymaps/via/rules.mk b/keyboards/keyquest/enclave/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/keyquest/enclave/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/keyquest/enclave/readme.md b/keyboards/keyquest/enclave/readme.md
new file mode 100644
index 0000000000..71d955e7a4
--- /dev/null
+++ b/keyboards/keyquest/enclave/readme.md
@@ -0,0 +1,16 @@
+# Enclave-1
+
+![ok](https://i.imgur.com/67HZEJBh.jpg)
+
+Enclave 1 is a fully programmable 9-key macropad + usb hub ideal for those constantly on the move that need to adapt to any situation. Besides being a full-fledged macropad, it can also be used as the main hub for all your other devices such as keyboards, dongles, drives, etc.
+
+* Keyboard Maintainer: [KeyQuest](https://github.com/KeyQuest)
+
+Compile example for this keyboard (after setting up your build environment):
+
+ make keyquest/enclave: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.
diff --git a/keyboards/keyquest/enclave/rules.mk b/keyboards/keyquest/enclave/rules.mk
new file mode 100644
index 0000000000..0730fa9d7e
--- /dev/null
+++ b/keyboards/keyquest/enclave/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
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/keyquest/readme.md b/keyboards/keyquest/readme.md
new file mode 100644
index 0000000000..39939eea37
--- /dev/null
+++ b/keyboards/keyquest/readme.md
@@ -0,0 +1,4 @@
+![](https://i.imgur.com/Z7J7H8F.png)
+
+
+[instagram](https://www.instagram.com/keyquest.tech/)
diff --git a/keyboards/keysofkings/twokey/config.h b/keyboards/keysofkings/twokey/config.h
index 29612187f8..f33537fabb 100755
--- a/keyboards/keysofkings/twokey/config.h
+++ b/keyboards/keysofkings/twokey/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xAE12
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Keys of Kings
-#define PRODUCT Twokey
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 2
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B4, B5 }
#define MATRIX_COL_PINS { B3, B2 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { D7 }
diff --git a/keyboards/keysofkings/twokey/info.json b/keyboards/keysofkings/twokey/info.json
index 979a8e2fc1..cf1d79d250 100644
--- a/keyboards/keysofkings/twokey/info.json
+++ b/keyboards/keysofkings/twokey/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Twokey",
+ "manufacturer": "Keys of Kings",
"url": "",
"maintainer": "Keys of Kings",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xAE12",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keystonecaps/gameroyadvance/config.h b/keyboards/keystonecaps/gameroyadvance/config.h
index cce7904b91..3b949040fd 100644
--- a/keyboards/keystonecaps/gameroyadvance/config.h
+++ b/keyboards/keystonecaps/gameroyadvance/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Keystone Caps
-#define PRODUCT Game Roy ADVANCE
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENCODERS_PAD_B_RIGHT { B2 }
#define SOFT_SERIAL_PIN D2
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
@@ -62,10 +54,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-
-
-#define QMK_KEYS_PER_SCAN 12
-
#define RGB_DI_PIN C7
#ifdef RGB_DI_PIN
#define RGBLIGHT_EFFECT_BREATHING
diff --git a/keyboards/keystonecaps/gameroyadvance/info.json b/keyboards/keystonecaps/gameroyadvance/info.json
index f907de9326..33e62ed20c 100644
--- a/keyboards/keystonecaps/gameroyadvance/info.json
+++ b/keyboards/keystonecaps/gameroyadvance/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Game Roy ADVANCE",
- "maintainer": "@RoyMeetsWorld",
+ "manufacturer": "Keystone Caps",
"url": "https://keystonecaps.store/?product=game-roy-advance-game-pad-group-buy-preorder",
+ "maintainer": "@RoyMeetsWorld",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/keystonecaps/gameroyadvance/readme.md b/keyboards/keystonecaps/gameroyadvance/readme.md
index cc733cea46..9a0c74ef26 100644
--- a/keyboards/keystonecaps/gameroyadvance/readme.md
+++ b/keyboards/keystonecaps/gameroyadvance/readme.md
@@ -25,6 +25,6 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (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` (FN + Escape by default)
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` (FN + Escape by default)
Special thanks to @tpstevens for all of his hard work in creating these firmware files from the mess that I had made.
diff --git a/keyboards/keyten/aperture/aperture.c b/keyboards/keyten/aperture/aperture.c
new file mode 100644
index 0000000000..38415add5a
--- /dev/null
+++ b/keyboards/keyten/aperture/aperture.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 "aperture.h"
diff --git a/keyboards/keyten/aperture/aperture.h b/keyboards/keyten/aperture/aperture.h
new file mode 100644
index 0000000000..e547c91794
--- /dev/null
+++ b/keyboards/keyten/aperture/aperture.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_all
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2D │0E │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │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 │3C │3D │3E │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │46 │4A │ │4C │4D │4E │
+ * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘
+ */
+#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, K2C, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3E, \
+ K40, K41, K42, K46, 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, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, XXX, K3C, K3D, K3E }, \
+ { K40, K41, K42, XXX, XXX, XXX, K46, XXX, XXX, XXX, K4A, XXX, K4C, K4D, K4E } \
+}
diff --git a/keyboards/keyten/aperture/config.h b/keyboards/keyten/aperture/config.h
new file mode 100644
index 0000000000..27eecf2602
--- /dev/null
+++ b/keyboards/keyten/aperture/config.h
@@ -0,0 +1,35 @@
+/*
+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"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { D1, D0, F7, F5, F6 }
+#define MATRIX_COL_PINS { B7, F0, F1, F4, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2 }
+#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/keyten/aperture/info.json b/keyboards/keyten/aperture/info.json
new file mode 100644
index 0000000000..e242337659
--- /dev/null
+++ b/keyboards/keyten/aperture/info.json
@@ -0,0 +1,89 @@
+{
+ "keyboard_name": "Aperture",
+ "manufacturer": "Bizunow",
+ "url": "",
+ "maintainer": "keyten",
+ "usb": {
+ "vid": "0xEB69",
+ "pid": "0x6501",
+ "device_version": "0.0.1"
+ },
+ "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":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.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":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ }
+
+ }
+}
diff --git a/keyboards/keyten/aperture/keymaps/default/keymap.c b/keyboards/keyten/aperture/keymaps/default/keymap.c
new file mode 100644
index 0000000000..732a9bbddc
--- /dev/null
+++ b/keyboards/keyten/aperture/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_BSLS, 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_DEL, 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_LEFT, KC_DOWN, KC_RGHT),
+
+ [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/keyten/aperture/keymaps/default/readme.md b/keyboards/keyten/aperture/keymaps/default/readme.md
new file mode 100644
index 0000000000..59f22e3e8c
--- /dev/null
+++ b/keyboards/keyten/aperture/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Aperture
diff --git a/keyboards/keyten/aperture/keymaps/via/keymap.c b/keyboards/keyten/aperture/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f72f5dbb42
--- /dev/null
+++ b/keyboards/keyten/aperture/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_BSLS, 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_DEL, 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_LEFT, KC_DOWN, KC_RGHT),
+
+ [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/keyten/aperture/keymaps/via/readme.md b/keyboards/keyten/aperture/keymaps/via/readme.md
new file mode 100644
index 0000000000..9ee17fca40
--- /dev/null
+++ b/keyboards/keyten/aperture/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA keymap for Aperture
diff --git a/keyboards/keyten/aperture/keymaps/via/rules.mk b/keyboards/keyten/aperture/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/keyten/aperture/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keyten/aperture/readme.md b/keyboards/keyten/aperture/readme.md
new file mode 100644
index 0000000000..06417bae0f
--- /dev/null
+++ b/keyboards/keyten/aperture/readme.md
@@ -0,0 +1,29 @@
+# Aperture
+
+Aperture is a 65% keyboard with low height of the first row of switches.
+
+Case designed by [Bizunow](https://github.com/Bizunow) ans PCB designed by [keyten](https://github.com/key10iq).
+
+![Aperture image](https://i.imgur.com/L4Z9c96l.jpg)
+
+* Keyboard Maintainer: [keyten](https://github.com/key10iq)
+* Hardware Supported: Aperture PCB
+* Hardware Availability: [GB](https://t.me/gvalchcasciops)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make aperture:default
+
+Flashing example for this keyboard:
+
+ make aperture: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 `QK_BOOT` if it is available
+* Physical reset button: Press the button on the back of the PCB
diff --git a/keyboards/keyten/aperture/rules.mk b/keyboards/keyten/aperture/rules.mk
new file mode 100644
index 0000000000..6983d5c803
--- /dev/null
+++ b/keyboards/keyten/aperture/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/keyten/kt60_m/config.h b/keyboards/keyten/kt60_m/config.h
index 74378e7d23..9e2b068777 100644
--- a/keyboards/keyten/kt60_m/config.h
+++ b/keyboards/keyten/kt60_m/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/keyten/kt60_m/info.json b/keyboards/keyten/kt60_m/info.json
index 7aa30e6251..ddcf445a8d 100644
--- a/keyboards/keyten/kt60_m/info.json
+++ b/keyboards/keyten/kt60_m/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "kt60-M",
+ "manufacturer": "keyten",
"url": "",
"maintainer": "key10iq",
+ "usb": {
+ "vid": "0xEB69",
+ "pid": "0x6001",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_60_tsangan_hhkb"
},
diff --git a/keyboards/keyten/kt60_m/readme.md b/keyboards/keyten/kt60_m/readme.md
index 32ca32c4b5..6a44fb2393 100644
--- a/keyboards/keyten/kt60_m/readme.md
+++ b/keyboards/keyten/kt60_m/readme.md
@@ -23,5 +23,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* Keycode in layout: Press the key mapped to `QK_BOOT` if it is available
* Physical reset button: Press the button on the back of the PCB
diff --git a/keyboards/kikkou/config.h b/keyboards/kikkou/config.h
index 586c8e9661..f9dbebd28c 100644
--- a/keyboards/kikkou/config.h
+++ b/keyboards/kikkou/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -34,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 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
diff --git a/keyboards/kikkou/info.json b/keyboards/kikkou/info.json
index 33b20030e3..1703a71e43 100644
--- a/keyboards/kikkou/info.json
+++ b/keyboards/kikkou/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Kikkou",
+ "manufacturer": "Mechwerkes",
"url": "",
"maintainer": "Mechwerkes",
+ "usb": {
+ "vid": "0x6D65",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/kikoslab/ellora65/config.h b/keyboards/kikoslab/ellora65/config.h
index e3f7452f41..d458250ad1 100644
--- a/keyboards/kikoslab/ellora65/config.h
+++ b/keyboards/kikoslab/ellora65/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/kikoslab/ellora65/info.json b/keyboards/kikoslab/ellora65/info.json
index 2d6b676098..f4bdb9ee00 100644
--- a/keyboards/kikoslab/ellora65/info.json
+++ b/keyboards/kikoslab/ellora65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ellora65",
+ "manufacturer": "Kikos Lab",
"url": "https://github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE88F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kikoslab/ellora65/readme.md b/keyboards/kikoslab/ellora65/readme.md
index 419c5418ec..b021188cf9 100644
--- a/keyboards/kikoslab/ellora65/readme.md
+++ b/keyboards/kikoslab/ellora65/readme.md
@@ -12,7 +12,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/kikoslab/kl90/config.h b/keyboards/kikoslab/kl90/config.h
index b0d983f181..dee2bf8516 100644
--- a/keyboards/kikoslab/kl90/config.h
+++ b/keyboards/kikoslab/kl90/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEA53
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Kikos Lab
-#define PRODUCT KL90
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
diff --git a/keyboards/kikoslab/kl90/info.json b/keyboards/kikoslab/kl90/info.json
index 1354469367..15f573d7db 100644
--- a/keyboards/kikoslab/kl90/info.json
+++ b/keyboards/kikoslab/kl90/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "KL-90",
+ "manufacturer": "Kikos Lab",
"url": "www.kikoslab.com",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEA53",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kin80/blackpill103/config.h b/keyboards/kin80/blackpill103/config.h
index b8be5e6481..052828fb83 100644
--- a/keyboards/kin80/blackpill103/config.h
+++ b/keyboards/kin80/blackpill103/config.h
@@ -17,8 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DEVICE_VER 0x0002
-
#undef MATRIX_ROW_PINS
#undef MATRIX_COL_PINS
diff --git a/keyboards/kin80/blackpill103/info.json b/keyboards/kin80/blackpill103/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/kin80/blackpill103/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/kin80/blackpill401/config.h b/keyboards/kin80/blackpill401/config.h
index 5f5f37c6d3..2cbca43a08 100644
--- a/keyboards/kin80/blackpill401/config.h
+++ b/keyboards/kin80/blackpill401/config.h
@@ -17,8 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DEVICE_VER 0x0003
-
#undef MATRIX_ROW_PINS
#undef MATRIX_COL_PINS
diff --git a/keyboards/kin80/blackpill401/info.json b/keyboards/kin80/blackpill401/info.json
new file mode 100644
index 0000000000..b377cdff00
--- /dev/null
+++ b/keyboards/kin80/blackpill401/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/kin80/blackpill401/rules.mk b/keyboards/kin80/blackpill401/rules.mk
index 264e71d0b5..1fec226e9b 100644
--- a/keyboards/kin80/blackpill401/rules.mk
+++ b/keyboards/kin80/blackpill401/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/kin80/blackpill411/config.h b/keyboards/kin80/blackpill411/config.h
index 5f5f37c6d3..2cbca43a08 100644
--- a/keyboards/kin80/blackpill411/config.h
+++ b/keyboards/kin80/blackpill411/config.h
@@ -17,8 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DEVICE_VER 0x0003
-
#undef MATRIX_ROW_PINS
#undef MATRIX_COL_PINS
diff --git a/keyboards/kin80/blackpill411/info.json b/keyboards/kin80/blackpill411/info.json
new file mode 100644
index 0000000000..b377cdff00
--- /dev/null
+++ b/keyboards/kin80/blackpill411/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/kin80/blackpill411/rules.mk b/keyboards/kin80/blackpill411/rules.mk
index 75bc794ef0..cd1657335d 100644
--- a/keyboards/kin80/blackpill411/rules.mk
+++ b/keyboards/kin80/blackpill411/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/kin80/info.json b/keyboards/kin80/info.json
index f599382d3d..a8d846340e 100644
--- a/keyboards/kin80/info.json
+++ b/keyboards/kin80/info.json
@@ -1,6 +1,6 @@
{
- "keyboard_name": "Kin80",
- "url": "https://github.com/DmNosachev/kinesis80",
+ "keyboard_name": "Kin80",
+ "url": "https://github.com/DmNosachev/kinesis80",
"maintainer": "DmNosachev",
"usb": {
"vid": "0xFEED",
@@ -10,10 +10,192 @@
"diode_direction": "COL2ROW",
"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.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"x":14.5, "y":0}, {"x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":0, "y":1.25, "w":1.25}, {"x":1.25, "y":1.25}, {"x":2.25, "y":1.25}, {"x":3.25, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.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, "w":1.25}, {"x":0, "y":2.25, "w":1.25}, {"x":1.25, "y":2.25}, {"x":2.25, "y":2.25}, {"x":3.25, "y":2.25}, {"x":4.25, "y":2.25}, {"x":5.25, "y":2.25}, {"x":11.25, "y":2.25}, {"x":12.25, "y":2.25}, {"x":13.25, "y":2.25}, {"x":14.25, "y":2.25}, {"x":15.25, "y":2.25}, {"x":16.25, "y":2.25, "w":1.25}, {"x":0, "y":3.25, "w":1.25}, {"x":1.25, "y":3.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":11.25, "y":3.25}, {"x":12.25, "y":3.25}, {"x":13.25, "y":3.25}, {"x":14.25, "y":3.25}, {"x":15.25, "y":3.25}, {"x":16.25, "y":3.25, "w":1.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":11.25, "y":4.25}, {"x":12.25, "y":4.25}, {"x":13.25, "y":4.25}, {"x":14.25, "y":4.25}, {"x":15.25, "y":4.25}, {"x":16.25, "y":4.25, "w":1.25}, {"x":1.25, "y":5.25}, {"x":2.25, "y":5.25}, {"x":3.25, "y":5.25}, {"x":4.25, "y":5.25}, {"x":12.25, "y":5.25}, {"x":13.25, "y":5.25}, {"x":14.25, "y":5.25}, {"x":15.25, "y":5.25}, {"x":6.25, "y":6}, {"x":7.25, "y":6}, {"x":9.25, "y":6}, {"x":10.25, "y":6}, {"x":5.25, "y":7, "h":2}, {"x":6.25, "y":7, "h":2}, {"x":7.25, "y":7}, {"x":9.25, "y":7}, {"x":10.25, "y":7, "h":2}, {"x":11.25, "y":7, "h":2}, {"x":7.25, "y":8}, {"x":9.25, "y":8}]
+ "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.5, "y":0},
+ {"x":12.5, "y":0},
+ {"x":13.5, "y":0},
+ {"x":14.5, "y":0},
+ {"x":15.5, "y":0},
+ {"x":16.5, "y":0},
+
+ {"x":0, "y":1.25, "w":1.25},
+ {"x":1.25, "y":1.25},
+ {"x":2.25, "y":1.25},
+ {"x":3.25, "y":1.25},
+ {"x":4.25, "y":1.25},
+ {"x":5.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, "w":1.25},
+
+ {"x":0, "y":2.25, "w":1.25},
+ {"x":1.25, "y":2.25},
+ {"x":2.25, "y":2.25},
+ {"x":3.25, "y":2.25},
+ {"x":4.25, "y":2.25},
+ {"x":5.25, "y":2.25},
+ {"x":11.25, "y":2.25},
+ {"x":12.25, "y":2.25},
+ {"x":13.25, "y":2.25},
+ {"x":14.25, "y":2.25},
+ {"x":15.25, "y":2.25},
+ {"x":16.25, "y":2.25, "w":1.25},
+
+ {"x":0, "y":3.25, "w":1.25},
+ {"x":1.25, "y":3.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":11.25, "y":3.25},
+ {"x":12.25, "y":3.25},
+ {"x":13.25, "y":3.25},
+ {"x":14.25, "y":3.25},
+ {"x":15.25, "y":3.25},
+ {"x":16.25, "y":3.25, "w":1.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":11.25, "y":4.25},
+ {"x":12.25, "y":4.25},
+ {"x":13.25, "y":4.25},
+ {"x":14.25, "y":4.25},
+ {"x":15.25, "y":4.25},
+ {"x":16.25, "y":4.25, "w":1.25},
+
+ {"x":1.25, "y":5.25},
+ {"x":2.25, "y":5.25},
+ {"x":3.25, "y":5.25},
+ {"x":4.25, "y":5.25},
+ {"x":12.25, "y":5.25},
+ {"x":13.25, "y":5.25},
+ {"x":14.25, "y":5.25},
+ {"x":15.25, "y":5.25},
+
+ {"x":6.25, "y":6},
+ {"x":7.25, "y":6},
+ {"x":9.25, "y":6},
+ {"x":10.25, "y":6},
+
+ {"x":7.25, "y":7},
+ {"x":9.25, "y":7},
+
+ {"x":5.25, "y":7, "h":2},
+ {"x":6.25, "y":7, "h":2},
+ {"x":7.25, "y":8},
+ {"x":9.25, "y":8},
+ {"x":10.25, "y":7, "h":2},
+ {"x":11.25, "y":7, "h":2}
+ ]
},
- "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":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":16, "y":0}, {"x":17, "y":0}, {"x":0, "y":1.25, "w":1.25}, {"x":1.25, "y":1.25}, {"x":2.25, "y":1.25}, {"x":3.25, "y":1.25}, {"x":4.25, "y":1.25}, {"x":5.25, "y":1.25}, {"x":11.75, "y":1.25}, {"x":12.75, "y":1.25}, {"x":13.75, "y":1.25}, {"x":14.75, "y":1.25}, {"x":15.75, "y":1.25}, {"x":16.75, "y":1.25, "w":1.25}, {"x":0, "y":2.25, "w":1.25}, {"x":1.25, "y":2.25}, {"x":2.25, "y":2.25}, {"x":3.25, "y":2.25}, {"x":4.25, "y":2.25}, {"x":5.25, "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, "w":1.25}, {"x":0, "y":3.25, "w":1.25}, {"x":1.25, "y":3.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":11.75, "y":3.25}, {"x":12.75, "y":3.25}, {"x":13.75, "y":3.25}, {"x":14.75, "y":3.25}, {"x":15.75, "y":3.25}, {"x":16.75, "y":3.25, "w":1.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":11.75, "y":4.25}, {"x":12.75, "y":4.25}, {"x":13.75, "y":4.25}, {"x":14.75, "y":4.25}, {"x":15.75, "y":4.25}, {"x":16.75, "y":4.25, "w":1.25}, {"x":0.25, "y":5.25}, {"x":1.25, "y":5.25}, {"x":2.25, "y":5.25}, {"x":3.25, "y":5.25}, {"x":4.25, "y":5.25}, {"x":5.25, "y":5.25}, {"x":11.75, "y":5.25}, {"x":12.75, "y":5.25}, {"x":13.75, "y":5.25}, {"x":14.75, "y":5.25}, {"x":15.75, "y":5.25}, {"x":16.75, "y":5.25}, {"x":6.5, "y":6}, {"x":7.5, "y":6}, {"x":9.5, "y":6}, {"x":10.5, "y":6}, {"x":5.25, "y":7, "h":2}, {"x":6.25, "y":7, "h":2}, {"x":7.25, "y":7}, {"x":9.5, "y":7}, {"x":10.5, "y":7, "h":2}, {"x":11.5, "y":7, "h":2}, {"x":7.25, "y":8}, {"x":9.5, "y":8}]
+ "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":11.5, "y":0},
+ {"x":12.5, "y":0},
+ {"x":13.5, "y":0},
+ {"x":14.5, "y":0},
+ {"x":15.5, "y":0},
+ {"x":16.5, "y":0},
+
+ {"x":0, "y":1.25, "w":1.25},
+ {"x":1.25, "y":1.25},
+ {"x":2.25, "y":1.25},
+ {"x":3.25, "y":1.25},
+ {"x":4.25, "y":1.25},
+ {"x":5.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, "w":1.25},
+
+ {"x":0, "y":2.25, "w":1.25},
+ {"x":1.25, "y":2.25},
+ {"x":2.25, "y":2.25},
+ {"x":3.25, "y":2.25},
+ {"x":4.25, "y":2.25},
+ {"x":5.25, "y":2.25},
+ {"x":11.25, "y":2.25},
+ {"x":12.25, "y":2.25},
+ {"x":13.25, "y":2.25},
+ {"x":14.25, "y":2.25},
+ {"x":15.25, "y":2.25},
+ {"x":16.25, "y":2.25, "w":1.25},
+
+ {"x":0, "y":3.25, "w":1.25},
+ {"x":1.25, "y":3.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":11.25, "y":3.25},
+ {"x":12.25, "y":3.25},
+ {"x":13.25, "y":3.25},
+ {"x":14.25, "y":3.25},
+ {"x":15.25, "y":3.25},
+ {"x":16.25, "y":3.25, "w":1.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":11.25, "y":4.25},
+ {"x":12.25, "y":4.25},
+ {"x":13.25, "y":4.25},
+ {"x":14.25, "y":4.25},
+ {"x":15.25, "y":4.25},
+ {"x":16.25, "y":4.25, "w":1.25},
+
+ {"x":0.25, "y":5.25},
+ {"x":1.25, "y":5.25},
+ {"x":2.25, "y":5.25},
+ {"x":3.25, "y":5.25},
+ {"x":4.25, "y":5.25},
+ {"x":5.25, "y":5.25},
+ {"x":11.25, "y":5.25},
+ {"x":12.25, "y":5.25},
+ {"x":13.25, "y":5.25},
+ {"x":14.25, "y":5.25},
+ {"x":15.25, "y":5.25},
+ {"x":16.25, "y":5.25},
+
+ {"x":6.25, "y":6},
+ {"x":7.25, "y":6},
+ {"x":9.25, "y":6},
+ {"x":10.25, "y":6},
+
+ {"x":7.25, "y":7},
+ {"x":9.25, "y":7},
+
+ {"x":5.25, "y":7, "h":2},
+ {"x":6.25, "y":7, "h":2},
+ {"x":7.25, "y":8},
+ {"x":9.25, "y":8},
+ {"x":10.25, "y":7, "h":2},
+ {"x":11.25, "y":7, "h":2}
+ ]
}
}
-} \ No newline at end of file
+}
diff --git a/keyboards/kin80/keymaps/andrew/keymap.c b/keyboards/kin80/keymaps/andrew/keymap.c
index d8773f9d72..8c63a6edc6 100644
--- a/keyboards/kin80/keymaps/andrew/keymap.c
+++ b/keyboards/kin80/keymaps/andrew/keymap.c
@@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | | | | | | VRSN | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
-* | | | MbL | MUp | MbR | | |RESET | | | | | |
+* | | | MbL | MUp | MbR | | |QK_BOOT | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | | ML | MDn | MR | | | | | | | | |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
@@ -92,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_L2] = LAYOUT(
KC_F1, _______, _______, _______, _______, _______, EMAIL1, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS,
_______, _______, _______, _______, _______, _______, VRSN, _______, _______, _______, _______, _______,
- _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, RESET, _______, _______, _______, _______, _______,
+ _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, QK_BOOT, _______, _______, _______, _______, _______,
_______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_INS, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kin80/keymaps/maxim/keymap.c b/keyboards/kin80/keymaps/maxim/keymap.c
index a8be54a4dd..090a3bb6b6 100644
--- a/keyboards/kin80/keymaps/maxim/keymap.c
+++ b/keyboards/kin80/keymaps/maxim/keymap.c
@@ -138,7 +138,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MC] = LAYOUT(
VRSN, _______, _______, _______, _______, _______, EMAIL1, _______, _______, PWD3, PWD2, PWD1,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MC2,
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, MC1, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kin80/keymaps/quartz64/keymap.c b/keyboards/kin80/keymaps/quartz64/keymap.c
index 611c86a09d..3bb2cdb4b8 100644
--- a/keyboards/kin80/keymaps/quartz64/keymap.c
+++ b/keyboards/kin80/keymaps/quartz64/keymap.c
@@ -139,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MC] = LAYOUT_all(
VRSN, _______, _______, _______, _______, _______, EMAIL1, _______, PWD4, PWD3, PWD2, PWD1,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MC2,
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, MC1, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kin80/micro/config.h b/keyboards/kin80/micro/config.h
index 546d0bc5f5..5c9369a077 100644
--- a/keyboards/kin80/micro/config.h
+++ b/keyboards/kin80/micro/config.h
@@ -17,11 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DEVICE_VER 0x0001
-
#define MATRIX_ROW_PINS { B6, B3, B1, D6, B7, B5, D1 }
#define MATRIX_COL_PINS { B4, E6, D7, C6, D4, D0, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS { C7 }
#define LED_PIN_ON_STATE 0
#define NUM_LOCK_LED_PIN D2
diff --git a/keyboards/kin80/micro/info.json b/keyboards/kin80/micro/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/kin80/micro/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/kin80/readme.md b/keyboards/kin80/readme.md
index 9adee072e7..3ed52b4a59 100644
--- a/keyboards/kin80/readme.md
+++ b/keyboards/kin80/readme.md
@@ -30,4 +30,4 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the the top left key and plug in the keyboard.
* **Physical reset button**. Hold 'boot0' button on MCU board, press 'reset', then release 'boot0'.
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available \ No newline at end of file
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/kindakeyboards/conone65/config.h b/keyboards/kindakeyboards/conone65/config.h
index 0a7127708c..5e3dacdb0e 100644
--- a/keyboards/kindakeyboards/conone65/config.h
+++ b/keyboards/kindakeyboards/conone65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x9133
-#define PRODUCT_ID 0x6AAB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Kindakeyboards
-#define PRODUCT Conone 65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS {D5,D3,E6,D1,D2}
#define MATRIX_COL_PINS {B7,F7,D4,D6,D7,B4,B5,B6,C6,C7,F6,F5,F4,F1,F0,D0}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kindakeyboards/conone65/info.json b/keyboards/kindakeyboards/conone65/info.json
index 32644b430d..3c06e955be 100644
--- a/keyboards/kindakeyboards/conone65/info.json
+++ b/keyboards/kindakeyboards/conone65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Conone 65",
+ "manufacturer": "Kindakeyboards",
"url": "https://kindakeyboards.be/conone65",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x9133",
+ "pid": "0x6AAB",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kinesis/alvicstep/config.h b/keyboards/kinesis/alvicstep/config.h
index 8a656264ee..c77eebb577 100644
--- a/keyboards/kinesis/alvicstep/config.h
+++ b/keyboards/kinesis/alvicstep/config.h
@@ -3,10 +3,6 @@
#include "../config.h"
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-
/* key matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 8
@@ -26,7 +22,6 @@
// May be upside down.
#define MATRIX_COL_PINS { B0,B1, B2, B3, B4, B5, B6, B7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kinesis/alvicstep/info.json b/keyboards/kinesis/alvicstep/info.json
new file mode 100644
index 0000000000..1db31a0429
--- /dev/null
+++ b/keyboards/kinesis/alvicstep/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Kinesis Classic/Advantage/Contoured",
+ "manufacturer": "QMK",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/kinesis/config.h b/keyboards/kinesis/config.h
index 63b296a528..aa42ade2a7 100644
--- a/keyboards/kinesis/config.h
+++ b/keyboards/kinesis/config.h
@@ -17,11 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define MANUFACTURER You
-#define PRODUCT Kinesis Advantage/Contoured
-
// Mouse
#define MOUSEKEY_DELAY 60
#define MOUSEKEY_INTERVAL 20
diff --git a/keyboards/kinesis/info.json b/keyboards/kinesis/info.json
index 93259d06bf..5b9baafae4 100644
--- a/keyboards/kinesis/info.json
+++ b/keyboards/kinesis/info.json
@@ -1,5 +1,4 @@
{
- "keyboard_name": "Kinesis",
"url": "",
"maintainer": "qmk",
"layouts": {
diff --git a/keyboards/kinesis/keymaps/carpalx/keymap.c b/keyboards/kinesis/keymaps/carpalx/keymap.c
index 2e56946e76..28d724518a 100644
--- a/keyboards/kinesis/keymaps/carpalx/keymap.c
+++ b/keyboards/kinesis/keymaps/carpalx/keymap.c
@@ -18,7 +18,7 @@ extern keymap_config_t keymap_config;
| L0 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 |
`---------------------------------------------------------------'
,---------------------------------------------------------------.
- | F9 | F10 | F11 | F12 | PSCR | L1 | L2 | L2 | RESET |
+ | F9 | F10 | F11 | F12 | PSCR | L1 | L2 | L2 | QK_BOOT |
`---------------------------------------------------------------'
L0 Carpalx layer:
@@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_BSPC, KC_ESC, MO(_KP),
// Right Hand
- KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, TO(_QW), TO(_KP), TO(_KP), RESET,
+ KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, TO(_QW), TO(_KP), TO(_KP), QK_BOOT,
KC_0, KC_8, KC_6, KC_4, KC_2, KC_MINS,
KC_B, KC_Y, KC_U, KC_V, KC_SCLN, KC_EQL,
KC_I, KC_A, KC_E, KC_O, KC_H, KC_QUOT,
diff --git a/keyboards/kinesis/keymaps/carpalx/readme.md b/keyboards/kinesis/keymaps/carpalx/readme.md
index aa57b60a52..2db75c9539 100644
--- a/keyboards/kinesis/keymaps/carpalx/readme.md
+++ b/keyboards/kinesis/keymaps/carpalx/readme.md
@@ -4,7 +4,7 @@
Carpalx layout (also known as QGMLWBY) is an optimized alternative keyboard layout.
Learn more about it at:
-[http://mkweb.bcgsc.ca/carpalx/?popular_alternatives]()
+[http://mkweb.bcgsc.ca/carpalx/?popular_alternatives](http://mkweb.bcgsc.ca/carpalx/?popular_alternatives)
The layout also includes a QWERTY layer to help with the transition.
- Scroll Lock: QWERTY layer
diff --git a/keyboards/kinesis/keymaps/dvorak/keymap.c b/keyboards/kinesis/keymaps/dvorak/keymap.c
index 6f4d63a7d4..a81ac0cec5 100644
--- a/keyboards/kinesis/keymaps/dvorak/keymap.c
+++ b/keyboards/kinesis/keymaps/dvorak/keymap.c
@@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_HOME,
KC_BSPC, KC_DEL, KC_END,
// right hand
- KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, RESET,
+ KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, QK_BOOT,
KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
KC_D, KC_H, KC_T, KC_N, KC_S, KC_BSLS,
diff --git a/keyboards/kinesis/keymaps/farmergreg/keymap.c b/keyboards/kinesis/keymaps/farmergreg/keymap.c
index c861233691..1b6442cac5 100644
--- a/keyboards/kinesis/keymaps/farmergreg/keymap.c
+++ b/keyboards/kinesis/keymaps/farmergreg/keymap.c
@@ -18,7 +18,7 @@
* qmk compile -kb kinesis/kint41 -km farmergreg
*
* Layout Details:
- * PROGM + F9 to RESET and load new firmware.
+ * PROGM + F9 to QK_BOOT and load new firmware.
* Colemak (default / PROGM+C), Dvorak (PROGM + F4) and QWERTY (PROGM+F3) layouts are available for use
* CAPS LOCK is ESC (for use in VIM). Double tap to activate CAPS Lock
* UP and DOWN arrows are swapped to be more like VIM
@@ -194,7 +194,7 @@ const uint16_t PROGMEM keymaps[_LAYER_COUNT][MATRIX_ROWS][MATRIX_COLS] = {
_______,
_______,_______,_______,
- RESET ,_______,_______,_______,_______,_______,_______,_______,_______,
+ QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,
diff --git a/keyboards/kinesis/keymaps/heatxsink/keymap.c b/keyboards/kinesis/keymaps/heatxsink/keymap.c
index 1f49c4622c..dd02def8c2 100644
--- a/keyboards/kinesis/keymaps/heatxsink/keymap.c
+++ b/keyboards/kinesis/keymaps/heatxsink/keymap.c
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_HOME,
KC_BSPC,KC_DEL ,KC_END ,
// RHAND
- KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR,KC_SLCK,KC_PAUS,KEYPAD ,RESET ,
+ KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR,KC_SLCK,KC_PAUS,KEYPAD ,QK_BOOT,
KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
_______,_______,_______,_______,_______,KC_BSLS,
_______,_______,_______,_______,_______,KC_QUOT,
diff --git a/keyboards/kinesis/keymaps/insertsnideremarks/keymap.c b/keyboards/kinesis/keymaps/insertsnideremarks/keymap.c
index 183b1c4303..7d39da8397 100644
--- a/keyboards/kinesis/keymaps/insertsnideremarks/keymap.c
+++ b/keyboards/kinesis/keymaps/insertsnideremarks/keymap.c
@@ -356,7 +356,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
| | | | | | | | | | | | | | | | | | |
`-----------------------------------------------------------------------------------------------------------'
,-------------------------------------------. ,-------------------------------------------.
- | |Colmak|Qwerty| |ClmkGM| QWGM | |Numpad| | | | | RESET |
+ | |Colmak|Qwerty| |ClmkGM| QWGM | |Numpad| | | | | QK_BOOT |
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
| | | | | | | | | | | | | |
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
@@ -376,7 +376,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_pretty(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, COLEMAK, QWERTY, _______, COLEMAKGM, QWERTYGM, NUMPAD, _______, _______, _______, _______, RESET,
+ _______, COLEMAK, QWERTY, _______, COLEMAKGM, QWERTYGM, NUMPAD, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -388,7 +388,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST2] = LAYOUT_pretty(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, COLEMAK, QWERTY, _______, COLEMAKGM, QWERTYGM, NUMPAD, _______, _______, _______, _______, RESET,
+ _______, COLEMAK, QWERTY, _______, COLEMAKGM, QWERTYGM, NUMPAD, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kinesis/keymaps/jwon/keymap.c b/keyboards/kinesis/keymaps/jwon/keymap.c
index d0e9d81231..fa75f95865 100644
--- a/keyboards/kinesis/keymaps/jwon/keymap.c
+++ b/keyboards/kinesis/keymaps/jwon/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_BSPC, KC_SPC, MACCOPY,
// Right Hand
- KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, QWERTY, RESET,
+ KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, QWERTY, QK_BOOT,
KC_EQL, KC_RPRN, KC_RCBR, KC_RBRC, KC_ASTR, KC_EXLM,
KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSLS,
KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
diff --git a/keyboards/kinesis/keymaps/milestogo/keymap.c b/keyboards/kinesis/keymaps/milestogo/keymap.c
index 8c01bcb83d..710ef97c59 100644
--- a/keyboards/kinesis/keymaps/milestogo/keymap.c
+++ b/keyboards/kinesis/keymaps/milestogo/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL,KC_LALT,
KC_DEL,
KC_BSPC, KC_DEL ,TT(_MOUSE) ,
- KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,TT(_MOUSE) ,TG(_MOUSE) ,TT(_SYMB), KC_NO, RESET,
+ KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,TT(_MOUSE) ,TG(_MOUSE) ,TT(_SYMB), KC_NO, QK_BOOT,
KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS,
KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
@@ -104,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_COLON, MT(MOD_LGUI,KC_LEFT), LT(_SYMB, KC_RIGHT),
_______, _______,
_______,
- _______, _______, RESET,
+ _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, TT(_MOUSE), KC_2,
_______, _______, _______, _______, _______, _______,
KC_AMPR, KC_LBRC, KC_LPRN, KC_RPRN, KC_UNDS, _______,
@@ -152,7 +152,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, MT(MOD_LGUI,KC_LEFT), LT(_SYMB, KC_RIGHT),
_______, _______,
_______,
- _______, _______, RESET,
+ _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, TT(_MOUSE), KC_2,
_______, _______, _______, KC_ASTR, _______, _______,
_______, _______, KC_PLUS, KC_MINS, _______, _______,
@@ -198,7 +198,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______,
_______,
_______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, TT(_MOUSE),RESET,
+ _______, _______, _______, _______, _______, _______, _______, TT(_MOUSE),QK_BOOT,
KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_ACL2,
KC_WH_U, M(A_MUL), KC_MS_U, M(A_MUR), KC_NO, KC_ACL1,
KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_NO, KC_ACL0,
@@ -330,7 +330,7 @@ void matrix_init_user(void) {
void matrix_scan_user(void) {
#ifdef ALVICSTEP_CONFIG_H
- int8_t layer = biton32(layer_state);
+ int8_t layer = get_highest_layer(layer_state);
switch (layer) {
case 1:
diff --git a/keyboards/kinesis/keymaps/peott-fr/keymap.c b/keyboards/kinesis/keymaps/peott-fr/keymap.c
index e813f070d0..c56d3426f1 100644
--- a/keyboards/kinesis/keymaps/peott-fr/keymap.c
+++ b/keyboards/kinesis/keymaps/peott-fr/keymap.c
@@ -23,6 +23,6 @@
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_EQL, 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_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, LGUI_T(KC_MPLY), LALT_T(KC_MNXT), KC_GRV, KC_BSLS, KC_LBRC, KC_RBRC, KC_HOME, LT(1,KC_SPC), KC_DEL, KC_END, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(3), KC_NO, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RALT, KC_APP, KC_PGUP, KC_PGDN, KC_ENT, LT(2,KC_BSPC)),
[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_PGUP, KC_LBRC, KC_UP, KC_RBRC, KC_LPRN, KC_TRNS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_RPRN, KC_TRNS, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_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, 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),
+ [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_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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_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_NLCK, KC_PEQL, KC_PSLS, KC_PAST, KC_NO, KC_NO, KC_P7, KC_P8, KC_P9, KC_PMNS, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_NO, KC_NO, KC_P1, KC_P2, KC_P3, KC_PENT, KC_NO, KC_NO, KC_P0, KC_PDOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO)
};
diff --git a/keyboards/kinesis/keymaps/stapelberg/keymap.c b/keyboards/kinesis/keymaps/stapelberg/keymap.c
index d7a0a5e5c2..9518c017bc 100644
--- a/keyboards/kinesis/keymaps/stapelberg/keymap.c
+++ b/keyboards/kinesis/keymaps/stapelberg/keymap.c
@@ -17,6 +17,7 @@
#include QMK_KEYBOARD_H
#define QWERTY 0 // Base qwerty
+#define LAYER1 1
/****************************************************************************************************
@@ -56,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL,KC_LALT,
KC_LGUI,
KC_BSPC,KC_ESC ,KC_END ,
- KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, KC_NO, RESET,
+ KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR ,KC_SLCK ,KC_PAUS, MO(1), QK_BOOT,
KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSLS,
KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,KC_QUOT,
@@ -65,5 +66,30 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_RALT,KC_RCTL,
KC_PGUP,
KC_PGDN,KC_ENTER ,KC_SPC
- )
+ ),
+
+// LAYER1 is activated by the keypad key. It has WAKE on Escape (left-most key),
+// and volume keys on PSCR (mute), SLCK (volume down) and PAUS (volume up),
+// as printed on the Kinesis Advantage 2.
+[LAYER1] = LAYOUT(
+
+ KC_WAKE, KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO,
+ KC_NO , KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,
+ KC_NO , KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,
+ KC_NO , KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,
+ KC_NO , KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,
+ KC_NO ,KC_NO ,KC_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_VOLD ,KC_VOLU, 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 ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,
+ KC_NO ,KC_NO ,KC_NO ,KC_NO ,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/kinesis/keymaps/tuesdayjohn/keymap.c b/keyboards/kinesis/keymaps/tuesdayjohn/keymap.c
index 2e844f19b1..89a39c08b4 100644
--- a/keyboards/kinesis/keymaps/tuesdayjohn/keymap.c
+++ b/keyboards/kinesis/keymaps/tuesdayjohn/keymap.c
@@ -346,7 +346,7 @@ Adjust layer
| | | | | | | | | | | | | | | | | | | |
`--------------------------------------------------------------' `--------------------------------------------------------------'
,------------------------------------------------------. ,------------------------------------------------------.
-| | Colemak| QWERTY | | Gaming | | | Numpad | | | | | RESET |
+| | Colemak| QWERTY | | Gaming | | | Numpad | | | | | QK_BOOT |
|---------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+---------|
| | | | | | | | | | | | | |
|---------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+---------|
@@ -366,7 +366,7 @@ Adjust layer
*/
[_ADJUST] = LAYOUT_pretty(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, COLEMAK, QWERTY, _______, GAMING, _______, NUMPAD, _______, _______, _______, _______, RESET,
+ _______, COLEMAK, QWERTY, _______, GAMING, _______, NUMPAD, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
@@ -378,7 +378,7 @@ Adjust layer
[_ADJUST2] = LAYOUT_pretty(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, COLEMAK, QWERTY, _______, GAMING, _______, NUMPAD, _______, _______, _______, _______, RESET,
+ _______, COLEMAK, QWERTY, _______, GAMING, _______, NUMPAD, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, NKROTG, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kinesis/keymaps/tw1t611/keymap.c b/keyboards/kinesis/keymaps/tw1t611/keymap.c
index e7a6ffd6e9..bfa8027352 100644
--- a/keyboards/kinesis/keymaps/tw1t611/keymap.c
+++ b/keyboards/kinesis/keymaps/tw1t611/keymap.c
@@ -15,7 +15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_RCTL,KC_LALT,
KC_HOME,
KC_SPC ,KC_LSFT,KC_BSPC ,
- KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR,KC_SLCK,KC_PAUS,KC_NO ,RESET,
+ KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR,KC_SLCK,KC_PAUS,KC_NO ,QK_BOOT,
KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,DE_SS ,
KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,DE_ADIA,
KC_H ,KC_J ,KC_K ,KC_L ,DE_SLSH,DE_ODIA,
diff --git a/keyboards/kinesis/keymaps/xyverz/keymap.c b/keyboards/kinesis/keymaps/xyverz/keymap.c
index ffc4459547..286d7ca7a7 100644
--- a/keyboards/kinesis/keymaps/xyverz/keymap.c
+++ b/keyboards/kinesis/keymaps/xyverz/keymap.c
@@ -23,7 +23,7 @@ enum custom_keycodes { DVORAK = SAFE_RANGE, QWERTY, COLEMAK, KEYPAD };
| ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 |
`-----------------------------------------------------------------'
,-----------------------------------------------------------------.
- | F9 | F10 | F11 | F12 | PScr | SLck | Paus | Keypad | RESET |
+ | F9 | F10 | F11 | F12 | PScr | SLck | Paus | Keypad | QK_BOOT |
`-----------------------------------------------------------------'
Dvorak layer:
@@ -123,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_BSPC, KC_DEL, GUI_END,
// Right Hand
- KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_KEYPAD), RESET,
+ KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_KEYPAD), QK_BOOT,
KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS,
KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLSH,
KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
@@ -149,7 +149,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_BSPC, KC_DEL, KC_END,
// Right Hand
- KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_KEYPAD), RESET,
+ KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_KEYPAD), QK_BOOT,
KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS ,
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
@@ -175,7 +175,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_BSPC, KC_DEL, KC_END,
// Right Hand
- KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_KEYPAD), RESET,
+ KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS, TG(_KEYPAD), QK_BOOT,
KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
diff --git a/keyboards/kinesis/kinesis.h b/keyboards/kinesis/kinesis.h
index 54cf6b81a7..e3345ee27f 100644
--- a/keyboards/kinesis/kinesis.h
+++ b/keyboards/kinesis/kinesis.h
@@ -12,6 +12,8 @@
# include "kint36.h"
#elif defined(KEYBOARD_kinesis_kint41)
# include "kint41.h"
+#elif defined(KEYBOARD_kinesis_kintlc)
+# include "kintlc.h"
#endif
#include "quantum.h"
diff --git a/keyboards/kinesis/kint2pp/config.h b/keyboards/kinesis/kint2pp/config.h
index 54ba07d3d6..4bbc59e44c 100644
--- a/keyboards/kinesis/kint2pp/config.h
+++ b/keyboards/kinesis/kint2pp/config.h
@@ -1,9 +1,5 @@
#pragma once
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0002
-
/* key matrix size */
#define MATRIX_ROWS 15
#define MATRIX_COLS 7
@@ -21,7 +17,6 @@
#define MATRIX_ROW_PINS { D7, E0, E1, C0, C6, F6, D4, D2, D3, D0, B7, D1, E6, B4, B2 }
#define MATRIX_COL_PINS { E7, F0, F7, B1, B3, B0, D5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kinesis/kint2pp/info.json b/keyboards/kinesis/kint2pp/info.json
new file mode 100644
index 0000000000..b44abddfdf
--- /dev/null
+++ b/keyboards/kinesis/kint2pp/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Kinesis Classic/Advantage/Contoured",
+ "manufacturer": "QMK",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/kinesis/kint36/config.h b/keyboards/kinesis/kint36/config.h
index 188c83345d..9b45484b55 100644
--- a/keyboards/kinesis/kint36/config.h
+++ b/keyboards/kinesis/kint36/config.h
@@ -16,18 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#undef VENDOR_ID
-#define VENDOR_ID 0x1209
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x345C
-#undef DEVICE_VER
-#define DEVICE_VER 0x0001
-#undef MANUFACTURER
-#define MANUFACTURER "https://github.com/stapelberg"
-#undef PRODUCT
-#define PRODUCT "kinT (kint36)"
-
/* key matrix size */
#define MATRIX_ROWS 15
#define MATRIX_COLS 7
@@ -45,7 +33,6 @@
#define MATRIX_ROW_PINS { D3, C3, C4, C6, D2, B0, D7, A12, A13, B17, B16, D0, B1, C2, D6 }
#define MATRIX_COL_PINS { B3, D1, C0, D5, C1, B2, D4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kinesis/kint36/info.json b/keyboards/kinesis/kint36/info.json
new file mode 100644
index 0000000000..2fbfcc5661
--- /dev/null
+++ b/keyboards/kinesis/kint36/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "kinT (kint36)",
+ "manufacturer": "https://github.com/stapelberg",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0x345C",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/kinesis/kint36/keymaps/kzar/keymap.c b/keyboards/kinesis/kint36/keymaps/kzar/keymap.c
index 524792de81..57e703fd6f 100644
--- a/keyboards/kinesis/kint36/keymaps/kzar/keymap.c
+++ b/keyboards/kinesis/kint36/keymaps/kzar/keymap.c
@@ -161,7 +161,7 @@ enum my_keycodes {QWERTY = SAFE_RANGE, DVORAK, WIN, MAC, PC, STATUS, PROGRAM};
| STATUS | | | QWERTY | DVORAK | | | | |
`-------------------------------------------------------------------------------'
,-------------------------------------------------------------------------------.
- | RESET | | | | | | | | |
+ | QK_BOOT | | | | | | | | |
`-------------------------------------------------------------------------------'
,-------------------------------------------.,-------------------------------------------.
| | | | | | || | | | | | |
@@ -330,7 +330,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______,
// Right Hand
- RESET, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kinesis/kint36/kint36.c b/keyboards/kinesis/kint36/kint36.c
index 108c14c7ba..cc32a60262 100644
--- a/keyboards/kinesis/kint36/kint36.c
+++ b/keyboards/kinesis/kint36/kint36.c
@@ -16,11 +16,12 @@
#include "kint36.h"
+#define LED_POWER C5
+
void matrix_init_kb(void) {
matrix_init_user();
-// Turn on the Teensy 3.6 Power LED:
-#define LED_POWER C5
+ // Turn on the Teensy 3.6 Power LED:
setPinOutput(LED_POWER);
writePinHigh(LED_POWER);
}
diff --git a/keyboards/kinesis/kint36/rules.mk b/keyboards/kinesis/kint36/rules.mk
index c50225ad8a..d495568dd3 100644
--- a/keyboards/kinesis/kint36/rules.mk
+++ b/keyboards/kinesis/kint36/rules.mk
@@ -4,6 +4,3 @@ MCU = MK66FX1M0
# Debounce eagerly (report change immediately), keep per-key timers. We can use
# this because the kinT does not have to deal with noise.
DEBOUNCE_TYPE = sym_eager_pk
-
-#Specify firmware format that is copied to root qmk_firmware folder
-FIRMWARE_FORMAT = hex
diff --git a/keyboards/kinesis/kint41/config.h b/keyboards/kinesis/kint41/config.h
index 3e13e84606..6df789d631 100644
--- a/keyboards/kinesis/kint41/config.h
+++ b/keyboards/kinesis/kint41/config.h
@@ -16,18 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#undef VENDOR_ID
-#define VENDOR_ID 0x1209
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x345C
-#undef DEVICE_VER
-#define DEVICE_VER 0x0001
-#undef MANUFACTURER
-#define MANUFACTURER "https://github.com/stapelberg"
-#undef PRODUCT
-#define PRODUCT "kinT (kint41)"
-
/* key matrix size */
#define MATRIX_ROWS 15
#define MATRIX_COLS 7
@@ -72,7 +60,6 @@
LINE_PIN6 /* COL_6 */ \
}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kinesis/kint41/info.json b/keyboards/kinesis/kint41/info.json
new file mode 100644
index 0000000000..45481a5b84
--- /dev/null
+++ b/keyboards/kinesis/kint41/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "kinT (kint41)",
+ "manufacturer": "https://github.com/stapelberg",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0x345C",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/kinesis/kint41/kint41.c b/keyboards/kinesis/kint41/kint41.c
index ab6567d097..2538b492de 100644
--- a/keyboards/kinesis/kint41/kint41.c
+++ b/keyboards/kinesis/kint41/kint41.c
@@ -16,11 +16,12 @@
#include "kint41.h"
+#define LED_POWER LINE_PIN13
+
void matrix_init_kb(void) {
matrix_init_user();
-// Turn on the Teensy 4.x Power LED:
-#define LED_POWER LINE_PIN13
+ // Turn on the Teensy 4.x Power LED:
setPinOutput(LED_POWER);
writePinHigh(LED_POWER);
}
@@ -46,7 +47,10 @@ void matrix_output_unselect_delay(uint8_t line, bool key_pressed) {
// Empirically: e.g. 5μs is not enough, will result in keys that don’t work
// and ghost key presses. 10μs seems to work well.
+ // On some variants of the hardware, 20μs seems to be required. This was found
+ // on a combination of KB600LF+stapelberg v2020-06-30+teensy41.
+
// 600 cycles at 0.6 cycles/ns == 1μs
const uint32_t cycles_per_us = 600;
- delay_inline(10 * cycles_per_us);
+ delay_inline(20 * cycles_per_us);
}
diff --git a/keyboards/kinesis/kint41/rules.mk b/keyboards/kinesis/kint41/rules.mk
index 2681ff6724..4b39b87be6 100644
--- a/keyboards/kinesis/kint41/rules.mk
+++ b/keyboards/kinesis/kint41/rules.mk
@@ -3,7 +3,7 @@ MCU_SERIES = MIMXRT1062
MCU_LDSCRIPT = MIMXRT1062
MCU_STARTUP = MIMXRT1062
BOARD = IC_TEENSY_4_1
-MCU = cortex-m4
+MCU = cortex-m4
ARMV = 7
# Debounce eagerly (report change immediately), keep per-key timers. We can use
@@ -11,5 +11,4 @@ ARMV = 7
# pressed.
DEBOUNCE_TYPE = sym_eager_pk
-#Specify firmware format that is copied to root qmk_firmware folder
FIRMWARE_FORMAT = hex
diff --git a/keyboards/kinesis/kintlc/chconf.h b/keyboards/kinesis/kintlc/chconf.h
new file mode 100644
index 0000000000..73408ff625
--- /dev/null
+++ b/keyboards/kinesis/kintlc/chconf.h
@@ -0,0 +1,53 @@
+/* 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/kinesis/kint36/chconf.h -r platforms/chibios/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 1000
+
+#define CH_CFG_ST_TIMEDELTA 0
+
+#define CH_CFG_TIME_QUANTUM 20
+
+#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
+
+#define CH_DBG_SYSTEM_STATE_CHECK TRUE
+
+#define CH_DBG_ENABLE_CHECKS TRUE
+
+#define CH_DBG_ENABLE_ASSERTS TRUE
+
+#define CH_DBG_ENABLE_STACK_CHECK TRUE
+
+#define CH_DBG_FILL_THREADS TRUE
+
+
+#include_next <chconf.h>
diff --git a/keyboards/kinesis/kintlc/config.h b/keyboards/kinesis/kintlc/config.h
new file mode 100644
index 0000000000..4ee9f9ca6f
--- /dev/null
+++ b/keyboards/kinesis/kintlc/config.h
@@ -0,0 +1,101 @@
+/* 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
+
+/* key matrix size */
+#define MATRIX_ROWS 15
+#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 \
+ { \
+ LINE_PIN8, /* ROW_EQL */ \
+ LINE_PIN9, /* ROW_1 */ \
+ LINE_PIN10, /* ROW_2 */ \
+ LINE_PIN11, /* ROW_3 */ \
+ LINE_PIN7, /* ROW_4 */ \
+ LINE_PIN16, /* ROW_5 */ \
+ LINE_PIN5, /* ROW_6 */ \
+ LINE_PIN3, /* ROW_7 */ \
+ LINE_PIN4, /* ROW_8 */ \
+ LINE_PIN1, /* ROW_9 */ \
+ LINE_PIN0, /* ROW_0 */ \
+ LINE_PIN2, /* ROW_MIN */ \
+ LINE_PIN17, /* ROW_ESC */ \
+ LINE_PIN23, /* ROW_F1 */ \
+ LINE_PIN21 /* ROW_F2 */ \
+ }
+
+#define MATRIX_COL_PINS \
+ { \
+ LINE_PIN18, /* COL_0 */ \
+ LINE_PIN14, /* COL_1 */ \
+ LINE_PIN15, /* COL_2 */ \
+ LINE_PIN20, /* COL_3 */ \
+ LINE_PIN22, /* COL_4 */ \
+ LINE_PIN19, /* COL_5 */ \
+ LINE_PIN6 /* COL_6 */ \
+ }
+
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Well-worn Cherry MX key switches can bounce for up to 20ms, despite the
+ * Cherry data sheet specifying 5ms. Because we use the sym_eager_pk debounce
+ * algorithm, this debounce latency only affects key releases (not key
+ * presses). */
+#undef DEBOUNCE
+#define DEBOUNCE 20
+
+#define IGNORE_MOD_TAP_INTERRUPT
+
+// The Teensy LC power consumption is unknown as per
+// https://www.pjrc.com/store/teensylc.html but since
+// https://www.pjrc.com/store/teensy41.html says 100mA, let's go with half.
+#define USB_MAX_POWER_CONSUMPTION 50
+
+/* We use the i.MX RT1060 high-speed GPIOs (GPIO6-9) which are connected to the
+ * AHB bus (AHB_CLK_ROOT), which runs at the same speed as the ARM Core Clock,
+ * i.e. 600 MHz. See MIMXRT1062, page 949, 12.1 Chip-specific GPIO information.
+ * No additional delay is necessary. */
+
+// in clock cycles
+#define GPIO_INPUT_PIN_DELAY 0
+
+// The default "1" results in LEDs being on when they should be off and
+// the other way around.
+#define LED_PIN_ON_STATE 0
+
+// Discussion about which Teensy LC pins can be used for driving staus LEDs:
+// https://github.com/kinx-project/kint/issues/55
+// Discussion about using Neopixel LEDs:
+// https://github.com/kinx-project/kint/issues/32
+// Available pins can be seen in:
+// /lib/chibios-contrib/os/hal/boards/PJRC_TEENSY_LC/board.h
+#define LED_CAPS_LOCK_PIN LINE_PIN12
+#define LED_SCROLL_LOCK_PIN LINE_PIN25
+#define LED_COMPOSE_PIN LINE_PIN24
diff --git a/keyboards/kinesis/kintlc/info.json b/keyboards/kinesis/kintlc/info.json
new file mode 100644
index 0000000000..721ebbfe82
--- /dev/null
+++ b/keyboards/kinesis/kintlc/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "kinT (kintlc)",
+ "manufacturer": "https://github.com/stapelberg",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0x345C",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/kinesis/kintlc/kintlc.c b/keyboards/kinesis/kintlc/kintlc.c
new file mode 100644
index 0000000000..19b723600a
--- /dev/null
+++ b/keyboards/kinesis/kintlc/kintlc.c
@@ -0,0 +1,27 @@
+/* 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/>.
+ */
+
+#include "kintlc.h"
+
+#define LED_POWER LINE_PIN13
+
+void matrix_init_kb(void) {
+ matrix_init_user();
+
+ // Turn on the Teensy LC Power LED:
+ setPinOutput(LED_POWER);
+ writePinHigh(LED_POWER);
+}
diff --git a/keyboards/kinesis/kintlc/kintlc.h b/keyboards/kinesis/kintlc/kintlc.h
new file mode 100644
index 0000000000..d427a1c2d6
--- /dev/null
+++ b/keyboards/kinesis/kintlc/kintlc.h
@@ -0,0 +1,92 @@
+/* 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 "quantum.h"
+
+#define ___ KC_NO
+
+// This a shortcut to help you visually see your layout.
+// The first section contains all of the arguments as on the physical keyboard
+// The second converts the arguments into the 2-D scanned array
+
+#define LAYOUT( \
+ kC0, kD0, kE0, kC1, kD1, kE1, kC2, kD2, kE2, \
+ k00, k10, k20, k30, k40, k50, \
+ k01, k11, k21, k31, k41, k51, \
+ k02, k12, k22, k32, k42, k52, \
+ k03, k13, k23, k33, k43, k53, \
+ k14, k24, k34, k54, \
+ k56, k55, \
+ k35, \
+ k36, k46, k25, \
+ \
+ kC3, kD3, kE3, kC4, kD4, kE4, kC5, kE5, kD5, \
+ k60, k70, k80, k90, kA0, kB0, \
+ k61, k71, k81, k91, kA1, kB1, \
+ k62, k72, k82, k92, kA2, kB2, \
+ k63, k73, k83, k93, kA3, kB3, \
+ k64, k84, k94, kA4, \
+ k96, k85, \
+ k86, \
+ k66, k75, k65 \
+) { \
+ { k00, k01, k02, k03, ___, ___, ___ }, \
+ { k10, k11, k12, k13, k14, ___, ___ }, \
+ { k20, k21, k22, k23, k24, k25, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36 }, \
+ { k40, k41, k42, k43, ___, ___, k46 }, \
+ { k50, k51, k52, k53, k54, k55, k56 }, \
+ { k60, k61, k62, k63, k64, k65, k66 }, \
+ { k70, k71, k72, k73, ___, k75, ___ }, \
+ { k80, k81, k82, k83, k84, k85, k86 }, \
+ { k90, k91, k92, k93, k94, ___, k96 }, \
+ { kA0, kA1, kA2, kA3, kA4, ___, ___ }, \
+ { kB0, kB1, kB2, kB3, ___, ___, ___ }, \
+ { kC0, kC1, kC2, kC3, kC4, kC5, ___ }, \
+ { kD0, kD1, kD2, kD3, kD4, kD5, ___ }, \
+ { kE0, kE1, kE2, kE3, kE4, kE5, ___ }, \
+}
+
+/* ---------------- LEFT HAND ----------------- ---------------- RIGHT HAND ---------------- */
+#define LAYOUT_pretty( \
+ kC0, kD0, kE0, kC1, kD1, kE1, kC2, kD2, kE2, kC3, kD3, kE3, kC4, kD4, kE4, kC5, kE5, kD5, \
+ k00, k10, k20, k30, k40, k50, k60, k70, k80, k90, kA0, kB0, \
+ k01, k11, k21, k31, k41, k51, k61, k71, k81, k91, kA1, kB1, \
+ k02, k12, k22, k32, k42, k52, k62, k72, k82, k92, kA2, kB2, \
+ k03, k13, k23, k33, k43, k53, k63, k73, k83, k93, kA3, kB3, \
+ k14, k24, k34, k54, k64, k84, k94, kA4, \
+ k56, k55, k96, k85, \
+ k35, k86, \
+ k36, k46, k25, k66, k75, k65 \
+) { \
+ { k00, k01, k02, k03, ___, ___, ___ }, \
+ { k10, k11, k12, k13, k14, ___, ___ }, \
+ { k20, k21, k22, k23, k24, k25, ___ }, \
+ { k30, k31, k32, k33, k34, k35, k36 }, \
+ { k40, k41, k42, k43, ___, ___, k46 }, \
+ { k50, k51, k52, k53, k54, k55, k56 }, \
+ { k60, k61, k62, k63, k64, k65, k66 }, \
+ { k70, k71, k72, k73, ___, k75, ___ }, \
+ { k80, k81, k82, k83, k84, k85, k86 }, \
+ { k90, k91, k92, k93, k94, ___, k96 }, \
+ { kA0, kA1, kA2, kA3, kA4, ___, ___ }, \
+ { kB0, kB1, kB2, kB3, ___, ___, ___ }, \
+ { kC0, kC1, kC2, kC3, kC4, kC5, ___ }, \
+ { kD0, kD1, kD2, kD3, kD4, kD5, ___ }, \
+ { kE0, kE1, kE2, kE3, kE4, kE5, ___ } \
+}
diff --git a/keyboards/kinesis/kintlc/mcuconf.h b/keyboards/kinesis/kintlc/mcuconf.h
new file mode 100644
index 0000000000..ea576df5bc
--- /dev/null
+++ b/keyboards/kinesis/kintlc/mcuconf.h
@@ -0,0 +1,45 @@
+/*
+ ChibiOS - Copyright (C) 2006..2015 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 _MCUCONF_H_
+#define _MCUCONF_H_
+
+#define KL2x_MCUCONF
+
+/*
+ * HAL driver system settings.
+ */
+/* PEE mode - 48MHz system clock driven by (16 MHz) external crystal. */
+#define KINETIS_MCG_MODE KINETIS_MCG_MODE_PEE
+#define KINETIS_PLLCLK_FREQUENCY 96000000UL
+#define KINETIS_SYSCLK_FREQUENCY 48000000UL
+
+/*
+ * SERIAL driver system settings.
+ */
+#define KINETIS_SERIAL_USE_UART0 TRUE
+
+/*
+ * USB driver settings
+ */
+#define KINETIS_USB_USE_USB0 TRUE
+
+/* Need to redefine this, since the default (configured for K20x) might not apply
+ * 2 for Teensy LC
+ * 5 for Teensy 3.x */
+#define KINETIS_USB_USB0_IRQ_PRIORITY 2
+
+#endif /* _MCUCONF_H_ */
diff --git a/keyboards/kinesis/kintlc/readme.md b/keyboards/kinesis/kintlc/readme.md
new file mode 100644
index 0000000000..d7b5737452
--- /dev/null
+++ b/keyboards/kinesis/kintlc/readme.md
@@ -0,0 +1,3 @@
+# kinesis_kintlc keyboard firmware
+
+Please see https://github.com/kinx-project/kint for details.
diff --git a/keyboards/kinesis/kintlc/rules.mk b/keyboards/kinesis/kintlc/rules.mk
new file mode 100644
index 0000000000..bfc10748ab
--- /dev/null
+++ b/keyboards/kinesis/kintlc/rules.mk
@@ -0,0 +1,9 @@
+# MCU name
+MCU = MKL26Z64
+# This MCU is not in the main CHIBIOS repo but in the CHIBIOS_CONTRIB repo.
+USE_CHIBIOS_CONTRIB = yes
+
+# Debounce eagerly (report change immediately), keep per-key timers. We can use
+# this because the Cherry MX keyswitches on the Kinesis only produce noise while
+# pressed.
+DEBOUNCE_TYPE = sym_eager_pk
diff --git a/keyboards/kinesis/nguyenvietyen/config.h b/keyboards/kinesis/nguyenvietyen/config.h
index f1b41e61bc..399d10e81d 100644
--- a/keyboards/kinesis/nguyenvietyen/config.h
+++ b/keyboards/kinesis/nguyenvietyen/config.h
@@ -1,9 +1,5 @@
#pragma once
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0003
-
/* key matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 8
@@ -21,7 +17,6 @@
// Passed through the port multipler, so 4 pins =16
#define MATRIX_ROW_PINS { D0, D1, D2, D3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kinesis/nguyenvietyen/info.json b/keyboards/kinesis/nguyenvietyen/info.json
new file mode 100644
index 0000000000..4035bb8e11
--- /dev/null
+++ b/keyboards/kinesis/nguyenvietyen/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Kinesis Classic/Advantage/Contoured",
+ "manufacturer": "QMK",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/kinesis/stapelberg/config.h b/keyboards/kinesis/stapelberg/config.h
index fe44131adb..ccf6a20e7a 100644
--- a/keyboards/kinesis/stapelberg/config.h
+++ b/keyboards/kinesis/stapelberg/config.h
@@ -3,10 +3,6 @@
#include "../config.h"
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0002
-
/* key matrix size */
#define MATRIX_ROWS 15
#define MATRIX_COLS 7
@@ -23,7 +19,6 @@
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D4, D5, D6, D7, C0, C1, C2, C3, C4, C5, C6 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5, B6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kinesis/stapelberg/info.json b/keyboards/kinesis/stapelberg/info.json
new file mode 100644
index 0000000000..b44abddfdf
--- /dev/null
+++ b/keyboards/kinesis/stapelberg/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Kinesis Classic/Advantage/Contoured",
+ "manufacturer": "QMK",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/kineticlabs/emu/hotswap/config.h b/keyboards/kineticlabs/emu/hotswap/config.h
index 57eaad44b4..23e3b22a37 100644
--- a/keyboards/kineticlabs/emu/hotswap/config.h
+++ b/keyboards/kineticlabs/emu/hotswap/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xE015
-#define PRODUCT_ID 0xC387
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Kineticlabs
-#define PRODUCT Emu Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { E6, D4, B3, B1, B0, B7 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D5, D3, D2, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kineticlabs/emu/hotswap/info.json b/keyboards/kineticlabs/emu/hotswap/info.json
index 106bdf8da9..257cf50126 100644
--- a/keyboards/kineticlabs/emu/hotswap/info.json
+++ b/keyboards/kineticlabs/emu/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Emu hotswap",
+ "keyboard_name": "Emu Hotswap",
+ "manufacturer": "Kineticlabs",
"url": "",
"maintainer": "kb-elmo<mail@elmo.space>",
+ "usb": {
+ "vid": "0xE015",
+ "pid": "0xC387",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/kineticlabs/emu/soldered/config.h b/keyboards/kineticlabs/emu/soldered/config.h
index 0921911192..23e3b22a37 100644
--- a/keyboards/kineticlabs/emu/soldered/config.h
+++ b/keyboards/kineticlabs/emu/soldered/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xE015
-#define PRODUCT_ID 0xC386
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Kineticlabs
-#define PRODUCT Emu
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { E6, D4, B3, B1, B0, B7 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D5, D3, D2, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kineticlabs/emu/soldered/info.json b/keyboards/kineticlabs/emu/soldered/info.json
index d1a35a91d9..1f6fde64ce 100644
--- a/keyboards/kineticlabs/emu/soldered/info.json
+++ b/keyboards/kineticlabs/emu/soldered/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Emu hotswap",
+ "keyboard_name": "Emu Soldered",
+ "manufacturer": "Kineticlabs",
"url": "",
"maintainer": "kb-elmo<mail@elmo.space>",
+ "usb": {
+ "vid": "0xE015",
+ "pid": "0xC386",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kingly_keys/ave/config.h b/keyboards/kingly_keys/ave/config.h
index 8a663da356..98e958533c 100644
--- a/keyboards/kingly_keys/ave/config.h
+++ b/keyboards/kingly_keys/ave/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B4B // "KK"
-#define PRODUCT_ID 0x1225
-#define DEVICE_VER 0x0011
-#define MANUFACTURER Kingly-Keys
-#define PRODUCT The Ave.
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 13
@@ -36,7 +29,6 @@
#define MATRIX_ROW_PINS { B3, F4, F7, F6, F5 }
#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kingly_keys/ave/ortho/info.json b/keyboards/kingly_keys/ave/ortho/info.json
index e45a3bbe44..bc8b83334f 100644
--- a/keyboards/kingly_keys/ave/ortho/info.json
+++ b/keyboards/kingly_keys/ave/ortho/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "The Ave. (Ortholinear Ed. PCB)",
+ "keyboard_name": "The Ave. Ortholinear",
+ "manufacturer": "Kingly-Keys",
"url": "",
"maintainer": "the-royal",
+ "usb": {
+ "vid": "0x4B4B",
+ "pid": "0x1225",
+ "device_version": "0.1.1"
+ },
"layouts": {
"LAYOUT_ortho_all": {
"layout": [
diff --git a/keyboards/kingly_keys/ave/staggered/info.json b/keyboards/kingly_keys/ave/staggered/info.json
index bb720b196b..9757472b9f 100644
--- a/keyboards/kingly_keys/ave/staggered/info.json
+++ b/keyboards/kingly_keys/ave/staggered/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "The Ave. (Staggered Ed. PCB)",
+ "keyboard_name": "The Ave. Staggered",
+ "manufacturer": "Kingly-Keys",
"url": "",
"maintainer": "the-royal",
+ "usb": {
+ "vid": "0x4B4B",
+ "pid": "0x1225",
+ "device_version": "0.1.1"
+ },
"layouts": {
"LAYOUT_staggered": {
"layout": [
diff --git a/keyboards/kingly_keys/little_foot/config.h b/keyboards/kingly_keys/little_foot/config.h
index a872579c97..68954c6b70 100644
--- a/keyboards/kingly_keys/little_foot/config.h
+++ b/keyboards/kingly_keys/little_foot/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Kingly-Keys
-#define PRODUCT The Little Foot
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 10
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F6, B6, B2, B3, B1 }
#define MATRIX_COL_PINS { F5, F7, B5, B4, E6, D7, C6, D4, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kingly_keys/little_foot/info.json b/keyboards/kingly_keys/little_foot/info.json
index a9bb794521..6b1f887165 100644
--- a/keyboards/kingly_keys/little_foot/info.json
+++ b/keyboards/kingly_keys/little_foot/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Little Foot",
+ "keyboard_name": "The Little Foot",
+ "manufacturer": "Kingly-Keys",
"url": "",
"maintainer": "TheRoyalSweatshirt",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_space_base": {
"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":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":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":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":1.5, "y":4, "w":1.5}, {"x":3, "y":4, "w":2}, {"x":5, "y":4, "w":2}, {"x":7, "y":4, "w":1.5}]
diff --git a/keyboards/kingly_keys/little_foot/keymaps/yanfali/keymap.c b/keyboards/kingly_keys/little_foot/keymaps/yanfali/keymap.c
index 2ce2babf69..29df5f5713 100644
--- a/keyboards/kingly_keys/little_foot/keymaps/yanfali/keymap.c
+++ b/keyboards/kingly_keys/little_foot/keymaps/yanfali/keymap.c
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN] = LAYOUT_split_space_base(
- LT(_LN, KC_ESC), _______, _______, _______, _______, _______, _______, _______, KC_MINS, RESET,
+ LT(_LN, KC_ESC), _______, _______, _______, _______, _______, _______, _______, KC_MINS, QK_BOOT,
KC_TAB, _______, _______, _______, _______, _______, _______, _______, LSFT(KC_MINS), KC_BSLS,
KC_LSFT, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_QUOT,
AU_TOG, CK_TOGG , _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kingly_keys/romac/config.h b/keyboards/kingly_keys/romac/config.h
index c8cb19c744..a5478582b1 100644
--- a/keyboards/kingly_keys/romac/config.h
+++ b/keyboards/kingly_keys/romac/config.h
@@ -2,12 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4b4b // "KK"
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TheRoyalSweatshirt
-#define PRODUCT romac
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 3
@@ -15,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
#define MATRIX_COL_PINS { F7, B1, B3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kingly_keys/romac/info.json b/keyboards/kingly_keys/romac/info.json
index 9d93c4a13c..da73cadfb9 100644
--- a/keyboards/kingly_keys/romac/info.json
+++ b/keyboards/kingly_keys/romac/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "RoMac",
+ "manufacturer": "TheRoyalSweatshirt",
"url": "",
"maintainer": "TheRoyalSweatshirt",
+ "usb": {
+ "vid": "0x4B4B",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"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":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}]
diff --git a/keyboards/kingly_keys/romac/keymaps/stanrc85/keymap.c b/keyboards/kingly_keys/romac/keymaps/stanrc85/keymap.c
index ecca61cae0..1f19882d48 100644
--- a/keyboards/kingly_keys/romac/keymaps/stanrc85/keymap.c
+++ b/keyboards/kingly_keys/romac/keymaps/stanrc85/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN1PAD] = LAYOUT(
KC_NO, KC_NO, KC_NO,
- KC_NO, KC_NO, RESET,
+ KC_NO, KC_NO, QK_BOOT,
KC_NO, KC_NO, KC_MAKE,
KC_NO, KC_LSFT, D_LAYR)
};
diff --git a/keyboards/kingly_keys/romac_plus/config.h b/keyboards/kingly_keys/romac_plus/config.h
index a83801b4ce..441584a84e 100644
--- a/keyboards/kingly_keys/romac_plus/config.h
+++ b/keyboards/kingly_keys/romac_plus/config.h
@@ -2,12 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B4B
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TheRoyalSweatshirt
-#define PRODUCT RoMac+
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 3
@@ -15,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { C6, D4, D2, D3 }
#define MATRIX_COL_PINS { F6, F5, F4 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { B3 }
#define ENCODERS_PAD_B { B2 }
diff --git a/keyboards/kingly_keys/romac_plus/info.json b/keyboards/kingly_keys/romac_plus/info.json
index b24e0c942f..79aa4eccb6 100644
--- a/keyboards/kingly_keys/romac_plus/info.json
+++ b/keyboards/kingly_keys/romac_plus/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "RoMac+",
+ "manufacturer": "TheRoyalSweatshirt",
"url": "",
"maintainer": "TheRoyalSweatshirt",
+ "usb": {
+ "vid": "0x4B4B",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"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":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}]
diff --git a/keyboards/kingly_keys/ropro/config.h b/keyboards/kingly_keys/ropro/config.h
index c9791be8c1..092349cbc6 100644
--- a/keyboards/kingly_keys/ropro/config.h
+++ b/keyboards/kingly_keys/ropro/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Kingly-Keys
-#define PRODUCT The_RoPro
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 14
@@ -35,7 +28,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, F1, NO_PIN }
#define MATRIX_COL_PINS { F0, D1, D0, D4, C6, D7, E6, B4, B5, B3, B2, B6, D2, C7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kingly_keys/ropro/info.json b/keyboards/kingly_keys/ropro/info.json
index 10fee26c94..60419947d4 100644
--- a/keyboards/kingly_keys/ropro/info.json
+++ b/keyboards/kingly_keys/ropro/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ropro",
+ "keyboard_name": "The_RoPro",
+ "manufacturer": "Kingly-Keys",
"url": "https://github.com/TheRoyalSweatshirt/The_RoPro",
"maintainer": "[TheRoyalSweatshirt](https://github.com/TheRoyalSweatshirt)",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"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":"Esc", "x":1, "y":1}, {"label":"1", "x":2, "y":1}, {"label":"2", "x":3, "y":1}, {"label":"3", "x":4, "y":1}, {"label":"4", "x":5, "y":1}, {"label":"5", "x":6, "y":1}, {"label":"6;", "x":7, "y":1}, {"label":"7", "x":8, "y":1}, {"label":"8", "x":9, "y":1}, {"label":"9", "x":10, "y":1}, {"label":"0", "x":11, "y":1}, {"label":"-", "x":12, "y":1}, {"label":"CAPS", "x":0, "y":2}, {"label":"Tab", "x":1, "y":2}, {"label":"Q", "x":2, "y":2}, {"label":"W", "x":3, "y":2}, {"label":"E", "x":4, "y":2}, {"label":"R", "x":5, "y":2}, {"label":"T", "x":6, "y":2}, {"label":"Y", "x":7, "y":2}, {"label":"U", "x":8, "y":2}, {"label":"I", "x":9, "y":2}, {"label":"O", "x":10, "y":2}, {"label":"P", "x":11, "y":2}, {"label":"Bksp", "x":12, "y":2}, {"label":"PgUp", "x":0, "y":3}, {"label":"Ctrl", "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":";", "x":11, "y":3}, {"label":"'", "x":12, "y":3}, {"label":"Home", "x":0, "y":4}, {"label":"Shift", "x":1, "y":4}, {"label":"Z", "x":2, "y":4}, {"label":"X", "x":3, "y":4}, {"label":"C", "x":4, "y":4}, {"label":"V", "x":5, "y":4}, {"label":"B", "x":6, "y":4}, {"label":"N", "x":7, "y":4}, {"label":"M", "x":8, "y":4}, {"label":",", "x":9, "y":4}, {"label":".", "x":10, "y":4}, {"label":"/", "x":11, "y":4}, {"label":"Enter", "x":12, "y":4}, {"label":"PgDn", "x":0, "y":5}, {"label":"Del", "x":1, "y":5}, {"label":"Ctrl", "x":2, "y":5}, {"label":"GUI", "x":3, "y":5}, {"label":"Alt", "x":4, "y":5}, {"label":"Lower", "x":5, "y":5}, {"x":6, "y":5}, {"x":7, "y":5}, {"label":"End", "x":8, "y":5}, {"label":"Left", "x":9, "y":5}, {"label":"Down", "x":10, "y":5}, {"label":"Up", "x":11, "y":5}, {"label":"Right", "x":12, "y":5}]
diff --git a/keyboards/kingly_keys/ropro/keymaps/jdayton3/keymap.c b/keyboards/kingly_keys/ropro/keymaps/jdayton3/keymap.c
index 280fe22cc4..9cba0ccefb 100644
--- a/keyboards/kingly_keys/ropro/keymaps/jdayton3/keymap.c
+++ b/keyboards/kingly_keys/ropro/keymaps/jdayton3/keymap.c
@@ -204,7 +204,7 @@ 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,
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_NO, _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ KC_NO, _______, QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
KC_PGUP, _______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
KC_HOME, _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
KC_PGDN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/kingly_keys/smd_milk/config.h b/keyboards/kingly_keys/smd_milk/config.h
index 27463b630f..a1a308f088 100644
--- a/keyboards/kingly_keys/smd_milk/config.h
+++ b/keyboards/kingly_keys/smd_milk/config.h
@@ -16,13 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xB195
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Kingly-Keys
-#define PRODUCT SMD-2% Milk
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 1
@@ -30,7 +23,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { C5, D2 }
#define MATRIX_COL_PINS { D3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/kingly_keys/smd_milk/info.json b/keyboards/kingly_keys/smd_milk/info.json
index 6b43f9e68d..66d8116f43 100644
--- a/keyboards/kingly_keys/smd_milk/info.json
+++ b/keyboards/kingly_keys/smd_milk/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "smd_milk",
+ "keyboard_name": "SMD-2% Milk",
+ "manufacturer": "Kingly-Keys",
"url": "",
"maintainer": "TheRoyalSweatshirt",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xB195",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [ {"x": 0, "y": 0 }, {"x": 0, "y": 1 }]
diff --git a/keyboards/kingly_keys/soap/config.h b/keyboards/kingly_keys/soap/config.h
index ca6504465f..503c77a04b 100644
--- a/keyboards/kingly_keys/soap/config.h
+++ b/keyboards/kingly_keys/soap/config.h
@@ -16,13 +16,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0004
-#define MANUFACTURER Kingly-Keys
-#define PRODUCT SOAP
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
@@ -33,7 +26,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { C7, C6 }
#define MATRIX_COL_PINS { F4, F1, F0, D5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kingly_keys/soap/info.json b/keyboards/kingly_keys/soap/info.json
index afdacddb8d..0bd017e8e0 100644
--- a/keyboards/kingly_keys/soap/info.json
+++ b/keyboards/kingly_keys/soap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "soap",
+ "keyboard_name": "SOAP",
+ "manufacturer": "Kingly-Keys",
"url": "https://github.com/TheRoyalSweatshirt/SOAP",
"maintainer": "[TheRoyalSweatshirt](https://github.com/TheRoyalSweatshirt)",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0003",
+ "device_version": "0.0.4"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1, "y":0}, {"label":"K02", "x":2, "y":0}, {"label":"K03", "x":4, "y":0}, {"label":"K10", "x":0, "y":1}, {"label":"K11", "x":1, "y":1}, {"label":"K12", "x":2, "y":1}, {"label":"K13", "x":4, "y":1}]
diff --git a/keyboards/kira75/config.h b/keyboards/kira75/config.h
index 18d8b8fad9..17c73df412 100644
--- a/keyboards/kira75/config.h
+++ b/keyboards/kira75/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER thesiscamper
-#define PRODUCT kira75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5, D4 }
#define MATRIX_COL_PINS { F6, F7, C7, C6, B6, B5, B4, F5, F4, F1, F0, E6, B3, B2, B1, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kira75/info.json b/keyboards/kira75/info.json
index 131e570810..37bded93f7 100644
--- a/keyboards/kira75/info.json
+++ b/keyboards/kira75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Kira 75",
+ "manufacturer": "thesiscamper",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"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":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "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", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "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":"Page Up", "x":15, "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":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"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":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5, "w":1.5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}]
diff --git a/keyboards/kira80/config.h b/keyboards/kira80/config.h
index d73c2faed0..4307eabbdd 100644
--- a/keyboards/kira80/config.h
+++ b/keyboards/kira80/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6986
-#define PRODUCT_ID 0xC583
-#define DEVICE_VER 0x0102
-#define MANUFACTURER EVE
-#define PRODUCT Kira80
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { B1, B2, B3, B5, B6, B7, B0 }
#define MATRIX_COL_PINS { A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, A0, C2, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kira80/info.json b/keyboards/kira80/info.json
index 04c32798a4..3f7dbe7af7 100644
--- a/keyboards/kira80/info.json
+++ b/keyboards/kira80/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Kira 80",
+ "keyboard_name": "Kira80",
+ "manufacturer": "EVE",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x6986",
+ "pid": "0xC583",
+ "device_version": "1.0.2"
+ },
"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":"Back", "x":13, "y":1.25}, {"label":"Back", "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":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":"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":"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/kira80/keymaps/ansi_wkl/keymap.c b/keyboards/kira80/keymaps/ansi_wkl/keymap.c
index 85411bbcd6..b2c2d96557 100644
--- a/keyboards/kira80/keymaps/ansi_wkl/keymap.c
+++ b/keyboards/kira80/keymaps/ansi_wkl/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_tkl_ansi_wkl(
KC_TRNS, 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, 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, QK_BOOT, 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),
diff --git a/keyboards/kiwikeebs/macro/config.h b/keyboards/kiwikeebs/macro/config.h
index 47349d0e09..67d02c6396 100644
--- a/keyboards/kiwikeebs/macro/config.h
+++ b/keyboards/kiwikeebs/macro/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B51
-#define PRODUCT_ID 0x4712
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KiwiKeebs
-#define PRODUCT MacroBoard v.1.0
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6, D7 }
#define MATRIX_COL_PINS { F7, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kiwikeebs/macro/info.json b/keyboards/kiwikeebs/macro/info.json
index de9ce2f01f..63fedd2484 100644
--- a/keyboards/kiwikeebs/macro/info.json
+++ b/keyboards/kiwikeebs/macro/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "KiwiKeebs MacroBoard v1.0",
+ "keyboard_name": "MacroBoard v.1.0",
+ "manufacturer": "KiwiKeebs",
"url": "https://www.reddit.com/r/mechmarket/comments/ibijrd/ic_kiwikeebs_6key_macroboard_rotary_encoder_diy/",
"maintainer": "KiwiKeebs",
+ "usb": {
+ "vid": "0x4B51",
+ "pid": "0x4712",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kiwikeebs/macro_v2/config.h b/keyboards/kiwikeebs/macro_v2/config.h
index a962a9a82a..9a24d57a69 100644
--- a/keyboards/kiwikeebs/macro_v2/config.h
+++ b/keyboards/kiwikeebs/macro_v2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B51
-#define PRODUCT_ID 0x4712
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KiwiKeebs
-#define PRODUCT MacroBoard v.2.0
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B5, B4 }
#define MATRIX_COL_PINS { B6, C6, C7, D4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kiwikeebs/macro_v2/info.json b/keyboards/kiwikeebs/macro_v2/info.json
index 524e259463..8c76890abd 100644
--- a/keyboards/kiwikeebs/macro_v2/info.json
+++ b/keyboards/kiwikeebs/macro_v2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "KiwiKeebs MacroBoard v.2.0",
+ "keyboard_name": "MacroBoard v.2.0",
+ "manufacturer": "KiwiKeebs",
"url": "https://www.reddit.com/r/mechmarket/comments/ibijrd/ic_kiwikeebs_6key_macroboard_rotary_encoder_diy/",
"maintainer": "KiwiKeebs",
+ "usb": {
+ "vid": "0x4B51",
+ "pid": "0x4712",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kiwikey/borderland/config.h b/keyboards/kiwikey/borderland/config.h
index 648c3a88de..42bc5644bd 100644
--- a/keyboards/kiwikey/borderland/config.h
+++ b/keyboards/kiwikey/borderland/config.h
@@ -5,13 +5,6 @@
#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
@@ -28,7 +21,6 @@
*/
#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
diff --git a/keyboards/kiwikey/borderland/info.json b/keyboards/kiwikey/borderland/info.json
index c92df0521d..2123268c2e 100644
--- a/keyboards/kiwikey/borderland/info.json
+++ b/keyboards/kiwikey/borderland/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Borderland",
+ "manufacturer": "KiwiKey",
"url": "https://kiwikey.vn/borderland/",
"maintainer": "KiwiKey",
+ "usb": {
+ "vid": "0x4B57",
+ "pid": "0x424C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kiwikey/borderland/readme.md b/keyboards/kiwikey/borderland/readme.md
index 98f76e0f13..6a7b602ba9 100644
--- a/keyboards/kiwikey/borderland/readme.md
+++ b/keyboards/kiwikey/borderland/readme.md
@@ -24,4 +24,4 @@ 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`
+* **Keycode in layout**: Press the key mapped to `QK_BOOT`, in default keymap it is `Fn+R`
diff --git a/keyboards/kiwikey/kawii9/config.h b/keyboards/kiwikey/kawii9/config.h
index 59adcd253e..10ab8dfd5b 100644
--- a/keyboards/kiwikey/kawii9/config.h
+++ b/keyboards/kiwikey/kawii9/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B57 // KW - KiwiKey
-#define PRODUCT_ID 0x0303 // 3x3
-#define DEVICE_VER 0x0002
-#define MANUFACTURER KiwiKey
-#define PRODUCT Kawii9
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, B5, B4 }
#define MATRIX_COL_PINS { F4, F5, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kiwikey/kawii9/info.json b/keyboards/kiwikey/kawii9/info.json
index 367f402f7b..ad8ae3679a 100644
--- a/keyboards/kiwikey/kawii9/info.json
+++ b/keyboards/kiwikey/kawii9/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Kawii9",
+ "manufacturer": "KiwiKey",
"url": "http://kiwikey.vn/kawii9/",
"maintainer": "KiwiKey",
+ "usb": {
+ "vid": "0x4B57",
+ "pid": "0x0303",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_ortho_3x3": {
"layout": [
diff --git a/keyboards/kiwikey/wanderland/config.h b/keyboards/kiwikey/wanderland/config.h
index e0b9ba8946..fc42b5ff19 100644
--- a/keyboards/kiwikey/wanderland/config.h
+++ b/keyboards/kiwikey/wanderland/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B57 // KW - KiwiKey
-#define PRODUCT_ID 0x574C // WL - Wanderland
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KiwiKey
-#define PRODUCT Wanderland
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 13
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F1, E6, E2, C7, D4 }
#define MATRIX_COL_PINS { F5, F6, B4, D7, D6, D5, D2, D3, B0, F0, B1, B2, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kiwikey/wanderland/info.json b/keyboards/kiwikey/wanderland/info.json
index 01196c3418..92dfb2fff6 100644
--- a/keyboards/kiwikey/wanderland/info.json
+++ b/keyboards/kiwikey/wanderland/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Wanderland",
+ "manufacturer": "KiwiKey",
"url": "http://kiwikey.vn/wanderland",
"maintainer": "KiwiKey",
+ "usb": {
+ "vid": "0x4B57",
+ "pid": "0x574C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/kiwikey/wanderland/keymaps/stanrc85/keymap.c b/keyboards/kiwikey/wanderland/keymaps/stanrc85/keymap.c
index c535306afc..ce36d1ba38 100644
--- a/keyboards/kiwikey/wanderland/keymaps/stanrc85/keymap.c
+++ b/keyboards/kiwikey/wanderland/keymaps/stanrc85/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN2_60] = LAYOUT_alice(
BL_TOGG, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______,
- BL_INC, VLK_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ BL_INC, VLK_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE,
_______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, TG(_DEFAULT)
diff --git a/keyboards/kkatano/bakeneko60/config.h b/keyboards/kkatano/bakeneko60/config.h
index 9e373686fd..fc3da670dc 100644
--- a/keyboards/kkatano/bakeneko60/config.h
+++ b/keyboards/kkatano/bakeneko60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3A0E
-#define PRODUCT_ID 0xCBDC
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kkatano
-#define PRODUCT Bakeneko 60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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 UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kkatano/bakeneko60/info.json b/keyboards/kkatano/bakeneko60/info.json
index 6bf6a08575..7d957740a6 100644
--- a/keyboards/kkatano/bakeneko60/info.json
+++ b/keyboards/kkatano/bakeneko60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Bakeneko 60",
+ "manufacturer": "kkatano",
"url": "https://github.com/kkatano/bakeneko-60-pcb",
"maintainer": "kkatano",
+ "usb": {
+ "vid": "0x3A0E",
+ "pid": "0xCBDC",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
diff --git a/keyboards/kkatano/bakeneko65/rev2/config.h b/keyboards/kkatano/bakeneko65/rev2/config.h
index 7e70f549cd..442f69238f 100644
--- a/keyboards/kkatano/bakeneko65/rev2/config.h
+++ b/keyboards/kkatano/bakeneko65/rev2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3A0E
-#define PRODUCT_ID 0x4C82
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kkatano
-#define PRODUCT Bakeneko 65 V2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/kkatano/bakeneko65/rev2/info.json b/keyboards/kkatano/bakeneko65/rev2/info.json
index cbcb6a2551..064934b475 100644
--- a/keyboards/kkatano/bakeneko65/rev2/info.json
+++ b/keyboards/kkatano/bakeneko65/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Bakeneko 65 V2",
+ "manufacturer": "kkatano",
"url": "https://github.com/kkatano/bakeneko-65",
"maintainer": "kkatano",
+ "usb": {
+ "vid": "0x3A0E",
+ "pid": "0x4C82",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_split_bs": {
"layout": [
diff --git a/keyboards/kkatano/bakeneko65/rev3/config.h b/keyboards/kkatano/bakeneko65/rev3/config.h
index 9fa3e68ca0..442f69238f 100644
--- a/keyboards/kkatano/bakeneko65/rev3/config.h
+++ b/keyboards/kkatano/bakeneko65/rev3/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3A0E
-#define PRODUCT_ID 0x4C83
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kkatano
-#define PRODUCT Bakeneko 65 V3
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/kkatano/bakeneko65/rev3/info.json b/keyboards/kkatano/bakeneko65/rev3/info.json
index b54c21aafa..43e1170904 100644
--- a/keyboards/kkatano/bakeneko65/rev3/info.json
+++ b/keyboards/kkatano/bakeneko65/rev3/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Bakeneko 65 V3",
+ "manufacturer": "kkatano",
"url": "https://github.com/kkatano/bakeneko-65",
"maintainer": "kkatano",
+ "usb": {
+ "vid": "0x3A0E",
+ "pid": "0x4C83",
+ "device_version": "0.0.1"
+ },
"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/kkatano/bakeneko80/config.h b/keyboards/kkatano/bakeneko80/config.h
index 0e61db875b..89fd9070a0 100644
--- a/keyboards/kkatano/bakeneko80/config.h
+++ b/keyboards/kkatano/bakeneko80/config.h
@@ -19,13 +19,6 @@ 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 0x8DEF
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Koichi Katano
-#define PRODUCT Bakeneko 80
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6, B0, B1, B7, D1, D0 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kkatano/bakeneko80/info.json b/keyboards/kkatano/bakeneko80/info.json
index afd608a06f..8516779a8c 100644
--- a/keyboards/kkatano/bakeneko80/info.json
+++ b/keyboards/kkatano/bakeneko80/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Bakeneko 80",
+ "manufacturer": "Koichi Katano",
"url": "https://github.com/kkatano/bakeneko-80-pcb",
"maintainer": "Koichi Katano",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x8DEF",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [{"label":"1", "x":0, "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.5, "y":0}, {"label":"7", "x":7.5, "y":0}, {"label":"8", "x":8.5, "y":0}, {"label":"9", "x":9.5, "y":0}, {"label":"10", "x":11, "y":0}, {"label":"11", "x":12, "y":0}, {"label":"12", "x":13, "y":0}, {"label":"13", "x":14, "y":0}, {"label":"14", "x":15.25, "y":0}, {"label":"15", "x":16.25, "y":0}, {"label":"16", "x":17.25, "y":0}, {"label":"17", "x":0, "y":1.25}, {"label":"18", "x":1, "y":1.25}, {"label":"19", "x":2, "y":1.25}, {"label":"20", "x":3, "y":1.25}, {"label":"21", "x":4, "y":1.25}, {"label":"22", "x":5, "y":1.25}, {"label":"23", "x":6, "y":1.25}, {"label":"24", "x":7, "y":1.25}, {"label":"25", "x":8, "y":1.25}, {"label":"26", "x":9, "y":1.25}, {"label":"27", "x":10, "y":1.25}, {"label":"28", "x":11, "y":1.25}, {"label":"29", "x":12, "y":1.25}, {"label":"30", "x":13, "y":1.25, "w":2}, {"label":"31", "x":15.25, "y":1.25}, {"label":"32", "x":16.25, "y":1.25}, {"label":"33", "x":17.25, "y":1.25}, {"label":"34", "x":0, "y":2.25, "w":1.5}, {"label":"35", "x":1.5, "y":2.25}, {"label":"36", "x":2.5, "y":2.25}, {"label":"37", "x":3.5, "y":2.25}, {"label":"38", "x":4.5, "y":2.25}, {"label":"39", "x":5.5, "y":2.25}, {"label":"40", "x":6.5, "y":2.25}, {"label":"41", "x":7.5, "y":2.25}, {"label":"42", "x":8.5, "y":2.25}, {"label":"43", "x":9.5, "y":2.25}, {"label":"44", "x":10.5, "y":2.25}, {"label":"45", "x":11.5, "y":2.25}, {"label":"46", "x":12.5, "y":2.25}, {"label":"47", "x":13.5, "y":2.25, "w":1.5}, {"label":"48", "x":15.25, "y":2.25}, {"label":"49", "x":16.25, "y":2.25}, {"label":"50", "x":17.25, "y":2.25}, {"label":"51", "x":0, "y":3.25, "w":1.75}, {"label":"52", "x":1.75, "y":3.25}, {"label":"53", "x":2.75, "y":3.25}, {"label":"54", "x":3.75, "y":3.25}, {"label":"55", "x":4.75, "y":3.25}, {"label":"56", "x":5.75, "y":3.25}, {"label":"57", "x":6.75, "y":3.25}, {"label":"58", "x":7.75, "y":3.25}, {"label":"59", "x":8.75, "y":3.25}, {"label":"60", "x":9.75, "y":3.25}, {"label":"61", "x":10.75, "y":3.25}, {"label":"62", "x":11.75, "y":3.25}, {"label":"63", "x":12.75, "y":3.25, "w":2.25}, {"label":"64", "x":0, "y":4.25, "w":2.25}, {"label":"65", "x":2.25, "y":4.25}, {"label":"66", "x":3.25, "y":4.25}, {"label":"67", "x":4.25, "y":4.25}, {"label":"68", "x":5.25, "y":4.25}, {"label":"69", "x":6.25, "y":4.25}, {"label":"70", "x":7.25, "y":4.25}, {"label":"71", "x":8.25, "y":4.25}, {"label":"72", "x":9.25, "y":4.25}, {"label":"73", "x":10.25, "y":4.25}, {"label":"74", "x":11.25, "y":4.25}, {"label":"75", "x":12.25, "y":4.25, "w":2.75}, {"label":"76", "x":16.25, "y":4.25}, {"label":"77", "x":0, "y":5.25, "w":1.25}, {"label":"78", "x":1.25, "y":5.25, "w":1.25}, {"label":"79", "x":2.5, "y":5.25, "w":1.25}, {"label":"80", "x":3.75, "y":5.25, "w":6.25}, {"label":"81", "x":10, "y":5.25, "w":1.25}, {"label":"82", "x":11.25, "y":5.25, "w":1.25}, {"label":"83", "x":12.5, "y":5.25, "w":1.25}, {"label":"84", "x":13.75, "y":5.25, "w":1.25}, {"label":"85", "x":15.25, "y":5.25}, {"label":"86", "x":16.25, "y":5.25}, {"label":"87", "x":17.25, "y":5.25}]
diff --git a/keyboards/kkatano/wallaby/config.h b/keyboards/kkatano/wallaby/config.h
index 00ba00ccac..fc380eecf6 100644
--- a/keyboards/kkatano/wallaby/config.h
+++ b/keyboards/kkatano/wallaby/config.h
@@ -19,13 +19,6 @@ 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 0x5967
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Koichi Katano
-#define PRODUCT Wallaby
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B5, B4, B3, B2, B1, B0 }
#define MATRIX_COL_PINS { D5, C7, C6, D4, D0, E6, F0, F1, F4, F5, F6, F7, D7, D6, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kkatano/wallaby/info.json b/keyboards/kkatano/wallaby/info.json
index 6ff20c91f4..3867a7cbf9 100644
--- a/keyboards/kkatano/wallaby/info.json
+++ b/keyboards/kkatano/wallaby/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Wallaby",
+ "manufacturer": "Koichi Katano",
"url": "https://github.com/kkatano/wallaby",
"maintainer": "Koichi Katano",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x5967",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/kkatano/yurei/config.h b/keyboards/kkatano/yurei/config.h
index 14eae7f387..95aa6b7ee3 100644
--- a/keyboards/kkatano/yurei/config.h
+++ b/keyboards/kkatano/yurei/config.h
@@ -19,13 +19,6 @@ 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 0x5D5E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Koichi Katano
-#define PRODUCT Yurei
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B5, B4, B3, B2, B1, B0 }
#define MATRIX_COL_PINS { D5, C7, C6, D4, D0, E6, F0, F1, F4, F5, F6, F7, D7, D6, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kkatano/yurei/info.json b/keyboards/kkatano/yurei/info.json
index bbbdb01a25..67c7669cd5 100644
--- a/keyboards/kkatano/yurei/info.json
+++ b/keyboards/kkatano/yurei/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Yurei",
+ "manufacturer": "Koichi Katano",
"url": "https://github.com/kkatano/yurei",
"maintainer": "Koichi Katano",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x5D5E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/kmac/config.h b/keyboards/kmac/config.h
index 3bc567333e..3d1b8eb5d5 100644
--- a/keyboards/kmac/config.h
+++ b/keyboards/kmac/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B4D // KM
-#define PRODUCT_ID 0x4143 // AC
-#define DEVICE_VER 0x0104
-#define MANUFACTURER KBDMania
-#define PRODUCT KMAC
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ D0, D1, D2, D3, D5, B7 }
#define MATRIX_COL_PINS \
{ B6, C6, C7, F1, F0, B5, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
//#define DIODE_DIRECTION
diff --git a/keyboards/kmac/info.json b/keyboards/kmac/info.json
index 91e7a2dedd..27e6c03524 100644
--- a/keyboards/kmac/info.json
+++ b/keyboards/kmac/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "kmac",
+ "keyboard_name": "KMAC",
+ "manufacturer": "KBDMania",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B4D",
+ "pid": "0x4143",
+ "device_version": "1.0.4"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/kmac_pad/config.h b/keyboards/kmac_pad/config.h
index 189f2f9c08..301a7813da 100644
--- a/keyboards/kmac_pad/config.h
+++ b/keyboards/kmac_pad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B4D // KM
-#define PRODUCT_ID 0x4143 // AC
-#define DEVICE_VER 0x0104
-#define MANUFACTURER KBDMania
-#define PRODUCT KMAC PAD
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -37,7 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E2, D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { C7, C6, B6, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
// #define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kmac_pad/info.json b/keyboards/kmac_pad/info.json
index 26bb3b66d9..2ce217d70a 100644
--- a/keyboards/kmac_pad/info.json
+++ b/keyboards/kmac_pad/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "KMAC PAD",
+ "manufacturer": "KBDMania",
"maintainer": "talsu",
+ "usb": {
+ "vid": "0x4B4D",
+ "pid": "0x4143",
+ "device_version": "1.0.4"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kmini/config.h b/keyboards/kmini/config.h
index c242aff0d0..7138b158a6 100755
--- a/keyboards/kmini/config.h
+++ b/keyboards/kmini/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6050
-#define DEVICE_VER 0x0104
-#define MANUFACTURER Revo
-#define PRODUCT KMAC Kmini
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
@@ -36,7 +29,6 @@
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
//#define DIODE_DIRECTION
diff --git a/keyboards/kmini/info.json b/keyboards/kmini/info.json
index a3b61c3cb2..42d7da54bb 100755
--- a/keyboards/kmini/info.json
+++ b/keyboards/kmini/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "KMAC Mini",
+ "manufacturer": "Revo",
"url": "http://kbdmodadmin.cafe24.com/product/detail.html?product_no=12&cate_no=4&display_group=1",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6050",
+ "device_version": "1.0.4"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"Esc", "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":8.25, "y":0}, {"label":"&", "x":9.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":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"Insert", "x":17.25, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "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":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgUp", "x":17.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"PgDn", "x":17.25, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, {"label":"GUI", "x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.5}, {"x":6.25, "y":4, "w":7}, {"label":"Fn", "x":13.25, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}]
diff --git a/keyboards/knobgoblin/config.h b/keyboards/knobgoblin/config.h
index ed6d69d6f0..57a0a016c4 100644
--- a/keyboards/knobgoblin/config.h
+++ b/keyboards/knobgoblin/config.h
@@ -18,12 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B47 // KG
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MrT1ddl3s
-#define PRODUCT Knob Goblin
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 5
@@ -31,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D4, B6, B2, B3, B1 }
#define MATRIX_COL_PINS { B5, B4, E6, D7, C6 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { F7, F5 }
#define ENCODERS_PAD_B { F6, F4 }
diff --git a/keyboards/knobgoblin/info.json b/keyboards/knobgoblin/info.json
index cea6915409..44a9d81ed5 100644
--- a/keyboards/knobgoblin/info.json
+++ b/keyboards/knobgoblin/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "knobgoblin",
+ "keyboard_name": "Knob Goblin",
+ "manufacturer": "MrT1ddl3s",
"url": "",
"maintainer": "MrT1ddl3s",
+ "usb": {
+ "vid": "0x4B47",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho": {
"layout": [
diff --git a/keyboards/knobgoblin/keymaps/moults31/keymap.c b/keyboards/knobgoblin/keymaps/moults31/keymap.c
index 20dda4ccd0..775f9d1b5d 100644
--- a/keyboards/knobgoblin/keymaps/moults31/keymap.c
+++ b/keyboards/knobgoblin/keymaps/moults31/keymap.c
@@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[10] = LAYOUT_ortho(
- RESET, KC_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS,
TO(7), TO(8), TO(9), KC_TRNS,
TO(4), TO(5), TO(6), KC_TRNS,
KC_TRNS, TO(1), TO(2), TO(3), KC_TRNS,
diff --git a/keyboards/knops/mini/config.h b/keyboards/knops/mini/config.h
index 8fb094fb94..7ca350b30c 100644
--- a/keyboards/knops/mini/config.h
+++ b/keyboards/knops/mini/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEFD
-#define PRODUCT_ID 0x9460
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Alltrons IT
-#define PRODUCT Knops Mini
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/knops/mini/info.json b/keyboards/knops/mini/info.json
index 184333117e..fcc8e5229e 100644
--- a/keyboards/knops/mini/info.json
+++ b/keyboards/knops/mini/info.json
@@ -1,8 +1,13 @@
{
"keyboard_name": "Knops Mini",
+ "manufacturer": "Alltrons IT",
"url": "http://www.knops.io/knopsmini.html",
"maintainer": "Pawnerd",
- "bootloader": "lufa-dfu",
+ "usb": {
+ "vid": "0xFEFD",
+ "pid": "0x9460",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/knops/mini/keymaps/mverteuil/keymap.c b/keyboards/knops/mini/keymaps/mverteuil/keymap.c
index 12afb57da2..8f28f4c617 100644
--- a/keyboards/knops/mini/keymaps/mverteuil/keymap.c
+++ b/keyboards/knops/mini/keymaps/mverteuil/keymap.c
@@ -140,7 +140,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*
*/
[_LAYER_SELECT] = LAYOUT(
- _______, _______, RESET,
+ _______, _______, QK_BOOT,
TO(_MEDIA),TO(_COPYPASTA),TO(_SPECTACLES)
)
};
diff --git a/keyboards/kona_classic/config.h b/keyboards/kona_classic/config.h
index c5a783c811..f53944789e 100644
--- a/keyboards/kona_classic/config.h
+++ b/keyboards/kona_classic/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0003
-#define MANUFACTURER Dangerous Parts
-#define PRODUCT Kona Classic
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -37,7 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Column pin configuration
*/
#define MATRIX_COL_PINS { F0, F4, B5, B4, D7, D6, B0, B1, B3, D2, B7, D0, D1, D3, C6, C7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/kona_classic/info.json b/keyboards/kona_classic/info.json
index 9d4f7203b9..2b64911bcb 100644
--- a/keyboards/kona_classic/info.json
+++ b/keyboards/kona_classic/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Kona Classic",
+ "manufacturer": "Dangerous Parts",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"KA0", "x":0, "y":0}, {"label":"KA1", "x":1, "y":0}, {"label":"K00", "x":2.25, "y":0}, {"label":"K01", "x":3.25, "y":0}, {"label":"K02", "x":4.25, "y":0}, {"label":"K03", "x":5.25, "y":0}, {"label":"K04", "x":6.25, "y":0}, {"label":"K05", "x":7.25, "y":0}, {"label":"K06", "x":8.25, "y":0}, {"label":"K07", "x":9.25, "y":0}, {"label":"K08", "x":10.25, "y":0}, {"label":"K09", "x":11.25, "y":0}, {"label":"K0A", "x":12.25, "y":0}, {"label":"K0B", "x":13.25, "y":0}, {"label":"K0C", "x":14.25, "y":0}, {"label":"K0D", "x":15.25, "y":0, "w":2}, {"label":"KA2", "x":0, "y":1}, {"label":"KA3", "x":1, "y":1}, {"label":"K10", "x":2.25, "y":1, "w":1.5}, {"label":"K11", "x":3.75, "y":1}, {"label":"K12", "x":4.75, "y":1}, {"label":"K13", "x":5.75, "y":1}, {"label":"K14", "x":6.75, "y":1}, {"label":"K15", "x":7.75, "y":1}, {"label":"K16", "x":8.75, "y":1}, {"label":"K17", "x":9.75, "y":1}, {"label":"K18", "x":10.75, "y":1}, {"label":"K19", "x":11.75, "y":1}, {"label":"K1A", "x":12.75, "y":1}, {"label":"K1B", "x":13.75, "y":1}, {"label":"K1C", "x":14.75, "y":1}, {"label":"K1D", "x":15.75, "y":1, "w":1.5}, {"label":"KA4", "x":0, "y":2}, {"label":"KA5", "x":1, "y":2}, {"label":"K20", "x":2.25, "y":2, "w":1.75}, {"label":"K21", "x":4, "y":2}, {"label":"K22", "x":5, "y":2}, {"label":"K23", "x":6, "y":2}, {"label":"K24", "x":7, "y":2}, {"label":"K25", "x":8, "y":2}, {"label":"K26", "x":9, "y":2}, {"label":"K27", "x":10, "y":2}, {"label":"K28", "x":11, "y":2}, {"label":"K29", "x":12, "y":2}, {"label":"K2A", "x":13, "y":2}, {"label":"K2B", "x":14, "y":2}, {"label":"K2C", "x":15, "y":2, "w":2.25}, {"label":"KA6", "x":0, "y":3}, {"label":"KA7", "x":1, "y":3}, {"label":"K30", "x":2.25, "y":3, "w":1.25}, {"label":"K31", "x":3.5, "y":3}, {"label":"K32", "x":4.5, "y":3}, {"label":"K33", "x":5.5, "y":3}, {"label":"K34", "x":6.5, "y":3}, {"label":"K35", "x":7.5, "y":3}, {"label":"K36", "x":8.5, "y":3}, {"label":"K37", "x":9.5, "y":3}, {"label":"K38", "x":10.5, "y":3}, {"label":"K39", "x":11.5, "y":3}, {"label":"K3A", "x":12.5, "y":3}, {"label":"K3B", "x":13.5, "y":3}, {"label":"K3C", "x":15.25, "y":3}, {"label":"K3D", "x":16.25, "y":3}, {"label":"KA8", "x":0, "y":4}, {"label":"KA9", "x":1, "y":4}, {"label":"K40", "x":2.25, "y":4, "w":1.25}, {"label":"K41", "x":3.5, "y":4, "w":1.25}, {"label":"K42", "x":4.75, "y":4, "w":1.25}, {"label":"K44", "x":6, "y":4, "w":2.25}, {"label":"K46", "x":8.25, "y":4, "w":1.25}, {"label":"K47", "x":9.5, "y":4, "w":2.75}, {"label":"K49", "x":12.25, "y":4}, {"label":"K4A", "x":13.25, "y":4}, {"label":"K4B", "x":14.25, "y":4}, {"label":"K4C", "x":15.25, "y":4}, {"label":"K4D", "x":16.25, "y":4}]
diff --git a/keyboards/kona_classic/keymaps/ansi_arrows/keymap.c b/keyboards/kona_classic/keymaps/ansi_arrows/keymap.c
index ac0ebf02a9..dc60f24dc3 100644
--- a/keyboards/kona_classic/keymaps/ansi_arrows/keymap.c
+++ b/keyboards/kona_classic/keymaps/ansi_arrows/keymap.c
@@ -36,7 +36,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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT_ansi_arrows(
- RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/keymap.c b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/keymap.c
index 1163931076..ac52ba3585 100644
--- a/keyboards/kona_classic/keymaps/ansi_arrows_lcap/keymap.c
+++ b/keyboards/kona_classic/keymaps/ansi_arrows_lcap/keymap.c
@@ -36,7 +36,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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT_ansi_arrows(
- RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kona_classic/keymaps/ansi_split/keymap.c b/keyboards/kona_classic/keymaps/ansi_split/keymap.c
index 4687b72ae7..3c331e1735 100644
--- a/keyboards/kona_classic/keymaps/ansi_split/keymap.c
+++ b/keyboards/kona_classic/keymaps/ansi_split/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kona_classic/keymaps/ansi_split_arrows/keymap.c b/keyboards/kona_classic/keymaps/ansi_split_arrows/keymap.c
index b53caf9ea3..7eaea8b4f2 100644
--- a/keyboards/kona_classic/keymaps/ansi_split_arrows/keymap.c
+++ b/keyboards/kona_classic/keymaps/ansi_split_arrows/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kona_classic/keymaps/iso_arrows/keymap.c b/keyboards/kona_classic/keymaps/iso_arrows/keymap.c
index c117f58faa..5130cb390f 100644
--- a/keyboards/kona_classic/keymaps/iso_arrows/keymap.c
+++ b/keyboards/kona_classic/keymaps/iso_arrows/keymap.c
@@ -36,7 +36,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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = LAYOUT_iso_arrows(
- RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ RGB_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kona_classic/keymaps/iso_split/keymap.c b/keyboards/kona_classic/keymaps/iso_split/keymap.c
index 4ec69984d1..d2f7d85882 100644
--- a/keyboards/kona_classic/keymaps/iso_split/keymap.c
+++ b/keyboards/kona_classic/keymaps/iso_split/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kona_classic/keymaps/iso_split_arrows/keymap.c b/keyboards/kona_classic/keymaps/iso_split_arrows/keymap.c
index e6bd3f58e3..af0bafad40 100644
--- a/keyboards/kona_classic/keymaps/iso_split_arrows/keymap.c
+++ b/keyboards/kona_classic/keymaps/iso_split_arrows/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_TOG, RGB_MOD, KC_TILD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_HUI, RGB_HUD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kopibeng/mnk65/config.h b/keyboards/kopibeng/mnk65/config.h
index 6059de6ab1..a5bc7430c8 100644
--- a/keyboards/kopibeng/mnk65/config.h
+++ b/keyboards/kopibeng/mnk65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 // 'KP' kopibeng
-#define PRODUCT_ID 0x0651
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kopibeng
-#define PRODUCT MNK65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, B7, B3 }
#define MATRIX_COL_PINS { D0, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5 }
-#define UNUSED_PINS
#define LED_CAPS_LOCK_PIN D1
diff --git a/keyboards/kopibeng/mnk65/info.json b/keyboards/kopibeng/mnk65/info.json
index e0bd2f7859..90266e2438 100644
--- a/keyboards/kopibeng/mnk65/info.json
+++ b/keyboards/kopibeng/mnk65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MNK65",
- "maintainer": "kopibeng",
+ "manufacturer": "kopibeng",
"url": "https://monokei.co/",
+ "maintainer": "kopibeng",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x0651",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kopibeng/mnk65/readme.md b/keyboards/kopibeng/mnk65/readme.md
index 80e256e617..f4c07ce6a8 100644
--- a/keyboards/kopibeng/mnk65/readme.md
+++ b/keyboards/kopibeng/mnk65/readme.md
@@ -18,4 +18,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
* Physical reset button: Press the RESET switch on top side of PCB.
* Bootmagic reset: Unplug keyboard, hold down ESC key and plug in the keyboard.
-* Keycode reset: Press the RESET keycode (default: MO(1) + Home keys) in layout if available.
+* Keycode reset: Press the `QK_BOOT` keycode (default: MO(1) + Home keys) in layout if available.
diff --git a/keyboards/kopibeng/mnk88/config.h b/keyboards/kopibeng/mnk88/config.h
index d8b4422523..e026367dd6 100644
--- a/keyboards/kopibeng/mnk88/config.h
+++ b/keyboards/kopibeng/mnk88/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 // 'KP' kopibeng
-#define PRODUCT_ID 0x8800
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kopibeng
-#define PRODUCT MNK88
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -50,7 +43,7 @@
#define RGB_DI_PIN A10
#ifdef RGB_DI_PIN
- #define RGBLED_NUM 19
+ #define RGBLED_NUM 20
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/kopibeng/mnk88/info.json b/keyboards/kopibeng/mnk88/info.json
index 2ee4da8050..68e64b6095 100644
--- a/keyboards/kopibeng/mnk88/info.json
+++ b/keyboards/kopibeng/mnk88/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MNK88",
- "maintainer": "kopibeng",
+ "manufacturer": "kopibeng",
"url": "https://monokei.co/",
+ "maintainer": "kopibeng",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x8800",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kopibeng/typ65/config.h b/keyboards/kopibeng/typ65/config.h
index 9b96483b6a..07899583ce 100644
--- a/keyboards/kopibeng/typ65/config.h
+++ b/keyboards/kopibeng/typ65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 // 'KP' kopibeng
-#define PRODUCT_ID 0x065E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kopibeng
-#define PRODUCT Typ65+
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/kopibeng/typ65/info.json b/keyboards/kopibeng/typ65/info.json
index ce3bfbee39..b41daf736c 100644
--- a/keyboards/kopibeng/typ65/info.json
+++ b/keyboards/kopibeng/typ65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Typ65+",
- "maintainer": "kopibeng",
+ "manufacturer": "kopibeng",
"url": "https://www.axiomstudios.shop/",
+ "maintainer": "kopibeng",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x065E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kopibeng/typ65/readme.md b/keyboards/kopibeng/typ65/readme.md
index af8106891d..4e9cd63374 100644
--- a/keyboards/kopibeng/typ65/readme.md
+++ b/keyboards/kopibeng/typ65/readme.md
@@ -18,4 +18,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
* Physical reset button: Press the RESET switch on top side of PCB.
* Bootmagic reset: Unplug keyboard, hold down ESC key and plug in the keyboard.
-* Keycode reset: Press the RESET keycode (default: MO(1) + HOME keys in default layout).
+* Keycode reset: Press the `QK_BOOT` keycode (default: MO(1) + HOME keys in default layout).
diff --git a/keyboards/kopibeng/xt60/config.h b/keyboards/kopibeng/xt60/config.h
index 30aff4955e..65ea5b0aa6 100644
--- a/keyboards/kopibeng/xt60/config.h
+++ b/keyboards/kopibeng/xt60/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 // 'KP' kopibeng
-#define PRODUCT_ID 0x0600
-#define DEVICE_VER 0x0002
-#define MANUFACTURER kopibeng
-#define PRODUCT XT60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/kopibeng/xt60/info.json b/keyboards/kopibeng/xt60/info.json
index fbd8904a7f..6d946c960e 100644
--- a/keyboards/kopibeng/xt60/info.json
+++ b/keyboards/kopibeng/xt60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "XT60",
- "maintainer": "Kopibeng",
+ "manufacturer": "kopibeng",
"url": "",
+ "maintainer": "Kopibeng",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x0600",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kopibeng/xt60/readme.md b/keyboards/kopibeng/xt60/readme.md
index 177b22be4c..6eacaded6f 100644
--- a/keyboards/kopibeng/xt60/readme.md
+++ b/keyboards/kopibeng/xt60/readme.md
@@ -18,4 +18,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
* Physical reset button: Press the RESET switch on top side of PCB.
* Bootmagic reset: Unplug keyboard, hold down ESC key and plug in the keyboard.
-* Keycode reset: Press the RESET keycode (default: MO(1) + R keys) in layout if available. \ No newline at end of file
+* Keycode reset: Press the `QK_BOOT` keycode (default: MO(1) + R keys) in layout if available. \ No newline at end of file
diff --git a/keyboards/kopibeng/xt60_singa/config.h b/keyboards/kopibeng/xt60_singa/config.h
new file mode 100644
index 0000000000..ef20c3cdf1
--- /dev/null
+++ b/keyboards/kopibeng/xt60_singa/config.h
@@ -0,0 +1,74 @@
+/* Copyright 2021 Samuel Lu
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 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 { F7, F4, D0, B3, B7 }
+#define MATRIX_COL_PINS { C7, F5, F1, F0, C6, B6, B5, B4, D7, D6, D5, D3, D2, D1 }
+
+#define LED_CAPS_LOCK_PIN D4
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN F6
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 14
+ #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
+
+/* 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/kopibeng/xt60_singa/info.json b/keyboards/kopibeng/xt60_singa/info.json
new file mode 100644
index 0000000000..09191eac10
--- /dev/null
+++ b/keyboards/kopibeng/xt60_singa/info.json
@@ -0,0 +1,87 @@
+{
+ "keyboard_name": "XT60_SINGA",
+ "manufacturer": "kopibeng",
+ "url": "",
+ "maintainer": "Kopibeng",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x0601",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "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,A", "x": 10, "y": 0 },
+ { "label": "0,B", "x": 11, "y": 0 },
+ { "label": "0,C", "x": 12, "y": 0 },
+ { "label": "0,D", "x": 13, "y": 0 },
+ { "label": "1,D", "x": 14, "y": 0 },
+
+ { "label": "1,0", "w": 1.5, "x": 0, "y": 1 },
+ { "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,A", "x": 10.5, "y": 1 },
+ { "label": "1,B", "x": 11.5, "y": 1 },
+ { "label": "1,C", "x": 12.5, "y": 1 },
+ { "label": "2,C", "w": 1.5, "x": 13.5, "y": 1 },
+
+ { "label": "2,0", "w": 1.75, "x": 0, "y": 2 },
+ { "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,A", "x": 10.75, "y": 2 },
+ { "label": "2,B", "x": 11.75, "y": 2 },
+ { "label": "2,D", "w": 2.25, "x": 12.75, "y": 2 },
+
+ { "label": "3,0", "w": 1.25, "x": 0, "y": 3 },
+ { "label": "3,1", "x": 1.25, "y": 3 },
+ { "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,A", "x": 10.25, "y": 3 },
+ { "label": "3,B", "x": 11.25, "y": 3 },
+ { "label": "3,C", "w": 1.75, "x": 12.25, "y": 3 },
+ { "label": "3,D", "x": 14, "y": 3 },
+
+ { "label": "4,0", "w": 1.25, "x": 0, "y": 4 },
+ { "label": "4,1", "w": 1.25, "x": 1.25, "y": 4 },
+ { "label": "4,2", "w": 1.25, "x": 2.5, "y": 4 },
+ { "label": "4,4", "w": 2.25, "x": 3.75, "y": 4 },
+ { "label": "4,6", "w": 1.25, "x": 6, "y": 4 },
+ { "label": "4,8", "w": 2.75, "x": 7.25, "y": 4 },
+ { "label": "4,A", "w": 1.25, "x": 10, "y": 4 },
+ { "label": "4,B", "w": 1.25, "x": 11.25, "y": 4 },
+ { "label": "4,C", "w": 1.25, "x": 12.5, "y": 4 },
+ { "label": "4,D", "w": 1.25, "x": 13.75, "y": 4 }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/kopibeng/xt60_singa/keymaps/default/keymap.c b/keyboards/kopibeng/xt60_singa/keymaps/default/keymap.c
new file mode 100644
index 0000000000..ee43182799
--- /dev/null
+++ b/keyboards/kopibeng/xt60_singa/keymaps/default/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2021 Samuel Lu
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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
+ [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_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, KC_SPC, KC_SPC, MO(2), KC_RALT, MO(1), KC_RCTL
+ ),
+
+ // Fn1 Layer
+ [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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_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_VOLU, KC_MPLY, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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
+ ),
+
+ // 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
+ ),
+};
+
diff --git a/keyboards/kopibeng/xt60_singa/keymaps/via/keymap.c b/keyboards/kopibeng/xt60_singa/keymaps/via/keymap.c
new file mode 100644
index 0000000000..ee43182799
--- /dev/null
+++ b/keyboards/kopibeng/xt60_singa/keymaps/via/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2021 Samuel Lu
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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
+ [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_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, KC_SPC, KC_SPC, MO(2), KC_RALT, MO(1), KC_RCTL
+ ),
+
+ // Fn1 Layer
+ [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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_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_VOLU, KC_MPLY, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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
+ ),
+
+ // 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
+ ),
+};
+
diff --git a/keyboards/kopibeng/xt60_singa/keymaps/via/rules.mk b/keyboards/kopibeng/xt60_singa/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/kopibeng/xt60_singa/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kopibeng/xt60_singa/readme.md b/keyboards/kopibeng/xt60_singa/readme.md
new file mode 100644
index 0000000000..f8efffcf1c
--- /dev/null
+++ b/keyboards/kopibeng/xt60_singa/readme.md
@@ -0,0 +1,21 @@
+# XT60_SINGA
+
+![XT60_SINGA](https://i.imgur.com/n1arBEwh.png)
+
+A QMK-powered, VIA-enabled 60% PCB with support for ANSI/ISO layouts, split Backspace, split Right Shift, stepped Caps Lock, 6.25U/7U bottom row, split Spacebar and RGB underglow.
+
+* Keyboard Maintainer: kopibeng
+* Hardware Supported: A 60% keyboard with ATMEGA32U4
+* Hardware Availability: https://singakbd.com/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kopibeng/xt60_singa: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
+
+* Physical reset button: Press the RESET switch on top side of PCB.
+* Bootmagic reset: Unplug keyboard, hold down ESC key and plug in the keyboard.
+* Keycode reset: Press the `QK_BOOT` keycode (default: MO(1) + R keys) in layout if available. \ No newline at end of file
diff --git a/keyboards/kopibeng/xt60_singa/rules.mk b/keyboards/kopibeng/xt60_singa/rules.mk
new file mode 100644
index 0000000000..72ab2800c5
--- /dev/null
+++ b/keyboards/kopibeng/xt60_singa/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 = 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/kopibeng/xt60_singa/xt60_singa.c b/keyboards/kopibeng/xt60_singa/xt60_singa.c
new file mode 100644
index 0000000000..1a3a2b613f
--- /dev/null
+++ b/keyboards/kopibeng/xt60_singa/xt60_singa.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Samuel Lu
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "xt60_singa.h" \ No newline at end of file
diff --git a/keyboards/kopibeng/xt60_singa/xt60_singa.h b/keyboards/kopibeng/xt60_singa/xt60_singa.h
new file mode 100644
index 0000000000..0e4b4ea2aa
--- /dev/null
+++ b/keyboards/kopibeng/xt60_singa/xt60_singa.h
@@ -0,0 +1,55 @@
+/* Copyright 2021 Samuel Lu
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1D │ │1D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │2C │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴â”2D │ ISO Enter
+ * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │2C │ │
+ * ┌────────┠├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌─┴───┴────┤
+ * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │ │3C │ 2.75u RShift
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬┴───┤ └──────────┘
+ * │40 │41 │42 │44 │46 │48 │4A │4B │4C │4D │ 2.25u/1.25u/2.75u Split Spacebar
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┴────┴────┘
+ * ┌────┬────┬────┬────────────────────────┬────┬────┬────┬────â”
+ * │40 │41 │42 │46 │4A │4B │4C │4D │ ANSI 6.25u
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────â”
+ * │40 │41 │42 │46 │4B │4C │4D │ 7u/WKL
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
+ */
+
+#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, ___, K44, ___, K46, ___, K48, ___, K4A, K4B, K4C, K4D} \
+}
diff --git a/keyboards/kopibeng/xt65/config.h b/keyboards/kopibeng/xt65/config.h
index e134e8b864..54195ef454 100644
--- a/keyboards/kopibeng/xt65/config.h
+++ b/keyboards/kopibeng/xt65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 // 'KP' kopibeng
-#define PRODUCT_ID 0x0650
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kopibeng
-#define PRODUCT XT65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { B5, B4, D7, D6, D4 }
#define MATRIX_COL_PINS { D1, D2, D3, B6, C6, C7, F0, F1, F4, F5, F6, F7, B2, B3, B7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kopibeng/xt65/info.json b/keyboards/kopibeng/xt65/info.json
index 37afadf25f..04d61df718 100644
--- a/keyboards/kopibeng/xt65/info.json
+++ b/keyboards/kopibeng/xt65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "kopibeng XT65",
+ "keyboard_name": "XT65",
+ "manufacturer": "kopibeng",
"url": "",
"maintainer": "kopibeng",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x0650",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_65_7u_split_bs": "LAYOUT_65_ansi_blocker_tsangan_split_bs",
"LAYOUT_all": "LAYOUT_65_ansi_blocker_split_bs",
diff --git a/keyboards/kopibeng/xt8x/config.h b/keyboards/kopibeng/xt8x/config.h
index d1508dfdd6..4086020397 100644
--- a/keyboards/kopibeng/xt8x/config.h
+++ b/keyboards/kopibeng/xt8x/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 // 'KP' kopibeng
-#define PRODUCT_ID 0x8788
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kopibeng
-#define PRODUCT XT8x
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/kopibeng/xt8x/info.json b/keyboards/kopibeng/xt8x/info.json
index d2a59eef8b..ad828e0ecb 100644
--- a/keyboards/kopibeng/xt8x/info.json
+++ b/keyboards/kopibeng/xt8x/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "XT8x",
- "maintainer": "kopibeng",
+ "manufacturer": "kopibeng",
"url": "",
+ "maintainer": "kopibeng",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x8788",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/kopibeng/xt8x/readme.md b/keyboards/kopibeng/xt8x/readme.md
index cdb333a260..0c94adec38 100644
--- a/keyboards/kopibeng/xt8x/readme.md
+++ b/keyboards/kopibeng/xt8x/readme.md
@@ -18,4 +18,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
* Physical reset button: Press the RESET switch on top side of PCB.
* Bootmagic reset: Unplug keyboard, hold down ESC key and plug in the keyboard.
-* Keycode reset: Press the RESET keycode (default: MO(1) + R keys) in layout if available.
+* Keycode reset: Press the `QK_BOOT` keycode (default: MO(1) + R keys) in layout if available.
diff --git a/keyboards/kprepublic/bm16a/config.h b/keyboards/kprepublic/bm16a/config.h
index 120232bb91..7e6289b793 100644
--- a/keyboards/kprepublic/bm16a/config.h
+++ b/keyboards/kprepublic/bm16a/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 // "KP"
-#define PRODUCT_ID 0x016A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KPrepublic
-#define PRODUCT bm16a
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { D3, D5, D1, D2}
#define MATRIX_COL_PINS { D6, D4, D7, B4}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kprepublic/bm16a/info.json b/keyboards/kprepublic/bm16a/info.json
index 520e508249..6c616e11d1 100644
--- a/keyboards/kprepublic/bm16a/info.json
+++ b/keyboards/kprepublic/bm16a/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "bm16a",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x016A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x4": {
"layout": [
diff --git a/keyboards/kprepublic/bm16a/keymaps/factory/keymap.c b/keyboards/kprepublic/bm16a/keymaps/factory/keymap.c
index 8a01ff016d..ea61e608c3 100644
--- a/keyboards/kprepublic/bm16a/keymaps/factory/keymap.c
+++ b/keyboards/kprepublic/bm16a/keymaps/factory/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_P0, KC_PDOT, KC_SPC, MO(_FN1)
),
[_FN1] = LAYOUT_ortho_4x4(
- RESET, KC_PAST, KC_PSLS, _______,
+ QK_BOOT, KC_PAST, KC_PSLS, _______,
BL_TOGG, BL_DEC, BL_INC, BL_STEP,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD,
RGB_SAI, RGB_SAD, _______, _______
diff --git a/keyboards/kprepublic/bm16s/config.h b/keyboards/kprepublic/bm16s/config.h
index 4ee57f3510..2de3ffe3d4 100755
--- a/keyboards/kprepublic/bm16s/config.h
+++ b/keyboards/kprepublic/bm16s/config.h
@@ -1,13 +1,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 //KP
-#define PRODUCT_ID 0x016B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KPrepublic
-#define PRODUCT bm16s
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
@@ -15,7 +8,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D1, D0, D3, D2 }
#define MATRIX_COL_PINS { F7, F6, D4, D6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kprepublic/bm16s/info.json b/keyboards/kprepublic/bm16s/info.json
index 938666a504..03d0659be0 100644
--- a/keyboards/kprepublic/bm16s/info.json
+++ b/keyboards/kprepublic/bm16s/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "bm16s",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x016B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x4": {
"layout": [
diff --git a/keyboards/kprepublic/bm16s/keymaps/media/keymap.c b/keyboards/kprepublic/bm16s/keymaps/media/keymap.c
index a2a9b72db9..8c592a4151 100755
--- a/keyboards/kprepublic/bm16s/keymaps/media/keymap.c
+++ b/keyboards/kprepublic/bm16s/keymaps/media/keymap.c
@@ -12,7 +12,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MPRV, KC_MPLY, KC_MNXT, MO(1)
),
[1] = LAYOUT_ortho_4x4(
- RESET, _______, _______, _______,
+ QK_BOOT, _______, _______, _______,
RGB_SPD, RGB_BRU, RGB_SPI, _______,
RGB_RMOD, RGB_BRD, RGB_MOD, _______,
RGB_TOG, _______, _______, _______
diff --git a/keyboards/kprepublic/bm40hsrgb/config.h b/keyboards/kprepublic/bm40hsrgb/config.h
index 8790de8a7b..8e4710abb3 100755
--- a/keyboards/kprepublic/bm40hsrgb/config.h
+++ b/keyboards/kprepublic/bm40hsrgb/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 // "KP"
-#define PRODUCT_ID 0x3430 // "40"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KPRepublic
-#define PRODUCT BM40 Hotswap RGB
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -31,7 +24,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B3, B2, E6, B5 }
#define MATRIX_COL_PINS { B6, C6, B4, D7, D4, D6, C7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kprepublic/bm40hsrgb/info.json b/keyboards/kprepublic/bm40hsrgb/info.json
index ddd99d3e35..2d1dd70df0 100644
--- a/keyboards/kprepublic/bm40hsrgb/info.json
+++ b/keyboards/kprepublic/bm40hsrgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "BM40HSRGB",
+ "keyboard_name": "BM40 Hotswap RGB",
+ "manufacturer": "KPRepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x3430",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_planck_mit": {
"layout": [
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/config.h b/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/config.h
new file mode 100644
index 0000000000..2534ffd554
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/config.h
@@ -0,0 +1,56 @@
+// Copyright 2021 Taeyoon Kim (@partrita)
+// SPDX-License-Identifier: GPL-2.0-or-later
+// /*
+// Set any config.h overrides for your specific keymap here.
+// See config.h options at https://docs.qmk.fm/#/config_options?id=the-configh-file
+// */
+#pragma once
+
+#define TAPPING_TERM 200 // time of holding key, milliseconds
+
+// 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
+
+// Mouse key speed and acceleration.
+#undef MOUSEKEY_DELAY
+#define MOUSEKEY_DELAY 0
+#undef MOUSEKEY_INTERVAL
+#define MOUSEKEY_INTERVAL 16
+#undef MOUSEKEY_WHEEL_DELAY
+#define MOUSEKEY_WHEEL_DELAY 0
+#undef MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_MAX_SPEED 6
+#undef MOUSEKEY_TIME_TO_MAX
+#define MOUSEKEY_TIME_TO_MAX 64
+
+// The firmware is too large!
+#define COMBO_COUNT 1 // number of combo
+#define COMBO_TERM 80 // timeout period for combos to 40ms.
+
+//disable broken animations
+#ifdef RGB_MATRIX_ENABLE
+# undef 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_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_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_JELLYBEAN_RAINDROPS
+# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+# undef RGB_MATRIX_STARTUP_MODE
+// # define RGBLIGHT_HUE_STEP 20
+#endif
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/keymap.c
new file mode 100644
index 0000000000..4c06536945
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/keymap.c
@@ -0,0 +1,91 @@
+// Copyright 2021 Taeyoon Kim (@partrita)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+#include "keymap_korean.h"
+
+enum layers {
+ _Base,
+ _Navi,
+ _Numb,
+ _Func,
+};
+
+// Left-hand home row mods - Base Layer
+#define HOME_A LGUI_T(KC_A)
+#define HOME_S LALT_T(KC_S)
+#define HOME_D LCTL_T(KC_D)
+#define HOME_F LSFT_T(KC_F)
+#define HOME_J RSFT_T(KC_J)
+#define HOME_K LCTL_T(KC_K)
+#define HOME_L LALT_T(KC_L)
+#define HOME_QU LGUI_T(KC_QUOT)
+
+// layer keys
+#define Lay_SPC LT(_Func,KC_SPC)
+#define NAVI MO(_Navi)
+#define NUMB MO(_Numb)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_Base] = LAYOUT_planck_mit(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ HOME_A, HOME_S, HOME_D, HOME_F, KC_G, KC_NO, KC_NO, KC_H, HOME_J, HOME_K, HOME_L, HOME_QU,
+ 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_NO, KC_NO, KC_NO, NAVI, Lay_SPC, KC_NO, KC_BSPC, NUMB, KC_NO, KC_NO, KC_NO
+ ),
+ [_Navi] = LAYOUT_planck_mit(
+ KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_ESC, KC_NO, KC_NO, KC_DEL, KC_HOME, KC_PGDN, KC_PGUP, KC_END,
+ KC_LSFT, HOME_S, HOME_D, HOME_F, KC_TAB, KC_NO, KC_NO, KC_ENT, KC_RSFT, HOME_K, HOME_L, HOME_QU,
+ KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1, KC_NO, KC_NO, KC_BTN2, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ KC_NO, KC_NO, KC_NO, KC_NO, Lay_SPC, KC_NO, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [_Numb] = LAYOUT_planck_mit(
+ KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, KC_NO, KC_NO, KC_DEL, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, KC_NO, KC_NO, KC_ENT, KC_RSFT, HOME_K, HOME_L, HOME_QU,
+ KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HAEN, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_0, KC_MINS, KC_NO, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+ [_Func] = LAYOUT_planck_mit(
+ KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_F11, KC_F4, KC_F5, KC_F6, KC_SCRL, KC_NO, KC_NO, KC_CAPS, KC_RSFT, HOME_K, HOME_L, HOME_QU,
+ KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, KC_NO, KC_NO, KC_INS, KC_NO, KC_NO, KC_HAEN, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, Lay_SPC, KC_NO, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO
+ ),
+};
+
+
+// color by layer
+layer_state_t layer_state_set_user(layer_state_t state) {
+ uint8_t layer = get_highest_layer(state);
+ switch (layer) {
+ case _Navi:
+ rgblight_mode_noeeprom(RGB_MATRIX_RAINBOW_BEACON);
+ break;
+ case _Numb:
+ rgblight_mode_noeeprom(RGB_MATRIX_HUE_PENDULUM);
+ break;
+ case _Func:
+ rgblight_mode_noeeprom(RGB_MATRIX_GRADIENT_LEFT_RIGHT);
+ break;
+ default:
+ rgblight_mode_noeeprom(RGB_MATRIX_SOLID_REACTIVE_WIDE);
+ }
+ return state;
+}
+
+// COMBO key for HOME ROW modifier
+// modify `config.h` file
+// by adding #define COMBO_COUNT 1 (replacing 1 with the number that you’re using).
+// modify `rules.mk` file
+// by adding # COMBO_ENABLE = yes
+
+enum combos {
+ SFT_HAN,
+};
+
+const uint16_t PROGMEM sft_han_combo[] = {LSFT_T(KC_F), LT(_Func,KC_SPC), COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+ [SFT_HAN] = COMBO(sft_han_combo, KC_HAEN),
+}; \ No newline at end of file
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/readme.md b/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/readme.md
new file mode 100644
index 0000000000..31ac2602b6
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/readme.md
@@ -0,0 +1,63 @@
+# The 35 keymap for bm40hsrgb
+
+This layout is made almost entirely from [miryoku](https://github.com/manna-harbour/miryoku). However, I used fewer layers and reduced 36 keys to 34.
+
+> As little as possible, as simple as possible, as easy as possible to memorize
+
+Replaced the Ctrl, GUI, Alt, and Shift keys with home mod row. A combo function was added by removing some RGB animations of the bm40's keyboard to free up memory. If animation is not removed, it is because there is not enough memory to compile. Added code that uses RGB matrix animation so that you can see at a glance which layer is being used, and you can move faster by increasing the speed of the mouse key.
+
+And because I'm Korean, a combo for Korean and English keyboard conversion has been added, but if you don't need it, you can delete it.
+
+
+- Flash:
+
+ `qmk flash -kb kprepublic/bm40hsrgb -km 34keys`
+
+# Layout
+
+Press and hold to activate the keys in parentheses.
+
+
+https://imgur.com/a/UkKfCYm
+
+
+## _BASE(QWERTY)
+
+![](https://i.imgur.com/PuHFVXT.png)
+
+
+| Q | W | E | R | T | | | Y | U | I | O | P |
+|---|---|---|---|---|---|---|---|---|---|---|---|
+| A(GUI) | S(Alt) | D(Ctrl) | F(Shift) | G | | | H | J(Shift) | K(Ctrl) | L(Alt) | '(GUI) |
+| Z | X| C| V| B| | | N | M | , | . | /|
+| | | | NaviLayer| Space(_Func) | | | Backspace | NumberLayer | | | |
+
+## _Navi
+
+![](https://i.imgur.com/BwDHx64.png)
+
+| Mousewheel left | Mousewheel down | Mousewheel up | Mousewheel right | ESC | | | DEL | HOME | PageDown | PageUP | END |
+|---|---|---|---|---|---|---|---|---|---|---|---|
+| A(GUI) | S(Alt) | D(Ctrl) | F(Shift) | TAB | | | ENTER | J(Shift) | K(Ctrl) | L(Alt) | '(GUI) |
+| Mouse left | Mouse down | Mouse up| Mouse right | left click | | | left click | Left | Down | Up | Right |
+| | | | | Space | | | Backspace | NumberLayer | | | |
+
+## _Numb
+
+![](https://i.imgur.com/lPPyUsk.png)
+
+| [ | 7 | 8 | 9 | ] | | | DEL | | | | |
+|---|---|---|---|---|---|---|---|---|---|---|---|
+| ; | 4 | 5 | 6 | = | | | ENTER | J(Shift) | K(Ctrl) | L(Alt) | '(GUI) |
+| ` | 1 | 2 | 3 | \ | | | | | | | |
+| | | | 0| - | | | Backspace | | | | |
+
+## _Func
+
+![](https://i.imgur.com/rz0jaoe.png)
+
+| F12 | F7 | F8 | F9 | PrintScreen | | | RESET | | | | |
+|---|---|---|---|---|---|---|---|---|---|---|---|
+| F11 | F4 | F5 | F6 | ScrollLock | | | CapsLock | J(Shift) | K(Ctrl) | L(Alt) | '(GUI) |
+| F10 | F1 | F2 | F3 | PauseBreak | | | Insert | | | | |
+| | | | NaviLayer | Space | | | Backspace | NumberLayer | | | |
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/rules.mk b/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/rules.mk
new file mode 100644
index 0000000000..96655e7b5a
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/34keys/rules.mk
@@ -0,0 +1,4 @@
+BOOTMAGIC_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+COMBO_ENABLE = yes
+EXTRAKEY_ENABLE = yes
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/config.h b/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/config.h
new file mode 100644
index 0000000000..bfcec37892
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/config.h
@@ -0,0 +1,85 @@
+// Copyright 2022 Fae Fankhauser (@CoffeeIsLife87)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define LAYER_STATE_8BIT
+
+// RGB Matrix effects disable
+#ifdef RGB_MATRIX_ENABLE
+# define UNDERGLOW_DISABLE
+
+# define RGB_TRIGGER_ON_KEYDOWN
+
+# define RGB_MATRIX_LED_FLUSH_LIMIT 10
+
+# undef ENABLE_RGB_MATRIX_SOLID_COLOR
+# 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_OUT_IN
+# undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+# undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+# 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_RAIN
+# undef ENABLE_RGB_MATRIX_PIXEL_FLOW
+# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+
+# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
+# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+
+# undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+# 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_SPLASH
+# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
+# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
+
+// If RGBLight is enabled
+#ifdef RGBLIGHT_ENABLE
+# define RGBLED_NUM DRIVER_LED_TOTAL
+
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#endif
+
+// Feature disable
+#ifndef NO_PRINT
+# define NO_PRINT
+#endif
+
+#ifndef NO_DEBUG
+# define NO_DEBUG
+#endif
+
+#ifndef NO_ACTION_ONESHOT
+# define NO_ACTION_ONESHOT
+#endif
+
+// Configure features
+#ifdef DYNAMIC_MACRO_ENABLE
+# define DYNAMIC_MACRO_USER_CALL
+# define DYNAMIC_MACRO_NO_NESTING
+#endif
+
+#ifdef MOUSEKEY_ENABLE
+# define MOUSEKEY_INTERVAL 16 // 60 FPS
+# define MK_3_SPEED
+#endif \ No newline at end of file
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/keymap.c
new file mode 100644
index 0000000000..9130bd678e
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/keymap.c
@@ -0,0 +1,165 @@
+// Copyright 2022 Fae Fankhauser (@CoffeeIsLife87)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ NULLKEY = SAFE_RANGE, // An empty key to start (and maybe end) the enum
+ #ifdef DYNAMIC_MACRO_ENABLE
+ MCR_PLY, // Macro play
+ MCR_REC, // Macro record
+ MCR_SWT, // Swap active macro
+ #endif
+};
+
+enum layout_names {
+ _MAIN = 0, // Keys Layout: The main keyboard layout that has all the characters
+ _SUB, // Extension to Main
+ _CTR, // Macros, RGB, Audio controls, layer access. More or less the control center of my keyboard
+ _END,
+};
+
+#ifdef DYNAMIC_MACRO_ENABLE
+ // Macro 1 is = 1, Macro 2 = -1, No macro = 0
+ static bool MACRO1 = true;
+ static bool RECORDING = false;
+
+ static uint16_t REC = DM_REC1;
+ static uint16_t PLY = DM_PLY1;
+
+ void dynamic_macro_record_start_user(void) {
+ REC = DM_RSTP;
+ RECORDING = true;
+ }
+ void dynamic_macro_record_end_user(int8_t direction) {
+ RECORDING = false;
+ }
+#else
+ #define MCR_PLY KC_NO
+ #define MCR_REC KC_NO
+ #define MCR_SWT KC_NO
+#endif
+
+const uint16_t PROGMEM keymaps[_END][MATRIX_ROWS][MATRIX_COLS] = {
+ [_MAIN] = LAYOUT_planck_mit(
+ 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_LCTL, KC_LGUI, XXXXXXX,KC_LALT ,MO(_SUB), KC_SPC ,MO(_CTR), KC_LEFT, KC_DOWN, KC_UP , KC_RGHT
+ ),
+ [_SUB] = 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_DEL,
+ XXXXXXX, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, KC_PGUP,
+ _______, KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , XXXXXXX, XXXXXXX, XXXXXXX, KC_BSLS, KC_PGDN,
+ _______, _______, XXXXXXX, _______, _______, _______ , _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ ),
+ [_CTR] = LAYOUT_planck_mit(
+ XXXXXXX, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, XXXXXXX, XXXXXXX, KC_VOLU, XXXXXXX, XXXXXXX, MCR_REC,
+ XXXXXXX, RGB_RMOD,RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, MCR_PLY,
+ XXXXXXX, XXXXXXX, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, XXXXXXX, XXXXXXX, MCR_SWT,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ )
+};
+
+#define LAYER (get_highest_layer(layer_state))
+#define LAYER_SIZE (MATRIX_ROWS * MATRIX_COLS)
+#define CHECK_LED() \
+ if ((i >= DRIVER_LED_TOTAL) \
+ || ((g_led_config.flags[pos] == LED_FLAG_NONE) || (g_led_config.flags[pos] == LED_FLAG_UNDERGLOW))) \
+ continue
+
+#ifdef RGB_MATRIX_ENABLE
+
+ #ifdef UNDERGLOW_DISABLE
+ void keyboard_pre_init_user(void) {
+
+ for (int key_id = 0; key_id < DRIVER_LED_TOTAL; key_id++ ) {
+ if (g_led_config.flags[key_id] == LED_FLAG_UNDERGLOW) {
+ g_led_config.flags[key_id] = LED_FLAG_NONE;
+ }
+ }
+ }
+ #endif
+
+ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ if (LAYER != _MAIN) {
+
+ int DimmedMax = UINT8_MAX - (UINT8_MAX - rgb_matrix_config.hsv.v);
+
+ for (uint8_t i = led_min; i <= led_max; i++) {
+
+ uint8_t pos = ((uint8_t*)g_led_config.matrix_co)[i];
+
+ CHECK_LED(); // Check LED before moving on
+ uint16_t KC = pgm_read_word(&((uint16_t*)keymaps)[(LAYER_SIZE * LAYER) + i]);
+
+ if (KC == KC_NO) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(pos, 0, 0, 0 );
+ }
+
+ #ifdef DYNAMIC_MACRO_ENABLE
+ else if (KC == MCR_SWT) {
+ if (!MACRO1) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(pos, 0, DimmedMax, DimmedMax);
+ }
+ } else if (KC == MCR_REC) {
+ if (RECORDING) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(pos, DimmedMax, 0, 0);
+ }
+ }
+ #endif
+
+ }
+ }
+ }
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ #ifdef DYNAMIC_MACRO_ENABLE
+ if (keycode == MCR_REC) keycode = REC;
+ if (keycode == MCR_PLY) keycode = PLY;
+ if (!process_dynamic_macro(keycode, record)) {
+ REC = (MACRO1 ? DM_REC1 : DM_REC2);
+ return false;
+ }
+ #endif
+
+ switch (keycode) {
+ #ifdef DYNAMIC_MACRO_ENABLE
+ case MCR_SWT:
+ if (!RECORDING && record->event.pressed) {
+ // if the button is pressed and we're not recording
+ MACRO1 = !MACRO1;
+ if (MACRO1) {
+ REC = DM_REC1;
+ PLY = DM_PLY1;
+ } else {
+ REC = DM_REC2;
+ PLY = DM_PLY2;
+ }
+ }
+ return false;
+ #endif
+
+ #if defined(RGB_MATRIX_ENABLE) && defined(RGBLIGHT_ENABLE) // this only needs to be defined if both are enabled
+ case RGB_TOG: // We can intercept this keycode ig? Cool :)
+ if (record->event.pressed) {
+ if (rgb_matrix_is_enabled()) {
+ rgb_matrix_disable/*_noeeprom*/();
+ rgblight_enable/*_noeeprom*/();
+ } else if (rgblight_is_enabled()) {
+ rgb_matrix_disable/*_noeeprom*/();
+ rgblight_disable/*_noeeprom*/();
+ } else {
+ rgb_matrix_enable/*_noeeprom*/();
+ rgblight_disable/*_noeeprom*/();
+ }
+ }
+ return false;
+ #endif
+
+ default:
+ return true; //Process all other keycodes normally
+ }
+} \ No newline at end of file
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/readme.md b/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/readme.md
new file mode 100644
index 0000000000..2fb004cece
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/readme.md
@@ -0,0 +1,55 @@
+# Kprepublic BM40HSRGB Coffee
+
+A layout that aims to be familiar to people that have used larger boards
+
+## The layout
+
+The primary layer ( `_MAIN` ) is as close to standard qwerty as I could get.
+```
+esc | q | w | e | r | t | y | u | i | o | p | bksp
+tab | a | s | d | f | g | h | j | k | l | ; | '
+shft | z | x | c | v | b | n | m | , | . | / | rtrn
+ctrl | win | | alt | SUB | spc | CTR | lft | dwn | up | rght
+```
+
+The secondary layer ( `_SUB` ) is for syntax, F keys, and number keys
+```
+grv | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | del
+ | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | pgup
+ _ | F7 | F8 | F9 | F10 | F11 | F12 | | | | \ | pgdn
+ _ | _ | | _ | _ | _ | _ | | | |
+```
+
+The control layer ( `_CTR` ) is for lighting, media, and macros
+```
+ | SPD- | BRI+ | SPD+ | HUE+ | SAT+ | | | VOL+ | | | MCR_REC
+ | EFCT- | BRI- | EFCT+ | HUE- | SAT- | | PREV | PLAY | NEXT | | MCR_PLY
+ | | TOG | | | | | | VOL- | | | MCR_SWT
+ | | | | | _ | | | | |
+```
+
+| Key name | Explanation |
+| -------- | -------------------------------------- |
+| \_ | Passthrough the key on the layer below |
+| SUB | Goes to _SUB layer while held down |
+| CTR | Goes to _CTR layer while held down |
+| SPD +/- | Changes speed for the RGB effect |
+| BRI +/- | Changes the brightness of the lighting |
+| EFCT +/- | Moves to the next/previous effect |
+| TOG | Toggles the lighting on or off |
+| HUE +/- | Changes the hue for RGB effects |
+| SAT +/- | Changes the saturation for RGB effects |
+| MSE | Toggles the Mouse layer |
+| VOL +/- | Raises or lowers media volume |
+| PREV | Goes to previous media |
+| PLAY | Play/Pause media |
+| NEXT | Goes to next media |
+| MCR_REC | Record macro ( Press again to stop ) |
+| MCR_PLY | Play recorded macro |
+| MCR_SWT | Switch active macro |
+
+## Compiling
+
+Compiling: `make kprepublic/bm40hsrgb:coffee`
+
+Flashing: `make kprepublic/bm40hsrgb:coffee:flash`
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/rules.mk b/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/rules.mk
new file mode 100644
index 0000000000..5d3039b8e2
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/coffee/rules.mk
@@ -0,0 +1,4 @@
+MOUSEKEY_ENABLE = no
+NKRO_ENABLE = yes
+DYNAMIC_MACRO_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/dan/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/dan/keymap.c
new file mode 100644
index 0000000000..5029d557dd
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/dan/keymap.c
@@ -0,0 +1,332 @@
+/* Copyright 2020 tominabox1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 {
+ _ALPHA,
+ _LEFTFN,
+ _RIGHTFN,
+ _NUMPAD,
+ _LEAGUE,
+ _PUBG,
+ _OVERWATCH,
+ _STARCRAFT,
+ _TETRIS,
+ _CLEAN,
+ _RGB
+};
+
+#define ALPHA TO(_ALPHA)
+#define LEFTFN MO(_LEFTFN)
+#define RIGHTFN MO(_RIGHTFN)
+#define NUMPAD MO(_NUMPAD)
+#define LEAGUE TG(_LEAGUE)
+#define PUBG TG(_PUBG)
+#define OVERWATCH TG(_OVERWATCH)
+#define STARCRAFT TG(_STARCRAFT)
+#define TETRIS TG(_TETRIS)
+#define CLEAN TG(_CLEAN)
+#define RGB MO(_RGB)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* ALPHA
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / |Return|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |ESC/NP| KOR | Win | Alt |LEFTFN| Space |RFN/- | = |Delete| \ | Enter|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ALPHA] = 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_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 ,
+ LT(NUMPAD, KC_ESC), KC_LNG1, KC_LGUI, KC_LALT, LEFTFN, KC_SPC, LT(RIGHTFN, KC_MINS), KC_EQL, KC_DEL, KC_BSLS, KC_PENT
+),
+
+/* LEFTFN
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Left | Down | Up |Right |CTRL+/|HANJA | [ | ] | ) | : | " |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| PGUP | PGDN | Home | End | CAPS |PRNTSR| ( | , | . | / | Enter|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | RGB | [ | ] | Alt | Trns | Space | _ | + | INS | | | Ent. |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LEFTFN] = 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_LCTL, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, LCTL(KC_SLSH), KC_LNG2, KC_LBRC, KC_RBRC, KC_RPRN, KC_COLN, KC_DQUO,
+ KC_LSFT, KC_PGUP, KC_PGDN, KC_HOME, KC_END, KC_CAPS, KC_PSCR, KC_LPRN, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
+ RGB, KC_LBRC, KC_RBRC, KC_LALT, KC_TRNS, KC_SPC, KC_UNDS, KC_PLUS, KC_INS, KC_PIPE, KC_PENT
+),
+
+
+/* RIGHTFN
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | Pause|SCRLCK| | F11 | F12 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | | | | | | | F1 | F2 | F3 | F4 | F5 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| | | | | | | F6 | F7 | F8 | F9 | F10 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | Alt | | Space | Trns | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RIGHTFN] = LAYOUT_planck_mit(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PAUS, KC_SCRL, KC_NO, KC_F11, KC_F12,
+ KC_LCTL, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
+ KC_NO, KC_NO, KC_NO, KC_LALT, KC_NO, KC_SPC, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO
+),
+
+/* NUMPAD
+ * ,-----------------------------------------------------------------------------------.
+ * | * | 7 | 8 | 9 | NumLk| | | | | | | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Alt | 4 | 5 | 6 | Enter| | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | - | 1 | 2 | 3 | Bksp | | | | | Ctrl | Shift|Return|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Trns | , | + | . | 0 | Space |LEAGUE| PUBG | OVWCh| SC |TETRIS|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_NUMPAD] = LAYOUT_planck_mit(
+ KC_PAST, KC_P7, KC_P8, KC_P9, KC_NLCK, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BSPC,
+ KC_LALT, KC_P4, KC_P5, KC_P6, KC_ENT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_PMNS, KC_P1, KC_P2, KC_P3, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_LCTL, KC_LSFT, KC_ENT,
+ KC_TRNS, KC_COMM, KC_PPLS, KC_PDOT, KC_0, KC_SPC, LEAGUE, PUBG, OVERWATCH, STARCRAFT, TETRIS
+),
+
+/* LEAGUE
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | 5 | Y | | | O | P | ESC |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | A | S | D | F | | | | | L | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | 6 | 4 | 1 | B | | | | | | Enter|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | 3 | X | C | Alt | 2 | Space | | | | | ALPHA|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LEAGUE] = LAYOUT_planck_mit(
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_5, KC_Y, KC_NO, KC_NO, KC_O, KC_P, KC_ESC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_NO, KC_NO, KC_NO, KC_NO, KC_L, KC_NO, KC_NO,
+ KC_LSFT, KC_Z, KC_6, KC_4, KC_1, KC_B, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT,
+ KC_3, KC_X, KC_C, KC_LALT, KC_2, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, ALPHA
+),
+
+/* PUBG
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | ESC |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | 1 | A | S | D | F | G | H | J | K | L | | F7 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | 3 | X | C | V | B | M | . | | | F9 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | 5 | 4 | Alt | 2 | Space | 6 | 8 | 7 | 9 | ALPHA|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_PUBG] = 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_ESC,
+ KC_1, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_NO, KC_F7,
+ KC_LSFT, KC_Z, KC_3, KC_X, KC_C, KC_V, KC_B, KC_M, KC_DOT, KC_NO, KC_NO, KC_F9,
+ KC_LCTL, KC_5, KC_4, KC_LALT, KC_2, KC_SPC, KC_6, KC_8, KC_7, KC_9, ALPHA
+),
+
+/* OVERWATCH
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | ESC |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | 1 | A | S | D | F | G | H | J | K | L | ; | " |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / | Enter|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | | | Alt | 2 | Space | Bksp | | | | ALPHA|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_OVERWATCH] = 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_ESC,
+ KC_1, 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_NO, KC_NO, KC_LALT, KC_2, KC_SPC, KC_BSPC, KC_NO, KC_NO, KC_NO, ALPHA
+),
+
+/* STARCRAFT
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | A | S | D | F | G | H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | , | . | / | Enter|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | | | Alt | F1 | Space | F10 | Pause|Delete| | ALPHA|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_STARCRAFT] = 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_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, KC_NO, KC_NO, KC_LALT, KC_F1, KC_SPC, KC_F10, KC_PAUS, KC_DEL, KC_NO, ALPHA
+),
+
+/* TETRIS
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | Up | E | R | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | A | Left | Down | Right| F | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | | | Alt | S | Space | | | | | ALPHA|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_TETRIS] = LAYOUT_planck_mit(
+
+ KC_TAB, KC_Q, KC_UP, KC_E, KC_R, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_A, KC_LEFT, KC_DOWN, KC_RIGHT, KC_F, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LCTL, KC_NO, KC_NO, KC_LALT, KC_S, KC_SPC, KC_NO, KC_NO, KC_NO, KC_NO, ALPHA
+
+),
+
+/* TETRIS
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | ALPHA|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_CLEAN] = LAYOUT_planck_mit(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, ALPHA
+),
+
+/* RGB (LEFTFN + RGB)
+ * v------------------------RGB CONTROL--------------------v
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset| | | | | | | | | | CLEAN|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |RGBTGL| MOD+ | BRT+ | SAT+ | | | | FX+ | HUE+ | | MOD R| MODES|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | MOD- | BRT- | SAT- | Trns | | FX- | HUE- | | MOD B| MOD P|
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RGB] = LAYOUT_planck_mit(
+ KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, CLEAN,
+ 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_TOG, RGB_MOD, RGB_VAI, RGB_SAI, KC_NO, KC_NO, KC_NO, RGB_SPI, RGB_HUI, KC_NO, RGB_M_R, RGB_M_SW,
+ KC_NO, RGB_RMOD, RGB_VAD, RGB_SAD, KC_TRNS, KC_NO, RGB_SPD, RGB_HUD, KC_NO, RGB_M_B, RGB_M_P
+)
+
+};
+
+/*
+
+// 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}
+
+*/
+void rgb_matrix_indicators_user(void) {
+ switch (get_highest_layer(layer_state)) {
+ case _ALPHA:
+ break;
+ case _LEFTFN:
+ break;
+ case _RIGHTFN:
+ break;
+ case _NUMPAD:
+ break;
+ case _LEAGUE:
+ rgb_matrix_set_color(1, 15, 15, 15);
+ rgb_matrix_set_color(2, 15, 15, 15);
+ rgb_matrix_set_color(3, 15, 15, 15);
+ rgb_matrix_set_color(4, 15, 15, 15);
+ rgb_matrix_set_color(15, 50, 40, 0);
+ rgb_matrix_set_color(16, 50, 5, 0);
+ rgb_matrix_set_color(29, 0, 15, 50);
+ rgb_matrix_set_color(10, 20, 2, 15);
+ break;
+
+ case _PUBG:
+ rgb_matrix_set_color(12, 15, 15, 15);
+ rgb_matrix_set_color(40, 15, 15, 15);
+ rgb_matrix_set_color(42, 3, 3, 50);
+ rgb_matrix_set_color(43, 5, 50, 8);
+ rgb_matrix_set_color(44, 50, 35, 0);
+ rgb_matrix_set_color(45, 30, 30, 15);
+ break;
+
+ case _OVERWATCH:
+ rgb_matrix_set_color(11, 80, 20, 0);
+ rgb_matrix_set_color(46, 80, 20, 0);
+ break;
+
+ case _STARCRAFT:
+ rgb_matrix_set_color(11, 5, 80, 15);
+ rgb_matrix_set_color(46, 5, 80, 15);
+ break;
+
+ case _TETRIS:
+ rgb_matrix_set_color(2, 60, 10, 20);
+ rgb_matrix_set_color(13, 60, 10, 20);
+ rgb_matrix_set_color(14, 60, 10, 20);
+ rgb_matrix_set_color(15, 60, 10, 20);
+ break;
+
+ case _CLEAN:
+ rgb_matrix_set_color_all(255, 255, 255);
+ break;
+
+ case _RGB:
+ break;
+ }
+
+ led_t led_state = host_keyboard_led_state();
+
+ //Capslock led
+ if (led_state.caps_lock) {
+ rgb_matrix_set_color(12, 145, 145, 145);
+ }
+
+ //Numlock led
+ if (!led_state.num_lock) {
+ rgb_matrix_set_color(0, 145, 145, 145);
+ }
+
+ //Scroll lock led
+ if (led_state.scroll_lock) {
+ rgb_matrix_set_color(24, 145, 145, 145);
+ }
+
+}
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/dan/readme.md b/keyboards/kprepublic/bm40hsrgb/keymaps/dan/readme.md
new file mode 100644
index 0000000000..4a706c7315
--- /dev/null
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/dan/readme.md
@@ -0,0 +1,3 @@
+# Dan's kprepublic bm40 layout
+
+Dan's personal keymap with LED indicator support.
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/config.h b/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/config.h
index b38e4b8fc6..e71078415a 100644
--- a/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/config.h
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/config.h
@@ -30,9 +30,6 @@
#define AUTO_SHIFT_TIMEOUT TAPPING_TERM
#define AUTO_SHIFT_NO_SETUP
-// Recommended for heavy chording.
-#define QMK_KEYS_PER_SCAN 4
-
// Mouse key speed and acceleration.
#undef MOUSEKEY_DELAY
#define MOUSEKEY_DELAY 0
@@ -60,10 +57,6 @@
#define RGBLIGHT_LIMIT_VAL 10
-//bootmagic
-#define BOOTMAGIC_KEY_SALT KC_V
-#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q
-
#ifdef RGB_MATRIX_ENABLE
# undef ENABLE_RGB_MATRIX_ALPHAS_MODS
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/keymap.c
index 1ebea18175..12db3f2eec 100755
--- a/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/keymap.c
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/gabustoledo/keymap.c
@@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[FUN] = LAYOUT_planck_mit(
- KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET,
+ KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT,
KC_F11, KC_F4, KC_F5, KC_F6, KC_SLCK, KC_NO, KC_NO, KC_NO, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ALGR, KC_NO,
KC_NO, KC_NO, KC_APP, KC_SPC, KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/config.h b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/config.h
index 2b0d0961c4..a88ae7f2e8 100644
--- a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/config.h
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/config.h
@@ -25,10 +25,6 @@
//#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
#define RGBLIGHT_LIMIT_VAL 10
-//bootmagic
-#define BOOTMAGIC_KEY_SALT KC_V
-#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q
-
#ifdef RGB_MATRIX_ENABLE
#define TAPPING_TERM 200
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/keymap.c
index b04f7ffb7c..1e97aba495 100644
--- a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/keymap.c
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt/keymap.c
@@ -19,7 +19,7 @@
#include QMK_KEYBOARD_H
// non-KC_ keycodes
-#define KC_RST RESET
+#define KC_RST QK_BOOT
#define KC_TOG RGB_TOG
#define KC_MOD RGB_MOD
#define KC_HUI RGB_HUI
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/config.h b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/config.h
index d39f6b95c8..cdfa67acb0 100644
--- a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/config.h
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/config.h
@@ -25,10 +25,6 @@
//#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
#define RGBLIGHT_LIMIT_VAL 10
-//bootmagic
-#define BOOTMAGIC_KEY_SALT KC_V
-#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q
-
#ifdef RGB_MATRIX_ENABLE
#define TAPPING_TERM 200
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/keymap.c
index 12539fe41c..e725e23214 100644
--- a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/keymap.c
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_loud/keymap.c
@@ -19,7 +19,7 @@
#include QMK_KEYBOARD_H
// non-KC_ keycodes
-#define KC_RST RESET
+#define KC_RST QK_BOOT
#define KC_TOG RGB_TOG
#define KC_MOD RGB_MOD
#define KC_HUI RGB_HUI
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/config.h b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/config.h
index a4634c581e..dbadc3da99 100644
--- a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/config.h
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/config.h
@@ -25,10 +25,6 @@
//#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
#define RGBLIGHT_LIMIT_VAL 10
-//bootmagic
-#define BOOTMAGIC_KEY_SALT KC_V
-#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q
-
#ifdef RGB_MATRIX_ENABLE
#define TAPPING_TERM 200
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c
index 999e6b18af..02ea122a03 100644
--- a/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/signynt_2_quiet/keymap.c
@@ -19,7 +19,7 @@
#include QMK_KEYBOARD_H
// non-KC_ keycodes
-#define KC_RST RESET
+#define KC_RST QK_BOOT
#define KC_TOG RGB_TOG
#define KC_MOD RGB_MOD
#define KC_HUI RGB_HUI
diff --git a/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/keymap.c b/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/keymap.c
index e72d83f9d0..ecce30e237 100644
--- a/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/keymap.c
+++ b/keyboards/kprepublic/bm40hsrgb/keymaps/wolff_abnt2/keymap.c
@@ -113,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// adjust layer ok
[_ADJUST] = LAYOUT_planck_mit(
- RESET, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______,
KC_CAPS, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, QWERTY, DVORAK, COLEMAK, WORKMAN, MIDI,
_______, MI_ON, MI_OFF, MI_TOG, MU_ON, MU_OFF, MU_TOG, MU_MOD, AU_ON, AU_OFF, _______, _______,
RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/kprepublic/bm43a/config.h b/keyboards/kprepublic/bm43a/config.h
index e08561d916..23f1753fc7 100644
--- a/keyboards/kprepublic/bm43a/config.h
+++ b/keyboards/kprepublic/bm43a/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER KPRepublic
-#define PRODUCT BM43A
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/kprepublic/bm43a/info.json b/keyboards/kprepublic/bm43a/info.json
index 005945d50e..0cbeeac633 100644
--- a/keyboards/kprepublic/bm43a/info.json
+++ b/keyboards/kprepublic/bm43a/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BM43A",
+ "manufacturer": "KPRepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kprepublic/bm43a/keymaps/stevexyz/keymap.c b/keyboards/kprepublic/bm43a/keymaps/stevexyz/keymap.c
index 04df426ba9..7c7324f555 100644
--- a/keyboards/kprepublic/bm43a/keymaps/stevexyz/keymap.c
+++ b/keyboards/kprepublic/bm43a/keymaps/stevexyz/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { // 12+11+11+9
DF(2), KC_MUTE, KC_VOLD, KC_VOLU, KC_COMM, KC_1, KC_2, KC_3, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2,
DF(3), XXXXXXX, XXXXXXX, KC_SPC, KC_0, KC_DOT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT ),
[3] = LAYOUT(
- DF(0), KC_SLEP, KC_BRID, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ DF(0), KC_SLEP, KC_BRID, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
XXXXXXX, BL_TOGG, BL_DEC, BL_INC, BL_STEP, BL_BRTG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, RGB_TOG, RGB_RMOD, RGB_MOD, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ),
diff --git a/keyboards/kprepublic/bm43hsrgb/config.h b/keyboards/kprepublic/bm43hsrgb/config.h
index c778f56995..dc753287d2 100755
--- a/keyboards/kprepublic/bm43hsrgb/config.h
+++ b/keyboards/kprepublic/bm43hsrgb/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50
-#define PRODUCT_ID 0x6061
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KPRepublic
-#define PRODUCT BM43 Hotswap RGB
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/kprepublic/bm43hsrgb/info.json b/keyboards/kprepublic/bm43hsrgb/info.json
index dbee830364..052a4f8a6a 100755
--- a/keyboards/kprepublic/bm43hsrgb/info.json
+++ b/keyboards/kprepublic/bm43hsrgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "BM43HSRGB",
+ "keyboard_name": "BM43 Hotswap RGB",
+ "manufacturer": "KPRepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x6061",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/keymap.c b/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/keymap.c
index 366c755558..f201c3d88f 100755
--- a/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/keymap.c
+++ b/keyboards/kprepublic/bm43hsrgb/keymaps/bitstarr/keymap.c
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS
),
[_FN] = LAYOUT(
- 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, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
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_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, 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/kprepublic/bm60hsrgb/rev1/config.h b/keyboards/kprepublic/bm60hsrgb/rev1/config.h
index b8f002dca6..f1a160730c 100644
--- a/keyboards/kprepublic/bm60hsrgb/rev1/config.h
+++ b/keyboards/kprepublic/bm60hsrgb/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 // "KP"
-#define PRODUCT_ID 0xEF8C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KP Republic
-#define PRODUCT BM60HSRGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/kprepublic/bm60hsrgb/rev1/info.json b/keyboards/kprepublic/bm60hsrgb/rev1/info.json
index a5fb20a008..4c1db804bd 100644
--- a/keyboards/kprepublic/bm60hsrgb/rev1/info.json
+++ b/keyboards/kprepublic/bm60hsrgb/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BM60HSRGB",
+ "manufacturer": "KP Republic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0xEF8C",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_60_ansi_arrow"
},
diff --git a/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/jbradforddillon/keymap.c b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/jbradforddillon/keymap.c
index c43365356e..da5aa92901 100644
--- a/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/jbradforddillon/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb/rev1/keymaps/jbradforddillon/keymap.c
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(2), 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, _______,
+ QK_BOOT, 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, RGB_SPI, RGB_SPD, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/config.h b/keyboards/kprepublic/bm60hsrgb/rev2/config.h
index d8e7501b22..09ba659d65 100644
--- a/keyboards/kprepublic/bm60hsrgb/rev2/config.h
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/config.h
@@ -17,13 +17,6 @@
#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
@@ -40,7 +33,6 @@
*/
#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
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/info.json b/keyboards/kprepublic/bm60hsrgb/rev2/info.json
index 7cbd7fb4f7..af88dc88b6 100644
--- a/keyboards/kprepublic/bm60hsrgb/rev2/info.json
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "bm60v2",
+ "keyboard_name": "BM60V2",
+ "manufacturer": "KP Republic",
"url": "",
"maintainer": "bdtc123",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x1121",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_60_ansi_arrow": {
"layout": [
diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev1/config.h b/keyboards/kprepublic/bm60hsrgb_ec/rev1/config.h
index 9aa52dae90..868ce40d8c 100644
--- a/keyboards/kprepublic/bm60hsrgb_ec/rev1/config.h
+++ b/keyboards/kprepublic/bm60hsrgb_ec/rev1/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 // "KP"
-#define PRODUCT_ID 0xEF9C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KP Republic
-#define PRODUCT BM60HSRGB_EC
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev1/info.json b/keyboards/kprepublic/bm60hsrgb_ec/rev1/info.json
index e85a9fffc3..d56d62fe59 100644
--- a/keyboards/kprepublic/bm60hsrgb_ec/rev1/info.json
+++ b/keyboards/kprepublic/bm60hsrgb_ec/rev1/info.json
@@ -1,78 +1,87 @@
{
- "keyboard_name": "BM60HSRGB_EC",
+ "keyboard_name": "BM60HSRGB_EC Rev1",
+ "manufacturer": "KP Republic",
"url": "",
- "maintainer": "qmk",
+ "maintainer": "peepeetee",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0xEF9C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
- {"label":"K00 (B0,D0)", "x":0, "y":0},
- {"label":"K01 (B0,D1)", "x":1, "y":0},
- {"label":"K02 (B0,D2)", "x":2, "y":0},
- {"label":"K03 (B0,D3)", "x":3, "y":0},
- {"label":"K04 (B0,D5)", "x":4, "y":0},
- {"label":"K05 (B0,D4)", "x":5, "y":0},
- {"label":"K06 (B0,D6)", "x":6, "y":0},
- {"label":"K07 (B0,D7)", "x":7, "y":0},
- {"label":"K08 (B0,B4)", "x":8, "y":0},
- {"label":"K09 (B0,B5)", "x":9, "y":0},
- {"label":"K0A (B0,B6)", "x":10, "y":0},
- {"label":"K0B (B0,C6)", "x":11, "y":0},
- {"label":"K0C (B0,C7)", "x":12, "y":0},
- {"label":"K0D (B0,F7)", "x":13, "y":0},
- {"label":"K21 (B2,D1)", "x":14, "y":0},
- {"label":"K43 (E6,D3)", "x":15, "y":0},
- {"label":"K44 (E6,D5)", "x":16, "y":0},
- {"label":"K10 (B1,D0)", "x":0, "y":1, "w":1.5},
- {"label":"K11 (B1,D1)", "x":1.5, "y":1},
- {"label":"K12 (B1,D2)", "x":2.5, "y":1},
- {"label":"K13 (B1,D3)", "x":3.5, "y":1},
- {"label":"K14 (B1,D5)", "x":4.5, "y":1},
- {"label":"K15 (B1,D4)", "x":5.5, "y":1},
- {"label":"K16 (B1,D6)", "x":6.5, "y":1},
- {"label":"K17 (B1,D7)", "x":7.5, "y":1},
- {"label":"K18 (B1,B4)", "x":8.5, "y":1},
- {"label":"K19 (B1,B5)", "x":9.5, "y":1},
- {"label":"K1A (B1,B6)", "x":10.5, "y":1},
- {"label":"K1B (B1,C6)", "x":11.5, "y":1},
- {"label":"K1C (B1,C7)", "x":12.5, "y":1},
- {"label":"K1D (B1,F7)", "x":13.5, "y":1, "w":1.5},
- {"label":"K20 (B2,D0)", "x":0, "y":2, "w":1.75},
- {"label":"K22 (B2,D2)", "x":1.75, "y":2},
- {"label":"K23 (B2,D3)", "x":2.75, "y":2},
- {"label":"K24 (B2,D5)", "x":3.75, "y":2},
- {"label":"K25 (B2,D4)", "x":4.75, "y":2},
- {"label":"K26 (B2,D6)", "x":5.75, "y":2},
- {"label":"K27 (B2,D7)", "x":6.75, "y":2},
- {"label":"K28 (B2,B4)", "x":7.75, "y":2},
- {"label":"K29 (B2,B5)", "x":8.75, "y":2},
- {"label":"K2A (B2,B6)", "x":9.75, "y":2},
- {"label":"K2B (B2,C6)", "x":10.75, "y":2},
- {"label":"K2C (B2,C7)", "x":11.75, "y":2},
- {"label":"K2D (B2,F7)", "x":12.75, "y":2, "w":2.25},
- {"label":"K31 (B3,D1)", "x":0, "y":3, "w":2.25},
- {"label":"K32 (B3,D2)", "x":2.25, "y":3},
- {"label":"K33 (B3,D3)", "x":3.25, "y":3},
- {"label":"K34 (B3,D5)", "x":4.25, "y":3},
- {"label":"K35 (B3,D4)", "x":5.25, "y":3},
- {"label":"K36 (B3,D6)", "x":6.25, "y":3},
- {"label":"K37 (B3,D7)", "x":7.25, "y":3},
- {"label":"K38 (B3,B4)", "x":8.25, "y":3},
- {"label":"K39 (B3,B5)", "x":9.25, "y":3},
- {"label":"K3A (B3,B6)", "x":10.25, "y":3},
- {"label":"K3B (B3,C6)", "x":11.25, "y":3, "w":1.75},
- {"label":"K3C (B3,C7)", "x":13, "y":3},
- {"label":"K3D (B3,F7)", "x":14, "y":3},
- {"label":"K40 (E6,D0)", "x":0, "y":4, "w":1.25},
- {"label":"K41 (E6,D1)", "x":1.25, "y":4, "w":1.25},
- {"label":"K42 (E6,D2)", "x":2.5, "y":4, "w":1.25},
- {"label":"K46 (E6,D6)", "x":3.75, "y":4, "w":6.25},
- {"label":"K49 (E6,B5)", "x":10, "y":4},
- {"label":"K4A (E6,B6)", "x":11, "y":4},
- {"label":"K4B (E6,C6)", "x":12, "y":4},
- {"label":"K4C (E6,C7)", "x":13, "y":4},
- {"label":"K4D (E6,F7)", "x":14, "y":4}
+ {"label":"K00 (B0, D0)", "x":0, "y":0.5},
+ {"label":"K01 (B0, D1)", "x":1, "y":0.5},
+ {"label":"K02 (B0, D2)", "x":2, "y":0.5},
+ {"label":"K03 (B0, D3)", "x":3, "y":0.5},
+ {"label":"K04 (B0, D5)", "x":4, "y":0.5},
+ {"label":"K05 (B0, D4)", "x":5, "y":0.5},
+ {"label":"K06 (B0, D6)", "x":6, "y":0.5},
+ {"label":"K07 (B0, D7)", "x":7, "y":0.5},
+ {"label":"K08 (B0, B4)", "x":8, "y":0.5},
+ {"label":"K09 (B0, B5)", "x":9, "y":0.5},
+ {"label":"K0A (B0, B6)", "x":10, "y":0.5},
+ {"label":"K0B (B0, C6)", "x":11, "y":0.5},
+ {"label":"K0C (B0, C7)", "x":12, "y":0.5},
+ {"label":"K0D (B0, F7)", "x":13, "y":0.5},
+ {"label":"K21 (B2, D1)", "x":14, "y":0.5},
+ {"label":"K43 (E6, D3)", "x":13.9, "y":0, "w":0.6, "h":0.5},
+ {"label":"K44 (E6, D5)", "x":14.5, "y":0, "w":0.6, "h":0.5},
+
+ {"label":"K10 (B1, D0)", "x":0, "y":1.5, "w":1.5},
+ {"label":"K11 (B1, D1)", "x":1.5, "y":1.5},
+ {"label":"K12 (B1, D2)", "x":2.5, "y":1.5},
+ {"label":"K13 (B1, D3)", "x":3.5, "y":1.5},
+ {"label":"K14 (B1, D5)", "x":4.5, "y":1.5},
+ {"label":"K15 (B1, D4)", "x":5.5, "y":1.5},
+ {"label":"K16 (B1, D6)", "x":6.5, "y":1.5},
+ {"label":"K17 (B1, D7)", "x":7.5, "y":1.5},
+ {"label":"K18 (B1, B4)", "x":8.5, "y":1.5},
+ {"label":"K19 (B1, B5)", "x":9.5, "y":1.5},
+ {"label":"K1A (B1, B6)", "x":10.5, "y":1.5},
+ {"label":"K1B (B1, C6)", "x":11.5, "y":1.5},
+ {"label":"K1C (B1, C7)", "x":12.5, "y":1.5},
+ {"label":"K1D (B1, F7)", "x":13.5, "y":1.5, "w":1.5},
+
+ {"label":"K20 (B2, D0)", "x":0, "y":2.5, "w":1.75},
+ {"label":"K22 (B2, D2)", "x":1.75, "y":2.5},
+ {"label":"K23 (B2, D3)", "x":2.75, "y":2.5},
+ {"label":"K24 (B2, D5)", "x":3.75, "y":2.5},
+ {"label":"K25 (B2, D4)", "x":4.75, "y":2.5},
+ {"label":"K26 (B2, D6)", "x":5.75, "y":2.5},
+ {"label":"K27 (B2, D7)", "x":6.75, "y":2.5},
+ {"label":"K28 (B2, B4)", "x":7.75, "y":2.5},
+ {"label":"K29 (B2, B5)", "x":8.75, "y":2.5},
+ {"label":"K2A (B2, B6)", "x":9.75, "y":2.5},
+ {"label":"K2B (B2, C6)", "x":10.75, "y":2.5},
+ {"label":"K2C (B2, C7)", "x":11.75, "y":2.5},
+ {"label":"K2D (B2, F7)", "x":12.75, "y":2.5, "w":2.25},
+
+ {"label":"K31 (B3, D1)", "x":0, "y":3.5, "w":2.25},
+ {"label":"K32 (B3, D2)", "x":2.25, "y":3.5},
+ {"label":"K33 (B3, D3)", "x":3.25, "y":3.5},
+ {"label":"K34 (B3, D5)", "x":4.25, "y":3.5},
+ {"label":"K35 (B3, D4)", "x":5.25, "y":3.5},
+ {"label":"K36 (B3, D6)", "x":6.25, "y":3.5},
+ {"label":"K37 (B3, D7)", "x":7.25, "y":3.5},
+ {"label":"K38 (B3, B4)", "x":8.25, "y":3.5},
+ {"label":"K39 (B3, B5)", "x":9.25, "y":3.5},
+ {"label":"K3A (B3, B6)", "x":10.25, "y":3.5},
+ {"label":"K3B (B3, C6)", "x":11.25, "y":3.5, "w":1.75},
+ {"label":"K3C (B3, C7)", "x":13, "y":3.5},
+ {"label":"K3D (B3, F7)", "x":14, "y":3.5},
+
+ {"label":"K40 (E6, D0)", "x":0, "y":4.5, "w":1.25},
+ {"label":"K41 (E6, D1)", "x":1.25, "y":4.5, "w":1.25},
+ {"label":"K42 (E6, D2)", "x":2.5, "y":4.5, "w":1.25},
+ {"label":"K46 (E6, D6)", "x":3.75, "y":4.5, "w":6.25},
+ {"label":"K49 (E6, B5)", "x":10, "y":4.5},
+ {"label":"K4A (E6, B6)", "x":11, "y":4.5},
+ {"label":"K4B (E6, C6)", "x":12, "y":4.5},
+ {"label":"K4C (E6, C7)", "x":13, "y":4.5},
+ {"label":"K4D (E6, F7)", "x":14, "y":4.5}
]
}
}
- ,"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
}
diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev1/keymaps/default/keymap.c b/keyboards/kprepublic/bm60hsrgb_ec/rev1/keymaps/default/keymap.c
index eaf57e31ac..eb7e5cc221 100644
--- a/keyboards/kprepublic/bm60hsrgb_ec/rev1/keymaps/default/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb_ec/rev1/keymaps/default/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev1/keymaps/via/keymap.c b/keyboards/kprepublic/bm60hsrgb_ec/rev1/keymaps/via/keymap.c
index 4f4396ad50..a82f480bf0 100644
--- a/keyboards/kprepublic/bm60hsrgb_ec/rev1/keymaps/via/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb_ec/rev1/keymaps/via/keymap.c
@@ -28,21 +28,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______
),
[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, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = 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_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev1/readme.md b/keyboards/kprepublic/bm60hsrgb_ec/rev1/readme.md
index 2c0996974b..f22bf4f97c 100644
--- a/keyboards/kprepublic/bm60hsrgb_ec/rev1/readme.md
+++ b/keyboards/kprepublic/bm60hsrgb_ec/rev1/readme.md
@@ -2,9 +2,9 @@
A 60% hotswap inswitch RGB keyboard with an encoder from KP Republic.
-* Keyboard Maintainer: [bdtc123](https://github.com/bdtc123)
+* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee)
* Hardware Supported: BM60HSRGB_EC/rev1
-* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-60-gh60-hot-swappable-pcb-programmed-qmk-firmware-type-c)
+* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60ec-bm60-ec-rgb-60-gh60-hot-swappable-custom-mechanical-keyboard-pcb-programmed-qmk-via-rgb-switch-type-c-rotary-knob)
## Bootloader
@@ -12,7 +12,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev2/config.h b/keyboards/kprepublic/bm60hsrgb_ec/rev2/config.h
index 5c2bf39ced..ac80357e9f 100644
--- a/keyboards/kprepublic/bm60hsrgb_ec/rev2/config.h
+++ b/keyboards/kprepublic/bm60hsrgb_ec/rev2/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50
-#define PRODUCT_ID 0x1124
-#define DEVICE_VER 0x0002
-#define MANUFACTURER KP Republic
-#define PRODUCT BM60V2_ec
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -43,7 +36,6 @@
*/
#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
diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev2/info.json b/keyboards/kprepublic/bm60hsrgb_ec/rev2/info.json
index 613511b784..b8e28b0ea2 100644
--- a/keyboards/kprepublic/bm60hsrgb_ec/rev2/info.json
+++ b/keyboards/kprepublic/bm60hsrgb_ec/rev2/info.json
@@ -1,80 +1,86 @@
{
- "keyboard_name": "bm60hsrgb_ec",
+ "keyboard_name": "BM60HSRGB_EC Rev2",
+ "manufacturer": "KP Republic",
"url": "",
- "maintainer": "qmk",
+ "maintainer": "peepeetee",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x1124",
+ "device_version": "0.0.2"
+ },
"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.75, "y":0},
- {"x":15.75, "y":0},
- {"x":16.75, "y":0},
+ {"x":0, "y":0.5},
+ {"x":1, "y":0.5},
+ {"x":2, "y":0.5},
+ {"x":3, "y":0.5},
+ {"x":4, "y":0.5},
+ {"x":5, "y":0.5},
+ {"x":6, "y":0.5},
+ {"x":7, "y":0.5},
+ {"x":8, "y":0.5},
+ {"x":9, "y":0.5},
+ {"x":10, "y":0.5},
+ {"x":11, "y":0.5},
+ {"x":12, "y":0.5},
+ {"x":13, "y":0.5},
+ {"x":14, "y":0.5},
+ {"x":13.9, "y":0, "w":0.6, "h":0.5},
+ {"x":14.5, "y":0, "w":0.6, "h":0.5},
- {"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":1.5, "w":1.5},
+ {"x":1.5, "y":1.5},
+ {"x":2.5, "y":1.5},
+ {"x":3.5, "y":1.5},
+ {"x":4.5, "y":1.5},
+ {"x":5.5, "y":1.5},
+ {"x":6.5, "y":1.5},
+ {"x":7.5, "y":1.5},
+ {"x":8.5, "y":1.5},
+ {"x":9.5, "y":1.5},
+ {"x":10.5, "y":1.5},
+ {"x":11.5, "y":1.5},
+ {"x":12.5, "y":1.5},
+ {"x":13.5, "y":1.5, "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":2.5, "w":1.75},
+ {"x":1.75, "y":2.5},
+ {"x":2.75, "y":2.5},
+ {"x":3.75, "y":2.5},
+ {"x":4.75, "y":2.5},
+ {"x":5.75, "y":2.5},
+ {"x":6.75, "y":2.5},
+ {"x":7.75, "y":2.5},
+ {"x":8.75, "y":2.5},
+ {"x":9.75, "y":2.5},
+ {"x":10.75, "y":2.5},
+ {"x":11.75, "y":2.5},
+ {"x":12.75, "y":2.5, "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":3.5, "w":2.25},
+ {"x":2.25, "y":3.5},
+ {"x":3.25, "y":3.5},
+ {"x":4.25, "y":3.5},
+ {"x":5.25, "y":3.5},
+ {"x":6.25, "y":3.5},
+ {"x":7.25, "y":3.5},
+ {"x":8.25, "y":3.5},
+ {"x":9.25, "y":3.5},
+ {"x":10.25, "y":3.5},
+ {"x":11.25, "y":3.5, "w":1.75},
+ {"x":13, "y":3.5},
+ {"x":14, "y":3.5},
- {"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.5, "w":1.25},
+ {"x":1.25, "y":4.5, "w":1.25},
+ {"x":2.5, "y":4.5, "w":1.25},
+ {"x":3.75, "y":4.5, "w":6.25},
+ {"x":10, "y":4.5},
+ {"x":11, "y":4.5},
+ {"x":12, "y":4.5},
+ {"x":13, "y":4.5},
+ {"x":14, "y":4.5}
]
}
}
diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev2/keymaps/default/keymap.c b/keyboards/kprepublic/bm60hsrgb_ec/rev2/keymaps/default/keymap.c
index 5e84d5bbe3..8e373e8c39 100644
--- a/keyboards/kprepublic/bm60hsrgb_ec/rev2/keymaps/default/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb_ec/rev2/keymaps/default/keymap.c
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QK_BOOT, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
_______, RMT, RMS, RMIH, RMDH, RMIS, RMDS, RMIV, RMDV, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev2/keymaps/via/keymap.c b/keyboards/kprepublic/bm60hsrgb_ec/rev2/keymaps/via/keymap.c
index c087c857fb..74191c2ff9 100644
--- a/keyboards/kprepublic/bm60hsrgb_ec/rev2/keymaps/via/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb_ec/rev2/keymaps/via/keymap.c
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QK_BOOT, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
_______, RMT, RMS, RMIH, RMDH, RMIS, RMDS, RMIV, RMDV, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kprepublic/bm60hsrgb_ec/rev2/readme.md b/keyboards/kprepublic/bm60hsrgb_ec/rev2/readme.md
index 39e986c1c5..caf1dae82a 100644
--- a/keyboards/kprepublic/bm60hsrgb_ec/rev2/readme.md
+++ b/keyboards/kprepublic/bm60hsrgb_ec/rev2/readme.md
@@ -2,13 +2,17 @@
A 60% hotswap inswitch RGB keyboard with an encoder from KP Republic.
-* Keyboard Maintainer: [bdtc123](https://github.com/bdtc123)
+* Keyboard Maintainer: [peepeetee](https://github.com/peepeetee)
* Hardware Supported: BM60HSRGB_EC/rev2
-* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60-rgb-60-gh60-hot-swappable-pcb-programmed-qmk-firmware-type-c)
+* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm60ec-bm60-ec-rgb-60-gh60-hot-swappable-custom-mechanical-keyboard-pcb-programmed-qmk-via-rgb-switch-type-c-rotary-knob)
+
+## 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev1/config.h b/keyboards/kprepublic/bm60hsrgb_iso/rev1/config.h
index 42b9d2afb1..4ef984b4be 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/rev1/config.h
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 // "KP"
-#define PRODUCT_ID 0xEF8C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KPRepublic
-#define PRODUCT BM60HSRGB_ISO
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev1/info.json b/keyboards/kprepublic/bm60hsrgb_iso/rev1/info.json
index b53600e44d..9531c81748 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/rev1/info.json
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "BM60HSRGB_ISO",
+ "keyboard_name": "BM60HSRGB_ISO Rev1",
+ "manufacturer": "KPRepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0xEF8C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_iso_arrow": {
"layout": [
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h b/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h
index 4653db4fd6..80dc26907c 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h
@@ -19,13 +19,6 @@
#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
@@ -42,7 +35,6 @@
*/
#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
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/info.json b/keyboards/kprepublic/bm60hsrgb_iso/rev2/info.json
index 8fd3f1786f..feee1fd9a7 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/rev2/info.json
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "bm60v2_ISO",
+ "keyboard_name": "BM60HSRGB_ISO Rev2",
+ "manufacturer": "KPRepublic",
"url": "",
"maintainer": "kp republic",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x1123",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_60_iso_arrow": {
"layout": [
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev1/config.h b/keyboards/kprepublic/bm60hsrgb_poker/rev1/config.h
index a3aab0e65e..88c44d4440 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/rev1/config.h
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 // "KP"
-#define PRODUCT_ID 0xEF8D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KP Republic
-#define PRODUCT BM60HSRGB_POKER
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev1/info.json b/keyboards/kprepublic/bm60hsrgb_poker/rev1/info.json
index 09abf6e353..c168002147 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/rev1/info.json
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "BM60HSRGB_POKER",
+ "keyboard_name": "BM60HSRGB Poker Rev1",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0xEF8D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/david/keymap.c b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/david/keymap.c
index 5050b25a90..fb7e9c33c3 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/david/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/david/keymap.c
@@ -22,7 +22,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_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,
- RESET, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_UP, KC_INS, KC_HOME, KC_END,
+ QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_UP, KC_INS, KC_HOME, KC_END,
KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, 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_PGUP, KC_PGDN, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/ipetepete/keymap.c b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/ipetepete/keymap.c
index e59660242e..4a438b822b 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/ipetepete/keymap.c
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev1/keymaps/ipetepete/keymap.c
@@ -58,14 +58,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_fn] = 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,
- _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, RESET,
+ _______, _______, KC_UP, _______, _______, _______, KC_CALC, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______,
KC_MPLY, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, NK_TOGG, _______, _______, KC_END, KC_PGDN, KC_MNXT,
qwerty, colemak, gamer, _______, _______, _______, _______, _______
),
[_rgb] = 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,
- _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET,
+ _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h b/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h
index d40004f502..96d8a450c9 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h
@@ -17,13 +17,6 @@
#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
@@ -40,7 +33,6 @@
*/
#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
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/info.json b/keyboards/kprepublic/bm60hsrgb_poker/rev2/info.json
index 914334e113..8ec74866f2 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/rev2/info.json
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "bm60v2_poker",
+ "keyboard_name": "BM60HSRGB Poker Rev2",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "bdtc123",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x1122",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/kprepublic/bm65hsrgb/keymaps/default/keymap.c b/keyboards/kprepublic/bm65hsrgb/keymaps/default/keymap.c
index 1e1aae0413..1b3ce7a456 100644
--- a/keyboards/kprepublic/bm65hsrgb/keymaps/default/keymap.c
+++ b/keyboards/kprepublic/bm65hsrgb/keymaps/default/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/kprepublic/bm65hsrgb/rev1/config.h b/keyboards/kprepublic/bm65hsrgb/rev1/config.h
index b428a78864..c5e8022d35 100644
--- a/keyboards/kprepublic/bm65hsrgb/rev1/config.h
+++ b/keyboards/kprepublic/bm65hsrgb/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 //KP
-#define PRODUCT_ID 0xEF6E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KPRepublic
-#define PRODUCT BM65HSRGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -46,7 +39,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
B3, \
E6 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kprepublic/bm65hsrgb/rev1/info.json b/keyboards/kprepublic/bm65hsrgb/rev1/info.json
index 788f8be23e..0d99dd2dc2 100644
--- a/keyboards/kprepublic/bm65hsrgb/rev1/info.json
+++ b/keyboards/kprepublic/bm65hsrgb/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BM65HSRGB",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "bytesapart",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0xEF6E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/config.h b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/config.h
new file mode 100644
index 0000000000..0e06652715
--- /dev/null
+++ b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/config.h
@@ -0,0 +1,36 @@
+/* Copyright 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
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// place overrides here
+
+#pragma once
+#define LSPO_KEYS KC_LSFT, KC_LSFT, KC_8
+#define RSPC_KEYS KC_RSFT, KC_LSFT, KC_9
+#define LAPO_KEYS KC_LALT, KC_RALT, KC_QUOT
+#define RAPC_KEYS KC_RALT, KC_RALT, KC_NUHS
+
+#define LEADER_TIMEOUT 1000
+#define LEADER_PER_KEY_TIMING 250
+
+// control underglow
+// i.e. switch it off
+//#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_LIGHT
+//#define RGBLIGHT_DEFAULT_HUE 0
+//#define RGBLIGHT_DEFAULT_SAT UINT8_MAX
+//#define RGBLIGHT_DEFAULT_SAT 0
+//#define RGBLIGHT_DEFAULT_VAL RGBLIGHT_LIMIT_VAL
+//#define RGBLIGHT_DEFAULT_VAL 0
+//#define RGBLIGHT_DEFAULT_SPD 0
diff --git a/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/custom_keymap.h b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/custom_keymap.h
new file mode 100644
index 0000000000..8f11e4072b
--- /dev/null
+++ b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/custom_keymap.h
@@ -0,0 +1,71 @@
+/* Copyright 2019 ash0x0 2021 peepeetee, 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
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 <string.h>
+// HID has not yet been implemented for this keyboard
+// #include "raw_hid.h"
+
+#define MILLISECONDS_IN_SECOND 1000
+
+// Custom HSV values
+#define C_HSV_WINERED 0, 255, 85
+#define C_HSV_DARKGOLD 36, 255, 85
+#define C_HSV_DARKBLUE 170, 255, 85
+
+// Default color HSV Values (for inspiration)
+// #define HSV_AZURE 132, 102, 255
+// #define HSV_BLACK 0, 0, 0
+// #define HSV_BLUE 170, 255, 255
+// #define HSV_CHARTREUSE 64, 255, 255
+// #define HSV_CORAL 11, 176, 255
+// #define HSV_CYAN 128, 255, 255
+// #define HSV_GOLD 36, 255, 255
+// #define HSV_GOLDENROD 30, 218, 218
+// #define HSV_GREEN 85, 255, 255
+// #define HSV_MAGENTA 213, 255, 255
+// #define HSV_ORANGE 28, 255, 255
+// #define HSV_PINK 234, 128, 255
+// #define HSV_PURPLE 191, 255, 255
+// #define HSV_RED 0, 255, 255
+// #define HSV_SPRINGGREEN 106, 255, 255
+// #define HSV_TEAL 128, 255, 128
+// #define HSV_TURQUOISE 123, 90, 112
+// #define HSV_WHITE 0, 0, 255
+// #define HSV_YELLOW 43, 255, 255
+// #define HSV_OFF HSV_BLACK
+
+
+//========================================================== CONFIGURABLE DEFAULTS ==========================================================
+#define RGB_DEFAULT_TIME_OUT 30
+#define RGB_FAST_MODE_TIME_OUT 3
+#define RGB_TIME_OUT_MAX 600
+#define RGB_TIME_OUT_MIN 10
+#define RGB_TIME_OUT_STEP 10
+
+bool disable_layer_color;
+
+uint8_t dfa_state; //state for my language switching DFA
+
+
+bool rgb_enabled_flag; // Current LED state flag. If false then LED is off.
+bool rgb_time_out_enable; // Idle LED toggle enable. If false then LED will not turn off after idle timeout.
+bool rgb_time_out_fast_mode_enabled; // Enable flag for RGB timeout fast mode
+bool rgb_time_out_user_value; // This holds the toggle value set by user with ROUT_TG. It's necessary as RGB_TOG changes timeout enable.
+uint16_t rgb_time_out_seconds; // Idle LED timeout value, in seconds not milliseconds
+uint16_t rgb_time_out_saved_seconds; // The saved user config for RGB timeout period
+led_flags_t rgb_time_out_saved_flag; // Store LED flag before timeout so it can be restored when LED is turned on again.
diff --git a/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/keymap.c b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/keymap.c
new file mode 100644
index 0000000000..442111bb6e
--- /dev/null
+++ b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/keymap.c
@@ -0,0 +1,471 @@
+/* Copyright 2019 ashlar 2021 peepeetee, 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
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "custom_keymap.h"
+#include "sendstring_german.h"
+
+#ifdef TAP_DANCE_ENABLE
+enum {
+ TD_HOME_END,
+};
+
+// Tap Dance definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+ // tap once for home, twice for end
+ [TD_HOME_END] = ACTION_TAP_DANCE_DOUBLE(KC_HOME, KC_END)
+};
+#endif
+
+// Custom layer types
+enum layertypes {
+ LYR_SOLID, // fullsize coloring
+ LYR_TRANS, // used keys in layer color, lower layer shines through on unused keys
+ LYR_BLACK // only used key in layer color
+};
+
+// Defines names for use in layer keycodes and the keymap
+enum layers {
+ _LVL0_,
+ _LVL1_,
+ _LVL2_,
+ _LVL3_,
+ _LVL4_,
+ _LVL5_,
+ _LVL6_,
+ _LVL7_
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│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│Ctrl│ │ ↠│ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+#ifdef TAP_DANCE_ENABLE
+/* 0: ISO qwertz, SPACECADET and TAPDANCE */
+/* [_LVL0_] = 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_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, TD(TD_HOME_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_LSPO, KC_NUBS, 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_LGUI, KC_LAPO, KC_SPC, KC_RAPC, MO(_LVL1_), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ */
+/* 0: ISO DE qwertz, SPACECADET and TAPDANCE */
+ [_LVL0_] = LAYOUT_65_iso_blocker(
+ KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7, DE_8, DE_9, DE_0, DE_SS, DE_ACUT, KC_BSPC, KC_DEL,
+ KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UDIA, DE_PLUS, TD(TD_HOME_END),
+ KC_CAPS, DE_A, DE_S, DE_D, DE_F, DE_G, DE_H, DE_J, DE_K, DE_L, DE_ODIA, DE_ADIA, DE_HASH, KC_ENT, KC_PGUP,
+ KC_LSPO, DE_LABK, DE_Y, DE_X, DE_C, DE_V, DE_B, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_RSPC, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LAPO, KC_SPC, KC_RAPC, MO(_LVL1_), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+#else
+ /* 0: ISO qwertz, SPACECADET but no TAPDANCE */
+ [_LVL0_] = 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_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_ENT, 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_PGUP,
+ KC_LSPO, KC_NUBS, 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_LGUI, KC_LAPO, KC_SPC, KC_RAPC, MO(_LVL1_), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+#endif
+ /* 1: Function key, multimedia control, layer switching board and LEADER */
+ [_LVL1_] = 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, _______, LGUI(KC_END),
+ S(KC_GRV), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGUI(KC_PAUSE),
+ QK_BOOT, TO(_LVL2_), TO(_LVL3_), TO(_LVL4_), TO(_LVL5_), TO(_LVL6_), TO(_LVL7_), _______, _______, _______, KC_BRIU, _______, KC_MUTE, TO(_LVL0_), KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRID, _______, S(KC_MUTE), KC_MPLY, KC_VOLD,
+ _______, _______, _______, KC_LEAD, _______, _______, KC_MPRV, KC_MSTP, KC_MNXT
+ ),
+ /* 2: Mouse layer and virtual/multiple desktop navigation */
+ [_LVL2_] = LAYOUT_65_iso_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_ACL0, KC_ACL1, KC_ACL2, _______, _______, _______, KC_PGDN, KC_PGUP, KC_PSCR, KC_WH_U, _______, _______, _______,
+ _______, _______, KC_BTN1, KC_BTN2, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_WH_D, _______, _______, TO(_LVL0_), _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______, _______, _______, _______, LCA(KC_UP), LCA(KC_E),
+ _______, _______, _______, _______, _______, _______, LCA(KC_LEFT), LCA(KC_DOWN), LCA(KC_RGHT)
+ ),
+#ifdef DYNAMIC_MACRO_ENABLE
+ /* 3: Dynamic macro, NUMPAD and settings */
+ [_LVL3_] = LAYOUT_65_iso_blocker(
+ _______, DM_PLY1, DM_PLY2, _______, _______, _______, _______, _______, _______, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, _______, _______,
+ _______, DM_REC1, DM_REC2, _______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, _______,
+ _______, _______, _______, _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, TO(_LVL0_), _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______, _______,
+ _______, _______, _______, RGB_TOG, KC_0, KC_PCMM, _______, _______, _______
+ ),
+#else
+ /* 3: NUMPAD and settings */
+ [_LVL3_] = LAYOUT_65_iso_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, _______, _______,
+ _______, _______, _______, _______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, _______,
+ _______, _______, _______, _______, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, TO(_LVL0_), _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______, _______,
+ _______, _______, _______, RGB_TOG, KC_0, KC_PCMM, _______, _______, _______
+ ),
+#endif
+ /* Gaming layer no TAPDANCE no SPACECADET simple QWERTZ layout for custom coloring */
+ [_LVL4_] = 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_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, TO(_LVL0_), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ /* 5: ISO qwerty DE 2 US Base Layer */
+ [_LVL5_] = 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, DE_MINS, DE_EQL, KC_BSPC, KC_DEL,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, DE_Y, KC_U, KC_I, KC_O, KC_P, DE_LBRC, DE_RBRC, KC_HOME,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_SCLN, DE_QUOT, DE_BSLS, KC_ENT, KC_PGUP,
+ MO(_LVL6_), DE_GRV, DE_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, DE_COMM, DE_DOT, DE_SLSH, MO(_LVL6_), KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, TO(_LVL0_), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ /* 6: ISO qwerty DE 2 US Shifted Layer */
+ [_LVL6_] = LAYOUT_65_iso_blocker(
+ _______, DE_EXLM, DE_AT, DE_HASH, DE_DLR, DE_PERC, DE_CIRC, DE_AMPR, DE_ASTR, DE_LPRN, DE_RPRN, DE_UNDS, DE_PLUS, _______, _______,
+ _______, S(KC_Q), S(KC_W), S(KC_E), S(KC_R), S(KC_T), S(DE_Y), S(KC_U), S(KC_I), S(KC_O), S(KC_P), DE_LCBR, DE_RCBR, KC_END,
+ KC_CAPS, S(KC_A), S(KC_S), S(KC_D), S(KC_F), S(KC_G), S(KC_H), S(KC_J), S(KC_K), S(KC_L), DE_COLN, DE_DQUO, DE_PIPE, _______, _______,
+ KC_LSFT, DE_TILD, S(DE_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), S(KC_N), S(KC_M), DE_LABK, DE_RABK, DE_QUES, KC_RSFT, _______, _______,
+ _______, _______, _______, _______, _______, TO(_LVL0_), _______, _______, _______
+ ),
+/* Led Type Lighting Layer functionally equivalent to _LVL0_ / layer 0 */
+#ifdef TAP_DANCE_ENABLE
+ /* 7: ISO DE qwertz, SPACECADET and TAPDANCE */
+ [_LVL7_] = LAYOUT_65_iso_blocker(
+ KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, DE_6, DE_7, DE_8, DE_9, DE_0, DE_SS, DE_ACUT, KC_BSPC, KC_DEL,
+ KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UDIA, DE_PLUS, TD(TD_HOME_END),
+ KC_CAPS, DE_A, DE_S, DE_D, DE_F, DE_G, DE_H, DE_J, DE_K, DE_L, DE_ODIA, DE_ADIA, DE_HASH, KC_ENT, KC_PGUP,
+ KC_LSPO, DE_LABK, DE_Y, DE_X, DE_C, DE_V, DE_B, DE_N, DE_M, DE_COMM, DE_DOT, DE_MINS, KC_RSPC, KC_UP, KC_PGDN,
+ KC_LCTL, KC_LGUI, KC_LAPO, KC_SPC, KC_RAPC, TO(_LVL0_), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+#else
+ /* 7: ISO qwertz, SPACECADET but no TAPDANCE */
+ [_LVL7_] = 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_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_LSPO, KC_NUBS, 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_LGUI, KC_LAPO, KC_SPC, KC_RAPC, TO(_LVL0_), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+#endif
+
+
+ /*template
+ [_UL] = LAYOUT_65_iso_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(0), _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+ */
+};
+
+
+// layer color and type
+const uint8_t PROGMEM ledmap[][4] = {
+ // LEDs off on Layer 0
+ //[_LVL0_] = {{0, 0, 0}, LYR_SOLID},
+ [_LVL0_] = {C_HSV_WINERED, LYR_SOLID},
+ [_LVL1_] = {HSV_RED, LYR_TRANS},
+ [_LVL2_] = {HSV_MAGENTA, LYR_BLACK},
+ [_LVL3_] = {HSV_PURPLE, LYR_BLACK},
+ [_LVL4_] = {C_HSV_DARKGOLD, LYR_SOLID},
+ [_LVL5_] = {C_HSV_DARKBLUE, LYR_SOLID},
+ [_LVL6_] = {HSV_BLUE, LYR_TRANS},
+ [_LVL7_] = {C_HSV_WINERED, LYR_SOLID}
+};
+
+
+void keyboard_post_init_user(void) {
+ // Call the post init code.
+#ifdef CONSOLE_ENABLE
+ debug_enable=true;
+ debug_matrix=true;
+#endif
+ //rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ //rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
+ //rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR);
+ //rgb_matrix_sethsv(HSV_OFF);
+ //rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+ //rgb_matrix_sethsv_noeeprom(HSV_OFF);
+ //rgb_matrix_set_color_all(RGB_BLACK);
+ rgb_matrix_enable();
+}
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+#ifdef CONSOLE_ENABLE
+ // useful for getting matrix right
+ uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %u, time: %u, interrupt: %u, 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 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(RGB_BLACK);
+ }
+ break;
+ case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(RGB_BLACK);
+ }
+ 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
+ }
+}
+
+
+void set_led_color_by_hsv(int ledkey, uint8_t h_in, uint8_t s_in, uint8_t v_in){
+ HSV hsv = { .h = h_in, .s = s_in, .v = v_in};
+ RGB rgb = hsv_to_rgb(hsv);
+ float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX;
+ rgb_matrix_set_color(ledkey, f * rgb.r, f * rgb.g, f * rgb.b);
+}
+
+void set_led_color_by_layer(int layer, int ledkey){
+ set_led_color_by_hsv(ledkey, pgm_read_byte(&ledmap[layer][0]),
+ pgm_read_byte(&ledmap[layer][1]),
+ pgm_read_byte(&ledmap[layer][2]));
+}
+
+void set_ledkey_by_layer_type(int layer, int ledkey, uint16_t key){
+ if (rgb_matrix_get_flags() != LED_FLAG_ALL){
+ if ( key == KC_TRNS ) {
+ if ((pgm_read_byte(&ledmap[layer][3]) == LYR_TRANS) && (layer > 0)){
+ // this key is transparent and the layer below does something
+ // - light it up in (lower) layer-1 specific color
+ set_led_color_by_layer(layer-1, ledkey);
+ }
+ if (pgm_read_byte(&ledmap[layer][3]) == LYR_BLACK){
+ // this key is transparent but the lower layer is not intended
+ // to be used, it still works but not intended; type BLACK
+ set_led_color_by_hsv(ledkey, HSV_BLACK);
+ }
+ } else {
+ // this key does something - light it up in layer specific color
+ // regular key and SOLID or BLACK as layer type
+ set_led_color_by_layer(layer, ledkey);
+ }
+ }
+}
+
+void set_caps_lock(int layer) {
+ int caps_lock_led = 30;
+ led_t host_leds = host_keyboard_led_state();
+ if (host_leds.caps_lock) {
+ set_led_color_by_hsv(caps_lock_led, HSV_WHITE);
+ } else {
+ // if capslock is not pressed don't clear it,
+ // it might be used for displaying led pattern
+ if((rgb_matrix_get_flags() != LED_FLAG_ALL)) {
+ // or to keep the correct lighting on for the layer that use all keys
+ // on all other layers turn the led off, so only switch it of when
+ // layer is BLACK
+ if(pgm_read_byte(&ledmap[layer][3]) == LYR_BLACK){
+ set_led_color_by_hsv(caps_lock_led, HSV_BLACK);
+ }
+ }
+ }
+}
+
+void set_layer_color(int layer) {
+ // key specific lighting
+ int ledkey=0;
+ for (int keyindex=0; keyindex<MATRIX_COLS*MATRIX_ROWS;keyindex++) {
+ uint8_t row = keyindex/MATRIX_COLS;
+ uint8_t col = (keyindex-(keyindex/MATRIX_COLS)*MATRIX_COLS);
+ uint16_t key=pgm_read_word(&keymaps[layer][row][col]);
+
+ // continue if this is not a valid key
+ if (key==KC_NO) { continue; }
+
+ // handle layer specific coloring
+ set_ledkey_by_layer_type(layer, ledkey, key);
+ /* === below this function add custom overriding ledkey lighting === */
+
+ // gaming layer with highlighted keys
+ //if (IS_LAYER_ON(_LVL4_)) {
+ if (layer == _LVL4_) {
+ if((key==KC_W) || (key==KC_A) || (key==KC_S) || (key==KC_D)) {
+ set_led_color_by_hsv(ledkey, HSV_GOLD);
+ }
+ if((key==KC_R) || (key==KC_SPC) || (key==KC_LSFT) || (key==KC_LCTL)) {
+ set_led_color_by_hsv(ledkey, HSV_GOLDENROD);
+ }
+ }
+
+ // color testing layer
+ /*if (layer == _LVL7_) {
+ switch (ledkey) {
+ case 16: {
+ set_led_color_by_hsv(ledkey, HSV_AZURE);
+ }
+ break;
+ case 17: {
+ set_led_color_by_hsv(ledkey, HSV_BLUE);
+ }
+ break;
+ case 18: {
+ set_led_color_by_hsv(ledkey, HSV_CHARTREUSE);
+ }
+ break;
+ case 19: {
+ set_led_color_by_hsv(ledkey, HSV_CORAL);
+ }
+ break;
+ case 20: {
+ set_led_color_by_hsv(ledkey, HSV_CYAN);
+ }
+ break;
+ case 21: {
+ set_led_color_by_hsv(ledkey, HSV_GOLD);
+ }
+ break;
+ case 22: {
+ set_led_color_by_hsv(ledkey, HSV_GOLDENROD);
+ }
+ break;
+ case 23: {
+ set_led_color_by_hsv(ledkey, HSV_MAGENTA);
+ }
+ break;
+ case 24: {
+ set_led_color_by_hsv(ledkey, HSV_ORANGE);
+ }
+ break;
+ case 25: {
+ set_led_color_by_hsv(ledkey, HSV_PINK);
+ }
+ break;
+ case 26: {
+ set_led_color_by_hsv(ledkey, HSV_RED);
+ }
+ break;
+ case 27: {
+ set_led_color_by_hsv(ledkey, HSV_SPRINGGREEN);
+ }
+ break;
+ case 32: {
+ set_led_color_by_hsv(ledkey, HSV_MAGENTA);
+ }
+ break;
+ case 33: {
+ set_led_color_by_hsv(ledkey, HSV_TEAL);
+ }
+ break;
+ case 34: {
+ set_led_color_by_hsv(ledkey, HSV_TURQUOISE);
+ }
+ break;
+ case 35: {
+ set_led_color_by_hsv(ledkey, HSV_WHITE);
+ }
+ break;
+ case 36: {
+ set_led_color_by_hsv(ledkey, HSV_YELLOW);
+ }
+ break;
+ case 37: {
+ set_led_color_by_hsv(ledkey, HSV_PURPLE);
+ }
+ break;
+ case 38: {
+ set_led_color_by_hsv(ledkey, HSV_GREEN);
+ }
+ break;
+ default: {
+ }
+ break;
+ }
+ }*/
+ ledkey++;
+ }
+ // non key specific lighting instead led flag based
+ if (layer == _LVL7_){
+ for (uint8_t i = 0; i < DRIVER_LED_TOTAL; ++i) {
+ if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) {
+ set_led_color_by_hsv(i, C_HSV_DARKGOLD);
+ }
+ if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_UNDERGLOW)) {
+ set_led_color_by_hsv(i, HSV_BLACK);
+ }
+ if (HAS_ANY_FLAGS(g_led_config.flags[i], LED_FLAG_KEYLIGHT)) {
+ set_led_color_by_layer(layer, i);
+ }
+ }
+ }
+
+ return;
+}
+
+void rgb_matrix_indicators_user(void) {
+ int layer = get_highest_layer(layer_state);
+ set_layer_color(layer);
+ set_caps_lock(layer);
+}
+
+#ifdef LEADER_ENABLE
+LEADER_EXTERNS();
+
+void matrix_scan_user(void) {
+ LEADER_DICTIONARY() {
+ leading = false;
+ leader_end();
+
+ SEQ_ONE_KEY(KC_F) {
+ // Anything you can do in a macro.
+ SEND_STRING("QMK is awesome.");
+ }
+ SEQ_TWO_KEYS(KC_D, KC_D) {
+ SEND_STRING(SS_LCTL("a") SS_LCTL("c"));
+ }
+ SEQ_TWO_KEYS(KC_S, KC_S) {
+ SEND_STRING(SS_LCTL("v"));
+ }
+ SEQ_THREE_KEYS(KC_D, KC_D, KC_S) {
+ SEND_STRING("https://start.duckduckgo.com\n");
+ }
+ }
+}
+#endif
diff --git a/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/readme.md b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/readme.md
new file mode 100644
index 0000000000..924e63cef7
--- /dev/null
+++ b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/readme.md
@@ -0,0 +1,22 @@
+# p4yne's keymap for the bm65iso
+
+* Eight layers (DE, LYR_SW_MEDIA, MOUSE_DSKTP_NAV, DYN_MACRO_NUMPAD_LEADER, GAMING, US, US_SHIFTED, DE_FLAG_LIGHTNING)
+* Different color for each layer (DRK_RED, RED, MAGENTA, PURPLE, DRK_GOLD, DRK_BLUE, BLUE, DRK_RED)
+* Keys with something else defined than KC_TRNS are lit up in the layer color, so you easily can see which keys have some function defined
+* Custom layer types for KC_TRNS keys to let lower layer shine through, or stay black/off
+* Custom lighting based on layer, key and led flag
+* Caps-Lock lights up when active
+* Some leader shortcuts defined - nothing useful yet
+* Some space cadet keys defined for easier insertion of () and {}
+* Bootmagic lite enabled via default settings so you can plug in the keyboard while holding esc to land in bootloader mode
+* Manages all this and still fits in to the program memory
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kprepublic/bm65hsrgb_iso:p4yne
+
+Flashing example for this keyboard:
+
+ make kprepublic/bm65hsrgb_iso:p4yne:flash
+
+Keyboard Maintainer: **[p4yne](https://github.com/p4yne)**
diff --git a/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/rules.mk b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/rules.mk
new file mode 100644
index 0000000000..a94bdba88b
--- /dev/null
+++ b/keyboards/kprepublic/bm65hsrgb_iso/keymaps/p4yne/rules.mk
@@ -0,0 +1,23 @@
+#Features
+TAP_DANCE_ENABLE = yes
+SPACE_CADET_ENABLE = yes
+
+
+MAGIC_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+LEADER_ENABLE = yes
+DYNAMIC_MACRO_ENABLE = yes
+
+#Disabled Features
+#COMBO_ENABLE = no
+# Combo Key Grave and Escape
+#GRAVE_ESC_ENABLE = no
+# no unicode support
+#UNICODE_ENABLE = no
+
+#Debugging
+#COMMAND_ENABLE = no
+#CONSOLE_ENABLE = yes
+
+
diff --git a/keyboards/kprepublic/bm65hsrgb_iso/rev1/config.h b/keyboards/kprepublic/bm65hsrgb_iso/rev1/config.h
index aafb43bb51..0b5a3bf8e4 100644
--- a/keyboards/kprepublic/bm65hsrgb_iso/rev1/config.h
+++ b/keyboards/kprepublic/bm65hsrgb_iso/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 // "KP"
-#define PRODUCT_ID 0x0653
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KP Republic
-#define PRODUCT BM65HSRGB_ISO
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/kprepublic/bm65hsrgb_iso/rev1/info.json b/keyboards/kprepublic/bm65hsrgb_iso/rev1/info.json
index 9212c43339..02d55f9b0d 100644
--- a/keyboards/kprepublic/bm65hsrgb_iso/rev1/info.json
+++ b/keyboards/kprepublic/bm65hsrgb_iso/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "BM65HSRGB_ISO",
+ "keyboard_name": "BM65HSRGB ISO",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x0653",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_iso_blocker": {
"layout": [
diff --git a/keyboards/kprepublic/bm65hsrgb_iso/rev1/keymaps/deadolus/keymap.c b/keyboards/kprepublic/bm65hsrgb_iso/rev1/keymaps/deadolus/keymap.c
index 46de987a68..680f79a668 100644
--- a/keyboards/kprepublic/bm65hsrgb_iso/rev1/keymaps/deadolus/keymap.c
+++ b/keyboards/kprepublic/bm65hsrgb_iso/rev1/keymaps/deadolus/keymap.c
@@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGUI(KC_PAUSE),
_______, TO(_GREEN_), TO(_BLUE_), TO(_CYAN_), TO(_MAGENTA_), TO(_YELLOW_), _______, _______, _______, _______, _______, _______, _______, TO(0), _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______,
- RESET, _______, _______, KC_LEAD, _______, _______, KC_MPLY, KC_VOLD, KC_MUTE
+ QK_BOOT, _______, _______, KC_LEAD, _______, _______, KC_MPLY, KC_VOLD, KC_MUTE
),
diff --git a/keyboards/kprepublic/bm68hsrgb/rev1/config.h b/keyboards/kprepublic/bm68hsrgb/rev1/config.h
index 636ff1c785..9b9d534c42 100644
--- a/keyboards/kprepublic/bm68hsrgb/rev1/config.h
+++ b/keyboards/kprepublic/bm68hsrgb/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 //KP
-#define PRODUCT_ID 0xEF6F
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KPRepublic
-#define PRODUCT BM68HSRGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -46,7 +39,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
B3, \
E6 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kprepublic/bm68hsrgb/rev1/info.json b/keyboards/kprepublic/bm68hsrgb/rev1/info.json
index 0a72da6e98..c89d5262ba 100644
--- a/keyboards/kprepublic/bm68hsrgb/rev1/info.json
+++ b/keyboards/kprepublic/bm68hsrgb/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "BM68HSRGB",
+ "keyboard_name": "BM68HSRGB Rev1",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "peepeetee",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0xEF6F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/default/keymap.c b/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/default/keymap.c
index 878967718f..feea65f84c 100644
--- a/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/default/keymap.c
+++ b/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/default/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h b/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h
index 0748f83cdc..3ddb813486 100644
--- a/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h
+++ b/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/config.h
@@ -35,7 +35,6 @@
// #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
diff --git a/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/keymap.c b/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/keymap.c
index 934463b11f..bf842b138b 100644
--- a/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/keymap.c
+++ b/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/peepeetee/keymap.c
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DELETE,
RGB_MOD, RGB_HUI, RGB_VAI, RGB_SAI, RGB_SPI, _______, KC_KP_7, KC_KP_8, KC_KP_9, _______, _______, _______, _______, _______, KC_PGUP,
RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD, RGB_SPD, _______, KC_KP_4, KC_KP_5, KC_KP_6, _______, _______, _______, _______, KC_PGDOWN,
- BL_TOGG, _______, _______, _______, _______, RESET, KC_KP_1, KC_KP_2, KC_KP_3, _______, _______, _______, KC_AUDIO_VOL_UP, KC_END,
+ BL_TOGG, _______, _______, _______, _______, QK_BOOT, KC_KP_1, KC_KP_2, KC_KP_3, _______, _______, _______, KC_AUDIO_VOL_UP, KC_END,
_______, _______, _______, _______, _______, _______, _______, KC_BRIGHTNESS_DOWN, KC_AUDIO_VOL_DOWN, KC_BRIGHTNESS_UP
),
diff --git a/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/via/keymap.c b/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/via/keymap.c
index 453853fc63..09df21f267 100644
--- a/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/via/keymap.c
+++ b/keyboards/kprepublic/bm68hsrgb/rev1/keymaps/via/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[2] = LAYOUT_65_ansi(
diff --git a/keyboards/kprepublic/bm68hsrgb/rev2/config.h b/keyboards/kprepublic/bm68hsrgb/rev2/config.h
index 900aa699cb..86fbb7ae3b 100644
--- a/keyboards/kprepublic/bm68hsrgb/rev2/config.h
+++ b/keyboards/kprepublic/bm68hsrgb/rev2/config.h
@@ -18,19 +18,11 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50
-#define PRODUCT_ID 0x1131
-#define DEVICE_VER 0x0002
-#define MANUFACTURER KP republic
-#define PRODUCT bm68v2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { D6, D4, D5, D3, F6 }
#define MATRIX_COL_PINS { F0, F1, B0, B1, B2, B3, E6, B7, D2, D7, B4, B5, B6, C6, C7}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/kprepublic/bm68hsrgb/rev2/info.json b/keyboards/kprepublic/bm68hsrgb/rev2/info.json
index 23a4d4d38f..4239947cdb 100644
--- a/keyboards/kprepublic/bm68hsrgb/rev2/info.json
+++ b/keyboards/kprepublic/bm68hsrgb/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "bm68hsrgb/rev2",
+ "keyboard_name": "BM68HSRGB Rev2",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "bdtc123",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x1131",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/kprepublic/bm80hsrgb/config.h b/keyboards/kprepublic/bm80hsrgb/config.h
index 7adc89720d..049aca9b8a 100644
--- a/keyboards/kprepublic/bm80hsrgb/config.h
+++ b/keyboards/kprepublic/bm80hsrgb/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50 //KP
-#define PRODUCT_ID 0xEF83
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KPRepublic
-#define PRODUCT BM80HSRGB
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B3, B2, B1, B0, C6, C7 }
#define MATRIX_COL_PINS { F0, F1, F4, D7, D6, D4, D5, D3, D2, F5, F6, F7, D1, D0, B4, B5, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kprepublic/bm80hsrgb/info.json b/keyboards/kprepublic/bm80hsrgb/info.json
index f46024a93f..d05e4c5c34 100644
--- a/keyboards/kprepublic/bm80hsrgb/info.json
+++ b/keyboards/kprepublic/bm80hsrgb/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "BM80HSRGB",
+ "manufacturer": "KPRepublic",
"url": "",
"maintainer": "peepeetee",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0xEF83",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/kprepublic/bm80hsrgb/keymaps/default/keymap.c b/keyboards/kprepublic/bm80hsrgb/keymaps/default/keymap.c
index 0f0467060b..e84b2b5d53 100644
--- a/keyboards/kprepublic/bm80hsrgb/keymaps/default/keymap.c
+++ b/keyboards/kprepublic/bm80hsrgb/keymaps/default/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h b/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h
index b322afae9b..97cae26cbd 100644
--- a/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h
+++ b/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/config.h
@@ -22,7 +22,6 @@
// #define TERMINAL_HELP
#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 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 // Enables handling for per key TAPPING_TERM settings
diff --git a/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/keymap.c b/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/keymap.c
index d4a188089b..38024a0911 100644
--- a/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/keymap.c
+++ b/keyboards/kprepublic/bm80hsrgb/keymaps/peepeetee/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_MOD, RGB_HUI, RGB_VAI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, KC_AUDIO_VOL_UP,
+ _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, KC_AUDIO_VOL_UP,
_______, _______, _______, _______, _______, _______, _______, _______, KC_BRIGHTNESS_DOWN, KC_AUDIO_VOL_DOWN, KC_BRIGHTNESS_UP
)
diff --git a/keyboards/kprepublic/bm80hsrgb/keymaps/via/keymap.c b/keyboards/kprepublic/bm80hsrgb/keymaps/via/keymap.c
index 824f671ece..40354e785b 100644
--- a/keyboards/kprepublic/bm80hsrgb/keymaps/via/keymap.c
+++ b/keyboards/kprepublic/bm80hsrgb/keymaps/via/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/kprepublic/bm80v2/bm80v2.c b/keyboards/kprepublic/bm80v2/bm80v2.c
new file mode 100644
index 0000000000..4b8e5af13f
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2/bm80v2.c
@@ -0,0 +1,149 @@
+/* Copyright 2022 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 "bm80v2.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
+ {0, CS6_SW1, CS5_SW1, CS4_SW1},
+ {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_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},
+ {0, CS21_SW7, CS20_SW7, CS19_SW7},
+ {0, CS21_SW8, CS20_SW8, CS19_SW8},
+
+
+ {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_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,CS24_SW7, CS23_SW7, CS22_SW7},
+ {0,CS24_SW8, CS23_SW8, CS22_SW8},
+
+ {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, CS27_SW7, CS26_SW7, CS25_SW7},
+ {0, CS27_SW8, CS26_SW8, CS25_SW8},
+
+ {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, 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, CS18_SW1, CS17_SW1, CS16_SW1},
+ {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, 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, CS33_SW7, CS32_SW7, CS31_SW7},
+
+ {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, CS36_SW2, CS35_SW2, CS34_SW2},
+ {0, CS36_SW3, CS35_SW3, CS34_SW3},
+ {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}
+
+};
+led_config_t g_led_config = { {
+ { 0, NO_LED, 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, NO_LED, NO_LED, NO_LED, NO_LED },
+ { 63, NO_LED, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, NO_LED, NO_LED, 75, NO_LED },
+ { 76, 77, 78, NO_LED,NO_LED, 79, NO_LED, NO_LED, NO_LED, NO_LED, 80, 81, 82, 83, 84, 85, 86 }
+},
+{
+ { 7, 5 }, { 31, 5 }, { 43, 5 }, { 55, 5 }, { 67, 5 }, { 85, 5 }, { 97, 5 }, { 109, 5 }, { 121, 5 }, { 139, 5 }, { 151, 5 }, { 163, 5 }, { 175, 5 }, { 193, 5 }, { 205, 5 }, { 217, 5 },
+ { 7, 20 }, { 19, 20 }, { 31, 20 }, { 43, 20 }, { 55, 20 }, { 67, 20 }, { 79, 20 }, { 91, 20 }, { 103, 20 }, { 115, 20 }, { 127, 20 }, { 139, 20 }, { 151, 20 }, { 169, 20 }, { 193, 20 }, { 205, 20 }, { 217, 20 },
+ { 10, 30 }, { 25, 30 }, { 37, 30 }, { 49, 30 }, { 61, 30 }, { 73, 30 }, { 85, 30 }, { 97, 30 }, { 109, 30 }, { 121, 30 }, { 133, 30 }, { 145, 30 }, { 157, 30 }, { 172, 30 }, { 193, 30 }, { 205, 30 }, { 217, 30 },
+ { 11, 39 }, { 28, 39 }, { 40, 39 }, { 52, 39 }, { 64, 39 }, { 76, 39 }, { 88, 39 }, { 100, 39 }, { 112, 39 }, { 124, 39 }, { 136, 39 }, { 148, 39 }, { 168, 39 },
+ { 17, 49 }, { 34, 49 }, { 46, 49 }, { 58, 49 }, { 70, 49 }, { 82, 49 }, { 94, 49 }, { 106, 49 }, { 118, 49 }, { 130, 49 }, { 142, 49 }, { 165, 49 }, { 205, 49 },
+ { 8, 59 }, { 23, 59 }, { 38, 59 }, { 83, 59 }, { 129, 59 }, { 144, 59 }, { 159, 59 }, { 174, 59 }, { 193, 59 }, { 205, 59 }, { 217, 59 }
+},
+{ 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 1, 1, 1,
+ 4, 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, 4, 1, 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, 1, 1,
+ 1, 1, 1, 4, 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(50, 0xFF, 0xFF, 0xFF);
+ }
+}
+#endif
+
diff --git a/keyboards/kprepublic/bm80v2/bm80v2.h b/keyboards/kprepublic/bm80v2/bm80v2.h
new file mode 100644
index 0000000000..ee1418f9cf
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2/bm80v2.h
@@ -0,0 +1,34 @@
+/* Copyright 2022 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_tkl_ansi( \
+ K0_0, K0_2, K0_3, K0_4, K0_5, K0_6,K0_7, K0_8, K0_9, K0_A, K0_B, K0_C, K0_D, K0_E, K0_F, K0_10, \
+ K1_0, K1_1, K1_2, K1_3, K1_4, K1_5, K1_6, K1_7, K1_8, K1_9, K1_A, K1_B, K1_C, K1_D, K1_E, K1_F, K1_10, \
+ K2_0, K2_1, K2_2, K2_3, K2_4, K2_5, K2_6, K2_7, K2_8, K2_9, K2_A, K2_B, K2_C, K2_D, K2_E, K2_F, K2_10, \
+ K3_0, K3_1, K3_2, K3_3, K3_4, K3_5, K3_6, K3_7, K3_8, K3_9, K3_A, K3_B, K3_C, \
+ K4_0, K4_2, K4_3, K4_4, K4_5, K4_6, K4_7, K4_8, K4_9, K4_A, K4_B, K4_C, K4_F, \
+ K5_0, K5_1, K5_2, K5_5, K5_A, K5_B, K5_C, K5_D, K5_E, K5_F, K5_10 \
+) { \
+ { K0_0, KC_NO, K0_2, K0_3, K0_4, K0_5, K0_6, K0_7, K0_8, K0_9, K0_A, K0_B, K0_C, K0_D, K0_E, K0_F, K0_10 }, \
+ { K1_0, K1_1, K1_2, K1_3, K1_4, K1_5, K1_6, K1_7, K1_8, K1_9, K1_A, K1_B, K1_C, K1_D, K1_E, K1_F, K1_10 }, \
+ { K2_0, K2_1, K2_2, K2_3, K2_4, K2_5, K2_6, K2_7, K2_8, K2_9, K2_A, K2_B, K2_C, K2_D, K2_E, K2_F, K2_10 }, \
+ { K3_0, K3_1, K3_2, K3_3, K3_4, K3_5, K3_6, K3_7, K3_8, K3_9, K3_A, K3_B, K3_C, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { K4_0, KC_NO, K4_2, K4_3, K4_4, K4_5, K4_6, K4_7, K4_8, K4_9, K4_A, K4_B, K4_C, KC_NO, KC_NO, K4_F, KC_NO }, \
+ { K5_0, K5_1, K5_2, KC_NO, KC_NO, K5_5, KC_NO, KC_NO, KC_NO, KC_NO, K5_A, K5_B, K5_C, K5_D, K5_E, K5_F, K5_10 } \
+}
+
diff --git a/keyboards/kprepublic/bm80v2/config.h b/keyboards/kprepublic/bm80v2/config.h
new file mode 100644
index 0000000000..f04ec1d960
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2/config.h
@@ -0,0 +1,75 @@
+/* Copyright 2022 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+#define MATRIX_ROW_PINS { C7, C6, B6, F5, F7, F6 }
+#define MATRIX_COL_PINS { E6, F0, F1, F4, D7, D6, B7, B1, B0, B2, B3, D3, D5, D4, D2, B4, B5 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION ROW2COL
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
+#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_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_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+// 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_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_ADDR_1 0b0110000
+#define DRIVER_COUNT 1
+#define DRIVER_1_LED_TOTAL 87
+#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180
diff --git a/keyboards/kprepublic/bm80v2/info.json b/keyboards/kprepublic/bm80v2/info.json
new file mode 100644
index 0000000000..38999bf96c
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2/info.json
@@ -0,0 +1,109 @@
+{
+ "keyboard_name": "BM80v2",
+ "manufacturer": "KPrepublic",
+ "url": "",
+ "maintainer": "edwardslau",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x1141",
+ "device_version": "0.0.2"
+ },
+ "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":"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":"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":"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":"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":"GUI", "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/kprepublic/bm80v2/keymaps/default/keymap.c b/keyboards/kprepublic/bm80v2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..11cf4e1137
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2/keymaps/default/keymap.c
@@ -0,0 +1,43 @@
+// Copyright 2021 Yizhen Liu (@edwardslau)
+// SPDX-License-Identifier: GPL-2.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, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_tkl_ansi(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_tkl_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_tkl_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
diff --git a/keyboards/kprepublic/bm80v2/keymaps/via/keymap.c b/keyboards/kprepublic/bm80v2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..11cf4e1137
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2/keymaps/via/keymap.c
@@ -0,0 +1,43 @@
+// Copyright 2021 Yizhen Liu (@edwardslau)
+// SPDX-License-Identifier: GPL-2.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, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_tkl_ansi(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_tkl_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_tkl_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
diff --git a/keyboards/kprepublic/bm80v2/keymaps/via/rules.mk b/keyboards/kprepublic/bm80v2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kprepublic/bm80v2/readme.md b/keyboards/kprepublic/bm80v2/readme.md
new file mode 100644
index 0000000000..72ff25909f
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2/readme.md
@@ -0,0 +1,20 @@
+# bm80v2
+
+A 80% hotswap inswitch RGB keyboard.
+
+* Keyboard Maintainer: [edwardslau](https://github.com/edwardslau)
+* Hardware Supported: BM80V2
+* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm80rgb-bm80-rgb-80-hot-swappable-custom-mechanical-keyboard-pcb-programmed-qmk-via-firmware-full-rgb-switch-underglow-type-c?_pos=7&_sid=767c48383&_ss=r)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kprepublic bm80v2:default
+
+Flashing example for this keyboard:
+
+ make kprepublic bm80v2:default:flash
+
+## Bootloader
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+
+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/bm80v2/rules.mk b/keyboards/kprepublic/bm80v2/rules.mk
new file mode 100644
index 0000000000..1632311563
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2/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 Light
+MOUSEKEY_ENABLE = no # 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 = IS31FL3741
+LTO_ENABLE = yes
+LAYOUTS = tkl_ansi
diff --git a/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.c b/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.c
new file mode 100644
index 0000000000..90d476aa2c
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.c
@@ -0,0 +1,150 @@
+/* Copyright 2022 edwardslau *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "bm80v2_iso.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
+ {0, CS6_SW1, CS5_SW1, CS4_SW1},
+ {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_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},
+ {0, CS21_SW7, CS20_SW7, CS19_SW7},
+ {0, CS21_SW8, CS20_SW8, CS19_SW8},
+
+
+ {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_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,CS24_SW7, CS23_SW7, CS22_SW7},
+ {0,CS24_SW8, CS23_SW8, CS22_SW8},
+
+ {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, CS27_SW7, CS26_SW7, CS25_SW7},
+ {0, CS27_SW8, CS26_SW8, CS25_SW8},
+
+ {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, 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, 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, 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, CS33_SW7, CS32_SW7, CS31_SW7},
+
+ {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, CS36_SW2, CS35_SW2, CS34_SW2},
+ {0, CS36_SW3, CS35_SW3, CS34_SW3},
+ {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}
+
+};
+led_config_t g_led_config = { {
+ { 0, NO_LED, 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, NO_LED, NO_LED, NO_LED, NO_LED },
+ { 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, NO_LED, NO_LED, 76, NO_LED },
+ { 77, 78, 79, NO_LED,NO_LED, 80, NO_LED, NO_LED, NO_LED, NO_LED, 81, 82, 83, 84, 85, 86, 87 }
+},
+{
+ { 7, 5 }, { 31, 5 }, { 43, 5 }, { 55, 5 }, { 67, 5 }, { 85, 5 }, { 97, 5 }, { 109, 5 }, { 121, 5 }, { 139, 5 }, { 151, 5 }, { 163, 5 }, { 175, 5 }, { 193, 5 }, { 205, 5 }, { 217, 5 },
+ { 7, 20 }, { 19, 20 }, { 31, 20 }, { 43, 20 }, { 55, 20 }, { 67, 20 }, { 79, 20 }, { 91, 20 }, { 103, 20 }, { 115, 20 }, { 127, 20 }, { 139, 20 }, { 151, 20 }, { 169, 20 }, { 193, 20 }, { 205, 20 }, { 217, 20 },
+ { 10, 30 }, { 25, 30 }, { 37, 30 }, { 49, 30 }, { 61, 30 }, { 73, 30 }, { 85, 30 }, { 97, 30 }, { 109, 30 }, { 121, 30 }, { 133, 30 }, { 145, 30 }, { 157, 30 }, { 175, 35 }, { 193, 30 }, { 205, 30 }, { 217, 30 },
+ { 11, 39 }, { 28, 39 }, { 40, 39 }, { 52, 39 }, { 64, 39 }, { 76, 39 }, { 88, 39 }, { 100, 39 }, { 112, 39 }, { 124, 39 }, { 136, 39 }, { 148, 39 }, { 168, 39 },
+ { 8, 49 }, { 22, 49 }, { 34, 49 }, { 46, 49 }, { 58, 49 }, { 70, 49 }, { 82, 49 }, { 94, 49 }, { 106, 49 }, { 118, 49 }, { 130, 49 }, { 142, 49 }, { 165, 49 }, { 205, 49 },
+ { 8, 59 }, { 23, 59 }, { 38, 59 }, { 83, 59 }, { 129, 59 }, { 144, 59 }, { 159, 59 }, { 174, 59 }, { 193, 59 }, { 205, 59 }, { 217, 59 }
+},
+{ 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 1, 1, 1,
+ 4, 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, 4, 1, 1, 1,
+ 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
+ 1, 1, 1, 4, 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(50, 0xFF, 0xFF, 0xFF);
+ }
+}
+#endif
+
diff --git a/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.h b/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.h
new file mode 100644
index 0000000000..cee54e83e8
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2_iso/bm80v2_iso.h
@@ -0,0 +1,36 @@
+/* Copyright 2022 edwardslau *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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_tkl_iso( \
+ 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, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K2D, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \
+ K50, K51, K52, K55, K5A, K5B, K5C, K5D, K5E, K5F, K5G \
+) { \
+ { 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, ___, ___, ___, ___ }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, ___, ___, K4F, ___ }, \
+ { K50, K51, K52, ___, ___, K55, ___, ___, ___, ___, K5A, K5B, K5C, K5D, K5E, K5F, K5G } \
+}
+
diff --git a/keyboards/kprepublic/bm80v2_iso/config.h b/keyboards/kprepublic/bm80v2_iso/config.h
new file mode 100644
index 0000000000..aee11c42c9
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2_iso/config.h
@@ -0,0 +1,76 @@
+/* Copyright 2022 edwardslau *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 6
+#define MATRIX_COLS 17
+#define MATRIX_ROW_PINS { C7, C6, B6, F5, F7, F6 }
+#define MATRIX_COL_PINS { E6, F0, F1, F4, D7, D6, B7, B1, B0, B2, B3, D3, D5, D4, D2, 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 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_STARTUP_MODE RGB_MATRIX_CYCLE_ALL
+#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_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_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+// 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_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_ADDR_1 0b0110000
+#define DRIVER_COUNT 1
+#define DRIVER_1_LED_TOTAL 88
+#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
+
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180
diff --git a/keyboards/kprepublic/bm80v2_iso/info.json b/keyboards/kprepublic/bm80v2_iso/info.json
new file mode 100644
index 0000000000..71741c126b
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2_iso/info.json
@@ -0,0 +1,110 @@
+{
+ "keyboard_name": "BM80v2 ISO",
+ "manufacturer": "KPrepublic",
+ "url": "",
+ "maintainer": "edwardslau",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x1142",
+ "device_version": "0.0.2"
+ },
+ "layouts": {
+ "LAYOUT_tkl_iso": {
+ "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":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":2.5, "w":1.25, "h":2},
+
+ {"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}
+ ]
+ }
+ }
+}
diff --git a/keyboards/kprepublic/bm80v2_iso/keymaps/default/keymap.c b/keyboards/kprepublic/bm80v2_iso/keymaps/default/keymap.c
new file mode 100644
index 0000000000..5e6f21f0d4
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2_iso/keymaps/default/keymap.c
@@ -0,0 +1,43 @@
+// Copyright 2021 Yizhen Liu (@edwardslau)
+// SPDX-License-Identifier: GPL-2.0
+#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,
+ 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_iso(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_tkl_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_tkl_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
diff --git a/keyboards/kprepublic/bm80v2_iso/keymaps/via/keymap.c b/keyboards/kprepublic/bm80v2_iso/keymaps/via/keymap.c
new file mode 100644
index 0000000000..5e6f21f0d4
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2_iso/keymaps/via/keymap.c
@@ -0,0 +1,43 @@
+// Copyright 2021 Yizhen Liu (@edwardslau)
+// SPDX-License-Identifier: GPL-2.0
+#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,
+ 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_iso(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT_tkl_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT_tkl_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
diff --git a/keyboards/kprepublic/bm80v2_iso/keymaps/via/rules.mk b/keyboards/kprepublic/bm80v2_iso/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2_iso/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/kprepublic/bm80v2_iso/readme.md b/keyboards/kprepublic/bm80v2_iso/readme.md
new file mode 100644
index 0000000000..bb5d8e3728
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2_iso/readme.md
@@ -0,0 +1,21 @@
+# bm80v2_iso
+
+A 80% ISO hotswap inswitch RGB keyboard.
+
+* Keyboard Maintainer: [edwardslau](https://github.com/edwardslau)
+* Hardware Supported: BM80V2_ISO
+* Hardware Availability: [KP Republic](https://kprepublic.com/products/bm80-iso-bm80rgb-80-rgb-hot-swappable-custom-mechanical-keyboard-pcb-programmed-rgb-switch-underglow-type-c-qmk-via?_pos=9&_sid=b43edd6ac&_ss=r)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make kprepublic/bm80v2_iso:default
+
+Flashing example for this keyboard:
+
+ make kprepublic/bm80v2_iso:default:flash
+
+## Bootloader
+
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+
+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/bm80v2_iso/rules.mk b/keyboards/kprepublic/bm80v2_iso/rules.mk
new file mode 100644
index 0000000000..e726773958
--- /dev/null
+++ b/keyboards/kprepublic/bm80v2_iso/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 = no # 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 = IS31FL3741
+
+LTO_ENABLE = yes
+
+LAYOUTS = tkl_iso
diff --git a/keyboards/kprepublic/bm980hsrgb/config.h b/keyboards/kprepublic/bm980hsrgb/config.h
index 01266e652c..af7e3f3be3 100644
--- a/keyboards/kprepublic/bm980hsrgb/config.h
+++ b/keyboards/kprepublic/bm980hsrgb/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/kprepublic/bm980hsrgb/info.json b/keyboards/kprepublic/bm980hsrgb/info.json
index 459b98a089..ba8173c6c8 100644
--- a/keyboards/kprepublic/bm980hsrgb/info.json
+++ b/keyboards/kprepublic/bm980hsrgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "BM980",
+ "keyboard_name": "BM980 Hotswap RGB",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0xEF61",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kprepublic/bm980hsrgb/keymaps/peepeetee/keymap.c b/keyboards/kprepublic/bm980hsrgb/keymaps/peepeetee/keymap.c
index 9d6c64b33f..80deedc7b5 100644
--- a/keyboards/kprepublic/bm980hsrgb/keymaps/peepeetee/keymap.c
+++ b/keyboards/kprepublic/bm980hsrgb/keymaps/peepeetee/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_MOD, RGB_HUI, RGB_VAI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_HUD, RGB_VAD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/kprepublic/cospad/config.h b/keyboards/kprepublic/cospad/config.h
index bc53ef6206..895cc57a0d 100644
--- a/keyboards/kprepublic/cospad/config.h
+++ b/keyboards/kprepublic/cospad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B5C // "KP"
-#define PRODUCT_ID 0xB1E5
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KPrepublic
-#define PRODUCT Cospad
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D4, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kprepublic/cospad/info.json b/keyboards/kprepublic/cospad/info.json
index bba19a4379..3009e986fa 100644
--- a/keyboards/kprepublic/cospad/info.json
+++ b/keyboards/kprepublic/cospad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Cospad",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B5C",
+ "pid": "0xB1E5",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_6x4": {
"layout": [
diff --git a/keyboards/kprepublic/cospad/keymaps/detrus/keymap.c b/keyboards/kprepublic/cospad/keymaps/detrus/keymap.c
index af56305e5c..77c6ea8424 100644
--- a/keyboards/kprepublic/cospad/keymaps/detrus/keymap.c
+++ b/keyboards/kprepublic/cospad/keymaps/detrus/keymap.c
@@ -266,12 +266,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RGB_SAD, BL_ON, COLEMAK, \
RGB_SAI, RGB_TOG, DVORAK, _______, \
RGB_HUD, RGB_MOD, KC_VOLD, _______, \
- RGB_HUI, RGB_RMOD, KC_VOLU, RESET),
+ RGB_HUI, RGB_RMOD, KC_VOLU, QK_BOOT),
};
// Makes sure to update the good tri-layer if a layer changes
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(default_layer_state)) {
+ switch (get_highest_layer(default_layer_state)) {
case _QWERTY_LAYER:
state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTY_LOWER_LAYER, _ALTER_LAYER);
break;
@@ -289,8 +289,8 @@ layer_state_t layer_state_set_user(layer_state_t state) {
}
// Makes the tri-layer
-uint32_t default_layer_state_set_kb(uint32_t state) {
- switch (biton32(state)) {
+layer_state_t default_layer_state_set_kb(layer_state_t state) {
+ switch (get_highest_layer(state)) {
case _QWERTY_LAYER:
state = update_tri_layer_state(state, _RAISE_LAYER, _QWERTZ_LOWER_LAYER, _ALTER_LAYER);
state = update_tri_layer_state(state, _RAISE_LAYER, _COLEMA_LOWER_LAYER, _ALTER_LAYER);
diff --git a/keyboards/kprepublic/cospad/keymaps/split_plus_and_zero/keymap.c b/keyboards/kprepublic/cospad/keymaps/split_plus_and_zero/keymap.c
index dd2ff00cd1..d780a583e1 100644
--- a/keyboards/kprepublic/cospad/keymaps/split_plus_and_zero/keymap.c
+++ b/keyboards/kprepublic/cospad/keymaps/split_plus_and_zero/keymap.c
@@ -76,6 +76,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RGB_HUD, RGB_HUI, BL_ON, _______,
RGB_SAD, RGB_SAI, BL_OFF, _______,
RGB_VAD, RGB_VAI, BL_STEP,
- _______, _______, RESET, _______
+ _______, _______, QK_BOOT, _______
)
};
diff --git a/keyboards/kprepublic/cospad/keymaps/split_zero/keymap.c b/keyboards/kprepublic/cospad/keymaps/split_zero/keymap.c
index 3a0c7d6e4e..cd64e0c9ec 100644
--- a/keyboards/kprepublic/cospad/keymaps/split_zero/keymap.c
+++ b/keyboards/kprepublic/cospad/keymaps/split_zero/keymap.c
@@ -76,6 +76,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RGB_HUD, RGB_HUI, BL_ON,
RGB_SAD, RGB_SAI, BL_OFF, _______,
RGB_VAD, RGB_VAI, BL_STEP,
- _______, _______, RESET, _______
+ _______, _______, QK_BOOT, _______
)
};
diff --git a/keyboards/kprepublic/jj40/config.h b/keyboards/kprepublic/jj40/config.h
index c42b247d1a..d24ab5c5ff 100644
--- a/keyboards/kprepublic/jj40/config.h
+++ b/keyboards/kprepublic/jj40/config.h
@@ -16,12 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x4B50 // "KP"
-#define PRODUCT_ID 0x0040
-#define DEVICE_VER 0x0200
-#define MANUFACTURER KPrepublic
-#define PRODUCT JJ40
-
/* matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/kprepublic/jj40/info.json b/keyboards/kprepublic/jj40/info.json
index 4b7c527ba9..a248f0cee7 100644
--- a/keyboards/kprepublic/jj40/info.json
+++ b/keyboards/kprepublic/jj40/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "jj40",
+ "keyboard_name": "JJ40",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x0040",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT_planck_mit": {
"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, "w":2}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}]
diff --git a/keyboards/kprepublic/jj40/keymaps/brdlf/keymap.c b/keyboards/kprepublic/jj40/keymaps/brdlf/keymap.c
new file mode 100644
index 0000000000..625961ae23
--- /dev/null
+++ b/keyboards/kprepublic/jj40/keymaps/brdlf/keymap.c
@@ -0,0 +1,168 @@
+/* Copyright 2022 Abigail Fassl
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+#define FUN MO(_FUNC)
+#define MOUSE MO(_MOUSE)
+
+enum layers {
+ _QWERTY = 0,
+ _FUNC,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+ _MOUSE,
+ _NUMPAD
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Esc* | Q | W | E | R | T | Y | U | I | O | P | Ent |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Tab | A | S | D | F | G | H | J | K | L | ;: | ' |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shft | Z | X | C | V | B | N | M | ,< | .> | /? | Shft |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt | GUI | Func |Lower |Space | Bksp |Raise | DEL | Bksl | NUM | Ctrl |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_ortho_4x12(
+ LT(_NUMPAD, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_ENT ,
+ 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_LSHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT ,
+ KC_LCTL, KC_LALT, KC_LGUI, FUN, LOWER, KC_SPC, KC_BSPC, RAISE, KC_DEL, KC_BSLS, TG(_NUMPAD), KC_RCTL
+),
+
+/* Function
+ * ,-----------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | 1! | 2" | 3£ | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | ~ |INSERT|
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| | | _ | - | + | = | \| | [{ | ]} | |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ___ | ___ | ___ | ___ | ___ |Space | Bksp |Mouse | DEL | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_FUNC] = LAYOUT_ortho_4x12(
+ KC_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, LSFT(KC_GRV), KC_INSERT ,
+ KC_LSHIFT, KC_NO, KC_NO, LSFT(KC_MINS), KC_MINS, LSFT(KC_EQL), KC_EQL, KC_BSLS, KC_LBRC, KC_RBRC, KC_NO, KC_RSHIFT ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * | 1! | 2@ | 3# | 4$ | 5% | 6^ | 7& | 8* | 9( | 0) | DEL | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | ! | @ | # | $ | % | ^ | & | * | ( | ) |WrdDel|WrdBks|
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| PSCRN| | | \| | _ | - | + | = | |BL ON | BLSP |Shift |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | |Lower | | | ADJ | | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LOWER] = LAYOUT_ortho_4x12(
+ 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_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, LCTL(KC_DEL), LCTL(KC_BSPC) ,
+ KC_LSFT, KC_PSCR, S(KC_NUHS), KC_BSLS, LSFT(KC_MINS), KC_MINS, LSFT(KC_EQL), KC_EQL, _______, BL_ON, BL_STEP, KC_RSFT ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | \| | | [ | ] | | | PGUP | HOME |PGDOWN| |PRNTSC|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | _ | = | ( | ) | | | HOME | UP | END | |ZOOM +|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | ~ | - | + | { | } | | |< | LEFT | DOWN |RIGHT | >| |ZOOM -|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | ADJ | |CtrlBk|Raise |CtrlDl| | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RAISE] = LAYOUT_ortho_4x12(
+ KC_GRV, KC_BSLS, KC_NO, KC_LBRC, KC_RBRC, KC_NO, KC_NO, KC_PGUP, KC_HOME, KC_PGDOWN, KC_NO, KC_PSCREEN ,
+ LSFT(KC_BSLS), LSFT(KC_MINS), KC_EQL, LSFT(KC_9), LSFT(KC_0), KC_NO, KC_NO, KC_HOME, KC_UP, KC_END, KC_NO, LCTL(LSFT(KC_EQL)) ,
+ LSFT(KC_GRV), KC_MINS, LSFT(KC_EQL), LSFT(KC_LBRC), LSFT(KC_RBRC), KC_NO, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), LCTL(KC_MINS) ,
+ _______, _______, _______, _______, _______, KC_SPC, LCTL(KC_BSPC), _______, LCTL(KC_DEL), _______, _______, _______
+),
+
+/* Adjust (Lower + Raise)
+ * ,-----------------------------------------------------------------------------------.
+ * | Reset| | | BLON| BLOFF| | | | | | | Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | CAPS | RGB | MODE | VAD | VAI | | | Vol- | Vol+ | Play | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | HUD | HUI | SAD | SAI | | | Prev | Next | Mute | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_ortho_4x12(
+ QK_BOOT, KC_NO, KC_NO, BL_ON, BL_OFF, KC_NO, KC_NO, _______, _______, _______, _______, KC_DEL ,
+ KC_CAPS, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, KC_NO, KC_NO, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, _______ ,
+ KC_NO, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, KC_NO, KC_NO, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, KC_AUDIO_MUTE, _______, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Mouse
+ * ,-----------------------------------------------------------------------------------.
+ * | ESC | | | | | | WH_L | WH_UP| BTN3 | WH_D | WH_R | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | ACC0 | ACC1 | ACC2 | | | | | BTN1 | UP | BTN2 | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | ACC0 | ACC1 | ACC2 | | | | | LEFT | DOWN |RIGHT | | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_MOUSE] = LAYOUT_ortho_4x12(
+ KC_ESC , _______, _______, _______, _______, _______, KC_MS_WH_LEFT, KC_MS_WH_UP, KC_MS_BTN3, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, _______,
+ KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______,
+ KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Num Pad
+ * ,-----------------------------------------------------------------------------------.
+ * | ESC | | | | | |NMLOCK| 7 | 8 | 9 | / | |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | | | | | | | | 4 | 5 | 6 | * | |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | 1 | 2 | 3 | + | - |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | | | | | | | | 0 | . | , | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_NUMPAD] = LAYOUT_ortho_4x12(
+ _______, _______, _______, _______, _______, _______, KC_NLCK, KC_7, KC_8, KC_9, KC_KP_SLASH, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, KC_4, KC_5, KC_6, KC_KP_ASTERISK, _______ ,
+ _______, _______, _______, _______, _______, _______, _______, KC_1, KC_2, KC_3, KC_KP_PLUS, KC_KP_MINUS ,
+ _______, _______, _______, _______, _______, _______, _______, KC_0, KC_KP_DOT, KC_COMM, _______, _______
+)
+
+};
+
+layer_state_t layer_state_set_user (layer_state_t state) {
+ state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+ state = update_tri_layer_state(state, _FUNC, _RAISE, _MOUSE);
+ return state;
+} \ No newline at end of file
diff --git a/keyboards/kprepublic/jj40/keymaps/brdlf/readme.md b/keyboards/kprepublic/jj40/keymaps/brdlf/readme.md
new file mode 100644
index 0000000000..a08c0422c2
--- /dev/null
+++ b/keyboards/kprepublic/jj40/keymaps/brdlf/readme.md
@@ -0,0 +1,69 @@
+# BRDLF custom layout
+
+> This is my personal configuration for 4x12 ortho keyboard JJ40.
+
+## Layers
+
+### Default QWERTY
+
+| | | | | | | | | | | | |
+| :--------: | :-----: | :------: | :------: | :-------: | :----: | :------: | :------: | :----: | :----: | :----: | :-------: |
+| Esc<br>NUM | Q<br>q | W<br>w | E<br>e | R<br>r | T<br>t | Y<br>y | U<br>u | I<br>i | O<br>o | P<br>p | <br>Enter |
+| <br>Tab | A<br>a | S<br>s | D<br>d | F<br>f | G<br>g | H<br>h | J<br>j | K<br>k | L<br>l | :<br>; | "<br>' |
+| <br>Shift | Z<br>z | X<br>x | C<br>c | V<br>v | B<br>b | N<br>n | M<br>m | <<br>, | ><br>. | ?<br>/ | <br>Shift |
+| <br>Ctrl | <br>Alt | <br>GUI | <br>Func | <br>Lower | <br>Sp | <br>Bksp | <br>Raise| <br>Del| <br>\ |<br>NUM | <br>Ctrl |
+
+### Function
+
+| | | | | | | | | | | | |
+| :-------: | :-----: | :-----: | :---------: | :-------: | :-------: | :------: | :-------: | :-----: | :-----: | :------: | :------: |
+| <br>F1 | <br>F2 | <br>F3 | <br>F4 | <br>F5 | <br>F6 | <br>F7 | <br>F8 | <br>F9 | <br>F10 | <br>F11 | <br>F12 |
+| !<br>1 | @<br>2 | #<br>3 | \$<br>4 | %<br>5 | ^<br>6 | &<br>7 | \*<br>8 | (<br>9 | )<br>0 | <br>~ | <br>INS |
+| <br>Shift | | |<br>_ | <br>- | <br>+ | <br>= | |<br>\ | {<br>[ | }<br>] | | <br>Shft | |
+| <br>Ctrl | <br>Alt | <br>GUI | <br>**Fun** | <br>Lower | <br>Space | <br>Bksp | <br>Raise | <br>Del | \|<br>\ | <br>NUM | <br>Ctrl |
+
+
+### Lower
+
+| | | | | | | | | | | | |
+| :-------: | :----------: | :----: | :-----: | :-------: | :----: | :----: | :-----: | :----: | :-------: | :--------: | :--------: |
+| !<br>1 | @<br>2 | #<br>3 | $<br>4 | %<br>5 | ^<br>6 | &<br>7 | \*<br>8 | (<br>9 | )<br>0 | <br>Del | <br>Bksp |
+| <br>! | <br>@ | <br># | <br>\$ | <br>% | <br>^ | <br>& | <br>\* | <br>( | <br>) | Wrd<br>Del | Wrd<br>Bks |
+| <br>Shift | Prnt<br>Scrn | <br>\| | \|<br>\ | <br>\_ | <br>- | <br>+ | <br>= | | <br>BL_ON | <br>BLSP | <br>Shift |
+| | | | | **Lower** | Space | Bksp | | | Vol- | Vol+ | Play |
+
+### Raise
+
+| | | | | | | | | | | | |
+| :----: | :-----: | :---: | :---: | :--------: | :-: | :----------: | :-----------: | :---------: | :-------: | :----------: | :----------: |
+| <br>\` | \|<br>\ | | <br>[ | <br>] | | | <br>PgUp | <br>Home | <br>PgDn | | Prnt<br>Scrn |
+| <br>\| | <br>\_ | <br>= | <br>( | <br>) | | | <br>Home | <br>Up | <br>End | | <br>Zoom + |
+| <br>~ | <br>- | <br>+ | <br>{ | <br>} | | Prev<br>Word | <br>Left | <br>Down | <br>Right | Next<br>Word | <br>Zoom - |
+| | | | | <br>Adjust | | Word<br>Bksp | <br>**Raise** | Word<br>Del | | | |
+
+### Adjust
+
+| | | | | | | | | | | | |
+| :-------: | :---------: | :---------: | :---------: | :---------: | :----: | :-----: | :--------: | :--: | :--: | :-: | :-: |
+| Reset | | | BL_ON | BL_OFF | | | | | | | DEL |
+| <br>Caps | RGB<br>Togl | RGB<br>Mode | RGB<br>Brt- | RGB<br>Brt+ | | | Vol- | Vol+ | Play | | |
+| | <br>Hue- | RGB<br>Hue+ | RGB<br>Sat- | RGB<br>Sat+ | | | Prev | Next | Mute | | |
+| | | | | **Lower** | Space | Bksp | **Raise** | | | | |
+
+### Mouse
+
+| | | | | | | | | | | | |
+| :-----: | :----: | :----: | :----------: | :---: | :---: | :------------: | :-----------: | :-------------: | :------------: | :-------------: | :-: |
+| <br>ESC | | | | | | Scroll<br>Left | Scroll<br>up | Middle<br>Click | Scroll<br>Down | Scroll<br>Right | |
+| Speed0 | Speed1 | Speed2 | | | | | Left<br>Click | Mouse<br>Up | Right<br>Click | | |
+| Speed0 | Speed1 | Speed2 | | | | | Mouse<br>Left | Mouse<br>Down | Mouse<br>Right | | |
+| | | | **Function** | Lower | Space | Bksp | **Raise** | | | | |
+
+### Numpad
+
+| | | | | | | | | | | | |
+| :-: | :-: | :-: | :-: | :-: | :-: | :-----: | :-: | :-: | :-: | :-: | :-: |
+| ESC | | | | | | Numlock | 7 | 8 | 9 | / | |
+| | | | | | | | 4 | 5 | 6 | * | |
+| | | | | | | | 1 | 2 | 3 | + | - |
+| | | | | | | | 0 | . | , | | | \ No newline at end of file
diff --git a/keyboards/kprepublic/jj40/keymaps/brdlf/rules.mk b/keyboards/kprepublic/jj40/keymaps/brdlf/rules.mk
new file mode 100644
index 0000000000..6c605daecf
--- /dev/null
+++ b/keyboards/kprepublic/jj40/keymaps/brdlf/rules.mk
@@ -0,0 +1 @@
+MOUSEKEY_ENABLE = yes
diff --git a/keyboards/kprepublic/jj40/keymaps/oscillope/keymap.c b/keyboards/kprepublic/jj40/keymaps/oscillope/keymap.c
index 1a42261940..0d8adbffbc 100644
--- a/keyboards/kprepublic/jj40/keymaps/oscillope/keymap.c
+++ b/keyboards/kprepublic/jj40/keymaps/oscillope/keymap.c
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Ins | | | () | [] | {} | Home | PgDn | PgUp | End | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * |RESET | Back | Fwd | | | | | | Mute | Vol- | Vol+ | |
+ * |QK_BOOT | Back | Fwd | | | | | | Mute | Vol- | Vol+ | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | Lock | | | Prev | Stop | Play | Next |
* `-----------------------------------------------------------------------------------'
@@ -67,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT_planck_1x2uR( \
KC_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, _______, _______, CC_PRN, CC_BRC, CC_CBR, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, \
- RESET, KC_WBAK, KC_WFWD, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, \
+ QK_BOOT, KC_WBAK, KC_WFWD, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, \
_______, _______, _______, _______, KC_LOCK, _______, _______, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT \
),
diff --git a/keyboards/kprepublic/jj40/keymaps/stevexyz/config.h b/keyboards/kprepublic/jj40/keymaps/stevexyz/config.h
index 84c02dddd6..a4d3d37561 100644
--- a/keyboards/kprepublic/jj40/keymaps/stevexyz/config.h
+++ b/keyboards/kprepublic/jj40/keymaps/stevexyz/config.h
@@ -34,8 +34,6 @@
// how long before oneshot times out
#define ONESHOT_TAP_TOGGLE 2
// how many taps before oneshot toggle is triggered
- #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 COMBO_COUNT 2
// Set this to the number of combos that you're using in the Combo feature.
#define COMBO_TERM 200
diff --git a/keyboards/kprepublic/jj40/keymaps/waples/keymap.c b/keyboards/kprepublic/jj40/keymaps/waples/keymap.c
index 1c8d58f792..ae35e5925a 100644
--- a/keyboards/kprepublic/jj40/keymaps/waples/keymap.c
+++ b/keyboards/kprepublic/jj40/keymaps/waples/keymap.c
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_DUAL] = LAYOUT_ortho_4x12( \
- RESET, _______, _______, _______, _______, QWERTY, DVORAK, _______, _______, RGB_HUD, RGB_TOG, RESET, \
+ QK_BOOT, _______, _______, _______, _______, QWERTY, DVORAK, _______, _______, RGB_HUD, RGB_TOG, QK_BOOT, \
_______, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, AG_NORM, AG_SWAP, _______, _______, RGB_HUI, RGB_MOD, _______, \
_______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, TG_NKRO, _______, _______, RGB_SAD, RGB_VAD, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, RGB_VAI, _______ \
diff --git a/keyboards/kprepublic/jj4x4/config.h b/keyboards/kprepublic/jj4x4/config.h
index f97dd7f1cb..d9691245a7 100644
--- a/keyboards/kprepublic/jj4x4/config.h
+++ b/keyboards/kprepublic/jj4x4/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x4B50 // "KP"
-#define PRODUCT_ID 0x0044 // 4x4
-#define DEVICE_VER 0x0200
-#define MANUFACTURER KPrepublic
-#define PRODUCT JJ4x4
-
/* matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
diff --git a/keyboards/kprepublic/jj4x4/info.json b/keyboards/kprepublic/jj4x4/info.json
index 9d07e297fc..d9b831d2a3 100644
--- a/keyboards/kprepublic/jj4x4/info.json
+++ b/keyboards/kprepublic/jj4x4/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "JJ4x4",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x0044",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT_ortho_4x4": {
"layout": [
diff --git a/keyboards/kprepublic/jj50/config.h b/keyboards/kprepublic/jj50/config.h
index 9c2d6e2417..70ecf2f20c 100644
--- a/keyboards/kprepublic/jj50/config.h
+++ b/keyboards/kprepublic/jj50/config.h
@@ -22,12 +22,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x4B50 // "KP"
-#define PRODUCT_ID 0x0050
-#define DEVICE_VER 0x0200
-#define MANUFACTURER KPrepublic
-#define PRODUCT JJ50
-
/* matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
diff --git a/keyboards/kprepublic/jj50/info.json b/keyboards/kprepublic/jj50/info.json
index 5d84efe246..40c00718f2 100644
--- a/keyboards/kprepublic/jj50/info.json
+++ b/keyboards/kprepublic/jj50/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "JJ50",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x0050",
+ "device_version": "2.0.0"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_ortho_5x12"
},
diff --git a/keyboards/kprepublic/jj50/keymaps/abstractkb/keymap.c b/keyboards/kprepublic/jj50/keymaps/abstractkb/keymap.c
index e257649369..603bce7798 100644
--- a/keyboards/kprepublic/jj50/keymaps/abstractkb/keymap.c
+++ b/keyboards/kprepublic/jj50/keymaps/abstractkb/keymap.c
@@ -42,7 +42,7 @@ void keyboard_post_init_user(void) {
}
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _RAISE:
rgblight_sethsv_noeeprom(170,255,255);
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
@@ -126,7 +126,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
diff --git a/keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/keymap.c b/keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/keymap.c
index baedbb4dd2..7ea34220b3 100644
--- a/keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/keymap.c
+++ b/keyboards/kprepublic/jj50/keymaps/abstractkb_gergomatch/keymap.c
@@ -42,7 +42,7 @@ void keyboard_post_init_user(void) {
}
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _FUNC:
rgblight_sethsv_noeeprom(170,255,255);
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
@@ -126,7 +126,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_META] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
diff --git a/keyboards/kprepublic/jj50/keymaps/archetype/config.h b/keyboards/kprepublic/jj50/keymaps/archetype/config.h
index a12e070b4f..17ce95a363 100644
--- a/keyboards/kprepublic/jj50/keymaps/archetype/config.h
+++ b/keyboards/kprepublic/jj50/keymaps/archetype/config.h
@@ -6,4 +6,4 @@
#define AUTO_SHIFT_TIMEOUT 150
#define NO_AUTO_SHIFT_ALPHA
#define TAPPING_TERM 150
-//#define BOOTMAGIC_KEY_SALT KC_LCTL
+#define TAPPING_TERM_PER_KEY
diff --git a/keyboards/kprepublic/jj50/keymaps/archetype/keymap.c b/keyboards/kprepublic/jj50/keymaps/archetype/keymap.c
index 82c615f135..ff59ef43e5 100644
--- a/keyboards/kprepublic/jj50/keymaps/archetype/keymap.c
+++ b/keyboards/kprepublic/jj50/keymaps/archetype/keymap.c
@@ -167,9 +167,18 @@ qk_tap_dance_action_t tap_dance_actions[] = {
// Single tap = ) | Double tap = ] | Triple tap = } | Single hold = KC_LALT
[TD_LALT_RBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, right_brackets, right_brackets_reset),
// Layer Switcher ESC
- [TD_ESC_LAYER] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, layer_switcher, layer_switcher_reset, 100),
+ [TD_ESC_LAYER] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, layer_switcher, layer_switcher_reset),
};
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case TD(TD_ESC_LAYER):
+ return 100;
+ default:
+ return TAPPING_TERM;
+ }
+}
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
diff --git a/keyboards/kprepublic/jj50/keymaps/yoonbae81/keymap.c b/keyboards/kprepublic/jj50/keymaps/yoonbae81/keymap.c
index 571f93be52..adb3b727d2 100644
--- a/keyboards/kprepublic/jj50/keymaps/yoonbae81/keymap.c
+++ b/keyboards/kprepublic/jj50/keymaps/yoonbae81/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN3] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_MPRV, KC_MRWD, KC_MFFD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/ktec/daisy/config.h b/keyboards/ktec/daisy/config.h
index 2079d172aa..ec826ab1af 100644
--- a/keyboards/ktec/daisy/config.h
+++ b/keyboards/ktec/daisy/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50
-#define PRODUCT_ID 0xD7DC
-#define DEVICE_VER 0x0501
-#define MANUFACTURER KTEC
-#define PRODUCT Daisy
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D2, D3, D5, B7 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B6, B5, B4, D7, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ktec/daisy/info.json b/keyboards/ktec/daisy/info.json
index 6d5d5f49e2..f9c7b3e382 100644
--- a/keyboards/ktec/daisy/info.json
+++ b/keyboards/ktec/daisy/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Daisy",
+ "manufacturer": "KTEC",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0xD7DC",
+ "device_version": "5.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ktec/ergodone/keymaps/eozaki/keymap.c b/keyboards/ktec/ergodone/keymaps/eozaki/keymap.c
index 09854ee89c..3910756f81 100644
--- a/keyboards/ktec/ergodone/keymaps/eozaki/keymap.c
+++ b/keyboards/ktec/ergodone/keymaps/eozaki/keymap.c
@@ -179,7 +179,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/ktec/ergodone/keymaps/erovia/keymap.c b/keyboards/ktec/ergodone/keymaps/erovia/keymap.c
index 279c8a57c1..502c0dafe6 100644
--- a/keyboards/ktec/ergodone/keymaps/erovia/keymap.c
+++ b/keyboards/ktec/ergodone/keymaps/erovia/keymap.c
@@ -204,7 +204,7 @@ void matrix_init_user(void) {
layer_state_t layer_state_set_user(layer_state_t state) {
ergodox_led_all_off();
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case FN:
// Red led on Pro Micro for Fn layer
ergodox_board_led_on();
diff --git a/keyboards/ktec/ergodone/keymaps/kloki/keymap.c b/keyboards/ktec/ergodone/keymaps/kloki/keymap.c
index 87e96d20fd..1347f8f501 100644
--- a/keyboards/ktec/ergodone/keymaps/kloki/keymap.c
+++ b/keyboards/ktec/ergodone/keymaps/kloki/keymap.c
@@ -198,7 +198,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/keyboards/ktec/ergodone/keymaps/vega/keymap.c b/keyboards/ktec/ergodone/keymaps/vega/keymap.c
index ee6c56bf95..a0dddd5791 100644
--- a/keyboards/ktec/ergodone/keymaps/vega/keymap.c
+++ b/keyboards/ktec/ergodone/keymaps/vega/keymap.c
@@ -1,413 +1,636 @@
+// Copyright 2021 Vega Carlson (@VegaDeftwing)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
-enum layer_names {
- BASE,
- GREL,
- GREU,
- SYMB,
- MATH,
- QWER,
- FNLR
-};
+enum layer_names { BASE, GREL, GREU, SYMB, MATH, QWER, FNLR, TINY, FULL, FULU };
enum unicode_names {
- //MATH
- neq, //≠
- intgrl, //∫
- angl, //∠
- imply, //⇒
- equiv, //⇔
- porp, //âˆ
- exists, //∃
- nexists, //∄
- forall, //∀
- and, //∧
- or, //∨
- xor, //⊕
- apeql, //≅
- root, //√
- not, //¬
- sum, //∑
- plsminus, //±
- infin, //∞
- emtyset, //∅
- Mn, //â„•
- Mz, //ℤ
- Mq, //â„š
- Mr, //â„
- Mc, //â„‚
- eleof, //∈
- member, //∋
- neleof, //∉
- nmember, //∌
- subsetof, //⊂
- suprsetof, //⊃
- intersection, //∩
- Munion, //∪
-
- //SYMB
- arwl,
- arwu,
- arwr,
- arwd,
-
- uxclm,
- cent,
- degree,
- trade,
- copy,
- numero,
- sect,
- mdot,
- rang,
-
-
- lshade,
- mshade,
- dshade,
-
- fire,
- water,
- cleft,
- baster,
- neteen,
- floppy,
-
- boxemp,
- boxchk,
- boxX,
-
- bbstr,
- bbstl,
- bbml,
- bbmr,
- bbmb,
- bbrtr,
- bbrbr,
- bbrtl,
- bbrbl,
- bbsbr,
- bbsbl,
- bbmbr,
- bbmbl,
-
- Agrave,
- Aacute,
- Acircm,
- Atilde,
- Abreve,
- Adiaer,
- Adacut,
+ // MATH
+ neq, //≠
+ intgrl, //∫
+ angl, //∠
+ imply, //⇒
+ equiv, //⇔
+ porp, //âˆ
+ exists, //∃
+ nexists, //∄
+ forall, //∀
+ and, //∧
+ or
+ , //∨
+ xor, //⊕
+ apeql, //≅
+ root, //√
+ not, //¬
+ sum, //∑
+ plsminus, //±
+ infin, //∞
+ emtyset, //∅
+ Mn, //â„•
+ Mz, //ℤ
+ Mq, //â„š
+ Mr, //â„
+ Mc, //â„‚
+ eleof, //∈
+ member, //∋
+ neleof, //∉
+ nmember, //∌
+ subsetof, //⊂
+ suprsetof, //⊃
+ intersection, //∩
+ Munion, //∪
+
+ // SYMB
+ arwl,
+ arwu,
+ arwr,
+ arwd,
+
+ uxclm,
+ cent,
+ degree,
+ trade,
+ copy,
+ numero,
+ sect,
+ mdot,
+ rang,
+
+ lshade,
+ mshade,
+ dshade,
+
+ fire,
+ water,
+ cleft,
+ baster,
+ neteen,
+ floppy,
+
+ boxemp,
+ boxchk,
+ boxX,
+
+ bbstr,
+ bbstl,
+ bbml,
+ bbmr,
+ bbmb,
+ bbrtr,
+ bbrbr,
+ bbrtl,
+ bbrbl,
+ bbsbr,
+ bbsbl,
+ bbmbr,
+ bbmbl,
+
+ Agrave,
+ Aacute,
+ Acircm,
+ Atilde,
+ Abreve,
+ Adiaer,
+ Adacut,
// not all ogham letters, as I
// actually intend to use them for hex
- OS,
- Oa,
- Ob,
- Oc,
- Od,
- Oe,
- Of,
- Og,
- Oh,
- Oi,
- OA,
- OB,
- OC,
- OD,
- OE,
- OF,
- Os,
- OED,
- Ox,
- gnd,
- sqr,
- sine,
- opt,
-
- geq,
- leq,
- brkup,
- brkdn,
- perup,
- perdn,
-
- //GREEL
- rone, // 1:: â…°
- rtwo,
- rthree,
- rfour, // 4:: â…³
- rfive, // 5:: â…´
- rsix, // 6:: â…µ
- rseven, // 7:: â…¶
- reight, // 8:: â…·
- rnine, // 9:: â…¸
- rten, // 0:: â…¹
- gq, // q:: θ
- gw, // w:: ω
- ge, // e:: ε
- gr, // r:: Ï
- gt, // t:: Ï„
- gy, // y:: ψ
- gu, // u:: Ï…
- gi, // i:: ι
- go, // o:: ο
- gp, // p:: π
- ga, // a:: α
- gs, // s:: σ
- gd, // d:: δ
- gf, // f:: φ
- gg, // g:: γ
- gh, // h:: η
- gj, // j:: Ï‘
- gk, // k:: κ
- gl, // l:: λ
- gz, // z:: ζ
- gx, // x:: ξ
- gc, // c:: χ
- gv, // v:: Ï‚
- gb, // b:: β
- gn, // n:: ν
- gm, // m:: μ
-
- //GREEU
- Rone, // 1:: â… 
- Rtwo, // 2:: â…¡
- Rthree, // 3:: â…¢
- Rfour, // 4:: â…£
- Rfive, // 5:: â…¤
- Rsix, // 6:: â…¥
- Rseven, // 7:: â…¦
- Reight, // 8:: â…§
- Rnine, // 9:: â…¨
- Rten,
- Gq, // Q:: Θ
- Gw, // W:: Ω
- Ge, // E:: Ε
- Gr, // R:: Ρ
- Gt, // T:: Τ
- Gy, // Y:: Ψ
- Gu, // U:: Υ
- Gi, // I:: Ι
- Go, // O:: Ο
- Gp, // P:: Π
- Ga, // A:: Α
- Gs, // S:: Σ
- Gd, // D:: Δ
- Gf, // F:: Φ
- Gg, // G:: Γ
- Gh, // H:: Η
- Gj, // J:: J
- Gk, // K:: Κ
- Gl, // L:: Λ
- Gz, // Z:: Ζ
- Gx, // X:: Ξ
- Gc, // C:: Χ
- Gv, // V:: V
- Gb, // B:: Î’
- Gn, // N:: Î
- Gm, // M:: Μ
+ OS,
+ Oa,
+ Ob,
+ Oc,
+ Od,
+ Oe,
+ Of,
+ Og,
+ Oh,
+ Oi,
+ OA,
+ OB,
+ OC,
+ OD,
+ OE,
+ OF,
+ Os,
+ OED,
+ Ox,
+ gnd,
+ sqr,
+ sine,
+ opt,
+
+ geq,
+ leq,
+ brkup,
+ brkdn,
+ perup,
+ perdn,
+
+ // GREEL
+ rone, // 1:: â…°
+ rtwo,
+ rthree,
+ rfour, // 4:: â…³
+ rfive, // 5:: â…´
+ rsix, // 6:: â…µ
+ rseven, // 7:: â…¶
+ reight, // 8:: â…·
+ rnine, // 9:: â…¸
+ rten, // 0:: â…¹
+ gq, // q:: θ
+ gw, // w:: ω
+ ge, // e:: ε
+ gr, // r:: Ï
+ gt, // t:: Ï„
+ gy, // y:: ψ
+ gu, // u:: Ï…
+ gi, // i:: ι
+ go, // o:: ο
+ gp, // p:: π
+ ga, // a:: α
+ gs, // s:: σ
+ gd, // d:: δ
+ gf, // f:: φ
+ gg, // g:: γ
+ gh, // h:: η
+ gj, // j:: Ï‘
+ gk, // k:: κ
+ gl, // l:: λ
+ gz, // z:: ζ
+ gx, // x:: ξ
+ gc, // c:: χ
+ gv, // v:: Ï‚
+ gb, // b:: β
+ gn, // n:: ν
+ gm, // m:: μ
+
+ // GREEU
+ Rone, // 1:: â… 
+ Rtwo, // 2:: â…¡
+ Rthree, // 3:: â…¢
+ Rfour, // 4:: â…£
+ Rfive, // 5:: â…¤
+ Rsix, // 6:: â…¥
+ Rseven, // 7:: â…¦
+ Reight, // 8:: â…§
+ Rnine, // 9:: â…¨
+ Rten,
+ Gq, // Q:: Θ
+ Gw, // W:: Ω
+ Ge, // E:: Ε
+ Gr, // R:: Ρ
+ Gt, // T:: Τ
+ Gy, // Y:: Ψ
+ Gu, // U:: Υ
+ Gi, // I:: Ι
+ Go, // O:: Ο
+ Gp, // P:: Π
+ Ga, // A:: Α
+ Gs, // S:: Σ
+ Gd, // D:: Δ
+ Gf, // F:: Φ
+ Gg, // G:: Γ
+ Gh, // H:: Η
+ Gj, // J:: J
+ Gk, // K:: Κ
+ Gl, // L:: Λ
+ Gz, // Z:: Ζ
+ Gx, // X:: Ξ
+ Gc, // C:: Χ
+ Gv, // V:: V
+ Gb, // B:: Î’
+ Gn, // N:: Î
+ Gm, // M:: Μ
+ // ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ áµ Ê° Ⱡʲ áµ Ë¡ áµ â¿ áµ’ áµ– ʳ Ë¢ áµ— ᵘ áµ› Ê· Ë£ ʸ ᶻ Ⱐ¹ ² ³ ⴠⵠⶠⷠ⸠â¹
+ tone, // 1:: ¹
+ ttwo, // 2:: ²
+ tthree, // 3:: ³
+ tfour, // 4:: â´
+ tfive, // 5:: âµ
+ tsix, // 6:: â¶
+ tseven, // 7:: â·
+ teight, // 8:: â¸
+ tnine, // 9:: â¹
+ tzero, // 0 :: â°
+ tq, // Q:: Û¹
+ tw, // W:: Ê·
+ te, // E:: ᵉ
+ tr, // R:: ʳ
+ tt, // T:: áµ—
+ ty, // Y:: ʸ
+ tu, // U:: ᵘ
+ ti, // I:: â±
+ to, // O:: áµ’
+ tp, // P:: áµ–
+ ta, // A:: ᵃ
+ ts, // S:: ˢ
+ td, // D:: ᵈ
+ tf, // F:: ᶠ
+ tg, // G:: áµ
+ th, // H:: Ê°
+ tj, // J:: ʲ
+ tk, // K:: áµ
+ tl, // L:: Ë¡
+ tz, // Z:: ᶻ
+ tx, // X:: ˣ
+ tc, // C:: ᶜ
+ tv, // V:: áµ›
+ tb, // B:: ᵇ
+ tn, // N:: â¿
+ tm, // M:: áµ
+ // Fullwitdth - note, these are *not* the monospace unicode code points.
+ // This is done to prevent something eating it and using a weird font, which,
+ // presumably, isn't desired if doing this.
+ fwone, // 1:: 1
+ fwtwo, // 2:: ï¼’
+ fwthree, // 3:: 3
+ fwfour, // 4:: ï¼”
+ fwfive, // 5:: 5
+ fwsix, // 6:: ï¼–
+ fwseven, // 7:: ï¼—
+ fweight, // 8:: 8
+ fwnine, // 9:: ï¼™
+ fwzero, // 0 :: ï¼
+ fwq, // Q:: q
+ fww, // W:: ï½—
+ fwe, // E:: ï½…
+ fwr, // R:: ï½’
+ fwt, // T:: ï½”
+ fwy, // Y:: ï½™
+ fwu, // U:: u
+ fwi, // I:: i
+ fwo, // O:: ï½
+ fwp, // P:: ï½
+ fwa, // A:: ï½
+ fws, // S:: s
+ fwd, // D:: d
+ fwf, // F:: f
+ fwg, // G:: g
+ fwh, // H:: h
+ fwj, // J:: j
+ fwk, // K:: k
+ fwl, // L:: l
+ fwz, // Z:: z
+ fwx, // X:: x
+ fwc, // C:: c
+ fwv, // V:: ï½–
+ fwb, // B:: b
+ fwn, // N:: n
+ fwm, // M:: ï½
+ // Full width caps + fractions, and a few extra symbols that lack a better place
+ Fwone, // 1:: ¼
+ Fwtwo, // 2:: ½
+ Fwthree, // 3:: ¾
+ Fwfour, // 4:: â…“
+ Fwfive, // 5:: â…”
+ Fwsix, // 6:: â…•
+ Fwseven, // 7:: â…›
+ Fweight, // 8:: ð’³
+ Fwnine, // 9:: ð’´
+ Fwzero, // 0 :: ð’µ
+ Fwq, // Q:: ï¼±
+ Fww, // W:: ï¼·
+ Fwe, // E:: ï¼¥
+ Fwr, // R:: ï¼²
+ Fwt, // T:: ï¼´
+ Fwy, // Y:: ï¼¹
+ Fwu, // U:: ï¼µ
+ Fwi, // I:: I
+ Fwo, // O:: O
+ Fwp, // P:: ï¼°
+ Fwa, // A:: A
+ Fws, // S:: ï¼³
+ Fwd, // D:: D
+ Fwf, // F:: F
+ Fwg, // G:: G
+ Fwh, // H:: H
+ Fwj, // J:: J
+ Fwk, // K:: K
+ Fwl, // L:: L
+ Fwz, // Z:: Z
+ Fwx, // X:: X
+ Fwc, // C:: ï¼£
+ Fwv, // V:: V
+ Fwb, // B:: ï¼¢
+ Fwn, // N:: ï¼®
+ Fwm, // M:: ï¼­
+ nbsp, // You know what this is &nbsp;
+ ibang, //‽
+ nullpic, // Null picture - â€
};
const uint32_t PROGMEM unicode_map[] = {
- //MATH
- [neq] = 0x2260, //≠
- [intgrl] = 0x222B, //∫
- [angl] = 0x2220, //∠
- [imply] = 0x21D2, //⇒
- [equiv] = 0x21D4, //⇔
- [porp] = 0x221D, //âˆ
- [exists] = 0x2203, //∃
- [nexists] = 0x2204, //∄
- [forall] = 0x2200, //∀
- [and] = 0x2227, //∧
- [or] = 0x2228, //∨
- [xor] = 0x2295, //⊕
- [apeql] = 0x2245, //≅
- [root] = 0x221A, //√
- [not] = 0x00AC, //¬
- [sum] = 0x2211, //∑
- [plsminus] = 0x00B1, //±
- [infin] = 0x221E, //∞
- [emtyset] = 0x2205, //∅
- [Mn] = 0x2115, //â„•
- [Mz] = 0x2124, //ℤ
- [Mq] = 0x211A, //â„š
- [Mr] = 0x211D, //â„
- [Mc] = 0x2102, //â„‚
- [eleof] = 0x2208, //∈
- [member] = 0x220B, //∋
- [neleof] = 0x2209, //∉
- [nmember] = 0x220C, //∌
- [subsetof] = 0x2282, //⊂
- [suprsetof] = 0x2283, //
- [intersection] = 0x2229, //∩
- [Munion] = 0x222A, //∪
- //Symbol
- [arwl] = 0x2190, //â†
- [arwu] = 0x2191, //↑
- [arwr] = 0x2192, //→
- [arwd] = 0x2193, //↓
-
- [uxclm] = 0x00A1, //¡
- [cent] = 0x00A2, //¢
- [degree] = 0x00B0, //°
- [trade] = 0x2122, //â„¢
- [copy] = 0x00A9, //©
- [numero] = 0x2116, //â„–
- [sect] = 0x00A7, //§
- [mdot] = 0x00B7, //·
- [rang] = 0x299C, //⦜
-
-
- [lshade] = 0x2591,//â–‘
- [mshade] = 0x2592,//â–’
- [dshade] = 0x2593,//â–“
-
- [fire] = 0x1F525, //🔥
- [water] = 0x1F322, //🌢
- [cleft] = 0x1F12F, //🄯
- [baster] = 0x1F7BC, //🞼
- [neteen] = 0x1F51E, //🔞
- [floppy] = 0x1F5AB, //🖫
-
- [boxemp] = 0x2610, //â˜
- [boxchk] = 0x2611, //☑
- [boxX] = 0x2612, //☒
-
- [bbstr] = 0x23A1, //⎡
- [bbstl] = 0x23A4, //⎤
- [bbml] = 0x23A8, //⎨
- [bbmr] = 0x23AC, //⎬
- [bbmb] = 0x23AA, //⎪
- [bbrtr] = 0x23A7, //⎧
- [bbrbr] = 0x23A9, //⎩
- [bbrtl] = 0x23AB, //⎫
- [bbrbl] = 0x23AD, //⎭
- [bbsbr] = 0x23A3, //⎣
- [bbsbl] = 0x23A6, //⎦
- [bbmbr] = 0x23A5, //⎥
- [bbmbl] = 0x23A2, //⎢
-
- [Agrave] = 0x0300,//eÌ€ //above [wtf] = 0x1242A, //ð’ª
- [Aacute] = 0x0301,//eÌ //1st
- [Acircm] = 0x0302,//ê //2nd
- [Atilde] = 0x0303,//ẽ //5th
- [Abreve] = 0x0306,//ĕ //4th
- [Adiaer] = 0x0308,//ë //3rd
- [Adacut] = 0x030B,//e̋
-
- // not all ogham letters, as I
- // actually intend to use them for hex
- [OS] = 0x1680,//space
- [Oa] = 0x1681,//1
- [Ob] = 0x1682,//2
- [Oc] = 0x1683,//3
- [Od] = 0x1684,//4
- [Oe] = 0x1685,//5
- [Of] = 0x1686,//6
- [Og] = 0x1687,//7
- [Oh] = 0x1688,//8
- [Oi] = 0x1689,//9
- [OA] = 0x168A,//A
- [OB] = 0x168B,//B
- [OC] = 0x168C,//C
- [OD] = 0x168D,//D
- [OE] = 0x168E,//E
- [OF] = 0x168F,//F
- [Os] = 0x169B,//Start
- [OED] = 0x169C,//End
- [Ox] = 0x1695,//X
-
- [gnd] = 0x23DA,//âš
- [sqr] = 0x238D,//âŽ, actually monostable
- [sine] = 0x223F,//∿
- [opt] = 0x2325,//⌥, actually option used for switch
-
- [geq] = 0x2264, //≤
- [leq] = 0x2265, //≥
- [brkup] = 0xFE38, //︸
- [brkdn] = 0xFE37, //︷
- [perup] = 0xFE35, //︵
- [perdn] = 0xFE36, //︶
- //GREEKL
- [rone] = 0x2170, // 1:: â…°
- [rtwo] = 0x2171, // 2:: â…±
- [rthree] = 0x2172, // 3:: â…²
- [rfour] = 0x2173, // 4:: â…³
- [rfive] = 0x2174, // 5:: â…´
- [rsix] = 0x2175, // 6:: â…µ
- [rseven] = 0x2176, // 7:: â…¶
- [reight] = 0x2177, // 8:: â…·
- [rnine] = 0x2178, // 9:: â…¸
- [rten] = 0x2179, // 0:: â…¹
- [gq] = 0x03B8, // q:: θ
- [gw] = 0x03C9, // w:: ω
- [ge] = 0x03B5, // e:: ε
- [gr] = 0x03C1, // r:: Ï
- [gt] = 0x03C4, // t:: Ï„
- [gy] = 0x03C8, // y:: ψ
- [gu] = 0x03C5, // u:: Ï…
- [gi] = 0x03B9, // i:: ι
- [go] = 0x03BF, // o:: ο
- [gp] = 0x03C0, // p:: π
- [ga] = 0x03B1, // a:: α
- [gs] = 0x03C3, // s:: σ
- [gd] = 0x03B4, // d:: δ
- [gf] = 0x03C6, // f:: φ
- [gg] = 0x03B3, // g:: γ
- [gh] = 0x03B7, // h:: η
- [gj] = 0x03D1, // j:: Ï‘
- [gk] = 0x03BA, // k:: κ
- [gl] = 0x03BB, // l:: λ
- [gz] = 0x03B6, // z:: ζ
- [gx] = 0x03BE, // x:: ξ
- [gc] = 0x03C7, // c:: χ
- [gv] = 0x03C2, // v:: Ï‚
- [gb] = 0x03B2, // b:: β
- [gn] = 0x03BD, // n:: ν
- [gm] = 0x03BC, // m:: μ
- //GREEKU
- [Rone] = 0x2160, // 1:: â… 
- [Rtwo] = 0x2161, // 2:: â…¡
- [Rthree] = 0x2162, // 3:: â…¢
- [Rfour] = 0x2163, // 4:: â…£
- [Rfive] = 0x2164, // 5:: â…¤
- [Rsix] = 0x2165, // 6:: â…¥
- [Rseven] = 0x2166, // 7:: â…¦
- [Reight] = 0x2167, // 8:: â…§
- [Rnine] = 0x2168, // 9:: â…¨
- [Rten] = 0x2169, // 0:: â…©
- [Gq] = 0x0398, // Q:: Θ
- [Gw] = 0x03A9, // W:: Ω
- [Ge] = 0x0395, // E:: Ε
- [Gr] = 0x03A1, // R:: Ρ
- [Gt] = 0x03A4, // T:: Τ
- [Gy] = 0x03A8, // Y:: Ψ
- [Gu] = 0x03A5, // U:: Υ
- [Gi] = 0x0399, // I:: Ι
- [Go] = 0x039F, // O:: Ο
- [Gp] = 0x03A0, // P:: Π
- [Ga] = 0x0391, // A:: Α
- [Gs] = 0x03A3, // S:: Σ
- [Gd] = 0x0394, // D:: Δ
- [Gf] = 0x03A6, // F:: Φ
- [Gg] = 0x0393, // G:: Γ
- [Gh] = 0x0397, // H:: Η
- [Gj] = 0x004A, // J:: J
- [Gk] = 0x039A, // K:: Κ
- [Gl] = 0x039B, // L:: Λ
- [Gz] = 0x0396, // Z:: Ζ
- [Gx] = 0x039E, // X:: Ξ
- [Gc] = 0x03A7, // C:: Χ
- [Gv] = 0x0056, // V:: V
- [Gb] = 0x0392, // B:: Î’
- [Gn] = 0x039D, // N:: Î
- [Gm] = 0x039C, // M:: Μ
+ // MATH
+ [neq] = 0x2260, //≠
+ [intgrl] = 0x222B, //∫
+ [angl] = 0x2220, //∠
+ [imply] = 0x21D2, //⇒
+ [equiv] = 0x21D4, //⇔
+ [porp] = 0x221D, //âˆ
+ [exists] = 0x2203, //∃
+ [nexists] = 0x2204, //∄
+ [forall] = 0x2200, //∀
+ [and] = 0x2227, //∧
+ [or] = 0x2228, //∨
+ [xor] = 0x2295, //⊕
+ [apeql] = 0x2245, //≅
+ [root] = 0x221A, //√
+ [not ] = 0x00AC, //¬
+ [sum] = 0x2211, //∑
+ [plsminus] = 0x00B1, //±
+ [infin] = 0x221E, //∞
+ [emtyset] = 0x2205, //∅
+ [Mn] = 0x2115, //â„•
+ [Mz] = 0x2124, //ℤ
+ [Mq] = 0x211A, //â„š
+ [Mr] = 0x211D, //â„
+ [Mc] = 0x2102, //â„‚
+ [eleof] = 0x2208, //∈
+ [member] = 0x220B, //∋
+ [neleof] = 0x2209, //∉
+ [nmember] = 0x220C, //∌
+ [subsetof] = 0x2282, //⊂
+ [suprsetof] = 0x2283, //
+ [intersection] = 0x2229, //∩
+ [Munion] = 0x222A, //∪
+ // Symbol
+ [arwl] = 0x2190, //â†
+ [arwu] = 0x2191, //↑
+ [arwr] = 0x2192, //→
+ [arwd] = 0x2193, //↓
+
+ [uxclm] = 0x00A1, //¡
+ [cent] = 0x00A2, //¢
+ [degree] = 0x00B0, //°
+ [trade] = 0x2122, //â„¢
+ [copy] = 0x00A9, //©
+ [numero] = 0x2116, //â„–
+ [sect] = 0x00A7, //§
+ [mdot] = 0x00B7, //·
+ [rang] = 0x299C, //⦜
+
+ [lshade] = 0x2591, //â–‘
+ [mshade] = 0x2592, //â–’
+ [dshade] = 0x2593, //â–“
+
+ [fire] = 0x1F525, //🔥
+ [water] = 0x1F322, //🌢
+ [cleft] = 0x1F12F, //🄯
+ [baster] = 0x1F7BC, //🞼
+ [neteen] = 0x1F51E, //🔞
+ [floppy] = 0x1F5AB, //🖫
+
+ [boxemp] = 0x2610, //â˜
+ [boxchk] = 0x2611, //☑
+ [boxX] = 0x2612, //☒
+
+ [bbstr] = 0x23A1, //⎡
+ [bbstl] = 0x23A4, //⎤
+ [bbml] = 0x23A8, //⎨
+ [bbmr] = 0x23AC, //⎬
+ [bbmb] = 0x23AA, //⎪
+ [bbrtr] = 0x23A7, //⎧
+ [bbrbr] = 0x23A9, //⎩
+ [bbrtl] = 0x23AB, //⎫
+ [bbrbl] = 0x23AD, //⎭
+ [bbsbr] = 0x23A3, //⎣
+ [bbsbl] = 0x23A6, //⎦
+ [bbmbr] = 0x23A5, //⎥
+ [bbmbl] = 0x23A2, //⎢
+
+ [Agrave] = 0x0300, // eÌ€ //above [wtf] = 0x1242A, //ð’ª
+ [Aacute] = 0x0301, // eÌ //1st
+ [Acircm] = 0x0302, // ê //2nd
+ [Atilde] = 0x0303, // ẽ //5th
+ [Abreve] = 0x0306, // ĕ //4th
+ [Adiaer] = 0x0308, // ë //3rd
+ [Adacut] = 0x030B, // e̋
+
+ // not all ogham letters, as I
+ // actually intend to use them for hex
+ [OS] = 0x1680, // space
+ [Oa] = 0x1681, // 1
+ [Ob] = 0x1682, // 2
+ [Oc] = 0x1683, // 3
+ [Od] = 0x1684, // 4
+ [Oe] = 0x1685, // 5
+ [Of] = 0x1686, // 6
+ [Og] = 0x1687, // 7
+ [Oh] = 0x1688, // 8
+ [Oi] = 0x1689, // 9
+ [OA] = 0x168A, // A
+ [OB] = 0x168B, // B
+ [OC] = 0x168C, // C
+ [OD] = 0x168D, // D
+ [OE] = 0x168E, // E
+ [OF] = 0x168F, // F
+ [Os] = 0x169B, // Start
+ [OED] = 0x169C, // End
+ [Ox] = 0x1695, // X
+
+ [gnd] = 0x23DA, //âš
+ [sqr] = 0x238D, //âŽ, actually monostable
+ [sine] = 0x223F, //∿
+ [opt] = 0x2325, //⌥, actually option used for switch
+
+ [geq] = 0x2264, //≤
+ [leq] = 0x2265, //≥
+ [brkup] = 0xFE38, //︸
+ [brkdn] = 0xFE37, //︷
+ [perup] = 0xFE35, //︵
+ [perdn] = 0xFE36, //︶
+ // GREEKL
+ [rone] = 0x2170, // 1:: â…°
+ [rtwo] = 0x2171, // 2:: â…±
+ [rthree] = 0x2172, // 3:: â…²
+ [rfour] = 0x2173, // 4:: â…³
+ [rfive] = 0x2174, // 5:: â…´
+ [rsix] = 0x2175, // 6:: â…µ
+ [rseven] = 0x2176, // 7:: â…¶
+ [reight] = 0x2177, // 8:: â…·
+ [rnine] = 0x2178, // 9:: â…¸
+ [rten] = 0x2179, // 0:: â…¹
+ [gq] = 0x03B8, // q:: θ
+ [gw] = 0x03C9, // w:: ω
+ [ge] = 0x03B5, // e:: ε
+ [gr] = 0x03C1, // r:: Ï
+ [gt] = 0x03C4, // t:: Ï„
+ [gy] = 0x03C8, // y:: ψ
+ [gu] = 0x03C5, // u:: Ï…
+ [gi] = 0x03B9, // i:: ι
+ [go] = 0x03BF, // o:: ο
+ [gp] = 0x03C0, // p:: π
+ [ga] = 0x03B1, // a:: α
+ [gs] = 0x03C3, // s:: σ
+ [gd] = 0x03B4, // d:: δ
+ [gf] = 0x03C6, // f:: φ
+ [gg] = 0x03B3, // g:: γ
+ [gh] = 0x03B7, // h:: η
+ [gj] = 0x03D1, // j:: Ï‘
+ [gk] = 0x03BA, // k:: κ
+ [gl] = 0x03BB, // l:: λ
+ [gz] = 0x03B6, // z:: ζ
+ [gx] = 0x03BE, // x:: ξ
+ [gc] = 0x03C7, // c:: χ
+ [gv] = 0x03C2, // v:: Ï‚
+ [gb] = 0x03B2, // b:: β
+ [gn] = 0x03BD, // n:: ν
+ [gm] = 0x03BC, // m:: μ
+ // GREEKU
+ [Rone] = 0x2160, // 1:: â… 
+ [Rtwo] = 0x2161, // 2:: â…¡
+ [Rthree] = 0x2162, // 3:: â…¢
+ [Rfour] = 0x2163, // 4:: â…£
+ [Rfive] = 0x2164, // 5:: â…¤
+ [Rsix] = 0x2165, // 6:: â…¥
+ [Rseven] = 0x2166, // 7:: â…¦
+ [Reight] = 0x2167, // 8:: â…§
+ [Rnine] = 0x2168, // 9:: â…¨
+ [Rten] = 0x2169, // 0:: â…©
+ [Gq] = 0x0398, // Q:: Θ
+ [Gw] = 0x03A9, // W:: Ω
+ [Ge] = 0x0395, // E:: Ε
+ [Gr] = 0x03A1, // R:: Ρ
+ [Gt] = 0x03A4, // T:: Τ
+ [Gy] = 0x03A8, // Y:: Ψ
+ [Gu] = 0x03A5, // U:: Υ
+ [Gi] = 0x0399, // I:: Ι
+ [Go] = 0x039F, // O:: Ο
+ [Gp] = 0x03A0, // P:: Π
+ [Ga] = 0x0391, // A:: Α
+ [Gs] = 0x03A3, // S:: Σ
+ [Gd] = 0x0394, // D:: Δ
+ [Gf] = 0x03A6, // F:: Φ
+ [Gg] = 0x0393, // G:: Γ
+ [Gh] = 0x0397, // H:: Η
+ [Gj] = 0x004A, // J:: J
+ [Gk] = 0x039A, // K:: Κ
+ [Gl] = 0x039B, // L:: Λ
+ [Gz] = 0x0396, // Z:: Ζ
+ [Gx] = 0x039E, // X:: Ξ
+ [Gc] = 0x03A7, // C:: Χ
+ [Gv] = 0x0056, // V:: V
+ [Gb] = 0x0392, // B:: Î’
+ [Gn] = 0x039D, // N:: Î
+ [Gm] = 0x039C, // M:: Μ
+
+ [tone] = 0x00B9, // 1:: ¹
+ [ttwo] = 0x00B2, // 2:: ²
+ [tthree] = 0x00B3, // 3:: ³
+ [tfour] = 0x2074, // 4:: â´
+ [tfive] = 0x2075, // 5:: âµ
+ [tsix] = 0x2076, // 6:: â¶
+ [tseven] = 0x2077, // 7:: â·
+ [teight] = 0x2078, // 8:: â¸
+ [tnine] = 0x2079, // 9:: â¹
+ [tzero] = 0x2070, // 0 :: â°
+ [tq] = 0x06F9, // Q:: Û¹ - superscript q doesn't exist.
+ [tw] = 0x02B7, // W:: Ê·
+ [te] = 0x1D49, // E:: ᵉ
+ [tr] = 0x02B3, // R:: ʳ
+ [tt] = 0x1D57, // T:: áµ—
+ [ty] = 0x02B8, // Y:: ʸ
+ [tu] = 0x1D58, // U:: ᵘ
+ [ti] = 0x2071, // I:: â±
+ [to] = 0x1D52, // O:: áµ’
+ [tp] = 0x1D56, // P:: áµ–
+ [ta] = 0x1D43, // A:: ᵃ
+ [ts] = 0x02E2, // S:: ˢ
+ [td] = 0x1D48, // D:: ᵈ
+ [tf] = 0x1DA0, // F:: ᶠ
+ [tg] = 0x1D4D, // G:: áµ
+ [th] = 0x02B0, // H:: Ê°
+ [tj] = 0x02B2, // J:: ʲ
+ [tk] = 0x1D4F, // K:: áµ
+ [tl] = 0x02E1, // L:: Ë¡
+ [tz] = 0x1DBB, // Z:: ᶻ
+ [tx] = 0x02E3, // X:: ˣ
+ [tc] = 0x1D9C, // C:: ᶜ
+ [tv] = 0x1D5B, // V:: áµ›
+ [tb] = 0x1D47, // B:: ᵇ
+ [tn] = 0x207F, // N:: â¿
+ [tm] = 0x1D50, // M:: áµ
+
+ [fwone] = 0xFF11, // 1:: 1
+ [fwtwo] = 0xFF12, // 2:: ï¼’
+ [fwthree] = 0xFF13, // 3:: 3
+ [fwfour] = 0xFF14, // 4:: ï¼”
+ [fwfive] = 0xFF15, // 5:: 5
+ [fwsix] = 0xFF16, // 6:: ï¼–
+ [fwseven] = 0xFF17, // 7:: ï¼—
+ [fweight] = 0xFF18, // 8:: 8
+ [fwnine] = 0xFF19, // 9:: ï¼™
+ [fwzero] = 0xFF10, // 0 :: ï¼
+ [fwq] = 0xFF51, // Q:: q
+ [fww] = 0xFF57, // W:: ï½—
+ [fwe] = 0xFF45, // E:: ï½…
+ [fwr] = 0xFF52, // R:: ï½’
+ [fwt] = 0xFF54, // T:: ï½”
+ [fwy] = 0xFF59, // Y:: ï½™
+ [fwu] = 0xFF55, // U:: u
+ [fwi] = 0xFF49, // I:: i
+ [fwo] = 0xFF4F, // O:: ï½
+ [fwp] = 0xFF50, // P:: ï½
+ [fwa] = 0xFF41, // A:: ï½
+ [fws] = 0xFF53, // S:: s
+ [fwd] = 0xFF44, // D:: d
+ [fwf] = 0xFF46, // F:: f
+ [fwg] = 0xFF47, // G:: g
+ [fwh] = 0xFF48, // H:: h
+ [fwj] = 0xFF4A, // J:: j
+ [fwk] = 0xFF4B, // K:: k
+ [fwl] = 0xFF4C, // L:: l
+ [fwz] = 0xFF5A, // Z:: z
+ [fwx] = 0xFF58, // X:: x
+ [fwc] = 0xFF43, // C:: c
+ [fwv] = 0xFF56, // V:: ï½–
+ [fwb] = 0xFF42, // B:: b
+ [fwn] = 0xFF4E, // N:: n
+ [fwm] = 0xFF4D, // M:: ï½
+ // Full width caps + fractions, and a few extra symbols that lack a better place
+ [Fwone] = 0x00BC, // 1:: ¼
+ [Fwtwo] = 0x00BD, // 2:: ½
+ [Fwthree] = 0x00BE, // 3:: ¾
+ [Fwfour] = 0x2153, // 4:: â…“
+ [Fwfive] = 0x2154, // 5:: â…”
+ [Fwsix] = 0x2155, // 6:: â…•
+ [Fwseven] = 0x215B, // 7:: â…›
+ [Fweight] = 0x00A0, // 8:: &nbsp
+ [Fwnine] = 0x203D, // 9:: ibang ‽
+ [Fwzero] = 0x2400, // 0 :: nullpic â€
+ [Fwq] = 0xFF31, // Q:: ï¼±
+ [Fww] = 0xFF37, // W:: ï¼·
+ [Fwe] = 0xFF25, // E:: ï¼¥
+ [Fwr] = 0xFF32, // R:: ï¼²
+ [Fwt] = 0xFF34, // T:: ï¼´
+ [Fwy] = 0xFF39, // Y:: ï¼¹
+ [Fwu] = 0xFF35, // U:: ï¼µ
+ [Fwi] = 0xFF29, // I:: I
+ [Fwo] = 0xFF2F, // O:: O
+ [Fwp] = 0xFF30, // P:: ï¼°
+ [Fwa] = 0xFF21, // A:: A
+ [Fws] = 0xFF33, // S:: ï¼³
+ [Fwd] = 0xFF24, // D:: D
+ [Fwf] = 0xFF26, // F:: F
+ [Fwg] = 0xFF27, // G:: G
+ [Fwh] = 0xFF28, // H:: H
+ [Fwj] = 0xFF2A, // J:: J
+ [Fwk] = 0xFF2B, // K:: K
+ [Fwl] = 0xFF2C, // L:: L
+ [Fwz] = 0xFF3A, // Z:: Z
+ [Fwx] = 0xFF38, // X:: X
+ [Fwc] = 0xFF23, // C:: ï¼£
+ [Fwv] = 0xFF36, // V:: V
+ [Fwb] = 0xFF22, // B:: ï¼¢
+ [Fwn] = 0xFF2E, // N:: ï¼®
+ [Fwm] = 0xFF2D, // M:: ï¼­
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // clang-format off
+
[BASE] = LAYOUT_ergodox( // layer 0 : default
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_GRV,
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_BSLS,
@@ -428,8 +651,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// left hand
UC_M_LN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO,
UC_M_WC,KC_F11, KC_F12, KC_F13,KC_F14, KC_F15, KC_NO,
- KC_NO,KC_F21, KC_F22, KC_F23,KC_F24, KC_NO,
- KC_NO,KC_PAUSE,KC_PSCR,KC_SLCK,KC_NO,KC_NO,KC_NO,
+ TO(TINY),KC_F21, KC_F22, KC_F23,KC_F24, MAGIC_TOGGLE_NKRO,
+ TO(FULL),KC_PAUSE,KC_PSCR,KC_SLCK,KC_NO,KC_NO,KC_NO,
EEP_RST,TO(BASE),TO(BASE),TO(BASE),TO(BASE),
KC_NO,KC_NO,
KC_NO,
@@ -525,23 +748,73 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_END, KC_RBRC, KC_LEFT, KC_RGHT, KC_ENT, KC_SPC
),
+[TINY] = LAYOUT_ergodox(
+ KC_ESC, X(tone), X(ttwo), X(tthree), X(tfour), X(tfive), KC_GRV,
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, X(tp), X(ty), KC_SLSH,
+ KC_SLSH, X(ta), X(to), X(te), X(tu), X(ti),
+ KC_TRNS, KC_SCLN, X(tq), X(tj), X(tk), X(tx), KC_AMPR,
+ KC_MS_L, TO(BASE), TO(BASE), KC_INS, KC_DEL,
+ KC_LBRC, KC_HOME, KC_UP, KC_SPC, KC_LGUI, KC_DOWN,
+
+ TO(BASE), X(tsix), X(tseven), X(teight), X(tnine), X(tzero), KC_BSPC,
+ KC_PGUP, X(tf), X(tg), X(tc), X(tr), X(tl), KC_EQL,
+ X(td), X(th), X(tt), X(tn), X(ts), KC_MINS,
+ KC_PGDN, X(tb), X(tm), X(tw), X(tv), X(tz), KC_TRNS,
+ KC_RCTL, KC_RALT, KC_APP, TO(BASE), TO(BASE),
+ KC_END, KC_RBRC, KC_LEFT, KC_RGHT, KC_ENT, KC_SPC
+),
+
+[FULL] = LAYOUT_ergodox(
+ KC_ESC, X(fwone), X(fwtwo), X(fwthree), X(fwfour), X(fwfive), KC_GRV,
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, X(fwp), X(fwy), KC_SLSH,
+ KC_SLSH, X(fwa), X(fwo), X(fwe), X(fwu), X(fwi),
+ MO(FULU), KC_SCLN, X(fwq), X(fwj), X(fwk), X(fwx), KC_AMPR,
+ KC_MS_L, TO(BASE), TO(BASE), KC_INS, KC_DEL,
+ KC_LBRC, KC_HOME, KC_UP, KC_SPC, KC_LGUI, KC_DOWN,
+
+ TO(BASE), X(fwsix), X(fwseven), X(fweight), X(fwnine), X(fwzero), KC_BSPC,
+ KC_PGUP, X(fwf), X(fwg), X(fwc), X(fwr), X(fwl), KC_EQL,
+ X(fwd), X(fwh), X(fwt), X(fwn), X(fws), KC_MINS,
+ KC_PGDN, X(fwb), X(fwm), X(fww), X(fwv), X(fwz), MO(FULU),
+ KC_RCTL, KC_RALT, KC_APP, TO(BASE), TO(BASE),
+ KC_END, KC_RBRC, KC_LEFT, KC_RGHT, KC_ENT, KC_SPC
+),
+
+[FULU] = LAYOUT_ergodox(
+ KC_ESC, X(Fwone), X(Fwtwo), X(Fwthree), X(Fwfour), X(Fwfive), KC_GRV,
+ KC_TAB, KC_QUOT, KC_COMM, KC_DOT, X(Fwp), X(Fwy), KC_SLSH,
+ KC_SLSH, X(Fwa), X(Fwo), X(Fwe), X(Fwu), X(Fwi),
+ KC_TRNS, KC_SCLN, X(Fwq), X(Fwj), X(Fwk), X(Fwx), KC_AMPR,
+ KC_MS_L, TO(BASE), TO(BASE), KC_INS, KC_DEL,
+ KC_LBRC, KC_HOME, KC_UP, KC_SPC, KC_LGUI, KC_DOWN,
+
+ TO(BASE), X(Fwsix), X(Fwseven), X(Fweight), X(Fwnine), X(Fwzero), KC_BSPC,
+ KC_PGUP, X(Fwf), X(Fwg), X(Fwc), X(Fwr), X(Fwl), KC_EQL,
+ X(Fwd), X(Fwh), X(Fwt), X(Fwn), X(Fws), KC_MINS,
+ KC_PGDN, X(Fwb), X(Fwm), X(Fww), X(Fwv), X(Fwz), KC_TRNS,
+ KC_RCTL, KC_RALT, KC_APP, TO(BASE), TO(BASE),
+ KC_END, KC_RBRC, KC_LEFT, KC_RGHT, KC_ENT, KC_SPC
+),
+
+ // clang-format on
+
};
// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
+void matrix_init_user(void){
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
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.
+ // TODO: Make this relevant to the ErgoDox EZ.
case 1:
ergodox_right_led_1_on();
break;
diff --git a/keyboards/ktec/staryu/config.h b/keyboards/ktec/staryu/config.h
index db48e0ea5e..876d61223f 100755
--- a/keyboards/ktec/staryu/config.h
+++ b/keyboards/ktec/staryu/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1209
-#define PRODUCT_ID 0x2328
-#define DEVICE_VER 0x0205
-#define MANUFACTURER K.T.E.C.
-#define PRODUCT Staryu
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ NO_PIN, D0, D1 }, \
{ D4, D3, D2 }, \
}
-#define UNUSED_PINS
#define RGB_DI_PIN C6
#define RGBLED_NUM 1 // Number of LEDs
diff --git a/keyboards/ktec/staryu/info.json b/keyboards/ktec/staryu/info.json
index deaf3d140a..8971ec7021 100644
--- a/keyboards/ktec/staryu/info.json
+++ b/keyboards/ktec/staryu/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "staryu",
+ "keyboard_name": "Staryu",
+ "manufacturer": "K.T.E.C.",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0x2328",
+ "device_version": "2.0.5"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":1, "y":0}, {"x":2, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}]
diff --git a/keyboards/kudox/columner/config.h b/keyboards/kudox/columner/config.h
index 13a02bc803..a97d03596c 100644
--- a/keyboards/kudox/columner/config.h
+++ b/keyboards/kudox/columner/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xABBA
-#define PRODUCT_ID 0x9691
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Kumao Kobo
-#define PRODUCT The Kudox Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/kudox/columner/info.json b/keyboards/kudox/columner/info.json
index d11632d9da..2bc8ff50d3 100644
--- a/keyboards/kudox/columner/info.json
+++ b/keyboards/kudox/columner/info.json
@@ -1,7 +1,13 @@
{
+ "keyboard_name": "The Kudox Keyboard Columner",
+ "manufacturer": "Kumao Kobo",
"url": "http://kumaokobo.com/",
"maintainer": "Kumao Kobo",
- "keyboard_name": "Kudox Keyboard Columner",
+ "usb": {
+ "vid": "0xABBA",
+ "pid": "0x9691",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kudox/rev1/config.h b/keyboards/kudox/rev1/config.h
index de5dbbbe71..36a933dc2e 100644
--- a/keyboards/kudox/rev1/config.h
+++ b/keyboards/kudox/rev1/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xABBA
-#define PRODUCT_ID 0x9690
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Kumao Kobo
-#define PRODUCT The Kudox Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/kudox/rev1/info.json b/keyboards/kudox/rev1/info.json
index f92d525838..45f3a4e304 100644
--- a/keyboards/kudox/rev1/info.json
+++ b/keyboards/kudox/rev1/info.json
@@ -1,7 +1,13 @@
{
+ "keyboard_name": "The Kudox Keyboard Rev1",
+ "manufacturer": "Kumao Kobo",
"url": "http://kumaokobo.com/",
"maintainer": "Kumao Kobo",
- "keyboard_name": "Kudox Keyboard Rev1",
+ "usb": {
+ "vid": "0xABBA",
+ "pid": "0x9690",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kudox/rev2/config.h b/keyboards/kudox/rev2/config.h
index c510926919..36a933dc2e 100644
--- a/keyboards/kudox/rev2/config.h
+++ b/keyboards/kudox/rev2/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xABBA
-#define PRODUCT_ID 0x9690
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Kumao Kobo
-#define PRODUCT The Kudox Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/kudox/rev2/info.json b/keyboards/kudox/rev2/info.json
index 73cb5a525a..2af08beaf2 100644
--- a/keyboards/kudox/rev2/info.json
+++ b/keyboards/kudox/rev2/info.json
@@ -1,7 +1,13 @@
{
+ "keyboard_name": "The Kudox Keyboard Rev2",
+ "manufacturer": "Kumao Kobo",
"url": "http://kumaokobo.com/",
"maintainer": "Kumao Kobo",
- "keyboard_name": "Kudox Keyboard Rev2",
+ "usb": {
+ "vid": "0xABBA",
+ "pid": "0x9690",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kudox/rev3/config.h b/keyboards/kudox/rev3/config.h
index 969111d0c8..a97d03596c 100644
--- a/keyboards/kudox/rev3/config.h
+++ b/keyboards/kudox/rev3/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xABBA
-#define PRODUCT_ID 0x9690
-#define DEVICE_VER 0x0300
-#define MANUFACTURER Kumao Kobo
-#define PRODUCT The Kudox Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/kudox/rev3/info.json b/keyboards/kudox/rev3/info.json
index 84b5ce0f30..31975f28d7 100644
--- a/keyboards/kudox/rev3/info.json
+++ b/keyboards/kudox/rev3/info.json
@@ -1,7 +1,13 @@
{
+ "keyboard_name": "The Kudox Keyboard Rev3",
+ "manufacturer": "Kumao Kobo",
"url": "http://kumaokobo.com/",
"maintainer": "Kumao Kobo",
- "keyboard_name": "Kudox Keyboard Rev3",
+ "usb": {
+ "vid": "0xABBA",
+ "pid": "0x9690",
+ "device_version": "3.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kudox_full/readme.md b/keyboards/kudox_full/readme.md
index 185a1394d4..494d7508c8 100644
--- a/keyboards/kudox_full/readme.md
+++ b/keyboards/kudox_full/readme.md
@@ -16,7 +16,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
## Building Firmware
diff --git a/keyboards/kudox_full/rev1/config.h b/keyboards/kudox_full/rev1/config.h
index bd47ed6b42..79d63f3a29 100644
--- a/keyboards/kudox_full/rev1/config.h
+++ b/keyboards/kudox_full/rev1/config.h
@@ -5,13 +5,6 @@
#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
diff --git a/keyboards/kudox_full/rev1/info.json b/keyboards/kudox_full/rev1/info.json
index 7dfbf7c4e9..bb230b352c 100644
--- a/keyboards/kudox_full/rev1/info.json
+++ b/keyboards/kudox_full/rev1/info.json
@@ -1,7 +1,13 @@
{
+ "keyboard_name": "The Kudox Full Keyboard Rev1",
+ "manufacturer": "Kumao Kobo",
"url": "http://kumaokobo.com/",
"maintainer": "Kumao Kobo",
- "keyboard_name": "Kudox Full Keyboard Rev1",
+ "usb": {
+ "vid": "0xABBA",
+ "pid": "0x9693",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kudox_game/info.json b/keyboards/kudox_game/info.json
index 47fdd84b34..4cfc75850a 100644
--- a/keyboards/kudox_game/info.json
+++ b/keyboards/kudox_game/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "Kudox Game Keyboard",
+ "keyboard_name": "The Kudox Game Keyboard",
+ "manufacturer": "Kumao Kobo",
"url": "",
"maintainer": "Kumao Kobo",
+ "usb": {
+ "vid": "0xABBA",
+ "pid": "0x9696"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/kudox_game/rev1/config.h b/keyboards/kudox_game/rev1/config.h
index 821a6af8bb..1fc6411359 100644
--- a/keyboards/kudox_game/rev1/config.h
+++ b/keyboards/kudox_game/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xABBA
-#define PRODUCT_ID 0x9696
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Kumao Kobo
-#define PRODUCT The Kudox Game Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 7
diff --git a/keyboards/kudox_game/rev1/info.json b/keyboards/kudox_game/rev1/info.json
new file mode 100644
index 0000000000..ad889c2304
--- /dev/null
+++ b/keyboards/kudox_game/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/kudox_game/rev2/config.h b/keyboards/kudox_game/rev2/config.h
index e1907bf29f..f61b42eb7f 100644
--- a/keyboards/kudox_game/rev2/config.h
+++ b/keyboards/kudox_game/rev2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xABBA
-#define PRODUCT_ID 0x9696
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Kumao Kobo
-#define PRODUCT The Kudox Game Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 7
diff --git a/keyboards/kudox_game/rev2/info.json b/keyboards/kudox_game/rev2/info.json
new file mode 100644
index 0000000000..3bdd63ee28
--- /dev/null
+++ b/keyboards/kudox_game/rev2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/kv/revt/config.h b/keyboards/kv/revt/config.h
index b718de6784..19e72ad573 100644
--- a/keyboards/kv/revt/config.h
+++ b/keyboards/kv/revt/config.h
@@ -17,19 +17,11 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6565
-#define PRODUCT_ID 0x6520
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Hybrid
-#define PRODUCT KVT
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 21
#define MATRIX_ROW_PINS { A6, B13, B8, A0, A1, A2 }
#define MATRIX_COL_PINS { B7, B6, B5, B4, B3, B2, B14, B1, B15, B0, B9, B10, B11, B12, A14, A13, A4, A5, A7, A8, A15 }
-#define UNUSED_PINS { }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kv/revt/info.json b/keyboards/kv/revt/info.json
index 6f2b30b293..2b018ee654 100644
--- a/keyboards/kv/revt/info.json
+++ b/keyboards/kv/revt/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "KVT",
+ "manufacturer": "Hybrid",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x6565",
+ "pid": "0x6520",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/kv/revt/keymaps/default/keymap.c b/keyboards/kv/revt/keymaps/default/keymap.c
index 7f2d130e2c..dbbd4a9ed0 100644
--- a/keyboards/kv/revt/keymaps/default/keymap.c
+++ b/keyboards/kv/revt/keymaps/default/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, 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, _______, _______, _______, QK_BOOT, _______, _______, _______, _______,
+_______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, _______, QK_BOOT, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/kwub/bloop/config.h b/keyboards/kwub/bloop/config.h
index f3c0bae637..5abbd8d4f9 100644
--- a/keyboards/kwub/bloop/config.h
+++ b/keyboards/kwub/bloop/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6B77 // Kwub
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Kwub
-#define PRODUCT Bloop65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -34,7 +27,6 @@
{ F5, F4, C6, C7, D7 }
#define MATRIX_COL_PINS \
{ B4, B5, B6, F6, F1, F7, F0, B0, B7, D3, D2, D1, D5, D4, D6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/kwub/bloop/info.json b/keyboards/kwub/bloop/info.json
index aa87c2e452..ddce5d363a 100644
--- a/keyboards/kwub/bloop/info.json
+++ b/keyboards/kwub/bloop/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Bloop65",
+ "manufacturer": "Kwub",
"url": "https://geekhack.org/index.php?topic=110483.0",
"maintainer": "Kwub",
+ "usb": {
+ "vid": "0x6B77",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_625": {
"layout": [
diff --git a/keyboards/ky01/config.h b/keyboards/ky01/config.h
index e0b94622c6..47edbd2605 100644
--- a/keyboards/ky01/config.h
+++ b/keyboards/ky01/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B4F /* "KO" */
-#define PRODUCT_ID 0x4B59 /* "KY" */
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KnoblesseOblige
-#define PRODUCT KY-01
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6, B5, B4, D7, D4, D6 }
#define MATRIX_COL_PINS { B3, B7, D0, D1, D2, D3, D5, F0, F1, F4, F5, F6, F7, C7, C6, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ky01/info.json b/keyboards/ky01/info.json
index ef6498fb04..d80cb261a2 100644
--- a/keyboards/ky01/info.json
+++ b/keyboards/ky01/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ky01",
+ "keyboard_name": "KY-01",
+ "manufacturer": "KnoblesseOblige",
"url": "https://geekhack.org/index.php?topic=107809.0",
"maintainer": "KnoblesseOblige",
+ "usb": {
+ "vid": "0x4B4F",
+ "pid": "0x4B59",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/labbe/labbeminiv1/config.h b/keyboards/labbe/labbeminiv1/config.h
index ab1b25db3d..4b47be8db8 100644
--- a/keyboards/labbe/labbeminiv1/config.h
+++ b/keyboards/labbe/labbeminiv1/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xABBE
-#define PRODUCT_ID 0x4C4D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Labbe
-#define PRODUCT Labbe Mini V1
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { F5, F6 }
#define MATRIX_COL_PINS { F0, F1, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/labbe/labbeminiv1/info.json b/keyboards/labbe/labbeminiv1/info.json
index 34499f2c6a..b14a43903f 100644
--- a/keyboards/labbe/labbeminiv1/info.json
+++ b/keyboards/labbe/labbeminiv1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Labbe Mini V1",
+ "manufacturer": "Labbe",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xABBE",
+ "pid": "0x4C4D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_wasd": {
"layout": [{"x":1, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}]
diff --git a/keyboards/labyrinth75/config.h b/keyboards/labyrinth75/config.h
index afc77a8dd5..c944d14ed5 100644
--- a/keyboards/labyrinth75/config.h
+++ b/keyboards/labyrinth75/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4F53
-#define PRODUCT_ID 0x464B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Livi
-#define PRODUCT labyrinth75
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 9
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4, E6, D7, C6, D4, D0, D1, D2, D3 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/labyrinth75/info.json b/keyboards/labyrinth75/info.json
index 3871300dfe..d83e27c662 100644
--- a/keyboards/labyrinth75/info.json
+++ b/keyboards/labyrinth75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "labyrinth75",
+ "manufacturer": "Livi",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4F53",
+ "pid": "0x464B",
+ "device_version": "0.0.1"
+ },
"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":5.75, "y":0}, {"label":"F6", "x":6.75, "y":0}, {"label":"F7", "x":7.75, "y":0}, {"label":"F8", "x":8.75, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"PrtSc", "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":"Delete", "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":"Page Up", "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":"Page Down", "x":15, "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, "y":4.25}, {"label":"End", "x":15, "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":"Ctrl", "x":11.25, "y":5.25, "w":1.25}, {"label":"\u2190", "x":13, "y":5.25}, {"label":"\u2193", "x":14, "y":5.25}, {"label":"\u2192", "x":15, "y":5.25}]
diff --git a/keyboards/late9/config.h b/keyboards/late9/config.h
index a4dc07a7c4..6057518955 100644
--- a/keyboards/late9/config.h
+++ b/keyboards/late9/config.h
@@ -18,12 +18,6 @@ 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 0x3777
-#define MANUFACTURER rookiebwoy
-#define PRODUCT LATE-9
-
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/late9/readme.md b/keyboards/late9/readme.md
index 1d85e788fb..93e5a40823 100644
--- a/keyboards/late9/readme.md
+++ b/keyboards/late9/readme.md
@@ -20,7 +20,7 @@ Flashing example for this keyboard:
make late9/rev1:default:flash
-When asked by the terminal, short with a metal wire the pins on the backside of the board highlighted as `RST` (one is the `RESET` and the other one is `GROUND`) to enter the bootloader and let the OS detects the device.
+When asked by the terminal, short with a metal wire the pins on the backside of the board highlighted as `RST` (one is the `QK_BOOT` and the other one is `GROUND`) to enter the bootloader and let the OS detects the device.
After installing this firmware you can use Bootmagic to enter the bootloader while plugging in your LATE-9. By default it's the button on the upper-left of 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 [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/late9/rev1/config.h b/keyboards/late9/rev1/config.h
index 20d1a553cc..7521f34330 100644
--- a/keyboards/late9/rev1/config.h
+++ b/keyboards/late9/rev1/config.h
@@ -18,9 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0010
-
/* Column/Row IO definitions */
#define MATRIX_ROWS 6
#define MATRIX_COLS 3
diff --git a/keyboards/late9/rev1/info.json b/keyboards/late9/rev1/info.json
index 66175c9afa..b439b05347 100644
--- a/keyboards/late9/rev1/info.json
+++ b/keyboards/late9/rev1/info.json
@@ -1,8 +1,13 @@
{
"keyboard_name": "LATE-9",
- "keyboard_folder": "late9/rev1",
+ "manufacturer": "rookiebwoy",
"url": "https://github.com/rookiebwoy/late-9)",
"maintainer": "rookiebwoy",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3777",
+ "device_version": "0.1.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/latincompass/latin17rgb/config.h b/keyboards/latincompass/latin17rgb/config.h
index 02d8522606..585f632c40 100644
--- a/keyboards/latincompass/latin17rgb/config.h
+++ b/keyboards/latincompass/latin17rgb/config.h
@@ -18,11 +18,6 @@
/* USB Device descriptor parameter */
#include "config_common.h"
-#define VENDOR_ID 0x7C88 // "hw" = haierwangwei2005
-#define PRODUCT_ID 0x7C97 // "lp" = latin17RGB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 18438880
-#define PRODUCT Latin17RGB
/* key matrix size */
#define MATRIX_ROWS 5
@@ -40,7 +35,6 @@
*/
#define MATRIX_ROW_PINS {C7, C6, B6, B5, B4 }
#define MATRIX_COL_PINS {F7, F6, F5, F4}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/latincompass/latin17rgb/info.json b/keyboards/latincompass/latin17rgb/info.json
index 61aae4f8d6..fa2320474f 100644
--- a/keyboards/latincompass/latin17rgb/info.json
+++ b/keyboards/latincompass/latin17rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "latin17rgb",
+ "keyboard_name": "Latin17RGB",
+ "manufacturer": "18438880",
"url": "",
"maintainer": "18438880",
+ "usb": {
+ "vid": "0x7C88",
+ "pid": "0x7C97",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_5x4": {
"layout": [
diff --git a/keyboards/latincompass/latin47ble/config.h b/keyboards/latincompass/latin47ble/config.h
index eb10693501..019e18751d 100644
--- a/keyboards/latincompass/latin47ble/config.h
+++ b/keyboards/latincompass/latin47ble/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6C63 // "lc" = latincompass
-#define PRODUCT_ID 0x6C62 // "lb" = latin47BLE
-#define DEVICE_VER 0x0001
-#define MANUFACTURER latincompass
-#define PRODUCT Latin47BLE
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3 }
#define MATRIX_COL_PINS { D6, D7, B5, B6 ,C6, C7, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/latincompass/latin47ble/info.json b/keyboards/latincompass/latin47ble/info.json
index 56b14136d8..aeb6ad305e 100644
--- a/keyboards/latincompass/latin47ble/info.json
+++ b/keyboards/latincompass/latin47ble/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Latin47ble",
+ "keyboard_name": "Latin47BLE",
+ "manufacturer": "latincompass",
"url": "",
"maintainer": "latincompass",
+ "usb": {
+ "vid": "0x6C63",
+ "pid": "0x6C62",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_planck_mit": {
"layout": [
diff --git a/keyboards/latincompass/latin60rgb/config.h b/keyboards/latincompass/latin60rgb/config.h
index fa4ea39288..0058297dda 100644
--- a/keyboards/latincompass/latin60rgb/config.h
+++ b/keyboards/latincompass/latin60rgb/config.h
@@ -17,11 +17,6 @@
/* USB Device descriptor parameter */
#include "config_common.h"
-#define VENDOR_ID 0x6C63 // "lc" = latincompass
-#define PRODUCT_ID 0x6C69 // "lp" = latin60RGB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER latincompass
-#define PRODUCT Latin60RGB
/* key matrix size */
#define MATRIX_ROWS 5
@@ -39,7 +34,6 @@
*/
#define MATRIX_ROW_PINS {C7, C6, B6, B5, B4 }
#define MATRIX_COL_PINS {F7, F6, F5, F4, F1, F0, E6, B0, B1, B2, B3, D6, D4, D3}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/latincompass/latin60rgb/info.json b/keyboards/latincompass/latin60rgb/info.json
index a493befaf9..21765b94b9 100644
--- a/keyboards/latincompass/latin60rgb/info.json
+++ b/keyboards/latincompass/latin60rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "latin60rgb",
+ "keyboard_name": "Latin60RGB",
+ "manufacturer": "latincompass",
"url": "",
"maintainer": "latincompass",
+ "usb": {
+ "vid": "0x6C63",
+ "pid": "0x6C69",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_latin_hhkb": {
"layout": [
diff --git a/keyboards/latincompass/latin64ble/config.h b/keyboards/latincompass/latin64ble/config.h
index 68e8e7b293..5bb3ca4562 100644
--- a/keyboards/latincompass/latin64ble/config.h
+++ b/keyboards/latincompass/latin64ble/config.h
@@ -16,18 +16,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.*/
#pragma once
#include "config_common.h"
-#define VENDOR_ID 0x6C63 // "lc" = latincompass
-#define PRODUCT_ID 0x6C71 // "lp" = latin64BLE
-#define DEVICE_VER 0x0001
-#define MANUFACTURER latincompass
-#define PRODUCT Latin64BLE
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D6, D7, B5, B6 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6 }
-#define UNUSED_PINS
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/latincompass/latin64ble/info.json b/keyboards/latincompass/latin64ble/info.json
index 99fe62b266..b3475a2aab 100644
--- a/keyboards/latincompass/latin64ble/info.json
+++ b/keyboards/latincompass/latin64ble/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Latin64ble",
+ "keyboard_name": "Latin64BLE",
+ "manufacturer": "latincompass",
"url": "",
"maintainer": "latincompass",
+ "usb": {
+ "vid": "0x6C63",
+ "pid": "0x6C71",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/latincompass/latin6rgb/config.h b/keyboards/latincompass/latin6rgb/config.h
index 9beebe0f87..17083580a6 100644
--- a/keyboards/latincompass/latin6rgb/config.h
+++ b/keyboards/latincompass/latin6rgb/config.h
@@ -19,11 +19,6 @@
/* USB Device descriptor parameter */
#include "config_common.h"
-#define VENDOR_ID 0x7C88 // "hw" = haierwangwei
-#define PRODUCT_ID 0x7C96 // "lp" = latin6RGB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 18438880
-#define PRODUCT Latin6rgb
/* key matrix size */
#define MATRIX_ROWS 2
@@ -41,7 +36,6 @@
*/
#define MATRIX_ROW_PINS {C7, C6 }
#define MATRIX_COL_PINS {F7, F6, F5}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/latincompass/latin6rgb/info.json b/keyboards/latincompass/latin6rgb/info.json
index 26508e9320..a2c63ae8ea 100644
--- a/keyboards/latincompass/latin6rgb/info.json
+++ b/keyboards/latincompass/latin6rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "latin6rgb",
+ "keyboard_name": "Latin6rgb",
+ "manufacturer": "18438880",
"url": "",
"maintainer": "18438880",
+ "usb": {
+ "vid": "0x7C88",
+ "pid": "0x7C96",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_2x3": {
"layout": [
diff --git a/keyboards/latincompass/latinpad/config.h b/keyboards/latincompass/latinpad/config.h
index 5cff076d9d..255ddc89db 100644
--- a/keyboards/latincompass/latinpad/config.h
+++ b/keyboards/latincompass/latinpad/config.h
@@ -17,18 +17,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.*/
#pragma once
#include "config_common.h"
-#define VENDOR_ID 0x6C63 // "lc" = latincompass
-#define PRODUCT_ID 0x6C70 // "lp" = latinpad
-#define DEVICE_VER 0x0001
-#define MANUFACTURER latincompass
-#define PRODUCT latinpad
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1 }
#define MATRIX_COL_PINS { D4, C6, D7, E6 }
-#define UNUSED_PINS
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/latincompass/latinpad/info.json b/keyboards/latincompass/latinpad/info.json
index 0c86498e7d..0a2ef6f69b 100644
--- a/keyboards/latincompass/latinpad/info.json
+++ b/keyboards/latincompass/latinpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "latinpad",
+ "manufacturer": "latincompass",
"url": "https://github.com/latincompass/2-RotaryEncoder-pad",
"maintainer": "latincompass",
+ "usb": {
+ "vid": "0x6C63",
+ "pid": "0x6C70",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
diff --git a/keyboards/latincompass/latinpadble/config.h b/keyboards/latincompass/latinpadble/config.h
index fc833a0269..09198df612 100644
--- a/keyboards/latincompass/latinpadble/config.h
+++ b/keyboards/latincompass/latinpadble/config.h
@@ -17,11 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.*/
#pragma once
#include "config_common.h"
-#define VENDOR_ID 0x7C88 // "hw" = haierwangwei2005
-#define PRODUCT_ID 0x7C98 // "lp" = latinpadble
-#define DEVICE_VER 0x0001
-#define MANUFACTURER haierwangwei2005
-#define PRODUCT latinpadble
// #define NO_ACTION_LAYER
// #define NO_ACTION_TAPPING
@@ -32,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.*/
#define MATRIX_COLS 4
#define MATRIX_ROW_PINS { F0, F6, F5, F4, F1 }
#define MATRIX_COL_PINS { D6, D7, B5, B6 }
-#define UNUSED_PINS
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/latincompass/latinpadble/info.json b/keyboards/latincompass/latinpadble/info.json
index b640d3e46e..2f0bf01616 100644
--- a/keyboards/latincompass/latinpadble/info.json
+++ b/keyboards/latincompass/latinpadble/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "latinpadble",
+ "manufacturer": "haierwangwei2005",
"url": "https://github.com/latincompass/2-RotaryEncoder-pad",
"maintainer": "haierwangwei2005",
+ "usb": {
+ "vid": "0x7C88",
+ "pid": "0x7C98",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_pad": {
"layout": [
diff --git a/keyboards/lazydesigners/bolt/config.h b/keyboards/lazydesigners/bolt/config.h
index 37006c19e3..7139bca6ac 100644
--- a/keyboards/lazydesigners/bolt/config.h
+++ b/keyboards/lazydesigners/bolt/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C44 // "LD"
-#define PRODUCT_ID 0x0041
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LAZYDESIGNERS
-#define PRODUCT Bolt
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/lazydesigners/bolt/info.json b/keyboards/lazydesigners/bolt/info.json
index 6e669d4ca9..783293945d 100644
--- a/keyboards/lazydesigners/bolt/info.json
+++ b/keyboards/lazydesigners/bolt/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Bolt",
+ "manufacturer": "LAZYDESIGNERS",
"url": "http://lazydesigners.cn",
"maintainer": "LAZYDESIGNERS",
+ "usb": {
+ "vid": "0x4C44",
+ "pid": "0x0041",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/lazydesigners/bolt/readme.md b/keyboards/lazydesigners/bolt/readme.md
index d89bca097e..4d759ea706 100644
--- a/keyboards/lazydesigners/bolt/readme.md
+++ b/keyboards/lazydesigners/bolt/readme.md
@@ -16,6 +16,6 @@ Flashing example for this keyboard:
make lazydesigners/bolt:default:flash
-**Reset Key:** To enter the bootloader, either push the RESET button on the PCB or the RESET button on the FN layer.
+**Reset Key:** To enter the bootloader, either push the RESET button on the PCB or the `QK_BOOT` key on the FN 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).
diff --git a/keyboards/lazydesigners/cassette8/config.h b/keyboards/lazydesigners/cassette8/config.h
index ee20577e3d..4ccd6687fd 100755
--- a/keyboards/lazydesigners/cassette8/config.h
+++ b/keyboards/lazydesigners/cassette8/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C44 // "LD"
-#define PRODUCT_ID 0x0008
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LAZYDESIGNERS
-#define PRODUCT Cassette8
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
diff --git a/keyboards/lazydesigners/cassette8/info.json b/keyboards/lazydesigners/cassette8/info.json
index 980d4a3d93..24ba706b64 100755
--- a/keyboards/lazydesigners/cassette8/info.json
+++ b/keyboards/lazydesigners/cassette8/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Cassette8",
+ "manufacturer": "LAZYDESIGNERS",
"url": "http://lazydesigners.cn",
"maintainer": "Jacky@LAZYDESIGNERS",
+ "usb": {
+ "vid": "0x4C44",
+ "pid": "0x0008",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/lazydesigners/cassette8/readme.md b/keyboards/lazydesigners/cassette8/readme.md
index 7211bf5e97..b973c45037 100755
--- a/keyboards/lazydesigners/cassette8/readme.md
+++ b/keyboards/lazydesigners/cassette8/readme.md
@@ -16,6 +16,6 @@ Flashing example for this keyboard:
make lazydesigners/cassette8:default:flash
-**Reset Key:** To enter the bootloader, either push the RESET button on the PCB or the RESET button on the FN layer.
+**Reset Key:** To enter the bootloader, either push the RESET button on the PCB or the `QK_BOOT` key on the FN 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).
diff --git a/keyboards/lazydesigners/dimple/config.h b/keyboards/lazydesigners/dimple/config.h
index 7ed6da4064..4a8f7a1dce 100644
--- a/keyboards/lazydesigners/dimple/config.h
+++ b/keyboards/lazydesigners/dimple/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C44 // "LD"
-#define PRODUCT_ID 0x0040
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LazyDesigners
-#define PRODUCT Dimple
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, D4, D6, D7, B4, B5, B6, C6, C7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/lazydesigners/dimple/ortho/info.json b/keyboards/lazydesigners/dimple/ortho/info.json
index dbe70f821f..752f8293d4 100644
--- a/keyboards/lazydesigners/dimple/ortho/info.json
+++ b/keyboards/lazydesigners/dimple/ortho/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dimple",
+ "manufacturer": "LazyDesigners",
"url": "http://lazydesigners.cn",
"maintainer": "Jacky@LAZYDESIGNERS",
+ "usb": {
+ "vid": "0x4C44",
+ "pid": "0x0040",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_2u": {
"layout": [
diff --git a/keyboards/lazydesigners/dimple/readme.md b/keyboards/lazydesigners/dimple/readme.md
index 2e15cec2b9..b6e59272d6 100644
--- a/keyboards/lazydesigners/dimple/readme.md
+++ b/keyboards/lazydesigners/dimple/readme.md
@@ -21,6 +21,6 @@ Make example for this keyboard (after setting up your build environment):
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.
+To enter the bootloader, either short the pins on the PCB or the `QK_BOOT` key on the FN 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).
diff --git a/keyboards/lazydesigners/dimple/staggered/info.json b/keyboards/lazydesigners/dimple/staggered/info.json
index 4cfa1e6f18..cdce3c767c 100644
--- a/keyboards/lazydesigners/dimple/staggered/info.json
+++ b/keyboards/lazydesigners/dimple/staggered/info.json
@@ -1,54 +1,11 @@
{
"keyboard_name": "Dimple",
+ "manufacturer": "LazyDesigners",
"url": "http://lazydesigners.cn",
"maintainer": "Erovia",
- "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":"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}
- ]
- }
+ "usb": {
+ "vid": "0x4C44",
+ "pid": "0x0040",
+ "device_version": "0.0.1"
}
}
diff --git a/keyboards/lazydesigners/dimple/staggered/keymaps/erovia/keymap.c b/keyboards/lazydesigners/dimple/staggered/keymaps/erovia/keymap.c
index 6f893e187f..ed8a25166c 100644
--- a/keyboards/lazydesigners/dimple/staggered/keymaps/erovia/keymap.c
+++ b/keyboards/lazydesigners/dimple/staggered/keymaps/erovia/keymap.c
@@ -112,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_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,
+ EEP_RST, QK_BOOT, 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
@@ -131,7 +131,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_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,
+ EEP_RST, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_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
diff --git a/keyboards/lazydesigners/dimple/staggered/keymaps/oncesavedgaming/keymap.c b/keyboards/lazydesigners/dimple/staggered/keymaps/oncesavedgaming/keymap.c
index e4b4161b04..e490d68900 100644
--- a/keyboards/lazydesigners/dimple/staggered/keymaps/oncesavedgaming/keymap.c
+++ b/keyboards/lazydesigners/dimple/staggered/keymaps/oncesavedgaming/keymap.c
@@ -18,6 +18,6 @@
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),
+ [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, QK_BOOT, 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/staggered/rev1/info.json b/keyboards/lazydesigners/dimple/staggered/rev1/info.json
new file mode 100644
index 0000000000..7fe8c59ccb
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/rev1/info.json
@@ -0,0 +1,54 @@
+{
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0, "matrix": [0, 0]},
+ {"label":"Q", "x":1, "y":0, "matrix": [0, 1]},
+ {"label":"W", "x":2, "y":0, "matrix": [0, 2]},
+ {"label":"E", "x":3, "y":0, "matrix": [0, 3]},
+ {"label":"R", "x":4, "y":0, "matrix": [0, 4]},
+ {"label":"T", "x":5, "y":0, "matrix": [0, 5]},
+ {"label":"Y", "x":6, "y":0, "matrix": [0, 6]},
+ {"label":"U", "x":7, "y":0, "matrix": [0, 7]},
+ {"label":"I", "x":8, "y":0, "matrix": [0, 8]},
+ {"label":"O", "x":9, "y":0, "matrix": [0, 9]},
+ {"label":"P", "x":10, "y":0, "matrix": [0, 10]},
+ {"label":"Back<br>Space", "x":11, "y":0, "w":1.5, "matrix": [0, 11]},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.25, "matrix": [1, 0]},
+ {"label":"A", "x":1.25, "y":1, "matrix": [1, 1]},
+ {"label":"S", "x":2.25, "y":1, "matrix": [1, 2]},
+ {"label":"D", "x":3.25, "y":1, "matrix": [1, 3]},
+ {"label":"F", "x":4.25, "y":1, "matrix": [1, 4]},
+ {"label":"G", "x":5.25, "y":1, "matrix": [1, 5]},
+ {"label":"H", "x":6.25, "y":1, "matrix": [1, 6]},
+ {"label":"J", "x":7.25, "y":1, "matrix": [1, 7]},
+ {"label":"K", "x":8.25, "y":1, "matrix": [1, 8]},
+ {"label":"L", "x":9.25, "y":1, "matrix": [1, 9]},
+ {"label":"'", "x":10.25, "y":1, "matrix": [1, 10]},
+ {"label":"Enter", "x":11.25, "y":1, "w":1.25, "matrix": [1, 11]},
+
+ {"label":"Shift", "x":0, "y":2, "w":1.75, "matrix": [2, 0]},
+ {"label":"Z", "x":1.75, "y":2, "matrix": [2, 1]},
+ {"label":"X", "x":2.75, "y":2, "matrix": [2, 2]},
+ {"label":"C", "x":3.75, "y":2, "matrix": [2, 3]},
+ {"label":"V", "x":4.75, "y":2, "matrix": [2, 4]},
+ {"label":"B", "x":5.75, "y":2, "matrix": [2, 5]},
+ {"label":"N", "x":6.75, "y":2, "matrix": [2, 6]},
+ {"label":"M", "x":7.75, "y":2, "matrix": [2, 7]},
+ {"label":",", "x":8.75, "y":2, "matrix": [2, 8]},
+ {"label":"Up", "x":9.75, "y":2, "matrix": [2, 9]},
+ {"label":".", "x":10.75, "y":2, "w":1.75, "matrix": [2, 10]},
+
+ {"label":"Ctrl", "x":0.75, "y":3, "matrix": [3, 0]},
+ {"label":"Gui", "x":1.75, "y":3, "matrix": [3, 2]},
+ {"label":"Alt", "x":2.75, "y":3, "matrix": [3, 3]},
+ {"label":"Space", "x":3.75, "y":3, "w":2.25, "matrix": [3, 4]},
+ {"label":"Space", "x":6, "y":3, "w":2.75, "matrix": [3, 6]},
+ {"label":"Left", "x":8.75, "y":3, "matrix": [3, 7]},
+ {"label":"Down", "x":9.75, "y":3, "matrix": [3, 8]},
+ {"label":"Right", "x":10.75, "y":3, "matrix": [3, 9]}
+ ]
+ }
+ }
+}
diff --git a/keyboards/lazydesigners/dimple/staggered/rev2/info.json b/keyboards/lazydesigners/dimple/staggered/rev2/info.json
new file mode 100644
index 0000000000..7fe8c59ccb
--- /dev/null
+++ b/keyboards/lazydesigners/dimple/staggered/rev2/info.json
@@ -0,0 +1,54 @@
+{
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0, "matrix": [0, 0]},
+ {"label":"Q", "x":1, "y":0, "matrix": [0, 1]},
+ {"label":"W", "x":2, "y":0, "matrix": [0, 2]},
+ {"label":"E", "x":3, "y":0, "matrix": [0, 3]},
+ {"label":"R", "x":4, "y":0, "matrix": [0, 4]},
+ {"label":"T", "x":5, "y":0, "matrix": [0, 5]},
+ {"label":"Y", "x":6, "y":0, "matrix": [0, 6]},
+ {"label":"U", "x":7, "y":0, "matrix": [0, 7]},
+ {"label":"I", "x":8, "y":0, "matrix": [0, 8]},
+ {"label":"O", "x":9, "y":0, "matrix": [0, 9]},
+ {"label":"P", "x":10, "y":0, "matrix": [0, 10]},
+ {"label":"Back<br>Space", "x":11, "y":0, "w":1.5, "matrix": [0, 11]},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.25, "matrix": [1, 0]},
+ {"label":"A", "x":1.25, "y":1, "matrix": [1, 1]},
+ {"label":"S", "x":2.25, "y":1, "matrix": [1, 2]},
+ {"label":"D", "x":3.25, "y":1, "matrix": [1, 3]},
+ {"label":"F", "x":4.25, "y":1, "matrix": [1, 4]},
+ {"label":"G", "x":5.25, "y":1, "matrix": [1, 5]},
+ {"label":"H", "x":6.25, "y":1, "matrix": [1, 6]},
+ {"label":"J", "x":7.25, "y":1, "matrix": [1, 7]},
+ {"label":"K", "x":8.25, "y":1, "matrix": [1, 8]},
+ {"label":"L", "x":9.25, "y":1, "matrix": [1, 9]},
+ {"label":"'", "x":10.25, "y":1, "matrix": [1, 10]},
+ {"label":"Enter", "x":11.25, "y":1, "w":1.25, "matrix": [1, 11]},
+
+ {"label":"Shift", "x":0, "y":2, "w":1.75, "matrix": [2, 0]},
+ {"label":"Z", "x":1.75, "y":2, "matrix": [2, 1]},
+ {"label":"X", "x":2.75, "y":2, "matrix": [2, 2]},
+ {"label":"C", "x":3.75, "y":2, "matrix": [2, 3]},
+ {"label":"V", "x":4.75, "y":2, "matrix": [2, 4]},
+ {"label":"B", "x":5.75, "y":2, "matrix": [2, 5]},
+ {"label":"N", "x":6.75, "y":2, "matrix": [2, 6]},
+ {"label":"M", "x":7.75, "y":2, "matrix": [2, 7]},
+ {"label":",", "x":8.75, "y":2, "matrix": [2, 8]},
+ {"label":"Up", "x":9.75, "y":2, "matrix": [2, 9]},
+ {"label":".", "x":10.75, "y":2, "w":1.75, "matrix": [2, 10]},
+
+ {"label":"Ctrl", "x":0.75, "y":3, "matrix": [3, 0]},
+ {"label":"Gui", "x":1.75, "y":3, "matrix": [3, 2]},
+ {"label":"Alt", "x":2.75, "y":3, "matrix": [3, 3]},
+ {"label":"Space", "x":3.75, "y":3, "w":2.25, "matrix": [3, 4]},
+ {"label":"Space", "x":6, "y":3, "w":2.75, "matrix": [3, 6]},
+ {"label":"Left", "x":8.75, "y":3, "matrix": [3, 7]},
+ {"label":"Down", "x":9.75, "y":3, "matrix": [3, 8]},
+ {"label":"Right", "x":10.75, "y":3, "matrix": [3, 9]}
+ ]
+ }
+ }
+}
diff --git a/keyboards/lazydesigners/dimple/staggered/rev3/info.json b/keyboards/lazydesigners/dimple/staggered/rev3/info.json
index eb1d8b14dc..d1e1568035 100644
--- a/keyboards/lazydesigners/dimple/staggered/rev3/info.json
+++ b/keyboards/lazydesigners/dimple/staggered/rev3/info.json
@@ -1,144 +1,150 @@
{
- "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}
- ]
+ {"label":"Esc", "x":0, "y":0, "matrix": [0, 0]},
+ {"label":"Q", "x":1, "y":0, "matrix": [0, 1]},
+ {"label":"W", "x":2, "y":0, "matrix": [0, 2]},
+ {"label":"E", "x":3, "y":0, "matrix": [0, 3]},
+ {"label":"R", "x":4, "y":0, "matrix": [0, 4]},
+ {"label":"T", "x":5, "y":0, "matrix": [0, 5]},
+ {"label":"Y", "x":6, "y":0, "matrix": [0, 6]},
+ {"label":"U", "x":7, "y":0, "matrix": [0, 7]},
+ {"label":"I", "x":8, "y":0, "matrix": [0, 8]},
+ {"label":"O", "x":9, "y":0, "matrix": [0, 9]},
+ {"label":"P", "x":10, "y":0, "matrix": [0, 10]},
+ {"label":"Back<br>Space", "x":11, "y":0, "w":1.5, "matrix": [0, 11]},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.25, "matrix": [1, 0]},
+ {"label":"A", "x":1.25, "y":1, "matrix": [1, 1]},
+ {"label":"S", "x":2.25, "y":1, "matrix": [1, 2]},
+ {"label":"D", "x":3.25, "y":1, "matrix": [1, 3]},
+ {"label":"F", "x":4.25, "y":1, "matrix": [1, 4]},
+ {"label":"G", "x":5.25, "y":1, "matrix": [1, 5]},
+ {"label":"H", "x":6.25, "y":1, "matrix": [1, 6]},
+ {"label":"J", "x":7.25, "y":1, "matrix": [1, 7]},
+ {"label":"K", "x":8.25, "y":1, "matrix": [1, 8]},
+ {"label":"L", "x":9.25, "y":1, "matrix": [1, 9]},
+ {"label":"'", "x":10.25, "y":1, "matrix": [1, 10]},
+ {"label":"Enter", "x":11.25, "y":1, "w":1.25, "matrix": [1, 11]},
+
+ {"label":"Shift", "x":0, "y":2, "w":1.75, "matrix": [2, 0]},
+ {"label":"Z", "x":1.75, "y":2, "matrix": [2, 1]},
+ {"label":"X", "x":2.75, "y":2, "matrix": [2, 2]},
+ {"label":"C", "x":3.75, "y":2, "matrix": [2, 3]},
+ {"label":"V", "x":4.75, "y":2, "matrix": [2, 4]},
+ {"label":"B", "x":5.75, "y":2, "matrix": [2, 5]},
+ {"label":"N", "x":6.75, "y":2, "matrix": [2, 6]},
+ {"label":"M", "x":7.75, "y":2, "matrix": [2, 7]},
+ {"label":",", "x":8.75, "y":2, "matrix": [2, 8]},
+ {"label":"Up", "x":9.75, "y":2, "matrix": [2, 9]},
+ {"label":".", "x":10.75, "y":2, "w":1.75, "matrix": [2, 10]},
+
+ {"label":"Ctrl", "x":0.75, "y":3, "matrix": [3, 0]},
+ {"label":"Gui", "x":1.75, "y":3, "matrix": [3, 2]},
+ {"label":"Alt", "x":2.75, "y":3, "matrix": [3, 3]},
+ {"label":"Space", "x":3.75, "y":3, "w":2.25, "matrix": [3, 4]},
+ {"label":"Space", "x":6, "y":3, "w":2.75, "matrix": [3, 6]},
+ {"label":"Left", "x":8.75, "y":3, "matrix": [3, 7]},
+ {"label":"Down", "x":9.75, "y":3, "matrix": [3, 8]},
+ {"label":"Right", "x":10.75, "y":3, "matrix": [3, 9]}
+ ]
},
"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}
- ]
+ {"label":"Esc", "x":0, "y":0, "matrix": [0, 0]},
+ {"label":"Q", "x":1, "y":0, "matrix": [0, 1]},
+ {"label":"W", "x":2, "y":0, "matrix": [0, 2]},
+ {"label":"E", "x":3, "y":0, "matrix": [0, 3]},
+ {"label":"R", "x":4, "y":0, "matrix": [0, 4]},
+ {"label":"T", "x":5, "y":0, "matrix": [0, 5]},
+ {"label":"Y", "x":6, "y":0, "matrix": [0, 6]},
+ {"label":"U", "x":7, "y":0, "matrix": [0, 7]},
+ {"label":"I", "x":8, "y":0, "matrix": [0, 8]},
+ {"label":"O", "x":9, "y":0, "matrix": [0, 9]},
+ {"label":"P", "x":10, "y":0, "matrix": [0, 10]},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.25, "matrix": [1, 0]},
+ {"label":"A", "x":1.25, "y":1, "matrix": [1, 1]},
+ {"label":"S", "x":2.25, "y":1, "matrix": [1, 2]},
+ {"label":"D", "x":3.25, "y":1, "matrix": [1, 3]},
+ {"label":"F", "x":4.25, "y":1, "matrix": [1, 4]},
+ {"label":"G", "x":5.25, "y":1, "matrix": [1, 5]},
+ {"label":"H", "x":6.25, "y":1, "matrix": [1, 6]},
+ {"label":"J", "x":7.25, "y":1, "matrix": [1, 7]},
+ {"label":"K", "x":8.25, "y":1, "matrix": [1, 8]},
+ {"label":"L", "x":9.25, "y":1, "matrix": [1, 9]},
+ {"label":"'", "x":10.25, "y":1, "matrix": [1, 10]},
+ {"label":"Enter", "x":11.25, "y":0, "w":1.25,"h":2, "matrix": [1, 11]},
+
+ {"label":"Shift", "x":0, "y":2, "w":1.75, "matrix": [2, 0]},
+ {"label":"Z", "x":1.75, "y":2, "matrix": [2, 1]},
+ {"label":"X", "x":2.75, "y":2, "matrix": [2, 2]},
+ {"label":"C", "x":3.75, "y":2, "matrix": [2, 3]},
+ {"label":"V", "x":4.75, "y":2, "matrix": [2, 4]},
+ {"label":"B", "x":5.75, "y":2, "matrix": [2, 5]},
+ {"label":"N", "x":6.75, "y":2, "matrix": [2, 6]},
+ {"label":"M", "x":7.75, "y":2, "matrix": [2, 7]},
+ {"label":",", "x":8.75, "y":2, "matrix": [2, 8]},
+ {"label":"Up", "x":9.75, "y":2, "matrix": [2, 9]},
+ {"label":".", "x":10.75, "y":2, "w":1.75, "matrix": [2, 10]},
+
+ {"label":"Ctrl", "x":0.75, "y":3, "matrix": [3, 0]},
+ {"label":"Gui", "x":1.75, "y":3, "matrix": [3, 2]},
+ {"label":"Alt", "x":2.75, "y":3, "matrix": [3, 3]},
+ {"label":"Space", "x":3.75, "y":3, "w":2.25, "matrix": [3, 4]},
+ {"label":"Space", "x":6, "y":3, "w":2.75, "matrix": [3, 6]},
+ {"label":"Left", "x":8.75, "y":3, "matrix": [3, 7]},
+ {"label":"Down", "x":9.75, "y":3, "matrix": [3, 8]},
+ {"label":"Right", "x":10.75, "y":3, "matrix": [3, 9]}
+ ]
},
"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}
- ]
+ {"label":"Esc", "x":0, "y":0, "matrix": [0, 0]},
+ {"label":"Q", "x":1, "y":0, "matrix": [0, 1]},
+ {"label":"W", "x":2, "y":0, "matrix": [0, 2]},
+ {"label":"E", "x":3, "y":0, "matrix": [0, 3]},
+ {"label":"R", "x":4, "y":0, "matrix": [0, 4]},
+ {"label":"T", "x":5, "y":0, "matrix": [0, 5]},
+ {"label":"Y", "x":6, "y":0, "matrix": [0, 6]},
+ {"label":"U", "x":7, "y":0, "matrix": [0, 7]},
+ {"label":"I", "x":8, "y":0, "matrix": [0, 8]},
+ {"label":"O", "x":9, "y":0, "matrix": [0, 9]},
+ {"label":"P", "x":10, "y":0, "matrix": [0, 10]},
+ {"label":"Back<br>Space", "x":11, "y":0, "w":1.5, "matrix": [0, 11]},
+
+ {"label":"Tab", "x":0, "y":1, "w":1.25, "matrix": [1, 0]},
+ {"label":"A", "x":1.25, "y":1, "matrix": [1, 1]},
+ {"label":"S", "x":2.25, "y":1, "matrix": [1, 2]},
+ {"label":"D", "x":3.25, "y":1, "matrix": [1, 3]},
+ {"label":"F", "x":4.25, "y":1, "matrix": [1, 4]},
+ {"label":"G", "x":5.25, "y":1, "matrix": [1, 5]},
+ {"label":"H", "x":6.25, "y":1, "matrix": [1, 6]},
+ {"label":"J", "x":7.25, "y":1, "matrix": [1, 7]},
+ {"label":"K", "x":8.25, "y":1, "matrix": [1, 8]},
+ {"label":"L", "x":9.25, "y":1, "matrix": [1, 9]},
+ {"label":"'", "x":10.25, "y":1, "matrix": [1, 10]},
+ {"label":"Enter", "x":11.25, "y":1, "w":1.25, "matrix": [1, 11]},
+
+ {"label":"Shift", "x":0, "y":2, "w":1.75, "matrix": [2, 0]},
+ {"label":"Z", "x":1.75, "y":2, "matrix": [2, 1]},
+ {"label":"X", "x":2.75, "y":2, "matrix": [2, 2]},
+ {"label":"C", "x":3.75, "y":2, "matrix": [2, 3]},
+ {"label":"V", "x":4.75, "y":2, "matrix": [2, 4]},
+ {"label":"B", "x":5.75, "y":2, "matrix": [2, 5]},
+ {"label":"N", "x":6.75, "y":2, "matrix": [2, 6]},
+ {"label":"M", "x":7.75, "y":2, "matrix": [2, 7]},
+ {"label":",", "x":8.75, "y":2, "matrix": [2, 8]},
+ {"label":"Up", "x":9.75, "y":2, "matrix": [2, 9]},
+ {"label":".", "x":10.75, "y":2, "w":1.75, "matrix": [2, 10]},
+
+ {"label":"Ctrl", "x":0.75, "y":3, "matrix": [3, 0]},
+ {"label":"Gui", "x":1.75, "y":3, "matrix": [3, 2]},
+ {"label":"Space", "x":2.75, "y":3, "w":7, "matrix": [3, 4]},
+ {"label":"Down", "x":9.75, "y":3, "matrix": [3, 8]},
+ {"label":"Right", "x":10.75, "y":3, "matrix": [3, 9]}
+ ]
}
}
}
diff --git a/keyboards/lazydesigners/dimple/staggered/rev3/rev3.c b/keyboards/lazydesigners/dimple/staggered/rev3/rev3.c
deleted file mode 100644
index afa1d38b6d..0000000000
--- a/keyboards/lazydesigners/dimple/staggered/rev3/rev3.c
+++ /dev/null
@@ -1,16 +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 "rev3.h"
diff --git a/keyboards/lazydesigners/dimple/staggered/rev3/rev3.h b/keyboards/lazydesigners/dimple/staggered/rev3/rev3.h
deleted file mode 100644
index 2aec210d9e..0000000000
--- a/keyboards/lazydesigners/dimple/staggered/rev3/rev3.h
+++ /dev/null
@@ -1,90 +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_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/staggered.h b/keyboards/lazydesigners/dimple/staggered/staggered.h
index 433de3b897..bdaddb7750 100644
--- a/keyboards/lazydesigners/dimple/staggered/staggered.h
+++ b/keyboards/lazydesigners/dimple/staggered/staggered.h
@@ -17,29 +17,5 @@
#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/config.h b/keyboards/lazydesigners/dimpleplus/config.h
index d85d72412d..b96be3b18f 100644
--- a/keyboards/lazydesigners/dimpleplus/config.h
+++ b/keyboards/lazydesigners/dimpleplus/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C44 // "LD"
-#define PRODUCT_ID 0x0061
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LAZYDESIGNERS
-#define PRODUCT Dimpleplus
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
diff --git a/keyboards/lazydesigners/dimpleplus/info.json b/keyboards/lazydesigners/dimpleplus/info.json
index aab9e66dfd..7ba8b08812 100644
--- a/keyboards/lazydesigners/dimpleplus/info.json
+++ b/keyboards/lazydesigners/dimpleplus/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dimpleplus",
+ "manufacturer": "LAZYDESIGNERS",
"url": "http://lazydesigners.cn",
"maintainer": "LAZYDESIGNERS",
+ "usb": {
+ "vid": "0x4C44",
+ "pid": "0x0061",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/lazydesigners/dimpleplus/readme.md b/keyboards/lazydesigners/dimpleplus/readme.md
index fc5881cdc1..78db492427 100644
--- a/keyboards/lazydesigners/dimpleplus/readme.md
+++ b/keyboards/lazydesigners/dimpleplus/readme.md
@@ -14,6 +14,6 @@ Flashing example for this keyboard:
make lazydesigners/dimpleplus:default:flash
-**Reset Key:** To enter the bootloader, either push the RESET button on the PCB or the RESET button on the FN layer.
+**Reset Key:** To enter the bootloader, either push the RESET button on the PCB or the `QK_BOOT` key on the FN 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).
diff --git a/keyboards/lazydesigners/the30/config.h b/keyboards/lazydesigners/the30/config.h
index 0fcfa7dd4f..3ba91fdae3 100644
--- a/keyboards/lazydesigners/the30/config.h
+++ b/keyboards/lazydesigners/the30/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C44 // "LD"
-#define PRODUCT_ID 0x0030
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LazyDesigners
-#define PRODUCT THE30
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 10
diff --git a/keyboards/lazydesigners/the30/info.json b/keyboards/lazydesigners/the30/info.json
index 7f423620f4..647f12ca27 100644
--- a/keyboards/lazydesigners/the30/info.json
+++ b/keyboards/lazydesigners/the30/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "THE30",
+ "manufacturer": "LazyDesigners",
"url": "http://lazydesigners.cn",
"maintainer": "Erovia",
+ "usb": {
+ "vid": "0x4C44",
+ "pid": "0x0030",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_3x10": {
"layout": [
diff --git a/keyboards/lazydesigners/the40/config.h b/keyboards/lazydesigners/the40/config.h
index b199f23a09..0fe62548ea 100644
--- a/keyboards/lazydesigners/the40/config.h
+++ b/keyboards/lazydesigners/the40/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C44 // "LD"
-#define PRODUCT_ID 0x0042
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LAZYDESIGNERS
-#define PRODUCT THE40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/lazydesigners/the40/info.json b/keyboards/lazydesigners/the40/info.json
index 5af86fc923..2afadd83ee 100644
--- a/keyboards/lazydesigners/the40/info.json
+++ b/keyboards/lazydesigners/the40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "THE40",
+ "manufacturer": "LAZYDESIGNERS",
"url": "http://lazydesigners.cn",
"maintainer": "LAZYDESIGNERS",
+ "usb": {
+ "vid": "0x4C44",
+ "pid": "0x0042",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/lazydesigners/the40/keymaps/ortho/keymap.c b/keyboards/lazydesigners/the40/keymaps/ortho/keymap.c
index e81bdaa1c7..18f4ad9e9e 100644
--- a/keyboards/lazydesigners/the40/keymaps/ortho/keymap.c
+++ b/keyboards/lazydesigners/the40/keymaps/ortho/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_ortho(
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,
+ QK_BOOT, 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_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
),
diff --git a/keyboards/lazydesigners/the40/readme.md b/keyboards/lazydesigners/the40/readme.md
index e618967561..2b0a163628 100644
--- a/keyboards/lazydesigners/the40/readme.md
+++ b/keyboards/lazydesigners/the40/readme.md
@@ -21,6 +21,6 @@ Flashing example for this keyboard:
make lazydesigners/the40:default:flash
-**Reset Key:** To enter the bootloader, either push the RESET button on the PCB or the RESET button on the FN layer.
+**Reset Key:** To enter the bootloader, either push the RESET button on the PCB or the `QK_BOOT` key on the FN 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).
diff --git a/keyboards/lazydesigners/the50/config.h b/keyboards/lazydesigners/the50/config.h
index 2a546a6665..53ee2b2bbb 100644
--- a/keyboards/lazydesigners/the50/config.h
+++ b/keyboards/lazydesigners/the50/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C44 // "LD"
-#define PRODUCT_ID 0x0050
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LazyDesigners
-#define PRODUCT THE50
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 15
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, B1, B2, B3 }
#define MATRIX_COL_PINS { B5, D0, D1, D2, D3, D4, D5, D6, D7, C6, C7, F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/lazydesigners/the50/info.json b/keyboards/lazydesigners/the50/info.json
index 536c5da1d2..ebf94646be 100644
--- a/keyboards/lazydesigners/the50/info.json
+++ b/keyboards/lazydesigners/the50/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "THE50",
+ "manufacturer": "LazyDesigners",
"url": "http://lazydesigners.cn",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4C44",
+ "pid": "0x0050",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/lazydesigners/the50/keymaps/mikethetiger/keymap.c b/keyboards/lazydesigners/the50/keymaps/mikethetiger/keymap.c
index 18261dbba6..ab1c35c51a 100644
--- a/keyboards/lazydesigners/the50/keymaps/mikethetiger/keymap.c
+++ b/keyboards/lazydesigners/the50/keymaps/mikethetiger/keymap.c
@@ -62,7 +62,7 @@ _______, _______, _______, _______, _______,
*/
[_L2] = LAYOUT(
-RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_DEL, KC_HOME, KC_PGUP, _______,
+QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_DEL, KC_HOME, KC_PGUP, _______,
_______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_END, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______,
EEP_RST, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT
diff --git a/keyboards/lazydesigners/the50/readme.md b/keyboards/lazydesigners/the50/readme.md
index d90dc59de6..5b9e7c7bf7 100644
--- a/keyboards/lazydesigners/the50/readme.md
+++ b/keyboards/lazydesigners/the50/readme.md
@@ -12,6 +12,6 @@ Make example for this keyboard (after setting up your build environment):
make lazydesigners/the50:default:dfu
-To enter the bootloader, either short the pins on the PCB or the RESET button on the FN layer.
+To enter the bootloader, either short the pins on the PCB or the `QK_BOOT` key on the FN 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).
diff --git a/keyboards/lazydesigners/the60/rev1/config.h b/keyboards/lazydesigners/the60/rev1/config.h
index dd0b8b553d..4d50f75296 100755
--- a/keyboards/lazydesigners/the60/rev1/config.h
+++ b/keyboards/lazydesigners/the60/rev1/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C44 // "LD"
-#define PRODUCT_ID 0x0060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LazyDesigners
-#define PRODUCT THE60 rev1
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 }
#define MATRIX_COL_PINS { B5, D0, D1, D2, D3, D4, D5, D6, D7, C6, C7, F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/lazydesigners/the60/rev1/info.json b/keyboards/lazydesigners/the60/rev1/info.json
index 8ab5056bf6..b177b0c23d 100755
--- a/keyboards/lazydesigners/the60/rev1/info.json
+++ b/keyboards/lazydesigners/the60/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "THE60 rev1",
+ "manufacturer": "LazyDesigners",
"url": "http://lazydesigners.cn",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4C44",
+ "pid": "0x0060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_spc_split_bspc": {
"layout": [
diff --git a/keyboards/lazydesigners/the60/rev2/config.h b/keyboards/lazydesigners/the60/rev2/config.h
index c54dbfd44f..aa12abe6e5 100755
--- a/keyboards/lazydesigners/the60/rev2/config.h
+++ b/keyboards/lazydesigners/the60/rev2/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4c44 // "LD"
-#define PRODUCT_ID 0x0062
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LAZYDESIGNERS
-#define PRODUCT THE60 rev2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/lazydesigners/the60/rev2/info.json b/keyboards/lazydesigners/the60/rev2/info.json
index 05540cd308..e2e9ff2185 100755
--- a/keyboards/lazydesigners/the60/rev2/info.json
+++ b/keyboards/lazydesigners/the60/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "THE60rev2",
+ "keyboard_name": "THE60 rev2",
+ "manufacturer": "LAZYDESIGNERS",
"url": "http://lazydesigners.cn",
"maintainer": "LAZYDESIGNERS",
+ "usb": {
+ "vid": "0x4C44",
+ "pid": "0x0062",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/lazydesigners/the60/rev2/readme.md b/keyboards/lazydesigners/the60/rev2/readme.md
index 2c01cee1d8..12f51a06af 100755
--- a/keyboards/lazydesigners/the60/rev2/readme.md
+++ b/keyboards/lazydesigners/the60/rev2/readme.md
@@ -16,6 +16,6 @@
make lazydesigners/the60/rev2:default:flash
- **Reset Key:** To enter the bootloader, either push the RESET button on the PCB or the RESET button on the FN layer.
+ **Reset Key:** To enter the bootloader, either push the RESET button on the PCB or the `QK_BOOT` key on the FN 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/leafcutterlabs/bigknob/config.h b/keyboards/leafcutterlabs/bigknob/config.h
index 1f1ac4e98d..3034c0e2f4 100644
--- a/keyboards/leafcutterlabs/bigknob/config.h
+++ b/keyboards/leafcutterlabs/bigknob/config.h
@@ -19,13 +19,6 @@ 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 PRODUCT_ID 0x0007
-#define DEVICE_VER 0x0001
-#define MANUFACTURER leafcutterlabs
-#define PRODUCT bigKNOB
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 5
@@ -46,7 +39,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIRECT_PINS { \
{ B7, D4, D6, F6, F7} \
}
-#define UNUSED_PINS
/* rotary encoder 1,2,3 closest to usb port is 0*/
#define ENCODERS_PAD_A { D0}
diff --git a/keyboards/leafcutterlabs/bigknob/info.json b/keyboards/leafcutterlabs/bigknob/info.json
index e080042281..39ace77b12 100644
--- a/keyboards/leafcutterlabs/bigknob/info.json
+++ b/keyboards/leafcutterlabs/bigknob/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "bigknob",
+ "keyboard_name": "bigKNOB",
+ "manufacturer": "leafcutterlabs",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xCEEB",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_1x5": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}]
diff --git a/keyboards/leeku/finger65/config.h b/keyboards/leeku/finger65/config.h
index 82457635b3..10cf15b91f 100644
--- a/keyboards/leeku/finger65/config.h
+++ b/keyboards/leeku/finger65/config.h
@@ -19,13 +19,6 @@ 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 0x6050
-#define DEVICE_VER 0x0100
-#define MANUFACTURER LeeKu
-#define PRODUCT Finger65
-
#define RGBLED_NUM 12
/* key matrix size */
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, B2, B3, B4, B5, B6, B7 }
#define MATRIX_ROW_PINS { C3, C4, C5, C6, C7 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/leeku/finger65/info.json b/keyboards/leeku/finger65/info.json
index 5ecfb5fbad..b50c676e5b 100644
--- a/keyboards/leeku/finger65/info.json
+++ b/keyboards/leeku/finger65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Leeku Finger65",
+ "keyboard_name": "Finger65",
+ "manufacturer": "LeeKu",
"url": "",
"maintainer": "sidcarter",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6050",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/leeku/finger65/keymaps/madhatter/keymap.c b/keyboards/leeku/finger65/keymaps/madhatter/keymap.c
index a69fe69153..03bee2dcc7 100644
--- a/keyboards/leeku/finger65/keymaps/madhatter/keymap.c
+++ b/keyboards/leeku/finger65/keymaps/madhatter/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FNMS] = LAYOUT_65_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_MPLY,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_VOLU,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, KC_VOLU,
AG_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, KC_VOLD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U,KC_MNXT,
_______, _______, _______, _______, _______, _______, KC_MS_L,KC_MS_D, KC_MS_R
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
// layer_state_t layer_state_set_user(layer_state_t state) {
-// switch(biton32(state)) {
+// switch(get_highest_layer(state)) {
// case _FNMS:
// led_off();
// rgb_on();
diff --git a/keyboards/lefty/config.h b/keyboards/lefty/config.h
index 85620ca15b..894f1b8087 100644
--- a/keyboards/lefty/config.h
+++ b/keyboards/lefty/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5363 // Sc for Smollchungus
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SmollChungus
-#define PRODUCT Lefty
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 8
diff --git a/keyboards/lefty/info.json b/keyboards/lefty/info.json
index bd5d2f7c4e..210c706459 100644
--- a/keyboards/lefty/info.json
+++ b/keyboards/lefty/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "lefty",
+ "keyboard_name": "Lefty",
+ "manufacturer": "SmollChungus",
"url": "https://github.com/smollchungus",
"maintainer": "smollchungus",
+ "usb": {
+ "vid": "0x5363",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/lefty/readme.md b/keyboards/lefty/readme.md
index f8cc2ec203..7562517a22 100644
--- a/keyboards/lefty/readme.md
+++ b/keyboards/lefty/readme.md
@@ -24,4 +24,4 @@ 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
+Keycode in layout: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/lets_split/info.json b/keyboards/lets_split/info.json
index aa47a84834..0bb8f31219 100644
--- a/keyboards/lets_split/info.json
+++ b/keyboards/lets_split/info.json
@@ -1,5 +1,4 @@
{
- "keyboard_name": "Let's Split",
"url": "",
"maintainer": "qmk",
"layouts": {
diff --git a/keyboards/lets_split/keymaps/DE_simple/keymap.c b/keyboards/lets_split/keymaps/DE_simple/keymap.c
index c49da49cf0..7274d1fd2e 100644
--- a/keyboards/lets_split/keymaps/DE_simple/keymap.c
+++ b/keyboards/lets_split/keymaps/DE_simple/keymap.c
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- _______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTZ, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/lets_split/keymaps/OLED_sample/config.h b/keyboards/lets_split/keymaps/OLED_sample/config.h
deleted file mode 100644
index 6aa909d284..0000000000
--- a/keyboards/lets_split/keymaps/OLED_sample/config.h
+++ /dev/null
@@ -1,58 +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
-
-#include "../../config.h"
-
-/* Use I2C or Serial, not both */
-
-#define USE_I2C
-//#define USE_SERIAL
-
-/* Select hand configuration */
-
-#define MASTER_LEFT
-// #define MASTER_RIGHT
-// #define EE_HANDS
-#define FLIP_HALF
-
-#define SSD1306OLED
-//#define OLED_ROTATE180
-
-#define TAPPING_FORCE_HOLD
-#define TAPPING_TERM 100
-
-#ifdef SUBPROJECT_rev1
- #include "../../rev1/config.h"
-#endif
-#ifdef SUBPROJECT_rev2
- #include "../../rev2/config.h"
-#endif
-
-#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/lets_split/keymaps/OLED_sample/keymap.c b/keyboards/lets_split/keymaps/OLED_sample/keymap.c
deleted file mode 100644
index a34d5a32be..0000000000
--- a/keyboards/lets_split/keymaps/OLED_sample/keymap.c
+++ /dev/null
@@ -1,415 +0,0 @@
-#include QMK_KEYBOARD_H
-#include <LUFA/Drivers/Peripheral/TWI.h>
-#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
-};
-
-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_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
- * ,-----------------------------------------------------------------------------------.
- * | 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, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
-)
-
-
-};
-
-
-#ifdef AUDIO_ENABLE
-
-float tone_startup[][2] = SONG(STARTUP_SOUND);
-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);
-float tone_goodbye[][2] = SONG(GOODBYE_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(16);
- }
- 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(15);
- }
- 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 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(); // 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
- PLAY_SONG(tone_startup);
-}
-
-void shutdown_user()
-{
- PLAY_SONG(tone_goodbye);
- _delay_ms(150);
- stop_all_notes();
-}
-
-void music_on_user(void)
-{
- music_scale_user();
-}
-
-void music_scale_user(void)
-{
- PLAY_SONG(music_scale);
-}
-
-#endif
-
-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 8
-#define L_RAISE 16
-#define L_FNLAYER 64
-#define L_NUMLAY 128
-#define L_NLOWER 136
-#define L_NFNLAYER 192
-#define L_MOUSECURSOR 256
-#define L_ADJUST 65560
-
-void iota_gfx_task_user(void) {
-#if DEBUG_TO_SCREEN
- if (debug_enable) {
- return;
- }
-#endif
-
- struct CharacterMatrix matrix;
-
- matrix_clear(&matrix);
- matrix_write_P(&matrix, PSTR("USB: "));
-#ifdef PROTOCOL_LUFA
- switch (USB_DeviceState) {
- case DEVICE_STATE_Unattached:
- matrix_write_P(&matrix, PSTR("Unattached"));
- break;
- case DEVICE_STATE_Suspended:
- matrix_write_P(&matrix, PSTR("Suspended"));
- break;
- case DEVICE_STATE_Configured:
- matrix_write_P(&matrix, PSTR("Connected"));
- break;
- case DEVICE_STATE_Powered:
- matrix_write_P(&matrix, PSTR("Powered"));
- break;
- case DEVICE_STATE_Default:
- matrix_write_P(&matrix, PSTR("Default"));
- break;
- case DEVICE_STATE_Addressed:
- matrix_write_P(&matrix, PSTR("Addressed"));
- break;
- default:
- matrix_write_P(&matrix, PSTR("Invalid"));
- }
-#endif
-
-// 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("\n\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:
- 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);
- matrix_update(&display, &matrix);
-}
diff --git a/keyboards/lets_split/keymaps/OLED_sample/readme.md b/keyboards/lets_split/keymaps/OLED_sample/readme.md
deleted file mode 100644
index 02888855b8..0000000000
--- a/keyboards/lets_split/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/lets_split/keymaps/OLED_sample/rules.mk b/keyboards/lets_split/keymaps/OLED_sample/rules.mk
deleted file mode 100644
index e1716e0c02..0000000000
--- a/keyboards/lets_split/keymaps/OLED_sample/rules.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-SRC += ssd1306.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
-#
-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 = no # Enable keyboard backlight functionality
-MIDI_ENABLE = no # MIDI controls
-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 = 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
diff --git a/keyboards/lets_split/keymaps/aerialviews007/keymap.c b/keyboards/lets_split/keymaps/aerialviews007/keymap.c
index cc3dabf65e..ce031dd25b 100644
--- a/keyboards/lets_split/keymaps/aerialviews007/keymap.c
+++ b/keyboards/lets_split/keymaps/aerialviews007/keymap.c
@@ -125,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_DEL,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, KC_DEL,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/lets_split/keymaps/bbaserdem/README.md b/keyboards/lets_split/keymaps/bbaserdem/README.md
deleted file mode 100644
index 4b37d73555..0000000000
--- a/keyboards/lets_split/keymaps/bbaserdem/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# Lets Split Layout
-
-Check out [user readme](../../../../users/bbaserdem/README.md) for more info.
-
-# Usage
-
-**These commands depend on there being no other arduino connected!**
-Also udev rules can be set instead of using sudo.
-Please unplug all other usb devices.
-
-To make the hex files;
-```
-make lets_split/rev2:bbaserdem
-make lets_split/rev2:bbaserdem_right
-```
-
-For the left half, after plugging in and resetting; (from repo main directory)
-```
-sudo avrdude -p atmega32u4 -P "$(ls /dev/ttyACM*)" -c avr109 -D -U flash:w:.build/lets_split_rev2_bbaserdem.hex
-sudo avrdude -p atmega32u4 -P "$(ls /dev/ttyACM*)" -c avr109 -U eeprom:w:keyboards/lets_split/eeprom-lefthand.eep
-```
-
-For the right half;
-```
-sudo avrdude -p atmgea34u4 -P "$(ls /dev/ttyACM*)" -c avr109 -D -U flash:w:.build/lets_split_rev2_bbaserdem_right.hex
-sudo avrdude -p atmega32u4 -P "$(ls /dev/ttyACM*)" -c avr109 -U eeprom:w:keyboards/lets_split/eeprom-righhand.eep
-```
diff --git a/keyboards/lets_split/keymaps/bbaserdem/config.h b/keyboards/lets_split/keymaps/bbaserdem/config.h
deleted file mode 100755
index 6a90e1c356..0000000000
--- a/keyboards/lets_split/keymaps/bbaserdem/config.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef CONFIG_KEYMAP_H
-#define CONFIG_KEYMAP_H
-
-#include "../../config.h"
-
-#define USE_SERIAL
-#define EE_HANDS
-
-// LED strip stuff
-#ifdef RGBLIGHT_ENABLE
-
-// Who thought it was a good idea to predefine these in the rev2/config.h ???
-#ifdef RGBLED_NUM
-#undef RGBLED_NUM
-#endif
-#define RGBLED_NUM 12
-
-#define RGBLIGHT_HUE_STEP 6
-#define RGBLIGHT_SAT_STEP 12
-#define RGBLIGHT_VAL_STEP 20
-#define RGBLIGHT_ANIMATIONS
-#define RGBLIGHT_EFFECT_SNAKE_LENGTH 6
-#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 2000
-#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1
-#endif
-
-#endif
diff --git a/keyboards/lets_split/keymaps/bbaserdem/keymap.c b/keyboards/lets_split/keymaps/bbaserdem/keymap.c
deleted file mode 100755
index f9eab059ef..0000000000
--- a/keyboards/lets_split/keymaps/bbaserdem/keymap.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Let's Split - Dvorak turkish
- * Keymap by @bbaserdem
- * Dvorak layout with multiple features
- * Most of the code is in the "user" directory.
- * Check qmk_firmware/users/bbaserdem for the main part of the code
- */
-
-#include "lets_split.h"
-#include "bbaserdem.h"
-
-
-void matrix_init_keymap (void) {
-}
-
-uint32_t layer_state_set_keymap(uint32_t state) {
- return state;
-}
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- // Main Dvorak layer
- [_DV] = LAYOUT_letssplit_wrapper(DVORAK),
- // Turkish and special character overlay
- [_AL] = LAYOUT_letssplit_wrapper(ALTCHAR),
- // Gaming layer
- [_GA] = LAYOUT_letssplit_wrapper(GAME),
- // Numbers layer
- [_NU] = LAYOUT_letssplit_wrapper(NUMBERS),
- // Settings layer
- [_SE] = LAYOUT_letssplit_wrapper(SETTINGS),
- // Mouse emulation layer
- [_MO] = LAYOUT_letssplit_wrapper(MOUSE),
- // Music layer
- [_MU] = LAYOUT_letssplit_wrapper(MUSIC),
-};
diff --git a/keyboards/lets_split/keymaps/bbaserdem/rules.mk b/keyboards/lets_split/keymaps/bbaserdem/rules.mk
deleted file mode 100755
index 7a37e989d8..0000000000
--- a/keyboards/lets_split/keymaps/bbaserdem/rules.mk
+++ /dev/null
@@ -1,8 +0,0 @@
-# Build options
-
-BACKLIGHT_ENABLE = no # Switch LEDs
-MOUSEKEY_ENABLE = yes # Emulates mouse key using keypresses
-RGBLIGHT_ENABLE = yes # LED strips
-TAP_DANCE_ENABLE = no # Use multi-tap features
-AUDIO_ENABLE = no # Audio stuff
-
diff --git a/keyboards/lets_split/keymaps/bbaserdem_right/README.md b/keyboards/lets_split/keymaps/bbaserdem_right/README.md
deleted file mode 100644
index 8608f23f79..0000000000
--- a/keyboards/lets_split/keymaps/bbaserdem_right/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Lets Split - Right Half
-
-Keymap for my right half, to be used as a numpad.
-Check [main readme](../bbaserdem/README.md) for flashing info.
-
diff --git a/keyboards/lets_split/keymaps/bbaserdem_right/config.h b/keyboards/lets_split/keymaps/bbaserdem_right/config.h
deleted file mode 100755
index 47545a059b..0000000000
--- a/keyboards/lets_split/keymaps/bbaserdem_right/config.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef CONFIG_KEYMAP_H
-#define CONFIG_KEYMAP_H
-
-#include "../../config.h"
-
-#define USE_SERIAL
-#define EE_HANDS
-
-#endif
diff --git a/keyboards/lets_split/keymaps/bbaserdem_right/keymap.c b/keyboards/lets_split/keymaps/bbaserdem_right/keymap.c
deleted file mode 100755
index 2dcae0dca5..0000000000
--- a/keyboards/lets_split/keymaps/bbaserdem_right/keymap.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Let's Split - Dvorak turkish
- * Keymap by @bbaserdem
- * Dvorak layout with multiple features
- * Most of the code is in the "user" directory.
- * Check qmk_firmware/users/bbaserdem for the main part of the code
- */
-
-#include "lets_split.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- /* Navigation All Supered) Numpad
- * ,-----------------------. ,-----------------------.
- * | F4| ` | Q |Alt| L | > | | ) | - | + | = |Ent|Bkp|
- * |---+---+---+---+---+---| |---+---+---+---+---+---|
- * | F3| M |Ent|Ctl| K | ^ | | ( | * | 9 | 6 | 3 | . |
- * |---+---+---+---+---+---| |---+---+---+---+---+---|
- * | F2| T |Spc|Shf| J | v | | % | / | 8 | 5 | 2 | , |
- * |---+---+---+---+---+---| |---+---+---+---+---+---|
- * | F1| F | P |Tab| H | < | |Nlc|Tab| 7 | 4 | 1 | 0 |
- * `-----------------------' `-----------------------'
- */
- // Main Dvorak layer
- [0] = LAYOUT_ortho_4x12(
- LCTL(LALT(KC_DEL)), LGUI(KC_GRV), LGUI(KC_Q), LGUI(KC_LALT), LGUI(KC_L), LGUI(KC_RGHT), KC_RPRN, KC_PMNS, KC_PPLS, KC_PEQL, KC_PENT, KC_BSPC, \
- LGUI(KC_F3), LGUI(KC_M), LGUI(KC_ENT), LGUI(KC_LCTL), LGUI(KC_K), LGUI(KC_UP), KC_LPRN, KC_PAST, KC_P9, KC_P6, KC_P3, KC_PDOT, \
- LGUI(KC_F2), LGUI(KC_T), LGUI(KC_SPC), LGUI(KC_LSFT), LGUI(KC_J), LGUI(KC_DOWN), KC_PERC, KC_PSLS, KC_P8, KC_P5, KC_P2, KC_PCMM, \
- LGUI(KC_F1), LGUI(KC_F), LGUI(KC_P), LGUI(KC_TAB), LGUI(KC_H), LGUI(KC_LEFT), KC_NLCK, KC_TAB, KC_P7, KC_P4, KC_P1, KC_P0 \
- )
-};
diff --git a/keyboards/lets_split/keymaps/bbaserdem_right/rules.mk b/keyboards/lets_split/keymaps/bbaserdem_right/rules.mk
deleted file mode 100755
index 6886a320a5..0000000000
--- a/keyboards/lets_split/keymaps/bbaserdem_right/rules.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-# Build options
-
-USER_NAME := bbaserdem-without-userspace
-
-BACKLIGHT_ENABLE = no # Switch LEDs
-MOUSEKEY_ENABLE = no # Emulates mouse key using keypresses
-RGBLIGHT_ENABLE = no # LED strips
-TAP_DANCE_ENABLE = no # Use multi-tap features
-AUDIO_ENABLE = no # Audio stuff
-BLUETOOTH_ENABLE = no # No bluetooth
-COMMAND_ENABLE = no # Some bootmagic thing
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-CONSOLE_ENABLE = no # Allows console output with a command
-SLEEP_LED_ENABLE = no # Breathes LED's when computer is asleep. Untested.
-NKRO_ENABLE = no # Default is 6KRO which is plenty
-MIDI_ENABLE = no # Untested feature
-KEY_LOCK_ENABLE = no # Allows locking any key. Not used
-UNICODE_ENABLE = no # Used for unicode character emulation
-EXTRAKEY_ENABLE = no # OS signals like volume control
diff --git a/keyboards/lets_split/keymaps/cpeters1982/keymap.c b/keyboards/lets_split/keymaps/cpeters1982/keymap.c
index c4c26d56bc..34174ac8c9 100644
--- a/keyboards/lets_split/keymaps/cpeters1982/keymap.c
+++ b/keyboards/lets_split/keymaps/cpeters1982/keymap.c
@@ -105,7 +105,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, KC_DEL, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, KC_LEFT, KC_DOWN, KC_RGHT, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PERC, KC_GRV, KC_TILD, \
KC_ASDN, KC_ASUP, KC_ASRP, _______, _______, _______, _______, KC_RBRC, KC_LBRC, KC_MINS, KC_EQL, KC_BSLASH \
@@ -183,7 +183,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
#ifdef RGBLIGHT_ENABLE
uint8_t default_layer = eeconfig_read_default_layer();
if (rgb_layer_change) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _RAISE:
rgblight_set_orange;
rgblight_mode(5);
diff --git a/keyboards/lets_split/keymaps/default/keymap.c b/keyboards/lets_split/keymaps/default/keymap.c
index bc240b5f00..34b470d533 100644
--- a/keyboards/lets_split/keymaps/default/keymap.c
+++ b/keyboards/lets_split/keymaps/default/keymap.c
@@ -4,12 +4,14 @@
// 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 layer_names {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/lets_split/keymaps/dlaroe/keymap.c b/keyboards/lets_split/keymaps/dlaroe/keymap.c
index 65dad2d3d8..d68982c37d 100644
--- a/keyboards/lets_split/keymaps/dlaroe/keymap.c
+++ b/keyboards/lets_split/keymaps/dlaroe/keymap.c
@@ -156,7 +156,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- LALT(LCTL(KC_INS)), QWERTY, _______, _______, RESET, M(0), _______, _______, _______, _______, _______, LALT(LCTL(KC_DEL)), \
+ LALT(LCTL(KC_INS)), QWERTY, _______, _______, QK_BOOT, M(0), _______, _______, _______, _______, _______, LALT(LCTL(KC_DEL)), \
_______, _______, _______, AU_ON, AU_OFF, GAME, AG_SWAP, AG_NORM, _______, _______, _______, _______, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, \
BACKLIT, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, BL_TOGG, BL_DEC , BL_INC , BL_STEP \
diff --git a/keyboards/lets_split/keymaps/fabian/keymap.c b/keyboards/lets_split/keymaps/fabian/keymap.c
index 518eb0e731..fde91d1fe0 100644
--- a/keyboards/lets_split/keymaps/fabian/keymap.c
+++ b/keyboards/lets_split/keymaps/fabian/keymap.c
@@ -171,7 +171,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_DEL , \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, 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, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/lets_split/keymaps/geripgeri/keymap.c b/keyboards/lets_split/keymaps/geripgeri/keymap.c
index 62e3570468..d6f6f0537f 100644
--- a/keyboards/lets_split/keymaps/geripgeri/keymap.c
+++ b/keyboards/lets_split/keymaps/geripgeri/keymap.c
@@ -121,7 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------' `-----------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- RESET, EEP_RST, _______, RALT(KC_SCLN), _______, _______, _______, TD(U), RALT(KC_Z), TD(O), _______, _______,
+ QK_BOOT, EEP_RST, _______, RALT(KC_SCLN), _______, _______, _______, TD(U), RALT(KC_Z), TD(O), _______, _______,
_______, RALT(KC_QUOT), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
@@ -255,7 +255,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
writePin(B0, !(state & (1UL << (_NUMPAD))));
- switch(biton32(state)) {
+ switch(get_highest_layer(state)) {
case _RAISE:
rgblight_setrgb_at(255, 255, 255, RGBLED_NUM / 2);
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
diff --git a/keyboards/lets_split/keymaps/halvves/keymap.c b/keyboards/lets_split/keymaps/halvves/keymap.c
index 6fbd646519..c4702d8f2b 100644
--- a/keyboards/lets_split/keymaps/halvves/keymap.c
+++ b/keyboards/lets_split/keymaps/halvves/keymap.c
@@ -125,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_UTIL] = LAYOUT_ortho_4x12(
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
@@ -161,7 +161,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/lets_split/keymaps/heartrobotninja/keymap.c b/keyboards/lets_split/keymaps/heartrobotninja/keymap.c
index 3a7ef9db39..950eda4a45 100644
--- a/keyboards/lets_split/keymaps/heartrobotninja/keymap.c
+++ b/keyboards/lets_split/keymaps/heartrobotninja/keymap.c
@@ -102,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_AUX] = LAYOUT(
- RESET, ____, ____, ____, ____, ____, ____, LGUI(KC_L), ____, ____, ____, KC_VOLU,
+ QK_BOOT, ____, ____, ____, ____, ____, ____, LGUI(KC_L), ____, ____, ____, KC_VOLU,
____, ____, LGUI(KC_R), ____, ____, ____, ____, ____, ____, ____, ____, KC_VOLD,
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, KC_PGUP, KC_MUTE,
____, ____, ____, ____, KC_TAB, KC_DEL, ____, ____, ____, KC_HOME, KC_PGDOWN, KC_END)
diff --git a/keyboards/lets_split/keymaps/henxing/keymap.c b/keyboards/lets_split/keymaps/henxing/keymap.c
index e3d7885cb8..7b28259f3b 100644
--- a/keyboards/lets_split/keymaps/henxing/keymap.c
+++ b/keyboards/lets_split/keymaps/henxing/keymap.c
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_RAISE] = LAYOUT( \
KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_NO, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10, \
KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_NO, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11, \
- KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, RESET, KC_NO, KC_NO, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12, \
+ KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, QK_BOOT, KC_NO, KC_NO, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F12, \
KC_NO, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, QWERTY, KC_PSCR, KC_SLCK, KC_PAUS \
)
diff --git a/keyboards/lets_split/keymaps/hvp/keymap.c b/keyboards/lets_split/keymaps/hvp/keymap.c
index e9ebd46d64..1c86381f64 100644
--- a/keyboards/lets_split/keymaps/hvp/keymap.c
+++ b/keyboards/lets_split/keymaps/hvp/keymap.c
@@ -61,5 +61,5 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, RGB_TOG, RGB_MOD, RGB_RMOD, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______,
_______, RGB_M_P, RGB_HUD, RGB_HUI, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______,
KC_PSCR, _______, RGB_SAD, RGB_SAI, _______, _______, KC_0, KC_1, KC_2, KC_3, _______, _______,
- RESET, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______
)};
diff --git a/keyboards/lets_split/keymaps/khord/keymap.c b/keyboards/lets_split/keymaps/khord/keymap.c
index 60b2973947..1cee03fe9e 100644
--- a/keyboards/lets_split/keymaps/khord/keymap.c
+++ b/keyboards/lets_split/keymaps/khord/keymap.c
@@ -94,7 +94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- _______, RESET, _______, _______, AG_NORM, AG_SWAP, _______, _______, _______, ADMIN, SMSPC1, KC_DEL, \
+ _______, QK_BOOT, _______, _______, AG_NORM, AG_SWAP, _______, _______, _______, ADMIN, SMSPC1, KC_DEL, \
_______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, _______, _______, \
_______, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, _______, RGB_M_G, RGB_M_X, RGB_M_K, RGB_M_SN, _______, C_A_INS, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_A_DEL \
diff --git a/keyboards/lets_split/keymaps/kris/keymap.c b/keyboards/lets_split/keymaps/kris/keymap.c
index ee47d7999a..f54807758b 100644
--- a/keyboards/lets_split/keymaps/kris/keymap.c
+++ b/keyboards/lets_split/keymaps/kris/keymap.c
@@ -127,7 +127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/lets_split/keymaps/krusli/keymap.c b/keyboards/lets_split/keymaps/krusli/keymap.c
index 002d22d302..afcee96d09 100644
--- a/keyboards/lets_split/keymaps/krusli/keymap.c
+++ b/keyboards/lets_split/keymaps/krusli/keymap.c
@@ -147,7 +147,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/lets_split/keymaps/mbsurfer/keymap.c b/keyboards/lets_split/keymaps/mbsurfer/keymap.c
index da49f0c7aa..43c6bde98c 100644
--- a/keyboards/lets_split/keymaps/mbsurfer/keymap.c
+++ b/keyboards/lets_split/keymaps/mbsurfer/keymap.c
@@ -141,7 +141,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------ ------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- RESET, _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, _______, KC_DEL, \
+ QK_BOOT, _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
_______, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_S_ESC, C_A_DEL \
diff --git a/keyboards/lets_split/keymaps/mekberg/keymap.c b/keyboards/lets_split/keymaps/mekberg/keymap.c
index e530623f1d..ddde0c4bd4 100644
--- a/keyboards/lets_split/keymaps/mekberg/keymap.c
+++ b/keyboards/lets_split/keymaps/mekberg/keymap.c
@@ -219,7 +219,7 @@ SPECIAL
`-----------------------------------------------------´ `-----------------------------------------------------'
*/
[_SPECIAL] = LAYOUT_ortho_4x12(
- RESET, _______, TO_WIN, KC_VOLU, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_DEL,
+ QK_BOOT, _______, TO_WIN, KC_VOLU, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_DEL,
EEP_RST, _______, MY_PREV, KC_VOLD, MY_NEXT, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______,
_______, _______, _______, KC_MUTE, _______, _______, MY_LOCK, TO_MAC, _______, _______, _______, _______,
_______, _______, _______, _______, _______, MY_PLAY, _______, _______, _______, _______, _______, KC_SLEP
diff --git a/keyboards/lets_split/keymaps/mjt/keymap.c b/keyboards/lets_split/keymaps/mjt/keymap.c
index a7fa4f55d3..13e21f8f7a 100644
--- a/keyboards/lets_split/keymaps/mjt/keymap.c
+++ b/keyboards/lets_split/keymaps/mjt/keymap.c
@@ -127,7 +127,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/lets_split/keymaps/normacos/keymap.c b/keyboards/lets_split/keymaps/normacos/keymap.c
index b6b6b1c141..f43e72b682 100644
--- a/keyboards/lets_split/keymaps/normacos/keymap.c
+++ b/keyboards/lets_split/keymaps/normacos/keymap.c
@@ -107,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------' `-----------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, \
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AU_ON, AU_OFF, XXXXXXX, NORMAN, XXXXXXX, XXXXXXX, 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/lets_split/keymaps/piemod/config.h b/keyboards/lets_split/keymaps/piemod/config.h
index 1b3fd7544e..c3975da3ca 100644
--- a/keyboards/lets_split/keymaps/piemod/config.h
+++ b/keyboards/lets_split/keymaps/piemod/config.h
@@ -42,7 +42,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 1
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 1
-// Typing Options
-#define QMK_KEYS_PER_SCAN 4
-
#endif
diff --git a/keyboards/lets_split/keymaps/piemod/keymap.c b/keyboards/lets_split/keymaps/piemod/keymap.c
index 68e7e0ba05..0711303d9c 100644
--- a/keyboards/lets_split/keymaps/piemod/keymap.c
+++ b/keyboards/lets_split/keymaps/piemod/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_PSCREEN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, \
KC_NO, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
KC_NO, RGB_HUD, RGB_SAD, RGB_VAD, KC_NO, KC_NO, KC_NO, KC_NO, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, \
- RESET, RGB_TOG, RGB_MOD, KC_NO, KC_NO, KC_NO, KC_DELETE, KC_INSERT, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
+ QK_BOOT, RGB_TOG, RGB_MOD, KC_NO, KC_NO, KC_NO, KC_DELETE, KC_INSERT, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
),
[_EMACS] = LAYOUT( \
diff --git a/keyboards/lets_split/keymaps/pitty/keymap.c b/keyboards/lets_split/keymaps/pitty/keymap.c
index d723e0c026..27ead4d29f 100644
--- a/keyboards/lets_split/keymaps/pitty/keymap.c
+++ b/keyboards/lets_split/keymaps/pitty/keymap.c
@@ -103,14 +103,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------+------+------+------+------+------+------|
* |DM_REC| | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | LShft| | | | | | | RESET|
+ * | | | | | LShft| | | | | | | QK_BOOT|
* `-----------------------------------------------------------------------------------'
*/
[_VIM] = LAYOUT( \
RGB_MOD, RGB_TOG, _______, _______, _______, _______, _______, KC_RBRC, KC_NUBS, KC_EQL , KC_LBRC, KC_NUHS, \
_______, _______, _______, KC_LCTL, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, RESET \
+ _______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, QK_BOOT \
)
@@ -128,7 +128,7 @@ void persistent_default_layer_set(uint16_t default_layer) {
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _NAV:
if (RGB_INIT) {} else {
diff --git a/keyboards/lets_split/keymaps/poker/keymap.c b/keyboards/lets_split/keymaps/poker/keymap.c
index 7b202409e3..9bfb951001 100644
--- a/keyboards/lets_split/keymaps/poker/keymap.c
+++ b/keyboards/lets_split/keymaps/poker/keymap.c
@@ -147,7 +147,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL , \
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL , \
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
KC_CAPS, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, KC_CAPS, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/lets_split/keymaps/pyrol/keymap.c b/keyboards/lets_split/keymaps/pyrol/keymap.c
index 1a6cd75866..9bf82e6812 100644
--- a/keyboards/lets_split/keymaps/pyrol/keymap.c
+++ b/keyboards/lets_split/keymaps/pyrol/keymap.c
@@ -146,7 +146,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, _______, GAME, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
+ _______, _______, GAME, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/lets_split/keymaps/shaymdev/keymap.c b/keyboards/lets_split/keymaps/shaymdev/keymap.c
index 7ab16b3fe3..cb3e1fff54 100644
--- a/keyboards/lets_split/keymaps/shaymdev/keymap.c
+++ b/keyboards/lets_split/keymaps/shaymdev/keymap.c
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT(
- TO_DV, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ TO_DV, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
RGB_TOG, RGB_MOD, VLK_TOG, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, DVORAK, _______, _______, _______,
RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/lets_split/keymaps/smt/keymap.c b/keyboards/lets_split/keymaps/smt/keymap.c
index 1b9b448008..8cdca05648 100644
--- a/keyboards/lets_split/keymaps/smt/keymap.c
+++ b/keyboards/lets_split/keymaps/smt/keymap.c
@@ -133,7 +133,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------' `-----------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/lets_split/keymaps/that_canadian/keymap.c b/keyboards/lets_split/keymaps/that_canadian/keymap.c
index 07a165ad89..00cf26e74a 100644
--- a/keyboards/lets_split/keymaps/that_canadian/keymap.c
+++ b/keyboards/lets_split/keymaps/that_canadian/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ,-----------------------------------------------------------------------------------.
- * | RESET| Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * | QK_BOOT| Q | W | E | R | T | Y | U | I | O | P | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT( \
- RESET, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \
+ QK_BOOT, 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, \
RGB_TOG, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \
BACKLIT, KC_LCTL, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/lets_split/keymaps/tylerwince/keymap.c b/keyboards/lets_split/keymaps/tylerwince/keymap.c
index c781513c48..cb21a6f368 100644
--- a/keyboards/lets_split/keymaps/tylerwince/keymap.c
+++ b/keyboards/lets_split/keymaps/tylerwince/keymap.c
@@ -133,7 +133,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------ ------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- _______, RESET, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, LCA(KC_7), LCA(KC_8),
+ _______, QK_BOOT, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, LCA(KC_7), LCA(KC_8),
_______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, LCA(KC_H), LCA(KC_J), LCA(KC_K), LCA(KC_L), LCA(KC_U), LCA(KC_I),
_______, _______, _______, _______, _______, _______, _______, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, LCA(KC_ENT),
_______, _______, _______, _______, _______, _______, _______, _______, RGB_M_K, RGB_M_B, RGB_TOG, _______
diff --git a/keyboards/lets_split/keymaps/vim-mode/keymap.c b/keyboards/lets_split/keymaps/vim-mode/keymap.c
index 4b25aa5dc7..a33d8c11f7 100644
--- a/keyboards/lets_split/keymaps/vim-mode/keymap.c
+++ b/keyboards/lets_split/keymaps/vim-mode/keymap.c
@@ -134,7 +134,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, QWERTY, COLEMAK, DVORAK, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_DEL, \
+ _______, QK_BOOT, _______, QWERTY, COLEMAK, DVORAK, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_DEL, \
_______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/lets_split/keymaps/waples/keymap.c b/keyboards/lets_split/keymaps/waples/keymap.c
index 42b86aad2a..f357607ace 100644
--- a/keyboards/lets_split/keymaps/waples/keymap.c
+++ b/keyboards/lets_split/keymaps/waples/keymap.c
@@ -64,7 +64,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_DUAL] = LAYOUT( \
- RESET, _______, _______, _______, _______, QWERTY, GAME, _______, _______, _______, _______, RESET, \
+ QK_BOOT, _______, _______, _______, _______, QWERTY, GAME, _______, _______, _______, _______, QK_BOOT, \
_______, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, \
_______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, TG_NKRO, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, DVORAK, _______, _______, _______, _______, _______ \
diff --git a/keyboards/lets_split/keymaps/xk/keymap.c b/keyboards/lets_split/keymaps/xk/keymap.c
index 89197beb07..66be11e01c 100755
--- a/keyboards/lets_split/keymaps/xk/keymap.c
+++ b/keyboards/lets_split/keymaps/xk/keymap.c
@@ -301,7 +301,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_GRVTABL] = LAYOUT( \
- TG(5),LALT(KC_PSCR), M(4), KC_PWR,KC_POWER, RESET, RESET, KC_R, KC_E, KC_I,LALT(KC_PSCR),TG(3), \
+ TG(5),LALT(KC_PSCR), M(4), KC_PWR,KC_POWER, QK_BOOT, QK_BOOT, KC_R, KC_E, KC_I,LALT(KC_PSCR),TG(3), \
TG(1), TG(6), TG(7), TG(9), TG(3), TG(2), TG(2), KC_S, KC_U, KC_B, TG(6), TG(1), \
M(3), TG(8), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MYCM, KC_CALC, XXXXXXX, XXXXXXX, TG(8), M(3), \
TT(15), TG(6), TG(7), TG(9), TG(3), TG(2), TG(2), TG(3), TG(9), TG(7), TG(6), _______ \
diff --git a/keyboards/lets_split/keymaps/yshrsmz/keymap.c b/keyboards/lets_split/keymaps/yshrsmz/keymap.c
index ccb3557b4a..b02d86398f 100644
--- a/keyboards/lets_split/keymaps/yshrsmz/keymap.c
+++ b/keyboards/lets_split/keymaps/yshrsmz/keymap.c
@@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/lets_split/keymaps/zer09/keymap.c b/keyboards/lets_split/keymaps/zer09/keymap.c
index cb6744433a..628e334a29 100644
--- a/keyboards/lets_split/keymaps/zer09/keymap.c
+++ b/keyboards/lets_split/keymaps/zer09/keymap.c
@@ -33,7 +33,7 @@ extern keymap_config_t keymap_config;
#define _astdLayer LAYOUT( \
KC_MPRV, KC_MUTE, _______, _______, _______,/**/KC_PSCR, KC_SLCK, KC_PAUSE, _______, KC_RGUP, \
KC_MPLY, KC_VOLD, _______, _______, _______,/**/_______, _______, _______, _______, KC_RGDWN, \
- KC_MNXT, KC_VOLU, RESET, _______, _______,/**/_______, _______, RESET, _______, _______, \
+ KC_MNXT, KC_VOLU, QK_BOOT, _______, _______,/**/_______, _______, QK_BOOT, _______, _______, \
_______, _______, _______, _______, _______,/**/_______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______,/**/_______, _______, _______, _______, _______)
diff --git a/keyboards/lets_split/rev1/config.h b/keyboards/lets_split/rev1/config.h
index fc9e348a86..77b0c3b095 100644
--- a/keyboards/lets_split/rev1/config.h
+++ b/keyboards/lets_split/rev1/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Wootpatoot
-#define PRODUCT Lets Split v1
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/lets_split/rev1/info.json b/keyboards/lets_split/rev1/info.json
new file mode 100644
index 0000000000..ae781da15f
--- /dev/null
+++ b/keyboards/lets_split/rev1/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Lets Split v1",
+ "manufacturer": "Wootpatoot",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/lets_split/rev2/config.h b/keyboards/lets_split/rev2/config.h
index 7d8dff4f2f..6fbfaba982 100644
--- a/keyboards/lets_split/rev2/config.h
+++ b/keyboards/lets_split/rev2/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6F77
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Wootpatoot
-#define PRODUCT Lets Split v2
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/lets_split/rev2/info.json b/keyboards/lets_split/rev2/info.json
new file mode 100644
index 0000000000..fd9960697b
--- /dev/null
+++ b/keyboards/lets_split/rev2/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Lets Split v2",
+ "manufacturer": "Wootpatoot",
+ "usb": {
+ "vid": "0x6F77",
+ "pid": "0x0002",
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/lets_split/sockets/config.h b/keyboards/lets_split/sockets/config.h
index 70cbc18cd5..0adf933032 100644
--- a/keyboards/lets_split/sockets/config.h
+++ b/keyboards/lets_split/sockets/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0BEE
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Duckle29
-#define PRODUCT Lets Split Sockets
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/lets_split/sockets/info.json b/keyboards/lets_split/sockets/info.json
new file mode 100644
index 0000000000..700fffb622
--- /dev/null
+++ b/keyboards/lets_split/sockets/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Lets Split Sockets",
+ "manufacturer": "Duckle29",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0BEE",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/lfkeyboards/lfk65_hs/config.h b/keyboards/lfkeyboards/lfk65_hs/config.h
index 18d6bbebe7..4ecf59006e 100644
--- a/keyboards/lfkeyboards/lfk65_hs/config.h
+++ b/keyboards/lfkeyboards/lfk65_hs/config.h
@@ -2,18 +2,11 @@
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6064
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LFKeyboards
-#define PRODUCT LFK65_HS
-
#define DIODE_DIRECTION COL2ROW
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS {B0, B3, B2, B1, F5}
#define MATRIX_COL_PINS {E6, F4, B7, D5, D3, D2, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4}
-#define UNUSED_PINS {}
#define RGBLED_NUM 20 // Number of LEDs
#define QMK_ESC_OUTPUT E6 // usually COL
diff --git a/keyboards/lfkeyboards/lfk65_hs/info.json b/keyboards/lfkeyboards/lfk65_hs/info.json
index 6bbfd6e2d9..550aad3df9 100644
--- a/keyboards/lfkeyboards/lfk65_hs/info.json
+++ b/keyboards/lfkeyboards/lfk65_hs/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "LFK65-HS",
+ "manufacturer": "LFKeyboards",
"url": "https://github.com/lfkeyboards",
"maintainer": "LFKeyboards",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6064",
+ "device_version": "0.0.1"
+ },
"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": "","x": 13,"y": 0,"w": 1},{"label": "","x": 14,"y": 0,"w": 1},{"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": "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": 2,"w": 1.25},{"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": "↑","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},{"label": "Fn","x": 11,"y": 4},{"label": "Ctrl","x": 12,"y": 4},{"label": "â†","x": 13,"y": 4},{"label": "↓","x": 14,"y": 4},{"label": "→","x": 15,"y": 4}]},
"LAYOUT_ansi": {"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,"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": "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": "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": "↑","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},{"label": "Fn","x": 11,"y": 4},{"label": "Ctrl","x": 12,"y": 4},{"label": "â†","x": 13,"y": 4},{"label": "↓","x": 14,"y": 4},{"label": "→","x": 15,"y": 4}]}
diff --git a/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.c b/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.c
index 86573ce17f..7326e812ec 100644
--- a/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.c
+++ b/keyboards/lfkeyboards/lfk65_hs/lfk65_hs.c
@@ -6,7 +6,7 @@
bool process_record_kb(uint16_t keycode, keyrecord_t* record)
{
- if (keycode == RESET) {
+ if (keycode == QK_BOOT) {
reset_keyboard_kb();
} else {
}
diff --git a/keyboards/lfkeyboards/lfk78/config.h b/keyboards/lfkeyboards/lfk78/config.h
index 1fab81a645..5c1a4da46b 100644
--- a/keyboards/lfkeyboards/lfk78/config.h
+++ b/keyboards/lfkeyboards/lfk78/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C46 // LF
-#define PRODUCT_ID 0x3738 // 78
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LFKeyboards
-#define PRODUCT LFK78
-
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/lfkeyboards/lfk78/keymaps/ca178858/keymap.c b/keyboards/lfkeyboards/lfk78/keymaps/ca178858/keymap.c
index bd35bfbf22..a55e5ab18b 100644
--- a/keyboards/lfkeyboards/lfk78/keymaps/ca178858/keymap.c
+++ b/keyboards/lfkeyboards/lfk78/keymaps/ca178858/keymap.c
@@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[SETTINGS] = LAYOUT_split_rshift(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, BL_TOGG, RGB_TOG, RGB_VAI,
XXXXXXX, XXXXXXX, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_VAD,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI
)
diff --git a/keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/keymap.c b/keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/keymap.c
index 0a9c2aa4f9..b4efe94f06 100644
--- a/keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/keymap.c
+++ b/keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/keymap.c
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[SETTINGS] = LAYOUT_split_bs(
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, XXXXXXX, XXXXXXX, RGB_TOG, RGB_VAI,
XXXXXXX, XXXXXXX, MU_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_TOGG, RGB_MOD, RGB_VAD,
- XXXXXXX, XXXXXXX, AU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ XXXXXXX, XXXXXXX, AU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI
)
diff --git a/keyboards/lfkeyboards/lfk78/lfk78.c b/keyboards/lfkeyboards/lfk78/lfk78.c
index 96fe96f03f..54a2b45840 100644
--- a/keyboards/lfkeyboards/lfk78/lfk78.c
+++ b/keyboards/lfkeyboards/lfk78/lfk78.c
@@ -127,7 +127,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
clicking_notes(click_hz, click_time);
}
- if (keycode == RESET) {
+ if (keycode == QK_BOOT) {
reset_keyboard_kb();
}
diff --git a/keyboards/lfkeyboards/lfk78/revb/config.h b/keyboards/lfkeyboards/lfk78/revb/config.h
index 34ca869c5f..b94cf4be27 100644
--- a/keyboards/lfkeyboards/lfk78/revb/config.h
+++ b/keyboards/lfkeyboards/lfk78/revb/config.h
@@ -16,6 +16,5 @@
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { E6, F7, D2, D3, D4, D5, D6, D7 }
-#define UNUSED_PINS
#define RGBLED_NUM 31
diff --git a/keyboards/lfkeyboards/lfk78/revb/info.json b/keyboards/lfkeyboards/lfk78/revb/info.json
index a2d28389e7..bd9edaea01 100644
--- a/keyboards/lfkeyboards/lfk78/revb/info.json
+++ b/keyboards/lfkeyboards/lfk78/revb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "LFK78/68 Rev B",
+ "keyboard_name": "LFK78 Rev B",
+ "manufacturer": "LFKeyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4C46",
+ "pid": "0x3738",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/lfkeyboards/lfk78/revc/config.h b/keyboards/lfkeyboards/lfk78/revc/config.h
index 1a62dfe4f3..c7c7bc9b5f 100644
--- a/keyboards/lfkeyboards/lfk78/revc/config.h
+++ b/keyboards/lfkeyboards/lfk78/revc/config.h
@@ -16,6 +16,5 @@
*/
#define MATRIX_ROW_PINS { D2, D3, D4, D5, D6 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, E6, E7, F0, F1, F2, F3, C0, C1, C2, C3 }
-#define UNUSED_PINS
#define RGBLED_NUM 27
diff --git a/keyboards/lfkeyboards/lfk78/revc/info.json b/keyboards/lfkeyboards/lfk78/revc/info.json
index 9fa07967c0..1af3ffaf86 100644
--- a/keyboards/lfkeyboards/lfk78/revc/info.json
+++ b/keyboards/lfkeyboards/lfk78/revc/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "LFK78/68 Rev C-H",
+ "keyboard_name": "LFK7 Rev C-H",
+ "manufacturer": "LFKeyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4C46",
+ "pid": "0x3738",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/lfkeyboards/lfk78/revj/config.h b/keyboards/lfkeyboards/lfk78/revj/config.h
index 1a62dfe4f3..c7c7bc9b5f 100644
--- a/keyboards/lfkeyboards/lfk78/revj/config.h
+++ b/keyboards/lfkeyboards/lfk78/revj/config.h
@@ -16,6 +16,5 @@
*/
#define MATRIX_ROW_PINS { D2, D3, D4, D5, D6 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, E6, E7, F0, F1, F2, F3, C0, C1, C2, C3 }
-#define UNUSED_PINS
#define RGBLED_NUM 27
diff --git a/keyboards/lfkeyboards/lfk78/revj/info.json b/keyboards/lfkeyboards/lfk78/revj/info.json
index 497b147ff9..d905b4977e 100644
--- a/keyboards/lfkeyboards/lfk78/revj/info.json
+++ b/keyboards/lfkeyboards/lfk78/revj/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "LFK78/68 Rev J",
+ "keyboard_name": "LFK78 Rev J",
+ "manufacturer": "LFKeyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4C46",
+ "pid": "0x3738",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/lfkeyboards/lfk87/config.h b/keyboards/lfkeyboards/lfk87/config.h
index af0a4b173b..a7b7415e02 100644
--- a/keyboards/lfkeyboards/lfk87/config.h
+++ b/keyboards/lfkeyboards/lfk87/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LFKeyboards
-#define PRODUCT LFK87
-
#define DIODE_DIRECTION COL2ROW
#ifdef LFK_TKL_REV_A
@@ -34,8 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS {D2, D3, D4, D5, D6, D7 }
#define MATRIX_COL_PINS {A0, A1, A2, A3, A4, A5, A6, A7, E6, E7,\
F0, F1, F2, F3, C0, C1, C2 }
- #define UNUSED_PINS {B0, B1, B2, B3, B4, B4, B5, B6, B7, C4, C5, C6, C7,\
- D0, D1, E0, E1, E2, E3, E4, F4, F5, F6, F7}
#define RGBLED_NUM 25 // Number of LEDs
#else
/* RevC/D Matrix config */
@@ -43,8 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS {F2, D7, D6, D5, D4, D3, F3}
#define MATRIX_COL_PINS {A0, A1, A2, A3, A4, A5, A6, A7, C7, C1, C0, E1, E0, C2, C3, C4}
- #define UNUSED_PINS {B0, B1, B2, B3, B4, B4, B5, B6, B7, C5, C6, D2, E3, E4, E5, E6, E7, \
- F0, F1, F4, F5, F6, F7}
#define RGBLED_NUM 24 // Number of LEDs
#endif
diff --git a/keyboards/lfkeyboards/lfk87/info.json b/keyboards/lfkeyboards/lfk87/info.json
index a64782016e..81eeed54de 100644
--- a/keyboards/lfkeyboards/lfk87/info.json
+++ b/keyboards/lfkeyboards/lfk87/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "LFK87/SMK87",
+ "keyboard_name": "LFK87",
+ "manufacturer": "LFKeyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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":"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":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":"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/lfkeyboards/lfk87/keymaps/ca178858/keymap.c b/keyboards/lfkeyboards/lfk87/keymaps/ca178858/keymap.c
index b62ea93440..4e919da84f 100644
--- a/keyboards/lfkeyboards/lfk87/keymaps/ca178858/keymap.c
+++ b/keyboards/lfkeyboards/lfk87/keymaps/ca178858/keymap.c
@@ -149,7 +149,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, 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, XXXXXXX, RGB_MOD, RGB_VAD, XXXXXXX,
- AU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ AU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_HUD, RGB_SAI
)
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c b/keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c
index c946856dbe..b53fb19e1c 100644
--- a/keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c
+++ b/keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c
@@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, 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, XXXXXXX, RGB_MOD, RGB_VAD, XXXXXXX,
- AU_TOG, KC_F1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ AU_TOG, KC_F1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_HUD, RGB_SAI
)
diff --git a/keyboards/lfkeyboards/lfk87/lfk87.c b/keyboards/lfkeyboards/lfk87/lfk87.c
index 17eeeeffe8..553c66da6d 100644
--- a/keyboards/lfkeyboards/lfk87/lfk87.c
+++ b/keyboards/lfkeyboards/lfk87/lfk87.c
@@ -109,7 +109,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record)
if (click_toggle && record->event.pressed){
click(click_hz, click_time);
}
- if (keycode == RESET) {
+ if (keycode == QK_BOOT) {
reset_keyboard_kb();
} else {
}
diff --git a/keyboards/lfkeyboards/lfkpad/config.h b/keyboards/lfkeyboards/lfkpad/config.h
index 0ddb4b95b6..84dfdad009 100644
--- a/keyboards/lfkeyboards/lfkpad/config.h
+++ b/keyboards/lfkeyboards/lfkpad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C46 // LF
-#define PRODUCT_ID 0x3231 // 21
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LFKeyboards
-#define PRODUCT LFKPad 21
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D5, F4, F6, F7, C7, C6 }
#define MATRIX_COL_PINS { F1, F0, D4, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/lfkeyboards/lfkpad/info.json b/keyboards/lfkeyboards/lfkpad/info.json
index 53ac3e0b8b..0ce6089c05 100644
--- a/keyboards/lfkeyboards/lfkpad/info.json
+++ b/keyboards/lfkeyboards/lfkpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "LFKPad",
+ "manufacturer": "LFKeyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4C46",
+ "pid": "0x3231",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_6x4": {
"layout": [
diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h
index a9f61f849c..0f9ddaef31 100644
--- a/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h
+++ b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/config.h
@@ -19,9 +19,6 @@
/* 1000Hz USB polling */
#define USB_POLLING_INTERVAL_MS 1
-/* Send up to 4 key press events per scan */
-#define QMK_KEYS_PER_SCAN 4
-
/* Force NKRO on boot up */
#define FORCE_NKRO
diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/keymap.c b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/keymap.c
index b2b97f442d..667e8859e2 100644
--- a/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/keymap.c
+++ b/keyboards/lfkeyboards/lfkpad/keymaps/pascalpfeil/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* RGB */
[1] = LAYOUT_numpad_6x4(
RGB_SAI, RGB_VAI, RGB_HUI, _______,
- RGB_SAD, RGB_VAD, RGB_HUD, RESET,
+ RGB_SAD, RGB_VAD, RGB_HUD, QK_BOOT,
RGB_M_X, RGB_M_G, RGB_MOD,
RGB_M_SW,RGB_M_SN,RGB_M_K, RGB_RMOD,
RGB_M_P, RGB_M_B, RGB_M_R,
diff --git a/keyboards/lfkeyboards/mini1800/config.h b/keyboards/lfkeyboards/mini1800/config.h
index e7b0b5112a..b304db7548 100644
--- a/keyboards/lfkeyboards/mini1800/config.h
+++ b/keyboards/lfkeyboards/mini1800/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LFKeyboards
-#define PRODUCT Mini1800
-
#define DIODE_DIRECTION COL2ROW
/* Matrix config */
@@ -32,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COLS 19
#define MATRIX_ROW_PINS {D7, E1, F2, F0, F1}
#define MATRIX_COL_PINS {E6, E0, A3, A4, A5, A6, A7, C7, C5, C4, C3, C2, C1, C0, D6, A2, A1, A0, F3}
- #define UNUSED_PINS {}
#define RGBLED_NUM 26 // Number of LEDs
#define AUDIO_VOICES
diff --git a/keyboards/lfkeyboards/mini1800/info.json b/keyboards/lfkeyboards/mini1800/info.json
index 0625ee43d4..703184dc99 100644
--- a/keyboards/lfkeyboards/mini1800/info.json
+++ b/keyboards/lfkeyboards/mini1800/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mini1800",
+ "manufacturer": "LFKeyboards",
"url": "",
"maintainer": "lfkeyboards",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/lfkeyboards/mini1800/keymaps/ca178858/keymap.c b/keyboards/lfkeyboards/mini1800/keymaps/ca178858/keymap.c
index f5faf7215a..88e60c89af 100644
--- a/keyboards/lfkeyboards/mini1800/keymaps/ca178858/keymap.c
+++ b/keyboards/lfkeyboards/mini1800/keymaps/ca178858/keymap.c
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[SETTINGS] = LAYOUT(
XXXXXXX, 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, XXXXXXX, RGB_MOD, RGB_VAD, XXXXXXX, XXXXXXX,
- AU_TOG, KC_F1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ AU_TOG, KC_F1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI, XXXXXXX, XXXXXXX
)
diff --git a/keyboards/lfkeyboards/mini1800/mini1800.c b/keyboards/lfkeyboards/mini1800/mini1800.c
index 8819d3465a..ac6b0533b4 100644
--- a/keyboards/lfkeyboards/mini1800/mini1800.c
+++ b/keyboards/lfkeyboards/mini1800/mini1800.c
@@ -115,7 +115,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record)
if (click_toggle && record->event.pressed){
click(click_hz, click_time);
}
- if (keycode == RESET) {
+ if (keycode == QK_BOOT) {
reset_keyboard_kb();
} else {
}
diff --git a/keyboards/lfkeyboards/mini1800/readme.md b/keyboards/lfkeyboards/mini1800/readme.md
index 4e35ac537e..9cf7748856 100644
--- a/keyboards/lfkeyboards/mini1800/readme.md
+++ b/keyboards/lfkeyboards/mini1800/readme.md
@@ -21,6 +21,6 @@ Flashing example for this keyboard:
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)
+* **Keycode in keymap**: Press the key mapped to `QK_BOOT` 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/readme.md b/keyboards/lfkeyboards/mini1800/reva/readme.md
index 8460bb5326..7c1e5c10de 100644
--- a/keyboards/lfkeyboards/mini1800/reva/readme.md
+++ b/keyboards/lfkeyboards/mini1800/reva/readme.md
@@ -17,6 +17,6 @@ Flashing example for this keyboard:
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)
+* **Keycode in keymap**: Press the key mapped to `QK_BOOT` 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/readme.md b/keyboards/lfkeyboards/mini1800/revc/readme.md
index 5d442cb6d9..c872c15ed8 100644
--- a/keyboards/lfkeyboards/mini1800/revc/readme.md
+++ b/keyboards/lfkeyboards/mini1800/revc/readme.md
@@ -19,6 +19,6 @@ Flashing example for this keyboard:
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)
+* **Keycode in keymap**: Press the key mapped to `QK_BOOT` 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/smk65/info.json b/keyboards/lfkeyboards/smk65/info.json
index 038893c8f3..5522d1bbb7 100644
--- a/keyboards/lfkeyboards/smk65/info.json
+++ b/keyboards/lfkeyboards/smk65/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "SMK65",
+ "keyboard_name": "SMK65v2",
+ "manufacturer": "LFKeyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4C46",
+ "device_version": "0.0.6"
+ },
"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/lfkeyboards/smk65/revb/config.h b/keyboards/lfkeyboards/smk65/revb/config.h
index ecb183e8af..13846be9a8 100644
--- a/keyboards/lfkeyboards/smk65/revb/config.h
+++ b/keyboards/lfkeyboards/smk65/revb/config.h
@@ -16,20 +16,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C46 // "LF"
-#define PRODUCT_ID 0x565B // "s65b"
-#define DEVICE_VER 0x0006
-#define MANUFACTURER LFKeyboards
-#define PRODUCT SMK65v2
-
// RevA
// #define DIODE_DIRECTION COL2ROW
// #define MATRIX_ROWS 5
// #define MATRIX_COLS 16
// #define MATRIX_ROW_PINS {B7, F7, F6, F5, F4}
// #define MATRIX_COL_PINS {F0, F1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C7, B3, B2, B1, B0}
-// #define UNUSED_PINS {}
// RevB
#define DIODE_DIRECTION COL2ROW
@@ -37,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS {D6, D7, E0, C3, C4}
#define MATRIX_COL_PINS {F2, C5, E5, E4, B7, B6, B5, B4, B3, B2, B1, B0, E1, C0, C1, C2}
-#define UNUSED_PINS {}
#define RGBLED_NUM 20 // Number of LEDs
//RevB only:
diff --git a/keyboards/lfkeyboards/smk65/revb/info.json b/keyboards/lfkeyboards/smk65/revb/info.json
new file mode 100644
index 0000000000..8790e7e33a
--- /dev/null
+++ b/keyboards/lfkeyboards/smk65/revb/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "pid": "0x565B"
+ }
+}
diff --git a/keyboards/lfkeyboards/smk65/revb/revb.c b/keyboards/lfkeyboards/smk65/revb/revb.c
index 9b34eff1c3..9e78107eca 100644
--- a/keyboards/lfkeyboards/smk65/revb/revb.c
+++ b/keyboards/lfkeyboards/smk65/revb/revb.c
@@ -74,7 +74,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t* record)
if (click_toggle && record->event.pressed){
click(click_hz, click_time);
}
- if (keycode == RESET) {
+ if (keycode == QK_BOOT) {
reset_keyboard_kb();
} else {
}
diff --git a/keyboards/lfkeyboards/smk65/revf/config.h b/keyboards/lfkeyboards/smk65/revf/config.h
index 1b8295b152..6281324c5c 100644
--- a/keyboards/lfkeyboards/smk65/revf/config.h
+++ b/keyboards/lfkeyboards/smk65/revf/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C46 // "LF"
-#define PRODUCT_ID 0x565F // "s65f"
-#define DEVICE_VER 0x0006
-#define MANUFACTURER LFKeyboards
-#define PRODUCT SMK65v2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B3, B2, B1, F5 }
#define MATRIX_COL_PINS { E6, F4, B7, D5, D3, D2, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/lfkeyboards/smk65/revf/info.json b/keyboards/lfkeyboards/smk65/revf/info.json
new file mode 100644
index 0000000000..071eab2f47
--- /dev/null
+++ b/keyboards/lfkeyboards/smk65/revf/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "pid": "0x565F"
+ }
+}
diff --git a/keyboards/lily58/glow_enc/config.h b/keyboards/lily58/glow_enc/config.h
index 5e51acea25..67005f06b0 100644
--- a/keyboards/lily58/glow_enc/config.h
+++ b/keyboards/lily58/glow_enc/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFC51
-#define PRODUCT_ID 0x0059
-#define DEVICE_VER 0x0100
-#define MANUFACTURER ORVISEVANS+
-#define PRODUCT Lily58GlowEnc
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/lily58/glow_enc/info.json b/keyboards/lily58/glow_enc/info.json
index 503cdaae12..8e8b72434b 100644
--- a/keyboards/lily58/glow_enc/info.json
+++ b/keyboards/lily58/glow_enc/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Lily58",
+ "keyboard_name": "Lily58GlowEnc",
+ "manufacturer": "ORVISEVANS+",
"url": "https://keycapsss.com",
"maintainer": "BenRoe",
+ "usb": {
+ "vid": "0xFC51",
+ "pid": "0x0059",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/lily58/keymaps/bcat/keymap.c b/keyboards/lily58/keymaps/bcat/keymap.c
index a0856d0fdd..eced2f2655 100644
--- a/keyboards/lily58/keymaps/bcat/keymap.c
+++ b/keyboards/lily58/keymaps/bcat/keymap.c
@@ -51,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(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, _______, _______, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______,
_______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/lily58/keymaps/druotoni/keymap.c b/keyboards/lily58/keymaps/druotoni/keymap.c
index 2db32047e0..2ab26bbd24 100644
--- a/keyboards/lily58/keymaps/druotoni/keymap.c
+++ b/keyboards/lily58/keymaps/druotoni/keymap.c
@@ -60,7 +60,7 @@ 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_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), _______,
+ QK_BOOT, 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, _______),
diff --git a/keyboards/lily58/keymaps/hvp/keymap.c b/keyboards/lily58/keymaps/hvp/keymap.c
index 67e2541f6b..91f3590757 100644
--- a/keyboards/lily58/keymaps/hvp/keymap.c
+++ b/keyboards/lily58/keymaps/hvp/keymap.c
@@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, RGB_TOG, RGB_MOD, RGB_RMOD, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______,
_______, RGB_M_P, RGB_HUD, RGB_HUI, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______,
KC_PSCR, _______, RGB_SAD, RGB_SAI, _______, _______, KC_0, KC_1, KC_2, KC_3, _______, _______,
- RESET, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_VOLD, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_VOLU, _______
)
};
diff --git a/keyboards/lily58/keymaps/manna-harbour_miryoku/config.h b/keyboards/lily58/keymaps/manna-harbour_miryoku/config.h
index 1e1a2802ff..b4249396da 100644
--- a/keyboards/lily58/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/lily58/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/lily58/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/lily58/keymaps/muppetjones/README.md b/keyboards/lily58/keymaps/muppetjones/README.md
new file mode 100644
index 0000000000..38cea9cfc2
--- /dev/null
+++ b/keyboards/lily58/keymaps/muppetjones/README.md
@@ -0,0 +1,13 @@
+# Lily58
+
+```shell
+qmk compile -kb lily58/rev1 -km muppetjones
+```
+
+```
+qmk flash -kb lily58/rev1 -km muppetjones -bl avrdude-split-left
+```
+
+```
+qmk flash -kb lily58/rev1 -km muppetjones -bl avrdude-split-right
+```
diff --git a/keyboards/lily58/keymaps/muppetjones/config.h b/keyboards/lily58/keymaps/muppetjones/config.h
new file mode 100644
index 0000000000..bee5ee45da
--- /dev/null
+++ b/keyboards/lily58/keymaps/muppetjones/config.h
@@ -0,0 +1,44 @@
+/*
+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 */
+
+// 1 minute
+#ifdef OLED_ENABLE
+# define OLED_TIMEOUT 60000
+#endif
+
+
+// Change "hold" time (default is 200 ms)
+#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
+
+#undef RGBLED_NUM
+
+// Allows to use either side as the master. Look at the documentation for info:
+// https://docs.qmk.fm/#/config_options?id=setting-handedness
+#define EE_HANDS
diff --git a/keyboards/lily58/keymaps/muppetjones/features/bongo_cat.c b/keyboards/lily58/keymaps/muppetjones/features/bongo_cat.c
new file mode 100644
index 0000000000..23f6493efc
--- /dev/null
+++ b/keyboards/lily58/keymaps/muppetjones/features/bongo_cat.c
@@ -0,0 +1,127 @@
+/**
+ * BONGO CAT!
+
+WPM-responsive animation of bongo cat!
+
+Source:
+ https://github.com/qmk/qmk_firmware/blob/master/keyboards/kyria/keymaps/j-inc/keymap.c
+*/
+
+#include QMK_KEYBOARD_H
+
+#ifdef OLED_ENABLE
+
+# define IDLE_FRAMES 5
+# define IDLE_SPEED 30 // 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 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 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;
+
+/* Animation */
+
+static const char PROGMEM ANIM_IDLE[IDLE_FRAMES][ANIM_SIZE] = {
+ // clang-format off
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
+ }
+ // clang-format on
+};
+
+// Prep animation
+static const char PROGMEM ANIM_PREP[][ANIM_SIZE] = {
+ // clang-format off
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
+ }
+ // clang-format on
+};
+
+// Typing animation
+static const char PROGMEM ANIM_TAP[TAP_FRAMES][ANIM_SIZE] = {
+ // clang-format off
+ {
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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
+ }
+ // clang-format on
+};
+
+/* Functions */
+
+
+void animation_phase(uint8_t wpm) {
+ // NOTE: Optimized the conditional. We don't need to recheck each.
+ // NOTE: Move this and the animation outside of the function.
+
+ if (IDLE_SPEED >= wpm) {
+ current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
+ oled_write_raw_P(ANIM_IDLE[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
+ } else if (TAP_SPEED > wpm) {
+ oled_write_raw_P(ANIM_PREP[0], ANIM_SIZE);
+ } else {
+ current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
+ oled_write_raw_P(ANIM_TAP[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE);
+ }
+}
+
+// Images credit j-inc(/James Incandenza) and pixelbenny. Credit to obosob for initial animation approach.
+void render_bongo_cat(void) {
+ const uint8_t curr_wpm = get_current_wpm();
+
+ if (curr_wpm > 000) {
+ oled_on();
+ anim_sleep = timer_read32();
+ } else if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
+ oled_off();
+ return;
+ }
+
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase(curr_wpm);
+ }
+}
+
+#endif
diff --git a/keyboards/lily58/keymaps/muppetjones/features/bongo_cat.h b/keyboards/lily58/keymaps/muppetjones/features/bongo_cat.h
new file mode 100644
index 0000000000..1025ccfa1b
--- /dev/null
+++ b/keyboards/lily58/keymaps/muppetjones/features/bongo_cat.h
@@ -0,0 +1,14 @@
+/**
+ * BONGO CAT!
+
+WPM-responsive animation of bongo cat!
+
+Source:
+ https://github.com/qmk/qmk_firmware/blob/master/keyboards/kyria/keymaps/j-inc/keymap.c
+*/
+
+#pragma once
+
+const char *wpm_state(void);
+void animation_phase(uint8_t wpm);
+void render_bongo_cat(void);
diff --git a/keyboards/lily58/keymaps/muppetjones/keymap.c b/keyboards/lily58/keymaps/muppetjones/keymap.c
new file mode 100644
index 0000000000..5a507eb9cb
--- /dev/null
+++ b/keyboards/lily58/keymaps/muppetjones/keymap.c
@@ -0,0 +1,240 @@
+/* Copyright 2020 Stephen J. Bush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "muppetjones.h"
+#include "features/bongo_cat.h"
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+
+/*
+ * qmk compile -kb lily58/rev1 -km muppetjones
+ */
+
+// GACS (Lower)
+#define HR_LBRC LCTL_T(KC_LBRC)
+#define HR_RBRC LSFT_T(KC_RBRC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // clang-format off
+
+/* Colemak DH
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | BADJ |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | Q | W | F | P | B | | J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Esc | A | R | S | T | G |-------. ,-------| M | N | E | I | O | ' |
+ * |------+------+------+------+------+------| Raise | | Lower |------+------+------+------+------+------|
+ * |LShift| Z | X | C | D | V |-------| |-------| K | H | , | . | / |Enter |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | Alt | LGUI |LOWER | /Space / \Space \ |RAISE | Ctrl | RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+[_CLMK_DH] = LAYOUT_wrapper(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_CAPS, __BLANK____________________________________, KC_BSPC,
+ KC_CAPS, __COLEMAK_MOD_DH_L1________________________, __COLEMAK_MOD_DH_R1_W_QUOT_________________, KC_BSPC,
+ HY_ESC, __COLEMAK_MOD_DH_L2_W_GACS_________________, __COLEMAK_MOD_DH_R2_W_SCAG_________________, KC_QUOT,
+ TD_LAYR, __COLEMAK_MOD_DH_L3_W_SFTV_________________, KC_CAPS, KC_TAB, __COLEMAK_MOD_DH_R3________________________, KC_SFTENT,
+ XXXXXXX, XXXXXXX, HY_ESC, LOW_ENT, NAV_SPC, HY_BSPC, XXXXXXX, XXXXXXX
+),
+
+/* 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_wrapper(
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __QWERTY_L1________________________________, __QWERTY_R1________________________________, _______,
+ _______, __QWERTY_L2________________________________, __QWERTY_R2________________________________, _______,
+ _______, __QWERTY_L3________________________________, _______, _______, __QWERTY_R3________________________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+),
+[_MOUSE] = LAYOUT_wrapper(
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __BLANK____________________________________, _______, _______, __BLANK____________________________________, _______,
+ KC_BTN1, __BLANK____________________________________, _______, KC_BTN2
+),
+
+/* LOWER
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | | Mute | Vol- | Vol+ | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ~ | | | ` | | ( | | ) | 7 | 8 | 9 | \ | Bksp |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | GUI | ALT | _ | - | { |-------. ,-------| } | 4 | 5 | 6 | * | ` |
+ * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * | | | | + | = | [ |-------| |-------| ] | 1 | 2 | 3 | | |Enter |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | | |LOWER | / / \ \ | 0 | . | = |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+[_LOWER] = LAYOUT_wrapper(
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __SYMBOLS_L1_______________________________, __NUMPAD_R1________________________________, _______,
+ _______, __SYMBOLS_L2_______________________________, __NUMPAD_R2________________________________, KC_COMM,
+ _______, __SYMBOLS_L3_______________________________, _______, _______, __NUMPAD_R3________________________________, KC_DOT,
+ _______, _______, _______, _______, KC_SPC, KC_0, KC_DOT, _______
+),
+/* RAISE
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | |MS_A_0|MS_A_1|MS_A_2| | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | |MS_W_U| | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | GUI | ALT | CTL | SFT |MS_W_D|-------. ,-------| | Left | Down | Up |Right | |
+ * |------+------+------+------+------+------|MS_W_L | |MS_W_R |------+------+------+------+------+------|
+ * | | MS_L | MS_D | MS_U | MS_R | |-------| |-------| |MS_W_L|MS_W_D|MS_W_U|MS_W_R| |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | | | MS_2 | / MS_1 / \ \ |RAISE | | |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ // */
+
+[_RAISE] = LAYOUT_wrapper(
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __SYMBOLS_L1_______________________________, __NAV_R1___________________________________, _______,
+ _______, __SYMBOLS_L2_______________________________, __NAV_R2___________________________________, _______,
+ _______, __SYMBOLS_L3_______________________________, _______, _______, __NAV_R3___________________________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+),
+[_NAV] = LAYOUT_wrapper(
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __VIM_L1___________________________________, __NAV_R1___________________________________, _______,
+ _______, __BLANK_W_GACS_____________________________, __NAV_R2___________________________________, _______,
+ _______, __BLANK____________________________________, _______, _______, __NAV_R3___________________________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* ADJUST
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | Reset| | | | | | Reset| | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | |-------. ,-------| | |RGB ON| HUE+ | SAT+ | VAL+ |
+ * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * | | | | | | |-------| |-------| | | MODE | HUE- | SAT- | VAL- |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
+ * | | | |/ / \ \ | | | |
+ * `----------------------------' '------''--------------------'
+ */
+[_ADJUST] = LAYOUT_wrapper(
+ _______, __BLANK____________________________________, _______, CLMK_DH, QWERTY, _______, _______, _______,
+ QK_BOOT, __ADJUST_L1________________________________, __MEDIA_R1_________________________________, _______,
+ _______, __ADJUST_L2________________________________, __MEDIA_R2_________________________________, _______,
+ _______, __ADJUST_L3________________________________, _______, _______, __MEDIA_R3_________________________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+ // clang-format on
+};
+
+// SSD1306 OLED update loop, make sure to enable OLED_DRIVER_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_user(void);
+void set_keylog(uint16_t keycode, keyrecord_t *record);
+const char *read_keylog(void);
+const char *read_keylogs(void);
+
+char layer_state_str[24];
+
+const char *read_layer_state_user(void) {
+ // NOTE;
+ switch (get_highest_layer(layer_state)) {
+ case _CLMK_DH:
+ return "Layer: Colemak";
+ break;
+ case _QWERTY:
+ return "Layer: QWERTY ";
+ break;
+ case _MOUSE:
+ return "Layer: Mouse ";
+ break;
+ case _LOWER:
+ return "Layer: Lower ";
+ break;
+ case _RAISE:
+ return "Layer: Raise ";
+ break;
+ case _NAV:
+ return "Layer: Nav ";
+ break;
+ case _ADJUST:
+ return "Layer: Adjust ";
+ break;
+ default:
+ break;
+ }
+
+ char *layer_state_str = "Layer: Und- ";
+ layer_state_str[10] = '0' + layer_state % 10;
+ return layer_state_str;
+}
+
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
+ // If you want to change the display of OLED, you need to change here
+ oled_write_ln(read_layer_state_user(), false);
+ oled_write_ln(read_keylog(), false);
+ oled_write_ln(read_keylogs(), false);
+ } else {
+ render_bongo_cat();
+ oled_set_cursor(0, 6);
+ oled_write_P(PSTR("WPM: "), false);
+ oled_write(get_u8_str(get_current_wpm(), ' '), false);
+ }
+ return false;
+}
+#endif // OLED_DRIVER_ENABLE
+
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+#ifdef OLED_ENABLE
+ set_keylog(keycode, record);
+#endif
+ // set_timelog();
+ }
+
+ // Regular user keycode case statement
+ switch (keycode) {
+ default:
+ return true;
+ }
+
+ return true;
+}
diff --git a/keyboards/lily58/keymaps/muppetjones/rules.mk b/keyboards/lily58/keymaps/muppetjones/rules.mk
new file mode 100644
index 0000000000..1323bea893
--- /dev/null
+++ b/keyboards/lily58/keymaps/muppetjones/rules.mk
@@ -0,0 +1,17 @@
+OLED_ENABLE= yes # OLED display
+WPM_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+
+# If you want to change the display of OLED, you need to change here
+# SRC += ./lib/rgb_state_reader.c
+SRC += ./lib/layer_state_reader.c
+SRC += ./lib/logo_reader.c
+SRC += ./lib/keylogger.c
+SRC += ./features/bongo_cat.c
+
+# Reduce firmware size
+# https://thomasbaart.nl/2018/12/01/reducing-firmware-size-in-qmk/
+# also requires in config.h
+LTO_ENABLE = yes
diff --git a/keyboards/lily58/lib/layer_state_reader.c b/keyboards/lily58/lib/layer_state_reader.c
index 0e9dd7039b..868d8e5cb4 100644
--- a/keyboards/lily58/lib/layer_state_reader.c
+++ b/keyboards/lily58/lib/layer_state_reader.c
@@ -28,7 +28,7 @@ const char *read_layer_state(void) {
snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust");
break;
default:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%ld", layer_state);
+ snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%u", layer_state);
}
return layer_state_str;
diff --git a/keyboards/lily58/light/config.h b/keyboards/lily58/light/config.h
index 1893dde8eb..32c9445152 100644
--- a/keyboards/lily58/light/config.h
+++ b/keyboards/lily58/light/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7983
-#define PRODUCT_ID 0x4C4C // "LL"
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Keycapsss
-#define PRODUCT Lily58L
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/lily58/light/info.json b/keyboards/lily58/light/info.json
index 503cdaae12..a0f931a6d9 100644
--- a/keyboards/lily58/light/info.json
+++ b/keyboards/lily58/light/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Lily58",
+ "keyboard_name": "Lily58L",
+ "manufacturer": "Keycapsss",
"url": "https://keycapsss.com",
"maintainer": "BenRoe",
+ "usb": {
+ "vid": "0x7983",
+ "pid": "0x4C4C",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/lily58/rev1/config.h b/keyboards/lily58/rev1/config.h
index 6bfc7ffa75..8205899f5e 100644
--- a/keyboards/lily58/rev1/config.h
+++ b/keyboards/lily58/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEB2D
-#define DEVICE_VER 0x0100
-#define MANUFACTURER liliums
-#define PRODUCT Lily58
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/lily58/rev1/info.json b/keyboards/lily58/rev1/info.json
index ed4deb0098..10370c6d16 100644
--- a/keyboards/lily58/rev1/info.json
+++ b/keyboards/lily58/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Lily58",
+ "manufacturer": "liliums",
"url": "",
"maintainer": "liliums",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEB2D",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/lime/readme.md b/keyboards/lime/readme.md
index 539ae97fd3..bd72b9d6c5 100644
--- a/keyboards/lime/readme.md
+++ b/keyboards/lime/readme.md
@@ -22,7 +22,7 @@ Flashing example for this keyboard:
Press reset button on he keyboard when asked. You can do that in 3 ways:
* **Physical reset button**: Briefly press the button near the TRRS connector on the PCB - if you haven't installed one, short the pads instead
-* **Keycode in layout**: Press the key mapped to `RESET` (`Lower` + `Raise` + `Esc` on the default layout)
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` (`Lower` + `Raise` + `Esc` on the default layout)
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
Disconnect the first half, connect the second one and repeat the process.
diff --git a/keyboards/lime/rev1/config.h b/keyboards/lime/rev1/config.h
index 547b881761..3eaa4e2b60 100644
--- a/keyboards/lime/rev1/config.h
+++ b/keyboards/lime/rev1/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0666
-#define PRODUCT_ID 0x2784
-#define DEVICE_VER 0x0001
-#define MANUFACTURER HellSingCoder
-#define PRODUCT Lime
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
diff --git a/keyboards/lime/rev1/info.json b/keyboards/lime/rev1/info.json
index 0dcadc7823..3357ba536f 100644
--- a/keyboards/lime/rev1/info.json
+++ b/keyboards/lime/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Lime",
+ "manufacturer": "HellSingCoder",
"url": "https://github.com/HellSingCoder/LimeKeyboard",
"maintainer": "HellSingCoder",
+ "usb": {
+ "vid": "0x0666",
+ "pid": "0x2784",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/linworks/dolice/config.h b/keyboards/linworks/dolice/config.h
index 1523c72702..b8648e64db 100644
--- a/keyboards/linworks/dolice/config.h
+++ b/keyboards/linworks/dolice/config.h
@@ -16,15 +16,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C58 //"LX"
-#define PRODUCT_ID 0x0005
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KLC
-#define PRODUCT Dolice
-
-/* Set 1 kHz polling rate and force USB NKRO */
-#define USB_POLLING_INTERVAL_MS 1
+/* Force USB NKRO */
#define FORCE_NKRO
/* key matrix size */
@@ -33,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { F5, F4, F6, F7, B0, B7, D7, D6, D4 }
#define MATRIX_COL_PINS { E6, F0, F1, B4, D5, D3, D2, B2 }
-#define UNUSED_PINS { B1, B3, D0, D1, E2 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
@@ -45,3 +36,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BACKLIGHT_PIN B5 // Timer 1 on mega32u4
#define BACKLIGHT_BREATHING
#define BACKLIGHT_ON_STATE 1
+
+/* Indicator LEDs */
+#define LED_NUM_LOCK_PIN B6
+#define LED_CAPS_LOCK_PIN C7
+#define LED_SCROLL_LOCK_PIN C6
+#define LED_PIN_ON_STATE 0 \ No newline at end of file
diff --git a/keyboards/linworks/dolice/info.json b/keyboards/linworks/dolice/info.json
index 5a72496f1c..4cc1a71a55 100644
--- a/keyboards/linworks/dolice/info.json
+++ b/keyboards/linworks/dolice/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Dolice",
+ "manufacturer": "KLC",
"maintainer": "ebastler",
+ "usb": {
+ "vid": "0x4C58",
+ "pid": "0x0005",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice": {
"layout": [
diff --git a/keyboards/linworks/em8/config.h b/keyboards/linworks/em8/config.h
new file mode 100644
index 0000000000..176c814e35
--- /dev/null
+++ b/keyboards/linworks/em8/config.h
@@ -0,0 +1,8 @@
+// Copyright 2022 moritz plattner (@moritz plattner)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Move Bootmagic key from ~ to ESC (0,0 to 1,0)
+#define BOOTMAGIC_LITE_ROW 1
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/linworks/em8/info.json b/keyboards/linworks/em8/info.json
new file mode 100644
index 0000000000..e4d58708e5
--- /dev/null
+++ b/keyboards/linworks/em8/info.json
@@ -0,0 +1,190 @@
+{
+ "manufacturer": "Linworks",
+ "keyboard_name": "EM.8",
+ "maintainer": "ebastler",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": false,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": [ "B5", "B4", "D0", "D1", "D4", "D6", "D7", "F6", "F5", "F4", "F1", "B2", "B6", "C6", "C7" ],
+ "rows": [ "B7", "B0", "F0", "E6", "F7" ]
+ },
+ "processor": "atmega32u4",
+ "url": "https://klc-playground.com/",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0006",
+ "vid": "0x4C58"
+ },
+ "indicators": {
+ "num_lock": "D2",
+ "caps_lock": "D3",
+ "scroll_lock": "D5",
+ "on_state": 0
+ },
+ "layouts": {
+ "LAYOUT_em8_2u_backsp": {
+ "layout": [
+ {"x":0, "y":0, "matrix":[1,0] },
+ {"x":1.25, "y":0, "matrix":[0,0] },
+ {"x":2.25, "y":0, "matrix":[0,1] },
+ {"x":3.25, "y":0, "matrix":[0,2] },
+ {"x":4.25, "y":0, "matrix":[0,3] },
+ {"x":5.25, "y":0, "matrix":[0,4] },
+ {"x":6.25, "y":0, "matrix":[0,5] },
+ {"x":7.25, "y":0, "matrix":[0,6] },
+ {"x":10.25, "y":0, "matrix":[0,7] },
+ {"x":11.25, "y":0, "matrix":[0,8] },
+ {"x":12.25, "y":0, "matrix":[0,9] },
+ {"x":13.25, "y":0, "matrix":[0,10] },
+ {"x":14.25, "y":0, "matrix":[0,11] },
+ {"x":15.25, "y":0, "matrix":[0,12] },
+ {"x":16.25, "y":0, "w": 2, "matrix":[0,13] },
+ {"x":18.5, "y":0, "matrix":[0,14] },
+
+ {"x":0, "y":1, "matrix":[2,0] },
+ {"x":1.25, "y":1, "w":1.5, "matrix":[1,1] },
+ {"x":2.75, "y":1, "matrix":[1,2] },
+ {"x":3.75, "y":1, "matrix":[1,3] },
+ {"x":4.75, "y":1, "matrix":[1,4] },
+ {"x":5.75, "y":1, "matrix":[1,5] },
+ {"x":6.75, "y":1, "matrix":[1,6] },
+ {"x":9.75, "y":1, "matrix":[1,7] },
+ {"x":10.75, "y":1, "matrix":[1,8] },
+ {"x":11.75, "y":1, "matrix":[1,9] },
+ {"x":12.75, "y":1, "matrix":[1,10] },
+ {"x":13.75, "y":1, "matrix":[1,11] },
+ {"x":14.75, "y":1, "matrix":[1,12] },
+ {"x":15.75, "y":1, "matrix":[1,13] },
+ {"x":16.75, "y":1, "w":1.5, "matrix":[1,14] },
+ {"x":18.5, "y":1, "matrix":[2,14] },
+
+ {"x":0, "y":2, "matrix":[3,0] },
+ {"x":1.25, "y":2, "w":1.75, "matrix":[2,1] },
+ {"x":3, "y":2, "matrix":[2,2] },
+ {"x":4, "y":2, "matrix":[2,3] },
+ {"x":5, "y":2, "matrix":[2,4] },
+ {"x":6, "y":2, "matrix":[2,5] },
+ {"x":7, "y":2, "matrix":[2,6] },
+ {"x":10, "y":2, "matrix":[2,7] },
+ {"x":11, "y":2, "matrix":[2,8] },
+ {"x":12, "y":2, "matrix":[2,9] },
+ {"x":13, "y":2, "matrix":[2,10] },
+ {"x":14, "y":2, "matrix":[2,11] },
+ {"x":15, "y":2, "matrix":[2,12] },
+ {"x":16, "y":2, "w":2.25, "matrix":[2,13] },
+
+ {"x":1.25, "y":3, "w":2.25, "matrix":[3,1] },
+ {"x":3.5, "y":3, "matrix":[3,2] },
+ {"x":4.5, "y":3, "matrix":[3,3] },
+ {"x":5.5, "y":3, "matrix":[3,4] },
+ {"x":6.5, "y":3, "matrix":[3,5] },
+ {"x":7.5, "y":3, "matrix":[3,6] },
+ {"x":9.5, "y":3, "matrix":[3,7] },
+ {"x":10.5, "y":3, "matrix":[3,8] },
+ {"x":11.5, "y":3, "matrix":[3,9] },
+ {"x":12.5, "y":3, "matrix":[3,10] },
+ {"x":13.5, "y":3, "matrix":[3,11] },
+ {"x":14.5, "y":3, "matrix":[3,12] },
+ {"x":15.5, "y":3, "w":1.75, "matrix":[3,13] },
+ {"x":17.5, "y":3.25, "matrix":[3,14] },
+
+ {"x":1.25, "y":4, "w":1.5, "matrix":[4,1] },
+ {"x":4.25, "y":4, "w":1.5, "matrix":[4,3] },
+ {"x":5.75, "y":4, "w":2.25, "matrix":[4,5] },
+ {"x":8, "y":4, "w":1, "matrix":[4,6] },
+ {"x":9.5, "y":4, "w":2.75, "matrix":[4,8] },
+ {"x":12.25, "y":4, "w":1.5, "matrix":[4,10] },
+ {"x":16.5, "y":4.25, "w":1, "matrix":[4,12] },
+ {"x":17.5, "y":4.25, "w":1, "matrix":[4,13] },
+ {"x":18.5, "y":4.25, "w":1, "matrix":[4,14] }
+ ]
+ },
+
+ "LAYOUT_em8_all": {
+ "layout": [
+ {"x":0, "y":0, "matrix":[1,0] },
+ {"x":1.25, "y":0, "matrix":[0,0] },
+ {"x":2.25, "y":0, "matrix":[0,1] },
+ {"x":3.25, "y":0, "matrix":[0,2] },
+ {"x":4.25, "y":0, "matrix":[0,3] },
+ {"x":5.25, "y":0, "matrix":[0,4] },
+ {"x":6.25, "y":0, "matrix":[0,5] },
+ {"x":7.25, "y":0, "matrix":[0,6] },
+ {"x":10.25, "y":0, "matrix":[0,7] },
+ {"x":11.25, "y":0, "matrix":[0,8] },
+ {"x":12.25, "y":0, "matrix":[0,9] },
+ {"x":13.25, "y":0, "matrix":[0,10] },
+ {"x":14.25, "y":0, "matrix":[0,11] },
+ {"x":15.25, "y":0, "matrix":[0,12] },
+ {"x":16.25, "y":0, "matrix":[0,13] },
+ {"x":17.25, "y":0, "matrix":[4,11] },
+ {"x":18.5, "y":0, "matrix":[0,14] },
+
+ {"x":0, "y":1, "matrix":[2,0] },
+ {"x":1.25, "y":1, "w":1.5, "matrix":[1,1] },
+ {"x":2.75, "y":1, "matrix":[1,2] },
+ {"x":3.75, "y":1, "matrix":[1,3] },
+ {"x":4.75, "y":1, "matrix":[1,4] },
+ {"x":5.75, "y":1, "matrix":[1,5] },
+ {"x":6.75, "y":1, "matrix":[1,6] },
+ {"x":9.75, "y":1, "matrix":[1,7] },
+ {"x":10.75, "y":1, "matrix":[1,8] },
+ {"x":11.75, "y":1, "matrix":[1,9] },
+ {"x":12.75, "y":1, "matrix":[1,10] },
+ {"x":13.75, "y":1, "matrix":[1,11] },
+ {"x":14.75, "y":1, "matrix":[1,12] },
+ {"x":15.75, "y":1, "matrix":[1,13] },
+ {"x":16.75, "y":1, "w":1.5, "matrix":[1,14] },
+ {"x":18.5, "y":1, "matrix":[2,14] },
+
+ {"x":0, "y":2, "matrix":[3,0] },
+ {"x":1.25, "y":2, "w":1.75, "matrix":[2,1] },
+ {"x":3, "y":2, "matrix":[2,2] },
+ {"x":4, "y":2, "matrix":[2,3] },
+ {"x":5, "y":2, "matrix":[2,4] },
+ {"x":6, "y":2, "matrix":[2,5] },
+ {"x":7, "y":2, "matrix":[2,6] },
+ {"x":10, "y":2, "matrix":[2,7] },
+ {"x":11, "y":2, "matrix":[2,8] },
+ {"x":12, "y":2, "matrix":[2,9] },
+ {"x":13, "y":2, "matrix":[2,10] },
+ {"x":14, "y":2, "matrix":[2,11] },
+ {"x":15, "y":2, "matrix":[2,12] },
+ {"x":16, "y":2, "w":2.25, "matrix":[2,13] },
+
+ {"x":1.25, "y":3, "w":2.25, "matrix":[3,1] },
+ {"x":3.5, "y":3, "matrix":[3,2] },
+ {"x":4.5, "y":3, "matrix":[3,3] },
+ {"x":5.5, "y":3, "matrix":[3,4] },
+ {"x":6.5, "y":3, "matrix":[3,5] },
+ {"x":7.5, "y":3, "matrix":[3,6] },
+ {"x":9.5, "y":3, "matrix":[3,7] },
+ {"x":10.5, "y":3, "matrix":[3,8] },
+ {"x":11.5, "y":3, "matrix":[3,9] },
+ {"x":12.5, "y":3, "matrix":[3,10] },
+ {"x":13.5, "y":3, "matrix":[3,11] },
+ {"x":14.5, "y":3, "matrix":[3,12] },
+ {"x":15.5, "y":3, "w":1.75, "matrix":[3,13] },
+ {"x":17.5, "y":3.25, "matrix":[3,14] },
+
+ {"x":1.25, "y":4, "w":1.5, "matrix":[4,1] },
+ {"x":4.25, "y":4, "w":1.5, "matrix":[4,3] },
+ {"x":5.75, "y":4, "w":2.25, "matrix":[4,5] },
+ {"x":8, "y":4, "w":1, "matrix":[4,6] },
+ {"x":9.5, "y":4, "w":2.75, "matrix":[4,8] },
+ {"x":12.25, "y":4, "w":1.5, "matrix":[4,10] },
+ {"x":16.5, "y":4.25, "w":1, "matrix":[4,12] },
+ {"x":17.5, "y":4.25, "w":1, "matrix":[4,13] },
+ {"x":18.5, "y":4.25, "w":1, "matrix":[4,14] }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/linworks/em8/keymaps/default/keymap.c b/keyboards/linworks/em8/keymaps/default/keymap.c
new file mode 100644
index 0000000000..f195907db9
--- /dev/null
+++ b/keyboards/linworks/em8/keymaps/default/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2022 Moritz Plattner
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_em8_all(
+ 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_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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_em8_all(
+ 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_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_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+ [2] = LAYOUT_em8_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_em8_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/linworks/em8/keymaps/via/keymap.c b/keyboards/linworks/em8/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f195907db9
--- /dev/null
+++ b/keyboards/linworks/em8/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2022 Moritz Plattner
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_em8_all(
+ 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_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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_em8_all(
+ 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_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_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+ [2] = LAYOUT_em8_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_em8_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/linworks/em8/keymaps/via/rules.mk b/keyboards/linworks/em8/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/linworks/em8/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/linworks/em8/readme.md b/keyboards/linworks/em8/readme.md
new file mode 100644
index 0000000000..cd8f6a5ba3
--- /dev/null
+++ b/keyboards/linworks/em8/readme.md
@@ -0,0 +1,22 @@
+# EM.8
+
+The Ergonomic Modified 8 is a tented ergonomic keyboard and the successor to the EM.7, designed by Syryan and Lx3.The default PCB supports hotswap and the layout options are limited to split or regular backpsace, as well as regular or stepped caps lock.
+
+* Keyboard maintainer: [ebastler](https://github.com/ebastler)
+* Hardware supported: Lin EM.8
+* Hardware availability: Groupbuy. More infos on [the Linworks Discord](https://discord.gg/UC8gTdVnsj)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make linworks/em8:default
+
+Flash example for this keyboard:
+
+ make linworks/em8: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).
+
+
+## How to enter the bootloader
+* **Bootmagic reset**: Hold down the key `ESC` key and plug in the keyboard (Top left most switch). On older firmware revisions, `~` (top left most switch of the alpha cluster) may be needed instead.
+* **Physical reset button**: Briefly press the button on the back of the PCB \ No newline at end of file
diff --git a/keyboards/linworks/em8/rules.mk b/keyboards/linworks/em8/rules.mk
new file mode 100644
index 0000000000..7ff128fa69
--- /dev/null
+++ b/keyboards/linworks/em8/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank \ No newline at end of file
diff --git a/keyboards/linworks/fave104/chconf.h b/keyboards/linworks/fave104/chconf.h
new file mode 100644
index 0000000000..1716aa6cca
--- /dev/null
+++ b/keyboards/linworks/fave104/chconf.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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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/ebastler/isometria_75/rev1/chconf.h -r platforms/chibios/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_RESOLUTION 16
+
+#define CH_CFG_INTERVALS_SIZE 16
+
+#include_next <chconf.h>
+
diff --git a/keyboards/linworks/fave104/config.h b/keyboards/linworks/fave104/config.h
new file mode 100644
index 0000000000..6a13406ead
--- /dev/null
+++ b/keyboards/linworks/fave104/config.h
@@ -0,0 +1,47 @@
+/*
+Copyright 2020 Moritz Plattner
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 12
+#define MATRIX_COLS 11
+
+#define MATRIX_ROW_PINS { B11, B10, B2, B1, B0, A7, A6, A5, A4, A3, A2, A0 }
+#define MATRIX_COL_PINS { B12, B13, B14, B15, A8, A9, A10, A13, A14, A15, B3 }
+#define UNUSED_PINS
+
+#define LED_NUM_LOCK_PIN B6
+#define LED_CAPS_LOCK_PIN B5
+#define LED_SCROLL_LOCK_PIN B4
+#define LED_PIN_ON_STATE 0
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+#define DEBOUNCE 5
+
+/* Backlight */
+#define BACKLIGHT_PIN A1
+#define BACKLIGHT_BREATHING
+#define BACKLIGHT_PWM_DRIVER PWMD2
+#define BACKLIGHT_PWM_CHANNEL 2
+#define BACKLIGHT_PAL_MODE 2
+#define BACKLIGHT_LEVELS 5
+#define BACKLIGHT_ON_STATE 1
+#define BACKLIGHT_PWM_OUTPUT_FREQUENCY 1000 // Increases backlight PWM freq if compiled with an unmerged PR. Does no harm without it.
diff --git a/keyboards/linworks/fave104/fave104.c b/keyboards/linworks/fave104/fave104.c
new file mode 100644
index 0000000000..f6b1e8d11b
--- /dev/null
+++ b/keyboards/linworks/fave104/fave104.c
@@ -0,0 +1,17 @@
+/* Copyright 2020 Moritz Plattner
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "fave104.h"
diff --git a/keyboards/linworks/fave104/fave104.h b/keyboards/linworks/fave104/fave104.h
new file mode 100644
index 0000000000..bd30b1e0c4
--- /dev/null
+++ b/keyboards/linworks/fave104/fave104.h
@@ -0,0 +1,86 @@
+/* Copyright 2021 Moritz Plattner
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, 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, K90, K91, K92, K93, K94, K95, K96, K97, K98, K99, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 \
+) { \
+ { K00, K01, K03, K05, K07, K09, K11, K12, K14, K16, K18 }, \
+ { KC_NO, K02, K04, K06, K08, K10, KC_NO, K13, K15, K17, K19 }, \
+ { K20, K22, K24, K26, K28, K30, K32, K34, K36, K38, K40 }, \
+ { K21, K23, K25, K27, K29, K31, K33, K35, K37, K39, K41 }, \
+ { K42, K44, K46, K48, K50, K52, K54, K55, K57, K59, K61 }, \
+ { K43, K45, K47, K49, K51, K53, KC_NO, K56, K58, K60, K62 }, \
+ { K63, K65, K67, K69, K71, K73, K75, K76, KC_NO, K77, K79 }, \
+ { K64, K66, K68, K70, K72, K74, KC_NO, KC_NO, KC_NO, K78, K80 }, \
+ { K81, K83, K85, K87, K89, K91, K93, K94, K95, K96, K98 }, \
+ { K82, K84, K86, K88, K90, K92, KC_NO, KC_NO, KC_NO, K97, K99 }, \
+ { K100, K102, KC_NO, K103, KC_NO, K104, K106, K107, K109, K111, K113}, \
+ { K101, KC_NO, KC_NO, KC_NO, KC_NO, K105, KC_NO, K108, K110, K112, K114} \
+}
+
+#define LAYOUT_fullsize_ansi( \
+ 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, 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, K76, K77, K78, K79, K80, \
+ K81, K83, K84, K85, K86, K87, K88, K89, K90, K91, K92, K93, K95, K96, K97, K98, K99, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 \
+) { \
+ { K00, K01, K03, K05, K07, K09, K11, K12, K14, K16, K18 }, \
+ { KC_NO, K02, K04, K06, K08, K10, KC_NO, K13, K15, K17, K19 }, \
+ { K20, K22, K24, K26, K28, K30, K32, K34, K36, K38, K40 }, \
+ { K21, K23, K25, K27, K29, K31, KC_NO, K35, K37, K39, K41 }, \
+ { K42, K44, K46, K48, K50, K52, K54, K55, K57, K59, K61 }, \
+ { K43, K45, K47, K49, K51, K53, KC_NO, K56, K58, K60, K62 }, \
+ { K63, K65, K67, K69, K71, K73, KC_NO, K76, KC_NO, K77, K79 }, \
+ { K64, K66, K68, K70, K72, K74, KC_NO, KC_NO, KC_NO, K78, K80 }, \
+ { K81, K83, K85, K87, K89, K91, K93, KC_NO, K95, K96, K98 }, \
+ { KC_NO, K84, K86, K88, K90, K92, KC_NO, KC_NO, KC_NO, K97, K99 }, \
+ { K100, K102, KC_NO, K103, KC_NO, K104, K106, K107, K109, K111, K113}, \
+ { K101, KC_NO, KC_NO, KC_NO, KC_NO, K105, KC_NO, K108, K110, K112, K114} \
+}
+
+#define LAYOUT_fullsize_iso( \
+ 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, 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, K90, K91, K92, K93, K94, K95, K96, K97, K98, K99, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 \
+) { \
+ { K00, K01, K03, K05, K07, K09, K11, K12, K14, K16, K18 }, \
+ { KC_NO, K02, K04, K06, K08, K10, KC_NO, K13, K15, K17, K19 }, \
+ { K20, K22, K24, K26, K28, K30, K32, K34, K36, K38, K40 }, \
+ { K21, K23, K25, K27, K29, K31, K33, K35, K37, K39, K41 }, \
+ { K42, K44, K46, K48, K50, K52, K54, KC_NO, K57, K59, K61 }, \
+ { K43, K45, K47, K49, K51, K53, KC_NO, K56, K58, K60, K62 }, \
+ { K63, K65, K67, K69, K71, K73, K75, K76, KC_NO, K77, K79 }, \
+ { K64, K66, K68, K70, K72, K74, KC_NO, KC_NO, KC_NO, K78, K80 }, \
+ { K81, K83, K85, K87, K89, K91, K93, K94, K95, K96, K98 }, \
+ { K82, K84, K86, K88, K90, K92, KC_NO, KC_NO, KC_NO, K97, K99 }, \
+ { K100, K102, KC_NO, K103, KC_NO, K104, K106, K107, K109, K111, K113}, \
+ { K101, KC_NO, KC_NO, KC_NO, KC_NO, K105, KC_NO, K108, K110, K112, K114} \
+}
+
diff --git a/keyboards/linworks/fave104/halconf.h b/keyboards/linworks/fave104/halconf.h
new file mode 100644
index 0000000000..6fbac77afb
--- /dev/null
+++ b/keyboards/linworks/fave104/halconf.h
@@ -0,0 +1,27 @@
+/* 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/ebastler/isometria_75/rev1/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#include_next <halconf.h>
+
diff --git a/keyboards/linworks/fave104/info.json b/keyboards/linworks/fave104/info.json
new file mode 100644
index 0000000000..f675f8c51f
--- /dev/null
+++ b/keyboards/linworks/fave104/info.json
@@ -0,0 +1,382 @@
+{
+ "keyboard_name": "FAVE-104",
+ "manufacturer": "Lx3",
+ "url": "",
+ "maintainer": "keydler",
+ "usb": {
+ "vid": "0x4C58",
+ "pid": "0x000A",
+ "device_version": "0.0.1"
+ },
+ "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},
+ {"x":18.5, "y":0},
+ {"x":19.5, "y":0},
+ {"x":20.5, "y":0},
+ {"x":21.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},
+ {"x":13, "y":1.25},
+ {"label":"Bksp", "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":"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":"PgDn", "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},
+
+ {"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},
+ {"x":12.75, "y":3.25},
+ {"label":"Enter", "x":13.75, "y":3.25, "w":1.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":"+", "x":21.5, "y":3.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"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},
+ {"x":14, "y":4.25},
+ {"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},
+
+ {"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":"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},
+ {"label":"0", "x":18.5, "y":5.25},
+ {"label":"0", "x":19.5, "y":5.25},
+ {"label":".", "x":20.5, "y":5.25},
+ {"label":"Enter", "x":21.5, "y":5.25}
+ ]
+ },
+
+ "LAYOUT_fullsize_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":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+ {"x":18.5, "y":0},
+ {"x":19.5, "y":0},
+ {"x":20.5, "y":0},
+ {"x":21.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":"Bksp", "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":"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":"PgDn", "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},
+
+ {"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":"+", "x":21.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":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},
+
+ {"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":"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},
+ {"label":"0", "x":18.5, "y":5.25},
+ {"label":"0", "x":19.5, "y":5.25},
+ {"label":".", "x":20.5, "y":5.25},
+ {"label":"Enter", "x":21.5, "y":5.25}
+ ]
+ },
+
+ "LAYOUT_fullsize_iso": {
+ "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},
+ {"x":18.5, "y":0},
+ {"x":19.5, "y":0},
+ {"x":20.5, "y":0},
+ {"x":21.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},
+ {"x":13, "y":1.25},
+ {"label":"Bksp", "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":"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":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"PgDn", "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},
+
+ {"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":"4", "x":18.5, "y":3.25},
+ {"label":"5", "x":19.5, "y":3.25},
+ {"label":"6", "x":20.5, "y":3.25},
+ {"label":"+", "x":21.5, "y":3.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":1.25},
+ {"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},
+ {"x":14, "y":4.25},
+ {"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},
+
+ {"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":"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},
+ {"label":"0", "x":18.5, "y":5.25},
+ {"label":"0", "x":19.5, "y":5.25},
+ {"label":".", "x":20.5, "y":5.25},
+ {"label":"Enter", "x":21.5, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/linworks/fave104/keymaps/default/keymap.c b/keyboards/linworks/fave104/keymaps/default/keymap.c
new file mode 100644
index 0000000000..84587ef99e
--- /dev/null
+++ b/keyboards/linworks/fave104/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2021 Moritz Plattner
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_GRV, KC_1, KC_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_NUM, 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_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_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, KC_DEL, KC_UP, KC_P1, KC_P2, KC_P3, KC_TRNS,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P0, KC_PDOT, KC_PENT),
+
+ [1] = LAYOUT_all(
+ KC_TRNS, BL_STEP, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_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_MPRV, KC_VOLD, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
diff --git a/keyboards/linworks/fave104/keymaps/via/keymap.c b/keyboards/linworks/fave104/keymaps/via/keymap.c
new file mode 100644
index 0000000000..abe6d6ecd9
--- /dev/null
+++ b/keyboards/linworks/fave104/keymaps/via/keymap.c
@@ -0,0 +1,35 @@
+/* Copyright 2020 Moritz Plattner
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_GRV, KC_1, KC_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_NUM, 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_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_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, KC_DEL, KC_UP, KC_P1, KC_P2, KC_P3, KC_TRNS,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_P0, KC_PDOT, KC_PENT),
+
+ [1] = LAYOUT_all(
+ KC_TRNS, BL_STEP, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_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_MPRV, KC_VOLD, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+}; \ No newline at end of file
diff --git a/keyboards/linworks/fave104/keymaps/via/rules.mk b/keyboards/linworks/fave104/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/linworks/fave104/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/linworks/fave104/mcuconf.h b/keyboards/linworks/fave104/mcuconf.h
new file mode 100644
index 0000000000..49c9bbbc59
--- /dev/null
+++ b/keyboards/linworks/fave104/mcuconf.h
@@ -0,0 +1,27 @@
+/* Copyright 2020 Moritz Plattner (ebastler)
+ *
+ * This program is free software: you can 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_ST_USE_TIMER
+#define STM32_ST_USE_TIMER 3
+
+
diff --git a/keyboards/linworks/fave104/readme.md b/keyboards/linworks/fave104/readme.md
new file mode 100644
index 0000000000..67b9b1e882
--- /dev/null
+++ b/keyboards/linworks/fave104/readme.md
@@ -0,0 +1,18 @@
+# FAve104
+
+The FAve104 is 108 keys, single color dimmable backlight.
+
+* Keyboard Maintainer: [keydler](https://github.com/duilchoi)
+* Hardware Supported:
+* Hardware Availability: None, feel free to order/manufacture parts yourself.
+
+Bootmagic Lite key: Escape
+Physical reset switch present on the bottom of the PCB
+
+Make example for this keyboard (after setting up your build environment):
+
+ make linworks/fave104: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/linworks/fave104/rules.mk b/keyboards/linworks/fave104/rules.mk
new file mode 100644
index 0000000000..296105bb2b
--- /dev/null
+++ b/keyboards/linworks/fave104/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 = yes # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = no
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/linworks/fave65h/config.h b/keyboards/linworks/fave65h/config.h
index f3bc4639cd..5fac33e7d5 100644
--- a/keyboards/linworks/fave65h/config.h
+++ b/keyboards/linworks/fave65h/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C58 //"LX"
-#define PRODUCT_ID 0x0007 // FAve 65H
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER Lx3
-#define PRODUCT FAve 65H
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { D1, D0, D2, D3, D5 }
#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/linworks/fave65h/fave65h.h b/keyboards/linworks/fave65h/fave65h.h
index cb5ac99a8c..2d41275705 100644
--- a/keyboards/linworks/fave65h/fave65h.h
+++ b/keyboards/linworks/fave65h/fave65h.h
@@ -16,13 +16,44 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quantum.h"
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───────â”
+ * │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │2C │0D │0E │ │0D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ └───────┘
+ * │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 │2D │2E │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3C │3D │3E │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │40 │41 │42 │46 │48 │4A │ │4C │4D │4E │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ * ┌─────┬─────┬───────────────────────────┬────┬────â”
+ * │40 │41 │46 │48 │4A │ Blocker WKL
+ * └─────┴─────┴───────────────────────────┴────┴────┘
+ */
+
/* FAve 65H Keymap Definitions */
-#define LAYOUT( \
+#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, K2D, K2E, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3E, \
- K40, K41, K42, K46, K48, K4A, K4C, K4D, K4E \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K48, 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, KC_NO, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, K4C, K4D, K4E } \
+}
+
+#define LAYOUT_65_ansi_blocker_split_bs( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K2C, 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, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K48, 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 }, \
@@ -30,3 +61,31 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, K3E }, \
{ K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, K4C, K4D, K4E } \
}
+
+#define LAYOUT_65_ansi_blocker_wkl( \
+ 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, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3E, \
+ K40, K41, K46, K48, 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, KC_NO, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, K3E }, \
+ { K40, K41, KC_NO, KC_NO, KC_NO, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, K4C, K4D, K4E } \
+}
+
+#define LAYOUT_65_ansi_blocker_wkl_split_bs( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K2C, 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, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3E, \
+ K40, K41, K46, K48, 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, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, K3E }, \
+ { K40, K41, KC_NO, KC_NO, KC_NO, KC_NO, K46, KC_NO, K48, KC_NO, K4A, KC_NO, K4C, K4D, K4E } \
+}
diff --git a/keyboards/linworks/fave65h/info.json b/keyboards/linworks/fave65h/info.json
index fef76d7fca..23f73accb3 100644
--- a/keyboards/linworks/fave65h/info.json
+++ b/keyboards/linworks/fave65h/info.json
@@ -1,10 +1,317 @@
{
- "keyboard_name": "Lx3 FAve 65H",
+ "keyboard_name": "FAve 65H",
+ "manufacturer": "Lx3",
"url": "",
"maintainer": "ToastyStoemp",
+ "usb": {
+ "vid": "0x4C58",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_65_ansi_blocker_split_bs",
+ "LAYOUT_all": "LAYOUT_65_ansi_blocker_split_bs"
+ },
"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":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": {
+ "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":"=+", "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":"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":"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":"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":"`~", "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":"Delete", "x":13, "y":0},
+ {"label":"Backspace", "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":"\\|", "x":13.5, "y":1, "w":1.5},
+ {"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":"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":"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_wkl": {
+ "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":"=+", "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":"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":"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.5},
+ {"label":"Alt", "x":1.5, "y":4, "w":1.5},
+ {"label":"Space", "x":3, "y":4, "w":7},
+ {"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_wkl_split_bs": {
+ "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":"=+", "x":12, "y":0},
+ {"label":"Delete", "x":13, "y":0},
+ {"label":"Backspace", "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":"\\|", "x":13.5, "y":1, "w":1.5},
+ {"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":"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.5},
+ {"label":"Alt", "x":1.5, "y":4, "w":1.5},
+ {"label":"Space", "x":3, "y":4, "w":7},
+ {"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}
+ ]
}
}
-} \ No newline at end of file
+}
diff --git a/keyboards/linworks/fave65h/keymaps/default/keymap.c b/keyboards/linworks/fave65h/keymaps/default/keymap.c
index a8a6a5b6d5..1aa0b7cd73 100644
--- a/keyboards/linworks/fave65h/keymaps/default/keymap.c
+++ b/keyboards/linworks/fave65h/keymaps/default/keymap.c
@@ -22,9 +22,9 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
- * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Del│Bsp│Hom│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
* │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│
@@ -32,21 +32,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
* │Ctrl│GUI │Alt │ │Alt │FN │ │ ↠│ ↓ │ → │
- * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
*/
- [_LAYER0] = 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,
+ [_LAYER0] = LAYOUT_65_ansi_blocker_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_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_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_DEL, 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
+ KC_CAPS, KC_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
),
/*
- * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
- * │ ` │ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ DEL │ │
- * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ` │ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ │DEL│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
@@ -54,16 +54,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* │ │ │ │ │ │Res│ │ │ │ │ │ │ V+│ V0│
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
* │ │ │ │ │ │ │ │ PT│ V-│ NT│
- * └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
*/
- [_LAYER1] = 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,
+ [_LAYER1] = 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_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, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK
- )
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, 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
+ ),
+
};
void rgb_matrix_indicators_user(void) {
diff --git a/keyboards/linworks/fave65h/keymaps/default_65_ansi_blocker_wkl/keymap.c b/keyboards/linworks/fave65h/keymaps/default_65_ansi_blocker_wkl/keymap.c
new file mode 100644
index 0000000000..5c7efc6d83
--- /dev/null
+++ b/keyboards/linworks/fave65h/keymaps/default_65_ansi_blocker_wkl/keymap.c
@@ -0,0 +1,75 @@
+/*
+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] = {
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
+ * ├─────┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │Ctrl │Alt │ │Alt │FN │ │ ↠│ ↓ │ → │
+ * └─────┴─────┴───────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+
+ [_LAYER0] = LAYOUT_65_ansi_blocker_wkl(
+ 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_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ ` │ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ DEL │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │Res│ │ │ │ │ │ │ V+│ V0│
+ * ├─────┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ PT│ V-│ NT│
+ * └─────┴─────┴───────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+
+ [_LAYER1] = LAYOUT_65_ansi_blocker_wkl(
+ 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, QK_BOOT, 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_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+};
+
+void rgb_matrix_indicators_user(void) {
+ led_t host_leds = host_keyboard_led_state();
+ if (host_leds.caps_lock) {
+ rgb_matrix_set_color(0, 254, 189, 41); // set caps lock led color first number is index, R G B
+ }
+}
diff --git a/keyboards/linworks/fave65h/keymaps/default_65_ansi_blocker_wkl_split_bs/keymap.c b/keyboards/linworks/fave65h/keymaps/default_65_ansi_blocker_wkl_split_bs/keymap.c
new file mode 100644
index 0000000000..b3a91f7a22
--- /dev/null
+++ b/keyboards/linworks/fave65h/keymaps/default_65_ansi_blocker_wkl_split_bs/keymap.c
@@ -0,0 +1,75 @@
+/*
+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] = {
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Del│Bsp│Hom│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
+ * ├─────┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │Ctrl │Alt │ │Alt │FN │ │ ↠│ ↓ │ → │
+ * └─────┴─────┴───────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+
+ [_LAYER0] = LAYOUT_65_ansi_blocker_wkl_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_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_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_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ` │ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ │DEL│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │Res│ │ │ │ │ │ │ V+│ V0│
+ * ├─────┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ PT│ V-│ NT│
+ * └─────┴─────┴───────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+
+ [_LAYER1] = LAYOUT_65_ansi_blocker_wkl_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_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, QK_BOOT, 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_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+};
+
+void rgb_matrix_indicators_user(void) {
+ led_t host_leds = host_keyboard_led_state();
+ if (host_leds.caps_lock) {
+ rgb_matrix_set_color(0, 254, 189, 41); // set caps lock led color first number is index, R G B
+ }
+}
diff --git a/keyboards/linworks/fave65h/keymaps/via/keymap.c b/keyboards/linworks/fave65h/keymaps/via/keymap.c
index 3045ac68d1..8388a60c87 100644
--- a/keyboards/linworks/fave65h/keymaps/via/keymap.c
+++ b/keyboards/linworks/fave65h/keymaps/via/keymap.c
@@ -23,37 +23,38 @@ enum layers {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_LAYER0] = 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,
+ [_LAYER0] = LAYOUT_65_ansi_blocker_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_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_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_DEL, 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
+ KC_CAPS, KC_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
),
- [_LAYER1] = 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,
+ [_LAYER1] = 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_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, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, 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
),
- [_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,
+ [_LAYER2] = LAYOUT_65_ansi_blocker_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,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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,
+ [_LAYER3] = LAYOUT_65_ansi_blocker_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,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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) {
@@ -61,4 +62,4 @@ void rgb_matrix_indicators_user(void) {
if (host_leds.caps_lock) {
rgb_matrix_set_color(0, 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/fave65h/readme.md b/keyboards/linworks/fave65h/readme.md
index c7726bd8ae..09649fa860 100644
--- a/keyboards/linworks/fave65h/readme.md
+++ b/keyboards/linworks/fave65h/readme.md
@@ -15,9 +15,9 @@ Make example for this keyboard (after setting up your build environment):
make linworks/fave65h: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 short**: Briefly short the 2 pads labelled RESET on the back of the PCB
-* **Keycode in layout**: Press the B key on layer 1 which is mapped to `RESET`
+* **Physical reset short**: Briefly short the 2 pads labelled QK_BOOT on the back of the PCB
+* **Keycode in layout**: Press the B key on layer 1 which is mapped to `QK_BOOT`
+
+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/linworks/fave65h/rules.mk b/keyboards/linworks/fave65h/rules.mk
index 01b02d60ca..8c6797a8fe 100644
--- a/keyboards/linworks/fave65h/rules.mk
+++ b/keyboards/linworks/fave65h/rules.mk
@@ -20,4 +20,6 @@ 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
+RGB_MATRIX_DRIVER = WS2812
+
+LAYOUTS = 65_ansi_blocker 65_ansi_blocker_split_bs
diff --git a/keyboards/linworks/fave84h/config.h b/keyboards/linworks/fave84h/config.h
index 411977494d..e9e69f3b66 100644
--- a/keyboards/linworks/fave84h/config.h
+++ b/keyboards/linworks/fave84h/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 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
diff --git a/keyboards/linworks/fave84h/info.json b/keyboards/linworks/fave84h/info.json
index 939b99c480..04b5cabd31 100644
--- a/keyboards/linworks/fave84h/info.json
+++ b/keyboards/linworks/fave84h/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Lx3 Fave 84H",
+ "keyboard_name": "FAve 84H",
+ "manufacturer": "Lx3",
"url": "",
"maintainer": "ToastyStoemp",
+ "usb": {
+ "vid": "0x4C58",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"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/readme.md b/keyboards/linworks/fave84h/readme.md
index 3dd93ac762..22ce5fd428 100644
--- a/keyboards/linworks/fave84h/readme.md
+++ b/keyboards/linworks/fave84h/readme.md
@@ -19,5 +19,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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 short**: Briefly short the 2 pads labelled RESET on the back of the PCB
-* **Keycode in layout**: Press the B key on layer 1 which is mapped to `RESET`
+* **Physical reset short**: Briefly short the 2 pads labelled QK_BOOT on the back of the PCB
+* **Keycode in layout**: Press the B key on layer 1 which is mapped to `QK_BOOT`
diff --git a/keyboards/linworks/fave87/config.h b/keyboards/linworks/fave87/config.h
index ef934024f7..867f66ed1e 100644
--- a/keyboards/linworks/fave87/config.h
+++ b/keyboards/linworks/fave87/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C58 //"LX"
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Lx3
-#define PRODUCT FAVE-87
-
/* Force USB NKRO */
#define FORCE_NKRO
@@ -32,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D3, D5, D1, D2, D4, D0, F5, F4, F7, F6, B5, B4 }
#define MATRIX_COL_PINS { F1, F0, E6, B0, B1, B2, B3, D6, D7 }
-#define UNUSED_PINS { B6, C6, C7 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/linworks/fave87/info.json b/keyboards/linworks/fave87/info.json
index 82a524ca5e..e330cd7a35 100644
--- a/keyboards/linworks/fave87/info.json
+++ b/keyboards/linworks/fave87/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "Lx3 Fave 87",
+ "keyboard_name": "FAve 87",
+ "manufacturer": "Lx3",
"maintainer": "ebastler",
+ "usb": {
+ "vid": "0x4C58",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/linworks/fave87h/config.h b/keyboards/linworks/fave87h/config.h
index 272878612c..54850aec3f 100644
--- a/keyboards/linworks/fave87h/config.h
+++ b/keyboards/linworks/fave87h/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 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
diff --git a/keyboards/linworks/fave87h/info.json b/keyboards/linworks/fave87h/info.json
index ac82fa4d8a..4035dde5ee 100644
--- a/keyboards/linworks/fave87h/info.json
+++ b/keyboards/linworks/fave87h/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Lx3 FAve 87H",
+ "keyboard_name": "FAve 87H",
+ "manufacturer": "Lx3",
"url": "",
"maintainer": "ToastyStoemp",
+ "usb": {
+ "vid": "0x4C58",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"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/readme.md b/keyboards/linworks/fave87h/readme.md
index 8bc05fd4d4..bda921a61b 100644
--- a/keyboards/linworks/fave87h/readme.md
+++ b/keyboards/linworks/fave87h/readme.md
@@ -19,5 +19,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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 short**: Briefly short the 2 pads labelled RESET on the back of the PCB
-* **Keycode in layout**: Press the B key on layer 1 which is mapped to `RESET`
+* **Physical reset short**: Briefly short the 2 pads labelled QK_BOOT on the back of the PCB
+* **Keycode in layout**: Press the B key on layer 1 which is mapped to `QK_BOOT`
diff --git a/keyboards/linworks/whale75/config.h b/keyboards/linworks/whale75/config.h
index 2e0b26b397..d70ff939e3 100644
--- a/keyboards/linworks/whale75/config.h
+++ b/keyboards/linworks/whale75/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C58 //"LX"
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Lx3
-#define PRODUCT Whale-75
-
/* Force USB NKRO */
#define FORCE_NKRO
@@ -32,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B3, B4, B5, B6, B7, A0 }
#define MATRIX_COL_PINS { A1, A2, A3, A4, A5, A6, A7, B0, B1, B2, B10, B11, B12, B13, B14, B15 }
-#define UNUSED_PINS { C13, C14, C15 }
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/linworks/whale75/info.json b/keyboards/linworks/whale75/info.json
index 07679ca1e5..1f6c3cdf14 100644
--- a/keyboards/linworks/whale75/info.json
+++ b/keyboards/linworks/whale75/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "Lx3 Whale 75",
+ "keyboard_name": "Whale 75",
+ "manufacturer": "Lx3",
"maintainer": "ebastler",
+ "usb": {
+ "vid": "0x4C58",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/littlealby/mute/config.h b/keyboards/littlealby/mute/config.h
index 302b02a24a..aafdddbf9e 100644
--- a/keyboards/littlealby/mute/config.h
+++ b/keyboards/littlealby/mute/config.h
@@ -16,13 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4142 // "AB"
-#define PRODUCT_ID 0x4D55 // "MU"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Little Alby
-#define PRODUCT Mute
-
#define USB_MAX_POWER_CONSUMPTION 100
/* key matrix size */
@@ -37,7 +30,6 @@
#define DIRECT_PINS { \
{B5} \
}
-#define UNUSED_PINS
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN B6
diff --git a/keyboards/littlealby/mute/info.json b/keyboards/littlealby/mute/info.json
index 7490eba408..c3f3091c98 100644
--- a/keyboards/littlealby/mute/info.json
+++ b/keyboards/littlealby/mute/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Little Alby",
+ "keyboard_name": "Mute",
+ "manufacturer": "Little Alby",
"url": "",
"maintainer": "albybarber",
+ "usb": {
+ "vid": "0x4142",
+ "pid": "0x4D55",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [ {"x": 0, "y": 0 }]
diff --git a/keyboards/lizard_trick/tenkey_plusplus/config.h b/keyboards/lizard_trick/tenkey_plusplus/config.h
index 8883194891..3e9e0d37dc 100644
--- a/keyboards/lizard_trick/tenkey_plusplus/config.h
+++ b/keyboards/lizard_trick/tenkey_plusplus/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Lizard Trick Electronics
-#define PRODUCT Tenkey++
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B7, D4, B5, B6, C6, C7 }
#define MATRIX_COL_PINS { D5, D3, D2, F7 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A \
{ B4, F0, F4 }
diff --git a/keyboards/lizard_trick/tenkey_plusplus/info.json b/keyboards/lizard_trick/tenkey_plusplus/info.json
index bfda92de93..9ebec82be7 100644
--- a/keyboards/lizard_trick/tenkey_plusplus/info.json
+++ b/keyboards/lizard_trick/tenkey_plusplus/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "tenkey_plusplus",
+ "keyboard_name": "Tenkey++",
+ "manufacturer": "Lizard Trick Electronics",
"url": "https://github.com/jonbobcar/tenkey_plusplus",
"maintainer": "Jonathon Carstens",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ll3macorn/bongopad/config.h b/keyboards/ll3macorn/bongopad/config.h
index ccbd45f461..9e1affd59e 100644
--- a/keyboards/ll3macorn/bongopad/config.h
+++ b/keyboards/ll3macorn/bongopad/config.h
@@ -4,13 +4,6 @@
#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
@@ -26,7 +19,6 @@
/* 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
diff --git a/keyboards/ll3macorn/bongopad/info.json b/keyboards/ll3macorn/bongopad/info.json
index 1431c3ca35..90979cd7ba 100644
--- a/keyboards/ll3macorn/bongopad/info.json
+++ b/keyboards/ll3macorn/bongopad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Bongopad",
+ "keyboard_name": "BongoPad",
+ "manufacturer": "Ll3macorn",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/ll3macorn/bongopad",
"maintainer": "Ll3macorn",
+ "usb": {
+ "vid": "0x3728",
+ "pid": "0x2949",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/lm_keyboard/lm60n/config.h b/keyboards/lm_keyboard/lm60n/config.h
index 171fa2fe5b..813fc5b19c 100644
--- a/keyboards/lm_keyboard/lm60n/config.h
+++ b/keyboards/lm_keyboard/lm60n/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C4D // "LM"
-#define PRODUCT_ID 0x4B01 // "K01"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER L+M Keyboard
-#define PRODUCT L+M 60N
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F1, F5, F6, F7, B3, B2, B1 }
#define MATRIX_COL_PINS { B4, D7, D6, D4, D5, D3, D2, D1, D0, C6, B6, B5, F4, F0, E6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/lm_keyboard/lm60n/info.json b/keyboards/lm_keyboard/lm60n/info.json
index 0a1fc4c04f..df410a3f65 100644
--- a/keyboards/lm_keyboard/lm60n/info.json
+++ b/keyboards/lm_keyboard/lm60n/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "lm60n",
+ "keyboard_name": "L+M 60N",
+ "manufacturer": "L+M Keyboard",
"url": "",
"maintainer": "gkeyboard",
+ "usb": {
+ "vid": "0x4C4D",
+ "pid": "0x4B01",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/loki65/config.h b/keyboards/loki65/config.h
index 5f017d8cbf..0f4e2c8629 100644
--- a/keyboards/loki65/config.h
+++ b/keyboards/loki65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4C36
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT Loki65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -39,7 +32,7 @@ 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
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* Indicator LEDs */
@@ -51,7 +44,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define WS2812_PWM_CHANNEL 2
#define WS2812_PWM_PAL_MODE 2
#define WS2812_DMA_STREAM STM32_DMA1_STREAM5
-#define WS2812_DMA_CHANNEL 5
+#define WS2812_DMA_CHANNEL 5
+#define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_RGB
#define RGB_DI_PIN A9
#define RGBLED_NUM 37
diff --git a/keyboards/loki65/info.json b/keyboards/loki65/info.json
index 1b4fc1b917..29b7cf64ab 100644
--- a/keyboards/loki65/info.json
+++ b/keyboards/loki65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Loki65",
+ "manufacturer": "Yiancar-Designs",
"url": "https://yiancar-designs.com",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4C36",
+ "device_version": "0.0.1"
+ },
"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.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/longnald/corin/config.h b/keyboards/longnald/corin/config.h
index 12be8ba27b..7f0ff9f034 100644
--- a/keyboards/longnald/corin/config.h
+++ b/keyboards/longnald/corin/config.h
@@ -20,13 +20,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5633
-#define PRODUCT_ID 0x1024
-#define DEVICE_VER 0x0004
-#define MANUFACTURER Longnald
-#define PRODUCT Corin
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/longnald/corin/info.json b/keyboards/longnald/corin/info.json
index 9026209012..9610810724 100644
--- a/keyboards/longnald/corin/info.json
+++ b/keyboards/longnald/corin/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Corin",
+ "manufacturer": "Longnald",
"url": "https://github.com/longnald/corin",
"maintainer": "Seaton Jiang <seaton@vtrois.com>",
+ "usb": {
+ "vid": "0x5633",
+ "pid": "0x1024",
+ "device_version": "0.0.4"
+ },
"layouts": {
"LAYOUT_64_ansi": {
"layout": [
diff --git a/keyboards/lucid/alexa/config.h b/keyboards/lucid/alexa/config.h
index 19b5f4f19a..07a73c30fd 100644
--- a/keyboards/lucid/alexa/config.h
+++ b/keyboards/lucid/alexa/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7667 // Lucid
-#define PRODUCT_ID 0x0005 // Phantom
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER Lucid
-#define PRODUCT Alexa
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { 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
diff --git a/keyboards/lucid/alexa/info.json b/keyboards/lucid/alexa/info.json
index 91c3836444..ffd9cb9c8d 100644
--- a/keyboards/lucid/alexa/info.json
+++ b/keyboards/lucid/alexa/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Alexa",
+ "manufacturer": "Lucid",
"url": "https://www.makerkeyboards.com/products/alexa",
"maintainer": "mrnoisytiger",
+ "usb": {
+ "vid": "0x7667",
+ "pid": "0x0005",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker_split_bs": {
"layout": [
diff --git a/keyboards/lucid/alexa/readme.md b/keyboards/lucid/alexa/readme.md
index a0cef72913..6fc4aac146 100644
--- a/keyboards/lucid/alexa/readme.md
+++ b/keyboards/lucid/alexa/readme.md
@@ -20,6 +20,6 @@ Flashing example for this keyboard:
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the top left 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 (Fn+Backslash by default)
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (Fn+Backslash 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/lucid/alexa_solder/config.h b/keyboards/lucid/alexa_solder/config.h
index 63fd1f2e2d..4b04217ef7 100644
--- a/keyboards/lucid/alexa_solder/config.h
+++ b/keyboards/lucid/alexa_solder/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7667 // Maker Keyboards
-#define PRODUCT_ID 0x0006 // Alexa
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER Maker Keyboards
-#define PRODUCT Alexa
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { 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
diff --git a/keyboards/lucid/alexa_solder/info.json b/keyboards/lucid/alexa_solder/info.json
index 319cb71206..9f1c64363f 100644
--- a/keyboards/lucid/alexa_solder/info.json
+++ b/keyboards/lucid/alexa_solder/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Alexa Solder",
+ "manufacturer": "Maker Keyboards",
"url": "http://www.makerkeyboards.com",
"maintainer": "Maker Keyboards",
+ "usb": {
+ "vid": "0x7667",
+ "pid": "0x0006",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/lucid/kbd8x_hs/config.h b/keyboards/lucid/kbd8x_hs/config.h
index 1e5cff8e7f..99a8ff4729 100644
--- a/keyboards/lucid/kbd8x_hs/config.h
+++ b/keyboards/lucid/kbd8x_hs/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7667 // Lucid
-#define PRODUCT_ID 0x0003 // KBD8X Hotswap PCB's
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER Lucid
-#define PRODUCT KBD8X_HS
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { B4, B5, B6, C0, E1, E0 }
#define MATRIX_COL_PINS { F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, D5, D6, D7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/lucid/kbd8x_hs/info.json b/keyboards/lucid/kbd8x_hs/info.json
index 1a22c78326..5adeb63b8b 100644
--- a/keyboards/lucid/kbd8x_hs/info.json
+++ b/keyboards/lucid/kbd8x_hs/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "KBD8X Hotswap PCB's",
+ "keyboard_name": "KBD8X Hotswap",
+ "manufacturer": "Lucid",
"url": "http://www.lucidkb.com",
"maintainer": "Lucid",
+ "usb": {
+ "vid": "0x7667",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/lucid/phantom_hs/config.h b/keyboards/lucid/phantom_hs/config.h
index b94b345c16..f5b6189e90 100644
--- a/keyboards/lucid/phantom_hs/config.h
+++ b/keyboards/lucid/phantom_hs/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7667 // Lucid
-#define PRODUCT_ID 0x0001 // Phantom
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER Lucid
-#define PRODUCT Phantom
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { 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
diff --git a/keyboards/lucid/phantom_hs/info.json b/keyboards/lucid/phantom_hs/info.json
index 2aea46bdd1..5ab8f56608 100644
--- a/keyboards/lucid/phantom_hs/info.json
+++ b/keyboards/lucid/phantom_hs/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Phantom",
+ "manufacturer": "Lucid",
"url": "http://www.lucidkb.com",
"maintainer": "Lucid",
+ "usb": {
+ "vid": "0x7667",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/lucid/phantom_solder/config.h b/keyboards/lucid/phantom_solder/config.h
index 2c78c4f5ff..6fdca244b6 100644
--- a/keyboards/lucid/phantom_solder/config.h
+++ b/keyboards/lucid/phantom_solder/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7667 // Lucid
-#define PRODUCT_ID 0x0002 // Phantom_Solder
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER Lucid
-#define PRODUCT Phantom
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { 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
diff --git a/keyboards/lucid/phantom_solder/info.json b/keyboards/lucid/phantom_solder/info.json
index beee1ac2b2..950107367f 100644
--- a/keyboards/lucid/phantom_solder/info.json
+++ b/keyboards/lucid/phantom_solder/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Phantom Solder",
+ "manufacturer": "Lucid",
"url": "http://www.lucidkb.com",
"maintainer": "Lucid",
+ "usb": {
+ "vid": "0x7667",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/lucid/scarlet/config.h b/keyboards/lucid/scarlet/config.h
index 67c2fe7b07..118b32d688 100644
--- a/keyboards/lucid/scarlet/config.h
+++ b/keyboards/lucid/scarlet/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7667 // Lucid
-#define PRODUCT_ID 0x0004 // Scarlet PCB's
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER Lucid
-#define PRODUCT Scarlet
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { B4, B5, B6, C0, E1, E0 }
#define MATRIX_COL_PINS { F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, D5, D6, D7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/lucid/scarlet/info.json b/keyboards/lucid/scarlet/info.json
index 59526a9f4c..219a64a2ae 100644
--- a/keyboards/lucid/scarlet/info.json
+++ b/keyboards/lucid/scarlet/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Scarlet PCB's",
+ "keyboard_name": "Scarlet",
+ "manufacturer": "Lucid",
"url": "http://www.lucidkb.com",
"maintainer": "Lucid",
+ "usb": {
+ "vid": "0x7667",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_all": {
"layout": [
diff --git a/keyboards/lw67/config.h b/keyboards/lw67/config.h
index 3561f4a2ad..9f8ed50654 100644
--- a/keyboards/lw67/config.h
+++ b/keyboards/lw67/config.h
@@ -18,14 +18,6 @@
#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
@@ -33,7 +25,6 @@
/* 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 }
diff --git a/keyboards/lw67/info.json b/keyboards/lw67/info.json
index ad15cc2264..329ff4eb36 100644
--- a/keyboards/lw67/info.json
+++ b/keyboards/lw67/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "LW67",
+ "keyboard_name": "LW-67",
+ "manufacturer": "Laneware Peripherals",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4C50",
+ "pid": "0x9998",
+ "device_version": "0.0.1"
+ },
"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":"\u2191", "x":15.25, "y":3.25}, {"label":"PgDn", "x":16.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":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}]
diff --git a/keyboards/lyso1/lck75/config.h b/keyboards/lyso1/lck75/config.h
index 18dd381ece..a631992eb8 100644
--- a/keyboards/lyso1/lck75/config.h
+++ b/keyboards/lyso1/lck75/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x7856
-#define PRODUCT_ID 0x6163
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Lyso1
-#define PRODUCT lck75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15*/
#define MATRIX_ROW_PINS { C2, C3, C7, C4, C6, C5 }
#define MATRIX_COL_PINS { A0, B0, A1, B1, A2, B2, A3, B3, A4, B4, A5, A6, A7, D7, D6, D5 }
-#define UNUSED_PINS
#define ENCODERS_PAD_B { D1 }
#define ENCODERS_PAD_A { D0 }
diff --git a/keyboards/lyso1/lck75/info.json b/keyboards/lyso1/lck75/info.json
index 4d04175e00..07476f4ebc 100644
--- a/keyboards/lyso1/lck75/info.json
+++ b/keyboards/lyso1/lck75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "LCK75",
+ "manufacturer": "Lyso1",
"url": "https://github.com/lyso1/LCK75",
"maintainer": "Lyso1",
+ "usb": {
+ "vid": "0x7856",
+ "pid": "0x6163",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_default": {
"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":"Mute", "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":"PgDn", "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":"PgUp", "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":"Del", "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":"MO(1)", "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}, {"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":"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/lyso1/lck75/keymaps/7u/keymap.c b/keyboards/lyso1/lck75/keymaps/7u/keymap.c
index 25cf66176e..44498f9a48 100644
--- a/keyboards/lyso1/lck75/keymaps/7u/keymap.c
+++ b/keyboards/lyso1/lck75/keymaps/7u/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_7u(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, QK_BOOT, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS)
diff --git a/keyboards/lyso1/lck75/keymaps/7u_iso/keymap.c b/keyboards/lyso1/lck75/keymaps/7u_iso/keymap.c
index f42d638778..61d77cac5d 100644
--- a/keyboards/lyso1/lck75/keymaps/7u_iso/keymap.c
+++ b/keyboards/lyso1/lck75/keymaps/7u_iso/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, 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, QK_BOOT, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS)
diff --git a/keyboards/lyso1/lck75/keymaps/7u_sbs/keymap.c b/keyboards/lyso1/lck75/keymaps/7u_sbs/keymap.c
index 3c562659dc..1f1879db3d 100644
--- a/keyboards/lyso1/lck75/keymaps/7u_sbs/keymap.c
+++ b/keyboards/lyso1/lck75/keymaps/7u_sbs/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_7u_sbs(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, QK_BOOT, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS)
diff --git a/keyboards/lyso1/lck75/keymaps/iso_sbs/keymap.c b/keyboards/lyso1/lck75/keymaps/iso_sbs/keymap.c
index a2b2469d3e..2f48e0fc11 100644
--- a/keyboards/lyso1/lck75/keymaps/iso_sbs/keymap.c
+++ b/keyboards/lyso1/lck75/keymaps/iso_sbs/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_iso_sbs(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, QK_BOOT, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS)
diff --git a/keyboards/lyso1/lck75/keymaps/sbs/keymap.c b/keyboards/lyso1/lck75/keymaps/sbs/keymap.c
index 7671765619..a2f0fee195 100644
--- a/keyboards/lyso1/lck75/keymaps/sbs/keymap.c
+++ b/keyboards/lyso1/lck75/keymaps/sbs/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_sbs(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, QK_BOOT, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, MO(1), KC_TRNS, KC_TRNS, KC_TRNS)
diff --git a/keyboards/lyso1/lefishe/config.h b/keyboards/lyso1/lefishe/config.h
index a5bafa5413..fe324c20e2 100644
--- a/keyboards/lyso1/lefishe/config.h
+++ b/keyboards/lyso1/lefishe/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x7856
-#define PRODUCT_ID 0x6169
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Lyso1
-#define PRODUCT lefishe
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
@@ -32,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B7, F7, F6, F5, F4 }
#define MATRIX_COL_PINS { F0, F1, D5, C7, C6, B6, B5, B4, D7, D6, D4, D3, D2, D1, D0, B3, B2, B1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/lyso1/lefishe/info.json b/keyboards/lyso1/lefishe/info.json
index e31877a95b..5a98c2ea43 100644
--- a/keyboards/lyso1/lefishe/info.json
+++ b/keyboards/lyso1/lefishe/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Le_Fishe",
+ "manufacturer": "Lyso1",
"url": "",
"maintainer": "Lyso1",
+ "usb": {
+ "vid": "0x7856",
+ "pid": "0x6169",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [{"x":0, "y":0}, {"x":1, "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":8.25, "y":0}, {"label":"&", "x":9.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":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"Insert", "x":17.25, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.25, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"label":"Caps", "x":2.25, "y":2, "w":1.25}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "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":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgUp", "x":17.25, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"PgDn", "x":17.25, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, {"label":"LGUI", "x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.5}, {"x":6.25, "y":4, "w":7}, {"label":"Alt", "x":13.25, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}]
diff --git a/keyboards/lyso1/lefishe/keymaps/wk_sbs/keymap.c b/keyboards/lyso1/lefishe/keymaps/wk_sbs/keymap.c
index 36c7d73b86..071746e1bf 100644
--- a/keyboards/lyso1/lefishe/keymaps/wk_sbs/keymap.c
+++ b/keyboards/lyso1/lefishe/keymaps/wk_sbs/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN] = LAYOUT_wk_sbs(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/lyso1/lefishe/keymaps/wkl_sbs/keymap.c b/keyboards/lyso1/lefishe/keymaps/wkl_sbs/keymap.c
index 91a707db78..2bd1c508b5 100644
--- a/keyboards/lyso1/lefishe/keymaps/wkl_sbs/keymap.c
+++ b/keyboards/lyso1/lefishe/keymaps/wkl_sbs/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN] = LAYOUT_wkl_sbs(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/lyso1/lefishe/readme.md b/keyboards/lyso1/lefishe/readme.md
index eb8322b2df..07fe84ba17 100644
--- a/keyboards/lyso1/lefishe/readme.md
+++ b/keyboards/lyso1/lefishe/readme.md
@@ -15,7 +15,7 @@ Enter into the bootloader to flash new firmware in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix(The F1 key in this case) and plug the the keyboard in.
* **Physical reset button**: Briefly press the button on the back and left side of the PCB(exactly under where the "2" key would be located) while the PCB is plugged in.
- * **Keycode in layout**: Press the key mapped to `RESET` (RALT + E in this case) while the keyboard is plugged in.
+ * **Keycode in layout**: Press the key mapped to `QK_BOOT` (RALT + E in this case) while the keyboard is plugged in.
Flashing example for this keyboard:
diff --git a/keyboards/lz/erghost/config.h b/keyboards/lz/erghost/config.h
index 0936f6c271..2bc1c8b599 100644
--- a/keyboards/lz/erghost/config.h
+++ b/keyboards/lz/erghost/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -41,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#define MATRIX_ROW_PINS { D5, D2, D4, D3, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/lz/erghost/info.json b/keyboards/lz/erghost/info.json
index 1a5c9abf64..11fb15898c 100644
--- a/keyboards/lz/erghost/info.json
+++ b/keyboards/lz/erghost/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Erghost",
+ "keyboard_name": "erGhost",
+ "manufacturer": "Mechlovin Studio",
"url": "",
"maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x6C7A",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/lz/erghost/readme.md b/keyboards/lz/erghost/readme.md
index 8a48d912d0..0a4a504227 100644
--- a/keyboards/lz/erghost/readme.md
+++ b/keyboards/lz/erghost/readme.md
@@ -23,5 +23,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/m10a/config.h b/keyboards/m10a/config.h
index e09942f93a..8a5b36f4fe 100644
--- a/keyboards/m10a/config.h
+++ b/keyboards/m10a/config.h
@@ -20,13 +20,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5241 // "RA"
-#define PRODUCT_ID 0x00AA // 10-A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA WORKS
-#define PRODUCT RAMA WORKS M10-A
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 3
@@ -34,7 +27,6 @@
/* Planck PCB default pin-out */
#define MATRIX_ROW_PINS { B6, F7, F6, D6 }
#define MATRIX_COL_PINS { F5, F1, F0 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B7
diff --git a/keyboards/m10a/info.json b/keyboards/m10a/info.json
index c4d82f13ab..49a8477623 100644
--- a/keyboards/m10a/info.json
+++ b/keyboards/m10a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Rama Works X Machine Industries M10-A Macropad",
+ "keyboard_name": "M10-A",
+ "manufacturer": "RAMA WORKS",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5241",
+ "pid": "0x00AA",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/m10a/keymaps/gam3cat/keymap.c b/keyboards/m10a/keymaps/gam3cat/keymap.c
index f962246ef3..c5ca7df2e8 100644
--- a/keyboards/m10a/keymaps/gam3cat/keymap.c
+++ b/keyboards/m10a/keymaps/gam3cat/keymap.c
@@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_L5] = {{_______, _______, _______}, {_______, _______, _______}, {_______, _______, _______}, {XXXXXXX, XXXXXXX, MO(_L9)}},
[_L6] = {{_______, _______, _______}, {_______, _______, _______}, {_______, _______, _______}, {XXXXXXX, XXXXXXX, MO(_L9)}},
[_L7] = {{KC_DMP1, _______, KC_DMP2}, {_______, KC_DMRS, _______}, {KC_DMR1, _______, KC_DMR2}, {XXXXXXX, XXXXXXX, MO(_L9)}},
- [_L8] = {{_______, _______, RESET }, {_______, _______, _______}, {_______, _______, _______}, {XXXXXXX, XXXXXXX, MO(_L9)}},
+ [_L8] = {{_______, _______, QK_BOOT }, {_______, _______, _______}, {_______, _______, _______}, {XXXXXXX, XXXXXXX, MO(_L9)}},
[_L9] = {{DF(_L6), DF(_L7), DF(_L8)}, {DF(_L3), DF(_L4), DF(_L5)}, {DF(_L0), DF(_L1), DF(_L2)}, {XXXXXXX, XXXXXXX, _______}},
};
@@ -115,7 +115,7 @@ void matrix_scan_user(void) {
}
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _L0:
custom_backlight_level(0);
break;
diff --git a/keyboards/machine_industries/m4_a/config.h b/keyboards/machine_industries/m4_a/config.h
index f27cb8ae5b..6922ab8a66 100644
--- a/keyboards/machine_industries/m4_a/config.h
+++ b/keyboards/machine_industries/m4_a/config.h
@@ -5,13 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5241 // "RA"
-#define PRODUCT_ID 0x004A // 4-A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA WORKS
-#define PRODUCT M4-A
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 2
@@ -28,7 +21,6 @@
*/
#define MATRIX_ROW_PINS { C7, C6 }
#define MATRIX_COL_PINS { F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/machine_industries/m4_a/info.json b/keyboards/machine_industries/m4_a/info.json
index 4a2f03e741..8caf54a4a4 100644
--- a/keyboards/machine_industries/m4_a/info.json
+++ b/keyboards/machine_industries/m4_a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Rama Works M4-A",
+ "keyboard_name": "M4-A",
+ "manufacturer": "RAMA WORKS",
"url": "http://rama.works",
"maintainer": "naut",
+ "usb": {
+ "vid": "0x5241",
+ "pid": "0x004A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/machine_industries/m4_a/readme.md b/keyboards/machine_industries/m4_a/readme.md
index 37c16639d1..0081c6b7d9 100644
--- a/keyboards/machine_industries/m4_a/readme.md
+++ b/keyboards/machine_industries/m4_a/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/machkeyboards/mach3/config.h b/keyboards/machkeyboards/mach3/config.h
index d78f8dce9b..1f3533d177 100644
--- a/keyboards/machkeyboards/mach3/config.h
+++ b/keyboards/machkeyboards/mach3/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D41
-#define PRODUCT_ID 0x4D33
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MachKeyboard
-#define PRODUCT Mach33
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
diff --git a/keyboards/machkeyboards/mach3/info.json b/keyboards/machkeyboards/mach3/info.json
index 42f29a9873..3eab9a1a3f 100644
--- a/keyboards/machkeyboards/mach3/info.json
+++ b/keyboards/machkeyboards/mach3/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mach 3",
+ "manufacturer": "MachKeyboard",
"url": "https://machkeyboards.com",
"maintainer": "etiennelepagel",
+ "usb": {
+ "vid": "0x4D41",
+ "pid": "0x4D33",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_3x3": {
"layout": [
diff --git a/keyboards/machkeyboards/mach3/readme.md b/keyboards/machkeyboards/mach3/readme.md
index 16c61511b1..d4c6f6a65c 100644
--- a/keyboards/machkeyboards/mach3/readme.md
+++ b/keyboards/machkeyboards/mach3/readme.md
@@ -13,7 +13,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/macro1/config.h b/keyboards/macro1/config.h
index 54203ef2bf..66449ee8cc 100644
--- a/keyboards/macro1/config.h
+++ b/keyboards/macro1/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4C50 // "LP" = Laneware Peripherals
-#define PRODUCT_ID 0x9999
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Laneware Peripherals
-#define PRODUCT MACRO-1
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { E6, B7, D0, D1, D2, B3 }
#define MATRIX_COL_PINS { D3, D4, D6, D7 }
-#define UNUSED_PINS
/*ENCODER*/
#define ENCODERS_PAD_A { F0 }
diff --git a/keyboards/macro1/info.json b/keyboards/macro1/info.json
index dbb7bafa74..ddb15fb4e3 100644
--- a/keyboards/macro1/info.json
+++ b/keyboards/macro1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MACRO1",
+ "keyboard_name": "MACRO-1",
+ "manufacturer": "Laneware Peripherals",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4C50",
+ "pid": "0x9999",
+ "device_version": "0.0.1"
+ },
"layouts":{
"LAYOUT_numpad":{
"layout":[
diff --git a/keyboards/macro3/config.h b/keyboards/macro3/config.h
index 7e7b371960..bfd60418a7 100644
--- a/keyboards/macro3/config.h
+++ b/keyboards/macro3/config.h
@@ -6,13 +6,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC88B
-#define PRODUCT_ID 0x3388
-#define DEVICE_VER 0x0003
-#define MANUFACTURER DPB
-#define PRODUCT Macro3
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
@@ -26,7 +19,6 @@
#define ENCODERS_PAD_A { D2, F7 }
#define ENCODERS_PAD_B { D3, F6 }
-#define UNUSED_PINS
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/macro3/info.json b/keyboards/macro3/info.json
index a29313c2b3..f3ebdb8acd 100644
--- a/keyboards/macro3/info.json
+++ b/keyboards/macro3/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Macro3",
+ "manufacturer": "DPB",
"url": "https://github.com/davidphilipbarr/Macropads/tree/main/macro3",
"maintainer": "@davidphilipbarr",
+ "usb": {
+ "vid": "0xC88B",
+ "pid": "0x3388",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/macrocat/config.h b/keyboards/macrocat/config.h
new file mode 100644
index 0000000000..851cfe7427
--- /dev/null
+++ b/keyboards/macrocat/config.h
@@ -0,0 +1,11 @@
+// Copyright 2022 catmunch (@catmunch)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* rotary encoder */
+#define ENCODERS_PAD_A { D3 }
+#define ENCODERS_PAD_B { D2 }
+#define ENCODER_SWITCH B7
diff --git a/keyboards/macrocat/info.json b/keyboards/macrocat/info.json
new file mode 100644
index 0000000000..421f1283e1
--- /dev/null
+++ b/keyboards/macrocat/info.json
@@ -0,0 +1,52 @@
+{
+ "manufacturer": "Catmunch",
+ "keyboard_name": "MacroCat Keyboard",
+ "maintainer": "Catmunch, starcatmeow",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "encoder": true
+ },
+ "matrix_pins": {
+ "cols": ["B5", "B6", "C6", "C7"],
+ "rows": ["D4", "D6", "D7", "B4"]
+ },
+ "processor": "atmega32u4",
+ "url": "https://github.com/catmunch/macrocat",
+ "usb": {
+ "device_version": "0.0.1",
+ "pid": "0x8086",
+ "vid": "0x2022"
+ },
+ "layout_aliases": {
+ "LAYOUT_numpad_4x4": "LAYOUT_ortho_4x4"
+ },
+ "layouts": {
+ "LAYOUT_ortho_4x4": {
+ "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": [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": [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": [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 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/macrocat/keymaps/default/keymap.c b/keyboards/macrocat/keymaps/default/keymap.c
new file mode 100644
index 0000000000..538dd03295
--- /dev/null
+++ b/keyboards/macrocat/keymaps/default/keymap.c
@@ -0,0 +1,19 @@
+// Copyright 2022 catmunch (@catmunch)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_4x4(
+ KC_PLUS, KC_9, KC_8, KC_7 ,
+ KC_MINS, KC_6, KC_5, KC_4 ,
+ KC_DOT, KC_3, KC_2, KC_1 ,
+ KC_ENT, KC_SPACE, KC_0, MO(1)
+ ),
+ [1] = LAYOUT_ortho_4x4(
+ KC_ASTR, KC_MPRV, KC_MPLY,KC_MNXT,
+ KC_SLSH, KC_LPRN, KC_UP, KC_RPRN,
+ KC_COMM, KC_LEFT, KC_DOWN,KC_RIGHT,
+ KC_TAB, KC_BSPC, KC_0, KC_TRNS
+ )
+};
diff --git a/keyboards/macrocat/keymaps/oled/keymap.c b/keyboards/macrocat/keymaps/oled/keymap.c
new file mode 100644
index 0000000000..c9864c1dc7
--- /dev/null
+++ b/keyboards/macrocat/keymaps/oled/keymap.c
@@ -0,0 +1,31 @@
+// Copyright 2022 catmunch (@catmunch)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_4x4(
+ KC_PLUS, KC_9, KC_8, KC_7 ,
+ KC_MINS, KC_6, KC_5, KC_4 ,
+ KC_DOT, KC_3, KC_2, KC_1 ,
+ KC_ENT, KC_SPACE, KC_0, MO(1)
+ ),
+ [1] = LAYOUT_ortho_4x4(
+ KC_ASTR, KC_MPRV, KC_MPLY,KC_MNXT,
+ KC_SLSH, KC_LPRN, KC_UP, KC_RPRN,
+ KC_COMM, KC_LEFT, KC_DOWN,KC_RIGHT,
+ KC_TAB, KC_BSPC, KC_0, KC_TRNS
+ ),
+ [2] = LAYOUT_ortho_4x4(
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ 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_4x4(
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ 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/macrocat/keymaps/oled/rules.mk b/keyboards/macrocat/keymaps/oled/rules.mk
new file mode 100644
index 0000000000..ca8d16ba67
--- /dev/null
+++ b/keyboards/macrocat/keymaps/oled/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306 \ No newline at end of file
diff --git a/keyboards/macrocat/keymaps/via/keymap.c b/keyboards/macrocat/keymaps/via/keymap.c
new file mode 100644
index 0000000000..3a0df45fb7
--- /dev/null
+++ b/keyboards/macrocat/keymaps/via/keymap.c
@@ -0,0 +1,31 @@
+// Copyright 2022 catmunch (@catmunch)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_ortho_4x4(
+ KC_PPLS, KC_9, KC_8, KC_7 ,
+ KC_PMNS, KC_6, KC_5, KC_4 ,
+ KC_PDOT, KC_3, KC_2, KC_1 ,
+ KC_PENT, KC_SPACE, KC_P0, MO(1)
+ ),
+ [1] = LAYOUT_ortho_4x4(
+ KC_PAST, KC_NO, KC_NO, KC_NO,
+ KC_PSLS, KC_LPRN, KC_UP, KC_RPRN,
+ KC_COMM, KC_LEFT, KC_DOWN,KC_RIGHT,
+ KC_TAB, KC_BSPC, KC_P0, KC_TRNS
+ ),
+ [2] = LAYOUT_ortho_4x4(
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ 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_4x4(
+ KC_NO, KC_NO, KC_NO, KC_NO,
+ 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/macrocat/keymaps/via/rules.mk b/keyboards/macrocat/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/macrocat/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/macrocat/macrocat.c b/keyboards/macrocat/macrocat.c
new file mode 100644
index 0000000000..aec76d1912
--- /dev/null
+++ b/keyboards/macrocat/macrocat.c
@@ -0,0 +1,193 @@
+// Copyright 2022 catmunch (@catmunch)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+
+static bool encoder_pressed = 0;
+static bool encoder_switched_layer = 0;
+static uint32_t encoder_last_release_time = 0;
+static uint32_t encoder_press_combo = 0;
+static uint8_t current_layer = 0;
+
+#ifdef OLED_ENABLE
+static const char PROGMEM bongo_release[] = {
+ 0, 0, 0, 0, 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,192,192, 96, 96, 48, 48, 24, 12, 6, 14, 60,112, 96,224,192,192,192,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,192,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,240,124, 12, 12, 12, 12, 24,120,108, 14, 7, 3, 1, 0,128,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 7, 6, 14, 12, 28, 24, 48, 48, 24, 24, 12,252,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 3, 3, 3, 3, 7, 6, 6, 6, 6, 12, 12, 15, 15, 24, 24, 24, 24, 48, 48, 48, 48,112, 96, 96, 96,224,193,193,193,192,131,134,134,134, 12, 12, 0, 0, 0, 0, 0, 48, 56, 16,240,252, 12, 6,134, 6, 12, 60, 48, 32, 0, 0, 48,126,239,131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 3, 3, 3, 3, 3, 6, 6, 6, 6, 12, 12, 15, 15, 24, 24, 24, 24, 56, 48, 48, 48,112, 96, 96, 96,225,207,254,248,192,128,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, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+static const char PROGMEM bongo_press_r[] = {
+ 0, 0, 0, 0, 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,192,192, 96, 96, 48, 48, 24, 12, 6, 14, 60,112, 96,224,192,192,192,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,192,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,240,124, 12, 12, 12, 12, 24,120,108, 14, 7, 3, 1, 0,128,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 7, 6, 14, 12, 28, 24, 48, 48, 24, 24, 12,252,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 3, 3, 3, 3, 7, 6, 6, 6, 6, 12, 12, 15, 15, 24, 24, 24, 24, 48, 48, 48, 48,112, 96, 96, 96,224,193,193,193,192,131,134,134,134, 12, 12, 0, 0, 0, 0, 0, 48, 56, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,126,239,131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 3, 3, 3, 3, 3, 6, 6, 22,126,111,227,192,224, 96, 96, 96, 96,112, 48, 48, 48,112, 96, 96, 96,225,207,254,248,192,128,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, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+static const char PROGMEM bongo_press_l[] = {
+ 0, 0, 0, 0, 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,192,192, 96, 96, 48, 48, 24, 12, 6, 14, 60,112, 96,224,192,192,192,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,192,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 96, 48, 24, 12, 14, 7, 3, 1, 0,128,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 7, 6, 14, 12, 28, 24, 48, 48, 24, 24, 12,252,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 3, 3, 3, 3, 7, 6, 6, 6, 6, 12, 12,124,252,206,131,129,192,192,192,192,224, 96, 96, 96, 96,224,193,193,193,192,131,134,134,134, 12, 12, 0, 0, 0, 0, 0, 48, 56, 16,240,252, 12, 6,134, 6, 12, 60, 48, 32, 0, 0, 48,126,239,131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 3, 3, 3, 3, 3, 6, 6, 6, 6, 12, 12, 15, 15, 24, 24, 24, 24, 56, 48, 48, 48,112, 96, 96, 96,225,207,254,248,192,128,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, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+static const char PROGMEM bongo_press_lr[] = {
+ 0, 0, 0, 0, 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,192,192, 96, 96, 48, 48, 24, 12, 6, 14, 60,112, 96,224,192,192,192,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,192,128,128,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 96, 48, 24, 12, 14, 7, 3, 1, 0,128,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 3, 7, 6, 14, 12, 28, 24, 48, 48, 24, 24, 12,252,252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 3, 3, 3, 3, 7, 6, 6, 6, 6, 12, 12,124,252,206,131,129,192,192,192,192,224, 96, 96, 96, 96,224,193,193,193,192,131,134,134,134, 12, 12, 0, 0, 0, 0, 0, 48, 56, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,126,239,131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 3, 3, 3, 3, 3, 6, 6, 22,126,111,227,192,224, 96, 96, 96, 96,112, 48, 48, 48,112, 96, 96, 96,225,207,254,248,192,128,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, 0, 0, 0, 0, 0, 0,
+ 0,
+};
+static const char PROGMEM layer[][116] = {
+ [0] = {
+ 248, 0, 0, 0, 0, 0, 0,160,160,192, 0, 0, 96,128,128,128,224, 0,192,160,160,160,192, 0,224, 64, 32, 32, 64,
+ 3, 2, 2, 2, 2, 0, 1, 2, 2, 3, 2,128,130,132,132,132,131, 0, 1, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,254,254,129,129, 97, 97, 25, 25,254,254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 25, 25, 24, 24, 24, 24, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ },
+ [1] = {
+ 248, 0, 0, 0, 0, 0, 0,160,160,192, 0, 0, 96,128,128,128,224, 0,192,160,160,160,192, 0,224, 64, 32, 32, 64,
+ 3, 2, 2, 2, 2, 0, 1, 2, 2, 3, 2, 0, 2,132,132, 4, 3, 0, 1, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6,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, 0, 0, 24, 24, 31, 31, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ },
+ [2] = {
+ 248, 0, 0, 0, 0, 0, 0,160,160,192, 0, 0, 96,128,128,128,224, 0,192,160,160,160,192, 0,224, 64, 32, 32, 64,
+ 3, 2, 2, 2, 2, 0, 1, 2, 2, 3, 2,128,130,132,132,132,131, 0, 1, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,134,134, 97, 97, 97, 97, 97, 97, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 31, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ },
+ [3] = {
+ 248, 0, 0, 0, 0, 0, 0,160,160,192, 0, 0, 96,128,128,128,224, 0,192,160,160,160,192, 0,224, 64, 32, 32, 64,
+ 3, 2, 2, 2, 2, 0, 1, 2, 2,131,130,128,130,132,132,132,131,128,129, 2, 2, 2, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 97, 97,121,121,135,135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 24, 24, 24, 24, 24, 24, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ }
+};
+static uint8_t key_pressed_l = 0;
+static uint8_t key_pressed_r = 0;
+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;
+ }
+
+ char buffer[512];
+ if (key_pressed_l && key_pressed_r)
+ memcpy_P(buffer, bongo_press_lr, 512);
+ else if (key_pressed_l)
+ memcpy_P(buffer, bongo_press_l, 512);
+ else if (key_pressed_r)
+ memcpy_P(buffer, bongo_press_r, 512);
+ else
+ memcpy_P(buffer, bongo_release, 512);
+ int highest_layer = 0;
+ for(int i=3;i>=0;--i){
+ if (IS_LAYER_ON(i)) {
+ highest_layer = i;
+ break;
+ }
+ }
+ // Apply the layer info (4*29)
+ for(int i=0;i<4;i++){
+ for(int j=0;j<29;j++){
+ buffer[i*128+85+j] = pgm_read_byte_near(layer[highest_layer]+i*29+j);
+ }
+ }
+ oled_write_raw(buffer, 512);
+ return false;
+}
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) {
+ return false;
+ }
+ if (record->event.pressed) {
+ if (record->event.key.col <= 1)
+ key_pressed_l++;
+ else
+ key_pressed_r++;
+ } else {
+ if (record->event.key.col <= 1)
+ key_pressed_l--;
+ else
+ key_pressed_r--;
+ }
+ return true;
+}
+#endif
+void encoder_single_click(void) {
+ tap_code(KC_MPLY);
+}
+void encoder_double_click(void) {
+ tap_code(KC_MNXT);
+}
+void encoder_triple_click(void) {
+ tap_code(KC_MPRV);
+}
+void matrix_init_kb() {
+ matrix_init_user();
+
+ setPinInputHigh(ENCODER_SWITCH);
+}
+void matrix_scan_kb() {
+ matrix_scan_user();
+ if (readPin(ENCODER_SWITCH)) {
+ if (encoder_pressed) { // release switch
+ encoder_pressed = 0;
+ encoder_press_combo += 1;
+ encoder_last_release_time = timer_read32();
+ }
+ if (encoder_press_combo && timer_elapsed(encoder_last_release_time) > 300) {
+ // combo timeout
+ if (encoder_switched_layer) { // switch layer
+ encoder_switched_layer = 0;
+ } else { // click
+ switch (encoder_press_combo) {
+ case 1:
+ encoder_single_click();
+ break;
+ case 2:
+ encoder_double_click();
+ break;
+ default:
+ encoder_triple_click();
+ }
+ }
+ encoder_press_combo = 0;
+ encoder_last_release_time = 0;
+ }
+ } else {
+ if (!encoder_pressed) { // press switch
+ encoder_pressed = 1;
+ }
+ }
+}
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+ if (clockwise) {
+ if (encoder_pressed) {
+ if (current_layer < 3) {
+ current_layer += 1;
+ layer_move(current_layer);
+ }
+ encoder_switched_layer = 1;
+ } else {
+ tap_code(KC_VOLU);
+ }
+ } else {
+ if (encoder_pressed) {
+ if (current_layer > 0) {
+ current_layer -= 1;
+ layer_move(current_layer);
+ }
+ encoder_switched_layer = 1;
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ return false;
+}
diff --git a/keyboards/macrocat/readme.md b/keyboards/macrocat/readme.md
new file mode 100644
index 0000000000..da06c04f63
--- /dev/null
+++ b/keyboards/macrocat/readme.md
@@ -0,0 +1,27 @@
+# macrocat
+
+![macrocat](https://i.imgur.com/ItLHGBfh.jpg)
+
+A cat like macro keyboard/numpad.
+
+* Keyboard Maintainer: [catmunch](https://github.com/catmunch), [starcatmeow](https://github.com/starcatmeow)
+* Hardware Supported: Fully Supported
+* Hardware Availability: [MacroCat Keyboard](https://github.com/catmunch/macrocat)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make macrocat:default
+
+Flashing example for this keyboard:
+
+ make macrocat:default:flash
+
+## 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
+* **Brand new atmega32u4 chip**: Plug the cable in, it will automatically boot into bootloader
+
+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/macrocat/rules.mk b/keyboards/macrocat/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/macrocat/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/majistic/config.h b/keyboards/majistic/config.h
index 6e823ae3d6..6c015fde36 100644
--- a/keyboards/majistic/config.h
+++ b/keyboards/majistic/config.h
@@ -20,13 +20,6 @@ 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 0x6E55
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yossiyossy
-#define PRODUCT maJIStic
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
diff --git a/keyboards/majistic/info.json b/keyboards/majistic/info.json
index 8d8005c7f4..19b60ad2ee 100644
--- a/keyboards/majistic/info.json
+++ b/keyboards/majistic/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "maJIStic",
+ "manufacturer": "yossiyossy",
"url": "https://github.com/yossiyossy/maJIStic",
"maintainer": "yossiyossy",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6E55",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/makenova/omega/omega4/readme.md b/keyboards/makenova/omega/omega4/readme.md
index 0b4db785d5..c736cedc24 100644
--- a/keyboards/makenova/omega/omega4/readme.md
+++ b/keyboards/makenova/omega/omega4/readme.md
@@ -20,4 +20,4 @@ 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
+- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/makrosu/config.h b/keyboards/makrosu/config.h
index b587477f8a..f441a16f7a 100644
--- a/keyboards/makrosu/config.h
+++ b/keyboards/makrosu/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xAB69
-#define PRODUCT_ID 0x8585
-#define DEVICE_VER 0x0001
-#define MANUFACTURER valdydesu_
-#define PRODUCT makrosu
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 6
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B6 }
#define MATRIX_COL_PINS { B2, B3, B1, F7, F6, F5}
-#define UNUSED_PINS
#define ENCODERS_PAD_A { E6 }
#define ENCODERS_PAD_B { D1 }
diff --git a/keyboards/makrosu/info.json b/keyboards/makrosu/info.json
index 84aca4a14c..30b17ebad3 100644
--- a/keyboards/makrosu/info.json
+++ b/keyboards/makrosu/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MakrOSU",
+ "manufacturer": "Valdydesu_",
"url": "",
"maintainer": "Valdydesu_",
+ "usb": {
+ "vid": "0xAB69",
+ "pid": "0x8585",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/malevolti/lyra/rev1/config.h b/keyboards/malevolti/lyra/rev1/config.h
index 18563f8270..1e0628c6d3 100644
--- a/keyboards/malevolti/lyra/rev1/config.h
+++ b/keyboards/malevolti/lyra/rev1/config.h
@@ -15,13 +15,6 @@
*/
#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
diff --git a/keyboards/malevolti/lyra/rev1/info.json b/keyboards/malevolti/lyra/rev1/info.json
index 82dd811fd5..02c1a2421b 100644
--- a/keyboards/malevolti/lyra/rev1/info.json
+++ b/keyboards/malevolti/lyra/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "lyra",
+ "keyboard_name": "Lyra",
+ "manufacturer": "Dom",
"url": "",
"maintainer": "malevolti",
+ "usb": {
+ "vid": "0x4443",
+ "pid": "0x4C43",
+ "device_version": "30.3.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/malevolti/superlyra/rev1/config.h b/keyboards/malevolti/superlyra/rev1/config.h
index 62c005ff9d..6aebaf28b1 100644
--- a/keyboards/malevolti/superlyra/rev1/config.h
+++ b/keyboards/malevolti/superlyra/rev1/config.h
@@ -15,13 +15,6 @@
*/
#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
diff --git a/keyboards/malevolti/superlyra/rev1/info.json b/keyboards/malevolti/superlyra/rev1/info.json
index c7dce70de5..5baf958117 100644
--- a/keyboards/malevolti/superlyra/rev1/info.json
+++ b/keyboards/malevolti/superlyra/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "superlyra",
+ "keyboard_name": "SuperLyra",
+ "manufacturer": "Dom",
"url": "",
"maintainer": "malevolti",
+ "usb": {
+ "vid": "0x4443",
+ "pid": "0x4C53",
+ "device_version": "30.3.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/manta60/config.h b/keyboards/manta60/config.h
index 7c9a3b5ebe..ce4120249c 100644
--- a/keyboards/manta60/config.h
+++ b/keyboards/manta60/config.h
@@ -19,13 +19,6 @@ 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 0x991D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kamonanban
-#define PRODUCT manta60
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6 ,B4}
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/manta60/info.json b/keyboards/manta60/info.json
index 2210503b82..3b3b58a9c2 100644
--- a/keyboards/manta60/info.json
+++ b/keyboards/manta60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "manta60",
+ "manufacturer": "kamonanban",
"url": "https://github.com/KamoNanban",
"maintainer": "kamonanban",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x991D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/manyboard/macro/config.h b/keyboards/manyboard/macro/config.h
index 63db714e63..6b49e670ba 100644
--- a/keyboards/manyboard/macro/config.h
+++ b/keyboards/manyboard/macro/config.h
@@ -18,13 +18,6 @@ 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 0x4D42 // MB
-#define PRODUCT_ID 0x0015 // 15 keys
-#define DEVICE_VER 0x0103
-#define MANUFACTURER Manyboard
-#define PRODUCT MB_Macro
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
@@ -32,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3 }
#define MATRIX_COL_PINS { D4, D5, D6, D7 }
-#define UNUSED_PINS
/*Encoder Pins*/
#define ENCODERS_PAD_A { C6 }
diff --git a/keyboards/manyboard/macro/info.json b/keyboards/manyboard/macro/info.json
index 13f89494dc..47eb066f49 100644
--- a/keyboards/manyboard/macro/info.json
+++ b/keyboards/manyboard/macro/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "manyboard_macro",
+ "keyboard_name": "MB_Macro",
+ "manufacturer": "Manyboard",
"url": "https://github.com/WillEhman/qmk_firmware/tree/dev_create_mb_macro",
"maintainer": "William Ehman",
+ "usb": {
+ "vid": "0x4D42",
+ "pid": "0x0015",
+ "device_version": "1.0.3"
+ },
"layouts": {
"LAYOUT_ortho_4x4": {
"layout": [
diff --git a/keyboards/maple_computing/6ball/config.h b/keyboards/maple_computing/6ball/config.h
index cc496d675a..40fb44e7a7 100644
--- a/keyboards/maple_computing/6ball/config.h
+++ b/keyboards/maple_computing/6ball/config.h
@@ -19,13 +19,6 @@ 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 PRODUCT_ID 0x0007
-#define DEVICE_VER 0x0001
-#define MANUFACTURER That-Canadian
-#define PRODUCT 6-Ball
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 6
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pin-out */
#define MATRIX_ROW_PINS { F5 }
#define MATRIX_COL_PINS { F4, D4, B5, B6, B2, F6 }
-#define UNUSED_PINS
/* ws2812 RGB LED */
#define RGB_DI_PIN F7
diff --git a/keyboards/maple_computing/6ball/info.json b/keyboards/maple_computing/6ball/info.json
index fc742ad517..087372c186 100644
--- a/keyboards/maple_computing/6ball/info.json
+++ b/keyboards/maple_computing/6ball/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "6-Ball",
+ "manufacturer": "That-Canadian",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xCEEB",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/maple_computing/c39/config.h b/keyboards/maple_computing/c39/config.h
index 45c503846f..538dbdbf28 100755
--- a/keyboards/maple_computing/c39/config.h
+++ b/keyboards/maple_computing/c39/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCA17
-#define PRODUCT_ID 0xCA39
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Maple Computing
-#define PRODUCT C39
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 13
diff --git a/keyboards/maple_computing/c39/info.json b/keyboards/maple_computing/c39/info.json
index 3600570dde..971c483627 100755
--- a/keyboards/maple_computing/c39/info.json
+++ b/keyboards/maple_computing/c39/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "C39",
+ "manufacturer": "Maple Computing",
"url": "",
"maintainer": "Space Cat",
+ "usb": {
+ "vid": "0xCA17",
+ "pid": "0xCA39",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Back", "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":"M1", "x":11.25, "y":0}, {"label":"M2", "x":12.25, "y":0}, {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"Enter", "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":"M3", "x":11.25, "y":1}, {"label":"M4", "x":12.25, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"Fn", "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":"M5", "x":11.25, "y":2}, {"label":"M6", "x":12.25, "y":2}]
diff --git a/keyboards/maple_computing/christmas_tree/V2017/config.h b/keyboards/maple_computing/christmas_tree/V2017/config.h
deleted file mode 100644
index abc94749a8..0000000000
--- a/keyboards/maple_computing/christmas_tree/V2017/config.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#pragma once
-
-#include "config_common.h"
-
-#define DEVICE_VER 0x2017
diff --git a/keyboards/maple_computing/christmas_tree/V2017/info.json b/keyboards/maple_computing/christmas_tree/V2017/info.json
new file mode 100644
index 0000000000..6d00c2519f
--- /dev/null
+++ b/keyboards/maple_computing/christmas_tree/V2017/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "20.1.7"
+ }
+}
diff --git a/keyboards/maple_computing/christmas_tree/config.h b/keyboards/maple_computing/christmas_tree/config.h
index 531c5996d2..8ffcd5c25a 100644
--- a/keyboards/maple_computing/christmas_tree/config.h
+++ b/keyboards/maple_computing/christmas_tree/config.h
@@ -19,12 +19,6 @@ 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 0x3070
-#define MANUFACTURER Maple Computing
-#define PRODUCT Christmas Tree
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 1
@@ -32,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Planck PCB default pin-out */
#define MATRIX_ROW_PINS { D3, F4, D0, F6, F5, D4 }
#define MATRIX_COL_PINS { D1 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN D2
diff --git a/keyboards/maple_computing/christmas_tree/info.json b/keyboards/maple_computing/christmas_tree/info.json
index 5d24218c70..2f5dfef702 100644
--- a/keyboards/maple_computing/christmas_tree/info.json
+++ b/keyboards/maple_computing/christmas_tree/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "Christmas Tree",
+ "manufacturer": "Maple Computing",
"url": "https://www.reddit.com/r/MechanicalKeyboards/comments/7cqxpf/gb_christmas_tree_pcb_gb_now_live/",
"maintainer": "That-Canadian",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3070"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":1, "y":0}, {"x":0.5, "y":1}, {"x":1.5, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}]
diff --git a/keyboards/maple_computing/ivy/config.h b/keyboards/maple_computing/ivy/config.h
index 130f2e0b61..96fb23736c 100644
--- a/keyboards/maple_computing/ivy/config.h
+++ b/keyboards/maple_computing/ivy/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1337
-#define PRODUCT_ID 0x6012
-#define MANUFACTURER Maple Computing
-#define PRODUCT Ivy
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
diff --git a/keyboards/maple_computing/ivy/rev1/config.h b/keyboards/maple_computing/ivy/rev1/config.h
index 9b88b89e5e..902f807051 100644
--- a/keyboards/maple_computing/ivy/rev1/config.h
+++ b/keyboards/maple_computing/ivy/rev1/config.h
@@ -17,11 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DEVICE_VER 0x0001
-
/* Let's Macro V2 pin-out */
#define MATRIX_ROW_PINS { F1, B2, D3 }
#define MATRIX_COL_PINS { F5, B3, D5 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/maple_computing/ivy/rev1/info.json b/keyboards/maple_computing/ivy/rev1/info.json
index c5045bd80f..4bacbdb9b9 100644
--- a/keyboards/maple_computing/ivy/rev1/info.json
+++ b/keyboards/maple_computing/ivy/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "IVY",
+ "keyboard_name": "Ivy",
+ "manufacturer": "Maple Computing",
"url": "",
"maintainer": "That-Canadian",
+ "usb": {
+ "vid": "0x1337",
+ "pid": "0x6012",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/maple_computing/jnao/config.h b/keyboards/maple_computing/jnao/config.h
index 7598e049ae..e8a2ca39b8 100644
--- a/keyboards/maple_computing/jnao/config.h
+++ b/keyboards/maple_computing/jnao/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1337
-#define PRODUCT_ID 0x6017
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Maple Computing
-#define PRODUCT JNAO Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
#define MATRIX_ROW_PINS { E6, F0, F5, F6, F7 }
#define MATRIX_COL_PINS { F1, F4, B1, B2, B3, B7, D1, D2, D4, D6, D7, B4 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN D0
diff --git a/keyboards/maple_computing/jnao/info.json b/keyboards/maple_computing/jnao/info.json
index 4d8f332391..2b2fc17742 100644
--- a/keyboards/maple_computing/jnao/info.json
+++ b/keyboards/maple_computing/jnao/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "JNAO",
+ "manufacturer": "Maple Computing",
"url": "",
"maintainer": "That-Canadian",
+ "usb": {
+ "vid": "0x1337",
+ "pid": "0x6017",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x12": {
"layout": [
diff --git a/keyboards/maple_computing/launchpad/config.h b/keyboards/maple_computing/launchpad/config.h
index 901c63c93b..92d597508a 100644
--- a/keyboards/maple_computing/launchpad/config.h
+++ b/keyboards/maple_computing/launchpad/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1337
-#define PRODUCT_ID 0x6007
-#define MANUFACTURER Maple Computing
-#define PRODUCT Launch Pad
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 2
diff --git a/keyboards/maple_computing/launchpad/keymaps/brandonschlack/keymap.c b/keyboards/maple_computing/launchpad/keymaps/brandonschlack/keymap.c
index 1ef77ccc6e..6fc28dccc2 100644
--- a/keyboards/maple_computing/launchpad/keymaps/brandonschlack/keymap.c
+++ b/keyboards/maple_computing/launchpad/keymaps/brandonschlack/keymap.c
@@ -151,7 +151,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └──────┴──────┘
*/
[_ADJUST] = LAYOUT( \
- QM_MAKE, RESET, \
+ QM_MAKE, QK_BOOT, \
DF_REDR, DF_MEDA, \
DF_NAVI, DF_KBNR, \
TG_LGHT, XXXXXXX \
diff --git a/keyboards/maple_computing/launchpad/keymaps/default/keymap.c b/keyboards/maple_computing/launchpad/keymaps/default/keymap.c
index 62dee131f8..efd67e8c1b 100644
--- a/keyboards/maple_computing/launchpad/keymaps/default/keymap.c
+++ b/keyboards/maple_computing/launchpad/keymaps/default/keymap.c
@@ -6,9 +6,10 @@
// 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 _FUNC 15
+enum layer_names {
+ _QWERTY,
+ _FUNC
+};
// Defines for task manager and such
#define CALTDEL LCTL(LALT(KC_DEL))
diff --git a/keyboards/maple_computing/launchpad/keymaps/default_rgb/keymap.c b/keyboards/maple_computing/launchpad/keymaps/default_rgb/keymap.c
index 529fa91f65..69fb3ce561 100644
--- a/keyboards/maple_computing/launchpad/keymaps/default_rgb/keymap.c
+++ b/keyboards/maple_computing/launchpad/keymaps/default_rgb/keymap.c
@@ -7,9 +7,11 @@ extern keymap_config_t keymap_config;
// 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 _RGB 1
-#define _FUNC 15
+enum layer_names {
+ _QWERTY,
+ _RGB,
+ _FUNC
+};
// Defines for task manager and such
#define CALTDEL LCTL(LALT(KC_DEL))
diff --git a/keyboards/maple_computing/launchpad/rev1/config.h b/keyboards/maple_computing/launchpad/rev1/config.h
index debc28fab3..427e04618c 100644
--- a/keyboards/maple_computing/launchpad/rev1/config.h
+++ b/keyboards/maple_computing/launchpad/rev1/config.h
@@ -19,12 +19,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "../config.h"
-#define DEVICE_VER 0x0001
-
/* Let's Macro V2 pin-out */
#define MATRIX_ROW_PINS { C6, B1, B3, D7 }
#define MATRIX_COL_PINS { D2, F7 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/maple_computing/launchpad/rev1/info.json b/keyboards/maple_computing/launchpad/rev1/info.json
index c8ba35c966..4931670cb4 100644
--- a/keyboards/maple_computing/launchpad/rev1/info.json
+++ b/keyboards/maple_computing/launchpad/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Launch Pad rev1",
+ "keyboard_name": "Launch Pad",
+ "manufacturer": "Maple Computing",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x1337",
+ "pid": "0x6007",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/maple_computing/lets_split_eh/config.h b/keyboards/maple_computing/lets_split_eh/config.h
index 787b9783b8..671cd4d34a 100644
--- a/keyboards/maple_computing/lets_split_eh/config.h
+++ b/keyboards/maple_computing/lets_split_eh/config.h
@@ -19,13 +19,6 @@ 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 0xE401
-#define DEVICE_VER 0x0100
-#define MANUFACTURER That-Canadian
-#define PRODUCT Lets Split Eh?
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/maple_computing/lets_split_eh/eh/config.h b/keyboards/maple_computing/lets_split_eh/eh/config.h
index 43e0266502..b9e6da535d 100644
--- a/keyboards/maple_computing/lets_split_eh/eh/config.h
+++ b/keyboards/maple_computing/lets_split_eh/eh/config.h
@@ -23,7 +23,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Let's Split EH? pin-out */
#define MATRIX_ROW_PINS { B1, B3, D7, B4 }
#define MATRIX_COL_PINS { F4, F5, C6, B6, B5, D5 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/maple_computing/lets_split_eh/eh/info.json b/keyboards/maple_computing/lets_split_eh/eh/info.json
index c241fa3813..352461ae50 100644
--- a/keyboards/maple_computing/lets_split_eh/eh/info.json
+++ b/keyboards/maple_computing/lets_split_eh/eh/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Let's Split",
+ "keyboard_name": "Lets Split Eh?",
+ "manufacturer": "That-Canadian",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xE401",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/README.md b/keyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/README.md
deleted file mode 100644
index fcb7037937..0000000000
--- a/keyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Lets Split Eh Layout
-
-Check out [user readme](../../../../users/bbaserdem/README.md) for more info.
-
-# Usage
-
-Fill in after flashing
diff --git a/keyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/config.h b/keyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/config.h
deleted file mode 100755
index 47be76567e..0000000000
--- a/keyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#ifndef CONFIG_KEYMAP_H
-#define CONFIG_KEYMAP_H
-#include "../../config.h"
-#endif
diff --git a/keyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/keymap.c b/keyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/keymap.c
deleted file mode 100755
index 92e72bbf1c..0000000000
--- a/keyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/keymap.c
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "lets_split_eh.h"
-#include "bbaserdem.h"
-
-
-void matrix_init_keymap (void) {
-}
-
-uint32_t layer_state_set_keymap(uint32_t state) {
- return state;
-}
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- // Main Dvorak layer
- [_DV] = LAYOUT_letssplit_wrapper(DVORAK),
- // Turkish and special character overlay
- [_AL] = LAYOUT_letssplit_wrapper(ALTCHAR),
- // Gaming layer
- [_GA] = LAYOUT_letssplit_wrapper(GAME),
- // Numbers layer
- [_NU] = LAYOUT_letssplit_wrapper(NUMBERS),
- // Settings layer
- [_SE] = LAYOUT_letssplit_wrapper(SETTINGS),
- // Mouse emulation layer
- [_MO] = LAYOUT_letssplit_wrapper(MOUSE),
- // Music layer
- [_MU] = LAYOUT_letssplit_wrapper(MUSIC),
-};
diff --git a/keyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/rules.mk b/keyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/rules.mk
deleted file mode 100755
index 7a37e989d8..0000000000
--- a/keyboards/maple_computing/lets_split_eh/keymaps/bbaserdem/rules.mk
+++ /dev/null
@@ -1,8 +0,0 @@
-# Build options
-
-BACKLIGHT_ENABLE = no # Switch LEDs
-MOUSEKEY_ENABLE = yes # Emulates mouse key using keypresses
-RGBLIGHT_ENABLE = yes # LED strips
-TAP_DANCE_ENABLE = no # Use multi-tap features
-AUDIO_ENABLE = no # Audio stuff
-
diff --git a/keyboards/maple_computing/lets_split_eh/keymaps/doxish_dvorak/keymap.c b/keyboards/maple_computing/lets_split_eh/keymaps/doxish_dvorak/keymap.c
index 06ddace84c..552ed7b183 100644
--- a/keyboards/maple_computing/lets_split_eh/keymaps/doxish_dvorak/keymap.c
+++ b/keyboards/maple_computing/lets_split_eh/keymaps/doxish_dvorak/keymap.c
@@ -94,14 +94,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | | | | | | | | | | |BLSTEP|
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | | RESET|
+ * | | | | | | | | | | | | QK_BOOT|
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
TSKMGR, _______, _______, _______, _______, _______, KC_DEL, _______, RGB_VAI, RGB_SAI, RGB_HUI, CALTDEL, \
_______, _______, _______, _______, _______, _______, _______, DVORAK, RGB_VAD, RGB_SAD, RGB_HUD, RGB_TOG, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_STEP, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT \
),
/* Function
diff --git a/keyboards/maple_computing/lets_split_eh/keymaps/mikethetiger/keymap.c b/keyboards/maple_computing/lets_split_eh/keymaps/mikethetiger/keymap.c
index 9e67b7dda8..0a892da6a0 100644
--- a/keyboards/maple_computing/lets_split_eh/keymaps/mikethetiger/keymap.c
+++ b/keyboards/maple_computing/lets_split_eh/keymaps/mikethetiger/keymap.c
@@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Adjust (Lower + Raise)
* ,-----------------------------------------------------------------------------------.
- * | RESET| | | | | | |RGBMOD|RGBVAI|RGBSAI|RGBHUI|caltde|
+ * | QK_BOOT| | | | | | |RGBMOD|RGBVAI|RGBSAI|RGBHUI|caltde|
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | | | | | | |RGBRMO|RGBVAD|RGBSAD|RGBHUD|RGBTOG|
* |------+------+------+------+------+------|------+------+------+------+------+------|
@@ -89,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- RESET, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, CALTDEL, \
+ QK_BOOT, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_VAI, RGB_SAI, RGB_HUI, CALTDEL, \
_______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_VAD, RGB_SAD, RGB_HUD, RGB_TOG, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_STEP, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/maple_computing/lets_split_eh/keymaps/msiu/keymap.c b/keyboards/maple_computing/lets_split_eh/keymaps/msiu/keymap.c
index af5c98241a..195de46801 100644
--- a/keyboards/maple_computing/lets_split_eh/keymaps/msiu/keymap.c
+++ b/keyboards/maple_computing/lets_split_eh/keymaps/msiu/keymap.c
@@ -99,14 +99,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | | | | | | | | | | |BLSTEP|
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | | RESET|
+ * | | | | | | | | | | | | QK_BOOT|
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
RGB_TOG, RGB_VAI, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, \
RGB_MOD, RGB_VAD, RGB_SAD, RGB_HUD, _______, _______, _______, QWERTY, DVORAK, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT \
),
/* FUNC
diff --git a/keyboards/maple_computing/lets_split_eh/keymaps/resfury/keymap.c b/keyboards/maple_computing/lets_split_eh/keymaps/resfury/keymap.c
index 17f790675b..b434661865 100644
--- a/keyboards/maple_computing/lets_split_eh/keymaps/resfury/keymap.c
+++ b/keyboards/maple_computing/lets_split_eh/keymaps/resfury/keymap.c
@@ -132,14 +132,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* |_DVORAK| | | | | | | | | |RGBMOD|BLSTEP|
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * |_QWERTY| | | | | | | | | | | RESET|
+ * |_QWERTY| | | | | | | | | | | QK_BOOT|
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
TSKMGR, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAI, RGB_HUI, CALTDEL, \
DF(_COLEMAK), _______, _______, _______, _______, _______, _______, _______, RGB_VAD, RGB_SAD, RGB_HUD, RGB_TOG, \
DF(_DVORAK), _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, BL_STEP, \
- DF(_QWERTY), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET \
+ DF(_QWERTY), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT \
),
/* Function
diff --git a/keyboards/maple_computing/lets_split_eh/keymaps/romus/keymap.c b/keyboards/maple_computing/lets_split_eh/keymaps/romus/keymap.c
index ba5b75a5cf..398a324a0f 100644
--- a/keyboards/maple_computing/lets_split_eh/keymaps/romus/keymap.c
+++ b/keyboards/maple_computing/lets_split_eh/keymaps/romus/keymap.c
@@ -5,8 +5,8 @@
void matrix_init_keymap (void) {
}
-uint32_t layer_state_set_keymap(uint32_t state) {
-
+layer_state_t layer_state_set_keymap(layer_state_t state) {
+
return state;
}
diff --git a/keyboards/maple_computing/lets_split_eh/keymaps/that_canadian/keymap.c b/keyboards/maple_computing/lets_split_eh/keymaps/that_canadian/keymap.c
index bba9a02c8c..09f9a2329c 100644
--- a/keyboards/maple_computing/lets_split_eh/keymaps/that_canadian/keymap.c
+++ b/keyboards/maple_computing/lets_split_eh/keymaps/that_canadian/keymap.c
@@ -90,14 +90,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | | | | | | | | | | |BLSTEP|
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | | RESET|
+ * | | | | | | | | | | | | QK_BOOT|
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
TSKMGR, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_SAI, RGB_HUI, CALTDEL, \
_______, _______, _______, _______, _______, _______, _______, QWERTY, RGB_VAD, RGB_SAD, RGB_HUD, RGB_TOG, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_STEP, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT \
),
/* Function
diff --git a/keyboards/maple_computing/minidox/config.h b/keyboards/maple_computing/minidox/config.h
index 613e45977c..9b3adc2602 100644
--- a/keyboards/maple_computing/minidox/config.h
+++ b/keyboards/maple_computing/minidox/config.h
@@ -19,12 +19,6 @@ 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 0x3060
-#define MANUFACTURER That-Canadian
-#define PRODUCT MiniDox
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/maple_computing/minidox/keymaps/alairock/keymap.c b/keyboards/maple_computing/minidox/keymaps/alairock/keymap.c
index c592b1a6a9..c25c0b00d0 100644
--- a/keyboards/maple_computing/minidox/keymaps/alairock/keymap.c
+++ b/keyboards/maple_computing/minidox/keymaps/alairock/keymap.c
@@ -110,7 +110,7 @@ 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_UP, KC_F9, KC_F10, \
KC_F11, KC_F12, RGB_RMOD, RGB_SAI, RGB_SAD, _______, KC_LEFT, KC_DOWN, KC_RGHT, CALTDEL, \
- RESET, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_VAI, RGB_VAD, KC_F8, TSKMGR, _______, \
+ QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_VAI, RGB_VAD, KC_F8, TSKMGR, _______, \
_______, _______, _______, _______, _______, _______ \
)
};
diff --git a/keyboards/maple_computing/minidox/keymaps/default/keymap.c b/keyboards/maple_computing/minidox/keymaps/default/keymap.c
index 7886eec172..d71e5b6e55 100644
--- a/keyboards/maple_computing/minidox/keymaps/default/keymap.c
+++ b/keyboards/maple_computing/minidox/keymaps/default/keymap.c
@@ -5,10 +5,12 @@
// 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 _LOWER 1
-#define _RAISE 2
-#define _ADJUST 16
+enum layer_names {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/maple_computing/minidox/keymaps/dustypomerleau/keymap.c b/keyboards/maple_computing/minidox/keymaps/dustypomerleau/keymap.c
index e93a09f64a..c665e955a3 100644
--- a/keyboards/maple_computing/minidox/keymaps/dustypomerleau/keymap.c
+++ b/keyboards/maple_computing/minidox/keymaps/dustypomerleau/keymap.c
@@ -149,7 +149,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* If you use QWERTY + the Vanilla numbers primarily, change NUMLK_E to NUMLK_N here.
*
* ,----------------------------------. ,----------------------------------.
- * | RESET|DEBUG |QWERTY|CMKDHM| | | | VOL--| VOL++|BRITE-|BRITE+|
+ * | QK_BOOT|DEBUG |QWERTY|CMKDHM| | | | VOL--| VOL++|BRITE-|BRITE+|
* |------+------+------+------+------| |------+------+------+------+------|
* | SHIFT| CTRL | ALT | GUI |NAV LK| | POWER| VOL- | VOL+ | MUTE | MPLY |
* |------+------+------+------+------| |------+------+------+------+------|
@@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------' `------'
*/
[_SYS] = LAYOUT( \
- RESET, DEBUG, QWERTY, CMK_DHM, _______, _______, KC_VOLD, KC_VOLU, KC_BRID, KC_BRIU, \
+ QK_BOOT, DEBUG, QWERTY, CMK_DHM, _______, _______, KC_VOLD, KC_VOLU, KC_BRID, KC_BRIU, \
KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, NAV_LK, KC_POWER, VOL_DN, VOL_UP, KC__MUTE, KC_MPLY, \
_______, _______, AU_OFF, AU_ON, _______, _______, NUMLK_E, KC_MRWD, KC_MFFD, _______, \
_______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/maple_computing/minidox/keymaps/khitsule/keymap.c b/keyboards/maple_computing/minidox/keymaps/khitsule/keymap.c
index 1c6b6749f3..05301f4b8e 100644
--- a/keyboards/maple_computing/minidox/keymaps/khitsule/keymap.c
+++ b/keyboards/maple_computing/minidox/keymaps/khitsule/keymap.c
@@ -53,7 +53,7 @@ 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, \
_______, DSK_LFT, _______, DSK_RT, _______, TSKMGR, CALTDEL, _______, KC_F11, KC_F12, \
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______ \
)
};
diff --git a/keyboards/maple_computing/minidox/keymaps/norman/config.h b/keyboards/maple_computing/minidox/keymaps/norman/config.h
index 0d3542a03e..ecdf080c2c 100644
--- a/keyboards/maple_computing/minidox/keymaps/norman/config.h
+++ b/keyboards/maple_computing/minidox/keymaps/norman/config.h
@@ -1,5 +1,4 @@
#pragma once
#define PERMISSIVE_HOLD
-#define QMK_KEYS_PER_SCAN 4
#define TAPPING_TERM 160
diff --git a/keyboards/maple_computing/minidox/keymaps/norman/keymap.c b/keyboards/maple_computing/minidox/keymaps/norman/keymap.c
index 2786b7dd93..0147e8fb98 100644
--- a/keyboards/maple_computing/minidox/keymaps/norman/keymap.c
+++ b/keyboards/maple_computing/minidox/keymaps/norman/keymap.c
@@ -57,7 +57,7 @@ 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, \
_______, DSK_LFT, _______, DSK_RT, _______, TSKMGR, CALTDEL, _______, KC_F11, KC_F12, \
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______ \
)
diff --git a/keyboards/maple_computing/minidox/keymaps/rsthd_combos/keymap.c b/keyboards/maple_computing/minidox/keymaps/rsthd_combos/keymap.c
index d80febecaf..7d6b211379 100644
--- a/keyboards/maple_computing/minidox/keymaps/rsthd_combos/keymap.c
+++ b/keyboards/maple_computing/minidox/keymaps/rsthd_combos/keymap.c
@@ -102,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
_______, KC_F7, KC_F8, KC_F9, SCRCAP, _______, KC_F10, KC_F11, KC_F12, _______,
_______, KC_F1, KC_F2, KC_F3, _______, _______, KC_F4, KC_F5, KC_F6, _______,
- OSM(MOD_LCTL),_______, _______, _______, RESET, KILL, _______, _______, _______, OSM(MOD_RCTL),
+ OSM(MOD_LCTL),_______, _______, _______, QK_BOOT, KILL, _______, _______, _______, OSM(MOD_RCTL),
_______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/maple_computing/minidox/keymaps/that_canadian/keymap.c b/keyboards/maple_computing/minidox/keymaps/that_canadian/keymap.c
index 78ddca30e8..cacf1ec543 100644
--- a/keyboards/maple_computing/minidox/keymaps/that_canadian/keymap.c
+++ b/keyboards/maple_computing/minidox/keymaps/that_canadian/keymap.c
@@ -108,7 +108,7 @@ 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_UP, KC_F9, KC_F10, \
KC_F11, KC_F12, _______, RGB_SAI, RGB_SAD, _______, KC_LEFT, KC_DOWN, KC_RGHT, CALTDEL, \
- RESET, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_VAI, RGB_VAD, KC_F8, TSKMGR, _______, \
+ QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_VAI, RGB_VAD, KC_F8, TSKMGR, _______, \
_______, _______, _______, _______, _______, _______ \
)
};
diff --git a/keyboards/maple_computing/minidox/keymaps/tw1t611/keymap.c b/keyboards/maple_computing/minidox/keymaps/tw1t611/keymap.c
index f479b10f67..c50571c78d 100644
--- a/keyboards/maple_computing/minidox/keymaps/tw1t611/keymap.c
+++ b/keyboards/maple_computing/minidox/keymaps/tw1t611/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT( \
_______, _______, _______, _______, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, \
CALTESC, CALTDEL, _______, CALT, _______, _______, KC_F4, KC_F5, KC_F6, KC_F11, \
- RESET, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F12, \
+ QK_BOOT, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F12, \
_______, _______, _______, _______, _______, _______ \
)};
diff --git a/keyboards/maple_computing/minidox/keymaps/xyverz/keymap.c b/keyboards/maple_computing/minidox/keymaps/xyverz/keymap.c
index 4c7a05227f..e1d1d2644c 100644
--- a/keyboards/maple_computing/minidox/keymaps/xyverz/keymap.c
+++ b/keyboards/maple_computing/minidox/keymaps/xyverz/keymap.c
@@ -142,7 +142,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------| |------+------+------+------+------|
* | F11 | | | | | | | PrSc | ScLk | Paus | F12 |
* |------+------+------+------+------| |------+------+------+------+------|
- * | |QWERTY|COLEMK|DVORAK| | |RESET | | | | |
+ * | |QWERTY|COLEMK|DVORAK| | |QK_BOOT | | | | |
* `----------------------------------' `----------------------------------'
* ,--------------------. ,------,-------------.
* | | | | | | | |
@@ -152,8 +152,8 @@ 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_UP, KC_F9, KC_F10, \
- KC_F11, RESET, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_F12, \
- _______, QWERTY, COLEMAK, DVORAK, _______, RESET, _______, _______, _______, _______, \
+ KC_F11, QK_BOOT, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_F12, \
+ _______, QWERTY, COLEMAK, DVORAK, _______, QK_BOOT, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______ \
)
};
diff --git a/keyboards/maple_computing/minidox/rev1/config.h b/keyboards/maple_computing/minidox/rev1/config.h
index 734ca562fd..6867fee4b5 100644
--- a/keyboards/maple_computing/minidox/rev1/config.h
+++ b/keyboards/maple_computing/minidox/rev1/config.h
@@ -17,8 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DEVICE_VER 0x0001
-
// wiring of each half
#define MATRIX_ROW_PINS { B2, B6, B4, B5 }
#define MATRIX_COL_PINS { F4, D3, D2, D1, D4 }
diff --git a/keyboards/maple_computing/minidox/rev1/info.json b/keyboards/maple_computing/minidox/rev1/info.json
index 47ed14dab0..6a253e14a6 100644
--- a/keyboards/maple_computing/minidox/rev1/info.json
+++ b/keyboards/maple_computing/minidox/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MiniDox",
+ "manufacturer": "That-Canadian",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x5_3": {
"layout": [{"x":0, "y":0.375}, {"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.375}, {"x":0, "y":1.375}, {"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.375}, {"x":0, "y":2.375}, {"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.375}, {"x":2.5, "y":4.75}, {"x":3.5, "y":4.75}, {"x":4.5, "y":3.75, "h":2}, {"x":6.5, "y":3.75, "h":2}, {"x":7.5, "y":4.75}, {"x":8.5, "y":4.75}]
diff --git a/keyboards/maple_computing/the_ruler/config.h b/keyboards/maple_computing/the_ruler/config.h
index ec9687cc0b..f7ccfab276 100644
--- a/keyboards/maple_computing/the_ruler/config.h
+++ b/keyboards/maple_computing/the_ruler/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1337
-#define PRODUCT_ID 0x6007
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Maple Computing
-#define PRODUCT The PCB Ruler
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C7 }
#define MATRIX_COL_PINS { D6, D7, B4, B5, B6, C6}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/maple_computing/the_ruler/info.json b/keyboards/maple_computing/the_ruler/info.json
index 5f2b9fba8f..c0aa2b371b 100644
--- a/keyboards/maple_computing/the_ruler/info.json
+++ b/keyboards/maple_computing/the_ruler/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "The Ruler",
+ "manufacturer": "Maple Computing",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x1337",
+ "pid": "0x6007",
+ "device_version": "0.0.1"
+ },
"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, "w":2}]
diff --git a/keyboards/marksard/leftover30/config.h b/keyboards/marksard/leftover30/config.h
index 5fc1b156a2..0e23869558 100644
--- a/keyboards/marksard/leftover30/config.h
+++ b/keyboards/marksard/leftover30/config.h
@@ -19,13 +19,6 @@ 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 0xDFA8
-#define DEVICE_VER 0x0001
-#define MANUFACTURER marksard
-#define PRODUCT leftover30
-
/* Encoder */
#define ENCODERS_PAD_A { F4 }
#define ENCODERS_PAD_B { F5 }
@@ -47,7 +40,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, B2, F7, F6, B3, B1, D4, D0 }
#define MATRIX_COL_PINS { B5, B4, E6, D7, C6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/marksard/leftover30/info.json b/keyboards/marksard/leftover30/info.json
index 6ff164a90a..61f2a92251 100644
--- a/keyboards/marksard/leftover30/info.json
+++ b/keyboards/marksard/leftover30/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Leftover30",
+ "manufacturer": "marksard",
"url": "https://github.com/marksard/Keyboards",
"maintainer": "marksard",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xDFA8",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/marksard/rhymestone/info.json b/keyboards/marksard/rhymestone/info.json
deleted file mode 100644
index c10a45aa4b..0000000000
--- a/keyboards/marksard/rhymestone/info.json
+++ /dev/null
@@ -1,211 +0,0 @@
-{
- "keyboard_name": "Rhymestone",
- "url": "https://github.com/marksard/Keyboards",
- "maintainer": "marksard",
- "layouts": {
- "LAYOUT_ortho_4x10": {
- "layout": [
- {
- "label": "Q",
- "x": 0,
- "y": 0
- },
- {
- "label": "W",
- "x": 1,
- "y": 0
- },
- {
- "label": "E",
- "x": 2,
- "y": 0
- },
- {
- "label": "R",
- "x": 3,
- "y": 0
- },
- {
- "label": "T",
- "x": 4,
- "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": "A",
- "x": 0,
- "y": 1
- },
- {
- "label": "S",
- "x": 1,
- "y": 1
- },
- {
- "label": "D",
- "x": 2,
- "y": 1
- },
- {
- "label": "F",
- "x": 3,
- "y": 1
- },
- {
- "label": "G",
- "x": 4,
- "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": "Enter",
- "x": 10,
- "y": 1
- },
- {
- "label": "Z",
- "x": 0,
- "y": 2
- },
- {
- "label": "X",
- "x": 1,
- "y": 2
- },
- {
- "label": "C",
- "x": 2,
- "y": 2
- },
- {
- "label": "V",
- "x": 3,
- "y": 2
- },
- {
- "label": "B",
- "x": 4,
- "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": "Ctrl",
- "x": 0,
- "y": 3
- },
- {
- "label": "Win",
- "x": 1,
- "y": 3
- },
- {
- "label": "Alt",
- "x": 2,
- "y": 3
- },
- {
- "label": "Lower",
- "x": 3,
- "y": 3
- },
- {
- "label": "backspace",
- "x": 4,
- "y": 3
- },
- {
- "label": "space",
- "x": 6,
- "y": 3
- },
- {
- "label": "Upper",
- "x": 7,
- "y": 3
- },
- {
- "label": "Alt",
- "x": 8,
- "y": 3
- },
- {
- "label": "App",
- "x": 9,
- "y": 3
- },
- {
- "label": "Ctrl",
- "x": 10,
- "y": 3
- }
- ]
- }
- }
-}
diff --git a/keyboards/marksard/rhymestone/keymaps/switch_tester/keymap.c b/keyboards/marksard/rhymestone/keymaps/switch_tester/keymap.c
index 1d4e78af80..1012d63de6 100644
--- a/keyboards/marksard/rhymestone/keymaps/switch_tester/keymap.c
+++ b/keyboards/marksard/rhymestone/keymaps/switch_tester/keymap.c
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_ortho_4x10(
//,---------------------------------------------------------------------------------------------------.
- RESET, RGBRST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, RGBRST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
diff --git a/keyboards/marksard/rhymestone/rev1/config.h b/keyboards/marksard/rhymestone/rev1/config.h
index 4448e51268..6cee7a9a92 100644
--- a/keyboards/marksard/rhymestone/rev1/config.h
+++ b/keyboards/marksard/rhymestone/rev1/config.h
@@ -19,13 +19,6 @@ 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 0xDFA1
-#define DEVICE_VER 0x0020
-#define MANUFACTURER marksard
-#define PRODUCT Rhymestone
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 5
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/marksard/rhymestone/rev1/info.json b/keyboards/marksard/rhymestone/rev1/info.json
new file mode 100644
index 0000000000..ddce4923a4
--- /dev/null
+++ b/keyboards/marksard/rhymestone/rev1/info.json
@@ -0,0 +1,217 @@
+{
+ "keyboard_name": "Rhymestone",
+ "manufacturer": "marksard",
+ "url": "https://github.com/marksard/Keyboards",
+ "maintainer": "marksard",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xDFA1",
+ "device_version": "0.2.0"
+ },
+ "layouts": {
+ "LAYOUT_ortho_4x10": {
+ "layout": [
+ {
+ "label": "Q",
+ "x": 0,
+ "y": 0
+ },
+ {
+ "label": "W",
+ "x": 1,
+ "y": 0
+ },
+ {
+ "label": "E",
+ "x": 2,
+ "y": 0
+ },
+ {
+ "label": "R",
+ "x": 3,
+ "y": 0
+ },
+ {
+ "label": "T",
+ "x": 4,
+ "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": "A",
+ "x": 0,
+ "y": 1
+ },
+ {
+ "label": "S",
+ "x": 1,
+ "y": 1
+ },
+ {
+ "label": "D",
+ "x": 2,
+ "y": 1
+ },
+ {
+ "label": "F",
+ "x": 3,
+ "y": 1
+ },
+ {
+ "label": "G",
+ "x": 4,
+ "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": "Enter",
+ "x": 10,
+ "y": 1
+ },
+ {
+ "label": "Z",
+ "x": 0,
+ "y": 2
+ },
+ {
+ "label": "X",
+ "x": 1,
+ "y": 2
+ },
+ {
+ "label": "C",
+ "x": 2,
+ "y": 2
+ },
+ {
+ "label": "V",
+ "x": 3,
+ "y": 2
+ },
+ {
+ "label": "B",
+ "x": 4,
+ "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": "Ctrl",
+ "x": 0,
+ "y": 3
+ },
+ {
+ "label": "Win",
+ "x": 1,
+ "y": 3
+ },
+ {
+ "label": "Alt",
+ "x": 2,
+ "y": 3
+ },
+ {
+ "label": "Lower",
+ "x": 3,
+ "y": 3
+ },
+ {
+ "label": "backspace",
+ "x": 4,
+ "y": 3
+ },
+ {
+ "label": "space",
+ "x": 6,
+ "y": 3
+ },
+ {
+ "label": "Upper",
+ "x": 7,
+ "y": 3
+ },
+ {
+ "label": "Alt",
+ "x": 8,
+ "y": 3
+ },
+ {
+ "label": "App",
+ "x": 9,
+ "y": 3
+ },
+ {
+ "label": "Ctrl",
+ "x": 10,
+ "y": 3
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/marksard/treadstone32/info.json b/keyboards/marksard/treadstone32/info.json
index d9c1069b38..81728e0957 100644
--- a/keyboards/marksard/treadstone32/info.json
+++ b/keyboards/marksard/treadstone32/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Treadstone32",
+ "manufacturer": "marksard",
"url": "https://github.com/marksard/Keyboards",
"maintainer": "marksard",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xDFA5"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/marksard/treadstone32/keymaps/like_jis/keymap.c b/keyboards/marksard/treadstone32/keymaps/like_jis/keymap.c
index 49c1870fa9..4f7465986b 100644
--- a/keyboards/marksard/treadstone32/keymaps/like_jis/keymap.c
+++ b/keyboards/marksard/treadstone32/keymaps/like_jis/keymap.c
@@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
//,---------------------------------------------------------------------------------------------------.
- RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_PSCR,
+ QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_PSCR,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_NLCK,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
diff --git a/keyboards/marksard/treadstone32/lite/config.h b/keyboards/marksard/treadstone32/lite/config.h
index 90db1a7895..e640fdb3c1 100644
--- a/keyboards/marksard/treadstone32/lite/config.h
+++ b/keyboards/marksard/treadstone32/lite/config.h
@@ -19,13 +19,6 @@ 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 0xDFA5
-#define DEVICE_VER 0x0015
-#define MANUFACTURER marksard
-#define PRODUCT treadstone32 lite
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 5
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, B2, F7, F6, B3, B1, F4, F5 }
#define MATRIX_COL_PINS { B5, B4, E6, D7, C6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/marksard/treadstone32/lite/info.json b/keyboards/marksard/treadstone32/lite/info.json
new file mode 100644
index 0000000000..2d66455900
--- /dev/null
+++ b/keyboards/marksard/treadstone32/lite/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "treadstone32 lite",
+ "usb": {
+ "device_version": "0.1.5"
+ }
+}
diff --git a/keyboards/marksard/treadstone32/rev1/config.h b/keyboards/marksard/treadstone32/rev1/config.h
index 3f21ad59c5..ae27cdaf9e 100644
--- a/keyboards/marksard/treadstone32/rev1/config.h
+++ b/keyboards/marksard/treadstone32/rev1/config.h
@@ -19,13 +19,6 @@ 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 0xDFA5
-#define DEVICE_VER 0x0010
-#define MANUFACTURER marksard
-#define PRODUCT treadstone32
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 5
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F1, F0, E6, B2, B4, D7, D6, D4 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, C7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/marksard/treadstone32/rev1/info.json b/keyboards/marksard/treadstone32/rev1/info.json
new file mode 100644
index 0000000000..9a2ae10a50
--- /dev/null
+++ b/keyboards/marksard/treadstone32/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "treadstone32",
+ "usb": {
+ "device_version": "0.1.0"
+ }
+}
diff --git a/keyboards/marksard/treadstone48/keymaps/like_jis/keymap.c b/keyboards/marksard/treadstone48/keymaps/like_jis/keymap.c
index 1e90a2416e..c8dd24ef5d 100644
--- a/keyboards/marksard/treadstone48/keymaps/like_jis/keymap.c
+++ b/keyboards/marksard/treadstone48/keymaps/like_jis/keymap.c
@@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_base( \
//,--------------------------------------------------------------------------------------------------------------------.
- XXXXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXXXX,\
+ XXXXXXX, QK_BOOT, 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,\
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/marksard/treadstone48/rev1/config.h b/keyboards/marksard/treadstone48/rev1/config.h
index 68d1191156..0666e18cad 100644
--- a/keyboards/marksard/treadstone48/rev1/config.h
+++ b/keyboards/marksard/treadstone48/rev1/config.h
@@ -19,13 +19,6 @@ 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 0xDFA3
-#define DEVICE_VER 0x0010
-#define MANUFACTURER marksard
-#define PRODUCT treadstone48
-
/* key matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/marksard/treadstone48/rev1/info.json b/keyboards/marksard/treadstone48/rev1/info.json
index 8b90429d00..9182a3e9cf 100644
--- a/keyboards/marksard/treadstone48/rev1/info.json
+++ b/keyboards/marksard/treadstone48/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Treadstone48",
+ "manufacturer": "marksard",
"url": "https://github.com/marksard/Keyboards",
"maintainer": "marksard",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xDFA3",
+ "device_version": "0.1.0"
+ },
"layouts": {
"LAYOUT_base": {
"layout": [
diff --git a/keyboards/marksard/treadstone48/rev1/keymaps/like_jis_rs/keymap.c b/keyboards/marksard/treadstone48/rev1/keymaps/like_jis_rs/keymap.c
index e1f0835881..0fa0d9a8a9 100644
--- a/keyboards/marksard/treadstone48/rev1/keymaps/like_jis_rs/keymap.c
+++ b/keyboards/marksard/treadstone48/rev1/keymaps/like_jis_rs/keymap.c
@@ -132,7 +132,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_rs( \
// Treadstone48 Rhymestone
//,--------------------------------------------------------------------------------------------------------------------. --------------------------------------------.
- XXXXXXX, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
+ XXXXXXX, QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+-----------------| --------+--------+--------+--------+--------|
XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,\
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------+--------| --------+--------+--------+--------+--------|
diff --git a/keyboards/marksard/treadstone48/rev2/config.h b/keyboards/marksard/treadstone48/rev2/config.h
index e0353925be..b6d8269d88 100644
--- a/keyboards/marksard/treadstone48/rev2/config.h
+++ b/keyboards/marksard/treadstone48/rev2/config.h
@@ -19,13 +19,6 @@ 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 0xDFA3
-#define DEVICE_VER 0x0020
-#define MANUFACTURER marksard
-#define PRODUCT treadstone48
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/marksard/treadstone48/rev2/info.json b/keyboards/marksard/treadstone48/rev2/info.json
index 73527155e8..37c513e24e 100644
--- a/keyboards/marksard/treadstone48/rev2/info.json
+++ b/keyboards/marksard/treadstone48/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Treadstone48",
+ "manufacturer": "marksard",
"url": "https://github.com/marksard/Keyboards",
"maintainer": "marksard",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xDFA3",
+ "device_version": "0.2.0"
+ },
"layouts": {
"LAYOUT_base": {
"layout": [
diff --git a/keyboards/massdrop/alt/config.h b/keyboards/massdrop/alt/config.h
index 2ab9c26d2c..2a3b5b3311 100644
--- a/keyboards/massdrop/alt/config.h
+++ b/keyboards/massdrop/alt/config.h
@@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEED3
-#define DEVICE_VER 0x0101
-
#define MANUFACTURER "Massdrop Inc."
#define PRODUCT "ALT Keyboard"
#define SERIAL_NUM "Unavailable"
@@ -35,7 +31,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { A00, A01, A02, A03, A04 }
#define MATRIX_COL_PINS { B04, B05, B06, B07, B08, B09, B10, B11, B12, B13, A05, A06, A07, A10, A11 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/massdrop/alt/info.json b/keyboards/massdrop/alt/info.json
index 9a820661bc..909ca8904a 100644
--- a/keyboards/massdrop/alt/info.json
+++ b/keyboards/massdrop/alt/info.json
@@ -2,6 +2,11 @@
"keyboard_name": "ALT",
"url": "https://www.massdrop.com/buy/massdrop-alt-mechanical-keyboard",
"maintainer": "Massdrop",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEED3",
+ "device_version": "1.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/massdrop/alt/keymaps/b_/config.h b/keyboards/massdrop/alt/keymaps/b_/config.h
index ca4424bd3f..b7112c9ea7 100644
--- a/keyboards/massdrop/alt/keymaps/b_/config.h
+++ b/keyboards/massdrop/alt/keymaps/b_/config.h
@@ -23,7 +23,6 @@
// #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
diff --git a/keyboards/massdrop/alt/keymaps/b_/keymap.c b/keyboards/massdrop/alt/keymaps/b_/keymap.c
index 8285d5108f..7fe909c0df 100644
--- a/keyboards/massdrop/alt/keymaps/b_/keymap.c
+++ b/keyboards/massdrop/alt/keymaps/b_/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, QK_BOOT, 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,
diff --git a/keyboards/massdrop/alt/keymaps/charlesrocket/config.h b/keyboards/massdrop/alt/keymaps/charlesrocket/config.h
new file mode 100644
index 0000000000..90b4a27f33
--- /dev/null
+++ b/keyboards/massdrop/alt/keymaps/charlesrocket/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2022 charlesrocket
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 UNICODE_SELECTED_MODES UC_BSD, UC_MAC, UC_LNX
diff --git a/keyboards/massdrop/alt/keymaps/charlesrocket/keymap.c b/keyboards/massdrop/alt/keymaps/charlesrocket/keymap.c
index bd11bad72f..51799ed089 100644
--- a/keyboards/massdrop/alt/keymaps/charlesrocket/keymap.c
+++ b/keyboards/massdrop/alt/keymaps/charlesrocket/keymap.c
@@ -17,43 +17,207 @@
#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
+ L_BRI = SAFE_RANGE, //LED Brightness Increase //Working
+ L_BRD, //LED Brightness Decrease //Working
+ L_EDG_I, //LED Edge Brightness Increase
+ L_EDG_D, //LED Edge Brightness Decrease
+ L_EDG_M, //LED Edge lighting mode
+ L_PTN, //LED Pattern Select Next //Working
+ L_PTP, //LED Pattern Select Previous //Working
+ L_PSI, //LED Pattern Speed Increase //Working
+ L_PSD, //LED Pattern Speed Decrease //Working
+ L_RATIOD,
+ L_RATIOI,
+ L_T_MD, //LED Toggle Mode //Working
+ L_T_ONF, //LED Toggle On / Off //Broken
+ L_ON, //LED On //Broken
+ L_OFF, //LED Off //Broken
+ L_T_BR, //LED Toggle Breath Effect //Working
+ L_T_PTD, //LED Toggle Scrolling Pattern Direction //Working
+ U_T_AGCR, //USB Toggle Automatic GCR control //Working
+ DBG_TOG, //DEBUG Toggle On / Off //
+ DBG_MTRX, //DEBUG Toggle Matrix Prints //
+ DBG_KBD, //DEBUG Toggle Keyboard Prints //
+ DBG_MOU, //DEBUG Toggle Mouse Prints //
+ DBG_FAC, //DEBUG Factory light testing (All on white)
+ MD_BOOT //Restart into bootloader after hold timeout //Working
};
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_65_ansi_blocker(
+ [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
),
- [1] = LAYOUT_65_ansi_blocker(
+ [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,
- _______, 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,
- _______, LAG_SWP, LAG_NRM, _______, KC_APP, _______, KC_HOME, KC_PGDN, KC_END
+ 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,
+ MO(2), _______, _______, DBG_FAC, KC_APP, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, EEP_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, UC_RMOD, UC_MOD, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, LAG_SWP, LAG_NRM, _______, _______, TG(3), _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ XP(0,1), XP(2,3), XP(4,5), XP(6,7), XP(8,9), XP(10,11), XP(12,13), XP(14,15), XP(16,17), XP(18,19), XP(20,21), XP(22,23), XP(24,25), _______, _______,
+ _______, KC_QUES, XP(27,28), XP(29,31), X(32), XP(33,34), X(35), X(36), XP(37,38), XP(39,40), XP(41,42), XP(43,44), XP(45,46), _______, _______,
+ _______, XP(47,48), X(49), X(50), KC_UNDS, XP(52,5), XP(53,54), XP(55,56), KC_QUOT, XP(59,60), XP(61,62), XP(63,64), _______, _______,
+ _______, XP(65,66), X(67), XP(68,69), X(70), X(71), X(72), X(73), KC_PIPE, XP(75,76), X(77), XP(78,79), _______, _______,
+ _______, _______, _______, _______, _______, TG(3), _______, _______, _______
),
};
-
#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;
-
+ static uint8_t scroll_effect = 0;
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");
+ case L_BRI ... U_T_AGCR:
+ if (record->event.pressed) {
+ md_led_changed();
+ }
+ break;
+ }
+ switch (keycode) {
+ case L_BRI:
+ if (record->event.pressed) {
+ if (LED_GCR_STEP > LED_GCR_MAX - gcr_desired) gcr_desired = LED_GCR_MAX;
+ else gcr_desired += LED_GCR_STEP;
+ if (led_animation_breathing) gcr_breathe = gcr_desired;
+ }
+ return false;
+ case L_BRD:
+ if (record->event.pressed) {
+ if (LED_GCR_STEP > gcr_desired) gcr_desired = 0;
+ else gcr_desired -= LED_GCR_STEP;
+ if (led_animation_breathing) gcr_breathe = gcr_desired;
+ }
+ return false;
+ case L_EDG_M:
+ if (record->event.pressed) {
+ led_edge_mode++;
+ if (led_edge_mode > LED_EDGE_MODE_MAX) {
+ led_edge_mode = LED_EDGE_MODE_ALL;
+ }
+ }
+ return false;
+ case L_EDG_I:
+ if (record->event.pressed) {
+ led_edge_brightness += 0.1;
+ if (led_edge_brightness > 1) { led_edge_brightness = 1; }
+ }
+ return false;
+ case L_EDG_D:
+ if (record->event.pressed) {
+ led_edge_brightness -= 0.1;
+ if (led_edge_brightness < 0) { led_edge_brightness = 0; }
+ }
+ return false;
+ case L_RATIOI:
+ if (record->event.pressed) {
+ led_ratio_brightness += 0.2;
+ if (led_ratio_brightness > 2.0) { led_ratio_brightness = 2.0; }
+ }
+ return false;
+ case L_RATIOD:
+ if (record->event.pressed) {
+ led_ratio_brightness -= 0.2;
+ if (led_ratio_brightness < 0.0) { led_ratio_brightness = 0.0; }
+ }
+ return false;
+ case L_PTN:
+ if (record->event.pressed) {
+ if (led_animation_id == led_setups_count - 1) led_animation_id = 0;
+ else led_animation_id++;
+ }
+ return false;
+ case L_PTP:
+ if (record->event.pressed) {
+ if (led_animation_id == 0) led_animation_id = led_setups_count - 1;
+ else led_animation_id--;
+ }
+ return false;
+ case L_PSI:
+ if (record->event.pressed) {
+ led_animation_speed += ANIMATION_SPEED_STEP;
+ }
+ return false;
+ case L_PSD:
+ if (record->event.pressed) {
+ led_animation_speed -= ANIMATION_SPEED_STEP;
+ if (led_animation_speed < 0) led_animation_speed = 0;
+ }
+ return false;
+ case L_T_MD:
+ if (record->event.pressed) {
+ led_lighting_mode++;
+ if (led_lighting_mode > LED_MODE_MAX_INDEX) led_lighting_mode = LED_MODE_NORMAL;
+ }
+ return false;
+ case L_T_ONF:
+ if (record->event.pressed) {
+ led_enabled = !led_enabled;
+ I2C3733_Control_Set(led_enabled);
+ }
+ return false;
+ case L_ON:
+ if (record->event.pressed) {
+ led_enabled = 1;
+ I2C3733_Control_Set(led_enabled);
+ }
+ return false;
+ case L_OFF:
+ if (record->event.pressed) {
+ led_enabled = 0;
+ I2C3733_Control_Set(led_enabled);
+ }
+ return false;
+ case L_T_BR:
+ if (record->event.pressed) {
+ led_animation_breathing = !led_animation_breathing;
+ if (led_animation_breathing) {
+ gcr_breathe = gcr_desired;
+ led_animation_breathe_cur = BREATHE_MIN_STEP;
+ breathe_dir = 1;
+ }
+ }
+ return false;
+ case L_T_PTD:
+ if (record->event.pressed) {
+ scroll_effect++;
+ if (scroll_effect == 1) { //Patterns with scroll move horizontal (Right to left)
+ led_animation_direction = 1;
+ led_animation_orientation = 0;
+ led_animation_circular = 0;
+ } else if (scroll_effect == 2) { //Patterns with scroll move vertical (Top to bottom)
+ led_animation_direction = 1;
+ led_animation_orientation = 1;
+ led_animation_circular = 0;
+ } else if (scroll_effect == 3) { //Patterns with scroll move vertical (Bottom to top)
+ led_animation_direction = 0;
+ led_animation_orientation = 1;
+ led_animation_circular = 0;
+ } else if (scroll_effect == 4) { //Patterns with scroll explode from center
+ led_animation_direction = 0;
+ led_animation_orientation = 0;
+ led_animation_circular = 1;
+ } else if (scroll_effect == 5) { //Patterns with scroll implode on center
+ led_animation_direction = 1;
+ led_animation_orientation = 0;
+ led_animation_circular = 1;
+ } else { //Patterns with scroll move horizontal (Left to right)
+ scroll_effect = 0;
+ led_animation_direction = 0;
+ led_animation_orientation = 0;
+ led_animation_circular = 0;
+ }
}
return false;
case U_T_AGCR:
@@ -61,6 +225,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
TOGGLE_FLAG_AND_PRINT(usb_gcr_auto, "USB GCR auto mode");
}
return false;
+ case DBG_FAC:
+ if (record->event.pressed && MODS_SHIFT && MODS_CTRL) {
+ led_lighting_mode = LED_MODE_NORMAL;
+ led_edge_brightness = 1;
+ led_edge_mode = LED_EDGE_MODE_ALL;
+ led_animation_breathing = 0;
+ led_animation_id = 7; //led_programs.c led_setups leds_white index
+ gcr_desired = LED_GCR_MAX;
+ led_enabled = 1;
+ I2C3733_Control_Set(led_enabled);
+ }
+ return false;
case DBG_TOG:
if (record->event.pressed) {
TOGGLE_FLAG_AND_PRINT(debug_enable, "Debug mode");
@@ -90,33 +266,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
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;
}
}
+ led_instruction_t led_instructions[] = {
+ { .flags = LED_FLAG_USE_ROTATE_PATTERN },
+ { .flags = LED_FLAG_MATCH_ID | LED_FLAG_MATCH_LAYER | LED_FLAG_USE_RGB, .id0 = 0x1, .b = 253, .layer = 1 },
+ { .flags = LED_FLAG_MATCH_ID | LED_FLAG_MATCH_LAYER | LED_FLAG_USE_RGB, .id0 = 0x1, .r = 253, .b = 253, .layer = 2 },
+ { .flags = LED_FLAG_MATCH_LAYER | LED_FLAG_USE_PATTERN, .pattern_id = 8, .layer = 3 },
+ { .end = 1 }
+ };
diff --git a/keyboards/massdrop/alt/keymaps/charlesrocket/rules.mk b/keyboards/massdrop/alt/keymaps/charlesrocket/rules.mk
new file mode 100644
index 0000000000..d684e3a615
--- /dev/null
+++ b/keyboards/massdrop/alt/keymaps/charlesrocket/rules.mk
@@ -0,0 +1,3 @@
+OPT_DEFS += -DUSE_MASSDROP_CONFIGURATOR
+UNICODEMAP_ENABLE = yes
+APL_ENABLE = yes
diff --git a/keyboards/massdrop/alt/keymaps/pregame/config.h b/keyboards/massdrop/alt/keymaps/pregame/config.h
index 19fc4fed34..936951e34a 100644
--- a/keyboards/massdrop/alt/keymaps/pregame/config.h
+++ b/keyboards/massdrop/alt/keymaps/pregame/config.h
@@ -36,7 +36,6 @@
// #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
diff --git a/keyboards/massdrop/alt/keymaps/pregame/rules.mk b/keyboards/massdrop/alt/keymaps/pregame/rules.mk
index 184405662a..5981633f7c 100644
--- a/keyboards/massdrop/alt/keymaps/pregame/rules.mk
+++ b/keyboards/massdrop/alt/keymaps/pregame/rules.mk
@@ -8,7 +8,6 @@ DYNAMIC_MACRO_ENABLE = no # Dynamic macro recording and play
MOUSEKEY_ENABLE = no # Enable mouse control keycodes. Increases firmware size.
TAP_DANCE_ENABLE = no # Enable tap dance keys
CONSOLE_ENABLE = no # Enable debugging console. Increases firmware size.
-TERMINAL_ENABLE = no
EXTRAKEY_ENABLE = yes # Audio control and System control
# RAW_ENABLE = yes # Raw HID has not yet been implemented for this keyboard
# COMBO_ENABLE # Key combo feature
diff --git a/keyboards/massdrop/alt/keymaps/via/config.h b/keyboards/massdrop/alt/keymaps/via/config.h
new file mode 100644
index 0000000000..6d70c52cd0
--- /dev/null
+++ b/keyboards/massdrop/alt/keymaps/via/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2022 SlyCedix (slycedix@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
+
+// Enable additional LED functionality
+#define USB_LED_INDICATOR_ENABLE
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/massdrop/alt/keymaps/via/keymap.c b/keyboards/massdrop/alt/keymaps/via/keymap.c
index fd1bf3c0b0..f08e3715dd 100644
--- a/keyboards/massdrop/alt/keymaps/via/keymap.c
+++ b/keyboards/massdrop/alt/keymaps/via/keymap.c
@@ -13,10 +13,11 @@
* You should have received 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_AUTO = USER00, //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
@@ -41,11 +42,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, 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
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_65_ansi_blocker(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/massdrop/alt/keymaps/via/readme.md b/keyboards/massdrop/alt/keymaps/via/readme.md
new file mode 100644
index 0000000000..1315fb085d
--- /dev/null
+++ b/keyboards/massdrop/alt/keymaps/via/readme.md
@@ -0,0 +1,24 @@
+# VIA keymap for the Drop Alt Keyboard
+## *LED Modes:*
+Enables all RGB Matrix animation modes available in QMK, all of which are selectable through VIA or using the LED mode keys
+
+```c
+#define USB_LED_INDICATOR_ENABLE
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
+```
+
+## *User Keycodes:*
+All keyboard specific keycodes are defined in the user_keycodes space, allowing for them to be placed on your keyboard through VIA
+
+```c
+enum alt_keycodes {
+ U_T_AUTO = USER00, //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
+};
+``` \ No newline at end of file
diff --git a/keyboards/massdrop/alt/keymaps/via/rules.mk b/keyboards/massdrop/alt/keymaps/via/rules.mk
index 036bd6d1c3..7127983b80 100644
--- a/keyboards/massdrop/alt/keymaps/via/rules.mk
+++ b/keyboards/massdrop/alt/keymaps/via/rules.mk
@@ -1 +1,6 @@
-VIA_ENABLE = yes \ No newline at end of file
+VIA_ENABLE = yes
+
+# Uncomment the following to enable specific features (Increases firmware size)
+# MOUSEKEY_ENABLE = yes # Allow the use of keys
+# CONSOLE_ENABLE = yes # Console for debug
+# COMMAND_ENABLE = yes # Commands for debug and configuration \ No newline at end of file
diff --git a/keyboards/massdrop/alt/keymaps/xulkal/keymap.c b/keyboards/massdrop/alt/keymaps/xulkal/keymap.c
index 9fe1c8643a..3863086150 100644
--- a/keyboards/massdrop/alt/keymaps/xulkal/keymap.c
+++ b/keyboards/massdrop/alt/keymaps/xulkal/keymap.c
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT(
_______, RGB_RMOD,RGB_MOD, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, RESET, QWERTY, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, _______, \
+ RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, QK_BOOT, QWERTY, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, _______, \
RGB_SPD, RGB_SAD, RGB_VAD, RGB_HUD, RGBRST, GAME, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/massdrop/ctrl/config.h b/keyboards/massdrop/ctrl/config.h
index 15abcaa674..8b8625e700 100644
--- a/keyboards/massdrop/ctrl/config.h
+++ b/keyboards/massdrop/ctrl/config.h
@@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEED2
-#define DEVICE_VER 0x0101
-
#define MANUFACTURER "Massdrop Inc."
#define PRODUCT "CTRL Keyboard"
#define SERIAL_NUM "Unavailable"
@@ -34,7 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B04, B05, B06, B07, B08, B09, A10, A11, B10, B11, B12 }
#define MATRIX_COL_PINS { A00, A01, A02, A03, A04, A05, A06, A07 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/massdrop/ctrl/info.json b/keyboards/massdrop/ctrl/info.json
index 00d74be021..7d0810c630 100644
--- a/keyboards/massdrop/ctrl/info.json
+++ b/keyboards/massdrop/ctrl/info.json
@@ -2,6 +2,11 @@
"keyboard_name": "CTRL",
"url": "https://www.massdrop.com/buy/massdrop-ctrl-mechanical-keyboard",
"maintainer": "Massdrop",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEED2",
+ "device_version": "1.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/massdrop/ctrl/keymaps/endgame/config.h b/keyboards/massdrop/ctrl/keymaps/endgame/config.h
index 4850d7eed2..d0bbfd2103 100644
--- a/keyboards/massdrop/ctrl/keymaps/endgame/config.h
+++ b/keyboards/massdrop/ctrl/keymaps/endgame/config.h
@@ -20,7 +20,6 @@
#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
diff --git a/keyboards/massdrop/ctrl/keymaps/endgame/rules.mk b/keyboards/massdrop/ctrl/keymaps/endgame/rules.mk
index 9502c242dd..c4fab8ad53 100644
--- a/keyboards/massdrop/ctrl/keymaps/endgame/rules.mk
+++ b/keyboards/massdrop/ctrl/keymaps/endgame/rules.mk
@@ -7,7 +7,6 @@ MOUSEKEY_ENABLE = yes # Enable mouse control keycodes. Increases firmware size
TAP_DANCE_ENABLE = yes # Enable tap dance keys
CONSOLE_ENABLE = yes # Enable debugging console. Increases firmware size.
SRC += config_led.c # Used to add files to the compilation/linking list.
-TERMINAL_ENABLE = yes
EXTRAKEY_ENABLE = yes # Audio control and System control
# RAW_ENABLE = yes # Raw HID has not yet been implemented for this keyboard
# COMBO_ENABLE # Key combo feature
diff --git a/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h b/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h
index 81e7764a9e..692faa35a2 100644
--- a/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h
+++ b/keyboards/massdrop/ctrl/keymaps/matthewrobo/config.h
@@ -37,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// #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
diff --git a/keyboards/massdrop/ctrl/keymaps/matthewrobo/rules.mk b/keyboards/massdrop/ctrl/keymaps/matthewrobo/rules.mk
index e834404e29..4bb43f525b 100644
--- a/keyboards/massdrop/ctrl/keymaps/matthewrobo/rules.mk
+++ b/keyboards/massdrop/ctrl/keymaps/matthewrobo/rules.mk
@@ -7,7 +7,6 @@ MOUSEKEY_ENABLE = no # Enable mouse control keycodes. Increases firmware size.
TAP_DANCE_ENABLE = no # Enable tap dance keys
CONSOLE_ENABLE = no # Enable debugging console. Increases firmware size.
SRC += config_led.c # Used to add files to the compilation/linking list.
-TERMINAL_ENABLE = no
EXTRAKEY_ENABLE = yes # Audio control and System control
#RAW_ENABLE = yes #Raw HID has not yet been implemented for this keyboard
#COMBO_ENABLE #Key combo feature
diff --git a/keyboards/massdrop/ctrl/keymaps/via/config.h b/keyboards/massdrop/ctrl/keymaps/via/config.h
new file mode 100644
index 0000000000..c80e648221
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/via/config.h
@@ -0,0 +1,22 @@
+/* Copyright 2022 dsluo (me@dsluo.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
+
+// Enable additional LED functionality
+#define USB_LED_INDICATOR_ENABLE
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES
diff --git a/keyboards/massdrop/ctrl/keymaps/via/keymap.c b/keyboards/massdrop/ctrl/keymaps/via/keymap.c
new file mode 100644
index 0000000000..294ce2e772
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/via/keymap.c
@@ -0,0 +1,140 @@
+/* Made by InonL (@InonL), June 2022
+ * Based on the default keymap, added two blank layers for VIA
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 ctrl_keycodes {
+ U_T_AUTO = USER00, //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(
+ KC_ESC, KC_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, DBG_TOG, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
+#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;
+
+ 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/ctrl/keymaps/via/rules.mk b/keyboards/massdrop/ctrl/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/massdrop/ctrl/keymaps/xanimos/config.h b/keyboards/massdrop/ctrl/keymaps/xanimos/config.h
index 37987340ce..f1cbd5f3b0 100644
--- a/keyboards/massdrop/ctrl/keymaps/xanimos/config.h
+++ b/keyboards/massdrop/ctrl/keymaps/xanimos/config.h
@@ -36,7 +36,6 @@
#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
diff --git a/keyboards/massdrop/ctrl/keymaps/xanimos/rules.mk b/keyboards/massdrop/ctrl/keymaps/xanimos/rules.mk
index 43a312ce4e..2913eff83b 100644
--- a/keyboards/massdrop/ctrl/keymaps/xanimos/rules.mk
+++ b/keyboards/massdrop/ctrl/keymaps/xanimos/rules.mk
@@ -8,7 +8,6 @@ TAP_DANCE_ENABLE = yes # Enable tap dance keys
CONSOLE_ENABLE = no # Enable debugging console. Increases firmware size.
SRC += config_led.c # Used to add files to the compilation/linking list.
EXTRAKEY_ENABLE = yes # Audio control and System control
-TERMINAL_ENABLE = no
# RAW_ENABLE = yes # Raw HID has not yet been implemented for this keyboard
# COMBO_ENABLE # Key combo feature
# LEADER_ENABLE # Enable leader key chording
diff --git a/keyboards/massdrop/ctrl/keymaps/xulkal/keymap.c b/keyboards/massdrop/ctrl/keymaps/xulkal/keymap.c
index debfa3b478..9de2947cc9 100644
--- a/keyboards/massdrop/ctrl/keymaps/xulkal/keymap.c
+++ b/keyboards/massdrop/ctrl/keymaps/xulkal/keymap.c
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, _______, \
_______, RGB_RMOD,RGB_MOD, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MSTP, KC_VOLU, \
- RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, RESET, QWERTY, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
+ RGB_SPI, RGB_SAI, RGB_VAI, RGB_HUI, QK_BOOT, QWERTY, _______, U_T_AUTO,U_T_AGCR,_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
RGB_SPD, RGB_SAD, RGB_VAD, RGB_HUD, RGBRST, GAME, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, TG_NKRO, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/massdrop/thekey/config.h b/keyboards/massdrop/thekey/config.h
index a195628203..c9608fab7a 100644
--- a/keyboards/massdrop/thekey/config.h
+++ b/keyboards/massdrop/thekey/config.h
@@ -18,13 +18,6 @@
#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
diff --git a/keyboards/massdrop/thekey/info.json b/keyboards/massdrop/thekey/info.json
index ac4c17e8c8..437b5d7409 100644
--- a/keyboards/massdrop/thekey/info.json
+++ b/keyboards/massdrop/thekey/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "The Key",
+ "manufacturer": "Drop",
"url": "https://drop.com/buy/stack-overflow-the-key-macropad",
"maintainer": "massdrop",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/massdrop/thekey/keymaps/default-bepo/keymap.c b/keyboards/massdrop/thekey/keymaps/default-bepo/keymap.c
new file mode 100644
index 0000000000..b9d419a086
--- /dev/null
+++ b/keyboards/massdrop/thekey/keymaps/default-bepo/keymap.c
@@ -0,0 +1,24 @@
+/* Copyright 2022 Benjamin Collet <benjamin.collet@protonmail.ch>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_bepo.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(KC_LCTL, BP_C, BP_V),
+
+};
diff --git a/keyboards/massdrop/thekey/keymaps/url-copy-paste-bepo/keymap.c b/keyboards/massdrop/thekey/keymaps/url-copy-paste-bepo/keymap.c
new file mode 100644
index 0000000000..feafa02ac2
--- /dev/null
+++ b/keyboards/massdrop/thekey/keymaps/url-copy-paste-bepo/keymap.c
@@ -0,0 +1,41 @@
+/* Copyright 2022 Benjamin Collet <benjamin.collet@protonmail.ch>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "sendstring_bepo.h"
+
+enum custom_keycodes {
+ TK_URL = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(TK_URL, C(BP_C), C(BP_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_v2/config.h b/keyboards/massdrop/thekey_v2/config.h
new file mode 100644
index 0000000000..f7abf7bc82
--- /dev/null
+++ b/keyboards/massdrop/thekey_v2/config.h
@@ -0,0 +1,43 @@
+/* Copyright 2022 Jason Wihardja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 3
+
+/*
+ * Keyboard Matrix Assignments
+ */
+#define MATRIX_ROW_PINS { D4 }
+#define MATRIX_COL_PINS { D2, D1, D0 }
+
+#define DIODE_DIRECTION ROW2COL
+
+#define RGB_DI_PIN B1
+#define RGBLED_NUM 5
+#define RGBLIGHT_LED_MAP {4, 0, 1, 2, 3}
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 10
+#define RGBLIGHT_VAL_STEP 15
+#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_LAYERS /* Enable lighting layers */
+#define RGBLIGHT_LAYER_BLINK /* Enable lighting layer blink */
diff --git a/keyboards/massdrop/thekey_v2/info.json b/keyboards/massdrop/thekey_v2/info.json
new file mode 100644
index 0000000000..a808f37637
--- /dev/null
+++ b/keyboards/massdrop/thekey_v2/info.json
@@ -0,0 +1,20 @@
+{
+ "keyboard_name": "The Key V2",
+ "manufacturer": "Drop",
+ "url": "https://drop.com/buy/stack-overflow-the-key-v2-macropad",
+ "maintainer": "massdrop",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.2"
+ },
+ "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_v2/keymaps/default-macos/keymap.c b/keyboards/massdrop/thekey_v2/keymaps/default-macos/keymap.c
new file mode 100644
index 0000000000..fb45d5e224
--- /dev/null
+++ b/keyboards/massdrop/thekey_v2/keymaps/default-macos/keymap.c
@@ -0,0 +1,23 @@
+/* Copyright 2022 Jason Wihardja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_v2/keymaps/default/keymap.c b/keyboards/massdrop/thekey_v2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..5e1de6068b
--- /dev/null
+++ b/keyboards/massdrop/thekey_v2/keymaps/default/keymap.c
@@ -0,0 +1,23 @@
+/* Copyright 2022 Jason Wihardja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_v2/keymaps/rgb-control-macos/keymap.c b/keyboards/massdrop/thekey_v2/keymaps/rgb-control-macos/keymap.c
new file mode 100644
index 0000000000..f3699e752f
--- /dev/null
+++ b/keyboards/massdrop/thekey_v2/keymaps/rgb-control-macos/keymap.c
@@ -0,0 +1,109 @@
+/* Copyright 2022 Jason Wihardja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 {
+ LAYER_SWITCH = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Default */
+ [0] = LAYOUT(LAYER_SWITCH, G(KC_C), G(KC_V)),
+
+ /* RGB Toggle + Mode Change */
+ [1] = LAYOUT(LAYER_SWITCH, RGB_TOG, RGB_MOD),
+
+ /* RGB Brightness */
+ [2] = LAYOUT(LAYER_SWITCH, RGB_VAD, RGB_VAI),
+
+ /* RGB Hue */
+ [3] = LAYOUT(LAYER_SWITCH, RGB_HUD, RGB_HUI),
+
+ /* RGB Saturation */
+ [4] = LAYOUT(LAYER_SWITCH, RGB_SAD, RGB_SAI),
+
+};
+
+/* Lighting layers */
+
+const rgblight_segment_t PROGMEM layer_indicator_0[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_WHITE},
+ {1, 4, HSV_OFF}
+);
+
+const rgblight_segment_t PROGMEM layer_indicator_1[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_OFF},
+ {1, 1, HSV_WHITE},
+ {2, 3, HSV_OFF}
+);
+
+const rgblight_segment_t PROGMEM layer_indicator_2[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 2, HSV_OFF},
+ {2, 1, HSV_WHITE},
+ {3, 2, HSV_OFF}
+);
+
+const rgblight_segment_t PROGMEM layer_indicator_3[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 3, HSV_OFF},
+ {3, 1, HSV_WHITE},
+ {4, 1, HSV_OFF}
+);
+
+const rgblight_segment_t PROGMEM layer_indicator_4[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 4, HSV_OFF},
+ {4, 1, HSV_WHITE}
+);
+
+const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ layer_indicator_0,
+ layer_indicator_1,
+ layer_indicator_2,
+ layer_indicator_3,
+ layer_indicator_4
+);
+
+void keyboard_post_init_user(void) {
+ /* Enable the LED layers */
+ rgblight_layers = rgb_layers;
+}
+
+/* Layer handler */
+
+uint16_t layer = 0;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LAYER_SWITCH:
+ if (record->event.pressed) {
+ if (layer > 0) {
+ layer_off(layer);
+ }
+
+ rgblight_unblink_layer(layer);
+ layer = (layer + 1) % 5;
+ rgblight_blink_layer_repeat(layer, 1000, 1);
+
+ if (layer > 0) {
+ layer_on(layer);
+ }
+ }
+ return false;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/massdrop/thekey_v2/keymaps/rgb-control/keymap.c b/keyboards/massdrop/thekey_v2/keymaps/rgb-control/keymap.c
new file mode 100644
index 0000000000..4246973654
--- /dev/null
+++ b/keyboards/massdrop/thekey_v2/keymaps/rgb-control/keymap.c
@@ -0,0 +1,109 @@
+/* Copyright 2022 Jason Wihardja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 {
+ LAYER_SWITCH = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ /* Default */
+ [0] = LAYOUT(LAYER_SWITCH, C(KC_C), C(KC_V)),
+
+ /* RGB Toggle + Mode Change */
+ [1] = LAYOUT(LAYER_SWITCH, RGB_TOG, RGB_MOD),
+
+ /* RGB Brightness */
+ [2] = LAYOUT(LAYER_SWITCH, RGB_VAD, RGB_VAI),
+
+ /* RGB Hue */
+ [3] = LAYOUT(LAYER_SWITCH, RGB_HUD, RGB_HUI),
+
+ /* RGB Saturation */
+ [4] = LAYOUT(LAYER_SWITCH, RGB_SAD, RGB_SAI),
+
+};
+
+/* Lighting layers */
+
+const rgblight_segment_t PROGMEM layer_indicator_0[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_WHITE},
+ {1, 4, HSV_OFF}
+);
+
+const rgblight_segment_t PROGMEM layer_indicator_1[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_OFF},
+ {1, 1, HSV_WHITE},
+ {2, 3, HSV_OFF}
+);
+
+const rgblight_segment_t PROGMEM layer_indicator_2[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 2, HSV_OFF},
+ {2, 1, HSV_WHITE},
+ {3, 2, HSV_OFF}
+);
+
+const rgblight_segment_t PROGMEM layer_indicator_3[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 3, HSV_OFF},
+ {3, 1, HSV_WHITE},
+ {4, 1, HSV_OFF}
+);
+
+const rgblight_segment_t PROGMEM layer_indicator_4[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 4, HSV_OFF},
+ {4, 1, HSV_WHITE}
+);
+
+const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ layer_indicator_0,
+ layer_indicator_1,
+ layer_indicator_2,
+ layer_indicator_3,
+ layer_indicator_4
+);
+
+void keyboard_post_init_user(void) {
+ /* Enable the LED layers */
+ rgblight_layers = rgb_layers;
+}
+
+/* Layer handler */
+
+uint16_t layer = 0;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LAYER_SWITCH:
+ if (record->event.pressed) {
+ if (layer > 0) {
+ layer_off(layer);
+ }
+
+ rgblight_unblink_layer(layer);
+ layer = (layer + 1) % 5;
+ rgblight_blink_layer_repeat(layer, 1000, 1);
+
+ if (layer > 0) {
+ layer_on(layer);
+ }
+ }
+ return false;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/massdrop/thekey_v2/keymaps/url-copy-paste-macos/keymap.c b/keyboards/massdrop/thekey_v2/keymaps/url-copy-paste-macos/keymap.c
new file mode 100644
index 0000000000..33d19734bc
--- /dev/null
+++ b/keyboards/massdrop/thekey_v2/keymaps/url-copy-paste-macos/keymap.c
@@ -0,0 +1,39 @@
+/* Copyright 2022 Jason Wihardja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_v2/keymaps/url-copy-paste/keymap.c b/keyboards/massdrop/thekey_v2/keymaps/url-copy-paste/keymap.c
new file mode 100644
index 0000000000..5becddfa2a
--- /dev/null
+++ b/keyboards/massdrop/thekey_v2/keymaps/url-copy-paste/keymap.c
@@ -0,0 +1,40 @@
+/* Copyright 2022 Jason Wihardja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_v2/readme.md b/keyboards/massdrop/thekey_v2/readme.md
new file mode 100644
index 0000000000..ef4d6ec716
--- /dev/null
+++ b/keyboards/massdrop/thekey_v2/readme.md
@@ -0,0 +1,38 @@
+# The Key V2
+
+![The Key V2](https://massdrop-s3.imgix.net/product-images/stack-overflow-the-key-v2-macropad/FP/vSqOp9eUQNGXW4zl3EVQ_7528-copy-pdp.jpg)
+
+
+The Stack Overflow "The Key V2" is a 3 button macropad based on atmega32u4 with hot-swappble Kailh Black Box switches.
+
+> Last year, we brought Stack Overflow’s iconic April Fool’s joke to life. Advertised as the new (and only) way to copy and paste on the site, it was an ultra-compact macropad called The Key. The punchline-turned product was a huge hit, selling over 10K units and earning a nearly 5-star average review. Now, we’re back with a second act: The Key V2. The same size as its portable predecessor, this punchline-turned-product has a few notable changes—including an acrylic case to accent its two built-in RGB LEDs. Plus, we made it hot-swappable, so you can easily change out the switches for a truly custom experience. And just like the original, a portion of all proceeds from The Key V2 will go to the data-driven social startup digitalundivided.
+
+Keyboard Maintainer: [Drop / Massdrop](https://github.com/Massdrop/qmk_firmware)
+
+Hardware Supported: Massdrop, Inc. **The Key V2**
+
+Hardware Availability: Limited Release - https://drop.com/buy/stack-overflow-the-key-v2-macropad
+
+
+Make example for this keyboard (after setting up your build environment):
+```bash
+# default provided by Drop / Stack Overflow
+make massdrop/thekey_v2:default
+# common modification where C = CTRL+C, V = CTRL+V
+make massdrop/thekey_v2:url-copy-paste
+```
+
+Flashing example for this keyboard:
+```bash
+# install in dfu mode
+make massdrop/thekey_v2: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_v2/rules.mk b/keyboards/massdrop/thekey_v2/rules.mk
new file mode 100644
index 0000000000..a0a1e94e36
--- /dev/null
+++ b/keyboards/massdrop/thekey_v2/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/massdrop/thekey_v2/thekey_v2.c b/keyboards/massdrop/thekey_v2/thekey_v2.c
new file mode 100644
index 0000000000..b1a824d9d4
--- /dev/null
+++ b/keyboards/massdrop/thekey_v2/thekey_v2.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 Jason Wihardja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You 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_v2.h"
diff --git a/keyboards/massdrop/thekey_v2/thekey_v2.h b/keyboards/massdrop/thekey_v2/thekey_v2.h
new file mode 100644
index 0000000000..c3b8e1a8ea
--- /dev/null
+++ b/keyboards/massdrop/thekey_v2/thekey_v2.h
@@ -0,0 +1,27 @@
+/* Copyright 2022 Jason Wihardja
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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/info.json b/keyboards/masterworks/classy_tkl/info.json
deleted file mode 100644
index 7baf2c41ab..0000000000
--- a/keyboards/masterworks/classy_tkl/info.json
+++ /dev/null
@@ -1,277 +0,0 @@
-{
- "keyboard_name": "Classy TKL",
- "url": "https://geekhack.org/index.php?topic=105933",
- "maintainer": "qmk",
- "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 },
- { "label": "Backspace2", "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": "Enter", "x": 12.75, "y": 3.5, "w": 2.25 },
- { "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": "Shift2", "x": 14, "y": 4.5, "w": 1 },
- { "label": "Up", "x": 16.25, "y": 4.5 },
- { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.5 },
- { "label": "Win", "x": 1.5, "y": 5.5, "w": 1 },
- { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.5 },
- { "label": "Space", "x": 4, "y": 5.5, "w": 7 },
- { "label": "Alt", "x": 11, "y": 5.5, "w": 1.5 },
- { "label": "Win", "x": 12.5, "y": 5.5, "w": 1 },
- { "label": "Ctrl", "x": 13.5, "y": 5.5, "w": 1.5 },
- { "label": "Left", "x": 15.25, "y": 5.5 },
- { "label": "Down", "x": 16.25, "y": 5.5 },
- { "label": "Right", "x": 17.25, "y": 5.5 }
- ]
- },
- "LAYOUT_tkl_ansi_wkl": {
- "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": 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": "Up", "x": 16.25, "y": 4.5 },
- { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.5 },
- { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.5 },
- { "label": "Space", "x": 4, "y": 5.5, "w": 7 },
- { "label": "Alt", "x": 11, "y": 5.5, "w": 1.5 },
- { "label": "Ctrl", "x": 13.5, "y": 5.5, "w": 1.5 },
- { "label": "Left", "x": 15.25, "y": 5.5 },
- { "label": "Down", "x": 16.25, "y": 5.5 },
- { "label": "Right", "x": 17.25, "y": 5.5 }
- ]
- },
- "LAYOUT_tkl_iso_wkl": {
- "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": "\u00ac", "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": "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": "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": "~", "x": 12.75, "y": 3.5 },
- { "label": "Enter", "x": 13.75, "y": 2.5, "w": 1.25, "h": 2 },
- { "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": "Up", "x": 16.25, "y": 4.5 },
- { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.5 },
- { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.5 },
- { "label": "Space", "x": 4, "y": 5.5, "w": 7 },
- { "label": "AltGr", "x": 11, "y": 5.5, "w": 1.5 },
- { "label": "Ctrl", "x": 13.5, "y": 5.5, "w": 1.5 },
- { "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/masterworks/classy_tkl/rev_a/config.h b/keyboards/masterworks/classy_tkl/rev_a/config.h
index 0821b1dfce..e4324680c4 100644
--- a/keyboards/masterworks/classy_tkl/rev_a/config.h
+++ b/keyboards/masterworks/classy_tkl/rev_a/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D57 // "MW" = Masterworks
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Masterworks
-#define PRODUCT Classy TKL
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ C7, F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS \
{ B4, D7, D6, D4, C6, D5, D3, D2, D1, D0, B7, B3, B2, B1, B0, E6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/masterworks/classy_tkl/rev_a/info.json b/keyboards/masterworks/classy_tkl/rev_a/info.json
new file mode 100644
index 0000000000..38c4a2331b
--- /dev/null
+++ b/keyboards/masterworks/classy_tkl/rev_a/info.json
@@ -0,0 +1,283 @@
+{
+ "keyboard_name": "Classy TKL",
+ "manufacturer": "Masterworks",
+ "url": "https://geekhack.org/index.php?topic=105933",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D57",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
+ "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 },
+ { "label": "Backspace2", "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": "Enter", "x": 12.75, "y": 3.5, "w": 2.25 },
+ { "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": "Shift2", "x": 14, "y": 4.5, "w": 1 },
+ { "label": "Up", "x": 16.25, "y": 4.5 },
+ { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.5 },
+ { "label": "Win", "x": 1.5, "y": 5.5, "w": 1 },
+ { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.5 },
+ { "label": "Space", "x": 4, "y": 5.5, "w": 7 },
+ { "label": "Alt", "x": 11, "y": 5.5, "w": 1.5 },
+ { "label": "Win", "x": 12.5, "y": 5.5, "w": 1 },
+ { "label": "Ctrl", "x": 13.5, "y": 5.5, "w": 1.5 },
+ { "label": "Left", "x": 15.25, "y": 5.5 },
+ { "label": "Down", "x": 16.25, "y": 5.5 },
+ { "label": "Right", "x": 17.25, "y": 5.5 }
+ ]
+ },
+ "LAYOUT_tkl_ansi_wkl": {
+ "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": 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": "Up", "x": 16.25, "y": 4.5 },
+ { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.5 },
+ { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.5 },
+ { "label": "Space", "x": 4, "y": 5.5, "w": 7 },
+ { "label": "Alt", "x": 11, "y": 5.5, "w": 1.5 },
+ { "label": "Ctrl", "x": 13.5, "y": 5.5, "w": 1.5 },
+ { "label": "Left", "x": 15.25, "y": 5.5 },
+ { "label": "Down", "x": 16.25, "y": 5.5 },
+ { "label": "Right", "x": 17.25, "y": 5.5 }
+ ]
+ },
+ "LAYOUT_tkl_iso_wkl": {
+ "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": "\u00ac", "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": "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": "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": "~", "x": 12.75, "y": 3.5 },
+ { "label": "Enter", "x": 13.75, "y": 2.5, "w": 1.25, "h": 2 },
+ { "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": "Up", "x": 16.25, "y": 4.5 },
+ { "label": "Ctrl", "x": 0, "y": 5.5, "w": 1.5 },
+ { "label": "Alt", "x": 2.5, "y": 5.5, "w": 1.5 },
+ { "label": "Space", "x": 4, "y": 5.5, "w": 7 },
+ { "label": "AltGr", "x": 11, "y": 5.5, "w": 1.5 },
+ { "label": "Ctrl", "x": 13.5, "y": 5.5, "w": 1.5 },
+ { "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/matchstickworks/southpad/config.h b/keyboards/matchstickworks/southpad/config.h
index 8831599828..3e11e34467 100644
--- a/keyboards/matchstickworks/southpad/config.h
+++ b/keyboards/matchstickworks/southpad/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MatchstickWorks
-#define PRODUCT SouthPad
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B3, B5, B6, B7, C7, C6 }
#define MATRIX_COL_PINS { B0, B1, B2, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/matchstickworks/southpad/info.json b/keyboards/matchstickworks/southpad/info.json
index c020bb79f1..d7380644ff 100644
--- a/keyboards/matchstickworks/southpad/info.json
+++ b/keyboards/matchstickworks/southpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "SouthPad",
+ "manufacturer": "MatchstickWorks",
"url": "",
"maintainer": "MatchstickWorks",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_6x4_southpaw": {
"layout": [
diff --git a/keyboards/matrix/abelx/config.h b/keyboards/matrix/abelx/config.h
index d3c6a569b1..29241f1ff6 100644
--- a/keyboards/matrix/abelx/config.h
+++ b/keyboards/matrix/abelx/config.h
@@ -19,13 +19,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D58 // MX
-#define PRODUCT_ID 0xAB87 // abelx keyboard
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MATRIX
-#define PRODUCT ABELX
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -85,7 +78,6 @@
#define COL15_MASK 0x04
#define COL16_MASK 0x02
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/matrix/abelx/info.json b/keyboards/matrix/abelx/info.json
index 18bed65bc0..121251f3b5 100644
--- a/keyboards/matrix/abelx/info.json
+++ b/keyboards/matrix/abelx/info.json
@@ -1,9 +1,13 @@
{
- "keyboard_name": "Matrix ABELX keyboard",
+ "keyboard_name": "ABELX",
+ "manufacturer": "Matrix",
"url": "",
"maintainer": "qmk",
- "width": 18.25,
- "height": 6.5,
+ "usb": {
+ "vid": "0x4D58",
+ "pid": "0xAB87",
+ "device_version": "0.0.1"
+ },
"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":"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":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":"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/matrix/cain_re/config.h b/keyboards/matrix/cain_re/config.h
index 6bacf1c949..830d3d8286 100644
--- a/keyboards/matrix/cain_re/config.h
+++ b/keyboards/matrix/cain_re/config.h
@@ -21,13 +21,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D58 // MX
-#define PRODUCT_ID 0x0106 // cain
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Matrix LAB
-#define PRODUCT Matrix Cain Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 12
@@ -35,7 +28,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F0, C7, C6, D5, D2, D4, D7, B7, D1 }
#define MATRIX_COL_PINS { F1, F4, F5, F6, B5, B6, B3, B2, B1, D0, B4, D6}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/matrix/cain_re/info.json b/keyboards/matrix/cain_re/info.json
index 8cf49e7fc8..ee2f0382ee 100644
--- a/keyboards/matrix/cain_re/info.json
+++ b/keyboards/matrix/cain_re/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Matrix Cain Keyboard",
+ "keyboard_name": "Cain",
+ "manufacturer": "Matrix",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D58",
+ "pid": "0x0106",
+ "device_version": "0.0.1"
+ },
"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":20, "y":0}, {"label":"Scroll Lock", "x":21, "y":0}, {"label":"Pause", "x":22, "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":"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":"Insert", "x":20, "y":1.5}, {"label":"Home", "x":21, "y":1.5}, {"label":"PgUp", "x":22, "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":"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}, {"label":"Delete", "x":20, "y":2.5}, {"label":"End", "x":21, "y":2.5}, {"label":"PgDn", "x":22, "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":15.5, "y":3.5}, {"label":"5", "x":16.5, "y":3.5}, {"label":"6", "x":17.5, "y":3.5}, {"label":"+", "x":18.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}, {"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":"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}, {"label":"\u2191", "x":21, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Win", "x":1.5, "y":5.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Win", "x":12.5, "y":5.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"0", "x":15.5, "y":5.5}, {"label":"0", "x":16.5, "y":5.5}, {"label":".", "x":17.5, "y":5.5}, {"label":"Enter", "x":18.5, "y":5.5}, {"label":"\u2190", "x":20, "y":5.5}, {"label":"\u2193", "x":21, "y":5.5}, {"label":"\u2192", "x":22, "y":5.5}]
diff --git a/keyboards/matrix/falcon/config.h b/keyboards/matrix/falcon/config.h
index afd0b5d3ef..d25668115c 100644
--- a/keyboards/matrix/falcon/config.h
+++ b/keyboards/matrix/falcon/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D58
-#define PRODUCT_ID 0x474E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Matrix Lab
-#define PRODUCT Falcon
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 13
@@ -31,7 +24,6 @@
#define MATRIX_ROW_PINS { F1, B7, F7, F5, F4}
#define MATRIX_COL_PINS { F6, B3, B2, B1, B0, C7, C6, B6, B5, B4, D7, D6, D4}
-#define UNUSED_PINS
#define DIODE_DIRECTION ROW2COL
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/matrix/falcon/info.json b/keyboards/matrix/falcon/info.json
index aeaaa7f9f2..f1b7267681 100644
--- a/keyboards/matrix/falcon/info.json
+++ b/keyboards/matrix/falcon/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Matrix Lab Falcon",
+ "keyboard_name": "Falcon",
+ "manufacturer": "Matrix Lab",
"url": "",
"maintainer": "yulei (Astro)",
+ "usb": {
+ "vid": "0x4D58",
+ "pid": "0x474E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_hhkb": {
"layout": [
diff --git a/keyboards/matrix/falcon/readme.md b/keyboards/matrix/falcon/readme.md
index c283650fcf..a2ceb82163 100644
--- a/keyboards/matrix/falcon/readme.md
+++ b/keyboards/matrix/falcon/readme.md
@@ -22,4 +22,4 @@ 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 short cut the *RST* pin with the *GND* pin (pin at the topside of the *RST*) on the back of the PCB.
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available. \ No newline at end of file
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. \ No newline at end of file
diff --git a/keyboards/matrix/m12og/rev1/config.h b/keyboards/matrix/m12og/rev1/config.h
index 204ece1617..b83c0eece2 100644
--- a/keyboards/matrix/m12og/rev1/config.h
+++ b/keyboards/matrix/m12og/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D58
-#define PRODUCT_ID 0x0369
-#define DEVICE_VER 0x0001
-#define MANUFACTURER matrix
-#define PRODUCT m12og_v1
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
diff --git a/keyboards/matrix/m12og/rev1/info.json b/keyboards/matrix/m12og/rev1/info.json
index 25cfe6bafc..3406beab76 100644
--- a/keyboards/matrix/m12og/rev1/info.json
+++ b/keyboards/matrix/m12og/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Matrix 8XV1.2 OG rev1",
+ "keyboard_name": "m12og_v1",
+ "manufacturer": "Matrix",
"url": "",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0x4D58",
+ "pid": "0x0369",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/matrix/m12og/rev2/config.h b/keyboards/matrix/m12og/rev2/config.h
index fae5192a33..6a4b003fbf 100644
--- a/keyboards/matrix/m12og/rev2/config.h
+++ b/keyboards/matrix/m12og/rev2/config.h
@@ -6,13 +6,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D58 // MX
-#define PRODUCT_ID 0x8712 // matrix 1.2 og
-#define DEVICE_VER 0x0001
-#define MANUFACTURER matrix
-#define PRODUCT M12OG
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 14
@@ -20,7 +13,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { E6, F0, B7, C7, D3, B0, D1 }
#define MATRIX_COL_PINS { F1, F4, F5, F6, F7, B6, B5, B4, D7, D0, D2, D6, D4, D5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/matrix/m12og/rev2/info.json b/keyboards/matrix/m12og/rev2/info.json
index 72514b09ab..d747108bed 100644
--- a/keyboards/matrix/m12og/rev2/info.json
+++ b/keyboards/matrix/m12og/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Matrix 8XV1.2 OG ISO/ANSI",
+ "keyboard_name": "M12OG",
+ "manufacturer": "Matrix",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D58",
+ "pid": "0x8712",
+ "device_version": "0.0.1"
+ },
"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":"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":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.5}, {"label":"Win", "x":1.5, "y":5.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Menu", "x":12.5, "y":5.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"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/matrix/m20add/config.h b/keyboards/matrix/m20add/config.h
index 5d615dbad6..cf63bb1bda 100644
--- a/keyboards/matrix/m20add/config.h
+++ b/keyboards/matrix/m20add/config.h
@@ -7,13 +7,6 @@
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D58 // MX
-#define PRODUCT_ID 0x20AD // 8XV2.0 Additional
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MATRIX
-#define PRODUCT 8XV2.0 Additional
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -75,7 +68,6 @@
DEF_PIN(TCA6424_PORT0, 2), \
DEF_PIN(TCA6424_PORT0, 1) }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/matrix/m20add/info.json b/keyboards/matrix/m20add/info.json
index 90649d1c60..4aa7f19efb 100644
--- a/keyboards/matrix/m20add/info.json
+++ b/keyboards/matrix/m20add/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Matrix 2.0 Additional",
+ "keyboard_name": "8XV2.0 Additional",
+ "manufacturer": "Matrix",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D58",
+ "pid": "0x20AD",
+ "device_version": "0.0.1"
+ },
"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":"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":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.5}, {"label":"Win", "x":1.5, "y":5.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Menu", "x":12.5, "y":5.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"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/matrix/me/config.h b/keyboards/matrix/me/config.h
index 033198ef65..85ec6a04c7 100644
--- a/keyboards/matrix/me/config.h
+++ b/keyboards/matrix/me/config.h
@@ -17,19 +17,11 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D58 // MX
-#define PRODUCT_ID 0x454D // ME
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Matrix Lab
-#define PRODUCT Matrix ME
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS {D3, D5, D4, D6, B5, B4}
#define MATRIX_COL_PINS {B7, B3, B2, B1, B0, F0, F1, F4, F5, F6, F7, C7, C6, B6, D7}
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/matrix/me/info.json b/keyboards/matrix/me/info.json
index cad1b3f70e..af42327f06 100644
--- a/keyboards/matrix/me/info.json
+++ b/keyboards/matrix/me/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Matrix ME",
+ "manufacturer": "Matrix Lab",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D58",
+ "pid": "0x454D",
+ "device_version": "0.0.1"
+ },
"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":"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":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.5}, {"label":"Win", "x":1.5, "y":5.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Menu", "x":12.5, "y":5.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"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/matrix/me/readme.md b/keyboards/matrix/me/readme.md
index 6a39bb0398..f04229b2d1 100644
--- a/keyboards/matrix/me/readme.md
+++ b/keyboards/matrix/me/readme.md
@@ -22,4 +22,4 @@ 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 short cut the *RST* pin with the *GND* pin (pin at the topside of the *RST*) on the back of the PCB.
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available. \ No newline at end of file
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. \ No newline at end of file
diff --git a/keyboards/matrix/noah/config.h b/keyboards/matrix/noah/config.h
index 84877f6a5c..83c1942a5f 100644
--- a/keyboards/matrix/noah/config.h
+++ b/keyboards/matrix/noah/config.h
@@ -7,20 +7,12 @@
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D58 // MX
-#define PRODUCT_ID 0x0065 // noah 65
-#define DEVICE_VER 0x0001
-#define MANUFACTURER matrix
-#define PRODUCT NOAH
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { B0, A1, C14, C13, A0}
#define MATRIX_COL_PINS { C15, B10, B7, B6, B5, B4, A15, A10, A9, A8, B15, B14, B13, B12, B2}
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/matrix/noah/info.json b/keyboards/matrix/noah/info.json
index 61c07feb57..5a4477931b 100644
--- a/keyboards/matrix/noah/info.json
+++ b/keyboards/matrix/noah/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NOAH",
+ "manufacturer": "Matrix",
"url": "",
"maintainer": "astro",
+ "usb": {
+ "vid": "0x4D58",
+ "pid": "0x0065",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/matrix/noah/keymaps/blockader/keymap.c b/keyboards/matrix/noah/keymaps/blockader/keymap.c
index 433fa9f9ef..e64821d33e 100644
--- a/keyboards/matrix/noah/keymaps/blockader/keymap.c
+++ b/keyboards/matrix/noah/keymaps/blockader/keymap.c
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KEY_FORWARD_LAYER(LAYER_WINDOW), LGUI(KC_SPC), LCTL(KC_SPC), KC_ESC, KC_TILD, KC_EXLM, KC_PEQL, KC_PLUS, KC_MINUS, KC_PIPE, KC_COLN, KC_LCBR, KC_RCBR, KEY_CREATE_PREVIOUS_LINE, KEY_FORWARD_LAYER(LAYER_LEGACY_BASE),
KEY_CUT_WORD, LALT(KC_LEFT), LALT(KC_RIGHT), KC_BSPC, LGUI(KC_LEFT), LCTL(KC_E), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, LGUI(KC_V), KC_DQUO, KEY_CREATE_NEXT_LINE, KEY_FORWARD_LAYER(LAYER_DESKTOP),
KC_LSFT, LGUI(KC_Z), KEY_CUT_SELECTION, KC_LPRN, KC_RPRN, KC_UNDS, KC_LBRC, KC_RBRC, KC_LT, KC_GT, KC_QUES, KC_RSFT, KC_NO, LCTL(KC_LEFT),
- KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KEY_FORWARD_LAYER(LAYER_CONTROL), KC_SPC, KC_RALT, KC_RGUI, KC_NO, RESET, LCTL(KC_RIGHT)),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_NO, KEY_FORWARD_LAYER(LAYER_CONTROL), KC_SPC, KC_RALT, KC_RGUI, KC_NO, QK_BOOT, LCTL(KC_RIGHT)),
[LAYER_RACE_BASE] = LAYOUT_default_splitspace(
KC_NO, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_NO, KC_NO, KC_NO, KC_NO, KEY_BACK_LAYER,
KC_NO, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_LCBR, KC_RCBR, KC_BSLS, KC_NO,
diff --git a/keyboards/matrix/noah/keymaps/rys/keymap.c b/keyboards/matrix/noah/keymaps/rys/keymap.c
index 73ee8e1fec..6c63ad829f 100644
--- a/keyboards/matrix/noah/keymaps/rys/keymap.c
+++ b/keyboards/matrix/noah/keymaps/rys/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* │    │    │    │                        │    │    │ │ │ │ │
* └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
*/
- 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, _______, _______,
+ QK_BOOT, 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_M_P, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/matrix/noah/keymaps/splitspace/keymap.c b/keyboards/matrix/noah/keymaps/splitspace/keymap.c
index e18de67d41..dd7b5f0c11 100644
--- a/keyboards/matrix/noah/keymaps/splitspace/keymap.c
+++ b/keyboards/matrix/noah/keymaps/splitspace/keymap.c
@@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT),
[1] = LAYOUT_default_splitspace(
KC_BSLS, 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, _______, KC_F13, KC_F14, KC_F24, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, RGB_TOG, RGB_MOD, _______, KC_F13, KC_F14, KC_F24, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/matthewdias/m3n3van/config.h b/keyboards/matthewdias/m3n3van/config.h
index cef9d8d70a..d389f197ae 100644
--- a/keyboards/matthewdias/m3n3van/config.h
+++ b/keyboards/matthewdias/m3n3van/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6D64
-#define PRODUCT_ID 0x2323
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Matthew Dias
-#define PRODUCT m3n3van
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -36,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F4, F5, F6, F1, F7, F0, E6, D3, D0, D1, D2, D4, D6 }
#define ENCODERS_PAD_A { B4 }
#define ENCODERS_PAD_B { D7 }
-#define UNUSED_PINS { B0, B1, B2, B3, B7, D5 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/matthewdias/m3n3van/info.json b/keyboards/matthewdias/m3n3van/info.json
index 240c203c29..347868cffb 100644
--- a/keyboards/matthewdias/m3n3van/info.json
+++ b/keyboards/matthewdias/m3n3van/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "m3n3van",
+ "manufacturer": "Matthew Dias",
"url": "https://github.com/matthewdias/m3n3van/tree/main/rev2",
"maintainer": "matthewdias",
+ "usb": {
+ "vid": "0x6D64",
+ "pid": "0x2323",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/matthewdias/minim/config.h b/keyboards/matthewdias/minim/config.h
index 9f31ba31cf..0e3347c5a9 100644
--- a/keyboards/matthewdias/minim/config.h
+++ b/keyboards/matthewdias/minim/config.h
@@ -19,14 +19,6 @@ 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 0xAAAA
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Matthew Dias
-#define PRODUCT minim
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
@@ -34,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* minim PCB default pin-out */
#define MATRIX_ROW_PINS { D6, D7, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F1, F7, F0, B0, D1, B1, D2, B2, D3, D5, B3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/matthewdias/minim/info.json b/keyboards/matthewdias/minim/info.json
index 0ac146b9a2..58d2066bd4 100644
--- a/keyboards/matthewdias/minim/info.json
+++ b/keyboards/matthewdias/minim/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "minim",
+ "manufacturer": "Matthew Dias",
"url": "https://github.com/matthewdias/minim",
"maintainer": "matthewdias",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xAAAA",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/matthewdias/model_v/config.h b/keyboards/matthewdias/model_v/config.h
index d1c5dcd81d..a111faa315 100644
--- a/keyboards/matthewdias/model_v/config.h
+++ b/keyboards/matthewdias/model_v/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6D64
-#define PRODUCT_ID 0x6D76
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Matthew Dias
-#define PRODUCT model-v
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/matthewdias/model_v/info.json b/keyboards/matthewdias/model_v/info.json
index cdb0efd951..0e279d5df4 100644
--- a/keyboards/matthewdias/model_v/info.json
+++ b/keyboards/matthewdias/model_v/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "model-v",
+ "manufacturer": "Matthew Dias",
"maintainer": "matthewdias",
+ "usb": {
+ "vid": "0x6D64",
+ "pid": "0x6D76",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split": {
"layout": [
diff --git a/keyboards/matthewdias/txuu/config.h b/keyboards/matthewdias/txuu/config.h
index f81c300a13..854fb5e114 100644
--- a/keyboards/matthewdias/txuu/config.h
+++ b/keyboards/matthewdias/txuu/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6D64
-#define PRODUCT_ID 0x2809
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Matthew Dias
-#define PRODUCT txuu
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -34,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* m3n3van PCB default pin-out */
#define MATRIX_ROW_PINS { B1, B0, F7, F4, F1 }
#define MATRIX_COL_PINS { F0, F5, F6, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7 }
-#define UNUSED_PINS { }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/matthewdias/txuu/info.json b/keyboards/matthewdias/txuu/info.json
index 20efca6978..c5606388de 100644
--- a/keyboards/matthewdias/txuu/info.json
+++ b/keyboards/matthewdias/txuu/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Txuu",
+ "manufacturer": "Matthew Dias",
"maintainer": "matthewdias",
+ "usb": {
+ "vid": "0x6D64",
+ "pid": "0x2809",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_65_ansi_blocker_split_bs"
},
diff --git a/keyboards/maxipad/config.h b/keyboards/maxipad/config.h
index 7a4b00ccad..c9bfc3ea61 100644
--- a/keyboards/maxipad/config.h
+++ b/keyboards/maxipad/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wootpatoot
-#define PRODUCT maxipad
-
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/maxipad/info.json b/keyboards/maxipad/info.json
index 881bba63e6..5670d8d361 100644
--- a/keyboards/maxipad/info.json
+++ b/keyboards/maxipad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "maxipad",
+ "manufacturer": "wootpatoot",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_grid": {
"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":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "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":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "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}]
diff --git a/keyboards/maxipad/promicro/config.h b/keyboards/maxipad/promicro/config.h
index 008e7929cb..f72fd89c6e 100644
--- a/keyboards/maxipad/promicro/config.h
+++ b/keyboards/maxipad/promicro/config.h
@@ -33,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { B6, B2, B3, B1, F7 }
#define MATRIX_COL_PINS { F4, C6, D7, F5, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/maxipad/teensy2/config.h b/keyboards/maxipad/teensy2/config.h
index 4e43920d5a..32521bc6a4 100644
--- a/keyboards/maxipad/teensy2/config.h
+++ b/keyboards/maxipad/teensy2/config.h
@@ -33,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { B6, F7, B2, B3, B1 }
#define MATRIX_COL_PINS { F6, C6, D7, F5, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/maxr1998/phoebe/config.h b/keyboards/maxr1998/phoebe/config.h
index cce72108c5..b410a836c9 100644
--- a/keyboards/maxr1998/phoebe/config.h
+++ b/keyboards/maxr1998/phoebe/config.h
@@ -19,12 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define PRODUCT Phoebe
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/maxr1998/phoebe/info.json b/keyboards/maxr1998/phoebe/info.json
index 1b22277d8a..03a2dd94f8 100644
--- a/keyboards/maxr1998/phoebe/info.json
+++ b/keyboards/maxr1998/phoebe/info.json
@@ -16,6 +16,11 @@
"key_lock": true,
"leader": true
},
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/maxr1998/pulse4k/config.h b/keyboards/maxr1998/pulse4k/config.h
index 4b9c60aac2..697fe10621 100644
--- a/keyboards/maxr1998/pulse4k/config.h
+++ b/keyboards/maxr1998/pulse4k/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Maxr1998
-#define PRODUCT Pulse 4k
-
/* Key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
@@ -33,7 +26,6 @@
/* Matrix pins */
#define MATRIX_ROW_PINS { B4, E6 }
#define MATRIX_COL_PINS { B7, B3, F0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/maxr1998/pulse4k/info.json b/keyboards/maxr1998/pulse4k/info.json
index 7caa85072a..f5ff668edf 100644
--- a/keyboards/maxr1998/pulse4k/info.json
+++ b/keyboards/maxr1998/pulse4k/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pulse 4k",
+ "manufacturer": "Maxr1998",
"url": "https://github.com/Maxr1998/Pulse_4k",
"maintainer": "Maxr1998",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mb44/config.h b/keyboards/mb44/config.h
index daafe52b41..da822ddfe9 100644
--- a/keyboards/mb44/config.h
+++ b/keyboards/mb44/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6d62
-#define PRODUCT_ID 0x6d62
-#define DEVICE_VER 0x0001
-#define MANUFACTURER melonbred
-
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D1, D6, D5, D4 }
#define MATRIX_COL_PINS { C4, C5, C6, C7, B7, B6, B5, B4, B3, B2, B1, B0 }
-#define UNUSED_PINS { C2 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mb44/info.json b/keyboards/mb44/info.json
index 47527443d4..4f916a0bf0 100644
--- a/keyboards/mb44/info.json
+++ b/keyboards/mb44/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MB-44",
+ "manufacturer": "melonbred",
"url": "",
"maintainer": "melonbred",
+ "usb": {
+ "vid": "0x6D62",
+ "pid": "0x6D62",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/mb44/keymaps/2u1u_space/keymap.c b/keyboards/mb44/keymaps/2u1u_space/keymap.c
index d231d63301..5c9b53b23c 100644
--- a/keyboards/mb44/keymaps/2u1u_space/keymap.c
+++ b/keyboards/mb44/keymaps/2u1u_space/keymap.c
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER2] = LAYOUT_2u1u_space(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
};
diff --git a/keyboards/mb44/keymaps/2u_space/keymap.c b/keyboards/mb44/keymaps/2u_space/keymap.c
index c3f654337a..320dfc4a85 100644
--- a/keyboards/mb44/keymaps/2u_space/keymap.c
+++ b/keyboards/mb44/keymaps/2u_space/keymap.c
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER2] = LAYOUT_2u_space(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
};
diff --git a/keyboards/mb44/keymaps/3u_space/keymap.c b/keyboards/mb44/keymaps/3u_space/keymap.c
index 924b3f4abb..a0b412bb36 100644
--- a/keyboards/mb44/keymaps/3u_space/keymap.c
+++ b/keyboards/mb44/keymaps/3u_space/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER2] = LAYOUT_3u_space(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, KC_RCTL, KC_RALT, KC_DEL, KC_VOLD,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, KC_RCTL, KC_RALT, KC_DEL, KC_VOLD,
XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
diff --git a/keyboards/mc_76k/config.h b/keyboards/mc_76k/config.h
index cc7ac306f4..428405d6d2 100644
--- a/keyboards/mc_76k/config.h
+++ b/keyboards/mc_76k/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4D43
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT MC-76K
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C7, C6, B6, B0, D1, D0 }
#define MATRIX_COL_PINS { D5, D3, D4, B1, D6, D7, B4, B5, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mc_76k/info.json b/keyboards/mc_76k/info.json
index 411886886e..db07a87f35 100644
--- a/keyboards/mc_76k/info.json
+++ b/keyboards/mc_76k/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "mc_76k",
+ "keyboard_name": "MC-76K",
+ "manufacturer": "Yiancar-Designs",
"url": "www.yiancar-designs.com",
"maintainer": "Yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4D43",
+ "device_version": "0.0.1"
+ },
"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":"F13", "x":14, "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":"|", "x":13, "y":1.5}, {"label":"Delete", "x":14, "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":"Backspace", "x":13.5, "y":2.5, "w":1.5}, {"label":"Ctrl", "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":1.75}, {"label":"Fn", "x":14, "y":4.5}, {"label":"Caps Lock", "x":0, "y":5.5, "w":1.5}, {"label":"Win", "x":1.5, "y":5.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Win", "x":12.5, "y":5.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}]
diff --git a/keyboards/mechanickeys/miniashen40/config.h b/keyboards/mechanickeys/miniashen40/config.h
index bf2ea6e00f..1510dc9870 100644
--- a/keyboards/mechanickeys/miniashen40/config.h
+++ b/keyboards/mechanickeys/miniashen40/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4B // MechanicKeys
-#define PRODUCT_ID 0x6D6E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MechanicKeys
-#define PRODUCT MINI ASHEN 40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { B1, B2, B3, B4 }
#define MATRIX_COL_PINS { C5, C4, C3, D0, C2, D1, C1, C0, D4, B0, D7, D6, B5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechanickeys/miniashen40/info.json b/keyboards/mechanickeys/miniashen40/info.json
index bf46a8bdcd..94779c888f 100644
--- a/keyboards/mechanickeys/miniashen40/info.json
+++ b/keyboards/mechanickeys/miniashen40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mini Ashen 40",
+ "manufacturer": "MechanicKeys",
"url": "",
"maintainer": "jfescobar18",
+ "usb": {
+ "vid": "0x4D4B",
+ "pid": "0x6D6E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mechanickeys/miniashen40/readme.md b/keyboards/mechanickeys/miniashen40/readme.md
index 29f7b68fd1..c61398ba1a 100644
--- a/keyboards/mechanickeys/miniashen40/readme.md
+++ b/keyboards/mechanickeys/miniashen40/readme.md
@@ -32,9 +32,9 @@ 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**:
1. Press and hold `BOOT` switch
- 2. Tap `RESET` switch
+ 2. Tap `QK_BOOT` switch
3. Release `BOOT` switch
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
## Flash bootloader
* [Follow this instructions](https://github.com/jfescobar18/USBaspLoader)
diff --git a/keyboards/mechanickeys/undead60m/config.h b/keyboards/mechanickeys/undead60m/config.h
index e819cf9971..e21f4c4870 100644
--- a/keyboards/mechanickeys/undead60m/config.h
+++ b/keyboards/mechanickeys/undead60m/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4B // MechanicKeys
-#define PRODUCT_ID 0x3C4D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MechanicKeys
-#define PRODUCT Undead 60-M
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -41,7 +34,6 @@
*/
#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, B2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechanickeys/undead60m/info.json b/keyboards/mechanickeys/undead60m/info.json
index 5032974857..db1fd60446 100644
--- a/keyboards/mechanickeys/undead60m/info.json
+++ b/keyboards/mechanickeys/undead60m/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Undead-60M",
+ "keyboard_name": "Undead 60-M",
+ "manufacturer": "MechanicKeys",
"url": "",
"maintainer": "jfescobar18",
+ "usb": {
+ "vid": "0x4D4B",
+ "pid": "0x3C4D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mechbrewery/mb65h/config.h b/keyboards/mechbrewery/mb65h/config.h
index 5f7e78e32d..79fc4bdde5 100644
--- a/keyboards/mechbrewery/mb65h/config.h
+++ b/keyboards/mechbrewery/mb65h/config.h
@@ -19,20 +19,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4252 //BR
-#define PRODUCT_ID 0x0002 //hotswap
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MechBrewery
-#define PRODUCT MB65H
-
/* 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
diff --git a/keyboards/mechbrewery/mb65h/info.json b/keyboards/mechbrewery/mb65h/info.json
index 82469e7031..87c07f44dc 100644
--- a/keyboards/mechbrewery/mb65h/info.json
+++ b/keyboards/mechbrewery/mb65h/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "mb65h",
+ "keyboard_name": "MB65H",
+ "manufacturer": "MechBrewery",
"url": "",
"maintainer": "AnthonyNguyen168",
+ "usb": {
+ "vid": "0x4252",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
diff --git a/keyboards/mechbrewery/mb65h/keymaps/default/keymap.c b/keyboards/mechbrewery/mb65h/keymaps/default/keymap.c
index 9c62755928..3905a3053d 100644
--- a/keyboards/mechbrewery/mb65h/keymaps/default/keymap.c
+++ b/keyboards/mechbrewery/mb65h/keymaps/default/keymap.c
@@ -54,8 +54,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[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_UP, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______,
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, _______,
+ KC_CAPS, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______,
_______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/mechbrewery/mb65h/keymaps/via/keymap.c b/keyboards/mechbrewery/mb65h/keymaps/via/keymap.c
index 85f94da297..cf736eeac4 100644
--- a/keyboards/mechbrewery/mb65h/keymaps/via/keymap.c
+++ b/keyboards/mechbrewery/mb65h/keymaps/via/keymap.c
@@ -54,8 +54,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[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_UP, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______,
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, _______,
+ KC_CAPS, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______,
_______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/mechbrewery/mb65h/readme.md b/keyboards/mechbrewery/mb65h/readme.md
index e9802152b3..3137cfe001 100644
--- a/keyboards/mechbrewery/mb65h/readme.md
+++ b/keyboards/mechbrewery/mb65h/readme.md
@@ -8,7 +8,7 @@
* 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/mechbrewery/mb65s/config.h b/keyboards/mechbrewery/mb65s/config.h
index be4deb08b5..57ae42b415 100644
--- a/keyboards/mechbrewery/mb65s/config.h
+++ b/keyboards/mechbrewery/mb65s/config.h
@@ -19,20 +19,12 @@
#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
diff --git a/keyboards/mechbrewery/mb65s/info.json b/keyboards/mechbrewery/mb65s/info.json
index 79b10339b0..3ad4c7b2c2 100644
--- a/keyboards/mechbrewery/mb65s/info.json
+++ b/keyboards/mechbrewery/mb65s/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "mb65s",
+ "keyboard_name": "MB65S",
+ "manufacturer": "MechBrewery",
"url": "",
"maintainer": "AnthonyNguyen168",
+ "usb": {
+ "vid": "0x4252",
+ "pid": "0x3635",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
@@ -188,7 +194,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":15, "y":1},
{"x":0, "y":2, "w":1.75},
@@ -203,6 +208,7 @@
{"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},
@@ -265,6 +271,7 @@
{"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},
@@ -279,8 +286,7 @@
{"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":12.75, "y":2, "w":2.25},
{"x":15, "y":2},
{"x":0, "y":3, "w":2.25},
diff --git a/keyboards/mechbrewery/mb65s/keymaps/ansi_blocker/keymap.c b/keyboards/mechbrewery/mb65s/keymaps/ansi_blocker/keymap.c
index 0076da3dc8..fce4b5cd3b 100644
--- a/keyboards/mechbrewery/mb65s/keymaps/ansi_blocker/keymap.c
+++ b/keyboards/mechbrewery/mb65s/keymaps/ansi_blocker/keymap.c
@@ -54,8 +54,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[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_DEL, KC_DEL, _______,
- _______, _______, KC_UP, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______,
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, _______,
+ KC_CAPS, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______,
_______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/mechbrewery/mb65s/keymaps/ansi_blocker_7u_spc/keymap.c b/keyboards/mechbrewery/mb65s/keymaps/ansi_blocker_7u_spc/keymap.c
index a19f132295..eb9fc329f3 100644
--- a/keyboards/mechbrewery/mb65s/keymaps/ansi_blocker_7u_spc/keymap.c
+++ b/keyboards/mechbrewery/mb65s/keymaps/ansi_blocker_7u_spc/keymap.c
@@ -54,8 +54,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[1] = LAYOUT_65_ansi_blocker_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_DEL, _______,
- _______, _______, KC_UP, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______,
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, _______,
+ KC_CAPS, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______,
_______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/mechbrewery/mb65s/keymaps/default/keymap.c b/keyboards/mechbrewery/mb65s/keymaps/default/keymap.c
index 1e071c610e..755b3a4b0e 100644
--- a/keyboards/mechbrewery/mb65s/keymaps/default/keymap.c
+++ b/keyboards/mechbrewery/mb65s/keymaps/default/keymap.c
@@ -54,8 +54,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[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_UP, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______,
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, _______,
+ KC_CAPS, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/mechbrewery/mb65s/keymaps/iso_blocker/keymap.c b/keyboards/mechbrewery/mb65s/keymaps/iso_blocker/keymap.c
index 1cff877fbb..c76a62feaa 100644
--- a/keyboards/mechbrewery/mb65s/keymaps/iso_blocker/keymap.c
+++ b/keyboards/mechbrewery/mb65s/keymaps/iso_blocker/keymap.c
@@ -55,8 +55,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[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_DEL, _______, _______,
- _______, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, _______,
+ KC_CAPS, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/mechbrewery/mb65s/keymaps/iso_blocker_tsangan/keymap.c b/keyboards/mechbrewery/mb65s/keymaps/iso_blocker_tsangan/keymap.c
index 6071438dc1..4eed1f0e8c 100644
--- a/keyboards/mechbrewery/mb65s/keymaps/iso_blocker_tsangan/keymap.c
+++ b/keyboards/mechbrewery/mb65s/keymaps/iso_blocker_tsangan/keymap.c
@@ -55,8 +55,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[1] = LAYOUT_65_iso_blocker_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_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, _______,
+ KC_CAPS, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/mechbrewery/mb65s/keymaps/via/keymap.c b/keyboards/mechbrewery/mb65s/keymaps/via/keymap.c
index e3c4c76fc2..94046b8833 100644
--- a/keyboards/mechbrewery/mb65s/keymaps/via/keymap.c
+++ b/keyboards/mechbrewery/mb65s/keymaps/via/keymap.c
@@ -54,8 +54,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[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_UP, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______, _______,
- _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______, _______,
+ KC_CAPS, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, _______,
+ _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/mechbrewery/mb65s/readme.md b/keyboards/mechbrewery/mb65s/readme.md
index e8505cb6fe..cacc0fc0c1 100644
--- a/keyboards/mechbrewery/mb65s/readme.md
+++ b/keyboards/mechbrewery/mb65s/readme.md
@@ -8,7 +8,7 @@
* 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/mechkeys/acr60/config.h b/keyboards/mechkeys/acr60/config.h
index 7fb907153a..8ef708931f 100644
--- a/keyboards/mechkeys/acr60/config.h
+++ b/keyboards/mechkeys/acr60/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xCA60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MECHKEYS
-#define PRODUCT ACR60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3, F4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechkeys/acr60/info.json b/keyboards/mechkeys/acr60/info.json
index 0e42e5162e..79fcfba429 100644
--- a/keyboards/mechkeys/acr60/info.json
+++ b/keyboards/mechkeys/acr60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ACR60",
+ "manufacturer": "MechKeys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xCA60",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_2_shifts": "LAYOUT_all"
},
diff --git a/keyboards/mechkeys/acr60/keymaps/mitch/keymap.c b/keyboards/mechkeys/acr60/keymaps/mitch/keymap.c
index 1567b14813..97899700f1 100644
--- a/keyboards/mechkeys/acr60/keymaps/mitch/keymap.c
+++ b/keyboards/mechkeys/acr60/keymaps/mitch/keymap.c
@@ -160,7 +160,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layer 2: "special effects": RGB lighting, backlighting, bootloader */
[_SFX] = LAYOUT_mitchsplit(
______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,RGB_M_SN,RGB_M_K, RGB_M_X, RGB_M_G,______, ______, ______, ______, ______, \
- ______, BL_TOGG, BL_STEP, BL_DEC, BL_INC, ______, ______, ______, ______, ______, ______, ______, ______, RESET, \
+ ______, BL_TOGG, BL_STEP, BL_DEC, BL_INC, ______, ______, ______, ______, ______, ______, ______, ______, QK_BOOT, \
______, RGB_TOG, RGB_MOD,______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, ______, ______, ______, ______, ______, ______, \
______, ______, ______, ______, ______, ______, ______, ______,TO(_DFT),______ \
diff --git a/keyboards/mechkeys/alu84/config.h b/keyboards/mechkeys/alu84/config.h
index 3700ced8cf..286c06f482 100755
--- a/keyboards/mechkeys/alu84/config.h
+++ b/keyboards/mechkeys/alu84/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xCA75
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MECHKEYS
-#define PRODUCT ALU84
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5, B7 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, F5, D4, B1, B0, B5, B4, D7, D6, B3, F4, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechkeys/alu84/info.json b/keyboards/mechkeys/alu84/info.json
index 55d01489dc..e67ab405d9 100644
--- a/keyboards/mechkeys/alu84/info.json
+++ b/keyboards/mechkeys/alu84/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ALU84",
+ "manufacturer": "MechKeys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xCA75",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_75_ansi"
},
diff --git a/keyboards/mechkeys/espectro/config.h b/keyboards/mechkeys/espectro/config.h
index e328f276eb..48f3c3f95d 100755
--- a/keyboards/mechkeys/espectro/config.h
+++ b/keyboards/mechkeys/espectro/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xCA96
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MECHKEYS
-#define PRODUCT Espectro
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 13
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B7, B3, E6, F0, D5, D4, D6, C7 }
#define MATRIX_COL_PINS { C6, F1, F4, F5, F6, F7, D7, B4, B5, D0, D1, D2, D3}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechkeys/espectro/info.json b/keyboards/mechkeys/espectro/info.json
index cb34f6938c..d293c96978 100644
--- a/keyboards/mechkeys/espectro/info.json
+++ b/keyboards/mechkeys/espectro/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Espectro",
+ "manufacturer": "MechKeys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xCA96",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/mechkeys/espectro/keymaps/mac/keymap.c b/keyboards/mechkeys/espectro/keymaps/mac/keymap.c
index 9bd75d61d6..e07e74d5ab 100644
--- a/keyboards/mechkeys/espectro/keymaps/mac/keymap.c
+++ b/keyboards/mechkeys/espectro/keymaps/mac/keymap.c
@@ -68,7 +68,7 @@ ________________________________________________________________________________
/* FN1 - SEE readme.md
____________________________________________________________________________________________________________________________________________________________________________
| | | | | | | | | | | | | | | | | | | |
-| QUIT | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | | | HOME | END | RESET |
+| QUIT | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | | | HOME | END | QK_BOOT |
|_ALL____|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
| | RGB | RGB | RGB | RGB | RGB | RGB | RGB | RGB | | | | | | | | | |
| | TOGGLE | MODE |INCREASE|DECREASE| HUE | HUE | SAT | | | | | | DELETE | | | | |
@@ -89,7 +89,7 @@ ________________________________________________________________________________
[_FUNCTION] = LAYOUT_default(
- QALL, KC_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_END, RESET,
+ QALL, KC_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_END, QK_BOOT,
_______, 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/mechkeys/espectro/keymaps/mapdev/keymap.c b/keyboards/mechkeys/espectro/keymaps/mapdev/keymap.c
index 89d412b2dd..689ea869b1 100644
--- a/keyboards/mechkeys/espectro/keymaps/mapdev/keymap.c
+++ b/keyboards/mechkeys/espectro/keymaps/mapdev/keymap.c
@@ -55,7 +55,7 @@ ________________________________________________________________________________
/* FN_1
____________________________________________________________________________________________________________________________________________________________________________
| | | | | | | | | | | | | | | VOL | VOL | NEXT | | |
-| RESET | | | | | | | | | | | | | MUTE | DOWN | UP | TRACK | HOME | END |
+| QK_BOOT | | | | | | | | | | | | | MUTE | DOWN | UP | TRACK | HOME | END |
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
| | RGB | RGB | RGB | RGB | RGB | RGB | RGB | RGB | | | | | | | | | |
| | TOGGLE | MODE |INCREASE|DECREASE| HUE | HUE | SAT | | | | | | DELETE | | | | |
@@ -75,7 +75,7 @@ ________________________________________________________________________________
*/
[_FN1] = LAYOUT_default(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, KC_END, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/mechkeys/espectro/keymaps/mikethetiger/keymap.c b/keyboards/mechkeys/espectro/keymaps/mikethetiger/keymap.c
index 30688ab5c4..cc8d0c2cad 100644
--- a/keyboards/mechkeys/espectro/keymaps/mikethetiger/keymap.c
+++ b/keyboards/mechkeys/espectro/keymaps/mikethetiger/keymap.c
@@ -56,7 +56,7 @@ ________________________________________________________________________________
/* FN_1
____________________________________________________________________________________________________________________________________________________________________________
| | | | | | | | | | | | | | | VOL | VOL | NEXT | | |
-| RESET | | | | | | | | | | | | | MUTE | DOWN | UP | TRACK | HOME | END |
+| QK_BOOT | | | | | | | | | | | | | MUTE | DOWN | UP | TRACK | HOME | END |
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
| | RGB | RGB | RGB | RGB | RGB | RGB | RGB | RGB | | | | | | | | | |
| | TOGGLE | MODE |INCREASE|DECREASE| HUE | HUE | SAT | SAT | | | | | DELETE | | | | |
@@ -76,7 +76,7 @@ ________________________________________________________________________________
*/
[_FN1] = LAYOUT_default(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_MNXT, KC_HOME, KC_END, \
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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/mechkeys/mechmini/v1/config.h b/keyboards/mechkeys/mechmini/v1/config.h
index a64127f597..c4d1ecc528 100644
--- a/keyboards/mechkeys/mechmini/v1/config.h
+++ b/keyboards/mechkeys/mechmini/v1/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xCA40
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MECHKEYS
-#define PRODUCT Mechmini
-
/* matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/mechkeys/mechmini/v1/info.json b/keyboards/mechkeys/mechmini/v1/info.json
index f48fddd066..6a17171154 100644
--- a/keyboards/mechkeys/mechmini/v1/info.json
+++ b/keyboards/mechkeys/mechmini/v1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MechMini v1",
+ "keyboard_name": "MechMini",
+ "manufacturer": "MechKeys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xCA40",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mechkeys/mechmini/v1/keymaps/pitty/keymap.c b/keyboards/mechkeys/mechmini/v1/keymaps/pitty/keymap.c
index 7db2dc1836..6b5c108e28 100644
--- a/keyboards/mechkeys/mechmini/v1/keymaps/pitty/keymap.c
+++ b/keyboards/mechkeys/mechmini/v1/keymaps/pitty/keymap.c
@@ -49,6 +49,6 @@ 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,
_______, KC_INS, KC_HOME, KC_PGUP, _______, _______, _______, _______, _______, _______, _______,
_______, KC_DEL, KC_END, KC_PGDN, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, RGB_TOG, RGB_MOD, _______, _______, RESET
+ _______, _______, _______, RGB_TOG, RGB_MOD, _______, _______, QK_BOOT
)
};
diff --git a/keyboards/mechkeys/mechmini/v2/config.h b/keyboards/mechkeys/mechmini/v2/config.h
index 7936caef00..9c7b74f4ef 100755
--- a/keyboards/mechkeys/mechmini/v2/config.h
+++ b/keyboards/mechkeys/mechmini/v2/config.h
@@ -17,14 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xAF99
-#define PRODUCT_ID 0xCA40
-#define DEVICE_VER 0x0002
-#define MANUFACTURER MECHKEYS
-#undef PRODUCT
-#define PRODUCT Mechmini 2
-
/* key matrix size */
#undef MATRIX_COLS
#undef MATRIX_ROWS
@@ -34,7 +26,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B3, B1, B0, D5, B7, C7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechkeys/mechmini/v2/info.json b/keyboards/mechkeys/mechmini/v2/info.json
index 1d0d727a3e..0dfe5877a5 100644
--- a/keyboards/mechkeys/mechmini/v2/info.json
+++ b/keyboards/mechkeys/mechmini/v2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MechMini 2",
+ "manufacturer": "MechKeys",
"url": "https://mechkeys.ca/pages/mechmini-2-guide",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xAF99",
+ "pid": "0xCA40",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_ortho": {
"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 Space", "x":11, "y":0}, {"label":"Tab", "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":"Caps", "x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"GUI", "x":3, "y":3}, {"label":"MO(1)", "x":4, "y":3}, {"label":"Space", "x":5, "y":3}, {"label":"Space", "x":6, "y":3}, {"label":"MO(2)", "x":7, "y":3}, {"label":"&larr;", "x":8, "y":3}, {"label":"&darr;", "x":9, "y":3}, {"label":"&uarr;", "x":10, "y":3}, {"label":"&rarr;", "x":11, "y":3}]
diff --git a/keyboards/mechkeys/mechmini/v2/keymaps/2u_space_ortho/keymap.c b/keyboards/mechkeys/mechmini/v2/keymaps/2u_space_ortho/keymap.c
index 90bb2ddd60..b78584c3aa 100644
--- a/keyboards/mechkeys/mechmini/v2/keymaps/2u_space_ortho/keymap.c
+++ b/keyboards/mechkeys/mechmini/v2/keymaps/2u_space_ortho/keymap.c
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
KC_TRNS, BL_TOGG, BL_STEP, BL_INC, BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
KC_TRNS, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_HOME, KC_END, KC_TRNS,
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_PGDN, KC_PGUP, KC_MPLY),
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_PGDN, KC_PGUP, KC_MPLY),
};
diff --git a/keyboards/mechkeys/mechmini/v2/keymaps/625_space/keymap.c b/keyboards/mechkeys/mechmini/v2/keymaps/625_space/keymap.c
index 4344d6d2bc..eb194be203 100755
--- a/keyboards/mechkeys/mechmini/v2/keymaps/625_space/keymap.c
+++ b/keyboards/mechkeys/mechmini/v2/keymaps/625_space/keymap.c
@@ -19,7 +19,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[_FN2] = LAYOUT_625_space(
- KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RESET,
+ KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, QK_BOOT,
KC_TRNS, BL_TOGG, BL_STEP, BL_INC, BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_CAPS, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, KC_END,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
diff --git a/keyboards/mechkeys/mechmini/v2/keymaps/arkag/keymap.c b/keyboards/mechkeys/mechmini/v2/keymaps/arkag/keymap.c
index 2c64c5aac0..8de45ea5c4 100644
--- a/keyboards/mechkeys/mechmini/v2/keymaps/arkag/keymap.c
+++ b/keyboards/mechkeys/mechmini/v2/keymaps/arkag/keymap.c
@@ -58,6 +58,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, BL_TOGG, BL_STEP, BL_INC, BL_DEC, BL_BRTG, _______, _______, _______, _______, _______, _______,
RGB_M_P, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/mechkeys/mechmini/v2/keymaps/lbibass_625_space/keymap.c b/keyboards/mechkeys/mechmini/v2/keymaps/lbibass_625_space/keymap.c
index fba582e1b7..e39e6d00b2 100755
--- a/keyboards/mechkeys/mechmini/v2/keymaps/lbibass_625_space/keymap.c
+++ b/keyboards/mechkeys/mechmini/v2/keymaps/lbibass_625_space/keymap.c
@@ -36,13 +36,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[_FN2] = LAYOUT_625_space(
- KC_PWR, KC_BRID, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, RESET,
+ KC_PWR, KC_BRID, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, QK_BOOT,
MT(KC_LGUI, KC_ESC), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TG(1), KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_TRNS,
KC_TRNS, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS,
KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[_FN3] = LAYOUT_625_space(
- KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RESET,
+ KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, QK_BOOT,
MT(KC_LGUI, KC_ESC), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TG(1), KC_TRNS, KC_TRNS, KC_F11, KC_F12, KC_TRNS,
KC_TRNS, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS,
KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
diff --git a/keyboards/mechkeys/mechmini/v2/keymaps/lbibass_split_space/keymap.c b/keyboards/mechkeys/mechmini/v2/keymaps/lbibass_split_space/keymap.c
index 7ad2aa81e9..91e2f8e739 100755
--- a/keyboards/mechkeys/mechmini/v2/keymaps/lbibass_split_space/keymap.c
+++ b/keyboards/mechkeys/mechmini/v2/keymaps/lbibass_split_space/keymap.c
@@ -24,7 +24,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),
[_FN2] = LAYOUT_split_space(
- KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RESET,
+ KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, QK_BOOT,
MT(KC_LGUI, KC_ESC), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, TG(1), KC_TRNS, KC_TRNS, KC_F11, KC_F12, KC_TRNS,
KC_TRNS, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, KC_END,
KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
diff --git a/keyboards/mechkeys/mechmini/v2/keymaps/ortho/keymap.c b/keyboards/mechkeys/mechmini/v2/keymaps/ortho/keymap.c
index 31ccfa82a3..e931aab63b 100755
--- a/keyboards/mechkeys/mechmini/v2/keymaps/ortho/keymap.c
+++ b/keyboards/mechkeys/mechmini/v2/keymaps/ortho/keymap.c
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
KC_TRNS, BL_TOGG, BL_STEP, BL_INC, BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
KC_TRNS, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_HOME, KC_END, KC_TRNS,
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_PGDN, KC_PGUP, KC_MPLY),
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_PGDN, KC_PGUP, KC_MPLY),
};
diff --git a/keyboards/mechkeys/mechmini/v2/keymaps/spacebarracecar/keymap.c b/keyboards/mechkeys/mechmini/v2/keymaps/spacebarracecar/keymap.c
index c0fb3695f9..13179a5f1a 100644
--- a/keyboards/mechkeys/mechmini/v2/keymaps/spacebarracecar/keymap.c
+++ b/keyboards/mechkeys/mechmini/v2/keymaps/spacebarracecar/keymap.c
@@ -96,7 +96,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| |Prev |Pause |Next |LowerVol |RaiseVol |Mute | | | | | |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
-|RESET |ESCT | | | | | | | | | |Game |
+|QK_BOOT |ESCT | | | | | | | | | |Game |
`-----------------------------------------------------------------------------------------------------------------------'
*/
@@ -104,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL,
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT,
_______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, RGB_TOG, RGB_MOD, RGB_HUI, CU_RGBV, _______,
- RESET, CU_ESCT, ALTF4, _______, _______, KC_SPC, CTLENT, RGB_M_P, _______, _______, _______, CU_GAME
+ QK_BOOT, CU_ESCT, ALTF4, _______, _______, KC_SPC, CTLENT, RGB_M_P, _______, _______, _______, CU_GAME
)
};
diff --git a/keyboards/mechkeys/mechmini/v2/keymaps/split_space/keymap.c b/keyboards/mechkeys/mechmini/v2/keymaps/split_space/keymap.c
index 635b4eacb3..5764123179 100755
--- a/keyboards/mechkeys/mechmini/v2/keymaps/split_space/keymap.c
+++ b/keyboards/mechkeys/mechmini/v2/keymaps/split_space/keymap.c
@@ -19,7 +19,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),
[_FN2] = LAYOUT_split_space(
- KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RESET,
+ KC_PWR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, QK_BOOT,
KC_TRNS, BL_TOGG, BL_STEP, BL_INC, BL_DEC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_CAPS, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, KC_END,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
diff --git a/keyboards/mechkeys/mechmini/v2/keymaps/wsturgiss/keymap.c b/keyboards/mechkeys/mechmini/v2/keymaps/wsturgiss/keymap.c
index 218936a19b..689a9ce36e 100644
--- a/keyboards/mechkeys/mechmini/v2/keymaps/wsturgiss/keymap.c
+++ b/keyboards/mechkeys/mechmini/v2/keymaps/wsturgiss/keymap.c
@@ -87,7 +87,7 @@ void matrix_scan_user(void) {
//change colors and rgb modes on layer change
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case raise:
rgblight_mode_noeeprom(1);
rgblight_setrgb(0xc7, 0x00, 0xf4);
@@ -103,4 +103,3 @@ layer_state_t layer_state_set_user(layer_state_t state) {
}
return state;
};
-
diff --git a/keyboards/mechkeys/mk60/config.h b/keyboards/mechkeys/mk60/config.h
index 680c498ef4..ff1b4367e4 100644
--- a/keyboards/mechkeys/mk60/config.h
+++ b/keyboards/mechkeys/mk60/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Mechkeys
-#define PRODUCT mechkeys mk60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 }
#define MATRIX_COL_PINS { B5, D0, D1, D2, D3, D4, D5, D6, D7, C6, C7, F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechkeys/mk60/info.json b/keyboards/mechkeys/mk60/info.json
index cb50412378..b322a589ab 100644
--- a/keyboards/mechkeys/mk60/info.json
+++ b/keyboards/mechkeys/mk60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MK60",
+ "manufacturer": "MechKeys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mechllama/g35/config.h b/keyboards/mechllama/g35/config.h
index 9602bbd39b..3b5b7ea0e7 100644
--- a/keyboards/mechllama/g35/config.h
+++ b/keyboards/mechllama/g35/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xCEEB
-#define PRODUCT_ID 0x0035
-#define MANUFACTURER kaylynb
-#define PRODUCT MechLlama G35
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 7
diff --git a/keyboards/mechllama/g35/info.json b/keyboards/mechllama/g35/info.json
index c22c124fc8..465e145a97 100644
--- a/keyboards/mechllama/g35/info.json
+++ b/keyboards/mechllama/g35/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "G35",
+ "keyboard_name": "MechLlama G35",
+ "manufacturer": "kaylynb",
"url": "https://github.com/kaylynb/MechLlama-G35",
"maintainer": "kaylynb",
+ "usb": {
+ "vid": "0xCEEB",
+ "pid": "0x0035"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"F1", "x":0, "y":0.5}, {"label":"Esc", "x":1, "y":0.5}, {"label":"1", "x":2, "y":0}, {"label":"2", "x":3, "y":0.15}, {"label":"3", "x":4, "y":0}, {"label":"4", "x":5, "y":0}, {"label":"5", "x":6, "y":0}, {"label":"F2", "x":0, "y":1.5}, {"label":"Tab", "x":1, "y":1.5}, {"label":"Q", "x":2, "y":1}, {"label":"W", "x":3, "y":1.15}, {"label":"E", "x":4, "y":1}, {"label":"R", "x":5, "y":1}, {"label":"T", "x":6, "y":1}, {"label":"F3", "x":0, "y":2.5}, {"label":"Shift", "x":1, "y":2.5}, {"label":"A", "x":2, "y":2}, {"label":"S", "x":3, "y":2.15}, {"label":"D", "x":4, "y":2}, {"label":"F", "x":5, "y":2}, {"label":"G", "x":6, "y":2}, {"label":"F4", "x":0, "y":3.5}, {"label":"Ctrl", "x":1, "y":3.5}, {"label":"Z", "x":2, "y":3}, {"label":"X", "x":3, "y":3.15}, {"label":"C", "x":4, "y":3}, {"label":"V", "x":5, "y":3}, {"label":"B", "x":6, "y":3}, {"label":"F5", "x":0, "y":4.5}, {"label":"Super", "x":1, "y":4.5}, {"label":"Alt", "x":2, "y":4, "h":1.5}, {"label":"Bksp", "x":3, "y":4.25, "h":1.25}, {"label":"Enter", "x":4, "y":4, "h":1.5}, {"label":"Space", "x":5, "y":4, "h":1.75}, {"label":"Fn", "x":6, "y":4, "h":1.75}]
diff --git a/keyboards/mechllama/g35/keymaps/default/keymap.c b/keyboards/mechllama/g35/keymaps/default/keymap.c
index 4568f54f54..09d7afe171 100644
--- a/keyboards/mechllama/g35/keymaps/default/keymap.c
+++ b/keyboards/mechllama/g35/keymaps/default/keymap.c
@@ -67,7 +67,7 @@ const char* get_layer_name(uint8_t layer) {
}
bool oled_task_user(void) {
- oled_write_ln_P(get_layer_name(biton32(layer_state)), false);
+ oled_write_ln_P(get_layer_name(get_highest_layer(layer_state)), false);
return false;
}
#endif
diff --git a/keyboards/mechllama/g35/v1/config.h b/keyboards/mechllama/g35/v1/config.h
index 9e7be98ea1..fbda4b7db2 100644
--- a/keyboards/mechllama/g35/v1/config.h
+++ b/keyboards/mechllama/g35/v1/config.h
@@ -17,8 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DEVICE_VER 0x0001
-
#define MATRIX_ROW_PINS { F5, F6, F4, F1, D4 }
#define MATRIX_COL_PINS { D6, D7, B4, B5, B6, F0, D5 }
diff --git a/keyboards/mechllama/g35/v1/info.json b/keyboards/mechllama/g35/v1/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/mechllama/g35/v1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/mechllama/g35/v2/config.h b/keyboards/mechllama/g35/v2/config.h
index 09d5f607d2..cd4d6e991c 100644
--- a/keyboards/mechllama/g35/v2/config.h
+++ b/keyboards/mechllama/g35/v2/config.h
@@ -17,8 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DEVICE_VER 0x0002
-
#define MATRIX_ROW_PINS { F5, F4, F1, F0, D4 }
#define MATRIX_COL_PINS { D6, D7, B4, B5, B6, F6, D5 }
diff --git a/keyboards/mechllama/g35/v2/info.json b/keyboards/mechllama/g35/v2/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/mechllama/g35/v2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/mechlovin/adelais/config.h b/keyboards/mechlovin/adelais/config.h
index 035ffa8032..08df109685 100644
--- a/keyboards/mechlovin/adelais/config.h
+++ b/keyboards/mechlovin/adelais/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C // "ML"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Team.Mechlovin
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15 \ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/info.json b/keyboards/mechlovin/adelais/info.json
index 7a858277e7..a583373c13 100644
--- a/keyboards/mechlovin/adelais/info.json
+++ b/keyboards/mechlovin/adelais/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Adelais",
+ "manufacturer": "Team.Mechlovin",
"url": "",
"maintainer": "mechlovin",
+ "usb": {
+ "vid": "0x4D4C",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_all": "LAYOUT_alice_split_bs"
},
diff --git a/keyboards/mechlovin/adelais/keymaps/brandonschlack/keymap.c b/keyboards/mechlovin/adelais/keymaps/brandonschlack/keymap.c
index fb2d43ca96..7c2b259063 100644
--- a/keyboards/mechlovin/adelais/keymaps/brandonschlack/keymap.c
+++ b/keyboards/mechlovin/adelais/keymaps/brandonschlack/keymap.c
@@ -197,7 +197,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
TG_BASE, QM_MAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
TG_REDR, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
TG_MAIL, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RGB_LYR, RGB_THM, _______, EEP_RST, RESET, RESET, _______, _______, _______, _______, _______, _______, _______, \
+ _______, RGB_LYR, RGB_THM, _______, EEP_RST, QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______ \
)
diff --git a/keyboards/mechlovin/adelais/keymaps/default/keymap.c b/keyboards/mechlovin/adelais/keymaps/default/keymap.c
index 2a38663ed2..bb514bf15b 100644
--- a/keyboards/mechlovin/adelais/keymaps/default/keymap.c
+++ b/keyboards/mechlovin/adelais/keymaps/default/keymap.c
@@ -22,7 +22,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_SPC, KC_CAPS, KC_A, KC_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_BSLS, MO(1), KC_RSFT, KC_UP,
KC_LCTL, KC_LALT, KC_SPC, MO(2), KC_SPC, KC_RALT, KC_RCTL ),
- [0] = LAYOUT_all(
+ [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 ),
+ [2] = LAYOUT_all(
+ QK_BOOT, KC_TRNS, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, 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_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_P0, KC_PDOT, 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,
@@ -35,19 +47,17 @@ 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 {
+ tap_code(KC_VOLU);
}
- }
- else if (index == 1) {
+ } else if (index == 1) {
if (clockwise) {
tap_code(KC_LEFT);
} else {
tap_code(KC_RGHT);
}
- }
- else if (index == 2) {
+ } else if (index == 2) {
if (clockwise) {
tap_code(KC_UP);
} else {
@@ -57,4 +67,46 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
return true;
}
- #endif
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ switch (keycode) {
+#ifdef RGB_MATRIX_ENABLE
+ case KC_F13: // toggle rgb matrix
+ rgb_matrix_toggle();
+ return false;
+ case KC_F14:
+ rgb_matrix_step();
+ return false;
+ case KC_F15:
+ rgb_matrix_increase_speed();
+ return false;
+ case KC_F16:
+ rgb_matrix_decrease_speed();
+ return false;
+ case KC_F17:
+ rgb_matrix_increase_hue();
+ return false;
+ case KC_F18:
+ rgb_matrix_decrease_hue();
+ return false;
+ case KC_F19:
+ rgb_matrix_increase_sat();
+ return false;
+ case KC_F20:
+ rgb_matrix_decrease_sat();
+ return false;
+ case KC_F21:
+ rgb_matrix_increase_val();
+ return false;
+ case KC_F22:
+ rgb_matrix_decrease_val();
+ return false;
+#endif
+ default:
+ break;
+ }
+ }
+ return true;
+}
diff --git a/keyboards/mechlovin/adelais/keymaps/via/keymap.c b/keyboards/mechlovin/adelais/keymaps/via/keymap.c
index 6ab566e1c3..c83d398f64 100644
--- a/keyboards/mechlovin/adelais/keymaps/via/keymap.c
+++ b/keyboards/mechlovin/adelais/keymaps/via/keymap.c
@@ -15,6 +15,20 @@
*/
#include QMK_KEYBOARD_H
+enum my_keycodes {
+ BL_TOG = USER00,
+ BL_EFFECT = USER01,
+ BL_ISPD = USER02,
+ BL_DSPD = USER03,
+ BL_IHUE = USER04,
+ BL_DHUE = USER05,
+ BL_ISAT = USER06,
+ BL_DSAT = USER07,
+ BL_IVAL = USER08,
+ BL_DVAL = USER09
+};
+
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
KC_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_DEL,
@@ -29,11 +43,11 @@ 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 ),
[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 ),
+ QK_BOOT, KC_TRNS, BL_TOG, BL_EFFECT, BL_ISPD, BL_DSPD, BL_IHUE, BL_DHUE, BL_ISAT, BL_DSAT, BL_IVAL, BL_DVAL, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, 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_PPLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_P0, KC_PDOT, 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,
@@ -51,15 +65,13 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
} else {
tap_code(KC_VOLU);
}
- }
- else if (index == 1) {
+ } else if (index == 1) {
if (clockwise) {
tap_code(KC_LEFT);
} else {
tap_code(KC_RGHT);
}
- }
- else if (index == 2) {
+ } else if (index == 2) {
if (clockwise) {
tap_code(KC_UP);
} else {
@@ -69,4 +81,46 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
return true;
}
- #endif
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ switch (keycode) {
+#ifdef RGB_MATRIX_ENABLE
+ case BL_TOG: // toggle rgb matrix
+ rgb_matrix_toggle();
+ return false;
+ case BL_EFFECT:
+ rgb_matrix_step();
+ return false;
+ case BL_ISPD:
+ rgb_matrix_increase_speed();
+ return false;
+ case BL_DSPD:
+ rgb_matrix_decrease_speed();
+ return false;
+ case BL_IHUE:
+ rgb_matrix_increase_hue();
+ return false;
+ case BL_DHUE:
+ rgb_matrix_decrease_hue();
+ return false;
+ case BL_ISAT:
+ rgb_matrix_increase_sat();
+ return false;
+ case BL_DSAT:
+ rgb_matrix_decrease_sat();
+ return false;
+ case BL_IVAL:
+ rgb_matrix_increase_val();
+ return false;
+ case BL_DVAL:
+ rgb_matrix_decrease_val();
+ return false;
+#endif
+ default:
+ break;
+ }
+ }
+ return true;
+}
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev1/config.h b/keyboards/mechlovin/adelais/rgb_led/rev1/config.h
index c0cae1600b..7f151ae09a 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev1/config.h
+++ b/keyboards/mechlovin/adelais/rgb_led/rev1/config.h
@@ -1,11 +1,7 @@
#pragma once
-#define PRODUCT_ID 0xAEC1
-#define PRODUCT Adelais En Ciel
-
#define MATRIX_ROW_PINS { B1, A0, C13, A1, A2}
#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, B11, B10, B8, B4, B5, B3, C14, A15 }
-#define UNUSED_PINS
#define RGB_DI_PIN A7
#define DRIVER_LED_TOTAL 91
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev1/info.json b/keyboards/mechlovin/adelais/rgb_led/rev1/info.json
new file mode 100644
index 0000000000..92ee67be74
--- /dev/null
+++ b/keyboards/mechlovin/adelais/rgb_led/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Adelais En Ciel",
+ "usb": {
+ "pid": "0xAEC1"
+ }
+}
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev2/config.h b/keyboards/mechlovin/adelais/rgb_led/rev2/config.h
index cd290cdcd1..dbeb73cda2 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev2/config.h
+++ b/keyboards/mechlovin/adelais/rgb_led/rev2/config.h
@@ -1,8 +1,5 @@
#pragma once
-#define PRODUCT_ID 0xAEC2
-#define PRODUCT Adelais En Ciel Rev2
-
#define MATRIX_ROW_PINS { B1, A0, C13, A1, A2}
#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, B11, B10, B8, B4, B5, B3, C14, A7 }
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev2/info.json b/keyboards/mechlovin/adelais/rgb_led/rev2/info.json
new file mode 100644
index 0000000000..8af90a2c55
--- /dev/null
+++ b/keyboards/mechlovin/adelais/rgb_led/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Adelais En Ciel Rev2",
+ "usb": {
+ "pid": "0xAEC2"
+ }
+}
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/config.h b/keyboards/mechlovin/adelais/rgb_led/rev3/config.h
index c0817d6062..e16d5f2ce5 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev3/config.h
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/config.h
@@ -17,12 +17,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define PRODUCT_ID 0xAEC3
-#define PRODUCT Adelais En Ciel Rev3
-
#define MATRIX_ROW_PINS { A4, A3, C13, A1, A2}
-#define MATRIX_COL_PINS { B10, B11, B2, B1, B0, A6, A5, A14, A13, A15, B3, B4, B5, B8, B9 }
+#define MATRIX_COL_PINS { B10, B11, B2, B1, B0, A6, A5, A10, A9, A15, B3, B4, B5, B8, B9 }
+#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN A7
#define WS2812_SPI SPID1 // default: SPID1
#define WS2812_SPI_MOSI_PAL_MODE 5 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5
@@ -40,7 +38,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
+#endif
+#ifdef RGB_MATRIX_ENABLE
//rgb matrix setting
// 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)
@@ -52,13 +52,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DRIVER_ADDR_1 0b0110010
#define DRIVER_COUNT 1
#define DRIVER_LED_TOTAL 66
+
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
#define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#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_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 255 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_PINWHEEL // Sets the default mode, if none has been set
#define ENABLE_RGB_MATRIX_ALPHAS_MODS
@@ -108,12 +109,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_MATRIX_DISABLE_KEYCODES
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+#endif
+
+#ifdef ENCODER_ENABLE
#define ENCODERS_PAD_A { B12 }
#define ENCODERS_PAD_B { B13 }
#define ENCODER_RESOLUTION 4
-
#define TAP_CODE_DELAY 10
-
+#endif
#define LED_NUM_LOCK_PIN A0
#define LED_CAPS_LOCK_PIN C14
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/halconf.h b/keyboards/mechlovin/adelais/rgb_led/rev3/halconf.h
index d001829d03..a97c4bbc21 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev3/halconf.h
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/halconf.h
@@ -18,9 +18,7 @@
#define HAL_USE_I2C TRUE
-#define PAL_USE_CALLBACKS FALSE
-
-#define PAL_USE_WAIT FALSE
+#define HAL_USE_SPI TRUE
#include_next <halconf.h>
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/info.json b/keyboards/mechlovin/adelais/rgb_led/rev3/info.json
new file mode 100644
index 0000000000..2f963ec895
--- /dev/null
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Adelais En Ciel Rev3",
+ "usb": {
+ "pid": "0xAEC3"
+ }
+}
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/mcuconf.h b/keyboards/mechlovin/adelais/rgb_led/rev3/mcuconf.h
index 20d2a82c27..aa5ea7335b 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev3/mcuconf.h
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/mcuconf.h
@@ -18,18 +18,8 @@
#include_next <mcuconf.h>
-#undef STM32_GPT_USE_TIM15
-#define STM32_GPT_USE_TIM15 FALSE
-
-#undef STM32_I2C_USE_I2C1
-#define STM32_I2C_USE_I2C1 TRUE
-
-#undef STM32_PWM_USE_TIM3
-#define STM32_PWM_USE_TIM3 FALSE
-
#undef STM32_SPI_USE_SPI1
#define STM32_SPI_USE_SPI1 TRUE
-#undef STM32_SPI_USE_SPI2
-#define STM32_SPI_USE_SPI2 FALSE
-
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE \ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c b/keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c
index b20f897720..d9ea7993cf 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/rev3.c
@@ -94,8 +94,8 @@ led_config_t g_led_config = {
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
{17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, NO_LED},
{32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, NO_LED, 44, NO_LED},
- {45, NO_LED, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58},
- {59, NO_LED, 60, NO_LED, 61, NO_LED, 62, NO_LED, 63, NO_LED, 64, NO_LED, NO_LED, NO_LED, 65},
+ {45, 0, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58},
+ {59, 16, 60, 31, 61, NO_LED, 62, NO_LED, 63, NO_LED, 64, NO_LED, NO_LED, NO_LED, 65},
}, {
//LED Index to Physical Positon
{0,0}, { 17, 0}, { 34, 0 }, { 51, 0 }, { 69, 0}, { 86, 0}, {100, 0}, {103, 0}, { 120, 0}, { 138, 0}, { 155, 0}, { 172, 0}, { 189, 0}, {207, 0}, {215, 0}, {224, 0},
@@ -120,47 +120,3 @@ __attribute__((weak)) void rgb_matrix_indicators_user(void) {
#endif
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
- if (record->event.pressed) {
- switch(keycode) {
- #ifdef RGBLIGHT_ENABLE
- #ifdef RGB_MATRIX_ENABLE
- case KC_F13: // toggle rgb matrix
- rgb_matrix_toggle();
- return false;
- case KC_F14:
- rgb_matrix_step();
- return false;
- case KC_F15:
- rgb_matrix_increase_speed();
- return false;
- case KC_F16:
- rgb_matrix_decrease_speed();
- return false;
- case KC_F17:
- rgb_matrix_increase_hue();
- return false;
- case KC_F18:
- rgb_matrix_decrease_hue();
- return false;
- case KC_F19:
- rgb_matrix_increase_sat();
- return false;
- case KC_F20:
- rgb_matrix_decrease_sat();
- return false;
- case KC_F21:
- rgb_matrix_increase_val();
- return false;
- case KC_F22:
- rgb_matrix_decrease_val();
- return false;
- #endif
- #endif
- default:
- break;
- }
- }
- return true;
-} \ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/rules.mk b/keyboards/mechlovin/adelais/rgb_led/rev3/rules.mk
index 904d20877b..3407a7b780 100644
--- a/keyboards/mechlovin/adelais/rgb_led/rev3/rules.mk
+++ b/keyboards/mechlovin/adelais/rgb_led/rev3/rules.mk
@@ -1,5 +1,19 @@
+# MCU name
+MCU = STM32F103
+
+# Bootloader selection
+BOOTLOADER = stm32duino
+
+# Build Options
+# change yes to no to disable
+#
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3741
RGBLIGHT_ENABLE = yes
ENCODER_ENABLE = yes
WS2812_DRIVER = spi
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE \ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/config.h b/keyboards/mechlovin/adelais/standard_led/arm/config.h
index 4377405fc6..72386fdc59 100644
--- a/keyboards/mechlovin/adelais/standard_led/arm/config.h
+++ b/keyboards/mechlovin/adelais/standard_led/arm/config.h
@@ -17,11 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define PRODUCT Adelais
-
#define MATRIX_ROW_PINS { B1, A0, C13, A1, A2}
#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, B11, B10, B8, B4, B5, B3, C14, A15 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/info.json b/keyboards/mechlovin/adelais/standard_led/arm/info.json
new file mode 100644
index 0000000000..68e7b3d144
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "Adelais"
+}
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev2/config.h b/keyboards/mechlovin/adelais/standard_led/arm/rev2/config.h
deleted file mode 100644
index 7c2c63ea21..0000000000
--- a/keyboards/mechlovin/adelais/standard_led/arm/rev2/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-#define PRODUCT_ID 0xAD01 \ No newline at end of file
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev2/info.json b/keyboards/mechlovin/adelais/standard_led/arm/rev2/info.json
new file mode 100644
index 0000000000..ce04dbb068
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "pid": "0xAD01"
+ }
+}
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev3/config.h b/keyboards/mechlovin/adelais/standard_led/arm/rev3/config.h
index 4d56fedf05..69af2941a6 100644
--- a/keyboards/mechlovin/adelais/standard_led/arm/rev3/config.h
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev3/config.h
@@ -1,7 +1,5 @@
#pragma once
-#define PRODUCT_ID 0xAD02
-
#define ENCODERS_PAD_A { A6, A4, B7 }
#define ENCODERS_PAD_B { A5, A3, B6 }
#define ENCODER_RESOLUTION 4
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev3/info.json b/keyboards/mechlovin/adelais/standard_led/arm/rev3/info.json
new file mode 100644
index 0000000000..f3b66e9eb2
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev3/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "pid": "0xAD02"
+ }
+}
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev4/config.h b/keyboards/mechlovin/adelais/standard_led/arm/rev4/config.h
index ca793f1fec..70fa00220b 100644
--- a/keyboards/mechlovin/adelais/standard_led/arm/rev4/config.h
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev4/config.h
@@ -16,8 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
-#define PRODUCT_ID 0xAD03
-
#define ENCODERS_PAD_A { A6, A4, B7 }
#define ENCODERS_PAD_B { A5, A3, B6 }
#define ENCODER_RESOLUTION 4
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/rev4/info.json b/keyboards/mechlovin/adelais/standard_led/arm/rev4/info.json
new file mode 100644
index 0000000000..f4c096143b
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/arm/rev4/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "pid": "0xAD03"
+ }
+}
diff --git a/keyboards/mechlovin/adelais/standard_led/avr/rev1/config.h b/keyboards/mechlovin/adelais/standard_led/avr/rev1/config.h
index 9093d262e4..31acc74b90 100644
--- a/keyboards/mechlovin/adelais/standard_led/avr/rev1/config.h
+++ b/keyboards/mechlovin/adelais/standard_led/avr/rev1/config.h
@@ -16,8 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
-#define PRODUCT_ID 0xAD04
-#define PRODUCT Adelais AVR
/*
* Keyboard Matrix Assignments
*
@@ -29,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/mechlovin/adelais/standard_led/avr/rev1/info.json b/keyboards/mechlovin/adelais/standard_led/avr/rev1/info.json
new file mode 100644
index 0000000000..d827607b81
--- /dev/null
+++ b/keyboards/mechlovin/adelais/standard_led/avr/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Adelais AVR",
+ "usb": {
+ "pid": "0xAD04"
+ }
+}
diff --git a/keyboards/mechlovin/delphine/config.h b/keyboards/mechlovin/delphine/config.h
index a642f37f9b..7d50bb4615 100644
--- a/keyboards/mechlovin/delphine/config.h
+++ b/keyboards/mechlovin/delphine/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C
-#define MANUFACTURER Mechlovin
-#define PRODUCT Mechlovin Delphine
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
diff --git a/keyboards/mechlovin/delphine/info.json b/keyboards/mechlovin/delphine/info.json
index 38ae0a3beb..a3fe9fb200 100644
--- a/keyboards/mechlovin/delphine/info.json
+++ b/keyboards/mechlovin/delphine/info.json
@@ -1,7 +1,11 @@
{
"keyboard_name": "Delphine",
+ "manufacturer": "Mechlovin",
"url": "",
"maintainer": "mechlovin",
+ "usb": {
+ "vid": "0x4D4C"
+ },
"layouts": {
"LAYOUT_ortho_6x4": {
"layout": [
diff --git a/keyboards/mechlovin/delphine/mono_led/config.h b/keyboards/mechlovin/delphine/mono_led/config.h
index ead627937c..36923bb968 100644
--- a/keyboards/mechlovin/delphine/mono_led/config.h
+++ b/keyboards/mechlovin/delphine/mono_led/config.h
@@ -1,10 +1,6 @@
#pragma once
-#define PRODUCT_ID 0xDEF1
-#define DEVICE_VER 0x0001
-
-
#ifdef BACKLIGHT_ENABLE
#define BACKLIGHT_PIN B6
// #define BACKLIGHT_BREATHING
diff --git a/keyboards/mechlovin/delphine/mono_led/info.json b/keyboards/mechlovin/delphine/mono_led/info.json
new file mode 100644
index 0000000000..2665906b80
--- /dev/null
+++ b/keyboards/mechlovin/delphine/mono_led/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0xDEF1",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/mechlovin/delphine/rgb_led/config.h b/keyboards/mechlovin/delphine/rgb_led/config.h
index 0ed8721d23..0d5bfb57f9 100644
--- a/keyboards/mechlovin/delphine/rgb_led/config.h
+++ b/keyboards/mechlovin/delphine/rgb_led/config.h
@@ -1,8 +1,5 @@
#pragma once
-#define PRODUCT_ID 0xDEF2
-#define DEVICE_VER 0x0001
-
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN E2
#define RGBLED_NUM 13
diff --git a/keyboards/mechlovin/delphine/rgb_led/info.json b/keyboards/mechlovin/delphine/rgb_led/info.json
new file mode 100644
index 0000000000..0a8f1ab220
--- /dev/null
+++ b/keyboards/mechlovin/delphine/rgb_led/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0xDEF2",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/mechlovin/foundation/config.h b/keyboards/mechlovin/foundation/config.h
new file mode 100644
index 0000000000..35145c440b
--- /dev/null
+++ b/keyboards/mechlovin/foundation/config.h
@@ -0,0 +1,80 @@
+/*
+Copyright 2022 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"
+
+#define MATRIX_ROW_PINS { B12, B13, B14, A8, A2 }
+#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, A6, A5, A4, A3, A15, B9, B8, B7, B6, B5, B4, B3}
+#define UNUSED_PINS
+
+/* 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)
+ *
+ */
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define LED_PIN_ON_STATE 0
+#define LED_CAPS_LOCK_PIN A1
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+#define RGB_DI_PIN B15
+#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 */
+# 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
+
+// Encoder pins
+#define ENCODERS_PAD_A { C13 }
+#define ENCODERS_PAD_B { C14 }
+
+#define ENCODER_RESOLUTION 4
+#define TAP_CODE_DELAY 10 \ No newline at end of file
diff --git a/keyboards/mechlovin/foundation/foundation.c b/keyboards/mechlovin/foundation/foundation.c
new file mode 100644
index 0000000000..12d3e848d7
--- /dev/null
+++ b/keyboards/mechlovin/foundation/foundation.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 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 "foundation.h"
diff --git a/keyboards/mechlovin/foundation/foundation.h b/keyboards/mechlovin/foundation/foundation.h
new file mode 100644
index 0000000000..d9d317deb7
--- /dev/null
+++ b/keyboards/mechlovin/foundation/foundation.h
@@ -0,0 +1,60 @@
+/* Copyright 2022 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 "quantum.h"
+
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K2F, 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, \
+ 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, K2F, KC_NO, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, K3G, KC_NO }, \
+ { K40, K41, K42, K43, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, KC_NO, K4B, K4C, K4D, K4E, K4F, K4G, K4H }, \
+}
+
+#define LAYOUT_tkl_nofrow_ansi( \
+ 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, K2E, \
+ 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, KC_NO, K2E, KC_NO, KC_NO, KC_NO }, \
+ { K30, K31, KC_NO, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, K3G, KC_NO }, \
+ { K40, K41, K42, K43, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, KC_NO, K4B, K4C, K4D, K4E, K4F, K4G, K4H }, \
+}
+
+#define LAYOUT_tkl_nofrow_iso( \
+ 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, K1F, K1G, K1H, \
+ 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, 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, KC_NO, K1F, K1G, K1H }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, KC_NO, KC_NO, KC_NO }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO, KC_NO, K3G, KC_NO }, \
+ { K40, K41, K42, K43, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, KC_NO, K4B, K4C, K4D, K4E, K4F, K4G, K4H }, \
+}
diff --git a/keyboards/mechlovin/foundation/info.json b/keyboards/mechlovin/foundation/info.json
new file mode 100644
index 0000000000..aa4148a40a
--- /dev/null
+++ b/keyboards/mechlovin/foundation/info.json
@@ -0,0 +1,23 @@
+{
+ "keyboard_name": "Foundation FRL",
+ "manufacturer": "Mechlovin Studio",
+ "url": "",
+ "maintainer": "Protozoa",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x0180",
+ "device_version": "0.0.2"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"0,0", "x":0.5, "y":0}, {"label":"0,1", "x":2.25, "y":0}, {"label":"0,2", "x":3.25, "y":0}, {"label":"0,3", "x":4.25, "y":0}, {"label":"0,4", "x":5.25, "y":0}, {"label":"0,5", "x":6.25, "y":0}, {"label":"0,6", "x":7.25, "y":0}, {"label":"0,7", "x":8.25, "y":0}, {"label":"0,8", "x":9.25, "y":0}, {"label":"0,9", "x":10.25, "y":0}, {"label":"0,10", "x":11.25, "y":0}, {"label":"0,11", "x":12.25, "y":0}, {"label":"0,12", "x":13.25, "y":0}, {"label":"0,13", "x":14.25, "y":0}, {"label":"0,14", "x":15.25, "y":0}, {"label":"2,15", "x":16.25, "y":0}, {"label":"0,15", "x":17.5, "y":0}, {"label":"0,16", "x":18.5, "y":0}, {"label":"0,17", "x":19.5, "y":0}, {"label":"1,0", "x":0.5, "y":1}, {"label":"1,1", "x":2.25, "y":1, "w":1.5}, {"label":"1,2", "x":3.75, "y":1}, {"label":"1,3", "x":4.75, "y":1}, {"label":"1,4", "x":5.75, "y":1}, {"label":"1,5", "x":6.75, "y":1}, {"label":"1,6", "x":7.75, "y":1}, {"label":"1,7", "x":8.75, "y":1}, {"label":"1,8", "x":9.75, "y":1}, {"label":"1,9", "x":10.75, "y":1}, {"label":"1,10", "x":11.75, "y":1}, {"label":"1,11", "x":12.75, "y":1}, {"label":"1,12", "x":13.75, "y":1}, {"label":"1,13", "x":14.75, "y":1}, {"label":"1,14", "x":15.75, "y":1, "w":1.5}, {"label":"1,15", "x":17.5, "y":1}, {"label":"1,16", "x":18.5, "y":1}, {"label":"1,17", "x":19.5, "y":1}, {"label":"2,0", "x":0.5, "y":2}, {"label":"2,1", "x":2.25, "y":2, "w":1.75}, {"label":"2,2", "x":4, "y":2}, {"label":"2,3", "x":5, "y":2}, {"label":"2,4", "x":6, "y":2}, {"label":"2,5", "x":7, "y":2}, {"label":"2,6", "x":8, "y":2}, {"label":"2,7", "x":9, "y":2}, {"label":"2,8", "x":10, "y":2}, {"label":"2,9", "x":11, "y":2}, {"label":"2,10", "x":12, "y":2}, {"label":"2,11", "x":13, "y":2}, {"label":"2,12", "x":14, "y":2}, {"label":"2,13", "x":15, "y":2}, {"label":"2,14", "x":16, "y":2, "w":1.25}, {"label":"3,0", "x":0.5, "y":3}, {"label":"3,1", "x":2.25, "y":3, "w":1.25}, {"label":"3,2", "x":3.5, "y":3}, {"label":"3,3", "x":4.5, "y":3}, {"label":"3,4", "x":5.5, "y":3}, {"label":"3,5", "x":6.5, "y":3}, {"label":"3,6", "x":7.5, "y":3}, {"label":"3,7", "x":8.5, "y":3}, {"label":"3,8", "x":9.5, "y":3}, {"label":"3,9", "x":10.5, "y":3}, {"label":"3,10", "x":11.5, "y":3}, {"label":"3,11", "x":12.5, "y":3}, {"label":"3,12", "x":13.5, "y":3}, {"label":"3,13", "x":14.5, "y":3, "w":1.75}, {"label":"3,14", "x":16.25, "y":3}, {"label":"3,16", "x":18.5, "y":3}, {"label":"4,0", "x":0.5, "y":4}, {"label":"4,1", "x":2.25, "y":4, "w":1.25}, {"label":"4,2", "x":3.5, "y":4, "w":1.25}, {"label":"4,3", "x":4.75, "y":4, "w":1.25}, {"label":"4,7", "x":6, "y":4, "w":6.25}, {"label":"4,11", "x":12.25, "y":4, "w":1.25}, {"label":"4,12", "x":13.5, "y":4, "w":1.25}, {"label":"4,13", "x":14.75, "y":4, "w":1.25}, {"label":"4,14", "x":16, "y":4, "w":1.25}, {"label":"4,15", "x":17.5, "y":4}, {"label":"4,16", "x":18.5, "y":4}, {"label":"4,17", "x":19.5, "y":4}]
+ },
+ "LAYOUT_tkl_nofrow_ansi": {
+ "layout": [{"label":"0,0", "x":0.5, "y":0}, {"label":"0,1", "x":2.25, "y":0}, {"label":"0,2", "x":3.25, "y":0}, {"label":"0,3", "x":4.25, "y":0}, {"label":"0,4", "x":5.25, "y":0}, {"label":"0,5", "x":6.25, "y":0}, {"label":"0,6", "x":7.25, "y":0}, {"label":"0,7", "x":8.25, "y":0}, {"label":"0,8", "x":9.25, "y":0}, {"label":"0,9", "x":10.25, "y":0}, {"label":"0,10", "x":11.25, "y":0}, {"label":"0,11", "x":12.25, "y":0}, {"label":"0,12", "x":13.25, "y":0}, {"label":"0,13", "x":14.25, "y":0}, {"label":"0,14", "x":15.25, "y":0, "w":2}, {"label":"0,15", "x":17.5, "y":0}, {"label":"0,16", "x":18.5, "y":0}, {"label":"0,17", "x":19.5, "y":0}, {"label":"1,0", "x":0.5, "y":1}, {"label":"1,1", "x":2.25, "y":1, "w":1.5}, {"label":"1,2", "x":3.75, "y":1}, {"label":"1,3", "x":4.75, "y":1}, {"label":"1,4", "x":5.75, "y":1}, {"label":"1,5", "x":6.75, "y":1}, {"label":"1,6", "x":7.75, "y":1}, {"label":"1,7", "x":8.75, "y":1}, {"label":"1,8", "x":9.75, "y":1}, {"label":"1,9", "x":10.75, "y":1}, {"label":"1,10", "x":11.75, "y":1}, {"label":"1,11", "x":12.75, "y":1}, {"label":"1,12", "x":13.75, "y":1}, {"label":"1,13", "x":14.75, "y":1}, {"label":"1,14", "x":15.75, "y":1, "w":1.5}, {"label":"1,15", "x":17.5, "y":1}, {"label":"1,16", "x":18.5, "y":1}, {"label":"1,17", "x":19.5, "y":1}, {"label":"2,0", "x":0.5, "y":2}, {"label":"2,1", "x":2.25, "y":2, "w":1.75}, {"label":"2,2", "x":4, "y":2}, {"label":"2,3", "x":5, "y":2}, {"label":"2,4", "x":6, "y":2}, {"label":"2,5", "x":7, "y":2}, {"label":"2,6", "x":8, "y":2}, {"label":"2,7", "x":9, "y":2}, {"label":"2,8", "x":10, "y":2}, {"label":"2,9", "x":11, "y":2}, {"label":"2,10", "x":12, "y":2}, {"label":"2,11", "x":13, "y":2}, {"label":"2,12", "x":14, "y":2}, {"label":"2,14", "x":15, "y":2, "w":2.25}, {"label":"3,0", "x":0.5, "y":3}, {"label":"3,1", "x":2.25, "y":3, "w":2.25}, {"label":"3,3", "x":4.5, "y":3}, {"label":"3,4", "x":5.5, "y":3}, {"label":"3,5", "x":6.5, "y":3}, {"label":"3,6", "x":7.5, "y":3}, {"label":"3,7", "x":8.5, "y":3}, {"label":"3,8", "x":9.5, "y":3}, {"label":"3,9", "x":10.5, "y":3}, {"label":"3,10", "x":11.5, "y":3}, {"label":"3,11", "x":12.5, "y":3}, {"label":"3,12", "x":13.5, "y":3}, {"label":"3,13", "x":14.5, "y":3, "w":2.75}, {"label":"3,16", "x":18.5, "y":3}, {"label":"4,0", "x":0.5, "y":4}, {"label":"4,1", "x":2.25, "y":4, "w":1.25}, {"label":"4,2", "x":3.5, "y":4, "w":1.25}, {"label":"4,3", "x":4.75, "y":4, "w":1.25}, {"label":"4,7", "x":6, "y":4, "w":6.25}, {"label":"4,11", "x":12.25, "y":4, "w":1.25}, {"label":"4,12", "x":13.5, "y":4, "w":1.25}, {"label":"4,13", "x":14.75, "y":4, "w":1.25}, {"label":"4,14", "x":16, "y":4, "w":1.25}, {"label":"4,15", "x":17.5, "y":4}, {"label":"4,16", "x":18.5, "y":4}, {"label":"4,17", "x":19.5, "y":4}]
+ },
+ "LAYOUT_tkl_nofrow_iso": {
+ "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,1", "x":1.75, "y":0}, {"label":"0,2", "x":2.75, "y":0}, {"label":"0,3", "x":3.75, "y":0}, {"label":"0,4", "x":4.75, "y":0}, {"label":"0,5", "x":5.75, "y":0}, {"label":"0,6", "x":6.75, "y":0}, {"label":"0,7", "x":7.75, "y":0}, {"label":"0,8", "x":8.75, "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":13.75, "y":0}, {"label":"0,14", "x":14.75, "y":0, "w":2}, {"label":"0,15", "x":17, "y":0}, {"label":"0,16", "x":18, "y":0}, {"label":"0,17", "x":19, "y":0}, {"label":"1,0", "x":0, "y":1}, {"label":"1,1", "x":1.75, "y":1, "w":1.5}, {"label":"1,2", "x":3.25, "y":1}, {"label":"1,3", "x":4.25, "y":1}, {"label":"1,4", "x":5.25, "y":1}, {"label":"1,5", "x":6.25, "y":1}, {"label":"1,6", "x":7.25, "y":1}, {"label":"1,7", "x":8.25, "y":1}, {"label":"1,8", "x":9.25, "y":1}, {"label":"1,9", "x":10.25, "y":1}, {"label":"1,10", "x":11.25, "y":1}, {"label":"1,11", "x":12.25, "y":1}, {"label":"1,12", "x":13.25, "y":1}, {"label":"1,13", "x":14.25, "y":1}, {"label":"2,14", "x":15.5, "y":1, "w":1.25, "h":2}, {"label":"1,15", "x":17, "y":1}, {"label":"1,16", "x":18, "y":1}, {"label":"1,17", "x":19, "y":1}, {"label":"2,0", "x":0, "y":2}, {"label":"2,1", "x":1.75, "y":2, "w":1.75}, {"label":"2,2", "x":3.5, "y":2}, {"label":"2,3", "x":4.5, "y":2}, {"label":"2,4", "x":5.5, "y":2}, {"label":"2,5", "x":6.5, "y":2}, {"label":"2,6", "x":7.5, "y":2}, {"label":"2,7", "x":8.5, "y":2}, {"label":"2,8", "x":9.5, "y":2}, {"label":"2,9", "x":10.5, "y":2}, {"label":"2,10", "x":11.5, "y":2}, {"label":"2,11", "x":12.5, "y":2}, {"label":"2,12", "x":13.5, "y":2}, {"label":"2,13", "x":14.5, "y":2}, {"label":"3,0", "x":0, "y":3}, {"label":"3,1", "x":1.75, "y":3, "w":1.25}, {"label":"3,2", "x":3, "y":3}, {"label":"3,3", "x":4, "y":3}, {"label":"3,4", "x":5, "y":3}, {"label":"3,5", "x":6, "y":3}, {"label":"3,6", "x":7, "y":3}, {"label":"3,7", "x":8, "y":3}, {"label":"3,8", "x":9, "y":3}, {"label":"3,9", "x":10, "y":3}, {"label":"3,10", "x":11, "y":3}, {"label":"3,11", "x":12, "y":3}, {"label":"3,12", "x":13, "y":3}, {"label":"3,13", "x":14, "y":3, "w":2.75}, {"label":"3,16", "x":18, "y":3}, {"label":"4,0", "x":0, "y":4}, {"label":"4,1", "x":1.75, "y":4, "w":1.25}, {"label":"4,2", "x":3, "y":4, "w":1.25}, {"label":"4,3", "x":4.25, "y":4, "w":1.25}, {"label":"4,7", "x":5.5, "y":4, "w":6.25}, {"label":"4,11", "x":11.75, "y":4, "w":1.25}, {"label":"4,12", "x":13, "y":4, "w":1.25}, {"label":"4,13", "x":14.25, "y":4, "w":1.25}, {"label":"4,14", "x":15.5, "y":4, "w":1.25}, {"label":"4,15", "x":17, "y":4}, {"label":"4,16", "x":18, "y":4}, {"label":"4,17", "x":19, "y":4}]
+ },
+
+ }
+} \ No newline at end of file
diff --git a/keyboards/mechlovin/foundation/keymaps/default/keymap.c b/keyboards/mechlovin/foundation/keymaps/default/keymap.c
new file mode 100644
index 0000000000..4cabf521d2
--- /dev/null
+++ b/keyboards/mechlovin/foundation/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+/* Copyright 2022 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_tkl_nofrow_ansi(
+ 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_BSPC, 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_END, 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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_F5, 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_nofrow_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
+ ),
+
+};
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [1] = {ENCODER_CCW_CW(RGB_MOD, RGB_RMOD)}
+};
+#endif
diff --git a/keyboards/mechlovin/foundation/keymaps/default/readme.md b/keyboards/mechlovin/foundation/keymaps/default/readme.md
new file mode 100644
index 0000000000..32bfee434d
--- /dev/null
+++ b/keyboards/mechlovin/foundation/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Foundation \ No newline at end of file
diff --git a/keyboards/mechlovin/foundation/keymaps/default/rules.mk b/keyboards/mechlovin/foundation/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/mechlovin/foundation/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechlovin/foundation/keymaps/via/keymap.c b/keyboards/mechlovin/foundation/keymaps/via/keymap.c
new file mode 100644
index 0000000000..b052937fd4
--- /dev/null
+++ b/keyboards/mechlovin/foundation/keymaps/via/keymap.c
@@ -0,0 +1,59 @@
+/* Copyright 2022 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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_F17, KC_GRV, KC_1, KC_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_F18, KC_TAB, KC_Q, KC_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_F19, KC_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_F20, 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_RSFT, KC_UP,
+ KC_F21, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ 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
+ ),
+ [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
+ ),
+
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [1] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [2] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
+ [3] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}
+};
+#endif
+
+
diff --git a/keyboards/mechlovin/foundation/keymaps/via/rules.mk b/keyboards/mechlovin/foundation/keymaps/via/rules.mk
new file mode 100644
index 0000000000..f1adcab005
--- /dev/null
+++ b/keyboards/mechlovin/foundation/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechlovin/foundation/readme.md b/keyboards/mechlovin/foundation/readme.md
new file mode 100644
index 0000000000..61dacd55bd
--- /dev/null
+++ b/keyboards/mechlovin/foundation/readme.md
@@ -0,0 +1,26 @@
+# Foundation
+
+![Foundation](https://i.imgur.com/6VaQ8zml.jpeg)
+
+A PCB for Foundation FRL keyboard.
+
+* Keyboard Maintainer: [Mechlovin' Studio](https://github.com/mechlovin)
+* Hardware Supported: Foundation, APM32F103
+* Hardware Availability: [Protozoa Studio](https://protozoa.studio/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/foundation:default
+
+Flashing example for this keyboard:
+
+ make mechlovin/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).
+
+Enter the bootloader in 4 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 `QK_BOOT` if it is available
+* **Hardware reset**: Press reset button (located on the bottom side of the PCB) \ No newline at end of file
diff --git a/keyboards/mechlovin/foundation/rules.mk b/keyboards/mechlovin/foundation/rules.mk
new file mode 100644
index 0000000000..5a0af7c463
--- /dev/null
+++ b/keyboards/mechlovin/foundation/rules.mk
@@ -0,0 +1,20 @@
+# MCU name
+MCU = STM32F103
+BOARD = STM32_F103_STM32DUINO
+
+# 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
+ENCODER_ENABLE = yes
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/mechlovin/hannah60rgb/config.h b/keyboards/mechlovin/hannah60rgb/config.h
index 6acfa5d401..3a0aaa0eb9 100644
--- a/keyboards/mechlovin/hannah60rgb/config.h
+++ b/keyboards/mechlovin/hannah60rgb/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C // ML-Mechlovin
-#define MANUFACTURER Team.Mechlovin
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/mechlovin/hannah60rgb/rev1/config.h b/keyboards/mechlovin/hannah60rgb/rev1/config.h
index 0f0c923fd0..9a84e78588 100644
--- a/keyboards/mechlovin/hannah60rgb/rev1/config.h
+++ b/keyboards/mechlovin/hannah60rgb/rev1/config.h
@@ -1,9 +1,5 @@
#pragma once
-#define PRODUCT_ID 0x6001
-#define DEVICE_VER 0x0001
-#define PRODUCT Hannah60 RGB
-
#define RGB_DI_PIN A15
#ifdef RGB_MATRIX_ENABLE
# define DRIVER_LED_TOTAL 72
diff --git a/keyboards/mechlovin/hannah60rgb/rev1/info.json b/keyboards/mechlovin/hannah60rgb/rev1/info.json
index 48c878edb1..1e30b49c01 100644
--- a/keyboards/mechlovin/hannah60rgb/rev1/info.json
+++ b/keyboards/mechlovin/hannah60rgb/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "hannah60rgb rev1",
+ "keyboard_name": "Hannah60 RGB",
+ "manufacturer": "Team.Mechlovin",
"url": "",
"maintainer": "mechlovin",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x6001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/hannah60rgb/rev2/config.h b/keyboards/mechlovin/hannah60rgb/rev2/config.h
index e96ca0002a..3a25680a20 100644
--- a/keyboards/mechlovin/hannah60rgb/rev2/config.h
+++ b/keyboards/mechlovin/hannah60rgb/rev2/config.h
@@ -1,9 +1,5 @@
#pragma once
-#define PRODUCT_ID 0x6002
-#define DEVICE_VER 0x0001
-#define PRODUCT Hannah60 RGB Rev.2
-
#ifdef RGBLIGHT_ENABLE
# define RGB_DI_PIN A15
# define RGBLED_NUM 18
diff --git a/keyboards/mechlovin/hannah60rgb/rev2/info.json b/keyboards/mechlovin/hannah60rgb/rev2/info.json
index 74490e03e3..4047982477 100644
--- a/keyboards/mechlovin/hannah60rgb/rev2/info.json
+++ b/keyboards/mechlovin/hannah60rgb/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "hannah60rgb rev2",
+ "keyboard_name": "Hannah60 RGB Rev.2",
+ "manufacturer": "Team.Mechlovin",
"url": "",
"maintainer": "mechlovin",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x6002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/hannah65/config.h b/keyboards/mechlovin/hannah65/config.h
index f0aa801396..c43d228cf4 100644
--- a/keyboards/mechlovin/hannah65/config.h
+++ b/keyboards/mechlovin/hannah65/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C
-#define MANUFACTURER Team Mechlovin
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/mechlovin/hannah65/rev1/haus/config.h b/keyboards/mechlovin/hannah65/rev1/haus/config.h
deleted file mode 100644
index 204bf356e7..0000000000
--- a/keyboards/mechlovin/hannah65/rev1/haus/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-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
-
-#define PRODUCT_ID 0x6500
-#define DEVICE_VER 0x0001
-#define PRODUCT Haus Rev. 1 \ No newline at end of file
diff --git a/keyboards/mechlovin/hannah65/rev1/haus/info.json b/keyboards/mechlovin/hannah65/rev1/haus/info.json
new file mode 100644
index 0000000000..55ddde0a58
--- /dev/null
+++ b/keyboards/mechlovin/hannah65/rev1/haus/info.json
@@ -0,0 +1,229 @@
+{
+ "keyboard_name": "Haus Rev. 1",
+ "manufacturer": "Team Mechlovin",
+ "url": "",
+ "maintainer": "Team Mechlovin",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x6500",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "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":"K1D (B1,D2)", "x":14, "y":0},
+ {"label":"K0E (B0,D3)", "x":15, "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},
+ {"label":"K13 (B1,C0)", "x":3.5, "y":1},
+ {"label":"K14 (B1,C1)", "x":4.5, "y":1},
+ {"label":"K15 (B1,C2)", "x":5.5, "y":1},
+ {"label":"K16 (B1,C3)", "x":6.5, "y":1},
+ {"label":"K17 (B1,C4)", "x":7.5, "y":1},
+ {"label":"K18 (B1,C5)", "x":8.5, "y":1},
+ {"label":"K19 (B1,C6)", "x":9.5, "y":1},
+ {"label":"K1A (B1,C7)", "x":10.5, "y":1},
+ {"label":"K1B (B1,D0)", "x":11.5, "y":1},
+ {"label":"K1C (B1,D1)", "x":12.5, "y":1},
+ {"label":"K2C (B2,D1)", "x":13.5, "y":1, "w":1.5},
+ {"label":"K1E (B1,D3)", "x":15, "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},
+ {"label":"K23 (B2,C0)", "x":3.75, "y":2},
+ {"label":"K24 (B2,C1)", "x":4.75, "y":2},
+ {"label":"K25 (B2,C2)", "x":5.75, "y":2},
+ {"label":"K26 (B2,C3)", "x":6.75, "y":2},
+ {"label":"K27 (B2,C4)", "x":7.75, "y":2},
+ {"label":"K28 (B2,C5)", "x":8.75, "y":2},
+ {"label":"K29 (B2,C6)", "x":9.75, "y":2},
+ {"label":"K2A (B2,C7)", "x":10.75, "y":2},
+ {"label":"K2B (B2,D0)", "x":11.75, "y":2},
+ {"label":"K2D (B2,D2)", "x":12.75, "y":2, "w":2.25},
+ {"label":"K2E (B2,D3)", "x":15, "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},
+ {"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":"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, "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":"K42 (B4,B7)", "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":"K4C (B4,D1)", "x":13, "y":4},
+ {"label":"K4D (B4,D2)", "x":14, "y":4},
+ {"label":"K4E (B4,D3)", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_ansi_blocker": {
+ "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, "w":2},
+ {"label":"K0E (B0,D3)", "x":15, "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},
+ {"label":"K13 (B1,C0)", "x":3.5, "y":1},
+ {"label":"K14 (B1,C1)", "x":4.5, "y":1},
+ {"label":"K15 (B1,C2)", "x":5.5, "y":1},
+ {"label":"K16 (B1,C3)", "x":6.5, "y":1},
+ {"label":"K17 (B1,C4)", "x":7.5, "y":1},
+ {"label":"K18 (B1,C5)", "x":8.5, "y":1},
+ {"label":"K19 (B1,C6)", "x":9.5, "y":1},
+ {"label":"K1A (B1,C7)", "x":10.5, "y":1},
+ {"label":"K1B (B1,D0)", "x":11.5, "y":1},
+ {"label":"K1C (B1,D1)", "x":12.5, "y":1},
+ {"label":"K2C (B2,D1)", "x":13.5, "y":1, "w":1.5},
+ {"label":"K1E (B1,D3)", "x":15, "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},
+ {"label":"K23 (B2,C0)", "x":3.75, "y":2},
+ {"label":"K24 (B2,C1)", "x":4.75, "y":2},
+ {"label":"K25 (B2,C2)", "x":5.75, "y":2},
+ {"label":"K26 (B2,C3)", "x":6.75, "y":2},
+ {"label":"K27 (B2,C4)", "x":7.75, "y":2},
+ {"label":"K28 (B2,C5)", "x":8.75, "y":2},
+ {"label":"K29 (B2,C6)", "x":9.75, "y":2},
+ {"label":"K2A (B2,C7)", "x":10.75, "y":2},
+ {"label":"K2B (B2,D0)", "x":11.75, "y":2},
+ {"label":"K2D (B2,D2)", "x":12.75, "y":2, "w":2.25},
+ {"label":"K2E (B2,D3)", "x":15, "y":2},
+ {"label":"K30 (B3,B5)", "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":"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, "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":"K42 (B4,B7)", "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":"K4C (B4,D1)", "x":13, "y":4},
+ {"label":"K4D (B4,D2)", "x":14, "y":4},
+ {"label":"K4E (B4,D3)", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_iso_blocker": {
+ "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, "w":2},
+ {"label":"K0E (B0,D3)", "x":15, "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},
+ {"label":"K13 (B1,C0)", "x":3.5, "y":1},
+ {"label":"K14 (B1,C1)", "x":4.5, "y":1},
+ {"label":"K15 (B1,C2)", "x":5.5, "y":1},
+ {"label":"K16 (B1,C3)", "x":6.5, "y":1},
+ {"label":"K17 (B1,C4)", "x":7.5, "y":1},
+ {"label":"K18 (B1,C5)", "x":8.5, "y":1},
+ {"label":"K19 (B1,C6)", "x":9.5, "y":1},
+ {"label":"K1A (B1,C7)", "x":10.5, "y":1},
+ {"label":"K1B (B1,D0)", "x":11.5, "y":1},
+ {"label":"K1C (B1,D1)", "x":12.5, "y":1},
+ {"label":"K2D (B2,D2)", "x":13.75, "y":1, "w":1.25, "h":2},
+ {"label":"K1E (B1,D3)", "x":15, "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},
+ {"label":"K23 (B2,C0)", "x":3.75, "y":2},
+ {"label":"K24 (B2,C1)", "x":4.75, "y":2},
+ {"label":"K25 (B2,C2)", "x":5.75, "y":2},
+ {"label":"K26 (B2,C3)", "x":6.75, "y":2},
+ {"label":"K27 (B2,C4)", "x":7.75, "y":2},
+ {"label":"K28 (B2,C5)", "x":8.75, "y":2},
+ {"label":"K29 (B2,C6)", "x":9.75, "y":2},
+ {"label":"K2A (B2,C7)", "x":10.75, "y":2},
+ {"label":"K2B (B2,D0)", "x":11.75, "y":2},
+ {"label":"K2C (B2,D1)", "x":12.75, "y":2},
+ {"label":"K2E (B2,D3)", "x":15, "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},
+ {"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":"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, "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":"K42 (B4,B7)", "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":"K4C (B4,D1)", "x":13, "y":4},
+ {"label":"K4D (B4,D2)", "x":14, "y":4},
+ {"label":"K4E (B4,D3)", "x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mechlovin/hannah65/rev1/info.json b/keyboards/mechlovin/hannah65/rev1/info.json
deleted file mode 100644
index 329c4040c8..0000000000
--- a/keyboards/mechlovin/hannah65/rev1/info.json
+++ /dev/null
@@ -1,223 +0,0 @@
-{
- "keyboard_name": "hannah65-rev1",
- "url": "",
- "maintainer": "Team Mechlovin",
- "layouts": {
- "LAYOUT_all": {
- "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":"K1D (B1,D2)", "x":14, "y":0},
- {"label":"K0E (B0,D3)", "x":15, "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},
- {"label":"K13 (B1,C0)", "x":3.5, "y":1},
- {"label":"K14 (B1,C1)", "x":4.5, "y":1},
- {"label":"K15 (B1,C2)", "x":5.5, "y":1},
- {"label":"K16 (B1,C3)", "x":6.5, "y":1},
- {"label":"K17 (B1,C4)", "x":7.5, "y":1},
- {"label":"K18 (B1,C5)", "x":8.5, "y":1},
- {"label":"K19 (B1,C6)", "x":9.5, "y":1},
- {"label":"K1A (B1,C7)", "x":10.5, "y":1},
- {"label":"K1B (B1,D0)", "x":11.5, "y":1},
- {"label":"K1C (B1,D1)", "x":12.5, "y":1},
- {"label":"K2C (B2,D1)", "x":13.5, "y":1, "w":1.5},
- {"label":"K1E (B1,D3)", "x":15, "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},
- {"label":"K23 (B2,C0)", "x":3.75, "y":2},
- {"label":"K24 (B2,C1)", "x":4.75, "y":2},
- {"label":"K25 (B2,C2)", "x":5.75, "y":2},
- {"label":"K26 (B2,C3)", "x":6.75, "y":2},
- {"label":"K27 (B2,C4)", "x":7.75, "y":2},
- {"label":"K28 (B2,C5)", "x":8.75, "y":2},
- {"label":"K29 (B2,C6)", "x":9.75, "y":2},
- {"label":"K2A (B2,C7)", "x":10.75, "y":2},
- {"label":"K2B (B2,D0)", "x":11.75, "y":2},
- {"label":"K2D (B2,D2)", "x":12.75, "y":2, "w":2.25},
- {"label":"K2E (B2,D3)", "x":15, "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},
- {"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":"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, "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":"K42 (B4,B7)", "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":"K4C (B4,D1)", "x":13, "y":4},
- {"label":"K4D (B4,D2)", "x":14, "y":4},
- {"label":"K4E (B4,D3)", "x":15, "y":4}
- ]
- },
- "LAYOUT_65_ansi_blocker": {
- "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, "w":2},
- {"label":"K0E (B0,D3)", "x":15, "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},
- {"label":"K13 (B1,C0)", "x":3.5, "y":1},
- {"label":"K14 (B1,C1)", "x":4.5, "y":1},
- {"label":"K15 (B1,C2)", "x":5.5, "y":1},
- {"label":"K16 (B1,C3)", "x":6.5, "y":1},
- {"label":"K17 (B1,C4)", "x":7.5, "y":1},
- {"label":"K18 (B1,C5)", "x":8.5, "y":1},
- {"label":"K19 (B1,C6)", "x":9.5, "y":1},
- {"label":"K1A (B1,C7)", "x":10.5, "y":1},
- {"label":"K1B (B1,D0)", "x":11.5, "y":1},
- {"label":"K1C (B1,D1)", "x":12.5, "y":1},
- {"label":"K2C (B2,D1)", "x":13.5, "y":1, "w":1.5},
- {"label":"K1E (B1,D3)", "x":15, "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},
- {"label":"K23 (B2,C0)", "x":3.75, "y":2},
- {"label":"K24 (B2,C1)", "x":4.75, "y":2},
- {"label":"K25 (B2,C2)", "x":5.75, "y":2},
- {"label":"K26 (B2,C3)", "x":6.75, "y":2},
- {"label":"K27 (B2,C4)", "x":7.75, "y":2},
- {"label":"K28 (B2,C5)", "x":8.75, "y":2},
- {"label":"K29 (B2,C6)", "x":9.75, "y":2},
- {"label":"K2A (B2,C7)", "x":10.75, "y":2},
- {"label":"K2B (B2,D0)", "x":11.75, "y":2},
- {"label":"K2D (B2,D2)", "x":12.75, "y":2, "w":2.25},
- {"label":"K2E (B2,D3)", "x":15, "y":2},
- {"label":"K30 (B3,B5)", "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":"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, "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":"K42 (B4,B7)", "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":"K4C (B4,D1)", "x":13, "y":4},
- {"label":"K4D (B4,D2)", "x":14, "y":4},
- {"label":"K4E (B4,D3)", "x":15, "y":4}
- ]
- },
- "LAYOUT_65_iso_blocker": {
- "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, "w":2},
- {"label":"K0E (B0,D3)", "x":15, "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},
- {"label":"K13 (B1,C0)", "x":3.5, "y":1},
- {"label":"K14 (B1,C1)", "x":4.5, "y":1},
- {"label":"K15 (B1,C2)", "x":5.5, "y":1},
- {"label":"K16 (B1,C3)", "x":6.5, "y":1},
- {"label":"K17 (B1,C4)", "x":7.5, "y":1},
- {"label":"K18 (B1,C5)", "x":8.5, "y":1},
- {"label":"K19 (B1,C6)", "x":9.5, "y":1},
- {"label":"K1A (B1,C7)", "x":10.5, "y":1},
- {"label":"K1B (B1,D0)", "x":11.5, "y":1},
- {"label":"K1C (B1,D1)", "x":12.5, "y":1},
- {"label":"K2D (B2,D2)", "x":13.75, "y":1, "w":1.25, "h":2},
- {"label":"K1E (B1,D3)", "x":15, "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},
- {"label":"K23 (B2,C0)", "x":3.75, "y":2},
- {"label":"K24 (B2,C1)", "x":4.75, "y":2},
- {"label":"K25 (B2,C2)", "x":5.75, "y":2},
- {"label":"K26 (B2,C3)", "x":6.75, "y":2},
- {"label":"K27 (B2,C4)", "x":7.75, "y":2},
- {"label":"K28 (B2,C5)", "x":8.75, "y":2},
- {"label":"K29 (B2,C6)", "x":9.75, "y":2},
- {"label":"K2A (B2,C7)", "x":10.75, "y":2},
- {"label":"K2B (B2,D0)", "x":11.75, "y":2},
- {"label":"K2C (B2,D1)", "x":12.75, "y":2},
- {"label":"K2E (B2,D3)", "x":15, "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},
- {"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":"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, "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":"K42 (B4,B7)", "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":"K4C (B4,D1)", "x":13, "y":4},
- {"label":"K4D (B4,D2)", "x":14, "y":4},
- {"label":"K4E (B4,D3)", "x":15, "y":4}
- ]
- }
- }
-}
diff --git a/keyboards/mechlovin/hannah910/config.h b/keyboards/mechlovin/hannah910/config.h
index cc2ac81bc5..3a222e8d87 100644
--- a/keyboards/mechlovin/hannah910/config.h
+++ b/keyboards/mechlovin/hannah910/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C // ML-MechLovin'
-#define MANUFACTURER Mechlovin
-#define PRODUCT Mechlovin Hannah910
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -40,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B5, B6, D3, C6, C7 }
#define MATRIX_COL_PINS { E6, B1, B3, F0, F1, F4, F5, F6, F7, D5, D4, B4, D6, D7, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechlovin/hannah910/hannah910.c b/keyboards/mechlovin/hannah910/hannah910.c
index 3237636be2..70c1a7b8e3 100644
--- a/keyboards/mechlovin/hannah910/hannah910.c
+++ b/keyboards/mechlovin/hannah910/hannah910.c
@@ -34,20 +34,20 @@ void led_set_kb(uint8_t usb_led) {
layer_state_t layer_state_set_user(layer_state_t state)
{
// if on layer 1, turn on D2 LED, otherwise off.
- if (biton32(state) == 1) {
+ if (get_highest_layer(state) == 1) {
writePinHigh(D2);
} else {
writePinLow(D2);
}
// if on layer 2, turn on D1 LED, otherwise off.
- if (biton32(state) == 2) {
+ if (get_highest_layer(state) == 2) {
writePinHigh(D1);
} else {
writePinLow(D1);
}
// if on layer 3, turn on D0 LED, otherwise off.
- if (biton32(state) == 3) {
+ if (get_highest_layer(state) == 3) {
writePinHigh(D0);
} else {
writePinLow(D0);
diff --git a/keyboards/mechlovin/hannah910/rev1/config.h b/keyboards/mechlovin/hannah910/rev1/config.h
index 906e0c8846..7b793c75b9 100644
--- a/keyboards/mechlovin/hannah910/rev1/config.h
+++ b/keyboards/mechlovin/hannah910/rev1/config.h
@@ -1,6 +1,3 @@
#pragma once
-#define PRODUCT_ID 0x9101
-#define DEVICE_VER 0x0001
-
#define RGBLED_NUM 9 \ No newline at end of file
diff --git a/keyboards/mechlovin/hannah910/rev1/info.json b/keyboards/mechlovin/hannah910/rev1/info.json
index 1f130c6992..bbfdddf1ad 100644
--- a/keyboards/mechlovin/hannah910/rev1/info.json
+++ b/keyboards/mechlovin/hannah910/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Hannah910",
+ "manufacturer": "Mechlovin",
"url": "",
"maintainer": "Mechlovin'",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x9101",
+ "device_version": "0.0.1"
+ },
"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":"Back", "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":"INS", "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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"HOME", "x":15, "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, "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":2.75}, {"label":"Space", "x":6.5, "y":4, "w":1.25}, {"label":"Space", "x":7.75, "y":4, "w":2.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "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/mechlovin/hannah910/rev2/config.h b/keyboards/mechlovin/hannah910/rev2/config.h
index 3ae3cb65bc..c37c581ae6 100644
--- a/keyboards/mechlovin/hannah910/rev2/config.h
+++ b/keyboards/mechlovin/hannah910/rev2/config.h
@@ -1,6 +1,3 @@
#pragma once
-#define PRODUCT_ID 0x9102
-#define DEVICE_VER 0x0002
-
#define RGBLED_NUM 28 \ No newline at end of file
diff --git a/keyboards/mechlovin/hannah910/rev2/info.json b/keyboards/mechlovin/hannah910/rev2/info.json
index c2e5dd1a3e..d0eb8b208f 100644
--- a/keyboards/mechlovin/hannah910/rev2/info.json
+++ b/keyboards/mechlovin/hannah910/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Hannah910 Rev.2",
+ "keyboard_name": "Hannah910",
+ "manufacturer": "Mechlovin",
"url": "",
"maintainer": "Team Mechlovin'",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x9102",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/hannah910/rev3/config.h b/keyboards/mechlovin/hannah910/rev3/config.h
index 5e377f4d79..fbb878ab6a 100644
--- a/keyboards/mechlovin/hannah910/rev3/config.h
+++ b/keyboards/mechlovin/hannah910/rev3/config.h
@@ -1,6 +1,3 @@
#pragma once
-#define PRODUCT_ID 0x9103
-#define DEVICE_VER 0x0002
-
#define RGBLED_NUM 28
diff --git a/keyboards/mechlovin/hannah910/rev3/info.json b/keyboards/mechlovin/hannah910/rev3/info.json
index bb762dd589..44c797323b 100644
--- a/keyboards/mechlovin/hannah910/rev3/info.json
+++ b/keyboards/mechlovin/hannah910/rev3/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "hannah910-rev3",
+ "keyboard_name": "Hannah910",
+ "manufacturer": "Mechlovin",
"url": "",
"maintainer": "Team Mechlovin'",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x9103",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/hex4b/config.h b/keyboards/mechlovin/hex4b/config.h
index c8176d76b5..4126b720b7 100644
--- a/keyboards/mechlovin/hex4b/config.h
+++ b/keyboards/mechlovin/hex4b/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C
-#define PRODUCT_ID 0x0675 //Hex-75
-#define MANUFACTURER Mechlovin Studio
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
diff --git a/keyboards/mechlovin/hex4b/info.json b/keyboards/mechlovin/hex4b/info.json
index 686d79cc0e..2edd39b3e2 100644
--- a/keyboards/mechlovin/hex4b/info.json
+++ b/keyboards/mechlovin/hex4b/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Hex4B",
+ "manufacturer": "Mechlovin Studio",
"url": "",
"maintainer": "Hex-Keyboard&Mechlovin",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x0675"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_split_bs",
"LAYOUT_all": "LAYOUT_split_bs"
diff --git a/keyboards/mechlovin/hex4b/keymaps/nazzer/keymap.c b/keyboards/mechlovin/hex4b/keymaps/nazzer/keymap.c
index 437233be52..e0634d85dc 100644
--- a/keyboards/mechlovin/hex4b/keymaps/nazzer/keymap.c
+++ b/keyboards/mechlovin/hex4b/keymaps/nazzer/keymap.c
@@ -53,9 +53,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
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;
@@ -69,30 +69,30 @@ bool led_update_user(led_t led_state) {
}
layer_state_t layer_state_set_user(layer_state_t state) {
-
- uint8_t layer = biton32(state);
-
+
+ uint8_t layer = get_highest_layer(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);
+ 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);
+ 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);
+ 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);
+ writePin(LED_SCROLL_LOCK_PIN, LED_PIN_ON_STATE);
+ writePin(LED_NUM_LOCK_PIN, LED_PIN_ON_STATE);
break;
}
#endif
- return state;
+ return state;
}
diff --git a/keyboards/mechlovin/hex4b/rev1/config.h b/keyboards/mechlovin/hex4b/rev1/config.h
index 014209cefd..8afeeaf593 100644
--- a/keyboards/mechlovin/hex4b/rev1/config.h
+++ b/keyboards/mechlovin/hex4b/rev1/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0001
-#define PRODUCT Hex-4B Rev.1
-
/*
* Keyboard Matrix Assignments
*
@@ -36,7 +32,6 @@ 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
#define LED_NUM_LOCK_PIN D6
#define LED_CAPS_LOCK_PIN D7
diff --git a/keyboards/mechlovin/hex4b/rev1/info.json b/keyboards/mechlovin/hex4b/rev1/info.json
new file mode 100644
index 0000000000..b2dfdec696
--- /dev/null
+++ b/keyboards/mechlovin/hex4b/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Hex-4B Rev.1",
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/mechlovin/hex4b/rev2/config.h b/keyboards/mechlovin/hex4b/rev2/config.h
index af956f3ec0..9eb4e03feb 100644
--- a/keyboards/mechlovin/hex4b/rev2/config.h
+++ b/keyboards/mechlovin/hex4b/rev2/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0002
-#define PRODUCT Hex-4B Rev.2
-
-
-
/*
* Keyboard Matrix Assignments
*
@@ -38,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/mechlovin/hex4b/rev2/info.json b/keyboards/mechlovin/hex4b/rev2/info.json
new file mode 100644
index 0000000000..da18a2ce4b
--- /dev/null
+++ b/keyboards/mechlovin/hex4b/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Hex-4B Rev.2",
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/mechlovin/hex4b/rev2/readme.md b/keyboards/mechlovin/hex4b/rev2/readme.md
index 328c869704..01ae8ea724 100644
--- a/keyboards/mechlovin/hex4b/rev2/readme.md
+++ b/keyboards/mechlovin/hex4b/rev2/readme.md
@@ -24,5 +24,5 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/hex6c/config.h b/keyboards/mechlovin/hex6c/config.h
index b79b5211c2..c3125f217f 100644
--- a/keyboards/mechlovin/hex6c/config.h
+++ b/keyboards/mechlovin/hex6c/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C
-#define PRODUCT_ID 0x6C01
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mechlovin Studio and Hex Keyboard
-#define PRODUCT Hex6C
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 21
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { A10, B13, B12, B11, C14, C15 }
#define MATRIX_COL_PINS { A13, A14, A1, A0, C13, B9, B4, B7, B8, B5, B6, A9, A5, A6, A7, B1, B2, B10, B3, B14, B15 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechlovin/hex6c/info.json b/keyboards/mechlovin/hex6c/info.json
index 0d8a6529db..5c01225cd7 100644
--- a/keyboards/mechlovin/hex6c/info.json
+++ b/keyboards/mechlovin/hex6c/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "hex-6C",
+ "keyboard_name": "Hex6C",
+ "manufacturer": "Mechlovin Studio and Hex Keyboard",
"url": "",
"maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x6C01",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/infinity87/config.h b/keyboards/mechlovin/infinity87/config.h
index a344c98b8f..6692b78292 100644
--- a/keyboards/mechlovin/infinity87/config.h
+++ b/keyboards/mechlovin/infinity87/config.h
@@ -18,11 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C // ML
-
-#define MANUFACTURER Mechlovin.Studio
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/mechlovin/infinity87/infinity87.h b/keyboards/mechlovin/infinity87/infinity87.h
index f56d960e92..b7b00bef40 100644
--- a/keyboards/mechlovin/infinity87/infinity87.h
+++ b/keyboards/mechlovin/infinity87/infinity87.h
@@ -16,19 +16,3 @@
#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, 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, 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, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
-}
diff --git a/keyboards/mechlovin/infinity87/rev1/rev1.h b/keyboards/mechlovin/infinity87/rev1/rev1.h
index de623a1cdd..167ed6940a 100644
--- a/keyboards/mechlovin/infinity87/rev1/rev1.h
+++ b/keyboards/mechlovin/infinity87/rev1/rev1.h
@@ -17,11 +17,3 @@
#pragma once
#include "quantum.h"
-
-#ifdef KEYBOARD_mechlovin_infinity87_rev1_rogue87
- #include "rogue87.h"
-#elif KEYBOARD_mechlovin_infinity87_rev1_rouge87
- #include "rouge87.h"
-#elif KEYBOARD_mechlovin_infinity87_rev1_standard
- #include "infinity87.h"
-#endif
diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/config.h b/keyboards/mechlovin/infinity87/rev1/rogue87/config.h
deleted file mode 100644
index 3415f3add9..0000000000
--- a/keyboards/mechlovin/infinity87/rev1/rogue87/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* 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
-
-#define PRODUCT_ID 0x8704
-#define DEVICE_VER 0x0001
-#define PRODUCT Rogue87 Rev.1 \ No newline at end of file
diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/info.json b/keyboards/mechlovin/infinity87/rev1/rogue87/info.json
index 3ffa181666..25fa20a9c7 100644
--- a/keyboards/mechlovin/infinity87/rev1/rogue87/info.json
+++ b/keyboards/mechlovin/infinity87/rev1/rogue87/info.json
@@ -1,96 +1,115 @@
{
- "keyboard_name": "Rogue87",
+ "keyboard_name": "Rogue87 Rev.1",
+ "manufacturer": "Mechlovin.Studio",
"url": "",
"maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x8704",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
- {"label":"K00", "x":0, "y":0},
- {"label":"K01", "x":2, "y":0},
- {"label":"K02", "x":3, "y":0},
- {"label":"K03", "x":4, "y":0},
- {"label":"K04", "x":5, "y":0},
- {"label":"K05", "x":6.5, "y":0},
- {"label":"K06", "x":7.5, "y":0},
- {"label":"K07", "x":8.5, "y":0},
- {"label":"K08", "x":9.5, "y":0},
- {"label":"K09", "x":11, "y":0},
- {"label":"K0A", "x":12, "y":0},
- {"label":"K0B", "x":13, "y":0},
- {"label":"K0C", "x":14, "y":0},
- {"label":"K0E", "x":15.25, "y":0},
- {"label":"K0F", "x":16.25, "y":0},
- {"label":"K0G", "x":17.25, "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":"K14", "x":4, "y":1.25},
- {"label":"K15", "x":5, "y":1.25},
- {"label":"K16", "x":6, "y":1.25},
- {"label":"K17", "x":7, "y":1.25},
- {"label":"K18", "x":8, "y":1.25},
- {"label":"K19", "x":9, "y":1.25},
- {"label":"K1A", "x":10, "y":1.25},
- {"label":"K1B", "x":11, "y":1.25},
- {"label":"K1C", "x":12, "y":1.25},
- {"label":"K1D", "x":13, "y":1.25, "w":2},
- {"label":"K1E", "x":15.25, "y":1.25},
- {"label":"K1F", "x":16.25, "y":1.25},
- {"label":"K1G", "x":17.25, "y":1.25},
- {"label":"K20", "x":0, "y":2.25, "w":1.5},
- {"label":"K21", "x":1.5, "y":2.25},
- {"label":"K22", "x":2.5, "y":2.25},
- {"label":"K23", "x":3.5, "y":2.25},
- {"label":"K24", "x":4.5, "y":2.25},
- {"label":"K25", "x":5.5, "y":2.25},
- {"label":"K26", "x":6.5, "y":2.25},
- {"label":"K27", "x":7.5, "y":2.25},
- {"label":"K28", "x":8.5, "y":2.25},
- {"label":"K29", "x":9.5, "y":2.25},
- {"label":"K2A", "x":10.5, "y":2.25},
- {"label":"K2B", "x":11.5, "y":2.25},
- {"label":"K2C", "x":12.5, "y":2.25},
- {"label":"K2D", "x":13.5, "y":2.25, "w":1.5},
- {"label":"K2E", "x":15.25, "y":2.25},
- {"label":"K2F", "x":16.25, "y":2.25},
- {"label":"K2G", "x":17.25, "y":2.25},
- {"label":"K30", "x":0, "y":3.25, "w":1.75},
- {"label":"K31", "x":1.75, "y":3.25},
- {"label":"K32", "x":2.75, "y":3.25},
- {"label":"K33", "x":3.75, "y":3.25},
- {"label":"K34", "x":4.75, "y":3.25},
- {"label":"K35", "x":5.75, "y":3.25},
- {"label":"K36", "x":6.75, "y":3.25},
- {"label":"K37", "x":7.75, "y":3.25},
- {"label":"K38", "x":8.75, "y":3.25},
- {"label":"K39", "x":9.75, "y":3.25},
- {"label":"K3A", "x":10.75, "y":3.25},
- {"label":"K3B", "x":11.75, "y":3.25},
- {"label":"K3C", "x":12.75, "y":3.25},
- {"label":"K3D", "x":13.75, "y":3.25, "w":1.25},
- {"label":"K40", "x":0, "y":4.25, "w":1.25},
- {"label":"K41", "x":1.25, "y":4.25},
- {"label":"K42", "x":2.25, "y":4.25},
- {"label":"K43", "x":3.25, "y":4.25},
- {"label":"K44", "x":4.25, "y":4.25},
- {"label":"K45", "x":5.25, "y":4.25},
- {"label":"K46", "x":6.25, "y":4.25},
- {"label":"K47", "x":7.25, "y":4.25},
- {"label":"K48", "x":8.25, "y":4.25},
- {"label":"K49", "x":9.25, "y":4.25},
- {"label":"K4A", "x":10.25, "y":4.25},
- {"label":"K4B", "x":11.25, "y":4.25},
- {"label":"K4D", "x":12.25, "y":4.25, "w":2.75},
- {"label":"K4F", "x":16.25, "y":4.25},
- {"label":"K50", "x":0, "y":5.25, "w":1.5},
- {"label":"K52", "x":2.5, "y":5.25, "w":1.5},
- {"label":"K56", "x":4, "y":5.25, "w":7},
- {"label":"K5B", "x":11, "y":5.25, "w":1.5},
- {"label":"K5D", "x":13.5, "y":5.25, "w":1.5},
- {"label":"K5E", "x":15.25, "y":5.25},
- {"label":"K5F", "x":16.25, "y":5.25},
- {"label":"K5G", "x":17.25, "y":5.25}
+ {"label":"K00", "x":0, "y":0, "matrix": [0, 0]},
+
+ {"label":"K01", "x":2, "y":0, "matrix": [0, 1]},
+ {"label":"K02", "x":3, "y":0, "matrix": [0, 2]},
+ {"label":"K03", "x":4, "y":0, "matrix": [0, 3]},
+ {"label":"K04", "x":5, "y":0, "matrix": [0, 4]},
+
+ {"label":"K05", "x":6.5, "y":0, "matrix": [0, 5]},
+ {"label":"K06", "x":7.5, "y":0, "matrix": [0, 6]},
+ {"label":"K07", "x":8.5, "y":0, "matrix": [0, 7]},
+ {"label":"K08", "x":9.5, "y":0, "matrix": [0, 8]},
+
+ {"label":"K09", "x":11, "y":0, "matrix": [0, 9]},
+ {"label":"K0A", "x":12, "y":0, "matrix": [0, 10]},
+ {"label":"K0B", "x":13, "y":0, "matrix": [0, 11]},
+ {"label":"K0C", "x":14, "y":0, "matrix": [0, 12]},
+
+ {"label":"K0E", "x":15.25, "y":0, "matrix": [0, 14]},
+ {"label":"K0F", "x":16.25, "y":0, "matrix": [0, 15]},
+ {"label":"K0G", "x":17.25, "y":0, "matrix": [0, 16]},
+
+ {"label":"K10", "x":0, "y":1.25, "matrix": [1, 0]},
+ {"label":"K11", "x":1, "y":1.25, "matrix": [1, 1]},
+ {"label":"K12", "x":2, "y":1.25, "matrix": [1, 2]},
+ {"label":"K13", "x":3, "y":1.25, "matrix": [1, 3]},
+ {"label":"K14", "x":4, "y":1.25, "matrix": [1, 4]},
+ {"label":"K15", "x":5, "y":1.25, "matrix": [1, 5]},
+ {"label":"K16", "x":6, "y":1.25, "matrix": [1, 6]},
+ {"label":"K17", "x":7, "y":1.25, "matrix": [1, 7]},
+ {"label":"K18", "x":8, "y":1.25, "matrix": [1, 8]},
+ {"label":"K19", "x":9, "y":1.25, "matrix": [1, 9]},
+ {"label":"K1A", "x":10, "y":1.25, "matrix": [1, 10]},
+ {"label":"K1B", "x":11, "y":1.25, "matrix": [1, 11]},
+ {"label":"K1C", "x":12, "y":1.25, "matrix": [1, 12]},
+ {"label":"K1D", "x":13, "y":1.25, "w":2, "matrix": [1, 13]},
+
+ {"label":"K1E", "x":15.25, "y":1.25, "matrix": [1, 14]},
+ {"label":"K1F", "x":16.25, "y":1.25, "matrix": [1, 15]},
+ {"label":"K1G", "x":17.25, "y":1.25, "matrix": [1, 16]},
+
+ {"label":"K20", "x":0, "y":2.25, "w":1.5, "matrix": [2, 0]},
+ {"label":"K21", "x":1.5, "y":2.25, "matrix": [2, 1]},
+ {"label":"K22", "x":2.5, "y":2.25, "matrix": [2, 2]},
+ {"label":"K23", "x":3.5, "y":2.25, "matrix": [2, 3]},
+ {"label":"K24", "x":4.5, "y":2.25, "matrix": [2, 4]},
+ {"label":"K25", "x":5.5, "y":2.25, "matrix": [2, 5]},
+ {"label":"K26", "x":6.5, "y":2.25, "matrix": [2, 6]},
+ {"label":"K27", "x":7.5, "y":2.25, "matrix": [2, 7]},
+ {"label":"K28", "x":8.5, "y":2.25, "matrix": [2, 8]},
+ {"label":"K29", "x":9.5, "y":2.25, "matrix": [2, 9]},
+ {"label":"K2A", "x":10.5, "y":2.25, "matrix": [2, 10]},
+ {"label":"K2B", "x":11.5, "y":2.25, "matrix": [2, 11]},
+ {"label":"K2C", "x":12.5, "y":2.25, "matrix": [2, 12]},
+ {"label":"K2D", "x":13.5, "y":2.25, "w":1.5, "matrix": [2, 13]},
+
+ {"label":"K2E", "x":15.25, "y":2.25, "matrix": [2, 14]},
+ {"label":"K2F", "x":16.25, "y":2.25, "matrix": [2, 15]},
+ {"label":"K2G", "x":17.25, "y":2.25, "matrix": [2, 16]},
+
+ {"label":"K30", "x":0, "y":3.25, "w":1.75, "matrix": [3, 0]},
+ {"label":"K31", "x":1.75, "y":3.25, "matrix": [3, 1]},
+ {"label":"K32", "x":2.75, "y":3.25, "matrix": [3, 2]},
+ {"label":"K33", "x":3.75, "y":3.25, "matrix": [3, 3]},
+ {"label":"K34", "x":4.75, "y":3.25, "matrix": [3, 4]},
+ {"label":"K35", "x":5.75, "y":3.25, "matrix": [3, 5]},
+ {"label":"K36", "x":6.75, "y":3.25, "matrix": [3, 6]},
+ {"label":"K37", "x":7.75, "y":3.25, "matrix": [3, 7]},
+ {"label":"K38", "x":8.75, "y":3.25, "matrix": [3, 8]},
+ {"label":"K39", "x":9.75, "y":3.25, "matrix": [3, 9]},
+ {"label":"K3A", "x":10.75, "y":3.25, "matrix": [3, 10]},
+ {"label":"K3B", "x":11.75, "y":3.25, "matrix": [3, 11]},
+ {"label":"K3C", "x":12.75, "y":3.25, "matrix": [3, 12]},
+ {"label":"K3D", "x":13.75, "y":3.25, "w":1.25, "matrix": [3, 13]},
+
+ {"label":"K40", "x":0, "y":4.25, "w":1.25, "matrix": [4, 0]},
+ {"label":"K41", "x":1.25, "y":4.25, "matrix": [4, 1]},
+ {"label":"K42", "x":2.25, "y":4.25, "matrix": [4, 2]},
+ {"label":"K43", "x":3.25, "y":4.25, "matrix": [4, 3]},
+ {"label":"K44", "x":4.25, "y":4.25, "matrix": [4, 4]},
+ {"label":"K45", "x":5.25, "y":4.25, "matrix": [4, 5]},
+ {"label":"K46", "x":6.25, "y":4.25, "matrix": [4, 6]},
+ {"label":"K47", "x":7.25, "y":4.25, "matrix": [4, 7]},
+ {"label":"K48", "x":8.25, "y":4.25, "matrix": [4, 8]},
+ {"label":"K49", "x":9.25, "y":4.25, "matrix": [4, 9]},
+ {"label":"K4A", "x":10.25, "y":4.25, "matrix": [4, 10]},
+ {"label":"K4B", "x":11.25, "y":4.25, "matrix": [4, 11]},
+ {"label":"K4D", "x":12.25, "y":4.25, "w":2.75, "matrix": [4, 13]},
+
+ {"label":"K4F", "x":16.25, "y":4.25, "matrix": [4, 15]},
+
+ {"label":"K50", "x":0, "y":5.25, "w":1.5, "matrix": [5, 0]},
+ {"label":"K52", "x":2.5, "y":5.25, "w":1.5, "matrix": [5, 2]},
+ {"label":"K56", "x":4, "y":5.25, "w":7, "matrix": [5, 6]},
+ {"label":"K5B", "x":11, "y":5.25, "w":1.5, "matrix": [5, 11]},
+ {"label":"K5D", "x":13.5, "y":5.25, "w":1.5, "matrix": [5, 13]},
+
+ {"label":"K5E", "x":15.25, "y":5.25, "matrix": [5, 14]},
+ {"label":"K5F", "x":16.25, "y":5.25, "matrix": [5, 15]},
+ {"label":"K5G", "x":17.25, "y":5.25, "matrix": [5, 16]}
]
}
}
diff --git a/keyboards/mechlovin/infinity87/rev1/rogue87/rogue87.h b/keyboards/mechlovin/infinity87/rev1/rogue87/rogue87.h
deleted file mode 100644
index 70a50b9620..0000000000
--- a/keyboards/mechlovin/infinity87/rev1/rogue87/rogue87.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* 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 "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, 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, K4D, K4F, \
- K50, K52, K56, K5B, 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, K3C, K3D, KC_NO, KC_NO, KC_NO}, \
- { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4D, KC_NO, K4F, KC_NO}, \
- { K50, KC_NO, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, KC_NO, K5B, KC_NO, K5D, K5E, K5F, K5G }, \
-}
diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/config.h b/keyboards/mechlovin/infinity87/rev1/rouge87/config.h
deleted file mode 100644
index 786da387bc..0000000000
--- a/keyboards/mechlovin/infinity87/rev1/rouge87/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* 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
-
-#define PRODUCT_ID 0x8703
-#define DEVICE_VER 0x0001
-#define PRODUCT Rouge87 Rev.1
diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/info.json b/keyboards/mechlovin/infinity87/rev1/rouge87/info.json
index 8faaa83fd1..983d20fdbf 100644
--- a/keyboards/mechlovin/infinity87/rev1/rouge87/info.json
+++ b/keyboards/mechlovin/infinity87/rev1/rouge87/info.json
@@ -1,98 +1,117 @@
{
- "keyboard_name": "Rouge87",
+ "keyboard_name": "Rouge87 Rev.1",
+ "manufacturer": "Mechlovin.Studio",
"url": "",
"maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x8703",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
- {"label":"K00", "x":0, "y":0},
- {"label":"K01", "x":2, "y":0},
- {"label":"K02", "x":3, "y":0},
- {"label":"K03", "x":4, "y":0},
- {"label":"K04", "x":5, "y":0},
- {"label":"K05", "x":6.5, "y":0},
- {"label":"K06", "x":7.5, "y":0},
- {"label":"K07", "x":8.5, "y":0},
- {"label":"K08", "x":9.5, "y":0},
- {"label":"K09", "x":11, "y":0},
- {"label":"K0A", "x":12, "y":0},
- {"label":"K0B", "x":13, "y":0},
- {"label":"K0C", "x":14, "y":0},
- {"label":"K0E", "x":15.25, "y":0},
- {"label":"K0F", "x":16.25, "y":0},
- {"label":"K0G", "x":17.25, "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":"K14", "x":4, "y":1.25},
- {"label":"K15", "x":5, "y":1.25},
- {"label":"K16", "x":6, "y":1.25},
- {"label":"K17", "x":7, "y":1.25},
- {"label":"K18", "x":8, "y":1.25},
- {"label":"K19", "x":9, "y":1.25},
- {"label":"K1A", "x":10, "y":1.25},
- {"label":"K1B", "x":11, "y":1.25},
- {"label":"K1C", "x":12, "y":1.25},
- {"label":"K1D", "x":13, "y":1.25, "w":2},
- {"label":"K1E", "x":15.25, "y":1.25},
- {"label":"K1F", "x":16.25, "y":1.25},
- {"label":"K1G", "x":17.25, "y":1.25},
- {"label":"K20", "x":0, "y":2.25, "w":1.5},
- {"label":"K21", "x":1.5, "y":2.25},
- {"label":"K22", "x":2.5, "y":2.25},
- {"label":"K23", "x":3.5, "y":2.25},
- {"label":"K24", "x":4.5, "y":2.25},
- {"label":"K25", "x":5.5, "y":2.25},
- {"label":"K26", "x":6.5, "y":2.25},
- {"label":"K27", "x":7.5, "y":2.25},
- {"label":"K28", "x":8.5, "y":2.25},
- {"label":"K29", "x":9.5, "y":2.25},
- {"label":"K2A", "x":10.5, "y":2.25},
- {"label":"K2B", "x":11.5, "y":2.25},
- {"label":"K2C", "x":12.5, "y":2.25},
- {"label":"K2D", "x":13.5, "y":2.25, "w":1.5},
- {"label":"K2E", "x":15.25, "y":2.25},
- {"label":"K2F", "x":16.25, "y":2.25},
- {"label":"K2G", "x":17.25, "y":2.25},
- {"label":"K30", "x":0, "y":3.25, "w":1.75},
- {"label":"K31", "x":1.75, "y":3.25},
- {"label":"K32", "x":2.75, "y":3.25},
- {"label":"K33", "x":3.75, "y":3.25},
- {"label":"K34", "x":4.75, "y":3.25},
- {"label":"K35", "x":5.75, "y":3.25},
- {"label":"K36", "x":6.75, "y":3.25},
- {"label":"K37", "x":7.75, "y":3.25},
- {"label":"K38", "x":8.75, "y":3.25},
- {"label":"K39", "x":9.75, "y":3.25},
- {"label":"K3A", "x":10.75, "y":3.25},
- {"label":"K3B", "x":11.75, "y":3.25},
- {"label":"K3C", "x":12.75, "y":3.25},
- {"label":"K3D", "x":13.75, "y":3.25, "w":1.25},
- {"label":"K40", "x":0, "y":4.25, "w":1.25},
- {"label":"K41", "x":1.25, "y":4.25},
- {"label":"K42", "x":2.25, "y":4.25},
- {"label":"K43", "x":3.25, "y":4.25},
- {"label":"K44", "x":4.25, "y":4.25},
- {"label":"K45", "x":5.25, "y":4.25},
- {"label":"K46", "x":6.25, "y":4.25},
- {"label":"K47", "x":7.25, "y":4.25},
- {"label":"K48", "x":8.25, "y":4.25},
- {"label":"K49", "x":9.25, "y":4.25},
- {"label":"K4A", "x":10.25, "y":4.25},
- {"label":"K4B", "x":11.25, "y":4.25},
- {"label":"K4D", "x":12.25, "y":4.25, "w":2.75},
- {"label":"K4F", "x":16.25, "y":4.25},
- {"label":"K50", "x":0, "y":5.25, "w":1.5},
- {"label":"K51", "x":1.5, "y":5.25},
- {"label":"K52", "x":2.5, "y":5.25, "w":1.5},
- {"label":"K56", "x":4, "y":5.25, "w":7},
- {"label":"K5B", "x":11, "y":5.25, "w":1.5},
- {"label":"K5C", "x":12.5, "y":5.25},
- {"label":"K5D", "x":13.5, "y":5.25, "w":1.5},
- {"label":"K5E", "x":15.25, "y":5.25},
- {"label":"K5F", "x":16.25, "y":5.25},
- {"label":"K5G", "x":17.25, "y":5.25}
+ {"label":"K00", "x":0, "y":0, "matrix": [0, 0]},
+
+ {"label":"K01", "x":2, "y":0, "matrix": [0, 1]},
+ {"label":"K02", "x":3, "y":0, "matrix": [0, 2]},
+ {"label":"K03", "x":4, "y":0, "matrix": [0, 3]},
+ {"label":"K04", "x":5, "y":0, "matrix": [0, 4]},
+
+ {"label":"K05", "x":6.5, "y":0, "matrix": [0, 5]},
+ {"label":"K06", "x":7.5, "y":0, "matrix": [0, 6]},
+ {"label":"K07", "x":8.5, "y":0, "matrix": [0, 7]},
+ {"label":"K08", "x":9.5, "y":0, "matrix": [0, 8]},
+
+ {"label":"K09", "x":11, "y":0, "matrix": [0, 9]},
+ {"label":"K0A", "x":12, "y":0, "matrix": [0, 10]},
+ {"label":"K0B", "x":13, "y":0, "matrix": [0, 11]},
+ {"label":"K0C", "x":14, "y":0, "matrix": [0, 12]},
+
+ {"label":"K0E", "x":15.25, "y":0, "matrix": [0, 14]},
+ {"label":"K0F", "x":16.25, "y":0, "matrix": [0, 15]},
+ {"label":"K0G", "x":17.25, "y":0, "matrix": [0, 16]},
+
+ {"label":"K10", "x":0, "y":1.25, "matrix": [1, 0]},
+ {"label":"K11", "x":1, "y":1.25, "matrix": [1, 1]},
+ {"label":"K12", "x":2, "y":1.25, "matrix": [1, 2]},
+ {"label":"K13", "x":3, "y":1.25, "matrix": [1, 3]},
+ {"label":"K14", "x":4, "y":1.25, "matrix": [1, 4]},
+ {"label":"K15", "x":5, "y":1.25, "matrix": [1, 5]},
+ {"label":"K16", "x":6, "y":1.25, "matrix": [1, 6]},
+ {"label":"K17", "x":7, "y":1.25, "matrix": [1, 7]},
+ {"label":"K18", "x":8, "y":1.25, "matrix": [1, 8]},
+ {"label":"K19", "x":9, "y":1.25, "matrix": [1, 9]},
+ {"label":"K1A", "x":10, "y":1.25, "matrix": [1, 10]},
+ {"label":"K1B", "x":11, "y":1.25, "matrix": [1, 11]},
+ {"label":"K1C", "x":12, "y":1.25, "matrix": [1, 12]},
+ {"label":"K1D", "x":13, "y":1.25, "w":2, "matrix": [1, 13]},
+
+ {"label":"K1E", "x":15.25, "y":1.25, "matrix": [1, 14]},
+ {"label":"K1F", "x":16.25, "y":1.25, "matrix": [1, 15]},
+ {"label":"K1G", "x":17.25, "y":1.25, "matrix": [1, 16]},
+
+ {"label":"K20", "x":0, "y":2.25, "w":1.5, "matrix": [2, 0]},
+ {"label":"K21", "x":1.5, "y":2.25, "matrix": [2, 1]},
+ {"label":"K22", "x":2.5, "y":2.25, "matrix": [2, 2]},
+ {"label":"K23", "x":3.5, "y":2.25, "matrix": [2, 3]},
+ {"label":"K24", "x":4.5, "y":2.25, "matrix": [2, 4]},
+ {"label":"K25", "x":5.5, "y":2.25, "matrix": [2, 5]},
+ {"label":"K26", "x":6.5, "y":2.25, "matrix": [2, 6]},
+ {"label":"K27", "x":7.5, "y":2.25, "matrix": [2, 7]},
+ {"label":"K28", "x":8.5, "y":2.25, "matrix": [2, 8]},
+ {"label":"K29", "x":9.5, "y":2.25, "matrix": [2, 9]},
+ {"label":"K2A", "x":10.5, "y":2.25, "matrix": [2, 10]},
+ {"label":"K2B", "x":11.5, "y":2.25, "matrix": [2, 11]},
+ {"label":"K2C", "x":12.5, "y":2.25, "matrix": [2, 12]},
+ {"label":"K2D", "x":13.5, "y":2.25, "w":1.5, "matrix": [2, 13]},
+
+ {"label":"K2E", "x":15.25, "y":2.25, "matrix": [2, 14]},
+ {"label":"K2F", "x":16.25, "y":2.25, "matrix": [2, 15]},
+ {"label":"K2G", "x":17.25, "y":2.25, "matrix": [2, 16]},
+
+ {"label":"K30", "x":0, "y":3.25, "w":1.75, "matrix": [3, 0]},
+ {"label":"K31", "x":1.75, "y":3.25, "matrix": [3, 1]},
+ {"label":"K32", "x":2.75, "y":3.25, "matrix": [3, 2]},
+ {"label":"K33", "x":3.75, "y":3.25, "matrix": [3, 3]},
+ {"label":"K34", "x":4.75, "y":3.25, "matrix": [3, 4]},
+ {"label":"K35", "x":5.75, "y":3.25, "matrix": [3, 5]},
+ {"label":"K36", "x":6.75, "y":3.25, "matrix": [3, 6]},
+ {"label":"K37", "x":7.75, "y":3.25, "matrix": [3, 7]},
+ {"label":"K38", "x":8.75, "y":3.25, "matrix": [3, 8]},
+ {"label":"K39", "x":9.75, "y":3.25, "matrix": [3, 9]},
+ {"label":"K3A", "x":10.75, "y":3.25, "matrix": [3, 10]},
+ {"label":"K3B", "x":11.75, "y":3.25, "matrix": [3, 11]},
+ {"label":"K3C", "x":12.75, "y":3.25, "matrix": [3, 12]},
+ {"label":"K3D", "x":13.75, "y":3.25, "w":1.25, "matrix": [3, 13]},
+
+ {"label":"K40", "x":0, "y":4.25, "w":1.25, "matrix": [4, 0]},
+ {"label":"K41", "x":1.25, "y":4.25, "matrix": [4, 1]},
+ {"label":"K42", "x":2.25, "y":4.25, "matrix": [4, 2]},
+ {"label":"K43", "x":3.25, "y":4.25, "matrix": [4, 3]},
+ {"label":"K44", "x":4.25, "y":4.25, "matrix": [4, 4]},
+ {"label":"K45", "x":5.25, "y":4.25, "matrix": [4, 5]},
+ {"label":"K46", "x":6.25, "y":4.25, "matrix": [4, 6]},
+ {"label":"K47", "x":7.25, "y":4.25, "matrix": [4, 7]},
+ {"label":"K48", "x":8.25, "y":4.25, "matrix": [4, 8]},
+ {"label":"K49", "x":9.25, "y":4.25, "matrix": [4, 9]},
+ {"label":"K4A", "x":10.25, "y":4.25, "matrix": [4, 10]},
+ {"label":"K4B", "x":11.25, "y":4.25, "matrix": [4, 11]},
+ {"label":"K4D", "x":12.25, "y":4.25, "w":2.75, "matrix": [4, 13]},
+
+ {"label":"K4F", "x":16.25, "y":4.25, "matrix": [4, 15]},
+
+ {"label":"K50", "x":0, "y":5.25, "w":1.5, "matrix": [5, 0]},
+ {"label":"K51", "x":1.5, "y":5.25, "matrix": [5, 1]},
+ {"label":"K52", "x":2.5, "y":5.25, "w":1.5, "matrix": [5, 2]},
+ {"label":"K56", "x":4, "y":5.25, "w":7, "matrix": [5, 6]},
+ {"label":"K5B", "x":11, "y":5.25, "w":1.5, "matrix": [5, 11]},
+ {"label":"K5C", "x":12.5, "y":5.25, "matrix": [5, 12]},
+ {"label":"K5D", "x":13.5, "y":5.25, "w":1.5, "matrix": [5, 13]},
+
+ {"label":"K5E", "x":15.25, "y":5.25, "matrix": [5, 14]},
+ {"label":"K5F", "x":16.25, "y":5.25, "matrix": [5, 15]},
+ {"label":"K5G", "x":17.25, "y":5.25, "matrix": [5, 16]}
]
}
}
diff --git a/keyboards/mechlovin/infinity87/rev1/rouge87/rouge87.h b/keyboards/mechlovin/infinity87/rev1/rouge87/rouge87.h
deleted file mode 100644
index 67dcefde26..0000000000
--- a/keyboards/mechlovin/infinity87/rev1/rouge87/rouge87.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* 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 "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, 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, K4D, K4F, \
- K50, K51, K52, K56, 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, K3C, K3D, KC_NO, KC_NO, KC_NO}, \
- { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, KC_NO, K4D, KC_NO, K4F, KC_NO}, \
- { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, KC_NO, K5B, K5C, K5D, K5E, K5F, K5G }, \
-}
-
diff --git a/keyboards/mechlovin/infinity87/rev1/standard/config.h b/keyboards/mechlovin/infinity87/rev1/standard/config.h
index b3ae5a7717..c7e4f601e1 100644
--- a/keyboards/mechlovin/infinity87/rev1/standard/config.h
+++ b/keyboards/mechlovin/infinity87/rev1/standard/config.h
@@ -16,10 +16,6 @@
#pragma once
-#define PRODUCT_ID 0x8701
-#define DEVICE_VER 0x0001
-#define PRODUCT Infinity 87 rev1
-
#define RGB_DI_PIN A15
#define RGBLED_NUM 26
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
diff --git a/keyboards/mechlovin/infinity87/rev1/standard/info.json b/keyboards/mechlovin/infinity87/rev1/standard/info.json
index da67c40c39..29597cce3f 100644
--- a/keyboards/mechlovin/infinity87/rev1/standard/info.json
+++ b/keyboards/mechlovin/infinity87/rev1/standard/info.json
@@ -1,101 +1,120 @@
{
- "keyboard_name": "infinity87",
+ "keyboard_name": "infinity87 Rev.1",
+ "manufacturer": "Mechlovin.Studio",
"url": "",
"maintainer": "Team Mechlovin'",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x8701",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
- {"label":"K00 (B0,B6)", "x":0, "y":0},
- {"label":"K01 (B0,F4)", "x":2, "y":0},
- {"label":"K02 (B0,C0)", "x":3, "y":0},
- {"label":"K03 (B0,C1)", "x":4, "y":0},
- {"label":"K04 (B0,C2)", "x":5, "y":0},
- {"label":"K05 (B0,C3)", "x":6.5, "y":0},
- {"label":"K06 (B0,C4)", "x":7.5, "y":0},
- {"label":"K07 (B0,C5)", "x":8.5, "y":0},
- {"label":"K08 (B0,C6)", "x":9.5, "y":0},
- {"label":"K09 (B0,C7)", "x":11, "y":0},
- {"label":"K0A (B0,D0)", "x":12, "y":0},
- {"label":"K0B (B0,D1)", "x":13, "y":0},
- {"label":"K0C (B0,D2)", "x":14, "y":0},
- {"label":"K0E (B0,D4)", "x":15.25, "y":0},
- {"label":"K0F (B0,D5)", "x":16.25, "y":0},
- {"label":"K0G (B0,D6)", "x":17.25, "y":0},
- {"label":"K10 (B1,B6)", "x":0, "y":1.25},
- {"label":"K11 (B1,F4)", "x":1, "y":1.25},
- {"label":"K12 (B1,C0)", "x":2, "y":1.25},
- {"label":"K13 (B1,C1)", "x":3, "y":1.25},
- {"label":"K14 (B1,C2)", "x":4, "y":1.25},
- {"label":"K15 (B1,C3)", "x":5, "y":1.25},
- {"label":"K16 (B1,C4)", "x":6, "y":1.25},
- {"label":"K17 (B1,C5)", "x":7, "y":1.25},
- {"label":"K18 (B1,C6)", "x":8, "y":1.25},
- {"label":"K19 (B1,C7)", "x":9, "y":1.25},
- {"label":"K1A (B1,D0)", "x":10, "y":1.25},
- {"label":"K1B (B1,D1)", "x":11, "y":1.25},
- {"label":"K1C (B1,D2)", "x":12, "y":1.25},
- {"label":"K1D (B1,D3)", "x":13, "y":1.25},
- {"label":"K0D (B0,D3)", "x":14, "y":1.25},
- {"label":"K1E (B1,D4)", "x":15.25, "y":1.25},
- {"label":"K1F (B1,D5)", "x":16.25, "y":1.25},
- {"label":"K1G (B1,D6)", "x":17.25, "y":1.25},
- {"label":"K20 (B2,B6)", "x":0, "y":2.25, "w":1.5},
- {"label":"K21 (B2,F4)", "x":1.5, "y":2.25},
- {"label":"K22 (B2,C0)", "x":2.5, "y":2.25},
- {"label":"K23 (B2,C1)", "x":3.5, "y":2.25},
- {"label":"K24 (B2,C2)", "x":4.5, "y":2.25},
- {"label":"K25 (B2,C3)", "x":5.5, "y":2.25},
- {"label":"K26 (B2,C4)", "x":6.5, "y":2.25},
- {"label":"K27 (B2,C5)", "x":7.5, "y":2.25},
- {"label":"K28 (B2,C6)", "x":8.5, "y":2.25},
- {"label":"K29 (B2,C7)", "x":9.5, "y":2.25},
- {"label":"K2A (B2,D0)", "x":10.5, "y":2.25},
- {"label":"K2B (B2,D1)", "x":11.5, "y":2.25},
- {"label":"K2C (B2,D2)", "x":12.5, "y":2.25},
- {"label":"K2D (B2,D3)", "x":13.5, "y":2.25, "w":1.5},
- {"label":"K2E (B2,D4)", "x":15.25, "y":2.25},
- {"label":"K2F (B2,D5)", "x":16.25, "y":2.25},
- {"label":"K2G (B2,D6)", "x":17.25, "y":2.25},
- {"label":"K30 (B3,B6)", "x":0, "y":3.25, "w":1.75},
- {"label":"K31 (B3,F4)", "x":1.75, "y":3.25},
- {"label":"K32 (B3,C0)", "x":2.75, "y":3.25},
- {"label":"K33 (B3,C1)", "x":3.75, "y":3.25},
- {"label":"K34 (B3,C2)", "x":4.75, "y":3.25},
- {"label":"K35 (B3,C3)", "x":5.75, "y":3.25},
- {"label":"K36 (B3,C4)", "x":6.75, "y":3.25},
- {"label":"K37 (B3,C5)", "x":7.75, "y":3.25},
- {"label":"K38 (B3,C6)", "x":8.75, "y":3.25},
- {"label":"K39 (B3,C7)", "x":9.75, "y":3.25},
- {"label":"K3A (B3,D0)", "x":10.75, "y":3.25},
- {"label":"K3B (B3,D1)", "x":11.75, "y":3.25},
- {"label":"K3C (B3,D2)", "x":12.75, "y":3.25},
- {"label":"K3D (B3,D3)", "x":13.75, "y":3.25, "w":1.25},
- {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":1.25},
- {"label":"K41 (B4,F4)", "x":1.25, "y":4.25},
- {"label":"K42 (B4,C0)", "x":2.25, "y":4.25},
- {"label":"K43 (B4,C1)", "x":3.25, "y":4.25},
- {"label":"K44 (B4,C2)", "x":4.25, "y":4.25},
- {"label":"K45 (B4,C3)", "x":5.25, "y":4.25},
- {"label":"K46 (B4,C4)", "x":6.25, "y":4.25},
- {"label":"K47 (B4,C5)", "x":7.25, "y":4.25},
- {"label":"K48 (B4,C6)", "x":8.25, "y":4.25},
- {"label":"K49 (B4,C7)", "x":9.25, "y":4.25},
- {"label":"K4A (B4,D0)", "x":10.25, "y":4.25},
- {"label":"K4B (B4,D1)", "x":11.25, "y":4.25},
- {"label":"K4C (B4,D2)", "x":12.25, "y":4.25, "w":1.75},
- {"label":"K4D (B4,D3)", "x":14, "y":4.25},
- {"label":"K4F (B4,D5)", "x":16.25, "y":4.25},
- {"label":"K50 (B5,B6)", "x":0, "y":5.25, "w":1.25},
- {"label":"K51 (B5,F4)", "x":1.25, "y":5.25, "w":1.25},
- {"label":"K52 (B5,C0)", "x":2.5, "y":5.25, "w":1.25},
- {"label":"K56 (B5,C4)", "x":3.75, "y":5.25, "w":6.25},
- {"label":"K5A (B5,D0)", "x":10, "y":5.25, "w":1.25},
- {"label":"K5B (B5,D1)", "x":11.25, "y":5.25, "w":1.25},
- {"label":"K5C (B5,D2)", "x":12.5, "y":5.25, "w":1.25},
- {"label":"K5D (B5,D3)", "x":13.75, "y":5.25, "w":1.25},
- {"label":"K5E (B5,D4)", "x":15.25, "y":5.25},
- {"label":"K5F (B5,D5)", "x":16.25, "y":5.25},
- {"label":"K5G (B5,D6)", "x":17.25, "y":5.25}
+ {"label":"K00 (B0,B6)", "x":0, "y":0, "matrix": [0, 0]},
+
+ {"label":"K01 (B0,F4)", "x":2, "y":0, "matrix": [0, 1]},
+ {"label":"K02 (B0,C0)", "x":3, "y":0, "matrix": [0, 2]},
+ {"label":"K03 (B0,C1)", "x":4, "y":0, "matrix": [0, 3]},
+ {"label":"K04 (B0,C2)", "x":5, "y":0, "matrix": [0, 4]},
+
+ {"label":"K05 (B0,C3)", "x":6.5, "y":0, "matrix": [0, 5]},
+ {"label":"K06 (B0,C4)", "x":7.5, "y":0, "matrix": [0, 6]},
+ {"label":"K07 (B0,C5)", "x":8.5, "y":0, "matrix": [0, 7]},
+ {"label":"K08 (B0,C6)", "x":9.5, "y":0, "matrix": [0, 8]},
+
+ {"label":"K09 (B0,C7)", "x":11, "y":0, "matrix": [0, 9]},
+ {"label":"K0A (B0,D0)", "x":12, "y":0, "matrix": [0, 10]},
+ {"label":"K0B (B0,D1)", "x":13, "y":0, "matrix": [0, 11]},
+ {"label":"K0C (B0,D2)", "x":14, "y":0, "matrix": [0, 12]},
+
+ {"label":"K0E (B0,D4)", "x":15.25, "y":0, "matrix": [0, 14]},
+ {"label":"K0F (B0,D5)", "x":16.25, "y":0, "matrix": [0, 15]},
+ {"label":"K0G (B0,D6)", "x":17.25, "y":0, "matrix": [0, 16]},
+
+ {"label":"K10 (B1,B6)", "x":0, "y":1.25, "matrix": [1, 0]},
+ {"label":"K11 (B1,F4)", "x":1, "y":1.25, "matrix": [1, 1]},
+ {"label":"K12 (B1,C0)", "x":2, "y":1.25, "matrix": [1, 2]},
+ {"label":"K13 (B1,C1)", "x":3, "y":1.25, "matrix": [1, 3]},
+ {"label":"K14 (B1,C2)", "x":4, "y":1.25, "matrix": [1, 4]},
+ {"label":"K15 (B1,C3)", "x":5, "y":1.25, "matrix": [1, 5]},
+ {"label":"K16 (B1,C4)", "x":6, "y":1.25, "matrix": [1, 6]},
+ {"label":"K17 (B1,C5)", "x":7, "y":1.25, "matrix": [1, 7]},
+ {"label":"K18 (B1,C6)", "x":8, "y":1.25, "matrix": [1, 8]},
+ {"label":"K19 (B1,C7)", "x":9, "y":1.25, "matrix": [1, 9]},
+ {"label":"K1A (B1,D0)", "x":10, "y":1.25, "matrix": [1, 10]},
+ {"label":"K1B (B1,D1)", "x":11, "y":1.25, "matrix": [1, 11]},
+ {"label":"K1C (B1,D2)", "x":12, "y":1.25, "matrix": [1, 12]},
+ {"label":"K1D (B1,D3)", "x":13, "y":1.25, "matrix": [1, 13]},
+ {"label":"K0D (B0,D3)", "x":14, "y":1.25, "matrix": [0, 13]},
+
+ {"label":"K1E (B1,D4)", "x":15.25, "y":1.25, "matrix": [1, 14]},
+ {"label":"K1F (B1,D5)", "x":16.25, "y":1.25, "matrix": [1, 15]},
+ {"label":"K1G (B1,D6)", "x":17.25, "y":1.25, "matrix": [1, 16]},
+
+ {"label":"K20 (B2,B6)", "x":0, "y":2.25, "w":1.5, "matrix": [2, 0]},
+ {"label":"K21 (B2,F4)", "x":1.5, "y":2.25, "matrix": [2, 1]},
+ {"label":"K22 (B2,C0)", "x":2.5, "y":2.25, "matrix": [2, 2]},
+ {"label":"K23 (B2,C1)", "x":3.5, "y":2.25, "matrix": [2, 3]},
+ {"label":"K24 (B2,C2)", "x":4.5, "y":2.25, "matrix": [2, 4]},
+ {"label":"K25 (B2,C3)", "x":5.5, "y":2.25, "matrix": [2, 5]},
+ {"label":"K26 (B2,C4)", "x":6.5, "y":2.25, "matrix": [2, 6]},
+ {"label":"K27 (B2,C5)", "x":7.5, "y":2.25, "matrix": [2, 7]},
+ {"label":"K28 (B2,C6)", "x":8.5, "y":2.25, "matrix": [2, 8]},
+ {"label":"K29 (B2,C7)", "x":9.5, "y":2.25, "matrix": [2, 9]},
+ {"label":"K2A (B2,D0)", "x":10.5, "y":2.25, "matrix": [2, 10]},
+ {"label":"K2B (B2,D1)", "x":11.5, "y":2.25, "matrix": [2, 11]},
+ {"label":"K2C (B2,D2)", "x":12.5, "y":2.25, "matrix": [2, 12]},
+ {"label":"K2D (B2,D3)", "x":13.5, "y":2.25, "w":1.5, "matrix": [2, 13]},
+
+ {"label":"K2E (B2,D4)", "x":15.25, "y":2.25, "matrix": [2, 14]},
+ {"label":"K2F (B2,D5)", "x":16.25, "y":2.25, "matrix": [2, 15]},
+ {"label":"K2G (B2,D6)", "x":17.25, "y":2.25, "matrix": [2, 16]},
+
+ {"label":"K30 (B3,B6)", "x":0, "y":3.25, "w":1.75, "matrix": [3, 0]},
+ {"label":"K31 (B3,F4)", "x":1.75, "y":3.25, "matrix": [3, 1]},
+ {"label":"K32 (B3,C0)", "x":2.75, "y":3.25, "matrix": [3, 2]},
+ {"label":"K33 (B3,C1)", "x":3.75, "y":3.25, "matrix": [3, 3]},
+ {"label":"K34 (B3,C2)", "x":4.75, "y":3.25, "matrix": [3, 4]},
+ {"label":"K35 (B3,C3)", "x":5.75, "y":3.25, "matrix": [3, 5]},
+ {"label":"K36 (B3,C4)", "x":6.75, "y":3.25, "matrix": [3, 6]},
+ {"label":"K37 (B3,C5)", "x":7.75, "y":3.25, "matrix": [3, 7]},
+ {"label":"K38 (B3,C6)", "x":8.75, "y":3.25, "matrix": [3, 8]},
+ {"label":"K39 (B3,C7)", "x":9.75, "y":3.25, "matrix": [3, 9]},
+ {"label":"K3A (B3,D0)", "x":10.75, "y":3.25, "matrix": [3, 10]},
+ {"label":"K3B (B3,D1)", "x":11.75, "y":3.25, "matrix": [3, 11]},
+ {"label":"K3C (B3,D2)", "x":12.75, "y":3.25, "matrix": [3, 12]},
+ {"label":"K3D (B3,D3)", "x":13.75, "y":3.25, "w":1.25, "matrix": [3, 13]},
+
+ {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":1.25, "matrix": [4, 0]},
+ {"label":"K41 (B4,F4)", "x":1.25, "y":4.25, "matrix": [4, 1]},
+ {"label":"K42 (B4,C0)", "x":2.25, "y":4.25, "matrix": [4, 2]},
+ {"label":"K43 (B4,C1)", "x":3.25, "y":4.25, "matrix": [4, 3]},
+ {"label":"K44 (B4,C2)", "x":4.25, "y":4.25, "matrix": [4, 4]},
+ {"label":"K45 (B4,C3)", "x":5.25, "y":4.25, "matrix": [4, 5]},
+ {"label":"K46 (B4,C4)", "x":6.25, "y":4.25, "matrix": [4, 6]},
+ {"label":"K47 (B4,C5)", "x":7.25, "y":4.25, "matrix": [4, 7]},
+ {"label":"K48 (B4,C6)", "x":8.25, "y":4.25, "matrix": [4, 8]},
+ {"label":"K49 (B4,C7)", "x":9.25, "y":4.25, "matrix": [4, 9]},
+ {"label":"K4A (B4,D0)", "x":10.25, "y":4.25, "matrix": [4, 10]},
+ {"label":"K4B (B4,D1)", "x":11.25, "y":4.25, "matrix": [4, 11]},
+ {"label":"K4C (B4,D2)", "x":12.25, "y":4.25, "w":1.75, "matrix": [4, 12]},
+ {"label":"K4D (B4,D3)", "x":14, "y":4.25, "matrix": [4, 13]},
+
+ {"label":"K4F (B4,D5)", "x":16.25, "y":4.25, "matrix": [4, 15]},
+
+ {"label":"K50 (B5,B6)", "x":0, "y":5.25, "w":1.25, "matrix": [5, 0]},
+ {"label":"K51 (B5,F4)", "x":1.25, "y":5.25, "w":1.25, "matrix": [5, 1]},
+ {"label":"K52 (B5,C0)", "x":2.5, "y":5.25, "w":1.25, "matrix": [5, 2]},
+ {"label":"K56 (B5,C4)", "x":3.75, "y":5.25, "w":6.25, "matrix": [5, 6]},
+ {"label":"K5A (B5,D0)", "x":10, "y":5.25, "w":1.25, "matrix": [5, 10]},
+ {"label":"K5B (B5,D1)", "x":11.25, "y":5.25, "w":1.25, "matrix": [5, 11]},
+ {"label":"K5C (B5,D2)", "x":12.5, "y":5.25, "w":1.25, "matrix": [5, 12]},
+ {"label":"K5D (B5,D3)", "x":13.75, "y":5.25, "w":1.25, "matrix": [5, 13]},
+
+ {"label":"K5E (B5,D4)", "x":15.25, "y":5.25, "matrix": [5, 14]},
+ {"label":"K5F (B5,D5)", "x":16.25, "y":5.25, "matrix": [5, 15]},
+ {"label":"K5G (B5,D6)", "x":17.25, "y":5.25, "matrix": [5, 16]}
]
}
}
diff --git a/keyboards/mechlovin/infinity87/rev2/config.h b/keyboards/mechlovin/infinity87/rev2/config.h
index 575e826a9b..65eaa9a7fa 100644
--- a/keyboards/mechlovin/infinity87/rev2/config.h
+++ b/keyboards/mechlovin/infinity87/rev2/config.h
@@ -16,10 +16,6 @@
#pragma once
-#define PRODUCT_ID 0x8702
-#define DEVICE_VER 0x0001
-#define PRODUCT Infinity87 rev.2
-
/*
* Keyboard Matrix Assignments
*
@@ -31,7 +27,6 @@
*
*/
#define MATRIX_ROW_PINS { D5, D2, D4, D3, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/mechlovin/infinity87/rev2/info.json b/keyboards/mechlovin/infinity87/rev2/info.json
index fa6073912c..62aa3cfeb0 100644
--- a/keyboards/mechlovin/infinity87/rev2/info.json
+++ b/keyboards/mechlovin/infinity87/rev2/info.json
@@ -1,101 +1,120 @@
{
- "keyboard_name": "infinity87 Rev.2",
+ "keyboard_name": "Infinity87 Rev.2",
+ "manufacturer": "Mechlovin.Studio",
"url": "",
"maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x8702",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
- {"label":"K00 (B0,B6)", "x":0, "y":0},
- {"label":"K01 (B0,F4)", "x":2, "y":0},
- {"label":"K02 (B0,C0)", "x":3, "y":0},
- {"label":"K03 (B0,C1)", "x":4, "y":0},
- {"label":"K04 (B0,C2)", "x":5, "y":0},
- {"label":"K05 (B0,C3)", "x":6.5, "y":0},
- {"label":"K06 (B0,C4)", "x":7.5, "y":0},
- {"label":"K07 (B0,C5)", "x":8.5, "y":0},
- {"label":"K08 (B0,C6)", "x":9.5, "y":0},
- {"label":"K09 (B0,C7)", "x":11, "y":0},
- {"label":"K0A (B0,D0)", "x":12, "y":0},
- {"label":"K0B (B0,D1)", "x":13, "y":0},
- {"label":"K0C (B0,D2)", "x":14, "y":0},
- {"label":"K0E (B0,D4)", "x":15.25, "y":0},
- {"label":"K0F (B0,D5)", "x":16.25, "y":0},
- {"label":"K0G (B0,D6)", "x":17.25, "y":0},
- {"label":"K10 (B1,B6)", "x":0, "y":1.25},
- {"label":"K11 (B1,F4)", "x":1, "y":1.25},
- {"label":"K12 (B1,C0)", "x":2, "y":1.25},
- {"label":"K13 (B1,C1)", "x":3, "y":1.25},
- {"label":"K14 (B1,C2)", "x":4, "y":1.25},
- {"label":"K15 (B1,C3)", "x":5, "y":1.25},
- {"label":"K16 (B1,C4)", "x":6, "y":1.25},
- {"label":"K17 (B1,C5)", "x":7, "y":1.25},
- {"label":"K18 (B1,C6)", "x":8, "y":1.25},
- {"label":"K19 (B1,C7)", "x":9, "y":1.25},
- {"label":"K1A (B1,D0)", "x":10, "y":1.25},
- {"label":"K1B (B1,D1)", "x":11, "y":1.25},
- {"label":"K1C (B1,D2)", "x":12, "y":1.25},
- {"label":"K1D (B1,D3)", "x":13, "y":1.25},
- {"label":"K0D (B0,D3)", "x":14, "y":1.25},
- {"label":"K1E (B1,D4)", "x":15.25, "y":1.25},
- {"label":"K1F (B1,D5)", "x":16.25, "y":1.25},
- {"label":"K1G (B1,D6)", "x":17.25, "y":1.25},
- {"label":"K20 (B2,B6)", "x":0, "y":2.25, "w":1.5},
- {"label":"K21 (B2,F4)", "x":1.5, "y":2.25},
- {"label":"K22 (B2,C0)", "x":2.5, "y":2.25},
- {"label":"K23 (B2,C1)", "x":3.5, "y":2.25},
- {"label":"K24 (B2,C2)", "x":4.5, "y":2.25},
- {"label":"K25 (B2,C3)", "x":5.5, "y":2.25},
- {"label":"K26 (B2,C4)", "x":6.5, "y":2.25},
- {"label":"K27 (B2,C5)", "x":7.5, "y":2.25},
- {"label":"K28 (B2,C6)", "x":8.5, "y":2.25},
- {"label":"K29 (B2,C7)", "x":9.5, "y":2.25},
- {"label":"K2A (B2,D0)", "x":10.5, "y":2.25},
- {"label":"K2B (B2,D1)", "x":11.5, "y":2.25},
- {"label":"K2C (B2,D2)", "x":12.5, "y":2.25},
- {"label":"K2D (B2,D3)", "x":13.5, "y":2.25, "w":1.5},
- {"label":"K2E (B2,D4)", "x":15.25, "y":2.25},
- {"label":"K2F (B2,D5)", "x":16.25, "y":2.25},
- {"label":"K2G (B2,D6)", "x":17.25, "y":2.25},
- {"label":"K30 (B3,B6)", "x":0, "y":3.25, "w":1.75},
- {"label":"K31 (B3,F4)", "x":1.75, "y":3.25},
- {"label":"K32 (B3,C0)", "x":2.75, "y":3.25},
- {"label":"K33 (B3,C1)", "x":3.75, "y":3.25},
- {"label":"K34 (B3,C2)", "x":4.75, "y":3.25},
- {"label":"K35 (B3,C3)", "x":5.75, "y":3.25},
- {"label":"K36 (B3,C4)", "x":6.75, "y":3.25},
- {"label":"K37 (B3,C5)", "x":7.75, "y":3.25},
- {"label":"K38 (B3,C6)", "x":8.75, "y":3.25},
- {"label":"K39 (B3,C7)", "x":9.75, "y":3.25},
- {"label":"K3A (B3,D0)", "x":10.75, "y":3.25},
- {"label":"K3B (B3,D1)", "x":11.75, "y":3.25},
- {"label":"K3C (B3,D2)", "x":12.75, "y":3.25},
- {"label":"K3D (B3,D3)", "x":13.75, "y":3.25, "w":1.25},
- {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":1.25},
- {"label":"K41 (B4,F4)", "x":1.25, "y":4.25},
- {"label":"K42 (B4,C0)", "x":2.25, "y":4.25},
- {"label":"K43 (B4,C1)", "x":3.25, "y":4.25},
- {"label":"K44 (B4,C2)", "x":4.25, "y":4.25},
- {"label":"K45 (B4,C3)", "x":5.25, "y":4.25},
- {"label":"K46 (B4,C4)", "x":6.25, "y":4.25},
- {"label":"K47 (B4,C5)", "x":7.25, "y":4.25},
- {"label":"K48 (B4,C6)", "x":8.25, "y":4.25},
- {"label":"K49 (B4,C7)", "x":9.25, "y":4.25},
- {"label":"K4A (B4,D0)", "x":10.25, "y":4.25},
- {"label":"K4B (B4,D1)", "x":11.25, "y":4.25},
- {"label":"K4C (B4,D2)", "x":12.25, "y":4.25, "w":1.75},
- {"label":"K4D (B4,D3)", "x":14, "y":4.25},
- {"label":"K4F (B4,D5)", "x":16.25, "y":4.25},
- {"label":"K50 (B5,B6)", "x":0, "y":5.25, "w":1.25},
- {"label":"K51 (B5,F4)", "x":1.25, "y":5.25, "w":1.25},
- {"label":"K52 (B5,C0)", "x":2.5, "y":5.25, "w":1.25},
- {"label":"K56 (B5,C4)", "x":3.75, "y":5.25, "w":6.25},
- {"label":"K5A (B5,D0)", "x":10, "y":5.25, "w":1.25},
- {"label":"K5B (B5,D1)", "x":11.25, "y":5.25, "w":1.25},
- {"label":"K5C (B5,D2)", "x":12.5, "y":5.25, "w":1.25},
- {"label":"K5D (B5,D3)", "x":13.75, "y":5.25, "w":1.25},
- {"label":"K5E (B5,D4)", "x":15.25, "y":5.25},
- {"label":"K5F (B5,D5)", "x":16.25, "y":5.25},
- {"label":"K5G (B5,D6)", "x":17.25, "y":5.25}
+ {"label":"K00 (B0,B6)", "x":0, "y":0, "matrix": [0, 0]},
+
+ {"label":"K01 (B0,F4)", "x":2, "y":0, "matrix": [0, 1]},
+ {"label":"K02 (B0,C0)", "x":3, "y":0, "matrix": [0, 2]},
+ {"label":"K03 (B0,C1)", "x":4, "y":0, "matrix": [0, 3]},
+ {"label":"K04 (B0,C2)", "x":5, "y":0, "matrix": [0, 4]},
+
+ {"label":"K05 (B0,C3)", "x":6.5, "y":0, "matrix": [0, 5]},
+ {"label":"K06 (B0,C4)", "x":7.5, "y":0, "matrix": [0, 6]},
+ {"label":"K07 (B0,C5)", "x":8.5, "y":0, "matrix": [0, 7]},
+ {"label":"K08 (B0,C6)", "x":9.5, "y":0, "matrix": [0, 8]},
+
+ {"label":"K09 (B0,C7)", "x":11, "y":0, "matrix": [0, 9]},
+ {"label":"K0A (B0,D0)", "x":12, "y":0, "matrix": [0, 10]},
+ {"label":"K0B (B0,D1)", "x":13, "y":0, "matrix": [0, 11]},
+ {"label":"K0C (B0,D2)", "x":14, "y":0, "matrix": [0, 12]},
+
+ {"label":"K0E (B0,D4)", "x":15.25, "y":0, "matrix": [0, 14]},
+ {"label":"K0F (B0,D5)", "x":16.25, "y":0, "matrix": [0, 15]},
+ {"label":"K0G (B0,D6)", "x":17.25, "y":0, "matrix": [0, 16]},
+
+ {"label":"K10 (B1,B6)", "x":0, "y":1.25, "matrix": [1, 0]},
+ {"label":"K11 (B1,F4)", "x":1, "y":1.25, "matrix": [1, 1]},
+ {"label":"K12 (B1,C0)", "x":2, "y":1.25, "matrix": [1, 2]},
+ {"label":"K13 (B1,C1)", "x":3, "y":1.25, "matrix": [1, 3]},
+ {"label":"K14 (B1,C2)", "x":4, "y":1.25, "matrix": [1, 4]},
+ {"label":"K15 (B1,C3)", "x":5, "y":1.25, "matrix": [1, 5]},
+ {"label":"K16 (B1,C4)", "x":6, "y":1.25, "matrix": [1, 6]},
+ {"label":"K17 (B1,C5)", "x":7, "y":1.25, "matrix": [1, 7]},
+ {"label":"K18 (B1,C6)", "x":8, "y":1.25, "matrix": [1, 8]},
+ {"label":"K19 (B1,C7)", "x":9, "y":1.25, "matrix": [1, 9]},
+ {"label":"K1A (B1,D0)", "x":10, "y":1.25, "matrix": [1, 10]},
+ {"label":"K1B (B1,D1)", "x":11, "y":1.25, "matrix": [1, 11]},
+ {"label":"K1C (B1,D2)", "x":12, "y":1.25, "matrix": [1, 12]},
+ {"label":"K1D (B1,D3)", "x":13, "y":1.25, "matrix": [1, 13]},
+ {"label":"K0D (B0,D3)", "x":14, "y":1.25, "matrix": [0, 13]},
+
+ {"label":"K1E (B1,D4)", "x":15.25, "y":1.25, "matrix": [1, 14]},
+ {"label":"K1F (B1,D5)", "x":16.25, "y":1.25, "matrix": [1, 15]},
+ {"label":"K1G (B1,D6)", "x":17.25, "y":1.25, "matrix": [1, 16]},
+
+ {"label":"K20 (B2,B6)", "x":0, "y":2.25, "w":1.5, "matrix": [2, 0]},
+ {"label":"K21 (B2,F4)", "x":1.5, "y":2.25, "matrix": [2, 1]},
+ {"label":"K22 (B2,C0)", "x":2.5, "y":2.25, "matrix": [2, 2]},
+ {"label":"K23 (B2,C1)", "x":3.5, "y":2.25, "matrix": [2, 3]},
+ {"label":"K24 (B2,C2)", "x":4.5, "y":2.25, "matrix": [2, 4]},
+ {"label":"K25 (B2,C3)", "x":5.5, "y":2.25, "matrix": [2, 5]},
+ {"label":"K26 (B2,C4)", "x":6.5, "y":2.25, "matrix": [2, 6]},
+ {"label":"K27 (B2,C5)", "x":7.5, "y":2.25, "matrix": [2, 7]},
+ {"label":"K28 (B2,C6)", "x":8.5, "y":2.25, "matrix": [2, 8]},
+ {"label":"K29 (B2,C7)", "x":9.5, "y":2.25, "matrix": [2, 9]},
+ {"label":"K2A (B2,D0)", "x":10.5, "y":2.25, "matrix": [2, 10]},
+ {"label":"K2B (B2,D1)", "x":11.5, "y":2.25, "matrix": [2, 11]},
+ {"label":"K2C (B2,D2)", "x":12.5, "y":2.25, "matrix": [2, 12]},
+ {"label":"K2D (B2,D3)", "x":13.5, "y":2.25, "w":1.5, "matrix": [2, 13]},
+
+ {"label":"K2E (B2,D4)", "x":15.25, "y":2.25, "matrix": [2, 14]},
+ {"label":"K2F (B2,D5)", "x":16.25, "y":2.25, "matrix": [2, 15]},
+ {"label":"K2G (B2,D6)", "x":17.25, "y":2.25, "matrix": [2, 16]},
+
+ {"label":"K30 (B3,B6)", "x":0, "y":3.25, "w":1.75, "matrix": [3, 0]},
+ {"label":"K31 (B3,F4)", "x":1.75, "y":3.25, "matrix": [3, 1]},
+ {"label":"K32 (B3,C0)", "x":2.75, "y":3.25, "matrix": [3, 2]},
+ {"label":"K33 (B3,C1)", "x":3.75, "y":3.25, "matrix": [3, 3]},
+ {"label":"K34 (B3,C2)", "x":4.75, "y":3.25, "matrix": [3, 4]},
+ {"label":"K35 (B3,C3)", "x":5.75, "y":3.25, "matrix": [3, 5]},
+ {"label":"K36 (B3,C4)", "x":6.75, "y":3.25, "matrix": [3, 6]},
+ {"label":"K37 (B3,C5)", "x":7.75, "y":3.25, "matrix": [3, 7]},
+ {"label":"K38 (B3,C6)", "x":8.75, "y":3.25, "matrix": [3, 8]},
+ {"label":"K39 (B3,C7)", "x":9.75, "y":3.25, "matrix": [3, 9]},
+ {"label":"K3A (B3,D0)", "x":10.75, "y":3.25, "matrix": [3, 10]},
+ {"label":"K3B (B3,D1)", "x":11.75, "y":3.25, "matrix": [3, 11]},
+ {"label":"K3C (B3,D2)", "x":12.75, "y":3.25, "matrix": [3, 12]},
+ {"label":"K3D (B3,D3)", "x":13.75, "y":3.25, "w":1.25, "matrix": [3, 13]},
+
+ {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":1.25, "matrix": [4, 0]},
+ {"label":"K41 (B4,F4)", "x":1.25, "y":4.25, "matrix": [4, 1]},
+ {"label":"K42 (B4,C0)", "x":2.25, "y":4.25, "matrix": [4, 2]},
+ {"label":"K43 (B4,C1)", "x":3.25, "y":4.25, "matrix": [4, 3]},
+ {"label":"K44 (B4,C2)", "x":4.25, "y":4.25, "matrix": [4, 4]},
+ {"label":"K45 (B4,C3)", "x":5.25, "y":4.25, "matrix": [4, 5]},
+ {"label":"K46 (B4,C4)", "x":6.25, "y":4.25, "matrix": [4, 6]},
+ {"label":"K47 (B4,C5)", "x":7.25, "y":4.25, "matrix": [4, 7]},
+ {"label":"K48 (B4,C6)", "x":8.25, "y":4.25, "matrix": [4, 8]},
+ {"label":"K49 (B4,C7)", "x":9.25, "y":4.25, "matrix": [4, 9]},
+ {"label":"K4A (B4,D0)", "x":10.25, "y":4.25, "matrix": [4, 10]},
+ {"label":"K4B (B4,D1)", "x":11.25, "y":4.25, "matrix": [4, 11]},
+ {"label":"K4C (B4,D2)", "x":12.25, "y":4.25, "w":1.75, "matrix": [4, 12]},
+ {"label":"K4D (B4,D3)", "x":14, "y":4.25, "matrix": [4, 13]},
+
+ {"label":"K4F (B4,D5)", "x":16.25, "y":4.25, "matrix": [4, 15]},
+
+ {"label":"K50 (B5,B6)", "x":0, "y":5.25, "w":1.25, "matrix": [5, 0]},
+ {"label":"K51 (B5,F4)", "x":1.25, "y":5.25, "w":1.25, "matrix": [5, 1]},
+ {"label":"K52 (B5,C0)", "x":2.5, "y":5.25, "w":1.25, "matrix": [5, 2]},
+ {"label":"K56 (B5,C4)", "x":3.75, "y":5.25, "w":6.25, "matrix": [5, 6]},
+ {"label":"K5A (B5,D0)", "x":10, "y":5.25, "w":1.25, "matrix": [5, 10]},
+ {"label":"K5B (B5,D1)", "x":11.25, "y":5.25, "w":1.25, "matrix": [5, 11]},
+ {"label":"K5C (B5,D2)", "x":12.5, "y":5.25, "w":1.25, "matrix": [5, 12]},
+ {"label":"K5D (B5,D3)", "x":13.75, "y":5.25, "w":1.25, "matrix": [5, 13]},
+
+ {"label":"K5E (B5,D4)", "x":15.25, "y":5.25, "matrix": [5, 14]},
+ {"label":"K5F (B5,D5)", "x":16.25, "y":5.25, "matrix": [5, 15]},
+ {"label":"K5G (B5,D6)", "x":17.25, "y":5.25, "matrix": [5, 16]}
]
}
}
diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/config.h b/keyboards/mechlovin/infinity87/rgb_rev1/config.h
index 5b1a68308b..3c2ffd4b9f 100644
--- a/keyboards/mechlovin/infinity87/rgb_rev1/config.h
+++ b/keyboards/mechlovin/infinity87/rgb_rev1/config.h
@@ -16,10 +16,6 @@
#pragma once
-#define PRODUCT_ID 0x8710
-#define DEVICE_VER 0x0001
-#define PRODUCT Infinity 87 RGB rev1
-
#define MATRIX_ROW_PINS { A10, A13, A14, C13, A4, A3 }
#define MATRIX_COL_PINS { B12, B13, B14, B15, A8, A9, B11, B10, B2, B1, B0, A7, A6, A5, A2, A1, A0 }
diff --git a/keyboards/mechlovin/infinity87/rgb_rev1/info.json b/keyboards/mechlovin/infinity87/rgb_rev1/info.json
index da67c40c39..fc308175cf 100644
--- a/keyboards/mechlovin/infinity87/rgb_rev1/info.json
+++ b/keyboards/mechlovin/infinity87/rgb_rev1/info.json
@@ -1,101 +1,120 @@
{
- "keyboard_name": "infinity87",
+ "keyboard_name": "Infinity87 RGB Rev1",
+ "manufacturer": "Mechlovin.Studio",
"url": "",
"maintainer": "Team Mechlovin'",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x8710",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
- {"label":"K00 (B0,B6)", "x":0, "y":0},
- {"label":"K01 (B0,F4)", "x":2, "y":0},
- {"label":"K02 (B0,C0)", "x":3, "y":0},
- {"label":"K03 (B0,C1)", "x":4, "y":0},
- {"label":"K04 (B0,C2)", "x":5, "y":0},
- {"label":"K05 (B0,C3)", "x":6.5, "y":0},
- {"label":"K06 (B0,C4)", "x":7.5, "y":0},
- {"label":"K07 (B0,C5)", "x":8.5, "y":0},
- {"label":"K08 (B0,C6)", "x":9.5, "y":0},
- {"label":"K09 (B0,C7)", "x":11, "y":0},
- {"label":"K0A (B0,D0)", "x":12, "y":0},
- {"label":"K0B (B0,D1)", "x":13, "y":0},
- {"label":"K0C (B0,D2)", "x":14, "y":0},
- {"label":"K0E (B0,D4)", "x":15.25, "y":0},
- {"label":"K0F (B0,D5)", "x":16.25, "y":0},
- {"label":"K0G (B0,D6)", "x":17.25, "y":0},
- {"label":"K10 (B1,B6)", "x":0, "y":1.25},
- {"label":"K11 (B1,F4)", "x":1, "y":1.25},
- {"label":"K12 (B1,C0)", "x":2, "y":1.25},
- {"label":"K13 (B1,C1)", "x":3, "y":1.25},
- {"label":"K14 (B1,C2)", "x":4, "y":1.25},
- {"label":"K15 (B1,C3)", "x":5, "y":1.25},
- {"label":"K16 (B1,C4)", "x":6, "y":1.25},
- {"label":"K17 (B1,C5)", "x":7, "y":1.25},
- {"label":"K18 (B1,C6)", "x":8, "y":1.25},
- {"label":"K19 (B1,C7)", "x":9, "y":1.25},
- {"label":"K1A (B1,D0)", "x":10, "y":1.25},
- {"label":"K1B (B1,D1)", "x":11, "y":1.25},
- {"label":"K1C (B1,D2)", "x":12, "y":1.25},
- {"label":"K1D (B1,D3)", "x":13, "y":1.25},
- {"label":"K0D (B0,D3)", "x":14, "y":1.25},
- {"label":"K1E (B1,D4)", "x":15.25, "y":1.25},
- {"label":"K1F (B1,D5)", "x":16.25, "y":1.25},
- {"label":"K1G (B1,D6)", "x":17.25, "y":1.25},
- {"label":"K20 (B2,B6)", "x":0, "y":2.25, "w":1.5},
- {"label":"K21 (B2,F4)", "x":1.5, "y":2.25},
- {"label":"K22 (B2,C0)", "x":2.5, "y":2.25},
- {"label":"K23 (B2,C1)", "x":3.5, "y":2.25},
- {"label":"K24 (B2,C2)", "x":4.5, "y":2.25},
- {"label":"K25 (B2,C3)", "x":5.5, "y":2.25},
- {"label":"K26 (B2,C4)", "x":6.5, "y":2.25},
- {"label":"K27 (B2,C5)", "x":7.5, "y":2.25},
- {"label":"K28 (B2,C6)", "x":8.5, "y":2.25},
- {"label":"K29 (B2,C7)", "x":9.5, "y":2.25},
- {"label":"K2A (B2,D0)", "x":10.5, "y":2.25},
- {"label":"K2B (B2,D1)", "x":11.5, "y":2.25},
- {"label":"K2C (B2,D2)", "x":12.5, "y":2.25},
- {"label":"K2D (B2,D3)", "x":13.5, "y":2.25, "w":1.5},
- {"label":"K2E (B2,D4)", "x":15.25, "y":2.25},
- {"label":"K2F (B2,D5)", "x":16.25, "y":2.25},
- {"label":"K2G (B2,D6)", "x":17.25, "y":2.25},
- {"label":"K30 (B3,B6)", "x":0, "y":3.25, "w":1.75},
- {"label":"K31 (B3,F4)", "x":1.75, "y":3.25},
- {"label":"K32 (B3,C0)", "x":2.75, "y":3.25},
- {"label":"K33 (B3,C1)", "x":3.75, "y":3.25},
- {"label":"K34 (B3,C2)", "x":4.75, "y":3.25},
- {"label":"K35 (B3,C3)", "x":5.75, "y":3.25},
- {"label":"K36 (B3,C4)", "x":6.75, "y":3.25},
- {"label":"K37 (B3,C5)", "x":7.75, "y":3.25},
- {"label":"K38 (B3,C6)", "x":8.75, "y":3.25},
- {"label":"K39 (B3,C7)", "x":9.75, "y":3.25},
- {"label":"K3A (B3,D0)", "x":10.75, "y":3.25},
- {"label":"K3B (B3,D1)", "x":11.75, "y":3.25},
- {"label":"K3C (B3,D2)", "x":12.75, "y":3.25},
- {"label":"K3D (B3,D3)", "x":13.75, "y":3.25, "w":1.25},
- {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":1.25},
- {"label":"K41 (B4,F4)", "x":1.25, "y":4.25},
- {"label":"K42 (B4,C0)", "x":2.25, "y":4.25},
- {"label":"K43 (B4,C1)", "x":3.25, "y":4.25},
- {"label":"K44 (B4,C2)", "x":4.25, "y":4.25},
- {"label":"K45 (B4,C3)", "x":5.25, "y":4.25},
- {"label":"K46 (B4,C4)", "x":6.25, "y":4.25},
- {"label":"K47 (B4,C5)", "x":7.25, "y":4.25},
- {"label":"K48 (B4,C6)", "x":8.25, "y":4.25},
- {"label":"K49 (B4,C7)", "x":9.25, "y":4.25},
- {"label":"K4A (B4,D0)", "x":10.25, "y":4.25},
- {"label":"K4B (B4,D1)", "x":11.25, "y":4.25},
- {"label":"K4C (B4,D2)", "x":12.25, "y":4.25, "w":1.75},
- {"label":"K4D (B4,D3)", "x":14, "y":4.25},
- {"label":"K4F (B4,D5)", "x":16.25, "y":4.25},
- {"label":"K50 (B5,B6)", "x":0, "y":5.25, "w":1.25},
- {"label":"K51 (B5,F4)", "x":1.25, "y":5.25, "w":1.25},
- {"label":"K52 (B5,C0)", "x":2.5, "y":5.25, "w":1.25},
- {"label":"K56 (B5,C4)", "x":3.75, "y":5.25, "w":6.25},
- {"label":"K5A (B5,D0)", "x":10, "y":5.25, "w":1.25},
- {"label":"K5B (B5,D1)", "x":11.25, "y":5.25, "w":1.25},
- {"label":"K5C (B5,D2)", "x":12.5, "y":5.25, "w":1.25},
- {"label":"K5D (B5,D3)", "x":13.75, "y":5.25, "w":1.25},
- {"label":"K5E (B5,D4)", "x":15.25, "y":5.25},
- {"label":"K5F (B5,D5)", "x":16.25, "y":5.25},
- {"label":"K5G (B5,D6)", "x":17.25, "y":5.25}
+ {"label":"K00 (B0,B6)", "x":0, "y":0, "matrix": [0, 0]},
+
+ {"label":"K01 (B0,F4)", "x":2, "y":0, "matrix": [0, 1]},
+ {"label":"K02 (B0,C0)", "x":3, "y":0, "matrix": [0, 2]},
+ {"label":"K03 (B0,C1)", "x":4, "y":0, "matrix": [0, 3]},
+ {"label":"K04 (B0,C2)", "x":5, "y":0, "matrix": [0, 4]},
+
+ {"label":"K05 (B0,C3)", "x":6.5, "y":0, "matrix": [0, 5]},
+ {"label":"K06 (B0,C4)", "x":7.5, "y":0, "matrix": [0, 6]},
+ {"label":"K07 (B0,C5)", "x":8.5, "y":0, "matrix": [0, 7]},
+ {"label":"K08 (B0,C6)", "x":9.5, "y":0, "matrix": [0, 8]},
+
+ {"label":"K09 (B0,C7)", "x":11, "y":0, "matrix": [0, 9]},
+ {"label":"K0A (B0,D0)", "x":12, "y":0, "matrix": [0, 10]},
+ {"label":"K0B (B0,D1)", "x":13, "y":0, "matrix": [0, 11]},
+ {"label":"K0C (B0,D2)", "x":14, "y":0, "matrix": [0, 12]},
+
+ {"label":"K0E (B0,D4)", "x":15.25, "y":0, "matrix": [0, 14]},
+ {"label":"K0F (B0,D5)", "x":16.25, "y":0, "matrix": [0, 15]},
+ {"label":"K0G (B0,D6)", "x":17.25, "y":0, "matrix": [0, 16]},
+
+ {"label":"K10 (B1,B6)", "x":0, "y":1.25, "matrix": [1, 0]},
+ {"label":"K11 (B1,F4)", "x":1, "y":1.25, "matrix": [1, 1]},
+ {"label":"K12 (B1,C0)", "x":2, "y":1.25, "matrix": [1, 2]},
+ {"label":"K13 (B1,C1)", "x":3, "y":1.25, "matrix": [1, 3]},
+ {"label":"K14 (B1,C2)", "x":4, "y":1.25, "matrix": [1, 4]},
+ {"label":"K15 (B1,C3)", "x":5, "y":1.25, "matrix": [1, 5]},
+ {"label":"K16 (B1,C4)", "x":6, "y":1.25, "matrix": [1, 6]},
+ {"label":"K17 (B1,C5)", "x":7, "y":1.25, "matrix": [1, 7]},
+ {"label":"K18 (B1,C6)", "x":8, "y":1.25, "matrix": [1, 8]},
+ {"label":"K19 (B1,C7)", "x":9, "y":1.25, "matrix": [1, 9]},
+ {"label":"K1A (B1,D0)", "x":10, "y":1.25, "matrix": [1, 10]},
+ {"label":"K1B (B1,D1)", "x":11, "y":1.25, "matrix": [1, 11]},
+ {"label":"K1C (B1,D2)", "x":12, "y":1.25, "matrix": [1, 12]},
+ {"label":"K1D (B1,D3)", "x":13, "y":1.25, "matrix": [1, 13]},
+ {"label":"K0D (B0,D3)", "x":14, "y":1.25, "matrix": [0, 13]},
+
+ {"label":"K1E (B1,D4)", "x":15.25, "y":1.25, "matrix": [1, 14]},
+ {"label":"K1F (B1,D5)", "x":16.25, "y":1.25, "matrix": [1, 15]},
+ {"label":"K1G (B1,D6)", "x":17.25, "y":1.25, "matrix": [1, 16]},
+
+ {"label":"K20 (B2,B6)", "x":0, "y":2.25, "w":1.5, "matrix": [2, 0]},
+ {"label":"K21 (B2,F4)", "x":1.5, "y":2.25, "matrix": [2, 1]},
+ {"label":"K22 (B2,C0)", "x":2.5, "y":2.25, "matrix": [2, 2]},
+ {"label":"K23 (B2,C1)", "x":3.5, "y":2.25, "matrix": [2, 3]},
+ {"label":"K24 (B2,C2)", "x":4.5, "y":2.25, "matrix": [2, 4]},
+ {"label":"K25 (B2,C3)", "x":5.5, "y":2.25, "matrix": [2, 5]},
+ {"label":"K26 (B2,C4)", "x":6.5, "y":2.25, "matrix": [2, 6]},
+ {"label":"K27 (B2,C5)", "x":7.5, "y":2.25, "matrix": [2, 7]},
+ {"label":"K28 (B2,C6)", "x":8.5, "y":2.25, "matrix": [2, 8]},
+ {"label":"K29 (B2,C7)", "x":9.5, "y":2.25, "matrix": [2, 9]},
+ {"label":"K2A (B2,D0)", "x":10.5, "y":2.25, "matrix": [2, 10]},
+ {"label":"K2B (B2,D1)", "x":11.5, "y":2.25, "matrix": [2, 11]},
+ {"label":"K2C (B2,D2)", "x":12.5, "y":2.25, "matrix": [2, 12]},
+ {"label":"K2D (B2,D3)", "x":13.5, "y":2.25, "w":1.5, "matrix": [2, 13]},
+
+ {"label":"K2E (B2,D4)", "x":15.25, "y":2.25, "matrix": [2, 14]},
+ {"label":"K2F (B2,D5)", "x":16.25, "y":2.25, "matrix": [2, 15]},
+ {"label":"K2G (B2,D6)", "x":17.25, "y":2.25, "matrix": [2, 16]},
+
+ {"label":"K30 (B3,B6)", "x":0, "y":3.25, "w":1.75, "matrix": [3, 0]},
+ {"label":"K31 (B3,F4)", "x":1.75, "y":3.25, "matrix": [3, 1]},
+ {"label":"K32 (B3,C0)", "x":2.75, "y":3.25, "matrix": [3, 2]},
+ {"label":"K33 (B3,C1)", "x":3.75, "y":3.25, "matrix": [3, 3]},
+ {"label":"K34 (B3,C2)", "x":4.75, "y":3.25, "matrix": [3, 4]},
+ {"label":"K35 (B3,C3)", "x":5.75, "y":3.25, "matrix": [3, 5]},
+ {"label":"K36 (B3,C4)", "x":6.75, "y":3.25, "matrix": [3, 6]},
+ {"label":"K37 (B3,C5)", "x":7.75, "y":3.25, "matrix": [3, 7]},
+ {"label":"K38 (B3,C6)", "x":8.75, "y":3.25, "matrix": [3, 8]},
+ {"label":"K39 (B3,C7)", "x":9.75, "y":3.25, "matrix": [3, 9]},
+ {"label":"K3A (B3,D0)", "x":10.75, "y":3.25, "matrix": [3, 10]},
+ {"label":"K3B (B3,D1)", "x":11.75, "y":3.25, "matrix": [3, 11]},
+ {"label":"K3C (B3,D2)", "x":12.75, "y":3.25, "matrix": [3, 12]},
+ {"label":"K3D (B3,D3)", "x":13.75, "y":3.25, "w":1.25, "matrix": [3, 13]},
+
+ {"label":"K40 (B4,B6)", "x":0, "y":4.25, "w":1.25, "matrix": [4, 0]},
+ {"label":"K41 (B4,F4)", "x":1.25, "y":4.25, "matrix": [4, 1]},
+ {"label":"K42 (B4,C0)", "x":2.25, "y":4.25, "matrix": [4, 2]},
+ {"label":"K43 (B4,C1)", "x":3.25, "y":4.25, "matrix": [4, 3]},
+ {"label":"K44 (B4,C2)", "x":4.25, "y":4.25, "matrix": [4, 4]},
+ {"label":"K45 (B4,C3)", "x":5.25, "y":4.25, "matrix": [4, 5]},
+ {"label":"K46 (B4,C4)", "x":6.25, "y":4.25, "matrix": [4, 6]},
+ {"label":"K47 (B4,C5)", "x":7.25, "y":4.25, "matrix": [4, 7]},
+ {"label":"K48 (B4,C6)", "x":8.25, "y":4.25, "matrix": [4, 8]},
+ {"label":"K49 (B4,C7)", "x":9.25, "y":4.25, "matrix": [4, 9]},
+ {"label":"K4A (B4,D0)", "x":10.25, "y":4.25, "matrix": [4, 10]},
+ {"label":"K4B (B4,D1)", "x":11.25, "y":4.25, "matrix": [4, 11]},
+ {"label":"K4C (B4,D2)", "x":12.25, "y":4.25, "w":1.75, "matrix": [4, 12]},
+ {"label":"K4D (B4,D3)", "x":14, "y":4.25, "matrix": [4, 13]},
+
+ {"label":"K4F (B4,D5)", "x":16.25, "y":4.25, "matrix": [4, 15]},
+
+ {"label":"K50 (B5,B6)", "x":0, "y":5.25, "w":1.25, "matrix": [5, 0]},
+ {"label":"K51 (B5,F4)", "x":1.25, "y":5.25, "w":1.25, "matrix": [5, 1]},
+ {"label":"K52 (B5,C0)", "x":2.5, "y":5.25, "w":1.25, "matrix": [5, 2]},
+ {"label":"K56 (B5,C4)", "x":3.75, "y":5.25, "w":6.25, "matrix": [5, 6]},
+ {"label":"K5A (B5,D0)", "x":10, "y":5.25, "w":1.25, "matrix": [5, 10]},
+ {"label":"K5B (B5,D1)", "x":11.25, "y":5.25, "w":1.25, "matrix": [5, 11]},
+ {"label":"K5C (B5,D2)", "x":12.5, "y":5.25, "w":1.25, "matrix": [5, 12]},
+ {"label":"K5D (B5,D3)", "x":13.75, "y":5.25, "w":1.25, "matrix": [5, 13]},
+
+ {"label":"K5E (B5,D4)", "x":15.25, "y":5.25, "matrix": [5, 14]},
+ {"label":"K5F (B5,D5)", "x":16.25, "y":5.25, "matrix": [5, 15]},
+ {"label":"K5G (B5,D6)", "x":17.25, "y":5.25, "matrix": [5, 16]}
]
}
}
diff --git a/keyboards/mechlovin/infinity875/config.h b/keyboards/mechlovin/infinity875/config.h
index 6b6a8147f6..4f02ed39c9 100644
--- a/keyboards/mechlovin/infinity875/config.h
+++ b/keyboards/mechlovin/infinity875/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C // ML
-#define PRODUCT_ID 0x0875
-#define DEVICE_VER 0x0001
-#define PRODUCT Infinity87.5
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -40,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#define MATRIX_ROW_PINS { D5, D2, D4, D3, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/mechlovin/infinity875/info.json b/keyboards/mechlovin/infinity875/info.json
index e24c0d1cc2..9c9fe10a10 100644
--- a/keyboards/mechlovin/infinity875/info.json
+++ b/keyboards/mechlovin/infinity875/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Infinity87.5",
+ "manufacturer": "Mechlovin.Studio",
"url": "",
"maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x0875",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi_split_bs_rshift": {
"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.5, "y":0}, {"label":"0,6", "x":7.5, "y":0}, {"label":"0,7", "x":8.5, "y":0}, {"label":"0,8", "x":9.5, "y":0}, {"label":"0,9", "x":11, "y":0}, {"label":"0,10", "x":12, "y":0}, {"label":"0,11", "x":13, "y":0}, {"label":"0,12", "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":"2,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":"3,12", "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,13", "x":12.75, "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":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "x":12.25, "y":4.25}, {"label":"4,13", "x":13.25, "y":4.25, "w":1.75}, {"label":"4,15", "x":16.25, "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,6", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,10", "x":10, "y":5.25, "w":1.25}, {"label":"5,11", "x":11.25, "y":5.25, "w":1.25}, {"label":"5,12", "x":12.5, "y":5.25, "w":1.25}, {"label":"5,13", "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}]
diff --git a/keyboards/mechlovin/infinity875/readme.md b/keyboards/mechlovin/infinity875/readme.md
index b3e14a7bb7..39c76e5dc9 100644
--- a/keyboards/mechlovin/infinity875/readme.md
+++ b/keyboards/mechlovin/infinity875/readme.md
@@ -19,6 +19,6 @@ Flashing example for this 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).
**Reset Key:** 3 ways to put the IF87.5 into bootloader:
-- By keycode: Tap RESET keycode.
+- By keycode: Press the key mapped to `QK_BOOT` if it is available.
- By bootmagic: hold ESC key while plugging in.
- By hardware: Push reset button on bottom of the PCB while the PCB is plugged in. \ No newline at end of file
diff --git a/keyboards/mechlovin/infinity88/config.h b/keyboards/mechlovin/infinity88/config.h
index edbb628e7b..c6eeb108f9 100644
--- a/keyboards/mechlovin/infinity88/config.h
+++ b/keyboards/mechlovin/infinity88/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C // ML
-#define PRODUCT_ID 0x8802
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Team.Mechlovin
-#define PRODUCT Infinity 88
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/mechlovin/infinity88/info.json b/keyboards/mechlovin/infinity88/info.json
index edf91c4687..126e463917 100644
--- a/keyboards/mechlovin/infinity88/info.json
+++ b/keyboards/mechlovin/infinity88/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "infinity88",
+ "keyboard_name": "Infinity 88",
+ "manufacturer": "Team.Mechlovin",
"url": "",
"maintainer": "mechlovin",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x8802",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/infinityce/config.h b/keyboards/mechlovin/infinityce/config.h
index 838fc1da7f..1fbb5690d4 100644
--- a/keyboards/mechlovin/infinityce/config.h
+++ b/keyboards/mechlovin/infinityce/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C // ML-Mechlovin
-#define PRODUCT_ID 0x8801
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Team.Mechlovin
-#define PRODUCT Infinity CE
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/mechlovin/infinityce/info.json b/keyboards/mechlovin/infinityce/info.json
index 6b3b2f8adf..f85aa21278 100644
--- a/keyboards/mechlovin/infinityce/info.json
+++ b/keyboards/mechlovin/infinityce/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Infinity CE",
+ "manufacturer": "Team.Mechlovin",
"url": "",
"maintainer": "Team Mechlovin'",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x8801",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/jay60/config.h b/keyboards/mechlovin/jay60/config.h
index 521b8ae0db..5228f40751 100644
--- a/keyboards/mechlovin/jay60/config.h
+++ b/keyboards/mechlovin/jay60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C
-#define PRODUCT_ID 0x0600
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mechlovin Studio
-#define PRODUCT Jay60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C2, C1, C0, D7, A1 }
#define MATRIX_COL_PINS { B6, B5, B3, B2, B1, B0, A0, A6, A7, C7, C6, C5, C4, C3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechlovin/jay60/info.json b/keyboards/mechlovin/jay60/info.json
index d4c0f57dd6..69e336fa31 100644
--- a/keyboards/mechlovin/jay60/info.json
+++ b/keyboards/mechlovin/jay60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Jay60",
+ "manufacturer": "Mechlovin Studio",
"url": "",
"maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x0600",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/jay60/readme.md b/keyboards/mechlovin/jay60/readme.md
index 79867e5503..81f5ae6ed7 100644
--- a/keyboards/mechlovin/jay60/readme.md
+++ b/keyboards/mechlovin/jay60/readme.md
@@ -23,4 +23,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/mechlovin/kanu/config.h b/keyboards/mechlovin/kanu/config.h
index 3e5c0ee676..d9028d0740 100644
--- a/keyboards/mechlovin/kanu/config.h
+++ b/keyboards/mechlovin/kanu/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C // ML-MechLovin'
-#define PRODUCT_ID 0x4B4E // KN-Kanu
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mechlovin
-#define PRODUCT Kanu
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B5, B6, D3, C6, C7 }
#define MATRIX_COL_PINS { E6, B1, B3, F0, F1, F4, F5, F6, F7, D5, D4, B4, D6, D7, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechlovin/kanu/info.json b/keyboards/mechlovin/kanu/info.json
index 1049ba7d1d..7e4f902bfb 100644
--- a/keyboards/mechlovin/kanu/info.json
+++ b/keyboards/mechlovin/kanu/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Kanu",
+ "manufacturer": "Mechlovin",
"url": "",
"maintainer": "Team Mechlovin'",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x4B4E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/kay60/config.h b/keyboards/mechlovin/kay60/config.h
index ae321a6491..2cae8a3b67 100644
--- a/keyboards/mechlovin/kay60/config.h
+++ b/keyboards/mechlovin/kay60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
@@ -52,6 +44,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define LED_SCROLL_LOCK_PIN B2
//#define LED_COMPOSE_PIN B3
//#define LED_KANA_PIN B4
+#define LED_PIN_ON_STATE 0
//#define BACKLIGHT_PIN B7
//#define BACKLIGHT_LEVELS 3
diff --git a/keyboards/mechlovin/kay60/info.json b/keyboards/mechlovin/kay60/info.json
index adcbc594d4..86298b5582 100644
--- a/keyboards/mechlovin/kay60/info.json
+++ b/keyboards/mechlovin/kay60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "kay60",
+ "keyboard_name": "Kay60",
+ "manufacturer": "Mechlovin Studio",
"url": "",
"maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x0601",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/kay60/keymaps/default/keymap.c b/keyboards/mechlovin/kay60/keymaps/default/keymap.c
index 10546ece4d..8acd5409f5 100644
--- a/keyboards/mechlovin/kay60/keymaps/default/keymap.c
+++ b/keyboards/mechlovin/kay60/keymaps/default/keymap.c
@@ -22,8 +22,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_1, KC_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
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, TO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL
),
[1] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/mechlovin/kay60/keymaps/via/keymap.c b/keyboards/mechlovin/kay60/keymaps/via/keymap.c
index 34b8cb9822..0bb6219cef 100644
--- a/keyboards/mechlovin/kay60/keymaps/via/keymap.c
+++ b/keyboards/mechlovin/kay60/keymaps/via/keymap.c
@@ -22,8 +22,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_1, KC_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
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, TO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL
),
[1] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/mechlovin/kay60/readme.md b/keyboards/mechlovin/kay60/readme.md
index cc53c13175..16c8414b34 100644
--- a/keyboards/mechlovin/kay60/readme.md
+++ b/keyboards/mechlovin/kay60/readme.md
@@ -22,5 +22,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
* **Physic button**: Press reset swith on the bottom of the PCB
diff --git a/keyboards/mechlovin/kay65/config.h b/keyboards/mechlovin/kay65/config.h
index cc1b991672..09e841804e 100644
--- a/keyboards/mechlovin/kay65/config.h
+++ b/keyboards/mechlovin/kay65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C
-#define PRODUCT_ID 0x6502
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Team Mechlovin
-#define PRODUCTION Kay65 Rev. 1
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/mechlovin/kay65/info.json b/keyboards/mechlovin/kay65/info.json
index 7afccc81c0..ec96aba032 100644
--- a/keyboards/mechlovin/kay65/info.json
+++ b/keyboards/mechlovin/kay65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Kay65",
+ "keyboard_name": "Kay65 Rev. 1",
+ "manufacturer": "Team Mechlovin",
"url": "",
"maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x6502",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/kay65/readme.md b/keyboards/mechlovin/kay65/readme.md
index 768ce12aa7..d15317710f 100644
--- a/keyboards/mechlovin/kay65/readme.md
+++ b/keyboards/mechlovin/kay65/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/mechlovin/mechlovin9/config.h b/keyboards/mechlovin/mechlovin9/config.h
index 669d79ac91..6795046f8b 100644
--- a/keyboards/mechlovin/mechlovin9/config.h
+++ b/keyboards/mechlovin/mechlovin9/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C
-#define MANUFACTURER Mechlovin Studio
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/mechlovin/mechlovin9/info.json b/keyboards/mechlovin/mechlovin9/info.json
index 6fea78aecc..c0a64b984a 100644
--- a/keyboards/mechlovin/mechlovin9/info.json
+++ b/keyboards/mechlovin/mechlovin9/info.json
@@ -1,7 +1,10 @@
{
- "keyboard_name": "mechlovin9",
+ "manufacturer": "Mechlovin Studio",
"url": "",
"maintainer": "Team Mechlovin",
+ "usb": {
+ "vid": "0x4D4C"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/mechlovin9/rev1/config.h b/keyboards/mechlovin/mechlovin9/rev1/config.h
index 2a9c335d73..236529e243 100644
--- a/keyboards/mechlovin/mechlovin9/rev1/config.h
+++ b/keyboards/mechlovin/mechlovin9/rev1/config.h
@@ -17,10 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define PRODUCT_ID 0x6509
-#define DEVICE_VER 0x0001
-#define PRODUCT Mechlovin9
-
/*
* Keyboard Matrix Assignments
*
diff --git a/keyboards/mechlovin/mechlovin9/rev1/info.json b/keyboards/mechlovin/mechlovin9/rev1/info.json
new file mode 100644
index 0000000000..2153f0ad17
--- /dev/null
+++ b/keyboards/mechlovin/mechlovin9/rev1/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Mechlovin9",
+ "usb": {
+ "pid": "0x6509",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/mechlovin/mechlovin9/rev2/config.h b/keyboards/mechlovin/mechlovin9/rev2/config.h
index ed11fafa83..c06295dfde 100644
--- a/keyboards/mechlovin/mechlovin9/rev2/config.h
+++ b/keyboards/mechlovin/mechlovin9/rev2/config.h
@@ -17,10 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define PRODUCT_ID 0x6509
-#define DEVICE_VER 0x0002
-#define PRODUCT Mechlovin9 Rev2
-
/*
* Keyboard Matrix Assignments
*
diff --git a/keyboards/mechlovin/mechlovin9/rev2/info.json b/keyboards/mechlovin/mechlovin9/rev2/info.json
new file mode 100644
index 0000000000..2c92773e6d
--- /dev/null
+++ b/keyboards/mechlovin/mechlovin9/rev2/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Mechlovin9 Rev2",
+ "usb": {
+ "pid": "0x6509",
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/mechlovin/olly/bb/config.h b/keyboards/mechlovin/olly/bb/config.h
index 3110a9589c..00ecb21470 100644
--- a/keyboards/mechlovin/olly/bb/config.h
+++ b/keyboards/mechlovin/olly/bb/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C
-#define PRODUCT_ID 0xD181
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mechlovin.Studio
-#define PRODUCT Olly BB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 19
@@ -41,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#define MATRIX_ROW_PINS {D6, A5, A4, A3, A6}
-#define UNUSED_PINS
#define BACKLIGHT_PIN D4
#define BACKLIGHT_BREATHING
diff --git a/keyboards/mechlovin/olly/bb/info.json b/keyboards/mechlovin/olly/bb/info.json
index fbc9bae3eb..c37f167bdb 100644
--- a/keyboards/mechlovin/olly/bb/info.json
+++ b/keyboards/mechlovin/olly/bb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Mechlovin Olly",
+ "keyboard_name": "Olly BB",
+ "manufacturer": "Mechlovin.Studio",
"url": "",
"maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0xD181",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/olly/bb/readme.md b/keyboards/mechlovin/olly/bb/readme.md
index 0e41a3072f..6afdc161ea 100644
--- a/keyboards/mechlovin/olly/bb/readme.md
+++ b/keyboards/mechlovin/olly/bb/readme.md
@@ -19,5 +19,5 @@ Flashing example for this 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).
**Reset Key:** 2 ways to put the Olly JF into bootloader:
-By keycode: Tap RESET keycode.
+By keycode: Press the key mapped to `QK_BOOT` if it is available.
By bootloader: hold ESC key while plugging in \ No newline at end of file
diff --git a/keyboards/mechlovin/olly/jf/config.h b/keyboards/mechlovin/olly/jf/config.h
index f1c40cb365..4dc4785332 100644
--- a/keyboards/mechlovin/olly/jf/config.h
+++ b/keyboards/mechlovin/olly/jf/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C
-#define PRODUCT_ID 0xD180
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mechlovin.Studio
-#define PRODUCT Olly JF
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 19
@@ -41,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#define MATRIX_ROW_PINS { D5, D6, A5, A4, A3, A6}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/mechlovin/olly/jf/info.json b/keyboards/mechlovin/olly/jf/info.json
index ab57d31787..96ea429cb9 100644
--- a/keyboards/mechlovin/olly/jf/info.json
+++ b/keyboards/mechlovin/olly/jf/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Mechlovin Olly",
+ "keyboard_name": "Olly JF",
+ "manufacturer": "Mechlovin.Studio",
"url": "",
"maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0xD180",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/olly/jf/readme.md b/keyboards/mechlovin/olly/jf/readme.md
index 6a6bbc415a..fe9cf38cad 100644
--- a/keyboards/mechlovin/olly/jf/readme.md
+++ b/keyboards/mechlovin/olly/jf/readme.md
@@ -19,6 +19,6 @@ Flashing example for this 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).
**Reset Key:** 3 ways to put the Olly JF into bootloader:
-By keycode: Tap RESET keycode.
+By keycode: Press the key mapped to `QK_BOOT` if it is available.
By Bootloader: hold ESC key while plugging in (jump to bootloader)
By Bootmagic: hold Insert key while pluging in (jump to bootloader and reset EEPROM) \ No newline at end of file
diff --git a/keyboards/mechlovin/pisces/config.h b/keyboards/mechlovin/pisces/config.h
index 48a94eb262..217c63f7e4 100644
--- a/keyboards/mechlovin/pisces/config.h
+++ b/keyboards/mechlovin/pisces/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C // ML-Mechlovin
-#define PRODUCT_ID 0x6501
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Team.Mechlovin
-#define PRODUCT Pisces65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/mechlovin/pisces/info.json b/keyboards/mechlovin/pisces/info.json
index 57da5b4a0e..20b521636f 100644
--- a/keyboards/mechlovin/pisces/info.json
+++ b/keyboards/mechlovin/pisces/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "pisces",
+ "keyboard_name": "Pisces65",
+ "manufacturer": "Team.Mechlovin",
"url": "",
"maintainer": "mechlovin",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x6501",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/serratus/config.h b/keyboards/mechlovin/serratus/config.h
index 0bb9ccbea9..4b497875da 100644
--- a/keyboards/mechlovin/serratus/config.h
+++ b/keyboards/mechlovin/serratus/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C // ML
-#define PRODUCT_ID 0x0870
-#define DEVICE_VER 0x0001
-#define PRODUCT Serratus Rev.1
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -40,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#define MATRIX_ROW_PINS { D5, D2, D4, D3, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/mechlovin/serratus/info.json b/keyboards/mechlovin/serratus/info.json
index 209ee4a330..fe891d5987 100644
--- a/keyboards/mechlovin/serratus/info.json
+++ b/keyboards/mechlovin/serratus/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Serratus",
+ "keyboard_name": "Serratus Rev.1",
+ "manufacturer": "Mechlovin Studio",
"url": "",
"maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x0870",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mechlovin/th1800/config.h b/keyboards/mechlovin/th1800/config.h
index f8c4567825..46c370ae2e 100644
--- a/keyboards/mechlovin/th1800/config.h
+++ b/keyboards/mechlovin/th1800/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C // ML-Mechlovin
-#define PRODUCT_ID 0x1800
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Team Mechlovin
-#define PRODUCT th1800
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, B7, D0, D1, D5, D6 }
#define MATRIX_COL_PINS { A3, D7, C0, C1, C2, C3, C4, C5, C6, C7, A7, A6, A5, A4, B3, B2, B0, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechlovin/th1800/info.json b/keyboards/mechlovin/th1800/info.json
index 8efddf61a1..535903586c 100644
--- a/keyboards/mechlovin/th1800/info.json
+++ b/keyboards/mechlovin/th1800/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "th-1800",
+ "manufacturer": "Team Mechlovin",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x1800",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mechlovin/tmkl/config.h b/keyboards/mechlovin/tmkl/config.h
index 9a1d865e29..ad5cd60338 100644
--- a/keyboards/mechlovin/tmkl/config.h
+++ b/keyboards/mechlovin/tmkl/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4C // ML
-#define PRODUCT_ID 0xC601 // Commissions 60v1
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Team Mechlovin
-#define PRODUCT TMKL
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 14
diff --git a/keyboards/mechlovin/tmkl/info.json b/keyboards/mechlovin/tmkl/info.json
index b57ea89fa7..80922903ce 100644
--- a/keyboards/mechlovin/tmkl/info.json
+++ b/keyboards/mechlovin/tmkl/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "tmkl",
+ "keyboard_name": "TMKL",
+ "manufacturer": "Team Mechlovin",
"maintainer": "Team Mechlovin",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0xC601",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mechlovin/zed60/config.h b/keyboards/mechlovin/zed60/config.h
new file mode 100644
index 0000000000..af78e10b7c
--- /dev/null
+++ b/keyboards/mechlovin/zed60/config.h
@@ -0,0 +1,78 @@
+/*
+Copyright 2022 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"
+
+/* 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 { B10, B2, B1, B0, A2 }
+#define MATRIX_COL_PINS { A10, A3, A9, A8, B15, B14, B13, B12, B5, B4, B3, A15, B7, B6 }
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define LED_CAPS_LOCK_PIN A4
+
+#ifdef RGBLIGHT_ENABLE
+#define RGB_DI_PIN A7
+#define RGBLED_NUM 22
+#define RGBLIGHT_LIMIT_VAL 255
+
+#define WS2812_SPI SPID1 // default: SPID1
+#define WS2812_SPI_MOSI_PAL_MODE 5 // MOSI pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+# 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
diff --git a/keyboards/mechlovin/zed60/halconf.h b/keyboards/mechlovin/zed60/halconf.h
new file mode 100644
index 0000000000..ccf7447285
--- /dev/null
+++ b/keyboards/mechlovin/zed60/halconf.h
@@ -0,0 +1,22 @@
+/* Copyright 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/>.
+ */
+
+#pragma once
+
+#define HAL_USE_SPI TRUE
+
+#include_next <halconf.h>
+
diff --git a/keyboards/mechlovin/zed60/info.json b/keyboards/mechlovin/zed60/info.json
new file mode 100644
index 0000000000..11c3e87247
--- /dev/null
+++ b/keyboards/mechlovin/zed60/info.json
@@ -0,0 +1,156 @@
+{
+ "keyboard_name": "Zed60",
+ "manufacturer": "Mechlovin Studio",
+ "url": "",
+ "maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x0602",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT_all": "LAYOUT_60_ansi_split_bs_rshift"
+ },
+ "layouts": {
+ "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": {
+ "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/zed60/keymaps/default/keymap.c b/keyboards/mechlovin/zed60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d71ba8685e
--- /dev/null
+++ b/keyboards/mechlovin/zed60/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 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_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_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_RSFT, TO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL
+ ),
+ [1] = LAYOUT_60_ansi_split_bs_rshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, 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/zed60/keymaps/default/readme.md b/keyboards/mechlovin/zed60/keymaps/default/readme.md
new file mode 100644
index 0000000000..c7d59d9829
--- /dev/null
+++ b/keyboards/mechlovin/zed60/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Zed60
diff --git a/keyboards/mechlovin/zed60/keymaps/via/keymap.c b/keyboards/mechlovin/zed60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..8b3096d780
--- /dev/null
+++ b/keyboards/mechlovin/zed60/keymaps/via/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2022 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_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_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_RSFT, TO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL
+ ),
+ [1] = LAYOUT_60_ansi_split_bs_rshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PENT,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_P0, KC_P1, KC_P2, KC_P3, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_60_ansi_split_bs_rshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_60_ansi_split_bs_rshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/keyboards/mechlovin/zed60/keymaps/via/readme.md b/keyboards/mechlovin/zed60/keymaps/via/readme.md
new file mode 100644
index 0000000000..b05c87e476
--- /dev/null
+++ b/keyboards/mechlovin/zed60/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA keymap for Zed60
diff --git a/keyboards/mechlovin/zed60/keymaps/via/rules.mk b/keyboards/mechlovin/zed60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/mechlovin/zed60/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/mechlovin/zed60/mcuconf.h b/keyboards/mechlovin/zed60/mcuconf.h
new file mode 100644
index 0000000000..0a9c3ca2c5
--- /dev/null
+++ b/keyboards/mechlovin/zed60/mcuconf.h
@@ -0,0 +1,23 @@
+/* Copyright 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/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+
+#undef STM32_SPI_USE_SPI1
+#define STM32_SPI_USE_SPI1 TRUE
diff --git a/keyboards/mechlovin/zed60/readme.md b/keyboards/mechlovin/zed60/readme.md
new file mode 100644
index 0000000000..d2e76ff55c
--- /dev/null
+++ b/keyboards/mechlovin/zed60/readme.md
@@ -0,0 +1,27 @@
+# zed60
+
+![zed60](https://i.imgur.com/KyTpfmMl.png)
+
+Zed60 PCB, 60% keyboard PCB.
+* Keyboard Maintainer: [Mechlovin'](https://mechlovin.studio)
+* Hardware Supported: Zed60, APM32F103
+* Hardware Availability: [Mechlovin'](https://mechlovin.studio)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/zed60:default
+
+Flashing example for this keyboard:
+
+ make mechlovin/zed60:default:flash
+
+## Bootloader
+
+Enter the bootloader in 4 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 `QK_BOOT` if it is available
+* **Bootloader**: Hold down the key at (0,13) in the matrix (Backspace) and plug 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/mechlovin/zed60/rules.mk b/keyboards/mechlovin/zed60/rules.mk
new file mode 100644
index 0000000000..d90d20b776
--- /dev/null
+++ b/keyboards/mechlovin/zed60/rules.mk
@@ -0,0 +1,20 @@
+# 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 = no # 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
diff --git a/keyboards/mechlovin/zed60/zed60.c b/keyboards/mechlovin/zed60/zed60.c
new file mode 100644
index 0000000000..fb0c44ec3d
--- /dev/null
+++ b/keyboards/mechlovin/zed60/zed60.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 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 "zed60.h"
diff --git a/keyboards/mechlovin/zed60/zed60.h b/keyboards/mechlovin/zed60/zed60.h
new file mode 100644
index 0000000000..36ffa18330
--- /dev/null
+++ b/keyboards/mechlovin/zed60/zed60.h
@@ -0,0 +1,66 @@
+/* Copyright 2022 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_60_ansi_split_bs_rshift( \
+ 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/zed65/config.h b/keyboards/mechlovin/zed65/config.h
new file mode 100644
index 0000000000..b93b4900e0
--- /dev/null
+++ b/keyboards/mechlovin/zed65/config.h
@@ -0,0 +1,108 @@
+/*
+Copyright 2022 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"
+
+#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)
+ *
+ */
+/* 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 C14
+//#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
+
+/* 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
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/mechlovin/zed65/readme.md b/keyboards/mechlovin/zed65/readme.md
new file mode 100644
index 0000000000..7da1e7c365
--- /dev/null
+++ b/keyboards/mechlovin/zed65/readme.md
@@ -0,0 +1,25 @@
+# Zed65
+
+Mechlovin's 65% PCB Platform, which works as the base for our 65%-layout PCB designs.
+
+* Keyboard Maintainer: [Mechlovin' Studio](https://github.com/mechlovin)
+* Hardware Supported: Zed65 Rev.1, APM32F103
+* Hardware Availability: [Mechlovin' Store](https://mechlovin.studio/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/zed65:default
+
+Flashing example for this keyboard:
+
+ make mechlovin/zed65: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 `QK_BOOT` if it is available
diff --git a/keyboards/mechlovin/zed65/retro66/config.h b/keyboards/mechlovin/zed65/retro66/config.h
new file mode 100644
index 0000000000..7609b34024
--- /dev/null
+++ b/keyboards/mechlovin/zed65/retro66/config.h
@@ -0,0 +1,33 @@
+/*
+Copyright 2022 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"
+
+#define MATRIX_ROW_PINS { B13, B14, A8, A1, A0 }
+#define MATRIX_COL_PINS { B11, B12, B10, B2, B1, B0, A7, A6, A5, A4, A3, A2, B3, A15, B5 }
+
+
+// Number of encoders
+
+#define ENCODERS_PAD_A { B4, B6 }
+#define ENCODERS_PAD_B { B8, B9 }
+
+
+#define ENCODER_RESOLUTION 4
+#define TAP_CODE_DELAY 10 \ No newline at end of file
diff --git a/keyboards/mechlovin/zed65/retro66/info.json b/keyboards/mechlovin/zed65/retro66/info.json
new file mode 100644
index 0000000000..a40bee98dd
--- /dev/null
+++ b/keyboards/mechlovin/zed65/retro66/info.json
@@ -0,0 +1,19 @@
+{
+ "keyboard_name": "Retro66",
+ "manufacturer": "Mechlovin Studio",
+ "url": "",
+ "maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x6601",
+ "device_version": "0.0.1"
+ },
+ "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, "w":2}, {"label":"Insert", "x":15.75, "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.75, "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":"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.25}, {"label":"\u2191", "x":14.75, "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.5}, {"label":"Ctrl", "x":11.5, "y":4, "w":1.25}, {"label":"\u2190", "x":13.75, "y":4}, {"label":"\u2193", "x":14.75, "y":4}, {"label":"\u2192", "x":15.75, "y":4}]
+ },
+ "LAYOUT_blocker": {
+ "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, "w":2}, {"label":"Insert", "x":15.75, "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.75, "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":"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.25}, {"label":"\u2191", "x":14.75, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":2.25, "y":4, "w":1.5}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":4, "w":1.25}, {"label":"\u2190", "x":13.75, "y":4}, {"label":"\u2193", "x":14.75, "y":4}, {"label":"\u2192", "x":15.75, "y":4}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/mechlovin/zed65/retro66/keymaps/default/keymap.c b/keyboards/mechlovin/zed65/retro66/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e20b641e12
--- /dev/null
+++ b/keyboards/mechlovin/zed65/retro66/keymaps/default/keymap.c
@@ -0,0 +1,35 @@
+/*
+Copyright 2022 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_1, KC_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_LSFT, KC_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_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_BRID, KC_BRIU) }
+};
+#endif
diff --git a/keyboards/mechlovin/zed65/retro66/keymaps/default/readme.md b/keyboards/mechlovin/zed65/retro66/keymaps/default/readme.md
new file mode 100644
index 0000000000..ac3f3127e7
--- /dev/null
+++ b/keyboards/mechlovin/zed65/retro66/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Retro66 \ No newline at end of file
diff --git a/keyboards/mechlovin/zed65/retro66/keymaps/default/rules.mk b/keyboards/mechlovin/zed65/retro66/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/mechlovin/zed65/retro66/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechlovin/zed65/retro66/keymaps/via/keymap.c b/keyboards/mechlovin/zed65/retro66/keymaps/via/keymap.c
new file mode 100644
index 0000000000..2c9e49e753
--- /dev/null
+++ b/keyboards/mechlovin/zed65/retro66/keymaps/via/keymap.c
@@ -0,0 +1,61 @@
+/*
+Copyright 2022 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_1, KC_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_LSFT, KC_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_RGUI, 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
+ ),
+ [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
+ ),
+
+
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_BRID, KC_BRIU) },
+ [1] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_BRID, KC_BRIU) },
+ [2] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_BRID, KC_BRIU) },
+ [3] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_BRID, KC_BRIU) }
+};
+#endif
diff --git a/keyboards/mechlovin/zed65/retro66/keymaps/via/readme.md b/keyboards/mechlovin/zed65/retro66/keymaps/via/readme.md
new file mode 100644
index 0000000000..6216302953
--- /dev/null
+++ b/keyboards/mechlovin/zed65/retro66/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA keymap for retro66 \ No newline at end of file
diff --git a/keyboards/mechlovin/zed65/retro66/keymaps/via/rules.mk b/keyboards/mechlovin/zed65/retro66/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1189f4ad19
--- /dev/null
+++ b/keyboards/mechlovin/zed65/retro66/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechlovin/zed65/retro66/readme.md b/keyboards/mechlovin/zed65/retro66/readme.md
new file mode 100644
index 0000000000..af568441d7
--- /dev/null
+++ b/keyboards/mechlovin/zed65/retro66/readme.md
@@ -0,0 +1,27 @@
+# Retro66
+
+![Retro66](https://i.imgur.com/gs52Otbl.jpeg)
+
+A Retro66 keyboard PCB, base on Zed65.
+
+* Keyboard Maintainer: [Mechlovin' Studio](https://github.com/mechlovin)
+* Hardware Supported: Zed65, APM32F103
+* Hardware Availability: [Mechlovin' Store](https://mechlovin.studio/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/zed65/retro66:default
+
+Flashing example for this keyboard:
+
+ make mechlovin/zed65/retro66: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 `QK_BOOT` if it is available
diff --git a/keyboards/mechlovin/zed65/retro66/retro66.c b/keyboards/mechlovin/zed65/retro66/retro66.c
new file mode 100644
index 0000000000..ffdf09db28
--- /dev/null
+++ b/keyboards/mechlovin/zed65/retro66/retro66.c
@@ -0,0 +1,19 @@
+/*
+Copyright 2022 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 "retro66.h"
+
diff --git a/keyboards/mechlovin/zed65/retro66/retro66.h b/keyboards/mechlovin/zed65/retro66/retro66.h
new file mode 100644
index 0000000000..2e51141b6d
--- /dev/null
+++ b/keyboards/mechlovin/zed65/retro66/retro66.h
@@ -0,0 +1,48 @@
+/*
+Copyright 2022 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, 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, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ 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, KC_NO, K2D, KC_NO }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO }, \
+ { K40, K41, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
+
+#define LAYOUT_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, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, 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, KC_NO, K2D, KC_NO }, \
+ { K30, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, KC_NO }, \
+ { K40, KC_NO, K42, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E }, \
+}
diff --git a/keyboards/mechlovin/zed65/retro66/rules.mk b/keyboards/mechlovin/zed65/retro66/rules.mk
new file mode 100644
index 0000000000..5af1ba8536
--- /dev/null
+++ b/keyboards/mechlovin/zed65/retro66/rules.mk
@@ -0,0 +1 @@
+ENCODER_ENABLE = yes
diff --git a/keyboards/mechlovin/zed65/rules.mk b/keyboards/mechlovin/zed65/rules.mk
new file mode 100644
index 0000000000..a3a13b375b
--- /dev/null
+++ b/keyboards/mechlovin/zed65/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = STM32F103
+BOARD = STM32_F103_STM32DUINO
+
+# 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 = 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 = mechlovin/zed65/wearhaus66
diff --git a/keyboards/mechlovin/zed65/wearhaus66/config.h b/keyboards/mechlovin/zed65/wearhaus66/config.h
new file mode 100644
index 0000000000..5b79931a03
--- /dev/null
+++ b/keyboards/mechlovin/zed65/wearhaus66/config.h
@@ -0,0 +1,57 @@
+/*
+Copyright 2022 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"
+
+#define MATRIX_ROW_PINS { B13, B14, A8, A1, A0 }
+#define MATRIX_COL_PINS { B11, B12, B10, B2, B1, B0, A7, A6, A5, A4, A3, A2, B3, A15, B5 }
+
+
+#ifdef RGBLIGHT_ENABLE
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 24
+#define RGBLIGHT_LIMIT_VAL 255
+
+#define WS2812_SPI SPID2 // default: SPID1
+#define WS2812_SPI_MOSI_PAL_MODE 0 // MOSI pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5
+
+//#define RGB_DI_PIN E2
+//#ifdef RGB_DI_PIN
+# 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 \ No newline at end of file
diff --git a/keyboards/mechlovin/zed65/wearhaus66/halconf.h b/keyboards/mechlovin/zed65/wearhaus66/halconf.h
new file mode 100644
index 0000000000..ccf7447285
--- /dev/null
+++ b/keyboards/mechlovin/zed65/wearhaus66/halconf.h
@@ -0,0 +1,22 @@
+/* Copyright 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/>.
+ */
+
+#pragma once
+
+#define HAL_USE_SPI TRUE
+
+#include_next <halconf.h>
+
diff --git a/keyboards/mechlovin/zed65/wearhaus66/info.json b/keyboards/mechlovin/zed65/wearhaus66/info.json
new file mode 100644
index 0000000000..ac672ff1f6
--- /dev/null
+++ b/keyboards/mechlovin/zed65/wearhaus66/info.json
@@ -0,0 +1,91 @@
+{
+ "keyboard_name": "Wearhaus66",
+ "manufacturer": "Mechlovin Studio",
+ "url": "",
+ "maintainer": "Mechlovin' Studio",
+ "usb": {
+ "vid": "0x4D4C",
+ "pid": "0x6602",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "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},
+ {"label":"1,13", "x":14, "y":0},
+ {"label":"1,14", "x":15.25, "y":0.75},
+ {"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":"2,12", "x":13.5, "y":1, "w":1.5},
+ {"label":"2,14", "x":15.25, "y":1.75},
+ {"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":"3,14", "x":15.25, "y":2.75},
+ {"label":"3,0", "x":0, "y":3, "w":1.25},
+ {"label":"3,1", "x":1.25, "y":3},
+ {"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":"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,9", "x":10, "y":4, "w":1.25},
+ {"label":"4,10", "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": {
+ "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":"1,14", "x":15.25, "y":0.75}, {"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":"2,12", "x":13.5, "y":1, "w":1.5}, {"label":"2,14", "x":15.25, "y":1.75}, {"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":"3,14", "x":15.25, "y":2.75}, {"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":"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,9", "x":10, "y":4, "w":1.25}, {"label":"4,10", "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_iso_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":"1,14", "x":15.25, "y":0.75}, {"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":"2,12", "x":13.5, "y":1, "w":1.5}, {"label":"2,14", "x":15.25, "y":1.75}, {"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":"3,14", "x":15.25, "y":2.75}, {"label":"3,0", "x":0, "y":3, "w":1.25}, {"label":"3,1", "x":1.25, "y":3}, {"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":"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,9", "x":10, "y":4, "w":1.25}, {"label":"4,10", "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}]
+ }
+ }
+}
diff --git a/keyboards/mechlovin/zed65/wearhaus66/keymaps/default/keymap.c b/keyboards/mechlovin/zed65/wearhaus66/keymaps/default/keymap.c
new file mode 100644
index 0000000000..017f57b160
--- /dev/null
+++ b/keyboards/mechlovin/zed65/wearhaus66/keymaps/default/keymap.c
@@ -0,0 +1,45 @@
+/*
+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_1, KC_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_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_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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ )
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case BL_ON:
+ if (record->event.pressed) {
+ writePinHigh(B7);
+ }
+ break;
+ case BL_OFF:
+ if (record->event.pressed) {
+ writePinLow(B7);
+ }
+ break;
+ }
+ return true;
+};
diff --git a/keyboards/mechlovin/zed65/wearhaus66/keymaps/default/readme.md b/keyboards/mechlovin/zed65/wearhaus66/keymaps/default/readme.md
new file mode 100644
index 0000000000..2d77dcd5df
--- /dev/null
+++ b/keyboards/mechlovin/zed65/wearhaus66/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for wearhaus66 \ No newline at end of file
diff --git a/keyboards/mechlovin/zed65/wearhaus66/keymaps/default/rules.mk b/keyboards/mechlovin/zed65/wearhaus66/keymaps/default/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/mechlovin/zed65/wearhaus66/keymaps/default/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/mechlovin/zed65/wearhaus66/keymaps/via/keymap.c b/keyboards/mechlovin/zed65/wearhaus66/keymaps/via/keymap.c
new file mode 100644
index 0000000000..b57369b8e1
--- /dev/null
+++ b/keyboards/mechlovin/zed65/wearhaus66/keymaps/via/keymap.c
@@ -0,0 +1,70 @@
+/*
+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
+
+enum my_keycodes {
+ LOGO_LED_ON = USER00,
+ LOGO_LED_OFF
+};
+
+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_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_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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RGUI, 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
+ ),
+ [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
+ ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LOGO_LED_ON:
+ if (record->event.pressed) {
+ writePinHigh(B7);
+ }
+ break;
+ case LOGO_LED_OFF:
+ if (record->event.pressed) {
+ writePinLow(B7);
+ }
+ break;
+ }
+ return true;
+};
diff --git a/keyboards/mechlovin/zed65/wearhaus66/keymaps/via/readme.md b/keyboards/mechlovin/zed65/wearhaus66/keymaps/via/readme.md
new file mode 100644
index 0000000000..6ac2f7bccc
--- /dev/null
+++ b/keyboards/mechlovin/zed65/wearhaus66/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA keymap for wearhaus66 \ No newline at end of file
diff --git a/keyboards/mechlovin/zed65/wearhaus66/keymaps/via/rules.mk b/keyboards/mechlovin/zed65/wearhaus66/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/mechlovin/zed65/wearhaus66/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/mechlovin/zed65/wearhaus66/readme.md b/keyboards/mechlovin/zed65/wearhaus66/readme.md
new file mode 100644
index 0000000000..c3f46ae76d
--- /dev/null
+++ b/keyboards/mechlovin/zed65/wearhaus66/readme.md
@@ -0,0 +1,27 @@
+# Wearhaus66
+
+![Wearhaus66](https://i.imgur.com/U0HNqSfl.jpeg)
+
+A Wearhaus66 keyboard PCB, base on Zed65.
+
+* Keyboard Maintainer: [Mechlovin' Studio](https://github.com/mechlovin)
+* Hardware Supported: Zed65, APM32F103
+* Hardware Availability: [Mechlovin' Store](https://mechlovin.studio/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechlovin/zed65/wearhaus66:default
+
+Flashing example for this keyboard:
+
+ make mechlovin/zed65/wearhaus66: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 (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 `QK_BOOT` if it is available
diff --git a/keyboards/mechlovin/zed65/wearhaus66/rules.mk b/keyboards/mechlovin/zed65/wearhaus66/rules.mk
new file mode 100644
index 0000000000..48d473fbdb
--- /dev/null
+++ b/keyboards/mechlovin/zed65/wearhaus66/rules.mk
@@ -0,0 +1,2 @@
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+WS2812_DRIVER = spi \ No newline at end of file
diff --git a/keyboards/mechlovin/zed65/wearhaus66/wearhaus66.c b/keyboards/mechlovin/zed65/wearhaus66/wearhaus66.c
new file mode 100644
index 0000000000..f75c17e35e
--- /dev/null
+++ b/keyboards/mechlovin/zed65/wearhaus66/wearhaus66.c
@@ -0,0 +1,24 @@
+/*
+Copyright 2022 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 "wearhaus66.h"
+
+void keyboard_pre_init_user(void) {
+ // Call the keyboard pre init code.
+ // Set our LED pins as output
+ setPinOutput(B7);
+}
diff --git a/keyboards/mechlovin/zed65/wearhaus66/wearhaus66.h b/keyboards/mechlovin/zed65/wearhaus66/wearhaus66.h
new file mode 100644
index 0000000000..8c4a0ee79a
--- /dev/null
+++ b/keyboards/mechlovin/zed65/wearhaus66/wearhaus66.h
@@ -0,0 +1,62 @@
+/*
+Copyright 2022 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, K0D, K1D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2C, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K49, K4A, K4C, K4D, K4E \
+) { \
+ { 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, KC_NO, KC_NO, KC_NO, K46, KC_NO, KC_NO, K49, K4A, KC_NO, K4C, K4D, K4E }, \
+}
+
+#define LAYOUT_65_ansi_blocker( \
+ 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, 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, K49, K4A, K4C, K4D, K4E \
+) { \
+ { 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, KC_NO, 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, K49, K4A, KC_NO, K4C, K4D, K4E }, \
+}
+
+#define LAYOUT_65_iso_blocker( \
+ 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, K2C, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K46, K49, K4A, K4C, K4D, K4E \
+) { \
+ { 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, KC_NO, 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, K49, K4A, KC_NO, K4C, K4D, K4E }, \
+}
diff --git a/keyboards/mechlovin/zed65/zed65.c b/keyboards/mechlovin/zed65/zed65.c
new file mode 100644
index 0000000000..289c98d068
--- /dev/null
+++ b/keyboards/mechlovin/zed65/zed65.c
@@ -0,0 +1,18 @@
+/*
+Copyright 2022 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 "zed65.h"
diff --git a/keyboards/mechlovin/zed65/zed65.h b/keyboards/mechlovin/zed65/zed65.h
new file mode 100644
index 0000000000..bab950dca2
--- /dev/null
+++ b/keyboards/mechlovin/zed65/zed65.h
@@ -0,0 +1,26 @@
+/*
+Copyright 2022 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"
+
+#ifdef KEYBOARD_mechlovin_zed65_retro66
+ #include "retro66.h"
+#elif KEYBOARD_mechlovin_zed65_wearhaus66
+ #include "wearhaus66.h"
+#endif
diff --git a/keyboards/mechstudio/dawn/config.h b/keyboards/mechstudio/dawn/config.h
index ebfc44ee74..1b5124d7ea 100644
--- a/keyboards/mechstudio/dawn/config.h
+++ b/keyboards/mechstudio/dawn/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D53
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0004
-#define MANUFACTURER Mech Studio
-#define PRODUCT Dawn
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
@@ -33,7 +26,6 @@
#define MATRIX_ROW_PINS {B1,B2,B3,D1,D6,D4}
#define MATRIX_COL_PINS {F0,F1,F4,F5,F6,F7,C7,C6,B6,B5,B4,D7,D5,D3,D2}
-#define UNUSED_PINS {B0,B7,D0,E6}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechstudio/dawn/info.json b/keyboards/mechstudio/dawn/info.json
index 6ab1540d35..c40496ae49 100644
--- a/keyboards/mechstudio/dawn/info.json
+++ b/keyboards/mechstudio/dawn/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dawn",
+ "manufacturer": "Mech Studio",
"url": "https://mech.studio/projects/dawn/",
"maintainer": "dejaeghered",
+ "usb": {
+ "vid": "0x4D53",
+ "pid": "0x0004",
+ "device_version": "0.0.4"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mechstudio/dawn/keymaps/default/keymap.c b/keyboards/mechstudio/dawn/keymaps/default/keymap.c
index 6d12760f67..50dd2412d7 100644
--- a/keyboards/mechstudio/dawn/keymaps/default/keymap.c
+++ b/keyboards/mechstudio/dawn/keymaps/default/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT(
- QK_BOOT , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
+ QK_BOOT, _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
_______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
_______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
_______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
diff --git a/keyboards/mechstudio/dawn/keymaps/via/keymap.c b/keyboards/mechstudio/dawn/keymaps/via/keymap.c
index e6b92fc98c..e8ed0034a9 100644
--- a/keyboards/mechstudio/dawn/keymaps/via/keymap.c
+++ b/keyboards/mechstudio/dawn/keymaps/via/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT(
- QK_BOOT , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
+ QK_BOOT, _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
_______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
_______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
_______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ ,
diff --git a/keyboards/mechstudio/ud_40_ortho/config.h b/keyboards/mechstudio/ud_40_ortho/config.h
index 9520fdd396..ad964a72f5 100644
--- a/keyboards/mechstudio/ud_40_ortho/config.h
+++ b/keyboards/mechstudio/ud_40_ortho/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D53
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Mech Studio
-#define PRODUCT UD_40 Ortholinear
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -33,7 +26,6 @@
#define MATRIX_ROW_PINS {C2,B4,B5,B6}
#define MATRIX_COL_PINS {C5,D0,B3,B2,B1,B0,D6,D5,D4,D3,D2,D1}
-#define UNUSED_PINS {C4,C6,C7}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mechstudio/ud_40_ortho/info.json b/keyboards/mechstudio/ud_40_ortho/info.json
index f0bc1524a8..7f36d7d7fc 100644
--- a/keyboards/mechstudio/ud_40_ortho/info.json
+++ b/keyboards/mechstudio/ud_40_ortho/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "UD_40 ortho",
+ "keyboard_name": "UD_40 Ortholinear",
+ "manufacturer": "Mech Studio",
"url": "https://mech.studio/projects/ud_40/",
"maintainer": "dejaeghered",
+ "usb": {
+ "vid": "0x4D53",
+ "pid": "0x0002",
+ "device_version": "0.0.2"
+ },
"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/mechwild/bbs/bbs.c b/keyboards/mechwild/bbs/bbs.c
new file mode 100644
index 0000000000..cbfaa5ce59
--- /dev/null
+++ b/keyboards/mechwild/bbs/bbs.c
@@ -0,0 +1,22 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "bbs.h"
+
+#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) {
+ case 0:
+ if(active) { tap_code(KC_CLCK); }
+ break;
+ break;
+ }
+ return true;
+}
+#endif
+
+void eeconfig_init_kb() {
+ steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT
+ eeconfig_init_user();
+} \ No newline at end of file
diff --git a/keyboards/mechwild/bbs/bbs.h b/keyboards/mechwild/bbs/bbs.h
new file mode 100644
index 0000000000..2088b68646
--- /dev/null
+++ b/keyboards/mechwild/bbs/bbs.h
@@ -0,0 +1,26 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// 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,\
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B,\
+ k23, k24, k25, k26, k27, k28 \
+) { \
+ { k00, k01, k02, k03, k04, k05 }, \
+ { k06, k07, k08, k09, k0A, k0B }, \
+ { k10, k11, k12, k13, k14, k15 }, \
+ { k16, k17, k18, k19, k1A, k1B }, \
+ { k26, k27, k28, k23, k24, k25 } \
+}
diff --git a/keyboards/mechwild/bbs/config.h b/keyboards/mechwild/bbs/config.h
new file mode 100644
index 0000000000..8798c484f1
--- /dev/null
+++ b/keyboards/mechwild/bbs/config.h
@@ -0,0 +1,88 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 6
+
+/* allows the "key" button on the blackpill to toggle caps lock for user testing before soldering */
+#define DIP_SWITCH_PINS { A0 }
+
+/* status light pins using the on board LED for the blackpill */
+#define LED_CAPS_LOCK_PIN C13
+#define LED_PIN_ON_STATE 0
+
+/*
+ * 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 { B12, B10, B13, B1, B14 }
+#define MATRIX_COL_PINS { B0, A7, A6, A5, A4, A3 }
+
+/* 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
+
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/mechwild/bbs/info.json b/keyboards/mechwild/bbs/info.json
new file mode 100644
index 0000000000..a6b6747df6
--- /dev/null
+++ b/keyboards/mechwild/bbs/info.json
@@ -0,0 +1,49 @@
+{
+ "keyboard_name": "BB Steno",
+ "manufacturer": "MechWild",
+ "maintainer": "kylemccreery",
+ "url": "https://mechwild.com/product/bb-steno/",
+ "usb": {
+ "vid": "0x6D77",
+ "pid": "0x170E",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"k00", "x":0, "y":0.5},
+ {"label":"k01", "x":1, "y":0.5},
+ {"label":"k02", "x":2, "y":0.25},
+ {"label":"k03", "x":3, "y":0.125},
+ {"label":"k04", "x":4, "y":0.25},
+ {"label":"k05", "x":5, "y":0.25},
+ {"label":"k06", "x":6.75, "y":0.25},
+ {"label":"k07", "x":7.75, "y":0.25},
+ {"label":"k08", "x":8.75, "y":0.125},
+ {"label":"k09", "x":9.75, "y":0.25},
+ {"label":"k0A", "x":10.75, "y":0.5},
+ {"label":"k0B", "x":11.75, "y":0.5},
+
+ {"label":"k10", "x":0, "y":1.5},
+ {"label":"k11", "x":1, "y":1.5},
+ {"label":"k12", "x":2, "y":1.25},
+ {"label":"k13", "x":3, "y":1.125},
+ {"label":"k14", "x":4, "y":1.25},
+ {"label":"k15", "x":5, "y":1.25},
+ {"label":"k16", "x":6.75, "y":1.25},
+ {"label":"k17", "x":7.75, "y":1.25},
+ {"label":"k18", "x":8.75, "y":1.125},
+ {"label":"k19", "x":9.75, "y":1.25},
+ {"label":"k1A", "x":10.75, "y":1.5},
+ {"label":"k1B", "x":11.75, "y":1.5},
+
+ {"label":"k23", "x":2.75, "y":3.25, "h":1.5},
+ {"label":"k24", "x":3.75, "y":3.25, "h":1.5},
+ {"label":"k25", "x":4.75, "y":3, "h":1.5},
+ {"label":"k26", "x":7, "y":3, "h":1.5},
+ {"label":"k27", "x":8, "y":3.25, "h":1.5},
+ {"label":"k28", "x":9, "y":3.25, "h":1.5}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/mechwild/bbs/keymaps/default/keymap.c b/keyboards/mechwild/bbs/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a37401eca4
--- /dev/null
+++ b/keyboards/mechwild/bbs/keymaps/default/keymap.c
@@ -0,0 +1,31 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+#include "keymap_steno.h"
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN1
+};
+
+/*
+ * k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B,\
+ * k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B,\
+ * k23, k24, k25, k26, k27, k28 \
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT(
+ STN_RES1, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR,
+ STN_RES2, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR,
+ STN_A, STN_O, STN_N1, STN_N2, STN_E, STN_U
+ ),
+ [_FN1] = 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
+ )
+};
diff --git a/keyboards/mechwild/bbs/readme.md b/keyboards/mechwild/bbs/readme.md
new file mode 100644
index 0000000000..530717b800
--- /dev/null
+++ b/keyboards/mechwild/bbs/readme.md
@@ -0,0 +1,27 @@
+# BB Steno (BBS)
+
+![BBS](https://i.imgur.com/XIjlzKOh.png)
+
+A bare-bones stenography keyboard. No bells or whistles. Simple, cheap, effective, steno.
+
+* Keyboard Maintainer: [Kyle McCreery](https://github.com/kylemccreery)
+* Hardware Supported: BBS v0.1
+* Hardware Availability: [BBS on MechWild](https://mechwild.com/product/bb-steno/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechwild/bbs:default
+
+Flashing example for this keyboard:
+
+ make mechwild/bbs: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 (assigned to the top left key) and plug in the keyboard while holding it.
+* **Physical reset button**: Press and hold the boot0 button on the blackpill, tap and release the nrst button on the blackpill, then release the boot0 button.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
diff --git a/keyboards/mechwild/bbs/rules.mk b/keyboards/mechwild/bbs/rules.mk
new file mode 100644
index 0000000000..519b77b437
--- /dev/null
+++ b/keyboards/mechwild/bbs/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
+
+# 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 = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+DIP_SWITCH_ENABLE = yes # Dip Switch Enabled
+
+# Necessary for stenography functionality
+STENO_ENABLE = yes # Enable stenography endpoint
+NKRO_ENABLE = yes # Enable N-Key Rollover
+KEYBOARD_SHARED_EP = yes # Needed to free up an endpoint in blackpill \ No newline at end of file
diff --git a/keyboards/mechwild/bde/bde.c b/keyboards/mechwild/bde/bde.c
deleted file mode 100644
index 911d1c0434..0000000000
--- a/keyboards/mechwild/bde/bde.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2022 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 "bde.h"
diff --git a/keyboards/mechwild/bde/bde.h b/keyboards/mechwild/bde/bde.h
deleted file mode 100644
index 3d16bdb8db..0000000000
--- a/keyboards/mechwild/bde/bde.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright 2022 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"
-
-#ifdef KEYBOARD_mechwild_bde_rev2
- #include "rev2.h"
-#elif KEYBOARD_mechwild_bde_lefty
- #include "lefty.h"
-#elif KEYBOARD_mechwild_bde_righty
- #include "righty.h"
-#endif
diff --git a/keyboards/mechwild/bde/config.h b/keyboards/mechwild/bde/config.h
index 5130918c08..ad54af1aa8 100644
--- a/keyboards/mechwild/bde/config.h
+++ b/keyboards/mechwild/bde/config.h
@@ -17,4 +17,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#include "config_common.h" \ No newline at end of file
+#include "config_common.h"
+
+/* 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/mechwild/bde/info.json b/keyboards/mechwild/bde/info.json
index 2189f6bd1c..0177b4c949 100644
--- a/keyboards/mechwild/bde/info.json
+++ b/keyboards/mechwild/bde/info.json
@@ -1,14 +1,31 @@
{
- "keyboard_name": "MechWild BDE Rev2",
+ "manufacturer": "MechWild",
"url": "mechwild.com",
"maintainer": "kylemccreery",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0}, {"label":"7", "x":10, "y":0}, {"label":"8", "x":11, "y":0}, {"label":"9", "x":12, "y":0}, {"label":"Mute", "x":13, "y":0},
- {"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"H", "x":5, "y":1}, {"label":"J", "x":6, "y":1}, {"label":"K", "x":7, "y":1}, {"label":"L", "x":8, "y":1}, {"label":"ESC", "x":9, "y":1}, {"label":"4", "x":10, "y":1}, {"label":"5", "x":11, "y":1}, {"label":"6", "x":12, "y":1}, {"label":"0", "x":13, "y":1},
- {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"BS", "x":4, "y":2}, {"label":"", "x":5, "y":2}, {"label":"B", "x":6, "y":2}, {"label":"N", "x":7, "y":2}, {"label":"M", "x":8, "y":2}, {"label":"ENT", "x":9, "y":2}, {"label":"1", "x":10, "y":2}, {"label":"2", "x":11, "y":2}, {"label":"3", "x":12, "y":2}, {"label":"EQL", "x":13, "y":2}
- ]
- }
+ "usb": {
+ "vid": "0x6D77"
+ },
+ "debounce": 5,
+ "build": {
+ "lto": true
+ },
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "debug": false,
+ "extrakey": true,
+ "mousekey": true,
+ "rgblight": true,
+ "nkro": true
+ },
+ "development_board": "promicro",
+ "rgblight": {
+ "sleep": true,
+ "max_brightness": 255
+ },
+ "tapping": {
+ "tap_keycode_delay": 10,
+ "tap_capslock_delay": 10
}
}
diff --git a/keyboards/mechwild/bde/keymaps/default/keymap.c b/keyboards/mechwild/bde/keymaps/default/keymap.c
deleted file mode 100644
index 8222af7576..0000000000
--- a/keyboards/mechwild/bde/keymaps/default/keymap.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copyright 2022 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
-
-#define FN1_BSPC LT(1, KC_BSPC)
-#define FN2_SPC LT(2, KC_SPC)
-#define FN3_B LT(3, KC_B)
-#define CTL_Z CTL_T(KC_Z)
-#define ALT_X ALT_T(KC_X)
-#define ALT_N ALGR_T(KC_N)
-#define CTL_M RCTL_T(KC_M)
-#define SFT_ENT RSFT_T(KC_ENT)
-#define WIN_C LGUI_T(KC_C)
-
-enum layer_names {
- _BASE,
- _FN1,
- _FN2,
- _FN3
-};
-
-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_P7, KC_P8, KC_P9, KC_MUTE,
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC, KC_P4, KC_P5, KC_P6, KC_P0,
- CTL_Z, ALT_X, WIN_C, KC_V, FN1_BSPC, FN2_SPC, FN3_B, ALT_N, CTL_M, SFT_ENT, KC_P1, KC_P2, KC_P3, KC_MINS
- ),
- [_FN1] = LAYOUT(
- _______, _______, _______, QK_BOOT, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS, KC_7, KC_8, KC_9, KC_NLCK,
- _______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_SCLN, KC_QUOT, KC_4, KC_5, KC_6, KC_0,
- _______, _______, _______, _______, _______, KC_TAB, KC_LGUI, KC_COMM, KC_DOT, KC_SLSH, KC_1, KC_2, KC_3, KC_EQL
- ),
- [_FN2] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, KC_LCBR, KC_RCBR, KC_PIPE, KC_AMPR, KC_ASTR, KC_LPRN, KC_CLCK,
- _______, _______, _______, _______, _______, _______, _______, KC_TILD, KC_COLN, KC_DQUO, KC_DLR, KC_PERC, KC_CIRC, KC_RPRN,
- _______, _______, _______, _______, KC_DEL, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_EXLM, KC_AT, KC_HASH, KC_PLUS
- ),
- [_FN3] = 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/mechwild/bde/keymaps/lefty_default/config.h b/keyboards/mechwild/bde/keymaps/lefty_default/config.h
deleted file mode 100644
index 80e8e2e015..0000000000
--- a/keyboards/mechwild/bde/keymaps/lefty_default/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright 2020 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/>.
- */
-
-
-/* Making it so you need to hold the modifier and other key for the time together, helps not accidentally hit activate the hold functions of bottom row*/
-#define IGNORE_MOD_TAP_INTERRUPT
-
-/* Setting tap term, helps not accidentally hit activate the hold functions of bottom row*/
-#define TAPPING_TERM 250
-
diff --git a/keyboards/mechwild/bde/keymaps/lefty_default/keymap.c b/keyboards/mechwild/bde/keymaps/lefty_default/keymap.c
deleted file mode 100644
index 3501a5e350..0000000000
--- a/keyboards/mechwild/bde/keymaps/lefty_default/keymap.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright 2020 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
-
-#define FN1_SPC LT(1, KC_SPC)
-#define FN2_BSPC LT(2, KC_BSPC)
-#define FN3_B LT(3, KC_B)
-#define CTL_Z CTL_T(KC_Z)
-#define ALT_X ALT_T(KC_X)
-#define ALT_N ALGR_T(KC_N)
-#define CTL_M RCTL_T(KC_M)
-#define SFT_ENT RSFT_T(KC_ENT)
-#define WIN_C LGUI_T(KC_C)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(
- 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_4, KC_5, KC_6, SFT_ENT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC,
- KC_1, KC_2, KC_3, CTL_Z, ALT_X, WIN_C, KC_V, FN2_BSPC, FN1_SPC, FN3_B, ALT_N, CTL_M, SFT_ENT
- ),
-
- [1] = LAYOUT(
- KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, RESET, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_F4, KC_F5, KC_F6, KC_TAB, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, KC_QUOT,
- KC_F1, KC_F2, KC_F3, _______, _______, KC_LGUI, _______, KC_DEL, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
- ),
-
- [2] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_COLN, KC_DQUO,
- KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_HOME, KC_PGDN, KC_PGUP, KC_END
- ),
-
- [3] = LAYOUT(
- RGB_M_G, RGB_M_T, _______, RGB_M_P, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______,
- RGB_M_SN, RGB_M_K, RGB_M_X, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, _______, _______, _______, _______, _______, _______,
- RGB_M_B, RGB_M_R, RGB_M_SW, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- )
-
-};
diff --git a/keyboards/mechwild/bde/keymaps/lefty_fancy/keymap.c b/keyboards/mechwild/bde/keymaps/lefty_fancy/keymap.c
deleted file mode 100644
index 940575ce10..0000000000
--- a/keyboards/mechwild/bde/keymaps/lefty_fancy/keymap.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/* Copyright 2020 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
-
-
-#define FN1_SPC LT(1, KC_SPC)
-#define FN2_BSPC LT(2, KC_BSPC)
-#define FN3_B LT(3, KC_B)
-#define CTL_Z CTL_T(KC_Z)
-#define ALT_X ALT_T(KC_X)
-#define ALT_N ALGR_T(KC_N)
-#define CTL_M RCTL_T(KC_M)
-#define SFT_ENT RSFT_T(KC_ENT)
-#define WIN_C LGUI_T(KC_C)
-
-typedef struct {
- bool is_press_action;
- uint8_t state;
-} tap;
-
-enum {
- SINGLE_TAP = 1,
- SINGLE_HOLD,
- DOUBLE_TAP
-};
-
-// Tap dance enums
-enum {
- left_enter,
-};
-
-uint8_t cur_dance(qk_tap_dance_state_t *state);
-void left_enter_finished(qk_tap_dance_state_t *state, void *user_data);
-void left_enter_reset(qk_tap_dance_state_t *state, void *user_data);
-
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT(
- 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_4, KC_5, KC_6, TD(left_enter), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC,
- KC_1, KC_2, KC_3, CTL_Z, ALT_X, WIN_C, KC_V, FN2_BSPC, FN1_SPC, FN3_B, ALT_N, CTL_M, SFT_ENT
- ),
-
- [1] = LAYOUT(
- KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, RESET, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_F4, KC_F5, KC_F6, KC_TAB, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, KC_QUOT,
- KC_F1, KC_F2, KC_F3, _______, _______, KC_LGUI, _______, KC_DEL, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
- ),
-
- [2] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_COLN, KC_DQUO,
- KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_HOME, KC_PGDN, KC_PGUP, KC_END
- ),
-
-[3] = LAYOUT(
- RGB_M_G, RGB_M_T, _______, RGB_M_P, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______,
- RGB_M_SN, RGB_M_K, RGB_M_X, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, _______, _______, _______, _______, _______, _______,
- RGB_M_B, RGB_M_R, RGB_M_SW, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- )
-
-};
-
-
-uint8_t 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 the key is still held. Means you want to send a 'HOLD'.
- else return SINGLE_HOLD;
- } else return DOUBLE_TAP;
- //} else if (state->count >= 2) {
- // return DOUBLE_TAP;
- //}else return 8; // Magic number. At some point this method will expand to work for more presses
-}
-
-static tap left_enter_tap_state = {
- .is_press_action = true,
- .state = 0
-};
-
-void left_enter_finished(qk_tap_dance_state_t *state, void *user_data) {
- left_enter_tap_state.state = cur_dance(state);
- switch (left_enter_tap_state.state) {
- //case SINGLE_TAP: register_code(KC_ENT); break;
- case SINGLE_HOLD: register_code(KC_LSFT); break;
- case DOUBLE_TAP: register_code(KC_ENT); break;
- }
-}
-
-void left_enter_reset(qk_tap_dance_state_t *state, void *user_data) {
- switch (left_enter_tap_state.state) {
- //case SINGLE_TAP: unregister_code(KC_ENT); break;
- case SINGLE_HOLD: unregister_code(KC_LSFT); break;
- case DOUBLE_TAP: unregister_code(KC_ENT); break;
- }
- left_enter_tap_state.state = 0;
-}
-
-qk_tap_dance_action_t tap_dance_actions[] = {
- [left_enter] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, left_enter_finished, left_enter_reset)
-};
-
-
-
diff --git a/keyboards/mechwild/bde/keymaps/lefty_via/keymap.c b/keyboards/mechwild/bde/keymaps/lefty_via/keymap.c
deleted file mode 100644
index 68ff334279..0000000000
--- a/keyboards/mechwild/bde/keymaps/lefty_via/keymap.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Copyright 2020 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
-
-#define FN1_SPC LT(1, KC_SPC)
-#define FN2_BSPC LT(2, KC_BSPC)
-#define FN3_B LT(3, KC_B)
-#define CTL_Z CTL_T(KC_Z)
-#define ALT_X ALT_T(KC_X)
-#define ALT_N ALGR_T(KC_N)
-#define CTL_M RCTL_T(KC_M)
-#define SFT_ENT RSFT_T(KC_ENT)
-#define WIN_C LGUI_T(KC_C)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
- [0] = LAYOUT(
- 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_4, KC_5, KC_6, SFT_ENT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC,
- KC_1, KC_2, KC_3, CTL_Z, ALT_X, WIN_C, KC_V, FN2_BSPC, FN1_SPC, FN3_B, ALT_N, CTL_M, SFT_ENT
- ),
-
- [1] = LAYOUT(
- KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, RESET, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_F4, KC_F5, KC_F6, KC_TAB, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, KC_QUOT,
- KC_F1, KC_F2, KC_F3, _______, _______, KC_LGUI, _______, KC_DEL, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
- ),
-
- [2] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_COLN, KC_DQUO,
- KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_HOME, KC_PGDN, KC_PGUP, KC_END
- ),
-
- [3] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- )
-
-};
diff --git a/keyboards/mechwild/bde/keymaps/righty_default/config.h b/keyboards/mechwild/bde/keymaps/righty_default/config.h
deleted file mode 100644
index 80e8e2e015..0000000000
--- a/keyboards/mechwild/bde/keymaps/righty_default/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright 2020 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/>.
- */
-
-
-/* Making it so you need to hold the modifier and other key for the time together, helps not accidentally hit activate the hold functions of bottom row*/
-#define IGNORE_MOD_TAP_INTERRUPT
-
-/* Setting tap term, helps not accidentally hit activate the hold functions of bottom row*/
-#define TAPPING_TERM 250
-
diff --git a/keyboards/mechwild/bde/keymaps/righty_default/keymap.c b/keyboards/mechwild/bde/keymaps/righty_default/keymap.c
deleted file mode 100644
index 5310cea051..0000000000
--- a/keyboards/mechwild/bde/keymaps/righty_default/keymap.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright 2020 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
-
-#define FN1_SPC LT(1, KC_SPC)
-#define FN2_BSPC LT(2, KC_BSPC)
-#define FN3_B LT(3, KC_B)
-#define CTL_Z CTL_T(KC_Z)
-#define ALT_X ALT_T(KC_X)
-#define ALT_N ALGR_T(KC_N)
-#define CTL_M RCTL_T(KC_M)
-#define WIN_C LGUI_T(KC_C)
-
-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_0, KC_7, KC_8, KC_9,
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC, KC_ENT, KC_4, KC_5, KC_6,
- CTL_Z, ALT_X, WIN_C, KC_V, FN2_BSPC, FN1_SPC, FN3_B, ALT_N, CTL_M, KC_RSFT, KC_1, KC_2, KC_3
- ),
-
- [1] = LAYOUT(
- _______, _______, _______, RESET, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_F10, KC_F7, KC_F8, KC_F9,
- _______, _______, _______, _______, _______, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, KC_QUOT, KC_TAB, KC_F4, KC_F5, KC_F6,
- _______, _______, KC_LGUI, _______, KC_DEL, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F1, KC_F2, KC_F3
- ),
-
- [2] = LAYOUT(
- _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_COLN, KC_DQUO, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, KC_PSCR, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_F11, KC_F12, _______
- ),
-
- [3] = LAYOUT(
- RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_G, RGB_M_T, _______,
- RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_M_SN, RGB_M_K, RGB_M_X,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_B, RGB_M_R, RGB_M_SW
- )
-
-};
diff --git a/keyboards/mechwild/bde/keymaps/righty_via/config.h b/keyboards/mechwild/bde/keymaps/righty_via/config.h
deleted file mode 100644
index 80e8e2e015..0000000000
--- a/keyboards/mechwild/bde/keymaps/righty_via/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Copyright 2020 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/>.
- */
-
-
-/* Making it so you need to hold the modifier and other key for the time together, helps not accidentally hit activate the hold functions of bottom row*/
-#define IGNORE_MOD_TAP_INTERRUPT
-
-/* Setting tap term, helps not accidentally hit activate the hold functions of bottom row*/
-#define TAPPING_TERM 250
-
diff --git a/keyboards/mechwild/bde/keymaps/righty_via/keymap.c b/keyboards/mechwild/bde/keymaps/righty_via/keymap.c
deleted file mode 100644
index 5310cea051..0000000000
--- a/keyboards/mechwild/bde/keymaps/righty_via/keymap.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright 2020 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
-
-#define FN1_SPC LT(1, KC_SPC)
-#define FN2_BSPC LT(2, KC_BSPC)
-#define FN3_B LT(3, KC_B)
-#define CTL_Z CTL_T(KC_Z)
-#define ALT_X ALT_T(KC_X)
-#define ALT_N ALGR_T(KC_N)
-#define CTL_M RCTL_T(KC_M)
-#define WIN_C LGUI_T(KC_C)
-
-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_0, KC_7, KC_8, KC_9,
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC, KC_ENT, KC_4, KC_5, KC_6,
- CTL_Z, ALT_X, WIN_C, KC_V, FN2_BSPC, FN1_SPC, FN3_B, ALT_N, CTL_M, KC_RSFT, KC_1, KC_2, KC_3
- ),
-
- [1] = LAYOUT(
- _______, _______, _______, RESET, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_F10, KC_F7, KC_F8, KC_F9,
- _______, _______, _______, _______, _______, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, KC_QUOT, KC_TAB, KC_F4, KC_F5, KC_F6,
- _______, _______, KC_LGUI, _______, KC_DEL, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F1, KC_F2, KC_F3
- ),
-
- [2] = LAYOUT(
- _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_COLN, KC_DQUO, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, KC_PSCR, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_F11, KC_F12, _______
- ),
-
- [3] = LAYOUT(
- RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_G, RGB_M_T, _______,
- RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_M_SN, RGB_M_K, RGB_M_X,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_B, RGB_M_R, RGB_M_SW
- )
-
-};
diff --git a/keyboards/mechwild/bde/keymaps/via/keymap.c b/keyboards/mechwild/bde/keymaps/via/keymap.c
deleted file mode 100644
index e28c1b6db8..0000000000
--- a/keyboards/mechwild/bde/keymaps/via/keymap.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copyright 2022 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
-
-#define FN1_BSPC LT(1, KC_BSPC)
-#define FN2_SPC LT(2, KC_SPC)
-#define FN3_B LT(3, KC_B)
-#define CTL_Z CTL_T(KC_Z)
-#define ALT_X ALT_T(KC_X)
-#define ALT_N ALGR_T(KC_N)
-#define CTL_M RCTL_T(KC_M)
-#define SFT_ENT RSFT_T(KC_ENT)
-#define WIN_C LGUI_T(KC_C)
-
-enum layer_names {
- _BASE,
- _FN1,
- _FN2,
- _FN3
-};
-
-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_P7, KC_P8, KC_P9, KC_MUTE,
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC, KC_P4, KC_P5, KC_P6, KC_P0,
- CTL_Z, ALT_X, WIN_C, KC_V, FN1_BSPC, FN2_SPC, FN3_B, ALT_N, CTL_M, SFT_ENT, KC_P1, KC_P2, KC_P3, KC_MINS
- ),
- [_FN1] = LAYOUT(
- _______, _______, _______, QK_BOOT, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS, KC_7, KC_8, KC_9, KC_NLCK,
- _______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_SCLN, KC_QUOT, KC_4, KC_5, KC_6, KC_0,
- _______, _______, _______, _______, _______, KC_TAB, KC_LGUI, KC_COMM, KC_DOT, KC_SLSH, KC_1, KC_2, KC_3, KC_EQL
- ),
- [_FN2] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, KC_LCBR, KC_RCBR, KC_PIPE, KC_AMPR, KC_ASTR, KC_LPRN, KC_CLCK,
- _______, _______, _______, _______, _______, _______, _______, KC_TILD, KC_COLN, KC_DQUO, KC_DLR, KC_PERC, KC_CIRC, KC_RPRN,
- _______, _______, _______, _______, KC_DEL, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_EXLM, KC_AT, KC_HASH, KC_PLUS
- ),
- [_FN3] = 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, RGB_RMOD
- )
-
-};
diff --git a/keyboards/mechwild/bde/keymaps/via/rules.mk b/keyboards/mechwild/bde/keymaps/via/rules.mk
deleted file mode 100644
index 07681b4f2c..0000000000
--- a/keyboards/mechwild/bde/keymaps/via/rules.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-RGBLIGHT_ENABLE = yes
-VIA_ENABLE = yes
-LTO_ENABLE = no
diff --git a/keyboards/mechwild/bde/lefty/config.h b/keyboards/mechwild/bde/lefty/config.h
deleted file mode 100644
index 082295ef7c..0000000000
--- a/keyboards/mechwild/bde/lefty/config.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright 2020 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 0x1701
-#define DEVICE_VER 0x0203
-#define MANUFACTURER MechWild
-#define PRODUCT BDE Lefty
-
-/* key matrix size */
-#define MATRIX_ROWS 3
-#define MATRIX_COLS 14
-
-/* key matrix pins */
-#define MATRIX_ROW_PINS { D1, D7, D3}
-#define MATRIX_COL_PINS { F7, B1, B6, B2, B3, F6, F5, F4, D0, D4, C6, E6, B5, B4}
-#define UNUSED_PINS
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
-/* If RGBLIGHT_ENABLE is set to yes in the rules, ensure the RGBLED_NUM is accurate for how many you have attached. */
-#define RGB_DI_PIN D2
-#define RGBLED_NUM 16
-#define RGBLIGHT_ANIMATIONS
-
-/* 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/mechwild/bde/lefty/info.json b/keyboards/mechwild/bde/lefty/info.json
new file mode 100644
index 0000000000..5aa4ac1e80
--- /dev/null
+++ b/keyboards/mechwild/bde/lefty/info.json
@@ -0,0 +1,77 @@
+{
+ "keyboard_name": "BDE Lefty",
+ "usb": {
+ "pid": "0x1701",
+ "device_version": "2.0.3"
+ },
+ "matrix_pins": {
+ "rows": ["D1", "D7", "D3"],
+ "cols": ["F7", "B1", "B6", "B2", "B3", "F6", "F5", "F4", "D0", "D4", "C6", "E6", "B5", "B4"]
+ },
+ "diode_direction": "ROW2COL",
+ "rgblight": {
+ "led_count": 16,
+ "pin": "D2",
+ "animations": {
+ "alternating": true,
+ "breathing": true,
+ "christmas": true,
+ "knight": true,
+ "rainbow_mood": true,
+ "rainbow_swirl": true,
+ "rgb_test": true,
+ "snake": true,
+ "static_gradient": true,
+ "twinkle": true
+ }
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "matrix": [0, 0], "label":"7", "x":0, "y":0 },
+ { "matrix": [0, 1], "label":"8", "x":1, "y":0 },
+ { "matrix": [0, 2], "label":"9", "x":2, "y":0 },
+ { "matrix": [0, 3], "label":"0", "x":3, "y":0 },
+ { "matrix": [0, 4], "label":"Q", "x":4, "y":0 },
+ { "matrix": [0, 5], "label":"W", "x":5, "y":0 },
+ { "matrix": [0, 6], "label":"E", "x":6, "y":0 },
+ { "matrix": [0, 7], "label":"R", "x":7, "y":0 },
+ { "matrix": [0, 8], "label":"T", "x":8, "y":0 },
+ { "matrix": [0, 9], "label":"Y", "x":9, "y":0 },
+ { "matrix": [0, 10], "label":"U", "x":10, "y":0 },
+ { "matrix": [0, 11], "label":"I", "x":11, "y":0 },
+ { "matrix": [0, 12], "label":"O", "x":12, "y":0 },
+ { "matrix": [0, 13], "label":"P", "x":13, "y":0 },
+
+ { "matrix": [1, 0], "label":"4", "x":0, "y":1 },
+ { "matrix": [1, 1], "label":"5", "x":1, "y":1 },
+ { "matrix": [1, 2], "label":"6", "x":2, "y":1 },
+ { "matrix": [1, 3], "label":"Enter", "x":3, "y":1, "h":2 },
+ { "matrix": [1, 4], "label":"A", "x":4, "y":1 },
+ { "matrix": [1, 5], "label":"S", "x":5, "y":1 },
+ { "matrix": [1, 6], "label":"D", "x":6, "y":1 },
+ { "matrix": [1, 7], "label":"F", "x":7, "y":1 },
+ { "matrix": [1, 8], "label":"G", "x":8, "y":1 },
+ { "matrix": [1, 9], "label":"H", "x":9, "y":1 },
+ { "matrix": [1, 10], "label":"J", "x":10, "y":1 },
+ { "matrix": [1, 11], "label":"K", "x":11, "y":1 },
+ { "matrix": [1, 12], "label":"L", "x":12, "y":1 },
+ { "matrix": [1, 13], "label":"Esc", "x":13, "y":1 },
+
+ { "matrix": [2, 0], "label":"1", "x":0, "y":2 },
+ { "matrix": [2, 1], "label":"2", "x":1, "y":2 },
+ { "matrix": [2, 2], "label":"3", "x":2, "y":2 },
+ { "matrix": [2, 4], "label":"Z", "x":4, "y":2 },
+ { "matrix": [2, 5], "label":"X", "x":5, "y":2 },
+ { "matrix": [2, 6], "label":"C", "x":6, "y":2 },
+ { "matrix": [2, 7], "label":"V", "x":7, "y":2 },
+ { "matrix": [2, 8], "label":"Back", "x":8, "y":2 },
+ { "matrix": [2, 9], "label":"Space", "x":9, "y":2 },
+ { "matrix": [2, 10], "label":"B", "x":10, "y":2 },
+ { "matrix": [2, 11], "label":"N", "x":11, "y":2 },
+ { "matrix": [2, 12], "label":"M", "x":12, "y":2 },
+ { "matrix": [2, 13], "label":"Shift", "x":13, "y":2 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/mechwild/bde/lefty/keymaps/default/config.h b/keyboards/mechwild/bde/lefty/keymaps/default/config.h
new file mode 100644
index 0000000000..5c2d15a006
--- /dev/null
+++ b/keyboards/mechwild/bde/lefty/keymaps/default/config.h
@@ -0,0 +1,23 @@
+/* Copyright 2020 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
+/* Making it so you need to hold the modifier and other key for the time together, helps not accidentally hit activate the hold functions of bottom row*/
+#define IGNORE_MOD_TAP_INTERRUPT
+
+/* Setting tap term, helps not accidentally hit activate the hold functions of bottom row*/
+#define TAPPING_TERM 250
+
diff --git a/keyboards/mechwild/bde/lefty/keymaps/default/keymap.c b/keyboards/mechwild/bde/lefty/keymaps/default/keymap.c
new file mode 100644
index 0000000000..804c29824c
--- /dev/null
+++ b/keyboards/mechwild/bde/lefty/keymaps/default/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2020 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
+
+#define FN1_SPC LT(1, KC_SPC)
+#define FN2_BSPC LT(2, KC_BSPC)
+#define FN3_B LT(3, KC_B)
+#define CTL_Z CTL_T(KC_Z)
+#define ALT_X ALT_T(KC_X)
+#define ALT_N ALGR_T(KC_N)
+#define CTL_M RCTL_T(KC_M)
+#define SFT_ENT RSFT_T(KC_ENT)
+#define WIN_C LGUI_T(KC_C)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ 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_4, KC_5, KC_6, SFT_ENT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC,
+ KC_1, KC_2, KC_3, CTL_Z, ALT_X, WIN_C, KC_V, FN2_BSPC, FN1_SPC, FN3_B, ALT_N, CTL_M, SFT_ENT
+ ),
+
+ [1] = LAYOUT(
+ KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, QK_BOOT, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F4, KC_F5, KC_F6, KC_TAB, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, KC_QUOT,
+ KC_F1, KC_F2, KC_F3, _______, _______, KC_LGUI, _______, KC_DEL, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_COLN, KC_DQUO,
+ KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+ ),
+
+ [3] = LAYOUT(
+ RGB_M_G, RGB_M_T, _______, RGB_M_P, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______,
+ RGB_M_SN, RGB_M_K, RGB_M_X, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, _______, _______, _______, _______, _______, _______,
+ RGB_M_B, RGB_M_R, RGB_M_SW, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
diff --git a/keyboards/mechwild/bde/lefty/keymaps/default/rules.mk b/keyboards/mechwild/bde/lefty/keymaps/default/rules.mk
new file mode 100644
index 0000000000..a4c9ac387a
--- /dev/null
+++ b/keyboards/mechwild/bde/lefty/keymaps/default/rules.mk
@@ -0,0 +1,9 @@
+# If you are using a custom Pro Micro-compatible dev board (Elite-C, Sea-Micro, etc)
+# you may need to uncomment and modify this BOOTLOADER setting to use the correct
+# bootloader. (e.g. Elite-Cs use "atmel-dfu", not "caterina".)
+#
+# See the QMK docs for more information:
+# https://docs.qmk.fm/#/flashing
+# https://docs.qmk.fm/#/driver_installation_zadig?id=list-of-known-bootloaders
+
+# BOOTLOADER = caterina
diff --git a/keyboards/mechwild/bde/keymaps/lefty_fancy/config.h b/keyboards/mechwild/bde/lefty/keymaps/fancy/config.h
index 8476c8ccd6..8476c8ccd6 100644
--- a/keyboards/mechwild/bde/keymaps/lefty_fancy/config.h
+++ b/keyboards/mechwild/bde/lefty/keymaps/fancy/config.h
diff --git a/keyboards/mechwild/bde/lefty/keymaps/fancy/keymap.c b/keyboards/mechwild/bde/lefty/keymaps/fancy/keymap.c
new file mode 100644
index 0000000000..3240dbdfb2
--- /dev/null
+++ b/keyboards/mechwild/bde/lefty/keymaps/fancy/keymap.c
@@ -0,0 +1,121 @@
+/* Copyright 2020 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
+
+
+#define FN1_SPC LT(1, KC_SPC)
+#define FN2_BSPC LT(2, KC_BSPC)
+#define FN3_B LT(3, KC_B)
+#define CTL_Z CTL_T(KC_Z)
+#define ALT_X ALT_T(KC_X)
+#define ALT_N ALGR_T(KC_N)
+#define CTL_M RCTL_T(KC_M)
+#define SFT_ENT RSFT_T(KC_ENT)
+#define WIN_C LGUI_T(KC_C)
+
+typedef struct {
+ bool is_press_action;
+ uint8_t state;
+} tap;
+
+enum {
+ SINGLE_TAP = 1,
+ SINGLE_HOLD,
+ DOUBLE_TAP
+};
+
+// Tap dance enums
+enum {
+ left_enter,
+};
+
+uint8_t cur_dance(qk_tap_dance_state_t *state);
+void left_enter_finished(qk_tap_dance_state_t *state, void *user_data);
+void left_enter_reset(qk_tap_dance_state_t *state, void *user_data);
+
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ 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_4, KC_5, KC_6, TD(left_enter), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC,
+ KC_1, KC_2, KC_3, CTL_Z, ALT_X, WIN_C, KC_V, FN2_BSPC, FN1_SPC, FN3_B, ALT_N, CTL_M, SFT_ENT
+ ),
+
+ [1] = LAYOUT(
+ KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, QK_BOOT, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F4, KC_F5, KC_F6, KC_TAB, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, KC_QUOT,
+ KC_F1, KC_F2, KC_F3, _______, _______, KC_LGUI, _______, KC_DEL, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_COLN, KC_DQUO,
+ KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+ ),
+
+[3] = LAYOUT(
+ RGB_M_G, RGB_M_T, _______, RGB_M_P, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______,
+ RGB_M_SN, RGB_M_K, RGB_M_X, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, _______, _______, _______, _______, _______, _______,
+ RGB_M_B, RGB_M_R, RGB_M_SW, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
+
+
+uint8_t 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 the key is still held. Means you want to send a 'HOLD'.
+ else return SINGLE_HOLD;
+ } else return DOUBLE_TAP;
+ //} else if (state->count >= 2) {
+ // return DOUBLE_TAP;
+ //}else return 8; // Magic number. At some point this method will expand to work for more presses
+}
+
+static tap left_enter_tap_state = {
+ .is_press_action = true,
+ .state = 0
+};
+
+void left_enter_finished(qk_tap_dance_state_t *state, void *user_data) {
+ left_enter_tap_state.state = cur_dance(state);
+ switch (left_enter_tap_state.state) {
+ //case SINGLE_TAP: register_code(KC_ENT); break;
+ case SINGLE_HOLD: register_code(KC_LSFT); break;
+ case DOUBLE_TAP: register_code(KC_ENT); break;
+ }
+}
+
+void left_enter_reset(qk_tap_dance_state_t *state, void *user_data) {
+ switch (left_enter_tap_state.state) {
+ //case SINGLE_TAP: unregister_code(KC_ENT); break;
+ case SINGLE_HOLD: unregister_code(KC_LSFT); break;
+ case DOUBLE_TAP: unregister_code(KC_ENT); break;
+ }
+ left_enter_tap_state.state = 0;
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [left_enter] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, left_enter_finished, left_enter_reset)
+};
+
+
+
diff --git a/keyboards/mechwild/bde/keymaps/lefty_fancy/rules.mk b/keyboards/mechwild/bde/lefty/keymaps/fancy/rules.mk
index 9a56408f8e..9a56408f8e 100644
--- a/keyboards/mechwild/bde/keymaps/lefty_fancy/rules.mk
+++ b/keyboards/mechwild/bde/lefty/keymaps/fancy/rules.mk
diff --git a/keyboards/mechwild/bde/keymaps/lefty_via/config.h b/keyboards/mechwild/bde/lefty/keymaps/via/config.h
index 8476c8ccd6..8476c8ccd6 100644
--- a/keyboards/mechwild/bde/keymaps/lefty_via/config.h
+++ b/keyboards/mechwild/bde/lefty/keymaps/via/config.h
diff --git a/keyboards/mechwild/bde/lefty/keymaps/via/keymap.c b/keyboards/mechwild/bde/lefty/keymaps/via/keymap.c
new file mode 100644
index 0000000000..722062935a
--- /dev/null
+++ b/keyboards/mechwild/bde/lefty/keymaps/via/keymap.c
@@ -0,0 +1,56 @@
+/* Copyright 2020 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
+
+#define FN1_SPC LT(1, KC_SPC)
+#define FN2_BSPC LT(2, KC_BSPC)
+#define FN3_B LT(3, KC_B)
+#define CTL_Z CTL_T(KC_Z)
+#define ALT_X ALT_T(KC_X)
+#define ALT_N ALGR_T(KC_N)
+#define CTL_M RCTL_T(KC_M)
+#define SFT_ENT RSFT_T(KC_ENT)
+#define WIN_C LGUI_T(KC_C)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [0] = LAYOUT(
+ 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_4, KC_5, KC_6, SFT_ENT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC,
+ KC_1, KC_2, KC_3, CTL_Z, ALT_X, WIN_C, KC_V, FN2_BSPC, FN1_SPC, FN3_B, ALT_N, CTL_M, SFT_ENT
+ ),
+
+ [1] = LAYOUT(
+ KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, QK_BOOT, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_F4, KC_F5, KC_F6, KC_TAB, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, KC_QUOT,
+ KC_F1, KC_F2, KC_F3, _______, _______, KC_LGUI, _______, KC_DEL, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_COLN, KC_DQUO,
+ KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
diff --git a/keyboards/mechwild/bde/keymaps/righty_via/rules.mk b/keyboards/mechwild/bde/lefty/keymaps/via/rules.mk
index 16d33cd89f..16d33cd89f 100644
--- a/keyboards/mechwild/bde/keymaps/righty_via/rules.mk
+++ b/keyboards/mechwild/bde/lefty/keymaps/via/rules.mk
diff --git a/keyboards/mechwild/bde/lefty/lefty.c b/keyboards/mechwild/bde/lefty/lefty.c
deleted file mode 100644
index 6873ed36a0..0000000000
--- a/keyboards/mechwild/bde/lefty/lefty.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2020 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 "bde.h"
diff --git a/keyboards/mechwild/bde/lefty/lefty.h b/keyboards/mechwild/bde/lefty/lefty.h
deleted file mode 100644
index 37b8771db6..0000000000
--- a/keyboards/mechwild/bde/lefty/lefty.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright 2020 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 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, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D \
-) { \
- {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, KC_NO, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D} \
-}
diff --git a/keyboards/mechwild/bde/lefty/rules.mk b/keyboards/mechwild/bde/lefty/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/mechwild/bde/lefty/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/mechwild/bde/readme.md b/keyboards/mechwild/bde/readme.md
index 5481b47160..623903b4e7 100644
--- a/keyboards/mechwild/bde/readme.md
+++ b/keyboards/mechwild/bde/readme.md
@@ -12,4 +12,22 @@ Make example for this keyboard (after setting up your build environment):
make mechwild/bde:default
+Flashing example for this keyboard:
+
+ make mechwild/bde: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 top left key and plug in the keyboard. This will also clear EEPROM, so it is a good first step if the keyboard is misbehaving.
+* **Physical reset**: Press the 6x6mm button on the underside of the keyboard. On Rev1, it is above the Pro Micro; on Rev2, it is below the OLED.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT`. In the pre-supplied keymaps it is on the second layer, replacing the R key.
+
+As a Pro Micro-compatible board, the BDE defines `caterina` as its bootloader by default. Many popular Pro Micro alternatives like the Elite-C, Bit-C, Sea-Micro, Puchi-C etc should be flashed with a different bootloader such as `atmel-dfu`.
+
+**If the incorrect bootloader is specified, bootmagic reset and the `QK_BOOT` keycode will not work**.
+
+To avoid this problem, set the correct bootloader in your custom keymap's `rules.mk` file before compiling, or flash using an appropriate target (e.g. `make mechwild/bde:default:dfu`). See [flashing instructions and bootloader information](https://docs.qmk.fm/#/flashing) for more details.
diff --git a/keyboards/mechwild/bde/rev2/config.h b/keyboards/mechwild/bde/rev2/config.h
index 0f290ecc33..3d045762ca 100644
--- a/keyboards/mechwild/bde/rev2/config.h
+++ b/keyboards/mechwild/bde/rev2/config.h
@@ -17,54 +17,11 @@ 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 0x170A
-#define DEVICE_VER 0x0101
-#define MANUFACTURER MechWild
-#define PRODUCT BDE Rev2
-
-/* Key matrix size */
-#define MATRIX_ROWS 6
-#define MATRIX_COLS 7
-
-/* Key matrix pins */
-#define MATRIX_ROW_PINS { C6, D7, B4, D4, E6, B2 }
-#define MATRIX_COL_PINS { B3, B1, F7, F6, F5, F4, B5 }
-#define UNUSED_PINS
-
/* Encoder pins */
-#define ENCODERS_PAD_A { D3 }
-#define ENCODERS_PAD_B { D2 }
+#define ENCODERS_PAD_A { D2 }
+#define ENCODERS_PAD_B { D3 }
/* Encoder resolution */
#define ENCODER_RESOLUTION 4
-#define TAP_CODE_DELAY 10
-
-/* COL2ROW, ROW2COL */
-#define DIODE_DIRECTION COL2ROW
#define OLED_FONT_H "keyboards/mechwild/bde/lib/rev2.c"
-
-#define RGB_DI_PIN B6
-#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 */
-/*== Chosen enabled animations ==*/
-# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
-#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
diff --git a/keyboards/mechwild/bde/rev2/info.json b/keyboards/mechwild/bde/rev2/info.json
new file mode 100644
index 0000000000..29ddb0e017
--- /dev/null
+++ b/keyboards/mechwild/bde/rev2/info.json
@@ -0,0 +1,72 @@
+{
+ "keyboard_name": "BDE Rev2",
+ "usb": {
+ "pid": "0x170A",
+ "device_version": "1.0.1"
+ },
+ "matrix_pins": {
+ "rows":[ "C6", "D7", "B4", "D4", "E6", "B2" ],
+ "cols": ["B3", "B1", "F7", "F6", "F5", "F4", "B5" ]
+ },
+ "diode_direction": "COL2ROW",
+ "rgblight": {
+ "led_count": 8,
+ "pin": "B6",
+ "animations": {
+ "rainbow_swirl": true
+ },
+ "hue_steps": 8,
+ "saturation_steps": 8,
+ "brightness_steps": 8
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "matrix": [0, 0], "label":"Q", "x":0, "y":0},
+ { "matrix": [0, 1], "label":"W", "x":1, "y":0},
+ { "matrix": [0, 2], "label":"E", "x":2, "y":0},
+ { "matrix": [0, 3], "label":"R", "x":3, "y":0},
+ { "matrix": [0, 4], "label":"T", "x":4, "y":0},
+ { "matrix": [0, 5], "label":"Y", "x":5, "y":0},
+ { "matrix": [0, 6], "label":"U", "x":6, "y":0},
+ { "matrix": [3, 6], "label":"I", "x":7, "y":0},
+ { "matrix": [3, 5], "label":"O", "x":8, "y":0},
+ { "matrix": [3, 4], "label":"P", "x":9, "y":0},
+ { "matrix": [3, 3], "label":"7", "x":10, "y":0},
+ { "matrix": [3, 2], "label":"8", "x":11, "y":0},
+ { "matrix": [3, 1], "label":"9", "x":12, "y":0},
+ { "matrix": [3, 0], "label":"Mute", "x":13, "y":0},
+
+ { "matrix": [1, 0], "label":"A", "x":0, "y":1},
+ { "matrix": [1, 1], "label":"S", "x":1, "y":1},
+ { "matrix": [1, 2], "label":"D", "x":2, "y":1},
+ { "matrix": [1, 3], "label":"F", "x":3, "y":1},
+ { "matrix": [1, 4], "label":"G", "x":4, "y":1},
+ { "matrix": [1, 5], "label":"H", "x":5, "y":1},
+ { "matrix": [1, 6], "label":"J", "x":6, "y":1},
+ { "matrix": [4, 6], "label":"K", "x":7, "y":1},
+ { "matrix": [4, 5], "label":"L", "x":8, "y":1},
+ { "matrix": [4, 4], "label":"Esc", "x":9, "y":1},
+ { "matrix": [4, 3], "label":"4", "x":10, "y":1},
+ { "matrix": [4, 2], "label":"5", "x":11, "y":1},
+ { "matrix": [4, 1], "label":"6", "x":12, "y":1},
+ { "matrix": [4, 0], "label":"0", "x":13, "y":1},
+
+ { "matrix": [2, 0], "label":"Z", "x":0, "y":2},
+ { "matrix": [2, 1], "label":"X", "x":1, "y":2},
+ { "matrix": [2, 2], "label":"C", "x":2, "y":2},
+ { "matrix": [2, 3], "label":"V", "x":3, "y":2},
+ { "matrix": [2, 4], "label":"Back", "x":4, "y":2},
+ { "matrix": [2, 5], "label":"Space", "x":5, "y":2},
+ { "matrix": [2, 6], "label":"B", "x":6, "y":2},
+ { "matrix": [5, 6], "label":"N", "x":7, "y":2},
+ { "matrix": [5, 5], "label":"M", "x":8, "y":2},
+ { "matrix": [5, 4], "label":"Enter", "x":9, "y":2},
+ { "matrix": [5, 3], "label":"1", "x":10, "y":2},
+ { "matrix": [5, 2], "label":"2", "x":11, "y":2},
+ { "matrix": [5, 1], "label":"3", "x":12, "y":2},
+ { "matrix": [5, 0], "label":"EQL", "x":13, "y":2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mechwild/bde/rev2/keymaps/default/keymap.c b/keyboards/mechwild/bde/rev2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..375dc25ae2
--- /dev/null
+++ b/keyboards/mechwild/bde/rev2/keymaps/default/keymap.c
@@ -0,0 +1,69 @@
+/* Copyright 2022 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
+
+#define FN1_BSPC LT(1, KC_BSPC)
+#define FN2_SPC LT(2, KC_SPC)
+#define FN3_B LT(3, KC_B)
+#define CTL_Z CTL_T(KC_Z)
+#define ALT_X ALT_T(KC_X)
+#define ALT_N ALGR_T(KC_N)
+#define CTL_M RCTL_T(KC_M)
+#define SFT_ENT RSFT_T(KC_ENT)
+#define WIN_C LGUI_T(KC_C)
+
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+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_P7, KC_P8, KC_P9, KC_MUTE,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC, KC_P4, KC_P5, KC_P6, KC_P0,
+ CTL_Z, ALT_X, WIN_C, KC_V, FN1_BSPC, FN2_SPC, FN3_B, ALT_N, CTL_M, SFT_ENT, KC_P1, KC_P2, KC_P3, KC_MINS
+ ),
+ [_FN1] = LAYOUT(
+ _______, _______, _______, QK_BOOT, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS, KC_7, KC_8, KC_9, KC_NLCK,
+ _______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_SCLN, KC_QUOT, KC_4, KC_5, KC_6, KC_0,
+ _______, _______, _______, _______, _______, KC_TAB, KC_LGUI, KC_COMM, KC_DOT, KC_SLSH, KC_1, KC_2, KC_3, KC_EQL
+ ),
+ [_FN2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, KC_LCBR, KC_RCBR, KC_PIPE, KC_AMPR, KC_ASTR, KC_LPRN, KC_CLCK,
+ _______, _______, _______, _______, _______, _______, _______, KC_TILD, KC_COLN, KC_DQUO, KC_DLR, KC_PERC, KC_CIRC, KC_RPRN,
+ _______, _______, _______, _______, KC_DEL, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_EXLM, KC_AT, KC_HASH, KC_PLUS
+ ),
+ [_FN3] = 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, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+
+};
+
+// If you are not using an encoder, remember to set ENCODER_ENABLE and ENCODER_MAP_ENABLE to no in rules.mk.
+#ifdef ENCODER_MAP_ENABLE
+ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ };
+#endif
diff --git a/keyboards/mechwild/bde/rev2/keymaps/default/rules.mk b/keyboards/mechwild/bde/rev2/keymaps/default/rules.mk
new file mode 100644
index 0000000000..d976f24919
--- /dev/null
+++ b/keyboards/mechwild/bde/rev2/keymaps/default/rules.mk
@@ -0,0 +1,13 @@
+# If you are using a custom Pro Micro-compatible dev board (Elite-C, Sea-Micro, etc)
+# you may need to uncomment and modify this BOOTLOADER setting to use the correct
+# bootloader. (e.g. Elite-Cs use "atmel-dfu", not "caterina".)
+#
+# See the QMK docs for more information:
+# https://docs.qmk.fm/#/flashing
+# https://docs.qmk.fm/#/driver_installation_zadig?id=list-of-known-bootloaders
+
+# BOOTLOADER = caterina
+
+# If you are not using an encoder, set these options to no.
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/bde/keymaps/via/config.h b/keyboards/mechwild/bde/rev2/keymaps/via/config.h
index d09385ca5d..d09385ca5d 100644
--- a/keyboards/mechwild/bde/keymaps/via/config.h
+++ b/keyboards/mechwild/bde/rev2/keymaps/via/config.h
diff --git a/keyboards/mechwild/bde/rev2/keymaps/via/keymap.c b/keyboards/mechwild/bde/rev2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..8ce001cff8
--- /dev/null
+++ b/keyboards/mechwild/bde/rev2/keymaps/via/keymap.c
@@ -0,0 +1,68 @@
+/* Copyright 2022 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
+
+#define FN1_BSPC LT(1, KC_BSPC)
+#define FN2_SPC LT(2, KC_SPC)
+#define FN3_B LT(3, KC_B)
+#define CTL_Z CTL_T(KC_Z)
+#define ALT_X ALT_T(KC_X)
+#define ALT_N ALGR_T(KC_N)
+#define CTL_M RCTL_T(KC_M)
+#define SFT_ENT RSFT_T(KC_ENT)
+#define WIN_C LGUI_T(KC_C)
+
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+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_P7, KC_P8, KC_P9, KC_MUTE,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC, KC_P4, KC_P5, KC_P6, KC_P0,
+ CTL_Z, ALT_X, WIN_C, KC_V, FN1_BSPC, FN2_SPC, FN3_B, ALT_N, CTL_M, SFT_ENT, KC_P1, KC_P2, KC_P3, KC_MINS
+ ),
+ [_FN1] = LAYOUT(
+ _______, _______, _______, QK_BOOT, _______, _______, KC_PSCR, KC_LBRC, KC_RBRC, KC_BSLS, KC_7, KC_8, KC_9, KC_NLCK,
+ _______, _______, _______, _______, _______, _______, _______, KC_GRV, KC_SCLN, KC_QUOT, KC_4, KC_5, KC_6, KC_0,
+ _______, _______, _______, _______, _______, KC_TAB, KC_LGUI, KC_COMM, KC_DOT, KC_SLSH, KC_1, KC_2, KC_3, KC_EQL
+ ),
+ [_FN2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, KC_LCBR, KC_RCBR, KC_PIPE, KC_AMPR, KC_ASTR, KC_LPRN, KC_CLCK,
+ _______, _______, _______, _______, _______, _______, _______, KC_TILD, KC_COLN, KC_DQUO, KC_DLR, KC_PERC, KC_CIRC, KC_RPRN,
+ _______, _______, _______, _______, KC_DEL, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_EXLM, KC_AT, KC_HASH, KC_PLUS
+ ),
+ [_FN3] = 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, RGB_RMOD
+ )
+
+};
+
+#ifdef ENCODER_MAP_ENABLE
+ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ };
+#endif
diff --git a/keyboards/mechwild/bde/rev2/keymaps/via/rules.mk b/keyboards/mechwild/bde/rev2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..9ff50262fb
--- /dev/null
+++ b/keyboards/mechwild/bde/rev2/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/bde/rev2/rev2.c b/keyboards/mechwild/bde/rev2/rev2.c
index 88c06988d9..3dae312e2b 100644
--- a/keyboards/mechwild/bde/rev2/rev2.c
+++ b/keyboards/mechwild/bde/rev2/rev2.c
@@ -1,21 +1,20 @@
-/* Copyright 2022 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/>.
+/* Copyright 2022 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 "bde.h"
+#include "rev2.h"
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
@@ -34,30 +33,25 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
#endif
#ifdef OLED_ENABLE
- oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- return OLED_ROTATION_270; // flips the display 270 degrees
- }
+static const char PROGMEM mw_logo[] = {
+ 0x8A, 0x8B, 0x8C, 0x8D, '\r',
+ 0xAA, 0xAB, 0xAC, 0xAD, 0xAE,
+ 0xCA, 0xCB, 0xCC, 0xCD, '\r',
+ 0x20, 0x8E, 0x8F, 0x90, 0x00};
+
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ return OLED_ROTATION_270; // flips the display 270 degrees
+}
- static void render_logo(void) { // Render MechWild "MW" Logo
- static const char PROGMEM logo_1[] = {0x8A, 0x8B, 0x8C, 0x8D, 0x00};
- static const char PROGMEM logo_2[] = {0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x00};
- static const char PROGMEM logo_3[] = {0xCA, 0xCB, 0xCC, 0xCD, 0x00};
- static const char PROGMEM logo_4[] = {0x20, 0x8E, 0x8F, 0x90, 0x00};
- oled_set_cursor(0,0);
- oled_write_P(logo_1, false);
- oled_set_cursor(0,1);
- oled_write_P(logo_2, false);
- oled_set_cursor(0,2);
- oled_write_P(logo_3, false);
- oled_set_cursor(0,3);
- oled_write_P(logo_4, false);
- }
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
- bool oled_task_user(void) {
- render_logo();
- oled_set_cursor(0,6);
+ oled_write_P(mw_logo, false); // Render MechWild "MW" Logo
+ oled_set_cursor(0,6);
- oled_write_ln_P(PSTR("Layer"), false);
+ oled_write_ln_P(PSTR("Layer"), false);
switch (get_highest_layer(layer_state)) {
case 0:
@@ -75,14 +69,13 @@ bool encoder_update_kb(uint8_t index, bool clockwise) {
default:
oled_write_ln_P(PSTR("Undef"), false);
}
- oled_write_ln_P(PSTR(""), false);
+ oled_write_ln_P(PSTR(""), false);
// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
-
- return false;
-
- }
+
+ return true;
+}
#endif
diff --git a/keyboards/mechwild/bde/rev2/rev2.h b/keyboards/mechwild/bde/rev2/rev2.h
index 8c8191710a..bb37c7ef69 100644
--- a/keyboards/mechwild/bde/rev2/rev2.h
+++ b/keyboards/mechwild/bde/rev2/rev2.h
@@ -16,16 +16,3 @@
#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, K1D,\
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D \
-) { \
- { K00, K01, K02, K03, K04, K05, K06 }, \
- { K10, K11, K12, K13, K14, K15, K16 }, \
- { K20, K21, K22, K23, K24, K25, K26 }, \
- { K0D, K0C, K0B, K0A, K09, K08, K07 }, \
- { K1D, K1C, K1B, K1A, K19, K18, K17 }, \
- { K2D, K2C, K2B, K2A, K29, K28, K27 } \
-}
diff --git a/keyboards/mechwild/bde/righty/config.h b/keyboards/mechwild/bde/righty/config.h
deleted file mode 100644
index 1764520b13..0000000000
--- a/keyboards/mechwild/bde/righty/config.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright 2020 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 0x1702
-#define DEVICE_VER 0x0203
-#define MANUFACTURER MechWild
-#define PRODUCT BDE Righty
-
-/* key matrix size */
-#define MATRIX_ROWS 3
-#define MATRIX_COLS 14
-
-/* key matrix pins */
-#define MATRIX_ROW_PINS { D1, D7, D3}
-#define MATRIX_COL_PINS { B4, B5, E6, C6, D4, D0, F4, F5, F6, B6, B3, B2, B1, F7}
-#define UNUSED_PINS
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION ROW2COL
-
-/* If RGBLIGHT_ENABLE is set to yes in the rules, ensure the RGBLED_NUM is accurate for how many you have attached. */
-#define RGB_DI_PIN D2
-#define RGBLED_NUM 16
-#define RGBLIGHT_ANIMATIONS
-
-/* 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/mechwild/bde/righty/info.json b/keyboards/mechwild/bde/righty/info.json
new file mode 100644
index 0000000000..af23e6e293
--- /dev/null
+++ b/keyboards/mechwild/bde/righty/info.json
@@ -0,0 +1,77 @@
+{
+ "keyboard_name": "BDE Righty",
+ "usb": {
+ "pid": "0x1702",
+ "device_version": "2.0.3"
+ },
+ "matrix_pins": {
+ "rows": ["D1", "D7", "D3"],
+ "cols": [ "B4", "B5", "E6", "C6", "D4", "D0", "F4", "F5", "F6", "B3", "B2", "B6", "B1", "F7"]
+ },
+ "diode_direction": "ROW2COL",
+ "rgblight": {
+ "led_count": 16,
+ "pin": "D2",
+ "animations": {
+ "alternating": true,
+ "breathing": true,
+ "christmas": true,
+ "knight": true,
+ "rainbow_mood": true,
+ "rainbow_swirl": true,
+ "rgb_test": true,
+ "snake": true,
+ "static_gradient": true,
+ "twinkle": true
+ }
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "matrix": [0, 0], "label":"Q", "x":0, "y":0 },
+ { "matrix": [0, 1], "label":"W", "x":1, "y":0 },
+ { "matrix": [0, 2], "label":"E", "x":2, "y":0 },
+ { "matrix": [0, 3], "label":"R", "x":3, "y":0 },
+ { "matrix": [0, 4], "label":"T", "x":4, "y":0 },
+ { "matrix": [0, 5], "label":"Y", "x":5, "y":0 },
+ { "matrix": [0, 6], "label":"U", "x":6, "y":0 },
+ { "matrix": [0, 7], "label":"I", "x":7, "y":0 },
+ { "matrix": [0, 8], "label":"O", "x":8, "y":0 },
+ { "matrix": [0, 9], "label":"P", "x":9, "y":0 },
+ { "matrix": [0, 10], "label":"0", "x":10, "y":0 },
+ { "matrix": [0, 11], "label":"7", "x":11, "y":0 },
+ { "matrix": [0, 12], "label":"8", "x":12, "y":0 },
+ { "matrix": [0, 13], "label":"9", "x":13, "y":0 },
+
+ { "matrix": [1, 0], "label":"A", "x":0, "y":1 },
+ { "matrix": [1, 1], "label":"S", "x":1, "y":1 },
+ { "matrix": [1, 2], "label":"D", "x":2, "y":1 },
+ { "matrix": [1, 3], "label":"F", "x":3, "y":1 },
+ { "matrix": [1, 4], "label":"G", "x":4, "y":1 },
+ { "matrix": [1, 5], "label":"H", "x":5, "y":1 },
+ { "matrix": [1, 6], "label":"J", "x":6, "y":1 },
+ { "matrix": [1, 7], "label":"K", "x":7, "y":1 },
+ { "matrix": [1, 8], "label":"L", "x":8, "y":1 },
+ { "matrix": [1, 9], "label":"Esc", "x":9, "y":1 },
+ { "matrix": [1, 10], "label":"Enter", "x":10, "y":1 , "h":2 },
+ { "matrix": [1, 11], "label":"4", "x":11, "y":1 },
+ { "matrix": [1, 12], "label":"5", "x":12, "y":1 },
+ { "matrix": [1, 13], "label":"6", "x":13, "y":1 },
+
+ { "matrix": [2, 0], "label":"Z", "x":0, "y":2 },
+ { "matrix": [2, 1], "label":"X", "x":1, "y":2 },
+ { "matrix": [2, 2], "label":"C", "x":2, "y":2 },
+ { "matrix": [2, 3], "label":"V", "x":3, "y":2 },
+ { "matrix": [2, 4], "label":"Back", "x":4, "y":2 },
+ { "matrix": [2, 5], "label":"Space", "x":5, "y":2 },
+ { "matrix": [2, 6], "label":"B", "x":6, "y":2 },
+ { "matrix": [2, 7], "label":"N", "x":7, "y":2 },
+ { "matrix": [2, 8], "label":"M", "x":8, "y":2 },
+ { "matrix": [2, 9], "label":"Esc", "x":9, "y":2 },
+ { "matrix": [2, 11], "label":"1", "x":11, "y":2 },
+ { "matrix": [2, 12], "label":"2", "x":12, "y":2 },
+ { "matrix": [2, 13], "label":"3", "x":13, "y":2 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/mechwild/bde/righty/keymaps/default/config.h b/keyboards/mechwild/bde/righty/keymaps/default/config.h
new file mode 100644
index 0000000000..5c2d15a006
--- /dev/null
+++ b/keyboards/mechwild/bde/righty/keymaps/default/config.h
@@ -0,0 +1,23 @@
+/* Copyright 2020 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
+/* Making it so you need to hold the modifier and other key for the time together, helps not accidentally hit activate the hold functions of bottom row*/
+#define IGNORE_MOD_TAP_INTERRUPT
+
+/* Setting tap term, helps not accidentally hit activate the hold functions of bottom row*/
+#define TAPPING_TERM 250
+
diff --git a/keyboards/mechwild/bde/righty/keymaps/default/keymap.c b/keyboards/mechwild/bde/righty/keymaps/default/keymap.c
new file mode 100644
index 0000000000..dea0054d95
--- /dev/null
+++ b/keyboards/mechwild/bde/righty/keymaps/default/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2020 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
+
+#define FN1_SPC LT(1, KC_SPC)
+#define FN2_BSPC LT(2, KC_BSPC)
+#define FN3_B LT(3, KC_B)
+#define CTL_Z CTL_T(KC_Z)
+#define ALT_X ALT_T(KC_X)
+#define ALT_N ALGR_T(KC_N)
+#define CTL_M RCTL_T(KC_M)
+#define WIN_C LGUI_T(KC_C)
+
+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_0, KC_7, KC_8, KC_9,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC, KC_ENT, KC_4, KC_5, KC_6,
+ CTL_Z, ALT_X, WIN_C, KC_V, FN2_BSPC, FN1_SPC, FN3_B, ALT_N, CTL_M, KC_RSFT, KC_1, KC_2, KC_3
+ ),
+
+ [1] = LAYOUT(
+ _______, _______, _______, QK_BOOT, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_F10, KC_F7, KC_F8, KC_F9,
+ _______, _______, _______, _______, _______, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, KC_QUOT, KC_TAB, KC_F4, KC_F5, KC_F6,
+ _______, _______, KC_LGUI, _______, KC_DEL, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F1, KC_F2, KC_F3
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_COLN, KC_DQUO, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_PSCR, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_F11, KC_F12, _______
+ ),
+
+ [3] = LAYOUT(
+ RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_G, RGB_M_T, _______,
+ RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_M_SN, RGB_M_K, RGB_M_X,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_B, RGB_M_R, RGB_M_SW
+ )
+
+};
diff --git a/keyboards/mechwild/bde/righty/keymaps/default/rules.mk b/keyboards/mechwild/bde/righty/keymaps/default/rules.mk
new file mode 100644
index 0000000000..a4c9ac387a
--- /dev/null
+++ b/keyboards/mechwild/bde/righty/keymaps/default/rules.mk
@@ -0,0 +1,9 @@
+# If you are using a custom Pro Micro-compatible dev board (Elite-C, Sea-Micro, etc)
+# you may need to uncomment and modify this BOOTLOADER setting to use the correct
+# bootloader. (e.g. Elite-Cs use "atmel-dfu", not "caterina".)
+#
+# See the QMK docs for more information:
+# https://docs.qmk.fm/#/flashing
+# https://docs.qmk.fm/#/driver_installation_zadig?id=list-of-known-bootloaders
+
+# BOOTLOADER = caterina
diff --git a/keyboards/mechwild/bde/righty/keymaps/via/config.h b/keyboards/mechwild/bde/righty/keymaps/via/config.h
new file mode 100644
index 0000000000..5c2d15a006
--- /dev/null
+++ b/keyboards/mechwild/bde/righty/keymaps/via/config.h
@@ -0,0 +1,23 @@
+/* Copyright 2020 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
+/* Making it so you need to hold the modifier and other key for the time together, helps not accidentally hit activate the hold functions of bottom row*/
+#define IGNORE_MOD_TAP_INTERRUPT
+
+/* Setting tap term, helps not accidentally hit activate the hold functions of bottom row*/
+#define TAPPING_TERM 250
+
diff --git a/keyboards/mechwild/bde/righty/keymaps/via/keymap.c b/keyboards/mechwild/bde/righty/keymaps/via/keymap.c
new file mode 100644
index 0000000000..b8238b152f
--- /dev/null
+++ b/keyboards/mechwild/bde/righty/keymaps/via/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2020 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
+
+#define FN1_SPC LT(1, KC_SPC)
+#define FN2_BSPC LT(2, KC_BSPC)
+#define FN3_B LT(3, KC_B)
+#define CTL_Z CTL_T(KC_Z)
+#define ALT_X ALT_T(KC_X)
+#define ALT_N ALGR_T(KC_N)
+#define CTL_M RCTL_T(KC_M)
+#define WIN_C LGUI_T(KC_C)
+
+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_0, KC_7, KC_8, KC_9,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC, KC_ENT, KC_4, KC_5, KC_6,
+ CTL_Z, ALT_X, WIN_C, KC_V, FN2_BSPC, FN1_SPC, FN3_B, ALT_N, CTL_M, KC_RSFT, KC_1, KC_2, KC_3
+ ),
+
+ [1] = LAYOUT(
+ _______, _______, _______, QK_BOOT, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_F10, KC_F7, KC_F8, KC_F9,
+ _______, _______, _______, _______, _______, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, KC_QUOT, KC_TAB, KC_F4, KC_F5, KC_F6,
+ _______, _______, KC_LGUI, _______, KC_DEL, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F1, KC_F2, KC_F3
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_COLN, KC_DQUO, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, KC_PSCR, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_F11, KC_F12, _______
+ ),
+
+ [3] = LAYOUT(
+ RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_G, RGB_M_T, _______,
+ RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_M_SN, RGB_M_K, RGB_M_X,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_B, RGB_M_R, RGB_M_SW
+ )
+
+};
diff --git a/keyboards/mechwild/bde/righty/keymaps/via/rules.mk b/keyboards/mechwild/bde/righty/keymaps/via/rules.mk
new file mode 100644
index 0000000000..16d33cd89f
--- /dev/null
+++ b/keyboards/mechwild/bde/righty/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+
diff --git a/keyboards/mechwild/bde/righty/righty.c b/keyboards/mechwild/bde/righty/righty.c
deleted file mode 100644
index 6873ed36a0..0000000000
--- a/keyboards/mechwild/bde/righty/righty.c
+++ /dev/null
@@ -1,17 +0,0 @@
-/* Copyright 2020 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 "bde.h"
diff --git a/keyboards/mechwild/bde/righty/righty.h b/keyboards/mechwild/bde/righty/righty.h
deleted file mode 100644
index f1f29554a1..0000000000
--- a/keyboards/mechwild/bde/righty/righty.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright 2020 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 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, K2B, K2C, K2D \
-) { \
- {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, KC_NO, K2B, K2C, K2D} \
-}
diff --git a/keyboards/mechwild/bde/righty/rules.mk b/keyboards/mechwild/bde/righty/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/mechwild/bde/righty/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/mechwild/bde/rules.mk b/keyboards/mechwild/bde/rules.mk
index 2ae725a20b..138a291916 100644
--- a/keyboards/mechwild/bde/rules.mk
+++ b/keyboards/mechwild/bde/rules.mk
@@ -1,20 +1 @@
-# 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
-
DEFAULT_FOLDER = mechwild/bde/rev2
diff --git a/keyboards/mechwild/clunker/config.h b/keyboards/mechwild/clunker/config.h
new file mode 100644
index 0000000000..19dab9b25d
--- /dev/null
+++ b/keyboards/mechwild/clunker/config.h
@@ -0,0 +1,26 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/*
+ * 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 ENCODERS_PAD_A { D2 }
+#define ENCODERS_PAD_B { D3 }
+#define ENCODER_RESOLUTION 4
+
+#define SOLENOID_PIN F4
diff --git a/keyboards/mechwild/clunker/info.json b/keyboards/mechwild/clunker/info.json
new file mode 100644
index 0000000000..cc9b8a1c59
--- /dev/null
+++ b/keyboards/mechwild/clunker/info.json
@@ -0,0 +1,85 @@
+{
+ "manufacturer": "MechWild",
+ "keyboard_name": "Clunker",
+ "maintainer": "kylemccreery",
+ "bootloader": "caterina",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "encoder": true,
+ "haptic": true
+ },
+ "matrix_pins": {
+ "rows": ["F5", "F6", "B3", "F7", "B2", "B1", "B6"],
+ "cols": ["D1", "D0", "D4", "C6", "D7", "E6", "B4", "B5"]
+ },
+ "processor": "atmega32u4",
+ "url": "https://mechwild.com/product/clunker/",
+ "usb": {
+ "device_version": "1.3.0",
+ "pid": "0x1711",
+ "vid": "0x6D77"
+ },
+ "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": [1, 0], "x":0, "y":1, "w":1.5},
+ { "matrix": [1, 1], "x":1.5, "y":1},
+ { "matrix": [1, 2], "x":2.5, "y":1},
+ { "matrix": [1, 3], "x":3.5, "y":1},
+ { "matrix": [1, 4], "x":4.5, "y":1},
+ { "matrix": [1, 5], "x":5.5, "y":1},
+ { "matrix": [1, 6], "x":6.5, "y":1},
+ { "matrix": [1, 7], "x":7.5, "y":1},
+ { "matrix": [5, 7], "x":8.5, "y":1},
+ { "matrix": [5, 6], "x":9.5, "y":1},
+ { "matrix": [5, 5], "x":10.5, "y":1},
+ { "matrix": [5, 4], "x":11.5, "y":1},
+ { "matrix": [2, 0], "x":0, "y":2, "w":1.75},
+ { "matrix": [2, 1], "x":1.75, "y":2},
+ { "matrix": [2, 2], "x":2.75, "y":2},
+ { "matrix": [2, 3], "x":3.75, "y":2},
+ { "matrix": [2, 4], "x":4.75, "y":2},
+ { "matrix": [2, 5], "x":5.75, "y":2},
+ { "matrix": [2, 6], "x":6.75, "y":2},
+ { "matrix": [2, 7], "x":7.75, "y":2},
+ { "matrix": [5, 1], "x":8.75, "y":2},
+ { "matrix": [5, 2], "x":9.75, "y":2},
+ { "matrix": [5, 3], "x":10.75, "y":2, "w":1.75},
+ { "matrix": [3, 0], "x":0, "y":3, "w":1.25},
+ { "matrix": [3, 1], "x":1.25, "y":3},
+ { "matrix": [3, 2], "x":2.25, "y":3},
+ { "matrix": [3, 3], "x":3.25, "y":3},
+ { "matrix": [3, 4], "x":4.25, "y":3},
+ { "matrix": [3, 5], "x":5.25, "y":3},
+ { "matrix": [3, 6], "x":6.25, "y":3},
+ { "matrix": [3, 7], "x":7.25, "y":3},
+ { "matrix": [6, 7], "x":8.25, "y":3},
+ { "matrix": [6, 6], "x":9.25, "y":3},
+ { "matrix": [6, 5], "x":10.25, "y":3},
+ { "matrix": [6, 4], "x":11.25, "y":3, "w":1.25},
+ { "matrix": [4, 0], "x":0, "y":4, "w":1.25},
+ { "matrix": [4, 1], "x":1.25, "y":4, "w":1.25},
+ { "matrix": [4, 2], "x":2.5, "y":4, "w":1.25},
+ { "matrix": [4, 3], "x":3.75, "y":4, "w":2.75},
+ { "matrix": [4, 4], "x":6.5, "y":4, "w":2.25},
+ { "matrix": [4, 5], "x":8.75, "y":4, "w":1.25},
+ { "matrix": [4, 6], "x":10, "y":4, "w":1.25},
+ { "matrix": [4, 7], "x":11.25, "y":4, "w":1.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mechwild/clunker/keymaps/default/keymap.c b/keyboards/mechwild/clunker/keymaps/default/keymap.c
new file mode 100644
index 0000000000..e6b5db9011
--- /dev/null
+++ b/keyboards/mechwild/clunker/keymaps/default/keymap.c
@@ -0,0 +1,63 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// 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 */
+ /*
+ k00, k01, k02, k03, k04, k05, k06, k07, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, \
+ k50, k51, k52, k54, k56, k59, k5A, k5B \
+ */
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, 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,
+ MO(_FN1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ KC_LSFT, KC_SLSH, 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, KC_SPC, KC_SPC, KC_RALT, MO(_FN2), KC_RCTL
+ ),
+ [_FN1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, HPT_TOG,
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_QUOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_UP, KC_SLSH,
+ _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [_FN2] = LAYOUT(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_FN3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][1][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(KC_LEFT, KC_RIGHT) },
+ [2] = { ENCODER_CCW_CW(KC_HOME, KC_END) },
+ [3] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) }
+};
+#endif
diff --git a/keyboards/mechwild/clunker/keymaps/default/rules.mk b/keyboards/mechwild/clunker/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/mechwild/clunker/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/clunker/keymaps/via/keymap.c b/keyboards/mechwild/clunker/keymaps/via/keymap.c
new file mode 100644
index 0000000000..e6b5db9011
--- /dev/null
+++ b/keyboards/mechwild/clunker/keymaps/via/keymap.c
@@ -0,0 +1,63 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// 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 */
+ /*
+ k00, k01, k02, k03, k04, k05, k06, k07, \
+ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, \
+ k50, k51, k52, k54, k56, k59, k5A, k5B \
+ */
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, 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,
+ MO(_FN1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
+ KC_LSFT, KC_SLSH, 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, KC_SPC, KC_SPC, KC_RALT, MO(_FN2), KC_RCTL
+ ),
+ [_FN1] = LAYOUT(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, HPT_TOG,
+ _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_SCLN, KC_QUOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_UP, KC_SLSH,
+ _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [_FN2] = LAYOUT(
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_FN3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][1][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(KC_LEFT, KC_RIGHT) },
+ [2] = { ENCODER_CCW_CW(KC_HOME, KC_END) },
+ [3] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) }
+};
+#endif
diff --git a/keyboards/mechwild/clunker/keymaps/via/rules.mk b/keyboards/mechwild/clunker/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1189f4ad19
--- /dev/null
+++ b/keyboards/mechwild/clunker/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/clunker/readme.md b/keyboards/mechwild/clunker/readme.md
new file mode 100644
index 0000000000..b567e74190
--- /dev/null
+++ b/keyboards/mechwild/clunker/readme.md
@@ -0,0 +1,25 @@
+# Clunker
+
+![clunker](https://i.imgur.com/6X5ijDoh.jpg)
+
+The Clunker is a 40% DIY kit with a knob and solenoid.
+
+* Keyboard Maintainer: [Kyle McCreery](https://github.com/kylemccreery)
+* Hardware Supported: Clunker v1.3
+* Hardware Availability: [Clunker on MechWild](https://mechwild.com/product/clunker/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechwild/clunker:default
+
+Flashing example for this keyboard:
+
+ make mechwild/clunker:default:flash
+
+## 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 top of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/mechwild/clunker/rules.mk b/keyboards/mechwild/clunker/rules.mk
new file mode 100644
index 0000000000..3e6a4da7db
--- /dev/null
+++ b/keyboards/mechwild/clunker/rules.mk
@@ -0,0 +1 @@
+HAPTIC_DRIVER += SOLENOID
diff --git a/keyboards/mechwild/mercutio/config.h b/keyboards/mechwild/mercutio/config.h
index 2c318848c5..5a8fbe1ec5 100755
--- a/keyboards/mechwild/mercutio/config.h
+++ b/keyboards/mechwild/mercutio/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6D77 // mw = "MechWild"
-#define PRODUCT_ID 0x1703
-#define DEVICE_VER 0x0100
-#define MANUFACTURER MechWild
-#define PRODUCT Mercutio
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 7
@@ -33,7 +26,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D4, C3, C0, C1, C2}
#define MATRIX_COL_PINS { B0, D7, D6, D5, B1, B2, B3}
-#define UNUSED_PINS
/* encoder pins */
#define ENCODERS_PAD_A { B4 }
@@ -46,6 +38,9 @@
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
+/* Define custom font */
+#define OLED_FONT_H "lib/mercutiofont.c"
+
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
@@ -53,4 +48,4 @@
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE \ No newline at end of file
+#define LOCKING_RESYNC_ENABLE
diff --git a/keyboards/mechwild/mercutio/info.json b/keyboards/mechwild/mercutio/info.json
index cc663f2215..f3323ac48f 100644
--- a/keyboards/mechwild/mercutio/info.json
+++ b/keyboards/mechwild/mercutio/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MechWild Mercutio",
+ "keyboard_name": "Mercutio",
+ "manufacturer": "MechWild",
"url": "mechwild.com",
"maintainer": "kylemccreery",
+ "usb": {
+ "vid": "0x6D77",
+ "pid": "0x1703",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"encoder", "x":12, "y":0}, {"label":"1.5u", "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}, {"label":"1.5u", "x":11.5, "y":1, "w":1.5}, {"label":"1.75u", "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":"1.25u", "x":11.75, "y":2, "w":1.25}, {"label":"1.25u", "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}, {"label":"1.75u", "x":11.25, "y":3, "w":1.75},{"label":"1.25u", "x":0, "y":4, "w":1.25}, {"label":"1u", "x":1.25, "y":4}, {"label":"1.25u", "x":2.25, "y":4, "w":1.25}, {"label":"2.25u", "x":3.5, "y":4, "w":2.25}, {"label":"1u", "x":5.75, "y":4}, {"label":"2.75u", "x":6.75, "y":4, "w":2.75}, {"label":"1.25u", "x":9.5, "y":4, "w":1.25}, {"label":"1u", "x":10.75, "y":4}, {"label":"1.25u", "x":11.75, "y":4, "w":1.25}]
diff --git a/keyboards/mechwild/mercutio/keymaps/bongocat/keymap.c b/keyboards/mechwild/mercutio/keymaps/bongocat/keymap.c
index 6062b8c73d..8ed7f60dd7 100644
--- a/keyboards/mechwild/mercutio/keymaps/bongocat/keymap.c
+++ b/keyboards/mechwild/mercutio/keymaps/bongocat/keymap.c
@@ -65,19 +65,13 @@ 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 )
};
-#ifdef ENCODER_ENABLE
-bool encoder_update_user(uint8_t index, bool clockwise) {
- switch (index) {
- case 0:
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- break;
- }
- return true;
-}
+#ifdef ENCODER_MAP_ENABLE
+ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ };
#endif
#ifdef OLED_ENABLE
diff --git a/keyboards/mechwild/mercutio/keymaps/bongocat/rules.mk b/keyboards/mechwild/mercutio/keymaps/bongocat/rules.mk
index a475e2b6cd..74290f3abe 100644
--- a/keyboards/mechwild/mercutio/keymaps/bongocat/rules.mk
+++ b/keyboards/mechwild/mercutio/keymaps/bongocat/rules.mk
@@ -1,3 +1,4 @@
WPM_ENABLE = yes
VIA_ENABLE = yes
-MOUSEKEY_ENABLE = no \ No newline at end of file
+MOUSEKEY_ENABLE = no
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/mercutio/keymaps/default/config.h b/keyboards/mechwild/mercutio/keymaps/default/config.h
index 235effacd7..b428d6e260 100644
--- a/keyboards/mechwild/mercutio/keymaps/default/config.h
+++ b/keyboards/mechwild/mercutio/keymaps/default/config.h
@@ -15,6 +15,3 @@
*/
#pragma once
-
-/* Define custom font */
-#define OLED_FONT_H "keyboards/mechwild/mercutio/lib/mercutiofont.c" \ No newline at end of file
diff --git a/keyboards/mechwild/mercutio/keymaps/default/keymap.c b/keyboards/mechwild/mercutio/keymaps/default/keymap.c
index 8f433292b5..f5066996c0 100644
--- a/keyboards/mechwild/mercutio/keymaps/default/keymap.c
+++ b/keyboards/mechwild/mercutio/keymaps/default/keymap.c
@@ -46,38 +46,11 @@ 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 )
};
-#ifdef ENCODER_ENABLE
-bool encoder_update_user(uint8_t index, bool clockwise) {
- switch (index) {
- case 0:
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- break;
- }
- return true;
-}
-#endif
-
-#ifdef OLED_ENABLE
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- return OLED_ROTATION_180; // flips the display 180 degrees if offhand
-}
-
-static void render_name(void) {
- static const char PROGMEM mercutio_name[] = {
- 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0x95, 0xB5, 0x96, 0xD5, 0xB6, 0xB6,
- 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(mercutio_name, false);
-}
-
-bool oled_task_user(void) {
- render_name();
- return false;
-}
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
#endif
diff --git a/keyboards/mechwild/mercutio/keymaps/default/rules.mk b/keyboards/mechwild/mercutio/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/mechwild/mercutio/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/mercutio/keymaps/fancy/config.h b/keyboards/mechwild/mercutio/keymaps/fancy/config.h
index 235effacd7..b428d6e260 100644
--- a/keyboards/mechwild/mercutio/keymaps/fancy/config.h
+++ b/keyboards/mechwild/mercutio/keymaps/fancy/config.h
@@ -15,6 +15,3 @@
*/
#pragma once
-
-/* Define custom font */
-#define OLED_FONT_H "keyboards/mechwild/mercutio/lib/mercutiofont.c" \ No newline at end of file
diff --git a/keyboards/mechwild/mercutio/keymaps/fancy/keymap.c b/keyboards/mechwild/mercutio/keymaps/fancy/keymap.c
index 96457be6d2..ca1ac03d2b 100755
--- a/keyboards/mechwild/mercutio/keymaps/fancy/keymap.c
+++ b/keyboards/mechwild/mercutio/keymaps/fancy/keymap.c
@@ -72,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}
}
}
- return true;
+ return false;
}
#endif
diff --git a/keyboards/mechwild/mercutio/keymaps/fearless_spiff/keymap.c b/keyboards/mechwild/mercutio/keymaps/fearless_spiff/keymap.c
index 36dcd4816f..50b1b6471c 100644
--- a/keyboards/mechwild/mercutio/keymaps/fearless_spiff/keymap.c
+++ b/keyboards/mechwild/mercutio/keymaps/fearless_spiff/keymap.c
@@ -160,7 +160,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
tap_code(KC_VOLD);
}
}
- return true;
+ return false;
}
#endif
@@ -292,7 +292,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
oled_write(get_u8_str(get_current_wpm(), ' '), false);
*/
- return true;
+ return false;
}
void suspend_power_down_user(void) {
diff --git a/keyboards/mechwild/mercutio/keymaps/jonavin/config.h b/keyboards/mechwild/mercutio/keymaps/jonavin/config.h
index 09909e28c9..1722a2c25c 100644
--- a/keyboards/mechwild/mercutio/keymaps/jonavin/config.h
+++ b/keyboards/mechwild/mercutio/keymaps/jonavin/config.h
@@ -17,9 +17,6 @@
#pragma once
-/* Define custom font */
-#define OLED_FONT_H "lib/mercutiofont.c"
-
#define TAPPING_TOGGLE 2
// TT set to two taps
diff --git a/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c b/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c
index 869a9f73ab..5c22abee3f 100755
--- a/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c
+++ b/keyboards/mechwild/mercutio/keymaps/jonavin/keymap.c
@@ -17,7 +17,6 @@
#include QMK_KEYBOARD_H
-#include <stdio.h>
#include "jonavin.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -54,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
Defaults never changes if no encoder present to change it
*/
typedef struct {
- char keydesc[6]; // this will be displayed on OLED
+ char keydesc[6]; // this will be displayed on OLED
uint16_t keycode; // this is the keycode that will be sent when activted
} keycodedescType;
@@ -69,7 +68,7 @@ static const keycodedescType PROGMEM keyselection[] = {
{"C-A-D", KC_CAD}, // Ctrl-Alt-Del
{"AltF4", KC_AF4},
{"PLAY", KC_MEDIA_PLAY_PAUSE},
- {"RESET", RESET}, // firmware flash mode
+ {"FLASH", QK_BOOT}, // firmware flash mode
};
#define MAX_KEYSELECTION sizeof(keyselection)/sizeof(keyselection[0])
@@ -94,7 +93,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case ENCFUNC:
if (record->event.pressed) {
- selectedkey_rec.keycode == RESET ? reset_keyboard() : tap_code16(selectedkey_rec.keycode); // handle RESET code
+ selectedkey_rec.keycode == QK_BOOT ? reset_keyboard() : tap_code16(selectedkey_rec.keycode); // handle QK_BOOT code
} else {
// when keycode is released
}
@@ -153,7 +152,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
}
break;
}
- return true;
+ return false;
}
#endif
@@ -201,15 +200,13 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
}
render_logo();
oled_set_cursor(8,2);
- char fn_str[12];
switch(get_selected_layer()){
case 0:
oled_write_P(PSTR("BASE"), false);
break;
case 1:
- sprintf(fn_str, "FN %5s", selectedkey_rec.keydesc);
- oled_write(fn_str, false);
- //oled_write_P(PSTR("FN "), false);
+ oled_write_P(PSTR("FN "), false);
+ oled_write(selectedkey_rec.keydesc, false);
break;
case 2:
oled_write_P(PSTR("LOWER"), false);
@@ -230,8 +227,8 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
oled_write_P(PSTR("Temp BASE"), false);
break;
case 1:
- sprintf(fn_str, "Temp FN %5s", selectedkey_rec.keydesc);
- oled_write(fn_str, false);
+ oled_write_P(PSTR("Temp FN "), false);
+ oled_write(selectedkey_rec.keydesc, false);
break;
case 2:
oled_write_P(PSTR("Temp LOWER"), false);
@@ -246,12 +243,11 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
led_t led_state = host_keyboard_led_state();
oled_set_cursor(8,0);
uint8_t wpm_count;
- char wpm_str[10];
wpm_count=get_current_wpm();
if (wpm_count > 020) { // how wpm when > 20
- sprintf(wpm_str, " WPM: %03d", wpm_count);
- oled_write(wpm_str, false);
+ oled_write_P(PSTR(" WPM: "), false);
+ oled_write(get_u8_str(wpm_count, ' '), false);
} else {
oled_write_P(PSTR(" JONAVIN "), false); // otherwise display keymap name
}
diff --git a/keyboards/mechwild/mercutio/keymaps/via/config.h b/keyboards/mechwild/mercutio/keymaps/via/config.h
index 235effacd7..b428d6e260 100644
--- a/keyboards/mechwild/mercutio/keymaps/via/config.h
+++ b/keyboards/mechwild/mercutio/keymaps/via/config.h
@@ -15,6 +15,3 @@
*/
#pragma once
-
-/* Define custom font */
-#define OLED_FONT_H "keyboards/mechwild/mercutio/lib/mercutiofont.c" \ No newline at end of file
diff --git a/keyboards/mechwild/mercutio/keymaps/via/keymap.c b/keyboards/mechwild/mercutio/keymaps/via/keymap.c
index 8f433292b5..f5066996c0 100755
--- a/keyboards/mechwild/mercutio/keymaps/via/keymap.c
+++ b/keyboards/mechwild/mercutio/keymaps/via/keymap.c
@@ -46,38 +46,11 @@ 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 )
};
-#ifdef ENCODER_ENABLE
-bool encoder_update_user(uint8_t index, bool clockwise) {
- switch (index) {
- case 0:
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- break;
- }
- return true;
-}
-#endif
-
-#ifdef OLED_ENABLE
-oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- return OLED_ROTATION_180; // flips the display 180 degrees if offhand
-}
-
-static void render_name(void) {
- static const char PROGMEM mercutio_name[] = {
- 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0x95, 0xB5, 0x96, 0xD5, 0xB6, 0xB6,
- 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(mercutio_name, false);
-}
-
-bool oled_task_user(void) {
- render_name();
- return false;
-}
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
#endif
diff --git a/keyboards/mechwild/mercutio/keymaps/via/rules.mk b/keyboards/mechwild/mercutio/keymaps/via/rules.mk
index 16d33cd89f..f1adcab005 100644
--- a/keyboards/mechwild/mercutio/keymaps/via/rules.mk
+++ b/keyboards/mechwild/mercutio/keymaps/via/rules.mk
@@ -1,2 +1,2 @@
VIA_ENABLE = yes
-
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/mercutio/mercutio.c b/keyboards/mechwild/mercutio/mercutio.c
index e4f4377f32..890bf869de 100755
--- a/keyboards/mechwild/mercutio/mercutio.c
+++ b/keyboards/mechwild/mercutio/mercutio.c
@@ -16,3 +16,44 @@
#include "mercutio.h"
+
+#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
+
+#ifdef OLED_ENABLE
+static const char PROGMEM mercutio_name[] = {
+ 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0x95, 0xB5, 0x96, 0xD5, 0xB6, 0xB6,
+ 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_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+}
+
+bool oled_task_kb(void) {
+ if(!oled_task_user()) {
+ return false;
+ }
+
+ oled_write_P(mercutio_name, false);
+ return true;
+}
+#endif
diff --git a/keyboards/mechwild/mokulua/config.h b/keyboards/mechwild/mokulua/config.h
deleted file mode 100644
index a424bc6648..0000000000
--- a/keyboards/mechwild/mokulua/config.h
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright 2022 Kyle McCreery (@kylemccreery)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6D77 // mw = "MechWild"
-#define PRODUCT_ID 0x170B
-#define DEVICE_VER 0x0103
-#define MANUFACTURER MechWild
-#define PRODUCT Mokulua
-
-/* Key matrix size */
-#define MATRIX_ROWS 12
-#define MATRIX_COLS 6
-
-/* Key matrix pins */
-#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, B3 }
-#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
-
-/* Encoder pins */
-#define ENCODERS_PAD_A { D2 }
-#define ENCODERS_PAD_B { B2 }
-
-/* Encoder resolution */
-#define ENCODER_RESOLUTION 4
-#define TAP_CODE_DELAY 10
-
-/* COL2ROW, ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-
-#define OLED_FONT_H "keyboards/mechwild/mokulua/glcdfont.c"
-
-/*
- * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
- */
-#define SOFT_SERIAL_PIN D3
-#define MASTER_LEFT
-//#define MASTER_RIGHT
-#define RGBLIGHT_SPLIT
-#define RGBLED_SPLIT { 8, 8 }
-#define SPLIT_LAYER_STATE_ENABLE
-#define SPLIT_LED_STATE_ENABLE
-#define SPLIT_MODS_ENABLE
-#define SPLIT_OLED_ENABLE
-
-/* RGB options */
-#define RGB_DI_PIN B6
-#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
-
-/* 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
-
-
-/* Bootmagic Lite key configuration */
-//#define BOOTMAGIC_LITE_ROW 0
-//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/mechwild/mokulua/info.json b/keyboards/mechwild/mokulua/info.json
deleted file mode 100644
index 0be62ecf80..0000000000
--- a/keyboards/mechwild/mokulua/info.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "keyboard_name": "Mokulua",
- "url": "https://mechwild.com",
- "maintainer": "kylemccreery",
- "layouts": {
- "LAYOUT": {
- "layout": [{"x":0.5, "y":0}, {"x":1.5, "y":0}, {"x":15.75, "y":0}, {"x":16.75, "y":0}, {"x":0.47, "y":1, "w":1.5}, {"x":1.97, "y":1}, {"x":15.5, "y":1}, {"x":16.5, "y":1, "w":1.5}, {"x":0.37, "y":2, "w":1.75}, {"x":2.12, "y":2}, {"x":15.85, "y":2}, {"x":16.85, "y":2, "w":1.75}, {"x":0.22, "y":3, "w":1.25}, {"x":1.47, "y":3}, {"x":2.47, "y":3}, {"x":9.43, "y":3}, {"x":15.5, "y":3}, {"x":16.5, "y":3}, {"x":17.5, "y":3, "w":1.25}, {"x":0.47, "y":4}, {"x":1.47, "y":4}, {"x":2.47, "y":4}, {"x":9.68, "y":4}, {"x":15.5, "y":4}, {"x":16.5, "y":4}, {"x":17.5, "y":4}, {"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":0.5, "y":2.25}, {"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":0.75, "y":3.25}, {"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":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.57, "y":4.25}, {"x":1, "y":5.25, "w":1.25}, {"x":2.25, "y":5.25, "w":1.5}, {"x":3.75, "y":5.25, "w":1.5}, {"x":5.32, "y":5.25}, {"x":-1.5, "y":2}, {"x":-0.5, "y":2}, {"x":0.5, "y":2}, {"x":1.5, "y":2}, {"x":2.5, "y":2}, {"x":-1.0, "y":3}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":-1.75, "y":4}, {"x":-0.75, "y":4}, {"x":0.25, "y":4}, {"x":1.25, "y":4}, {"x":2.25, "y":4}, {"x":-1.25, "y":5}, {"x":-0.25, "y":5}, {"x":0.75, "y":5}, {"x":1.75, "y":5}, {"x":-1.25, "y":6, "w":1.5}, {"x":0.25, "y":6, "w":1.5}, {"x":1.75, "y":6, "w":1.25}]
- }
- }
-}
diff --git a/keyboards/mechwild/mokulua/keymaps/default/keymap.c b/keyboards/mechwild/mokulua/keymaps/default/keymap.c
deleted file mode 100644
index f95663bb6b..0000000000
--- a/keyboards/mechwild/mokulua/keymaps/default/keymap.c
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2022 Kyle McCreery (@kylemccreery)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include QMK_KEYBOARD_H
-
-#define FN1_SPC LT(1, KC_SPC)
-#define FN2_SPC LT(2, KC_SPC)
-
-// 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_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_MINS, 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_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_SCLN, 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_MUTE, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, MO(2), FN1_SPC, FN2_SPC, RGB_RMOD, RGB_MOD, FN2_SPC, FN1_SPC, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
- ),
- [_FN1] = LAYOUT(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_EQL, KC_F7, KC_F8, KC_F9, KC_F10, _______, KC_DEL,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH, KC_PGUP, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
- ),
- [_FN2] = LAYOUT(
- _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
- [_FN3] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- )
-};
diff --git a/keyboards/mechwild/mokulua/keymaps/silly/keymap.c b/keyboards/mechwild/mokulua/keymaps/silly/keymap.c
deleted file mode 100644
index 9463f162c0..0000000000
--- a/keyboards/mechwild/mokulua/keymaps/silly/keymap.c
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright 2022 Kyle McCreery (@kylemccreery)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include QMK_KEYBOARD_H
-
-#define FN1_SPC LT(1, KC_SPC)
-#define FN2_SPC LT(2, KC_SPC)
-#define HSV_SILLY_PURPLE 180, 255, 255
-
-// Defines names for use in layer keycodes and the keymap
-enum layer_names {
- _BASE,
- _FN1,
- _FN2,
- _RS3
-};
-
-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_MINS, 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_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_SCLN, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
- KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, TG(_RS3), KC_MUTE, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, MO(2), FN1_SPC, FN2_SPC, RGB_RMOD, RGB_MOD, FN2_SPC, FN1_SPC, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
- ),
- [_FN1] = LAYOUT(
- KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_F7, KC_F8, KC_F9, KC_F10, _______, KC_DEL,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH, KC_PGUP, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
- ),
- [_FN2] = LAYOUT(
- _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
- [_RS3] = LAYOUT(
- KC_PAST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- KC_PSLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- KC_PPLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- KC_PMNS, _______, _______, _______, _______, _______, _______, TG(_RS3), _______, _______, _______, _______, _______, _______, _______, _______,
- KC_HOME, KC_END, KC_PGUP, KC_K, KC_L, KC_M, KC_PGDN, _______, KC_F1, KC_F2, KC_F3, _______, _______, _______
- )
-};
-
-#ifdef OLED_ENABLE
- static void render_logo(void) { // Render MechWild "MW" Logo
- static const char PROGMEM logo_1[] = {0x8A, 0x8B, 0x8C, 0x8D, 0x00};
- static const char PROGMEM logo_2[] = {0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x00};
- static const char PROGMEM logo_3[] = {0xCA, 0xCB, 0xCC, 0xCD, 0x00};
- static const char PROGMEM logo_4[] = {0x20, 0x8E, 0x8F, 0x90, 0x00};
- oled_set_cursor(0,0);
- oled_write_P(logo_1, false);
- oled_set_cursor(0,1);
- oled_write_P(logo_2, false);
- oled_set_cursor(0,2);
- oled_write_P(logo_3, false);
- oled_set_cursor(0,3);
- oled_write_P(logo_4, false);
- }
- bool oled_task_user(void) {
- render_logo();
- oled_set_cursor(0,6);
-
- oled_write_ln_P(PSTR("Layer"), false);
-
- switch (get_highest_layer(layer_state)) {
- case 0:
- oled_write_ln_P(PSTR("Base"), false);
- break;
- case 1:
- oled_write_ln_P(PSTR("FN 1"), false);
- break;
- case 2:
- oled_write_ln_P(PSTR("FN 2"), false);
- break;
- case 3:
- oled_write_ln_P(PSTR("RS3"), false);
- break;
- default:
- oled_write_ln_P(PSTR("Undef"), false);
- }
- oled_write_ln_P(PSTR(""), false);
- // Host Keyboard LED Status
- led_t led_state = host_keyboard_led_state();
- oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
- oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
- oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
- return false;
- }
-#endif
-
-#ifdef RGBLIGHT_ENABLE
- // Optional RGB Light Mapping Zones {LED Posiiton, Number of LEDs, Colour}
- const rgblight_segment_t PROGMEM _rgb_fn1[] = RGBLIGHT_LAYER_SEGMENTS(
- {4, 3, HSV_GREEN},
- {12, 3, HSV_GREEN}
- );
- // Light LEDs 9 & 10 in cyan when keyboard layer 1 is active
- const rgblight_segment_t PROGMEM _rgb_fn2[] = RGBLIGHT_LAYER_SEGMENTS(
- {4, 3, HSV_GREEN},
- {12, 3, HSV_GREEN}
- );
- const rgblight_segment_t PROGMEM _rgb_rs3[] = RGBLIGHT_LAYER_SEGMENTS(
- {0, 16, HSV_SILLY_PURPLE}
- );
- const rgblight_segment_t* const PROGMEM _rgb_layers[] = RGBLIGHT_LAYERS_LIST(
- _rgb_fn1,
- _rgb_fn2,
- _rgb_rs3
- );
- layer_state_t layer_state_set_user(layer_state_t state) {
- rgblight_set_layer_state(0, layer_state_cmp(state, _FN1));
- rgblight_set_layer_state(1, layer_state_cmp(state, _FN2));
- rgblight_set_layer_state(2, layer_state_cmp(state, _RS3));
- return state;
- }
-#endif // RGBLIGHT_ENABLE
-
-void keyboard_post_init_user(void) {
- // Enable the LED layers
- #ifdef RGBLIGHT_ENABLE
- rgblight_layers = _rgb_layers;
- #endif // RGBLIGHT_ENABLE
- } \ No newline at end of file
diff --git a/keyboards/mechwild/mokulua/keymaps/via/keymap.c b/keyboards/mechwild/mokulua/keymaps/via/keymap.c
deleted file mode 100644
index f95663bb6b..0000000000
--- a/keyboards/mechwild/mokulua/keymaps/via/keymap.c
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2022 Kyle McCreery (@kylemccreery)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include QMK_KEYBOARD_H
-
-#define FN1_SPC LT(1, KC_SPC)
-#define FN2_SPC LT(2, KC_SPC)
-
-// 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_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_MINS, 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_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_SCLN, 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_MUTE, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
- KC_LCTL, KC_LGUI, KC_LALT, MO(2), FN1_SPC, FN2_SPC, RGB_RMOD, RGB_MOD, FN2_SPC, FN1_SPC, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
- ),
- [_FN1] = LAYOUT(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_EQL, KC_F7, KC_F8, KC_F9, KC_F10, _______, KC_DEL,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH, KC_PGUP, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
- ),
- [_FN2] = LAYOUT(
- _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
- [_FN3] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- )
-};
diff --git a/keyboards/mechwild/mokulua/mirrored/config.h b/keyboards/mechwild/mokulua/mirrored/config.h
new file mode 100644
index 0000000000..3742bd1958
--- /dev/null
+++ b/keyboards/mechwild/mokulua/mirrored/config.h
@@ -0,0 +1,88 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* Key matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+/* Key matrix pins */
+#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, B3 }
+#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
+
+/* Encoder pins */
+#define ENCODERS_PAD_A { D2 }
+#define ENCODERS_PAD_B { B2 }
+
+/* Encoder resolution */
+#define ENCODER_RESOLUTION 4
+#define TAP_CODE_DELAY 10
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define OLED_FONT_H "keyboards/mechwild/mokulua/glcdfont.c"
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D3
+#define MASTER_LEFT
+//#define MASTER_RIGHT
+#define RGBLIGHT_SPLIT
+#define RGBLED_SPLIT { 8, 8 }
+#define SPLIT_LAYER_STATE_ENABLE
+#define SPLIT_LED_STATE_ENABLE
+#define SPLIT_MODS_ENABLE
+#define SPLIT_OLED_ENABLE
+
+/* RGB options */
+#define RGB_DI_PIN B6
+#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 */
+/*== choose RGB 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
+
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/mechwild/mokulua/mirrored/info.json b/keyboards/mechwild/mokulua/mirrored/info.json
new file mode 100644
index 0000000000..15ed63a858
--- /dev/null
+++ b/keyboards/mechwild/mokulua/mirrored/info.json
@@ -0,0 +1,93 @@
+{
+ "keyboard_name": "Mokulua Mirrored",
+ "manufacturer": "MechWild",
+ "url": "https://mechwild.com",
+ "maintainer": "kylemccreery",
+ "usb": {
+ "vid": "0x6D77",
+ "pid": "0x170C",
+ "device_version": "1.0.3"
+ },
+ "layouts": {
+ "LAYOUT_mirrored": {
+ "layout": [
+ {"label":"Esc", "x":0.62, "y":0},
+ {"label":"1!", "x":1.62, "y":0},
+ {"label":"2@", "x":2.62, "y":0},
+ {"label":"3#", "x":3.62, "y":0},
+ {"label":"4$", "x":4.62, "y":0},
+ {"label":"5%", "x":5.62, "y":0},
+ {"label":"6^", "x":6.62, "y":0},
+ {"label":"7&", "x":10.12, "y":0},
+ {"label":"8*", "x":11.12, "y":0},
+ {"label":"9(", "x":12.12, "y":0},
+ {"label":"0)", "x":13.12, "y":0},
+ {"label":"-_", "x":14.12, "y":0},
+ {"label":"Backspace", "x":15.12, "y":0},
+ {"label":"Backspace", "x":16.12, "y":0},
+
+ {"label":"Tab", "x":0.37, "y":1, "w":1.5},
+ {"label":"Q", "x":1.87, "y":1},
+ {"label":"W", "x":2.87, "y":1},
+ {"label":"E", "x":3.87, "y":1},
+ {"label":"R", "x":4.87, "y":1},
+ {"label":"T", "x":5.87, "y":1},
+ {"label":"Y", "x":6.87, "y":1},
+ {"label":"Y", "x":9.87, "y":1},
+ {"label":"U", "x":10.87, "y":1},
+ {"label":"I", "x":11.87, "y":1},
+ {"label":"O", "x":12.87, "y":1},
+ {"label":"P", "x":13.87, "y":1},
+ {"label":"]}", "x":14.87, "y":1},
+ {"label":"\\|", "x":15.87, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0.25, "y":2, "w":1.75},
+ {"label":"A", "x":2, "y":2},
+ {"label":"S", "x":3, "y":2},
+ {"label":"D", "x":4, "y":2},
+ {"label":"F", "x":5, "y":2},
+ {"label":"G", "x":6, "y":2},
+ {"label":"H", "x":7, "y":2},
+ {"label":";:", "x":9.75, "y":2},
+ {"label":"H", "x":10.75, "y":2},
+ {"label":"J", "x":11.75, "y":2},
+ {"label":"K", "x":12.75, "y":2},
+ {"label":"L", "x":13.75, "y":2},
+ {"label":"'\"", "x":14.75, "y":2},
+ {"label":"Enter", "x":15.75, "y":2, "w":1.75},
+
+ {"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":"Mute", "x":7.37, "y":3},
+ {"label":"Mute", "x":9.37, "y":3},
+ {"label":"B", "x":10.5, "y":3},
+ {"label":"N", "x":11.5, "y":3},
+ {"label":"M", "x":12.5, "y":3},
+ {"label":",<", "x":13.5, "y":3},
+ {"label":".>", "x":14.5, "y":3},
+ {"label":"\u2191", "x":15.5, "y":3},
+ {"label":"Shift", "x":16.5, "y":3, "w":1.25},
+
+ {"label":"Ctrl", "x":0.25, "y":4},
+ {"label":"GUI", "x":1.25, "y":4},
+ {"label":"Alt", "x":2.25, "y":4},
+ {"label":"Fn2", "x":3.5, "y":4, "w":1.25},
+ {"label":"Fn1/Space", "x":4.94, "y":4, "h":1.5},
+ {"label":"Fn2/Space", "x":5.94, "y":4, "h":1.5},
+ {"label":"RGB Mode -", "x":7.13, "y":4},
+ {"label":"RGB Mode +", "x":9.62, "y":4},
+ {"label":"Fn2/Space", "x":10.81, "y":4, "h":1.5},
+ {"label":"Fn1/Space", "x":11.81, "y":4, "h":1.5},
+ {"label":"Fn2", "x":13, "y":4, "w":1.25},
+ {"label":"\u2190", "x":14.5, "y":4},
+ {"label":"\u2193", "x":15.5, "y":4},
+ {"label":"\u2192", "x":16.5, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mechwild/mokulua/mirrored/keymaps/default/keymap.c b/keyboards/mechwild/mokulua/mirrored/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d83bcedfe7
--- /dev/null
+++ b/keyboards/mechwild/mokulua/mirrored/keymaps/default/keymap.c
@@ -0,0 +1,55 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#define FN1_SPC LT(1, KC_SPC)
+#define FN2_SPC LT(2, KC_SPC)
+
+// 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_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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC, KC_BSLS,
+ MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_SCLN, 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_MUTE, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(2), FN1_SPC, FN2_SPC, RGB_RMOD, RGB_MOD, FN2_SPC, FN1_SPC, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN1] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+ [_FN2] = LAYOUT(
+ _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_FN3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_PGDN, KC_PGUP) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif
diff --git a/keyboards/mechwild/mokulua/mirrored/keymaps/default/readme.md b/keyboards/mechwild/mokulua/mirrored/keymaps/default/readme.md
new file mode 100644
index 0000000000..727105dcba
--- /dev/null
+++ b/keyboards/mechwild/mokulua/mirrored/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Mokulua using a mirrored right-half
diff --git a/keyboards/mechwild/mokulua/mirrored/keymaps/default/rules.mk b/keyboards/mechwild/mokulua/mirrored/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/mechwild/mokulua/mirrored/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/mokulua/mirrored/keymaps/via/keymap.c b/keyboards/mechwild/mokulua/mirrored/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d83bcedfe7
--- /dev/null
+++ b/keyboards/mechwild/mokulua/mirrored/keymaps/via/keymap.c
@@ -0,0 +1,55 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#define FN1_SPC LT(1, KC_SPC)
+#define FN2_SPC LT(2, KC_SPC)
+
+// 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_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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_RBRC, KC_BSLS,
+ MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_SCLN, 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_MUTE, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(2), FN1_SPC, FN2_SPC, RGB_RMOD, RGB_MOD, FN2_SPC, FN1_SPC, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN1] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+ [_FN2] = LAYOUT(
+ _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_FN3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_PGDN, KC_PGUP) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif
diff --git a/keyboards/mechwild/mokulua/mirrored/keymaps/via/readme.md b/keyboards/mechwild/mokulua/mirrored/keymaps/via/readme.md
new file mode 100644
index 0000000000..37aca6eac7
--- /dev/null
+++ b/keyboards/mechwild/mokulua/mirrored/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA keymap for Mokulua using a mirrored right-half
diff --git a/keyboards/mechwild/mokulua/mirrored/keymaps/via/rules.mk b/keyboards/mechwild/mokulua/mirrored/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1189f4ad19
--- /dev/null
+++ b/keyboards/mechwild/mokulua/mirrored/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/mokulua/mirrored/mirrored.c b/keyboards/mechwild/mokulua/mirrored/mirrored.c
new file mode 100644
index 0000000000..6b5410642a
--- /dev/null
+++ b/keyboards/mechwild/mokulua/mirrored/mirrored.c
@@ -0,0 +1,82 @@
+// Copyright 2022 Kyle McCreery (@Kyle McCreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "mirrored.h"
+
+#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;
+ case 1:
+ if (clockwise) {
+ tap_code(KC_PGUP);
+ } else {
+ tap_code(KC_PGDN);
+ }
+ break;
+
+ }
+ return true;
+}
+#endif
+
+#ifdef OLED_ENABLE
+ oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ return OLED_ROTATION_270; // flips the display 270 degrees
+ }
+
+ static void render_logo(void) { // Render MechWild "MW" Logo
+ static const char PROGMEM logo_1[] = {0x8A, 0x8B, 0x8C, 0x8D, 0x00};
+ static const char PROGMEM logo_2[] = {0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x00};
+ static const char PROGMEM logo_3[] = {0xCA, 0xCB, 0xCC, 0xCD, 0x00};
+ static const char PROGMEM logo_4[] = {0x20, 0x8E, 0x8F, 0x90, 0x00};
+ oled_set_cursor(0,0);
+ oled_write_P(logo_1, false);
+ oled_set_cursor(0,1);
+ oled_write_P(logo_2, false);
+ oled_set_cursor(0,2);
+ oled_write_P(logo_3, false);
+ oled_set_cursor(0,3);
+ oled_write_P(logo_4, false);
+ }
+ bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ render_logo();
+ oled_set_cursor(0,6);
+
+ oled_write_ln_P(PSTR("Layer"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_ln_P(PSTR("Base"), false);
+ break;
+ case 1:
+ oled_write_ln_P(PSTR("FN 1"), false);
+ break;
+ case 2:
+ oled_write_ln_P(PSTR("FN 2"), false);
+ break;
+ case 3:
+ oled_write_ln_P(PSTR("FN 3"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("Undef"), false);
+ }
+ oled_write_ln_P(PSTR(""), false);
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+ return false;
+ }
+#endif
diff --git a/keyboards/mechwild/mokulua/mirrored/mirrored.h b/keyboards/mechwild/mokulua/mirrored/mirrored.h
new file mode 100644
index 0000000000..66df5cdd6b
--- /dev/null
+++ b/keyboards/mechwild/mokulua/mirrored/mirrored.h
@@ -0,0 +1,31 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+#define LAYOUT_mirrored( \
+ 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, L37, R30, R31, R32, R33, R34, R35, R36, R37, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+) { \
+ { 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 }, \
+ { L46, L36, L37, L26, L16, L06 }, \
+ { R06, R05, R04, R03, R02, R01 }, \
+ { R16, R15, R14, R13, R12, R11 }, \
+ { R26, R25, R24, R23, R22, R21 }, \
+ { R37, R36, R35, R34, R33, R32 }, \
+ { R46, R45, R44, R43, R42, R41 }, \
+ { R40, R31, R30, R20, R10, R00 } \
+}
+
+#define LAYOUT LAYOUT_mirrored \ No newline at end of file
diff --git a/keyboards/mechwild/mokulua/mirrored/rules.mk b/keyboards/mechwild/mokulua/mirrored/rules.mk
new file mode 100644
index 0000000000..5aae5c7c76
--- /dev/null
+++ b/keyboards/mechwild/mokulua/mirrored/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 # Enable encoder
+OLED_ENABLE = yes # Enable OLED Screen
+OLED_DRIVER = SSD1306 # Define OLED Driver
+SPLIT_KEYBOARD = yes # Define split functionality \ No newline at end of file
diff --git a/keyboards/mechwild/mokulua/mokulua.c b/keyboards/mechwild/mokulua/mokulua.c
deleted file mode 100644
index 57c800ef89..0000000000
--- a/keyboards/mechwild/mokulua/mokulua.c
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2022 Kyle McCreery (@Kyle McCreery)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include "mokulua.h"
-
-#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;
- case 1:
- if (clockwise) {
- tap_code(KC_PGUP);
- } else {
- tap_code(KC_PGDN);
- }
- break;
-
- }
- return true;
-}
-#endif
-
-#ifdef OLED_ENABLE
- oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
- return OLED_ROTATION_270; // flips the display 270 degrees
- }
-
- static void render_logo(void) { // Render MechWild "MW" Logo
- static const char PROGMEM logo_1[] = {0x8A, 0x8B, 0x8C, 0x8D, 0x00};
- static const char PROGMEM logo_2[] = {0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x00};
- static const char PROGMEM logo_3[] = {0xCA, 0xCB, 0xCC, 0xCD, 0x00};
- static const char PROGMEM logo_4[] = {0x20, 0x8E, 0x8F, 0x90, 0x00};
- oled_set_cursor(0,0);
- oled_write_P(logo_1, false);
- oled_set_cursor(0,1);
- oled_write_P(logo_2, false);
- oled_set_cursor(0,2);
- oled_write_P(logo_3, false);
- oled_set_cursor(0,3);
- oled_write_P(logo_4, false);
- }
- bool oled_task_kb(void) {
- if (!oled_task_user()) {
- return false;
- }
- render_logo();
- oled_set_cursor(0,6);
-
- oled_write_ln_P(PSTR("Layer"), false);
-
- switch (get_highest_layer(layer_state)) {
- case 0:
- oled_write_ln_P(PSTR("Base"), false);
- break;
- case 1:
- oled_write_ln_P(PSTR("FN 1"), false);
- break;
- case 2:
- oled_write_ln_P(PSTR("FN 2"), false);
- break;
- case 3:
- oled_write_ln_P(PSTR("FN 3"), false);
- break;
- default:
- oled_write_ln_P(PSTR("Undef"), false);
- }
- oled_write_ln_P(PSTR(""), false);
- // Host Keyboard LED Status
- led_t led_state = host_keyboard_led_state();
- oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
- oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
- oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
- return false;
- }
-#endif
diff --git a/keyboards/mechwild/mokulua/mokulua.h b/keyboards/mechwild/mokulua/mokulua.h
deleted file mode 100644
index 95ea1e3709..0000000000
--- a/keyboards/mechwild/mokulua/mokulua.h
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2022 Kyle McCreery (@kylemccreery)
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include "quantum.h"
-
-#define ___ KC_NO
-
-#define LAYOUT( \
- L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
- L10, L11, L12, L13, L14, L15, L16, 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, L37, R30, R31, R32, R33, R34, R35, R36, R37, \
- L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
-) { \
- { 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 }, \
- { L46, L36, L37, L26, L16, L06 }, \
- { R01, R02, R03, R04, R05, R06 }, \
- { R11, R12, R13, R14, R15, R16 }, \
- { R21, R22, R23, R24, R25, R26 }, \
- { R32, R33, R34, R35, R36, R37 }, \
- { R41, R42, R43, R44, R45, R46 }, \
- { R00, R20, R31, R30, R40, ___ } \
-}
diff --git a/keyboards/mechwild/mokulua/readme.md b/keyboards/mechwild/mokulua/readme.md
index a8f2b055df..24f01b10d4 100644
--- a/keyboards/mechwild/mokulua/readme.md
+++ b/keyboards/mechwild/mokulua/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/mechwild/mokulua/rules.mk b/keyboards/mechwild/mokulua/rules.mk
index 17eb654430..3a87a143e5 100644
--- a/keyboards/mechwild/mokulua/rules.mk
+++ b/keyboards/mechwild/mokulua/rules.mk
@@ -1,22 +1 @@
-# 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 # Enable encoder
-OLED_ENABLE = yes # Enable OLED Screen
-OLED_DRIVER = SSD1306 # Define OLED Driver
-SPLIT_KEYBOARD = yes # Define split functionality
+DEFAULT_FOLDER = mechwild/mokulua/standard \ No newline at end of file
diff --git a/keyboards/mechwild/mokulua/standard/config.h b/keyboards/mechwild/mokulua/standard/config.h
new file mode 100644
index 0000000000..21a6f314c3
--- /dev/null
+++ b/keyboards/mechwild/mokulua/standard/config.h
@@ -0,0 +1,125 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* Key matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 6
+
+/* Key matrix pins */
+#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, B3 }
+#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
+
+/* Encoder pins */
+#define ENCODERS_PAD_A { D2 }
+#define ENCODERS_PAD_B { B2 }
+
+/* Encoder resolution */
+#define ENCODER_RESOLUTION 4
+#define TAP_CODE_DELAY 10
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define OLED_FONT_H "keyboards/mechwild/mokulua/glcdfont.c"
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D3
+#define MASTER_LEFT
+//#define MASTER_RIGHT
+#define RGBLIGHT_SPLIT
+#define RGBLED_SPLIT { 8, 8 }
+#define SPLIT_LAYER_STATE_ENABLE
+#define SPLIT_LED_STATE_ENABLE
+#define SPLIT_MODS_ENABLE
+#define SPLIT_OLED_ENABLE
+
+/* RGB options */
+#define RGB_DI_PIN B6
+#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 */
+/*== choose RGB 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
+
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/mechwild/mokulua/standard/info.json b/keyboards/mechwild/mokulua/standard/info.json
new file mode 100644
index 0000000000..74bcd0b16f
--- /dev/null
+++ b/keyboards/mechwild/mokulua/standard/info.json
@@ -0,0 +1,92 @@
+{
+ "keyboard_name": "Mokulua Standard",
+ "manufacturer": "MechWild",
+ "url": "https://mechwild.com",
+ "maintainer": "kylemccreery",
+ "usb": {
+ "vid": "0x6D77",
+ "pid": "0x170B",
+ "device_version": "1.0.3"
+ },
+ "layouts": {
+ "LAYOUT_standard": {
+ "layout": [
+ {"label":"Esc", "x":0.62, "y":0},
+ {"label":"1!", "x":1.62, "y":0},
+ {"label":"2@", "x":2.62, "y":0},
+ {"label":"3#", "x":3.62, "y":0},
+ {"label":"4$", "x":4.62, "y":0},
+ {"label":"5%", "x":5.62, "y":0},
+ {"label":"6^", "x":6.62, "y":0},
+ {"label":"7&", "x":9.62, "y":0},
+ {"label":"8*", "x":10.62, "y":0},
+ {"label":"9(", "x":11.62, "y":0},
+ {"label":"0)", "x":12.62, "y":0},
+ {"label":"-_", "x":13.62, "y":0},
+ {"label":"Backspace", "x":14.62, "y":0},
+ {"label":"Backspace", "x":15.62, "y":0},
+
+ {"label":"Tab", "x":0.37, "y":1, "w":1.5},
+ {"label":"Q", "x":1.87, "y":1},
+ {"label":"W", "x":2.87, "y":1},
+ {"label":"E", "x":3.87, "y":1},
+ {"label":"R", "x":4.87, "y":1},
+ {"label":"T", "x":5.87, "y":1},
+ {"label":"Y", "x":6.87, "y":1},
+ {"label":"U", "x":10.37, "y":1},
+ {"label":"I", "x":11.37, "y":1},
+ {"label":"O", "x":12.37, "y":1},
+ {"label":"P", "x":13.37, "y":1},
+ {"label":"]}", "x":14.37, "y":1},
+ {"label":"\\|", "x":15.37, "y":1, "w":1.5},
+
+ {"label":"Caps Lock", "x":0.25, "y":2, "w":1.75},
+ {"label":"A", "x":2, "y":2},
+ {"label":"S", "x":3, "y":2},
+ {"label":"D", "x":4, "y":2},
+ {"label":"F", "x":5, "y":2},
+ {"label":"G", "x":6, "y":2},
+ {"label":"H", "x":7, "y":2},
+ {"label":";:", "x":9.75, "y":2},
+ {"label":"H", "x":10.75, "y":2},
+ {"label":"J", "x":11.75, "y":2},
+ {"label":"K", "x":12.75, "y":2},
+ {"label":"L", "x":13.75, "y":2},
+ {"label":"'\"", "x":14.75, "y":2},
+ {"label":"Enter", "x":15.75, "y":2, "w":1.75},
+
+ {"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":"Mute", "x":7.37, "y":3},
+ {"label":"Mute", "x":9.37, "y":3},
+ {"label":"B", "x":10.5, "y":3},
+ {"label":"N", "x":11.5, "y":3},
+ {"label":"M", "x":12.5, "y":3},
+ {"label":",<", "x":13.5, "y":3},
+ {"label":".>", "x":14.5, "y":3},
+ {"label":"\u2191", "x":15.5, "y":3},
+ {"label":"Shift", "x":16.5, "y":3, "w":1.25},
+
+ {"label":"Ctrl", "x":0.25, "y":4},
+ {"label":"GUI", "x":1.25, "y":4},
+ {"label":"Alt", "x":2.25, "y":4},
+ {"label":"Fn2", "x":3.5, "y":4, "w":1.25},
+ {"label":"Fn1/Space", "x":4.94, "y":4, "h":1.5},
+ {"label":"Fn2/Space", "x":5.94, "y":4, "h":1.5},
+ {"label":"RGB Mode -", "x":7.13, "y":4},
+ {"label":"RGB Mode +", "x":9.62, "y":4},
+ {"label":"Fn2/Space", "x":10.81, "y":4, "h":1.5},
+ {"label":"Fn1/Space", "x":11.81, "y":4, "h":1.5},
+ {"label":"Fn2", "x":13, "y":4, "w":1.25},
+ {"label":"\u2190", "x":14.5, "y":4},
+ {"label":"\u2193", "x":15.5, "y":4},
+ {"label":"\u2192", "x":16.5, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mechwild/mokulua/standard/keymaps/default/keymap.c b/keyboards/mechwild/mokulua/standard/keymaps/default/keymap.c
new file mode 100644
index 0000000000..bb438fe1bf
--- /dev/null
+++ b/keyboards/mechwild/mokulua/standard/keymaps/default/keymap.c
@@ -0,0 +1,55 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#define FN1_SPC LT(1, KC_SPC)
+#define FN2_SPC LT(2, KC_SPC)
+
+// 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_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_MINS, 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_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_SCLN, 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_MUTE, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(2), FN1_SPC, FN2_SPC, RGB_RMOD, RGB_MOD, FN2_SPC, FN1_SPC, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN1] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_EQL, KC_F7, KC_F8, KC_F9, KC_F10, _______, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+ [_FN2] = LAYOUT(
+ _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_FN3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_PGDN, KC_PGUP) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif
diff --git a/keyboards/mechwild/mokulua/keymaps/default/readme.md b/keyboards/mechwild/mokulua/standard/keymaps/default/readme.md
index 81569df142..81569df142 100644
--- a/keyboards/mechwild/mokulua/keymaps/default/readme.md
+++ b/keyboards/mechwild/mokulua/standard/keymaps/default/readme.md
diff --git a/keyboards/mechwild/mokulua/standard/keymaps/default/rules.mk b/keyboards/mechwild/mokulua/standard/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/mechwild/mokulua/standard/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/mokulua/keymaps/silly/config.h b/keyboards/mechwild/mokulua/standard/keymaps/silly/config.h
index 1e0e3ac5eb..1e0e3ac5eb 100644
--- a/keyboards/mechwild/mokulua/keymaps/silly/config.h
+++ b/keyboards/mechwild/mokulua/standard/keymaps/silly/config.h
diff --git a/keyboards/mechwild/mokulua/standard/keymaps/silly/keymap.c b/keyboards/mechwild/mokulua/standard/keymaps/silly/keymap.c
new file mode 100644
index 0000000000..61df3e000f
--- /dev/null
+++ b/keyboards/mechwild/mokulua/standard/keymaps/silly/keymap.c
@@ -0,0 +1,128 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#define FN1_SPC LT(1, KC_SPC)
+#define FN2_SPC LT(2, KC_SPC)
+#define HSV_SILLY_PURPLE 180, 255, 255
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _FN1,
+ _FN2,
+ _RS3
+};
+
+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_MINS, 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_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_SCLN, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT,
+ KC_LSFT, _______, KC_Z, KC_X, KC_C, KC_V, KC_B, TG(_RS3), KC_MUTE, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(2), FN1_SPC, FN2_SPC, RGB_RMOD, RGB_MOD, FN2_SPC, FN1_SPC, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN1] = LAYOUT(
+ KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_F7, KC_F8, KC_F9, KC_F10, _______, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+ [_FN2] = LAYOUT(
+ _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_RS3] = LAYOUT(
+ KC_PAST, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_PSLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_PPLS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_PMNS, _______, _______, _______, _______, _______, _______, TG(_RS3), _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_HOME, KC_END, KC_PGUP, KC_K, KC_L, KC_M, KC_PGDN, _______, KC_F1, KC_F2, KC_F3, _______, _______, _______
+ )
+};
+
+#ifdef OLED_ENABLE
+ static void render_logo(void) { // Render MechWild "MW" Logo
+ static const char PROGMEM logo_1[] = {0x8A, 0x8B, 0x8C, 0x8D, 0x00};
+ static const char PROGMEM logo_2[] = {0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x00};
+ static const char PROGMEM logo_3[] = {0xCA, 0xCB, 0xCC, 0xCD, 0x00};
+ static const char PROGMEM logo_4[] = {0x20, 0x8E, 0x8F, 0x90, 0x00};
+ oled_set_cursor(0,0);
+ oled_write_P(logo_1, false);
+ oled_set_cursor(0,1);
+ oled_write_P(logo_2, false);
+ oled_set_cursor(0,2);
+ oled_write_P(logo_3, false);
+ oled_set_cursor(0,3);
+ oled_write_P(logo_4, false);
+ }
+ bool oled_task_user(void) {
+ render_logo();
+ oled_set_cursor(0,6);
+
+ oled_write_ln_P(PSTR("Layer"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_ln_P(PSTR("Base"), false);
+ break;
+ case 1:
+ oled_write_ln_P(PSTR("FN 1"), false);
+ break;
+ case 2:
+ oled_write_ln_P(PSTR("FN 2"), false);
+ break;
+ case 3:
+ oled_write_ln_P(PSTR("RS3"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("Undef"), false);
+ }
+ oled_write_ln_P(PSTR(""), false);
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+ return false;
+ }
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+ // Optional RGB Light Mapping Zones {LED Posiiton, Number of LEDs, Colour}
+ const rgblight_segment_t PROGMEM _rgb_fn1[] = RGBLIGHT_LAYER_SEGMENTS(
+ {4, 3, HSV_GREEN},
+ {12, 3, HSV_GREEN}
+ );
+ // Light LEDs 9 & 10 in cyan when keyboard layer 1 is active
+ const rgblight_segment_t PROGMEM _rgb_fn2[] = RGBLIGHT_LAYER_SEGMENTS(
+ {4, 3, HSV_GREEN},
+ {12, 3, HSV_GREEN}
+ );
+ const rgblight_segment_t PROGMEM _rgb_rs3[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 16, HSV_SILLY_PURPLE}
+ );
+ const rgblight_segment_t* const PROGMEM _rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ _rgb_fn1,
+ _rgb_fn2,
+ _rgb_rs3
+ );
+ layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(0, layer_state_cmp(state, _FN1));
+ rgblight_set_layer_state(1, layer_state_cmp(state, _FN2));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RS3));
+ return state;
+ }
+#endif // RGBLIGHT_ENABLE
+
+void keyboard_post_init_user(void) {
+ // Enable the LED layers
+ #ifdef RGBLIGHT_ENABLE
+ rgblight_layers = _rgb_layers;
+ #endif // RGBLIGHT_ENABLE
+ } \ No newline at end of file
diff --git a/keyboards/mechwild/mokulua/keymaps/silly/readme.md b/keyboards/mechwild/mokulua/standard/keymaps/silly/readme.md
index 4659a3aaeb..4659a3aaeb 100644
--- a/keyboards/mechwild/mokulua/keymaps/silly/readme.md
+++ b/keyboards/mechwild/mokulua/standard/keymaps/silly/readme.md
diff --git a/keyboards/mechwild/mokulua/standard/keymaps/silly/rules.mk b/keyboards/mechwild/mokulua/standard/keymaps/silly/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/mechwild/mokulua/standard/keymaps/silly/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/mechwild/mokulua/standard/keymaps/via/keymap.c b/keyboards/mechwild/mokulua/standard/keymaps/via/keymap.c
new file mode 100644
index 0000000000..bb438fe1bf
--- /dev/null
+++ b/keyboards/mechwild/mokulua/standard/keymaps/via/keymap.c
@@ -0,0 +1,55 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#define FN1_SPC LT(1, KC_SPC)
+#define FN2_SPC LT(2, KC_SPC)
+
+// 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_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_MINS, 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_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_SCLN, 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_MUTE, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(2), FN1_SPC, FN2_SPC, RGB_RMOD, RGB_MOD, FN2_SPC, FN1_SPC, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FN1] = LAYOUT(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_EQL, KC_F7, KC_F8, KC_F9, KC_F10, _______, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
+ ),
+ [_FN2] = LAYOUT(
+ _______, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_FN3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_PGDN, KC_PGUP) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif
diff --git a/keyboards/mechwild/mokulua/keymaps/via/readme.md b/keyboards/mechwild/mokulua/standard/keymaps/via/readme.md
index 4f47e50e88..4f47e50e88 100644
--- a/keyboards/mechwild/mokulua/keymaps/via/readme.md
+++ b/keyboards/mechwild/mokulua/standard/keymaps/via/readme.md
diff --git a/keyboards/mechwild/mokulua/standard/keymaps/via/rules.mk b/keyboards/mechwild/mokulua/standard/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1189f4ad19
--- /dev/null
+++ b/keyboards/mechwild/mokulua/standard/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/mokulua/standard/rules.mk b/keyboards/mechwild/mokulua/standard/rules.mk
new file mode 100644
index 0000000000..5aae5c7c76
--- /dev/null
+++ b/keyboards/mechwild/mokulua/standard/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 # Enable encoder
+OLED_ENABLE = yes # Enable OLED Screen
+OLED_DRIVER = SSD1306 # Define OLED Driver
+SPLIT_KEYBOARD = yes # Define split functionality \ No newline at end of file
diff --git a/keyboards/mechwild/mokulua/standard/standard.c b/keyboards/mechwild/mokulua/standard/standard.c
new file mode 100644
index 0000000000..4bccb70e3f
--- /dev/null
+++ b/keyboards/mechwild/mokulua/standard/standard.c
@@ -0,0 +1,82 @@
+// Copyright 2022 Kyle McCreery (@Kyle McCreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "standard.h"
+
+#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;
+ case 1:
+ if (clockwise) {
+ tap_code(KC_PGUP);
+ } else {
+ tap_code(KC_PGDN);
+ }
+ break;
+
+ }
+ return true;
+}
+#endif
+
+#ifdef OLED_ENABLE
+ oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ return OLED_ROTATION_270; // flips the display 270 degrees
+ }
+
+ static void render_logo(void) { // Render MechWild "MW" Logo
+ static const char PROGMEM logo_1[] = {0x8A, 0x8B, 0x8C, 0x8D, 0x00};
+ static const char PROGMEM logo_2[] = {0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x00};
+ static const char PROGMEM logo_3[] = {0xCA, 0xCB, 0xCC, 0xCD, 0x00};
+ static const char PROGMEM logo_4[] = {0x20, 0x8E, 0x8F, 0x90, 0x00};
+ oled_set_cursor(0,0);
+ oled_write_P(logo_1, false);
+ oled_set_cursor(0,1);
+ oled_write_P(logo_2, false);
+ oled_set_cursor(0,2);
+ oled_write_P(logo_3, false);
+ oled_set_cursor(0,3);
+ oled_write_P(logo_4, false);
+ }
+ bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ render_logo();
+ oled_set_cursor(0,6);
+
+ oled_write_ln_P(PSTR("Layer"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_ln_P(PSTR("Base"), false);
+ break;
+ case 1:
+ oled_write_ln_P(PSTR("FN 1"), false);
+ break;
+ case 2:
+ oled_write_ln_P(PSTR("FN 2"), false);
+ break;
+ case 3:
+ oled_write_ln_P(PSTR("FN 3"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("Undef"), false);
+ }
+ oled_write_ln_P(PSTR(""), false);
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+ return false;
+ }
+#endif
diff --git a/keyboards/mechwild/mokulua/standard/standard.h b/keyboards/mechwild/mokulua/standard/standard.h
new file mode 100644
index 0000000000..0484340e8d
--- /dev/null
+++ b/keyboards/mechwild/mokulua/standard/standard.h
@@ -0,0 +1,31 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+#define ___ KC_NO
+
+#define LAYOUT_standard( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, \
+ L10, L11, L12, L13, L14, L15, L16, 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, L37, R30, R31, R32, R33, R34, R35, R36, R37, \
+ L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46 \
+) { \
+ { 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 }, \
+ { L46, L36, L37, L26, L16, L06 }, \
+ { R01, R02, R03, R04, R05, R06 }, \
+ { R11, R12, R13, R14, R15, R16 }, \
+ { R21, R22, R23, R24, R25, R26 }, \
+ { R32, R33, R34, R35, R36, R37 }, \
+ { R41, R42, R43, R44, R45, R46 }, \
+ { R00, R20, R31, R30, R40, ___ } \
+}
+
+#define LAYOUT LAYOUT_standard
diff --git a/keyboards/mechwild/murphpad/config.h b/keyboards/mechwild/murphpad/config.h
index 3995546e8e..b52810b424 100644
--- a/keyboards/mechwild/murphpad/config.h
+++ b/keyboards/mechwild/murphpad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6D77 // mw = "MechWild"
-#define PRODUCT_ID 0x1705
-#define DEVICE_VER 0x0301
-#define MANUFACTURER MechWild
-#define PRODUCT MurphPad
-
/* Key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 5
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Key matrix pins */
#define MATRIX_ROW_PINS { F5, B2, B3, B1, F7, F6 }
#define MATRIX_COL_PINS { B5, D7, C6, D4, B6 }
-#define UNUSED_PINS
/* Encoder pins */
#define ENCODERS_PAD_A { E6, D2 }
diff --git a/keyboards/mechwild/murphpad/info.json b/keyboards/mechwild/murphpad/info.json
index 42e01d2ca4..ae4f24f9fa 100644
--- a/keyboards/mechwild/murphpad/info.json
+++ b/keyboards/mechwild/murphpad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MechWild MurphPad",
+ "keyboard_name": "MurphPad",
+ "manufacturer": "MechWild",
"url": "mechwild.com",
"maintainer": "Kyle McCreery",
+ "usb": {
+ "vid": "0x6D77",
+ "pid": "0x1705",
+ "device_version": "3.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mechwild/murphpad/keymaps/default/keymap.c b/keyboards/mechwild/murphpad/keymaps/default/keymap.c
index fe46e8ce5e..b818ed4eb2 100644
--- a/keyboards/mechwild/murphpad/keymaps/default/keymap.c
+++ b/keyboards/mechwild/murphpad/keymaps/default/keymap.c
@@ -18,10 +18,10 @@
// Defines names for use in layer keycodes and the keymap
enum layer_names {
- _BASE,
- _FN1,
- _FN2,
- _FN3
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
};
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
KC_F1, KC_F2, KC_F3, KC_F4,
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_MUTE, KC_P4, KC_P5, KC_P6, _______,
MO(_FN1), KC_P1, KC_P2, KC_P3, KC_PENT,
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______
),
- [_FN2] = LAYOUT(
+ [_FN2] = LAYOUT(
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______,
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______
),
- [_FN3] = LAYOUT(
+ [_FN3] = LAYOUT(
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______,
@@ -73,76 +73,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-#ifdef ENCODER_ENABLE
-bool encoder_update_user(uint8_t index, bool clockwise) {
- switch (index) {
- case 0:
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- break;
- case 1:
- if (clockwise) {
- tap_code(KC_BRIU);
- } else {
- tap_code(KC_BRID);
- }
- break;
- }
- return true;
-}
-#endif
-
-#ifdef OLED_ENABLE
- oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- return OLED_ROTATION_270; // flips the display 270 degrees
- }
-
- static void render_logo(void) { // Render MechWild "MW" Logo
- static const char PROGMEM logo_1[] = {0x8A, 0x8B, 0x8C, 0x8D, 0x00};
- static const char PROGMEM logo_2[] = {0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x00};
- static const char PROGMEM logo_3[] = {0xCA, 0xCB, 0xCC, 0xCD, 0x00};
- static const char PROGMEM logo_4[] = {0x20, 0x8E, 0x8F, 0x90, 0x00};
- oled_set_cursor(0,0);
- oled_write_P(logo_1, false);
- oled_set_cursor(0,1);
- oled_write_P(logo_2, false);
- oled_set_cursor(0,2);
- oled_write_P(logo_3, false);
- oled_set_cursor(0,3);
- oled_write_P(logo_4, false);
- }
-
- bool oled_task_user(void) {
- render_logo();
- oled_set_cursor(0,6);
-
- oled_write_ln_P(PSTR("Layer"), false);
-
- switch (get_highest_layer(layer_state)) {
- case _BASE:
- oled_write_ln_P(PSTR("Base"), false);
- break;
- case _FN1:
- oled_write_ln_P(PSTR("FN 1"), false);
- break;
- case _FN2:
- oled_write_ln_P(PSTR("FN 2"), false);
- break;
- case _FN3:
- oled_write_ln_P(PSTR("FN 3"), false);
- break;
- default:
- oled_write_ln_P(PSTR("Undef"), false);
- }
- oled_write_ln_P(PSTR(""), false);
- // Host Keyboard LED Status
- led_t led_state = host_keyboard_led_state();
- oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
- oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
- oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
- return false;
- }
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_BRID, KC_BRIU) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
#endif
diff --git a/keyboards/mechwild/murphpad/keymaps/default/rules.mk b/keyboards/mechwild/murphpad/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/mechwild/murphpad/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c b/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c
index 043eeb992b..88c017cbff 100644
--- a/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c
+++ b/keyboards/mechwild/murphpad/keymaps/jonavin/keymap.c
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______
),
[_FN2] = LAYOUT_landscape(
- _______, _______, RESET,
+ _______, _______, QK_BOOT,
_______, _______, KC_MPLY, KC_MPRV, KC_MNXT, _______,
_______, _______, _______, _______, _______, _______,
@@ -107,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
TT(_FN3), TT(_FN4), TT(_RGB)
),
[_FN1] = LAYOUT(
- _______, _______, _______, RESET,
+ _______, _______, _______, QK_BOOT,
KC_CALC, _______, _______, _______,
_______, _______, _______, _______,
ENCFUNC, KC_TAB, _______, _______, _______,
@@ -120,7 +120,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______,
_______, _______, KC_MPLY, KC_MPRV,
_______, _______, _______, KC_MNXT,
- RESET, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
_______, _______, _______, _______, _______,
@@ -175,7 +175,7 @@ static const keycodedescType PROGMEM keyselection[] = {
{"Break", KC_PAUS},
{"C-A-D", KC_CAD}, // Ctrl-Alt-Del
{"AltF4", KC_AF4},
- {"RESET", RESET}, // firmware flash mode
+ {"RESET", QK_BOOT}, // firmware flash mode
};
#define MAX_KEYSELECTION sizeof(keyselection)/sizeof(keyselection[0])
@@ -200,7 +200,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case ENCFUNC:
if (record->event.pressed) {
- selectedkey_rec.keycode == RESET ? reset_keyboard() : tap_code16(selectedkey_rec.keycode); // handle RESET code
+ selectedkey_rec.keycode == QK_BOOT ? reset_keyboard() : tap_code16(selectedkey_rec.keycode); // handle QK_BOOT code
} else {
// when keycode is released
}
@@ -274,7 +274,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
break;
}
}
- return true;
+ return false;
}
#endif
@@ -296,6 +296,10 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
}
#ifdef LANDSCAPE_MODE
+ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_0; // do not flip the display
+ }
+
bool oled_task_user(void) {
render_logo();
@@ -365,10 +369,6 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
// regular mode
#ifndef LANDSCAPE_MODE
- oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- return OLED_ROTATION_270; // flips the display 270 degrees
- }
-
bool oled_task_user(void) {
render_logo();
oled_set_cursor(0,5);
diff --git a/keyboards/mechwild/murphpad/keymaps/via/keymap.c b/keyboards/mechwild/murphpad/keymaps/via/keymap.c
index 4f4f6d571a..8117a0fd6a 100644
--- a/keyboards/mechwild/murphpad/keymaps/via/keymap.c
+++ b/keyboards/mechwild/murphpad/keymaps/via/keymap.c
@@ -16,24 +16,26 @@
#include QMK_KEYBOARD_H
// Defines names for use in layer keycodes and the keymap
+
enum layer_names {
- _BASE,
- _FN1,
- _FN2,
- _FN3
+ _BASE,
+ _FN1,
+ _FN2,
+ _FN3
};
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
KC_F1, KC_F2, KC_F3, KC_F4,
- KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9, KC_PPLS,
KC_MUTE, KC_P4, KC_P5, KC_P6, _______,
MO(_FN1), KC_P1, KC_P2, KC_P3, KC_PENT,
KC_BSPC, KC_P0, _______, KC_PDOT, _______,
- KC_F5, KC_F6, KC_F7
+ KC_F5, KC_F6, KC_F7
),
[_FN1] = LAYOUT(
@@ -58,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______
),
- [_FN3] = LAYOUT(
+ [_FN3] = LAYOUT(
_______, _______, _______, _______,
_______, _______, _______, _______,
_______, _______, _______, _______,
@@ -71,76 +73,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-#ifdef ENCODER_ENABLE
-bool encoder_update_user(uint8_t index, bool clockwise) {
- switch (index) {
- case 0:
- if (clockwise) {
- tap_code(KC_VOLU);
- } else {
- tap_code(KC_VOLD);
- }
- break;
- case 1:
- if (clockwise) {
- tap_code(KC_BRIU);
- } else {
- tap_code(KC_BRID);
- }
- break;
- }
- return true;
-}
-#endif
-
-#ifdef OLED_ENABLE
- oled_rotation_t oled_init_user(oled_rotation_t rotation) {
- return OLED_ROTATION_270; // flips the display 270 degrees
- }
-
- static void render_logo(void) { // Render MechWild "MW" Logo
- static const char PROGMEM logo_1[] = {0x8A, 0x8B, 0x8C, 0x8D, 0x00};
- static const char PROGMEM logo_2[] = {0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0x00};
- static const char PROGMEM logo_3[] = {0xCA, 0xCB, 0xCC, 0xCD, 0x00};
- static const char PROGMEM logo_4[] = {0x20, 0x8E, 0x8F, 0x90, 0x00};
- oled_set_cursor(0,0);
- oled_write_P(logo_1, false);
- oled_set_cursor(0,1);
- oled_write_P(logo_2, false);
- oled_set_cursor(0,2);
- oled_write_P(logo_3, false);
- oled_set_cursor(0,3);
- oled_write_P(logo_4, false);
- }
-
- bool oled_task_user(void) {
- render_logo();
- oled_set_cursor(0,6);
-
- oled_write_ln_P(PSTR("Layer"), false);
-
- switch (get_highest_layer(layer_state)) {
- case _BASE:
- oled_write_ln_P(PSTR("Base"), false);
- break;
- case _FN1:
- oled_write_ln_P(PSTR("FN 1"), false);
- break;
- case _FN2:
- oled_write_ln_P(PSTR("FN 2"), false);
- break;
- case _FN3:
- oled_write_ln_P(PSTR("FN 3"), false);
- break;
- default:
- oled_write_ln_P(PSTR("Undef"), false);
- }
- oled_write_ln_P(PSTR(""), false);
- // Host Keyboard LED Status
- led_t led_state = host_keyboard_led_state();
- oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
- oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
- oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
- return false;
- }
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_BRID, KC_BRIU) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
#endif
diff --git a/keyboards/mechwild/murphpad/keymaps/via/rules.mk b/keyboards/mechwild/murphpad/keymaps/via/rules.mk
index 36b7ba9cbc..1189f4ad19 100644
--- a/keyboards/mechwild/murphpad/keymaps/via/rules.mk
+++ b/keyboards/mechwild/murphpad/keymaps/via/rules.mk
@@ -1,2 +1,3 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/murphpad/murphpad.c b/keyboards/mechwild/murphpad/murphpad.c
index a39f1bfc7e..ba5183f2c3 100644
--- a/keyboards/mechwild/murphpad/murphpad.c
+++ b/keyboards/mechwild/murphpad/murphpad.c
@@ -15,3 +15,79 @@
*/
#include "murphpad.h"
+
+#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;
+ case 1:
+ if (clockwise) {
+ tap_code(KC_BRIU);
+ } else {
+ tap_code(KC_BRID);
+ }
+ break;
+ }
+ return true;
+}
+#endif
+
+#ifdef OLED_ENABLE
+static const char PROGMEM mw_logo[] = {
+ 0x8A, 0x8B, 0x8C, 0x8D, '\r',
+ 0xAA, 0xAB, 0xAC, 0xAD, 0xAE,
+ 0xCA, 0xCB, 0xCC, 0xCD, '\r',
+ 0x20, 0x8E, 0x8F, 0x90, 0x00};
+
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ return OLED_ROTATION_270; // flips the display 270 degrees
+}
+
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+
+ oled_write_P(mw_logo, false); // Render MechWild "MW" Logo
+ oled_set_cursor(0,6);
+
+ oled_write_ln_P(PSTR("Layer"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_ln_P(PSTR("Base"), false);
+ break;
+ case 1:
+ oled_write_ln_P(PSTR("FN 1"), false);
+ break;
+ case 2:
+ oled_write_ln_P(PSTR("FN 2"), false);
+ break;
+ case 3:
+ oled_write_ln_P(PSTR("FN 3"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("Undef"), false);
+ }
+
+ oled_write_ln_P(PSTR(""), false);
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_ln_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
+ oled_write_ln_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
+ oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
+
+ return true;
+}
+#endif
diff --git a/keyboards/mechwild/obe/config.h b/keyboards/mechwild/obe/config.h
index 59702791b0..1fef5fe001 100644
--- a/keyboards/mechwild/obe/config.h
+++ b/keyboards/mechwild/obe/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6D77 // mw = "MechWild"
-#define PRODUCT_ID 0x1707
-#define DEVICE_VER 0x0201
-#define MANUFACTURER MechWild
-#define PRODUCT OrangeBoyErgo
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { A8, B15, B14, B13, B12, A15, B3 }
#define MATRIX_COL_PINS { B10, B1, B0, A7, A6, A5, A4, A3, A2, A1 }
-#define UNUSED_PINS
/* encoder pins */
#define ENCODERS_PAD_A { B5 }
diff --git a/keyboards/mechwild/obe/f401/eeprom/rules.mk b/keyboards/mechwild/obe/f401/eeprom/rules.mk
index c2c0bbd5d6..4707020e58 100644
--- a/keyboards/mechwild/obe/f401/eeprom/rules.mk
+++ b/keyboards/mechwild/obe/f401/eeprom/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/mechwild/obe/f401/rules.mk b/keyboards/mechwild/obe/f401/rules.mk
index f1304648f0..1b21bbaf77 100644
--- a/keyboards/mechwild/obe/f401/rules.mk
+++ b/keyboards/mechwild/obe/f401/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/mechwild/obe/f411/eeprom/rules.mk b/keyboards/mechwild/obe/f411/eeprom/rules.mk
index b823aa31cc..3d2f9bcf05 100644
--- a/keyboards/mechwild/obe/f411/eeprom/rules.mk
+++ b/keyboards/mechwild/obe/f411/eeprom/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/mechwild/obe/f411/rules.mk b/keyboards/mechwild/obe/f411/rules.mk
index b32a8b7f5b..c25a64f4b3 100644
--- a/keyboards/mechwild/obe/f411/rules.mk
+++ b/keyboards/mechwild/obe/f411/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/mechwild/obe/info.json b/keyboards/mechwild/obe/info.json
index c03b735df6..fbae09e15c 100644
--- a/keyboards/mechwild/obe/info.json
+++ b/keyboards/mechwild/obe/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MechWild OBE",
+ "keyboard_name": "OrangeBoyErgo",
+ "manufacturer": "MechWild",
"url": "mechwild.com",
"maintainer": "Kyle McCreery",
+ "usb": {
+ "vid": "0x6D77",
+ "pid": "0x1707",
+ "device_version": "2.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mechwild/obe/keymaps/default/keymap.c b/keyboards/mechwild/obe/keymaps/default/keymap.c
index fd91890ae0..59f163cc9d 100644
--- a/keyboards/mechwild/obe/keymaps/default/keymap.c
+++ b/keyboards/mechwild/obe/keymaps/default/keymap.c
@@ -13,15 +13,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/>.
*/
-
+
#include QMK_KEYBOARD_H
// Defines names for use in layer keycodes and the keymap
enum layer_names {
_BASE,
- _FN1,
- _FN2,
- _FN3
+ _FN1
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_UP, KC_RSFT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
),
- [_FN1] = LAYOUT(
+ [_FN1] = LAYOUT(
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_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_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,
@@ -41,3 +39,10 @@ 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
),
};
+
+#ifdef ENCODER_MAP_ENABLE
+ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ };
+#endif
diff --git a/keyboards/mechwild/obe/keymaps/default/rules.mk b/keyboards/mechwild/obe/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/mechwild/obe/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/obe/keymaps/jonavin/keymap.c b/keyboards/mechwild/obe/keymaps/jonavin/keymap.c
index 27d09c718d..5d68d9213d 100644
--- a/keyboards/mechwild/obe/keymaps/jonavin/keymap.c
+++ b/keyboards/mechwild/obe/keymaps/jonavin/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN1] = LAYOUT(
KC_MUTE, KC_ESC, KC_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_INS,
- KC_HOME, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO, KC_NO, RESET,
+ KC_HOME, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SLCK, KC_PAUS, KC_NO, KC_NO, KC_NO, QK_BOOT,
KC_END, 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_TRNS,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NLCK, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_TRNS,
KC_TRNS,KC_WINLCK,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_HOME, KC_PGDN, KC_END
diff --git a/keyboards/mechwild/obe/keymaps/via/keymap.c b/keyboards/mechwild/obe/keymaps/via/keymap.c
index 23b9309901..cd6dcda001 100644
--- a/keyboards/mechwild/obe/keymaps/via/keymap.c
+++ b/keyboards/mechwild/obe/keymaps/via/keymap.c
@@ -13,15 +13,15 @@
* You should have received 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
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,21 +33,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, MO(1), KC_SPC, KC_RALT, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
),
- [_FN1] = LAYOUT(
+ [_FN1] = LAYOUT(
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_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_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
),
- [_FN2] = LAYOUT(
+ [_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
),
- [_FN3] = LAYOUT(
+ [_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,
@@ -55,3 +55,12 @@ 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
)
};
+
+#ifdef ENCODER_MAP_ENABLE
+ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ };
+#endif
diff --git a/keyboards/mechwild/obe/keymaps/via/rules.mk b/keyboards/mechwild/obe/keymaps/via/rules.mk
index 16d33cd89f..f1adcab005 100644
--- a/keyboards/mechwild/obe/keymaps/via/rules.mk
+++ b/keyboards/mechwild/obe/keymaps/via/rules.mk
@@ -1,2 +1,2 @@
VIA_ENABLE = yes
-
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/puckbuddy/config.h b/keyboards/mechwild/puckbuddy/config.h
new file mode 100644
index 0000000000..656fa2e7d1
--- /dev/null
+++ b/keyboards/mechwild/puckbuddy/config.h
@@ -0,0 +1,144 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 4
+
+/* Define custom font */
+#define OLED_FONT_H "keyboards/mechwild/puckbuddy/glcdfont.c"
+
+/* allows the "key" button on the blackpill to toggle caps lock for user testing before soldering */
+#define DIP_SWITCH_PINS { A0 }
+
+/* status light pins using the on board LED for the blackpill */
+#define LED_CAPS_LOCK_PIN C13
+#define LED_PIN_ON_STATE 0
+
+/* set the tapping term for glidepoint pad to register a tap click */
+//#define CIRQUE_PINNACLE_TAPPING_TERM 0 // This is set to 0 to disable it
+
+/* TAPPING_TERM value is used for the CIRQUE_PINNACLE_TAPPING_TERM as well by default
+ * defining it this way allows us to easily modify it with DYNAMIC_TAPPING_TERM_ENABLE
+ */
+#define TAPPING_TERM 0
+
+/*
+ * 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 { B12, B13, B14, B15 }
+#define MATRIX_COL_PINS { B10, A8, B4, B5 }
+#define UNUSED_PINS
+
+/* spi config */
+#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
+#define CIRQUE_PINNACLE_SPI_DIVISOR 8
+#define CIRQUE_PINNACLE_SPI_CS_PIN A4
+
+/* encoder pins */
+#define ENCODERS_PAD_A { B1, B3 }
+#define ENCODERS_PAD_B { B0, A15 }
+
+/* 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 A3
+#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
+/*== 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
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/mechwild/puckbuddy/glcdfont.c b/keyboards/mechwild/puckbuddy/glcdfont.c
new file mode 100644
index 0000000000..942f81dd06
--- /dev/null
+++ b/keyboards/mechwild/puckbuddy/glcdfont.c
@@ -0,0 +1,231 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#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, 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, 0xE0, 0xF0,
+ 0x78, 0x1C, 0x0E, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x0E, 0x0C, 0x0C, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
+ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+ 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0,
+ 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0xC0,
+ 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x07, 0x0E, 0x1C,
+ 0xF8, 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, 0xFC, 0xFC,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xE0, 0x78, 0x1E, 0x00,
+ 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
+ 0x00, 0x00, 0x00, 0xE0, 0xFE, 0xFF,
+ 0xFE, 0xF8, 0xC0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xE0, 0xFC, 0xFF, 0xFE,
+ 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x3E,
+ 0xE0, 0x80, 0x70, 0x0E, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x07, 0x3C, 0xE0,
+ 0x80, 0x78, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+ 0x70, 0x30, 0x30, 0x30, 0xB0, 0xF0,
+ 0xF0, 0x00, 0xFE, 0xFF, 0x33, 0x31,
+ 0x31, 0x31, 0x31, 0x31, 0x31, 0x33,
+ 0x3F, 0x1C, 0x00, 0x00, 0x00, 0x00,
+ 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x18, 0x18, 0x18, 0x18,
+ 0x18, 0x18, 0x08, 0x0C, 0x0E, 0x07,
+ 0x03, 0x03, 0x00, 0x00, 0x00, 0xFF,
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0xF8, 0xFE, 0x0F,
+ 0x07, 0x03, 0x03, 0x03, 0x03, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xE0, 0xF0, 0x38, 0x1F, 0x0F, 0x00,
+ 0x00, 0x00, 0x80, 0xE0, 0x70, 0x38,
+ 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0xC0, 0xF0, 0xFC, 0x7E, 0x4E,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x1F,
+ 0x07, 0x1F, 0xFF, 0xFE, 0xF0, 0xC0,
+ 0xF8, 0xFF, 0x7F, 0x0F, 0x07, 0x7F,
+ 0xFF, 0xFE, 0xFC, 0x04, 0x04, 0x78,
+ 0x80, 0x00, 0x00, 0x00, 0xC0, 0x38,
+ 0x0C, 0x1C, 0x60, 0x80, 0x00, 0x00,
+ 0x00, 0xF0, 0x0C, 0x04, 0xF4, 0x1C,
+ 0x80, 0xC0, 0xFC, 0xE6, 0xC3, 0xC1,
+ 0xC1, 0xC3, 0xE6, 0xFC, 0xC0, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x03, 0x06, 0x0E, 0x0C, 0x0C, 0x0C,
+ 0x0C, 0x0C, 0x0C, 0x0E, 0x07, 0x03,
+ 0x00, 0x00, 0x01, 0x03, 0x07, 0x06,
+ 0x0E, 0x0C, 0x0C, 0x0C, 0x06, 0x06,
+ 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1F, 0x0F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x07, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C,
+ 0x0C, 0x06, 0x07, 0x03, 0x1F, 0x1F,
+ 0x00, 0x00, 0x00, 0x00, 0x03, 0x06,
+ 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x06,
+ 0x06, 0x00, 0x00, 0x00, 0x1F, 0x1F,
+ 0x00, 0x01, 0x07, 0x0E, 0x18, 0x10,
+ 0x00, 0x00, 0x07, 0x1F, 0x18, 0x30,
+ 0x30, 0x30, 0x30, 0x1F, 0x0F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x18, 0x3C, 0x3C, 0x1C, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x1F, 0x1F, 0x1F, 0x07, 0x00,
+ 0x00, 0x00, 0x00, 0x03, 0x1F, 0x1F,
+ 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x1F, 0x1F, 0x1E, 0xF8, 0x00,
+ 0x0F, 0x70, 0x30, 0x0E, 0xC1, 0x38,
+ 0x07, 0x0E, 0x70, 0x83, 0x1C, 0x60,
+ 0x1E, 0x03, 0xC0, 0x3E, 0x01, 0x00,
+ 0x3F, 0x7F, 0xFF, 0xFF, 0xF9, 0xC0,
+ 0xC0, 0xF9, 0xFF, 0xFF, 0x7F, 0x3F,
+};
diff --git a/keyboards/mechwild/puckbuddy/halconf.h b/keyboards/mechwild/puckbuddy/halconf.h
new file mode 100644
index 0000000000..07e8cdd17b
--- /dev/null
+++ b/keyboards/mechwild/puckbuddy/halconf.h
@@ -0,0 +1,13 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#define HAL_USE_SPI TRUE
+#define SPI_USE_WAIT TRUE
+#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
+
+#include_next <halconf.h>
diff --git a/keyboards/mechwild/puckbuddy/info.json b/keyboards/mechwild/puckbuddy/info.json
new file mode 100644
index 0000000000..742438e8f5
--- /dev/null
+++ b/keyboards/mechwild/puckbuddy/info.json
@@ -0,0 +1,31 @@
+{
+ "keyboard_name": "PuckBuddy",
+ "manufacturer": "MechWild",
+ "url": "mechwild.com",
+ "maintainer": "kylemccreery",
+ "usb": {
+ "vid": "0x6D77",
+ "pid": "0x170F",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"k00", "x":0, "y":0},
+ {"label":"k01", "x":1.5, "y":0},
+ {"label":"k02", "x":2.5, "y":0},
+ {"label":"k03", "x":3.5, "y":0},
+ {"label":"k05", "x":5, "y":0},
+ {"label":"k10", "x":0, "y":1.25},
+ {"label":"k15", "x":5, "y":1.25},
+ {"label":"k20", "x":0, "y":2.25},
+ {"label":"k25", "x":5, "y":2.25},
+ {"label":"k30", "x":0, "y":3.25},
+ {"label":"k35", "x":5, "y":3.25},
+ {"label":"k31", "x":1, "y":4.5},
+ {"label":"k32", "x":2, "y":4.5},
+ {"label":"k33", "x":3, "y":4.5},
+ {"label":"k34", "x":4, "y":4.5}]
+ }
+ }
+}
diff --git a/keyboards/mechwild/puckbuddy/keymaps/default/keymap.c b/keyboards/mechwild/puckbuddy/keymaps/default/keymap.c
new file mode 100644
index 0000000000..614d70469d
--- /dev/null
+++ b/keyboards/mechwild/puckbuddy/keymaps/default/keymap.c
@@ -0,0 +1,64 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// 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
+};
+
+/* Physical Layout:
+ * /-------------------\
+ * |ENC| 1 | 2 | 3 |ENC|
+ * |---+---'---'---+---|
+ * | 4 | | 5 |
+ * |---| |---|
+ * | 6 | | 7 |
+ * |---| |---|
+ * | 8 | | 9 |
+ * \-----,---,---,-----/
+ * | A | B | C | D |
+ * \---'---'---'---/
+ *
+ * Keymap Layout:
+ * ENC, 1, 2, 3, ENC,
+ * 4, 5,
+ * 6, 7,
+ * 8, A, B, C, D, 9,
+ *
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ KC_MUTE, MO(_FN3), MO(_FN2), MO(_FN1), LGUI(KC_D),
+ MO(_FN2), KC_HOME,
+ MO(_FN3), KC_END,
+ KC_BTN3, DPI_FINE,
+ KC_BTN1, KC_BTN2, KC_BTN2, KC_BTN1
+ ),
+ [_FN1] = LAYOUT(
+ RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, TAP_TOG,
+ DPI_UP, TAP_UP,
+ DPI_DN, TAP_DN,
+ KC_TRNS, KC_TRNS,
+ KC_HOME, KC_PGUP, KC_PGDN, KC_END
+ ),
+ [_FN2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG,
+ KC_TRNS, RGB_MOD,
+ KC_TRNS, RGB_RMOD,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_FN3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
+ 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/puckbuddy/keymaps/via/keymap.c b/keyboards/mechwild/puckbuddy/keymaps/via/keymap.c
new file mode 100644
index 0000000000..614d70469d
--- /dev/null
+++ b/keyboards/mechwild/puckbuddy/keymaps/via/keymap.c
@@ -0,0 +1,64 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// 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
+};
+
+/* Physical Layout:
+ * /-------------------\
+ * |ENC| 1 | 2 | 3 |ENC|
+ * |---+---'---'---+---|
+ * | 4 | | 5 |
+ * |---| |---|
+ * | 6 | | 7 |
+ * |---| |---|
+ * | 8 | | 9 |
+ * \-----,---,---,-----/
+ * | A | B | C | D |
+ * \---'---'---'---/
+ *
+ * Keymap Layout:
+ * ENC, 1, 2, 3, ENC,
+ * 4, 5,
+ * 6, 7,
+ * 8, A, B, C, D, 9,
+ *
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT(
+ KC_MUTE, MO(_FN3), MO(_FN2), MO(_FN1), LGUI(KC_D),
+ MO(_FN2), KC_HOME,
+ MO(_FN3), KC_END,
+ KC_BTN3, DPI_FINE,
+ KC_BTN1, KC_BTN2, KC_BTN2, KC_BTN1
+ ),
+ [_FN1] = LAYOUT(
+ RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, TAP_TOG,
+ DPI_UP, TAP_UP,
+ DPI_DN, TAP_DN,
+ KC_TRNS, KC_TRNS,
+ KC_HOME, KC_PGUP, KC_PGDN, KC_END
+ ),
+ [_FN2] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG,
+ KC_TRNS, RGB_MOD,
+ KC_TRNS, RGB_RMOD,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_FN3] = LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
+ 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/puckbuddy/keymaps/via/rules.mk b/keyboards/mechwild/puckbuddy/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mechwild/puckbuddy/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mechwild/puckbuddy/mcuconf.h b/keyboards/mechwild/puckbuddy/mcuconf.h
new file mode 100644
index 0000000000..f71868d78e
--- /dev/null
+++ b/keyboards/mechwild/puckbuddy/mcuconf.h
@@ -0,0 +1,12 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
+
+#undef STM32_SPI_USE_SPI1
+#define STM32_SPI_USE_SPI1 TRUE
diff --git a/keyboards/mechwild/puckbuddy/puckbuddy.c b/keyboards/mechwild/puckbuddy/puckbuddy.c
new file mode 100644
index 0000000000..b82d06f565
--- /dev/null
+++ b/keyboards/mechwild/puckbuddy/puckbuddy.c
@@ -0,0 +1,307 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "puckbuddy.h"
+
+#ifndef GLIDEPOINT_DPI_OPTIONS
+# define GLIDEPOINT_DPI_OPTIONS \
+ { 400, 800, 1200, 1600, 2000, 2400, 2800, 3200, 3600, 4000 }
+# ifndef GLIDEPOINT_DPI_DEFAULT
+# define GLIDEPOINT_DPI_DEFAULT 1
+# endif
+#endif
+#ifndef GLIDEPOINT_DPI_DEFAULT
+# define GLIDEPOINT_DPI_DEFAULT 1
+#endif
+
+keyboard_config_t keyboard_config;
+uint16_t dpi_array[] = GLIDEPOINT_DPI_OPTIONS;
+#define DPI_OPTION_SIZE (sizeof(dpi_array) / sizeof(uint16_t))
+
+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 DYNAMIC_TAPPING_TERM_ENABLE
+void tap_modify(int change_value, bool tap_status) {
+ if (keyboard_config.dt_term_config < 0) {
+ keyboard_config.dt_term_config *= -1;
+ }
+
+ keyboard_config.dt_term_config += change_value;
+
+ if (tap_status == false ) {
+ keyboard_config.dt_term_config *= -1;
+ g_tapping_term = 0;
+ } else {
+ g_tapping_term = keyboard_config.dt_term_config;
+ }
+ eeconfig_update_kb(keyboard_config.raw);
+}
+
+void tap_toggle(void) {
+ keyboard_config.dt_term_config *= -1;
+ if (keyboard_config.dt_term_config > 0) {
+ g_tapping_term = keyboard_config.dt_term_config;
+ } else {
+ g_tapping_term = 0;
+ }
+ eeconfig_update_kb(keyboard_config.raw);
+}
+#endif
+
+#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) {
+ case 0:
+ if(active) { tap_code(KC_CLCK); }
+ break;
+ break;
+ }
+ return true;
+}
+#endif
+
+#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;
+ case 1:
+ if (clockwise) {
+ tap_code(KC_PGUP);
+ } else {
+ tap_code(KC_PGDN);
+ }
+ break;
+ }
+ return true;
+}
+#endif
+
+#ifdef OLED_ENABLE // OLED Functionality
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_180; // flips the display 180 degrees
+}
+
+bool clear_screen = true; // used to manage singular screen clears to prevent display glitch
+bool clear_screen_art = true; // used to manage singular screen clears to prevent display glitch
+static void render_name(void) { // Render Puckbuddy "Get Puck'd" text
+ static const char PROGMEM name_1[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xB6, 0xB6, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x00};
+ static const char PROGMEM name_2[] = {0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xB6, 0xB6, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0x00};
+ static const char PROGMEM name_3[] = {0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xB6, 0xB6, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0x00};
+ oled_set_cursor(0,0);
+ oled_write_P(name_1, false);
+ oled_set_cursor(0,1);
+ oled_write_P(name_2, false);
+ oled_set_cursor(0,2);
+ oled_write_P(name_3, false);
+}
+
+static void render_logo(void) { // Render MechWild "MW" Logo
+ static const char PROGMEM logo_1[] = {0x97, 0x98, 0x99, 0x9A,0x00};
+ static const char PROGMEM logo_2[] = {0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0x00};
+ static const char PROGMEM logo_3[] = {0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xB6, 0x00};
+ static const char PROGMEM logo_4[] = {0xB6, 0xB6, 0xB6, 0x9B, 0x9C, 0x9D, 0x9E, 0x00};
+ oled_set_cursor(0,0);
+ oled_write_P(logo_1, false);
+ oled_set_cursor(0,1);
+ oled_write_P(logo_2, false);
+ oled_set_cursor(0,2);
+ oled_write_P(logo_3, false);
+ oled_set_cursor(0,3);
+ oled_write_P(logo_4, false);
+}
+
+bool oled_task_kb(void) {
+ if(!oled_task_user()) {
+ return false;
+ }
+ if ( IS_HOST_LED_OFF(USB_LED_NUM_LOCK) && IS_HOST_LED_OFF(USB_LED_CAPS_LOCK) && IS_HOST_LED_OFF(USB_LED_SCROLL_LOCK) && get_highest_layer(layer_state) == 0 ) {
+ if (clear_screen_art == true) {
+ oled_clear();
+ oled_render();
+ clear_screen_art = false;
+ }
+ render_name();
+ oled_set_cursor(0,3);
+#ifdef POINTING_DEVICE_ENABLE
+ oled_write_P(PSTR(" DPI:"), false);
+ oled_write(get_u16_str(dpi_array[keyboard_config.dpi_config], ' '), false);
+#endif
+#ifdef DYNAMIC_TAPPING_TERM_ENABLE // only display tap info if it is being configured dynamically
+ oled_write_P(PSTR(" TAP:"), false);
+ if (keyboard_config.dt_term_config < 0) {
+ oled_write_P(PSTR("Off "), false);
+ } else {
+ oled_write(get_u16_str(g_tapping_term, ' '), false);
+ }
+#endif
+ clear_screen = true;
+ } else {
+ if (clear_screen == true) {
+ oled_clear();
+ oled_render();
+ clear_screen = false;
+ }
+ render_logo();
+ oled_set_cursor(8,1);
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_P(PSTR("Layer 0"), false);
+ break;
+ case 1:
+ oled_write_P(PSTR("Layer 1"), false);
+ break;
+ case 2:
+ oled_write_P(PSTR("Layer 2"), false);
+ break;
+ case 3:
+ oled_write_P(PSTR("Layer 3"), false);
+ break;
+ default:
+ oled_write_P(PSTR("Layer ?"), false); // Should never display, here as a catchall
+ }
+ led_t led_state = host_keyboard_led_state();
+ oled_set_cursor(8,0);
+ 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);
+#ifdef POINTING_DEVICE_ENABLE
+ oled_set_cursor(8,2);
+ oled_write_P(PSTR("DPI:"), false);
+ oled_write(get_u16_str(dpi_array[keyboard_config.dpi_config], ' '), false);
+#endif
+#ifdef DYNAMIC_TAPPING_TERM_ENABLE // only display tap info if it is being configured dynamically
+ oled_set_cursor(8,3);
+ oled_write_P(PSTR("TAP:"), false);
+ if (keyboard_config.dt_term_config < 0) {
+ oled_write_P(PSTR("Off "), false);
+ } else {
+ oled_write(get_u16_str(g_tapping_term, ' '), false);
+ }
+#endif
+ clear_screen_art = true;
+ }
+ return true;
+}
+#endif
+
+bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
+ switch(keycode) {
+#ifdef POINTING_DEVICE_ENABLE
+ case DPI_UP:
+ if (record->event.pressed) {
+ keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE;
+ eeconfig_update_kb(keyboard_config.raw);
+ pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]);
+ }
+ return false;
+ case DPI_DN:
+ if (record->event.pressed) {
+ if (keyboard_config.dpi_config > 0) {
+ keyboard_config.dpi_config = (keyboard_config.dpi_config - 1) % DPI_OPTION_SIZE;
+ } else {
+ keyboard_config.dpi_config = DPI_OPTION_SIZE - 1;
+ }
+ eeconfig_update_kb(keyboard_config.raw);
+ pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]);
+ }
+ return false;
+ case DPI_FINE:
+ if (record->event.pressed) {
+ pointing_device_set_cpi(dpi_array[0]);
+ } else {
+ pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]);
+ }
+ return false;
+#endif
+#ifdef DYNAMIC_TAPPING_TERM_ENABLE // only include tap info keycodes if it is being configured dynamically
+ case TAP_UP:
+ if (record->event.pressed) {
+ tap_modify(DYNAMIC_TAPPING_TERM_INCREMENT, true);
+ }
+ return false;
+ case TAP_DN:
+ if (record->event.pressed) {
+ if (keyboard_config.dt_term_config > 0) {
+ tap_modify(-1 * DYNAMIC_TAPPING_TERM_INCREMENT, true);
+ }
+ }
+ return false;
+ case TAP_ON:
+ if (record->event.pressed) {
+ tap_modify(0, true);
+ }
+ return false;
+ case TAP_OFF:
+ if (record->event.pressed) {
+ tap_modify(0, false);
+ }
+ return false;
+ case TAP_TOG:
+ if (record->event.pressed) {
+ tap_toggle();
+ }
+ return false;
+#endif
+ }
+ return process_record_user(keycode, record);
+}
+
+void pointing_device_init_kb(void) {
+#ifdef POINTING_DEVICE_ENABLE
+ pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]);
+#endif
+}
+
+void eeconfig_init_kb(void) {
+#ifdef POINTING_DEVICE_ENABLE
+ keyboard_config.dpi_config = GLIDEPOINT_DPI_DEFAULT;
+#endif
+#ifdef DYNAMIC_TAPPING_TERM_ENABLE // only set tap term from eeprom if it is being configured dynamically
+ keyboard_config.dt_term_config = TAPPING_TERM;
+#endif
+ eeconfig_update_kb(keyboard_config.raw);
+ eeconfig_init_user();
+}
+
+void matrix_init_kb(void) {
+ // is safe to just read DPI setting since matrix init
+ // comes before pointing device init.
+ keyboard_config.raw = eeconfig_read_kb();
+#ifdef POINTING_DEVICE_ENABLE
+ if (keyboard_config.dpi_config > DPI_OPTION_SIZE) {
+ eeconfig_init_kb();
+ }
+#endif
+ matrix_init_user();
+}
+
+void keyboard_post_init_kb(void) {
+#ifdef POINTING_DEVICE_ENABLE
+ pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]);
+#endif
+#ifdef RGBLIGHT_ENABLE
+ rgblight_toggle_noeeprom(); //double toggle post init removes the weirdness with rgb strips having a yellow first LED
+ rgblight_toggle_noeeprom();
+#endif
+#ifdef DYNAMIC_TAPPING_TERM_ENABLE
+ tap_toggle(); // Need it to reevaluate this setting after initiating so that it is current after init
+ tap_toggle();
+#endif
+ keyboard_post_init_user();
+#ifdef OLED_ENABLE // purposefully after user post init to allow the RGB to startup first
+ wait_ms(200); // Avoids a startup issue where the oled renders and then turns off with blackpill
+ oled_on();
+#endif
+}
diff --git a/keyboards/mechwild/puckbuddy/puckbuddy.h b/keyboards/mechwild/puckbuddy/puckbuddy.h
new file mode 100644
index 0000000000..13540a5075
--- /dev/null
+++ b/keyboards/mechwild/puckbuddy/puckbuddy.h
@@ -0,0 +1,56 @@
+// Copyright 2022 Kyle McCreery (@kylemccreery)
+// 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( \
+ k00, k01, k02, k03, k05,\
+ k10, k15,\
+ k20, k25,\
+ k30, k35,\
+ k31, k32, k33, k34 \
+) { \
+ { k00, k01, k05, k31 }, \
+ { k10, k02, k15, k32 }, \
+ { k20, k03, k25, k33 }, \
+ { k30, ___, k35, k34 } \
+}
+
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t dpi_config;
+ int16_t dt_term_config;
+ };
+} keyboard_config_t;
+
+extern keyboard_config_t keyboard_config;
+extern uint16_t dpi_array[];
+
+enum keyboard_keycodes {
+#ifdef VIA_ENABLE
+ DPI_UP = USER00,
+#else
+ DPI_UP = SAFE_RANGE,
+#endif
+ DPI_DN,
+ DPI_FINE,
+ TAP_UP,
+ TAP_DN,
+ TAP_ON,
+ TAP_OFF,
+ TAP_TOG,
+ NEW_SAFE_RANGE
+};
diff --git a/keyboards/mechwild/puckbuddy/readme.md b/keyboards/mechwild/puckbuddy/readme.md
new file mode 100644
index 0000000000..3bf6647932
--- /dev/null
+++ b/keyboards/mechwild/puckbuddy/readme.md
@@ -0,0 +1,27 @@
+# PuckBuddy
+
+![PuckBuddy](https://i.imgur.com/iSVAHJzh.png)
+
+A macropad with a Cirque Glidepoint Trackpad in the middle, powered by the STM32 Blackpill.
+
+* Keyboard Maintainer: [Kyle McCreery](https://github.com/kylemccreery)
+* Hardware Supported: PuckBuddy v1.0
+* Hardware Availability: [PuckBuddy on MechWild](https://mechwild.com/product/puckbuddy/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mechwild/puckbuddy:default
+
+Flashing example for this keyboard:
+
+ make mechwild/puckbuddy:default:flash
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (assigned to the top left key) and plug in the keyboard while holding it.
+* **Physical reset button**: Press and hold the boot0 button on the blackpill, tap and release the nrst button on the blackpill, then release the boot0 button.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. By default this is the top right key on layer 1.
+
+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/mechwild/puckbuddy/rules.mk b/keyboards/mechwild/puckbuddy/rules.mk
new file mode 100644
index 0000000000..a2837f9216
--- /dev/null
+++ b/keyboards/mechwild/puckbuddy/rules.mk
@@ -0,0 +1,28 @@
+# MCU name
+MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
+
+# 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 = 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
+OLED_ENABLE = yes # OLED Enabled
+OLED_DRIVER = SSD1306 # OLED Driver
+DIP_SWITCH_ENABLE = yes # Dip Switch Enabled
+
+POINTING_DEVICE_ENABLE = yes # Pointing Device Enabled
+POINTING_DEVICE_DRIVER = cirque_pinnacle_spi # Pointing Device Driver
+
+DYNAMIC_TAPPING_TERM_ENABLE = yes # Enable Dynamic Tapping Term to control the Tap term for the Cirque Pad easily
diff --git a/keyboards/mechwild/waka60/config.h b/keyboards/mechwild/waka60/config.h
index 057ca383be..df73f51946 100644
--- a/keyboards/mechwild/waka60/config.h
+++ b/keyboards/mechwild/waka60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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 }
diff --git a/keyboards/mechwild/waka60/f401/eeprom/config.h b/keyboards/mechwild/waka60/f401/config.h
index 83eed90b99..83eed90b99 100644
--- a/keyboards/mechwild/waka60/f401/eeprom/config.h
+++ b/keyboards/mechwild/waka60/f401/config.h
diff --git a/keyboards/mechwild/waka60/f401/eeprom/halconf.h b/keyboards/mechwild/waka60/f401/eeprom/halconf.h
deleted file mode 100644
index b57977316a..0000000000
--- a/keyboards/mechwild/waka60/f401/eeprom/halconf.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* 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/f401/eeprom/mcuconf.h b/keyboards/mechwild/waka60/f401/eeprom/mcuconf.h
deleted file mode 100644
index da43021663..0000000000
--- a/keyboards/mechwild/waka60/f401/eeprom/mcuconf.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* 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/f401/eeprom/rules.mk b/keyboards/mechwild/waka60/f401/eeprom/rules.mk
index c2c0bbd5d6..4707020e58 100644
--- a/keyboards/mechwild/waka60/f401/eeprom/rules.mk
+++ b/keyboards/mechwild/waka60/f401/eeprom/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = stm32-dfu
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
index f1304648f0..1b21bbaf77 100644
--- a/keyboards/mechwild/waka60/f401/rules.mk
+++ b/keyboards/mechwild/waka60/f401/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/mechwild/waka60/f411/eeprom/config.h b/keyboards/mechwild/waka60/f411/config.h
index 83eed90b99..83eed90b99 100644
--- a/keyboards/mechwild/waka60/f411/eeprom/config.h
+++ b/keyboards/mechwild/waka60/f411/config.h
diff --git a/keyboards/mechwild/waka60/f411/eeprom/halconf.h b/keyboards/mechwild/waka60/f411/eeprom/halconf.h
deleted file mode 100644
index b57977316a..0000000000
--- a/keyboards/mechwild/waka60/f411/eeprom/halconf.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* 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/eeprom/mcuconf.h b/keyboards/mechwild/waka60/f411/eeprom/mcuconf.h
deleted file mode 100644
index da43021663..0000000000
--- a/keyboards/mechwild/waka60/f411/eeprom/mcuconf.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* 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/eeprom/rules.mk b/keyboards/mechwild/waka60/f411/eeprom/rules.mk
index b823aa31cc..3d2f9bcf05 100644
--- a/keyboards/mechwild/waka60/f411/eeprom/rules.mk
+++ b/keyboards/mechwild/waka60/f411/eeprom/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# 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..25309fc70f
--- /dev/null
+++ b/keyboards/mechwild/waka60/f411/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/f411/mcuconf.h b/keyboards/mechwild/waka60/f411/mcuconf.h
new file mode 100644
index 0000000000..f903d8880f
--- /dev/null
+++ b/keyboards/mechwild/waka60/f411/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
diff --git a/keyboards/mechwild/waka60/f411/rules.mk b/keyboards/mechwild/waka60/f411/rules.mk
index b32a8b7f5b..c25a64f4b3 100644
--- a/keyboards/mechwild/waka60/f411/rules.mk
+++ b/keyboards/mechwild/waka60/f411/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/mechwild/waka60/info.json b/keyboards/mechwild/waka60/info.json
index 87549849b9..8e9a2c11f1 100644
--- a/keyboards/mechwild/waka60/info.json
+++ b/keyboards/mechwild/waka60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MechWild Waka60",
+ "keyboard_name": "Waka60",
+ "manufacturer": "MechWild",
"url": "mechwild.com",
"maintainer": "Kyle McCreery",
+ "usb": {
+ "vid": "0x6D77",
+ "pid": "0x1709",
+ "device_version": "1.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mechwild/waka60/keymaps/audio/keymap.c b/keyboards/mechwild/waka60/keymaps/audio/keymap.c
index 6f36d75496..dc4e5ea742 100644
--- a/keyboards/mechwild/waka60/keymaps/audio/keymap.c
+++ b/keyboards/mechwild/waka60/keymaps/audio/keymap.c
@@ -13,15 +13,15 @@
* You should have received 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
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,21 +33,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ [_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
+ KC_TRNS, 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(
+ [_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(
+ [_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,
@@ -55,3 +55,12 @@ 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
)
};
+
+#ifdef ENCODER_MAP_ENABLE
+ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ };
+#endif
diff --git a/keyboards/mechwild/waka60/keymaps/audio/rules.mk b/keyboards/mechwild/waka60/keymaps/audio/rules.mk
index 59d40ea4dd..a7b3207f91 100644
--- a/keyboards/mechwild/waka60/keymaps/audio/rules.mk
+++ b/keyboards/mechwild/waka60/keymaps/audio/rules.mk
@@ -1,3 +1,4 @@
VIA_ENABLE = yes
AUDIO_ENABLE = yes
-AUDIO_DRIVER = pwm_software \ No newline at end of file
+AUDIO_DRIVER = pwm_software
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/waka60/keymaps/default/keymap.c b/keyboards/mechwild/waka60/keymaps/default/keymap.c
index 54f2a32a7d..1f8c8523d4 100644
--- a/keyboards/mechwild/waka60/keymaps/default/keymap.c
+++ b/keyboards/mechwild/waka60/keymaps/default/keymap.c
@@ -13,15 +13,15 @@
* You should have received 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
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,21 +33,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ [_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
+ KC_TRNS, 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(
+ [_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(
+ [_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,
@@ -55,3 +55,12 @@ 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
)
};
+
+#ifdef ENCODER_MAP_ENABLE
+ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ };
+#endif
diff --git a/keyboards/mechwild/waka60/keymaps/default/rules.mk b/keyboards/mechwild/waka60/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/mechwild/waka60/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mechwild/waka60/keymaps/via/keymap.c b/keyboards/mechwild/waka60/keymaps/via/keymap.c
index 6f36d75496..83b44d6365 100644
--- a/keyboards/mechwild/waka60/keymaps/via/keymap.c
+++ b/keyboards/mechwild/waka60/keymaps/via/keymap.c
@@ -13,15 +13,15 @@
* You should have received 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
+ _FN2,
+ _FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -33,21 +33,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ [_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
+ KC_TRNS, 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(
+ [_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(
+ [_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,
@@ -55,3 +55,12 @@ 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
)
};
+
+#ifdef ENCODER_MAP_ENABLE
+ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ };
+#endif
diff --git a/keyboards/mechwild/waka60/keymaps/via/rules.mk b/keyboards/mechwild/waka60/keymaps/via/rules.mk
index 16d33cd89f..f1adcab005 100644
--- a/keyboards/mechwild/waka60/keymaps/via/rules.mk
+++ b/keyboards/mechwild/waka60/keymaps/via/rules.mk
@@ -1,2 +1,2 @@
VIA_ENABLE = yes
-
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/mehkee96/config.h b/keyboards/mehkee96/config.h
index 98e359f980..8eba6e278e 100644
--- a/keyboards/mehkee96/config.h
+++ b/keyboards/mehkee96/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x422D
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Mehkee
-#define PRODUCT 96KEE
-
/* matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 15
diff --git a/keyboards/mehkee96/info.json b/keyboards/mehkee96/info.json
index 050adaa767..34b9b001c8 100644
--- a/keyboards/mehkee96/info.json
+++ b/keyboards/mehkee96/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "mehkee96",
+ "keyboard_name": "96KEE",
+ "manufacturer": "Mehkee",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x422D",
+ "device_version": "2.0.0"
+ },
"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":"Print Screen", "x":13, "y":0}, {"label":"Delete", "x":14, "y":0}, {"label":"Home", "x":15, "y":0}, {"label":"End", "x":16, "y":0}, {"label":"Page Up", "x":17, "y":0}, {"label":"Page Down", "x":18, "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, "w":2}, {"label":"Num Lock", "x":15, "y":1}, {"label":"P/", "x":16, "y":1}, {"label":"P*", "x":17, "y":1}, {"label":"P-", "x":18, "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":"P7", "x":15, "y":2}, {"label":"P8", "x":16, "y":2}, {"label":"P9", "x":17, "y":2}, {"label":"P+", "x":18, "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":"P4", "x":15, "y":3}, {"label":"P5", "x":16, "y":3}, {"label":"P6", "x":17, "y":3}, {"label":"P+", "x":18, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"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":"Up", "x":14, "y":4}, {"label":"P1", "x":15, "y":4}, {"label":"P2", "x":16, "y":4}, {"label":"P3", "x":17, "y":4}, {"label":"PEnter", "x":18, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Win", "x":11, "y":5}, {"label":"Fn", "x":12, "y":5}, {"label":"Left", "x":13, "y":5}, {"label":"Down", "x":14, "y":5}, {"label":"Right", "x":15, "y":5}, {"label":"P0", "x":16, "y":5}, {"label":"P.", "x":17, "y":5}, {"label":"PEnter", "x":18, "y":5}]
diff --git a/keyboards/mehkee96/keymaps/johann/keymap.c b/keyboards/mehkee96/keymaps/johann/keymap.c
index a0212702ab..0aea5a8203 100644
--- a/keyboards/mehkee96/keymaps/johann/keymap.c
+++ b/keyboards/mehkee96/keymaps/johann/keymap.c
@@ -39,7 +39,7 @@ ________________________________________________________________________________
/* Layer 1, function layer
____________________________________________________________________________________________________________________________________________________________________________
| | | | | | | | | | | | | | | VOL | VOL | | | |
-| RESET | | | | | | | | | | | | | MUTE | DOWN | UP | | | |
+| QK_BOOT | | | | | | | | | | | | | MUTE | DOWN | UP | | | |
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
| | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
@@ -61,7 +61,7 @@ BL_TOGG, BL_DEC, BL_INC changes the in-switch LEDs
LAYOUT(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/meletrix/zoom65/config.h b/keyboards/meletrix/zoom65/config.h
index 6d6f6d18eb..d3a0a2f3b0 100644
--- a/keyboards/meletrix/zoom65/config.h
+++ b/keyboards/meletrix/zoom65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x806B
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER meletrix
-#define PRODUCT zoom65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/meletrix/zoom65/info.json b/keyboards/meletrix/zoom65/info.json
index 8cc7dce8c3..ea128402e9 100644
--- a/keyboards/meletrix/zoom65/info.json
+++ b/keyboards/meletrix/zoom65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "zoom65",
+ "manufacturer": "meletrix",
"url": "https://zoom65.com/",
"maintainer": "spbgzh",
+ "usb": {
+ "vid": "0x806B",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker/keymap.c
index 07d58e9d2b..383cfd26d5 100644
--- a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker/keymap.c
+++ b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_bs/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_bs/keymap.c
index 7580e22f95..cb91eb69b0 100644
--- a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_bs/keymap.c
+++ b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_bs/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_lshift/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_lshift/keymap.c
index 29bf8fb543..3e752a6951 100644
--- a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_lshift/keymap.c
+++ b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_lshift/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_space/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_space/keymap.c
index 9ab31d62f7..768e8398fb 100644
--- a/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_space/keymap.c
+++ b/keyboards/meletrix/zoom65/keymaps/65_ansi_blocker_split_space/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/meletrix/zoom65/keymaps/65_iso_blocker/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker/keymap.c
index cc7967446d..ff2a4b52f7 100644
--- a/keyboards/meletrix/zoom65/keymaps/65_iso_blocker/keymap.c
+++ b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_bs/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_bs/keymap.c
index af549a744b..34db6b54a6 100644
--- a/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_bs/keymap.c
+++ b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_bs/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_space/keymap.c b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_space/keymap.c
index 7ab65bbf2d..9036828b8b 100644
--- a/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_space/keymap.c
+++ b/keyboards/meletrix/zoom65/keymaps/65_iso_blocker_split_space/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/meletrix/zoom65_lite/config.h b/keyboards/meletrix/zoom65_lite/config.h
index 1f98a4dfda..d3a0a2f3b0 100644
--- a/keyboards/meletrix/zoom65_lite/config.h
+++ b/keyboards/meletrix/zoom65_lite/config.h
@@ -18,13 +18,6 @@
#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
diff --git a/keyboards/meletrix/zoom65_lite/info.json b/keyboards/meletrix/zoom65_lite/info.json
index 5bfddbd095..aa2c141139 100644
--- a/keyboards/meletrix/zoom65_lite/info.json
+++ b/keyboards/meletrix/zoom65_lite/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "zoom65_lite",
+ "manufacturer": "meletrix",
"url": "https://zoom65.com/",
"maintainer": "spbgzh",
+ "usb": {
+ "vid": "0x806C",
+ "pid": "0x0005",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker/keymap.c b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker/keymap.c
index 07d58e9d2b..383cfd26d5 100644
--- a/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker/keymap.c
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_ansi_blocker/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
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
index 7580e22f95..cb91eb69b0 100644
--- 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
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
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
index 29bf8fb543..3e752a6951 100644
--- 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
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
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
index 9ab31d62f7..768e8398fb 100644
--- 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
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker/keymap.c b/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker/keymap.c
index cc7967446d..ff2a4b52f7 100644
--- a/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker/keymap.c
+++ b/keyboards/meletrix/zoom65_lite/keymaps/65_iso_blocker/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
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
index af549a744b..34db6b54a6 100644
--- 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
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
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
index 7ab65bbf2d..9036828b8b 100644
--- 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
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/meletrix/zoom87/config.h b/keyboards/meletrix/zoom87/config.h
new file mode 100644
index 0000000000..89e8cf5611
--- /dev/null
+++ b/keyboards/meletrix/zoom87/config.h
@@ -0,0 +1,56 @@
+/* Copyright 2022 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+#define MATRIX_ROW_PINS { B3, B7, B2, F0, D3, D0 }
+#define MATRIX_COL_PINS { D6, D7, D1, D5, F7, D4, F5, F4, F1, C7, C6, B6, B5, B4, E6, B1, B0 }
+
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#define LED_CAPS_LOCK_PIN F6
+#define LED_PIN_ON_STATE 0
+
+#define RGB_DI_PIN D2
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 10
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*======= RGB function=======*/
+#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/meletrix/zoom87/info.json b/keyboards/meletrix/zoom87/info.json
new file mode 100644
index 0000000000..5d37e84c01
--- /dev/null
+++ b/keyboards/meletrix/zoom87/info.json
@@ -0,0 +1,612 @@
+{
+ "keyboard_name": "zoom87",
+ "manufacturer": "meletrix",
+ "url": "https://zoom65.com/",
+ "maintainer": "spbgzh",
+ "usb": {
+ "vid": "0x906F",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT_87": "LAYOUT_tkl_f13",
+ "LAYOUT_87_split_bs": "LAYOUT_tkl_f13_split_bs",
+ "LAYOUT_87_split_lshift": "LAYOUT_tkl_f13_split_lshift",
+ "LAYOUT_87_split_rshift": "LAYOUT_tkl_f13_split_rshift",
+ "LAYOUT_87_split_space": "LAYOUT_tkl_f13_split_space"
+ },
+ "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": "F13", "x": 14, "y": 0 },
+ { "label": "Print", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "Backspace1", "x": 14, "y": 1.25 },
+ { "label": "Insert", "x": 15.25, "y": 1.25 },
+ { "label": "Home", "x": 16.25, "y": 1.25 },
+ { "label": "PageUp", "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": "PageDown", "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": "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": 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": 2.25 },
+ { "x": 6, "y": 5.25, "w": 1.25 },
+ { "x": 7.25, "y": 5.25, "w": 2.75 },
+ { "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 }
+ ]
+ },
+ "LAYOUT_tkl_f13": {
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "PageUp", "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": "PageDown", "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": "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 }
+ ]
+ },
+ "LAYOUT_tkl_f13_split_bs": {
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "Backspace1", "x": 14, "y": 1.25 },
+ { "label": "Insert", "x": 15.25, "y": 1.25 },
+ { "label": "Home", "x": 16.25, "y": 1.25 },
+ { "label": "PageUp", "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": "PageDown", "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": "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 }
+ ]
+ },
+ "LAYOUT_tkl_f13_split_lshift": {
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "PageUp", "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": "PageDown", "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": "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": 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": "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 }
+ ]
+ },
+ "LAYOUT_tkl_f13_split_rshift": {
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "PageUp", "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": "PageDown", "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": "Shift1", "x": 12.25, "y": 4.25, "w": 1.75 },
+ { "label": "Shift2", "x": 14, "y": 4.25 },
+ { "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": "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 }
+ ]
+ },
+ "LAYOUT_tkl_f13_split_space": {
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "PageUp", "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": "PageDown", "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": 2.25 },
+ { "x": 6, "y": 5.25, "w": 1.25 },
+ { "x": 7.25, "y": 5.25, "w": 2.75 },
+ { "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/meletrix/zoom87/keymaps/default/keymap.c b/keyboards/meletrix/zoom87/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d5b57b7feb
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 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_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, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom87/keymaps/default/readme.md b/keyboards/meletrix/zoom87/keymaps/default/readme.md
new file mode 100644
index 0000000000..5a5a49c468
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for zoom87
diff --git a/keyboards/meletrix/zoom87/keymaps/default_tkl_f13/keymap.c b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13/keymap.c
new file mode 100644
index 0000000000..a1bf486437
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 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_tkl_f13(
+ KC_ESC, KC_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_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_tkl_f13(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom87/keymaps/default_tkl_f13/readme.md b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13/readme.md
new file mode 100644
index 0000000000..0d04949fa4
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13/readme.md
@@ -0,0 +1 @@
+# The tkl_f13 keymap for zoom87
diff --git a/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_bs/keymap.c b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_bs/keymap.c
new file mode 100644
index 0000000000..0b47c2befd
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_bs/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 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_tkl_f13_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_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_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_tkl_f13_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_bs/readme.md b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_bs/readme.md
new file mode 100644
index 0000000000..872c77f91a
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_bs/readme.md
@@ -0,0 +1 @@
+# The default_tkl_f13_split_bs keymap for zoom87
diff --git a/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_lshift/keymap.c b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_lshift/keymap.c
new file mode 100644
index 0000000000..b711cadf0a
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_lshift/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 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_tkl_f13_split_lshift(
+ KC_ESC, KC_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_LSFT, KC_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_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_tkl_f13_split_lshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_lshift/readme.md b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_lshift/readme.md
new file mode 100644
index 0000000000..a386f41b90
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_lshift/readme.md
@@ -0,0 +1 @@
+# The default_tkl_f13_split_lshift keymap for zoom87
diff --git a/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_rshift/keymap.c b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_rshift/keymap.c
new file mode 100644
index 0000000000..1b9a9eed92
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_rshift/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 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_tkl_f13_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_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_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_tkl_f13_split_rshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_rshift/readme.md b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_rshift/readme.md
new file mode 100644
index 0000000000..d978de20ae
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_rshift/readme.md
@@ -0,0 +1 @@
+# The tkl_f13_split_rshift keymap for zoom87
diff --git a/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_space/keymap.c b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_space/keymap.c
new file mode 100644
index 0000000000..ff5a8a3903
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_space/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 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_tkl_f13_split_space(
+ KC_ESC, KC_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_SPC, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_tkl_f13_split_space(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_space/readme.md b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_space/readme.md
new file mode 100644
index 0000000000..d978de20ae
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/default_tkl_f13_split_space/readme.md
@@ -0,0 +1 @@
+# The tkl_f13_split_rshift keymap for zoom87
diff --git a/keyboards/meletrix/zoom87/keymaps/via/keymap.c b/keyboards/meletrix/zoom87/keymaps/via/keymap.c
new file mode 100644
index 0000000000..c5ff23eeda
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2022 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_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, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/meletrix/zoom87/keymaps/via/readme.md b/keyboards/meletrix/zoom87/keymaps/via/readme.md
new file mode 100644
index 0000000000..40fd5138b3
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The via keymap for zoom87
diff --git a/keyboards/meletrix/zoom87/keymaps/via/rules.mk b/keyboards/meletrix/zoom87/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/meletrix/zoom87/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/meletrix/zoom87/readme.md b/keyboards/meletrix/zoom87/readme.md
new file mode 100644
index 0000000000..9ad821387a
--- /dev/null
+++ b/keyboards/meletrix/zoom87/readme.md
@@ -0,0 +1,27 @@
+# zoom87
+
+More Info at [meletrix](https://meletrix.com/)
+​
+
+* Keyboard Maintainer: [spbgzh](https://github.com/spbgzh)
+* Hardware Supported: zoom 87
+* Hardware Availability: [zoom87](https://meletrix.com/collections/)
+​
+
+Make example for this keyboard (after setting up your build environment):
+
+ make meletrix/zoom87:default
+
+Flashing example for this keyboard:
+
+ make meletrix/zoom87:default:flash
+
+## Bootloader
+
+Enter the bootloader using one of the following methods:
+
+* Tap the Reset switch mounted on the PCB
+* In the case of the default keymap, use the key combination Fn + PageUp
+* 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/zoom87/rules.mk b/keyboards/meletrix/zoom87/rules.mk
new file mode 100644
index 0000000000..85a4a905a5
--- /dev/null
+++ b/keyboards/meletrix/zoom87/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 = 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/meletrix/zoom87/zoom87.c b/keyboards/meletrix/zoom87/zoom87.c
new file mode 100644
index 0000000000..59fc2ba3c8
--- /dev/null
+++ b/keyboards/meletrix/zoom87/zoom87.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 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 "zoom87.h"
diff --git a/keyboards/meletrix/zoom87/zoom87.h b/keyboards/meletrix/zoom87/zoom87.h
new file mode 100644
index 0000000000..03b94bfc40
--- /dev/null
+++ b/keyboards/meletrix/zoom87/zoom87.h
@@ -0,0 +1,218 @@
+/* Copyright 2022 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 ││0e │0f │0g │
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”┌───┬───┬───â”
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │3d ││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 │3c │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │4d │ │4f │
+ * ├────┼───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬┴───┤┌───┼───┼───â”
+ * │50 │51 │52 │55 │56 │57 │5a │5b │5c │5d ││5e │5f │5g │
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┴────┴────┘└───┴───┴───┘
+ */
+
+#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, K4C, K4D, K4F, \
+ K50, K51, K52, K55, K56, K57, 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, KC_NO, K55, K56, K57, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 ││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 │3c │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ │4f │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───â”
+ * │50 │51 │52 │56 │5a │5b │5c │5d ││5e │5f │5g │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+ */
+#define LAYOUT_tkl_f13( \
+ 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, 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, 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, KC_NO, 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, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13_split_bs
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤
+ * │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 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ │4f │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴───┴───┼───┴┬────┬────┤┌───┼───┼───â”
+ * │50 │51 │52 │56 │5a │5b │5c │5d ││5e │5f │5g │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+ */
+#define LAYOUT_tkl_f13_split_bs( \
+ 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, 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, 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, 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, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13_split_lshift
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 ││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 │3c │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ │4f │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───â”
+ * │50 │51 │52 │56 │5a │5b │5c │5d ││5e │5f │5g │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+ */
+#define LAYOUT_tkl_f13_split_lshift( \
+ 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, 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, 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, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, KC_NO, K4F, KC_NO }, \
+ { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13_split_rshift
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 ││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 │3c │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │4d │ │4f │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤┌───┼───┼───â”
+ * │50 │51 │52 │56 │5a │5b │5c │5d ││5e │5f │5g │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+ */
+#define LAYOUT_tkl_f13_split_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, 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, 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, KC_NO, 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, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13_split_space
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 ││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 │3c │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ │4f │
+ * ├────┬───┴┬──┴─┬─┴───┴──┬┴───┼───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───â”
+ * │50 │51 │52 │55 │56 │57 │5a │5b │5c │5d ││5e │5f │5g │
+ * └────┴────┴────┴────────┴────┴──────────┴────┴────┴────┴────┘└───┴───┴───┘
+ */
+#define LAYOUT_tkl_f13_split_space( \
+ 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, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \
+ K50, K51, K52, K55, K56, K57, 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, KC_NO, 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, KC_NO, K55, K56, K55, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
diff --git a/keyboards/melgeek/mach80/config.h b/keyboards/melgeek/mach80/config.h
index 0e98030e25..aab6083eb0 100755
--- a/keyboards/melgeek/mach80/config.h
+++ b/keyboards/melgeek/mach80/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xEDED
-#define PRODUCT_ID 0x0080
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MelGeek
-#define PRODUCT Mach80
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
diff --git a/keyboards/melgeek/mach80/info.json b/keyboards/melgeek/mach80/info.json
index ea7c628c6f..82e42ab44b 100755
--- a/keyboards/melgeek/mach80/info.json
+++ b/keyboards/melgeek/mach80/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mach80",
+ "manufacturer": "MelGeek",
"url": "",
"maintainer": "melgeek001365",
+ "usb": {
+ "vid": "0xEDED",
+ "pid": "0x0080",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/melgeek/mach80/keymaps/tkl/keymap.c b/keyboards/melgeek/mach80/keymaps/tkl/keymap.c
index 17aa4e6d36..a7c481baa7 100755
--- a/keyboards/melgeek/mach80/keymaps/tkl/keymap.c
+++ b/keyboards/melgeek/mach80/keymaps/tkl/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_tkl_ansi( /* FN */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, KC_END, _______,
- _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, RESET, _______, KC_INS, _______,
+ _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, _______, _______, QK_BOOT, _______, KC_INS, _______,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
diff --git a/keyboards/melgeek/mach80/readme.md b/keyboards/melgeek/mach80/readme.md
index f4c8572c4d..376d179c65 100755
--- a/keyboards/melgeek/mach80/readme.md
+++ b/keyboards/melgeek/mach80/readme.md
@@ -16,6 +16,6 @@ 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 *
+**Keycode in layout**: Press the key mapped to `QK_BOOT` 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/melgeek/mach80/rev1/config.h b/keyboards/melgeek/mach80/rev1/config.h
index 868832d808..7d941ba1e3 100755
--- a/keyboards/melgeek/mach80/rev1/config.h
+++ b/keyboards/melgeek/mach80/rev1/config.h
@@ -29,7 +29,6 @@
#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
diff --git a/keyboards/melgeek/mach80/rev2/config.h b/keyboards/melgeek/mach80/rev2/config.h
index 3ac1b87ab5..b08ec05100 100755
--- a/keyboards/melgeek/mach80/rev2/config.h
+++ b/keyboards/melgeek/mach80/rev2/config.h
@@ -29,7 +29,6 @@
#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
diff --git a/keyboards/melgeek/mj61/config.h b/keyboards/melgeek/mj61/config.h
index 0b5bd9ff48..407beba1e8 100644
--- a/keyboards/melgeek/mj61/config.h
+++ b/keyboards/melgeek/mj61/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xEDED
-#define PRODUCT_ID 0xED61
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MelGeek
-#define PRODUCT MJ61
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/melgeek/mj61/info.json b/keyboards/melgeek/mj61/info.json
index 52c98ecdab..559ea8da32 100644
--- a/keyboards/melgeek/mj61/info.json
+++ b/keyboards/melgeek/mj61/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MJ61",
+ "manufacturer": "MelGeek",
"url": "",
"maintainer": "melgeek001365",
+ "usb": {
+ "vid": "0xEDED",
+ "pid": "0xED61",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/melgeek/mj61/rev1/config.h b/keyboards/melgeek/mj61/rev1/config.h
index 9d73a4fe96..bba46db2dd 100644
--- a/keyboards/melgeek/mj61/rev1/config.h
+++ b/keyboards/melgeek/mj61/rev1/config.h
@@ -29,7 +29,6 @@
#define MATRIX_ROW_PINS { B12, B11, B10, B1, A3 }
#define MATRIX_COL_PINS { B15, A8, A10, A15, B3, B4, B5, B8, B9, C13, C14, C15, A0, A1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/melgeek/mj61/rev2/config.h b/keyboards/melgeek/mj61/rev2/config.h
index 616426df65..e17f291934 100644
--- a/keyboards/melgeek/mj61/rev2/config.h
+++ b/keyboards/melgeek/mj61/rev2/config.h
@@ -29,7 +29,6 @@
#define MATRIX_ROW_PINS { B12, B11, B10, B1, A3 }
#define MATRIX_COL_PINS { B15, A8, B13, A15, B3, B4, B5, B8, B9, C13, C14, C15, A0, A1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/melgeek/mj63/config.h b/keyboards/melgeek/mj63/config.h
index ddd953e1de..407beba1e8 100644
--- a/keyboards/melgeek/mj63/config.h
+++ b/keyboards/melgeek/mj63/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xEDED
-#define PRODUCT_ID 0x6063
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MelGeek
-#define PRODUCT MJ63
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/melgeek/mj63/info.json b/keyboards/melgeek/mj63/info.json
index 5c5983abd0..ab5c1c0ef9 100644
--- a/keyboards/melgeek/mj63/info.json
+++ b/keyboards/melgeek/mj63/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MJ63",
+ "manufacturer": "MelGeek",
"url": "",
"maintainer": "melgeek001365",
+ "usb": {
+ "vid": "0xEDED",
+ "pid": "0x6063",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_arrow": {
"layout": [
diff --git a/keyboards/melgeek/mj63/rev1/config.h b/keyboards/melgeek/mj63/rev1/config.h
index 75f7da43a6..ef8c7872d6 100644
--- a/keyboards/melgeek/mj63/rev1/config.h
+++ b/keyboards/melgeek/mj63/rev1/config.h
@@ -29,7 +29,6 @@
#define MATRIX_ROW_PINS { B12, B11, B10, B1, A3 }
#define MATRIX_COL_PINS { B15, A8, A10, A15, B3, B4, B5, B8, B9, C13, C14, C15, A0, A1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/melgeek/mj63/rev2/config.h b/keyboards/melgeek/mj63/rev2/config.h
index 616426df65..e17f291934 100644
--- a/keyboards/melgeek/mj63/rev2/config.h
+++ b/keyboards/melgeek/mj63/rev2/config.h
@@ -29,7 +29,6 @@
#define MATRIX_ROW_PINS { B12, B11, B10, B1, A3 }
#define MATRIX_COL_PINS { B15, A8, B13, A15, B3, B4, B5, B8, B9, C13, C14, C15, A0, A1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/melgeek/mj64/config.h b/keyboards/melgeek/mj64/config.h
index 684c48720b..407beba1e8 100644
--- a/keyboards/melgeek/mj64/config.h
+++ b/keyboards/melgeek/mj64/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xEDED
-#define PRODUCT_ID 0x6064
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MelGeek
-#define PRODUCT MJ64
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/melgeek/mj64/info.json b/keyboards/melgeek/mj64/info.json
index 61a7ded2a1..d5a1d8340a 100644
--- a/keyboards/melgeek/mj64/info.json
+++ b/keyboards/melgeek/mj64/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MJ64",
+ "manufacturer": "MelGeek",
"url": "",
"maintainer": "melgeek001365",
+ "usb": {
+ "vid": "0xEDED",
+ "pid": "0x6064",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_64_ansi": {
"layout": [
diff --git a/keyboards/melgeek/mj64/rev1/config.h b/keyboards/melgeek/mj64/rev1/config.h
index fbe170f18e..713c051a09 100644
--- a/keyboards/melgeek/mj64/rev1/config.h
+++ b/keyboards/melgeek/mj64/rev1/config.h
@@ -29,7 +29,6 @@
#define MATRIX_ROW_PINS { B12, B11, B10, B1, A3 }
#define MATRIX_COL_PINS { B15, A8, A10, A15, B3, B4, B5, B8, B9, C13, C14, C15, A0, A1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/melgeek/mj64/rev2/config.h b/keyboards/melgeek/mj64/rev2/config.h
index fbe170f18e..713c051a09 100644
--- a/keyboards/melgeek/mj64/rev2/config.h
+++ b/keyboards/melgeek/mj64/rev2/config.h
@@ -29,7 +29,6 @@
#define MATRIX_ROW_PINS { B12, B11, B10, B1, A3 }
#define MATRIX_COL_PINS { B15, A8, A10, A15, B3, B4, B5, B8, B9, C13, C14, C15, A0, A1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/melgeek/mj64/rev3/config.h b/keyboards/melgeek/mj64/rev3/config.h
index dfde77f24a..ff467af7d6 100644
--- a/keyboards/melgeek/mj64/rev3/config.h
+++ b/keyboards/melgeek/mj64/rev3/config.h
@@ -29,7 +29,6 @@
#define MATRIX_ROW_PINS { B12, B11, B10, B1, A3 }
#define MATRIX_COL_PINS { B15, A8, B13, A15, B3, B4, B5, B8, B9, C13, C14, C15, A0, A1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/melgeek/mj65/config.h b/keyboards/melgeek/mj65/config.h
index 4cf4f3f233..e009feed5b 100644
--- a/keyboards/melgeek/mj65/config.h
+++ b/keyboards/melgeek/mj65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xEDED
-#define PRODUCT_ID 0x0065
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MelGeek
-#define PRODUCT MJ65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/melgeek/mj65/info.json b/keyboards/melgeek/mj65/info.json
index e5fffa6d83..7eb67d30b3 100644
--- a/keyboards/melgeek/mj65/info.json
+++ b/keyboards/melgeek/mj65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MJ65",
+ "manufacturer": "MelGeek",
"url": "",
"maintainer": "melgeek001365",
+ "usb": {
+ "vid": "0xEDED",
+ "pid": "0x0065",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/melgeek/mj65/rev3/config.h b/keyboards/melgeek/mj65/rev3/config.h
index d9a8c5a815..5274508744 100644
--- a/keyboards/melgeek/mj65/rev3/config.h
+++ b/keyboards/melgeek/mj65/rev3/config.h
@@ -29,7 +29,6 @@
#define MATRIX_ROW_PINS { B12, B11, B10, B1, A3 }
#define MATRIX_COL_PINS { B15, A8, B13, A15, B3, B4, B5, B8, B9, C13, C14, C15, A0, A1, B14 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/melgeek/mj6xy/config.h b/keyboards/melgeek/mj6xy/config.h
index 4a6336c1c9..fb02fddc1f 100755
--- a/keyboards/melgeek/mj6xy/config.h
+++ b/keyboards/melgeek/mj6xy/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xEDED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MelGeek
-#define PRODUCT MJ6XY
-
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 3
diff --git a/keyboards/melgeek/mj6xy/info.json b/keyboards/melgeek/mj6xy/info.json
index 712b97295c..7bd66020b0 100755
--- a/keyboards/melgeek/mj6xy/info.json
+++ b/keyboards/melgeek/mj6xy/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MJ6XY",
+ "manufacturer": "MelGeek",
"url": "",
"maintainer": "melgeek001365",
+ "usb": {
+ "vid": "0xEDED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi/keymap.c
index 4bedb0d400..77e9d940d1 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_ansi/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_ansi_7u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc/keymap.c
index 2d972d74f1..a9509e96dc 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, RESET,
+ 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, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_ansi_7u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc_split_bs/keymap.c
index d1ffaf4b8d..b4cd656ec2 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_7u_spc_split_bs/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_ansi_7u_spc_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_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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_ansi_arrow/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow/keymap.c
index dc779513e4..1b0e576ac8 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, RESET,
+ 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, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc/keymap.c
index 3f8a2206b7..f9e7afa8dc 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_ansi_arrow_3u_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, RESET,
+ 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, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS, KC_TRNS)
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc_split_bs/keymap.c
index 5b77b70c7d..791337744d 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_3u_spc_split_bs/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_ansi_arrow_3u_spc_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_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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS, KC_TRNS)
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc/keymap.c
index f61c123e13..c15b740e32 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_ansi_arrow_6u_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, RESET,
+ 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, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc_split_bs/keymap.c
index 6831ac2d7d..56ac6faf20 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_6u_spc_split_bs/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_ansi_arrow_6u_spc_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_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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_ansi_arrow_split_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_3u_spc/keymap.c
index 4cd58ee4b9..357d93214d 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_3u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_3u_spc/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_ansi_arrow_split_3u_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, RESET,
+ 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, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS)
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs/keymap.c
index 874c8ec16e..9c0ecdd405 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs_3u_spc/keymap.c
index 1e64f52659..c7369ebcbc 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs_3u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_arrow_split_bs_3u_spc/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_ansi_arrow_split_bs_3u_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_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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS)
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_ansi_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_ansi_split_bs/keymap.c
index b54ea62a73..568eb96235 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_ansi_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_ansi_split_bs/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_iso/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso/keymap.c
index d0f50a7010..0d72a78e6c 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, 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_INS, KC_HOME, KC_PGUP, KC_TRNS, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_bs_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_bs_rshift/keymap.c
index 60ac095ae8..0f213e6ff6 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_bs_rshift/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_bs_rshift/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_1u_lshift_7u_spc_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_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,
- 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, 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, QK_BOOT,
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_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_rshift/keymap.c
index 97da29d39c..3394ab81ab 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_rshift/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_7u_spc_split_rshift/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_1u_lshift_7u_spc_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_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_INS, KC_HOME, KC_PGUP, KC_TRNS, 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, QK_BOOT,
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_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_bs_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_bs_rshift/keymap.c
index c28de0ae27..eb82f33d04 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_bs_rshift/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_bs_rshift/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_1u_lshift_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_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,
- 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, 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, QK_BOOT,
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_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_rshift/keymap.c
index c95aa2838e..68d60791bd 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_rshift/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_1u_lshift_split_rshift/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_1u_lshift_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_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_INS, KC_HOME, KC_PGUP, KC_TRNS, 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, QK_BOOT,
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_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc/keymap.c
index 1f4f3e0b49..e379a5e638 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_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_INS, KC_HOME, KC_PGUP, KC_TRNS, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs/keymap.c
index ad180ffbdb..18e6734fbe 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_7u_spc_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_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,
- 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, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs_rshift/keymap.c
index 644f880183..96b317b78f 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs_rshift/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_bs_rshift/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_7u_spc_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_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,
- 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, 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, QK_BOOT,
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_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_rshift/keymap.c
index 0a6321d955..149cd4de57 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_rshift/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_7u_spc_split_rshift/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_7u_spc_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_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_INS, KC_HOME, KC_PGUP, KC_TRNS, 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, QK_BOOT,
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_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow/keymap.c
index e0997d26da..2713820c12 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_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_INS, KC_HOME, KC_PGUP, KC_TRNS, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc/keymap.c
index bcefcc6818..f3ee53674a 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_arrow_3u_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_INS, KC_HOME, KC_PGUP, KC_TRNS, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc_split_bs/keymap.c
index 76858516cc..c0ed6ad606 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_3u_spc_split_bs/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_arrow_3u_spc_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_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,
- 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, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc/keymap.c
index a4306832f8..8879490b7b 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_arrow_6u_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_INS, KC_HOME, KC_PGUP, KC_TRNS, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc_split_bs/keymap.c
index 5e2187ac35..78a2f441de 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_6u_spc_split_bs/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_arrow_6u_spc_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_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,
- 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, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_iso_arrow_split_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_3u_spc/keymap.c
index e08039de3b..2a4669a049 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_3u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_3u_spc/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_arrow_split_3u_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_INS, KC_HOME, KC_PGUP, KC_TRNS, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs/keymap.c
index 8aed87a977..327e456f37 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_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_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,
- 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, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs_3u_spc/keymap.c
index b1398092e9..46a08e64d0 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs_3u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_arrow_split_bs_3u_spc/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_arrow_split_bs_3u_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_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,
- 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, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs/keymap.c
index 55aa73d325..098e5af8cb 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_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_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,
- 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, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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/melgeek/mj6xy/keymaps/60_iso_split_bs_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs_rshift/keymap.c
index a78595d50c..af57d434c6 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs_rshift/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_bs_rshift/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_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_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,
- 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, 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, QK_BOOT,
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_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/60_iso_split_rshift/keymap.c b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_rshift/keymap.c
index 902fb1d07d..8e78d4082c 100755
--- a/keyboards/melgeek/mj6xy/keymaps/60_iso_split_rshift/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/60_iso_split_rshift/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_60_iso_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_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_INS, KC_HOME, KC_PGUP, KC_TRNS, 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, QK_BOOT,
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_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi/keymap.c
index adf8abee89..65aad57130 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_ansi/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_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, 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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS)
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc/keymap.c
index 75740f58ac..5e0a5bf1df 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_ansi_3u_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, RESET,
+ 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, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS, KC_TRNS, KC_TRNS)
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc_split_bs/keymap.c
index ece9c5d120..a33215e624 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_3u_spc_split_bs/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_ansi_3u_spc_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_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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS, KC_TRNS, KC_TRNS)
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc/keymap.c
index d399553f6a..939ff02ff0 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_ansi_6u_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, RESET,
+ 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, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS)
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc_split_bs/keymap.c
index 731a92ce5a..a2f027ae71 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_6u_spc_split_bs/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_ansi_6u_spc_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_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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS)
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_3u_spc/keymap.c
index 7f5c3ba537..f08a899541 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_3u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_3u_spc/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_ansi_split_3u_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, RESET,
+ 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, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS, KC_TRNS)
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs/keymap.c
index 234f936ab3..6a2bccc0d1 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_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_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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS)
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs_3u_spc/keymap.c
index 31a6b5a9db..2d13f48a83 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs_3u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_ansi_split_bs_3u_spc/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_ansi_split_bs_3u_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_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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, QK_BOOT,
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, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS, KC_TRNS)
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso/keymap.c
index ef7f3a2fef..52cfd611ee 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_iso/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_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, 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_INS, KC_HOME, KC_PGUP, KC_TRNS, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc/keymap.c
index 5bdbc289de..39eb0817d5 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_iso_3u_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_INS, KC_HOME, KC_PGUP, KC_TRNS, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc_split_bs/keymap.c
index 2689f17445..ba0be5ec7a 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_3u_spc_split_bs/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_iso_3u_spc_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_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,
- 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, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc/keymap.c
index b9b9924bc7..f93e2a4f8c 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_iso_6u_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_INS, KC_HOME, KC_PGUP, KC_TRNS, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc_split_bs/keymap.c
index b15d8d2575..9b68fb00b6 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_6u_spc_split_bs/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_iso_6u_spc_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_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,
- 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, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_split_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_3u_spc/keymap.c
index a085b10d78..2ae9f1c477 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_iso_split_3u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_3u_spc/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_iso_split_3u_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_INS, KC_HOME, KC_PGUP, KC_TRNS, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs/keymap.c
index ff1fdb70f8..42312c6693 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_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_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,
- 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, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs_3u_spc/keymap.c b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs_3u_spc/keymap.c
index 918d0e9493..68d3f84daa 100755
--- a/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs_3u_spc/keymap.c
+++ b/keyboards/melgeek/mj6xy/keymaps/64_iso_split_bs_3u_spc/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_64_iso_split_bs_3u_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_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,
- 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, 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, BL_STEP, 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, KC_TRNS, KC_TRNS)
};
diff --git a/keyboards/melgeek/mj6xy/rev3/config.h b/keyboards/melgeek/mj6xy/rev3/config.h
index 8ea2b72030..3c07db143b 100755
--- a/keyboards/melgeek/mj6xy/rev3/config.h
+++ b/keyboards/melgeek/mj6xy/rev3/config.h
@@ -22,7 +22,6 @@
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, B6, B5, B4, D7, D6, D4, D5, F7, D2, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/melgeek/mojo68/config.h b/keyboards/melgeek/mojo68/config.h
index ee441be0e1..3ef18c6785 100755
--- a/keyboards/melgeek/mojo68/config.h
+++ b/keyboards/melgeek/mojo68/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xEDED
-#define PRODUCT_ID 0x0068
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MelGeek
-#define PRODUCT MoJo68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/melgeek/mojo68/info.json b/keyboards/melgeek/mojo68/info.json
index 843637d901..4f7ae646be 100755
--- a/keyboards/melgeek/mojo68/info.json
+++ b/keyboards/melgeek/mojo68/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MoJo68",
+ "manufacturer": "MelGeek",
"url": "",
"maintainer": "melgeek001365",
+ "usb": {
+ "vid": "0xEDED",
+ "pid": "0x0068",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_68_ansi": {
"layout": [
diff --git a/keyboards/melgeek/mojo68/rev1/config.h b/keyboards/melgeek/mojo68/rev1/config.h
index 74a7e3dc26..de50fb8b1e 100755
--- a/keyboards/melgeek/mojo68/rev1/config.h
+++ b/keyboards/melgeek/mojo68/rev1/config.h
@@ -29,7 +29,6 @@
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { B0 ,B1, B2, B3, D2, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/melgeek/mojo75/config.h b/keyboards/melgeek/mojo75/config.h
index 2db335dafb..67c79df409 100644
--- a/keyboards/melgeek/mojo75/config.h
+++ b/keyboards/melgeek/mojo75/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xEDED
-#define PRODUCT_ID 0x7075
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MelGeek
-#define PRODUCT MOJO75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
diff --git a/keyboards/melgeek/mojo75/info.json b/keyboards/melgeek/mojo75/info.json
index 95f750b9f2..7c3133d207 100644
--- a/keyboards/melgeek/mojo75/info.json
+++ b/keyboards/melgeek/mojo75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MoJo75",
+ "manufacturer": "MelGeek",
"url": "",
"maintainer": "melgeek001365",
+ "usb": {
+ "vid": "0xEDED",
+ "pid": "0x7075",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_75_ansi": {
"layout": [
diff --git a/keyboards/melgeek/mojo75/rev1/config.h b/keyboards/melgeek/mojo75/rev1/config.h
index eaac850b6d..f51798a308 100644
--- a/keyboards/melgeek/mojo75/rev1/config.h
+++ b/keyboards/melgeek/mojo75/rev1/config.h
@@ -29,7 +29,6 @@
#define MATRIX_ROW_PINS { B11, B10, B1, B0, A7, A6 }
#define MATRIX_COL_PINS { B12, B13, B14, B15, A8, A15, B3, B4, B5, B8, B9, C13, C14, C15, A0, A1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/melgeek/tegic/config.h b/keyboards/melgeek/tegic/config.h
index d264ec5e31..b16fb73b0d 100755
--- a/keyboards/melgeek/tegic/config.h
+++ b/keyboards/melgeek/tegic/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xEDED
-#define PRODUCT_ID 0x0081
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MelGeek
-#define PRODUCT tegic
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
diff --git a/keyboards/melgeek/tegic/info.json b/keyboards/melgeek/tegic/info.json
index 21a12ee113..5526ec080c 100755
--- a/keyboards/melgeek/tegic/info.json
+++ b/keyboards/melgeek/tegic/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "tegic",
+ "manufacturer": "MelGeek",
"url": "",
"maintainer": "melgeek001365",
+ "usb": {
+ "vid": "0xEDED",
+ "pid": "0x0081",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tegic_ansi": {
"layout": [
diff --git a/keyboards/melgeek/tegic/keymaps/default/keymap.c b/keyboards/melgeek/tegic/keymaps/default/keymap.c
index e4c0b126c7..8b03c11c19 100755
--- a/keyboards/melgeek/tegic/keymaps/default/keymap.c
+++ b/keyboards/melgeek/tegic/keymaps/default/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_tegic_ansi( /* FN */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, KC_END, _______,
- _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, RESET, _______, KC_INS, _______,
+ _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, QK_BOOT, _______, KC_INS, _______,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU,
_______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
diff --git a/keyboards/melgeek/tegic/keymaps/via/keymap.c b/keyboards/melgeek/tegic/keymaps/via/keymap.c
index 54c0222da0..fa60a3c181 100755
--- a/keyboards/melgeek/tegic/keymaps/via/keymap.c
+++ b/keyboards/melgeek/tegic/keymaps/via/keymap.c
@@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_tegic_ansi( /* FN */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______, KC_END, _______,
- _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, RESET, _______, KC_INS, _______,
+ _______, RGB_TOG, _______, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_MOD, _______, QK_BOOT, _______, KC_INS, _______,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SPI, RGB_SPD, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, KC_VOLU,
_______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
diff --git a/keyboards/melgeek/tegic/readme.md b/keyboards/melgeek/tegic/readme.md
index da2698e412..f6676e1ce4 100755
--- a/keyboards/melgeek/tegic/readme.md
+++ b/keyboards/melgeek/tegic/readme.md
@@ -18,6 +18,6 @@ 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 *
+**Keycode in layout**: Press the key mapped to `QK_BOOT` 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/melgeek/tegic/rev1/config.h b/keyboards/melgeek/tegic/rev1/config.h
index d847fd2364..49d4550be9 100755
--- a/keyboards/melgeek/tegic/rev1/config.h
+++ b/keyboards/melgeek/tegic/rev1/config.h
@@ -29,7 +29,6 @@
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, D3 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, D2, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/melgeek/z70ultra/config.h b/keyboards/melgeek/z70ultra/config.h
index 0f294c9e00..2b5f6e5955 100644
--- a/keyboards/melgeek/z70ultra/config.h
+++ b/keyboards/melgeek/z70ultra/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xEDED
-#define PRODUCT_ID 0x6570
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MelGeek
-#define PRODUCT Z70Ultra
-
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/melgeek/z70ultra/info.json b/keyboards/melgeek/z70ultra/info.json
index e24b177070..9cb5ad05fe 100644
--- a/keyboards/melgeek/z70ultra/info.json
+++ b/keyboards/melgeek/z70ultra/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Z70Ultra",
+ "manufacturer": "MelGeek",
"url": "",
"maintainer": "melgeek001365",
+ "usb": {
+ "vid": "0xEDED",
+ "pid": "0x6570",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/melgeek/z70ultra/rev1/config.h b/keyboards/melgeek/z70ultra/rev1/config.h
index 4593051758..022e318da1 100644
--- a/keyboards/melgeek/z70ultra/rev1/config.h
+++ b/keyboards/melgeek/z70ultra/rev1/config.h
@@ -33,5 +33,4 @@
#define MATRIX_ROW_PINS { B12, B13, B14, B15, A3, B9 }
#define MATRIX_COL_PINS { B11, B10, B1, A10, B5, B4, B3, A15, A2, A1, A0, C15, C14, C13 }
-#define UNUSED_PINS
diff --git a/keyboards/meme/config.h b/keyboards/meme/config.h
index 58bc794ee8..83353f9ba0 100644
--- a/keyboards/meme/config.h
+++ b/keyboards/meme/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Switchmod Keyboards
-#define PRODUCT Meme
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C2, D0, D1, D4, D5, D6, B0, B1, B2, B3 }
#define MATRIX_COL_PINS { D3, D2, B5, B6, C7, C6, C5, C4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/meme/info.json b/keyboards/meme/info.json
index 57bf54633f..07327ce3c8 100644
--- a/keyboards/meme/info.json
+++ b/keyboards/meme/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Meme",
+ "manufacturer": "Switchmod Keyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_spicy": {
"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}, {"x":13, "y":0}, {"x":14, "y":0}, {"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}, {"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}, {"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}, {"x":14, "y":3}, {"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}, {"label":"Win", "x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
diff --git a/keyboards/meow65/config.h b/keyboards/meow65/config.h
index 20f725ee30..ecdf7311a4 100644
--- a/keyboards/meow65/config.h
+++ b/keyboards/meow65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/meow65/info.json b/keyboards/meow65/info.json
index 7221a518bd..85d6e8577b 100644
--- a/keyboards/meow65/info.json
+++ b/keyboards/meow65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "meow65",
+ "keyboard_name": "Meow65",
+ "manufacturer": "mrninhvn",
"url": "https://github.com/mrninhvn/meow65-pcb",
"maintainer": "mrninhvn",
+ "usb": {
+ "vid": "0x6E64",
+ "pid": "0x4D36",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_65_ansi_blocker"
},
diff --git a/keyboards/meow65/readme.md b/keyboards/meow65/readme.md
index 734a278082..1fe52c3e36 100644
--- a/keyboards/meow65/readme.md
+++ b/keyboards/meow65/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/merge/iso_macro/config.h b/keyboards/merge/iso_macro/config.h
index 05ca6f05f7..f5a82d2df8 100644
--- a/keyboards/merge/iso_macro/config.h
+++ b/keyboards/merge/iso_macro/config.h
@@ -18,19 +18,12 @@
#include "config_common.h"
-#define VENDOR_ID 0x4D65
-#define PRODUCT_ID 0x1200
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Merge
-#define PRODUCT ISO Macro
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
#define MATRIX_ROW_PINS { F4, F5, F6}
#define MATRIX_COL_PINS { B4, B5, B6}
-#define UNUSED_PINS
#define BACKLIGHT_PIN B7
/* COL2ROW or ROW2COL */
diff --git a/keyboards/merge/iso_macro/info.json b/keyboards/merge/iso_macro/info.json
index df31150821..bdade6a712 100644
--- a/keyboards/merge/iso_macro/info.json
+++ b/keyboards/merge/iso_macro/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ISO Macro",
+ "manufacturer": "Merge",
"url": "",
"maintainer": "duoshock",
+ "usb": {
+ "vid": "0x4D65",
+ "pid": "0x1200",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/merge/uc1/config.h b/keyboards/merge/uc1/config.h
index f33d7a6548..3d89ba0a57 100644
--- a/keyboards/merge/uc1/config.h
+++ b/keyboards/merge/uc1/config.h
@@ -16,19 +16,12 @@
#include "config_common.h"
-#define VENDOR_ID 0x4D65
-#define PRODUCT_ID 0x5543
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Merge
-#define PRODUCT UC-1
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 2
#define MATRIX_ROW_PINS { B1, B2 }
#define MATRIX_COL_PINS { B3, B4 }
-#define UNUSED_PINS
#define RGB_DI_PIN B5
#define RGBLED_NUM 12
diff --git a/keyboards/merge/uc1/info.json b/keyboards/merge/uc1/info.json
index 5452e1e7cb..ed4beff454 100644
--- a/keyboards/merge/uc1/info.json
+++ b/keyboards/merge/uc1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "UC-1",
+ "manufacturer": "Merge",
"url": "https://mergedesign.store/products/uc-1",
"maintainer": "duoshock",
+ "usb": {
+ "vid": "0x4D65",
+ "pid": "0x5543",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/merge/um70/config.h b/keyboards/merge/um70/config.h
index a1374aa9a3..b22bd3fb10 100644
--- a/keyboards/merge/um70/config.h
+++ b/keyboards/merge/um70/config.h
@@ -16,18 +16,11 @@
#include "config_common.h"
-#define VENDOR_ID 0x4D65
-#define PRODUCT_ID 0x3222
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Merge
-#define PRODUCT UM-70
-
#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
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/merge/um70/info.json b/keyboards/merge/um70/info.json
index f0fc07a95e..20b0d918f7 100644
--- a/keyboards/merge/um70/info.json
+++ b/keyboards/merge/um70/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "UM-70",
+ "manufacturer": "Merge",
"url": "https://mergedesign.store/um-70",
"maintainer": "duoshock",
+ "usb": {
+ "vid": "0x4D65",
+ "pid": "0x3222",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_rspace_2u_bksp": {
"layout": [{"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":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, "w":2}, {"x":17.75, "y":0}, {"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.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.75, "y":1}, {"x":0, "y":2}, {"x":1.5, "y":2, "w":1.75}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "y":2}, {"x":6.25, "y":2}, {"x":7.25, "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.75, "y":2}, {"x":0, "y":3}, {"x":1.5, "y":3, "w":2.25}, {"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":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.5, "y":3.25}, {"x":0, "y":4}, {"x":1.5, "y":4, "w":1.25}, {"x":2.75, "y":4, "w":1.25}, {"x":4, "y":4, "w":1.25}, {"x":5.25, "y":4, "w":1.25}, {"x":6.5, "y":4, "w":2.25}, {"x":9.5, "y":4, "w":2.75}, {"x":12.25, "y":4, "w":1.5}, {"x":13.75, "y":4, "w":1.5}, {"x":15.5, "y":4.25}, {"x":16.5, "y":4.25}, {"x":17.5, "y":4.25}]
diff --git a/keyboards/merge/um80/config.h b/keyboards/merge/um80/config.h
new file mode 100644
index 0000000000..d76eee087a
--- /dev/null
+++ b/keyboards/merge/um80/config.h
@@ -0,0 +1,56 @@
+/* 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 MATRIX_ROWS 12
+#define MATRIX_COLS 8
+
+#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7, C7 }
+#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D6, D4 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define SOFT_SERIAL_PIN D2
+#define SPLIT_USB_DETECT
+#define MASTER_LEFT
+#define SPLIT_MODS_ENABLE
+
+#define RGB_DI_PIN D3
+#define RGBLIGHT_SPLIT
+#define RGBLED_NUM 100
+#define RGBLED_SPLIT { 48, 52 }
+#ifdef RGB_MATRIX_ENABLE
+# define DRIVER_LED_TOTAL RGBLED_NUM
+# define RGB_MATRIX_SPLIT RGBLED_SPLIT
+#endif
+#define RGBLIGHT_SLEEP
+#define RGBLIGHT_LIMIT_VAL 120
+
+#define DEBOUNCE 5
+
+#define AUDIO_PIN B6
+
+#ifdef AUDIO_ENABLE
+ #define STARTUP_SONG SONG(STARTUP_SOUND)
+#endif
+
+#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/um80/info.json b/keyboards/merge/um80/info.json
new file mode 100644
index 0000000000..1f367c9183
--- /dev/null
+++ b/keyboards/merge/um80/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "UM-80",
+ "manufacturer": "Merge",
+ "url": "https://mergedesign.store/um-80",
+ "maintainer": "duoshock",
+ "usb": {
+ "vid": "0x4D65",
+ "pid": "0x3241",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_rspace_split_bksp": {
+ "layout": [{"label":"Esc", "x":1.5, "y":0}, {"label":"F1", "x":2.75, "y":0}, {"label":"F2", "x":3.75, "y":0}, {"label":"F3", "x":4.75, "y":0}, {"label":"F4", "x":5.75, "y":0}, {"label":"F5", "x":7, "y":0}, {"label":"F6", "x":8, "y":0}, {"label":"F7", "x":10.25, "y":0}, {"label":"F8", "x":11.25, "y":0}, {"label":"F9", "x":12.5, "y":0}, {"label":"F10", "x":13.5, "y":0}, {"label":"F11", "x":14.5, "y":0}, {"label":"F12", "x":15.5, "y":0}, {"label":"Del", "x":16.75, "y":0}, {"label":"Encoder", "x":18.25, "y":0}, {"label":"~", "x":1.5, "y":1.25}, {"label":"!", "x":2.5, "y":1.25}, {"label":"@", "x":3.5, "y":1.25}, {"label":"#", "x":4.5, "y":1.25}, {"label":"$", "x":5.5, "y":1.25}, {"label":"%", "x":6.5, "y":1.25}, {"label":"^", "x":7.5, "y":1.25}, {"label":"&", "x":9.75, "y":1.25}, {"label":"*", "x":10.75, "y":1.25}, {"label":"(", "x":11.75, "y":1.25}, {"label":")", "x":12.75, "y":1.25}, {"label":"_", "x":13.75, "y":1.25}, {"label":"+", "x":14.75, "y":1.25}, {"label":"~", "x":15.75, "y":1.25}, {"label":"Bksp", "x":16.75, "y":1.25}, {"label":"Home", "x":18.25, "y":1.25}, {"label":"M0", "x":0, "y":2.25}, {"label":"Tab", "x":1.5, "y":2.25, "w":1.5}, {"label":"Q", "x":3, "y":2.25}, {"label":"W", "x":4, "y":2.25}, {"label":"E", "x":5, "y":2.25}, {"label":"R", "x":6, "y":2.25}, {"label":"T", "x":7, "y":2.25}, {"label":"Y", "x":9.25, "y":2.25}, {"label":"U", "x":10.25, "y":2.25}, {"label":"I", "x":11.25, "y":2.25}, {"label":"O", "x":12.25, "y":2.25}, {"label":"P", "x":13.25, "y":2.25}, {"label":"{", "x":14.25, "y":2.25}, {"label":"}", "x":15.25, "y":2.25}, {"label":"|", "x":16.25, "y":2.25, "w":1.5}, {"label":"PgUp", "x":18.25, "y":2.25}, {"label":"M1", "x":0, "y":3.25}, {"label":"Caps Lock", "x":1.5, "y":3.25, "w":1.75}, {"label":"A", "x":3.25, "y":3.25}, {"label":"S", "x":4.25, "y":3.25}, {"label":"D", "x":5.25, "y":3.25}, {"label":"F", "x":6.25, "y":3.25}, {"label":"G", "x":7.25, "y":3.25}, {"label":"H", "x":9.5, "y":3.25}, {"label":"J", "x":10.5, "y":3.25}, {"label":"K", "x":11.5, "y":3.25}, {"label":"L", "x":12.5, "y":3.25}, {"label":":", "x":13.5, "y":3.25}, {"label":"\"", "x":14.5, "y":3.25}, {"label":"Enter", "x":15.5, "y":3.25, "w":2.25}, {"label":"PgDn", "x":18.25, "y":3.25}, {"label":"M2", "x":0, "y":4.25}, {"label":"Shift", "x":1.5, "y":4.25, "w":2.25}, {"label":"Z", "x":3.75, "y":4.25}, {"label":"X", "x":4.75, "y":4.25}, {"label":"C", "x":5.75, "y":4.25}, {"label":"V", "x":6.75, "y":4.25}, {"label":"B", "x":7.75, "y":4.25}, {"label":"N", "x":10, "y":4.25}, {"label":"M", "x":11, "y":4.25}, {"label":"<", "x":12, "y":4.25}, {"label":">", "x":13, "y":4.25}, {"label":"?", "x":14, "y":4.25}, {"label":"Shift", "x":15, "y":4.25, "w":1.75}, {"label":"\u2191", "x":17, "y":4.5}, {"label":"M3", "x":0, "y":5.25}, {"label":"Ctrl", "x":1.5, "y":5.25, "w":1.25}, {"label":"Win", "x":2.75, "y":5.25, "w":1.25}, {"label":"Alt", "x":4, "y":5.25, "w":1.25}, {"x":5.25, "y":5.25, "w":1.25}, {"x":6.5, "y":5.25, "w":2.25}, {"x":10, "y":5.25, "w":2.75}, {"label":"Alt", "x":12.75, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":14.25, "y":5.25, "w":1.5}, {"label":"\u2190", "x":16, "y":5.5}, {"label":"\u2193", "x":17, "y":5.5}, {"label":"\u2192", "x":18, "y":5.5}]
+ }
+ }
+}
diff --git a/keyboards/merge/um80/keymaps/default/keymap.c b/keyboards/merge/um80/keymaps/default/keymap.c
new file mode 100644
index 0000000000..04dea2c1be
--- /dev/null
+++ b/keyboards/merge/um80/keymaps/default/keymap.c
@@ -0,0 +1,71 @@
+/* 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| F1| F2| F3| F4| F5| F6| | F7| F8| F9| F10| F11| F12| Del| |EC |
+ * '---------------------------' '-------------------------------' '---'
+ * .---------------------------. .-------------------------------. .---.
+ * |Esc| 1| 2| 3| 4| 5| 6| | 7| 8| 9| 0| -| =|` |Bsp| |Hom|
+ * .---. |-------------------------. .---------------------------------| |---|
+ * | 1| |Tab | Q| W| E| R| T| | Y| U| I| O| P| [| ]| \ | |PgU|
+ * |---| |-------------------------. '---------------------------------| |---|
+ * | 2| |CapsL | A| S| D| F| G| | H| J| K| L| ;| :| Retn | |PgD|
+ * |---| |----------------------------. '--------------------------------| .---. '---'
+ * | 3| |Shft | Z| X| C| V| B| | N| M| ,| ,| /| Shift| |Up |
+ * |---| |----------------------------| |---------------------------' .-----------.
+ * | 4| |Ctl |Gui |Alt |Fn0 |Space | | Space| Alt| Ctl| |Lef|Dow|Rig|
+ * '---' '----------------------------' '-----------------------' '-----------'
+ */
+
+[0] = LAYOUT_rspace_split_bksp(
+ KC_ESC, KC_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_GRV, KC_BSPC, KC_HOME,
+ KC_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_PGUP,
+ KC_2, KC_CAPS, KC_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_3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_4, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+[1] = LAYOUT_rspace_split_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ 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_rspace_split_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ 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_rspace_split_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ 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/um80/keymaps/default/readme.md b/keyboards/merge/um80/keymaps/default/readme.md
new file mode 100644
index 0000000000..a5bfc566d9
--- /dev/null
+++ b/keyboards/merge/um80/keymaps/default/readme.md
@@ -0,0 +1,5 @@
+# Default UM-80 Layout
+
+![UM-80 Layout Image](https://i.imgur.com/YsW6FSZ.jpeg)
+
+This is the default layout that comes flashed on every UM-80.
diff --git a/keyboards/merge/um80/keymaps/default/rules.mk b/keyboards/merge/um80/keymaps/default/rules.mk
new file mode 100644
index 0000000000..1888ce3a12
--- /dev/null
+++ b/keyboards/merge/um80/keymaps/default/rules.mk
@@ -0,0 +1,2 @@
+WPM_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/merge/um80/keymaps/via/config.h b/keyboards/merge/um80/keymaps/via/config.h
new file mode 100644
index 0000000000..c60f7b110a
--- /dev/null
+++ b/keyboards/merge/um80/keymaps/via/config.h
@@ -0,0 +1,22 @@
+/* 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
+
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
diff --git a/keyboards/merge/um80/keymaps/via/keymap.c b/keyboards/merge/um80/keymaps/via/keymap.c
new file mode 100644
index 0000000000..04dea2c1be
--- /dev/null
+++ b/keyboards/merge/um80/keymaps/via/keymap.c
@@ -0,0 +1,71 @@
+/* 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| F1| F2| F3| F4| F5| F6| | F7| F8| F9| F10| F11| F12| Del| |EC |
+ * '---------------------------' '-------------------------------' '---'
+ * .---------------------------. .-------------------------------. .---.
+ * |Esc| 1| 2| 3| 4| 5| 6| | 7| 8| 9| 0| -| =|` |Bsp| |Hom|
+ * .---. |-------------------------. .---------------------------------| |---|
+ * | 1| |Tab | Q| W| E| R| T| | Y| U| I| O| P| [| ]| \ | |PgU|
+ * |---| |-------------------------. '---------------------------------| |---|
+ * | 2| |CapsL | A| S| D| F| G| | H| J| K| L| ;| :| Retn | |PgD|
+ * |---| |----------------------------. '--------------------------------| .---. '---'
+ * | 3| |Shft | Z| X| C| V| B| | N| M| ,| ,| /| Shift| |Up |
+ * |---| |----------------------------| |---------------------------' .-----------.
+ * | 4| |Ctl |Gui |Alt |Fn0 |Space | | Space| Alt| Ctl| |Lef|Dow|Rig|
+ * '---' '----------------------------' '-----------------------' '-----------'
+ */
+
+[0] = LAYOUT_rspace_split_bksp(
+ KC_ESC, KC_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_GRV, KC_BSPC, KC_HOME,
+ KC_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_PGUP,
+ KC_2, KC_CAPS, KC_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_3, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_4, KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+),
+
+[1] = LAYOUT_rspace_split_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ 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_rspace_split_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ 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_rspace_split_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ 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/um80/keymaps/via/rules.mk b/keyboards/merge/um80/keymaps/via/rules.mk
new file mode 100644
index 0000000000..cc9055e91e
--- /dev/null
+++ b/keyboards/merge/um80/keymaps/via/rules.mk
@@ -0,0 +1,6 @@
+VIA_ENABLE = yes
+WPM_ENABLE = yes
+LTO_ENABLE = yes
+SPACE_CADET_ENABLE = no
+GRAVE_ESC_ENABLE = no
+MAGIC_ENABLE = no
diff --git a/keyboards/merge/um80/readme.md b/keyboards/merge/um80/readme.md
new file mode 100644
index 0000000000..ad9caf244f
--- /dev/null
+++ b/keyboards/merge/um80/readme.md
@@ -0,0 +1,22 @@
+# UM-80
+
+![UM-80](https://i.imgur.com/JVEC4Ntl.jpeg)
+
+UM-80 is a split keyboard in 75% layout with RGB, macro keys, OLED screen and encoder housed in PLA 3D printed cases sold by Merge. [Product page](https://mergedesign.store/products/um-80)
+
+* Keyboard Maintainer: [duoshock](https://github.com/duoshock)
+* Hardware Availability: [Merge Store](https://mergedesign.store/products/um-80)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make merge/um80: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 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.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. \ No newline at end of file
diff --git a/keyboards/merge/um80/rules.mk b/keyboards/merge/um80/rules.mk
new file mode 100644
index 0000000000..8865137009
--- /dev/null
+++ b/keyboards/merge/um80/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 = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+SPLIT_KEYBOARD = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
diff --git a/keyboards/merge/um80/um80.c b/keyboards/merge/um80/um80.c
new file mode 100644
index 0000000000..557197c89d
--- /dev/null
+++ b/keyboards/merge/um80/um80.c
@@ -0,0 +1,123 @@
+/* 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 "um80.h"
+
+#ifndef WPM_ENABLE
+# define get_current_wpm() 0
+#endif
+
+#ifdef OLED_ENABLE
+void suspend_power_down_kb(void) {
+ oled_off();
+ suspend_power_down_user();
+}
+
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_90;
+ }
+
+ return rotation;
+}
+
+//UM-80 logo
+static void render_logo(void) {
+ static const char PROGMEM raw_logo[] = {
+ 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,248,224,192,128,224,248,252,254,254,254,0,0,128,128,128,128,128,128,0,0,0,120,252,254,206,
+ 206,206,206,254,124,120,0,0,240,248,252,62,30,14,14,30,62,252,248,240,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,63,63,124,112,112,112,112,124,63,63,15,0,0,0,127,127,127,0,1,7,15,
+ 15,7,1,0,127,127,127,0,0,3,3,3,3,3,3,1,0,30,63,127,123,113,113,113,123,127,63,30,0,0,15,31,63,124,120,112,112,120,
+ 124,63,31,15,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,0,0,0,0,0
+ };
+ oled_write_raw_P(raw_logo, sizeof(raw_logo));
+}
+
+
+// 32 * 18 Merge logo
+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
+};
+
+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/um80/um80.h b/keyboards/merge/um80/um80.h
new file mode 100644
index 0000000000..9e17b70021
--- /dev/null
+++ b/keyboards/merge/um80/um80.h
@@ -0,0 +1,43 @@
+/* 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_rspace_split_bksp( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, \
+ L10, L11, L12, L13, L14, L15, L16, R10, R11, R12, R13, R14, R15, R16, R17, R37, \
+ L27, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, R26, R27, R47, \
+ L37, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, R36, R57, \
+ L47, L40, L41, L42, L43, L44, L45, R40, R41, R42, R43, R44, R45, R56,\
+ L57, L50, L51, L52, L53, L54, R50, R51, R52, R53, R54, R55 \
+) { \
+ { L00, L01, L02, L03, L04, L05, L06, XXX }, \
+ { L10, L11, L12, L13, L14, L15, L16, XXX }, \
+ { L20, L21, L22, L23, L24, L25, XXX, L27 }, \
+ { L30, L31, L32, L33, L34, L35, XXX, L37 }, \
+ { L40, L41, L42, L43, L44, L45, XXX, L47 }, \
+ { L50, L51, L52, L53, L54, XXX, XXX, L57 }, \
+ { 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, XXX, R47 }, \
+ { R50, R51, R52, R53, R54, R55, R56, R57 } \
+}
diff --git a/keyboards/merge/uma/config.h b/keyboards/merge/uma/config.h
index 46bad7185f..99343cc152 100644
--- a/keyboards/merge/uma/config.h
+++ b/keyboards/merge/uma/config.h
@@ -16,18 +16,11 @@
#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
diff --git a/keyboards/merge/uma/info.json b/keyboards/merge/uma/info.json
index 8cd1ca3ddd..96ed8c0148 100644
--- a/keyboards/merge/uma/info.json
+++ b/keyboards/merge/uma/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "UM-A",
+ "manufacturer": "Merge",
"url": "https://mergedesign.store/products/um-a",
"maintainer": "duoshock",
+ "usb": {
+ "vid": "0x4D65",
+ "pid": "0x3232",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/mesa/mesa_tkl/config.h b/keyboards/mesa/mesa_tkl/config.h
index 348d95a809..8d322d52e7 100644
--- a/keyboards/mesa/mesa_tkl/config.h
+++ b/keyboards/mesa/mesa_tkl/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E5A
-#define PRODUCT_ID 0x8001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mesa Keyboards
-#define PRODUCT Mesa TKL
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D2, D1, D0, B0, C6, C7 }
#define MATRIX_COL_PINS { D3, D5, D4, D6, D7, B4, B5, B6, F7, F6, F5, F4, F1, F0, B1, B2, B3 }
-#define UNUSED_PINS { B7, E6 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mesa/mesa_tkl/info.json b/keyboards/mesa/mesa_tkl/info.json
index c546ae5e97..e1bf4b1dc9 100644
--- a/keyboards/mesa/mesa_tkl/info.json
+++ b/keyboards/mesa/mesa_tkl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mesa TKL",
+ "manufacturer": "Mesa Keyboards",
"url": "https://mesakeyboards.com",
"maintainer": "MesaKeyboards",
+ "usb": {
+ "vid": "0x4E5A",
+ "pid": "0x8001",
+ "device_version": "0.0.1"
+ },
"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":"Back Space", "x":13, "y":1.25}, {"label":"Split BkSp", "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":1.25}, {"label":"NUBS", "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.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":"Win", "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/meson/config.h b/keyboards/meson/config.h
index 3abeb479a2..0206db4674 100644
--- a/keyboards/meson/config.h
+++ b/keyboards/meson/config.h
@@ -19,20 +19,12 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Luciano M
-#define PRODUCT Meson
-
/* key matrix size */
#define MATRIX_ROWS 8 // 4 rows each half
#define MATRIX_COLS 7
#define MATRIX_ROW_PINS { F7, C6, F6, F5 }
#define MATRIX_COL_PINS { D4, D7, E6, B3, B2, B6, F4 }
-// #define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/meson/info.json b/keyboards/meson/info.json
index fd4fd1b6fc..cc052c37fa 100644
--- a/keyboards/meson/info.json
+++ b/keyboards/meson/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Meson",
+ "manufacturer": "Luciano M",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/metamechs/timberwolf/config.h b/keyboards/metamechs/timberwolf/config.h
index fa0791a8ea..46d62e795d 100644
--- a/keyboards/metamechs/timberwolf/config.h
+++ b/keyboards/metamechs/timberwolf/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6D6D // MetaMechs
-#define PRODUCT_ID 0x5754 // TW
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MetaMechs
-#define PRODUCT Timber Wolf
-
/* key matrix size */
#define MATRIX_COLS 9
#define MATRIX_ROWS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_COL_PINS { B2, D1, D2, C7, F5, F6, F7, F0, E6 }
#define MATRIX_ROW_PINS { B6, B5, B4, D7, D6, D4, D5, D3, F4, F1, B1, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/metamechs/timberwolf/info.json b/keyboards/metamechs/timberwolf/info.json
index 602ef358c5..89e5e796b8 100644
--- a/keyboards/metamechs/timberwolf/info.json
+++ b/keyboards/metamechs/timberwolf/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Timber Wolf",
+ "manufacturer": "MetaMechs",
"url": "https://geekhack.org/index.php?topic=102520.0",
"maintainer": "Croktopus",
+ "usb": {
+ "vid": "0x6D6D",
+ "pid": "0x5754",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/metamechs/timberwolf/keymaps/a_ansi/keymap.c b/keyboards/metamechs/timberwolf/keymaps/a_ansi/keymap.c
index 7d66af49bc..5727d78784 100644
--- a/keyboards/metamechs/timberwolf/keymaps/a_ansi/keymap.c
+++ b/keyboards/metamechs/timberwolf/keymaps/a_ansi/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MO(1) ,KC_LCTL,KC_LGUI,KC_LALT ,KC_SPC ,KC_RALT,KC_RCTL ,KC_LEFT,KC_DOWN,KC_RGHT,KC_PENT
),
[1] = LAYOUT_a_ansi(
- RESET ,RESET ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,_______,
+ QK_BOOT,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______ ,_______ ,
diff --git a/keyboards/metamechs/timberwolf/keymaps/a_iso/keymap.c b/keyboards/metamechs/timberwolf/keymaps/a_iso/keymap.c
index 78a77d0f83..e10dd0116a 100644
--- a/keyboards/metamechs/timberwolf/keymaps/a_iso/keymap.c
+++ b/keyboards/metamechs/timberwolf/keymaps/a_iso/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MO(1) ,KC_LCTL,KC_LGUI,KC_LALT ,KC_SPC ,KC_RALT,KC_RCTL ,KC_LEFT,KC_DOWN,KC_RGHT,KC_PENT
),
[1] = LAYOUT_a_iso(
- RESET ,RESET ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,_______,
+ QK_BOOT,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______ ,
diff --git a/keyboards/metamechs/timberwolf/keymaps/b_ansi/keymap.c b/keyboards/metamechs/timberwolf/keymaps/b_ansi/keymap.c
index 9f435715d5..5155eb2487 100644
--- a/keyboards/metamechs/timberwolf/keymaps/b_ansi/keymap.c
+++ b/keyboards/metamechs/timberwolf/keymaps/b_ansi/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MO(1) ,KC_LCTL,KC_LGUI,KC_LALT ,KC_SPC ,KC_RALT,KC_RGUI,KC_RCTL ,KC_LEFT,KC_DOWN,KC_RGHT
),
[1] = LAYOUT_b_ansi(
- RESET ,RESET ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,_______,
+ QK_BOOT,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______ ,_______,_______,
diff --git a/keyboards/metamechs/timberwolf/keymaps/b_iso/keymap.c b/keyboards/metamechs/timberwolf/keymaps/b_iso/keymap.c
index 85217a940b..19de0b7b61 100644
--- a/keyboards/metamechs/timberwolf/keymaps/b_iso/keymap.c
+++ b/keyboards/metamechs/timberwolf/keymaps/b_iso/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MO(1) ,KC_LCTL,KC_LGUI,KC_LALT ,KC_SPC ,KC_RALT,KC_RGUI,KC_RCTL ,KC_LEFT,KC_DOWN,KC_RGHT
),
[1] = LAYOUT_b_iso(
- RESET ,RESET ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,_______,
+ QK_BOOT,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,
diff --git a/keyboards/metamechs/timberwolf/keymaps/prime_ansi/keymap.c b/keyboards/metamechs/timberwolf/keymaps/prime_ansi/keymap.c
index 4a49bdf0ad..bef8809f37 100644
--- a/keyboards/metamechs/timberwolf/keymaps/prime_ansi/keymap.c
+++ b/keyboards/metamechs/timberwolf/keymaps/prime_ansi/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MO(1) ,KC_LCTL,KC_LGUI,KC_LALT ,KC_SPC ,KC_RALT,KC_RGUI,KC_RCTL ,KC_LEFT,KC_DOWN,KC_RGHT
),
[1] = LAYOUT_prime_ansi(
- RESET ,RESET ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,_______,
+ QK_BOOT,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______ ,_______,_______,
diff --git a/keyboards/metamechs/timberwolf/keymaps/prime_iso/keymap.c b/keyboards/metamechs/timberwolf/keymaps/prime_iso/keymap.c
index 1818ea4a3b..f65bc3bae4 100644
--- a/keyboards/metamechs/timberwolf/keymaps/prime_iso/keymap.c
+++ b/keyboards/metamechs/timberwolf/keymaps/prime_iso/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MO(1) ,KC_LCTL,KC_LGUI,KC_LALT ,KC_SPC ,KC_RALT,KC_RGUI,KC_RCTL ,KC_LEFT,KC_DOWN,KC_RGHT
),
[1] = LAYOUT_prime_iso(
- RESET ,RESET ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,_______,
+ QK_BOOT,QK_BOOT,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______ ,_______,_______,
diff --git a/keyboards/mexsistor/ludmila/config.h b/keyboards/mexsistor/ludmila/config.h
index 431e1a9118..324a1c4baa 100644
--- a/keyboards/mexsistor/ludmila/config.h
+++ b/keyboards/mexsistor/ludmila/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x69CC
-#define PRODUCT_ID 0x6BF6
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Kevin M.
-#define PRODUCT Ludmila Macropad
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 2
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, C7, F7 }
#define MATRIX_COL_PINS { F4, F1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mexsistor/ludmila/info.json b/keyboards/mexsistor/ludmila/info.json
index 7df5d57670..d682d3e6cb 100644
--- a/keyboards/mexsistor/ludmila/info.json
+++ b/keyboards/mexsistor/ludmila/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ludmila",
+ "keyboard_name": "Ludmila Macropad",
+ "manufacturer": "Kevin M.",
"url": "",
"maintainer": "Kevin M.",
+ "usb": {
+ "vid": "0x69CC",
+ "pid": "0x6BF6",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mikeneko65/config.h b/keyboards/mikeneko65/config.h
index 33faf278f1..f8be58b6d9 100644
--- a/keyboards/mikeneko65/config.h
+++ b/keyboards/mikeneko65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, 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
diff --git a/keyboards/mikeneko65/info.json b/keyboards/mikeneko65/info.json
index 458b29df48..e7ac610859 100644
--- a/keyboards/mikeneko65/info.json
+++ b/keyboards/mikeneko65/info.json
@@ -1,10 +1,91 @@
{
"keyboard_name": "Mikeneko 65",
+ "manufacturer": "takishim",
"url": "https://github.com/takishim/mikeneko65",
"maintainer": "takishim",
+ "usb": {
+ "vid": "0x7934",
+ "pid": "0x6D54",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT_all": "LAYOUT_65_ansi_blocker"
+ },
"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}]
+ "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}
+ ]
}
}
}
diff --git a/keyboards/mikeneko65/keymaps/default/keymap.c b/keyboards/mikeneko65/keymaps/default/keymap.c
index 108ba0beb0..60b46db34a 100644
--- a/keyboards/mikeneko65/keymaps/default/keymap.c
+++ b/keyboards/mikeneko65/keymaps/default/keymap.c
@@ -22,14 +22,14 @@ enum layer_names {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_all(
+ [_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, KC_RALT, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT
),
- [_FN] = LAYOUT_all(
+ [_FN] = LAYOUT_65_ansi_blocker(
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/keymaps/via/keymap.c b/keyboards/mikeneko65/keymaps/via/keymap.c
index 2b9d125809..b5cc1a0dd1 100644
--- a/keyboards/mikeneko65/keymaps/via/keymap.c
+++ b/keyboards/mikeneko65/keymaps/via/keymap.c
@@ -24,28 +24,28 @@ enum layer_names {
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_L0] = LAYOUT_all(
+ [_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, KC_RALT, MO(_L1), KC_LEFT, KC_DOWN, KC_RGHT
),
- [_L1] = LAYOUT_all(
+ [_L1] = LAYOUT_65_ansi_blocker(
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(
+ [_L2] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
- [_L3] = LAYOUT_all(
+ [_L3] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/mikeneko65/mikeneko65.h b/keyboards/mikeneko65/mikeneko65.h
index 5f4a913fc9..9273b0fdbc 100644
--- a/keyboards/mikeneko65/mikeneko65.h
+++ b/keyboards/mikeneko65/mikeneko65.h
@@ -19,7 +19,7 @@
#include "quantum.h"
-#define LAYOUT_all( \
+#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, \
diff --git a/keyboards/mikeneko65/readme.md b/keyboards/mikeneko65/readme.md
index c14889da70..4b70fe18a3 100644
--- a/keyboards/mikeneko65/readme.md
+++ b/keyboards/mikeneko65/readme.md
@@ -18,6 +18,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/rules.mk b/keyboards/mikeneko65/rules.mk
index 1275531ef6..59fa2e87f8 100644
--- a/keyboards/mikeneko65/rules.mk
+++ b/keyboards/mikeneko65/rules.mk
@@ -16,3 +16,5 @@ NKRO_ENABLE = 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 = 65_ansi_blocker
diff --git a/keyboards/miller/gm862/config.h b/keyboards/miller/gm862/config.h
index 57a832dc08..0e784fe527 100644
--- a/keyboards/miller/gm862/config.h
+++ b/keyboards/miller/gm862/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B42
-#define PRODUCT_ID 0x0223
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MILLER
-#define PRODUCT GM862
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -24,7 +17,6 @@
*/
#define MATRIX_ROW_PINS {F0, F1, F4, F5, B4}
#define MATRIX_COL_PINS {B5, B6, C6, C7, F7, F6, B0, B1, B2, B3, B7, D2, D3, D5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/miller/gm862/info.json b/keyboards/miller/gm862/info.json
index 5c784d1a18..189aba686b 100644
--- a/keyboards/miller/gm862/info.json
+++ b/keyboards/miller/gm862/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "GM862",
+ "manufacturer": "MILLER",
"url": "",
"maintainer": "MILLER",
+ "usb": {
+ "vid": "0x4B42",
+ "pid": "0x0223",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/millipad/config.h b/keyboards/millipad/config.h
index cfc91a2a16..7c0aa209c1 100644
--- a/keyboards/millipad/config.h
+++ b/keyboards/millipad/config.h
@@ -19,13 +19,6 @@ 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 0x1A1B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Jirou
-#define PRODUCT millipad
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6, C7 }
#define MATRIX_COL_PINS { F0, F1, F4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/millipad/info.json b/keyboards/millipad/info.json
index a50f69aa6f..4f0318ce65 100644
--- a/keyboards/millipad/info.json
+++ b/keyboards/millipad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "millipad",
+ "manufacturer": "Jirou",
"url": "https://github.com/GLozares/millipad",
"maintainer": "Jirou",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1A1B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mincedshon/ecila/config.h b/keyboards/mincedshon/ecila/config.h
new file mode 100644
index 0000000000..ebb1227f93
--- /dev/null
+++ b/keyboards/mincedshon/ecila/config.h
@@ -0,0 +1,37 @@
+// Copyright 2022 mincedshon (@mincedshon)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/*Bootmagic boot button, set to topmost, leftmost key */
+#define BOOTMAGIC_LITE_ROW 0
+#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
+
+//#define LED_NUM_LOCK_PIN D4
+//#define LED_CAPS_LOCK_PIN D6
+
+#define RGB_DI_PIN B0
+#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 6
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_LIMIT_VAL 150
+#define RGBLIGHT_SLEEP
diff --git a/keyboards/mincedshon/ecila/ecila.c b/keyboards/mincedshon/ecila/ecila.c
new file mode 100644
index 0000000000..909de998c9
--- /dev/null
+++ b/keyboards/mincedshon/ecila/ecila.c
@@ -0,0 +1,4 @@
+// Copyright 2022 mincedshon (@mincedshon)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "ecila.h"
diff --git a/keyboards/mincedshon/ecila/ecila.h b/keyboards/mincedshon/ecila/ecila.h
new file mode 100644
index 0000000000..5d03c58eca
--- /dev/null
+++ b/keyboards/mincedshon/ecila/ecila.h
@@ -0,0 +1,20 @@
+// Copyright 2022 mincedshon (@mincedshon)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.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 \
+) { \
+ { 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, KC_NO, k43 }, \
+ { k44, k45, k46, k47, k48, k49, k50, k51, k52, k53, k54, k55, k56, k57, k58 }, \
+ { KC_NO, k59, KC_NO, k60, KC_NO, k61, k62, KC_NO, k63, KC_NO, k64, KC_NO, k65, k66, k67 } \
+}
diff --git a/keyboards/mincedshon/ecila/info.json b/keyboards/mincedshon/ecila/info.json
new file mode 100644
index 0000000000..277cb6f9b9
--- /dev/null
+++ b/keyboards/mincedshon/ecila/info.json
@@ -0,0 +1,39 @@
+{
+ "keyboard_name": "ecila",
+ "manufacturer": "mincedshon",
+ "maintainer": "mincedshon",
+ "usb": {
+ "vid": "0x534B",
+ "pid": "0x534B",
+ "device_version": "0.0.1"
+ },
+ "bootloader": "atmel-dfu",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgblight": true
+ },
+ "debounce": 5,
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "cols": [ "B6", "F7", "F6", "F5", "F4", "F1", "F0", "D6", "B7", "D0", "D1", "D2", "D3", "D5", "D4" ],
+ "rows": [ "E6", "B3", "B5", "B4", "D7" ]
+ },
+ "processor": "atmega32u4",
+ "url": "",
+ "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":7.25, "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, "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.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}, {"x":16.5, "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":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}, {"x":15.75, "y":2, "w":2.25},
+ {"x":0, "y":3}, {"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.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.65, "y":3.25}, {"x":17, "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}, {"x":9.25, "y":4, "w":2.75}, {"x":12, "y":4}, {"x":14.65, "y":4.25}, {"x":15.65, "y":4.25}, {"x":16.65, "y":4.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mincedshon/ecila/keymaps/default/keymap.c b/keyboards/mincedshon/ecila/keymaps/default/keymap.c
new file mode 100644
index 0000000000..082b8133df
--- /dev/null
+++ b/keyboards/mincedshon/ecila/keymaps/default/keymap.c
@@ -0,0 +1,44 @@
+/*
+Copyright 2022 Sean Tan
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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(
+ 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_DEL, 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_DEL,
+ KC_LCTL, KC_LALT, KC_SPC, MO(_FN), KC_SPC, KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT
+
+ ),
+ [_FN] = LAYOUT(
+ 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_VOLD, KC_VOLU, RGB_TOG,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, RGB_RMOD, RGB_VAD, RGB_VAI, KC_TRNS,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_HUI, 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
+
+ )
+
+};
diff --git a/keyboards/mincedshon/ecila/keymaps/via/keymap.c b/keyboards/mincedshon/ecila/keymaps/via/keymap.c
new file mode 100644
index 0000000000..60bb6a37df
--- /dev/null
+++ b/keyboards/mincedshon/ecila/keymaps/via/keymap.c
@@ -0,0 +1,62 @@
+/*
+Copyright 2022 Sean Tan
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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(
+ 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_DEL, 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_DEL,
+ KC_LCTL, KC_LALT, KC_SPC, MO(_FN), KC_SPC, KC_LGUI, KC_LEFT, KC_DOWN, KC_RGHT
+
+ ),
+ [_FN] = LAYOUT(
+ 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_VOLD, KC_VOLU, RGB_TOG,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, RGB_RMOD, RGB_VAD, RGB_VAI, KC_TRNS,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_HUI, 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
+
+ ),
+ [_L3] = LAYOUT(
+ 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_VOLD, KC_VOLU, RGB_TOG,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, RGB_RMOD, RGB_VAD, RGB_VAI, KC_TRNS,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_HUI, 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
+
+ ),
+ [_L4] = LAYOUT(
+ 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_VOLD, KC_VOLU, RGB_TOG,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_MOD, RGB_RMOD, RGB_VAD, RGB_VAI, KC_TRNS,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUD, RGB_HUI, 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
+
+ )
+
+};
diff --git a/keyboards/mincedshon/ecila/keymaps/via/rules.mk b/keyboards/mincedshon/ecila/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/mincedshon/ecila/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/mincedshon/ecila/readme.md b/keyboards/mincedshon/ecila/readme.md
new file mode 100644
index 0000000000..fcea170710
--- /dev/null
+++ b/keyboards/mincedshon/ecila/readme.md
@@ -0,0 +1,25 @@
+# ecila
+
+An Alice layout with arrow cluster
+
+* Keyboard Maintainer: [mincedshon](https://github.com/mincedshon)
+* Hardware Supported: ecila
+* Hardware Availability: noooooooo
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mincedshon/ecila:default
+
+Flashing example for this keyboard:
+
+ make mincedshon/ecila: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 `QK_BOOT` if it is available
diff --git a/keyboards/mincedshon/ecila/rules.mk b/keyboards/mincedshon/ecila/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/mincedshon/ecila/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/mini_elixivy/config.h b/keyboards/mini_elixivy/config.h
index 863934df6b..529414f2c2 100644
--- a/keyboards/mini_elixivy/config.h
+++ b/keyboards/mini_elixivy/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER minibois
-#define PRODUCT mini_elixivy
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F7, F5, F4, F1, F0, B7, D0, D1, D2, D3, D4, D6, D7, B4, C6 }
#define ENCODERS_PAD_A { B0 }
#define ENCODERS_PAD_B { D5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mini_elixivy/info.json b/keyboards/mini_elixivy/info.json
index 44143a3c1b..6c6f962127 100644
--- a/keyboards/mini_elixivy/info.json
+++ b/keyboards/mini_elixivy/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "mini_elixivy",
+ "manufacturer": "minibois",
"url": "https://github.com/minibois/elixivy",
"maintainer": "minibois",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout":[
diff --git a/keyboards/mini_ten_key_plus/config.h b/keyboards/mini_ten_key_plus/config.h
index c8a44356f2..cb70a7d790 100644
--- a/keyboards/mini_ten_key_plus/config.h
+++ b/keyboards/mini_ten_key_plus/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER minibois
-#define PRODUCT mini_ten_key_plus
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 5
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/mini_ten_key_plus/info.json b/keyboards/mini_ten_key_plus/info.json
index cf3916bb68..b596fe5f48 100644
--- a/keyboards/mini_ten_key_plus/info.json
+++ b/keyboards/mini_ten_key_plus/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "mini_ten_key_plus",
+ "manufacturer": "minibois",
"url": "https://github.com/minibois/ten-key-plus",
"maintainer": "minibois",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout":[
diff --git a/keyboards/miniaxe/config.h b/keyboards/miniaxe/config.h
index 3c0ddf9074..99ebf5b9af 100644
--- a/keyboards/miniaxe/config.h
+++ b/keyboards/miniaxe/config.h
@@ -19,13 +19,6 @@ 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 0x3939
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ENDO Katsuhiro
-#define PRODUCT MiniAxe
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 5
@@ -49,7 +42,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ F6, F7, C7, D5, D3 }, \
{ B5, C6, B6, NO_PIN, NO_PIN } \
}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
////#define DIODE_DIRECTION
diff --git a/keyboards/miniaxe/info.json b/keyboards/miniaxe/info.json
index 40c9def62c..9780ffe554 100644
--- a/keyboards/miniaxe/info.json
+++ b/keyboards/miniaxe/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MiniAxe",
+ "manufacturer": "ENDO Katsuhiro",
"url": "",
"maintainer": "ka2hiro",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3939",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x5_3": {
"layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "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":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"J", "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":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "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":"Cmd", "x":2, "y":3}, {"label":"&dArr;", "x":3, "y":3}, {"label":"Ctrl", "x":4, "y":3}, {"x":6, "y":3}, {"label":"&uArr;", "x":7, "y":3}, {"label":"Opt", "x":8, "y":3}]
diff --git a/keyboards/miniaxe/keymaps/default/keymap.c b/keyboards/miniaxe/keymaps/default/keymap.c
index 45e1e131e8..81f8004e69 100644
--- a/keyboards/miniaxe/keymaps/default/keymap.c
+++ b/keyboards/miniaxe/keymaps/default/keymap.c
@@ -16,10 +16,12 @@
#include QMK_KEYBOARD_H
// Defines the keycodes used by our macros in process_record_user
-#define _QWERTY 0
-#define _LOWER 1
-#define _RAISE 2
-#define _ADJUST 16
+enum layer_names {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/miniaxe/keymaps/underglow/keymap.c b/keyboards/miniaxe/keymaps/underglow/keymap.c
index 362b29c608..31a7ccddf9 100644
--- a/keyboards/miniaxe/keymaps/underglow/keymap.c
+++ b/keyboards/miniaxe/keymaps/underglow/keymap.c
@@ -16,10 +16,12 @@
#include QMK_KEYBOARD_H
// Defines the keycodes used by our macros in process_record_user
-#define _QWERTY 0
-#define _LOWER 1
-#define _RAISE 2
-#define _ADJUST 16
+enum layer_names {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
@@ -103,7 +105,7 @@ 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, RGB_RMOD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, \
- RESET, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, KC_MPRV, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, \
+ QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, KC_MPRV, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, \
_______, _______, _______, _______, _______, _______ \
)
};
diff --git a/keyboards/minimacro5/config.h b/keyboards/minimacro5/config.h
index b48b5df21e..2dcc91f7ce 100644
--- a/keyboards/minimacro5/config.h
+++ b/keyboards/minimacro5/config.h
@@ -19,13 +19,6 @@ 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 PRODUCT_ID 0x0007
-#define DEVICE_VER 0x0001
-#define MANUFACTURER leafcutterlabs
-#define PRODUCT miniMACRO5
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 5
@@ -49,7 +42,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//speed for double tap
#define TAPPING_TERM 200
-#define UNUSED_PINS
/* rotary encoder 1,2,3 closest to usb port is 0*/
#define ENCODERS_PAD_B { D3, F6, F7, D4, C6}
diff --git a/keyboards/minimacro5/info.json b/keyboards/minimacro5/info.json
index 5649c57de4..0dba5c0e6c 100644
--- a/keyboards/minimacro5/info.json
+++ b/keyboards/minimacro5/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "minimacro5",
+ "keyboard_name": "miniMACRO5",
+ "manufacturer": "leafcutterlabs",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xCEEB",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_1x5": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":5, "y":0}]
diff --git a/keyboards/minimacro5/keymaps/devdev/keymap.c b/keyboards/minimacro5/keymaps/devdev/keymap.c
index d7f998fa3a..3c203fcc37 100644
--- a/keyboards/minimacro5/keymaps/devdev/keymap.c
+++ b/keyboards/minimacro5/keymaps/devdev/keymap.c
@@ -37,7 +37,7 @@ enum tap_dances{
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) { /* First encoder*/
- switch(biton32(layer_state)){
+ switch(get_highest_layer(layer_state)){
case _MAIN:
if (clockwise) {
tap_code(KC_VOLU);
diff --git a/keyboards/minimon/index_tab/config.h b/keyboards/minimon/index_tab/config.h
index fc02185545..21ad0c08b7 100644
--- a/keyboards/minimon/index_tab/config.h
+++ b/keyboards/minimon/index_tab/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B49
-#define PRODUCT_ID 0x1306
-#define DEVICE_VER 0x0001
-#define PRODUCT Index Tab
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 13
@@ -31,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { D3, B7, B3, B2, B1, B0 }
#define MATRIX_COL_PINS { F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D2, F1, F0 }
-#define UNUSED_PINS { F4, F5, F6, D1, D0 }
/* COL2ROW, ROW2COL*/
diff --git a/keyboards/minimon/index_tab/info.json b/keyboards/minimon/index_tab/info.json
index 209d3044fe..604c3881e1 100644
--- a/keyboards/minimon/index_tab/info.json
+++ b/keyboards/minimon/index_tab/info.json
@@ -1,10 +1,14 @@
{
"keyboard_name": "Index Tab",
- "maintainer": "kyrremann",
"url": "https://github.com/Kyrremann/index-tab",
"layout_aliases": {
"LAYOUT": "LAYOUT_ortho_6x13"
},
+ "usb": {
+ "vid": "0x4B49",
+ "pid": "0x1306",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_6x13": {
"layout": [
diff --git a/keyboards/mino/hotswap/config.h b/keyboards/mino/hotswap/config.h
index 27ec49f379..39042bfcff 100644
--- a/keyboards/mino/hotswap/config.h
+++ b/keyboards/mino/hotswap/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7877
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ShandonCodes
-#define PRODUCT Mino
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, C6, D4, D2}
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, B5, B4, E6, D7}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mino/hotswap/info.json b/keyboards/mino/hotswap/info.json
index 996dcf3b62..32231595ae 100644
--- a/keyboards/mino/hotswap/info.json
+++ b/keyboards/mino/hotswap/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mino",
+ "manufacturer": "ShandonCodes",
"url": "https://qmk.fm/keyboards/",
"maintainer": "ShandonCodes",
+ "usb": {
+ "vid": "0x7877",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/mino/readme.md b/keyboards/mino/readme.md
index a6a725b2a0..e13718b86c 100644
--- a/keyboards/mino/readme.md
+++ b/keyboards/mino/readme.md
@@ -14,7 +14,7 @@ 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. For the default keymap it is the middle spacebar on the second layer.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. For the default keymap it is the middle spacebar on the second layer.
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/mint60/config.h b/keyboards/mint60/config.h
index ee44ae446b..fa13775f24 100644
--- a/keyboards/mint60/config.h
+++ b/keyboards/mint60/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Eucalyn
-#define PRODUCT Mint60
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { D4, B3, B1, F7, B2, B6, F6, F5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mint60/info.json b/keyboards/mint60/info.json
index 377b134c74..e0deae38ee 100644
--- a/keyboards/mint60/info.json
+++ b/keyboards/mint60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mint60",
+ "manufacturer": "Eucalyn",
"url": "",
"maintainer": "eucalyn",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/misonoworks/chocolatebar/config.h b/keyboards/misonoworks/chocolatebar/config.h
index a1da636fd9..438ed237e7 100644
--- a/keyboards/misonoworks/chocolatebar/config.h
+++ b/keyboards/misonoworks/chocolatebar/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6D77 // "mW" - misonoWorks
-#define PRODUCT_ID 0xC456
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MisonoWorks
-#define PRODUCT Chocolate Bar
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 16
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, B7, D2, D3 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/misonoworks/chocolatebar/info.json b/keyboards/misonoworks/chocolatebar/info.json
index d22d9da7ac..409b1119b7 100644
--- a/keyboards/misonoworks/chocolatebar/info.json
+++ b/keyboards/misonoworks/chocolatebar/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Chocolate Bar",
+ "manufacturer": "MisonoWorks",
"url": "https://github.com/misonoworks/chocolate-bar",
"maintainer": "Robin Bayardo",
+ "usb": {
+ "vid": "0x6D77",
+ "pid": "0xC456",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/misonoworks/karina/config.h b/keyboards/misonoworks/karina/config.h
index 6cd5f20e89..9460bff0be 100644
--- a/keyboards/misonoworks/karina/config.h
+++ b/keyboards/misonoworks/karina/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-// descriptors
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xC456
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MisonoWorks
-#define PRODUCT Karina
-
// matrix
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// pins
#define MATRIX_ROW_PINS { D2, D3, D5, F0 }
#define MATRIX_COL_PINS { B3, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6}
-#define UNUSED_PINS
// diode mode
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/misonoworks/karina/info.json b/keyboards/misonoworks/karina/info.json
index bfa4944c74..b76a16e7e7 100644
--- a/keyboards/misonoworks/karina/info.json
+++ b/keyboards/misonoworks/karina/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Karina",
+ "manufacturer": "MisonoWorks",
"url": "https://github.com/autumnisacutie/karina",
"maintainer": "MisonoWorks",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xC456",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/misterknife/knife66/config.h b/keyboards/misterknife/knife66/config.h
index 0dd85dfdfc..6f8fa4836d 100644
--- a/keyboards/misterknife/knife66/config.h
+++ b/keyboards/misterknife/knife66/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xAC11
-#define PRODUCT_ID 0x4172
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MisterKnife
-#define PRODUCT Knife66
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/misterknife/knife66/info.json b/keyboards/misterknife/knife66/info.json
index 983811fe31..7ed334ee92 100644
--- a/keyboards/misterknife/knife66/info.json
+++ b/keyboards/misterknife/knife66/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Knife66",
+ "manufacturer": "MisterKnife",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xAC11",
+ "pid": "0x4172",
+ "device_version": "0.0.1"
+ },
"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.5, "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.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, "w":2.25}, {"x":15.5, "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.25, "y":3.25}, {"x":15.5, "y":3}, {"x":0, "y":4, "w":1.25}, {"x":2.25, "y":4}, {"x":3.25, "y":4, "w":1.25}, {"x":4.5, "y":4, "w":2.25}, {"x":6.75, "y":4, "w":2.75}, {"x":9.5, "y":4, "w":1.25}, {"x":10.75, "y":4}, {"x":11.75, "y":4, "w":1.25}, {"x":13.25, "y":4.25}, {"x":14.25, "y":4.25}, {"x":15.25, "y":4.25}]
diff --git a/keyboards/misterknife/knife66_iso/config.h b/keyboards/misterknife/knife66_iso/config.h
index 0c390e8593..4b3b858075 100644
--- a/keyboards/misterknife/knife66_iso/config.h
+++ b/keyboards/misterknife/knife66_iso/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xAC11
-#define PRODUCT_ID 0x4173
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MisterKnife
-#define PRODUCT Knife66 ISO
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/misterknife/knife66_iso/info.json b/keyboards/misterknife/knife66_iso/info.json
index 6411a480ee..da475626a4 100644
--- a/keyboards/misterknife/knife66_iso/info.json
+++ b/keyboards/misterknife/knife66_iso/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Knife66_iso",
+ "keyboard_name": "Knife66 ISO",
+ "manufacturer": "MisterKnife",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xAC11",
+ "pid": "0x4173",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mitosis/config.h b/keyboards/mitosis/config.h
index 5c2a0b9657..1310866fbb 100644
--- a/keyboards/mitosis/config.h
+++ b/keyboards/mitosis/config.h
@@ -19,14 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Unknown
-#define PRODUCT Mitosis
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 10
diff --git a/keyboards/mitosis/info.json b/keyboards/mitosis/info.json
index a5a45ddf9b..07d3c8f5ec 100644
--- a/keyboards/mitosis/info.json
+++ b/keyboards/mitosis/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mitosis",
+ "manufacturer": "Unknown",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0.75}, {"x":1, "y":0.25}, {"x":2, "y":0}, {"x":3, "y":0.25}, {"x":4, "y":0.125}, {"x":7, "y":0.125}, {"x":8, "y":0.25}, {"x":9, "y":0}, {"x":10, "y":0.25}, {"x":11, "y":0.75}, {"x":0, "y":1.75}, {"x":1, "y":1.25}, {"x":2, "y":1}, {"x":3, "y":1.25}, {"x":4, "y":1.125}, {"x":7, "y":1.125}, {"x":8, "y":1.25}, {"x":9, "y":1}, {"x":10, "y":1.25}, {"x":11, "y":1.75}, {"x":0, "y":2.75}, {"x":1, "y":2.25}, {"x":2, "y":2}, {"x":3, "y":2.25}, {"x":4, "y":2.125}, {"x":7, "y":2.125}, {"x":8, "y":2.25}, {"x":9, "y":2}, {"x":10, "y":2.25}, {"x":11, "y":2.75}, {"x":1.5, "y":3.75}, {"x":2.5, "y":3.75}, {"x":3.5, "y":3.75}, {"x":4.5, "y":3.75}, {"x":6.5, "y":3.75}, {"x":7.5, "y":3.75}, {"x":8.5, "y":3.75}, {"x":9.5, "y":3.75}, {"x":1.5, "y":4.75}, {"x":2.5, "y":4.75}, {"x":3.5, "y":4.75}, {"x":4.5, "y":4.75}, {"x":6.5, "y":4.75}, {"x":7.5, "y":4.75}, {"x":8.5, "y":4.75}, {"x":9.5, "y":4.75}]
diff --git a/keyboards/mitosis/keymaps/carvac_dv/keymap.c b/keyboards/mitosis/keymaps/carvac_dv/keymap.c
index c67f2e387c..842556324f 100644
--- a/keyboards/mitosis/keymaps/carvac_dv/keymap.c
+++ b/keyboards/mitosis/keymaps/carvac_dv/keymap.c
@@ -105,7 +105,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _STD:
@@ -121,4 +121,3 @@ void matrix_scan_user(void) {
break;
}
};
-
diff --git a/keyboards/mitosis/keymaps/datagrok/keymap.c b/keyboards/mitosis/keymaps/datagrok/keymap.c
index 220c140af0..7c77eb882f 100644
--- a/keyboards/mitosis/keymaps/datagrok/keymap.c
+++ b/keyboards/mitosis/keymaps/datagrok/keymap.c
@@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*, */ _______, _______, TT(_xF), _______, _______, TT(_xF), KC_0, KC_DOT,
/*, */ _______, _______, _______, _______, _______, _______, _______, _______),
[_xF] = LAYOUT(
- RESET, KC_INS, KC_PGUP, DEBUG, KC_VOLU, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ QK_BOOT, KC_INS, KC_PGUP, DEBUG, KC_VOLU, KC_PPLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
CK_TOGG, KC_HOME, KC_PGDN, KC_END, KC_VOLD, KC_NLCK, KC_P4, KC_P5, KC_P6, KC_PENT,
KC_LAYO, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS,
/*, */ CK_UP, MU_TOG, _______, _______, _______, _______, KC_P0, KC_PDOT,
@@ -102,7 +102,7 @@ const size_t defaultlayers_n = sizeof(defaultlayers) / sizeof(defaultlayers[0]);
// New keycode KC_LAYO rotates between available default layers (for e.g.,
// selecting a base layout). Shift+KC_LAYO makes the current one persistent.
bool process_record_layout(uint16_t keycode, keyrecord_t *record) {
- uint32_t default_layer;
+ uint8_t default_layer;
uint8_t i;
#if defined(AUDIO_ENABLE)
float saved_song[][2] = SONG(COIN_SOUND);
@@ -121,7 +121,7 @@ bool process_record_layout(uint16_t keycode, keyrecord_t *record) {
} else {
// rotate default layer.
// find the current default layer
- default_layer = biton32(default_layer_state);
+ default_layer = get_highest_layer(default_layer_state);
// find next valid default layer
for (i = 1; i < defaultlayers_n; i++) {
if (defaultlayers[(default_layer + i) % defaultlayers_n]) {
diff --git a/keyboards/mitosis/keymaps/default/keymap.c b/keyboards/mitosis/keymaps/default/keymap.c
index 6132ad6f78..27b2eb2525 100644
--- a/keyboards/mitosis/keymaps/default/keymap.c
+++ b/keyboards/mitosis/keymaps/default/keymap.c
@@ -77,7 +77,7 @@ static bool singular_key = false;
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
uint8_t layer;
- layer = biton32(layer_state); // get the current layer
+ layer = get_highest_layer(layer_state); // get the current layer
//custom layer handling for tri_layer,
switch (keycode) {
@@ -174,7 +174,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
};
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _MALT:
@@ -193,4 +193,3 @@ void matrix_scan_user(void) {
break;
}
};
-
diff --git a/keyboards/mitosis/keymaps/mjt/keymap.c b/keyboards/mitosis/keymaps/mjt/keymap.c
index f00bf59556..e9e9a2ba42 100644
--- a/keyboards/mitosis/keymaps/mjt/keymap.c
+++ b/keyboards/mitosis/keymaps/mjt/keymap.c
@@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT( /* Adjust layer for fancy stuff and macros */
- RESET, FNPC, _______, _______, _______, _______, DYN_REC_START1, DYN_REC_START2, _______, _______,
+ QK_BOOT, FNPC, _______, _______, _______, _______, DYN_REC_START1, DYN_REC_START2, _______, _______,
FNMAC, _______, AU_ON, AU_OFF, _______, _______, _______, _______, MACSLEEP, _______,
MUV_DE, MUV_IN, MU_ON, MU_OFF, _______, _______, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY,
__MOD__, _______, _______, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2, _______,
@@ -181,7 +181,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
}
uint8_t layer;
- layer = biton32(layer_state); // get the current layer
+ layer = get_highest_layer(layer_state); // get the current layer
//custom layer handling for tri_layer,
switch (keycode) {
@@ -310,7 +310,7 @@ void music_scale_user(void)
#endif
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _QWERTY:
diff --git a/keyboards/mitosis/keymaps/nzen/keymap.c b/keyboards/mitosis/keymaps/nzen/keymap.c
index d9fd3641bc..c981441bc9 100644
--- a/keyboards/mitosis/keymaps/nzen/keymap.c
+++ b/keyboards/mitosis/keymaps/nzen/keymap.c
@@ -175,7 +175,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _QWERTY:
@@ -205,5 +205,3 @@ void matrix_scan_user(void) {
void matrix_init_user(void) {
set_unicode_input_mode(UC_LNX); // or UC_WINC
};
-
-
diff --git a/keyboards/miuni32/config.h b/keyboards/miuni32/config.h
index cf8b875b2f..19e55934e6 100644
--- a/keyboards/miuni32/config.h
+++ b/keyboards/miuni32/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Bigtuna.io
-#define PRODUCT Miuni32
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 11
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F4, D7}
#define MATRIX_COL_PINS { C6, C7, F7, F6, F1, E6, B7, B3, B2, B1, B0}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/miuni32/info.json b/keyboards/miuni32/info.json
index 016c772f19..b9ee96c755 100644
--- a/keyboards/miuni32/info.json
+++ b/keyboards/miuni32/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "miuni32",
+ "keyboard_name": "Miuni32",
+ "manufacturer": "Bigtuna.io",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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":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":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2, "w":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}]
diff --git a/keyboards/miuni32/keymaps/adam-lee/keymap.c b/keyboards/miuni32/keymaps/adam-lee/keymap.c
index 87519de546..d6f5f40fdd 100644
--- a/keyboards/miuni32/keymaps/adam-lee/keymap.c
+++ b/keyboards/miuni32/keymaps/adam-lee/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* Level 3: RGB Layer
* ,---------------------------------------------------------------------------------------.
- * | RESET | TRNS | TRNS | TRNS | TRNS | F1 | F2 | F3 | F4 | F5 | F6 |
+ * | QK_BOOT | TRNS | TRNS | TRNS | TRNS | F1 | F2 | F3 | F4 | F5 | F6 |
* |---------------------------------------------------------------------------------------|
* |RGB_TOG|RGB_MOD|RGB_HUI|RGB_HUD| NO |RGB_SAI|RGB_SAD|RGB_VAI|RGB_VAD| TRNS | TRNS |
* |---------------------------------------------------------------------------------------|
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |---------------------------------------------------------------------------------------|
*/
[3] = LAYOUT(
- RESET, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ QK_BOOT, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, KC_NO, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______,
_______, _______, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12
)
diff --git a/keyboards/miuni32/keymaps/cassdelacruzmunoz/keymap.c b/keyboards/miuni32/keymaps/cassdelacruzmunoz/keymap.c
index d7979bc464..bae9ed4f4a 100644
--- a/keyboards/miuni32/keymaps/cassdelacruzmunoz/keymap.c
+++ b/keyboards/miuni32/keymaps/cassdelacruzmunoz/keymap.c
@@ -78,7 +78,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* Level 4: F-keys and Media Layer
* ,---------------------------------------------------------------------------------------.
- * | RESET | MUTE | VOLU | MPLY | TRNS | F1 | F2 | F3 | F4 | F5 | F6 |
+ * | QK_BOOT | MUTE | VOLU | MPLY | TRNS | F1 | F2 | F3 | F4 | F5 | F6 |
* |---------------------------------------------------------------------------------------|
* | LGUI | MPRV | VOLD | MNXT | TRNS | TRNS | TRNS | TRNS | TRNS | TRNS | TG(4) |
* |---------------------------------------------------------------------------------------|
@@ -86,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |---------------------------------------------------------------------------------------|
*/
[4] = LAYOUT(
- RESET, KC_MUTE, KC_VOLU, KC_MPLY, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ QK_BOOT, KC_MUTE, KC_VOLU, KC_MPLY, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
KC_LGUI, KC_MPRV, KC_VOLD, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TG(4),
KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12
),
diff --git a/keyboards/miuni32/keymaps/ht_156/keymap.c b/keyboards/miuni32/keymaps/ht_156/keymap.c
index 54e4bcf52d..f0cbc2c659 100644
--- a/keyboards/miuni32/keymaps/ht_156/keymap.c
+++ b/keyboards/miuni32/keymaps/ht_156/keymap.c
@@ -45,14 +45,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,---------------------------------------------------------------------------------------.
* | ! | @ | # | $ | % | ^ | & | * | _ | = | ? |
* |---------------------------------------------------------------------------------------|
- * | RESET | LSFT | ~ | { | } | \ | | | ; | : | ` | " |
+ * | QK_BOOT | LSFT | ~ | { | } | \ | | | ; | : | ` | " |
* |---------------------------------------------------------------------------------------|
* | !TRNS!| LCTL | TRNS | [ | ] | TAB | < | > | TRNS | RCTL | TRNS |
* |---------------------------------------------------------------------------------------|
*/
[SYMBOLS] = LAYOUT_ortho_3x11(
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_UNDS, KC_EQL, KC_QUES,
- RESET, KC_LSFT, KC_TILD, KC_LCBR, KC_RCBR, KC_BSLS, KC_PIPE, KC_SCLN, KC_COLN, KC_GRV, KC_DQUO,
+ QK_BOOT, KC_LSFT, KC_TILD, KC_LCBR, KC_RCBR, KC_BSLS, KC_PIPE, KC_SCLN, KC_COLN, KC_GRV, KC_DQUO,
_______, KC_LCTL, _______, KC_LBRC, KC_RBRC, KC_TAB, KC_LABK, KC_RABK, _______, KC_RCTL, _______
),
/* Level 3: Media Layer
diff --git a/keyboards/miuni32/keymaps/kifinnsson/keymap.c b/keyboards/miuni32/keymaps/kifinnsson/keymap.c
index 59d2e285cb..3ce4e14575 100644
--- a/keyboards/miuni32/keymaps/kifinnsson/keymap.c
+++ b/keyboards/miuni32/keymaps/kifinnsson/keymap.c
@@ -60,7 +60,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* Union
* ,---------------------------------------------------------------------------------------.
- * | RESET | | | | | | | | | | Del |
+ * | QK_BOOT | | | | | | | | | | Del |
* |---------------------------------------------------------------------------------------|
* | | | | | | | | | | | |
* |---------------------------------------------------------------------------------------|
@@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |---------------------------------------------------------------------------------------|
*/
[_UNION] = LAYOUT_ortho_3x11(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/mixi/config.h b/keyboards/mixi/config.h
index c5cac8ca6e..e833357945 100644
--- a/keyboards/mixi/config.h
+++ b/keyboards/mixi/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4752
-#define PRODUCT_ID 0x4D49
-#define DEVICE_VER 0x0001
-#define MANUFACTURER gregorio
-#define PRODUCT Mixi
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
diff --git a/keyboards/mixi/info.json b/keyboards/mixi/info.json
index 6b55464aa1..c1f60e8ee7 100644
--- a/keyboards/mixi/info.json
+++ b/keyboards/mixi/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mixi",
+ "manufacturer": "gregorio",
"url": "https://tokopedia.com/sell-stuffs",
"maintainer": "ohchiko",
+ "usb": {
+ "vid": "0x4752",
+ "pid": "0x4D49",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ml/gas75/config.h b/keyboards/ml/gas75/config.h
index 4afc29952b..82d8c134a0 100644
--- a/keyboards/ml/gas75/config.h
+++ b/keyboards/ml/gas75/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC0B0
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ML
-#define PRODUCT Gas75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
@@ -45,9 +38,6 @@
/* Forcing to use NKRO instead 6KRO */
#define FORCE_NKRO
-/* Larger keys per scan */
-#define QMK_KEYS_PER_SCAN 12
-
/* Encoder pins */
#define ENCODERS_PAD_A { F0 }
#define ENCODERS_PAD_B { F1 }
diff --git a/keyboards/ml/gas75/info.json b/keyboards/ml/gas75/info.json
index e6084a1835..4810c22d7e 100644
--- a/keyboards/ml/gas75/info.json
+++ b/keyboards/ml/gas75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Gas75",
+ "manufacturer": "ML",
"url": "https://item.taobao.com/item.htm?ft=t&id=652142230132",
"maintainer": "ML",
+ "usb": {
+ "vid": "0xC0B0",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ml/gas75/readme.md b/keyboards/ml/gas75/readme.md
index fcf5350384..8c5854e1d7 100644
--- a/keyboards/ml/gas75/readme.md
+++ b/keyboards/ml/gas75/readme.md
@@ -22,4 +22,4 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (Esc 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/mlego/m48/config.h b/keyboards/mlego/m48/config.h
index 879108d238..29bc9f07e7 100644
--- a/keyboards/mlego/m48/config.h
+++ b/keyboards/mlego/m48/config.h
@@ -17,11 +17,6 @@
#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
diff --git a/keyboards/mlego/m48/info.json b/keyboards/mlego/m48/info.json
index d22cfc54fd..c67c06fb76 100644
--- a/keyboards/mlego/m48/info.json
+++ b/keyboards/mlego/m48/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "mlego/m48",
+ "keyboard_name": "48",
+ "manufacturer": "alin elena",
"url": "https://gitlab.com/m-lego/m48",
"maintainer": "alin elena",
+ "usb": {
+ "vid": "0xBABA"
+ },
"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/keymap.c b/keyboards/mlego/m48/keymaps/default/keymap.c
index 5eb40a332a..175f42b9b9 100644
--- a/keyboards/mlego/m48/keymaps/default/keymap.c
+++ b/keyboards/mlego/m48/keymaps/default/keymap.c
@@ -106,10 +106,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJ] = LAYOUT_ortho_4x12(
- _______, QK_BOOT, 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, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, QK_BOOT, 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, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/mlego/m48/rev1/config.h b/keyboards/mlego/m48/rev1/config.h
index dcca34c95e..b0fa3e95a5 100644
--- a/keyboards/mlego/m48/rev1/config.h
+++ b/keyboards/mlego/m48/rev1/config.h
@@ -17,10 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x6261
-#define DEVICE_VER 0x0001
-
#define MATRIX_ROW_PINS \
{ A6, A7, B0, B10 }
#define MATRIX_COL_PINS \
@@ -55,7 +51,3 @@
#define RGBLIGHT_EFFECT_TWINKLE
#endif
-
-#define UNUSED_PINS
-// you want to comment this if using stm32-dfu as bootloader
-#define FEE_PAGE_BASE_ADDRESS 0x08008000
diff --git a/keyboards/mlego/m48/rev1/info.json b/keyboards/mlego/m48/rev1/info.json
new file mode 100644
index 0000000000..68c73096c4
--- /dev/null
+++ b/keyboards/mlego/m48/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x6261",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/mlego/m48/rev1/ld/STM32F401xE.ld b/keyboards/mlego/m48/rev1/ld/STM32F401xE.ld
deleted file mode 100644
index daec7d8583..0000000000
--- a/keyboards/mlego/m48/rev1/ld/STM32F401xE.ld
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- 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.
-*/
-
-/*
- * STM32F401xE memory setup.
- */
-MEMORY
-{
- flash0 (rx) : org = 0x08000000, len = 16k /* tinyuf2 bootloader requires app to be located at 64k offset for this MCU */
- flash1 (rx) : org = 0x08004000, len = 16k
- flash2 (rx) : org = 0x08008000, len = 16k /* emulated eeprom */
- flash3 (rx) : org = 0x0800C000, len = 16k
- flash4 (rx) : org = 0x08010000, len = 512k - 64k
- flash5 (rx) : org = 0x00000000, len = 0
- flash6 (rx) : org = 0x00000000, len = 0
- flash7 (rx) : org = 0x00000000, len = 0
- ram0 (wx) : org = 0x20000000, len = 96k
- ram1 (wx) : org = 0x00000000, len = 0
- ram2 (wx) : org = 0x00000000, len = 0
- ram3 (wx) : org = 0x00000000, len = 0
- ram4 (wx) : org = 0x00000000, len = 0
- ram5 (wx) : org = 0x00000000, len = 0
- ram6 (wx) : org = 0x00000000, len = 0
- ram7 (wx) : 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", flash4);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash4);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash4);
-REGION_ALIAS("XTORS_FLASH_LMA", flash4);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash4);
-REGION_ALIAS("TEXT_FLASH_LMA", flash4);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash4);
-REGION_ALIAS("RODATA_FLASH_LMA", flash4);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash4);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash4);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash4);
-
-/* 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", flash4);
-
-/* 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
-
-/* TinyUF2 bootloader reset support */
-_board_dfu_dbl_tap = ORIGIN(ram0) + 64k - 4; /* this is based off the linker file for tinyuf2 */
diff --git a/keyboards/mlego/m48/rev1/rules.mk b/keyboards/mlego/m48/rev1/rules.mk
index da2734ff63..20a1e60817 100644
--- a/keyboards/mlego/m48/rev1/rules.mk
+++ b/keyboards/mlego/m48/rev1/rules.mk
@@ -1,10 +1,9 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = tinyuf2
-MCU_LDSCRIPT = STM32F401xE
-EEPROM_DRIVER = vendor
#BOOTLOADER = stm32-dfu
# Build Options
diff --git a/keyboards/mlego/m60/config.h b/keyboards/mlego/m60/config.h
index abce0cb5f8..6cf70e5c41 100644
--- a/keyboards/mlego/m60/config.h
+++ b/keyboards/mlego/m60/config.h
@@ -17,11 +17,6 @@
#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
diff --git a/keyboards/mlego/m60/info.json b/keyboards/mlego/m60/info.json
index 12924b5ea6..fc1a46cc23 100644
--- a/keyboards/mlego/m60/info.json
+++ b/keyboards/mlego/m60/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "mlego/m60",
+ "keyboard_name": "m60",
+ "manufacturer": "alin elena",
"url": "https://gitlab.com/m-lego/m60",
"maintainer": "alin elena",
+ "usb": {
+ "vid": "0xBABA"
+ },
"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/rev1/config.h b/keyboards/mlego/m60/rev1/config.h
index 437e605149..7507dcd427 100644
--- a/keyboards/mlego/m60/rev1/config.h
+++ b/keyboards/mlego/m60/rev1/config.h
@@ -17,10 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x6161
-#define DEVICE_VER 0x0001
-
#define LED_NUM_LOCK_PIN B12
#define LED_SCROLL_LOCK_PIN B13
#define LED_CAPS_LOCK_PIN C13
@@ -55,7 +51,3 @@
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
#endif
-
-#define UNUSED_PINS
-// you want to comment this if using stm32-dfu as bootloader
-#define FEE_PAGE_BASE_ADDRESS 0x08008000
diff --git a/keyboards/mlego/m60/rev1/info.json b/keyboards/mlego/m60/rev1/info.json
new file mode 100644
index 0000000000..865399a460
--- /dev/null
+++ b/keyboards/mlego/m60/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x6161",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/mlego/m60/rev1/ld/STM32F401xE.ld b/keyboards/mlego/m60/rev1/ld/STM32F401xE.ld
deleted file mode 100644
index daec7d8583..0000000000
--- a/keyboards/mlego/m60/rev1/ld/STM32F401xE.ld
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- 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.
-*/
-
-/*
- * STM32F401xE memory setup.
- */
-MEMORY
-{
- flash0 (rx) : org = 0x08000000, len = 16k /* tinyuf2 bootloader requires app to be located at 64k offset for this MCU */
- flash1 (rx) : org = 0x08004000, len = 16k
- flash2 (rx) : org = 0x08008000, len = 16k /* emulated eeprom */
- flash3 (rx) : org = 0x0800C000, len = 16k
- flash4 (rx) : org = 0x08010000, len = 512k - 64k
- flash5 (rx) : org = 0x00000000, len = 0
- flash6 (rx) : org = 0x00000000, len = 0
- flash7 (rx) : org = 0x00000000, len = 0
- ram0 (wx) : org = 0x20000000, len = 96k
- ram1 (wx) : org = 0x00000000, len = 0
- ram2 (wx) : org = 0x00000000, len = 0
- ram3 (wx) : org = 0x00000000, len = 0
- ram4 (wx) : org = 0x00000000, len = 0
- ram5 (wx) : org = 0x00000000, len = 0
- ram6 (wx) : org = 0x00000000, len = 0
- ram7 (wx) : 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", flash4);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash4);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash4);
-REGION_ALIAS("XTORS_FLASH_LMA", flash4);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash4);
-REGION_ALIAS("TEXT_FLASH_LMA", flash4);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash4);
-REGION_ALIAS("RODATA_FLASH_LMA", flash4);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash4);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash4);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash4);
-
-/* 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", flash4);
-
-/* 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
-
-/* TinyUF2 bootloader reset support */
-_board_dfu_dbl_tap = ORIGIN(ram0) + 64k - 4; /* this is based off the linker file for tinyuf2 */
diff --git a/keyboards/mlego/m60/rev1/rules.mk b/keyboards/mlego/m60/rev1/rules.mk
index 6b119a1f37..6c3ff56a08 100644
--- a/keyboards/mlego/m60/rev1/rules.mk
+++ b/keyboards/mlego/m60/rev1/rules.mk
@@ -1,11 +1,10 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = tinyuf2
#BOOTLOADER = stm32-dfu
-MCU_LDSCRIPT = STM32F401xE
-EEPROM_DRIVER = vendor
# Build Options
# change yes to no to disable
diff --git a/keyboards/mlego/m60_split/config.h b/keyboards/mlego/m60_split/config.h
index 7282886b0b..241ea77a22 100644
--- a/keyboards/mlego/m60_split/config.h
+++ b/keyboards/mlego/m60_split/config.h
@@ -17,11 +17,6 @@
#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
diff --git a/keyboards/mlego/m60_split/info.json b/keyboards/mlego/m60_split/info.json
index c6c5ee480d..3212b0c613 100644
--- a/keyboards/mlego/m60_split/info.json
+++ b/keyboards/mlego/m60_split/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "mlego/m60_split",
+ "keyboard_name": "m60_split",
+ "manufacturer": "alin elena",
"url": "https://gitlab.com/m-lego/m65",
"maintainer": "alin elena",
+ "usb": {
+ "vid": "0xBABA"
+ },
"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/rev1/config.h b/keyboards/mlego/m60_split/rev1/config.h
index 0bbb56aee0..d1053a2291 100644
--- a/keyboards/mlego/m60_split/rev1/config.h
+++ b/keyboards/mlego/m60_split/rev1/config.h
@@ -17,10 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x6361
-#define DEVICE_VER 0x0001
-
#define MATRIX_ROW_PINS \
{ B0, A6, A7, B1, A5 }
#define MATRIX_COL_PINS \
@@ -82,7 +78,3 @@
#define BOOTMAGIC_LITE_ROW_RIGHT 5
#define BOOTMAGIC_LITE_COLUMN_RIGHT 0
#endif
-
-#define UNUSED_PINS
-// you want to comment this if using stm32-dfu as bootloader
-#define FEE_PAGE_BASE_ADDRESS 0x08008000
diff --git a/keyboards/mlego/m60_split/rev1/info.json b/keyboards/mlego/m60_split/rev1/info.json
new file mode 100644
index 0000000000..90303c33c5
--- /dev/null
+++ b/keyboards/mlego/m60_split/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x6361",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/mlego/m60_split/rev1/ld/STM32F401xE.ld b/keyboards/mlego/m60_split/rev1/ld/STM32F401xE.ld
deleted file mode 100644
index daec7d8583..0000000000
--- a/keyboards/mlego/m60_split/rev1/ld/STM32F401xE.ld
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- 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.
-*/
-
-/*
- * STM32F401xE memory setup.
- */
-MEMORY
-{
- flash0 (rx) : org = 0x08000000, len = 16k /* tinyuf2 bootloader requires app to be located at 64k offset for this MCU */
- flash1 (rx) : org = 0x08004000, len = 16k
- flash2 (rx) : org = 0x08008000, len = 16k /* emulated eeprom */
- flash3 (rx) : org = 0x0800C000, len = 16k
- flash4 (rx) : org = 0x08010000, len = 512k - 64k
- flash5 (rx) : org = 0x00000000, len = 0
- flash6 (rx) : org = 0x00000000, len = 0
- flash7 (rx) : org = 0x00000000, len = 0
- ram0 (wx) : org = 0x20000000, len = 96k
- ram1 (wx) : org = 0x00000000, len = 0
- ram2 (wx) : org = 0x00000000, len = 0
- ram3 (wx) : org = 0x00000000, len = 0
- ram4 (wx) : org = 0x00000000, len = 0
- ram5 (wx) : org = 0x00000000, len = 0
- ram6 (wx) : org = 0x00000000, len = 0
- ram7 (wx) : 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", flash4);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash4);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash4);
-REGION_ALIAS("XTORS_FLASH_LMA", flash4);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash4);
-REGION_ALIAS("TEXT_FLASH_LMA", flash4);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash4);
-REGION_ALIAS("RODATA_FLASH_LMA", flash4);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash4);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash4);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash4);
-
-/* 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", flash4);
-
-/* 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
-
-/* TinyUF2 bootloader reset support */
-_board_dfu_dbl_tap = ORIGIN(ram0) + 64k - 4; /* this is based off the linker file for tinyuf2 */
diff --git a/keyboards/mlego/m60_split/rev1/rules.mk b/keyboards/mlego/m60_split/rev1/rules.mk
index 14022f2086..076a334510 100644
--- a/keyboards/mlego/m60_split/rev1/rules.mk
+++ b/keyboards/mlego/m60_split/rev1/rules.mk
@@ -1,11 +1,10 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = tinyuf2
#BOOTLOADER = stm32-dfu
-MCU_LDSCRIPT = STM32F401xE
-EEPROM_DRIVER = vendor
# Build Options
# change yes to no to disable
diff --git a/keyboards/mlego/m60_split/rev2/config.h b/keyboards/mlego/m60_split/rev2/config.h
index c5b011c437..ce2726e19a 100644
--- a/keyboards/mlego/m60_split/rev2/config.h
+++ b/keyboards/mlego/m60_split/rev2/config.h
@@ -17,10 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x6362
-#define DEVICE_VER 0x0001
-
#define MATRIX_ROW_PINS \
{ B0, A6, A7, B1, A5 }
#define MATRIX_COL_PINS \
@@ -81,4 +77,3 @@
#define BOOTMAGIC_LITE_ROW_RIGHT 5
#define BOOTMAGIC_LITE_COLUMN_RIGHT 0
-#define UNUSED_PINS
diff --git a/keyboards/mlego/m60_split/rev2/info.json b/keyboards/mlego/m60_split/rev2/info.json
new file mode 100644
index 0000000000..bee03f611f
--- /dev/null
+++ b/keyboards/mlego/m60_split/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x6362",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/mlego/m60_split/rev2/rules.mk b/keyboards/mlego/m60_split/rev2/rules.mk
index cb8f4bd951..c10aed3e16 100644
--- a/keyboards/mlego/m60_split/rev2/rules.mk
+++ b/keyboards/mlego/m60_split/rev2/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/mlego/m65/config.h b/keyboards/mlego/m65/config.h
index 25d69d8b7a..7ac1f7271c 100644
--- a/keyboards/mlego/m65/config.h
+++ b/keyboards/mlego/m65/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xBABA
-#define MANUFACTURER Alin Elena
-#define PRODUCT m65
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 13
diff --git a/keyboards/mlego/m65/info.json b/keyboards/mlego/m65/info.json
index 175c6638c5..3c7d816d62 100644
--- a/keyboards/mlego/m65/info.json
+++ b/keyboards/mlego/m65/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "M65",
+ "keyboard_name": "m65",
+ "manufacturer": "Alin Elena",
"url": "https://gitlab.com/m-lego/m65",
"maintainer": "alin elena",
+ "usb": {
+ "vid": "0xBABA"
+ },
"layouts": {
"LAYOUT_ortho_5x13": {
"layout": [
diff --git a/keyboards/mlego/m65/rev1/config.h b/keyboards/mlego/m65/rev1/config.h
index 0e40ae2e3d..d296bf9954 100644
--- a/keyboards/mlego/m65/rev1/config.h
+++ b/keyboards/mlego/m65/rev1/config.h
@@ -17,9 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DEVICE_VER 0x0001
-#define PRODUCT_ID 0x6061
-
#define LED_NUM_LOCK_PIN B12
#define LED_SCROLL_LOCK_PIN B13
#define LED_CAPS_LOCK_PIN C13
@@ -38,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_DI_PIN B15
-#define UNUSED_PINS
#define RGBLIGHT_LAYERS
#define ENCODER_RESOLUTION 4
diff --git a/keyboards/mlego/m65/rev1/info.json b/keyboards/mlego/m65/rev1/info.json
new file mode 100644
index 0000000000..e495c94992
--- /dev/null
+++ b/keyboards/mlego/m65/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x6061",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/mlego/m65/rev2/config.h b/keyboards/mlego/m65/rev2/config.h
index db13bbb2ad..d5575d24a9 100644
--- a/keyboards/mlego/m65/rev2/config.h
+++ b/keyboards/mlego/m65/rev2/config.h
@@ -17,9 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DEVICE_VER 0x0002
-#define PRODUCT_ID 0x6061
-
#define LED_NUM_LOCK_PIN B12
#define LED_SCROLL_LOCK_PIN B13
#define LED_CAPS_LOCK_PIN B2
@@ -38,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGB_DI_PIN B15
-#define UNUSED_PINS
#define RGBLIGHT_LAYERS
#define ENCODER_RESOLUTION 4
diff --git a/keyboards/mlego/m65/rev2/info.json b/keyboards/mlego/m65/rev2/info.json
new file mode 100644
index 0000000000..470262ed85
--- /dev/null
+++ b/keyboards/mlego/m65/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x6061",
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/mlego/m65/rev3/config.h b/keyboards/mlego/m65/rev3/config.h
index a4b1ba3343..e58a84f3d8 100644
--- a/keyboards/mlego/m65/rev3/config.h
+++ b/keyboards/mlego/m65/rev3/config.h
@@ -17,9 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DEVICE_VER 0x0001
-#define PRODUCT_ID 0x6062
-
#define LED_NUM_LOCK_PIN B12
#define LED_SCROLL_LOCK_PIN B13
#define LED_CAPS_LOCK_PIN C13
@@ -58,7 +55,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#endif
-
-#define UNUSED_PINS
-// you want to comment this if using stm32-dfu as bootloader
-#define FEE_PAGE_BASE_ADDRESS 0x08008000
diff --git a/keyboards/mlego/m65/rev3/info.json b/keyboards/mlego/m65/rev3/info.json
new file mode 100644
index 0000000000..e42ab50857
--- /dev/null
+++ b/keyboards/mlego/m65/rev3/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x6062",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/mlego/m65/rev3/ld/STM32F401xE.ld b/keyboards/mlego/m65/rev3/ld/STM32F401xE.ld
deleted file mode 100644
index daec7d8583..0000000000
--- a/keyboards/mlego/m65/rev3/ld/STM32F401xE.ld
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- 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.
-*/
-
-/*
- * STM32F401xE memory setup.
- */
-MEMORY
-{
- flash0 (rx) : org = 0x08000000, len = 16k /* tinyuf2 bootloader requires app to be located at 64k offset for this MCU */
- flash1 (rx) : org = 0x08004000, len = 16k
- flash2 (rx) : org = 0x08008000, len = 16k /* emulated eeprom */
- flash3 (rx) : org = 0x0800C000, len = 16k
- flash4 (rx) : org = 0x08010000, len = 512k - 64k
- flash5 (rx) : org = 0x00000000, len = 0
- flash6 (rx) : org = 0x00000000, len = 0
- flash7 (rx) : org = 0x00000000, len = 0
- ram0 (wx) : org = 0x20000000, len = 96k
- ram1 (wx) : org = 0x00000000, len = 0
- ram2 (wx) : org = 0x00000000, len = 0
- ram3 (wx) : org = 0x00000000, len = 0
- ram4 (wx) : org = 0x00000000, len = 0
- ram5 (wx) : org = 0x00000000, len = 0
- ram6 (wx) : org = 0x00000000, len = 0
- ram7 (wx) : 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", flash4);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash4);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash4);
-REGION_ALIAS("XTORS_FLASH_LMA", flash4);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash4);
-REGION_ALIAS("TEXT_FLASH_LMA", flash4);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash4);
-REGION_ALIAS("RODATA_FLASH_LMA", flash4);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash4);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash4);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash4);
-
-/* 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", flash4);
-
-/* 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
-
-/* TinyUF2 bootloader reset support */
-_board_dfu_dbl_tap = ORIGIN(ram0) + 64k - 4; /* this is based off the linker file for tinyuf2 */
diff --git a/keyboards/mlego/m65/rev3/rules.mk b/keyboards/mlego/m65/rev3/rules.mk
index 558accd5b1..57908335fd 100644
--- a/keyboards/mlego/m65/rev3/rules.mk
+++ b/keyboards/mlego/m65/rev3/rules.mk
@@ -1,11 +1,10 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = tinyuf2
#BOOTLOADER = stm32-dfu
-MCU_LDSCRIPT = STM32F401xE
-EEPROM_DRIVER = vendor
# Build Options
# change yes to no to disable
diff --git a/keyboards/mlego/m65/rev4/config.h b/keyboards/mlego/m65/rev4/config.h
index 07dd0fefaa..afd8c86bcc 100644
--- a/keyboards/mlego/m65/rev4/config.h
+++ b/keyboards/mlego/m65/rev4/config.h
@@ -17,9 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DEVICE_VER 0x0002
-#define PRODUCT_ID 0x6062
-
#define LED_NUM_LOCK_PIN B12
#define LED_SCROLL_LOCK_PIN B13
#define LED_CAPS_LOCK_PIN C13
@@ -67,7 +64,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define OLED_BRIGHTNESS 128
#define OLED_FONT_H "keyboards/mlego/m65/lib/glcdfont.c"
#endif
-
-#define UNUSED_PINS
-// you want to comment this if using stm32-dfu as bootloader
-#define FEE_PAGE_BASE_ADDRESS 0x08008000
diff --git a/keyboards/mlego/m65/rev4/info.json b/keyboards/mlego/m65/rev4/info.json
new file mode 100644
index 0000000000..c94ea38e22
--- /dev/null
+++ b/keyboards/mlego/m65/rev4/info.json
@@ -0,0 +1,6 @@
+{
+ "usb": {
+ "pid": "0x6062",
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/mlego/m65/rev4/ld/STM32F401xE.ld b/keyboards/mlego/m65/rev4/ld/STM32F401xE.ld
deleted file mode 100644
index daec7d8583..0000000000
--- a/keyboards/mlego/m65/rev4/ld/STM32F401xE.ld
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- 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.
-*/
-
-/*
- * STM32F401xE memory setup.
- */
-MEMORY
-{
- flash0 (rx) : org = 0x08000000, len = 16k /* tinyuf2 bootloader requires app to be located at 64k offset for this MCU */
- flash1 (rx) : org = 0x08004000, len = 16k
- flash2 (rx) : org = 0x08008000, len = 16k /* emulated eeprom */
- flash3 (rx) : org = 0x0800C000, len = 16k
- flash4 (rx) : org = 0x08010000, len = 512k - 64k
- flash5 (rx) : org = 0x00000000, len = 0
- flash6 (rx) : org = 0x00000000, len = 0
- flash7 (rx) : org = 0x00000000, len = 0
- ram0 (wx) : org = 0x20000000, len = 96k
- ram1 (wx) : org = 0x00000000, len = 0
- ram2 (wx) : org = 0x00000000, len = 0
- ram3 (wx) : org = 0x00000000, len = 0
- ram4 (wx) : org = 0x00000000, len = 0
- ram5 (wx) : org = 0x00000000, len = 0
- ram6 (wx) : org = 0x00000000, len = 0
- ram7 (wx) : 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", flash4);
-REGION_ALIAS("VECTORS_FLASH_LMA", flash4);
-
-/* Flash region to be used for constructors and destructors.*/
-REGION_ALIAS("XTORS_FLASH", flash4);
-REGION_ALIAS("XTORS_FLASH_LMA", flash4);
-
-/* Flash region to be used for code text.*/
-REGION_ALIAS("TEXT_FLASH", flash4);
-REGION_ALIAS("TEXT_FLASH_LMA", flash4);
-
-/* Flash region to be used for read only data.*/
-REGION_ALIAS("RODATA_FLASH", flash4);
-REGION_ALIAS("RODATA_FLASH_LMA", flash4);
-
-/* Flash region to be used for various.*/
-REGION_ALIAS("VARIOUS_FLASH", flash4);
-REGION_ALIAS("VARIOUS_FLASH_LMA", flash4);
-
-/* Flash region to be used for RAM(n) initialization data.*/
-REGION_ALIAS("RAM_INIT_FLASH_LMA", flash4);
-
-/* 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", flash4);
-
-/* 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
-
-/* TinyUF2 bootloader reset support */
-_board_dfu_dbl_tap = ORIGIN(ram0) + 64k - 4; /* this is based off the linker file for tinyuf2 */
diff --git a/keyboards/mlego/m65/rev4/rules.mk b/keyboards/mlego/m65/rev4/rules.mk
index bf4285383a..a16dbefe32 100644
--- a/keyboards/mlego/m65/rev4/rules.mk
+++ b/keyboards/mlego/m65/rev4/rules.mk
@@ -1,11 +1,10 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = tinyuf2
#BOOTLOADER = stm32-dfu
-MCU_LDSCRIPT = STM32F401xE
-EEPROM_DRIVER = vendor
# Build Options
# change yes to no to disable
diff --git a/keyboards/mmkzoo65/config.h b/keyboards/mmkzoo65/config.h
index 18d7c40ca6..b874fdef8a 100644
--- a/keyboards/mmkzoo65/config.h
+++ b/keyboards/mmkzoo65/config.h
@@ -18,13 +18,6 @@
#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
@@ -45,4 +38,3 @@
/* å°†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
index 682c2238fc..e83b0cc767 100644
--- a/keyboards/mmkzoo65/info.json
+++ b/keyboards/mmkzoo65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MMKZOO65",
+ "manufacturer": "MWStudio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7BA1",
+ "pid": "0x6505",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mmkzoo65/readme.md b/keyboards/mmkzoo65/readme.md
index 96a699769a..967201ddc1 100644
--- a/keyboards/mmkzoo65/readme.md
+++ b/keyboards/mmkzoo65/readme.md
@@ -19,4 +19,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/mnk1800s/config.h b/keyboards/mnk1800s/config.h
index 1c7ec21a29..e0f17b50a0 100755
--- a/keyboards/mnk1800s/config.h
+++ b/keyboards/mnk1800s/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x3138
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT MNK1800s
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
@@ -39,7 +32,7 @@ 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
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* define if matrix has ghost (lacks anti-ghosting diodes) */
diff --git a/keyboards/mnk1800s/info.json b/keyboards/mnk1800s/info.json
index 9dd79dbf7d..7c2a2738b7 100755
--- a/keyboards/mnk1800s/info.json
+++ b/keyboards/mnk1800s/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MNK1800s",
+ "manufacturer": "Yiancar-Designs",
"url": "https://yiancar-designs.com",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x3138",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mnk50/config.h b/keyboards/mnk50/config.h
index 9e49bd5c96..ef36c3422e 100755
--- a/keyboards/mnk50/config.h
+++ b/keyboards/mnk50/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4D35
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT MNK50
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
@@ -39,7 +32,7 @@ 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
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* define if matrix has ghost (lacks anti-ghosting diodes) */
diff --git a/keyboards/mnk50/info.json b/keyboards/mnk50/info.json
index 2d174ead3c..c4d222138b 100755
--- a/keyboards/mnk50/info.json
+++ b/keyboards/mnk50/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MNK50",
+ "manufacturer": "Yiancar-Designs",
"url": "https://yiancar-designs.com",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4D35",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mnk75/config.h b/keyboards/mnk75/config.h
index a0aec085d3..67d5f857c5 100755
--- a/keyboards/mnk75/config.h
+++ b/keyboards/mnk75/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -39,7 +32,7 @@ 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
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* define if matrix has ghost (lacks anti-ghosting diodes) */
diff --git a/keyboards/mnk75/info.json b/keyboards/mnk75/info.json
index 65b2100da5..24f54f8c00 100755
--- a/keyboards/mnk75/info.json
+++ b/keyboards/mnk75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MNK75",
+ "manufacturer": "Yiancar-Designs",
"url": "https://yiancar-designs.com",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4D37",
+ "device_version": "0.0.1"
+ },
"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/mntre/config.h b/keyboards/mntre/config.h
index af5f810741..ada82728d3 100644
--- a/keyboards/mntre/config.h
+++ b/keyboards/mntre/config.h
@@ -5,13 +5,6 @@
#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
@@ -28,7 +21,6 @@
*/
#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
diff --git a/keyboards/mntre/info.json b/keyboards/mntre/info.json
index cf3ce47394..77ffdb2809 100644
--- a/keyboards/mntre/info.json
+++ b/keyboards/mntre/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MNT Reform USB Keyboard (Standalone)",
+ "manufacturer": "MNT Research GmbH",
"url": "https://shop.mntmn.com/products/mnt-reform-usb-keyboard-standalone",
"maintainer": "cdc-mkb",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1302",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mntre/readme.md b/keyboards/mntre/readme.md
index 4c827aeb25..685a140892 100644
--- a/keyboards/mntre/readme.md
+++ b/keyboards/mntre/readme.md
@@ -23,5 +23,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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")
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/mode/m65ha_alpha/config.h b/keyboards/mode/m65ha_alpha/config.h
index cdeffe6fa3..b8edfeee82 100644
--- a/keyboards/mode/m65ha_alpha/config.h
+++ b/keyboards/mode/m65ha_alpha/config.h
@@ -17,13 +17,6 @@ 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
@@ -49,8 +42,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
-#define STM32_HSECLK 8000000
-
#define OPENDRAIN_INDICATORS
#define LED_CAPS_LOCK_PIN A6
diff --git a/keyboards/mode/m65ha_alpha/info.json b/keyboards/mode/m65ha_alpha/info.json
index a25d22714e..c2ae3d385d 100644
--- a/keyboards/mode/m65ha_alpha/info.json
+++ b/keyboards/mode/m65ha_alpha/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Mode SixtyFive HA",
+ "keyboard_name": "SixtyFive HA",
+ "manufacturer": "Mode",
"url": "",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x00DE",
+ "pid": "0x6566",
+ "device_version": "0.6.5"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mode/m65ha_alpha/mcuconf.h b/keyboards/mode/m65ha_alpha/mcuconf.h
index e4cefd0b75..0ca8c64850 100644
--- a/keyboards/mode/m65ha_alpha/mcuconf.h
+++ b/keyboards/mode/m65ha_alpha/mcuconf.h
@@ -17,19 +17,6 @@
#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/rules.mk b/keyboards/mode/m65ha_alpha/rules.mk
index 191428572e..091e076bd0 100644
--- a/keyboards/mode/m65ha_alpha/rules.mk
+++ b/keyboards/mode/m65ha_alpha/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
# Bootloader selection
BOOTLOADER = stm32-dfu
@@ -17,5 +18,6 @@ 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/config.h b/keyboards/mode/m65hi_alpha/config.h
index daacee56ce..3886755cb3 100644
--- a/keyboards/mode/m65hi_alpha/config.h
+++ b/keyboards/mode/m65hi_alpha/config.h
@@ -17,13 +17,6 @@ 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
@@ -49,8 +42,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
-#define STM32_HSECLK 8000000
-
#define OPENDRAIN_INDICATORS
#define LED_CAPS_LOCK_PIN A6
diff --git a/keyboards/mode/m65hi_alpha/info.json b/keyboards/mode/m65hi_alpha/info.json
index aa5f98efc6..231299e6d1 100644
--- a/keyboards/mode/m65hi_alpha/info.json
+++ b/keyboards/mode/m65hi_alpha/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Mode SixtyFive HI",
+ "keyboard_name": "SixtyFive HI",
+ "manufacturer": "Mode",
"url": "",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x00DE",
+ "pid": "0x6574",
+ "device_version": "0.6.5"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mode/m65hi_alpha/mcuconf.h b/keyboards/mode/m65hi_alpha/mcuconf.h
index 97f2ee51ee..dd68a8c1e7 100644
--- a/keyboards/mode/m65hi_alpha/mcuconf.h
+++ b/keyboards/mode/m65hi_alpha/mcuconf.h
@@ -22,19 +22,6 @@
#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/rules.mk b/keyboards/mode/m65hi_alpha/rules.mk
index 191428572e..091e076bd0 100644
--- a/keyboards/mode/m65hi_alpha/rules.mk
+++ b/keyboards/mode/m65hi_alpha/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
# Bootloader selection
BOOTLOADER = stm32-dfu
@@ -17,5 +18,6 @@ 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/config.h b/keyboards/mode/m65s/config.h
index 9cd3bfcb35..4459e37145 100644
--- a/keyboards/mode/m65s/config.h
+++ b/keyboards/mode/m65s/config.h
@@ -17,13 +17,6 @@ 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 0x6583 // For 65S
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mode
-#define PRODUCT SixtyFive S
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -49,8 +42,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
-#define STM32_HSECLK 8000000
-
#define OPENDRAIN_INDICATORS
#define LED_CAPS_LOCK_PIN C8
diff --git a/keyboards/mode/m65s/info.json b/keyboards/mode/m65s/info.json
index cb0cf8c12c..511a05bf8f 100644
--- a/keyboards/mode/m65s/info.json
+++ b/keyboards/mode/m65s/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Mode SixtyFive S",
+ "keyboard_name": "SixtyFive S",
+ "manufacturer": "Mode",
"url": "",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x00DE",
+ "pid": "0x6583",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mode/m65s/mcuconf.h b/keyboards/mode/m65s/mcuconf.h
index 97f2ee51ee..dd68a8c1e7 100644
--- a/keyboards/mode/m65s/mcuconf.h
+++ b/keyboards/mode/m65s/mcuconf.h
@@ -22,19 +22,6 @@
#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/m65s/rules.mk b/keyboards/mode/m65s/rules.mk
index bb3ebaee28..91f94bfa10 100644
--- a/keyboards/mode/m65s/rules.mk
+++ b/keyboards/mode/m65s/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/mode/m75h/config.h b/keyboards/mode/m75h/config.h
index 6618d2bdbd..0dff69fac9 100644
--- a/keyboards/mode/m75h/config.h
+++ b/keyboards/mode/m75h/config.h
@@ -17,13 +17,6 @@ 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
@@ -50,8 +43,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
-#define STM32_HSECLK 8000000
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/mode/m75h/info.json b/keyboards/mode/m75h/info.json
index 91584e8863..e3b5c6d64b 100644
--- a/keyboards/mode/m75h/info.json
+++ b/keyboards/mode/m75h/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Mode 75H",
+ "keyboard_name": "75H",
+ "manufacturer": "Mode",
"url": "",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x00DE",
+ "pid": "0x7572",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mode/m75h/mcuconf.h b/keyboards/mode/m75h/mcuconf.h
index 97f2ee51ee..dd68a8c1e7 100644
--- a/keyboards/mode/m75h/mcuconf.h
+++ b/keyboards/mode/m75h/mcuconf.h
@@ -22,19 +22,6 @@
#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
index a663847278..7b9a6a8710 100644
--- a/keyboards/mode/m75h/readme.md
+++ b/keyboards/mode/m75h/readme.md
@@ -1,8 +1,6 @@
-# Mode SixtyFive M65S
+# Mode SixtyFive M75H
-![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/).
+The M75H is the hot-swappable 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
@@ -10,10 +8,10 @@ The M65S is the solderable PCB for the Mode SixtyFive keyboard, a sixty-five-per
Make example for this keyboard (after setting up your build environment):
- make mode/m65s:default
+ make mode/m75h:default
Flashing example for this keyboard:
- make mode/m65s:default:flash
+ make mode/m75h: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
index f7659378cc..76752ec1b3 100644
--- a/keyboards/mode/m75h/rules.mk
+++ b/keyboards/mode/m75h/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/mode/m75s/config.h b/keyboards/mode/m75s/config.h
index 9e902a1585..5da8543e95 100644
--- a/keyboards/mode/m75s/config.h
+++ b/keyboards/mode/m75s/config.h
@@ -17,13 +17,6 @@ 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
@@ -50,8 +43,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
-#define STM32_HSECLK 8000000
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/mode/m75s/info.json b/keyboards/mode/m75s/info.json
index d45cee20dc..2b58f194fb 100644
--- a/keyboards/mode/m75s/info.json
+++ b/keyboards/mode/m75s/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Mode 75S",
+ "keyboard_name": "75S",
+ "manufacturer": "Mode",
"url": "",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x00DE",
+ "pid": "0x7583",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mode/m75s/mcuconf.h b/keyboards/mode/m75s/mcuconf.h
index 97f2ee51ee..dd68a8c1e7 100644
--- a/keyboards/mode/m75s/mcuconf.h
+++ b/keyboards/mode/m75s/mcuconf.h
@@ -22,19 +22,6 @@
#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/rules.mk b/keyboards/mode/m75s/rules.mk
index f7659378cc..76752ec1b3 100644
--- a/keyboards/mode/m75s/rules.mk
+++ b/keyboards/mode/m75s/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/mode/m80v1/config.h b/keyboards/mode/m80v1/config.h
index a0d39774e6..675cc3385d 100644
--- a/keyboards/mode/m80v1/config.h
+++ b/keyboards/mode/m80v1/config.h
@@ -16,11 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x00DE
-#define MANUFACTURER Mode
-#define PRODUCT Eighty
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -38,7 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { A10, A15, B3, B9, A3, A4 }
#define MATRIX_COL_PINS { B8, B7, B6, B5, B4, A2, A1, A0, F1, F0, C15, C14, C13, A7, A6, A5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mode/m80v1/m80h/config.h b/keyboards/mode/m80v1/m80h/config.h
deleted file mode 100644
index b119ad4fff..0000000000
--- a/keyboards/mode/m80v1/m80h/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-Copyright 2020 Alvaro "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 PRODUCT_ID 0x0081
-#define DEVICE_VER 0x0072 //H for hotswap version
diff --git a/keyboards/mode/m80v1/m80h/info.json b/keyboards/mode/m80v1/m80h/info.json
index 97d5881997..bb65727e62 100644
--- a/keyboards/mode/m80v1/m80h/info.json
+++ b/keyboards/mode/m80v1/m80h/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MODE80H",
+ "keyboard_name": "Eighty",
+ "manufacturer": "Mode",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x00DE",
+ "pid": "0x0081",
+ "device_version": "0.7.2"
+ },
"layouts": {
"LAYOUT_eighty_m80h": {
"layout": [
diff --git a/keyboards/mode/m80v1/m80s/config.h b/keyboards/mode/m80v1/m80s/config.h
deleted file mode 100644
index 3e7f2ec3a8..0000000000
--- a/keyboards/mode/m80v1/m80s/config.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-Copyright 2020 Alvaro "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 PRODUCT_ID 0x0080
-#define DEVICE_VER 0x0083 //S for solderable version
diff --git a/keyboards/mode/m80v1/m80s/info.json b/keyboards/mode/m80v1/m80s/info.json
index c586614a78..7b72eb256f 100644
--- a/keyboards/mode/m80v1/m80s/info.json
+++ b/keyboards/mode/m80v1/m80s/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MODE80S",
+ "keyboard_name": "Eighty",
+ "manufacturer": "Mode",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x00DE",
+ "pid": "0x0080",
+ "device_version": "0.8.3"
+ },
"layouts": {
"LAYOUT_eighty_m80s": {
"layout": [
diff --git a/keyboards/mode/m80v1/readme.md b/keyboards/mode/m80v1/readme.md
index 5435a02e61..558204b5b7 100644
--- a/keyboards/mode/m80v1/readme.md
+++ b/keyboards/mode/m80v1/readme.md
@@ -17,7 +17,7 @@ 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)
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (ESC key at layer 1 in the default layout)
## Compile firmware
diff --git a/keyboards/mode/m80v2/config.h b/keyboards/mode/m80v2/config.h
index fbe5fb86df..9382def58a 100644
--- a/keyboards/mode/m80v2/config.h
+++ b/keyboards/mode/m80v2/config.h
@@ -17,11 +17,6 @@ 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
diff --git a/keyboards/mode/m80v2/m80v2h/config.h b/keyboards/mode/m80v2/m80v2h/config.h
deleted file mode 100644
index f474e28453..0000000000
--- a/keyboards/mode/m80v2/m80v2h/config.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#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
index 251937c562..13bd6c67bc 100644
--- a/keyboards/mode/m80v2/m80v2h/info.json
+++ b/keyboards/mode/m80v2/m80v2h/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MODE80V2H",
+ "keyboard_name": "M80H V2",
+ "manufacturer": "Mode",
"url": "https://shop.modedesigns.com/collections/eighty",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x00DE",
+ "pid": "0x0083",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_m80v2h": {
"layout": [
diff --git a/keyboards/mode/m80v2/m80v2s/config.h b/keyboards/mode/m80v2/m80v2s/config.h
deleted file mode 100644
index ad1871f8ab..0000000000
--- a/keyboards/mode/m80v2/m80v2s/config.h
+++ /dev/null
@@ -1,2 +0,0 @@
-#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
index 6e0bd62d51..4e2a4fc6f5 100644
--- a/keyboards/mode/m80v2/m80v2s/info.json
+++ b/keyboards/mode/m80v2/m80v2s/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MODE80V2S",
+ "keyboard_name": "M80S V2",
+ "manufacturer": "Mode",
"url": "https://shop.modedesigns.com/collections/eighty",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x00DE",
+ "pid": "0x0082",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_m80v2s": {
"layout": [
diff --git a/keyboards/mode/m80v2/readme.md b/keyboards/mode/m80v2/readme.md
index e94984f06b..b5ea62ec27 100644
--- a/keyboards/mode/m80v2/readme.md
+++ b/keyboards/mode/m80v2/readme.md
@@ -17,7 +17,7 @@ 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)
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (ESC key at layer 1 in the default layout)
## Compile firmware
diff --git a/keyboards/mokey/ginkgo65/config.h b/keyboards/mokey/ginkgo65/config.h
index 3660989267..6605744221 100644
--- a/keyboards/mokey/ginkgo65/config.h
+++ b/keyboards/mokey/ginkgo65/config.h
@@ -15,20 +15,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6653
-#define PRODUCT_ID 0x3365
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mokey
-#define PRODUCT ginkgo 65
-
/* 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_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, B1 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define BACKLIGHT_PIN B6
diff --git a/keyboards/mokey/ginkgo65/info.json b/keyboards/mokey/ginkgo65/info.json
index 080d97feeb..462d1869b6 100644
--- a/keyboards/mokey/ginkgo65/info.json
+++ b/keyboards/mokey/ginkgo65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ginkgo65",
+ "keyboard_name": "ginkgo 65",
+ "manufacturer": "Mokey",
"url": "",
"maintainer": "rhmokey",
+ "usb": {
+ "vid": "0x6653",
+ "pid": "0x3365",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_65_ansi_blocker"
},
diff --git a/keyboards/mokey/ginkgo65hot/config.h b/keyboards/mokey/ginkgo65hot/config.h
index 5b73c4dc98..423d844765 100644
--- a/keyboards/mokey/ginkgo65hot/config.h
+++ b/keyboards/mokey/ginkgo65hot/config.h
@@ -15,20 +15,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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 MATRIX_ROW_PINS { B0, B1, B2, B3, F7 }
+#define MATRIX_COL_PINS { C7, F6, F5, F4, F1, E6, D0, D1, D2, D3, D5, D4, D6, D7, B4 }
#define DIODE_DIRECTION COL2ROW
#define BACKLIGHT_PIN B6
diff --git a/keyboards/mokey/ginkgo65hot/ginkgo65hot.h b/keyboards/mokey/ginkgo65hot/ginkgo65hot.h
index 1a599291b8..e4a42d9ad9 100644
--- a/keyboards/mokey/ginkgo65hot/ginkgo65hot.h
+++ b/keyboards/mokey/ginkgo65hot/ginkgo65hot.h
@@ -19,7 +19,7 @@
#define XXX KC_NO
-/*LAYOUT
+/*LAYOUT_65_ansi_blocker
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
* │k00│k01│k02│k03│k04│k05│k06│k07│k08│k09│k0A│k0B│k0C│ k0D │k0E│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
@@ -32,7 +32,7 @@
* │k40 │k41 │k42 │ k44 │k49 │k4A │ │k4C│k4D│k4E│
* └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
*/
-#define LAYOUT( \
+#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, \
diff --git a/keyboards/mokey/ginkgo65hot/info.json b/keyboards/mokey/ginkgo65hot/info.json
index e2e96c167c..929e31e31b 100644
--- a/keyboards/mokey/ginkgo65hot/info.json
+++ b/keyboards/mokey/ginkgo65hot/info.json
@@ -1,82 +1,91 @@
{
"keyboard_name": "ginkgo65hot",
+ "manufacturer": "Mokey",
"url": "",
"maintainer": "mokey",
+ "usb": {
+ "vid": "0x6653",
+ "pid": "0x3366",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_65_ansi_blocker"
+ },
"layouts": {
- "LAYOUT": {
+ "LAYOUT_65_ansi_blocker": {
"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":"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":"Insert", "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":"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":"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":"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":"Return", "x":12.75, "y":2, "w":2.25},
+ {"label":"Page Up", "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":"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":"Page Down", "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}
+ {"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}
]
}
}
-} \ No newline at end of file
+}
diff --git a/keyboards/mokey/ginkgo65hot/rules.mk b/keyboards/mokey/ginkgo65hot/rules.mk
index 02fbe72525..d04e1a74fa 100644
--- a/keyboards/mokey/ginkgo65hot/rules.mk
+++ b/keyboards/mokey/ginkgo65hot/rules.mk
@@ -16,3 +16,5 @@ 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
+
+LAYOUTS = 65_ansi_blocker
diff --git a/keyboards/mokey/ibis80/config.h b/keyboards/mokey/ibis80/config.h
new file mode 100644
index 0000000000..e70b8b8084
--- /dev/null
+++ b/keyboards/mokey/ibis80/config.h
@@ -0,0 +1,32 @@
+/*
+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"
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+#define MATRIX_ROW_PINS { B0, B1, B2, E6, F0, F1 }
+#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4 }
+#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
+
diff --git a/keyboards/mokey/ibis80/ibis80.c b/keyboards/mokey/ibis80/ibis80.c
new file mode 100644
index 0000000000..faddc99eb5
--- /dev/null
+++ b/keyboards/mokey/ibis80/ibis80.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 "ibis80.h" \ No newline at end of file
diff --git a/keyboards/mokey/ibis80/ibis80.h b/keyboards/mokey/ibis80/ibis80.h
new file mode 100644
index 0000000000..ed2dbf7195
--- /dev/null
+++ b/keyboards/mokey/ibis80/ibis80.h
@@ -0,0 +1,76 @@
+/* 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
+
+/*
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┠┌───┬───┬───â”
+ * │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 │ │1E │1F │1G │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ┌─────â”
+ * │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │ │2E │2F │2G │ │3D │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ┌──┴┠│ ISO Enter
+ * │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │ │2D │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┠└───┴────┘
+ * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4A │4D │ │4F │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───â”
+ * │50 │51 │52 │56 │5A │5B │5D │ │5E │5F │5G │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+ * ┌─────┠┌─────┬───────────────────────────┬─────┠┌─────â”
+ * │50 │ │52 │56 │5A │ │5D │
+ * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘
+ */
+
+#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, 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, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4d, k4f, \
+ k50, k51, k52, k56, k5a, k5b, 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, KC_NO, k3d, KC_NO, KC_NO, KC_NO }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, KC_NO, KC_NO, k4d, KC_NO, k4f, KC_NO }, \
+ { k50, k51, k52, KC_NO, KC_NO, KC_NO, k56, KC_NO, KC_NO, KC_NO, k5a, k5b, KC_NO, k5d, k5e, k5f, k5g } \
+}
+
+#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, k1f, k1g, \
+ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k3d, k2e, k2f, k2g, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k2d, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4d, k4f, \
+ k50, k52, k56, k5a, 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, k3d, k2e, k2f, k2g }, \
+ { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, KC_NO, k2d, KC_NO, KC_NO, KC_NO }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, KC_NO, KC_NO, k4d, KC_NO, k4f, KC_NO }, \
+ { k50, KC_NO, k52, KC_NO, KC_NO, KC_NO, k56, KC_NO, KC_NO, KC_NO, k5a, KC_NO, KC_NO, k5d, k5e, k5f, k5g } \
+}
+
diff --git a/keyboards/mokey/ibis80/info.json b/keyboards/mokey/ibis80/info.json
new file mode 100644
index 0000000000..d236eabc71
--- /dev/null
+++ b/keyboards/mokey/ibis80/info.json
@@ -0,0 +1,213 @@
+{
+ "keyboard_name": "ibis 80",
+ "manufacturer": "Mokey",
+ "url": "",
+ "maintainer": "Mokey",
+ "usb": {
+ "vid": "0x6653",
+ "pid": "0x3380",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label": "k00", "x": 0, "y": 0},
+ {"label": "k01", "x": 1.25, "y": 0},
+ {"label": "k02", "x": 2.25, "y": 0},
+ {"label": "k03", "x": 3.25, "y": 0},
+ {"label": "k04", "x": 4.25, "y": 0},
+ {"label": "k05", "x": 5.5, "y": 0},
+ {"label": "k06", "x": 6.5, "y": 0},
+ {"label": "k07", "x": 7.5, "y": 0},
+ {"label": "k08", "x": 8.5, "y": 0},
+ {"label": "k09", "x": 9.75, "y": 0},
+ {"label": "k0A", "x": 10.75, "y": 0},
+ {"label": "k0B", "x": 11.75, "y": 0},
+ {"label": "k0C", "x": 12.75, "y": 0},
+ {"label": "k0D", "x": 14, "y": 0},
+
+ {"label": "k0E", "x": 15.25, "y": 0},
+ {"label": "k0F", "x": 16.25, "y": 0},
+ {"label": "k0G", "x": 17.25, "y": 0},
+
+ {"label": "k10", "x": 0, "y": 1.5},
+ {"label": "k11", "x": 1, "y": 1.5},
+ {"label": "k12", "x": 2, "y": 1.5},
+ {"label": "k13", "x": 3, "y": 1.5},
+ {"label": "k14", "x": 4, "y": 1.5},
+ {"label": "k15", "x": 5, "y": 1.5},
+ {"label": "k16", "x": 6, "y": 1.5},
+ {"label": "k17", "x": 7, "y": 1.5},
+ {"label": "k18", "x": 8, "y": 1.5},
+ {"label": "k19", "x": 9, "y": 1.5},
+ {"label": "k1A", "x": 10, "y": 1.5},
+ {"label": "k1B", "x": 11, "y": 1.5},
+ {"label": "k1C", "x": 12, "y": 1.5},
+ {"label": "k1D", "x": 13, "y": 1.5, "w": 2},
+
+ {"label": "k1E", "x": 15.25, "y": 1.5},
+ {"label": "k1F", "x": 16.25, "y": 1.5},
+ {"label": "k1G", "x": 17.25, "y": 1.5},
+
+ {"label": "k20", "x": 0, "y": 2.5, "w": 1.5},
+ {"label": "k21", "x": 1.5, "y": 2.5},
+ {"label": "k22", "x": 2.5, "y": 2.5},
+ {"label": "k23", "x": 3.5, "y": 2.5},
+ {"label": "k24", "x": 4.5, "y": 2.5},
+ {"label": "k25", "x": 5.5, "y": 2.5},
+ {"label": "k26", "x": 6.5, "y": 2.5},
+ {"label": "k27", "x": 7.5, "y": 2.5},
+ {"label": "k28", "x": 8.5, "y": 2.5},
+ {"label": "k29", "x": 9.5, "y": 2.5},
+ {"label": "k2A", "x": 10.5, "y": 2.5},
+ {"label": "k2B", "x": 11.5, "y": 2.5},
+ {"label": "k2C", "x": 12.5, "y": 2.5},
+ {"label": "k2D", "x": 13.5, "y": 2.5},
+
+ {"label": "k2E", "x": 15.25, "y": 2.5},
+ {"label": "k2F", "x": 16.25, "y": 2.5},
+ {"label": "k2G", "x": 17.25, "y": 2.5},
+
+ {"label": "k30", "x": 0, "y": 3.5, "w": 1.75},
+ {"label": "k31", "x": 1.75, "y": 3.5},
+ {"label": "k32", "x": 2.75, "y": 3.5},
+ {"label": "k33", "x": 3.75, "y": 3.5},
+ {"label": "k34", "x": 4.75, "y": 3.5},
+ {"label": "k35", "x": 5.75, "y": 3.5},
+ {"label": "k36", "x": 6.75, "y": 3.5},
+ {"label": "k37", "x": 7.75, "y": 3.5},
+ {"label": "k38", "x": 8.75, "y": 3.5},
+ {"label": "k39", "x": 9.75, "y": 3.5},
+ {"label": "k3A", "x": 10.75, "y": 3.5},
+ {"label": "k3B", "x": 11.75, "y": 3.5},
+ {"label": "k3D", "x": 12.75, "y": 3.5, "w": 2.25},
+
+ {"label": "k40", "x": 0, "y": 4.5, "w": 2.25},
+ {"label": "k41", "x": 2.25, "y": 4.5},
+ {"label": "k42", "x": 3.25, "y": 4.5},
+ {"label": "k43", "x": 4.25, "y": 4.5},
+ {"label": "k44", "x": 5.25, "y": 4.5},
+ {"label": "k45", "x": 6.25, "y": 4.5},
+ {"label": "k46", "x": 7.25, "y": 4.5},
+ {"label": "k47", "x": 8.25, "y": 4.5},
+ {"label": "k48", "x": 9.25, "y": 4.5},
+ {"label": "k49", "x": 10.25, "y": 4.5},
+ {"label": "k4A", "x": 11.25, "y": 4.5},
+ {"label": "k4D", "x": 12.25, "y": 4.5, "w": 2.75},
+
+ {"label": "k4F", "x": 16.25, "y": 4.5},
+
+ {"label": "k50", "x": 0, "y": 5.5, "w": 1.5},
+ {"label": "k51", "x": 1.5, "y": 5.5},
+ {"label": "k52", "x": 2.5, "y": 5.5, "w": 1.5},
+ {"label": "k56", "x": 4, "y": 5.5, "w": 7},
+ {"label": "k5A", "x": 11, "y": 5.5, "w": 1.5},
+ {"label": "k5B", "x": 12.5, "y": 5.5},
+ {"label": "k5D", "x": 13.5, "y": 5.5, "w": 1.5},
+
+ {"label": "k5E", "x": 15.25, "y": 5.5},
+ {"label": "k5F", "x": 16.25, "y": 5.5},
+ {"label": "k5G", "x": 17.25, "y": 5.5}
+ ]
+ },
+ "LAYOUT_all": {
+ "layout": [
+ {"label": "k00", "x": 0, "y": 0},
+ {"label": "k01", "x": 1.25, "y": 0},
+ {"label": "k02", "x": 2.25, "y": 0},
+ {"label": "k03", "x": 3.25, "y": 0},
+ {"label": "k04", "x": 4.25, "y": 0},
+ {"label": "k05", "x": 5.5, "y": 0},
+ {"label": "k06", "x": 6.5, "y": 0},
+ {"label": "k07", "x": 7.5, "y": 0},
+ {"label": "k08", "x": 8.5, "y": 0},
+ {"label": "k09", "x": 9.75, "y": 0},
+ {"label": "k0A", "x": 10.75, "y": 0},
+ {"label": "k0B", "x": 11.75, "y": 0},
+ {"label": "k0C", "x": 12.75, "y": 0},
+ {"label": "k0D", "x": 14, "y": 0},
+
+ {"label": "k0E", "x": 15.25, "y": 0},
+ {"label": "k0F", "x": 16.25, "y": 0},
+ {"label": "k0G", "x": 17.25, "y": 0},
+
+ {"label": "k10", "x": 0, "y": 1.5},
+ {"label": "k11", "x": 1, "y": 1.5},
+ {"label": "k12", "x": 2, "y": 1.5},
+ {"label": "k13", "x": 3, "y": 1.5},
+ {"label": "k14", "x": 4, "y": 1.5},
+ {"label": "k15", "x": 5, "y": 1.5},
+ {"label": "k16", "x": 6, "y": 1.5},
+ {"label": "k17", "x": 7, "y": 1.5},
+ {"label": "k18", "x": 8, "y": 1.5},
+ {"label": "k19", "x": 9, "y": 1.5},
+ {"label": "k1A", "x": 10, "y": 1.5},
+ {"label": "k1B", "x": 11, "y": 1.5},
+ {"label": "k1C", "x": 12, "y": 1.5},
+ {"label": "k1D", "x": 13, "y": 1.5, "w": 2},
+
+ {"label": "k1E", "x": 15.25, "y": 1.5},
+ {"label": "k1F", "x": 16.25, "y": 1.5},
+ {"label": "k1G", "x": 17.25, "y": 1.5},
+
+ {"label": "k20", "x": 0, "y": 2.5, "w": 1.5},
+ {"label": "k21", "x": 1.5, "y": 2.5},
+ {"label": "k22", "x": 2.5, "y": 2.5},
+ {"label": "k23", "x": 3.5, "y": 2.5},
+ {"label": "k24", "x": 4.5, "y": 2.5},
+ {"label": "k25", "x": 5.5, "y": 2.5},
+ {"label": "k26", "x": 6.5, "y": 2.5},
+ {"label": "k27", "x": 7.5, "y": 2.5},
+ {"label": "k28", "x": 8.5, "y": 2.5},
+ {"label": "k29", "x": 9.5, "y": 2.5},
+ {"label": "k2A", "x": 10.5, "y": 2.5},
+ {"label": "k2B", "x": 11.5, "y": 2.5},
+ {"label": "k2C", "x": 12.5, "y": 2.5},
+ {"label": "k3D", "x": 13.75, "y": 2.5, "w": 1.25, "h": 2},
+
+ {"label": "k2E", "x": 15.25, "y": 2.5},
+ {"label": "k2F", "x": 16.25, "y": 2.5},
+ {"label": "k2G", "x": 17.25, "y": 2.5},
+
+ {"label": "k30", "x": 0, "y": 3.5, "w": 1.75},
+ {"label": "k31", "x": 1.75, "y": 3.5},
+ {"label": "k32", "x": 2.75, "y": 3.5},
+ {"label": "k33", "x": 3.75, "y": 3.5},
+ {"label": "k34", "x": 4.75, "y": 3.5},
+ {"label": "k35", "x": 5.75, "y": 3.5},
+ {"label": "k36", "x": 6.75, "y": 3.5},
+ {"label": "k37", "x": 7.75, "y": 3.5},
+ {"label": "k38", "x": 8.75, "y": 3.5},
+ {"label": "k39", "x": 9.75, "y": 3.5},
+ {"label": "k3A", "x": 10.75, "y": 3.5},
+ {"label": "k3B", "x": 11.75, "y": 3.5},
+ {"label": "k2C", "x": 12.75, "y": 3.5},
+
+ {"label": "k40", "x": 0, "y": 4.5, "w": 2.25},
+ {"label": "k41", "x": 2.25, "y": 4.5},
+ {"label": "k42", "x": 3.25, "y": 4.5},
+ {"label": "k43", "x": 4.25, "y": 4.5},
+ {"label": "k44", "x": 5.25, "y": 4.5},
+ {"label": "k45", "x": 6.25, "y": 4.5},
+ {"label": "k46", "x": 7.25, "y": 4.5},
+ {"label": "k47", "x": 8.25, "y": 4.5},
+ {"label": "k48", "x": 9.25, "y": 4.5},
+ {"label": "k49", "x": 10.25, "y": 4.5},
+ {"label": "k4A", "x": 11.25, "y": 4.5},
+ {"label": "k4D", "x": 12.25, "y": 4.5, "w": 2.75},
+
+ {"label": "k4F", "x": 16.25, "y": 4.5},
+
+ {"label": "k50", "x": 0, "y": 5.5, "w": 1.5},
+ {"label": "k52", "x": 2.5, "y": 5.5, "w": 1.5},
+ {"label": "k56", "x": 4, "y": 5.5, "w": 7},
+ {"label": "k5A", "x": 11, "y": 5.5, "w": 1.5},
+ {"label": "k5D", "x": 13.5, "y": 5.5, "w": 1.5},
+
+ {"label": "k5E", "x": 15.25, "y": 5.5},
+ {"label": "k5F", "x": 16.25, "y": 5.5},
+ {"label": "k5G", "x": 17.25, "y": 5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/mokey/ibis80/keymaps/default/keymap.c b/keyboards/mokey/ibis80/keymaps/default/keymap.c
new file mode 100644
index 0000000000..fefeede966
--- /dev/null
+++ b/keyboards/mokey/ibis80/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+/* 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_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_F13, KC_PSCR, KC_BRMD, 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_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_LWIN, KC_LALT, KC_SPC, KC_RALT, KC_LWIN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ )
+};
diff --git a/keyboards/mokey/ibis80/keymaps/via/keymap.c b/keyboards/mokey/ibis80/keymaps/via/keymap.c
new file mode 100644
index 0000000000..94678a8201
--- /dev/null
+++ b/keyboards/mokey/ibis80/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* 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_all(
+ 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_F13, KC_PSCR, KC_BRMD, 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_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_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/mokey/ibis80/keymaps/via/rules.mk b/keyboards/mokey/ibis80/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/mokey/ibis80/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/mokey/ibis80/readme.md b/keyboards/mokey/ibis80/readme.md
new file mode 100644
index 0000000000..b493fd7f0d
--- /dev/null
+++ b/keyboards/mokey/ibis80/readme.md
@@ -0,0 +1,18 @@
+# ibis80
+
+Support Atmega32u4 keyboard,With a variety of configurations
+
+* Keyboard Maintainer: [Mokey](https://github.com/Runheme)
+
+## Bootloader
+* **Physical reset button**: Short press the button on the back of the PCB to enter the Bootloader and flash the firmwar
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mokey/ibis80:default
+
+Flashing example for this keyboard:
+
+ make mokey/ibis80: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/ibis80/rules.mk b/keyboards/mokey/ibis80/rules.mk
new file mode 100644
index 0000000000..1275531ef6
--- /dev/null
+++ b/keyboards/mokey/ibis80/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/mokey/mokey63/config.h b/keyboards/mokey/mokey63/config.h
index 504a274143..a8917c31f9 100644
--- a/keyboards/mokey/mokey63/config.h
+++ b/keyboards/mokey/mokey63/config.h
@@ -16,20 +16,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6653
-#define PRODUCT_ID 0x063A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER rhmokey
-#define PRODUCT MOKEY63
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { B5, B6, B2, B3, B1 }
#define MATRIX_COL_PINS { C7, F6, F5, F4, F1, E6, D0, D1, D2, D3, D5, D4, D6, D7, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mokey/mokey63/info.json b/keyboards/mokey/mokey63/info.json
index 476667dfbc..f34c47050e 100644
--- a/keyboards/mokey/mokey63/info.json
+++ b/keyboards/mokey/mokey63/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mokey63",
+ "manufacturer": "Mokey",
"url": "",
"maintainer": "mokey",
+ "usb": {
+ "vid": "0x6653",
+ "pid": "0x063A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mokey/mokey64/config.h b/keyboards/mokey/mokey64/config.h
index 52345ed973..685d26af00 100644
--- a/keyboards/mokey/mokey64/config.h
+++ b/keyboards/mokey/mokey64/config.h
@@ -16,19 +16,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x6653
-#define PRODUCT_ID 0x001A
-#define DEVICE_VER 0x0001
-
-#define MANUFACTURER rhmokey
-#define PRODUCT MOKEY64
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { B1, B2, B3, B4, B5 }
#define MATRIX_COL_PINS { C7, F6, F5, F4, F1, E6, D0, D2, D1, D3, D5, D4, D6, D7, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mokey/mokey64/info.json b/keyboards/mokey/mokey64/info.json
index 62b9c90493..4673f1120c 100644
--- a/keyboards/mokey/mokey64/info.json
+++ b/keyboards/mokey/mokey64/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mokey64",
+ "manufacturer": "Mokey",
"url": "",
"maintainer": "mokey",
+ "usb": {
+ "vid": "0x6653",
+ "pid": "0x001A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mokey/xox70/config.h b/keyboards/mokey/xox70/config.h
index f5c08c4480..a0696aad05 100644
--- a/keyboards/mokey/xox70/config.h
+++ b/keyboards/mokey/xox70/config.h
@@ -15,20 +15,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6653
-#define PRODUCT_ID 0x3370
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mokey
-#define PRODUCT XOX 70
-
/* 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
diff --git a/keyboards/mokey/xox70/info.json b/keyboards/mokey/xox70/info.json
index 5baa620bc6..73aa7e8dec 100644
--- a/keyboards/mokey/xox70/info.json
+++ b/keyboards/mokey/xox70/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "xox70",
+ "keyboard_name": "XOX 70",
+ "manufacturer": "Mokey",
"url": "",
"maintainer": "Mokey",
+ "usb": {
+ "vid": "0x6653",
+ "pid": "0x3370",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/mokey/xox70hot/config.h b/keyboards/mokey/xox70hot/config.h
index bc2279e3d1..a0696aad05 100644
--- a/keyboards/mokey/xox70hot/config.h
+++ b/keyboards/mokey/xox70hot/config.h
@@ -15,20 +15,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/mokey/xox70hot/info.json b/keyboards/mokey/xox70hot/info.json
index a1fc86924f..8a490265ec 100644
--- a/keyboards/mokey/xox70hot/info.json
+++ b/keyboards/mokey/xox70hot/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "xox70hot",
+ "keyboard_name": "XOX 70 Hotswap",
+ "manufacturer": "Mokey",
"url": "",
"maintainer": "rhmokey",
+ "usb": {
+ "vid": "0x6653",
+ "pid": "0x3371",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_tkl_nofrow_ansi_tsangan"
},
diff --git a/keyboards/molecule/config.h b/keyboards/molecule/config.h
index 419554ed2c..8f7396dfc8 100755
--- a/keyboards/molecule/config.h
+++ b/keyboards/molecule/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER bbrfkr
-#define PRODUCT molecule
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, B6 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/molecule/info.json b/keyboards/molecule/info.json
index 9f65262170..e820ad9968 100755
--- a/keyboards/molecule/info.json
+++ b/keyboards/molecule/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "molecule",
+ "manufacturer": "bbrfkr",
"url": "https://github.com/bbrfkr/keyboards/tree/master/molecule",
"maintainer": "bbrfkr",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/momoka_ergo/config.h b/keyboards/momoka_ergo/config.h
index e8fe01f504..e480581220 100644
--- a/keyboards/momoka_ergo/config.h
+++ b/keyboards/momoka_ergo/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER StefanGrindelwald
-#define PRODUCT Momoka Ergo
-
/* key matrix size */
#define MATRIX_ROWS 14
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5, B6, B7 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
@@ -116,12 +108,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
-#define BOOTMAGIC_KEY_SALT KC_RSFT||KC_LSFT
-#define BOOTMAGIC_KEY_SKIP KC_ESC
-#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_NO
-#define OOTMAGIC_KEY_BOOTLOADER KC_RCTL||KC_LCTL
-#define BOOTMAGIC_KEY_EE_HANDS_LEFT KC_T
-#define BOOTMAGIC_KEY_EE_HANDS_RIGHT KC_Y
+
#define USE_SERIAL
#define SPLIT_USB_DETECT
#define EE_HANDS
diff --git a/keyboards/momoka_ergo/info.json b/keyboards/momoka_ergo/info.json
index 058596fe55..c4d6cf38d7 100644
--- a/keyboards/momoka_ergo/info.json
+++ b/keyboards/momoka_ergo/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MOMOKA_ERGO",
+ "keyboard_name": "Momoka Ergo",
+ "manufacturer": "StefanGrindelwald",
"url": "",
"maintainer": "StefanGrindelwald",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/momokai/tap_trio/config.h b/keyboards/momokai/tap_trio/config.h
index 8dc38b10ea..431a570e15 100644
--- a/keyboards/momokai/tap_trio/config.h
+++ b/keyboards/momokai/tap_trio/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x69F9 // "69" + "Popular Racing Movie 9" = Momokai (?)
-#define PRODUCT_ID 0x0006
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Momokai
-#define PRODUCT Tap Trio
-
#define MATRIX_ROWS 1
#define MATRIX_COLS 6
diff --git a/keyboards/momokai/tap_trio/info.json b/keyboards/momokai/tap_trio/info.json
index efe4fc6111..8f3c6ebb6d 100644
--- a/keyboards/momokai/tap_trio/info.json
+++ b/keyboards/momokai/tap_trio/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Momokai Tap Trio",
+ "keyboard_name": "Tap Trio",
+ "manufacturer": "Momokai",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x69F9",
+ "pid": "0x0006",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/monarch/config.h b/keyboards/monarch/config.h
index 90131c5931..f725621c81 100644
--- a/keyboards/monarch/config.h
+++ b/keyboards/monarch/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4011
-#define PRODUCT_ID 0x43C1
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DoCallMeKing
-#define PRODUCT Monarch
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
diff --git a/keyboards/monarch/info.json b/keyboards/monarch/info.json
index f8bc67f1c1..7e615207b6 100644
--- a/keyboards/monarch/info.json
+++ b/keyboards/monarch/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Monarch",
+ "manufacturer": "DoCallMeKing",
"url": "",
"maintainer": "Ramon Imbao",
+ "usb": {
+ "vid": "0x4011",
+ "pid": "0x43C1",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [{"x":0.25, "y":0.25}, {"x":1.25, "y":0.25}, {"x":2.25, "y":0.25}, {"x":3.25, "y":0.25}, {"x":4.25, "y":0.25}, {"x":5.25, "y":0.25}, {"x":6.25, "y":0.25}, {"x":7.25, "y":0.25}, {"x":8.25, "y":0.25}, {"x":9.25, "y":0.25}, {"x":10.25, "y":0.25}, {"x":11.25, "y":0.25}, {"x":12.25, "y":0.25}, {"x":13.25, "y":0.25}, {"x":14.25, "y":0.25}, {"x":15.75, "y":0.25}, {"x":0.25, "y":1.25, "w":1.5}, {"x":1.75, "y":1.25}, {"x":2.75, "y":1.25}, {"x":3.75, "y":1.25}, {"x":4.75, "y":1.25}, {"x":5.75, "y":1.25}, {"x":6.75, "y":1.25}, {"x":7.75, "y":1.25}, {"x":8.75, "y":1.25}, {"x":9.75, "y":1.25}, {"x":10.75, "y":1.25}, {"x":11.75, "y":1.25}, {"x":12.75, "y":1.25}, {"x":13.75, "y":1.25, "w":1.5}, {"x":15.75, "y":1.75}, {"x":0.25, "y":2.25, "w":1.75}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":4, "y":2.25}, {"x":5, "y":2.25}, {"x":6, "y":2.25}, {"x":7, "y":2.25}, {"x":8, "y":2.25}, {"x":9, "y":2.25}, {"x":10, "y":2.25}, {"x":11, "y":2.25}, {"x":12, "y":2.25}, {"x":13, "y":2.25, "w":2.25}, {"x":15.75, "y":2.75}, {"x":0.25, "y":3.25, "w":2.25}, {"x":2.5, "y":3.25}, {"x":3.5, "y":3.25}, {"x":4.5, "y":3.25}, {"x":5.5, "y":3.25}, {"x":6.5, "y":3.25}, {"x":7.5, "y":3.25}, {"x":8.5, "y":3.25}, {"x":9.5, "y":3.25}, {"x":10.5, "y":3.25}, {"x":11.5, "y":3.25}, {"x":12.5, "y":3.25, "w":1.75}, {"x":14.5, "y":3.5}, {"x":0.25, "y":4.25, "w":1.5}, {"x":1.75, "y":4.25}, {"x":2.75, "y":4.25, "w":1.5}, {"x":4.25, "y":4.25, "w":7}, {"x":11.25, "y":4.25, "w":1.5}, {"x":13.5, "y":4.5}, {"x":14.5, "y":4.5}, {"x":15.5, "y":4.5}]
diff --git a/keyboards/monoflex60/config.h b/keyboards/monoflex60/config.h
index 6e02810027..2663b4ffb3 100644
--- a/keyboards/monoflex60/config.h
+++ b/keyboards/monoflex60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 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
diff --git a/keyboards/monoflex60/info.json b/keyboards/monoflex60/info.json
index 7a4fb99447..64fc9f789a 100644
--- a/keyboards/monoflex60/info.json
+++ b/keyboards/monoflex60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Monoflex 60",
+ "manufacturer": "SanitGo Customs",
"url": "",
"maintainer": "keyten",
+ "usb": {
+ "vid": "0xDEB4",
+ "pid": "0x60EB",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/monoflex60/readme.md b/keyboards/monoflex60/readme.md
index cfb4e31d15..62b609e7c4 100644
--- a/keyboards/monoflex60/readme.md
+++ b/keyboards/monoflex60/readme.md
@@ -25,5 +25,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* Keycode in layout: Press the key mapped to `QK_BOOT` if it is available
* Physical reset button: Press the button on the back of the PCB
diff --git a/keyboards/monstargear/xo87/rgb/config.h b/keyboards/monstargear/xo87/rgb/config.h
index dabca04514..4117f243ac 100644
--- a/keyboards/monstargear/xo87/rgb/config.h
+++ b/keyboards/monstargear/xo87/rgb/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D47 // MG for Monstargear
-#define PRODUCT_ID 0x584F // XO for XO87
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Monstargear
-#define PRODUCT XO87
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -32,7 +25,6 @@
#define BACKLIGHT_PIN F5
#define MATRIX_ROW_PINS { E6,E7, E3, B0, B1 ,A2}
#define MATRIX_COL_PINS { C5,C3,C1,E1,D6,D2,B7,B3,F6,F7,F3,A5,A1,E2,C7,A6 }
-#define UNUSED_PINS
#define DIODE_DIRECTION ROW2COL
#define RGB_DI_PIN D7
#define DRIVER_LED_TOTAL 110
diff --git a/keyboards/monstargear/xo87/rgb/info.json b/keyboards/monstargear/xo87/rgb/info.json
index 000eb9b65e..9605d5888c 100644
--- a/keyboards/monstargear/xo87/rgb/info.json
+++ b/keyboards/monstargear/xo87/rgb/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "XO87 RGB",
+ "manufacturer": "Monstargear",
"url": "https://www.monstargears.com/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D47",
+ "pid": "0x584F",
+ "device_version": "0.0.1"
+ },
"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":"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":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":"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/monstargear/xo87/solderable/config.h b/keyboards/monstargear/xo87/solderable/config.h
index d5d4540514..8b3af96024 100644
--- a/keyboards/monstargear/xo87/solderable/config.h
+++ b/keyboards/monstargear/xo87/solderable/config.h
@@ -20,13 +20,6 @@
#define brightnessMax 8
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D47 // MG for Monstargear
-#define PRODUCT_ID 0x5344 // SD for Soldered
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Monstargear
-#define PRODUCT XO87 Soldered
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@
#define KEYLED_COL_PINS { C4,C2,C0,E0,D4,E4,B6,B2,F4,A0,F2,A4,F1,A7,D3,A3 }
#define LED_DRIVER_LED_COUNT 93
-#define UNUSED_PINS
#define DIODE_DIRECTION ROW2COL
#define RGB_DI_PIN D7
#define DRIVER_LED_TOTAL 21
diff --git a/keyboards/monstargear/xo87/solderable/info.json b/keyboards/monstargear/xo87/solderable/info.json
index 52a7877903..d07bdfc6be 100644
--- a/keyboards/monstargear/xo87/solderable/info.json
+++ b/keyboards/monstargear/xo87/solderable/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "XO87 Solderable",
+ "keyboard_name": "XO87 Soldered",
+ "manufacturer": "Monstargear",
"url": "https://www.monstargears.com/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D47",
+ "pid": "0x5344",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/montsinger/rebound/rev1/config.h b/keyboards/montsinger/rebound/rev1/config.h
index afd174266e..446d6db71d 100644
--- a/keyboards/montsinger/rebound/rev1/config.h
+++ b/keyboards/montsinger/rebound/rev1/config.h
@@ -16,14 +16,6 @@ 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 0x552F
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Montsinger
-#define PRODUCT Rebound
-
/* key matrix size */
#define MATRIX_ROWS 4
@@ -43,7 +35,6 @@ diode)
#define MATRIX_ROW_PINS { D1, B5, B2, B6 }
#define MATRIX_COL_PINS { D0, D4, C6, D7, E6, B4, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS { D2, D3 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/montsinger/rebound/rev1/info.json b/keyboards/montsinger/rebound/rev1/info.json
index 4bfd500950..f4b4362470 100644
--- a/keyboards/montsinger/rebound/rev1/info.json
+++ b/keyboards/montsinger/rebound/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard": "montsinger/rebound/rev1",
+ "keyboard": "Rebound Rev1",
+ "manufacturer": "Montsinger",
"url": "https://montsinger.net",
"maintainer": "rossman360",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x552F",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
diff --git a/keyboards/montsinger/rebound/rev2/config.h b/keyboards/montsinger/rebound/rev2/config.h
index 9f4956081b..0cdb9f8d61 100644
--- a/keyboards/montsinger/rebound/rev2/config.h
+++ b/keyboards/montsinger/rebound/rev2/config.h
@@ -16,14 +16,6 @@ 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 0x552F
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Montsinger
-#define PRODUCT Rebound
-
/* key matrix size */
#define MATRIX_ROWS 5
@@ -43,7 +35,6 @@ diode)
#define MATRIX_ROW_PINS { D1, B5, B2, B6, B0 }
#define MATRIX_COL_PINS { D0, D4, C6, D7, E6, B4, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS { }
#define ENCODERS_PAD_A { D2 }
#define ENCODERS_PAD_B { D3 }
diff --git a/keyboards/montsinger/rebound/rev2/info.json b/keyboards/montsinger/rebound/rev2/info.json
index b732b9487b..99e07ef405 100644
--- a/keyboards/montsinger/rebound/rev2/info.json
+++ b/keyboards/montsinger/rebound/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard":"montsinger/rebound/rev2",
+ "keyboard":"Rebound Rev2",
+ "manufacturer": "Montsinger",
"url": "https://montsinger.net",
"maintainer": "rossman360",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x552F",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/montsinger/rebound/rev3/config.h b/keyboards/montsinger/rebound/rev3/config.h
index c93ce59b99..25dee80ff3 100644
--- a/keyboards/montsinger/rebound/rev3/config.h
+++ b/keyboards/montsinger/rebound/rev3/config.h
@@ -16,14 +16,6 @@ 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 0x552F
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Montsinger
-#define PRODUCT Rebound
-
/* key matrix size */
#define MATRIX_ROWS 5
@@ -43,7 +35,6 @@ diode)
#define MATRIX_ROW_PINS { F4, F5, D1, D0, B0 }
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6 }
-#define UNUSED_PINS { }
#define ENCODERS_PAD_A { D3 }
#define ENCODERS_PAD_B { D2 }
diff --git a/keyboards/montsinger/rebound/rev3/info.json b/keyboards/montsinger/rebound/rev3/info.json
index aa435c7815..e2ba432c57 100644
--- a/keyboards/montsinger/rebound/rev3/info.json
+++ b/keyboards/montsinger/rebound/rev3/info.json
@@ -1,7 +1,13 @@
{
- "keyboard":"montsinger/rebound/rev3",
+ "keyboard":"Rebound Rev3",
+ "manufacturer": "Montsinger",
"url": "https://montsinger.net",
"maintainer": "rossman360",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x552F",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/montsinger/rebound/rev3/keymaps/rossman360/keymap.c b/keyboards/montsinger/rebound/rev3/keymaps/rossman360/keymap.c
index 207f907f6d..6d9c31ba80 100644
--- a/keyboards/montsinger/rebound/rev3/keymaps/rossman360/keymap.c
+++ b/keyboards/montsinger/rebound/rev3/keymaps/rossman360/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_DEL] = LAYOUT_all(
- RESET, _______, _______, _______, _______, _______, _______, UNDO , _______, _______, _______, CTAB ,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, UNDO , _______, _______, _______, CTAB ,
REMCAPS, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_UP ,KC_RIGHT, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, _______,
_______, _______, _______, KC_DEL , KC_BSPC, BWORD , _______, KC_NO , KC_NO , _______, _______, _______, _______
diff --git a/keyboards/montsinger/rebound/rev4/config.h b/keyboards/montsinger/rebound/rev4/config.h
index 60a255f49d..6b03a19288 100644
--- a/keyboards/montsinger/rebound/rev4/config.h
+++ b/keyboards/montsinger/rebound/rev4/config.h
@@ -16,14 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-
-#define VENDOR_ID 0x524D
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Montsinger
-#define PRODUCT Rebound
-
/* key matrix size */
#define MATRIX_ROWS 8
@@ -43,7 +35,6 @@ diode)
#define MATRIX_ROW_PINS { D1, D0, D4, C6, F7, F6, F5, F4 }
#define MATRIX_COL_PINS { D7, E6, B4, B5, B2, B3, B1 }
-#define UNUSED_PINS { B6 }
#define ENCODERS_PAD_A { D2 }
#define ENCODERS_PAD_B { D3 }
diff --git a/keyboards/montsinger/rebound/rev4/info.json b/keyboards/montsinger/rebound/rev4/info.json
index d76547a216..bfe2b6a372 100644
--- a/keyboards/montsinger/rebound/rev4/info.json
+++ b/keyboards/montsinger/rebound/rev4/info.json
@@ -1,7 +1,13 @@
{
- "keyboard":"montsinger/rebound/rev4",
+ "keyboard":"Rebound Rev4",
+ "manufacturer": "Montsinger",
"url": "https://montsinger.net",
"maintainer": "rossman360",
+ "usb": {
+ "vid": "0x524D",
+ "pid": "0x0001",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/montsinger/rebound/rev4/keymaps/rossman360/keymap.c b/keyboards/montsinger/rebound/rev4/keymaps/rossman360/keymap.c
index d49465eea9..00ae6c6981 100644
--- a/keyboards/montsinger/rebound/rev4/keymaps/rossman360/keymap.c
+++ b/keyboards/montsinger/rebound/rev4/keymaps/rossman360/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_DEL] = LAYOUT_all(
- RESET, _______, _______, _______, _______, _______, _______, UNDO , _______, _______, _______, CTAB ,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, UNDO , _______, _______, _______, CTAB ,
REMCAPS, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_UP ,KC_RIGHT, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, _______,
_______, _______, _______, BLINE , KC_BSPC, BWORD , _______, KC_NO , KC_NO , _______, _______, _______, _______
diff --git a/keyboards/montsinger/rewind/config.h b/keyboards/montsinger/rewind/config.h
index 09ddf2c209..bc83168ae6 100644
--- a/keyboards/montsinger/rewind/config.h
+++ b/keyboards/montsinger/rewind/config.h
@@ -16,14 +16,6 @@ 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 0x552F
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Montsinger
-#define PRODUCT Rewind
-
/* key matrix size */
#define MATRIX_ROWS 5
@@ -43,7 +35,6 @@ diode)
#define MATRIX_ROW_PINS { B5, B4, D2, D3, B2 }
#define MATRIX_COL_PINS { F6, F7, B1, B3, E6, D7, C6, D4, D0, D1 }
-#define UNUSED_PINS { F4, F5, B6 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/montsinger/rewind/info.json b/keyboards/montsinger/rewind/info.json
index ecd7c21117..5e0bf1e3e1 100644
--- a/keyboards/montsinger/rewind/info.json
+++ b/keyboards/montsinger/rewind/info.json
@@ -1,7 +1,13 @@
{
- "keyboard":"montsinger/rewind",
+ "keyboard":"Rewind",
+ "manufacturer": "Montsinger",
"url": "https://montsinger.net",
"maintainer": "rossman360",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x552F",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_ortho_5x10": {
"layout": [
diff --git a/keyboards/montsinger/rewind/keymaps/rossman360/keymap.c b/keyboards/montsinger/rewind/keymaps/rossman360/keymap.c
index 152a305237..ef27d37596 100644
--- a/keyboards/montsinger/rewind/keymaps/rossman360/keymap.c
+++ b/keyboards/montsinger/rewind/keymaps/rossman360/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN1] = LAYOUT_ortho_5x10(
- XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
JUMPBACK,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_HOME, KC_LEFT, KC_UP, KC_RIGHT,KC_END,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, PMERGE, KC_DOWN, XXXXXXX, XXXXXXX,
diff --git a/keyboards/moon/config.h b/keyboards/moon/config.h
index 5f23cfd755..361fc5ba9d 100644
--- a/keyboards/moon/config.h
+++ b/keyboards/moon/config.h
@@ -19,13 +19,6 @@ 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 0xFCB8
-#define DEVICE_VER 0x0001
-#define MANUFACTURER EVE
-#define PRODUCT Moon
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 11
diff --git a/keyboards/moon/info.json b/keyboards/moon/info.json
index b25f34eb0c..782f5b24e3 100644
--- a/keyboards/moon/info.json
+++ b/keyboards/moon/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Moon",
+ "manufacturer": "EVE",
"url": "https://geekhack.org/index.php?topic=90379.0",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xFCB8",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/moonlander/config.h b/keyboards/moonlander/config.h
index 9930e64063..b0ff86ee81 100644
--- a/keyboards/moonlander/config.h
+++ b/keyboards/moonlander/config.h
@@ -20,17 +20,8 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-// clang-format off
-#define VENDOR_ID 0x3297
-#define PRODUCT_ID 0x1969
-#define MANUFACTURER ZSA Technology Labs
-#define PRODUCT Moonlander Mark I
-#define DEVICE_VER 0x0001
#define WEBUSB_LANDING_PAGE_URL u8"configure.ergodox-ez.com"
-// clang-format on
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 7
diff --git a/keyboards/moonlander/info.json b/keyboards/moonlander/info.json
index 60b560eeee..6322dccd5b 100644
--- a/keyboards/moonlander/info.json
+++ b/keyboards/moonlander/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Moonlander Mark I",
+ "manufacturer": "ZSA Technology Labs",
"url": "zsa.io/moonlander",
"maintainer": "ZSA via Drashna",
+ "usb": {
+ "vid": "0x3297",
+ "pid": "0x1969",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_moonlander": {
"layout": [
diff --git a/keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h b/keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h
index 6ea1541da2..44679baf74 100644
--- a/keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/moonlander/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/moonlander/matrix.c b/keyboards/moonlander/matrix.c
index b6bac9515e..36017fcd12 100644
--- a/keyboards/moonlander/matrix.c
+++ b/keyboards/moonlander/matrix.c
@@ -227,3 +227,7 @@ void matrix_power_up(void) {
}
}
+
+bool is_transport_connected(void) {
+ return mcp23018_initd;
+} \ No newline at end of file
diff --git a/keyboards/moonlander/moonlander.c b/keyboards/moonlander/moonlander.c
index e2e163f116..927c88925e 100644
--- a/keyboards/moonlander/moonlander.c
+++ b/keyboards/moonlander/moonlander.c
@@ -320,7 +320,7 @@ bool music_mask_kb(uint16_t keycode) {
case QK_LAYER_TAP_TOGGLE ... QK_LAYER_MOD_MAX:
case QK_MOD_TAP ... QK_MOD_TAP_MAX:
case AU_ON ... MUV_DE:
- case RESET:
+ case QK_BOOT:
case EEP_RST:
return false;
default:
diff --git a/keyboards/moonlander/moonlander.h b/keyboards/moonlander/moonlander.h
index 8598260211..90ce84b3e3 100644
--- a/keyboards/moonlander/moonlander.h
+++ b/keyboards/moonlander/moonlander.h
@@ -82,3 +82,5 @@ typedef union {
} keyboard_config_t;
extern keyboard_config_t keyboard_config;
+
+bool is_transport_connected(void); \ No newline at end of file
diff --git a/keyboards/moonlander/readme.md b/keyboards/moonlander/readme.md
index bf80f05569..733780abde 100644
--- a/keyboards/moonlander/readme.md
+++ b/keyboards/moonlander/readme.md
@@ -41,4 +41,18 @@ If you're using the Smart LED (layer indication) feature from the Oryx Configura
This changes the `RGB_TOG` keycode so that it will toggle the lights on and off, in a way that will allow the Smart LEDs to continue to work, even with the rest of the LEDs turned off.
-Additionally, a new keycode has been added to toggle the Smart LEDs. Use `TOGGLE_LAYER_COLOR`, if you aren't already.
+Additionally, a new keycode has been added to toggle the Smart LEDs. Use `TOGGLE_LAYER_COLOR`, if you aren't already.
+
+### Detecting split / Gaming mode
+
+To make it extra gaming friendly, you can configure what happens when you disconnect the right half. This is especially useful when using gaming unfriendly layers or layouts (e.g. home row mods, dvorak, colemak).
+
+Example for enabling a specific layer while right side is disconnected:
+
+```
+void housekeeping_task_user(void) {
+ if (!is_transport_connected()) {
+ // set layer
+ }
+}
+``` \ No newline at end of file
diff --git a/keyboards/morizon/config.h b/keyboards/morizon/config.h
index 4b419283cb..732864d2ef 100644
--- a/keyboards/morizon/config.h
+++ b/keyboards/morizon/config.h
@@ -19,20 +19,12 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Steven Karrmann
-#define PRODUCT Morizon
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
#define MATRIX_ROW_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2, B6 }
-#define UNUSED_PINS { F4 }
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/morizon/info.json b/keyboards/morizon/info.json
index 5e22001c79..6c0c20837b 100644
--- a/keyboards/morizon/info.json
+++ b/keyboards/morizon/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Morizon",
+ "manufacturer": "Steven Karrmann",
"url": "https://github.com/skarrmann/morizon",
"maintainer": "Steven Karrmann",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/morizon/readme.md b/keyboards/morizon/readme.md
index 5c95e9788c..9c509d41ba 100644
--- a/keyboards/morizon/readme.md
+++ b/keyboards/morizon/readme.md
@@ -24,4 +24,4 @@ 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 top center of the PCB.
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
diff --git a/keyboards/mountainblocks/mb17/config.h b/keyboards/mountainblocks/mb17/config.h
index 9667d9e551..bd397ee541 100644
--- a/keyboards/mountainblocks/mb17/config.h
+++ b/keyboards/mountainblocks/mb17/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D42
-#define PRODUCT_ID 0x0017
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mountainblocks
-#define PRODUCT MB17
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, B1, B3, B2, B6 }
#define MATRIX_COL_PINS { F7, E6, D7, C6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mountainblocks/mb17/info.json b/keyboards/mountainblocks/mb17/info.json
index b3bf74cdb2..46f1133aad 100644
--- a/keyboards/mountainblocks/mb17/info.json
+++ b/keyboards/mountainblocks/mb17/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MB17",
+ "manufacturer": "Mountainblocks",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D42",
+ "pid": "0x0017",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_5x4": {
"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":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":1, "h":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":0, "y":4, "w":2}, {"x":2, "y":4}, {"x":3, "y":3, "h":2}]
diff --git a/keyboards/ms_sculpt/config.h b/keyboards/ms_sculpt/config.h
new file mode 100644
index 0000000000..710fc756af
--- /dev/null
+++ b/keyboards/ms_sculpt/config.h
@@ -0,0 +1,16 @@
+// Copyright 2022 Jean Bernard (@jn-bernard)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+#define BOOTMAGIC_LITE_ROW 4
+#define BOOTMAGIC_LITE_COLUMN 13
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 18
diff --git a/keyboards/ms_sculpt/info.json b/keyboards/ms_sculpt/info.json
new file mode 100644
index 0000000000..4eaf4b0a75
--- /dev/null
+++ b/keyboards/ms_sculpt/info.json
@@ -0,0 +1,129 @@
+{
+ "manufacturer": "Jean Bernard",
+ "keyboard_name": "ms_sculpt",
+ "maintainer": "jn-bernard",
+ "bootloader": "stm32-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": false,
+ "mousekey": false,
+ "nkro": false
+ },
+ "matrix_pins": {
+ "rows": ["B10", "B1", "B0", "A7", "A6", "A5", "A4", "A3"],
+ "cols": ["A2","B8","A0","C15","C14","A14","A13","B7","B6","B5","B4","B3","A15","A10","A8","B15","B14","B12"],
+ "ghost": true,
+ "io_delay": 5
+ },
+ "processor": "STM32F401",
+ "url": "",
+ "usb": {
+ "polling_interval": 1,
+ "device_version": "1.0.0",
+ "pid": "0x0000",
+ "vid": "0xFEED"
+ },
+ "layouts": {
+ "LAYOUT_iso": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0, "w":1, "h":0.8},
+ {"label":"F1", "x":1, "y":0, "w":1, "h":0.8},
+ {"label":"F2", "x":2, "y":0, "w":1, "h":0.8},
+ {"label":"F3", "x":3, "y":0, "w":1, "h":0.8},
+ {"label":"F4", "x":4, "y":0, "w":1, "h":0.8},
+ {"label":"F5", "x":5, "y":0, "w":1, "h":0.8},
+ {"label":"F6", "x":6, "y":0, "w":1, "h":0.8},
+ {"label":"F7", "x":8, "y":0, "w":0.975, "h":0.8},
+ {"label":"F8", "x":8.975, "y":0, "w":0.975, "h":0.8},
+ {"label":"F9", "x":9.95, "y":0, "w":0.975, "h":0.8},
+ {"label":"F10", "x":10.925, "y":0, "w":0.975, "h":0.8},
+ {"label":"F11", "x":11.9, "y":0, "w":0.975, "h":0.8},
+ {"label":"F12", "x":12.875, "y":0, "w":0.975, "h":0.8},
+ {"label":"Print Screen", "x":13.85, "y":0, "w":0.975, "h":0.8},
+ {"label":"Scroll Lock", "x":14.825, "y":0, "w":0.975, "h":0.8},
+ {"label":"Pause", "x":15.8, "y":0, "w":0.975, "h":0.8},
+ {"label":"Calculator", "x":16.775, "y":0, "w":0.975, "h":0.8},
+
+ {"label":"`~", "x":0, "y":0.8},
+ {"label":"1!", "x":1, "y":0.8},
+ {"label":"2@", "x":2, "y":0.8},
+ {"label":"3#", "x":3, "y":0.8},
+ {"label":"4$", "x":4, "y":0.8},
+ {"label":"5%", "x":5, "y":0.8},
+ {"label":"6^", "x":6, "y":0.8},
+ {"label":"7&", "x":8, "y":0.8, "w":1.5},
+ {"label":"8*", "x":9.5, "y":0.8},
+ {"label":"9(", "x":10.5, "y":0.8},
+ {"label":"0)", "x":11.5, "y":0.8},
+ {"label":"-_", "x":12.5, "y":0.8},
+ {"label":"=+", "x":13.5, "y":0.8},
+ {"label":"Backspace", "x":14.5, "y":0.8, "w":2.25},
+ {"label":"Delete", "x":16.75, "y":0.8, "h":2},
+ {"label":"Home", "x":17.75, "y":0.8},
+
+ {"label":"Tab", "x":0, "y":1.8, "w":1.25},
+ {"label":"Q", "x":1.25, "y":1.8},
+ {"label":"W", "x":2.25, "y":1.8},
+ {"label":"E", "x":3.25, "y":1.8},
+ {"label":"R", "x":4.25, "y":1.8},
+ {"label":"T", "x":5.25, "y":1.8, "w":1.75},
+ {"label":"Y", "x":8, "y":1.8, "w":1.25},
+ {"label":"U", "x":9.25, "y":1.8},
+ {"label":"I", "x":10.25, "y":1.8},
+ {"label":"O", "x":11.25, "y":1.8},
+ {"label":"P", "x":12.25, "y":1.8},
+ {"label":"[{", "x":13.25, "y":1.8},
+ {"label":"]}", "x":14.25, "y":1.8},
+ {"label":"End", "x":17.75, "y":1.8},
+
+ {"label":"Shift", "x":0, "y":2.8, "w":1.5},
+ {"label":"A", "x":1.5, "y":2.8},
+ {"label":"S", "x":2.5, "y":2.8},
+ {"label":"D", "x":3.5, "y":2.8},
+ {"label":"F", "x":4.5, "y":2.8},
+ {"label":"G", "x":5.5, "y":2.8, "w":1.5},
+ {"label":"H", "x":8, "y":2.8, "w":1.5},
+ {"label":"J", "x":9.5, "y":2.8},
+ {"label":"K", "x":10.5, "y":2.8},
+ {"label":"L", "x":11.5, "y":2.8},
+ {"label":";:", "x":12.5, "y":2.8},
+ {"label":"'@", "x":13.5, "y":2.8},
+ {"label":"#~", "x":14.5, "y":2.8},
+ {"label":"Enter", "x":15.5, "y":1.8, "w":1.25, "h":2},
+ {"label":"Insert", "x":16.75, "y":2.8},
+ {"label":"Page Up", "x":17.75, "y":2.8},
+
+ {"label":"Shift", "x":0, "y":3.8},
+ {"label":"\\|", "x":1, "y":3.8},
+ {"label":"Z", "x":2, "y":3.8},
+ {"label":"X", "x":3, "y":3.8},
+ {"label":"C", "x":4, "y":3.8},
+ {"label":"V", "x":5, "y":3.8},
+ {"label":"B", "x":6, "y":3.8},
+ {"label":"N", "x":8, "y":3.8, "w":2},
+ {"label":"M", "x":10, "y":3.8},
+ {"label":",<", "x":11, "y":3.8},
+ {"label":".>", "x":12, "y":3.8},
+ {"label":"/?", "x":13, "y":3.8},
+ {"label":"Shift", "x":14, "y":3.8, "w":2.75},
+ {"label":"\u2191", "x":16.75, "y":3.8},
+ {"label":"Page Down", "x":17.75, "y":3.8},
+
+ {"label":"Ctrl", "x":0, "y":4.8, "w":1.5},
+ {"label":"GUI", "x":1.5, "y":4.8, "w":1.5},
+ {"label":"Alt", "x":3, "y":4.8, "w":1.5},
+ {"label":"Space", "x":4.5, "y":4.8, "w":3},
+ {"label":"Space", "x":7.5, "y":4.8, "w":3},
+ {"label":"AltGr", "x":10.5, "y":4.8, "w":1.5},
+ {"label":"App", "x":12, "y":4.8, "w":1.5},
+ {"label":"Ctrl", "x":13.5, "y":4.8, "w":2.25},
+ {"label":"\u2190", "x":15.75, "y":4.8},
+ {"label":"\u2192", "x":16.75, "y":4.8},
+ {"label":"\u2193", "x":17.75, "y":4.8}
+ ]
+ }
+ }
+}
diff --git a/keyboards/ms_sculpt/keymaps/default/keymap.c b/keyboards/ms_sculpt/keymaps/default/keymap.c
new file mode 100644
index 0000000000..b82c37a773
--- /dev/null
+++ b/keyboards/ms_sculpt/keymaps/default/keymap.c
@@ -0,0 +1,21 @@
+// Copyright 2022 Jean Bernard (@jn-bernard)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_layers {
+ _BASE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* Base */
+ [_BASE] = LAYOUT_iso( \
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCREEN, KC_SLCK, KC_PAUSE, KC_CALC, \
+ KC_GRV, KC_1, KC_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_END, \
+ 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_NUHS, KC_ENT, KC_INS, 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_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
+ ),
+};
diff --git a/keyboards/ms_sculpt/ms_sculpt.h b/keyboards/ms_sculpt/ms_sculpt.h
new file mode 100644
index 0000000000..056f7d5b5d
--- /dev/null
+++ b/keyboards/ms_sculpt/ms_sculpt.h
@@ -0,0 +1,25 @@
+// Copyright 2022 Jean Bernard (@jn-bernard)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_iso( \
+ k4D, k7C, k7B, k1B, k4B, k1A, k1F, k79, k77, k75, k78, k73, k13, k71, k31, k01, k23, \
+ k7D, k0D, k0C, k2D, k1D, k7A, k7F, k09, k07, k05, k04, k15, k74, k08, k03, k21, \
+ k0A, k0B, k1C, k2B, k2A, k2F, k19, k29, k27, k25, k24, k14, k17, k51, \
+ k2C, k3D, k4C, k3B, k3A, k4A, k49, k39, k37, k35, k34, k45, k65, k33, k18, k11, \
+ k5E, k6C, k5D, k5C, k5B, k5A, k6A, k69, k59, k57, k55, k44, k52, k63, k53, \
+ k6H, k3F, k4G, k6B, k68, k46, k43, k60, k48, k64, k61 \
+) \
+{ \
+ {KC_NO, k01, KC_NO, k03, k04, k05, KC_NO, k07, k08, k09, k0A, k0B, k0C, k0D, KC_NO, KC_NO, KC_NO, KC_NO}, \
+ {KC_NO, k11, KC_NO, k13, k14, k15, KC_NO, k17, k18, k19, k1A, k1B, k1C, k1D, KC_NO, k1F, KC_NO, KC_NO}, \
+ {KC_NO, k21, KC_NO, k23, k24, k25, KC_NO, k27, KC_NO, k29, k2A, k2B, k2C, k2D, KC_NO, k2F, KC_NO, KC_NO}, \
+ {KC_NO, k31, KC_NO, k33, k34, k35, KC_NO, k37, KC_NO, k39, k3A, k3B, k6C, k3D, KC_NO, k3F, KC_NO, KC_NO}, \
+ {KC_NO, KC_NO, KC_NO, k43, k44, k45, k46, KC_NO, k48, k49, k4A, k4B, k4C, k4D, KC_NO, KC_NO, k4G, KC_NO}, \
+ {KC_NO, k51, k52, k53, k65, k55, KC_NO, k57, KC_NO, k59, k5A, k5B, k5C, k5D, k5E, KC_NO, KC_NO, KC_NO}, \
+ {k60, k61, KC_NO, k63, k64, KC_NO, KC_NO, KC_NO, k68, k69, k6A, k6B, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k6H}, \
+ {KC_NO, k71, KC_NO, k73, k74, k75, KC_NO, k77, k78, k79, k7A, k7B, k7C, k7D, KC_NO, k7F, KC_NO, KC_NO} \
+}
diff --git a/keyboards/ms_sculpt/readme.md b/keyboards/ms_sculpt/readme.md
new file mode 100644
index 0000000000..45db8173b2
--- /dev/null
+++ b/keyboards/ms_sculpt/readme.md
@@ -0,0 +1,27 @@
+# ms_sculpt
+
+![ms_sculpt_with_cold_dry_joints](https://user-images.githubusercontent.com/105235786/168012266-4e235bf5-8d34-4731-ab17-2308a9d9a29e.jpg)
+
+MS Sculpt Keyboard ISO-layout wired to STM32F401 / blackpill
+
+* Keyboard Maintainer: [Jean Bernard](https://github.com/jn-bernard)
+* Hardware Supported: MS Sculpt Keyboard ISO-layout, STM32F401
+* Hardware Availability: Ebay
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ms_sculpt:default
+
+Flashing example for this keyboard:
+
+ make ms_sculpt:default:flash
+
+## 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 `QK_BOOT` 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/ms_sculpt/rules.mk b/keyboards/ms_sculpt/rules.mk
new file mode 100644
index 0000000000..d64abe822d
--- /dev/null
+++ b/keyboards/ms_sculpt/rules.mk
@@ -0,0 +1,3 @@
+# This file intentionally left blank
+DEBOUNCE_TYPE = sym_eager_pk
+DEBOUNCE = 3
diff --git a/keyboards/mschwingen/modelm/config.h b/keyboards/mschwingen/modelm/config.h
index 57ac1c089b..439faf5055 100644
--- a/keyboards/mschwingen/modelm/config.h
+++ b/keyboards/mschwingen/modelm/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x558E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER mschwingen
-#define PRODUCT IBM Model M 101/102
-
/* key matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 8
diff --git a/keyboards/mschwingen/modelm/info.json b/keyboards/mschwingen/modelm/info.json
index 3a34f92180..37bdb91160 100644
--- a/keyboards/mschwingen/modelm/info.json
+++ b/keyboards/mschwingen/modelm/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "atmega32U4 board for IBM Model M",
+ "keyboard_name": "IBM Model M 101/102",
+ "manufacturer": "mschwingen",
"url": "",
"maintainer": "mschwingen",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x558E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mschwingen/modelm/modelm.c b/keyboards/mschwingen/modelm/modelm.c
index 7dcd4ac024..0ff58f4be3 100644
--- a/keyboards/mschwingen/modelm/modelm.c
+++ b/keyboards/mschwingen/modelm/modelm.c
@@ -163,8 +163,8 @@ void update_layer_leds(void) {
static uint8_t old_layer = 255;
static uint8_t old_default_layer = 255;
- layer = biton32(layer_state);
- default_layer = biton32(default_layer_state);
+ layer = get_highest_layer(layer_state);
+ default_layer = get_highest_layer(default_layer_state);
if (isRecording && timer_elapsed(blink_cycle_timer) > 150) {
blink_state = !blink_state;
diff --git a/keyboards/mss_studio/m63_rgb/config.h b/keyboards/mss_studio/m63_rgb/config.h
index ad5fbfa1c3..a7220ab1c6 100644
--- a/keyboards/mss_studio/m63_rgb/config.h
+++ b/keyboards/mss_studio/m63_rgb/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4B
-#define PRODUCT_ID 0x6063
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mss Studio
-#define PRODUCT M63 RGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -43,9 +36,6 @@
/* Forcing to use NKRO instead 6KRO */
#define FORCE_NKRO
-/* Change larger keys per scan for elite gaming */
-#define QMK_KEYS_PER_SCAN 12
-
#ifdef RGB_MATRIX_ENABLE
#define DRIVER_LED_TOTAL 75
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
diff --git a/keyboards/mss_studio/m63_rgb/info.json b/keyboards/mss_studio/m63_rgb/info.json
index 651e58a100..577903c264 100644
--- a/keyboards/mss_studio/m63_rgb/info.json
+++ b/keyboards/mss_studio/m63_rgb/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "M63 RGB",
+ "manufacturer": "Mss Studio",
"url": "",
"maintainer": "HorrorTroll",
+ "usb": {
+ "vid": "0x4D4B",
+ "pid": "0x6063",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_arrow": {
"layout": [
diff --git a/keyboards/mss_studio/m63_rgb/readme.md b/keyboards/mss_studio/m63_rgb/readme.md
index 942b7a60a6..33e4f58221 100644
--- a/keyboards/mss_studio/m63_rgb/readme.md
+++ b/keyboards/mss_studio/m63_rgb/readme.md
@@ -21,4 +21,4 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (Esc 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/mss_studio/m64_rgb/config.h b/keyboards/mss_studio/m64_rgb/config.h
index 0c7f8d17e1..c9a1e3f3db 100644
--- a/keyboards/mss_studio/m64_rgb/config.h
+++ b/keyboards/mss_studio/m64_rgb/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4B
-#define PRODUCT_ID 0x6064
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mss Studio
-#define PRODUCT M64 RGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -43,9 +36,6 @@
/* Forcing to use NKRO instead 6KRO */
#define FORCE_NKRO
-/* Change larger keys per scan for elite gaming */
-#define QMK_KEYS_PER_SCAN 12
-
#ifdef RGB_MATRIX_ENABLE
#define DRIVER_LED_TOTAL 76
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
diff --git a/keyboards/mss_studio/m64_rgb/info.json b/keyboards/mss_studio/m64_rgb/info.json
index 264e894377..971a213cb7 100644
--- a/keyboards/mss_studio/m64_rgb/info.json
+++ b/keyboards/mss_studio/m64_rgb/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "M64 RGB",
+ "manufacturer": "Mss Studio",
"url": "",
"maintainer": "HorrorTroll",
+ "usb": {
+ "vid": "0x4D4B",
+ "pid": "0x6064",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_64_ansi": {
"layout": [
diff --git a/keyboards/mss_studio/m64_rgb/readme.md b/keyboards/mss_studio/m64_rgb/readme.md
index 1925622b9c..360720b584 100644
--- a/keyboards/mss_studio/m64_rgb/readme.md
+++ b/keyboards/mss_studio/m64_rgb/readme.md
@@ -21,4 +21,4 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (Esc 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/mt/blocked65/config.h b/keyboards/mt/blocked65/config.h
index 86e574feed..223b0fe0a1 100644
--- a/keyboards/mt/blocked65/config.h
+++ b/keyboards/mt/blocked65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5746 //WF
-#define PRODUCT_ID 0x0001 //Blocked65
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Dou
-#define PRODUCT Blocked65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/mt/blocked65/info.json b/keyboards/mt/blocked65/info.json
index aea7165abc..92f85b0798 100644
--- a/keyboards/mt/blocked65/info.json
+++ b/keyboards/mt/blocked65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Wheatfield blocked 65% keyboard",
+ "keyboard_name": "Blocked65",
+ "manufacturer": "Dou",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5746",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"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":"PrScr", "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":"Del", "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}, {"x":3.75, "y":4, "w":6.25}, {"label":"Fn", "x":10, "y":4, "w":1.25}, {"label":"Alt", "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/mt/mt40/config.h b/keyboards/mt/mt40/config.h
index 6626b24f3a..7045dac8aa 100644
--- a/keyboards/mt/mt40/config.h
+++ b/keyboards/mt/mt40/config.h
@@ -19,15 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x422D
-
-#define DEVICE_VER 0x0001
-
-#define MANUFACTURER ThomasDehaeze
-#define PRODUCT MT40
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 15
@@ -52,7 +43,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B6, B7 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
-/* #define UNUSED_PINS */
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mt/mt40/info.json b/keyboards/mt/mt40/info.json
index 48a2b9233b..3f3c1fc374 100644
--- a/keyboards/mt/mt40/info.json
+++ b/keyboards/mt/mt40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MT40",
+ "manufacturer": "ThomasDehaeze",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x422D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_planck_mit": {
"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, "w":2}, {"x":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}]
diff --git a/keyboards/mt/mt64rgb/config.h b/keyboards/mt/mt64rgb/config.h
index ea7659b471..8124a6a4a1 100644
--- a/keyboards/mt/mt64rgb/config.h
+++ b/keyboards/mt/mt64rgb/config.h
@@ -17,14 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D54 // "MT"
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MT
-#define PRODUCT MT64RGB
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -41,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { D7, D6, D5, D3, D2 }
#define MATRIX_COL_PINS {B5, B6, C6, C7, F7, F6,F5, F4, F1, F0, B1, B2, B3, B7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mt/mt64rgb/info.json b/keyboards/mt/mt64rgb/info.json
index 840863bc24..b641badfa4 100644
--- a/keyboards/mt/mt64rgb/info.json
+++ b/keyboards/mt/mt64rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "mt64rgb",
+ "keyboard_name": "MT64RGB",
+ "manufacturer": "MT",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D54",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_64_ansi": {
"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, "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}, {"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":"Shift", "x":12, "y":3}, {"x":13, "y":3}, {"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}, {"x":10, "y":4}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}]
diff --git a/keyboards/mt/mt84/config.h b/keyboards/mt/mt84/config.h
index bde8919ba7..ac510f1967 100644
--- a/keyboards/mt/mt84/config.h
+++ b/keyboards/mt/mt84/config.h
@@ -17,14 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D54 // "MT"
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MT
-#define PRODUCT MT84
-
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
@@ -41,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { D7, D6, D5, D3, D2, D4 }
#define MATRIX_COL_PINS {B5, B6, C6, C7, F7, F6,F5, F4, F1, F0, B1, B2, B3, B7, E6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mt/mt84/info.json b/keyboards/mt/mt84/info.json
index aaded30962..9be93e7e70 100644
--- a/keyboards/mt/mt84/info.json
+++ b/keyboards/mt/mt84/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "mt84",
+ "keyboard_name": "MT84",
+ "manufacturer": "MT",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D54",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_75_ansi": {
"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":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Delete", "x":15, "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", "x":13, "y":1, "w":2}, {"label":"Home", "x":15, "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":"Page Up", "x":15, "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":"Page Down", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"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":"\u2191", "x":14, "y":4}, {"label":"End", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5}, {"label":"Fn", "x":11, "y":5}, {"label":"Ctrl", "x":12, "y":5}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}]
diff --git a/keyboards/mt/mt980/config.h b/keyboards/mt/mt980/config.h
index ff6c5807df..c4b89fa7f7 100644
--- a/keyboards/mt/mt980/config.h
+++ b/keyboards/mt/mt980/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Wheat Field Peripherals
-#define PRODUCT MT980
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0, E6, F0, F1, F4, F5, F6, F7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/mt/mt980/info.json b/keyboards/mt/mt980/info.json
index be89ec8fc0..1e0ffaf11e 100644
--- a/keyboards/mt/mt980/info.json
+++ b/keyboards/mt/mt980/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "mt980",
+ "keyboard_name": "MT980",
+ "manufacturer": "Wheat Field Peripherals",
"url": "https://shop110310565.taobao.com",
"maintainer": "walkerstop",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mt/mt980/keymaps/walker/keymap.c b/keyboards/mt/mt980/keymaps/walker/keymap.c
index 83a3fb8167..f3f028aeba 100644
--- a/keyboards/mt/mt980/keymaps/walker/keymap.c
+++ b/keyboards/mt/mt980/keymaps/walker/keymap.c
@@ -36,11 +36,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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_PAUSE, KC_SLCK, KC_HOME, KC_END,
- 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, RGB_TOG, RESET, 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, RGB_TOG, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, 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_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD, RGB_VAD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS)
+ KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD, RGB_VAD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS)
};
@@ -107,7 +107,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed && is_oneshot_layer_active())
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
return true;
- case RESET:
+ case QK_BOOT:
/* Don't allow reset from oneshot layer state */
if (record->event.pressed && is_oneshot_layer_active()) {
clear_oneshot_layer_state(ONESHOT_OTHER_KEY_PRESSED);
diff --git a/keyboards/mt/split75/config.h b/keyboards/mt/split75/config.h
index 63c9492c31..dce3f6eea8 100644
--- a/keyboards/mt/split75/config.h
+++ b/keyboards/mt/split75/config.h
@@ -1,11 +1,5 @@
#pragma once
-#define VENDOR_ID 0x594D
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER YMDK
-#define PRODUCT Split75
-
/* matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 14
diff --git a/keyboards/mt/split75/info.json b/keyboards/mt/split75/info.json
index 1d0609a378..3a83e816e2 100644
--- a/keyboards/mt/split75/info.json
+++ b/keyboards/mt/split75/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "split75",
+ "keyboard_name": "Split75",
+ "manufacturer": "YMDK",
"url": "",
"maintainer": "Michael L. Walker",
+ "usb": {
+ "vid": "0x594D",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/mtbkeys/mtb60/hotswap/config.h b/keyboards/mtbkeys/mtb60/hotswap/config.h
index c235686cc8..eeb9bef6ff 100644
--- a/keyboards/mtbkeys/mtb60/hotswap/config.h
+++ b/keyboards/mtbkeys/mtb60/hotswap/config.h
@@ -19,13 +19,6 @@ 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 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MTBKeys
-#define PRODUCT honeyboard60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pinout */
#define MATRIX_ROW_PINS { D6, D7, B4, B5, D5 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, B7, B6, F7, C6, C7, F6, F4, F1, F0, F5, E6 }
-#define UNUSED_PINS
/* diode direction: COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/mtbkeys/mtb60/hotswap/info.json b/keyboards/mtbkeys/mtb60/hotswap/info.json
index 9e4ae0be29..a7e94e8bbc 100644
--- a/keyboards/mtbkeys/mtb60/hotswap/info.json
+++ b/keyboards/mtbkeys/mtb60/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MTB60",
+ "keyboard_name": "MTB60 Hotswap",
+ "manufacturer": "MTBKeys",
"url": "mtbkeys.com",
"maintainer": "kgieselman",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_60_ansi"
},
diff --git a/keyboards/mtbkeys/mtb60/solder/config.h b/keyboards/mtbkeys/mtb60/solder/config.h
index 7b0909492d..88d6b4097b 100644
--- a/keyboards/mtbkeys/mtb60/solder/config.h
+++ b/keyboards/mtbkeys/mtb60/solder/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER MTBKeys
-#define PRODUCT MTB60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pinout */
#define MATRIX_ROW_PINS { D0, D1, F4, F1, D2 }
#define MATRIX_COL_PINS { E6, F0, F5, F6, F7, D5, D3, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* diode direction: COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/mtbkeys/mtb60/solder/info.json b/keyboards/mtbkeys/mtb60/solder/info.json
index c2e49e8f77..ab60075874 100644
--- a/keyboards/mtbkeys/mtb60/solder/info.json
+++ b/keyboards/mtbkeys/mtb60/solder/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MTB60",
+ "keyboard_name": "MTB60 Solder",
+ "manufacturer": "MTBKeys",
"url": "mtbkeys.com",
"maintainer": "MTBKeys",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
diff --git a/keyboards/murcielago/info.json b/keyboards/murcielago/info.json
index 2c98d5a78c..3fd078898b 100644
--- a/keyboards/murcielago/info.json
+++ b/keyboards/murcielago/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Murciélago",
+ "manufacturer": "elagil",
"url": "",
"maintainer": "elagil",
+ "usb": {
+ "vid": "0x6166",
+ "pid": "0x0001",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/murcielago/rev1/config.h b/keyboards/murcielago/rev1/config.h
index 2851ae884b..f398596044 100644
--- a/keyboards/murcielago/rev1/config.h
+++ b/keyboards/murcielago/rev1/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6166 // af
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0002
-#define MANUFACTURER elagil
-#define PRODUCT Murciélago
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 6
@@ -53,7 +46,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENCODERS_PAD_A_RIGHT { F6 }
#define ENCODERS_PAD_B_RIGHT { F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mwstudio/alicekk/alicekk.c b/keyboards/mwstudio/alicekk/alicekk.c
new file mode 100644
index 0000000000..96c468066a
--- /dev/null
+++ b/keyboards/mwstudio/alicekk/alicekk.c
@@ -0,0 +1,30 @@
+/* Copyright 2022 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 "alicekk.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/mwstudio/alicekk/alicekk.h b/keyboards/mwstudio/alicekk/alicekk.h
new file mode 100644
index 0000000000..8bd3cfee87
--- /dev/null
+++ b/keyboards/mwstudio/alicekk/alicekk.h
@@ -0,0 +1,32 @@
+/* Copyright 2022 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, K212, K214, \
+ K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314, \
+ K401, K402, K404, K405, K408, 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, KC_NO, K214 }, \
+ { KC_NO, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314 }, \
+ { KC_NO, K401, K402, KC_NO, K404, K405, KC_NO, KC_NO, K408, KC_NO, K410, KC_NO, K412, K413, K414 } \
+}
diff --git a/keyboards/mwstudio/alicekk/chconf.h b/keyboards/mwstudio/alicekk/chconf.h
new file mode 100644
index 0000000000..7507db8aa1
--- /dev/null
+++ b/keyboards/mwstudio/alicekk/chconf.h
@@ -0,0 +1,23 @@
+/* Copyright 2022 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
+
+#define CH_CFG_ST_TIMEDELTA 0
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next <chconf.h>
diff --git a/keyboards/mwstudio/alicekk/config.h b/keyboards/mwstudio/alicekk/config.h
new file mode 100644
index 0000000000..7c0f4e087b
--- /dev/null
+++ b/keyboards/mwstudio/alicekk/config.h
@@ -0,0 +1,64 @@
+/* Copyright 2022 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { A3, A5, A6, A7, B0 }
+#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, A4, A2, A1, B6, B5, B4, B3, A15 }
+
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION ROW2COL
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#define FORCE_NKRO
+
+
+#define RGB_DI_PIN B1
+
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
+#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+#define RGBLED_NUM 87
+
+#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
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+
+#define ENCODERS_PAD_A { B11 }
+#define ENCODERS_PAD_B { B10 }
diff --git a/keyboards/mwstudio/alicekk/info.json b/keyboards/mwstudio/alicekk/info.json
new file mode 100644
index 0000000000..7a2f830273
--- /dev/null
+++ b/keyboards/mwstudio/alicekk/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "AliceKK",
+ "manufacturer": "MWStudio",
+ "usb": {
+ "vid": "0x7BA1",
+ "pid": "0x3201",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/mwstudio/alicekk/keymaps/default/keymap.c b/keyboards/mwstudio/alicekk/keymaps/default/keymap.c
new file mode 100644
index 0000000000..81ba1191db
--- /dev/null
+++ b/keyboards/mwstudio/alicekk/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
+/* Copyright 2022 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_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_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_SPACE, KC_SPACE, 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, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, RGB_MOD, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/mwstudio/alicekk/keymaps/via/keymap.c b/keyboards/mwstudio/alicekk/keymaps/via/keymap.c
new file mode 100644
index 0000000000..62068bd43e
--- /dev/null
+++ b/keyboards/mwstudio/alicekk/keymaps/via/keymap.c
@@ -0,0 +1,96 @@
+/* Copyright 2022 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_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_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_SPACE, KC_SPACE, 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, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, RGB_MOD, _______, _______, _______, _______
+ ),
+
+ [2] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
+
+
+#ifdef ENCODER_ENABLE
+#define ENCODERS 1
+static uint8_t encoder_state[ENCODERS] = {0};
+static keypos_t encoder_cw[ENCODERS] = {{6, 4}};
+static keypos_t encoder_ccw[ENCODERS] = {{7, 4}};
+
+
+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 false;
+};
+#endif
diff --git a/keyboards/mwstudio/alicekk/keymaps/via/rules.mk b/keyboards/mwstudio/alicekk/keymaps/via/rules.mk
new file mode 100644
index 0000000000..541a15608a
--- /dev/null
+++ b/keyboards/mwstudio/alicekk/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = no
diff --git a/keyboards/mwstudio/alicekk/mcuconf.h b/keyboards/mwstudio/alicekk/mcuconf.h
new file mode 100644
index 0000000000..460b5f5877
--- /dev/null
+++ b/keyboards/mwstudio/alicekk/mcuconf.h
@@ -0,0 +1,22 @@
+/* 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_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
diff --git a/keyboards/mwstudio/alicekk/readme.md b/keyboards/mwstudio/alicekk/readme.md
new file mode 100644
index 0000000000..9123a28c40
--- /dev/null
+++ b/keyboards/mwstudio/alicekk/readme.md
@@ -0,0 +1,22 @@
+# AliceKK
+
+![AliceKK](https://i.imgur.com/xfjynwgh.jpeg)
+
+Support STM32F103CBT6 keyboard.
+
+* Keyboard Maintainer: [TW59420](https://github.com/TW59420)
+* Hardware Supported: STM32F103CBT6
+
+Make example for this keyboard (after setting up your build environment):
+
+ make mwstudio/alicekk:default
+
+Flashing example for this keyboard:
+
+ make mwstudio/alicekk: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 `QK_BOOT` if it is available
diff --git a/keyboards/mwstudio/alicekk/rules.mk b/keyboards/mwstudio/alicekk/rules.mk
new file mode 100644
index 0000000000..3c4396fabf
--- /dev/null
+++ b/keyboards/mwstudio/alicekk/rules.mk
@@ -0,0 +1,21 @@
+# 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
+
+
diff --git a/keyboards/mwstudio/mw65_black/config.h b/keyboards/mwstudio/mw65_black/config.h
index 9cd1aade78..c7ca78706f 100644
--- a/keyboards/mwstudio/mw65_black/config.h
+++ b/keyboards/mwstudio/mw65_black/config.h
@@ -18,13 +18,6 @@
#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
diff --git a/keyboards/mwstudio/mw65_black/info.json b/keyboards/mwstudio/mw65_black/info.json
index 1245157792..ccf09114da 100644
--- a/keyboards/mwstudio/mw65_black/info.json
+++ b/keyboards/mwstudio/mw65_black/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MW65_BLACK",
+ "keyboard_name": "MW65 Black",
+ "manufacturer": "MWStudio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7BA1",
+ "pid": "0x6500",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mwstudio/mw65_black/readme.md b/keyboards/mwstudio/mw65_black/readme.md
index 4127469019..90698c9864 100644
--- a/keyboards/mwstudio/mw65_black/readme.md
+++ b/keyboards/mwstudio/mw65_black/readme.md
@@ -19,4 +19,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/mwstudio/mw65_rgb/config.h b/keyboards/mwstudio/mw65_rgb/config.h
index d484f7e351..2fd67e9e79 100644
--- a/keyboards/mwstudio/mw65_rgb/config.h
+++ b/keyboards/mwstudio/mw65_rgb/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7BA1
-#define PRODUCT_ID 0x6502
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MWStudio
-#define PRODUCT MW65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/mwstudio/mw65_rgb/info.json b/keyboards/mwstudio/mw65_rgb/info.json
index 870a848b85..9518a2b54c 100644
--- a/keyboards/mwstudio/mw65_rgb/info.json
+++ b/keyboards/mwstudio/mw65_rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "MW65_RGB",
+ "keyboard_name": "MW65 RGB",
+ "manufacturer": "MWStudio",
"url": "",
"maintainer": "TW59420",
+ "usb": {
+ "vid": "0x7BA1",
+ "pid": "0x6502",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/config.h b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/config.h
index 13cffea4da..0d2051ffd5 100644
--- a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/config.h
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/config.h
@@ -21,10 +21,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
-
#ifdef RGB_MATRIX_ENABLE
/* RGB Matrix config */
#undef ENABLE_RGB_MATRIX_BAND_SAT
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/keymap.c b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/keymap.c
index 2ca3152589..ef5ea90b61 100644
--- a/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/keymap.c
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/horrortroll/keymap.c
@@ -94,7 +94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
[_RN] = LAYOUT(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, 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, _______,
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/config.h b/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/config.h
index ba574e1e3c..fef62c6374 100644
--- a/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/config.h
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/config.h
@@ -20,7 +20,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
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/keymap.c b/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/keymap.c
index 70279c3347..216ae1e09f 100644
--- a/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/keymap.c
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/thearesia/keymap.c
@@ -102,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 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,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, 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
diff --git a/keyboards/mwstudio/mw65_rgb/keymaps/via/keymap.c b/keyboards/mwstudio/mw65_rgb/keymaps/via/keymap.c
index 78a17233e3..ddcd3f6642 100644
--- a/keyboards/mwstudio/mw65_rgb/keymaps/via/keymap.c
+++ b/keyboards/mwstudio/mw65_rgb/keymaps/via/keymap.c
@@ -95,9 +95,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
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));
+ tap_code(dynamic_keymap_get_keycode(get_highest_layer(layer_state), 4, 3));
} else {
- tap_code(dynamic_keymap_get_keycode(biton32(layer_state), 4, 4));
+ tap_code(dynamic_keymap_get_keycode(get_highest_layer(layer_state), 4, 4));
}
}
return true;
diff --git a/keyboards/mwstudio/mw65_rgb/readme.md b/keyboards/mwstudio/mw65_rgb/readme.md
index e15b5f9de9..4beb6bd3f5 100644
--- a/keyboards/mwstudio/mw65_rgb/readme.md
+++ b/keyboards/mwstudio/mw65_rgb/readme.md
@@ -19,4 +19,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/mwstudio/mw75/config.h b/keyboards/mwstudio/mw75/config.h
index 1cc00618e8..2c9e3839b8 100644
--- a/keyboards/mwstudio/mw75/config.h
+++ b/keyboards/mwstudio/mw75/config.h
@@ -18,14 +18,6 @@
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7BA1
-#define PRODUCT_ID 0x7501
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MWStudio
-#define PRODUCT MW75
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 15
diff --git a/keyboards/mwstudio/mw75/info.json b/keyboards/mwstudio/mw75/info.json
index 2eabde1495..e861c5ea23 100644
--- a/keyboards/mwstudio/mw75/info.json
+++ b/keyboards/mwstudio/mw75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MW75",
+ "manufacturer": "MWStudio",
"url": "",
"maintainer": "TW59420",
+ "usb": {
+ "vid": "0x7BA1",
+ "pid": "0x7501",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mwstudio/mw75/readme.md b/keyboards/mwstudio/mw75/readme.md
index ecabf568aa..8f946a119f 100644
--- a/keyboards/mwstudio/mw75/readme.md
+++ b/keyboards/mwstudio/mw75/readme.md
@@ -19,4 +19,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/mwstudio/mw75r2/config.h b/keyboards/mwstudio/mw75r2/config.h
index 4430d12a91..0886a9effb 100644
--- a/keyboards/mwstudio/mw75r2/config.h
+++ b/keyboards/mwstudio/mw75r2/config.h
@@ -18,14 +18,6 @@
#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
diff --git a/keyboards/mwstudio/mw75r2/info.json b/keyboards/mwstudio/mw75r2/info.json
index ade25ee7b9..fc6f8e4c80 100644
--- a/keyboards/mwstudio/mw75r2/info.json
+++ b/keyboards/mwstudio/mw75r2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MW75R2",
+ "manufacturer": "MWStudio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7BA1",
+ "pid": "0x7502",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/mwstudio/mw75r2/readme.md b/keyboards/mwstudio/mw75r2/readme.md
index ef2efb3734..5492352b2b 100644
--- a/keyboards/mwstudio/mw75r2/readme.md
+++ b/keyboards/mwstudio/mw75r2/readme.md
@@ -19,4 +19,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/mxss/config.h b/keyboards/mxss/config.h
index 67f5b8fa27..698fd4c6a9 100644
--- a/keyboards/mxss/config.h
+++ b/keyboards/mxss/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D78 // "Mx" -> MxBlue
-#define PRODUCT_ID 0x5353 // "SS" -> MxSS
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MxBlue
-#define PRODUCT MxSS
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* matrix pin configuration */
#define MATRIX_ROW_PINS { F4, F1, F7, B1, B7 }
#define MATRIX_COL_PINS { D7, D6, D4, D0, C6, B6, D1, B5, D2, B4, D3, D5, B0, B2, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mxss/info.json b/keyboards/mxss/info.json
index 3a0e25d86a..765d266e35 100644
--- a/keyboards/mxss/info.json
+++ b/keyboards/mxss/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MxSS",
- "maintainer": "qmk",
+ "manufacturer": "MxBlue",
"url": "https://geekhack.org/index.php?topic=94986.0",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D78",
+ "pid": "0x5353",
+ "device_version": "0.0.1"
+ },
"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.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}]
diff --git a/keyboards/mxss/mxss_frontled.c b/keyboards/mxss/mxss_frontled.c
index f5e4613dfb..8bb93d5fd8 100644
--- a/keyboards/mxss/mxss_frontled.c
+++ b/keyboards/mxss/mxss_frontled.c
@@ -39,9 +39,9 @@ __attribute__ ((weak))
size_t lc_size = sizeof(layer_colors) / sizeof(hs_set);
void fled_init(void) {
- // If EEPROM config exists, load it
- // If VIA EEPROM exists, FLED config should too
- if (via_eeprom_is_valid()) {
+ // This checks both an EEPROM reset (from bootmagic lite, keycodes)
+ // and also firmware build date (from via_eeprom_is_valid())
+ if (eeconfig_is_enabled()) {
fled_load_conf();
// Else, default config
} else {
diff --git a/keyboards/mysticworks/wyvern/config.h b/keyboards/mysticworks/wyvern/config.h
index 82b4939fcf..859eece683 100644
--- a/keyboards/mysticworks/wyvern/config.h
+++ b/keyboards/mysticworks/wyvern/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device Descriptor Parameter */
-#define VENDOR_ID 0x4D59 // "MY" - Mystic Works
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mystic Works
-#define PRODUCT Wyvern
-
/* Key Matrix Size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10
@@ -32,7 +25,6 @@
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS {D0,D1,D5,D3,F7,F6,F5,F4,F1,F0}
#define MATRIX_COL_PINS {E6,B0,D4,D6,D7,B4,B5,B6,C6,C7}
-#define UNUSED_PINS {B7,D2}
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/mysticworks/wyvern/info.json b/keyboards/mysticworks/wyvern/info.json
index 3e649a6cc3..5492929ab5 100644
--- a/keyboards/mysticworks/wyvern/info.json
+++ b/keyboards/mysticworks/wyvern/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Wyvern",
+ "manufacturer": "Mystic Works",
"url": "https://mysticworks.xyz",
"maintainer": "mysticworks",
+ "usb": {
+ "vid": "0x4D59",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/nack/config.h b/keyboards/nack/config.h
index 82daf71037..798d4ee12d 100644
--- a/keyboards/nack/config.h
+++ b/keyboards/nack/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "config_common.h"
-#define VENDOR_ID 0xDA12
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER farfalleflickan
-#define PRODUCT nack keyboard
-
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
diff --git a/keyboards/nack/info.json b/keyboards/nack/info.json
index e906bcbb99..9444eb3ad3 100644
--- a/keyboards/nack/info.json
+++ b/keyboards/nack/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "nack",
+ "manufacturer": "farfalleflickan",
"url": "https://github.com/farfalleflickan/nack",
"maintainer": "farfalleflickan",
+ "usb": {
+ "vid": "0xDA12",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_ortho_4x13"
},
diff --git a/keyboards/nack/keymaps/default/keymap.c b/keyboards/nack/keymaps/default/keymap.c
index 9a76fbbddb..c09ab70fd3 100644
--- a/keyboards/nack/keymaps/default/keymap.c
+++ b/keyboards/nack/keymaps/default/keymap.c
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[FN] = LAYOUT(
/* __________________________________________________________________________________________________________________________________________________________________________
| \ \ \ \ \ \ \ \ \ \ \ \ \ \ */
-// | |-RGB TOGGLE-|-CHANGE RGB-|-RGB HUE UP-|-RGB SAT UP-|------------|------------|------------|------------|------------|------------|------------|------------|-RESET KBD--|
+// | |-RGB TOGGLE-|-CHANGE RGB-|-RGB HUE UP-|-RGB SAT UP-|------------|------------|------------|------------|------------|------------|------------|------------|-QK_BOOT KBD--|
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
// | |------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|
MU_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,
diff --git a/keyboards/nack/keymaps/farfalleflickan/keymap.c b/keyboards/nack/keymaps/farfalleflickan/keymap.c
index 6e447bee1d..cf09a46b72 100644
--- a/keyboards/nack/keymaps/farfalleflickan/keymap.c
+++ b/keyboards/nack/keymaps/farfalleflickan/keymap.c
@@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[FN] = LAYOUT(
/* __________________________________________________________________________________________________________________________________________________________________________
| \ \ \ \ \ \ \ \ \ \ \ \ \ \ */
-// | |-RGB TOGGLE-|-CHANGE RGB-|-RGB HUE UP-|-RGB SAT UP-|------------|------------|------------|------------|------------|------------|------------|------------|-RESET KBD--|
+// | |-RGB TOGGLE-|-CHANGE RGB-|-RGB HUE UP-|-RGB SAT UP-|------------|------------|------------|------------|------------|------------|------------|------------|-QK_BOOT KBD--|
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KK_RESET,
// | |------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|
MU_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,
diff --git a/keyboards/nacly/sodium42/config.h b/keyboards/nacly/sodium42/config.h
index 94c6d903e1..b04468d9f1 100644
--- a/keyboards/nacly/sodium42/config.h
+++ b/keyboards/nacly/sodium42/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBEEF
-#define PRODUCT_ID 0xFED0
-#define DEVICE_VER 0x0001
-#define MANUFACTURER nacly
-#define PRODUCT sodium42
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/nacly/sodium42/info.json b/keyboards/nacly/sodium42/info.json
index 0597d17dc0..b8b72121dd 100644
--- a/keyboards/nacly/sodium42/info.json
+++ b/keyboards/nacly/sodium42/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "sodium42",
+ "manufacturer": "nacly",
"url": "https://nacly.net",
"maintainer": "nacly",
+ "usb": {
+ "vid": "0xBEEF",
+ "pid": "0xFED0",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/nacly/sodium42/readme.md b/keyboards/nacly/sodium42/readme.md
index 8e44f510ec..2e8cc02774 100644
--- a/keyboards/nacly/sodium42/readme.md
+++ b/keyboards/nacly/sodium42/readme.md
@@ -15,6 +15,6 @@ Make example for this keyboard (after setting up your build environment):
Enter the bootloader in 2 ways:
* **Physical reset button**: Press the reset button twice
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/nacly/sodium50/config.h b/keyboards/nacly/sodium50/config.h
index 0247752d3f..cdcab9290b 100644
--- a/keyboards/nacly/sodium50/config.h
+++ b/keyboards/nacly/sodium50/config.h
@@ -18,20 +18,13 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBEEF
-#define PRODUCT_ID 0xFED0
-#define DEVICE_VER 0x0001
-#define MANUFACTURER nacly
-#define PRODUCT sodium50
-
/* key matrix size */
// Rows are doubled-up
-#define MATRIX_ROWS 10
+#define MATRIX_ROWS 8
#define MATRIX_COLS 7
// wiring of each half
-#define MATRIX_ROW_PINS { F7, D4, D7, B4, B6 }
+#define MATRIX_ROW_PINS { F7, D4, D7, B4}
#define MATRIX_COL_PINS { D2, C6, E6, B5, B2, B3, B1 }
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nacly/sodium50/info.json b/keyboards/nacly/sodium50/info.json
index 254e4a11cd..ca96685f4c 100644
--- a/keyboards/nacly/sodium50/info.json
+++ b/keyboards/nacly/sodium50/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "sodium50",
+ "manufacturer": "nacly",
"url": "https://nacly.net",
"maintainer": "nacly",
+ "usb": {
+ "vid": "0xBEEF",
+ "pid": "0xFED0",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/nacly/sodium50/readme.md b/keyboards/nacly/sodium50/readme.md
index 8cd5e10e20..3b41d96b9c 100644
--- a/keyboards/nacly/sodium50/readme.md
+++ b/keyboards/nacly/sodium50/readme.md
@@ -15,6 +15,6 @@ Make example for this keyboard (after setting up your build environment):
Enter the bootloader in 2 ways:
* **Physical reset button**: Press the reset button twice
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/nacly/sodium50/sodium50.h b/keyboards/nacly/sodium50/sodium50.h
index c20ea9bc3b..384867f193 100644
--- a/keyboards/nacly/sodium50/sodium50.h
+++ b/keyboards/nacly/sodium50/sodium50.h
@@ -32,5 +32,5 @@
{ R00, R01, R02, R03, R04, R05, KC_NO }, \
{ R10, R11, R12, R13, R14, R15, KC_NO }, \
{ R20, R21, R22, R23, R24, R25, KC_NO }, \
- { R30, R31, R32, R33, R34, R35, L36 } \
+ { R30, R31, R32, R33, R34, R35, R36 } \
}
diff --git a/keyboards/nacly/sodium62/config.h b/keyboards/nacly/sodium62/config.h
index b6140db5f6..88f5c349c0 100644
--- a/keyboards/nacly/sodium62/config.h
+++ b/keyboards/nacly/sodium62/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBEEF
-#define PRODUCT_ID 0xFED0
-#define DEVICE_VER 0x0001
-#define MANUFACTURER nacly
-#define PRODUCT sodium62
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/nacly/sodium62/info.json b/keyboards/nacly/sodium62/info.json
index f1dc474dcc..8794696998 100644
--- a/keyboards/nacly/sodium62/info.json
+++ b/keyboards/nacly/sodium62/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "sodium62",
+ "manufacturer": "nacly",
"url": "https://nacly.net",
"maintainer": "nacly",
+ "usb": {
+ "vid": "0xBEEF",
+ "pid": "0xFED0",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/nacly/sodium62/readme.md b/keyboards/nacly/sodium62/readme.md
index 315f6cd987..1f600a50c6 100644
--- a/keyboards/nacly/sodium62/readme.md
+++ b/keyboards/nacly/sodium62/readme.md
@@ -15,7 +15,7 @@ Make example for this keyboard (after setting up your build environment):
Enter the bootloader in 2 ways:
* **Physical reset button**: Press the reset button twice
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/nacly/splitreus62/config.h b/keyboards/nacly/splitreus62/config.h
index 51013ee967..42e3739341 100644
--- a/keyboards/nacly/splitreus62/config.h
+++ b/keyboards/nacly/splitreus62/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* 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
diff --git a/keyboards/nacly/splitreus62/info.json b/keyboards/nacly/splitreus62/info.json
index a9f9b540a9..a237ff2262 100644
--- a/keyboards/nacly/splitreus62/info.json
+++ b/keyboards/nacly/splitreus62/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "splitreus62",
+ "keyboard_name": "Splitreus62",
+ "manufacturer": "NaCly",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xBEEF",
+ "pid": "0xFED0",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0.6}, {"x":1, "y":0.6}, {"x":2, "y":0.35}, {"x":3, "y":0}, {"x":4, "y":0.35}, {"x":5, "y":0.7}, {"x":9, "y":0.7}, {"x":10, "y":0.35}, {"x":11, "y":0}, {"x":12, "y":0.35}, {"x":13, "y":0.6}, {"x":14, "y":0.6}, {"x":0, "y":1.6}, {"x":1, "y":1.6}, {"x":2, "y":1.35}, {"x":3, "y":1}, {"x":4, "y":1.35}, {"x":5, "y":1.7}, {"x":9, "y":1.7}, {"x":10, "y":1.35}, {"x":11, "y":1}, {"x":12, "y":1.35}, {"x":13, "y":1.6}, {"x":14, "y":1.6}, {"x":0, "y":2.6}, {"x":1, "y":2.6}, {"x":2, "y":2.35}, {"x":3, "y":2}, {"x":4, "y":2.35}, {"x":5, "y":2.7}, {"x":9, "y":2.7}, {"x":10, "y":2.35}, {"x":11, "y":2}, {"x":12, "y":2.35}, {"x":13, "y":2.6}, {"x":14, "y":2.6}, {"x":0, "y":3.6}, {"x":1, "y":3.6}, {"x":2, "y":3.35}, {"x":3, "y":3}, {"x":4, "y":3.35}, {"x":5, "y":3.7}, {"x":9, "y":3.7}, {"x":10, "y":3.35}, {"x":11, "y":3}, {"x":12, "y":3.35}, {"x":13, "y":3.6}, {"x":14, "y":3.6}, {"x":0, "y":4.6}, {"x":1, "y":4.6}, {"x":2, "y":4.35}, {"x":3, "y":4}, {"x":4, "y":4.35}, {"x":5, "y":4.7}, {"x":6, "y":3.95, "h":1.5}, {"x":8, "y":3.95, "h":1.5}, {"x":9, "y":4.7}, {"x":10, "y":4.35}, {"x":11, "y":4}, {"x":12, "y":4.35}, {"x":13, "y":4.6}, {"x":14, "y":4.6}]
diff --git a/keyboards/nacly/splitreus62/keymaps/scheiklp/keymap.c b/keyboards/nacly/splitreus62/keymaps/scheiklp/keymap.c
index b192e357f0..f2d839b358 100644
--- a/keyboards/nacly/splitreus62/keymaps/scheiklp/keymap.c
+++ b/keyboards/nacly/splitreus62/keymaps/scheiklp/keymap.c
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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_ESC, KC_TRNS, KC_TRNS, KC_MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
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,
diff --git a/keyboards/nacly/ua62/config.h b/keyboards/nacly/ua62/config.h
index 803bddc294..464939080c 100644
--- a/keyboards/nacly/ua62/config.h
+++ b/keyboards/nacly/ua62/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBEEF
-#define PRODUCT_ID 0xFFFF
-#define DEVICE_VER 0x0001
-#define MANUFACTURER NaCly
-#define PRODUCT UA62
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 13
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, D2, D1, D0, D4 }
#define MATRIX_COL_PINS { C6, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/nacly/ua62/info.json b/keyboards/nacly/ua62/info.json
index 4090b43d11..6562aee7c3 100644
--- a/keyboards/nacly/ua62/info.json
+++ b/keyboards/nacly/ua62/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ua62",
+ "keyboard_name": "UA62",
+ "manufacturer": "NaCly",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xBEEF",
+ "pid": "0xFFFF",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0.6}, {"x":1, "y":0.6}, {"x":2, "y":0.35}, {"x":3, "y":0}, {"x":4, "y":0.35}, {"x":5, "y":0.7}, {"x":9, "y":0.7}, {"x":10, "y":0.35}, {"x":11, "y":0}, {"x":12, "y":0.35}, {"x":13, "y":0.6}, {"x":14, "y":0.6}, {"x":0, "y":1.6}, {"x":1, "y":1.6}, {"x":2, "y":1.35}, {"x":3, "y":1}, {"x":4, "y":1.35}, {"x":5, "y":1.7}, {"x":9, "y":1.7}, {"x":10, "y":1.35}, {"x":11, "y":1}, {"x":12, "y":1.35}, {"x":13, "y":1.6}, {"x":14, "y":1.6}, {"x":0, "y":2.6}, {"x":1, "y":2.6}, {"x":2, "y":2.35}, {"x":3, "y":2}, {"x":4, "y":2.35}, {"x":5, "y":2.7}, {"x":9, "y":2.7}, {"x":10, "y":2.35}, {"x":11, "y":2}, {"x":12, "y":2.35}, {"x":13, "y":2.6}, {"x":14, "y":2.6}, {"x":0, "y":3.6}, {"x":1, "y":3.6}, {"x":2, "y":3.35}, {"x":3, "y":3}, {"x":4, "y":3.35}, {"x":5, "y":3.7}, {"x":9, "y":3.7}, {"x":10, "y":3.35}, {"x":11, "y":3}, {"x":12, "y":3.35}, {"x":13, "y":3.6}, {"x":14, "y":3.6}, {"x":0, "y":4.6}, {"x":1, "y":4.6}, {"x":2, "y":4.35}, {"x":3, "y":4}, {"x":4, "y":4.35}, {"x":5, "y":4.7}, {"x":6, "y":3.95, "h":1.5}, {"x":8, "y":3.95, "h":1.5}, {"x":9, "y":4.7}, {"x":10, "y":4.35}, {"x":11, "y":4}, {"x":12, "y":4.35}, {"x":13, "y":4.6}, {"x":14, "y":4.6}]
diff --git a/keyboards/nasu/config.h b/keyboards/nasu/config.h
index 15ed75d5c0..01fe94ceb1 100644
--- a/keyboards/nasu/config.h
+++ b/keyboards/nasu/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -39,7 +32,7 @@ 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
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* Indicator LEDs */
diff --git a/keyboards/nasu/info.json b/keyboards/nasu/info.json
index fb191dc1fd..e2cd10fca6 100644
--- a/keyboards/nasu/info.json
+++ b/keyboards/nasu/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Nasu",
+ "manufacturer": "Yiancar-Designs",
"url": "https://yiancar-designs.com",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4E53",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/nasu/keymaps/mariocs/config.h b/keyboards/nasu/keymaps/mariocs/config.h
new file mode 100644
index 0000000000..18b30b7859
--- /dev/null
+++ b/keyboards/nasu/keymaps/mariocs/config.h
@@ -0,0 +1,5 @@
+// Copyright 2021 Mario Cadenas (@MarioCadenas)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define SPLIT_LED_STATE_ENABLE
diff --git a/keyboards/nasu/keymaps/mariocs/keymap.c b/keyboards/nasu/keymaps/mariocs/keymap.c
new file mode 100644
index 0000000000..d68ff76dbf
--- /dev/null
+++ b/keyboards/nasu/keymaps/mariocs/keymap.c
@@ -0,0 +1,60 @@
+/* Copyright 2021 MarioCadenas (@MarioCadenas)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 {
+ TD_LGUI,
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ layer_state_cmp(state, 1) ? setPinInputHigh(B0) : setPinInputLow(B0);
+
+ return state;
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_LGUI] = ACTION_TAP_DANCE_LAYER_TOGGLE(KC_LGUI, 1),
+};
+
+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_TRNS, 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_END, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(2),
+ KC_LCTL, KC_LALT, KC_SPC, TD(TD_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_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_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),
+
+[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_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/mariocs/readme.md b/keyboards/nasu/keymaps/mariocs/readme.md
new file mode 100644
index 0000000000..b5b0e66aa8
--- /dev/null
+++ b/keyboards/nasu/keymaps/mariocs/readme.md
@@ -0,0 +1,14 @@
+# Mariocs's keymap for Nasu.
+
+![Layer 0](https://i.imgur.com/kxC7RL5.png)
+
+![Layer 1](https://i.imgur.com/v0cYmXb.png)
+
+![Layer 2](https://i.imgur.com/FJ4y9hP.png)
+
+
+# Functionality
+
+* Via enabled.
+* When layer 1 is activated (Toggled os just temporarily), the numlock led will be switched on.
+* Double tapping `LGUI` key will toggle layer 1.
diff --git a/keyboards/nasu/keymaps/mariocs/rules.mk b/keyboards/nasu/keymaps/mariocs/rules.mk
new file mode 100644
index 0000000000..791d5ab502
--- /dev/null
+++ b/keyboards/nasu/keymaps/mariocs/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+TAP_DANCE_ENABLE = yes
diff --git a/keyboards/ncc1701kb/config.h b/keyboards/ncc1701kb/config.h
index bcc507032d..7b57d26f86 100644
--- a/keyboards/ncc1701kb/config.h
+++ b/keyboards/ncc1701kb/config.h
@@ -19,13 +19,6 @@ 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 0x1701
-#define DEVICE_VER 0x0001
-#define MANUFACTURER J2L Designs
-#define PRODUCT NCC1701KB
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* NCC-1701-KB PCB default pin-out */
#define MATRIX_ROW_PINS { D4, D6, D7 }
#define MATRIX_COL_PINS { B4, B5, B6 }
-#define UNUSED_PINS
/* BackLight */
#define BACKLIGHT_PIN B7
diff --git a/keyboards/ncc1701kb/info.json b/keyboards/ncc1701kb/info.json
index 396c317136..628341fde0 100644
--- a/keyboards/ncc1701kb/info.json
+++ b/keyboards/ncc1701kb/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NCC-1701-KB",
+ "manufacturer": "J2L Designs",
"url": "",
"maintainer": "jessel92",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1701",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/neito/config.h b/keyboards/neito/config.h
index c638b800c4..01f2545de9 100644
--- a/keyboards/neito/config.h
+++ b/keyboards/neito/config.h
@@ -16,13 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB9F7 // "Oliver Granlund"
-#define PRODUCT_ID 0xB44C // "Neito"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Oliver Granlund
-#define PRODUCT Neito
-
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
#define MATRIX_ROW_PINS { E6, F0, F5, F6, C7, C6, B4, D7, D6, D4 }
@@ -32,7 +25,6 @@
#define ENCODERS_PAD_A { B7 }
#define ENCODERS_PAD_B { B0 }
#define ENCODER_RESOLUTION 4
-#define UNUSED_PINS
#define LED_CAPS_LOCK_PIN B6
#define BACKLIGHT_ON_STATE 0
diff --git a/keyboards/neito/info.json b/keyboards/neito/info.json
index dbc5fad525..884a97b136 100644
--- a/keyboards/neito/info.json
+++ b/keyboards/neito/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Neito",
+ "manufacturer": "Oliver Granlund",
"url": "olli.works",
"maintainer": "Oliver Granlund",
+ "usb": {
+ "vid": "0xB9F7",
+ "pid": "0xB44C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/neito/keymaps/olli_works/keymap.c b/keyboards/neito/keymaps/olli_works/keymap.c
index 31763e1169..c17d1f95ab 100644
--- a/keyboards/neito/keymaps/olli_works/keymap.c
+++ b/keyboards/neito/keymaps/olli_works/keymap.c
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FN2] = LAYOUT(
KC_ESC, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS,
- KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
+ KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, BL_TOGG, BL_DEC, BL_INC, BL_STEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LGUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/nek_type_a/config.h b/keyboards/nek_type_a/config.h
index 701a75ebba..054441b02b 100644
--- a/keyboards/nek_type_a/config.h
+++ b/keyboards/nek_type_a/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER miker
-#define PRODUCT nek_type_a
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
diff --git a/keyboards/nek_type_a/info.json b/keyboards/nek_type_a/info.json
index 17e4674035..f5e93269ad 100644
--- a/keyboards/nek_type_a/info.json
+++ b/keyboards/nek_type_a/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NEK Type A",
+ "manufacturer": "miker",
"url": "",
"maintainer": "ecopoesis",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/nemui/config.h b/keyboards/nemui/config.h
index 32b757d610..a782caf748 100644
--- a/keyboards/nemui/config.h
+++ b/keyboards/nemui/config.h
@@ -16,13 +16,6 @@
*/
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6400
-#define PRODUCT_ID 0x2371
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Bachoo
-#define PRODUCT Nemui
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/nemui/info.json b/keyboards/nemui/info.json
index 7a2f231d10..f88d906fe5 100644
--- a/keyboards/nemui/info.json
+++ b/keyboards/nemui/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "nemui",
+ "keyboard_name": "Nemui",
+ "manufacturer": "Bachoo",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x6400",
+ "pid": "0x2371",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/neokeys/g67/element_hs/config.h b/keyboards/neokeys/g67/element_hs/config.h
index 3efc322d8d..2994931e73 100644
--- a/keyboards/neokeys/g67/element_hs/config.h
+++ b/keyboards/neokeys/g67/element_hs/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E4B // "NK"
-#define PRODUCT_ID 0x5049
-#define DEVICE_VER 0x0100
-#define MANUFACTURER NEO Keys
-#define PRODUCT Element G67 Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/neokeys/g67/element_hs/info.json b/keyboards/neokeys/g67/element_hs/info.json
index 3b20d10402..554313f6fa 100644
--- a/keyboards/neokeys/g67/element_hs/info.json
+++ b/keyboards/neokeys/g67/element_hs/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "NEO Keys Element Hotswap",
+ "keyboard_name": "Element G67 Hotswap",
+ "manufacturer": "NEO Keys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4E4B",
+ "pid": "0x5049",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/neokeys/g67/hotswap/config.h b/keyboards/neokeys/g67/hotswap/config.h
index d5303fa050..5c45f7ef94 100644
--- a/keyboards/neokeys/g67/hotswap/config.h
+++ b/keyboards/neokeys/g67/hotswap/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E4B // "NK"
-#define PRODUCT_ID 0x5048
-#define DEVICE_VER 0x0100
-#define MANUFACTURER NEO Keys
-#define PRODUCT Palette G67 Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/neokeys/g67/hotswap/info.json b/keyboards/neokeys/g67/hotswap/info.json
index 65b364bf44..db3619d5c9 100644
--- a/keyboards/neokeys/g67/hotswap/info.json
+++ b/keyboards/neokeys/g67/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "NEO Keys Palette G67 Hotswap",
+ "keyboard_name": "Palette G67 Hotswap",
+ "manufacturer": "NEO Keys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4E4B",
+ "pid": "0x5048",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/neokeys/g67/soldered/config.h b/keyboards/neokeys/g67/soldered/config.h
index 4672d96f11..9ea69bd3fe 100644
--- a/keyboards/neokeys/g67/soldered/config.h
+++ b/keyboards/neokeys/g67/soldered/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E4B // "NK"
-#define PRODUCT_ID 0x5053
-#define DEVICE_VER 0x0100
-#define MANUFACTURER NEO Keys
-#define PRODUCT Palette G67 Soldered
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/neokeys/g67/soldered/info.json b/keyboards/neokeys/g67/soldered/info.json
index b7738039bd..d8da39a4fb 100644
--- a/keyboards/neokeys/g67/soldered/info.json
+++ b/keyboards/neokeys/g67/soldered/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "NEO Keys Palette G67 Soldered",
+ "keyboard_name": "Palette G67 Soldered",
+ "manufacturer": "NEO Keys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4E4B",
+ "pid": "0x5053",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/neopad/config.h b/keyboards/neopad/config.h
index 79798b1d66..e352a1ab92 100755
--- a/keyboards/neopad/config.h
+++ b/keyboards/neopad/config.h
@@ -18,12 +18,6 @@ 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 0x0913
-#define MANUFACTURER rookiebwoy
-#define PRODUCT neopad
-
/* Column/Row IO definitions */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/neopad/readme.md b/keyboards/neopad/readme.md
index 9e83e9bb6d..6d2bd8a288 100644
--- a/keyboards/neopad/readme.md
+++ b/keyboards/neopad/readme.md
@@ -19,7 +19,7 @@ Flashing example for this keyboard:
make neopad/rev1:default:flash
-When asked by the terminal, press the dedicated `RESET` button (the one above the 2 LEDs) to enter the bootloader and let the OS detects the device.
+When asked by the terminal, press the dedicated `QK_BOOT` button (the one above the 2 LEDs) to enter the bootloader and let the OS detects the device.
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 [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/neopad/rev1/config.h b/keyboards/neopad/rev1/config.h
index 92d3392715..299c28487d 100755
--- a/keyboards/neopad/rev1/config.h
+++ b/keyboards/neopad/rev1/config.h
@@ -18,15 +18,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0010
-
/* Column/Row IO definitions */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
#define MATRIX_ROW_PINS { F4, F5 }
#define MATRIX_COL_PINS { B3, B2, B6 }
-#define UNUSED_PINS
/* Dual rotary encoders */
#define ENCODERS_PAD_A { D1, D4 }
diff --git a/keyboards/neopad/rev1/info.json b/keyboards/neopad/rev1/info.json
index b5868084d1..ef84eef161 100755
--- a/keyboards/neopad/rev1/info.json
+++ b/keyboards/neopad/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "neopad",
+ "manufacturer": "rookiebwoy",
"url": "https://github.com/rookiebwoy/neopad)",
"maintainer": "rookiebwoy",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0913",
+ "device_version": "0.1.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/neson_design/700e/700e.c b/keyboards/neson_design/700e/700e.c
new file mode 100644
index 0000000000..6b3be48044
--- /dev/null
+++ b/keyboards/neson_design/700e/700e.c
@@ -0,0 +1,388 @@
+/**
+ * @file 700e.c
+ *
+ Copyright 2022 astro
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "700e.h"
+#include "i2c_master.h"
+#include "drivers/led/issi/is31fl3731.h"
+
+enum {
+ SELF_TESTING,
+ CAPS_ALERT,
+ NORMAL,
+};
+
+enum {
+ ST_STAGE_1,
+ ST_STAGE_2,
+ ST_STAGE_3,
+};
+
+// alert state update interval
+#define ALERT_INTERVAL 500
+// self testing state update interval
+#define ST_INTERVAL 100
+// self testing start index
+#define ST_DEFAULT_INDEX 15
+// self testing stage delay
+#define ST_STAGE_DELAY 10
+// self testing stage cycle count
+#define ST_STAGE_COUNT 4
+// self testing stage end duration
+#define ST_END_DURATION 10
+
+// led index
+#define ST_LEFT_BEGIN 0
+#ifdef DRIVER_ADDR_2
+#define ST_LEFT_SIZE 4
+#else
+#define ST_LEFT_SIZE 2
+#endif
+#define ST_LEFT_END (ST_LEFT_BEGIN+ST_LEFT_SIZE-1)
+#ifdef DRIVER_ADDR_2
+#define ST_RIGHT_BEGIN 60
+#else
+#define ST_RIGHT_BEGIN 30
+#endif
+#ifdef DRIVER_ADDR_2
+#define ST_RIGHT_SIZE 4
+#else
+#define ST_RIGHT_SIZE 2
+#endif
+#define ST_RIGHT_END (ST_RIGHT_BEGIN+ST_RIGHT_SIZE-1)
+
+#ifdef RGBLIGHT_ENABLE
+
+typedef struct {
+ uint8_t state;
+ uint8_t testing;
+ bool alert;
+ uint8_t index;
+ uint8_t delay;
+ uint8_t count;
+ bool dir;
+ uint8_t duration;
+ uint16_t ticks;
+} rgb_state_t;
+
+static rgb_state_t rgb_state = {
+ .state = //NORMAL,
+ SELF_TESTING,
+ .testing = ST_STAGE_1,
+ .ticks = 0,
+ .alert = false,
+ .index = ST_DEFAULT_INDEX,
+ .delay = ST_STAGE_DELAY,
+ .count = ST_STAGE_COUNT,
+ .dir = true,
+ .duration = ST_END_DURATION,
+};
+
+static void update_ticks(void)
+{
+ rgb_state.ticks = timer_read();
+}
+
+static void self_testing(void)
+{
+ if (timer_elapsed(rgb_state.ticks) < ST_INTERVAL) return;
+ HSV hsv = rgblight_get_hsv();
+
+ RGB led = hsv_to_rgb(hsv);
+ switch(rgb_state.testing) {
+ case ST_STAGE_1:
+ if (rgb_state.index !=0 ) {
+ IS31FL3731_set_color_all(0, 0, 0);
+ }
+
+ if (rgb_state.index >= ST_LEFT_END) {
+ for (int i = rgb_state.index - 1; i < DRIVER_LED_TOTAL - rgb_state.index + 1; i++) {
+ IS31FL3731_set_color(i, led.r, led.g, led.b);
+ }
+ if (rgb_state.index == ST_LEFT_END) {
+ rgb_state.index = ST_LEFT_BEGIN;
+ } else {
+ rgb_state.index -= ST_LEFT_SIZE;
+ }
+ } else{
+ if (rgb_state.delay > 0) {
+ rgb_state.delay--;
+ } else {
+ // move to stage 2
+ rgb_state.index = ST_LEFT_BEGIN+ST_LEFT_SIZE;
+ rgb_state.testing = ST_STAGE_2;
+ }
+ }
+ break;
+ case ST_STAGE_2: {
+ // clear all
+ IS31FL3731_set_color_all(0, 0, 0);
+ int i = 0;
+ // light left and right
+ for (i = 0; i < ST_LEFT_SIZE; i++) {
+ IS31FL3731_set_color(ST_LEFT_BEGIN+i, led.r, led.g, led.b);
+ }
+ for (i = 0; i < ST_RIGHT_SIZE; i++) {
+ IS31FL3731_set_color(ST_RIGHT_BEGIN+i, led.r, led.g, led.b);
+
+ }
+ if (rgb_state.dir) {
+ // left to right
+ for (int i = rgb_state.index; i < rgb_state.index+ST_LEFT_SIZE+ST_RIGHT_SIZE; i++) {
+ IS31FL3731_set_color(i, led.r, led.g, led.b);
+ }
+ rgb_state.index += ST_LEFT_SIZE+ST_RIGHT_SIZE;
+ if (rgb_state.index == ST_RIGHT_BEGIN) {
+ rgb_state.dir = !rgb_state.dir;
+ rgb_state.count--;
+ }
+ } else {
+ // right to left
+ for (int i = rgb_state.index - ST_RIGHT_SIZE; i < rgb_state.index; i++) {
+ IS31FL3731_set_color(i, led.r, led.g, led.b);
+ }
+ rgb_state.index -= ST_LEFT_SIZE + ST_RIGHT_SIZE;
+ if (rgb_state.index == ST_LEFT_BEGIN+ST_LEFT_SIZE) {
+ rgb_state.dir = !rgb_state.dir;
+ rgb_state.count--;
+ }
+ }
+
+ if (rgb_state.count == 0) {
+ // move to stage 3
+ rgb_state.testing = ST_STAGE_3;
+ rgb_state.index = 0;
+ rgb_state.delay = ST_STAGE_DELAY;
+ rgb_state.duration = ST_END_DURATION;
+ }
+ }
+ break;
+ case ST_STAGE_3:
+ if (rgb_state.index != DRIVER_LED_TOTAL/2) {
+ IS31FL3731_set_color_all(0, 0, 0);
+ }
+
+ // light left and right
+
+ if (rgb_state.index == DRIVER_LED_TOTAL/2) {
+ if (rgb_state.duration) {
+ rgb_state.duration--;
+ } else {
+ if (IS_HOST_LED_ON(USB_LED_CAPS_LOCK)) {
+ rgb_state.state = CAPS_ALERT;
+ } else {
+ rgb_state.state = NORMAL;
+ rgblight_set();
+ }
+ }
+ } else {
+ // left
+ for (int i = 0; i < rgb_state.index+1; i++) {
+ IS31FL3731_set_color(i, led.r, led.g, led.b);
+ }
+ // right
+ for (int i = ST_RIGHT_END; i > ST_RIGHT_END - rgb_state.index - 1; i--) {
+ IS31FL3731_set_color(i, led.r, led.g, led.b);
+ }
+ rgb_state.index ++;
+ }
+ break;
+ }
+
+ update_ticks();
+}
+
+const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
+ /* Refer to IS31 manual for these locations
+ * driver
+ * | R location
+ * | | G location
+ * | | | B location
+ * | | | | */
+ // left CA
+ {0, C1_1, C3_2, C4_2},
+ {0, C1_2, C2_2, C4_3},
+ {0, C1_3, C2_3, C3_3},
+ {0, C1_4, C2_4, C3_4},
+ {0, C1_5, C2_5, C3_5},
+ {0, C1_6, C2_6, C3_6},
+ {0, C1_7, C2_7, C3_7},
+ {0, C1_8, C2_8, C3_8},
+
+ {0, C9_1, C8_1, C7_1},
+ {0, C9_2, C8_2, C7_2},
+ {0, C9_3, C8_3, C7_3},
+ {0, C9_4, C8_4, C7_4},
+ {0, C9_5, C8_5, C7_5},
+ {0, C9_6, C8_6, C7_6},
+ {0, C9_7, C8_7, C6_6},
+ {0, C9_8, C7_7, C6_7},
+ // left CB
+ {0, C1_9, C3_10, C4_10},
+ {0, C1_10, C2_10, C4_11},
+ {0, C1_11, C2_11, C3_11},
+ {0, C1_12, C2_12, C3_12},
+ {0, C1_13, C2_13, C3_13},
+ {0, C1_14, C2_14, C3_14},
+ {0, C1_15, C2_15, C3_15},
+ {0, C1_16, C2_16, C3_16},
+
+ {0, C9_9, C8_9, C7_9},
+ {0, C9_10, C8_10, C7_10},
+ {0, C9_11, C8_11, C7_11},
+ {0, C9_12, C8_12, C7_12},
+ {0, C9_13, C8_13, C7_13},
+ {0, C9_14, C8_14, C7_14},
+ {0, C9_15, C8_15, C6_14},
+ {0, C9_16, C7_15, C6_15},
+
+ // right CA
+ {1, C1_1, C3_2, C4_2},
+ {1, C1_2, C2_2, C4_3},
+ {1, C1_3, C2_3, C3_3},
+ {1, C1_4, C2_4, C3_4},
+ {1, C1_5, C2_5, C3_5},
+ {1, C1_6, C2_6, C3_6},
+ {1, C1_7, C2_7, C3_7},
+ {1, C1_8, C2_8, C3_8},
+
+ {1, C9_1, C8_1, C7_1},
+ {1, C9_2, C8_2, C7_2},
+ {1, C9_3, C8_3, C7_3},
+ {1, C9_4, C8_4, C7_4},
+ {1, C9_5, C8_5, C7_5},
+ {1, C9_6, C8_6, C7_6},
+ {1, C9_7, C8_7, C6_6},
+ {1, C9_8, C7_7, C6_7},
+ // right CB
+ {1, C1_9, C3_10, C4_10},
+ {1, C1_10, C2_10, C4_11},
+ {1, C1_11, C2_11, C3_11},
+ {1, C1_12, C2_12, C3_12},
+ {1, C1_13, C2_13, C3_13},
+ {1, C1_14, C2_14, C3_14},
+ {1, C1_15, C2_15, C3_15},
+ {1, C1_16, C2_16, C3_16},
+
+ {1, C9_9, C8_9, C7_9},
+ {1, C9_10, C8_10, C7_10},
+ {1, C9_11, C8_11, C7_11},
+ {1, C9_12, C8_12, C7_12},
+ {1, C9_13, C8_13, C7_13},
+ {1, C9_14, C8_14, C7_14},
+ {1, C9_15, C8_15, C6_14},
+ {1, C9_16, C7_15, C6_15},
+};
+
+void matrix_init_kb(void)
+{
+ setPinOutput(LED_CAPS_LOCK_PIN);
+ writePinLow(LED_CAPS_LOCK_PIN);
+
+ i2c_init();
+ IS31FL3731_init(DRIVER_ADDR_1);
+#ifdef DRIVER_ADDR_2
+ IS31FL3731_init(DRIVER_ADDR_2);
+#endif
+ for (int index = 0; index < DRIVER_LED_TOTAL; index++) {
+ IS31FL3731_set_led_control_register(index, true, true, true);
+ }
+ IS31FL3731_update_led_control_registers(DRIVER_ADDR_1, 0);
+#ifdef DRIVER_ADDR_2
+ IS31FL3731_update_led_control_registers(DRIVER_ADDR_2, 1);
+#endif
+ update_ticks();
+ matrix_init_user();
+}
+
+#define ALERM_LED_R 0xFF
+#define ALERM_LED_G 0xA5
+#define ALERM_LED_B 0x00
+//golden 0xFF, 0xD9, 0x00
+
+void housekeeping_task_kb(void)
+{
+ if (rgb_state.state == SELF_TESTING) {
+ self_testing();
+ } else if (rgb_state.state == CAPS_ALERT) {
+ if (rgb_state.alert) {
+ IS31FL3731_set_color_all(ALERM_LED_R, ALERM_LED_G, ALERM_LED_B);
+ LED_TYPE leds[4];
+ for (int i = 0; i < 4; i++) {
+ leds[i].r = ALERM_LED_G;
+ leds[i].g = ALERM_LED_R;
+ leds[i].b = ALERM_LED_B;
+ }
+ ws2812_setleds(leds, 4);
+ } else {
+ IS31FL3731_set_color_all(0, 0, 0);
+ LED_TYPE leds[4] = {0};
+ ws2812_setleds(leds, 4);
+ }
+
+ if (timer_elapsed(rgb_state.ticks) > ALERT_INTERVAL) {
+ rgb_state.alert = !rgb_state.alert;
+ update_ticks();
+ }
+ }
+
+ IS31FL3731_update_pwm_buffers(DRIVER_ADDR_1, 0);
+#ifdef DRIVER_ADDR_2
+ IS31FL3731_update_pwm_buffers(DRIVER_ADDR_2, 1);
+#endif
+
+ housekeeping_task_user();
+}
+
+void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds)
+{
+ if (rgb_state.state != NORMAL) return;
+
+ for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
+ IS31FL3731_set_color(i, start_led[i].r, start_led[i].g, start_led[i].b);
+ }
+ LED_TYPE leds[4];
+ for (int i = 0; i < 4; i++) {
+ leds[i].r = start_led[DRIVER_LED_TOTAL+i].g;
+ leds[i].g = start_led[DRIVER_LED_TOTAL+i].r;
+ leds[i].b = start_led[DRIVER_LED_TOTAL+i].b;
+ }
+ //ws2812_setleds(start_led+DRIVER_LED_TOTAL, 4);
+ ws2812_setleds(leds, 4);
+}
+
+bool led_update_kb(led_t led_state)
+{
+ bool res = led_update_user(led_state);
+ if (res) {
+ writePin(LED_CAPS_LOCK_PIN, led_state.caps_lock);
+
+ if (rgb_state.state != SELF_TESTING) {
+ if (led_state.caps_lock) {
+ rgb_state.state = CAPS_ALERT;
+ update_ticks();
+ } else {
+ rgb_state.state = NORMAL;
+ rgblight_set();
+ }
+ }
+ }
+ return res;
+}
+
+#endif \ No newline at end of file
diff --git a/keyboards/neson_design/700e/700e.h b/keyboards/neson_design/700e/700e.h
new file mode 100644
index 0000000000..f096868d32
--- /dev/null
+++ b/keyboards/neson_design/700e/700e.h
@@ -0,0 +1,38 @@
+/**
+ * @file 700e.h
+ *
+ Copyright 2021 astro
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have 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, K4D, K0E, K0F, K1F, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K2E, K2F,\
+ 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, K4A, K49, K4B, K4C, K3F, K4E, 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, K1E, K1F }, \
+ { 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, ___, ___, ___, ___, ___, ___, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \
+}
diff --git a/keyboards/neson_design/700e/config.h b/keyboards/neson_design/700e/config.h
new file mode 100644
index 0000000000..83cc780d80
--- /dev/null
+++ b/keyboards/neson_design/700e/config.h
@@ -0,0 +1,63 @@
+/**
+ * config.h
+ *
+ Copyright 2022 astro
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have 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 5
+#define MATRIX_COLS 16
+#define MATRIX_ROW_PINS { E6, B7, F6, F1, F0}
+#define MATRIX_COL_PINS { F7, B0, B3, B1, B2, F4, C7, C6, B6, B5, B4, D7, D3, D2, D6, D4}
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not 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
+
+
+#define DRIVER_1_LED_TOTAL 32
+#define DRIVER_2_LED_TOTAL 32
+#define DRIVER_ADDR_1 0b1110100
+#define DRIVER_ADDR_2 0b1110111
+#define DRIVER_COUNT 2
+#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL+DRIVER_2_LED_TOTAL)
+
+#define LED_CAPS_LOCK_PIN F5
+
+//rgb light setting
+#define RGBLED_NUM 68
+#define RGB_DI_PIN D5
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+//#define RGBLIGHT_LIMIT_VAL 192
+
+#define USB_SUSPEND_WAKEUP_DELAY 1000
diff --git a/keyboards/neson_design/700e/info.json b/keyboards/neson_design/700e/info.json
new file mode 100644
index 0000000000..4d4d427097
--- /dev/null
+++ b/keyboards/neson_design/700e/info.json
@@ -0,0 +1,17 @@
+{
+ "keyboard_name": "700E",
+ "manufacturer": "Neson Design",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x4E65",
+ "pid": "0x700E",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "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}, {"label":"4,13", "x":14, "y":0}, {"label":"0,14", "x":15.5, "y":0}, {"label":"0,15", "x":16.5, "y":0}, {"label":"1,15", "x":17.5, "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.5, "y":1}, {"label":"2,14", "x":16.5, "y":1}, {"label":"2,15", "x":17.5, "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":"2,13", "x":13.75, "y":2}, {"label":"3,0", "x":0, "y":3, "w":1.25}, {"label":"3,1", "x":1.25, "y":3}, {"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":16.5, "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,9", "x":11.25, "y":4, "w":1.25}, {"label":"4,11", "x":12.5, "y":4, "w":1.25}, {"label":"4,12", "x":13.75, "y":4, "w":1.25}, {"label":"3,15", "x":15.5, "y":4}, {"label":"4,14", "x":16.5, "y":4}, {"label":"4,15", "x":17.5, "y":4}, {"label":"4,10", "x":4, "y":4.25, "w":7}]
+ }
+ }
+}
diff --git a/keyboards/neson_design/700e/keymaps/default/keymap.c b/keyboards/neson_design/700e/keymaps/default/keymap.c
new file mode 100644
index 0000000000..cf80983ff3
--- /dev/null
+++ b/keyboards/neson_design/700e/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/**
+ Copyright 2022 astro
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received 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_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_BSLS, KC_ENT,
+ KC_LSFT, KC_LGUI, 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_RCTL, KC_LEFT,KC_DOWN, KC_RIGHT),
+
+ [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,_______,KC_PSCR,_______,_______,_______,
+ QK_BOOT, RGB_TOG,RGB_MOD,RGB_RMOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,KC_MUTE,KC_VOLU,KC_VOLD,_______,_______,_______,_______,
+ _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN, KC_UP,KC_RIGHT,KC_HOME, KC_END,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______, _______, _______,_______,_______,_______,_______,_______),
+};
diff --git a/keyboards/neson_design/700e/keymaps/via/keymap.c b/keyboards/neson_design/700e/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f3d553e9df
--- /dev/null
+++ b/keyboards/neson_design/700e/keymaps/via/keymap.c
@@ -0,0 +1,41 @@
+/**
+ Copyright 2022 astro
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received 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_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_BSLS, KC_ENT,
+ KC_LSFT, KC_LGUI, 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_RCTL, KC_LEFT,KC_DOWN, KC_RIGHT),
+
+ [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,_______,KC_PSCR,_______,_______,_______,
+ QK_BOOT, RGB_TOG,RGB_MOD,RGB_RMOD,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,KC_MUTE,KC_VOLU,KC_VOLD,_______,_______,_______,_______,
+ _______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN, KC_UP,KC_RIGHT,KC_HOME, KC_END,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______, _______, _______,_______,_______,_______,_______,_______),
+
+ [2] = LAYOUT_all(
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,
+ _______,_______,_______, _______, _______,_______,_______,_______,_______,_______),
+};
diff --git a/keyboards/neson_design/700e/keymaps/via/rules.mk b/keyboards/neson_design/700e/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/neson_design/700e/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/neson_design/700e/readme.md b/keyboards/neson_design/700e/readme.md
new file mode 100644
index 0000000000..8b25d00c25
--- /dev/null
+++ b/keyboards/neson_design/700e/readme.md
@@ -0,0 +1,21 @@
+# Neson Design (formerly iNETT Studio) 700E
+
+A 65% keyboard with function keys from the Neson Design's N series.
+
+* Keyboard Maintainer: [astro](https://github.com/yulei)
+* Hardware Supported: 700E keyboard
+* Hardware Availability: Limited gb
+
+Make example for this keyboard (after setting up your build environment):
+
+ make neson_design/700e: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 *RST* button on the back of the PCB.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. \ No newline at end of file
diff --git a/keyboards/neson_design/700e/rules.mk b/keyboards/neson_design/700e/rules.mk
new file mode 100644
index 0000000000..aca054eabd
--- /dev/null
+++ b/keyboards/neson_design/700e/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 = yes # Enable keyboard RGB underglow
+NO_USB_STARTUP_CHECK = yes
+
+QUANTUM_LIB_SRC += i2c_master.c drivers/led/issi/is31fl3731.c
diff --git a/keyboards/neson_design/n6/config.h b/keyboards/neson_design/n6/config.h
index 2f564ab4c4..7d27825eaf 100644
--- a/keyboards/neson_design/n6/config.h
+++ b/keyboards/neson_design/n6/config.h
@@ -20,19 +20,11 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E65 //'Ne'
-#define PRODUCT_ID 0x4E36 //'N6'
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Neson Design
-#define PRODUCT N6 Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { F0, B1, F6, F4, F1}
#define MATRIX_COL_PINS { F7, B0, E6, C7, C6, B6, B5, B4, D7, D6, D4, D5, B2, D3, D2 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/neson_design/n6/info.json b/keyboards/neson_design/n6/info.json
index ad52af3288..1fe847a3d7 100644
--- a/keyboards/neson_design/n6/info.json
+++ b/keyboards/neson_design/n6/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "n6",
+ "keyboard_name": "N6",
+ "manufacturer": "Neson Design",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4E65",
+ "pid": "0x4E36",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_65_ansi_blocker_splitbs": "LAYOUT_65_ansi_blocker_split_bs"
},
diff --git a/keyboards/neson_design/n6/readme.md b/keyboards/neson_design/n6/readme.md
index 81ba05be49..f86668549a 100644
--- a/keyboards/neson_design/n6/readme.md
+++ b/keyboards/neson_design/n6/readme.md
@@ -18,4 +18,4 @@ 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 *RST* button on the back of the PCB.
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available. \ No newline at end of file
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. \ No newline at end of file
diff --git a/keyboards/newgame40/config.h b/keyboards/newgame40/config.h
index d2ec20a7cc..a04ddf45cc 100644
--- a/keyboards/newgame40/config.h
+++ b/keyboards/newgame40/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER GoTakigawa
-#define PRODUCT NEWGAME40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pin-out */
#define MATRIX_ROW_PINS { F7, B1, B3, B2 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* ws2812 RGB LED */
#define RGB_DI_PIN F6
diff --git a/keyboards/newgame40/info.json b/keyboards/newgame40/info.json
index 9c06fafacf..55e5a5802a 100644
--- a/keyboards/newgame40/info.json
+++ b/keyboards/newgame40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NEWGAME40",
+ "manufacturer": "GoTakigawa",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x10": {
"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":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":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":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}]
diff --git a/keyboards/nibiria/stream15/config.h b/keyboards/nibiria/stream15/config.h
index 824357b475..64866ef29d 100644
--- a/keyboards/nibiria/stream15/config.h
+++ b/keyboards/nibiria/stream15/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E49
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nibiria
-#define PRODUCT Stream15
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 5
diff --git a/keyboards/nibiria/stream15/info.json b/keyboards/nibiria/stream15/info.json
index 8dbbc82a99..eb4d196ea7 100644
--- a/keyboards/nibiria/stream15/info.json
+++ b/keyboards/nibiria/stream15/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Stream15",
+ "manufacturer": "Nibiria",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4E49",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_3x5": {
diff --git a/keyboards/nightingale_studios/hailey/config.h b/keyboards/nightingale_studios/hailey/config.h
index f3331b3f1c..73584acd94 100644
--- a/keyboards/nightingale_studios/hailey/config.h
+++ b/keyboards/nightingale_studios/hailey/config.h
@@ -19,13 +19,6 @@ 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 0x4879
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nightingale Studios
-#define PRODUCT Hailey
-
/* key matrix size - encoder is not part of matrix but wired to 2 pins so bodge a fake row/col*/
#define MATRIX_ROWS 7
#define MATRIX_COLS 17
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { A8, B15, B14, B13, B12, B6, A14 }
#define MATRIX_COL_PINS { A4, A3, F1, F0, C15, C14, C13, B11, B10, B2, B1, B0, A7, A5, A6, B5, A15 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nightingale_studios/hailey/info.json b/keyboards/nightingale_studios/hailey/info.json
index 84cae1487e..ac199206b9 100644
--- a/keyboards/nightingale_studios/hailey/info.json
+++ b/keyboards/nightingale_studios/hailey/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Hailey",
+ "manufacturer": "Nightingale Studios",
"maintainer": "zvecr",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x4879",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,2", "x":1.25, "y":0}, {"label":"0,3", "x":2.25, "y":0}, {"label":"0,4", "x":3.25, "y":0}, {"label":"0,5", "x":4.25, "y":0}, {"label":"0,6", "x":5.5, "y":0}, {"label":"0,7", "x":6.5, "y":0}, {"label":"0,8", "x":7.5, "y":0}, {"label":"0,9", "x":8.5, "y":0}, {"label":"0,10", "x":9.75, "y":0}, {"label":"0,11", "x":10.75, "y":0}, {"label":"0,12", "x":11.75, "y":0}, {"label":"0,13", "x":12.75, "y":0}, {"label":"0,14", "x":14, "y":0}, {"label":"6,16", "x":15.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,15", "x":15.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,15", "x":15.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":"3,15", "x":15.25, "y":3.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":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "x":12.25, "y":4.25, "w":1.75}, {"label":"4,14", "x":14.25, "y":4.5}, {"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,5", "x":3.75, "y":5.25, "w":6.25}, {"label":"5,9", "x":10, "y":5.25, "w":1.5}, {"label":"5,11", "x":11.5, "y":5.25, "w":1.5}, {"label":"5,12", "x":13.25, "y":5.5}, {"label":"5,14", "x":14.25, "y":5.5}, {"label":"5,15", "x":15.25, "y":5.5}]
diff --git a/keyboards/nightly_boards/adellein/config.h b/keyboards/nightly_boards/adellein/config.h
index cd24f1a1c8..81d0f0cbfd 100644
--- a/keyboards/nightly_boards/adellein/config.h
+++ b/keyboards/nightly_boards/adellein/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xD812
-#define PRODUCT_ID 0x0010
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Neil Brian Ramirez
-#define PRODUCT Adellein
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B1, B0, B5, B6 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B7, B3, B2, D0, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nightly_boards/adellein/info.json b/keyboards/nightly_boards/adellein/info.json
index 394987dddb..08a0eeb040 100644
--- a/keyboards/nightly_boards/adellein/info.json
+++ b/keyboards/nightly_boards/adellein/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Adellein",
+ "manufacturer": "Neil Brian Ramirez",
"url": "",
"maintainer": "Neil Brian Ramirez",
+ "usb": {
+ "vid": "0xD812",
+ "pid": "0x0010",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_40ergo_split_ent": {
"layout": [
diff --git a/keyboards/nightly_boards/alter/rev1/config.h b/keyboards/nightly_boards/alter/rev1/config.h
index f42c49eb5c..fbfa65c2a0 100644
--- a/keyboards/nightly_boards/alter/rev1/config.h
+++ b/keyboards/nightly_boards/alter/rev1/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0717
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Neil Brian Ramirez
-#define PRODUCT Alter
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F7, F6, F5, E6, D0, B7, D5, D3, D2, D1 }
#define MATRIX_COL_PINS { C7, C6, B6, B5, B0, B1, B2, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nightly_boards/alter/rev1/info.json b/keyboards/nightly_boards/alter/rev1/info.json
index 6083454b01..7cad90c889 100644
--- a/keyboards/nightly_boards/alter/rev1/info.json
+++ b/keyboards/nightly_boards/alter/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Alter",
+ "manufacturer": "Neil Brian Ramirez",
"url": "",
"maintainer": "Neil Brian Ramirez",
+ "usb": {
+ "vid": "0x0717",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/nightly_boards/alter_lite/alter_lite.c b/keyboards/nightly_boards/alter_lite/alter_lite.c
new file mode 100644
index 0000000000..90e2d8c5b3
--- /dev/null
+++ b/keyboards/nightly_boards/alter_lite/alter_lite.c
@@ -0,0 +1,16 @@
+/* Copyright 2020 DeskDaily
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "alter_lite.h"
diff --git a/keyboards/nightly_boards/alter_lite/alter_lite.h b/keyboards/nightly_boards/alter_lite/alter_lite.h
new file mode 100644
index 0000000000..a268512dae
--- /dev/null
+++ b/keyboards/nightly_boards/alter_lite/alter_lite.h
@@ -0,0 +1,41 @@
+ /* Copyright 2020 DeskDaily
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, K0A, K0B, K0C, K0D, K0E, K0F, \
+ K10, K11, K12, K13, K14, K15, K16, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
+ K20, K21, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2F, \
+ K31, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, \
+ K41, K44, K45, K46, K48, K4B, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, KC_NO, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
+ { K20, K21, KC_NO, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, KC_NO, K2F }, \
+ { KC_NO, K31, KC_NO, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
+ { KC_NO, K41, KC_NO, KC_NO, K44, K45, K46, KC_NO, K48, KC_NO, KC_NO, K4B, KC_NO, KC_NO, K4E, KC_NO }, \
+}
diff --git a/keyboards/nightly_boards/alter_lite/config.h b/keyboards/nightly_boards/alter_lite/config.h
new file mode 100644
index 0000000000..35f10a53e1
--- /dev/null
+++ b/keyboards/nightly_boards/alter_lite/config.h
@@ -0,0 +1,54 @@
+ /*
+Copyright 2020 DeskDaily
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have 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 5
+#define MATRIX_COLS 16
+
+#define LED_NUM_LOCK_PIN D6
+#define LED_CAPS_LOCK_PIN D7
+#define LED_SCROLL_LOCK_PIN D4
+#define LED_PIN_ON_STATE 0
+
+/*
+ * 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, D3, D5, B5 }
+#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D0, D1, D2, E6, B6, C6, C7, F7, F6, F5, F4 }
+
+/* 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
+
diff --git a/keyboards/nightly_boards/alter_lite/info.json b/keyboards/nightly_boards/alter_lite/info.json
new file mode 100644
index 0000000000..2f4d6b8343
--- /dev/null
+++ b/keyboards/nightly_boards/alter_lite/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "Alter Lite",
+ "manufacturer": "DeskDaily",
+ "url": "",
+ "maintainer": "DeskDaily",
+ "usb": {
+ "vid": "0xD812",
+ "pid": "0x0013",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0.5, "y":0.15},
+ {"x":1.75, "y":0.25},
+ {"x":2.75, "y":0.25},
+ {"x":3.75, "y":0.25},
+ {"x":4.75, "y":0.25},
+ {"x":5.75, "y":0.25},
+ {"x":6.75, "y":0.25},
+ {"x":7.75, "y":0.25},
+ {"x":11.25, "y":0.25},
+ {"x":12.25, "y":0.25},
+ {"x":13.25, "y":0.25},
+ {"x":14.25, "y":0.25},
+ {"x":15.25, "y":0.25},
+ {"x":16.25, "y":0.25},
+ {"x":17.25, "y":0.25},
+ {"x":18.25, "y":0.25},
+ {"x":0.25, "y":1.15},
+ {"x":1.5, "y":1.25, "w":1.5},
+ {"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":10.75, "y":1.25},
+ {"x":11.75, "y":1.25},
+ {"x":12.75, "y":1.25},
+ {"x":13.75, "y":1.25},
+ {"x":15, "y":1.25},
+ {"x":16, "y":1.25},
+ {"x":17, "y":1.25},
+ {"x":18, "y":1.25, "w":1.5},
+ {"x":0, "y":2.15},
+ {"x":1.25, "y":2.25, "w":1.75},
+ {"x":3, "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":11, "y":2.25},
+ {"x":12, "y":2.25},
+ {"x":13, "y":2.25},
+ {"x":14, "y":2.25},
+ {"x":15.5, "y":2.25},
+ {"x":16.5, "y":2.25},
+ {"x":17.5, "y":2.25, "w":2.25},
+ {"x":1, "y":3.25, "w":2.25},
+ {"x":3.25, "y":3.25},
+ {"x":5, "y":3.25},
+ {"x":6, "y":3.25},
+ {"x":7, "y":3.25},
+ {"x":8, "y":3.25},
+ {"x":10.5, "y":3.25},
+ {"x":11.5, "y":3.25},
+ {"x":12.5, "y":3.25},
+ {"x":13.5, "y":3.25},
+ {"x":15.25, "y":3.25},
+ {"x":16.25, "y":3.25},
+ {"x":17.25, "y":3.25, "w":1.75},
+ {"x":19, "y":3.25},
+ {"x":1, "y":4.25, "w":1.5},
+ {"x":4.75, "y":4.25, "w":1.5},
+ {"x":6.25, "y":4.25, "w":2},
+ {"x":8.25, "y":4.25, "w":1.25},
+ {"x":10.5, "y":4.25, "w":2.75},
+ {"x":13.25, "y":4.25, "w":1.5},
+ {"x":18.25, "y":4.25, "w":1.5}]
+ }
+ }
+}
diff --git a/keyboards/nightly_boards/alter_lite/keymaps/default/keymap.c b/keyboards/nightly_boards/alter_lite/keymaps/default/keymap.c
new file mode 100644
index 0000000000..477336847d
--- /dev/null
+++ b/keyboards/nightly_boards/alter_lite/keymaps/default/keymap.c
@@ -0,0 +1,33 @@
+/* Copyright 2020 DeskDaily
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_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_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),
+ MO(1), KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL
+ ),
+ [1] = LAYOUT(
+ QK_BOOT, _______, KC_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_BRIU, _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______ , _______, _______,
+ KC_BRID, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______,_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______, _______,
+ _______, KC_RGUI, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/nightly_boards/alter_lite/keymaps/via/keymap.c b/keyboards/nightly_boards/alter_lite/keymaps/via/keymap.c
new file mode 100644
index 0000000000..bc898dd3bc
--- /dev/null
+++ b/keyboards/nightly_boards/alter_lite/keymaps/via/keymap.c
@@ -0,0 +1,47 @@
+/* Copyright 2020 DeskDaily
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENTER,
+ 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),
+ MO(1), KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL
+ ),
+ [1] = LAYOUT(
+ QK_BOOT, 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_DEL,
+ KC_BRIU, 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_BRID, KC_TRNS, KC_LEFT, KC_DOWN, KC_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_END, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_RGUI, 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
+ ),
+ [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
+ ),
+};
diff --git a/keyboards/nightly_boards/alter_lite/keymaps/via/rules.mk b/keyboards/nightly_boards/alter_lite/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/nightly_boards/alter_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/nightly_boards/alter_lite/readme.md b/keyboards/nightly_boards/alter_lite/readme.md
new file mode 100644
index 0000000000..51ee69a620
--- /dev/null
+++ b/keyboards/nightly_boards/alter_lite/readme.md
@@ -0,0 +1,20 @@
+#DeskDaily Alter
+
+![Alter Lite](https://i.imgur.com/dYVwbD0.jpg)
+
+An Alice layout keyboard. This Lite version have no underglow
+
+* Keyboard Maintainer: [DeskDaily](https://github.com/DeskDaily)
+* Hardware Supported: atmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make nightly_boards/alter_lite:default
+
+Flashing example for this keyboard:
+
+ make nightly_boards/alter_lite:default:flash
+
+You can enter bootloader mode by pressing the physical reset button at the front of the pcb (near the right spacebar) or by holding the upper left key while plugging 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/nightly_boards/alter_lite/rules.mk b/keyboards/nightly_boards/alter_lite/rules.mk
new file mode 100644
index 0000000000..334299a9eb
--- /dev/null
+++ b/keyboards/nightly_boards/alter_lite/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
+MOUSEKEY_ENABLE = yes # 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 \ No newline at end of file
diff --git a/keyboards/nightly_boards/conde60/conde60.c b/keyboards/nightly_boards/conde60/conde60.c
new file mode 100644
index 0000000000..2f31ade1be
--- /dev/null
+++ b/keyboards/nightly_boards/conde60/conde60.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 DeskDaily
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "conde60.h"
diff --git a/keyboards/nightly_boards/conde60/conde60.h b/keyboards/nightly_boards/conde60/conde60.h
new file mode 100644
index 0000000000..e660946a77
--- /dev/null
+++ b/keyboards/nightly_boards/conde60/conde60.h
@@ -0,0 +1,42 @@
+/* Copyright 2022 DeskDaily
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, K0A, K0B, K0C, K0D, K1D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K2D, \
+ 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, \
+ K40, K41, K42, K44, K46, K47, 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, KC_NO, K44, KC_NO, K46, K47, KC_NO, K49, KC_NO, K4B, K4C, K4D }, \
+}
diff --git a/keyboards/nightly_boards/conde60/config.h b/keyboards/nightly_boards/conde60/config.h
new file mode 100644
index 0000000000..16a21f20ef
--- /dev/null
+++ b/keyboards/nightly_boards/conde60/config.h
@@ -0,0 +1,60 @@
+/*
+Copyright 2022 DeskDaily
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 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 { B1, B2, F0, F1, F4 }
+#define MATRIX_COL_PINS { B0, B3, B7, B6, C6, C7, F7, F6, F5, D4, D6, D7, B4, B5 }
+
+#define RGB_DI_PIN D5
+#ifdef RGB_DI_PIN
+#define RGBLED_NUM 12
+#define RGBLIGHT_ANIMATIONS
+
+#endif
+
+/* 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
+
+
diff --git a/keyboards/nightly_boards/conde60/info.json b/keyboards/nightly_boards/conde60/info.json
new file mode 100644
index 0000000000..97c10ca29c
--- /dev/null
+++ b/keyboards/nightly_boards/conde60/info.json
@@ -0,0 +1,86 @@
+{
+ "keyboard_name": "Conde60",
+ "manufacturer": "DeskDaily",
+ "url": "",
+ "maintainer": "DeskDaily",
+ "usb": {
+ "vid": "0xD812",
+ "pid": "0x0015",
+ "device_version": "0.0.1"
+ },
+ "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":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":2.25},
+ {"x":6.25, "y":4},
+ {"x":7.25, "y":4},
+ {"x":8.25, "y":4, "w":2.75},
+ {"x":11, "y":4, "w":1.5},
+ {"x":12.5, "y":4},
+ {"x":13.5, "y":4, "w":1.5}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/nightly_boards/conde60/keymaps/default/keymap.c b/keyboards/nightly_boards/conde60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..fd3e6882ab
--- /dev/null
+++ b/keyboards/nightly_boards/conde60/keymaps/default/keymap.c
@@ -0,0 +1,53 @@
+/* Copyright 2020 DeskDaily
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_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_LSFT, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [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
+ ),
+
+ [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
+ ),
+
+ [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
+ ),
+
+
+}; \ No newline at end of file
diff --git a/keyboards/nightly_boards/conde60/keymaps/via/keymap.c b/keyboards/nightly_boards/conde60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..fd3e6882ab
--- /dev/null
+++ b/keyboards/nightly_boards/conde60/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+/* Copyright 2020 DeskDaily
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_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_LSFT, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
+ [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
+ ),
+
+ [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
+ ),
+
+ [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
+ ),
+
+
+}; \ No newline at end of file
diff --git a/keyboards/nightly_boards/conde60/keymaps/via/rules.mk b/keyboards/nightly_boards/conde60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/nightly_boards/conde60/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/nightly_boards/conde60/readme.md b/keyboards/nightly_boards/conde60/readme.md
new file mode 100644
index 0000000000..5a260efc0b
--- /dev/null
+++ b/keyboards/nightly_boards/conde60/readme.md
@@ -0,0 +1,20 @@
+# DeskDaily Conde60
+
+![Conde60](https://i.imgur.com/5L7Cw44.png)
+
+A single layout 60% pcb with a Tsangan bottom row and split spacabars
+
+* Keyboard Maintainer: [DeskDaily](https://github.com/DeskDaily)
+* Hardware Supported: Atmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make nightly_boards/conde60:default
+
+Flashing example for this keyboard:
+
+ make nightly_boards/conde60:default:flash
+
+You can enter bootloader mode by pressing the physical reset button at the back of the pcb or by holding the escape key while plugging 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/nightly_boards/conde60/rules.mk b/keyboards/nightly_boards/conde60/rules.mk
new file mode 100644
index 0000000000..806f708f99
--- /dev/null
+++ b/keyboards/nightly_boards/conde60/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 # 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 # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/nightly_boards/n2/config.h b/keyboards/nightly_boards/n2/config.h
index e19b26e76b..a4f19c8a18 100644
--- a/keyboards/nightly_boards/n2/config.h
+++ b/keyboards/nightly_boards/n2/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0717
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Neil Brian Ramirez
-#define PRODUCT [n]2
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 2
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F1, C7 }
#define MATRIX_COL_PINS { F0, C6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nightly_boards/n2/info.json b/keyboards/nightly_boards/n2/info.json
index 5786436478..e5cd739223 100644
--- a/keyboards/nightly_boards/n2/info.json
+++ b/keyboards/nightly_boards/n2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "[n]2",
+ "manufacturer": "Neil Brian Ramirez",
"url": "",
"maintainer": "Neil Brian Ramirez",
+ "usb": {
+ "vid": "0x0717",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0}, {"x":0, "y":1}]
diff --git a/keyboards/nightly_boards/n40_o/config.h b/keyboards/nightly_boards/n40_o/config.h
index a5257cc494..4f2a5ff5a0 100644
--- a/keyboards/nightly_boards/n40_o/config.h
+++ b/keyboards/nightly_boards/n40_o/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xD812
-#define PRODUCT_ID 0x0009
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Neil Brian Ramirez
-#define PRODUCT [n]40-o
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 13
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6, F0, F1, D7, NO_PIN }
#define MATRIX_COL_PINS { B5, C7, D6, D4, B3, B2, B1, B0, D5, D3, D2, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nightly_boards/n40_o/info.json b/keyboards/nightly_boards/n40_o/info.json
index 6fb2a1dfa6..6f1748a7ab 100644
--- a/keyboards/nightly_boards/n40_o/info.json
+++ b/keyboards/nightly_boards/n40_o/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "[n]40-o",
+ "manufacturer": "Neil Brian Ramirez",
"url": "",
"maintainer": "Neil Brian Ramirez",
+ "usb": {
+ "vid": "0xD812",
+ "pid": "0x0009",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x13_encoders": {
"layout": [
diff --git a/keyboards/nightly_boards/n60_s/config.h b/keyboards/nightly_boards/n60_s/config.h
index 2f50f49273..d71fe7733e 100644
--- a/keyboards/nightly_boards/n60_s/config.h
+++ b/keyboards/nightly_boards/n60_s/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xD812
-#define PRODUCT_ID 0x0007
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Neil Brian Ramirez
-#define PRODUCT [n]60-S
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4, D7, D6, D0, E6, NO_PIN }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B0, B1, B2, B3, B5, B6, C6, C7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nightly_boards/n60_s/info.json b/keyboards/nightly_boards/n60_s/info.json
index 2551321544..473dd14122 100644
--- a/keyboards/nightly_boards/n60_s/info.json
+++ b/keyboards/nightly_boards/n60_s/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "[n]60-s",
+ "keyboard_name": "[n]60-S",
+ "manufacturer": "Neil Brian Ramirez",
"url": "",
"maintainer": "Neil Brian Ramirez",
+ "usb": {
+ "vid": "0xD812",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
diff --git a/keyboards/nightly_boards/n60_s/keymaps/ansi_encoder/keymap.c b/keyboards/nightly_boards/n60_s/keymaps/ansi_encoder/keymap.c
index 7d91fa1d72..9316b20c75 100644
--- a/keyboards/nightly_boards/n60_s/keymaps/ansi_encoder/keymap.c
+++ b/keyboards/nightly_boards/n60_s/keymaps/ansi_encoder/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, MO(1), KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RGUI, KC_RCTL
),
[1] = LAYOUT_60_ansi_split_bs_rshift_encoder(
- 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,
+ QK_BOOT, KC_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, 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_RIGHT,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_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/nightly_boards/n60_s/keymaps/tsangan_encoder/keymap.c b/keyboards/nightly_boards/n60_s/keymaps/tsangan_encoder/keymap.c
index 8cf3f84c0d..cc25ac42e7 100644
--- a/keyboards/nightly_boards/n60_s/keymaps/tsangan_encoder/keymap.c
+++ b/keyboards/nightly_boards/n60_s/keymaps/tsangan_encoder/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, MO(1), KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
),
[1] = LAYOUT_60_ansi_split_bs_rshift_tsangan_encoder(
- 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,
+ QK_BOOT, KC_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, 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_RIGHT,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_END, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/nightly_boards/n87/config.h b/keyboards/nightly_boards/n87/config.h
index 0bb8e62046..64b14b0207 100644
--- a/keyboards/nightly_boards/n87/config.h
+++ b/keyboards/nightly_boards/n87/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0717
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Neil Brian Ramirez
-#define PRODUCT [n]87
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, F1, F0, D7, B4, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, C7, C6, B6, B5, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nightly_boards/n87/info.json b/keyboards/nightly_boards/n87/info.json
index 7469ba8644..8eb020d29c 100644
--- a/keyboards/nightly_boards/n87/info.json
+++ b/keyboards/nightly_boards/n87/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "[n]87",
+ "manufacturer": "Neil Brian Ramirez",
"url": "",
"maintainer": "Neil Brian Ramirez",
+ "usb": {
+ "vid": "0x0717",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi_split_bs_rshift": {
"layout": [
diff --git a/keyboards/nightly_boards/n87/keymaps/symmetric_standard/keymap.c b/keyboards/nightly_boards/n87/keymaps/symmetric_standard/keymap.c
index c8b2da0f9e..a3527ac500 100644
--- a/keyboards/nightly_boards/n87/keymaps/symmetric_standard/keymap.c
+++ b/keyboards/nightly_boards/n87/keymaps/symmetric_standard/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, MO(1), KC_LALT, KC_SPC, KC_LALT, KC_LGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_tkl_ansi_split_bs_rshift_symmetric(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CLICKY_UP, CLICKY_RESET, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CLICKY_UP, CLICKY_RESET, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CLICKY_DOWN, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CLICKY_TOGGLE, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/nightly_boards/n9/config.h b/keyboards/nightly_boards/n9/config.h
index 153d02c245..98c05d887f 100644
--- a/keyboards/nightly_boards/n9/config.h
+++ b/keyboards/nightly_boards/n9/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xD812
-#define PRODUCT_ID 0x0012
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Neil Brian Ramirez
-#define PRODUCT [n]9
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, B1, B3 }
#define MATRIX_COL_PINS { F6, F7, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nightly_boards/n9/info.json b/keyboards/nightly_boards/n9/info.json
index 3cc73b4829..afaee7244c 100644
--- a/keyboards/nightly_boards/n9/info.json
+++ b/keyboards/nightly_boards/n9/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "[n]9",
+ "manufacturer": "Neil Brian Ramirez",
"url": "",
"maintainer": "Neil Brian Ramirez",
+ "usb": {
+ "vid": "0xD812",
+ "pid": "0x0012",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/nightly_boards/octopad/config.h b/keyboards/nightly_boards/octopad/config.h
index ee417644d7..a17eb502e1 100644
--- a/keyboards/nightly_boards/octopad/config.h
+++ b/keyboards/nightly_boards/octopad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xD812
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Neil Brian Ramirez
-#define PRODUCT Octopad
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 5
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B2, B3, NO_PIN }
#define MATRIX_COL_PINS { F1, F0, D0, D1, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nightly_boards/octopad/info.json b/keyboards/nightly_boards/octopad/info.json
index 0bc2cea2e6..c4668da903 100644
--- a/keyboards/nightly_boards/octopad/info.json
+++ b/keyboards/nightly_boards/octopad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Octopad",
+ "manufacturer": "Neil Brian Ramirez",
"url": "",
"maintainer": "Neil Brian Ramirez",
+ "usb": {
+ "vid": "0xD812",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/nightly_boards/paraluman/config.h b/keyboards/nightly_boards/paraluman/config.h
new file mode 100644
index 0000000000..7d3101d116
--- /dev/null
+++ b/keyboards/nightly_boards/paraluman/config.h
@@ -0,0 +1,52 @@
+/*
+Copyright 2020 DeskDaily
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 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 { D0, F7, B1, B0, E6 }
+#define MATRIX_COL_PINS { B2, F6, F5, F4, F1, F0, D4, D6, D7, B4, B5, B6, C6, C7 }
+
+/* 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
+
diff --git a/keyboards/nightly_boards/paraluman/info.json b/keyboards/nightly_boards/paraluman/info.json
new file mode 100644
index 0000000000..a71adb315f
--- /dev/null
+++ b/keyboards/nightly_boards/paraluman/info.json
@@ -0,0 +1,154 @@
+{
+ "keyboard_name": "Paraluman",
+ "manufacturer": "DeskDaily",
+ "url": "",
+ "maintainer": "DeskDaily",
+ "usb": {
+ "vid": "0xD812",
+ "pid": "0x0012",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "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_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":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}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/nightly_boards/paraluman/keymaps/default/keymap.c b/keyboards/nightly_boards/paraluman/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7f254287c0
--- /dev/null
+++ b/keyboards/nightly_boards/paraluman/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2020 DeskDaily
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_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_LCTL, MO(1), KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RGUI, KC_RCTL
+ ),
+ [1] = LAYOUT_60_ansi_split_bs_rshift(
+ QK_BOOT, KC_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, 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_RIGHT,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_END, KC_PGDN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/nightly_boards/paraluman/keymaps/tsangan/keymap.c b/keyboards/nightly_boards/paraluman/keymaps/tsangan/keymap.c
new file mode 100644
index 0000000000..f06e2ee93a
--- /dev/null
+++ b/keyboards/nightly_boards/paraluman/keymaps/tsangan/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2020 DeskDaily
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_60_ansi_split_bs_rshift_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_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, MO(1), KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
+ ),
+ [1] = LAYOUT_60_ansi_split_bs_rshift_tsangan(
+ QK_BOOT, KC_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, 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_RIGHT,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_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/nightly_boards/paraluman/keymaps/via/keymap.c b/keyboards/nightly_boards/paraluman/keymaps/via/keymap.c
new file mode 100644
index 0000000000..0de50911ad
--- /dev/null
+++ b/keyboards/nightly_boards/paraluman/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2020 DeskDaily
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_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_LSFT, KC_LSFT,
+ KC_LCTL, MO(1), KC_LALT, KC_SPC, KC_LALT, KC_APP, KC_RGUI, KC_LCTL
+ ),
+ [1] = LAYOUT_60_ansi_split_bs_rshift(
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, KC_F12, KC_DEL, 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, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,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_END, KC_PGDN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_60_ansi_split_bs_rshift(
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, KC_F12, KC_DEL, 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, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,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_END, KC_PGDN, 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(
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12, KC_F12, KC_DEL, 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, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,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_END, KC_PGDN, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/nightly_boards/paraluman/keymaps/via/rules.mk b/keyboards/nightly_boards/paraluman/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/nightly_boards/paraluman/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/nightly_boards/paraluman/paraluman.c b/keyboards/nightly_boards/paraluman/paraluman.c
new file mode 100644
index 0000000000..00769d9380
--- /dev/null
+++ b/keyboards/nightly_boards/paraluman/paraluman.c
@@ -0,0 +1,17 @@
+/* Copyright 2020 DeskDaily
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "paraluman.h"
diff --git a/keyboards/nightly_boards/paraluman/paraluman.h b/keyboards/nightly_boards/paraluman/paraluman.h
new file mode 100644
index 0000000000..2f6a40fb83
--- /dev/null
+++ b/keyboards/nightly_boards/paraluman/paraluman.h
@@ -0,0 +1,55 @@
+/* Copyright 2020 DeskDaily
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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_60_ansi_split_bs_rshift( \
+ 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, K2D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K42, K43, 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, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { K40, KC_NO, K42, K43, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, K4A, K4B, K4C, K4D } \
+}
+
+#define LAYOUT_60_ansi_split_bs_rshift_tsangan( \
+ 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, K2D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
+ K40, K42, 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, KC_NO, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
+ { K40, KC_NO, K42, K43, KC_NO, KC_NO, KC_NO, K47, KC_NO, KC_NO, KC_NO, K4B, K4C, K4D } \
+}
diff --git a/keyboards/nightly_boards/paraluman/readme.md b/keyboards/nightly_boards/paraluman/readme.md
new file mode 100644
index 0000000000..571c77b1cb
--- /dev/null
+++ b/keyboards/nightly_boards/paraluman/readme.md
@@ -0,0 +1,20 @@
+# DeskDaily Paraluman
+
+![Paraluman](https://i.imgur.com/iBYnjLD.jpg)
+
+A 60% pcb for the Paraluman keyboard case
+
+* Keyboard Maintainer: [DeskDaily](https://github.com/DeskDaily)
+* Hardware Supported: Atmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make nightly_boards/paraluman:default
+
+Flashing example for this keyboard:
+
+ make nightly_boards/paraluman:default:flash
+
+You can enter bootloader mode by pressing the physical reset button at the back of the pcb or by holding the escape key while plugging 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/nightly_boards/paraluman/rules.mk b/keyboards/nightly_boards/paraluman/rules.mk
new file mode 100644
index 0000000000..3e6c2b2ea3
--- /dev/null
+++ b/keyboards/nightly_boards/paraluman/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 # 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 # USB Nkey Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/nightly_boards/ph_arisu/config.h b/keyboards/nightly_boards/ph_arisu/config.h
index 57df486e72..1173bca779 100644
--- a/keyboards/nightly_boards/ph_arisu/config.h
+++ b/keyboards/nightly_boards/ph_arisu/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6172
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER PH
-#define PRODUCT Arisu
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D3, D2, D1, D0, D4, C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nightly_boards/ph_arisu/info.json b/keyboards/nightly_boards/ph_arisu/info.json
index fc2f8e9269..ba1e981144 100644
--- a/keyboards/nightly_boards/ph_arisu/info.json
+++ b/keyboards/nightly_boards/ph_arisu/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "PH Arisu",
+ "keyboard_name": "Arisu",
+ "manufacturer": "PH",
"url": "https://github.com/FateNozomi/arisu-pcb",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x6172",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"0,0", "x":0, "y":0}, {"label":"1,0", "x":1, "y":0}, {"label":"0,1", "x":2, "y":0}, {"label":"1,1", "x":3, "y":0}, {"label":"0,2", "x":4, "y":0}, {"label":"1,2", "x":5, "y":0}, {"label":"0,3", "x":6, "y":0}, {"label":"1,3", "x":8.5, "y":0}, {"label":"0,4", "x":9.5, "y":0}, {"label":"1,4", "x":10.5, "y":0}, {"label":"0,5", "x":11.5, "y":0}, {"label":"1,5", "x":12.5, "y":0}, {"label":"0,6", "x":13.5, "y":0}, {"label":"1,6", "x":14.5, "y":0}, {"label":"0,7", "x":15.5, "y":0}, {"label":"2,7", "x":16.8, "y":0}, {"label":"2,0", "x":0, "y":1, "w":1.5}, {"label":"3,0", "x":1.5, "y":1}, {"label":"2,1", "x":2.5, "y":1}, {"label":"3,1", "x":3.5, "y":1}, {"label":"2,2", "x":4.5, "y":1}, {"label":"3,2", "x":5.5, "y":1}, {"label":"2,3", "x":8, "y":1}, {"label":"3,3", "x":9, "y":1}, {"label":"2,4", "x":10, "y":1}, {"label":"3,4", "x":11, "y":1}, {"label":"2,5", "x":12, "y":1}, {"label":"3,5", "x":13, "y":1}, {"label":"2,6", "x":14, "y":1}, {"label":"3,6", "x":15, "y":1, "w":1.5}, {"label":"4,7", "x":16.8, "y":1}, {"label":"4,0", "x":0, "y":2, "w":1.75}, {"label":"5,0", "x":1.75, "y":2}, {"label":"4,1", "x":2.75, "y":2}, {"label":"5,1", "x":3.75, "y":2}, {"label":"4,2", "x":4.75, "y":2}, {"label":"5,2", "x":5.75, "y":2}, {"label":"4,3", "x":8.25, "y":2}, {"label":"5,3", "x":9.25, "y":2}, {"label":"4,4", "x":10.25, "y":2}, {"label":"5,4", "x":11.25, "y":2}, {"label":"4,5", "x":12.25, "y":2}, {"label":"5,5", "x":13.25, "y":2}, {"label":"4,6", "x":14.25, "y":2, "w":2.25}, {"label":"6,7", "x":16.8, "y":2}, {"label":"6,0", "x":0, "y":3, "w":2.25}, {"label":"7,0", "x":2.25, "y":3}, {"label":"6,1", "x":3.25, "y":3}, {"label":"7,1", "x":4.25, "y":3}, {"label":"6,2", "x":5.25, "y":3}, {"label":"7,2", "x":6.25, "y":3}, {"label":"6,3", "x":8.75, "y":3}, {"label":"7,3", "x":9.75, "y":3}, {"label":"6,4", "x":10.75, "y":3}, {"label":"7,4", "x":11.75, "y":3}, {"label":"6,5", "x":12.75, "y":3}, {"label":"7,5", "x":13.75, "y":3, "w":1.75}, {"label":"7,6", "x":15.75, "y":3.25}, {"label":"8,0", "x":0, "y":4, "w":1.5}, {"label":"8,1", "x":2.75, "y":4, "w":1.5}, {"label":"8,2", "x":4.25, "y":4, "w":2}, {"label":"9,2", "x":6.25, "y":4, "w":1.25}, {"label":"9,3", "x":8.25, "y":4, "w":2.75}, {"label":"9,4", "x":11, "y":4, "w":1.5}, {"label":"8,6", "x":14.75, "y":4.25}, {"label":"9,6", "x":15.75, "y":4.25}, {"label":"8,7", "x":16.75, "y":4.25}]
diff --git a/keyboards/nightmare/config.h b/keyboards/nightmare/config.h
index ac4fe163e6..706cdbbf37 100644
--- a/keyboards/nightmare/config.h
+++ b/keyboards/nightmare/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x434B // "CK"
-#define PRODUCT_ID 0x4E49 // "NI"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER cfbender
-#define PRODUCT nightmare
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
#define MATRIX_COL_PINS { B4, B5, D3, D2, D1, D0, F4, F5, F6, F7, B1, B3, B2, B6}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nightmare/info.json b/keyboards/nightmare/info.json
index 8e79676cdb..858bb5d8ab 100644
--- a/keyboards/nightmare/info.json
+++ b/keyboards/nightmare/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Nightmare",
+ "manufacturer": "cfbender",
"url": "https://keyhive.xyz/shop/nightmare-pcb-and-case",
"maintainer": "cfbender",
+ "usb": {
+ "vid": "0x434B",
+ "pid": "0x4E49",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/nightmare/keymaps/brandonschlack/keymap.c b/keyboards/nightmare/keymaps/brandonschlack/keymap.c
index 16da418453..0fa93ac357 100644
--- a/keyboards/nightmare/keymaps/brandonschlack/keymap.c
+++ b/keyboards/nightmare/keymaps/brandonschlack/keymap.c
@@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └───┴┴┴┴┴┴┴┴───┴────┴───────────────────────────┴────┴───┴┴┴┴┴┘
*/
[_ADJUST] = LAYOUT_default( \
- TG_BASE, QM_MAKE, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ TG_BASE, QM_MAKE, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
TG_REDR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
TG_NAV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
TG_MOUS, _______, _______, _______, _______, _______ \
diff --git a/keyboards/nimrod/config.h b/keyboards/nimrod/config.h
index 4faa3f4e28..8b40ba11f6 100644
--- a/keyboards/nimrod/config.h
+++ b/keyboards/nimrod/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6274
-#define PRODUCT_ID 0x720D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER breadtamer
-#define PRODUCT nimrod
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { F5, B6, D7, C6 }
#define MATRIX_COL_PINS { D1, F4, B5, B4, E6, F6, F7, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nimrod/info.json b/keyboards/nimrod/info.json
index 340e65ff3c..df08391b66 100644
--- a/keyboards/nimrod/info.json
+++ b/keyboards/nimrod/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Nimrod",
+ "manufacturer": "Breadtamer",
"url": "http://www.keyboard-layout-editor.com/#/gists/5a6b4ee1ca9738c4ed90fe95ef35fdf6",
"maintainer": "Breadtamer",
+ "usb": {
+ "vid": "0x6274",
+ "pid": "0x720D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x10": {
"layout": [
diff --git a/keyboards/nix_studio/n60_a/config.h b/keyboards/nix_studio/n60_a/config.h
index dea1c3587d..12d8d6b5ee 100644
--- a/keyboards/nix_studio/n60_a/config.h
+++ b/keyboards/nix_studio/n60_a/config.h
@@ -17,14 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6E78
-#define PRODUCT_ID 0x3630
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nix Studio
-#define PRODUCT N60A
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/nix_studio/n60_a/info.json b/keyboards/nix_studio/n60_a/info.json
index 5e26857ebe..8d83b42065 100644
--- a/keyboards/nix_studio/n60_a/info.json
+++ b/keyboards/nix_studio/n60_a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Nix_N60A",
+ "keyboard_name": "N60A",
+ "manufacturer": "Nix Studio",
"url": "",
"maintainer": "Nix Studio",
+ "usb": {
+ "vid": "0x6E78",
+ "pid": "0x3630",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/nix_studio/n60_a/keymaps/default/keymap.c b/keyboards/nix_studio/n60_a/keymaps/default/keymap.c
index 7c6e9cbcfc..e49120a5c0 100644
--- a/keyboards/nix_studio/n60_a/keymaps/default/keymap.c
+++ b/keyboards/nix_studio/n60_a/keymaps/default/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT(
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_TILD, KC_DEL,
- _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/nix_studio/n60_a/keymaps/via/keymap.c b/keyboards/nix_studio/n60_a/keymaps/via/keymap.c
index f31f1c9135..166fc4c3ed 100644
--- a/keyboards/nix_studio/n60_a/keymaps/via/keymap.c
+++ b/keyboards/nix_studio/n60_a/keymaps/via/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT(
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_TILD, KC_DEL,
- _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/nix_studio/n60_a/readme.md b/keyboards/nix_studio/n60_a/readme.md
index d16d269499..5a3beb0ee8 100644
--- a/keyboards/nix_studio/n60_a/readme.md
+++ b/keyboards/nix_studio/n60_a/readme.md
@@ -16,6 +16,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/nix_studio/oxalys80/config.h b/keyboards/nix_studio/oxalys80/config.h
index acd39ad528..8a9403c9a5 100644
--- a/keyboards/nix_studio/oxalys80/config.h
+++ b/keyboards/nix_studio/oxalys80/config.h
@@ -18,14 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6E78
-#define PRODUCT_ID 0x3830
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nix Studio
-#define PRODUCT OXALYS80
-
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -42,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, B0, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nix_studio/oxalys80/info.json b/keyboards/nix_studio/oxalys80/info.json
index d2fd765970..3b8fff7721 100644
--- a/keyboards/nix_studio/oxalys80/info.json
+++ b/keyboards/nix_studio/oxalys80/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "oxalys80",
+ "keyboard_name": "OXALYS80",
+ "manufacturer": "Nix Studio",
"url": "",
"maintainer": "Nix Studio",
+ "usb": {
+ "vid": "0x6E78",
+ "pid": "0x3830",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/nopunin10did/jabberwocky/config.h b/keyboards/nopunin10did/jabberwocky/config.h
index 84c3cec451..cb4f238852 100644
--- a/keyboards/nopunin10did/jabberwocky/config.h
+++ b/keyboards/nopunin10did/jabberwocky/config.h
@@ -18,12 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E50 // "NP"
-#define PRODUCT_ID 0x4A57 // "JW"
-#define DEVICE_VER 0x0001
-#define PRODUCT Jabberwocky
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 10
@@ -31,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { E6, B4, B5, B7, D5, C7, F1, F0, B1, B3, B2, B6 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, D7, C6, D4, D0, D2, D3 }
-#define UNUSED_PINS
/* Indicator LEDs */
#define LED_NUM_LOCK_PIN D1
diff --git a/keyboards/nopunin10did/jabberwocky/info.json b/keyboards/nopunin10did/jabberwocky/info.json
index ad00dd4524..7744716a13 100644
--- a/keyboards/nopunin10did/jabberwocky/info.json
+++ b/keyboards/nopunin10did/jabberwocky/info.json
@@ -1,8 +1,13 @@
{
"keyboard_name": "Jabberwocky",
+ "manufacturer": "NoPunIn10Did",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/railroad",
"maintainer": "NoPunIn10Did",
- "manufacturer": "NoPunIn10Did",
+ "usb": {
+ "vid": "0x4E50",
+ "pid": "0x4A57",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_rh_any": {
"layout": [
diff --git a/keyboards/nopunin10did/jabberwocky/keymaps/nopunin10did/keymap.c b/keyboards/nopunin10did/jabberwocky/keymaps/nopunin10did/keymap.c
index 0a177dec16..0ce0ba6156 100644
--- a/keyboards/nopunin10did/jabberwocky/keymaps/nopunin10did/keymap.c
+++ b/keyboards/nopunin10did/jabberwocky/keymaps/nopunin10did/keymap.c
@@ -40,9 +40,9 @@ KC_LSFT,KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,LSA_DEL,FN_CALC,KC_N ,
[1] = LAYOUT_rh_any(
-RESET ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_F13 ,KC_F14 ,KC_F15 ,KC_F16 ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+QK_BOOT,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_F13 ,KC_F14 ,KC_F15 ,KC_F16 ,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_NLCK,XXXXXXX,XXXXXXX,XXXXXXX,
- XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,RESET ,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_JYEN, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
+ XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,QK_BOOT,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_JYEN, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
KC_CAPS,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,KC_SLCK,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,
LSHNUBS,LSHNUBS,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_BRK ,CTALDEL,_______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,RSHF_RO,RSHF_RO,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,_______,
_______,_______, _______,_______,XXXXXXX, _______, _______, _______,_______,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,KC_PCMM,_______)
diff --git a/keyboards/nopunin10did/kastenwagen1840/config.h b/keyboards/nopunin10did/kastenwagen1840/config.h
index a9926aded4..714bed1b0e 100644
--- a/keyboards/nopunin10did/kastenwagen1840/config.h
+++ b/keyboards/nopunin10did/kastenwagen1840/config.h
@@ -18,13 +18,6 @@
#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
@@ -32,7 +25,6 @@
/* 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
diff --git a/keyboards/nopunin10did/kastenwagen1840/info.json b/keyboards/nopunin10did/kastenwagen1840/info.json
index fabfd31aea..1ca9e7a5a5 100644
--- a/keyboards/nopunin10did/kastenwagen1840/info.json
+++ b/keyboards/nopunin10did/kastenwagen1840/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Kastenwagen 1840",
+ "manufacturer": "NoPunIn10Did",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/kastenwagen1840",
"maintainer": "NoPunIn10Did",
+ "usb": {
+ "vid": "0x4E50",
+ "pid": "0x4B57",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/nopunin10did/kastenwagen48/config.h b/keyboards/nopunin10did/kastenwagen48/config.h
index f88a630cfd..1ced831ad9 100644
--- a/keyboards/nopunin10did/kastenwagen48/config.h
+++ b/keyboards/nopunin10did/kastenwagen48/config.h
@@ -18,13 +18,6 @@
#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
@@ -32,7 +25,6 @@
/* 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
diff --git a/keyboards/nopunin10did/kastenwagen48/info.json b/keyboards/nopunin10did/kastenwagen48/info.json
index 12d375863b..d2acb89eff 100644
--- a/keyboards/nopunin10did/kastenwagen48/info.json
+++ b/keyboards/nopunin10did/kastenwagen48/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Kastenwagen 48",
+ "manufacturer": "NoPunIn10Did",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/kastenwagen48",
"maintainer": "NoPunIn10Did",
+ "usb": {
+ "vid": "0x4E50",
+ "pid": "0x4B30",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/keymap.c b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/keymap.c
index 29c12b0419..d364a0b2bf 100644
--- a/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/keymap.c
+++ b/keyboards/nopunin10did/kastenwagen48/keymaps/jonavin/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______ ,_______ ,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_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 , QK_BOOT,
_______ ,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
diff --git a/keyboards/nopunin10did/railroad/rev0/config.h b/keyboards/nopunin10did/railroad/rev0/config.h
index 8c6b075bf9..b092687229 100644
--- a/keyboards/nopunin10did/railroad/rev0/config.h
+++ b/keyboards/nopunin10did/railroad/rev0/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E50 // "NP"
-#define PRODUCT_ID 0x9111
-#define DEVICE_VER 0x0001
-#define MANUFACTURER NoPunIn10Did
-#define PRODUCT The Railroad
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 11
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D2, D3, D5, C6, C7, F6, F5, F4, F1, F0 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, B7, D4, D6, D7, B4, B5, B6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/nopunin10did/railroad/rev0/info.json b/keyboards/nopunin10did/railroad/rev0/info.json
index 3339b3f321..ef82004a79 100644
--- a/keyboards/nopunin10did/railroad/rev0/info.json
+++ b/keyboards/nopunin10did/railroad/rev0/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "The Railroad",
+ "manufacturer": "NoPunIn10Did",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/nopunin10did/railroad",
"maintainer": "NoPunIn10Did",
+ "usb": {
+ "vid": "0x4E50",
+ "pid": "0x9111",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/novelkeys/nk1/config.h b/keyboards/novelkeys/nk1/config.h
index 122df2e6da..1e86e1ec91 100644
--- a/keyboards/novelkeys/nk1/config.h
+++ b/keyboards/novelkeys/nk1/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4E4D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT NK1
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 1
@@ -85,8 +78,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_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
#endif
/* There is only 1 Button so limiting VIA to 1 layer */
diff --git a/keyboards/novelkeys/nk1/info.json b/keyboards/novelkeys/nk1/info.json
index 43b1719e94..79be14a48e 100755
--- a/keyboards/novelkeys/nk1/info.json
+++ b/keyboards/novelkeys/nk1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NK1",
+ "manufacturer": "Yiancar-Designs",
"url": "www.yiancar-designs.com",
"maintainer": "yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4E4D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_1x1": {
"layout": [{"x": 0, "y": 0}]
diff --git a/keyboards/novelkeys/nk20/config.h b/keyboards/novelkeys/nk20/config.h
new file mode 100644
index 0000000000..7b56d50c6f
--- /dev/null
+++ b/keyboards/novelkeys/nk20/config.h
@@ -0,0 +1,131 @@
+/*
+Copyright 2022 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 4
+
+#define MATRIX_ROW_PINS { B12, A5, A3, A2, A1, A0 }
+#define MATRIX_COL_PINS { B13, B14, B15, A4 }
+
+/* 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 A7
+#define WS2812_PWM_DRIVER PWMD3
+#define WS2812_PWM_CHANNEL 2
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM3
+#define WS2812_DMA_CHANNEL 3
+
+#define RGBLED_NUM 20
+#define DRIVER_LED_TOTAL 20
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 210
+#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
diff --git a/keyboards/novelkeys/nk20/halconf.h b/keyboards/novelkeys/nk20/halconf.h
new file mode 100644
index 0000000000..ce14bc0c41
--- /dev/null
+++ b/keyboards/novelkeys/nk20/halconf.h
@@ -0,0 +1,21 @@
+/* Copyright 2022 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 HAL_USE_PWM TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/novelkeys/nk20/info.json b/keyboards/novelkeys/nk20/info.json
new file mode 100644
index 0000000000..d6a714ea0b
--- /dev/null
+++ b/keyboards/novelkeys/nk20/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "NK20",
+ "manufacturer": "Yiancar-Designs",
+ "url": "www.yiancar-designs.com",
+ "maintainer": "Yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4E4E",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "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":3, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2, "h":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4, "h":2}, {"x":0, "y":5, "w":2}, {"x":2, "y":5}]
+ }
+ }
+}
diff --git a/keyboards/novelkeys/nk20/keymaps/default/keymap.c b/keyboards/novelkeys/nk20/keymaps/default/keymap.c
new file mode 100644
index 0000000000..4bd3c48da1
--- /dev/null
+++ b/keyboards/novelkeys/nk20/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2022 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_all( /* Base */
+ KC_VOLD, KC_VOLU, KC_MUTE,
+ MO(1), KC_PSLS, KC_PAST, KC_PMNS,
+ 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),
+
+[1] = LAYOUT_all( /* FN */
+ KC_NLCK, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_SPD, RGB_SPI, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_HUD, KC_TRNS,
+ RGB_SAD, RGB_SAI, RGB_HUI,
+ RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS)
+};
diff --git a/keyboards/novelkeys/nk20/keymaps/default/readme.md b/keyboards/novelkeys/nk20/keymaps/default/readme.md
new file mode 100644
index 0000000000..a0e56fb99e
--- /dev/null
+++ b/keyboards/novelkeys/nk20/keymaps/default/readme.md
@@ -0,0 +1,9 @@
+# The default keymap for NK20
+
+![Layer 0](https://i.imgur.com/ppJr9SO.png)
+
+Fn Layer:
+
+![Layer 1](https://i.imgur.com/wtO3GJ5.png)
+
+Default layer is normal Numpad.
diff --git a/keyboards/novelkeys/nk20/keymaps/via/keymap.c b/keyboards/novelkeys/nk20/keymaps/via/keymap.c
new file mode 100644
index 0000000000..e647dad016
--- /dev/null
+++ b/keyboards/novelkeys/nk20/keymaps/via/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2022 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_all( /* Base */
+ KC_VOLD, KC_VOLU, KC_MUTE,
+ MO(1), KC_PSLS, KC_PAST, KC_PMNS,
+ 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),
+
+[1] = LAYOUT_all( /* FN */
+ KC_NLCK, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_SPD, RGB_SPI, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_HUD, KC_TRNS,
+ RGB_SAD, RGB_SAI, RGB_HUI,
+ RGB_VAD, RGB_VAI, 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),
+
+[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)
+};
diff --git a/keyboards/novelkeys/nk20/keymaps/via/readme.md b/keyboards/novelkeys/nk20/keymaps/via/readme.md
new file mode 100644
index 0000000000..112a3032ea
--- /dev/null
+++ b/keyboards/novelkeys/nk20/keymaps/via/readme.md
@@ -0,0 +1,9 @@
+# The default VIA keymap for NK20. VIA support enabled.
+
+![Layer 0](https://i.imgur.com/ppJr9SO.png)
+
+Fn Layer:
+
+![Layer 1](https://i.imgur.com/wtO3GJ5.png)
+
+Default layer is normal Numpad
diff --git a/keyboards/novelkeys/nk20/keymaps/via/rules.mk b/keyboards/novelkeys/nk20/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/novelkeys/nk20/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/novelkeys/nk20/mcuconf.h b/keyboards/novelkeys/nk20/mcuconf.h
new file mode 100644
index 0000000000..7cf6a48904
--- /dev/null
+++ b/keyboards/novelkeys/nk20/mcuconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2022 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_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
diff --git a/keyboards/novelkeys/nk20/nk20.c b/keyboards/novelkeys/nk20/nk20.c
new file mode 100644
index 0000000000..207e2277da
--- /dev/null
+++ b/keyboards/novelkeys/nk20/nk20.c
@@ -0,0 +1,40 @@
+/* Copyright 2022 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 "nk20.h"
+
+#ifdef RGB_MATRIX_ENABLE
+// clang-format off
+led_config_t g_led_config = { {
+ { 0, 1, 2, NO_LED },
+ { 6, 5, 4, 3 },
+ { 7, 8, 9, 10 },
+ { 13, 12, 11, NO_LED },
+ { 14, 15, 16, 17 },
+ { 19, NO_LED, 18, NO_LED },
+}, {
+ { 0,0 }, { 75,0 }, {149,0 }, {224,15 }, {149,15 }, { 75,15 }, { 0,15 }, { 0,27 }, { 75,27 }, {149,27 },
+ {224,34 }, {149,40 }, { 75,40 }, { 0,40 }, { 0,52 }, { 75,52 }, {149,52 }, {224,58 }, {149,64 }, { 37,64 }
+}, {
+ 1, 1, 1,
+ 1, 1, 1, 1,
+ 4, 4, 4, 1,
+ 4, 4, 4,
+ 4, 4, 4, 1,
+ 4, 4
+} };
+// clang-format on
+#endif
diff --git a/keyboards/novelkeys/nk20/nk20.h b/keyboards/novelkeys/nk20/nk20.h
new file mode 100644
index 0000000000..62aa0e69d3
--- /dev/null
+++ b/keyboards/novelkeys/nk20/nk20.h
@@ -0,0 +1,38 @@
+/* Copyright 2022 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_all( \
+ K00, K01, K02, \
+ K10, K11, K12, K13, \
+ K20, K21, K22, K23, \
+ K30, K31, K32, \
+ K40, K41, K42, K43, \
+ K50, K52 \
+) { \
+ { K00, K01, K02, XXX }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, K23 }, \
+ { K30, K31, K32, XXX }, \
+ { K40, K41, K42, K43 }, \
+ { K50, XXX, K52, XXX }, \
+}
diff --git a/keyboards/novelkeys/nk20/readme.md b/keyboards/novelkeys/nk20/readme.md
new file mode 100644
index 0000000000..7eb04b1359
--- /dev/null
+++ b/keyboards/novelkeys/nk20/readme.md
@@ -0,0 +1,32 @@
+# NK20
+
+This is a standard fixed layout Numpad PCB. It supports VIA and full per-key RGB.
+
+* Keyboard Maintainer: [Yiancar](https://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
+* Hardware Supported: A Numpad keyboard with STM32F072CB or APM compatible
+* Hardware Availability: https://novelkeys.com/
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make novelkeys/nk20: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 novelkeys/nk20:<keymap>:dfu-util`)
diff --git a/keyboards/novelkeys/nk20/rules.mk b/keyboards/novelkeys/nk20/rules.mk
new file mode 100644
index 0000000000..230cc1ec14
--- /dev/null
+++ b/keyboards/novelkeys/nk20/rules.mk
@@ -0,0 +1,29 @@
+# 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
+RGB_MATRIX_ENABLE = yes # Enable Per-key RGB
+RGB_MATRIX_DRIVER = WS2812 # Per-key RGB Drive
+WS2812_DRIVER = pwm # Per-key RGB MCU Driver
diff --git a/keyboards/novelkeys/nk65/config.h b/keyboards/novelkeys/nk65/config.h
index 3268e8ebf4..df64bbe83e 100755
--- a/keyboards/novelkeys/nk65/config.h
+++ b/keyboards/novelkeys/nk65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4E4B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT NK65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/novelkeys/nk65/info.json b/keyboards/novelkeys/nk65/info.json
index 3c2b438c2b..77adcdbc5d 100755
--- a/keyboards/novelkeys/nk65/info.json
+++ b/keyboards/novelkeys/nk65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NK65",
+ "manufacturer": "Yiancar-Designs",
"url": "",
"maintainer": "yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4E4B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_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":"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":"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":"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":"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":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
diff --git a/keyboards/novelkeys/nk65/keymaps/madhatter/keymap.c b/keyboards/novelkeys/nk65/keymaps/madhatter/keymap.c
index e5e0fea461..093d929699 100755
--- a/keyboards/novelkeys/nk65/keymaps/madhatter/keymap.c
+++ b/keyboards/novelkeys/nk65/keymaps/madhatter/keymap.c
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FNMS] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS,\
AG_TOGG, 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),
diff --git a/keyboards/novelkeys/nk65b/config.h b/keyboards/novelkeys/nk65b/config.h
new file mode 100755
index 0000000000..45603267a1
--- /dev/null
+++ b/keyboards/novelkeys/nk65b/config.h
@@ -0,0 +1,135 @@
+/*
+Copyright 2022 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_ROW_PINS { A0, A1, A2, B11, B6 }
+#define MATRIX_COL_PINS { A3, A4, A5, A6, A7, B0, B1, B2, B10, B12, B13, B14, B15, A8, A9 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Indicator LEDs */
+#define LED_CAPS_LOCK_PIN A14
+#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 0
+
+/* RGB options */
+
+#define RGB_DI_PIN B4
+#define WS2812_PWM_DRIVER PWMD3
+#define WS2812_PWM_CHANNEL 1
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM3
+#define WS2812_DMA_CHANNEL 3
+
+#define RGBLED_NUM 68
+#define DRIVER_LED_TOTAL 68
+#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
diff --git a/keyboards/novelkeys/nk65b/halconf.h b/keyboards/novelkeys/nk65b/halconf.h
new file mode 100644
index 0000000000..ce14bc0c41
--- /dev/null
+++ b/keyboards/novelkeys/nk65b/halconf.h
@@ -0,0 +1,21 @@
+/* Copyright 2022 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 HAL_USE_PWM TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/novelkeys/nk65b/info.json b/keyboards/novelkeys/nk65b/info.json
new file mode 100755
index 0000000000..8868b78531
--- /dev/null
+++ b/keyboards/novelkeys/nk65b/info.json
@@ -0,0 +1,17 @@
+{
+ "keyboard_name": "NK65B",
+ "manufacturer": "Yiancar-Designs",
+ "url": "www.yiancar-designs.com",
+ "url": "",
+ "maintainer": "Yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4E4F",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_65_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":"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":"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":"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":"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":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/novelkeys/nk65b/keymaps/default/keymap.c b/keyboards/novelkeys/nk65b/keymaps/default/keymap.c
new file mode 100755
index 0000000000..420db9503c
--- /dev/null
+++ b/keyboards/novelkeys/nk65b/keymaps/default/keymap.c
@@ -0,0 +1,32 @@
+/* Copyright 2022 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_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, 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_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, 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/novelkeys/nk65b/keymaps/default/readme.md b/keyboards/novelkeys/nk65b/keymaps/default/readme.md
new file mode 100755
index 0000000000..7cf0885d6e
--- /dev/null
+++ b/keyboards/novelkeys/nk65b/keymaps/default/readme.md
@@ -0,0 +1,7 @@
+# The default keymap for NK65. VIA support disabled.
+
+![Layer 1](https://i.imgur.com/1UwdR5q.png)
+
+![Layer 2](https://i.imgur.com/dRe7dfG.png)
+
+Default layer is normal ANSI 65%
diff --git a/keyboards/novelkeys/nk65b/keymaps/via/keymap.c b/keyboards/novelkeys/nk65b/keymaps/via/keymap.c
new file mode 100755
index 0000000000..39776b421f
--- /dev/null
+++ b/keyboards/novelkeys/nk65b/keymaps/via/keymap.c
@@ -0,0 +1,46 @@
+/* Copyright 2022 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_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, 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_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, 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),
+};
diff --git a/keyboards/novelkeys/nk65b/keymaps/via/readme.md b/keyboards/novelkeys/nk65b/keymaps/via/readme.md
new file mode 100755
index 0000000000..14fe08420f
--- /dev/null
+++ b/keyboards/novelkeys/nk65b/keymaps/via/readme.md
@@ -0,0 +1,7 @@
+# The default keymap for NK65. VIA support enabled.
+
+![Layer 1](https://i.imgur.com/1UwdR5q.png)
+
+![Layer 2](https://i.imgur.com/dRe7dfG.png)
+
+Default layer is normal ANSI 65%
diff --git a/keyboards/novelkeys/nk65b/keymaps/via/rules.mk b/keyboards/novelkeys/nk65b/keymaps/via/rules.mk
new file mode 100755
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/novelkeys/nk65b/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/novelkeys/nk65b/mcuconf.h b/keyboards/novelkeys/nk65b/mcuconf.h
new file mode 100644
index 0000000000..7cf6a48904
--- /dev/null
+++ b/keyboards/novelkeys/nk65b/mcuconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2022 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_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
diff --git a/keyboards/novelkeys/nk65b/nk65b.c b/keyboards/novelkeys/nk65b/nk65b.c
new file mode 100755
index 0000000000..f4ed25c2d1
--- /dev/null
+++ b/keyboards/novelkeys/nk65b/nk65b.c
@@ -0,0 +1,54 @@
+/* Copyright 2022 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 "nk65b.h"
+
+void led_init_ports(void) {
+ // Set our LED pins as open drain outputs
+ palSetLineMode(LED_CAPS_LOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
+ palSetLineMode(A15, PAL_MODE_OUTPUT_OPENDRAIN);
+ palSetLineMode(B3, PAL_MODE_OUTPUT_OPENDRAIN);
+}
+
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ writePin(A15, !layer_state_cmp(state, 1));
+ writePin(B3, !layer_state_cmp(state, 2));
+ return layer_state_set_user(state);
+}
+
+#ifdef RGB_MATRIX_ENABLE
+// clang-format off
+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, NO_LED, 15 },
+ { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 16, 43 },
+ { 57, NO_LED, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44 },
+ { 58, 59, 60, NO_LED, NO_LED, NO_LED, 61, NO_LED, NO_LED, 61, 62, 63, 64, 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 },
+ {225,0 }, {225,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 }, {225,32 }, {225,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 }, {150,64 }, {165,64 }, {180,64 }, {195,64 }, {210,64 }, {225,64 }
+}, {
+ 1, 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,
+ 1, 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, 1,
+ 1, 1, 1, 4, 1, 1, 1, 1, 1, 1
+} };
+// clang-format on
+#endif
diff --git a/keyboards/novelkeys/nk65b/nk65b.h b/keyboards/novelkeys/nk65b/nk65b.h
new file mode 100755
index 0000000000..9fd75c26ab
--- /dev/null
+++ b/keyboards/novelkeys/nk65b/nk65b.h
@@ -0,0 +1,36 @@
+/* Copyright 2022 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_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, K2C, 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, 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, XXX, 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/novelkeys/nk65b/readme.md b/keyboards/novelkeys/nk65b/readme.md
new file mode 100755
index 0000000000..d7cefc93c8
--- /dev/null
+++ b/keyboards/novelkeys/nk65b/readme.md
@@ -0,0 +1,34 @@
+# NK65B
+
+This is a standard fixed layout 65% PCB. It supports VIA and full per-key RGB. This is revision B.
+
+![NK65](https://i.imgur.com/EXNbVpL.jpg)
+
+Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
+Hardware Supported: A 65% keyboard with STM32F072CB or APM compatible
+Hardware Availability: https://novelkeys.xyz/
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make novelkeys/nk65b: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 nk65b:<keymap>:flash`)
diff --git a/keyboards/novelkeys/nk65b/rules.mk b/keyboards/novelkeys/nk65b/rules.mk
new file mode 100755
index 0000000000..230cc1ec14
--- /dev/null
+++ b/keyboards/novelkeys/nk65b/rules.mk
@@ -0,0 +1,29 @@
+# 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
+RGB_MATRIX_ENABLE = yes # Enable Per-key RGB
+RGB_MATRIX_DRIVER = WS2812 # Per-key RGB Drive
+WS2812_DRIVER = pwm # Per-key RGB MCU Driver
diff --git a/keyboards/novelkeys/nk87/config.h b/keyboards/novelkeys/nk87/config.h
index 091d80efb8..e5b955c3f8 100755
--- a/keyboards/novelkeys/nk87/config.h
+++ b/keyboards/novelkeys/nk87/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4E4C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT NK87
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/novelkeys/nk87/info.json b/keyboards/novelkeys/nk87/info.json
index 5603ffd52b..e871dfb3eb 100755
--- a/keyboards/novelkeys/nk87/info.json
+++ b/keyboards/novelkeys/nk87/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NK87",
+ "manufacturer": "Yiancar-Designs",
"url": "www.yiancar-designs.com",
"maintainer": "Yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4E4C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"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,12", "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":"3,12", "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,13", "x":12.75, "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":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "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,1", "x":1.5, "y":5.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.5}, {"label":"5,6", "x":4, "y":5.25, "w":7}, {"label":"5,11", "x":11, "y":5.25, "w":1.5}, {"label":"5,12", "x":12.5, "y":5.25}, {"label":"5,13", "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/novelkeys/nk87b/config.h b/keyboards/novelkeys/nk87b/config.h
new file mode 100644
index 0000000000..32bbb5e69e
--- /dev/null
+++ b/keyboards/novelkeys/nk87b/config.h
@@ -0,0 +1,135 @@
+/*
+Copyright 2022 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+#define MATRIX_ROW_PINS { B11, B10, B2, B1, A9, A5 }
+#define MATRIX_COL_PINS { B12, B13, B14, B15, A8, A10, A14, A15, B3, B4, B5, B6, B7, B8, B9, A0, A1 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Indicator LEDs */
+#define LED_CAPS_LOCK_PIN A2
+#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 0
+
+/* RGB options */
+
+#define RGB_DI_PIN B0
+#define WS2812_PWM_DRIVER PWMD3
+#define WS2812_PWM_CHANNEL 3
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM3
+#define WS2812_DMA_CHANNEL 3
+
+#define RGBLED_NUM 87
+#define DRIVER_LED_TOTAL 87
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 114
+#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
diff --git a/keyboards/novelkeys/nk87b/halconf.h b/keyboards/novelkeys/nk87b/halconf.h
new file mode 100644
index 0000000000..ce14bc0c41
--- /dev/null
+++ b/keyboards/novelkeys/nk87b/halconf.h
@@ -0,0 +1,21 @@
+/* Copyright 2022 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 HAL_USE_PWM TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/novelkeys/nk87b/info.json b/keyboards/novelkeys/nk87b/info.json
new file mode 100755
index 0000000000..01518c9b2f
--- /dev/null
+++ b/keyboards/novelkeys/nk87b/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "NK87B",
+ "manufacturer": "Yiancar-Designs",
+ "url": "www.yiancar-designs.com",
+ "maintainer": "Yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4E50",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "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,12", "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":"3,12", "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,13", "x":12.75, "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":"4,7", "x":7.25, "y":4.25}, {"label":"4,8", "x":8.25, "y":4.25}, {"label":"4,9", "x":9.25, "y":4.25}, {"label":"4,10", "x":10.25, "y":4.25}, {"label":"4,11", "x":11.25, "y":4.25}, {"label":"4,12", "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,1", "x":1.5, "y":5.25}, {"label":"5,2", "x":2.5, "y":5.25, "w":1.5}, {"label":"5,6", "x":4, "y":5.25, "w":7}, {"label":"5,11", "x":11, "y":5.25, "w":1.5}, {"label":"5,12", "x":12.5, "y":5.25}, {"label":"5,13", "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/novelkeys/nk87b/keymaps/default/keymap.c b/keyboards/novelkeys/nk87b/keymaps/default/keymap.c
new file mode 100644
index 0000000000..37c7feb4fd
--- /dev/null
+++ b/keyboards/novelkeys/nk87b/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2022 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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[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_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, 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_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)
+};
diff --git a/keyboards/novelkeys/nk87b/keymaps/default/readme.md b/keyboards/novelkeys/nk87b/keymaps/default/readme.md
new file mode 100644
index 0000000000..c0ca436184
--- /dev/null
+++ b/keyboards/novelkeys/nk87b/keymaps/default/readme.md
@@ -0,0 +1,7 @@
+# The default keymap for NK87
+
+![Layer 0](https://i.imgur.com/nw29fvc.png)
+Fn Layer:
+![Layer 1](https://i.imgur.com/SyijLFt.png)
+
+Default layer is normal ANSI TKL
diff --git a/keyboards/novelkeys/nk87b/keymaps/via/keymap.c b/keyboards/novelkeys/nk87b/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d4f4a0fa9d
--- /dev/null
+++ b/keyboards/novelkeys/nk87b/keymaps/via/keymap.c
@@ -0,0 +1,50 @@
+/* Copyright 2022 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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[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_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, 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_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),
+
+[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),
+
+[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),
+};
diff --git a/keyboards/novelkeys/nk87b/keymaps/via/readme.md b/keyboards/novelkeys/nk87b/keymaps/via/readme.md
new file mode 100644
index 0000000000..22f342c376
--- /dev/null
+++ b/keyboards/novelkeys/nk87b/keymaps/via/readme.md
@@ -0,0 +1,7 @@
+# The default VIA keymap for NK87. VIA support enabled.
+
+![Layer 0](https://i.imgur.com/nw29fvc.png)
+Fn Layer:
+![Layer 1](https://i.imgur.com/SyijLFt.png)
+
+Default layer is normal ANSI TKL
diff --git a/keyboards/novelkeys/nk87b/keymaps/via/rules.mk b/keyboards/novelkeys/nk87b/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/novelkeys/nk87b/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/novelkeys/nk87b/mcuconf.h b/keyboards/novelkeys/nk87b/mcuconf.h
new file mode 100644
index 0000000000..7cf6a48904
--- /dev/null
+++ b/keyboards/novelkeys/nk87b/mcuconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2022 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_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
diff --git a/keyboards/novelkeys/nk87b/nk87b.c b/keyboards/novelkeys/nk87b/nk87b.c
new file mode 100644
index 0000000000..639eba6817
--- /dev/null
+++ b/keyboards/novelkeys/nk87b/nk87b.c
@@ -0,0 +1,58 @@
+/* Copyright 2022 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 "nk87b.h"
+#include <lib/lib8tion/lib8tion.h>
+
+void led_init_ports(void) {
+ // Set our LED pins as open drain outputs
+ palSetLineMode(LED_CAPS_LOCK_PIN, PAL_MODE_OUTPUT_OPENDRAIN);
+ palSetLineMode(A3, PAL_MODE_OUTPUT_OPENDRAIN);
+ palSetLineMode(A4, PAL_MODE_OUTPUT_OPENDRAIN);
+}
+
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ writePin(A3, !layer_state_cmp(state, 1));
+ writePin(A4, !layer_state_cmp(state, 2));
+ return layer_state_set_user(state);
+}
+
+#ifdef RGB_MATRIX_ENABLE
+// clang-format off
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 },
+ { 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17 },
+ { 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, NO_LED, 48, 49, 50 },
+ { 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 47, 51, NO_LED, NO_LED, NO_LED },
+ { 64, NO_LED, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, NO_LED, NO_LED, 76, NO_LED },
+ { 86, 85, 84, NO_LED, NO_LED, NO_LED, 83, NO_LED, NO_LED, NO_LED, NO_LED, 82, 81, 80, 79, 78, 77 },
+}, {
+ { 0,0 }, { 16,0 }, { 29,0 }, { 42,0 }, { 55,0 }, { 71,0 }, { 84,0 }, { 97,0 }, {110,0 }, {127,0 }, {140,0 }, {153,0 }, {166,0 }, {182,0 }, {198,0 }, {211,0 }, {224,0 },
+ {224,15 }, {211,15 }, {198,15 }, {175,15 }, {156,15 }, {143,15 }, {130,15 }, {117,15 }, {104,15 }, { 91,15 }, { 78,15 }, { 65,15 }, { 52,15 }, { 39,15 }, { 26,15 }, { 13,15 }, { 0,15 },
+ { 3,27 }, { 19,27 }, { 32,27 }, { 45,27 }, { 58,27 }, { 71,27 }, { 84,27 }, { 97,27 }, {110,27 }, {123,27 }, {136,27 }, {149,27 }, {162,27 }, {179,27 }, {198,27 }, {211,27 }, {224,27 },
+ {174,40 }, {153,40 }, {140,40 }, {127,40 }, {114,40 }, {101,40 }, { 88,40 }, { 75,40 }, { 62,40 }, { 49,40 }, { 36,40 }, { 23,40 }, { 5,40 }, { 8,52 }, { 29,52 }, { 42,52 }, { 55,52 },
+ { 68,52 }, { 81,52 }, { 94,52 }, {107,52 }, {120,52 }, {133,52 }, {146,52 }, {170,52 }, {211,52 }, {224,64 }, {211,64 }, {198,64 }, {179,64 }, {162,64 }, {146,64 }, { 91,64 }, { 36,64 },
+ { 19,64 }, { 3,64 }
+}, {
+ 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 4, 4, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 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, 4, 1, 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, 1, 1,
+ 1, 1, 1, 1, 1, 1, 4, 1, 1, 1
+} };
+// clang-format on
+#endif
diff --git a/keyboards/novelkeys/nk87b/nk87b.h b/keyboards/novelkeys/nk87b/nk87b.h
new file mode 100644
index 0000000000..5e48d36baf
--- /dev/null
+++ b/keyboards/novelkeys/nk87b/nk87b.h
@@ -0,0 +1,38 @@
+/* Copyright 2022 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_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, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K3C, 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, 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, XXX, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, XXX, XXX }, \
+ { K40, XXX, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, XXX, XXX, K4F, XXX }, \
+ { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, XXX, K5B, K5C, K5D, K5E, K5F, K5G } \
+}
diff --git a/keyboards/novelkeys/nk87b/readme.md b/keyboards/novelkeys/nk87b/readme.md
new file mode 100644
index 0000000000..d993fb6ef4
--- /dev/null
+++ b/keyboards/novelkeys/nk87b/readme.md
@@ -0,0 +1,34 @@
+# NK87B
+
+![NK87B](https://i.imgur.com/nw29fvc.png)
+
+This is a standard fixed layout TKL PCB. It supports VIA and full per-key RGB. This is revision B.
+
+* Keyboard Maintainer: [Yiancar](https://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
+* Hardware Supported: A TKL keyboard with STM32F072CB or APM compatible
+* Hardware Availability: https://novelkeys.xyz/
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make novelkeys/nk87b: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 nk87b:<keymap>:dfu-util`)
diff --git a/keyboards/novelkeys/nk87b/rules.mk b/keyboards/novelkeys/nk87b/rules.mk
new file mode 100644
index 0000000000..230cc1ec14
--- /dev/null
+++ b/keyboards/novelkeys/nk87b/rules.mk
@@ -0,0 +1,29 @@
+# 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
+RGB_MATRIX_ENABLE = yes # Enable Per-key RGB
+RGB_MATRIX_DRIVER = WS2812 # Per-key RGB Drive
+WS2812_DRIVER = pwm # Per-key RGB MCU Driver
diff --git a/keyboards/novelkeys/novelpad/config.h b/keyboards/novelkeys/novelpad/config.h
index 2b96638966..6980258e33 100755
--- a/keyboards/novelkeys/novelpad/config.h
+++ b/keyboards/novelkeys/novelpad/config.h
@@ -19,13 +19,6 @@ 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 0x6070
-#define DEVICE_VER 0x0001
-#define MANUFACTURER NovelKeys.xyz
-#define PRODUCT Novelpad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C2, C4, C5, C6, C7 }
#define MATRIX_COL_PINS { D7, D6, D5, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/novelkeys/novelpad/info.json b/keyboards/novelkeys/novelpad/info.json
index ed4a31236d..7e27f074b3 100644
--- a/keyboards/novelkeys/novelpad/info.json
+++ b/keyboards/novelkeys/novelpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NovelPad",
+ "manufacturer": "NovelKeys.xyz",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6070",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [
diff --git a/keyboards/novelkeys/novelpad/keymaps/0xdec/keymap.c b/keyboards/novelkeys/novelpad/keymaps/0xdec/keymap.c
index bb8c977c92..3131fb008c 100755
--- a/keyboards/novelkeys/novelpad/keymaps/0xdec/keymap.c
+++ b/keyboards/novelkeys/novelpad/keymaps/0xdec/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT(
- _______, RESET, BL_STEP, RGB_TOG,
+ _______, QK_BOOT, BL_STEP, RGB_TOG,
RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD,
RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD,
RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW,
diff --git a/keyboards/noxary/220/config.h b/keyboards/noxary/220/config.h
index 05fe1be559..95814568a2 100644
--- a/keyboards/noxary/220/config.h
+++ b/keyboards/noxary/220/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E58 //"NX"
-#define PRODUCT_ID 0x0899 //2201
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Noxary
-#define PRODUCT 220
-
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -43,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C4, B0, D3, D4, D5, D6 }
#define MATRIX_COL_PINS { B4, C5, D2, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/noxary/220/info.json b/keyboards/noxary/220/info.json
index 6528c160c2..7eebbba900 100644
--- a/keyboards/noxary/220/info.json
+++ b/keyboards/noxary/220/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Noxary 220",
+ "keyboard_name": "220",
+ "manufacturer": "Noxary",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4E58",
+ "pid": "0x0899",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_6x4": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1.5}, {"x":1, "y":1.5}, {"x":2, "y":1.5}, {"x":3, "y":1.5}, {"x":0, "y":2.5}, {"x":1, "y":2.5}, {"x":2, "y":2.5}, {"x":3, "y":2.5}, {"x":0, "y":3.5}, {"x":1, "y":3.5}, {"x":2, "y":3.5}, {"x":3, "y":3.5}, {"x":0, "y":4.5}, {"x":1, "y":4.5}, {"x":2, "y":4.5}, {"x":3, "y":4.5}, {"x":0, "y":5.5}, {"x":1, "y":5.5}, {"x":2, "y":5.5}, {"x":3, "y":5.5}]
diff --git a/keyboards/noxary/260/config.h b/keyboards/noxary/260/config.h
index 29818862da..88c9214a90 100644
--- a/keyboards/noxary/260/config.h
+++ b/keyboards/noxary/260/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E58 //"NX"
-#define PRODUCT_ID 0x0A29 //2601
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Noxary
-#define PRODUCT 260
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -43,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F7, F6, F5, F0, B5 }
#define MATRIX_COL_PINS { C7, C6, B6, F4, E6, D0, B4, D1, D2, D3, D7, D6, D4, F1, D5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/noxary/260/info.json b/keyboards/noxary/260/info.json
index c744bc3ec9..997d2f7cf2 100644
--- a/keyboards/noxary/260/info.json
+++ b/keyboards/noxary/260/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Noxary 260",
+ "keyboard_name": "260",
+ "manufacturer": "Noxary",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4E58",
+ "pid": "0x0A29",
+ "device_version": "0.0.1"
+ },
"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":13.75, "y":2, "w":1.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}]
diff --git a/keyboards/noxary/268/config.h b/keyboards/noxary/268/config.h
index bd72bdba74..26d9b272dc 100644
--- a/keyboards/noxary/268/config.h
+++ b/keyboards/noxary/268/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E58 //"NX"
-#define PRODUCT_ID 0x0A79 //2681
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Noxary
-#define PRODUCT 268
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F5, F4, F0, F1, D0 }
#define MATRIX_COL_PINS { C6, C7, F7, F6, E6, B0, D1, B2, B3, D2, D3, D5, D4, D6, D7, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/noxary/268/info.json b/keyboards/noxary/268/info.json
index 5e57545349..f32ea9887c 100644
--- a/keyboards/noxary/268/info.json
+++ b/keyboards/noxary/268/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Noxary 268",
+ "keyboard_name": "268",
+ "manufacturer": "Noxary",
"url": "https://www.instagram.com/noxaryco/",
"maintainer": "QMK Community",
+ "usb": {
+ "vid": "0x4E58",
+ "pid": "0x0A79",
+ "device_version": "0.0.1"
+ },
"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":"Back Space", "x":13, "y":0}, {"label":"Back Space", "x":14, "y":0}, {"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":"# ~", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"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}, {"label":"Shift", "x":13.25, "y":3, "w":0.75}, {"label":"Up", "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}, {"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":"Left", "x":13, "y":4}, {"label":"Down", "x":14, "y":4}, {"label":"Right", "x":15, "y":4}]
diff --git a/keyboards/noxary/268/keymaps/sixtyeight/keymap.c b/keyboards/noxary/268/keymaps/sixtyeight/keymap.c
index 151ac1f73d..1af41535e6 100644
--- a/keyboards/noxary/268/keymaps/sixtyeight/keymap.c
+++ b/keyboards/noxary/268/keymaps/sixtyeight/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FL1] = 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_PSCR, KC_INS,
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
_______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, _______, KC_MUTE, KC_MUTE, KC_VOLU, _______,
_______, _______, _______, BL_TOGG, _______, _______, _______, _______, KC_VOLD, _______),
diff --git a/keyboards/noxary/268_2/config.h b/keyboards/noxary/268_2/config.h
index b447a37f57..3cade7ae27 100644
--- a/keyboards/noxary/268_2/config.h
+++ b/keyboards/noxary/268_2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E58 //"NX"
-#define PRODUCT_ID 0x0A7A //2682
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Noxary
-#define PRODUCT 268.2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F7, F6, F5, F0, B5 }
#define MATRIX_COL_PINS { C6, B6, C7, F4, E6, D0, D7, D1, D2, B4, D6, D4, D5, F1, D3, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/noxary/268_2/info.json b/keyboards/noxary/268_2/info.json
index a84442dbc1..18a7dfe774 100644
--- a/keyboards/noxary/268_2/info.json
+++ b/keyboards/noxary/268_2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Noxary 268.2",
+ "keyboard_name": "268.2",
+ "manufacturer": "Noxary",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4E58",
+ "pid": "0x0A7A",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/noxary/268_2_rgb/config.h b/keyboards/noxary/268_2_rgb/config.h
index eafbbd4092..9856f6401e 100644
--- a/keyboards/noxary/268_2_rgb/config.h
+++ b/keyboards/noxary/268_2_rgb/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E58 //"NX"
-#define PRODUCT_ID 0x0A7C //2684
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Noxary
-#define PRODUCT 268.2_RGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F6, F5, F4, F0, B6 }
#define MATRIX_COL_PINS { C6, C7, F7, F1, E6, B2, B1, D6, B4, D7, D4, D5, D3, D2, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/noxary/268_2_rgb/info.json b/keyboards/noxary/268_2_rgb/info.json
index a73302528f..9cf57e646f 100644
--- a/keyboards/noxary/268_2_rgb/info.json
+++ b/keyboards/noxary/268_2_rgb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Noxary 268.2 RGB",
+ "keyboard_name": "268.2 RGB",
+ "manufacturer": "Noxary",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4E58",
+ "pid": "0x0A7C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/noxary/280/config.h b/keyboards/noxary/280/config.h
index 3147d12528..8ba050ab83 100644
--- a/keyboards/noxary/280/config.h
+++ b/keyboards/noxary/280/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E58 //"NX"
-#define PRODUCT_ID 0x0AF1 //2801
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Noxary
-#define PRODUCT 280
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, E6, D6, D4, F6, F5, F4, F1, B2, D3, D2, D1}
#define MATRIX_COL_PINS { F7, C7, C6, B6, B5, B4, D7, B0, B3}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/noxary/280/info.json b/keyboards/noxary/280/info.json
index e1c87b6545..e3eeabc84f 100644
--- a/keyboards/noxary/280/info.json
+++ b/keyboards/noxary/280/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Noxary 280",
+ "keyboard_name": "280",
+ "manufacturer": "Noxary",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4E58",
+ "pid": "0x0AF1",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"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}, {"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, "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}]
diff --git a/keyboards/noxary/378/config.h b/keyboards/noxary/378/config.h
index fa08601875..3b8af6d168 100644
--- a/keyboards/noxary/378/config.h
+++ b/keyboards/noxary/378/config.h
@@ -17,14 +17,6 @@ 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 0x017A // 378
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Noxary
-#define PRODUCT Noxary 378
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
diff --git a/keyboards/noxary/378/info.json b/keyboards/noxary/378/info.json
index ef165262a5..24ef51cbe8 100644
--- a/keyboards/noxary/378/info.json
+++ b/keyboards/noxary/378/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Noxary 378",
+ "keyboard_name": "378",
+ "manufacturer": "Noxary",
"url": "",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x4E58",
+ "pid": "0x017A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/noxary/valhalla/config.h b/keyboards/noxary/valhalla/config.h
index abce175dce..7620639ec4 100644
--- a/keyboards/noxary/valhalla/config.h
+++ b/keyboards/noxary/valhalla/config.h
@@ -17,14 +17,6 @@ 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
diff --git a/keyboards/noxary/valhalla/info.json b/keyboards/noxary/valhalla/info.json
index 01d31bce6b..d5934b2e70 100644
--- a/keyboards/noxary/valhalla/info.json
+++ b/keyboards/noxary/valhalla/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Valhalla",
+ "manufacturer": "Noxary",
"url": "",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x4E58",
+ "pid": "0x5648",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/noxary/valhalla/readme.md b/keyboards/noxary/valhalla/readme.md
index ac053df874..36e3403dae 100644
--- a/keyboards/noxary/valhalla/readme.md
+++ b/keyboards/noxary/valhalla/readme.md
@@ -17,7 +17,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
## Compile firmware
diff --git a/keyboards/noxary/vulcan/config.h b/keyboards/noxary/vulcan/config.h
index e478071110..e54c0c6044 100644
--- a/keyboards/noxary/vulcan/config.h
+++ b/keyboards/noxary/vulcan/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0011
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Noxary
-#define PRODUCT Vulcan
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D1, D0, D2, F0, F1 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/noxary/vulcan/info.json b/keyboards/noxary/vulcan/info.json
index f3b5761095..7956a21deb 100644
--- a/keyboards/noxary/vulcan/info.json
+++ b/keyboards/noxary/vulcan/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "vulcan",
+ "keyboard_name": "Vulcan",
+ "manufacturer": "Noxary",
"url": "https://noxary.co/products/vulcan-pro-base",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0011",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/noxary/x268/config.h b/keyboards/noxary/x268/config.h
index 3c4965a6cc..12f62c3ff0 100644
--- a/keyboards/noxary/x268/config.h
+++ b/keyboards/noxary/x268/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4E58 //"NX"
-#define PRODUCT_ID 0x0A7B //2683
-#define DEVICE_VER 0x0078 //"x"
-#define MANUFACTURER Noxary
-#define PRODUCT x268
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F7, F6, F5, F0, B4 }
#define MATRIX_COL_PINS { C6, B6, C7, F4, E6, B2, D6, D0, D1, D7, D4, D5, D3, F1, D2, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/noxary/x268/info.json b/keyboards/noxary/x268/info.json
index 04cd126de3..bbad48252a 100644
--- a/keyboards/noxary/x268/info.json
+++ b/keyboards/noxary/x268/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Noxary x268",
+ "keyboard_name": "x268",
+ "manufacturer": "Noxary",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4E58",
+ "pid": "0x0A7B",
+ "device_version": "0.7.8"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/np12/config.h b/keyboards/np12/config.h
index b330c29feb..1f9a14b315 100644
--- a/keyboards/np12/config.h
+++ b/keyboards/np12/config.h
@@ -18,22 +18,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA4A4
-#define PRODUCT_ID 0x4401
-#define DEVICE_VER 0x0001
-#define MANUFACTURER nut1414
-#define PRODUCT np12
-
-
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 5
#define MATRIX_ROW_PINS { D7, E6, B4, F7 }
#define MATRIX_COL_PINS { D1, D0, D4, C6, F6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
diff --git a/keyboards/np12/info.json b/keyboards/np12/info.json
index 06e544244b..8b8d89cc4a 100644
--- a/keyboards/np12/info.json
+++ b/keyboards/np12/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "np12",
+ "manufacturer": "nut1414",
"url": "https://github.com/nut1414/np12",
"maintainer": "nut1414",
+ "usb": {
+ "vid": "0xA4A4",
+ "pid": "0x4401",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/nullbitsco/nibble/config.h b/keyboards/nullbitsco/nibble/config.h
index b88d4bc360..c4461c5b20 100644
--- a/keyboards/nullbitsco/nibble/config.h
+++ b/keyboards/nullbitsco/nibble/config.h
@@ -24,14 +24,6 @@
// Workaround for freezing after MacOS sleep
#define NO_USB_STARTUP_CHECK
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6E61
-#define PRODUCT_ID 0x6060
-
-#define DEVICE_VER 0x0001
-#define MANUFACTURER nullbits
-#define PRODUCT NIBBLE
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/nullbitsco/nibble/info.json b/keyboards/nullbitsco/nibble/info.json
index 7a4ddca6bd..33ae369936 100644
--- a/keyboards/nullbitsco/nibble/info.json
+++ b/keyboards/nullbitsco/nibble/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "NIBBLE 65%",
+ "keyboard_name": "NIBBLE",
+ "manufacturer": "nullbits",
"url": "https://nullbits.co/nibble/",
+ "usb": {
+ "vid": "0x6E61",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/nullbitsco/nibble/keymaps/oled/keymap.c b/keyboards/nullbitsco/nibble/keymaps/oled/keymap.c
index 300af70737..39e6cd04ef 100644
--- a/keyboards/nullbitsco/nibble/keymaps/oled/keymap.c
+++ b/keyboards/nullbitsco/nibble/keymaps/oled/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F16, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = 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, _______, KC_END,
+ QK_BOOT, KC_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,
RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c
index a4e484f9cf..586de79af3 100644
--- a/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c
+++ b/keyboards/nullbitsco/nibble/keymaps/oled_bongocat/keymap.c
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_VIA1] = 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_END,
+ QK_BOOT, KC_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,
RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/nullbitsco/nibble/keymaps/oled_status/keymap.c b/keyboards/nullbitsco/nibble/keymaps/oled_status/keymap.c
index fa72a78905..2b024b7758 100644
--- a/keyboards/nullbitsco/nibble/keymaps/oled_status/keymap.c
+++ b/keyboards/nullbitsco/nibble/keymaps/oled_status/keymap.c
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F16, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(_FN), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN] = 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, _______, KC_END,
+ QK_BOOT, KC_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,
RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/nullbitsco/scramble/config.h b/keyboards/nullbitsco/scramble/config.h
index 811f28e6be..4333d94d37 100644
--- a/keyboards/nullbitsco/scramble/config.h
+++ b/keyboards/nullbitsco/scramble/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6E61
-#define PRODUCT_ID 0x6062
-
-#define DEVICE_VER 0x0001
-#define MANUFACTURER nullbits
-#define PRODUCT SCRAMBLE
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
diff --git a/keyboards/nullbitsco/scramble/info.json b/keyboards/nullbitsco/scramble/info.json
index 967c9fda64..cc5fd28d76 100644
--- a/keyboards/nullbitsco/scramble/info.json
+++ b/keyboards/nullbitsco/scramble/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "SCRAMBLE switch tester",
+ "keyboard_name": "SCRAMBLE",
+ "manufacturer": "nullbits",
"url": "https://nullbits.co/scramble",
"maintainer": "jaygreco",
+ "usb": {
+ "vid": "0x6E61",
+ "pid": "0x6062",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/nullbitsco/tidbit/config.h b/keyboards/nullbitsco/tidbit/config.h
index 103dabdb96..5e3d640dbd 100644
--- a/keyboards/nullbitsco/tidbit/config.h
+++ b/keyboards/nullbitsco/tidbit/config.h
@@ -23,13 +23,6 @@
// Workaround for freezing after MacOS sleep
#define USB_SUSPEND_WAKEUP_DELAY 200
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6E61
-#define PRODUCT_ID 0x6064
-#define DEVICE_VER 0x0001
-#define MANUFACTURER nullbits
-#define PRODUCT TIDBIT
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 6
@@ -37,7 +30,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B1, E6, D7, C6, D4 }
#define MATRIX_COL_PINS { NO_PIN, NO_PIN, F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/nullbitsco/tidbit/info.json b/keyboards/nullbitsco/tidbit/info.json
index 5d260cc453..7b9c4eb8ae 100644
--- a/keyboards/nullbitsco/tidbit/info.json
+++ b/keyboards/nullbitsco/tidbit/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "TIDBIT 19",
+ "keyboard_name": "TIDBIT",
+ "manufacturer": "nullbits",
"url": "https://nullbits.co/tidbit/",
+ "usb": {
+ "vid": "0x6E61",
+ "pid": "0x6064",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/nullbitsco/tidbit/readme.md b/keyboards/nullbitsco/tidbit/readme.md
index f2d0d9934b..d41ad039c3 100644
--- a/keyboards/nullbitsco/tidbit/readme.md
+++ b/keyboards/nullbitsco/tidbit/readme.md
@@ -17,7 +17,7 @@ Adds experimental "Remote Keyboard" functionality, which forwards keystrokes fro
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/nullbitsco/tidbit/tidbit.c b/keyboards/nullbitsco/tidbit/tidbit.c
index 6e7ef460e5..ac29777841 100644
--- a/keyboards/nullbitsco/tidbit/tidbit.c
+++ b/keyboards/nullbitsco/tidbit/tidbit.c
@@ -127,7 +127,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
}
switch (keycode) {
- case RESET:
+ case QK_BOOT:
if (record->event.pressed) {
set_bitc_LED(LED_DIM);
rgblight_disable_noeeprom();
diff --git a/keyboards/numatreus/config.h b/keyboards/numatreus/config.h
index b2c147fcc1..9f2daa585f 100644
--- a/keyboards/numatreus/config.h
+++ b/keyboards/numatreus/config.h
@@ -16,14 +16,6 @@ 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 0xE80A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yohewi
-#define PRODUCT NumAtreus
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
diff --git a/keyboards/numatreus/info.json b/keyboards/numatreus/info.json
index 3006b87e47..17975f6d0e 100644
--- a/keyboards/numatreus/info.json
+++ b/keyboards/numatreus/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "numatreus",
+ "keyboard_name": "NumAtreus",
+ "manufacturer": "yohewi",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xE80A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0.6}, {"x":1, "y":0.35}, {"x":2, "y":0}, {"x":3, "y":0.35}, {"x":4, "y":0.7}, {"x":8, "y":0.7}, {"x":9, "y":0.35}, {"x":10, "y":0}, {"x":11, "y":0.35}, {"x":12, "y":0.6}, {"x":0, "y":1.6}, {"x":1, "y":1.35}, {"x":2, "y":1}, {"x":3, "y":1.35}, {"x":4, "y":1.7}, {"x":8, "y":1.7}, {"x":9, "y":1.35}, {"x":10, "y":1}, {"x":11, "y":1.35}, {"x":12, "y":1.6}, {"x":0, "y":2.6}, {"x":1, "y":2.35}, {"x":2, "y":2}, {"x":3, "y":2.35}, {"x":4, "y":2.7}, {"x":8, "y":2.7}, {"x":9, "y":2.35}, {"x":10, "y":2}, {"x":11, "y":2.35}, {"x":12, "y":2.6}, {"x":0, "y":3.6}, {"x":1, "y":3.35}, {"x":2, "y":3}, {"x":3, "y":3.35}, {"x":4, "y":3.7}, {"x":5, "y":2.95, "h":1.5}, {"x":7, "y":2.95, "h":1.5}, {"x":8, "y":3.7}, {"x":9, "y":3.35}, {"x":10, "y":3}, {"x":11, "y":3.35}, {"x":12, "y":3.6}]
diff --git a/keyboards/numatreus/keymaps/hdbx/keymap.c b/keyboards/numatreus/keymaps/hdbx/keymap.c
index 5bc8c4d0e6..a221f9fe19 100644
--- a/keyboards/numatreus/keymaps/hdbx/keymap.c
+++ b/keyboards/numatreus/keymaps/hdbx/keymap.c
@@ -152,14 +152,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------| |------+------+------+------+------|
* | | | | | | | | | | | |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * |RESET | | | | | | | | | | | |
+ * |QK_BOOT | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT(
MCR1, MCR2, MCR3, MCR4, MCR5, DM_PLY1, DM_PLY2, DM_REC1, DM_REC2, DM_RSTP,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, GAME, XXXXXXX, QWERTY, HDBX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
)
};
diff --git a/keyboards/numatreus/keymaps/like_jis/keymap.c b/keyboards/numatreus/keymaps/like_jis/keymap.c
index 4189373e46..24c554d20c 100644
--- a/keyboards/numatreus/keymaps/like_jis/keymap.c
+++ b/keyboards/numatreus/keymaps/like_jis/keymap.c
@@ -112,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
//,----------------------------------. ,----------------------------------.
- RESET, RGBRST, AG_NORM, AG_SWAP, KC_CAPS, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP,
+ QK_BOOT, RGBRST, AG_NORM, AG_SWAP, KC_CAPS, XXXXXXX, KC_WH_L, KC_WH_U, KC_HOME, KC_PGUP,
//|------+------+------+------+------| |------+------+------+------+------|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_SLCK, XXXXXXX, KC_WH_R, KC_WH_D, KC_END, KC_PGDN,
//|------+------+------+------+------| |------+------+------+------+------|
diff --git a/keyboards/numatreus/keymaps/yohewi/keymap.c b/keyboards/numatreus/keymaps/yohewi/keymap.c
index 8027a972e4..5b53389f98 100644
--- a/keyboards/numatreus/keymaps/yohewi/keymap.c
+++ b/keyboards/numatreus/keymaps/yohewi/keymap.c
@@ -56,6 +56,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LOWER] = LAYOUT( /* [> LOWER <] */
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_F7, KC_F8, KC_F9, KC_F10 ,
- KC_F11, KC_F12, KC_NO, KC_NO, RESET, KC_TRNS, KC_TRNS, KC_QUOT, KC_UP, KC_BSLS ,
+ KC_F11, KC_F12, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_TRNS, KC_QUOT, KC_UP, KC_BSLS ,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, TO(_QWERTY), KC_LEFT, KC_DOWN, KC_RGHT )
};
diff --git a/keyboards/obosob/arch_36/config.h b/keyboards/obosob/arch_36/config.h
index be4a0a9830..9d38dde232 100644
--- a/keyboards/obosob/arch_36/config.h
+++ b/keyboards/obosob/arch_36/config.h
@@ -18,14 +18,6 @@ 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 0x9CE3
-#define DEVICE_VER 0x0001
-#define MANUFACTURER obosob
-#define PRODUCT Arch-36
-
/* key matrix size */
/* Rows are doubled up */
#define MATRIX_ROWS 8
@@ -34,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// wiring
#define MATRIX_ROW_PINS { D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/obosob/arch_36/info.json b/keyboards/obosob/arch_36/info.json
index 344674a426..c5d9077237 100644
--- a/keyboards/obosob/arch_36/info.json
+++ b/keyboards/obosob/arch_36/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Arch-36",
+ "manufacturer": "obosob",
"url": "",
"maintainer": "obosob",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x9CE3",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x5_3": {
"layout": [
diff --git a/keyboards/obosob/arch_36/keymaps/obosob/keymap.c b/keyboards/obosob/arch_36/keymaps/obosob/keymap.c
index 104ee378f5..552e5cb045 100644
--- a/keyboards/obosob/arch_36/keymaps/obosob/keymap.c
+++ b/keyboards/obosob/arch_36/keymaps/obosob/keymap.c
@@ -203,8 +203,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
QUESSPC, QUOT, DQUOT, COMMSPC, DOTSPC, EXLMSPC
),
// Adjust ________ ________
-// ________| RESET |________ ________| |________
-// | | EEPROM | RESET |________ ________| | | |
+// ________| QK_BOOT |________ ________| |________
+// | | EEPROM | QK_BOOT |________ ________| | | |
// ________| |________| | | | | |________| |________
// | |________| RGB |________| | | |________| |________| |
// | | RGB | Hue+ | RGB |________| |________| | | | |
@@ -219,7 +219,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// |________| | | |________|
// |________| |________|
[_ADJUST] = LAYOUT_split_3x5_3(
- XXXXXXX, WOKE, EEP_RST, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, WOKE, EEP_RST, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, QWERTY, COLEMAK, XXXXXXX, XXXXXXX,
XXXXXXX, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
diff --git a/keyboards/obosob/steal_this_keyboard/config.h b/keyboards/obosob/steal_this_keyboard/config.h
index ea637d0c2f..acb0d64b79 100644
--- a/keyboards/obosob/steal_this_keyboard/config.h
+++ b/keyboards/obosob/steal_this_keyboard/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC2AB
-#define PRODUCT_ID 0x50AD
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Obosob
-#define PRODUCT Steal This Keyboard!
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 5
@@ -54,7 +47,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B5, C6, NO_PIN, NO_PIN, NO_PIN } \
}
-#define UNUSED_PINS
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/obosob/steal_this_keyboard/info.json b/keyboards/obosob/steal_this_keyboard/info.json
index 7a4eabdb55..a20119208d 100644
--- a/keyboards/obosob/steal_this_keyboard/info.json
+++ b/keyboards/obosob/steal_this_keyboard/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "steal this keyboard",
+ "keyboard_name": "Steal This Keyboard!",
+ "manufacturer": "Obosob",
"url": "https://github.com/obosob/steal_this_keyboard",
"maintainer": "@obosob",
+ "usb": {
+ "vid": "0xC2AB",
+ "pid": "0x50AD",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x5_2": {
"layout": [
diff --git a/keyboards/ocean/addon/config.h b/keyboards/ocean/addon/config.h
index 1b221b65bd..00d6a02a9d 100644
--- a/keyboards/ocean/addon/config.h
+++ b/keyboards/ocean/addon/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 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
diff --git a/keyboards/ocean/addon/info.json b/keyboards/ocean/addon/info.json
index 75e1eb2c48..05d41ab59a 100644
--- a/keyboards/ocean/addon/info.json
+++ b/keyboards/ocean/addon/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "AddOn",
+ "manufacturer": "Ocean",
"url": "tokopedia.com/kbdksp",
"maintainer": "Ocean",
+ "usb": {
+ "vid": "0x9624",
+ "pid": "0x0012",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ocean/gin_v2/config.h b/keyboards/ocean/gin_v2/config.h
index 2f70ad3f5e..1c0dabc4e3 100644
--- a/keyboards/ocean/gin_v2/config.h
+++ b/keyboards/ocean/gin_v2/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x9624
-#define PRODUCT_ID 0x0005
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ocean
-#define PRODUCT Gin V2
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/
#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS { D2, D3 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/ocean/gin_v2/info.json b/keyboards/ocean/gin_v2/info.json
index cd9d809419..d7493b39c3 100644
--- a/keyboards/ocean/gin_v2/info.json
+++ b/keyboards/ocean/gin_v2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Gin V2",
+ "manufacturer": "Ocean",
"url": "",
"maintainer": "Ocean",
+ "usb": {
+ "vid": "0x9624",
+ "pid": "0x0005",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ocean/slamz/config.h b/keyboards/ocean/slamz/config.h
index 5f27a3a6d0..aff184b243 100644
--- a/keyboards/ocean/slamz/config.h
+++ b/keyboards/ocean/slamz/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x9624
-#define PRODUCT_ID 0x0011
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ocean
-#define PRODUCT Slamz
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
diff --git a/keyboards/ocean/slamz/info.json b/keyboards/ocean/slamz/info.json
index 4d5fe17dc3..6534007c3b 100644
--- a/keyboards/ocean/slamz/info.json
+++ b/keyboards/ocean/slamz/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Slamz",
+ "manufacturer": "Ocean",
"url": "",
"maintainer": "Ocean",
+ "usb": {
+ "vid": "0x9624",
+ "pid": "0x0011",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "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":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":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":7, "y":3}, {"x":8, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}]
diff --git a/keyboards/ocean/stealth/config.h b/keyboards/ocean/stealth/config.h
index ab1860332e..b0240c4a0e 100644
--- a/keyboards/ocean/stealth/config.h
+++ b/keyboards/ocean/stealth/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x9624
-#define PRODUCT_ID 0x0010
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ocean
-#define PRODUCT Stealth
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 3
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/
#define MATRIX_ROW_PINS { D1 }
#define MATRIX_COL_PINS { D0, D4, C6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/ocean/stealth/info.json b/keyboards/ocean/stealth/info.json
index 3342319c8e..7b45dcd520 100644
--- a/keyboards/ocean/stealth/info.json
+++ b/keyboards/ocean/stealth/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Stealth",
+ "manufacturer": "Ocean",
"url": "",
"maintainer": "Ocean",
+ "usb": {
+ "vid": "0x9624",
+ "pid": "0x0010",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0, "w":2.25}, {"x":0, "y":1, "w":1.25}, {"x":1.25, "y":1}]
diff --git a/keyboards/ocean/sus/config.h b/keyboards/ocean/sus/config.h
index c3e2a3263a..2446daee7b 100644
--- a/keyboards/ocean/sus/config.h
+++ b/keyboards/ocean/sus/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x9624
-#define PRODUCT_ID 0x0009
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ocean
-#define PRODUCT Sus
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 3
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/
#define MATRIX_ROW_PINS { B5, B4, E6, D7 }
#define MATRIX_COL_PINS { C6, D4, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/ocean/sus/info.json b/keyboards/ocean/sus/info.json
index 3665038b6f..580379f25a 100644
--- a/keyboards/ocean/sus/info.json
+++ b/keyboards/ocean/sus/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "SUS",
+ "keyboard_name": "Sus",
+ "manufacturer": "Ocean",
"url": " ",
"maintainer": "Ocean",
+ "usb": {
+ "vid": "0x9624",
+ "pid": "0x0009",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x3": {
"layout": [
diff --git a/keyboards/ocean/wang_ergo/config.h b/keyboards/ocean/wang_ergo/config.h
index 62c9d2fca2..05b6b687ed 100644
--- a/keyboards/ocean/wang_ergo/config.h
+++ b/keyboards/ocean/wang_ergo/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x9624
-#define PRODUCT_ID 0x0008
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ocean
-#define PRODUCT Wang Ergo
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 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 { D1, D0, D4, C6, D7, E6, B4, B5, B6, B2, B3, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/ocean/wang_ergo/info.json b/keyboards/ocean/wang_ergo/info.json
index 5ade58c54c..04065cdb07 100644
--- a/keyboards/ocean/wang_ergo/info.json
+++ b/keyboards/ocean/wang_ergo/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Wang Ergo",
+ "manufacturer": "Ocean",
"url": "",
"maintainer": "oceeean",
+ "usb": {
+ "vid": "0x9624",
+ "pid": "0x0008",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
diff --git a/keyboards/ocean/wang_v2/config.h b/keyboards/ocean/wang_v2/config.h
index f5f1e9231c..e9953e63cc 100644
--- a/keyboards/ocean/wang_v2/config.h
+++ b/keyboards/ocean/wang_v2/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x9624
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ocean
-#define PRODUCT Wang V2
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 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 { D1, D0, D4, C6, D7, E6, B4, B5, B6, B2, B3, B1, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/ocean/wang_v2/info.json b/keyboards/ocean/wang_v2/info.json
index 310f448956..7a04f23e1b 100644
--- a/keyboards/ocean/wang_v2/info.json
+++ b/keyboards/ocean/wang_v2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Wang V2",
+ "manufacturer": "Ocean",
"url": "",
"maintainer": "Ocean",
+ "usb": {
+ "vid": "0x9624",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"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":0.75, "y":1, "w":1.25}, {"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":1.75}, {"x":0.25, "y":2, "w":1.75}, {"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, "w":1.25}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3, "w":1.25}, {"x":2.5, "y":3, "w":1.25}, {"x":3.75, "y":3, "w":1.25}, {"x":5, "y":3, "w":2}, {"x":7, "y":3, "w":2}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}]
diff --git a/keyboards/ocean/yuri/config.h b/keyboards/ocean/yuri/config.h
index d8313fd71f..e04d70a50b 100644
--- a/keyboards/ocean/yuri/config.h
+++ b/keyboards/ocean/yuri/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/ocean/yuri/info.json b/keyboards/ocean/yuri/info.json
index 68d9668579..458c11d091 100644
--- a/keyboards/ocean/yuri/info.json
+++ b/keyboards/ocean/yuri/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Yuri",
+ "manufacturer": "Ocean",
"url": "tokopedia.com/strat0s",
"maintainer": "Ocean",
+ "usb": {
+ "vid": "0x9624",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0},
diff --git a/keyboards/oddball/config.h b/keyboards/oddball/config.h
index cfb134c4e3..30e16490c8 100644
--- a/keyboards/oddball/config.h
+++ b/keyboards/oddball/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xCA49
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Alexander Tulloh
-#define PRODUCT Oddball
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
@@ -56,4 +49,4 @@
// #define BOOTMAGIC_LITE_COLUMN 0
#define ADNS9800_CS_PIN SPI_SS_PIN
-#define PMW3360_CS_PIN SPI_SS_PIN
+#define PMW33XX_CS_PIN SPI_SS_PIN
diff --git a/keyboards/oddball/info.json b/keyboards/oddball/info.json
index ab1eb1f2e7..84e512dbdc 100644
--- a/keyboards/oddball/info.json
+++ b/keyboards/oddball/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Oddball",
+ "manufacturer": "Alexander Tulloh",
"url": "https://atulloh.github.io/oddball",
"maintainer": "Alexander Tulloh",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xCA49",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/oddball/v1/config.h b/keyboards/oddball/v1/config.h
index 96aa56f822..7a33a7049a 100644
--- a/keyboards/oddball/v1/config.h
+++ b/keyboards/oddball/v1/config.h
@@ -28,4 +28,3 @@
*/
#define MATRIX_ROW_PINS { F6, B5, B6, F7 }
#define MATRIX_COL_PINS { D6, D7, B4, D3, C6, C7 }
-#define UNUSED_PINS { B7, D4, D5, E6, F0, F1, F4, F5 }
diff --git a/keyboards/oddball/v2/config.h b/keyboards/oddball/v2/config.h
index 9ba3bb8dfb..793d305931 100644
--- a/keyboards/oddball/v2/config.h
+++ b/keyboards/oddball/v2/config.h
@@ -28,4 +28,3 @@
*/
#define MATRIX_ROW_PINS { D4, E6, D7, C6 }
#define MATRIX_COL_PINS { B7, B5, B4, F5, F6, F7 }
-#define UNUSED_PINS { D3, D5, C7, F1, F0, B6, F4 }
diff --git a/keyboards/oddball/v2_1/config.h b/keyboards/oddball/v2_1/config.h
index 6be3e8a248..9f138d7d52 100644
--- a/keyboards/oddball/v2_1/config.h
+++ b/keyboards/oddball/v2_1/config.h
@@ -28,4 +28,3 @@
*/
#define MATRIX_ROW_PINS { D4, E6, D7, C6 }
#define MATRIX_COL_PINS { B6, B5, B4, F5, F6, F7 }
-#define UNUSED_PINS { D3, D5, C7, F1, F0, B7, F4 }
diff --git a/keyboards/oddforge/vea/config.h b/keyboards/oddforge/vea/config.h
index 44f5264017..43a75a7f03 100644
--- a/keyboards/oddforge/vea/config.h
+++ b/keyboards/oddforge/vea/config.h
@@ -18,13 +18,6 @@ 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 0xFFFE
-#define PRODUCT_ID 0x4155
-#define DEVICE_VER 0x0100
-#define MANUFACTURER OddForge
-#define PRODUCT VE.A
-
/* matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 15
diff --git a/keyboards/oddforge/vea/info.json b/keyboards/oddforge/vea/info.json
index 471d04068d..e2ab0d97a3 100644
--- a/keyboards/oddforge/vea/info.json
+++ b/keyboards/oddforge/vea/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "VE.A",
+ "manufacturer": "OddForge",
"url": "https://drop.com/buy/ve-a",
"maintainer": "MajorKoos",
+ "usb": {
+ "vid": "0xFFFE",
+ "pid": "0x4155",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"5,0", "x":2.25, "y":0}, {"label":"5,1", "x":3.25, "y":0}, {"label":"5,2", "x":4.25, "y":0}, {"label":"5,3", "x":5.25, "y":0}, {"label":"5,4", "x":6.25, "y":0}, {"label":"5,5", "x":7.25, "y":0}, {"label":"5,6", "x":8.25, "y":0}, {"label":"5,8", "x":10.75, "y":0}, {"label":"5,9", "x":11.75, "y":0}, {"label":"5,10", "x":12.75, "y":0}, {"label":"5,11", "x":13.75, "y":0}, {"label":"5,12", "x":14.75, "y":0}, {"label":"5,13", "x":15.75, "y":0}, {"label":"6,11", "x":16.75, "y":0}, {"label":"7,11", "x":17.75, "y":0}, {"label":"6,13", "x":18.75, "y":0}, {"label":"6,1", "x":0, "y":1}, {"label":"7,1", "x":1, "y":1}, {"label":"4,0", "x":2.25, "y":1}, {"label":"4,1", "x":3.25, "y":1}, {"label":"4,2", "x":4.25, "y":1}, {"label":"4,3", "x":5.25, "y":1}, {"label":"4,4", "x":6.25, "y":1}, {"label":"4,5", "x":7.25, "y":1}, {"label":"4,6", "x":8.25, "y":1}, {"label":"4,8", "x":10.75, "y":1}, {"label":"4,9", "x":11.75, "y":1}, {"label":"4,10", "x":12.75, "y":1}, {"label":"4,11", "x":13.75, "y":1}, {"label":"4,12", "x":14.75, "y":1}, {"label":"4,13", "x":15.75, "y":1}, {"label":"4,14", "x":16.75, "y":1, "w":2}, {"label":"6,10", "x":18.75, "y":1}, {"label":"6,2", "x":0, "y":2}, {"label":"7,2", "x":1, "y":2}, {"label":"3,0", "x":2.25, "y":2, "w":1.5}, {"label":"3,1", "x":3.75, "y":2}, {"label":"3,2", "x":4.75, "y":2}, {"label":"3,3", "x":5.75, "y":2}, {"label":"3,4", "x":6.75, "y":2}, {"label":"3,5", "x":7.75, "y":2}, {"label":"1,8", "x":10.25, "y":2}, {"label":"1,9", "x":11.25, "y":2}, {"label":"1,10", "x":12.25, "y":2}, {"label":"1,11", "x":13.25, "y":2}, {"label":"1,12", "x":14.25, "y":2}, {"label":"1,13", "x":15.25, "y":2}, {"label":"1,14", "x":16.25, "y":2}, {"label":"2,14", "x":17.25, "y":2, "w":1.5}, {"label":"7,10", "x":18.75, "y":2}, {"label":"6,3", "x":0, "y":3}, {"label":"7,3", "x":1, "y":3}, {"label":"2,0", "x":2.25, "y":3, "w":1.75}, {"label":"2,1", "x":4, "y":3}, {"label":"2,2", "x":5, "y":3}, {"label":"2,3", "x":6, "y":3}, {"label":"2,4", "x":7, "y":3}, {"label":"2,5", "x":8, "y":3}, {"label":"2,8", "x":10.5, "y":3}, {"label":"2,9", "x":11.5, "y":3}, {"label":"2,10", "x":12.5, "y":3}, {"label":"2,11", "x":13.5, "y":3}, {"label":"2,12", "x":14.5, "y":3}, {"label":"2,13", "x":15.5, "y":3}, {"label":"3,13", "x":16.5, "y":3, "w":2.25}, {"label":"6,12", "x":18.75, "y":3}, {"label":"6,4", "x":0, "y":4}, {"label":"7,4", "x":1, "y":4}, {"label":"1,0", "x":2.25, "y":4, "w":2.25}, {"label":"1,1", "x":4.5, "y":4}, {"label":"1,2", "x":5.5, "y":4}, {"label":"1,3", "x":6.5, "y":4}, {"label":"1,4", "x":7.5, "y":4}, {"label":"1,5", "x":8.5, "y":4}, {"label":"3,8", "x":11, "y":4}, {"label":"3,9", "x":12, "y":4}, {"label":"3,10", "x":13, "y":4}, {"label":"3,11", "x":14, "y":4}, {"label":"3,12", "x":15, "y":4}, {"label":"3,14", "x":16, "y":4, "w":1.75}, {"label":"6,8", "x":17.75, "y":4}, {"label":"7,12", "x":18.75, "y":4}, {"label":"6,5", "x":0, "y":5}, {"label":"7,5", "x":1, "y":5}, {"label":"0,0", "x":2.25, "y":5, "w":1.25}, {"label":"0,1", "x":3.5, "y":5, "w":1.25}, {"label":"0,2", "x":4.75, "y":5, "w":1.25}, {"label":"7,7", "x":6, "y":5, "w":2}, {"label":"6,6", "x":8, "y":5}, {"label":"6,14", "x":10.5, "y":5, "w":2.75}, {"label":"0,10", "x":13.25, "y":5, "w":1.25}, {"label":"0,9", "x":14.5, "y":5}, {"label":"0,8", "x":15.5, "y":5, "w":1.25}, {"label":"7,8", "x":16.75, "y":5}, {"label":"6,9", "x":17.75, "y":5}, {"label":"7,9", "x":18.75, "y":5}]
diff --git a/keyboards/odelia/config.h b/keyboards/odelia/config.h
index 10803b81a1..c69ebcac30 100644
--- a/keyboards/odelia/config.h
+++ b/keyboards/odelia/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6BE3
-#define PRODUCT_ID 0xA129
-#define DEVICE_VER 0x0001
-#define MANUFACTURER InterpolKeeb
-#define PRODUCT Odelia
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS {B3, B7, B1, B2, B0, F4, F0, F1, D4, B6}
#define MATRIX_COL_PINS {B5, B4, D7, D6, E6, D0, D1, D2, D3, D5}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/odelia/info.json b/keyboards/odelia/info.json
index b204795952..dacdc49760 100644
--- a/keyboards/odelia/info.json
+++ b/keyboards/odelia/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "odelia",
+ "keyboard_name": "Odelia",
+ "manufacturer": "InterpolKeeb",
"url": "",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0x6BE3",
+ "pid": "0xA129",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ogre/ergo_single/config.h b/keyboards/ogre/ergo_single/config.h
index 5c0c09b3c7..788ace6f5c 100644
--- a/keyboards/ogre/ergo_single/config.h
+++ b/keyboards/ogre/ergo_single/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER ctrlshiftba
-#define PRODUCT ergo_single
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
diff --git a/keyboards/ogre/ergo_single/info.json b/keyboards/ogre/ergo_single/info.json
index ca9223545d..fd446099f5 100644
--- a/keyboards/ogre/ergo_single/info.json
+++ b/keyboards/ogre/ergo_single/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ogre Ergo Single",
+ "manufacturer": "ctrlshiftba",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ogre/ergo_split/config.h b/keyboards/ogre/ergo_split/config.h
index 4bf45c05e7..43a9894f3d 100644
--- a/keyboards/ogre/ergo_split/config.h
+++ b/keyboards/ogre/ergo_split/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER ctrlshiftba
-#define PRODUCT ergo_split
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
diff --git a/keyboards/ogre/ergo_split/info.json b/keyboards/ogre/ergo_split/info.json
index eaf5c4e389..2e3e2f73a8 100644
--- a/keyboards/ogre/ergo_split/info.json
+++ b/keyboards/ogre/ergo_split/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ogre Ergo Split",
+ "manufacturer": "ctrlshiftba",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ok60/config.h b/keyboards/ok60/config.h
index faccfcc646..96fff1b590 100644
--- a/keyboards/ok60/config.h
+++ b/keyboards/ok60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B36 // K6 - ok60
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER OK60
-#define PRODUCT OK60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B5, B4, D7, D6, D4 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, B6, C6, C7, F1, F0, E6, B3, B2, B1, B0 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B7
diff --git a/keyboards/ok60/info.json b/keyboards/ok60/info.json
index 8207604dda..19144808e2 100644
--- a/keyboards/ok60/info.json
+++ b/keyboards/ok60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "OK60",
+ "manufacturer": "OK60",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B36",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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/ok60/keymaps/ptillemans/keymap.c b/keyboards/ok60/keymaps/ptillemans/keymap.c
index ff777847f6..44e9f39973 100644
--- a/keyboards/ok60/keymaps/ptillemans/keymap.c
+++ b/keyboards/ok60/keymaps/ptillemans/keymap.c
@@ -11,7 +11,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_60_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, KC_DEL,
+ QK_BOOT, KC_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_UP, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_PSCR, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, BL_DEC, BL_TOGG, BL_INC, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______,
diff --git a/keyboards/om60/config.h b/keyboards/om60/config.h
new file mode 100644
index 0000000000..624579be7e
--- /dev/null
+++ b/keyboards/om60/config.h
@@ -0,0 +1,104 @@
+/*
+Copyright 2021 Salicylic_Acid
+Copyright 2021 3araht
+Copyright 2022 jun10000
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 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 }
+
+/* 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 69
+ #define RGBLIGHT_LED_MAP { \
+ 0, 1, 2, 3, \
+ 8, 7, 6, 5, 4, \
+ 9,10,11,12,13, \
+ 18,17,16,15,14, \
+ 19,20,21,22,23, \
+ 28,27,26,25,24, \
+ 29,30,31,32,33, \
+ 38,37,36,35,34, \
+ 39,40,41,42,43, \
+ 48,47,46,45,44, \
+ 49,50,51,52,53, \
+ 58,57,56,55,54, \
+ 59,60,61,62,63, \
+ 68,67,66,65,64 \
+ }
+
+ #define RGBLIGHT_SLEEP
+#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
+
+#ifndef IOS_DEVICE_ENABLE
+ #define RGBLIGHT_LIMIT_VAL 90
+ #define RGBLIGHT_VAL_STEP 17
+#else
+ #define RGBLIGHT_LIMIT_VAL 30
+ #define RGBLIGHT_VAL_STEP 4
+#endif
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+
+#if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE)
+// USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
+// 120 RGBoff, OLEDoff
+// 120 OLED
+// 330 RGB 6
+// 300 RGB 32
+// 310 OLED & RGB 32
+ #define USB_MAX_POWER_CONSUMPTION 400
+#else
+ // fix iPhone and iPad power adapter issue
+ // iOS device need lessthan 100
+ #define USB_MAX_POWER_CONSUMPTION 100
+#endif
+
+#define TAP_CODE_DELAY 10
+
+#define ENCODERS_PAD_A { B4 }
+#define ENCODERS_PAD_B { B5 }
diff --git a/keyboards/om60/info.json b/keyboards/om60/info.json
new file mode 100644
index 0000000000..319dca0071
--- /dev/null
+++ b/keyboards/om60/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "OM60",
+ "manufacturer": "jun10000",
+ "url": "https://github.com/jun10000",
+ "maintainer": "jun10000",
+ "usb": {
+ "vid": "0x6A6E",
+ "pid": "0x0001",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"4,0", "x":1.5, "y":0}, {"label":"4,1", "x":2.5, "y":0}, {"label":"4,2", "x":3.5, "y":0}, {"label":"4,3", "x":4.5, "y":0}, {"label":"4,4", "x":5.5, "y":0}, {"label":"4,5", "x":6.5, "y":0}, {"label":"4,6", "x":7.5, "y":0}, {"label":"4,7", "x":8.5, "y":0}, {"label":"9,0", "x":9.5, "y":0}, {"label":"9,1", "x":10.5, "y":0}, {"label":"9,2", "x":11.5, "y":0}, {"label":"9,3", "x":12.5, "y":0}, {"label":"9,4", "x":13.5, "y":0}, {"label":"0,1", "x":1.5, "y":1}, {"label":"0,2", "x":2.5, "y":1}, {"label":"0,3", "x":3.5, "y":1}, {"label":"0,4", "x":4.5, "y":1}, {"label":"0,5", "x":5.5, "y":1}, {"label":"0,6", "x":6.5, "y":1}, {"label":"0,7", "x":7.5, "y":1}, {"label":"5,0", "x":8.5, "y":1}, {"label":"5,1", "x":9.5, "y":1}, {"label":"5,2", "x":10.5, "y":1}, {"label":"5,3", "x":11.5, "y":1}, {"label":"5,4", "x":12.5, "y":1}, {"label":"5,5", "x":13.5, "y":1}, {"label":"1,0", "x":0, "y":2}, {"label":"1,1", "x":1.5, "y":2}, {"label":"1,2", "x":2.5, "y":2}, {"label":"1,3", "x":3.5, "y":2}, {"label":"1,4", "x":4.5, "y":2}, {"label":"1,5", "x":5.5, "y":2}, {"label":"1,6", "x":6.5, "y":2}, {"label":"1,7", "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":11.5, "y":2}, {"label":"6,4", "x":12.5, "y":2}, {"label":"6,5", "x":13.5, "y":2}, {"label":"2,0", "x":0, "y":3}, {"label":"2,1", "x":1.5, "y":3}, {"label":"2,2", "x":2.5, "y":3}, {"label":"2,3", "x":3.5, "y":3}, {"label":"2,4", "x":4.5, "y":3}, {"label":"2,5", "x":5.5, "y":3}, {"label":"2,6", "x":6.5, "y":3}, {"label":"2,7", "x":7.5, "y":3}, {"label":"7,0", "x":8.5, "y":3}, {"label":"7,1", "x":9.5, "y":3}, {"label":"7,2", "x":10.5, "y":3}, {"label":"7,3", "x":11.5, "y":3}, {"label":"7,4", "x":12.5, "y":3}, {"label":"7,5", "x":13.5, "y":3}, {"label":"3,0", "x":0, "y":4}, {"label":"3,1", "x":1.5, "y":4}, {"label":"3,2", "x":2.5, "y":4}, {"label":"3,3", "x":3.5, "y":4}, {"label":"3,4", "x":4.5, "y":4}, {"label":"3,5", "x":5.5, "y":4}, {"label":"3,6", "x":6.5, "y":4}, {"label":"3,7", "x":7.5, "y":4}, {"label":"8,0", "x":8.5, "y":4}, {"label":"8,1", "x":9.5, "y":4}, {"label":"8,2", "x":10.5, "y":4}, {"label":"8,3", "x":11.5, "y":4}, {"label":"8,4", "x":12.5, "y":4}, {"label":"8,5", "x":13.5, "y":4}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/om60/keymaps/default/keymap.c b/keyboards/om60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..336b98d3bf
--- /dev/null
+++ b/keyboards/om60/keymaps/default/keymap.c
@@ -0,0 +1,70 @@
+/*
+Copyright 2021 Salicylic_Acid
+Copyright 2021 3araht
+Copyright 2022 jun10000
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(_______, _______) },
+ [2] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ //,-----------------------------------------------------------------------------------------------------------------------------.
+ 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(0), KC_GRV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(1), 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,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(2),KC_LCTRL, KC_LGUI, KC_LALT, KC_DEL, KC_LBRC, KC_SPC, KC_SPC, KC_RBRC, KC_RALT, KC_CAPS, 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_SLSH, KC_ASTR, KC_MINS, KC_PLUS, KC_BSPC, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(0), _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOT, KC_ENT, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------------------------------------------------------------------------------'
+ ),
+ [2] = LAYOUT(
+ //,-----------------------------------------------------------------------------------------------------------------------------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EE_CLR,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, KC_UP, _______, _______, _______,RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(0), _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------------------------------------------------------------------------------'
+ )
+};
diff --git a/keyboards/om60/keymaps/default/rules.mk b/keyboards/om60/keymaps/default/rules.mk
new file mode 100644
index 0000000000..8acf3d642b
--- /dev/null
+++ b/keyboards/om60/keymaps/default/rules.mk
@@ -0,0 +1,2 @@
+LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/om60/keymaps/via/keymap.c b/keyboards/om60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..beb4ab962b
--- /dev/null
+++ b/keyboards/om60/keymaps/via/keymap.c
@@ -0,0 +1,84 @@
+/*
+Copyright 2021 Salicylic_Acid
+Copyright 2021 3araht
+Copyright 2022 jun10000
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(_______, _______) },
+ [2] = { ENCODER_CCW_CW(_______, _______) },
+ [3] = { ENCODER_CCW_CW(_______, _______) },
+};
+#endif
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ //,-----------------------------------------------------------------------------------------------------------------------------.
+ 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(0), KC_GRV, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(1), 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,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(2),KC_LCTRL, KC_LGUI, KC_LALT, KC_DEL, KC_LBRC, KC_SPC, KC_SPC, KC_RBRC, KC_RALT, KC_CAPS, 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_SLSH, KC_ASTR, KC_MINS, KC_PLUS, KC_BSPC, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(0), _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOT, KC_ENT, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------------------------------------------------------------------------------'
+ ),
+ [2] = LAYOUT(
+ //,-----------------------------------------------------------------------------------------------------------------------------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EE_CLR,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, KC_UP, _______, _______, _______,RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(0), _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------------------------------------------------------------------------------'
+ ),
+ [3] = LAYOUT(
+ //,-----------------------------------------------------------------------------------------------------------------------------.
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(0), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ TO(2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ //|-----------------------------------------------------------------------------------------------------------------------------'
+ )
+};
diff --git a/keyboards/om60/keymaps/via/rules.mk b/keyboards/om60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1189f4ad19
--- /dev/null
+++ b/keyboards/om60/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/om60/matrix.c b/keyboards/om60/matrix.c
new file mode 100644
index 0000000000..3686780468
--- /dev/null
+++ b/keyboards/om60/matrix.c
@@ -0,0 +1,166 @@
+/*
+Copyright 2012-2018 Jun Wako, Jack Humbert, Yiancar
+Copyright 2022 jun10000
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You 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"
+
+#if (MATRIX_COLS <= 8)
+# define ROW_SHIFTER ((uint8_t)1)
+#elif (MATRIX_COLS <= 16)
+# define ROW_SHIFTER ((uint16_t)1)
+#elif (MATRIX_COLS <= 32)
+# define ROW_SHIFTER ((uint32_t)1)
+#endif
+
+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);
+ wait_us(30);
+
+ // 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 : (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);
+ wait_us(30);
+
+ // 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] |= (ROW_SHIFTER << current_col);
+ }
+ else
+ {
+ // Pin HI, clear col bit
+ current_matrix[tmp] &= ~(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 (uint8_t)changed;
+}
diff --git a/keyboards/om60/om60.c b/keyboards/om60/om60.c
new file mode 100644
index 0000000000..9e66d6721c
--- /dev/null
+++ b/keyboards/om60/om60.c
@@ -0,0 +1,19 @@
+/*
+Copyright 2021 Salicylic_Acid
+Copyright 2022 jun10000
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "om60.h"
diff --git a/keyboards/om60/om60.h b/keyboards/om60/om60.h
new file mode 100644
index 0000000000..669a610031
--- /dev/null
+++ b/keyboards/om60/om60.h
@@ -0,0 +1,41 @@
+/*
+Copyright 2021 Salicylic_Acid
+Copyright 2022 jun10000
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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( \
+ L01, L05, L10, L15, L20, L25, L30, L35, L40, R45, R50, R55, R60, R65, \
+ L06, L11, L16, L21, L26, L31, L36, R41, R46, R51, R56, R61, R66, \
+ L02, L07, L12, L17, L22, L27, L32, L37, R42, R47, R52, R57, R62, R67, \
+ L03, L08, L13, L18, L23, L28, L33, L38, R43, R48, R53, R58, R63, R68, \
+ L04, L09, L14, L19, L24, L29, L34, L39, R44, R49, R54, R59, R64, R69 \
+ ) \
+ { \
+ { L01, L06, L11, L16, L21, L26, L31, L36 }, \
+ { L02, L07, L12, L17, L22, L27, L32, L37 }, \
+ { L03, L08, L13, L18, L23, L28, L33, L38 }, \
+ { L04, L09, L14, L19, L24, L29, L34, L39 }, \
+ { L05, L10, L15, L20, L25, L30, L35, L40 }, \
+ { R41, R46, R51, R56, R61, R66, KC_NO, KC_NO }, \
+ { R42, R47, R52, R57, R62, R67, KC_NO, KC_NO }, \
+ { R43, R48, R53, R58, R63, R68, KC_NO, KC_NO }, \
+ { R44, R49, R54, R59, R64, R69, KC_NO, KC_NO }, \
+ { R45, R50, R55, R60, R65, KC_NO, KC_NO, KC_NO } \
+ }
diff --git a/keyboards/om60/readme.md b/keyboards/om60/readme.md
new file mode 100644
index 0000000000..5d9d096d56
--- /dev/null
+++ b/keyboards/om60/readme.md
@@ -0,0 +1,27 @@
+# OM60
+
+![OM60](https://i.imgur.com/WoO8oezh.jpg)
+
+The 60% Poker compatible Ortholinear keyboard or jumbo Macropad.
+
+* Keyboard Maintainer: [jun10000](https://github.com/jun10000)
+* Hardware Supported: OM60 PCB, Pro Micro
+* Hardware Availability: [junsgamingstore.booth.pm](https://junsgamingstore.booth.pm/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make om60:default
+
+Flashing example for this keyboard:
+
+ make om60: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 `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/om60/rules.mk b/keyboards/om60/rules.mk
new file mode 100644
index 0000000000..9dc673edbf
--- /dev/null
+++ b/keyboards/om60/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
+
+ENCODER_ENABLE = yes
+
+CUSTOM_MATRIX = lite
+
+SRC += matrix.c
diff --git a/keyboards/omkbd/ergodash/mini/config.h b/keyboards/omkbd/ergodash/mini/config.h
index b936e0f54e..67fe7e1603 100644
--- a/keyboards/omkbd/ergodash/mini/config.h
+++ b/keyboards/omkbd/ergodash/mini/config.h
@@ -20,13 +20,6 @@ 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 0x6060
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Omkbd
-#define PRODUCT ErgoDashmini
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/omkbd/ergodash/mini/info.json b/keyboards/omkbd/ergodash/mini/info.json
index 1a0c1766f6..d8e9bc634f 100644
--- a/keyboards/omkbd/ergodash/mini/info.json
+++ b/keyboards/omkbd/ergodash/mini/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ErgoDash mini",
+ "keyboard_name": "ErgoDash Mini",
+ "manufacturer": "Omkbd",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"L00", "x":0, "y":1.375}, {"label":"L01", "x":1, "y":1.375}, {"label":"L02", "x":2, "y":1.125}, {"label":"L03", "x":3, "y":1}, {"label":"L04", "x":4, "y":1.125}, {"label":"L05", "x":5, "y":1.25}, {"label":"L06", "x":6, "y":1.75}, {"label":"R00", "x":11, "y":1.75}, {"label":"R01", "x":12, "y":1.25}, {"label":"R02", "x":13, "y":1.125}, {"label":"R03", "x":14, "y":1}, {"label":"R04", "x":15, "y":1.125}, {"label":"R05", "x":16, "y":1.375}, {"label":"R06", "x":17, "y":1.375}, {"label":"L10", "x":0, "y":2.375}, {"label":"L11", "x":1, "y":2.375}, {"label":"L12", "x":2, "y":2.125}, {"label":"L13", "x":3, "y":2}, {"label":"L14", "x":4, "y":2.125}, {"label":"L15", "x":5, "y":2.25}, {"label":"L16", "x":6, "y":2.75}, {"label":"R10", "x":11, "y":2.75}, {"label":"R11", "x":12, "y":2.25}, {"label":"R12", "x":13, "y":2.125}, {"label":"R13", "x":14, "y":2}, {"label":"R14", "x":15, "y":2.125}, {"label":"R15", "x":16, "y":2.375}, {"label":"R16", "x":17, "y":2.375}, {"label":"L20", "x":0, "y":3.375}, {"label":"L21", "x":1, "y":3.375}, {"label":"L22", "x":2, "y":3.125}, {"label":"L23", "x":3, "y":3}, {"label":"L24", "x":4, "y":3.125}, {"label":"L25", "x":5, "y":3.25}, {"label":"L26", "x":6.5, "y":4.25}, {"label":"R20", "x":10.5, "y":4.25}, {"label":"R21", "x":12, "y":3.25}, {"label":"R22", "x":13, "y":3.125}, {"label":"R23", "x":14, "y":3}, {"label":"R24", "x":15, "y":3.125}, {"label":"R25", "x":16, "y":3.375}, {"label":"R26", "x":17, "y":3.375}, {"label":"L30", "x":0, "y":4.375}, {"label":"L31", "x":1, "y":4.375}, {"label":"L32", "x":2, "y":4.125}, {"label":"L33", "x":3, "y":4}, {"label":"L34", "x":5.5, "y":5.25}, {"label":"L35", "x":6.5, "y":5.25}, {"label":"L36", "x":7.5, "y":4.25, "h":2}, {"label":"R30", "x":9.5, "y":4.25, "h":2}, {"label":"R31", "x":10.5, "y":5.25}, {"label":"R32", "x":11.5, "y":5.25}, {"label":"R33", "x":14, "y":4}, {"label":"R34", "x":15, "y":4.125}, {"label":"R35", "x":16, "y":4.375}, {"label":"R36", "x":17, "y":4.375}]
diff --git a/keyboards/omkbd/ergodash/mini/keymaps/default/keymap.c b/keyboards/omkbd/ergodash/mini/keymaps/default/keymap.c
index 1d18383652..d1016ecc5d 100644
--- a/keyboards/omkbd/ergodash/mini/keymaps/default/keymap.c
+++ b/keyboards/omkbd/ergodash/mini/keymaps/default/keymap.c
@@ -1,10 +1,12 @@
#include QMK_KEYBOARD_H
-#define _QWERTY 0
-#define _LOWER 1
-#define _RAISE 2
-#define _ADJUST 16
+enum layer_names {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/omkbd/ergodash/mini/keymaps/toyoshimahidenori/keymap.c b/keyboards/omkbd/ergodash/mini/keymaps/toyoshimahidenori/keymap.c
index 7224af7a00..5be2825861 100644
--- a/keyboards/omkbd/ergodash/mini/keymaps/toyoshimahidenori/keymap.c
+++ b/keyboards/omkbd/ergodash/mini/keymaps/toyoshimahidenori/keymap.c
@@ -99,7 +99,7 @@ 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, _______, _______,
+ _______, QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI,_______, _______, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______,
_______, _______, BL_TOGG, BL_BRTG, BL_INC , BL_DEC ,_______, _______, _______, _______, _______, _______, _______, _______,
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/omkbd/ergodash/rev1/config.h b/keyboards/omkbd/ergodash/rev1/config.h
index 07282cdad2..56fe46f52a 100644
--- a/keyboards/omkbd/ergodash/rev1/config.h
+++ b/keyboards/omkbd/ergodash/rev1/config.h
@@ -20,13 +20,6 @@ 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 0x6060
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Omkbd
-#define PRODUCT ErgoDash
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/omkbd/ergodash/rev1/info.json b/keyboards/omkbd/ergodash/rev1/info.json
index bb491b5f50..1d78f82bd7 100644
--- a/keyboards/omkbd/ergodash/rev1/info.json
+++ b/keyboards/omkbd/ergodash/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ErgoDash rev1.2",
+ "manufacturer": "Omkbd",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_4key": {
"layout": [
diff --git a/keyboards/omkbd/ergodash/rev1/keymaps/default/keymap.c b/keyboards/omkbd/ergodash/rev1/keymaps/default/keymap.c
index c5e0a30147..0251700433 100644
--- a/keyboards/omkbd/ergodash/rev1/keymaps/default/keymap.c
+++ b/keyboards/omkbd/ergodash/rev1/keymaps/default/keymap.c
@@ -1,10 +1,12 @@
#include QMK_KEYBOARD_H
-#define _QWERTY 0
-#define _LOWER 1
-#define _RAISE 2
-#define _ADJUST 16
+enum layer_names {
+ _QWERTY,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/omkbd/ergodash/rev1/keymaps/greenshadowmaker/keymap.c b/keyboards/omkbd/ergodash/rev1/keymaps/greenshadowmaker/keymap.c
index ea79ae194b..f8b36dff03 100644
--- a/keyboards/omkbd/ergodash/rev1/keymaps/greenshadowmaker/keymap.c
+++ b/keyboards/omkbd/ergodash/rev1/keymaps/greenshadowmaker/keymap.c
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,----------------------------------------------------------------------------------------------------------------------.
*/
[_ADJUST] = LAYOUT(
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, BL_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
RAISE, XXXXXXX, RGB_HUI, RGB_SAI, RGB_VAI, BL_INC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
EEP_RST, XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSFT,
diff --git a/keyboards/omkbd/ergodash/rev1/keymaps/shadowprogr/keymap.c b/keyboards/omkbd/ergodash/rev1/keymaps/shadowprogr/keymap.c
index 9c450bca97..8f58643840 100644
--- a/keyboards/omkbd/ergodash/rev1/keymaps/shadowprogr/keymap.c
+++ b/keyboards/omkbd/ergodash/rev1/keymaps/shadowprogr/keymap.c
@@ -146,7 +146,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT( \
XXXXXXX, WINDOWS, LINUX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, BL_STEP, BL_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, \
- RESET, XXXXXXX, XXXXXXX, BL_BRTG, BL_INC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, \
+ QK_BOOT, XXXXXXX, XXXXXXX, BL_BRTG, BL_INC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DEC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, LOWER, XXXXXXX, XXXXXXX, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX \
)
diff --git a/keyboards/omkbd/ergodash/rev1/keymaps/tw1t611/keymap.c b/keyboards/omkbd/ergodash/rev1/keymaps/tw1t611/keymap.c
index 6d080f2af1..938f3950fd 100644
--- a/keyboards/omkbd/ergodash/rev1/keymaps/tw1t611/keymap.c
+++ b/keyboards/omkbd/ergodash/rev1/keymaps/tw1t611/keymap.c
@@ -15,7 +15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______ ,_______ ,_______ ,_______ , KC_LCTL ,KC_SPC ,KC_LSFT , MO(_MOD),KC_ENT ,KC_LGUI , _______ ,_______ ,_______ ,_______
),
[_MOD] = LAYOUT(
- KC_F11 ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,RGB_MOD , RESET ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F12 ,
+ KC_F11 ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,RGB_MOD , QK_BOOT,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F12 ,
DE_CIRC ,DE_QUOT ,DE_DQUO ,DE_LCBR ,DE_RCBR ,DE_GRV ,RGB_TOG , _______ ,DE_PERC ,DE_PLUS ,DE_MINS ,DE_ASTR ,DE_SLSH ,DE_BSLS ,
DE_TILD ,DE_EXLM ,DE_DLR ,DE_LPRN ,DE_RPRN ,DE_AMPR ,RGB_M_P , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,DE_QUES ,DE_PIPE ,
_______ ,DE_AT ,DE_EURO ,DE_LBRC ,DE_RBRC ,_______ ,_______ , _______ ,DE_HASH ,DE_LABK ,DE_SCLN ,DE_COLN ,DE_RABK ,DE_SECT ,
diff --git a/keyboards/omkbd/runner3680/3x6/config.h b/keyboards/omkbd/runner3680/3x6/config.h
index af8e6eb32b..33a4bcc8a2 100644
--- a/keyboards/omkbd/runner3680/3x6/config.h
+++ b/keyboards/omkbd/runner3680/3x6/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0005
-#define MANUFACTURER Omkbd
-#define PRODUCT runner3680
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 6
diff --git a/keyboards/omkbd/runner3680/3x6/info.json b/keyboards/omkbd/runner3680/3x6/info.json
index c54fe46106..404fda2b92 100644
--- a/keyboards/omkbd/runner3680/3x6/info.json
+++ b/keyboards/omkbd/runner3680/3x6/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "runner3680 3x6",
+ "manufacturer": "Omkbd",
"url": "",
"maintainer": "omkbd",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.5"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/omkbd/runner3680/3x7/config.h b/keyboards/omkbd/runner3680/3x7/config.h
index 789dda45fd..44c54091e5 100644
--- a/keyboards/omkbd/runner3680/3x7/config.h
+++ b/keyboards/omkbd/runner3680/3x7/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0005
-#define MANUFACTURER Omkbd
-#define PRODUCT runner3680
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 6
diff --git a/keyboards/omkbd/runner3680/3x7/info.json b/keyboards/omkbd/runner3680/3x7/info.json
index 1a5ac8221e..f19b5a2a1e 100644
--- a/keyboards/omkbd/runner3680/3x7/info.json
+++ b/keyboards/omkbd/runner3680/3x7/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "runner3680 3x7",
+ "manufacturer": "Omkbd",
"url": "",
"maintainer": "omkbd",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.5"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/omkbd/runner3680/3x8/config.h b/keyboards/omkbd/runner3680/3x8/config.h
index b1d1db1171..307916f645 100644
--- a/keyboards/omkbd/runner3680/3x8/config.h
+++ b/keyboards/omkbd/runner3680/3x8/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0005
-#define MANUFACTURER Omkbd
-#define PRODUCT runner3680
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 6
diff --git a/keyboards/omkbd/runner3680/3x8/info.json b/keyboards/omkbd/runner3680/3x8/info.json
index d8e71f97e0..8e7ddf00ff 100644
--- a/keyboards/omkbd/runner3680/3x8/info.json
+++ b/keyboards/omkbd/runner3680/3x8/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "runner3680 3x8",
+ "manufacturer": "Omkbd",
"url": "",
"maintainer": "omkbd",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.5"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/omkbd/runner3680/4x6/config.h b/keyboards/omkbd/runner3680/4x6/config.h
index 12596acd9a..9b9d7a578a 100644
--- a/keyboards/omkbd/runner3680/4x6/config.h
+++ b/keyboards/omkbd/runner3680/4x6/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0005
-#define MANUFACTURER Omkbd
-#define PRODUCT runner3680
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/omkbd/runner3680/4x6/info.json b/keyboards/omkbd/runner3680/4x6/info.json
index 41ea3e0061..de912073ee 100644
--- a/keyboards/omkbd/runner3680/4x6/info.json
+++ b/keyboards/omkbd/runner3680/4x6/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "runner3680 4x6",
+ "manufacturer": "Omkbd",
"url": "",
"maintainer": "omkbd",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.5"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/omkbd/runner3680/4x7/config.h b/keyboards/omkbd/runner3680/4x7/config.h
index bbfdd383c0..74541c0d3f 100644
--- a/keyboards/omkbd/runner3680/4x7/config.h
+++ b/keyboards/omkbd/runner3680/4x7/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0005
-#define MANUFACTURER Omkbd
-#define PRODUCT runner3680
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/omkbd/runner3680/4x7/info.json b/keyboards/omkbd/runner3680/4x7/info.json
index 43876dd57e..2c587c38e6 100644
--- a/keyboards/omkbd/runner3680/4x7/info.json
+++ b/keyboards/omkbd/runner3680/4x7/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "runner3680 4x7",
+ "manufacturer": "Omkbd",
"url": "",
"maintainer": "omkbd",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.5"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/omkbd/runner3680/4x8/config.h b/keyboards/omkbd/runner3680/4x8/config.h
index 82e2dc7ee8..401ad2ddb6 100644
--- a/keyboards/omkbd/runner3680/4x8/config.h
+++ b/keyboards/omkbd/runner3680/4x8/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0005
-#define MANUFACTURER Omkbd
-#define PRODUCT runner3680
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/omkbd/runner3680/4x8/info.json b/keyboards/omkbd/runner3680/4x8/info.json
index 4502a86404..e955ea4178 100644
--- a/keyboards/omkbd/runner3680/4x8/info.json
+++ b/keyboards/omkbd/runner3680/4x8/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "runner3680 4x8",
+ "manufacturer": "Omkbd",
"url": "",
"maintainer": "omkbd",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.5"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/omkbd/runner3680/5x6/config.h b/keyboards/omkbd/runner3680/5x6/config.h
index d2f288546d..7c127c22e0 100644
--- a/keyboards/omkbd/runner3680/5x6/config.h
+++ b/keyboards/omkbd/runner3680/5x6/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0005
-#define MANUFACTURER Omkbd
-#define PRODUCT runner3680
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/omkbd/runner3680/5x6/info.json b/keyboards/omkbd/runner3680/5x6/info.json
index 02c65ec7cc..58c399e07b 100644
--- a/keyboards/omkbd/runner3680/5x6/info.json
+++ b/keyboards/omkbd/runner3680/5x6/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "runner3680 5x6",
+ "manufacturer": "Omkbd",
"url": "",
"maintainer": "omkbd",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.5"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/omkbd/runner3680/5x6_5x8/config.h b/keyboards/omkbd/runner3680/5x6_5x8/config.h
index 815da24950..6348f10eb1 100644
--- a/keyboards/omkbd/runner3680/5x6_5x8/config.h
+++ b/keyboards/omkbd/runner3680/5x6_5x8/config.h
@@ -16,13 +16,6 @@
#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
diff --git a/keyboards/omkbd/runner3680/5x6_5x8/info.json b/keyboards/omkbd/runner3680/5x6_5x8/info.json
index e8fb4c0927..eebbfe11fb 100644
--- a/keyboards/omkbd/runner3680/5x6_5x8/info.json
+++ b/keyboards/omkbd/runner3680/5x6_5x8/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "runner3680 5x6+5x8",
+ "manufacturer": "Omkbd",
"url": "",
"maintainer": "omkbd",
+ "usb": {
+ "vid": "0x3680",
+ "pid": "0x5658",
+ "device_version": "0.0.5"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/omkbd/runner3680/5x7/config.h b/keyboards/omkbd/runner3680/5x7/config.h
index 6bcbeeda54..9a1a0a4110 100644
--- a/keyboards/omkbd/runner3680/5x7/config.h
+++ b/keyboards/omkbd/runner3680/5x7/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0005
-#define MANUFACTURER Omkbd
-#define PRODUCT runner3680
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/omkbd/runner3680/5x7/info.json b/keyboards/omkbd/runner3680/5x7/info.json
index c60177d38c..d103c8949a 100644
--- a/keyboards/omkbd/runner3680/5x7/info.json
+++ b/keyboards/omkbd/runner3680/5x7/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "runner3680 5x7",
+ "manufacturer": "Omkbd",
"url": "",
"maintainer": "omkbd",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.5"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/omkbd/runner3680/5x8/config.h b/keyboards/omkbd/runner3680/5x8/config.h
index 29cfba78d1..c8a65dd171 100644
--- a/keyboards/omkbd/runner3680/5x8/config.h
+++ b/keyboards/omkbd/runner3680/5x8/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0005
-#define MANUFACTURER Omkbd
-#define PRODUCT runner3680
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/omkbd/runner3680/5x8/info.json b/keyboards/omkbd/runner3680/5x8/info.json
index 70e3cc7833..4556ae7520 100644
--- a/keyboards/omkbd/runner3680/5x8/info.json
+++ b/keyboards/omkbd/runner3680/5x8/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "runner3680 5x8",
+ "manufacturer": "Omkbd",
"url": "",
"maintainer": "omkbd",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.5"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/omkbd/runner3680/5x8/keymaps/JIS/keymap.c b/keyboards/omkbd/runner3680/5x8/keymaps/JIS/keymap.c
index 515a6fcb07..14302bee5a 100644
--- a/keyboards/omkbd/runner3680/5x8/keymaps/JIS/keymap.c
+++ b/keyboards/omkbd/runner3680/5x8/keymaps/JIS/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-------------------------------------------------------. ,--------------------------------------------------------.
* | | | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
* |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
- * | | | |RGBRST| RESET| | | | | | | | | | | | |
+ * | | | |RGBRST| QK_BOOT| | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
* | | | | TOG | HUI | SAI | VAI | | | | | | | | | | |
* |------+------+------+------+------+------+------+------| |------+------+------+------+------+------+------+------|
@@ -61,7 +61,7 @@ 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, RGBRST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/omnikeyish/config.h b/keyboards/omnikeyish/config.h
index 008f6b753b..6d02623b21 100644
--- a/keyboards/omnikeyish/config.h
+++ b/keyboards/omnikeyish/config.h
@@ -4,13 +4,6 @@
#define KEYBOARD_PCB_REV 11
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0666
-#define DEVICE_VER 0x1337
-#define MANUFACTURER Henrik O. Sørensen
-#define PRODUCT Omnikey(-ish) Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 23
diff --git a/keyboards/omnikeyish/info.json b/keyboards/omnikeyish/info.json
index 62a342d13e..e56e9dfa1a 100644
--- a/keyboards/omnikeyish/info.json
+++ b/keyboards/omnikeyish/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Omnikey-(ish)",
+ "manufacturer": "Henrik O. Sørensen",
"url": "https://github.com/henrikosorensen/keyboard_pcbs/tree/master/omnikeyish_pcb",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0666",
+ "device_version": "13.3.7"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [ {"label":"P11", "x":0, "y":0}, {"label":"P12", "x":1, "y":0}, {"label":"Esc", "x":2.6667, "y":0}, {"label":"F1", "x":4.6667, "y":0}, {"label":"F2", "x":5.6667, "y":0}, {"label":"F3", "x":6.6667, "y":0}, {"label":"F4", "x":7.6667, "y":0}, {"label":"F5", "x":9.1667, "y":0}, {"label":"F6", "x":10.1667, "y":0}, {"label":"F7", "x":11.1667, "y":0}, {"label":"F8", "x":12.1667, "y":0}, {"label":"F9", "x":13.6667, "y":0}, {"label":"F10", "x":14.6667, "y":0}, {"label":"F11", "x":15.6667, "y":0}, {"label":"F12", "x":16.6667, "y":0}, {"label":"PrtSc", "x":18.1667, "y":0}, {"label":"Scroll Lock", "x":19.1667, "y":0}, {"label":"Pause", "x":20.1667, "y":0}, {"x":21.6667, "y":0}, {"x":22.6667, "y":0}, {"x":23.6667, "y":0}, {"x":24.6667, "y":0},
diff --git a/keyboards/onekeyco/dango40/config.h b/keyboards/onekeyco/dango40/config.h
index fceb8fb252..8ab7a5b183 100644
--- a/keyboards/onekeyco/dango40/config.h
+++ b/keyboards/onekeyco/dango40/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xE9B9
-#define DEVICE_VER 0x0001
-#define MANUFACTURER One Key Company
-#define PRODUCT Dango40
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
diff --git a/keyboards/onekeyco/dango40/info.json b/keyboards/onekeyco/dango40/info.json
index e26e92697b..4305346827 100644
--- a/keyboards/onekeyco/dango40/info.json
+++ b/keyboards/onekeyco/dango40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dango40",
+ "manufacturer": "One Key Company",
"url": "https://github.com/swiftrax",
"maintainer": "Swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE9B9",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/onekeyco/dango40/readme.md b/keyboards/onekeyco/dango40/readme.md
index 4b12f55957..870ba74676 100644
--- a/keyboards/onekeyco/dango40/readme.md
+++ b/keyboards/onekeyco/dango40/readme.md
@@ -9,7 +9,7 @@
## 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
+ * **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Make example for flashing this keyboard (after setting up your build environment):
diff --git a/keyboards/opendeck/32/info.json b/keyboards/opendeck/32/info.json
index ad354e7506..8e22d925b1 100644
--- a/keyboards/opendeck/32/info.json
+++ b/keyboards/opendeck/32/info.json
@@ -1,5 +1,11 @@
{
- "keyboard_name": "OpenDeck 32",
+ "keyboard_name": "OpenDeck32",
+ "manufacturer": "OpenDeck",
+ "usb": {
+ "vid": "0x4345",
+ "pid": "0x2EC0",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x8": {
"layout": [
diff --git a/keyboards/opendeck/32/rev1/config.h b/keyboards/opendeck/32/rev1/config.h
index 73967671d0..6a87ad86b4 100644
--- a/keyboards/opendeck/32/rev1/config.h
+++ b/keyboards/opendeck/32/rev1/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-// USB Device descriptor parameter
-#define VENDOR_ID 0x4345
-#define PRODUCT_ID 0x2EC0
-#define DEVICE_VER 0x0001
-#define MANUFACTURER OpenDeck
-#define PRODUCT OpenDeck32
-
// Key matrix (TtB, LtR)
#define MATRIX_ROWS 4
#define MATRIX_COLS 8
diff --git a/keyboards/orange75/config.h b/keyboards/orange75/config.h
index 2ebaeb3e73..e2d37a26ac 100644
--- a/keyboards/orange75/config.h
+++ b/keyboards/orange75/config.h
@@ -1,12 +1,5 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEEB
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Fox-Lab
-#define PRODUCT Orange75
-
/* key matrix size */
#define MATRIX_ROWS 15
#define MATRIX_COLS 6
@@ -14,7 +7,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { E6,F0, F1, F4, F5, F6, F7, C7, C6, B6, B4, D7, D4, D5, D6 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, B7, B3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/orange75/info.json b/keyboards/orange75/info.json
index 3cfd040d0f..1fe4752635 100644
--- a/keyboards/orange75/info.json
+++ b/keyboards/orange75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Orange75",
+ "manufacturer": "Fox-Lab",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEEB",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/org60/config.h b/keyboards/org60/config.h
index 42dbb83169..a6a64476cd 100644
--- a/keyboards/org60/config.h
+++ b/keyboards/org60/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 大橘å­å¤–设 (Large orange peripherals)
-#define PRODUCT Org60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 }
-#define UNUSED_PINS
/* Backlight Setup */
#define BACKLIGHT_PIN F5
diff --git a/keyboards/org60/info.json b/keyboards/org60/info.json
index 2327468632..a889730258 100644
--- a/keyboards/org60/info.json
+++ b/keyboards/org60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Org60",
+ "manufacturer": "大橘å­å¤–设 (Large orange peripherals)",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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}, {"label":"K49", "x":14, "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":"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":"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}, {"label":"K47", "x":12, "y":3}, {"label":"K3D", "x":13, "y":3}, {"label":"K3C", "x":14, "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":"K45", "x":3.75, "y":4, "w":6.25}, {"label":"K4A", "x":10, "y":4}, {"label":"K4B", "x":11, "y":4}, {"label":"K48", "x":12, "y":4}, {"label":"K4C", "x":13, "y":4}, {"label":"K4D", "x":14, "y":4}]
diff --git a/keyboards/org60/keymaps/boardy/keymap.c b/keyboards/org60/keymaps/boardy/keymap.c
index b85e475824..52eea78a8d 100644
--- a/keyboards/org60/keymaps/boardy/keymap.c
+++ b/keyboards/org60/keymaps/boardy/keymap.c
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//--------------------------------------------------------------------------------------------------------------------------------------|
// | | | | | | | | | | | | | |
// | | | | | | | | | | | | | |
- RESET, KC_7, KC_8, KC_9, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, KC_NO, KC_INS, KC_PAUS, KC_HOME, KC_END, KC_SLEP,
+ QK_BOOT, KC_7, KC_8, KC_9, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, KC_NO, KC_INS, KC_PAUS, KC_HOME, KC_END, KC_SLEP,
//--------------------------------------------------------------------------------------------------------------------------------------|
// | | | | | | | | | | | | |
// | | | | | | | | | | | | |
diff --git a/keyboards/org60/keymaps/jarred/keymap.c b/keyboards/org60/keymaps/jarred/keymap.c
index 3397a1909c..3e0b5d45c8 100644
--- a/keyboards/org60/keymaps/jarred/keymap.c
+++ b/keyboards/org60/keymaps/jarred/keymap.c
@@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, KC_DEL ,KC_BSPC,_______,KC_HOME,KC_UP ,KC_END , KC_INS , _______, _______, _______, \
_______, _______, _______, KC_LSFT,KC_LCTL, KC_ENT, _______,KC_LEFT,KC_DOWN,KC_RGHT, KC_DEL , KC_DEL , _______, _______, \
_______, _______, _______, _______, _______,_______,_______,_______,KC_PGUP,KC_PGDN, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, RESET, _______),
+ _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______),
};
diff --git a/keyboards/ortho5by12/config.h b/keyboards/ortho5by12/config.h
index 61719eb295..f8b8de4259 100644
--- a/keyboards/ortho5by12/config.h
+++ b/keyboards/ortho5by12/config.h
@@ -16,15 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-/* VID & PID from vusb project, see tmk_core/protocol/vusb/USB-IDs-for-free.txt"*/
-// These VID/PID is not verified. Use at your own risk.
-#define VENDOR_ID 0x16C0
-#define PRODUCT_ID 0x27DB
-#define DEVICE_VER 0x0002
-#define MANUFACTURER /u/squeezeonein
-#define PRODUCT ortho5by12
-
/* key matrix size, duplex 10x6 */
#define MATRIX_ROWS 10
#define MATRIX_COLS 6
@@ -41,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
0 1 2 3 4 5 6 7 8 9 */
#define MATRIX_ROW_PINS { B5, B1, B2, B3, B4, C0, D5, D6, D7, B0 }
#define MATRIX_COL_PINS { C2, D0, D1, D4, C3, C1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/ortho5by12/info.json b/keyboards/ortho5by12/info.json
index 56a4a09372..5bda0d68fb 100644
--- a/keyboards/ortho5by12/info.json
+++ b/keyboards/ortho5by12/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ortho5by12",
+ "manufacturer": "/u/squeezeonein",
"url": "https://github.com/itsnoteasy/misc/blob/master/ortho5by12.zip",
"maintainer": "itsnoteasy",
+ "usb": {
+ "vid": "0x16C0",
+ "pid": "0x27DB",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_ortho_5x12_1x2uC": {
"layout": [
diff --git a/keyboards/orthocode/config.h b/keyboards/orthocode/config.h
index e548fe1d4e..644d7ba255 100644
--- a/keyboards/orthocode/config.h
+++ b/keyboards/orthocode/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x3415 // orthocodekb.com
-#define PRODUCT_ID 0x0001 // orthocode
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Jrodna
-#define PRODUCT OrthoCode
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS {B0, B1, B2, B3, B4}
#define MATRIX_COL_PINS {C4, C3, C2, C1, C0, D7, D6, A7, A4, A5, A6, A3, A2, A1, A0}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/orthocode/info.json b/keyboards/orthocode/info.json
index c193ab44f9..92058b2654 100644
--- a/keyboards/orthocode/info.json
+++ b/keyboards/orthocode/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "OrthoCode",
+ "manufacturer": "Jrodna",
"url": "https://github.com/Jrodna/OrthoCode",
"maintainer": "Jrodna",
+ "usb": {
+ "vid": "0x3415",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/orthodox/keymaps/default/keymap.c b/keyboards/orthodox/keymaps/default/keymap.c
index 1e06d7106d..3ad20a288a 100644
--- a/keyboards/orthodox/keymaps/default/keymap.c
+++ b/keyboards/orthodox/keymaps/default/keymap.c
@@ -25,12 +25,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 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 layer_names {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/orthodox/keymaps/oscillope/keymap.c b/keyboards/orthodox/keymaps/oscillope/keymap.c
index 1f4aefca90..07496ddb43 100644
--- a/keyboards/orthodox/keymaps/oscillope/keymap.c
+++ b/keyboards/orthodox/keymaps/oscillope/keymap.c
@@ -55,7 +55,7 @@ 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_INS, _______, _______, CC_PRN, CC_BRC, CC_CBR, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, \
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU \
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU \
),
[_RAISE] = LAYOUT( \
diff --git a/keyboards/orthodox/keymaps/rfvizarra/keymap.c b/keyboards/orthodox/keymaps/rfvizarra/keymap.c
index d8c836dc12..1fc88ce722 100644
--- a/keyboards/orthodox/keymaps/rfvizarra/keymap.c
+++ b/keyboards/orthodox/keymaps/rfvizarra/keymap.c
@@ -94,7 +94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, _______, AG_SWAP, QWERTY , COLEMAK, DVORAK, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
)
diff --git a/keyboards/orthodox/keymaps/shaymdev/keymap.c b/keyboards/orthodox/keymaps/shaymdev/keymap.c
index 54ae7e3972..4c955fa2bb 100644
--- a/keyboards/orthodox/keymaps/shaymdev/keymap.c
+++ b/keyboards/orthodox/keymaps/shaymdev/keymap.c
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT(
- TO_DV, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLEP,
+ TO_DV, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLEP,
RGB_TOG, RGB_MOD, VLK_TOG, AU_ON, AU_OFF, AG_NORM, _______, _______, _______, _______, AG_SWAP, QWERTY, DVORAK, _______, _______, _______,
RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
diff --git a/keyboards/orthodox/keymaps/xyverz/keymap.c b/keyboards/orthodox/keymaps/xyverz/keymap.c
index 0417c1a4a0..4e78aaf347 100644
--- a/keyboards/orthodox/keymaps/xyverz/keymap.c
+++ b/keyboards/orthodox/keymaps/xyverz/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT ( \
KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12 , \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, QWERTY , COLEMAK, DVORAK, _______, _______, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, QWERTY , COLEMAK, DVORAK, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
)
diff --git a/keyboards/orthodox/rev1/config.h b/keyboards/orthodox/rev1/config.h
index db45e2d75d..1f536aa6f6 100644
--- a/keyboards/orthodox/rev1/config.h
+++ b/keyboards/orthodox/rev1/config.h
@@ -23,13 +23,6 @@ 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 0x3060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER deductivemonkee
-#define PRODUCT Monkeebs Orthodox Rev.1
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 6
diff --git a/keyboards/orthodox/rev1/info.json b/keyboards/orthodox/rev1/info.json
index 49ca9b31b8..d539fc8be2 100644
--- a/keyboards/orthodox/rev1/info.json
+++ b/keyboards/orthodox/rev1/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Monkeebs Orthodox Rev.1",
+ "manufacturer": "deductivemonkee",
"maintainer": "drashna",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/orthodox/rev3/config.h b/keyboards/orthodox/rev3/config.h
index 678a3603f1..b69aa4b109 100644
--- a/keyboards/orthodox/rev3/config.h
+++ b/keyboards/orthodox/rev3/config.h
@@ -23,13 +23,6 @@ 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 0x3060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER deductivemonkee
-#define PRODUCT Monkeebs Orthodox Rev.3
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 6
diff --git a/keyboards/orthodox/rev3/info.json b/keyboards/orthodox/rev3/info.json
index 309769c626..6769fe7a30 100644
--- a/keyboards/orthodox/rev3/info.json
+++ b/keyboards/orthodox/rev3/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Monkeebs Orthodox Rev.3",
+ "manufacturer": "deductivemonkee",
"maintainer": "drashna",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/orthodox/rev3_teensy/config.h b/keyboards/orthodox/rev3_teensy/config.h
index d21d50e579..5cd92b005c 100644
--- a/keyboards/orthodox/rev3_teensy/config.h
+++ b/keyboards/orthodox/rev3_teensy/config.h
@@ -23,13 +23,6 @@ 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 0x3060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER deductivemonkee
-#define PRODUCT Monkeebs Orthodox Rev.3 (Teensy)
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 6
diff --git a/keyboards/orthodox/rev3_teensy/info.json b/keyboards/orthodox/rev3_teensy/info.json
index a89c370396..91a73c5cb3 100644
--- a/keyboards/orthodox/rev3_teensy/info.json
+++ b/keyboards/orthodox/rev3_teensy/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Monkeebs Orthodox Rev.3 (Teensy)",
+ "manufacturer": "deductivemonkee",
"maintainer": "drashna",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/owlab/jelly_epoch/hotswap/config.h b/keyboards/owlab/jelly_epoch/hotswap/config.h
index eb2998de7a..54aa5978e2 100644
--- a/keyboards/owlab/jelly_epoch/hotswap/config.h
+++ b/keyboards/owlab/jelly_epoch/hotswap/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter*/
-#define VENDOR_ID 0x4F53 //0x4F53 OS for owl studio
-#define PRODUCT_ID 0x4A4C //0x4A4C JL for jelly, 0x4A53 JS for jelly solder
-#define DEVICE_VER 0x0001
-#define MANUFACTURER OwLab
-#define PRODUCT Jelly Epoch
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 14
diff --git a/keyboards/owlab/jelly_epoch/hotswap/info.json b/keyboards/owlab/jelly_epoch/hotswap/info.json
index 01af496bb2..c5ee4ff522 100644
--- a/keyboards/owlab/jelly_epoch/hotswap/info.json
+++ b/keyboards/owlab/jelly_epoch/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "jelly epoch",
+ "keyboard_name": "Jelly Epoch Hotswap",
+ "manufacturer": "OwLab",
"url": "https://www.popkeyboard.com/products/jrrgvdsyu47wer",
"maintainer": "Owlab",
+ "usb": {
+ "vid": "0x4F53",
+ "pid": "0x4A4C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/owlab/jelly_epoch/soldered/config.h b/keyboards/owlab/jelly_epoch/soldered/config.h
index cd27b71dd4..54aa5978e2 100644
--- a/keyboards/owlab/jelly_epoch/soldered/config.h
+++ b/keyboards/owlab/jelly_epoch/soldered/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter*/
-#define VENDOR_ID 0x4F53 //0x4F53 OS for owl studio
-#define PRODUCT_ID 0x4A53 //0x4A4C JL for jelly, 0x4A53 JS for jelly solder
-#define DEVICE_VER 0x0001
-#define MANUFACTURER OwLab
-#define PRODUCT Jelly Epoch
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 14
diff --git a/keyboards/owlab/jelly_epoch/soldered/info.json b/keyboards/owlab/jelly_epoch/soldered/info.json
index 357634b481..59358ae99f 100644
--- a/keyboards/owlab/jelly_epoch/soldered/info.json
+++ b/keyboards/owlab/jelly_epoch/soldered/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "jelly",
+ "keyboard_name": "Jelly Epoch Soldered",
+ "manufacturer": "OwLab",
"url": "https://www.popkeyboard.com/products/jrrgvdsyu47wer",
"maintainer": "Owlab",
+ "usb": {
+ "vid": "0x4F53",
+ "pid": "0x4A53",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/owlab/spring/config.h b/keyboards/owlab/spring/config.h
index d4eef1e021..8b2f9b6340 100644
--- a/keyboards/owlab/spring/config.h
+++ b/keyboards/owlab/spring/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/owlab/spring/info.json b/keyboards/owlab/spring/info.json
index bbeee6628b..2664c4ba3c 100644
--- a/keyboards/owlab/spring/info.json
+++ b/keyboards/owlab/spring/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Spring",
+ "manufacturer": "OwLab",
"url": "",
"maintainer": "OwLab",
+ "usb": {
+ "vid": "0x4F53",
+ "pid": "0x5350",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_spring": {
"layout": [
diff --git a/keyboards/owlab/suit80/ansi/config.h b/keyboards/owlab/suit80/ansi/config.h
index 02c44da212..46cc4d82f7 100644
--- a/keyboards/owlab/suit80/ansi/config.h
+++ b/keyboards/owlab/suit80/ansi/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4F53 //0x4F53 OS for owl studio
-#define PRODUCT_ID 0x5355 //0x5355 SU for SUIT
-#define DEVICE_VER 0x0001
-#define MANUFACTURER OwLab
-#define PRODUCT SUIT80
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
diff --git a/keyboards/owlab/suit80/ansi/info.json b/keyboards/owlab/suit80/ansi/info.json
index b5833c6a60..bdfaccacb8 100644
--- a/keyboards/owlab/suit80/ansi/info.json
+++ b/keyboards/owlab/suit80/ansi/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "suit80",
+ "keyboard_name": "Suit80 ANSI",
+ "manufacturer": "OwLab",
"url": "",
"maintainer": "Owlab",
+ "usb": {
+ "vid": "0x4F53",
+ "pid": "0x5355",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/owlab/suit80/iso/config.h b/keyboards/owlab/suit80/iso/config.h
index 22968bac15..9aa3f00fb7 100644
--- a/keyboards/owlab/suit80/iso/config.h
+++ b/keyboards/owlab/suit80/iso/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4F53 // 0x4F53 OS for owl studio
-#define PRODUCT_ID 0x5349 //0x5355 SI for SUIT ISO
-#define DEVICE_VER 0x0001
-#define MANUFACTURER OwLab
-#define PRODUCT SUIT80 ISO
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
diff --git a/keyboards/owlab/suit80/iso/info.json b/keyboards/owlab/suit80/iso/info.json
index 7c911fe361..0818212330 100644
--- a/keyboards/owlab/suit80/iso/info.json
+++ b/keyboards/owlab/suit80/iso/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "suit80",
+ "keyboard_name": "Suit80 ISO",
+ "manufacturer": "OwLab",
"url": "",
"maintainer": "Owlab",
+ "usb": {
+ "vid": "0x4F53",
+ "pid": "0x5349",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/owlab/voice65/hotswap/config.h b/keyboards/owlab/voice65/hotswap/config.h
index 42f97036b3..507b1f75e2 100644
--- a/keyboards/owlab/voice65/hotswap/config.h
+++ b/keyboards/owlab/voice65/hotswap/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4F53
-#define PRODUCT_ID 0x564F
-#define DEVICE_VER 0x0001
-#define MANUFACTURER OwLab
-#define PRODUCT Voice65 Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/owlab/voice65/hotswap/info.json b/keyboards/owlab/voice65/hotswap/info.json
index 0481d1acea..006d87749a 100644
--- a/keyboards/owlab/voice65/hotswap/info.json
+++ b/keyboards/owlab/voice65/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "voice65 hotswap",
+ "keyboard_name": "Voice65 Hotswap",
+ "manufacturer": "OwLab",
"url": "https://www.popkeyboard.com/products/67968vn00mzx",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0x4F53",
+ "pid": "0x564F",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_65_ansi_blocker"
},
diff --git a/keyboards/owlab/voice65/soldered/config.h b/keyboards/owlab/voice65/soldered/config.h
index f0c68dc25b..74ab2db520 100644
--- a/keyboards/owlab/voice65/soldered/config.h
+++ b/keyboards/owlab/voice65/soldered/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4F53
-#define PRODUCT_ID 0x5657
-#define DEVICE_VER 0x0001
-#define MANUFACTURER OwLab
-#define PRODUCT Voice65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/owlab/voice65/soldered/info.json b/keyboards/owlab/voice65/soldered/info.json
index ce33ffc083..7412c89546 100644
--- a/keyboards/owlab/voice65/soldered/info.json
+++ b/keyboards/owlab/voice65/soldered/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "voice65 soldered",
+ "keyboard_name": "Voice65 Soldered",
+ "manufacturer": "OwLab",
"url": "https://www.popkeyboard.com/products/67968vn00mzx",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0x4F53",
+ "pid": "0x5657",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/p3d/glitch/config.h b/keyboards/p3d/glitch/config.h
index e7f78123d9..475a2bd442 100644
--- a/keyboards/p3d/glitch/config.h
+++ b/keyboards/p3d/glitch/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x7033
-#define PRODUCT_ID 0x3568
-#define DEVICE_VER 0x0001
-#define MANUFACTURER P3D Store
-#define PRODUCT Glitch
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -43,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* A Custom matrix.c is used to poll the port expander C6 shows that the pins are hardwired there */
#define MATRIX_ROW_PINS { D5, D6, B6, D7, C7, B4, B5, D3, D4, C6 }
#define MATRIX_COL_PINS { B2, D2, B3, B7, F5, F4, F1, F0 }
-#define UNUSED_PINS
#define RGB_DI_PIN B1
#define RGBLED_NUM 25
diff --git a/keyboards/p3d/glitch/info.json b/keyboards/p3d/glitch/info.json
index 6445e200f8..5015a2e28f 100644
--- a/keyboards/p3d/glitch/info.json
+++ b/keyboards/p3d/glitch/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Glitch",
+ "manufacturer": "P3D Store",
"url": "https://p3dstore.com/products/p3d-glitch-group-buy",
"maintainer": "matthewdias",
+ "usb": {
+ "vid": "0x7033",
+ "pid": "0x3568",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{
diff --git a/keyboards/pabile/p18/config.h b/keyboards/pabile/p18/config.h
index 77351ca556..a13313413d 100644
--- a/keyboards/pabile/p18/config.h
+++ b/keyboards/pabile/p18/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6666
-#define PRODUCT_ID 0x6668
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Pabile
-#define PRODUCT P18 Macro Pad
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 5
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pin-out for PROMICRO */
#define MATRIX_ROW_PINS { D1, D0, D4, C6 }
#define MATRIX_COL_PINS { D2, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* Encoder position for PROMICRO */
#define ENCODERS_PAD_A { B6, F6 }
diff --git a/keyboards/pabile/p18/info.json b/keyboards/pabile/p18/info.json
index 57d734ab3d..d6338182c6 100644
--- a/keyboards/pabile/p18/info.json
+++ b/keyboards/pabile/p18/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Pabile 18",
+ "keyboard_name": "P18 Macro Pad",
+ "manufacturer": "Pabile",
"url": "https://pabileonline.blogspot.com/",
"maintainer": "Pabile",
+ "usb": {
+ "vid": "0x6666",
+ "pid": "0x6668",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/pabile/p20/info.json b/keyboards/pabile/p20/info.json
index 67e01dca85..e1fbb231ce 100644
--- a/keyboards/pabile/p20/info.json
+++ b/keyboards/pabile/p20/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "P20",
+ "manufacturer": "Pabile",
"url": "",
"maintainer": "pabile",
+ "usb": {
+ "vid": "0x6666",
+ "pid": "0x6667"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [
diff --git a/keyboards/pabile/p20/ver1/config.h b/keyboards/pabile/p20/ver1/config.h
index 94c600106b..231e491d9b 100644
--- a/keyboards/pabile/p20/ver1/config.h
+++ b/keyboards/pabile/p20/ver1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6666
-#define PRODUCT_ID 0x6667
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Pabile
-#define PRODUCT P20 ver1
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pin-out */
#define MATRIX_ROW_PINS { B3, B4, B5, D7, E6 }
#define MATRIX_COL_PINS { D0, B2, D4, B6 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { F5, F7 }
#define ENCODERS_PAD_B { F6, B1 }
diff --git a/keyboards/pabile/p20/ver1/info.json b/keyboards/pabile/p20/ver1/info.json
new file mode 100644
index 0000000000..18b5e4bd2b
--- /dev/null
+++ b/keyboards/pabile/p20/ver1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "P20 ver1",
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/pabile/p20/ver2/config.h b/keyboards/pabile/p20/ver2/config.h
index 0997001836..13bce5132d 100644
--- a/keyboards/pabile/p20/ver2/config.h
+++ b/keyboards/pabile/p20/ver2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6666
-#define PRODUCT_ID 0x6667
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Pabile
-#define PRODUCT P20 ver2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pin-out */
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { D1, D0, D4, B2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/pabile/p20/ver2/info.json b/keyboards/pabile/p20/ver2/info.json
new file mode 100644
index 0000000000..dae1f84edb
--- /dev/null
+++ b/keyboards/pabile/p20/ver2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "P20 ver2",
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/pabile/p40/config.h b/keyboards/pabile/p40/config.h
index f05ef6eb26..f90aefef0c 100644
--- a/keyboards/pabile/p40/config.h
+++ b/keyboards/pabile/p40/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6666
-#define PRODUCT_ID 0x6666
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Pabile
-#define PRODUCT P40 Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -39,7 +32,6 @@ for pro micro facing back of pcb
#define MATRIX_ROW_PINS { D4, E6, B4, B5 }
#define MATRIX_COL_PINS { D1, D0, B6, B2, B3, B1, F7, F6, F5, F4 }
*/
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/pabile/p40/info.json b/keyboards/pabile/p40/info.json
index 8a6c1327eb..ee7534c071 100644
--- a/keyboards/pabile/p40/info.json
+++ b/keyboards/pabile/p40/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Pabile 40",
+ "keyboard_name": "P40",
+ "manufacturer": "Pabile",
"url": "https://pabileonline.blogspot.com/",
"maintainer": "Pabile",
+ "usb": {
+ "vid": "0x6666",
+ "pid": "0x6666",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x10": {
"layout": [
diff --git a/keyboards/pabile/p40_ortho/config.h b/keyboards/pabile/p40_ortho/config.h
index 4fd8e7a533..5a8c1625d5 100644
--- a/keyboards/pabile/p40_ortho/config.h
+++ b/keyboards/pabile/p40_ortho/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6666
-#define PRODUCT_ID 0x6669
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Pabile
-#define PRODUCT P40 Ortho Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D1, D0, F4, F5 }
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B2, B3, B1, F7, F6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/pabile/p40_ortho/info.json b/keyboards/pabile/p40_ortho/info.json
index 38eb5bdb70..a630973622 100644
--- a/keyboards/pabile/p40_ortho/info.json
+++ b/keyboards/pabile/p40_ortho/info.json
@@ -1,5 +1,12 @@
{
+ "keyboard_name": "P40 Ortho",
+ "manufacturer": "Pabile",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x6666",
+ "pid": "0x6669",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x10": {
"layout": [
diff --git a/keyboards/pabile/p42/config.h b/keyboards/pabile/p42/config.h
index 2f7c5ce30a..0a6fe4a2fc 100644
--- a/keyboards/pabile/p42/config.h
+++ b/keyboards/pabile/p42/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6666
-#define PRODUCT_ID 0x6670
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Pabile
-#define PRODUCT P42 Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F1, F0, B1, B2, B3, D2, C7, D6, B7, B6, B5 }
*/
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/pabile/p42/info.json b/keyboards/pabile/p42/info.json
index 7cc34266d2..5c1c2c8589 100644
--- a/keyboards/pabile/p42/info.json
+++ b/keyboards/pabile/p42/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "P42",
+ "manufacturer": "Pabile",
"url": "https://pabileonline.blogspot.com/",
"maintainer": "Pabile",
+ "usb": {
+ "vid": "0x6666",
+ "pid": "0x6670",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/palette1202/config.h b/keyboards/palette1202/config.h
index e0be3bd6c7..d631ed8463 100644
--- a/keyboards/palette1202/config.h
+++ b/keyboards/palette1202/config.h
@@ -19,20 +19,12 @@ 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 0x1202
-#define DEVICE_VER 0x0001
-#define MANUFACTURER niltea
-#define PRODUCT Palette1202
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 5
#define MATRIX_ROW_PINS { B6, B2, B3 }
#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 }
-#define UNUSED_PINS { D2, D3, D4, B1 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/palette1202/info.json b/keyboards/palette1202/info.json
index e58f2fbb77..318a4c565c 100644
--- a/keyboards/palette1202/info.json
+++ b/keyboards/palette1202/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Palette1202",
+ "manufacturer": "niltea",
"url": "https://github.com/niltea/Palette1202",
"maintainer": "niltea",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1202",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/panc40/config.h b/keyboards/panc40/config.h
index e363b76dad..cc941d56af 100644
--- a/keyboards/panc40/config.h
+++ b/keyboards/panc40/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Panc Interactive
-#define PRODUCT Panc40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F0, F1, F4, F5 }
#define MATRIX_COL_PINS { F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/panc40/info.json b/keyboards/panc40/info.json
index 834fef0a5d..57989732c4 100644
--- a/keyboards/panc40/info.json
+++ b/keyboards/panc40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Panc40",
+ "manufacturer": "Panc Interactive",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/panc60/config.h b/keyboards/panc60/config.h
index 495f5a2d4d..5bf4d4edcd 100644
--- a/keyboards/panc60/config.h
+++ b/keyboards/panc60/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x422D
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Panc Interactive
-#define PRODUCT Panc60
-
#define RGBLED_NUM 12
#define MATRIX_ROWS 5
@@ -32,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B3, B4, B5, B6, B7 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/panc60/info.json b/keyboards/panc60/info.json
index 1d949b3be6..f3a1be6454 100644
--- a/keyboards/panc60/info.json
+++ b/keyboards/panc60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "panc60",
+ "keyboard_name": "Panc60",
+ "manufacturer": "Panc Interactive",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x422D",
+ "device_version": "2.0.0"
+ },
"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}, {"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, "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/papercranekeyboards/gerald65/config.h b/keyboards/papercranekeyboards/gerald65/config.h
index 9e795b1501..318671f298 100644
--- a/keyboards/papercranekeyboards/gerald65/config.h
+++ b/keyboards/papercranekeyboards/gerald65/config.h
@@ -5,13 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5012 //
-#define PRODUCT_ID 0x1501 // '21 keyboard 1
-#define DEVICE_VER 0x0001
-#define MANUFACTURER PaperCraneKeyboards
-#define PRODUCT gerald65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -28,7 +21,6 @@
*/
#define MATRIX_ROW_PINS { B7, D6, E6, B4, B5 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, D7, D4, D3, D2, D1, D0, B6, C6, C7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/papercranekeyboards/gerald65/info.json b/keyboards/papercranekeyboards/gerald65/info.json
index c9b08304b3..8de08c41bd 100644
--- a/keyboards/papercranekeyboards/gerald65/info.json
+++ b/keyboards/papercranekeyboards/gerald65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "gerald65",
+ "manufacturer": "PaperCraneKeyboards",
"url": "",
"maintainer": "PaperCraneKeyboards",
+ "usb": {
+ "vid": "0x5012",
+ "pid": "0x1501",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/papercranekeyboards/gerald65/readme.md b/keyboards/papercranekeyboards/gerald65/readme.md
index 2dafff9e20..0bc610dd11 100644
--- a/keyboards/papercranekeyboards/gerald65/readme.md
+++ b/keyboards/papercranekeyboards/gerald65/readme.md
@@ -22,6 +22,6 @@ 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 (located in the center)
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available. To do this, hold down the key to the right of the left spacebar (1u key in the center of bottom row), and then also press the key in the top right (by default, the delete key).
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. To do this, hold down the key to the right of the left spacebar (1u key in the center of bottom row), and then also press the key in the top right (by default, the delete key).
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/paprikman/albacore/config.h b/keyboards/paprikman/albacore/config.h
index 37a211726e..862f82ea54 100644
--- a/keyboards/paprikman/albacore/config.h
+++ b/keyboards/paprikman/albacore/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/paprikman/albacore/info.json b/keyboards/paprikman/albacore/info.json
index 494f228a32..5761467ac6 100644
--- a/keyboards/paprikman/albacore/info.json
+++ b/keyboards/paprikman/albacore/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Albacore",
+ "manufacturer": "paprikman",
"url": "https://github.com/paprikman/qmk_firmware/tree/master/keyboards/paprikman/albacore",
"maintainer": "paprikman",
+ "usb": {
+ "vid": "0x736D",
+ "pid": "0x000A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/paprikman/albacore/readme.md b/keyboards/paprikman/albacore/readme.md
index 57c113d42b..b8dacee6d7 100644
--- a/keyboards/paprikman/albacore/readme.md
+++ b/keyboards/paprikman/albacore/readme.md
@@ -21,6 +21,6 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## Bootloader
There are several ways to enter the bootloader:
-* **Using keycode**: Press the `RESET` key (if mapped)
+* **Using keycode**: Press the `QK_BOOT` 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/parallel/parallel_65/hotswap/config.h b/keyboards/parallel/parallel_65/hotswap/config.h
index ae730c3c9f..6abeea3bc8 100644
--- a/keyboards/parallel/parallel_65/hotswap/config.h
+++ b/keyboards/parallel/parallel_65/hotswap/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x504C
-#define PRODUCT_ID 0x5069
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Parallel Limited
-#define PRODUCT Parallel 65% Hotswap PCB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/parallel/parallel_65/hotswap/info.json b/keyboards/parallel/parallel_65/hotswap/info.json
index 28b1dda23e..ff15ff15df 100644
--- a/keyboards/parallel/parallel_65/hotswap/info.json
+++ b/keyboards/parallel/parallel_65/hotswap/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Parallel 65% Hotswap PCB",
+ "manufacturer": "Parallel Limited",
"maintainer": "matthewdias",
+ "usb": {
+ "vid": "0x504C",
+ "pid": "0x5069",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/parallel/parallel_65/soldered/config.h b/keyboards/parallel/parallel_65/soldered/config.h
index 2ff2492ad4..6abeea3bc8 100644
--- a/keyboards/parallel/parallel_65/soldered/config.h
+++ b/keyboards/parallel/parallel_65/soldered/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x504C
-#define PRODUCT_ID 0x5068
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Parallel Limited
-#define PRODUCT Parallel 65% PCB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/parallel/parallel_65/soldered/info.json b/keyboards/parallel/parallel_65/soldered/info.json
index 4b0ae27b00..182593f430 100644
--- a/keyboards/parallel/parallel_65/soldered/info.json
+++ b/keyboards/parallel/parallel_65/soldered/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Parallel 65% PCB",
+ "manufacturer": "Parallel Limited",
"maintainer": "matthewdias",
+ "usb": {
+ "vid": "0x504C",
+ "pid": "0x5068",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker_split_bs": {
"layout": [
diff --git a/keyboards/pdxkbc/config.h b/keyboards/pdxkbc/config.h
index ce6c79bc32..b24592942f 100644
--- a/keyboards/pdxkbc/config.h
+++ b/keyboards/pdxkbc/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5044 // PD
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Franklin Harding
-#define PRODUCT pdxkbc
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 2
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F7, B6, F4 }
#define MATRIX_COL_PINS { D1, E6 }
-#define UNUSED_PINS { D0, D4, C6, D7, B4, B5, F5, F6, B1, B3, B2 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/pdxkbc/info.json b/keyboards/pdxkbc/info.json
index 21631ccc2a..5b1e1e6684 100644
--- a/keyboards/pdxkbc/info.json
+++ b/keyboards/pdxkbc/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "pdxkbc",
+ "manufacturer": "Franklin Harding",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5044",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"reddit", "x":0, "y":0}, {"label":"discord", "x":1, "y":0}, {"label":"badge", "x":0, "y":1}, {"label":"hack", "x":1, "y":1}, {"label":"volu", "x":0, "y":2}, {"label":"vold", "x":1, "y":2}]
diff --git a/keyboards/pearl/config.h b/keyboards/pearl/config.h
index 2e9a2faf1d..8f17638549 100644
--- a/keyboards/pearl/config.h
+++ b/keyboards/pearl/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0348
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Pearl Boards
-#define PRODUCT Pearl
-
#define LED_NUM_LOCK_PIN D0
#define LED_CAPS_LOCK_PIN D1
#define LED_SCROLL_LOCK_PIN D6
@@ -40,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B0, B1, B2, B3 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3}
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/pearl/info.json b/keyboards/pearl/info.json
index 6b4cb0a5ac..e812245ef5 100644
--- a/keyboards/pearl/info.json
+++ b/keyboards/pearl/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Pearl",
+ "manufacturer": "Pearl Boards",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0348",
+ "device_version": "2.0.0"
+ },
"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":"Backspace", "x":12, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"A", "x":1.5, "y":1}, {"label":"S", "x":2.5, "y":1}, {"label":"D", "x":3.5, "y":1}, {"label":"F", "x":4.5, "y":1}, {"label":"G", "x":5.5, "y":1}, {"label":"H", "x":6.5, "y":1}, {"label":"J", "x":7.5, "y":1}, {"label":"K", "x":8.5, "y":1}, {"label":"L", "x":9.5, "y":1}, {"label":":", "x":10.5, "y":1}, {"label":"\\", "x":11.5, "y":1, "w":1.5}, {"label":"Caps Lock", "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":"Alt", "x":1.13, "y":3}, {"label":"Ctrl", "x":2.13, "y":3, "w":1.25}, {"label":"Win", "x":3.375, "y":3, "w":1.25}, {"label":"Shift", "x":4.625, "y":3, "w":2.25}, {"x":6.875, "y":3, "w":1.25}, {"x":8.125, "y":3, "w":1.5}, {"label":"Menu", "x":9.625, "y":3}, {"label":"Fn", "x":10.63, "y":3, "w":1.25}]
diff --git a/keyboards/pearl/keymaps/cijanzen/keymap.c b/keyboards/pearl/keymaps/cijanzen/keymap.c
index 896e157fd6..1b23cab992 100644
--- a/keyboards/pearl/keymaps/cijanzen/keymap.c
+++ b/keyboards/pearl/keymaps/cijanzen/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
// UTIL (Fn1+Fn3)
[4] = LAYOUT_all(
- KC_SLP, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, KC_PSCR, RESET,
+ KC_SLP, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, KC_PSCR, QK_BOOT,
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____, ____, ____, ____
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/**
* Status LED layer indicators courtesy of jetpacktuxedo's firmware
*/
-uint32_t layer_state_set_kb(uint32_t state)
+layer_state_t layer_state_set_kb(layer_state_t state)
{
if (state & (1<<1)) { // if we are on layer 1
PORTD |= (1 << PD0); // light num lock led
diff --git a/keyboards/pearl/keymaps/jetpacktuxedo/keymap.c b/keyboards/pearl/keymaps/jetpacktuxedo/keymap.c
index 759c6fdc7d..69118a59df 100644
--- a/keyboards/pearl/keymaps/jetpacktuxedo/keymap.c
+++ b/keyboards/pearl/keymaps/jetpacktuxedo/keymap.c
@@ -20,14 +20,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = 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_TRNS, RESET,
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, QK_BOOT,
KC_TRNS, 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, KC_TRNS, BL_INC, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
};
-uint32_t layer_state_set_kb(uint32_t state) {
+layer_state_t layer_state_set_kb(layer_state_t state) {
// if we are on layer 1
if (state & (1<<1)){
// light num lock led
diff --git a/keyboards/pearl/keymaps/phil/keymap.c b/keyboards/pearl/keymaps/phil/keymap.c
index 56326d423f..bca1278939 100755
--- a/keyboards/pearl/keymaps/phil/keymap.c
+++ b/keyboards/pearl/keymaps/phil/keymap.c
@@ -57,14 +57,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
TG(LIGHT), KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS
),
[LIGHT] = LAYOUT_all(
- RESET, KC_NO, BL_ON, BL_INC, BL_BRTG, RGB_M_P, RGB_M_B, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO,
+ QK_BOOT, KC_NO, BL_ON, BL_INC, BL_BRTG, RGB_M_P, RGB_M_B, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO,
KC_NO, KC_NO, BL_TOGG, BL_STEP, KC_NO, RGB_M_SN, RGB_M_K, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, KC_NO,
KC_NO, KC_NO, BL_OFF, BL_DEC, KC_NO, KC_NO, KC_NO, RGB_RMOD, RGB_M_SW, RGB_M_R, RGB_M_G, KC_NO,
TG(LIGHT), KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
),
};
-uint32_t layer_state_set_kb(uint32_t state) {
+layer_state_t layer_state_set_kb(layer_state_t state) {
if (state & (1<<QWERTY)){
PORTD &= ~(1 << PD0);
} else {
diff --git a/keyboards/pearl/keymaps/rask/keymap.c b/keyboards/pearl/keymaps/rask/keymap.c
index bafb2b9738..1ab4badb51 100644
--- a/keyboards/pearl/keymaps/rask/keymap.c
+++ b/keyboards/pearl/keymaps/rask/keymap.c
@@ -36,14 +36,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
____, ____, ____, ____, ____, ____, ____, ____, ____, ____, ____, KC_PSCR, ____,
____, ____, ____, ____, ____, ____, ____, ____, ____, KC_PGUP,____, ____,
____, ____, ____, ____, ____, ____, ____, ____, KC_HOME, KC_PGDN,KC_END, ____,
- RESET, ____, ____, ____, ____, ____, ____, ____
+ QK_BOOT, ____, ____, ____, ____, ____, ____, ____
),
};
/**
* Status LED layer indicators courtesy of jetpacktuxedo's firmware
*/
-uint32_t layer_state_set_kb(uint32_t state)
+layer_state_t layer_state_set_kb(layer_state_t state)
{
// if we are on layer 1
if (state & (1<<1)){
diff --git a/keyboards/pearlboards/atlas/config.h b/keyboards/pearlboards/atlas/config.h
index e35c7d0a90..a90e3e190b 100644
--- a/keyboards/pearlboards/atlas/config.h
+++ b/keyboards/pearlboards/atlas/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/pearlboards/atlas/info.json b/keyboards/pearlboards/atlas/info.json
index c3a924d0e4..2d5abf5b91 100644
--- a/keyboards/pearlboards/atlas/info.json
+++ b/keyboards/pearlboards/atlas/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Atlas",
- "maintainer": "Koobaczech",
+ "manufacturer": "Koobaczech",
"url": "",
+ "maintainer": "Koobaczech",
+ "usb": {
+ "vid": "0x6963",
+ "pid": "0x6964",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/pearlboards/atlas/readme.md b/keyboards/pearlboards/atlas/readme.md
index ac02df971b..5161dd2a55 100644
--- a/keyboards/pearlboards/atlas/readme.md
+++ b/keyboards/pearlboards/atlas/readme.md
@@ -18,5 +18,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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))`
+* **Physical reset button**: Briefly press the button on the back of the PCB labeled "QK_BOOT"
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` in conjunction with the key mapped to `MO(1))`
diff --git a/keyboards/pearlboards/pandora/config.h b/keyboards/pearlboards/pandora/config.h
index 5a9a997be5..85661f2993 100644
--- a/keyboards/pearlboards/pandora/config.h
+++ b/keyboards/pearlboards/pandora/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6963
-#define PRODUCT_ID 0x6963
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Koobaczech
-#define PRODUCT Pandora
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4, D7, D6, B3, B0 }
#define MATRIX_COL_PINS { D2, D1, D0, D3, D5, B5, B6, B7, D4, C6, C7, F0, F1, F4, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/pearlboards/pandora/info.json b/keyboards/pearlboards/pandora/info.json
index 9e26364553..10c3bba7ed 100644
--- a/keyboards/pearlboards/pandora/info.json
+++ b/keyboards/pearlboards/pandora/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pandora",
+ "manufacturer": "Koobaczech",
"url": "",
"maintainer": "Koobaczech",
+ "usb": {
+ "vid": "0x6963",
+ "pid": "0x6963",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"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}, {"label":"0,14", "x":14, "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":"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":"2,13", "x":13.75, "y":2, "w":1.25}, {"label":"3,0", "x":0, "y":3, "w":1.25}, {"label":"3,1", "x":1.25, "y":3}, {"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":"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":12.5, "y":4, "w":1.25}, {"label":"4,13", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/pearlboards/pearl/config.h b/keyboards/pearlboards/pearl/config.h
index 002c2a5f5f..ff114094a1 100644
--- a/keyboards/pearlboards/pearl/config.h
+++ b/keyboards/pearlboards/pearl/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/pearlboards/pearl/info.json b/keyboards/pearlboards/pearl/info.json
index 4a6619f394..a00c7b3cf9 100644
--- a/keyboards/pearlboards/pearl/info.json
+++ b/keyboards/pearlboards/pearl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pearl",
- "maintainer": "Koobaczech",
+ "manufacturer": "Koobaczech",
"url": "",
+ "maintainer": "Koobaczech",
+ "usb": {
+ "vid": "0x6963",
+ "pid": "0x6965",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/pearlboards/pearl/readme.md b/keyboards/pearlboards/pearl/readme.md
index 7679b270b3..e12d59c8b0 100644
--- a/keyboards/pearlboards/pearl/readme.md
+++ b/keyboards/pearlboards/pearl/readme.md
@@ -18,5 +18,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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))`
+* **Physical reset button**: Briefly press the button on the front left of the PCB labeled "QK_BOOT"
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` in conjunction with the key mapped to `MO(1))`
diff --git a/keyboards/pearlboards/zeus/config.h b/keyboards/pearlboards/zeus/config.h
index 7de94efcc2..2a371716b5 100644
--- a/keyboards/pearlboards/zeus/config.h
+++ b/keyboards/pearlboards/zeus/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/pearlboards/zeus/info.json b/keyboards/pearlboards/zeus/info.json
index 1938a7ef6d..41a72b5fb6 100644
--- a/keyboards/pearlboards/zeus/info.json
+++ b/keyboards/pearlboards/zeus/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Zeus",
- "maintainer": "Koobaczech",
+ "manufacturer": "Koobaczech",
"url": "",
+ "maintainer": "Koobaczech",
+ "usb": {
+ "vid": "0x6963",
+ "pid": "0x6966",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/pearlboards/zeus/readme.md b/keyboards/pearlboards/zeus/readme.md
index 9d85549d3b..2db71d3c64 100644
--- a/keyboards/pearlboards/zeus/readme.md
+++ b/keyboards/pearlboards/zeus/readme.md
@@ -18,5 +18,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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))`
+* **Physical reset button**: Briefly press the button on the back of the PCB labeled "QK_BOOT"
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` in conjunction with the key mapped to `MO(1))`
diff --git a/keyboards/pearlboards/zeuspad/config.h b/keyboards/pearlboards/zeuspad/config.h
index 3c12bfae18..484af3d2d9 100644
--- a/keyboards/pearlboards/zeuspad/config.h
+++ b/keyboards/pearlboards/zeuspad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/pearlboards/zeuspad/info.json b/keyboards/pearlboards/zeuspad/info.json
index 840d1a5b24..3ef471818a 100644
--- a/keyboards/pearlboards/zeuspad/info.json
+++ b/keyboards/pearlboards/zeuspad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Zeuspad",
- "maintainer": "Koobaczech",
+ "manufacturer": "Koobaczech",
"url": "",
+ "maintainer": "Koobaczech",
+ "usb": {
+ "vid": "0x6963",
+ "pid": "0x6967",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/pearlboards/zeuspad/readme.md b/keyboards/pearlboards/zeuspad/readme.md
index e22f48e65a..690af89b79 100644
--- a/keyboards/pearlboards/zeuspad/readme.md
+++ b/keyboards/pearlboards/zeuspad/readme.md
@@ -18,5 +18,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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))`
+* **Physical reset button**: Briefly press the button on the front of the PCB labeled "QK_BOOT"
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` in conjunction with the key mapped to `MO(1))`
diff --git a/keyboards/peej/lumberjack/config.h b/keyboards/peej/lumberjack/config.h
index ee993e9c99..f9f927f9d9 100644
--- a/keyboards/peej/lumberjack/config.h
+++ b/keyboards/peej/lumberjack/config.h
@@ -18,19 +18,11 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x706A
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Peej
-#define PRODUCT Lumberjack
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 10
#define MATRIX_ROW_PINS { C0, B5, B4, B3, B2, B1 }
#define MATRIX_COL_PINS { B0, D7, D6, D5, D4, D1, D0, C1, C2, C3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/peej/lumberjack/info.json b/keyboards/peej/lumberjack/info.json
index 8550b996b6..acc7e11fc3 100644
--- a/keyboards/peej/lumberjack/info.json
+++ b/keyboards/peej/lumberjack/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Lumberjack",
+ "manufacturer": "Peej",
"url": "https://github.com/peej/lumberjack-keyboard",
"maintainer": "Peej",
+ "usb": {
+ "vid": "0x706A",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x12": {
"layout": [
diff --git a/keyboards/peej/rosaline/config.h b/keyboards/peej/rosaline/config.h
index 603cad792f..4389572588 100644
--- a/keyboards/peej/rosaline/config.h
+++ b/keyboards/peej/rosaline/config.h
@@ -18,19 +18,11 @@
#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
diff --git a/keyboards/peej/rosaline/info.json b/keyboards/peej/rosaline/info.json
deleted file mode 100644
index 8a6f71aae2..0000000000
--- a/keyboards/peej/rosaline/info.json
+++ /dev/null
@@ -1,126 +0,0 @@
-{
- "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
deleted file mode 100644
index fc659293f0..0000000000
--- a/keyboards/peej/rosaline/keymaps/default/keymap.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* 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/via/keymap.c b/keyboards/peej/rosaline/keymaps/via/keymap.c
deleted file mode 100644
index 1d6ac2ed82..0000000000
--- a/keyboards/peej/rosaline/keymaps/via/keymap.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* 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/ortho/info.json b/keyboards/peej/rosaline/ortho/info.json
new file mode 100644
index 0000000000..be47e6431d
--- /dev/null
+++ b/keyboards/peej/rosaline/ortho/info.json
@@ -0,0 +1,77 @@
+{
+ "keyboard_name": "Rosaline Ortho",
+ "manufacturer": "Peej",
+ "url": "https://github.com/peej/rosaline-keyboard",
+ "maintainer": "Peej",
+ "usb": {
+ "vid": "0x706A",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "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/ortho/keymap.c b/keyboards/peej/rosaline/ortho/keymaps/default/keymap.c
index e307ecccb3..e307ecccb3 100644
--- a/keyboards/peej/rosaline/keymaps/ortho/keymap.c
+++ b/keyboards/peej/rosaline/ortho/keymaps/default/keymap.c
diff --git a/keyboards/peej/rosaline/keymaps/via-ortho/keymap.c b/keyboards/peej/rosaline/ortho/keymaps/via/keymap.c
index 0a6068fa96..0a6068fa96 100644
--- a/keyboards/peej/rosaline/keymaps/via-ortho/keymap.c
+++ b/keyboards/peej/rosaline/ortho/keymaps/via/keymap.c
diff --git a/keyboards/peej/rosaline/ortho/keymaps/via/rules.mk b/keyboards/peej/rosaline/ortho/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/peej/rosaline/ortho/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/peej/rosaline/ortho/ortho.h b/keyboards/peej/rosaline/ortho/ortho.h
new file mode 100644
index 0000000000..b3287784c3
--- /dev/null
+++ b/keyboards/peej/rosaline/ortho/ortho.h
@@ -0,0 +1,57 @@
+/* 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 "rosaline.h"
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │00 │40 │01 │41 │02 │42 │03 │43 │04 │44 │05 │45 │06 │46 │07 │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │10 │50 │11 │51 │12 │52 │13 │53 │14 │54 │15 │55 │16 │56 │17 │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │20 │60 │21 │61 │22 │62 │23 │63 │24 │64 │25 │65 │26 │66 │27 │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │30 │70 │31 │71 │32 │72 │33 │73 │34 │74 │35 │75 │36 │76 │37 │
+ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+ * ┌───────────────────────────â”
+ * │73 │ 7u Space
+ * └───────────────────────────┘
+ * ┌───────┠┌───────â”
+ * 2u Left │32 │ │35 │ 2u Right
+ * └───────┘ └───────┘
+ */
+
+#define LAYOUT_ortho_4x15( \
+ k00, k40, k01, k41, k02, k42, k03, k43, k04, k44, k05, k45, k06, k46, k07, \
+ k10, k50, k11, k51, k12, k52, k13, k53, k14, k54, k15, k55, k16, k56, k17, \
+ k20, k60, k21, k61, k22, k62, k23, k63, k24, k64, k25, k65, k26, k66, k27, \
+ k30, k70, k31, k71, k32, k72, k33, k73, k34, k74, k35, k75, k36, k76, k37 \
+) \
+{ \
+ { k00, k01, 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, XXX }, \
+ { k50, k51, k52, k53, k54, k55, k56, XXX }, \
+ { k60, k61, k62, k63, k64, k65, k66, XXX }, \
+ { k70, k71, k72, k73, k74, k75, k76, XXX } \
+}
+
+#define LED1 C5
+#define LED2 C4
diff --git a/keyboards/peej/rosaline/ortho/rules.mk b/keyboards/peej/rosaline/ortho/rules.mk
new file mode 100644
index 0000000000..d1dde8af62
--- /dev/null
+++ b/keyboards/peej/rosaline/ortho/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega328p
+
+# 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
+NKRO_ENABLE = no # Enable N-Key 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/readme.md b/keyboards/peej/rosaline/readme.md
index 033faa34f2..2b176d30df 100644
--- a/keyboards/peej/rosaline/readme.md
+++ b/keyboards/peej/rosaline/readme.md
@@ -2,7 +2,7 @@
## Through-hole 40% keyboard PCB for 60% cases
-![juliet](https://github.com/peej/rosaline-keyboard/raw/master/images/pcb.jpg)
+![Rosaline Staggered](https://raw.githubusercontent.com/peej/rosaline-keyboard/a40d60e95ee69630db0ea53d97c59b9e5db4851f/images/pcb-staggered-render.jpg)
40% staggered or 4x15 ortholinear PCB for 60% tray mount cases with only through hole components.
@@ -11,8 +11,11 @@
Make example for this keyboard (after setting up your build environment):
- make peej/rosaline:default
+ make peej/rosaline/staggered:default # for staggered PCBs
+ make peej/rosaline/ortho:default # for ortholinear PCBs
## Bootloader
Use usbasploader in [hsgw's repository](https://github.com/hsgw/USBaspLoader/tree/plaid).
+
+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/peej/rosaline/rosaline.h b/keyboards/peej/rosaline/rosaline.h
index 1e41a2e95e..22125f3188 100644
--- a/keyboards/peej/rosaline/rosaline.h
+++ b/keyboards/peej/rosaline/rosaline.h
@@ -20,39 +20,11 @@
#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 } \
-}
+#if defined(KEYBOARD_peej_rosaline_staggered)
+ #include "staggered.h"
+#elif defined(KEYBOARD_peej_rosaline_ortho)
+ #include "ortho.h"
+#endif
#define LED1 C5
#define LED2 C4
diff --git a/keyboards/peej/rosaline/rules.mk b/keyboards/peej/rosaline/rules.mk
index d1dde8af62..928164362a 100644
--- a/keyboards/peej/rosaline/rules.mk
+++ b/keyboards/peej/rosaline/rules.mk
@@ -1,18 +1 @@
-# MCU name
-MCU = atmega328p
-
-# 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
-NKRO_ENABLE = 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 = peej/rosaline/staggered
diff --git a/keyboards/peej/rosaline/staggered/info.json b/keyboards/peej/rosaline/staggered/info.json
new file mode 100644
index 0000000000..cd842ecaed
--- /dev/null
+++ b/keyboards/peej/rosaline/staggered/info.json
@@ -0,0 +1,74 @@
+{
+ "keyboard_name": "Rosaline Staggered",
+ "manufacturer": "Peej",
+ "url": "https://github.com/peej/rosaline-keyboard",
+ "maintainer": "Peej",
+ "usb": {
+ "vid": "0x706A",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT_staggered_40": "LAYOUT_all"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "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.5, "y":0},
+ {"x":12.5, "y":0},
+ {"x":13.5, "y":0, "w":1.5},
+
+ {"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":1},
+ {"x":12.75, "y":1, "w":2.25},
+
+ {"x":0, "y":2, "w":2.25},
+ {"x":2.25, "y":2},
+ {"x":3.25, "y":2},
+ {"x":4.25, "y":2},
+ {"x":5.25, "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},
+ {"x":11.25, "y":2},
+ {"x":12.25, "y":2, "w":1.75},
+ {"x":14, "y":2},
+
+ {"x":0, "y":3, "w":1.5},
+ {"x":1.5, "y":3},
+ {"x":2.5, "y":3, "w":1.5},
+ {"x":4, "y":3, "w":2.75},
+ {"x":6.75, "y":3},
+ {"x":7.75, "y":3, "w":2.25},
+ {"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/staggered/keymaps/default/keymap.c b/keyboards/peej/rosaline/staggered/keymaps/default/keymap.c
new file mode 100644
index 0000000000..11f3831c44
--- /dev/null
+++ b/keyboards/peej/rosaline/staggered/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_all(
+ KC_TAB, KC_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_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, 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/staggered/keymaps/via/keymap.c b/keyboards/peej/rosaline/staggered/keymaps/via/keymap.c
new file mode 100644
index 0000000000..87c0717da6
--- /dev/null
+++ b/keyboards/peej/rosaline/staggered/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_all(
+ KC_TAB, KC_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_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, 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_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+[3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+};
diff --git a/keyboards/peej/rosaline/staggered/keymaps/via/rules.mk b/keyboards/peej/rosaline/staggered/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/peej/rosaline/staggered/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/peej/rosaline/staggered/rules.mk b/keyboards/peej/rosaline/staggered/rules.mk
new file mode 100644
index 0000000000..d1dde8af62
--- /dev/null
+++ b/keyboards/peej/rosaline/staggered/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega328p
+
+# 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
+NKRO_ENABLE = no # Enable N-Key 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/staggered/staggered.h b/keyboards/peej/rosaline/staggered/staggered.h
new file mode 100644
index 0000000000..cc2703c834
--- /dev/null
+++ b/keyboards/peej/rosaline/staggered/staggered.h
@@ -0,0 +1,57 @@
+/* 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 "rosaline.h"
+
+/*
+ * ┌─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────â”
+ * │00 │10 │01 │02 │12 │03 │13 │04 │14 │05 │06 │16 │07 │17 │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │20 │11 │21 │22 │32 │23 │33 │24 │15 │25 │26 │36 │27 │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┬──────────┠┌──────┬───┬───â”
+ * │30 │31 │41 │42 │43 │53 │34 │44 │35 │45 │46 │37 │47 │ │46 │37 │ 1u/2.75u RShift │46 │37 │47 │ 1.75u/1u/1u RShift
+ * ├─────┬──┴┬──┴──┬┴───┴───┴─┬─┴───┴──┬┴──┬┴──┬┴──┬┴──┬───┼───┤ └───┴──────────┘ └──────┴───┴───┘
+ * │40 │50 │51 │52 │54 │55 │65 │56 │66 │57 │67 │
+ * └─────┴───┴─────┴──────────┴────────┴───┴───┴───┴───┴───┴───┘
+ * ┌───────────────────────────┬─────┬───┬─────â”
+ * 7u Space │54 │56 │66 │57 │ Tsangan Right Mods
+ * └───────────────────────────┴─────┴───┴─────┘
+ * ┌──────────┬───┬────────┬───â”
+ * 2.75/1/2.25/1u │52 │54 │55 │65 │
+ * └──────────┴───┴────────┴───┘
+ */
+
+#define LAYOUT_all( \
+ k00, k10, k01, k02, k12, k03, k13, k04, k14, k05, k06, k16, k07, k17, \
+ k20, k11, k21, k22, k32, k23, k33, k24, k15, k25, k26, k36, k27, \
+ k30, k31, k41, k42, k43, k53, k34, k44, k35, k45, k46, k37, k47, \
+ k40, k50, k51, k52, k54, k55, k65, k56, k66, k57, k67 \
+) \
+{ \
+ { k00, k01, 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, k57 }, \
+ { XXX, XXX, XXX, XXX, XXX, k65, k66, k67 }, \
+ { XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
+}
+
+#define LED1 C5
+#define LED2 C4
diff --git a/keyboards/peej/tripel/config.h b/keyboards/peej/tripel/config.h
index 50b0cc8829..1ea4947f32 100644
--- a/keyboards/peej/tripel/config.h
+++ b/keyboards/peej/tripel/config.h
@@ -17,19 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x706A
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Peej
-#define PRODUCT Tripel
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 8
#define MATRIX_ROW_PINS { C6, D4, D0, B4, E6, D7, D1, D2, D3 }
#define MATRIX_COL_PINS { B5, B6, B2, B3, B1, F7, F6, F5 }
-#define UNUSED_PINS { F4 }
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/peej/tripel/info.json b/keyboards/peej/tripel/info.json
index 97d50880c4..01beef6aae 100644
--- a/keyboards/peej/tripel/info.json
+++ b/keyboards/peej/tripel/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Tripel",
+ "manufacturer": "Peej",
"url": "https://github.com/peej/tripel-keyboard",
"maintainer": "Peej",
+ "usb": {
+ "vid": "0x706A",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_7u": {
"layout": [
diff --git a/keyboards/pegasus/config.h b/keyboards/pegasus/config.h
index 6f773da966..2729258198 100644
--- a/keyboards/pegasus/config.h
+++ b/keyboards/pegasus/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER melonbred
-#define PRODUCT Pegasus
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, E6 }
#define MATRIX_COL_PINS { D2, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5 }
-//#define UNUSED_PINS { B0, B1, B2, B3, B7 }
/* COL2ROW, ROW2COL*/
diff --git a/keyboards/pegasus/info.json b/keyboards/pegasus/info.json
index 238442b821..00faec71ec 100644
--- a/keyboards/pegasus/info.json
+++ b/keyboards/pegasus/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "pegasus",
+ "keyboard_name": "Pegasus",
+ "manufacturer": "melonbred",
"url": "",
"maintainer": "melonbred",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/pegasus/keymaps/split/keymap.c b/keyboards/pegasus/keymaps/split/keymap.c
index 964cfa2df7..9f3d69f9b9 100644
--- a/keyboards/pegasus/keymaps/split/keymap.c
+++ b/keyboards/pegasus/keymaps/split/keymap.c
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER2] = LAYOUT_split(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, KC_RALT, KC_RCTL, KC_DEL, KC_VOLD,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, KC_RALT, KC_RCTL, KC_DEL, KC_VOLD,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPLY
),
};
diff --git a/keyboards/pegasus/readme.md b/keyboards/pegasus/readme.md
index d164ba47ac..c523c03540 100644
--- a/keyboards/pegasus/readme.md
+++ b/keyboards/pegasus/readme.md
@@ -20,4 +20,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/peranekofactory/tone/rev1/config.h b/keyboards/peranekofactory/tone/rev1/config.h
index 38bfd6259c..03e4b3cae9 100644
--- a/keyboards/peranekofactory/tone/rev1/config.h
+++ b/keyboards/peranekofactory/tone/rev1/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER PeranekoFactory
-#define PRODUCT tone
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 8
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIRECT_PINS { \
{ D4, C6, D7, E6, F6, F7, B1, B3 } \
}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/peranekofactory/tone/rev1/info.json b/keyboards/peranekofactory/tone/rev1/info.json
index d877d5135e..29ee59e390 100644
--- a/keyboards/peranekofactory/tone/rev1/info.json
+++ b/keyboards/peranekofactory/tone/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "tone",
+ "manufacturer": "PeranekoFactory",
"url": "https://shop.yushakobo.jp/collections/keyboard-1/products/consign_tone-note",
"maintainer": "PeranekoFactory",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"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/peranekofactory/tone/rev2/config.h b/keyboards/peranekofactory/tone/rev2/config.h
index 38bfd6259c..03e4b3cae9 100644
--- a/keyboards/peranekofactory/tone/rev2/config.h
+++ b/keyboards/peranekofactory/tone/rev2/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER PeranekoFactory
-#define PRODUCT tone
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 8
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define DIRECT_PINS { \
{ D4, C6, D7, E6, F6, F7, B1, B3 } \
}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/peranekofactory/tone/rev2/info.json b/keyboards/peranekofactory/tone/rev2/info.json
index d877d5135e..29ee59e390 100644
--- a/keyboards/peranekofactory/tone/rev2/info.json
+++ b/keyboards/peranekofactory/tone/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "tone",
+ "manufacturer": "PeranekoFactory",
"url": "https://shop.yushakobo.jp/collections/keyboard-1/products/consign_tone-note",
"maintainer": "PeranekoFactory",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"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/percent/booster/config.h b/keyboards/percent/booster/config.h
index ecb1c9ec82..c70d73d313 100644
--- a/keyboards/percent/booster/config.h
+++ b/keyboards/percent/booster/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5053 /* PS */
-#define PRODUCT_ID 0x4253
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Percent Studio
-#define PRODUCT Booster
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
diff --git a/keyboards/percent/booster/info.json b/keyboards/percent/booster/info.json
index 2f5edb1d5f..5700e4ab7a 100644
--- a/keyboards/percent/booster/info.json
+++ b/keyboards/percent/booster/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "booster",
+ "keyboard_name": "Booster",
+ "manufacturer": "Percent Studio",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5053",
+ "pid": "0x4253",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_5x4": {
"layout": [
diff --git a/keyboards/percent/canoe/config.h b/keyboards/percent/canoe/config.h
index 56793bab41..8b0c8ad8da 100644
--- a/keyboards/percent/canoe/config.h
+++ b/keyboards/percent/canoe/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x5053 /* PS */
-#define PRODUCT_ID 0x434E
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Percent Studios
-#define PRODUCT CANOE
-
#define RGBLED_NUM 2
#define MATRIX_ROWS 5
@@ -32,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/percent/canoe/info.json b/keyboards/percent/canoe/info.json
index ca1bec5b89..b61cc7db5f 100644
--- a/keyboards/percent/canoe/info.json
+++ b/keyboards/percent/canoe/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Canoe",
- "maintainer": "qmk",
+ "keyboard_name": "CANOE",
+ "manufacturer": "Percent Studios",
"url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x5053",
+ "pid": "0x434E",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT_65_iso_blocker": {
"layout": [{"label":"K0D", "x":0, "y":0}, {"label":"K0C", "x":1, "y":0}, {"label":"K0B", "x":2, "y":0}, {"label":"K0A", "x":3, "y":0}, {"label":"K09", "x":4, "y":0}, {"label":"K08", "x":5, "y":0}, {"label":"K07", "x":6, "y":0}, {"label":"K06", "x":7, "y":0}, {"label":"K05", "x":8, "y":0}, {"label":"K04", "x":9, "y":0}, {"label":"K03", "x":10, "y":0}, {"label":"K02", "x":11, "y":0}, {"label":"K01", "x":12, "y":0}, {"label":"K00", "x":13, "y":0, "w":2}, {"label":"K0E", "x":15, "y":0}, {"label":"K1D", "x":0, "y":1, "w":1.5}, {"label":"K1C", "x":1.5, "y":1}, {"label":"K1B", "x":2.5, "y":1}, {"label":"K1A", "x":3.5, "y":1}, {"label":"K19", "x":4.5, "y":1}, {"label":"K18", "x":5.5, "y":1}, {"label":"K17", "x":6.5, "y":1}, {"label":"K16", "x":7.5, "y":1}, {"label":"K15", "x":8.5, "y":1}, {"label":"K14", "x":9.5, "y":1}, {"label":"K13", "x":10.5, "y":1}, {"label":"K12", "x":11.5, "y":1}, {"label":"K11", "x":12.5, "y":1}, {"label":"K1E", "x":15, "y":1}, {"label":"K2D", "x":0, "y":2, "w":1.75}, {"label":"K2C", "x":1.75, "y":2}, {"label":"K2B", "x":2.75, "y":2}, {"label":"K2A", "x":3.75, "y":2}, {"label":"K29", "x":4.75, "y":2}, {"label":"K28", "x":5.75, "y":2}, {"label":"K27", "x":6.75, "y":2}, {"label":"K26", "x":7.75, "y":2}, {"label":"K25", "x":8.75, "y":2}, {"label":"K24", "x":9.75, "y":2}, {"label":"K23", "x":10.75, "y":2}, {"label":"K22", "x":11.75, "y":2}, {"label":"K10", "x":12.75, "y":2}, {"label":"K21", "x":13.75, "y":1, "w":1.25, "h":2}, {"label":"K2E", "x":15, "y":2}, {"label":"K3D", "x":0, "y":3, "w":1.25}, {"label":"K4A", "x":1.25, "y":3}, {"label":"K3C", "x":2.25, "y":3}, {"label":"K3B", "x":3.25, "y":3}, {"label":"K3A", "x":4.25, "y":3}, {"label":"K39", "x":5.25, "y":3}, {"label":"K38", "x":6.25, "y":3}, {"label":"K37", "x":7.25, "y":3}, {"label":"K36", "x":8.25, "y":3}, {"label":"K35", "x":9.25, "y":3}, {"label":"K34", "x":10.25, "y":3}, {"label":"K33", "x":11.25, "y":3}, {"label":"K32", "x":12.25, "y":3, "w":1.75}, {"label":"K30", "x":14, "y":3}, {"label":"K3E", "x":15, "y":3}, {"label":"K4D", "x":0, "y":4, "w":1.25}, {"label":"K4C", "x":1.25, "y":4, "w":1.25}, {"label":"K4B", "x":2.5, "y":4, "w":1.25}, {"label":"K48", "x":3.75, "y":4, "w":6.25}, {"label":"K44", "x":10, "y":4, "w":1.25}, {"label":"K43", "x":11.25, "y":4, "w":1.25}, {"label":"K42", "x":13, "y":4}, {"label":"K40", "x":14, "y":4}, {"label":"K4E", "x":15, "y":4}]
diff --git a/keyboards/percent/canoe/keymaps/boy_314/keymap.c b/keyboards/percent/canoe/keymaps/boy_314/keymap.c
index e3b4c88d28..f9b70764ff 100644
--- a/keyboards/percent/canoe/keymaps/boy_314/keymap.c
+++ b/keyboards/percent/canoe/keymaps/boy_314/keymap.c
@@ -33,14 +33,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_F1] = 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_NO, KC_UP, KC_NO, RGB_TOG,RGB_VAI,RGB_HUI,RGB_SAI,KC_INS, RESET, KC_PSCR, KC_TRNS, KC_PAUS, KC_BSLS, KC_TRNS, \
+ KC_TRNS, KC_NO, KC_UP, KC_NO, RGB_TOG,RGB_VAI,RGB_HUI,RGB_SAI,KC_INS, QK_BOOT, KC_PSCR, KC_TRNS, KC_PAUS, KC_BSLS, KC_TRNS, \
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_LSPO, KC_MPRV, KC_MPLY, KC_MNXT,KC_NO, KC_NO, KC_NO, KC_MUTE,KC_VOLD, KC_VOLU, KC_NO, KC_RSPC, KC_VOLU, KC_TRNS, \
KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_RALT, KC_TRNS, KC_MPLY, KC_VOLD, KC_MNXT),
[_F2] = 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_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_NO, KC_UP, KC_NO, RGB_TOG,RGB_VAI,RGB_HUI,RGB_SAI,KC_INS, QK_BOOT, 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_LSPO, KC_MPRV, KC_MPLY, KC_MNXT,KC_NO, KC_NO, KC_NO, KC_MUTE,KC_VOLD, KC_VOLU, KC_NO, KC_RSPC, KC_PGUP, KC_TRNS, \
KC_LCTL, KC_LGUI, KC_LALT, KC_TRNS, KC_RALT, KC_TRNS, KC_HOME, KC_PGDOWN,KC_END)
diff --git a/keyboards/percent/canoe/keymaps/dhertz/keymap.c b/keyboards/percent/canoe/keymaps/dhertz/keymap.c
index 7e8170aefc..7d855e8fa7 100644
--- a/keyboards/percent/canoe/keymaps/dhertz/keymap.c
+++ b/keyboards/percent/canoe/keymaps/dhertz/keymap.c
@@ -49,8 +49,8 @@ void keyboard_post_init_user(void) {
rgblight_sethsv_teal();
}
-uint32_t layer_state_set_keymap(uint32_t state) {
- switch (biton32(state)) {
+layer_state_t layer_state_set_keymap(layer_state_t state) {
+ switch (get_highest_layer(state)) {
case 1:
rgblight_sethsv_noeeprom_magenta();
break;
diff --git a/keyboards/percent/canoe_gen2/config.h b/keyboards/percent/canoe_gen2/config.h
index 2188d9b41c..1f05360aae 100644
--- a/keyboards/percent/canoe_gen2/config.h
+++ b/keyboards/percent/canoe_gen2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x9C12
-#define PRODUCT_ID 0x89F0
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Percent Studio
-#define PRODUCT Canoe Gen2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS {B1,B3,B2,F5,F4}
#define MATRIX_COL_PINS {B0,D0,C6,B6,B5,B4,D7,D6,D4,D5,D3,D2,D1,F6,F7}
-#define UNUSED_PINS
/* Uncomment if your encoder doesn't react to every turn or skips */
//#define ENCODER_RESOLUTION 2
diff --git a/keyboards/percent/canoe_gen2/info.json b/keyboards/percent/canoe_gen2/info.json
index b72b84beee..e24eab5be0 100644
--- a/keyboards/percent/canoe_gen2/info.json
+++ b/keyboards/percent/canoe_gen2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Canoe Gen2",
+ "manufacturer": "Percent Studio",
"url": "",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x9C12",
+ "pid": "0x89F0",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker_split_bs": {
"layout": [
diff --git a/keyboards/percent/skog/config.h b/keyboards/percent/skog/config.h
index 524fdc5ccf..65c9a65802 100644
--- a/keyboards/percent/skog/config.h
+++ b/keyboards/percent/skog/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define VENDOR_ID 0x5053 /* PS */
-#define PRODUCT_ID 0x422D
-#define DEVICE_VER 0x0200
-
-#define MANUFACTURER Percent Studios
-#define PRODUCT Skog TKL
-
/* matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 14
diff --git a/keyboards/percent/skog/info.json b/keyboards/percent/skog/info.json
index de5655118a..9f7c86cdd8 100644
--- a/keyboards/percent/skog/info.json
+++ b/keyboards/percent/skog/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "skog",
+ "keyboard_name": "Skog TKL",
+ "manufacturer": "Percent Studios",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5053",
+ "pid": "0x422D",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT": {
"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, "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.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}]
diff --git a/keyboards/percent/skog_lite/config.h b/keyboards/percent/skog_lite/config.h
index 15de9bbb89..0e61f5d2ff 100644
--- a/keyboards/percent/skog_lite/config.h
+++ b/keyboards/percent/skog_lite/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x5053 /* PS */
-#define PRODUCT_ID 0x422D
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Percent Studios
-#define PRODUCT Skog Lite
-
#define RGBLED_NUM 18
#define MATRIX_ROWS 7
@@ -33,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 0 1 2 3 4 5 6 7 8 9 A B C D E
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B6, B5 }
#define MATRIX_COL_PINS { C4, C2, D7, C7, C6, A0, A1, A2, A3, A7, A6, A4, A5, C5, C3}
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/percent/skog_lite/info.json b/keyboards/percent/skog_lite/info.json
index 09bcdc4381..fb3a71f01d 100644
--- a/keyboards/percent/skog_lite/info.json
+++ b/keyboards/percent/skog_lite/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Skog Lite",
+ "manufacturer": "Percent Studios",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5053",
+ "pid": "0x422D",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/percent/skog_lite/keymaps/binman/keymap.c b/keyboards/percent/skog_lite/keymaps/binman/keymap.c
index 40308e1a6e..67f74eeb90 100755
--- a/keyboards/percent/skog_lite/keymaps/binman/keymap.c
+++ b/keyboards/percent/skog_lite/keymaps/binman/keymap.c
@@ -12,7 +12,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_tkl_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, RGB_MOD, RGB_RMOD, 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, RGB_VAI, RGB_HUI, RGB_SAI,
- 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, RGB_VAD, RGB_HUD, RGB_SAD,
+ KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_VAD, RGB_HUD, RGB_SAD,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
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_SPI,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RGB_SPD, KC_NO
diff --git a/keyboards/phantom/config.h b/keyboards/phantom/config.h
index b30adef9dd..2b1e6b1e5f 100644
--- a/keyboards/phantom/config.h
+++ b/keyboards/phantom/config.h
@@ -19,13 +19,6 @@ 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 0x5B50
-#define DEVICE_VER 0x0003
-#define MANUFACTURER bpiphany
-#define PRODUCT PHANTOM
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B5, B4, B3, B2, B1, B0 }
#define MATRIX_COL_PINS { D5, C7, C6, D4, D0, E6, F0, F1, F4, F5, F6, F7, D7, D6, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/phantom/info.json b/keyboards/phantom/info.json
index 419ce4f491..1fbbdb73a4 100644
--- a/keyboards/phantom/info.json
+++ b/keyboards/phantom/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Phantom",
+ "manufacturer": "bpiphany",
"url": "https://deskthority.net/wiki/Phantom",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x5B50",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/phantom/keymaps/rgbmod/keymap.c b/keyboards/phantom/keymaps/rgbmod/keymap.c
index 9be30fbae7..cbddcebeb3 100644
--- a/keyboards/phantom/keymaps/rgbmod/keymap.c
+++ b/keyboards/phantom/keymaps/rgbmod/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FL] = LAYOUT_tkl_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______,
diff --git a/keyboards/phase_studio/titan65/hotswap/config.h b/keyboards/phase_studio/titan65/hotswap/config.h
index 2b8320814e..9b942b20d3 100644
--- a/keyboards/phase_studio/titan65/hotswap/config.h
+++ b/keyboards/phase_studio/titan65/hotswap/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5054
-#define PRODUCT_ID 0xBB91
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Phase Studio
-#define PRODUCT Titan 65 (hotswap)
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/phase_studio/titan65/hotswap/info.json b/keyboards/phase_studio/titan65/hotswap/info.json
index 30fee696ce..6b9a2b80ac 100644
--- a/keyboards/phase_studio/titan65/hotswap/info.json
+++ b/keyboards/phase_studio/titan65/hotswap/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Titan 65 (hotswap)",
+ "manufacturer": "Phase Studio",
"url": "",
"maintainer": "drashna",
+ "usb": {
+ "vid": "0x5054",
+ "pid": "0xBB91",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/phase_studio/titan65/soldered/config.h b/keyboards/phase_studio/titan65/soldered/config.h
index 6ecde7d1f3..f94a86676c 100644
--- a/keyboards/phase_studio/titan65/soldered/config.h
+++ b/keyboards/phase_studio/titan65/soldered/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5054
-#define PRODUCT_ID 0xBB92
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Phase Studio
-#define PRODUCT Titan 65 (soldered)
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/phase_studio/titan65/soldered/info.json b/keyboards/phase_studio/titan65/soldered/info.json
index 96bf7c05e9..6abbf8d0aa 100644
--- a/keyboards/phase_studio/titan65/soldered/info.json
+++ b/keyboards/phase_studio/titan65/soldered/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Titan 65 (soldered)",
+ "manufacturer": "Phase Studio",
"url": "",
"maintainer": "drashna",
+ "usb": {
+ "vid": "0x5054",
+ "pid": "0xBB92",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/phoenix/config.h b/keyboards/phoenix/config.h
index 81fc3677ff..9fb090dec0 100644
--- a/keyboards/phoenix/config.h
+++ b/keyboards/phoenix/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x456B
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ErgoKB
-#define PRODUCT Phoenix
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 7
diff --git a/keyboards/phoenix/info.json b/keyboards/phoenix/info.json
index 65cdaaa338..85cffa1c31 100644
--- a/keyboards/phoenix/info.json
+++ b/keyboards/phoenix/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Phoenix",
+ "manufacturer": "ErgoKB",
"url": "ergokb.tw",
"maintainer": "ErgoKB via lschyi",
+ "usb": {
+ "vid": "0x456B",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ergodox": {
"layout": [
diff --git a/keyboards/phoenix/phoenix.c b/keyboards/phoenix/phoenix.c
index a8e9a42a04..706a65b4de 100644
--- a/keyboards/phoenix/phoenix.c
+++ b/keyboards/phoenix/phoenix.c
@@ -74,7 +74,7 @@ void manipulate_led(uint32_t led, bool on) {
}
-layer_state_t layer_state_set_kb(uint32_t state) {
+layer_state_t layer_state_set_kb(layer_state_t state) {
state = layer_state_set_user(state);
uint8_t layer = get_highest_layer(state);
diff --git a/keyboards/phoenix/rules.mk b/keyboards/phoenix/rules.mk
index f895b3d316..c155cd0988 100644
--- a/keyboards/phoenix/rules.mk
+++ b/keyboards/phoenix/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/phrygian/ph100/config.h b/keyboards/phrygian/ph100/config.h
index 68bd430736..1edf420b90 100644
--- a/keyboards/phrygian/ph100/config.h
+++ b/keyboards/phrygian/ph100/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0C61
-#define DEVICE_VER 0x0100
-#define MANUFACTURER PhrygianDesign
-#define PRODUCT ph100
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10
diff --git a/keyboards/phrygian/ph100/info.json b/keyboards/phrygian/ph100/info.json
index 054e3955e0..85bac6c4ca 100644
--- a/keyboards/phrygian/ph100/info.json
+++ b/keyboards/phrygian/ph100/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ph100",
+ "manufacturer": "PhrygianDesign",
"url": "https://phrygiandesign.com/products/ph100-mechanical-keyboard",
"maintainer": "phrygiandesign",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0C61",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/pico/65keys/config.h b/keyboards/pico/65keys/config.h
index e0cc6ea566..a97d03596c 100644
--- a/keyboards/pico/65keys/config.h
+++ b/keyboards/pico/65keys/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x9692
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Kumao Kobo
-#define PRODUCT Pico Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/pico/65keys/info.json b/keyboards/pico/65keys/info.json
index c5c9c8a85f..f87dd24c22 100644
--- a/keyboards/pico/65keys/info.json
+++ b/keyboards/pico/65keys/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pico Keyboard",
+ "manufacturer": "Kumao Kobo",
"url": "https://github.com/kumaokobo/pico-keyboard/",
"maintainer": "Kumao Kobo",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x9692",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/pico/70keys/config.h b/keyboards/pico/70keys/config.h
index b2d07c9691..a97d03596c 100644
--- a/keyboards/pico/70keys/config.h
+++ b/keyboards/pico/70keys/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x9692
-#define DEVICE_VER 0x0101
-#define MANUFACTURER Kumao Kobo
-#define PRODUCT Pico Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/pico/70keys/info.json b/keyboards/pico/70keys/info.json
index 4c87ab3691..e70e1a3abf 100644
--- a/keyboards/pico/70keys/info.json
+++ b/keyboards/pico/70keys/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pico Keyboard",
+ "manufacturer": "Kumao Kobo",
"url": "https://github.com/kumaokobo/pico-keyboard/",
"maintainer": "Kumao Kobo",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x9692",
+ "device_version": "1.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/picolab/frusta_fundamental/config.h b/keyboards/picolab/frusta_fundamental/config.h
index 33389e3e82..6a3e76ba8c 100644
--- a/keyboards/picolab/frusta_fundamental/config.h
+++ b/keyboards/picolab/frusta_fundamental/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x614D
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER PicoLab
-#define PRODUCT Frusta Fundamental
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D4, D6, D7, B4, B5 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, B1, B2, B3, B7, D5, D3, D2, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/picolab/frusta_fundamental/info.json b/keyboards/picolab/frusta_fundamental/info.json
index bc6fb17e21..e64e1425f6 100644
--- a/keyboards/picolab/frusta_fundamental/info.json
+++ b/keyboards/picolab/frusta_fundamental/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "frusta_fundamental",
+ "keyboard_name": "Frusta Fundamental",
+ "manufacturer": "PicoLab",
"url": "https://picolab.hk",
"maintainer": "PicoLab",
+ "usb": {
+ "vid": "0x614D",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/pierce/config.h b/keyboards/pierce/config.h
index 242b2ebf92..0855427bcd 100644
--- a/keyboards/pierce/config.h
+++ b/keyboards/pierce/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER durken
-#define PRODUCT pierce
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
diff --git a/keyboards/pierce/info.json b/keyboards/pierce/info.json
index 7179076794..850741cd9d 100644
--- a/keyboards/pierce/info.json
+++ b/keyboards/pierce/info.json
@@ -1,50 +1,57 @@
{
- "keyboard_name": "pierce",
- "url": "https://github.com/durken1/pierce",
- "maintainer": "durken1",
+ "keyboard_name": "pierce",
+ "manufacturer": "durken",
+ "url": "https://github.com/durken1/pierce",
+ "maintainer": "durken1",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x5_3": {
"layout": [
- {"x":0, "y":1},
- {"x":1, "y":0.63},
- {"x":2, "y":0.5},
- {"x":3, "y":0.63},
- {"x":4, "y":0.75},
- {"x":7, "y":0.75},
- {"x":8, "y":0.63},
- {"x":9, "y":0.5},
- {"x":10, "y":0.63},
- {"x":11, "y":1},
+ {"x":0, "y":0.5},
+ {"x":1, "y":0.13},
+ {"x":2, "y":0.0},
+ {"x":3, "y":0.13},
+ {"x":4, "y":0.25},
+ {"x":7, "y":0.25},
+ {"x":8, "y":0.13},
+ {"x":9, "y":0.0},
+ {"x":10, "y":0.13},
+ {"x":11, "y":0.5},
- {"x":0, "y":2},
- {"x":1, "y":1.63},
- {"x":2, "y":1.5},
- {"x":3, "y":1.63},
- {"x":4, "y":1.75},
- {"x":7, "y":1.75},
- {"x":8, "y":1.63},
- {"x":9, "y":1.5},
- {"x":10, "y":1.63},
- {"x":11, "y":2},
+ {"x":0, "y":1.5},
+ {"x":1, "y":1.13},
+ {"x":2, "y":1.0},
+ {"x":3, "y":1.13},
+ {"x":4, "y":1.25},
+ {"x":7, "y":1.25},
+ {"x":8, "y":1.13},
+ {"x":9, "y":1.0},
+ {"x":10, "y":1.13},
+ {"x":11, "y":1.5},
- {"x":0, "y":3},
- {"x":1, "y":2.63},
- {"x":2, "y":2.5},
- {"x":3, "y":2.63},
- {"x":4, "y":2.75},
- {"x":7, "y":2.75},
- {"x":8, "y":2.63},
- {"x":9, "y":2.5},
- {"x":10, "y":2.63},
- {"x":11, "y":3},
+ {"x":0, "y":2.5},
+ {"x":1, "y":2.13},
+ {"x":2, "y":2.0},
+ {"x":3, "y":2.13},
+ {"x":4, "y":2.25},
+ {"x":7, "y":2.25},
+ {"x":8, "y":2.13},
+ {"x":9, "y":2.0},
+ {"x":10, "y":2.13},
+ {"x":11, "y":2.5},
- {"x":2.5, "y":3.66},
- {"x":3.5, "y":4.0},
- {"x":4.5, "y":4.25},
+ {"x":2.5, "y":3.16},
+ {"x":3.5, "y":3.5},
+ {"x":4.5, "y":3.75},
- {"x":7.5, "y":4.0},
- {"x":6.5, "y":4.25},
- {"x":8.5, "y":3.66}]
+ {"x":6.5, "y":3.75},
+ {"x":7.5, "y":3.5},
+ {"x":8.5, "y":3.16}
+ ]
}
}
}
diff --git a/keyboards/pierce/keymaps/durken1/config.h b/keyboards/pierce/keymaps/durken1/config.h
index 7d19a0b83b..bc0bb1c4b8 100644
--- a/keyboards/pierce/keymaps/durken1/config.h
+++ b/keyboards/pierce/keymaps/durken1/config.h
@@ -27,9 +27,6 @@
#define PERMISSIVE_HOLD
-// Recommended for heavy chording.
-#define QMK_KEYS_PER_SCAN 4
-
// Combo settings
#define COMBO_COUNT 3
#define COMBO_TERM 35
@@ -74,4 +71,3 @@
#ifdef AUTO_BUTTONS
#define AUTO_BUTTONS_TIMEOUT 750
#endif
-
diff --git a/keyboards/pierce/readme.md b/keyboards/pierce/readme.md
index 351bacbfa0..be7ba1948b 100644
--- a/keyboards/pierce/readme.md
+++ b/keyboards/pierce/readme.md
@@ -24,4 +24,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
Enter the bootloader in 2 ways:
* **Physical reset button**: Briefly press the button on the dongle / wired half
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/pimentoso/paddino02/rev1/config.h b/keyboards/pimentoso/paddino02/rev1/config.h
index 87259cd2eb..b9661afbaa 100755
--- a/keyboards/pimentoso/paddino02/rev1/config.h
+++ b/keyboards/pimentoso/paddino02/rev1/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xD00D
-#define PRODUCT_ID 0x0020
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Pimentoso
-#define PRODUCT Paddino02 rev1
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 4
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D1, D0, D4 }
#define MATRIX_COL_PINS { D7, E6, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/pimentoso/paddino02/rev1/info.json b/keyboards/pimentoso/paddino02/rev1/info.json
index 8da1c8642f..bf9147e5f3 100644
--- a/keyboards/pimentoso/paddino02/rev1/info.json
+++ b/keyboards/pimentoso/paddino02/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Paddino02 rev1",
+ "manufacturer": "Pimentoso",
"url": "",
"maintainer": "Pimentoso",
+ "usb": {
+ "vid": "0xD00D",
+ "pid": "0x0020",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/pimentoso/paddino02/rev2/left/config.h b/keyboards/pimentoso/paddino02/rev2/left/config.h
index d780f82c36..9de375d0b3 100755
--- a/keyboards/pimentoso/paddino02/rev2/left/config.h
+++ b/keyboards/pimentoso/paddino02/rev2/left/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xD00D
-#define PRODUCT_ID 0x0021
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Pimentoso
-#define PRODUCT Paddino02 rev2
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 4
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D4, D1 }
#define MATRIX_COL_PINS { D7, E6, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/pimentoso/paddino02/rev2/left/info.json b/keyboards/pimentoso/paddino02/rev2/left/info.json
index 2468b11a70..40a3bb14a0 100644
--- a/keyboards/pimentoso/paddino02/rev2/left/info.json
+++ b/keyboards/pimentoso/paddino02/rev2/left/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Paddino02 rev2 (left)",
+ "manufacturer": "Pimentoso",
"url": "",
"maintainer": "Pimentoso",
+ "usb": {
+ "vid": "0xD00D",
+ "pid": "0x0021",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/pimentoso/paddino02/rev2/right/config.h b/keyboards/pimentoso/paddino02/rev2/right/config.h
index f080a9e918..38253bb4a2 100755
--- a/keyboards/pimentoso/paddino02/rev2/right/config.h
+++ b/keyboards/pimentoso/paddino02/rev2/right/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xD00D
-#define PRODUCT_ID 0x0022
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Pimentoso
-#define PRODUCT Paddino02 rev2
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 4
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F4, F6, F5 }
#define MATRIX_COL_PINS { B6, B2, B3, B1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/pimentoso/paddino02/rev2/right/info.json b/keyboards/pimentoso/paddino02/rev2/right/info.json
index fde06194d9..9a341b606b 100644
--- a/keyboards/pimentoso/paddino02/rev2/right/info.json
+++ b/keyboards/pimentoso/paddino02/rev2/right/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Paddino02 rev2 (right)",
+ "manufacturer": "Pimentoso",
"url": "",
"maintainer": "Pimentoso",
+ "usb": {
+ "vid": "0xD00D",
+ "pid": "0x0022",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/pimentoso/touhoupad/config.h b/keyboards/pimentoso/touhoupad/config.h
index 8fd4e78116..50ef700e06 100644
--- a/keyboards/pimentoso/touhoupad/config.h
+++ b/keyboards/pimentoso/touhoupad/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xD00D
-#define PRODUCT_ID 0x0031
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Pimentoso
-#define PRODUCT TouhouPad rev2
-
#define MATRIX_ROWS 1
#define MATRIX_COLS 10
diff --git a/keyboards/pimentoso/touhoupad/info.json b/keyboards/pimentoso/touhoupad/info.json
index 59fded1959..86cb56a1d5 100644
--- a/keyboards/pimentoso/touhoupad/info.json
+++ b/keyboards/pimentoso/touhoupad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TouhouPad",
+ "keyboard_name": "TouhouPad rev2",
+ "manufacturer": "Pimentoso",
"url": "https://github.com/Pimentoso/TouhouPad_v2",
"maintainer": "Pimentoso",
+ "usb": {
+ "vid": "0xD00D",
+ "pid": "0x0031",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/pinky/3/config.h b/keyboards/pinky/3/config.h
index 78192bc19e..f6b8dc4343 100644
--- a/keyboards/pinky/3/config.h
+++ b/keyboards/pinky/3/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x544E // "TN"
-#define PRODUCT_ID 0x7033 // "P3"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER tamanishi
-#define PRODUCT Pinky3
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
@@ -43,7 +36,6 @@
// wiring of each half
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/pinky/3/info.json b/keyboards/pinky/3/info.json
index 15c6742f49..0fb7e5a6f6 100644
--- a/keyboards/pinky/3/info.json
+++ b/keyboards/pinky/3/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pinky3",
+ "manufacturer": "tamanishi",
"url": "",
"maintainer": "tamanishi",
+ "usb": {
+ "vid": "0x544E",
+ "pid": "0x7033",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x7_4": {
"layout": [
diff --git a/keyboards/pinky/4/config.h b/keyboards/pinky/4/config.h
index f5a9024045..c980f9d302 100644
--- a/keyboards/pinky/4/config.h
+++ b/keyboards/pinky/4/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x544E // "TN"
-#define PRODUCT_ID 0x7034 // "P4"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER tamanishi
-#define PRODUCT Pinky4
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
@@ -43,7 +36,6 @@
// wiring of each half
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/pinky/4/info.json b/keyboards/pinky/4/info.json
index a0781224c3..373861b138 100644
--- a/keyboards/pinky/4/info.json
+++ b/keyboards/pinky/4/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pinky4",
+ "manufacturer": "tamanishi",
"url": "",
"maintainer": "tamanishi",
+ "usb": {
+ "vid": "0x544E",
+ "pid": "0x7034",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_4x7_4": {
"layout": [
diff --git a/keyboards/pisces/config.h b/keyboards/pisces/config.h
index 163edb8727..42db825e3e 100644
--- a/keyboards/pisces/config.h
+++ b/keyboards/pisces/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6B6E
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER knaruo
-#define PRODUCT pisces
-
#define USE_SERIAL
/* serial.c configuration for split keyboard */
@@ -52,7 +45,6 @@
*/
#define MATRIX_ROW_PINS { C4, B0, C7 }
#define MATRIX_COL_PINS { B1, B2, B3, B4, B5, B6, B7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/pisces/info.json b/keyboards/pisces/info.json
index 749a1152d6..f70712c9f6 100644
--- a/keyboards/pisces/info.json
+++ b/keyboards/pisces/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "pisces",
+ "manufacturer": "knaruo",
"url": "https://github.com/knaruo/pisces",
"maintainer": "knaruo",
+ "usb": {
+ "vid": "0x6B6E",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x6_1": {
"layout": [
diff --git a/keyboards/pixelspace/capsule65i/capsule65i.c b/keyboards/pixelspace/capsule65i/capsule65i.c
new file mode 100644
index 0000000000..30c1fed88e
--- /dev/null
+++ b/keyboards/pixelspace/capsule65i/capsule65i.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 PixelSpace 295033045@qq.com
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "capsule65i.h"
diff --git a/keyboards/pixelspace/capsule65i/capsule65i.h b/keyboards/pixelspace/capsule65i/capsule65i.h
new file mode 100644
index 0000000000..0e0d125cfa
--- /dev/null
+++ b/keyboards/pixelspace/capsule65i/capsule65i.h
@@ -0,0 +1,221 @@
+/* Copyright 2022 PixelSpace 295033045@qq.com
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 │ │0D │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ └─┬─────┤
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1F │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤ ┌──┴â”1D │ ISO Enter
+ * LShift │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2F │ │2C │ │
+ * ┌────────┠├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴┬──┴────┬───┼───┤ └───┴────┘
+ * │30 │ │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B│3C │3D │3F │
+ * └────────┘ ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┼───┬───┼───┼───┤
+ * │40 │41 │42 │45 │49 │4A │4B │4C │4D │4F │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ * ┌────┬────┬────┬────────────────────────┬────┬────â”
+ * │40 │41 │42 │45 │49 │4A │ Blocker
+ * └────┴────┴────┴────────────────────────┴────┴────┘
+ * ┌─────┬───┬─────┬───────────────────────────┬─────â”
+ * │40 │41 │42 │45 │4A │ Tsangan
+ * └─────┴───┴─────┴───────────────────────────┴─────┘
+ */
+
+#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, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
+ K40, K41, K42, K45, 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, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D, XXX, K4F }, \
+}
+
+#define LAYOUT_65_ansi( \
+ K00, K01, K02, K03, K04, K05, 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, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D, K4F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D, XXX, K4F }, \
+}
+
+#define LAYOUT_65_ansi_split_bs( \
+ 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, K2F, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
+ K40, K41, K42, K45, 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, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D, XXX, K4F }, \
+}
+
+#define LAYOUT_65_ansi_blocker( \
+ K00, K01, K02, K03, K04, K05, 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, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, 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, XXX, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D, XXX, K4F }, \
+}
+
+#define LAYOUT_65_ansi_blocker_split_bs( \
+ 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, K2F, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, 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, K1D, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D, XXX, K4F }, \
+}
+
+#define LAYOUT_65_ansi_blocker_tsangan( \
+ K00, K01, K02, K03, K04, K05, 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, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
+ K40, K41, K42, K45, K4A, K4C, K4D, K4F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, XXX, K4C, K4D, XXX, K4F }, \
+}
+
+#define LAYOUT_65_ansi_blocker_tsangan_split_bs( \
+ 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, K2F, \
+ K30, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
+ K40, K41, K42, K45, 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, K1D, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, XXX, K4C, K4D, XXX, K4F }, \
+}
+
+#define LAYOUT_65_iso( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, 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, K1D, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D, K4F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D, XXX, K4F }, \
+}
+
+#define LAYOUT_65_iso_split_bs( \
+ 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, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
+ K40, K41, K42, K45, 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, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D, XXX, K4F }, \
+}
+
+#define LAYOUT_65_iso_blocker( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, 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, K1D, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, 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, XXX, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D, XXX, K4F }, \
+}
+
+#define LAYOUT_65_iso_blocker_split_bs( \
+ 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, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, 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, K1D, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D, XXX, K4F }, \
+}
+
+#define LAYOUT_65_iso_blocker_tsangan( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, 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, K1D, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
+ K40, K41, K42, K45, K4A, K4C, K4D, K4F \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, XXX, K0F }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, XXX, K4C, K4D, XXX, K4F }, \
+}
+
+#define LAYOUT_65_iso_blocker_tsangan_split_bs( \
+ 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, K1F, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K1D, K2F, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3F, \
+ K40, K41, K42, K45, 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, K1D, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, XXX, XXX, K2F }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, XXX, K3F }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, XXX, K4A, XXX, K4C, K4D, XXX, K4F }, \
+}
diff --git a/keyboards/pixelspace/capsule65i/config.h b/keyboards/pixelspace/capsule65i/config.h
new file mode 100644
index 0000000000..ac5e003bc8
--- /dev/null
+++ b/keyboards/pixelspace/capsule65i/config.h
@@ -0,0 +1,56 @@
+/* Copyright 2022 PixelSpace 295033045@qq.com
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 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 { F4, D1, B7, D0, F5 }
+#define MATRIX_COL_PINS { D5, D2, D3, D4, D6, D7, B4, B5, B6, C6, C7, E2, B3, B1, B0, B2 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define LED_CAPS_LOCK_PIN F6
+
+#define RGB_DI_PIN F7
+#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 6
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/pixelspace/capsule65i/info.json b/keyboards/pixelspace/capsule65i/info.json
new file mode 100644
index 0000000000..b9af2398ef
--- /dev/null
+++ b/keyboards/pixelspace/capsule65i/info.json
@@ -0,0 +1,1002 @@
+{
+ "keyboard_name": "Capsule65i",
+ "manufacturer": "PixelSpace",
+ "url": "",
+ "maintainer": "PixelSpace",
+ "usb": {
+ "vid": "0xE061",
+ "pid": "0xE66E",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_all"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "K00 (F4,D5)", "x": 0, "y": 0 },
+ { "label": "K01 (F4,D2)", "x": 1, "y": 0 },
+ { "label": "K02 (F4,D3)", "x": 2, "y": 0 },
+ { "label": "K03 (F4,D4)", "x": 3, "y": 0 },
+ { "label": "K04 (F4,D6)", "x": 4, "y": 0 },
+ { "label": "K05 (F4,D7)", "x": 5, "y": 0 },
+ { "label": "K06 (F4,B4)", "x": 6, "y": 0 },
+ { "label": "K07 (F4,B5)", "x": 7, "y": 0 },
+ { "label": "K08 (F4,B6)", "x": 8, "y": 0 },
+ { "label": "K09 (F4,C6)", "x": 9, "y": 0 },
+ { "label": "K0A (F4,C7)", "x": 10, "y": 0 },
+ { "label": "K0B (F4,E2)", "x": 11, "y": 0 },
+ { "label": "K0C (F4,B3)", "x": 12, "y": 0 },
+ { "label": "K0D (F4,B1)", "x": 13, "y": 0 },
+ { "label": "K0E (F4,B0)", "x": 14, "y": 0 },
+ { "label": "K0F (F4,B2)", "x": 15, "y": 0 },
+ { "label": "K10 (D1,D5)", "x": 0, "y": 1 ,"w":1.5},
+ { "label": "K11 (D1,D2)", "x": 1.5, "y": 1},
+ { "label": "K12 (D1,D3)", "x": 2.5, "y": 1 },
+ { "label": "K13 (D1,D4)", "x": 3.5, "y": 1 },
+ { "label": "K14 (D1,D6)", "x": 4.5, "y": 1 },
+ { "label": "K15 (D1,D7)", "x": 5.5, "y": 1 },
+ { "label": "K16 (D1,B4)", "x": 6.5, "y": 1 },
+ { "label": "K17 (D1,B5)", "x": 7.5, "y": 1 },
+ { "label": "K18 (D1,B6)", "x": 8.5, "y": 1 },
+ { "label": "K19 (D1,C6)", "x": 9.5, "y": 1 },
+ { "label": "K1A (D1,C7)", "x": 10.5, "y": 1 },
+ { "label": "K1B (D1,E2)", "x": 11.5, "y": 1 },
+ { "label": "K1C (D1,B3)", "x": 12.5, "y": 1 },
+ { "label": "K1D (D1,B1)", "x": 13.5, "y": 1 ,"w":1.5},
+ { "label": "K1F (D1,B2)", "x": 15, "y": 1 },
+ { "label": "K20 (B7,D5)", "x": 0, "y": 2,"w":1.75 },
+ { "label": "K21 (B7,D2)", "x": 1.75, "y": 2 },
+ { "label": "K22 (B7,D3)", "x": 2.75, "y": 2 },
+ { "label": "K23 (B7,D4)", "x": 3.75, "y": 2 },
+ { "label": "K24 (B7,D6)", "x": 4.75, "y": 2 },
+ { "label": "K25 (B7,D7)", "x": 5.75, "y": 2 },
+ { "label": "K26 (B7,B4)", "x": 6.75, "y": 2 },
+ { "label": "K27 (B7,B5)", "x": 7.75, "y": 2 },
+ { "label": "K28 (B7,B6)", "x": 8.75, "y": 2 },
+ { "label": "K29 (B7,C6)", "x": 9.75, "y": 2 },
+ { "label": "K2A (B7,C7)", "x": 10.75, "y": 2 },
+ { "label": "K2B (B7,E2)", "x": 11.75, "y": 2 },
+ { "label": "K2C (B7,B3)", "x": 12.75, "y": 2 ,"w":2.25},
+ { "label": "K2F (B7,B2)", "x": 15, "y": 2 },
+ { "label": "K30 (D0,D5)", "x": 0, "y": 3 ,"w":1.25},
+ { "label": "K31 (D0,D2)", "x": 1.25, "y": 3 },
+ { "label": "K32 (D0,D3)", "x": 2.25, "y": 3 },
+ { "label": "K33 (D0,D4)", "x": 3.25, "y": 3 },
+ { "label": "K34 (D0,D6)", "x": 4.25, "y": 3 },
+ { "label": "K35 (D0,D7)", "x": 5.25, "y": 3 },
+ { "label": "K36 (D0,B4)", "x": 6.25, "y": 3 },
+ { "label": "K37 (D0,B5)", "x": 7.25, "y": 3 },
+ { "label": "K38 (D0,B6)", "x": 8.25, "y": 3 },
+ { "label": "K39 (D0,C6)", "x": 9.25, "y": 3 },
+ { "label": "K3A (D0,C7)", "x": 10.25, "y": 3 },
+ { "label": "K3B (D0,E2)", "x": 11.25, "y": 3 },
+ { "label": "K3C (D0,B3)", "x": 12.25, "y": 3 ,"w":1.75 },
+ { "label": "K3D (D0,B1)", "x": 14, "y": 3 },
+ { "label": "K3F (D0,B2)", "x": 15, "y": 3 },
+ { "label": "K40 (F5,D5)", "x": 0, "y": 4 ,"w":1.25},
+ { "label": "K41 (F5,D2)", "x": 1.25, "y": 4 ,"w":1.25},
+ { "label": "K42 (F5,D3)", "x": 2.5, "y": 4 ,"w":1.25},
+ { "label": "K45 (F5,D7)", "x": 3.75, "y": 4,"w":6.25 },
+ { "label": "K49 (F5,C6)", "x": 10, "y": 4 },
+ { "label": "K4A (F5,C7)", "x": 11, "y": 4 },
+ { "label": "K4B (F5,E2)", "x": 12, "y": 4 },
+ { "label": "K4C (F5,B3)", "x": 13, "y": 4 },
+ { "label": "K4D (F5,B1)", "x": 14, "y": 4 },
+ { "label": "K4F (F5,B2)", "x": 15, "y": 4 }
+ ]
+ },
+ "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":"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":"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":"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":"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":"Fn", "x":10, "y":4},
+ {"label":"Ctrl", "x":11, "y":4},
+ {"label":"RGB Toggle", "x":12, "y":4},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_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":"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":"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":"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":"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":"Fn", "x":10, "y":4},
+ {"label":"Ctrl", "x":11, "y":4},
+ {"label":"RGB Toggle", "x":12, "y":4},
+ {"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":"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":"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":"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":"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":"Fn", "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}
+ ]
+ },
+ "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":"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":"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":"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":"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":"Fn", "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}
+ ]
+ },
+ "LAYOUT_65_ansi_blocker_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":"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":"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":"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.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":"Ctrl", "x":11, "y":4, "w":1.5},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_ansi_blocker_tsangan_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":"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":"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":"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.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":"Ctrl", "x":11, "y":4, "w":1.5},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ },
+ "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":"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":"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":"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":"\u2191", "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":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Fn", "x":10, "y":4},
+ {"label":"Ctrl", "x":11, "y":4},
+ {"label":"RGB Toggle", "x":12, "y":4},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_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":"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":"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":"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":"\u2191", "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":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Fn", "x":10, "y":4},
+ {"label":"Ctrl", "x":11, "y":4},
+ {"label":"RGB Toggle", "x":12, "y":4},
+ {"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":"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":"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":"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":"\u2191", "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":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Fn", "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}
+ ]
+ },
+ "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":"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":"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":"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":"\u2191", "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":"Space", "x":3.75, "y":4, "w":6.25},
+ {"label":"Fn", "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}
+ ]
+ },
+ "LAYOUT_65_iso_blocker_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":"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":"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":"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":"\u2191", "x":14, "y":3},
+ {"label":"PgDn", "x":15, "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":"Ctrl", "x":11, "y":4, "w":1.5},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ },
+ "LAYOUT_65_iso_blocker_tsangan_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":"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":"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":"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":"\u2191", "x":14, "y":3},
+ {"label":"PgDn", "x":15, "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":"Ctrl", "x":11, "y":4, "w":1.5},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/pixelspace/capsule65i/keymaps/default/keymap.c b/keyboards/pixelspace/capsule65i/keymaps/default/keymap.c
new file mode 100644
index 0000000000..146c7de007
--- /dev/null
+++ b/keyboards/pixelspace/capsule65i/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/* Copyright 2022 PixelSpace 295033045@qq.com
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_HOME, 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,
+ KC_CAPS, KC_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_SPC, KC_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, RGB_TOG, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, 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,
+ 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, RGB_VAI, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_VAD, RGB_HUD
+ ),
+
+};
diff --git a/keyboards/pixelspace/capsule65i/keymaps/via/keymap.c b/keyboards/pixelspace/capsule65i/keymaps/via/keymap.c
new file mode 100644
index 0000000000..8ae7f71411
--- /dev/null
+++ b/keyboards/pixelspace/capsule65i/keymaps/via/keymap.c
@@ -0,0 +1,57 @@
+/* Copyright 2022 PixelSpace 295033045@qq.com
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_HOME, 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,
+ KC_CAPS, KC_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_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_PGDN,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, RGB_TOG, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_all(
+
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, 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,
+ 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, RGB_VAI, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_VAD, RGB_HUD
+ ),
+
+ [2] = LAYOUT_all(
+
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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(
+
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/pixelspace/capsule65i/keymaps/via/rules.mk b/keyboards/pixelspace/capsule65i/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/pixelspace/capsule65i/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/pixelspace/capsule65i/readme.md b/keyboards/pixelspace/capsule65i/readme.md
new file mode 100644
index 0000000000..a07acf24c8
--- /dev/null
+++ b/keyboards/pixelspace/capsule65i/readme.md
@@ -0,0 +1,17 @@
+# capsule65i
+A customizable soldering 65% keyboard.
+Support left shift, backspace split
+* Keyboard Maintainer: [PixelSpace](https://github.com/PixelSpaceStudio)
+* Hardware Supported: capsule65i
+* Hardware Availability: [PixelSpace](https://github.com/PixelSpaceStudio)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make pixelspace/capsule65i: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 `QK_BOOT`
diff --git a/keyboards/pixelspace/capsule65i/rules.mk b/keyboards/pixelspace/capsule65i/rules.mk
new file mode 100644
index 0000000000..36ea16195b
--- /dev/null
+++ b/keyboards/pixelspace/capsule65i/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 = 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 = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = 65_ansi 65_ansi_blocker 65_ansi_blocker_split_bs 65_ansi_blocker_tsangan 65_ansi_split_bs 65_iso 65_iso_blocker 65_iso_blocker_split_bs 65_iso_split_bs
diff --git a/keyboards/pizzakeyboards/pizza65/config.h b/keyboards/pizzakeyboards/pizza65/config.h
index 505a573630..1789ead3e8 100644
--- a/keyboards/pizzakeyboards/pizza65/config.h
+++ b/keyboards/pizzakeyboards/pizza65/config.h
@@ -17,20 +17,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x504B // PK
-#define PRODUCT_ID 0x707A // PZ
-#define DEVICE_VER 0x0001
-#define MANUFACTURER pizzakeyboards
-#define PRODUCT pizza65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS { B15, A10, F1, A0, A1 }
#define MATRIX_COL_PINS { A9, A8, F0, A2, A3, A4, B9, B8, B7, B6, B5, B4, B3, A15, A14, A13}
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/pizzakeyboards/pizza65/info.json b/keyboards/pizzakeyboards/pizza65/info.json
index 0cd80f3f97..9a0fdb3370 100644
--- a/keyboards/pizzakeyboards/pizza65/info.json
+++ b/keyboards/pizzakeyboards/pizza65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "pizza65",
+ "manufacturer": "pizzakeyboards",
"url": "www.keyboards.pizza",
"maintainer": "mm0nte",
+ "usb": {
+ "vid": "0x504B",
+ "pid": "0x707A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/pizzakeyboards/pizza65/keymaps/ansi_blocker_doublebs/keymap.c b/keyboards/pizzakeyboards/pizza65/keymaps/ansi_blocker_doublebs/keymap.c
index 6111144b1d..b020ba61f9 100644
--- a/keyboards/pizzakeyboards/pizza65/keymaps/ansi_blocker_doublebs/keymap.c
+++ b/keyboards/pizzakeyboards/pizza65/keymaps/ansi_blocker_doublebs/keymap.c
@@ -29,6 +29,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_HOME, KC_PGDN, KC_END
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
),
};
diff --git a/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c b/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c
index 97f38c30e3..a373967e9f 100644
--- a/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c
+++ b/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker/keymap.c
@@ -29,6 +29,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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_PGUP, KC_TRNS,
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
),
};
diff --git a/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c b/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c
index f39512107f..41d5587ac1 100644
--- a/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c
+++ b/keyboards/pizzakeyboards/pizza65/keymaps/iso_blocker_doublebs/keymap.c
@@ -29,6 +29,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NUHS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_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_HOME, KC_PGDN, KC_END
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
),
};
diff --git a/keyboards/pjb/eros/config.h b/keyboards/pjb/eros/config.h
index 038e13c9ad..c8d9692461 100644
--- a/keyboards/pjb/eros/config.h
+++ b/keyboards/pjb/eros/config.h
@@ -18,18 +18,11 @@
#include "config_common.h"
-#define VENDOR_ID 0x5042 // TG
-#define PRODUCT_ID 0x4552 // JC
-#define DEVICE_VER 0x0200
-#define MANUFACTURER PJB
-#define PRODUCT Eros
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
#define MATRIX_ROW_PINS { B2, B1, B0, D7, B7, D1 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, D4, D5, B4, D3, D2, E6, B3 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/pjb/eros/info.json b/keyboards/pjb/eros/info.json
index f639cfed1e..bda8ab15fb 100644
--- a/keyboards/pjb/eros/info.json
+++ b/keyboards/pjb/eros/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "PJB eros",
+ "keyboard_name": "Eros",
+ "manufacturer": "PJB",
"url": "https://github.com/602studios",
"maintainer": "602studios",
+ "usb": {
+ "vid": "0x5042",
+ "pid": "0x4552",
+ "device_version": "2.0.0"
+ },
"layout_aliases": {
"LAYOUT_all_f13": "LAYOUT_tkl_f13_ansi_split_bs_rshift",
"LAYOUT_tkl_ansi_f13": "LAYOUT_tkl_f13_ansi",
diff --git a/keyboards/pkb65/config.h b/keyboards/pkb65/config.h
index 7c6af9f84a..ab71d1633e 100644
--- a/keyboards/pkb65/config.h
+++ b/keyboards/pkb65/config.h
@@ -23,13 +23,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D43 // MCKeebs
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MCKeebs
-#define PRODUCT PKB65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -37,7 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { C7, C6, B6, B7, F0 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/pkb65/info.json b/keyboards/pkb65/info.json
index b09e8d8300..b9272dae2c 100644
--- a/keyboards/pkb65/info.json
+++ b/keyboards/pkb65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "PKB65",
+ "manufacturer": "MCKeebs",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D43",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/planck/config.h b/keyboards/planck/config.h
index 8fb9dda32a..87221a81f8 100644
--- a/keyboards/planck/config.h
+++ b/keyboards/planck/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x03A8
-#define MANUFACTURER OLKB
-#define PRODUCT Planck
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -31,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Planck PCB default pin-out */
#define MATRIX_ROW_PINS { D0, D5, B5, B6 }
#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
-#define UNUSED_PINS
#define QMK_ESC_OUTPUT F1
#define QMK_ESC_INPUT D5
diff --git a/keyboards/planck/ez/base/info.json b/keyboards/planck/ez/base/info.json
new file mode 100644
index 0000000000..07167a8c2a
--- /dev/null
+++ b/keyboards/planck/ez/base/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Planck EZ",
+ "usb": {
+ "pid": "0xC6CE"
+ }
+}
diff --git a/keyboards/planck/ez/base/rules.mk b/keyboards/planck/ez/base/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/planck/ez/base/rules.mk
diff --git a/keyboards/planck/ez/config.h b/keyboards/planck/ez/config.h
index d948fb5808..c9ed9e59ba 100644
--- a/keyboards/planck/ez/config.h
+++ b/keyboards/planck/ez/config.h
@@ -18,17 +18,6 @@
#pragma once
-#undef VENDOR_ID
-#define VENDOR_ID 0x3297
-#undef PRODUCT_ID
-#define PRODUCT_ID 0xC6CE
-#undef MANUFACTURER
-#define MANUFACTURER ZSA Technology Labs
-#undef PRODUCT
-#define PRODUCT Planck EZ
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0000
-
#undef MATRIX_ROWS
#undef MATRIX_COLS
/* key matrix size */
diff --git a/keyboards/planck/ez/ez.c b/keyboards/planck/ez/ez.c
index 98ec13085f..25dfe9adfb 100644
--- a/keyboards/planck/ez/ez.c
+++ b/keyboards/planck/ez/ez.c
@@ -322,7 +322,7 @@ bool music_mask_kb(uint16_t keycode) {
case QK_LAYER_TAP_TOGGLE ... QK_LAYER_MOD_MAX:
case QK_MOD_TAP ... QK_MOD_TAP_MAX:
case AU_ON ... MUV_DE:
- case RESET:
+ case QK_BOOT:
case EEP_RST:
return false;
default:
@@ -330,3 +330,22 @@ bool music_mask_kb(uint16_t keycode) {
}
}
#endif
+
+#ifdef SWAP_HANDS_ENABLE
+__attribute__ ((weak))
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ {{5, 4}, {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}},
+ {{5, 5}, {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}},
+ {{5, 6}, {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}},
+ {{5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
+
+ {{5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
+ {{5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
+ {{5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
+ {{5, 7}, {4, 7}, {3, 7}, {2, 7}, {1, 7}, {0, 7}},
+};
+
+# ifdef ENCODER_MAP_ENABLE
+const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {0};
+# endif
+#endif
diff --git a/keyboards/planck/ez/glow/config.h b/keyboards/planck/ez/glow/config.h
deleted file mode 100644
index 55ce289010..0000000000
--- a/keyboards/planck/ez/glow/config.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2018 Jack Humbert <jack.humb@gmail.com>
- * Copyright 2015 ZSA Technology Labs Inc (@zsa)
- * 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
-
-#undef PRODUCT_ID
-#define PRODUCT_ID 0xC6CF
-
-#undef PRODUCT
-#define PRODUCT Planck EZ Glow
diff --git a/keyboards/planck/ez/glow/info.json b/keyboards/planck/ez/glow/info.json
new file mode 100644
index 0000000000..4852258570
--- /dev/null
+++ b/keyboards/planck/ez/glow/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Planck EZ Glow",
+ "usb": {
+ "pid": "0xC6CF"
+ }
+}
diff --git a/keyboards/planck/ez/info.json b/keyboards/planck/ez/info.json
index 6c9332b052..4008cb7057 100644
--- a/keyboards/planck/ez/info.json
+++ b/keyboards/planck/ez/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Planck EZ",
+ "manufacturer": "ZSA Technology Labs",
"url": "https://ergodox-ez.com/pages/planck",
"maintainer": "jackhumbert",
+ "usb": {
+ "vid": "0x3297",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_planck_1x2uC": {
"layout": [
diff --git a/keyboards/planck/ez/rules.mk b/keyboards/planck/ez/rules.mk
index 61d3eb4d4f..47f140585b 100644
--- a/keyboards/planck/ez/rules.mk
+++ b/keyboards/planck/ez/rules.mk
@@ -29,3 +29,5 @@ RGBLIGHT_SUPPORTED = no
BAKCLIGHT_SUPPORTED = no
MOUSE_SHARED_EP = no
+
+DEFAULT_FOLDER = planck/ez/base
diff --git a/keyboards/planck/info.json b/keyboards/planck/info.json
index a4710d781f..cc57b6da60 100644
--- a/keyboards/planck/info.json
+++ b/keyboards/planck/info.json
@@ -1,5 +1,4 @@
{
- "keyboard_name": "Planck",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
"layouts": {
diff --git a/keyboards/planck/keymaps/ab/keymap.c b/keyboards/planck/keymaps/ab/keymap.c
index 8835bfc87d..e10d5e4422 100644
--- a/keyboards/planck/keymaps/ab/keymap.c
+++ b/keyboards/planck/keymaps/ab/keymap.c
@@ -51,7 +51,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,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSLS, KC_PIPE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_GRV, KC_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGUP, KC_TRNS, EM_UNDO, KC_VOLD, KC_VOLU, KC_MUTE
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_PGUP, KC_TRNS, EM_UNDO, KC_VOLD, KC_VOLU, KC_MUTE
),
[_CUSTOM] = LAYOUT_planck_grid( /* CUSTOM */
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/planck/keymaps/abhixec/keymap.c b/keyboards/planck/keymaps/abhixec/keymap.c
index d840bf4721..e95aa344d6 100644
--- a/keyboards/planck/keymaps/abhixec/keymap.c
+++ b/keyboards/planck/keymaps/abhixec/keymap.c
@@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/abishalom/keymap.c b/keyboards/planck/keymaps/abishalom/keymap.c
index c88dced41f..91dadb2c3a 100644
--- a/keyboards/planck/keymaps/abishalom/keymap.c
+++ b/keyboards/planck/keymaps/abishalom/keymap.c
@@ -144,7 +144,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, PLOVER, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/adamtabrams/keymap.c b/keyboards/planck/keymaps/adamtabrams/keymap.c
index 4b041aa2af..f1f5e6379a 100644
--- a/keyboards/planck/keymaps/adamtabrams/keymap.c
+++ b/keyboards/planck/keymaps/adamtabrams/keymap.c
@@ -200,8 +200,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FMWARE] = LAYOUT_planck_grid(
- XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, RESET, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, EEP_RST, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, QK_BOOT, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 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/planck/keymaps/altgr/common/chord_layout.h b/keyboards/planck/keymaps/altgr/common/chord_layout.h
index b6922705f3..cb1b7f6785 100644
--- a/keyboards/planck/keymaps/altgr/common/chord_layout.h
+++ b/keyboards/planck/keymaps/altgr/common/chord_layout.h
@@ -36,6 +36,6 @@
[_ADJUST] = LAYOUT_planck_grid(
PLOVER, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
AU_ON, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, ___fn__, _______, _______, _______, _______, ___fn__, _______, _______, _______
),
diff --git a/keyboards/planck/keymaps/am/keymap.c b/keyboards/planck/keymaps/am/keymap.c
index d521484a1c..757e56bc2d 100644
--- a/keyboards/planck/keymaps/am/keymap.c
+++ b/keyboards/planck/keymaps/am/keymap.c
@@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/andylikescandy/keymap.c b/keyboards/planck/keymaps/andylikescandy/keymap.c
index e873130f46..f0bf4fa2c3 100644
--- a/keyboards/planck/keymaps/andylikescandy/keymap.c
+++ b/keyboards/planck/keymaps/andylikescandy/keymap.c
@@ -185,7 +185,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,
LALT(LCTL(KC_DEL)), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
KC_CAPSLOCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX,
_______, _______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, XXXXXXX //PLOVER
diff --git a/keyboards/planck/keymaps/antosha417/keymap.c b/keyboards/planck/keymaps/antosha417/keymap.c
index a3d46c2311..b034221e3e 100644
--- a/keyboards/planck/keymaps/antosha417/keymap.c
+++ b/keyboards/planck/keymaps/antosha417/keymap.c
@@ -185,7 +185,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
_______, AU_ON, AU_OFF, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, MU_ON, MU_OFF, _______, _______, _______, _______, _______, _______, _______, _______, BRUDERSCHAFT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/ariccb/config.h b/keyboards/planck/keymaps/ariccb/config.h
index 322aa9277f..464a8cd5db 100644
--- a/keyboards/planck/keymaps/ariccb/config.h
+++ b/keyboards/planck/keymaps/ariccb/config.h
@@ -40,6 +40,7 @@
//#define MIDI_ADVANCED
#define TAPPING_TERM 150
+#define TAPPING_TERM_PER_KEY
#define IGNORE_MOD_TAP_INTERRUPT
// #define IGNORE_MOD_TAP_INTERRUPT
// #define HOLD_ON_OTHER_KEY_PRESS
diff --git a/keyboards/planck/keymaps/ariccb/keymap.c b/keyboards/planck/keymaps/ariccb/keymap.c
index c0b4e490fa..2647880705 100644
--- a/keyboards/planck/keymaps/ariccb/keymap.c
+++ b/keyboards/planck/keymaps/ariccb/keymap.c
@@ -235,7 +235,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* MIT Layout (ADJUST)
*
* ,-----------------------------------------------------------------------------.
- * |RGBtog|Ms3 | Ms2 |MsUp | Ms1 | Hue+| Hue- | Sat+| Sat- |Brt+ |Brt- | RESET|
+ * |RGBtog|Ms3 | Ms2 |MsUp | Ms1 | Hue+| Hue- | Sat+| Sat- |Brt+ |Brt- | QK_BOOT|
* |-----------------------------------------------------------------------------|
* |RGBMod| MWL | MsL |MDn |MsR |GAMING| |AU_ON|AU_OFF|MU_ON|MU_OF| DEBUG|
* |-----------------------------------------------------------------------------|
@@ -245,7 +245,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------'
*/
[_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_TOG, KC_BTN3, KC_BTN2, KC_MS_U, KC_BTN1, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, QK_BOOT,
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
@@ -379,9 +379,18 @@ void usl_reset(qk_tap_dance_state_t *state, void *user_data) {
// 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)
+ [UNDS_LOWER] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, usl_finished, usl_reset)
};
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case TD(UNDS_LOWER):
+ return 175;
+ default:
+ return TAPPING_TERM;
+ }
+}
+
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; }
@@ -661,4 +670,4 @@ void process_combo_event(uint16_t combo_index, bool pressed) {
}
break;
}
-} \ No newline at end of file
+}
diff --git a/keyboards/planck/keymaps/aviator/keymap.c b/keyboards/planck/keymaps/aviator/keymap.c
index 8fe66b3781..143c1bc926 100644
--- a/keyboards/planck/keymaps/aviator/keymap.c
+++ b/keyboards/planck/keymaps/aviator/keymap.c
@@ -112,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- KC_ESC, RESET, DEBUG, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, KC_DEL,
+ KC_ESC, QK_BOOT, DEBUG, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, KC_DEL,
_______, ___x___, ___x___, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, DATA, ___x___, ___x___, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, ___x___, ___x___, ___x___, ___x___, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
@@ -142,7 +142,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
- uint8_t default_layer = biton32(default_layer_state);
+ uint8_t default_layer = get_highest_layer(default_layer_state);
if (default_layer == _QWERTY) {
#ifdef BACKLIGHT_BREATHING
breathing_enable();
@@ -151,7 +151,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_LOWER);
- uint8_t default_layer = biton32(default_layer_state);
+ uint8_t default_layer = get_highest_layer(default_layer_state);
if (default_layer == _QWERTY) {
#ifdef BACKLIGHT_BREATHING
breathing_self_disable();
@@ -164,7 +164,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case RAISE:
if (record->event.pressed) {
layer_on(_RAISE);
- uint8_t default_layer = biton32(default_layer_state);
+ uint8_t default_layer = get_highest_layer(default_layer_state);
if (default_layer == _QWERTY) {
#ifdef BACKLIGHT_BREATHING
breathing_enable();
@@ -173,7 +173,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
update_tri_layer(_LOWER, _RAISE, _ADJUST);
} else {
layer_off(_RAISE);
- uint8_t default_layer = biton32(default_layer_state);
+ uint8_t default_layer = get_highest_layer(default_layer_state);
if (default_layer == _QWERTY) {
#ifdef BACKLIGHT_BREATHING
breathing_self_disable();
diff --git a/keyboards/planck/keymaps/badger/keymap.c b/keyboards/planck/keymaps/badger/keymap.c
index 3321425190..6bbe034382 100644
--- a/keyboards/planck/keymaps/badger/keymap.c
+++ b/keyboards/planck/keymaps/badger/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_0, KC_DOT, KC_ENT, _______, _______, _______, _______, _______, _______, _______, _______),
[_ADJUST] = LAYOUT_ortho_4x12(
- _______, NK_ON, NK_OFF, EEP_RST, RESET, KC_MSTP, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN2, KC_INS, \
+ _______, NK_ON, NK_OFF, EEP_RST, QK_BOOT, KC_MSTP, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN2, KC_INS, \
_______, GE_SWAP, GE_NORM, DEBUG, AG_SWAP, AG_NORM, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1, _______, \
_______, KC_LYRC, KC_FIRST, KC_CAPS, KC_NO, KC_MPRV, KC_MNXT, KC_MUTE, KC_ACL0, KC_ACL1, KC_ACL2, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
diff --git a/keyboards/planck/keymaps/basic/keymap.c b/keyboards/planck/keymaps/basic/keymap.c
index 09efbc146f..7ce327302f 100644
--- a/keyboards/planck/keymaps/basic/keymap.c
+++ b/keyboards/planck/keymaps/basic/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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),_______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
diff --git a/keyboards/planck/keymaps/bbaserdem/README.md b/keyboards/planck/keymaps/bbaserdem/README.md
deleted file mode 100644
index c8e8c3963c..0000000000
--- a/keyboards/planck/keymaps/bbaserdem/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Planck Layout
-
-Current keymap is for rev4.
-Audio is disabled in favor of RGB.
-Check out [user readme](../../../../users/bbaserdem/README.md) for more info.
-
-# Build
-
-Get keyboard into reset mode, and then;
-
-```
-make planck/rev4:bbaserdem:dfu
-```
-
-Either use sudo or set up udev rules.
diff --git a/keyboards/planck/keymaps/bbaserdem/config.h b/keyboards/planck/keymaps/bbaserdem/config.h
deleted file mode 100755
index ac5460bda6..0000000000
--- a/keyboards/planck/keymaps/bbaserdem/config.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef CONFIG_KEYMAP_H
-#define CONFIG_KEYMAP_H
-
-#include "config_common.h"
-
-// LED strip stuff
-#ifdef RGBLIGHT_ENABLE
-#define RGB_DI_PIN B2
-#define RGBLED_NUM 12
-#define RGBLIGHT_HUE_STEP 6
-#define RGBLIGHT_SAT_STEP 12
-#define RGBLIGHT_VAL_STEP 20
-#define RGBLIGHT_ANIMATIONS
-#define RGBLIGHT_EFFECT_SNAKE_LENGTH 6
-#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 2
-#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 6
-#define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 6
-#define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 2000
-#define RGBLIGHT_EFFECT_CHRISTMAS_STEP 1
-#endif
-
-#define ENCODER_RESOLUTION 4
-
-#endif
diff --git a/keyboards/planck/keymaps/bbaserdem/keymap.c b/keyboards/planck/keymaps/bbaserdem/keymap.c
deleted file mode 100755
index 1fa8132ddb..0000000000
--- a/keyboards/planck/keymaps/bbaserdem/keymap.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * PLANCK - Dvorak turkish
- * Keymap by @bbaserdem
- * Dvorak layout with multiple features
- * Most of the code is in the "user" directory.
- * Check qmk_firmware/users/bbaserdem for the main part of the code
- */
-
-#include "planck.h"
-#include "bbaserdem.h"
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- // Main Dvorak layer
- [_DV] = LAYOUT_planck_wrapper(DVORAK),
- // Turkish and special character overlay
- [_AL] = LAYOUT_planck_wrapper(ALTCHAR),
- // Gaming layer
- [_GA] = LAYOUT_planck_wrapper(GAME),
- // Numbers layer
- [_NU] = LAYOUT_planck_wrapper(NUMBERS),
- // Settings layer
- [_SE] = LAYOUT_planck_wrapper(SETTINGS),
- // Mouse emulation layer
- [_MO] = LAYOUT_planck_wrapper(MOUSE),
- // Music mode
- [_MU] = LAYOUT_planck_wrapper(MUSIC),
-};
diff --git a/keyboards/planck/keymaps/bbaserdem/rules.mk b/keyboards/planck/keymaps/bbaserdem/rules.mk
deleted file mode 100755
index b9b589e8d2..0000000000
--- a/keyboards/planck/keymaps/bbaserdem/rules.mk
+++ /dev/null
@@ -1,7 +0,0 @@
-# Build options
-
-BACKLIGHT_ENABLE = yes # Switch LEDs
-MOUSEKEY_ENABLE = yes # Emulates mouse key using keypresses
-RGBLIGHT_ENABLE = yes # LED strips
-TAP_DANCE_ENABLE = no # Use multi-tap features
-AUDIO_ENABLE = yes # Audio stuff
diff --git a/keyboards/planck/keymaps/bghull/keymap.c b/keyboards/planck/keymaps/bghull/keymap.c
index 3539ac7bf7..8abdc884dd 100644
--- a/keyboards/planck/keymaps/bghull/keymap.c
+++ b/keyboards/planck/keymaps/bghull/keymap.c
@@ -70,21 +70,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | Mute | VolD | VolU | `~ | _ | = | 1 | 2 | 3 | PgUp | \ | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | |RESET | | | | | . | Home | PgDn | End |
+ * | | |QK_BOOT | | | | | . | Home | PgDn | End |
* `-----------------------------------------------------------------------------------'
*/
[_NUMPAD] = LAYOUT_planck_grid(
_______, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_U, KC_LPRN, KC_RPRN, KC_7, KC_8, KC_9, KC_0, _______,
_______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_LBRC, KC_RBRC, KC_4, KC_5, KC_6, KC_PPLS, KC_MINS,
_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_GRAVE, KC_UNDS, KC_EQL, KC_1, KC_2, KC_3, KC_PGUP, KC_BSLS,
- _______, XXXXXXX, RESET, _______, _______, _______, _______, _______, KC_PDOT, KC_HOME, KC_PGDN, KC_END
+ _______, XXXXXXX, QK_BOOT, _______, _______, _______, _______, _______, KC_PDOT, KC_HOME, KC_PGDN, KC_END
),
/* Dynamic macros + Winkey combos
* ,-----------------------------------------------------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | W2 | | | | | | | | | | | RESET|
+ * | W2 | | | | | | | | | | | QK_BOOT|
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | W3 | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -93,7 +93,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FUNC] = LAYOUT_planck_grid(
KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12,
- LGUI(KC_2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ LGUI(KC_2), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
LGUI(KC_3), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
LGUI(KC_4), _______, DM_REC1, DM_PLY1, DM_RSTP, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/planck/keymaps/brandon/keymap.c b/keyboards/planck/keymaps/brandon/keymap.c
index 66533e53a2..cd228c3579 100644
--- a/keyboards/planck/keymaps/brandon/keymap.c
+++ b/keyboards/planck/keymaps/brandon/keymap.c
@@ -217,7 +217,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* \_____________\_ Backlight _/
*/
[KEYBOARD_LAYER] = LAYOUT_planck_grid(
- ___x___, RESET, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___,
+ ___x___, QK_BOOT, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___,
___x___, QWERTY, COLEMAK, STENO, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___, ___x___,
___x___, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, ___x___, ___x___, AU_ON, AU_OFF, ___x___,
___x___, ___x___, ___x___, ___x___, LOWER, BL_TOGG, BL_TOGG, RAISE, BL_TOGG, BL_DEC, BL_INC, ___x___
diff --git a/keyboards/planck/keymaps/buffet/keymap.c b/keyboards/planck/keymaps/buffet/keymap.c
index 78a9f711c4..966ec23a6f 100644
--- a/keyboards/planck/keymaps/buffet/keymap.c
+++ b/keyboards/planck/keymaps/buffet/keymap.c
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
____, ____, ____, ____, ____, ____, XXXX, ____, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
[PHI] = LAYOUT_planck_grid(
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, ____, ____, ____, ____, ____, ____, KC_DEL,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, ____, ____, ____, ____, ____, ____, KC_DEL,
____, KC_F5, KC_F6, KC_F7, KC_F8, ____, ____, DF(QWERTY), DF(NORMAL), DF(GAME), ____, KC_F13,
____, KC_F9, KC_F10, KC_F11, KC_F12, ____, ____, ____, ____, ____, ____, ____,
____, RGB_TOG, RGB_MOD, ____, ____, ____, XXXX, ____, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
diff --git a/keyboards/planck/keymaps/buhearns/keymap.c b/keyboards/planck/keymaps/buhearns/keymap.c
index 4821ece571..074c33e453 100644
--- a/keyboards/planck/keymaps/buhearns/keymap.c
+++ b/keyboards/planck/keymaps/buhearns/keymap.c
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[4] = LAYOUT_planck_grid(
- KC_TRNS, RESET, DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, MU_MOD, MUV_IN, MU_ON, AU_ON, KC_EJCT,
+ KC_TRNS, QK_BOOT, DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, MU_MOD, MUV_IN, MU_ON, AU_ON, KC_EJCT,
KC_TRNS, EEP_RST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, MUV_DE, MU_OFF, AU_OFF, KC_TRNS,
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE, KC_MPRV, KC_MNXT, KC_NO,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MSTP, KC_VOLD, KC_VOLU, KC_MPLY
diff --git a/keyboards/planck/keymaps/cbbrowne/keymap.c b/keyboards/planck/keymaps/cbbrowne/keymap.c
index 683b9342d8..22e0cbc492 100644
--- a/keyboards/planck/keymaps/cbbrowne/keymap.c
+++ b/keyboards/planck/keymaps/cbbrowne/keymap.c
@@ -142,7 +142,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_planck_grid( /* Adjustments - gonna shift the wild tools in here */
ROT_LED,USERNAME,MVERSION, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
_______, RANDDIG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
- _______, RANDALP, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______ ,
+ _______, RANDALP, _______, _______, _______, QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______ ,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/planck/keymaps/chance/keymap.c b/keyboards/planck/keymaps/chance/keymap.c
index 46d077ddc3..458e9a4f53 100644
--- a/keyboards/planck/keymaps/chance/keymap.c
+++ b/keyboards/planck/keymaps/chance/keymap.c
@@ -170,7 +170,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
M(1) , _______, _______, _______, _______, _______, NUMPAD, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
KC_CAPS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/charlesrocket/keymap.c b/keyboards/planck/keymaps/charlesrocket/keymap.c
index cec3f0186a..f6229d2d69 100644
--- a/keyboards/planck/keymaps/charlesrocket/keymap.c
+++ b/keyboards/planck/keymaps/charlesrocket/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_planck_grid(
_______, CK_UP, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______,
- KC_DELETE, CK_TOGG, AU_ON, AU_OFF, AU_TOG, _______, _______, _______, RGB_VAI,RGB_VAD , _______, RESET,
+ KC_DELETE, CK_TOGG, AU_ON, AU_OFF, AU_TOG, _______, _______, _______, RGB_VAI,RGB_VAD , _______, QK_BOOT,
_______, CK_DOWN, MU_ON, MU_OFF, MU_TOG, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_NO, _______, _______, _______, _______, _______
),
@@ -101,7 +101,7 @@ void set_layer_color(int layer) {
void rgb_matrix_indicators_user(void) {
if (g_suspend_state || keyboard_config.disable_layer_led) { return; }
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case 0:
set_layer_color(0);
break;
diff --git a/keyboards/planck/keymaps/circuit/keymap.c b/keyboards/planck/keymaps/circuit/keymap.c
index 805ebd7fd3..d259914d8a 100644
--- a/keyboards/planck/keymaps/circuit/keymap.c
+++ b/keyboards/planck/keymaps/circuit/keymap.c
@@ -149,7 +149,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 ,
KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24 ,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QWERTY, DVORAK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- RESET, XXXXXXX, LOCK, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ QK_BOOT, XXXXXXX, LOCK, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
)
};
diff --git a/keyboards/planck/keymaps/coloneljesus/keymap.c b/keyboards/planck/keymaps/coloneljesus/keymap.c
index f60adc43e6..832287f224 100644
--- a/keyboards/planck/keymaps/coloneljesus/keymap.c
+++ b/keyboards/planck/keymaps/coloneljesus/keymap.c
@@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/copface/keymap.c b/keyboards/planck/keymaps/copface/keymap.c
index b448d9c7dd..2ba55c6a52 100644
--- a/keyboards/planck/keymaps/copface/keymap.c
+++ b/keyboards/planck/keymaps/copface/keymap.c
@@ -94,7 +94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, CG_TOGG, XXXXXXX,
XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, 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, RESET
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT
)
};
diff --git a/keyboards/planck/keymaps/corvec/keymap.c b/keyboards/planck/keymaps/corvec/keymap.c
index a927c522a2..fc9f2e4985 100644
--- a/keyboards/planck/keymaps/corvec/keymap.c
+++ b/keyboards/planck/keymaps/corvec/keymap.c
@@ -136,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
COLEMAK, _______, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, QWERTY ,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, _______, KC_ASON, KC_ASUP,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF,KC_ASRP, KC_ASOFF,KC_ASDN,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT
)
diff --git a/keyboards/planck/keymaps/csc027/config.h b/keyboards/planck/keymaps/csc027/config.h
index a3b69beb5a..2a620db279 100644
--- a/keyboards/planck/keymaps/csc027/config.h
+++ b/keyboards/planck/keymaps/csc027/config.h
@@ -19,10 +19,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
-
-#define USB_POLLING_INTERVAL_MS 1
-
-#if defined(TAP_CODE_DELAY)
-# undef TAP_CODE_DELAY
-#endif
-#define TAP_CODE_DELAY 10
diff --git a/keyboards/planck/keymaps/csc027/rules.mk b/keyboards/planck/keymaps/csc027/rules.mk
index d6b6894bf1..0c35b2c28f 100644
--- a/keyboards/planck/keymaps/csc027/rules.mk
+++ b/keyboards/planck/keymaps/csc027/rules.mk
@@ -1,6 +1,8 @@
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
+BOOTMAGIC_ENABLE = no
COMMAND_ENABLE = no
CONSOLE_ENABLE = no
-EXTRAKEY_ENABLE = no
+EXTRAKEY_ENABLE = yes
LTO_ENABLE = no
+MOUSEKEY_ENABLE = yes
+NKRO_ENABLE = yes
RGBLIGHT_ENABLE = no
diff --git a/keyboards/planck/keymaps/david/keymap.c b/keyboards/planck/keymaps/david/keymap.c
index d093efe04a..59a23d9223 100644
--- a/keyboards/planck/keymaps/david/keymap.c
+++ b/keyboards/planck/keymaps/david/keymap.c
@@ -16,13 +16,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[2] = LAYOUT_planck_grid( /* RAISE */
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_TRNS, DF(0), DF(1), RESET, M(0), M(1), M(2), KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_TRNS, DF(0), DF(1), QK_BOOT, M(0), M(1), M(2), KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
KC_TRNS, KC_F11, KC_F12, M(0), M(1), M(2), M(3), M(4), M(5), M(6), M(7), KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
[3] = LAYOUT_planck_grid( /* LOWER */
S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC,
- KC_TRNS, DF(0), DF(1), RESET, M(0), M(1), M(2), S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS),
+ KC_TRNS, DF(0), DF(1), QK_BOOT, M(0), M(1), M(2), S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS),
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
diff --git a/keyboards/planck/keymaps/davidrambo/keymap.c b/keyboards/planck/keymaps/davidrambo/keymap.c
index fa524180fb..66151adcbc 100644
--- a/keyboards/planck/keymaps/davidrambo/keymap.c
+++ b/keyboards/planck/keymaps/davidrambo/keymap.c
@@ -86,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, C_TAB , A_LEFT, KC_UP, A_RGHT , KC_DEL , _______,
_______, _______, _______, _______, _______, _______, CTLPGUP, KC_LEFT, KC_DOWN, KC_RGHT, CTLPGDN, _______,
_______, _______, _______, _______, _______, _______, G_TAB , A_BSPC , KC_HOME, KC_END, G_GRV , _______,
- RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/planck/keymaps/dbroqua/keymap.c b/keyboards/planck/keymaps/dbroqua/keymap.c
index 75087eb9c9..1d425ea3d1 100644
--- a/keyboards/planck/keymaps/dbroqua/keymap.c
+++ b/keyboards/planck/keymaps/dbroqua/keymap.c
@@ -110,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/dc/keymap.c b/keyboards/planck/keymaps/dc/keymap.c
index fdafd03a53..7cbc9dfaf2 100644
--- a/keyboards/planck/keymaps/dc/keymap.c
+++ b/keyboards/planck/keymaps/dc/keymap.c
@@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ACTIONS] = LAYOUT_planck_grid(
- BL_STEP, _______, _______, _______, _______, KC_SLEP, RESET, _______, _______, _______, _______, KC_DEL,
+ BL_STEP, _______, _______, _______, _______, KC_SLEP, QK_BOOT, _______, _______, _______, _______, KC_DEL,
_______, LCTL(KC_Y), _______, _______, _______, _______, _______, KC_MPLY, KC_MPRV, KC_MNXT, _______, _______,
_______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/dcompact/keymap.c b/keyboards/planck/keymaps/dcompact/keymap.c
index 0b48f30ac4..0c0f23d85b 100644
--- a/keyboards/planck/keymaps/dcompact/keymap.c
+++ b/keyboards/planck/keymaps/dcompact/keymap.c
@@ -248,7 +248,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, RGB_TOG, RGB_MOD, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, RGB_VAD, RGB_VAI, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/dear_vehicle_owner/keymap.c b/keyboards/planck/keymaps/dear_vehicle_owner/keymap.c
index c25df20a5b..c34130f36f 100644
--- a/keyboards/planck/keymaps/dear_vehicle_owner/keymap.c
+++ b/keyboards/planck/keymaps/dear_vehicle_owner/keymap.c
@@ -164,7 +164,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/default/keymap.c b/keyboards/planck/keymaps/default/keymap.c
index 3453d41746..8041e0bada 100644
--- a/keyboards/planck/keymaps/default/keymap.c
+++ b/keyboards/planck/keymaps/default/keymap.c
@@ -165,7 +165,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_planck_grid(
_______, QK_BOOT, 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, _______, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/planck/keymaps/deft/keymap.c b/keyboards/planck/keymaps/deft/keymap.c
index d7d40f146b..0d7611f371 100644
--- a/keyboards/planck/keymaps/deft/keymap.c
+++ b/keyboards/planck/keymaps/deft/keymap.c
@@ -125,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/dlaroe/keymap.c b/keyboards/planck/keymaps/dlaroe/keymap.c
index 41b3064132..86e4365781 100644
--- a/keyboards/planck/keymaps/dlaroe/keymap.c
+++ b/keyboards/planck/keymaps/dlaroe/keymap.c
@@ -153,7 +153,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- LALT(LCTL(KC_INS)), QWERTY, _______, _______, RESET, M(0), _______, _______, _______, _______, PLOVER, LALT(LCTL(KC_DEL)),
+ LALT(LCTL(KC_INS)), QWERTY, _______, _______, QK_BOOT, M(0), _______, _______, _______, _______, PLOVER, LALT(LCTL(KC_DEL)),
KC_CAPS, ARROW, _______, AU_ON, AU_OFF, GAME, AG_SWAP, AG_NORM, KC_PSCR, KC_SLCK, KC_PAUS, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
BACKLIT, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, BL_TOGG, BL_DEC , BL_INC , BL_STEP
diff --git a/keyboards/planck/keymaps/dodger/keymap.c b/keyboards/planck/keymaps/dodger/keymap.c
index 80f8445cc6..2a7486f2de 100644
--- a/keyboards/planck/keymaps/dodger/keymap.c
+++ b/keyboards/planck/keymaps/dodger/keymap.c
@@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- EEP_RST, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ EEP_RST, QK_BOOT, 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, _______, _______, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/dr0ck/keymap.c b/keyboards/planck/keymaps/dr0ck/keymap.c
index 0d28698d29..0449477fae 100644
--- a/keyboards/planck/keymaps/dr0ck/keymap.c
+++ b/keyboards/planck/keymaps/dr0ck/keymap.c
@@ -164,7 +164,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
KC_CAPS, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/dr_notsokind/keymap.c b/keyboards/planck/keymaps/dr_notsokind/keymap.c
index 1055c754f0..410015708c 100644
--- a/keyboards/planck/keymaps/dr_notsokind/keymap.c
+++ b/keyboards/planck/keymaps/dr_notsokind/keymap.c
@@ -199,7 +199,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_SLEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PWR,
KC_WAKE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, AU_OFF, MU_OFF, QWERTY, NUMPAD, MU_ON, AU_ON, XXXXXXX, MUV_IN, KC_SYSREQ,
- RESET, XXXXXXX, LOCK, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, AG_NORM, MUV_DE, AG_SWAP
+ QK_BOOT, XXXXXXX, LOCK, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, AG_NORM, MUV_DE, AG_SWAP
)
};
diff --git a/keyboards/planck/keymaps/dsanchezseco/keymap.c b/keyboards/planck/keymaps/dsanchezseco/keymap.c
index 901709429b..f20f68667b 100644
--- a/keyboards/planck/keymaps/dsanchezseco/keymap.c
+++ b/keyboards/planck/keymaps/dsanchezseco/keymap.c
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, _______, _______, _______, _______,
_______, KC_PSCR, _______, KC_DOWN, KC_UP, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/dshields/keymap.c b/keyboards/planck/keymaps/dshields/keymap.c
index 7b768603cb..538c41922a 100644
--- a/keyboards/planck/keymaps/dshields/keymap.c
+++ b/keyboards/planck/keymaps/dshields/keymap.c
@@ -4,7 +4,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DEF] = LAYOUT_planck_grid(
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_BSPC, KC_Y, KC_U, KC_I, KC_O, KC_P ,
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_TAB, KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ MT_A, MT_S, MT_D, MT_F, KC_G, KC_TAB, KC_ENT, KC_H, MT_J, MT_K, MT_L, MT_SCLN,
KC_Z, KC_X, KC_C, KC_V, KC_B, OSMLSFT, DM_PLY1, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
OSMLCTL, KC_LGUI, OSMLALT, OSL_FUN, OSL_LWR, MT_SPC, MT_SPC, OSL_RSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
@@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
[FUN] = LAYOUT_planck_grid(
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET, EEP_RST, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 ,
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, QK_BOOT, EEP_RST, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10 ,
KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, DM_RSTP, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R,
LGT_TOG, LGT_MOD, LGT_BRT, LGT_INC, LGT_DEC, DM_REC1, DM_REC2, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R
diff --git a/keyboards/planck/keymaps/dudeofawesome/keymap.c b/keyboards/planck/keymaps/dudeofawesome/keymap.c
index eac7470d25..ad515032b6 100644
--- a/keyboards/planck/keymaps/dudeofawesome/keymap.c
+++ b/keyboards/planck/keymaps/dudeofawesome/keymap.c
@@ -161,7 +161,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
KC_CAPS, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, WORKMAN, DVORAK, COLEMAK, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, RGB_M_R, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/dvorak2space/keymap.c b/keyboards/planck/keymaps/dvorak2space/keymap.c
index 4b07759452..9abdaf800a 100644
--- a/keyboards/planck/keymaps/dvorak2space/keymap.c
+++ b/keyboards/planck/keymaps/dvorak2space/keymap.c
@@ -105,7 +105,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24,
LCTL(KC_F13),LCTL(KC_F14),LCTL(KC_F15),LCTL(KC_F16),LCTL(KC_F17),LCTL(KC_F18),LCTL(KC_F19),LCTL(KC_F20),LCTL(KC_F21),LCTL(KC_F22),LCTL(KC_F23),LCTL(KC_F24),
LSFT(KC_F13),LSFT(KC_F14),LSFT(KC_F15),LSFT(KC_F16),LSFT(KC_F17),LSFT(KC_F18),LSFT(KC_F19),LSFT(KC_F20),LSFT(KC_F21),LSFT(KC_F22),LSFT(KC_F23),LSFT(KC_F24),
- RESET, LALT(KC_F14),LALT(KC_F15),OSL(PASS_L), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, HK_COSL
+ QK_BOOT, LALT(KC_F14),LALT(KC_F15),OSL(PASS_L), CAD, LALT(KC_F19), LALT(KC_F21),LALT(KC_F22),HK_SLP, HK_COSL
),
//Locked Screen
[5] = LAYOUT_planck_2x2u(
diff --git a/keyboards/planck/keymaps/dvz/keymap.c b/keyboards/planck/keymaps/dvz/keymap.c
index f1d213b42c..1d5ea41c74 100644
--- a/keyboards/planck/keymaps/dvz/keymap.c
+++ b/keyboards/planck/keymaps/dvz/keymap.c
@@ -147,7 +147,7 @@ LSFT_T(KC_TAB),DE_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
KC_POWER,_______, 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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/emiller/keymap.c b/keyboards/planck/keymaps/emiller/keymap.c
index 7dcd99d3b7..cab0193ceb 100644
--- a/keyboards/planck/keymaps/emiller/keymap.c
+++ b/keyboards/planck/keymaps/emiller/keymap.c
@@ -166,7 +166,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, 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, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/emilyh/keymap.c b/keyboards/planck/keymaps/emilyh/keymap.c
index 3beadd8e2d..fd71b0e905 100644
--- a/keyboards/planck/keymaps/emilyh/keymap.c
+++ b/keyboards/planck/keymaps/emilyh/keymap.c
@@ -154,7 +154,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/eosti/keymap.c b/keyboards/planck/keymaps/eosti/keymap.c
index 3f1c750cfc..54e1c7f4c7 100644
--- a/keyboards/planck/keymaps/eosti/keymap.c
+++ b/keyboards/planck/keymaps/eosti/keymap.c
@@ -114,7 +114,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_NO, KC_INS, KC_HOME, AU_ON, KC_NO, GAME,
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- KC_NO, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_SLEP, KC_DEL, KC_END, AU_OFF, KC_NO, RESET,
+ KC_NO, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_SLEP, KC_DEL, KC_END, AU_OFF, KC_NO, QK_BOOT,
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, UTILS, _______, _______, UTILS, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
diff --git a/keyboards/planck/keymaps/eshesh2/keymap.c b/keyboards/planck/keymaps/eshesh2/keymap.c
index c13af1d3fc..672d28ea3c 100644
--- a/keyboards/planck/keymaps/eshesh2/keymap.c
+++ b/keyboards/planck/keymaps/eshesh2/keymap.c
@@ -123,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, XXXXXXX, XXXXXXX, NUMPAD, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/espynn/keymap.c b/keyboards/planck/keymaps/espynn/keymap.c
index 305fb6e759..fb7abd5c8d 100644
--- a/keyboards/planck/keymaps/espynn/keymap.c
+++ b/keyboards/planck/keymaps/espynn/keymap.c
@@ -66,7 +66,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_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, CUS0, CUS3, CUS4, KC_TRNS, KC_F12, KC_TRNS,
KC_TRNS, KC_TRNS, CUT, COPY, PASTE, CUS1, CUS5, CUS2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- BL, RESET, LALT(LCTL(KC_DEL)), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ BL, QK_BOOT, LALT(LCTL(KC_DEL)), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
diff --git a/keyboards/planck/keymaps/experimental/keymap.c b/keyboards/planck/keymaps/experimental/keymap.c
index 2024552004..7252b5b5d3 100644
--- a/keyboards/planck/keymaps/experimental/keymap.c
+++ b/keyboards/planck/keymaps/experimental/keymap.c
@@ -167,7 +167,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/fabian/keymap.c b/keyboards/planck/keymaps/fabian/keymap.c
index 9969d4337e..54d17cd51e 100644
--- a/keyboards/planck/keymaps/fabian/keymap.c
+++ b/keyboards/planck/keymaps/fabian/keymap.c
@@ -172,7 +172,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/foreveranapple/keymap.c b/keyboards/planck/keymaps/foreveranapple/keymap.c
index 3c5ab7cd02..ade51d5a3c 100644
--- a/keyboards/planck/keymaps/foreveranapple/keymap.c
+++ b/keyboards/planck/keymaps/foreveranapple/keymap.c
@@ -203,7 +203,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL,
+ _______, QK_BOOT, 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, NIXQWERTY, OSX, PLOVER, COLEMAK,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, DVORAK, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/fsck/keymap.c b/keyboards/planck/keymaps/fsck/keymap.c
index cac5d554ec..f1043d53d2 100644
--- a/keyboards/planck/keymaps/fsck/keymap.c
+++ b/keyboards/planck/keymaps/fsck/keymap.c
@@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/gitdrik/keymap.c b/keyboards/planck/keymaps/gitdrik/keymap.c
index 58db078281..d9f1e5a4fc 100644
--- a/keyboards/planck/keymaps/gitdrik/keymap.c
+++ b/keyboards/planck/keymaps/gitdrik/keymap.c
@@ -118,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_RIGHTER] = LAYOUT_planck_grid(
- KC_TRNS, RESET, DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L, KC_MS_U, KC_WH_R, KC_BTN2, KC_WH_U,
+ KC_TRNS, QK_BOOT, DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, KC_WH_L, KC_MS_U, KC_WH_R, KC_BTN2, KC_WH_U,
KC_TRNS, KC_BTN4, KC_BTN3, KC_BTN2, KC_BTN1, KC_NO, KC_NO, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, KC_WH_D,
KC_TRNS, KC_TRNS, MU_MOD, MU_ON, MU_OFF, KC_NO, KC_NO, KC_BTN1, KC_BTN2, KC_BTN3, KC_TRNS, KC_TRNS,
KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_BRID, KC_BRIU, KC_NO
diff --git a/keyboards/planck/keymaps/grahampheath/keymap.c b/keyboards/planck/keymaps/grahampheath/keymap.c
index babe67c442..cfb15ab9a5 100644
--- a/keyboards/planck/keymaps/grahampheath/keymap.c
+++ b/keyboards/planck/keymaps/grahampheath/keymap.c
@@ -213,7 +213,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, 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, _______, _______, _______, _______, _______,
BACKLIT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
@@ -231,7 +231,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
bool has_layer_changed = true;
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
static uint8_t old_layer = 0;
if (old_layer != layer) {
diff --git a/keyboards/planck/keymaps/grant24/keymap.c b/keyboards/planck/keymaps/grant24/keymap.c
index a82403d197..3af4642af5 100644
--- a/keyboards/planck/keymaps/grant24/keymap.c
+++ b/keyboards/planck/keymaps/grant24/keymap.c
@@ -186,7 +186,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______,
+ _______, QK_BOOT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______,
_______, _______, _______, AU_ON, AU_OFF, _______, _______, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
_______, _______, _______, MU_ON, MU_OFF, _______, _______, KC_CAPS, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/gunp/keymap.c b/keyboards/planck/keymaps/gunp/keymap.c
index 04af006a7b..3e5abb947f 100644
--- a/keyboards/planck/keymaps/gunp/keymap.c
+++ b/keyboards/planck/keymaps/gunp/keymap.c
@@ -128,7 +128,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
OSM(MOD_LCTL), OSM(MOD_LALT), OSM(MOD_LGUI), MC(KC_W), KC_DELETE, KC_APP
),
[LY_1101] = LAYOUT_gunp(
- SANDBOX, XXXXXXX, AU_TOG, KC_LOCK, RGB_TOG, RESET,
+ SANDBOX, XXXXXXX, AU_TOG, KC_LOCK, RGB_TOG, QK_BOOT,
KC_WAKE, KC_CLCK, USER_NAME, USER_EMAIL, RGB_MOD, DEBUG,
KC_SLEP, KC_NLCK, DM_REC1, DM_PLY1, XXXXXXX, EEP_RST,
KC_PWR, KC_SLCK, DM_REC2, DM_PLY2, DM_RSTP, KC_INSERT
diff --git a/keyboards/planck/keymaps/handwired_binaryplease/keymap.c b/keyboards/planck/keymaps/handwired_binaryplease/keymap.c
index 58f9cea2a5..abc31a2ee6 100644
--- a/keyboards/planck/keymaps/handwired_binaryplease/keymap.c
+++ b/keyboards/planck/keymaps/handwired_binaryplease/keymap.c
@@ -152,7 +152,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
_______, _______, _______, AU_ON, AU_OFF, _______, _______, _______, _______, _______, QWERTY, COLEMAK,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/hiea/common/chord_layout.h b/keyboards/planck/keymaps/hiea/common/chord_layout.h
index b6922705f3..cb1b7f6785 100644
--- a/keyboards/planck/keymaps/hiea/common/chord_layout.h
+++ b/keyboards/planck/keymaps/hiea/common/chord_layout.h
@@ -36,6 +36,6 @@
[_ADJUST] = LAYOUT_planck_grid(
PLOVER, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
AU_ON, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, ___fn__, _______, _______, _______, _______, ___fn__, _______, _______, _______
),
diff --git a/keyboards/planck/keymaps/hieax/common/chord_layout.h b/keyboards/planck/keymaps/hieax/common/chord_layout.h
index b6922705f3..cb1b7f6785 100644
--- a/keyboards/planck/keymaps/hieax/common/chord_layout.h
+++ b/keyboards/planck/keymaps/hieax/common/chord_layout.h
@@ -36,6 +36,6 @@
[_ADJUST] = LAYOUT_planck_grid(
PLOVER, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
AU_ON, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, ___fn__, _______, _______, _______, _______, ___fn__, _______, _______, _______
),
diff --git a/keyboards/planck/keymaps/hvp/keymap.c b/keyboards/planck/keymaps/hvp/keymap.c
index 95d3646dfa..1aad239301 100644
--- a/keyboards/planck/keymaps/hvp/keymap.c
+++ b/keyboards/planck/keymaps/hvp/keymap.c
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, AG_NORM, AG_SWAP, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______,
_______, _______, MU_MOD, AU_ON, AU_OFF, _______, _______, KC_4, KC_5, KC_6, _______, _______,
KC_PSCR, MUV_DE, MUV_IN, MU_ON, MU_OFF, _______, _______, KC_0, KC_1, KC_2, KC_3, _______,
- RESET, _______, TERM_ON, TERM_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, DEBUG
+ QK_BOOT, _______, TERM_ON, TERM_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, DEBUG
)};
#ifdef AUDIO_ENABLE
diff --git a/keyboards/planck/keymaps/impossible/keymap.c b/keyboards/planck/keymaps/impossible/keymap.c
index 63541d5798..70ae70dd5d 100644
--- a/keyboards/planck/keymaps/impossible/keymap.c
+++ b/keyboards/planck/keymaps/impossible/keymap.c
@@ -120,7 +120,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Adjust
* ,-----------------------------------------------------------------------------------------------.
- * | | | | | | | | | Insert| PrtSc | Pause | RESET |
+ * | | | | | | | | | Insert| PrtSc | Pause | QK_BOOT |
* |-------+-------+-------+-------+-------+---------------+-------+-------+-------+-------+-------|
* | | | | | | | | CapLk |Voice +| Audio |MIDIoff| |
* |-------+-------+-------+-------+-------+-------|-------+-------+-------+-------+-------+-------|
@@ -131,7 +131,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJ] = LAYOUT_planck_grid(
- _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_PSCR, KC_PAUSE, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_PSCR, KC_PAUSE, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, KC_CLCK, MUV_IN, AU_TOG, MI_OFF, _______,
_______, _______, _______, _______, _______, _______, _______, KC_SLCK, MUV_DE, MU_TOG, MI_ON, _______,
_______, _______, _______, _______, _______, _______, _______, KC_NLCK, WORKMAN, QWERTY, PLOVER, _______
diff --git a/keyboards/planck/keymaps/inkwell/keymap.c b/keyboards/planck/keymaps/inkwell/keymap.c
index f5192d0bb4..2c11ac61b0 100644
--- a/keyboards/planck/keymaps/inkwell/keymap.c
+++ b/keyboards/planck/keymaps/inkwell/keymap.c
@@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- RESET, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_BTN2, KC_ACL1, KC_ACL2, KC_BSPC ,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, 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
diff --git a/keyboards/planck/keymaps/jasperla/keymap.c b/keyboards/planck/keymaps/jasperla/keymap.c
index f51af78b52..8153aa33b7 100644
--- a/keyboards/planck/keymaps/jasperla/keymap.c
+++ b/keyboards/planck/keymaps/jasperla/keymap.c
@@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, _______, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, _______, RGB_VAI, RGB_VAD, KC_DEL ,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/jdelkins/keymap.c b/keyboards/planck/keymaps/jdelkins/keymap.c
index af438f704e..8a039bc00e 100644
--- a/keyboards/planck/keymaps/jdelkins/keymap.c
+++ b/keyboards/planck/keymaps/jdelkins/keymap.c
@@ -159,14 +159,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL,
+ _______, QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL,
KC_RCTL, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, TG(_KP), KC_BRID, KC_BRIU, KC_MUTE,
_______, RGB_TOG, KB_MAKE, KB_FLSH, KB_VRSN, KB_BOOT, _______, TG_SYS, _______, _______, _______, KC_MPLY,
KC_RCTL, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT
)
/* [_ADJUST] = LAYOUT( */
-/* _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL , */
+/* _______, QK_BOOT, 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, _______, _______, _______, */
/* _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ */
diff --git a/keyboards/planck/keymaps/jeebak/keymap.c b/keyboards/planck/keymaps/jeebak/keymap.c
index 9ac547bb82..adf72a5ac3 100644
--- a/keyboards/planck/keymaps/jeebak/keymap.c
+++ b/keyboards/planck/keymaps/jeebak/keymap.c
@@ -239,7 +239,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT
)
diff --git a/keyboards/planck/keymaps/jetpacktuxedo/keymap.c b/keyboards/planck/keymaps/jetpacktuxedo/keymap.c
index 2e7d8e876b..31855f7685 100644
--- a/keyboards/planck/keymaps/jetpacktuxedo/keymap.c
+++ b/keyboards/planck/keymaps/jetpacktuxedo/keymap.c
@@ -123,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RESET,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, QK_BOOT,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, PLOVER, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/jhenahan/keymap.c b/keyboards/planck/keymaps/jhenahan/keymap.c
index e8d7456040..c05f678576 100644
--- a/keyboards/planck/keymaps/jhenahan/keymap.c
+++ b/keyboards/planck/keymaps/jhenahan/keymap.c
@@ -150,7 +150,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, WORKMAN, PLOVER, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/jimmysjolund/keymap.c b/keyboards/planck/keymaps/jimmysjolund/keymap.c
index aaf8600faf..91aaa0fa00 100644
--- a/keyboards/planck/keymaps/jimmysjolund/keymap.c
+++ b/keyboards/planck/keymaps/jimmysjolund/keymap.c
@@ -53,23 +53,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
-/* Qwerty - jimmysjolund 2022-02-06
+/* Qwerty - jimmysjolund 2022-09-17
* ,-----------------------------------------------------------------------------------.
- * | ` | Q | W | E | R | T | Y | U | I | O | P | Del |
+ * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * |Raise | A | S | D | F | G | H | J | K | L | ; | " |
+ * | Tab | A | S | D | F | G | H | J | K | L | ; | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* |Lower | Z | X | C | V | B | N | M | , | . | / |Shift |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Esc | Tab | GUI |Shift | Bksp | Ctrl |Enter |Space |AltGr | Alt | Down | Up |
+ * |Raise |Ctrl+ | GUI |Shift |Bksp/ |Lower |Enter |Space |AltGr | Alt | Left |Right |
+ * | | Alt | | | Ctrl | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_QWERTY] = LAYOUT_planck_grid(
- 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,
+ 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,
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
+ RAISE, LCTL(KC_LALT), KC_LGUI, KC_LSFT, LCTL_T(KC_BSPC), LOWER, KC_ENT, KC_SPC, KC_ALGR, KC_LALT, KC_LEFT, KC_RGHT
),
/* Colemak Original
@@ -85,20 +86,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
/* Colemak jimmysjolund
* ,-----------------------------------------------------------------------------------.
- * | ` | Q | W | F | P | G | J | L | U | Y | ; | Del |
+ * | Esc | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * |Raise | A | R | S | T | D | H | N | E | I | O | " |
+ * | Tab | A | R | S | T | D | H | N | E | I | O | " |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* |Lower | Z | X | C | V | B | K | M | , | . | / |Shift |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Esc | Tab | GUI |Shift | Bksp | Ctrl |Enter |Space |AltGr | Alt | Down | Up |
+ * |Raise |Ctrl+ | GUI |Shift |Bksp/ |Lower |Enter |Space |AltGr | Alt | Left |Right |
+ * | | Alt | | | Ctrl | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_COLEMAK] = LAYOUT_planck_grid(
- 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,
+ 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,
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
+ RAISE, LCTL(KC_LALT), KC_LGUI, KC_LSFT, LCTL_T(KC_BSPC), LOWER, KC_ENT, KC_SPC, KC_ALGR, KC_LALT, KC_LEFT, KC_RGHT
),
/* Dvorak
@@ -119,21 +121,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
-/* Lower
+/* Lower - Jimmy Sjölund 2022-09-19
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | + |
* |------+------+------+------+------+------|------+------+------+------+------+------|
- * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / |Pg Up |Pg Dn | |
+ * | | | \ | : | ; | - | [ | ] | _ | , | . | / | ? |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_LOWER] = LAYOUT_planck_grid(
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_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS,
+ KC_PIPE, KC_BSLS, KC_COLN, KC_SCLN, KC_MINS, KC_LBRC, KC_RBRC, KC_UNDS, KC_COMM, KC_DOT, KC_SLSH, KC_QUES,
_______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
@@ -186,9 +188,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______,
+ _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/planck/keymaps/jirgn/keymap.c b/keyboards/planck/keymaps/jirgn/keymap.c
index d89d702c2c..edbb3fbed7 100644
--- a/keyboards/planck/keymaps/jirgn/keymap.c
+++ b/keyboards/planck/keymaps/jirgn/keymap.c
@@ -148,7 +148,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, PLOVER, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/joe/keymap.c b/keyboards/planck/keymaps/joe/keymap.c
index 49b2948e65..b520da9fa9 100644
--- a/keyboards/planck/keymaps/joe/keymap.c
+++ b/keyboards/planck/keymaps/joe/keymap.c
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[6] = LAYOUT_planck_grid( /* Joe SPECIAL fn3 */
KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ,
- KC_NO, KC_MPLY, KC_MPRV, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, RESET ,
+ KC_NO, KC_MPLY, KC_MPRV, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT ,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO ,
DF(0), DF(1), DF(2), DF(3), MO(4), KC_TRNS, KC_TRNS, MO(5), KC_POWER, KC_WAKE, KC_SLEP, LCTL(LALT(KC_L))
)
diff --git a/keyboards/planck/keymaps/jweickm/keymap.c b/keyboards/planck/keymaps/jweickm/keymap.c
index 02138a876c..1825cec36f 100644
--- a/keyboards/planck/keymaps/jweickm/keymap.c
+++ b/keyboards/planck/keymaps/jweickm/keymap.c
@@ -199,7 +199,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* _ADJUST
* ,-----------------------------------------------------------------------------------.
- * | A-SFT| RESET| DEBUG|RGBTOG|RGBMOD|RGBHUI|RGBHUD|RGBSAI|RGBSAD|RGBVAI|RGBVAD| DE_SW|
+ * | A-SFT| QK_BOOT| DEBUG|RGBTOG|RGBMOD|RGBHUI|RGBHUD|RGBSAI|RGBSAD|RGBVAI|RGBVAD| DE_SW|
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | A-GRV|EEPRST|MU_MOD| AU_ON|AU_OFF|AGNORM|AGSWAP|!HRWCM| !WCM | A-GRV| !LANG| !GAME|
* |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -209,7 +209,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- LALT(KC_LSFT), RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DE_SWITCH,
+ LALT(KC_LSFT), QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DE_SWITCH,
LALT(KC_GRV), EEP_RST, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, HRWIDECOLEMAK, WIDECOLEMAK, LALT(KC_GRV), LANG_SWITCH, GAMING,
KC_TRNS, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, KC_SVD_BD, KC_MPLY, KC_SVU_BU, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, EEPROM_RESET
diff --git a/keyboards/planck/keymaps/kanbara/keymap.c b/keyboards/planck/keymaps/kanbara/keymap.c
index 711411f65d..383069bd43 100644
--- a/keyboards/planck/keymaps/kanbara/keymap.c
+++ b/keyboards/planck/keymaps/kanbara/keymap.c
@@ -146,7 +146,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, QWERTY,
+ QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, QWERTY,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, COLEMAK,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LEAGUE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/kelorean/keymap.c b/keyboards/planck/keymaps/kelorean/keymap.c
index f6bc65b62b..8128f62302 100644
--- a/keyboards/planck/keymaps/kelorean/keymap.c
+++ b/keyboards/planck/keymaps/kelorean/keymap.c
@@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/khord/keymap.c b/keyboards/planck/keymaps/khord/keymap.c
index ccd4386c92..19166dbf4e 100644
--- a/keyboards/planck/keymaps/khord/keymap.c
+++ b/keyboards/planck/keymaps/khord/keymap.c
@@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF, ADMIN, SMSPC1, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF, ADMIN, SMSPC1, KC_DEL ,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, M_BRDFT, M_BRINC, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, M_BRTOG, M_BRDEC, C_A_INS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, C_A_DEL
diff --git a/keyboards/planck/keymaps/kifinnsson/keymap.c b/keyboards/planck/keymaps/kifinnsson/keymap.c
index 3917462fa3..daee15842c 100644
--- a/keyboards/planck/keymaps/kifinnsson/keymap.c
+++ b/keyboards/planck/keymaps/kifinnsson/keymap.c
@@ -175,7 +175,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/kloki/keymap.c b/keyboards/planck/keymaps/kloki/keymap.c
index c22ca15b4e..4320e12a72 100644
--- a/keyboards/planck/keymaps/kloki/keymap.c
+++ b/keyboards/planck/keymaps/kloki/keymap.c
@@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
_______, _______, MU_MOD, AU_ON, AU_OFF, _______, _______, QWERTY, WORKMAN, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/kmontag42/keymap.c b/keyboards/planck/keymaps/kmontag42/keymap.c
index 6910dbc250..f3d3a6dcfb 100644
--- a/keyboards/planck/keymaps/kmontag42/keymap.c
+++ b/keyboards/planck/keymaps/kmontag42/keymap.c
@@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, PLOVER, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/kuatsure/keymap.c b/keyboards/planck/keymaps/kuatsure/keymap.c
index 6ce1049b80..6609683c1e 100644
--- a/keyboards/planck/keymaps/kuatsure/keymap.c
+++ b/keyboards/planck/keymaps/kuatsure/keymap.c
@@ -120,7 +120,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------------------------------------------------.
* | | MAKE | FLSH | | | | | | | | | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * | | RESET| DEBUG| | |Aud on|AudOff| Game |Mouse | | | |
+ * | | QK_BOOT| DEBUG| | |Aud on|AudOff| Game |Mouse | | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | VRSN | | |MusMod|Mus on|MusOff| | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -129,7 +129,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_planck_grid_wrapper(
_______, KB_MAKE, KB_FLSH, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
- _______, RESET, DEBUG, _______, _______, AU_ON, AU_OFF, GAME, MOUSE, _______, _______, _______,
+ _______, QK_BOOT, DEBUG, _______, _______, AU_ON, AU_OFF, GAME, MOUSE, _______, _______, _______,
_______, KB_VRSN, _______, _______, MU_MOD, MU_ON, MU_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/planck/keymaps/lae3/keymap.c b/keyboards/planck/keymaps/lae3/keymap.c
index 249bcb87a7..1b5bbfd10e 100644
--- a/keyboards/planck/keymaps/lae3/keymap.c
+++ b/keyboards/planck/keymaps/lae3/keymap.c
@@ -160,7 +160,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, BL_STEP, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, QWERTY, ARROW, NUMPAD, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/lja83/keymap.c b/keyboards/planck/keymaps/lja83/keymap.c
index 82862a77ed..8aaeef3a0f 100644
--- a/keyboards/planck/keymaps/lja83/keymap.c
+++ b/keyboards/planck/keymaps/lja83/keymap.c
@@ -166,7 +166,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/lucas/keymap.c b/keyboards/planck/keymaps/lucas/keymap.c
index 01a2af7b19..703dea81ea 100644
--- a/keyboards/planck/keymaps/lucas/keymap.c
+++ b/keyboards/planck/keymaps/lucas/keymap.c
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
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_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_PMNS, KC_PPLS, KC_NO, KC_NO, KC_NO, RESET, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PMNS, KC_PPLS, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO,
KC_NO, BL_TOGG, BL_DEC, BL_INC, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY
),
[5] = LAYOUT_planck_grid( /* Gaming
diff --git a/keyboards/planck/keymaps/mason/keymap.c b/keyboards/planck/keymaps/mason/keymap.c
index 9cf65c172d..ad12e2520c 100644
--- a/keyboards/planck/keymaps/mason/keymap.c
+++ b/keyboards/planck/keymaps/mason/keymap.c
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_POWER,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_POWER,
_______, BL_TOGG, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_HUI, RGB_HUD, RGB_MOD, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/matrixman/keymap.c b/keyboards/planck/keymaps/matrixman/keymap.c
index f13198cfa0..48219262fa 100644
--- a/keyboards/planck/keymaps/matrixman/keymap.c
+++ b/keyboards/planck/keymaps/matrixman/keymap.c
@@ -32,21 +32,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
// accessed via the left nav-layer key, includes a F10 where the right nav-layer key was
[_NAV_L] = LAYOUT_planck_grid(
- KC_TRNS, KC_F2, KC_F3, KC_F4, KC_F5, RESET, BL_STEP, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
+ KC_TRNS, KC_F2, KC_F3, KC_F4, KC_F5, QK_BOOT, BL_STEP, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
,KC_BTN1, KC_MS_L, KC_MS_U, KC_MS_D, KC_MS_R, KC_PSCREEN, KC_PAUSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F11
,KC_BTN2, KC_BTN4, KC_MS_WH_UP,KC_MS_WH_DOWN, KC_BTN5, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, 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
),
// accessed via the right nav-layer key, includes a F1 where the left nav-layer key was
[_NAV_R] = LAYOUT_planck_grid(
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET, BL_STEP, KC_F6, KC_F7, KC_F8, KC_F9, KC_TRNS
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, QK_BOOT, BL_STEP, KC_F6, KC_F7, KC_F8, KC_F9, KC_TRNS
,KC_BTN1, KC_MS_L, KC_MS_U, KC_MS_D, KC_MS_R, KC_PSCREEN, KC_PAUSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F11
,KC_BTN2, KC_BTN4, KC_MS_WH_UP,KC_MS_WH_DOWN, KC_BTN5, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, 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
),
// accessed via the lower alt keys, moves tab and delete to make alt+tab and ctrl+alt+del feel more standard
[_NAV_ALT] = LAYOUT_planck_grid(
- KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET, BL_STEP, KC_F6, KC_F7, KC_F8, KC_F9, KC_DELETE
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, QK_BOOT, BL_STEP, KC_F6, KC_F7, KC_F8, KC_F9, KC_DELETE
,KC_TAB, KC_MS_L, KC_MS_U, KC_MS_D, KC_MS_R, KC_PSCREEN, KC_PAUSE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F11
,KC_BTN2, KC_BTN4, KC_MS_WH_UP,KC_MS_WH_DOWN, KC_BTN5, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, 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
diff --git a/keyboards/planck/keymaps/mattly/keymap.c b/keyboards/planck/keymaps/mattly/keymap.c
index 52ade86432..c9e0a1c3af 100644
--- a/keyboards/planck/keymaps/mattly/keymap.c
+++ b/keyboards/planck/keymaps/mattly/keymap.c
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCT] = LAYOUT_planck_grid(
- RESET, XALLWIN, XPRVSPC, NWIN, XNXTSPC, XDESKTP, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F13,
+ QK_BOOT, XALLWIN, XPRVSPC, NWIN, XNXTSPC, XDESKTP, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F13,
DEBUG, XNOTIFY, PTAB, PWIN, NTAB, NAVBACK, NAVFWD, KC_F4, KC_F5, KC_F6, KC_F11, KC_F14,
KC_MUTE, KC_VOLD, KC_VOLU, KC_MRWD, KC_MFFD, KC_MPLY, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F12, KC_F15,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/max/keymap.c b/keyboards/planck/keymaps/max/keymap.c
index b84404e1e5..d947b6a1a0 100644
--- a/keyboards/planck/keymaps/max/keymap.c
+++ b/keyboards/planck/keymaps/max/keymap.c
@@ -16,13 +16,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[2] = LAYOUT_planck_grid( /* RAISE */
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_TRNS, DF(0), DF(1), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_TRNS,
+ KC_TRNS, DF(0), DF(1), QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_TRNS,
KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_BSLS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(2), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
[3] = LAYOUT_planck_grid( /* LOWER */
S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC,
- KC_TRNS, DF(0), DF(1), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), KC_TRNS,
+ KC_TRNS, DF(0), DF(1), QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), KC_TRNS,
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, S(KC_BSLS),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
diff --git a/keyboards/planck/keymaps/mgalisa/keymap.c b/keyboards/planck/keymaps/mgalisa/keymap.c
index 09e829564c..11fb309851 100644
--- a/keyboards/planck/keymaps/mgalisa/keymap.c
+++ b/keyboards/planck/keymaps/mgalisa/keymap.c
@@ -194,7 +194,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/mikethetiger/keymap.c b/keyboards/planck/keymaps/mikethetiger/keymap.c
index 2fe9321501..35c6917bbf 100644
--- a/keyboards/planck/keymaps/mikethetiger/keymap.c
+++ b/keyboards/planck/keymaps/mikethetiger/keymap.c
@@ -163,7 +163,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/mjt/keymap.c b/keyboards/planck/keymaps/mjt/keymap.c
index 4862526e12..371085ee15 100644
--- a/keyboards/planck/keymaps/mjt/keymap.c
+++ b/keyboards/planck/keymaps/mjt/keymap.c
@@ -118,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______ , RESET, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, KC_PSCR, KC_DEL ,
+ _______ , QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, KC_PSCR, KC_DEL ,
_______ , _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, MACSLEEP, PLOVER, _______,
_______ , MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
BACKLIT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/mjtnumsym/keymap.c b/keyboards/planck/keymaps/mjtnumsym/keymap.c
index 6274a9a602..2068eebd83 100644
--- a/keyboards/planck/keymaps/mjtnumsym/keymap.c
+++ b/keyboards/planck/keymaps/mjtnumsym/keymap.c
@@ -117,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______ , RESET, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, KC_PSCR, KC_DEL ,
+ _______ , QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, KC_PSCR, KC_DEL ,
_______ , _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, MACSLEEP, PLOVER, _______,
_______ , MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
BACKLIT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/mjuma/keymap.c b/keyboards/planck/keymaps/mjuma/keymap.c
index 8aaa05864f..db9b46b9bf 100644
--- a/keyboards/planck/keymaps/mjuma/keymap.c
+++ b/keyboards/planck/keymaps/mjuma/keymap.c
@@ -159,7 +159,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Adjust (Lower + Raise)
* ,-----------------------------------------------------------------------------------.
- * | |RESET |DEBUG | | | | |DMREC1|DMREC2| | | |
+ * | |QK_BOOT |DEBUG | | | | |DMREC1|DMREC2| | | |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | |GAMING| | | | | |DMPLY1|DMPLY2|Audoff|Aud on| |
* |------+------+------+------+------+------|------+------+------+------+------+------|
@@ -169,7 +169,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, DM_REC1, DM_REC2, _______, _______, _______,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, DM_REC1, DM_REC2, _______, _______, _______,
_______, TG(_GAMING), ___, _______, _______, _______, _______, DM_PLY1, DM_PLY2, AU_OFF, AU_ON, _______,
_______, _______, _______, _______, _______, _______, _______, DM_RSTP, _______, MU_OFF, MU_ON, MU_MOD,
_______, _______, _______, AG_TOGG, _______, _______, _______, _______, _______, MUV_DE, MUV_IN, _______
diff --git a/keyboards/planck/keymaps/mnil/keymap.c b/keyboards/planck/keymaps/mnil/keymap.c
index 74a2f57654..5aa85340bd 100644
--- a/keyboards/planck/keymaps/mnil/keymap.c
+++ b/keyboards/planck/keymaps/mnil/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_NUMPAD] = LAYOUT_planck_2x2u(
- KC_TRNS, QUIT, WIN, MVWSL, MVWSR, CRYWS, TERM, KC_7, KC_8, KC_9, KC_COMM, RESET,
+ KC_TRNS, QUIT, WIN, MVWSL, MVWSR, CRYWS, TERM, KC_7, KC_8, KC_9, KC_COMM, QK_BOOT,
KC_TRNS, CS_TAB, C_TAB, PRVWS, NXTWS, I3MOD, OPEN, KC_4, KC_5, KC_6, KC_0, KC_NO,
KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, MOVWS, BROWSER, KC_1, KC_2, KC_3, KC_DOT, KC_NO,
QWE_COL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
diff --git a/keyboards/planck/keymaps/mollat/keymap.c b/keyboards/planck/keymaps/mollat/keymap.c
index f993d299b6..fc2a8bc47c 100644
--- a/keyboards/planck/keymaps/mollat/keymap.c
+++ b/keyboards/planck/keymaps/mollat/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
__________, __________, __________, KC_END, __________, __________, __________, __________, KC_INS, __________, KC_DEL, RALT(KC_Y) ,
KC_TRNS, __________, RALT(KC_S), __________, KC_PGDN, RALT(KC_5), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, RALT(KC_P), RALT(KC_Q) ,
__________, KC_HOME, __________, __________, __________, KC_PGUP, __________, __________, __________, __________, __________, KC_ENT ,
- RESET, __________, __________, __________, __________, KC_SPC, KC_SPC, __________, __________, __________, __________, __________
+ QK_BOOT, __________, __________, __________, __________, KC_SPC, KC_SPC, __________, __________, __________, __________, __________
),
// function key layer and some shift + (missing key at the small form factor)
diff --git a/keyboards/planck/keymaps/motform/keymap.c b/keyboards/planck/keymaps/motform/keymap.c
index 0dd046a93a..3e38e9fa63 100644
--- a/keyboards/planck/keymaps/motform/keymap.c
+++ b/keyboards/planck/keymaps/motform/keymap.c
@@ -108,7 +108,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_planck_grid
(
- _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/msiu/keymap.c b/keyboards/planck/keymaps/msiu/keymap.c
index 559767f1fb..afcc799c44 100644
--- a/keyboards/planck/keymaps/msiu/keymap.c
+++ b/keyboards/planck/keymaps/msiu/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, 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, DVORAK, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF,_______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT
),
[_FUNC] = LAYOUT_planck_grid(
diff --git a/keyboards/planck/keymaps/muppetjones/.clang-format b/keyboards/planck/keymaps/muppetjones/.clang-format
new file mode 100644
index 0000000000..df3dbd17b4
--- /dev/null
+++ b/keyboards/planck/keymaps/muppetjones/.clang-format
@@ -0,0 +1,26 @@
+---
+BasedOnStyle: Google
+AlignAfterOpenBracket: Align
+AlignConsecutiveAssignments: 'true'
+AlignConsecutiveDeclarations: 'true'
+AlignOperands: 'true'
+AllowAllParametersOfDeclarationOnNextLine: 'false'
+AlwaysBreakAfterDefinitionReturnType: None
+AlwaysBreakAfterReturnType: None
+AlwaysBreakBeforeMultilineStrings: 'false'
+BinPackArguments: 'true'
+BinPackParameters: 'true'
+ColumnLimit: '160'
+IndentCaseLabels: 'true'
+IndentPPDirectives: AfterHash
+IndentWidth: '4'
+MaxEmptyLinesToKeep: '1'
+PointerAlignment: Right
+SortIncludes: 'false'
+SpaceBeforeAssignmentOperators: 'true'
+SpaceBeforeParens: ControlStatements
+SpaceInEmptyParentheses: 'false'
+TabWidth: '4'
+UseTab: Never
+
+...
diff --git a/keyboards/planck/keymaps/muppetjones/config.h b/keyboards/planck/keymaps/muppetjones/config.h
new file mode 100644
index 0000000000..1046d21499
--- /dev/null
+++ b/keyboards/planck/keymaps/muppetjones/config.h
@@ -0,0 +1,56 @@
+ /* Copyright 2020 Stephen Bush <muppetjones>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT 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
+
+#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
+
+/*
+ * Other options
+ */
+
+// Enable lighting layers
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_SLEEP
+
+// Change "hold" time (default is 200 ms)
+#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
diff --git a/keyboards/planck/keymaps/muppetjones/keymap.c b/keyboards/planck/keymaps/muppetjones/keymap.c
new file mode 100644
index 0000000000..518ab43233
--- /dev/null
+++ b/keyboards/planck/keymaps/muppetjones/keymap.c
@@ -0,0 +1,403 @@
+/* Copyright 2020 Stephen Bush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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 compile -kb planck/rev6 -km muppetjones
+ */
+
+#include QMK_KEYBOARD_H
+#include "muse.h"
+#include "muppetjones.h"
+
+#define LAYOUT_planck_wrapper(...) LAYOUT_planck_grid(__VA_ARGS__)
+
+/* Extend layers from muppetjones.h
+ _CLMK_DH = 0,
+ _QWERTY
+ _MOUSE,
+ _LOWER,
+ _RAISE,
+ _NAV,
+ _ADJUST,
+ */
+enum planck_layers {
+ _PLOVER = _ADJUST + 1,
+};
+
+enum planck_keycodes {
+ PLOVER = SAFE_RANGE,
+ BACKLIT,
+ EXT_PLV,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // clang-format off
+
+/* Colemak DH II
+ * ,-----------------------------------------------------------------------------------.
+ * | Q | W | F | P | B | Del | Bksp | J | L | U | Y | ; |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | A | R | S | T | G | | " | M | N | E | I | O |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Z | X | C | D | V SFT| Enter| Tab | K | H | , | . | / |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt |HY_ESC|Lower | Space |Raise |HY_ESC| Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_CLMK_DH] = LAYOUT_planck_wrapper(
+ __COLEMAK_MOD_DH_L1________________________, KC_DEL, KC_BSPC, __COLEMAK_MOD_DH_R1_W_QUOT_________________,
+ __COLEMAK_MOD_DH_L2_W_GACS_________________, CAPSWRD, KC_QUOT, __COLEMAK_MOD_DH_R2_W_SCAG_________________,
+ __COLEMAK_MOD_DH_L3_W_SFTV_________________, KC_ENT, KC_TAB, __COLEMAK_MOD_DH_R3________________________,
+ TD_LAYR, XXXXXXX, XXXXXXX, HY_ESC, LOW_ENT, KC_BSPC, KC_BSPC, RAI_SPC, HY_ESC, KC_BSPC, XXXXXXX, XXXXXXX
+),
+
+/* 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 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QWERTY] = LAYOUT_planck_wrapper(
+ __QWERTY_L1________________________________, _______, _______, __QWERTY_R1________________________________,
+ __QWERTY_L2________________________________, _______, _______, __QWERTY_R2________________________________,
+ __QWERTY_L3________________________________, _______, _______, __QWERTY_R3________________________________,
+ __BLANK____________________________________, _______, _______, __BLANK____________________________________
+),
+
+/* MOUSE
+ * No encoders. Just an empty layer.
+ */
+[_MOUSE] = LAYOUT_planck_wrapper(
+ __BLANK____________________________________, _______, _______, __BLANK____________________________________,
+ __BLANK____________________________________, _______, _______, __BLANK____________________________________,
+ __BLANK____________________________________, _______, _______, __BLANK____________________________________,
+ __BLANK____________________________________, _______, _______, __BLANK____________________________________
+),
+
+// /* Colemak DH
+// * ,-----------------------------------------------------------------------------------.
+// * | Tab | Q | W | F | P | B | J | L | U | Y | ; | Bksp |
+// * |------+------+------+------+------+------+------+------+------+------+------+------|
+// * | Esc | A | R | S | T | G | M | N | E | I | O | " |
+// * |------+------+------+------+------+------+------+------+------+------+------+------|
+// * | Shift| Z | X | C | D | V | K | H | , | . | / |Enter |
+// * |------+------+------+------+------+------+------+------+------+------+------+------|
+// * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
+// * `-----------------------------------------------------------------------------------'
+// */
+// [_CLMK_DH] = LAYOUT_planck_grid(
+// KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
+// HY_ESC, HOME_A, HOME_R, HOME_S, HOME_T, KC_G, KC_M, HOME_N, HOME_E, HOME_I, HOME_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_SFTENT,
+// KC_LCTL, NUMPD, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX
+// ),
+/* Lower (numpad, symbols)
+ * ,-----------------------------------------------------------------------------------.
+ * | | | ( | ) | ~ | | | | 7 & | 8 * | 9 ( | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | { | } | ` | | | - _ | 4 $ | 5 % | 6 ^ | * |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | [ | ] | | | | = + | 1 ! | 2 @ | 3 # | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | Space | | 0 | . | | |
+ * `-----------------------------------------------------------------------------------'
+ * 21.02.22: Removed F keys.
+ * 21.03.28: Completely revamped to contain 10-key numpad and symbols.
+ */
+[_LOWER] = LAYOUT_planck_wrapper(
+ __SYMBOLS_L1_______________________________, _______, _______, __NUMPAD_R1________________________________,
+ __SYMBOLS_L2_______________________________, _______, _______, __NUMPAD_R2________________________________,
+ __SYMBOLS_L3_______________________________, _______, _______, __NUMPAD_R3________________________________,
+ _______, _______, _______, _______, _______, _______, _______, __NUMPAD_R4________________________________
+),
+
+/* Raise
+* ,-----------------------------------------------------------------------------------.
+* | ` | | | | | | | Pg Up| HOME | | END | |
+* |------+------+------+------+------+------+------+------+------+------+------+------|
+* | GUI | ALT | CTL | SFT | | | | Pg Dn| LEFT | DOWN | UP |RIGHT |
+* |------+------+------+------+------+------+------+------+------+------+------+------|
+* | | | | | | | | | | | | |
+* |------+------+------+------+------+------+------+------+------+------+------+------|
+* | | | | | | | | Next | Vol- | Vol+ | Play |
+* `-----------------------------------------------------------------------------------'
+* 21.02.22: Removed F keys and replaced with useful programming keys.
+*/
+[_RAISE] = LAYOUT_planck_wrapper(
+ XXXXXXX, XXXXXXX, KC_LPRN, KC_RPRN, XXXXXXX, _______, _______, __NAV_R1___________________________________,
+ KC_LGUI, KC_LALT, HR_LBRC, HR_RBRC, KC_MINS, _______, _______, __NAV_R2___________________________________,
+ XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_EQL, _______, _______, __NAV_R3___________________________________,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* Nav
+ * Available in raise.
+ */
+[_NAV] = LAYOUT_planck_wrapper(
+ __BLANK____________________________________, _______, _______, __BLANK____________________________________,
+ __BLANK____________________________________, _______, _______, __BLANK____________________________________,
+ __BLANK____________________________________, _______, _______, __BLANK____________________________________,
+ __BLANK____________________________________, _______, _______, __BLANK____________________________________
+),
+
+/* 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_planck_grid(
+ 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, 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-| |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | |Brite |MUSmod|Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|CLMKII|Plover| |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|ClmkDH| | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_ADJUST] = LAYOUT_planck_wrapper(
+ __ADJUST_L1________________________________, MUV_IN, PLOVER, __MEDIA_R1_________________________________,
+ __ADJUST_L2________________________________, MUV_DE, CLMK_DH, __MEDIA_R2_________________________________,
+ __ADJUST_L3________________________________, MU_MOD, QWERTY, __MEDIA_R3_________________________________,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+)
+
+/*
+ * ,-----------------------------------------------------------------------------------.
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | | | |
+ * `-----------------------------------------------------------------------------------'
+[_ADJUST] = LAYOUT_planck_grid(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+ */
+ // clang-format on
+};
+
+#ifdef AUDIO_ENABLE
+float plover_song[][2] = SONG(PLOVER_SOUND);
+float plover_gb_song[][2] = SONG(PLOVER_GOODBYE_SOUND);
+#endif
+
+#define LIGHT_GOLDEN 30, 255, 100
+#define LIGHT_MAGENTA 213, 255, 100
+#define LIGHT_AZURE 148, 255, 100
+
+// Define light layers
+// -- e.g., light up LEDS 3-6 with RED when the numpd layer is active
+const rgblight_segment_t PROGMEM rgb_clmk_dh[] = RGBLIGHT_LAYER_SEGMENTS({0, 9, HSV_RED});
+const rgblight_segment_t PROGMEM rgb_lower[] = RGBLIGHT_LAYER_SEGMENTS({0, 9, LIGHT_GOLDEN});
+const rgblight_segment_t PROGMEM rgb_raise[] = RGBLIGHT_LAYER_SEGMENTS({0, 9, LIGHT_MAGENTA});
+const rgblight_segment_t PROGMEM rgb_numpd[] = RGBLIGHT_LAYER_SEGMENTS({0, 9, LIGHT_AZURE});
+
+const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(rgb_clmk_dh, rgb_lower, rgb_raise, rgb_numpd);
+
+void keyboard_post_init_user(void) {
+ rgblight_layers = rgb_layers; // Enable the LED layers
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ rgblight_set_layer_state(1, layer_state_cmp(state, _LOWER));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _RAISE));
+ return state;
+}
+
+bool process_record_keymap(uint16_t keycode, keyrecord_t* record) {
+ switch (keycode) {
+ case BACKLIT:
+ if (record->event.pressed) {
+ register_code(KC_RSFT);
+#ifdef BACKLIGHT_ENABLE
+ backlight_step();
+#endif
+#ifdef KEYBOARD_planck_rev5
+ writePinLow(E6);
+#endif
+ } else {
+ unregister_code(KC_RSFT);
+#ifdef KEYBOARD_planck_rev5
+ writePinHigh(E6);
+#endif
+ }
+ return false;
+ break;
+ case PLOVER:
+ if (record->event.pressed) {
+#ifdef AUDIO_ENABLE
+ stop_all_notes();
+ PLAY_SONG(plover_song);
+#endif
+ 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) {
+#ifdef AUDIO_ENABLE
+ PLAY_SONG(plover_gb_song);
+#endif
+ layer_off(_PLOVER);
+ }
+ return false;
+ break;
+ }
+
+ return true;
+}
+
+bool muse_mode = false;
+uint8_t last_muse_note = 0;
+uint16_t muse_counter = 0;
+uint8_t muse_offset = 70;
+uint16_t muse_tempo = 50;
+
+bool encoder_update(bool clockwise) {
+ if (muse_mode) {
+ if (IS_LAYER_ON(_RAISE)) {
+ if (clockwise) {
+ muse_offset++;
+ } else {
+ muse_offset--;
+ }
+ } else {
+ if (clockwise) {
+ muse_tempo += 1;
+ } else {
+ muse_tempo -= 1;
+ }
+ }
+ } else {
+ if (clockwise) {
+#ifdef MOUSEKEY_ENABLE
+ tap_code(KC_MS_WH_DOWN);
+#else
+ tap_code(KC_PGDN);
+#endif
+ } else {
+#ifdef MOUSEKEY_ENABLE
+ tap_code(KC_MS_WH_UP);
+#else
+ tap_code(KC_PGUP);
+#endif
+ }
+ }
+ return true;
+}
+
+void dip_switch_update_user(uint8_t index, bool active) {
+ switch (index) {
+ case 0: {
+#ifdef AUDIO_ENABLE
+ static bool play_sound = false;
+#endif
+ if (active) {
+#ifdef AUDIO_ENABLE
+ if (play_sound) {
+ PLAY_SONG(plover_song);
+ }
+#endif
+ layer_on(_ADJUST);
+ } else {
+#ifdef AUDIO_ENABLE
+ if (play_sound) {
+ PLAY_SONG(plover_gb_song);
+ }
+#endif
+ layer_off(_ADJUST);
+ }
+#ifdef AUDIO_ENABLE
+ play_sound = true;
+#endif
+ break;
+ }
+ case 1:
+ if (active) {
+ muse_mode = true;
+ } else {
+ muse_mode = false;
+ }
+ }
+}
+
+void matrix_scan_user(void) {
+#ifdef AUDIO_ENABLE
+ if (muse_mode) {
+ if (muse_counter == 0) {
+ uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
+ if (muse_note != last_muse_note) {
+ stop_note(compute_freq_for_midi_note(last_muse_note));
+ play_note(compute_freq_for_midi_note(muse_note), 0xF);
+ last_muse_note = muse_note;
+ }
+ }
+ muse_counter = (muse_counter + 1) % muse_tempo;
+ } else {
+ if (muse_counter) {
+ stop_all_notes();
+ muse_counter = 0;
+ }
+ }
+#endif
+}
+
+bool music_mask_user(uint16_t keycode) {
+ switch (keycode) {
+ case RAISE:
+ case LOWER:
+ return false;
+ default:
+ return true;
+ }
+}
diff --git a/keyboards/planck/keymaps/muppetjones/readme.md b/keyboards/planck/keymaps/muppetjones/readme.md
new file mode 100644
index 0000000000..de9680b498
--- /dev/null
+++ b/keyboards/planck/keymaps/muppetjones/readme.md
@@ -0,0 +1,2 @@
+# The Default Planck Layout
+
diff --git a/keyboards/planck/keymaps/muppetjones/rules.mk b/keyboards/planck/keymaps/muppetjones/rules.mk
new file mode 100644
index 0000000000..1db412715d
--- /dev/null
+++ b/keyboards/planck/keymaps/muppetjones/rules.mk
@@ -0,0 +1,5 @@
+SRC += muse.c
+
+MOUSEKEY_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+COMBO_ENABLE = yes
diff --git a/keyboards/planck/keymaps/muzfuz/keymap.c b/keyboards/planck/keymaps/muzfuz/keymap.c
index 5e21660d01..985f4b9dee 100644
--- a/keyboards/planck/keymaps/muzfuz/keymap.c
+++ b/keyboards/planck/keymaps/muzfuz/keymap.c
@@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL,
+ _______, QK_BOOT, 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, _______, _______, QWERTY, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
diff --git a/keyboards/planck/keymaps/mwpeterson/keymap.c b/keyboards/planck/keymaps/mwpeterson/keymap.c
index dbe2f246f7..8c29e57779 100644
--- a/keyboards/planck/keymaps/mwpeterson/keymap.c
+++ b/keyboards/planck/keymaps/mwpeterson/keymap.c
@@ -196,7 +196,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* Swap GUI/Alt _/________/ \_____________\_ _/
*/
[ADJUST_LAYER] = LAYOUT_planck_grid(
- XXXXXXX, RESET, SEND_MAKE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, SEND_VERSION, XXXXXXX,
+ XXXXXXX, QK_BOOT, SEND_MAKE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, SEND_VERSION, XXXXXXX,
QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, XXXXXXX, XXXXXXX, AU_ON, AU_OFF, XXXXXXX,
STENO, XXXXXXX, AG_SWAP, AG_NORM, LOWER, XXXXXXX, XXXXXXX, RAISE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
diff --git a/keyboards/planck/keymaps/myoung34/keymap.c b/keyboards/planck/keymaps/myoung34/keymap.c
index 2529df7422..714b7b3a89 100644
--- a/keyboards/planck/keymaps/myoung34/keymap.c
+++ b/keyboards/planck/keymaps/myoung34/keymap.c
@@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL ,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, RGB_M_R, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/narze/keymap.c b/keyboards/planck/keymaps/narze/keymap.c
index b5fd3356ea..84864db0ce 100644
--- a/keyboards/planck/keymaps/narze/keymap.c
+++ b/keyboards/planck/keymaps/narze/keymap.c
@@ -208,7 +208,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, QWOC, PLOVER, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, SDTOGG, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BACKLIT
diff --git a/keyboards/planck/keymaps/nick/keymap.c b/keyboards/planck/keymaps/nick/keymap.c
index d75a91edb6..219665c201 100644
--- a/keyboards/planck/keymaps/nick/keymap.c
+++ b/keyboards/planck/keymaps/nick/keymap.c
@@ -97,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/nico/keymap.c b/keyboards/planck/keymaps/nico/keymap.c
index 7836517890..bc3a3f94d8 100644
--- a/keyboards/planck/keymaps/nico/keymap.c
+++ b/keyboards/planck/keymaps/nico/keymap.c
@@ -36,13 +36,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_RS] = LAYOUT_planck_grid( /* RAISE */
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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS,
+ KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), QK_BOOT, KC_TRNS,
M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, KC_F15, KC_TRNS, KC_MFFD, KC_VOLD, KC_VOLU, KC_MPLY
),
[_LW] = LAYOUT_planck_grid( /* LOWER */
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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
- KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS,
+ KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), QK_BOOT, KC_TRNS,
M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F14, KC_F15, KC_TRNS, KC_MFFD, KC_VOLD, KC_VOLU, KC_MPLY
)
};
diff --git a/keyboards/planck/keymaps/not-quite-neo/keymap.c b/keyboards/planck/keymaps/not-quite-neo/keymap.c
index 42ed71d0ad..4d18f9d32a 100644
--- a/keyboards/planck/keymaps/not-quite-neo/keymap.c
+++ b/keyboards/planck/keymaps/not-quite-neo/keymap.c
@@ -111,7 +111,7 @@ L06 -> <TBD>: UNSPECIFIED
/* LFN -> MO(FN): FUNCTION
* ,-----------------------------------------------------------------------------------.
- * | RESET| | | BACKS|
+ * | QK_BOOT| | | BACKS|
* |------+ | +------|
* | | L06_LEFT | L06_RIGHT |INSERT|
* |------+ | +------|
@@ -121,7 +121,7 @@ L06 -> <TBD>: UNSPECIFIED
* `-----------------------------------------------------------------------------------'
*/
[LFN] = LAYOUT_planck_grid(
- RESET, L06_LEFT_01, L06_RIGHT_01, KC_BSPC,
+ QK_BOOT, L06_LEFT_01, L06_RIGHT_01, KC_BSPC,
_______, L06_LEFT_02, L06_RIGHT_02, KC_INS,
_______, L06_LEFT_03, L06_RIGHT_03, KC_DEL,
MUV_DE, MUV_IN, MU_ON, MU_OFF, _______, _______, _______, KC_VOLU, KC_VOLD, KC_MUTE, _______, _______
diff --git a/keyboards/planck/keymaps/originerd/keymap.c b/keyboards/planck/keymaps/originerd/keymap.c
index 7604959119..17e6124280 100644
--- a/keyboards/planck/keymaps/originerd/keymap.c
+++ b/keyboards/planck/keymaps/originerd/keymap.c
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, NERD, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/orthodeluxe/keymap.c b/keyboards/planck/keymaps/orthodeluxe/keymap.c
index f7a4834227..c1da44e970 100644
--- a/keyboards/planck/keymaps/orthodeluxe/keymap.c
+++ b/keyboards/planck/keymaps/orthodeluxe/keymap.c
@@ -214,7 +214,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_UTILSLAYER] = LAYOUT_planck_grid(
- _______, XXXXXXX, WINDOWS, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, XXXXXXX, KC_PAUS, _______,
+ _______, XXXXXXX, WINDOWS, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, XXXXXXX, KC_PAUS, _______,
_______, XXXXXXX, KC_SLCK, DEBUG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
_______, XXXXXXX, XXXXXXX, KC_CAPS, XXXXXXX, XXXXXXX, KC_NLCK, MACOS, XXXXXXX, XXXXXXX, XXXXXXX, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/oryx/keymap.c b/keyboards/planck/keymaps/oryx/keymap.c
index 0368c98420..9e451a010a 100644
--- a/keyboards/planck/keymaps/oryx/keymap.c
+++ b/keyboards/planck/keymaps/oryx/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_planck_grid(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- KC_DEL, _______, AU_ON, AU_OFF, AU_TOG, _______, _______, RGB_TOG, RGB_VAI, RGB_VAD, LED_LEVEL, RESET,
+ KC_DEL, _______, AU_ON, AU_OFF, AU_TOG, _______, _______, RGB_TOG, RGB_VAI, RGB_VAD, LED_LEVEL, QK_BOOT,
_______, _______, MU_ON, MU_OFF, MU_TOG, _______, _______, RGB_MOD, RGB_HUI, RGB_HUD, TOGGLE_LAYER_COLOR, _______,
_______, _______, _______, _______, _______, _______, KC_NO, _______, _______, _______, _______, _______
),
@@ -94,7 +94,7 @@ void rgb_matrix_indicators_user(void) {
if (keyboard_config.disable_layer_led) {
return;
}
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case 1:
set_layer_color(0);
break;
diff --git a/keyboards/planck/keymaps/palleiko/keymap.c b/keyboards/planck/keymaps/palleiko/keymap.c
index d3798c6518..a86cb698ff 100644
--- a/keyboards/planck/keymaps/palleiko/keymap.c
+++ b/keyboards/planck/keymaps/palleiko/keymap.c
@@ -222,7 +222,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
_______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
_______, _______, _______, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
- RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/planck/keymaps/pascamel/keymap.c b/keyboards/planck/keymaps/pascamel/keymap.c
index 13553dc399..bc03824452 100644
--- a/keyboards/planck/keymaps/pascamel/keymap.c
+++ b/keyboards/planck/keymaps/pascamel/keymap.c
@@ -104,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/pete/keymap.c b/keyboards/planck/keymaps/pete/keymap.c
index 6b95a2eafb..cc73a251e2 100644
--- a/keyboards/planck/keymaps/pete/keymap.c
+++ b/keyboards/planck/keymaps/pete/keymap.c
@@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, WIN, MAC, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______
),
[_MAC] = LAYOUT_planck_grid( /* Mac */
CYCLWIN,MACSLEEP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_DEL ,
diff --git a/keyboards/planck/keymaps/pevecyan/keymap.c b/keyboards/planck/keymaps/pevecyan/keymap.c
index 553dd84a5d..2b7518f22c 100644
--- a/keyboards/planck/keymaps/pevecyan/keymap.c
+++ b/keyboards/planck/keymaps/pevecyan/keymap.c
@@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/pickle_jr/keymap.c b/keyboards/planck/keymaps/pickle_jr/keymap.c
index 31853819c6..48ce0e645a 100644
--- a/keyboards/planck/keymaps/pickle_jr/keymap.c
+++ b/keyboards/planck/keymaps/pickle_jr/keymap.c
@@ -167,7 +167,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, _______, 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, _______, _______, _______,
_______, _______, _______, _______, _______, KC_TRNS, KC_TRNS, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/piemod/keymap.c b/keyboards/planck/keymaps/piemod/keymap.c
index d75b8bf53b..974b3d3646 100644
--- a/keyboards/planck/keymaps/piemod/keymap.c
+++ b/keyboards/planck/keymaps/piemod/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_PSCREEN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, 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_NO, KC_NO, KC_NO, KC_AUDIO_MUTE, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE,
- RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DELETE, KC_INSERT, KC_HOME, KC_PGDN, KC_PGUP, KC_END
+ QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DELETE, KC_INSERT, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
[EMACS] = LAYOUT_planck_grid(
diff --git a/keyboards/planck/keymaps/pjanx/keymap.c b/keyboards/planck/keymaps/pjanx/keymap.c
index cf2e52623d..9e191324c3 100644
--- a/keyboards/planck/keymaps/pjanx/keymap.c
+++ b/keyboards/planck/keymaps/pjanx/keymap.c
@@ -164,7 +164,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______,
KC_MS_BTN1, KC_MS_BTN2, KC_MS_BTN3, _______, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT
diff --git a/keyboards/planck/keymaps/pok3r/keymap.c b/keyboards/planck/keymaps/pok3r/keymap.c
index 8c10ee3401..c3a52d2e4e 100644
--- a/keyboards/planck/keymaps/pok3r/keymap.c
+++ b/keyboards/planck/keymaps/pok3r/keymap.c
@@ -164,7 +164,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
KC_CAPS, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, KC_CAPS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/premek/keymap.c b/keyboards/planck/keymaps/premek/keymap.c
index 4bcfbd91a0..72fa2faa03 100644
--- a/keyboards/planck/keymaps/premek/keymap.c
+++ b/keyboards/planck/keymaps/premek/keymap.c
@@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
EXT_PLV, XXXXXXX, XXXXXXX, KC_C, KC_V, XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX
),
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/priyadi/config.h b/keyboards/planck/keymaps/priyadi/config.h
index c85e8656e6..d72b6d3908 100644
--- a/keyboards/planck/keymaps/priyadi/config.h
+++ b/keyboards/planck/keymaps/priyadi/config.h
@@ -5,12 +5,6 @@
#define PRIYADI_PLANCK
-/* bootmagic salt key */
-#define BOOTMAGIC_KEY_SALT KC_ESC
-
-/* skip bootmagic and eeconfig */
-#define BOOTMAGIC_KEY_SKIP KC_SPACE
-
#define UNICODE_TYPE_DELAY 0
#define LAYOUT_DVORAK
diff --git a/keyboards/planck/keymaps/prog_qgmlwb/.gitignore b/keyboards/planck/keymaps/prog_qgmlwb/.gitignore
new file mode 100644
index 0000000000..a39c642249
--- /dev/null
+++ b/keyboards/planck/keymaps/prog_qgmlwb/.gitignore
@@ -0,0 +1,3 @@
+build
+printout
+scripts
diff --git a/keyboards/planck/keymaps/prog_qgmlwb/config.h b/keyboards/planck/keymaps/prog_qgmlwb/config.h
new file mode 100644
index 0000000000..b52b41746a
--- /dev/null
+++ b/keyboards/planck/keymaps/prog_qgmlwb/config.h
@@ -0,0 +1,12 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#define ENABLE_COMPILE_KEYCODE
+
+// Userspace defines
+// #define SPLIT_SPACE
+// #define NO_SPECIAL_SHIFT
+#define LAYER_EN QGMLWB_EN
+#define LAYER_NO QGMLWB_NO
diff --git a/keyboards/planck/keymaps/prog_qgmlwb/keymap.c b/keyboards/planck/keymaps/prog_qgmlwb/keymap.c
new file mode 100644
index 0000000000..72e67ac3e7
--- /dev/null
+++ b/keyboards/planck/keymaps/prog_qgmlwb/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "src/layouts.h"
diff --git a/keyboards/planck/keymaps/prog_qgmlwb/readme.md b/keyboards/planck/keymaps/prog_qgmlwb/readme.md
new file mode 100644
index 0000000000..e9117507cd
--- /dev/null
+++ b/keyboards/planck/keymaps/prog_qgmlwb/readme.md
@@ -0,0 +1,82 @@
+# PROG-QGMLWB
+
+The prog-qgmlwb layout is a QMK firmware layout for the Planck keyboard.
+
+For letter placement, the layout uses the optimized QGMLWB layout from the [Carpalx project](http://mkweb.bcgsc.ca/carpalx).
+
+> The carpalx project introduces a quantitative model for typing effort and applies it to (a) evaluate QWERTY and popular alternatives, such as Dvorak and Colemak and (b) find the keyboard layouts that minimize typing effort for a given set of input documents.
+
+Carpalx named "QGMLWB" as the fully optimized layout according to the English alphabet, with an effort reduction of approximately 44.4%.
+
+The programming part of the name is inspired by the modified version of Dvorak, [Programmer Dvorak](http://programmer-dvorak.appspot.com), where the symbols have been adjusted logically for developers.
+
+The final layout swaps some Dvorak symbols and combines them with the QGMLWB letters, giving it the name **prog-qgmlwb**.
+
+The layout includes an English and Norwegian layer, whereas the Norwegian one only adds the three letters; æ, ø, and å.
+
+## Typing layers
+
+![Typing layers](https://i.imgur.com/QaHnqW8.png)
+
+## Adjust layer
+
+![Adjust layer](https://i.imgur.com/63I69P0.png)
+
+## Usage
+
+### Clone the QMK Firmware repo
+
+```bash
+git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git <path/name>
+```
+
+### Move into this keymap
+
+```bash
+cd <path/name>/keyboards/planck/keymaps/prog_qgmlwb
+```
+
+### Initialize QMK the first time
+
+Set default keyboard:
+
+```bash
+qmk config user.keyboard=planck/<rev>
+```
+
+Set default keymap:
+
+```bash
+qmk config user.keymap=prog_qgmlwb
+```
+
+Initialize libraries:
+
+```bash
+qmk setup
+```
+
+### Compile and flash the keyboard
+
+```bash
+qmk compile
+qmk flash
+```
+
+## QMK documentation
+
+Found in the QMK docs: <https://docs.qmk.fm>
+
+## Printing layout
+
+This keymap uses macros such that [qmk configurator](https://config.qmk.fm) cannot match its behavior. The images was designed using [Figma](https://figma.com).
+
+## Future additions
+
+Features disabled due to the lack of storage space in the Planck PCB version 5:
+
+- Audio
+- Plover mode
+- Use alt codes to fix missing characters in the english layout
+- Improve documentation of code and readme files
+- Reimplement right version of modifier keys through raise+space
diff --git a/keyboards/planck/keymaps/prog_qgmlwb/rules.mk b/keyboards/planck/keymaps/prog_qgmlwb/rules.mk
new file mode 100644
index 0000000000..7431d9e0b7
--- /dev/null
+++ b/keyboards/planck/keymaps/prog_qgmlwb/rules.mk
@@ -0,0 +1,6 @@
+# Compiler source files
+SRC += src/layouts.c
+
+USER_NAME := davidkristoffersen
+
+SIZE_OPTIMIZE = yes
diff --git a/keyboards/planck/keymaps/prog_qgmlwb/src/enums.h b/keyboards/planck/keymaps/prog_qgmlwb/src/enums.h
new file mode 100644
index 0000000000..0c03b5dd04
--- /dev/null
+++ b/keyboards/planck/keymaps/prog_qgmlwb/src/enums.h
@@ -0,0 +1,23 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+// Layouts enum
+enum keyboard_layouts {
+ QGMLWB_NO,
+ QGMLWB_EN,
+
+ QWERTY,
+ COLEMAK,
+ DVORAK,
+
+ NORMAL_LOWER,
+ NORMAL_RAISE,
+
+ QGMLWB_LOWER,
+ QGMLWB_RAISE,
+
+ ADJUST,
+ NUMPAD,
+};
diff --git a/keyboards/planck/keymaps/prog_qgmlwb/src/layouts.c b/keyboards/planck/keymaps/prog_qgmlwb/src/layouts.c
new file mode 100644
index 0000000000..54ff411d86
--- /dev/null
+++ b/keyboards/planck/keymaps/prog_qgmlwb/src/layouts.c
@@ -0,0 +1,25 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "layouts.h"
+#ifdef LAYER_NO
+# include "sendstring_norwegian.h"
+#endif
+
+KEYMAP keymaps [][MATRIX_ROWS][MATRIX_COLS] = {
+ [QGMLWB_NO] = qgmlwb_no_map,
+ [QGMLWB_EN] = qgmlwb_en_map,
+
+ [QWERTY] = qwerty_map,
+ [COLEMAK] = colemak_map,
+ [DVORAK] = dvorak_map,
+
+ [NORMAL_LOWER] = normal_lower_map,
+ [NORMAL_RAISE] = normal_raise_map,
+
+ [QGMLWB_LOWER] = qgmlwb_lower_map,
+ [QGMLWB_RAISE] = qgmlwb_raise_map,
+
+ [ADJUST] = adjust_map,
+ [NUMPAD] = numpad_map,
+};
diff --git a/keyboards/planck/keymaps/prog_qgmlwb/src/layouts.h b/keyboards/planck/keymaps/prog_qgmlwb/src/layouts.h
new file mode 100644
index 0000000000..19cbefb9ab
--- /dev/null
+++ b/keyboards/planck/keymaps/prog_qgmlwb/src/layouts.h
@@ -0,0 +1,27 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include QMK_KEYBOARD_H
+
+#include "davidkristoffersen.h"
+#include "enums.h"
+
+#include "normal.h"
+#include "qgmlwb.h"
+#include "special.h"
+
+#define KEYMAP const uint16_t PROGMEM
+
+// Layouts keycodes
+#define lower MO(NORMAL_LOWER)
+#define raise MO(NORMAL_RAISE)
+
+#define QLower MO(QGMLWB_LOWER)
+#define QRaise MO(QGMLWB_RAISE)
+
+#define adjust MO(ADJUST)
+#define numpad MO(NUMPAD)
+
+extern KEYMAP keymaps [][MATRIX_ROWS][MATRIX_COLS];
diff --git a/keyboards/planck/keymaps/prog_qgmlwb/src/normal.h b/keyboards/planck/keymaps/prog_qgmlwb/src/normal.h
new file mode 100644
index 0000000000..fa5c84d217
--- /dev/null
+++ b/keyboards/planck/keymaps/prog_qgmlwb/src/normal.h
@@ -0,0 +1,96 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include "layouts.h"
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ;: |Return|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | N | M | ,< | .> | /? | Shift|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt |NumPad| GUI | Lower| Space| Space| Raise| Left | Down | Up | Right|
+ * `-----------------------------------------------------------------------------------'
+*/
+#define qwerty_map 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_ENT,\
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSHIFT,\
+ KC_LCTL, KC_LALT, numpad, KC_LGUI, lower, KC_SPC, KC_SPC, raise, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT\
+)
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | R | S | T | D | H | N | E | I | O |Return|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | V | B | K | M | , | . | / | " |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt |NumPad| GUI | Lower| Space| Space| Raise| Left | Down | Up | Right|
+ * `-----------------------------------------------------------------------------------'
+*/
+#define colemak_map 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_ENT,\
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,\
+ KC_LCTL, KC_LALT, numpad, KC_LGUI, lower, KC_SPC, KC_SPC, raise, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT\
+)
+
+/* Dvorak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | A | O | E | U | I | D | H | T | N | S |Return|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| ; | Q | J | K | X | B | M | W | V | Z | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt |NumPad| GUI | Lower| Space| Space| Raise| Left | Down | Up | Right|
+ * `-----------------------------------------------------------------------------------'
+*/
+#define dvorak_map 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_ENT,\
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_SLSH,\
+ KC_LCTL, KC_LALT, numpad, KC_LGUI, lower, KC_SPC, KC_SPC, raise, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT\
+)
+
+/* Lower - Normal
+ * ,-----------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | End | Home | XXXX | XXXX | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+*/
+#define normal_lower_map 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, KC_END, KC_HOME, XXXXXXX, XXXXXXX, _______,\
+ _______, _______, _______, _______, _______, _______, _______, adjust, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY\
+)
+
+/* Raise - Normal
+ * ,-----------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | # | \ | PgDn | PgUp | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+*/
+#define normal_raise_map 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_HASH, KC_BSLS, KC_PGDN, KC_PGUP, _______,\
+ _______, _______, _______, _______, adjust, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY\
+)
diff --git a/keyboards/planck/keymaps/prog_qgmlwb/src/qgmlwb.h b/keyboards/planck/keymaps/prog_qgmlwb/src/qgmlwb.h
new file mode 100644
index 0000000000..bad7a11615
--- /dev/null
+++ b/keyboards/planck/keymaps/prog_qgmlwb/src/qgmlwb.h
@@ -0,0 +1,63 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include "layouts.h"
+
+/* QGMLWB
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab | Q | G | M | L | W | B | Y | U | V | '" | Bksp |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Esc | D | S | T | N | R | I | A | E | O | H |Return|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Shift| Z | X | C | F | J | K | P | ,; | .: | -_ | \| |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt |NumPad| GUI | Lower|LSpace|RSpace| Raise| Left | Down | Up | Right|
+ * `-----------------------------------------------------------------------------------'
+*/
+// English Layout
+#define qgmlwb_en_map LAYOUT_ortho_4x12(\
+ KC_TAB, KC_Q, KC_G, KC_M, KC_L, KC_W, KC_B, KC_Y, KC_U, KC_V, KC_QUOT, KC_BSPC,\
+ KC_ESC, KC_D, KC_S, KC_T, KC_N, KC_R, KC_I, KC_A, KC_E, KC_O, KC_H, KC_ENT,\
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_F, KC_J, KC_K, KC_P, KC_COMM, KC_DOT, KC_MINS, KC_BSLS,\
+ KC_LCTL, KC_LALT, numpad, KC_LGUI, QLower, KC_LSPC, KC_RSPC, QRaise, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT\
+)
+// Norwegian Layout
+#define qgmlwb_no_map qgmlwb_en_map
+
+/* Lower - QGMLWB
+ * ,-----------------------------------------------------------------------------------.
+ * | ! | % | [ | { | ( | < | > | ) | } | ] | & | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del | Mute | XXXX | Refr | XXXX | XXXX | XXXX | = | + | * | / | ~ |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | Sleep|ScrLck| Caps |NumLck|PrtScr| Ins | End | Home | Æ | Ø | Å |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | |Adjust| Bri- | Vol- | Vol+ | Bri+ |
+ * `-----------------------------------------------------------------------------------'
+*/
+#define qgmlwb_lower_map LAYOUT_ortho_4x12(\
+ KC_EXLM, KC_PERC, KC_LBRC, KC_LCBR, KC_LPRN, KC_LT, KC_GT, KC_RPRN, KC_RCBR, KC_RBRC, KC_AMPR, _______,\
+ KC_DEL, KC_MUTE, XXXXXXX, KC_WREF, XXXXXXX, XXXXXXX, XXXXXXX, KC_EQL, KC_PLUS, KC_ASTR, KC_SLSH, KC_TILD,\
+ _______, KC_SLEP, KC_SLCK, KC_CAPS, KC_NLCK, KC_PSCR, KC_INS, KC_END, KC_HOME, KC_AE, KC_OE, KC_AA,\
+ _______, _______, _______, _______, _______, _______, _______, adjust, KC_BRID, KC_VOLD, KC_VOLU, KC_BRIU\
+)
+
+/* Raise - QGMLWB
+ * ,-----------------------------------------------------------------------------------.
+ * | ? | 9 | 7 | 5 | 3 | 1 | 0 | 2 | 4 | 6 | 8 | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Del+ | F1 | F2 | F3 | F4 | F5 | F6 | # | @ | ^ | $ | ` |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * |RShift| F7 | F8 | F9 | F10 | F11 | F12 | PgDn | PgUp | XXXX | XXXX | XXXX |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | RCtrl| RAlt | | |Adjust| | | | Prev | Stop | Play | Next |
+ * `-----------------------------------------------------------------------------------'
+*/
+#define qgmlwb_raise_map LAYOUT_ortho_4x12(\
+ KC_QUES, KC_9, KC_7, KC_5, KC_3, KC_1, KC_0, KC_2, KC_4, KC_6, KC_8, _______,\
+ S(KC_DEL), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_HASH, KC_AT, KC_CIRC, KC_DLR, KC_GRV,\
+ _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PGDN, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX,\
+ _______, _______, _______, _______, adjust, _______, _______, _______, KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT\
+)
diff --git a/keyboards/planck/keymaps/prog_qgmlwb/src/special.h b/keyboards/planck/keymaps/prog_qgmlwb/src/special.h
new file mode 100644
index 0000000000..de05db2070
--- /dev/null
+++ b/keyboards/planck/keymaps/prog_qgmlwb/src/special.h
@@ -0,0 +1,43 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include "layouts.h"
+
+/* Adjust
+ * v------------------------RGB CONTROL--------------------v
+ * ,-----------------------------------------------------------------------------------.
+ * | | Reset| Debug| RGB |RGBMod| Hue- | Hue+ | Sat- | Sat+ | Bri- | Bri+ | Del |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | XXXX |MusMod|AudOff| AudOn|AgNorm|AgSwap|Dvorak|Colmak|Qwerty|QgmlEN|QgmlNO|
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | |Voice-|Voice+|MusOff| MusOn|MIDIOf|MIDIOn|TermOf|TermOn| T0 | T1 | T2 |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | XXXX | XXXX | XXXX | XXXX |
+ * `-----------------------------------------------------------------------------------'
+*/
+#define adjust_map LAYOUT_ortho_4x12(\
+ QK_RBT, QK_BOOT, DB_TOGG, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_DEL,\
+ QK_MAKE, XXXXXXX, MU_MOD, AU_OFF, AU_ON, AG_NORM, AG_SWAP, DF(DVORAK), DF(COLEMAK), DF(QWERTY), DF(QGMLWB_EN), DF(QGMLWB_NO),\
+ _______, MUV_IN, MUV_DE, MU_OFF, MU_ON, MI_OFF, MI_ON, TERM_OFF, TERM_ON, KC_T0, KC_T1, KC_T2,\
+ _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX\
+)
+
+/* Numpad
+ * ,-----------------------------------------------------------------------------------.
+ * | | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | 7 | 8 | 9 | / | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | 4 | 5 | 6 | * | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | XXXX | XXXX | XXXX | XXXX | XXXX | XXXX | 1 | 2 | 3 | - | XXXX |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | XXXX | | | 0 | , | . | + | XXXX |
+ * `-----------------------------------------------------------------------------------'
+*/
+#define numpad_map LAYOUT_ortho_4x12(\
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_7, KC_8, KC_9, KC_KP_SLASH, _______,\
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, KC_KP_ASTERISK, _______,\
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, KC_KP_MINUS, XXXXXXX,\
+ _______, _______, _______, _______, XXXXXXX, _______, _______, KC_0, KC_COMM, KC_DOT, KC_KP_PLUS, XXXXXXX\
+)
diff --git a/keyboards/planck/keymaps/ptillemans/keymap.c b/keyboards/planck/keymaps/ptillemans/keymap.c
index e671fd59ca..cb240e80aa 100644
--- a/keyboards/planck/keymaps/ptillemans/keymap.c
+++ b/keyboards/planck/keymaps/ptillemans/keymap.c
@@ -146,7 +146,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, DVORAK, PLOVER, _______,
BACKLIT, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/pvc/config.h b/keyboards/planck/keymaps/pvc/config.h
index 0fb08540d4..78e12d3120 100644
--- a/keyboards/planck/keymaps/pvc/config.h
+++ b/keyboards/planck/keymaps/pvc/config.h
@@ -27,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef KEYBOARD_planck_light
#define MATRIX_ROW_PINS { D0, D5, B5, B6 }
#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
-#define UNUSED_PINS
#endif
/*
diff --git a/keyboards/planck/keymaps/pvc/keymap.c b/keyboards/planck/keymaps/pvc/keymap.c
index 8428c2335f..e03e692d4e 100644
--- a/keyboards/planck/keymaps/pvc/keymap.c
+++ b/keyboards/planck/keymaps/pvc/keymap.c
@@ -197,7 +197,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| XXXXXX | BRTOG | BRSPD+ | BRSPD- | BRDFLT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- | XXXXXX | QWERTY | XXXXXX | XXXXXX | BACKLT | RESET | XXXXXX | MOUSE | XXXXXX | XXXXXX | VOICE+ | XXXXXX |
+ | XXXXXX | QWERTY | XXXXXX | XXXXXX | BACKLT | QK_BOOT | XXXXXX | MOUSE | XXXXXX | XXXXXX | VOICE+ | XXXXXX |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| XXXXXX | XXXXXX | XXXXXX | XXXXXX | UPPER | XXXXXX | XXXXXX | LOWER | XXXXXX | TEMPO- | VOICE- | TEMPO+ |
'-----------------------------------------------------------------------------------------------------------'
@@ -205,7 +205,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER_ADJUST] = LAYOUT_planck_grid(
XXXXXXX, M_HELP1, M_HELP2, M_HELP3, M_HELP4, M_HELP5, M_HELP6, M_HELP7, M_HELP8, M_HELP9, MU_TOG , AU_TOG ,
XXXXXXX, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,
- XXXXXXX, M_QWRTY, XXXXXXX, XXXXXXX, M_BACKL, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, MUV_IN , XXXXXXX ,
+ XXXXXXX, M_QWRTY, XXXXXXX, XXXXXXX, M_BACKL, QK_BOOT, XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, MUV_IN , XXXXXXX ,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, TMPO_DN, MUV_DE , TMPO_UP
),
diff --git a/keyboards/planck/keymaps/raffle/keymap.c b/keyboards/planck/keymaps/raffle/keymap.c
index 52727f35b1..436db90e2c 100644
--- a/keyboards/planck/keymaps/raffle/keymap.c
+++ b/keyboards/planck/keymaps/raffle/keymap.c
@@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/rai-suta/keymap.c b/keyboards/planck/keymaps/rai-suta/keymap.c
index 07dae2b2ab..bfaf28d8d9 100644
--- a/keyboards/planck/keymaps/rai-suta/keymap.c
+++ b/keyboards/planck/keymaps/rai-suta/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GESC, KC_EXLM, JK_DQT, KC_HASH, KC_DLR, KC_PERC, JK_AMPR, JK_SQT, JK_LPRN, JK_RPRN, JK_S0, KC_DEL,
_______, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_DEL, KC_BSPC, JK_EQ, JK_TLD, JK_GRV, JK_LCBR, JK_PIPE,
_______, C(KC_Z), C(KC_X), C(KC_C), C(KC_V), C(KC_Y), XXXXXXX, KC_ENT, KC_LABK, KC_RABK, JK_RCBR, JK_UNDS,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[KL_RAISE] = LAYOUT_planck_grid(
diff --git a/keyboards/planck/keymaps/rodhaene/keymap.c b/keyboards/planck/keymaps/rodhaene/keymap.c
index 8aded36b82..1732e19a3d 100644
--- a/keyboards/planck/keymaps/rodhaene/keymap.c
+++ b/keyboards/planck/keymaps/rodhaene/keymap.c
@@ -121,7 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, NUMPAD, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
BACKLIT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/roguepullrequest/keymap.c b/keyboards/planck/keymaps/roguepullrequest/keymap.c
index 177cb2b671..47331af90c 100644
--- a/keyboards/planck/keymaps/roguepullrequest/keymap.c
+++ b/keyboards/planck/keymaps/roguepullrequest/keymap.c
@@ -132,7 +132,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FUNCTION] = LAYOUT_planck_grid(
- KC_F11, KC_F7, KC_F5, KC_F3, KC_F1, KC_F9, KC_F12, KC_F2, KC_F4, KC_F6, KC_F8, RESET,
+ KC_F11, KC_F7, KC_F5, KC_F3, KC_F1, KC_F9, KC_F12, KC_F2, KC_F4, KC_F6, KC_F8, QK_BOOT,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_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_TRNS
diff --git a/keyboards/planck/keymaps/roguepullrequest/rules.mk b/keyboards/planck/keymaps/roguepullrequest/rules.mk
index 9394c96e5b..5eb053e886 100644
--- a/keyboards/planck/keymaps/roguepullrequest/rules.mk
+++ b/keyboards/planck/keymaps/roguepullrequest/rules.mk
@@ -1,4 +1,3 @@
AUDIO_ENABLE = yes
COMMAND_ENABLE = no
-TERMINAL_ENABLE = no
TAP_DANCE_ENABLE = yes
diff --git a/keyboards/planck/keymaps/rootiest/config.h b/keyboards/planck/keymaps/rootiest/config.h
index fc1fc81761..5bb5a73a29 100644
--- a/keyboards/planck/keymaps/rootiest/config.h
+++ b/keyboards/planck/keymaps/rootiest/config.h
@@ -87,6 +87,7 @@
/*
* TAP-DANCE options
*/
+#define TAPPING_TERM_PER_KEY // Control Tap-Dance time individually by key
#define TAPPING_TERM 250 // Default time allowed before resetting a Tap-Dance combo
#define ONESHOT_TAP_TOGGLE 5 /* Tapping this number of times holds the key until tapped once again. */
#define ONESHOT_TIMEOUT 5000 /* Time (in ms) before the one shot key is released */
diff --git a/keyboards/planck/keymaps/rootiest/keymap.c b/keyboards/planck/keymaps/rootiest/keymap.c
index 634bf2829e..c289c50e5b 100644
--- a/keyboards/planck/keymaps/rootiest/keymap.c
+++ b/keyboards/planck/keymaps/rootiest/keymap.c
@@ -502,7 +502,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
} else {
if (index == 0) { /* First encoder */
uint16_t held_keycode_timer = timer_read();
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case 0: // Base Layer
if ((get_mods() & MOD_MASK_GUI)) { // GUI-ed
if (clockwise) {
@@ -1656,13 +1656,26 @@ void sml_reset(qk_tap_dance_state_t* state, void* user_data) { sml_state.state =
// Tap Dance definitions
qk_tap_dance_action_t tap_dance_actions[] = {
// Tap once for °, twice for ℉, thrice for ℃
- [TD_DEG_DEGF] = ACTION_TAP_DANCE_FN(send_degree_symbol), //
- [TD_LSHFT_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, scap_finished, scap_reset, 200), //
- [TD_LCTL_STICKY] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, slctl_finished, slctl_reset, 200), //
- [TD_LALT_STICKY] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, slalt_finished, slalt_reset, 200), //
- [TD_SMILEY] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, sml_finished, sml_reset, 500),
+ [TD_DEG_DEGF] = ACTION_TAP_DANCE_FN(send_degree_symbol), //
+ [TD_LSHFT_CAPS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, scap_finished, scap_reset), //
+ [TD_LCTL_STICKY] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, slctl_finished, slctl_reset), //
+ [TD_LALT_STICKY] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, slalt_finished, slalt_reset), //
+ [TD_SMILEY] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, sml_finished, sml_reset),
};
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case TD(TD_LSHFT_CAPS):
+ case TD(TD_LCTL_STICKY):
+ case TD(TD_LALT_STICKY):
+ return 200;
+ case TD(TD_SMILEY):
+ return 500;
+ default:
+ return TAPPING_TERM;
+ }
+}
+
// Dip-Switch controls
void dip_switch_update_user(uint8_t index, bool active) {
switch (index) {
diff --git a/keyboards/planck/keymaps/rootiest/rules.mk b/keyboards/planck/keymaps/rootiest/rules.mk
index b669d8bb7d..ca0f90b6e9 100644
--- a/keyboards/planck/keymaps/rootiest/rules.mk
+++ b/keyboards/planck/keymaps/rootiest/rules.mk
@@ -20,8 +20,5 @@ KEY_LOCK_ENABLE = yes # Enables using lock key to maintain holds
# SWAP_HANDS_ENABLE = yes # Enables the swap hands function
# DEBOUNCE_TYPE = sym_eager_pk # Change debounce algorithm
-# NOTE: The following requires a lot of memory to include
-TERMINAL_ENABLE = yes # Enables a command-line-like interface designed to communicate through a text editor with keystrokes
-
# NOTE: The following is not yet available in main qmk branch
KEY_OVERRIDE_ENABLE = yes # Allows overiding modifier combos (change Shift+1 without affecting 1 or Shift's normal operation)
diff --git a/keyboards/planck/keymaps/sascha/keymap.c b/keyboards/planck/keymaps/sascha/keymap.c
index d17d4deaa4..ec4781c78b 100644
--- a/keyboards/planck/keymaps/sascha/keymap.c
+++ b/keyboards/planck/keymaps/sascha/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TILD , 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_EXLM , KC_AT , KC_HASH , KC_DLR , KC_PERC , KC_CIRC , KC_AMPR , KC_ASTR , UC(L'ü') , UC(L'ö') , UC(L'ä'),
S(KC_INS) , UC(L'…') , UC(L'’') , UC(L'“') , UC(L'â€') , UC(L'â†') , UC(L'→') , UC(L'€') , UC(L'ß') , UC(L'Ãœ') , UC(L'Ö') , UC(L'Ä'),
- RESET , BL_STEP , KC_F1 , KC_HOME , KC_END , KC_PGUP , KC_PGDN , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT , KC_TRNS
+ QK_BOOT , BL_STEP , KC_F1 , KC_HOME , KC_END , KC_PGUP , KC_PGDN , KC_LEFT , KC_DOWN , KC_UP , KC_RGHT , KC_TRNS
)
};
diff --git a/keyboards/planck/keymaps/scottzach1/keymap.c b/keyboards/planck/keymaps/scottzach1/keymap.c
index f3cd6c46ec..ce1c70d318 100755
--- a/keyboards/planck/keymaps/scottzach1/keymap.c
+++ b/keyboards/planck/keymaps/scottzach1/keymap.c
@@ -102,7 +102,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------------------------------'
*/
[_DEBUG] = LAYOUT_ortho_4x12(
- RESET, DEBUG, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, EEP_RST,
+ QK_BOOT, DEBUG, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, EEP_RST,
xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx, xxxxxxx,
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/planck/keymaps/sdothum/common/chord_layout.h b/keyboards/planck/keymaps/sdothum/common/chord_layout.h
index b6922705f3..cb1b7f6785 100644
--- a/keyboards/planck/keymaps/sdothum/common/chord_layout.h
+++ b/keyboards/planck/keymaps/sdothum/common/chord_layout.h
@@ -36,6 +36,6 @@
[_ADJUST] = LAYOUT_planck_grid(
PLOVER, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
AU_ON, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, ___fn__, _______, _______, _______, _______, ___fn__, _______, _______, _______
),
diff --git a/keyboards/planck/keymaps/sean/keymap.c b/keyboards/planck/keymaps/sean/keymap.c
index b4024909f5..e01dcc6ccf 100644
--- a/keyboards/planck/keymaps/sean/keymap.c
+++ b/keyboards/planck/keymaps/sean/keymap.c
@@ -164,7 +164,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, AG_NORM, AG_SWAP, _______, _______, HRVL, HRESET, HMENU,
+ _______, QK_BOOT, _______, _______, _______, AG_NORM, AG_SWAP, _______, _______, HRVL, HRESET, HMENU,
KC_PWR, KC_EJCT, CUT, COPY, PASTE, KC_PSCR, KC_SYSREQ, KC_CAPS, KC_MRWD, KC_MFFD, KC_MUTE, KC_MSTP,
DVRK, TO(_NMPD), TO(_MVMT), SDRK, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
BACKLIT, BACKTOG, _______, _______, _______, _______, _______, _______, KC_RGUI, KC_RALT, KC_RCTL, KC_RSFT
diff --git a/keyboards/planck/keymaps/sebas/keymap.c b/keyboards/planck/keymaps/sebas/keymap.c
index 1076531f13..631ad6fc23 100644
--- a/keyboards/planck/keymaps/sebas/keymap.c
+++ b/keyboards/planck/keymaps/sebas/keymap.c
@@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_FN] = LAYOUT_planck_grid(
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+ QK_BOOT, 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/planck/keymaps/sgoodwin/keymap.c b/keyboards/planck/keymaps/sgoodwin/keymap.c
index 1b70524825..ad380ce6ab 100644
--- a/keyboards/planck/keymaps/sgoodwin/keymap.c
+++ b/keyboards/planck/keymaps/sgoodwin/keymap.c
@@ -110,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, AU_ON, AU_OFF, _______, _______, QWERTY, COLEMAK, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/sigul/keymap.c b/keyboards/planck/keymaps/sigul/keymap.c
index 2b100509b9..6c5da45224 100644
--- a/keyboards/planck/keymaps/sigul/keymap.c
+++ b/keyboards/planck/keymaps/sigul/keymap.c
@@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- _______, DF(QWERTY), _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______,
+ _______, DF(QWERTY), _______, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, MU_MOD, MU_ON, MU_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, MUV_DE, AU_ON, AU_OFF, MUV_IN
diff --git a/keyboards/planck/keymaps/skank/keymap.c b/keyboards/planck/keymaps/skank/keymap.c
index 9601cd31fb..da7b471085 100644
--- a/keyboards/planck/keymaps/skank/keymap.c
+++ b/keyboards/planck/keymaps/skank/keymap.c
@@ -119,7 +119,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_ortho_4x12(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, AU_ON, AU_OFF, QWERTY, COLEMAK, _______, _______, _______, _______, RESET,
+ _______, _______, _______, AU_ON, AU_OFF, QWERTY, COLEMAK, _______, _______, _______, _______, QK_BOOT,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/planck/keymaps/skug/keymap.c b/keyboards/planck/keymaps/skug/keymap.c
index 6367d3c346..ce9c15e099 100644
--- a/keyboards/planck/keymaps/skug/keymap.c
+++ b/keyboards/planck/keymaps/skug/keymap.c
@@ -131,7 +131,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_planck_grid(
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 , MU_MOD , AU_ON , AU_OFF , AG_NORM, AG_SWAP, DEFAULT, XXXXXXX , XXXXXXX, UTILITY, _______,
+ _______, QK_BOOT, MU_MOD , AU_ON , AU_OFF , AG_NORM, AG_SWAP, DEFAULT, XXXXXXX , XXXXXXX, UTILITY, _______,
_______, SE_PIPE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/planck/keymaps/smittey/keymap.c b/keyboards/planck/keymaps/smittey/keymap.c
index 537b60c103..f8d3f4b1bb 100644
--- a/keyboards/planck/keymaps/smittey/keymap.c
+++ b/keyboards/planck/keymaps/smittey/keymap.c
@@ -154,7 +154,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- RESET, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MI_OFF, MI_ON, KC_DEL,
+ QK_BOOT, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MI_OFF, MI_ON, KC_DEL,
XXXXXXX, XXXXXXX, XXXXXXX, DVORAK, XXXXXXX, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, AU_OFF, AU_ON, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, XXXXXXX, XXXXXXX, TERM_ON, TERM_OFF, MU_OFF, MU_ON, XXXXXXX,
PLOVER, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, MUV_DE, MUV_IN, XXXXXXX
diff --git a/keyboards/planck/keymaps/smt/keymap.c b/keyboards/planck/keymaps/smt/keymap.c
index 55115b0c84..ff71e99377 100644
--- a/keyboards/planck/keymaps/smt/keymap.c
+++ b/keyboards/planck/keymaps/smt/keymap.c
@@ -132,7 +132,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, 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/planck/keymaps/spacebarracecar/keymap.c b/keyboards/planck/keymaps/spacebarracecar/keymap.c
index 5efced81a3..5b9f0eb444 100644
--- a/keyboards/planck/keymaps/spacebarracecar/keymap.c
+++ b/keyboards/planck/keymaps/spacebarracecar/keymap.c
@@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| |Prev |Pause |Next |LowerVol |RaiseVol |Mute | | | | | |
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
-|RESET |ESCT | | | | | | | | | |Game |
+|QK_BOOT |ESCT | | | | | | | | | |Game |
`-----------------------------------------------------------------------------------------------------------------------'
*/
@@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL,
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT,
_______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, MU_ON, XXXXXXX, XXXXXXX, XXXXXXX, _______,
- RESET, CU_ESCT, ALTF4, _______, _______, KC_SPC, CTLENT, _______, _______, _______, _______, CU_GAME
+ QK_BOOT, CU_ESCT, ALTF4, _______, _______, KC_SPC, CTLENT, _______, _______, _______, _______, CU_GAME
)
};
diff --git a/keyboards/planck/keymaps/steno/keymap.c b/keyboards/planck/keymaps/steno/keymap.c
index c2db4746cc..aac974f6a6 100644
--- a/keyboards/planck/keymaps/steno/keymap.c
+++ b/keyboards/planck/keymaps/steno/keymap.c
@@ -166,7 +166,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, 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, _______, _______, _______, ST_BOLT, ST_GEM,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/stuartfong1/keymap.c b/keyboards/planck/keymaps/stuartfong1/keymap.c
index b15afb788e..c394a9db81 100644
--- a/keyboards/planck/keymaps/stuartfong1/keymap.c
+++ b/keyboards/planck/keymaps/stuartfong1/keymap.c
@@ -174,7 +174,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] =
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- XXXXXXX, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, XXXXXXX,
+ XXXXXXX, QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, XXXXXXX,
XXXXXXX, XXXXXXX, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, XXXXXXX, PLOVER, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
diff --git a/keyboards/planck/keymaps/synth_sample/keymap.c b/keyboards/planck/keymaps/synth_sample/keymap.c
index 0a57b7ce9a..397e64bbb3 100644
--- a/keyboards/planck/keymaps/synth_sample/keymap.c
+++ b/keyboards/planck/keymaps/synth_sample/keymap.c
@@ -160,10 +160,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, 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, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, QK_BOOT, 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, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/planck/keymaps/synth_wavetable/keymap.c b/keyboards/planck/keymaps/synth_wavetable/keymap.c
index d413d63896..c8c243ee20 100644
--- a/keyboards/planck/keymaps/synth_wavetable/keymap.c
+++ b/keyboards/planck/keymaps/synth_wavetable/keymap.c
@@ -160,10 +160,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, 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, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, QK_BOOT, 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, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/planck/keymaps/tak3over/keymap.c b/keyboards/planck/keymaps/tak3over/keymap.c
index 1b9f91b0bd..7e8b953dd2 100644
--- a/keyboards/planck/keymaps/tak3over/keymap.c
+++ b/keyboards/planck/keymaps/tak3over/keymap.c
@@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_LW] = LAYOUT_planck_grid(
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_TRNS, RESET, KC_INS, KC_HOME, KC_PGUP, DF(_CM), KC_LEFT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_TRNS, QK_BOOT, KC_INS, KC_HOME, KC_PGUP, DF(_CM), KC_LEFT, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
KC_TRNS, M(0), KC_DEL, KC_END, KC_PGDN, DF(_QW), KC_DEL, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TRNS,
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/planck/keymaps/that_canadian/keymap.c b/keyboards/planck/keymaps/that_canadian/keymap.c
index 8974555fb9..a9762e6e88 100644
--- a/keyboards/planck/keymaps/that_canadian/keymap.c
+++ b/keyboards/planck/keymaps/that_canadian/keymap.c
@@ -91,14 +91,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | | RESET|
+ * | | | | | | | | | | | | QK_BOOT|
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
TSKMGR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CALTDEL,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT
),
/* Function
diff --git a/keyboards/planck/keymaps/thermal_printer/keymap.c b/keyboards/planck/keymaps/thermal_printer/keymap.c
index 9a1d0d0494..6e23014ac5 100644
--- a/keyboards/planck/keymaps/thermal_printer/keymap.c
+++ b/keyboards/planck/keymaps/thermal_printer/keymap.c
@@ -149,7 +149,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, PRINT_ON, PRINT_OFF, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, QK_BOOT, _______, PRINT_ON, PRINT_OFF, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/tk/keymap.c b/keyboards/planck/keymaps/tk/keymap.c
index 1ceb6cc5bb..c471141baa 100644
--- a/keyboards/planck/keymaps/tk/keymap.c
+++ b/keyboards/planck/keymaps/tk/keymap.c
@@ -180,7 +180,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_HYPER] = LAYOUT_planck_grid(
- R_MODES, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, RESET,
+ R_MODES, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, QK_BOOT,
AU_TOG, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, MU_TOG,
CK_TOGG, KC_F21, KC_F22, KC_F23, KC_F24, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_MOD,
XXXXXXX, KC_WAKE, KC_SLEP, KC_PSCR, XXXXXXX, BASE, BASE, XXXXXXX, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/tom/keymap.c b/keyboards/planck/keymaps/tom/keymap.c
index 66beaf33b7..89175e0115 100644
--- a/keyboards/planck/keymaps/tom/keymap.c
+++ b/keyboards/planck/keymaps/tom/keymap.c
@@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- C(G(S(KC_4))), RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL,
+ C(G(S(KC_4))), QK_BOOT, 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, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
@@ -228,7 +228,7 @@ bool music_mask_user(uint16_t keycode) {
void rgb_matrix_indicators_user(void) {
#ifdef RGB_MATRIX_ENABLE
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _RAISE:
for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
if (HAS_FLAGS(g_led_config.flags[i], LED_FLAG_MODIFIER)) {
diff --git a/keyboards/planck/keymaps/tomkonidas/keymap.c b/keyboards/planck/keymaps/tomkonidas/keymap.c
index 39933e8a21..e0232f69ec 100644
--- a/keyboards/planck/keymaps/tomkonidas/keymap.c
+++ b/keyboards/planck/keymaps/tomkonidas/keymap.c
@@ -163,7 +163,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/tong92/keymap.c b/keyboards/planck/keymaps/tong92/keymap.c
index de43024c40..cf535d6c8c 100644
--- a/keyboards/planck/keymaps/tong92/keymap.c
+++ b/keyboards/planck/keymaps/tong92/keymap.c
@@ -131,7 +131,7 @@ KC_TRNS,_______ ,_______ ,MOUSE ,MOUSE ,XXXXXX
),
/* 10: mouse layer
* ,-----------------------------------------------------------------------.
-* | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| |RESET|
+* | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| |QK_BOOT|
* |-----------------------------------------------------------------------|
* | | |Mo_Le|Mo_Do|Mo_Ri| | |M_Bt1|M_WhD|M_Bt2| | |
* |-----------------------------------------------------------------------|
@@ -141,7 +141,7 @@ KC_TRNS,_______ ,_______ ,MOUSE ,MOUSE ,XXXXXX
* `-----------------------------------------------------------------------'
*/
[_MOUSE] = LAYOUT_planck_grid(
-XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX,XXXXXXX,KC_WH_L,KC_WH_U,KC_WH_R,XXXXXXX,RESET,
+XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX,XXXXXXX,KC_WH_L,KC_WH_U,KC_WH_R,XXXXXXX,QK_BOOT,
XXXXXXX,XXXXXXX,KC_MS_L,KC_MS_D,KC_MS_R,XXXXXXX,XXXXXXX,KC_BTN1,KC_WH_D,KC_BTN2,XXXXXXX,XXXXXXX,
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_ACL0,KC_ACL1,KC_ACL2,XXXXXXX,WINDOW,
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,EXT_MOUSE,EXT_MOUSE,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,MAC
diff --git a/keyboards/planck/keymaps/ttys0/keymap.c b/keyboards/planck/keymaps/ttys0/keymap.c
index ed392bfb93..9dd1fa4ffd 100644
--- a/keyboards/planck/keymaps/ttys0/keymap.c
+++ b/keyboards/planck/keymaps/ttys0/keymap.c
@@ -128,7 +128,7 @@
#define move MO(MOVE)
#define func MO(FUNC)
-#define rset RESET
+#define rset QK_BOOT
#define powr KC_POWER
#define ____ KC_TRNS
diff --git a/keyboards/planck/keymaps/tylerwince/keymap.c b/keyboards/planck/keymaps/tylerwince/keymap.c
index 5cbc47b2fb..e6d174fbce 100644
--- a/keyboards/planck/keymaps/tylerwince/keymap.c
+++ b/keyboards/planck/keymaps/tylerwince/keymap.c
@@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
- RESET, _______, _______, _______, _______, LALT(LCTL(KC_7)), LALT(LCTL(KC_8)), _______, _______, _______, LALT(LCTL(KC_L)), _______,
+ QK_BOOT, _______, _______, _______, _______, LALT(LCTL(KC_7)), LALT(LCTL(KC_8)), _______, _______, _______, LALT(LCTL(KC_L)), _______,
_______, _______, _______, _______, _______, LALT(LCTL(KC_U)), LALT(LCTL(KC_I)), LALT(LCTL(KC_H)), _______, _______, _______, _______,
_______, _______, _______, LALT(LCTL(KC_J)), LALT(LCTL(KC_K)), _______, _______, _______, _______, _______, _______, LALT(LCTL(KC_ENTER)),
TO(0), TO(4), _______, _______, _______, _______, KC_NO, _______, KC_AUDIO_VOL_DOWN, KC_F14, KC_F15, KC_AUDIO_VOL_UP
@@ -168,7 +168,7 @@ void set_layer_color(int layer) {
void rgb_matrix_indicators_user(void) {
if (g_suspend_state || disable_layer_color) { return; }
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case 0:
set_layer_color(0);
break;
@@ -276,7 +276,7 @@ bool music_mask_user(uint16_t keycode) {
layer_state_t layer_state_set_user(layer_state_t state) {
palClearPad(GPIOB, 8);
palClearPad(GPIOB, 9);
- uint8_t layer = biton32(state);
+ uint8_t layer = get_highest_layer(state);
switch (layer) {
case _LOWER:
palSetPad(GPIOB, 9);
diff --git a/keyboards/planck/keymaps/unagi/keymap.c b/keyboards/planck/keymaps/unagi/keymap.c
index 1fc1814796..e75e7386bc 100644
--- a/keyboards/planck/keymaps/unagi/keymap.c
+++ b/keyboards/planck/keymaps/unagi/keymap.c
@@ -169,7 +169,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/unicode/keymap.c b/keyboards/planck/keymaps/unicode/keymap.c
index 215acaa3ab..24e7a7d901 100644
--- a/keyboards/planck/keymaps/unicode/keymap.c
+++ b/keyboards/planck/keymaps/unicode/keymap.c
@@ -171,7 +171,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/vaire/keymap.c b/keyboards/planck/keymaps/vaire/keymap.c
index 71cbcd8bd0..0bd4d5893f 100644
--- a/keyboards/planck/keymaps/vaire/keymap.c
+++ b/keyboards/planck/keymaps/vaire/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_planck_grid(
TO(0), KC_LSCR, WIN_LEFT, KC_MS_WH_UP, WIN_RIGHT, KC_TRNS, KC_TRNS, KC_MS_BTN1, KC_MS_U, KC_MS_BTN2, KC_TRNS, KC_TRNS,
KC_TRNS, KC_INS, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS,
- RESET, KC_APP, KC_MS_ACCEL0, KC_MS_ACCEL0, KC_MS_ACCEL0, KC_TRNS, KC_TRNS, TO(0), TO(1), TO(2), TO(3), TO(4),
+ QK_BOOT, KC_APP, KC_MS_ACCEL0, KC_MS_ACCEL0, KC_MS_ACCEL0, KC_TRNS, KC_TRNS, TO(0), TO(1), TO(2), TO(3), TO(4),
TO(0), KC_MENU, KC_TRNS, KC_TRNS, KC_LALT, KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RCTL),
LAYOUT_planck_grid(
diff --git a/keyboards/planck/keymaps/vxid/keymap.c b/keyboards/planck/keymaps/vxid/keymap.c
index 0494056ea2..397befcdda 100644
--- a/keyboards/planck/keymaps/vxid/keymap.c
+++ b/keyboards/planck/keymaps/vxid/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT_planck_grid(
- RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/keymaps/winternebs/keymap.c b/keyboards/planck/keymaps/winternebs/keymap.c
index 4bb97b27ac..614d1c1e92 100755
--- a/keyboards/planck/keymaps/winternebs/keymap.c
+++ b/keyboards/planck/keymaps/winternebs/keymap.c
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Adjust (Lower + Raise)
* ,-----------------------------------------------------------------------------------
- * |RESET |DEBUG| |Aud on|Audoff| | | | | | |Reset |
+ * |QK_BOOT |DEBUG| |Aud on|Audoff| | | | | | |Reset |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | |QWERTY|WORKMAN| | | Help | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- RESET, DEBUG, _______, _______, AU_ON, AU_OFF, _______, _______, _______, _______, _______, _______ ,
+ QK_BOOT, DEBUG, _______, _______, AU_ON, AU_OFF, _______, _______, _______, _______, _______, _______ ,
_______, _______, _______, QWERTY, WORKMAN , _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, KC_VOLU, KC_MPLY,
MAGIC_TOGGLE_NKRO, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_MNXT
diff --git a/keyboards/planck/keymaps/xjtian/keymap.c b/keyboards/planck/keymaps/xjtian/keymap.c
index f3287738d3..b338ddee0e 100644
--- a/keyboards/planck/keymaps/xjtian/keymap.c
+++ b/keyboards/planck/keymaps/xjtian/keymap.c
@@ -99,13 +99,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | | |Rewind| Vol- | Stop | Play | Vol+ | Skip | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * |RESET | | | | | | | | | | | |
+ * |QK_BOOT | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_MRWD, KC_VOLD, KC_MSTP, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_MRWD, KC_VOLD, KC_MSTP, KC_MPLY, KC_VOLU, KC_MFFD, 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
+ QK_BOOT, 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/planck/keymaps/yang/keymap.c b/keyboards/planck/keymaps/yang/keymap.c
index e9c69c9989..0a77b2be2f 100644
--- a/keyboards/planck/keymaps/yang/keymap.c
+++ b/keyboards/planck/keymaps/yang/keymap.c
@@ -36,13 +36,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_RS] = LAYOUT_planck_grid( /* RAISE */
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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS,
+ KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), QK_BOOT, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
[_LW] = LAYOUT_planck_grid( /* LOWER */
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_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
- KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), RESET, KC_TRNS,
+ KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_DV), QK_BOOT, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
[_RGB] = LAYOUT_planck_grid( /* RGBLIGHT */
diff --git a/keyboards/planck/keymaps/zach/keymap.c b/keyboards/planck/keymaps/zach/keymap.c
index ba0338e39a..f4a79e0108 100644
--- a/keyboards/planck/keymaps/zach/keymap.c
+++ b/keyboards/planck/keymaps/zach/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
UNIWIN, XXXXXXX, XXXXXXX, PENGY, DUCK, KC_INS, KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX,
UNILIN, XXXXXXX, XXXXXXX, RANDIG, RANDIG, SWCOLE, COLEMAK, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX,
_______, CADKEY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX,
- _______, _______, _______, _______, _______, RESET, RESET, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+ _______, _______, _______, _______, _______, QK_BOOT, QK_BOOT, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
),
[_UNICODES] = LAYOUT_planck_grid( /* UNICODES - Extra layer for unicode stuff */
diff --git a/keyboards/planck/keymaps/zrichard/config.h b/keyboards/planck/keymaps/zrichard/config.h
index d12c19065c..eaedf65575 100755
--- a/keyboards/planck/keymaps/zrichard/config.h
+++ b/keyboards/planck/keymaps/zrichard/config.h
@@ -27,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifndef KEYBOARD_planck_light
#define MATRIX_ROW_PINS { D0, D5, B5, B6 }
#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
-#define UNUSED_PINS
#endif
/* enable basic MIDI features:
diff --git a/keyboards/planck/keymaps/zrichard/keymap.c b/keyboards/planck/keymaps/zrichard/keymap.c
index f3f60b7d1d..6494231a2a 100755
--- a/keyboards/planck/keymaps/zrichard/keymap.c
+++ b/keyboards/planck/keymaps/zrichard/keymap.c
@@ -206,7 +206,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| XXXXXX | BRTOG | BRSPD+ | BRSPD- | BRDFLT | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX | XXXXXX |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- | XXXXXX | QWERTY | XXXXXX | XXXXXX | BACKLT | RESET | XXXXXX | MOUSE | XXXXXX | XXXXXX | VOICE+ | MACRO |
+ | XXXXXX | QWERTY | XXXXXX | XXXXXX | BACKLT | QK_BOOT | XXXXXX | MOUSE | XXXXXX | XXXXXX | VOICE+ | MACRO |
|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
| XXXXXX | XXXXXX | XXXXXX | XXXXXX | LOWER | XXXXXX | XXXXXX | UPPER | XXXXXX | TEMPO- | VOICE- | TEMPO+ |
'-----------------------------------------------------------------------------------------------------------'
@@ -214,7 +214,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER_ADJUST] = LAYOUT_planck_grid(
XXXXXXX, M_HELP1, M_HELP2, M_HELP3, M_HELP4, M_HELP5, M_HELP6, M_HELP7, M_HELP8, M_HELP9, MU_TOG , AU_TOG ,
XXXXXXX, M_BRTOG, M_BSPDU, M_BSPDD, M_BDFLT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ,
- XXXXXXX, M_QWRTY, XXXXXXX, XXXXXXX, M_BACKL, RESET , XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, MUV_IN , MY_MACRO,
+ XXXXXXX, M_QWRTY, XXXXXXX, XXXXXXX, M_BACKL, QK_BOOT, XXXXXXX, M_MOUSE, XXXXXXX, XXXXXXX, MUV_IN , MY_MACRO,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, M_LOWER, XXXXXXX, XXXXXXX, M_UPPER, XXXXXXX, TMPO_DN, MUV_DE , TMPO_UP
),
diff --git a/keyboards/planck/light/config.h b/keyboards/planck/light/config.h
index cc7f1fe940..67b42e8c08 100644
--- a/keyboards/planck/light/config.h
+++ b/keyboards/planck/light/config.h
@@ -2,11 +2,6 @@
#include "config_common.h"
-#undef PRODUCT
-#define PRODUCT Planck Light
-#define PRODUCT_ID 0xBEA2
-#define DEVICE_VER 0x0001
-
#undef MATRIX_ROW_PINS
#undef MATRIX_COL_PINS
diff --git a/keyboards/planck/light/info.json b/keyboards/planck/light/info.json
index 6169a8f991..d55de09d47 100644
--- a/keyboards/planck/light/info.json
+++ b/keyboards/planck/light/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Planck Light",
+ "manufacturer": "OLKB",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
+ "usb": {
+ "vid": "0x03A8",
+ "pid": "0xBEA2",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_planck_1x2uC": {
"layout": [
diff --git a/keyboards/planck/light/light.c b/keyboards/planck/light/light.c
index 1967d318d4..5a7c656f1a 100644
--- a/keyboards/planck/light/light.c
+++ b/keyboards/planck/light/light.c
@@ -127,3 +127,16 @@ void suspend_wakeup_init_kb(void)
suspend_wakeup_init_user();
}
+#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}},
+};
+
+# ifdef ENCODER_MAP_ENABLE
+const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {0};
+# endif
+#endif
diff --git a/keyboards/planck/planck.c b/keyboards/planck/planck.c
index 6202da5250..20db22055c 100644
--- a/keyboards/planck/planck.c
+++ b/keyboards/planck/planck.c
@@ -1,18 +1,5 @@
#include "planck.h"
-#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}},
-};
-# ifdef ENCODER_MAP_ENABLE
-const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {0};
-# endif
-#endif
-
__attribute__ ((weak))
void matrix_init_kb(void) {
// Turn status LED on, with the exception of THK
diff --git a/keyboards/planck/rev1/config.h b/keyboards/planck/rev1/config.h
deleted file mode 100644
index 82f9acd8f9..0000000000
--- a/keyboards/planck/rev1/config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#pragma once
-
-#define PRODUCT_ID 0xAE01
-#define DEVICE_VER 0x0001
diff --git a/keyboards/planck/rev1/info.json b/keyboards/planck/rev1/info.json
index 04c6775042..2fcff227c6 100644
--- a/keyboards/planck/rev1/info.json
+++ b/keyboards/planck/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Planck rev 1",
+ "keyboard_name": "Planck",
+ "manufacturer": "OLKB",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
+ "usb": {
+ "vid": "0x03A8",
+ "pid": "0xAE01",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_planck_1x2uC": {
"layout": [
diff --git a/keyboards/planck/rev1/rev1.c b/keyboards/planck/rev1/rev1.c
new file mode 100644
index 0000000000..e37e11cf98
--- /dev/null
+++ b/keyboards/planck/rev1/rev1.c
@@ -0,0 +1,15 @@
+#include "planck.h"
+
+#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}},
+};
+
+# ifdef ENCODER_MAP_ENABLE
+const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {0};
+# endif
+#endif
diff --git a/keyboards/planck/rev2/config.h b/keyboards/planck/rev2/config.h
deleted file mode 100644
index 09ec6c4470..0000000000
--- a/keyboards/planck/rev2/config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#pragma once
-
-#define PRODUCT_ID 0xAE01
-#define DEVICE_VER 0x0002
diff --git a/keyboards/planck/rev2/info.json b/keyboards/planck/rev2/info.json
index 42839397cb..5d4137a9d6 100644
--- a/keyboards/planck/rev2/info.json
+++ b/keyboards/planck/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Planck rev 2",
+ "keyboard_name": "Planck",
+ "manufacturer": "OLKB",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
+ "usb": {
+ "vid": "0x03A8",
+ "pid": "0xAE01",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_planck_1x2uC": {
"layout": [
diff --git a/keyboards/planck/rev2/rev2.c b/keyboards/planck/rev2/rev2.c
new file mode 100644
index 0000000000..e37e11cf98
--- /dev/null
+++ b/keyboards/planck/rev2/rev2.c
@@ -0,0 +1,15 @@
+#include "planck.h"
+
+#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}},
+};
+
+# ifdef ENCODER_MAP_ENABLE
+const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {0};
+# endif
+#endif
diff --git a/keyboards/planck/rev3/config.h b/keyboards/planck/rev3/config.h
deleted file mode 100644
index a57e42dfbc..0000000000
--- a/keyboards/planck/rev3/config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#pragma once
-
-#define PRODUCT_ID 0xAE01
-#define DEVICE_VER 0x0003
diff --git a/keyboards/planck/rev3/info.json b/keyboards/planck/rev3/info.json
index 88a8741ad1..d9eaea8f41 100644
--- a/keyboards/planck/rev3/info.json
+++ b/keyboards/planck/rev3/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Planck rev 3",
+ "keyboard_name": "Planck",
+ "manufacturer": "OLKB",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
+ "usb": {
+ "vid": "0x03A8",
+ "pid": "0xAE01",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_planck_1x2uC": {
"layout": [
diff --git a/keyboards/planck/rev3/rev3.c b/keyboards/planck/rev3/rev3.c
new file mode 100644
index 0000000000..e37e11cf98
--- /dev/null
+++ b/keyboards/planck/rev3/rev3.c
@@ -0,0 +1,15 @@
+#include "planck.h"
+
+#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}},
+};
+
+# ifdef ENCODER_MAP_ENABLE
+const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {0};
+# endif
+#endif
diff --git a/keyboards/planck/rev4/config.h b/keyboards/planck/rev4/config.h
deleted file mode 100644
index c802efa8d4..0000000000
--- a/keyboards/planck/rev4/config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#pragma once
-
-#define PRODUCT_ID 0xAE01
-#define DEVICE_VER 0x0004
diff --git a/keyboards/planck/rev4/info.json b/keyboards/planck/rev4/info.json
index 5c4d9af194..f5339f3671 100644
--- a/keyboards/planck/rev4/info.json
+++ b/keyboards/planck/rev4/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Planck rev 4",
+ "keyboard_name": "Planck",
+ "manufacturer": "OLKB",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
+ "usb": {
+ "vid": "0x03A8",
+ "pid": "0xAE01",
+ "device_version": "0.0.4"
+ },
"layouts": {
"LAYOUT_planck_1x2uC": {
"layout": [
diff --git a/keyboards/planck/rev4/rev4.c b/keyboards/planck/rev4/rev4.c
new file mode 100644
index 0000000000..e37e11cf98
--- /dev/null
+++ b/keyboards/planck/rev4/rev4.c
@@ -0,0 +1,15 @@
+#include "planck.h"
+
+#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}},
+};
+
+# ifdef ENCODER_MAP_ENABLE
+const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {0};
+# endif
+#endif
diff --git a/keyboards/planck/rev5/config.h b/keyboards/planck/rev5/config.h
deleted file mode 100644
index c2ff086f33..0000000000
--- a/keyboards/planck/rev5/config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#pragma once
-
-#define PRODUCT_ID 0xAE01
-#define DEVICE_VER 0x0005
diff --git a/keyboards/planck/rev5/info.json b/keyboards/planck/rev5/info.json
index f5d667a507..4ade05c657 100644
--- a/keyboards/planck/rev5/info.json
+++ b/keyboards/planck/rev5/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Planck rev 5",
+ "keyboard_name": "Planck",
+ "manufacturer": "OLKB",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
+ "usb": {
+ "vid": "0x03A8",
+ "pid": "0xAE01",
+ "device_version": "0.0.5"
+ },
"layouts": {
"LAYOUT_planck_1x2uC": {
"layout": [
diff --git a/keyboards/planck/rev5/rev5.c b/keyboards/planck/rev5/rev5.c
new file mode 100644
index 0000000000..e37e11cf98
--- /dev/null
+++ b/keyboards/planck/rev5/rev5.c
@@ -0,0 +1,15 @@
+#include "planck.h"
+
+#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}},
+};
+
+# ifdef ENCODER_MAP_ENABLE
+const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {0};
+# endif
+#endif
diff --git a/keyboards/planck/rev6/config.h b/keyboards/planck/rev6/config.h
index 778fa12fcc..3879cb7690 100644
--- a/keyboards/planck/rev6/config.h
+++ b/keyboards/planck/rev6/config.h
@@ -17,10 +17,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0xA4F9
-#define DEVICE_VER 0x0006
-
#undef MATRIX_ROWS
#undef MATRIX_COLS
/* key matrix size */
@@ -44,7 +40,6 @@
#define MATRIX_ROW_PINS { A10, A9, A8, B15, C13, C14, C15, A2 }
#define MATRIX_COL_PINS { B11, B10, B2, B1, A7, B0 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { B12 }
#define ENCODERS_PAD_B { B13 }
diff --git a/keyboards/planck/rev6/info.json b/keyboards/planck/rev6/info.json
index 114a971294..bde896203f 100644
--- a/keyboards/planck/rev6/info.json
+++ b/keyboards/planck/rev6/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Planck rev 6",
+ "keyboard_name": "Planck",
+ "manufacturer": "OLKB",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
+ "usb": {
+ "vid": "0x03A8",
+ "pid": "0xA4F9",
+ "device_version": "0.0.6"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
diff --git a/keyboards/planck/rev6/rev6.c b/keyboards/planck/rev6/rev6.c
index da6da11004..59a6b7e279 100644
--- a/keyboards/planck/rev6/rev6.c
+++ b/keyboards/planck/rev6/rev6.c
@@ -41,3 +41,22 @@ led_config_t g_led_config = { {
// 7 8 1 2
#endif
+
+#ifdef SWAP_HANDS_ENABLE
+__attribute__ ((weak))
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ {{5, 4}, {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}},
+ {{5, 5}, {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}},
+ {{5, 6}, {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}},
+ {{5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
+
+ {{5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
+ {{5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
+ {{5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
+ {{5, 7}, {4, 7}, {3, 7}, {2, 7}, {1, 7}, {0, 7}},
+};
+
+# ifdef ENCODER_MAP_ENABLE
+const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {0};
+# endif
+#endif
diff --git a/keyboards/planck/rev6_drop/config.h b/keyboards/planck/rev6_drop/config.h
index f41d46b889..3cbee54de5 100644
--- a/keyboards/planck/rev6_drop/config.h
+++ b/keyboards/planck/rev6_drop/config.h
@@ -17,12 +17,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0xA4F9
-#define DEVICE_VER 0x0006
-#undef MANUFACTURER
-#define MANUFACTURER Drop
-
#undef MATRIX_ROWS
#undef MATRIX_COLS
/* key matrix size */
@@ -48,7 +42,6 @@
#define MATRIX_COL_PINS \
{ B11, B10, B2, B1, A7, B0 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A \
{ B12 }
diff --git a/keyboards/planck/rev6_drop/info.json b/keyboards/planck/rev6_drop/info.json
index 114a971294..cd8a932139 100644
--- a/keyboards/planck/rev6_drop/info.json
+++ b/keyboards/planck/rev6_drop/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Planck rev 6",
+ "keyboard_name": "Planck",
+ "manufacturer": "Drop",
"url": "https://olkb.com/planck",
"maintainer": "jackhumbert",
+ "usb": {
+ "vid": "0x03A8",
+ "pid": "0xA4F9",
+ "device_version": "0.0.6"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
diff --git a/keyboards/planck/rev6_drop/matrix.c b/keyboards/planck/rev6_drop/matrix.c
index 49e115d029..d10d94dcf8 100644
--- a/keyboards/planck/rev6_drop/matrix.c
+++ b/keyboards/planck/rev6_drop/matrix.c
@@ -15,14 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <stdint.h>
-#include <stdbool.h>
-#include <string.h>
-#include "hal.h"
-#include "timer.h"
-#include "wait.h"
-#include "debug.h"
-#include "matrix.h"
+#include "quantum.h"
/*
* col: { B11, B10, B2, B1, A7, B0 }
@@ -38,9 +31,13 @@ __attribute__((weak)) void matrix_init_user(void) {}
__attribute__((weak)) void matrix_scan_user(void) {}
-__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); }
+__attribute__((weak)) void matrix_init_kb(void) {
+ matrix_init_user();
+}
-__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); }
+__attribute__((weak)) void matrix_scan_kb(void) {
+ matrix_scan_user();
+}
void matrix_init(void) {
dprintf("matrix init\n");
@@ -146,9 +143,13 @@ uint8_t matrix_scan(void) {
return 1;
}
-bool matrix_is_on(uint8_t row, uint8_t col) { return (matrix[row] & (1 << col)); }
+bool matrix_is_on(uint8_t row, uint8_t col) {
+ return (matrix[row] & (1 << col));
+}
-matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; }
+matrix_row_t matrix_get_row(uint8_t row) {
+ return matrix[row];
+}
void matrix_print(void) {
dprintf("\nr/c 01234567\n");
diff --git a/keyboards/planck/rev6_drop/rev6_drop.c b/keyboards/planck/rev6_drop/rev6_drop.c
index 4c41af3806..e5d8ad9901 100644
--- a/keyboards/planck/rev6_drop/rev6_drop.c
+++ b/keyboards/planck/rev6_drop/rev6_drop.c
@@ -42,3 +42,22 @@ led_config_t g_led_config = { {
// 7 8 1 2
#endif
+
+#ifdef SWAP_HANDS_ENABLE
+__attribute__ ((weak))
+const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
+ {{5, 4}, {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4}},
+ {{5, 5}, {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5}},
+ {{5, 6}, {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6}},
+ {{5, 3}, {4, 3}, {3, 3}, {2, 3}, {1, 3}, {0, 3}},
+
+ {{5, 0}, {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0}},
+ {{5, 1}, {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1}},
+ {{5, 2}, {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2}},
+ {{5, 7}, {4, 7}, {3, 7}, {2, 7}, {1, 7}, {0, 7}},
+};
+
+# ifdef ENCODER_MAP_ENABLE
+const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {0};
+# endif
+#endif
diff --git a/keyboards/planck/thk/config.h b/keyboards/planck/thk/config.h
index 845ef60b08..8ee347d284 100644
--- a/keyboards/planck/thk/config.h
+++ b/keyboards/planck/thk/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#include "config_common.h"
-#define DEVICE_VER 0x0000
-#undef PRODUCT
-#define PRODUCT Planck THK
-#define PRODUCT_ID 0x25A7
// THK has a different pin-out
#undef MATRIX_ROW_PINS
diff --git a/keyboards/planck/thk/info.json b/keyboards/planck/thk/info.json
index 70e1f0bd07..c8689737c0 100644
--- a/keyboards/planck/thk/info.json
+++ b/keyboards/planck/thk/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Planck THK",
+ "manufacturer": "OLKB",
"maintainer": "Erovia",
"url": "https://olkb.com/planck",
+ "usb": {
+ "vid": "0x03A8",
+ "pid": "0x25A7",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_planck_grid": "LAYOUT_ortho_4x12",
"LAYOUT_planck_mit": "LAYOUT_planck_1x2uC"
diff --git a/keyboards/planck/thk/keymaps/thk/keymap.c b/keyboards/planck/thk/keymaps/thk/keymap.c
index ae2420250e..e7d58d2d0b 100644
--- a/keyboards/planck/thk/keymaps/thk/keymap.c
+++ b/keyboards/planck/thk/keymaps/thk/keymap.c
@@ -140,7 +140,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_planck_grid(
- _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
_______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______,
_______, _______, _______, _______, _______, _______, _______, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/planck/thk/thk.c b/keyboards/planck/thk/thk.c
index e9912fcbb3..bd5e1a0342 100644
--- a/keyboards/planck/thk/thk.c
+++ b/keyboards/planck/thk/thk.c
@@ -16,3 +16,17 @@
*/
#include "thk.h"
+
+#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}},
+};
+
+# ifdef ENCODER_MAP_ENABLE
+const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {0};
+# endif
+#endif
diff --git a/keyboards/playkbtw/ca66/config.h b/keyboards/playkbtw/ca66/config.h
index c65554a819..af3f2b2dbb 100644
--- a/keyboards/playkbtw/ca66/config.h
+++ b/keyboards/playkbtw/ca66/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5457 // "TW"
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Barry
-#define PRODUCT CA66
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -16,7 +9,6 @@
/* key matrix pins 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/
#define MATRIX_ROW_PINS { F5, F4, F1, B0, B3 }
#define MATRIX_COL_PINS { F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, F6, B7, E6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/playkbtw/ca66/info.json b/keyboards/playkbtw/ca66/info.json
index 1e14147de1..547f60de41 100644
--- a/keyboards/playkbtw/ca66/info.json
+++ b/keyboards/playkbtw/ca66/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "CA66",
+ "manufacturer": "Barry",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5457",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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.5, "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.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, "w":2.25}, {"x":15.5, "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":15.5, "y":3}, {"x":14.25, "y":3.25}, {"x":0, "y":4, "w":1.25}, {"x":2.25, "y":4}, {"x":3.25, "y":4, "w":1.25}, {"x":4.5, "y":4, "w":2.25}, {"x":6.75, "y":4, "w":2.75}, {"x":9.5, "y":4, "w":1.25}, {"x":10.75, "y":4}, {"x":11.75, "y":4, "w":1.25}, {"x":13.25, "y":4.25}, {"x":14.25, "y":4.25}, {"x":15.25, "y":4.25}]
diff --git a/keyboards/playkbtw/ca66/keymaps/kelorean/keymap.c b/keyboards/playkbtw/ca66/keymaps/kelorean/keymap.c
index a3450118a1..6258e8d7a9 100644
--- a/keyboards/playkbtw/ca66/keymaps/kelorean/keymap.c
+++ b/keyboards/playkbtw/ca66/keymaps/kelorean/keymap.c
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//Layer4, soft reset on Tab
[4] = 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,
- 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_TRNS, KC_NO,
+ QK_BOOT, KC_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, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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/playkbtw/ca66/keymaps/kelorean/layers.json b/keyboards/playkbtw/ca66/keymaps/kelorean/layers.json
index 9d7caa327d..fd28fc3f48 100644
--- a/keyboards/playkbtw/ca66/keymaps/kelorean/layers.json
+++ b/keyboards/playkbtw/ca66/keymaps/kelorean/layers.json
@@ -1 +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_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", "MO(3)", "KC_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_PGDN", "KC_UP", "KC_NO", "KC_LCTL", "KC_LALT", "KC_BSPC", "KC_SPC", "KC_RALT", "KC_RGUI", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT"], ["KC_NO", "KC_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_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_TRNS", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_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_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_LEFT", "KC_DOWN", "KC_RGHT", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "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_HUD", "RGB_HUI", "KC_NO", "KC_NO", "KC_NO", "BL_TOGG", "BL_DEC", "BL_INC", "BL_STEP", "KC_NO", "KC_NO", "MO(4)", "KC_NO", "KC_TRNS", "RGB_TOG", "RGB_RMOD", "RGB_MOD", "RGB_VAD", "RGB_VAI", "KC_MSTP", "KC_MPLY", "KC_MPRV", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "RGB_SAD", "RGB_SAI", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "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_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", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"]] \ 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_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", "MO(3)", "KC_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_PGDN", "KC_UP", "KC_NO", "KC_LCTL", "KC_LALT", "KC_BSPC", "KC_SPC", "KC_RALT", "KC_RGUI", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT"], ["KC_NO", "KC_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_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_TRNS", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_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_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_LEFT", "KC_DOWN", "KC_RGHT", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "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_HUD", "RGB_HUI", "KC_NO", "KC_NO", "KC_NO", "BL_TOGG", "BL_DEC", "BL_INC", "BL_STEP", "KC_NO", "KC_NO", "MO(4)", "KC_NO", "KC_TRNS", "RGB_TOG", "RGB_RMOD", "RGB_MOD", "RGB_VAD", "RGB_VAI", "KC_MSTP", "KC_MPLY", "KC_MPRV", "KC_MNXT", "KC_VOLD", "KC_VOLU", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "RGB_SAD", "RGB_SAI", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "QK_BOOT", "KC_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", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"]] \ No newline at end of file
diff --git a/keyboards/playkbtw/ca66/keymaps/olivia/keymap.c b/keyboards/playkbtw/ca66/keymaps/olivia/keymap.c
index ed3d625e47..5dcd0f8a1b 100644
--- a/keyboards/playkbtw/ca66/keymaps/olivia/keymap.c
+++ b/keyboards/playkbtw/ca66/keymaps/olivia/keymap.c
@@ -10,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_NO, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_NO, KC_RGUI, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
LAYOUT(
- 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, RESET,
+ 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, QK_BOOT,
KC_CAPS, RGB_RMOD,RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_TOG, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_EJCT, KC_TRNS, KC_TRNS, KC_TRNS, 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_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/playkbtw/helen80/config.h b/keyboards/playkbtw/helen80/config.h
index 4e28b321d1..830b659c17 100644
--- a/keyboards/playkbtw/helen80/config.h
+++ b/keyboards/playkbtw/helen80/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x706B
-#define PRODUCT_ID 0x4845
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Play Keyboard
-#define PRODUCT Helen 80
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
diff --git a/keyboards/playkbtw/helen80/info.json b/keyboards/playkbtw/helen80/info.json
index 1112fafd21..0c65363a13 100644
--- a/keyboards/playkbtw/helen80/info.json
+++ b/keyboards/playkbtw/helen80/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "helen80",
+ "keyboard_name": "Helen 80",
+ "manufacturer": "Play Keyboard",
"url": "",
"maintainer": "yj7272098",
+ "usb": {
+ "vid": "0x706B",
+ "pid": "0x4845",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/playkbtw/pk60/config.h b/keyboards/playkbtw/pk60/config.h
index 0a6ee47d44..d3aaa893e0 100644
--- a/keyboards/playkbtw/pk60/config.h
+++ b/keyboards/playkbtw/pk60/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Play Keyboard
-#define PRODUCT pk60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, F7, B5, B4, D7, D6, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/playkbtw/pk60/info.json b/keyboards/playkbtw/pk60/info.json
index 96f0c1f1c4..b314708fdf 100644
--- a/keyboards/playkbtw/pk60/info.json
+++ b/keyboards/playkbtw/pk60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "pk60",
+ "manufacturer": "Play Keyboard",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_split_bs_rshift": {
"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": "&amp;", "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": "Del", "x": 13, "y": 0}, {"label": "Bs", "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": "&lt;", "x": 9.25, "y": 3}, {"label": "&gt;", "x": 10.25, "y": 3}, {"label": "?", "x": 11.25, "y": 3}, {"label": "Shift", "x": 12.25, "y": 3, "w": 1.75}, {"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": "Win", "x": 11.25, "y": 4, "w": 1.25}, {"label": "Menu", "x": 12.5, "y": 4, "w": 1.25}, {"label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25}]
diff --git a/keyboards/playkbtw/pk60/keymaps/rfvizarra/keymap.c b/keyboards/playkbtw/pk60/keymaps/rfvizarra/keymap.c
index e439d4462e..193185e58d 100644
--- a/keyboards/playkbtw/pk60/keymaps/rfvizarra/keymap.c
+++ b/keyboards/playkbtw/pk60/keymaps/rfvizarra/keymap.c
@@ -12,7 +12,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_minila(
- 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, _______, _______,
+ QK_BOOT, 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_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
_______, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_RMOD, _______, BL_DEC, BL_TOGG, BL_INC, _______, _______, _______, _______, _______, _______, KC_VOLU, _______,
diff --git a/keyboards/playkbtw/pk64rgb/config.h b/keyboards/playkbtw/pk64rgb/config.h
index 0e63f9204d..2ec5f15a39 100644
--- a/keyboards/playkbtw/pk64rgb/config.h
+++ b/keyboards/playkbtw/pk64rgb/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x706B // Play Keyboard
-#define PRODUCT_ID 0x3634
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Play Keyboard
-#define PRODUCT Play Keyboard 64 RGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/playkbtw/pk64rgb/info.json b/keyboards/playkbtw/pk64rgb/info.json
index bc973f1b4c..063b58419a 100644
--- a/keyboards/playkbtw/pk64rgb/info.json
+++ b/keyboards/playkbtw/pk64rgb/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "PK64RGB",
+ "manufacturer": "Play Keyboard",
"url": "",
"maintainer": "yj7272098",
+ "usb": {
+ "vid": "0x706B",
+ "pid": "0x3634",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_64_ansi": {
"layout": [
diff --git a/keyboards/playkbtw/pk64rgb/readme.md b/keyboards/playkbtw/pk64rgb/readme.md
index 29871af7a6..c5061bc0cc 100644
--- a/keyboards/playkbtw/pk64rgb/readme.md
+++ b/keyboards/playkbtw/pk64rgb/readme.md
@@ -18,7 +18,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
You can get into bootloader by pressing the reset button from the back of PCB.
diff --git a/keyboards/ploopyco/mouse/config.h b/keyboards/ploopyco/mouse/config.h
index 98fc81bb05..6a6713557b 100644
--- a/keyboards/ploopyco/mouse/config.h
+++ b/keyboards/ploopyco/mouse/config.h
@@ -20,13 +20,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5043
-#define PRODUCT_ID 0x4D6F
-#define DEVICE_VER 0x0001
-#define MANUFACTURER PloopyCo
-#define PRODUCT Mouse
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 8
@@ -48,7 +41,7 @@
// These pins are not broken out, and cannot be used normally.
// They are set as output and pulled high, by default
-#define UNUSED_PINS \
+#define UNUSABLE_PINS \
{ B4, D6, F1, F5, F6, F7 }
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
@@ -77,5 +70,5 @@
// #define DEBUG_LED_PIN F7
-/* PMW3360 Settings */
-#define PMW3360_CS_PIN B0
+/* PMW33XX Settings */
+#define PMW33XX_CS_PIN B0
diff --git a/keyboards/ploopyco/mouse/info.json b/keyboards/ploopyco/mouse/info.json
index 593583176d..f672336c25 100644
--- a/keyboards/ploopyco/mouse/info.json
+++ b/keyboards/ploopyco/mouse/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "PloopyCo Mouse",
+ "keyboard_name": "Mouse",
+ "manufacturer": "PloopyCo",
"url": "www.ploopy.co",
"maintainer": "drashna",
+ "usb": {
+ "vid": "0x5043",
+ "pid": "0x4D6F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ploopyco/mouse/keymaps/drag_scroll/keymap.c b/keyboards/ploopyco/mouse/keymaps/drag_scroll/keymap.c
index da328fff04..a072dfceca 100644
--- a/keyboards/ploopyco/mouse/keymaps/drag_scroll/keymap.c
+++ b/keyboards/ploopyco/mouse/keymaps/drag_scroll/keymap.c
@@ -22,6 +22,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(/* Base */
C(KC_C), KC_BTN1, KC_BTN3, LT(1, KC_BTN2), C(KC_V), KC_BTN4, KC_BTN5, DPI_CONFIG),
[1] = LAYOUT(/* Base */
- _______, DRAG_SCROLL, _______, _______, _______, _______, _______, RESET),
+ _______, DRAG_SCROLL, _______, _______, _______, _______, _______, QK_BOOT),
};
diff --git a/keyboards/ploopyco/mouse/keymaps/drashna/config.h b/keyboards/ploopyco/mouse/keymaps/drashna/config.h
index 9aa9a40769..1dc1b7695f 100644
--- a/keyboards/ploopyco/mouse/keymaps/drashna/config.h
+++ b/keyboards/ploopyco/mouse/keymaps/drashna/config.h
@@ -28,4 +28,4 @@
#define RGBLIGHT_EFFECT_TWINKLE
#define RGBLIGHT_SLEEP
-#define MOUSE_EXT_REPORT
+#define MOUSE_EXTENDED_REPORT
diff --git a/keyboards/ploopyco/mouse/keymaps/drashna/keymap.c b/keyboards/ploopyco/mouse/keymaps/drashna/keymap.c
index ee0f653dee..056a1f7903 100644
--- a/keyboards/ploopyco/mouse/keymaps/drashna/keymap.c
+++ b/keyboards/ploopyco/mouse/keymaps/drashna/keymap.c
@@ -19,20 +19,23 @@
// safe range starts at `PLOOPY_SAFE_RANGE` instead.
+// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(/* Base */
+ [0] = LAYOUT(
C(KC_C), KC_BTN1, KC_BTN3, KC_BTN2, MO(1), KC_BTN4, KC_BTN5, DPI_CONFIG),
- [1] = LAYOUT(/* Base */
+ [1] = LAYOUT(
RGB_HUI, RGB_MOD, RGB_TOG, RGB_RMOD, MO(1), KC_VOLU, KC_VOLD, QK_BOOT)
-
};
+// clang-format on
+#ifdef RGBLIGHT_ENABLE
void eeconkfig_init_user(void) {
rgblight_enable();
-#ifdef RGBLIGHT_EFFECT_TWINKLE
- rgblight_mode(RGBLIGHT_MODE_TWINKLE+5);
-#else
- rgblight_mode(RGBLIGHT_MODE_BREATHING+5);
-#endif
+# ifdef RGBLIGHT_EFFECT_TWINKLE
+ rgblight_mode(RGBLIGHT_MODE_TWINKLE + 5);
+# else
+ rgblight_mode(RGBLIGHT_MODE_BREATHING + 5);
+# endif
rgblight_sethsv(HSV_MAGENTA);
}
+#endif
diff --git a/keyboards/ploopyco/mouse/keymaps/drashna/rules.mk b/keyboards/ploopyco/mouse/keymaps/drashna/rules.mk
index 655dbfdfa0..bd3927a4b1 100644
--- a/keyboards/ploopyco/mouse/keymaps/drashna/rules.mk
+++ b/keyboards/ploopyco/mouse/keymaps/drashna/rules.mk
@@ -1,5 +1,6 @@
USER_NAME := not_drashna
+BOOTLOADER = qmk-hid
RGBLIGHT_ENABLE = yes
CONSOLE_ENABLE = no
-LTO_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/ploopyco/mouse/mouse.c b/keyboards/ploopyco/mouse/mouse.c
index 25ebd1ee2d..19bc17738e 100644
--- a/keyboards/ploopyco/mouse/mouse.c
+++ b/keyboards/ploopyco/mouse/mouse.c
@@ -111,7 +111,7 @@ void process_wheel(void) {
int dir = opt_encoder_handler(p1, p2);
if (dir == 0) return;
- encoder_update_kb(0, dir == 1);
+ encoder_update_kb(0, dir > 0);
}
report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
@@ -199,8 +199,8 @@ void keyboard_pre_init_kb(void) {
* pathways to ground. If you're messing with this, know this: driving ANY
* of these pins high will cause a short. On the MCU. Ka-blooey.
*/
-#ifdef UNUSED_PINS
- const pin_t unused_pins[] = UNUSED_PINS;
+#ifdef UNUSABLE_PINS
+ const pin_t unused_pins[] = UNUSABLE_PINS;
for (uint8_t i = 0; i < (sizeof(unused_pins) / sizeof(pin_t)); i++) {
setPinOutput(unused_pins[i]);
diff --git a/keyboards/ploopyco/opt_encoder.c b/keyboards/ploopyco/opt_encoder.c
index 8698351c26..226db0a809 100644
--- a/keyboards/ploopyco/opt_encoder.c
+++ b/keyboards/ploopyco/opt_encoder.c
@@ -15,6 +15,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "opt_encoder.h"
+#include <stdbool.h>
+
+enum State { HIHI, HILO, LOLO, LOHI };
enum State state;
@@ -44,6 +47,12 @@ int arHighA[SCROLLER_AR_SIZE];
int arLowB[SCROLLER_AR_SIZE];
int arHighB[SCROLLER_AR_SIZE];
+void calculateThresholdA(int curA);
+void calculateThresholdB(int curB);
+int calculateThreshold(int cur, int* low, int* high, bool* cLow, bool* cHigh, int arLow[], int arHigh[], int* lowIndex, int* highIndex, bool* lowOverflow, bool* highOverflow);
+int thresholdEquation(int lo, int hi);
+void incrementIndex(int* index, bool* ovflw);
+
/* Setup function for the scroll wheel. Initializes
the relevant variables. */
void opt_encoder_init(void) {
@@ -70,7 +79,7 @@ void opt_encoder_init(void) {
scrollThresholdB = 0;
}
-int opt_encoder_handler(int curA, int curB) {
+int8_t opt_encoder_handler(uint16_t curA, uint16_t curB) {
if (lowOverflowA == false || highOverflowA == false) calculateThresholdA(curA);
if (lowOverflowB == false || highOverflowB == false) calculateThresholdB(curB);
diff --git a/keyboards/ploopyco/opt_encoder.h b/keyboards/ploopyco/opt_encoder.h
index 17c25bc86f..8e5159f91c 100644
--- a/keyboards/ploopyco/opt_encoder.h
+++ b/keyboards/ploopyco/opt_encoder.h
@@ -16,7 +16,7 @@
*/
#pragma once
-#include <stdbool.h>
+#include <stdint.h>
#ifndef SCROLLER_AR_SIZE
# define SCROLLER_AR_SIZE 31
@@ -26,41 +26,7 @@
# define SCROLL_THRESH_RANGE_LIM 10
#endif
-enum State { HIHI, HILO, LOLO, LOHI };
-
-extern enum State state;
-
-/* Variables used for scroll wheel functionality. */
-extern bool lohif;
-extern bool hilof;
-extern int lowA;
-extern int highA;
-extern bool cLowA;
-extern bool cHighA;
-extern int lowIndexA;
-extern int highIndexA;
-extern bool lowOverflowA;
-extern bool highOverflowA;
-extern int lowB;
-extern int highB;
-extern bool cLowB;
-extern bool cHighB;
-extern int lowIndexB;
-extern int highIndexB;
-extern bool lowOverflowB;
-extern bool highOverflowB;
-extern int scrollThresholdA;
-extern int scrollThresholdB;
-extern int arLowA[SCROLLER_AR_SIZE];
-extern int arHighA[SCROLLER_AR_SIZE];
-extern int arLowB[SCROLLER_AR_SIZE];
-extern int arHighB[SCROLLER_AR_SIZE];
-
-void calculateThresholdA(int curA);
-void calculateThresholdB(int curB);
-int calculateThreshold(int cur, int* low, int* high, bool* cLow, bool* cHigh, int arLow[], int arHigh[], int* lowIndex, int* highIndex, bool* lowOverflow, bool* highOverflow);
-int thresholdEquation(int lo, int hi);
-void incrementIndex(int* index, bool* ovflw);
-
void opt_encoder_init(void);
-int opt_encoder_handler(int curA, int curB);
+/* Return the rotation direction, positive value means clockwise, negative value
+ * means counter-clockwise */
+int8_t opt_encoder_handler(uint16_t curA, uint16_t curB);
diff --git a/keyboards/ploopyco/opt_encoder_simple.c b/keyboards/ploopyco/opt_encoder_simple.c
new file mode 100644
index 0000000000..c30deb9ca4
--- /dev/null
+++ b/keyboards/ploopyco/opt_encoder_simple.c
@@ -0,0 +1,147 @@
+/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+ * Copyright 2020 Ploopy Corporation
+ * Copyright 2022 Leorize <leorize+oss@disroot.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 "opt_encoder.h"
+#include "util.h"
+#include <stdbool.h>
+#include <stdint.h>
+
+/* An alternative implementation for interpreting the encoder status:
+ *
+ * From graphing the phototransistor voltages, the peak and baseline appears to
+ * be rather stable. Therefore there is no need to average them out, and instead
+ * just simply store the min and max voltages of each phototransistor.
+ *
+ * This algorithm then distinguish between high and low states by employing an
+ * approach similar to a Schmitt trigger: a low and high threshold is defined
+ * for each phototransistor based on their min and max voltages.
+ *
+ * Currently, the thresholds are:
+ *
+ * * High threshold: The upper quarter of the voltage range.
+ * * Low threshold: The lower quarter of the voltage range.
+ *
+ * these thresholds are defined for each phototransistor.
+ *
+ * For a state to cross from high -> low, it must fall below the low threshold.
+ * Similarly, to cross from low -> high, the voltage must be higher than the
+ * high threshold.
+ *
+ * Having two distinct thresholds filters out the bulk of noise from the
+ * phototransistors.
+ *
+ * For converting the resulting high and low signals into rotation, a simple
+ * quadrature decoder is used.
+ */
+
+/* The minimum value returned by the ADC */
+#define ENCODER_MIN 0
+/* The maximum value returned by the ADC */
+#define ENCODER_MAX 1023
+
+/* Utilities for composing the encoder state */
+#define MAKE_STATE(HI_A, HI_B) (((uint8_t)((HI_A) & 0x1) << 1) | ((uint8_t)((HI_B) & 0x1)))
+#define STATE_A(st) ((st & 0x2) >> 1)
+#define STATE_B(st) (st & 0x1)
+#define LOLO MAKE_STATE(0, 0)
+#define HILO MAKE_STATE(1, 0)
+#define LOHI MAKE_STATE(0, 1)
+
+typedef enum {
+ CALIBRATION, /* Recalibrate encoder state by waiting for a 01 -> 00 or 10 -> 00 transistion */
+ DECODE /* Translate changes in the encoder state into movement */
+} encoder_state_t;
+
+static encoder_state_t mode;
+
+static uint8_t lastState;
+
+static uint16_t lowA;
+static uint16_t highA;
+static uint16_t lowB;
+static uint16_t highB;
+
+#define MOVE_UP 1
+#define MOVE_DOWN -1
+#define MOVE_NONE 0
+#define MOVE_ERR 0x7F
+static const uint8_t movement[] = {
+ // 00 -> 00, 01, 10, 11
+ MOVE_NONE, MOVE_DOWN, MOVE_UP, MOVE_ERR,
+ // 01 -> 00, 01, 10, 11
+ MOVE_UP, MOVE_NONE, MOVE_ERR, MOVE_DOWN,
+ // 10 -> 00, 01, 10, 11
+ MOVE_DOWN, MOVE_ERR, MOVE_NONE, MOVE_UP,
+ // 11 -> 00, 01, 10, 11
+ MOVE_ERR, MOVE_UP, MOVE_DOWN, MOVE_NONE
+};
+
+void opt_encoder_init(void) {
+ mode = CALIBRATION;
+ lastState = 0;
+
+ lowA = ENCODER_MAX;
+ lowB = ENCODER_MAX;
+ highA = ENCODER_MIN;
+ highB = ENCODER_MIN;
+}
+
+int8_t opt_encoder_handler(uint16_t encA, uint16_t encB) {
+ int8_t result = 0;
+
+ highA = MAX(encA, highA);
+ lowA = MIN(encA, lowA);
+ highB = MAX(encB, highB);
+ lowB = MIN(encB, lowB);
+
+ /* Only compute the thresholds after a large enough range is established */
+ if (highA - lowA > SCROLL_THRESH_RANGE_LIM && highB - lowB > SCROLL_THRESH_RANGE_LIM) {
+ const int16_t lowThresholdA = (highA + lowA) / 4;
+ const int16_t highThresholdA = (highA + lowA) - lowThresholdA;
+ const int16_t lowThresholdB = (highB + lowB) / 4;
+ const int16_t highThresholdB = (highB + lowB) - lowThresholdB;
+
+ uint8_t state = MAKE_STATE(
+ STATE_A(lastState) ? encA > lowThresholdA : encA > highThresholdA,
+ STATE_B(lastState) ? encB > lowThresholdB : encB > highThresholdB
+ );
+
+ switch (mode) {
+ case CALIBRATION:
+ if ((lastState == HILO && state == LOLO)
+ || (lastState == LOHI && state == LOLO))
+ mode = DECODE;
+ else
+ mode = CALIBRATION;
+ break;
+
+ case DECODE:
+ result = movement[lastState * 4 + state];
+ /* If we detect a state change that should not be possible,
+ * then the wheel might have moved too fast and we need to
+ * recalibrate the encoder position. */
+ mode = result == MOVE_ERR ? CALIBRATION : mode;
+ result = result == MOVE_ERR ? MOVE_NONE : result;
+
+ break;
+ }
+
+ lastState = state;
+ }
+
+ return result;
+}
diff --git a/keyboards/ploopyco/trackball/config.h b/keyboards/ploopyco/trackball/config.h
index dd068e4838..54a301b0d2 100644
--- a/keyboards/ploopyco/trackball/config.h
+++ b/keyboards/ploopyco/trackball/config.h
@@ -20,12 +20,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5043
-#define PRODUCT_ID 0x5442
-#define DEVICE_VER 0x0001
-#define PRODUCT Trackball
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 5
@@ -53,6 +47,6 @@
// If board has a debug LED, you can enable it by defining this
// #define DEBUG_LED_PIN F7
-/* PMW3360 Settings */
-#define PMW3360_CS_PIN B0
+/* PMW33XX Settings */
+#define PMW33XX_CS_PIN B0
#define POINTING_DEVICE_INVERT_Y
diff --git a/keyboards/ploopyco/trackball/info.json b/keyboards/ploopyco/trackball/info.json
index d144261c96..feb458e1c5 100644
--- a/keyboards/ploopyco/trackball/info.json
+++ b/keyboards/ploopyco/trackball/info.json
@@ -1,8 +1,13 @@
{
- "keyboard_name": "PloopyCo Trackball",
+ "keyboard_name": "Trackball",
+ "manufacturer": "PloopyCo",
"url": "www.ploopy.co",
"maintainer": "drashna",
- "manufacturer": "Ploopy Corporation",
+ "usb": {
+ "vid": "0x5043",
+ "pid": "0x5442",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ploopyco/trackball/rev1/config.h b/keyboards/ploopyco/trackball/rev1/config.h
index 2908f09602..3db085baf2 100644
--- a/keyboards/ploopyco/trackball/rev1/config.h
+++ b/keyboards/ploopyco/trackball/rev1/config.h
@@ -35,7 +35,7 @@
// These pins are not broken out, and cannot be used normally.
// They are set as output and pulled high, by default
-#define UNUSED_PINS \
+#define UNUSABLE_PINS \
{ D1, D3, B4, B6, B7, D6, C7, F6, F5, F3, F7 }
// If board has a debug LED, you can enable it by defining this
diff --git a/keyboards/ploopyco/trackball/rev1_005/config.h b/keyboards/ploopyco/trackball/rev1_005/config.h
index 83e70181de..321e3004d1 100644
--- a/keyboards/ploopyco/trackball/rev1_005/config.h
+++ b/keyboards/ploopyco/trackball/rev1_005/config.h
@@ -35,7 +35,7 @@
// These pins are not broken out, and cannot be used normally.
// They are set as output and pulled high, by default
-#define UNUSED_PINS \
+#define UNUSABLE_PINS \
{ D1, D3, B4, B7, D6, C7, F6, F5, F3, F7 }
// If board has a debug LED, you can enable it by defining this
diff --git a/keyboards/ploopyco/trackball/trackball.c b/keyboards/ploopyco/trackball/trackball.c
index f819958734..786b40f9e8 100644
--- a/keyboards/ploopyco/trackball/trackball.c
+++ b/keyboards/ploopyco/trackball/trackball.c
@@ -112,14 +112,19 @@ void process_wheel(void) {
int dir = opt_encoder_handler(p1, p2);
if (dir == 0) return;
- encoder_update_kb(0, dir == 1);
+ encoder_update_kb(0, dir > 0);
}
report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
process_wheel();
if (is_drag_scroll) {
+#ifdef PLOOPY_DRAGSCROLL_H_INVERT
+ // Invert horizontal scroll direction
+ mouse_report.h = -mouse_report.x;
+#else
mouse_report.h = mouse_report.x;
+#endif
#ifdef PLOOPY_DRAGSCROLL_INVERT
// Invert vertical scroll direction
mouse_report.v = -mouse_report.y;
@@ -199,8 +204,8 @@ void keyboard_pre_init_kb(void) {
* pathways to ground. If you're messing with this, know this: driving ANY
* of these pins high will cause a short. On the MCU. Ka-blooey.
*/
-#ifdef UNUSED_PINS
- const pin_t unused_pins[] = UNUSED_PINS;
+#ifdef UNUSABLE_PINS
+ const pin_t unused_pins[] = UNUSABLE_PINS;
for (uint8_t i = 0; i < (sizeof(unused_pins) / sizeof(pin_t)); i++) {
setPinOutput(unused_pins[i]);
diff --git a/keyboards/ploopyco/trackball_mini/config.h b/keyboards/ploopyco/trackball_mini/config.h
index 9c53f1f501..bf7570f364 100644
--- a/keyboards/ploopyco/trackball_mini/config.h
+++ b/keyboards/ploopyco/trackball_mini/config.h
@@ -21,12 +21,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5043
-#define PRODUCT_ID 0x1EAB
-#define DEVICE_VER 0x0001
-#define PRODUCT Trackball Mini
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 5
diff --git a/keyboards/ploopyco/trackball_mini/info.json b/keyboards/ploopyco/trackball_mini/info.json
index 67d62cc2b9..f465a7a21e 100644
--- a/keyboards/ploopyco/trackball_mini/info.json
+++ b/keyboards/ploopyco/trackball_mini/info.json
@@ -1,8 +1,13 @@
{
- "keyboard_name": "Ploopy Trackball Mini",
+ "keyboard_name": "Trackball Mini",
+ "manufacturer": "PloopyCo",
"url": "www.ploopy.co",
"maintainer": "ploopyco",
- "manufacturer": "Ploopy Corporation",
+ "usb": {
+ "vid": "0x5043",
+ "pid": "0x1EAB",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ploopyco/trackball_mini/rev1_001/config.h b/keyboards/ploopyco/trackball_mini/rev1_001/config.h
index 06720b8fdf..d4c9d23bec 100644
--- a/keyboards/ploopyco/trackball_mini/rev1_001/config.h
+++ b/keyboards/ploopyco/trackball_mini/rev1_001/config.h
@@ -36,5 +36,5 @@
// These pins are not broken out, and cannot be used normally.
// They are set as output and pulled high, by default
-#define UNUSED_PINS \
+#define UNUSABLE_PINS \
{ B5, C7, D0, D1, D3, D5, D6, F1, F3, F5, F6, F7 }
diff --git a/keyboards/ploopyco/trackball_mini/rev1_002/config.h b/keyboards/ploopyco/trackball_mini/rev1_002/config.h
index 06720b8fdf..d4c9d23bec 100644
--- a/keyboards/ploopyco/trackball_mini/rev1_002/config.h
+++ b/keyboards/ploopyco/trackball_mini/rev1_002/config.h
@@ -36,5 +36,5 @@
// These pins are not broken out, and cannot be used normally.
// They are set as output and pulled high, by default
-#define UNUSED_PINS \
+#define UNUSABLE_PINS \
{ B5, C7, D0, D1, D3, D5, D6, F1, F3, F5, F6, F7 }
diff --git a/keyboards/ploopyco/trackball_mini/trackball_mini.c b/keyboards/ploopyco/trackball_mini/trackball_mini.c
index e4b4a47c2b..df13912af4 100644
--- a/keyboards/ploopyco/trackball_mini/trackball_mini.c
+++ b/keyboards/ploopyco/trackball_mini/trackball_mini.c
@@ -111,10 +111,10 @@ void process_wheel(void) {
if (debug_encoder) dprintf("OPT1: %d, OPT2: %d\n", p1, p2);
- uint8_t dir = opt_encoder_handler(p1, p2);
+ int8_t dir = opt_encoder_handler(p1, p2);
if (dir == 0) return;
- encoder_update_kb(0, dir == 1);
+ encoder_update_kb(0, dir > 0);
}
void pointing_device_init_kb(void) {
@@ -200,8 +200,8 @@ void keyboard_pre_init_kb(void) {
* pathways to ground. If you're messing with this, know this: driving ANY
* of these pins high will cause a short. On the MCU. Ka-blooey.
*/
-#ifdef UNUSED_PINS
- const pin_t unused_pins[] = UNUSED_PINS;
+#ifdef UNUSABLE_PINS
+ const pin_t unused_pins[] = UNUSABLE_PINS;
for (uint8_t i = 0; i < (sizeof(unused_pins) / sizeof(pin_t)); i++) {
setPinOutput(unused_pins[i]);
diff --git a/keyboards/ploopyco/trackball_nano/config.h b/keyboards/ploopyco/trackball_nano/config.h
index 985ddc09ba..fb340a4ec3 100644
--- a/keyboards/ploopyco/trackball_nano/config.h
+++ b/keyboards/ploopyco/trackball_nano/config.h
@@ -21,12 +21,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5043
-#define PRODUCT_ID 0x54A3
-#define DEVICE_VER 0x0001
-#define PRODUCT Trackball Nano
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 1
diff --git a/keyboards/ploopyco/trackball_nano/info.json b/keyboards/ploopyco/trackball_nano/info.json
index a788ce9eb1..cf9b78a4f3 100644
--- a/keyboards/ploopyco/trackball_nano/info.json
+++ b/keyboards/ploopyco/trackball_nano/info.json
@@ -1,8 +1,13 @@
{
- "keyboard_name": "Ploopy Trackball Nano",
+ "keyboard_name": "Trackball Nano",
+ "manufacturer": "PloopyCo",
"url": "www.ploopy.co",
"maintainer": "ploopyco",
- "manufacturer": "Ploopy Corporation",
+ "usb": {
+ "vid": "0x5043",
+ "pid": "0x54A3",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ploopyco/trackball_nano/keymaps/lkbm/keymap.c b/keyboards/ploopyco/trackball_nano/keymaps/lkbm/keymap.c
new file mode 100644
index 0000000000..6c3a38d127
--- /dev/null
+++ b/keyboards/ploopyco/trackball_nano/keymaps/lkbm/keymap.c
@@ -0,0 +1,167 @@
+/* Copyright 2022 Aidan Gauland
+ * Copyright 2021 Colin Lam (Ploopy Corporation)
+ * Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+ * Copyright 2019 Sunjun Kim
+ * Copyright 2019 Hiroyuki Okada
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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"
+
+#define NUM_LOCK_BITMASK 0b01
+#define CAPS_LOCK_BITMASK 0b10
+
+// World record for fastest index finger tapping is 1092 taps per minute, which
+// is 55ms for a single tap.
+// https://recordsetter.com/world-record/index-finger-taps-minute/46066
+#define LED_CMD_TIMEOUT 25
+#define DELTA_X_THRESHOLD 60
+#define DELTA_Y_THRESHOLD 15
+
+typedef enum {
+ // You could theoretically define 0b00 and send it by having a macro send
+ // the second tap after LED_CMD_TIMEOUT has elapsed.
+ // CMD_EXTRA = 0b00,
+ TG_SCROLL = 0b01,
+ CYC_DPI = 0b10,
+ CMD_RESET = 0b11 // CMD_ prefix to avoid clash with QMK macro
+} led_cmd_t;
+
+// State
+static bool scroll_enabled = false;
+static bool num_lock_state = false;
+static bool caps_lock_state = false;
+static bool in_cmd_window = false;
+static int8_t delta_x = 0;
+static int8_t delta_y = 0;
+
+typedef struct {
+ led_cmd_t led_cmd;
+ uint8_t num_lock_count;
+ uint8_t caps_lock_count;
+} cmd_window_state_t;
+
+// Dummy
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {{{KC_NO}}};
+
+report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
+ if (scroll_enabled) {
+ delta_x += mouse_report.x;
+ delta_y += mouse_report.y;
+
+ if (delta_x > DELTA_X_THRESHOLD) {
+ mouse_report.h = 1;
+ delta_x = 0;
+ } else if (delta_x < -DELTA_X_THRESHOLD) {
+ mouse_report.h = -1;
+ delta_x = 0;
+ }
+
+ if (delta_y > DELTA_Y_THRESHOLD) {
+ mouse_report.v = -1;
+ delta_y = 0;
+ } else if (delta_y < -DELTA_Y_THRESHOLD) {
+ mouse_report.v = 1;
+ delta_y = 0;
+ }
+ mouse_report.x = 0;
+ mouse_report.y = 0;
+ }
+ return mouse_report;
+}
+
+void keyboard_post_init_user(void) {
+ num_lock_state = host_keyboard_led_state().num_lock;
+ caps_lock_state = host_keyboard_led_state().caps_lock;
+}
+
+uint32_t command_timeout(uint32_t trigger_time, void *cb_arg) {
+ cmd_window_state_t *cmd_window_state = (cmd_window_state_t *)cb_arg;
+# ifdef CONSOLE_ENABLE
+ uprintf("Received command 0b%02b (", cmd_window_state->led_cmd);
+# endif
+ switch (cmd_window_state->led_cmd) {
+ case TG_SCROLL:
+# ifdef CONSOLE_ENABLE
+ uprint("TG_SCROLL)\n");
+# endif
+ scroll_enabled = !scroll_enabled;
+ break;
+ case CYC_DPI:
+# ifdef CONSOLE_ENABLE
+ uprint("CYC_DPI)\n");
+# endif
+ cycle_dpi();
+ break;
+ case CMD_RESET:
+# ifdef CONSOLE_ENABLE
+ uprint("QK_BOOT)\n");
+# endif
+ reset_keyboard();
+ break;
+ default:
+# ifdef CONSOLE_ENABLE
+ uprint("unknown)\n");
+# endif
+ // Ignore unrecognised commands.
+ break;
+ }
+ cmd_window_state->led_cmd = 0;
+ cmd_window_state->num_lock_count = 0;
+ cmd_window_state->caps_lock_count = 0;
+ in_cmd_window = false;
+
+ return 0; // Don't repeat
+}
+
+bool led_update_user(led_t led_state) {
+ static cmd_window_state_t cmd_window_state = {
+ .led_cmd = 0b00,
+ .num_lock_count = 0,
+ .caps_lock_count = 0
+ };
+
+ // Start timer to end command window if we are not already in the middle of
+ // one.
+ if (!in_cmd_window) {
+ in_cmd_window = true;
+ defer_exec(LED_CMD_TIMEOUT, command_timeout, &cmd_window_state);
+ }
+
+ // Set num lock and caps lock bits when each is toggled on and off within
+ // the window.
+ if (led_state.num_lock != num_lock_state) {
+ cmd_window_state.num_lock_count++;
+
+ if (cmd_window_state.num_lock_count == 2) {
+ cmd_window_state.led_cmd |= NUM_LOCK_BITMASK;
+ cmd_window_state.num_lock_count = 0;
+ }
+ }
+
+ if (led_state.caps_lock != caps_lock_state) {
+ cmd_window_state.caps_lock_count++;
+
+ if (cmd_window_state.caps_lock_count == 2) {
+ cmd_window_state.led_cmd |= CAPS_LOCK_BITMASK;
+ cmd_window_state.caps_lock_count = 0;
+ }
+ }
+
+ // Keep our copy of the LED states in sync with the host.
+ num_lock_state = led_state.num_lock;
+ caps_lock_state = led_state.caps_lock;
+ return true;
+}
diff --git a/keyboards/ploopyco/trackball_nano/keymaps/lkbm/readme.md b/keyboards/ploopyco/trackball_nano/keymaps/lkbm/readme.md
new file mode 100644
index 0000000000..3b2f698e52
--- /dev/null
+++ b/keyboards/ploopyco/trackball_nano/keymaps/lkbm/readme.md
@@ -0,0 +1,2 @@
+# The keymap that takes commands as LED-Key BitMasks (lkbm)
+Based on [maddie](../maddie), this keymap lets you send a 2-bit command by having a macro on your keyboard tap `KC_NUM_LOCK` and `KC_CAPS_LOCK` on and off within a very short window (25ms by default) to represent bits 1 and 2 respectively. The keymap uses this to allow toggling between sending mouse-movement events and scrolling events; cycling DPI presets, and resetting to the bootloader, so you can reflash without having to unscrew your Ploopy Nano.
diff --git a/keyboards/ploopyco/trackball_nano/keymaps/lkbm/rules.mk b/keyboards/ploopyco/trackball_nano/keymaps/lkbm/rules.mk
new file mode 100644
index 0000000000..199bad85f3
--- /dev/null
+++ b/keyboards/ploopyco/trackball_nano/keymaps/lkbm/rules.mk
@@ -0,0 +1 @@
+DEFERRED_EXEC_ENABLE = yes
diff --git a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c
index 14a7804cc2..5e9b3e8e19 100644
--- a/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c
+++ b/keyboards/ploopyco/trackball_nano/keymaps/maddie/keymap.c
@@ -27,6 +27,10 @@
bool scroll_enabled = false;
bool lock_state = false;
+// State
+static int8_t delta_x = 0;
+static int8_t delta_y = 0;
+
// Dummy
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {{{ KC_NO }}};
diff --git a/keyboards/ploopyco/trackball_nano/rev1_001/config.h b/keyboards/ploopyco/trackball_nano/rev1_001/config.h
index 6d265d7233..3bde88487a 100644
--- a/keyboards/ploopyco/trackball_nano/rev1_001/config.h
+++ b/keyboards/ploopyco/trackball_nano/rev1_001/config.h
@@ -33,5 +33,5 @@
// These pins are not broken out, and cannot be used normally.
// They are set as output and pulled high, by default
-#define UNUSED_PINS \
+#define UNUSABLE_PINS \
{ B5, B6, C7, D0, D1, D2, D3, D4, D5, D6, D7, E6, F1, F3, F5, F6, F7 }
diff --git a/keyboards/ploopyco/trackball_nano/trackball_nano.c b/keyboards/ploopyco/trackball_nano/trackball_nano.c
index e208a728cb..eb1d8e10b0 100644
--- a/keyboards/ploopyco/trackball_nano/trackball_nano.c
+++ b/keyboards/ploopyco/trackball_nano/trackball_nano.c
@@ -52,6 +52,14 @@ keyboard_config_t keyboard_config;
uint16_t dpi_array[] = PLOOPY_DPI_OPTIONS;
#define DPI_OPTION_SIZE (sizeof(dpi_array) / sizeof(uint16_t))
+void cycle_dpi(void) {
+ keyboard_config.dpi_config = (keyboard_config.dpi_config + 1) % DPI_OPTION_SIZE;
+ pointing_device_set_cpi(dpi_array[keyboard_config.dpi_config]);
+#ifdef CONSOLE_ENABLE
+ uprintf("DPI is now %d\n", dpi_array[keyboard_config.dpi_config]);
+#endif
+}
+
// TODO: Implement libinput profiles
// https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html
// Compile time accel selection
@@ -78,8 +86,8 @@ void keyboard_pre_init_kb(void) {
* pathways to ground. If you're messing with this, know this: driving ANY
* of these pins high will cause a short. On the MCU. Ka-blooey.
*/
-#ifdef UNUSED_PINS
- const pin_t unused_pins[] = UNUSED_PINS;
+#ifdef UNUSABLE_PINS
+ const pin_t unused_pins[] = UNUSABLE_PINS;
for (uint8_t i = 0; i < (sizeof(unused_pins) / sizeof(pin_t)); i++) {
setPinOutput(unused_pins[i]);
diff --git a/keyboards/ploopyco/trackball_nano/trackball_nano.h b/keyboards/ploopyco/trackball_nano/trackball_nano.h
index 5f16e96c41..d971627fc6 100644
--- a/keyboards/ploopyco/trackball_nano/trackball_nano.h
+++ b/keyboards/ploopyco/trackball_nano/trackball_nano.h
@@ -36,3 +36,5 @@ enum ploopy_keycodes {
DPI_CONFIG = SAFE_RANGE,
PLOOPY_SAFE_RANGE,
};
+
+void cycle_dpi(void);
diff --git a/keyboards/pluckey/config.h b/keyboards/pluckey/config.h
index f98318437b..152b8c3169 100644
--- a/keyboards/pluckey/config.h
+++ b/keyboards/pluckey/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xF100
-#define PRODUCT_ID 0x91CE
-#define DEVICE_VER 0x0001
-#define MANUFACTURER floookay
-#define PRODUCT pluckey
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4, F5, F6, B6, B5 }
#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6, F7 }
-#define UNUSED_PINS { F4, B1 }
#define DIODE_DIRECTION COL2ROW
/* encoder support */
diff --git a/keyboards/pluckey/info.json b/keyboards/pluckey/info.json
index de58bee802..594cc6a7d3 100644
--- a/keyboards/pluckey/info.json
+++ b/keyboards/pluckey/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "pluckey",
+ "manufacturer": "floookay",
"url": "https://github.com/floookay/pluckey",
"maintainer": "floookay",
+ "usb": {
+ "vid": "0xF100",
+ "pid": "0x91CE",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
diff --git a/keyboards/pluckey/keymaps/manna-harbour_miryoku/config.h b/keyboards/pluckey/keymaps/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..19976c2c2d
--- /dev/null
+++ b/keyboards/pluckey/keymaps/manna-harbour_miryoku/config.h
@@ -0,0 +1,22 @@
+// Copyright 2021 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \
+XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX, \
+XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX, \
+XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
+ XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \
+)
diff --git a/keyboards/pluckey/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/pluckey/keymaps/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..3da5ed16ae
--- /dev/null
+++ b/keyboards/pluckey/keymaps/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2021 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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/plum47/info.json b/keyboards/plum47/info.json
new file mode 100644
index 0000000000..9ad37d1768
--- /dev/null
+++ b/keyboards/plum47/info.json
@@ -0,0 +1,80 @@
+{
+ "manufacturer": "Masayuki Takagi",
+ "keyboard_name": "plum47",
+ "maintainer": "awh-tokyo",
+ "bootloader": "caterina",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6", "B5", "B4", "E6", "D7"],
+ "rows": ["D1", "D0", "D4", "C6"]
+ },
+ "processor": "atmega32u4",
+ "url": "ihttps://github.com/takagi/plum47_buildguide",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x5E14",
+ "vid": "0xFEED"
+ },
+ "debounce": 5,
+ "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": [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": [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": [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, "w": 2 },
+ { "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 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/plum47/keymaps/default/keymap.c b/keyboards/plum47/keymaps/default/keymap.c
new file mode 100644
index 0000000000..dc6642d7f1
--- /dev/null
+++ b/keyboards/plum47/keymaps/default/keymap.c
@@ -0,0 +1,84 @@
+/* Copyright 2020 Masayuki Takagi
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 = 0,
+ _LOWER,
+ _RAISE
+};
+
+#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(
+ 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_NO, 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 | | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | 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, _______, _______, 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 | | |Pg Up |Pg Dn | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | 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_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+)
+
+};
+
diff --git a/keyboards/plum47/keymaps/via/keymap.c b/keyboards/plum47/keymaps/via/keymap.c
new file mode 100644
index 0000000000..8927fa4f76
--- /dev/null
+++ b/keyboards/plum47/keymaps/via/keymap.c
@@ -0,0 +1,92 @@
+/* Copyright 2020 Masayuki Takagi
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 = 0,
+ _LOWER,
+ _RAISE,
+ _BLANK
+};
+
+#define LOWER FN_MO13
+#define RAISE FN_MO23
+
+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(
+ 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_NO, 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 | | | Home | End | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | 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, _______, _______, 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 | | |Pg Up |Pg Dn | |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | | | | | | | | 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_PGUP, KC_PGDN, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
+),
+
+// Blank layer because via needs 4 by default
+[_BLANK] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+};
+
diff --git a/keyboards/plum47/keymaps/via/rules.mk b/keyboards/plum47/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/plum47/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/plum47/readme.md b/keyboards/plum47/readme.md
new file mode 100644
index 0000000000..7e8745249c
--- /dev/null
+++ b/keyboards/plum47/readme.md
@@ -0,0 +1,28 @@
+# plum47
+
+![plum47](https://i.imgur.com/t3rjsWIh.png)
+
+Plum47 is a 4-row, 12-column (47 key) ortholinear keyboard sold domestically in Japan as a
+home build kit. It features MX sockets for hot-swap keyswitch support, and a bezel-less
+acrylic sandwich case. The controller is a Pro Micro.
+
+* Keyboard Developer: [Masayuki Takagi](https://github.com/takagi)
+* Keyboard submitted by [Andrew Hamilton](https://github.com/awh-tokyo)
+* Hardware Supported: plum47 keyboard kit including PCB and Pro Micro controller
+* Hardware Availability: https://shop.yushakobo.jp/products/consign_plum47
+
+Make example for this keyboard (after setting up your build environment):
+
+ make plum47:default
+
+Flashing example for this keyboard:
+
+ make plum47: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 as follows:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
diff --git a/keyboards/plum47/rules.mk b/keyboards/plum47/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/plum47/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/plume/plume65/config.h b/keyboards/plume/plume65/config.h
index b7d91e1023..0a9cf3ceca 100644
--- a/keyboards/plume/plume65/config.h
+++ b/keyboards/plume/plume65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5D66
-#define PRODUCT_ID 0x22CF
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Plume Keyboards LLC
-#define PRODUCT Plume65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { D2, D5, E6, D0, D1 }
#define MATRIX_COL_PINS { B7, F7, C7, C6, B6, F0, B5, F1, B4, F4, D7, F5, D6, F6, D4 }
-#define UNUSED_PINS { }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/plume/plume65/info.json b/keyboards/plume/plume65/info.json
index f41e8eba55..eb9bc6fcd9 100644
--- a/keyboards/plume/plume65/info.json
+++ b/keyboards/plume/plume65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Plume65",
+ "manufacturer": "Plume Keyboards LLC",
"url": "",
"maintainer": "evyd13",
+ "usb": {
+ "vid": "0x5D66",
+ "pid": "0x22CF",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_iso": {
"layout": [
diff --git a/keyboards/plut0nium/0x3e/config.h b/keyboards/plut0nium/0x3e/config.h
index 055fe63ce7..86ec6d2f15 100644
--- a/keyboards/plut0nium/0x3e/config.h
+++ b/keyboards/plut0nium/0x3e/config.h
@@ -19,13 +19,6 @@ 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 0x3E01
-#define DEVICE_VER 0x0001
-#define MANUFACTURER plut0nium
-#define PRODUCT 0x3E
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 13
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, D5, D4, D6, D7, B4, B5, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/plut0nium/0x3e/info.json b/keyboards/plut0nium/0x3e/info.json
index 552dc478c2..8f00fa9a3c 100644
--- a/keyboards/plut0nium/0x3e/info.json
+++ b/keyboards/plut0nium/0x3e/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "0x3E",
+ "manufacturer": "plut0nium",
"url": "",
"maintainer": "plut0nium",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3E01",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/plx/config.h b/keyboards/plx/config.h
index 68708beccf..74cf3dee8f 100644
--- a/keyboards/plx/config.h
+++ b/keyboards/plx/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xE972
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Peac Design
-#define PRODUCT PLX
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/plx/info.json b/keyboards/plx/info.json
index 47f73ada61..be37e4efe0 100644
--- a/keyboards/plx/info.json
+++ b/keyboards/plx/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "PLX",
+ "manufacturer": "Peac Design",
"url": "https://peac.design/",
"maintainer": "2Moons-JP",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE972",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_60_ansi_tsangan"
},
diff --git a/keyboards/plywrks/ahgase/config.h b/keyboards/plywrks/ahgase/config.h
index a7b16ab108..c1a90de131 100644
--- a/keyboards/plywrks/ahgase/config.h
+++ b/keyboards/plywrks/ahgase/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x706C // P L
-#define PRODUCT_ID 0x7902 // Y 2
-#define DEVICE_VER 0x0001
-#define MANUFACTURER plywrks
-#define PRODUCT Ahgase
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B2, B3, B7, D6, D3, D2 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D5, B0, B1, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/plywrks/ahgase/info.json b/keyboards/plywrks/ahgase/info.json
index 1e554e9c6e..297d0b9834 100644
--- a/keyboards/plywrks/ahgase/info.json
+++ b/keyboards/plywrks/ahgase/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ahgase",
+ "manufacturer": "plywrks",
"url": "",
"maintainer": "Ramon Imbao (ramonimbao)",
+ "usb": {
+ "vid": "0x706C",
+ "pid": "0x7902",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/plywrks/allaro/info.json b/keyboards/plywrks/allaro/info.json
new file mode 100644
index 0000000000..aa56aa1103
--- /dev/null
+++ b/keyboards/plywrks/allaro/info.json
@@ -0,0 +1,124 @@
+{
+ "manufacturer": "Plywrks",
+ "keyboard_name": "Allaro",
+ "maintainer": "ramonimbao",
+ "development_board": "promicro",
+
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgblight": true
+ },
+ "matrix_pins": {
+ "cols": ["F0", "F7", "F6", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "D5", "D3", "D2", "D1"],
+ "rows": ["F1", "B7", "B0", "D0", "F5"]
+ },
+ "url": "",
+ "usb": {
+ "vid": "0x706C",
+ "pid": "0x7903",
+ "device_version": "1.0.0"
+ },
+ "rgblight": {
+ "led_count": 16,
+ "pin": "E2",
+ "hue_steps": 10,
+ "saturation_steps": 17,
+ "brightness_steps": 17,
+ "animations": {
+ "alternating": true,
+ "breathing": true,
+ "christmas": true,
+ "knight": true,
+ "rainbow_mood": true,
+ "rainbow_swirl": true,
+ "rgb_test": true,
+ "snake": true,
+ "static_gradient": true,
+ "twinkle": true
+ }
+ },
+ "layouts": {
+ "LAYOUT_arisu": {
+ "layout": [
+ { "matrix": [0, 0], "x": 0.4, "y": 0 },
+ { "matrix": [0, 1], "x": 1.55, "y": 0.1 },
+ { "matrix": [0, 2], "x": 2.55, "y": 0.1 },
+ { "matrix": [0, 3], "x": 3.55, "y": 0 },
+ { "matrix": [0, 4], "x": 4.55, "y": 0.1 },
+ { "matrix": [0, 5], "x": 5.55, "y": 0.1 },
+ { "matrix": [0, 6], "x": 6.55, "y": 0.1 },
+ { "matrix": [2, 7], "x": 7.55, "y": 0.1 },
+ { "matrix": [0, 7], "x": 9.75, "y": 0.1 },
+ { "matrix": [0, 8], "x": 10.75, "y": 0.1 },
+ { "matrix": [0, 9], "x": 11.75, "y": 0.1 },
+ { "matrix": [0, 10], "x": 12.75, "y": 0.1 },
+ { "matrix": [0, 11], "x": 13.75, "y": 0 },
+ { "matrix": [0, 12], "x": 14.75, "y": 0.1 },
+ { "matrix": [0, 13], "x": 15.75, "y": 0.1 },
+ { "matrix": [0, 14], "x": 16.75, "y": 0.1 },
+
+ { "matrix": [1, 0], "x": 0.2, "y": 1.0 },
+ { "matrix": [1, 1], "w": 1.5, "x": 1.35, "y": 1.1 },
+ { "matrix": [1, 2], "x": 2.85, "y": 1.1 },
+ { "matrix": [1, 3], "x": 3.85, "y": 1.1 },
+ { "matrix": [1, 4], "x": 4.85, "y": 1.1 },
+ { "matrix": [1, 5], "x": 5.85, "y": 1.1 },
+ { "matrix": [1, 6], "x": 6.85, "y": 1.1 },
+ { "matrix": [1, 7], "x": 9.45, "y": 1.1 },
+ { "matrix": [1, 8], "x": 10.45, "y": 1.1 },
+ { "matrix": [1, 9], "x": 11.45, "y": 1.1 },
+ { "matrix": [1, 10], "x": 12.45, "y": 1.1 },
+ { "matrix": [1, 11], "x": 13.45, "y": 1.1 },
+ { "matrix": [1, 12], "x": 14.45, "y": 1.1 },
+ { "matrix": [1, 13], "x": 15.45, "y": 1.1 },
+ { "matrix": [1, 14], "w": 1.5, "x": 16.45, "y": 1.1 },
+
+ { "matrix": [2, 0], "x": 0, "y": 2.0 },
+ { "matrix": [2, 1], "w": 1.75, "x": 1.15, "y": 2.1 },
+ { "matrix": [2, 2], "x": 2.9, "y": 2.1 },
+ { "matrix": [2, 3], "x": 3.9, "y": 2.1 },
+ { "matrix": [2, 4], "x": 4.9, "y": 2.1 },
+ { "matrix": [2, 5], "x": 5.9, "y": 2.1 },
+ { "matrix": [2, 6], "x": 6.9, "y": 2.1 },
+ { "matrix": [2, 8], "x": 9.9, "y": 2.1 },
+ { "matrix": [2, 9], "x": 10.9, "y": 2.1 },
+ { "matrix": [2, 10], "x": 11.9, "y": 2.1 },
+ { "matrix": [2, 11], "x": 12.9, "y": 2.1 },
+ { "matrix": [2, 12], "x": 13.9, "y": 2.1 },
+ { "matrix": [2, 13], "x": 14.9, "y": 2.1 },
+ { "matrix": [2, 14], "w": 2.25, "x": 15.9, "y": 2.1 },
+
+ { "matrix": [3, 1], "w": 2.25, "x": 0.95, "y": 3.1 },
+ { "matrix": [3, 2], "x": 3.2, "y": 3.1 },
+ { "matrix": [3, 3], "x": 4.2, "y": 3.1 },
+ { "matrix": [3, 4], "x": 5.2, "y": 3.1 },
+ { "matrix": [3, 5], "x": 6.2, "y": 3.1 },
+ { "matrix": [3, 6], "x": 7.2, "y": 3.1 },
+ { "matrix": [3, 7], "x": 9.6, "y": 3.1 },
+ { "matrix": [3, 8], "x": 10.6, "y": 3.1 },
+ { "matrix": [3, 9], "x": 11.6, "y": 3.1 },
+ { "matrix": [3, 10], "x": 12.6, "y": 3.1 },
+ { "matrix": [3, 11], "x": 13.6, "y": 3.1 },
+ { "matrix": [3, 12], "x": 14.6, "y": 3.1 },
+ { "matrix": [3, 13], "x": 15.6, "y": 3.1 },
+ { "matrix": [3, 14], "w": 1.75, "x": 16.6, "y": 3.1 },
+
+ { "matrix": [4, 1], "w": 1.5, "x": 0.95, "y": 4.1 },
+ { "matrix": [4, 3], "w": 1.5, "x": 3.85, "y": 4.1 },
+ { "matrix": [4, 5], "w": 2, "x": 5.35, "y": 4.1 },
+ { "matrix": [4, 6], "w": 1.25, "x": 7.35, "y": 4.1 },
+ { "matrix": [4, 8], "w": 2.75, "x": 9.6, "y": 4.1 },
+ { "matrix": [4, 10], "w": 1.5, "x": 12.35, "y": 4.1 },
+ { "matrix": [4, 12], "x": 14.6, "y": 4.1 },
+ { "matrix": [4, 13], "x": 15.6, "y": 4.1 },
+ { "matrix": [4, 14], "x": 16.6, "y": 4.1 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/plywrks/allaro/keymaps/default/keymap.c b/keyboards/plywrks/allaro/keymaps/default/keymap.c
new file mode 100644
index 0000000000..dbfa2e888e
--- /dev/null
+++ b/keyboards/plywrks/allaro/keymaps/default/keymap.c
@@ -0,0 +1,33 @@
+/* Copyright 2020 MudkipMao
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_arisu(
+ KC_ESC, KC_ESC, KC_1, KC_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_UP, KC_RSFT,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_arisu(
+ RGB_TOG, 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,
+ RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_HOME
+ )
+};
diff --git a/keyboards/plywrks/allaro/keymaps/via/keymap.c b/keyboards/plywrks/allaro/keymaps/via/keymap.c
new file mode 100644
index 0000000000..667ac0f1a6
--- /dev/null
+++ b/keyboards/plywrks/allaro/keymaps/via/keymap.c
@@ -0,0 +1,47 @@
+/* Copyright 2020 MudkipMao
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_arisu(
+ KC_ESC, KC_ESC, KC_1, KC_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_UP, KC_RSFT,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_arisu(
+ RGB_TOG, 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,
+ RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, _______,
+ _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_HOME
+ ),
+ [2] = LAYOUT_arisu(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_arisu(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/plywrks/allaro/keymaps/via/rules.mk b/keyboards/plywrks/allaro/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/plywrks/allaro/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/plywrks/allaro/readme.md b/keyboards/plywrks/allaro/readme.md
new file mode 100644
index 0000000000..7fb1c1715c
--- /dev/null
+++ b/keyboards/plywrks/allaro/readme.md
@@ -0,0 +1,26 @@
+# Plywrks Allaro
+
+![Allaro](https://i.imgur.com/SwVyLLzl.png)
+
+An Arisu-like hotswap PCB.
+
+* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
+* Hardware Supported: ATmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make plywrks/allaro:via
+
+Flashing example for this keyboard:
+
+ make plywrks/allaro:via: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 `QK_BOOT` if it is available
diff --git a/keyboards/plywrks/allaro/rules.mk b/keyboards/plywrks/allaro/rules.mk
new file mode 100644
index 0000000000..6e7633bfe0
--- /dev/null
+++ b/keyboards/plywrks/allaro/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
diff --git a/keyboards/plywrks/lune/config.h b/keyboards/plywrks/lune/config.h
new file mode 100644
index 0000000000..065cc52d93
--- /dev/null
+++ b/keyboards/plywrks/lune/config.h
@@ -0,0 +1,83 @@
+/*
+Copyright 2022 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"
+
+/* 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 { F1, F0, B7, B0, B6, B5, D7, B4, D6 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, D4, D5, D3, D2 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define RGB_DI_PIN E2
+#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
+#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
diff --git a/keyboards/plywrks/lune/info.json b/keyboards/plywrks/lune/info.json
new file mode 100644
index 0000000000..83ccfe12f3
--- /dev/null
+++ b/keyboards/plywrks/lune/info.json
@@ -0,0 +1,87 @@
+{
+ "keyboard_name": "Lune",
+ "manufacturer": "plywrks",
+ "url": "",
+ "maintainer": "ramonimbao",
+ "usb": {
+ "vid": "0x706C",
+ "pid": "0x7901",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "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":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, "y":0},
+
+ {"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":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},
+ {"x":16.5, "y":1, "w":1.5},
+
+ {"x":0, "y":2},
+ {"x":1.5, "y":2, "w":1.75},
+ {"x":3.25, "y":2},
+ {"x":4.25, "y":2},
+ {"x":5.25, "y":2},
+ {"x":6.25, "y":2},
+ {"x":7.25, "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},
+ {"x":15.75, "y":2, "w":2.25},
+
+ {"x":1.5, "y":3, "w":2.25},
+ {"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":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":17, "y":3},
+
+ {"x":1.5, "y":4, "w":1.5},
+ {"x":4, "y":4, "w":1.5},
+ {"x":5.5, "y":4, "w":2},
+ {"x":7.5, "y":4, "w":1.25},
+ {"x":9.25, "y":4, "w":2.75},
+ {"x":12, "y":4, "w":1.5},
+ {"x":16.5, "y":4, "w":1.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/plywrks/lune/keymaps/default/keymap.c b/keyboards/plywrks/lune/keymaps/default/keymap.c
new file mode 100644
index 0000000000..10471fa35f
--- /dev/null
+++ b/keyboards/plywrks/lune/keymaps/default/keymap.c
@@ -0,0 +1,33 @@
+/* Copyright 2022 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_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_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, MO(1), KC_SPC, KC_RALT, KC_RCTL
+ ),
+ [1] = LAYOUT_all(
+ QK_BOOT, _______, KC_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_HOME, _______, _______, KC_UP, _______, _______, _______, RGB_HUD, RGB_HUI, RGB_SAD, RGB_VAD, RGB_VAI, _______, _______, _______,
+ KC_END, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/plywrks/lune/keymaps/via/keymap.c b/keyboards/plywrks/lune/keymaps/via/keymap.c
new file mode 100644
index 0000000000..f5b11f210a
--- /dev/null
+++ b/keyboards/plywrks/lune/keymaps/via/keymap.c
@@ -0,0 +1,48 @@
+/* Copyright 2022 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_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_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, MO(1), KC_SPC, KC_RALT, KC_RCTL
+ ),
+ [1] = LAYOUT_all(
+ QK_BOOT, _______, KC_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_HOME, _______, _______, KC_UP, _______, _______, _______, RGB_HUD, RGB_HUI, RGB_SAD, RGB_VAD, RGB_VAI, _______, _______, _______,
+ KC_END, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______
+ )
+};
+
diff --git a/keyboards/plywrks/lune/keymaps/via/rules.mk b/keyboards/plywrks/lune/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/plywrks/lune/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/plywrks/lune/lune.c b/keyboards/plywrks/lune/lune.c
new file mode 100644
index 0000000000..1437f3fee6
--- /dev/null
+++ b/keyboards/plywrks/lune/lune.c
@@ -0,0 +1,38 @@
+/* Copyright 2022 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 "lune.h"
+
+#ifdef OLED_ENABLE
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer :"), false);
+ oled_write(get_u8_str(get_highest_layer(layer_state), ' '), false);
+
+ oled_advance_page(true);
+
+ // 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 false;
+}
+#endif
diff --git a/keyboards/plywrks/lune/lune.h b/keyboards/plywrks/lune/lune.h
new file mode 100644
index 0000000000..444f855123
--- /dev/null
+++ b/keyboards/plywrks/lune/lune.h
@@ -0,0 +1,47 @@
+/* Copyright 2022 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 ___ KC_NO
+
+#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, k24, k34, k25, k35, k26, k36, k27, k37, \
+ k40, k50, k41, k51, k42, k52, k43, k44, k54, k45, k55, k46, k56, k57, \
+ k70, k61, k71, k62, k72, k63, k64, k74, k65, k75, k66, k76, k67, k77, \
+ k80, k81, k82, k83, k84, k85, k87 \
+) { \
+ { k00, k01, 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, ___, k34, k35, k36, k37 }, \
+ { k40, k41, k42, k43, k44, k45, k46, ___ }, \
+ { k50, k51, k52, ___, k54, k55, k56, k57 }, \
+ { ___, k61, k62, k63, k64, k65, k66, k67 }, \
+ { k70, k71, k72, ___, k74, k75, k75, k77 }, \
+ { k80, k81, k82, k83, k84, k85, ___, k87 }, \
+}
diff --git a/keyboards/plywrks/lune/readme.md b/keyboards/plywrks/lune/readme.md
new file mode 100644
index 0000000000..bab2356a45
--- /dev/null
+++ b/keyboards/plywrks/lune/readme.md
@@ -0,0 +1,21 @@
+# Lune
+
+![Lune](https://i.imgur.com/GgOzXRUl.jpg)
+
+Lune: a plateless, screwless ergonomic 60 percent with an OLED screen.
+Specs: 16.5mm front height, 5 degrees typing angle, interchangeable brass top, daughterboard
+
+* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
+* Hardware Supported: ATmega32u4
+
+Make example for this keyboard (after setting up your build environment):
+
+ make plywrks/lune:default
+
+To get to the bootloader, simply press the reset button located on the back of the PCB. You can then flash new firmware onto it.
+
+Flashing example for this keyboard:
+
+ make plywrks/lune: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/plywrks/lune/rules.mk b/keyboards/plywrks/lune/rules.mk
new file mode 100644
index 0000000000..89f7f10840
--- /dev/null
+++ b/keyboards/plywrks/lune/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
+OLED_ENABLE = yes # Enable OLED
diff --git a/keyboards/pohjolaworks/louhi/config.h b/keyboards/pohjolaworks/louhi/config.h
index b9cbde16d3..e2ff5a06ac 100644
--- a/keyboards/pohjolaworks/louhi/config.h
+++ b/keyboards/pohjolaworks/louhi/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5057
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Pohjola Works
-#define PRODUCT Louhi
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 7
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D3, D2, D1, D0, D7, C6, B4, E6 }
#define MATRIX_COL_PINS { D4, B6, F4, F5, F6, F7, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/pohjolaworks/louhi/info.json b/keyboards/pohjolaworks/louhi/info.json
index ce9ef6b85e..e305708d7d 100644
--- a/keyboards/pohjolaworks/louhi/info.json
+++ b/keyboards/pohjolaworks/louhi/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Louhi",
+ "manufacturer": "Pohjola Works",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/pohjolaworks/louhi",
"maintainer": "ErkHal",
+ "usb": {
+ "vid": "0x5057",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_7u_space": {
"layout": [{"label":"k00", "x":0, "y":0}, {"label":"k10", "x":1, "y":0}, {"label":"k01", "x":2, "y":0}, {"label":"k11", "x":3, "y":0}, {"label":"k02", "x":4, "y":0}, {"label":"k12", "x":5, "y":0}, {"label":"k03", "x":6, "y":0}, {"label":"k13", "x":7, "y":0}, {"label":"k04", "x":8, "y":0}, {"label":"k14", "x":9, "y":0}, {"label":"k05", "x":10, "y":0}, {"label":"k15", "x":11, "y":0}, {"label":"k06", "x":12, "y":0}, {"label":"k20", "x":0, "y":1}, {"label":"k30", "x":1, "y":1}, {"label":"k21", "x":2, "y":1}, {"label":"k31", "x":3, "y":1}, {"label":"k22", "x":4, "y":1}, {"label":"k32", "x":5, "y":1}, {"label":"k23", "x":6, "y":1}, {"label":"k33", "x":7, "y":1}, {"label":"k24", "x":8, "y":1}, {"label":"k34", "x":9, "y":1}, {"label":"k25", "x":10, "y":1}, {"label":"k35", "x":11, "y":1}, {"label":"k26", "x":12, "y":1}, {"label":"k40", "x":0, "y":2}, {"label":"k50", "x":1, "y":2}, {"label":"k41", "x":2, "y":2}, {"label":"k51", "x":3, "y":2}, {"label":"k42", "x":4, "y":2}, {"label":"k52", "x":5, "y":2}, {"label":"k43", "x":6, "y":2}, {"label":"k53", "x":7, "y":2}, {"label":"k44", "x":8, "y":2}, {"label":"k54", "x":9, "y":2}, {"label":"k45", "x":10, "y":2}, {"label":"k55", "x":11, "y":2}, {"label":"k46", "x":12, "y":2}, {"label":"k60", "x":0, "y":3}, {"label":"k70", "x":1, "y":3}, {"label":"k61", "x":2, "y":3}, {"label":"k63", "x":3, "y":3, "w":7}, {"label":"k65", "x":10, "y":3}, {"label":"k75", "x":11, "y":3}, {"label":"k66", "x":12, "y":3}]
diff --git a/keyboards/poker87c/config.h b/keyboards/poker87c/config.h
index e01df80ec7..93352a2e95 100644
--- a/keyboards/poker87c/config.h
+++ b/keyboards/poker87c/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6D66 // "mf" - mfkiiyd
-#define PRODUCT_ID 0x087C // "87C"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER mfkiiyd
-#define PRODUCT POKER-87C Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
diff --git a/keyboards/poker87c/info.json b/keyboards/poker87c/info.json
index bf7b42e470..1bf7cc4979 100644
--- a/keyboards/poker87c/info.json
+++ b/keyboards/poker87c/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "POKER-87C",
+ "keyboard_name": "POKER-87C Hotswap",
+ "manufacturer": "mfkiiyd",
"url": "",
"maintainer": "mfkiiyd",
+ "usb": {
+ "vid": "0x6D66",
+ "pid": "0x087C",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
diff --git a/keyboards/poker87d/config.h b/keyboards/poker87d/config.h
index 7cf87340e4..ab28e84a06 100644
--- a/keyboards/poker87d/config.h
+++ b/keyboards/poker87d/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6D66 // "mf" - mfkiiyd
-#define PRODUCT_ID 0x087D // "87D"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER mfkiiyd
-#define PRODUCT POKER-87D Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
diff --git a/keyboards/poker87d/info.json b/keyboards/poker87d/info.json
index a0b78e5c8a..e36cdb09f4 100644
--- a/keyboards/poker87d/info.json
+++ b/keyboards/poker87d/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "POKER-87D",
+ "keyboard_name": "POKER-87D Hotswap",
+ "manufacturer": "mfkiiyd",
"url": "",
"maintainer": "mfkiiyd",
+ "usb": {
+ "vid": "0x6D66",
+ "pid": "0x087D",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
diff --git a/keyboards/polilla/info.json b/keyboards/polilla/info.json
index 0287b22a52..bb6a98939c 100644
--- a/keyboards/polilla/info.json
+++ b/keyboards/polilla/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Polilla",
+ "manufacturer": "elagil",
"url": "",
"maintainer": "elagil",
+ "usb": {
+ "vid": "0x6166",
+ "pid": "0x0010",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/polilla/rev1/config.h b/keyboards/polilla/rev1/config.h
index b48e99e6d5..4584a939fc 100644
--- a/keyboards/polilla/rev1/config.h
+++ b/keyboards/polilla/rev1/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6166 // af
-#define PRODUCT_ID 0x0010
-#define DEVICE_VER 0x0001
-#define MANUFACTURER elagil
-#define PRODUCT Polilla
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B1, B0, A7, F1, A0 }
#define MATRIX_COL_PINS { A6, A5, A4, A3, A2, A1, F0, B7, B6, B5, B4, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/polycarbdiet/s20/config.h b/keyboards/polycarbdiet/s20/config.h
index 58f998e767..350f7dfff3 100644
--- a/keyboards/polycarbdiet/s20/config.h
+++ b/keyboards/polycarbdiet/s20/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5040 // PD = polycarbdiet
-#define PRODUCT_ID 0x7320 // S20
-#define DEVICE_VER 0x0001
-#define MANUFACTURER polycarbdiet
-#define PRODUCT S20
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -32,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 1 2 3 4 5
#define MATRIX_ROW_PINS { B7, E6, D0, D1, D5 }
#define MATRIX_COL_PINS { C6, C7, D4, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/polycarbdiet/s20/info.json b/keyboards/polycarbdiet/s20/info.json
index ff06e2a257..d4cf5827b6 100644
--- a/keyboards/polycarbdiet/s20/info.json
+++ b/keyboards/polycarbdiet/s20/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "S20 revA",
+ "manufacturer": "polycarbdiet",
"url": "",
"maintainer": "polycarbdiet",
+ "usb": {
+ "vid": "0x5040",
+ "pid": "0x7320",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [
diff --git a/keyboards/polycarbdiet/s20/readme.md b/keyboards/polycarbdiet/s20/readme.md
index 7eb2927716..e40f999a1c 100644
--- a/keyboards/polycarbdiet/s20/readme.md
+++ b/keyboards/polycarbdiet/s20/readme.md
@@ -17,11 +17,11 @@ Flashing example for this keyboard:
make polycarbdiet/s20:default:flash
**Reset Method:**
-- Press the `RESET` button on the under side of the PCB
+- Press the `QK_BOOT` button on the under side of the PCB
**Bootloader Method:**
- Hold down the key located at `K00`, commonly programmed as `ESC`, while plugging in the keyboard.
-- Hold down the key located at `K00`, commonly programmed as `ESC`, and press the RESET button on the PCB.
+- Hold down the key located at `K00`, commonly programmed as `ESC`, and press the QK_BOOT button on the PCB.
- Hold down the key located at `K42` and then press the key located at `K40`.
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/pom_keyboards/tnln95/config.h b/keyboards/pom_keyboards/tnln95/config.h
index 78d2d805e1..e958aebd30 100644
--- a/keyboards/pom_keyboards/tnln95/config.h
+++ b/keyboards/pom_keyboards/tnln95/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x544E
-#define PRODUCT_ID 0x3931
-#define DEVICE_VER 0x0001
-#define MANUFACTURER POM_keyboard
-#define PRODUCT tnln95
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10
@@ -41,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, B4, B0, D7, E6, D4, F5, D6, C6, B5 }
#define MATRIX_COL_PINS { F4, F1, F0, F6, F7, D0, D1, D2, D3, D5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/pom_keyboards/tnln95/info.json b/keyboards/pom_keyboards/tnln95/info.json
index 68d1359209..470da65459 100644
--- a/keyboards/pom_keyboards/tnln95/info.json
+++ b/keyboards/pom_keyboards/tnln95/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "tnln95",
+ "manufacturer": "POM_keyboard",
"url": "http://www.keyboard-layout-editor.com/#/gists/45aee74c726e32a063130a715fc494d3",
"maintainer": "HoangNM",
+ "usb": {
+ "vid": "0x544E",
+ "pid": "0x3931",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/portal_66/hotswap/config.h b/keyboards/portal_66/hotswap/config.h
index 96ea091a20..6abeea3bc8 100644
--- a/keyboards/portal_66/hotswap/config.h
+++ b/keyboards/portal_66/hotswap/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x504C
-#define PRODUCT_ID 0x5067
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Parallel Limited
-#define PRODUCT Portal 66
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/portal_66/hotswap/info.json b/keyboards/portal_66/hotswap/info.json
index 984134a4e7..b98e9cc714 100644
--- a/keyboards/portal_66/hotswap/info.json
+++ b/keyboards/portal_66/hotswap/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Portal 66 Hotswap",
+ "manufacturer": "Parallel Limited",
"maintainer": "matthewdias",
+ "usb": {
+ "vid": "0x504C",
+ "pid": "0x5067",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_65_ansi_blocker"
},
diff --git a/keyboards/portal_66/soldered/config.h b/keyboards/portal_66/soldered/config.h
index f5e0d734c4..6abeea3bc8 100644
--- a/keyboards/portal_66/soldered/config.h
+++ b/keyboards/portal_66/soldered/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x504C
-#define PRODUCT_ID 0x5066
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Parallel Limited
-#define PRODUCT Portal 66
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/portal_66/soldered/info.json b/keyboards/portal_66/soldered/info.json
index de621a2f70..f24fc4b870 100644
--- a/keyboards/portal_66/soldered/info.json
+++ b/keyboards/portal_66/soldered/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "Portal 66",
+ "keyboard_name": "Portal 66 Soldered",
+ "manufacturer": "Parallel Limited",
"maintainer": "matthewdias",
+ "usb": {
+ "vid": "0x504C",
+ "pid": "0x5066",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_65_ansi_split_bs": "LAYOUT_65_ansi_blocker_split_bs",
"LAYOUT_65_ansi": "LAYOUT_65_ansi_blocker",
diff --git a/keyboards/pos78/config.h b/keyboards/pos78/config.h
index 81449c844f..b0136fb812 100644
--- a/keyboards/pos78/config.h
+++ b/keyboards/pos78/config.h
@@ -19,13 +19,6 @@ 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 0x7878
-#define DEVICE_VER 0x0001
-#define MANUFACTURER smssmssms
-#define PRODUCT POS78
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 13
@@ -41,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, F7 }
#define MATRIX_COL_PINS { B2, B1, D2, D3, D1, D0, C6, E6, B5, B6, B7, D6, C7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/pos78/info.json b/keyboards/pos78/info.json
index 76c1430559..d6bd269fc5 100644
--- a/keyboards/pos78/info.json
+++ b/keyboards/pos78/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "pos78",
+ "keyboard_name": "POS78",
+ "manufacturer": "smssmssms",
"url": "https://github.com/smssmssms/pos78.git",
"maintainer": "smssmssms",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x7878",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_6x13": {
"layout": [
diff --git a/keyboards/preonic/config.h b/keyboards/preonic/config.h
index 6bcfa26380..13fbe46857 100644
--- a/keyboards/preonic/config.h
+++ b/keyboards/preonic/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x03A8
-#define MANUFACTURER OLKB
-#define PRODUCT Preonic
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -31,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Planck PCB default pin-out */
#define MATRIX_ROW_PINS { D2, D5, B5, B6, D3 }
#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
-#define UNUSED_PINS
#define QMK_ESC_OUTPUT F1
#define QMK_ESC_INPUT B5
diff --git a/keyboards/preonic/info.json b/keyboards/preonic/info.json
index e49e964577..76571d7ce8 100644
--- a/keyboards/preonic/info.json
+++ b/keyboards/preonic/info.json
@@ -1,5 +1,4 @@
{
- "keyboard_name": "Preonic",
"url": "https://olkb.com/preonic",
"maintainer": "jackhumbert",
"layouts": {
diff --git a/keyboards/preonic/keymaps/0xdec/keymap.c b/keyboards/preonic/keymaps/0xdec/keymap.c
index 28277bd5f4..4393ab9f69 100644
--- a/keyboards/preonic/keymaps/0xdec/keymap.c
+++ b/keyboards/preonic/keymaps/0xdec/keymap.c
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | BACK | STOP | RFRSH| FRWRD| MUTE |BL TOG| HOME | PGDN | PGUP | END |INSERT|
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | RESET| | | | | DEL | | | | | | |
+ * | QK_BOOT| | | | | DEL | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_RAISE] = LAYOUT_preonic_grid( \
@@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX,KC_F11 ,KC_F12 ,XXXXXXX,AU_TOG ,KC_VOLU,BL_INC ,COLEMAK,GAME ,MU_TOG ,KC_MENU,KC_SLCK, \
KC_CAPS,KC_MPRV,KC_MSTP,KC_MPLY,KC_MNXT,KC_VOLD,BL_DEC ,KC_LEFT,KC_DOWN,KC_UP ,KC_RGHT,KC_PAUS, \
XXXXXXX,KC_WBAK,KC_WSTP,KC_WREF,KC_WFWD,KC_MUTE,BL_TOGG,KC_HOME,KC_PGDN,KC_PGUP,KC_END ,KC_INS, \
- RESET ,_______,_______,_______,_______,KC_DEL ,_______,_______,_______,_______,_______,_______ \
+ QK_BOOT,_______,_______,_______,_______,KC_DEL ,_______,_______,_______,_______,_______,_______ \
)
};
diff --git a/keyboards/preonic/keymaps/AlexDaigre/keymap.c b/keyboards/preonic/keymaps/AlexDaigre/keymap.c
index ef4707f64b..c4e0f132d8 100644
--- a/keyboards/preonic/keymaps/AlexDaigre/keymap.c
+++ b/keyboards/preonic/keymaps/AlexDaigre/keymap.c
@@ -159,7 +159,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid( \
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,_______, _______, _______, \
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, _______, \
_______, _______, 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, _______, _______, _______, _______, _______, \
BACKLIT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
diff --git a/keyboards/preonic/keymaps/CMD-Preonic/keymap.c b/keyboards/preonic/keymaps/CMD-Preonic/keymap.c
index a572770788..b20568506c 100644
--- a/keyboards/preonic/keymaps/CMD-Preonic/keymap.c
+++ b/keyboards/preonic/keymaps/CMD-Preonic/keymap.c
@@ -188,10 +188,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_1x2uC( \
_______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, _______, _______, _______, \
- _______, RESET, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, MI_ON, MI_OFF, QWERTY, COLEMAK, DVORAK, _______, _______, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, KC_SYSTEM_SLEEP, KC_SYSTEM_WAKE, ARROW, GAME, NUMPAD, _______, _______, \
- _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______ \
+ _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______ \
)
diff --git a/keyboards/preonic/keymaps/arkag/keymap.c b/keyboards/preonic/keymaps/arkag/keymap.c
index 5e50c584af..c2a32277ed 100644
--- a/keyboards/preonic/keymaps/arkag/keymap.c
+++ b/keyboards/preonic/keymaps/arkag/keymap.c
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
M_USSR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, BL_TOGG, BL_STEP, BL_INC, BL_DEC, BL_BRTG, _______, _______, _______, _______, _______, _______,
RGB_M_P, RGB_TOG, RGB_MOD, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, _______, _______, _______,
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
diff --git a/keyboards/preonic/keymaps/badger/keymap.c b/keyboards/preonic/keymaps/badger/keymap.c
index 761beb861f..edf96db2e9 100644
--- a/keyboards/preonic/keymaps/badger/keymap.c
+++ b/keyboards/preonic/keymaps/badger/keymap.c
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST_ORTHO] = LAYOUT_preonic_2x2u(
KC_ESC, AU_ON, AU_OFF, CK_TOGG, CK_UP, CK_DOWN, CK_RST, MU_ON, MU_OFF, MU_TOG, MU_MOD, KC_DEL, \
- _______, NK_ON, NK_OFF, EEP_RST, RESET, KC_MSTP, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN2, KC_INS, \
+ _______, NK_ON, NK_OFF, EEP_RST, QK_BOOT, KC_MSTP, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_BTN2, KC_INS, \
_______, GE_SWAP, GE_NORM, DEBUG, AG_SWAP, AG_NORM, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1, _______, \
_______, KC_LYRC, KC_FIRST, KC_CAPS, KC_NO, KC_MPRV, KC_MNXT, KC_MUTE, KC_ACL0, KC_ACL1, KC_ACL2, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
diff --git a/keyboards/preonic/keymaps/bghull/keymap.c b/keyboards/preonic/keymaps/bghull/keymap.c
index 9a3ca0af4f..eba6cd4f85 100644
--- a/keyboards/preonic/keymaps/bghull/keymap.c
+++ b/keyboards/preonic/keymaps/bghull/keymap.c
@@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | Mute | VolD | VolU | `~ | _ | = | 1 | 2 | 3 | PgUp | \ | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | RESET| | | | | . | Home | PgDn | End |
+ * | | | QK_BOOT| | | | | . | Home | PgDn | End |
* `-----------------------------------------------------------------------------------'
*/
[_NUMPAD] = LAYOUT_preonic_grid(
@@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_BTN2, KC_MS_U, KC_BTN1, KC_WH_U, KC_LPRN, KC_RPRN, KC_7, KC_8, KC_9, KC_0, _______,
_______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_LBRC, KC_RBRC, KC_4, KC_5, KC_6, KC_PPLS, KC_MINS,
_______, KC_MUTE, KC_VOLD, KC_VOLU, KC_GRAVE, KC_UNDS, KC_EQL, KC_1, KC_2, KC_3, KC_PGUP, KC_BSLS,
- _______, XXXXXXX, RESET, _______, _______, _______, _______, _______, KC_PDOT, KC_HOME, KC_PGDN, KC_END
+ _______, XXXXXXX, QK_BOOT, _______, _______, _______, _______, _______, KC_PDOT, KC_HOME, KC_PGDN, KC_END
)
};
diff --git a/keyboards/preonic/keymaps/blake-newman/keymap.c b/keyboards/preonic/keymaps/blake-newman/keymap.c
index 2b50eaf6b9..53a4cf78f0 100644
--- a/keyboards/preonic/keymaps/blake-newman/keymap.c
+++ b/keyboards/preonic/keymaps/blake-newman/keymap.c
@@ -180,7 +180,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_1x2uC( \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,LALT(KC_PSCR), LCTL(KC_PSCR), KC_PSCR, \
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,LALT(KC_PSCR), LCTL(KC_PSCR), KC_PSCR, \
KC_CAPS, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, NUMPAD, KC_INS, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \
diff --git a/keyboards/preonic/keymaps/boy314/keymap.c b/keyboards/preonic/keymaps/boy314/keymap.c
index 04404f69f9..67d1fe4cf8 100644
--- a/keyboards/preonic/keymaps/boy314/keymap.c
+++ b/keyboards/preonic/keymaps/boy314/keymap.c
@@ -161,7 +161,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_preonic_grid( \
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, \
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, DVORAK, _______, _______, _______, _______, \
_______, ARROWS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/preonic/keymaps/codecoffeecode/keymap.c b/keyboards/preonic/keymaps/codecoffeecode/keymap.c
index 9264927ecb..c41c9757cf 100644
--- a/keyboards/preonic/keymaps/codecoffeecode/keymap.c
+++ b/keyboards/preonic/keymaps/codecoffeecode/keymap.c
@@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[2] = LAYOUT_preonic_1x2uC(
_______, 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_F12, _______,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, KC_F12, _______,
_______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/preonic/keymaps/cranium/keymap.c b/keyboards/preonic/keymaps/cranium/keymap.c
index 2c1337d843..8267a0a4be 100644
--- a/keyboards/preonic/keymaps/cranium/keymap.c
+++ b/keyboards/preonic/keymaps/cranium/keymap.c
@@ -109,7 +109,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLEP,
- _______, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, _______,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, _______,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, KC_VOLU, KC_VOLD, KC_MPRV, KC_MNXT, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, _______, _______, _______, KC_PSCR
diff --git a/keyboards/preonic/keymaps/davidrambo/keymap.c b/keyboards/preonic/keymaps/davidrambo/keymap.c
index 322089d917..823bcb6862 100755
--- a/keyboards/preonic/keymaps/davidrambo/keymap.c
+++ b/keyboards/preonic/keymaps/davidrambo/keymap.c
@@ -135,7 +135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, C_TAB , A_LEFT , KC_UP , A_RGHT , KC_DEL , _______,
_______, _______, _______, _______, _______, _______,S(C_TAB), KC_LEFT, KC_DOWN, KC_RGHT, C_TAB , _______,
_______, _______, _______, _______, _______, _______, G_TAB , A_BSPC , KC_HOME, KC_END , G_GRV , _______,
- RESET , _______, _______, _______, KC_RALT, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, KC_RALT, _______, _______, _______, _______, _______, _______, _______
),
[_NAVPC] = LAYOUT_preonic_grid(
@@ -143,7 +143,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, C_TAB , C_LEFT , KC_UP , C_RGHT , KC_DEL , _______,
_______, _______, _______, _______, _______, _______, CTLPGUP, KC_LEFT, KC_DOWN, KC_RGHT, CTLPGDN, _______,
_______, _______, _______, _______, _______, _______, A_TAB , C_BSPC , KC_HOME, KC_END , G_GRV , _______,
- RESET , _______, _______, KC_RALT, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, KC_RALT, _______, _______, _______, _______, _______, _______, _______, _______
),
[_NAVQUD] = LAYOUT_preonic_grid(
diff --git a/keyboards/preonic/keymaps/default/keymap.c b/keyboards/preonic/keymaps/default/keymap.c
index ef7614393d..c1faf464d6 100644
--- a/keyboards/preonic/keymaps/default/keymap.c
+++ b/keyboards/preonic/keymaps/default/keymap.c
@@ -157,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
- _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, 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/preonic/keymaps/dlaroe/keymap.c b/keyboards/preonic/keymaps/dlaroe/keymap.c
index 888a21c063..796ef64550 100644
--- a/keyboards/preonic/keymaps/dlaroe/keymap.c
+++ b/keyboards/preonic/keymaps/dlaroe/keymap.c
@@ -125,7 +125,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_1x2uC( \
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
- LALT(LCTL(KC_INS)), QWERTY, _______, _______, RESET, M(0), _______, MAGIC_TOGGLE_NKRO, _______, _______, _______, LALT(LCTL(KC_DEL)),
+ LALT(LCTL(KC_INS)), QWERTY, _______, _______, QK_BOOT, M(0), _______, MAGIC_TOGGLE_NKRO, _______, _______, _______, LALT(LCTL(KC_DEL)),
KC_CAPS, ARROW, _______, AU_ON, AU_OFF, _______, AG_SWAP, AG_NORM, KC_PSCR, KC_SLCK, KC_PAUS, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
BACKLIT, _______, _______, _______, _______, KC_MPLY, _______, BL_TOGG, BL_DEC , BL_INC , BL_STEP
diff --git a/keyboards/preonic/keymaps/drasbeck/keymap.c b/keyboards/preonic/keymaps/drasbeck/keymap.c
index ae4804ce3f..a3bfbb4760 100644
--- a/keyboards/preonic/keymaps/drasbeck/keymap.c
+++ b/keyboards/preonic/keymaps/drasbeck/keymap.c
@@ -87,7 +87,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid(
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,
+ _______, QK_BOOT, 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/preonic/keymaps/dudeofawesome/keymap.c b/keyboards/preonic/keymaps/dudeofawesome/keymap.c
index 2d2a252b23..932b76df3e 100644
--- a/keyboards/preonic/keymaps/dudeofawesome/keymap.c
+++ b/keyboards/preonic/keymaps/dudeofawesome/keymap.c
@@ -180,7 +180,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_1x2uC( \
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, \
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \
KC_CAPS, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, WORKMAN, DVORAK, COLEMAK, _______, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
@@ -275,7 +275,7 @@ bool numpadActive = false;
float tone_numpad_on[][2] = SONG(NUMPAD_ON_SOUND);
void matrix_scan_user (void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _NUMPAD:
diff --git a/keyboards/preonic/keymaps/ekis_isa/keymap.c b/keyboards/preonic/keymaps/ekis_isa/keymap.c
index b256a6bff7..ff2bfdb0f1 100644
--- a/keyboards/preonic/keymaps/ekis_isa/keymap.c
+++ b/keyboards/preonic/keymaps/ekis_isa/keymap.c
@@ -156,7 +156,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_1x2uC( \
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, \
+ _______, QK_BOOT, 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/preonic/keymaps/elisiano/keymap.c b/keyboards/preonic/keymaps/elisiano/keymap.c
index d885d1f028..c7ec076ca7 100644
--- a/keyboards/preonic/keymaps/elisiano/keymap.c
+++ b/keyboards/preonic/keymaps/elisiano/keymap.c
@@ -159,7 +159,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid(
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,
+ _______, QK_BOOT, 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, TG(_MOUSE), _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/preonic/keymaps/fig-r/keymap.c b/keyboards/preonic/keymaps/fig-r/keymap.c
index 86c87b0aca..b031a4027e 100644
--- a/keyboards/preonic/keymaps/fig-r/keymap.c
+++ b/keyboards/preonic/keymaps/fig-r/keymap.c
@@ -134,7 +134,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid( \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, DVORAK, _______, _______, _______, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/preonic/keymaps/fsck/keymap.c b/keyboards/preonic/keymaps/fsck/keymap.c
index dea1523600..cdb5bf1acc 100644
--- a/keyboards/preonic/keymaps/fsck/keymap.c
+++ b/keyboards/preonic/keymaps/fsck/keymap.c
@@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid( \
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, \
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/preonic/keymaps/jacwib/keymap.c b/keyboards/preonic/keymaps/jacwib/keymap.c
index e4cd76b84d..4cacafb120 100644
--- a/keyboards/preonic/keymaps/jacwib/keymap.c
+++ b/keyboards/preonic/keymaps/jacwib/keymap.c
@@ -165,9 +165,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid( \
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, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT, \
- _______, MU_ON, MU_OFF, _______, _______, _______, _______, TO(0), TO(5), _______, _______, RESET, \
+ _______, MU_ON, MU_OFF, _______, _______, _______, _______, TO(0), TO(5), _______, _______, QK_BOOT, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
)
diff --git a/keyboards/preonic/keymaps/jpe230/config.h b/keyboards/preonic/keymaps/jpe230/config.h
new file mode 100644
index 0000000000..70cb9d826b
--- /dev/null
+++ b/keyboards/preonic/keymaps/jpe230/config.h
@@ -0,0 +1,28 @@
+/*
+Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@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
+
+#ifdef AUDIO_ENABLE
+#define STARTUP_SONG SONG(ODE_TO_JOY)
+#endif
+
+#define MUSIC_MASK (keycode != KC_NO)
+
+#define ENABLE_COMPILE_KEYCODE
+#define AUDIO_ENABLE_TONE_MULTIPLEXING
+#define AUDIO_TONE_MULTIPLEXING_RATE_DEFAULT 10 \ No newline at end of file
diff --git a/keyboards/preonic/keymaps/jpe230/jpe230.h b/keyboards/preonic/keymaps/jpe230/jpe230.h
new file mode 100644
index 0000000000..e6b4ed1401
--- /dev/null
+++ b/keyboards/preonic/keymaps/jpe230/jpe230.h
@@ -0,0 +1,35 @@
+/*
+Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@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 VIA_ENABLE
+ #define USER_START USER00
+#else
+ #define USER_START SAFE_RANGE
+#endif
+
+enum jpe230_keycodes {
+ KC_LSRS = USER_START,
+ KC_LERS,
+ KC_LSRE
+};
+
+#define LEFT_BAR 0, 9, 5
+#define RIGHT_BAR 0, 9, 1
+
+float song_lsrs[][2] = SONG(QWERTY_SOUND);
+float song_lers[][2] = SONG(COLEMAK_SOUND);
+float song_lsre[][2] = SONG(DVORAK_SOUND); \ No newline at end of file
diff --git a/keyboards/preonic/keymaps/jpe230/keymap.c b/keyboards/preonic/keymaps/jpe230/keymap.c
new file mode 100644
index 0000000000..43aa42aaf1
--- /dev/null
+++ b/keyboards/preonic/keymaps/jpe230/keymap.c
@@ -0,0 +1,116 @@
+/*
+Copyright 2022 Jose Pablo Ramirez <jp.ramangulo@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 "jpe230.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_preonic_grid(
+ //,-----------------------------------------------------------------------------------------------------------.
+ 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,
+ //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
+ 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_LBRC, KC_RBRC, KC_LGUI, MO(1), _______, KC_SPC, _______, KC_ENT, MO(2), KC_RALT, KC_MINS, KC_EQL
+ //`-----------------------------------------------------------------------------------------------------------'
+ ),
+
+ [1] = LAYOUT_preonic_grid(
+ //,-----------------------------------------------------------------------------------------------------------.
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_BSPC,
+ //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
+ KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, CK_UP, AU_TOG,
+ //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
+ KC_CAPS, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, CK_DOWN, _______,
+ //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
+ KC_LSFT, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN,KC_RIGHT, _______, CK_RST, _______,
+ //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, _______, _______, _______, _______, _______, MO(3), _______, _______, _______
+ //`-----------------------------------------------------------------------------------------------------------'
+ ),
+
+ [2] = LAYOUT_preonic_grid(
+ //,-----------------------------------------------------------------------------------------------------------.
+ KC_GRV, KC_F11, KC_F12, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, 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_CAPS, _______, KC_MS_U, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV,
+ //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
+ KC_LSFT, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD,
+ //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
+ _______, _______, _______, MO(3), _______, KC_BTN1, _______, _______, _______, _______, _______, _______
+ //`-----------------------------------------------------------------------------------------------------------'
+ ),
+
+ [3] = LAYOUT_preonic_grid(
+ //,-----------------------------------------------------------------------------------------------------------.
+ 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_MUTE, KC_WBAK, KC_WFWD, KC_F7, KC_F8, KC_F9, _______, KC_7, KC_8, KC_9, _______, QK_BOOT,
+ //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
+ KC_VOLU, _______, KC_MNXT, KC_F6, KC_F5, KC_F6, _______, KC_6, KC_5, KC_4, _______, QK_MAKE,
+ //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
+ KC_VOLD, KC_MPRV, KC_MNXT, KC_F1, KC_F2, KC_F3, KC_LSRS, KC_1, KC_2, KC_3, _______, DB_TOGG,
+ //|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
+ MU_TOG, MU_MOD, _______, _______, _______, KC_LSRE, _______, KC_LERS, _______, _______, _______, EE_CLR
+ //`-----------------------------------------------------------------------------------------------------------'
+ )
+};
+
+/*
+Logic to shift between the bars:
+ KC_LSRE => Left Bar - Space... Right Bar - Enter
+ KC_LERS => Left Bar - Enter... Right Bar - Space
+ KC_LSRS => Left Bar - Space... Right Bar - Space
+
+ Hack into dynamic_keymap_set_keycode and change the value of the keymap.
+ (Just like VIA does, but instead it is done inside the keyboard so no need
+ to open the app)
+
+ Possible alternatives:
+ - Create 3 layers but only change the KC_ENTER and KC_SPACE position between them
+ - Create a custom keycode and use process_record_user to alter the behaviour
+*/
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ switch (keycode) {
+ case KC_LSRS:
+ dynamic_keymap_set_keycode(LEFT_BAR, KC_SPC);
+ dynamic_keymap_set_keycode(RIGHT_BAR, KC_SPC);
+ PLAY_SONG(song_lsrs);
+ return false;
+ case KC_LERS:
+ dynamic_keymap_set_keycode(LEFT_BAR, KC_ENT);
+ dynamic_keymap_set_keycode(RIGHT_BAR, KC_SPC);
+ PLAY_SONG(song_lers);
+ return false;
+ case KC_LSRE:
+ dynamic_keymap_set_keycode(LEFT_BAR, KC_SPC);
+ dynamic_keymap_set_keycode(RIGHT_BAR, KC_ENT);
+ PLAY_SONG(song_lsre);
+ return false;
+ default:
+ return true; // Process all other keycodes normally
+ }
+ }
+ return true;
+}
diff --git a/keyboards/preonic/keymaps/jpe230/rules.mk b/keyboards/preonic/keymaps/jpe230/rules.mk
new file mode 100644
index 0000000000..d57d1e33f2
--- /dev/null
+++ b/keyboards/preonic/keymaps/jpe230/rules.mk
@@ -0,0 +1,9 @@
+# Disable unused features inherited from the kb rules.mk
+RGBLIGHT_ENABLE = no
+ENCODER_ENABLE = no
+DIP_SWITCH_ENABLE = no
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+
+# Enable VIA
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/preonic/keymaps/keelhauler/keymap.c b/keyboards/preonic/keymaps/keelhauler/keymap.c
index dc0cffe094..d6adc08adb 100644
--- a/keyboards/preonic/keymaps/keelhauler/keymap.c
+++ b/keyboards/preonic/keymaps/keelhauler/keymap.c
@@ -161,7 +161,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid( \
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, \
+ _______, QK_BOOT, 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/preonic/keymaps/kinesis/config.h b/keyboards/preonic/keymaps/kinesis/config.h
index f85be752e4..eabce5e790 100644
--- a/keyboards/preonic/keymaps/kinesis/config.h
+++ b/keyboards/preonic/keymaps/kinesis/config.h
@@ -34,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Planck PCB default pin-out */
#define MATRIX_ROW_PINS { D2, D5, B5, B6, D3 }
#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B7
diff --git a/keyboards/preonic/keymaps/kjwon15/keymap.c b/keyboards/preonic/keymaps/kjwon15/keymap.c
index 2f25cdfa85..45db32be92 100644
--- a/keyboards/preonic/keymaps/kjwon15/keymap.c
+++ b/keyboards/preonic/keymaps/kjwon15/keymap.c
@@ -160,7 +160,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- KC_LOCK, RESET, CK_TOGG, MU_MOD, QWERTY, PURE, BLANK, KC_WH_D, KC_MS_U, KC_WH_U, _______, KC_DEL, \
+ KC_LOCK, QK_BOOT, CK_TOGG, MU_MOD, QWERTY, PURE, BLANK, KC_WH_D, KC_MS_U, KC_WH_U, _______, KC_DEL, \
_______, AU_ON, AU_OFF, KC_BTN2, KC_BTN1, AG_NORM, AG_SWAP, KC_MS_L, KC_MS_D, KC_MS_R, _______, KC_ACL0, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, KC_ACL1, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ACL2 \
diff --git a/keyboards/preonic/keymaps/kuatsure/keymap.c b/keyboards/preonic/keymaps/kuatsure/keymap.c
index 5bd7321d49..becb8dc559 100644
--- a/keyboards/preonic/keymaps/kuatsure/keymap.c
+++ b/keyboards/preonic/keymaps/kuatsure/keymap.c
@@ -130,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | MAKE | FLSH | | | | | | | | | Del |
* |------+------+------+------+------+-------------+------+------+------+------+------|
- * | | RESET| DEBUG| | |Aud on|AudOff| | | | | |
+ * | | QK_BOOT| DEBUG| | |Aud on|AudOff| | | | | |
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | VRSN | | |MusMod|Mus on|MusOff| | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -140,7 +140,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_preonic_grid_wrapper( \
____________FUNCTION_1____________, ____________FUNCTION_2____________, ____________FUNCTION_3____________, \
_______, KB_MAKE, KB_FLSH, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
- _______, RESET, DEBUG, _______, _______, AU_ON, AU_OFF, _______, _______, _______, _______, _______, \
+ _______, QK_BOOT, DEBUG, _______, _______, AU_ON, AU_OFF, _______, _______, _______, _______, _______, \
_______, KB_VRSN, _______, _______, MU_MOD, MU_ON, MU_OFF, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, QWERTY, GAME, _______, _______ \
),
diff --git a/keyboards/preonic/keymaps/laurentlaurent/keymap.c b/keyboards/preonic/keymaps/laurentlaurent/keymap.c
index 62943a420c..d9df9f16ef 100644
--- a/keyboards/preonic/keymaps/laurentlaurent/keymap.c
+++ b/keyboards/preonic/keymaps/laurentlaurent/keymap.c
@@ -277,7 +277,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid( \
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_TAB, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, XXXXXXX,
+ KC_TAB, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, XXXXXXX,
/*_______, _______, MU_MOD, AU_ON, AU_OFF, QWERTY, QWWIN, QWERTY, COLEMAK, DVORAK, _______, _______, \ Remove this if adding Colemak and Dvorak*/
_______, _______, MU_MOD, AU_ON, AU_OFF, QWERTY, QWWIN, QWERTY, QWWIN, _______, _______, KC_F12,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
diff --git a/keyboards/preonic/keymaps/mechmaster48/keymap.c b/keyboards/preonic/keymaps/mechmaster48/keymap.c
index ede3765238..9fcb737490 100644
--- a/keyboards/preonic/keymaps/mechmaster48/keymap.c
+++ b/keyboards/preonic/keymaps/mechmaster48/keymap.c
@@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid(
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,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/preonic/keymaps/mguterl/keymap.c b/keyboards/preonic/keymaps/mguterl/keymap.c
index 87a9cd32b3..184c111aef 100644
--- a/keyboards/preonic/keymaps/mguterl/keymap.c
+++ b/keyboards/preonic/keymaps/mguterl/keymap.c
@@ -164,7 +164,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid( \
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_GAME, RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL,
+ TG_GAME, QK_BOOT, 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/preonic/keymaps/mikethetiger/keymap.c b/keyboards/preonic/keymaps/mikethetiger/keymap.c
index 36e09e5501..1fb41129cd 100644
--- a/keyboards/preonic/keymaps/mikethetiger/keymap.c
+++ b/keyboards/preonic/keymaps/mikethetiger/keymap.c
@@ -157,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid(
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, \
+ _______, QK_BOOT, 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/preonic/keymaps/muzfuz/keymap.c b/keyboards/preonic/keymaps/muzfuz/keymap.c
index c0c7ae07e6..6baf32a51e 100644
--- a/keyboards/preonic/keymaps/muzfuz/keymap.c
+++ b/keyboards/preonic/keymaps/muzfuz/keymap.c
@@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid(
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, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL,
+ _______, QK_BOOT, 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, _______, _______, QWERTY, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
diff --git a/keyboards/preonic/keymaps/mverteuil/keymap.c b/keyboards/preonic/keymaps/mverteuil/keymap.c
index ef01851690..03388d785b 100644
--- a/keyboards/preonic/keymaps/mverteuil/keymap.c
+++ b/keyboards/preonic/keymaps/mverteuil/keymap.c
@@ -228,7 +228,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_preonic_1x2uC (
- AU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_HUD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, RESET,
+ AU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_HUD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, QK_BOOT,
CK_TOGG, CK_DOWN, CK_UP, XXXXXXX, RGB_SAI, RGB_SAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TERM_ON, TERM_OFF,
MU_TOG, MUV_DE, MUV_IN, XXXXXXX, RGB_VAI, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AG_NORM, AG_SWAP,
MI_TOG, 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, RGB_SPI, KC_LSHIFT,
diff --git a/keyboards/preonic/keymaps/mverteuil_2x2u/keymap.c b/keyboards/preonic/keymaps/mverteuil_2x2u/keymap.c
index 4b28058540..a54b547d8c 100644
--- a/keyboards/preonic/keymaps/mverteuil_2x2u/keymap.c
+++ b/keyboards/preonic/keymaps/mverteuil_2x2u/keymap.c
@@ -204,7 +204,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_preonic_2x2u (
- AU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_HUD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, RESET,
+ AU_TOG, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_HUD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DEBUG, QK_BOOT,
CK_TOGG, CK_DOWN, CK_UP, XXXXXXX, RGB_SAI, RGB_SAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TERM_ON, TERM_OFF,
MU_TOG, MUV_DE, MUV_IN, XXXXXXX, RGB_VAI, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, AG_NORM, AG_SWAP,
MI_TOG, 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, RGB_SPI, KC_LSHIFT,
diff --git a/keyboards/preonic/keymaps/nikchi/keymap.c b/keyboards/preonic/keymaps/nikchi/keymap.c
index 34d837cd64..861c2ae03b 100644
--- a/keyboards/preonic/keymaps/nikchi/keymap.c
+++ b/keyboards/preonic/keymaps/nikchi/keymap.c
@@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid(
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, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/preonic/keymaps/pcurt854/keymap.c b/keyboards/preonic/keymaps/pcurt854/keymap.c
index 4620f32390..9d82aa9fd4 100644
--- a/keyboards/preonic/keymaps/pcurt854/keymap.c
+++ b/keyboards/preonic/keymaps/pcurt854/keymap.c
@@ -212,8 +212,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------------------------------------------------.
* | | F11 | F12 | F13 | F14 | F15 | F16 | F17 | F18 | F19 | F20 | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | |Qwerty|Colemk|Dvorak| | | | | | |Print |RESET |
- * | | | | | | | | | | |screen|RESET |
+ * | |Qwerty|Colemk|Dvorak| | | | | | |Print |QK_BOOT |
+ * | | | | | | | | | | |screen|QK_BOOT |
* |------+------+------+------+------+-------------+------+------+------+------+------|
* | | |Sleep |show | | |finder|mv win| |Lock | | |
* | | | |Dsktp | | |Hddn |clkw | |screen| | |
@@ -227,7 +227,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid(
XXXXXXX, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, XXXXXXX,
- XXXXXXX, QWERTY, COLEMAK, DVORAK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, SCMD(KC_5), RESET,
+ XXXXXXX, QWERTY, COLEMAK, DVORAK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, SCMD(KC_5), QK_BOOT,
XXXXXXX, XXXXXXX, C(LCMD(KC_PAUSE)),
LCMD(KC_F4),
XXXXXXX, XXXXXXX, SCMD(KC_DOT),
diff --git a/keyboards/preonic/keymaps/pezhore/keymap.c b/keyboards/preonic/keymaps/pezhore/keymap.c
index c41fb4500f..46addbca48 100644
--- a/keyboards/preonic/keymaps/pezhore/keymap.c
+++ b/keyboards/preonic/keymaps/pezhore/keymap.c
@@ -161,7 +161,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid(
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,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF, _______, _______, KC_DEL,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/preonic/keymaps/pitty/keymap.c b/keyboards/preonic/keymaps/pitty/keymap.c
index 25c648eea6..249ff16a76 100644
--- a/keyboards/preonic/keymaps/pitty/keymap.c
+++ b/keyboards/preonic/keymaps/pitty/keymap.c
@@ -137,7 +137,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid( \
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, \
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_QWERTY) \
diff --git a/keyboards/preonic/keymaps/pvillano/keymap.c b/keyboards/preonic/keymaps/pvillano/keymap.c
index 093948e093..5800a9490b 100644
--- a/keyboards/preonic/keymaps/pvillano/keymap.c
+++ b/keyboards/preonic/keymaps/pvillano/keymap.c
@@ -92,7 +92,7 @@
*/
[_FUN] = LAYOUT_preonic_grid(
_______, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, _______, _______, _______, _______, KC_DEL,
- _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, _______, _______, RESET, _______,
+ _______, KC_F5, KC_F6, KC_F7, KC_F8, _______, _______, _______, _______, _______, QK_BOOT, _______,
_______, KC_F9, KC_F10, KC_F11, KC_F12, TG(_GAME),_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_NLCK, MU_TOG, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/preonic/keymaps/senseored/keymap.c b/keyboards/preonic/keymaps/senseored/keymap.c
index e152507835..531b08285f 100644
--- a/keyboards/preonic/keymaps/senseored/keymap.c
+++ b/keyboards/preonic/keymaps/senseored/keymap.c
@@ -164,7 +164,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid( \
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
- TO(_GAMEMODE), RESET, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \
+ TO(_GAMEMODE), QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_QWERTY) \
@@ -367,7 +367,7 @@ bool dip_switch_update_user(uint8_t index, bool active) {
layer_state_t layer_state_set_user(layer_state_t state) {
// if(rgblight_get_mode() == 1) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _QWERTY:
if(bnumlock) {
tap_code(KC_NLCK);
diff --git a/keyboards/preonic/keymaps/smt/keymap.c b/keyboards/preonic/keymaps/smt/keymap.c
index bb561a72cf..3600a15e66 100644
--- a/keyboards/preonic/keymaps/smt/keymap.c
+++ b/keyboards/preonic/keymaps/smt/keymap.c
@@ -148,7 +148,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_preonic_grid( \
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, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, 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/preonic/keymaps/that_canadian/keymap.c b/keyboards/preonic/keymaps/that_canadian/keymap.c
index d1d274f293..5b5e8266a9 100644
--- a/keyboards/preonic/keymaps/that_canadian/keymap.c
+++ b/keyboards/preonic/keymaps/that_canadian/keymap.c
@@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof| | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | |RESET |
+ * | | | | | | | | | | | |QK_BOOT |
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_preonic_grid( \
@@ -107,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
TSKMGR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, CALTDEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, _______, _______, _______, _______, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT \
),
/* Function
diff --git a/keyboards/preonic/keymaps/trigotometry/keymap.c b/keyboards/preonic/keymaps/trigotometry/keymap.c
index 31cee4a4cd..f44c8becbe 100644
--- a/keyboards/preonic/keymaps/trigotometry/keymap.c
+++ b/keyboards/preonic/keymaps/trigotometry/keymap.c
@@ -104,7 +104,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSLS, XXXXXXX, XXXXXXX, KC_PSLS, XXXXXXX, XXXXXXX, XXXXXXX, _______, \
_______, KC_PIPE, KC_LBRC, KC_LCBR, KC_LPRN, KC_LABK, KC_RABK, KC_RPRN, KC_RCBR, KC_RBRC, KC_PIPE, XXXXXXX, \
_______, XXXXXXX, XXXXXXX, XXXXXXX, KC_PPLS, KC_PMNS, KC_UNDS, KC_EQL, XXXXXXX, XXXXXXX, XXXXXXX, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, QWERTY , GAMING, XXXXXXX, RESET \
+ _______, _______, _______, _______, _______, _______, _______, _______, QWERTY , GAMING, XXXXXXX, QK_BOOT \
)
};
diff --git a/keyboards/preonic/keymaps/ttys0/keymap.c b/keyboards/preonic/keymaps/ttys0/keymap.c
index 577e69e741..38d816de48 100644
--- a/keyboards/preonic/keymaps/ttys0/keymap.c
+++ b/keyboards/preonic/keymaps/ttys0/keymap.c
@@ -127,7 +127,7 @@
#define move MO(MOVE)
#define func MO(FUNC)
-#define rset RESET
+#define rset QK_BOOT
#define powr KC_POWER
#define ____ KC_TRNS
diff --git a/keyboards/preonic/keymaps/zach/config.h b/keyboards/preonic/keymaps/zach/config.h
index d69952fa88..37e85bf512 100644
--- a/keyboards/preonic/keymaps/zach/config.h
+++ b/keyboards/preonic/keymaps/zach/config.h
@@ -34,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Planck PCB default pin-out */
#define MATRIX_ROW_PINS { D2, D5, B5, B6, D3 }
#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B7
diff --git a/keyboards/preonic/keymaps/zach/keymap.c b/keyboards/preonic/keymaps/zach/keymap.c
index 8e29d59731..7423f9639d 100644
--- a/keyboards/preonic/keymaps/zach/keymap.c
+++ b/keyboards/preonic/keymaps/zach/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
UNILIN, SUPA2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, \
XXXXXXX, DEGREE, IBANG, LAROW, RAROW, SWCOLE, COLEMAK, KC_F5, KC_F6, KC_F7, KC_F8, BL_INC, \
_______, CADKEY, MICRO, WOMEGA, OMEGA, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, BL_DEC, \
- _______, _______, _______, _______, _______, RESET, _______, XXXXXXX, MUV_DE, MUV_IN, BL_TOGG \
+ _______, _______, _______, _______, _______, QK_BOOT, _______, XXXXXXX, MUV_DE, MUV_IN, BL_TOGG \
),
[_UNICODES] = LAYOUT_preonic_1x2uC( /* UNICODES - Extra layer for unicode stuff */
diff --git a/keyboards/preonic/rev1/config.h b/keyboards/preonic/rev1/config.h
deleted file mode 100644
index a1091b10ed..0000000000
--- a/keyboards/preonic/rev1/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Copyright 2017 Jack Humbert <jack.humb@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 DEVICE_VER 0x0001
-#define PRODUCT_ID 0x67F3
diff --git a/keyboards/preonic/rev1/info.json b/keyboards/preonic/rev1/info.json
new file mode 100644
index 0000000000..1a44f3a2d6
--- /dev/null
+++ b/keyboards/preonic/rev1/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Preonic",
+ "manufacturer": "OLKB",
+ "usb": {
+ "vid": "0x03A8",
+ "pid": "0x67F3",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/preonic/rev2/config.h b/keyboards/preonic/rev2/config.h
deleted file mode 100644
index a62fed4850..0000000000
--- a/keyboards/preonic/rev2/config.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Copyright 2017 Jack Humbert <jack.humb@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 DEVICE_VER 0x0002
-#define PRODUCT_ID 0x67F3
diff --git a/keyboards/preonic/rev2/info.json b/keyboards/preonic/rev2/info.json
new file mode 100644
index 0000000000..5362084dc7
--- /dev/null
+++ b/keyboards/preonic/rev2/info.json
@@ -0,0 +1,9 @@
+{
+ "keyboard_name": "Preonic",
+ "manufacturer": "OLKB",
+ "usb": {
+ "vid": "0x03A8",
+ "pid": "0x67F3",
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/preonic/rev3/config.h b/keyboards/preonic/rev3/config.h
index efa32d5916..5590ba0252 100644
--- a/keyboards/preonic/rev3/config.h
+++ b/keyboards/preonic/rev3/config.h
@@ -17,10 +17,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0003
-#define PRODUCT_ID 0xA649
-
#undef MATRIX_ROWS
#undef MATRIX_COLS
/* key matrix size */
@@ -31,7 +27,6 @@
#undef MATRIX_COL_PINS
#define MATRIX_ROW_PINS { A10, A9, A8, B15, C13, C14, C15, A2, A3, A6 }
#define MATRIX_COL_PINS { B11, B10, B2, B1, A7, B0 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { B12 }
#define ENCODERS_PAD_B { B13 }
diff --git a/keyboards/preonic/rev3/info.json b/keyboards/preonic/rev3/info.json
index 8b7a65384e..1f13d480d2 100644
--- a/keyboards/preonic/rev3/info.json
+++ b/keyboards/preonic/rev3/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Preonic rev. 3",
- "url": "https://olkb.com/preonic",
- "maintainer": "jackhumbert",
+ "keyboard_name": "Preonic",
+ "manufacturer": "OLKB",
+ "usb": {
+ "vid": "0x03A8",
+ "pid": "0xA649",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_preonic_1x2uC": {
"layout": [
diff --git a/keyboards/preonic/rev3_drop/config.h b/keyboards/preonic/rev3_drop/config.h
index 813675eb84..5590ba0252 100644
--- a/keyboards/preonic/rev3_drop/config.h
+++ b/keyboards/preonic/rev3_drop/config.h
@@ -17,12 +17,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0003
-#define PRODUCT_ID 0xA649
-#undef MANUFACTURER
-#define MANUFACTURER Drop
-
#undef MATRIX_ROWS
#undef MATRIX_COLS
/* key matrix size */
@@ -33,7 +27,6 @@
#undef MATRIX_COL_PINS
#define MATRIX_ROW_PINS { A10, A9, A8, B15, C13, C14, C15, A2, A3, A6 }
#define MATRIX_COL_PINS { B11, B10, B2, B1, A7, B0 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { B12 }
#define ENCODERS_PAD_B { B13 }
diff --git a/keyboards/preonic/rev3_drop/info.json b/keyboards/preonic/rev3_drop/info.json
index 8b7a65384e..081d9e1983 100644
--- a/keyboards/preonic/rev3_drop/info.json
+++ b/keyboards/preonic/rev3_drop/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Preonic rev. 3",
- "url": "https://olkb.com/preonic",
- "maintainer": "jackhumbert",
+ "keyboard_name": "Preonic",
+ "manufacturer": "Drop",
+ "usb": {
+ "vid": "0x03A8",
+ "pid": "0xA649",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_preonic_1x2uC": {
"layout": [
diff --git a/keyboards/preonic/rev3_drop/matrix.c b/keyboards/preonic/rev3_drop/matrix.c
index 07171a39e9..82214e03d9 100644
--- a/keyboards/preonic/rev3_drop/matrix.c
+++ b/keyboards/preonic/rev3_drop/matrix.c
@@ -15,14 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <stdint.h>
-#include <stdbool.h>
-#include <string.h>
-#include "hal.h"
-#include "timer.h"
-#include "wait.h"
-#include "debug.h"
-#include "matrix.h"
+#include "quantum.h"
typedef uint16_t matrix_col_t;
@@ -40,9 +33,13 @@ __attribute__((weak)) void matrix_init_user(void) {}
__attribute__((weak)) void matrix_scan_user(void) {}
-__attribute__((weak)) void matrix_init_kb(void) { matrix_init_user(); }
+__attribute__((weak)) void matrix_init_kb(void) {
+ matrix_init_user();
+}
-__attribute__((weak)) void matrix_scan_kb(void) { matrix_scan_user(); }
+__attribute__((weak)) void matrix_scan_kb(void) {
+ matrix_scan_user();
+}
void matrix_init(void) {
dprintf("matrix init\n");
@@ -150,9 +147,13 @@ uint8_t matrix_scan(void) {
return 1;
}
-bool matrix_is_on(uint8_t row, uint8_t col) { return (matrix[row] & (1 << col)); }
+bool matrix_is_on(uint8_t row, uint8_t col) {
+ return (matrix[row] & (1 << col));
+}
-matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; }
+matrix_row_t matrix_get_row(uint8_t row) {
+ return matrix[row];
+}
void matrix_print(void) {
dprintf("\nr/c 01234567\n");
diff --git a/keyboards/primekb/meridian/config.h b/keyboards/primekb/meridian/config.h
index 082392c6bd..916847cf07 100644
--- a/keyboards/primekb/meridian/config.h
+++ b/keyboards/primekb/meridian/config.h
@@ -17,13 +17,6 @@ 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
diff --git a/keyboards/primekb/meridian/info.json b/keyboards/primekb/meridian/info.json
index 4c46e325c5..c12b1b7587 100644
--- a/keyboards/primekb/meridian/info.json
+++ b/keyboards/primekb/meridian/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Meridian",
+ "manufacturer": "Prime Keyboards",
"url": "https://www.primekb.com",
"maintainer": "holtenc",
+ "usb": {
+ "vid": "0x5052",
+ "pid": "0x004D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_unified_bs_rshift": {
"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":2.75}, {"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/primekb/meridian/ktr1010/config.h b/keyboards/primekb/meridian/ktr1010/config.h
index bf91dc9715..faba78554f 100644
--- a/keyboards/primekb/meridian/ktr1010/config.h
+++ b/keyboards/primekb/meridian/ktr1010/config.h
@@ -17,13 +17,6 @@ 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
diff --git a/keyboards/primekb/meridian/readme.md b/keyboards/primekb/meridian/readme.md
index 01df9c5ba3..8e95ae263d 100644
--- a/keyboards/primekb/meridian/readme.md
+++ b/keyboards/primekb/meridian/readme.md
@@ -13,7 +13,7 @@ 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).
+* **Keycode in layout**: press the key mapped to `QK_BOOT` if it is available (Escape key on layer 1 in the default layout).
### Compile firmware
diff --git a/keyboards/primekb/meridian/ws2812/config.h b/keyboards/primekb/meridian/ws2812/config.h
index 082392c6bd..916847cf07 100644
--- a/keyboards/primekb/meridian/ws2812/config.h
+++ b/keyboards/primekb/meridian/ws2812/config.h
@@ -17,13 +17,6 @@ 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
diff --git a/keyboards/primekb/meridian_rgb/config.h b/keyboards/primekb/meridian_rgb/config.h
index 4dc63d91ce..542cda7ca6 100644
--- a/keyboards/primekb/meridian_rgb/config.h
+++ b/keyboards/primekb/meridian_rgb/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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 Meridian RGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/primekb/meridian_rgb/info.json b/keyboards/primekb/meridian_rgb/info.json
index 606fab0692..eebf1ea394 100644
--- a/keyboards/primekb/meridian_rgb/info.json
+++ b/keyboards/primekb/meridian_rgb/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Meridian RGB",
+ "manufacturer": "Prime Keyboards",
"url": "https://www.primekb.com",
"maintainer": "holtenc",
+ "usb": {
+ "vid": "0x5052",
+ "pid": "0x0042",
+ "device_version": "0.0.2"
+ },
"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/primekb/meridian_rgb/readme.md b/keyboards/primekb/meridian_rgb/readme.md
index d07752ae3d..52457c4f47 100644
--- a/keyboards/primekb/meridian_rgb/readme.md
+++ b/keyboards/primekb/meridian_rgb/readme.md
@@ -19,4 +19,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* Keycode in layout: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/primekb/prime_e/config.h b/keyboards/primekb/prime_e/config.h
index 343a9dc0bf..f1bd0090c7 100644
--- a/keyboards/primekb/prime_e/config.h
+++ b/keyboards/primekb/prime_e/config.h
@@ -19,10 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5052
-#define MANUFACTURER PrimeKB
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
diff --git a/keyboards/primekb/prime_e/info.json b/keyboards/primekb/prime_e/info.json
index ee83f1bcbc..25f14ee9ce 100644
--- a/keyboards/primekb/prime_e/info.json
+++ b/keyboards/primekb/prime_e/info.json
@@ -1,7 +1,10 @@
{
- "keyboard_name": "Prime_E",
+ "manufacturer": "PrimeKB",
"url": "https://www.primekb.com",
"maintainer": "holtenc",
+ "usb": {
+ "vid": "0x5052"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0,"y":0,"w":1,"h":1}, {"x":1,"y":0,"w":1,"h":1}, {"x":2,"y":0,"w":1,"h":1}, {"x":3,"y":0,"w":1,"h":1}, {"x":4,"y":0,"w":1,"h":1}, {"x":5,"y":0,"w":1,"h":1}, {"x":7,"y":0,"w":1,"h":1}, {"x":8,"y":0,"w":1,"h":1}, {"x":9,"y":0,"w":1,"h":1}, {"x":10,"y":0,"w":1,"h":1}, {"x":11,"y":0,"w":1,"h":1}, {"x":12,"y":0,"w":1,"h":1}, {"x":13,"y":0,"w":1,"h":1},
diff --git a/keyboards/primekb/prime_e/keymaps/brandonschlack/keymap.c b/keyboards/primekb/prime_e/keymaps/brandonschlack/keymap.c
index a92fcbfec6..29b2f3214b 100644
--- a/keyboards/primekb/prime_e/keymaps/brandonschlack/keymap.c
+++ b/keyboards/primekb/prime_e/keymaps/brandonschlack/keymap.c
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT( \
- QM_MAKE, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, \
+ QM_MAKE, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/primekb/prime_e/keymaps/gwillad/keymap.c b/keyboards/primekb/prime_e/keymaps/gwillad/keymap.c
index 7b10be8c01..5dbdc4cfc8 100644
--- a/keyboards/primekb/prime_e/keymaps/gwillad/keymap.c
+++ b/keyboards/primekb/prime_e/keymaps/gwillad/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
diff --git a/keyboards/primekb/prime_e/keymaps/madhatter/keymap.c b/keyboards/primekb/prime_e/keymaps/madhatter/keymap.c
index 099d6e0325..e02cedcec9 100644
--- a/keyboards/primekb/prime_e/keymaps/madhatter/keymap.c
+++ b/keyboards/primekb/prime_e/keymaps/madhatter/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_ENT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UNDS, KC_PLUS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
diff --git a/keyboards/primekb/prime_e/keymaps/milestogo/config.h b/keyboards/primekb/prime_e/keymaps/milestogo/config.h
index 24a42bb185..c3f9e43415 100644
--- a/keyboards/primekb/prime_e/keymaps/milestogo/config.h
+++ b/keyboards/primekb/prime_e/keymaps/milestogo/config.h
@@ -30,7 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { E6, C7, B5, B4, C6 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D6, D4, D5, D3, D2, D1, D0, B6, D7}
-#define UNUSED_PINS
// Babble config
#define USE_BABBLEPASTE
diff --git a/keyboards/primekb/prime_e/keymaps/peott-fr/keymap.c b/keyboards/primekb/prime_e/keymaps/peott-fr/keymap.c
index 7724c2b435..3ad641179a 100644
--- a/keyboards/primekb/prime_e/keymaps/peott-fr/keymap.c
+++ b/keyboards/primekb/prime_e/keymaps/peott-fr/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_RALT, KC_RCTL
),
[_FUNC] = 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,
+ QK_BOOT, KC_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_INS, KC_TRNS, KC_TRNS,
KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_RSFT,
KC_LCTL, KC_LALT, KC_TRNS, KC_TRNS, KC_TRNS, KC_RGUI, KC_RALT, KC_RCTL
diff --git a/keyboards/primekb/prime_e/keymaps/via/keymap.c b/keyboards/primekb/prime_e/keymaps/via/keymap.c
index 195f845cc2..2d1d003d51 100644
--- a/keyboards/primekb/prime_e/keymaps/via/keymap.c
+++ b/keyboards/primekb/prime_e/keymaps/via/keymap.c
@@ -108,7 +108,7 @@ void led_set_user(uint8_t usb_led) {
//function for layer indicator LED
layer_state_t layer_state_set_user(layer_state_t state)
{
- if (biton32(state) == 1) {
+ if (get_highest_layer(state) == 1) {
writePinHigh(B3);
} else {
writePinLow(B3);
diff --git a/keyboards/primekb/prime_e/rgb/config.h b/keyboards/primekb/prime_e/rgb/config.h
index a562ffba81..89cf43902c 100644
--- a/keyboards/primekb/prime_e/rgb/config.h
+++ b/keyboards/primekb/prime_e/rgb/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x0052
-#define DEVICE_VER 0x0001
-#define PRODUCT Prime_E RGB
-
#define RGB_DI_PIN B7
#define RGBLED_NUM 8
#define RGBLIGHT_ANIMATIONS
diff --git a/keyboards/primekb/prime_e/rgb/info.json b/keyboards/primekb/prime_e/rgb/info.json
new file mode 100644
index 0000000000..1d40389e87
--- /dev/null
+++ b/keyboards/primekb/prime_e/rgb/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Prime_E RGB",
+ "usb": {
+ "pid": "0x0052",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/primekb/prime_e/std/config.h b/keyboards/primekb/prime_e/std/config.h
index a711e35b21..d6b242e08e 100644
--- a/keyboards/primekb/prime_e/std/config.h
+++ b/keyboards/primekb/prime_e/std/config.h
@@ -19,10 +19,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x0051
-#define DEVICE_VER 0x0001
-#define PRODUCT Prime_E
-
#define BACKLIGHT_PIN B7
#define BACKLIGHT_LEVELS 5
diff --git a/keyboards/primekb/prime_e/std/info.json b/keyboards/primekb/prime_e/std/info.json
new file mode 100644
index 0000000000..04f8842546
--- /dev/null
+++ b/keyboards/primekb/prime_e/std/info.json
@@ -0,0 +1,7 @@
+{
+ "keyboard_name": "Prime_E",
+ "usb": {
+ "pid": "0x0051",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/primekb/prime_l/config.h b/keyboards/primekb/prime_l/config.h
index 92cbe3f664..f6084f3280 100644
--- a/keyboards/primekb/prime_l/config.h
+++ b/keyboards/primekb/prime_l/config.h
@@ -20,10 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5052
-#define MANUFACTURER PrimeKB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/primekb/prime_l/info.json b/keyboards/primekb/prime_l/info.json
index ac537202f3..88a2cdb065 100644
--- a/keyboards/primekb/prime_l/info.json
+++ b/keyboards/primekb/prime_l/info.json
@@ -1,7 +1,10 @@
{
- "keyboard_name": "Prime_L",
+ "manufacturer": "PrimeKB",
"url": "https://www.primekb.com",
"maintainer": "MxBlu",
+ "usb": {
+ "vid": "0x5052"
+ },
"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}, {"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, "w":1.25}, {"x":4.25, "y":2}, {"x":5.25, "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}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":13.25, "y":2}, {"x":14.25, "y":2, "w":1.75}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3, "w":1.75}, {"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}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.25}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4, "w":1.25}, {"x":4.25, "y":4, "w":1.25}, {"x":5.5, "y":4}, {"x":6.5, "y":4}, {"x":7.5, "y":4, "w":2}, {"x":9.5, "y":4, "w":2.25}, {"x":11.75, "y":4}, {"x":12.75, "y":4}, {"x":13.75, "y":4}, {"x":14.75, "y":4, "w":1.25}]
diff --git a/keyboards/primekb/prime_l/v1/config.h b/keyboards/primekb/prime_l/v1/config.h
index afa8c62460..e5a2f04158 100644
--- a/keyboards/primekb/prime_l/v1/config.h
+++ b/keyboards/primekb/prime_l/v1/config.h
@@ -20,15 +20,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x504C
-#define DEVICE_VER 0x0001
-#define PRODUCT Prime_L V1
-
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { D1, D0, B7, B3, B2 }
#define MATRIX_COL_PINS { D2, D3, D5, D4, D6, D7, B4, B5, C7, C6, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B6
/*#define BACKLIGHT_BREATHING*/
diff --git a/keyboards/primekb/prime_l/v1/info.json b/keyboards/primekb/prime_l/v1/info.json
index ac537202f3..628aa67c10 100644
--- a/keyboards/primekb/prime_l/v1/info.json
+++ b/keyboards/primekb/prime_l/v1/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Prime_L",
+ "keyboard_name": "Prime_L V1",
"url": "https://www.primekb.com",
"maintainer": "MxBlu",
+ "usb": {
+ "pid": "0x504C",
+ "device_version": "0.0.1"
+ },
"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}, {"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, "w":1.25}, {"x":4.25, "y":2}, {"x":5.25, "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}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":13.25, "y":2}, {"x":14.25, "y":2, "w":1.75}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3, "w":1.75}, {"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}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.25}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":4}, {"x":3, "y":4, "w":1.25}, {"x":4.25, "y":4, "w":1.25}, {"x":5.5, "y":4}, {"x":6.5, "y":4}, {"x":7.5, "y":4, "w":2}, {"x":9.5, "y":4, "w":2.25}, {"x":11.75, "y":4}, {"x":12.75, "y":4}, {"x":13.75, "y":4}, {"x":14.75, "y":4, "w":1.25}]
diff --git a/keyboards/primekb/prime_l/v2/config.h b/keyboards/primekb/prime_l/v2/config.h
index 1386a127fe..d479a57f66 100644
--- a/keyboards/primekb/prime_l/v2/config.h
+++ b/keyboards/primekb/prime_l/v2/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT_ID 0x5042
-#define DEVICE_VER 0x0002
-#define PRODUCT Prime_L V2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -31,4 +26,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { E6, B2, B1, B0, B6 }
#define MATRIX_COL_PINS { C6, C7, F7, F6, F5, F4, F1, F0, D4, D0, D1, D2, D3, D5, B7, B3 }
-#define UNUSED_PINS \ No newline at end of file
diff --git a/keyboards/primekb/prime_l/v2/info.json b/keyboards/primekb/prime_l/v2/info.json
index b8033eae30..7199de33f6 100644
--- a/keyboards/primekb/prime_l/v2/info.json
+++ b/keyboards/primekb/prime_l/v2/info.json
@@ -2,6 +2,10 @@
"keyboard_name": "Prime_L V2",
"url": "https://www.primekb.com",
"maintainer": "HoltenC",
+ "usb": {
+ "pid": "0x5042",
+ "device_version": "0.0.2"
+ },
"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},
diff --git a/keyboards/primekb/prime_m/config.h b/keyboards/primekb/prime_m/config.h
index 3b01b5380e..3468ea975e 100644
--- a/keyboards/primekb/prime_m/config.h
+++ b/keyboards/primekb/prime_m/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5052 // "PR"
-#define PRODUCT_ID 0x504D // "PM"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER PrimeKB
-#define PRODUCT Prime_M
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 6
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { C5, B5, B2, D5, D3 }
#define MATRIX_COL_PINS { B3, C7, C6, D2, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/primekb/prime_m/info.json b/keyboards/primekb/prime_m/info.json
index c692690ba0..06a7d46447 100644
--- a/keyboards/primekb/prime_m/info.json
+++ b/keyboards/primekb/prime_m/info.json
@@ -1,8 +1,13 @@
-
{
"keyboard_name": "Prime_M",
+ "manufacturer": "PrimeKB",
"url": "https://www.primekb.com",
"maintainer": "MxBlu",
+ "usb": {
+ "vid": "0x5052",
+ "pid": "0x504D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x6": {
"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":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "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":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "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}]
diff --git a/keyboards/primekb/prime_m/keymaps/numpad/keymap.c b/keyboards/primekb/prime_m/keymaps/numpad/keymap.c
index 35ff30a0c8..80c572db1b 100644
--- a/keyboards/primekb/prime_m/keymaps/numpad/keymap.c
+++ b/keyboards/primekb/prime_m/keymaps/numpad/keymap.c
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, TG(1), KC_P0, KC_PDOT, KC_PENT
),
[1] = LAYOUT_numpad_5x6(
- RESET, KC_LPRN, KC_RPRN, KC_PSLS, KC_PAST, KC_PMNS,
+ QK_BOOT, KC_LPRN, KC_RPRN, KC_PSLS, KC_PAST, KC_PMNS,
KC_A, KC_B, KC_HOME, KC_UP, KC_PGUP,
KC_C, KC_D, KC_LEFT, KC_NO, KC_RGHT, KC_PPLS,
KC_E, KC_F, KC_END, KC_DOWN, KC_PGDN,
diff --git a/keyboards/primekb/prime_o/config.h b/keyboards/primekb/prime_o/config.h
index 9639f9b8f5..60edde57e7 100644
--- a/keyboards/primekb/prime_o/config.h
+++ b/keyboards/primekb/prime_o/config.h
@@ -19,13 +19,6 @@ 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 0x4024
-#define DEVICE_VER 0x0001
-#define MANUFACTURER PrimeKB
-#define PRODUCT Prime_O
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { D4, D6, B1, C5, B4, B3, C4, B2, B0, D5 }
#define MATRIX_COL_PINS { B6, B5, C7, C6, D2, D1, D0, C2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/primekb/prime_o/info.json b/keyboards/primekb/prime_o/info.json
index eb54834020..164c431a67 100644
--- a/keyboards/primekb/prime_o/info.json
+++ b/keyboards/primekb/prime_o/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Prime_O",
+ "manufacturer": "PrimeKB",
"url": "https://www.primekb.com",
"maintainer": "MxBlu",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x4024",
+ "device_version": "0.0.1"
+ },
"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}, {"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}, {"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}, {"x":15, "y":4}]
diff --git a/keyboards/primekb/prime_o/keymaps/reasonsandreasons/keymap.c b/keyboards/primekb/prime_o/keymaps/reasonsandreasons/keymap.c
index 2a320aecf2..e8ca64c908 100644
--- a/keyboards/primekb/prime_o/keymaps/reasonsandreasons/keymap.c
+++ b/keyboards/primekb/prime_o/keymaps/reasonsandreasons/keymap.c
@@ -130,7 +130,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | PgUp | Home | Up | End | | | Vol- | Vol+ | Mute | | | | | | |
* | | | | | | | | | | | | | | | | |
* |------+------|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
- * | | PgDn | Left | Down |Right | | | Play | Prev | Next | | | | | | RESET|
+ * | | PgDn | Left | Down |Right | | | Play | Prev | Next | | | | | | QK_BOOT|
* | | | | | | | | | | | | | | | | |
* |------+------|------+------+------+------+------+------+------+------+------+------+------+------+------+------|
* | | | | | | | | | | | | | | | | |
@@ -144,7 +144,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[3] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_PGUP, KC_HOME, KC_UP, KC_END, _______, _______, KC__VOLDOWN, KC__VOLUP, KC__MUTE, _______, _______, _______, _______, _______, _______,
- _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MPLY, KC_MRWD, KC_MFFD, _______, _______, _______, _______, _______, RESET,
+ _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_MPLY, KC_MRWD, KC_MFFD, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_TOGG,
DF(1), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_STEP, BL_TOGG
),
diff --git a/keyboards/primekb/prime_o/keymaps/spacebarracecar/keymap.c b/keyboards/primekb/prime_o/keymaps/spacebarracecar/keymap.c
index dbcc8c31a3..040827308b 100644
--- a/keyboards/primekb/prime_o/keymaps/spacebarracecar/keymap.c
+++ b/keyboards/primekb/prime_o/keymaps/spacebarracecar/keymap.c
@@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
| |1 |2 |3 | |Prev |Pause |Next |LowerVol |RaiseVol |Mute | | | | | |
|Enter |---------+---------+---------|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
-| |. |0 |00 |RESET |ESCT | | | | | | | | | |Game |
+| |. |0 |00 |QK_BOOT |ESCT | | | | | | | | | |Game |
`---------------------------------------------------------------------------------------------------------------------------------------------------------------'
*/
@@ -120,7 +120,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
CU_EQL, _______, _______, _______, _______, KC_PGDN, KC_UP, KC_PGUP, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, GUIU, XXXXXXX, XXXXXXX, KC_DEL,
CU_EQL, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, GUIL, GUID, GUIR, EMOJI, KC_ENT,
_______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
- _______, _______, _______, _______, RESET, ALTF4, _______, _______, _______, KC_SPC, CTLENT, _______, _______, _______, _______, CU_GAME
+ _______, _______, _______, _______, QK_BOOT, ALTF4, _______, _______, _______, KC_SPC, CTLENT, _______, _______, _______, _______, CU_GAME
),
// Can be used to place macros on the numpad
diff --git a/keyboards/primekb/prime_r/config.h b/keyboards/primekb/prime_r/config.h
index b73eb346a7..a75d608e3c 100644
--- a/keyboards/primekb/prime_r/config.h
+++ b/keyboards/primekb/prime_r/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER PrimeKB
-#define PRODUCT Prime_R
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { D1, D0, B7, B3, B2 }
#define MATRIX_COL_PINS { D2, D3, D5, D4, D6, D7, B4, B5, C7, C6, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/primekb/prime_r/info.json b/keyboards/primekb/prime_r/info.json
index a9e77a5ef9..c29b0419f8 100644
--- a/keyboards/primekb/prime_r/info.json
+++ b/keyboards/primekb/prime_r/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Prime_R",
+ "manufacturer": "PrimeKB",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "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":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K015", "x":15, "y":0}, {"label":"K100", "x":0, "y":1}, {"label":"K101", "x":1, "y":1}, {"label":"K102", "x":2, "y":1}, {"label":"K103", "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":"K108", "x":8, "y":1}, {"label":"K109", "x":9, "y":1}, {"label":"K110", "x":10, "y":1}, {"label":"K111", "x":11, "y":1}, {"label":"K112", "x":12, "y":1}, {"label":"K113", "x":13, "y":1}, {"label":"K114", "x":14, "y":1}, {"label":"K115", "x":15, "y":1}, {"label":"K200", "x":0, "y":2, "w":1.25}, {"label":"K201", "x":1.25, "y":2}, {"label":"K202", "x":2.25, "y":2}, {"label":"K203", "x":3.25, "y":2}, {"label":"K204", "x":4.25, "y":2}, {"label":"K205", "x":5.25, "y":2}, {"label":"K206", "x":6.25, "y":2}, {"label":"K207", "x":7.25, "y":2}, {"label":"K208", "x":8.25, "y":2}, {"label":"K209", "x":9.25, "y":2}, {"label":"K210", "x":10.25, "y":2}, {"label":"K212", "x":11.25, "y":2, "w":1.75}, {"label":"K213", "x":13, "y":2}, {"label":"K214", "x":14, "y":2}, {"label":"K215", "x":15, "y":2}, {"label":"K300", "x":0, "y":3, "w":1.75}, {"label":"K302", "x":1.75, "y":3}, {"label":"K303", "x":2.75, "y":3}, {"label":"K304", "x":3.75, "y":3}, {"label":"K305", "x":4.75, "y":3}, {"label":"K306", "x":5.75, "y":3}, {"label":"K307", "x":6.75, "y":3}, {"label":"K308", "x":7.75, "y":3}, {"label":"K309", "x":8.75, "y":3}, {"label":"K310", "x":9.75, "y":3}, {"label":"K311", "x":10.75, "y":3}, {"label":"K312", "x":11.75, "y":3, "w":1.25}, {"label":"K313", "x":13, "y":3}, {"label":"K314", "x":14, "y":3}, {"label":"K315", "x":15, "y":3}, {"label":"K400", "x":0, "y":4, "w":1.25}, {"label":"K402", "x":1.25, "y":4, "w":1.25}, {"label":"K403", "x":2.5, "y":4}, {"label":"K404", "x":3.5, "y":4}, {"label":"K405", "x":4.5, "y":4, "w":2}, {"label":"K407", "x":6.5, "y":4, "w":2.25}, {"label":"K409", "x":8.75, "y":4}, {"label":"K410", "x":9.75, "y":4}, {"label":"K411", "x":10.75, "y":4}, {"label":"K412", "x":11.75, "y":4, "w":1.25}, {"label":"K413", "x":13, "y":4}, {"label":"K414", "x":14, "y":4}, {"label":"K415", "x":15, "y":4}]
diff --git a/keyboards/program_yoink/config.h b/keyboards/program_yoink/config.h
index 156044d24a..efb27f7fb2 100644
--- a/keyboards/program_yoink/config.h
+++ b/keyboards/program_yoink/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7079
-#define DEVICE_VER 0x0001
-#define MANUFACTURER melonbred
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -40,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D2, D3, B1, B0 }
#define MATRIX_COL_PINS { C4, C5, C6, C7, B7, B6, B5, B4, B3, B2, D6, C2, D5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/program_yoink/ortho/config.h b/keyboards/program_yoink/ortho/config.h
deleted file mode 100644
index 7620643f1a..0000000000
--- a/keyboards/program_yoink/ortho/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-Copyright 2020 melonbred
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-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 PRODUCT_ID 0xF10C
-#define PRODUCT Program Yoink! Ortho
diff --git a/keyboards/program_yoink/ortho/info.json b/keyboards/program_yoink/ortho/info.json
index 7d7d4ef230..c73b4cc030 100644
--- a/keyboards/program_yoink/ortho/info.json
+++ b/keyboards/program_yoink/ortho/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "program_yoink",
+ "keyboard_name": "Program Yoink! Ortho",
+ "manufacturer": "melonbred",
"url": "",
"maintainer": "melonbred",
+ "usb": {
+ "vid": "0x7079",
+ "pid": "0xF10C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho": {
"layout": [
diff --git a/keyboards/program_yoink/ortho/keymaps/ortho_split/keymap.c b/keyboards/program_yoink/ortho/keymaps/ortho_split/keymap.c
index 9ffc617f08..837dc1e754 100644
--- a/keyboards/program_yoink/ortho/keymaps/ortho_split/keymap.c
+++ b/keyboards/program_yoink/ortho/keymaps/ortho_split/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER2] = LAYOUT_ortho_split(
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, XXXXXXX, XXXXXXX, RGB_M_K, RGB_M_G, RGB_M_R, RGB_M_SW, _______, RGB_HUI,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAI, RGB_VAD, _______, RGB_HUD,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAI, RGB_VAD, _______, RGB_HUD,
_______, RGB_TOG, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, KC_RALT, KC_RCTL
),
};
diff --git a/keyboards/program_yoink/staggered/config.h b/keyboards/program_yoink/staggered/config.h
deleted file mode 100644
index a0da031525..0000000000
--- a/keyboards/program_yoink/staggered/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-Copyright 2020 melonbred
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-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 PRODUCT_ID 0xF10B
-#define PRODUCT Program Yoink! Staggered
diff --git a/keyboards/program_yoink/staggered/info.json b/keyboards/program_yoink/staggered/info.json
index cc73feeb43..cc488e4a8f 100644
--- a/keyboards/program_yoink/staggered/info.json
+++ b/keyboards/program_yoink/staggered/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "program_yoink",
+ "keyboard_name": "Program Yoink! Staggered",
+ "manufacturer": "melonbred",
"url": "",
"maintainer": "melonbred",
+ "usb": {
+ "vid": "0x7079",
+ "pid": "0xF10B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/program_yoink/staggered/keymaps/split_bar/keymap.c b/keyboards/program_yoink/staggered/keymaps/split_bar/keymap.c
index 7bbde7bd01..d37722e7bc 100644
--- a/keyboards/program_yoink/staggered/keymaps/split_bar/keymap.c
+++ b/keyboards/program_yoink/staggered/keymaps/split_bar/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LAYER2] = LAYOUT_split_bar(
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, XXXXXXX, XXXXXXX, RGB_M_K, RGB_M_G, RGB_M_R, RGB_M_SW, RGB_HUI,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAI, RGB_VAD, RGB_HUD,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAI, RGB_VAD, RGB_HUD,
_______, RGB_TOG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL, KC_RALT, KC_RCTL
),
};
diff --git a/keyboards/projectcain/relic/config.h b/keyboards/projectcain/relic/config.h
new file mode 100644
index 0000000000..026e139fd1
--- /dev/null
+++ b/keyboards/projectcain/relic/config.h
@@ -0,0 +1,127 @@
+/*
+Copyright 2021 projectcain
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should 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 { D4 }
+#define ENCODERS_PAD_B { D6 }
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#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)
+ *
+ */
+#define MATRIX_ROW_PINS { D7, B2, B6, B5 }
+#define MATRIX_COL_PINS { D3, D5, B0, F0, F1, F4, F5, F6, C7, C6, B4 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+// #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 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
+
+/* Bootmagic Lite key configuration */
+// #define BOOTMAGIC_LITE_ROW 0
+// #define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/projectcain/relic/info.json b/keyboards/projectcain/relic/info.json
new file mode 100644
index 0000000000..2b4041a261
--- /dev/null
+++ b/keyboards/projectcain/relic/info.json
@@ -0,0 +1,25 @@
+{
+ "keyboard_name": "Relic",
+ "manufacturer": "projectcain",
+ "url": "",
+ "maintainer": "projectcain",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "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}, {"label":"A", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.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, "w":1.75}, {"label":"Z", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.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, "w":1.25}, {"label":"Ctrl", "x":0.25, "y":3, "w":1.25}, {"label":"Alt", "x":1.5, "y":3, "w":1.25}, {"label":"MO(1)", "x":9.25, "y":3, "w":1.25}, {"label":"MO(2)", "x":10.5, "y":3, "w":1.25}, {"label":"LGUI", "x":3, "y":3.25}, {"label":"BACK <BR> SPACE", "x":4, "y":3.25, "w":1.5}, {"label":"Space", "x":5.5, "y":3.25}, {"label":"Space", "x":6.5, "y":3.25, "w":1.5}, {"label":"RGUI", "x":8, "y":3.25}]
+ },
+ "LAYOUT_full_space": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "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}, {"label":"A", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.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, "w":1.75}, {"label":"Z", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.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, "w":1.25}, {"label":"Ctrl", "x":0.25, "y":3, "w":1.25}, {"label":"Alt", "x":1.5, "y":3, "w":1.25}, {"label":"MO(1)", "x":9.25, "y":3, "w":1.25}, {"label":"MO(2)", "x":10.5, "y":3, "w":1.25}, {"label":"Space", "x":3, "y":3.25, "w":6}]
+ },
+ "LAYOUT_split_2space": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "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}, {"label":"A", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.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, "w":1.75}, {"label":"Z", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.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, "w":1.25}, {"label":"Ctrl", "x":0.25, "y":3, "w":1.25}, {"label":"Alt", "x":1.5, "y":3, "w":1.25}, {"label":"MO(1)", "x":9.25, "y":3, "w":1.25}, {"label":"MO(2)", "x":10.5, "y":3, "w":1.25}, {"label":"BACK <BR> SPACE", "x":3, "y":3.25, "w":3}, {"label":"Space", "x":6, "y":3.25, "w":3}]
+ },
+ "LAYOUT_split_4space": {
+ "layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "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}, {"label":"A", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.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, "w":1.75}, {"label":"Z", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.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, "w":1.25}, {"label":"Ctrl", "x":0.25, "y":3, "w":1.25}, {"label":"Alt", "x":1.5, "y":3, "w":1.25}, {"label":"MO(1)", "x":9.25, "y":3, "w":1.25}, {"label":"MO(2)", "x":10.5, "y":3, "w":1.25}, {"label":"Lgui", "x":3, "y":3.25}, {"label":"BACK <BR> SPACE", "x":4, "y":3.25, "w":2}, {"label":"Space", "x":6, "y":3.25, "w":2}, {"label":"Rgui", "x":8, "y":3.25}]
+ }
+ }
+}
diff --git a/keyboards/projectcain/relic/keymaps/default/config.h b/keyboards/projectcain/relic/keymaps/default/config.h
new file mode 100644
index 0000000000..7756a8db2f
--- /dev/null
+++ b/keyboards/projectcain/relic/keymaps/default/config.h
@@ -0,0 +1,23 @@
+/* Copyright 2021 projectcain
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 ENCODER_RESOLUTION 2
+#define COMBO_COUNT 6
+#define COMBO_TERM 50
+#define TAPPING_FORCE_HOLD
+#define DISABLE_LEADER
diff --git a/keyboards/projectcain/relic/keymaps/default/keymap.c b/keyboards/projectcain/relic/keymaps/default/keymap.c
new file mode 100644
index 0000000000..6b6c740603
--- /dev/null
+++ b/keyboards/projectcain/relic/keymaps/default/keymap.c
@@ -0,0 +1,74 @@
+/* Copyright 2021 projectcain
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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,
+ META
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [BASE] = LAYOUT_all(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOTE,
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ MO(1), KC_LCTRL, MO(1), SFT_T(KC_BSPC), KC_SPACE, KC_SPACE, MO(2), KC_LALT, MO(2)
+ ),
+
+ [NUM] = LAYOUT_all(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_KP_SLASH, KC_7, KC_8, KC_9, KC_MINUS, KC_BSPC,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_KP_ASTERISK, KC_4, KC_5, KC_6, KC_PLUS,
+ KC_LCPO, KC_X, KC_C, KC_V, KC_B, KC_0, KC_1, KC_2, KC_3, KC_RCPC,
+ MO(1), KC_LCTRL, KC_TRNS, SFT_T(KC_BSPC), KC_TRNS, KC_SPACE, KC_TRNS, KC_LALT, MO(2)
+ ),
+
+ [SYM] = LAYOUT_all(
+ S(KC_GRV), KC_GRV, KC_TRNS, S(KC_BSLS), KC_BSLS, KC_TRNS, S(KC_MINS), KC_EQL, KC_TRNS, C(KC_W), QK_BOOT,
+ S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), KC_SCLN, S(KC_SCLN),
+ S(KC_LBRC), KC_LBRC, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_RBRC, S(KC_RBRC),
+ MO(1), KC_LCTRL, KC_TRNS, SFT_T(KC_BSPC), KC_TRNS, KC_SPACE, KC_TRNS, KC_LALT, MO(2)
+ ),
+
+};
+
+
+
+enum combos {
+ KL_SLSH,
+ JK_MINUS,
+ LQUOTE_ENTER,
+ QW_ESC,
+ AS_TAB,
+ FJ_LGUI
+};
+
+const uint16_t PROGMEM kl_combo[] = {KC_K, KC_L, COMBO_END};
+const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
+const uint16_t PROGMEM lquote_combo[] = {KC_L, KC_QUOTE, COMBO_END};
+const uint16_t PROGMEM qw_combo[] = {KC_Q, KC_W, COMBO_END};
+const uint16_t PROGMEM as_combo[] = {KC_A, KC_S, COMBO_END};
+const uint16_t PROGMEM fj_combo[] = {KC_F, KC_J, COMBO_END};
+
+combo_t key_combos[COMBO_COUNT] = {
+ [KL_SLSH] = COMBO(kl_combo, S(KC_SLSH)),
+ [JK_MINUS] = COMBO(jk_combo, KC_MINUS),
+ [LQUOTE_ENTER] = COMBO(lquote_combo, KC_ENTER),
+ [QW_ESC] = COMBO(qw_combo, KC_ESC),
+ [AS_TAB] = COMBO(as_combo, KC_TAB),
+ [FJ_LGUI] = COMBO(fj_combo, KC_LGUI)
+};
diff --git a/keyboards/projectcain/relic/keymaps/default/readme.md b/keyboards/projectcain/relic/keymaps/default/readme.md
new file mode 100644
index 0000000000..0c00cd74af
--- /dev/null
+++ b/keyboards/projectcain/relic/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for relic
diff --git a/keyboards/projectcain/relic/keymaps/default/rules.mk b/keyboards/projectcain/relic/keymaps/default/rules.mk
new file mode 100644
index 0000000000..dca6713d4f
--- /dev/null
+++ b/keyboards/projectcain/relic/keymaps/default/rules.mk
@@ -0,0 +1,2 @@
+ENCODER_ENABLE = yes
+COMBO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/projectcain/relic/readme.md b/keyboards/projectcain/relic/readme.md
new file mode 100644
index 0000000000..5f2606c543
--- /dev/null
+++ b/keyboards/projectcain/relic/readme.md
@@ -0,0 +1,17 @@
+# relic
+
+![relic](https://i.imgur.com/oqveJc2h.jpg)
+
+This is an 11-unit unibody split keyboard with an exploded spacebar cluster on bottom
+
+* Keyboard Maintainer: [projectcain](https://github.com/yourusername)
+* Hardware Supported: Relic PCB
+* Hardware Availability: mechvault.net
+
+To reset the keyboard into bootloader mode, short the two pads labeled "Reset" on the left side of the pcb
+
+Make example for this keyboard (after setting up your build environment):
+
+ make projectcain/relic: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/projectcain/relic/relic.c b/keyboards/projectcain/relic/relic.c
new file mode 100644
index 0000000000..f72250847d
--- /dev/null
+++ b/keyboards/projectcain/relic/relic.c
@@ -0,0 +1,37 @@
+/* Copyright 2021 projectcain
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "relic.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_DOWN);
+ } else {
+ tap_code(KC_UP);
+ }
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/projectcain/relic/relic.h b/keyboards/projectcain/relic/relic.h
new file mode 100644
index 0000000000..45ae28a97f
--- /dev/null
+++ b/keyboards/projectcain/relic/relic.h
@@ -0,0 +1,80 @@
+/* Copyright 2021 projectcain
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, \
+ K300, K301, K303, K304, K305, K306, K307, K308, K309 \
+) \
+ { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
+ { K300, K301, KC_NO, K303, K304, K305, K306, K307, K308, K309, KC_NO } \
+}
+
+#define LAYOUT_full_space( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, \
+ K300, K301, K305, K308, K309 \
+) \
+ { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
+ { K300, K301, KC_NO, KC_NO, KC_NO, K305, KC_NO, KC_NO, K308, K309, KC_NO } \
+}
+
+#define LAYOUT_split_2space( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, \
+ K300, K301, K304, K306, K308, K309 \
+) \
+ { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
+ { K300, K301, KC_NO, KC_NO, K304, KC_NO, K306, KC_NO, K308, K309, KC_NO } \
+}
+
+#define LAYOUT_split_4space( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, \
+ K300, K301, K303, K304, K306, K307, K308, K309 \
+) \
+ { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010 }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, KC_NO }, \
+ { K300, K301, KC_NO, K303, K304, KC_NO, K306, K307, K308, K309, KC_NO } \
+}
diff --git a/keyboards/projectcain/relic/rules.mk b/keyboards/projectcain/relic/rules.mk
new file mode 100644
index 0000000000..717cc07b4b
--- /dev/null
+++ b/keyboards/projectcain/relic/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 = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/projectcain/vault35/config.h b/keyboards/projectcain/vault35/config.h
index 1490b0ba4e..f7fe8b17c7 100644
--- a/keyboards/projectcain/vault35/config.h
+++ b/keyboards/projectcain/vault35/config.h
@@ -16,13 +16,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER projectcain
-#define PRODUCT vault35
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4, D4, B0, C7 }
#define MATRIX_COL_PINS { B1, D3, F0, F1, F4, F5, F6, F7, C6, B6, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/projectcain/vault35/info.json b/keyboards/projectcain/vault35/info.json
index e842e35e41..4b81c2ef76 100644
--- a/keyboards/projectcain/vault35/info.json
+++ b/keyboards/projectcain/vault35/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Vault 35",
+ "keyboard_name": "Vault35",
+ "manufacturer": "projectcain",
"url": "",
"maintainer": "projectcain",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_4space": {
"layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0}, {"label":"BACK<br>SPACE", "x":10, "y":0}, {"label":"TAB", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.25, "y":1}, {"label":"H", "x":5.25, "y":1}, {"label":"J", "x":6.25, "y":1}, {"label":"K", "x":7.25, "y":1}, {"label":"L", "x":8.25, "y":1}, {"label":"ENTER", "x":9.25, "y":1, "w":1.75}, {"label":"SHIFT", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.75, "y":2}, {"label":"N", "x":5.75, "y":2}, {"label":"M", "x":6.75, "y":2}, {"label":"<", "x":7.75, "y":2}, {"label":">", "x":8.75, "y":2}, {"label":"SHIFT", "x":9.75, "y":2, "w":1.25}, {"label":"CTRL", "x":1.5, "y":3}, {"label":"LOWER", "x":2.5, "y":3, "w":1.25}, {"x":3.75, "y":3, "w":1.75}, {"x":5.5, "y":3, "w":1.75}, {"label":"RAISE", "x":7.25, "y":3, "w":1.25}, {"label":"ALT", "x":8.5, "y":3}]
diff --git a/keyboards/projectcain/vault45/config.h b/keyboards/projectcain/vault45/config.h
index e531c7f530..2ac39d277c 100644
--- a/keyboards/projectcain/vault45/config.h
+++ b/keyboards/projectcain/vault45/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER projectcain
-#define PRODUCT vault45
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6, B6, B5, C7 }
#define MATRIX_COL_PINS { B0, D5, D4, D6, D7, B4, D3, F0, F1, F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/projectcain/vault45/info.json b/keyboards/projectcain/vault45/info.json
index 6f272e3bba..9e3ebcb02e 100644
--- a/keyboards/projectcain/vault45/info.json
+++ b/keyboards/projectcain/vault45/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Vault 45",
+ "keyboard_name": "Vault45",
+ "manufacturer": "projectcain",
"url": "",
"maintainer": "projectcain",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
diff --git a/keyboards/projectkb/alice/info.json b/keyboards/projectkb/alice/info.json
index b4ae3103c2..f85ce98b15 100644
--- a/keyboards/projectkb/alice/info.json
+++ b/keyboards/projectkb/alice/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Alice",
+ "manufacturer": "ProjectKB",
"url": "https://store.projectkeyboard.com/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x0159",
+ "pid": "0xA71C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/projectkb/alice/keymaps/devinceble/keymap.c b/keyboards/projectkb/alice/keymaps/devinceble/keymap.c
index bf46aa95b6..01d281bc68 100644
--- a/keyboards/projectkb/alice/keymaps/devinceble/keymap.c
+++ b/keyboards/projectkb/alice/keymaps/devinceble/keymap.c
@@ -36,6 +36,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RGB_MOD, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAI, RGB_HUI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
RGB_RMOD, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, RGB_SAD, RGB_HUD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, BL_INC, BL_DEC, BL_TOGG, 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, RESET
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
),
};
diff --git a/keyboards/projectkb/alice/keymaps/keithlo/keymap.c b/keyboards/projectkb/alice/keymaps/keithlo/keymap.c
index c6801308aa..49c6ccfd12 100644
--- a/keyboards/projectkb/alice/keymaps/keithlo/keymap.c
+++ b/keyboards/projectkb/alice/keymaps/keithlo/keymap.c
@@ -38,6 +38,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RGB_MOD, _______, _______, KC_UP, _______, _______, _______, RGB_SAI, RGB_HUI, RGB_VAI, _______, KC_F11, KC_F12, _______, _______,
RGB_RMOD, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RIGHT, _______, _______, _______,
_______, BL_INC, BL_DEC, BL_TOGG, BL_BRTG, _______, RGB_SAD, RGB_HUD, RGB_VAD, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, _______, QK_BOOT
)
};
diff --git a/keyboards/projectkb/alice/keymaps/madhatter/keymap.c b/keyboards/projectkb/alice/keymaps/madhatter/keymap.c
index 7a671402c0..c61619e32e 100644
--- a/keyboards/projectkb/alice/keymaps/madhatter/keymap.c
+++ b/keyboards/projectkb/alice/keymaps/madhatter/keymap.c
@@ -37,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAVMED] = LAYOUT_default(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- KC_HOME, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ KC_HOME, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
KC_END, _______, _______, _______, _______, _______, KC_MPLY, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, EEP_RST,
_______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FNMS] = LAYOUT_default(
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, _______, _______,
- RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, _______, _______, _______, RESET,
+ RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______, _______, _______, _______, QK_BOOT,
VLK_TOG, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN2, _______, _______,
_______, BL_INC, BL_DEC, BL_TOGG, BL_BRTG, _______, RGB_SAI, RGB_HUI, RGB_VAI, RGB_SAD, RGB_HUD, RGB_VAD, _______, _______,
AG_TOGG, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/projectkb/alice/keymaps/stanrc85/keymap.c b/keyboards/projectkb/alice/keymaps/stanrc85/keymap.c
index 300362c281..482765a9c0 100644
--- a/keyboards/projectkb/alice/keymaps/stanrc85/keymap.c
+++ b/keyboards/projectkb/alice/keymaps/stanrc85/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN2_60] = LAYOUT_default(
BL_TOGG, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______,
- BL_INC, VLK_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ BL_INC, VLK_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, TG(_DEFAULT)
diff --git a/keyboards/projectkb/alice/rev1/config.h b/keyboards/projectkb/alice/rev1/config.h
index 498c1f9370..c06f73a35b 100644
--- a/keyboards/projectkb/alice/rev1/config.h
+++ b/keyboards/projectkb/alice/rev1/config.h
@@ -17,13 +17,6 @@ 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 0xA71C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ProjectKB
-#define PRODUCT Alice
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/projectkb/alice/rev2/config.h b/keyboards/projectkb/alice/rev2/config.h
index 21742ac7b8..9e66d6a628 100644
--- a/keyboards/projectkb/alice/rev2/config.h
+++ b/keyboards/projectkb/alice/rev2/config.h
@@ -17,13 +17,6 @@ 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 0xA71C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ProjectKB
-#define PRODUCT Alice
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/projectkb/signature65/config.h b/keyboards/projectkb/signature65/config.h
index f37085c190..cadc03dcf7 100644
--- a/keyboards/projectkb/signature65/config.h
+++ b/keyboards/projectkb/signature65/config.h
@@ -17,13 +17,6 @@ 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
diff --git a/keyboards/projectkb/signature65/info.json b/keyboards/projectkb/signature65/info.json
index 15e08907b0..1344dedac4 100644
--- a/keyboards/projectkb/signature65/info.json
+++ b/keyboards/projectkb/signature65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Kepler FC65",
+ "keyboard_name": "Signature65",
+ "manufacturer": "Project Keyboard",
"url": "https://store.projectkeyboard.com",
"maintainer": "projectkeyboard",
+ "usb": {
+ "vid": "0x0159",
+ "pid": "0x0165",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/projectkb/signature65/readme.md b/keyboards/projectkb/signature65/readme.md
index 81fd434ff4..b6566f0ceb 100644
--- a/keyboards/projectkb/signature65/readme.md
+++ b/keyboards/projectkb/signature65/readme.md
@@ -17,4 +17,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
diff --git a/keyboards/projectkb/signature87/config.h b/keyboards/projectkb/signature87/config.h
index 5e6a9214af..188419e89d 100644
--- a/keyboards/projectkb/signature87/config.h
+++ b/keyboards/projectkb/signature87/config.h
@@ -17,13 +17,6 @@ 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 0x0187
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Project Keyboard
-#define PRODUCT Signature87
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
diff --git a/keyboards/projectkb/signature87/info.json b/keyboards/projectkb/signature87/info.json
index 2be7e402e6..bafbbd4cb9 100644
--- a/keyboards/projectkb/signature87/info.json
+++ b/keyboards/projectkb/signature87/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Signature 87",
+ "keyboard_name": "Signature87",
+ "manufacturer": "Project Keyboard",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x0159",
+ "pid": "0x0187",
+ "device_version": "0.0.1"
+ },
"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.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":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":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}]
diff --git a/keyboards/prototypist/allison/config.h b/keyboards/prototypist/allison/config.h
index 89a24768de..14124f7c99 100644
--- a/keyboards/prototypist/allison/config.h
+++ b/keyboards/prototypist/allison/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x414D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER protoTypist
-#define PRODUCT Allison
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D2, D1, D0, B1, B2, D3}
#define MATRIX_COL_PINS { F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/prototypist/allison/info.json b/keyboards/prototypist/allison/info.json
index cd6b51f96e..f4108081cc 100644
--- a/keyboards/prototypist/allison/info.json
+++ b/keyboards/prototypist/allison/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "allison",
+ "keyboard_name": "Allison",
+ "manufacturer": "protoTypist",
"url": "www.yiancar-designs.com",
"maintainer": "Yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x414D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"0,0", "x":1.25, "y":0}, {"label":"0,1", "x":2.5, "y":0}, {"label":"0,2", "x":3.5, "y":0}, {"label":"0,3", "x":4.5, "y":0}, {"label":"0,4", "x":5.5, "y":0}, {"label":"0,5", "x":6.75, "y":0}, {"label":"0,6", "x":7.75, "y":0}, {"label":"0,7", "x":8.75, "y":0}, {"label":"0,8", "x":9.75, "y":0}, {"label":"0,9", "x":11, "y":0}, {"label":"0,10", "x":12, "y":0}, {"label":"0,11", "x":13, "y":0}, {"label":"0,12", "x":14, "y":0}, {"label":"0,13", "x":15.25, "y":0}, {"label":"1,0", "x":0, "y":1.25}, {"label":"1,1", "x":1.25, "y":1.25}, {"label":"1,2", "x":2.25, "y":1.25}, {"label":"1,3", "x":3.25, "y":1.25}, {"label":"1,4", "x":4.25, "y":1.25}, {"label":"1,5", "x":5.25, "y":1.25}, {"label":"1,6", "x":6.25, "y":1.25}, {"label":"1,7", "x":7.25, "y":1.25}, {"label":"1,8", "x":8.25, "y":1.25}, {"label":"1,9", "x":9.25, "y":1.25}, {"label":"1,10", "x":10.25, "y":1.25}, {"label":"1,11", "x":11.25, "y":1.25}, {"label":"1,12", "x":12.25, "y":1.25}, {"label":"1,13", "x":13.25, "y":1.25}, {"label":"1,14", "x":14.25, "y":1.25}, {"label":"0,14", "x":15.25, "y":1.25}, {"label":"2,0", "x":0, "y":2.25}, {"label":"2,1", "x":1.25, "y":2.25, "w":1.5}, {"label":"2,2", "x":2.75, "y":2.25}, {"label":"2,3", "x":3.75, "y":2.25}, {"label":"2,4", "x":4.75, "y":2.25}, {"label":"2,5", "x":5.75, "y":2.25}, {"label":"2,6", "x":6.75, "y":2.25}, {"label":"2,7", "x":7.75, "y":2.25}, {"label":"2,8", "x":8.75, "y":2.25}, {"label":"2,9", "x":9.75, "y":2.25}, {"label":"2,10", "x":10.75, "y":2.25}, {"label":"2,11", "x":11.75, "y":2.25}, {"label":"2,12", "x":12.75, "y":2.25}, {"label":"2,13", "x":13.75, "y":2.25}, {"label":"2,14", "x":14.75, "y":2.25, "w":1.5}, {"label":"3,0", "x":0, "y":3.25}, {"label":"3,1", "x":1.25, "y":3.25, "w":1.75}, {"label":"3,2", "x":3, "y":3.25}, {"label":"3,3", "x":4, "y":3.25}, {"label":"3,4", "x":5, "y":3.25}, {"label":"3,5", "x":6, "y":3.25}, {"label":"3,6", "x":7, "y":3.25}, {"label":"3,7", "x":8, "y":3.25}, {"label":"3,8", "x":9, "y":3.25}, {"label":"3,9", "x":10, "y":3.25}, {"label":"3,10", "x":11, "y":3.25}, {"label":"3,11", "x":12, "y":3.25}, {"label":"3,12", "x":13, "y":3.25}, {"label":"3,13", "x":14, "y":3.25}, {"label":"3,14", "x":15, "y":3.25, "w":1.25}, {"label":"4,0", "x":0, "y":4.25}, {"label":"4,1", "x":1.25, "y":4.25, "w":1.25}, {"label":"4,2", "x":2.5, "y":4.25}, {"label":"4,3", "x":3.5, "y":4.25}, {"label":"4,4", "x":4.5, "y":4.25}, {"label":"4,5", "x":5.5, "y":4.25}, {"label":"4,6", "x":6.5, "y":4.25}, {"label":"4,7", "x":7.5, "y":4.25}, {"label":"4,8", "x":8.5, "y":4.25}, {"label":"4,9", "x":9.5, "y":4.25}, {"label":"4,10", "x":10.5, "y":4.25}, {"label":"4,11", "x":11.5, "y":4.25}, {"label":"4,12", "x":12.5, "y":4.25}, {"label":"4,13", "x":13.5, "y":4.25, "w":1.75}, {"label":"4,14", "x":15.25, "y":4.25}, {"label":"5,0", "x":0, "y":5.25}, {"label":"5,1", "x":1.25, "y":5.25, "w":1.5}, {"label":"5,2", "x":2.75, "y":5.25}, {"label":"5,3", "x":3.75, "y":5.25, "w":1.5}, {"label":"5,8", "x":5.25, "y":5.25, "w":7}, {"label":"5,12", "x":12.25, "y":5.25, "w":1.5}, {"label":"5,13", "x":13.75, "y":5.25}, {"label":"5,14", "x":14.75, "y":5.25, "w":1.5}]
diff --git a/keyboards/prototypist/allison_numpad/config.h b/keyboards/prototypist/allison_numpad/config.h
index 59fb02d9a5..6a442689d1 100644
--- a/keyboards/prototypist/allison_numpad/config.h
+++ b/keyboards/prototypist/allison_numpad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x414E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER protoTypist
-#define PRODUCT Allison Numpad
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, C7, C6, B6, B5, B4 }
#define MATRIX_COL_PINS { F6, F5, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/prototypist/allison_numpad/info.json b/keyboards/prototypist/allison_numpad/info.json
index e644d8ec3b..bf0de7a653 100644
--- a/keyboards/prototypist/allison_numpad/info.json
+++ b/keyboards/prototypist/allison_numpad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "allison_numpad",
+ "keyboard_name": "Allison Numpad",
+ "manufacturer": "protoTypist",
"url": "www.yiancar-designs.com",
"maintainer": "Yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x414E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_6x4": {
"layout": [
diff --git a/keyboards/prototypist/j01/config.h b/keyboards/prototypist/j01/config.h
index 4d15e1349b..36858a6534 100644
--- a/keyboards/prototypist/j01/config.h
+++ b/keyboards/prototypist/j01/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5450
-#define PRODUCT_ID 0x6A31
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Prototypist
-#define PRODUCT J-01 Rev1
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { B3, B2, B0, F6, F5 }
#define MATRIX_COL_PINS { B1, F0, F7, F1, F4, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/prototypist/j01/info.json b/keyboards/prototypist/j01/info.json
index c93f4a9f4d..6ff8ce09c5 100644
--- a/keyboards/prototypist/j01/info.json
+++ b/keyboards/prototypist/j01/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "J-01",
+ "keyboard_name": "J-01 Rev1",
+ "manufacturer": "Prototypist",
"url": "https://prototypist.net/",
"maintainer": "Flexerm",
+ "usb": {
+ "vid": "0x5450",
+ "pid": "0x6A31",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/protozoa/cassini/config.h b/keyboards/protozoa/cassini/config.h
index cdcef1e0ac..2c95c7be2a 100644
--- a/keyboards/protozoa/cassini/config.h
+++ b/keyboards/protozoa/cassini/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4341
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT Cassini
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -39,7 +32,7 @@ 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
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* Indicator LEDs */
diff --git a/keyboards/protozoa/cassini/info.json b/keyboards/protozoa/cassini/info.json
index be662952e2..456e00707b 100644
--- a/keyboards/protozoa/cassini/info.json
+++ b/keyboards/protozoa/cassini/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Cassini",
+ "manufacturer": "Yiancar-Designs",
"url": "https://yiancar-designs.com",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4341",
+ "device_version": "0.0.1"
+ },
"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":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/protozoa/p01/config.h b/keyboards/protozoa/p01/config.h
new file mode 100644
index 0000000000..190dfe41d8
--- /dev/null
+++ b/keyboards/protozoa/p01/config.h
@@ -0,0 +1,95 @@
+/*
+Copyright 2022 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"
+
+/* Key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 18
+
+#define MATRIX_ROW_PINS { B1, B2, B10, B11, B12, B13 }
+#define MATRIX_COL_PINS { A14, A15, B3, B4, B5, B6, B7, B8, B9, A0, A1, A2, A3, A4, A5, A6, A7, B0 }
+
+/* Encoder */
+#define ENCODERS 1
+#define ENCODERS_PAD_A { B15 }
+#define ENCODERS_PAD_B { B14 }
+
+/* COL2ROW, ROW2COL*/
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* RGB Light */
+#define WS2812_PWM_DRIVER PWMD1
+#define WS2812_PWM_CHANNEL 2
+#define WS2812_PWM_PAL_MODE 2
+#define WS2812_DMA_STREAM STM32_DMA1_STREAM5
+#define WS2812_DMA_CHANNEL 5
+
+#define RGB_DI_PIN A9
+#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_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 (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/protozoa/p01/halconf.h b/keyboards/protozoa/p01/halconf.h
new file mode 100644
index 0000000000..4abd83bd3b
--- /dev/null
+++ b/keyboards/protozoa/p01/halconf.h
@@ -0,0 +1,21 @@
+/* Copyright 2022 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 HAL_USE_PWM TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/protozoa/p01/info.json b/keyboards/protozoa/p01/info.json
new file mode 100644
index 0000000000..b4fce2823f
--- /dev/null
+++ b/keyboards/protozoa/p01/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "P.01",
+ "manufacturer": "Yiancar-Designs",
+ "url": "https://yiancar-designs.com",
+ "maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x5031",
+ "device_version": "0.0.1"
+ },
+ "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.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}]
+ }
+ }
+}
diff --git a/keyboards/protozoa/p01/keymaps/default/keymap.c b/keyboards/protozoa/p01/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a72840aa2c
--- /dev/null
+++ b/keyboards/protozoa/p01/keymaps/default/keymap.c
@@ -0,0 +1,43 @@
+/* Copyright 2022 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_PSCR, KC_SLCK, 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_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, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[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_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)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
+};
+#endif
diff --git a/keyboards/protozoa/p01/keymaps/default/readme.md b/keyboards/protozoa/p01/keymaps/default/readme.md
new file mode 100644
index 0000000000..f907ad3993
--- /dev/null
+++ b/keyboards/protozoa/p01/keymaps/default/readme.md
@@ -0,0 +1,5 @@
+# The default keymap for P.01. VIA support disabled.
+
+![Layer 0](https://i.imgur.com/KCg3lBQ.png)
+
+![Layer 1](https://i.imgur.com/X9Twapp.png)
diff --git a/keyboards/protozoa/p01/keymaps/default/rules.mk b/keyboards/protozoa/p01/keymaps/default/rules.mk
new file mode 100644
index 0000000000..d0790e6c3f
--- /dev/null
+++ b/keyboards/protozoa/p01/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/protozoa/p01/keymaps/via/keymap.c b/keyboards/protozoa/p01/keymaps/via/keymap.c
new file mode 100644
index 0000000000..1cb2a0f9b6
--- /dev/null
+++ b/keyboards/protozoa/p01/keymaps/via/keymap.c
@@ -0,0 +1,63 @@
+/* Copyright 2022 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_PSCR, KC_SLCK, 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_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, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[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_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),
+
+[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),
+
+[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)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
+};
+#endif
diff --git a/keyboards/protozoa/p01/keymaps/via/readme.md b/keyboards/protozoa/p01/keymaps/via/readme.md
new file mode 100644
index 0000000000..96dba4693e
--- /dev/null
+++ b/keyboards/protozoa/p01/keymaps/via/readme.md
@@ -0,0 +1,5 @@
+# The default keymap for P.01. VIA support enabled.
+
+![Layer 0](https://i.imgur.com/KCg3lBQ.png)
+
+![Layer 1](https://i.imgur.com/X9Twapp.png)
diff --git a/keyboards/protozoa/p01/keymaps/via/rules.mk b/keyboards/protozoa/p01/keymaps/via/rules.mk
new file mode 100644
index 0000000000..136d78985e
--- /dev/null
+++ b/keyboards/protozoa/p01/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/protozoa/p01/mcuconf.h b/keyboards/protozoa/p01/mcuconf.h
new file mode 100644
index 0000000000..0b3baa9b4b
--- /dev/null
+++ b/keyboards/protozoa/p01/mcuconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2022 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_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
diff --git a/keyboards/protozoa/p01/p01.c b/keyboards/protozoa/p01/p01.c
new file mode 100644
index 0000000000..b0a14e1212
--- /dev/null
+++ b/keyboards/protozoa/p01/p01.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 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 "p01.h"
diff --git a/keyboards/protozoa/p01/p01.h b/keyboards/protozoa/p01/p01.h
new file mode 100644
index 0000000000..2d51d95ef7
--- /dev/null
+++ b/keyboards/protozoa/p01/p01.h
@@ -0,0 +1,36 @@
+/* Copyright 2022 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, K02, K03, K04, K05, K06, K07, K08, K09, K0B, K0C, K0D, K0E, K0F, KOG, K0H, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K3E, 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, K3D, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4D, K4E, K4G, \
+ K50, K51, K52, K56, K59, K5A, K5C, K5E, K5F, K5G, K5H \
+) { \
+ { K00, XXX, K02, K03, K04, K05, K06, K07, K08, K09, XXX, K0B, K0C, K0D, K0E, K0F, KOG, K0H }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, XXX, K1F, K1G, K1H }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, XXX, K2F, K2G, K2H }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, XXX, XXX, XXX }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, XXX, K4D, K4E, XXX, K4G, XXX }, \
+ { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, K59, K5A, XXX, K5C, XXX, K5E, K5F, K5G, K5H } \
+}
diff --git a/keyboards/protozoa/p01/readme.md b/keyboards/protozoa/p01/readme.md
new file mode 100644
index 0000000000..6476e6a219
--- /dev/null
+++ b/keyboards/protozoa/p01/readme.md
@@ -0,0 +1,34 @@
+# P.01
+
+This is standard TKL keyboard with exposed diodes. It supports VIA.
+
+* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
+* Hardware Supported: A 60% keyboard with STM32F072CB
+* Hardware Availability: https://protozoa.studio
+
+![P.01](https://i.imgur.com/gKEPNFel.png)
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make protozoa/p01: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 protozoa/p01:<keymap>:flash`)
diff --git a/keyboards/protozoa/p01/rules.mk b/keyboards/protozoa/p01/rules.mk
new file mode 100644
index 0000000000..736745abf0
--- /dev/null
+++ b/keyboards/protozoa/p01/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 = yes # Enable keyboard RGB underglow
+WS2812_DRIVER = pwm # Driver for RGB uderglow
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes # Encoder support
diff --git a/keyboards/psuieee/pluto12/config.h b/keyboards/psuieee/pluto12/config.h
index 49466f7b4a..907ed283cc 100644
--- a/keyboards/psuieee/pluto12/config.h
+++ b/keyboards/psuieee/pluto12/config.h
@@ -5,13 +5,6 @@
#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
@@ -19,7 +12,6 @@
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { D0, D4, C6 }
#define MATRIX_COL_PINS { D7, E6, B4, B5 }
-#define UNUSED_PINS
/* Encoder Assignments */
#define ENCODERS_PAD_A { B6 }
diff --git a/keyboards/psuieee/pluto12/info.json b/keyboards/psuieee/pluto12/info.json
index a48b687fb1..3858497cd2 100644
--- a/keyboards/psuieee/pluto12/info.json
+++ b/keyboards/psuieee/pluto12/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "pluto12",
+ "manufacturer": "psuieee",
"url": "https://github.com/psuieee/pluto12",
"maintainer": "wymcg",
+ "usb": {
+ "vid": "0x4747",
+ "pid": "0x7012",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/psuieee/pluto12/readme.md b/keyboards/psuieee/pluto12/readme.md
index bfdafb3b2d..d75f768b41 100644
--- a/keyboards/psuieee/pluto12/readme.md
+++ b/keyboards/psuieee/pluto12/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/pteron36/config.h b/keyboards/pteron36/config.h
index 793dc8e5ed..96b5b42f86 100644
--- a/keyboards/pteron36/config.h
+++ b/keyboards/pteron36/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4847 //HG
-#define PRODUCT_ID 0x5054 //PT
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Harshit Goel
-#define PRODUCT Pteron36
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 5
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6, D7, B4, B5 }
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/pteron36/info.json b/keyboards/pteron36/info.json
index e191dc616f..e5323631ee 100644
--- a/keyboards/pteron36/info.json
+++ b/keyboards/pteron36/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pteron36",
+ "manufacturer": "Harshit Goel",
"url": "",
"maintainer": "harshitgoel96",
+ "usb": {
+ "vid": "0x4847",
+ "pid": "0x5054",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x5_3": {
"layout": [
diff --git a/keyboards/puck/config.h b/keyboards/puck/config.h
index c4eeb207f9..71cea5ac64 100644
--- a/keyboards/puck/config.h
+++ b/keyboards/puck/config.h
@@ -2,20 +2,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER OkKeebs LLC
-#define PRODUCT Puck
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 3
#define MATRIX_ROW_PINS { D2, D3, C6, C7 }
#define MATRIX_COL_PINS { B4, D7, D6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/puck/info.json b/keyboards/puck/info.json
index 095f572163..0d9c5ffa04 100644
--- a/keyboards/puck/info.json
+++ b/keyboards/puck/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Puck",
+ "manufacturer": "OkKeebs LLC",
"url": "",
"maintainer": "john-pettigrew",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/punk75/config.h b/keyboards/punk75/config.h
index 61950da946..fa87d13433 100644
--- a/keyboards/punk75/config.h
+++ b/keyboards/punk75/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xDEED
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER dsanchezseco
-#define PRODUCT punk75
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -47,7 +40,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENCODERS_PAD_A { D0, B1}
#define ENCODERS_PAD_B { D1, B0 }
-#define UNUSED_PINS { C7 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/punk75/info.json b/keyboards/punk75/info.json
index 8a774b94ea..1bfae0305c 100644
--- a/keyboards/punk75/info.json
+++ b/keyboards/punk75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "punk75",
+ "manufacturer": "dsanchezseco",
"url": "",
"maintainer": "dsanchezseco",
+ "usb": {
+ "vid": "0xDEED",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x15": {
"layout": [
diff --git a/keyboards/q4z/config.h b/keyboards/q4z/config.h
index 8a591a9a89..64608f4879 100644
--- a/keyboards/q4z/config.h
+++ b/keyboards/q4z/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0001
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER drmmr
-#define PRODUCT q4z keyboard
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 10
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { F4, C6, D7, E6, B4 }
#define MATRIX_COL_PINS { D1, D0, D4, B6, B2, B3, B1, F7, F6, F5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/q4z/info.json b/keyboards/q4z/info.json
index 47fe4dd0ed..6b1503f551 100644
--- a/keyboards/q4z/info.json
+++ b/keyboards/q4z/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "q4z",
+ "manufacturer": "drmmr",
"url": "",
"maintainer": "rjboone",
+ "usb": {
+ "vid": "0x0001",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/q4z/keymaps/rjboone/keymap.c b/keyboards/q4z/keymaps/rjboone/keymap.c
index aa8a77dae6..8e764e4735 100644
--- a/keyboards/q4z/keymaps/rjboone/keymap.c
+++ b/keyboards/q4z/keymaps/rjboone/keymap.c
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_NAV] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS,
+ QK_BOOT, 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_LEFT, KC_DOWN, KC_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
diff --git a/keyboards/qpockets/eggman/config.h b/keyboards/qpockets/eggman/config.h
index e1515e6c3d..0faaeae1f5 100644
--- a/keyboards/qpockets/eggman/config.h
+++ b/keyboards/qpockets/eggman/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7170
-#define PRODUCT_ID 0x656D
-#define DEVICE_VER 0x1000
-#define MANUFACTURER qpockets
-#define PRODUCT eggman
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 7
@@ -32,7 +25,6 @@
#define MATRIX_ROW_PINS { C4, C5, C2, D0, B5, B6, D6 }
#define MATRIX_COL_PINS { B7, B4, B3, B2, D3, D2, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/qpockets/eggman/info.json b/keyboards/qpockets/eggman/info.json
index 17e1cb2166..f9cc6c77b9 100644
--- a/keyboards/qpockets/eggman/info.json
+++ b/keyboards/qpockets/eggman/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "eggman",
+ "manufacturer": "qpockets",
"url": "",
"maintainer": "qpockets",
+ "usb": {
+ "vid": "0x7170",
+ "pid": "0x656D",
+ "device_version": "10.0.0"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/qpockets/space_space/rev1/config.h b/keyboards/qpockets/space_space/rev1/config.h
index d52aad4c2b..0b87d47767 100644
--- a/keyboards/qpockets/space_space/rev1/config.h
+++ b/keyboards/qpockets/space_space/rev1/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7170
-#define PRODUCT_ID 0x7373
-#define DEVICE_VER 0x3000
-#define MANUFACTURER qpockets
-#define PRODUCT space_space
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
@@ -34,7 +27,6 @@
#define MATRIX_COL_PINS \
{ D4, B4, B5, B6, C6, F7, F6, F0, B0, E6, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/qpockets/space_space/rev1/info.json b/keyboards/qpockets/space_space/rev1/info.json
index 5bac73c642..f882474efe 100644
--- a/keyboards/qpockets/space_space/rev1/info.json
+++ b/keyboards/qpockets/space_space/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "space_space",
+ "manufacturer": "qpockets",
"url": "",
"maintainer": "qpockets",
+ "usb": {
+ "vid": "0x7170",
+ "pid": "0x7373",
+ "device_version": "30.0.0"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/qpockets/space_space/rev1/keymaps/big_space/keymap.c b/keyboards/qpockets/space_space/rev1/keymaps/big_space/keymap.c
index 62241532e8..9755cdec3f 100644
--- a/keyboards/qpockets/space_space/rev1/keymaps/big_space/keymap.c
+++ b/keyboards/qpockets/space_space/rev1/keymaps/big_space/keymap.c
@@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_NAV] = LAYOUT_big_space(
- KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC,
+ KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC,
KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TAB,
KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_ENT,
KC_TRNS, KC_TRNS, KC_TRNS
diff --git a/keyboards/qpockets/space_space/rev2/config.h b/keyboards/qpockets/space_space/rev2/config.h
index bb8f04da2b..b762783d7e 100644
--- a/keyboards/qpockets/space_space/rev2/config.h
+++ b/keyboards/qpockets/space_space/rev2/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7170
-#define PRODUCT_ID 0x7373
-#define DEVICE_VER 0x3002
-#define MANUFACTURER qpockets
-#define PRODUCT space_space
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
@@ -34,7 +27,6 @@
#define MATRIX_COL_PINS \
{ C6, F6, F1, F4, F5, E6, D6, B2, B5, D3, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/qpockets/space_space/rev2/info.json b/keyboards/qpockets/space_space/rev2/info.json
index 5bac73c642..a6cad3665e 100644
--- a/keyboards/qpockets/space_space/rev2/info.json
+++ b/keyboards/qpockets/space_space/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "space_space",
+ "manufacturer": "qpockets",
"url": "",
"maintainer": "qpockets",
+ "usb": {
+ "vid": "0x7170",
+ "pid": "0x7373",
+ "device_version": "30.0.2"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/qpockets/space_space/rev2/keymaps/big_space/keymap.c b/keyboards/qpockets/space_space/rev2/keymaps/big_space/keymap.c
index a272c001b4..afde5f7b20 100644
--- a/keyboards/qpockets/space_space/rev2/keymaps/big_space/keymap.c
+++ b/keyboards/qpockets/space_space/rev2/keymaps/big_space/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_NAV] = LAYOUT_big_space(
- KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC,
+ KC_HOME, KC_UP, KC_END, KC_PGUP, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_BSPC,
KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TAB,
KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_VOLU, KC_ENT,
KC_TRNS, KC_TRNS, KC_TRNS
diff --git a/keyboards/qpockets/space_space/rev2/keymaps/qpockets/keymap.c b/keyboards/qpockets/space_space/rev2/keymaps/qpockets/keymap.c
index 986e435957..c163c6eac9 100644
--- a/keyboards/qpockets/space_space/rev2/keymaps/qpockets/keymap.c
+++ b/keyboards/qpockets/space_space/rev2/keymaps/qpockets/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_NAV] = LAYOUT_default(
- KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC,
+ KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC,
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_TAB,
KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_CAPS, KC_F9, KC_F10, KC_F11, KC_F12, KC_ENT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
diff --git a/keyboards/qpockets/wanten/config.h b/keyboards/qpockets/wanten/config.h
index 18a91c1dfd..feba6e742a 100644
--- a/keyboards/qpockets/wanten/config.h
+++ b/keyboards/qpockets/wanten/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7170 //qp
-#define PRODUCT_ID 0x7774 //wt
-#define DEVICE_VER 0x0001
-#define MANUFACTURER qpockets
-#define PRODUCT wanten
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F7, B3, D5 }
#define MATRIX_COL_PINS { F4, F1, B5, B6, C6, C7, D4, E6, D2, B1, B2, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/qpockets/wanten/info.json b/keyboards/qpockets/wanten/info.json
index e683761582..d78efd2758 100644
--- a/keyboards/qpockets/wanten/info.json
+++ b/keyboards/qpockets/wanten/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "wanten",
+ "manufacturer": "qpockets",
"url": "",
"maintainer": "qpockets",
+ "usb": {
+ "vid": "0x7170",
+ "pid": "0x7774",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/qpockets/wanten/keymaps/2u_bars/keymap.c b/keyboards/qpockets/wanten/keymaps/2u_bars/keymap.c
index 5e2dd8aa09..8283ea9608 100644
--- a/keyboards/qpockets/wanten/keymaps/2u_bars/keymap.c
+++ b/keyboards/qpockets/wanten/keymaps/2u_bars/keymap.c
@@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_NAV] = LAYOUT_2u_bars(
- KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC,
+ KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC,
KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_TAB,
KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_CAPS, KC_F9, KC_F10, KC_F11, KC_F12, KC_ENT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
diff --git a/keyboards/qpockets/wanten/keymaps/625_bar/keymap.c b/keyboards/qpockets/wanten/keymaps/625_bar/keymap.c
index b1cc213d1b..37a5c3fb37 100644
--- a/keyboards/qpockets/wanten/keymaps/625_bar/keymap.c
+++ b/keyboards/qpockets/wanten/keymaps/625_bar/keymap.c
@@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_NAV] = LAYOUT_625_bar(
- KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC,
+ KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC,
KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_TRNS, KC_F5, KC_F6, KC_F7, KC_F8, KC_TAB,
KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_CAPS, KC_F9, KC_F10, KC_F11, KC_F12, KC_ENT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
diff --git a/keyboards/qpockets/wanten/readme.md b/keyboards/qpockets/wanten/readme.md
index 243e949f34..5215a7d782 100644
--- a/keyboards/qpockets/wanten/readme.md
+++ b/keyboards/qpockets/wanten/readme.md
@@ -24,4 +24,4 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (top left key or encoder) 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/quad_h/lb75/config.h b/keyboards/quad_h/lb75/config.h
index 36cb275a97..15041b1a8a 100644
--- a/keyboards/quad_h/lb75/config.h
+++ b/keyboards/quad_h/lb75/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0007
-#define DEVICE_VER 0x0001
-#define MANUFACTURER QUADH
-#define PRODUCT LB75
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 8
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D4, D6, D7, B4, B5, B6, C6, C7, D3, D5, F0, E6 }
#define MATRIX_COL_PINS { D2, D1, D0, F1, F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/quad_h/lb75/info.json b/keyboards/quad_h/lb75/info.json
index 84916f1b9b..10e63cb2d0 100644
--- a/keyboards/quad_h/lb75/info.json
+++ b/keyboards/quad_h/lb75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "LB75",
+ "manufacturer": "QUADH",
"url": "",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_continuous_fnrow": {
"layout": [
diff --git a/keyboards/quad_h/lb75/keymaps/divided_fnrow/keymap.c b/keyboards/quad_h/lb75/keymaps/divided_fnrow/keymap.c
index 5a3a58482d..34edfc511c 100644
--- a/keyboards/quad_h/lb75/keymaps/divided_fnrow/keymap.c
+++ b/keyboards/quad_h/lb75/keymaps/divided_fnrow/keymap.c
@@ -25,7 +25,7 @@ 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
),
[1] = LAYOUT_divided_fnrow( /* Fn */
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_CAPS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_STEP, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/quantrik/kyuu/config.h b/keyboards/quantrik/kyuu/config.h
index 772e404ad0..f8da7ab014 100644
--- a/keyboards/quantrik/kyuu/config.h
+++ b/keyboards/quantrik/kyuu/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5154 // "QT"
-#define PRODUCT_ID 0x0009
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Quantrik
-#define PRODUCT Kyuu
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, B5, B4, D7, D6 }
#define MATRIX_COL_PINS { F1, F4, F5, F6, F7, C7, C6, F0, B7, D0, D5, D3, D2, D1, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/quantrik/kyuu/info.json b/keyboards/quantrik/kyuu/info.json
index c245b8baee..f30b74c1a7 100644
--- a/keyboards/quantrik/kyuu/info.json
+++ b/keyboards/quantrik/kyuu/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Kyuu",
+ "manufacturer": "Quantrik",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5154",
+ "pid": "0x0009",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/qvex/lynepad/config.h b/keyboards/qvex/lynepad/config.h
index d1a5c2eb0b..31e0d8ded3 100644
--- a/keyboards/qvex/lynepad/config.h
+++ b/keyboards/qvex/lynepad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5156
-#define PRODUCT_ID 0x4C50
-#define DEVICE_VER 0x0001
-#define MANUFACTURER QVEX
-#define PRODUCT Lynepad
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 4
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Basic matrix config */
#define MATRIX_ROW_PINS { C7, F7, F6}
#define MATRIX_COL_PINS { F0, F1, F4, F5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/qvex/lynepad/info.json b/keyboards/qvex/lynepad/info.json
index 46612141c1..3a21a1f9b5 100644
--- a/keyboards/qvex/lynepad/info.json
+++ b/keyboards/qvex/lynepad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "QVEX Lynepad",
+ "keyboard_name": "Lynepad",
+ "manufacturer": "QVEX",
"url": "https://www.tindie.com/products/qvex_tech/qvex-lynepad-macro-keypad/",
"maintainer": "KemoNine",
+ "usb": {
+ "vid": "0x5156",
+ "pid": "0x4C50",
+ "device_version": "0.0.1"
+ },
"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":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}]
diff --git a/keyboards/qwertlekeys/calice/calice.c b/keyboards/qwertlekeys/calice/calice.c
new file mode 100644
index 0000000000..d284544964
--- /dev/null
+++ b/keyboards/qwertlekeys/calice/calice.c
@@ -0,0 +1,17 @@
+/* copyright 2021 Joah Nelson (jels)
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERAHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General 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 "calice.h"
diff --git a/keyboards/qwertlekeys/calice/calice.h b/keyboards/qwertlekeys/calice/calice.h
new file mode 100644
index 0000000000..e418266dd9
--- /dev/null
+++ b/keyboards/qwertlekeys/calice/calice.h
@@ -0,0 +1,44 @@
+/* copyright 2021 Joah Nelson (jels)
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERAHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General 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"
+
+#define ____ KC_NO
+
+
+#define LAYOUT_all( \
+ K0B0, K0A0, K0B1, K0A1, K0B2, K0A2, K0B3, K0A4, K0B4, K0A5, K0B5, K0A6, K0B6, K0A7, K0B7, \
+ K1B0, K1A0, K1B1, K1A1, K1B2, K1A2, K1B3, K1A4, K1B4, K1A5, K1B5, K1A6, K1B6, K2B6, K1A7, K1B7, \
+ K2B0, K2A0, K2B1, K2A1, K2B2, K2A2, K2B3, K2A4, K2B4, K2A5, K2B5, K2A6, K3B6, K2A7, K2B7, \
+ K3B0, K3A0, K3B1, K3A1, K3B2, K3A2, K3B3, K3A4, K3B4, K3A5, K3B5, K3A6, K3A7, K3B7, \
+ K4B0, K4A0, K4B1, K4A1, K4B2, K4A2, K4B3, K4A4, K4B4, K4A5, K4B5, K4A6, K4B6, K4A7, \
+ K5B0, K5A0, K5B2, K5A2, K5A4, K5A5, K5B6, K5A7, K5B7 \
+){ \
+ {K0A0, K0A1, K0A2, ____, K0A4, K0A5, K0A6, K0A7}, \
+ {K0B0, K0B1, K0B2, K0B3, K0B4, K0B5, K0B6, K0B7}, \
+ {K1A0, K1A1, K1A2, ____, K1A4, K1A5, K1A6, K1A7}, \
+ {K1B0, K1B1, K1B2, K1B3, K1B4, K1B5, K1B6, K1B7}, \
+ {K2A0, K2A1, K2A2, ____, K2A4, K2A5, K2A6, K2A7}, \
+ {K2B0, K2B1, K2B2, K2B3, K2B4, K2B5, K2B6, K2B7}, \
+ {K3A0, K3A1, K3A2, ____, K3A4, K3A5, K3A6, K3A7}, \
+ {K3B0, K3B1, K3B2, K3B3, K3B4, K3B5, K3B6, K3B7}, \
+ {K4A0, K4A1, K4A2, ____, K4A4, K4A5, K4A6, K4A7}, \
+ {K4B0, K4B1, K4B2, K4B3, K4B4, K4B5, K4B6, ____}, \
+ {K5A0, ____, K5A2, ____, K5A4, K5A5, ____, K5A7}, \
+ {K5B0, ____, K5B2, ____, ____, ____, K5B6, K5B7} \
+}
diff --git a/keyboards/qwertlekeys/calice/config.h b/keyboards/qwertlekeys/calice/config.h
new file mode 100644
index 0000000000..b23c5d642a
--- /dev/null
+++ b/keyboards/qwertlekeys/calice/config.h
@@ -0,0 +1,47 @@
+ /* Copyright 2021 Joah Nelson (Jels)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 Matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 8
+
+#define BOOTMAGIC_LITE_COLUMN 0
+#define BOOTMAGIC_LITE_ROW 1
+
+/*Define Matrix Pins */
+#define MATRIX_ROW_PINS {F0, F1, F5, F4, C6, C7, B5, B6, D4, D2, D5, D3}
+#define MATRIX_COL_PINS {D7, B4, F7, F6, D1, B7, B3, B2}
+
+#define LED_CAPS_LOCK_PIN D6
+
+/* Envoder */
+#define ENCODERS_PAD_A {B0}
+#define ENCODERS_PAD_B {B1}
+
+/* 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/qwertlekeys/calice/info.json b/keyboards/qwertlekeys/calice/info.json
new file mode 100644
index 0000000000..d88ada3894
--- /dev/null
+++ b/keyboards/qwertlekeys/calice/info.json
@@ -0,0 +1,98 @@
+{
+ "keyboard_name": "Calice",
+ "manufacturer": "QwertleKeys",
+ "url": "",
+ "maintainer": "Jels",
+ "usb": {
+ "vid": "0x716B",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"1,0", "x":0.5, "y":0},
+ {"label":"0,0", "x":1.75, "y":0},
+ {"label":"1,1", "x":2.75, "y":0},
+ {"label":"0,1", "x":3.75, "y":0},
+ {"label":"1,2", "x":4.75, "y":0},
+ {"label":"0,2", "x":6.25, "y":0},
+ {"label":"1,3", "x":7.25, "y":0},
+ {"label":"0,4", "x":8.25, "y":0},
+ {"label":"1,4", "x":9.25, "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":13.75, "y":0},
+ {"label":"0,7", "x":15, "y":0},
+ {"label":"1,7", "x":16.75, "y":0},
+ {"label":"3,7", "x":17, "y":1},
+ {"label":"3,0", "x":1.25, "y":1.25},
+ {"label":"2,0", "x":2.25, "y":1.25},
+ {"label":"3,1", "x":3.25, "y":1.25},
+ {"label":"2,1", "x":4.25, "y":1.25},
+ {"label":"3,2", "x":5.25, "y":1.25},
+ {"label":"2,2", "x":6.25, "y":1.25},
+ {"label":"3,3", "x":7.25, "y":1.25},
+ {"label":"2,4", "x":8.75, "y":1.25},
+ {"label":"3,4", "x":9.75, "y":1.25},
+ {"label":"2,5", "x":10.75, "y":1.25},
+ {"label":"3,5", "x":11.75, "y":1.25},
+ {"label":"2,6", "x":12.75, "y":1.25},
+ {"label":"3,6", "x":13.75, "y":1.25},
+ {"label":"5,6", "x":14.75, "y":1.25},
+ {"label":"2,7", "x":15.75, "y":1.25},
+ {"label":"5,7", "x":17.25, "y":2},
+ {"label":"5,0", "x":1, "y":2.25, "w":1.5},
+ {"label":"4,0", "x":2.5, "y":2.25},
+ {"label":"5,1", "x":3.5, "y":2.25},
+ {"label":"4,1", "x":4.5, "y":2.25},
+ {"label":"5,2", "x":5.5, "y":2.25},
+ {"label":"4,2", "x":6.5, "y":2.25},
+ {"label":"5,3", "x":8.5, "y":2.25},
+ {"label":"4,4", "x":9.5, "y":2.25},
+ {"label":"5,4", "x":10.5, "y":2.25},
+ {"label":"4,5", "x":11.5, "y":2.25},
+ {"label":"5,5", "x":12.5, "y":2.25},
+ {"label":"4,6", "x":13.5, "y":2.25},
+ {"label":"7,6", "x":14.5, "y":2.25},
+ {"label":"4,7", "x":15.5, "y":2.25, "w":1.5},
+ {"label":"7,7", "x":17.5, "y":3},
+ {"label":"7,0", "x":0.75, "y":3.25, "w":1.75},
+ {"label":"6,0", "x":2.5, "y":3.25},
+ {"label":"7,1", "x":3.5, "y":3.25},
+ {"label":"6,1", "x":4.5, "y":3.25},
+ {"label":"7,2", "x":5.5, "y":3.25},
+ {"label":"6,2", "x":6.5, "y":3.25},
+ {"label":"7,3", "x":9, "y":3.25},
+ {"label":"6,4", "x":10, "y":3.25},
+ {"label":"7,4", "x":11, "y":3.25},
+ {"label":"6,5", "x":12, "y":3.25},
+ {"label":"7,5", "x":13, "y":3.25},
+ {"label":"6,6", "x":14, "y":3.25},
+ {"label":"6,7", "x":15, "y":3.25, "w":2.25},
+ {"label":"9,0", "x":0.5, "y":4.25, "w":2.25},
+ {"label":"8,0", "x":2.75, "y":4.25},
+ {"label":"9,1", "x":3.75, "y":4.25},
+ {"label":"8,1", "x":4.75, "y":4.25},
+ {"label":"9,2", "x":5.75, "y":4.25},
+ {"label":"8,2", "x":6.75, "y":4.25},
+ {"label":"9,3", "x":8.75, "y":4.25},
+ {"label":"8,4", "x":9.75, "y":4.25},
+ {"label":"9,4", "x":10.75, "y":4.25},
+ {"label":"8,5", "x":11.75, "y":4.25},
+ {"label":"9,5", "x":12.75, "y":4.25},
+ {"label":"8,6", "x":13.75, "y":4.25},
+ {"label":"9,6", "x":14.75, "y":4.25, "w":1.75},
+ {"label":"8,7", "x":16.5, "y":4.25},
+ {"label":"11,0", "x":0.5, "y":5.25, "w":1.5},
+ {"label":"10,0", "x":3.25, "y":5.25, "w":1.5},
+ {"label":"11,2", "x":4.75, "y":5.25, "w":2.25},
+ {"label":"10,2", "x":7, "y":5.25},
+ {"label":"10,4", "x":8.25, "y":5.25, "w":2.75},
+ {"label":"10,5", "x":11, "y":5.25, "w":1.5},
+ {"label":"11,6", "x":15.5, "y":5.25},
+ {"label":"10,7", "x":16.5, "y":5.25},
+ {"label":"11,7", "x":17.5, "y":5.25}]
+ }
+ }
+}
diff --git a/keyboards/qwertlekeys/calice/keymaps/default/keymap.c b/keyboards/qwertlekeys/calice/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d9876034de
--- /dev/null
+++ b/keyboards/qwertlekeys/calice/keymaps/default/keymap.c
@@ -0,0 +1,38 @@
+/* copyright 2021 Joah Nelson (jels)
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERAHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General 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] = {
+
+//base layer
+[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_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_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_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,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, 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
+ )
+}; \ No newline at end of file
diff --git a/keyboards/qwertlekeys/calice/keymaps/via/keymap.c b/keyboards/qwertlekeys/calice/keymaps/via/keymap.c
new file mode 100644
index 0000000000..102b20aa5c
--- /dev/null
+++ b/keyboards/qwertlekeys/calice/keymaps/via/keymap.c
@@ -0,0 +1,54 @@
+/* copyright 2021 Joah Nelson (jels)
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERAHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General 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] = {
+
+//base layer
+[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_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_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_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,
+ KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, 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
+ ),
+[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
+ ),
+[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
+ )
+};
diff --git a/keyboards/qwertlekeys/calice/keymaps/via/rules.mk b/keyboards/qwertlekeys/calice/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/qwertlekeys/calice/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/qwertlekeys/calice/readme.md b/keyboards/qwertlekeys/calice/readme.md
new file mode 100644
index 0000000000..9fc7d570cf
--- /dev/null
+++ b/keyboards/qwertlekeys/calice/readme.md
@@ -0,0 +1,23 @@
+# Calice
+
+![Calice](https://i.imgur.com/5Xsw1ojl.jpg)
+
+## A 75% Alice
+
+* Keyboard Maintainer: [jels](https://github.com/Jels02)
+* Hardware Supported: Calice PCB
+* Hardware Availabililty: Groupbuy
+
+Make example for this keyboard (after setting up your build environment):
+
+ make qwertlekeys/calice:default
+
+Flashing example for this keyboard:
+
+ make qwertlekeys/calice: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).
+
+* **Bootmagic reset**: Hold down the top left key (ESC) 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/qwertlekeys/calice/rules.mk b/keyboards/qwertlekeys/calice/rules.mk
new file mode 100644
index 0000000000..cef940efac
--- /dev/null
+++ b/keyboards/qwertlekeys/calice/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
+ENCODER_ENABLE = yes
diff --git a/keyboards/qwertykeys/qk65/hotswap/config.h b/keyboards/qwertykeys/qk65/hotswap/config.h
index 8dfaf1648d..51b4780c22 100644
--- a/keyboards/qwertykeys/qk65/hotswap/config.h
+++ b/keyboards/qwertykeys/qk65/hotswap/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4F53 //0x4F53 for qwertykeys
-#define PRODUCT_ID 0x514B //0x514B QK for QK65
-#define DEVICE_VER 0x0001
-#define MANUFACTURER qwertykeys
-#define PRODUCT QK65
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/qwertykeys/qk65/hotswap/info.json b/keyboards/qwertykeys/qk65/hotswap/info.json
index 21d30bd491..a4684a27db 100644
--- a/keyboards/qwertykeys/qk65/hotswap/info.json
+++ b/keyboards/qwertykeys/qk65/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "qk65",
+ "keyboard_name": "QK65 Hotswap",
+ "manufacturer": "qwertykeys",
"url": "",
"maintainer": "qwertykeys",
+ "usb": {
+ "vid": "0x4F53",
+ "pid": "0x514B",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_hotswap": "LAYOUT_65_ansi_blocker"
},
diff --git a/keyboards/qwertykeys/qk65/solder/config.h b/keyboards/qwertykeys/qk65/solder/config.h
index be8c11bbda..b12d6d4121 100644
--- a/keyboards/qwertykeys/qk65/solder/config.h
+++ b/keyboards/qwertykeys/qk65/solder/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter s*/
-#define VENDOR_ID 0x4F53 // 0x4F53 for qwertykeys
-#define PRODUCT_ID 0x5153 //0x5153 QS for QK65 Solder
-#define DEVICE_VER 0x0001
-#define MANUFACTURER qwertykeys
-#define PRODUCT QK65
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/qwertykeys/qk65/solder/info.json b/keyboards/qwertykeys/qk65/solder/info.json
index 53c5179f42..332f881cb3 100644
--- a/keyboards/qwertykeys/qk65/solder/info.json
+++ b/keyboards/qwertykeys/qk65/solder/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "qk65",
+ "keyboard_name": "QK65 Solder",
+ "manufacturer": "qwertykeys",
"url": "",
"maintainer": "qwertykeys",
+ "usb": {
+ "vid": "0x4F53",
+ "pid": "0x5153",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_solder": "LAYOUT_all",
"LAYOUT_iso": "LAYOUT_65_iso_blocker"
diff --git a/keyboards/qwertyydox/config.h b/keyboards/qwertyydox/config.h
index 4ca8fed192..748999ac64 100644
--- a/keyboards/qwertyydox/config.h
+++ b/keyboards/qwertyydox/config.h
@@ -19,13 +19,6 @@ 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 PRODUCT_ID 0x1256
-#define DEVICE_VER 0x0100
-#define MANUFACTURER AYDENandDAD Youtube
-#define PRODUCT QWERTYYdox
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/qwertyydox/info.json b/keyboards/qwertyydox/info.json
index 53de10d3f6..ee19ee58c0 100644
--- a/keyboards/qwertyydox/info.json
+++ b/keyboards/qwertyydox/info.json
@@ -1,8 +1,14 @@
{
"keyboard_name": "QWERTYYdox",
+ "manufacturer": "AYDENandDAD Youtube",
"identifier": "0x1256",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xCEEB",
+ "pid": "0x1256",
+ "device_version": "1.0.0"
+ },
"bootloader": "caterina",
"processor": "atmega32u4",
"layouts": {
diff --git a/keyboards/rabbit/rabbit68/config.h b/keyboards/rabbit/rabbit68/config.h
index 9ebd5e55ae..9a5e4781a3 100644
--- a/keyboards/rabbit/rabbit68/config.h
+++ b/keyboards/rabbit/rabbit68/config.h
@@ -19,13 +19,6 @@ 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 0x68F1
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Kai Eckert
-#define PRODUCT Rabbit68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, D7, D0, B3, B7 }
#define MATRIX_COL_PINS { D6, D1, B4, D2, B5, F7, F6, F5, F4, F1, F0, B0, B1, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/rabbit/rabbit68/info.json b/keyboards/rabbit/rabbit68/info.json
index 2f6fcf7e63..a850c3ae05 100644
--- a/keyboards/rabbit/rabbit68/info.json
+++ b/keyboards/rabbit/rabbit68/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Rabbit68",
+ "manufacturer": "Kai Eckert",
"url": "",
"maintainer": "kaiec",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x68F1",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/rad/config.h b/keyboards/rad/config.h
index 47048722b1..04ea4f9cb9 100644
--- a/keyboards/rad/config.h
+++ b/keyboards/rad/config.h
@@ -23,7 +23,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D7, C6, B6, D0 }
#define MATRIX_COL_PINS { B5, B4, E6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rad/readme.md b/keyboards/rad/readme.md
index 3a0fc76230..81254ad69e 100644
--- a/keyboards/rad/readme.md
+++ b/keyboards/rad/readme.md
@@ -21,4 +21,4 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,2) in the matrix (top right) 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/rainkeebs/delilah/config.h b/keyboards/rainkeebs/delilah/config.h
index d07366a51d..498596eccd 100644
--- a/keyboards/rainkeebs/delilah/config.h
+++ b/keyboards/rainkeebs/delilah/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x726B
-#define PRODUCT_ID 0x645C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER rainkeebs
-#define PRODUCT Delilah
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -31,7 +24,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B5, B6, C6, C7 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F0, E6, D5, D3, D4, D6, D7, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rainkeebs/delilah/info.json b/keyboards/rainkeebs/delilah/info.json
index d6a378eeba..5600bae870 100644
--- a/keyboards/rainkeebs/delilah/info.json
+++ b/keyboards/rainkeebs/delilah/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Delilah",
+ "manufacturer": "rainkeebs",
"url": "https://www.rainkeebs.mx/product/delilah-keyboard-group-buy",
"maintainer": "rainkeebs",
+ "usb": {
+ "vid": "0x726B",
+ "pid": "0x645C",
+ "device_version": "0.0.1"
+ },
"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":"Back<br>Space", "x":11, "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}, {"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.5}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3}, {"label":"Alt", "x":2.25, "y":3}, {"label":"225", "x":3.25, "y":3, "w":2.25}, {"label":"275", "x":5.5, "y":3, "w":2.75}, {"label":"Alt", "x":9.0, "y":3}, {"label":"Win", "x":10.0, "y":3}, {"label":"Ctrl", "x":11.0, "y":3, "w":1.25}]
diff --git a/keyboards/rainkeebs/rainkeeb/config.h b/keyboards/rainkeebs/rainkeeb/config.h
index 36c3a5d5bf..a2049a87a4 100644
--- a/keyboards/rainkeebs/rainkeeb/config.h
+++ b/keyboards/rainkeebs/rainkeeb/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x726B // rk - "rainkeebs"
-#define PRODUCT_ID 0x726B // rk - "rainkeeb"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER rainkeebs
-#define PRODUCT rainkeeb
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
@@ -31,7 +24,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D3, D2, D4, C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rainkeebs/rainkeeb/info.json b/keyboards/rainkeebs/rainkeeb/info.json
index b704d2d43b..b0ced909a6 100644
--- a/keyboards/rainkeebs/rainkeeb/info.json
+++ b/keyboards/rainkeebs/rainkeeb/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "rainkeeb",
+ "manufacturer": "rainkeebs",
"url": "",
"maintainer": "rain",
+ "usb": {
+ "vid": "0x726B",
+ "pid": "0x726B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/rainkeebs/yasui/config.h b/keyboards/rainkeebs/yasui/config.h
index 7d41a9e7f9..d595f6cbf0 100644
--- a/keyboards/rainkeebs/yasui/config.h
+++ b/keyboards/rainkeebs/yasui/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x726B // rk - "rainkeebs"
-#define PRODUCT_ID 0x7973 // ys - "yasui"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER rainkeebs
-#define PRODUCT yasui
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -31,7 +24,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D4, C6, B5, E6 }
#define MATRIX_COL_PINS { D7, B4, B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rainkeebs/yasui/info.json b/keyboards/rainkeebs/yasui/info.json
index 019d4f94fc..b1f44226f0 100644
--- a/keyboards/rainkeebs/yasui/info.json
+++ b/keyboards/rainkeebs/yasui/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Yasui",
+ "manufacturer": "rainkeebs",
"url": "https://www.rainkeebs.mx/product/yasui-keyboard-kit",
"maintainer": "rainkeebs",
+ "usb": {
+ "vid": "0x726B",
+ "pid": "0x7973",
+ "device_version": "0.0.1"
+ },
"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":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":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":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}]
diff --git a/keyboards/ramonimbao/aelith/config.h b/keyboards/ramonimbao/aelith/config.h
index a2911dac4f..285a9b5e6a 100644
--- a/keyboards/ramonimbao/aelith/config.h
+++ b/keyboards/ramonimbao/aelith/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB16B
-#define PRODUCT_ID 0xE460
-#define DEVICE_VER 0x0012
-#define MANUFACTURER Ramon Imbao
-#define PRODUCT AELITH
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D5, D1, D0, D6, A7 }
#define MATRIX_COL_PINS { D7, C0, C1, C2, C3, C4, C5, C6, C7, A6, A5, A0, A1, A2, A3, A4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ramonimbao/aelith/info.json b/keyboards/ramonimbao/aelith/info.json
index 8dd9ddff0a..2df7a46399 100644
--- a/keyboards/ramonimbao/aelith/info.json
+++ b/keyboards/ramonimbao/aelith/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "AELITH",
+ "manufacturer": "Ramon Imbao",
"url": "",
"maintainer": "Ramon Imbao",
+ "usb": {
+ "vid": "0xB16B",
+ "pid": "0xE460",
+ "device_version": "0.1.2"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/ramonimbao/chevron/config.h b/keyboards/ramonimbao/chevron/config.h
index 9deeff3856..4a2f1fe008 100644
--- a/keyboards/ramonimbao/chevron/config.h
+++ b/keyboards/ramonimbao/chevron/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB16B
-#define PRODUCT_ID 0xC4EE
-#define DEVICE_VER 0x0012
-#define MANUFACTURER Ramon Imbao
-#define PRODUCT Chevron
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D5, D6, C0, D7, NO_PIN }
#define MATRIX_COL_PINS { A5, A6, A7, C7, C6, C5, C4, C3, C2, C1, A4, A3, A2, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ramonimbao/chevron/info.json b/keyboards/ramonimbao/chevron/info.json
index b464fd9915..d9add91eba 100644
--- a/keyboards/ramonimbao/chevron/info.json
+++ b/keyboards/ramonimbao/chevron/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Chevron",
+ "manufacturer": "Ramon Imbao",
"url": "",
"maintainer": "ramonimbao",
+ "usb": {
+ "vid": "0xB16B",
+ "pid": "0xC4EE",
+ "device_version": "0.1.2"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/ramonimbao/herringbone/pro/config.h b/keyboards/ramonimbao/herringbone/pro/config.h
index f78665a880..298f8cff56 100644
--- a/keyboards/ramonimbao/herringbone/pro/config.h
+++ b/keyboards/ramonimbao/herringbone/pro/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB16B
-#define PRODUCT_ID 0x440B
-#define DEVICE_VER 0x0012
-#define MANUFACTURER Ramon Imbao
-#define PRODUCT Herringbone Pro
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C4, C5, C6, C7, A7, A6, NO_PIN }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, D6, D5, D1, B0, B1, B2, B3, B4, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ramonimbao/herringbone/pro/info.json b/keyboards/ramonimbao/herringbone/pro/info.json
index c7846f00f2..3ca8db0858 100644
--- a/keyboards/ramonimbao/herringbone/pro/info.json
+++ b/keyboards/ramonimbao/herringbone/pro/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Herringbone Pro",
+ "manufacturer": "Ramon Imbao",
"url": "",
"maintainer": "Ramon Imbao",
+ "usb": {
+ "vid": "0xB16B",
+ "pid": "0x440B",
+ "device_version": "0.1.2"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/ramonimbao/herringbone/v1/config.h b/keyboards/ramonimbao/herringbone/v1/config.h
index 7f37bcc8b2..cbe83f71fc 100644
--- a/keyboards/ramonimbao/herringbone/v1/config.h
+++ b/keyboards/ramonimbao/herringbone/v1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB16B
-#define PRODUCT_ID 0x04E5
-#define DEVICE_VER 0x0012
-#define MANUFACTURER Ramon Imbao
-#define PRODUCT Herringbone
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C4, C5, C6, C7, A7, A6 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, D6, D5, D1, B0, B1, B2, B3, B4, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ramonimbao/herringbone/v1/info.json b/keyboards/ramonimbao/herringbone/v1/info.json
index b5b1ea3187..2bacde4015 100644
--- a/keyboards/ramonimbao/herringbone/v1/info.json
+++ b/keyboards/ramonimbao/herringbone/v1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Herringbone",
+ "manufacturer": "Ramon Imbao",
"url": "",
"maintainer": "Ramon Imbao",
+ "usb": {
+ "vid": "0xB16B",
+ "pid": "0x04E5",
+ "device_version": "0.1.2"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/ramonimbao/mona/v1/config.h b/keyboards/ramonimbao/mona/v1/config.h
index 5ee7ca3e33..bbe396b2f8 100644
--- a/keyboards/ramonimbao/mona/v1/config.h
+++ b/keyboards/ramonimbao/mona/v1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB16B
-#define PRODUCT_ID 0x404A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ramon Imbao
-#define PRODUCT Mona
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D1, D5, B7, F0, F1 }
#define MATRIX_COL_PINS { D0, D3, D2, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ramonimbao/mona/v1/info.json b/keyboards/ramonimbao/mona/v1/info.json
index 11b0719145..05467e5dac 100644
--- a/keyboards/ramonimbao/mona/v1/info.json
+++ b/keyboards/ramonimbao/mona/v1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mona",
+ "manufacturer": "Ramon Imbao",
"url": "",
"maintainer": "Ramon Imbao",
+ "usb": {
+ "vid": "0xB16B",
+ "pid": "0x404A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
@@ -352,78 +358,6 @@
{"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}
- ]
}
}
}
diff --git a/keyboards/ramonimbao/mona/v1_1/config.h b/keyboards/ramonimbao/mona/v1_1/config.h
index ce9c01139e..ff99b86a06 100644
--- a/keyboards/ramonimbao/mona/v1_1/config.h
+++ b/keyboards/ramonimbao/mona/v1_1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB16B
-#define PRODUCT_ID 0x404B
-#define DEVICE_VER 0x0011
-#define MANUFACTURER Ramon Imbao
-#define PRODUCT Mona
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D1, D5, B7, F0, F1 }
#define MATRIX_COL_PINS { D0, D3, D2, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ramonimbao/mona/v1_1/info.json b/keyboards/ramonimbao/mona/v1_1/info.json
index 8a2e11f13c..b7f19f52ba 100644
--- a/keyboards/ramonimbao/mona/v1_1/info.json
+++ b/keyboards/ramonimbao/mona/v1_1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mona",
+ "manufacturer": "Ramon Imbao",
"url": "",
"maintainer": "Ramon Imbao",
+ "usb": {
+ "vid": "0xB16B",
+ "pid": "0x404B",
+ "device_version": "0.1.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
@@ -353,78 +359,6 @@
{"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},
diff --git a/keyboards/ramonimbao/mona/v1_1/readme.md b/keyboards/ramonimbao/mona/v1_1/readme.md
index b28fedd76c..17ae6012bd 100644
--- a/keyboards/ramonimbao/mona/v1_1/readme.md
+++ b/keyboards/ramonimbao/mona/v1_1/readme.md
@@ -7,7 +7,7 @@ A gummy-worm o-ring mount 60% marble keyboard. Now with ALPS/MX, Caps Lock LED,
* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
* Hardware Supported: ATmega32u4
-To get to the bootloader, with the USB cable plugged in, press the `RESET` button on the back of the PCB.
+To get to the bootloader, with the USB cable plugged in, press the `QK_BOOT` button on the back of the PCB.
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/ramonimbao/mona/v32a/config.h b/keyboards/ramonimbao/mona/v32a/config.h
index fdd80e59aa..dce6c80d1f 100644
--- a/keyboards/ramonimbao/mona/v32a/config.h
+++ b/keyboards/ramonimbao/mona/v32a/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/ramonimbao/mona/v32a/info.json b/keyboards/ramonimbao/mona/v32a/info.json
index 8a2e11f13c..b3a1332a83 100644
--- a/keyboards/ramonimbao/mona/v32a/info.json
+++ b/keyboards/ramonimbao/mona/v32a/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Mona",
+ "manufacturer": "Ramon Imbao",
"url": "",
"maintainer": "Ramon Imbao",
+ "usb": {
+ "vid": "0xB16B",
+ "pid": "0x4032",
+ "device_version": "0.1.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
@@ -353,78 +359,6 @@
{"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},
diff --git a/keyboards/ramonimbao/mona/v32a/readme.md b/keyboards/ramonimbao/mona/v32a/readme.md
index 61a3deefaa..f9a730691f 100644
--- a/keyboards/ramonimbao/mona/v32a/readme.md
+++ b/keyboards/ramonimbao/mona/v32a/readme.md
@@ -7,7 +7,7 @@ A gummy-worm o-ring mount 60% marble keyboard. Now with ALPS/MX, Caps Lock LED,
* 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.
+To get to the bootloader, with the USB cable plugged in, press the `QK_BOOT` button on the back of the PCB.
Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/ramonimbao/squishy65/config.h b/keyboards/ramonimbao/squishy65/config.h
index 1f2bfd7e66..1f858ffee2 100644
--- a/keyboards/ramonimbao/squishy65/config.h
+++ b/keyboards/ramonimbao/squishy65/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB16B
-#define PRODUCT_ID 0x10B5
-#define DEVICE_VER 0x0065
-#define MANUFACTURER Ramon Imbao
-#define PRODUCT Squishy65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/ramonimbao/squishy65/info.json b/keyboards/ramonimbao/squishy65/info.json
index d85efa831f..5e41ed2685 100644
--- a/keyboards/ramonimbao/squishy65/info.json
+++ b/keyboards/ramonimbao/squishy65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Squishy65",
+ "manufacturer": "Ramon Imbao",
"url": "",
"maintainer": "Ramon Imbao",
+ "usb": {
+ "vid": "0xB16B",
+ "pid": "0x10B5",
+ "device_version": "0.6.5"
+ },
"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":"~", "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":"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":"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":"", "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/ramonimbao/squishyfrl/config.h b/keyboards/ramonimbao/squishyfrl/config.h
index 9a50948771..04e9a6039d 100644
--- a/keyboards/ramonimbao/squishyfrl/config.h
+++ b/keyboards/ramonimbao/squishyfrl/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB16B
-#define PRODUCT_ID 0x4BE5
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ramon Imbao
-#define PRODUCT SquishyFRL
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 21
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B9, B8, A0, A1, A9, A8, B11, A6, A5}
#define MATRIX_COL_PINS { A7, C4, C5, B0, B1, B2, B10, B12, B13, B14, B15, C6, C9, C7, C8, A10, A4, C14, A3, A2, C3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ramonimbao/squishyfrl/info.json b/keyboards/ramonimbao/squishyfrl/info.json
index 15a1cd1f86..d2623d0fc9 100644
--- a/keyboards/ramonimbao/squishyfrl/info.json
+++ b/keyboards/ramonimbao/squishyfrl/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "SquishyTKL",
+ "keyboard_name": "SquishyFRL",
+ "manufacturer": "Ramon Imbao",
"url": "",
"maintainer": "Ramon Imbao",
+ "usb": {
+ "vid": "0xB16B",
+ "pid": "0x4BE5",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/ramonimbao/squishytkl/config.h b/keyboards/ramonimbao/squishytkl/config.h
index 0ee0bc9509..c5843a2277 100644
--- a/keyboards/ramonimbao/squishytkl/config.h
+++ b/keyboards/ramonimbao/squishytkl/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB16B
-#define PRODUCT_ID 0x00B1
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Ramon Imbao
-#define PRODUCT SquishyTKL
-
/* key matrix size */
#define MATRIX_ROWS 14
#define MATRIX_COLS 26
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B3, B4, B5, C13, B9, B8, A0, A1, A9, A8, B11, A6, A5, C0 }
#define MATRIX_COL_PINS { A15, C10, C11, C12, D2, A7, C4, C5, B0, B1, B2, B10, B12, B13, B14, B15, C6, C9, C7, C8, A10, A4, C14, A3, A2, C3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ramonimbao/squishytkl/info.json b/keyboards/ramonimbao/squishytkl/info.json
index aa19c73fa8..1f60e2bcaf 100644
--- a/keyboards/ramonimbao/squishytkl/info.json
+++ b/keyboards/ramonimbao/squishytkl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "SquishyTKL",
+ "manufacturer": "Ramon Imbao",
"url": "",
"maintainer": "Ramon Imbao",
+ "usb": {
+ "vid": "0xB16B",
+ "pid": "0x00B1",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/ramonimbao/tkl_ff/config.h b/keyboards/ramonimbao/tkl_ff/config.h
index d0b3ee75ff..550b2ffee0 100644
--- a/keyboards/ramonimbao/tkl_ff/config.h
+++ b/keyboards/ramonimbao/tkl_ff/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB16B
-#define PRODUCT_ID 0x00FF
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ramon Imbao
-#define PRODUCT TKL FF
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B2, B3, B7, D6, D3, D2 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D4, D5, B0, B1, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ramonimbao/tkl_ff/info.json b/keyboards/ramonimbao/tkl_ff/info.json
index fd71d3f990..a3a22e34d8 100644
--- a/keyboards/ramonimbao/tkl_ff/info.json
+++ b/keyboards/ramonimbao/tkl_ff/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "TKL FF",
+ "manufacturer": "Ramon Imbao",
"url": "",
"maintainer": "Ramon Imbao",
+ "usb": {
+ "vid": "0xB16B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/ramonimbao/tkl_ff/rules.mk b/keyboards/ramonimbao/tkl_ff/rules.mk
index 1275531ef6..36c8b4137b 100644
--- a/keyboards/ramonimbao/tkl_ff/rules.mk
+++ b/keyboards/ramonimbao/tkl_ff/rules.mk
@@ -16,3 +16,5 @@ NKRO_ENABLE = 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 = ramonimbao/tkl_ff/v1
diff --git a/keyboards/ramonimbao/tkl_ff/v1/info.json b/keyboards/ramonimbao/tkl_ff/v1/info.json
new file mode 100644
index 0000000000..3370446f2d
--- /dev/null
+++ b/keyboards/ramonimbao/tkl_ff/v1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "pid": "0x00FF"
+ }
+}
diff --git a/keyboards/ramonimbao/tkl_ff/v1/rules.mk b/keyboards/ramonimbao/tkl_ff/v1/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/ramonimbao/tkl_ff/v1/rules.mk
diff --git a/keyboards/ramonimbao/tkl_ff/v2/config.h b/keyboards/ramonimbao/tkl_ff/v2/config.h
index a35d1bc599..906f38813a 100644
--- a/keyboards/ramonimbao/tkl_ff/v2/config.h
+++ b/keyboards/ramonimbao/tkl_ff/v2/config.h
@@ -17,9 +17,6 @@
#include "config_common.h"
-#undef PRODUCT_ID
-#define PRODUCT_ID 0x10FF
-
#define RGBLIGHT_LAYERS
#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
diff --git a/keyboards/ramonimbao/tkl_ff/v2/info.json b/keyboards/ramonimbao/tkl_ff/v2/info.json
new file mode 100644
index 0000000000..ed70ec408c
--- /dev/null
+++ b/keyboards/ramonimbao/tkl_ff/v2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "pid": "0x10FF"
+ }
+}
diff --git a/keyboards/ramonimbao/wete/v1/config.h b/keyboards/ramonimbao/wete/v1/config.h
index ae9ffc6d97..894980edf3 100644
--- a/keyboards/ramonimbao/wete/v1/config.h
+++ b/keyboards/ramonimbao/wete/v1/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB16B
-#define PRODUCT_ID 0x00B5
-#define DEVICE_VER 0x0012
-#define MANUFACTURER Ramon Imbao
-#define PRODUCT Wete
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 20
diff --git a/keyboards/ramonimbao/wete/v1/info.json b/keyboards/ramonimbao/wete/v1/info.json
index 7886b864ab..c57354bfcb 100644
--- a/keyboards/ramonimbao/wete/v1/info.json
+++ b/keyboards/ramonimbao/wete/v1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Wete",
+ "manufacturer": "Ramon Imbao",
"url": "",
"maintainer": "Ramon Imbao",
+ "usb": {
+ "vid": "0xB16B",
+ "pid": "0x00B5",
+ "device_version": "0.1.2"
+ },
"layouts": {
"LAYOUT_ansi_rhnp": {
"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}]
diff --git a/keyboards/ramonimbao/wete/v2/config.h b/keyboards/ramonimbao/wete/v2/config.h
index d66fe09ad3..8aec9abb3c 100644
--- a/keyboards/ramonimbao/wete/v2/config.h
+++ b/keyboards/ramonimbao/wete/v2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/ramonimbao/wete/v2/info.json b/keyboards/ramonimbao/wete/v2/info.json
index 8231871a1f..64f4d1afdf 100644
--- a/keyboards/ramonimbao/wete/v2/info.json
+++ b/keyboards/ramonimbao/wete/v2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Wete R2",
+ "manufacturer": "Ramon Imbao",
"url": "",
"maintainer": "Ramon Imbao",
+ "usb": {
+ "vid": "0xB16B",
+ "pid": "0x00B3",
+ "device_version": "35.0.0"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/ramonimbao/wete/v2/readme.md b/keyboards/ramonimbao/wete/v2/readme.md
index 3b33c9bdaa..d99c611560 100644
--- a/keyboards/ramonimbao/wete/v2/readme.md
+++ b/keyboards/ramonimbao/wete/v2/readme.md
@@ -23,4 +23,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/rart/rart45/config.h b/keyboards/rart/rart45/config.h
index 90d584649d..0b8f0b7102 100644
--- a/keyboards/rart/rart45/config.h
+++ b/keyboards/rart/rart45/config.h
@@ -17,20 +17,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x414C
-#define PRODUCT_ID 0x0045
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Alabahuy
-#define PRODUCT Rart45
-
/* key matrix size */
#define MATRIX_ROWS 9
#define MATRIX_COLS 6
#define MATRIX_ROW_PINS { D1, C2, C1, B1, D0, C3, C0, D7, B0 }
#define MATRIX_COL_PINS { D6, D4, B2, B5, B4, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rart/rart45/info.json b/keyboards/rart/rart45/info.json
index e7b1f241b8..e0f9986eee 100644
--- a/keyboards/rart/rart45/info.json
+++ b/keyboards/rart/rart45/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Rart45",
+ "manufacturer": "Alabahuy",
"url": "",
"maintainer": "Alabahuy",
+ "usb": {
+ "vid": "0x414C",
+ "pid": "0x0045",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/rart/rart4x4/config.h b/keyboards/rart/rart4x4/config.h
index e203cdaaab..b859a2f552 100644
--- a/keyboards/rart/rart4x4/config.h
+++ b/keyboards/rart/rart4x4/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x414C
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Alabahuy
-#define PRODUCT RART4X4
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { F4, B6, B3, B1 }
#define MATRIX_COL_PINS { F7, B2, B5, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rart/rart4x4/info.json b/keyboards/rart/rart4x4/info.json
index 468962aaa6..79be3f9722 100644
--- a/keyboards/rart/rart4x4/info.json
+++ b/keyboards/rart/rart4x4/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "RART4X4",
+ "manufacturer": "Alabahuy",
"url": "",
"maintainer": "Alabahuy",
+ "usb": {
+ "vid": "0x414C",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x4": {
"layout": [
diff --git a/keyboards/rart/rart67/config.h b/keyboards/rart/rart67/config.h
index fe96325ac4..a303b42cd2 100644
--- a/keyboards/rart/rart67/config.h
+++ b/keyboards/rart/rart67/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x414C // "AL"
-#define PRODUCT_ID 0x0067 // "67"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Alabahuy
-#define PRODUCT RART67
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS { D0, D1, D2, D3, B0 }
#define MATRIX_COL_PINS { B3, B2, B1, D5, D4, D6, D7, B4, B5, F0, F7, F6, F5, F4, F1, E6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rart/rart67/info.json b/keyboards/rart/rart67/info.json
index 1bd24c14f8..8e6a1620f8 100644
--- a/keyboards/rart/rart67/info.json
+++ b/keyboards/rart/rart67/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "RART67",
+ "manufacturer": "Alabahuy",
"url": "",
"maintainer": "Alabahuy",
+ "usb": {
+ "vid": "0x414C",
+ "pid": "0x0067",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/rart/rart67m/config.h b/keyboards/rart/rart67m/config.h
index 02ee4817d9..796b17d5b7 100644
--- a/keyboards/rart/rart67m/config.h
+++ b/keyboards/rart/rart67m/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x414C
-#define PRODUCT_ID 0x6067
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Alabahuy
-#define PRODUCT RART67M
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/
#define MATRIX_ROW_PINS { D3, D2, D4, F6, B3, B4, B2, B5 }
#define MATRIX_COL_PINS { F4, F5, C6, F7, D7, B1, E6, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rart/rart67m/info.json b/keyboards/rart/rart67m/info.json
index a8398b041d..6cfd7dcbd6 100644
--- a/keyboards/rart/rart67m/info.json
+++ b/keyboards/rart/rart67m/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "RART67M",
+ "manufacturer": "Alabahuy",
"url": "",
"maintainer": "Alabahuy",
+ "usb": {
+ "vid": "0x414C",
+ "pid": "0x6067",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/rart/rart75/config.h b/keyboards/rart/rart75/config.h
index 1f9a473907..dcc2dff902 100644
--- a/keyboards/rart/rart75/config.h
+++ b/keyboards/rart/rart75/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x414C // "AL"
-#define PRODUCT_ID 0x0075 // "75"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Alabahuy
-#define PRODUCT RART75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { F1, F4, F6, C7, D4, D0 }
#define MATRIX_COL_PINS { D5, D3, D2, D1, C6, B6, B5, B4, D7, D6, B3, B1, F7, F5, B2, B7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rart/rart75/info.json b/keyboards/rart/rart75/info.json
index d045da2ac1..ebb8c4044d 100644
--- a/keyboards/rart/rart75/info.json
+++ b/keyboards/rart/rart75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "RART75",
+ "manufacturer": "Alabahuy",
"url": "",
"maintainer": "Alabahuy",
+ "usb": {
+ "vid": "0x414C",
+ "pid": "0x0075",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/rart/rart75hs/config.h b/keyboards/rart/rart75hs/config.h
index d08e0612a2..7c797b19b2 100644
--- a/keyboards/rart/rart75hs/config.h
+++ b/keyboards/rart/rart75hs/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x414C // "AL"
-#define PRODUCT_ID 0x5575 // "75"
-#define DEVICE_VER 0x0003
-#define MANUFACTURER Alabahuy
-#define PRODUCT RART75 Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { D5, D6, D7, D0, C5, C4 }
#define MATRIX_COL_PINS { B4, B3, B2, B1, B0, A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rart/rart75hs/info.json b/keyboards/rart/rart75hs/info.json
index 2a8cae96f8..43822f71f1 100644
--- a/keyboards/rart/rart75hs/info.json
+++ b/keyboards/rart/rart75hs/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "RART75 Hotswap",
+ "manufacturer": "Alabahuy",
"url": "",
"maintainer": "Alabahuy",
+ "usb": {
+ "vid": "0x414C",
+ "pid": "0x5575",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/rart/rart75m/config.h b/keyboards/rart/rart75m/config.h
index 528082cee0..61173b183b 100644
--- a/keyboards/rart/rart75m/config.h
+++ b/keyboards/rart/rart75m/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x414C
-#define PRODUCT_ID 0x6075
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Alabahuy
-#define PRODUCT 75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 14
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/
#define MATRIX_ROW_PINS { C7, B3, B1, B0, D3, D2 }
#define MATRIX_COL_PINS { B2, D4, F0, C6, F1, D7, F4, E6, F5, B4, F6, B5, F7, B6 }
-#define UNUSED_PINS
#define ENCODERS_PAD_B { B7 }
#define ENCODERS_PAD_A { D6 }
diff --git a/keyboards/rart/rart75m/info.json b/keyboards/rart/rart75m/info.json
index 29a948fb8c..5ff8da619f 100644
--- a/keyboards/rart/rart75m/info.json
+++ b/keyboards/rart/rart75m/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "RART75M",
+ "manufacturer": "Alabahuy",
"url": "",
"maintainer": "Alabahuy",
+ "usb": {
+ "vid": "0x414C",
+ "pid": "0x6075",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/rart/rartand/config.h b/keyboards/rart/rartand/config.h
index 841b63b639..adf7a9ed86 100644
--- a/keyboards/rart/rartand/config.h
+++ b/keyboards/rart/rartand/config.h
@@ -17,20 +17,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x414C
-#define PRODUCT_ID 0x5050
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Alabahuy
-#define PRODUCT Rartand
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 7
#define MATRIX_ROW_PINS { C3, B2, C2, B1, C1, D7, C0, B0 }
#define MATRIX_COL_PINS { D0, D1, B4, B5, B3, D4, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rart/rartand/info.json b/keyboards/rart/rartand/info.json
index e1f885ed46..8faf60cf01 100644
--- a/keyboards/rart/rartand/info.json
+++ b/keyboards/rart/rartand/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Rartand",
+ "manufacturer": "Alabahuy",
"url": "",
"maintainer": "Alabahuy",
+ "usb": {
+ "vid": "0x414C",
+ "pid": "0x5050",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/rart/rartland/config.h b/keyboards/rart/rartland/config.h
index 46f08f11a4..5994219592 100644
--- a/keyboards/rart/rartland/config.h
+++ b/keyboards/rart/rartland/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x414C
-#define PRODUCT_ID 0x6065
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Alabahuy
-#define PRODUCT RARTLAND
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -41,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/
#define MATRIX_ROW_PINS { B4, A7, A5, A6, C3 }
#define MATRIX_COL_PINS { B0, A1, B1, A2, B2, A3, B3, A4, C7, C6, D0, C5, D1, C4 }
-#define UNUSED_PINS
#define LED_CAPS_LOCK_PIN A0
#define LED_PIN_ON_STATE 0
diff --git a/keyboards/rart/rartland/info.json b/keyboards/rart/rartland/info.json
index 2743457e7a..2e46454f85 100644
--- a/keyboards/rart/rartland/info.json
+++ b/keyboards/rart/rartland/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "RARTLAND",
+ "manufacturer": "Alabahuy",
"url": " ",
"maintainer": "Alabahuy",
+ "usb": {
+ "vid": "0x414C",
+ "pid": "0x6065",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/rart/rartlice/config.h b/keyboards/rart/rartlice/config.h
index cf02cfedb6..2db1919529 100644
--- a/keyboards/rart/rartlice/config.h
+++ b/keyboards/rart/rartlice/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x414C
-#define PRODUCT_ID 0x0065
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Alabahuy
-#define PRODUCT Rartlice
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/rart/rartlice/info.json b/keyboards/rart/rartlice/info.json
index cd49dbf03c..d5e8802ee6 100644
--- a/keyboards/rart/rartlice/info.json
+++ b/keyboards/rart/rartlice/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Rartlice",
+ "manufacturer": "Alabahuy",
"url": "",
"maintainer": "Alabahuy",
+ "usb": {
+ "vid": "0x414C",
+ "pid": "0x0065",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/rart/rartlite/config.h b/keyboards/rart/rartlite/config.h
index a11592d392..b73269195a 100644
--- a/keyboards/rart/rartlite/config.h
+++ b/keyboards/rart/rartlite/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x414C
-#define PRODUCT_ID 0x4040
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Alabahuy
-#define PRODUCT RARTLITE
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 7
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { F4, D2, B2, B4, B6, B5, D0, D1 }
#define MATRIX_COL_PINS { D4, C6, D7, E6, B3, F7, D3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rart/rartlite/info.json b/keyboards/rart/rartlite/info.json
index 96b3d26d70..6403eca743 100644
--- a/keyboards/rart/rartlite/info.json
+++ b/keyboards/rart/rartlite/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "RART4X4",
+ "keyboard_name": "RARTLITE",
+ "manufacturer": "Alabahuy",
"url": "",
"maintainer": "Alabahuy",
+ "usb": {
+ "vid": "0x414C",
+ "pid": "0x4040",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_right_numpad": {
"layout": [
diff --git a/keyboards/rart/rartpad/config.h b/keyboards/rart/rartpad/config.h
index efb6c7ec29..495f6f99ba 100644
--- a/keyboards/rart/rartpad/config.h
+++ b/keyboards/rart/rartpad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x414C // "AL"
-#define PRODUCT_ID 0x0050 // "P"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Alabahuy
-#define PRODUCT RARTPAD
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B6, F6, D0, D4, C6 }
#define MATRIX_COL_PINS { B2, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rart/rartpad/info.json b/keyboards/rart/rartpad/info.json
index 48edae5122..2c883cc215 100644
--- a/keyboards/rart/rartpad/info.json
+++ b/keyboards/rart/rartpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "RARTPAD",
+ "manufacturer": "Alabahuy",
"url": "",
"maintainer": "Alabahuy",
+ "usb": {
+ "vid": "0x414C",
+ "pid": "0x0050",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [
diff --git a/keyboards/rart/rartpad/keymaps/numpad/keymap.c b/keyboards/rart/rartpad/keymaps/numpad/keymap.c
index e149dd6b1d..a576f9df9d 100644
--- a/keyboards/rart/rartpad/keymaps/numpad/keymap.c
+++ b/keyboards/rart/rartpad/keymaps/numpad/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_P0, MO(1), KC_PENT
),
[1] = LAYOUT_numpad_5x4(
- KC_TRNS, KC_TRNS, KC_TRNS, RESET,
+ KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/rate/pistachio/config.h b/keyboards/rate/pistachio/config.h
index 5ff7b3d799..8396147b11 100644
--- a/keyboards/rate/pistachio/config.h
+++ b/keyboards/rate/pistachio/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5255
-#define PRODUCT_ID 0xD0C2
-#define DEVICE_VER 0x0001
-#define MANUFACTURER rate
-#define PRODUCT pistachio
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
diff --git a/keyboards/rate/pistachio/info.json b/keyboards/rate/pistachio/info.json
index 8cdeb51ca3..7f9e92e484 100644
--- a/keyboards/rate/pistachio/info.json
+++ b/keyboards/rate/pistachio/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Pistachio",
+ "keyboard_name": "pistachio",
+ "manufacturer": "rate",
"url": "",
"maintainer": "rate",
+ "usb": {
+ "vid": "0x5255",
+ "pid": "0xD0C2",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"ESC", "x":1.25, "y":0.25},
diff --git a/keyboards/rate/pistachio/rev1/config.h b/keyboards/rate/pistachio/rev1/config.h
index efffd3c9e2..3859a34ca1 100644
--- a/keyboards/rate/pistachio/rev1/config.h
+++ b/keyboards/rate/pistachio/rev1/config.h
@@ -29,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D3}
-#define UNUSED_PINS
#define USE_I2C
diff --git a/keyboards/rate/pistachio/rev2/config.h b/keyboards/rate/pistachio/rev2/config.h
index 5363f76df4..bd682d1a90 100644
--- a/keyboards/rate/pistachio/rev2/config.h
+++ b/keyboards/rate/pistachio/rev2/config.h
@@ -29,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B5, B4, E6, D7, C6, D4 }
#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, F5, F4, D3}
-#define UNUSED_PINS
#define USE_I2C
diff --git a/keyboards/rate/pistachio_mp/config.h b/keyboards/rate/pistachio_mp/config.h
index 09b067c8ee..55f6456874 100644
--- a/keyboards/rate/pistachio_mp/config.h
+++ b/keyboards/rate/pistachio_mp/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5255
-#define PRODUCT_ID 0xE212
-#define DEVICE_VER 0x0001
-#define MANUFACTURER rate
-#define PRODUCT pistachio_mp
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -47,7 +40,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4, E6, D7, C6, D4 }
#define MATRIX_COL_PINS { B3, B1, F7, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/rate/pistachio_mp/info.json b/keyboards/rate/pistachio_mp/info.json
index d4e130300c..52c754186f 100644
--- a/keyboards/rate/pistachio_mp/info.json
+++ b/keyboards/rate/pistachio_mp/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "pistachio_mp",
+ "manufacturer": "rate",
"url": "",
"maintainer": "rate",
+ "usb": {
+ "vid": "0x5255",
+ "pid": "0xE212",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/rate/pistachio_pro/config.h b/keyboards/rate/pistachio_pro/config.h
index d140aa5407..464a68af72 100644
--- a/keyboards/rate/pistachio_pro/config.h
+++ b/keyboards/rate/pistachio_pro/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5255
-#define PRODUCT_ID 0xF40C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER rate
-#define PRODUCT PistachioPro
-
#define ENCODERS_PAD_A {D2}
#define ENCODERS_PAD_B {D3}
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D4, C6, D7, B3, B4, B5 }
#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, B6, D6 }
-#define UNUSED_PINS
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/rate/pistachio_pro/info.json b/keyboards/rate/pistachio_pro/info.json
index c519a69e11..e762f30b69 100644
--- a/keyboards/rate/pistachio_pro/info.json
+++ b/keyboards/rate/pistachio_pro/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "PistachioPro",
+ "manufacturer": "rate",
"url": "https://rates.booth.pm/items/2925303",
"maintainer": "rate",
+ "usb": {
+ "vid": "0x5255",
+ "pid": "0xF40C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/rationalist/ratio65_hotswap/info.json b/keyboards/rationalist/ratio65_hotswap/info.json
deleted file mode 100644
index 709e929fa0..0000000000
--- a/keyboards/rationalist/ratio65_hotswap/info.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "keyboard_name": "Ratio65_HotSwap",
- "url": "",
- "maintainer": "4pplet",
- "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":"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":"Insert", "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}, {"x":3.75, "y":4, "w":6.25}, {"label":"Win", "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/rationalist/ratio65_hotswap/rev_a/config.h b/keyboards/rationalist/ratio65_hotswap/rev_a/config.h
index 1bc8eb7fdf..655c6898a0 100644
--- a/keyboards/rationalist/ratio65_hotswap/rev_a/config.h
+++ b/keyboards/rationalist/ratio65_hotswap/rev_a/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4446
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 4pplet
-#define PRODUCT Ratio65 Rev A HotSwap
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
diff --git a/keyboards/rationalist/ratio65_hotswap/rev_a/info.json b/keyboards/rationalist/ratio65_hotswap/rev_a/info.json
new file mode 100644
index 0000000000..8616062b72
--- /dev/null
+++ b/keyboards/rationalist/ratio65_hotswap/rev_a/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Ratio65 Hotswap Rev A",
+ "manufacturer": "4pplet",
+ "url": "",
+ "maintainer": "4pplet",
+ "usb": {
+ "vid": "0x4446",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
+ "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":"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":"Insert", "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}, {"x":3.75, "y":4, "w":6.25}, {"label":"Win", "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/rationalist/ratio65_solder/info.json b/keyboards/rationalist/ratio65_solder/info.json
deleted file mode 100644
index e083099bde..0000000000
--- a/keyboards/rationalist/ratio65_solder/info.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "keyboard_name": "Ratio65_Solder",
- "url": "",
- "maintainer": "4pplet",
- "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":"Back", "x":14, "y":0}, {"label":"Del", "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":"Insert", "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":"Nuhs", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"Nubs", "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":"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}, {"x":3.75, "y":4, "w":6.25}, {"label":"Win", "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/rationalist/ratio65_solder/rev_a/config.h b/keyboards/rationalist/ratio65_solder/rev_a/config.h
index 824ebd3cb7..9a4a6d1357 100644
--- a/keyboards/rationalist/ratio65_solder/rev_a/config.h
+++ b/keyboards/rationalist/ratio65_solder/rev_a/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4446
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER 4pplet
-#define PRODUCT Ratio65 Rev A Solder
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
diff --git a/keyboards/rationalist/ratio65_solder/rev_a/info.json b/keyboards/rationalist/ratio65_solder/rev_a/info.json
new file mode 100644
index 0000000000..ec846e517c
--- /dev/null
+++ b/keyboards/rationalist/ratio65_solder/rev_a/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Ratio65 Solder Rev A",
+ "manufacturer": "4pplet",
+ "url": "",
+ "maintainer": "4pplet",
+ "usb": {
+ "vid": "0x4446",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
+ "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":"Back", "x":14, "y":0}, {"label":"Del", "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":"Insert", "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":"Nuhs", "x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"PgUp", "x":15, "y":2}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"label":"Nubs", "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":"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}, {"x":3.75, "y":4, "w":6.25}, {"label":"Win", "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/recompile_keys/choco60/config.h b/keyboards/recompile_keys/choco60/config.h
index 72264f51e2..5a017cbc4b 100644
--- a/keyboards/recompile_keys/choco60/config.h
+++ b/keyboards/recompile_keys/choco60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x524B // recompile keys
-#define PRODUCT_ID 0x4362 // Choco60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER recompile keys
-#define PRODUCT Choco60
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 9
diff --git a/keyboards/recompile_keys/choco60/info.json b/keyboards/recompile_keys/choco60/info.json
index 193e8f37b6..17ab7eadb2 100644
--- a/keyboards/recompile_keys/choco60/info.json
+++ b/keyboards/recompile_keys/choco60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Choco60",
+ "manufacturer": "recompile keys",
"url": "https://keys.recompile.net/projects/choco60/",
"maintainer": "Naoto Takai",
+ "usb": {
+ "vid": "0x524B",
+ "pid": "0x4362",
+ "device_version": "0.0.1"
+ },
"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":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":"~", "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":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":"Delete", "x":14.5, "y":1, "w":1.5}, {"label":"Control", "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":":", "x":11.75, "y":2}, {"label":"\"", "x":12.75, "y":2}, {"label":"Return", "x":13.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":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":"Fn", "x":15, "y":3}, {"label":"Opt", "x":1.5, "y":4}, {"label":"\u2318", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":2.75}, {"label":"Opt", "x":7.75, "y":4}, {"x":8.75, "y":4, "w":2.25}, {"label":"\u2318", "x":11, "y":4, "w":1.5}, {"label":"Ctrl", "x":12.5, "y":4}]
diff --git a/keyboards/recompile_keys/choco60/rev1/config.h b/keyboards/recompile_keys/choco60/rev1/config.h
index c5efc6f5f0..d8b3d2904d 100644
--- a/keyboards/recompile_keys/choco60/rev1/config.h
+++ b/keyboards/recompile_keys/choco60/rev1/config.h
@@ -29,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/recompile_keys/choco60/rev2/config.h b/keyboards/recompile_keys/choco60/rev2/config.h
index 46aef108d8..5db3a06352 100644
--- a/keyboards/recompile_keys/choco60/rev2/config.h
+++ b/keyboards/recompile_keys/choco60/rev2/config.h
@@ -32,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* The last three NO_PIN are dummies to make the same size as MATRIX_ROW_PINS_RIGHT. */
#define MATRIX_COL_PINS { C6, B4, B3, B2, B1, B0, NO_PIN, NO_PIN, NO_PIN }
#define MATRIX_COL_PINS_RIGHT { C7, B7, B6, B5, B4, B3, B2, C6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/recompile_keys/cocoa40/config.h b/keyboards/recompile_keys/cocoa40/config.h
index 50da34ffbd..caf109a72f 100644
--- a/keyboards/recompile_keys/cocoa40/config.h
+++ b/keyboards/recompile_keys/cocoa40/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xC0C0
-#define PRODUCT_ID 0x4000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER recompile keys
-#define PRODUCT cocoa40
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { B5, B4, E6, D7, C6, D4, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/recompile_keys/cocoa40/info.json b/keyboards/recompile_keys/cocoa40/info.json
index d2b75a6fca..dca5750161 100644
--- a/keyboards/recompile_keys/cocoa40/info.json
+++ b/keyboards/recompile_keys/cocoa40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Cocoa40",
+ "manufacturer": "recompile keys",
"url": "https://keys.recompile.net/projects/cocoa40/",
"maintainer": "Naoto Takai",
+ "usb": {
+ "vid": "0xC0C0",
+ "pid": "0x4000",
+ "device_version": "0.0.1"
+ },
"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":7.25, "y":0}, {"label":"U", "x":8.25, "y":0}, {"label":"I", "x":9.25, "y":0}, {"label":"O", "x":10.25, "y":0}, {"label":"P", "x":11.25, "y":0}, {"label":"{", "x":12.25, "y":0}, {"label":"}", "x":13.25, "y":0}, {"label":"Back<br>Space", "x":14.25, "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":7.5, "y":1}, {"label":"J", "x":8.5, "y":1}, {"label":"K", "x":9.5, "y":1}, {"label":"L", "x":10.5, "y":1}, {"label":":", "x":11.5, "y":1}, {"label":"\"", "x":12.5, "y":1}, {"label":"Enter", "x":13.5, "y":1, "w":1.75}, {"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":8, "y":2}, {"label":"M", "x":9, "y":2}, {"label":"<", "x":10, "y":2}, {"label":">", "x":11, "y":2}, {"label":"?", "x":12, "y":2}, {"label":"Shift", "x":13, "y":2, "w":1.25}, {"label":"Fn", "x":14.25, "y":2}, {"label":"Opt", "x":1.5, "y":3}, {"label":"Command", "x":2.5, "y":3, "w":1.5}, {"label":"", "x":4, "y":3, "w":2.25}, {"label":"", "x":7.5, "y":3, "w":2.75}, {"label":"Command", "x":10.25, "y":3, "w":1.5}, {"label":"Opt", "x":11.75, "y":3}]
diff --git a/keyboards/recompile_keys/mio/config.h b/keyboards/recompile_keys/mio/config.h
index 0c4438e53e..155228fef6 100644
--- a/keyboards/recompile_keys/mio/config.h
+++ b/keyboards/recompile_keys/mio/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x524B // recompile keys
-#define PRODUCT_ID 0x4D41 // MIO
-#define DEVICE_VER 0x0001
-#define MANUFACTURER recompile keys
-#define PRODUCT MIO
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F1, F0, F4, F7, F6, F5 }
#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/recompile_keys/mio/info.json b/keyboards/recompile_keys/mio/info.json
index fb66fba7f5..6c82236727 100644
--- a/keyboards/recompile_keys/mio/info.json
+++ b/keyboards/recompile_keys/mio/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "MIO",
+ "manufacturer": "recompile keys",
"url": "https://keys.recompile.net/projects/mio/",
"maintainer": "recompile keys",
+ "usb": {
+ "vid": "0x524B",
+ "pid": "0x4D41",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/recompile_keys/nomu30/config.h b/keyboards/recompile_keys/nomu30/config.h
index 62aec20525..23b19c4e0c 100644
--- a/keyboards/recompile_keys/nomu30/config.h
+++ b/keyboards/recompile_keys/nomu30/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x524B // recompile keys
-#define PRODUCT_ID 0x4E31 // Nomu30
-#define DEVICE_VER 0x0001
-#define MANUFACTURER recompile keys
-#define PRODUCT Nomu30
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 12
diff --git a/keyboards/recompile_keys/nomu30/info.json b/keyboards/recompile_keys/nomu30/info.json
index 8f53f003b5..7521023d1b 100644
--- a/keyboards/recompile_keys/nomu30/info.json
+++ b/keyboards/recompile_keys/nomu30/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Nomu30",
+ "manufacturer": "recompile keys",
"url": "https://keys.recompile.net/projects/nomu30/",
"maintainer": "takai",
+ "usb": {
+ "vid": "0x524B",
+ "pid": "0x4E31",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/recompile_keys/nomu30/keymaps/center_sprit/keymap.c b/keyboards/recompile_keys/nomu30/keymaps/center_sprit/keymap.c
index 45a1b8a566..4f789fdc50 100644
--- a/keyboards/recompile_keys/nomu30/keymaps/center_sprit/keymap.c
+++ b/keyboards/recompile_keys/nomu30/keymaps/center_sprit/keymap.c
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
//,-------------------------------------------------------------------------------------------------------------.
- RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
diff --git a/keyboards/recompile_keys/nomu30/keymaps/center_sprit/readme.md b/keyboards/recompile_keys/nomu30/keymaps/center_sprit/readme.md
index 754e37f46b..ef35e0a405 100644
--- a/keyboards/recompile_keys/nomu30/keymaps/center_sprit/readme.md
+++ b/keyboards/recompile_keys/nomu30/keymaps/center_sprit/readme.md
@@ -57,7 +57,7 @@ At first, Move to Lower layer with long push. After that Adjust key with long pu
[_ADJUST] = LAYOUT(
//,-------------------------------------------------------------------------------------------------------------.
- RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
diff --git a/keyboards/recompile_keys/nomu30/keymaps/like_jis/keymap.c b/keyboards/recompile_keys/nomu30/keymaps/like_jis/keymap.c
index efdf01b2e7..9d9e9fe42f 100644
--- a/keyboards/recompile_keys/nomu30/keymaps/like_jis/keymap.c
+++ b/keyboards/recompile_keys/nomu30/keymaps/like_jis/keymap.c
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
//,-----------------------------------------------------------------------------------------------------------------------.
- RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
diff --git a/keyboards/recompile_keys/nomu30/keymaps/like_jis/readme.md b/keyboards/recompile_keys/nomu30/keymaps/like_jis/readme.md
index ad64f06b15..1e3e63a460 100644
--- a/keyboards/recompile_keys/nomu30/keymaps/like_jis/readme.md
+++ b/keyboards/recompile_keys/nomu30/keymaps/like_jis/readme.md
@@ -53,7 +53,7 @@ At first, Move to Lower layer with long push. After that Adjust key with long pu
[_ADJUST] = LAYOUT(
//,-----------------------------------------------------------------------------------------------------------------------.
- RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX,
//|---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------|
diff --git a/keyboards/recompile_keys/nomu30/rev1/config.h b/keyboards/recompile_keys/nomu30/rev1/config.h
index 718c840bd6..e9ef483924 100644
--- a/keyboards/recompile_keys/nomu30/rev1/config.h
+++ b/keyboards/recompile_keys/nomu30/rev1/config.h
@@ -29,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D1, D0, D4 }
#define MATRIX_COL_PINS { C6, D7, E6, B4, F4, F5, F6, F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/recompile_keys/nomu30/rev2/config.h b/keyboards/recompile_keys/nomu30/rev2/config.h
index 49d80a7162..f69bae591a 100644
--- a/keyboards/recompile_keys/nomu30/rev2/config.h
+++ b/keyboards/recompile_keys/nomu30/rev2/config.h
@@ -29,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B2, B1, B0 }
#define MATRIX_COL_PINS { C4, C5, C6, C7, B7, B6, B5, B4, B3, D5, D4, D3 }
-#define UNUSED_PINS { C2, D0, D1, D2, D6 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rect44/config.h b/keyboards/rect44/config.h
index d76f5f068f..19343d16a8 100644
--- a/keyboards/rect44/config.h
+++ b/keyboards/rect44/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x4DD7
-#define DEVICE_VER 0x0001
-#define MANUFACTURER koshinoya
-#define PRODUCT Rect44
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
diff --git a/keyboards/rect44/info.json b/keyboards/rect44/info.json
index aae5fe41de..857df635d9 100644
--- a/keyboards/rect44/info.json
+++ b/keyboards/rect44/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "rect44",
+ "keyboard_name": "Rect44",
+ "manufacturer": "koshinoya",
"url": "",
"maintainer": "koshinoya",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x4DD7",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/redox/info.json b/keyboards/redox/info.json
deleted file mode 100644
index e404d195e4..0000000000
--- a/keyboards/redox/info.json
+++ /dev/null
@@ -1,94 +0,0 @@
-{
- "keyboard_name": "Redox",
- "url": "",
- "maintainer": "qmk",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"label":"_Nav || `", "x":0, "y":0.375, "w":1.25},
- {"label":"1", "x":1.25, "y":0.375},
- {"label":"2", "x":2.25, "y":0.125},
- {"label":"3", "x":3.25, "y":0},
- {"label":"4", "x":4.25, "y":0.125},
- {"label":"5", "x":5.25, "y":0.25},
-
- {"label":"6", "x":12.25, "y":0.25},
- {"label":"7", "x":13.25, "y":0.125},
- {"label":"8", "x":14.25, "y":0},
- {"label":"9", "x":15.25, "y":0.125},
- {"label":"0", "x":16.25, "y":0.375},
- {"label":"_Nav || -", "x":17.25, "y":0.375, "w":1.25},
-
- {"label":"Tab", "x":0, "y":1.375, "w":1.25},
- {"label":"Q", "x":1.25, "y":1.375},
- {"label":"W", "x":2.25, "y":1.125},
- {"label":"E", "x":3.25, "y":1},
- {"label":"R", "x":4.25, "y":1.125},
- {"label":"T", "x":5.25, "y":1.25},
- {"label":"MO(_SYMB)", "x":6.25, "y":0.75},
-
- {"label":"MO(_SYMB)", "x":11.25, "y":0.75},
- {"label":"Y", "x":12.25, "y":1.25},
- {"label":"U", "x":13.25, "y":1.125},
- {"label":"I", "x":14.25, "y":1},
- {"label":"O", "x":15.25, "y":1.125},
- {"label":"P", "x":16.25, "y":1.375},
- {"label":"=", "x":17.25, "y":1.375, "w":1.25},
-
- {"label":"Esc", "x":0, "y":2.375, "w":1.25},
- {"label":"A", "x":1.25, "y":2.375},
- {"label":"S", "x":2.25, "y":2.125},
- {"label":"D", "x":3.25, "y":2},
- {"label":"F", "x":4.25, "y":2.125},
- {"label":"G", "x":5.25, "y":2.25},
- {"label":"[", "x":6.25, "y":1.75, "h":1.5},
-
- {"label":"]", "x":11.25, "y":1.75, "h":1.5},
- {"label":"H", "x":12.25, "y":2.25},
- {"label":"J", "x":13.25, "y":2.125},
- {"label":"K", "x":14.25, "y":2},
- {"label":"L", "x":15.25, "y":2.125},
- {"label":";", "x":16.25, "y":2.375},
- {"label":"'", "x":17.25, "y":2.375, "w":1.25},
-
- {"label":"Shift", "x":0, "y":3.375, "w":1.25},
- {"label":"Z", "x":1.25, "y":3.375},
- {"label":"X", "x":2.25, "y":3.125},
- {"label":"C", "x":3.25, "y":3},
- {"label":"V", "x":4.25, "y":3.125},
- {"label":"B", "x":5.25, "y":3.25},
-
- {"label":"_Adjust/Page Up", "x":6.75, "y":3.75},
- {"label":"Page Down", "x":7.75, "y":3.75},
-
- {"label":"Home", "x":9.75, "y":3.75},
- {"label":"_Adjust/End", "x":10.75, "y":3.75},
-
- {"label":"N", "x":12.25, "y":3.25},
- {"label":"M", "x":13.25, "y":3.125},
- {"label":",", "x":14.25, "y":3},
- {"label":",", "x":15.25, "y":3.125},
- {"label":"\\", "x":16.25, "y":3.375},
- {"label":"Shift", "x":17.25, "y":3.375, "w":1.25},
-
- {"label":"LGUI", "x":0.25, "y":4.375},
- {"label":"P+", "x":1.25, "y":4.375},
- {"label":"P-", "x":2.25, "y":4.125},
- {"label":"LAlt || P*", "x":3.25, "y":4},
-
- {"label":"LCtrl || P/", "x":5.5, "y":5.25, "w":1.25},
- {"label":"Backspace", "x":6.75, "y":4.75, "h":1.5},
- {"label":"Delete", "x":7.75, "y":4.75, "h":1.5},
-
- {"label":"Enter", "x":9.75, "y":4.75, "h":1.5},
- {"label":"Space", "x":10.75, "y":4.75, "h":1.5},
- {"label":"RAlt", "x":11.75, "y":5.25, "w":1.25},
-
- {"label":"Left", "x":14.25, "y":4},
- {"label":"Down", "x":15.25, "y":4.125},
- {"label":"Up", "x":16.25, "y":4.375},
- {"label":"Right", "x":17.25, "y":4.375}
- ]
- }
- }
-}
diff --git a/keyboards/redox/keymaps/KL1RL/keymap.c b/keyboards/redox/keymaps/KL1RL/keymap.c
index 2986a51ceb..a024cd1d56 100644
--- a/keyboards/redox/keymaps/KL1RL/keymap.c
+++ b/keyboards/redox/keymaps/KL1RL/keymap.c
@@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,RESET ,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,KC_F12 ,
+ XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,KC_F12 ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/redox/keymaps/default/keymap.c b/keyboards/redox/keymaps/default/keymap.c
index 3f56fa5f3c..ecf3ff4f80 100644
--- a/keyboards/redox/keymaps/default/keymap.c
+++ b/keyboards/redox/keymaps/default/keymap.c
@@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,QK_BOOT ,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/redox/keymaps/eightbitraptor/keymap.c b/keyboards/redox/keymaps/eightbitraptor/keymap.c
index dd1ed01c24..110abb8368 100644
--- a/keyboards/redox/keymaps/eightbitraptor/keymap.c
+++ b/keyboards/redox/keymaps/eightbitraptor/keymap.c
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,RESET ,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,KC_MUTE , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/redox/keymaps/fculpo/keymap.c b/keyboards/redox/keymaps/fculpo/keymap.c
index b5aeca99dd..24c4767869 100644
--- a/keyboards/redox/keymaps/fculpo/keymap.c
+++ b/keyboards/redox/keymaps/fculpo/keymap.c
@@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,RESET ,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,KC_F12 ,
+ XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,KC_F12 ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/redox/keymaps/finex/keymap.c b/keyboards/redox/keymaps/finex/keymap.c
index 8cc822f1ce..724bf564f6 100644
--- a/keyboards/redox/keymaps/finex/keymap.c
+++ b/keyboards/redox/keymaps/finex/keymap.c
@@ -373,7 +373,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
XXXXXXX ,LR1 ,LR2 ,LR3 ,LR4 ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,RESET ,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,RGB_M_B ,RGB_M_R ,RGB_M_SW,RGB_M_SN,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/redox/keymaps/german/keymap.c b/keyboards/redox/keymaps/german/keymap.c
index 06928b2304..c4325ea73e 100644
--- a/keyboards/redox/keymaps/german/keymap.c
+++ b/keyboards/redox/keymaps/german/keymap.c
@@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,RESET ,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/redox/keymaps/italian/keymap.c b/keyboards/redox/keymaps/italian/keymap.c
index 5059a810b9..97f2f53294 100644
--- a/keyboards/redox/keymaps/italian/keymap.c
+++ b/keyboards/redox/keymaps/italian/keymap.c
@@ -89,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,RESET ,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/redox/keymaps/jeherve/keymap.c b/keyboards/redox/keymaps/jeherve/keymap.c
index 226d14aae1..cd1dbdce3e 100644
--- a/keyboards/redox/keymaps/jeherve/keymap.c
+++ b/keyboards/redox/keymaps/jeherve/keymap.c
@@ -230,7 +230,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- _______ ,XXXXXXX ,RGB_VAD ,RGB_VAI ,RGB_TOG ,XXXXXXX ,_______ , _______ ,XXXXXXX ,RESET ,DEBUG ,AU_TOG ,XXXXXXX ,_______ ,
+ _______ ,XXXXXXX ,RGB_VAD ,RGB_VAI ,RGB_TOG ,XXXXXXX ,_______ , _______ ,XXXXXXX ,QK_BOOT,DEBUG ,AU_TOG ,XXXXXXX ,_______ ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/redox/keymaps/nrichers/keymap.c b/keyboards/redox/keymaps/nrichers/keymap.c
index 7434b43682..cfe6895cde 100755
--- a/keyboards/redox/keymaps/nrichers/keymap.c
+++ b/keyboards/redox/keymaps/nrichers/keymap.c
@@ -79,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11 ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,RESET ,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,KC_F12 ,
+ XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,KC_F12 ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/redox/keymaps/ptillemans/keymap.c b/keyboards/redox/keymaps/ptillemans/keymap.c
index 3d9b90be5b..eea5a32808 100644
--- a/keyboards/redox/keymaps/ptillemans/keymap.c
+++ b/keyboards/redox/keymaps/ptillemans/keymap.c
@@ -84,7 +84,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,RESET ,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ XXXXXXX ,QK_BOOT,RGB_M_P ,RGB_TOG ,RGB_MOD ,RGB_HUD ,RGB_HUI , RGB_SAD ,RGB_SAI ,RGB_VAD ,RGB_VAI ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/redox/keymaps/thattolleyguy/keymap.c b/keyboards/redox/keymaps/thattolleyguy/keymap.c
index 825addbbbf..5bcb7e52cc 100644
--- a/keyboards/redox/keymaps/thattolleyguy/keymap.c
+++ b/keyboards/redox/keymaps/thattolleyguy/keymap.c
@@ -69,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
_______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_RMOD,XXXXXXX, _______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_P1 ,KC_P2 ,KC_P3 ,KC_PENT ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,RESET ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,_______ , _______ ,_______ , KC_P0 , KC_P0 ,KC_PDOT ,KC_PENT ,KC_PSCR
+ XXXXXXX ,QK_BOOT,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,_______ , _______ ,_______ , KC_P0 , KC_P0 ,KC_PDOT ,KC_PENT ,KC_PSCR
//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
),
@@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_END ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,
//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,RESET ,XXXXXXX
+ _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,QK_BOOT,XXXXXXX
//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
)
};
diff --git a/keyboards/redox/keymaps/tw1t611/keymap.c b/keyboards/redox/keymaps/tw1t611/keymap.c
index 3ea10a7528..da978de9fa 100644
--- a/keyboards/redox/keymaps/tw1t611/keymap.c
+++ b/keyboards/redox/keymaps/tw1t611/keymap.c
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
KC_F12 ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_F11,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- DE_CIRC ,DE_QUOT ,DE_DQUO ,DE_LCBR ,DE_RCBR ,DE_GRV ,RGB_MOD , RESET ,DE_PERC ,DE_PLUS ,DE_MINS ,DE_ASTR ,DE_SLSH ,DE_BSLS ,
+ DE_CIRC ,DE_QUOT ,DE_DQUO ,DE_LCBR ,DE_RCBR ,DE_GRV ,RGB_MOD , QK_BOOT,DE_PERC ,DE_PLUS ,DE_MINS ,DE_ASTR ,DE_SLSH ,DE_BSLS ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
DE_TILD ,DE_EXLM ,DE_DLR ,DE_LPRN ,DE_RPRN ,DE_AMPR ,RGB_TOG , _______ ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,DE_QUES ,DE_PIPE ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/redox/keymaps/via/keymap.c b/keyboards/redox/keymaps/via/keymap.c
index 13c95bdd53..474f03ecd7 100644
--- a/keyboards/redox/keymaps/via/keymap.c
+++ b/keyboards/redox/keymaps/via/keymap.c
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,QK_BOOT ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ XXXXXXX ,QK_BOOT,XXXXXXX ,XXXXXXX ,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/redox/readme.md b/keyboards/redox/readme.md
index 27333b518c..82b00d79f7 100644
--- a/keyboards/redox/readme.md
+++ b/keyboards/redox/readme.md
@@ -41,7 +41,7 @@ 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.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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.
diff --git a/keyboards/redox/rev1/base/info.json b/keyboards/redox/rev1/base/info.json
new file mode 100644
index 0000000000..ad889c2304
--- /dev/null
+++ b/keyboards/redox/rev1/base/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/redox/rev1/base/rules.mk b/keyboards/redox/rev1/base/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/redox/rev1/base/rules.mk
diff --git a/keyboards/redox/rev1/config.h b/keyboards/redox/rev1/config.h
index 95c4e3cbbf..72874b66f5 100644
--- a/keyboards/redox/rev1/config.h
+++ b/keyboards/redox/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D44 // "MD"
-#define PRODUCT_ID 0x5244 // "RD"
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Falbatech
-#define PRODUCT The Redox Keyboard
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/redox/rev1/info.json b/keyboards/redox/rev1/info.json
new file mode 100644
index 0000000000..bceac88bb0
--- /dev/null
+++ b/keyboards/redox/rev1/info.json
@@ -0,0 +1,100 @@
+{
+ "keyboard_name": "Redox",
+ "manufacturer": "Falbatech",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D44",
+ "pid": "0x5244",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"_Nav || `", "x":0, "y":0.375, "w":1.25},
+ {"label":"1", "x":1.25, "y":0.375},
+ {"label":"2", "x":2.25, "y":0.125},
+ {"label":"3", "x":3.25, "y":0},
+ {"label":"4", "x":4.25, "y":0.125},
+ {"label":"5", "x":5.25, "y":0.25},
+
+ {"label":"6", "x":12.25, "y":0.25},
+ {"label":"7", "x":13.25, "y":0.125},
+ {"label":"8", "x":14.25, "y":0},
+ {"label":"9", "x":15.25, "y":0.125},
+ {"label":"0", "x":16.25, "y":0.375},
+ {"label":"_Nav || -", "x":17.25, "y":0.375, "w":1.25},
+
+ {"label":"Tab", "x":0, "y":1.375, "w":1.25},
+ {"label":"Q", "x":1.25, "y":1.375},
+ {"label":"W", "x":2.25, "y":1.125},
+ {"label":"E", "x":3.25, "y":1},
+ {"label":"R", "x":4.25, "y":1.125},
+ {"label":"T", "x":5.25, "y":1.25},
+ {"label":"MO(_SYMB)", "x":6.25, "y":0.75},
+
+ {"label":"MO(_SYMB)", "x":11.25, "y":0.75},
+ {"label":"Y", "x":12.25, "y":1.25},
+ {"label":"U", "x":13.25, "y":1.125},
+ {"label":"I", "x":14.25, "y":1},
+ {"label":"O", "x":15.25, "y":1.125},
+ {"label":"P", "x":16.25, "y":1.375},
+ {"label":"=", "x":17.25, "y":1.375, "w":1.25},
+
+ {"label":"Esc", "x":0, "y":2.375, "w":1.25},
+ {"label":"A", "x":1.25, "y":2.375},
+ {"label":"S", "x":2.25, "y":2.125},
+ {"label":"D", "x":3.25, "y":2},
+ {"label":"F", "x":4.25, "y":2.125},
+ {"label":"G", "x":5.25, "y":2.25},
+ {"label":"[", "x":6.25, "y":1.75, "h":1.5},
+
+ {"label":"]", "x":11.25, "y":1.75, "h":1.5},
+ {"label":"H", "x":12.25, "y":2.25},
+ {"label":"J", "x":13.25, "y":2.125},
+ {"label":"K", "x":14.25, "y":2},
+ {"label":"L", "x":15.25, "y":2.125},
+ {"label":";", "x":16.25, "y":2.375},
+ {"label":"'", "x":17.25, "y":2.375, "w":1.25},
+
+ {"label":"Shift", "x":0, "y":3.375, "w":1.25},
+ {"label":"Z", "x":1.25, "y":3.375},
+ {"label":"X", "x":2.25, "y":3.125},
+ {"label":"C", "x":3.25, "y":3},
+ {"label":"V", "x":4.25, "y":3.125},
+ {"label":"B", "x":5.25, "y":3.25},
+
+ {"label":"_Adjust/Page Up", "x":6.75, "y":3.75},
+ {"label":"Page Down", "x":7.75, "y":3.75},
+
+ {"label":"Home", "x":9.75, "y":3.75},
+ {"label":"_Adjust/End", "x":10.75, "y":3.75},
+
+ {"label":"N", "x":12.25, "y":3.25},
+ {"label":"M", "x":13.25, "y":3.125},
+ {"label":",", "x":14.25, "y":3},
+ {"label":",", "x":15.25, "y":3.125},
+ {"label":"\\", "x":16.25, "y":3.375},
+ {"label":"Shift", "x":17.25, "y":3.375, "w":1.25},
+
+ {"label":"LGUI", "x":0.25, "y":4.375},
+ {"label":"P+", "x":1.25, "y":4.375},
+ {"label":"P-", "x":2.25, "y":4.125},
+ {"label":"LAlt || P*", "x":3.25, "y":4},
+
+ {"label":"LCtrl || P/", "x":5.5, "y":5.25, "w":1.25},
+ {"label":"Backspace", "x":6.75, "y":4.75, "h":1.5},
+ {"label":"Delete", "x":7.75, "y":4.75, "h":1.5},
+
+ {"label":"Enter", "x":9.75, "y":4.75, "h":1.5},
+ {"label":"Space", "x":10.75, "y":4.75, "h":1.5},
+ {"label":"RAlt", "x":11.75, "y":5.25, "w":1.25},
+
+ {"label":"Left", "x":14.25, "y":4},
+ {"label":"Down", "x":15.25, "y":4.125},
+ {"label":"Up", "x":16.25, "y":4.375},
+ {"label":"Right", "x":17.25, "y":4.375}
+ ]
+ }
+ }
+}
diff --git a/keyboards/redox/rev1/proton_c/config.h b/keyboards/redox/rev1/proton_c/config.h
index eec50ab879..56cdb88126 100644
--- a/keyboards/redox/rev1/proton_c/config.h
+++ b/keyboards/redox/rev1/proton_c/config.h
@@ -5,10 +5,6 @@
#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 }
diff --git a/keyboards/redox/rev1/proton_c/info.json b/keyboards/redox/rev1/proton_c/info.json
new file mode 100644
index 0000000000..62a27157ad
--- /dev/null
+++ b/keyboards/redox/rev1/proton_c/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "1.0.1"
+ }
+}
diff --git a/keyboards/redox/rev1/rules.mk b/keyboards/redox/rev1/rules.mk
index e69de29bb2..c971da1680 100644
--- a/keyboards/redox/rev1/rules.mk
+++ b/keyboards/redox/rev1/rules.mk
@@ -0,0 +1 @@
+DEFAULT_FOLDER = redox/rev1/base
diff --git a/keyboards/redox/rules.mk b/keyboards/redox/rules.mk
index 1ce6f56efe..181027c417 100644
--- a/keyboards/redox/rules.mk
+++ b/keyboards/redox/rules.mk
@@ -19,7 +19,7 @@ RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SPLIT_KEYBOARD = yes
-DEFAULT_FOLDER = redox/rev1
+DEFAULT_FOLDER = redox/rev1/base
# Disable unsupported hardware
AUDIO_SUPPORTED = no
diff --git a/keyboards/redox_media/config.h b/keyboards/redox_media/config.h
index 0d4ac16b5f..6f2225adb0 100644
--- a/keyboards/redox_media/config.h
+++ b/keyboards/redox_media/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0100
-#define MANUFACTURER shiftux
-#define PRODUCT Redox Media
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 12
diff --git a/keyboards/redox_media/info.json b/keyboards/redox_media/info.json
index e13487e791..ac2480c997 100644
--- a/keyboards/redox_media/info.json
+++ b/keyboards/redox_media/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Redox Media",
+ "manufacturer": "shiftux",
"url": "",
"maintainer": "shiftux",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/redox_w/config.h b/keyboards/redox_w/config.h
index 4fe2447b06..3c4b49fa10 100644
--- a/keyboards/redox_w/config.h
+++ b/keyboards/redox_w/config.h
@@ -18,14 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-
-#define VENDOR_ID 0x4D44 //MD
-#define PRODUCT_ID 0x5257 //RW
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mattia Dal Ben
-#define PRODUCT Redox_wireless
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/redox_w/info.json b/keyboards/redox_w/info.json
index aae795c677..b91fec5a50 100644
--- a/keyboards/redox_w/info.json
+++ b/keyboards/redox_w/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Redox Wireless",
+ "manufacturer": "Mattia Dal Ben",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D44",
+ "pid": "0x5257",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/redox_w/keymaps/danielo515/keymap.c b/keyboards/redox_w/keymaps/danielo515/keymap.c
index b76a72cf18..5a9fa4e5ee 100644
--- a/keyboards/redox_w/keymaps/danielo515/keymap.c
+++ b/keyboards/redox_w/keymaps/danielo515/keymap.c
@@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,RESET ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ XXXXXXX ,QK_BOOT,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,TG(_GAMING) ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/keyboards/redox_w/keymaps/default/keymap.c b/keyboards/redox_w/keymaps/default/keymap.c
index a91d3725f4..a463bfc673 100644
--- a/keyboards/redox_w/keymaps/default/keymap.c
+++ b/keyboards/redox_w/keymaps/default/keymap.c
@@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,QK_BOOT ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ XXXXXXX ,QK_BOOT,XXXXXXX ,XXXXXXX ,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/redox_w/keymaps/italian/keymap.c b/keyboards/redox_w/keymaps/italian/keymap.c
index e67742c6a1..fd4dffeecb 100644
--- a/keyboards/redox_w/keymaps/italian/keymap.c
+++ b/keyboards/redox_w/keymaps/italian/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_ADPU ,KC_PGDN , KC_HOME ,KC_ADEN ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,IT_UGRV ,IT_SHSL ,
//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- GUI_LESS,KC_PPLS ,KC_PMNS ,KC_ALAS , KC_CTPL , KC_BSPC ,KC_DEL , KC_ENT ,KC_SPC , ALT_IACC, KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
+ GUI_LESS,KC_PPLS ,KC_PMNS ,KC_ALAS , KC_CTPL , KC_BSPC ,KC_DEL , KC_ENT ,KC_SPC , ALT_IACC, KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
),
@@ -67,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
_______ ,IT_PERC ,IT_CIRC ,IT_LPRN ,IT_RPRN ,IT_TILD ,_______ ,_______ , _______ ,_______ ,XXXXXXX ,KC_KP_1 ,KC_KP_2 ,KC_KP_3 ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , KC_KP_0 , KC_KP_0 ,KC_PDOT ,XXXXXXX ,XXXXXXX
+ _______ ,_______ ,_______ ,_______ , _______ , _______ ,_______ , _______ ,_______ , KC_KP_0 , KC_KP_0 ,KC_PDOT ,XXXXXXX ,XXXXXXX
//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
),
@@ -81,7 +81,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,_______ , _______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
+ XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , KC_BTN1 , KC_BTN2 ,_______ , _______ ,_______ , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
),
@@ -89,20 +89,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,RESET ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ XXXXXXX ,QK_BOOT,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,_______ ,XXXXXXX , XXXXXXX ,_______ ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────┬───┴────┬───┼────────┼────────┤ ├────────┼────────┼───┬────┴───┬────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
+ XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX , XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX
//└────────┴────────┴────────┴────────┘ └────────┘ └────────┴────────┘ └────────┴────────┘ └────────┘ └────────┴────────┴────────┴────────┘
)
};
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case _QWERTY:
@@ -121,5 +121,3 @@ void matrix_scan_user(void) {
break;
}
};
-
-
diff --git a/keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h b/keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h
index ffc0d98798..d2d64b8894 100644
--- a/keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/redox_w/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/redox_w/keymaps/via/keymap.c b/keyboards/redox_w/keymaps/via/keymap.c
index b9af344a46..2ec63ec852 100644
--- a/keyboards/redox_w/keymaps/via/keymap.c
+++ b/keyboards/redox_w/keymaps/via/keymap.c
@@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//┌────────┬────────┬────────┬────────┬────────┬────────┠┌────────┬────────┬────────┬────────┬────────┬────────â”
XXXXXXX ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 , KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,XXXXXXX ,
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┠┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- XXXXXXX ,QK_BOOT ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX , XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,XXXXXXX ,
+ XXXXXXX ,QK_BOOT,XXXXXXX ,XXXXXXX ,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/redscarf_i/config.h b/keyboards/redscarf_i/config.h
index ec86905db1..494afb5e2b 100644
--- a/keyboards/redscarf_i/config.h
+++ b/keyboards/redscarf_i/config.h
@@ -19,20 +19,11 @@ 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 0x5959
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Red Scarf
-#define PRODUCT Red Scarf I
-
/* Matrix */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D4, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
/* Backlight */
diff --git a/keyboards/redscarf_i/info.json b/keyboards/redscarf_i/info.json
index ac997c3a5f..fb4341f78f 100644
--- a/keyboards/redscarf_i/info.json
+++ b/keyboards/redscarf_i/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Red Scarf I",
+ "manufacturer": "Red Scarf",
"url": "",
"maintainer": "qmk, defying",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x5959",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [
diff --git a/keyboards/redscarf_i/redscarf_i.c b/keyboards/redscarf_i/redscarf_i.c
index a8a685b13b..039e20664d 100644
--- a/keyboards/redscarf_i/redscarf_i.c
+++ b/keyboards/redscarf_i/redscarf_i.c
@@ -36,7 +36,7 @@ bool led_update_kb(led_t led_state) {
}
layer_state_t layer_state_set_kb(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case 1:
writePinHigh(F6);
writePinLow(F5);
diff --git a/keyboards/redscarf_iiplus/verb/config.h b/keyboards/redscarf_iiplus/verb/config.h
index daf1bc8823..07d3979bef 100755
--- a/keyboards/redscarf_iiplus/verb/config.h
+++ b/keyboards/redscarf_iiplus/verb/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER RedScarf
-#define PRODUCT RedScarfII+
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { }
#define MATRIX_COL_PINS { F4, F1, F0, B3, D0, D1, D4, D5, D6, D7, F7, F6, D2, D3, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/redscarf_iiplus/verb/info.json b/keyboards/redscarf_iiplus/verb/info.json
index 2b675a5ca8..2e4ad61866 100644
--- a/keyboards/redscarf_iiplus/verb/info.json
+++ b/keyboards/redscarf_iiplus/verb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Red Scarf II+ Ver.B (RS78)",
+ "keyboard_name": "RedScarfII+ Ver.B (RS78)",
+ "manufacturer": "RedScarf",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_78_ansi": {
"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.25, "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.25, "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.25, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.25, "y":3, "w":2.25}, {"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.25, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":1.25}, {"x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":6.25}, {"x":12.25, "y":4}, {"x":13.25, "y":4}, {"x":14.25, "y":4}, {"x":15.25, "y":4}, {"x":16.25, "y":4}, {"x":17.25, "y":4}]
diff --git a/keyboards/redscarf_iiplus/verc/config.h b/keyboards/redscarf_iiplus/verc/config.h
index daf1bc8823..07d3979bef 100755
--- a/keyboards/redscarf_iiplus/verc/config.h
+++ b/keyboards/redscarf_iiplus/verc/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER RedScarf
-#define PRODUCT RedScarfII+
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { }
#define MATRIX_COL_PINS { F4, F1, F0, B3, D0, D1, D4, D5, D6, D7, F7, F6, D2, D3, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/redscarf_iiplus/verc/info.json b/keyboards/redscarf_iiplus/verc/info.json
index c3988d225b..1093d3a363 100644
--- a/keyboards/redscarf_iiplus/verc/info.json
+++ b/keyboards/redscarf_iiplus/verc/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Red Scarf II+ Ver.C (RS68)",
+ "keyboard_name": "RedScarfII+ Ver.C (RS68)",
+ "manufacturer": "RedScarf",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"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/redscarf_iiplus/verd/config.h b/keyboards/redscarf_iiplus/verd/config.h
index d0ab1abe33..44b08645b4 100644
--- a/keyboards/redscarf_iiplus/verd/config.h
+++ b/keyboards/redscarf_iiplus/verd/config.h
@@ -18,13 +18,6 @@ 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 0x7778
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RedScarf
-#define PRODUCT RedScarfII+
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { }
#define MATRIX_COL_PINS { F4, F1, F0, B3, D0, D1, D4, D5, D6, D7, F7, F6, D2, D3, B6, B5, B4, F5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/redscarf_iiplus/verd/info.json b/keyboards/redscarf_iiplus/verd/info.json
index 8b2d3c2d97..0d36542278 100644
--- a/keyboards/redscarf_iiplus/verd/info.json
+++ b/keyboards/redscarf_iiplus/verd/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Red Scarf II+ Ver D",
+ "keyboard_name": "RedScarfII+ Ver.D",
+ "manufacturer": "RedScarf",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x7778",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_numpad_split0": {
"layout": [
diff --git a/keyboards/retro_75/config.h b/keyboards/retro_75/config.h
index 5d8c26450d..f2621902bf 100644
--- a/keyboards/retro_75/config.h
+++ b/keyboards/retro_75/config.h
@@ -19,13 +19,6 @@ 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 0x5275
-#define DEVICE_VER 0x0001
-#define MANUFACTURER PheonixStarr
-#define PRODUCT Retro75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { A8, B15, B14, B13, B12, B8 }
#define MATRIX_COL_PINS { A5, A4, A3, F0, C15, C14, C13, A6, B11, B10, B2, B1, B0, A7, A14, A15 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/retro_75/info.json b/keyboards/retro_75/info.json
index 585506ae43..69dd3a89d7 100644
--- a/keyboards/retro_75/info.json
+++ b/keyboards/retro_75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Retro75",
+ "manufacturer": "PheonixStarr",
"url": "",
"maintainer": "zvecr",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x5275",
+ "device_version": "0.0.1"
+ },
"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":"Prt Sc", "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}, {"x":13, "y":1.25, "w":2}, {"label":"Delete", "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":"Page Up", "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":"Page Down", "x":15, "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, "y":4.25}, {"label":"Fn", "x":15, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Alt", "x":2.25, "y":5.25, "w":1.5}, {"x":3.75, "y":5.25, "w":7}, {"label":"Alt", "x":10.75, "y":5.25, "w":1.5}, {"label":"\u2190", "x":13, "y":5.25}, {"label":"\u2193", "x":14, "y":5.25}, {"label":"\u2192", "x":15, "y":5.25}]
diff --git a/keyboards/retro_75/keymaps/split_backspace/keymap.c b/keyboards/retro_75/keymaps/split_backspace/keymap.c
index 58993b8bb3..f962b75b5c 100644
--- a/keyboards/retro_75/keymaps/split_backspace/keymap.c
+++ b/keyboards/retro_75/keymaps/split_backspace/keymap.c
@@ -12,7 +12,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_split_bs(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/reversestudio/decadepad/config.h b/keyboards/reversestudio/decadepad/config.h
index f4bbdfda11..aa3e5b930b 100644
--- a/keyboards/reversestudio/decadepad/config.h
+++ b/keyboards/reversestudio/decadepad/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5253
-#define PRODUCT_ID 0x4450
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ReverseStudio
-#define PRODUCT DecadePad
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -34,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* NIU Mini PCB default pin-out */
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, F7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/reversestudio/decadepad/info.json b/keyboards/reversestudio/decadepad/info.json
index 0789acae2c..fc835f9182 100644
--- a/keyboards/reversestudio/decadepad/info.json
+++ b/keyboards/reversestudio/decadepad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "DecadePad",
+ "manufacturer": "ReverseStudio",
"url": "",
"maintainer": "huajijam",
+ "usb": {
+ "vid": "0x5253",
+ "pid": "0x4450",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_6x4": {
"layout": [
diff --git a/keyboards/reviung/reviung33/config.h b/keyboards/reviung/reviung33/config.h
index f113de6d11..4a009b053c 100644
--- a/keyboards/reviung/reviung33/config.h
+++ b/keyboards/reviung/reviung33/config.h
@@ -19,13 +19,6 @@ 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 0x516D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER gtips
-#define PRODUCT reviung33
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7}
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B1, B3, B2, B6, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/reviung/reviung33/info.json b/keyboards/reviung/reviung33/info.json
index 450a41930b..f5d83a1363 100644
--- a/keyboards/reviung/reviung33/info.json
+++ b/keyboards/reviung/reviung33/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "reviung33",
+ "manufacturer": "gtips",
"url": "",
"maintainer": "gtips",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x516D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_reviung33": {
"layout": [
diff --git a/keyboards/reviung/reviung34/config.h b/keyboards/reviung/reviung34/config.h
index 254ea550af..5bc0cf98fc 100755
--- a/keyboards/reviung/reviung34/config.h
+++ b/keyboards/reviung/reviung34/config.h
@@ -19,13 +19,6 @@ 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 0x4E03
-#define DEVICE_VER 0x0001
-#define MANUFACTURER gtips
-#define PRODUCT reviung34
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 9
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7}
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/reviung/reviung34/info.json b/keyboards/reviung/reviung34/info.json
index 6e727a4ff3..2738014d21 100755
--- a/keyboards/reviung/reviung34/info.json
+++ b/keyboards/reviung/reviung34/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "reviung34",
+ "manufacturer": "gtips",
"url": "",
"maintainer": "gtips",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x4E03",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_reviung34": {
"layout": [
diff --git a/keyboards/reviung/reviung39/config.h b/keyboards/reviung/reviung39/config.h
index 1377cecd3f..f6b6403ffd 100644
--- a/keyboards/reviung/reviung39/config.h
+++ b/keyboards/reviung/reviung39/config.h
@@ -19,13 +19,6 @@ 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 0x5F10
-#define DEVICE_VER 0x0001
-#define MANUFACTURER gtips
-#define PRODUCT reviung39
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, B3, B2 }
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/reviung/reviung39/info.json b/keyboards/reviung/reviung39/info.json
index 725e2ff8e1..3602d0c2c3 100644
--- a/keyboards/reviung/reviung39/info.json
+++ b/keyboards/reviung/reviung39/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "reviung39",
+ "manufacturer": "gtips",
"url": "",
"maintainer": "gtips",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x5F10",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_reviung39": {
"layout": [
diff --git a/keyboards/reviung/reviung39/keymaps/toshi0383/keymap.c b/keyboards/reviung/reviung39/keymaps/toshi0383/keymap.c
index f2586086c2..36d643370a 100644
--- a/keyboards/reviung/reviung39/keymaps/toshi0383/keymap.c
+++ b/keyboards/reviung/reviung39/keymaps/toshi0383/keymap.c
@@ -35,9 +35,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_LOWER] = LAYOUT_reviung39(
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, _______, _______, _______,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, RCMD(RALT(KC_I)), RCMD(RALT(KC_O)), _______,
_______, KC_LT, KC_GT, KC_LPRN, KC_RPRN, KC_GRV, KC_MINS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_PIPE,
- KC_LALT, _______, _______, _______, KC_EQL, KC_QUES, KC_UNDS, KC_PLUS, KC_COMM, _______, KC_SLSH, _______,
+ KC_LALT, _______, _______, ADJUST, KC_EQL, KC_QUES, KC_UNDS, KC_PLUS, KC_COMM, _______, KC_SLSH, _______,
_______, _______, KC_RGUI
),
@@ -49,9 +49,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT_reviung39(
- RGB_VAI, RGB_SAI, RGB_HUI, RGB_MOD, XXXXXXX, RGB_TOG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX,
- RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD, XXXXXXX, XXXXXXX, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX,
- KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, KC_BRIU, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LANG1, KC_LANG2,
- KC_LGUI, XXXXXXX, _______
+ _______, RCMD(LALT(KC_1)), RCMD(LALT(KC_2)), RCMD(LALT(KC_3)), RCMD(LALT(KC_4)), RCMD(LALT(KC_5)), RCMD(LALT(KC_6)), RCMD(LALT(KC_7)), _______, _______, RCMD(LALT(KC_0)), _______,
+ RGB_SAI, RGB_HUI, RGB_MOD, _______, RGB_TOG, RGB_VAI, RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD, _______, _______,
+ KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, KC_BRIU, QK_BOOT, _______, _______, _______, _______, _______, _______,
+ KC_LGUI, _______, _______
),
};
diff --git a/keyboards/reviung/reviung41/config.h b/keyboards/reviung/reviung41/config.h
index afa83220c7..0ef09997bf 100644
--- a/keyboards/reviung/reviung41/config.h
+++ b/keyboards/reviung/reviung41/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7807
-#define PRODUCT_ID 0xDCCB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER gtips
-#define PRODUCT reviung41
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 6
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ F4, F5, F6, F7, B1, B3, B2 }
#define MATRIX_COL_PINS \
{ D4, C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/reviung/reviung41/info.json b/keyboards/reviung/reviung41/info.json
index ff9e11b939..62c430b738 100644
--- a/keyboards/reviung/reviung41/info.json
+++ b/keyboards/reviung/reviung41/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "reviung39",
+ "keyboard_name": "reviung41",
+ "manufacturer": "gtips",
"url": "",
"maintainer": "gtips",
+ "usb": {
+ "vid": "0x7807",
+ "pid": "0xDCCB",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_reviung41": {
"layout": [
diff --git a/keyboards/reviung/reviung41/keymaps/ciutadellla/keymap.c b/keyboards/reviung/reviung41/keymaps/ciutadellla/keymap.c
index a35b677197..751a1c51b1 100644
--- a/keyboards/reviung/reviung41/keymaps/ciutadellla/keymap.c
+++ b/keyboards/reviung/reviung41/keymaps/ciutadellla/keymap.c
@@ -247,12 +247,12 @@
* |-------+-------+-------+---------+-------+---------+ +------+------+------+------+------+-------|
* | | | | | | | | M_L | M_D | M_I | M_R | | SLEEP |
* |-------+-------+-------+---------+-------+---------+ +------+------+------+------+------+-------|
- * | | | | | SCRLFT| SCRRGHT | | M_B1 | M_B2| M0 | M2 | | RESET |
+ * | | | | | SCRLFT| SCRRGHT | | M_B1 | M_B2| M0 | M2 | | QK_BOOT |
* |-------+-------+-------+---------+-------+---------+ +------+------+------+------+------+-------|
* | ____ | ____ | BSPC | ____ | ____ |
* +-------------/ \--------------+
*/
- [_MOVE] = LAYOUT_reviung41(KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_ACL2, LOCK_OSX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_ACL0, SLEEP_OSX, KC_F13, KC_F14, KC_F15, KC_F16, KC_C_LF, KC_C_RT, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [_MOVE] = LAYOUT_reviung41(KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, KC_ACL2, LOCK_OSX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_ACL0, SLEEP_OSX, KC_F13, KC_F14, KC_F15, KC_F16, KC_C_LF, KC_C_RT, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_BTN5, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
/* _ADJUST 4
* ,----------------------------------------+ +---------------------------------------------------.
* | 😃 | 😅 | 🤣 | 😉 | 😇 | 🥰 | | RGBUP | HUEUP | RGB_MOD | BRIU | PLAY | VOLU |
diff --git a/keyboards/reviung/reviung5/config.h b/keyboards/reviung/reviung5/config.h
index 38b88c07a8..2e28af7a65 100644
--- a/keyboards/reviung/reviung5/config.h
+++ b/keyboards/reviung/reviung5/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5C06
-#define PRODUCT_ID 0x4F0D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER gtips
-#define PRODUCT reviung5
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 5
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ F4 }
#define MATRIX_COL_PINS \
{ D4, C6, D7, E6, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/reviung/reviung5/info.json b/keyboards/reviung/reviung5/info.json
index 78d27d64e2..12320d7774 100644
--- a/keyboards/reviung/reviung5/info.json
+++ b/keyboards/reviung/reviung5/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "reviung5",
+ "manufacturer": "gtips",
"url": "",
"maintainer": "gtips",
+ "usb": {
+ "vid": "0x5C06",
+ "pid": "0x4F0D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_reviung5": {
"layout": [
diff --git a/keyboards/reviung/reviung53/config.h b/keyboards/reviung/reviung53/config.h
index f874297d77..fcfbe8194d 100644
--- a/keyboards/reviung/reviung53/config.h
+++ b/keyboards/reviung/reviung53/config.h
@@ -5,13 +5,6 @@
#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
@@ -28,7 +21,6 @@
*/
#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
diff --git a/keyboards/reviung/reviung53/info.json b/keyboards/reviung/reviung53/info.json
index ff63de5bc8..9001719324 100644
--- a/keyboards/reviung/reviung53/info.json
+++ b/keyboards/reviung/reviung53/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "reviung53",
+ "manufacturer": "gtips",
"url": "",
"maintainer": "gtips",
+ "usb": {
+ "vid": "0x4E94",
+ "pid": "0x4E09",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_reviung53": {
"layout": [
diff --git a/keyboards/reviung/reviung53/readme.md b/keyboards/reviung/reviung53/readme.md
index a2bfbcdbc2..2e0ed27e16 100644
--- a/keyboards/reviung/reviung53/readme.md
+++ b/keyboards/reviung/reviung53/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/reviung/reviung61/config.h b/keyboards/reviung/reviung61/config.h
index 0d10c983c9..cc3039ab59 100644
--- a/keyboards/reviung/reviung61/config.h
+++ b/keyboards/reviung/reviung61/config.h
@@ -19,13 +19,6 @@ 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 0x7C1A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER gtips
-#define PRODUCT reviung61
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/reviung/reviung61/info.json b/keyboards/reviung/reviung61/info.json
index 5a23617d55..25ba896b2f 100644
--- a/keyboards/reviung/reviung61/info.json
+++ b/keyboards/reviung/reviung61/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "reviung61",
+ "manufacturer": "gtips",
"url": "",
"maintainer": "gtips",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x7C1A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
diff --git a/keyboards/rgbkb/common/common_oled.c b/keyboards/rgbkb/common/common_oled.c
index b6ea6b20af..b6873123b0 100644
--- a/keyboards/rgbkb/common/common_oled.c
+++ b/keyboards/rgbkb/common/common_oled.c
@@ -11,7 +11,8 @@
#include "oled_driver.h"
#include "rgb_matrix.h"
-// for memcpy
+// for memcpy & snprintf
+#include <stdio.h>
#include <string.h>
#include <transactions.h>
diff --git a/keyboards/rgbkb/mun/config.h b/keyboards/rgbkb/mun/config.h
index de658eb93c..0c39127af5 100644
--- a/keyboards/rgbkb/mun/config.h
+++ b/keyboards/rgbkb/mun/config.h
@@ -11,12 +11,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3535
-#define PRODUCT_ID 0x3505
-#define MANUFACTURER RGBKB
-#define PRODUCT Mün
-
/* Matrix Configuration - Rows are doubled up */
#define MATRIX_ROWS 14
// Last pins reserved for encoder / touch encoder support
diff --git a/keyboards/rgbkb/mun/keymaps/peott-fr/keymap.c b/keyboards/rgbkb/mun/keymaps/peott-fr/keymap.c
index 66eaa144ec..ff763394b4 100644
--- a/keyboards/rgbkb/mun/keymaps/peott-fr/keymap.c
+++ b/keyboards/rgbkb/mun/keymaps/peott-fr/keymap.c
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_VOLU, KC_VOLD, KC_VOLU, KC_VOLD, KC_PGDN, KC_PGUP, KC_PGDN, KC_PGUP, KC_VOLD, KC_VOLU, KC_MNXT, KC_MPLY, KC_MPRV, RGB_HUI, RGB_HUD, RGB_RMOD, RGB_TOG, RGB_MOD
),
[_LHAND] = LAYOUT(
- RESET, 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_TRNS,
+ QK_BOOT, 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_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, 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_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_PGUP, KC_PGDN, KC_TRNS, KC_TRNS, KC_INS, KC_HOME, KC_PGUP, KC_TRNS,
KC_LSFT, KC_CALC, KC_MYCM, KC_TRNS, KC_ENT, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_END, KC_PGDN, KC_RSFT,
@@ -60,7 +60,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
),
[_FUNC] = LAYOUT(
- 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, RESET,
+ 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, 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/rgbkb/mun/keymaps/xulkal2/keymap.c b/keyboards/rgbkb/mun/keymaps/xulkal2/keymap.c
index 0b01d43eb2..11149bbe0d 100644
--- a/keyboards/rgbkb/mun/keymaps/xulkal2/keymap.c
+++ b/keyboards/rgbkb/mun/keymaps/xulkal2/keymap.c
@@ -115,7 +115,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT(
KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_DEL,
- _______, KC_HOME, KC_UP, KC_END, RESET, TCH_TOG, _______, _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, _______,
+ _______, KC_HOME, KC_UP, KC_END, QK_BOOT, TCH_TOG, _______, _______, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_PPLS, _______,
_______, KC_LEFT, KC_DOWN, KC_RIGHT,_______, _______, _______, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_PPLS, _______,
_______, _______, _______, _______, _______, EEP_RST, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_PENT, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_0, KC_PDOT, KC_PENT, _______,
diff --git a/keyboards/rgbkb/mun/matrix.c b/keyboards/rgbkb/mun/matrix.c
deleted file mode 100644
index 2472d217c7..0000000000
--- a/keyboards/rgbkb/mun/matrix.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * ----------------------------------------------------------------------------
- * "THE BEER-WARE LICENSE" (Revision 42):
- * <https://github.com/KarlK90> wrote this file. As long as you retain this
- * notice you can do whatever you want with this stuff. If we meet some day, and
- * you think this stuff is worth it, you can buy me a beer in return. KarlK90
- * ----------------------------------------------------------------------------
- */
-
-#include "matrix.h"
-#include "atomic_util.h"
-#include "gpio.h"
-
-#define ROWS_PER_HAND (MATRIX_ROWS / 2)
-static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
-static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
-
-void matrix_init_pins(void) {
- for (size_t i = 0; i < MATRIX_COLS; i++) {
- setPinInputHigh(col_pins[i]);
- }
- for (size_t i = 0; i < ROWS_PER_HAND; i++) {
- setPinOutput(row_pins[i]);
- writePinHigh(row_pins[i]);
- }
-}
-
-void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) {
- /* Drive row pin low. */
- ATOMIC_BLOCK_FORCEON { writePinLow(row_pins[current_row]); }
- matrix_output_select_delay();
-
- /* Read all columns in one go, aka port scanning. */
- uint16_t porta = palReadPort(GPIOA);
- uint16_t portb = palReadPort(GPIOB);
-
-// clang-format off
- /* Order of pins on the mun is: A0, B11, B0, B10, B12, B2, A8
- Pin is active low, therefore we have to invert the result. */
- matrix_row_t cols = ~(((porta & (0x1 << 0)) >> 0) // A0 (0)
- | ((portb & (0x1 << 11)) >> 10) // B11 (1)
- | ((portb & (0x1 << 0)) << 2) // B0 (2)
- | ((portb & (0x1 << 10)) >> 7) // B10 (3)
- | ((portb & (0x1 << 12)) >> 8) // B12 (4)
- | ((portb & (0x1 << 2)) << 3) // B2 (5)
- | ((porta & (0x1 << 8)) >> 2)); // A8 (6)
-// clang-format on
-
- /* Reverse the order of columns for left hand as the board is flipped. */
- // if (isLeftHand) {
- // #if defined(__arm__)
- // /* rbit assembly reverses bit order of 32bit registers. */
- // uint32_t temp = cols;
- // __asm__("rbit %0, %1" : "=r"(temp) : "r"(temp));
- // cols = temp >> 24;
- // #else
- // /* RISC-V bit manipulation extension not present. Use bit-hack.
- // https://graphics.stanford.edu/~seander/bithacks.html#ReverseByteWith32Bits */
- // cols = (matrix_row_t)(((cols * 0x0802LU & 0x22110LU) | (cols * 0x8020LU & 0x88440LU)) * 0x10101LU >> 16);
- // #endif
- // }
-
- current_matrix[current_row] = cols;
-
- /* Drive row pin high again. */
- ATOMIC_BLOCK_FORCEON { writePinHigh(row_pins[current_row]); }
- matrix_output_unselect_delay(current_row, cols != 0);
-}
-
-#if defined(BUSY_WAIT)
-void matrix_output_unselect_delay(uint8_t line, bool key_pressed) {
- for (int32_t i = 0; i < BUSY_WAIT_INSTRUCTIONS; i++) {
- __asm__ volatile("nop" ::: "memory");
- }
-}
-#endif
diff --git a/keyboards/rgbkb/mun/rev1/config.h b/keyboards/rgbkb/mun/rev1/config.h
deleted file mode 100644
index 7ff0b54903..0000000000
--- a/keyboards/rgbkb/mun/rev1/config.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * ----------------------------------------------------------------------------
- * "THE BEER-WARE LICENSE" (Revision 42):
- * <https://github.com/Legonut> wrote this file. As long as you retain this
- * notice you can do whatever you want with this stuff. If we meet some day, and
- * you think this stuff is worth it, you can buy me a beer in return. David Rauseo
- * ----------------------------------------------------------------------------
- */
-
-#pragma once
-
-#define DEVICE_VER 0x0001
diff --git a/keyboards/rgbkb/mun/rev1/info.json b/keyboards/rgbkb/mun/rev1/info.json
index 72cd7be9f0..8b16bd4542 100644
--- a/keyboards/rgbkb/mun/rev1/info.json
+++ b/keyboards/rgbkb/mun/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Mun",
+ "keyboard_name": "Mün",
+ "manufacturer": "RGBKB",
"url": "https://www.rgbkb.net/products/mun",
"maintainer": "Legonut",
+ "usb": {
+ "vid": "0x3535",
+ "pid": "0x3505",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/rgbkb/mun/rules.mk b/keyboards/rgbkb/mun/rules.mk
index a682f3aa04..7670e0ee45 100644
--- a/keyboards/rgbkb/mun/rules.mk
+++ b/keyboards/rgbkb/mun/rules.mk
@@ -16,7 +16,7 @@ QUANTUM_LIB_SRC += i2c_master.c
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
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = no # Audio output
@@ -38,7 +38,4 @@ OPT = 3
OPT_DEFS += -DOLED_FONT_H=\"keyboards/rgbkb/common/glcdfont.c\"
-# matrix optimisations
-SRC += matrix.c
-
DEFAULT_FOLDER = rgbkb/mun/rev1
diff --git a/keyboards/rgbkb/pan/config.h b/keyboards/rgbkb/pan/config.h
index 43c534ca92..5b6ca7e876 100644
--- a/keyboards/rgbkb/pan/config.h
+++ b/keyboards/rgbkb/pan/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x5247 // "RG" - RGBKB
-#define PRODUCT_ID 0x8C9C // Pan
-#define DEVICE_VER 0x0002
-#define MANUFACTURER RGBKB
-#define PRODUCT Pan
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 13
diff --git a/keyboards/rgbkb/pan/info.json b/keyboards/rgbkb/pan/info.json
index 54ac24a3a4..524eec0da8 100644
--- a/keyboards/rgbkb/pan/info.json
+++ b/keyboards/rgbkb/pan/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "RGBKB Pan",
+ "keyboard_name": "Pan",
+ "manufacturer": "RGBKB",
"url": "https://www.rgbkb.net/collections/all/products/pan-keyboard-diy-kit",
"maintainer": "Legonut",
+ "usb": {
+ "vid": "0x5247",
+ "pid": "0x8C9C",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/rgbkb/pan/keymaps/default/keymap.c b/keyboards/rgbkb/pan/keymaps/default/keymap.c
index dbc127616a..dcafeec765 100644
--- a/keyboards/rgbkb/pan/keymaps/default/keymap.c
+++ b/keyboards/rgbkb/pan/keymaps/default/keymap.c
@@ -75,7 +75,7 @@ bool oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("RGBKB Pan\n"), false);
oled_write_P(PSTR("Layer: "), false);
- uint8_t layer = layer_state ? biton(layer_state) : biton32(default_layer_state);
+ uint8_t layer = get_highest_layer(layer_state|default_layer_state);
switch (layer) {
case _QWERTY:
oled_write_P(PSTR("Default\n"), false);
diff --git a/keyboards/rgbkb/sol/keymaps/brianweyer/keymap.c b/keyboards/rgbkb/sol/keymaps/brianweyer/keymap.c
index d6867ffa9b..3ccd96036a 100644
--- a/keyboards/rgbkb/sol/keymaps/brianweyer/keymap.c
+++ b/keyboards/rgbkb/sol/keymaps/brianweyer/keymap.c
@@ -110,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJ] = LAYOUT( \
//,--------+--------+--------+--------+--------+--------+--+--------+. ,--------+--+--------+--------+--------+--------+--------+--------+
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, \
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, \
//|--------+--------+--------+--------+--------+--------+--+--------| |--------+--+--------+--------+--------+--------+--------+--------|
_______, RGB_SAI, RGB_VAI, RGB_HUI, RGB_SPI, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, \
//|--------+--------+--------+--------+--------+--------+--+--------| |--------+--+--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/rgbkb/sol/keymaps/danielhklein/keymap.c b/keyboards/rgbkb/sol/keymaps/danielhklein/keymap.c
index c24d382704..c63356b3e5 100644
--- a/keyboards/rgbkb/sol/keymaps/danielhklein/keymap.c
+++ b/keyboards/rgbkb/sol/keymaps/danielhklein/keymap.c
@@ -135,7 +135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* ADJ
* ,------------------------------------------------. ,------------------------------------------------.
- * |RESET | F1 | F2 | F3 | F4 | F5 | F6 | | | = | / | * | - | | |
+ * |QK_BOOT | F1 | F2 | F3 | F4 | F5 | F6 | | | = | / | * | - | | |
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
* | | F7 | F8 | F9 | F10 | F11 | F12 | | | 7 | 8 | 9 | + | | |
* |------+------+------+------+------+------|------| |------|------+------+------+------+------+------|
@@ -150,7 +150,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJ] = LAYOUT( \
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, XXXXXXX, XXXXXXX, \
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, XXXXXXX, XXXXXXX, \
XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_P7, KC_P8, KC_P9, KC_PPLS, XXXXXXX, XXXXXXX, \
XXXXXXX, RGB_SAD, RGB_VAI, RGB_SAI, XXXXXXX, XXXXXXX, COLEMAK, XXXXXXX, KC_P4, KC_P5, KC_P6, KC_PENT, XXXXXXX, XXXXXXX, \
XXXXXXX, RGB_HUD, RGB_VAD, RGB_HUI, XXXXXXX, XXXXXXX, QWERTY, XXXXXXX, KC_P1, KC_P2, KC_P3, KC_SPC, XXXXXXX, XXXXXXX, \
diff --git a/keyboards/rgbkb/sol/keymaps/default/keymap.c b/keyboards/rgbkb/sol/keymaps/default/keymap.c
index c82259f5ee..1ce18bc1ab 100644
--- a/keyboards/rgbkb/sol/keymaps/default/keymap.c
+++ b/keyboards/rgbkb/sol/keymaps/default/keymap.c
@@ -233,7 +233,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
} else
#endif
{
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
uint16_t keycode = pgm_read_word(&encoders[layer][index][clockwise]);
while (keycode == KC_TRANSPARENT && layer > 0)
{
@@ -325,7 +325,7 @@ static void render_status(void) {
// Define layers here
oled_write_P(PSTR("Layer"), false);
- uint8_t layer = layer_state ? biton(layer_state) : biton32(default_layer_state);
+ uint8_t layer = get_highest_layer(layer_state|default_layer_state);
switch (layer) {
case _QWERTY:
oled_write_P(PSTR("BASE "), false);
diff --git a/keyboards/rgbkb/sol/keymaps/xyverz/keymap.c b/keyboards/rgbkb/sol/keymaps/xyverz/keymap.c
index bdcfbb1b93..cdd0c6620a 100644
--- a/keyboards/rgbkb/sol/keymaps/xyverz/keymap.c
+++ b/keyboards/rgbkb/sol/keymaps/xyverz/keymap.c
@@ -97,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_NLCK, _______, _______, \
KC_CAPS, _______, QWERTY, COLEMAK, DVORAK, DESTINY, XXXXXXX, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, \
_______, _______, _______, RGB_SPI, RGB_SPD, _______, XXXXXXX, XXXXXXX, _______, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, _______, \
@@ -263,7 +263,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
} else
#endif
{
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
uint16_t keycode = encoders[layer][index][clockwise];
while (keycode == KC_TRANSPARENT && layer > 0)
{
@@ -306,7 +306,7 @@ static void render_status(void) {
// Define layers here
oled_write_P(PSTR(" Layer-----"), false);
- uint8_t layer = layer_state ? biton(layer_state) : biton32(default_layer_state);
+ uint8_t layer = layer_state ? get_highest_layer(layer_state) : get_highest_layer(default_layer_state);
switch (layer) {
case _DVORAK:
oled_write_P(PSTR("DVRAK"), false);
diff --git a/keyboards/rgbkb/sol/rev1/config.h b/keyboards/rgbkb/sol/rev1/config.h
index 14518a755d..3e08848f6b 100644
--- a/keyboards/rgbkb/sol/rev1/config.h
+++ b/keyboards/rgbkb/sol/rev1/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RGBKB
-#define PRODUCT Sol
-
/* ws2812 RGB LED */
#define RGB_DI_PIN B3
diff --git a/keyboards/rgbkb/sol/rev1/info.json b/keyboards/rgbkb/sol/rev1/info.json
index 33e6625fe4..2a611f7a6a 100644
--- a/keyboards/rgbkb/sol/rev1/info.json
+++ b/keyboards/rgbkb/sol/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Sol",
+ "manufacturer": "RGBKB",
"url": "",
"maintainer": "Legonut",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/rgbkb/sol/rev2/config.h b/keyboards/rgbkb/sol/rev2/config.h
index f0c71db34e..cdaf9c0536 100644
--- a/keyboards/rgbkb/sol/rev2/config.h
+++ b/keyboards/rgbkb/sol/rev2/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3060
-#define DEVICE_VER 0x0002
-#define MANUFACTURER RGBKB
-#define PRODUCT Sol
-
/* ws2812 RGB LED */
#define RGB_DI_PIN B7
diff --git a/keyboards/rgbkb/sol/rev2/info.json b/keyboards/rgbkb/sol/rev2/info.json
index 33e6625fe4..bd1bba3d72 100644
--- a/keyboards/rgbkb/sol/rev2/info.json
+++ b/keyboards/rgbkb/sol/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Sol",
+ "manufacturer": "RGBKB",
"url": "",
"maintainer": "Legonut",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/rgbkb/sol3/config.h b/keyboards/rgbkb/sol3/config.h
index 92db3def6b..20435a159a 100644
--- a/keyboards/rgbkb/sol3/config.h
+++ b/keyboards/rgbkb/sol3/config.h
@@ -11,12 +11,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3535
-#define PRODUCT_ID 0x3510
-#define MANUFACTURER RGBKB
-#define PRODUCT Sol 3
-
/* Matrix Configuration - Rows are doubled up */
#define MATRIX_ROWS 12
// Last pins reserved for encoder / touch encoder support
diff --git a/keyboards/rgbkb/sol3/readme.md b/keyboards/rgbkb/sol3/readme.md
index c896f7c0cd..8d799bd926 100644
--- a/keyboards/rgbkb/sol3/readme.md
+++ b/keyboards/rgbkb/sol3/readme.md
@@ -22,5 +22,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
To reset the board into bootloader mode, do one of the following:
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available (Adjust + R by default)
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (Adjust + R by default)
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard (also erases persistent settings)
diff --git a/keyboards/rgbkb/sol3/rev1/config.h b/keyboards/rgbkb/sol3/rev1/config.h
deleted file mode 100644
index 7ff0b54903..0000000000
--- a/keyboards/rgbkb/sol3/rev1/config.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * ----------------------------------------------------------------------------
- * "THE BEER-WARE LICENSE" (Revision 42):
- * <https://github.com/Legonut> wrote this file. As long as you retain this
- * notice you can do whatever you want with this stuff. If we meet some day, and
- * you think this stuff is worth it, you can buy me a beer in return. David Rauseo
- * ----------------------------------------------------------------------------
- */
-
-#pragma once
-
-#define DEVICE_VER 0x0001
diff --git a/keyboards/rgbkb/sol3/rev1/info.json b/keyboards/rgbkb/sol3/rev1/info.json
index 7003726b7f..b8a8e5015a 100644
--- a/keyboards/rgbkb/sol3/rev1/info.json
+++ b/keyboards/rgbkb/sol3/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Sol 3 rev1",
+ "keyboard_name": "Sol 3",
+ "manufacturer": "RGBKB",
"url": "",
"maintainer": "XScorpion2, rgbkb",
+ "usb": {
+ "vid": "0x3535",
+ "pid": "0x3510",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/rgbkb/sol3/rules.mk b/keyboards/rgbkb/sol3/rules.mk
index e30330d333..de9f7185cf 100644
--- a/keyboards/rgbkb/sol3/rules.mk
+++ b/keyboards/rgbkb/sol3/rules.mk
@@ -14,9 +14,9 @@ QUANTUM_LIB_SRC += i2c_master.c
# 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 = yes # Console for debug
+CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
AUDIO_ENABLE = yes # Audio output
@@ -42,8 +42,4 @@ OPT = 3
OPT_DEFS += -DOLED_FONT_H=\"keyboards/rgbkb/common/glcdfont.c\"
-# TODO: Implement fast matrix scanning
-# matrix optimisations
-# SRC += matrix.c
-
DEFAULT_FOLDER = rgbkb/sol3/rev1
diff --git a/keyboards/rgbkb/zen/config.h b/keyboards/rgbkb/zen/config.h
deleted file mode 100644
index 6868dc1354..0000000000
--- a/keyboards/rgbkb/zen/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-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
-
-#include "config_common.h"
diff --git a/keyboards/rgbkb/zen/post_rules.mk b/keyboards/rgbkb/zen/post_rules.mk
index 3ddb449efa..212d9e8693 100644
--- a/keyboards/rgbkb/zen/post_rules.mk
+++ b/keyboards/rgbkb/zen/post_rules.mk
@@ -1,14 +1,3 @@
-ifeq ($(strip $(CTPC)), yes)
- CONVERT_TO_PROTON_C=yes
-endif
-
-ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes)
- SPLIT_KEYBOARD = no # currently unsupported on ARM
- RGBLIGHT_ENABLE = no # currently unsupported on ARM
-
- EXTRAFLAGS += -DUSE_PROTON_C
-else
- # Currently moved to Pro Micro only section because of lack of Proton-C support
- SPLIT_KEYBOARD = yes
- RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
+ifeq ($(strip $(CONVERT_TO)), proton_c)
+ RGBLIGHT_ENABLE = no # OOB incompatible with split on ARM
endif
diff --git a/keyboards/rgbkb/zen/readme.md b/keyboards/rgbkb/zen/readme.md
index 0a2f9e3edf..04d8a73c7a 100644
--- a/keyboards/rgbkb/zen/readme.md
+++ b/keyboards/rgbkb/zen/readme.md
@@ -20,8 +20,6 @@ Make example for this keyboard (after setting up your build environment):
To build for a Proton-C:
- make rgbkb/zen/rev2:default CTPC=yes
-
-**Note:** The Proton-C does not have split keyboard, or encoder support. Also OLED driver support is untested. Will update as status changes.
+ make rgbkb/zen/rev2:default CONVERT_TO=proton_c
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/rgbkb/zen/rev1/config.h b/keyboards/rgbkb/zen/rev1/config.h
index d41ffa477d..e1d1212bbc 100644
--- a/keyboards/rgbkb/zen/rev1/config.h
+++ b/keyboards/rgbkb/zen/rev1/config.h
@@ -17,12 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Legonut
-#define PRODUCT Project Zen
+#include "config_common.h"
/* key matrix size */
// Rows are doubled-up
diff --git a/keyboards/rgbkb/zen/rev1/info.json b/keyboards/rgbkb/zen/rev1/info.json
index 2a78ba0297..cdd6497139 100644
--- a/keyboards/rgbkb/zen/rev1/info.json
+++ b/keyboards/rgbkb/zen/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Zen",
+ "keyboard_name": "Project Zen",
+ "manufacturer": "Legonut",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"k00", "x":0.5, "y":0}, {"label":"k01", "x":1.5, "y":0}, {"label":"k02", "x":2.5, "y":0}, {"label":"k03", "x":3.5, "y":0}, {"label":"k04", "x":4.5, "y":0}, {"label":"k05", "x":5.5, "y":0}, {"label":"k55", "x":10.5, "y":0}, {"label":"k54", "x":11.5, "y":0}, {"label":"k53", "x":12.5, "y":0}, {"label":"k52", "x":13.5, "y":0}, {"label":"k51", "x":14.5, "y":0}, {"label":"k50", "x":15.5, "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":"k65", "x":10.5, "y":1}, {"label":"k64", "x":11.5, "y":1}, {"label":"k63", "x":12.5, "y":1}, {"label":"k62", "x":13.5, "y":1}, {"label":"k61", "x":14.5, "y":1}, {"label":"k60", "x":15.5, "y":1, "w":1.5}, {"label":"k20", "x":0, "y":2, "w":1.5}, {"label":"k21", "x":1.5, "y":2}, {"label":"k22", "x":2.5, "y":2}, {"label":"k23", "x":3.5, "y":2}, {"label":"k24", "x":4.5, "y":2}, {"label":"k25", "x":5.5, "y":2}, {"label":"k75", "x":10.5, "y":2}, {"label":"k74", "x":11.5, "y":2}, {"label":"k73", "x":12.5, "y":2}, {"label":"k72", "x":13.5, "y":2}, {"label":"k71", "x":14.5, "y":2}, {"label":"k70", "x":15.5, "y":2, "w":1.5}, {"label":"k30", "x":0, "y":3, "w":1.5}, {"label":"k31", "x":1.5, "y":3}, {"label":"k32", "x":2.5, "y":3}, {"label":"k33", "x":3.5, "y":3}, {"label":"k34", "x":4.5, "y":3}, {"label":"k35", "x":5.5, "y":3}, {"label":"k85", "x":10.5, "y":3}, {"label":"k84", "x":11.5, "y":3}, {"label":"k83", "x":12.5, "y":3}, {"label":"k82", "x":13.5, "y":3}, {"label":"k81", "x":14.5, "y":3}, {"label":"k80", "x":15.5, "y":3, "w":1.5}, {"label":"k40", "x":0, "y":4, "w":1.5}, {"label":"k41", "x":1.5, "y":4}, {"label":"k42", "x":2.5, "y":4}, {"label":"k43", "x":3.5, "y":4}, {"label":"k44", "x":4.5, "y":4}, {"label":"k45", "x":6, "y":4.5, "h":2}, {"label":"k46", "x":7, "y":4.5, "h":2}, {"label":"k96", "x":9, "y":4.5, "h":2}, {"label":"k95", "x":10, "y":4.5, "h":2}, {"label":"k94", "x":11.5, "y":4}, {"label":"k93", "x":12.5, "y":4}, {"label":"k92", "x":13.5, "y":4}, {"label":"k91", "x":14.5, "y":4}, {"label":"k90", "x":15.5, "y":4, "w":1.5}]
diff --git a/keyboards/rgbkb/zen/rev1/keymaps/333fred/keymap.c b/keyboards/rgbkb/zen/rev1/keymaps/333fred/keymap.c
index 946ca79efd..4cde20a7ef 100644
--- a/keyboards/rgbkb/zen/rev1/keymaps/333fred/keymap.c
+++ b/keyboards/rgbkb/zen/rev1/keymaps/333fred/keymap.c
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | APscr| % | ^ | [ | ] | ~ | | 1 | 2 | 3 | \ | Vol- | Vol+ |
* |------+------+------+------+------+------+------..------+------+------+------+------+------+------|
- * | Pscr | | RESET| | | GAME | || | 0 | . | = | Prev | Next | Play |
+ * | Pscr | | QK_BOOT| | | GAME | || | 0 | . | = | Prev | Next | Play |
* `------------------------------------------------- -------------------------------------------------'
*/
[SYMB] = LAYOUT( \
@@ -66,12 +66,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, KC_7, KC_8, KC_9, KC_ASTR, KC_RPRN, KC_F12, \
_______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, KC_4, KC_5, KC_6, KC_PLUS, KC_RCBR, KC_PIPE, \
PSCREEN_APP, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_1, KC_2, KC_3, KC_BSLS, KC_VOLD, KC_VOLU, \
- KC_PSCR, _______, RESET, _______, _______, TO(GAME), _______, _______, KC_0, KC_DOT, KC_EQL, KC_MPRV, KC_MNXT, KC_MPLY \
+ KC_PSCR, _______, QK_BOOT, _______, _______, TO(GAME), _______, _______, KC_0, KC_DOT, KC_EQL, KC_MPRV, KC_MNXT, KC_MPLY \
),
/* Vim Movement
* ,-----------------------------------------. .-----------------------------------------.
- * | | | | | | | | | | | | RESET| |
+ * | | | | | | | | | | | | QK_BOOT| |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | |RGBSAI|RGBVAI|RGBSAD| LSFT | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
@@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------..------------------------------------------------'
*/
[VIM] = LAYOUT( \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, \
_______, RGB_SAI, RGB_VAI, RGB_SAD, KC_LSFT, _______, _______, _______, _______, _______, _______, _______, \
_______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, \
_______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, \
@@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Shift| Z | | | | | | | | | | | GUI |
* |------+------+------+------+------+------+------..------+------+------+------+------+------+------|
- * | Enter| | Lock | Bksp | Alt | Spc | RESET|| | Lower| Left | Up | Down | Right|QWERTY|
+ * | Enter| | Lock | Bksp | Alt | Spc | QK_BOOT|| | Lower| Left | Up | Down | Right|QWERTY|
* `------------------------------------------------..-----------------------------------------------'
*/
[GAME] = LAYOUT( \
@@ -122,7 +122,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Shift| Z | | | | | | | | | | | GUI |
* |------+------+------+------+------+------+------..------+------+------+------+------+------+------|
- * | Enter| | Lock | Bksp | Alt | Spc | RESET|| | Lower| Left | Up | Down | Right|QWERTY|
+ * | Enter| | Lock | Bksp | Alt | Spc | QK_BOOT|| | Lower| Left | Up | Down | Right|QWERTY|
* `------------------------------------------------..-----------------------------------------------'
*/
[GAME_ARROW] = LAYOUT( \
diff --git a/keyboards/rgbkb/zen/rev1/keymaps/cwebster2/config.h b/keyboards/rgbkb/zen/rev1/keymaps/cwebster2/config.h
index 211e3517ec..cdffe6fd50 100644
--- a/keyboards/rgbkb/zen/rev1/keymaps/cwebster2/config.h
+++ b/keyboards/rgbkb/zen/rev1/keymaps/cwebster2/config.h
@@ -29,6 +29,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define COMBO_COUNT 2
#endif
-#define QMK_KEYS_PER_SCAN 4
-
#define EE_HANDS
diff --git a/keyboards/rgbkb/zen/rev1/keymaps/jwlawrence/keymap.c b/keyboards/rgbkb/zen/rev1/keymaps/jwlawrence/keymap.c
index bca4684dc5..c8d45933f5 100644
--- a/keyboards/rgbkb/zen/rev1/keymaps/jwlawrence/keymap.c
+++ b/keyboards/rgbkb/zen/rev1/keymaps/jwlawrence/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------. .-----------------------------------------.
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | |RGBSAI|RGBVAI|RGBSAD| RESET| [ | | ] | Pgup | Up | Pgdn |Insert| Home |
+ * | |RGBSAI|RGBVAI|RGBSAD| QK_BOOT| [ | | ] | Pgup | Up | Pgdn |Insert| Home |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | |RGBHUD|RGBVAD|RGBHUI|RGBMOD| | | | Left | Down | Right|Delete| End |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_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_SAI, RGB_VAI, RGB_SAD, QK_BOOT, KC_LBRC, KC_RBRC, KC_PGUP, KC_UP, KC_PGDN, KC_INS, KC_HOME, \
_______, RGB_HUD, RGB_VAD, RGB_HUI, RGB_MOD, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_END, \
KC_LSFT, _______, _______, _______, _______, _______, MAGIC_TOGGLE_NKRO, _______, _______, KC_MPLY, KC_MPRV, KC_MNXT, \
KC_LCTL, KC_LALT, KC_LGUI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLU, KC_VOLD \
diff --git a/keyboards/rgbkb/zen/rev1/keymaps/samae/keymap.c b/keyboards/rgbkb/zen/rev1/keymaps/samae/keymap.c
index 673ea4054a..9e5d2212ea 100644
--- a/keyboards/rgbkb/zen/rev1/keymaps/samae/keymap.c
+++ b/keyboards/rgbkb/zen/rev1/keymaps/samae/keymap.c
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* |Shift | | | | | | | | | | Pause| Back | Next |
* |------+------+------+------+------+------+------. .------+------+------+------+------+------+------|
- * | Ctrl | GUI | Alt |RGBMOD| | | | | RESET| | | | Mute | VOLUP| VOLDN|
+ * | Ctrl | GUI | Alt |RGBMOD| | | | | QK_BOOT| | | | Mute | VOLUP| VOLDN|
* `------------------------------------------------' '------------------------------------------------'
*/
[_NAV] = LAYOUT(
@@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, RGB_SAI, RGB_VAI, RGB_SAD, _______, 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, _______, _______, _______, RESET, _______, _______, _______, KC_MUTE, KC_VOLU, KC_VOLD
+ KC_LCTL, KC_LGUI, KC_LALT, RGB_MOD, _______, _______, _______, QK_BOOT, _______, _______, _______, KC_MUTE, KC_VOLU, KC_VOLD
),
};
diff --git a/keyboards/rgbkb/zen/rev1/keymaps/starcalleramethyst/keymap.c b/keyboards/rgbkb/zen/rev1/keymaps/starcalleramethyst/keymap.c
index b9b21102b1..a8d93e5639 100644
--- a/keyboards/rgbkb/zen/rev1/keymaps/starcalleramethyst/keymap.c
+++ b/keyboards/rgbkb/zen/rev1/keymaps/starcalleramethyst/keymap.c
@@ -124,7 +124,7 @@ KC_CCCV, KC_LGUI, KC_LALT, RGB_TOG, MO(1), TD(TD_SPC_DOT), KC_BSPC, KC_ENT, TD
[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_TRNS, RGB_SAI, RGB_VAI, RGB_SAD, RESET, KC_LBRC, KC_RBRC, KC_PGUP, KC_UP, KC_PGDN, KC_INS, KC_HOME,
+KC_TRNS, RGB_SAI, RGB_VAI, RGB_SAD, QK_BOOT, KC_LBRC, KC_RBRC, KC_PGUP, KC_UP, KC_PGDN, KC_INS, KC_HOME,
KC_CAPS, RGB_HUD, RGB_VAD, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_END,
KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MAGIC_TOGGLE_NKRO, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_MNXT,
KC_NO, KC_LGUI, KC_LALT, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLU, KC_VOLD),
diff --git a/keyboards/rgbkb/zen/rev1/keymaps/xyverz/keymap.c b/keyboards/rgbkb/zen/rev1/keymaps/xyverz/keymap.c
index 6250086ed9..e98bab84eb 100644
--- a/keyboards/rgbkb/zen/rev1/keymaps/xyverz/keymap.c
+++ b/keyboards/rgbkb/zen/rev1/keymaps/xyverz/keymap.c
@@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT( \
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_SNK, _______, QWERTY, COLEMAK, DVORAK, WOW, _______, \
RGB_TOG, RGB_MOD, RGB_SWR, RGB_M_K, RGB_M_G, RGB_HUI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, \
diff --git a/keyboards/rgbkb/zen/rev1/rev1.h b/keyboards/rgbkb/zen/rev1/rev1.h
index 470a26a43f..3b437c459c 100644
--- a/keyboards/rgbkb/zen/rev1/rev1.h
+++ b/keyboards/rgbkb/zen/rev1/rev1.h
@@ -1,17 +1,7 @@
#pragma once
-#include "zen.h"
-
#include "quantum.h"
-#ifdef USE_I2C
-#include <stddef.h>
-#ifdef __AVR__
- #include <avr/io.h>
- #include <avr/interrupt.h>
-#endif
-#endif
-
#define LAYOUT( \
k00, k01, k02, k03, k04, k05, k55, k54, k53, k52, k51, k50, \
k10, k11, k12, k13, k14, k15, k65, k64, k63, k62, k61, k60, \
diff --git a/keyboards/rgbkb/zen/rev2/config.h b/keyboards/rgbkb/zen/rev2/config.h
index e37bd7a168..685577b6c7 100644
--- a/keyboards/rgbkb/zen/rev2/config.h
+++ b/keyboards/rgbkb/zen/rev2/config.h
@@ -17,24 +17,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3061
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Legonut
-#define PRODUCT "Project Zen"
+#include "config_common.h"
/* key matrix size */
// Rows are doubled-up
// wiring of each half
-#ifdef CONVERT_TO_PROTON_C
- #define MATRIX_ROWS 5
- #define MATRIX_COLS 7
-#else
- #define MATRIX_ROWS 10
- #define MATRIX_COLS 7
-#endif
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 7
// Proton-C does pin conversion
#define MATRIX_ROW_PINS { C6, E6, B5, D7, B4 }
diff --git a/keyboards/rgbkb/zen/rev2/info.json b/keyboards/rgbkb/zen/rev2/info.json
index 53baefe22d..3c80032407 100644
--- a/keyboards/rgbkb/zen/rev2/info.json
+++ b/keyboards/rgbkb/zen/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Zen",
+ "keyboard_name": "Project Zen",
+ "manufacturer": "Legonut",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3061",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/rgbkb/zen/rev2/rev2.c b/keyboards/rgbkb/zen/rev2/rev2.c
index 5461890272..70e5531673 100644
--- a/keyboards/rgbkb/zen/rev2/rev2.c
+++ b/keyboards/rgbkb/zen/rev2/rev2.c
@@ -37,7 +37,7 @@ void render_status(void) {
// 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
oled_set_cursor(0, 3); // Line 3
oled_write_P(PSTR("Layer"), false); // Line 4
- oled_write_P(layer_name_user(biton32(layer_state)), false);
+ oled_write_P(layer_name_user(get_highest_layer(layer_state)), false);
// Host Keyboard LED Status
uint8_t led_usb_state = host_keyboard_leds();
diff --git a/keyboards/rgbkb/zen/rev2/rev2.h b/keyboards/rgbkb/zen/rev2/rev2.h
index c545710abb..c7a06d1767 100644
--- a/keyboards/rgbkb/zen/rev2/rev2.h
+++ b/keyboards/rgbkb/zen/rev2/rev2.h
@@ -1,52 +1,24 @@
#pragma once
-#include "zen.h"
-
#include "quantum.h"
-#ifdef USE_I2C
-#include <stddef.h>
-#ifdef __AVR__
- #include <avr/io.h>
- #include <avr/interrupt.h>
-#endif
-#endif
-
-#ifdef CONVERT_TO_PROTON_C
- #define LAYOUT( \
- 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, k16, k66, k85, k84, k83, k82, k81, k80, \
- k40, k41, k42, k43, k44, k36, k26, k76, k86, k94, k93, k92, k91, k90, \
- k45, k46, k96, k95 \
- ) \
- { \
- { k00, k01, k02, k03, k04, k05, KC_NO }, \
- { 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 } \
- }
-#else
- #define LAYOUT( \
- 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, k16, k66, k85, k84, k83, k82, k81, k80, \
- k40, k41, k42, k43, k44, k36, k26, k76, k86, k94, k93, k92, k91, k90, \
- k45, k46, k96, k95 \
- ) \
- { \
- { k00, k01, k02, k03, k04, k05, KC_NO }, \
- { 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 }, \
- { k50, k51, k52, k53, k54, k55, KC_NO }, \
- { k60, k61, k62, k63, k64, k65, k66 }, \
- { k70, k71, k72, k73, k74, k75, k76 }, \
- { k80, k81, k82, k83, k84, k85, k86 }, \
- { k90, k91, k92, k93, k94, k95, k96 } \
- }
-#endif
+#define LAYOUT( \
+ 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, k16, k66, k85, k84, k83, k82, k81, k80, \
+ k40, k41, k42, k43, k44, k36, k26, k76, k86, k94, k93, k92, k91, k90, \
+ k45, k46, k96, k95 \
+ ) \
+ { \
+ { k00, k01, k02, k03, k04, k05, KC_NO }, \
+ { 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 }, \
+ { k50, k51, k52, k53, k54, k55, KC_NO }, \
+ { k60, k61, k62, k63, k64, k65, k66 }, \
+ { k70, k71, k72, k73, k74, k75, k76 }, \
+ { k80, k81, k82, k83, k84, k85, k86 }, \
+ { k90, k91, k92, k93, k94, k95, k96 } \
+ }
diff --git a/keyboards/rgbkb/zen/rules.mk b/keyboards/rgbkb/zen/rules.mk
index 5a3ac77e74..84a2d08ff0 100644
--- a/keyboards/rgbkb/zen/rules.mk
+++ b/keyboards/rgbkb/zen/rules.mk
@@ -14,5 +14,7 @@ CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = no # Enable N-Key Rollover
AUDIO_ENABLE = no # Audio output
+SPLIT_KEYBOARD = yes
+RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight
DEFAULT_FOLDER = rgbkb/zen/rev2
diff --git a/keyboards/rgbkb/zen/zen.c b/keyboards/rgbkb/zen/zen.c
deleted file mode 100644
index 22131ef5c7..0000000000
--- a/keyboards/rgbkb/zen/zen.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "zen.h"
diff --git a/keyboards/rgbkb/zen/zen.h b/keyboards/rgbkb/zen/zen.h
deleted file mode 100644
index e51c3c831f..0000000000
--- a/keyboards/rgbkb/zen/zen.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#pragma once
-
-#if KEYBOARD_rgbkb_zen_rev1
- #include "rev1.h"
-#elif KEYBOARD_rgbkb_zen_rev2
- #include "rev2.h"
-#endif
-#include "quantum.h"
diff --git a/keyboards/rgbkb/zygomorph/keymaps/5x6pad/keymap.c b/keyboards/rgbkb/zygomorph/keymaps/5x6pad/keymap.c
index 1c5b242c0b..dde27eae24 100644
--- a/keyboards/rgbkb/zygomorph/keymaps/5x6pad/keymap.c
+++ b/keyboards/rgbkb/zygomorph/keymaps/5x6pad/keymap.c
@@ -85,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJ] = LAYOUT_ortho_5x6(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
- _______, RGB_SAD, RGB_VAI, RGB_SAI, RESET, _______,
+ _______, RGB_SAD, RGB_VAI, RGB_SAI, QK_BOOT, _______,
_______, RGB_HUD, RGB_VAD, RGB_HUI, RGBRST, _______,
_______, _______, _______, _______, _______, _______,
_______, _______, _______, RGB_MOD, _______, _______
diff --git a/keyboards/rgbkb/zygomorph/keymaps/default_oled/keymap.c b/keyboards/rgbkb/zygomorph/keymaps/default_oled/keymap.c
index 48bd1a33f7..f4d5c82a71 100644
--- a/keyboards/rgbkb/zygomorph/keymaps/default_oled/keymap.c
+++ b/keyboards/rgbkb/zygomorph/keymaps/default_oled/keymap.c
@@ -198,7 +198,7 @@ static void render_status(void) {
// 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
oled_write_P(PSTR("Layer: "), false);
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _QWERTY:
oled_write_ln_P(PSTR("QWERTY"), false);
break;
diff --git a/keyboards/rgbkb/zygomorph/rev1/config.h b/keyboards/rgbkb/zygomorph/rev1/config.h
index 19fd28d2ec..3835a3e705 100644
--- a/keyboards/rgbkb/zygomorph/rev1/config.h
+++ b/keyboards/rgbkb/zygomorph/rev1/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RGBKB
-#define PRODUCT Zygomorph
-
/* Select hand configuration */
#define EE_HANDS
diff --git a/keyboards/rgbkb/zygomorph/rev1/info.json b/keyboards/rgbkb/zygomorph/rev1/info.json
index ef8db5d02a..50155da240 100644
--- a/keyboards/rgbkb/zygomorph/rev1/info.json
+++ b/keyboards/rgbkb/zygomorph/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Zygomorph",
+ "manufacturer": "RGBKB",
"url": "https://www.rgbkb.net/pages/introducing-the-zygomorph-keyboard",
"maintainer": "Legonut",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x12": {
"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":7, "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":"BKSP", "x":12, "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":7, "y":1}, {"label":"U", "x":8, "y":1}, {"label":"I", "x":9, "y":1}, {"label":"O", "x":10, "y":1}, {"label":"P", "x":11, "y":1}, {"label":"\\|", "x":12, "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":7, "y":2}, {"label":"J", "x":8, "y":2}, {"label":"K", "x":9, "y":2}, {"label":"L", "x":10, "y":2}, {"label":";:", "x":11, "y":2}, {"label":"'\"", "x":12, "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":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":"Enter", "x":12, "y":3}, {"label":"Ctrl", "x":0, "y":4}, {"label":"Alt", "x":1, "y":4}, {"label":"Super", "x":2, "y":4}, {"label":"RGB", "x":3, "y":4}, {"label":"&dArr;", "x":4, "y":4}, {"x":5, "y":4}, {"x":7, "y":4}, {"label":"FN", "x":8, "y":4}, {"label":"Left", "x":9, "y":4}, {"label":"Down", "x":10, "y":4}, {"label":"Up", "x":11, "y":4}, {"label":"Right", "x":12, "y":4}]
diff --git a/keyboards/ristretto/config.h b/keyboards/ristretto/config.h
index 3d5a66fbc3..0aad014e02 100644
--- a/keyboards/ristretto/config.h
+++ b/keyboards/ristretto/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x666B // fk
-#define PRODUCT_ID 0x7273 // rs
-#define DEVICE_VER 0x0001 // rev 1
-#define MANUFACTURER fruitykeeb
-#define PRODUCT ristretto
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
diff --git a/keyboards/ristretto/info.json b/keyboards/ristretto/info.json
index de01aaea4d..a409f9339b 100644
--- a/keyboards/ristretto/info.json
+++ b/keyboards/ristretto/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ristretto",
+ "manufacturer": "fruitykeeb",
"url": "https://www.fruitykeeb.xyz/product/ristretto",
"maintainer": "Fruit",
+ "usb": {
+ "vid": "0x666B",
+ "pid": "0x7273",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/rmkeebs/rm_numpad/config.h b/keyboards/rmkeebs/rm_numpad/config.h
index e0c9ef89a6..1c3a48cba5 100644
--- a/keyboards/rmkeebs/rm_numpad/config.h
+++ b/keyboards/rmkeebs/rm_numpad/config.h
@@ -19,13 +19,6 @@ 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 0x524E /* RN (RMKeebs Numpad) */
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RMKeebs
-#define PRODUCT rm_numpad
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 5
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B4, F7, C7, C6, F1, F0 }
#define MATRIX_COL_PINS { F4, F5, F6, B5, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rmkeebs/rm_numpad/info.json b/keyboards/rmkeebs/rm_numpad/info.json
index 9ad0ebd286..9bba777661 100644
--- a/keyboards/rmkeebs/rm_numpad/info.json
+++ b/keyboards/rmkeebs/rm_numpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "rm_numpad",
+ "manufacturer": "RMKeebs",
"url": "https://www.rmkeebs.com/product/rm-numpad/",
"maintainer": "RuckerMachine",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x524E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_6x4": {
"layout": [
diff --git a/keyboards/rocketboard_16/config.h b/keyboards/rocketboard_16/config.h
index d06895f709..ab5cd2399f 100644
--- a/keyboards/rocketboard_16/config.h
+++ b/keyboards/rocketboard_16/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB034
-#define PRODUCT_ID 0xFF16
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Rocketboard
-#define PRODUCT Rocketboard-16
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
diff --git a/keyboards/rocketboard_16/info.json b/keyboards/rocketboard_16/info.json
index 1ff728bfb7..f9accb9629 100644
--- a/keyboards/rocketboard_16/info.json
+++ b/keyboards/rocketboard_16/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Rocketboard-16",
+ "manufacturer": "Rocketboard",
"url": "",
"maintainer": "fl3tching101",
+ "usb": {
+ "vid": "0xB034",
+ "pid": "0xFF16",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_default": "LAYOUT"
},
diff --git a/keyboards/rocketboard_16/keycode_lookup.c b/keyboards/rocketboard_16/keycode_lookup.c
index d967a03c31..0e6e47ba0d 100644
--- a/keyboards/rocketboard_16/keycode_lookup.c
+++ b/keyboards/rocketboard_16/keycode_lookup.c
@@ -288,7 +288,7 @@ lookup_table_t lookup_table[334] =
{"KC_LT", KC_LT},
{"KC_GT", KC_GT},
{"KC_QUES", KC_QUES},
- {"RESET", RESET},
+ {"RESET", QK_BOOT},
{"DEBUG", DEBUG},
{"MAGIC_TOGGLE_NKRO", MAGIC_TOGGLE_NKRO},
{"KC_GESC", KC_GESC},
diff --git a/keyboards/rocketboard_16/keymaps/default/keymap.c b/keyboards/rocketboard_16/keymaps/default/keymap.c
index ce26a834d0..dc83cbd62b 100644
--- a/keyboards/rocketboard_16/keymaps/default/keymap.c
+++ b/keyboards/rocketboard_16/keymaps/default/keymap.c
@@ -107,10 +107,10 @@ static void oled_write_ln_centered(const char * data, bool inverted)
char line_buf[21];
// Amount to offset string from left side
- uint8_t offset = (21 - strlen(data))/2;
+ uint8_t offset = (22 - strlen(data)) / 2;
// Formatted string centering... look, it works, don't ask how...
- snprintf(line_buf, 21, "%*s%s%*s\0", offset, "", data, offset, ""); // Centers data within 21 character buffer with null termination
+ snprintf(line_buf, 21, "%*s%s%*s", offset, "", data, offset, ""); // Centers data within 21 character buffer
oled_write_ln(line_buf, inverted);
}
diff --git a/keyboards/rocketboard_16/keymaps/via/keymap.c b/keyboards/rocketboard_16/keymaps/via/keymap.c
index ce26a834d0..08b8e65b4f 100644
--- a/keyboards/rocketboard_16/keymaps/via/keymap.c
+++ b/keyboards/rocketboard_16/keymaps/via/keymap.c
@@ -107,10 +107,10 @@ static void oled_write_ln_centered(const char * data, bool inverted)
char line_buf[21];
// Amount to offset string from left side
- uint8_t offset = (21 - strlen(data))/2;
+ uint8_t offset = (22 - strlen(data))/2;
// Formatted string centering... look, it works, don't ask how...
- snprintf(line_buf, 21, "%*s%s%*s\0", offset, "", data, offset, ""); // Centers data within 21 character buffer with null termination
+ snprintf(line_buf, 21, "%*s%s%*s", offset, "", data, offset, ""); // Centers data within 21 character buffer
oled_write_ln(line_buf, inverted);
}
diff --git a/keyboards/rominronin/katana60/rev1/config.h b/keyboards/rominronin/katana60/rev1/config.h
index fea2d7d643..97a18443a1 100644
--- a/keyboards/rominronin/katana60/rev1/config.h
+++ b/keyboards/rominronin/katana60/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7272 // "rr" - rominronin
-#define PRODUCT_ID 0x0C2C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RominRonin CandyKeys
-#define PRODUCT Katana60 rev1
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F5, F6, F4, F1, D0 }
#define MATRIX_COL_PINS { B7, B3, B2, B1, B0, C7, D1, D2, C6, B6, B5, B4, D4, D6, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/rominronin/katana60/rev1/info.json b/keyboards/rominronin/katana60/rev1/info.json
index 8ac62a68e3..1b4ec3c943 100644
--- a/keyboards/rominronin/katana60/rev1/info.json
+++ b/keyboards/rominronin/katana60/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Katana60 rev1",
+ "manufacturer": "RominRonin CandyKeys",
"url": "",
"maintainer": "rominronin",
+ "usb": {
+ "vid": "0x7272",
+ "pid": "0x0C2C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/rominronin/katana60/rev1/keymaps/colemak/keymap.c b/keyboards/rominronin/katana60/rev1/keymaps/colemak/keymap.c
index bb1752ba1b..29e9ddf825 100644
--- a/keyboards/rominronin/katana60/rev1/keymaps/colemak/keymap.c
+++ b/keyboards/rominronin/katana60/rev1/keymaps/colemak/keymap.c
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, KC_BTN1, _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______
),
[SYMB] = 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,
+ QK_BOOT, _______, KC_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_DEL,
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_VOLD, KC_VOLU, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
_______, KC_PLUS, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_MPRV, KC_MPLY, KC_MNXT, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______,
diff --git a/keyboards/rominronin/katana60/rev1/keymaps/josefadamcik/keymap.c b/keyboards/rominronin/katana60/rev1/keymaps/josefadamcik/keymap.c
index 8556ee424c..02bd23a9b4 100644
--- a/keyboards/rominronin/katana60/rev1/keymaps/josefadamcik/keymap.c
+++ b/keyboards/rominronin/katana60/rev1/keymaps/josefadamcik/keymap.c
@@ -98,21 +98,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, KC_BTN1, _______, KC_P0, KC_PDOT, _______, _______, _______, _______
),
[_SYMB] = 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,
+ QK_BOOT, _______, KC_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_DEL,
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_VOLD, KC_VOLU, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
_______, KC_PLUS, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_MPRV, KC_MPLY, KC_MNXT, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______,
_______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, _______, _______, _______
),
[_M_EXT] = LAYOUT(
- RESET ,M_COLEMAK,M_QWERTY,W_COLEMAK,W_QWERTY,_______,_______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT,M_COLEMAK,M_QWERTY,W_COLEMAK,W_QWERTY,_______,_______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, M_PRVWD, KC_UP, M_NXTWD, _______, _______,
_______, KC_LALT, KC_LCTL, KC_LSFT, _______, KC_CAPS, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, _______,
_______, M_UNDO, M_CUT, M_COPY, M_PASTE, _______, _______, _______, _______, _______, M_LSTRT, _______, M_LEND, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_W_EXT] = LAYOUT(
- RESET ,M_COLEMAK,M_QWERTY,W_COLEMAK,W_QWERTY,_______,_______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT,M_COLEMAK,M_QWERTY,W_COLEMAK,W_QWERTY,_______,_______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP, W_PRVWD, KC_UP, W_NXTWD, _______, _______,
_______, KC_LALT, KC_LCTL, KC_LSFT, _______, KC_CAPS, _______, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT,KC_DEL, _______,
_______, W_UNDO, W_CUT, W_COPY, W_PASTE, _______, _______, _______, _______, _______, W_LSTRT, _______, W_LEND, _______, _______,
diff --git a/keyboards/rominronin/katana60/rev1/keymaps/msiu/keymap.c b/keyboards/rominronin/katana60/rev1/keymaps/msiu/keymap.c
index 72b795baa5..a65a5260b5 100644
--- a/keyboards/rominronin/katana60/rev1/keymaps/msiu/keymap.c
+++ b/keyboards/rominronin/katana60/rev1/keymaps/msiu/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT
),
[_FN] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, KC_PSCR, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/rominronin/katana60/rev1/keymaps/rominronin/keymap.c b/keyboards/rominronin/katana60/rev1/keymaps/rominronin/keymap.c
index 5666dba9d5..6fa09146ed 100644
--- a/keyboards/rominronin/katana60/rev1/keymaps/rominronin/keymap.c
+++ b/keyboards/rominronin/katana60/rev1/keymaps/rominronin/keymap.c
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, KC_BTN1, _______, KC_P0, KC_PDOT, KC_PENT, _______, _______, _______
),
[SYMB] = 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,
+ QK_BOOT, _______, KC_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_DEL,
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_VOLD, KC_VOLU, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
_______, KC_PLUS, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_MPRV, KC_MPLY, KC_MNXT, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______,
diff --git a/keyboards/rominronin/katana60/rev2/config.h b/keyboards/rominronin/katana60/rev2/config.h
index 24984c8179..0671c86044 100644
--- a/keyboards/rominronin/katana60/rev2/config.h
+++ b/keyboards/rominronin/katana60/rev2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7272 // "rr" - rominronin
-#define PRODUCT_ID 0xF03B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RominRonin CandyKeys
-#define PRODUCT Katana60 rev2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, E6, D5, B4, B5 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, D6, D4, D3, D2, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rominronin/katana60/rev2/info.json b/keyboards/rominronin/katana60/rev2/info.json
index e2ac51024f..3b26ff635e 100644
--- a/keyboards/rominronin/katana60/rev2/info.json
+++ b/keyboards/rominronin/katana60/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Katana60 rev2",
+ "manufacturer": "RominRonin CandyKeys",
"url": "https://candykeys.com/product/katana60-pcb-V2",
"maintainer": "rominronin",
+ "usb": {
+ "vid": "0x7272",
+ "pid": "0xF03B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_7u_a": {
"layout": [
diff --git a/keyboards/rominronin/katana60/rev2/keymaps/rominronin_7u/keymap.c b/keyboards/rominronin/katana60/rev2/keymaps/rominronin_7u/keymap.c
index 5450892123..6919b46990 100644
--- a/keyboards/rominronin/katana60/rev2/keymaps/rominronin_7u/keymap.c
+++ b/keyboards/rominronin/katana60/rev2/keymaps/rominronin_7u/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, KC_P0, KC_PDOT, KC_PENT, _______, _______
),
[SYMB] = LAYOUT_7u_a(
- 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,
+ QK_BOOT, _______, KC_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_DEL,
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_VOLD, KC_VOLU, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
_______, KC_PLUS, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_MPRV, KC_MPLY, KC_MNXT, KC_LBRC, KC_RBRC, KC_SCLN, KC_COLN, KC_BSLS, _______,
diff --git a/keyboards/roseslite/config.h b/keyboards/roseslite/config.h
index 44f415b379..f499c29de3 100644
--- a/keyboards/roseslite/config.h
+++ b/keyboards/roseslite/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xDE17
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER DeltaDesigns
-#define PRODUCT roseslite
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/roseslite/info.json b/keyboards/roseslite/info.json
index 70db000a64..0ecc988464 100644
--- a/keyboards/roseslite/info.json
+++ b/keyboards/roseslite/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "roses lite",
+ "manufacturer": "Delta Designs",
"url": "delta-design.xyz",
"maintainer": "Reason6/Vk2fgav",
+ "usb": {
+ "vid": "0xDE17",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/rotor/config.h b/keyboards/rotor/config.h
index 9f3d8aa7d3..98cdb24a6b 100644
--- a/keyboards/rotor/config.h
+++ b/keyboards/rotor/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xE8BE
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Densus Design
-#define PRODUCT Rotor
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
diff --git a/keyboards/rotor/info.json b/keyboards/rotor/info.json
index a5c86ec4bd..455a7b3f60 100644
--- a/keyboards/rotor/info.json
+++ b/keyboards/rotor/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Rotor",
+ "manufacturer": "Densus Design",
"url": "https://klc-playground.com/",
"maintainer": "2Moons",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE8BE",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"label":"Esc", "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":8.25, "y":0}, {"label":"&", "x":9.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":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"Home", "x":17.25, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"PgUp", "x":17.25, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "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":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgDn", "x":17.25, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"End", "x":17.25, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.5}, {"x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.5}, {"label":"7u", "x":6.25, "y":4, "w":7}, {"label":"Ctrl", "x":13.25, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}]
diff --git a/keyboards/rotr/config.h b/keyboards/rotr/config.h
index b9eac7d8bc..d8cd526654 100644
--- a/keyboards/rotr/config.h
+++ b/keyboards/rotr/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x726F
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ROTR
-#define PRODUCT ROTR
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 3
@@ -24,7 +17,6 @@
/*Sets the number of pulses per increment*/
#define ENCODER_RESOLUTION 2
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rotr/info.json b/keyboards/rotr/info.json
index cf3113b496..a621150f6b 100644
--- a/keyboards/rotr/info.json
+++ b/keyboards/rotr/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "rotr",
+ "keyboard_name": "ROTR",
+ "manufacturer": "ROTR",
"url": "https://geekhack.org/index.php?topic=107104.0",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x726F",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}]
diff --git a/keyboards/rpiguy9907/southpaw66/config.h b/keyboards/rpiguy9907/southpaw66/config.h
index b5cef39a6f..13c6694b05 100644
--- a/keyboards/rpiguy9907/southpaw66/config.h
+++ b/keyboards/rpiguy9907/southpaw66/config.h
@@ -17,12 +17,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x9907 // "9907" - rpiguy9907
-#define PRODUCT_ID 0x5366 // "S" "66"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER rpiguy9907
-#define PRODUCT Southpaw66
#define TAPPING_TERM 400
@@ -34,7 +28,6 @@
#define MATRIX_ROW_PINS { D7, C6, D4, D0, D1, D2, D3 }
#define MATRIX_COL_PINS { E6, B4, B5, F4, F5, F6, F7, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/rpiguy9907/southpaw66/info.json b/keyboards/rpiguy9907/southpaw66/info.json
index ae9e1d4c67..fb8e6789da 100644
--- a/keyboards/rpiguy9907/southpaw66/info.json
+++ b/keyboards/rpiguy9907/southpaw66/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Southpaw66",
+ "manufacturer": "rpiguy9907",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x9907",
+ "pid": "0x5366",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
diff --git a/keyboards/rubi/config.h b/keyboards/rubi/config.h
index 25c7aa5be7..b4efca2997 100644
--- a/keyboards/rubi/config.h
+++ b/keyboards/rubi/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4752
-#define PRODUCT_ID 0x5242
-#define DEVICE_VER 0x0001
-#define MANUFACTURER gregorio
-#define PRODUCT Rubi
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { B3, B2, B1, F7 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { D7 }
#define ENCODERS_PAD_B { D6 }
diff --git a/keyboards/rubi/info.json b/keyboards/rubi/info.json
index 2ee76f3fdd..95d77d5204 100644
--- a/keyboards/rubi/info.json
+++ b/keyboards/rubi/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Rubi",
+ "manufacturer": "gregorio",
"url": "https://github.com/ohchiko/qmk_firmware/tree/master/keyboards/rubi",
"maintainer": "gregorio",
+ "usb": {
+ "vid": "0x4752",
+ "pid": "0x5242",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/runes/skjoldr/config.h b/keyboards/runes/skjoldr/config.h
new file mode 100644
index 0000000000..bc4d4c0fe9
--- /dev/null
+++ b/keyboards/runes/skjoldr/config.h
@@ -0,0 +1,93 @@
+/*
+Copyright 2021 Vicktor
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have 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 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 { D6, D7, B4, B5, B0 }
+#define MATRIX_COL_PINS { B7, D0, D1, D2, D3, B3, E6, D5, 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 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/runes/skjoldr/info.json b/keyboards/runes/skjoldr/info.json
new file mode 100644
index 0000000000..4ebb2a7309
--- /dev/null
+++ b/keyboards/runes/skjoldr/info.json
@@ -0,0 +1,87 @@
+{
+ "keyboard_name": "Skjöldr",
+ "manufacturer": "Runes",
+ "url": "https://www.runes.id",
+ "maintainer": "vicktorhu",
+ "usb": {
+ "vid": "0x726E",
+ "pid": "0x736B",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_60_ansi_arrow"
+ },
+ "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":"/?", "x":11.25, "y":3, "w":1.75},
+ {"label":"\u2191", "x":13, "y":3},
+ {"label":"Delete", "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":"Fn2", "x":10, "y":4},
+ {"label":"Fn1", "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/runes/skjoldr/keymaps/default/keymap.c b/keyboards/runes/skjoldr/keymaps/default/keymap.c
new file mode 100644
index 0000000000..9f40341e44
--- /dev/null
+++ b/keyboards/runes/skjoldr/keymaps/default/keymap.c
@@ -0,0 +1,59 @@
+/* Copyright 2021 Vicktor
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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,
+ _LOWER,
+ _RAISE,
+ _DOUBLE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_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, KC_SLSH, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(2), MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LOWER] = 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, QK_BOOT,
+ KC_TRNS, KC_PGUP, KC_HOME, KC_INS, KC_SCRL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_PGDN, KC_END, KC_PAUS, KC_NUM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_PSCR, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MSTP, KC_MPRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLEP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_RAISE] = LAYOUT_60_ansi_arrow(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_DOUBLE] = LAYOUT_60_ansi_arrow(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/skjoldr/keymaps/default/readme.md b/keyboards/runes/skjoldr/keymaps/default/readme.md
new file mode 100644
index 0000000000..24f28db1e9
--- /dev/null
+++ b/keyboards/runes/skjoldr/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Skjoldr \ No newline at end of file
diff --git a/keyboards/runes/skjoldr/keymaps/via/keymap.c b/keyboards/runes/skjoldr/keymaps/via/keymap.c
new file mode 100644
index 0000000000..9f40341e44
--- /dev/null
+++ b/keyboards/runes/skjoldr/keymaps/via/keymap.c
@@ -0,0 +1,59 @@
+/* Copyright 2021 Vicktor
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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,
+ _LOWER,
+ _RAISE,
+ _DOUBLE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_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, KC_SLSH, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(2), MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LOWER] = 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, QK_BOOT,
+ KC_TRNS, KC_PGUP, KC_HOME, KC_INS, KC_SCRL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_PGDN, KC_END, KC_PAUS, KC_NUM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_PSCR, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_MSTP, KC_MPRV, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SLEP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_RAISE] = LAYOUT_60_ansi_arrow(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_DOUBLE] = LAYOUT_60_ansi_arrow(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/skjoldr/keymaps/via/rules.mk b/keyboards/runes/skjoldr/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/runes/skjoldr/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/runes/skjoldr/readme.md b/keyboards/runes/skjoldr/readme.md
new file mode 100644
index 0000000000..96adf5f4ab
--- /dev/null
+++ b/keyboards/runes/skjoldr/readme.md
@@ -0,0 +1,23 @@
+# Skjöldr
+
+![Skjöldr](https://i.imgur.com/HtRqhxDh.jpg)
+
+Skjöldr [/ˈskjɒldr̩/] (Old Norse: Shield)
+
+60% keyboard with arrow keys based on atmega32u4 mcu.
+
+* Keyboard Maintainer: [Vicktor](https://github.com/vicktorhu)
+* Hardware Supported: atmega32u4
+* Hardware Availability: [Website](https://www.runes.id) -- Currently Indonesia only
+
+Reset the keyboard with **FN** + **Backspace** or by pressing the reset button on the PCB.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make runes/skjoldr:default
+
+Flashing example for this keyboard:
+
+ make runes/skjoldr: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/runes/skjoldr/rules.mk b/keyboards/runes/skjoldr/rules.mk
new file mode 100644
index 0000000000..d6dbd4a04d
--- /dev/null
+++ b/keyboards/runes/skjoldr/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 = 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
+
+LAYOUTS = 60_ansi_arrow
diff --git a/keyboards/runes/skjoldr/skjoldr.c b/keyboards/runes/skjoldr/skjoldr.c
new file mode 100644
index 0000000000..2a8f003fc4
--- /dev/null
+++ b/keyboards/runes/skjoldr/skjoldr.c
@@ -0,0 +1,17 @@
+/* Copyright 2021 Vicktor
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "skjoldr.h"
diff --git a/keyboards/runes/skjoldr/skjoldr.h b/keyboards/runes/skjoldr/skjoldr.h
new file mode 100644
index 0000000000..cdd0592a0f
--- /dev/null
+++ b/keyboards/runes/skjoldr/skjoldr.h
@@ -0,0 +1,49 @@
+/* Copyright 2021 Vicktor
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 │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 │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, K2C, \
+ 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, K2C, ___ }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, ___, K3C, K3D }, \
+ { K40, K41, K42, ___, ___, K45, ___, ___, ___, K49, K4A, K4B, K4C, K4D } \
+}
diff --git a/keyboards/runes/vaengr/config.h b/keyboards/runes/vaengr/config.h
index 67ba4ca0fe..060d6843ef 100644
--- a/keyboards/runes/vaengr/config.h
+++ b/keyboards/runes/vaengr/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x726E
-#define PRODUCT_ID 0x7661
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Runes
-#define PRODUCT VÆNGR
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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 */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/runes/vaengr/info.json b/keyboards/runes/vaengr/info.json
index 53619a7868..3c5d4e2b86 100644
--- a/keyboards/runes/vaengr/info.json
+++ b/keyboards/runes/vaengr/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Runes Vængr",
+ "keyboard_name": "VÆNGR",
+ "manufacturer": "Runes",
"url": "https://www.runes.id",
"maintainer": "Vicktor",
+ "usb": {
+ "vid": "0x726E",
+ "pid": "0x7661",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ryanbaekr/rb18/config.h b/keyboards/ryanbaekr/rb18/config.h
index 6351db6acf..1df607db43 100644
--- a/keyboards/ryanbaekr/rb18/config.h
+++ b/keyboards/ryanbaekr/rb18/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7262
-#define PRODUCT_ID 0x0018
-#define DEVICE_VER 0x0003
-#define MANUFACTURER ryanbaekr
-#define PRODUCT rb18
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B1, F7, F6, F5, F4 }
#define MATRIX_COL_PINS { B2, B6, B5, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ryanbaekr/rb18/info.json b/keyboards/ryanbaekr/rb18/info.json
index 2ad1b56b6a..ba8f2955c1 100644
--- a/keyboards/ryanbaekr/rb18/info.json
+++ b/keyboards/ryanbaekr/rb18/info.json
@@ -1,10 +1,38 @@
{
- "keyboard_name": "rb18",
- "url": "",
- "maintainer": "qmk",
+ "keyboard_name": "rb18",
+ "manufacturer": "ryanbaekr",
+ "url": "",
+ "maintainer": "ryanbaekr",
+ "usb": {
+ "vid": "0x7262",
+ "pid": "0x0018",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_numpad_5x4": {
- "layout": [{"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "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":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "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":0, "y":5.25, "w":2}, {"x":2, "y":5.25}]
+ "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":0, "y":2},
+ {"x":1, "y":2},
+ {"x":2, "y":2},
+ {"x":3, "y":1, "h":2},
+
+ {"x":0, "y":3},
+ {"x":1, "y":3},
+ {"x":2, "y":3},
+
+ {"x":0, "y":4, "w":2},
+ {"x":2, "y":4},
+ {"x":3, "y":3, "h":2}
+ ]
}
}
}
diff --git a/keyboards/ryanbaekr/rb69/config.h b/keyboards/ryanbaekr/rb69/config.h
index 0464befc5f..447d2ca05a 100644
--- a/keyboards/ryanbaekr/rb69/config.h
+++ b/keyboards/ryanbaekr/rb69/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7262
-#define PRODUCT_ID 0x0069
-#define DEVICE_VER 0x0003
-#define MANUFACTURER ryanbaekr
-#define PRODUCT rb69
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D7, C6, D4, D0, D1 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, F0, F1, B4, B5, B7, D5, C7, E6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ryanbaekr/rb69/info.json b/keyboards/ryanbaekr/rb69/info.json
index 0377479cf6..805169a526 100644
--- a/keyboards/ryanbaekr/rb69/info.json
+++ b/keyboards/ryanbaekr/rb69/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "rb69",
+ "manufacturer": "ryanbaekr",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7262",
+ "pid": "0x0069",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"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":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":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":15.25, "y":3.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":1.5}, {"x":15.25, "y":4.25}, {"x":14, "y":4.5}, {"x":0, "y":5.25, "w":1.5}, {"x":1.5, "y":5.25, "w":1.25}, {"x":2.75, "y":5.25, "w":1.25}, {"x":4, "y":5.25, "w":6.25}, {"x":10.25, "y":5.25, "w":1.25}, {"x":11.5, "y":5.25, "w":1.25}, {"x":13, "y":5.5}, {"x":14, "y":5.5}, {"x":15, "y":5.5}]
diff --git a/keyboards/ryanbaekr/rb86/config.h b/keyboards/ryanbaekr/rb86/config.h
index fd076dd706..e2541efe2b 100644
--- a/keyboards/ryanbaekr/rb86/config.h
+++ b/keyboards/ryanbaekr/rb86/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7262
-#define PRODUCT_ID 0x0086
-#define DEVICE_VER 0x0002
-#define MANUFACTURER ryanbaekr
-#define PRODUCT rb86
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, D7 }
#define MATRIX_COL_PINS { B6, B5, D5, C7, F1, F0, D3, D2, D1, D0, D4, E6, B7, C6, F4, F5, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ryanbaekr/rb86/info.json b/keyboards/ryanbaekr/rb86/info.json
index 42cf9e2aa1..05e3da7686 100644
--- a/keyboards/ryanbaekr/rb86/info.json
+++ b/keyboards/ryanbaekr/rb86/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "rb86",
+ "manufacturer": "ryanbaekr",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7262",
+ "pid": "0x0086",
+ "device_version": "0.0.2"
+ },
"layout_aliases": {
"LAYOUT_numpad_6x17": "LAYOUT"
},
diff --git a/keyboards/ryanskidmore/rskeys100/config.h b/keyboards/ryanskidmore/rskeys100/config.h
index aa3dcb3622..187834f7e3 100644
--- a/keyboards/ryanskidmore/rskeys100/config.h
+++ b/keyboards/ryanskidmore/rskeys100/config.h
@@ -5,13 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7273 // rs
-#define PRODUCT_ID 0x0064 // 100
-#define DEVICE_VER 0x0001 // rev 1
-#define MANUFACTURER ryanskidmore
-#define PRODUCT rsKeys100
-
/* Key Matrix Sizes */
#define MATRIX_ROWS 6
#define MATRIX_COLS 24
diff --git a/keyboards/ryanskidmore/rskeys100/info.json b/keyboards/ryanskidmore/rskeys100/info.json
index e87e7c50d3..ab2fbd9897 100644
--- a/keyboards/ryanskidmore/rskeys100/info.json
+++ b/keyboards/ryanskidmore/rskeys100/info.json
@@ -1,5 +1,11 @@
{
- "keyboard_name": "rskeys100",
+ "keyboard_name": "rsKeys100",
+ "manufacturer": "ryanskidmore",
+ "usb": {
+ "vid": "0x7273",
+ "pid": "0x0064",
+ "device_version": "0.0.1"
+ },
"url": "",
"maintainer": "ryanskidmore",
"layouts": {
diff --git a/keyboards/ryanskidmore/rskeys100/readme.md b/keyboards/ryanskidmore/rskeys100/readme.md
index 4be465dbde..3100e74f2d 100644
--- a/keyboards/ryanskidmore/rskeys100/readme.md
+++ b/keyboards/ryanskidmore/rskeys100/readme.md
@@ -19,4 +19,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## Bootloader
-To enter the bootloader, press the `RESET` button on your daughterboard PCB while it's plugged in. \ No newline at end of file
+To enter the bootloader, press the `QK_BOOT` button on your daughterboard PCB while it's plugged in. \ No newline at end of file
diff --git a/keyboards/ryloo_studio/m0110/config.h b/keyboards/ryloo_studio/m0110/config.h
index 754c164b6a..92a35f9fdd 100755
--- a/keyboards/ryloo_studio/m0110/config.h
+++ b/keyboards/ryloo_studio/m0110/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x614D
-#define PRODUCT_ID 0x1000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ryloo studio
-#define PRODUCT M0110
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, F7, B5, B4, D7, D6, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ryloo_studio/m0110/info.json b/keyboards/ryloo_studio/m0110/info.json
index 10917cb3ec..694fd668d0 100644
--- a/keyboards/ryloo_studio/m0110/info.json
+++ b/keyboards/ryloo_studio/m0110/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "M0110",
+ "manufacturer": "Ryloo studio",
"url": "https://drop.com/buy/ryloo-studio-hello-m0110-mechanical-keyboard-kit",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x614D",
+ "pid": "0x1000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ryloo_studio/m0110/readme.md b/keyboards/ryloo_studio/m0110/readme.md
index 78a59f0e62..8729ef6319 100755
--- a/keyboards/ryloo_studio/m0110/readme.md
+++ b/keyboards/ryloo_studio/m0110/readme.md
@@ -16,9 +16,9 @@ Flashing example for this keyboard:
Putting the Keyboard in Bootloader Mode:
-The shipped PCB did not come with a reset button. To put the PCB in bootloader mode: locate the 2 `RESET` pins in the back of the PCB and short them with a conductive wire or tweezer.
+The shipped PCB did not come with a reset button. To put the PCB in bootloader mode: locate the 2 `QK_BOOT` pins in the back of the PCB and short them with a conductive wire or tweezer.
-![Ryloo Studio M0110 PCB RESET pins location](https://i.imgur.com/QJWmpqF.jpeg)
+![Ryloo Studio M0110 PCB QK_BOOT pins location](https://i.imgur.com/QJWmpqF.jpeg)
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/s_ol/0xc_pad/readme.md b/keyboards/s_ol/0xc_pad/readme.md
index 8ca3f78d1a..b9e75b02e9 100644
--- a/keyboards/s_ol/0xc_pad/readme.md
+++ b/keyboards/s_ol/0xc_pad/readme.md
@@ -18,7 +18,7 @@ following means:
- holding down the top-left key (next to the USB port) while plugging it in
- bridging the two pads labeled `BOOT` on the back of the PCB with a metallic
object (tweezers, paperclip. wire)
-- putting the `RESET` keycode in your keymap and pressing the corresponding key
+- putting the `QK_BOOT` keycode in your keymap and pressing the corresponding key
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/saevus/cor_tkl/config.h b/keyboards/saevus/cor_tkl/config.h
new file mode 100644
index 0000000000..449f2da113
--- /dev/null
+++ b/keyboards/saevus/cor_tkl/config.h
@@ -0,0 +1,26 @@
+/*
+Copyright 2022 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"
+
+/* RGB Matrix setup */
+#define RGB_DI_PIN GP19
+#define DRIVER_LED_TOTAL 2
+#define RGBLED_NUM 2
+#define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
diff --git a/keyboards/saevus/cor_tkl/cor_tkl.c b/keyboards/saevus/cor_tkl/cor_tkl.c
new file mode 100644
index 0000000000..45cc8c0868
--- /dev/null
+++ b/keyboards/saevus/cor_tkl/cor_tkl.c
@@ -0,0 +1,44 @@
+/* Copyright 2022 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 "cor_tkl.h"
+
+led_config_t g_led_config = {{
+ // Key Matrix to LED Index
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, 1, NO_LED },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { 0, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
+}, {
+ // LED Index to Physical Position
+ { 5, 40 }, { 211, 0 }
+}, {
+ // LED Index to Flag
+ LED_FLAG_INDICATOR, LED_FLAG_INDICATOR
+}};
+
+void rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
+ if (!host_keyboard_led_state().caps_lock) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(0, 0, 0, 0);
+ }
+ if (!host_keyboard_led_state().scroll_lock) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(1, 0, 0, 0);
+ }
+
+ rgb_matrix_indicators_advanced_user(led_min, led_max);
+}
diff --git a/keyboards/saevus/cor_tkl/cor_tkl.h b/keyboards/saevus/cor_tkl/cor_tkl.h
new file mode 100644
index 0000000000..e629f7e741
--- /dev/null
+++ b/keyboards/saevus/cor_tkl/cor_tkl.h
@@ -0,0 +1,121 @@
+/* Copyright 2022 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"
+
+#define ___ KC_NO
+
+// ANSI layout
+// Full backspace
+// Full right shift
+// Full left shift
+#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, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, \
+ k40, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4f, \
+ k50, k51, k52, k57, 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, ___, ___, ___, ___ }, \
+ { k40, ___, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, ___, ___, k4f, ___ }, \
+ { k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, k5a, k5b, k5c, k5d, k5e, k5f, k5g }, \
+}
+
+// ANSI layout
+// Split backspace
+// Split right shift
+// Full left shift
+#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, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4f, \
+ k50, k51, k52, k57, 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, ___, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, ___, k4f, ___ }, \
+ { k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, k5a, k5b, k5c, k5d, k5e, k5f, k5g }, \
+}
+
+// ISO layout
+// Full backspace
+// Full right shift
+// Split left shift
+#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, k2c, k2e, k2f, k2g, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k2d, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4f, \
+ k50, k51, k52, k57, 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, ___, ___, ___, ___ }, \
+ { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, ___, ___, k4f, ___ }, \
+ { k50, k51, k52, ___, ___, ___, ___, k57, ___, ___, k5a, k5b, k5c, k5d, k5e, k5f, k5g }, \
+}
+
+// ISO layout
+// Split backspace
+// Split right shift
+// Split left shift
+#define LAYOUT_tkl_f13_iso_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, k2e, k2f, k2g, \
+ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k2d, \
+ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k4f, \
+ k50, k51, k52, k57, 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, ___, ___, ___, ___, k57, ___, ___, k5a, k5b, k5c, k5d, k5e, k5f, k5g }, \
+}
+
+// Layout for VIA
+// Split backspace
+// Split left shift
+// Split right shift
+#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, k4c, k4d, k4f, \
+ k50, k51, k52, k57, 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, ___, ___, ___, ___, k57, ___, ___, k5a, k5b, k5c, k5d, k5e, k5f, k5g } \
+}
diff --git a/keyboards/saevus/cor_tkl/info.json b/keyboards/saevus/cor_tkl/info.json
new file mode 100644
index 0000000000..5a881ce5cd
--- /dev/null
+++ b/keyboards/saevus/cor_tkl/info.json
@@ -0,0 +1,524 @@
+{
+ "keyboard_name": "Cor TKL",
+ "manufacturer": "saevus",
+ "url": "",
+ "maintainer": "ramonimbao",
+ "layout_aliases": {
+ "LAYOUT_ansi": "LAYOUT_tkl_f13_ansi",
+ "LAYOUT_iso": "LAYOUT_tkl_f13_iso"
+ },
+ "features": {
+ "bootmagic": true,
+ "mousekey": true,
+ "extrakey": true,
+ "console": false,
+ "command": false,
+ "nkro": false
+ },
+ "usb": {
+ "vid": "0x5001",
+ "pid": "0x0003",
+ "device_version": "1.0.0"
+ },
+ "diode_direction": "COL2ROW",
+ "matrix_pins": {
+ "cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP18", "GP17", "GP16", "GP15", "GP14", "GP13", "GP12", "GP11", "GP5"],
+ "rows": ["GP0", "GP1", "GP2", "GP21", "GP3", "GP4"]
+ },
+ "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}
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_split_bs_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.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":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":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_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}
+ ]
+ },
+ "LAYOUT_tkl_f13_iso_split_bs_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.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":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":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_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}
+ ]
+ }
+ }
+}
diff --git a/keyboards/saevus/cor_tkl/keymaps/default/config.h b/keyboards/saevus/cor_tkl/keymaps/default/config.h
new file mode 100644
index 0000000000..08636494e6
--- /dev/null
+++ b/keyboards/saevus/cor_tkl/keymaps/default/config.h
@@ -0,0 +1,20 @@
+/* Copyright 2022 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 RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
diff --git a/keyboards/saevus/cor_tkl/keymaps/default/keymap.c b/keyboards/saevus/cor_tkl/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3c5139dbe7
--- /dev/null
+++ b/keyboards/saevus/cor_tkl/keymaps/default/keymap.c
@@ -0,0 +1,27 @@
+/* Copyright 2022 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_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_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_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ )
+};
diff --git a/keyboards/saevus/cor_tkl/keymaps/iso/config.h b/keyboards/saevus/cor_tkl/keymaps/iso/config.h
new file mode 100644
index 0000000000..52983591bf
--- /dev/null
+++ b/keyboards/saevus/cor_tkl/keymaps/iso/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2022 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 RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
diff --git a/keyboards/saevus/cor_tkl/keymaps/iso/keymap.c b/keyboards/saevus/cor_tkl/keymaps/iso/keymap.c
new file mode 100644
index 0000000000..4bc1c41809
--- /dev/null
+++ b/keyboards/saevus/cor_tkl/keymaps/iso/keymap.c
@@ -0,0 +1,27 @@
+/* Copyright 2022 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_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_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_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ )
+};
diff --git a/keyboards/saevus/cor_tkl/keymaps/via/config.h b/keyboards/saevus/cor_tkl/keymaps/via/config.h
new file mode 100644
index 0000000000..52983591bf
--- /dev/null
+++ b/keyboards/saevus/cor_tkl/keymaps/via/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2022 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 RGBLIGHT_LAYERS
+#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
diff --git a/keyboards/saevus/cor_tkl/keymaps/via/keymap.c b/keyboards/saevus/cor_tkl/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d7e1cabc67
--- /dev/null
+++ b/keyboards/saevus/cor_tkl/keymaps/via/keymap.c
@@ -0,0 +1,51 @@
+/* Copyright 2022 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_ESC, KC_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_NO, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
diff --git a/keyboards/saevus/cor_tkl/keymaps/via/rules.mk b/keyboards/saevus/cor_tkl/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/saevus/cor_tkl/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/saevus/cor_tkl/readme.md b/keyboards/saevus/cor_tkl/readme.md
new file mode 100644
index 0000000000..c0c5ab0e91
--- /dev/null
+++ b/keyboards/saevus/cor_tkl/readme.md
@@ -0,0 +1,18 @@
+# saevus cor TKL
+
+![Cor TKL](https://i.imgur.com/RGctsaVl.png)
+
+* Keyboard Maintainer: [Ramon Imbao](https://github.com/ramonimbao)
+* Hardware Supported: RP2040
+
+Make example for this keyboard (after setting up your build environment):
+
+ make saevus/cor_tkl:via
+
+To get to the bootloader, simply press the reset button located at the back of the PCB. You can then flash new firmware onto it.
+
+Flashing example for this keyboard:
+
+ make saevus/cor_tkl:via: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/saevus/cor_tkl/rules.mk b/keyboards/saevus/cor_tkl/rules.mk
new file mode 100644
index 0000000000..e53fbb2e92
--- /dev/null
+++ b/keyboards/saevus/cor_tkl/rules.mk
@@ -0,0 +1,13 @@
+# MCU name
+MCU = RP2040
+
+# Bootloader selection
+BOOTLOADER = rp2040
+
+# RGB Matrix
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+WS2812_DRIVER = vendor
+
+LAYOUTS = tkl_f13_ansi tkl_f13_ansi_split_bs_rshift tkl_f13_iso tkl_f13_iso_split_bs_rshift
+
diff --git a/keyboards/salicylic_acid3/7skb/info.json b/keyboards/salicylic_acid3/7skb/info.json
deleted file mode 100644
index f85f32cb6d..0000000000
--- a/keyboards/salicylic_acid3/7skb/info.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
- "keyboard_name": "7skb",
- "url": "https://salicylic-acid3.hatenablog.com/",
- "maintainer": "Salicylic_acid3",
- "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":7, "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":"\\", "x":14, "y":0},
- {"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":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":"Delete", "x":14.5, "y":1, "w":1.5},
- {"label":"Control", "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":";", "x":11.75, "y":2},
- {"label":"'", "x":12.75, "y":2},
- {"label":"Enter", "x":13.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":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":"Fn", "x":15, "y":3},
- {"label":"Alt", "x":1.5, "y":4},
- {"label":"GUI", "x":2.5, "y":4, "w":1.5},
- {"x":4, "y":4, "w":1.5},
- {"x":5.5, "y":4, "w":1.25},
- {"x":7.75, "y":4, "w":1.25},
- {"x":9, "y":4, "w":2},
- {"label":"GUI", "x":11, "y":4, "w":1.5},
- {"label":"Alt", "x":12.5, "y":4}
- ]
- }
- }
-}
diff --git a/keyboards/salicylic_acid3/7skb/keymaps/default/keymap.c b/keyboards/salicylic_acid3/7skb/keymaps/default/keymap.c
index 117a129a8b..5943139720 100644
--- a/keyboards/salicylic_acid3/7skb/keymaps/default/keymap.c
+++ b/keyboards/salicylic_acid3/7skb/keymaps/default/keymap.c
@@ -81,7 +81,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
rgblight_sethsv_at( 0, 0, 0, 0);
break;
}
- rgblight_set_effect_range( 1, 4);
+ rgblight_set_effect_range( 1, 11);
#endif
return state;
}
diff --git a/keyboards/salicylic_acid3/7skb/keymaps/salicylic/keymap.c b/keyboards/salicylic_acid3/7skb/keymaps/salicylic/keymap.c
index 4e1f2acd05..b63cdff3cc 100644
--- a/keyboards/salicylic_acid3/7skb/keymaps/salicylic/keymap.c
+++ b/keyboards/salicylic_acid3/7skb/keymaps/salicylic/keymap.c
@@ -32,8 +32,8 @@ enum tapdances{
};
qk_tap_dance_action_t tap_dance_actions[] = {
- [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
- [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+ [TD_ESFL] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _QWERTY),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -109,7 +109,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX
[_ADJUST] = LAYOUT( /* Base */
//,-----------------------------------------------------| |--------------------------------------------------------------------------------.
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------|
@@ -117,7 +117,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
- XXXXXXX, XXXXXXX, _______, RESET, RESET, _______, KC_STOP, XXXXXXX
+ XXXXXXX, XXXXXXX, _______, QK_BOOT, QK_BOOT, _______, KC_STOP, XXXXXXX
//`---------------------------------------------| |--------------------------------------------'
)
};
@@ -147,7 +147,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
rgblight_sethsv_at( 0, 0, 0, 0);
break;
}
- rgblight_set_effect_range( 1, 5);
+ rgblight_set_effect_range( 1, 11);
#endif
return state;
}
diff --git a/keyboards/salicylic_acid3/7skb/keymaps/via/keymap.c b/keyboards/salicylic_acid3/7skb/keymaps/via/keymap.c
index b294666966..5ce939f97d 100644
--- a/keyboards/salicylic_acid3/7skb/keymaps/via/keymap.c
+++ b/keyboards/salicylic_acid3/7skb/keymaps/via/keymap.c
@@ -86,7 +86,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
rgblight_sethsv_at( 0, 0, 0, 0);
break;
}
- rgblight_set_effect_range( 1, 5);
+ rgblight_set_effect_range( 1, 11);
#endif
return state;
}
diff --git a/keyboards/salicylic_acid3/7skb/rev1/config.h b/keyboards/salicylic_acid3/7skb/rev1/config.h
index a74cd25c29..e6cddb0a5b 100644
--- a/keyboards/salicylic_acid3/7skb/rev1/config.h
+++ b/keyboards/salicylic_acid3/7skb/rev1/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEB5F
-#define DEVICE_VER 0x0007
-#define MANUFACTURER Salicylic_Acid
-#define PRODUCT 7skb
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
diff --git a/keyboards/salicylic_acid3/7skb/rev1/info.json b/keyboards/salicylic_acid3/7skb/rev1/info.json
new file mode 100644
index 0000000000..7bd508ed7f
--- /dev/null
+++ b/keyboards/salicylic_acid3/7skb/rev1/info.json
@@ -0,0 +1,80 @@
+{
+ "keyboard_name": "7skb",
+ "manufacturer": "Salicylic_Acid",
+ "url": "https://salicylic-acid3.hatenablog.com/",
+ "maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEB5F",
+ "device_version": "0.0.7"
+ },
+ "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":7, "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":"\\", "x":14, "y":0},
+ {"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":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":"Delete", "x":14.5, "y":1, "w":1.5},
+ {"label":"Control", "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":";", "x":11.75, "y":2},
+ {"label":"'", "x":12.75, "y":2},
+ {"label":"Enter", "x":13.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":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":"Fn", "x":15, "y":3},
+ {"label":"Alt", "x":1.5, "y":4},
+ {"label":"GUI", "x":2.5, "y":4, "w":1.5},
+ {"x":4, "y":4, "w":1.5},
+ {"x":5.5, "y":4, "w":1.25},
+ {"x":7.75, "y":4, "w":1.25},
+ {"x":9, "y":4, "w":2},
+ {"label":"GUI", "x":11, "y":4, "w":1.5},
+ {"label":"Alt", "x":12.5, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/salicylic_acid3/7skb/rules.mk b/keyboards/salicylic_acid3/7skb/rules.mk
index 3ae2e899ca..dc0a7dfb49 100644
--- a/keyboards/salicylic_acid3/7skb/rules.mk
+++ b/keyboards/salicylic_acid3/7skb/rules.mk
@@ -8,7 +8,7 @@ BOOTLOADER = caterina
# change yes to no to disable
#
BOOTMAGIC_ENABLE = no # 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 = yes # Commands for debug and configuration
diff --git a/keyboards/salicylic_acid3/7splus/config.h b/keyboards/salicylic_acid3/7splus/config.h
index 8f3e32a52f..4bb41abe19 100644
--- a/keyboards/salicylic_acid3/7splus/config.h
+++ b/keyboards/salicylic_acid3/7splus/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEAE7
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Salicylic_Acid
-#define PRODUCT 7splus
-
/* key matrix size */
#define MATRIX_ROWS 14
#define MATRIX_COLS 8
diff --git a/keyboards/salicylic_acid3/7splus/info.json b/keyboards/salicylic_acid3/7splus/info.json
index a87909c07b..aa70fe150a 100644
--- a/keyboards/salicylic_acid3/7splus/info.json
+++ b/keyboards/salicylic_acid3/7splus/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "7splus",
+ "manufacturer": "Salicylic_Acid",
"url": "https://salicylic-acid3.hatenablog.com/",
"maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEAE7",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/salicylic_acid3/7splus/keymaps/salicylic/keymap.c b/keyboards/salicylic_acid3/7splus/keymaps/salicylic/keymap.c
index 06d7972a2e..bea5978c50 100644
--- a/keyboards/salicylic_acid3/7splus/keymaps/salicylic/keymap.c
+++ b/keyboards/salicylic_acid3/7splus/keymaps/salicylic/keymap.c
@@ -39,8 +39,8 @@ enum tapdances{
};
qk_tap_dance_action_t tap_dance_actions[] = {
- [TD_ESMS] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _MOUSE),
- [TD_ESAR] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+ [TD_ESMS] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _MOUSE),
+ [TD_ESAR] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _QWERTY),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
diff --git a/keyboards/salicylic_acid3/ajisai74/config.h b/keyboards/salicylic_acid3/ajisai74/config.h
index e7a1555aea..cb886509ab 100644
--- a/keyboards/salicylic_acid3/ajisai74/config.h
+++ b/keyboards/salicylic_acid3/ajisai74/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEB54
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Salicylic_Acid
-#define PRODUCT ajisai74
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 9
diff --git a/keyboards/salicylic_acid3/ajisai74/info.json b/keyboards/salicylic_acid3/ajisai74/info.json
index 6bf2d7af49..c0e5c2b5c0 100644
--- a/keyboards/salicylic_acid3/ajisai74/info.json
+++ b/keyboards/salicylic_acid3/ajisai74/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ajisai74",
+ "manufacturer": "Salicylic_Acid",
"url": "https://salicylic-acid3.hatenablog.com/",
"maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEB54",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/salicylic_acid3/ergoarrows/config.h b/keyboards/salicylic_acid3/ergoarrows/config.h
index ae13e20014..ff2bb2d47c 100644
--- a/keyboards/salicylic_acid3/ergoarrows/config.h
+++ b/keyboards/salicylic_acid3/ergoarrows/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEA54
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Salicylic_Acid
-#define PRODUCT ergoarrows
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 7
diff --git a/keyboards/salicylic_acid3/ergoarrows/info.json b/keyboards/salicylic_acid3/ergoarrows/info.json
index a625476e79..2c741c21e9 100644
--- a/keyboards/salicylic_acid3/ergoarrows/info.json
+++ b/keyboards/salicylic_acid3/ergoarrows/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ergoarrows",
+ "manufacturer": "Salicylic_Acid",
"url": "https://salicylic-acid3.hatenablog.com/",
"maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEA54",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/salicylic_acid3/ergoarrows/keymaps/salicylic/keymap.c b/keyboards/salicylic_acid3/ergoarrows/keymaps/salicylic/keymap.c
index 8f2c4151f8..dd2cad91d9 100644
--- a/keyboards/salicylic_acid3/ergoarrows/keymaps/salicylic/keymap.c
+++ b/keyboards/salicylic_acid3/ergoarrows/keymaps/salicylic/keymap.c
@@ -88,7 +88,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, XXXXXXX
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, RESET, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+-----------------| |--------+--------+--------+--------+--------+--------+--------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
//|--------------------------------------------------------------| |--------------------------------------------------------------'
diff --git a/keyboards/salicylic_acid3/getta25/info.json b/keyboards/salicylic_acid3/getta25/info.json
deleted file mode 100644
index 980b5142db..0000000000
--- a/keyboards/salicylic_acid3/getta25/info.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "keyboard_name": "Getta25",
- "url": "https://salicylic-acid3.hatenablog.com/",
- "maintainer": "Salicylic_acid3",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"label":"ESC", "x":0, "y":0},
- {"label":"F2", "x":1, "y":0},
- {"label":"=", "x":2, "y":0},
- {"label":"DEL", "x":3, "y":0},
- {"label":"Num Lock", "x":0, "y":1.25},
- {"label":"/", "x":1, "y":1.25},
- {"label":"*", "x":2, "y":1.25},
- {"label":"-", "x":3, "y":1.25},
- {"label":"7", "x":0, "y":2.25},
- {"label":"8", "x":1, "y":2.25},
- {"label":"9", "x":2, "y":2.25},
- {"label":"ESC", "x":4.25, "y":2.25},
- {"label":"4", "x":0, "y":3.25},
- {"label":"5", "x":1, "y":3.25},
- {"label":"6", "x":2, "y":3.25},
- {"label":"+", "x":3, "y":2.25, "h":2},
- {"label":"F2", "x":4.25, "y":3.25},
- {"label":"1", "x":0, "y":4.25},
- {"label":"2", "x":1, "y":4.25},
- {"label":"3", "x":2, "y":4.25},
- {"label":"DEL", "x":4.25, "y":4.25},
- {"label":"0", "x":0, "y":5.25, "w":2},
- {"label":".", "x":2, "y":5.25},
- {"label":"Enter", "x":3, "y":4.25, "h":2},
- {"label":"BSPC", "x":4.25, "y":5.25}
- ]
- }
- }
-}
diff --git a/keyboards/salicylic_acid3/getta25/rev1/config.h b/keyboards/salicylic_acid3/getta25/rev1/config.h
index 740a9f3fbd..a039848af9 100644
--- a/keyboards/salicylic_acid3/getta25/rev1/config.h
+++ b/keyboards/salicylic_acid3/getta25/rev1/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3060
-#define DEVICE_VER 0x0013
-#define MANUFACTURER Salicylic_Acid
-#define PRODUCT getta25
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 6
diff --git a/keyboards/salicylic_acid3/getta25/rev1/info.json b/keyboards/salicylic_acid3/getta25/rev1/info.json
new file mode 100644
index 0000000000..23354552ea
--- /dev/null
+++ b/keyboards/salicylic_acid3/getta25/rev1/info.json
@@ -0,0 +1,42 @@
+{
+ "keyboard_name": "getta25",
+ "manufacturer": "Salicylic_Acid",
+ "url": "https://salicylic-acid3.hatenablog.com/",
+ "maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.1.3"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"ESC", "x":0, "y":0},
+ {"label":"F2", "x":1, "y":0},
+ {"label":"=", "x":2, "y":0},
+ {"label":"DEL", "x":3, "y":0},
+ {"label":"Num Lock", "x":0, "y":1.25},
+ {"label":"/", "x":1, "y":1.25},
+ {"label":"*", "x":2, "y":1.25},
+ {"label":"-", "x":3, "y":1.25},
+ {"label":"7", "x":0, "y":2.25},
+ {"label":"8", "x":1, "y":2.25},
+ {"label":"9", "x":2, "y":2.25},
+ {"label":"ESC", "x":4.25, "y":2.25},
+ {"label":"4", "x":0, "y":3.25},
+ {"label":"5", "x":1, "y":3.25},
+ {"label":"6", "x":2, "y":3.25},
+ {"label":"+", "x":3, "y":2.25, "h":2},
+ {"label":"F2", "x":4.25, "y":3.25},
+ {"label":"1", "x":0, "y":4.25},
+ {"label":"2", "x":1, "y":4.25},
+ {"label":"3", "x":2, "y":4.25},
+ {"label":"DEL", "x":4.25, "y":4.25},
+ {"label":"0", "x":0, "y":5.25, "w":2},
+ {"label":".", "x":2, "y":5.25},
+ {"label":"Enter", "x":3, "y":4.25, "h":2},
+ {"label":"BSPC", "x":4.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/salicylic_acid3/jisplit89/info.json b/keyboards/salicylic_acid3/jisplit89/info.json
deleted file mode 100644
index 4f138a5262..0000000000
--- a/keyboards/salicylic_acid3/jisplit89/info.json
+++ /dev/null
@@ -1,100 +0,0 @@
-{
- "keyboard_name": "jisplit89",
- "url": "https://salicylic-acid3.hatenablog.com/",
- "maintainer": "Salicylic_acid3",
- "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":7.5, "y":0},
- {"label":"F7", "x":8.5, "y":0},
- {"label":"F8", "x":9.5, "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":13.75, "y":0},
- {"label":"Insert", "x":15, "y":0},
- {"label":"Print Screen", "x":16, "y":0},
- {"label":"Hankaku/Zenkaku", "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":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":"~", "x":13, "y":1.25},
- {"label":"|", "x":14, "y":1.25},
- {"label":"Back", "x":15, "y":1.25},
- {"label":"Del", "x":16, "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":7.5, "y":2.25},
- {"label":"U", "x":8.5, "y":2.25},
- {"label":"I", "x":9.5, "y":2.25},
- {"label":"O", "x":10.5, "y":2.25},
- {"label":"P", "x":11.5, "y":2.25},
- {"label":"`", "x":12.5, "y":2.25},
- {"label":"{", "x":13.5, "y":2.25},
- {"label":"Return", "x":14.75, "y":2.25, "w":1.25, "h":2},
- {"label":"Home", "x":16, "y":2.25},
- {"label":"Caps", "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":7.75, "y":3.25},
- {"label":"J", "x":8.75, "y":3.25},
- {"label":"K", "x":9.75, "y":3.25},
- {"label":"L", "x":10.75, "y":3.25},
- {"label":"+", "x":11.75, "y":3.25},
- {"label":"*", "x":12.75, "y":3.25},
- {"label":"}", "x":13.75, "y":3.25},
- {"label":"End", "x":16, "y":3.25},
- {"label":"Shift", "x":0, "y":4.25, "w":2},
- {"label":"Z", "x":2, "y":4.25},
- {"label":"X", "x":3, "y":4.25},
- {"label":"C", "x":4, "y":4.25},
- {"label":"V", "x":5, "y":4.25},
- {"label":"B", "x":6, "y":4.25},
- {"label":"N", "x":8, "y":4.25},
- {"label":"M", "x":9, "y":4.25},
- {"label":"<", "x":10, "y":4.25},
- {"label":">", "x":11, "y":4.25},
- {"label":"?", "x":12, "y":4.25},
- {"label":"_", "x":13, "y":4.25},
- {"label":"PgDwn", "x":14, "y":4.25},
- {"label":"Up", "x":15, "y":4.25},
- {"label":"PgUp", "x":16, "y":4.25},
- {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
- {"label":"Win", "x":1.25, "y":5.25},
- {"label":"Alt", "x":2.25, "y":5.25, "w":1.25},
- {"label":"Muhenkan", "x":3.5, "y":5.25},
- {"label":"Alt", "x":4.5, "y":5.25, "w":1.25},
- {"label":"1", "x":5.75, "y":5.25},
- {"label":"2", "x":7.75, "y":5.25},
- {"label":"Ctrl", "x":8.75, "y":5.25, "w":1.25},
- {"label":"Henkan", "x":10, "y":5.25, "w":1.25},
- {"label":"Kana", "x":11.25, "y":5.25, "w":1.25},
- {"label":"App", "x":12.5, "y":5.25},
- {"label":"Left", "x":14, "y":5.25},
- {"label":"Down", "x":15, "y":5.25},
- {"label":"Right", "x":16, "y":5.25}
- ]
- }
- }
-}
diff --git a/keyboards/salicylic_acid3/jisplit89/keymaps/salicylic/keymap.c b/keyboards/salicylic_acid3/jisplit89/keymaps/salicylic/keymap.c
index 4e8addf6b7..eba01d4d65 100644
--- a/keyboards/salicylic_acid3/jisplit89/keymaps/salicylic/keymap.c
+++ b/keyboards/salicylic_acid3/jisplit89/keymaps/salicylic/keymap.c
@@ -39,8 +39,8 @@ enum tapdances{
};
qk_tap_dance_action_t tap_dance_actions[] = {
- [TD_ESMS] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _MOUSE),
- [TD_ESAR] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+ [TD_ESMS] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _MOUSE),
+ [TD_ESAR] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _QWERTY),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
diff --git a/keyboards/salicylic_acid3/jisplit89/rev1/config.h b/keyboards/salicylic_acid3/jisplit89/rev1/config.h
index ee5f2ca0bc..9b30c9a242 100644
--- a/keyboards/salicylic_acid3/jisplit89/rev1/config.h
+++ b/keyboards/salicylic_acid3/jisplit89/rev1/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEB4F
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Salicylic_Acid
-#define PRODUCT jisplit89
-
/* key matrix size */
#define MATRIX_ROWS 14
#define MATRIX_COLS 8
diff --git a/keyboards/salicylic_acid3/jisplit89/rev1/info.json b/keyboards/salicylic_acid3/jisplit89/rev1/info.json
new file mode 100644
index 0000000000..1279d2475e
--- /dev/null
+++ b/keyboards/salicylic_acid3/jisplit89/rev1/info.json
@@ -0,0 +1,106 @@
+{
+ "keyboard_name": "jisplit89",
+ "manufacturer": "Salicylic_Acid",
+ "url": "https://salicylic-acid3.hatenablog.com/",
+ "maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEB4F",
+ "device_version": "0.0.1"
+ },
+ "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":7.5, "y":0},
+ {"label":"F7", "x":8.5, "y":0},
+ {"label":"F8", "x":9.5, "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":13.75, "y":0},
+ {"label":"Insert", "x":15, "y":0},
+ {"label":"Print Screen", "x":16, "y":0},
+ {"label":"Hankaku/Zenkaku", "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":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":"~", "x":13, "y":1.25},
+ {"label":"|", "x":14, "y":1.25},
+ {"label":"Back", "x":15, "y":1.25},
+ {"label":"Del", "x":16, "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":7.5, "y":2.25},
+ {"label":"U", "x":8.5, "y":2.25},
+ {"label":"I", "x":9.5, "y":2.25},
+ {"label":"O", "x":10.5, "y":2.25},
+ {"label":"P", "x":11.5, "y":2.25},
+ {"label":"`", "x":12.5, "y":2.25},
+ {"label":"{", "x":13.5, "y":2.25},
+ {"label":"Return", "x":14.75, "y":2.25, "w":1.25, "h":2},
+ {"label":"Home", "x":16, "y":2.25},
+ {"label":"Caps", "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":7.75, "y":3.25},
+ {"label":"J", "x":8.75, "y":3.25},
+ {"label":"K", "x":9.75, "y":3.25},
+ {"label":"L", "x":10.75, "y":3.25},
+ {"label":"+", "x":11.75, "y":3.25},
+ {"label":"*", "x":12.75, "y":3.25},
+ {"label":"}", "x":13.75, "y":3.25},
+ {"label":"End", "x":16, "y":3.25},
+ {"label":"Shift", "x":0, "y":4.25, "w":2},
+ {"label":"Z", "x":2, "y":4.25},
+ {"label":"X", "x":3, "y":4.25},
+ {"label":"C", "x":4, "y":4.25},
+ {"label":"V", "x":5, "y":4.25},
+ {"label":"B", "x":6, "y":4.25},
+ {"label":"N", "x":8, "y":4.25},
+ {"label":"M", "x":9, "y":4.25},
+ {"label":"<", "x":10, "y":4.25},
+ {"label":">", "x":11, "y":4.25},
+ {"label":"?", "x":12, "y":4.25},
+ {"label":"_", "x":13, "y":4.25},
+ {"label":"PgDwn", "x":14, "y":4.25},
+ {"label":"Up", "x":15, "y":4.25},
+ {"label":"PgUp", "x":16, "y":4.25},
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25},
+ {"label":"Alt", "x":2.25, "y":5.25, "w":1.25},
+ {"label":"Muhenkan", "x":3.5, "y":5.25},
+ {"label":"Alt", "x":4.5, "y":5.25, "w":1.25},
+ {"label":"1", "x":5.75, "y":5.25},
+ {"label":"2", "x":7.75, "y":5.25},
+ {"label":"Ctrl", "x":8.75, "y":5.25, "w":1.25},
+ {"label":"Henkan", "x":10, "y":5.25, "w":1.25},
+ {"label":"Kana", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"App", "x":12.5, "y":5.25},
+ {"label":"Left", "x":14, "y":5.25},
+ {"label":"Down", "x":15, "y":5.25},
+ {"label":"Right", "x":16, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/salicylic_acid3/nafuda/config.h b/keyboards/salicylic_acid3/nafuda/config.h
index 22e17c6cc7..d6f57e9d7b 100644
--- a/keyboards/salicylic_acid3/nafuda/config.h
+++ b/keyboards/salicylic_acid3/nafuda/config.h
@@ -20,13 +20,6 @@ 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 0x3060
-#define DEVICE_VER 0x0012
-#define MANUFACTURER Salicylic_Acid
-#define PRODUCT nafuda
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
diff --git a/keyboards/salicylic_acid3/nafuda/info.json b/keyboards/salicylic_acid3/nafuda/info.json
index d418341d19..822ee9e0a1 100644
--- a/keyboards/salicylic_acid3/nafuda/info.json
+++ b/keyboards/salicylic_acid3/nafuda/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "nafuda",
+ "manufacturer": "Salicylic_Acid",
"url": "https://salicylic-acid3.hatenablog.com/",
"maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.1.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/salicylic_acid3/naked48/info.json b/keyboards/salicylic_acid3/naked48/info.json
deleted file mode 100644
index 8186a6ba5b..0000000000
--- a/keyboards/salicylic_acid3/naked48/info.json
+++ /dev/null
@@ -1,249 +0,0 @@
-{
- "keyboard_name": "Naked48",
- "url": "https://salicylic-acid3.hatenablog.com/",
- "maintainer": "Salicylic_acid3",
- "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":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":"Back Space",
- "x":13,
- "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":8,
- "y":1
- },
- {
- "label":"J",
- "x":9,
- "y":1
- },
- {
- "label":"K",
- "x":10,
- "y":1
- },
- {
- "label":"L",
- "x":11,
- "y":1
- },
- {
- "label":";",
- "x":12,
- "y":1
- },
- {
- "label":"'",
- "x":13,
- "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":8,
- "y":2
- },
- {
- "label":"M",
- "x":9,
- "y":2
- },
- {
- "label":",",
- "x":10,
- "y":2
- },
- {
- "label":".",
- "x":11,
- "y":2
- },
- {
- "label":"/",
- "x":12,
- "y":2
- },
- {
- "label":"Enter",
- "x":13,
- "y":2
- },
- {
- "label":"Adjust",
- "x":1,
- "y":3
- },
- {
- "label":"Ctrl",
- "x":2,
- "y":3
- },
- {
- "label":"Alt",
- "x":3,
- "y":3
- },
- {
- "label":"GUI",
- "x":4,
- "y":3
- },
- {
- "label":"&dArr;",
- "x":5,
- "y":3
- },
- {
- "x":6,
- "y":3
- },
- {
- "x":7,
- "y":3
- },
- {
- "label":"&uArr;",
- "x":8,
- "y":3
- },
- {
- "label":"&larr;",
- "x":9,
- "y":3
- },
- {
- "label":"&darr;",
- "x":10,
- "y":3
- },
- {
- "label":"&uarr;",
- "x":11,
- "y":3
- },
- {
- "label":"&rarr;",
- "x":12,
- "y":3
- }
- ]
- }
- }
-}
diff --git a/keyboards/salicylic_acid3/naked48/keymaps/salicylic/keymap.c b/keyboards/salicylic_acid3/naked48/keymaps/salicylic/keymap.c
index 3807d9b6f3..249a5659f5 100644
--- a/keyboards/salicylic_acid3/naked48/keymaps/salicylic/keymap.c
+++ b/keyboards/salicylic_acid3/naked48/keymaps/salicylic/keymap.c
@@ -73,7 +73,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XX
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
)
};
diff --git a/keyboards/salicylic_acid3/naked48/keymaps/salicylic_with_nafuda/keymap.c b/keyboards/salicylic_acid3/naked48/keymaps/salicylic_with_nafuda/keymap.c
index d2abe704c6..86eca6b9f6 100644
--- a/keyboards/salicylic_acid3/naked48/keymaps/salicylic_with_nafuda/keymap.c
+++ b/keyboards/salicylic_acid3/naked48/keymaps/salicylic_with_nafuda/keymap.c
@@ -96,7 +96,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XX
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------+--------+--------|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_MOD, RGB_TOG, RGB_SAI,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |--------------------------|
- _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
)
};
diff --git a/keyboards/salicylic_acid3/naked48/keymaps/salicylic_with_setta21/keymap.c b/keyboards/salicylic_acid3/naked48/keymaps/salicylic_with_setta21/keymap.c
index d22f9ecb2f..1f58511c89 100644
--- a/keyboards/salicylic_acid3/naked48/keymaps/salicylic_with_setta21/keymap.c
+++ b/keyboards/salicylic_acid3/naked48/keymaps/salicylic_with_setta21/keymap.c
@@ -75,7 +75,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XX
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |-------+-------+-------+-------+-------+-------|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
- _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______, RGB_MOD, RGB_TOG,_______,_______
+ _______, _______, _______, _______, _______, QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______, RGB_MOD, RGB_TOG,_______,_______
//`------------------------------------------------------------------------------------------------------------' |-----------------------------------------------|
)
};
diff --git a/keyboards/salicylic_acid3/naked48/keymaps/scheiklp/keymap.c b/keyboards/salicylic_acid3/naked48/keymaps/scheiklp/keymap.c
index d8549e0e8b..cff7873804 100644
--- a/keyboards/salicylic_acid3/naked48/keymaps/scheiklp/keymap.c
+++ b/keyboards/salicylic_acid3/naked48/keymaps/scheiklp/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_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_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, QK_BOOT,
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
diff --git a/keyboards/salicylic_acid3/naked48/keymaps/via_rgb_matrix/keymap.c b/keyboards/salicylic_acid3/naked48/keymaps/via_rgb_matrix/keymap.c
index 8d0c6f901b..0c663e1b4d 100644
--- a/keyboards/salicylic_acid3/naked48/keymaps/via_rgb_matrix/keymap.c
+++ b/keyboards/salicylic_acid3/naked48/keymaps/via_rgb_matrix/keymap.c
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
)
};
diff --git a/keyboards/salicylic_acid3/naked48/rev1/config.h b/keyboards/salicylic_acid3/naked48/rev1/config.h
index faeb719019..2cc4a46674 100644
--- a/keyboards/salicylic_acid3/naked48/rev1/config.h
+++ b/keyboards/salicylic_acid3/naked48/rev1/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xE8BA
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Salicylic_Acid
-#define PRODUCT naked48
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 12
diff --git a/keyboards/salicylic_acid3/naked48/rev1/info.json b/keyboards/salicylic_acid3/naked48/rev1/info.json
new file mode 100644
index 0000000000..fd4639c5cc
--- /dev/null
+++ b/keyboards/salicylic_acid3/naked48/rev1/info.json
@@ -0,0 +1,255 @@
+{
+ "keyboard_name": "naked48",
+ "manufacturer": "Salicylic_Acid",
+ "url": "https://salicylic-acid3.hatenablog.com/",
+ "maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE8BA",
+ "device_version": "0.0.1"
+ },
+ "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":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":"Back Space",
+ "x":13,
+ "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":8,
+ "y":1
+ },
+ {
+ "label":"J",
+ "x":9,
+ "y":1
+ },
+ {
+ "label":"K",
+ "x":10,
+ "y":1
+ },
+ {
+ "label":"L",
+ "x":11,
+ "y":1
+ },
+ {
+ "label":";",
+ "x":12,
+ "y":1
+ },
+ {
+ "label":"'",
+ "x":13,
+ "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":8,
+ "y":2
+ },
+ {
+ "label":"M",
+ "x":9,
+ "y":2
+ },
+ {
+ "label":",",
+ "x":10,
+ "y":2
+ },
+ {
+ "label":".",
+ "x":11,
+ "y":2
+ },
+ {
+ "label":"/",
+ "x":12,
+ "y":2
+ },
+ {
+ "label":"Enter",
+ "x":13,
+ "y":2
+ },
+ {
+ "label":"Adjust",
+ "x":1,
+ "y":3
+ },
+ {
+ "label":"Ctrl",
+ "x":2,
+ "y":3
+ },
+ {
+ "label":"Alt",
+ "x":3,
+ "y":3
+ },
+ {
+ "label":"GUI",
+ "x":4,
+ "y":3
+ },
+ {
+ "label":"&dArr;",
+ "x":5,
+ "y":3
+ },
+ {
+ "x":6,
+ "y":3
+ },
+ {
+ "x":7,
+ "y":3
+ },
+ {
+ "label":"&uArr;",
+ "x":8,
+ "y":3
+ },
+ {
+ "label":"&larr;",
+ "x":9,
+ "y":3
+ },
+ {
+ "label":"&darr;",
+ "x":10,
+ "y":3
+ },
+ {
+ "label":"&uarr;",
+ "x":11,
+ "y":3
+ },
+ {
+ "label":"&rarr;",
+ "x":12,
+ "y":3
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/salicylic_acid3/naked60/info.json b/keyboards/salicylic_acid3/naked60/info.json
deleted file mode 100644
index 8ec020ae72..0000000000
--- a/keyboards/salicylic_acid3/naked60/info.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "keyboard_name": "Naked60",
- "url": "https://salicylic-acid3.hatenablog.com/",
- "maintainer": "Salicylic_acid3",
- "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":8, "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":"Back Space", "x":13, "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":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":"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":8, "y":2},
- {"label":"J", "x":9, "y":2},
- {"label":"K", "x":10, "y":2},
- {"label":"L", "x":11, "y":2},
- {"label":";", "x":12, "y":2},
- {"label":"'", "x":13, "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":8, "y":3},
- {"label":"M", "x":9, "y":3},
- {"label":",", "x":10, "y":3},
- {"label":".", "x":11, "y":3},
- {"label":"/", "x":12, "y":3},
- {"label":"Enter", "x":13, "y":3},
- {"label":"Adjust", "x":1, "y":4},
- {"label":"Ctrl", "x":2, "y":4},
- {"label":"Alt", "x":3, "y":4},
- {"label":"GUI", "x":4, "y":4},
- {"label":"&dArr;", "x":5, "y":4},
- {"x":6, "y":4},
- {"x":7, "y":4},
- {"label":"&uArr;", "x":8, "y":4},
- {"label":"&larr;", "x":9, "y":4},
- {"label":"&darr;", "x":10, "y":4},
- {"label":"&uarr;", "x":11, "y":4},
- {"label":"&rarr;", "x":12, "y":4}
- ]
- }
- }
-}
diff --git a/keyboards/salicylic_acid3/naked60/keymaps/333fred/keymap.c b/keyboards/salicylic_acid3/naked60/keymaps/333fred/keymap.c
index 7185ec78b7..83a6154fb1 100644
--- a/keyboards/salicylic_acid3/naked60/keymaps/333fred/keymap.c
+++ b/keyboards/salicylic_acid3/naked60/keymaps/333fred/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[VIM] = LAYOUT( /* Base */
//,-----------------------------------------------------| |-----------------------------------------------------.
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
_______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/salicylic_acid3/naked60/keymaps/salicylic/keymap.c b/keyboards/salicylic_acid3/naked60/keymaps/salicylic/keymap.c
index 8a2dbf051f..2466833b2a 100644
--- a/keyboards/salicylic_acid3/naked60/keymaps/salicylic/keymap.c
+++ b/keyboards/salicylic_acid3/naked60/keymaps/salicylic/keymap.c
@@ -23,8 +23,8 @@ enum tapdances{
};
qk_tap_dance_action_t tap_dance_actions[] = {
- [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
- [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+ [TD_ESFL] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _QWERTY),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -97,7 +97,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XX
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL),
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
)
};
diff --git a/keyboards/salicylic_acid3/naked60/keymaps/salicylic_with_nafuda/keymap.c b/keyboards/salicylic_acid3/naked60/keymaps/salicylic_with_nafuda/keymap.c
index 4201d79a2e..1ab1e9a150 100644
--- a/keyboards/salicylic_acid3/naked60/keymaps/salicylic_with_nafuda/keymap.c
+++ b/keyboards/salicylic_acid3/naked60/keymaps/salicylic_with_nafuda/keymap.c
@@ -34,8 +34,8 @@ enum tapdances{
};
qk_tap_dance_action_t tap_dance_actions[] = {
- [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
- [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+ [TD_ESFL] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _QWERTY),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -133,7 +133,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XX
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |--------------------------|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL),
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
)
};
diff --git a/keyboards/salicylic_acid3/naked60/keymaps/salicylic_with_setta21/keymap.c b/keyboards/salicylic_acid3/naked60/keymaps/salicylic_with_setta21/keymap.c
index 23786da915..a1f3379364 100644
--- a/keyboards/salicylic_acid3/naked60/keymaps/salicylic_with_setta21/keymap.c
+++ b/keyboards/salicylic_acid3/naked60/keymaps/salicylic_with_setta21/keymap.c
@@ -32,8 +32,8 @@ enum tapdances{
};
qk_tap_dance_action_t tap_dance_actions[] = {
- [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
- [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+ [TD_ESFL] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _QWERTY),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -103,7 +103,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XX
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------| |---------------+---------------+-------+-------|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), RGB_MOD, RGB_TOG,_______,_______,
//|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------| |-----------------------------------------------|
- _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, _______
+ _______, _______, _______, _______, _______, QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______
//`------------------------------------------------------------------------------------------------------------'
)
};
diff --git a/keyboards/salicylic_acid3/naked60/rev1/config.h b/keyboards/salicylic_acid3/naked60/rev1/config.h
index b754095011..3f4e663b2d 100644
--- a/keyboards/salicylic_acid3/naked60/rev1/config.h
+++ b/keyboards/salicylic_acid3/naked60/rev1/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEB5C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Salicylic_Acid
-#define PRODUCT naked60
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 12
diff --git a/keyboards/salicylic_acid3/naked60/rev1/info.json b/keyboards/salicylic_acid3/naked60/rev1/info.json
new file mode 100644
index 0000000000..30b1def9aa
--- /dev/null
+++ b/keyboards/salicylic_acid3/naked60/rev1/info.json
@@ -0,0 +1,77 @@
+{
+ "keyboard_name": "naked60",
+ "manufacturer": "Salicylic_Acid",
+ "url": "https://salicylic-acid3.hatenablog.com/",
+ "maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEB5C",
+ "device_version": "0.0.1"
+ },
+ "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":8, "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":"Back Space", "x":13, "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":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":"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":8, "y":2},
+ {"label":"J", "x":9, "y":2},
+ {"label":"K", "x":10, "y":2},
+ {"label":"L", "x":11, "y":2},
+ {"label":";", "x":12, "y":2},
+ {"label":"'", "x":13, "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":8, "y":3},
+ {"label":"M", "x":9, "y":3},
+ {"label":",", "x":10, "y":3},
+ {"label":".", "x":11, "y":3},
+ {"label":"/", "x":12, "y":3},
+ {"label":"Enter", "x":13, "y":3},
+ {"label":"Adjust", "x":1, "y":4},
+ {"label":"Ctrl", "x":2, "y":4},
+ {"label":"Alt", "x":3, "y":4},
+ {"label":"GUI", "x":4, "y":4},
+ {"label":"&dArr;", "x":5, "y":4},
+ {"x":6, "y":4},
+ {"x":7, "y":4},
+ {"label":"&uArr;", "x":8, "y":4},
+ {"label":"&larr;", "x":9, "y":4},
+ {"label":"&darr;", "x":10, "y":4},
+ {"label":"&uarr;", "x":11, "y":4},
+ {"label":"&rarr;", "x":12, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/salicylic_acid3/naked64/info.json b/keyboards/salicylic_acid3/naked64/info.json
deleted file mode 100644
index 887f43b087..0000000000
--- a/keyboards/salicylic_acid3/naked64/info.json
+++ /dev/null
@@ -1,174 +0,0 @@
-{
- "keyboard_name": "Naked64",
- "url": "https://salicylic-acid3.hatenablog.com/",
- "maintainer": "Salicylic_acid3",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"label":"pgup", "x":0.25, "y":0},
- {"label":"ESC", "x":1.75, "y":0},
- {"label":"1", "x":2.75, "y":0},
- {"label":"2", "x":4, "y":0},
- {"label":"3", "x":5, "y":0},
- {"label":"4", "x":6, "y":0},
- {"label":"5", "x":7, "y":0},
- {"label":"6", "x":9.25, "y":0},
- {"label":"7", "x":10.25, "y":0},
- {"label":"8", "x":11.25, "y":0},
- {"label":"9", "x":12.25, "y":0},
- {"label":"0", "x":13.5, "y":0},
- {"label":"-", "x":14.5, "y":0},
- {"label":"Back Space", "x":15.5, "y":0},
- {"label":"pgdn", "x":0, "y":1},
- {"label":"Tab", "x":1.25, "y":1, "w":1.5},
- {"label":"Q", "x":2.75, "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":9.25, "y":1},
- {"label":"U", "x":10.25, "y":1},
- {"label":"I", "x":11.25, "y":1},
- {"label":"O", "x":12.25, "y":1},
- {"label":"P", "x":13.5, "y":1},
- {"label":"[", "x":14.5, "y":1},
- {"label":"]", "x":15.5, "y":1},
- {"label":"Control", "x":1, "y":2, "w":1.75},
- {"label":"A", "x":2.75, "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":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.5, "y":2},
- {"label":"'", "x":14.5, "y":2},
- {"label":"Return", "x":15.5, "y":2},
- {"label":"Shift", "x":0.5, "y":3, "w":2.25},
- {"label":"Z", "x":2.75, "y":3},
- {"label":"X", "x":4, "y":3},
- {"label":"C", "x":5, "y":3},
- {"label":"V", "x":6, "y":3},
- {"label":"B", "x":7, "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.5, "y":3},
- {"label":"&uarr;", "x":14.5, "y":3},
- {"label":"Shift", "x":15.5, "y":3},
- {"label":"Adjust", "x":1.25, "y":4, "w":1.75},
- {"label":"Alt", "x":3.75, "y":4.25},
- {"x":4.75, "y":4.25, "w":2.25},
- {"label":"&dArr;", "x":7, "y":4.25},
- {"label":"&uArr;", "x":9.25, "y":4.25},
- {"x":10.25, "y":4.25, "w":2},
- {"label":"GUI", "x":12.25, "y":4.25},
- {"label":"&larr;", "x":13.5, "y":4},
- {"label":"&darr;", "x":14.5, "y":4},
- {"label":"&rarr;", "x":15.5, "y":4}
- ]
- },
- "LAYOUT_with_setta21": {
- "layout": [
- {"label":"pgup", "x":0.25, "y":0},
- {"label":"ESC", "x":1.75, "y":0},
- {"label":"1", "x":2.75, "y":0},
- {"label":"2", "x":4, "y":0},
- {"label":"3", "x":5, "y":0},
- {"label":"4", "x":6, "y":0},
- {"label":"5", "x":7, "y":0},
- {"label":"6", "x":9.25, "y":0},
- {"label":"7", "x":10.25, "y":0},
- {"label":"8", "x":11.25, "y":0},
- {"label":"9", "x":12.25, "y":0},
- {"label":"0", "x":13.5, "y":0},
- {"label":"-", "x":14.5, "y":0},
- {"label":"Back Space", "x":15.5, "y":0},
-
- {"label":"Esc", "x": 17.5, "y":0},
- {"label":"F2", "x": 18.5, "y":0},
- {"label":"=", "x": 19.5, "y":0},
- {"label":"Delete", "x": 20.5, "y":0},
-
- {"label":"pgdn", "x":0, "y":1},
- {"label":"Tab", "x":1.25, "y":1, "w":1.5},
- {"label":"Q", "x":2.75, "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":9.25, "y":1},
- {"label":"U", "x":10.25, "y":1},
- {"label":"I", "x":11.25, "y":1},
- {"label":"O", "x":12.25, "y":1},
- {"label":"P", "x":13.5, "y":1},
- {"label":"[", "x":14.5, "y":1},
- {"label":"]", "x":15.5, "y":1},
-
- {"label":"Num Lock", "x": 17.5, "y":1.25},
- {"label":"/", "x": 18.5, "y":1.25},
- {"label":"*", "x": 19.5, "y":1.25},
- {"label":"-", "x": 20.5, "y":1.25},
-
- {"label":"Control", "x":1, "y":2, "w":1.75},
- {"label":"A", "x":2.75, "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":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.5, "y":2},
- {"label":"'", "x":14.5, "y":2},
- {"label":"Return", "x":15.5, "y":2},
-
- {"label":"7", "x": 17.5, "y":2.25},
- {"label":"8", "x": 18.5, "y":2.25},
- {"label":"9", "x": 19.5, "y":2.25},
-
- {"label":"Shift", "x":0.5, "y":3, "w":2.25},
- {"label":"Z", "x":2.75, "y":3},
- {"label":"X", "x":4, "y":3},
- {"label":"C", "x":5, "y":3},
- {"label":"V", "x":6, "y":3},
- {"label":"B", "x":7, "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.5, "y":3},
- {"label":"&uarr;", "x":14.5, "y":3},
- {"label":"Shift", "x":15.5, "y":3},
-
- {"label":"4", "x": 17.5, "y":3.25},
- {"label":"5", "x": 18.5, "y":3.25},
- {"label":"6", "x": 19.5, "y":3.25},
- {"label":"+", "x": 20.5, "y":2.25, "h":2},
-
- {"label":"Adjust", "x":1.25, "y":4, "w":1.75},
- {"label":"Alt", "x":3.75, "y":4.25},
- {"x":4.75, "y":4.25, "w":2.25},
- {"label":"&dArr;", "x":7, "y":4.25},
- {"label":"&uArr;", "x":9.25, "y":4.25},
- {"x":10.25, "y":4.25, "w":2},
- {"label":"GUI", "x":12.25, "y":4.25},
- {"label":"&larr;", "x":13.5, "y":4},
- {"label":"&darr;", "x":14.5, "y":4},
- {"label":"&rarr;", "x":15.5, "y":4},
-
- {"label":"1", "x": 17.5, "y":4.25},
- {"label":"2", "x": 18.5, "y":4.25},
- {"label":"3", "x": 19.5, "y":4.25},
-
- {"label":"Lower / 0", "x": 17.5, "y":5.25, "w":2},
- {"label":"Raise / .", "x": 19.5, "y":5.25},
- {"label":"Enter", "x": 20.5, "y":4.25, "h":2}
- ]
- }
- }
-}
diff --git a/keyboards/salicylic_acid3/naked64/keymaps/salicylic/keymap.c b/keyboards/salicylic_acid3/naked64/keymaps/salicylic/keymap.c
index db46075c8f..abc4350201 100644
--- a/keyboards/salicylic_acid3/naked64/keymaps/salicylic/keymap.c
+++ b/keyboards/salicylic_acid3/naked64/keymaps/salicylic/keymap.c
@@ -33,8 +33,8 @@ enum tapdances{
};
qk_tap_dance_action_t tap_dance_actions[] = {
- [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
- [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+ [TD_ESFL] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _QWERTY),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -124,7 +124,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT( /* Base */
//,--------------------------------------------------------------| |--------------------------------------------------------------.
- _______, 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, \
+ _______, QK_BOOT, 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, _______, \
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
diff --git a/keyboards/salicylic_acid3/naked64/keymaps/salicylic_with_setta21/keymap.c b/keyboards/salicylic_acid3/naked64/keymaps/salicylic_with_setta21/keymap.c
index c91716cdd4..8514ae5a22 100644
--- a/keyboards/salicylic_acid3/naked64/keymaps/salicylic_with_setta21/keymap.c
+++ b/keyboards/salicylic_acid3/naked64/keymaps/salicylic_with_setta21/keymap.c
@@ -38,8 +38,8 @@ enum tapdances{
};
qk_tap_dance_action_t tap_dance_actions[] = {
- [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK),
- [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY),
+ [TD_ESFL] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _FLOCK),
+ [TD_ESQW] = ACTION_TAP_DANCE_LAYER_MOVE(KC_ESC, _QWERTY),
};
#define LOWER MO(_LOWER)
@@ -150,7 +150,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_with_setta21( /* Base */
//,--------------------------------------------------------------| |------------------------------------------------------------------------. ,-----------------------------------.
- _______, 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, _______, _______, _______, _______,
+ _______, QK_BOOT, 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, _______,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+------------+--------------+--------+--------| |--------+--------+--------+--------|
diff --git a/keyboards/salicylic_acid3/naked64/rev1/config.h b/keyboards/salicylic_acid3/naked64/rev1/config.h
index b4699a9ca2..0bc5656fea 100644
--- a/keyboards/salicylic_acid3/naked64/rev1/config.h
+++ b/keyboards/salicylic_acid3/naked64/rev1/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3060
-#define DEVICE_VER 0x0003
-#define MANUFACTURER Salicylic_Acid
-#define PRODUCT naked64
-
/* key matrix size */
#define MATRIX_ROWS 16
#define MATRIX_COLS 8
diff --git a/keyboards/salicylic_acid3/naked64/rev1/info.json b/keyboards/salicylic_acid3/naked64/rev1/info.json
new file mode 100644
index 0000000000..c8fe578271
--- /dev/null
+++ b/keyboards/salicylic_acid3/naked64/rev1/info.json
@@ -0,0 +1,180 @@
+{
+ "keyboard_name": "naked64",
+ "manufacturer": "Salicylic_Acid",
+ "url": "https://salicylic-acid3.hatenablog.com/",
+ "maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.3"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"pgup", "x":0.25, "y":0},
+ {"label":"ESC", "x":1.75, "y":0},
+ {"label":"1", "x":2.75, "y":0},
+ {"label":"2", "x":4, "y":0},
+ {"label":"3", "x":5, "y":0},
+ {"label":"4", "x":6, "y":0},
+ {"label":"5", "x":7, "y":0},
+ {"label":"6", "x":9.25, "y":0},
+ {"label":"7", "x":10.25, "y":0},
+ {"label":"8", "x":11.25, "y":0},
+ {"label":"9", "x":12.25, "y":0},
+ {"label":"0", "x":13.5, "y":0},
+ {"label":"-", "x":14.5, "y":0},
+ {"label":"Back Space", "x":15.5, "y":0},
+ {"label":"pgdn", "x":0, "y":1},
+ {"label":"Tab", "x":1.25, "y":1, "w":1.5},
+ {"label":"Q", "x":2.75, "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":9.25, "y":1},
+ {"label":"U", "x":10.25, "y":1},
+ {"label":"I", "x":11.25, "y":1},
+ {"label":"O", "x":12.25, "y":1},
+ {"label":"P", "x":13.5, "y":1},
+ {"label":"[", "x":14.5, "y":1},
+ {"label":"]", "x":15.5, "y":1},
+ {"label":"Control", "x":1, "y":2, "w":1.75},
+ {"label":"A", "x":2.75, "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":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.5, "y":2},
+ {"label":"'", "x":14.5, "y":2},
+ {"label":"Return", "x":15.5, "y":2},
+ {"label":"Shift", "x":0.5, "y":3, "w":2.25},
+ {"label":"Z", "x":2.75, "y":3},
+ {"label":"X", "x":4, "y":3},
+ {"label":"C", "x":5, "y":3},
+ {"label":"V", "x":6, "y":3},
+ {"label":"B", "x":7, "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.5, "y":3},
+ {"label":"&uarr;", "x":14.5, "y":3},
+ {"label":"Shift", "x":15.5, "y":3},
+ {"label":"Adjust", "x":1.25, "y":4, "w":1.75},
+ {"label":"Alt", "x":3.75, "y":4.25},
+ {"x":4.75, "y":4.25, "w":2.25},
+ {"label":"&dArr;", "x":7, "y":4.25},
+ {"label":"&uArr;", "x":9.25, "y":4.25},
+ {"x":10.25, "y":4.25, "w":2},
+ {"label":"GUI", "x":12.25, "y":4.25},
+ {"label":"&larr;", "x":13.5, "y":4},
+ {"label":"&darr;", "x":14.5, "y":4},
+ {"label":"&rarr;", "x":15.5, "y":4}
+ ]
+ },
+ "LAYOUT_with_setta21": {
+ "layout": [
+ {"label":"pgup", "x":0.25, "y":0},
+ {"label":"ESC", "x":1.75, "y":0},
+ {"label":"1", "x":2.75, "y":0},
+ {"label":"2", "x":4, "y":0},
+ {"label":"3", "x":5, "y":0},
+ {"label":"4", "x":6, "y":0},
+ {"label":"5", "x":7, "y":0},
+ {"label":"6", "x":9.25, "y":0},
+ {"label":"7", "x":10.25, "y":0},
+ {"label":"8", "x":11.25, "y":0},
+ {"label":"9", "x":12.25, "y":0},
+ {"label":"0", "x":13.5, "y":0},
+ {"label":"-", "x":14.5, "y":0},
+ {"label":"Back Space", "x":15.5, "y":0},
+
+ {"label":"Esc", "x": 17.5, "y":0},
+ {"label":"F2", "x": 18.5, "y":0},
+ {"label":"=", "x": 19.5, "y":0},
+ {"label":"Delete", "x": 20.5, "y":0},
+
+ {"label":"pgdn", "x":0, "y":1},
+ {"label":"Tab", "x":1.25, "y":1, "w":1.5},
+ {"label":"Q", "x":2.75, "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":9.25, "y":1},
+ {"label":"U", "x":10.25, "y":1},
+ {"label":"I", "x":11.25, "y":1},
+ {"label":"O", "x":12.25, "y":1},
+ {"label":"P", "x":13.5, "y":1},
+ {"label":"[", "x":14.5, "y":1},
+ {"label":"]", "x":15.5, "y":1},
+
+ {"label":"Num Lock", "x": 17.5, "y":1.25},
+ {"label":"/", "x": 18.5, "y":1.25},
+ {"label":"*", "x": 19.5, "y":1.25},
+ {"label":"-", "x": 20.5, "y":1.25},
+
+ {"label":"Control", "x":1, "y":2, "w":1.75},
+ {"label":"A", "x":2.75, "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":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.5, "y":2},
+ {"label":"'", "x":14.5, "y":2},
+ {"label":"Return", "x":15.5, "y":2},
+
+ {"label":"7", "x": 17.5, "y":2.25},
+ {"label":"8", "x": 18.5, "y":2.25},
+ {"label":"9", "x": 19.5, "y":2.25},
+
+ {"label":"Shift", "x":0.5, "y":3, "w":2.25},
+ {"label":"Z", "x":2.75, "y":3},
+ {"label":"X", "x":4, "y":3},
+ {"label":"C", "x":5, "y":3},
+ {"label":"V", "x":6, "y":3},
+ {"label":"B", "x":7, "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.5, "y":3},
+ {"label":"&uarr;", "x":14.5, "y":3},
+ {"label":"Shift", "x":15.5, "y":3},
+
+ {"label":"4", "x": 17.5, "y":3.25},
+ {"label":"5", "x": 18.5, "y":3.25},
+ {"label":"6", "x": 19.5, "y":3.25},
+ {"label":"+", "x": 20.5, "y":2.25, "h":2},
+
+ {"label":"Adjust", "x":1.25, "y":4, "w":1.75},
+ {"label":"Alt", "x":3.75, "y":4.25},
+ {"x":4.75, "y":4.25, "w":2.25},
+ {"label":"&dArr;", "x":7, "y":4.25},
+ {"label":"&uArr;", "x":9.25, "y":4.25},
+ {"x":10.25, "y":4.25, "w":2},
+ {"label":"GUI", "x":12.25, "y":4.25},
+ {"label":"&larr;", "x":13.5, "y":4},
+ {"label":"&darr;", "x":14.5, "y":4},
+ {"label":"&rarr;", "x":15.5, "y":4},
+
+ {"label":"1", "x": 17.5, "y":4.25},
+ {"label":"2", "x": 18.5, "y":4.25},
+ {"label":"3", "x": 19.5, "y":4.25},
+
+ {"label":"Lower / 0", "x": 17.5, "y":5.25, "w":2},
+ {"label":"Raise / .", "x": 19.5, "y":5.25},
+ {"label":"Enter", "x": 20.5, "y":4.25, "h":2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/salicylic_acid3/nknl7en/config.h b/keyboards/salicylic_acid3/nknl7en/config.h
index 997971bc96..5258cdccdb 100644
--- a/keyboards/salicylic_acid3/nknl7en/config.h
+++ b/keyboards/salicylic_acid3/nknl7en/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEA56
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Salicylic_Acid
-#define PRODUCT nknl7en
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 9
diff --git a/keyboards/salicylic_acid3/nknl7en/info.json b/keyboards/salicylic_acid3/nknl7en/info.json
index c80ac22769..6c94b5deb6 100644
--- a/keyboards/salicylic_acid3/nknl7en/info.json
+++ b/keyboards/salicylic_acid3/nknl7en/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "nknl7en",
+ "manufacturer": "Salicylic_Acid",
"url": "https://salicylic-acid3.hatenablog.com/",
"maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEA56",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/salicylic_acid3/nknl7en/keymaps/salicylic/keymap.c b/keyboards/salicylic_acid3/nknl7en/keymaps/salicylic/keymap.c
index 5944c00fc5..c1d042a5f2 100644
--- a/keyboards/salicylic_acid3/nknl7en/keymaps/salicylic/keymap.c
+++ b/keyboards/salicylic_acid3/nknl7en/keymaps/salicylic/keymap.c
@@ -90,7 +90,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
- XXXXXXX, XXXXXXX, XXXXXXX, _______, RESET, _______, _______, _______, _______, _______, _______, _______
+ XXXXXXX, XXXXXXX, XXXXXXX, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______
//|-----------------------------------------------------| |--------------------------------------------------------------------------------'
)
};
diff --git a/keyboards/salicylic_acid3/nknl7jp/config.h b/keyboards/salicylic_acid3/nknl7jp/config.h
index 7fb3c0e9c9..317f546c85 100644
--- a/keyboards/salicylic_acid3/nknl7jp/config.h
+++ b/keyboards/salicylic_acid3/nknl7jp/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEA55
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Salicylic_Acid
-#define PRODUCT nknl7jp
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 9
diff --git a/keyboards/salicylic_acid3/nknl7jp/info.json b/keyboards/salicylic_acid3/nknl7jp/info.json
index c074d9019f..1750c19dba 100644
--- a/keyboards/salicylic_acid3/nknl7jp/info.json
+++ b/keyboards/salicylic_acid3/nknl7jp/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "nknl7jp",
+ "manufacturer": "Salicylic_Acid",
"url": "https://salicylic-acid3.hatenablog.com/",
"maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEA55",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/salicylic_acid3/nknl7jp/keymaps/salicylic/keymap.c b/keyboards/salicylic_acid3/nknl7jp/keymaps/salicylic/keymap.c
index e6004ba111..9252d2e58e 100644
--- a/keyboards/salicylic_acid3/nknl7jp/keymaps/salicylic/keymap.c
+++ b/keyboards/salicylic_acid3/nknl7jp/keymaps/salicylic/keymap.c
@@ -88,7 +88,7 @@ SFT_T(KC_F12), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, XXXXXXX, XXXXXXX
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------+--------+--------|
- XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, RESET, RESET, _______, _______, _______, _______, _______, _______, _______
+ XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______, _______, _______
//|-----------------------------------------------------| |--------------------------------------------------------------------------------'
)
};
diff --git a/keyboards/salicylic_acid3/setta21/info.json b/keyboards/salicylic_acid3/setta21/info.json
deleted file mode 100644
index 46c06613a8..0000000000
--- a/keyboards/salicylic_acid3/setta21/info.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- "keyboard_name": "setta21",
- "url": "https://salicylic-acid3.hatenablog.com/",
- "maintainer": "Salicylic_acid3",
- "layouts": {
- "LAYOUT_numpad_6x4": {
- "layout": [
- {"label":"ESC", "x":0, "y":0},
- {"label":"F2", "x":1, "y":0},
- {"label":"\uff1d", "x":2, "y":0},
- {"label":"Del", "x":3, "y":0},
-
- {"label":"Num Lock", "x":0, "y":1.25},
- {"label":"/", "x":1, "y":1.25},
- {"label":"*", "x":2, "y":1.25},
- {"label":"-", "x":3, "y":1.25},
-
- {"label":"7", "x":0, "y":2.25},
- {"label":"8", "x":1, "y":2.25},
- {"label":"9", "x":2, "y":2.25},
-
- {"label":"4", "x":0, "y":3.25},
- {"label":"5", "x":1, "y":3.25},
- {"label":"6", "x":2, "y":3.25},
- {"label":"+", "x":3, "y":2.25, "h":2},
-
- {"label":"1", "x":0, "y":4.25},
- {"label":"2", "x":1, "y":4.25},
- {"label":"3", "x":2, "y":4.25},
-
- {"label":"0", "x":0, "y":5.25, "w":2},
- {"label":".", "x":2, "y":5.25},
- {"label":"Enter", "x":3, "y":4.25, "h":2}
- ]
- }
- }
-}
diff --git a/keyboards/salicylic_acid3/setta21/rev1/config.h b/keyboards/salicylic_acid3/setta21/rev1/config.h
index 742a8d73d0..697e7a7d49 100644
--- a/keyboards/salicylic_acid3/setta21/rev1/config.h
+++ b/keyboards/salicylic_acid3/setta21/rev1/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3060
-#define DEVICE_VER 0x0011
-#define MANUFACTURER Salicylic_Acid
-#define PRODUCT setta21
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 6
diff --git a/keyboards/salicylic_acid3/setta21/rev1/info.json b/keyboards/salicylic_acid3/setta21/rev1/info.json
new file mode 100644
index 0000000000..aa101e7a13
--- /dev/null
+++ b/keyboards/salicylic_acid3/setta21/rev1/info.json
@@ -0,0 +1,43 @@
+{
+ "keyboard_name": "setta21",
+ "manufacturer": "Salicylic_Acid",
+ "url": "https://salicylic-acid3.hatenablog.com/",
+ "maintainer": "Salicylic_acid3",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.1.1"
+ },
+ "layouts": {
+ "LAYOUT_numpad_6x4": {
+ "layout": [
+ {"label":"ESC", "x":0, "y":0},
+ {"label":"F2", "x":1, "y":0},
+ {"label":"\uff1d", "x":2, "y":0},
+ {"label":"Del", "x":3, "y":0},
+
+ {"label":"Num Lock", "x":0, "y":1.25},
+ {"label":"/", "x":1, "y":1.25},
+ {"label":"*", "x":2, "y":1.25},
+ {"label":"-", "x":3, "y":1.25},
+
+ {"label":"7", "x":0, "y":2.25},
+ {"label":"8", "x":1, "y":2.25},
+ {"label":"9", "x":2, "y":2.25},
+
+ {"label":"4", "x":0, "y":3.25},
+ {"label":"5", "x":1, "y":3.25},
+ {"label":"6", "x":2, "y":3.25},
+ {"label":"+", "x":3, "y":2.25, "h":2},
+
+ {"label":"1", "x":0, "y":4.25},
+ {"label":"2", "x":1, "y":4.25},
+ {"label":"3", "x":2, "y":4.25},
+
+ {"label":"0", "x":0, "y":5.25, "w":2},
+ {"label":".", "x":2, "y":5.25},
+ {"label":"Enter", "x":3, "y":4.25, "h":2}
+ ]
+ }
+ }
+}
diff --git a/keyboards/sam/s80/config.h b/keyboards/sam/s80/config.h
index 1df34a48dd..55dff94e3f 100644
--- a/keyboards/sam/s80/config.h
+++ b/keyboards/sam/s80/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x534D
-#define PRODUCT_ID 0x3830
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Sam
-#define PRODUCT s80
-
/* key matrix size */
#define MATRIX_ROWS 11
#define MATRIX_COLS 9
diff --git a/keyboards/sam/s80/info.json b/keyboards/sam/s80/info.json
index af109e1787..6dd583ddd6 100644
--- a/keyboards/sam/s80/info.json
+++ b/keyboards/sam/s80/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "s80 wkl",
+ "keyboard_name": "s8",
+ "manufacturer": "Sam",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x534D",
+ "pid": "0x3830",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sam/sg81m/config.h b/keyboards/sam/sg81m/config.h
index a0dca89211..da483a7cf5 100644
--- a/keyboards/sam/sg81m/config.h
+++ b/keyboards/sam/sg81m/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x534D //SM
-#define PRODUCT_ID 0x3831 //81
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Sam
-#define PRODUCT SG81M
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 14
diff --git a/keyboards/sam/sg81m/info.json b/keyboards/sam/sg81m/info.json
index 439d8562e9..59561a84f3 100644
--- a/keyboards/sam/sg81m/info.json
+++ b/keyboards/sam/sg81m/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "sam sg81m",
+ "keyboard_name": "SG81M",
+ "manufacturer": "Sam",
"url": "",
"maintainer": "CMMS-Freather",
+ "usb": {
+ "vid": "0x534D",
+ "pid": "0x3831",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_7u_space": {
"layout": [
diff --git a/keyboards/sanctified/dystopia/config.h b/keyboards/sanctified/dystopia/config.h
index 3cb61cfde6..cf9d91d551 100644
--- a/keyboards/sanctified/dystopia/config.h
+++ b/keyboards/sanctified/dystopia/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5357 // "SW"
-#define PRODUCT_ID 0x0001 // First public keyboard
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER Sanctified.Works
-#define PRODUCT Dystopia
-
/* Key Matrix Size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -34,5 +27,3 @@
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, D4, D6, D7, B4 }
#define DIODE_DIRECTION COL2ROW
-
-#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/sanctified/dystopia/info.json b/keyboards/sanctified/dystopia/info.json
index f282ba1803..9b363e32d3 100644
--- a/keyboards/sanctified/dystopia/info.json
+++ b/keyboards/sanctified/dystopia/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dystopia",
+ "manufacturer": "Sanctified.Works",
"url": "",
"maintainer": "Sanctified",
+ "usb": {
+ "vid": "0x5357",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_bs": {
"layout": [
diff --git a/keyboards/sandwich/keeb68/config.h b/keyboards/sandwich/keeb68/config.h
index 9395d8ef1a..2c506e8bc2 100644
--- a/keyboards/sandwich/keeb68/config.h
+++ b/keyboards/sandwich/keeb68/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER sandwich
-#define PRODUCT Keeb68 (Patron Saint Edition)
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/sandwich/keeb68/info.json b/keyboards/sandwich/keeb68/info.json
index c6b5cb4f53..b5193a9486 100644
--- a/keyboards/sandwich/keeb68/info.json
+++ b/keyboards/sandwich/keeb68/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Keeb68 (PSE)",
+ "keyboard_name": "Keeb68 (Patron Saint Edition)",
+ "manufacturer": "sandwich",
"url": "",
"maintainer": "SandwichRising",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/sandwich/keeb68/keymaps/grv_esc/keymap.c b/keyboards/sandwich/keeb68/keymaps/grv_esc/keymap.c
index eb5452a7c4..0a8fa898c3 100644
--- a/keyboards/sandwich/keeb68/keymaps/grv_esc/keymap.c
+++ b/keyboards/sandwich/keeb68/keymaps/grv_esc/keymap.c
@@ -35,6 +35,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, BL_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS,
_______, BL_TOGG, BL_DEC, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, KC_END,
- _______, RESET, _______, _______, _______, MO(_FN), _______, _______, KC_VOLD, _______
+ _______, QK_BOOT, _______, _______, _______, MO(_FN), _______, _______, KC_VOLD, _______
)
};
diff --git a/keyboards/sandwich/keeb68/readme.md b/keyboards/sandwich/keeb68/readme.md
index 783d8f00b7..0c877fdc24 100644
--- a/keyboards/sandwich/keeb68/readme.md
+++ b/keyboards/sandwich/keeb68/readme.md
@@ -23,7 +23,7 @@ Some BIOSs may not detect keypresses properly while NRKO is enabled according to
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`)
+* **Keycode in layout**: Hold Fn key and press the Windows(GUI) key (mapped to `QK_BOOT`)
* **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/satt/comet46/config.h b/keyboards/satt/comet46/config.h
index d75294dc13..f14a389382 100644
--- a/keyboards/satt/comet46/config.h
+++ b/keyboards/satt/comet46/config.h
@@ -19,14 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SatT
-#define PRODUCT Comet46
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 10
diff --git a/keyboards/satt/comet46/i2c.c b/keyboards/satt/comet46/i2c.c
deleted file mode 100644
index 4bee5c6398..0000000000
--- a/keyboards/satt/comet46/i2c.c
+++ /dev/null
@@ -1,162 +0,0 @@
-#include <util/twi.h>
-#include <avr/io.h>
-#include <stdlib.h>
-#include <avr/interrupt.h>
-#include <util/twi.h>
-#include <stdbool.h>
-#include "i2c.h"
-
-#ifdef USE_I2C
-
-// Limits the amount of we wait for any one i2c transaction.
-// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is
-// 9 bits, a single transaction will take around 90μs to complete.
-//
-// (F_CPU/SCL_CLOCK) => # of μC cycles to transfer a bit
-// poll loop takes at least 8 clock cycles to execute
-#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8
-
-#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE)
-
-volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-static volatile uint8_t slave_buffer_pos;
-static volatile bool slave_has_register_set = false;
-
-// Wait for an i2c operation to finish
-inline static
-void i2c_delay(void) {
- uint16_t lim = 0;
- while(!(TWCR & (1<<TWINT)) && lim < I2C_LOOP_TIMEOUT)
- lim++;
-
- // easier way, but will wait slightly longer
- // _delay_us(100);
-}
-
-// Setup twi to run at 100kHz or 400kHz (see ./i2c.h SCL_CLOCK)
-void i2c_master_init(void) {
- // no prescaler
- TWSR = 0;
- // Set TWI clock frequency to SCL_CLOCK. Need TWBR>10.
- // Check datasheets for more info.
- TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
-}
-
-// Start a transaction with the given i2c slave address. The direction of the
-// transfer is set with I2C_READ and I2C_WRITE.
-// returns: 0 => success
-// 1 => error
-uint8_t i2c_master_start(uint8_t address) {
- TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTA);
-
- i2c_delay();
-
- // check that we started successfully
- if ( (TW_STATUS != TW_START) && (TW_STATUS != TW_REP_START))
- return 1;
-
- TWDR = address;
- TWCR = (1<<TWINT) | (1<<TWEN);
-
- i2c_delay();
-
- if ( (TW_STATUS != TW_MT_SLA_ACK) && (TW_STATUS != TW_MR_SLA_ACK) )
- return 1; // slave did not acknowledge
- else
- return 0; // success
-}
-
-
-// Finish the i2c transaction.
-void i2c_master_stop(void) {
- TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
-
- uint16_t lim = 0;
- while(!(TWCR & (1<<TWSTO)) && lim < I2C_LOOP_TIMEOUT)
- lim++;
-}
-
-// Write one byte to the i2c slave.
-// returns 0 => slave ACK
-// 1 => slave NACK
-uint8_t i2c_master_write(uint8_t data) {
- TWDR = data;
- TWCR = (1<<TWINT) | (1<<TWEN);
-
- i2c_delay();
-
- // check if the slave acknowledged us
- return (TW_STATUS == TW_MT_DATA_ACK) ? 0 : 1;
-}
-
-// Read one byte from the i2c slave. If ack=1 the slave is acknowledged,
-// if ack=0 the acknowledge bit is not set.
-// returns: byte read from i2c device
-uint8_t i2c_master_read(int ack) {
- TWCR = (1<<TWINT) | (1<<TWEN) | (ack<<TWEA);
-
- i2c_delay();
- return TWDR;
-}
-
-void i2c_reset_state(void) {
- TWCR = 0;
-}
-
-void i2c_slave_init(uint8_t address) {
- TWAR = address << 0; // slave i2c address
- // TWEN - twi enable
- // TWEA - enable address acknowledgement
- // TWINT - twi interrupt flag
- // TWIE - enable the twi interrupt
- TWCR = (1<<TWIE) | (1<<TWEA) | (1<<TWINT) | (1<<TWEN);
-}
-
-ISR(TWI_vect);
-
-ISR(TWI_vect) {
- uint8_t ack = 1;
- switch(TW_STATUS) {
- case TW_SR_SLA_ACK:
- // this device has been addressed as a slave receiver
- slave_has_register_set = false;
- break;
-
- case TW_SR_DATA_ACK:
- // this device has received data as a slave receiver
- // The first byte that we receive in this transaction sets the location
- // of the read/write location of the slaves memory that it exposes over
- // i2c. After that, bytes will be written at slave_buffer_pos, incrementing
- // slave_buffer_pos after each write.
- if(!slave_has_register_set) {
- slave_buffer_pos = TWDR;
- // don't acknowledge the master if this memory loctaion is out of bounds
- if ( slave_buffer_pos >= SLAVE_BUFFER_SIZE ) {
- ack = 0;
- slave_buffer_pos = 0;
- }
- slave_has_register_set = true;
- } else {
- i2c_slave_buffer[slave_buffer_pos] = TWDR;
- BUFFER_POS_INC();
- }
- break;
-
- case TW_ST_SLA_ACK:
- case TW_ST_DATA_ACK:
- // master has addressed this device as a slave transmitter and is
- // requesting data.
- TWDR = i2c_slave_buffer[slave_buffer_pos];
- BUFFER_POS_INC();
- break;
-
- case TW_BUS_ERROR: // something went wrong, reset twi state
- TWCR = 0;
- default:
- break;
- }
- // Reset everything, so we are ready for the next TWI interrupt
- TWCR |= (1<<TWIE) | (1<<TWINT) | (ack<<TWEA) | (1<<TWEN);
-}
-#endif
diff --git a/keyboards/satt/comet46/i2c.h b/keyboards/satt/comet46/i2c.h
deleted file mode 100644
index 710662c7ab..0000000000
--- a/keyboards/satt/comet46/i2c.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#pragma once
-
-#include <stdint.h>
-
-#ifndef F_CPU
-#define F_CPU 16000000UL
-#endif
-
-#define I2C_READ 1
-#define I2C_WRITE 0
-
-#define I2C_ACK 1
-#define I2C_NACK 0
-
-#define SLAVE_BUFFER_SIZE 0x10
-
-// i2c SCL clock frequency 400kHz
-#define SCL_CLOCK 400000L
-
-extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-void i2c_master_init(void);
-uint8_t i2c_master_start(uint8_t address);
-void i2c_master_stop(void);
-uint8_t i2c_master_write(uint8_t data);
-uint8_t i2c_master_read(int);
-void i2c_reset_state(void);
-void i2c_slave_init(uint8_t address);
-
-
-static inline unsigned char i2c_start_read(unsigned char addr) {
- return i2c_master_start((addr << 1) | I2C_READ);
-}
-
-static inline unsigned char i2c_start_write(unsigned char addr) {
- return i2c_master_start((addr << 1) | I2C_WRITE);
-}
-
-// from SSD1306 scrips
-extern unsigned char i2c_rep_start(unsigned char addr);
-extern void i2c_start_wait(unsigned char addr);
-extern unsigned char i2c_readAck(void);
-extern unsigned char i2c_readNak(void);
-extern unsigned char i2c_read(unsigned char ack);
-
-#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
diff --git a/keyboards/satt/comet46/info.json b/keyboards/satt/comet46/info.json
index f49c878e08..be71dedb39 100644
--- a/keyboards/satt/comet46/info.json
+++ b/keyboards/satt/comet46/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Comet46",
+ "manufacturer": "SatT",
"url": "",
"maintainer": "SatT",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/satt/comet46/keymaps/default-rgbled/keymap.c b/keyboards/satt/comet46/keymaps/default-rgbled/keymap.c
index 6c88b70bfe..1e96bd7fbc 100644
--- a/keyboards/satt/comet46/keymaps/default-rgbled/keymap.c
+++ b/keyboards/satt/comet46/keymaps/default-rgbled/keymap.c
@@ -173,7 +173,7 @@ void matrix_init_user(void) {
}
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
uint8_t default_layer = biton32(eeconfig_read_default_layer());
switch (layer) {
case _LOWER:
diff --git a/keyboards/satt/comet46/keymaps/default/config.h b/keyboards/satt/comet46/keymaps/default/config.h
deleted file mode 100644
index ee02a94b7e..0000000000
--- a/keyboards/satt/comet46/keymaps/default/config.h
+++ /dev/null
@@ -1,29 +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 */
-
-#define USE_I2C
-#define SSD1306OLED
diff --git a/keyboards/satt/comet46/keymaps/default/keymap.c b/keyboards/satt/comet46/keymaps/default/keymap.c
index cf2c911d4c..3e6f9045ff 100644
--- a/keyboards/satt/comet46/keymaps/default/keymap.c
+++ b/keyboards/satt/comet46/keymaps/default/keymap.c
@@ -2,9 +2,6 @@
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
#include QMK_KEYBOARD_H
-#ifdef SSD1306OLED
- #include "ssd1306.h"
-#endif
// Each layer gets a name for readability, which is then used in the keymap matrix below.
@@ -148,8 +145,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
}
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
+#ifdef OLED_ENABLE
// You need to add source files to SRC in rules.mk when using OLED display functions
void set_keylog(uint16_t keycode);
@@ -157,27 +153,12 @@ const char *read_keylog(void);
const char *read_modifier_state(void);
const char *read_host_led_state(void);
-void matrix_init_user(void) {
- iota_gfx_init(false); // turns on the display
-}
-
-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;
- }
-}
-
-void render_status(struct CharacterMatrix *matrix) {
+bool oled_task_user(void) {
// Layer state
char layer_str[22];
- matrix_write(matrix, "Layer: ");
- uint8_t layer = biton32(layer_state);
- uint8_t default_layer = biton32(eeconfig_read_default_layer());
+ oled_write_P(PSTR("Layer: "), false);
+ uint8_t layer = get_highest_layer(layer_state);
+ uint8_t default_layer = get_highest_layer(eeconfig_read_default_layer());
switch (layer) {
case _QWERTY:
switch (default_layer) {
@@ -207,27 +188,21 @@ void render_status(struct CharacterMatrix *matrix) {
default:
snprintf(layer_str, sizeof(layer_str), "Undef-%d", layer);
}
- matrix_write_ln(matrix, layer_str);
+ oled_write_ln(layer_str, false);
// Last entered keycode
- matrix_write_ln(matrix, read_keylog());
+ oled_write_ln(read_keylog(), false);
// Modifier state
- matrix_write_ln(matrix, read_modifier_state());
+ oled_write_ln(read_modifier_state(), false);
// Host Keyboard LED Status
- matrix_write(matrix, read_host_led_state());
-}
+ oled_write(read_host_led_state(), false);
-
-void iota_gfx_task_user(void) {
- struct CharacterMatrix matrix;
- matrix_clear(&matrix);
- render_status(&matrix);
- matrix_update(&display, &matrix);
+ return false;
}
-#endif//SSD1306OLED
+#endif
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- #ifdef SSD1306OLED
+ #ifdef OLED_ENABLE
if (record->event.pressed) {
set_keylog(keycode);
}
diff --git a/keyboards/satt/comet46/keymaps/default/rules.mk b/keyboards/satt/comet46/keymaps/default/rules.mk
index 3fa01f96af..3ceffe90ec 100644
--- a/keyboards/satt/comet46/keymaps/default/rules.mk
+++ b/keyboards/satt/comet46/keymaps/default/rules.mk
@@ -1,5 +1,6 @@
# If you want to change display settings of the OLED, you need to change the following lines
-SRC += ./lib/glcdfont.c \
- ./lib/keylogger.c \
+SRC += ./lib/keylogger.c \
./lib/modifier_state_reader.c \
./lib/host_led_state_reader.c
+
+OLED_ENABLE = yes
diff --git a/keyboards/satt/comet46/keymaps/satt/config.h b/keyboards/satt/comet46/keymaps/satt/config.h
deleted file mode 100644
index a3ca2ebfef..0000000000
--- a/keyboards/satt/comet46/keymaps/satt/config.h
+++ /dev/null
@@ -1,29 +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 SSD1306OLED
-
-#endif
diff --git a/keyboards/satt/comet46/keymaps/satt/keymap.c b/keyboards/satt/comet46/keymaps/satt/keymap.c
index cdd094f747..0f5c6876e7 100644
--- a/keyboards/satt/comet46/keymaps/satt/keymap.c
+++ b/keyboards/satt/comet46/keymaps/satt/keymap.c
@@ -5,9 +5,6 @@
#include "keymap_jis2us.h"
#include "action_pseudo_lut.h"
#include "keymap_japanese.h"
-#ifdef SSD1306OLED
- #include "ssd1306.h"
-#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.
@@ -73,7 +70,7 @@ enum custom_keycodes {
#define KC_IMON ALT_T(KC_F13)
#define KC_IMOF GUI_T(KC_F14)
#define KC_CAD LCA(KC_DEL)
-#define KC_RST RESET
+#define KC_RST QK_BOOT
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -165,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _PSEUDO_US_LOWER:
case _PSEUDO_US_RAISE:
return update_tri_layer_state(state, _PSEUDO_US_RAISE, _PSEUDO_US_LOWER, _ADJUST);
@@ -176,8 +173,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
}
}
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
+#ifdef OLED_ENABLE
// You need to add source files to SRC in rules.mk when using OLED display functions
void set_keylog(uint16_t keycode);
@@ -185,86 +181,59 @@ const char *read_keylog(void);
const char *read_modifier_state(void);
const char *read_host_led_state(void);
-void matrix_init_user(void) {
- iota_gfx_init(false); // turns on the display
-}
-
-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;
- }
-}
-
-void render_status(struct CharacterMatrix *matrix) {
+bool oled_task_user(void) {
// Layer state
char layer_str[22];
- matrix_write(matrix, "Layer: ");
- uint8_t layer = biton32(layer_state);
- uint8_t default_layer = biton32(eeconfig_read_default_layer());
- switch (layer) {
- case _QWERTY:
- switch (default_layer) {
- case _QWERTY:
- snprintf(layer_str, sizeof(layer_str), "Qwerty");
- break;
- case _PSEUDO_US:
- snprintf(layer_str, sizeof(layer_str), "Psuedo_US");
- break;
- default:
- snprintf(layer_str, sizeof(layer_str), "Undef-%d", default_layer);
- break;
- }
- break;
- case _RAISE:
- snprintf(layer_str, sizeof(layer_str), "Raise");
- break;
- case _LOWER:
- snprintf(layer_str, sizeof(layer_str), "Lower");
- break;
+ oled_write_P(PSTR("Layer: "), false);
+ uint8_t layer = get_highest_layer(layer_state);
+ uint8_t default_layer = get_highest_layer(eeconfig_read_default_layer());
+ switch (layer) {
+ case _QWERTY:
+ switch (default_layer) {
+ case _QWERTY:
+ snprintf(layer_str, sizeof(layer_str), "Qwerty");
+ break;
+ case _PSEUDO_US:
+ snprintf(layer_str, sizeof(layer_str), "Psuedo_US");
+ break;
+ default:
+ snprintf(layer_str, sizeof(layer_str), "Undef-%d", default_layer);
+ break;
+ }
+ break;
+ case _RAISE:
+ snprintf(layer_str, sizeof(layer_str), "Raise");
+ break;
+ case _LOWER:
+ snprintf(layer_str, sizeof(layer_str), "Lower");
+ break;
case _PSEUDO_US_RAISE:
snprintf(layer_str, sizeof(layer_str), "P_US_Raise");
break;
case _PSEUDO_US_LOWER:
snprintf(layer_str, sizeof(layer_str), "P_US_Lower");
break;
- case _ADJUST:
- snprintf(layer_str, sizeof(layer_str), "Adjust");
- break;
- default:
- snprintf(layer_str, sizeof(layer_str), "Undef-%d", layer);
- }
- matrix_write_ln(matrix, layer_str);
+ case _ADJUST:
+ snprintf(layer_str, sizeof(layer_str), "Adjust");
+ break;
+ default:
+ snprintf(layer_str, sizeof(layer_str), "Undef-%d", layer);
+ }
+ oled_write_ln(layer_str, false);
// Last entered keycode
- matrix_write_ln(matrix, read_keylog());
+ oled_write_ln(read_keylog(), false);
// Modifier state
- matrix_write_ln(matrix, read_modifier_state());
+ oled_write_ln(read_modifier_state(), false);
// Host Keyboard LED Status
- matrix_write(matrix, read_host_led_state());
-}
-
-void iota_gfx_task_user(void) {
- struct CharacterMatrix matrix;
-
-#if DEBUG_TO_SCREEN
- if (debug_enable) {
- return;
- }
-#endif
+ oled_write(read_host_led_state(), false);
- matrix_clear(&matrix);
- render_status(&matrix);
- matrix_update(&display, &matrix);
+ return false;
}
-#endif//SSD1306OLED
+#endif
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- #ifdef SSD1306OLED
+ #ifdef OLED_ENABLE
if (record->event.pressed) {
set_keylog(keycode);
}
diff --git a/keyboards/satt/comet46/keymaps/satt/rules.mk b/keyboards/satt/comet46/keymaps/satt/rules.mk
index 91609dd4fd..9c07b12fcb 100644
--- a/keyboards/satt/comet46/keymaps/satt/rules.mk
+++ b/keyboards/satt/comet46/keymaps/satt/rules.mk
@@ -1,8 +1,8 @@
SRC += action_pseudo_lut.c
# If you want to change display settings of the OLED, you need to change the following lines
-SRC += ./lib/glcdfont.c \
- ./lib/keylogger.c \
+SRC += ./lib/keylogger.c \
./lib/modifier_state_reader.c \
./lib/host_led_state_reader.c
+OLED_ENABLE = yes
diff --git a/keyboards/satt/comet46/lib/glcdfont.c b/keyboards/satt/comet46/lib/glcdfont.c
deleted file mode 100644
index 361d0c3dc6..0000000000
--- a/keyboards/satt/comet46/lib/glcdfont.c
+++ /dev/null
@@ -1,137 +0,0 @@
-// 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,
- 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,
- 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, 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/satt/comet46/rules.mk b/keyboards/satt/comet46/rules.mk
index e177fc6441..83f7d905e9 100644
--- a/keyboards/satt/comet46/rules.mk
+++ b/keyboards/satt/comet46/rules.mk
@@ -17,9 +17,8 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
CUSTOM_MATRIX = lite
+OLED_DRIVER = SSD1306
# project specific files
-SRC += matrix.c \
- i2c.c \
- ssd1306.c
+SRC += matrix.c
QUANTUM_LIB_SRC += uart.c
diff --git a/keyboards/satt/comet46/ssd1306.c b/keyboards/satt/comet46/ssd1306.c
deleted file mode 100644
index 4bd2d80bc4..0000000000
--- a/keyboards/satt/comet46/ssd1306.c
+++ /dev/null
@@ -1,343 +0,0 @@
-#ifdef SSD1306OLED
-
-#include "ssd1306.h"
-#include "i2c.h"
-#include <string.h>
-#include "print.h"
-#ifdef PROTOCOL_LUFA
-#include "lufa.h"
-#endif
-#include "sendchar.h"
-#include "timer.h"
-
-struct CharacterMatrix display;
-
-extern const unsigned char font[] PROGMEM;
-
-// Set this to 1 to help diagnose early startup problems
-// when testing power-on with ble. Turn it off otherwise,
-// as the latency of printing most of the debug info messes
-// with the matrix scan, causing keys to drop.
-#define DEBUG_TO_SCREEN 0
-
-//static uint16_t last_battery_update;
-//static uint32_t vbat;
-//#define BatteryUpdateInterval 10000 /* milliseconds */
-
-// 'last_flush' is declared as uint16_t,
-// so this must be less than 65535
-#define ScreenOffInterval 60000 /* milliseconds */
-#if DEBUG_TO_SCREEN
-static uint8_t displaying;
-#endif
-static uint16_t last_flush;
-
-static bool force_dirty = true;
-
-// Write command sequence.
-// Returns true on success.
-static inline bool _send_cmd1(uint8_t cmd) {
- bool res = false;
-
- if (i2c_start_write(SSD1306_ADDRESS)) {
- xprintf("failed to start write to %d\n", SSD1306_ADDRESS);
- goto done;
- }
-
- if (i2c_master_write(0x0 /* command byte follows */)) {
- print("failed to write control byte\n");
-
- goto done;
- }
-
- if (i2c_master_write(cmd)) {
- xprintf("failed to write command %d\n", cmd);
- goto done;
- }
- res = true;
-done:
- i2c_master_stop();
- return res;
-}
-
-// Write 2-byte command sequence.
-// Returns true on success
-static inline bool _send_cmd2(uint8_t cmd, uint8_t opr) {
- if (!_send_cmd1(cmd)) {
- return false;
- }
- return _send_cmd1(opr);
-}
-
-// Write 3-byte command sequence.
-// Returns true on success
-static inline bool _send_cmd3(uint8_t cmd, uint8_t opr1, uint8_t opr2) {
- if (!_send_cmd1(cmd)) {
- return false;
- }
- if (!_send_cmd1(opr1)) {
- return false;
- }
- return _send_cmd1(opr2);
-}
-
-#define send_cmd1(c) if (!_send_cmd1(c)) {goto done;}
-#define send_cmd2(c,o) if (!_send_cmd2(c,o)) {goto done;}
-#define send_cmd3(c,o1,o2) if (!_send_cmd3(c,o1,o2)) {goto done;}
-
-static void clear_display(void) {
- matrix_clear(&display);
-
- // Clear all of the display bits (there can be random noise
- // in the RAM on startup)
- send_cmd3(PageAddr, 0, (DisplayHeight / 8) - 1);
- send_cmd3(ColumnAddr, 0, DisplayWidth - 1);
-
- if (i2c_start_write(SSD1306_ADDRESS)) {
- goto done;
- }
- if (i2c_master_write(0x40)) {
- // Data mode
- goto done;
- }
- for (uint8_t row = 0; row < MatrixRows; ++row) {
- for (uint8_t col = 0; col < DisplayWidth; ++col) {
- i2c_master_write(0);
- }
- }
-
- display.dirty = false;
-
-done:
- i2c_master_stop();
-}
-
-#if DEBUG_TO_SCREEN
-#undef sendchar
-static int8_t capture_sendchar(uint8_t c) {
- sendchar(c);
- iota_gfx_write_char(c);
-
- if (!displaying) {
- iota_gfx_flush();
- }
- return 0;
-}
-#endif
-
-bool iota_gfx_init(bool rotate) {
- bool success = false;
-
- i2c_master_init();
- send_cmd1(DisplayOff);
- send_cmd2(SetDisplayClockDiv, 0x80);
- send_cmd2(SetMultiPlex, DisplayHeight - 1);
-
- send_cmd2(SetDisplayOffset, 0);
-
-
- send_cmd1(SetStartLine | 0x0);
- send_cmd2(SetChargePump, 0x14 /* Enable */);
- send_cmd2(SetMemoryMode, 0 /* horizontal addressing */);
-
- if(rotate){
- // the following Flip the display orientation 180 degrees
- send_cmd1(SegRemap);
- send_cmd1(ComScanInc);
- }else{
- // Flips the display orientation 0 degrees
- send_cmd1(SegRemap | 0x1);
- send_cmd1(ComScanDec);
- }
-
- send_cmd2(SetComPins, 0x2);
- send_cmd2(SetContrast, 0x8f);
- send_cmd2(SetPreCharge, 0xf1);
- send_cmd2(SetVComDetect, 0x40);
- send_cmd1(DisplayAllOnResume);
- send_cmd1(NormalDisplay);
- send_cmd1(DeActivateScroll);
- send_cmd1(DisplayOn);
-
- send_cmd2(SetContrast, 0); // Dim
-
- clear_display();
-
- success = true;
-
- iota_gfx_flush();
-
-#if DEBUG_TO_SCREEN
- print_set_sendchar(capture_sendchar);
-#endif
-
-done:
- return success;
-}
-
-bool iota_gfx_off(void) {
- bool success = false;
-
- send_cmd1(DisplayOff);
- success = true;
-
-done:
- return success;
-}
-
-bool iota_gfx_on(void) {
- bool success = false;
-
- send_cmd1(DisplayOn);
- success = true;
-
-done:
- return success;
-}
-
-void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c) {
- *matrix->cursor = c;
- ++matrix->cursor;
-
- if (matrix->cursor - &matrix->display[0][0] == sizeof(matrix->display)) {
- // We went off the end; scroll the display upwards by one line
- memmove(&matrix->display[0], &matrix->display[1],
- MatrixCols * (MatrixRows - 1));
- matrix->cursor = &matrix->display[MatrixRows - 1][0];
- memset(matrix->cursor, ' ', MatrixCols);
- }
-}
-
-void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c) {
- matrix->dirty = true;
-
- if (c == '\n') {
- // Clear to end of line from the cursor and then move to the
- // start of the next line
- uint8_t cursor_col = (matrix->cursor - &matrix->display[0][0]) % MatrixCols;
-
- while (cursor_col++ < MatrixCols) {
- matrix_write_char_inner(matrix, ' ');
- }
- return;
- }
-
- matrix_write_char_inner(matrix, c);
-}
-
-void iota_gfx_write_char(uint8_t c) {
- matrix_write_char(&display, c);
-}
-
-void matrix_write(struct CharacterMatrix *matrix, const char *data) {
- const char *end = data + strlen(data);
- while (data < end) {
- matrix_write_char(matrix, *data);
- ++data;
- }
-}
-
-void matrix_write_ln(struct CharacterMatrix *matrix, const char *data) {
- char data_ln[strlen(data)+2];
- snprintf(data_ln, sizeof(data_ln), "%s\n", data);
- matrix_write(matrix, data_ln);
-}
-
-void iota_gfx_write(const char *data) {
- matrix_write(&display, data);
-}
-
-void matrix_write_P(struct CharacterMatrix *matrix, const char *data) {
- while (true) {
- uint8_t c = pgm_read_byte(data);
- if (c == 0) {
- return;
- }
- matrix_write_char(matrix, c);
- ++data;
- }
-}
-
-void iota_gfx_write_P(const char *data) {
- matrix_write_P(&display, data);
-}
-
-void matrix_clear(struct CharacterMatrix *matrix) {
- memset(matrix->display, ' ', sizeof(matrix->display));
- matrix->cursor = &matrix->display[0][0];
- matrix->dirty = true;
-}
-
-void iota_gfx_clear_screen(void) {
- matrix_clear(&display);
-}
-
-void matrix_render(struct CharacterMatrix *matrix) {
- last_flush = timer_read();
- iota_gfx_on();
-#if DEBUG_TO_SCREEN
- ++displaying;
-#endif
-
- // Move to the home position
- send_cmd3(PageAddr, 0, MatrixRows - 1);
- send_cmd3(ColumnAddr, 0, (MatrixCols * FontWidth) - 1);
-
- if (i2c_start_write(SSD1306_ADDRESS)) {
- goto done;
- }
- if (i2c_master_write(0x40)) {
- // Data mode
- goto done;
- }
-
- for (uint8_t row = 0; row < MatrixRows; ++row) {
- for (uint8_t col = 0; col < MatrixCols; ++col) {
- const uint8_t *glyph = font + (matrix->display[row][col] * FontWidth);
-
- for (uint8_t glyphCol = 0; glyphCol < FontWidth; ++glyphCol) {
- uint8_t colBits = pgm_read_byte(glyph + glyphCol);
- i2c_master_write(colBits);
- }
-
- // 1 column of space between chars (it's not included in the glyph)
- //i2c_master_write(0);
- }
- }
-
- matrix->dirty = false;
-
-done:
- i2c_master_stop();
-#if DEBUG_TO_SCREEN
- --displaying;
-#endif
-}
-
-void iota_gfx_flush(void) {
- matrix_render(&display);
-}
-
-__attribute__ ((weak))
-void iota_gfx_task_user(void) {
-}
-
-void iota_gfx_task(void) {
- iota_gfx_task_user();
-
- if (display.dirty|| force_dirty) {
- iota_gfx_flush();
- force_dirty = false;
- }
-
- if (timer_elapsed(last_flush) > ScreenOffInterval) {
- iota_gfx_off();
- }
-}
-
-bool process_record_gfx(uint16_t keycode, keyrecord_t *record) {
- force_dirty = true;
- return true;
-}
-
-#endif
diff --git a/keyboards/satt/comet46/ssd1306.h b/keyboards/satt/comet46/ssd1306.h
deleted file mode 100644
index 11a3cc67f4..0000000000
--- a/keyboards/satt/comet46/ssd1306.h
+++ /dev/null
@@ -1,90 +0,0 @@
-#pragma once
-
-#include <stdbool.h>
-#include <stdio.h>
-#include "action.h"
-
-enum ssd1306_cmds {
- DisplayOff = 0xAE,
- DisplayOn = 0xAF,
-
- SetContrast = 0x81,
- DisplayAllOnResume = 0xA4,
-
- DisplayAllOn = 0xA5,
- NormalDisplay = 0xA6,
- InvertDisplay = 0xA7,
- SetDisplayOffset = 0xD3,
- SetComPins = 0xda,
- SetVComDetect = 0xdb,
- SetDisplayClockDiv = 0xD5,
- SetPreCharge = 0xd9,
- SetMultiPlex = 0xa8,
- SetLowColumn = 0x00,
- SetHighColumn = 0x10,
- SetStartLine = 0x40,
-
- SetMemoryMode = 0x20,
- ColumnAddr = 0x21,
- PageAddr = 0x22,
-
- ComScanInc = 0xc0,
- ComScanDec = 0xc8,
- SegRemap = 0xa0,
- SetChargePump = 0x8d,
- ExternalVcc = 0x01,
- SwitchCapVcc = 0x02,
-
- ActivateScroll = 0x2f,
- DeActivateScroll = 0x2e,
- SetVerticalScrollArea = 0xa3,
- RightHorizontalScroll = 0x26,
- LeftHorizontalScroll = 0x27,
- VerticalAndRightHorizontalScroll = 0x29,
- VerticalAndLeftHorizontalScroll = 0x2a,
-};
-
-// Controls the SSD1306 128x32 OLED display via i2c
-
-#ifndef SSD1306_ADDRESS
-#define SSD1306_ADDRESS 0x3C
-#endif
-
-#define DisplayHeight 32
-#define DisplayWidth 128
-
-#define FontHeight 8
-#define FontWidth 6
-
-#define MatrixRows (DisplayHeight / FontHeight)
-#define MatrixCols (DisplayWidth / FontWidth)
-
-struct CharacterMatrix {
- uint8_t display[MatrixRows][MatrixCols];
- uint8_t *cursor;
- bool dirty;
-};
-
-extern struct CharacterMatrix display;
-
-bool iota_gfx_init(bool rotate);
-void iota_gfx_task(void);
-bool iota_gfx_off(void);
-bool iota_gfx_on(void);
-void iota_gfx_flush(void);
-void iota_gfx_write_char(uint8_t c);
-void iota_gfx_write(const char *data);
-void iota_gfx_write_P(const char *data);
-void iota_gfx_clear_screen(void);
-
-void iota_gfx_task_user(void);
-
-void matrix_clear(struct CharacterMatrix *matrix);
-void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c);
-void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c);
-void matrix_write(struct CharacterMatrix *matrix, const char *data);
-void matrix_write_ln(struct CharacterMatrix *matrix, const char *data);
-void matrix_write_P(struct CharacterMatrix *matrix, const char *data);
-void matrix_render(struct CharacterMatrix *matrix);
-
-bool process_record_gfx(uint16_t keycode, keyrecord_t *record);
diff --git a/keyboards/satt/vision/config.h b/keyboards/satt/vision/config.h
index 2db8fa8b29..b4bf9e1978 100644
--- a/keyboards/satt/vision/config.h
+++ b/keyboards/satt/vision/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5454
-#define PRODUCT_ID 0x5649
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SatT
-#define PRODUCT Vision
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
diff --git a/keyboards/satt/vision/info.json b/keyboards/satt/vision/info.json
index 8d1965bfd9..bb32359aac 100644
--- a/keyboards/satt/vision/info.json
+++ b/keyboards/satt/vision/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Vision",
+ "manufacturer": "SatT",
"url": "",
"maintainer": "SatT",
+ "usb": {
+ "vid": "0x5454",
+ "pid": "0x5649",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"PgUp", "x":0, "y":0}, {"label":"Esc", "x":1.25, "y":0}, {"label":"Q", "x":2.25, "y":0}, {"label":"W", "x":3.25, "y":0}, {"label":"E", "x":4.25, "y":0}, {"label":"R", "x":5.25, "y":0}, {"label":"T", "x":6.25, "y":0}, {"label":"Y", "x":9, "y":0}, {"label":"U", "x":10, "y":0}, {"label":"I", "x":11, "y":0}, {"label":"O", "x":12, "y":0}, {"label":"P", "x":13, "y":0}, {"label":"Back", "x":14, "y":0}, {"label":"Del", "x":15, "y":0}, {"label":"PgDn", "x":0, "y":1}, {"label":"Tab", "x":1.25, "y":1, "w":1.25}, {"label":"A", "x":2.5, "y":1}, {"label":"S", "x":3.5, "y":1}, {"label":"D", "x":4.5, "y":1}, {"label":"F", "x":5.5, "y":1}, {"label":"G", "x":6.5, "y":1}, {"label":"H", "x":9.25, "y":1}, {"label":"J", "x":10.25, "y":1}, {"label":"K", "x":11.25, "y":1}, {"label":"L", "x":12.25, "y":1}, {"label":":", "x":13.25, "y":1}, {"label":"\"", "x":14.25, "y":1, "w":1.75}, {"label":"Shift", "x":1.25, "y":2, "w":1.75}, {"label":"Z", "x":3, "y":2}, {"label":"X", "x":4, "y":2}, {"label":"C", "x":5, "y":2}, {"label":"V", "x":6, "y":2}, {"label":"B", "x":7, "y":2}, {"label":"B", "x":8.75, "y":2}, {"label":"N", "x":9.75, "y":2}, {"label":"M", "x":10.75, "y":2}, {"label":"<", "x":11.75, "y":2}, {"label":">", "x":12.75, "y":2}, {"label":"?", "x":13.75, "y":2, "w":1.25}, {"label":"Adjust", "x":15, "y":2}, {"label":"Win", "x":1.25, "y":3, "w":1.5}, {"label":"Alt", "x":3.75, "y":3, "w":1.5}, {"label":"Lower", "x":5.25, "y":3, "w":2}, {"x":7.25, "y":3}, {"label":"Raise", "x":8.75, "y":3, "w":1.75}, {"label":"Enter", "x":10.5, "y":3}, {"label":"Alt", "x":11.5, "y":3, "w":1.5}, {"label":"Ctrl", "x":14.5, "y":3, "w":1.5}]
diff --git a/keyboards/satt/vision/keymaps/satt/keymap.c b/keyboards/satt/vision/keymaps/satt/keymap.c
index 4289fbc20a..cc088d94f3 100644
--- a/keyboards/satt/vision/keymaps/satt/keymap.c
+++ b/keyboards/satt/vision/keymaps/satt/keymap.c
@@ -100,7 +100,7 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = 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,
+ QK_BOOT, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
_______, _______, _______, _______, QWERTY, PSEU_US, CTALDEL, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/sauce/mild/config.h b/keyboards/sauce/mild/config.h
index 6e203a4341..989980b79e 100644
--- a/keyboards/sauce/mild/config.h
+++ b/keyboards/sauce/mild/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8367 // "SC"
-#define PRODUCT_ID 0x7783 // "MS"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Sauce
-#define PRODUCT Mild
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { C13, C14, C15, A15, F0, F1 }
#define MATRIX_COL_PINS { A10, A9, A8, B11, B10, B2, B1, B0, A7, A5, A4, A3, A2, A1, B6, B5, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sauce/mild/info.json b/keyboards/sauce/mild/info.json
index d722a03d8b..6893180ab8 100644
--- a/keyboards/sauce/mild/info.json
+++ b/keyboards/sauce/mild/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Sauce - Mild",
+ "keyboard_name": "Mild",
+ "manufacturer": "Sauce",
"url": "",
"maintainer": "Sauce",
+ "usb": {
+ "vid": "0x8367",
+ "pid": "0x7783",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/sawnsprojects/amber80/readme.md b/keyboards/sawnsprojects/amber80/readme.md
index bc5dd417fc..807ba0917f 100644
--- a/keyboards/sawnsprojects/amber80/readme.md
+++ b/keyboards/sawnsprojects/amber80/readme.md
@@ -20,6 +20,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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). \ No newline at end of file
diff --git a/keyboards/sawnsprojects/amber80/solder/config.h b/keyboards/sawnsprojects/amber80/solder/config.h
index 90c9bc522c..6643409761 100644
--- a/keyboards/sawnsprojects/amber80/solder/config.h
+++ b/keyboards/sawnsprojects/amber80/solder/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5350
-#define PRODUCT_ID 0xA801
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SawnsProjects X Yuutsu X Zlane
-#define PRODUCT Amber80 Solder
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -45,7 +38,6 @@
*/
#define MATRIX_ROW_PINS { B1, B2, B3, B7, D0, D1, F1, F0, D7, B4, D5, D3 }
#define MATRIX_COL_PINS { F4, F6, F7, C7, C6, B6, B5, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sawnsprojects/amber80/solder/info.json b/keyboards/sawnsprojects/amber80/solder/info.json
index 49ca20594c..a04fa2f716 100644
--- a/keyboards/sawnsprojects/amber80/solder/info.json
+++ b/keyboards/sawnsprojects/amber80/solder/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Amber80 SOLDER",
+ "keyboard_name": "Amber80 Solder",
+ "manufacturer": "SawnsProjects X Yuutsu X Zlane",
"url": "",
"maintainer": "SawnsProjects",
+ "usb": {
+ "vid": "0x5350",
+ "pid": "0xA801",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/sawnsprojects/amber80/solder/readme.md b/keyboards/sawnsprojects/amber80/solder/readme.md
index a429328702..094169a224 100644
--- a/keyboards/sawnsprojects/amber80/solder/readme.md
+++ b/keyboards/sawnsprojects/amber80/solder/readme.md
@@ -19,6 +19,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/sawnsprojects/krush/krush60/readme.md b/keyboards/sawnsprojects/krush/krush60/readme.md
index 515040f904..6890329c35 100644
--- a/keyboards/sawnsprojects/krush/krush60/readme.md
+++ b/keyboards/sawnsprojects/krush/krush60/readme.md
@@ -20,6 +20,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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). \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/config.h b/keyboards/sawnsprojects/krush/krush60/solder/config.h
index 4cd1a1b39c..5e0614f58e 100644
--- a/keyboards/sawnsprojects/krush/krush60/solder/config.h
+++ b/keyboards/sawnsprojects/krush/krush60/solder/config.h
@@ -17,13 +17,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5350
-#define PRODUCT_ID 0x6B32
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SawnsProjects
-#define PRODUCT Krush60 - Solder
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -31,7 +24,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B1, B2, D1, D2, D4, D6, F6, F7, F5, F4 }
#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D5, D3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sawnsprojects/krush/krush60/solder/info.json b/keyboards/sawnsprojects/krush/krush60/solder/info.json
index d95c475509..d3de2e9000 100644
--- a/keyboards/sawnsprojects/krush/krush60/solder/info.json
+++ b/keyboards/sawnsprojects/krush/krush60/solder/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Krush60 Solder",
+ "keyboard_name": "Krush60 - Solder",
+ "manufacturer": "SawnsProjects",
"url": "",
"maintainer": "MaiTheSan",
+ "usb": {
+ "vid": "0x5350",
+ "pid": "0x6B32",
+ "device_version": "0.0.1"
+ },
"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"
diff --git a/keyboards/sawnsprojects/krush/krush65/hotswap/config.h b/keyboards/sawnsprojects/krush/krush65/hotswap/config.h
new file mode 100644
index 0000000000..d545886dc0
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/hotswap/config.h
@@ -0,0 +1,64 @@
+/* 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/>.
+ */
+
+#pragma once
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 16
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { B1, B2, D4, F1, F0 }
+#define MATRIX_COL_PINS { B7, B3, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D0, D5, D6, D3 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+/* Caps Lock */
+#define LED_CAPS_LOCK_PIN B0
+#define LED_PIN_ON_STATE 0
+
+/* Encoders */
+
+#define ENCODERS 1
+
+#define ENCODERS_PAD_A { D1 }
+#define ENCODERS_PAD_B { D2 }
+
+#define ENCODERS_CW_KEY { { 12, 3 } }
+#define ENCODERS_CCW_KEY { { 12, 4 } }
+
+/* RGB */
+#define RGB_DI_PIN E6
+#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 200 /* 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_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/sawnsprojects/krush/krush65/hotswap/encoder_actions.c b/keyboards/sawnsprojects/krush/krush65/hotswap/encoder_actions.c
new file mode 100644
index 0000000000..039f8739b4
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/hotswap/encoder_actions.c
@@ -0,0 +1,58 @@
+/* Copyright 2020 Neil Brian Ramirez
+ * Copyright 2021 drashna jael're (@drashna)
+ * Copyright 2021 uybv
+ * 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 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 \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/hotswap/encoder_actions.h b/keyboards/sawnsprojects/krush/krush65/hotswap/encoder_actions.h
new file mode 100644
index 0000000000..098210d40c
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/hotswap/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); \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/hotswap/hotswap.c b/keyboards/sawnsprojects/krush/krush65/hotswap/hotswap.c
new file mode 100644
index 0000000000..8fd9a2fa14
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/hotswap/hotswap.c
@@ -0,0 +1,31 @@
+/* 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 "hotswap.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/sawnsprojects/krush/krush65/hotswap/hotswap.h b/keyboards/sawnsprojects/krush/krush65/hotswap/hotswap.h
new file mode 100644
index 0000000000..cc0d0dc7e9
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/hotswap/hotswap.h
@@ -0,0 +1,53 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "quantum.h"
+#include "encoder_actions.h"
+
+
+
+#define XXX 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, 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, K3D, K3E, K3F, \
+ K40, K42, K43, K45, K46, K47, K48, K4B, K4D, K4E, 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, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, XXX, K2F }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, XXX, K3D, K3E, K3F }, \
+ { K40, XXX, K42, K43, XXX, K45, K46, K47, K48, XXX, XXX, K4B, XXX, K4D, K4E, K4F }, \
+}
+
+#define LAYOUT_via_rotary( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, EC1A, EC2A,\
+ 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, K3D, K3E, K3F, \
+ K40, K42, K43, K45, K46, K47, K48, K4B, K4D, K4E, 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, XXX, K1F }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, XXX, K2D, XXX, K2F }, \
+ { K30, XXX, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, EC1A, K3D, K3E, K3F }, \
+ { K40, XXX, K42, K43, XXX, K45, K46, K47, K48, XXX, XXX, K4B, EC2A, K4D, K4E, K4F }, \
+}
diff --git a/keyboards/sawnsprojects/krush/krush65/hotswap/info.json b/keyboards/sawnsprojects/krush/krush65/hotswap/info.json
new file mode 100644
index 0000000000..b70ecd9ddd
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/hotswap/info.json
@@ -0,0 +1,163 @@
+{
+ "keyboard_name": "Krush65 - Hotswap",
+ "manufacturer": "SawnsProjects",
+ "url": "",
+ "maintainer": "MaiTheSan",
+ "usb": {
+ "vid": "0x5350",
+ "pid": "0x5B31",
+ "device_version": "0.0.1"
+ },
+ "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": "", "x": 13, "y": 0 },
+ { "label": "", "x": 14, "y": 0 },
+ { "label": "", "x": 15, "y": 0 },
+ { "label": "", "x": 0, "y": 1, "w": 1.5 },
+ { "label": "", "x": 1.5, "y": 1 },
+ { "label": "", "x": 2.5, "y": 1 },
+ { "label": "", "x": 3.5, "y": 1 },
+ { "label": "", "x": 4.5, "y": 1 },
+ { "label": "", "x": 5.5, "y": 1 },
+ { "label": "", "x": 6.5, "y": 1 },
+ { "label": "", "x": 7.5, "y": 1 },
+ { "label": "", "x": 8.5, "y": 1 },
+ { "label": "", "x": 9.5, "y": 1 },
+ { "label": "", "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": "", "x": 15, "y": 1 },
+ { "label": "", "x": 0, "y": 2, "w": 1.75 },
+ { "label": "", "x": 1.75, "y": 2 },
+ { "label": "", "x": 2.75, "y": 2 },
+ { "label": "", "x": 3.75, "y": 2 },
+ { "label": "", "x": 4.75, "y": 2 },
+ { "label": "", "x": 5.75, "y": 2 },
+ { "label": "", "x": 6.75, "y": 2 },
+ { "label": "", "x": 7.75, "y": 2 },
+ { "label": "", "x": 8.75, "y": 2 },
+ { "label": "", "x": 9.75, "y": 2 },
+ { "label": "", "x": 10.75, "y": 2 },
+ { "label": "", "x": 11.75, "y": 2 },
+ { "label": "", "x": 12.75, "y": 2, "w": 2.25 },
+ { "label": "", "x": 15, "y": 2 },
+ { "label": "", "x": 0, "y": 3, "w": 2.25 },
+ { "label": "", "x": 2.25, "y": 3 },
+ { "label": "", "x": 3.25, "y": 3 },
+ { "label": "", "x": 4.25, "y": 3 },
+ { "label": "", "x": 5.25, "y": 3 },
+ { "label": "", "x": 6.25, "y": 3 },
+ { "label": "", "x": 7.25, "y": 3 },
+ { "label": "", "x": 8.25, "y": 3 },
+ { "label": "", "x": 9.25, "y": 3 },
+ { "label": "", "x": 10.25, "y": 3 },
+ { "label": "", "x": 11.25, "y": 3 },
+ { "label": "", "x": 12.25, "y": 3, "w": 1.75 },
+ { "label": "", "x": 14, "y": 3 },
+ { "label": "", "x": 15, "y": 3 },
+ { "label": "", "x": 0, "y": 4, "w": 1.25 },
+ { "label": "", "x": 1.25, "y": 4, "w": 1.25 },
+ { "label": "", "x": 2.5, "y": 4, "w": 1.25 },
+ { "label": "", "x": 3.75, "y": 4, "w": 2.25 },
+ { "label": "", "x": 6, "y": 4, "w": 1.25 },
+ { "label": "", "x": 7.25, "y": 4, "w": 2.75 },
+ { "label": "", "x": 10, "y": 4, "w": 1.25 },
+ { "label": "", "x": 11.25, "y": 4, "w": 1.25 },
+ { "label": "", "x": 13, "y": 4 },
+ { "label": "", "x": 14, "y": 4 },
+ { "label": "", "x": 15, "y": 4 }
+ ]
+ },
+ "LAYOUT_via_rotary": {
+ "layout": [
+ { "label": "", "x": 0, "y": 0.75 },
+ { "label": "", "x": 1, "y": 0.75 },
+ { "label": "", "x": 2, "y": 0.75 },
+ { "label": "", "x": 3, "y": 0.75 },
+ { "label": "", "x": 4, "y": 0.75 },
+ { "label": "", "x": 5, "y": 0.75 },
+ { "label": "", "x": 6, "y": 0.75 },
+ { "label": "", "x": 7, "y": 0.75 },
+ { "label": "", "x": 8, "y": 0.75 },
+ { "label": "", "x": 9, "y": 0.75 },
+ { "label": "", "x": 10, "y": 0.75 },
+ { "label": "", "x": 11, "y": 0.75 },
+ { "label": "", "x": 12, "y": 0.75 },
+ { "label": "", "x": 13, "y": 0.75 },
+ { "label": "", "x": 14, "y": 0.75 },
+ { "label": "", "x": 15, "y": 0.75 },
+ { "label": "", "x": 14.75, "y": 0, "w": 0.75, "h": 0.75 },
+ { "label": "", "x": 15.5, "y": 0, "w": 0.75, "h": 0.75 },
+ { "label": "", "x": 0, "y": 1.75, "w": 1.5 },
+ { "label": "", "x": 1.5, "y": 1.75 },
+ { "label": "", "x": 2.5, "y": 1.75 },
+ { "label": "", "x": 3.5, "y": 1.75 },
+ { "label": "", "x": 4.5, "y": 1.75 },
+ { "label": "", "x": 5.5, "y": 1.75 },
+ { "label": "", "x": 6.5, "y": 1.75 },
+ { "label": "", "x": 7.5, "y": 1.75 },
+ { "label": "", "x": 8.5, "y": 1.75 },
+ { "label": "", "x": 9.5, "y": 1.75 },
+ { "label": "", "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": "", "x": 15, "y": 1.75 },
+ { "label": "", "x": 0, "y": 2.75, "w": 1.75 },
+ { "label": "", "x": 1.75, "y": 2.75 },
+ { "label": "", "x": 2.75, "y": 2.75 },
+ { "label": "", "x": 3.75, "y": 2.75 },
+ { "label": "", "x": 4.75, "y": 2.75 },
+ { "label": "", "x": 5.75, "y": 2.75 },
+ { "label": "", "x": 6.75, "y": 2.75 },
+ { "label": "", "x": 7.75, "y": 2.75 },
+ { "label": "", "x": 8.75, "y": 2.75 },
+ { "label": "", "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, "w": 2.25 },
+ { "label": "", "x": 15, "y": 2.75 },
+ { "label": "", "x": 0, "y": 3.75, "w": 2.25 },
+ { "label": "", "x": 2.25, "y": 3.75 },
+ { "label": "", "x": 3.25, "y": 3.75 },
+ { "label": "", "x": 4.25, "y": 3.75 },
+ { "label": "", "x": 5.25, "y": 3.75 },
+ { "label": "", "x": 6.25, "y": 3.75 },
+ { "label": "", "x": 7.25, "y": 3.75 },
+ { "label": "", "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": "", "x": 12.25, "y": 3.75, "w": 1.75 },
+ { "label": "", "x": 14, "y": 3.75 },
+ { "label": "", "x": 15, "y": 3.75 },
+ { "label": "", "x": 0, "y": 4.75, "w": 1.25 },
+ { "label": "", "x": 1.25, "y": 4.75, "w": 1.25 },
+ { "label": "", "x": 2.5, "y": 4.75, "w": 1.25 },
+ { "label": "", "x": 3.75, "y": 4.75, "w": 2.25 },
+ { "label": "", "x": 6, "y": 4.75, "w": 1.25 },
+ { "label": "", "x": 7.25, "y": 4.75, "w": 2.75 },
+ { "label": "", "x": 10, "y": 4.75, "w": 1.25 },
+ { "label": "", "x": 11.25, "y": 4.75, "w": 1.25 },
+ { "label": "", "x": 13, "y": 4.75 },
+ { "label": "", "x": 14, "y": 4.75 },
+ { "label": "", "x": 15, "y": 4.75 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/default/keymap.c b/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/default/keymap.c
new file mode 100644
index 0000000000..13883d07e4
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/* 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_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
+ ),
+
+};
+
diff --git a/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/default/readme.md b/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/default/readme.md
new file mode 100644
index 0000000000..33e79b607e
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for krush65 Hotswap
diff --git a/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/via/keymap.c b/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d55eb74fb0
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/via/keymap.c
@@ -0,0 +1,60 @@
+ /* 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_via_rotary(
+ KC_ESC, KC_1, KC_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_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_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_via_rotary(
+ 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_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_via_rotary(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_via_rotary(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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 matrix_scan_user(void) {
+ encoder_action_unregister();
+}
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ encoder_action_register(index, clockwise);
+ return false; // override kb default behavior
+}; \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/via/readme.md b/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/via/readme.md
new file mode 100644
index 0000000000..a03a6d13a9
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The VIA keymap for krush65 Hotswap
diff --git a/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/via/rules.mk b/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/via/rules.mk
new file mode 100644
index 0000000000..a9739430b9
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/hotswap/keymaps/via/rules.mk
@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+
+# Added encoder Action
+SRC += encoder_actions.c \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/hotswap/readme.md b/keyboards/sawnsprojects/krush/krush65/hotswap/readme.md
new file mode 100644
index 0000000000..9e2ae1735e
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/hotswap/readme.md
@@ -0,0 +1,23 @@
+# Krush65 Hotswap
+
+![Krush65](https://imgur.com/56ZvWUmh.jpg)
+
+A 65% keyboard PCB made and sold by SawnsProjects with Nuxros in [mechkey.store](https://mechkey.store/blogs/store-updates/introducing-krush-65).
+
+* Keyboard Maintainer: [Mai The San](https://github.com/MaiTheSan)
+* Hardware Supported: Krush65
+* Hardware Availability: [mechkey.store](https://mechkey.store/products/krush-65-hotswap-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 `QK_BOOT` if it is available
+
+Make example for this keyboard (after setting up your build environment):
+
+ make sawnsprojects/krush/krush65/hotswap: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/sawnsprojects/krush/krush65/hotswap/rules.mk b/keyboards/sawnsprojects/krush/krush65/hotswap/rules.mk
new file mode 100644
index 0000000000..c754f3f5d0
--- /dev/null
+++ b/keyboards/sawnsprojects/krush/krush65/hotswap/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 = 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
+ENCODER_ENABLE = yes
diff --git a/keyboards/sawnsprojects/krush/krush65/readme.md b/keyboards/sawnsprojects/krush/krush65/readme.md
index 34e996f0bf..cc2efdfcfe 100644
--- a/keyboards/sawnsprojects/krush/krush65/readme.md
+++ b/keyboards/sawnsprojects/krush/krush65/readme.md
@@ -20,6 +20,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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). \ No newline at end of file
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/config.h b/keyboards/sawnsprojects/krush/krush65/solder/config.h
index 1afab16a0e..54318a485b 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/config.h
+++ b/keyboards/sawnsprojects/krush/krush65/solder/config.h
@@ -17,13 +17,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5350
-#define PRODUCT_ID 0x6B31
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SawnsProjects
-#define PRODUCT Krush65 - Solder
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -31,7 +24,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B1, B2, D1, D2, D4, D6, F6, F7, F5, F4 }
#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D5, D3 }
-#define UNUSED_PINS
/* indicator */
// #define LED_CAPS_LOCK_PIN F0
diff --git a/keyboards/sawnsprojects/krush/krush65/solder/info.json b/keyboards/sawnsprojects/krush/krush65/solder/info.json
index b72946bf55..c7ab169977 100644
--- a/keyboards/sawnsprojects/krush/krush65/solder/info.json
+++ b/keyboards/sawnsprojects/krush/krush65/solder/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Krush65 Solder",
+ "keyboard_name": "Krush65 - Solder",
+ "manufacturer": "SawnsProjects",
"url": "",
"maintainer": "MaiTheSan",
+ "usb": {
+ "vid": "0x5350",
+ "pid": "0x6B31",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_all": "LAYOUT_65_ansi_blocker_split_bs_sp"
},
diff --git a/keyboards/sawnsprojects/satxri6key/config.h b/keyboards/sawnsprojects/satxri6key/config.h
index 5ad3f20093..077b18d0d8 100644
--- a/keyboards/sawnsprojects/satxri6key/config.h
+++ b/keyboards/sawnsprojects/satxri6key/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5350
-#define PRODUCT_ID 0x0727
-#define DEVICE_VER 0x0001
-#define MANUFACTURER MaiTheSan
-#define PRODUCT Satxri6key
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
diff --git a/keyboards/sawnsprojects/satxri6key/info.json b/keyboards/sawnsprojects/satxri6key/info.json
index 77897e179c..a158fff7d2 100644
--- a/keyboards/sawnsprojects/satxri6key/info.json
+++ b/keyboards/sawnsprojects/satxri6key/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Satxri6key",
+ "manufacturer": "MaiTheSan",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5350",
+ "pid": "0x0727",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sawnsprojects/vcl65/readme.md b/keyboards/sawnsprojects/vcl65/readme.md
index 025c41badf..d47c145e79 100644
--- a/keyboards/sawnsprojects/vcl65/readme.md
+++ b/keyboards/sawnsprojects/vcl65/readme.md
@@ -20,6 +20,6 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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). \ No newline at end of file
diff --git a/keyboards/sawnsprojects/vcl65/solder/config.h b/keyboards/sawnsprojects/vcl65/solder/config.h
index bf1a7cdde6..b536e66c1f 100644
--- a/keyboards/sawnsprojects/vcl65/solder/config.h
+++ b/keyboards/sawnsprojects/vcl65/solder/config.h
@@ -17,13 +17,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5350
-#define PRODUCT_ID 0x1727
-#define DEVICE_VER 0x0001
-#define MANUFACTURER VCL x SawnsProjects
-#define PRODUCT VCL65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -31,7 +24,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F6, F7, F0, F4, B1 }
#define MATRIX_COL_PINS { B2, B5, F5, C7, B4, C6, D7, D6, D4, D5, D3, D2, B6, D1, D0 }
-#define UNUSED_PINS
/* indicator */
// #define LED_CAPS_LOCK_PIN F0
diff --git a/keyboards/sawnsprojects/vcl65/solder/info.json b/keyboards/sawnsprojects/vcl65/solder/info.json
index bae3093b4f..982a09d953 100644
--- a/keyboards/sawnsprojects/vcl65/solder/info.json
+++ b/keyboards/sawnsprojects/vcl65/solder/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "VCL65 Solder",
+ "keyboard_name": "VCL65",
+ "manufacturer": "VCL x SawnsProjects",
"url": "",
"maintainer": "MaiTheSan",
+ "usb": {
+ "vid": "0x5350",
+ "pid": "0x1727",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/sawnsprojects/vcl65/solder/readme.md b/keyboards/sawnsprojects/vcl65/solder/readme.md
index 06b44ab730..b168e0e079 100644
--- a/keyboards/sawnsprojects/vcl65/solder/readme.md
+++ b/keyboards/sawnsprojects/vcl65/solder/readme.md
@@ -18,6 +18,6 @@ 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 PCB - some may have pads you must short instead
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/scatter42/config.h b/keyboards/scatter42/config.h
index ca7ce70ff3..e271984760 100644
--- a/keyboards/scatter42/config.h
+++ b/keyboards/scatter42/config.h
@@ -19,13 +19,6 @@ 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 0x3B47
-#define DEVICE_VER 0x0001
-#define MANUFACTURER bbrfkr
-#define PRODUCT scatter42
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/scatter42/info.json b/keyboards/scatter42/info.json
index 5802fc5cdc..c30750c7c2 100644
--- a/keyboards/scatter42/info.json
+++ b/keyboards/scatter42/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "scatter42",
+ "manufacturer": "bbrfkr",
"url": "https://github.com/bbrfkr/keyboards/tree/master/scatter42",
"maintainer": "bbrfkr",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3B47",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sck/gtm/config.h b/keyboards/sck/gtm/config.h
index a8ead5ccb5..fb0f5d3b4a 100644
--- a/keyboards/sck/gtm/config.h
+++ b/keyboards/sck/gtm/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6090
-#define DEVICE_VER 0x0002
-#define MANUFACTURER SpaceCityKeyboards
-#define PRODUCT GTM Pad
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 6
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { C4, C5, D1 }
#define MATRIX_COL_PINS { B4, B5, B6, B7, C7, D0 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { D2 }
diff --git a/keyboards/sck/gtm/info.json b/keyboards/sck/gtm/info.json
index 147704f65e..4da024cd44 100644
--- a/keyboards/sck/gtm/info.json
+++ b/keyboards/sck/gtm/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Grand Theft Macro Pad",
+ "keyboard_name": "GTM Pad",
+ "manufacturer": "SpaceCityKeyboards",
"url": "",
"maintainer": "jrfhoutx",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6090",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sck/m0116b/config.h b/keyboards/sck/m0116b/config.h
index b008ff1b24..95d9f66318 100644
--- a/keyboards/sck/m0116b/config.h
+++ b/keyboards/sck/m0116b/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER jrfhoutx
-#define PRODUCT Golden Delicious
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D1, F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { D5, D3, D2, D0, B3, B2, B1, B0, E6, B5, B6, C6, C7, F7, D4, D6, D7, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sck/m0116b/info.json b/keyboards/sck/m0116b/info.json
index 37b3a10176..df77370b8b 100644
--- a/keyboards/sck/m0116b/info.json
+++ b/keyboards/sck/m0116b/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Golden Delicious - M0116B",
+ "manufacturer": "jrfhoutx",
"url": "https://github.com/jrfhoutx",
"maintainer": "jrfhoutx",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_m0116_ansi": {
"layout": [
diff --git a/keyboards/sck/m0116b/keymaps/m0116/keymap.c b/keyboards/sck/m0116b/keymaps/m0116/keymap.c
index 8a6f831fe6..56bb777f7a 100644
--- a/keyboards/sck/m0116b/keymaps/m0116/keymap.c
+++ b/keyboards/sck/m0116b/keymaps/m0116/keymap.c
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* Keymap Layer 1: (Layer 1) Layer 1
* ,---------------------------------------------------------------------------------.
- * | |RESET| |
+ * | |QK_BOOT| |
* `---------------------------------------------------------------------------------'
* ,-----------------------------------------------------------. .-------------------.
* | |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12| | | | | | |
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------' `-------------------'
*/
[1] = LAYOUT_m0116_ansi( /* Layer 1 */
- RESET,
+ QK_BOOT,
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_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/sck/m0116b/keymaps/m0118/keymap.c b/keyboards/sck/m0116b/keymaps/m0118/keymap.c
index 5d718e9a77..7a54952f97 100644
--- a/keyboards/sck/m0116b/keymaps/m0118/keymap.c
+++ b/keyboards/sck/m0116b/keymaps/m0118/keymap.c
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------' `-------------------'
*/
[1] = LAYOUT_m0118_iso( /* Layer 1 */
- RESET,
+ QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/sck/neiso/config.h b/keyboards/sck/neiso/config.h
index 9ff392ec25..254e0a6d11 100644
--- a/keyboards/sck/neiso/config.h
+++ b/keyboards/sck/neiso/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Space City Keyboards
-#define PRODUCT NEISO
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 5
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ F4 }
#define MATRIX_COL_PINS \
{ B3, D2, F5, F7, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sck/neiso/info.json b/keyboards/sck/neiso/info.json
index 069b01a2e9..4303e58857 100644
--- a/keyboards/sck/neiso/info.json
+++ b/keyboards/sck/neiso/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NEISO",
+ "manufacturer": "Space City Keyboards",
"url": "",
"maintainer": "jrfhoutx",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0.25, "y":0, "w":2, "h":1.25}, {"x":2.75, "y":0.25, "w":1.25, "h":2}, {"x":1.5, "y":1.5}, {"x":0, "y":1.75, "w":1.25, "h":2}, {"x":1.75, "y":2.75, "w":2, "h":1.25}]
diff --git a/keyboards/sck/osa/config.h b/keyboards/sck/osa/config.h
index 6e3d617e9a..b83eee8dd5 100644
--- a/keyboards/sck/osa/config.h
+++ b/keyboards/sck/osa/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5343 // "SC"
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Space City Keyboards
-#define PRODUCT OSA
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, B0, B1, B2, B3, B7 }
#define MATRIX_COL_PINS { B4, D7, D5, D3, D2, D0, D1, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sck/osa/info.json b/keyboards/sck/osa/info.json
index 210c302f90..37e05235f6 100644
--- a/keyboards/sck/osa/info.json
+++ b/keyboards/sck/osa/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "OSA",
+ "manufacturer": "Space City Keyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5343",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default_ansi": {
"layout": [{"label":"Esc", "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":"Backspace", "x":16.25, "y":0, "w":2}, {"label":"Page Up", "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":"|", "x":16.75, "y":1, "w":1.5}, {"label":"Page Down", "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":2.75}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.5}, {"label":"Win", "x":4.25, "y":4, "w":1.5}, {"x":5.75, "y":4, "w":2.25}, {"label":"Fn", "x":8, "y":4}, {"x":9.5, "y":4, "w":2.75}, {"label":"Alt", "x":12.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":16.75, "y":4, "w":1.5}]
diff --git a/keyboards/sekigon/grs_70ec/config.h b/keyboards/sekigon/grs_70ec/config.h
index 2eb52658e5..b2e1882574 100644
--- a/keyboards/sekigon/grs_70ec/config.h
+++ b/keyboards/sekigon/grs_70ec/config.h
@@ -19,13 +19,6 @@ 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 0x70EC
-#define DEVICE_VER 0x0001
-#define MANUFACTURER sekigon-gonnoc
-#define PRODUCT GRS-70EC
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -46,7 +39,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
#define MATRIX_COL_CHANNELS { 2, 1, 0, 3, 5, 7, 6, 4 }
-#define UNUSED_PINS
#define DISCHARGE_PIN B1
#define ANALOG_PORT F6
#define MUX_SEL_PINS { D1, D0, D4 }
diff --git a/keyboards/sekigon/grs_70ec/info.json b/keyboards/sekigon/grs_70ec/info.json
index 93a6327a67..55db0571f7 100644
--- a/keyboards/sekigon/grs_70ec/info.json
+++ b/keyboards/sekigon/grs_70ec/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "grs_70ec",
+ "keyboard_name": "GRS-70EC",
+ "manufacturer": "sekigon-gonnoc",
"url": "https://github.com/sekigon-gonnoc/GRS-70EC-doc/",
"maintainer": "sekigon-gonnoc",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x70EC",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sendyyeah/75pixels/config.h b/keyboards/sendyyeah/75pixels/config.h
index 9cb41e4917..26fc9334fd 100644
--- a/keyboards/sendyyeah/75pixels/config.h
+++ b/keyboards/sendyyeah/75pixels/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5359
-#define PRODUCT_ID 0x3735
-#define DEVICE_VER 0x0001
-#define MANUFACTURER sendyyeah
-#define PRODUCT 75 Pixels
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
diff --git a/keyboards/sendyyeah/75pixels/info.json b/keyboards/sendyyeah/75pixels/info.json
index 6fb65c1d88..4bfc29e243 100644
--- a/keyboards/sendyyeah/75pixels/info.json
+++ b/keyboards/sendyyeah/75pixels/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "beVi",
+ "keyboard_name": "75 Pixels",
+ "manufacturer": "sendyyeah",
"url": "https://github.com/sendyyeah/bevi",
"maintainer": "sendyyeah",
+ "usb": {
+ "vid": "0x5359",
+ "pid": "0x3735",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x15": {
"layout": [
diff --git a/keyboards/sendyyeah/bevi/config.h b/keyboards/sendyyeah/bevi/config.h
index 8283329986..fff3556e2b 100644
--- a/keyboards/sendyyeah/bevi/config.h
+++ b/keyboards/sendyyeah/bevi/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5359
-#define PRODUCT_ID 0x4256
-#define DEVICE_VER 0x0001
-#define MANUFACTURER sendyyeah
-#define PRODUCT beVi
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
diff --git a/keyboards/sendyyeah/bevi/info.json b/keyboards/sendyyeah/bevi/info.json
index 05e66f3aa5..508c3f50ef 100644
--- a/keyboards/sendyyeah/bevi/info.json
+++ b/keyboards/sendyyeah/bevi/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "beVi",
+ "manufacturer": "sendyyeah",
"url": "https://github.com/sendyyeah/bevi",
"maintainer": "sendyyeah",
+ "usb": {
+ "vid": "0x5359",
+ "pid": "0x4256",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sendyyeah/pix/config.h b/keyboards/sendyyeah/pix/config.h
index 86c6d26e16..48fd375b07 100644
--- a/keyboards/sendyyeah/pix/config.h
+++ b/keyboards/sendyyeah/pix/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5359
-#define PRODUCT_ID 0x4e34
-#define DEVICE_VER 0x0001
-#define MANUFACTURER sendyyeah
-#define PRODUCT Pix
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 5
diff --git a/keyboards/sendyyeah/pix/info.json b/keyboards/sendyyeah/pix/info.json
index 39e016dae1..339ad499f6 100644
--- a/keyboards/sendyyeah/pix/info.json
+++ b/keyboards/sendyyeah/pix/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pix",
+ "manufacturer": "sendyyeah",
"url": "https://github.com/sendz/pix",
"maintainer": "sendz",
+ "usb": {
+ "vid": "0x5359",
+ "pid": "0x4E34",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/senselessclay/ck60/config.h b/keyboards/senselessclay/ck60/config.h
index dc2cb68c79..ea48db4e15 100644
--- a/keyboards/senselessclay/ck60/config.h
+++ b/keyboards/senselessclay/ck60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4849 // HI
-#define PRODUCT_ID 0x0601 // 60rgb (1)
-#define DEVICE_VER 0x0000 // rev0
-#define MANUFACTURER senselessclay
-#define PRODUCT ck60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/senselessclay/ck60/info.json b/keyboards/senselessclay/ck60/info.json
index 55a7e95b46..27088f2785 100644
--- a/keyboards/senselessclay/ck60/info.json
+++ b/keyboards/senselessclay/ck60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "CK60",
+ "manufacturer": "senselessclay",
"url": "https://candykeys.com",
"maintainer": "had-i",
+ "usb": {
+ "vid": "0x4849",
+ "pid": "0x0601",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_60_iso"
},
diff --git a/keyboards/senselessclay/ck65/config.h b/keyboards/senselessclay/ck65/config.h
index f23560f164..68571b63c7 100644
--- a/keyboards/senselessclay/ck65/config.h
+++ b/keyboards/senselessclay/ck65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4849 // HI
-#define PRODUCT_ID 0x0651 // 65rgb (1)
-#define DEVICE_VER 0x0000 // rev0
-#define MANUFACTURER senselessclay
-#define PRODUCT ck65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B3, B2, F1, F4, F5 }
#define MATRIX_COL_PINS { F0, 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
diff --git a/keyboards/senselessclay/ck65/info.json b/keyboards/senselessclay/ck65/info.json
index c1dcf3cebd..54e43ccc94 100644
--- a/keyboards/senselessclay/ck65/info.json
+++ b/keyboards/senselessclay/ck65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "CK65",
+ "manufacturer": "senselessclay",
"url": "https://candykeys.com",
"maintainer": "had-i",
+ "usb": {
+ "vid": "0x4849",
+ "pid": "0x0651",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_65_iso"
},
diff --git a/keyboards/senselessclay/gos65/config.h b/keyboards/senselessclay/gos65/config.h
index 5656d77ea5..724e47e797 100644
--- a/keyboards/senselessclay/gos65/config.h
+++ b/keyboards/senselessclay/gos65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -49,7 +42,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/senselessclay/gos65/info.json b/keyboards/senselessclay/gos65/info.json
index 95f0960a47..6bad2ae556 100644
--- a/keyboards/senselessclay/gos65/info.json
+++ b/keyboards/senselessclay/gos65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "gos65",
+ "manufacturer": "senselessclay",
"url": "https://senselessclay.com/",
"maintainer": "hadi",
+ "usb": {
+ "vid": "0x4849",
+ "pid": "0x0650",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/senselessclay/had60/config.h b/keyboards/senselessclay/had60/config.h
index 60a4b23d02..9ec21ffa84 100644
--- a/keyboards/senselessclay/had60/config.h
+++ b/keyboards/senselessclay/had60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4849 // HI
-#define PRODUCT_ID 0x060F // 60flex
-#define DEVICE_VER 0x0001 // rev1
-#define MANUFACTURER senselessclay
-#define PRODUCT had60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -47,7 +40,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { F1, F0, F7, F6, F5 }
#define MATRIX_COL_PINS { F4, 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
diff --git a/keyboards/senselessclay/had60/info.json b/keyboards/senselessclay/had60/info.json
index a14c171d69..5dbcf2f68c 100644
--- a/keyboards/senselessclay/had60/info.json
+++ b/keyboards/senselessclay/had60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "had60",
+ "manufacturer": "senselessclay",
"url": "https://senselessclay.com/",
"maintainer": "hadi",
+ "usb": {
+ "vid": "0x4849",
+ "pid": "0x060F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/senselessclay/had60/keymaps/had/keymap.c b/keyboards/senselessclay/had60/keymaps/had/keymap.c
index 0776a740ef..add0595522 100644
--- a/keyboards/senselessclay/had60/keymaps/had/keymap.c
+++ b/keyboards/senselessclay/had60/keymaps/had/keymap.c
@@ -30,7 +30,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),
[2] = LAYOUT_all(
- MAGIC_NO_GUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11, KC_F12, KC_TRNS, RESET,
+ MAGIC_NO_GUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11, KC_F12, KC_TRNS, QK_BOOT,
MAGIC_UNNO_GUI, 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_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_DOWN, KC_TRNS, KC_TRNS,
diff --git a/keyboards/sentraq/number_pad/config.h b/keyboards/sentraq/number_pad/config.h
index 0426773a68..a3b13ac2f7 100644
--- a/keyboards/sentraq/number_pad/config.h
+++ b/keyboards/sentraq/number_pad/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Sentraq
-#define PRODUCT Sentraq Number Pad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F5, F0, B5, D6, D4 }
#define MATRIX_COL_PINS { C7, D5, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sentraq/number_pad/info.json b/keyboards/sentraq/number_pad/info.json
index 806edcea27..b0c0ca370d 100644
--- a/keyboards/sentraq/number_pad/info.json
+++ b/keyboards/sentraq/number_pad/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "Sentraq Number Pad",
+ "keyboard_name": "Number Pad",
+ "manufacturer": "Sentraq",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"url": "https://sentraq.com/collections/kits/products/number-pad-rgb-kit",
"layouts": {
"LAYOUT_numpad_5x4": {
diff --git a/keyboards/sentraq/s60_x/default/config.h b/keyboards/sentraq/s60_x/default/config.h
index 3f08499531..25baca4b88 100644
--- a/keyboards/sentraq/s60_x/default/config.h
+++ b/keyboards/sentraq/s60_x/default/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Sentraq
-#define PRODUCT S60-X
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -16,7 +9,6 @@
/* key matrix pins */
#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, E6, F1 }
-#define UNUSED_PINS { F0 }
/* number of backlight levels */
#define BACKLIGHT_PIN B7
diff --git a/keyboards/sentraq/s60_x/default/info.json b/keyboards/sentraq/s60_x/default/info.json
new file mode 100644
index 0000000000..3f0110679d
--- /dev/null
+++ b/keyboards/sentraq/s60_x/default/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "S60-X"
+}
diff --git a/keyboards/sentraq/s60_x/info.json b/keyboards/sentraq/s60_x/info.json
index 6d664193c5..424c576c72 100644
--- a/keyboards/sentraq/s60_x/info.json
+++ b/keyboards/sentraq/s60_x/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "S60-X",
+ "manufacturer": "Sentraq",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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":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}, {"x":13, "y":0}, {"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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3, "w":1.25}, {"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}, {"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":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/sentraq/s60_x/keymaps/amnesia0287/keymap.c b/keyboards/sentraq/s60_x/keymaps/amnesia0287/keymap.c
index c17c9e7449..238c744ee3 100644
--- a/keyboards/sentraq/s60_x/keymaps/amnesia0287/keymap.c
+++ b/keyboards/sentraq/s60_x/keymaps/amnesia0287/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_HL] = LAYOUT(
RGB_TOG, RGB_M_P, RGB_RMOD, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, BL_BRTG, BL_OFF, BL_STEP, BL_ON, BL_DEC, BL_INC, KC_TRNS, LALT(KC_F4),
- RESET, 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,
+ QK_BOOT, 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, 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, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
diff --git a/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/keymap.c b/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/keymap.c
index 2bfe82977c..e0644f0a21 100644
--- a/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/keymap.c
+++ b/keyboards/sentraq/s60_x/keymaps/ansi_qwertz/keymap.c
@@ -136,7 +136,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------'
*/
[FUNCTION] = 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_INS, 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_INS, QK_BOOT, \
_______, _______, KC_CM_W, KC_CM_E, KC_MPRV, KC_MPLY, KC_MNXT, KC_CM_U, KC_CM_I, KC_CM_O, KC_CM_P, KC_PSCR, KC_SLCK, KC_PAUS, \
_______, KC_CM_A, KC_CM_S, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, KC_CM_K, KC_CM_L, _______, _______, _______, KC_PENT, \
_______, _______, KC_CM_Y, _______, KC_CM_C, MICMUTE, KC_CALC, KC_CM_N, KC_CM_M, _______, _______, _______, KC_PGUP, KC_GMLK, \
diff --git a/keyboards/sentraq/s60_x/keymaps/bluebear/keymap.c b/keyboards/sentraq/s60_x/keymaps/bluebear/keymap.c
index 2ba29b09ee..17c39d0b37 100644
--- a/keyboards/sentraq/s60_x/keymaps/bluebear/keymap.c
+++ b/keyboards/sentraq/s60_x/keymaps/bluebear/keymap.c
@@ -206,7 +206,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 2: Mouse Keys Layer
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────â”
- │RESET│ F13 │ F14 │ F15 │ F16 │ F17 │ F18 │ F19 │ F20 │ F21 │ F22 │ F23 │ F24 │ │ │
+ │QK_BOOT│ F13 │ F14 │ F15 │ F16 │ F17 │ F18 │ F19 │ F20 │ F21 │ F22 │ F23 │ F24 │ │ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│DEBUG│ │ │ │ │ │ │BTN1 │MS_UP│BTN2 │WH_UP│ │ │ │█████│
├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
@@ -220,7 +220,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MOUSE] = LAYOUT(
- RESET, 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_NO, KC_NO, \
+ QK_BOOT, 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_NO, KC_NO, \
DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_BTN1, KC_MS_UP, KC_BTN2, KC_WH_U, KC_NO, KC_NO, KC_NO, \
TFS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_WH_D, KC_BTN3, KC_NO, KC_TRNS, \
MAGSYS, 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, \
diff --git a/keyboards/sentraq/s60_x/rgb/config.h b/keyboards/sentraq/s60_x/rgb/config.h
index 63abf8cc21..0ab4093862 100644
--- a/keyboards/sentraq/s60_x/rgb/config.h
+++ b/keyboards/sentraq/s60_x/rgb/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Sentraq
-#define PRODUCT S60-X-RGB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B5, B4, D7, D6, D4 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, B6, C6, C7, F1, F0, E6, B3, B2, B1, B0 }
-#define UNUSED_PINS
/* number of backlight levels */
#define BACKLIGHT_PIN B7
diff --git a/keyboards/sentraq/s60_x/rgb/info.json b/keyboards/sentraq/s60_x/rgb/info.json
new file mode 100644
index 0000000000..bcee4ef9db
--- /dev/null
+++ b/keyboards/sentraq/s60_x/rgb/info.json
@@ -0,0 +1,3 @@
+{
+ "keyboard_name": "S60-X-RGB"
+}
diff --git a/keyboards/sentraq/s65_plus/config.h b/keyboards/sentraq/s65_plus/config.h
index 2f02e8e162..cc7fd7e753 100644
--- a/keyboards/sentraq/s65_plus/config.h
+++ b/keyboards/sentraq/s65_plus/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT S65-PLUS
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Sentraq
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { C7, C6, B6, B5, B4 }
#define MATRIX_COL_PINS { F6, F5, F4, F1, F0, E6, B0, B1, D5, B2, B3, D0, D1, D2, D4, D6, D7, F7 }
-#define UNUSED_PINS
#define LED_CAPS_LOCK_PIN B7
#define LED_PIN_ON_STATE 0
diff --git a/keyboards/sentraq/s65_plus/info.json b/keyboards/sentraq/s65_plus/info.json
index 141f7d6c63..625bc63fd3 100644
--- a/keyboards/sentraq/s65_plus/info.json
+++ b/keyboards/sentraq/s65_plus/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "S65-Plus",
+ "manufacturer": "Sentraq",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/sentraq/s65_x/config.h b/keyboards/sentraq/s65_x/config.h
index b8886bf67f..2381a7c7d1 100644
--- a/keyboards/sentraq/s65_x/config.h
+++ b/keyboards/sentraq/s65_x/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT S65-X RGB
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Sentraq
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { C7, C6, B6, B5, B4 }
#define MATRIX_COL_PINS { F4, F1, F0, E6, B0, B1, D5, B2, B3, D0, D1, D2, D4, D6, D7, F7 }
-#define UNUSED_PINS
/* number of backlight levels */
#define BACKLIGHT_PIN B7
diff --git a/keyboards/sentraq/s65_x/info.json b/keyboards/sentraq/s65_x/info.json
index 20088cee89..7e87cf2011 100644
--- a/keyboards/sentraq/s65_x/info.json
+++ b/keyboards/sentraq/s65_x/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "S65-X PCB",
+ "manufacturer": "Sentraq",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/sentraq/s65_x/keymaps/smt/keymap.c b/keyboards/sentraq/s65_x/keymaps/smt/keymap.c
index 8c3984c21f..ab5eb8d820 100644
--- a/keyboards/sentraq/s65_x/keymaps/smt/keymap.c
+++ b/keyboards/sentraq/s65_x/keymaps/smt/keymap.c
@@ -110,7 +110,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────â”
* │ │ │ │ │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │ RGB │
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
- * │ │ │ │ │RESET│ │ │QWRTY│COLMK│DVORK│ │ │ │ │█████│RGBV+│
+ * │ │ │ │ │QK_BOOT│ │ │QWRTY│COLMK│DVORK│ │ │ │ │█████│RGBV+│
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
* │ │ │ _CL │ │ │ │ │ │ │ │ │ │▒▒▒▒▒│ │█████│RGBV-│
* ├─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
@@ -123,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 4: ANSI control layer */
[_CL] = LAYOUT_65_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, \
- _______, _______, _______, _______, RESET, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, RGB_VAI, \
+ _______, _______, _______, _______, QK_BOOT, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, RGB_VAI, \
_______, _______, MO(_CL), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, \
MO(_FL), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, _______, \
_______, _______, _______, RGB_MOD, _______, MO(_FL), _______, RGB_HUD, RGB_SAD, RGB_HUI),
diff --git a/keyboards/sergiopoverony/creator_pro/config.h b/keyboards/sergiopoverony/creator_pro/config.h
index 3bf7efc77d..d83cc7c635 100644
--- a/keyboards/sergiopoverony/creator_pro/config.h
+++ b/keyboards/sergiopoverony/creator_pro/config.h
@@ -17,14 +17,6 @@
#pragma once
#include "config_common.h"
-/* vid pid */
-#define VENDOR_ID 0x8B1E
-#define PRODUCT_ID 0x0C00
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SergioPoverony
-#define PRODUCT Creator Pro
-
-
/* key matrix size pins */
#define MATRIX_ROWS 1
#define MATRIX_COLS 9
@@ -45,5 +37,4 @@
#define ENCODERS_PAD_B { D3 }
#define ENCODER_RESOLUTION 1
-#define UNUSED_PINS
diff --git a/keyboards/sergiopoverony/creator_pro/info.json b/keyboards/sergiopoverony/creator_pro/info.json
index a64615a78f..71d82a85bb 100644
--- a/keyboards/sergiopoverony/creator_pro/info.json
+++ b/keyboards/sergiopoverony/creator_pro/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Creator Pro",
+ "manufacturer": "SergioPoverony",
"url": "https://github.com/sergiopoverony",
"maintainer": "SergioPoverony",
+ "usb": {
+ "vid": "0x8B1E",
+ "pid": "0x0C00",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sets3n/kk980/config.h b/keyboards/sets3n/kk980/config.h
index 016ab0d460..e24468054e 100644
--- a/keyboards/sets3n/kk980/config.h
+++ b/keyboards/sets3n/kk980/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x404A
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Sets3n
-#define PRODUCT kk980
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -43,7 +36,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B2, B3, D3, D4, D5, D6 }
#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, B1, B0, D0, D1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sets3n/kk980/info.json b/keyboards/sets3n/kk980/info.json
index dad5530d44..9b712f7507 100644
--- a/keyboards/sets3n/kk980/info.json
+++ b/keyboards/sets3n/kk980/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "kk980",
+ "manufacturer": "Sets3n",
"url": "https://i.imgur.com/MQA6FXb.jpg",
"maintainer": "Sets3n",
+ "usb": {
+ "vid": "0x404A",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sets3n/kk980/readme.md b/keyboards/sets3n/kk980/readme.md
index 0a1142e571..a238ae0524 100644
--- a/keyboards/sets3n/kk980/readme.md
+++ b/keyboards/sets3n/kk980/readme.md
@@ -14,7 +14,7 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
## HEX
diff --git a/keyboards/shambles/config.h b/keyboards/shambles/config.h
index 26f9c9515e..52dc73121e 100644
--- a/keyboards/shambles/config.h
+++ b/keyboards/shambles/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x4F42
-#define DEVICE_VER 0x0001
-#define MANUFACTURER OsciX
-#define PRODUCT Shambles TKL
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F5, B3, B1, F7 }
#define MATRIX_COL_PINS { D3, D1, D0, D4, C6, D7, E6, B4, B5, B6, B2, F4, F6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/shambles/info.json b/keyboards/shambles/info.json
index 5952442d7d..071f0c7568 100644
--- a/keyboards/shambles/info.json
+++ b/keyboards/shambles/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Shambles TKL",
+ "manufacturer": "OsciX",
"url": "",
"maintainer": "OsciX",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0F42",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"K00", "x":0, "y":0}, {"label":"K01", "x":1.5, "y":0}, {"label":"K02", "x":2.5, "y":0}, {"label":"K03", "x":3.5, "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":8, "y":0}, {"label":"K08", "x":9, "y":0}, {"label":"K09", "x":10.25, "y":0}, {"label":"K10", "x":11.25, "y":0}, {"label":"K11", "x":12.25, "y":0}, {"label":"K12", "x":0, "y":1.5}, {"label":"K13", "x":1, "y":1.5}, {"label":"K14", "x":2, "y":1.5}, {"label":"K15", "x":3, "y":1.5}, {"label":"K16", "x":4, "y":1.5}, {"label":"K17", "x":5, "y":1.5}, {"label":"K18", "x":6, "y":1.5}, {"label":"K19", "x":7, "y":1.5}, {"label":"K20", "x":8, "y":1.5}, {"label":"K21", "x":9, "y":1.5}, {"label":"K22", "x":10.25, "y":1.25}, {"label":"K23", "x":11.25, "y":1.25}, {"label":"K24", "x":12.25, "y":1.25}, {"label":"K25", "x":0, "y":2.5}, {"label":"K26", "x":1, "y":2.5}, {"label":"K27", "x":2, "y":2.5}, {"label":"K28", "x":3, "y":2.5}, {"label":"K29", "x":4, "y":2.5}, {"label":"K30", "x":5, "y":2.5}, {"label":"K31", "x":6, "y":2.5}, {"label":"K32", "x":7, "y":2.5}, {"label":"K33", "x":8, "y":2.5}, {"label":"K34", "x":9, "y":2.5}, {"label":"K35", "x":11.25, "y":2.5}, {"label":"K36", "x":0.5, "y":3.5}, {"label":"K37", "x":1.5, "y":3.5}, {"label":"K38", "x":2.5, "y":3.5}, {"label":"K39", "x":3.5, "y":3.5}, {"label":"K40", "x":4.5, "y":3.5, "w":2}, {"label":"K41", "x":6.5, "y":3.5}, {"label":"K42", "x":7.5, "y":3.5}, {"label":"K43", "x":8.5, "y":3.5}, {"label":"K44", "x":10.25, "y":3.5}, {"label":"K45", "x":11.25, "y":3.5}, {"label":"K43", "x":12.25, "y":3.5}]
diff --git a/keyboards/shapeshifter4060/config.h b/keyboards/shapeshifter4060/config.h
index ee84318f3d..0846a73e0a 100644
--- a/keyboards/shapeshifter4060/config.h
+++ b/keyboards/shapeshifter4060/config.h
@@ -19,21 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/shapeshifter4060/info.json b/keyboards/shapeshifter4060/info.json
index 5ec2bc2b03..14a0e4407f 100644
--- a/keyboards/shapeshifter4060/info.json
+++ b/keyboards/shapeshifter4060/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Shapeshifter 4060",
+ "manufacturer": "Vosechu",
"url": "kitsunekeyboards.com",
"maintainer": "vosechu",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0xA1F1",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/shapeshifter4060/keymaps/default/keymap.c b/keyboards/shapeshifter4060/keymaps/default/keymap.c
index 88ea5a7138..15f8d3a82f 100644
--- a/keyboards/shapeshifter4060/keymaps/default/keymap.c
+++ b/keyboards/shapeshifter4060/keymaps/default/keymap.c
@@ -86,6 +86,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______ , 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 , _______ ,
- _______ , QK_BOOT , _______ , _______ , _LAYER_ , KC_BSPC , _______ , KC_LSFT , KC_LGUI , KC_LALT , KC_LCTL , _______
+ _______ , QK_BOOT, _______ , _______ , _LAYER_ , KC_BSPC , _______ , KC_LSFT , KC_LGUI , KC_LALT , KC_LCTL , _______
)
};
diff --git a/keyboards/shapeshifter4060/keymaps/vosechu/keymap.c b/keyboards/shapeshifter4060/keymaps/vosechu/keymap.c
index eb04506ec0..f2a75c38cc 100644
--- a/keyboards/shapeshifter4060/keymaps/vosechu/keymap.c
+++ b/keyboards/shapeshifter4060/keymaps/vosechu/keymap.c
@@ -21,7 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
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 ,
+ PAWFIVE , KC_QUOT , KC_COMM , KC_DOT , KC_P , KC_Y , KC_F , KC_G , KC_C , KC_R , KC_L , QK_BOOT,
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
@@ -48,6 +48,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______ , 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 , _______
+ _______ , QK_BOOT, _______ , _______ , _LAYER_ , KC_BSPC , _______ , KC_LSFT , KC_LGUI , KC_LALT , KC_LCTL , _______
)
};
diff --git a/keyboards/shapeshifter4060/readme.md b/keyboards/shapeshifter4060/readme.md
index 2f134ce15b..d318502c20 100644
--- a/keyboards/shapeshifter4060/readme.md
+++ b/keyboards/shapeshifter4060/readme.md
@@ -26,7 +26,7 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
## Changelog
diff --git a/keyboards/shiro/config.h b/keyboards/shiro/config.h
index 80243234e7..c2bb97a1cc 100644
--- a/keyboards/shiro/config.h
+++ b/keyboards/shiro/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER T.Shinohara
-#define PRODUCT Shiro
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 3
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
#define MATRIX_COL_PINS { F4, F5, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/shiro/info.json b/keyboards/shiro/info.json
index a4be71c6d3..e2ff5a96dd 100644
--- a/keyboards/shiro/info.json
+++ b/keyboards/shiro/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Shiro",
+ "manufacturer": "T.Shinohara",
"url": "https://github.com/ShinoharaTa/keyboards/blob/master/Shiro/manual/build_guide_ja.md",
"maintainer": "T.Shinohara",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/shk9/config.h b/keyboards/shk9/config.h
index 059515c776..a23a37cb53 100644
--- a/keyboards/shk9/config.h
+++ b/keyboards/shk9/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5348
-#define PRODUCT_ID 0x4B39
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Superhuman
-#define PRODUCT SHK9
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { B0, B1, B2 }
#define MATRIX_COL_PINS { B3, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/shk9/info.json b/keyboards/shk9/info.json
index 529668ce0d..7784728b0a 100644
--- a/keyboards/shk9/info.json
+++ b/keyboards/shk9/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "SHK9",
+ "manufacturer": "Superhuman",
"url": "http://superhuman.website",
"maintainer": "Sam Hudson",
+ "usb": {
+ "vid": "0x5348",
+ "pid": "0x4B39",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_3x3": {
"layout": [
diff --git a/keyboards/shoc/config.h b/keyboards/shoc/config.h
new file mode 100644
index 0000000000..98084059af
--- /dev/null
+++ b/keyboards/shoc/config.h
@@ -0,0 +1,34 @@
+/* Copyright 2022 JannikB5825
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 OLED_DISPLAY_128X64
+#define OLED_TIMEOUT 300000
+
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 8
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, B3, B6, B2 }
+#define MATRIX_COL_PINS { D3, D2, D4, C6, D7, E6, B4, B5 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define DEBOUNCE 5
+
diff --git a/keyboards/shoc/info.json b/keyboards/shoc/info.json
new file mode 100644
index 0000000000..d398e67956
--- /dev/null
+++ b/keyboards/shoc/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "Shoc",
+ "manufacturer": "JannikB5825",
+ "url": "https://github.com/JannikB5825/Shoc",
+ "maintainer": "JannikB5825",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "1.0.0"
+ },
+ "processor": "atmega32u4",
+ "bootloader": "caterina",
+ "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": 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": 0, "y": 2, "w": 1.5 },
+ { "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": 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": 0, "y": 4, "w": 1.5 },
+ { "x": 1.5, "y": 4 },
+ { "x": 2.5, "y": 4, "w": 1.5 },
+ { "x": 4, "y": 4, "w": 2 },
+ { "x": 6, "y": 4 },
+ { "x": 7, "y": 4, "w": 2 },
+ { "x": 9, "y": 4 },
+ { "x": 10, "y": 4 },
+ { "x": 12, "y": 0, "w": 2 },
+ { "x": 11, "y": 0 },
+ { "x": 10, "y": 0 },
+ { "x": 9, "y": 0 },
+ { "x": 8, "y": 0 },
+ { "x": 8, "y": 1 },
+ { "x": 9, "y": 1 },
+ { "x": 10, "y": 1 },
+ { "x": 13, "y": 4 },
+ { "x": 12, "y": 4 },
+ { "x": 11, "y": 4 },
+ { "x": 13, "y": 3 },
+ { "x": 12, "y": 3 },
+ { "x": 11, "y": 3 },
+ { "x": 10, "y": 3 },
+ { "x": 9, "y": 3 },
+ { "x": 11, "y": 1 },
+ { "x": 12, "y": 1 },
+ { "x": 13, "y": 1 },
+ { "x": 12.5, "y": 2, "w": 1.5 },
+ { "x": 11.5, "y": 2 },
+ { "x": 10.5, "y": 2 },
+ { "x": 9.5, "y": 2 },
+ { "x": 8.5, "y": 2 }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/shoc/keymaps/bongo/keymap.c b/keyboards/shoc/keymaps/bongo/keymap.c
new file mode 100644
index 0000000000..14779f1d75
--- /dev/null
+++ b/keyboards/shoc/keymaps/bongo/keymap.c
@@ -0,0 +1,176 @@
+/* Copyright 2022 JannikB5825
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J,
+ KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL,
+ KC_BSPC, KC_MINS, KC_0, KC_9, KC_8, KC_I, KC_O, KC_P,
+ KC_RGHT, KC_DOWN, KC_LEFT, KC_EQL, KC_UP, KC_SLSH, KC_COMM, KC_DOT,
+ KC_RBRC, KC_LBRC, KC_BSLS, KC_ENT, KC_QUOT, KC_SCLN, KC_L, KC_K),
+
+ [1] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J,
+ KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL,
+ KC_BSPC, KC_F11, KC_F10, KC_F9, KC_F8, KC_I, KC_O, KC_P,
+ KC_RGHT, KC_DOWN, KC_LEFT, KC_DEL, KC_UP, KC_SLSH, KC_COMM, KC_DOT,
+ KC_RBRC, KC_LBRC, KC_BSLS, KC_ENT, KC_QUOT, KC_SCLN, KC_L, KC_K)
+
+
+};
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_0;
+}
+//full credit goes to https://www.reddit.com/user/Pop-X-/ only small feature comforts were added
+
+#define IDLE_FRAMES 5
+#define IDLE_SPEED 30 // below this wpm value your animation will idle
+#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 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_tap_frame = 0;
+
+// Images credit j-inc(/James Incandenza) and pixelbenny. Credit to obosob for initial animation approach.
+static 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,128,128,128,128, 64, 64, 64, 64, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
+ 32, 16, 16, 16, 16, 8, 8, 8, 8, 4, 4, 4, 4, 2, 2, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,128,128,128, 64, 64, 64, 64, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
+ 32, 16, 16, 16, 16, 8, 8, 8, 8, 4, 4, 4, 4, 2, 2, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,128,128,128, 64, 64, 64, 64, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
+ 32, 16, 16, 16, 16, 8, 8, 8, 8, 4, 4, 4, 4, 2, 2, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,128,128,128, 64, 64, 64, 64, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
+ 32, 16, 16, 16, 16, 8, 8, 8, 8, 4, 4, 4, 4, 2, 2, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,128,128,128, 64, 64, 64, 64, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
+ 32, 16, 16, 16, 16, 8, 8, 8, 8, 4, 4, 4, 4, 2, 2, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
+ }
+ };
+ 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,128,128,128,128, 64, 64, 64, 64, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
+ 32, 16, 16, 16, 16, 8, 8, 8, 8, 4, 4, 4, 4, 2, 2, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
+ }
+ };
+ 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,128,128,128,128, 64, 64, 64, 64, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
+ 32, 16, 16, 16, 16, 8, 8, 8, 8, 4, 4, 4, 4, 2, 2, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
+ },
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128,128,128,128, 64, 64, 64, 64, 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, 2,130,135, 31, 7,159, 7, 28, 7,159, 7,159, 7, 2,130, 0, 0, 0, 0,
+ 32, 16, 16, 16, 16, 8, 8, 8, 8, 4, 4, 4, 4, 2, 2, 2, 2, 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, 48,120,124,254,255, 63, 7, 0, 0, 0, 0,255,255,127,127, 63, 62, 28, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 8, 8, 23, 0, 15, 1, 2, 1, 15, 0, 15, 2, 5, 8
+ },
+ };
+
+ //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[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,6);
+ oled_write_P(PSTR(" WPM: "), false);
+ oled_write(get_u8_str(get_current_wpm(), '0'), false);
+ if(host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)){
+ oled_set_cursor(0,5);
+ oled_write_P(PSTR(" CAPS LOCK"), false);
+ }
+ else{
+ oled_set_cursor(0,5);
+ oled_write_P(PSTR(" "), false);
+ }
+ return false;
+}
+#endif
diff --git a/keyboards/shoc/keymaps/default/keymap.c b/keyboards/shoc/keymaps/default/keymap.c
new file mode 100644
index 0000000000..a5916db65a
--- /dev/null
+++ b/keyboards/shoc/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+/* Copyright 2022 JannikB5825
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J,
+ KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL,
+ KC_BSPC, KC_MINS, KC_0, KC_9, KC_8, KC_I, KC_O, KC_P,
+ KC_RGHT, KC_DOWN, KC_LEFT, KC_EQL, KC_UP, KC_SLSH, KC_COMM, KC_DOT,
+ KC_RBRC, KC_LBRC, KC_BSLS, KC_ENT, KC_QUOT, KC_SCLN, KC_L, KC_K),
+
+ [1] = LAYOUT(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J,
+ KC_LSFT, KC_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_RALT, KC_RCTL,
+ KC_BSPC, KC_F11, KC_F10, KC_F9, KC_F8, KC_I, KC_O, KC_P,
+ KC_RGHT, KC_DOWN, KC_LEFT, KC_DEL, KC_UP, KC_SLSH, KC_COMM, KC_DOT,
+ KC_RBRC, KC_LBRC, KC_BSLS, KC_ENT, KC_QUOT, KC_SCLN, KC_L, KC_K)
+
+
+};
diff --git a/keyboards/shoc/readme.md b/keyboards/shoc/readme.md
new file mode 100644
index 0000000000..4f81d47efb
--- /dev/null
+++ b/keyboards/shoc/readme.md
@@ -0,0 +1,21 @@
+# Shoc
+
+![Shoc](https://i.imgur.com/k00Uz6wh.jpg)
+
+A 64 Key keyboard with an Oled Display.
+
+* Keyboard Maintainer: [JannikB5825](https://github.com/JannikB5825)
+* Hardware Supported: Shoc PCB, Pro Micro 5V/16MHz and compatible.
+* Hardware Availability: [Shoc](https://github.com/JannikB5825/Shoc).
+
+Make example for this keyboard (after setting up your build environment):
+
+ make shoc:default
+
+Flashing example for this keyboard:
+
+ make shoc:default:flash
+
+## Bootloader
+
+Briefly press the button along the outer edge of the PCB next to the microcontroller.
diff --git a/keyboards/shoc/rules.mk b/keyboards/shoc/rules.mk
new file mode 100644
index 0000000000..806df50421
--- /dev/null
+++ b/keyboards/shoc/rules.mk
@@ -0,0 +1,15 @@
+# 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
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+WPM_ENABLE = yes
diff --git a/keyboards/shoc/shoc.c b/keyboards/shoc/shoc.c
new file mode 100644
index 0000000000..eabb767d28
--- /dev/null
+++ b/keyboards/shoc/shoc.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 JannikB5825
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "shoc.h"
diff --git a/keyboards/shoc/shoc.h b/keyboards/shoc/shoc.h
new file mode 100644
index 0000000000..3ea48781e0
--- /dev/null
+++ b/keyboards/shoc/shoc.h
@@ -0,0 +1,38 @@
+/* Copyright 2022 JannikB5825
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, \
+ 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, k57, \
+ k60, k61, k62, k63, k64, k65, k66, k67, \
+ k70, k71, k72, k73, k74, k75, k76, k77 \
+) { \
+ { k00, k01, 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, k57 }, \
+ { k60, k61, k62, k63, k64, k65, k66, k67 }, \
+ { k70, k71, k72, k73, k74, k75, k76, k77 } \
+}
+
diff --git a/keyboards/sidderskb/majbritt/rev1/config.h b/keyboards/sidderskb/majbritt/rev1/config.h
index a6ccb2221b..cc05bc722d 100644
--- a/keyboards/sidderskb/majbritt/rev1/config.h
+++ b/keyboards/sidderskb/majbritt/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x534B // SB
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SiddersKB
-#define PRODUCT Majbritt
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/sidderskb/majbritt/rev1/info.json b/keyboards/sidderskb/majbritt/rev1/info.json
index 2677edb794..c337ab9cb1 100644
--- a/keyboards/sidderskb/majbritt/rev1/info.json
+++ b/keyboards/sidderskb/majbritt/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Majbritt",
+ "keyboard_name": "Majbritt Rev1",
+ "manufacturer": "SiddersKb",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x534B",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sidderskb/majbritt/rev2/config.h b/keyboards/sidderskb/majbritt/rev2/config.h
index 6bee0fa6bf..ac78a636e3 100644
--- a/keyboards/sidderskb/majbritt/rev2/config.h
+++ b/keyboards/sidderskb/majbritt/rev2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x534B // SB
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0002
-#define MANUFACTURER SiddersKb
-#define PRODUCT Majbritt
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/sidderskb/majbritt/rev2/info.json b/keyboards/sidderskb/majbritt/rev2/info.json
index 3e2aa450ad..9c3af6d1c4 100644
--- a/keyboards/sidderskb/majbritt/rev2/info.json
+++ b/keyboards/sidderskb/majbritt/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Majbritt Rev2",
- "maintainer": "Sleepdealr",
+ "manufacturer": "SiddersKb",
"url": "https://sidderskb.co.uk/",
+ "maintainer": "Sleepdealr",
+ "usb": {
+ "vid": "0x534B",
+ "pid": "0x0001",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/signum/3_0/config.h b/keyboards/signum/3_0/config.h
index d0c3175d0f..4ecd7cb9fd 100644
--- a/keyboards/signum/3_0/config.h
+++ b/keyboards/signum/3_0/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Troy Fletcher
-#define PRODUCT Signum30
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/signum/3_0/elitec/config.h b/keyboards/signum/3_0/elitec/config.h
index fdbfac3c93..0c8ad2e414 100644
--- a/keyboards/signum/3_0/elitec/config.h
+++ b/keyboards/signum/3_0/elitec/config.h
@@ -5,4 +5,3 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D2, D1, F5, B5 }
#define MATRIX_COL_PINS { B4, D7, D0, E6, D4, F6, F4, F7, B1, B3, C6, B2 }
-#define UNUSED_PINS
diff --git a/keyboards/signum/3_0/info.json b/keyboards/signum/3_0/info.json
index 2966e5114e..632d87e711 100644
--- a/keyboards/signum/3_0/info.json
+++ b/keyboards/signum/3_0/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Signum 3.0",
+ "manufacturer": "Troy Fletcher",
"url": "http://troyfletcher.net/",
"maintainer": "jceb",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_ortho_4x12"
},
diff --git a/keyboards/signum/3_0/keymaps/sgurenkov/config.h b/keyboards/signum/3_0/keymaps/sgurenkov/config.h
index 5f8d0d02b8..7d164aa3a9 100644
--- a/keyboards/signum/3_0/keymaps/sgurenkov/config.h
+++ b/keyboards/signum/3_0/keymaps/sgurenkov/config.h
@@ -29,9 +29,6 @@
// Auto Shift and Retro Shift (Auto Shift for Tap Hold).
#define AUTO_SHIFT_TIMEOUT TAPPING_TERM
-// Recommended for heavy chording.
-#define QMK_KEYS_PER_SCAN 4
-
// Mouse key speed and acceleration.
#undef MOUSEKEY_DELAY
#define MOUSEKEY_DELAY 0
diff --git a/keyboards/signum/3_0/teensy/config.h b/keyboards/signum/3_0/teensy/config.h
index 343131fce0..2a81c0f565 100644
--- a/keyboards/signum/3_0/teensy/config.h
+++ b/keyboards/signum/3_0/teensy/config.h
@@ -19,5 +19,4 @@
// clang-format off
#define MATRIX_ROW_PINS { B0, B3, F6, C7 }
#define MATRIX_COL_PINS { C6, D2, B7, D3, D0, F7, F5, B6, B5, B4, D1, D7 }
-#define UNUSED_PINS
// clang-format on
diff --git a/keyboards/silverbullet44/config.h b/keyboards/silverbullet44/config.h
index 28b53eb066..28339ff431 100644
--- a/keyboards/silverbullet44/config.h
+++ b/keyboards/silverbullet44/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x16C0
-#define PRODUCT_ID 0x27DB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SwanMatch
-#define PRODUCT SilverBullet44
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
#define MATRIX_COL_PINS { B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/silverbullet44/info.json b/keyboards/silverbullet44/info.json
index 40e7fb832f..bd6878aa66 100644
--- a/keyboards/silverbullet44/info.json
+++ b/keyboards/silverbullet44/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "SilverBullet44",
+ "manufacturer": "SwanMatch",
"url": "https://swanmatch.booth.pm/items/1561270",
"maintainer": "swanmatch",
+ "usb": {
+ "vid": "0x16C0",
+ "pid": "0x27DB",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/singa/config.h b/keyboards/singa/config.h
index 1d3ed105e1..e612ba93b2 100644
--- a/keyboards/singa/config.h
+++ b/keyboards/singa/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x736B // SK
-#define PRODUCT_ID 0x7575
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Singa Keyboards
-#define PRODUCT Singa
-
#define RGBLED_NUM 18
#define MATRIX_ROWS 7
@@ -32,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/singa/info.json b/keyboards/singa/info.json
index d65bf0c07b..ca79d19e72 100644
--- a/keyboards/singa/info.json
+++ b/keyboards/singa/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Singa",
+ "manufacturer": "Singa Keyboards",
"url": "http://singakbd.com/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x736B",
+ "pid": "0x7575",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"K05", "x":0, "y":0}, {"label":"K25", "x":1, "y":0}, {"label":"K35", "x":2, "y":0}, {"label":"K45", "x":3, "y":0}, {"label":"K55", "x":4, "y":0}, {"label":"K06", "x":5, "y":0}, {"label":"KA6", "x":6, "y":0}, {"label":"KA7", "x":7, "y":0}, {"label":"K07", "x":8, "y":0}, {"label":"KB5", "x":9, "y":0}, {"label":"KC5", "x":10, "y":0}, {"label":"KD5", "x":11, "y":0}, {"label":"KE5", "x":12, "y":0}, {"label":"KD1", "x":13, "y":0}, {"label":"KE1", "x":14, "y":0}, {"label":"KE2", "x":15, "y":0}, {"label":"K04", "x":0, "y":1}, {"label":"K14", "x":1, "y":1}, {"label":"K24", "x":2, "y":1}, {"label":"K34", "x":3, "y":1}, {"label":"K44", "x":4, "y":1}, {"label":"K54", "x":5, "y":1}, {"label":"K16", "x":6, "y":1}, {"label":"KB6", "x":7, "y":1}, {"label":"KB7", "x":8, "y":1}, {"label":"K17", "x":9, "y":1}, {"label":"KA4", "x":10, "y":1}, {"label":"KB4", "x":11, "y":1}, {"label":"KC4", "x":12, "y":1}, {"label":"KE4", "x":13, "y":1}, {"label":"KE4", "x":14, "y":1}, {"label":"KD0", "x":15, "y":1}, {"label":"K03", "x":0, "y":2, "w":1.5}, {"label":"K13", "x":1.5, "y":2}, {"label":"K23", "x":2.5, "y":2}, {"label":"K33", "x":3.5, "y":2}, {"label":"K43", "x":4.5, "y":2}, {"label":"K53", "x":5.5, "y":2}, {"label":"K26", "x":6.5, "y":2}, {"label":"KC6", "x":7.5, "y":2}, {"label":"KC7", "x":8.5, "y":2}, {"label":"K27", "x":9.5, "y":2}, {"label":"KA3", "x":10.5, "y":2}, {"label":"KB3", "x":11.5, "y":2}, {"label":"KC3", "x":12.5, "y":2}, {"label":"KD3", "x":13.5, "y":2, "w":1.5}, {"label":"K67", "x":15, "y":2}, {"label":"K02", "x":0, "y":3, "w":1.75}, {"label":"K12", "x":1.75, "y":3}, {"label":"K22", "x":2.75, "y":3}, {"label":"K32", "x":3.75, "y":3}, {"label":"K42", "x":4.75, "y":3}, {"label":"K52", "x":5.75, "y":3}, {"label":"K36", "x":6.75, "y":3}, {"label":"KD6", "x":7.75, "y":3}, {"label":"KD7", "x":8.75, "y":3}, {"label":"K37", "x":9.75, "y":3}, {"label":"KA2", "x":10.75, "y":3}, {"label":"KB2", "x":11.75, "y":3}, {"label":"KD2", "x":12.75, "y":3}, {"label":"KD2", "x":13.75, "y":3, "w":1.25}, {"label":"KE0", "x":15, "y":3}, {"label":"K01", "x":0, "y":4, "w":1.25}, {"label":"K01", "x":1.25, "y":4}, {"label":"K11", "x":2.25, "y":4}, {"label":"K21", "x":3.25, "y":4}, {"label":"K31", "x":4.25, "y":4}, {"label":"K41", "x":5.25, "y":4}, {"label":"K51", "x":6.25, "y":4}, {"label":"K46", "x":7.25, "y":4}, {"label":"KE6", "x":8.25, "y":4}, {"label":"KE7", "x":9.25, "y":4}, {"label":"K47", "x":10.25, "y":4}, {"label":"KA1", "x":11.25, "y":4}, {"label":"KB1", "x":12.25, "y":4, "w":1.75}, {"label":"K86", "x":14, "y":4}, {"label":"K77", "x":15, "y":4}, {"label":"K00", "x":0, "y":5, "w":1.25}, {"label":"K00", "x":1.25, "y":5, "w":1.25}, {"label":"K20", "x":2.5, "y":5, "w":1.25}, {"label":"K56", "x":3.75, "y":5, "w":1}, {"label":"K56", "x":4.75, "y":5, "w":1.25}, {"label":"K20", "x":6, "y":5, "w":1.75}, {"label":"K56", "x":7.75, "y":5, "w":1.25}, {"label":"K56", "x":9, "y":5, "w":1}, {"label":"K57", "x":10, "y":5}, {"label":"K57", "x":11, "y":5}, {"label":"K57", "x":12, "y":5}, {"label":"K66", "x":13, "y":5}, {"label":"K76", "x":14, "y":5}, {"label":"K96", "x":15, "y":5}]
diff --git a/keyboards/singa/keymaps/amnesia0287/keymap.c b/keyboards/singa/keymaps/amnesia0287/keymap.c
index dc52122db6..c42b73fdce 100644
--- a/keyboards/singa/keymaps/amnesia0287/keymap.c
+++ b/keyboards/singa/keymaps/amnesia0287/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FL] = LAYOUT_wkl(
- 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, \
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_TRNS, \
KC_CAPS, 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_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS, KC_TRNS, \
diff --git a/keyboards/singa/keymaps/test/keymap.c b/keyboards/singa/keymaps/test/keymap.c
index 6e284a4ac1..d31c277198 100644
--- a/keyboards/singa/keymaps/test/keymap.c
+++ b/keyboards/singa/keymaps/test/keymap.c
@@ -27,7 +27,7 @@
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_ESC, QK_BOOT, 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,
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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,
diff --git a/keyboards/sirius/uni660/rev1/config.h b/keyboards/sirius/uni660/rev1/config.h
index 4b810e2cd6..649fd5deda 100644
--- a/keyboards/sirius/uni660/rev1/config.h
+++ b/keyboards/sirius/uni660/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5352 // "SR"
-#define PRODUCT_ID 0x0201 // Second Product First Version
-#define DEVICE_VER 0x1912 // 2019.12
-#define MANUFACTURER SiRius
-#define PRODUCT Uni660
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/sirius/uni660/rev1/info.json b/keyboards/sirius/uni660/rev1/info.json
index f3a9b244e8..9960c4c35b 100644
--- a/keyboards/sirius/uni660/rev1/info.json
+++ b/keyboards/sirius/uni660/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Uni660",
+ "manufacturer": "SiRius",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5352",
+ "pid": "0x0201",
+ "device_version": "19.1.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sirius/uni660/rev2/ansi/config.h b/keyboards/sirius/uni660/rev2/ansi/config.h
index 19ee1166c3..649fd5deda 100644
--- a/keyboards/sirius/uni660/rev2/ansi/config.h
+++ b/keyboards/sirius/uni660/rev2/ansi/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5352 // "SR"
-#define PRODUCT_ID 0x0202 // Second Product Second Version
-#define DEVICE_VER 0x2004 // 2020.12
-#define MANUFACTURER SiRius
-#define PRODUCT Uni660 V2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/sirius/uni660/rev2/ansi/info.json b/keyboards/sirius/uni660/rev2/ansi/info.json
index 630038cdd0..eaf2e8538a 100644
--- a/keyboards/sirius/uni660/rev2/ansi/info.json
+++ b/keyboards/sirius/uni660/rev2/ansi/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Uni660",
+ "keyboard_name": "Uni660 V2 ANSI",
+ "manufacturer": "SiRius",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5352",
+ "pid": "0x0202",
+ "device_version": "20.0.4"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/sirius/uni660/rev2/iso/config.h b/keyboards/sirius/uni660/rev2/iso/config.h
index f0f771707e..649fd5deda 100644
--- a/keyboards/sirius/uni660/rev2/iso/config.h
+++ b/keyboards/sirius/uni660/rev2/iso/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5352 // "SR"
-#define PRODUCT_ID 0x0203 // Second Product Third Version
-#define DEVICE_VER 0x2004 // 2020.12
-#define MANUFACTURER SiRius
-#define PRODUCT Uni660 V2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/sirius/uni660/rev2/iso/info.json b/keyboards/sirius/uni660/rev2/iso/info.json
index e2d72bfb51..bb46a2f3ab 100644
--- a/keyboards/sirius/uni660/rev2/iso/info.json
+++ b/keyboards/sirius/uni660/rev2/iso/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Uni660",
+ "keyboard_name": "Uni660 V2 ISO",
+ "manufacturer": "SiRius",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5352",
+ "pid": "0x0203",
+ "device_version": "20.0.4"
+ },
"layouts": {
"LAYOUT_iso": {
"layout": [
diff --git a/keyboards/sirius/unigo66/config.h b/keyboards/sirius/unigo66/config.h
index 777046db0c..d1511874ec 100644
--- a/keyboards/sirius/unigo66/config.h
+++ b/keyboards/sirius/unigo66/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x1001
-#define DEVICE_VER 0x1901
-#define MANUFACTURER Sirius
-#define PRODUCT UniGo66
-
/* size of virtual matrix */
#define MATRIX_ROWS 16
#define MATRIX_COLS 16
diff --git a/keyboards/sirius/unigo66/info.json b/keyboards/sirius/unigo66/info.json
index d1acdeeb07..fca325dd92 100644
--- a/keyboards/sirius/unigo66/info.json
+++ b/keyboards/sirius/unigo66/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "UniGo66",
+ "manufacturer": "Sirius",
"url": "https://discord.gg/GJ8bdM",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1001",
+ "device_version": "19.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sirius/unigo66/keymaps/danielhklein/keymap.c b/keyboards/sirius/unigo66/keymaps/danielhklein/keymap.c
index 2425572bdc..e511cd5089 100644
--- a/keyboards/sirius/unigo66/keymaps/danielhklein/keymap.c
+++ b/keyboards/sirius/unigo66/keymaps/danielhklein/keymap.c
@@ -74,7 +74,7 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
/* FN
*
* ,--------------------------------------------------. ,--------------------------------------------------.
- * | RESET | | | | | | | | | | | | | | |
+ * | QK_BOOT | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | MAC | | | | | | | | | | PgDn | Up | PgUp | Print| Home |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
@@ -91,7 +91,7 @@ const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
* `-------------' `--------------'
*/
[_FN] = LAYOUT(
- RESET, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
MAC, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, KC_UP, KC_PGUP, KC_PSCR, KC_HOME,
WINDOWS, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, KC_END,
_______, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPLY, KC_MUTE, KC_VOLD, KC_VOLU, KC_MRWD, KC_MFFD,
diff --git a/keyboards/sixkeyboard/config.h b/keyboards/sixkeyboard/config.h
index a4d19a5ca1..f9379f5720 100644
--- a/keyboards/sixkeyboard/config.h
+++ b/keyboards/sixkeyboard/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x746B
-#define PRODUCT_ID 0x736B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER techkeys.us
-#define PRODUCT sixkeykeyboard
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
diff --git a/keyboards/sixkeyboard/info.json b/keyboards/sixkeyboard/info.json
index 9f8ffa4879..2c9206fcbf 100644
--- a/keyboards/sixkeyboard/info.json
+++ b/keyboards/sixkeyboard/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Techkeys SixKeyBoard",
+ "keyboard_name": "SixKeyBoard",
+ "manufacturer": "TechKeys",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x746B",
+ "pid": "0x736B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_2x3": {
"layout": [{"label":"k00", "x":0, "y":0}, {"label":"k01", "x":1, "y":0}, {"label":"k02", "x":2, "y":0}, {"label":"k10", "x":0, "y":1}, {"label":"k11", "x":1, "y":1}, {"label":"k12", "x":2, "y":1}]
diff --git a/keyboards/skeletn87/hotswap/config.h b/keyboards/skeletn87/hotswap/config.h
index 059daa0392..de3df5afbf 100644
--- a/keyboards/skeletn87/hotswap/config.h
+++ b/keyboards/skeletn87/hotswap/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xF984
-#define PRODUCT_ID 0xB5E9
-#define DEVICE_VER 0x0001
-#define MANUFACTURER BredWorks
-#define PRODUCT Skeletn87 Hotswap
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, B0, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/skeletn87/hotswap/info.json b/keyboards/skeletn87/hotswap/info.json
index 9878d6d194..a310bb260b 100644
--- a/keyboards/skeletn87/hotswap/info.json
+++ b/keyboards/skeletn87/hotswap/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "skeletn87 hotswap",
+ "keyboard_name": "Skeletn87 Hotswap",
+ "manufacturer": "BredWorks",
"url": "",
"maintainer": "kb-elmo<mail@elmo.space>",
+ "usb": {
+ "vid": "0xF984",
+ "pid": "0xB5E9",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/skeletn87/soldered/config.h b/keyboards/skeletn87/soldered/config.h
index 7580d0a43e..db7c1ab7a4 100644
--- a/keyboards/skeletn87/soldered/config.h
+++ b/keyboards/skeletn87/soldered/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xF984
-#define PRODUCT_ID 0xB5E8
-#define DEVICE_VER 0x0001
-#define MANUFACTURER BredWorks
-#define PRODUCT Skeletn87
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, B0, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/skeletn87/soldered/info.json b/keyboards/skeletn87/soldered/info.json
index e3d8c6d999..c62f4e559e 100644
--- a/keyboards/skeletn87/soldered/info.json
+++ b/keyboards/skeletn87/soldered/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "skeletn87",
+ "keyboard_name": "Skeletn87",
+ "manufacturer": "BredWorks",
"url": "",
"maintainer": "kb-elmo<mail@elmo.space>",
+ "usb": {
+ "vid": "0xF984",
+ "pid": "0xB5E8",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/skeletonkbd/skeletonnumpad/config.h b/keyboards/skeletonkbd/skeletonnumpad/config.h
index 3e93068b5a..b9ea8fdb77 100644
--- a/keyboards/skeletonkbd/skeletonnumpad/config.h
+++ b/keyboards/skeletonkbd/skeletonnumpad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x736C
-#define PRODUCT_ID 0x6E70
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SkeletonKBD
-#define PRODUCT SkeletonNumPad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, C6, C7, F7, F6 }
#define MATRIX_COL_PINS { D6, D7, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/skeletonkbd/skeletonnumpad/info.json b/keyboards/skeletonkbd/skeletonnumpad/info.json
index 0dac570601..050ff5b61b 100644
--- a/keyboards/skeletonkbd/skeletonnumpad/info.json
+++ b/keyboards/skeletonkbd/skeletonnumpad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "skeletonnumpad",
+ "keyboard_name": "SkeletonNumPad",
+ "manufacturer": "SkeletonKBD",
"url": "https://github.com/skeletonkbd/SkeletonNumPad",
"maintainer": "skeletonkbd",
+ "usb": {
+ "vid": "0x736C",
+ "pid": "0x6E70",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_5x4": {
"layout": [
diff --git a/keyboards/skeletonkbd/skeletonnumpad/readme.md b/keyboards/skeletonkbd/skeletonnumpad/readme.md
index fc67c79e54..538989277a 100644
--- a/keyboards/skeletonkbd/skeletonnumpad/readme.md
+++ b/keyboards/skeletonkbd/skeletonnumpad/readme.md
@@ -24,4 +24,4 @@ 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
+- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/skergo/config.h b/keyboards/skergo/config.h
index e736e4c8d4..54c83eb469 100644
--- a/keyboards/skergo/config.h
+++ b/keyboards/skergo/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B49
-#define PRODUCT_ID 0x534B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Keyzio
-#define PRODUCT SKErgo
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, B4, B3, B2, B1 }
#define MATRIX_COL_PINS { A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C2, C1, C0, D7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/skergo/info.json b/keyboards/skergo/info.json
index 06bcd31f70..c47a1ac45f 100644
--- a/keyboards/skergo/info.json
+++ b/keyboards/skergo/info.json
@@ -1,84 +1,167 @@
{
"keyboard_name": "SKErgo",
+ "manufacturer": "Keyzio",
"url": "https://keyz.io",
- "maintainer": "Keyz.io",
+ "maintainer": "kevinzhao-tech",
+ "usb": {
+ "vid": "0x4B49",
+ "pid": "0x534B",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT_all": "LAYOUT_split_bs"
+ },
"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.75, "y":0},
- {"label":"4", "x":4.75, "y":0},
- {"label":"5", "x":5.75, "y":0},
- {"label":"6", "x":6.75, "y":0},
- {"label":"7", "x":9.25, "y":0},
- {"label":"8", "x":10.25, "y":0},
- {"label":"9", "x":11.25, "y":0},
- {"label":"0", "x":12.25, "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},
+ "LAYOUT_2u_bs": {
+ "layout": [
+ {"label":"Esc", "x":0.5, "y":0.25},
+ {"label":"1!", "x":1.5, "y":0.25},
+ {"label":"2@", "x":2.5, "y":0.25},
+ {"label":"3#", "x":3.5, "y":0.25},
+ {"label":"4$", "x":4.5, "y":0.25},
+ {"label":"5%", "x":5.5, "y":0.25},
+ {"label":"6^", "x":6.5, "y":0.25},
+ {"label":"7&", "x":8.75, "y":0.25},
+ {"label":"8*", "x":9.75, "y":0.25},
+ {"label":"9(", "x":10.75, "y":0.25},
+ {"label":"0)", "x":11.75, "y":0.25},
+ {"label":"-_", "x":12.75, "y":0.25},
+ {"label":"=+", "x":13.75, "y":0.25},
+ {"label":"Backspace", "x":14.75, "y":0.25, "w":2},
+ {"label":"Page Up", "x":17, "y":0},
- {"label":"Tab", "x":0, "y":1, "w":1.5},
- {"label":"Q", "x":1.5, "y":1},
- {"label":"W", "x":3.25, "y":1},
- {"label":"E", "x":4.25, "y":1},
- {"label":"R", "x":5.25, "y":1},
- {"label":"T", "x":6.25, "y":1},
- {"label":"Y", "x":8.75, "y":1},
- {"label":"U", "x":9.75, "y":1},
- {"label":"I", "x":10.75, "y":1},
- {"label":"O", "x":11.75, "y":1},
- {"label":"P", "x":12.75, "y":1},
- {"label":"{", "x":14.25, "y":1},
- {"label":"}", "x":15.25, "y":1},
- {"label":"|", "x":16.25, "y":1, "w":1.5},
- {"label":"Pg Up", "x":18, "y":0},
+ {"label":"Tab", "w":1.5, "x":0.25, "y":1.25},
+ {"label":"Q", "x":1.75, "y":1.25},
+ {"label":"W", "x":2.75, "y":1.25},
+ {"label":"E", "x":3.75, "y":1.25},
+ {"label":"R", "x":4.75, "y":1.25},
+ {"label":"T", "x":5.75, "y":1.25},
+ {"label":"Y", "x":8.4, "y":1.25},
+ {"label":"U", "x":9.4, "y":1.25},
+ {"label":"I", "x":10.4, "y":1.25},
+ {"label":"O", "x":11.4, "y":1.25},
+ {"label":"P", "x":12.4, "y":1.25},
+ {"label":"[{", "x":13.4, "y":1.25},
+ {"label":"]}", "x":14.4, "y":1.25},
+ {"label":"\\|", "w":1.5, "x":15.4, "y":1.25},
+ {"label":"Page Down", "x":17.15, "y":1},
- {"label":"Caps Lock", "x":0, "y":2, "w":1.75},
- {"label":"A", "x":1.75, "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":9, "y":2},
- {"label":"J", "x":10, "y":2},
- {"label":"K", "x":11, "y":2},
- {"label":"L", "x":12, "y":2},
- {"label":":", "x":13.5, "y":2},
- {"label":"\"", "x":14.5, "y":2},
- {"label":"Enter", "x":15.5, "y":2, "w":2.25},
- {"label":"Pg Dn", "x":18.25, "y":1},
+ {"label":"Caps Lock", "w":1.75, "x":0.15, "y":2.25},
+ {"label":"A", "x":1.9, "y":2.25},
+ {"label":"S", "x":2.9, "y":2.25},
+ {"label":"D", "x":3.9, "y":2.25},
+ {"label":"F", "x":4.9, "y":2.25},
+ {"label":"G", "x":5.9, "y":2.25},
+ {"label":"H", "x":8.75, "y":2.25},
+ {"label":"J", "x":9.75, "y":2.25},
+ {"label":"K", "x":10.75, "y":2.25},
+ {"label":"L", "x":11.75, "y":2.25},
+ {"label":";:", "x":12.75, "y":2.25},
+ {"label":"'\"", "x":13.75, "y":2.25},
+ {"label":"Enter", "w":2.25, "x":14.75, "y":2.25},
+ {"label":"End", "x":17.25, "y":2},
- {"label":"Shift", "x":0, "y":3, "w":2.25},
- {"label":"Z", "x":2.25, "y":3},
- {"label":"X", "x":3.75, "y":3},
- {"label":"C", "x":4.75, "y":3},
- {"label":"V", "x":5.75, "y":3},
- {"label":"B", "x":6.75, "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":14.25, "y":3},
- {"label":"Shift", "x":15.25, "y":3, "w":1.75},
- {"label":"Up", "x":17.25, "y":3},
- {"label":"End", "x":18.5, "y":2},
+ {"label":"Shift", "w":2.25, "x":0, "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":"B", "x":8.25, "y":3.25},
+ {"label":"N", "x":9.25, "y":3.25},
+ {"label":"M", "x":10.25, "y":3.25},
+ {"label":",<", "x":11.25, "y":3.25},
+ {"label":".>", "x":12.25, "y":3.25},
+ {"label":"/?", "x":13.25, "y":3.25},
+ {"label":"Shift", "w":1.75, "x":14.25, "y":3.25},
+ {"label":"\u2191", "x":16.25, "y":3.5},
- {"label":"L_Ctrl", "x":0, "y":4, "w":1.25},
- {"label":"L_Alt", "x":3.75, "y":4, "w":1.5},
- {"label":"L_Space", "x":5.25, "y":4, "w":2},
- {"label":"Fn", "x":7.25, "y":4},
- {"label":"R_Space", "x":9, "y":4, "w":2.75},
+ {"label":"Ctrl", "w":1.5, "x":0, "y":4.25},
+ {"label":"Alt", "w":1.5, "x":3.25, "y":4.25},
+ {"label":"Space", "w":2, "x":4.75, "y":4.25},
+ {"label":"GUI", "x":6.75, "y":4.25},
+ {"label":"Space", "w":2.75, "x":8.75, "y":4.25},
+ {"label":"Fn", "w":1.5, "x":11.5, "y":4.25},
+ {"label":"\u2190", "x":15.25, "y":4.5},
+ {"label":"\u2193", "x":16.25, "y":4.5},
+ {"label":"\u2192", "x":17.25, "y":4.5}
+ ]
+ },
+ "LAYOUT_split_bs": {
+ "layout": [
+ {"label":"Esc", "x":0.5, "y":0.25},
+ {"label":"1!", "x":1.5, "y":0.25},
+ {"label":"2@", "x":2.5, "y":0.25},
+ {"label":"3#", "x":3.5, "y":0.25},
+ {"label":"4$", "x":4.5, "y":0.25},
+ {"label":"5%", "x":5.5, "y":0.25},
+ {"label":"6^", "x":6.5, "y":0.25},
+ {"label":"7&", "x":8.75, "y":0.25},
+ {"label":"8*", "x":9.75, "y":0.25},
+ {"label":"9(", "x":10.75, "y":0.25},
+ {"label":"0)", "x":11.75, "y":0.25},
+ {"label":"-_", "x":12.75, "y":0.25},
+ {"label":"=+", "x":13.75, "y":0.25},
+ {"label":"Backspace", "x":14.75, "y":0.25},
+ {"label":"Backspace", "x":15.75, "y":0.25},
+ {"label":"Page Up", "x":17, "y":0},
- {"label":"R_Alt", "x":11.75, "y":4, "w":1.5},
- {"label":"Left","x":16.25, "y":4},
- {"label":"Down","x":17.25, "y":4},
- {"label":"Right","x":18.25, "y":4}
- ]
+ {"label":"Tab", "w":1.5, "x":0.25, "y":1.25},
+ {"label":"Q", "x":1.75, "y":1.25},
+ {"label":"W", "x":2.75, "y":1.25},
+ {"label":"E", "x":3.75, "y":1.25},
+ {"label":"R", "x":4.75, "y":1.25},
+ {"label":"T", "x":5.75, "y":1.25},
+ {"label":"Y", "x":8.4, "y":1.25},
+ {"label":"U", "x":9.4, "y":1.25},
+ {"label":"I", "x":10.4, "y":1.25},
+ {"label":"O", "x":11.4, "y":1.25},
+ {"label":"P", "x":12.4, "y":1.25},
+ {"label":"[{", "x":13.4, "y":1.25},
+ {"label":"]}", "x":14.4, "y":1.25},
+ {"label":"\\|", "w":1.5, "x":15.4, "y":1.25},
+ {"label":"Page Down", "x":17.15, "y":1},
+
+ {"label":"Caps Lock", "w":1.75, "x":0.15, "y":2.25},
+ {"label":"A", "x":1.9, "y":2.25},
+ {"label":"S", "x":2.9, "y":2.25},
+ {"label":"D", "x":3.9, "y":2.25},
+ {"label":"F", "x":4.9, "y":2.25},
+ {"label":"G", "x":5.9, "y":2.25},
+ {"label":"H", "x":8.75, "y":2.25},
+ {"label":"J", "x":9.75, "y":2.25},
+ {"label":"K", "x":10.75, "y":2.25},
+ {"label":"L", "x":11.75, "y":2.25},
+ {"label":";:", "x":12.75, "y":2.25},
+ {"label":"'\"", "x":13.75, "y":2.25},
+ {"label":"Enter", "w":2.25, "x":14.75, "y":2.25},
+ {"label":"End", "x":17.25, "y":2},
+
+ {"label":"Shift", "w":2.25, "x":0, "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":"B", "x":8.25, "y":3.25},
+ {"label":"N", "x":9.25, "y":3.25},
+ {"label":"M", "x":10.25, "y":3.25},
+ {"label":",<", "x":11.25, "y":3.25},
+ {"label":".>", "x":12.25, "y":3.25},
+ {"label":"/?", "x":13.25, "y":3.25},
+ {"label":"Shift", "w":1.75, "x":14.25, "y":3.25},
+ {"label":"\u2191", "x":16.25, "y":3.5},
+
+ {"label":"Ctrl", "w":1.5, "x":0, "y":4.25},
+ {"label":"Alt", "w":1.5, "x":3.25, "y":4.25},
+ {"label":"Space", "w":2, "x":4.75, "y":4.25},
+ {"label":"GUI", "x":6.75, "y":4.25},
+ {"label":"Space", "w":2.75, "x":8.75, "y":4.25},
+ {"label":"Fn", "w":1.5, "x":11.5, "y":4.25},
+ {"label":"\u2190", "x":15.25, "y":4.5},
+ {"label":"\u2193", "x":16.25, "y":4.5},
+ {"label":"\u2192", "x":17.25, "y":4.5}
+ ]
}
}
}
diff --git a/keyboards/skergo/keymaps/default/keymap.c b/keyboards/skergo/keymaps/default/keymap.c
index 321d6efc4c..f0fb28b36f 100644
--- a/keyboards/skergo/keymaps/default/keymap.c
+++ b/keyboards/skergo/keymaps/default/keymap.c
@@ -17,18 +17,21 @@
#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_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_END,
- KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS
- ),
- [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, KC_TRNS
- )
+
+ [0] = LAYOUT_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_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_ENT, KC_END,
+ 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_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_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_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/skergo/keymaps/via/keymap.c b/keyboards/skergo/keymaps/via/keymap.c
index 8d8859fa95..ddea8d2c70 100644
--- a/keyboards/skergo/keymaps/via/keymap.c
+++ b/keyboards/skergo/keymaps/via/keymap.c
@@ -17,32 +17,37 @@
#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_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_END,
- KC_LCTL, KC_LALT, KC_SPC, MO(1), KC_SPC, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS
- ),
- [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, 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
- ),
- [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
- )
+
+ [0] = LAYOUT_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_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_ENT, KC_END,
+ 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_LCTL, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_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_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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
+ ),
+
+ [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
+ ),
+
};
diff --git a/keyboards/skergo/keymaps/via/rules.mk b/keyboards/skergo/keymaps/via/rules.mk
index 36b7ba9cbc..1e5b99807c 100644
--- a/keyboards/skergo/keymaps/via/rules.mk
+++ b/keyboards/skergo/keymaps/via/rules.mk
@@ -1,2 +1 @@
VIA_ENABLE = yes
-LTO_ENABLE = yes
diff --git a/keyboards/skergo/readme.md b/keyboards/skergo/readme.md
index ee10a5b7c0..d6ffa4babb 100644
--- a/keyboards/skergo/readme.md
+++ b/keyboards/skergo/readme.md
@@ -12,4 +12,8 @@ Make example for this keyboard (after setting up your build environment):
make skergo:default
+Flashing example for this keyboard:
+
+ make skergo: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/skergo/skergo.h b/keyboards/skergo/skergo.h
index fceeaf0ddb..cee1c4c656 100644
--- a/keyboards/skergo/skergo.h
+++ b/keyboards/skergo/skergo.h
@@ -18,16 +18,48 @@
#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, K214, \
- K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, K314, \
- K400, K402, K404, K405, K406, K407, K409, K412, K413, K414 \
+#define ___ KC_NO
+
+/* ┌───â”
+ * ┌───┬───┬───┬───┬───┬───┬───┠┌───┬───┬───┬───┬───┬───┬───┬───â”│1E │ ┌───────â”
+ * │00 │01 │02 │03 │04 │05 │06 │ │07 │08 │09 │0A │0B │0C │0D │0E │├───┤ │0E │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤│2E │ └───────┘
+ * │10 │11 │12 │13 │14 │15 │ │16 │17 │18 │19 │1A │1B │1C │1D │├───┤
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┠└┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤│3E │
+ * │20 │21 │22 │23 │24 │25 │ │26 │27 │28 │29 │2A │2B │2C │└───┘
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┠┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘
+ * │30 │31 │32 │33 │34 │35 │ │46 │36 │37 │38 │39 │3A │3B │┌───â”
+ * ├────┬───┴───┼───┴─┬─┴───┴─┬─┴─┠└─┬─┴───┴───┴┬──┴──┬┴───┴──────┘│3D │
+ * │40 │ │42 │44 │45 │ │47 │49 │ ┌───┼───┼───â”
+ * └────┘ └─────┴───────┴───┘ └──────────┴─────┘ │4C │4D │4E │
+ * └───┴───┴───┘
+ * - Position K46 (secondary B key) is optional
+ */
+
+#define LAYOUT_2u_bs( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, 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, K46, 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, ___, 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, ___, K42, ___, K44, K45, K46, K47, ___, K49, ___, ___, K4C, K4D, K4E } \
+}
+
+#define LAYOUT_split_bs( \
+ 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, K46, K36, K37, K38, K39, K3A, K3B, K3D, \
+ K40, K42, K44, K45, K47, K49, 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, KC_NO, K214 }, \
- { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, K314 }, \
- { K400, KC_NO, K402, KC_NO, K404, K405, K406, K407, KC_NO, K409, KC_NO, KC_NO, 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, ___, K3D, K3E }, \
+ { K40, ___, K42, ___, K44, K45, K46, K47, ___, K49, ___, ___, K4C, K4D, K4E } \
}
diff --git a/keyboards/skippys_custom_pcs/rooboard65/config.h b/keyboards/skippys_custom_pcs/rooboard65/config.h
index f061840771..ee624d5380 100644
--- a/keyboards/skippys_custom_pcs/rooboard65/config.h
+++ b/keyboards/skippys_custom_pcs/rooboard65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x36B6 // Skippys Custom PCs
-#define PRODUCT_ID 0x0002 // Rooboard65
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER FJLabs
-#define PRODUCT Rooboard65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, B3, B2, B1, D1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/skippys_custom_pcs/rooboard65/info.json b/keyboards/skippys_custom_pcs/rooboard65/info.json
index 3f195fc7c7..ab68e33ec0 100644
--- a/keyboards/skippys_custom_pcs/rooboard65/info.json
+++ b/keyboards/skippys_custom_pcs/rooboard65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Rooboard65",
+ "manufacturer": "FJLabs",
"url": "https://www.fjlaboratories.com/",
"maintainer": "FJLabs",
+ "usb": {
+ "vid": "0x36B6",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/skippys_custom_pcs/rooboard65/readme.md b/keyboards/skippys_custom_pcs/rooboard65/readme.md
index 63f8217fc8..40a23ec12a 100644
--- a/keyboards/skippys_custom_pcs/rooboard65/readme.md
+++ b/keyboards/skippys_custom_pcs/rooboard65/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available \ No newline at end of file
diff --git a/keyboards/skippys_custom_pcs/roopad/config.h b/keyboards/skippys_custom_pcs/roopad/config.h
index 9d30421dcb..493de6ee32 100644
--- a/keyboards/skippys_custom_pcs/roopad/config.h
+++ b/keyboards/skippys_custom_pcs/roopad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 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
diff --git a/keyboards/skippys_custom_pcs/roopad/info.json b/keyboards/skippys_custom_pcs/roopad/info.json
index e866a1cc29..734310ed8c 100644
--- a/keyboards/skippys_custom_pcs/roopad/info.json
+++ b/keyboards/skippys_custom_pcs/roopad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "RooPad",
+ "manufacturer": "ToastyStoemp",
"url": "",
"maintainer": "ToastyStoemp",
+ "usb": {
+ "vid": "0x36B6",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/skippys_custom_pcs/roopad/readme.md b/keyboards/skippys_custom_pcs/roopad/readme.md
index e10cc9fb4f..89230ddcb1 100644
--- a/keyboards/skippys_custom_pcs/roopad/readme.md
+++ b/keyboards/skippys_custom_pcs/roopad/readme.md
@@ -19,4 +19,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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`
+* **Keycode in layout**: Press the B key on layer 1 which is mapped to `QK_BOOT`
diff --git a/keyboards/skme/zeno/config.h b/keyboards/skme/zeno/config.h
index 91245ed508..53aa1cd621 100644
--- a/keyboards/skme/zeno/config.h
+++ b/keyboards/skme/zeno/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4048 // baul.xyz / sandkeys.me
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SKME
-#define PRODUCT Zeno
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -41,6 +34,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-/*Enable 1khz polling by default*/
-#define USB_POLLING_INTERVAL_MS 1
-#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/skme/zeno/info.json b/keyboards/skme/zeno/info.json
index 14e9d92422..956761eeaa 100644
--- a/keyboards/skme/zeno/info.json
+++ b/keyboards/skme/zeno/info.json
@@ -1,8 +1,13 @@
-
{
"keyboard_name": "Zeno",
+ "manufacturer": "SKME",
"url": "https://baul.xyz",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4048",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [{"x":0.25, "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":16.25, "y":0}, {"x":0.25, "y":1, "w":1.5}, {"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":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":0.15, "y":2, "w":1.75}, {"x":1.9, "y":2}, {"x":2.9, "y":2}, {"x":3.9, "y":2}, {"x":4.9, "y":2}, {"x":5.9, "y":2}, {"x":9.05, "y":2}, {"x":10.05, "y":2}, {"x":11.05, "y":2}, {"x":12.05, "y":2}, {"x":13.05, "y":2}, {"x":14.05, "y":2}, {"x":15.05, "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":8.55, "y":3}, {"x":9.55, "y":3}, {"x":10.55, "y":3}, {"x":11.55, "y":3}, {"x":12.55, "y":3}, {"x":13.55, "y":3}, {"x":14.55, "y":3, "w":1.75}, {"x":16.3, "y":3}, {"x":0, "y":4, "w":1.5}, {"x":1.5, "y":4}, {"x":3.5, "y":4, "w":1.5}, {"x":5, "y":4, "w":2.25}, {"x":8.55, "y":4, "w":2.75}, {"x":11.3, "y":4, "w":1.5}, {"x":15.8, "y":4, "w":1.5}]
diff --git a/keyboards/skme/zeno/readme.md b/keyboards/skme/zeno/readme.md
index 69a76b5734..0e71533a89 100644
--- a/keyboards/skme/zeno/readme.md
+++ b/keyboards/skme/zeno/readme.md
@@ -28,4 +28,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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`
+* **Keycode in layout**: Press the B key on layer 1 which is mapped to `QK_BOOT`
diff --git a/keyboards/skmt/15k/config.h b/keyboards/skmt/15k/config.h
new file mode 100644
index 0000000000..6144e332ea
--- /dev/null
+++ b/keyboards/skmt/15k/config.h
@@ -0,0 +1,79 @@
+// Copyright 2022 Jimmy Lye (@satorusaka)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/*
+ * 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 FORCE_NKRO
+
+#define RGB_DI_PIN GP1 // RGB LED pin
+#define RGBLED_NUM 15 // Number of LEDs
+#define DRIVER_LED_TOTAL 15 // Number of LEDs
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
+#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/skmt/15k/info.json b/keyboards/skmt/15k/info.json
new file mode 100644
index 0000000000..71f3bc24d7
--- /dev/null
+++ b/keyboards/skmt/15k/info.json
@@ -0,0 +1,68 @@
+{
+ "manufacturer": "SKMT",
+ "keyboard_name": "SKMT 15k",
+ "maintainer": "satorusaka",
+ "bootloader": "rp2040",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "cols": ["GP2", "GP3", "GP4", "GP5", "GP6"],
+ "rows": ["GP7", "GP8", "GP9"]
+ },
+ "processor": "RP2040",
+ "url": "https://github.com/satorusaka/15k-macropad",
+ "usb": {
+ "device_version": "1.1.0",
+ "pid": "0x3488",
+ "vid": "0xFEFE"
+ },
+ "layouts": {
+ "LAYOUT_default": {
+ "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": [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": [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 }
+ ]
+ }
+ },
+ "rgb_matrix": {
+ "driver": "WS2812",
+ "layout": [
+ { "flags": 4, "matrix": [2, 4], "x": 224, "y": 64 },
+ { "flags": 4, "matrix": [2, 3], "x": 168, "y": 64 },
+ { "flags": 4, "matrix": [2, 2], "x": 112, "y": 64 },
+ { "flags": 4, "matrix": [2, 1], "x": 56, "y": 64 },
+ { "flags": 4, "matrix": [2, 0], "x": 0, "y": 64 },
+ { "flags": 4, "matrix": [1, 4], "x": 224, "y": 32 },
+ { "flags": 4, "matrix": [1, 3], "x": 168, "y": 32 },
+ { "flags": 4, "matrix": [1, 2], "x": 112, "y": 32 },
+ { "flags": 4, "matrix": [1, 1], "x": 56, "y": 32 },
+ { "flags": 4, "matrix": [1, 0], "x": 0, "y": 32 },
+ { "flags": 4, "matrix": [0, 4], "x": 224, "y": 0 },
+ { "flags": 4, "matrix": [0, 3], "x": 168, "y": 0 },
+ { "flags": 4, "matrix": [0, 2], "x": 112, "y": 0 },
+ { "flags": 4, "matrix": [0, 1], "x": 56, "y": 0 },
+ { "flags": 4, "matrix": [0, 0], "x": 0, "y": 0 }
+ ]
+ }
+}
diff --git a/keyboards/skmt/15k/keymaps/default/keymap.c b/keyboards/skmt/15k/keymaps/default/keymap.c
new file mode 100644
index 0000000000..bc34dd7ca2
--- /dev/null
+++ b/keyboards/skmt/15k/keymaps/default/keymap.c
@@ -0,0 +1,26 @@
+// Copyright 2022 Jimmy Lye (@satorusaka)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌────┬───┬───┬───┬────â”
+ * │ F3 │ 9 │ 6 │ 3 │ fn │
+ * ├────┼───┼───┼───┼────┤
+ * │ F2 │ 8 │ 5 │ 2 │ . │
+ * ├────┼───┼───┼───┼────┤
+ * │ F1 │ 7 │ 4 │ 1 │ O │
+ * └────┴───┴───┴───┴────┘
+ */
+ [0] = LAYOUT_default(
+ KC_F3, KC_KP_9, KC_KP_6, KC_KP_3, LT(1, KC_KP_ENTER),
+ KC_F2, KC_KP_8, KC_KP_5, KC_KP_2, KC_KP_DOT,
+ KC_F1, KC_KP_7, KC_KP_4, KC_KP_1, KC_KP_0
+ ),
+ [1] = LAYOUT_default(
+ RGB_TOG,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ RGB_MODE_FORWARD,RGB_HUI,RGB_SAI,RGB_VAI,RGB_SPI,
+ RGB_MODE_REVERSE,RGB_HUD,RGB_SAD,RGB_VAD,RGB_SPD
+ )
+};
diff --git a/keyboards/skmt/15k/keymaps/fns/keymap.c b/keyboards/skmt/15k/keymaps/fns/keymap.c
new file mode 100644
index 0000000000..8933260d5f
--- /dev/null
+++ b/keyboards/skmt/15k/keymaps/fns/keymap.c
@@ -0,0 +1,25 @@
+// Copyright 2022 Jimmy Lye (@satorusaka)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌────┬───┬───┬───┬────â”
+ * │ F3 │ 9 │ 6 │ 3 │ fn │
+ * ├────┼───┼───┼───┼────┤
+ * │ F2 │ 8 │ 5 │ 2 │ . │
+ * ├────┼───┼───┼───┼────┤
+ * │ F1 │ 7 │ 4 │ 1 │ O │
+ * └────┴───┴───┴───┴────┘
+ */
+ [0] = LAYOUT_default(
+ KC_F1, KC_F2, KC_F3, KC_F4, LT(1, KC_KB_MUTE),
+ KC_F5, KC_F6, KC_F7, KC_F8, KC_KB_VOLUME_UP,
+ KC_F9, KC_F10, KC_F11, KC_F12, KC_KB_VOLUME_DOWN
+ ),
+ [1] = LAYOUT_default(
+ RGB_TOG,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ RGB_MODE_FORWARD,RGB_HUI,RGB_SAI,RGB_VAI,RGB_SPI,
+ RGB_MODE_REVERSE,RGB_HUD,RGB_SAD,RGB_VAD,RGB_SPD
+ )
+};
diff --git a/keyboards/skmt/15k/keymaps/qwert/keymap.c b/keyboards/skmt/15k/keymaps/qwert/keymap.c
new file mode 100644
index 0000000000..16464c93bc
--- /dev/null
+++ b/keyboards/skmt/15k/keymaps/qwert/keymap.c
@@ -0,0 +1,25 @@
+// Copyright 2022 Jimmy Lye (@satorusaka)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬─────────────────────â”
+ * │ Q │ W │ E │ R │ BACKSPACE (LAYER 1) │
+ * ├───┼───┼───┼───┼─────────────────────┤
+ * │ A │ S │ D │ F │ ENTER │
+ * ├───┼───┼───┼───┼─────────────────────┤
+ * │ Z │ X │ C │ V │ SPACE │
+ * └───┴───┴───┴───┴─────────────────────┘
+ */
+ [0] = LAYOUT_default(
+ KC_Q, KC_W, KC_E, KC_R, LT(1, KC_BSPC),
+ KC_A, KC_S, KC_D, KC_F, KC_ENT,
+ KC_Z, KC_X, KC_C, KC_V, KC_SPC
+ ),
+ [1] = LAYOUT_default(
+ RGB_TOG,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ RGB_MODE_FORWARD,RGB_HUI,RGB_SAI,RGB_VAI,RGB_SPI,
+ RGB_MODE_REVERSE,RGB_HUD,RGB_SAD,RGB_VAD,RGB_SPD
+ )
+};
diff --git a/keyboards/skmt/15k/keymaps/via/keymap.c b/keyboards/skmt/15k/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d0384efba0
--- /dev/null
+++ b/keyboards/skmt/15k/keymaps/via/keymap.c
@@ -0,0 +1,35 @@
+// Copyright 2022 Jimmy Lye (@satorusaka)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┬───┬───┬───┬─────────────────────â”
+ * │ Q │ W │ E │ R │ BACKSPACE (LAYER 1) │
+ * ├───┼───┼───┼───┼─────────────────────┤
+ * │ A │ S │ D │ F │ ENTER │
+ * ├───┼───┼───┼───┼─────────────────────┤
+ * │ Z │ X │ C │ V │ SPACE │
+ * └───┴───┴───┴───┴─────────────────────┘
+ */
+ [0] = LAYOUT_default(
+ KC_Q, KC_W, KC_E, KC_R, LT(1, KC_BSPC),
+ KC_A, KC_S, KC_D, KC_F, LT(2, KC_ENT),
+ KC_Z, KC_X, KC_C, KC_V, LT(3, KC_SPC)
+ ),
+ [1] = LAYOUT_default(
+ RGB_TOG,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ RGB_MODE_FORWARD,RGB_HUI,RGB_SAI,RGB_VAI,RGB_SPI,
+ RGB_MODE_REVERSE,RGB_HUD,RGB_SAD,RGB_VAD,RGB_SPD
+ ),
+ [2] = LAYOUT_default(
+ KC_TRNS,KC_TRNS,KC_TRNS,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_default(
+ KC_TRNS,KC_TRNS,KC_TRNS,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/skmt/15k/keymaps/via/rules.mk b/keyboards/skmt/15k/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/skmt/15k/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/skmt/15k/readme.md b/keyboards/skmt/15k/readme.md
new file mode 100644
index 0000000000..679fb76ca0
--- /dev/null
+++ b/keyboards/skmt/15k/readme.md
@@ -0,0 +1,26 @@
+# skmt_15k_macropad
+
+![skmt_15k_macropad](https://i.imgur.com/Sl6t4Lmh.jpg)
+![skmt_15k_macropad](https://i.imgur.com/SihSIVth.jpg)
+
+A diy, 3d-printed, 15 key (3x5), hotswap, RGB macropad.
+
+* Keyboard Maintainer: [Jimmy Lye](https://github.com/satorusaka)
+* Hardware Supported: skmt_15k_macropad on rpi pico
+* Hardware Availability: [satorusaka/15k-macropad](https://github.com/satorusaka/15k-macropad)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make skmt/15k:default
+
+Flashing example for this keyboard:
+
+ make skmt/15k: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 top left key and plug in the keyboard
diff --git a/keyboards/skmt/15k/rules.mk b/keyboards/skmt/15k/rules.mk
new file mode 100644
index 0000000000..848cfec5a3
--- /dev/null
+++ b/keyboards/skmt/15k/rules.mk
@@ -0,0 +1,3 @@
+WS2812_DRIVER = vendor
+
+LTO_ENABLE = yes
diff --git a/keyboards/slz40/config.h b/keyboards/slz40/config.h
index 7bcc71bb3c..7b20cd14bb 100644
--- a/keyboards/slz40/config.h
+++ b/keyboards/slz40/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER SithLord
-#define PRODUCT slz40
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4, B5, B3, B2, B6 }
#define MATRIX_COL_PINS { F4, D2, F5, D1, F6, D0, F7, D4, B1, C6, E6, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/slz40/info.json b/keyboards/slz40/info.json
index 471bba73c3..4b69d20efb 100644
--- a/keyboards/slz40/info.json
+++ b/keyboards/slz40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "slz40",
+ "manufacturer": "SithLord",
"url": "https://github.com/sithlord121/slz40",
"maintainer": "SithLord",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/smallkeyboard/config.h b/keyboards/smallkeyboard/config.h
index c96fa911e5..20a9f2d88a 100644
--- a/keyboards/smallkeyboard/config.h
+++ b/keyboards/smallkeyboard/config.h
@@ -17,13 +17,7 @@
#pragma once
-/* USB Device descriptor parameter */
#include "config_common.h"
-#define VENDOR_ID 0x7A71 // "zq" = zhouqiong19840119
-#define PRODUCT_ID 0x736B // "sk" = smallkeyboard
-#define DEVICE_VER 0x0001
-#define MANUFACTURER zhouqiong19840119
-#define PRODUCT smallkeyboard
/* key matrix size */
#define MATRIX_ROWS 2
@@ -41,7 +35,6 @@
*/
#define MATRIX_ROW_PINS {C7, C6 }
#define MATRIX_COL_PINS {F7, F6, F5}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/smallkeyboard/info.json b/keyboards/smallkeyboard/info.json
index 8d1d642c10..9514637685 100644
--- a/keyboards/smallkeyboard/info.json
+++ b/keyboards/smallkeyboard/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "smallkeyboard",
+ "manufacturer": "zhouqiong19840119",
"url": "",
"maintainer": "zhouqiong19840119",
+ "usb": {
+ "vid": "0x7A71",
+ "pid": "0x736B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_2x3": {
"layout": [
diff --git a/keyboards/smithrune/iron165r2/config.h b/keyboards/smithrune/iron165r2/config.h
index bfe83ba52c..ce3ddc7b86 100644
--- a/keyboards/smithrune/iron165r2/config.h
+++ b/keyboards/smithrune/iron165r2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8384 // SR for Smith and RUne
-#define PRODUCT_ID 0x1652 // 165 rev 2
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SmithRune
-#define PRODUCT Iron156R2
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/smithrune/iron165r2/f411/config.h b/keyboards/smithrune/iron165r2/f411/config.h
index 5b2e04b93c..af8b46531c 100644
--- a/keyboards/smithrune/iron165r2/f411/config.h
+++ b/keyboards/smithrune/iron165r2/f411/config.h
@@ -16,6 +16,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
+
#define BACKLIGHT_PIN A6
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL 1
@@ -25,8 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define BREATHING_PERIOD 5
#define BACKLIGHT_ON_STATE 1
-#define STM32_HSECLK 8000000
-
#define RGB_DI_PIN B15
#define RGBLED_NUM 22
#define RGBLIGHT_EFFECT_BREATHING
diff --git a/keyboards/smithrune/iron165r2/f411/mcuconf.h b/keyboards/smithrune/iron165r2/f411/mcuconf.h
index 0ea015be4f..63f1e30e64 100644
--- a/keyboards/smithrune/iron165r2/f411/mcuconf.h
+++ b/keyboards/smithrune/iron165r2/f411/mcuconf.h
@@ -17,19 +17,6 @@
#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 72
-#define STM32_PLLP_VALUE 2
-#define STM32_PLLQ_VALUE 3
-#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/smithrune/iron165r2/f411/rules.mk b/keyboards/smithrune/iron165r2/f411/rules.mk
index 598edffe64..6305fc5a14 100644
--- a/keyboards/smithrune/iron165r2/f411/rules.mk
+++ b/keyboards/smithrune/iron165r2/f411/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = GENERIC_STM32_F411XE
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/smithrune/iron165r2/info.json b/keyboards/smithrune/iron165r2/info.json
new file mode 100644
index 0000000000..0d42363728
--- /dev/null
+++ b/keyboards/smithrune/iron165r2/info.json
@@ -0,0 +1,11 @@
+{
+ "keyboard_name": "Iron165R2",
+ "manufacturer": "SmithRune",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x8384",
+ "pid": "0x1652",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/smithrune/iron165r2/readme.md b/keyboards/smithrune/iron165r2/readme.md
index 2fc913ff73..bc41ee4be2 100644
--- a/keyboards/smithrune/iron165r2/readme.md
+++ b/keyboards/smithrune/iron165r2/readme.md
@@ -18,7 +18,7 @@ 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, escape in the default keymap) 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`; in the default layout, that is top left key ('escape') in layer 1.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT`; in the default layout, that is top left key ('escape') in layer 1.
### How to compile and flash
diff --git a/keyboards/smithrune/iron180/config.h b/keyboards/smithrune/iron180/config.h
index 084f008a78..e26366ade3 100644
--- a/keyboards/smithrune/iron180/config.h
+++ b/keyboards/smithrune/iron180/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8384 //SR for Smith and Rune
-#define PRODUCT_ID 0x1180
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SmithRune
-#define PRODUCT IRON180
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/smithrune/iron180/info.json b/keyboards/smithrune/iron180/info.json
index 64ee4b4ee3..cd68970641 100644
--- a/keyboards/smithrune/iron180/info.json
+++ b/keyboards/smithrune/iron180/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Iron180",
+ "manufacturer": "SmithRune",
"url": "",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x8384",
+ "pid": "0x1180",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/smk60/config.h b/keyboards/smk60/config.h
index 2c7d0e178f..7b764cb5a4 100644
--- a/keyboards/smk60/config.h
+++ b/keyboards/smk60/config.h
@@ -6,20 +6,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xDEAD
-#define PRODUCT_ID 0x6585
-#define DEVICE_VER 0x0001
-#define MANUFACTURER astro
-#define PRODUCT smk 60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, F0, F1, F5, B2 }
#define MATRIX_COL_PINS { B4, B5, B6, C6, C7, F6, F7, F4, B1, B3, D0, D1, D2, D3, D5}
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
diff --git a/keyboards/smk60/info.json b/keyboards/smk60/info.json
index 5aff493fd4..c3e3bd29e0 100644
--- a/keyboards/smk60/info.json
+++ b/keyboards/smk60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "SMK60",
+ "manufacturer": "astro",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xDEAD",
+ "pid": "0x6585",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_wkl": {
"layout": [
diff --git a/keyboards/smk60/keymaps/60_ansi/keymap.c b/keyboards/smk60/keymaps/60_ansi/keymap.c
index 95d2fb0f26..70f913c82b 100644
--- a/keyboards/smk60/keymaps/60_ansi/keymap.c
+++ b/keyboards/smk60/keymaps/60_ansi/keymap.c
@@ -22,7 +22,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),
[1] = LAYOUT_60_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,_______,
- RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ QK_BOOT, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______, _______, _______,_______,_______,_______),
diff --git a/keyboards/smk60/keymaps/60_ansi_split_bs_shift/keymap.c b/keyboards/smk60/keymaps/60_ansi_split_bs_shift/keymap.c
index 095f98d151..4f48a595f5 100644
--- a/keyboards/smk60/keymaps/60_ansi_split_bs_shift/keymap.c
+++ b/keyboards/smk60/keymaps/60_ansi_split_bs_shift/keymap.c
@@ -9,7 +9,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_RALT, KC_RGUI, TG(1), KC_RCTL),
[1] = LAYOUT_60_ansi_split_bs_shift(
_______, KC_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,
- RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,
+ QK_BOOT, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,
_______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______, _______, _______,_______,TG(0),_______),
diff --git a/keyboards/smk60/keymaps/60_hhkb/keymap.c b/keyboards/smk60/keymaps/60_hhkb/keymap.c
index 2732abc06b..e4742f5b18 100644
--- a/keyboards/smk60/keymaps/60_hhkb/keymap.c
+++ b/keyboards/smk60/keymaps/60_hhkb/keymap.c
@@ -9,7 +9,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1)),
[1] = LAYOUT_60_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,_______,_______,
- RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ QK_BOOT, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______, _______, _______,_______),
diff --git a/keyboards/smk60/keymaps/60_iso/keymap.c b/keyboards/smk60/keymaps/60_iso/keymap.c
index 684bbb62f4..d57823ccfb 100644
--- a/keyboards/smk60/keymaps/60_iso/keymap.c
+++ b/keyboards/smk60/keymaps/60_iso/keymap.c
@@ -9,7 +9,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS, KC_LGUI, KC_LALT, LT(1,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,_______,
- RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ QK_BOOT, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT, _______,_______,_______,_______,
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______, _______, _______,_______,_______,_______),
diff --git a/keyboards/smk60/keymaps/60_wkl/keymap.c b/keyboards/smk60/keymaps/60_wkl/keymap.c
index 979fc93d67..4345998a9c 100644
--- a/keyboards/smk60/keymaps/60_wkl/keymap.c
+++ b/keyboards/smk60/keymaps/60_wkl/keymap.c
@@ -9,7 +9,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_RALT, TG(1), KC_RCTL),
[1] = LAYOUT_60_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_DEL,
- RESET, RGB_TOG, RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,
+ QK_BOOT, RGB_TOG, RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,
_______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______, _______, _______,TG(0),_______),
diff --git a/keyboards/smk60/keymaps/60_wkl_split_bs/keymap.c b/keyboards/smk60/keymaps/60_wkl_split_bs/keymap.c
index 22405cdc5f..12c4b8ce41 100644
--- a/keyboards/smk60/keymaps/60_wkl_split_bs/keymap.c
+++ b/keyboards/smk60/keymaps/60_wkl_split_bs/keymap.c
@@ -9,7 +9,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS, KC_LGUI, KC_LALT, LT(1,KC_SPC), KC_RALT, TG(1), KC_RCTL),
[1] = LAYOUT_60_wkl_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_PSCR,
- RESET, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,
+ QK_BOOT, RGB_TOG,RGB_MOD,_______,_______,_______,_______,_______,_______,_______,_______,KC_PGUP,KC_PGDN,_______,
_______, _______,_______,_______,_______,_______,KC_LEFT,KC_DOWN,KC_UP,KC_RIGHT,_______,_______,_______,
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
_______,_______,_______, _______, _______,TG(0),_______),
diff --git a/keyboards/snampad/config.h b/keyboards/snampad/config.h
index f15fc72200..5e776fe52c 100644
--- a/keyboards/snampad/config.h
+++ b/keyboards/snampad/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Snamellit
-#define PRODUCT snampad
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7, B1, B3 }
#define MATRIX_COL_PINS { D0, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/snampad/info.json b/keyboards/snampad/info.json
index 740ab15ad8..de827697c2 100644
--- a/keyboards/snampad/info.json
+++ b/keyboards/snampad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "snampad",
+ "manufacturer": "Snamellit",
"url": "",
"maintainer": "ptillemans",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_6x4": {
"layout": [
diff --git a/keyboards/sneakbox/aliceclone/config.h b/keyboards/sneakbox/aliceclone/config.h
index 492c5680b8..4f2ecec285 100644
--- a/keyboards/sneakbox/aliceclone/config.h
+++ b/keyboards/sneakbox/aliceclone/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5342
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Sneakbox
-#define PRODUCT AliceClone
-
/*Bootmagic boot button, set to topmost, leftmost key */
#define BOOTMAGIC_LITE_ROW 2
#define BOOTMAGIC_LITE_COLUMN 0
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 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
diff --git a/keyboards/sneakbox/aliceclone/info.json b/keyboards/sneakbox/aliceclone/info.json
index 9fbee0c692..9fc342135d 100644
--- a/keyboards/sneakbox/aliceclone/info.json
+++ b/keyboards/sneakbox/aliceclone/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Alice Clone",
+ "keyboard_name": "AliceClone",
+ "manufacturer": "Sneakbox",
"url": "https://sneakbox.design",
"maintainer": "mujimanic",
+ "usb": {
+ "vid": "0x5342",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/sneakbox/aliceclonergb/config.h b/keyboards/sneakbox/aliceclonergb/config.h
index 6e30dbca96..87ce572c4e 100644
--- a/keyboards/sneakbox/aliceclonergb/config.h
+++ b/keyboards/sneakbox/aliceclonergb/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* 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
diff --git a/keyboards/sneakbox/aliceclonergb/info.json b/keyboards/sneakbox/aliceclonergb/info.json
index 9fbee0c692..867ae9497a 100644
--- a/keyboards/sneakbox/aliceclonergb/info.json
+++ b/keyboards/sneakbox/aliceclonergb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Alice Clone",
+ "keyboard_name": "AliceClone RGB",
+ "manufacturer": "Sneakbox",
"url": "https://sneakbox.design",
"maintainer": "mujimanic",
+ "usb": {
+ "vid": "0x5342",
+ "pid": "0x0006",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/sneakbox/ava/config.h b/keyboards/sneakbox/ava/config.h
index 81fdf5b374..90112a26c1 100644
--- a/keyboards/sneakbox/ava/config.h
+++ b/keyboards/sneakbox/ava/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5342
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Sneakbox
-#define PRODUCT AVA
-
/*Bootmagic boot button, set to topmost, leftmost key */
#define BOOTMAGIC_LITE_ROW 2
#define BOOTMAGIC_LITE_COLUMN 0
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { F1, E6, F4, B1, F5, B2, F6, B3, B7 }
#define MATRIX_COL_PINS { F0, D0, C7, C6, B6, B5, B4, D1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sneakbox/ava/info.json b/keyboards/sneakbox/ava/info.json
index 276efce018..dc31241874 100644
--- a/keyboards/sneakbox/ava/info.json
+++ b/keyboards/sneakbox/ava/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "AVA",
+ "manufacturer": "Sneakbox",
"url": "https://sneakbox.com",
"maintainer": "mujimanic",
+ "usb": {
+ "vid": "0x5342",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_alice_split_bs": "LAYOUT_ava_split_bs",
"LAYOUT_alice": "LAYOUT_ava"
diff --git a/keyboards/sneakbox/disarray/ortho/config.h b/keyboards/sneakbox/disarray/ortho/config.h
index 72b3265db6..90dc75d195 100644
--- a/keyboards/sneakbox/disarray/ortho/config.h
+++ b/keyboards/sneakbox/disarray/ortho/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5342
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Sneakbox
-#define PRODUCT Disarray (Ortholinear Layout)
-
/*Bootmagic boot button, set to topmost, leftmost key */
#define BOOTMAGIC_LITE_ROW 1
#define BOOTMAGIC_LITE_COLUMN 0
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B7, D0, D1, D2, D3, B0}
#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0, E6}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sneakbox/disarray/ortho/info.json b/keyboards/sneakbox/disarray/ortho/info.json
index 350e482177..5172c0c963 100644
--- a/keyboards/sneakbox/disarray/ortho/info.json
+++ b/keyboards/sneakbox/disarray/ortho/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Disarray (Ortholinear)",
+ "manufacturer": "Sneakbox",
"url": "https://sneakbox.com",
"maintainer": "mujimanic",
+ "usb": {
+ "vid": "0x5342",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/sneakbox/disarray/staggered/config.h b/keyboards/sneakbox/disarray/staggered/config.h
index cc9a2ebd49..32c567f910 100644
--- a/keyboards/sneakbox/disarray/staggered/config.h
+++ b/keyboards/sneakbox/disarray/staggered/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5342
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Sneakbox
-#define PRODUCT Disarray (Staggered Layout)
-
/*Bootmagic boot button, set to topmost, leftmost key */
#define BOOTMAGIC_LITE_ROW 1
#define BOOTMAGIC_LITE_COLUMN 0
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B7, D0, D1, D2, D3}
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, E6}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sneakbox/disarray/staggered/info.json b/keyboards/sneakbox/disarray/staggered/info.json
index f08d5389bf..2629c1ea4f 100644
--- a/keyboards/sneakbox/disarray/staggered/info.json
+++ b/keyboards/sneakbox/disarray/staggered/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Disarray (Staggered)",
+ "manufacturer": "Sneakbox",
"url": "https://sneakbox.design",
"maintainer": "mujimanic",
+ "usb": {
+ "vid": "0x5342",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/soda/cherish/chconf.h b/keyboards/soda/cherish/chconf.h
new file mode 100644
index 0000000000..61b37ebf37
--- /dev/null
+++ b/keyboards/soda/cherish/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/soda/cherish/cherish.c b/keyboards/soda/cherish/cherish.c
new file mode 100644
index 0000000000..76b2481d25
--- /dev/null
+++ b/keyboards/soda/cherish/cherish.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 "cherish.h"
diff --git a/keyboards/soda/cherish/cherish.h b/keyboards/soda/cherish/cherish.h
new file mode 100644
index 0000000000..e50da38177
--- /dev/null
+++ b/keyboards/soda/cherish/cherish.h
@@ -0,0 +1,38 @@
+/*
+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_75_ansi( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, 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, K412, K414, \
+ K500, K501, K502, K505, K509, K510, K511, K512, K514 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, 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, K412, KC_NO, K414 }, \
+ { K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, K509, K510, K511, K512, KC_NO, K514 } \
+}
diff --git a/keyboards/soda/cherish/config.h b/keyboards/soda/cherish/config.h
new file mode 100644
index 0000000000..15df7c244f
--- /dev/null
+++ b/keyboards/soda/cherish/config.h
@@ -0,0 +1,80 @@
+/*
+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
+
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 15
+
+#define MATRIX_COL_PINS { B12, B13, B14, B15, A8, A9, A10, A14, A15, B3, B4, B5, B6, B7, B8}
+#define MATRIX_ROW_PINS { A7, B0, B1, B2, B10, B11 }
+#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 RGB_DI_PIN A13
+#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 1
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#endif \ No newline at end of file
diff --git a/keyboards/soda/cherish/info.json b/keyboards/soda/cherish/info.json
new file mode 100644
index 0000000000..0b3914eb63
--- /dev/null
+++ b/keyboards/soda/cherish/info.json
@@ -0,0 +1,103 @@
+{
+ "keyboard_name": "Cherish-75",
+ "url": "",
+ "maintainer": "qmk",
+ "manufacturer": "gezhaoyou",
+ "usb": {
+ "vid": "0xEB50",
+ "pid": "0xEB52",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_75_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},
+ {"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, "w":2},
+ {"x":15, "y":1},
+
+ {"x":0, "y":2, "w":1.5},
+ {"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},
+ {"x":13.5, "y":2, "w":1.5},
+ {"x":15, "y":2},
+
+ {"x":0, "y":3, "w":1.75},
+ {"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":2.25},
+ {"x":15, "y":3},
+
+ {"x":0, "y":4, "w":2.25},
+ {"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},
+ {"x":12.25, "y":4, "w":1.75},
+ {"x":14, "y":4},
+ {"x":15, "y":4},
+
+ {"x":0, "y":5, "w":1.25},
+ {"x":1.25, "y":5, "w":1.25},
+ {"x":2.5, "y":5, "w":1.25},
+ {"x":3.75, "y":5, "w":6.25},
+ {"x":10, "y":5},
+ {"x":11, "y":5},
+ {"x":12, "y":5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/soda/cherish/keymaps/default/keymap.c b/keyboards/soda/cherish/keymaps/default/keymap.c
new file mode 100755
index 0000000000..3927f7f222
--- /dev/null
+++ b/keyboards/soda/cherish/keymaps/default/keymap.c
@@ -0,0 +1,33 @@
+/*
+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_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_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_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_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
+ [1] = LAYOUT_75_ansi(
+ RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_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,
+ 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, RGB_HUI, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAI, RGB_HUD, RGB_SAD),
+};
diff --git a/keyboards/soda/cherish/keymaps/via/keymap.c b/keyboards/soda/cherish/keymaps/via/keymap.c
new file mode 100755
index 0000000000..3927f7f222
--- /dev/null
+++ b/keyboards/soda/cherish/keymaps/via/keymap.c
@@ -0,0 +1,33 @@
+/*
+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_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_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_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_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
+ [1] = LAYOUT_75_ansi(
+ RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, RGB_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,
+ 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, RGB_HUI, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SAI, RGB_HUD, RGB_SAD),
+};
diff --git a/keyboards/soda/cherish/keymaps/via/rules.mk b/keyboards/soda/cherish/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/soda/cherish/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/soda/cherish/mcuconf.h b/keyboards/soda/cherish/mcuconf.h
new file mode 100644
index 0000000000..033c89fa82
--- /dev/null
+++ b/keyboards/soda/cherish/mcuconf.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
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_DMA
+#define STM32_I2C_USE_DMA FALSE
+
diff --git a/keyboards/soda/cherish/readme.md b/keyboards/soda/cherish/readme.md
new file mode 100644
index 0000000000..9a22e635b2
--- /dev/null
+++ b/keyboards/soda/cherish/readme.md
@@ -0,0 +1,30 @@
+# CHERISH-75
+
+A customizable 75% keyboard, support both HOTSWAP and SOLDER.
+
+* Keyboard Maintainer: [gezhaoyou](https://github.com/gezhaoyou)
+* Hardware Supported: [gezhaoyou](https://github.com/gezhaoyou)
+* Hardware Availability: [Cherish-75](https://github.com/gezhaoyou/Cherish-75)
+
+Make example for this keyboard (after setting up your build environment):
+
+**default**:
+
+```shell
+qmk compile -kb soda/cherish -km default
+```
+
+**via:**
+
+```shell
+qmk compile -kb soda/cherish -km via
+```
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+* **Physical reset button**: Briefly press the button: [boot] first, then press button: [reset] on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/soda/cherish/rules.mk b/keyboards/soda/cherish/rules.mk
new file mode 100644
index 0000000000..55f433aaaa
--- /dev/null
+++ b/keyboards/soda/cherish/rules.mk
@@ -0,0 +1,24 @@
+# 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 = 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
+
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -p FFFF -v FFFF
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/sofle/keyhive/config.h b/keyboards/sofle/keyhive/config.h
index 93048f3cd1..8663bf8933 100755
--- a/keyboards/sofle/keyhive/config.h
+++ b/keyboards/sofle/keyhive/config.h
@@ -19,13 +19,6 @@
#pragma once
#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
-
// Key matrix size
// Rows are doubled-up. Added extra column for rotary encoder VIA mapping.
#define MATRIX_ROWS 10
diff --git a/keyboards/sofle/keyhive/info.json b/keyboards/sofle/keyhive/info.json
index aafc6a8c8b..fd15873c42 100644
--- a/keyboards/sofle/keyhive/info.json
+++ b/keyboards/sofle/keyhive/info.json
@@ -1,5 +1,11 @@
{
"keyboard_name": "Sofle",
+ "manufacturer": "Keyhive",
+ "usb": {
+ "vid": "0xFC32",
+ "pid": "0x1287",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sofle/keymaps/default/keymap.c b/keyboards/sofle/keymaps/default/keymap.c
index 94e7d8b3a6..5729d80271 100644
--- a/keyboards/sofle/keymaps/default/keymap.c
+++ b/keyboards/sofle/keymaps/default/keymap.c
@@ -32,7 +32,7 @@ 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 | ; | ' |
- * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
* |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
* `-----------------------------------------/ / \ \-----------------------------------------'
* | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
diff --git a/keyboards/sofle/keymaps/devdev/keymap.c b/keyboards/sofle/keymaps/devdev/keymap.c
index b805f7f176..7209c2d33b 100644
--- a/keyboards/sofle/keymaps/devdev/keymap.c
+++ b/keyboards/sofle/keymaps/devdev/keymap.c
@@ -231,7 +231,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | RESET| | | | | | | | | | | | |
+ * | QK_BOOT| | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* |RGB_TOG|hue^ |sat ^ | bri ^| |COLEMAK|-------. ,-------|desk <| | |desk >| | |
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
@@ -245,7 +245,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//,------------------------------------------------. ,---------------------------------------------------.
EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
- RESET, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
RGB_TOG, RGB_HUI,RGB_SAI, RGB_VAI, KC_COLEMAKDH,KC_COLEMAK, C(G(KC_LEFT)),KC_NO,KC_NO,C(G(KC_RGHT)),XXXXXXX, XXXXXXX,
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
@@ -301,7 +301,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//,------------------------------------------------. ,---------------------------------------------------.
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX,
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
- TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), KC_NO, TO(7), KC_NO, KC_NO, KC_NO, RESET,
+ TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), KC_NO, TO(7), KC_NO, KC_NO, KC_NO, QK_BOOT,
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
KC_NO, KC_NO, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, EEP_RST,
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
diff --git a/keyboards/sofle/keymaps/flare576/keymap.c b/keyboards/sofle/keymaps/flare576/keymap.c
index 68f611a1b5..720232ad48 100644
--- a/keyboards/sofle/keymaps/flare576/keymap.c
+++ b/keyboards/sofle/keymaps/flare576/keymap.c
@@ -78,7 +78,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* SYMS
* ,-----------------------------------------. ,-----------------------------------------.
- * | | F1 | F2 | F3 | F4 | F5 | | | | { | } | | RESET|
+ * | | F1 | F2 | F3 | F4 | F5 | | | | { | } | | QK_BOOT|
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | TRNS | F6 | F7 | F8 | F9 | F10 | | | | ( | ) | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
@@ -91,7 +91,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------' '------''---------------------------'
*/
[_SYMS] = LAYOUT(
- XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, XXXXXXX, RESET,
+ XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, XXXXXXX, QK_BOOT,
_______, 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,
diff --git a/keyboards/sofle/keymaps/foureight84/config.h b/keyboards/sofle/keymaps/foureight84/config.h
new file mode 100644
index 0000000000..2104124f3a
--- /dev/null
+++ b/keyboards/sofle/keymaps/foureight84/config.h
@@ -0,0 +1,33 @@
+/* Copyright 2022 Khoa Truong <foureight84@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
+
+/* clear default encoder def */
+#undef TAP_CODE_DELAY
+
+/* encoder support */
+#define TAP_CODE_DELAY 100
+
+#define SPLIT_WPM_ENABLE
+#define SPLIT_OLED_ENABLE
+
+#define POINTING_DEVICE_ROTATION_90
+#define SPLIT_POINTING_ENABLE
+#define POINTING_DEVICE_RIGHT
+#define POINTING_DEVICE_TASK_THROTTLE_MS 8 \ No newline at end of file
diff --git a/keyboards/sofle/keymaps/foureight84/keymap.c b/keyboards/sofle/keymaps/foureight84/keymap.c
new file mode 100644
index 0000000000..b2dd6a3cd6
--- /dev/null
+++ b/keyboards/sofle/keymaps/foureight84/keymap.c
@@ -0,0 +1,616 @@
+/* Copyright 2022 Khoa Truong <foureight84@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 <string.h>
+#include "lib/lib8tion/lib8tion.h"
+
+
+enum sofle_layers {
+ /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */
+ _QWERTY,
+ _COLEMAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+ _MOUSE,
+};
+
+enum custom_keycodes {
+ KC_QWERTY = SAFE_RANGE,
+ KC_COLEMAK,
+ KC_LOWER,
+ KC_RAISE,
+ KC_ADJUST,
+ KC_PRVWD,
+ KC_NXTWD,
+ KC_LSTRT,
+ KC_LEND,
+ KC_DLINE,
+ KC_MOUSE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * QWERTY
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bspc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | \ |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * |LCtrl | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | [ | LGUI | LAlt |LOWER | /Space / \Enter \ |RAISE | RCTR | RAlt | ] |
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+
+[_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_BSLS, \
+ 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_MUTE, XXXXXXX,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, \
+ KC_LBRC ,KC_LGUI, KC_LALT, KC_LOWER, KC_SPC, KC_ENT, KC_RAISE, KC_RCTRL, KC_RALT, KC_RBRC \
+),
+/*
+ * COLEMAK
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ESC | Q | W | F | P | G | | J | L | U | Y | ; | Bspc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | TAB | A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' |
+ * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B |-------| |-------| K | M | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | 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
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | MOUSE| ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | | |
+ * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
+ * | Shift| = | - | + | { | } |-------| |-------| [ | ] | ; | : | \ | Shift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, \
+ KC_MOUSE, 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
+ * ,----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Esc | Ins | Pscr | Menu | | | | | PWrd | Up | NWrd | DLine| Bspc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | LAt | LCtl |LShift| | Caps |-------. ,-------| | Left | Down | Rigth| Del | Bspc |
+ * |------+------+------+------+------+------| MPLY | | |------+------+------+------+------+------|
+ * |Shift | Undo | Cut | Copy | Paste| |-------| |-------| | LStr | | LEnd | | Shift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+[_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, KC_MPLY, _______, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+),
+/* ADJUST
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | QK_BOOT| |QWERTY|COLEMAK| | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | |MACWIN| | | |-------. ,-------| | VOLDO| MUTE | VOLUP| | |
+ * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
+ * | | | | | | |-------| |-------| | PREV | PLAY | NEXT | | |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+ [_ADJUST] = LAYOUT( \
+ XXXXXXX , XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ QK_BOOT, 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, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ ),
+ /* MOUSE
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | |-------. ,-------|MS_BT1|MS_BT2| | | | |
+ * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * | | | | | | |-------| |-------| | | | | | |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+ [_MOUSE] = 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, KC_MS_BTN1, KC_MS_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
+ )
+};
+
+#ifdef OLED_ENABLE
+
+static void print_status_narrow(void) {
+ // Print current mode
+ oled_write_P(PSTR("\n\n"), false);
+ oled_write_ln_P(PSTR("MODE"), false);
+ oled_write_ln_P(PSTR(""), false);
+ if (keymap_config.swap_lctl_lgui) {
+ oled_write_ln_P(PSTR("MAC"), false);
+ } else {
+ oled_write_ln_P(PSTR("WIN"), false);
+ }
+
+ switch (get_highest_layer(default_layer_state)) {
+ case _QWERTY:
+ oled_write_ln_P(PSTR("Qwrt"), false);
+ break;
+ case _COLEMAK:
+ oled_write_ln_P(PSTR("Clmk"), false);
+ break;
+ default:
+ oled_write_P(PSTR("Undef"), false);
+ }
+ oled_write_P(PSTR("\n\n"), false);
+ // Print current layer
+ oled_write_ln_P(PSTR("LAYER"), false);
+ switch (get_highest_layer(layer_state)) {
+ case _COLEMAK:
+ case _QWERTY:
+ oled_write_P(PSTR("Base\n"), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("Raise"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("Lower"), false);
+ break;
+ case _ADJUST:
+ oled_write_P(PSTR("Adj\n"), false);
+ break;
+ case _MOUSE:
+ oled_write_P(PSTR("Mouse\n"), 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;
+ }
+
+ if (!is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return rotation;
+}
+
+
+/* Animation bit by j-inc https://github.com/qmk/qmk_firmware/tree/master/keyboards/kyria/keymaps/j-inc */
+// 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, needs fixing
+#define ANIM_SIZE 320 // 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;
+
+// Implementation credit j-inc(/James Incandenza), pixelbenny, and obosob.
+// Bongo cat images changed and adapted for sofle keyboard oled size.
+// Original gif can be found here: https://www.pixilart.com/art/bongo-cat-bd2a8e9323aa705
+static void render_anim(void) {
+ static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
+ {
+ 0x00, 0xc0, 0x3e, 0x01, 0x00, 0x00, 0x00, 0xc0, 0xfc, 0x03, 0x00, 0x03, 0x0c, 0x30, 0xc0, 0x00,
+ 0xe1, 0x1e, 0x00, 0xc0, 0xbc, 0x83, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3c, 0x03, 0x00, 0x00, 0x00, 0x80, 0x78, 0x87, 0x00, 0x03, 0x0c, 0x30, 0xc0, 0x00, 0xe0, 0x1f,
+ 0x01, 0xc0, 0x3c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x31, 0x05, 0x41, 0x12, 0x04,
+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x87, 0x00, 0x01, 0x06, 0x18, 0x60, 0x80, 0xc0, 0x3f, 0x03, 0x80,
+ 0x78, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x03, 0x05,
+ 0x00, 0x00, 0xf0, 0xcf, 0x00, 0x01, 0x06, 0x18, 0x60, 0x80, 0x80, 0x79, 0x07, 0x80, 0x78, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x1e, 0x01, 0x00, 0x03, 0x0c, 0x30, 0xc0, 0x00, 0xf9, 0x07, 0x80, 0x78, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x2c, 0x32, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x03, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xf0, 0x0f, 0x80, 0x78, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x60, 0x80, 0x00, 0x00, 0xe1, 0x1e, 0x01, 0xf0, 0x8f, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
+ 0x0e, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x08, 0x09, 0x0e, 0x0e, 0x01, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x19,
+ 0x19, 0x41, 0x0a, 0x22, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x70, 0x80,
+ 0x00, 0x00, 0xf0, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x02, 0x01,
+ }
+ };
+ static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
+ {
+ 0x00, 0xc0, 0x3e, 0x01, 0x00, 0x00, 0x00, 0xc0, 0xfc, 0xff, 0xff, 0xff, 0x7c, 0x70, 0x40, 0x40,
+ 0x61, 0x5e, 0x80, 0xc0, 0xbc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3c, 0x03, 0x00, 0x00, 0x00, 0x80, 0x78, 0x87, 0x00, 0x03, 0x0f, 0x3f, 0xf8, 0xf0, 0xf0, 0x20,
+ 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x87, 0x00, 0x01, 0x06, 0x18, 0x60, 0x80, 0xc0, 0x3f, 0x03, 0x80,
+ 0x78, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04,
+ 0x00, 0x00, 0xf0, 0xcf, 0x00, 0x01, 0x06, 0x18, 0x60, 0x80, 0x80, 0x79, 0x07, 0x80, 0x78, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0x1e, 0x01, 0x00, 0x03, 0x0c, 0x30, 0xc0, 0x00, 0xf9, 0x07, 0x80, 0x78, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x2c, 0x32, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x03, 0x0c, 0x30, 0xc0, 0x00, 0x00, 0xf0, 0x0f, 0x80, 0x78, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x60, 0x80, 0x00, 0x00, 0xe1, 0x1e, 0x01, 0xf0, 0x8f, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
+ 0x0e, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x08, 0x09, 0x0e, 0x0e, 0x01, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x19,
+ 0x19, 0x41, 0x0a, 0x22, 0x84, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x70, 0x80,
+ 0x00, 0x00, 0xf0, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x02, 0x01,
+ },
+ {
+ 0x00, 0xc0, 0x3e, 0x01, 0x00, 0x00, 0x00, 0xc0, 0xfc, 0x03, 0x00, 0x03, 0x0c, 0x30, 0xc0, 0x00,
+ 0xe1, 0x1e, 0x00, 0xc0, 0xbc, 0x83, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3c, 0x03, 0x00, 0x00, 0x00, 0x80, 0x78, 0x87, 0x00, 0x03, 0x0c, 0x30, 0xc0, 0x00, 0xe0, 0x1f,
+ 0x01, 0xc0, 0x3c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x31, 0x05, 0x41, 0x12, 0x04,
+ 0x00, 0x00, 0x00, 0x00, 0xf8, 0x87, 0x00, 0x01, 0x06, 0x18, 0x60, 0x80, 0xc0, 0x3f, 0x03, 0x80,
+ 0x78, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x03, 0x05,
+ 0x00, 0x00, 0xf0, 0xcf, 0x00, 0x01, 0x06, 0x18, 0x60, 0x80, 0x80, 0x79, 0x07, 0x80, 0x78, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe0, 0xfe, 0xff, 0xff, 0xff, 0xfc, 0xf0, 0xc0, 0x00, 0xf9, 0x07, 0x80, 0x78, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xc0, 0x2c, 0x32, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x03, 0x0f, 0x3f, 0xff, 0x03, 0x01, 0x03, 0x07, 0x18, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x60, 0x80, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3c, 0x00, 0x00, 0x00, 0x00,
+ 0x0e, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x08, 0x09, 0x0e, 0x0e, 0x01, 0xf3, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x70, 0x80,
+ 0x00, 0x00, 0xf0, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x02, 0x01
+ },
+ };
+
+ //assumes 1 frame prep stage
+ void animation_phase(void) {
+ if(get_current_wpm() <=IDLE_SPEED){
+ oled_write_raw_P(idle[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(); // 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();
+ }
+ }
+ }
+}
+
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
+ print_status_narrow();
+ } else {
+ render_anim();
+ oled_set_cursor(1,12);
+ oled_write_P(PSTR("WPM"), false);
+ oled_set_cursor(1,13);
+ oled_write(get_u8_str(get_current_wpm(), '0'), false);
+ }
+ return false;
+}
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ switch (keycode) {
+ case KC_QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ case KC_COLEMAK:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ case KC_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;
+ case KC_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;
+ case KC_ADJUST:
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ case KC_PRVWD:
+ if (record->event.pressed) {
+ if (keymap_config.swap_lctl_lgui) {
+ register_mods(mod_config(MOD_LALT));
+ register_code(KC_LEFT);
+ } else {
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_LEFT);
+ }
+ } else {
+ if (keymap_config.swap_lctl_lgui) {
+ unregister_mods(mod_config(MOD_LALT));
+ unregister_code(KC_LEFT);
+ } else {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_LEFT);
+ }
+ }
+ break;
+ case KC_NXTWD:
+ if (record->event.pressed) {
+ if (keymap_config.swap_lctl_lgui) {
+ register_mods(mod_config(MOD_LALT));
+ register_code(KC_RIGHT);
+ } else {
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_RIGHT);
+ }
+ } else {
+ if (keymap_config.swap_lctl_lgui) {
+ unregister_mods(mod_config(MOD_LALT));
+ unregister_code(KC_RIGHT);
+ } else {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_RIGHT);
+ }
+ }
+ break;
+ case KC_LSTRT:
+ if (record->event.pressed) {
+ if (keymap_config.swap_lctl_lgui) {
+ //CMD-arrow on Mac, but we have CTL and GUI swapped
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_LEFT);
+ } else {
+ register_code(KC_HOME);
+ }
+ } else {
+ if (keymap_config.swap_lctl_lgui) {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_LEFT);
+ } else {
+ unregister_code(KC_HOME);
+ }
+ }
+ break;
+ case KC_LEND:
+ if (record->event.pressed) {
+ if (keymap_config.swap_lctl_lgui) {
+ //CMD-arrow on Mac, but we have CTL and GUI swapped
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_RIGHT);
+ } else {
+ register_code(KC_END);
+ }
+ } else {
+ if (keymap_config.swap_lctl_lgui) {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_RIGHT);
+ } else {
+ unregister_code(KC_END);
+ }
+ }
+ break;
+ case KC_DLINE:
+ if (record->event.pressed) {
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_BSPC);
+ } else {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_BSPC);
+ }
+ break;
+ case KC_COPY:
+ if (record->event.pressed) {
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_C);
+ } else {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_C);
+ }
+ return false;
+ case KC_PASTE:
+ if (record->event.pressed) {
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_V);
+ } else {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_V);
+ }
+ return false;
+ case KC_CUT:
+ if (record->event.pressed) {
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_X);
+ } else {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_X);
+ }
+ return false;
+ break;
+ case KC_UNDO:
+ if (record->event.pressed) {
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_Z);
+ } else {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_Z);
+ }
+ return false;
+ case KC_MOUSE:
+ if (record->event.pressed) {
+ layer_on(_MOUSE);
+ } else {
+ layer_off(_MOUSE);
+ }
+ return false;
+ }
+ return true;
+}
+
+#ifdef ENCODER_ENABLE
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ switch (get_highest_layer(layer_state)) {
+ case _COLEMAK:
+ case _QWERTY:
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_VOLD);
+ } else {
+ tap_code(KC_VOLU);
+ }
+ }
+ break;
+
+ case _RAISE:
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_MPRV);
+ } else {
+ tap_code(KC_MNXT);
+ }
+ }
+ break;
+ }
+ return true;
+}
+
+#endif
+
+static uint32_t last_mouse_activity = 0;
+static report_mouse_t last_mouse_report = {0};
+static bool is_scrolling = false;
+
+report_mouse_t smooth_mouse_movement(report_mouse_t mouse_report) {
+ // Linear interpolation and ease-in-out
+ static fract8 fract = 0.5;
+ int8_t x = 0;
+ int8_t y = 0;
+ int8_t h = 0;
+ int8_t v = 0;
+
+ if (!is_scrolling) {
+ x = ease8InOutApprox(lerp8by8(last_mouse_report.x, mouse_report.x, fract));
+ y = ease8InOutApprox(lerp8by8(last_mouse_report.y, mouse_report.y, fract));
+ } else {
+ h = ease8InOutApprox(lerp8by8(last_mouse_report.x, mouse_report.x, fract));
+ v = ease8InOutApprox(lerp8by8(last_mouse_report.y, mouse_report.y, fract));
+ }
+
+ // update the new smoothed report
+ mouse_report.x = x;
+ mouse_report.y = y;
+ mouse_report.h = h;
+ mouse_report.v = v;
+
+ return mouse_report;
+}
+
+report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
+
+ if (has_mouse_report_changed(&last_mouse_report, &mouse_report)) {
+ last_mouse_activity = timer_read32();
+ memcpy(&last_mouse_report, &mouse_report, sizeof(mouse_report));
+ }
+
+ return smooth_mouse_movement(mouse_report);
+} \ No newline at end of file
diff --git a/keyboards/sofle/keymaps/foureight84/readme.md b/keyboards/sofle/keymaps/foureight84/readme.md
new file mode 100644
index 0000000000..e88b0e04f6
--- /dev/null
+++ b/keyboards/sofle/keymaps/foureight84/readme.md
@@ -0,0 +1 @@
+For more information on integrating the Pimoroni Trackball, please see: https://github.com/foureight84/sofle-keyboard-pimoroni
diff --git a/keyboards/sofle/keymaps/foureight84/rules.mk b/keyboards/sofle/keymaps/foureight84/rules.mk
new file mode 100644
index 0000000000..102742ab1c
--- /dev/null
+++ b/keyboards/sofle/keymaps/foureight84/rules.mk
@@ -0,0 +1,24 @@
+OLED_ENABLE = yes
+ENCODER_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+WPM_ENABLE = yes
+
+#Debug options
+VERBOSE = no
+CONSOLE_ENABLE = no
+COMMAND_ENABLE = no
+
+LTO_ENABLE = yes
+
+SPLIT_KEYBOARD = yes
+
+VIA_ENABLE = no
+
+POINTING_DEVICE_ENABLE = yes
+POINTING_DEVICE_DRIVER = pimoroni_trackball
+
+SPACE_CADET_ENABLE = no
+GRAVE_ESC_ENABLE = no
+MAGIC_ENABLE = no
+MUSIC_ENABLE = no \ No newline at end of file
diff --git a/keyboards/sofle/keymaps/helltm/keymap.c b/keyboards/sofle/keymaps/helltm/keymap.c
index 8d6289af42..c0fd5edb5e 100644
--- a/keyboards/sofle/keymaps/helltm/keymap.c
+++ b/keyboards/sofle/keymaps/helltm/keymap.c
@@ -94,7 +94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------. ,-----------------------------------------.
* | Esc | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | Tab | | Up | | RESET| | | PWrd | NWrd | Pscr |Scroll| Pause| F12 |
+ * | Tab | | Up | | QK_BOOT| | | PWrd | NWrd | Pscr |Scroll| Pause| F12 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Caps | Left | Down | Rigth| | |-------. ,-------| | | Ins | Home | PUp | |
* |------+------+------+------+------+------| play | | mute |------+------+------+------+------+------|
@@ -106,7 +106,7 @@ 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,
- _______, XXXXXXX, KC_UP, XXXXXXX, RESET, XXXXXXX, KC_PRVWD, KC_NXTWD, KC_PSCR, KC_SLCK, KC_PAUS, KC_F12,
+ _______, XXXXXXX, KC_UP, XXXXXXX, QK_BOOT, XXXXXXX, KC_PRVWD, KC_NXTWD, KC_PSCR, KC_SLCK, KC_PAUS, KC_F12,
_______, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, KC_HOME, KC_PGUP, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, KC_APP, KC_DEL, KC_END, KC_PGDN, XXXXXXX,
CG_TOGG, KC_RALT, _______, KC_RCTL, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
@@ -137,7 +137,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | RESET| |QWERTY| | | | | | | | | | |
+ * | QK_BOOT| |QWERTY| | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | |MACWIN| | | |-------. ,-------| | VOLDO| MUTE | VOLUP| | |
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
@@ -149,7 +149,7 @@ 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,XXXXXXX,CG_TOGG,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX,KC_QWERTY,XXXXXXX,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/killmaster/config.h b/keyboards/sofle/keymaps/killmaster/config.h
index 2e6abe84e3..9d1de12d5a 100644
--- a/keyboards/sofle/keymaps/killmaster/config.h
+++ b/keyboards/sofle/keymaps/killmaster/config.h
@@ -61,4 +61,3 @@ for more options.
#define MEDIA_KEY_DELAY 2
#define USB_POLLING_INTERVAL_MS 1
-#define QMK_KEYS_PER_SCAN 12
diff --git a/keyboards/sofle/keymaps/killmaster/keymap.c b/keyboards/sofle/keymaps/killmaster/keymap.c
index 71db0fc853..5db76bbb72 100644
--- a/keyboards/sofle/keymaps/killmaster/keymap.c
+++ b/keyboards/sofle/keymaps/killmaster/keymap.c
@@ -108,7 +108,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | RESET| |QWERTY|COLEMAK| | | | | | | | | |
+ * | QK_BOOT| |QWERTY|COLEMAK| | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | |MACWIN| | | |-------. ,-------| | VOLDO| MUTE | VOLUP| | |
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
@@ -120,7 +120,7 @@ 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, XXXXXXX , CG_TOGG,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX, KC_QWERTY, XXXXXXX , 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/manna-harbour_miryoku/config.h b/keyboards/sofle/keymaps/manna-harbour_miryoku/config.h
index 8372e10168..e335d5d8b8 100644
--- a/keyboards/sofle/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/sofle/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/sofle/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/sofle/keymaps/michal/config.h b/keyboards/sofle/keymaps/michal/config.h
new file mode 100644
index 0000000000..6ab3602dfd
--- /dev/null
+++ b/keyboards/sofle/keymaps/michal/config.h
@@ -0,0 +1,23 @@
+// Copyright 2022 Michal S. (@ihatethefrench)
+// SPDX-License-Identifier: GPL-2.0-only
+
+#pragma once
+
+// Enables features such as octave changer, suspend, etc.
+#define MIDI_ADVANCED
+
+// This autoshift delay feels most natural for me I think
+#define AUTO_SHIFT_TIMEOUT 165
+
+// I don't use too many layers, so this is more than enough
+#define LAYER_STATE_8BIT
+
+// Saving space
+#define NO_ACTION_ONESHOT
+#define NO_ACTION_TAPPING
+#define NO_MUSIC_MODE
+
+// If I recall correctly, these aren't necessary for the sofle
+// so i disable them to save more space.
+#undef LOCKING_SUPPORT_ENABLE
+#undef LOCKING_RESYNC_ENABLE \ No newline at end of file
diff --git a/keyboards/sofle/keymaps/michal/keymap.c b/keyboards/sofle/keymaps/michal/keymap.c
new file mode 100644
index 0000000000..1e0d16eab9
--- /dev/null
+++ b/keyboards/sofle/keymaps/michal/keymap.c
@@ -0,0 +1,230 @@
+// Copyright 2022 Michal S. (@ihatethefrench)
+// SPDX-License-Identifier: GPL-2.0-only
+
+#include QMK_KEYBOARD_H
+
+// This specifies the layers that will be used
+enum sofle_layers {
+ _WORKMAN,
+ _QWERTY,
+ _MIDI,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
+
+// This specifies any custom keycodes I might have set
+enum custom_keycodes {
+ KC_WORKMAN = SAFE_RANGE,
+ KC_QWERTY,
+ KC_MIDI,
+ KC_LOWER,
+ KC_RAISE,
+ KC_ADJUST
+};
+
+// Here the keymaps are defined in matrix form using KC_XYZ form keycodes
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * WORKMAN
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Prnt |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Esc | Q | D | R | W | B | | J | F | U | P | ; | Bspc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | A | S | H | T | G |-------. ,-------| Y | N | E | O | I | ' |
+ * |------+------+------+------+------+------| | | MUTE |------+------+------+------+------+------|
+ * |LShift| Z | X | M | C | V |-------| |-------| K | L | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+[_WORKMAN] = LAYOUT(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PSCR,
+ KC_ESC, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC,
+ KC_TAB, 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, XXXXXXX, KC_MUTE, KC_K, KC_L, 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
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Prnt |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Esc | Q | W | E | R | T | | Y | U | I | O | P | Bspc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------| | | MUTE |------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Space / \Enter \ |RAISE | RCTR | RAlt | 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_PSCR,
+ 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, XXXXXXX, KC_MUTE, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LGUI, KC_LALT, KC_LCTRL, KC_LOWER, KC_SPC, KC_ENT, KC_RAISE, KC_RCTRL, KC_RALT, KC_RGUI
+),
+
+/* MIDI
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | Pnic | OCT0 | OCT1 | OCT2 | OCT3 | OCT4 | | OCT5 | OCT6 | OCT7 | | | MTOG |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | |G#/Ab |Bb/A# | |C#/Db |D#/Eb | | |F#/Gb |G#/Ab |Bb/A# | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | A | B | C | D | E |-------. ,-------| F | G | A | B | C | Wkmn |
+ * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * | | | | | TNSD | TNSU |-------| |-------| BNDD | BNDU | | | | |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | | | | Susd | /OCTDN / \OCTUP \ | | | | |
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+[_MIDI] = LAYOUT(
+ MI_ALLOFF, MI_OCT_0, MI_OCT_1, MI_OCT_2, MI_OCT_3, MI_OCT_4, MI_OCT_5, MI_OCT_6, MI_OCT_7, _______, _______, MI_TOG,
+ _______, MI_Gs, MI_As, _______, MI_Cs_1, MI_Ds_1, _______, MI_Fs_1, MI_Gs_1, MI_As_1, _______, _______,
+ _______, MI_A, MI_B, MI_C_1, MI_D_1, MI_E_1, MI_F_1, MI_G_1, MI_A_1, MI_B_1, MI_C_2, KC_WORKMAN,
+ _______, _______, _______, _______, MI_TRNSD, MI_TRNSU, _______, _______, MI_BENDD, MI_BENDU, _______, _______, _______, _______,
+ _______, _______, _______, MI_SUS, MI_OCTD, MI_OCTU, _______, _______, _______, _______
+),
+
+/* LOWER
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | | | | | | F12 |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | |-------. ,-------| | | | | | | |
+ * |------+------+------+------+------+------| | | Run |------+------+------+------+------+------|
+ * | | = | - | + | { | } |-------| |-------| [ | ] | | | \ | |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | | | |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_PIPE,
+ _______, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, _______, LALT(KC_F2), KC_LBRC, KC_RBRC, _______, _______, KC_BSLS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+/* RAISE
+ * ,----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | ASTG |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | | | | | Up | | | Del |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | | | | | |-------. ,-------| | Left | Down | Rght | | Wkmn |
+ * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * | | | | Midi | | |-------| |-------| | | Home | End | | Qwrt |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | | | | | / / \ \ |RAISE | | | |
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+[_RAISE] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_ASTG,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, KC_DEL,
+ _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, KC_WORKMAN,
+ _______, _______, _______, KC_MIDI, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______, KC_QWERTY,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)};
+
+// This section only compiles if OLED_ENABLE is set to `yes` in rules.mk
+#ifdef OLED_ENABLE
+
+// Defining my custom text to draw to the screen :)
+static void oled_screen(void) {
+ oled_write_ln_P(PSTR(""), false);
+ oled_write_ln_P(PSTR(">nix "), false);
+ oled_write_ln_P(PSTR(">rust"), false);
+ oled_write_ln_P(PSTR(">hs &"), false);
+ oled_write_ln_P(PSTR(">rum"), false);
+ oled_write_ln_P(PSTR(""), false);
+ oled_write_ln_P(PSTR(" . ."), false);
+ oled_write_ln_P(PSTR(" u "), false);
+ oled_write_ln_P(PSTR(" d"), false);
+ oled_write_ln_P(PSTR(""), false);
+ oled_write_ln_P(PSTR("mchal"), false);
+}
+
+// Set correct rotation so the text doesn't end up sideways
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (!is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return rotation;
+}
+
+// I only draw to the right screen because I accidentally
+// burned the left one with a soldering iron. Oops.
+bool oled_task_user(void) {
+ if (!is_keyboard_master()) {
+ oled_screen();
+ }
+ return false;
+}
+
+#endif
+
+// This section defines custom keycodes, which I use to manage layers
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_QWERTY:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ case KC_WORKMAN:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_WORKMAN);
+ }
+ return false;
+ case KC_MIDI:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_MIDI);
+ }
+ return false;
+ case KC_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;
+ case KC_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;
+ }
+ return true;
+}
+
+// This section only compiles if ENCODER_ENABLE is set to `yes` in rules.mk
+#ifdef ENCODER_ENABLE
+
+// This section is like the keymap matrix, but for rotary encoders
+// My left encoder is currently not working, so I'm using Layers to cope :')
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_WORKMAN] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(KC_VOLD, KC_VOLU )},
+ [_QWERTY] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(KC_VOLD, KC_VOLU )},
+ [_LOWER] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN)},
+ [_RAISE] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______ )},
+ [_ADJUST] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______ )},
+};
+
+#endif
diff --git a/keyboards/sofle/keymaps/michal/rules.mk b/keyboards/sofle/keymaps/michal/rules.mk
new file mode 100644
index 0000000000..63f587fd30
--- /dev/null
+++ b/keyboards/sofle/keymaps/michal/rules.mk
@@ -0,0 +1,22 @@
+BOOTLOADER = atmel-dfu
+
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+
+# These are turned off to save space
+COMMAND_ENABLE = no
+CONSOLE_ENABLE = no
+GRAVE_ESC_ENABLE = no
+MAGIC_ENABLE = no
+SPACE_CADET_ENABLE = no
+
+# I actually use these features
+AUTO_SHIFT_ENABLE = yes
+ENCODER_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+EXTRAKEY_ENABLE = yes
+MIDI_ENABLE = yes
+MOUSEKEY_ENABLE = yes
+
+# More space-saving
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/sofle/keymaps/noqmk/keymap.c b/keyboards/sofle/keymaps/noqmk/keymap.c
new file mode 100644
index 0000000000..ae92a7ec7f
--- /dev/null
+++ b/keyboards/sofle/keymaps/noqmk/keymap.c
@@ -0,0 +1,686 @@
+// Copyright 2022 axtlos (@axtloss)
+// SPDX-License-Identifier: GPL-2.0-only
+#include QMK_KEYBOARD_H
+
+
+enum sofle_layers {
+ /* _M_XYZ = Mac Os, _W_XYZ = Win/Linux */
+ _QWERTY,
+ _COLEMAK,
+ _GAME,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+enum custom_keycodes {
+ KC_COLEMAK = SAFE_RANGE,
+ KC_QWERTY,
+ KC_LOWER,
+ KC_RAISE,
+ KC_ADJUST,
+ KC_GAME,
+ KC_PRVWD,
+ KC_NXTWD,
+ KC_LSTRT,
+ KC_LEND,
+ KC_DLINE,
+ KC_UNLOCK,
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * COLEMAK
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ESC | Q | W | F | P | G | | J | L | U | Y | ; | Bspc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | TAB | A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' |
+ * |------+------+------+------+------+------| MUTE | |ADJUST |------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B |-------| |-------| K | M | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Space / \Enter \ |RAISE | RCTR | RAlt | MOUSE |
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+
+[_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, KC_CAPS ,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_PSCR
+),
+/*
+ * QWERTY
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ESC | Q | W | E | R | T | | Y | U | I | O | P | Bspc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | Print|
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+
+[_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, KC_MPLY,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_PSCR
+),
+/* LOWER
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | | |
+ * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
+ * | Shift| = | - | + | { | } |-------| |-------| [ | ] | ; | : | \ | Shift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | 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_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
+ * ,----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Esc | Ins | Pscr | Menu | | | | | PWrd | Up | NWrd | DLine| Bspc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | ae | ue | oe | ss | euro |-------. ,-------| | Left | Down | Rigth| Del | Bspc |
+ * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
+ * |Shift | Undo | Cut | Copy | Paste| caps |-------| |-------| | LStr | | LEnd | | Shift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+[_RAISE] = LAYOUT(
+ _______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______, _______ , _______ ,_______,
+ _______, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), KC_UP, LGUI(KC_9),LGUI(KC_0), KC_BSPC,
+ _______, RALT(KC_Q), RALT(KC_Y), RALT(KC_P), RALT(KC_S) , RALT(KC_5), KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_DEL, KC_BSPC,
+ _______,KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_CAPS, _______, _______, XXXXXXX, KC_LSTRT, XXXXXXX, KC_LEND, XXXXXXX, _______,
+ _______, _______, _______, _______, KC_ENT, _______, _______, _______, _______, _______
+),
+/*
+ * QWERTY
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | ESC | Q | W | E | R | T | | Y | U | I | O | P | Bspc |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | Tab | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
+ * |------+------+------+------+------+------| | | |------+------+------+------+------+------|
+ * |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Space / \Enter \ |RAISE | RCTR | RAlt | Print|
+ * | | | | |/ / \ \ | | | | |
+ * `----------------------------------' '------''---------------------------'
+ */
+
+[_GAME] = 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_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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_MPLY,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LGUI,KC_LALT,KC_SPC, KC_LOWER, KC_SPC, KC_ENT, KC_RAISE, KC_RCTRL, KC_RALT, KC_PSCR
+),
+/* ADJUST
+ * ,-----------------------------------------. ,-----------------------------------------.
+ * | | | | | | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | QK_BOOT| |QWERTY|COLEMAK| | | | | | | | | |
+ * |------+------+------+------+------+------| |------+------+------+------+------+------|
+ * | | |MACWIN|GAMING| | |-------. ,-------| | VOLDO| MUTE | VOLUP| | |
+ * |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
+ * |UNLOCK| | | | | |-------| |-------| | PREV | PLAY | NEXT | | |
+ * `-----------------------------------------/ / \ \-----------------------------------------'
+ * | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
+ * | | | | |/ / \ \ | | | | |
+ * `---------------------------''------' '------''---------------------------'
+ */
+[_ADJUST] = LAYOUT(
+ XXXXXXX , XXXXXXX, XXXXXXX , XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT , XXXXXXX,KC_QWERTY,KC_COLEMAK,CG_TOGG,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX , XXXXXXX,CG_TOGG, KC_GAME, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX,
+ KC_UNLOCK , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+};
+
+#ifdef OLED_ENABLE
+
+bool show_lock = true; // this is used to display the lock icon and disable keypresses when the keyboard is locked
+bool animate = true; // this variable is used to fix the flickering bug
+
+static void render_logo(void) {
+ static const char PROGMEM no_qmk[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x80, 0x80, 0x80,
+ 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0xe0, 0xf0,
+ 0xf8, 0xf8, 0xe0, 0x00, 0x00, 0x0e, 0xfe, 0xfe, 0xfc, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
+ 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 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, 0xf0,
+ 0x08, 0x88, 0x88, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf0, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x08, 0x88, 0x88, 0x88, 0x48, 0x48, 0x48, 0x28, 0x28, 0x18, 0x18, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xf0, 0xfc, 0xf8, 0x03, 0xf3, 0xe7, 0xdf, 0x9f, 0x3f, 0xfe, 0xfe, 0xfc, 0xf9,
+ 0xfb, 0xf3, 0xf7, 0xf7, 0xe7, 0xef, 0xcf, 0x90, 0xa1, 0x81, 0x81, 0x81, 0xa0, 0xbd, 0xff, 0xff,
+ 0xff, 0xff, 0x7f, 0x3f, 0x9c, 0xdc, 0xf8, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+ 0x60, 0x00, 0x00, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x4c, 0x4f,
+ 0x47, 0x43, 0x43, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xc2, 0xc2, 0x41, 0x00, 0x00, 0x00, 0x00,
+ 0xe3, 0x13, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0xe2, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x3f, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0x03, 0x79, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x79, 0x03, 0xff, 0xff, 0xff, 0xff, 0x1f,
+ 0x03, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x40, 0x40,
+ 0x40, 0x40, 0x40, 0x40, 0x44, 0x4a, 0x4a, 0x51, 0x51, 0x60, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 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, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0f, 0x0f, 0x1f,
+ 0x3f, 0x3f, 0x7f, 0x7c, 0x78, 0x78, 0x78, 0x78, 0x7c, 0x7e, 0x7f, 0x7f, 0x4f, 0x43, 0x40, 0x60,
+ 0x60, 0x78, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f,
+ 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x21,
+ 0x11, 0x11, 0x09, 0x09, 0x05, 0x05, 0x03, 0x03, 0x05, 0x09, 0x11, 0x21, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+ oled_write_raw_P(no_qmk, sizeof(no_qmk));
+}
+
+static const char PROGMEM locked_logo[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xfc, 0xce, 0xc6,
+ 0xc6, 0xce, 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, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f,
+ 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+/* 32 * 14 os logos */
+static const char PROGMEM linux_logo[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x27, 0x27, 0x8f, 0x9f, 0x03,
+ 0x73, 0xff, 0x03, 0xf2, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x19, 0x19, 0x1b, 0x1b, 0x1b,
+ 0x1a, 0x18, 0x18, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+static const char PROGMEM mac_logo[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xf8, 0xf8, 0xf0, 0xf6, 0xfb, 0xfb, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0f, 0x1f, 0x1f, 0x0f, 0x0f, 0x1f, 0x1f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+
+/* 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, stops the animation logic when the oled is turned off */
+ if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION && animate == true) {
+ anim_timer = timer_read32();
+ animate_luna();
+ }
+
+ /* this fixes the screen on and off bug by disabling the animation logic when the oled is off */
+ if (current_wpm > 0) {
+ oled_on();
+ anim_sleep = timer_read32();
+ animate = true;
+ } else if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
+ oled_off();
+ animate = false;
+ }
+}
+
+/* KEYBOARD PET END */
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (is_keyboard_master()) {
+ return OLED_ROTATION_270;
+ }
+ return rotation;
+}
+
+static void print_logo_narrow(void) {
+ render_logo();
+}
+
+static void print_status_narrow(void) {
+ /* Print current mode */
+ oled_set_cursor(0, 0);
+ if (show_lock == true) {
+ oled_write_raw_P(locked_logo, sizeof(locked_logo));
+ } else if (keymap_config.swap_lctl_lgui) {
+ oled_write_raw_P(mac_logo, sizeof(mac_logo));
+ } else {
+ oled_write_raw_P(linux_logo, sizeof(linux_logo));
+ }
+
+ oled_set_cursor(0, 3);
+
+ switch (get_highest_layer(default_layer_state)) {
+ case _COLEMAK:
+ oled_write_P(PSTR(" CLMK "), false);
+ break;
+ case _GAME:
+ oled_write_P(PSTR(" GAME "), false);
+ break;
+ case _QWERTY:
+ oled_write_P(PSTR("QWERT"), false);
+ break;
+ default:
+ oled_write_P(PSTR("UNDEF"), false);
+ }
+
+ oled_set_cursor(0, 5);
+
+ /* Print current layer */
+ oled_write_P(PSTR("LAYER"), false);
+
+ oled_set_cursor(0, 6);
+
+ switch (get_highest_layer(layer_state)) {
+ case _QWERTY:
+ oled_write_P(PSTR("Base "), false);
+ break;
+ case _RAISE:
+ oled_write_P(PSTR("Raise"), false);
+ break;
+ case _LOWER:
+ oled_write_P(PSTR("Lower"), false);
+ break;
+ case _ADJUST:
+ oled_write_P(PSTR(" Adj "), false);
+ break;
+ default:
+ oled_write_P(PSTR("Undef"), false);
+ }
+
+ /* caps lock */
+ oled_set_cursor(0, 8);
+ oled_write_P(PSTR("CPSLK"), led_usb_state.caps_lock);
+
+ /* KEYBOARD PET RENDER START */
+
+ render_luna(0, 13);
+
+ /* KEYBOARD PET RENDER END */
+}
+
+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 */
+
+ if (is_keyboard_master()) {
+ print_status_narrow();
+ } else {
+ print_logo_narrow();
+ }
+ return false;
+}
+
+#endif
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_QWERTY:
+ if (show_lock == true) {
+ return false;
+ }
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ case KC_COLEMAK:
+ if (show_lock == true) {
+ return false;
+ }
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_COLEMAK);
+ }
+ return false;
+ case KC_GAME:
+ if (show_lock == true) {
+ return false;
+ }
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_GAME);
+ }
+ return false;
+ case KC_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;
+ case KC_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;
+ case KC_ADJUST:
+ if (record->event.pressed) {
+ layer_on(_ADJUST);
+ } else {
+ layer_off(_ADJUST);
+ }
+ return false;
+ case KC_PRVWD:
+ if (show_lock == true) {
+ return false;
+ }
+ if (record->event.pressed) {
+ if (keymap_config.swap_lctl_lgui) {
+ register_mods(mod_config(MOD_LALT));
+ register_code(KC_LEFT);
+ } else {
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_LEFT);
+ }
+ } else {
+ if (keymap_config.swap_lctl_lgui) {
+ unregister_mods(mod_config(MOD_LALT));
+ unregister_code(KC_LEFT);
+ } else {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_LEFT);
+ }
+ }
+ break;
+ case KC_NXTWD:
+ if (show_lock == true) {
+ return false;
+ }
+ if (record->event.pressed) {
+ if (keymap_config.swap_lctl_lgui) {
+ register_mods(mod_config(MOD_LALT));
+ register_code(KC_RIGHT);
+ } else {
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_RIGHT);
+ }
+ } else {
+ if (keymap_config.swap_lctl_lgui) {
+ unregister_mods(mod_config(MOD_LALT));
+ unregister_code(KC_RIGHT);
+ } else {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_RIGHT);
+ }
+ }
+ break;
+ case KC_LSTRT:
+ if (show_lock == true) {
+ return false;
+ }
+ if (record->event.pressed) {
+ if (keymap_config.swap_lctl_lgui) {
+ //CMD-arrow on Mac, but we have CTL and GUI swapped
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_LEFT);
+ } else {
+ register_code(KC_HOME);
+ }
+ } else {
+ if (keymap_config.swap_lctl_lgui) {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_LEFT);
+ } else {
+ unregister_code(KC_HOME);
+ }
+ }
+ break;
+ case KC_LEND:
+ if (show_lock == true) {
+ return false;
+ }
+ if (record->event.pressed) {
+ if (keymap_config.swap_lctl_lgui) {
+ //CMD-arrow on Mac, but we have CTL and GUI swapped
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_RIGHT);
+ } else {
+ register_code(KC_END);
+ }
+ } else {
+ if (keymap_config.swap_lctl_lgui) {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_RIGHT);
+ } else {
+ unregister_code(KC_END);
+ }
+ }
+ break;
+ case KC_DLINE:
+ if (show_lock == true) {
+ return false;
+ }
+ if (record->event.pressed) {
+ register_mods(mod_config(MOD_RCTL));
+ register_code(KC_BSPC);
+ } else {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_BSPC);
+ }
+ break;
+ case KC_COPY:
+ if (show_lock == true) {
+ return false;
+ }
+ if (record->event.pressed) {
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_C);
+ } else {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_C);
+ }
+ return false;
+ case KC_PASTE:
+ if (show_lock == true) {
+ return false;
+ }
+ if (record->event.pressed) {
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_V);
+ } else {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_V);
+ }
+ return false;
+ case KC_CUT:
+ if (show_lock == true) {
+ return false;
+ }
+ if (record->event.pressed) {
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_X);
+ } else {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_X);
+ }
+ return false;
+ break;
+ case KC_UNDO:
+ if (show_lock == true) {
+ return false;
+ }
+ if (record->event.pressed) {
+ register_mods(mod_config(MOD_LCTL));
+ register_code(KC_Z);
+ } else {
+ unregister_mods(mod_config(MOD_LCTL));
+ unregister_code(KC_Z);
+ }
+ return false;
+ case KC_UNLOCK:
+ if (record->event.pressed) {
+ if (show_lock == true) {
+ show_lock = false;
+ print_status_narrow();
+ } else {
+ show_lock = true;
+ print_status_narrow();
+ }
+ }
+ }
+ /* This stops any keypress to be sent to the computer when the keyboard is locked */
+ if (show_lock == false) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+#ifdef ENCODER_ENABLE
+
+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_MNXT);
+ } else {
+ tap_code(KC_MPRV);
+ }
+ }
+ return true;
+}
+
+#endif
diff --git a/keyboards/sofle/keymaps/noqmk/readme.md b/keyboards/sofle/keymaps/noqmk/readme.md
new file mode 100644
index 0000000000..8fce20ad0c
--- /dev/null
+++ b/keyboards/sofle/keymaps/noqmk/readme.md
@@ -0,0 +1,28 @@
+![no qmk?](https://user-images.githubusercontent.com/60044824/181124856-0ebe0cc9-4b91-4fa2-89df-4e0841a61b9d.png)
+
+
+# Custom keymap for Sofle Keyboard, based on [Helltm](https://github.com/qmk/qmk_firmware/tree/master/keyboards/sofle/keymaps/helltm)
+
+Features:
+
+- Symmetric modifiers (CMD/Super, Alt/Opt, Ctrl, Shift)
+- Various modes, can be switched (using Adjust layer and the selected one is stored in EEPROM).
+- Modes for Qwerty and Colemak support
+- Modes for Mac vs Linux/Win support -> different order of modifiers and different action shortcuts on the "UPPER" layer. Designed to simplify transtions when switching between operating systems often.
+- The OLED on master half shows selected mode and caps lock state and is rotated.
+- Left encoder controls volume up/down/mute. Right encoder PREV/NEXT media controls.
+- Keyboard lock, change to the adjust layer (up and down pressed at the same time) and press the left shift to lock/unlock, current lock state is displayed on oled
+- Apple logo for Mac mode, Fedora Silverblue logo for Linux/Win mode, Lock icon for locked
+- Fixed flickering on main OLED
+- Gaming layout, switches space to the left half of the keyboard and raises the most left column up by one key
+
+#Luna, the keyboard pet
+
+Features:
+- Luna reacts to your wpm counter
+ - under 10 wpm she sits
+ - between 10 and 40 wpm she walks
+ - over 40 wpm she runs
+- She will move sneakily if you hold down Ctrl
+- Will bark at people on the internet if you activate Caps Lock!
+- Luna jumps every time you hit Space
diff --git a/keyboards/sofle/keymaps/noqmk/rules.mk b/keyboards/sofle/keymaps/noqmk/rules.mk
new file mode 100644
index 0000000000..6685b8492c
--- /dev/null
+++ b/keyboards/sofle/keymaps/noqmk/rules.mk
@@ -0,0 +1,6 @@
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+ENCODER_ENABLE = yes
+CONSOLE_ENABLE = no
+EXTRAKEY_ENABLE = yes
+WPM_ENABLE = yes
diff --git a/keyboards/sofle/keymaps/rgb_default/keymap.c b/keyboards/sofle/keymaps/rgb_default/keymap.c
index 30f374f296..b6608b86a3 100644
--- a/keyboards/sofle/keymaps/rgb_default/keymap.c
+++ b/keyboards/sofle/keymaps/rgb_default/keymap.c
@@ -231,7 +231,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | RESET| | | | | | | | | | | | |
+ * | QK_BOOT| | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* |RGB_TOG|hue^ |sat ^ | bri ^| |COLEMAK|-------. ,-------|desk <| | |desk >| | |
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
@@ -245,7 +245,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//,------------------------------------------------. ,---------------------------------------------------.
EEP_RST, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
- RESET, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
RGB_TOG, RGB_HUI,RGB_SAI, RGB_VAI, KC_COLEMAKDH,KC_COLEMAK, C(G(KC_LEFT)),KC_NO,KC_NO,C(G(KC_RGHT)),XXXXXXX, XXXXXXX,
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
@@ -286,7 +286,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | qwer | cole |col_dh| low | raise| adj | |numpad| | | | |RESET |
+ * | qwer | cole |col_dh| low | raise| adj | |numpad| | | | |QK_BOOT |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | |-------. ,-------| | | | | |EEP_RST|
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
@@ -301,7 +301,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
//,------------------------------------------------. ,---------------------------------------------------.
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX,
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
- TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), TO(6), KC_NO, KC_NO, KC_NO, KC_NO, RESET,
+ TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), TO(6), KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT,
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
KC_NO, KC_NO, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, EEP_RST,
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
diff --git a/keyboards/sofle/rev1/config.h b/keyboards/sofle/rev1/config.h
index a34c574326..26d35982df 100644
--- a/keyboards/sofle/rev1/config.h
+++ b/keyboards/sofle/rev1/config.h
@@ -1,12 +1,5 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFC32
-#define PRODUCT_ID 0x0287
-#define DEVICE_VER 0x0001
-#define MANUFACTURER JosefAdamcik
-#define PRODUCT Sofle
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/sofle/rev1/info.json b/keyboards/sofle/rev1/info.json
index 7673c485bf..00afc505e3 100644
--- a/keyboards/sofle/rev1/info.json
+++ b/keyboards/sofle/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Sofle",
+ "manufacturer": "JosefAdamcik",
"url": "https://github.com/josefadamcik/SofleKeyboard",
"maintainer": "Josef Adamcik <josef.adamcik@gmail.com>",
+ "usb": {
+ "vid": "0xFC32",
+ "pid": "0x0287",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/soup10/config.h b/keyboards/soup10/config.h
index 81acb34604..10f30a7283 100644
--- a/keyboards/soup10/config.h
+++ b/keyboards/soup10/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5375
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER icesoup
-#define PRODUCT soup10
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 3
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 0 1 2 3
#define MATRIX_ROW_PINS { D1, D0, D4, C6 }
#define MATRIX_COL_PINS { D7, E6, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/soup10/info.json b/keyboards/soup10/info.json
index e5b52a8b94..83fe427115 100644
--- a/keyboards/soup10/info.json
+++ b/keyboards/soup10/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Soup10",
+ "manufacturer": "icesoup",
"url": "https://github.com/Sadeeed/soup10",
"maintainer": "Sadeeed",
+ "usb": {
+ "vid": "0x5375",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sowbug/68keys/config.h b/keyboards/sowbug/68keys/config.h
index 0721302dbe..44d75e670a 100644
--- a/keyboards/sowbug/68keys/config.h
+++ b/keyboards/sowbug/68keys/config.h
@@ -20,13 +20,6 @@
#include "config_common.h"
-// USB Device descriptor parameter
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x8888
-#define DEVICE_VER 0x0001
-#define MANUFACTURER github.com/sowbug
-#define PRODUCT 68-key keyboard
-
// key matrix size
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -34,7 +27,6 @@
// key matrix pins
#define MATRIX_ROW_PINS { C14, C15, A0, A1, A2 }
#define MATRIX_COL_PINS { A3, A4, A5, A6, A7, B0, B1, B10, B11, B12, B13, B14, B15, A8, A9, A10 }
-#define UNUSED_PINS
// COL2ROW or ROW2COL
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sowbug/68keys/info.json b/keyboards/sowbug/68keys/info.json
index bd9d00197d..03018825c5 100644
--- a/keyboards/sowbug/68keys/info.json
+++ b/keyboards/sowbug/68keys/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "68keys",
+ "manufacturer": "Sowbug",
"url": "github.com/sowbug",
"maintainer": "sowbug",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x8888",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/sowbug/ansi_tkl/config.h b/keyboards/sowbug/ansi_tkl/config.h
index 44e82bbac7..e4752f9425 100644
--- a/keyboards/sowbug/ansi_tkl/config.h
+++ b/keyboards/sowbug/ansi_tkl/config.h
@@ -20,13 +20,6 @@
#include "config_common.h"
-// USB Device descriptor parameters
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x8889
-#define DEVICE_VER 0x0001
-#define MANUFACTURER github.com/sowbug
-#define PRODUCT ANSI TKL
-
// key matrix size
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -36,7 +29,6 @@
{ C14, C15, A0, A1, A2, A3 }
#define MATRIX_COL_PINS \
{ A4, A5, A6, A7, B0, B1, B10, B11, B12, B13, B14, B15, A8, A9, A10, A15, B3 }
-#define UNUSED_PINS
// COL2ROW or ROW2COL
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sowbug/ansi_tkl/info.json b/keyboards/sowbug/ansi_tkl/info.json
index f1b7f10034..a7ff38a7fe 100644
--- a/keyboards/sowbug/ansi_tkl/info.json
+++ b/keyboards/sowbug/ansi_tkl/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ansi_tkl",
+ "keyboard_name": "ANSI TKL",
+ "manufacturer": "Sowbug",
"url": "github.com/sowbug",
"maintainer": "sowbug",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x8889",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/sowbug/ansi_tkl/keymaps/sowbug/keymap.c b/keyboards/sowbug/ansi_tkl/keymaps/sowbug/keymap.c
index 82414382eb..5a32dcc016 100644
--- a/keyboards/sowbug/ansi_tkl/keymaps/sowbug/keymap.c
+++ b/keyboards/sowbug/ansi_tkl/keymaps/sowbug/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_RCTL, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT \
),
[1] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, RESET , \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, _______, QK_BOOT, \
_______, 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, _______, _______, _______, _______, _______, _______, _______, \
diff --git a/keyboards/soy20/config.h b/keyboards/soy20/config.h
index 932b129f84..9800b3f13e 100644
--- a/keyboards/soy20/config.h
+++ b/keyboards/soy20/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.*/
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4452 // "DR" short for DrewKeys
-#define PRODUCT_ID 0x534f // "SO" short for Soy
-#define DEVICE_VER 0x0001
-#define MANUFACTURER drewkeys
-#define PRODUCT soy20
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -32,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.*/
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 }
#define MATRIX_COL_PINS { B5, B6, B7, C7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/soy20/info.json b/keyboards/soy20/info.json
index 3ec8ad72e0..fd6f34592f 100644
--- a/keyboards/soy20/info.json
+++ b/keyboards/soy20/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Soy20",
+ "manufacturer": "drewkeys",
"url": "",
"maintainer": "twholt",
+ "usb": {
+ "vid": "0x4452",
+ "pid": "0x534F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [
diff --git a/keyboards/spaceholdings/nebula12/config.h b/keyboards/spaceholdings/nebula12/config.h
index da9fd10575..97623f0ff0 100755
--- a/keyboards/spaceholdings/nebula12/config.h
+++ b/keyboards/spaceholdings/nebula12/config.h
@@ -19,19 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* LSE clock */
#define STM32_LSECLK 32768
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x5337
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT NEBULA12
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 3
@@ -46,7 +39,7 @@ 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
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* Setting up 400KHz I2C Clock for a 48MHz system clock */
diff --git a/keyboards/spaceholdings/nebula12/info.json b/keyboards/spaceholdings/nebula12/info.json
index 64ad3747a6..aca8ea5f69 100755
--- a/keyboards/spaceholdings/nebula12/info.json
+++ b/keyboards/spaceholdings/nebula12/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NEBULA12",
+ "manufacturer": "Yiancar-Designs",
"url": "",
"maintainer": "yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x5337",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_68_ansi": {
"layout": [
diff --git a/keyboards/spaceholdings/nebula12b/config.h b/keyboards/spaceholdings/nebula12b/config.h
new file mode 100755
index 0000000000..ac3826b253
--- /dev/null
+++ b/keyboards/spaceholdings/nebula12b/config.h
@@ -0,0 +1,125 @@
+/*
+Copyright 2022 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 3
+
+#define MATRIX_ROW_PINS { B7, B4, F7, F6 }
+#define MATRIX_COL_PINS { F4, F5, D7 }
+
+/* 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 D5
+#define DRIVER_LED_TOTAL 16
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
+#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
+
diff --git a/keyboards/spaceholdings/nebula12b/info.json b/keyboards/spaceholdings/nebula12b/info.json
new file mode 100755
index 0000000000..9da7dfcb26
--- /dev/null
+++ b/keyboards/spaceholdings/nebula12b/info.json
@@ -0,0 +1,18 @@
+{
+ "keyboard_name": "NEBULA12B",
+ "manufacturer": "Yiancar-Designs",
+ "url": "",
+ "maintainer": "yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x5332",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "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":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/spaceholdings/nebula12b/keymaps/default/keymap.c b/keyboards/spaceholdings/nebula12b/keymaps/default/keymap.c
new file mode 100755
index 0000000000..8006e4123f
--- /dev/null
+++ b/keyboards/spaceholdings/nebula12b/keymaps/default/keymap.c
@@ -0,0 +1,30 @@
+/* Copyright 2022 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_all( /* Base */
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6,
+ KC_P1, KC_P2, KC_P3,
+ MO(1), KC_P0, KC_PDOT),
+
+[1] = LAYOUT_all( /* FN */
+ RGB_TOG, RGB_MOD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_PENT)
+};
diff --git a/keyboards/spaceholdings/nebula12b/keymaps/default/readme.md b/keyboards/spaceholdings/nebula12b/keymaps/default/readme.md
new file mode 100755
index 0000000000..c69432df24
--- /dev/null
+++ b/keyboards/spaceholdings/nebula12b/keymaps/default/readme.md
@@ -0,0 +1,7 @@
+# The default keymap for Nebula12B. VIA support disabled.
+
+![Layer 0](https://i.imgur.com/CoMteJW.png)
+
+![Layer 1](https://i.imgur.com/LbIPiJj.png)
+
+The full RGB control does not fit due to the small number of keys. Using VIA might be a good idea!
diff --git a/keyboards/spaceholdings/nebula12b/keymaps/via/keymap.c b/keyboards/spaceholdings/nebula12b/keymaps/via/keymap.c
new file mode 100755
index 0000000000..943c27857b
--- /dev/null
+++ b/keyboards/spaceholdings/nebula12b/keymaps/via/keymap.c
@@ -0,0 +1,42 @@
+/* Copyright 2022 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_all( /* Base */
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6,
+ KC_P1, KC_P2, KC_P3,
+ MO(1), KC_P0, KC_PDOT),
+
+[1] = LAYOUT_all( /* FN */
+ RGB_TOG, RGB_MOD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_PENT),
+
+[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),
+
+[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),
+};
diff --git a/keyboards/spaceholdings/nebula12b/keymaps/via/readme.md b/keyboards/spaceholdings/nebula12b/keymaps/via/readme.md
new file mode 100755
index 0000000000..9b6fd121ae
--- /dev/null
+++ b/keyboards/spaceholdings/nebula12b/keymaps/via/readme.md
@@ -0,0 +1,5 @@
+# The default keymap for Nebula12B. VIA support enabled.
+
+![Layer 0](https://i.imgur.com/CoMteJW.png)
+
+![Layer 1](https://i.imgur.com/LbIPiJj.png) \ No newline at end of file
diff --git a/keyboards/spaceholdings/nebula12b/keymaps/via/rules.mk b/keyboards/spaceholdings/nebula12b/keymaps/via/rules.mk
new file mode 100755
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/spaceholdings/nebula12b/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/spaceholdings/nebula12b/nebula12b.c b/keyboards/spaceholdings/nebula12b/nebula12b.c
new file mode 100755
index 0000000000..821999a105
--- /dev/null
+++ b/keyboards/spaceholdings/nebula12b/nebula12b.c
@@ -0,0 +1,42 @@
+/* Copyright 2022 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 "nebula12b.h"
+
+#ifdef RGB_MATRIX_ENABLE
+// clang-format off
+led_config_t g_led_config = { {
+ { 13, 15, 1 },
+ { 4, 3, 2 },
+ { 5, 6, 7 },
+ { 11, 10, 9 },
+}, {
+ {224, 0 }, {224, 9 }, {224, 27 }, {112, 27 }, { 0,27 },
+ { 0, 46 }, {112, 46 }, {224, 46 }, {224, 55 }, {224,64 },
+ {112, 64 }, { 0, 64 }, { 0, 55 }, { 0, 9 }, { 0, 0 }, {112, 9 }
+}, {
+ 2,
+ 4, 4, 4, 4, 4, 4, 4,
+ 2,
+ 4, 4, 4,
+ 2,
+ 4,
+ 2,
+ 4
+} };
+// clang-format on
+#endif
+
diff --git a/keyboards/spaceholdings/nebula12b/nebula12b.h b/keyboards/spaceholdings/nebula12b/nebula12b.h
new file mode 100755
index 0000000000..3733aa1eb6
--- /dev/null
+++ b/keyboards/spaceholdings/nebula12b/nebula12b.h
@@ -0,0 +1,34 @@
+/* Copyright 2022 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_all( \
+ K00, K01, K02, \
+ K10, K11, K12, \
+ K20, K21, K22, \
+ K30, K31, K32 \
+) { \
+ { K00, K01, K02, }, \
+ { K10, K11, K12, }, \
+ { K20, K21, K22, }, \
+ { K30, K31, K32, } \
+}
diff --git a/keyboards/spaceholdings/nebula12b/readme.md b/keyboards/spaceholdings/nebula12b/readme.md
new file mode 100755
index 0000000000..7a48fb04e4
--- /dev/null
+++ b/keyboards/spaceholdings/nebula12b/readme.md
@@ -0,0 +1,32 @@
+# Nebula12B
+
+This is a micropad layout 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 micropad with ATMEGA32U4
+* Hardware Availability: https://spaceholdings.net/
+
+## Instructions
+
+### Build
+
+Make example for this keyboard (after setting up your build environment):
+
+ make spaceholdings/nebula12b: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 nebula12b:<keymap>:flash`)
diff --git a/keyboards/spaceholdings/nebula12b/rules.mk b/keyboards/spaceholdings/nebula12b/rules.mk
new file mode 100755
index 0000000000..92dd198801
--- /dev/null
+++ b/keyboards/spaceholdings/nebula12b/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/spaceholdings/nebula68/config.h b/keyboards/spaceholdings/nebula68/config.h
index 1d6cb5e918..a8a9803d15 100755
--- a/keyboards/spaceholdings/nebula68/config.h
+++ b/keyboards/spaceholdings/nebula68/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x5336
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT NEBULA68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/spaceholdings/nebula68/info.json b/keyboards/spaceholdings/nebula68/info.json
index a0f0ba8aa3..626bb51a9b 100755
--- a/keyboards/spaceholdings/nebula68/info.json
+++ b/keyboards/spaceholdings/nebula68/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NEBULA68",
+ "manufacturer": "Yiancar-Designs",
"url": "",
"maintainer": "yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x5336",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_68_ansi": {
"layout": [
diff --git a/keyboards/spaceholdings/nebula68b/config.h b/keyboards/spaceholdings/nebula68b/config.h
index 1c0d6db233..4e22e69e10 100755
--- a/keyboards/spaceholdings/nebula68b/config.h
+++ b/keyboards/spaceholdings/nebula68b/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/spaceholdings/nebula68b/info.json b/keyboards/spaceholdings/nebula68b/info.json
index 253e9682ed..47fc6fc718 100755
--- a/keyboards/spaceholdings/nebula68b/info.json
+++ b/keyboards/spaceholdings/nebula68b/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NEBULA68B",
+ "manufacturer": "Yiancar-Designs",
"url": "",
"maintainer": "yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x5338",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_68_ansi_split_bs": {
"layout": [
diff --git a/keyboards/spaceholdings/nebula68b/keymaps/default/readme.md b/keyboards/spaceholdings/nebula68b/keymaps/default/readme.md
index 699c741555..a4a6c7facf 100755
--- a/keyboards/spaceholdings/nebula68b/keymaps/default/readme.md
+++ b/keyboards/spaceholdings/nebula68b/keymaps/default/readme.md
@@ -1,4 +1,4 @@
-# The default keymap for Nebula68. VIA support disabled.
+# The default keymap for Nebula68B. VIA support disabled.
![Layer 0](https://i.imgur.com/dXyRwb1.png)
diff --git a/keyboards/spaceholdings/nebula68b/keymaps/via/readme.md b/keyboards/spaceholdings/nebula68b/keymaps/via/readme.md
index 75cbcac25e..583ddc02cf 100755
--- a/keyboards/spaceholdings/nebula68b/keymaps/via/readme.md
+++ b/keyboards/spaceholdings/nebula68b/keymaps/via/readme.md
@@ -1,4 +1,4 @@
-# The default keymap for Nebula68. VIA support enabled.
+# The default keymap for Nebula68B. VIA support enabled.
![Layer 0](https://i.imgur.com/dXyRwb1.png)
diff --git a/keyboards/spaceholdings/nebula68b/readme.md b/keyboards/spaceholdings/nebula68b/readme.md
index 624d9aced0..4c238e2ea0 100755
--- a/keyboards/spaceholdings/nebula68b/readme.md
+++ b/keyboards/spaceholdings/nebula68b/readme.md
@@ -29,4 +29,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
- Unplug
- Hold Escape
- Plug In
-- Flash using QMK Toolbox or dfu-util (`make nebula65b:<keymap>:flash`)
+- Flash using QMK Toolbox or dfu-util (`make nebula68b:<keymap>:flash`)
diff --git a/keyboards/spaceman/2_milk/config.h b/keyboards/spaceman/2_milk/config.h
index 5c264f44ac..2a4b2889d0 100644
--- a/keyboards/spaceman/2_milk/config.h
+++ b/keyboards/spaceman/2_milk/config.h
@@ -16,13 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5342 // "SB"
-#define PRODUCT_ID 0x3225 // "2%"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Spaceman
-#define PRODUCT 2% Milk
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 1
@@ -32,7 +25,6 @@
{D4}, \
{C6} \
}
-#define UNUSED_PINS
#ifdef RGBLIGHT_ENABLE
#define RGB_DI_PIN B6
diff --git a/keyboards/spaceman/2_milk/info.json b/keyboards/spaceman/2_milk/info.json
index 288bc0144c..8cdf474517 100644
--- a/keyboards/spaceman/2_milk/info.json
+++ b/keyboards/spaceman/2_milk/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "2% Milk",
+ "manufacturer": "Spaceman",
"url": "",
"maintainer": "Spaceman",
+ "usb": {
+ "vid": "0x5342",
+ "pid": "0x3225",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [ {"x": 0, "y": 0 }, {"x": 0, "y": 1 }]
diff --git a/keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/config.h b/keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/config.h
new file mode 100644
index 0000000000..bbd93cfc16
--- /dev/null
+++ b/keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/config.h
@@ -0,0 +1,6 @@
+// Copyright 2022 Ryan Neff (@JellyTitan)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define TAPPING_TERM 200
diff --git a/keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/keymap.c b/keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/keymap.c
new file mode 100644
index 0000000000..6f21c630bf
--- /dev/null
+++ b/keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/keymap.c
@@ -0,0 +1,56 @@
+// Copyright 2022 Ryan Neff (@JellyTitan)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum tapdance_keycodes {
+ TD_KEY_1,
+ TD_KEY_2
+};
+
+void dance_key_one(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ /* Copy for Mac. */
+ /* Windows & Linux use Ctrl+C: tap_code16(C(KC_C)) */
+ tap_code16(G(KC_C));
+ reset_tap_dance(state);
+ } else if (state->count == 2) {
+ /* Cut for Mac. */
+ /* Windows & Linux use Ctrl+X: tap_code16(C(KC_X)) */
+ tap_code16(G(KC_X));
+ reset_tap_dance(state);
+ } else if (state->count == 3) {
+ /* Plain old Tab. */
+ tap_code(KC_TAB);
+ reset_tap_dance(state);
+ }
+}
+
+void dance_key_two(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ /* Paste for Mac. */
+ /* Windows & Linux use Ctrl+V: tap_code16(C(KC_V)) */
+ tap_code16(G(KC_V));
+ reset_tap_dance(state);
+ } else if (state->count == 2) {
+ /* Paste as value Gui+Shift+V for Mac. */
+ /* Windows & Linux use Ctrl+Shift V: tap_code16(C(S(KC_V))) */
+ tap_code16(G(S(KC_V)));
+ reset_tap_dance(state);
+ } else if (state->count == 3) {
+ /* Tab between programs for mac Gui+Tab. */
+ /* Windows & Linux use Ctrl+Tab: tap_code16(C(KC_TAB)) */
+ tap_code16(G(KC_TAB));
+ reset_tap_dance(state);
+ }
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_KEY_1] = ACTION_TAP_DANCE_FN(dance_key_one),
+ [TD_KEY_2] = ACTION_TAP_DANCE_FN(dance_key_two)
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(TD(TD_KEY_1),
+ TD(TD_KEY_2))
+};
diff --git a/keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/readme.md b/keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/readme.md
new file mode 100644
index 0000000000..722e7491bc
--- /dev/null
+++ b/keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/readme.md
@@ -0,0 +1,18 @@
+# Copypasta Macfancy Keymap for Milk 2%
+
+![copypasta_macfancy](https://i.imgur.com/7LMZZrL.png)
+
+Extra fancy copy/paste utilities for the Milk 2% keyboard on MacOS. Milk 2% designed by [Spaceman](https://github.com/Spaceboards/SpaceboardsHardware/tree/master/Keyboards/2%25%20Milk).
+
+Uses Tapping term for double and tripple tapping.
+Tapping speed can be adjusted with TAPPING_TERM in config.h
+
+### Key One
+- 1 Tap: Copy
+- 2 Taps: Cut
+- 3 Taps: Tab
+
+### Key Two
+- 1 Tap: Paste
+- 2 Taps: Paste as Value
+- 3 Taps: Tab between programs
diff --git a/keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/rules.mk b/keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/rules.mk
new file mode 100644
index 0000000000..628a960a71
--- /dev/null
+++ b/keyboards/spaceman/2_milk/keymaps/copypasta_macfancy/rules.mk
@@ -0,0 +1,4 @@
+# Copyright 2022 Ryan Neff (@JellyTitan)
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+TAP_DANCE_ENABLE = yes # Tap Dance
diff --git a/keyboards/spaceman/pancake/rev1/config.h b/keyboards/spaceman/pancake/rev1/config.h
index e05a618e4a..46eb28d6ba 100644
--- a/keyboards/spaceman/pancake/rev1/config.h
+++ b/keyboards/spaceman/pancake/rev1/config.h
@@ -16,13 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5342 // SB
-#define PRODUCT_ID 0x504B // PK
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Spaceman
-#define PRODUCT Pancake
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/spaceman/pancake/rev1/feather/config.h b/keyboards/spaceman/pancake/rev1/feather/config.h
index cb80721e46..c593147151 100644
--- a/keyboards/spaceman/pancake/rev1/feather/config.h
+++ b/keyboards/spaceman/pancake/rev1/feather/config.h
@@ -19,6 +19,5 @@
/* Pancake default pinout */
#define MATRIX_ROW_PINS { B5, D7, C6, D0 }
#define MATRIX_COL_PINS { C7, D6, B7, B6, F0, D2, D3, F1, F4, F5, F6, F7 }
-#define UNUSED_PINS
#define VIA_HAS_BROKEN_KEYCODES
diff --git a/keyboards/spaceman/pancake/rev1/info.json b/keyboards/spaceman/pancake/rev1/info.json
index 7462b5bf6b..b05601cfa4 100644
--- a/keyboards/spaceman/pancake/rev1/info.json
+++ b/keyboards/spaceman/pancake/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pancake",
+ "manufacturer": "Spaceman",
"url": "",
"maintainer": "Spaceman",
+ "usb": {
+ "vid": "0x5342",
+ "pid": "0x504B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_planck_mit": {
"layout": [
diff --git a/keyboards/spaceman/pancake/rev1/promicro/config.h b/keyboards/spaceman/pancake/rev1/promicro/config.h
index ee02bff2b8..e96d9f152c 100644
--- a/keyboards/spaceman/pancake/rev1/promicro/config.h
+++ b/keyboards/spaceman/pancake/rev1/promicro/config.h
@@ -19,4 +19,3 @@
/* Pancake default pinout */
#define MATRIX_ROW_PINS { B1, B3, B2, B6 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, E6, B4, B5, D7, C6, D4, D0, D1 }
-#define UNUSED_PINS \ No newline at end of file
diff --git a/keyboards/spaceman/pancake/rev2/config.h b/keyboards/spaceman/pancake/rev2/config.h
index a4d3b439c4..15d483a82e 100644
--- a/keyboards/spaceman/pancake/rev2/config.h
+++ b/keyboards/spaceman/pancake/rev2/config.h
@@ -16,13 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5342 // SB
-#define PRODUCT_ID 0x5032 // P2
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Spaceman
-#define PRODUCT Pancake 2
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -31,4 +24,3 @@
#define MATRIX_ROW_PINS { C7, C6, B6, B5 }
#define MATRIX_COL_PINS { B7, B3, B2, B1 ,B0, E6, F0, F1, F4, F5, F6, F7 }
-#define UNUSED_PINS
diff --git a/keyboards/spaceman/pancake/rev2/info.json b/keyboards/spaceman/pancake/rev2/info.json
index a5a4aad132..300d0f6090 100644
--- a/keyboards/spaceman/pancake/rev2/info.json
+++ b/keyboards/spaceman/pancake/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Pancake 2",
+ "manufacturer": "Spaceman",
"url": "",
"maintainer": "Spaceman",
+ "usb": {
+ "vid": "0x5342",
+ "pid": "0x5032",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
diff --git a/keyboards/spaceman/pancake/rev2/readme.md b/keyboards/spaceman/pancake/rev2/readme.md
index e8b65c4888..5b68180741 100644
--- a/keyboards/spaceman/pancake/rev2/readme.md
+++ b/keyboards/spaceman/pancake/rev2/readme.md
@@ -10,3 +10,58 @@ Make example for this keyboard (after setting up your build environment):
make spaceman/pancake/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).
+
+
+Alternative OLED Logos:
+
+![Japanese](https://i.imgur.com/g666Wvn.png)
+```C
+ 0x00, 0xC0, 0x3C, 0x00, 0x04, 0x1A,
+ 0xE4, 0x00, 0x82, 0x84, 0x40, 0x20,
+ 0x18, 0x00, 0x10, 0x0E, 0x84, 0x7C,
+ 0x04, 0x00, 0x10, 0x10, 0x10, 0x10,
+ 0x10, 0x00, 0x24, 0x24, 0xFE, 0x24,
+ 0x24, 0x00, 0x00, 0xC0, 0x20, 0x10,
+ 0x10, 0x08, 0x08, 0x08, 0x08, 0x04,
+ 0x04, 0x04, 0x04, 0x04, 0x64, 0x74,
+ 0x74, 0x34, 0x04, 0x04, 0x04, 0x04,
+ 0x04, 0x08, 0x08, 0x08, 0x08, 0x10,
+ 0x10, 0x20, 0xC0, 0x00, 0x00, 0x8C,
+ 0x53, 0x22, 0x22, 0x44, 0xC4, 0x5C,
+ 0x4C, 0x88, 0x88, 0x88, 0x88, 0x88,
+ 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
+ 0x88, 0x88, 0x88, 0x44, 0x44, 0x44,
+ 0xC4, 0x22, 0x22, 0x53, 0x8C, 0x00,
+ 0x00, 0x01, 0x0E, 0x04, 0x04, 0x08,
+ 0x09, 0x08, 0x08, 0x10, 0x10, 0x10,
+ 0x10, 0x10, 0x10, 0x11, 0x13, 0x10,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x18,
+ 0x08, 0x08, 0x08, 0x04, 0x04, 0x02,
+ 0x01, 0x00,
+```
+![Trans Rights](https://i.imgur.com/TijjY6j.png)
+
+```c
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0xFE,
+ 0x02, 0x02, 0x00, 0xFE, 0x12, 0x12,
+ 0xEC, 0x00, 0xFC, 0x12, 0x12, 0xFC,
+ 0x00, 0xFE, 0x04, 0x18, 0x20, 0xFE,
+ 0x00, 0x8C, 0x92, 0x92, 0x62, 0x00,
+ 0x00, 0x00, 0x00, 0xFE, 0x12, 0x12,
+ 0xEC, 0x00, 0x82, 0xFE, 0x82, 0x00,
+ 0x7C, 0x82, 0x82, 0x92, 0x70, 0x00,
+ 0xFE, 0x10, 0x10, 0xFE, 0x00, 0x02,
+ 0x02, 0xFE, 0x02, 0x02, 0x00, 0x8C,
+ 0x92, 0x92, 0x62, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xC0, 0xF0, 0xF0, 0xF8,
+ 0x98, 0x98, 0xF8, 0xF8, 0xF8, 0xF8,
+ 0xFC, 0xFE, 0xFE, 0xFE, 0xF6, 0xF2,
+ 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0,
+ 0xE0, 0xF0, 0x70, 0x30, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x03,
+ 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
+ 0x0F, 0x0F, 0x0F, 0x1F, 0x3F, 0x7F,
+ 0x7F, 0x6F, 0x07, 0x07, 0x03, 0x03,
+ 0x03, 0x03, 0x0F, 0x1F, 0x1E, 0x18,
+ 0x00, 0x00,
+```
diff --git a/keyboards/spaceman/yun65/config.h b/keyboards/spaceman/yun65/config.h
index def4bb9576..6f4c4e4050 100644
--- a/keyboards/spaceman/yun65/config.h
+++ b/keyboards/spaceman/yun65/config.h
@@ -16,13 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5342 // "SB"
-#define PRODUCT_ID 0x594E // "YN"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Spaceman
-#define PRODUCT Yun 65
-
/* Key Matrix perameter */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -31,4 +24,3 @@
#define MATRIX_ROW_PINS { E6, D3, D2, D1, D0 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, D4, D6, D7, B4, B5, B6, C6, C7, D5, B3 }
-#define UNUSED_PINS
diff --git a/keyboards/spaceman/yun65/info.json b/keyboards/spaceman/yun65/info.json
index 113b6983a6..0caaa1521e 100644
--- a/keyboards/spaceman/yun65/info.json
+++ b/keyboards/spaceman/yun65/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "yun65",
+ "keyboard_name": "Yun 65",
+ "manufacturer": "Spaceman",
"url": "",
"maintainer": "Spaceman",
+ "usb": {
+ "vid": "0x5342",
+ "pid": "0x594E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/spacetime/config.h b/keyboards/spacetime/config.h
index 93eae10402..b331c8bcab 100644
--- a/keyboards/spacetime/config.h
+++ b/keyboards/spacetime/config.h
@@ -19,13 +19,6 @@ 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 0x0A0C
-#define DEVICE_VER 0x0100
-#define MANUFACTURER Kyle Terry
-#define PRODUCT spacetime
-
/* key matrix size */
#define MATRIX_ROWS 4*2
#define MATRIX_COLS 7
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/spacetime/info.json b/keyboards/spacetime/info.json
index 8076154f8c..682342cede 100644
--- a/keyboards/spacetime/info.json
+++ b/keyboards/spacetime/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "spacetime",
+ "manufacturer": "Kyle Terry",
"url": "https://github.com/kyleterry/spacetime-keyboard",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0A0C",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/spacey/config.h b/keyboards/spacey/config.h
index 52923d2f8e..9e13e086ee 100644
--- a/keyboards/spacey/config.h
+++ b/keyboards/spacey/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5641 // "VA"
-#define PRODUCT_ID 0x2045 // "Space E"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER vanilla
-#define PRODUCT spacey
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/spacey/info.json b/keyboards/spacey/info.json
index 94d68addf4..e70efd6c75 100644
--- a/keyboards/spacey/info.json
+++ b/keyboards/spacey/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "spacey",
+ "manufacturer": "vanilla",
"url": "",
"maintainer": "vanilla",
+ "usb": {
+ "vid": "0x5641",
+ "pid": "0x2045",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sparrow62/config.h b/keyboards/sparrow62/config.h
index 4b8460c2f8..dcf8f3ed8a 100644
--- a/keyboards/sparrow62/config.h
+++ b/keyboards/sparrow62/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xDA74
-#define PRODUCT_ID 0x7461
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Atsushi_Morimoto_74th
-#define PRODUCT sparrow62
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
diff --git a/keyboards/sparrow62/info.json b/keyboards/sparrow62/info.json
index c6e1e6a008..a1a1152c97 100644
--- a/keyboards/sparrow62/info.json
+++ b/keyboards/sparrow62/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "sparrow62",
+ "manufacturer": "Atsushi_Morimoto_74th",
"url": "https://github.com/74th/sparrow62-buildguide",
"maintainer": "Atsushi Morimoto (@74th)",
+ "usb": {
+ "vid": "0xDA74",
+ "pid": "0x7461",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/specskeys/config.h b/keyboards/specskeys/config.h
index 8478a31e71..7d10b50460 100644
--- a/keyboards/specskeys/config.h
+++ b/keyboards/specskeys/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xCAFE
-#define PRODUCT_ID 0x0080
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Specs32
-#define PRODUCT Specskeys
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -41,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, F7 }
#define MATRIX_COL_PINS { E6, B0, B1, B2, B3, D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/specskeys/info.json b/keyboards/specskeys/info.json
index 41af598318..8138be8c35 100644
--- a/keyboards/specskeys/info.json
+++ b/keyboards/specskeys/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "specskeys",
+ "keyboard_name": "Specskeys",
+ "manufacturer": "Specs32",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xCAFE",
+ "pid": "0x0080",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_tkl_iso_tsangan"
},
diff --git a/keyboards/spiderisland/split78/config.h b/keyboards/spiderisland/split78/config.h
index b67b3fafff..30c5ec23a8 100644
--- a/keyboards/spiderisland/split78/config.h
+++ b/keyboards/spiderisland/split78/config.h
@@ -19,13 +19,6 @@ 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 0xF4E4
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SpiderIsland
-#define PRODUCT Split 78-key
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 14
diff --git a/keyboards/spiderisland/split78/info.json b/keyboards/spiderisland/split78/info.json
index 5506336ba2..b833b0ef44 100644
--- a/keyboards/spiderisland/split78/info.json
+++ b/keyboards/spiderisland/split78/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Spider Island 78-key split",
+ "keyboard_name": "Split 78-key",
+ "manufacturer": "SpiderIsland",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xF4E4",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/splitish/config.h b/keyboards/splitish/config.h
index aead3f5998..5f97aa585d 100644
--- a/keyboards/splitish/config.h
+++ b/keyboards/splitish/config.h
@@ -19,19 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6464
-#define DEVICE_VER 0x0001
-#define MANUFACTIRER Reid Schneyer
-#define PRODUCT Splitish
-
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
#define MATRIX_COL_PINS { F4 , F5 , F6 , F7 , B1 , B3 , C6 , D4 , D0 , D1 , D2 , D3 }
#define MATRIX_ROW_PINS { B4 , B5 , B2 , B6 }
#define DIODE_DIRECTION COL2ROW
-#define UNUSED_PINS
#define DEBOUNCE 5
diff --git a/keyboards/splitish/info.json b/keyboards/splitish/info.json
index 96c7de53e0..6f8f8da1da 100644
--- a/keyboards/splitish/info.json
+++ b/keyboards/splitish/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "splitish",
+ "keyboard_name": "Splitish",
+ "manufacturer": "Reid Schneyer",
"url": "",
"maintainer": "RSchneyer",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6464",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/splitkb/kyria/info.json b/keyboards/splitkb/kyria/info.json
index d362e4ad72..2bc52803b0 100644
--- a/keyboards/splitkb/kyria/info.json
+++ b/keyboards/splitkb/kyria/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Kyria",
+ "manufacturer": "splitkb",
"url": "https://splitkb.com",
"maintainer": "splitkb.com",
+ "usb": {
+ "vid": "0x8D1D",
+ "pid": "0x9D9D"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/splitkb/kyria/keymaps/artflag/config.h b/keyboards/splitkb/kyria/keymaps/artflag/config.h
new file mode 100644
index 0000000000..5607926cd3
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/artflag/config.h
@@ -0,0 +1,23 @@
+/* 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
+
+#define TAPPING_TERM 175
+#define TAPPING_TOGGLE 2
+
+// Lets you roll mod-tap keys
+#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/keyboards/splitkb/kyria/keymaps/artflag/keymap.c b/keyboards/splitkb/kyria/keymaps/artflag/keymap.c
new file mode 100644
index 0000000000..9f732b767c
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/artflag/keymap.c
@@ -0,0 +1,37 @@
+// Copyright 2021 Your Name (@artflag)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+// Tap Dance declarations
+
+enum {
+ CT_CLN, // Reverses colon and semicolon and triggers semicolon on tap dance.
+};
+
+void dance_cln_finished(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ register_code16(KC_COLN);
+ } else {
+ register_code(KC_SCLN);
+ }
+}
+
+void dance_cln_reset(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count == 1) {
+ unregister_code16(KC_COLN);
+ } else {
+ unregister_code(KC_SCLN);
+ }
+}
+
+// All tap dance functions would go here.
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [CT_CLN] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_cln_finished, dance_cln_reset),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(KC_ESC, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, TD(CT_CLN), KC_BSPC, KC_LGUI, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_QUOT, KC_TAB, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_BSLS, TT(2), KC_LBRC, KC_RBRC, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_GRV, KC_LCTL, KC_LALT, KC_SPC, KC_LSPO, TT(1), TT(1), KC_RSPC, KC_ENT, KC_MINS, KC_EQL),
+ [1] = LAYOUT(KC_TRNS, KC_NO, KC_7, KC_8, KC_9, KC_NO, KC_NO, KC_NO, KC_UP, KC_PGUP, KC_PSLS, KC_TRNS, KC_TRNS, KC_0, KC_4, KC_5, KC_6, KC_PDOT, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_PAST, KC_PPLS, KC_TRNS, KC_NO, KC_1, KC_2, KC_3, KC_PCMM, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL, KC_HOME, KC_END, KC_PGDN, KC_EXLM, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+ [2] = LAYOUT(KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_MPLY, KC_VOLU, KC_BRIU, KC_NO, KC_MUTE, KC_NO, KC_NO, KC_F5, KC_F6, KC_F7, KC_F8, KC_NO, KC_MSTP, KC_VOLD, KC_BRID, KC_NO, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, 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_NO, KC_NO, KC_NO)
+};
diff --git a/keyboards/splitkb/kyria/keymaps/artflag/readme.md b/keyboards/splitkb/kyria/keymaps/artflag/readme.md
new file mode 100644
index 0000000000..02cb1ce19a
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/artflag/readme.md
@@ -0,0 +1,26 @@
+# Simple workman layout
+
+## Features
+
+- Workman layout
+- semicolon and colon are flipped. Colon on tap, semicolon on double tap.
+
+## Using the layout
+
+1. Use https://config.qmk.fm/#/splitkb/kyria/rev2/LAYOUT to edit `workman-artflag.json`.
+
+1. Convert to `keymap.c`:
+
+ ```bash
+ cd keyboards/splitkb/kyria/keymaps/ArtFlag
+ qmk json2c workman-artflag.json > keymap.c
+ cd ../../../../..
+ ```
+
+1. Git diff to bring back the code for tap dancing.
+1. Compile and flash:
+
+ ```bash
+ qmk compile && qmk flash
+ ```
+ \ No newline at end of file
diff --git a/keyboards/splitkb/kyria/keymaps/artflag/rules.mk b/keyboards/splitkb/kyria/keymaps/artflag/rules.mk
new file mode 100644
index 0000000000..e5ddcae8d9
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/artflag/rules.mk
@@ -0,0 +1 @@
+TAP_DANCE_ENABLE = yes
diff --git a/keyboards/splitkb/kyria/keymaps/artflag/workman-artflag.json b/keyboards/splitkb/kyria/keymaps/artflag/workman-artflag.json
new file mode 100644
index 0000000000..f7429164c4
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/artflag/workman-artflag.json
@@ -0,0 +1,167 @@
+{
+ "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": "splitkb/kyria/rev2",
+ "keymap": "workman-artflag",
+ "layout": "LAYOUT",
+ "layers": [
+ [
+ "KC_ESC",
+ "KC_Q",
+ "KC_D",
+ "KC_R",
+ "KC_W",
+ "KC_B",
+ "KC_J",
+ "KC_F",
+ "KC_U",
+ "KC_P",
+ "KC_SCLN",
+ "KC_BSPC",
+ "KC_LGUI",
+ "KC_A",
+ "KC_S",
+ "KC_H",
+ "KC_T",
+ "KC_G",
+ "KC_Y",
+ "KC_N",
+ "KC_E",
+ "KC_O",
+ "KC_I",
+ "KC_QUOT",
+ "KC_TAB",
+ "KC_Z",
+ "KC_X",
+ "KC_M",
+ "KC_C",
+ "KC_V",
+ "KC_BSLS",
+ "TT(2)",
+ "KC_LBRC",
+ "KC_RBRC",
+ "KC_K",
+ "KC_L",
+ "KC_COMM",
+ "KC_DOT",
+ "KC_SLSH",
+ "KC_GRV",
+ "KC_LCTL",
+ "KC_LALT",
+ "KC_SPC",
+ "KC_LSPO",
+ "TT(1)",
+ "TT(1)",
+ "KC_RSPC",
+ "KC_ENT",
+ "KC_MINS",
+ "KC_EQL"
+ ],
+ [
+ "KC_TRNS",
+ "KC_NO",
+ "KC_7",
+ "KC_8",
+ "KC_9",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_UP",
+ "KC_PGUP",
+ "KC_PSLS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_0",
+ "KC_4",
+ "KC_5",
+ "KC_6",
+ "KC_PDOT",
+ "KC_NO",
+ "KC_LEFT",
+ "KC_DOWN",
+ "KC_RGHT",
+ "KC_PAST",
+ "KC_PPLS",
+ "KC_TRNS",
+ "KC_NO",
+ "KC_1",
+ "KC_2",
+ "KC_3",
+ "KC_PCMM",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_DEL",
+ "KC_HOME",
+ "KC_END",
+ "KC_PGDN",
+ "KC_EXLM",
+ "KC_PMNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS"
+ ],
+ [
+ "KC_NO",
+ "KC_NO",
+ "KC_F9",
+ "KC_F10",
+ "KC_F11",
+ "KC_F12",
+ "KC_NO",
+ "KC_MPLY",
+ "KC_VOLU",
+ "KC_BRIU",
+ "KC_NO",
+ "KC_MUTE",
+ "KC_NO",
+ "KC_NO",
+ "KC_F5",
+ "KC_F6",
+ "KC_F7",
+ "KC_F8",
+ "KC_NO",
+ "KC_MSTP",
+ "KC_VOLD",
+ "KC_BRID",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_NO",
+ "KC_F1",
+ "KC_F2",
+ "KC_F3",
+ "KC_F4",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_TRNS",
+ "KC_NO",
+ "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_NO",
+ "KC_NO",
+ "KC_NO"
+ ]
+ ],
+ "author": ""
+} \ No newline at end of file
diff --git a/keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c b/keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c
index baf46eeac6..9794a557f4 100644
--- a/keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c
+++ b/keyboards/splitkb/kyria/keymaps/asapjockey/keymap.c
@@ -107,7 +107,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_HUI,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD,
- _______, _______, _______, _______, _______, _______, _______, RESET, DEBUG, _______
+ _______, _______, _______, _______, _______, _______, _______, QK_BOOT, DEBUG, _______
),
// /*
// * Layer template
diff --git a/keyboards/splitkb/kyria/keymaps/bbaserdem/config.h b/keyboards/splitkb/kyria/keymaps/bbaserdem/config.h
new file mode 100644
index 0000000000..b7b883d3bd
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/bbaserdem/config.h
@@ -0,0 +1,32 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// Kyria specific
+#ifdef KEYBOARD_splitkb_kyria_rev1
+ // Split definition; use the following to flash;
+ // pro-micro: avrdude-split-left/right
+ // elite-c: dfu-split-left/right
+# define ENCODER_DIRECTION_FLIP
+# define EE_HANDS
+
+ // Make sure kyria has bigger oled display
+# ifdef OLED_ENABLE
+# define OLED_DISPLAY_128X64
+# endif
+#endif
diff --git a/keyboards/splitkb/kyria/keymaps/bbaserdem/keymap.c b/keyboards/splitkb/kyria/keymaps/bbaserdem/keymap.c
new file mode 100644
index 0000000000..d3720ea764
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/bbaserdem/keymap.c
@@ -0,0 +1,109 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "bbaserdem.h"
+
+#define LAYOUT_split_3x6_5_wrapper(...) LAYOUT_split_3x6_5(__VA_ARGS__)
+
+/* F layout
+ * ┌───┬───┬───┬───┬───┬───â”        ┌───┬───┬───┬───┬───┬───â”
+ * │ W │ F │ G │ Ğ │ I │ O │        │ D │ R │ N │ H │ P │ Q │
+ * ├───┼───┼───┼───┼───┼───┤        ├───┼───┼───┼───┼───┼───┤
+ * │ X │ A │ S │ D │ F │ G │        │ T │ K │ M │ L │ Y │ Ş │
+ * ├───┼───┼───┼───┼───┼───┼───┬───â” ┌───┬───┼───┼───┼───┼───┼───┼───┤
+ * │* +│ J │ Ö │ V │ C │ Ç │   │   │ │   │   │ Z │ S │ B │. :│, ;│< >│
+ * └───┴───┴───┼───┼───┼───┤Esc│Shf│ │Shf│Del├───┼───┼───┼───┴───┴───┘
+ *             │En1│Tab│Ent│ │ │ │ │ │Spc│Bsp│En2│
+ *             └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_split_3x6_5_wrapper(
+ _BL1_1_,_BL1_5_, _BR1_5_,_BR1_1_,
+ _BL2_1_,_BL2_5_, _BR2_5_,_BR2_1_,
+ _BL3_1_,_BL3_5_,xxx2xxx,xxx2xxx,_BR3_5_,_BR3_1_,
+ BB_ENC0, _BL4_3_,KC_LSFT,KC_RSFT,_BR4_3_,BB_ENC1
+ ),
+ [_CHAR] = LAYOUT_split_3x6_5_wrapper(
+ XXXXXXX,_CL1_5_, _CR1_5_,XXXXXXX,
+ XXXXXXX,_CL2_5_, _CR2_5_,XXXXXXX,
+ XXXXXXX,_CL3_5_,xxx2xxx,xxx2xxx,_CR3_5_,XXXXXXX,
+ _______,_CL4_3_,_______,_______,_CR4_3_,_______
+ ),
+ [_GAME] = LAYOUT_split_3x6_5_wrapper(
+ _GA1_1_,_GA1_5_, ___5___,___1___,
+ _GA2_1_,_GA2_5_, ___5___,___1___,
+ _GA3_1_,_GA3_5_,xxx2xxx,xxx2xxx,___5___,___1___,
+ _______,_GA4_3_,_______,_______,___3___,_______
+ ),
+ [_MEDI] = LAYOUT_split_3x6_5_wrapper(
+ ___1___,___5___, _ME1_5_,___1___,
+ ___1___,___5___, _ME2_5_,___1___,
+ ___1___,___5___,xxx2xxx,xxx2xxx,_ME3_5_,___1___,
+ ___1___,___3___,_______,_______,_ME4_3_,___1___
+ ),
+ [_NAVI] = LAYOUT_split_3x6_5_wrapper(
+ ___1___,___5___, _NA1_5_,___1___,
+ ___1___,___5___, _NA2_5_,___1___,
+ ___1___,___5___,xxx2xxx,xxx2xxx,_NA3_5_,___1___,
+ ___1___,___3___,_______,_______,_NA4_3_,___1___
+ ),
+ [_SYMB] = LAYOUT_split_3x6_5_wrapper(
+ ___1___,___5___, _SY1_5_,___1___,
+ ___1___,___5___, _SY2_5_,___1___,
+ ___1___,___5___,xxx2xxx,xxx2xxx,_SY3_5_,___1___,
+ ___1___,___3___,_______,_______,_SY4_3_,___1___
+ ),
+ [_NUMB] = LAYOUT_split_3x6_5_wrapper(
+ ___1___,_NU1_5_, ___5___,___1___,
+ ___1___,_NU2_5_, ___5___,___1___,
+ ___1___,_NU3_5_,xxx2xxx,xxx2xxx,___5___,___1___,
+ ___1___,_NU4_3_,_______,_______,___3___,___1___
+ ),
+ [_FUNC] = LAYOUT_split_3x6_5_wrapper(
+ ___1___,_FU1_5_, ___5___,___1___,
+ ___1___,_FU2_5_, ___5___,___1___,
+ ___1___,_FU3_5_,xxx2xxx,xxx2xxx,___5___,___1___,
+ ___1___,_FU4_3_,_______,_______,___3___,___1___
+ ),
+ [_MOUS] = LAYOUT_split_3x6_5_wrapper(
+ ___1___,_MO1_5_, ___5___,___1___,
+ ___1___,_MO2_5_, ___5___,___1___,
+ ___1___,_MO3_5_,xxx2xxx,xxx2xxx,___5___,___1___,
+ ___1___,_MO4_3_,_______,_______,___3___,___1___
+ ),
+ [_MUSI] = LAYOUT_split_3x6_5_wrapper(
+ _MU_12_,_MU_12_,
+ _MU_06_,xxx2xxx,xxx2xxx,_MU_06_,
+ MU_TOG,_MUL_3_,_MU_02_,_MUR_3_,___1___
+ )
+};
+
+#ifdef KEYBOARD_splitkb_kyria_rev1 // Kyria specific code
+#ifdef OLED_ENABLE // Kyria's oled screen
+// Rotate the display on kyria
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
+// For kyria; print logo, and allow default status printing
+bool oled_task_keymap(void) {
+ render_qmk_logo(0, 0);
+ render_status_lite(4, 0);
+ return false;
+}
+#endif //OLED_ENABLE
+#endif //KEYBOARD_splitkb_kyria_rev1
diff --git a/keyboards/splitkb/kyria/keymaps/bbaserdem/readme.md b/keyboards/splitkb/kyria/keymaps/bbaserdem/readme.md
new file mode 100644
index 0000000000..6381612978
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/bbaserdem/readme.md
@@ -0,0 +1,32 @@
+This folder contains my Kyria (`split_3x6_5`) board layout.
+Check out the [user readme](../../../../../users/bbaserdem/readme.md) for more info.
+
+# Kyria
+
+I use a rev 1.3 PCB as a daily driver.
+
+## Hardware
+
+* Using a modified High-profile case; with metal switch plate.
+* Currently using a Pro-Micro and an Elite-C as microcontrollers.
+* Using Gateron Silent Black Ink with Progressive springs (100g), lubed.
+* Have mill-max sockets for hotswap feature.
+* All microcontrollers and OLED's are socketed for easy removal.
+
+## Features
+
+* Use two thumb keys in the 2u layout.
+* Have rotary encoders in the outermost keys of the thumb cluster.
+* Have underglow leds soldered.
+
+## Issues
+
+* Stabilizers squiek, and need lubing.
+* The double tap buttons (home row; left leader the most) don't contact well.
+
+## Todo
+
+* Switch to Proton C conversion with a game plan.
+* Lube stabilizers.
+* Get tenting puck.
+* (Not depending on me) migrate this code to layouts.
diff --git a/keyboards/splitkb/kyria/keymaps/bbaserdem/rules.mk b/keyboards/splitkb/kyria/keymaps/bbaserdem/rules.mk
new file mode 100644
index 0000000000..21013120e6
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/bbaserdem/rules.mk
@@ -0,0 +1,30 @@
+# Copyright 2021 Batuhan BaÅŸerdem
+# <baserdem.batuhan@gmail.com> @bbaserdem
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Kyria hardware
+ifneq (,$(findstring splitkb/kyria/rev1,$(KEYBOARD)))
+ # Elective features
+ ENCODER_ENABLE = yes
+ OLED_ENABLE = yes
+ # Nonexistent features
+ AUDIO_ENABLE = no
+ BACKLIGHT_ENABLE = no
+ RGB_MATRIX_ENABLE = no
+ # Space savers
+ NKRO_ENABLE = no
+ VELOCIKEY_ENABLE = no
+ WPM_ENABLE = no
+endif
diff --git a/keyboards/splitkb/kyria/keymaps/cwebster2/config.h b/keyboards/splitkb/kyria/keymaps/cwebster2/config.h
index 9a58f7751a..59994e01fa 100644
--- a/keyboards/splitkb/kyria/keymaps/cwebster2/config.h
+++ b/keyboards/splitkb/kyria/keymaps/cwebster2/config.h
@@ -47,8 +47,6 @@
#define COMBO_COUNT 5
#endif
-#define QMK_KEYS_PER_SCAN 4
-
#define EE_HANDS
//#define DEBUG_MATRIX_SCAN_RATE
diff --git a/keyboards/splitkb/kyria/keymaps/drashna/config.h b/keyboards/splitkb/kyria/keymaps/drashna/config.h
index 1de3615d98..ffd17ebd8f 100644
--- a/keyboards/splitkb/kyria/keymaps/drashna/config.h
+++ b/keyboards/splitkb/kyria/keymaps/drashna/config.h
@@ -46,4 +46,9 @@
#define BOOTMAGIC_LITE_ROW_RIGHT 4
#define BOOTMAGIC_LITE_COLUMN_RIGHT 7
+#define BOOTMAGIC_LITE_EEPROM_ROW 1
+#define BOOTMAGIC_LITE_EEPROM_COLUMN 7
+#define BOOTMAGIC_LITE_EEPROM_ROW_RIGHT 5
+#define BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT 7
+
#define SERIAL_USART_SPEED 921600
diff --git a/keyboards/splitkb/kyria/keymaps/j-inc/keymap.c b/keyboards/splitkb/kyria/keymaps/j-inc/keymap.c
index af583a607f..f193c6e00c 100644
--- a/keyboards/splitkb/kyria/keymaps/j-inc/keymap.c
+++ b/keyboards/splitkb/kyria/keymaps/j-inc/keymap.c
@@ -341,7 +341,7 @@ bool oled_task_user(void) {
#ifdef ENCODER_ENABLE
bool encoder_update_user(uint8_t index, bool clockwise) {
- switch(biton32(layer_state)){
+ switch(get_highest_layer(layer_state)){
case 1:
if (clockwise) {
tap_code16(C(KC_TAB));
diff --git a/keyboards/splitkb/kyria/keymaps/j-inc/rules.mk b/keyboards/splitkb/kyria/keymaps/j-inc/rules.mk
index 000c995025..ee07f52ff1 100644
--- a/keyboards/splitkb/kyria/keymaps/j-inc/rules.mk
+++ b/keyboards/splitkb/kyria/keymaps/j-inc/rules.mk
@@ -9,7 +9,6 @@ MOUSEKEY_ENABLE = no
TAP_DANCE_ENABLE = no
STENO_ENABLE = no
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-TERMINAL_ENABLE = no
GRAVE_ESC_ENABLE = no
MAGIC_ENABLE = no
SPACE_CADET_ENABLE = no
diff --git a/keyboards/splitkb/kyria/keymaps/jimmysjolund/config.h b/keyboards/splitkb/kyria/keymaps/jimmysjolund/config.h
new file mode 100644
index 0000000000..217e97f931
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/jimmysjolund/config.h
@@ -0,0 +1,20 @@
+/* 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
+
+// Lets you roll mod-tap keys
+#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/keyboards/splitkb/kyria/keymaps/jimmysjolund/keymap.c b/keyboards/splitkb/kyria/keymaps/jimmysjolund/keymap.c
new file mode 100644
index 0000000000..9e5224b28d
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/jimmysjolund/keymap.c
@@ -0,0 +1,257 @@
+/* Copyright 2019 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 QMK_KEYBOARD_H
+
+enum layers {
+ _QWERTY = 0,
+ _DVORAK,
+ _COLEMAK_DH,
+ _NAV,
+ _SYM,
+ _FUNCTION,
+ _ADJUST,
+};
+
+
+// Aliases for readability
+#define QWERTY DF(_QWERTY)
+#define COLEMAK DF(_COLEMAK_DH)
+#define DVORAK DF(_DVORAK)
+
+#define SYM MO(_SYM)
+#define NAV MO(_NAV)
+#define FKEYS MO(_FUNCTION)
+#define ADJUST MO(_ADJUST)
+
+#define CTL_ESC MT(MOD_LCTL, KC_ESC)
+#define CTL_QUOT MT(MOD_RCTL, KC_QUOTE)
+#define CTL_MINS MT(MOD_RCTL, KC_MINUS)
+#define ALT_ENT MT(MOD_LALT, KC_ENT)
+
+// Note: LAlt/Enter (ALT_ENT) is not the same thing as the keyboard shortcut Alt+Enter.
+// The notation `mod/tap` denotes a key that activates the modifier `mod` when held down, and
+// produces the key `tap` when tapped (i.e. pressed and released).
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ * Base Layer: QWERTY
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * |Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "|
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
+ * | | | Enter| | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+
+/*
+ * jimmysjolund 2022-09-13
+ *
+ * Base Layer: QWERTY
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | Esc | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | Tab | A | S | D | F | G | | H | J | K | L | ; : | ' " |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | Nav | Z | X | C | V | B | [ { | Alt | | Nav | ] } | N | M | , < | . > | / ? | Adjust |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * |Ctrl+ | LGUI | Shift|Bksp/ | Sym | |Enter | Space| AltGr| ↠| → |
+ * | Alt | | | Ctrl | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+
+
+
+
+ [_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,
+ NAV , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_LBRC, KC_LALT, NAV , KC_RBRC, KC_N, KC_M ,KC_COMM, KC_DOT ,KC_SLSH, ADJUST,
+ LCTL(KC_LALT) , KC_LGUI, KC_LSFT, LCTL_T(KC_BSPC), SYM, KC_ENT, KC_SPC ,KC_ALGR, KC_LEFT, KC_RGHT
+ ),
+
+/*
+ * Base Layer: Dvorak
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | Tab | ' " | , < | . > | P | Y | | F | G | C | R | L | Bksp |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * |Ctrl/Esc| A | O | E | U | I | | D | H | T | N | S |Ctrl/- _|
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | LShift | ; : | Q | J | K | X | [ { |CapsLk| |F-keys| ] } | B | M | W | V | Z | RShift |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
+ * | | | Enter| | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [_DVORAK] = LAYOUT(
+ KC_TAB ,KC_QUOTE,KC_COMM, KC_DOT, KC_P , KC_Y , KC_F, KC_G , KC_C , KC_R , KC_L , KC_BSPC,
+ CTL_ESC , KC_A , KC_O , KC_E , KC_U , KC_I , KC_D, KC_H , KC_T , KC_N , KC_S , CTL_MINS,
+ KC_LSFT ,KC_SCLN, KC_Q , KC_J , KC_K , KC_X , KC_LBRC,KC_CAPS, FKEYS , KC_RBRC, KC_B, KC_M , KC_W , KC_V , KC_Z , KC_RSFT,
+ ADJUST, KC_LGUI, ALT_ENT, KC_SPC , NAV , SYM , KC_SPC ,KC_RALT, KC_RGUI, KC_APP
+ ),
+
+/*
+ * Base Layer: Colemak DH
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | Tab | Q | W | F | P | B | | J | L | U | Y | ; : | Bksp |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * |Ctrl/Esc| A | R | S | T | G | | M | N | E | I | O |Ctrl/' "|
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | LShift | Z | X | C | D | V | [ { |CapsLk| |F-keys| ] } | K | H | , < | . > | / ? | RShift |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
+ * | | | Enter| | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+
+/*
+ * jimmysjolund 2022-09-10
+ * Base Layer: Colemak DH
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | Esc | Q | W | F | P | G | | J | L | U | Y | ; : | Bksp |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | Tab | A | R | S | T | D | | H | N | E | I | O |Ctrl/' "|
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | Sym | Z | X | C | V | B | [ { | Alt | | Nav | ] } | K | M | , < | . > | / ? | RShift |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * |Adjust| LGUI |LShift| Bksp | Ctrl | | Enter| Space| AltGr| ↠| → |
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+
+
+ [_COLEMAK_DH] = LAYOUT(
+ 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 , CTL_QUOT,
+ SYM , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_LBRC, KC_LALT, NAV , KC_RBRC, KC_K, KC_M ,KC_COMM, KC_DOT ,KC_SLSH, KC_RSFT,
+ ADJUST, KC_LGUI, KC_LSFT, KC_BSPC ,KC_LCTL, KC_ENT , KC_SPC ,KC_ALGR, KC_LEFT, KC_RGHT
+ ),
+
+/*
+ * Nav Layer: Media, navigation
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | | | | | | | PgUp | Home | ↑ | End | VolUp| Delete |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | | GUI | Alt | Ctrl | Shift| | | PgDn | ↠| ↓ | → | VolDn| Insert |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | | | | | | | |ScLck | | | | Pause|M Prev|M Play|M Next|VolMut| PrtSc |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | | | | | | | | | | | |
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [_NAV] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, KC_DEL,
+ _______, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_VOLD, KC_INS,
+ _______, _______, _______, _______, _______, _______, _______, KC_SLCK, _______, _______,KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+/*
+ * Sym Layer: Numbers and symbols
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | | | \ | : | ; | - | [ | { | | | | } | ] | _ | , | . | / | ? |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | | | | | | | | | | | |
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [_SYM] = 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_TILD , KC_EXLM, KC_AT , KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS,
+ KC_PIPE , KC_BSLS, KC_COLN, KC_SCLN, KC_MINS, KC_LBRC, KC_LCBR, _______, _______, KC_RCBR, KC_RBRC, KC_UNDS, KC_COMM, KC_DOT, KC_SLSH, KC_QUES,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+/*
+ * Function Layer: Function keys
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | F9 | F10 | F11 | F12 | | | | | | | | |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | | F5 | F6 | F7 | F8 | | | | Shift| Ctrl | Alt | GUI | |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | | F1 | F2 | F3 | F4 | | | | | | | | | | | | |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | | | | | | | | | | | |
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [_FUNCTION] = LAYOUT(
+ _______, KC_F9 , KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______, _______, KC_RSFT, KC_RCTL, KC_LALT, KC_RGUI, _______,
+ _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+/*
+ * Adjust Layer: Default layer settings, RGB
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | | |QWERTY| | | | | | | | | |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | | | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | | | | | | | | | | | |
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [_ADJUST] = LAYOUT(
+ _______, _______, _______, QWERTY , _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, DVORAK , _______, _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______,
+ _______, _______, _______, COLEMAK, _______, _______,_______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, _______,
+ _______, _______, _______,_______, _______, _______, _______, _______, _______, _______
+ ),
+
+// /*
+// * Layer template
+// *
+// * ,-------------------------------------------. ,-------------------------------------------.
+// * | | | | | | | | | | | | | |
+// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+// * | | | | | | | | | | | | | |
+// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+// * | | | | | | | | | | | | | | | | | |
+// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+// * | | | | | | | | | | | |
+// * | | | | | | | | | | | |
+// * `----------------------------------' `----------------------------------'
+// */
+// [_LAYERINDEX] = LAYOUT(
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+// ),
+};
+
diff --git a/keyboards/splitkb/kyria/keymaps/jimmysjolund/rules.mk b/keyboards/splitkb/kyria/keymaps/jimmysjolund/rules.mk
new file mode 100644
index 0000000000..35f8ec90c6
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/jimmysjolund/rules.mk
@@ -0,0 +1,4 @@
+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
diff --git a/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c b/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c
index 6937007e5c..71af5f80bd 100644
--- a/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c
+++ b/keyboards/splitkb/kyria/keymaps/john-ezra/keymap.c
@@ -171,7 +171,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT(
- RESET, _______, _______, _______, _______, _______, _______, NK_TOGG, CG_TOGG, _______, GAME, HNTS,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, NK_TOGG, CG_TOGG, _______, GAME, HNTS,
_______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, _______, KC_BRIU, KC_BRID, _______, _______, _______,
_______, _______, RGB_SAD, RGB_HUD, RGB_VAD,RGB_RMOD,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/splitkb/kyria/keymaps/maherma-adg/keymap.c b/keyboards/splitkb/kyria/keymaps/maherma-adg/keymap.c
index 240bc6edf5..56f998e24f 100644
--- a/keyboards/splitkb/kyria/keymaps/maherma-adg/keymap.c
+++ b/keyboards/splitkb/kyria/keymaps/maherma-adg/keymap.c
@@ -218,7 +218,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* Adjust Layer: Default layer settings, RGB
*
* ,-------------------------------------------. ,-------------------------------------------.
- * | NumPad | | |QWERTY| | | | | | | | | RESET |
+ * | NumPad | | |QWERTY| | | | | | | | | QK_BOOT |
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | Mouse | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | DEBUG |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
@@ -229,7 +229,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------' `----------------------------------'
*/
[_ADJUST] = LAYOUT(
- NUMPAD , _______, _______, QWERTY , _______, _______, _______, _______, _______, _______, _______, RESET ,
+ NUMPAD , _______, _______, QWERTY , _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
MOUSE , _______, _______, DVORAK , _______, _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, DEBUG ,
DNAV , _______, _______, COLEMAK, _______, _______,_______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, EEPROM_RESET,
_______, _______, _______,_______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h
index 495b3032c6..ce3b5561e8 100644
--- a/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/splitkb/kyria/keymaps/muppetjones/.clang-format b/keyboards/splitkb/kyria/keymaps/muppetjones/.clang-format
new file mode 100644
index 0000000000..df3dbd17b4
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/muppetjones/.clang-format
@@ -0,0 +1,26 @@
+---
+BasedOnStyle: Google
+AlignAfterOpenBracket: Align
+AlignConsecutiveAssignments: 'true'
+AlignConsecutiveDeclarations: 'true'
+AlignOperands: 'true'
+AllowAllParametersOfDeclarationOnNextLine: 'false'
+AlwaysBreakAfterDefinitionReturnType: None
+AlwaysBreakAfterReturnType: None
+AlwaysBreakBeforeMultilineStrings: 'false'
+BinPackArguments: 'true'
+BinPackParameters: 'true'
+ColumnLimit: '160'
+IndentCaseLabels: 'true'
+IndentPPDirectives: AfterHash
+IndentWidth: '4'
+MaxEmptyLinesToKeep: '1'
+PointerAlignment: Right
+SortIncludes: 'false'
+SpaceBeforeAssignmentOperators: 'true'
+SpaceBeforeParens: ControlStatements
+SpaceInEmptyParentheses: 'false'
+TabWidth: '4'
+UseTab: Never
+
+...
diff --git a/keyboards/splitkb/kyria/keymaps/muppetjones/README.md b/keyboards/splitkb/kyria/keymaps/muppetjones/README.md
new file mode 100644
index 0000000000..20fdd47025
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/muppetjones/README.md
@@ -0,0 +1,11 @@
+# Kyria
+
+## Compile
+
+```shell
+make splitkb/kyria/rev1:muppetjones:avrdude-split-left
+```
+
+```shell
+make splitkb/kyria/rev1:muppetjones:avrdude-split-right
+```
diff --git a/keyboards/splitkb/kyria/keymaps/muppetjones/config.h b/keyboards/splitkb/kyria/keymaps/muppetjones/config.h
new file mode 100644
index 0000000000..92d495be4a
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/muppetjones/config.h
@@ -0,0 +1,60 @@
+/* Copyright 2020 Stephen Bush <muppetjones@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
+
+#ifdef OLED_ENABLE
+# define OLED_DISPLAY_128X64
+#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
+
+// EC11K encoders have a different resolution than other EC11 encoders.
+// When using the default resolution of 4, if you notice your encoder skipping
+// every other tick, lower the resolution to 2.
+#define ENCODER_RESOLUTION 2
+#define ENCODER_DIRECTION_FLIP
+
+// The Leader key allows to flexibly assign macros to key sequences.
+#define LEADER_PER_KEY_TIMING
+#define LEADER_TIMEOUT 350
+
+// Change "hold" time (default is 200 ms)
+// -- used for tap dance and other tap mods
+// -- defined in user namespace
+// #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
+
+// Reduce firmware size
+// https://thomasbaart.nl/2018/12/01/reducing-firmware-size-in-qmk/
+// also requires EXTRAFLAGS in config.h
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
+
+// Allows to use either side as the master. Look at the documentation for info:
+// https://docs.qmk.fm/#/config_options?id=setting-handedness
+#define EE_HANDS
+
+// Allows media codes to properly register in macros and rotary encoder code
+#define TAP_CODE_DELAY 10
+#define COMBO_TERM 40
diff --git a/keyboards/splitkb/kyria/keymaps/muppetjones/keymap.c b/keyboards/splitkb/kyria/keymaps/muppetjones/keymap.c
new file mode 100644
index 0000000000..ec0b7a1a31
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/muppetjones/keymap.c
@@ -0,0 +1,276 @@
+/* Copyright 2020 Stephen J. Bush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "muppetjones.h"
+#include "rgblight.h"
+
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+
+/* Layers from muppetjones.h
+ _CLMK_DH = 0,
+ _MOUSE,
+ _LOWER,
+ _RAISE,
+ _NAV,
+ _ADJUST,
+ */
+
+/*
+ * Custom Keys
+ */
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_standard(uint8_t index, bool clockwise);
+#endif
+
+/*
+ * LAYERS
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // clang-format off
+/*
+ * Base Layer: Colemak DH
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * |CAPSWORD| Q | W | F | P | B | | J | L | U | Y | ; : | | \ |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * |ESC/HYPR| A | R | S | T | G | | M | N | E | I | O | ' " |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | LShift | Z | X | C | D | V |LShift|Leader| | Del | Tab | K | H | , < | . > | / ? | Sft/Ent|
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | MUTE | Del | Enter| Space| Enter| | Bspc | Space| Hyper| Tab | AltGr|
+ * | | | Alt | Lower| Raise| | | Nav | Esc | Raise| |
+ * `----------------------------------' `----------------------------------'
+ */
+[_CLMK_DH] = LAYOUT_wrapper(
+ CAPSWRD, __COLEMAK_MOD_DH_L1________________________, __COLEMAK_MOD_DH_R1_W_QUOT_________________, KC_BSLS,
+ HY_ESC, __COLEMAK_MOD_DH_L2_W_GACS_________________, __COLEMAK_MOD_DH_R2_W_SCAG_________________, KC_QUOT,
+ TD_LAYR, __COLEMAK_MOD_DH_L3________________________, KC_LSFT, KC_LEAD, KC_DEL, KC_TAB, __COLEMAK_MOD_DH_R3________________________, KC_SFTENT,
+ KC_MUTE, KC_DEL, HY_ESC, LOW_BSP, RAI_ENT, KC_BSPC, NAV_SPC, HY_ESC, RAI_TAB, KC_RALT
+),
+[_QWERTY] = LAYOUT_wrapper(
+ _______, __QWERTY_L1________________________________, __QWERTY_R1________________________________, _______,
+ _______, __QWERTY_L2________________________________, __QWERTY_R2________________________________, _______,
+ _______, __QWERTY_L3________________________________, _______, _______, _______, _______, __QWERTY_R3________________________________, _______,
+ __BLANK____________________________________, __BLANK____________________________________
+),
+[_MOUSE] = LAYOUT_wrapper(
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __BLANK____________________________________, __BLANK____________________________________, _______,
+ _______, __BLANK____________________________________, _______, _______, _______, _______, __BLANK____________________________________, _______,
+ KC_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN2
+),
+/*
+ * Lower Layer: Numpad and some symbols
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | ~ | ` | ( | ) | xxxx | | / ? | 7 & | 8 * | 9 ( | - _ | |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | | LGUI | LALT |LCTL [|LSFT ]| _ - | | * | 4 $ | 5 % | 6 ^ | , < | + |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | | xxxx | xxxx | { | } | LSFT | | | | | | 0 ) | 1 ! | 2 @ | 3 # | = + | |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | | | | | | | | | | | |
+ * | | | Lower| | | | | Nav | 0 | . | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [_LOWER] = LAYOUT_wrapper(
+ _______, __SYMBOLS_L1_______________________________, __NUMPAD_R1________________________________, _______,
+ _______, __SYMBOLS_L2_______________________________, __NUMPAD_R2________________________________, KC_COMM,
+ _______, __SYMBOLS_L3_______________________________, _______, _______, _______, _______, __NUMPAD_R3________________________________, KC_DOT,
+ __BLANK____________________________________, _______, KC_SPC, KC_0, KC_DOT, _______
+ ),
+/*
+ * Raise Layer: Symbols
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | ! | @ | { | } | | | | | & | € | | | \ |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | | # | $ | ( | ) | ` | | _ | - | / | * | % | ' " |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | | % | ^ | [ | ] | ~ | | | | | | + | = | , | . | / ? | - _ |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | | | | | | | | | | | |
+ * | | | Lower| | | | | Nav | Raise| | |
+ * `----------------------------------' `----------------------------------'
+ */
+ // [_RAISE] = LAYOUT(
+ // _______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, _______, KC_AMPR, _______, _______, _______, KC_BSLS,
+ // _______, KC_HASH, KC_DLR, KC_LBRC, KC_RBRC, KC_GRV, KC_UNDS, KC_MINS, KC_SLSH, KC_ASTR, KC_PERC, KC_QUOT,
+ // _______, KC_PERC, KC_CIRC, KC_LCBR, KC_RCBR, KC_TILD, _______, _______, _______, _______, KC_PLUS, KC_EQL, KC_COMM, KC_DOT, KC_SLSH, KC_MINS,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ // ),
+ [_RAISE] = LAYOUT_wrapper(
+ _______, XXXXXXX, XXXXXXX, KC_GRV, KC_GRV, KC_BSLS, __SYMBOLS_R1_______________________________, _______,
+ _______, XXXXXXX, XXXXXXX, KC_UNDS, KC_MINS, KC_TILD, __SYMBOLS_R2_______________________________, _______,
+ _______, XXXXXXX, XXXXXXX, KC_PLUS, KC_EQL, KC_GRV, _______, _______, _______, _______, __SYMBOLS_R3_______________________________, _______,
+ __BLANK____________________________________, __BLANK____________________________________
+ ),
+/*
+ * Navigation Layer (w/ symbols on left)
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | | | | | | | PgUp | Home | Up | End | | ScrlLk |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | | GUI | ALT | CTL | SFT | | | PgDn | Left | Down | Up | Right| CapsLk |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | | | | | | | | | | | | | | | | | |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | | | | | | | | | | | |
+ * | | | Lower| | | | | Nav | Raise| | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [_NAV] = LAYOUT_wrapper(
+ _______, __VIM_L1___________________________________, __NAV_R1___________________________________, KC_SLCK,
+ _______, __BLANK_W_GACS_____________________________, __NAV_R2___________________________________, KC_CAPS,
+ _______, __BLANK____________________________________, _______, _______, _______, _______, __NAV_R3___________________________________, _______,
+ __BLANK____________________________________, __BLANK____________________________________
+ ),
+ /*
+ * Adjust Layer: Function keys, RGB
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | QK_BOOT |QK_BOOT |DEBUG | | | | | | F1 | F2 | F3 | F4 | |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | | TOG | SAI | HUI | VAI | MOD | | | F5 | F6 | F7 | F8 | |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | | | SAD | HUD | VAD | RMOD | | | | | | | F9 | F10 | F11 | F12 | |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | | | | | | | | | | | |
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [_ADJUST] = LAYOUT_wrapper(
+ QK_BOOT, __ADJUST_L1________________________________, __MEDIA_R1_________________________________, _______,
+ _______, __ADJUST_L2________________________________, __MEDIA_R2_________________________________, _______,
+ _______, __ADJUST_L3________________________________, _______, _______, _______, _______, __MEDIA_R3_________________________________, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
+ // /*
+ // * Layer template
+ // *
+ // * ,-------------------------------------------. ,-------------------------------------------.
+ // * | | | | | | | | | | | | | |
+ // * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ // * | | | | | | | | | | | | | |
+ // * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ // * | | | | | | | | | | | | | | | | | |
+ // * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ // * | | | | | | | | | | | |
+ // * | | | | | | | | | | | |
+ // * `----------------------------------' `----------------------------------'
+ // */
+ // [_LAYERINDEX] = LAYOUT(
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ // ),
+ // clang-format on
+};
+
+/*
+ *
+ */
+
+void keyboard_post_init_user(void) {
+ // Call the keymap level matrix init.
+
+#ifdef RGBLIGHT_ENABLE
+ set_rgb_home();
+#endif
+}
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+#ifdef RGBLIGHT_ENABLE
+ set_rgb_by_layer(state);
+#endif
+ return state;
+}
+
+bool process_record_keymap(uint16_t keycode, keyrecord_t* record) {
+ // Regular user keycode case statement
+ switch (keycode) {
+ default:
+ return true;
+ }
+ return true;
+}
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_user(uint8_t index, bool clockwise) {
+# ifdef POINTING_DEVICE_ENABLE
+ if (IS_LAYER_ON(_MOUSE))
+ return encoder_update_mouse(index, clockwise);
+ else
+# endif
+ return encoder_update_standard(index, clockwise);
+}
+
+bool encoder_update_standard(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
+# ifdef MOUSEKEY_ENABLE
+ if (clockwise) {
+ tap_code(KC_WH_D);
+ } else {
+ tap_code(KC_WH_U);
+ }
+# else
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+# endif
+ }
+ return true;
+}
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+void set_layer_hsv(layer_state_t state, HSV* layer_color) {
+ uint16_t h = layer_color->h, s = layer_color->s, v = layer_color->v;
+ switch (get_highest_layer(state)) {
+ case _RAISE:
+ h += 3 * RGBLIGHT_HUE_STEP;
+ break;
+ case _LOWER:
+ h += -3 * RGBLIGHT_HUE_STEP;
+ break;
+ case _NAV:
+ h += 2 * RGBLIGHT_HUE_STEP;
+ break;
+ case _MOUSE:
+ h += -8 * RGBLIGHT_HUE_STEP;
+ break;
+ default:
+ break;
+ }
+ layer_color->h = h % 255;
+ layer_color->s = s;
+ layer_color->v = v % 255;
+ return;
+}
+#endif
diff --git a/keyboards/splitkb/kyria/keymaps/muppetjones/rules.mk b/keyboards/splitkb/kyria/keymaps/muppetjones/rules.mk
new file mode 100644
index 0000000000..b7e46ecfd2
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/muppetjones/rules.mk
@@ -0,0 +1,11 @@
+OLED_ENABLE = no # Enables the use of OLED displays
+ENCODER_ENABLE = yes # Enables the use of one or more encoders
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+LEADER_ENABLE = yes # Enable the Leader Key feature
+MOUSEKEY_ENABLE = yes
+TAP_DANCE_ENABLE = yes
+POINTING_DEVICE_ENABLE = yes
+COMBO_ENABLE = yes
+
+# Reduce firmware size
+# https://thomasbaart.nl/2018/12/01/reducing-firmware-size-in-qmk/
diff --git a/keyboards/splitkb/kyria/keymaps/ninjonas/oled.c b/keyboards/splitkb/kyria/keymaps/ninjonas/oled.c
index 813328aa0c..d0f2a1b6cd 100644
--- a/keyboards/splitkb/kyria/keymaps/ninjonas/oled.c
+++ b/keyboards/splitkb/kyria/keymaps/ninjonas/oled.c
@@ -111,7 +111,7 @@ void oled_slash_separator(void){
void render_layout_state(void) {
oled_write_P(PSTR("Layout: "), false);
- switch (biton32(default_layer_state)) {
+ switch (get_highest_layer(default_layer_state)) {
case _COLEMAK:
oled_write_P(PSTR("Colemak"), false);
break;
diff --git a/keyboards/splitkb/kyria/keymaps/tessachka/keymap.c b/keyboards/splitkb/kyria/keymaps/tessachka/keymap.c
index 16d2bad8a4..2f1b56effe 100644
--- a/keyboards/splitkb/kyria/keymaps/tessachka/keymap.c
+++ b/keyboards/splitkb/kyria/keymaps/tessachka/keymap.c
@@ -77,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
* | | |EEPRST| | | | | | | | | | F12 |
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
- * | LSHIFT | TAB | RESET| | | | | | | | | Play | | | | | |
+ * | LSHIFT | TAB | QK_BOOT| | | | | | | | | Play | | | | | |
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
* | | | | | Space| | MYCM | Prev | Next | | |
* | | | Ctrl | LAlt | | | Raise| | | | |
@@ -86,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[RAISE] = LAYOUT(
KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_NO, KC_NO, EEP_RST, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
- KC_LSFT, KC_TAB, RESET, KC_NO, KC_NO, KC_NO, _______, _______, _______, _______, KC_MPLY, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LSFT, KC_TAB, QK_BOOT, KC_NO, KC_NO, KC_NO, _______, _______, _______, _______, KC_MPLY, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
_______, _______, _______, _______, KC_SPC , KC_MPRV, KC_MNXT, _______, _______, _______
),
/*
diff --git a/keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c b/keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c
index 0a4f1887c3..3cd9df27fb 100644
--- a/keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c
+++ b/keyboards/splitkb/kyria/keymaps/thomasbaart/keymap.c
@@ -311,7 +311,7 @@ bool oled_task_user(void) {
#ifdef ENCODER_ENABLE
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case QWERTY:
// History scrubbing. For Adobe products, hold shift while moving
// backward to go forward instead.
@@ -336,7 +336,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
break;
}
} else if (index == 1) {
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case QWERTY:
// Scrolling with PageUp and PgDn.
if (clockwise) {
diff --git a/keyboards/splitkb/kyria/keymaps/travishi/config.h b/keyboards/splitkb/kyria/keymaps/travishi/config.h
new file mode 100644
index 0000000000..c579a76ecc
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/travishi/config.h
@@ -0,0 +1,42 @@
+/* Copyright 2022 TravisHi
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 OLED_ENABLE
+ #define OLED_DISPLAY_128X64
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+ #define RGBLIGHT_LAYERS
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_SLEEP
+#endif
+
+// The Leader key allows to flexibly assign macros to key sequences.
+#define LEADER_PER_KEY_TIMING
+#define LEADER_TIMEOUT 350
+
+#define TAPPING_TERM 200
+
+// Allows to use either side as the master. Look at the documentation for info:
+// https://docs.qmk.fm/#/config_options?id=setting-handedness
+#define EE_HANDS
+
+// Allows media codes to properly register in macros and rotary encoder code
+#define TAP_CODE_DELAY 10
diff --git a/keyboards/splitkb/kyria/keymaps/travishi/keymap.c b/keyboards/splitkb/kyria/keymaps/travishi/keymap.c
new file mode 100644
index 0000000000..e91d16b8f9
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/travishi/keymap.c
@@ -0,0 +1,423 @@
+/* Copyright 2022 TravisHi
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 {
+ DVORAK = 0,
+ QWERTY,
+ LAYERS,
+ NUMSYM,
+ FPSGAMES,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/*
+ * Base Layer: DVORAK
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | ESC | ' " | , < | . | P | Y | | F | G | C | R | L |L_Qwerty|
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | Tab | A | O | E | U | I | | D | H | T | N | S | - |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | LShift | : ; | Q | J | K | X |LCtrl | | | Win |L_Lay | B | M | W | V | Z | RShift |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | Left |Right |L_NumS| Space| Bksp | |R_Alt | ENTER| Del | Up | Down |
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [DVORAK] = LAYOUT(
+ KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, DF(QWERTY),
+ KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINS,
+ KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LCTL, XXXXXXX, KC_LWIN, DF(LAYERS), KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
+ KC_LEFT, KC_RGHT, MO(NUMSYM), KC_SPC, KC_BSPC, KC_RALT, KC_ENT, KC_DEL, KC_UP, KC_DOWN
+ ),
+
+
+
+
+
+/*
+ * Base Layer: QWERTY
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | ESC | Q | W | E | R | T | | Y | U | I | O | P |L_Dvorak|
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | Tab | A | S | D | F | G | | H | J | K | L | ; : | |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | LShift | Z | X | C | V | B |LCtrl | | | Win |L_Lay | N | M | , < | . > | / ? | RShift |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | Left |Right |L_NumS| Space| Bksp | | RAlt | ENTER| Del | Up | Down |
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [QWERTY] = LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, DF(DVORAK),
+ KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, XXXXXXX,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LCTL, XXXXXXX, KC_LWIN, DF(LAYERS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LEFT, KC_RGHT, MO(NUMSYM), KC_SPC, KC_BSPC, KC_RALT, KC_ENT, KC_DEL, KC_UP, KC_DOWN
+ ),
+
+
+
+
+
+/*
+ * Base Layer: FPSGAMES
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | ESC | 1 | Q | W | E | R | | Y | U | I | O | P |L_Dvorak|
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | Tab | 2 | A | S | D | F | | H | K | J | L | ; | |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | LShift | 3 | Z | X | C | V | |L_NumS| | |L_Lay | N | M | , < | . > | / ? | |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | | | LCtrl| Space| LAlt | | | | Mute |Vol U |Vol D |
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [FPSGAMES] = LAYOUT(
+ KC_ESC, KC_1, KC_Q, KC_W, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, KC_P, DF(DVORAK),
+ KC_TAB, KC_2, KC_A, KC_S, KC_D, KC_F, KC_H, KC_J, KC_K, KC_L, KC_SCLN, XXXXXXX,
+ KC_LSFT, KC_3, KC_Z, KC_X, KC_C, KC_V, XXXXXXX, MO(NUMSYM), XXXXXXX, DF(LAYERS), KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, XXXXXXX,
+ XXXXXXX, XXXXXXX, KC_LCTL, KC_SPC, KC_LALT, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLU, KC_VOLD
+ ),
+
+
+
+
+
+/*
+ * MO Layer: Numbers, symbols & Vol control
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | ` | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + |
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | ~ | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | | | \ | : | ; | - | [ | { | ( | | ) | } | ] | _ | , | . | / | ? |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | Left |Right | |LShift| Home | | End | | Mute |Vol U |Vol D |
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [NUMSYM] = LAYOUT(
+ KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS,
+ KC_TILD, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQL,
+ KC_PIPE, KC_BSLS, KC_COLN, KC_SCLN, KC_MINS, KC_LBRC, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_RBRC, KC_UNDS, KC_COMM, KC_DOT, KC_SLSH, KC_QUES,
+ KC_LEFT, KC_RGHT, XXXXXXX, KC_LSFT, KC_HOME, KC_END, XXXXXXX, KC_MUTE, KC_VOLU, KC_VOLD
+ ),
+
+
+
+
+
+/*
+ * Adjust Layer: Layer index
+ *
+ * ,-------------------------------------------. ,-------------------------------------------.
+ * | | | |FPSGames|Dvorak| | | | | | | |L_Dvorak|
+ * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ * | | | | |QWERTY| | | | | | | | |
+ * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+ * | | | | |NUMSYM| | | | | | | | | | | | |
+ * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+ * | | | | | | | | | | | |
+ * | | | | | | | | | | | |
+ * `----------------------------------' `----------------------------------'
+ */
+ [LAYERS] = LAYOUT(
+ _______, _______, _______, DF(FPSGAMES), DF(DVORAK), _______, _______, _______, _______, _______, _______, DF(DVORAK),
+ _______, _______, _______, _______, DF(QWERTY), _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, MO(NUMSYM), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
+
+// END LAYERS
+
+
+
+
+
+///////////////////////////
+// OLED Display settings
+#ifdef OLED_ENABLE
+
+
+
+
+// WPM-responsive animation stuff here
+# define IDLE_FRAMES 2
+# 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 1024 // 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, 0x80, 0x80, 0xc0, 0x40,
+0x40, 0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 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, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x60, 0x30,
+0x18, 0x0c, 0x06, 0x02, 0xc2, 0x42, 0x62, 0x22, 0x22, 0x24, 0x2f, 0x39, 0x31, 0x60, 0xe0, 0x10,
+0x10, 0x08, 0x88, 0xcc, 0x44, 0x66, 0x23, 0x21, 0x31, 0x10, 0x98, 0x89, 0x8b, 0x0e, 0x08, 0x10,
+0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x10, 0x60, 0x18,
+0xe4, 0x1a, 0xe4, 0x1a, 0xcc, 0x30, 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, 0xc0, 0x78, 0x08, 0x08, 0x0c, 0x84, 0x9f, 0xe0, 0xb0,
+0x98, 0x08, 0x0c, 0x04, 0x04, 0x04, 0xe6, 0xe2, 0xf2, 0xf2, 0xb2, 0xb3, 0xe1, 0xe1, 0xc1, 0x81,
+0xe3, 0xbf, 0x81, 0xc0, 0x40, 0x40, 0x60, 0xa0, 0xbe, 0x3f, 0x1b, 0x9b, 0x8f, 0xcf, 0x66, 0x32,
+0x9e, 0xb1, 0x40, 0x40, 0xc0, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x0f, 0x08, 0x08, 0x10,
+0xd0, 0x70, 0x08, 0x0e, 0x02, 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, 0xfc, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x01, 0x01, 0x01, 0x01, 0x11, 0x11, 0x89, 0xcb, 0x4b, 0x4b, 0x8b, 0x87, 0x91, 0x4b, 0x45,
+0xe0, 0xa0, 0xb0, 0xd0, 0x51, 0x79, 0xad, 0xb4, 0xd6, 0x5a, 0x6b, 0x2d, 0x34, 0x96, 0xfb, 0xa9,
+0xbd, 0x46, 0x66, 0x33, 0x19, 0x0c, 0x07, 0x01, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x70, 0x1c, 0x07,
+0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x0c, 0x38, 0xe0, 0x80, 0xc0, 0x40, 0x60, 0x20, 0x20, 0x20,
+0x20, 0x20, 0x60, 0xc0, 0x80, 0x80, 0x80, 0x87, 0x8c, 0x88, 0x99, 0xd2, 0x5a, 0x6a, 0x29, 0x2d,
+0x34, 0x94, 0x96, 0x9a, 0xcb, 0x49, 0x69, 0x2c, 0xb4, 0x96, 0x9a, 0x8b, 0x4d, 0x45, 0x46, 0x42,
+0x21, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0e, 0x0b, 0x09, 0x04, 0x04, 0x04, 0x04,
+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, 0xf0, 0x1e, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x06, 0x0e, 0x0a, 0x1a, 0x1b, 0x35, 0x65, 0x45,
+0x45, 0xc3, 0x82, 0x82, 0x81, 0x01, 0x01, 0x01, 0x00, 0x10, 0xf0, 0xf8, 0xf8, 0x78, 0x18, 0x00,
+0x00, 0x80, 0xe0, 0xf0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0xc0, 0x20, 0x50, 0x10, 0xa0, 0x20, 0x40,
+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, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40,
+0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04,
+0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x06,
+0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x18, 0x10, 0x10, 0x30, 0x20, 0x20, 0x60,
+0x40, 0x80, 0x80, 0xc0, 0x41, 0x63, 0x26, 0x3c, 0x10, 0x48, 0x88, 0xab, 0x29, 0x70, 0xc0, 0x88,
+0x8e, 0xcf, 0x47, 0x43, 0x41, 0x40, 0x60, 0x20, 0x20, 0x20, 0x30, 0x10, 0x10, 0x18, 0x08, 0x08,
+0x0c, 0x05, 0x06, 0x02, 0x0c, 0x19, 0x3c, 0x29, 0x6a, 0x44, 0x44, 0xc5, 0x84, 0x04, 0x02, 0x01,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+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, 0x04, 0x0b, 0x0b, 0x36, 0x28, 0x2f, 0x2c, 0x29, 0x1a, 0x1c, 0x18, 0x1d, 0x16, 0x0a, 0x07,
+0x01, 0x02, 0x02, 0x06, 0x06, 0x0e, 0x0e, 0x1e, 0x1c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03,
+0x02, 0x02, 0x06, 0x04, 0x04, 0x04, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x10, 0x10, 0x10},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 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, 0x40,
+0x40, 0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 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, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x60, 0x30,
+0x18, 0x0c, 0x06, 0x02, 0xc2, 0x42, 0x62, 0x22, 0x22, 0x24, 0x2f, 0x39, 0x31, 0x60, 0xe0, 0x10,
+0x10, 0x08, 0x88, 0xcc, 0x44, 0x66, 0x23, 0x21, 0x31, 0x10, 0x98, 0x89, 0x8b, 0x0e, 0x08, 0x10,
+0x20, 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, 0x98, 0x66, 0x0d, 0x72, 0x0d, 0x72, 0x0c, 0x30, 0x08,
+0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x78, 0x08, 0x08, 0x0c, 0x84, 0x9f, 0xe0, 0xb0,
+0x98, 0x08, 0x0c, 0x04, 0x04, 0x04, 0xe6, 0xe2, 0xf2, 0xf2, 0xb2, 0xb3, 0xe1, 0xe1, 0xc1, 0x81,
+0xe3, 0xbf, 0x81, 0xc0, 0x40, 0x40, 0x60, 0xa0, 0xbe, 0x3f, 0x1b, 0x9b, 0x8f, 0xcf, 0x66, 0x32,
+0x9e, 0xb1, 0x40, 0x40, 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, 0x01, 0x01, 0x07, 0x04, 0xf8, 0x08, 0x08, 0x04, 0x04,
+0x07, 0x0c, 0xf8, 0x80, 0x00, 0xfc, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x01, 0x01, 0x01, 0x01, 0x11, 0x11, 0x89, 0xcb, 0x4b, 0x4b, 0x8b, 0x87, 0x91, 0x4b, 0x45,
+0xe0, 0xa0, 0xb0, 0xd0, 0x51, 0x79, 0xad, 0xb4, 0xd6, 0x5a, 0x6b, 0x2d, 0x34, 0x96, 0xfb, 0x29,
+0x3d, 0x16, 0x16, 0x13, 0x11, 0x10, 0x30, 0x20, 0x40, 0x40, 0x80, 0x80, 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, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 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, 0x0f, 0x38, 0xe0, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x07, 0x3c, 0xe7, 0x8c, 0x38, 0xe0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80,
+0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x87, 0x8c, 0x88, 0x99, 0xd2, 0x5a, 0x6a, 0x29, 0x2d,
+0x34, 0x94, 0x96, 0x9a, 0xcb, 0x49, 0x69, 0x2c, 0xb4, 0x96, 0x9a, 0x8b, 0x4d, 0x45, 0x46, 0x42,
+0x20, 0x20, 0x20, 0x60, 0x40, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04,
+0x0a, 0x12, 0x22, 0x21, 0x41, 0x81, 0x01, 0x00, 0x00, 0x04, 0x1c, 0xfc, 0x3c, 0x0c, 0x00, 0x00,
+0x00, 0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xf0, 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, 0x01, 0x07, 0x3c,
+0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x82, 0x87, 0x85, 0x8d, 0x49, 0x49, 0x49,
+0x6c, 0x24, 0x24, 0x24, 0x24, 0x14, 0x14, 0x16, 0x12, 0x0a, 0x0a, 0x0a, 0x0b, 0x05, 0x05, 0x05,
+0x05, 0x03, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x02, 0x06, 0x04, 0x04, 0x0c, 0x08,
+0x18, 0x20, 0xe0, 0xf0, 0x90, 0x18, 0xc9, 0x0e, 0x44, 0x92, 0x22, 0x2a, 0x4a, 0x9c, 0xb0, 0xe0,
+0x60, 0x04, 0x07, 0x87, 0x83, 0x81, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 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, 0x08, 0x08, 0x08, 0x04, 0x04,
+0x04, 0x03, 0x03, 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, 0x80, 0x40, 0x40, 0x80, 0x80, 0x80,
+0x80, 0xc0, 0x40, 0x40, 0x40, 0x40, 0x60, 0x20, 0x20, 0x20, 0x30, 0x10, 0x10, 0x18, 0x08, 0x08,
+0x0c, 0x05, 0x02, 0x02, 0x0d, 0x1a, 0x3b, 0x2b, 0x6a, 0x46, 0x47, 0xc6, 0x87, 0x05, 0x02, 0x01,
+0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+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, 0x04, 0x0a, 0x0a, 0x32, 0x22, 0x25, 0x29, 0x21, 0x15, 0x10, 0x15, 0x10, 0x12, 0x08, 0x05,
+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, 0x01, 0x01, 0x01, 0x03,
+0x02, 0x02, 0x06, 0x04, 0x04, 0x04, 0x0c, 0x08, 0x08, 0x08, 0x08, 0x08, 0x18, 0x10, 0x10, 0x10}
+};
+
+
+
+ // assumes 1 frame prep stage
+ void animation_phase(void) {
+ 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() != 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_timer) > ANIM_FRAME_DURATION) {
+ anim_timer = timer_read32();
+ animation_phase();
+ }
+
+ }
+}
+
+
+
+
+
+
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_180;
+}
+
+
+static void render_keymap(void) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(default_layer_state)) {
+ case DVORAK:
+ oled_write_P(PSTR("Dvorak\n\n"), false);
+ oled_write_P(PSTR("' , . p y f g c r l \n"), false);
+ oled_write_P(PSTR("a o e i u d h t n s \n"), false);
+ oled_write_P(PSTR("; q j k x b m w v z \n"), false);
+ break;
+ case QWERTY:
+ oled_write_P(PSTR("Qwerty\n\n"), false);
+ oled_write_P(PSTR("q w e r t y u i o p \n"), false);
+ oled_write_P(PSTR("a s d f g h j k l ; \n"), false);
+ oled_write_P(PSTR("z x c v b n m , . / \n"), false);
+ break;
+ case NUMSYM:
+ oled_write_P(PSTR("Num & Sym\n\n"), false);
+ oled_write_P(PSTR("`12345 | 67890= \n"), false);
+ oled_write_P(PSTR("~!@#$P | ^&*()+ \n"), false);
+ oled_write_P(PSTR("|\\:;-[{ }]_,./? \n"), false);
+ break;
+ case FPSGAMES:
+ oled_write_P(PSTR("FPS Games \n\n"), false);
+ oled_write_P(PSTR("1 q W e r | \n"), false);
+ oled_write_P(PSTR("2 A S D f | \n"), false);
+ oled_write_P(PSTR("3 z x c v | \n"), false);
+ break;
+ case LAYERS:
+ oled_write_P(PSTR("Index Layer\n\n"), false);
+ oled_write_P(PSTR("- - G D - | - - - - - \n"), false);
+ oled_write_P(PSTR("- - - Q - | - - - - - \n"), false);
+ oled_write_P(PSTR("- - - N - | - - - - - \n"), false);
+ break;
+ default:
+ oled_write_P(PSTR("ERR No Layer!\n"), false);
+ }
+}
+
+
+
+// Host Keyboard LED Status
+/*
+static void render_indicator_status(void) {
+ 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("SCRLCK ") : PSTR(" "), false);
+}
+*/
+
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
+ render_keymap();
+ } else {
+ //render_indicator_status();
+ //oled_write_P(PSTR(" Kyria rev1.4\n\n"), false);
+ render_anim(); // renders pixelart
+ }
+ return false;
+}
+#endif \ No newline at end of file
diff --git a/keyboards/splitkb/kyria/keymaps/travishi/readme.md b/keyboards/splitkb/kyria/keymaps/travishi/readme.md
new file mode 100644
index 0000000000..c7b1f6dd1a
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/travishi/readme.md
@@ -0,0 +1,99 @@
+# Introduction
+This keyboard layout centers around Dvorak, harnesing the power of the Kyria thumb
+clusters and layers to reduce finger and wrist movement.
+
+## IMPORTANT NOTE
+This keymap will only work if you have all the kyria keys available! If you've used 2u keys on the thumb cluster, or have broken off a column, this layout will not work!
+
+---
+
+## Features
+- **Dvorak:** So you don't have to leave the home row so much.
+- **Qwerty:** So you don't have to remap common programs.
+- **Custom FPS gaming layer:** Because the WASD stagger is so extreme on the Kyria.
+- **A number layer:** To access numbers, symbols and volume controls.
+- **Index Layer:** To help navigate thru base layers without wasting accessible keys.
+- And a very *very* rare **fren** to tag along on your adventures.
+
+## Guiding ideology
+- Use lower thumb keys as much as possible.
+- Minimise home row departure.
+- Minimize or eliminate non home row pinkie finger use.
+- Create macros for very common key shortcuts (ctrl + c/v/s, ctrl+shift+home etc.).
+- Create macros for very common commands (git status, git pull, git push etc.).
+- Use hints to indicate current layer (rgb lighting/OLED display).
+- Allow graceful layer handling (emergency return to default layer/layer index layer).
+---
+
+
+# Current Layers
+- Base1: dvorak
+- Base2: qwerty
+- Base3: Gaming layer (WASD is too staggered on Kyria)
+- MO layer: Number, Symbol & volume control layer
+
+## Future Layers
+
+- F keys
+- FE macros
+- Git macros
+
+---
+
+
+# Issues
+### Major
+- [x] None
+
+### Minor
+- [ ] Backlight LEDs dont indicate layer
+- [ ] Not fully using thumb clusters
+- [ ] Function keys and indicators missing (NUM, CAPS, SCROLL)
+- [ ] No Macro layers
+
+---
+
+# Helpful Links
+
+- QMK Docs https://docs.qmk.fm/#/
+- [Keymap diagram editor for the Kyria](http://www.keyboard-layout-editor.com/##@_name=Kyria%3B&@_y:0.25&x:3&a:7%3B&=&_x:9%3B&=%3B&@_y:-0.75&x:2%3B&=&_x:1%3B&=&_x:7%3B&=&_x:1%3B&=%3B&@_y:-0.875&x:5%3B&=&_x:5%3B&=%3B&@_y:-0.625%3B&=&=&_x:13%3B&=&=%3B&@_y:-0.75&x:3%3B&=&_x:9%3B&=%3B&@_y:-0.75&x:2%3B&=&_x:1%3B&=&_x:7%3B&=&_x:1%3B&=%3B&@_y:-0.875&x:5%3B&=&_x:5%3B&=%3B&@_y:-0.625%3B&=&=&_x:13%3B&=&=%3B&@_y:-0.75&x:3%3B&=&_x:9%3B&=%3B&@_y:-0.75&x:2%3B&=&_x:1%3B&=&_x:7%3B&=&_x:1%3B&=%3B&@_y:-0.875&x:5%3B&=&_x:5%3B&=%3B&@_y:-0.625%3B&=&=&_x:13%3B&=&=%3B&@_y:-0.5&x:2.5%3B&=&_x:10%3B&=%3B&@_rx:4&ry:8.175&y:-4.675000000000001&x:-0.5%3B&=%3B&@_rx:13&y:-4.675000000000001&x:-0.5%3B&=%3B&@_r:15&rx:4&y:-4.675000000000001&x:-0.5%3B&=%3B&@_r:30&y:-2&x:-0.5%3B&=%3B&@_x:-0.5%3B&=%3B&@_r:45&y:-2&x:-0.5%3B&=%3B&@_x:-0.5%3B&=%3B&@_r:-45&rx:13&y:-5.675000000000001&x:-0.5%3B&=%3B&@_x:-0.5%3B&=%3B&@_r:-30&y:-2&x:-0.5%3B&=%3B&@_x:-0.5%3B&=%3B&@_r:-15&y:-1&x:-0.5%3B&=)
+- [Thomas' Guide for creating OLED images](https://docs.splitkb.com/hc/en-us/articles/360013811280)
+- [Image converter](https://javl.github.io/image2cpp/)
+
+---
+
+## Useful notes
+Various useful info for setting up your own keyboard layout.
+
+### Install QMK Tool steps
+[QMK Setup (Windows)](https://docs.qmk.fm/#/newbs_getting_started)
+- Install QMK MSYS,
+- Install Toolbox,
+- Using QMK MSYS, follow the setup guide, then `cd` to where you've cloned the `qmk_firmware` folder,
+- `qmk compile` to generate your .hex file (it should be located in the `qmk_firmware` folder),
+- Using QMK Toolbox, flash the .hex file to your keyboard halves (drag your hex file into the toolbox window, press the reset button on the keyboard, the toolbox should detect this, then press flash. You need to reset each half separately).
+- Congrats, all done!
+
+
+---
+### Layer template
+```
+// * ,-------------------------------------------. ,-------------------------------------------.
+// * | | | | | | | | | | | | | |
+// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+// * | | | | | | | | | | | | | |
+// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
+// * | | | | | | | | | | | | | | | | | |
+// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
+// * | | | | | | | | | | | |
+// * | | | | | | | | | | | |
+// * `----------------------------------' `----------------------------------'
+// */
+// [_LAYERINDEX] = LAYOUT(
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+// ),
+```
+
diff --git a/keyboards/splitkb/kyria/keymaps/travishi/rules.mk b/keyboards/splitkb/kyria/keymaps/travishi/rules.mk
new file mode 100644
index 0000000000..a1564cfe4b
--- /dev/null
+++ b/keyboards/splitkb/kyria/keymaps/travishi/rules.mk
@@ -0,0 +1,12 @@
+# Enabled features
+LEADER_ENABLE = yes
+RGBLIGHT_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306 # Enables the use of OLED displays
+
+WPM_ENABLE = yes
+
+
+# Disabled features
+ENCODER_ENABLE = no # Enables the use of one or more encoders
+MOUSEKEY_ENABLE = no \ No newline at end of file
diff --git a/keyboards/splitkb/kyria/rev1/config.h b/keyboards/splitkb/kyria/rev1/config.h
index 2fc34070f4..f6f9a98c3e 100644
--- a/keyboards/splitkb/kyria/rev1/config.h
+++ b/keyboards/splitkb/kyria/rev1/config.h
@@ -17,13 +17,6 @@ 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 0x0001
-#define MANUFACTURER splitkb
-#define PRODUCT Kyria rev1
-
/* key matrix size */
/* Rows are doubled up */
#define MATRIX_ROWS 8
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B4, E6, D7, D4 }
#define MATRIX_COL_PINS \
{ B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A \
{ C6 }
diff --git a/keyboards/splitkb/kyria/rev1/info.json b/keyboards/splitkb/kyria/rev1/info.json
new file mode 100644
index 0000000000..8e34af43f5
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Kyria rev1",
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/splitkb/kyria/rev1/proton_c/rules.mk b/keyboards/splitkb/kyria/rev1/proton_c/rules.mk
index 1a5f9a7cb3..496312fe98 100644
--- a/keyboards/splitkb/kyria/rev1/proton_c/rules.mk
+++ b/keyboards/splitkb/kyria/rev1/proton_c/rules.mk
@@ -9,4 +9,4 @@ WS2812_DRIVER = pwm
SERIAL_DRIVER = usart
AUDIO_ENABLE = no
LTO_ENABLE = no
-CONVERT_TO_PROTON_C = yes
+CONVERT_TO = proton_c
diff --git a/keyboards/splitkb/kyria/rev1/rules.mk b/keyboards/splitkb/kyria/rev1/rules.mk
index cc2cbba604..e7d6763fcd 100644
--- a/keyboards/splitkb/kyria/rev1/rules.mk
+++ b/keyboards/splitkb/kyria/rev1/rules.mk
@@ -1,5 +1,4 @@
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)
diff --git a/keyboards/splitkb/kyria/rev2/config.h b/keyboards/splitkb/kyria/rev2/config.h
index 8ff3813964..6af99e0a7c 100644
--- a/keyboards/splitkb/kyria/rev2/config.h
+++ b/keyboards/splitkb/kyria/rev2/config.h
@@ -17,13 +17,6 @@ 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
@@ -38,7 +31,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ 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 }
diff --git a/keyboards/splitkb/kyria/rev2/info.json b/keyboards/splitkb/kyria/rev2/info.json
new file mode 100644
index 0000000000..7ff56b321a
--- /dev/null
+++ b/keyboards/splitkb/kyria/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Kyria rev2",
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/splitkb/kyria/rev2/proton_c/rules.mk b/keyboards/splitkb/kyria/rev2/proton_c/rules.mk
index 1a5f9a7cb3..496312fe98 100644
--- a/keyboards/splitkb/kyria/rev2/proton_c/rules.mk
+++ b/keyboards/splitkb/kyria/rev2/proton_c/rules.mk
@@ -9,4 +9,4 @@ WS2812_DRIVER = pwm
SERIAL_DRIVER = usart
AUDIO_ENABLE = no
LTO_ENABLE = no
-CONVERT_TO_PROTON_C = yes
+CONVERT_TO = proton_c
diff --git a/keyboards/splitkb/zima/config.h b/keyboards/splitkb/zima/config.h
index 7e79e7f359..35782781c1 100644
--- a/keyboards/splitkb/zima/config.h
+++ b/keyboards/splitkb/zima/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8D1D
-#define PRODUCT_ID 0xF75B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER splitkb
-#define PRODUCT Zima
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 3
@@ -39,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ E6, F5, F6 }, \
{ F0, F1, F4 }, \
}
-#define UNUSED_PINS
#define ENCODERS_PAD_A { B4 }
#define ENCODERS_PAD_B { D7 }
diff --git a/keyboards/splitkb/zima/info.json b/keyboards/splitkb/zima/info.json
index 8e3ca411a5..0afcbe5b6e 100644
--- a/keyboards/splitkb/zima/info.json
+++ b/keyboards/splitkb/zima/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Zima",
+ "manufacturer": "splitkb",
"url": "splitkb.com",
"maintainer": "splitkb.com, drashna",
+ "usb": {
+ "vid": "0x8D1D",
+ "pid": "0xF75B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x3": {
"layout": [
diff --git a/keyboards/splitography/config.h b/keyboards/splitography/config.h
index 19afdec862..d66360f8f4 100644
--- a/keyboards/splitography/config.h
+++ b/keyboards/splitography/config.h
@@ -18,9 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define PRODUCT Splitography
-
/* Key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/splitography/keymaps/jeandeaual/keymap.c b/keyboards/splitography/keymaps/jeandeaual/keymap.c
index 6679d835f2..87c4159443 100644
--- a/keyboards/splitography/keymaps/jeandeaual/keymap.c
+++ b/keyboards/splitography/keymaps/jeandeaual/keymap.c
@@ -225,7 +225,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
}
return false;
case KC_QUOT:
- if ((base_layer != dvorak) || (biton32(layer_state) != _BLUE)) {
+ if ((base_layer != dvorak) || (get_highest_layer(layer_state) != _BLUE)) {
break;
}
if (record->event.pressed) {
diff --git a/keyboards/splitography/keymaps/multi/keymap.c b/keyboards/splitography/keymaps/multi/keymap.c
index af1cc1a801..7d847e40b6 100644
--- a/keyboards/splitography/keymaps/multi/keymap.c
+++ b/keyboards/splitography/keymaps/multi/keymap.c
@@ -331,7 +331,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return false;
case KC_QUOT:
- if ((base_layer != dvorak) || (biton32(layer_state) != _BLUE)) {
+ if ((base_layer != dvorak) || (get_highest_layer(layer_state) != _BLUE)) {
break;
}
if (record->event.pressed) {
diff --git a/keyboards/splitography/readme.md b/keyboards/splitography/readme.md
index eeb9b2f40d..39b09d8d8b 100644
--- a/keyboards/splitography/readme.md
+++ b/keyboards/splitography/readme.md
@@ -24,7 +24,7 @@ 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.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
## [Guide](https://softhruf.love/pages/guides)
diff --git a/keyboards/splitty/config.h b/keyboards/splitty/config.h
index 68ea1b9411..1494753e15 100644
--- a/keyboards/splitty/config.h
+++ b/keyboards/splitty/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x1D50
-#define PRODUCT_ID 0x6052
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Nicolas Schodet
-#define PRODUCT Splitty
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 7
diff --git a/keyboards/splitty/info.json b/keyboards/splitty/info.json
index 1cccfa124b..71e31132e5 100644
--- a/keyboards/splitty/info.json
+++ b/keyboards/splitty/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Splitty",
+ "manufacturer": "Nicolas Schodet",
"url": "https://git.ni.fr.eu.org/splitty.git/about/",
"maintainer": "schodet",
+ "usb": {
+ "vid": "0x1D50",
+ "pid": "0x6052",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/sporewoh/banime40/config.h b/keyboards/sporewoh/banime40/config.h
index 58173b58be..0f292315f1 100644
--- a/keyboards/sporewoh/banime40/config.h
+++ b/keyboards/sporewoh/banime40/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xBEAF
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0000
-#define MANUFACTURER sporewoh
-#define PRODUCT banime40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { E6, D7, C6, D4 }
#define MATRIX_COL_PINS { B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sporewoh/banime40/info.json b/keyboards/sporewoh/banime40/info.json
index 36a7ee9eb5..74198ad3bb 100644
--- a/keyboards/sporewoh/banime40/info.json
+++ b/keyboards/sporewoh/banime40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "banime40",
+ "manufacturer": "sporewoh",
"url": "https://github.com/ChrisChrisLoLo/banime40",
"maintainer": "sporewoh",
+ "usb": {
+ "vid": "0xBEAF",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x10": {
"layout": [
diff --git a/keyboards/star75/config.h b/keyboards/star75/config.h
new file mode 100644
index 0000000000..7efe58f50f
--- /dev/null
+++ b/keyboards/star75/config.h
@@ -0,0 +1,57 @@
+/*
+Copyright 2022 Horns Lyn (@hornslyn)
+SPDX-License-Identifier: GPL-2.0-or-later */
+#pragma once
+
+#include "config_common.h"
+
+/* 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 { D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0, E6 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 3
+#endif
+
+/* encoder definitions */
+#ifdef ENCODER_ENABLE
+#define ENCODERS_PAD_A { B2 }
+#define ENCODERS_PAD_B { B1 }
+#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 RGB_DI_PIN B3
+
+#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 1
+#define RGBLIGHT_LAYERS
+#define RGBLIGHT_LED_MAP { 0, 1 }
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define RGBLIGHT_LIMIT_VAL 180
+#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
+#endif
diff --git a/keyboards/star75/info.json b/keyboards/star75/info.json
new file mode 100644
index 0000000000..f7d0f17e50
--- /dev/null
+++ b/keyboards/star75/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Star75",
+ "manufacturer": "DXWS",
+ "url": "https://item.taobao.com/item.htm?id=656392112467",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x4B35",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
+ "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":"Ins", "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":"Capslock", "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":"PgDn", "x":15, "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, "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":"Fn", "x":10, "y":5.25, "w":1.25}, {"label":"Alt", "x":11.25, "y":5.25, "w":1.25}, {"label":"Left", "x":13, "y":5.25}, {"label":"Down", "x":14, "y":5.25}, {"label":"Right", "x":15, "y":5.25}]
+ }
+ }
+}
diff --git a/keyboards/star75/keymaps/default/keymap.c b/keyboards/star75/keymaps/default/keymap.c
new file mode 100644
index 0000000000..996615877d
--- /dev/null
+++ b/keyboards/star75/keymaps/default/keymap.c
@@ -0,0 +1,103 @@
+/*
+Copyright 2022 Horns Lyn (@hornslyn)
+SPDX-License-Identifier: GPL-2.0-or-later */
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _HOME = 0,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_HOME] = 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_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_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_FN1] = 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, RGB_TOG, RGB_RMOD, 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),
+
+ [_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+/* capslock/layer indicators; using rgb led; start */
+// capslock;
+const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_RED}
+);
+// layer 1;
+const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_CYAN}
+);
+// layer 2;
+const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_PURPLE}
+);
+// layer 3;
+const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_GREEN}
+);
+
+// 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,
+ my_layer1_layer, // Overrides caps lock layer
+ my_layer2_layer, // Overrides other layers
+ my_layer3_layer // Overrides other layers
+);
+
+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(_FN1, layer_state_cmp(state, _FN1));
+ rgblight_set_layer_state(_FN2, layer_state_cmp(state, _FN2));
+ rgblight_set_layer_state(_FN3, layer_state_cmp(state, _FN3));
+ return state;
+}
+/* capslock/layer indicators; using rgb led; end */
+
+/* encoder; start */
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_HOME] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN1] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
+
+};
+#endif
+/* encoder; end */
+
diff --git a/keyboards/star75/keymaps/default/readme.md b/keyboards/star75/keymaps/default/readme.md
new file mode 100644
index 0000000000..d1b7656403
--- /dev/null
+++ b/keyboards/star75/keymaps/default/readme.md
@@ -0,0 +1,16 @@
+# Default Star75 Layout
+
+This is the default layout of Star75 PCB.
+
+Note that the optional encoder is disabled by default.
+
+rules.mk OPTIONS
+
+`ENCODER_MAP_ENABLE = yes` - turns on the optional encoder
+
+## Layer diagrams
+Default layer
+![Star75 Default Layout](https://i.imgur.com/AYbSn4O.png)
+
+Fn layer
+![Star75 Fn Layout](https://i.imgur.com/51IbsCP.png)
diff --git a/keyboards/star75/keymaps/via/keymap.c b/keyboards/star75/keymaps/via/keymap.c
new file mode 100644
index 0000000000..43b53d80dd
--- /dev/null
+++ b/keyboards/star75/keymaps/via/keymap.c
@@ -0,0 +1,102 @@
+/*
+Copyright 2022 Horns Lyn (@hornslyn)
+SPDX-License-Identifier: GPL-2.0-or-later */
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _HOME = 0,
+ _FN1,
+ _FN2,
+ _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_HOME] = 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_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_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, MO(1), KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_FN1] = 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, RGB_TOG, RGB_RMOD, 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),
+
+ [_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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+};
+
+/* capslock/layer indicators; using rgb led; start */
+// capslock;
+const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_RED}
+);
+// layer 1;
+const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_CYAN}
+);
+// layer 2;
+const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_PURPLE}
+);
+// layer 3;
+const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 1, HSV_GREEN}
+);
+
+// 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,
+ my_layer1_layer, // Overrides caps lock layer
+ my_layer2_layer, // Overrides other layers
+ my_layer3_layer // Overrides other layers
+);
+
+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(_FN1, layer_state_cmp(state, _FN1));
+ rgblight_set_layer_state(_FN2, layer_state_cmp(state, _FN2));
+ rgblight_set_layer_state(_FN3, layer_state_cmp(state, _FN3));
+ return state;
+}
+/* capslock/layer indicators; using rgb led; end */
+
+/* encoder; start */
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_HOME] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_FN1] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN) },
+ [_FN2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ [_FN3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
+};
+#endif
+/* encoder; end */
+
diff --git a/keyboards/star75/keymaps/via/rules.mk b/keyboards/star75/keymaps/via/rules.mk
new file mode 100644
index 0000000000..f48a8b1056
--- /dev/null
+++ b/keyboards/star75/keymaps/via/rules.mk
@@ -0,0 +1,4 @@
+ENCODER_MAP_ENABLE = yes
+VIA_ENABLE = yes
+LTO_ENABLE = yes
+
diff --git a/keyboards/star75/readme.md b/keyboards/star75/readme.md
new file mode 100644
index 0000000000..5145dc9c47
--- /dev/null
+++ b/keyboards/star75/readme.md
@@ -0,0 +1,28 @@
+# 大星外设 DXWS Star75
+
+75% Hotswap PCB with optional rotary encoder.
+
+![View of Star75 Keyboard](https://i.imgur.com/UrvnjiZ.jpeg)
+![Star75 Default Layout](https://i.imgur.com/LkTP0Cj.png)
+
+* Keyboard Maintainer: QMK Community
+* Hardware Supported: Star75 1.2mm Flex-cut Hotswap PCB
+* Hardware Availability: [大星外设](https://item.taobao.com/item.htm?id=656392112467)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make star75:default
+
+Flashing example for this keyboard:
+
+ make star75: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:
+
+* **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 `QK_BOOT` if it is available
+
diff --git a/keyboards/star75/rules.mk b/keyboards/star75/rules.mk
new file mode 100644
index 0000000000..0b3ffc06f2
--- /dev/null
+++ b/keyboards/star75/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 = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+ENCODER_ENABLE = yes
+LTO_ENABLE = yes
+
+
diff --git a/keyboards/star75/star75.c b/keyboards/star75/star75.c
new file mode 100644
index 0000000000..abadba8625
--- /dev/null
+++ b/keyboards/star75/star75.c
@@ -0,0 +1,4 @@
+/*
+Copyright 2022 Horns Lyn (@hornslyn)
+SPDX-License-Identifier: GPL-2.0-or-later */
+#include "star75.h"
diff --git a/keyboards/star75/star75.h b/keyboards/star75/star75.h
new file mode 100644
index 0000000000..7e47ea0e40
--- /dev/null
+++ b/keyboards/star75/star75.h
@@ -0,0 +1,25 @@
+/*
+Copyright 2022 Horns Lyn (@hornslyn)
+SPDX-License-Identifier: GPL-2.0-or-later */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all( \
+ 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, 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, K4C, K4D, \
+ K50, K51, K52, K55, K59, K5A, K5C, K5D, K5E \
+) { \
+ { 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, K3C, KC_NO, K3E }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, KC_NO, K4C, 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/stello65/beta/config.h b/keyboards/stello65/beta/config.h
index 5316f351d7..555975b02d 100644
--- a/keyboards/stello65/beta/config.h
+++ b/keyboards/stello65/beta/config.h
@@ -5,13 +5,6 @@
#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 Stello65
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -28,7 +21,6 @@
*/
#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
diff --git a/keyboards/stello65/beta/info.json b/keyboards/stello65/beta/info.json
index 7f2e785858..3beb747bec 100644
--- a/keyboards/stello65/beta/info.json
+++ b/keyboards/stello65/beta/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Stello65",
+ "manufacturer": "@wekey",
"url": "",
"maintainer": "@wekey",
+ "usb": {
+ "vid": "0x5559",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"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/stello65/beta/readme.md b/keyboards/stello65/beta/readme.md
index cb2f156ec2..67b183008a 100644
--- a/keyboards/stello65/beta/readme.md
+++ b/keyboards/stello65/beta/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/stello65/hs_rev1/config.h b/keyboards/stello65/hs_rev1/config.h
index 45b0c5ffb3..3da4275402 100644
--- a/keyboards/stello65/hs_rev1/config.h
+++ b/keyboards/stello65/hs_rev1/config.h
@@ -5,13 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5559
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER @wekey
-#define PRODUCT Stello65
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -28,7 +21,6 @@
*/
#define MATRIX_ROW_PINS { F1, F0, D1, D2, B6, C6, C7, F7, F6, F5 }
#define MATRIX_COL_PINS { E6, B5, B4, D7, D6, D4, D5, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/stello65/hs_rev1/info.json b/keyboards/stello65/hs_rev1/info.json
index a743abc34d..f68e0333a2 100644
--- a/keyboards/stello65/hs_rev1/info.json
+++ b/keyboards/stello65/hs_rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Stello65",
+ "manufacturer": "@wekey",
"url": "",
"maintainer": "@wekey",
+ "usb": {
+ "vid": "0x5559",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"0,0", "x":0, "y":0}, {"label":"1,0", "x":1, "y":0}, {"label":"0,1", "x":2, "y":0}, {"label":"1,1", "x":3, "y":0}, {"label":"0,2", "x":4, "y":0}, {"label":"1,2", "x":5, "y":0}, {"label":"0,3", "x":6, "y":0}, {"label":"1,3", "x":7, "y":0}, {"label":"0,4", "x":8, "y":0}, {"label":"1,4", "x":9, "y":0}, {"label":"0,5", "x":10, "y":0}, {"label":"1,5", "x":11, "y":0}, {"label":"0,6", "x":12, "y":0}, {"label":"1,6", "x":13, "y":0, "w":2}, {"label":"2,0", "x":0, "y":1, "w":1.5}, {"label":"3,0", "x":1.5, "y":1}, {"label":"2,1", "x":2.5, "y":1}, {"label":"3,1", "x":3.5, "y":1}, {"label":"2,2", "x":4.5, "y":1}, {"label":"3,2", "x":5.5, "y":1}, {"label":"2,3", "x":6.5, "y":1}, {"label":"3,3", "x":7.5, "y":1}, {"label":"2,4", "x":8.5, "y":1}, {"label":"3,4", "x":9.5, "y":1}, {"label":"2,5", "x":10.5, "y":1}, {"label":"3,5", "x":11.5, "y":1}, {"label":"2,6", "x":12.5, "y":1}, {"label":"3,6", "x":13.5, "y":1, "w":1.5}, {"label":"2,7", "x":15, "y":1}, {"label":"4,0", "x":0, "y":2, "w":1.75}, {"label":"4,1", "x":1.75, "y":2}, {"label":"5,0", "x":2.75, "y":2}, {"label":"5,1", "x":3.75, "y":2}, {"label":"4,2", "x":4.75, "y":2}, {"label":"5,2", "x":5.75, "y":2}, {"label":"4,3", "x":6.75, "y":2}, {"label":"5,3", "x":7.75, "y":2}, {"label":"4,4", "x":8.75, "y":2}, {"label":"5,4", "x":9.75, "y":2}, {"label":"4,5", "x":10.75, "y":2}, {"label":"5,5", "x":11.75, "y":2}, {"label":"5,6", "x":12.75, "y":2, "w":2.25}, {"label":"4,7", "x":15, "y":2}, {"label":"6,0", "x":0, "y":3, "w":2.25}, {"label":"6,1", "x":2.25, "y":3}, {"label":"7,0", "x":3.25, "y":3}, {"label":"7,1", "x":4.25, "y":3}, {"label":"6,2", "x":5.25, "y":3}, {"label":"7,2", "x":6.25, "y":3}, {"label":"6,3", "x":7.25, "y":3}, {"label":"7,3", "x":8.25, "y":3}, {"label":"6,4", "x":9.25, "y":3}, {"label":"7,4", "x":10.25, "y":3}, {"label":"6,5", "x":11.25, "y":3}, {"label":"7,5", "x":12.25, "y":3}, {"label":"7,6", "x":13.25, "y":3, "w":1.75}, {"label":"6,7", "x":15, "y":3}, {"label":"8,0", "x":0, "y":4, "w":1.25}, {"label":"9,0", "x":1.25, "y":4, "w":1.25}, {"label":"8,1", "x":2.5, "y":4, "w":1.25}, {"label":"9,1", "x":3.75, "y":4, "w":6.25}, {"label":"8,5", "x":10, "y":4, "w":1.25}, {"label":"9,5", "x":11.25, "y":4, "w":1.25}, {"label":"8,6", "x":13, "y":4}, {"label":"9,6", "x":14, "y":4}, {"label":"8,7", "x":15, "y":4}]
diff --git a/keyboards/stello65/hs_rev1/keymaps/default/keymap.c b/keyboards/stello65/hs_rev1/keymaps/default/keymap.c
index 4388c1d9bc..4ed3a8a98a 100644
--- a/keyboards/stello65/hs_rev1/keymaps/default/keymap.c
+++ b/keyboards/stello65/hs_rev1/keymaps/default/keymap.c
@@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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,
- RGB_TOG, 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,
+ RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/stello65/hs_rev1/keymaps/via/keymap.c b/keyboards/stello65/hs_rev1/keymaps/via/keymap.c
index 66282a632e..eb225da792 100644
--- a/keyboards/stello65/hs_rev1/keymaps/via/keymap.c
+++ b/keyboards/stello65/hs_rev1/keymaps/via/keymap.c
@@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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,
- RGB_TOG, 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,
+ RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/stello65/hs_rev1/readme.md b/keyboards/stello65/hs_rev1/readme.md
index 75f83b052c..b7f9e7c726 100644
--- a/keyboards/stello65/hs_rev1/readme.md
+++ b/keyboards/stello65/hs_rev1/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/stello65/sl_rev1/config.h b/keyboards/stello65/sl_rev1/config.h
index bbf7c0a80f..f7096308a6 100644
--- a/keyboards/stello65/sl_rev1/config.h
+++ b/keyboards/stello65/sl_rev1/config.h
@@ -5,13 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5559
-#define PRODUCT_ID 0x0005
-#define DEVICE_VER 0x0001
-#define MANUFACTURER @wekey
-#define PRODUCT Stello65
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -28,7 +21,6 @@
*/
#define MATRIX_ROW_PINS { F0, E6, D0, D1, C6, F7, F6, F5, F4, F1 }
#define MATRIX_COL_PINS { C7, B4, D7, D6, D4, D5, D3, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/stello65/sl_rev1/info.json b/keyboards/stello65/sl_rev1/info.json
index 1a1f044b3b..95eb2ccb3c 100644
--- a/keyboards/stello65/sl_rev1/info.json
+++ b/keyboards/stello65/sl_rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Stello65",
+ "manufacturer": "@wekey",
"url": "",
"maintainer": "@wekey",
+ "usb": {
+ "vid": "0x5559",
+ "pid": "0x0005",
+ "device_version": "0.0.1"
+ },
"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":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}]
diff --git a/keyboards/stello65/sl_rev1/keymaps/default/keymap.c b/keyboards/stello65/sl_rev1/keymaps/default/keymap.c
index c54b390d1b..7c2c054fc4 100644
--- a/keyboards/stello65/sl_rev1/keymaps/default/keymap.c
+++ b/keyboards/stello65/sl_rev1/keymaps/default/keymap.c
@@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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,
- RGB_TOG, 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,
+ RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/stello65/sl_rev1/keymaps/via/keymap.c b/keyboards/stello65/sl_rev1/keymaps/via/keymap.c
index 9313e43a46..0c59498a5c 100644
--- a/keyboards/stello65/sl_rev1/keymaps/via/keymap.c
+++ b/keyboards/stello65/sl_rev1/keymaps/via/keymap.c
@@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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,
- RGB_TOG, 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,
+ RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/stello65/sl_rev1/readme.md b/keyboards/stello65/sl_rev1/readme.md
index 027ab25a3a..ed36a4e740 100644
--- a/keyboards/stello65/sl_rev1/readme.md
+++ b/keyboards/stello65/sl_rev1/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/stratos/config.h b/keyboards/stratos/config.h
index 09aac207af..13e54db7bc 100644
--- a/keyboards/stratos/config.h
+++ b/keyboards/stratos/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xD5D0
-#define PRODUCT_ID 0x992D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER eggyolk
-#define PRODUCT stratos
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { B1, B2, B3, F0, F1 }
#define MATRIX_COL_PINS { F4, F7, F5, F6, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/stratos/info.json b/keyboards/stratos/info.json
index 0ddffc7592..e281d4eed4 100644
--- a/keyboards/stratos/info.json
+++ b/keyboards/stratos/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "stratos",
+ "manufacturer": "eggyolk",
"url": "",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0xD5D0",
+ "pid": "0x992D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/studiokestra/bourgeau/config.h b/keyboards/studiokestra/bourgeau/config.h
index afb8bb858f..07ac871795 100644
--- a/keyboards/studiokestra/bourgeau/config.h
+++ b/keyboards/studiokestra/bourgeau/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7C10
-#define PRODUCT_ID 0x7501
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Studio Kestra
-#define PRODUCT Bourgeau
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
diff --git a/keyboards/studiokestra/bourgeau/info.json b/keyboards/studiokestra/bourgeau/info.json
index a2170cabf6..6b9169ba0a 100644
--- a/keyboards/studiokestra/bourgeau/info.json
+++ b/keyboards/studiokestra/bourgeau/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Bourgeau",
+ "manufacturer": "Studio Kestra",
"url": "https://studiokestra.ca/bourgeau/",
"maintainer": "studiokestra",
+ "usb": {
+ "vid": "0x7C10",
+ "pid": "0x7501",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_all": "LAYOUT_75_ansi_rwkl"
},
diff --git a/keyboards/studiokestra/bourgeau/readme.md b/keyboards/studiokestra/bourgeau/readme.md
index 16f87618e0..b0a0bb2a89 100644
--- a/keyboards/studiokestra/bourgeau/readme.md
+++ b/keyboards/studiokestra/bourgeau/readme.md
@@ -11,7 +11,7 @@ Compact 75% universal hotswap PCB with USB-C that supports a fixed 6.25U bottom
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
+- While the PCB is plugged into the PC, press the physical `QK_BOOT` button on the back of the board, OR
- With the default layout, toggle Layer 1 and press the `ESC` key.
## Compiling Firmware
diff --git a/keyboards/studiokestra/cascade/config.h b/keyboards/studiokestra/cascade/config.h
index 1ef4c21e50..beb88e69ab 100644
--- a/keyboards/studiokestra/cascade/config.h
+++ b/keyboards/studiokestra/cascade/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7C10
-#define PRODUCT_ID 0x6001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Studio Kestra
-#define PRODUCT Cascade
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/studiokestra/cascade/info.json b/keyboards/studiokestra/cascade/info.json
index 5bbc25f1e5..eb5e9b5ffb 100644
--- a/keyboards/studiokestra/cascade/info.json
+++ b/keyboards/studiokestra/cascade/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Cascade",
+ "manufacturer": "Studio Kestra",
"url": "https://studiokestra.ca/cascade/",
"maintainer": "Studio Kestra",
+ "usb": {
+ "vid": "0x7C10",
+ "pid": "0x6001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/studiokestra/cascade/readme.md b/keyboards/studiokestra/cascade/readme.md
index db55844ed1..e217b3edea 100644
--- a/keyboards/studiokestra/cascade/readme.md
+++ b/keyboards/studiokestra/cascade/readme.md
@@ -11,7 +11,7 @@
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
+- While the PCB is plugged into the PC, press the physical `QK_BOOT` button on the back of the board, OR
- With the default layout, toggle Layer 1 and press the `ESC` key.
## Compiling Firmware
diff --git a/keyboards/studiokestra/galatea/config.h b/keyboards/studiokestra/galatea/config.h
index accc0d2b43..2e598b1d95 100644
--- a/keyboards/studiokestra/galatea/config.h
+++ b/keyboards/studiokestra/galatea/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/studiokestra/galatea/readme.md b/keyboards/studiokestra/galatea/readme.md
index 1268c596bf..08a6eae011 100644
--- a/keyboards/studiokestra/galatea/readme.md
+++ b/keyboards/studiokestra/galatea/readme.md
@@ -13,7 +13,7 @@ TKL H87/88c compatible PCB with support for the most common layouts.
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
+- While the PCB is plugged into the PC, press the physical `QK_BOOT` button on the back of the board, OR
- With the default layout, toggle Layer 1 and press the `R` key.
## Compiling Firmware
diff --git a/keyboards/studiokestra/galatea/rev1/config.h b/keyboards/studiokestra/galatea/rev1/config.h
deleted file mode 100644
index 9f8fb44f9a..0000000000
--- a/keyboards/studiokestra/galatea/rev1/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-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
index e3f31198fe..2b832d7fc7 100644
--- a/keyboards/studiokestra/galatea/rev1/info.json
+++ b/keyboards/studiokestra/galatea/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Galatea",
+ "manufacturer": "Studio Kestra",
"url": "https://studiokestra.ca/galatea",
"maintainer": "studiokestra",
+ "usb": {
+ "vid": "0x7C10",
+ "pid": "0x8801",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/studiokestra/galatea/rev2/config.h b/keyboards/studiokestra/galatea/rev2/config.h
deleted file mode 100644
index 4e0170a0f9..0000000000
--- a/keyboards/studiokestra/galatea/rev2/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-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
index e3f31198fe..9954a96274 100644
--- a/keyboards/studiokestra/galatea/rev2/info.json
+++ b/keyboards/studiokestra/galatea/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Galatea",
+ "manufacturer": "Studio Kestra",
"url": "https://studiokestra.ca/galatea",
"maintainer": "studiokestra",
+ "usb": {
+ "vid": "0x7C10",
+ "pid": "0x8802",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/studiokestra/nascent/config.h b/keyboards/studiokestra/nascent/config.h
new file mode 100644
index 0000000000..a88a42348c
--- /dev/null
+++ b/keyboards/studiokestra/nascent/config.h
@@ -0,0 +1,42 @@
+/*
+Copyright 2022 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"
+
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 8
+
+#define MATRIX_COL_PINS { D2, D3, D7, D6, D4, D5, B0, E6 }
+#define MATRIX_ROW_PINS { F5, F4, F7, F6, C6, C7, B4, B5, D0, D1 }
+#define DIODE_DIRECTION COL2ROW
+
+#define LED_CAPS_LOCK_PIN B6
+#define LED_PIN_ON_STATE 0
+
+/* 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
+
+/* Bootmagic Lite key configuration */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/studiokestra/nascent/info.json b/keyboards/studiokestra/nascent/info.json
new file mode 100644
index 0000000000..0d3f12eba5
--- /dev/null
+++ b/keyboards/studiokestra/nascent/info.json
@@ -0,0 +1,86 @@
+{
+ "keyboard_name": "Nascent",
+ "manufacturer": "Studio Kestra",
+ "url": "https://studiokestra.ca/",
+ "maintainer": "Studio Kestra",
+ "usb": {
+ "vid": "0x7C10",
+ "pid": "0x0165",
+ "device_version": "0.0.1"
+ },
+ "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":"Bksp", "x":13, "y":0},
+ {"label":"Bksp", "x":14, "y":0},
+ {"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":"Home", "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.5},
+ {"label":"Win", "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":"Ctrl", "x":11, "y":4, "w":1.5},
+ {"label":"\u2190", "x":13, "y":4},
+ {"label":"\u2193", "x":14, "y":4},
+ {"label":"\u2192", "x":15, "y":4}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/studiokestra/nascent/keymaps/default/keymap.c b/keyboards/studiokestra/nascent/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c3c71e7494
--- /dev/null
+++ b/keyboards/studiokestra/nascent/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+ /* Copyright 2022 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_1, KC_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_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_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [_FN] = 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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/nascent/keymaps/default/readme.md b/keyboards/studiokestra/nascent/keymaps/default/readme.md
new file mode 100644
index 0000000000..afd4f9a69d
--- /dev/null
+++ b/keyboards/studiokestra/nascent/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for Nascent
diff --git a/keyboards/studiokestra/nascent/keymaps/via/keymap.c b/keyboards/studiokestra/nascent/keymaps/via/keymap.c
new file mode 100644
index 0000000000..3339561d9a
--- /dev/null
+++ b/keyboards/studiokestra/nascent/keymaps/via/keymap.c
@@ -0,0 +1,53 @@
+ /* Copyright 2022 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,
+ _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_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_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+ [_FN1] = 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, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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),
+ [_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),
+};
diff --git a/keyboards/studiokestra/nascent/keymaps/via/readme.md b/keyboards/studiokestra/nascent/keymaps/via/readme.md
new file mode 100644
index 0000000000..206240488f
--- /dev/null
+++ b/keyboards/studiokestra/nascent/keymaps/via/readme.md
@@ -0,0 +1 @@
+# Studio Kestra's Nascent keymap for VIA
diff --git a/keyboards/studiokestra/nascent/keymaps/via/rules.mk b/keyboards/studiokestra/nascent/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/studiokestra/nascent/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/studiokestra/nascent/nascent.c b/keyboards/studiokestra/nascent/nascent.c
new file mode 100644
index 0000000000..d7458be127
--- /dev/null
+++ b/keyboards/studiokestra/nascent/nascent.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 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 "nascent.h"
diff --git a/keyboards/studiokestra/nascent/nascent.h b/keyboards/studiokestra/nascent/nascent.h
new file mode 100644
index 0000000000..5013ff9c0f
--- /dev/null
+++ b/keyboards/studiokestra/nascent/nascent.h
@@ -0,0 +1,46 @@
+/* Copyright 2022 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"
+
+/* 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, 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, k207, k307, \
+ k400, k500, k401, k501, k402, k502, k403, k503, k404, k504, k405, k505, k407, k507, \
+ k600, k601, k701, k602, k702, k603, k703, k604, k704, k605, k705, k606, k607, k707, \
+ k800, k900, k801, k802, k803, k804, k805, k806, 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, KC_NO, k307 }, \
+ { k400, k401, k402, k403, k404, k405, KC_NO, k407 }, \
+ { k500, k501, k502, k503, k504, k505, KC_NO, k507 }, \
+ { k600, k601, k602, k603, k604, k605, k606, k607 }, \
+ { KC_NO, k701, k702, k703, k704, k705, KC_NO, k707 }, \
+ { k800, k801, k802, k803, k804, k805, k806, k807 }, \
+ { k900, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, k907 } \
+}
diff --git a/keyboards/studiokestra/nascent/readme.md b/keyboards/studiokestra/nascent/readme.md
new file mode 100644
index 0000000000..09e0aaa7f0
--- /dev/null
+++ b/keyboards/studiokestra/nascent/readme.md
@@ -0,0 +1,25 @@
+# Nascent
+
+65% PCB with leaf-spring mounting tabs designed for the Nascent keyboard.
+
+* Keyboard Maintainer: [Studio Kestra](https://github.com/studiokestra/)
+* Hardware Supported: [store.studiokestra.ca](https://store.studiokestra.ca/)
+* Hardware Availability: Group-Buy (Q1 2022)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make studiokestra/nascent:default
+
+Flashing example for this keyboard:
+
+ make studiokestra/nascent: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).
+
+## 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. \ No newline at end of file
diff --git a/keyboards/studiokestra/nascent/rules.mk b/keyboards/studiokestra/nascent/rules.mk
new file mode 100644
index 0000000000..30e86c0190
--- /dev/null
+++ b/keyboards/studiokestra/nascent/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 = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/studiokestra/nue/config.h b/keyboards/studiokestra/nue/config.h
index dc4aee20aa..1e9f715a6e 100644
--- a/keyboards/studiokestra/nue/config.h
+++ b/keyboards/studiokestra/nue/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7C10
-#define PRODUCT_ID 0x0701
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Studio Kestra
-#define PRODUCT Nue
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/studiokestra/nue/info.json b/keyboards/studiokestra/nue/info.json
index 9abe8f3e5c..874f827546 100644
--- a/keyboards/studiokestra/nue/info.json
+++ b/keyboards/studiokestra/nue/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Nue",
+ "manufacturer": "Studio Kestra",
"url": "https://studiokestra.ca/nue",
"maintainer": "Studio Kestra",
+ "usb": {
+ "vid": "0x7C10",
+ "pid": "0x0701",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/studiokestra/nue/readme.md b/keyboards/studiokestra/nue/readme.md
index 42e72902e4..f29f27be22 100644
--- a/keyboards/studiokestra/nue/readme.md
+++ b/keyboards/studiokestra/nue/readme.md
@@ -11,7 +11,7 @@
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
+- While the PCB is plugged into the PC, press the physical `QK_BOOT` button on the back of the board, OR
- With the default layout, toggle Layer 1 and press the `R` key.
## Compiling Firmware
diff --git a/keyboards/suavity/ehan/chconf.h b/keyboards/suavity/ehan/chconf.h
new file mode 100644
index 0000000000..35fb883183
--- /dev/null
+++ b/keyboards/suavity/ehan/chconf.h
@@ -0,0 +1,31 @@
+/* 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/suavity/ehan/config.h b/keyboards/suavity/ehan/config.h
new file mode 100644
index 0000000000..af31fd6385
--- /dev/null
+++ b/keyboards/suavity/ehan/config.h
@@ -0,0 +1,42 @@
+/*
+Copyright 2021 Suavity Designs <henry@suavity.cc>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, C14, B7, B6, B5, B4, B3, A15, C13, B9, B8 }
+// Matrix Column Pins: C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16
+#define MATRIX_ROW_PINS { A7, B0, A3, A4, A5, A6 }
+// Matrix Row Pins: R0 R1 R2 R3 R4 R5
+#define DIODE_DIRECTION COL2ROW
+// Current flow out of the diodes are from rows to columns
+
+#define LED_CAPS_LOCK_PIN B11 // LED for Step Caps
+#define LED_SCROLL_LOCK_PIN F1 // LED Indicator for Scroll Lock
+#define LED_PIN_ON_STATE 1
+
+/* 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/suavity/ehan/ehan.c b/keyboards/suavity/ehan/ehan.c
new file mode 100644
index 0000000000..cc5a9fdc4a
--- /dev/null
+++ b/keyboards/suavity/ehan/ehan.c
@@ -0,0 +1,3 @@
+// Copyright 2021 Henry Lum (@suavity)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "ehan.h"
diff --git a/keyboards/suavity/ehan/ehan.h b/keyboards/suavity/ehan/ehan.h
new file mode 100644
index 0000000000..fbc6d33a96
--- /dev/null
+++ b/keyboards/suavity/ehan/ehan.h
@@ -0,0 +1,75 @@
+// Copyright 2021 Henry Lum (@suavity)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+#define ___ KC_NO
+
+/*
+ * ┌───â”┌───┬───┬───┬───â”┌───┠┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───â”
+ * │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 │3E ││1E │1F │1G │ │3E │ 2u Backspace
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤ └─┬─────┤
+ * │20 │21 │22 │23 │24 │25 │ │26 │27 │28 │29 │2A │2B │2C │2D ││2E │2F │2G │ │ │
+ * 2.25u ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┠└┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤└───┴───┴───┘ ┌──┴â”3D │ ISO Enter
+ * LShift │30 │31 │32 │33 │34 │35 │ │36 │37 │38 │39 │3A │3B │3C │ │3C │ │
+ * ┌────────┠├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┠┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───┠┌─┴───┴────┤
+ * │40 │ │40 │41 │42 │43 │44 │45 │46 │ │47 │48 │49 │4A │4B │4C │4D │4E │ │4F │ │4D │ 2.75u RShift
+ * └────────┘ ├────┴┬──┴─┬─┴───┼───┼───┴───┤ ├───┴───┴───┼───┴─┬─┴─┬─┴──┬───┴─┬─┘┌───┼───┼───┠└──────────┘
+ * │50 │ │53 │54 │55 │ │58 │5A │5C │ │5D │ │5E │5F │5G │
+ * └─────┘ └─────┴───┴───────┘ └───────────┴─────┴───┘ └─────┘ └───┴───┴───┘
+ * ┌───────────┠┌──────────┬─────┬────â”
+ * 3u LSpace │55 │ │58 │5A │5C │ 2.75u/1.5u/1.25u
+ * └───────────┘ └──────────┴─────┴────┘
+ */
+
+#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, K3E, 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, K4E, K4F, \
+ K50, K53, K54, K55, K58, K5A, 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, K3E, ___, ___, }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, ___, }, \
+ { K50, ___, ___, K53, K54, K55, ___, ___, K58, ___, K5A, ___, K5C, K5D, K5E, K5F, K5G, } \
+}
+
+#define LAYOUT_ansi_split_bs_rshift_lspace( \
+ 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, K3E, 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, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, \
+ K50, K53, K54, K55, K58, K5A, 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, ___, K3E, ___, ___ }, \
+ { K40, ___, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, ___ }, \
+ { K50, ___, ___, K53, K54, K55, ___, ___, K58, ___, K5A, ___, K5C, K5D, K5E, K5F, K5G } \
+}
+
+#define LAYOUT_iso_split_bs_rshift_lspace( \
+ 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, K3E, 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, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, \
+ K50, K53, K54, K55, K58, K5A, 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, ___, K2E, K2F, K2G }, \
+ { 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, K4F, ___ }, \
+ { K50, ___, ___, K53, K54, K55, ___, ___, K58, ___, K5A, ___, K5C, K5D, K5E, K5F, K5G } \
+}
diff --git a/keyboards/suavity/ehan/halconf.h b/keyboards/suavity/ehan/halconf.h
new file mode 100644
index 0000000000..79afc88c96
--- /dev/null
+++ b/keyboards/suavity/ehan/halconf.h
@@ -0,0 +1,26 @@
+/* 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_I2C TRUE
+
+// #define HAL_USE_PWM TRUE
+
+#define HAL_USE_SPI TRUE
+
+#include_next <halconf.h>
+
diff --git a/keyboards/suavity/ehan/info.json b/keyboards/suavity/ehan/info.json
new file mode 100755
index 0000000000..aec9c84cf5
--- /dev/null
+++ b/keyboards/suavity/ehan/info.json
@@ -0,0 +1,316 @@
+{
+ "keyboard_name": "ehan",
+ "manufacturer": "Suavity Designs",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x5344",
+ "pid": "0x4548",
+ "device_version": "0.0.1"
+ },
+ "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":8.5, "y":0},
+ {"label":"F7", "x":9.5, "y":0},
+ {"label":"F8", "x":10.5, "y":0},
+ {"label":"F9", "x":11.5, "y":0},
+ {"label":"F10", "x":13, "y":0},
+ {"label":"F11", "x":14, "y":0},
+ {"label":"F12", "x":15, "y":0},
+ {"label":"F13", "x":16, "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":"`~", "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":9, "y":1.5},
+ {"label":"8*", "x":10, "y":1.5},
+ {"label":"9(", "x":11, "y":1.5},
+ {"label":"0)", "x":12, "y":1.5},
+ {"label":"-_", "x":13, "y":1.5},
+ {"label":"=+", "x":14, "y":1.5},
+ {"label":"\\|", "x":15, "y":1.5},
+ {"label":"Backspace", "x":16, "y":1.5},
+ {"label":"Insert", "x":17.25, "y":1.5},
+ {"label":"Home", "x":18.25, "y":1.5},
+ {"label":"Page Up", "x":19.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":8.5, "y":2.5},
+ {"label":"U", "x":9.5, "y":2.5},
+ {"label":"I", "x":10.5, "y":2.5},
+ {"label":"O", "x":11.5, "y":2.5},
+ {"label":"P", "x":12.5, "y":2.5},
+ {"label":"[{", "x":13.5, "y":2.5},
+ {"label":"]}", "x":14.5, "y":2.5},
+ {"label":"\\|", "x":15.5, "y":2.5, "w":1.5},
+ {"label":"Delete", "x":17.25, "y":2.5},
+ {"label":"End", "x":18.25, "y":2.5},
+ {"label":"Page Down", "x":19.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":8.75, "y":3.5},
+ {"label":"J", "x":9.75, "y":3.5},
+ {"label":"K", "x":10.75, "y":3.5},
+ {"label":"L", "x":11.75, "y":3.5},
+ {"label":";:", "x":12.75, "y":3.5},
+ {"label":"'\"", "x":13.75, "y":3.5},
+ {"label":"#~", "x":14.75, "y":3.5},
+ {"label":"Enter", "x":15.75, "y":3.5, "w":1.25},
+
+ {"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":"B", "x":8.25, "y":4.5},
+ {"label":"N", "x":9.25, "y":4.5},
+ {"label":"M", "x":10.25, "y":4.5},
+ {"label":",<", "x":11.25, "y":4.5},
+ {"label":".>", "x":12.25, "y":4.5},
+ {"label":"/?", "x":13.25, "y":4.5},
+ {"label":"Shift", "x":14.25, "y":4.5, "w":1.75},
+ {"label":"Fn", "x":16, "y":4.5},
+ {"label":"\u2191", "x":18.25, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.5},
+ {"label":"Alt", "x":2.75, "y":5.5, "w":1.5},
+ {"label":"GUI", "x":4.25, "y":5.5},
+ {"label":"Space", "x":5.25, "y":5.5, "w":2},
+ {"label":"Space", "x":8.25, "y":5.5, "w":3},
+ {"label":"ALT", "x":11.25, "y":5.5, "w":1.5},
+ {"label":"GUI", "x":12.75, "y":5.5, "w":1},
+ {"label":"Ctrl", "x":15, "y":5.5, "w":1.5},
+ {"label":"\u2190", "x":17.25, "y":5.5},
+ {"label":"\u2193", "x":18.25, "y":5.5},
+ {"label":"\u2193", "x":19.25, "y":5.5}
+ ]
+ },
+ "LAYOUT_ansi_split_bs_rshift_lspace": {
+ "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":8.5, "y":0},
+ {"label":"F7", "x":9.5, "y":0},
+ {"label":"F8", "x":10.5, "y":0},
+ {"label":"F9", "x":11.5, "y":0},
+ {"label":"F10", "x":13, "y":0},
+ {"label":"F11", "x":14, "y":0},
+ {"label":"F12", "x":15, "y":0},
+ {"label":"F13", "x":16, "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":"`~", "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":9, "y":1.5},
+ {"label":"8*", "x":10, "y":1.5},
+ {"label":"9(", "x":11, "y":1.5},
+ {"label":"0)", "x":12, "y":1.5},
+ {"label":"-_", "x":13, "y":1.5},
+ {"label":"=+", "x":14, "y":1.5},
+ {"label":"\\|", "x":15, "y":1.5},
+ {"label":"Backspace", "x":16, "y":1.5},
+ {"label":"Insert", "x":17.25, "y":1.5},
+ {"label":"Home", "x":18.25, "y":1.5},
+ {"label":"Page Up", "x":19.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":8.5, "y":2.5},
+ {"label":"U", "x":9.5, "y":2.5},
+ {"label":"I", "x":10.5, "y":2.5},
+ {"label":"O", "x":11.5, "y":2.5},
+ {"label":"P", "x":12.5, "y":2.5},
+ {"label":"[{", "x":13.5, "y":2.5},
+ {"label":"]}", "x":14.5, "y":2.5},
+ {"label":"\\|", "x":15.5, "y":2.5, "w":1.5},
+ {"label":"Delete", "x":17.25, "y":2.5},
+ {"label":"End", "x":18.25, "y":2.5},
+ {"label":"Page Down", "x":19.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":8.75, "y":3.5},
+ {"label":"J", "x":9.75, "y":3.5},
+ {"label":"K", "x":10.75, "y":3.5},
+ {"label":"L", "x":11.75, "y":3.5},
+ {"label":";:", "x":12.75, "y":3.5},
+ {"label":"'\"", "x":13.75, "y":3.5},
+ {"label":"Enter", "x":14.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":"B", "x":8.25, "y":4.5},
+ {"label":"N", "x":9.25, "y":4.5},
+ {"label":"M", "x":10.25, "y":4.5},
+ {"label":",<", "x":11.25, "y":4.5},
+ {"label":".>", "x":12.25, "y":4.5},
+ {"label":"/?", "x":13.25, "y":4.5},
+ {"label":"Shift", "x":14.25, "y":4.5, "w":1.75},
+ {"label":"Fn", "x":16, "y":4.5},
+ {"label":"\u2191", "x":18.25, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.5},
+ {"label":"Alt", "x":2.75, "y":5.5, "w":1.5},
+ {"label":"GUI", "x":4.25, "y":5.5},
+ {"label":"Space", "x":5.25, "y":5.5, "w":2},
+ {"label":"Space", "x":8.25, "y":5.5, "w":3},
+ {"label":"ALT", "x":11.25, "y":5.5, "w":1.5},
+ {"label":"GUI", "x":12.75, "y":5.5, "w":1},
+ {"label":"Ctrl", "x":15, "y":5.5, "w":1.5},
+ {"label":"\u2190", "x":17.25, "y":5.5},
+ {"label":"\u2193", "x":18.25, "y":5.5},
+ {"label":"\u2193", "x":19.25, "y":5.5}
+ ]
+ },
+ "LAYOUT_iso_split_bs_rshift_lspace": {
+ "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":8.5, "y":0},
+ {"label":"F7", "x":9.5, "y":0},
+ {"label":"F8", "x":10.5, "y":0},
+ {"label":"F9", "x":11.5, "y":0},
+ {"label":"F10", "x":13, "y":0},
+ {"label":"F11", "x":14, "y":0},
+ {"label":"F12", "x":15, "y":0},
+ {"label":"F13", "x":16, "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.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":9, "y":1.5},
+ {"label":"8*", "x":10, "y":1.5},
+ {"label":"9(", "x":11, "y":1.5},
+ {"label":"0)", "x":12, "y":1.5},
+ {"label":"-_", "x":13, "y":1.5},
+ {"label":"=+", "x":14, "y":1.5},
+ {"label":"\\|", "x":15, "y":1.5},
+ {"label":"Backspace", "x":16, "y":1.5},
+ {"label":"Insert", "x":17.25, "y":1.5},
+ {"label":"Home", "x":18.25, "y":1.5},
+ {"label":"Page Up", "x":19.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":8.5, "y":2.5},
+ {"label":"U", "x":9.5, "y":2.5},
+ {"label":"I", "x":10.5, "y":2.5},
+ {"label":"O", "x":11.5, "y":2.5},
+ {"label":"P", "x":12.5, "y":2.5},
+ {"label":"[{", "x":13.5, "y":2.5},
+ {"label":"]}", "x":14.5, "y":2.5},
+ {"label":"Delete", "x":17.25, "y":2.5},
+ {"label":"End", "x":18.25, "y":2.5},
+ {"label":"Page Down", "x":19.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":8.75, "y":3.5},
+ {"label":"J", "x":9.75, "y":3.5},
+ {"label":"K", "x":10.75, "y":3.5},
+ {"label":"L", "x":11.75, "y":3.5},
+ {"label":";:", "x":12.75, "y":3.5},
+ {"label":"'@", "x":13.75, "y":3.5},
+ {"label":"#~", "x":14.75, "y":3.5},
+ {"label":"Enter", "x":15.75, "y":2.5, "w":1.25, "h":2},
+
+ {"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":"B", "x":8.25, "y":4.5},
+ {"label":"N", "x":9.25, "y":4.5},
+ {"label":"M", "x":10.25, "y":4.5},
+ {"label":",<", "x":11.25, "y":4.5},
+ {"label":".>", "x":12.25, "y":4.5},
+ {"label":"/?", "x":13.25, "y":4.5},
+ {"label":"Shift", "x":14.25, "y":4.5, "w":1.75},
+ {"label":"Fn", "x":16, "y":4.5},
+ {"label":"\u2191", "x":18.25, "y":4.5},
+
+ {"label":"Ctrl", "x":0, "y":5.5, "w":1.5},
+ {"label":"Alt", "x":2.75, "y":5.5, "w":1.5},
+ {"label":"GUI", "x":4.25, "y":5.5},
+ {"label":"Space", "x":5.25, "y":5.5, "w":2},
+ {"label":"Space", "x":8.25, "y":5.5, "w":3},
+ {"label":"ALT", "x":11.25, "y":5.5, "w":1.5},
+ {"label":"GUI", "x":12.75, "y":5.5, "w":1},
+ {"label":"Ctrl", "x":15, "y":5.5, "w":1.5},
+ {"label":"\u2190", "x":17.25, "y":5.5},
+ {"label":"\u2193", "x":18.25, "y":5.5},
+ {"label":"\u2192", "x":19.25, "y":5.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/suavity/ehan/keymaps/default/keymap.c b/keyboards/suavity/ehan/keymaps/default/keymap.c
new file mode 100755
index 0000000000..ae18a22f9e
--- /dev/null
+++ b/keyboards/suavity/ehan/keymaps/default/keymap.c
@@ -0,0 +1,37 @@
+/*
+Copyright 2021 Suavity Designs <henry@suavity.cc>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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_rshift_lspace(
+ KC_ESC, KC_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_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_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_LALT, KC_LCMD, KC_SPC, KC_SPC, KC_RALT, KC_RWIN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_ansi_split_bs_rshift_lspace(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_TRNS
+ ),
+};
diff --git a/keyboards/suavity/ehan/keymaps/default_iso/keymap.c b/keyboards/suavity/ehan/keymaps/default_iso/keymap.c
new file mode 100644
index 0000000000..bcab38f589
--- /dev/null
+++ b/keyboards/suavity/ehan/keymaps/default_iso/keymap.c
@@ -0,0 +1,37 @@
+/*
+Copyright 2021 Suavity Designs <henry@suavity.cc>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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_rshift_lspace(
+ KC_ESC, KC_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_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_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_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_UP,
+ KC_LCTL, KC_LALT, KC_LCMD, KC_SPC, KC_SPC, KC_RALT, KC_RWIN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_iso_split_bs_rshift_lspace(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_TRNS
+ ),
+};
diff --git a/keyboards/suavity/ehan/keymaps/via/keymap.c b/keyboards/suavity/ehan/keymaps/via/keymap.c
new file mode 100644
index 0000000000..c0c887b95c
--- /dev/null
+++ b/keyboards/suavity/ehan/keymaps/via/keymap.c
@@ -0,0 +1,55 @@
+/*
+Copyright 2021 Suavity Designs <henry@suavity.cc>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received 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_rshift_lspace(
+ KC_ESC, KC_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_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_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_LALT, KC_LCMD, KC_SPC, KC_SPC, KC_RALT, KC_RWIN, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [1] = LAYOUT_ansi_split_bs_rshift_lspace(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_TRNS
+ ),
+
+ [2] = LAYOUT_ansi_split_bs_rshift_lspace(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_rshift_lspace(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/suavity/ehan/keymaps/via/rules.mk b/keyboards/suavity/ehan/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/suavity/ehan/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/suavity/ehan/mcuconf.h b/keyboards/suavity/ehan/mcuconf.h
new file mode 100644
index 0000000000..5cea69887f
--- /dev/null
+++ b/keyboards/suavity/ehan/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/acheron/austin/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/suavity/ehan/readme.md b/keyboards/suavity/ehan/readme.md
new file mode 100644
index 0000000000..76d997f6ed
--- /dev/null
+++ b/keyboards/suavity/ehan/readme.md
@@ -0,0 +1,23 @@
+# ehan: A 10.5° Split TKL Keyboard designed by Suavity Designs | QMK Firmware
+
+![Imgur](https://i.imgur.com/bAiBbjgh.png)
+
+## Introduction
+
+ehan is a 10.5° Split TKL that supports 3U Spacebars,
+
+* Keyboard Maintainer: [Suavity Designs](https://github.com/suavity)
+* Hardware Supported: ARM STM32F072CBT6
+* Hardware Availability: [suavity.cc/ehan](https://suavity.cc/keyboards/ehan/)
+
+The latest iteration of the PCB is v3.00 as of 07/'21. This is noted on the back of the PCB.
+* Default Keymap: [See here](http://www.keyboard-layout-editor.com/#/gists/6504b0b388736213f43b64df1d576139)
+* PCB Supported Layouts: [See here](http://www.keyboard-layout-editor.com/#/gists/9aab5e15a89469138da760f968df26ae)
+
+## How to compile
+
+After setting up your build environment, you can compile the ehan default keymap by using:
+
+ make suavity/ehan: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/suavity/ehan/rules.mk b/keyboards/suavity/ehan/rules.mk
new file mode 100644
index 0000000000..9383acaf00
--- /dev/null
+++ b/keyboards/suavity/ehan/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 = 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
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/subatomic/config.h b/keyboards/subatomic/config.h
index d53805b62f..f1bf9769be 100644
--- a/keyboards/subatomic/config.h
+++ b/keyboards/subatomic/config.h
@@ -19,13 +19,6 @@ 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 0x6063
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Ortholinear Keyboards
-#define PRODUCT The Subatomic Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Planck PCB default pin-out */
#define MATRIX_ROW_PINS { D2, D5, B5, B6, D3 }
#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7, C6, C5 }
-#define UNUSED_PINS
// #define AUDIO_VOICES
// #define AUDIO_PIN C6
diff --git a/keyboards/subatomic/info.json b/keyboards/subatomic/info.json
index b4a18c3487..3b53a6ceda 100644
--- a/keyboards/subatomic/info.json
+++ b/keyboards/subatomic/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Subatomic",
+ "manufacturer": "OLKB",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6063",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x14": {
"layout": [
diff --git a/keyboards/subrezon/la_nc/config.h b/keyboards/subrezon/la_nc/config.h
index 6d5aad031a..3cd6391e16 100644
--- a/keyboards/subrezon/la_nc/config.h
+++ b/keyboards/subrezon/la_nc/config.h
@@ -5,11 +5,6 @@
#include "config_common.h"
-// USB device parameters
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x1A7C
-#define DEVICE_VER 0x0100
-
// key matrix
#define MATRIX_ROWS 6
#define MATRIX_ROW_PINS {D3, F4, D2, B2, B5, B6}
@@ -17,7 +12,6 @@
#define MATRIX_COLS 10
#define MATRIX_COL_PINS {B3, B1, F7, F6, F5, D4, C6, D7, E6, B4}
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/subrezon/la_nc/info.json b/keyboards/subrezon/la_nc/info.json
index d668d94b4b..f6ba95e261 100644
--- a/keyboards/subrezon/la_nc/info.json
+++ b/keyboards/subrezon/la_nc/info.json
@@ -1,6 +1,11 @@
{
"keyboard_name": "la_nc",
"url": "https://github.com/subrezon/la_nc",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1A7C",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/subrezon/la_nc/readme.md b/keyboards/subrezon/la_nc/readme.md
index 26a7b4d79a..7031b941fb 100644
--- a/keyboards/subrezon/la_nc/readme.md
+++ b/keyboards/subrezon/la_nc/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/superuser/ext/config.h b/keyboards/superuser/ext/config.h
index 77583a5825..84c71b0195 100644
--- a/keyboards/superuser/ext/config.h
+++ b/keyboards/superuser/ext/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5355
-#define PRODUCT_ID 0x4558
-#define DEVICE_VER 0x0001
-#define MANUFACTURER superuser
-#define PRODUCT ext
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 19
@@ -43,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { B2, B1, F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, E6, B0, B3}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/superuser/ext/info.json b/keyboards/superuser/ext/info.json
index c19fc3a913..d19f1e524d 100644
--- a/keyboards/superuser/ext/info.json
+++ b/keyboards/superuser/ext/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ext",
+ "manufacturer": "superuser",
"url": "",
"maintainer": "kaylanm",
+ "usb": {
+ "vid": "0x5355",
+ "pid": "0x4558",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_tkl": "LAYOUT_all"
},
diff --git a/keyboards/superuser/frl/config.h b/keyboards/superuser/frl/config.h
index 47ff3decf7..021cb0f57d 100644
--- a/keyboards/superuser/frl/config.h
+++ b/keyboards/superuser/frl/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5355
-#define PRODUCT_ID 0x4652
-#define DEVICE_VER 0x0001
-#define MANUFACTURER superuser
-#define PRODUCT frl
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
@@ -43,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, E6, B0, B3}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/superuser/frl/info.json b/keyboards/superuser/frl/info.json
index d565bcde38..5a01d0a39d 100644
--- a/keyboards/superuser/frl/info.json
+++ b/keyboards/superuser/frl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "frl",
+ "manufacturer": "superuser",
"url": "",
"maintainer": "superuser",
+ "usb": {
+ "vid": "0x5355",
+ "pid": "0x4652",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl": {
"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":"Bksp", "x":13, "y":0}, {"label":"Bksp", "x":14, "y":0}, {"label":"Insert", "x":15.25, "y":0}, {"label":"Home", "x":16.25, "y":0}, {"label":"PgUp", "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":"Delete", "x":15.25, "y":1}, {"label":"End", "x":16.25, "y":1}, {"label":"PgDn", "x":17.25, "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":"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":16.25, "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}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Win", "x":12.5, "y":4}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}]
diff --git a/keyboards/superuser/tkl/config.h b/keyboards/superuser/tkl/config.h
index e60435e6c0..768cd26fa6 100644
--- a/keyboards/superuser/tkl/config.h
+++ b/keyboards/superuser/tkl/config.h
@@ -19,14 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5355
-#define PRODUCT_ID 0x544B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER superuser
-#define PRODUCT tkl
-
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -43,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B2, D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, E6, B0, B3}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/superuser/tkl/info.json b/keyboards/superuser/tkl/info.json
index 4ffe528176..ff8a6b7895 100644
--- a/keyboards/superuser/tkl/info.json
+++ b/keyboards/superuser/tkl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "tkl",
+ "manufacturer": "superuser",
"url": "",
"maintainer": "kaylanm",
+ "usb": {
+ "vid": "0x5355",
+ "pid": "0x544B",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_tkl": "LAYOUT_all"
},
diff --git a/keyboards/swiftrax/retropad/config.h b/keyboards/swiftrax/retropad/config.h
index e604eda419..2031595fec 100644
--- a/keyboards/swiftrax/retropad/config.h
+++ b/keyboards/swiftrax/retropad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEB0C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Swiftrax
-#define PRODUCT Retropad
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 2
diff --git a/keyboards/swiftrax/retropad/info.json b/keyboards/swiftrax/retropad/info.json
index 6148e95edb..4e3137edb0 100644
--- a/keyboards/swiftrax/retropad/info.json
+++ b/keyboards/swiftrax/retropad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Retropad",
+ "manufacturer": "Swiftrax",
"url": "https://github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEB0C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"0,1", "x":0.5, "y":0}, {"label":"1,0", "x":0, "y":1.5}, {"label":"1,1", "x":1, "y":1.5}, {"label":"2,0", "x":0, "y":2.5}, {"label":"2,1", "x":1, "y":2.5}]
diff --git a/keyboards/switchplate/southpaw_65/config.h b/keyboards/switchplate/southpaw_65/config.h
index 20fe48eb9b..5e3724c330 100644
--- a/keyboards/switchplate/southpaw_65/config.h
+++ b/keyboards/switchplate/southpaw_65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x4084
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Switchplate Peripherals
-#define PRODUCT Southpaw Extended 65%
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 19
@@ -41,7 +34,6 @@
*/
//#define MATRIX_ROW_PINS { D0, D5 }
//#define MATRIX_COL_PINS { F1, F0, B0 }
-//#define UNUSED_PINS
/* COL2ROW, ROW2COL */
//#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/switchplate/southpaw_65/info.json b/keyboards/switchplate/southpaw_65/info.json
index ab8916ed3c..0a47fd95b2 100644
--- a/keyboards/switchplate/southpaw_65/info.json
+++ b/keyboards/switchplate/southpaw_65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Southpaw Extended 65%",
+ "manufacturer": "Switchplate Peripherals",
"url": "https://geekhack.org/index.php?topic=92344.0",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x4084",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"Esc", "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":"_", "x":15, "y":0}, {"label":"+", "x":16, "y":0}, {"label":"Backspace", "x":17, "y":0}, {"label":"Backspace", "x":18, "y":0}, {"label":"Home", "x":19, "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":"Tab", "x":4, "y":1, "w":1.5}, {"label":"Q", "x":5.5, "y":1}, {"label":"W", "x":6.5, "y":1}, {"label":"E", "x":7.5, "y":1}, {"label":"R", "x":8.5, "y":1}, {"label":"T", "x":9.5, "y":1}, {"label":"Y", "x":10.5, "y":1}, {"label":"U", "x":11.5, "y":1}, {"label":"I", "x":12.5, "y":1}, {"label":"O", "x":13.5, "y":1}, {"label":"P", "x":14.5, "y":1}, {"label":"{", "x":15.5, "y":1}, {"label":"}", "x":16.5, "y":1}, {"label":"|", "x":17.5, "y":1, "w":1.5}, {"label":"End", "x":19, "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":"Caps Lock", "x":4, "y":2, "w":1.75}, {"label":"A", "x":5.75, "y":2}, {"label":"S", "x":6.75, "y":2}, {"label":"D", "x":7.75, "y":2}, {"label":"F", "x":8.75, "y":2}, {"label":"G", "x":9.75, "y":2}, {"label":"H", "x":10.75, "y":2}, {"label":"J", "x":11.75, "y":2}, {"label":"K", "x":12.75, "y":2}, {"label":"L", "x":13.75, "y":2}, {"label":":", "x":14.75, "y":2}, {"label":"\"", "x":15.75, "y":2}, {"label":"~", "x":16.75, "y":2}, {"label":"Enter", "x":17.75, "y":2, "w":1.25}, {"label":"Page Up", "x":19, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Num Enter", "x":3, "y":3}, {"label":"LShift", "x":4, "y":3, "w":1.25}, {"label":"|", "x":5.25, "y":3}, {"label":"Z", "x":6.25, "y":3}, {"label":"X", "x":7.25, "y":3}, {"label":"C", "x":8.25, "y":3}, {"label":"V", "x":9.25, "y":3}, {"label":"B", "x":10.25, "y":3}, {"label":"N", "x":11.25, "y":3}, {"label":"M", "x":12.25, "y":3}, {"label":"<", "x":13.25, "y":3}, {"label":">", "x":14.25, "y":3}, {"label":"?", "x":15.25, "y":3}, {"label":"RShift", "x":16.25, "y":3, "w":1.75}, {"label":"Up", "x":18, "y":3}, {"label":"Page Down", "x":19, "y":3}, {"label":"0", "x":0, "y":4}, {"label":"0", "x":1, "y":4}, {"label":".", "x":2, "y":4}, {"label":"Num Enter", "x":3, "y":4}, {"label":"LCtrl", "x":4, "y":4, "w":1.25}, {"label":"Win", "x":5.25, "y":4, "w":1.25}, {"label":"LAlt", "x":6.5, "y":4, "w":1.25}, {"label":"Space", "x":7.75, "y":4, "w":6.25}, {"label":"RAlt", "x":14, "y":4}, {"label":"RCtrl", "x":15, "y":4}, {"label":"Fn0", "x":16, "y":4}, {"label":"Left", "x":17, "y":4}, {"label":"Down", "x":18, "y":4}, {"label":"Right", "x":19, "y":4}]
diff --git a/keyboards/switchplate/southpaw_fullsize/config.h b/keyboards/switchplate/southpaw_fullsize/config.h
index fb407383ad..7b159eb5d6 100644
--- a/keyboards/switchplate/southpaw_fullsize/config.h
+++ b/keyboards/switchplate/southpaw_fullsize/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA103
-#define PRODUCT_ID 0x0017
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Switchplate Peripherals
-#define PRODUCT Southpaw Fullsize
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 22
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E1, C0, C1, C2, C3, C4 }
#define MATRIX_COL_PINS { A7, C7, C6, C5, F0, F1, F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, E0, D7, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/switchplate/southpaw_fullsize/info.json b/keyboards/switchplate/southpaw_fullsize/info.json
index 3c02cfdc1a..c90954ead7 100644
--- a/keyboards/switchplate/southpaw_fullsize/info.json
+++ b/keyboards/switchplate/southpaw_fullsize/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "southpaw_fullsize",
+ "keyboard_name": "Southpaw Fullsize",
+ "manufacturer": "Switchplate Peripherals",
"url": "",
"maintainer": "ai03",
+ "usb": {
+ "vid": "0xA103",
+ "pid": "0x0017",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/switchplate/switchplate910/config.h b/keyboards/switchplate/switchplate910/config.h
index e1e50411c4..4e63d15919 100644
--- a/keyboards/switchplate/switchplate910/config.h
+++ b/keyboards/switchplate/switchplate910/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x54F3
-#define PRODUCT_ID 0x2065
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Switchplate Peripherals
-#define PRODUCT 910
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F5, F6, F7, D1 }
#define MATRIX_COL_PINS { D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, B3, B2, B0, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/switchplate/switchplate910/info.json b/keyboards/switchplate/switchplate910/info.json
index 748bd71c79..7d31742fae 100644
--- a/keyboards/switchplate/switchplate910/info.json
+++ b/keyboards/switchplate/switchplate910/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "southpaw910",
+ "keyboard_name": "910",
+ "manufacturer": "Switchplate Peripherals",
"url": "",
"maintainer": "MxBluE",
+ "usb": {
+ "vid": "0x54F3",
+ "pid": "0x2065",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/sx60/config.h b/keyboards/sx60/config.h
index a2da819400..9ec51b0b58 100755
--- a/keyboards/sx60/config.h
+++ b/keyboards/sx60/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5154 // "QT"
-#define PRODUCT_ID 0x0010
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Quantrik
-#define PRODUCT SX60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -36,7 +29,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// MCP23018 pinout:
// Rows: B4, B3, B2, B1, B0
// Cols: A0, A1, A2, A3, A4, A5, A6, A7
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/sx60/info.json b/keyboards/sx60/info.json
index 2e710b3c5a..dddc5873a8 100644
--- a/keyboards/sx60/info.json
+++ b/keyboards/sx60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "SX60",
+ "manufacturer": "Quantrik",
"url": "",
"maintainer": "https://github.com/amnobis",
+ "usb": {
+ "vid": "0x5154",
+ "pid": "0x0010",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"Esc", "x":1.25, "y":0}, {"label":"1!", "x":2.25, "y":0}, {"label":"2@", "x":3.25, "y":0}, {"label":"3#", "x":4.25, "y":0}, {"label":"4$", "x":5.25, "y":0}, {"label":"5%", "x":6.25, "y":0}, {"label":"6^", "x":7.25, "y":0}, {"label":"7&", "x":9.25, "y":0}, {"label":"8*", "x":10.25, "y":0}, {"label":"9(", "x":11.25, "y":0}, {"label":"0)", "x":12.25, "y":0}, {"label":"-_", "x":13.25, "y":0}, {"label":"=+", "x":14.25, "y":0}, {"label":"\\|", "x":15.25, "y":0, "w":1}, {"label":"`~", "x":16.25, "y":0, "w":1}, {"label":"M1", "x":0, "y":1, "w":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":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"Backspace", "x":15.75, "y":1, "w":1.5}, {"label":"M2", "x":0, "y":2, "w":1}, {"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":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":"ANSIEnter", "x":15, "y":2, "w":1}, {"label":"ISOEnter", "x":16, "y":2, "w":1.25}, {"label":"M3", "x":0, "y":3, "w":1}, {"label":"Shift", "x":1.25, "y":3, "w":1.25}, {"label":"\\|", "x":2.5, "y":3, "w":1}, {"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":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"Fn", "x":16.25, "y":3, "w":1}, {"label":"M4", "x":0, "y":4, "w":1}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.25}, {"label":"Win", "x":2.5, "y":4, "w":1.25}, {"label":"Alt", "x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":2}, {"x":7, "y":4, "w":1}, {"x":9, "y":4, "w":2.75}, {"label":"Alt", "x":11.75, "y":4, "w":1.25}, {"label":"Win", "x":13, "y":4, "w":1.25}, {"label":"Menu", "x":14.25, "y":4, "w":1}, {"label":"Ctrl", "x":15.25, "y":4, "w":1}, {"label":"Fn2", "x":16.25, "y":4, "w":1}]
diff --git a/keyboards/sx60/keymaps/amnobis/keymap.c b/keyboards/sx60/keymaps/amnobis/keymap.c
index 1fcfa3d429..014fed6cab 100644
--- a/keyboards/sx60/keymaps/amnobis/keymap.c
+++ b/keyboards/sx60/keymaps/amnobis/keymap.c
@@ -10,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_SPC, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_LALT, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT ),
LAYOUT_ansi_split_bs_rshift(
- 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,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_UP, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_LPRN, KC_RPRN, KC_GRV, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_INS, 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,
diff --git a/keyboards/synapse/config.h b/keyboards/synapse/config.h
index 809194afe8..b4311c1402 100644
--- a/keyboards/synapse/config.h
+++ b/keyboards/synapse/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7170
-#define PRODUCT_ID 0x5359
-#define DEVICE_VER 0x0001
-#define MANUFACTURER drmmr
-#define PRODUCT synapse
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -34,7 +27,6 @@
#define MATRIX_COL_PINS \
{ F0, D4, F5, B1, B2, B3, B7, D0, D1, D2, D3, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/synapse/info.json b/keyboards/synapse/info.json
index c7b8611256..b9acdae09d 100644
--- a/keyboards/synapse/info.json
+++ b/keyboards/synapse/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "synapse",
+ "manufacturer": "drmmr",
"url": "",
"maintainer": "qpockets",
+ "usb": {
+ "vid": "0x7170",
+ "pid": "0x5359",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [
diff --git a/keyboards/synapse/keymaps/7u_space/keymap.c b/keyboards/synapse/keymaps/7u_space/keymap.c
index 00ec4b30c1..1791db3abe 100644
--- a/keyboards/synapse/keymaps/7u_space/keymap.c
+++ b/keyboards/synapse/keymaps/7u_space/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_NAV] = LAYOUT_7u_space(
- RESET, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC, KC_TRNS,
+ QK_BOOT, KC_TRNS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_F1, KC_F2, KC_F3, KC_F4, KC_BSPC, KC_TRNS,
KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, KC_F4, KC_F5, KC_F6, KC_F7, KC_TAB,
KC_LCAP, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_TRNS, KC_F9, KC_F10, KC_F11, KC_F12, KC_ENT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
diff --git a/keyboards/synapse/readme.md b/keyboards/synapse/readme.md
index 1e4642881f..f98fee8e42 100644
--- a/keyboards/synapse/readme.md
+++ b/keyboards/synapse/readme.md
@@ -23,5 +23,5 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
*
diff --git a/keyboards/synthlabs/solo/config.h b/keyboards/synthlabs/solo/config.h
index 02fbd7abe0..112d12d1ee 100644
--- a/keyboards/synthlabs/solo/config.h
+++ b/keyboards/synthlabs/solo/config.h
@@ -5,10 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define MANUFACTURER Synth Labs
-#define PRODUCT Solo
-
#define ENCODERS 1
#define ENCODER_RESOLUTION 4
#define ENCODERS_PAD_A { B2 }
@@ -20,8 +16,6 @@
#define MATRIX_ROWS 3
#define MATRIX_COLS 7
-#define QMK_KEYS_PER_SCAN 17
-
/*
* Force NKRO
*
diff --git a/keyboards/synthlabs/solo/info.json b/keyboards/synthlabs/solo/info.json
index 18a144a8b3..3fd7b1b8f3 100644
--- a/keyboards/synthlabs/solo/info.json
+++ b/keyboards/synthlabs/solo/info.json
@@ -1,5 +1,6 @@
{
- "keyboard_name": "Synth Labs Solo",
+ "keyboard_name": "Solo",
+ "manufacturer": "Synth Labs",
"url": "http://solo.synthlabs.io",
"maintainer": "hongaaronc",
"bootloader": "atmel-dfu",
@@ -15,7 +16,7 @@
"usb": {
"vid": "0x534E",
"pid": "0x3031",
- "device_ver": "0x0001"
+ "device_version": "0.0.1"
},
"layouts": {
"LAYOUT": {
diff --git a/keyboards/synthlabs/solo/readme.md b/keyboards/synthlabs/solo/readme.md
index 204bc3857f..4e911cecc0 100644
--- a/keyboards/synthlabs/solo/readme.md
+++ b/keyboards/synthlabs/solo/readme.md
@@ -24,5 +24,5 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (1,1) in the matrix (the rotary encoder button) 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
*
diff --git a/keyboards/system76/launch_1/config.h b/keyboards/system76/launch_1/config.h
index 19752d58de..50a6e6f9d7 100644
--- a/keyboards/system76/launch_1/config.h
+++ b/keyboards/system76/launch_1/config.h
@@ -19,13 +19,6 @@
#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
@@ -37,7 +30,6 @@
*/
#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
diff --git a/keyboards/system76/launch_1/info.json b/keyboards/system76/launch_1/info.json
index 10d39cc758..e369a4d304 100644
--- a/keyboards/system76/launch_1/info.json
+++ b/keyboards/system76/launch_1/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "System76 Launch Configurable Keyboard (launch_1)",
+ "keyboard_name": "Launch Configurable Keyboard (launch_1)",
+ "manufacturer": "System76",
"url": "https://system76.com/accessories/launch",
+ "usb": {
+ "vid": "0x3384",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/system76/launch_1/launch_1.c b/keyboards/system76/launch_1/launch_1.c
index 74288edf03..fd780f6fee 100644
--- a/keyboards/system76/launch_1/launch_1.c
+++ b/keyboards/system76/launch_1/launch_1.c
@@ -182,7 +182,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
}
switch (keycode) {
- case RESET:
+ case QK_BOOT:
if (record->event.pressed) {
system76_ec_unlock();
}
diff --git a/keyboards/system76/launch_1/readme.md b/keyboards/system76/launch_1/readme.md
index 1dcdeccc39..f012f86160 100644
--- a/keyboards/system76/launch_1/readme.md
+++ b/keyboards/system76/launch_1/readme.md
@@ -58,5 +58,5 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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).
+- **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/system76_ec.c b/keyboards/system76/system76_ec.c
index 7fff780e58..f6c8af82fe 100644
--- a/keyboards/system76/system76_ec.c
+++ b/keyboards/system76/system76_ec.c
@@ -87,6 +87,7 @@ bool system76_ec_is_unlocked(void) { return bootloader_unlocked; }
enum Mode {
MODE_SOLID_COLOR = 0,
MODE_PER_KEY,
+ #ifndef DISABLE_RGB_MATRIX_ANIMATIONS
MODE_CYCLE_ALL,
MODE_CYCLE_LEFT_RIGHT,
MODE_CYCLE_UP_DOWN,
@@ -98,6 +99,7 @@ enum Mode {
MODE_RAINDROPS,
MODE_SPLASH,
MODE_MULTISPLASH,
+ #endif // DISABLE_RGB_MATRIX_ANIMATIONS
MODE_ACTIVE_KEYS,
MODE_DISABLED,
MODE_LAST,
@@ -107,6 +109,7 @@ enum Mode {
static enum rgb_matrix_effects mode_map[] = {
RGB_MATRIX_SOLID_COLOR,
RGB_MATRIX_CUSTOM_raw_rgb,
+ #ifndef DISABLE_RGB_MATRIX_ANIMATIONS
RGB_MATRIX_CYCLE_ALL,
RGB_MATRIX_CYCLE_LEFT_RIGHT,
RGB_MATRIX_CYCLE_UP_DOWN,
@@ -118,6 +121,7 @@ static enum rgb_matrix_effects mode_map[] = {
RGB_MATRIX_RAINDROPS,
RGB_MATRIX_SPLASH,
RGB_MATRIX_MULTISPLASH,
+ #endif // DISABLE_RGB_MATRIX_ANIMATIONS
RGB_MATRIX_CUSTOM_active_keys,
RGB_MATRIX_NONE,
};
diff --git a/keyboards/tada68/config.h b/keyboards/tada68/config.h
index 2e035e08af..2aac9d3174 100755
--- a/keyboards/tada68/config.h
+++ b/keyboards/tada68/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5441
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0003
-#define MANUFACTURER TADA
-#define PRODUCT TADA68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS {D0,D1,F6,F7,D5}
#define MATRIX_COL_PINS {F0,F1,E6,C7,C6,B7,D4,B1,B0,B5,B4,D7,D6,B3,F4}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tada68/info.json b/keyboards/tada68/info.json
index e84b560d76..8e7ecc0695 100644
--- a/keyboards/tada68/info.json
+++ b/keyboards/tada68/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Tada68",
+ "keyboard_name": "TADA68",
+ "manufacturer": "TADA",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5441",
+ "pid": "0x0001",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/tada68/keymaps/iso-nor/keymap.c b/keyboards/tada68/keymaps/iso-nor/keymap.c
index ae0fccccc8..c4d8978716 100644
--- a/keyboards/tada68/keymaps/iso-nor/keymap.c
+++ b/keyboards/tada68/keymaps/iso-nor/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _FL1: Function Layer
* ,----------------------------------------------------------------.
- * | | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| RESET|PSCR|
+ * | | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| QK_BOOT|PSCR|
* |----------------------------------------------------------------|
* | | | Up| | | | | | | | |BL-|BL+|BL | INS|
* |----------------------------------------------------------------|
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------------------------------------'
*/
[_FL] = LAYOUT_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, RESET, KC_PSCR, \
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QK_BOOT, KC_PSCR, \
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, BL_TOGG, _______, KC_INS, \
_______, KC_LEFT, KC_DOWN,KC_RIGHT, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_HOME, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, KC_END, \
diff --git a/keyboards/tada68/keymaps/isoish/keymap.c b/keyboards/tada68/keymaps/isoish/keymap.c
index adbf32251b..69b382e1c2 100644
--- a/keyboards/tada68/keymaps/isoish/keymap.c
+++ b/keyboards/tada68/keymaps/isoish/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _FL1: Function Layer 1
* ,----------------------------------------------------------------.
- * | | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| RESET|PSCR|
+ * | | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12| QK_BOOT|PSCR|
* |----------------------------------------------------------------|
* | | | | | | | | | | | |BL-|BL+|BL | INS|
* |----------------------------------------------------------------|
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `----------------------------------------------------------------'
*/
[_FL] = LAYOUT_ansi_split_enter(
- _______, 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QK_BOOT, KC_PSCR, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, BL_DEC, BL_INC, BL_TOGG, KC_INS, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_HOME, \
_______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, KC_END, \
diff --git a/keyboards/tada68/keymaps/rys/keymap.c b/keyboards/tada68/keymaps/rys/keymap.c
index 012f2cc05c..118c30c4e7 100644
--- a/keyboards/tada68/keymaps/rys/keymap.c
+++ b/keyboards/tada68/keymaps/rys/keymap.c
@@ -64,6 +64,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_BTN1, KC_UP, KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, \
_______, _______, _______, _______, BL_DEC, BL_TOGG, BL_INC, QSTOKEN, KC_VOLU, KC_VOLD, KC_MUTE, _______, _______, KC_MS_U, KC_END, \
- _______, _______, _______, RESET, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
+ _______, _______, _______, QK_BOOT, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
),
};
diff --git a/keyboards/tada68/keymaps/tokyovigilante/keymap.c b/keyboards/tada68/keymaps/tokyovigilante/keymap.c
index 13159c0d4c..3bf18d357b 100644
--- a/keyboards/tada68/keymaps/tokyovigilante/keymap.c
+++ b/keyboards/tada68/keymaps/tokyovigilante/keymap.c
@@ -3,5 +3,5 @@
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_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(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_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_DEL, KC_INS, 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_HOME, 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_END, KC_TRNS, KC_TRNS, KC_TRNS, BL_DEC, BL_TOGG, BL_INC, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R),
- [2] = LAYOUT_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, 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, 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)
+ [2] = LAYOUT_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, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_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)
};
diff --git a/keyboards/tada68/keymaps/tokyovigilante/layers.json b/keyboards/tada68/keymaps/tokyovigilante/layers.json
index d6604042e3..e3d20aed88 100644
--- a/keyboards/tada68/keymaps/tokyovigilante/layers.json
+++ b/keyboards/tada68/keymaps/tokyovigilante/layers.json
@@ -1 +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_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(1)", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT"], ["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_INS", "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_HOME", "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_END", "KC_TRNS", "KC_TRNS", "KC_TRNS", "BL_DEC", "BL_TOGG", "BL_INC", "KC_TRNS", "KC_MUTE", "KC_VOLD", "KC_VOLU", "KC_TRNS", "KC_BTN1", "KC_MS_U", "KC_BTN2", "KC_TRNS", "MO(2)", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MS_L", "KC_MS_D", "KC_MS_R"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "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_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_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"]] \ 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_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(1)", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT"], ["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_INS", "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_HOME", "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_END", "KC_TRNS", "KC_TRNS", "KC_TRNS", "BL_DEC", "BL_TOGG", "BL_INC", "KC_TRNS", "KC_MUTE", "KC_VOLD", "KC_VOLU", "KC_TRNS", "KC_BTN1", "KC_MS_U", "KC_BTN2", "KC_TRNS", "MO(2)", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MS_L", "KC_MS_D", "KC_MS_R"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "QK_BOOT", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_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"]] \ No newline at end of file
diff --git a/keyboards/takashicompany/center_enter/config.h b/keyboards/takashicompany/center_enter/config.h
index d6840ca682..aa675c32ad 100644
--- a/keyboards/takashicompany/center_enter/config.h
+++ b/keyboards/takashicompany/center_enter/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7463 // tc = takashicompany
-#define PRODUCT_ID 0x0012
-#define DEVICE_VER 0x0001
-#define MANUFACTURER takashicompany
-#define PRODUCT Center x Enter
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, D7, B2, B6, D0, D4, C6}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/takashicompany/center_enter/info.json b/keyboards/takashicompany/center_enter/info.json
index cd7861f453..c9ecdb67ec 100644
--- a/keyboards/takashicompany/center_enter/info.json
+++ b/keyboards/takashicompany/center_enter/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Center x Enter",
+ "manufacturer": "takashicompany",
"url": "",
"maintainer": "takashicompany",
+ "usb": {
+ "vid": "0x7463",
+ "pid": "0x0012",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/takashicompany/center_enter/readme.md b/keyboards/takashicompany/center_enter/readme.md
index d8db5cc7eb..1a7f16ac68 100644
--- a/keyboards/takashicompany/center_enter/readme.md
+++ b/keyboards/takashicompany/center_enter/readme.md
@@ -26,4 +26,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/takashicompany/compacx/config.h b/keyboards/takashicompany/compacx/config.h
index 1db4a7357a..10c70e472b 100644
--- a/keyboards/takashicompany/compacx/config.h
+++ b/keyboards/takashicompany/compacx/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7463 // tc = takashicompany
-#define PRODUCT_ID 0x0014
-#define DEVICE_VER 0x0001
-#define MANUFACTURER takashicompany
-#define PRODUCT Compacx
-
/* key matrix size */
#define MATRIX_ROWS 5 * 2
#define MATRIX_COLS 7
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D1, D0, D4, C6, D7 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/takashicompany/compacx/info.json b/keyboards/takashicompany/compacx/info.json
index 431579feb1..7690d3c333 100644
--- a/keyboards/takashicompany/compacx/info.json
+++ b/keyboards/takashicompany/compacx/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Compacx",
+ "manufacturer": "takashicompany",
"url": "https://github.com/takashicompany/compacx",
"maintainer": "takashicompany",
+ "usb": {
+ "vid": "0x7463",
+ "pid": "0x0014",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/takashicompany/compacx/readme.md b/keyboards/takashicompany/compacx/readme.md
index ac5cfee169..6aca4b45f8 100644
--- a/keyboards/takashicompany/compacx/readme.md
+++ b/keyboards/takashicompany/compacx/readme.md
@@ -26,4 +26,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/takashicompany/dogtag/config.h b/keyboards/takashicompany/dogtag/config.h
index bc4c44d24c..adcf8d7321 100644
--- a/keyboards/takashicompany/dogtag/config.h
+++ b/keyboards/takashicompany/dogtag/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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 6
#define MATRIX_COLS 5
@@ -45,7 +38,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS_RIGHT { B2, B6, B3 }
#define MATRIX_COL_PINS_RIGHT { B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/takashicompany/dogtag/info.json b/keyboards/takashicompany/dogtag/info.json
index 72bd5eb136..b9f82c26cb 100644
--- a/keyboards/takashicompany/dogtag/info.json
+++ b/keyboards/takashicompany/dogtag/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "DogTag",
+ "manufacturer": "takashicompany",
"url": "https://github.com/takashicompany/dogtag",
"maintainer": "takashicompany",
+ "usb": {
+ "vid": "0x7463",
+ "pid": "0x0018",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/takashicompany/dogtag/readme.md b/keyboards/takashicompany/dogtag/readme.md
index a68ea6f53b..3947e4b807 100644
--- a/keyboards/takashicompany/dogtag/readme.md
+++ b/keyboards/takashicompany/dogtag/readme.md
@@ -34,4 +34,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/takashicompany/endzone34/config.h b/keyboards/takashicompany/endzone34/config.h
index c2c9e04200..f74b828516 100644
--- a/keyboards/takashicompany/endzone34/config.h
+++ b/keyboards/takashicompany/endzone34/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7463 // tc = takashicompany
-#define PRODUCT_ID 0x0006
-#define DEVICE_VER 0x0001
-#define MANUFACTURER takashicompany
-#define PRODUCT EndZone34
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B3, B2, B6, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, D4, C6, D7, E6, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/takashicompany/endzone34/info.json b/keyboards/takashicompany/endzone34/info.json
index a70799b39b..2284f7a3b4 100644
--- a/keyboards/takashicompany/endzone34/info.json
+++ b/keyboards/takashicompany/endzone34/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "EndZone34",
+ "manufacturer": "takashicompany",
"url": "https://github.com/takashicompany/endzone34",
"maintainer": "takashicompany",
+ "usb": {
+ "vid": "0x7463",
+ "pid": "0x0006",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/takashicompany/goat51/info.json b/keyboards/takashicompany/goat51/info.json
new file mode 100644
index 0000000000..b87b08161e
--- /dev/null
+++ b/keyboards/takashicompany/goat51/info.json
@@ -0,0 +1,498 @@
+{
+ "manufacturer": "takashicompany",
+ "keyboard_name": "GOAT51",
+ "maintainer": "takashicompany",
+ "development_board": "promicro",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "encoder": true,
+ "rgblight": true
+ },
+ "matrix_pins": {
+ "cols": [
+ "D4",
+ "C6",
+ "D7",
+ "E6",
+ "B4",
+ "B5",
+ "D2"
+ ],
+ "rows": [
+ "F4",
+ "F5",
+ "F6",
+ "F7",
+ "B1",
+ "B3",
+ "B2",
+ "B6"
+ ]
+ },
+ "encoder": {
+ "rotary": [
+ { "pin_a": "D1", "pin_b": "D0" }
+ ]
+ },
+ "url": "https://github.com/takashicompany/goat51",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0x0029",
+ "vid": "0x7463"
+ },
+ "rgblight": {
+ "led_count": 11,
+ "pin": "D3",
+ "hue_steps": 10,
+ "saturation_steps": 17,
+ "brightness_steps": 17,
+ "animations": {
+ "alternating": true,
+ "breathing": true,
+ "christmas": true,
+ "knight": true,
+ "rainbow_mood": true,
+ "rainbow_swirl": true,
+ "rgb_test": true,
+ "snake": true,
+ "static_gradient": true,
+ "twinkle": true
+ }
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "matrix": [
+ 0,
+ 0
+ ],
+ "x": 0,
+ "y": 0.5
+ },
+ {
+ "matrix": [
+ 0,
+ 1
+ ],
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "matrix": [
+ 0,
+ 2
+ ],
+ "x": 2,
+ "y": 0.25
+ },
+ {
+ "matrix": [
+ 0,
+ 3
+ ],
+ "x": 3,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 4
+ ],
+ "x": 4,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 0,
+ 5
+ ],
+ "x": 5,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 4,
+ 1
+ ],
+ "x": 10,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 4,
+ 2
+ ],
+ "x": 11,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 4,
+ 3
+ ],
+ "x": 12,
+ "y": 0
+ },
+ {
+ "matrix": [
+ 4,
+ 4
+ ],
+ "x": 13,
+ "y": 0.25
+ },
+ {
+ "matrix": [
+ 4,
+ 5
+ ],
+ "x": 14,
+ "y": 0.5
+ },
+ {
+ "matrix": [
+ 4,
+ 6
+ ],
+ "x": 15,
+ "y": 0.5
+ },
+ {
+ "matrix": [
+ 1,
+ 0
+ ],
+ "x": 0,
+ "y": 1.5
+ },
+ {
+ "matrix": [
+ 1,
+ 1
+ ],
+ "x": 1,
+ "y": 1.5
+ },
+ {
+ "matrix": [
+ 1,
+ 2
+ ],
+ "x": 2,
+ "y": 1.25
+ },
+ {
+ "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": 7.5,
+ "y": 0.5
+ },
+ {
+ "matrix": [
+ 5,
+ 1
+ ],
+ "x": 10,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 5,
+ 2
+ ],
+ "x": 11,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 5,
+ 3
+ ],
+ "x": 12,
+ "y": 1
+ },
+ {
+ "matrix": [
+ 5,
+ 4
+ ],
+ "x": 13,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 5,
+ 5
+ ],
+ "x": 14,
+ "y": 1.5
+ },
+ {
+ "matrix": [
+ 5,
+ 6
+ ],
+ "x": 15,
+ "y": 1.5
+ },
+ {
+ "matrix": [
+ 2,
+ 0
+ ],
+ "x": 0,
+ "y": 2.5
+ },
+ {
+ "matrix": [
+ 2,
+ 1
+ ],
+ "x": 1,
+ "y": 2.5
+ },
+ {
+ "matrix": [
+ 2,
+ 2
+ ],
+ "x": 2,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 3
+ ],
+ "x": 3,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 2,
+ 4
+ ],
+ "x": 4,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 2,
+ 5
+ ],
+ "x": 5,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 6,
+ 1
+ ],
+ "x": 10,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 6,
+ 2
+ ],
+ "x": 11,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 6,
+ 3
+ ],
+ "x": 12,
+ "y": 2
+ },
+ {
+ "matrix": [
+ 6,
+ 4
+ ],
+ "x": 13,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 6,
+ 5
+ ],
+ "x": 14,
+ "y": 2.5
+ },
+ {
+ "matrix": [
+ 6,
+ 6
+ ],
+ "x": 15,
+ "y": 2.5
+ },
+ {
+ "matrix": [
+ 3,
+ 0
+ ],
+ "x": 0,
+ "y": 3.5
+ },
+ {
+ "matrix": [
+ 3,
+ 1
+ ],
+ "x": 1,
+ "y": 3.5
+ },
+ {
+ "matrix": [
+ 3,
+ 2
+ ],
+ "x": 2,
+ "y": 3.25
+ },
+ {
+ "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": [
+ 7,
+ 0
+ ],
+ "x": 9,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 7,
+ 1
+ ],
+ "x": 10,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 7,
+ 2
+ ],
+ "x": 11,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 7,
+ 3
+ ],
+ "x": 12,
+ "y": 3
+ },
+ {
+ "matrix": [
+ 7,
+ 4
+ ],
+ "x": 13,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 7,
+ 5
+ ],
+ "x": 14,
+ "y": 3.5
+ },
+ {
+ "matrix": [
+ 7,
+ 6
+ ],
+ "x": 15,
+ "y": 3.5
+ },
+ {
+ "matrix": [
+ 0,
+ 6
+ ],
+ "x": 7,
+ "y": 1.5
+ },
+ {
+ "matrix": [
+ 4,
+ 0
+ ],
+ "x": 8,
+ "y": 1.5
+ }
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/takashicompany/goat51/keymaps/default/keymap.c b/keyboards/takashicompany/goat51/keymaps/default/keymap.c
new file mode 100644
index 0000000000..4e2c0e2d57
--- /dev/null
+++ b/keyboards/takashicompany/goat51/keymaps/default/keymap.c
@@ -0,0 +1,123 @@
+// Copyright 2022 takashicompany (@takashicompany)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ GOAT51 = SAFE_RANGE,
+ WEB,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // 0: JIS-Alphabet
+ LAYOUT(
+ KC_ESC, LT(7, 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, LT(6, KC_D), KC_F, KC_G, GOAT51, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_ENT,
+ KC_LSFT, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_DEL,
+ TG(6), KC_PGUP, KC_PGDN, KC_LCTL, KC_LGUI, ALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LANG1), KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ KC_PGDN, KC_PGUP
+ ),
+
+ // 1: JIS-Num
+ 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, LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, GOAT51, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, KC_TRNS,
+ KC_TRNS, LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ ),
+
+ // 2: JIS-Shift-Num
+ LAYOUT(
+ KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_JYEN), KC_TRNS,
+ KC_TRNS, KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), GOAT51, KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN), KC_TRNS,
+ KC_TRNS, 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, KC_TRNS, 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: US-Alphabet
+ LAYOUT(
+ KC_TRNS, LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS,
+ KC_TRNS, KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, GOAT51, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_TRNS,
+ KC_TRNS, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_TRNS,
+ TG(6), KC_PGUP, KC_PGDN, KC_LCTL, KC_LGUI, ALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LANG1), KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ KC_PGDN, KC_PGUP
+ ),
+
+ // 4: US-Num
+ 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_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, GOAT51, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_JYEN, KC_TRNS,
+ KC_TRNS, LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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: US-Shift-Num
+ LAYOUT(
+ KC_TRNS, KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS, KC_TRNS,
+ KC_TRNS, KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, GOAT51, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
+ KC_TRNS, 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, KC_TRNS, 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: Cursor
+ LAYOUT(
+ KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PCMM, GOAT51, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS,
+ KC_TRNS, LSFT_T(KC_P1), KC_P2, KC_P3, KC_PMNS, KC_KP_EQUAL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ TG(6), 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
+ ),
+
+ // 7: Function
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, GOAT51, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_TRNS, KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(8), MO(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_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ ),
+
+ // 8: LED
+ LAYOUT(
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, DF(0), DF(3), KC_TRNS,
+ KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, GOAT51, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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 GOAT51:
+ if (record->event.pressed) {
+ SEND_STRING("GOAT51");
+ rgblight_toggle();
+ }
+ return false;
+
+ case WEB:
+ if (record->event.pressed) {
+ SEND_STRING("github.com/takashicompany/goat51");
+ }
+ return false;
+ }
+
+ return true;
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+
+ if (clockwise) {
+ tap_code(KC_MS_WH_DOWN);
+ } else {
+ tap_code(KC_MS_WH_UP);
+ }
+
+ return true;
+} \ No newline at end of file
diff --git a/keyboards/takashicompany/goat51/keymaps/via/config.h b/keyboards/takashicompany/goat51/keymaps/via/config.h
new file mode 100644
index 0000000000..dc91fa69c2
--- /dev/null
+++ b/keyboards/takashicompany/goat51/keymaps/via/config.h
@@ -0,0 +1,6 @@
+// Copyright 2022 takashicompany (@takashicompany)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 7 \ No newline at end of file
diff --git a/keyboards/takashicompany/goat51/keymaps/via/keymap.c b/keyboards/takashicompany/goat51/keymaps/via/keymap.c
new file mode 100644
index 0000000000..6adb87dc32
--- /dev/null
+++ b/keyboards/takashicompany/goat51/keymaps/via/keymap.c
@@ -0,0 +1,106 @@
+// Copyright 2022 takashicompany (@takashicompany)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ GOAT51 = SAFE_RANGE,
+ WEB,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ // 0: JIS-Alphabet
+ LAYOUT(
+ KC_ESC, LT(4, 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, LT(3, KC_D), KC_F, KC_G, GOAT51, KC_H, KC_J, LT(3, KC_K), KC_L, KC_ENT, KC_ENT,
+ KC_LSFT, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_DEL,
+ TG(3), KC_PGUP, KC_PGDN, KC_LCTL, KC_LGUI, ALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LANG1), KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
+ KC_PGDN, KC_PGUP
+ ),
+
+ // 1: JIS-Num
+ 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, LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, GOAT51, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN, KC_TRNS,
+ KC_TRNS, LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ ),
+
+ // 2: JIS-Shift-Num
+ LAYOUT(
+ KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_JYEN), KC_TRNS,
+ KC_TRNS, KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), GOAT51, KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN), KC_TRNS,
+ KC_TRNS, 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, KC_TRNS, 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: Cursor
+ LAYOUT(
+ KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_PCMM, GOAT51, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS,
+ KC_TRNS, LSFT_T(KC_P1), KC_P2, KC_P3, KC_PMNS, KC_KP_EQUAL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ TG(3), 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
+ ),
+
+ // 4: Function
+ LAYOUT(
+ KC_TRNS, KC_TRNS, KC_TAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, GOAT51, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_TRNS, KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(5), MO(6), KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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: LED
+ LAYOUT(
+ 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, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, GOAT51, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, 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 GOAT51:
+ if (record->event.pressed) {
+ SEND_STRING("GOAT51");
+ rgblight_toggle();
+ }
+ return false;
+
+ case WEB:
+ if (record->event.pressed) {
+ SEND_STRING("github.com/takashicompany/goat51");
+ }
+ return false;
+ }
+
+ return true;
+}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN) },
+ { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+ { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
+};
+#endif \ No newline at end of file
diff --git a/keyboards/takashicompany/goat51/keymaps/via/rules.mk b/keyboards/takashicompany/goat51/keymaps/via/rules.mk
new file mode 100644
index 0000000000..4253f570f0
--- /dev/null
+++ b/keyboards/takashicompany/goat51/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/takashicompany/goat51/readme.md b/keyboards/takashicompany/goat51/readme.md
new file mode 100644
index 0000000000..b2edaa157e
--- /dev/null
+++ b/keyboards/takashicompany/goat51/readme.md
@@ -0,0 +1,40 @@
+# ðŸ GOAT51
+
+![takashicompany/GOAT51](https://i.imgur.com/7xD9a4zh.jpg)
+
+GOAT51ã¯51キーã®ã‚­ãƒ¼ãƒœãƒ¼ãƒ‰ã§ã™ã€‚
+特徴的ãªæ”¾å°„状ã®ã‚­ãƒ¼ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã¯æŒ‡ã‚’自然ã«ç½®ãã“ã¨ãŒã§ãã€åŠ¹çŽ‡çš„ãªå…¥åŠ›ãŒå¯èƒ½ã§ã™ã€‚
+MX互æ›ã®ã‚­ãƒ¼ã‚¹ã‚¤ãƒƒãƒã¨Choc v1キースイッãƒã®å–り付ã‘ã«å¯¾å¿œã—ã¦ãŠã‚Šã¾ã™ã€‚
+ã¾ãŸPCBã«ã‚­ãƒ¼ã‚¹ã‚¤ãƒƒãƒã‚½ã‚±ãƒƒãƒˆã‚’å–り付ã‘ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã€å®¹æ˜“ã«ã‚­ãƒ¼ã‚¹ã‚¤ãƒƒãƒã®äº¤æ›ãŒã§ãã¾ã™ã€‚
+キーボードã®ä¸­å¤®ã«ã¯ãŠæ°—ã«å…¥ã‚Šã®ã‚­ãƒ¼ã‚­ãƒ£ãƒƒãƒ—ã‚’å–り付ã‘る専用スペースãŒã‚ã‚Šã€ã‚¢ãƒ«ãƒã‚¶ãƒ³ã‚­ãƒ¼ã‚­ãƒ£ãƒƒãƒ—ã‚„ãŠæ°—ã«å…¥ã‚Šã®ã‚­ãƒ¼ã‚­ãƒ£ãƒƒãƒ—を飾るã“ã¨ãŒã§ãã¾ã™ã€‚
+実ã¯ãã“ã«ã¯ãƒ­ãƒ¼ã‚¿ãƒªãƒ¼ã‚¨ãƒ³ã‚³ãƒ¼ãƒ€ã‚’ç½®ãã“ã¨ã‚‚ã§ãã¡ã‚ƒã„ã¾ã™ã€‚
+
+---
+GOAT51 is a 51-key keyboard.
+The distinctive radial key layout allows the fingers to be placed naturally for efficient typing.
+It supports the installation of MX compatible key switches and Choc v1 key switches.
+A key switch socket can also be installed on the PCB for easy keyswitch replacement.
+There is a dedicated space in the center of the keyboard for mounting your favorite keycaps, allowing you to display Artisan keycaps or your favorite keycaps.
+In fact, you can even place a rotary encoder there.
+
+* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany)
+* Hardware Supported: GOAT51 PCB, Pro Micro
+* Hardware Availability: https://github.com/takashicompany/goat51
+
+Make example for this keyboard (after setting up your build environment):
+
+ make takashicompany/goat51:default
+
+Flashing example for this keyboard:
+
+ make takashicompany/goat51: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 `QK_BOOT` if it is available
diff --git a/keyboards/takashicompany/goat51/rules.mk b/keyboards/takashicompany/goat51/rules.mk
new file mode 100644
index 0000000000..7ff128fa69
--- /dev/null
+++ b/keyboards/takashicompany/goat51/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank \ No newline at end of file
diff --git a/keyboards/takashicompany/heavy_left/config.h b/keyboards/takashicompany/heavy_left/config.h
index 4c3138fc8e..fa31dccb90 100644
--- a/keyboards/takashicompany/heavy_left/config.h
+++ b/keyboards/takashicompany/heavy_left/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7463 // tc = takashicompany
-#define PRODUCT_ID 0x0015
-#define DEVICE_VER 0x0001
-#define MANUFACTURER takashicompany
-#define PRODUCT Heavy Left
-
/* key matrix size */
#define MATRIX_ROWS 5 * 2
#define MATRIX_COLS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D1, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/takashicompany/heavy_left/info.json b/keyboards/takashicompany/heavy_left/info.json
index 878618e63d..6f04de1738 100644
--- a/keyboards/takashicompany/heavy_left/info.json
+++ b/keyboards/takashicompany/heavy_left/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "heavy_left",
+ "keyboard_name": "Heavy Left",
+ "manufacturer": "takashicompany",
"url": "",
"maintainer": "takashicompany",
+ "usb": {
+ "vid": "0x7463",
+ "pid": "0x0015",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/takashicompany/heavy_left/readme.md b/keyboards/takashicompany/heavy_left/readme.md
index 4cd0e1b0cc..a048103f84 100644
--- a/keyboards/takashicompany/heavy_left/readme.md
+++ b/keyboards/takashicompany/heavy_left/readme.md
@@ -30,4 +30,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/takashicompany/minizone/config.h b/keyboards/takashicompany/minizone/config.h
index 73a85e2d9f..0c8def659f 100644
--- a/keyboards/takashicompany/minizone/config.h
+++ b/keyboards/takashicompany/minizone/config.h
@@ -5,13 +5,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7463 // tc = takashicompany
-#define PRODUCT_ID 0x0021
-#define DEVICE_VER 0x0001
-#define MANUFACTURER takashicompany
-#define PRODUCT miniZone
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 7
@@ -28,7 +21,6 @@
*/
#define MATRIX_ROW_PINS { 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
diff --git a/keyboards/takashicompany/minizone/info.json b/keyboards/takashicompany/minizone/info.json
index 75e0c6258e..51fb57276c 100644
--- a/keyboards/takashicompany/minizone/info.json
+++ b/keyboards/takashicompany/minizone/info.json
@@ -1,239 +1,58 @@
{
"keyboard_name": "miniZone",
+ "manufacturer": "takashicompany",
"url": "https://github.com/takashicompany/minizone",
"maintainer": "takashicompany",
+ "usb": {
+ "vid": "0x7463",
+ "pid": "0x0021",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
- {
- "x": 1.68,
- "y": 0,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 7.56,
- "y": 0,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 0.84,
- "y": 0.21,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 2.52,
- "y": 0.21,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 6.72,
- "y": 0.21,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 8.4,
- "y": 0.21,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 0,
- "y": 0.42,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 3.36,
- "y": 0.42,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 5.88,
- "y": 0.42,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 9.24,
- "y": 0.42,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 1.68,
- "y": 0.84,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 7.56,
- "y": 0.84,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 0.84,
- "y": 1.05,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 2.52,
- "y": 1.05,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 6.72,
- "y": 1.05,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 8.4,
- "y": 1.05,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 0,
- "y": 1.26,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 3.36,
- "y": 1.26,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 5.88,
- "y": 1.26,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 9.24,
- "y": 1.26,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 1.68,
- "y": 1.68,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 7.56,
- "y": 1.68,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 0.84,
- "y": 1.89,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 2.52,
- "y": 1.89,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 6.72,
- "y": 1.89,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 8.4,
- "y": 1.89,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 0,
- "y": 2.1,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 3.36,
- "y": 2.1,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 5.88,
- "y": 2.1,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 9.24,
- "y": 2.1,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 1.68,
- "y": 2.52,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 7.56,
- "y": 2.52,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 2.52,
- "y": 2.73,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 6.72,
- "y": 2.73,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 3.36,
- "y": 2.94,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 4.2,
- "y": 2.94,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 5.04,
- "y": 2.94,
- "w": 0.84,
- "h": 0.84
- },
- {
- "x": 5.88,
- "y": 2.94,
- "w": 0.84,
- "h": 0.84
- }
+ { "x": 0, "y": 0.42, "w": 0.84, "h": 0.84 },
+ { "x": 0.84, "y": 0.21, "w": 0.84, "h": 0.84 },
+ { "x": 1.68, "y": 0, "w": 0.84, "h": 0.84 },
+ { "x": 2.52, "y": 0.21, "w": 0.84, "h": 0.84 },
+ { "x": 3.36, "y": 0.42, "w": 0.84, "h": 0.84 },
+ { "x": 5.88, "y": 0.42, "w": 0.84, "h": 0.84 },
+ { "x": 6.72, "y": 0.21, "w": 0.84, "h": 0.84 },
+ { "x": 7.56, "y": 0, "w": 0.84, "h": 0.84 },
+ { "x": 8.4, "y": 0.21, "w": 0.84, "h": 0.84 },
+ { "x": 9.24, "y": 0.42, "w": 0.84, "h": 0.84 },
+
+ { "x": 0, "y": 1.26, "w": 0.84, "h": 0.84 },
+ { "x": 0.84, "y": 1.05, "w": 0.84, "h": 0.84 },
+ { "x": 1.68, "y": 0.84, "w": 0.84, "h": 0.84 },
+ { "x": 2.52, "y": 1.05, "w": 0.84, "h": 0.84 },
+ { "x": 3.36, "y": 1.26, "w": 0.84, "h": 0.84 },
+ { "x": 5.88, "y": 1.26, "w": 0.84, "h": 0.84 },
+ { "x": 6.72, "y": 1.05, "w": 0.84, "h": 0.84 },
+ { "x": 7.56, "y": 0.84, "w": 0.84, "h": 0.84 },
+ { "x": 8.4, "y": 1.05, "w": 0.84, "h": 0.84 },
+ { "x": 9.24, "y": 1.26, "w": 0.84, "h": 0.84 },
+
+ { "x": 0, "y": 2.1, "w": 0.84, "h": 0.84 },
+ { "x": 0.84, "y": 1.89, "w": 0.84, "h": 0.84 },
+ { "x": 1.68, "y": 1.68, "w": 0.84, "h": 0.84 },
+ { "x": 2.52, "y": 1.89, "w": 0.84, "h": 0.84 },
+ { "x": 3.36, "y": 2.1, "w": 0.84, "h": 0.84 },
+ { "x": 5.88, "y": 2.1, "w": 0.84, "h": 0.84 },
+ { "x": 6.72, "y": 1.89, "w": 0.84, "h": 0.84 },
+ { "x": 7.56, "y": 1.68, "w": 0.84, "h": 0.84 },
+ { "x": 8.4, "y": 1.89, "w": 0.84, "h": 0.84 },
+ { "x": 9.24, "y": 2.1, "w": 0.84, "h": 0.84 },
+
+ { "x": 1.68, "y": 2.52, "w": 0.84, "h": 0.84 },
+ { "x": 2.52, "y": 2.73, "w": 0.84, "h": 0.84 },
+ { "x": 3.36, "y": 2.94, "w": 0.84, "h": 0.84 },
+ { "x": 4.2, "y": 2.94, "w": 0.84, "h": 0.84 },
+ { "x": 5.04, "y": 2.94, "w": 0.84, "h": 0.84 },
+ { "x": 5.88, "y": 2.94, "w": 0.84, "h": 0.84 },
+ { "x": 6.72, "y": 2.73, "w": 0.84, "h": 0.84 },
+ { "x": 7.56, "y": 2.52, "w": 0.84, "h": 0.84 }
]
}
}
-} \ No newline at end of file
+}
diff --git a/keyboards/takashicompany/minizone/keymaps/default/keymap.c b/keyboards/takashicompany/minizone/keymaps/default/keymap.c
index 0d651325b2..51c9cc1678 100644
--- a/keyboards/takashicompany/minizone/keymaps/default/keymap.c
+++ b/keyboards/takashicompany/minizone/keymaps/default/keymap.c
@@ -6,55 +6,63 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT(
- LT(6, 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(5, KC_D), KC_F, KC_G, KC_H, KC_J, LT(5, KC_K), KC_L, KC_ENT,
+ LT(7, 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(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
- KC_LCTL, KC_LGUI, LALT_T(KC_LANG2), LSFT_T(KC_TAB), KC_SPC, LT(1, KC_LANG1), KC_PGUP, KC_NO
+ KC_LCTL, KC_LGUI, LALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LANG1), KC_PGUP, KC_PGDN
),
-
+
LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN,
+ LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN),
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_JYEN),
+ KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- LAYOUT(LT(6, 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(5, KC_D), KC_F, KC_G, KC_H, KC_J, LT(5, KC_K), KC_L, KC_ENT,
+
+ LAYOUT(
+ LT(7, 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(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
- KC_TRNS, KC_TRNS, LALT_T(KC_LANG2), LSFT_T(KC_TAB), KC_SPC, LT(3, KC_LANG1), KC_TRNS, KC_TRNS
+ KC_LCTL, KC_LGUI, LALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LANG1), KC_PGUP, KC_PGDN
),
-
+
LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_JYEN,
- MO(4), KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL,
+ LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
+
LAYOUT(
- KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_0,
- KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
- KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL,
+ KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS,
+ KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
+ 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, 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_WH_U, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
- KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_WH_D, KC_LANG1, KC_NO, KC_NO, KC_DEL,
+ 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_NO, KC_LANG1, KC_NO, KC_NO, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
-
+ ),
+
LAYOUT(
KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
- KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(7), MO(8),
+ KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9),
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_NO, KC_NO, KC_NO, DF(0), DF(2),
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3),
RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
diff --git a/keyboards/takashicompany/minizone/keymaps/pimoroni_trackball/config.h b/keyboards/takashicompany/minizone/keymaps/pimoroni_trackball/config.h
new file mode 100644
index 0000000000..bcc6982848
--- /dev/null
+++ b/keyboards/takashicompany/minizone/keymaps/pimoroni_trackball/config.h
@@ -0,0 +1,7 @@
+// Copyright 2022 takashicompany (@takashicompany)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#define DYNAMIC_KEYMAP_LAYER_COUNT 10
+#define PIMORONI_TRACKBALL_SCALE 1
+#define POINTING_DEVICE_TASK_THROTTLE_MS 1 \ No newline at end of file
diff --git a/keyboards/takashicompany/minizone/keymaps/pimoroni_trackball/keymap.c b/keyboards/takashicompany/minizone/keymaps/pimoroni_trackball/keymap.c
new file mode 100644
index 0000000000..f1652d344a
--- /dev/null
+++ b/keyboards/takashicompany/minizone/keymaps/pimoroni_trackball/keymap.c
@@ -0,0 +1,465 @@
+// Copyright 2022 takashicompany (@takashicompany)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+typedef union {
+ uint32_t raw;
+ struct {
+ int8_t trackball_movement_ratio;
+ int8_t mode;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+enum custom_keycodes {
+ KC_MY_BTN1 = SAFE_RANGE,
+ KC_MY_BTN2,
+ KC_MY_BTN3,
+ KC_MY_SCR,
+ KC_TB_RAT_INC,
+ KC_TB_RAT_DEC,
+ KC_TB_MODE,
+};
+
+
+enum click_state {
+ NONE = 0,
+ WAITING, // マウスレイヤーãŒæœ‰åŠ¹ã«ãªã‚‹ã®ã‚’å¾…ã¤ã€‚ Wait for mouse layer to activate.
+ CLICKABLE, // マウスレイヤー有効ã«ãªã‚Šã‚¯ãƒªãƒƒã‚¯å…¥åŠ›ãŒå–れる。 Mouse layer is enabled to take click input.
+ CLICKING, // クリック中。 Clicking.
+ SCROLLING // スクロール中。 Scrolling.
+};
+
+enum click_state state; // ç¾åœ¨ã®ã‚¯ãƒªãƒƒã‚¯å…¥åŠ›å—付ã®çŠ¶æ…‹ Current click input reception status
+uint16_t click_timer; // タイマー。状態ã«å¿œã˜ã¦æ™‚é–“ã§åˆ¤å®šã™ã‚‹ã€‚ Timer. Time to determine the state of the system.
+
+uint16_t to_clickable_time = 10; // ã“ã®ç§’æ•°(åƒåˆ†ã®ä¸€ç§’)ã€WAITING状態ãªã‚‰ã‚¯ãƒªãƒƒã‚¯ãƒ¬ã‚¤ãƒ¤ãƒ¼ãŒæœ‰åŠ¹ã«ãªã‚‹ã€‚ For this number of seconds (milliseconds), if in WAITING state, the click layer is activated.
+uint16_t to_reset_time = 1000; // ã“ã®ç§’æ•°(åƒåˆ†ã®ä¸€ç§’)ã€CLICKABLE状態ãªã‚‰ã‚¯ãƒªãƒƒã‚¯ãƒ¬ã‚¤ãƒ¤ãƒ¼ãŒç„¡åŠ¹ã«ãªã‚‹ã€‚ For this number of seconds (milliseconds), the click layer is disabled if in CLICKABLE state.
+
+uint16_t click_layer = 9; // マウス入力ãŒå¯èƒ½ã«ãªã£ãŸéš›ã«æœ‰åŠ¹ã«ãªã‚‹ãƒ¬ã‚¤ãƒ¤ãƒ¼ã€‚Layers enabled when mouse input is enabled
+
+int16_t scroll_v_mouse_interval_counter; // 垂直スクロールã®å…¥åŠ›ã‚’カウントã™ã‚‹ã€‚ Counting Vertical Scroll Inputs
+int16_t scroll_h_mouse_interval_counter; // 水平スクロールã®å…¥åŠ›ã‚’カウントã™ã‚‹ã€‚ Counts horizontal scrolling inputs.
+
+int16_t scroll_v_threshold = 30; // ã“ã®é–¾å€¤ã‚’超ãˆã‚‹åº¦ã«åž‚直スクロールãŒå®Ÿè¡Œã•ã‚Œã‚‹ã€‚ Vertical scrolling is performed each time this threshold is exceeded.
+int16_t scroll_h_threshold = 30; // ã“ã®é–¾å€¤ã‚’超ãˆã‚‹åº¦ã«æ°´å¹³ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ãŒå®Ÿè¡Œã•ã‚Œã‚‹ã€‚ Each time this threshold is exceeded, horizontal scrolling is performed.
+
+int16_t after_click_lock_movement = 0; // クリック入力後ã®ç§»å‹•é‡ã‚’測定ã™ã‚‹å¤‰æ•°ã€‚ Variable that measures the amount of movement after a click input.
+
+int16_t mouse_record_threshold = 30; // ãƒã‚¤ãƒ³ã‚¿ãƒ¼ã®å‹•ãを一時的ã«è¨˜éŒ²ã™ã‚‹ãƒ•ãƒ¬ãƒ¼ãƒ æ•°ã€‚ Number of frames in which the pointer movement is temporarily recorded.
+
+int16_t mouse_record_x;
+int16_t mouse_record_y;
+int16_t mouse_record_count;
+
+int16_t mouse_move_remain_count;
+
+bool is_record_mouse;
+
+bool is_mouse_move_x_min;
+int16_t mouse_move_x_sign;
+int16_t mouse_move_y_sign;
+
+double mouse_interval_delta;
+double mouse_interval_counter;
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ LAYOUT(
+ LT(7, 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(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
+ LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
+ KC_LCTL, KC_LGUI, LALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LANG1), KC_PGUP, KC_PGDN
+ ),
+
+ LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN,
+ LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN),
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_JYEN),
+ KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ LT(7, 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(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
+ LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
+ KC_LCTL, KC_LGUI, LALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LANG1), KC_PGUP, KC_PGDN
+ ),
+
+ LAYOUT(
+ KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_JYEN,
+ LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS,
+ KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
+ 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, 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_NO, KC_LANG1, KC_NO, KC_NO, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+ KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9),
+ 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_TB_RAT_INC, KC_TB_RAT_DEC, KC_TB_MODE, DF(0), DF(3),
+ RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, EEP_RST, KC_NO, KC_NO, KC_NO, KC_NO,
+ RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO,
+ 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_MY_BTN1, KC_MY_SCR, KC_MY_BTN2, KC_MY_BTN3, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MY_SCR, KC_MY_BTN1, KC_TRNS, KC_MY_SCR, KC_MY_BTN2, KC_MY_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+void eeconfig_init_user(void) {
+ user_config.raw = 0;
+ user_config.trackball_movement_ratio = 10;
+ user_config.mode = 0;
+ eeconfig_update_user(user_config.raw);
+}
+
+void keyboard_post_init_user(void) {
+ user_config.raw = eeconfig_read_user();
+}
+
+// クリック用ã®ãƒ¬ã‚¤ãƒ¤ãƒ¼ã‚’有効ã«ã™ã‚‹ã€‚ Enable layers for clicks
+void enable_click_layer(void) {
+ layer_on(click_layer);
+ click_timer = timer_read();
+ state = CLICKABLE;
+}
+
+// クリック用ã®ãƒ¬ã‚¤ãƒ¤ãƒ¼ã‚’無効ã«ã™ã‚‹ã€‚ Disable layers for clicks.
+void disable_click_layer(void) {
+ state = NONE;
+ layer_off(click_layer);
+ scroll_v_mouse_interval_counter = 0;
+ scroll_h_mouse_interval_counter = 0;
+}
+
+// 自å‰ã®çµ¶å¯¾æ•°ã‚’è¿”ã™é–¢æ•°ã€‚ Functions that return absolute numbers.
+int16_t my_abs(int16_t num) {
+ if (num < 0) {
+ num = -num;
+ }
+
+ return num;
+}
+
+// 自å‰ã®ç¬¦å·ã‚’è¿”ã™é–¢æ•°ã€‚ Function to return the sign.
+int16_t my_sign(int16_t num) {
+ if (num < 0) {
+ return -1;
+ }
+
+ return 1;
+}
+
+// ç¾åœ¨ã‚¯ãƒªãƒƒã‚¯ãŒå¯èƒ½ãªçŠ¶æ…‹ã‹ã€‚ Is it currently clickable?
+bool is_clickable_mode(void) {
+ return state == CLICKABLE || state == CLICKING || state == SCROLLING;
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+ switch (keycode) {
+ case KC_MY_BTN1:
+ case KC_MY_BTN2:
+ case KC_MY_BTN3:
+ {
+ report_mouse_t currentReport = pointing_device_get_report();
+
+ // ã©ã“ã®ãƒ“ットを対象ã«ã™ã‚‹ã‹ã€‚ Which bits are to be targeted?
+ uint8_t btn = 1 << (keycode - KC_MY_BTN1);
+
+ if (record->event.pressed) {
+ // ビットORã¯æ¼”ç®—å­ã®å·¦è¾ºã¨å³è¾ºã®åŒã˜ä½ç½®ã«ã‚るビットを比較ã—ã¦ã€ä¸¡æ–¹ã®ãƒ“ットã®ã©ã¡ã‚‰ã‹ãŒã€Œ1ã€ã®å ´åˆã«ã€Œ1ã€ã«ã—ã¾ã™ã€‚
+ // Bit OR compares bits in the same position on the left and right sides of the operator and sets them to "1" if either of both bits is "1".
+ currentReport.buttons |= btn;
+ state = CLICKING;
+ after_click_lock_movement = 30;
+ } else {
+ // ビットANDã¯æ¼”ç®—å­ã®å·¦è¾ºã¨å³è¾ºã®åŒã˜ä½ç½®ã«ã‚るビットを比較ã—ã¦ã€ä¸¡æ–¹ã®ãƒ“ットãŒå…±ã«ã€Œ1ã€ã®å ´åˆã ã‘「1ã€ã«ã—ã¾ã™ã€‚
+ // Bit AND compares the bits in the same position on the left and right sides of the operator and sets them to "1" only if both bits are "1" together.
+ currentReport.buttons &= ~btn;
+ enable_click_layer();
+ }
+
+ pointing_device_set_report(currentReport);
+ pointing_device_send();
+ return false;
+ }
+
+ case KC_MY_SCR:
+ if (record->event.pressed) {
+ state = SCROLLING;
+ } else {
+ enable_click_layer(); // スクロールキーを離ã—ãŸæ™‚ã«å†åº¦ã‚¯ãƒªãƒƒã‚¯ãƒ¬ã‚¤ãƒ¤ãƒ¼ã‚’有効ã«ã™ã‚‹ã€‚ Enable click layer again when the scroll key is released.
+ }
+ return false;
+
+ case KC_TB_RAT_INC:
+ if (record->event.pressed) {
+ user_config.trackball_movement_ratio += 1;
+ eeconfig_update_user(user_config.raw);
+ }
+
+ return false;
+
+ case KC_TB_RAT_DEC:
+ if (record->event.pressed) {
+ if (user_config.trackball_movement_ratio > 1) user_config.trackball_movement_ratio -= 1;
+ eeconfig_update_user(user_config.raw);
+ }
+
+ return false;
+
+ case KC_TB_MODE:
+ if (record->event.pressed) {
+
+ if (user_config.mode == 0)
+ {
+ user_config.mode = 1;
+ }
+ else
+ {
+ user_config.mode = 0;
+ }
+
+ eeconfig_update_user(user_config.raw);
+ }
+ return false;
+
+ default:
+ if (record->event.pressed) {
+ disable_click_layer();
+ }
+
+ }
+
+ return true;
+}
+
+
+report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
+
+ if (user_config.mode == 0)
+ {
+ if (!is_record_mouse) {
+ if (mouse_report.x != 0 || mouse_report.y != 0) {
+ is_record_mouse = true;
+ mouse_record_x = 0;
+ mouse_record_y = 0;
+ mouse_record_count = 0;
+ }
+ }
+
+ if (is_record_mouse) {
+ mouse_record_x += mouse_report.x; // * user_config.trackball_movement_ratio;
+ mouse_record_y += mouse_report.y; // * user_config.trackball_movement_ratio;
+ mouse_record_count++;
+
+ if (mouse_record_count >= mouse_record_threshold) {
+ mouse_interval_counter = 0;
+ int16_t absX = my_abs(mouse_record_x);
+ int16_t absY = my_abs(mouse_record_y);
+ is_mouse_move_x_min = absX < absY;
+
+ mouse_move_remain_count = is_mouse_move_x_min ? absY : absX;
+ mouse_move_remain_count *= user_config.trackball_movement_ratio;
+
+ mouse_move_x_sign = my_sign(mouse_record_x);
+ mouse_move_y_sign = my_sign(mouse_record_y);
+
+ if (is_mouse_move_x_min) {
+ if (mouse_record_x == 0) {
+ mouse_interval_delta = 0;
+ } else {
+ mouse_interval_delta = (double)absX / (double)absY;
+ }
+ } else {
+ if (mouse_record_y == 0) {
+ mouse_interval_delta = 0;
+ } else {
+ mouse_interval_delta = (double)absY / (double)absX;
+ }
+ }
+
+ is_record_mouse = false;
+ mouse_record_count = 0;
+ }
+ }
+
+ if (mouse_move_remain_count > 0) {
+ mouse_interval_counter += mouse_interval_delta;
+
+ bool can_move_min = mouse_interval_counter >= 0.99;
+
+ if (can_move_min) {
+ mouse_interval_counter -= 0.99;
+ }
+
+ if (is_mouse_move_x_min) {
+
+ mouse_report.y = mouse_move_y_sign;
+
+ if (can_move_min) {
+ mouse_report.x = mouse_move_x_sign;
+ }
+ } else {
+
+ mouse_report.x = mouse_move_x_sign;
+
+ if (can_move_min) {
+ mouse_report.y = mouse_move_y_sign;
+ }
+ }
+
+ mouse_report.x *= 1 + mouse_move_remain_count / 10;
+ mouse_report.y *= 1 + mouse_move_remain_count / 10;
+
+ mouse_move_remain_count--;
+ } else {
+ mouse_report.x = 0;
+ mouse_report.y = 0;
+ }
+ }
+ else
+ {
+ mouse_report.x *= user_config.trackball_movement_ratio;
+ mouse_report.y *= user_config.trackball_movement_ratio;
+ }
+
+ int16_t current_x = mouse_report.x;
+ int16_t current_y = mouse_report.y;
+ int16_t current_h = 0;
+ int16_t current_v = 0;
+
+ if (current_x != 0 || current_y != 0) {
+
+ switch (state) {
+ case CLICKABLE:
+ click_timer = timer_read();
+ break;
+
+ case CLICKING:
+ after_click_lock_movement -= my_abs(current_x) + my_abs(current_y);
+
+ if (after_click_lock_movement > 0) {
+ current_x = 0;
+ current_y = 0;
+ }
+
+ break;
+
+ case SCROLLING:
+ {
+ int8_t rep_v = 0;
+ int8_t rep_h = 0;
+
+ // 垂直スクロールã®æ–¹ã®æ„Ÿåº¦ã‚’高ã‚る。 Increase sensitivity toward vertical scrolling.
+ if (my_abs(current_y) * 2 > my_abs(current_x)) {
+
+ scroll_v_mouse_interval_counter += current_y;
+ while (my_abs(scroll_v_mouse_interval_counter) > scroll_v_threshold) {
+ if (scroll_v_mouse_interval_counter < 0) {
+ scroll_v_mouse_interval_counter += scroll_v_threshold;
+ rep_v += scroll_v_threshold;
+ } else {
+ scroll_v_mouse_interval_counter -= scroll_v_threshold;
+ rep_v -= scroll_v_threshold;
+ }
+
+ }
+ } else {
+
+ scroll_h_mouse_interval_counter += current_x;
+
+ while (my_abs(scroll_h_mouse_interval_counter) > scroll_h_threshold) {
+ if (scroll_h_mouse_interval_counter < 0) {
+ scroll_h_mouse_interval_counter += scroll_h_threshold;
+ rep_h += scroll_h_threshold;
+ } else {
+ scroll_h_mouse_interval_counter -= scroll_h_threshold;
+ rep_h -= scroll_h_threshold;
+ }
+ }
+ }
+
+ current_h = rep_h / scroll_h_threshold;
+ current_v = -rep_v / scroll_v_threshold;
+ current_x = 0;
+ current_y = 0;
+ }
+ break;
+
+ case WAITING:
+ if (timer_elapsed(click_timer) > to_clickable_time) {
+ enable_click_layer();
+ }
+ break;
+
+ default:
+ click_timer = timer_read();
+ state = WAITING;
+ }
+ }
+ else
+ {
+ switch (state) {
+ case CLICKING:
+ case SCROLLING:
+
+ break;
+
+ case CLICKABLE:
+ if (timer_elapsed(click_timer) > to_reset_time) {
+ disable_click_layer();
+ }
+ break;
+
+ case WAITING:
+ if (timer_elapsed(click_timer) > 50) {
+ state = NONE;
+ }
+ break;
+
+ default:
+ state = NONE;
+ }
+ }
+
+ mouse_report.x = current_x;
+ mouse_report.y = current_y;
+ mouse_report.h = current_h;
+ mouse_report.v = current_v;
+
+ return mouse_report;
+}
diff --git a/keyboards/takashicompany/minizone/keymaps/pimoroni_trackball/rules.mk b/keyboards/takashicompany/minizone/keymaps/pimoroni_trackball/rules.mk
new file mode 100644
index 0000000000..df0cf51896
--- /dev/null
+++ b/keyboards/takashicompany/minizone/keymaps/pimoroni_trackball/rules.mk
@@ -0,0 +1,4 @@
+POINTING_DEVICE_ENABLE = yes
+POINTING_DEVICE_DRIVER = pimoroni_trackball
+OLED_ENABLE = no
+VIA_ENABLE = yes
diff --git a/keyboards/takashicompany/minizone/keymaps/via/keymap.c b/keyboards/takashicompany/minizone/keymaps/via/keymap.c
index 8fa3480915..d78a5bbf17 100644
--- a/keyboards/takashicompany/minizone/keymaps/via/keymap.c
+++ b/keyboards/takashicompany/minizone/keymaps/via/keymap.c
@@ -6,86 +6,71 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT(
- LT(6, 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(5, KC_D), KC_F, KC_G, KC_H, KC_J, LT(5, KC_K), KC_L, KC_ENT,
+ LT(7, 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(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
- KC_LCTL, KC_LGUI, LALT_T(KC_LANG2), LSFT_T(KC_TAB), KC_SPC, LT(1, KC_LANG1), KC_PGUP, KC_NO
+ KC_LCTL, KC_LGUI, LALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LANG1), KC_PGUP, KC_PGDN
),
-
+
LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_RO, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_JYEN,
+ LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN),
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ LAYOUT(
+ KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_JYEN),
+ KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
- LAYOUT(LT(6, 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(5, KC_D), KC_F, KC_G, KC_H, KC_J, LT(5, KC_K), KC_L, KC_ENT,
+
+ LAYOUT(
+ LT(7, 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(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT,
LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC,
- KC_TRNS, KC_TRNS, LALT_T(KC_LANG2), LSFT_T(KC_TAB), KC_SPC, LT(3, KC_LANG1), KC_TRNS, KC_TRNS
+ KC_LCTL, KC_LGUI, LALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LANG1), KC_PGUP, KC_PGDN
),
-
+
LAYOUT(
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_JYEN,
- MO(4), KC_LGUI, KC_LALT, KC_LANG2, KC_LSFT, KC_SPC, KC_LANG1, KC_TRNS, KC_TRNS, KC_DEL,
+ LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
+
LAYOUT(
- KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_0,
+ KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS,
KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE,
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, 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_WH_U, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO,
- KC_LSFT, KC_LGUI, KC_LALT, KC_LANG2, KC_TRNS, KC_WH_D, KC_LANG1, KC_NO, KC_NO, KC_DEL,
+ 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_NO, KC_LANG1, KC_NO, KC_NO, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
- ),
-
+ ),
+
LAYOUT(
KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
- KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(7), MO(8),
+ KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9),
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_NO, KC_NO, KC_NO, DF(0), DF(2),
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3),
RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO,
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
- ),
-
- 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
- ),
-
- 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
- ),
-
+ ),
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
)
-
}; \ No newline at end of file
diff --git a/keyboards/takashicompany/minizone/readme.md b/keyboards/takashicompany/minizone/readme.md
index 79f2fef7ad..04b6896d28 100644
--- a/keyboards/takashicompany/minizone/readme.md
+++ b/keyboards/takashicompany/minizone/readme.md
@@ -50,4 +50,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/takashicompany/qoolee/config.h b/keyboards/takashicompany/qoolee/config.h
index 36bb330c95..f71e3de280 100644
--- a/keyboards/takashicompany/qoolee/config.h
+++ b/keyboards/takashicompany/qoolee/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7463 // tc = takashicompany
-#define PRODUCT_ID 0x0013
-#define DEVICE_VER 0x0001
-#define MANUFACTURER takashicompany
-#define PRODUCT QooLee
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D0, D4, C6, D7}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/takashicompany/qoolee/info.json b/keyboards/takashicompany/qoolee/info.json
index 56ef36b6e9..89335351ce 100644
--- a/keyboards/takashicompany/qoolee/info.json
+++ b/keyboards/takashicompany/qoolee/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "QooLee",
+ "manufacturer": "takashicompany",
"url": "https://github.com/takashicompany/qoolee",
"maintainer": "takashicompany",
+ "usb": {
+ "vid": "0x7463",
+ "pid": "0x0013",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/takashicompany/qoolee/readme.md b/keyboards/takashicompany/qoolee/readme.md
index 35ee431c1c..55fbff82a2 100644
--- a/keyboards/takashicompany/qoolee/readme.md
+++ b/keyboards/takashicompany/qoolee/readme.md
@@ -27,4 +27,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/takashicompany/radialex/config.h b/keyboards/takashicompany/radialex/config.h
index 7aa3c85360..468a850f4b 100644
--- a/keyboards/takashicompany/radialex/config.h
+++ b/keyboards/takashicompany/radialex/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/takashicompany/radialex/info.json b/keyboards/takashicompany/radialex/info.json
index d78e301ee9..8aff0b5ab8 100644
--- a/keyboards/takashicompany/radialex/info.json
+++ b/keyboards/takashicompany/radialex/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Radialex",
+ "manufacturer": "takashicompany",
"url": "https://github.com/takashicompany/radialex",
"maintainer": "takashicompany",
+ "usb": {
+ "vid": "0x7463",
+ "pid": "0x0019",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/takashicompany/radialex/keymaps/default/keymap.c b/keyboards/takashicompany/radialex/keymaps/default/keymap.c
index ad8274e432..7bb266e00b 100644
--- a/keyboards/takashicompany/radialex/keymaps/default/keymap.c
+++ b/keyboards/takashicompany/radialex/keymaps/default/keymap.c
@@ -21,34 +21,69 @@ enum custom_keycodes {
};
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
+ LT(7, 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(6, KC_D), KC_F, KC_G, RADIALEX, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_ENT,
+ KC_LSFT, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_DEL,
+ KC_PSCR, KC_LCTL, KC_LGUI, LALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(2, 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TRNS, LCTL_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, LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, 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_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_JYEN),
+ KC_TRNS, KC_TRNS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_TRNS, KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN), KC_TRNS,
+ KC_TRNS, KC_TRNS, 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
+
+ LAYOUT(
+ LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_TRNS, KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, RADIALEX, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_TRNS,
+ KC_TRNS, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_TRNS,
+ KC_PSCR, KC_LCTL, KC_LGUI, LALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LANG1), KC_RALT, KC_RGUI, KC_RCTL
+ ),
+
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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TRNS, KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_TRNS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_JYEN, KC_TRNS,
+ KC_TRNS, LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
-
+
+ LAYOUT(
+ KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS,
+ KC_TRNS, KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_TRNS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
+ KC_TRNS, 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, 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_NO, KC_LANG1, KC_NO, KC_NO, 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(
+ KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_TRNS, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9), 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_NO, KC_NO, KC_NO, DF(0), DF(3),
+ KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
+ KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, 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
+ )
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
diff --git a/keyboards/takashicompany/radialex/keymaps/via/config.h b/keyboards/takashicompany/radialex/keymaps/via/config.h
index 74f9e9e64f..c93405c3b3 100644
--- a/keyboards/takashicompany/radialex/keymaps/via/config.h
+++ b/keyboards/takashicompany/radialex/keymaps/via/config.h
@@ -17,4 +17,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DYNAMIC_KEYMAP_LAYER_COUNT 8
+#define DYNAMIC_KEYMAP_LAYER_COUNT 9
diff --git a/keyboards/takashicompany/radialex/keymaps/via/keymap.c b/keyboards/takashicompany/radialex/keymaps/via/keymap.c
index ce9c9d78ea..b84ccc86b2 100644
--- a/keyboards/takashicompany/radialex/keymaps/via/keymap.c
+++ b/keyboards/takashicompany/radialex/keymaps/via/keymap.c
@@ -20,57 +20,65 @@
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
+ LT(7, 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(6, KC_D), KC_F, KC_G, RADIALEX, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_ENT,
+ KC_LSFT, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_DEL,
+ KC_PSCR, KC_LCTL, KC_LGUI, LALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(2, 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TRNS, LCTL_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, LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_COLN, KC_DQUO, KC_RCBR, 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_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_JYEN),
+ KC_TRNS, KC_TRNS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_RO), KC_TRNS, KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_JYEN), KC_TRNS,
+ KC_TRNS, KC_TRNS, 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, 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
+ LT(7, KC_Q), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ KC_TRNS, KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, RADIALEX, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_TRNS,
+ KC_TRNS, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_TRNS,
+ KC_PSCR, KC_LCTL, KC_LGUI, LALT_T(KC_LANG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LANG1), KC_RALT, KC_RGUI, KC_RCTL
),
-
+
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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
+ KC_TRNS, KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_TRNS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_JYEN, KC_TRNS,
+ KC_TRNS, LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, 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_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS,
+ KC_TRNS, KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_TRNS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
+ KC_TRNS, 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, 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_NO, KC_LANG1, KC_NO, KC_NO, 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(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+ KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_TRNS, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
+ KC_TRNS, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9), 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,
+ RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, KC_NO, KC_NO, KC_NO, DF(0), DF(3),
+ KC_TRNS, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
+ KC_TRNS, RGB_M_K, RGB_M_X, RGB_M_G, KC_NO, KC_NO, QK_BOOT, 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
)
diff --git a/keyboards/takashicompany/radialex/readme.md b/keyboards/takashicompany/radialex/readme.md
index 1468e7b0b1..2f723ba686 100644
--- a/keyboards/takashicompany/radialex/readme.md
+++ b/keyboards/takashicompany/radialex/readme.md
@@ -28,4 +28,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/takashicompany/spreadwriter/readme.md b/keyboards/takashicompany/spreadwriter/readme.md
index 972dcba4de..3cf6eccb50 100644
--- a/keyboards/takashicompany/spreadwriter/readme.md
+++ b/keyboards/takashicompany/spreadwriter/readme.md
@@ -32,4 +32,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/takashiski/hecomi/alpha/config.h b/keyboards/takashiski/hecomi/alpha/config.h
index 165b815667..05f1d35c83 100644
--- a/keyboards/takashiski/hecomi/alpha/config.h
+++ b/keyboards/takashiski/hecomi/alpha/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER takashiski
-#define PRODUCT hecomi_alpha
-
/* key matrix size */
//#define MATRIX_ROWS 5
#define MATRIX_ROWS 10
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C6,D7,E6,B4,B5 }
#define MATRIX_COL_PINS { F4,F5,F6,F7,B1,B3,B2,B6 }
-#define UNUSED_PINS
#define SOFT_SERIAL_PIN D1 // or D1, D2, D3, E6
//#define USE_I2C
diff --git a/keyboards/takashiski/hecomi/alpha/info.json b/keyboards/takashiski/hecomi/alpha/info.json
index a7493203f0..844736abd4 100644
--- a/keyboards/takashiski/hecomi/alpha/info.json
+++ b/keyboards/takashiski/hecomi/alpha/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "hecomi/alpha",
+ "keyboard_name": "hecomi_alpha",
+ "manufacturer": "takashiski",
"url": "https://skyhigh-works.hatenablog.com/entry/2019/02/25/221959",
"maintainer": "takashiski",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/takashiski/namecard2x4/info.json b/keyboards/takashiski/namecard2x4/info.json
index 04a431f9f3..3c4b8dd2a8 100644
--- a/keyboards/takashiski/namecard2x4/info.json
+++ b/keyboards/takashiski/namecard2x4/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "namecard2x4",
+ "manufacturer": "takashiski",
"url": "https://skyhigh-works.hatenablog.com/",
"maintainer": "takashiski",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"bootloader": "atmel-dfu",
"layouts": {
"LAYOUT": {
diff --git a/keyboards/takashiski/namecard2x4/rev1/config.h b/keyboards/takashiski/namecard2x4/rev1/config.h
index a91df15b08..22d86c3bfa 100644
--- a/keyboards/takashiski/namecard2x4/rev1/config.h
+++ b/keyboards/takashiski/namecard2x4/rev1/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER takashiski
-#define PRODUCT namecard2x4
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4,B5 }
#define MATRIX_COL_PINS { E6,D7,C6,D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/takashiski/namecard2x4/rev2/config.h b/keyboards/takashiski/namecard2x4/rev2/config.h
index 402737dc71..8ba5a6a6bb 100644
--- a/keyboards/takashiski/namecard2x4/rev2/config.h
+++ b/keyboards/takashiski/namecard2x4/rev2/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER takashiski
-#define PRODUCT namecard2x4
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B2,B6 }
#define MATRIX_COL_PINS { D7,E6,B4,B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
//#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/takashiski/otaku_split/rev0/config.h b/keyboards/takashiski/otaku_split/rev0/config.h
index 5fab9ea77e..3eb84cc6b3 100644
--- a/keyboards/takashiski/otaku_split/rev0/config.h
+++ b/keyboards/takashiski/otaku_split/rev0/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER takashiski
-#define PRODUCT otaku_split
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/takashiski/otaku_split/rev0/info.json b/keyboards/takashiski/otaku_split/rev0/info.json
index c7dc09e523..37844923fa 100644
--- a/keyboards/takashiski/otaku_split/rev0/info.json
+++ b/keyboards/takashiski/otaku_split/rev0/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Otaku split rev.0",
+ "keyboard_name": "otaku split rev.0",
+ "manufacturer": "takashiski",
"url": "",
- "maintainer": "takashiski",
+ "maintainer": "takashiski",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"\u534a\u89d2", "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":9.75, "y":0}, {"label":"*", "x":10.75, "y":0}, {"label":"(", "x":11.75, "y":0}, {"label":")", "x":12.75, "y":0}, {"label":"=", "x":13.75, "y":0}, {"label":"~", "x":14.75, "y":0}, {"label":"|", "x":15.75, "y":0}, {"label":"Backspace", "x":16.75, "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":"7", "x":6.5, "y":1}, {"label":"Y", "x":9.25, "y":1}, {"label":"U", "x":10.25, "y":1}, {"label":"I", "x":11.25, "y":1}, {"label":"O", "x":12.25, "y":1}, {"label":"P", "x":13.25, "y":1}, {"label":"`", "x":14.25, "y":1}, {"label":"{", "x":15.25, "y":1}, {"label":"Enter", "x":16.5, "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":9.5, "y":2}, {"label":"J", "x":10.5, "y":2}, {"label":"K", "x":11.5, "y":2}, {"label":"L", "x":12.5, "y":2}, {"label":"+", "x":13.5, "y":2}, {"label":"*", "x":14.5, "y":2}, {"label":"}", "x":15.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":"1", "x":9, "y":3}, {"label":"N", "x":10, "y":3}, {"label":"M", "x":11, "y":3}, {"label":"<", "x":12, "y":3}, {"label":">", "x":13, "y":3}, {"label":"?", "x":14, "y":3}, {"label":"_", "x":15, "y":3}, {"label":"Shift", "x":16, "y":3, "w":1.75}, {"x":0, "y":4, "w":2}, {"label":"Ctrl", "x":2, "y":4, "w":1.25}, {"label":"Alt", "x":3.25, "y":4, "w":1.25}, {"label":"\u7121\u5909\u63db", "x":4.5, "y":4}, {"label":"\u2190", "x":5.5, "y":4}, {"label":"\u2193", "x":6.5, "y":4}, {"label":"\u2191", "x":8.75, "y":4}, {"label":"\u2192", "x":9.75, "y":4}, {"label":".", "x":10.75, "y":4}, {"label":"Menu", "x":11.75, "y":4}, {"label":"\u5909\u63db", "x":12.75, "y":4, "w":1.25}, {"label":"\u30ab\u30bf\u30ab\u30ca", "x":14, "y":4, "w":1.25}, {"label":"Alt", "x":15.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":16.5, "y":4, "w":1.25}]
diff --git a/keyboards/takashiski/otaku_split/rev1/config.h b/keyboards/takashiski/otaku_split/rev1/config.h
index 05979a6e04..099f20f5d0 100644
--- a/keyboards/takashiski/otaku_split/rev1/config.h
+++ b/keyboards/takashiski/otaku_split/rev1/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER takashiski
-#define PRODUCT otaku_split
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -45,7 +38,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { F4,F5,F6,F7,B1,B3,B2,B6 }
#define MATRIX_ROW_PINS_RIGHT { B5,B4,E6,D7,C6 }
#define MATRIX_COL_PINS_RIGHT { B6,B2,B3,B1,F7,F6,F5,F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/takashiski/otaku_split/rev1/info.json b/keyboards/takashiski/otaku_split/rev1/info.json
index 9c2121e0e1..9fa11237b6 100644
--- a/keyboards/takashiski/otaku_split/rev1/info.json
+++ b/keyboards/takashiski/otaku_split/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "otaku split rev.1",
+ "manufacturer": "takashiski",
"url": "http",
"maintainer": "takashiski",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"\u534a\u89d2", "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":"Insert", "x":8.75, "y":0}, {"label":"&", "x":9.75, "y":0}, {"label":"*", "x":10.75, "y":0}, {"label":"(", "x":11.75, "y":0}, {"label":")", "x":12.75, "y":0}, {"label":"=", "x":13.75, "y":0}, {"label":"~", "x":14.75, "y":0}, {"label":"|", "x":15.75, "y":0}, {"label":"Backspace", "x":16.75, "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":"7", "x":6.5, "y":1}, {"label":"Y", "x":9.25, "y":1}, {"label":"U", "x":10.25, "y":1}, {"label":"I", "x":11.25, "y":1}, {"label":"O", "x":12.25, "y":1}, {"label":"P", "x":13.25, "y":1}, {"label":"`", "x":14.25, "y":1}, {"label":"{", "x":15.25, "y":1}, {"label":"Enter", "x":16.5, "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":9.5, "y":2}, {"label":"J", "x":10.5, "y":2}, {"label":"K", "x":11.5, "y":2}, {"label":"L", "x":12.5, "y":2}, {"label":"+", "x":13.5, "y":2}, {"label":"*", "x":14.5, "y":2}, {"label":"}", "x":15.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":"1", "x":9, "y":3}, {"label":"N", "x":10, "y":3}, {"label":"M", "x":11, "y":3}, {"label":"<", "x":12, "y":3}, {"label":">", "x":13, "y":3}, {"label":"?", "x":14, "y":3}, {"label":"_", "x":15, "y":3}, {"label":"Shift", "x":16, "y":3, "w":1.75}, {"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":"\u7121\u5909\u63db", "x":3.5, "y":4}, {"label":"2", "x":4.5, "y":4}, {"label":"\u2190", "x":5.5, "y":4}, {"label":"\u2193", "x":6.5, "y":4}, {"label":"\u2191", "x":8.75, "y":4}, {"label":"\u2192", "x":9.75, "y":4}, {"label":".", "x":10.75, "y":4}, {"label":"\u5909\u63db", "x":11.75, "y":4, "w":1.25}, {"label":"\u30ab\u30bf\u30ab\u30ca", "x":13, "y":4, "w":1.25}, {"label":"Alt", "x":14.25, "y":4, "w":1.25}, {"label":"Menu", "x":15.5, "y":4}, {"label":"Ctrl", "x":16.5, "y":4, "w":1.25}]
diff --git a/keyboards/taleguers/taleguers75/config.h b/keyboards/taleguers/taleguers75/config.h
index 32fc1e9913..c3d229bfc7 100644
--- a/keyboards/taleguers/taleguers75/config.h
+++ b/keyboards/taleguers/taleguers75/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8476
-#define PRODUCT_ID 0x0075
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Taleguers
-#define PRODUCT Taleguers75
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 14
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, F6, F5, F4, F1, F0 }
#define MATRIX_COL_PINS { B3, B2, B1, E6, B7, C7, C6, D4, D6, D7, B4, D0, D1, F7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/taleguers/taleguers75/info.json b/keyboards/taleguers/taleguers75/info.json
index 6f429c226a..fc335eac92 100644
--- a/keyboards/taleguers/taleguers75/info.json
+++ b/keyboards/taleguers/taleguers75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Taleguers75",
+ "manufacturer": "Taleguers",
"url": "",
"maintainer": "borlopjim",
+ "usb": {
+ "vid": "0x8476",
+ "pid": "0x0075",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{
diff --git a/keyboards/tanuki/config.h b/keyboards/tanuki/config.h
index 3c323ba10e..52ecb78365 100644
--- a/keyboards/tanuki/config.h
+++ b/keyboards/tanuki/config.h
@@ -19,20 +19,12 @@ 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 0x6464
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Seth
-#define PRODUCT Tanuki PCB version
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 11
#define MATRIX_COL_PINS { B3 , B2 , B6 , B5 , B4 , E6 , D7 , C6 , F4 , F5 , F6 }
#define MATRIX_ROW_PINS { F7 , B1 , D4 , D0 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tanuki/info.json b/keyboards/tanuki/info.json
index c3a34c38fd..d4e9140849 100644
--- a/keyboards/tanuki/info.json
+++ b/keyboards/tanuki/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Tanuki",
+ "manufacturer": "Seth",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6464",
+ "device_version": "0.0.1"
+ },
"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":"Back Space", "x":11, "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":"Game", "x":11.25, "y":1}, {"label":"Shift", "x":0.25, "y":2, "w":1.5}, {"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":"Enter", "x":10.75, "y":2, "w":1.25}, {"label":"Ctrl", "x":1.25, "y":3, "w":1.25}, {"label":"Alt", "x":2.5, "y":3}, {"label":"<", "x":3.5, "y":3}, {"x":4.5, "y":3, "w":2}, {"x":6.5, "y":3, "w":2}, {"label":">", "x":8.5, "y":3}, {"label":"GUI", "x":9.5, "y":3, "w":1.25}]
diff --git a/keyboards/tanuki/keymaps/tucznak/keymap.c b/keyboards/tanuki/keymaps/tucznak/keymap.c
index 301f0f8419..35272e641c 100644
--- a/keyboards/tanuki/keymaps/tucznak/keymap.c
+++ b/keyboards/tanuki/keymaps/tucznak/keymap.c
@@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FN] = LAYOUT(
- RESET, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, _______,
KC_SLEP, VLK_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______,
_______, RGB_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/tau4/config.h b/keyboards/tau4/config.h
index d7e6ffe1bb..a829fda5be 100755
--- a/keyboards/tau4/config.h
+++ b/keyboards/tau4/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER taukeyboards
-#define PRODUCT tau4
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { D4, D6, D7, B4, B5, B6, C6, C7, F1, F0, B0, B1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tau4/info.json b/keyboards/tau4/info.json
new file mode 100644
index 0000000000..9ec48383c7
--- /dev/null
+++ b/keyboards/tau4/info.json
@@ -0,0 +1,11 @@
+{
+ "keyboard_name": "tau4",
+ "manufacturer": "taukeyboards",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/team0110/p1800fl/config.h b/keyboards/team0110/p1800fl/config.h
index f4aa79e88b..d021cdb21b 100644
--- a/keyboards/team0110/p1800fl/config.h
+++ b/keyboards/team0110/p1800fl/config.h
@@ -19,13 +19,6 @@ 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 0x3EAE
-#define DEVICE_VER 0x0001
-#define MANUFACTURER team0110
-#define PRODUCT p1800fl
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B6, B5, B4, D7, D6, D4 }
#define MATRIX_COL_PINS { C7, F7, F6, F5, F4, F1, F0, E6, B0, B1, B2, B3, D0, D1, D2}
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/team0110/p1800fl/info.json b/keyboards/team0110/p1800fl/info.json
index c49ec2ef5c..5780cbc8cf 100644
--- a/keyboards/team0110/p1800fl/info.json
+++ b/keyboards/team0110/p1800fl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "p1800fl",
+ "manufacturer": "team0110",
"url": "http://team0110.store/",
"maintainer": "team0110",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3EAE",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/technika/config.h b/keyboards/technika/config.h
index 80d3137225..20357786eb 100644
--- a/keyboards/technika/config.h
+++ b/keyboards/technika/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8484 // TT for TealTechnik
-#define PRODUCT_ID 0x6049 // 60i
-#define DEVICE_VER 0x0001 // Revision pre-Alpha
-#define MANUFACTURER TealTechnik
-#define PRODUCT Technika
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
diff --git a/keyboards/technika/info.json b/keyboards/technika/info.json
index c78d31193f..4c509522ca 100644
--- a/keyboards/technika/info.json
+++ b/keyboards/technika/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Technika",
+ "manufacturer": "TealTechnik",
"url": "",
"maintainer": "Gondolindrim",
+ "usb": {
+ "vid": "0x8484",
+ "pid": "0x6049",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/teleport/numpad/config.h b/keyboards/teleport/numpad/config.h
index f3573483b7..6294ac7e5f 100644
--- a/keyboards/teleport/numpad/config.h
+++ b/keyboards/teleport/numpad/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7470 //"tp"
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER tlprt
-#define PRODUCT NumPad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -30,7 +23,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { D7, D4, D6, B4, B5 }
#define MATRIX_COL_PINS { F6, F5, F7, F4 }
-#define UNUSED_PINS { B0, B1, B2, B3, B6, B7, D0, D1, D2, D3, D5, F0, F1, E6, C6, C7 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/teleport/numpad/info.json b/keyboards/teleport/numpad/info.json
index a05b7440ba..8e26aa7789 100644
--- a/keyboards/teleport/numpad/info.json
+++ b/keyboards/teleport/numpad/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "tlprt_NumPad",
+ "keyboard_name": "NumPad",
+ "manufacturer": "tlprt",
"maintainer": "ebastler",
+ "usb": {
+ "vid": "0x7470",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_5x4": {
"layout": [
diff --git a/keyboards/teleport/numpad/readme.md b/keyboards/teleport/numpad/readme.md
index aebde6f160..20975b6947 100644
--- a/keyboards/teleport/numpad/readme.md
+++ b/keyboards/teleport/numpad/readme.md
@@ -17,4 +17,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## Bootloader Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (In this case NumLock) 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` (With the default keymap, hold NumLock, then press Enter) \ No newline at end of file
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` (With the default keymap, hold NumLock, then press Enter) \ No newline at end of file
diff --git a/keyboards/telophase/config.h b/keyboards/telophase/config.h
index 6d23b98ae3..1e0c5a580d 100644
--- a/keyboards/telophase/config.h
+++ b/keyboards/telophase/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER unknown
-#define PRODUCT Telophase
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/telophase/info.json b/keyboards/telophase/info.json
index b31460fa22..b267e07e45 100644
--- a/keyboards/telophase/info.json
+++ b/keyboards/telophase/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Telophase",
+ "manufacturer": "Unknown",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
diff --git a/keyboards/tempo_turtle/bradpad/config.h b/keyboards/tempo_turtle/bradpad/config.h
deleted file mode 100644
index c6a405b05f..0000000000
--- a/keyboards/tempo_turtle/bradpad/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-Copyright 2021 v3ritas <v3ritas@tempoturtle.com>
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-You should have 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 descriptor setup and keyboard setup (rows and cols) are located in info.json*/
diff --git a/keyboards/tempo_turtle/bradpad/info.json b/keyboards/tempo_turtle/bradpad/info.json
index e1caeeeb88..374279d9ac 100644
--- a/keyboards/tempo_turtle/bradpad/info.json
+++ b/keyboards/tempo_turtle/bradpad/info.json
@@ -1,5 +1,6 @@
{
"keyboard_name": "bradpad",
+ "manufacturer": "tempo_turtle",
"url": "https://tempoturtle.com",
"maintainer": "wxyangf",
"diode_direction": "ROW2COL",
diff --git a/keyboards/tender/macrowo_pad/config.h b/keyboards/tender/macrowo_pad/config.h
index 51f8fbb149..bdfe120bf0 100644
--- a/keyboards/tender/macrowo_pad/config.h
+++ b/keyboards/tender/macrowo_pad/config.h
@@ -17,12 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xE936
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Tender
-#define PRODUCT Macrowo Pad
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 10
@@ -30,7 +24,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B5, D7 }
#define MATRIX_COL_PINS { E6, B4, B6, B2, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tender/macrowo_pad/info.json b/keyboards/tender/macrowo_pad/info.json
index 727de47839..c9357100b3 100644
--- a/keyboards/tender/macrowo_pad/info.json
+++ b/keyboards/tender/macrowo_pad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Macrowo_Pad",
+ "keyboard_name": "Macrowo Pad",
+ "manufacturer": "Tender",
"url": "https//www.github.com/swiftrax",
"maintainer": "swiftrax",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xE936",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"0,1", "x":1, "y":0}, {"label":"0,3", "x":3.25, "y":0}, {"label":"0,6", "x":7.25, "y":0}, {"label":"0,8", "x":9.5, "y":0}, {"label":"0,0", "x":0, "y":0.5}, {"label":"0,2", "x":2, "y":0.5}, {"label":"0,7", "x":8.5, "y":0.5}, {"label":"0,9", "x":10.5, "y":0.5}, {"label":"0,4", "x":3.75, "y":1}, {"label":"0,5", "x":6.75, "y":1}, {"label":"1,4", "x":5.25, "y":1.25}, {"label":"1,0", "x":0, "y":1.5}, {"label":"1,2", "x":2, "y":1.5}, {"label":"1,7", "x":8.5, "y":1.5}, {"label":"1,9", "x":10.5, "y":1.5}, {"label":"1,1", "x":1, "y":2}, {"label":"1,3", "x":4.25, "y":2}, {"label":"1,5", "x":6.25, "y":2}, {"label":"1,8", "x":9.5, "y":2}]
diff --git a/keyboards/tenki/config.h b/keyboards/tenki/config.h
index 91b226e09b..3be9c91d2e 100644
--- a/keyboards/tenki/config.h
+++ b/keyboards/tenki/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5058 // "PX"
-#define PRODUCT_ID 0x5445 // "TE"
-#define DEVICE_VER 0x1001
-#define MANUFACTURER Pixlup
-#define PRODUCT TENKI
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B1, B4, F6, B6, B2 }
#define MATRIX_COL_PINS { F4, F5, D4, D0 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tenki/info.json b/keyboards/tenki/info.json
index 7d87abba5a..2ffafbf1dd 100644
--- a/keyboards/tenki/info.json
+++ b/keyboards/tenki/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "TENKI",
+ "manufacturer": "Pixlup",
"url": "https://tokopedia.com/pixlup",
"maintainer": "eriqadams",
+ "usb": {
+ "vid": "0x5058",
+ "pid": "0x5445",
+ "device_version": "10.0.1"
+ },
"layouts": {
"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":"Bspc", "x":3, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"=", "x":3, "y":3}, {"label":"0", "x":0, "y":4}, {"label":"PrtScr", "x":1, "y":4}, {"label":".", "x":2, "y":4}, {"label":"Enter", "x":3, "y":4}]
diff --git a/keyboards/terrazzo/config.h b/keyboards/terrazzo/config.h
index 43720fa78f..ec4ded7eb9 100644
--- a/keyboards/terrazzo/config.h
+++ b/keyboards/terrazzo/config.h
@@ -17,14 +17,6 @@
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4d4d // MM
-#define PRODUCT_ID 0x545a // TZ
-#define DEVICE_VER 0x0002
-#define MANUFACTURER MsMustard
-#define PRODUCT Terrazzo
-
/* key matrix size */
// SWAP FOR PRO MICRO
@@ -39,7 +31,6 @@
#define MATRIX_ROW_PINS { D2, D7, E6, B4, B5, B6, B2, B3, F0 }
#define MATRIX_COL_PINS { D3, F4, F5, F6, F7, B1 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
/* ROTARY ENCODERS */
diff --git a/keyboards/terrazzo/info.json b/keyboards/terrazzo/info.json
index 7efb3d7111..1fa582f82d 100644
--- a/keyboards/terrazzo/info.json
+++ b/keyboards/terrazzo/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Terrazzo",
+ "manufacturer": "MsMustard",
"url": "",
"maintainer": "MsMustard",
+ "usb": {
+ "vid": "0x4D4D",
+ "pid": "0x545A",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/terrazzo/keymaps/ortho/keymap.c b/keyboards/terrazzo/keymaps/ortho/keymap.c
index 986cb884d7..bea5f344eb 100644
--- a/keyboards/terrazzo/keymaps/ortho/keymap.c
+++ b/keyboards/terrazzo/keymaps/ortho/keymap.c
@@ -65,7 +65,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_CAPS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11, KC_F12, _______, _______,
_______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, CG_TOGG,
- _______, RESET, _______, _______, _______, _______, _______, _______, _______
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/terrazzo/keymaps/ortho_all/keymap.c b/keyboards/terrazzo/keymaps/ortho_all/keymap.c
index b0ecd9c911..75c4bb1f6c 100644
--- a/keyboards/terrazzo/keymaps/ortho_all/keymap.c
+++ b/keyboards/terrazzo/keymaps/ortho_all/keymap.c
@@ -65,7 +65,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_CAPS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11, KC_F12, _______, _______,
_______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, CG_TOGG,
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/terrazzo/keymaps/ortho_mit/keymap.c b/keyboards/terrazzo/keymaps/ortho_mit/keymap.c
index 87e6d3f786..b0b4bb925c 100644
--- a/keyboards/terrazzo/keymaps/ortho_mit/keymap.c
+++ b/keyboards/terrazzo/keymaps/ortho_mit/keymap.c
@@ -62,7 +62,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_CAPS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11, KC_F12, _______, _______,
_______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, CG_TOGG,
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/tetris/config.h b/keyboards/tetris/config.h
index cfea2a72dc..a9e539fb00 100755
--- a/keyboards/tetris/config.h
+++ b/keyboards/tetris/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Fengz
-#define PRODUCT Tetris
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B3, B2, B1, B0, E6 }
#define MATRIX_COL_PINS { D7, B4, B6, C6, C7, F6, F7, D4, D2, D3, D5, D6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tetris/info.json b/keyboards/tetris/info.json
index 6b59e2b5c0..eaae708614 100644
--- a/keyboards/tetris/info.json
+++ b/keyboards/tetris/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Tetris",
+ "manufacturer": "Fengz",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_planck_mit": {
"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, "w":2}, {"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":10, "y":4}, {"x":11, "y":4}]
diff --git a/keyboards/tetris/keymaps/default/keymap.c b/keyboards/tetris/keymaps/default/keymap.c
index 1b53ea80b9..9e2a96ffc3 100755
--- a/keyboards/tetris/keymaps/default/keymap.c
+++ b/keyboards/tetris/keymaps/default/keymap.c
@@ -37,7 +37,7 @@ void matrix_init_user(void) {
}
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
if (RGB_encoder_dir != 0) {
if (timer_elapsed(RGB_encoder_timer) > 1400) {
@@ -152,7 +152,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t * record) {
bool encoder_update_user(uint8_t index, bool clockwise) {
RGB_encoder_timer = timer_read();
RGB_encoder_timer2 = timer_read();
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
if (clockwise) {
RGB_encoder_dir = 1;
} else {
diff --git a/keyboards/tg4x/config.h b/keyboards/tg4x/config.h
index 0fb0099833..4fc734fb0f 100644
--- a/keyboards/tg4x/config.h
+++ b/keyboards/tg4x/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4D4D // "MM"
-#define PRODUCT_ID 0x0458 // 4 "X"
-#define DEVICE_VER 0x0021
-#define MANUFACTURER MythosMann
-#define PRODUCT TG4x
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 7
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 0 1 2 3 4 5 6 7
#define MATRIX_ROW_PINS { B5, B4, E6, D7, C6, D4, D0, D1 }
#define MATRIX_COL_PINS { D3, B3, B1, F7, F6, F5, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tg4x/info.json b/keyboards/tg4x/info.json
index adf05c1aa4..dca51d9927 100644
--- a/keyboards/tg4x/info.json
+++ b/keyboards/tg4x/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "TG4x",
+ "manufacturer": "MythosMann",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4D4D",
+ "pid": "0x0458",
+ "device_version": "0.2.1"
+ },
"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":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.25}, {"x":1.25, "y":3, "w":1.25}, {"x":2.5, "y":3, "w":1.25}, {"x":3.75, "y":3, "w":2.25}, {"x":6, "y":3, "w":2.75}, {"x":8.75, "y":3, "w":1.25}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}]
diff --git a/keyboards/tgr/910/config.h b/keyboards/tgr/910/config.h
index f9a233c1b2..9a12407b35 100644
--- a/keyboards/tgr/910/config.h
+++ b/keyboards/tgr/910/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x5447 //TG
-#define PRODUCT_ID 0x9100 //910
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Quadcube
-#define PRODUCT TGR-910
-
#define RGBLED_NUM 19
#define MATRIX_ROWS 7
@@ -33,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 0 1 2 3 4 5 6 7 8 9 A B C D
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6 }
#define MATRIX_COL_PINS { D7, C2, C3, C4, C5, C6, C7, A7, A6, A5, A4, A3, A1, A0 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/tgr/910/info.json b/keyboards/tgr/910/info.json
index 32d09d2193..694d4be5d9 100644
--- a/keyboards/tgr/910/info.json
+++ b/keyboards/tgr/910/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "TGR-910",
+ "manufacturer": "Quadcube",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5447",
+ "pid": "0x9100",
+ "device_version": "0.0.1"
+ },
"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}, {"x":13.75, "y":2, "w":1.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":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}, {"x":15, "y":4}]
diff --git a/keyboards/tgr/910ce/config.h b/keyboards/tgr/910ce/config.h
index 58b7426a1f..a7b88609c3 100644
--- a/keyboards/tgr/910ce/config.h
+++ b/keyboards/tgr/910ce/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x5447 // TG
-#define PRODUCT_ID 0x910C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TGR
-#define PRODUCT 910CE
-
#define RGBLED_NUM 18
#define MATRIX_ROWS 6
@@ -33,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 0 1 2 3 4 5 6 7 8 9 A B C D E
#define MATRIX_ROW_PINS { B1, B2, B3, B4, B5, B6 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
-#define UNUSED_PINS {}
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/tgr/910ce/info.json b/keyboards/tgr/910ce/info.json
index 55ce67b283..cf86a59c12 100644
--- a/keyboards/tgr/910ce/info.json
+++ b/keyboards/tgr/910ce/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TGR 910 CE",
+ "keyboard_name": "910CE",
+ "manufacturer": "TGR",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5447",
+ "pid": "0x910C",
+ "device_version": "0.0.1"
+ },
"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}, {"x":13.75, "y":2, "w":1.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":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/tgr/alice/config.h b/keyboards/tgr/alice/config.h
index 26ed2e7973..c5824fb12b 100644
--- a/keyboards/tgr/alice/config.h
+++ b/keyboards/tgr/alice/config.h
@@ -17,12 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x422E
-#define DEVICE_VER 0x0200
-#define MANUFACTURER TGR
-#define PRODUCT Alice
-
/* matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
diff --git a/keyboards/tgr/alice/info.json b/keyboards/tgr/alice/info.json
index 7e92a9ceda..d49e8a0e25 100644
--- a/keyboards/tgr/alice/info.json
+++ b/keyboards/tgr/alice/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TGR Alice",
+ "keyboard_name": "Alice",
+ "manufacturer": "TGR",
"url": "",
"maintainer": "Felipe Coury",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x422E",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/tgr/alice/keymaps/mrkeebs/keymap.c b/keyboards/tgr/alice/keymaps/mrkeebs/keymap.c
index 3d8099c413..5ba309f8de 100644
--- a/keyboards/tgr/alice/keymaps/mrkeebs/keymap.c
+++ b/keyboards/tgr/alice/keymaps/mrkeebs/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LGUI, KC_LALT, KC_SPC, KC_LGUI, KC_SPC, KC_RALT, KC_RCTL \
),
[1] = LAYOUT(
- 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_DEL, KC_INS, \
+ QK_BOOT, 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, \
_______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_UP , _______, _______, \
_______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, \
diff --git a/keyboards/tgr/jane/v2/config.h b/keyboards/tgr/jane/v2/config.h
index 0132a716d3..415455c929 100644
--- a/keyboards/tgr/jane/v2/config.h
+++ b/keyboards/tgr/jane/v2/config.h
@@ -19,19 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x5447 // TG
-#define PRODUCT_ID 0x4A4E // JN
-#define DEVICE_VER 0x0200
-#define MANUFACTURER TGR
-#define PRODUCT Jane
-
#define MATRIX_ROWS 8
#define MATRIX_COLS 15
// 0 1 2 3 4 5 6 7 8 9 A B C D E
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/tgr/jane/v2/info.json b/keyboards/tgr/jane/v2/info.json
index 0f0955c3f9..aaf15c8234 100644
--- a/keyboards/tgr/jane/v2/info.json
+++ b/keyboards/tgr/jane/v2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TGR Jane v2",
+ "keyboard_name": "Jane v2",
+ "manufacturer": "TGR",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5447",
+ "pid": "0x4A4E",
+ "device_version": "2.0.0"
+ },
"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}, {"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}]
diff --git a/keyboards/tgr/jane/v2ce/config.h b/keyboards/tgr/jane/v2ce/config.h
index e6f6e99e7d..37c3e962a6 100644
--- a/keyboards/tgr/jane/v2ce/config.h
+++ b/keyboards/tgr/jane/v2ce/config.h
@@ -18,19 +18,12 @@
#include "config_common.h"
-#define VENDOR_ID 0x5447 // TG
-#define PRODUCT_ID 0x4A43 // JC
-#define DEVICE_VER 0x0200
-#define MANUFACTURER TGR
-#define PRODUCT Jane
-
#define MATRIX_ROWS 8
#define MATRIX_COLS 15
// 0 1 2 3 4 5 6 7 8 9 A B C D E
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/tgr/jane/v2ce/info.json b/keyboards/tgr/jane/v2ce/info.json
index 97e12227f2..0219caab49 100644
--- a/keyboards/tgr/jane/v2ce/info.json
+++ b/keyboards/tgr/jane/v2ce/info.json
@@ -1,9 +1,13 @@
{
- "keyboard_name": "TGR Jane v2 CE",
+ "keyboard_name": "Jane v2 CE",
+ "manufacturer": "TGR",
"url": "",
"maintainer": "qmk",
- "width": 18.25,
- "height": 6.5,
+ "usb": {
+ "vid": "0x5447",
+ "pid": "0x4A43",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT_all_f13": {
"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}]
diff --git a/keyboards/tgr/tris/config.h b/keyboards/tgr/tris/config.h
index 131add14cd..eed74f07e0 100644
--- a/keyboards/tgr/tris/config.h
+++ b/keyboards/tgr/tris/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x5447 //TG
-#define PRODUCT_ID 0x5452 //TR
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TGR
-#define PRODUCT Tris
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
diff --git a/keyboards/tgr/tris/info.json b/keyboards/tgr/tris/info.json
index c4288ac14b..e557935785 100644
--- a/keyboards/tgr/tris/info.json
+++ b/keyboards/tgr/tris/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TGR Tris",
+ "keyboard_name": "Tris",
+ "manufacturer": "TGR",
"url": "",
"maintainer": "halfenergized",
+ "usb": {
+ "vid": "0x5447",
+ "pid": "0x5452",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_6x4": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}]
diff --git a/keyboards/the_royal/liminal/config.h b/keyboards/the_royal/liminal/config.h
index 9e3dadce3d..2066eefefb 100644
--- a/keyboards/the_royal/liminal/config.h
+++ b/keyboards/the_royal/liminal/config.h
@@ -2,20 +2,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B4B
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TheRoyalSweatshirt
-#define PRODUCT Liminal
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { C6, B6, B7, C7 }
#define MATRIX_COL_PINS { D6, C4, D3, D2, D1, D0, C2, B0, B1, B2, B3, B4, D5, C5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/the_royal/liminal/info.json b/keyboards/the_royal/liminal/info.json
index b42337a740..d6f25ee6fe 100644
--- a/keyboards/the_royal/liminal/info.json
+++ b/keyboards/the_royal/liminal/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "liminal",
+ "keyboard_name": "Liminal",
+ "manufacturer": "TheRoyalSweatshirt",
"url": "",
"maintainer": "TheRoyalSweatshirt",
+ "usb": {
+ "vid": "0x4B4B",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_base_kit_all": {
"layout": [
diff --git a/keyboards/the_royal/liminal/keymaps/brandonschlack/keymap.c b/keyboards/the_royal/liminal/keymaps/brandonschlack/keymap.c
index 4180e9464f..6394460c41 100644
--- a/keyboards/the_royal/liminal/keymaps/brandonschlack/keymap.c
+++ b/keyboards/the_royal/liminal/keymaps/brandonschlack/keymap.c
@@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └───┴────┴───┴────┴───────────────────────────┴────┴───┴────┘
*/
[_ADJUST] = LAYOUT_base_kit_all( \
- _______, QM_MAKE, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, QM_MAKE, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, \
_______, _______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, XXXXXXX, _______, XXXXXXX, _______, _______, _______ \
diff --git a/keyboards/the_royal/schwann/config.h b/keyboards/the_royal/schwann/config.h
index 955771c793..20fbae923f 100644
--- a/keyboards/the_royal/schwann/config.h
+++ b/keyboards/the_royal/schwann/config.h
@@ -2,20 +2,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3521
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TheRoyalSweatshirt
-#define PRODUCT The Schwann PCB
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
#define MATRIX_ROW_PINS { F0, F1, F6, C7 }
#define MATRIX_COL_PINS { F4, F5, D5, D3, D2, C6, B6, B5, B4, D7, D6, D1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/the_royal/schwann/info.json b/keyboards/the_royal/schwann/info.json
index 96814fb1ee..a072970a38 100644
--- a/keyboards/the_royal/schwann/info.json
+++ b/keyboards/the_royal/schwann/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Schwann's PCB",
+ "keyboard_name": "The Schwann PCB",
+ "manufacturer": "TheRoyalSweatshirt",
"url": "https://github.com/TheRoyalSweatshirt/The_Royal_Projects/tree/schwann/PCBs/Schwann_PCB",
"maintainer": "TheRoyalSweatshirt",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3521",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_mit": {
"layout": [
diff --git a/keyboards/the_uni/info.json b/keyboards/the_uni/info.json
index a8b5a1b5cc..b7cb80957e 100644
--- a/keyboards/the_uni/info.json
+++ b/keyboards/the_uni/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "The Uni",
+ "manufacturer": "stenokeyboards",
"url": "https://www.stenokeyboards.com",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x9000",
+ "pid": "0x0001"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/the_uni/pro_micro/config.h b/keyboards/the_uni/pro_micro/config.h
index ff965d7744..dc0493face 100644
--- a/keyboards/the_uni/pro_micro/config.h
+++ b/keyboards/the_uni/pro_micro/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x9000
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER stenokeyboards
-#define PRODUCT The Uni
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 11
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { F4, B2, B6 }
#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B5, B4, E6, D7, C6, D4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/the_uni/pro_micro/info.json b/keyboards/the_uni/pro_micro/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/the_uni/pro_micro/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/the_uni/usb_c/config.h b/keyboards/the_uni/usb_c/config.h
index 3110c0d821..02b6ad5a1f 100644
--- a/keyboards/the_uni/usb_c/config.h
+++ b/keyboards/the_uni/usb_c/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x9000
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0002
-#define MANUFACTURER stenokeyboards
-#define PRODUCT The Uni
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 11
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B7, D6, C7 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, D5, D3, D2, D1, D0, D4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/the_uni/usb_c/info.json b/keyboards/the_uni/usb_c/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/the_uni/usb_c/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/themadnoodle/ncc1701kb/v2/config.h b/keyboards/themadnoodle/ncc1701kb/v2/config.h
index 7cbba827a2..572d332a54 100644
--- a/keyboards/themadnoodle/ncc1701kb/v2/config.h
+++ b/keyboards/themadnoodle/ncc1701kb/v2/config.h
@@ -19,13 +19,6 @@ 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 0x1701
-#define DEVICE_VER 0x0002
-#define MANUFACTURER The Mad Noodle
-#define PRODUCT NCC1701KB v2
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* NCC-1701-KB PCB default pin-out */
#define MATRIX_ROW_PINS { D4, D6, D7 }
#define MATRIX_COL_PINS { B4, B5, B6 }
-#define UNUSED_PINS
/* RGB BackLight */
#define RGB_DI_PIN B7
diff --git a/keyboards/themadnoodle/ncc1701kb/v2/info.json b/keyboards/themadnoodle/ncc1701kb/v2/info.json
index ee62dbafc9..7c919dc3bc 100644
--- a/keyboards/themadnoodle/ncc1701kb/v2/info.json
+++ b/keyboards/themadnoodle/ncc1701kb/v2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NCC-1701-KB v2",
+ "manufacturer": "The Mad Noodle",
"url": "instagram.com/the_mad_noodle",
"maintainer": "The-Mad-Noodle",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1701",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_ortho_3x3": {
"layout": [
diff --git a/keyboards/themadnoodle/noodlepad/config.h b/keyboards/themadnoodle/noodlepad/config.h
index 3f47e3b609..572d332a54 100644
--- a/keyboards/themadnoodle/noodlepad/config.h
+++ b/keyboards/themadnoodle/noodlepad/config.h
@@ -19,13 +19,6 @@ 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 0x1701
-#define DEVICE_VER 0x0001
-#define MANUFACTURER The Mad Noodle
-#define PRODUCT Noodle Pad v1
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* NCC-1701-KB PCB default pin-out */
#define MATRIX_ROW_PINS { D4, D6, D7 }
#define MATRIX_COL_PINS { B4, B5, B6 }
-#define UNUSED_PINS
/* RGB BackLight */
#define RGB_DI_PIN B7
diff --git a/keyboards/themadnoodle/noodlepad/info.json b/keyboards/themadnoodle/noodlepad/info.json
index 5ffcc68677..c79d8ac305 100644
--- a/keyboards/themadnoodle/noodlepad/info.json
+++ b/keyboards/themadnoodle/noodlepad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "NoodlePad",
+ "keyboard_name": "Noodle Pad v1",
+ "manufacturer": "The Mad Noodle",
"url": "instagram.com/the_mad_noodle",
"maintainer": "The-Mad-Noodle",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1701",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_3x3": {
"layout": [
diff --git a/keyboards/thevankeyboards/bananasplit/config.h b/keyboards/thevankeyboards/bananasplit/config.h
index 9cb1fccebf..2fd0f470ad 100644
--- a/keyboards/thevankeyboards/bananasplit/config.h
+++ b/keyboards/thevankeyboards/bananasplit/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEAE
-#define PRODUCT_ID 0x8870
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TheVan Keyboards
-#define PRODUCT BananaSplit 60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { B0, B2, B4, B5, B6 }
#define MATRIX_COL_PINS { F5, B1, F0, F1, F4, B3, D7, D6, D4, D5, D3, D2, D1, D0 }
-#define UNUSED_PINS
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/thevankeyboards/bananasplit/info.json b/keyboards/thevankeyboards/bananasplit/info.json
index 44ebb41b27..d4b4f00b5d 100644
--- a/keyboards/thevankeyboards/bananasplit/info.json
+++ b/keyboards/thevankeyboards/bananasplit/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "bananasplit",
+ "keyboard_name": "BananaSplit 60",
+ "manufacturer": "TheVan Keyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEAE",
+ "pid": "0x8870",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_base": {
"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, "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":1.75}, {"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":2.75}, {"x":6.5, "y":4, "w":1.25}, {"x":7.75, "y":4, "w":2.25}, {"label":"Alt", "x":10, "y":4}, {"x":11, "y":4}, {"label":"Win", "x":12, "y":4}, {"label":"Menu", "x":13, "y":4}, {"label":"Ctrl", "x":14, "y":4}]
diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/0010/keymap.c b/keyboards/thevankeyboards/bananasplit/keymaps/0010/keymap.c
index 2744c91000..458475bf14 100644
--- a/keyboards/thevankeyboards/bananasplit/keymaps/0010/keymap.c
+++ b/keyboards/thevankeyboards/bananasplit/keymaps/0010/keymap.c
@@ -64,6 +64,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
______, ______, KC_UP, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_PSCR, \
______, KC_LEFT, KC_DOWN, KC_RGHT, ______, ______, ______, ______, ______, ______, ______, ______, KC_SLEP, \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_PGUP, \
- ______, ______, ______, ______, RESET, ______, ______, ______, ______, ______, KC_PGDN \
+ ______, ______, ______, ______, QK_BOOT, ______, ______, ______, ______, ______, KC_PGDN \
),
};
diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/cijanzen/keymap.c b/keyboards/thevankeyboards/bananasplit/keymaps/cijanzen/keymap.c
index 48f079515d..45c433fe2b 100644
--- a/keyboards/thevankeyboards/bananasplit/keymaps/cijanzen/keymap.c
+++ b/keyboards/thevankeyboards/bananasplit/keymaps/cijanzen/keymap.c
@@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[HHKB_NAV_LAYER] = LAYOUT_hhkb_arrow(
- 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_DEL,
+ QK_BOOT, KC_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_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_DEL,
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_ENT,
_______, _______, _______, _______, _______, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______,
diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/coloneljesus/keymap.c b/keyboards/thevankeyboards/bananasplit/keymaps/coloneljesus/keymap.c
index 8a35f896f0..dc64295bd8 100644
--- a/keyboards/thevankeyboards/bananasplit/keymaps/coloneljesus/keymap.c
+++ b/keyboards/thevankeyboards/bananasplit/keymaps/coloneljesus/keymap.c
@@ -58,7 +58,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS, KC_MPRV, KC_VOLU, KC_MNXT, KC_PGUP, KC_INS, KC_HOME, LCTL(KC_LEFT), LCTL(KC_RGHT), KC_END, _______, _______, _______, KC_PSCR, \
_______, KC_MUTE, KC_VOLD, KC_MPLY, KC_PGDN, KC_DEL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, \
_______, BL_STEP, BL_BRTG, _______, _______,_______, LCTL(KC_BSPC), LCTL(KC_DEL), _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, RESET \
+ _______, _______, _______, _______, _______,_______, _______, _______, _______, _______, QK_BOOT \
),
};
diff --git a/keyboards/thevankeyboards/bananasplit/keymaps/nic/keymap.c b/keyboards/thevankeyboards/bananasplit/keymaps/nic/keymap.c
index 39cfc0d8fe..92dd8ed903 100644
--- a/keyboards/thevankeyboards/bananasplit/keymaps/nic/keymap.c
+++ b/keyboards/thevankeyboards/bananasplit/keymaps/nic/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MOD_LAYER] = LAYOUT_hhkb_arrow( \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/thevankeyboards/caravan/config.h b/keyboards/thevankeyboards/caravan/config.h
index 3a8676b537..51a98aa181 100644
--- a/keyboards/thevankeyboards/caravan/config.h
+++ b/keyboards/thevankeyboards/caravan/config.h
@@ -18,20 +18,12 @@ 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 0xFEAE
-#define PRODUCT_ID 0x8844
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TheVan Keyboards
-#define PRODUCT Caravan
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
#define MATRIX_ROW_PINS { B0, B1, B2, B3 }
#define MATRIX_COL_PINS { F1, F4, F5, B4, B5, B6, B7, D2, D3, D5, D4, D6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/thevankeyboards/caravan/info.json b/keyboards/thevankeyboards/caravan/info.json
index 3b3ac4865d..8dbc08fcce 100644
--- a/keyboards/thevankeyboards/caravan/info.json
+++ b/keyboards/thevankeyboards/caravan/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TheVanKeyboards Caravan",
+ "keyboard_name": "Caravan",
+ "manufacturer": "TheVan Keyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEAE",
+ "pid": "0x8844",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/thevankeyboards/jetvan/config.h b/keyboards/thevankeyboards/jetvan/config.h
index 74094a183a..c0f6ac5811 100644
--- a/keyboards/thevankeyboards/jetvan/config.h
+++ b/keyboards/thevankeyboards/jetvan/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEAE
-#define PRODUCT_ID 0x8858
-#define DEVICE_VER 0x0001
-#define MANUFACTURER evangs
-#define PRODUCT JetVan
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { D7, B5, F7, D4 }
#define MATRIX_COL_PINS { D2, D3, D5, D6, B4, B6, F6, F5, F4, F1, F0, B3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/thevankeyboards/jetvan/info.json b/keyboards/thevankeyboards/jetvan/info.json
new file mode 100644
index 0000000000..f017d743dd
--- /dev/null
+++ b/keyboards/thevankeyboards/jetvan/info.json
@@ -0,0 +1,11 @@
+{
+ "keyboard_name": "JetVan",
+ "manufacturer": "evangs",
+ "url": "",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEAE",
+ "pid": "0x8858",
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/thevankeyboards/minivan/config.h b/keyboards/thevankeyboards/minivan/config.h
index 72f4a6a61f..69e2bd07af 100644
--- a/keyboards/thevankeyboards/minivan/config.h
+++ b/keyboards/thevankeyboards/minivan/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEAE
-#define PRODUCT_ID 0x8844
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Evan Sailer
-#define PRODUCT Minivan
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D7, B5, F7, D4 }
#define MATRIX_COL_PINS { D2, D3, D5, D6, B4, B6, F6, F5, F4, F1, F0, B3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/thevankeyboards/minivan/info.json b/keyboards/thevankeyboards/minivan/info.json
index 3ed0e4472d..82537ef045 100644
--- a/keyboards/thevankeyboards/minivan/info.json
+++ b/keyboards/thevankeyboards/minivan/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "tv44",
+ "keyboard_name": "Minivan",
+ "manufacturer": "Evan Sailer",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEAE",
+ "pid": "0x8844",
+ "device_version": "0.0.2"
+ },
"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":"|", "x":11, "y":0, "w":1.75}, {"label":"Caps Lock", "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, "w":1.5}, {"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}, {"x":11.75, "y":2}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.5}, {"label":"Alt", "x":2.75, "y":3, "w":1.25}, {"x":4, "y":3, "w":2.25}, {"x":6.25, "y":3, "w":2}, {"label":"Alt", "x":8.25, "y":3, "w":1.25}, {"label":"Win", "x":9.5, "y":3, "w":1.5}, {"label":"Menu", "x":11, "y":3, "w":1.75}]
diff --git a/keyboards/thevankeyboards/minivan/keymaps/belak/config.h b/keyboards/thevankeyboards/minivan/keymaps/belak/config.h
index 47d96a29d8..488ffa5418 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/belak/config.h
+++ b/keyboards/thevankeyboards/minivan/keymaps/belak/config.h
@@ -4,5 +4,6 @@
#include "../../config.h"
#define TAPPING_TERM 500
+#define PERMISSIVE_HOLD
#endif
diff --git a/keyboards/thevankeyboards/minivan/keymaps/belak/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/belak/keymap.c
index 437b1881a4..0ed709747a 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/belak/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/belak/keymap.c
@@ -22,6 +22,9 @@
#define TD_LCTL TD(BE_TD_CTL)
#define TD_LALT TD(BE_TD_ALT)
+#define ACTION_TAP_DANCE_MOD_TAP(mod) \
+ { .fn = {mod_tap_fn, NULL, mod_reset_fn}, .user_data = (void *)&((uint8_t){mod}), }
+
enum belak_td {
BE_TD_GUI = 0,
BE_TD_CTL,
@@ -32,15 +35,9 @@ void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data);
void mod_reset_fn(qk_tap_dance_state_t *state, void *user_data);
qk_tap_dance_action_t tap_dance_actions[] = {
- [BE_TD_GUI] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
- [BE_TD_CTL] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
- [BE_TD_ALT] = ACTION_TAP_DANCE_FN_ADVANCED(mod_tap_fn, NULL, mod_reset_fn),
-};
-
-uint16_t tap_dance_keys[] = {
- [BE_TD_GUI] = KC_LGUI,
- [BE_TD_CTL] = KC_LCTL,
- [BE_TD_ALT] = KC_LALT,
+ [BE_TD_GUI] = ACTION_TAP_DANCE_MOD_TAP(KC_LGUI),
+ [BE_TD_CTL] = ACTION_TAP_DANCE_MOD_TAP(KC_LCTL),
+ [BE_TD_ALT] = ACTION_TAP_DANCE_MOD_TAP(KC_LALT),
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -74,7 +71,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data) {
switch (state->count) {
case 1:
- register_mods(MOD_BIT(tap_dance_keys[state->keycode - QK_TAP_DANCE]));
+ uint8_t *mod = (uint8_t *)user_data;
+ register_mods(MOD_BIT(*mod));
send_keyboard_report();
break;
case 2:
@@ -90,8 +88,9 @@ void mod_tap_fn(qk_tap_dance_state_t *state, void *user_data) {
}
void mod_reset_fn(qk_tap_dance_state_t *state, void *user_data) {
+ uint8_t *mod = (uint8_t *)user_data;
layer_off(_L1);
layer_off(_L2);
- unregister_mods(MOD_BIT(tap_dance_keys[state->keycode - QK_TAP_DANCE]));
+ unregister_mods(MOD_BIT(*mod));
send_keyboard_report();
}
diff --git a/keyboards/thevankeyboards/minivan/keymaps/budi/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/budi/keymap.c
index f8b42cb79b..bc820230e3 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/budi/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/budi/keymap.c
@@ -178,14 +178,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |----------`------`------`------`------`------`------`------`------`------`------`-----------|
* | LSFT | | | | | | | | | | | |
* |-----------`------`------`------`------`------`-------`------`------`------`------`---------|
- * |---TRNS---| CAPS | LALT | | SWTCH | RALT | | RESET |--TRNS-|
+ * |---TRNS---| CAPS | LALT | | SWTCH | RALT | | QK_BOOT |--TRNS-|
* `---------+----------+----------+-----^^^------+----^^^-----+-------+-------+-------+-------'
*/
[_FN] = LAYOUT_arrow(
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_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, XXXXXXX,
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PWR, KC_SLEP, KC_WAKE, XXXXXXX, XXXXXXX, XXXXXXX,
- _______, KC_CAPS, _______, XXXXXXX, SWTCH, KC_RALT, XXXXXXX, RESET, _______
+ _______, KC_CAPS, _______, XXXXXXX, SWTCH, KC_RALT, XXXXXXX, QK_BOOT, _______
)
diff --git a/keyboards/thevankeyboards/minivan/keymaps/danbee/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/danbee/keymap.c
index b675b09b4f..22a39d6398 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/danbee/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/danbee/keymap.c
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
│ │ │ │ │ Pause │ │ │ │
└────┴─────┴────┴────────┴───────┴────┴─────┴──────┘*/
[_L2] = LAYOUT( /* LAYER 2 */
- KC_NUBS, KC_BRID, KC_BRIU, _______, RESET, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_EJCT,
+ KC_NUBS, KC_BRID, KC_BRIU, _______, QK_BOOT, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_EJCT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, _______,
_______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
_______, _______, _______, _______, KC_MPLY, _______, _______, _______
diff --git a/keyboards/thevankeyboards/minivan/keymaps/dcompact/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/dcompact/keymap.c
index 188dd3386b..a036d563a1 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/dcompact/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/dcompact/keymap.c
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT(
- RESET, KC_SLEP, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX,
+ QK_BOOT, KC_SLEP, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX,
XXXXXXX, KC_WAKE, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX,
XXXXXXX, KC_PWR, KC_MRWD, KC_MPLY, KC_MFFD, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX,
_______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX
diff --git a/keyboards/thevankeyboards/minivan/keymaps/halvves/config.h b/keyboards/thevankeyboards/minivan/keymaps/halvves/config.h
index 6be8d217bd..c6404f8ce5 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/halvves/config.h
+++ b/keyboards/thevankeyboards/minivan/keymaps/halvves/config.h
@@ -1,6 +1,7 @@
#pragma once
#define TAPPING_TERM 505
+#define PERMISSIVE_HOLD
#define RETRO_TAPPING
// smooth mousekeys (copied from the ergo ez config)
diff --git a/keyboards/thevankeyboards/minivan/keymaps/halvves/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/halvves/keymap.c
index 7054d97ff1..6ef5ecc2c6 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/halvves/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/halvves/keymap.c
@@ -151,7 +151,7 @@ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
/* Adjust
* ,--------------------------------------------------------------------------.
-* | | | | | |QWRTY|COLMK|DVRAK| | | | RESET |
+* | | | | | |QWRTY|COLMK|DVRAK| | | | QK_BOOT |
* |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
* | | | | | | | | | | | | |
* |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
@@ -161,7 +161,7 @@ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
* `--------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_arrow(
-XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QWERTY, COLEMAK, DVORAK, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QWERTY, COLEMAK, DVORAK, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 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/thevankeyboards/minivan/keymaps/hvp/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/hvp/keymap.c
index 779292fb3c..780694f335 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/hvp/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/hvp/keymap.c
@@ -49,6 +49,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, RGB_TOG, RGB_MOD, RGB_RMOD, _______, _______, _______, KC_7, KC_8, KC_9, KC_0, _______,
_______, RGB_M_P, RGB_HUD, RGB_HUI, _______, _______, _______, KC_4, KC_5, KC_6, _______, _______,
KC_PSCR, _______, RGB_SAD, RGB_SAI, _______, _______, KC_0, KC_1, KC_2, KC_3, _______, _______,
- RESET, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______
+ QK_BOOT, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______
)
}; \ No newline at end of file
diff --git a/keyboards/thevankeyboards/minivan/keymaps/jeebak/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/jeebak/keymap.c
index a7ace39e39..acf01cd9a4 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/jeebak/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/jeebak/keymap.c
@@ -275,7 +275,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
_______ ,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
/*|----------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`---------------|*/
- _______ , _______ , _______ , _______ , _______ , _______ , _______ , RESET )
+ _______ , _______ , _______ , _______ , _______ , _______ , _______ , QK_BOOT )
/*`-----------+---------------+---------+-------^^^------+-------^^^-------+---------+-----------------+--------------'*/
};
diff --git a/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/keymap.c
index 0c1ea9dd09..7674038a46 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/keymap.c
@@ -33,8 +33,8 @@ 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, LT(5, KC_SLSH),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_SPACE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
- [5] = LAYOUT_arrow_command( /* RESET Layer*/
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ [5] = LAYOUT_arrow_command( /* QK_BOOT Layer*/
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/minivan/keymaps/king/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/king/keymap.c
index 032aaf5c73..4c9019c669 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/king/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/king/keymap.c
@@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* 4: Reset Layer
* ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────────â”
- * │RESET│ │ │ │ │ │ │ │ │ │ │ │
+ * │QK_BOOT│ │ │ │ │ │ │ │ │ │ │ │
* ├─────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │
* ├──────┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬─────┤
@@ -116,7 +116,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └────────┴────────┴─────┴────────────┴────────────────┴─────┴─────┴─────────┘
*/
[_RL] = LAYOUT(
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 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/thevankeyboards/minivan/keymaps/lexworth/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/lexworth/keymap.c
index 1824f3cf39..98d0f63858 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/lexworth/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/lexworth/keymap.c
@@ -25,5 +25,5 @@ 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_LCBR, KC_RCBR, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_PIPE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LPRN, KC_RPRN, KC_TRNS,
- BL_TOGG, BL_DEC, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET)
+ BL_TOGG, BL_DEC, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT)
};
diff --git a/keyboards/thevankeyboards/minivan/keymaps/like_jis/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/like_jis/keymap.c
index 1332367f85..4403dd662a 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/like_jis/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/like_jis/keymap.c
@@ -100,7 +100,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
//,-----------------------------------------------------------------------------------------------------------.
// Reset LEDReset MacMode WinMode Home PageDown PageUp End
- _______, RESET, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, XXXXXXX,
+ _______, QK_BOOT, RGBRST, AG_NORM, AG_SWAP, XXXXXXX, KC_HOME, KC_PGDN, KC_PGUP, KC_END, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------|--------+--------+--------+--------+--------+--------|
// LED On/Off Hue/Saturation/Value Increment Mouse Left Down Up Right
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, XXXXXXX, _______,
diff --git a/keyboards/thevankeyboards/minivan/keymaps/mjt/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/mjt/keymap.c
index a9d3a802dc..2414faf62d 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/mjt/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/mjt/keymap.c
@@ -48,7 +48,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_DEL, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, _______, _______, _______, MACSLEEP, DYN_REC_START1, DYN_REC_START2 },
{KC_CAPS, _______, _______, _______, _______, _______, _______, _______, DYN_MACRO_PLAY1, DYN_MACRO_PLAY2,_______,DYN_REC_STOP},
- {_______,_______,_______,LAYERRESET,XXXXXXX,XXXXXXX,XXXXXXX,LAYERRESET, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+ {_______,_______,_______,LAYERRESET,XXXXXXX,XXXXXXX,XXXXXXX,LAYERQK_BOOT, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
},
[_PLOVER] = {
{KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1, KC_1 },
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{LAYERRESET, XXXXXXX, KC_C, KC_V, XXXXXXX , XXXXXXX, XXXXXXX, KC_N, KC_M, XXXXXXX, XXXXXXX, XXXXXXX}
},
[_ADJUST] = {
- {_______ , RESET, _______, _______, _______, _______, _______, _______, KC_SLCK, KC_PAUS, KC_PSCR, KC_DEL },
+ {_______ , QK_BOOT, _______, _______, _______, _______, _______, _______, KC_SLCK, KC_PAUS, KC_PSCR, KC_DEL },
{_______ , _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, _______, MACSLEEP, PLOVER, _______},
{_______ , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______},
{BACKLIT, _______, _______, LAYERRESET, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______}
diff --git a/keyboards/thevankeyboards/minivan/keymaps/smt/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/smt/keymap.c
index 371bcd4719..f21d779163 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/smt/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/smt/keymap.c
@@ -155,7 +155,7 @@ ALT_T(BACKLIT), _______ , _______ , KC_MPLY , KC_MNXT , _____
*/
[_ADJUST] = LAYOUT_arrow(
/*,--------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------.*/
- _______, RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET ,
+ _______, QK_BOOT , _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT ,
/*|--------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`-----------------|*/
_______ ,_______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______ ,
/*|---------`-------`--------`--------`--------`--------`--------`--------`--------`--------`--------`----------------|*/
diff --git a/keyboards/thevankeyboards/minivan/keymaps/tong92/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/tong92/keymap.c
index b4d5234561..efba49e1ea 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/tong92/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/tong92/keymap.c
@@ -136,7 +136,7 @@ _______,_______,_______, _______,_______, MOUSE ,XXXXXXX ,XXXXXXX,BACKLI
),
/* MOUSE
* ,--------------------------------------------------------------------------.
- * | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| | RESET |
+ * | | | |Mo_Up| | | |M_WhL|M_WhU|M_WhR| | QK_BOOT |
* |------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`-------|
* | | |Mo_Le|Mo_Do|Mo_Ri| | |M_Bt1|M_WhD|M_Bt2| | |
* |-------`-----`-----`-----`-----`-----`-----`-----`-----`-----`-----`------|
@@ -146,7 +146,7 @@ _______,_______,_______, _______,_______, MOUSE ,XXXXXXX ,XXXXXXX,BACKLI
* `--------------------------------------------------------------------------'
*/
[_MOUSE] = LAYOUT_arrow(
-XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX,XXXXXXX,KC_WH_L,KC_WH_U,KC_WH_R,XXXXXXX,RESET,
+XXXXXXX,XXXXXXX,XXXXXXX,KC_MS_U,XXXXXXX,XXXXXXX,XXXXXXX,KC_WH_L,KC_WH_U,KC_WH_R,XXXXXXX,QK_BOOT,
XXXXXXX,XXXXXXX,KC_MS_L,KC_MS_D,KC_MS_R,XXXXXXX,XXXXXXX,KC_BTN1,KC_WH_D,KC_BTN2,XXXXXXX,XXXXXXX,
XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,KC_ACL0,KC_ACL1,KC_ACL2,XXXXXXX,WINDOW,
XXXXXXX,XXXXXXX,XXXXXXX, EXT_MOUSE,EXT_MOUSE, XXXXXXX,XXXXXXX,XXXXXXX,MAC
diff --git a/keyboards/thevankeyboards/minivan/keymaps/xyverz/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/xyverz/keymap.c
index f5649573d8..cbd6aa8b3d 100644
--- a/keyboards/thevankeyboards/minivan/keymaps/xyverz/keymap.c
+++ b/keyboards/thevankeyboards/minivan/keymaps/xyverz/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT(
KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12,
- _______, RESET, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_HOME, KC_END, _______, _______, _______, _______, KC_PGUP, KC_PGDN
)
diff --git a/keyboards/thevankeyboards/roadkit/config.h b/keyboards/thevankeyboards/roadkit/config.h
index 0bbd93ad7d..6fd9df7b52 100644
--- a/keyboards/thevankeyboards/roadkit/config.h
+++ b/keyboards/thevankeyboards/roadkit/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEAE
-#define PRODUCT_ID 0x8846
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TheVan Keyboards
-#define PRODUCT Roadkit Micro
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F5, D7, B4 }
#define MATRIX_COL_PINS { F1, F4, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/thevankeyboards/roadkit/info.json b/keyboards/thevankeyboards/roadkit/info.json
index eefa2b3468..0b00063bec 100644
--- a/keyboards/thevankeyboards/roadkit/info.json
+++ b/keyboards/thevankeyboards/roadkit/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Roadkit",
+ "keyboard_name": "Roadkit Micro",
+ "manufacturer": "TheVan Keyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEAE",
+ "pid": "0x8846",
+ "device_version": "0.0.1"
+ },
"layouts": {
"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/thevankeyboards/roadkit/keymaps/flipphone/keymap.c b/keyboards/thevankeyboards/roadkit/keymaps/flipphone/keymap.c
index b00cf80f5c..a6fa5ed722 100644
--- a/keyboards/thevankeyboards/roadkit/keymaps/flipphone/keymap.c
+++ b/keyboards/thevankeyboards/roadkit/keymaps/flipphone/keymap.c
@@ -147,7 +147,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return false;
}
uint8_t layer;
- layer = biton32(layer_state);
+ layer = get_highest_layer(layer_state);
switch (keycode) {
case FPH_1 ... FPH_9:
diff --git a/keyboards/thevankeyboards/roadkit/keymaps/khord/keymap.c b/keyboards/thevankeyboards/roadkit/keymaps/khord/keymap.c
index 674f3f37ab..867ca07c7c 100644
--- a/keyboards/thevankeyboards/roadkit/keymaps/khord/keymap.c
+++ b/keyboards/thevankeyboards/roadkit/keymaps/khord/keymap.c
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----`-----`-----`-----'
*/
[_L1] = LAYOUT_ortho_4x4( /* LAYER 1 */
- RESET, XXXXXXX, XXXXXXX, KC_DEL, \
+ QK_BOOT, XXXXXXX, XXXXXXX, KC_DEL, \
KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, \
STR192, STR255, XXXXXXX, XXXXXXX, \
_______, BL_STEP, _______, XXXXXXX
diff --git a/keyboards/tkc/california/config.h b/keyboards/tkc/california/config.h
index 2945514787..3f8d4b58e7 100644
--- a/keyboards/tkc/california/config.h
+++ b/keyboards/tkc/california/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/tkc/california/info.json b/keyboards/tkc/california/info.json
index ef55e0e2e0..b673e5d30d 100644
--- a/keyboards/tkc/california/info.json
+++ b/keyboards/tkc/california/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TKC California",
+ "keyboard_name": "California",
+ "manufacturer": "TKC",
"url": "",
"maintainer": "TerryMathews",
+ "usb": {
+ "vid": "0x544B",
+ "pid": "0x0009",
+ "device_version": "0.0.1"
+ },
"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}]
diff --git a/keyboards/tkc/candybar/lefty/config.h b/keyboards/tkc/candybar/lefty/config.h
index 104ead511a..8762bdf515 100644
--- a/keyboards/tkc/candybar/lefty/config.h
+++ b/keyboards/tkc/candybar/lefty/config.h
@@ -18,13 +18,6 @@
#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
diff --git a/keyboards/tkc/candybar/lefty/info.json b/keyboards/tkc/candybar/lefty/info.json
index 553ce6d021..c902c78cee 100644
--- a/keyboards/tkc/candybar/lefty/info.json
+++ b/keyboards/tkc/candybar/lefty/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TKC Candybar",
+ "keyboard_name": "Candybar",
+ "manufacturer": "The Key Company",
"url": "",
"maintainer": "terrymathews",
+ "usb": {
+ "vid": "0x544B",
+ "pid": "0x0003",
+ "device_version": "0.0.6"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/tkc/candybar/lefty_r3/config.h b/keyboards/tkc/candybar/lefty_r3/config.h
index 9ce16dd731..ccf635a7ce 100644
--- a/keyboards/tkc/candybar/lefty_r3/config.h
+++ b/keyboards/tkc/candybar/lefty_r3/config.h
@@ -18,13 +18,6 @@
#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
diff --git a/keyboards/tkc/candybar/lefty_r3/info.json b/keyboards/tkc/candybar/lefty_r3/info.json
index 1ef3dcd54a..c902c78cee 100644
--- a/keyboards/tkc/candybar/lefty_r3/info.json
+++ b/keyboards/tkc/candybar/lefty_r3/info.json
@@ -1,9 +1,13 @@
{
- "keyboard_name": "TKC Candybar",
+ "keyboard_name": "Candybar",
+ "manufacturer": "The Key Company",
"url": "",
"maintainer": "terrymathews",
- "width": 17,
- "height": 4,
+ "usb": {
+ "vid": "0x544B",
+ "pid": "0x0003",
+ "device_version": "0.0.6"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/tkc/candybar/righty/config.h b/keyboards/tkc/candybar/righty/config.h
index dcbe840c8e..8762bdf515 100644
--- a/keyboards/tkc/candybar/righty/config.h
+++ b/keyboards/tkc/candybar/righty/config.h
@@ -18,13 +18,6 @@
#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
diff --git a/keyboards/tkc/candybar/righty/info.json b/keyboards/tkc/candybar/righty/info.json
index 8e54afb431..4dde92d27f 100644
--- a/keyboards/tkc/candybar/righty/info.json
+++ b/keyboards/tkc/candybar/righty/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TKC Candybar",
+ "keyboard_name": "Candybar",
+ "manufacturer": "The Key Company",
"url": "",
"maintainer": "terrymathews",
+ "usb": {
+ "vid": "0x544B",
+ "pid": "0x0002",
+ "device_version": "0.0.6"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/tkc/candybar/righty_r3/config.h b/keyboards/tkc/candybar/righty_r3/config.h
index 0c8604a9ac..fd922f0881 100644
--- a/keyboards/tkc/candybar/righty_r3/config.h
+++ b/keyboards/tkc/candybar/righty_r3/config.h
@@ -18,13 +18,6 @@
#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
diff --git a/keyboards/tkc/candybar/righty_r3/info.json b/keyboards/tkc/candybar/righty_r3/info.json
index 81dc4f8ec5..4dde92d27f 100644
--- a/keyboards/tkc/candybar/righty_r3/info.json
+++ b/keyboards/tkc/candybar/righty_r3/info.json
@@ -1,9 +1,13 @@
{
- "keyboard_name": "TKC Candybar",
+ "keyboard_name": "Candybar",
+ "manufacturer": "The Key Company",
"url": "",
"maintainer": "terrymathews",
- "width": 17,
- "height": 4,
+ "usb": {
+ "vid": "0x544B",
+ "pid": "0x0002",
+ "device_version": "0.0.6"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/tkc/godspeed75/config.h b/keyboards/tkc/godspeed75/config.h
index edda02ea79..f2c124b7fe 100644
--- a/keyboards/tkc/godspeed75/config.h
+++ b/keyboards/tkc/godspeed75/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x544B //TK
-#define PRODUCT_ID 0x0006 //GodSpeed75
-#define DEVICE_VER 0x0001
-#define MANUFACTURER The Key Company
-#define PRODUCT GodSpeed75
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 8
diff --git a/keyboards/tkc/godspeed75/info.json b/keyboards/tkc/godspeed75/info.json
index 8a4415e903..6cffc225ac 100644
--- a/keyboards/tkc/godspeed75/info.json
+++ b/keyboards/tkc/godspeed75/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TKC GodSpeed75",
+ "keyboard_name": "GodSpeed75",
+ "manufacturer": "The Key Company",
"url": "",
"maintainer": "terrymathews",
+ "usb": {
+ "vid": "0x544B",
+ "pid": "0x0006",
+ "device_version": "0.0.1"
+ },
"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":"PrtSc", "x":13, "y":0}, {"label":"Scroll Lock", "x":14, "y":0}, {"label":"Pause", "x":15, "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}, {"x":13, "y":1}, {"label":"BkSp", "x":14, "y":1}, {"label":"PgUp", "x":15, "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":"PgDn", "x":15, "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":"Insert", "x":15, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"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":"\u2191", "x":14, "y":4}, {"label":"Delete", "x":15, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.5}, {"label":"Alt", "x":2.25, "y":5, "w":1.25}, {"x":3.5, "y":5, "w":6.25}, {"label":"MO(1)", "x":9.75, "y":5, "w":1.25}, {"label":"Ctrl", "x":11, "y":5, "w":1.25}, {"label":"\u2190", "x":13, "y":5}, {"label":"\u2193", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}]
diff --git a/keyboards/tkc/m0lly/config.h b/keyboards/tkc/m0lly/config.h
index 377499ba72..b8a60d8693 100644
--- a/keyboards/tkc/m0lly/config.h
+++ b/keyboards/tkc/m0lly/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x544B // "TK"
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER The Key Company
-#define PRODUCT M0lly
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 19
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F2, F1, F0, E1, E0 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, C1, C0, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tkc/m0lly/info.json b/keyboards/tkc/m0lly/info.json
index fab1f500d0..4383bc04dd 100644
--- a/keyboards/tkc/m0lly/info.json
+++ b/keyboards/tkc/m0lly/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TKC M0LLY",
+ "keyboard_name": "M0lly",
+ "manufacturer": "The Key Company",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x544B",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/tkc/osav2/config.h b/keyboards/tkc/osav2/config.h
index 370e7b7b5b..199954527b 100644
--- a/keyboards/tkc/osav2/config.h
+++ b/keyboards/tkc/osav2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x544B //TK
-#define PRODUCT_ID 0x0005 //Alice
-#define DEVICE_VER 0x0001
-#define MANUFACTURER The Key Company
-#define PRODUCT OSA v2
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6, B0, B1, B2, B3, B7 }
#define MATRIX_COL_PINS { B4, D7, D5, D3, D2, D0, D1, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tkc/osav2/info.json b/keyboards/tkc/osav2/info.json
index 21c45805ce..b5fea85c99 100644
--- a/keyboards/tkc/osav2/info.json
+++ b/keyboards/tkc/osav2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TKC OSA v2",
+ "keyboard_name": "OSA v2",
+ "manufacturer": "The Key Company",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x544B",
+ "pid": "0x0005",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default_ansi": {
"layout": [{"label":"Esc", "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":"Backspace", "x":16.25, "y":0, "w":2}, {"label":"Page Up", "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":"|", "x":16.75, "y":1, "w":1.5}, {"label":"Page Down", "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":2.75}, {"label":"Ctrl", "x":1.25, "y":4, "w":1.5}, {"label":"Win", "x":4.25, "y":4, "w":1.5}, {"x":5.75, "y":4, "w":2.25}, {"label":"Fn", "x":8, "y":4}, {"x":9.5, "y":4, "w":2.75}, {"label":"Alt", "x":12.25, "y":4, "w":1.5}, {"label":"Ctrl", "x":16.75, "y":4, "w":1.5}]
diff --git a/keyboards/tkc/osav2/keymaps/brandonschlack/keymap.c b/keyboards/tkc/osav2/keymaps/brandonschlack/keymap.c
index 5e3debd8d3..cdb06d7bc5 100755
--- a/keyboards/tkc/osav2/keymaps/brandonschlack/keymap.c
+++ b/keyboards/tkc/osav2/keymaps/brandonschlack/keymap.c
@@ -197,7 +197,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
TG_BASE, QM_MAKE, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
TG_REDR, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
TG_MAIL, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RGB_LYR, RGB_THM, _______, EEP_RST, RESET, RESET, _______, _______, _______, _______, _______, _______, _______, \
+ _______, RGB_LYR, RGB_THM, _______, EEP_RST, QK_BOOT, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______ \
)
diff --git a/keyboards/tkc/osav2/keymaps/stanrc85/keymap.c b/keyboards/tkc/osav2/keymaps/stanrc85/keymap.c
index 0dfd0d54af..ce45cd436f 100644
--- a/keyboards/tkc/osav2/keymaps/stanrc85/keymap.c
+++ b/keyboards/tkc/osav2/keymaps/stanrc85/keymap.c
@@ -50,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN2_60] = LAYOUT_all(
BL_TOGG, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______,
- BL_INC, VLK_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ BL_INC, VLK_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, TG(_DEFAULT)
diff --git a/keyboards/tkc/portico/config.h b/keyboards/tkc/portico/config.h
index be042050f5..0a52f2e3af 100644
--- a/keyboards/tkc/portico/config.h
+++ b/keyboards/tkc/portico/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x544B //TK
-#define PRODUCT_ID 0x0008
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TKC
-#define PRODUCT Portico
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/tkc/portico/info.json b/keyboards/tkc/portico/info.json
index b2ff8054c7..d87ebe56b7 100644
--- a/keyboards/tkc/portico/info.json
+++ b/keyboards/tkc/portico/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TKC Portico",
+ "keyboard_name": "Portico",
+ "manufacturer": "TKC",
"url": "",
"maintainer": "TerryMathews",
+ "usb": {
+ "vid": "0x544B",
+ "pid": "0x0008",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_all": "LAYOUT_65_ansi_blocker"
},
diff --git a/keyboards/tkc/portico68v2/config.h b/keyboards/tkc/portico68v2/config.h
index dea6180958..5cfdf43c3d 100644
--- a/keyboards/tkc/portico68v2/config.h
+++ b/keyboards/tkc/portico68v2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x544B //TK
-#define PRODUCT_ID 0x0012 //Portico68v2
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TKC
-#define PRODUCT Portico68v2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/tkc/portico68v2/info.json b/keyboards/tkc/portico68v2/info.json
index d3ea7cb264..c75fb31679 100644
--- a/keyboards/tkc/portico68v2/info.json
+++ b/keyboards/tkc/portico68v2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TKC Portico68 v2",
+ "keyboard_name": "Portico68 v2",
+ "manufacturer": "TKC",
"url": "",
"maintainer": "TerryMathews",
+ "usb": {
+ "vid": "0x544B",
+ "pid": "0x0012",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker": {
"layout": [
diff --git a/keyboards/tkc/portico75/config.h b/keyboards/tkc/portico75/config.h
index bbafc0d309..63a9ee4958 100644
--- a/keyboards/tkc/portico75/config.h
+++ b/keyboards/tkc/portico75/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/tkc/portico75/info.json b/keyboards/tkc/portico75/info.json
index 5aaf21ffcc..ba2db69969 100644
--- a/keyboards/tkc/portico75/info.json
+++ b/keyboards/tkc/portico75/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TKC Portico75",
+ "keyboard_name": "Portico75",
+ "manufacturer": "TKC",
"url": "",
"maintainer": "TerryMathews",
+ "usb": {
+ "vid": "0x544B",
+ "pid": "0x0011",
+ "device_version": "0.0.1"
+ },
"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/tkc1800/config.h b/keyboards/tkc/tkc1800/config.h
index 5bf93542c2..d88d390b8f 100644
--- a/keyboards/tkc/tkc1800/config.h
+++ b/keyboards/tkc/tkc1800/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x544B // "TK"
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0003
-#define MANUFACTURER The Key Company
-#define PRODUCT TKC1800
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 19
@@ -37,7 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Column pin configuration
*/
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, C1, C0, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tkc/tkc1800/info.json b/keyboards/tkc/tkc1800/info.json
index deac3447f1..4d1de2e2f1 100644
--- a/keyboards/tkc/tkc1800/info.json
+++ b/keyboards/tkc/tkc1800/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "TKC1800",
+ "manufacturer": "The Key Company",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x544B",
+ "pid": "0x0001",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/tkc/tkc1800/keymaps/smt/keymap.c b/keyboards/tkc/tkc1800/keymaps/smt/keymap.c
index 9eceaa5bda..6d90018fe8 100644
--- a/keyboards/tkc/tkc1800/keymaps/smt/keymap.c
+++ b/keyboards/tkc/tkc1800/keymaps/smt/keymap.c
@@ -112,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[FUNCTION] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, KC_PSCR, \
KC_DEL, KC_END, KC_PGDN, KC_SLCK, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS, \
_______, _______, _______, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PMNS, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, KC_P4, KC_P5, KC_P6, KC_PPLS, \
_______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_STEP, _______, _______, KC_UP, KC_P1, KC_P2, KC_P3, XXXXXXX, \
diff --git a/keyboards/tkc/tkc1800/keymaps/yanfali/keymap.c b/keyboards/tkc/tkc1800/keymaps/yanfali/keymap.c
index 2ebfe33c3d..ec657be274 100644
--- a/keyboards/tkc/tkc1800/keymaps/yanfali/keymap.c
+++ b/keyboards/tkc/tkc1800/keymaps/yanfali/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[FUNCTION] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, XXXXXXX, _______, _______, _______, _______, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, XXXXXXX, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______, _______, _______, _______, _______, \
_______, XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, \
diff --git a/keyboards/tkc/tkl_ab87/config.h b/keyboards/tkc/tkl_ab87/config.h
index 5ab7b94692..5d34276336 100644
--- a/keyboards/tkc/tkl_ab87/config.h
+++ b/keyboards/tkc/tkl_ab87/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x544B //TK
-#define PRODUCT_ID 0x0007
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TKC
-#define PRODUCT TKL A/B87
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B1, F5, F7, B0, B2, B3 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, E6, F6, F4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tkc/tkl_ab87/info.json b/keyboards/tkc/tkl_ab87/info.json
index 02142bd755..d7b6b8f070 100644
--- a/keyboards/tkc/tkl_ab87/info.json
+++ b/keyboards/tkc/tkl_ab87/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "TKC TKL A/B87",
+ "keyboard_name": "TKL A/B87",
+ "manufacturer": "TKC",
"url": "",
"maintainer": "TerryMathews",
+ "usb": {
+ "vid": "0x544B",
+ "pid": "0x0007",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/tkw/grandiceps/config.h b/keyboards/tkw/grandiceps/config.h
index b2b6008240..76a3de1bab 100644
--- a/keyboards/tkw/grandiceps/config.h
+++ b/keyboards/tkw/grandiceps/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x7812
-#define DEVICE_VER 0x0001
-#define MANUFACTURER tkw
-#define PRODUCT Grandiceps Split
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 6
diff --git a/keyboards/tkw/grandiceps/info.json b/keyboards/tkw/grandiceps/info.json
index 7a4324ffdc..dc4cf5a0ee 100644
--- a/keyboards/tkw/grandiceps/info.json
+++ b/keyboards/tkw/grandiceps/info.json
@@ -1,8 +1,11 @@
{
- "keyboard_name": "grandiceps",
+ "manufacturer": "tkw",
"url": "https://github.com/vattern/grandiceps",
"maintainer": "vattern",
- "manufacturer": "tkw",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x7812"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/tkw/grandiceps/readme.md b/keyboards/tkw/grandiceps/readme.md
index 57a6dac28d..899d0b462d 100644
--- a/keyboards/tkw/grandiceps/readme.md
+++ b/keyboards/tkw/grandiceps/readme.md
@@ -30,4 +30,4 @@ 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 buttons**: Hold down the BOOT0 button and then briefly press the NRST button on the BlackPill PCB.
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/tkw/grandiceps/rev1/info.json b/keyboards/tkw/grandiceps/rev1/info.json
new file mode 100644
index 0000000000..34d2a94743
--- /dev/null
+++ b/keyboards/tkw/grandiceps/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Grandiceps Split",
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/tkw/grandiceps/rev1/rules.mk b/keyboards/tkw/grandiceps/rev1/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/tkw/grandiceps/rev1/rules.mk
diff --git a/keyboards/tkw/grandiceps/rev2/config.h b/keyboards/tkw/grandiceps/rev2/config.h
index 98b762087e..5810fe75bc 100644
--- a/keyboards/tkw/grandiceps/rev2/config.h
+++ b/keyboards/tkw/grandiceps/rev2/config.h
@@ -15,10 +15,5 @@
*/
#pragma once
-#undef DEVICE_VER
-#define DEVICE_VER 0x0002
-#undef PRODUCT
-#define PRODUCT Grandiceps Split rev2
-
#define SPLIT_HAND_PIN B3
#define EEPROM_I2C_24LC64
diff --git a/keyboards/tkw/grandiceps/rev2/info.json b/keyboards/tkw/grandiceps/rev2/info.json
new file mode 100644
index 0000000000..786f381c4f
--- /dev/null
+++ b/keyboards/tkw/grandiceps/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Grandiceps Split rev2",
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/tkw/grandiceps/rules.mk b/keyboards/tkw/grandiceps/rules.mk
index f408feb059..2220b16252 100644
--- a/keyboards/tkw/grandiceps/rules.mk
+++ b/keyboards/tkw/grandiceps/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
@@ -25,3 +26,5 @@ OLED_ENABLE = yes
OLED_DRIVER = SSD1306
WS2812_DRIVER = pwm
OPT_DEFS += -DSTM32_DMA_REQUIRED=TRUE
+
+DEFAULT_FOLDER = tkw/grandiceps/rev1
diff --git a/keyboards/tkw/stoutgat/v1/config.h b/keyboards/tkw/stoutgat/v1/config.h
index 96471e443d..787c927039 100644
--- a/keyboards/tkw/stoutgat/v1/config.h
+++ b/keyboards/tkw/stoutgat/v1/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x7811
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TKW
-#define PRODUCT stoutgat
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -34,6 +28,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENCODERS_PAD_A { B4, B0 }
#define ENCODERS_PAD_B { B3, B1 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tkw/stoutgat/v1/info.json b/keyboards/tkw/stoutgat/v1/info.json
index d649a48b5b..22be9b3ae2 100644
--- a/keyboards/tkw/stoutgat/v1/info.json
+++ b/keyboards/tkw/stoutgat/v1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "stoutgat",
+ "manufacturer": "TKW",
"url": "https://github.com/vattern/stoutgat",
"maintainer": "vattern",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x7811",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_encoder": {
"layout": [
diff --git a/keyboards/tkw/stoutgat/v2/config.h b/keyboards/tkw/stoutgat/v2/config.h
index 73b3eef90b..989cc1a76e 100644
--- a/keyboards/tkw/stoutgat/v2/config.h
+++ b/keyboards/tkw/stoutgat/v2/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x7811
-#define DEVICE_VER 0x0002
-#define MANUFACTURER TKW
-#define PRODUCT Stoutgat v2 65%
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/tkw/stoutgat/v2/f411/rules.mk b/keyboards/tkw/stoutgat/v2/f411/rules.mk
index b32a8b7f5b..c25a64f4b3 100644
--- a/keyboards/tkw/stoutgat/v2/f411/rules.mk
+++ b/keyboards/tkw/stoutgat/v2/f411/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/tkw/stoutgat/v2/info.json b/keyboards/tkw/stoutgat/v2/info.json
index 6946e3e0bc..bafe4d6fc1 100644
--- a/keyboards/tkw/stoutgat/v2/info.json
+++ b/keyboards/tkw/stoutgat/v2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "stoutgat/v2",
+ "keyboard_name": "Stoutgat v2 65%",
+ "manufacturer": "TKW",
"url": "https://github.com/vattern/stoutgatv2",
"maintainer": "vattern",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x7811",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_encoder": {
"layout": [
diff --git a/keyboards/tmo50/config.h b/keyboards/tmo50/config.h
index f3640197ae..115a652ac8 100644
--- a/keyboards/tmo50/config.h
+++ b/keyboards/tmo50/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFBFB
-#define PRODUCT_ID 0x0050
-#define DEVICE_VER 0x0001
-#define MANUFACTURER funderburker
-#define PRODUCT TMO50
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D5, D3, D2, D0 }
#define MATRIX_COL_PINS { D1, D4, F0, F1, F4, F5, F6, F7, D6, D7, B4, B5, B6, C6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tmo50/info.json b/keyboards/tmo50/info.json
index c51636fb5e..04e2d5bdc1 100644
--- a/keyboards/tmo50/info.json
+++ b/keyboards/tmo50/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "TMO50",
+ "manufacturer": "funderburker",
"url": "",
"maintainer": "funderburker",
+ "usb": {
+ "vid": "0xFBFB",
+ "pid": "0x0050",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"", "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":8.25, "y":0}, {"label":"", "x":9.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}, {"x":0, "y":1}, {"label":"Ctrl", "x":1.25, "y":1, "w":1.25}, {"label":"", "x":2.5, "y":1}, {"label":"", "x":3.5, "y":1}, {"label":"", "x":4.5, "y":1}, {"label":"", "x":5.5, "y":1}, {"label":"", "x":6.5, "y":1}, {"label":"", "x":7.5, "y":1}, {"label":"", "x":8.5, "y":1}, {"label":"", "x":9.5, "y":1}, {"label":"", "x":10.5, "y":1}, {"label":"", "x":11.5, "y":1}, {"label":"", "x":12.5, "y":1}, {"label":"Enter", "x":13.5, "y":1, "w":1.75}, {"x":0, "y":2}, {"label":"Shift", "x":1.25, "y":2, "w":1.75}, {"label":"", "x":3, "y":2}, {"label":"", "x":4, "y":2}, {"label":"", "x":5, "y":2}, {"label":"", "x":6, "y":2}, {"label":"b", "x":7, "y":2}, {"label":"", "x":8, "y":2}, {"label":"m", "x":9, "y":2}, {"label":"", "x":10, "y":2}, {"label":"", "x":11, "y":2}, {"label":"", "x":12, "y":2}, {"label":"Shift", "x":13, "y":2, "w":1.25}, {"label":"", "x":14.25, "y":2}, {"x":0, "y":3}, {"label":"Alt", "x":2.75, "y":3}, {"label":"Win", "x":3.75, "y":3, "w":1.5}, {"label":"", "x":5.25, "y":3, "w":2.25}, {"label":"", "x":7.5, "y":3, "w":2.75}, {"label":"AltGr", "x":10.25, "y":3, "w":1.5}, {"label":"L3", "x":11.75, "y":3}]
diff --git a/keyboards/tmo50/keymaps/olivia/keymap.c b/keyboards/tmo50/keymaps/olivia/keymap.c
index c1e86f9b90..897ab54a2b 100644
--- a/keyboards/tmo50/keymaps/olivia/keymap.c
+++ b/keyboards/tmo50/keymaps/olivia/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Fn3 layer
[3] = 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,
+ QK_BOOT, KC_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_CAPS, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, BL_TOGG, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, BL_STEP, 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_TRNS, KC_TRNS
diff --git a/keyboards/tmo50/keymaps/ottodokto/keymap.c b/keyboards/tmo50/keymaps/ottodokto/keymap.c
index 688395c9d9..a14c9541de 100644
--- a/keyboards/tmo50/keymaps/ottodokto/keymap.c
+++ b/keyboards/tmo50/keymaps/ottodokto/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
// RGB Control Layer
[3] = LAYOUT_all(
- RGB_SPI, RGB_TOG, RGB_HUD, RGB_VAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ RGB_SPI, RGB_TOG, RGB_HUD, RGB_VAI, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
RGB_SPD, _______, RGB_SAD, RGB_VAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, RGB_STA, RGB_BRE, RGB_RAI, RGB_SWI, RGB_SNA, RGB_KNI, RGB_GRA, VLK_TOG, _______, _______, _______, EEP_RST,
_______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/tmo50/keymaps/pyrol/keymap.c b/keyboards/tmo50/keymaps/pyrol/keymap.c
index f67d26092f..53534f56e3 100644
--- a/keyboards/tmo50/keymaps/pyrol/keymap.c
+++ b/keyboards/tmo50/keymaps/pyrol/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Fn4 layer
[4] = LAYOUT_all(
- RESET, 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,
+ QK_BOOT, 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_CAPS, RGB_TOG, 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, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
diff --git a/keyboards/tmo50/keymaps/xerpocalypse/keymap.c b/keyboards/tmo50/keymaps/xerpocalypse/keymap.c
index ca93f9aa88..50abdcd00b 100644
--- a/keyboards/tmo50/keymaps/xerpocalypse/keymap.c
+++ b/keyboards/tmo50/keymaps/xerpocalypse/keymap.c
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Fn3 layer
[3] = 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,
+ QK_BOOT, KC_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_CAPS, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, BL_TOGG, BL_INC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, BL_STEP, 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_TRNS, KC_TRNS
diff --git a/keyboards/toad/config.h b/keyboards/toad/config.h
index 793e740fa3..98669c3d99 100644
--- a/keyboards/toad/config.h
+++ b/keyboards/toad/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6776
-#define DEVICE_VER 0x0001
-#define MANUFACTURER farmakon
-#define PRODUCT "TOAD"
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 14
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, F6, F5, F4, F1, F0 }
#define MATRIX_COL_PINS { B3, B2, B1, E6, B7, C7, C6, D4, D6, D7, B4, D0, D1, F7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/toad/info.json b/keyboards/toad/info.json
index 5ef32af5c7..34b7b9d6eb 100644
--- a/keyboards/toad/info.json
+++ b/keyboards/toad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Toad",
+ "manufacturer": "farmakon",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6776",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/tokyokeyboard/alix40/config.h b/keyboards/tokyokeyboard/alix40/config.h
index f4b4e6e5ab..9557f130c9 100644
--- a/keyboards/tokyokeyboard/alix40/config.h
+++ b/keyboards/tokyokeyboard/alix40/config.h
@@ -16,13 +16,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5143 // QC
-#define PRODUCT_ID 0x4134 // A4
-#define DEVICE_VER 0x0001
-#define MANUFACTURER quadcube
-#define PRODUCT alix40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { D7, C6, C7, B5 }
#define MATRIX_COL_PINS { F7, F6, F5, F4, F1, F0, D0, D1, D2, D3, D5, D6 }
-#define UNUSED_PINS
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
diff --git a/keyboards/tokyokeyboard/alix40/info.json b/keyboards/tokyokeyboard/alix40/info.json
index 66a578bef3..220e238128 100644
--- a/keyboards/tokyokeyboard/alix40/info.json
+++ b/keyboards/tokyokeyboard/alix40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "alix40",
+ "manufacturer": "quadcube",
"url": "https://tokyokeyboard.com/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5143",
+ "pid": "0x4134",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_40_alix": {
"layout": [{
diff --git a/keyboards/tokyokeyboard/tokyo60/config.h b/keyboards/tokyokeyboard/tokyo60/config.h
index 03dee74e9b..ab36ab7354 100644
--- a/keyboards/tokyokeyboard/tokyo60/config.h
+++ b/keyboards/tokyokeyboard/tokyo60/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5436 // "T6"
-#define PRODUCT_ID 0x6060 // Tokyo60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Tokyo Keyboard
-#define PRODUCT Tokyo60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -31,7 +24,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B2, B5, B4, D7, D6, B3 }
-#define UNUSED_PINS
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
diff --git a/keyboards/tokyokeyboard/tokyo60/info.json b/keyboards/tokyokeyboard/tokyo60/info.json
index 3f6b120c17..b6422e68c7 100644
--- a/keyboards/tokyokeyboard/tokyo60/info.json
+++ b/keyboards/tokyokeyboard/tokyo60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Tokyo60",
+ "manufacturer": "Tokyo Keyboard",
"url": "https://tokyokeyboard.com/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5436",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_hhkb": {
"layout": [{
diff --git a/keyboards/tominabox1/adalyn/config.h b/keyboards/tominabox1/adalyn/config.h
index c34337f245..136a8ae6df 100644
--- a/keyboards/tominabox1/adalyn/config.h
+++ b/keyboards/tominabox1/adalyn/config.h
@@ -17,13 +17,6 @@
#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
@@ -40,7 +33,6 @@
*/
#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
diff --git a/keyboards/tominabox1/adalyn/info.json b/keyboards/tominabox1/adalyn/info.json
index b8cc6640af..4fe658d5a3 100644
--- a/keyboards/tominabox1/adalyn/info.json
+++ b/keyboards/tominabox1/adalyn/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "adalyn",
+ "keyboard_name": "Adalyn",
+ "manufacturer": "tominabox1",
"url": "https://github.com/MarvFPV/Adalyn",
"maintainer": "tominabox1",
+ "usb": {
+ "vid": "0x7431",
+ "pid": "0x6164",
+ "device_version": "0.0.1"
+ },
"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/tominabox1/adalyn/readme.md b/keyboards/tominabox1/adalyn/readme.md
index d6292b5cad..ee4d59bcfa 100644
--- a/keyboards/tominabox1/adalyn/readme.md
+++ b/keyboards/tominabox1/adalyn/readme.md
@@ -16,4 +16,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/tominabox1/bigboy/bigboy.c b/keyboards/tominabox1/bigboy/bigboy.c
new file mode 100755
index 0000000000..3cb1ec442d
--- /dev/null
+++ b/keyboards/tominabox1/bigboy/bigboy.c
@@ -0,0 +1,31 @@
+/* Copyright 2022 tominabox1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "bigboy.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 /* ENCODER_ENABLE */
diff --git a/keyboards/tominabox1/bigboy/bigboy.h b/keyboards/tominabox1/bigboy/bigboy.h
new file mode 100755
index 0000000000..ef3b4a44f9
--- /dev/null
+++ b/keyboards/tominabox1/bigboy/bigboy.h
@@ -0,0 +1,34 @@
+/* Copyright 2022 tominabox1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, \
+ K10, K11, K12 \
+) { \
+ { K00, K01, K02, }, \
+ { K10, K11, K12 }, \
+}
+
+#define LAYOUT_2us( \
+ K00, K01, K02 \
+) { \
+ { K00, K01, K02 }, \
+}
diff --git a/keyboards/tominabox1/bigboy/config.h b/keyboards/tominabox1/bigboy/config.h
new file mode 100755
index 0000000000..9e95f1f5c7
--- /dev/null
+++ b/keyboards/tominabox1/bigboy/config.h
@@ -0,0 +1,52 @@
+/* Copyright 2022 tominabox1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 DIRECT_PINS { \
+ { D0, B1, B0 }, \
+ { B7, B2, B3 } \
+}
+
+
+#define ENCODERS_PAD_A { C6 }
+#define ENCODERS_PAD_B { B6 }
+#define ENCODER_RESOLUTION 2
+
+#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_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 /* RGB_DI_PIN */
diff --git a/keyboards/tominabox1/bigboy/info.json b/keyboards/tominabox1/bigboy/info.json
new file mode 100644
index 0000000000..4c18c89555
--- /dev/null
+++ b/keyboards/tominabox1/bigboy/info.json
@@ -0,0 +1,19 @@
+{
+ "keyboard_name": "BigBoy",
+ "manufacturer": "tominabox1",
+ "url": "",
+ "maintainer": "tominabox1",
+ "usb": {
+ "vid": "0x7431",
+ "pid": "0x6262",
+ "device_version": "0.0.1"
+ },
+ "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":"1,0", "x":0, "y":1}, {"label":"1,1", "x":1, "y":1}, {"label":"1,2", "x":2, "y":1}]
+ },
+ "LAYOUT_2us": {
+ "layout": [{"label":"0,0", "x":0, "y":0, "h":2}, {"label":"0,1", "x":1, "y":0, "h":2}, {"label":"0,2", "x":2, "y":0, "h":2}]
+ }
+ }
+}
diff --git a/keyboards/tominabox1/bigboy/keymaps/default/keymap.c b/keyboards/tominabox1/bigboy/keymaps/default/keymap.c
new file mode 100755
index 0000000000..dfb4030e68
--- /dev/null
+++ b/keyboards/tominabox1/bigboy/keymaps/default/keymap.c
@@ -0,0 +1,34 @@
+/* Copyright 2022 tominabox1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_SPC LT(1, KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT(
+ KC_1, KC_2, KC_3,
+ KC_4, KC_5, MO(1)
+ ),
+ [1] = LAYOUT(
+ QK_BOOT, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO
+ ),
+ [2] = LAYOUT(
+ KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO
+ ),
+};
diff --git a/keyboards/tominabox1/bigboy/keymaps/default_2u/keymap.c b/keyboards/tominabox1/bigboy/keymaps/default_2u/keymap.c
new file mode 100755
index 0000000000..7ad83d3d6f
--- /dev/null
+++ b/keyboards/tominabox1/bigboy/keymaps/default_2u/keymap.c
@@ -0,0 +1,31 @@
+/* Copyright 2022 tominabox1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_SPC LT(1, KC_SPC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_2us(
+ KC_1, KC_2, MO(1)
+ ),
+ [1] = LAYOUT_2us(
+ QK_BOOT, KC_NO, KC_NO
+ ),
+ [2] = LAYOUT_2us(
+ KC_NO, KC_NO, KC_NO
+ ),
+};
diff --git a/keyboards/tominabox1/bigboy/readme.md b/keyboards/tominabox1/bigboy/readme.md
new file mode 100755
index 0000000000..c76065637c
--- /dev/null
+++ b/keyboards/tominabox1/bigboy/readme.md
@@ -0,0 +1,20 @@
+# BigBoy
+
+A macropad designed by dingusxmcgee_ and tominabox1.
+
+![bigboy](https://i.imgur.com/oqxx6sEh.jpg)
+
+* Keyboard Maintainer: [tominabox1](https://github.com/tominabox1)
+* Hardware Supported: BigBoy
+
+Make example for this keyboard (after setting up your build environment):
+
+ make bigboy:default
+
+Flashing example for this keyboard:
+
+ make bigboy:default:flash
+
+**Reset Key:** To enter the bootloader, either push the RESET button on the PCB, hold the top left key when plugging in, or the a programmed button on 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/tominabox1/bigboy/rules.mk b/keyboards/tominabox1/bigboy/rules.mk
new file mode 100755
index 0000000000..a31774530d
--- /dev/null
+++ b/keyboards/tominabox1/bigboy/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/tominabox1/le_chiffre/config.h b/keyboards/tominabox1/le_chiffre/config.h
index b2e4c673a4..e5715bdbce 100644
--- a/keyboards/tominabox1/le_chiffre/config.h
+++ b/keyboards/tominabox1/le_chiffre/config.h
@@ -17,30 +17,10 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7431
-#define PRODUCT_ID 0xD645
-#define DEVICE_VER 0x0001
-#define MANUFACTURER tominabox1
-#define PRODUCT Le Chiffre
-
/* 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 { B3, D4, F1, C6 }
-#define MATRIX_COL_PINS { F4, F5, B0, B2, B1, B4, D7, C7, D2, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
@@ -53,14 +33,10 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-/* Define encoder pads */
-#define ENCODERS_PAD_A { D5 }
-#define ENCODERS_PAD_B { D3 }
-
/*
* WS2812 Underglow Matrix options
*/
-#define RGB_DI_PIN F0
+
#define RGBLED_NUM 11
#define DRIVER_LED_TOTAL RGBLED_NUM
@@ -76,53 +52,4 @@
#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
diff --git a/keyboards/tominabox1/le_chiffre/he/config.h b/keyboards/tominabox1/le_chiffre/he/config.h
new file mode 100644
index 0000000000..b0b471ac08
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/he/config.h
@@ -0,0 +1,34 @@
+/* Copyright 2022 tominabox1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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"
+
+/* COL2ROW, ROW2COL*/
+#undef DIODE_DIRECTION
+#define DIODE_DIRECTION COL2ROW
+
+#define MATRIX_ROW_PINS { B3, D4, F1, C6 }
+#define MATRIX_COL_PINS { F4, F5, B0, B2, B1, B4, D7, C7, D2, F7 }
+
+/* Define encoder pads */
+#define ENCODERS_PAD_A { D5 }
+#define ENCODERS_PAD_B { D3 }
+
+/*
+ * WS2812 Underglow Matrix options
+ */
+#define RGB_DI_PIN F0
diff --git a/keyboards/tominabox1/le_chiffre/he/he.c b/keyboards/tominabox1/le_chiffre/he/he.c
new file mode 100644
index 0000000000..0e07cc7111
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/he/he.c
@@ -0,0 +1,33 @@
+/* Copyright 2022 tominabox1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "he.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { 3, 4, NO_LED, 5, 6 },
+ { NO_LED, NO_LED, 10, NO_LED, NO_LED },
+ { NO_LED, NO_LED, 9, NO_LED, NO_LED },
+ { 2, 1, 0, 8, 7 }
+}, {
+
+ // LED Index to Physical Position
+ { 128, 64 }, { 77, 64 }, { 0, 48 }, { 0, 0 }, { 115, 0 }, { 166, 0 }, { 255, 0 }, { 255, 48 }, { 178, 64 }, { 128, 40 }, { 128, 30 }
+}, {
+
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
+} };
+#endif
diff --git a/keyboards/tominabox1/le_chiffre/he/he.h b/keyboards/tominabox1/le_chiffre/he/he.h
new file mode 100644
index 0000000000..fc14242dd9
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/he/he.h
@@ -0,0 +1,33 @@
+/* Copyright 2022 tominabox1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, K38, 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, \
+ K32, K34, K35, K37 \
+) \
+{ \
+ { 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 }, \
+ { XXX, XXX, K32, XXX, K34, K35, XXX, K37, K38, XXX } \
+}
diff --git a/keyboards/tominabox1/le_chiffre/he/info.json b/keyboards/tominabox1/le_chiffre/he/info.json
new file mode 100644
index 0000000000..b377cdff00
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/he/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/tominabox1/le_chiffre/he/readme.md b/keyboards/tominabox1/le_chiffre/he/readme.md
new file mode 100644
index 0000000000..eb0904a2ff
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/he/readme.md
@@ -0,0 +1 @@
+The HE firmware is for the Hotswap Edition (HE) PCB by @nasp, available at checkerboards.xyz.
diff --git a/keyboards/tominabox1/le_chiffre/he/rules.mk b/keyboards/tominabox1/le_chiffre/he/rules.mk
new file mode 100644
index 0000000000..7054ebf63b
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/he/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
+LTO_ENABLE = yes
diff --git a/keyboards/tominabox1/le_chiffre/info.json b/keyboards/tominabox1/le_chiffre/info.json
index afcbc752a5..6a7e10fad7 100644
--- a/keyboards/tominabox1/le_chiffre/info.json
+++ b/keyboards/tominabox1/le_chiffre/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "le_chiffre",
+ "keyboard_name": "Le Chiffre",
+ "manufacturer": "tominabox1",
"url": "",
"maintainer": "tominabox1",
+ "usb": {
+ "vid": "0x7431",
+ "pid": "0xD645"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Rotary", "x":5, "y":0, "w":1}, {"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},
diff --git a/keyboards/tominabox1/le_chiffre/keymaps/via/keymap.c b/keyboards/tominabox1/le_chiffre/keymaps/via/keymap.c
index 10a2fb0d4a..c626cba1cc 100644
--- a/keyboards/tominabox1/le_chiffre/keymaps/via/keymap.c
+++ b/keyboards/tominabox1/le_chiffre/keymaps/via/keymap.c
@@ -144,13 +144,14 @@ void render_mod_status(uint8_t modifiers) {
oled_write_ln_P(PSTR("GUI"), (modifiers & MOD_MASK_GUI));
}
-bool oled_task_user(void) {
+void oled_task_keymap(void) {
render_lechiffre_logo();
oled_set_cursor(0,3);
// render_layer_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
render_mod_status(get_mods()|get_oneshot_mods());
render_keylock_status(host_keyboard_led_state());
render_keylogger_status();
+
return false;
}
diff --git a/keyboards/tominabox1/le_chiffre/le_chiffre.c b/keyboards/tominabox1/le_chiffre/le_chiffre.c
deleted file mode 100644
index 8eca292cce..0000000000
--- a/keyboards/tominabox1/le_chiffre/le_chiffre.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright 2020 tominabox1
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "le_chiffre.h"
-
-#ifdef RGB_MATRIX_ENABLE
-led_config_t g_led_config = { {
- // Key Matrix to LED Index
- { 3, 4, NO_LED, 5, 6 },
- { NO_LED, NO_LED, 10, NO_LED, NO_LED },
- { NO_LED, NO_LED, 9, NO_LED, NO_LED },
- { 2, 1, 0, 8, 7 }
-}, {
-
- // LED Index to Physical Position
- { 128, 64 }, { 77, 64 }, { 0, 48 }, { 0, 0 }, { 115, 0 }, { 166, 0 }, { 255, 0 }, { 255, 48 }, { 178, 64 }, { 128, 40 }, { 128, 30 }
-}, {
-
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
-} };
-#endif
diff --git a/keyboards/tominabox1/le_chiffre/readme.md b/keyboards/tominabox1/le_chiffre/readme.md
index ea18546c61..9ac3d6c81c 100644
--- a/keyboards/tominabox1/le_chiffre/readme.md
+++ b/keyboards/tominabox1/le_chiffre/readme.md
@@ -2,14 +2,20 @@
![Le Chiffre](https://i.imgur.com/X1WsUmdl.png)
-Le Chiffre (ironically, "the number" in French is a 30% keyboard designed by tominabox1. The purpose of the board is to provide a platform for MX and Choc ergo in one package for when ones wrists need a break. The board supports an RGB LED strip with DI on port F0. The board is also fitted with support for run-of-the-mill .91" OLED and EC11 rotary encoder.
+Le Chiffre (ironically, "the number" in French) is a 30% keyboard designed by tominabox1. The purpose of the board is to provide a platform for MX and Choc ergo in one package for when ones wrists need a break. The board supports an RGB LED strip with DI on port F0. The board is also fitted with support for run-of-the-mill .91" OLED and EC11 rotary encoder.
+There are 3 PCB revisions: Rev 1 (Original), Rev 2 (P3D version sold with the Le Chiffre Plus), and HE (Hotswap Edition from Checkerboards.xyz).
+
+By default the OLED is **disabled**. This is to prevent issues with operation when one is not installed. Be sure to enable the OLED in the rules.mk file if you have one installed!
+
* Keyboard Maintainer: [TJ Campie](https://github.com/tominabox1)
-* Hardware Supported: Le Chiffre (source not available at this time)
+* Hardware Supported: [Le Chiffre](https://github.com/tominabox1/Le-Chiffre-Keyboard)
* Hardware Availability: Bring your own case.
Make example for this keyboard (after setting up your build environment):
- make tominabox1/le_chiffre:default
+ make tominabox1/le_chiffre/rev1:default
+ make tominabox1/le_chiffre/rev2:default
+ make tominabox1/le_chiffre/he: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/tominabox1/le_chiffre/rev1/config.h b/keyboards/tominabox1/le_chiffre/rev1/config.h
new file mode 100644
index 0000000000..78609df05e
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/rev1/config.h
@@ -0,0 +1,40 @@
+/* Copyright 2020 tominabox1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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"
+
+/*
+ * 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, D4, F1, C6 }
+#define MATRIX_COL_PINS { F4, F5, B0, B2, B1, B4, D7, C7, D2, F7 }
+
+/* Define encoder pads */
+#define ENCODERS_PAD_A { D5 }
+#define ENCODERS_PAD_B { D3 }
+
+/*
+ * WS2812 Underglow Matrix options
+ */
+#define RGB_DI_PIN F0
diff --git a/keyboards/tominabox1/le_chiffre/rev1/info.json b/keyboards/tominabox1/le_chiffre/rev1/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/tominabox1/le_chiffre/rev1/rev1.c b/keyboards/tominabox1/le_chiffre/rev1/rev1.c
new file mode 100644
index 0000000000..e3b2b014f4
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/rev1/rev1.c
@@ -0,0 +1,33 @@
+/* Copyright 2020 tominabox1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You 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"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { 3, 4, NO_LED, 5, 6 },
+ { NO_LED, NO_LED, 10, NO_LED, NO_LED },
+ { NO_LED, NO_LED, 9, NO_LED, NO_LED },
+ { 2, 1, 0, 8, 7 }
+}, {
+
+ // LED Index to Physical Position
+ { 128, 64 }, { 77, 64 }, { 0, 48 }, { 0, 0 }, { 115, 0 }, { 166, 0 }, { 255, 0 }, { 255, 48 }, { 178, 64 }, { 128, 40 }, { 128, 30 }
+}, {
+
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
+} };
+#endif
diff --git a/keyboards/tominabox1/le_chiffre/le_chiffre.h b/keyboards/tominabox1/le_chiffre/rev1/rev1.h
index 0277e1b42d..0277e1b42d 100644
--- a/keyboards/tominabox1/le_chiffre/le_chiffre.h
+++ b/keyboards/tominabox1/le_chiffre/rev1/rev1.h
diff --git a/keyboards/tominabox1/le_chiffre/rev1/rules.mk b/keyboards/tominabox1/le_chiffre/rev1/rules.mk
new file mode 100644
index 0000000000..2cd4ebf52f
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/rev1/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
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+LTO_ENABLE = yes
+
diff --git a/keyboards/tominabox1/le_chiffre/rev2/config.h b/keyboards/tominabox1/le_chiffre/rev2/config.h
new file mode 100644
index 0000000000..bdff4120d6
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/rev2/config.h
@@ -0,0 +1,40 @@
+/* Copyright 2020 tominabox1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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"
+
+/*
+ * 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, F6, F7, C7 }
+#define MATRIX_COL_PINS { B2, F0, F1, F4, F5, B5, B4, D7, D6, D4 }
+
+/* Define encoder pads */
+#define ENCODERS_PAD_A { B6 }
+#define ENCODERS_PAD_B { C6 }
+
+/*
+ * WS2812 Underglow Matrix options
+ */
+#define RGB_DI_PIN B1
diff --git a/keyboards/tominabox1/le_chiffre/rev2/info.json b/keyboards/tominabox1/le_chiffre/rev2/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/rev2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/tominabox1/le_chiffre/rev2/readme.md b/keyboards/tominabox1/le_chiffre/rev2/readme.md
new file mode 100644
index 0000000000..b8c65bc0e0
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/rev2/readme.md
@@ -0,0 +1,2 @@
+Updated v2 PCB with better plate screw clearances, ESD protection, as well as sweet sweet curvy traces.
+Rev. 2.0 requires new firmware due to the pinout changing to facilitate prettier trace runs. \ No newline at end of file
diff --git a/keyboards/tominabox1/le_chiffre/rev2/rev2.c b/keyboards/tominabox1/le_chiffre/rev2/rev2.c
new file mode 100644
index 0000000000..e15aa35243
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/rev2/rev2.c
@@ -0,0 +1,33 @@
+/* Copyright 2020 tominabox1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You 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
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { 3, 4, NO_LED, 5, 6 },
+ { NO_LED, NO_LED, 10, NO_LED, NO_LED },
+ { NO_LED, NO_LED, 9, NO_LED, NO_LED },
+ { 2, 1, 0, 8, 7 }
+}, {
+
+ // LED Index to Physical Position
+ { 128, 64 }, { 77, 64 }, { 0, 48 }, { 0, 0 }, { 115, 0 }, { 166, 0 }, { 255, 0 }, { 255, 48 }, { 178, 64 }, { 128, 40 }, { 128, 30 }
+}, {
+
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
+} };
+#endif
diff --git a/keyboards/tominabox1/le_chiffre/rev2/rev2.h b/keyboards/tominabox1/le_chiffre/rev2/rev2.h
new file mode 100644
index 0000000000..0277e1b42d
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/rev2/rev2.h
@@ -0,0 +1,33 @@
+/* Copyright 2020 tominabox1
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, K38, 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, \
+ K32, K34, K35, K37 \
+) \
+{ \
+ { 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 }, \
+ { XXX, XXX, K32, XXX, K34, K35, XXX, K37, K38, XXX } \
+}
diff --git a/keyboards/tominabox1/le_chiffre/rev2/rules.mk b/keyboards/tominabox1/le_chiffre/rev2/rules.mk
new file mode 100644
index 0000000000..2cd4ebf52f
--- /dev/null
+++ b/keyboards/tominabox1/le_chiffre/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
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+LTO_ENABLE = yes
+
diff --git a/keyboards/tominabox1/le_chiffre/rules.mk b/keyboards/tominabox1/le_chiffre/rules.mk
index bc5775a151..57b3d94eab 100644
--- a/keyboards/tominabox1/le_chiffre/rules.mk
+++ b/keyboards/tominabox1/le_chiffre/rules.mk
@@ -1,19 +1 @@
-# 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
-NKRO_ENABLE = yes # Enable N-Key Rollover
-RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
-ENCODER_ENABLE = yes
-OLED_ENABLE = no
-RGB_MATRIX_ENABLE = yes
-RGB_MATRIX_DRIVER = WS2812
-LTO_ENABLE = yes
+DEFAULT_FOLDER = tominabox1/le_chiffre/rev1
diff --git a/keyboards/tominabox1/littlefoot_lx/readme.md b/keyboards/tominabox1/littlefoot_lx/readme.md
index 5ef9186347..161c158637 100644
--- a/keyboards/tominabox1/littlefoot_lx/readme.md
+++ b/keyboards/tominabox1/littlefoot_lx/readme.md
@@ -27,4 +27,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/tominabox1/littlefoot_lx/rev1/config.h b/keyboards/tominabox1/littlefoot_lx/rev1/config.h
index 0f9ad3c918..cdfa3ccef2 100644
--- a/keyboards/tominabox1/littlefoot_lx/rev1/config.h
+++ b/keyboards/tominabox1/littlefoot_lx/rev1/config.h
@@ -20,14 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7431
-#define PRODUCT_ID 0x6C78
-#define DEVICE_VER 0x0001
-#define PRODUCT Littlefoot LX
-#define MANUFACTURER tominabox1
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 10
@@ -35,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { D5, F4, D3, F1, F0 }
#define MATRIX_COL_PINS { D7, D6, D4, E2, F5, F6, F7, B6, B5, B4 } // uncomment for original groupbuy
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tominabox1/littlefoot_lx/rev1/info.json b/keyboards/tominabox1/littlefoot_lx/rev1/info.json
index ee2d32e667..107b62910c 100644
--- a/keyboards/tominabox1/littlefoot_lx/rev1/info.json
+++ b/keyboards/tominabox1/littlefoot_lx/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Littlefoot LX",
+ "manufacturer": "tominabox1",
"url": "",
"maintainer": "tominabox1",
+ "usb": {
+ "vid": "0x7431",
+ "pid": "0x6C78",
+ "device_version": "0.0.1"
+ },
"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":"0,7", "x":7, "y":0}, {"label":"0,8", "x":8, "y":0}, {"label":"0,9", "x":9, "y":0}, {"label":"1,0", "x":0, "y":1}, {"label":"1,1", "x":1, "y":1}, {"label":"1,2", "x":2, "y":1}, {"label":"1,3", "x":3, "y":1}, {"label":"1,4", "x":4, "y":1}, {"label":"1,5", "x":5, "y":1}, {"label":"1,6", "x":6, "y":1}, {"label":"1,7", "x":7, "y":1}, {"label":"1,8", "x":8, "y":1}, {"label":"1,9", "x":9, "y":1}, {"label":"2,0", "x":0, "y":2}, {"label":"2,1", "x":1, "y":2}, {"label":"2,2", "x":2, "y":2}, {"label":"2,3", "x":3, "y":2}, {"label":"2,4", "x":4, "y":2}, {"label":"2,5", "x":5, "y":2}, {"label":"2,6", "x":6, "y":2}, {"label":"2,7", "x":7, "y":2}, {"label":"2,8", "x":8, "y":2}, {"label":"2,9", "x":9, "y":2}, {"label":"3,0", "x":0, "y":3}, {"label":"3,1", "x":1, "y":3}, {"label":"3,2", "x":2, "y":3}, {"label":"3,3", "x":3, "y":3}, {"label":"3,4", "x":4, "y":3}, {"label":"3,5", "x":5, "y":3}, {"label":"3,6", "x":6, "y":3}, {"label":"3,7", "x":7, "y":3}, {"label":"3,8", "x":8, "y":3}, {"label":"3,9", "x":9, "y":3}, {"x":1.5, "y":4, "w":7}]
diff --git a/keyboards/tominabox1/littlefoot_lx/rev2/config.h b/keyboards/tominabox1/littlefoot_lx/rev2/config.h
index db97c0f133..15e8583f37 100644
--- a/keyboards/tominabox1/littlefoot_lx/rev2/config.h
+++ b/keyboards/tominabox1/littlefoot_lx/rev2/config.h
@@ -20,14 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7431
-#define PRODUCT_ID 0x6C78
-#define DEVICE_VER 0x0001
-#define PRODUCT Littlefoot LX
-#define MANUFACTURER tominabox1
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 10
@@ -35,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { D5, F4, D3, F1, F0 }
#define MATRIX_COL_PINS { D7, D6, D4, C7, F5, F6, F7, B6, B5, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tominabox1/littlefoot_lx/rev2/info.json b/keyboards/tominabox1/littlefoot_lx/rev2/info.json
index ee2d32e667..107b62910c 100644
--- a/keyboards/tominabox1/littlefoot_lx/rev2/info.json
+++ b/keyboards/tominabox1/littlefoot_lx/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Littlefoot LX",
+ "manufacturer": "tominabox1",
"url": "",
"maintainer": "tominabox1",
+ "usb": {
+ "vid": "0x7431",
+ "pid": "0x6C78",
+ "device_version": "0.0.1"
+ },
"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":"0,7", "x":7, "y":0}, {"label":"0,8", "x":8, "y":0}, {"label":"0,9", "x":9, "y":0}, {"label":"1,0", "x":0, "y":1}, {"label":"1,1", "x":1, "y":1}, {"label":"1,2", "x":2, "y":1}, {"label":"1,3", "x":3, "y":1}, {"label":"1,4", "x":4, "y":1}, {"label":"1,5", "x":5, "y":1}, {"label":"1,6", "x":6, "y":1}, {"label":"1,7", "x":7, "y":1}, {"label":"1,8", "x":8, "y":1}, {"label":"1,9", "x":9, "y":1}, {"label":"2,0", "x":0, "y":2}, {"label":"2,1", "x":1, "y":2}, {"label":"2,2", "x":2, "y":2}, {"label":"2,3", "x":3, "y":2}, {"label":"2,4", "x":4, "y":2}, {"label":"2,5", "x":5, "y":2}, {"label":"2,6", "x":6, "y":2}, {"label":"2,7", "x":7, "y":2}, {"label":"2,8", "x":8, "y":2}, {"label":"2,9", "x":9, "y":2}, {"label":"3,0", "x":0, "y":3}, {"label":"3,1", "x":1, "y":3}, {"label":"3,2", "x":2, "y":3}, {"label":"3,3", "x":3, "y":3}, {"label":"3,4", "x":4, "y":3}, {"label":"3,5", "x":5, "y":3}, {"label":"3,6", "x":6, "y":3}, {"label":"3,7", "x":7, "y":3}, {"label":"3,8", "x":8, "y":3}, {"label":"3,9", "x":9, "y":3}, {"x":1.5, "y":4, "w":7}]
diff --git a/keyboards/tominabox1/qaz/config.h b/keyboards/tominabox1/qaz/config.h
index 1dbaaa0fc4..9dc105c867 100644
--- a/keyboards/tominabox1/qaz/config.h
+++ b/keyboards/tominabox1/qaz/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7431
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER whydobearsexplod
-#define PRODUCT qaz keyboard
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 7
@@ -25,7 +18,6 @@
*/
#define MATRIX_ROW_PINS { F4, D4, C6, E6, D1, D0 }
#define MATRIX_COL_PINS { B4, D3, D2, F5, B5, F6, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tominabox1/qaz/info.json b/keyboards/tominabox1/qaz/info.json
index bae0c72bf1..9e524eb5c3 100644
--- a/keyboards/tominabox1/qaz/info.json
+++ b/keyboards/tominabox1/qaz/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "qaz",
+ "manufacturer": "whydobearsexplod",
"url": "",
"maintainer": "tominabox1",
+ "usb": {
+ "vid": "0x7431",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_space": {
"layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0, "w":1.25}, {"label":"A", "x":0, "y":1, "w":1.25}, {"label":"S", "x":1.25, "y":1}, {"label":"D", "x":2.25, "y":1}, {"label":"F", "x":3.25, "y":1}, {"label":"G", "x":4.25, "y":1}, {"label":"H", "x":5.25, "y":1}, {"label":"J", "x":6.25, "y":1}, {"label":"K", "x":7.25, "y":1}, {"label":"L", "x":8.25, "y":1}, {"label":"Ent", "x":9.25, "y":1}, {"label":"Z", "x":0, "y":2, "w":1.75}, {"label":"X", "x":1.75, "y":2}, {"label":"C", "x":2.75, "y":2}, {"label":"V", "x":3.75, "y":2}, {"label":"B", "x":4.75, "y":2}, {"label":"N", "x":5.75, "y":2}, {"label":"M", "x":6.75, "y":2}, {"label":".", "x":7.75, "y":2}, {"label":"Shift","x":8.75, "y":2, "w":1.5},{"label":"Super", "x":0, "y":3}, {"label":"Meta", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"", "x":3, "y":3, "w":2.25}, {"label":"", "x":5.25, "y":3, "w":2}, {"label":"AltGr", "x":7.25, "y":3},{"label":"Meta", "x":8.25, "y":3},{"label":"Super", "x":9.25, "y":3}]
diff --git a/keyboards/tominabox1/underscore33/rev1/config.h b/keyboards/tominabox1/underscore33/rev1/config.h
index 8bdb802bde..787924cae1 100644
--- a/keyboards/tominabox1/underscore33/rev1/config.h
+++ b/keyboards/tominabox1/underscore33/rev1/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7431
-#define PRODUCT_ID 0x3301 // _33 rev1
-#define DEVICE_VER 0x0001
-#define MANUFACTURER tominabox1
-#define PRODUCT underscore33
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { F5, F6, C6, D0 }
#define MATRIX_COL_PINS { B4, B5, D5, F7, B1, F4, B3, D7, B0, B2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/tominabox1/underscore33/rev1/info.json b/keyboards/tominabox1/underscore33/rev1/info.json
index dff483d85f..7dac151000 100644
--- a/keyboards/tominabox1/underscore33/rev1/info.json
+++ b/keyboards/tominabox1/underscore33/rev1/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "underscore33",
+ "manufacturer": "tominabox1",
"url": "",
"maintainer": "tominabox1",
+ "usb": {
+ "vid": "0x7431",
+ "pid": "0x3301",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_33_big_space": {
"layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0},{"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"H", "x":5, "y":1}, {"label":"J", "x":6, "y":1}, {"label":"K", "x":7, "y":1}, {"label":"L", "x":8, "y":1}, {"label":";", "x":9, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"N", "x":5, "y":2}, {"label":"M", "x":6, "y":2}, {"label":"<", "x":7, "y":2}, {"label":">", "x":8, "y":2}, {"label":"?", "x":9, "y":2}, {"label":"", "x":0.65, "y":3, "w":1.25}, {"label":"", "x":1.9, "y":3, "w":6.25}, {"label":"", "x":8.15, "y":3, "w":1.25}]
diff --git a/keyboards/tominabox1/underscore33/rev2/config.h b/keyboards/tominabox1/underscore33/rev2/config.h
index 0e965de231..c6031c86d4 100644
--- a/keyboards/tominabox1/underscore33/rev2/config.h
+++ b/keyboards/tominabox1/underscore33/rev2/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7431
-#define PRODUCT_ID 0x3302 // _33 rev2
-#define DEVICE_VER 0x0002
-#define MANUFACTURER tominabox1
-#define PRODUCT underscore33
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -41,7 +34,6 @@
#define MATRIX_ROW_PINS { C4, B0, B1, B2 }
#define MATRIX_COL_PINS { C5, C6, C7, B7, B6, B5, B4, B3, C2, D0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/tominabox1/underscore33/rev2/info.json b/keyboards/tominabox1/underscore33/rev2/info.json
index b2c89ba344..36f8b5d8ee 100644
--- a/keyboards/tominabox1/underscore33/rev2/info.json
+++ b/keyboards/tominabox1/underscore33/rev2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "underscore33",
+ "manufacturer": "tominabox1",
"url": "",
"maintainer": "tominabox1",
+ "usb": {
+ "vid": "0x7431",
+ "pid": "0x3302",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_33_big_space": {
"layout": [{"label":"Q", "x":0, "y":0}, {"label":"W", "x":1, "y":0}, {"label":"E", "x":2, "y":0}, {"label":"R", "x":3, "y":0}, {"label":"T", "x":4, "y":0}, {"label":"Y", "x":5, "y":0}, {"label":"U", "x":6, "y":0}, {"label":"I", "x":7, "y":0}, {"label":"O", "x":8, "y":0}, {"label":"P", "x":9, "y":0},{"label":"A", "x":0, "y":1}, {"label":"S", "x":1, "y":1}, {"label":"D", "x":2, "y":1}, {"label":"F", "x":3, "y":1}, {"label":"G", "x":4, "y":1}, {"label":"H", "x":5, "y":1}, {"label":"J", "x":6, "y":1}, {"label":"K", "x":7, "y":1}, {"label":"L", "x":8, "y":1}, {"label":";", "x":9, "y":1}, {"label":"Z", "x":0, "y":2}, {"label":"X", "x":1, "y":2}, {"label":"C", "x":2, "y":2}, {"label":"V", "x":3, "y":2}, {"label":"B", "x":4, "y":2}, {"label":"N", "x":5, "y":2}, {"label":"M", "x":6, "y":2}, {"label":"<", "x":7, "y":2}, {"label":">", "x":8, "y":2}, {"label":"?", "x":9, "y":2}, {"label":"", "x":0.65, "y":3, "w":1.25}, {"label":"", "x":1.9, "y":3, "w":6.25}, {"label":"", "x":8.15, "y":3, "w":1.25}]
diff --git a/keyboards/torn/config.h b/keyboards/torn/config.h
index 6cd6c2808e..b36ad9b1d9 100644
--- a/keyboards/torn/config.h
+++ b/keyboards/torn/config.h
@@ -19,14 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-/* VID & PID from vusb project, see tmk_core/protocol/vusb/USB-IDs-for-free.txt"*/
-#define VENDOR_ID 0x7274
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0000
-#define MANUFACTURER richard.titmuss
-#define PRODUCT Torn
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -45,7 +37,6 @@
{ D4, D1, D0, D5 }
#define MATRIX_COL_PINS \
{ B3, B4, B5, B0, D7, D6 }
-#define UNUSED_PINS
#define SECONDARY_ROW_PINS \
{ (1 << 5), (1 << 6), (1 << 7), (1 << 4) }
diff --git a/keyboards/torn/info.json b/keyboards/torn/info.json
index 8c35427570..26e6ade034 100644
--- a/keyboards/torn/info.json
+++ b/keyboards/torn/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Torn / Split Through Hole",
+ "keyboard_name": "Torn",
+ "manufacturer": "richard.titmuss",
"url": "https://github.com/rtitmuss/torn",
"maintainer": "rtitmuss",
+ "usb": {
+ "vid": "0x7274",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x6_4": {
"layout": [
diff --git a/keyboards/torn/keymaps/manna-harbour_miryoku/config.h b/keyboards/torn/keymaps/manna-harbour_miryoku/config.h
index 89a67474ca..a71d199fb8 100644
--- a/keyboards/torn/keymaps/manna-harbour_miryoku/config.h
+++ b/keyboards/torn/keymaps/manna-harbour_miryoku/config.h
@@ -1,6 +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/torn/keymaps/manna-harbour_miryoku/keymap.c b/keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c
+++ b/keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/touchpad/config.h b/keyboards/touchpad/config.h
index 8b42d0fe4f..2499fca4e1 100644
--- a/keyboards/touchpad/config.h
+++ b/keyboards/touchpad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x16D0
-#define PRODUCT_ID 0x0DB8
-#define DEVICE_VER 0x0001
-#define MANUFACTURER JacoBurge
-#define PRODUCT TouchPad
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 6
diff --git a/keyboards/touchpad/info.json b/keyboards/touchpad/info.json
index d8d0fab168..c20d14ce7e 100644
--- a/keyboards/touchpad/info.json
+++ b/keyboards/touchpad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "touchpad",
+ "keyboard_name": "TouchPad",
+ "manufacturer": "JacoBurge",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x16D0",
+ "pid": "0x0DB8",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_6x6": {
"layout": [
diff --git a/keyboards/tr60w/config.h b/keyboards/tr60w/config.h
index 5f029758a5..d252e799a3 100644
--- a/keyboards/tr60w/config.h
+++ b/keyboards/tr60w/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x4140
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Triangle_Lab
-#define PRODUCT TR60W
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 14
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, B1, B2, E6, B3 }
#define MATRIX_COL_PINS { F5, F4, F1, F0, B0, D5, D3, D6, D7, B4, B5, B6, C6, D2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tr60w/info.json b/keyboards/tr60w/info.json
index 629fb97b94..8a8fbdff78 100644
--- a/keyboards/tr60w/info.json
+++ b/keyboards/tr60w/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "TR60W",
+ "manufacturer": "Triangle Lab",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x4140",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_tsangan_hhkb": {
"layout": [
diff --git a/keyboards/tr60w/keymaps/joule-flow/keymap.c b/keyboards/tr60w/keymaps/joule-flow/keymap.c
index bfe0db0d5e..3adc9a84f9 100644
--- a/keyboards/tr60w/keymaps/joule-flow/keymap.c
+++ b/keyboards/tr60w/keymaps/joule-flow/keymap.c
@@ -11,7 +11,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
LAYOUT_60_tsangan_hhkb(
- 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_NUHS, KC_NUBS,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS,
_______, KC_BSPC, KC_UP, KC_ENT, _______, _______, _______, KC_WH_U, KC_BTN1 , KC_MS_U , KC_BTN2, KC_WH_L, _______, KC_DEL,
_______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, KC_WH_D, KC_MS_L , KC_MS_D , KC_MS_R, KC_WH_R, _______,
_______, RCTL(KC_Y), RCTL(KC_X), RCTL(KC_C), RCTL(KC_V), _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/trashman/ketch/config.h b/keyboards/trashman/ketch/config.h
index 93e6479a15..20e79e5c1c 100644
--- a/keyboards/trashman/ketch/config.h
+++ b/keyboards/trashman/ketch/config.h
@@ -23,12 +23,6 @@ SOFTWARE.
#pragma once
#include "config_common.h"
-#define VENDOR_ID 0xFEAE
-#define PRODUCT_ID 0x8947
-#define DEVICE_VER 0x0001
-#define MANUFACTURER trash man
-#define PRODUCT Ketch
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 8
#define MATRIX_ROW_PINS { F5, F1, F0, F7, B6, F6 }
diff --git a/keyboards/trashman/ketch/info.json b/keyboards/trashman/ketch/info.json
index 2fa70b05be..fbeffd539c 100644
--- a/keyboards/trashman/ketch/info.json
+++ b/keyboards/trashman/ketch/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ketch",
+ "keyboard_name": "Ketch",
+ "manufacturer": "trash man",
"url": "https://trashman.wiki/pcbs/ketch",
"maintainer": "jetpacktuxedo",
+ "usb": {
+ "vid": "0xFEAE",
+ "pid": "0x8947",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/trashman/ketch/keymaps/jetpacktuxedo/keymap.c b/keyboards/trashman/ketch/keymaps/jetpacktuxedo/keymap.c
index 50b1f7a62e..0cbe1bb7f9 100644
--- a/keyboards/trashman/ketch/keymaps/jetpacktuxedo/keymap.c
+++ b/keyboards/trashman/ketch/keymaps/jetpacktuxedo/keymap.c
@@ -54,8 +54,8 @@ 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, LT(5, KC_SLSH),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
- [5] = LAYOUT_jetvan( /* RESET Layer*/
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ [5] = LAYOUT_jetvan( /* QK_BOOT Layer*/
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/treasure/type9/config.h b/keyboards/treasure/type9/config.h
index 86734a7fd8..31a5602c71 100644
--- a/keyboards/treasure/type9/config.h
+++ b/keyboards/treasure/type9/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER Treasure
-#define PRODUCT Type 9
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6, D7, C6 }
#define MATRIX_COL_PINS { D1, D0, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/treasure/type9/info.json b/keyboards/treasure/type9/info.json
index 2f8b7c82b2..4f97080c00 100644
--- a/keyboards/treasure/type9/info.json
+++ b/keyboards/treasure/type9/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Type-9",
+ "manufacturer": "Treasure",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"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":2}, {"x":1, "y":2}, {"x":2, "y":2}]
diff --git a/keyboards/treasure/type9s2/config.h b/keyboards/treasure/type9s2/config.h
index a9d73f961f..a231e4523b 100644
--- a/keyboards/treasure/type9s2/config.h
+++ b/keyboards/treasure/type9s2/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5452
-#define PRODUCT_ID 0x5492
-#define DEVICE_VER 0x0001
-#define MANUFACTURER TREASURE
-#define PRODUCT TYPE-9 Series II
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -32,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments*/
#define MATRIX_ROW_PINS { B4, B5, D2 }
#define MATRIX_COL_PINS { B2, B3, C5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/treasure/type9s2/info.json b/keyboards/treasure/type9s2/info.json
index 68b47f46ef..388b202af0 100644
--- a/keyboards/treasure/type9s2/info.json
+++ b/keyboards/treasure/type9s2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Treasure TYPE-9 Series II",
+ "keyboard_name": "Type-9 Series II",
+ "manufacturer": "Treasure",
"url": "http://treasuretypes.com",
"maintainer": "Treasure",
+ "usb": {
+ "vid": "0x5452",
+ "pid": "0x5492",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_3x3": {
"layout": [
diff --git a/keyboards/tronguylabs/m122_3270/blackpill/config.h b/keyboards/tronguylabs/m122_3270/blackpill/config.h
index 53c3ad73e4..03d97de30e 100644
--- a/keyboards/tronguylabs/m122_3270/blackpill/config.h
+++ b/keyboards/tronguylabs/m122_3270/blackpill/config.h
@@ -22,6 +22,3 @@
// rows are inputs). Note that every usable I/O pin is used.
#define MATRIX_COL_PINS { B0, B1, B10, B12, B13, B14, B15, A8, A7, A10, A6, A5, A15, B3, B4, B5, B6, B7, B8, B9 }
#define MATRIX_ROW_PINS { C13, C14, C15, A0, A1, A2, A3, A4 }
-
-// The BlackPill version is version 2
-#define DEVICE_VER 0x0002
diff --git a/keyboards/tronguylabs/m122_3270/blackpill/info.json b/keyboards/tronguylabs/m122_3270/blackpill/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/tronguylabs/m122_3270/blackpill/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/tronguylabs/m122_3270/blackpill/rules.mk b/keyboards/tronguylabs/m122_3270/blackpill/rules.mk
index c802f00412..821cf29632 100644
--- a/keyboards/tronguylabs/m122_3270/blackpill/rules.mk
+++ b/keyboards/tronguylabs/m122_3270/blackpill/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/tronguylabs/m122_3270/bluepill/config.h b/keyboards/tronguylabs/m122_3270/bluepill/config.h
index f59eaaacb6..c8cf8523f6 100644
--- a/keyboards/tronguylabs/m122_3270/bluepill/config.h
+++ b/keyboards/tronguylabs/m122_3270/bluepill/config.h
@@ -24,6 +24,3 @@
// rows are inputs). Note that every usable I/O pin is used.
#define MATRIX_COL_PINS { B1, B10, B11, B12, B13, B14, B15, A8, B0, A10, A7, A6, A15, B3, B4, B5, B6, B7, B8, B9 }
#define MATRIX_ROW_PINS { C13, C14, C15, A1, A2, A3, A4, A5 }
-
-// The BluePill version is version 3
-#define DEVICE_VER 0x0003
diff --git a/keyboards/tronguylabs/m122_3270/bluepill/info.json b/keyboards/tronguylabs/m122_3270/bluepill/info.json
new file mode 100644
index 0000000000..b377cdff00
--- /dev/null
+++ b/keyboards/tronguylabs/m122_3270/bluepill/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/tronguylabs/m122_3270/config.h b/keyboards/tronguylabs/m122_3270/config.h
index 98359e6cc4..801fc9ee50 100644
--- a/keyboards/tronguylabs/m122_3270/config.h
+++ b/keyboards/tronguylabs/m122_3270/config.h
@@ -18,11 +18,6 @@
#include "config_common.h"
-#define VENDOR_ID 0x1209
-#define PRODUCT_ID 0x3270
-#define MANUFACTURER IBM
-#define PRODUCT Model M PC/3270 122 key
-
// Both controllers draw 100 mA or less
#define USB_MAX_POWER_CONSUMPTION 100
diff --git a/keyboards/tronguylabs/m122_3270/info.json b/keyboards/tronguylabs/m122_3270/info.json
index cddc24ea9c..f6fba523d6 100644
--- a/keyboards/tronguylabs/m122_3270/info.json
+++ b/keyboards/tronguylabs/m122_3270/info.json
@@ -1,6 +1,11 @@
{
- "keyboard_name": "IBM Model M PC/3270 122 key",
+ "keyboard_name": "Model M PC/3270 122 key",
+ "manufacturer": "IBM",
"maintainer": "jmaynard",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0x3270"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/tronguylabs/m122_3270/teensy/config.h b/keyboards/tronguylabs/m122_3270/teensy/config.h
index 33590b4064..b105ecad52 100644
--- a/keyboards/tronguylabs/m122_3270/teensy/config.h
+++ b/keyboards/tronguylabs/m122_3270/teensy/config.h
@@ -20,6 +20,3 @@
// avoiding the LED on PD6
#define MATRIX_COL_PINS { B5, B6, B7, D0, D1, D2, D3, D4, D5, D7, E0, E1, C0, C1, C2, C3, C4, C5, C6, C7 }
#define MATRIX_ROW_PINS { F0, F1, F2, F3, F4, F5, F6, F7 }
-
-// The Teensy version is version 1
-#define DEVICE_VER 0x0001
diff --git a/keyboards/tronguylabs/m122_3270/teensy/info.json b/keyboards/tronguylabs/m122_3270/teensy/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/tronguylabs/m122_3270/teensy/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/tszaboo/ortho4exent/config.h b/keyboards/tszaboo/ortho4exent/config.h
index b331cfbde9..ba3d30a6bb 100644
--- a/keyboards/tszaboo/ortho4exent/config.h
+++ b/keyboards/tszaboo/ortho4exent/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5453 // "TS"
-#define PRODUCT_ID 0x7934 // "O4"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER tszaboo
-#define PRODUCT ortho4exent
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { B0, B1, D4, D7, B4 }
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14*/
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, D6, D5, D3, D2, D1, B7, B3, B2 }
-#define UNUSED_PINS
#define LED_CAPS_LOCK_PIN E6
/* COL2ROW, ROW2COL*/
diff --git a/keyboards/tszaboo/ortho4exent/info.json b/keyboards/tszaboo/ortho4exent/info.json
index 4fe1e18f51..ad2e67dc70 100644
--- a/keyboards/tszaboo/ortho4exent/info.json
+++ b/keyboards/tszaboo/ortho4exent/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ortho4exent",
+ "manufacturer": "tszaboo",
"url": "https://github.com/tszaboo/Ortho4Exent",
"maintainer": "tszaboo",
+ "usb": {
+ "vid": "0x5453",
+ "pid": "0x7934",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/tunks/ergo33/config.h b/keyboards/tunks/ergo33/config.h
index 11a427a30e..04d50fe24a 100644
--- a/keyboards/tunks/ergo33/config.h
+++ b/keyboards/tunks/ergo33/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xA0A1
-#define DEVICE_VER 0x0001
-#define MANUFACTURER kulmajaba
-#define PRODUCT Ergo33
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 7
diff --git a/keyboards/tunks/ergo33/info.json b/keyboards/tunks/ergo33/info.json
index ccfc26e1f0..64405edae4 100644
--- a/keyboards/tunks/ergo33/info.json
+++ b/keyboards/tunks/ergo33/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Ergo33",
+ "manufacturer": "kulmajaba",
"url": "https://github.com/kulmajaba/tunks-keyboard",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xA0A1",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/tw40/config.h b/keyboards/tw40/config.h
index 67547b247e..c813f740d3 100644
--- a/keyboards/tw40/config.h
+++ b/keyboards/tw40/config.h
@@ -19,19 +19,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x503D /* "P3D" */
-#define PRODUCT_ID 0x5457 /* "TW" */
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KnoblesseOblige
-#define PRODUCT TW40
-
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { B0, D5, D3, D2 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/tw40/info.json b/keyboards/tw40/info.json
index 13f45e642e..68baf1819b 100644
--- a/keyboards/tw40/info.json
+++ b/keyboards/tw40/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Training Wheel 40",
+ "keyboard_name": "TW40",
+ "manufacturer": "KnoblesseOblige",
"url": "https://p3dstore.com/products/tw40-gb",
"maintainer": "KnoblesseOblige",
+ "usb": {
+ "vid": "0x503D",
+ "pid": "0x5457",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/tzarc/djinn/djinn.c b/keyboards/tzarc/djinn/djinn.c
index 23f59991a9..e6529e555d 100644
--- a/keyboards/tzarc/djinn/djinn.c
+++ b/keyboards/tzarc/djinn/djinn.c
@@ -70,7 +70,7 @@ void keyboard_post_init_kb(void) {
wait_ms(150);
// Initialise the LCD
- lcd = qp_ili9341_make_spi_device(320, 240, LCD_CS_PIN, LCD_DC_PIN, LCD_RST_PIN, 4, 3);
+ lcd = qp_ili9341_make_spi_device(240, 320, LCD_CS_PIN, LCD_DC_PIN, LCD_RST_PIN, 4, 0);
qp_init(lcd, QP_ROTATION_0);
// Turn on the LCD and clear the display
@@ -230,4 +230,4 @@ void housekeeping_task_kb(void) {
if (last_input_activity_elapsed() > 250) {
matrix_wait_for_interrupt();
}
-} \ No newline at end of file
+}
diff --git a/keyboards/tzarc/djinn/graphics/theme_djinn_default.c b/keyboards/tzarc/djinn/graphics/theme_djinn_default.c
index 616a3c2430..a4e87bd341 100644
--- a/keyboards/tzarc/djinn/graphics/theme_djinn_default.c
+++ b/keyboards/tzarc/djinn/graphics/theme_djinn_default.c
@@ -158,7 +158,7 @@ void draw_ui_user(void) {
if (hue_redraw || rgb_effect_redraw) {
static int max_rgb_xpos = 0;
xpos = 16;
- snprintf_(buf, sizeof(buf), "rgb: %s", rgb_matrix_name(curr_effect));
+ snprintf(buf, sizeof(buf), "rgb: %s", rgb_matrix_name(curr_effect));
for (int i = 5; i < sizeof(buf); ++i) {
if (buf[i] == 0)
@@ -187,7 +187,7 @@ void draw_ui_user(void) {
static int max_layer_xpos = 0;
xpos = 16;
- snprintf_(buf, sizeof(buf), "layer: %s", layer_name);
+ snprintf(buf, sizeof(buf), "layer: %s", layer_name);
xpos += qp_drawtext_recolor(lcd, xpos, ypos, thintel, buf, curr_hue, 255, 255, curr_hue, 255, 0);
if (max_layer_xpos < xpos) {
max_layer_xpos = xpos;
@@ -200,7 +200,7 @@ void draw_ui_user(void) {
if (hue_redraw || power_state_redraw) {
static int max_power_xpos = 0;
xpos = 16;
- snprintf_(buf, sizeof(buf), "power: %s", usbpd_str(kb_state.current_setting));
+ snprintf(buf, sizeof(buf), "power: %s", usbpd_str(kb_state.current_setting));
xpos += qp_drawtext_recolor(lcd, xpos, ypos, thintel, buf, curr_hue, 255, 255, curr_hue, 255, 0);
if (max_power_xpos < xpos) {
max_power_xpos = xpos;
@@ -213,7 +213,7 @@ void draw_ui_user(void) {
if (hue_redraw || scan_redraw) {
static int max_scans_xpos = 0;
xpos = 16;
- snprintf_(buf, sizeof(buf), "scans: %d", (int)theme_state.scan_rate);
+ snprintf(buf, sizeof(buf), "scans: %d", (int)theme_state.scan_rate);
xpos += qp_drawtext_recolor(lcd, xpos, ypos, thintel, buf, curr_hue, 255, 255, curr_hue, 255, 0);
if (max_scans_xpos < xpos) {
max_scans_xpos = xpos;
@@ -226,7 +226,7 @@ void draw_ui_user(void) {
if (hue_redraw || wpm_redraw) {
static int max_wpm_xpos = 0;
xpos = 16;
- snprintf_(buf, sizeof(buf), "wpm: %d", (int)get_current_wpm());
+ snprintf(buf, sizeof(buf), "wpm: %d", (int)get_current_wpm());
xpos += qp_drawtext_recolor(lcd, xpos, ypos, thintel, buf, curr_hue, 255, 255, curr_hue, 255, 0);
if (max_wpm_xpos < xpos) {
max_wpm_xpos = xpos;
diff --git a/keyboards/uk78/config.h b/keyboards/uk78/config.h
index 4ac138a9b5..7ff07ad42f 100644
--- a/keyboards/uk78/config.h
+++ b/keyboards/uk78/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x554B // "UK"
-#define PRODUCT_ID 0x004E // 78
-#define DEVICE_VER 0x0002
-#define MANUFACTURER UK Keyboards
-#define PRODUCT UK78
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 19
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { F3, F2, F1, F0, A0 }
#define MATRIX_COL_PINS { A2, A1, F5, F4, E6, E7, E5, E4, B7, D0, D1, D2, D3, D4, D5, D6, D7, B5, E0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/uk78/info.json b/keyboards/uk78/info.json
index 0d7c103d6a..0481c33081 100644
--- a/keyboards/uk78/info.json
+++ b/keyboards/uk78/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "UK78",
+ "manufacturer": "UK Keyboards",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x554B",
+ "pid": "0x004E",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "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":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K012", "x":12, "y":0}, {"label":"K013", "x":13, "y":0}, {"label":"K014", "x":14, "y":0}, {"label":"K015", "x":15, "y":0}, {"label":"K016", "x":16, "y":0}, {"label":"K017", "x":17, "y":0}, {"label":"K018", "x":18, "y":0}, {"label":"K100", "x":0, "y":1, "w":1.5}, {"label":"K101", "x":1.5, "y":1}, {"label":"K102", "x":2.5, "y":1}, {"label":"K103", "x":3.5, "y":1}, {"label":"K104", "x":4.5, "y":1}, {"label":"K105", "x":5.5, "y":1}, {"label":"K106", "x":6.5, "y":1}, {"label":"K107", "x":7.5, "y":1}, {"label":"K108", "x":8.5, "y":1}, {"label":"K109", "x":9.5, "y":1}, {"label":"K110", "x":10.5, "y":1}, {"label":"K111", "x":11.5, "y":1}, {"label":"K112", "x":12.5, "y":1}, {"label":"K114", "x":13.5, "y":1, "w":1.5}, {"label":"K115", "x":15, "y":1}, {"label":"K116", "x":16, "y":1}, {"label":"K117", "x":17, "y":1}, {"label":"K118", "x":18, "y":1}, {"label":"K200", "x":0, "y":2, "w":1.75}, {"label":"K201", "x":1.75, "y":2}, {"label":"K202", "x":2.75, "y":2}, {"label":"K203", "x":3.75, "y":2}, {"label":"K204", "x":4.75, "y":2}, {"label":"K205", "x":5.75, "y":2}, {"label":"K206", "x":6.75, "y":2}, {"label":"K207", "x":7.75, "y":2}, {"label":"K208", "x":8.75, "y":2}, {"label":"K209", "x":9.75, "y":2}, {"label":"K210", "x":10.75, "y":2}, {"label":"K211", "x":11.75, "y":2}, {"label":"K212", "x":12.75, "y":2}, {"label":"K214", "x":13.75, "y":2, "w":1.25}, {"label":"K215", "x":15, "y":2}, {"label":"K216", "x":16, "y":2}, {"label":"K217", "x":17, "y":2}, {"label":"K218", "x":18, "y":2}, {"label":"K300", "x":0, "y":3, "w":1.25}, {"label":"K301", "x":1.25, "y":3}, {"label":"K302", "x":2.25, "y":3}, {"label":"K303", "x":3.25, "y":3}, {"label":"K304", "x":4.25, "y":3}, {"label":"K305", "x":5.25, "y":3}, {"label":"K306", "x":6.25, "y":3}, {"label":"K307", "x":7.25, "y":3}, {"label":"K308", "x":8.25, "y":3}, {"label":"K309", "x":9.25, "y":3}, {"label":"K310", "x":10.25, "y":3}, {"label":"K311", "x":11.25, "y":3}, {"label":"K312", "x":12.25, "y":3}, {"label":"K313", "x":13.25, "y":3, "w":0.75}, {"label":"K314", "x":14, "y":3}, {"label":"K315", "x":15, "y":3}, {"label":"K316", "x":16, "y":3}, {"label":"K317", "x":17, "y":3}, {"label":"K318", "x":18, "y":3}, {"label":"K400", "x":0, "y":4, "w":1.25}, {"label":"K401", "x":1.25, "y":4, "w":1.25}, {"label":"K402", "x":2.5, "y":4, "w":1.25}, {"label":"K406", "x":3.75, "y":4, "w":6.25}, {"label":"K410", "x":10, "y":4}, {"label":"K411", "x":11, "y":4}, {"label":"K412", "x":12, "y":4}, {"label":"K413", "x":13, "y":4}, {"label":"K414", "x":14, "y":4}, {"label":"K415", "x":15, "y":4}, {"label":"K416", "x":16, "y":4}, {"label":"K417", "x":17, "y":4}, {"label":"K418", "x":18, "y":4}]
diff --git a/keyboards/uk78/keymaps/rask/keymap.c b/keyboards/uk78/keymaps/rask/keymap.c
index 6caee229ba..f29177fa0c 100644
--- a/keyboards/uk78/keymaps/rask/keymap.c
+++ b/keyboards/uk78/keymaps/rask/keymap.c
@@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FL2] = LAYOUT_all(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______,
KC_CAPS, _______, _______, _______, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, BL_DEC, BL_INC, KC_MSTP, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_APP, KC_APP, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/ungodly/launch_pad/config.h b/keyboards/ungodly/launch_pad/config.h
index cf639a4f28..d641bab9cd 100644
--- a/keyboards/ungodly/launch_pad/config.h
+++ b/keyboards/ungodly/launch_pad/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5544 // "UD" = Ungodly Design
-#define PRODUCT_ID 0x4C50 // "LP" = Launch Pad
-#define DEVICE_VER 0x9999
-#define MANUFACTURER Ungodly Design
-#define PRODUCT Launch Pad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
diff --git a/keyboards/ungodly/launch_pad/info.json b/keyboards/ungodly/launch_pad/info.json
index 767fef5e44..bc562186f4 100644
--- a/keyboards/ungodly/launch_pad/info.json
+++ b/keyboards/ungodly/launch_pad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Launch Pad",
+ "manufacturer": "Ungodly Design",
"url": "https://ungodly.design/products/launch-pad",
"maintainer": "Ungodly Design",
+ "usb": {
+ "vid": "0x5544",
+ "pid": "0x4C50",
+ "device_version": "99.9.9"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [
diff --git a/keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c b/keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c
index 63f142d913..23d3c5edc7 100644
--- a/keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c
+++ b/keyboards/ungodly/launch_pad/keymaps/warzone/keymap.c
@@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RGB_HUD, RGB_HUI, XXXXXXX, RGB_M_P,
RGB_SAD, RGB_SAI, XXXXXXX, RGB_MOD,
RGB_VAD, RGB_VAI, XXXXXXX, XXXXXXX,
- RESET, RESET, XXXXXXX, XXXXXXX
+ QK_BOOT, QK_BOOT, XXXXXXX, XXXXXXX
),
};
diff --git a/keyboards/ungodly/nines/config.h b/keyboards/ungodly/nines/config.h
index a2f874bda9..127d462e26 100644
--- a/keyboards/ungodly/nines/config.h
+++ b/keyboards/ungodly/nines/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5544 // "UD" = Ungodly Design
-#define PRODUCT_ID 0x544E // "TN" = The Nines
-#define DEVICE_VER 0x9999
-#define MANUFACTURER Ungodly Design
-#define PRODUCT The Nines
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -34,7 +27,6 @@
{ F7, B1, B3 }, \
{ B2, B6, B5 } \
}
-#define UNUSED_PINS
/* Rotary Encoder Assignments */
#define ENCODERS_PAD_A { C6, E6 }
diff --git a/keyboards/ungodly/nines/info.json b/keyboards/ungodly/nines/info.json
index fc93e94a1d..1a15a069e6 100644
--- a/keyboards/ungodly/nines/info.json
+++ b/keyboards/ungodly/nines/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "The Nines",
+ "manufacturer": "Ungodly Design",
"url": "https://www.qlavier.com/",
"maintainer": "Ungodly Design",
+ "usb": {
+ "vid": "0x5544",
+ "pid": "0x544E",
+ "device_version": "99.9.9"
+ },
"layouts": {
"LAYOUT_ortho_3x3": {
"layout": [
diff --git a/keyboards/unicomp/classic_ultracl_post_2013/info.json b/keyboards/unicomp/classic_ultracl_post_2013/info.json
index 08f4d5ebf7..bfb70eb880 100644
--- a/keyboards/unicomp/classic_ultracl_post_2013/info.json
+++ b/keyboards/unicomp/classic_ultracl_post_2013/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "unicomp/classic_ultracl_post_2013",
+ "keyboard_name": "Unicomp Classic / Ultra Classic (post-2013)",
+ "manufacturer": "Unicomp/Purdea Andrei",
"url": "https://github.com/purdeaandrei/overnumpad_controller_1xb",
"maintainer": "purdeaandrei",
+ "usb": {
+ "vid": "0x16C0",
+ "pid": "0x27DB",
+ "device_version": "0.0.1"
+ },
"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}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.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.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.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}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "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}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "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}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"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}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}]
diff --git a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h
index feb2e32d57..ad7668bdea 100644
--- a/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h
+++ b/keyboards/unicomp/classic_ultracl_post_2013/overnumpad_1xb/config.h
@@ -17,12 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x16C0
-#define PRODUCT_ID 0x27DB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Unicomp/Purdea Andrei
-#define PRODUCT Unicomp Spacesaver M
#define SERIAL_NUMBER "purdea.ro:overnumpad_controller"
/* key matrix size */
@@ -49,7 +43,6 @@
#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 }
#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 }
-//#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/info.json b/keyboards/unicomp/classic_ultracl_pre_2013/info.json
index bedbca4f36..618a7c1c46 100644
--- a/keyboards/unicomp/classic_ultracl_pre_2013/info.json
+++ b/keyboards/unicomp/classic_ultracl_pre_2013/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "unicomp/classic_ultracl_pre_2013",
+ "keyboard_name": "Unicomp Classic / Ultra Classic (pre-2013)",
+ "manufacturer": "Unicomp/Purdea Andrei",
"url": "https://github.com/purdeaandrei/overnumpad_controller_1xb",
"maintainer": "purdeaandrei",
+ "usb": {
+ "vid": "0x16C0",
+ "pid": "0x27DB",
+ "device_version": "0.0.1"
+ },
"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}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.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.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.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}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "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}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"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}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}]
diff --git a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h
index feb2e32d57..ad7668bdea 100644
--- a/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h
+++ b/keyboards/unicomp/classic_ultracl_pre_2013/overnumpad_1xb/config.h
@@ -17,12 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x16C0
-#define PRODUCT_ID 0x27DB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Unicomp/Purdea Andrei
-#define PRODUCT Unicomp Spacesaver M
#define SERIAL_NUMBER "purdea.ro:overnumpad_controller"
/* key matrix size */
@@ -49,7 +43,6 @@
#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 }
#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 }
-//#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/unicomp/spacesaver_m_post_2013/info.json b/keyboards/unicomp/spacesaver_m_post_2013/info.json
index 766a93e6c6..bfc60adfaf 100644
--- a/keyboards/unicomp/spacesaver_m_post_2013/info.json
+++ b/keyboards/unicomp/spacesaver_m_post_2013/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "unicomp/spacesaver_m_post_2013",
+ "keyboard_name": "Unicomp Spacesaver M",
+ "manufacturer": "Unicomp/Purdea Andrei",
"url": "https://github.com/purdeaandrei/overnumpad_controller_1xb",
"maintainer": "purdeaandrei",
+ "usb": {
+ "vid": "0x16C0",
+ "pid": "0x27DB",
+ "device_version": "0.0.1"
+ },
"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}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.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.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.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}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "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}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "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}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"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}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}]
diff --git a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h
index 597d287b07..ddd8ef6e9c 100644
--- a/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h
+++ b/keyboards/unicomp/spacesaver_m_post_2013/overnumpad_1xb/config.h
@@ -17,12 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x16C0
-#define PRODUCT_ID 0x27DB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Unicomp/Purdea Andrei
-#define PRODUCT Unicomp Spacesaver M
#define SERIAL_NUMBER "purdea.ro:overnumpad_controller"
/* key matrix size */
@@ -49,7 +43,6 @@
#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 }
#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 }
-//#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/info.json b/keyboards/unicomp/spacesaver_m_pre_2013/info.json
index e912d82ead..3ce16d2c09 100644
--- a/keyboards/unicomp/spacesaver_m_pre_2013/info.json
+++ b/keyboards/unicomp/spacesaver_m_pre_2013/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "unicomp/spacesaver_m_pre_2013",
+ "keyboard_name": "Unicomp Spacesaver M",
+ "manufacturer": "Unicomp/Purdea Andrei",
"url": "https://github.com/purdeaandrei/overnumpad_controller_1xb",
"maintainer": "purdeaandrei",
+ "usb": {
+ "vid": "0x16C0",
+ "pid": "0x27DB",
+ "device_version": "0.0.1"
+ },
"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}, {"x":14, "y":1.5}, {"x":15.25, "y":1.5}, {"x":16.25, "y":1.5}, {"x":17.25, "y":1.5}, {"x":18.5, "y":1.5}, {"x":19.5, "y":1.5}, {"x":20.5, "y":1.5}, {"x":21.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.25, "y":2.5}, {"x":16.25, "y":2.5}, {"x":17.25, "y":2.5}, {"x":18.5, "y":2.5}, {"x":19.5, "y":2.5}, {"x":20.5, "y":2.5}, {"x":21.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}, {"x":13.75, "y":3.5, "w":1.25}, {"x":18.5, "y":3.5}, {"x":19.5, "y":3.5}, {"x":20.5, "y":3.5}, {"x":21.5, "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}, {"x":13.25, "y":4.5, "w":1.75}, {"x":16.25, "y":4.5}, {"x":18.5, "y":4.5}, {"x":19.5, "y":4.5}, {"x":20.5, "y":4.5}, {"x":21.5, "y":4.5}, {"x":0, "y":5.5, "w":1.5}, {"x":1.5, "y":5.5, "w":1.25}, {"x":2.75, "y":5.5, "w":1.25}, {"x":4, "y":5.5}, {"x":5, "y":5.5, "w":4.75}, {"x":9.75, "y":5.5, "w":1.25}, {"x":11, "y":5.5, "w":1.25}, {"x":12.25, "y":5.5, "w":1.25}, {"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}, {"x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"x":20.5, "y":5.5}, {"x":21.5, "y":5.5}]
diff --git a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h
index 597d287b07..ddd8ef6e9c 100644
--- a/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h
+++ b/keyboards/unicomp/spacesaver_m_pre_2013/overnumpad_1xb/config.h
@@ -17,12 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x16C0
-#define PRODUCT_ID 0x27DB
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Unicomp/Purdea Andrei
-#define PRODUCT Unicomp Spacesaver M
#define SERIAL_NUMBER "purdea.ro:overnumpad_controller"
/* key matrix size */
@@ -49,7 +43,6 @@
#define MATRIX_COL_PINS { C3, C2, C1, C0, A3, A4, A5, A6, A7, C4, C5, B0, B1, B10, B12, B13 }
#define MATRIX_ROW_PINS { B14, B15, C6, C7, C8, C9, A8, A9 }
-//#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/unikeyboard/diverge3/config.h b/keyboards/unikeyboard/diverge3/config.h
index 502e97bd91..141fce0280 100644
--- a/keyboards/unikeyboard/diverge3/config.h
+++ b/keyboards/unikeyboard/diverge3/config.h
@@ -19,13 +19,6 @@ 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 0x1257
-#define DEVICE_VER 0x0001
-#define MANUFACTURER UniKeyboard
-#define PRODUCT diverge3
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/unikeyboard/diverge3/info.json b/keyboards/unikeyboard/diverge3/info.json
index fc678b40bc..74dc2641a1 100644
--- a/keyboards/unikeyboard/diverge3/info.json
+++ b/keyboards/unikeyboard/diverge3/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Diverge3",
+ "manufacturer": "UniKeyboard",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1257",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0.75}, {"x":2, "y":0.25}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0.25}, {"x":6, "y":0.5}, {"x":10, "y":0.5}, {"x":11, "y":0.25}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0.25}, {"x":15, "y":0.75}, {"x":16, "y":0}, {"x":0, "y":1}, {"x":1, "y":1.75}, {"x":2, "y":1.25}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1.25}, {"x":6, "y":1.5}, {"x":10, "y":1.5}, {"x":11, "y":1.25}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1.25}, {"x":15, "y":1.75}, {"x":16, "y":1}, {"x":0, "y":2}, {"x":1, "y":2.75}, {"x":2, "y":2.25}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2.25}, {"x":6, "y":2.5}, {"x":10, "y":2.5}, {"x":11, "y":2.25}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2.25}, {"x":15, "y":2.75}, {"x":16, "y":2}, {"x":0, "y":3}, {"x":1, "y":3.75}, {"x":2, "y":3.25}, {"x":3, "y":3}, {"x":4, "y":3}, {"x":5, "y":3.25}, {"x":6, "y":3.5}, {"x":10, "y":3.5}, {"x":11, "y":3.25}, {"x":12, "y":3}, {"x":13, "y":3}, {"x":14, "y":3.25}, {"x":15, "y":3.75}, {"x":16, "y":3}, {"x":0, "y":4}, {"x":1, "y":4.75}, {"x":2, "y":4.25}, {"x":3, "y":4}, {"x":4, "y":4}, {"x":5, "y":4.75, "h":1.25}, {"x":6, "y":5, "h":1.25}, {"x":7, "y":5.25}, {"x":9, "y":5.25}, {"x":10, "y":5, "h":1.25}, {"x":11, "y":4.75, "h":1.25}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4.25}, {"x":15, "y":4.75}, {"x":16, "y":4}]
diff --git a/keyboards/unikeyboard/diverge3/keymaps/iso_uk/keymap.c b/keyboards/unikeyboard/diverge3/keymaps/iso_uk/keymap.c
index 2564640293..f9556b168a 100644
--- a/keyboards/unikeyboard/diverge3/keymaps/iso_uk/keymap.c
+++ b/keyboards/unikeyboard/diverge3/keymaps/iso_uk/keymap.c
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_LOWER] = LAYOUT(
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
BL_TOGG, KC_ASTG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_INC, KC_ASUP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_DEC, KC_ASDN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/unikeyboard/diverge3/keymaps/workman/keymap.c b/keyboards/unikeyboard/diverge3/keymaps/workman/keymap.c
index 415df2eead..d3cecbff8b 100644
--- a/keyboards/unikeyboard/diverge3/keymaps/workman/keymap.c
+++ b/keyboards/unikeyboard/diverge3/keymaps/workman/keymap.c
@@ -191,7 +191,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_LPRN, KC_RPRN, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_EQL,
KC_TAB, KC_A, KC_S, KC_H, KC_T, KC_G, KC_LCBR, KC_RCBR, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_BSLS,
KC_LCTL, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_LBRC, KC_RBRC, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
- KC_LSFT, RESET, PAGE_PREV, PAGE_NEXT, KC_END, KC_LGUI, KC_LALT, TG(_GAME), LO_BSPC, ENT_RAISE, SPACE_RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RCTL),
+ KC_LSFT, QK_BOOT, PAGE_PREV, PAGE_NEXT, KC_END, KC_LGUI, KC_LALT, TG(_GAME), LO_BSPC, ENT_RAISE, SPACE_RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RCTL),
[_GAME] = 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_ESC,
@@ -201,7 +201,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LSFT, KC_F1, KC_F2, KC_3, KC_F5, KC_SPC, KC_LALT, TG(_GAME), LO_BSPC, ENT_RAISE, SPACE_RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_RCTL),
[_RAISE] = 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, RESET,
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, QK_BOOT,
_______, _______, _______, _______, _______, _______, BL_INC, KC_VOLU, _______, _______, _______, _______, _______, KC_F12,
_______, _______, _______, _______, _______, _______, BL_DEC, KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
_______, _______, _______, _______, _______, _______, BL_BRTG, KC_MUTE, _______, _______, KC_MPRV, KC_MNXT, KC_MPLY, _______,
diff --git a/keyboards/unikeyboard/divergetm2/config.h b/keyboards/unikeyboard/divergetm2/config.h
index ee8372aa7e..e10c1abc6e 100644
--- a/keyboards/unikeyboard/divergetm2/config.h
+++ b/keyboards/unikeyboard/divergetm2/config.h
@@ -19,13 +19,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x1256
-#define DEVICE_VER 0x0001
-#define MANUFACTURER UniKeyboard
-#define PRODUCT diverge tm2
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@
*/
#define MATRIX_ROW_PINS { D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F6, F7, B1, B3, B2, B6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/unikeyboard/divergetm2/info.json b/keyboards/unikeyboard/divergetm2/info.json
index fc64e57906..4d707c944c 100644
--- a/keyboards/unikeyboard/divergetm2/info.json
+++ b/keyboards/unikeyboard/divergetm2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "UniKeyboard Diverge TM 2",
+ "keyboard_name": "Diverge TM 2",
+ "manufacturer": "UniKeyboard",
"url": "",
"maintainer": "islandman93, xton",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1256",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/unikeyboard/divergetm2/keymaps/default/keymap.c b/keyboards/unikeyboard/divergetm2/keymaps/default/keymap.c
index e4ba788b70..d4f38e4a19 100644
--- a/keyboards/unikeyboard/divergetm2/keymaps/default/keymap.c
+++ b/keyboards/unikeyboard/divergetm2/keymaps/default/keymap.c
@@ -22,12 +22,14 @@
// 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 layer_names {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/unikeyboard/divergetm2/keymaps/xtonhasvim/keymap.c b/keyboards/unikeyboard/divergetm2/keymaps/xtonhasvim/keymap.c
index 5f478c1df1..a7371d47c1 100644
--- a/keyboards/unikeyboard/divergetm2/keymaps/xtonhasvim/keymap.c
+++ b/keyboards/unikeyboard/divergetm2/keymaps/xtonhasvim/keymap.c
@@ -81,7 +81,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_BSPC, \
KC_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, X_____X, X_____X, X_____X, X_____X, FIREY_RETURN, \
- RESET, TO(_QWERTY), _______, _______, _______, MO(_RAISE), _______, _______, TO(_QWERTY), X_____X \
+ QK_BOOT, TO(_QWERTY), _______, _______, _______, MO(_RAISE), _______, _______, TO(_QWERTY), X_____X \
),
/* Raise
@@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSPC, \
KC_DEL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \
_______, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, FIREY_RETURN, \
- X_____X, TO(_QWERTY), _______, _______, MO(_LOWER), _______, _______, _______, TO(_QWERTY), RESET \
+ X_____X, TO(_QWERTY), _______, _______, MO(_LOWER), _______, _______, _______, TO(_QWERTY), QK_BOOT \
),
diff --git a/keyboards/unikeyboard/felix/config.h b/keyboards/unikeyboard/felix/config.h
index 64319f029f..1e59a0dcc3 100644
--- a/keyboards/unikeyboard/felix/config.h
+++ b/keyboards/unikeyboard/felix/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Unikeyboard
-#define PRODUCT Felix
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
@@ -25,7 +18,6 @@
*/
#define MATRIX_ROW_PINS { B2, B3, B1, F7, F6 }
#define MATRIX_COL_PINS { B5, B4, E6, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/unikeyboard/felix/info.json b/keyboards/unikeyboard/felix/info.json
index f81d56f340..74b923206d 100644
--- a/keyboards/unikeyboard/felix/info.json
+++ b/keyboards/unikeyboard/felix/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Felix",
+ "manufacturer": "UniKeyboard",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x4": {
"layout": [
diff --git a/keyboards/unikorn/config.h b/keyboards/unikorn/config.h
index 1029a777bb..8108713e11 100644
--- a/keyboards/unikorn/config.h
+++ b/keyboards/unikorn/config.h
@@ -19,19 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x5354 // Singa x TGR (ST)
-#define PRODUCT_ID 0x556B // UK
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Singa x TGR
-#define PRODUCT Unikorn60
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
// 0 1 2 3 4 5 6 7 8 9 A B C D E
#define MATRIX_ROW_PINS { B1, B2, B3, B4, B5 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define DEBOUNCE 5
diff --git a/keyboards/unikorn/info.json b/keyboards/unikorn/info.json
index a93ca49205..671bb1870e 100644
--- a/keyboards/unikorn/info.json
+++ b/keyboards/unikorn/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Unikorn 60",
+ "keyboard_name": "Unikorn60",
+ "manufacturer": "Singa x TGR",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5354",
+ "pid": "0x556B",
+ "device_version": "2.0.0"
+ },
"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":13.75, "y":2, "w":1.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.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}]
diff --git a/keyboards/unison/v04/config.h b/keyboards/unison/v04/config.h
index 93c1ae2e4b..bd9bba276d 100644
--- a/keyboards/unison/v04/config.h
+++ b/keyboards/unison/v04/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB9DD
-#define PRODUCT_ID 0x176A
-#define DEVICE_VER 0x0040
-#define MANUFACTURER jpskenn
-#define PRODUCT Unison
-
/* key matrix size */
/* NOTE: With Round-Robin matrix, set same size for both. */
#define MATRIX_ROWS 10
@@ -35,7 +28,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* NOTE: With Round-Robin matrix, set same pins for both. */
#define MATRIX_ROW_PINS { B3, E6, F1, F5, F7, B2, F0, F4, F6, C7 }
#define MATRIX_COL_PINS { B3, E6, F1, F5, F7, B2, F0, F4, F6, C7 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/unison/v04/info.json b/keyboards/unison/v04/info.json
index 31b3f1e93b..00de673b9e 100644
--- a/keyboards/unison/v04/info.json
+++ b/keyboards/unison/v04/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Unison",
+ "manufacturer": "jpskenn",
"url": "https://github.com/jpskenn/Unison",
"maintainer": "jpskenn",
+ "usb": {
+ "vid": "0xB9DD",
+ "pid": "0x176A",
+ "device_version": "0.4.0"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/uranuma/config.h b/keyboards/uranuma/config.h
index 2c304012d3..f7a1ad9f03 100644
--- a/keyboards/uranuma/config.h
+++ b/keyboards/uranuma/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x112D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yohewi
-#define PRODUCT UraNuma
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 10
@@ -25,7 +18,6 @@
*/
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, B6, D2, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/uranuma/info.json b/keyboards/uranuma/info.json
index ffdef726a0..74968e3e12 100644
--- a/keyboards/uranuma/info.json
+++ b/keyboards/uranuma/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Uranuma",
+ "keyboard_name": "UraNuma",
+ "manufacturer": "yohewi",
"url": "",
"maintainer": "yohewi",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x112D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/utd80/config.h b/keyboards/utd80/config.h
index c5a9697f54..7e97b8542c 100644
--- a/keyboards/utd80/config.h
+++ b/keyboards/utd80/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x001C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER UTD
-#define PRODUCT UTD80
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -32,7 +25,6 @@
#define MATRIX_ROW_PINS { B4, D5, D0, B2, B3, B0 }
#define MATRIX_COL_PINS { B1, F0, F1, F4, F5, F6, F7, C7, C6, D3, E6, D7, D6, D4, D2, D1 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B7
#define BACKLIGHT_BREATHING
diff --git a/keyboards/utd80/info.json b/keyboards/utd80/info.json
index 360ccf4f87..bdc877ae3d 100644
--- a/keyboards/utd80/info.json
+++ b/keyboards/utd80/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "UTD80",
+ "manufacturer": "UTD",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x001C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi_wkl": {
"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, "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":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"x":11, "y":5.5, "w":1.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/uzu42/keymaps/default/glcdfont_uzu42.c b/keyboards/uzu42/glcdfont.c
index 5c3fa80d70..5c3fa80d70 100644
--- a/keyboards/uzu42/keymaps/default/glcdfont_uzu42.c
+++ b/keyboards/uzu42/glcdfont.c
diff --git a/keyboards/uzu42/info.json b/keyboards/uzu42/info.json
deleted file mode 100644
index a4903077ca..0000000000
--- a/keyboards/uzu42/info.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "keyboard_name": "uzu42",
- "url": "https://github.com/nrtkbb/Keyboards/tree/master/uzu42",
- "maintainer": "nrtkbb",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"label":"Q", "x":0.375, "y":0},
- {"label":"W", "x":1.375, "y":0},
- {"label":"E", "x":2.375, "y":0},
- {"label":"R", "x":3.375, "y":0.125},
- {"label":"T", "x":4.375, "y":0.25},
- {"label":"Y", "x":7.625, "y":0.25},
- {"label":"U", "x":8.625, "y":0.125},
- {"label":"I", "x":9.625, "y":0},
- {"label":"O", "x":10.625, "y":0},
- {"label":"P", "x":11.625, "y":0},
- {"label":"A", "x":0.25, "y":1},
- {"label":"S", "x":1.25, "y":1},
- {"label":"D", "x":2.25, "y":1},
- {"label":"F", "x":3.25, "y":1.125},
- {"label":"G", "x":4.25, "y":1.25},
- {"label":"H", "x":7.75, "y":1.25},
- {"label":"J", "x":8.75, "y":1.125},
- {"label":"K", "x":9.75, "y":1},
- {"label":"L", "x":10.75, "y":1},
- {"label":"Ent", "x":11.75, "y":1},
- {"label":"Z", "x":0.125, "y":2},
- {"label":"X", "x":1.125, "y":2},
- {"label":"C", "x":2.125, "y":2},
- {"label":"V", "x":3.125, "y":2.125},
- {"label":"B", "x":4.125, "y":2.25},
- {"label":"N", "x":7.875, "y":2.25},
- {"label":"M", "x":8.875, "y":2.125},
- {"label":",", "x":9.875, "y":2},
- {"label":".", "x":10.875, "y":2},
- {"label":"/", "x":11.875, "y":2},
- {"label":"Shift", "x":0, "y":3},
- {"label":"Space", "x":1, "y":3},
- {"label":"Alt", "x":2, "y":3.05},
- {"label":"GUI", "x":3, "y":3.18},
- {"label":"Lower", "x":4, "y":3.3},
- {"label":"Esc", "x":5, "y":3.43},
- {"label":"Space", "x":7, "y":3.43},
- {"label":"Raise", "x":8, "y":3.3},
- {"label":"BkSpc", "x":9, "y":3.18},
- {"label":"Ctrl", "x":10, "y":3.05},
- {"label":"GUI", "x":11, "y":3},
- {"label":"No", "x":12, "y":3}
- ]
- }
- }
-}
diff --git a/keyboards/uzu42/keymaps/default/config.h b/keyboards/uzu42/keymaps/default/config.h
deleted file mode 100644
index bc7897f501..0000000000
--- a/keyboards/uzu42/keymaps/default/config.h
+++ /dev/null
@@ -1,47 +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
-
-//#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 200
-
-#undef RGBLED_NUM
-#define RGBLIGHT_ANIMATIONS
-#define RGBLED_NUM 54
-#define RGBLIGHT_LIMIT_VAL 120
-#define RGBLIGHT_HUE_STEP 10
-#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17
-
-// Use the lily version to get the uzu42 logo instead of the qmk logo
-#define OLED_FONT_H "keymaps/default/glcdfont_uzu42.c"
diff --git a/keyboards/uzu42/keymaps/default/keymap.c b/keyboards/uzu42/keymaps/default/keymap.c
index 01e31ceb39..4334400c86 100644
--- a/keyboards/uzu42/keymaps/default/keymap.c
+++ b/keyboards/uzu42/keymaps/default/keymap.c
@@ -1,42 +1,28 @@
-#include QMK_KEYBOARD_H
-#include "uzu42.h"
-#ifdef PROTOCOL_LUFA
- #include "lufa.h"
- #include "split_util.h"
-#endif
-#ifdef SSD1306OLED
- #include "ssd1306.h"
-#endif
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
-
-#ifdef RGBLIGHT_ENABLE
-#include <stdio.h>
-//Following line allows macro to read current RGB settings
-extern rgblight_config_t rgblight_config;
-#endif
+#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,
- _LOWER,
- _RAISE,
- _ADJUST,
+ _QWERTY = 0,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
};
enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- LOWER,
- RAISE,
- ADJUST,
- RGBRST
+ RGBRST = SAFE_RANGE,
};
-#define KC_CTES CTL_T(KC_ESC)
-#define KC_SFSP SFT_T(KC_SPC)
-#define KC_ALBS ALT_T(KC_BSPC)
+#define KC_CTES CTL_T(KC_ESC)
+#define KC_SFSP SFT_T(KC_SPC)
+#define KC_ALBS ALT_T(KC_BSPC)
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT(
@@ -88,205 +74,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
-int RGB_current_mode;
-
-// 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)) {
- layer_on(layer3);
- } else {
- layer_off(layer3);
- }
-}
-
-void matrix_init_user(void) {
- #ifdef RGBLIGHT_ENABLE
- RGB_current_mode = rgblight_config.mode;
- #endif
-}
-
-//SSD1306 OLED update loop, make sure to enable OLED_ENABLE=yes in rules.mk
-#ifdef OLED_ENABLE
-
-#define L_BASE 0
-#define L_LOWER (1 << 1)
-#define L_RAISE (1 << 2)
-#define L_ADJUST (1 << 3)
-#define L_ADJUST_TRI (L_ADJUST | L_RAISE | L_LOWER)
-
-char layer_state_str[24];
-
-const char *read_layer_state(void) {
- switch (layer_state)
- {
- case L_BASE:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Default");
- break;
- case L_RAISE:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Raise");
- break;
- case L_LOWER:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Lower");
- break;
- case L_ADJUST:
- case L_ADJUST_TRI:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Adjust");
- break;
- default:
- snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%ld", layer_state);
- }
-
- return layer_state_str;
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST);
}
-const char *read_logo(void) {
- 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};
- return logo;
-}
-
-char keylog_str[24] = {};
-char keylogs_str[21] = {};
-int keylogs_str_idx = 0;
-
-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 < 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);
-
- // update keylogs
- if (keylogs_str_idx == sizeof(keylogs_str) - 1) {
- keylogs_str_idx = 0;
- for (int i = 0; i < sizeof(keylogs_str) - 1; i++) {
- keylogs_str[i] = ' ';
- }
- }
-
- keylogs_str[keylogs_str_idx] = name;
- keylogs_str_idx++;
-}
-
-const char *read_keylog(void) {
- return keylog_str;
-}
-
-const char *read_keylogs(void) {
- return keylogs_str;
-}
-
-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;
-}
-
-bool oled_task_user(void) {
- if (is_keyboard_master()) {
- // If you want to change the display of OLED, you need to change here
- oled_write_ln(read_layer_state(), false);
- oled_write_ln(read_keylog(), false);
- oled_write_ln(read_keylogs(), false);
- //oled_write_ln(read_mode_icon(keymap_config.swap_lalt_lgui), false);
- //oled_write_ln(read_host_led_state(), false);
- //oled_write_ln(read_timelog(), false);
- } else {
- oled_write(read_logo(), false);
- }
- return false;
-}
-#endif // OLED_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_RGB(_LOWER, _RAISE, _ADJUST);
- } else {
- layer_off(_LOWER);
- update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
- }
- return false;
- break;
- case RAISE:
- if (record->event.pressed) {
- layer_on(_RAISE);
- update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
- } else {
- layer_off(_RAISE);
- 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 RGB_MOD:
- #ifdef RGBLIGHT_ENABLE
- if (record->event.pressed) {
- rgblight_mode(RGB_current_mode);
- rgblight_step();
- RGB_current_mode = rgblight_config.mode;
- }
- #endif
- return false;
- break;
- case RGBRST:
- #ifdef RGBLIGHT_ENABLE
- if (record->event.pressed) {
- eeconfig_update_rgblight_default();
- rgblight_enable();
- RGB_current_mode = rgblight_config.mode;
- }
- #endif
- break;
- }
- return true;
-}
-
+ switch (keycode) {
+ case RGBRST:
#ifdef RGBLIGHT_ENABLE
-
-char rbf_info_str[24];
-const char *read_rgb_info(void) {
-
- snprintf(rbf_info_str, sizeof(rbf_info_str), "%s %2d h%3d s%3d v%3d",
- rgblight_config.enable ? "on" : "- ", rgblight_config.mode,
- rgblight_config.hue, rgblight_config.sat, rgblight_config.val);
- return rbf_info_str;
-}
+ if (record->event.pressed) {
+ eeconfig_update_rgblight_default();
+ rgblight_enable();
+ }
#endif
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/uzu42/post_config.h b/keyboards/uzu42/post_config.h
new file mode 100644
index 0000000000..69a18bf962
--- /dev/null
+++ b/keyboards/uzu42/post_config.h
@@ -0,0 +1,8 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#ifndef OLED_FONT_H
+# define OLED_FONT_H "keyboards/uzu42/glcdfont.c"
+#endif
diff --git a/keyboards/uzu42/rev1/config.h b/keyboards/uzu42/rev1/config.h
index 815442ed21..d8f474257e 100644
--- a/keyboards/uzu42/rev1/config.h
+++ b/keyboards/uzu42/rev1/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x3060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER nrtkbb
-#define PRODUCT uzu42
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
@@ -54,10 +47,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* ws2812 RGB LED */
#define RGB_DI_PIN D3
-#ifdef RGBLIGHT_ENABLE
-# define RGBLED_NUM 54 // Number of LEDs
-# define RGBLED_SPLIT { 27, 27 }
-#endif
+#define RGBLED_NUM 54 // Number of LEDs
+#define RGBLED_SPLIT { 27, 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
/*
* Feature disable options
diff --git a/keyboards/uzu42/rev1/info.json b/keyboards/uzu42/rev1/info.json
new file mode 100644
index 0000000000..f96564f36b
--- /dev/null
+++ b/keyboards/uzu42/rev1/info.json
@@ -0,0 +1,59 @@
+{
+ "keyboard_name": "uzu42",
+ "manufacturer": "nrtkbb",
+ "url": "https://github.com/nrtkbb/Keyboards/tree/master/uzu42",
+ "maintainer": "nrtkbb",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3060",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"label":"Q", "x":0.375, "y":0},
+ {"label":"W", "x":1.375, "y":0},
+ {"label":"E", "x":2.375, "y":0},
+ {"label":"R", "x":3.375, "y":0.125},
+ {"label":"T", "x":4.375, "y":0.25},
+ {"label":"Y", "x":7.625, "y":0.25},
+ {"label":"U", "x":8.625, "y":0.125},
+ {"label":"I", "x":9.625, "y":0},
+ {"label":"O", "x":10.625, "y":0},
+ {"label":"P", "x":11.625, "y":0},
+ {"label":"A", "x":0.25, "y":1},
+ {"label":"S", "x":1.25, "y":1},
+ {"label":"D", "x":2.25, "y":1},
+ {"label":"F", "x":3.25, "y":1.125},
+ {"label":"G", "x":4.25, "y":1.25},
+ {"label":"H", "x":7.75, "y":1.25},
+ {"label":"J", "x":8.75, "y":1.125},
+ {"label":"K", "x":9.75, "y":1},
+ {"label":"L", "x":10.75, "y":1},
+ {"label":"Ent", "x":11.75, "y":1},
+ {"label":"Z", "x":0.125, "y":2},
+ {"label":"X", "x":1.125, "y":2},
+ {"label":"C", "x":2.125, "y":2},
+ {"label":"V", "x":3.125, "y":2.125},
+ {"label":"B", "x":4.125, "y":2.25},
+ {"label":"N", "x":7.875, "y":2.25},
+ {"label":"M", "x":8.875, "y":2.125},
+ {"label":",", "x":9.875, "y":2},
+ {"label":".", "x":10.875, "y":2},
+ {"label":"/", "x":11.875, "y":2},
+ {"label":"Shift", "x":0, "y":3},
+ {"label":"Space", "x":1, "y":3},
+ {"label":"Alt", "x":2, "y":3.05},
+ {"label":"GUI", "x":3, "y":3.18},
+ {"label":"Lower", "x":4, "y":3.3},
+ {"label":"Esc", "x":5, "y":3.43},
+ {"label":"Space", "x":7, "y":3.43},
+ {"label":"Raise", "x":8, "y":3.3},
+ {"label":"BkSpc", "x":9, "y":3.18},
+ {"label":"Ctrl", "x":10, "y":3.05},
+ {"label":"GUI", "x":11, "y":3},
+ {"label":"No", "x":12, "y":3}
+ ]
+ }
+ }
+}
diff --git a/keyboards/uzu42/rev1/rev1.c b/keyboards/uzu42/rev1/rev1.c
index 0bfac6bd93..e22860d04b 100644
--- a/keyboards/uzu42/rev1/rev1.c
+++ b/keyboards/uzu42/rev1/rev1.c
@@ -1,2 +1,4 @@
-#include "uzu42.h"
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "uzu42.h"
diff --git a/keyboards/uzu42/rev1/rev1.h b/keyboards/uzu42/rev1/rev1.h
index 7b9c7d5991..e4aba8b79b 100644
--- a/keyboards/uzu42/rev1/rev1.h
+++ b/keyboards/uzu42/rev1/rev1.h
@@ -1,22 +1,12 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#pragma once
-#include "../uzu42.h"
+#include "uzu42.h"
#include "quantum.h"
-#ifdef RGBLIGHT_ENABLE
-//rgb led driver
-#include "ws2812.h"
-#endif
-
-#ifdef USE_I2C
-#include <stddef.h>
-#ifdef __AVR__
- #include <avr/io.h>
- #include <avr/interrupt.h>
-#endif
-#endif
-
#define LAYOUT( \
L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
@@ -33,4 +23,3 @@
{ R24, R23, R22, R21, R20 }, \
{ R35, R34, R33, R32, R31, R30 } \
}
-
diff --git a/keyboards/uzu42/rev1/serial_config.h b/keyboards/uzu42/rev1/serial_config.h
deleted file mode 100644
index 4fab8e8ddf..0000000000
--- a/keyboards/uzu42/rev1/serial_config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#ifndef SOFT_SERIAL_PIN
-#define SOFT_SERIAL_PIN D2
-#define SERIAL_USE_MULTI_TRANSACTION
-#endif
diff --git a/keyboards/uzu42/rev1/serial_config_simpleapi.h b/keyboards/uzu42/rev1/serial_config_simpleapi.h
deleted file mode 100644
index 0e1dd9e4ac..0000000000
--- a/keyboards/uzu42/rev1/serial_config_simpleapi.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#pragma once
-
-#undef SERIAL_USE_MULTI_TRANSACTION
-#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
-#define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2
diff --git a/keyboards/uzu42/uzu42.c b/keyboards/uzu42/uzu42.c
index df71734f7b..6a47ceac38 100644
--- a/keyboards/uzu42/uzu42.c
+++ b/keyboards/uzu42/uzu42.c
@@ -1 +1,105 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include "uzu42.h"
+
+#ifdef OLED_ENABLE
+#include <stdio.h>
+
+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 oled_render_layer_state(void) {
+ oled_write_P(PSTR("Layer: "), false);
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_ln_P(PSTR("Default"), false);
+ break;
+ case 1:
+ oled_write_ln_P(PSTR("Lower"), false);
+ break;
+ case 2:
+ oled_write_ln_P(PSTR("Raise"), false);
+ break;
+ case 3:
+ oled_write_ln_P(PSTR("Adjust"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("Undef"), 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_kb(void) {
+ if (!oled_task_user()) {
+ return true;
+ }
+ if (is_keyboard_master()) {
+ oled_render_layer_state();
+ oled_render_keylog();
+ } else {
+ oled_render_logo();
+ }
+ return false;
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ set_keylog(keycode, record);
+ }
+ return process_record_user(keycode, record);
+}
+
+#endif // OLED_ENABLE
diff --git a/keyboards/uzu42/uzu42.h b/keyboards/uzu42/uzu42.h
index dd944e3750..c23baac333 100644
--- a/keyboards/uzu42/uzu42.h
+++ b/keyboards/uzu42/uzu42.h
@@ -1,3 +1,6 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#pragma once
#ifdef KEYBOARD_uzu42_rev1
diff --git a/keyboards/v4n4g0rth0n/config.h b/keyboards/v4n4g0rth0n/config.h
index 14721308f9..4e26ffa8da 100644
--- a/keyboards/v4n4g0rth0n/config.h
+++ b/keyboards/v4n4g0rth0n/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB33F
-#define PRODUCT_ID 0x58E4
-#define MANUFACTURER s8erdude
-#define PRODUCT v4n4g0rth0n
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 12
diff --git a/keyboards/v4n4g0rth0n/info.json b/keyboards/v4n4g0rth0n/info.json
index ee44b90798..3360a7f95f 100644
--- a/keyboards/v4n4g0rth0n/info.json
+++ b/keyboards/v4n4g0rth0n/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "v4n4g0rth0n",
+ "manufacturer": "s8erdude",
"url": "https://github.com/jpuerto96/v4n4g0rth0n",
"maintainer": "jpuerto96 (s8erdude)",
+ "usb": {
+ "vid": "0xB33F",
+ "pid": "0x58E4"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/v4n4g0rth0n/v1/config.h b/keyboards/v4n4g0rth0n/v1/config.h
index dd72cf6500..effd2268db 100644
--- a/keyboards/v4n4g0rth0n/v1/config.h
+++ b/keyboards/v4n4g0rth0n/v1/config.h
@@ -17,7 +17,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DEVICE_VER 0x0001
-
#define MATRIX_ROW_PINS { C7, C6, B6, B5, B7}
#define MATRIX_COL_PINS { D3, D2, D1, D0, D5, F7, F6, E6, F5, F4, F1, F0}
diff --git a/keyboards/v4n4g0rth0n/v1/info.json b/keyboards/v4n4g0rth0n/v1/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/v4n4g0rth0n/v1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/v4n4g0rth0n/v2/config.h b/keyboards/v4n4g0rth0n/v2/config.h
index 6e78e73573..2299b791ef 100644
--- a/keyboards/v4n4g0rth0n/v2/config.h
+++ b/keyboards/v4n4g0rth0n/v2/config.h
@@ -17,7 +17,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define DEVICE_VER 0x0002
-
#define MATRIX_ROW_PINS { C7, C6, B6, B5, B7}
#define MATRIX_COL_PINS { D3, D2, D1, D0, D5, F7, F6, E6, F5, F4, F1, B0}
diff --git a/keyboards/v4n4g0rth0n/v2/info.json b/keyboards/v4n4g0rth0n/v2/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/v4n4g0rth0n/v2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/v60_type_r/config.h b/keyboards/v60_type_r/config.h
index 1d0b38988a..7513eed22d 100644
--- a/keyboards/v60_type_r/config.h
+++ b/keyboards/v60_type_r/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7432
-#define PRODUCT_ID 0x0658
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KB Paradise
-#define PRODUCT V60 Type R
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D4, D5, D6, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/v60_type_r/info.json b/keyboards/v60_type_r/info.json
index ee5a2f81cd..361eb64ca3 100644
--- a/keyboards/v60_type_r/info.json
+++ b/keyboards/v60_type_r/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "V60 Type R",
+ "manufacturer": "KB Paradise",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7432",
+ "pid": "0x0658",
+ "device_version": "0.0.1"
+ },
"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":"Del", "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":1.25}, {"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":"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":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/v60_type_r/keymaps/followingghosts/keymap.c b/keyboards/v60_type_r/keymaps/followingghosts/keymap.c
index cca95c509d..dffa9a1fd2 100644
--- a/keyboards/v60_type_r/keymaps/followingghosts/keymap.c
+++ b/keyboards/v60_type_r/keymaps/followingghosts/keymap.c
@@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----------------------------------------------------------|
* | |Lft|Dwn|Rig|HUD|SAD|VAD| |Hme|PgU|Lef|Rig| |
* |-----------------------------------------------------------|
- * | |BLD|BLT|BLI| |VolD|VolU|Mut|End|PgD|Dwn| RESET |
+ * | |BLD|BLT|BLI| |VolD|VolU|Mut|End|PgD|Dwn| QK_BOOT |
* |-----------------------------------------------------------|
* | | | | | |AGSW| | |
* `-----------------------------------------------------------'
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, KC_INS, \
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, RGB_HUD, RGB_SAD, RGB_VAD, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RIGHT, KC_TRNS, \
- KC_TRNS, BL_INC, BL_STEP, BL_DEC, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_DOWN, RESET, \
+ KC_TRNS, BL_INC, BL_STEP, BL_DEC, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, KC_DOWN, QK_BOOT, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, AG_SWAP, KC_TRNS, KC_TRNS),
/*
@@ -89,7 +89,7 @@ WASD are Up Left Right Down respectively
KC_TRNS, KC_TRNS, KC_TRNS, KC_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_MS_U, KC_BTN2, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, 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, QK_BOOT, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
diff --git a/keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c b/keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c
index 82a7e52808..8927a8ee0a 100644
--- a/keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c
+++ b/keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c
@@ -104,7 +104,7 @@ void rgbflag(uint8_t r, uint8_t g, uint8_t b) {
}
void set_state_leds(void) {
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _MOVE:
rgbflag(C_BLU);
break;
@@ -192,4 +192,3 @@ void suspend_wakeup_init_user(void)
backlight_set(backlight_config.level);
rgblight_set();
}
-
diff --git a/keyboards/vagrant_10/config.h b/keyboards/vagrant_10/config.h
index 2771df7895..1f3b433878 100755
--- a/keyboards/vagrant_10/config.h
+++ b/keyboards/vagrant_10/config.h
@@ -26,13 +26,6 @@ SOFTWARE.
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x534C
-#define PRODUCT_ID 0x5E99
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Shanduur
-#define PRODUCT Vagrant 10
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 3
@@ -40,7 +33,6 @@ SOFTWARE.
/* key matrix pins */
#define MATRIX_ROW_PINS { F7, B1, B3, B2 }
#define MATRIX_COL_PINS { F4, F6, F5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/vagrant_10/info.json b/keyboards/vagrant_10/info.json
index 9d1a788b27..15a406fe26 100644
--- a/keyboards/vagrant_10/info.json
+++ b/keyboards/vagrant_10/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Vagrant-10",
+ "keyboard_name": "Vagrant 10",
+ "manufacturer": "Shanduur",
"url": "https://github.com/Sho-Keebs/Vagrant-10",
"maintainer": "Shanduur",
+ "usb": {
+ "vid": "0x534C",
+ "pid": "0x5E99",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"x":1, "y":0, "w":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":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":3}]
diff --git a/keyboards/vertex/angler2/angler2.c b/keyboards/vertex/angler2/angler2.c
new file mode 100644
index 0000000000..a6a4d21372
--- /dev/null
+++ b/keyboards/vertex/angler2/angler2.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 Vertex <xiaoxuxk@yeah.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/>.
+ */
+
+#include "angler2.h"
diff --git a/keyboards/vertex/angler2/angler2.h b/keyboards/vertex/angler2/angler2.h
new file mode 100644
index 0000000000..68f9d9f5ab
--- /dev/null
+++ b/keyboards/vertex/angler2/angler2.h
@@ -0,0 +1,36 @@
+/* Copyright 2022 Vertex <xiaoxuxk@yeah.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
+
+#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, \
+ 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, 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, K4F, \
+ K50, K51, K52, K56, K5A, K5B, K5C, K5D, K5E, K5F, K4E \
+) { \
+ { 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}, \
+ { 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, K4F}, \
+ { K50, K51, K52, XXX, XXX, XXX, K56, XXX, XXX, XXX, K5A, K5B, K5C, K5D, K5E, K5F}, \
+}
diff --git a/keyboards/vertex/angler2/config.h b/keyboards/vertex/angler2/config.h
new file mode 100644
index 0000000000..7e71d1922e
--- /dev/null
+++ b/keyboards/vertex/angler2/config.h
@@ -0,0 +1,58 @@
+/* Copyright 2022 Vertex <xiaoxuxk@yeah.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
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#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 { F4, B2, F0, D5, D1, D2 }
+#define MATRIX_COL_PINS { F5, F6, F7, E2, C7, C6, B6, F1, B5, B4, D7, D6, D4, D3, D0, B1 }
+
+#define DIODE_DIRECTION COL2ROW
+
+#define LED_CAPS_LOCK_PIN B0
+#define LED_SCROLL_LOCK_PIN B7
+#define LED_PIN_ON_STATE 0
+
+#define RGB_DI_PIN E6
+#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 6
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
diff --git a/keyboards/vertex/angler2/info.json b/keyboards/vertex/angler2/info.json
new file mode 100644
index 0000000000..70feae3b64
--- /dev/null
+++ b/keyboards/vertex/angler2/info.json
@@ -0,0 +1,107 @@
+{
+ "keyboard_name": "Angler2",
+ "manufacturer": "Vertex_eason",
+ "url": "https://github.com/Vertex-kb",
+ "maintainer": "vertex",
+ "usb": {
+ "vid": "0x480E",
+ "pid": "0x408F",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ { "label": "K00 (F4,F5)", "x": 0, "y": 0 },
+ { "label": "K01 (F4,F6)", "x": 1.25, "y": 0 },
+ { "label": "K02 (F4,F7)", "x": 2.25, "y": 0 },
+ { "label": "K03 (F4,E2)", "x": 3.25, "y": 0 },
+ { "label": "K04 (F4,C7)", "x": 4.25, "y": 0 },
+ { "label": "K05 (F4,C6)", "x": 5.5, "y": 0 },
+ { "label": "K06 (F4,B6)", "x": 6.5, "y": 0 },
+ { "label": "K07 (F4,F1)", "x": 7.5, "y": 0 },
+ { "label": "K08 (F4,B5)", "x": 8.5, "y": 0 },
+ { "label": "K09 (F4,B4)", "x": 9.75, "y": 0 },
+ { "label": "K0A (F4,D7)", "x": 10.75, "y": 0 },
+ { "label": "K0B (F4,D6)", "x": 11.75, "y": 0 },
+ { "label": "K0C (F4,D4)", "x": 12.75, "y": 0 },
+ { "label": "K0D (F4,B1)", "x": 14, "y": 0 },
+ { "label": "K0E (F4,D0)", "x": 15.25, "y": 0 },
+ { "label": "K0F (F4,B1)", "x": 16.25, "y": 0 },
+ { "label": "K3E (D5,D0)", "x": 17.25, "y": 0 },
+ { "label": "K10 (B2,F5)", "x": 0, "y": 1.5 },
+ { "label": "K11 (B2,F6)", "x": 1, "y": 1.5 },
+ { "label": "K12 (B2,F7)", "x": 2, "y": 1.5 },
+ { "label": "K13 (B2,E2)", "x": 3, "y": 1.5 },
+ { "label": "K14 (B2,C7)", "x": 4, "y": 1.5 },
+ { "label": "K15 (B2,C6)", "x": 5, "y": 1.5 },
+ { "label": "K16 (B2,B6)", "x": 6, "y": 1.5 },
+ { "label": "K17 (B2,F1)", "x": 7, "y": 1.5 },
+ { "label": "K18 (B2,B5)", "x": 8, "y": 1.5 },
+ { "label": "K19 (B2,B4)", "x": 9, "y": 1.5 },
+ { "label": "K1A (B2,D7)", "x": 10, "y": 1.5 },
+ { "label": "K1B (B2,D6)", "x": 11, "y": 1.5 },
+ { "label": "K1C (B2,D4)", "x": 12, "y": 1.5 },
+ { "label": "K1D (B2,D3)", "x": 13, "y": 1.5,"w":2},
+ { "label": "K1E (B2,D0)", "x": 15.25, "y": 1.5 },
+ { "label": "K1F (B2,B1)", "x": 16.25, "y": 1.5 },
+ { "label": "K3F (D5,B1)", "x": 17.25, "y": 1.5 },
+ { "label": "K20 (F0,F5)", "x": 0,"y":2.5,"w":1.5},
+ { "label": "K21 (F0,F6)", "x": 1.5, "y": 2.5 },
+ { "label": "K22 (F0,F7)", "x": 2.5, "y": 2.5 },
+ { "label": "K23 (F0,E2)", "x": 3.5, "y": 2.5 },
+ { "label": "K24 (F0,C7)", "x": 4.5, "y": 2.5 },
+ { "label": "K25 (F0,C6)", "x": 5.5, "y": 2.5 },
+ { "label": "K26 (F0,B6)", "x": 6.5, "y": 2.5 },
+ { "label": "K27 (F0,F1)", "x": 7.5, "y": 2.5 },
+ { "label": "K28 (F0,B5)", "x": 8.5, "y": 2.5 },
+ { "label": "K29 (F0,B4)", "x": 9.5, "y": 2.5 },
+ { "label": "K2A (F0,D7)", "x": 10.5, "y": 2.5 },
+ { "label": "K2B (F0,D6)", "x": 11.5, "y": 2.5 },
+ { "label": "K2C (F0,D4)", "x": 12.5, "y": 2.5 },
+ { "label": "K2D (F0,D3)", "x": 13.5, "y": 2.5,"w":1.5},
+ { "label": "K2E (F0,D0)", "x": 15.25, "y": 2.5 },
+ { "label": "K2F (F0,B1)", "x": 16.25, "y": 2.5 },
+ { "label": "K4D (D1,D3)", "x": 17.25, "y": 2.5 },
+ { "label": "K30 (D5,F5)", "x": 0, "y": 3.5,"w":1.75},
+ { "label": "K31 (D5,F6)", "x": 1.75, "y": 3.5 },
+ { "label": "K32 (D5,F7)", "x": 2.75, "y": 3.5 },
+ { "label": "K33 (D5,E2)", "x": 3.75, "y": 3.5 },
+ { "label": "K34 (D5,C7)", "x": 4.75, "y": 3.5 },
+ { "label": "K35 (D5,C6)", "x": 5.75, "y": 3.5 },
+ { "label": "K36 (D5,B6)", "x": 6.75, "y": 3.5 },
+ { "label": "K37 (D5,F1)", "x": 7.75, "y": 3.5 },
+ { "label": "K38 (D5,B5)", "x": 8.75, "y": 3.5 },
+ { "label": "K39 (D5,B4)", "x": 9.75, "y": 3.5 },
+ { "label": "K3A (D5,D7)", "x": 10.75, "y": 3.5 },
+ { "label": "K3B (D5,D6)", "x": 11.75, "y": 3.5 },
+ { "label": "K3C (D5,D4)", "x": 12.75, "y": 3.5 },
+ { "label": "K3D (D5,D3)", "x": 13.75, "y": 3.5,"w":1.25 },
+ { "label": "K40 (D1,F5)", "x": 0, "y": 4.5,"w":1.25},
+ { "label": "K41 (D1,F6)", "x": 1.25, "y": 4.5 },
+ { "label": "K42 (D1,F7)", "x": 2.25, "y": 4.5 },
+ { "label": "K43 (D1,E2)", "x": 3.25, "y": 4.5 },
+ { "label": "K44 (D1,C7)", "x": 4.25, "y": 4.5 },
+ { "label": "K45 (D1,C6)", "x": 5.25, "y": 4.5 },
+ { "label": "K46 (D1,B6)", "x": 6.25, "y": 4.5 },
+ { "label": "K47 (D1,F1)", "x": 7.25, "y": 4.5 },
+ { "label": "K48 (D1,B5)", "x": 8.25, "y": 4.5 },
+ { "label": "K49 (D1,B4)", "x": 9.25, "y": 4.5 },
+ { "label": "K4A (D1,D7)", "x": 10.25, "y": 4.5 },
+ { "label": "K4B (D1,D6)", "x": 11.25, "y": 4.5 },
+ { "label": "K4C (D1,D4)", "x": 12.25, "y": 4.5,"w":2.75 },
+ { "label": "K4F (D1,B1)", "x": 16.25, "y": 4.5 },
+ { "label": "K50 (D2,F5)", "x": 0, "y": 5.5,"w":1.25 },
+ { "label": "K51 (D2,F6)", "x": 1.25, "y": 5.5,"w":1.25 },
+ { "label": "K52 (D2,F7)", "x": 2.5, "y": 5.5,"w":1.25 },
+ { "label": "K56 (D2,B6)", "x": 3.75, "y": 5.5,"w":6.25 },
+ { "label": "K5A (D2,D7)", "x": 10, "y": 5.5,"w":1.25 },
+ { "label": "K5B (D2,D6)", "x": 11.25, "y": 5.5,"w":1.25 },
+ { "label": "K5C (D2,D4)", "x": 12.5, "y": 5.5,"w":1.25 },
+ { "label": "K5D (D2,D3)", "x": 13.75, "y": 5.5,"w":1.25 },
+ { "label": "K5E (D2,D0)", "x": 15.25, "y": 5.5 },
+ { "label": "K5F (D2,B1)", "x": 16.25, "y": 5.5 },
+ { "label": "K4E (D1,D0)", "x": 17.25, "y": 5.5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/vertex/angler2/keymaps/default/keymap.c b/keyboards/vertex/angler2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..ae6d76e326
--- /dev/null
+++ b/keyboards/vertex/angler2/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+/* Copyright 2022 Vertex <xiaoxuxk@yeah.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/>.
+ */
+
+#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_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_NO, 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_BSLS, KC_ENT,
+ KC_LSFT, 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_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN,KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+
+ QK_BOOT, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,
+ _______,RGB_TOG,RGB_VAI,RGB_VAD,RGB_HUI,RGB_HUD,RGB_MOD,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,
+ _______,_______,_______, _______, _______,_______,_______,_______, _______,_______,_______
+ ),
+
+};
diff --git a/keyboards/vertex/angler2/keymaps/via/keymap.c b/keyboards/vertex/angler2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..03c46eee3a
--- /dev/null
+++ b/keyboards/vertex/angler2/keymaps/via/keymap.c
@@ -0,0 +1,59 @@
+/* Copyright 2022 Vertex <xiaoxuxk@yeah.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/>.
+ */
+
+#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_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_NO, 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_BSLS, KC_ENT,
+ KC_LSFT, 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_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN,KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+
+ QK_BOOT, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,
+ _______,RGB_TOG,RGB_VAI,RGB_VAD,RGB_HUI,RGB_HUD,RGB_MOD,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,
+ _______,_______,_______, _______, _______,_______,_______,_______, _______,_______,_______
+ ),
+ [2] = LAYOUT_all(
+
+ QK_BOOT, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,
+ _______,_______,_______, _______, _______,_______,_______,_______, _______,_______,_______
+ ),
+ [3] = LAYOUT_all(
+
+ QK_BOOT, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,
+ _______,_______,_______, _______, _______,_______,_______,_______, _______,_______,_______
+ ),
+
+
+};
diff --git a/keyboards/vertex/angler2/keymaps/via/rules.mk b/keyboards/vertex/angler2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/vertex/angler2/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/vertex/angler2/readme.md b/keyboards/vertex/angler2/readme.md
new file mode 100644
index 0000000000..e3de551e37
--- /dev/null
+++ b/keyboards/vertex/angler2/readme.md
@@ -0,0 +1,17 @@
+# angler2
+A customizable soldering 80% keyboard.
+
+* Keyboard Maintainer: [Vertex](https://github.com/Vertex-kb)
+* Hardware Supported: AngleR2
+* Hardware Availability: [Vertex](https://github.com/Vertex-kb)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make Vertex/AngleR2: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 `QK_BOOT`
diff --git a/keyboards/vertex/angler2/rules.mk b/keyboards/vertex/angler2/rules.mk
new file mode 100644
index 0000000000..744a272535
--- /dev/null
+++ b/keyboards/vertex/angler2/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 = 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 = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/vertex/arc60/arc60.c b/keyboards/vertex/arc60/arc60.c
new file mode 100644
index 0000000000..d8fc41b794
--- /dev/null
+++ b/keyboards/vertex/arc60/arc60.c
@@ -0,0 +1,18 @@
+/* Copyright 2022 vertex
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "arc60.h"
diff --git a/keyboards/vertex/arc60/arc60.h b/keyboards/vertex/arc60/arc60.h
new file mode 100644
index 0000000000..f259cb324f
--- /dev/null
+++ b/keyboards/vertex/arc60/arc60.h
@@ -0,0 +1,42 @@
+/* Copyright 2022 vertex
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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( \
+ 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, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D,K3E, \
+ K40, K41, K42, K46, K4A, K4B, K4C, 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, ___,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, ___, K3D,K3E }, \
+ { K40, K41, K42, ___, ___, ___, K46, ___, ___, ___, K4A, K4B, K4C, ___,K4E } \
+}
diff --git a/keyboards/vertex/arc60/chconf.h b/keyboards/vertex/arc60/chconf.h
new file mode 100644
index 0000000000..343afe57a6
--- /dev/null
+++ b/keyboards/vertex/arc60/chconf.h
@@ -0,0 +1,28 @@
+/* Copyright 2022 vertex
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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/bt66tech/bt66tech60/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/vertex/arc60/config.h b/keyboards/vertex/arc60/config.h
new file mode 100644
index 0000000000..20ae0e71cc
--- /dev/null
+++ b/keyboards/vertex/arc60/config.h
@@ -0,0 +1,83 @@
+/* Copyright 2022 vertex
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_COL_PINS { B9, B8, B7, B6, B5, B4, B3, B11, A15, A10, A9, B14, B13, B12, A5 }
+#define MATRIX_ROW_PINS { B10, B1, B0, A7, A6 }
+#define DIODE_DIRECTION COL2ROW
+
+#define LED_CAPS_LOCK_PIN C13
+#define LED_PIN_ON_STATE 0
+
+#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_DI_PIN B15
+#define RGBLED_NUM 9
+#define WS2812_SPI SPID2
+#define WS2812_SPI_MOSI_PAL_MODE 5
+
+
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+/*
+ * 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
+
+
+/* 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
diff --git a/keyboards/vertex/arc60/halconf.h b/keyboards/vertex/arc60/halconf.h
new file mode 100644
index 0000000000..7fb6be528f
--- /dev/null
+++ b/keyboards/vertex/arc60/halconf.h
@@ -0,0 +1,28 @@
+/* Copyright 2022 vertex
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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/bt66tech/bt66tech60/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#define HAL_USE_SPI TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/vertex/arc60/info.json b/keyboards/vertex/arc60/info.json
new file mode 100644
index 0000000000..5f38121bef
--- /dev/null
+++ b/keyboards/vertex/arc60/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "ARC60",
+ "url": "",
+ "maintainer": "Eason",
+ "manufacturer":"vertex",
+ "usb": {
+ "vid": "0x8354",
+ "pid": "0x8370",
+ "device_version": "0.0.1"
+ },
+ "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": 13.75, "y": 2, "w": 1.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 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/vertex/arc60/keymaps/default/keymap.c b/keyboards/vertex/arc60/keymaps/default/keymap.c
new file mode 100644
index 0000000000..c8618f6429
--- /dev/null
+++ b/keyboards/vertex/arc60/keymaps/default/keymap.c
@@ -0,0 +1,31 @@
+/* Copyright 2022 vertex
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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, 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, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), 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, _______, _______,
+ _______,_______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______,_______, _______,
+ _______,_______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______,_______, QK_BOOT,
+ _______,_______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______, _______,_______,
+ _______,_______,_______, _______, _______, _______, _______, _______),
+ };
diff --git a/keyboards/vertex/arc60/keymaps/via/keymap.c b/keyboards/vertex/arc60/keymaps/via/keymap.c
new file mode 100644
index 0000000000..ba5b601744
--- /dev/null
+++ b/keyboards/vertex/arc60/keymaps/via/keymap.c
@@ -0,0 +1,46 @@
+/* Copyright 2022 vertex
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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, 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, MO(1),
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), 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, _______, _______,
+ _______,_______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______,_______, _______,
+ _______,_______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______,_______, QK_BOOT,
+ _______,_______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______, _______,_______,
+ _______,_______,_______, _______, _______, _______, _______, _______),
+ [2] = LAYOUT_all(
+ _______,_______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______,_______, _______, _______,
+ _______,_______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______,_______, _______,
+ _______,_______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______,_______, QK_BOOT,
+ _______,_______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______, _______,_______,
+ _______,_______,_______, _______, _______, _______, _______, _______),
+ [3] = LAYOUT_all(
+ _______,_______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______,_______, _______, _______,
+ _______,_______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______,_______, _______,
+ _______,_______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______,_______, QK_BOOT,
+ _______,_______,_______,_______, _______,_______,_______, _______,_______,_______, _______, _______, _______,_______,
+ _______,_______,_______, _______, _______, _______, _______, _______),
+
+
+ };
diff --git a/keyboards/vertex/arc60/keymaps/via/rules.mk b/keyboards/vertex/arc60/keymaps/via/rules.mk
new file mode 100644
index 0000000000..36b7ba9cbc
--- /dev/null
+++ b/keyboards/vertex/arc60/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/vertex/arc60/mcuconf.h b/keyboards/vertex/arc60/mcuconf.h
new file mode 100644
index 0000000000..659e21d83b
--- /dev/null
+++ b/keyboards/vertex/arc60/mcuconf.h
@@ -0,0 +1,27 @@
+/* Copyright 2022 vertex
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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/bt66tech/bt66tech60/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
diff --git a/keyboards/vertex/arc60/readme.md b/keyboards/vertex/arc60/readme.md
new file mode 100644
index 0000000000..4c8968de62
--- /dev/null
+++ b/keyboards/vertex/arc60/readme.md
@@ -0,0 +1,22 @@
+# arc60
+
+* A customizable soldering 60% keyboard.
+
+* Keyboard Maintainer: [EASON](https://github.com/EasonQian1)
+* Hardware Supported: arc60
+* Hardware Availability: [vertex-kb](https://github.com/Vertex-kb)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make vertex/arc60:default
+
+Flashing example for this keyboard:
+
+ make vertex/arc60: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 Enter 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 `QK_BOOT`
diff --git a/keyboards/vertex/arc60/rules.mk b/keyboards/vertex/arc60/rules.mk
new file mode 100644
index 0000000000..7b7725d5f7
--- /dev/null
+++ b/keyboards/vertex/arc60/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+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
+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 = no
+
+
+DEFAULT_FOLDER = vertex/arc60
+
+
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/viendi8l/config.h b/keyboards/viendi8l/config.h
new file mode 100644
index 0000000000..827a490725
--- /dev/null
+++ b/keyboards/viendi8l/config.h
@@ -0,0 +1,66 @@
+/*
+ Copyright 2022 Gondolindrim <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 "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 18
+
+ // C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 , C9 , C10, C11, C12, C13, C14, C15, C16, C17
+#define MATRIX_COL_PINS { C6 , C7 , C8 , C9 , A8 , B3 , B4 , A10, B5 , B8 , B9 , C13, C14, C15, A0 , A1 , A2 , A3 }
+ // R0 , R1 , R2 , R3 , R4 , R5
+#define MATRIX_ROW_PINS { C3 , C2 , C1 , C0 , B14, A7 }
+#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 ENCODERS_PAD_A { B10 }
+#define ENCODERS_PAD_B { B12 }
+#define ENCODER_RESOLUTION 2
+
+#define TAPPING_TERM 200
+
+#define I2C_DRIVER I2CD1
+#define I2C_SCL_PIN B6
+#define I2C_SDA_PIN B7
+#define I2C_SCL_PAL_MODE 4
+#define I2C_SDA_PAL_MODE 4
+#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 RGB_DI_PIN B15
+#define RGBLED_NUM 4
+#define RGBLIGHT_DEFAULT_VAL 0
+
+#define WS2812_PWM_COMPLEMENTARY_OUTPUT
+#define WS2812_PWM_DRIVER PWMD1
+#define WS2812_PWM_CHANNEL 3
+#define WS2812_PWM_PAL_MODE 1
+#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
+#define WS2812_DMA_CHANNEL 6
diff --git a/keyboards/viendi8l/halconf.h b/keyboards/viendi8l/halconf.h
new file mode 100644
index 0000000000..ebdb4954a1
--- /dev/null
+++ b/keyboards/viendi8l/halconf.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 HAL_USE_PWM TRUE
+#define HAL_USE_PAL TRUE
+
+#define HAL_USE_I2C TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/viendi8l/info.json b/keyboards/viendi8l/info.json
new file mode 100644
index 0000000000..745937869d
--- /dev/null
+++ b/keyboards/viendi8l/info.json
@@ -0,0 +1,103 @@
+{
+ "keyboard_name": "8L",
+ "manufacturer": "Viendi",
+ "url": "https://viendi.co/",
+ "maintainer": "gondolindrim",
+ "usb": {
+ "vid": "0x8673",
+ "pid": "0x0877",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Push", "x":0, "y":0},
+ {"label":"\u00d7", "x":1, "y":0},
+ {"label":"/", "x":2, "y":0},
+ {"label":"Del", "x":3, "y":0},
+ {"label":"Esc", "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":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":")", "x":14.5, "y":0},
+ {"label":"-", "x":15.5, "y":0},
+ {"label":"=", "x":16.5, "y":0},
+ {"label":"Bksp", "x":17.5, "y":0},
+ {"label":"Bksp", "x":18.5, "y":0},
+ {"label":"-", "x":0, "y":1},
+ {"label":"7", "x":1, "y":1},
+ {"label":"8", "x":2, "y":1},
+ {"label":"9", "x":3, "y":1},
+ {"label":"Tab", "x":4.5, "y":1, "w":1.5},
+ {"label":"Q", "x":6, "y":1},
+ {"label":"W", "x":7, "y":1},
+ {"label":"E", "x":8, "y":1},
+ {"label":"R", "x":9, "y":1},
+ {"label":"T", "x":10, "y":1},
+ {"label":"Y", "x":11, "y":1},
+ {"label":"U", "x":12, "y":1},
+ {"label":"I", "x":13, "y":1},
+ {"label":"O", "x":14, "y":1},
+ {"label":"P", "x":15, "y":1},
+ {"label":"{", "x":16, "y":1},
+ {"label":"}", "x":17, "y":1},
+ {"label":"|", "x":18, "y":1, "w":1.5},
+ {"label":"+", "x":0, "y":2},
+ {"label":"4", "x":1, "y":2},
+ {"label":"5", "x":2, "y":2},
+ {"label":"6", "x":3, "y":2},
+ {"label":"Caps Lock", "x":4.5, "y":2, "w":1.75},
+ {"label":"A", "x":6.25, "y":2},
+ {"label":"S", "x":7.25, "y":2},
+ {"label":"D", "x":8.25, "y":2},
+ {"label":"F", "x":9.25, "y":2},
+ {"label":"G", "x":10.25, "y":2},
+ {"label":"H", "x":11.25, "y":2},
+ {"label":"J", "x":12.25, "y":2},
+ {"label":"K", "x":13.25, "y":2},
+ {"label":"L", "x":14.25, "y":2},
+ {"label":":", "x":15.25, "y":2},
+ {"label":"\"", "x":16.25, "y":2},
+ {"x":17.25, "y":2},
+ {"label":"Enter", "x":18.25, "y":2, "w":1.25},
+ {"label":"Enter", "x":0, "y":3},
+ {"label":"1", "x":1, "y":3},
+ {"label":"2", "x":2, "y":3},
+ {"label":"3", "x":3, "y":3},
+ {"label":"Shift", "x":4.5, "y":3, "w":1.25},
+ {"x":5.75, "y":3},
+ {"label":"Z", "x":6.75, "y":3},
+ {"label":"X", "x":7.75, "y":3},
+ {"label":"C", "x":8.75, "y":3},
+ {"label":"V", "x":9.75, "y":3},
+ {"label":"B", "x":10.75, "y":3},
+ {"label":"N", "x":11.75, "y":3},
+ {"label":"M", "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.5, "y":3},
+ {"x":18.5, "y":3},
+ {"label":"Enter", "x":0, "y":4},
+ {"label":".", "x":1, "y":4},
+ {"label":".", "x":2, "y":4},
+ {"label":"0", "x":3, "y":4},
+ {"label":"Ctrl", "x":4.5, "y":4, "w":1.25},
+ {"label":"Win", "x":5.75, "y":4, "w":1.25},
+ {"label":"Alt", "x":7, "y":4, "w":1.25},
+ {"x":8.25, "y":4, "w":6.25},
+ {"x":14.5, "y":4},
+ {"x":15.5, "y":4},
+ {"label":"\u2190", "x":16.5, "y":4},
+ {"label":"\u2193", "x":17.5, "y":4},
+ {"label":"\u2192", "x":18.5, "y":4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/viendi8l/keymaps/default/keymap.c b/keyboards/viendi8l/keymaps/default/keymap.c
new file mode 100755
index 0000000000..3a7ff83fa0
--- /dev/null
+++ b/keyboards/viendi8l/keymaps/default/keymap.c
@@ -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/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+#define LTCAPS LT(2, KC_CAPS)
+#define MTRSFT RSFT_T(KC_UP)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_MUTE, KC_PSLS, KC_PAST, KC_BSPC, 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_PMNS, 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_PPLS, KC_P4, KC_P5, KC_P6, LTCAPS, KC_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_PENT, KC_P1, KC_P2, KC_P3, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MTRSFT, KC_NUHS,
+ KC_PENT, KC_P0, KC_P0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, TG(1), MO(2), KC_LEFT, KC_DOWN, KC_RGHT, MO(2)
+ ),
+ [1] = LAYOUT_all(
+ KC_MUTE, KC_PSLS, KC_PAST, KC_BSPC, 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_BSPC,
+ KC_PMNS, 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_PPLS, KC_P4, KC_P5, KC_P6, LTCAPS, KC_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_PENT, KC_P1, KC_P2, KC_P3, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MTRSFT, KC_NUHS,
+ KC_PENT, KC_P0, KC_P0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, TG(1), MO(2), KC_LEFT, KC_DOWN, KC_RGHT, MO(2)
+ ),
+ [2] = LAYOUT_all(
+ KC_MUTE, KC_F10, KC_F11, KC_NUM, KC_GRV, 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,
+ KC_MINS, KC_F7, KC_F8, KC_F9, KC_TAB, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, XXXXXXX, KC_PSCR, XXXXXXX, XXXXXXX, KC_DEL,
+ KC_EQL, KC_F4, KC_F5, KC_F6, _______, KC_HOME, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, KC_F1, KC_F2, KC_F3, XXXXXXX, XXXXXXX, KC_LPRN, KC_RPRN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, KC_CALC, KC_CALC, KC_DEL, XXXXXXX, GUI_TOG, KC_SLEP, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______
+ )
+};
diff --git a/keyboards/viendi8l/keymaps/via/keymap.c b/keyboards/viendi8l/keymaps/via/keymap.c
new file mode 100755
index 0000000000..5e7cf5d89b
--- /dev/null
+++ b/keyboards/viendi8l/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/*
+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
+
+#define LTCAPS LT(2, KC_CAPS)
+#define MTRSFT RSFT_T(KC_UP)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_all(
+ KC_MUTE, KC_PSLS, KC_PAST, KC_BSPC, 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_PMNS, 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_PPLS, KC_P4, KC_P5, KC_P6, LTCAPS, KC_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_PENT, KC_P1, KC_P2, KC_P3, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MTRSFT, KC_NUHS,
+ KC_PENT, KC_P0, KC_P0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, TG(1), MO(2), KC_LEFT, KC_DOWN, KC_RGHT, MO(2)
+ ),
+ [1] = LAYOUT_all(
+ KC_MUTE, KC_PSLS, KC_PAST, KC_BSPC, 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_BSPC,
+ KC_PMNS, 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_PPLS, KC_P4, KC_P5, KC_P6, LTCAPS, KC_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_PENT, KC_P1, KC_P2, KC_P3, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MTRSFT, KC_NUHS,
+ KC_PENT, KC_P0, KC_P0, KC_PDOT, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, TG(1), MO(2), KC_LEFT, KC_DOWN, KC_RGHT, MO(2)
+ ),
+ [2] = LAYOUT_all(
+ KC_MUTE, KC_F10, KC_F11, KC_NUM, KC_GRV, 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,
+ KC_MINS, KC_F7, KC_F8, KC_F9, KC_TAB, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, XXXXXXX, KC_PSCR, XXXXXXX, XXXXXXX, KC_DEL,
+ KC_EQL, KC_F4, KC_F5, KC_F6, _______, KC_HOME, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, KC_F1, KC_F2, KC_F3, XXXXXXX, XXXXXXX, KC_LPRN, KC_RPRN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, KC_CALC, KC_CALC, KC_DEL, XXXXXXX, GUI_TOG, KC_SLEP, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______
+ ),
+ [3] = LAYOUT_all(
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 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/viendi8l/keymaps/via/rules.mk b/keyboards/viendi8l/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/viendi8l/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/viendi8l/mcuconf.h b/keyboards/viendi8l/mcuconf.h
new file mode 100644
index 0000000000..6c8d8c8af9
--- /dev/null
+++ b/keyboards/viendi8l/mcuconf.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/>.
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
+
+#undef STM32_PWM_USE_ADVANCED
+#define STM32_PWM_USE_ADVANCED TRUE
+
+#undef STM32_PWM_USE_TIM1
+#define STM32_PWM_USE_TIM1 TRUE
diff --git a/keyboards/viendi8l/readme.md b/keyboards/viendi8l/readme.md
new file mode 100644
index 0000000000..12b3c5adc7
--- /dev/null
+++ b/keyboards/viendi8l/readme.md
@@ -0,0 +1,27 @@
+# Viendi8L PCB firmware
+
+![8L_image](https://imgur.com/z4cuSYJh.png)
+
+The 8L 80% (60% plus southpaw numpad) keyboard designed by Viendi, with PCB by Gondolindrim.
+
+* Keyboard Maintainer: [Gondolindrim](https://github.com/gondolindrim)
+* Hardware Availability: proprietary PCB
+* Website: [Viendi](https://viendi.co/)
+
+## How to flash
+
+### Enter bootloader
+
+* **Bootmagic reset**: hold down the key at (0,0) in the matrix (the encoder push) and plug in the keyboard, waiting for five seconds
+* **Physical reset button**: press the button on the front of the PCB or use pliers to short the reset contacts, for at least five seconds
+* **Keycode in layout**: press the key mapped to `QK_BOOT` 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 viendi8l:default
+
+Then download the resulting binary `*bin` file using `dfu-util` or QMK Toolbox.
+
+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/viendi8l/rules.mk b/keyboards/viendi8l/rules.mk
new file mode 100644
index 0000000000..e42bc577d7
--- /dev/null
+++ b/keyboards/viendi8l/rules.mk
@@ -0,0 +1,28 @@
+# MCU name
+MCU = STM32F401
+
+BOARD = GENERIC_STM32_F401XC
+
+# 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 = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+WS2812_DRIVER = pwm
+AUDIO_ENABLE = no # Audio output
+ENCODER_ENABLE = yes
+LTO_ENABLE = no
+
+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/viendi8l/viendi8l.c b/keyboards/viendi8l/viendi8l.c
new file mode 100644
index 0000000000..ef720ce207
--- /dev/null
+++ b/keyboards/viendi8l/viendi8l.c
@@ -0,0 +1,56 @@
+/*
+Copyright 2022 Ã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 "viendi8l.h"
+
+
+// Defining indicator colors
+uint8_t caps_color[3] = {0xFF,0xFF,0xFF};
+uint8_t num_color[3] = {0xFF,0xFF,0xFF};
+uint8_t layer_color[3] = {0xFF,0xFF,0xFF};
+
+bool led_update_kb(led_t led_state) {
+ bool res = led_update_user(led_state);
+ if(res) {
+ led_state.caps_lock ? rgblight_setrgb_at(caps_color[0], caps_color[1], caps_color[2], 2) : rgblight_setrgb_at(0x00,0x00,0x00,2);
+ led_state.num_lock ? rgblight_setrgb_at(num_color[0], num_color[1], num_color[2], 3) : rgblight_setrgb_at(0x00,0x00,0x00,3);
+ }
+ return res;
+}
+
+layer_state_t layer_state_set_kb(layer_state_t state) {
+ switch (get_highest_layer(state)) {
+ case 1:
+ rgblight_setrgb_at(layer_color[0], layer_color[1], layer_color[2], 1);
+ break;
+ default:
+ rgblight_setrgb_at(0x00, 0x00, 0x00, 1);
+ break;
+ }
+ return state;
+}
+
+#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/viendi8l/viendi8l.h b/keyboards/viendi8l/viendi8l.h
new file mode 100644
index 0000000000..80070619f0
--- /dev/null
+++ b/keyboards/viendi8l/viendi8l.h
@@ -0,0 +1,37 @@
+/*
+Copyright 2020 Gondolindrim <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, 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, K2F, K2G, K2H, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H, \
+ K40, K41, K42, K43, K44, K46, K47, K5A, K5C, K5D, K5E, K5F, K5G, K5H \
+) { \
+ { 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, K2F, K2G, K2H }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, K3G, K3H }, \
+ { K40, K41, K42, K43, K44, ___, K46, K47, ___, ___, ___, ___, ___, ___, ___, ___, ___, ___ }, \
+ { ___, ___, ___, ___, ___, ___, ___, ___, ___, ___, K5A, ___, K5C, K5D, K5E, K5F, K5G, K5H } \
+}
diff --git a/keyboards/viktus/at101_bh/config.h b/keyboards/viktus/at101_bh/config.h
index 8c81fab916..9842d0ca6c 100644
--- a/keyboards/viktus/at101_bh/config.h
+++ b/keyboards/viktus/at101_bh/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER blindassassin111
-#define PRODUCT AT101_BH PCB
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 10
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F0, F1, F4, D4, F6, F5, F7, B6, B5, D5, C7, C6 }
#define MATRIX_COL_PINS { D1, D0, B7, B3, B2, B1, B0, E6, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/viktus/at101_bh/info.json b/keyboards/viktus/at101_bh/info.json
index 9fdac129f5..a5ef9d4ca2 100644
--- a/keyboards/viktus/at101_bh/info.json
+++ b/keyboards/viktus/at101_bh/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "AT101 BH PCB",
+ "keyboard_name": "AT101 Blackheart",
+ "manufacturer": "blindassassin111",
"url": "https://deskthority.net/group-buys-f50/programmable-vintage-board-pcbs-omnikey-at101-and-z-150-t19325.html",
"maintainer": "qmk, blindassassin111",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/viktus/omnikey_bh/config.h b/keyboards/viktus/omnikey_bh/config.h
index 7d170077a9..ab2e130da8 100644
--- a/keyboards/viktus/omnikey_bh/config.h
+++ b/keyboards/viktus/omnikey_bh/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER blindassassin111
-#define PRODUCT Omnikey Blackheart PCB
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 23
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B7, D0, D1, D2, D3, D4 }
#define MATRIX_COL_PINS { C2, C3, C4, C7, C1, C0, E1, E0, D7, F7, F6, F5, F4, F3, F2, F1, F0, E6, E7, B0, B1, B2, B3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/viktus/omnikey_bh/info.json b/keyboards/viktus/omnikey_bh/info.json
index 93b6aeefd8..c7ddd64e87 100644
--- a/keyboards/viktus/omnikey_bh/info.json
+++ b/keyboards/viktus/omnikey_bh/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Omnikey BH PCB",
+ "keyboard_name": "Omnikey Blackheart",
+ "manufacturer": "blindassassin111",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2.5, "y":0}, {"label":"K003", "x":4.5, "y":0}, {"label":"K004", "x":5.5, "y":0}, {"label":"K005", "x":6.5, "y":0}, {"label":"K006", "x":7.5, "y":0}, {"label":"K007", "x":9, "y":0}, {"label":"K008", "x":10, "y":0}, {"label":"K009", "x":11, "y":0}, {"label":"K010", "x":12, "y":0}, {"label":"K011", "x":13.5, "y":0}, {"label":"K012", "x":14.5, "y":0}, {"label":"K013", "x":15.5, "y":0}, {"label":"K014", "x":16.5, "y":0}, {"label":"K015", "x":18, "y":0}, {"label":"K016", "x":19, "y":0}, {"label":"K017", "x":20, "y":0}, {"label":"K100", "x":0, "y":1.5}, {"label":"K101", "x":1, "y":1.5}, {"label":"K102", "x":2.5, "y":1.5}, {"label":"K103", "x":3.5, "y":1.5}, {"label":"K104", "x":4.5, "y":1.5}, {"label":"K105", "x":5.5, "y":1.5}, {"label":"K106", "x":6.5, "y":1.5}, {"label":"K107", "x":7.5, "y":1.5}, {"label":"K108", "x":8.5, "y":1.5}, {"label":"K109", "x":9.5, "y":1.5}, {"label":"K110", "x":10.5, "y":1.5}, {"label":"K111", "x":11.5, "y":1.5}, {"label":"K112", "x":12.5, "y":1.5}, {"label":"K113", "x":13.5, "y":1.5}, {"label":"K114", "x":14.5, "y":1.5}, {"label":"K115", "x":15.5, "y":1.5, "w":2}, {"label":"K116", "x":18, "y":1.5}, {"label":"K117", "x":19, "y":1.5}, {"label":"K118", "x":20, "y":1.5}, {"label":"K119", "x":21.5, "y":1.5}, {"label":"K120", "x":22.5, "y":1.5}, {"label":"K121", "x":23.5, "y":1.5}, {"label":"K122", "x":24.5, "y":1.5}, {"label":"K200", "x":0, "y":2.5}, {"label":"K201", "x":1, "y":2.5}, {"label":"K202", "x":2.5, "y":2.5, "w":1.5}, {"label":"K203", "x":4, "y":2.5}, {"label":"K204", "x":5, "y":2.5}, {"label":"K205", "x":6, "y":2.5}, {"label":"K206", "x":7, "y":2.5}, {"label":"K207", "x":8, "y":2.5}, {"label":"K208", "x":9, "y":2.5}, {"label":"K209", "x":10, "y":2.5}, {"label":"K210", "x":11, "y":2.5}, {"label":"K211", "x":12, "y":2.5}, {"label":"K212", "x":13, "y":2.5}, {"label":"K213", "x":14, "y":2.5}, {"label":"K214", "x":15, "y":2.5}, {"label":"K215", "x":16, "y":2.5, "w":1.5}, {"label":"K216", "x":18, "y":2.5}, {"label":"K217", "x":19, "y":2.5}, {"label":"K218", "x":20, "y":2.5}, {"label":"K219", "x":21.5, "y":2.5}, {"label":"K220", "x":22.5, "y":2.5}, {"label":"K221", "x":23.5, "y":2.5}, {"label":"K222", "x":24.5, "y":2.5}, {"label":"K300", "x":0, "y":3.5}, {"label":"K301", "x":1, "y":3.5}, {"label":"K302", "x":2.5, "y":3.5, "w":1.75}, {"label":"K303", "x":4.25, "y":3.5}, {"label":"K304", "x":5.25, "y":3.5}, {"label":"K305", "x":6.25, "y":3.5}, {"label":"K306", "x":7.25, "y":3.5}, {"label":"K307", "x":8.25, "y":3.5}, {"label":"K308", "x":9.25, "y":3.5}, {"label":"K309", "x":10.25, "y":3.5}, {"label":"K310", "x":11.25, "y":3.5}, {"label":"K311", "x":12.25, "y":3.5}, {"label":"K312", "x":13.25, "y":3.5}, {"label":"K313", "x":14.25, "y":3.5}, {"label":"K314", "x":15.25, "y":3.5, "w":2.25}, {"label":"K315", "x":18, "y":3.5}, {"label":"K316", "x":19, "y":3.5}, {"label":"K317", "x":20, "y":3.5}, {"label":"K318", "x":21.5, "y":3.5}, {"label":"K319", "x":22.5, "y":3.5}, {"label":"K320", "x":23.5, "y":3.5}, {"label":"K321", "x":24.5, "y":3.5}, {"label":"K400", "x":0, "y":4.5}, {"label":"K401", "x":1, "y":4.5}, {"label":"K402", "x":2.5, "y":4.5, "w":2.25}, {"label":"K403", "x":4.75, "y":4.5}, {"label":"K404", "x":5.75, "y":4.5}, {"label":"K405", "x":6.75, "y":4.5}, {"label":"K406", "x":7.75, "y":4.5}, {"label":"K407", "x":8.75, "y":4.5}, {"label":"K408", "x":9.75, "y":4.5}, {"label":"K409", "x":10.75, "y":4.5}, {"label":"K410", "x":11.75, "y":4.5}, {"label":"K411", "x":12.75, "y":4.5}, {"label":"K412", "x":13.75, "y":4.5}, {"label":"K413", "x":14.75, "y":4.5, "w":1.75}, {"label":"K414", "x":16.5, "y":4.5}, {"label":"K415", "x":18, "y":4.5}, {"label":"K416", "x":19, "y":4.5}, {"label":"K417", "x":20, "y":4.5}, {"label":"K418", "x":21.5, "y":4.5}, {"label":"K419", "x":22.5, "y":4.5}, {"label":"K420", "x":23.5, "y":4.5}, {"label":"K421", "x":24.5, "y":4.5, "h":2}, {"label":"K500", "x":0, "y":5.5}, {"label":"K501", "x":1, "y":5.5}, {"label":"K502", "x":2.5, "y":5.5, "w":1.5}, {"label":"K503", "x":4, "y":5.5}, {"label":"K504", "x":5, "y":5.5, "w":1.5}, {"label":"K507", "x":6.5, "y":5.5, "w":7}, {"label":"K512", "x":13.5, "y":5.5}, {"label":"K513", "x":14.5, "y":5.5}, {"label":"K514", "x":15.5, "y":5.5}, {"label":"K515", "x":16.5, "y":5.5}, {"label":"K516", "x":18, "y":5.5}, {"label":"K517", "x":19, "y":5.5}, {"label":"K518", "x":20, "y":5.5}, {"label":"K519", "x":21.5, "y":5.5, "w":2}, {"label":"K520", "x":23.5, "y":5.5}]
diff --git a/keyboards/viktus/smolka/config.h b/keyboards/viktus/smolka/config.h
index fa655ae3e8..fe081689b3 100644
--- a/keyboards/viktus/smolka/config.h
+++ b/keyboards/viktus/smolka/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/viktus/smolka/info.json b/keyboards/viktus/smolka/info.json
index 8e9fe6fc8b..2ee502bd37 100644
--- a/keyboards/viktus/smolka/info.json
+++ b/keyboards/viktus/smolka/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "smolka",
+ "keyboard_name": "Smolka",
+ "manufacturer": "Viktus Design LLC",
"url": "",
"maintainer": "jrfhoutx",
+ "usb": {
+ "vid": "0x5644",
+ "pid": "0x0010",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/viktus/smolka/readme.md b/keyboards/viktus/smolka/readme.md
index d01a729ef0..8c364c36f6 100644
--- a/keyboards/viktus/smolka/readme.md
+++ b/keyboards/viktus/smolka/readme.md
@@ -27,4 +27,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/viktus/sp111/config.h b/keyboards/viktus/sp111/config.h
index c38eea5adc..2e2d0a7020 100644
--- a/keyboards/viktus/sp111/config.h
+++ b/keyboards/viktus/sp111/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5644 //VD
-#define PRODUCT_ID 0x5111
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Viktus Design
-#define PRODUCT SP111
-
/* key matrix size */
#define MATRIX_ROWS 6*2
#define MATRIX_COLS 11
diff --git a/keyboards/viktus/sp111/info.json b/keyboards/viktus/sp111/info.json
index ea4fe82e1d..c438b91e25 100644
--- a/keyboards/viktus/sp111/info.json
+++ b/keyboards/viktus/sp111/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "SP-111",
+ "keyboard_name": "SP111",
+ "manufacturer": "Viktus Design LLC",
"url": "https://thekey.company/products/sp-111",
"maintainer": "blindassassin111",
+ "usb": {
+ "vid": "0x5644",
+ "pid": "0x5111",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/viktus/sp_mini/config.h b/keyboards/viktus/sp_mini/config.h
index bce8a4cc4c..c26afa9684 100644
--- a/keyboards/viktus/sp_mini/config.h
+++ b/keyboards/viktus/sp_mini/config.h
@@ -20,13 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5644
-#define PRODUCT_ID 0x534D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Viktus_Design
-#define PRODUCT SP_Mini
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
diff --git a/keyboards/viktus/sp_mini/info.json b/keyboards/viktus/sp_mini/info.json
index 5c3cc4c5de..ec63304eff 100644
--- a/keyboards/viktus/sp_mini/info.json
+++ b/keyboards/viktus/sp_mini/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "sp_mini",
+ "keyboard_name": "SP_Mini",
+ "manufacturer": "Viktus Design LLC",
"url": "",
"maintainer": "jrfhoutx",
+ "usb": {
+ "vid": "0x5644",
+ "pid": "0x534D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/viktus/sp_mini/keymaps/peott-fr/keymap.c b/keyboards/viktus/sp_mini/keymaps/peott-fr/keymap.c
index 93d65c93a2..6d0727be2c 100644
--- a/keyboards/viktus/sp_mini/keymaps/peott-fr/keymap.c
+++ b/keyboards/viktus/sp_mini/keymaps/peott-fr/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, L_CTRL, KC_LGUI, L_ALT, KC_NO, LHAND, RHAND, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_LHAND] = LAYOUT_all(
- RESET, KC_ESC, KC_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,
+ QK_BOOT, KC_ESC, KC_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_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_PGUP, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ENT, KC_TRNS,
KC_PGDN, KC_LSFT, KC_CALC, KC_MYCM, KC_TRNS, KC_ENT, KC_BSPC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RSPC, KC_TRNS,
diff --git a/keyboards/viktus/styrka/config.h b/keyboards/viktus/styrka/config.h
index 666ebbf866..118dafb1f7 100644
--- a/keyboards/viktus/styrka/config.h
+++ b/keyboards/viktus/styrka/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5644 // "VD" = Viktus Design LLC
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Viktus Design LLC
-#define PRODUCT Styrka
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 9
@@ -48,7 +41,6 @@ EncA (B6) because it is not used in the default PCB
All Extra pins (A8, B15, B14, B13, B3, B5, B8, B9) , for the same reason;
B0, which is unconnected on the PCB
*/
-//#define UNUSED_PINS { B0, B6, B13, B14, B15, B8, B9, B5, B3 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/viktus/styrka/info.json b/keyboards/viktus/styrka/info.json
index f3d828a1a6..c1c161e5f4 100644
--- a/keyboards/viktus/styrka/info.json
+++ b/keyboards/viktus/styrka/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Styrka",
+ "manufacturer": "Viktus Design LLC",
"url": "https",
"maintainer": "jrfhoutx",
+ "usb": {
+ "vid": "0x5644",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_default": {
"layout": [{"label":"F1", "x":0, "y":0}, {"label":"MO(1)", "x":1, "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":8.25, "y":0}, {"label":"&", "x":9.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":"Backspace", "x":15.25, "y":0, "w":2}, {"label":"Insert", "x":17.25, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"Delete", "x":17.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "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":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgUp", "x":17.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"PgDn", "x":17.25, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Ctrl", "x":2.25, "y":4, "w":1.25}, {"label":"Win", "x":3.5, "y":4, "w":1.25}, {"label":"Alt", "x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":6.25}, {"label":"Alt", "x":12.25, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.5, "y":4, "w":1.25}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}]
diff --git a/keyboards/viktus/styrka/keymaps/all/keymap.c b/keyboards/viktus/styrka/keymaps/all/keymap.c
index 01c8362e24..7a61b3a3fa 100644
--- a/keyboards/viktus/styrka/keymaps/all/keymap.c
+++ b/keyboards/viktus/styrka/keymaps/all/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_all( /* Styrka 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,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/styrka/keymaps/split_bs/keymap.c b/keyboards/viktus/styrka/keymaps/split_bs/keymap.c
index 435bcf0a44..45cbe86cdb 100644
--- a/keyboards/viktus/styrka/keymaps/split_bs/keymap.c
+++ b/keyboards/viktus/styrka/keymaps/split_bs/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_split_bs( /* Styrka 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,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/z150_bh/config.h b/keyboards/viktus/z150_bh/config.h
index 0bfbe3228f..813079bd9f 100644
--- a/keyboards/viktus/z150_bh/config.h
+++ b/keyboards/viktus/z150_bh/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER blindassassin111
-#define PRODUCT Z-150 PCB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 20
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { C3, C2, C1, C0, E1 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D4, D5, D7, E0, C7, C6, C5, C4, F0, F1, F2, F3, F4, F5, F6, F7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/viktus/z150_bh/info.json b/keyboards/viktus/z150_bh/info.json
index 3339baee89..0c471fd1ea 100644
--- a/keyboards/viktus/z150_bh/info.json
+++ b/keyboards/viktus/z150_bh/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Z-150 BH",
+ "keyboard_name": "Z-150 Blackheart",
+ "manufacturer": "blindassassin111",
"url": "",
"maintainer": "qmk, blindassassin111",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/vitamins_included/config.h b/keyboards/vitamins_included/config.h
index 9939167315..013bf0d4e8 100644
--- a/keyboards/vitamins_included/config.h
+++ b/keyboards/vitamins_included/config.h
@@ -19,10 +19,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
//#define USE_I2C
-/* Common USB Device descriptor parameters */
-#define VENDOR_ID 0x1209
-#define PRODUCT_ID 0xBEE5
-#define MANUFACTURER Duckle29
-#define PRODUCT Vitamins included
-
#include "config_common.h"
diff --git a/keyboards/vitamins_included/info.json b/keyboards/vitamins_included/info.json
index ee7dadead4..acfacd6dca 100644
--- a/keyboards/vitamins_included/info.json
+++ b/keyboards/vitamins_included/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "Vitamins Included",
+ "manufacturer": "Duckle29",
"url": "",
"maintainer": "Duckle29",
+ "usb": {
+ "vid": "0x1209",
+ "pid": "0xBEE5"
+ },
"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}]
diff --git a/keyboards/vitamins_included/keymaps/numpad/keymap.c b/keyboards/vitamins_included/keymaps/numpad/keymap.c
index 5bff826145..03cfafda11 100644
--- a/keyboards/vitamins_included/keymaps/numpad/keymap.c
+++ b/keyboards/vitamins_included/keymaps/numpad/keymap.c
@@ -42,14 +42,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |------+------+------+------+------+------|------+------+------+------+------+------|
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | RESET RESET | | | | |RGBMOD|
+ * | | | | | | QK_BOOT QK_BOOT | | | | |RGBMOD|
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, RESET, RESET, _______, _______, _______, _______, RGB_MOD
+ _______, _______, _______, _______, _______, QK_BOOT, QK_BOOT, _______, _______, _______, _______, RGB_MOD
)
diff --git a/keyboards/vitamins_included/keymaps/vitavim/keymap.c b/keyboards/vitamins_included/keymaps/vitavim/keymap.c
index e90f0e076e..d59ff88029 100644
--- a/keyboards/vitamins_included/keymaps/vitavim/keymap.c
+++ b/keyboards/vitamins_included/keymaps/vitavim/keymap.c
@@ -61,7 +61,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------------------------------------------------------------------------'
*/
[_VIM] = LAYOUT_ortho_4x12(
- KC_TAB, KC_QUOT, KC_B, KC_W, KC_E, KC_D, KC_Y, KC_VOLD, KC_VOLU, TO(0), TG(2), RESET,
+ KC_TAB, KC_QUOT, KC_B, KC_W, KC_E, KC_D, KC_Y, KC_VOLD, KC_VOLU, TO(0), TG(2), QK_BOOT,
LCTL_T(KC_ESC), KC_HOME, KC_HOME, KC_PGUP, KC_PGDN, KC_END, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, LT(2,KC_SCLN), KC_ENT,
KC_LSFT, KC_SCLN, KC_Q, KC_CIRC, KC_DLR, KC_X, RALT(KC_EQL), RCTL(KC_PLUS), RCTL(KC_PMNS), KC_NO, KC_NO, KC_TRNS,
KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, LSFT(KC_LCTL), KC_SPC, KC_DEL, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_TRNS
diff --git a/keyboards/vitamins_included/rev1/config.h b/keyboards/vitamins_included/rev1/config.h
index 675dae1044..0a32ba8c47 100644
--- a/keyboards/vitamins_included/rev1/config.h
+++ b/keyboards/vitamins_included/rev1/config.h
@@ -25,9 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EE_HANDS
#define SOFT_SERIAL_PIN D0
-/* USB Device descriptor parameters */
-#define DEVICE_VER 0x0001
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/vitamins_included/rev1/info.json b/keyboards/vitamins_included/rev1/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/vitamins_included/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/vitamins_included/rev2/config.h b/keyboards/vitamins_included/rev2/config.h
index 6ea80ec05a..fff3e9cccf 100644
--- a/keyboards/vitamins_included/rev2/config.h
+++ b/keyboards/vitamins_included/rev2/config.h
@@ -24,9 +24,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define SPLIT_HAND_PIN B4
#define SOFT_SERIAL_PIN D0
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0002
-
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 8
diff --git a/keyboards/vitamins_included/rev2/info.json b/keyboards/vitamins_included/rev2/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/vitamins_included/rev2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/w1_at/config.h b/keyboards/w1_at/config.h
index e923773de7..e04d3b15ef 100644
--- a/keyboards/w1_at/config.h
+++ b/keyboards/w1_at/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -39,7 +32,7 @@ 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
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
/* Indicator LEDs */
diff --git a/keyboards/w1_at/info.json b/keyboards/w1_at/info.json
index 07a7f72844..1c4f6bf22a 100644
--- a/keyboards/w1_at/info.json
+++ b/keyboards/w1_at/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "W1-AT",
+ "manufacturer": "Yiancar-Designs",
"url": "https://yiancar-designs.com",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x5754",
+ "device_version": "0.0.1"
+ },
"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/waldo/config.h b/keyboards/waldo/config.h
index b4fac7a606..965f9d1893 100644
--- a/keyboards/waldo/config.h
+++ b/keyboards/waldo/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4744 // GD for Greenwald Designs
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Greenwald Designs
-#define PRODUCT Waldo
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -32,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Planck PCB default pin-out */
#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
#define MATRIX_COL_PINS { F7, D5, D3, D2, B3, B2, C7, C6, B6, B5, B4, D7, D6, D4, B1 }
-#define UNUSED_PINS
#define BACKLIGHT_PIN B7
#define BACKLIGHT_BREATHING
diff --git a/keyboards/waldo/info.json b/keyboards/waldo/info.json
index 06f0c02314..199d37be35 100644
--- a/keyboards/waldo/info.json
+++ b/keyboards/waldo/info.json
@@ -1,5 +1,12 @@
{
+ "keyboard_name": "Waldo",
+ "manufacturer": "Greenwald Designs",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x4744",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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":13.75, "y":2, "w":1.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.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}]
diff --git a/keyboards/walletburner/cajal/config.h b/keyboards/walletburner/cajal/config.h
index f653710e6c..a162ff514c 100644
--- a/keyboards/walletburner/cajal/config.h
+++ b/keyboards/walletburner/cajal/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5742 // WB
-#define PRODUCT_ID 0x6361 // CJ
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Walletburner
-#define PRODUCT Cajal
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D4, D5, C7, C6 }
#define MATRIX_COL_PINS { F4, F1, F0, E6, B0, B1, B2, B3, D0, D1, D2, D3, B4, F6 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { D6 }
#define ENCODERS_PAD_B { D7 }
diff --git a/keyboards/walletburner/cajal/info.json b/keyboards/walletburner/cajal/info.json
index 5539c501a4..99eb31c61a 100644
--- a/keyboards/walletburner/cajal/info.json
+++ b/keyboards/walletburner/cajal/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "cajal",
+ "keyboard_name": "Cajal",
+ "manufacturer": "Walletburner",
"url": "https://qmk.fm/keyboards/",
"maintainer": "worldspawn00",
+ "usb": {
+ "vid": "0x5742",
+ "pid": "0x6361",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_stagger": {
"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":"Back Space", "x":12, "y":0}, {"label":"RGB", "x":13.25, "y":0.5}, {"label":"", "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":"Return", "x":11.25, "y":1, "w":1.75}, {"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, "w":1.25}, {"label":"&uarr;", "x":12.25, "y":2.25}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Alt", "x":1.25, "y":3}, {"label":"Super", "x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3, "w":2.25}, {"x":5.75, "y":3, "w":2.75}, {"label":"Ctrl", "x":8.5, "y":3, "w":1.25}, {"label":"Del", "x":9.75, "y":3, "w":1.25}, {"label":"&larr;", "x":11.25, "y":3.25}, {"label":"&darr;", "x":12.25, "y":3.25}, {"label":"&rarr;", "x":13.25, "y":3.25}]
diff --git a/keyboards/walletburner/neuron/config.h b/keyboards/walletburner/neuron/config.h
index c1b99ead11..a28b7c51c9 100644
--- a/keyboards/walletburner/neuron/config.h
+++ b/keyboards/walletburner/neuron/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5742 // WB
-#define PRODUCT_ID 0x6E75 // NU
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Walletburner
-#define PRODUCT Neuron
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D3, F5 }
#define MATRIX_COL_PINS { F0, F7, F6, F4, F1, E6, D6, D2, B4, D7, B6, D5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/walletburner/neuron/info.json b/keyboards/walletburner/neuron/info.json
index de73dacf4e..d7c2c7126c 100644
--- a/keyboards/walletburner/neuron/info.json
+++ b/keyboards/walletburner/neuron/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Neuron",
+ "manufacturer": "Walletburner",
"url": "https://qmk.fm/keyboards/",
"maintainer": "worldspawn00",
+ "usb": {
+ "vid": "0x5742",
+ "pid": "0x6E75",
+ "device_version": "0.0.1"
+ },
"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":"Back<br>Space", "x":11, "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":"Enter", "x":10.25, "y":1, "w":1.75}, {"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":"Shift", "x":9.75, "y":2, "w":1.25}, {"label":"Fn", "x":11, "y":2}, {"label":"Hyper", "x":1, "y":3, "w":1.25}, {"label":"Super", "x":2.25, "y":3, "w":1.25}, {"x":3.5, "y":3, "w":1.75}, {"x":5.25, "y":3}, {"x":6.25, "y":3, "w":2.25}, {"label":"Meta", "x":8.5, "y":3, "w":1.25}, {"label":"Super", "x":9.75, "y":3, "w":1.25}]
diff --git a/keyboards/walletburner/neuron/keymaps/brandonschlack/keymap.c b/keyboards/walletburner/neuron/keymaps/brandonschlack/keymap.c
index 1193fa32c2..b7ab190862 100644
--- a/keyboards/walletburner/neuron/keymaps/brandonschlack/keymap.c
+++ b/keyboards/walletburner/neuron/keymaps/brandonschlack/keymap.c
@@ -99,7 +99,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT( \
- QM_MAKE, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, \
+ QM_MAKE, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, _______ \
diff --git a/keyboards/waterfowl/config.h b/keyboards/waterfowl/config.h
new file mode 100644
index 0000000000..299da6f9f0
--- /dev/null
+++ b/keyboards/waterfowl/config.h
@@ -0,0 +1,49 @@
+/* Copyright 2022 CyanDuck
+*
+* This program is free software: you can 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"
+
+/* Key matrix size */
+/* Rows are doubled up */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 5
+
+// Wiring
+#define MATRIX_ROW_PINS { D4, C6, D7, E6 }
+#define MATRIX_COL_PINS { F4, F5, F6, F7, B1 }
+
+// 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
+#define OLED_DISPLAY_128X64
+#define SPLIT_MODS_ENABLE
+#define SPLIT_WPM_ENABLE
+#define SPLIT_USB_DETECT
+
+// Encoders
+#define ENCODERS_PAD_A { B4, B3 }
+#define ENCODERS_PAD_B { B5, B2 }
+#define ENCODER_RESOLUTIONS { 4, 2 }
+
+// Tapping term
+#define TAPPING_TERM 200 \ No newline at end of file
diff --git a/keyboards/waterfowl/info.json b/keyboards/waterfowl/info.json
new file mode 100644
index 0000000000..f8219ec80a
--- /dev/null
+++ b/keyboards/waterfowl/info.json
@@ -0,0 +1,60 @@
+{
+ "keyboard_name": "Waterfowl",
+ "manufacturer": "CyanDuck",
+ "url": "",
+ "maintainer": "JW2586",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x9CE3",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":1},
+ {"x":1, "y":0.25},
+ {"x":2, "y":0},
+ {"x":3, "y":0.375},
+ {"x":4, "y":0.5},
+ {"x":9, "y":0.5},
+ {"x":10, "y":0.375},
+ {"x":11, "y":0},
+ {"x":12, "y":0.25},
+ {"x":13, "y":1},
+
+ {"x":0, "y":2},
+ {"x":1, "y":1.25},
+ {"x":2, "y":1},
+ {"x":3, "y":1.375},
+ {"x":4, "y":1.5},
+ {"x":9, "y":1.5},
+ {"x":10, "y":1.375},
+ {"x":11, "y":1},
+ {"x":12, "y":1.25},
+ {"x":13, "y":2},
+
+ {"x":0, "y":3},
+ {"x":1, "y":2.25},
+ {"x":2, "y":2},
+ {"x":3, "y":2.375},
+ {"x":4, "y":2.5},
+ {"x":9, "y":2.5},
+ {"x":10, "y":2.375},
+ {"x":11, "y":2},
+ {"x":12, "y":2.25},
+ {"x":13, "y":3},
+
+ {"x":2, "y":3.5},
+ {"x":3.5, "y":3.5},
+ {"x":4.5, "y":3.7},
+ {"x":5.5, "y":4.1},
+ {"x":5.5, "y":2.5},
+ {"x":7.5, "y":2.5},
+ {"x":7.5, "y":4.1},
+ {"x":8.5, "y":3.7},
+ {"x":9.5, "y":3.5},
+ {"x":11, "y":3.5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/waterfowl/keymaps/cyanduck/keymap.c b/keyboards/waterfowl/keymaps/cyanduck/keymap.c
new file mode 100644
index 0000000000..ac52c7454d
--- /dev/null
+++ b/keyboards/waterfowl/keymaps/cyanduck/keymap.c
@@ -0,0 +1,129 @@
+/* Copyright 2022 CyanDuck
+*
+* This program is free software: you can 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
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _COLEMAKDH,
+ _NAVNUM,
+ _SYM,
+ _FUNC,
+ _GAME
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Colemak-DH
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | Q | W | F | P | B | | J | L | U | Y | ; |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | A | R | S | T | G | | M | N | E | I | O |
+ * |------+------+------+------+------| ,-----. ,-----. |------+------+------+------+------|
+ * | Z | X | C | D | V | | 2 | | 3 | | K | H | , | . | / |
+ * `----------------------------------' `-----' `-----' `----------------------------------'
+ * ,-----. ,--------------------. ,--------------------. ,-----.
+ * | 1 | | DEL | SPACE | TAB | | TO(0) | BS | ENTER | | 4 |
+ * `-----' `--------------------' `--------------------' `-----'
+ */
+[_COLEMAKDH] = LAYOUT(
+ KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
+ KC_A, MT(MOD_LALT, KC_R), MT(MOD_LCTL, KC_S), MT(MOD_LSFT, KC_T), KC_G, KC_M, MT(MOD_LSFT, KC_N), MT(MOD_LCTL, KC_E), MT(MOD_LALT, KC_I), KC_O,
+ KC_Z, KC_X, KC_C, MT(MOD_LGUI, KC_D), KC_V, KC_K, MT(MOD_LGUI, KC_H), KC_COMM, KC_DOT, KC_SLSH,
+ KC_1, LT(3,KC_DEL), LT(1,KC_SPC), KC_TAB, KC_2, KC_3, TO(0), KC_BSPC, LT(2,KC_ENT), KC_4
+),
+
+/* NAVNUM
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | ESC | PgUp | UP | PgDn | TO(4)| | / | 7 | 8 | 9 | - |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Home | Left | Down | Right| End | | = | 4 | 5 | 6 | + |
+ * |------+------+------+------+------| ,-----. ,-----. |------+------+------+------+------|
+ * | | | INS | TO(2)| | | 2 | | 3 | | 0 | 1 | 2 | 3 | * |
+ * `----------------------------------' `-----' `-----' `----------------------------------'
+ * ,-----. ,--------------------. ,--------------------. ,-----.
+ * | 1 | | DEL | SPACE | MO(3)| | TO(0) | BS | ENTER | | 4 |
+ * `-----' `--------------------' `--------------------' `-----'
+ */
+[_NAVNUM] = LAYOUT(
+ KC_ESC, KC_PGUP, KC_UP, KC_PGDN, TO(4), KC_SLSH, KC_7, KC_8, KC_9, KC_MINS,
+ KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_EQL, KC_4, KC_5, KC_6, KC_PLUS,
+ KC_NO, KC_NO, KC_INS, TO(2), KC_NO, KC_0, KC_1, KC_2, KC_3, KC_ASTR,
+ KC_1, LT(3,KC_DEL), LT(1,KC_SPC), KC_ESC, KC_2, KC_3, TO(0), KC_BSPC, LT(2,KC_ENT), KC_4
+),
+
+/* SYM
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | % | @ | [ | ] | \ | | ¦ | ¬ | ^ | | |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | # | ! | ( | ) | | | | _ | ' | " | ~ | ` |
+ * |------+------+------+------+------| ,-----. ,-----. |------+------+------+------+------|
+ * | $ | £ | { | } | & | | 2 | | 3 | | TO(1)| | | | |
+ * `----------------------------------' `-----' `-----' `----------------------------------'
+ * ,-----. ,--------------------. ,--------------------. ,-----.
+ * | 1 | | DEL | SPACE | TAB | | TO(0) | BS | ENTER | | 4 |
+ * `-----' `--------------------' `--------------------' `-----'
+ */
+[_SYM] = LAYOUT(
+ KC_PERC, S(KC_QUOT), KC_LBRC, KC_RBRC, KC_NUBS, RALT(KC_GRV), S(KC_GRV), KC_CIRC, KC_NO, KC_NO,
+ KC_NONUS_HASH, KC_EXLM, KC_LPRN, KC_RPRN, S(KC_NUBS), KC_UNDS, KC_QUOT, S(KC_2), S(KC_NUHS), KC_GRV,
+ KC_DLR, S(KC_3), KC_LCBR, KC_RCBR, KC_AMPR, TO(1), KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_1, LT(3,KC_DEL), LT(1,KC_SPC), KC_TAB, KC_2, KC_3, TO(0), KC_BSPC, LT(2,KC_ENT), KC_4
+),
+
+/* FUNC
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | | | | | | | | F7 | F8 | F9 | F11 |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | | | | | | | | F4 | F5 | F6 | F12 |
+ * |------+------+------+------+------| ,-----. ,-----. |------+------+------+------+------|
+ * | Reset| | | | | | 2 | | 3 | | F10 | F1 | F2 | F3 | F13 |
+ * `----------------------------------' `-----' `-----' `----------------------------------'
+ * ,-----. ,--------------------. ,--------------------. ,-----.
+ * | 1 | | DEL | SPACE | TAB | | TO(0) | BS | ENTER | | 4 |
+ * `-----' `--------------------' `--------------------' `-----'
+ */
+[_FUNC] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F11,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F4, KC_F5, KC_F6, KC_F12,
+ QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_F10, KC_F1, KC_F2, KC_F3, KC_F13,
+ KC_1, LT(3,KC_DEL), LT(1,KC_SPC), KC_TAB, KC_2, KC_3, TO(0), KC_BSPC, LT(2,KC_ENT), KC_4
+),
+
+/* GAME
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | ESC | Q | W | E | R | | | | | | |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * |Shift | A | S | D | F | | | | | | |
+ * |------+------+------+------+------| ,-----. ,-----. |------+------+------+------+------|
+ * | Ctrl | Z | X | C | V | | 2 | | 3 | | | | | | |
+ * `----------------------------------' `-----' `-----' `----------------------------------'
+ * ,-----. ,--------------------. ,--------------------. ,-----.
+ * | 1 | | T | SPACE | TAB | | TO(0) | BS | ENTER | | 4 |
+ * `-----' `--------------------' `--------------------' `-----'
+ */
+[_GAME] = LAYOUT(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_1, KC_T, KC_SPC, KC_TAB, KC_2, KC_3, TO(0), KC_BSPC, LT(2,KC_ENT), KC_4
+),
+};
diff --git a/keyboards/waterfowl/keymaps/default/keymap.c b/keyboards/waterfowl/keymaps/default/keymap.c
new file mode 100644
index 0000000000..18b750466f
--- /dev/null
+++ b/keyboards/waterfowl/keymaps/default/keymap.c
@@ -0,0 +1,108 @@
+/* Copyright 2022 CyanDuck
+*
+* This program is free software: you can 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
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _QWERTY,
+ _NAVNUM,
+ _SYM,
+ _FUNC,
+};
+
+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 | | 2 | | 3 | | N | M | , | . | / |
+ * `----------------------------------' `-----' `-----' `----------------------------------'
+ * ,-----. ,--------------------. ,--------------------. ,-----.
+ * | 1 | | DEL | SPACE | TAB | | ESC | BS | ENTER | | 4 |
+ * `-----' `--------------------' `--------------------' `-----'
+ */
+[_QWERTY] = LAYOUT(
+ KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
+ MT(MOD_LGUI, KC_A), MT(MOD_LALT, KC_S), MT(MOD_LCTL, KC_D), MT(MOD_LSFT, KC_F), KC_G, KC_H, MT(MOD_LSFT, KC_J), MT(MOD_LCTL, KC_K), MT(MOD_LALT, KC_L), MT(MOD_LGUI, KC_SCLN),
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
+ KC_1, LT(3,KC_DEL), LT(1,KC_SPC), KC_TAB, KC_2, KC_3, KC_ESC, KC_BSPC, LT(2,KC_ENT), KC_4
+),
+
+/* NAVNUM
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | | PgUp | UP | PgDn | | | / | 7 | 8 | 9 | - |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Home | Left | Down | Right| End | | = | 4 | 5 | 6 | + |
+ * |------+------+------+------+------| ,-----. ,-----. |------+------+------+------+------|
+ * | | | INS | | | | 2 | | 3 | | 0 | 1 | 2 | 3 | * |
+ * `----------------------------------' `-----' `-----' `----------------------------------'
+ * ,-----. ,--------------------. ,--------------------. ,-----.
+ * | 1 | | DEL | SPACE | MO(3)| | ESC | BS | ENTER | | 4 |
+ * `-----' `--------------------' `--------------------' `-----'
+ */
+[_NAVNUM] = LAYOUT(
+ KC_NO, KC_PGUP, KC_UP, KC_PGDN, KC_NO, KC_SLSH, KC_7, KC_8, KC_9, KC_MINS,
+ KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_EQL, KC_4, KC_5, KC_6, KC_PLUS,
+ KC_NO, KC_NO, KC_INS, KC_NO, KC_NO, KC_0, KC_1, KC_2, KC_3, KC_ASTR,
+ KC_1, LT(3,KC_DEL), LT(1,KC_SPC), KC_TAB, KC_2, KC_3, KC_ESC, KC_BSPC, LT(2,KC_ENT), KC_4
+),
+
+/* SYM
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | % | @ | [ | ] | \ | | ¦ | ¬ | ^ | | |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | # | ! | ( | ) | | | | _ | ' | " | ~ | ` |
+ * |------+------+------+------+------| ,-----. ,-----. |------+------+------+------+------|
+ * | $ | £ | { | } | & | | 2 | | 3 | | | | | | |
+ * `----------------------------------' `-----' `-----' `----------------------------------'
+ * ,-----. ,--------------------. ,--------------------. ,-----.
+ * | 1 | | DEL | SPACE | TAB | | ESC | BS | ENTER | | 4 |
+ * `-----' `--------------------' `--------------------' `-----'
+ */
+[_SYM] = LAYOUT(
+ KC_PERC, S(KC_QUOT), KC_LBRC, KC_RBRC, KC_NUBS, RALT(KC_GRV), S(KC_GRV), KC_CIRC, KC_NO, KC_NO,
+ KC_NONUS_HASH, KC_EXLM, KC_LPRN, KC_RPRN, S(KC_NUBS), KC_UNDS, KC_QUOT, S(KC_2), S(KC_NUHS), KC_GRV,
+ KC_DLR, S(KC_3), KC_LCBR, KC_RCBR, KC_AMPR, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_1, LT(3,KC_DEL), LT(1,KC_SPC), KC_TAB, KC_2, KC_3, KC_ESC, KC_BSPC, LT(2,KC_ENT), KC_4
+),
+
+/* FUNC
+ *
+ * ,----------------------------------. ,----------------------------------.
+ * | | | | | | | | F7 | F8 | F9 | F11 |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | | | | | | | | F4 | F5 | F6 | F12 |
+ * |------+------+------+------+------| ,-----. ,-----. |------+------+------+------+------|
+ * | Reset| | | | | | 2 | | 3 | | F10 | F1 | F2 | F3 | F13 |
+ * `----------------------------------' `-----' `-----' `----------------------------------'
+ * ,-----. ,--------------------. ,--------------------. ,-----.
+ * | 1 | | DEL | SPACE | TAB | | ESC | BS | ENTER | | 4 |
+ * `-----' `--------------------' `--------------------' `-----'
+ */
+[_FUNC] = LAYOUT(
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F11,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F4, KC_F5, KC_F6, KC_F12,
+ QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_F10, KC_F1, KC_F2, KC_F3, KC_F13,
+ KC_1, LT(3,KC_DEL), LT(1,KC_SPC), KC_TAB, KC_2, KC_3, KC_ESC, KC_BSPC, LT(2,KC_ENT), KC_4
+),
+};
diff --git a/keyboards/waterfowl/readme.md b/keyboards/waterfowl/readme.md
new file mode 100644
index 0000000000..9b504ca769
--- /dev/null
+++ b/keyboards/waterfowl/readme.md
@@ -0,0 +1,21 @@
+# Waterfowl
+
+The Waterfowl is a 36-key split keyboard inspired by the Kyria and Arch-36.
+
+* Keyboard Maintainer: [CyanDuck](https://github.com/JW2586)
+* Hardware Supported: Pro Micro 5V/16MHz and compatible.
+
+Make example for this keyboard (after setting up your build environment):
+
+ make waterfowl:default
+
+Example of flashing this keyboard:
+
+ make waterfowl:default:flash
+
+Enter the bootloader by:
+- Press the key mapped to reset (bottom left key in FUNC layer/layer 3)
+- Press the reset button on the PCB
+- Connect GND and RST pins on pro micro
+
+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/waterfowl/rules.mk b/keyboards/waterfowl/rules.mk
new file mode 100644
index 0000000000..1515d5f866
--- /dev/null
+++ b/keyboards/waterfowl/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
+AUDIO_ENABLE = no # Audio output
+
+OLED_ENABLE = yes # Enables the use of OLED displays
+OLED_DRIVER = SSD1306 # Specifies the type of OLED
+SPLIT_KEYBOARD = yes # Enables split functionality
+ENCODER_ENABLE = yes # Enables the encoders \ No newline at end of file
diff --git a/keyboards/waterfowl/waterfowl.c b/keyboards/waterfowl/waterfowl.c
new file mode 100644
index 0000000000..55dcdf4796
--- /dev/null
+++ b/keyboards/waterfowl/waterfowl.c
@@ -0,0 +1,161 @@
+/* Copyright 2022 CyanDuck
+*
+* This program is free software: you can 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 "waterfowl.h"
+
+#ifdef ENCODER_ENABLE
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+ if (!encoder_update_user(index, clockwise)) {
+ return false;
+ }
+ if (index == 0) { // Left roller
+ if (clockwise) {
+ tap_code(KC_MS_WH_DOWN);
+ } else {
+ tap_code(KC_MS_WH_UP);
+ }
+ } else if (index == 1) { // Left encoder
+ if (clockwise) {
+ tap_code16(S(KC_TAB));
+ } else {
+ tap_code(KC_TAB);
+ }
+ } else if (index == 2) { // Right roller
+ if (clockwise) {
+ tap_code16(S(KC_MS_WH_DOWN));
+ } else {
+ tap_code16(S(KC_MS_WH_UP));
+ }
+ } else if (index == 3) { // Right encoder
+ if (clockwise) {
+ tap_code(KC_RIGHT);
+ } else {
+ tap_code(KC_LEFT);
+ }
+ }
+
+ return true;
+}
+#endif
+
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ if (is_keyboard_master() && is_keyboard_left()) {
+ return OLED_ROTATION_90;
+ } else {
+ return OLED_ROTATION_270;
+ }
+}
+bool oled_task_kb(void) {
+ if (!oled_task_user()) {
+ return false;
+ }
+ if (is_keyboard_master()) {
+ // Host Keyboard Layer Status
+ oled_write_P(PSTR("LAYER:\n"), false);
+ oled_write_P(PSTR("\n"), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case 0:
+ oled_write_P(PSTR("DEFAULT\n\n\n\n"), false);
+ break;
+ case 3:
+ oled_write_P(PSTR("FUNCTION\n\n\n\n"), false);
+ break;
+ case 2:
+ oled_write_P(PSTR("SYMBOLS\n\n\n\n"), false);
+ break;
+ case 1:
+ oled_write_P(PSTR("NAVIGATIONAND\nNUMBERS\n"), false);
+ break;
+ default:
+ oled_write_ln_P(PSTR("Undefined"), false);
+ }
+ } else {
+ static const char PROGMEM my_logo[] = {
+ // Paste the code from the previous step below this line!
+ // 'waterfowl for OLED', 64x128px
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x40, 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, 0x80, 0xc0, 0x40, 0x20, 0x10, 0x10, 0x08, 0x0c, 0x04, 0x04, 0x02, 0x02, 0x02, 0x01,
+0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x1a, 0x26, 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, 0xe0,
+0x1c, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1e, 0x16, 0x1c, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x03, 0x0c, 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, 0x80, 0xf0, 0xfc, 0xff,
+0x78, 0xf8, 0xfc, 0xfe, 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, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xfc,
+0xff, 0xff, 0x7f, 0x7f, 0x3f, 0x3f, 0x1e, 0x1c, 0x1c, 0x14, 0x10, 0x10, 0x08, 0x08, 0x10, 0x10,
+0x10, 0x10, 0x10, 0x30, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x38, 0x7c, 0x7e, 0x7f, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f, 0x1f, 0x1f, 0x0f, 0x0f, 0x07, 0x03,
+0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0xc0, 0x38, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0x38,
+0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc0, 0x3c, 0x03, 0x80,
+0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x80, 0x80, 0xc0, 0x40, 0x7f, 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, 0x06, 0x04, 0x0c, 0x0c, 0x0c, 0x04, 0x07, 0x02, 0x03, 0x01,
+0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x02, 0x06, 0x06, 0x06,
+0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 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, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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(my_logo, sizeof(my_logo));
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/waterfowl/waterfowl.h b/keyboards/waterfowl/waterfowl.h
new file mode 100644
index 0000000000..0c7f897dbf
--- /dev/null
+++ b/keyboards/waterfowl/waterfowl.h
@@ -0,0 +1,44 @@
+/* Copyright 2022 CyanDuck
+*
+* This program is free software: you can 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"
+
+/* 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, R04, R03, R02, R01, R00, \
+ L05, L06, L07, L08, L09, R09, R08, R07, R06, R05, \
+ L10, L11, L12, L13, L14, R14, R13, R12, R11, R10, \
+ L15, L16, L17, L18, L19, R19, R18, R17, R16, R15 \
+) \
+{ \
+ { L00, L01, L02, L03, L04 }, \
+ { L05, L06, L07, L08, L09 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L15, L16, L17, L18, L19 }, \
+ { R00, R01, R02, R03, R04 }, \
+ { R05, R06, R07, R08, R09 }, \
+ { R10, R11, R12, R13, R14 }, \
+ { R15, R16, R17, R18, R19}, \
+}
diff --git a/keyboards/wavtype/foundation/config.h b/keyboards/wavtype/foundation/config.h
index dff85685e1..ac7a26de9e 100644
--- a/keyboards/wavtype/foundation/config.h
+++ b/keyboards/wavtype/foundation/config.h
@@ -5,13 +5,6 @@
#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
@@ -28,7 +21,6 @@
*/
#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
diff --git a/keyboards/wavtype/foundation/info.json b/keyboards/wavtype/foundation/info.json
index 23ae9a89c0..90c0e2270b 100644
--- a/keyboards/wavtype/foundation/info.json
+++ b/keyboards/wavtype/foundation/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "foundation",
+ "manufacturer": "protozoa.studio",
"url": "",
"maintainer": "wavtype",
+ "usb": {
+ "vid": "0x03A7",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_ansi_split_bs",
"LAYOUT_tkl_ansi_7u": "LAYOUT_ansi_tsangan_split_bs",
diff --git a/keyboards/wavtype/foundation/readme.md b/keyboards/wavtype/foundation/readme.md
index 69f9bd3a0d..68ad269d07 100644
--- a/keyboards/wavtype/foundation/readme.md
+++ b/keyboards/wavtype/foundation/readme.md
@@ -19,4 +19,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (by default this is set to "Fn + R") \ No newline at end of file
diff --git a/keyboards/wavtype/p01_ultra/config.h b/keyboards/wavtype/p01_ultra/config.h
index 168c22259b..19eaa6f52d 100644
--- a/keyboards/wavtype/p01_ultra/config.h
+++ b/keyboards/wavtype/p01_ultra/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x03A7
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wavtype
-#define PRODUCT p01_ultra
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B4, D7, D6, B5, B6, D4 }
#define MATRIX_COL_PINS { C6, C7, F7, F6, F5, F4, F1, F0, B3, B2, B1, B0, B7, D0, D1, D2, D3, D5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/wavtype/p01_ultra/info.json b/keyboards/wavtype/p01_ultra/info.json
index da01204e58..03a069b968 100644
--- a/keyboards/wavtype/p01_ultra/info.json
+++ b/keyboards/wavtype/p01_ultra/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "p01_ultra",
+ "manufacturer": "wavtype",
"url": "",
"maintainer": "wavtype",
+ "usb": {
+ "vid": "0x03A7",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"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":"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":"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":"Menu", "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/wavtype/p01_ultra/keymaps/default/keymap.c b/keyboards/wavtype/p01_ultra/keymaps/default/keymap.c
index dc38297725..0fc1a1d9e6 100644
--- a/keyboards/wavtype/p01_ultra/keymaps/default/keymap.c
+++ b/keyboards/wavtype/p01_ultra/keymaps/default/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN] = LAYOUT_tkl_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, 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, QK_BOOT, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_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_VOLD, KC_TRNS)
diff --git a/keyboards/wavtype/p01_ultra/keymaps/via/keymap.c b/keyboards/wavtype/p01_ultra/keymaps/via/keymap.c
index c72519b219..746e06c8e8 100644
--- a/keyboards/wavtype/p01_ultra/keymaps/via/keymap.c
+++ b/keyboards/wavtype/p01_ultra/keymaps/via/keymap.c
@@ -15,7 +15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_tkl_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, 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, QK_BOOT, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_SAI,RGB_VAI,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_VOLD, KC_TRNS)
diff --git a/keyboards/wavtype/p01_ultra/readme.md b/keyboards/wavtype/p01_ultra/readme.md
index 69bdba5e7c..bb90389227 100644
--- a/keyboards/wavtype/p01_ultra/readme.md
+++ b/keyboards/wavtype/p01_ultra/readme.md
@@ -20,4 +20,4 @@ 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 (this can be set in vial!)
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (this can be set in vial!)
diff --git a/keyboards/weirdo/geminate60/config.h b/keyboards/weirdo/geminate60/config.h
index 6e13da06de..16e5170168 100644
--- a/keyboards/weirdo/geminate60/config.h
+++ b/keyboards/weirdo/geminate60/config.h
@@ -16,14 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7764
-#define PRODUCT_ID 0x676D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Weirdo
-#define PRODUCT Geminate60
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/weirdo/geminate60/info.json b/keyboards/weirdo/geminate60/info.json
index ba34264f62..fd7170b6c1 100644
--- a/keyboards/weirdo/geminate60/info.json
+++ b/keyboards/weirdo/geminate60/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "geminate60",
+ "keyboard_name": "Geminate60",
+ "manufacturer": "Weirdo",
"url": "",
"maintainer": "Weirdo-F",
+ "usb": {
+ "vid": "0x7764",
+ "pid": "0x676D",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
diff --git a/keyboards/weirdo/kelowna/rgb64/config.h b/keyboards/weirdo/kelowna/rgb64/config.h
index 906755d88a..b6045bc7d6 100644
--- a/keyboards/weirdo/kelowna/rgb64/config.h
+++ b/keyboards/weirdo/kelowna/rgb64/config.h
@@ -16,13 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7764
-#define PRODUCT_ID 0x4C64
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Weirdo
-#define PRODUCT kelownaRGB64
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/weirdo/kelowna/rgb64/info.json b/keyboards/weirdo/kelowna/rgb64/info.json
index 8dbb01a410..3aedc2d7c9 100644
--- a/keyboards/weirdo/kelowna/rgb64/info.json
+++ b/keyboards/weirdo/kelowna/rgb64/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "kelownaRGB64",
+ "manufacturer": "Weirdo",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7764",
+ "pid": "0x4C64",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_64_ansi": {
"layout": [
diff --git a/keyboards/weirdo/ls_60/config.h b/keyboards/weirdo/ls_60/config.h
index e7151ac10f..640664dd4a 100644
--- a/keyboards/weirdo/ls_60/config.h
+++ b/keyboards/weirdo/ls_60/config.h
@@ -16,14 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7764
-#define PRODUCT_ID 0x4c53
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Weirdo
-#define PRODUCT LS_60
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/weirdo/ls_60/info.json b/keyboards/weirdo/ls_60/info.json
index 20cb544b98..5268567433 100644
--- a/keyboards/weirdo/ls_60/info.json
+++ b/keyboards/weirdo/ls_60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "LS_60",
+ "manufacturer": "Weirdo",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7764",
+ "pid": "0x4C53",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/weirdo/naiping/np64/config.h b/keyboards/weirdo/naiping/np64/config.h
index ee4bdb8675..2044a9546b 100644
--- a/keyboards/weirdo/naiping/np64/config.h
+++ b/keyboards/weirdo/naiping/np64/config.h
@@ -16,14 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7764
-#define PRODUCT_ID 0x7064
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Weirdo
-#define PRODUCT NP64
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/weirdo/naiping/np64/info.json b/keyboards/weirdo/naiping/np64/info.json
index 8bf71afe0c..83a9c07193 100644
--- a/keyboards/weirdo/naiping/np64/info.json
+++ b/keyboards/weirdo/naiping/np64/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "np64",
+ "keyboard_name": "NP64",
+ "manufacturer": "Weirdo",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7764",
+ "pid": "0x7064",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_64_ansi"
},
diff --git a/keyboards/weirdo/naiping/nphhkb/config.h b/keyboards/weirdo/naiping/nphhkb/config.h
index 26993eeb7f..25b4534a9a 100644
--- a/keyboards/weirdo/naiping/nphhkb/config.h
+++ b/keyboards/weirdo/naiping/nphhkb/config.h
@@ -16,14 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7764
-#define PRODUCT_ID 0x7068
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Weirdo
-#define PRODUCT NPhhkb
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/weirdo/naiping/nphhkb/info.json b/keyboards/weirdo/naiping/nphhkb/info.json
index 4975aa3a41..8b69fcabb4 100644
--- a/keyboards/weirdo/naiping/nphhkb/info.json
+++ b/keyboards/weirdo/naiping/nphhkb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "NP_hhkb",
+ "keyboard_name": "NPhhkb",
+ "manufacturer": "Weirdo",
"url": "",
"maintainer": "weirdo-f",
+ "usb": {
+ "vid": "0x7764",
+ "pid": "0x7068",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_60_tsangan_hhkb"
},
diff --git a/keyboards/weirdo/naiping/npminila/config.h b/keyboards/weirdo/naiping/npminila/config.h
index f18b36d8e7..29a8d9d2f3 100644
--- a/keyboards/weirdo/naiping/npminila/config.h
+++ b/keyboards/weirdo/naiping/npminila/config.h
@@ -16,14 +16,6 @@
#pragma once
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7764
-#define PRODUCT_ID 0x706D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Weirdo
-#define PRODUCT NPminila
-
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/weirdo/naiping/npminila/info.json b/keyboards/weirdo/naiping/npminila/info.json
index 4dbe3127d3..be15116ed7 100644
--- a/keyboards/weirdo/naiping/npminila/info.json
+++ b/keyboards/weirdo/naiping/npminila/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "NP_minila",
+ "keyboard_name": "NPminila",
+ "manufacturer": "Weirdo",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7764",
+ "pid": "0x706D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/weirdo/tiger910/config.h b/keyboards/weirdo/tiger910/config.h
index 4f2541739a..44b1ef434f 100644
--- a/keyboards/weirdo/tiger910/config.h
+++ b/keyboards/weirdo/tiger910/config.h
@@ -19,20 +19,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7764
-#define PRODUCT_ID 0x5447
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Weirdo
-#define PRODUCT tiger910
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 }
#define MATRIX_COL_PINS { B5, B6, B7, C0, C1, C2, C3, C4, C5, C6, C7, D0, D1, D2, D3, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/weirdo/tiger910/info.json b/keyboards/weirdo/tiger910/info.json
index 1c4e706e37..50edcced1a 100644
--- a/keyboards/weirdo/tiger910/info.json
+++ b/keyboards/weirdo/tiger910/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "tiger910",
+ "manufacturer": "Weirdo",
"url": "",
"maintainer": "Weirdo",
+ "usb": {
+ "vid": "0x7764",
+ "pid": "0x5447",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/wekey/polaris/config.h b/keyboards/wekey/polaris/config.h
index 5902c4bfc9..03e179bb32 100644
--- a/keyboards/wekey/polaris/config.h
+++ b/keyboards/wekey/polaris/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5559
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER @wekey
-#define PRODUCT Polaris
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, F1, F0, B7, F7, D5, C6, C7, F5, F6 }
#define MATRIX_COL_PINS { E6, B4, B5, B6, D0, D1, D2, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wekey/polaris/info.json b/keyboards/wekey/polaris/info.json
index 01626101c2..71df14da36 100644
--- a/keyboards/wekey/polaris/info.json
+++ b/keyboards/wekey/polaris/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Polaris",
+ "manufacturer": "@wekey",
"url": "",
"maintainer": "@wekey.dev",
+ "usb": {
+ "vid": "0x5559",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/wekey/polaris/readme.md b/keyboards/wekey/polaris/readme.md
index 40fcf65bb6..7810b112ee 100644
--- a/keyboards/wekey/polaris/readme.md
+++ b/keyboards/wekey/polaris/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/wekey/we27/config.h b/keyboards/wekey/we27/config.h
index 9420a4d06a..a02bc1661a 100644
--- a/keyboards/wekey/we27/config.h
+++ b/keyboards/wekey/we27/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5559
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER @wekey
-#define PRODUCT We27
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 5
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F1, D7, B4, B5, B6, F6 }
#define MATRIX_COL_PINS { F4, F5, C7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wekey/we27/info.json b/keyboards/wekey/we27/info.json
index 8e1a8595a0..b299449ff1 100644
--- a/keyboards/wekey/we27/info.json
+++ b/keyboards/wekey/we27/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "we27",
+ "keyboard_name": "We27",
+ "manufacturer": "@wekey",
"url": "",
"maintainer": "@wekey.dev",
+ "usb": {
+ "vid": "0x5559",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_numpad_6x5": {
"layout": [
diff --git a/keyboards/westfoxtrot/aanzee/config.h b/keyboards/westfoxtrot/aanzee/config.h
index e85e677f9d..a10c05a926 100644
--- a/keyboards/westfoxtrot/aanzee/config.h
+++ b/keyboards/westfoxtrot/aanzee/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x21FF
-#define PRODUCT_ID 0xAA01
-#define DEVICE_VER 0x0001
-#define MANUFACTURER westfoxtrot
-#define PRODUCT aanzee
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -34,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS {B4,D7,D6,D4,B3}
#define MATRIX_COL_PINS {D2,D1,D0,D3,D5,C7,C6,B6,B5,F0,F1,F4,F5,F6,F7,B0}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/westfoxtrot/aanzee/info.json b/keyboards/westfoxtrot/aanzee/info.json
index 972a37fb55..80f4b24c27 100644
--- a/keyboards/westfoxtrot/aanzee/info.json
+++ b/keyboards/westfoxtrot/aanzee/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "aanzee",
+ "manufacturer": "westfoxtrot",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x21FF",
+ "pid": "0xAA01",
+ "device_version": "0.0.1"
+ },
"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}, {"x":13, "y":0}, {"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":"|", "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":"\u21e7 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/westfoxtrot/aanzee/keymaps/iso-default/keymap.c b/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c
index bec31246ca..877b042361 100644
--- a/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c
+++ b/keyboards/westfoxtrot/aanzee/keymaps/iso-default/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,_______,_______,
+ QK_BOOT, 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/cyclops/config.h b/keyboards/westfoxtrot/cyclops/config.h
index 0ecd64ecd0..2f12af61a6 100644
--- a/keyboards/westfoxtrot/cyclops/config.h
+++ b/keyboards/westfoxtrot/cyclops/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x21FF
-#define PRODUCT_ID 0x0A66
-#define DEVICE_VER 0x0001
-#define MANUFACTURER westfoxtrot
-#define PRODUCT cyclops
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D1, D0, D7, B4, F0 }
#define MATRIX_COL_PINS { D3, D2, D5, D6, B6, B1, B2, B3, C6, C7, F7, F6, F4, F5, F1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/westfoxtrot/cyclops/info.json b/keyboards/westfoxtrot/cyclops/info.json
index 0184e74112..0d145781f2 100644
--- a/keyboards/westfoxtrot/cyclops/info.json
+++ b/keyboards/westfoxtrot/cyclops/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "cyclops",
+ "manufacturer": "westfoxtrot",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x21FF",
+ "pid": "0x0A66",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/westfoxtrot/cyclops/keymaps/peippo/keymap.c b/keyboards/westfoxtrot/cyclops/keymaps/peippo/keymap.c
index 902645d177..e607f8ade1 100644
--- a/keyboards/westfoxtrot/cyclops/keymaps/peippo/keymap.c
+++ b/keyboards/westfoxtrot/cyclops/keymaps/peippo/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT(
KC_ESC, _______, _______, _______, _______, _______, _______, _______, RALT(KC_8), RALT(KC_9), _______, _______, _______, KC_DEL, KC__VOLUP,
_______, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______, _______, _______, KC__VOLDOWN,
- _______, _______, SGUI(KC_5), KC_F11, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, RESET , _______,
+ _______, _______, SGUI(KC_5), KC_F11, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, QK_BOOT, _______,
KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT, _______, KC_MPLY,
_______, _______, _______, _______, _______, _______, KC_MRWD, KC__MUTE, KC_MFFD),
};
diff --git a/keyboards/westfoxtrot/cypher/rev1/config.h b/keyboards/westfoxtrot/cypher/rev1/config.h
index 9e7baa67b7..efb79c1e54 100644
--- a/keyboards/westfoxtrot/cypher/rev1/config.h
+++ b/keyboards/westfoxtrot/cypher/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x21FF
-#define PRODUCT_ID 0xAA97
-#define DEVICE_VER 0x0001
-#define MANUFACTURER westfoxtrot
-#define PRODUCT cypher
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, F6, B6, B7, C6, C7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D4, D5, D6, D7, E6, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/westfoxtrot/cypher/rev1/info.json b/keyboards/westfoxtrot/cypher/rev1/info.json
index 31a5369c81..fcb1460456 100644
--- a/keyboards/westfoxtrot/cypher/rev1/info.json
+++ b/keyboards/westfoxtrot/cypher/rev1/info.json
@@ -1,5 +1,11 @@
{
- "keyboard_name": "Cypher",
+ "keyboard_name": "cypher",
+ "manufacturer": "westfoxtrot",
+ "usb": {
+ "vid": "0x21FF",
+ "pid": "0xAA97",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ansi": {
"layout": [
diff --git a/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/keymap.c b/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/keymap.c
index c0df375a77..4a937cf394 100644
--- a/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/keymap.c
+++ b/keyboards/westfoxtrot/cypher/rev1/keymaps/kwer/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_LE] = LAYOUT_iso (
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_RMOD,_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______,
diff --git a/keyboards/westfoxtrot/cypher/rev5/config.h b/keyboards/westfoxtrot/cypher/rev5/config.h
index 542f6e2798..5041802a23 100644
--- a/keyboards/westfoxtrot/cypher/rev5/config.h
+++ b/keyboards/westfoxtrot/cypher/rev5/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x21FF
-#define PRODUCT_ID 0xAA98
-#define DEVICE_VER 0x0002
-#define MANUFACTURER westfoxtrot
-#define PRODUCT cypher
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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
diff --git a/keyboards/westfoxtrot/cypher/rev5/info.json b/keyboards/westfoxtrot/cypher/rev5/info.json
index 80d5960be3..9df30afd75 100644
--- a/keyboards/westfoxtrot/cypher/rev5/info.json
+++ b/keyboards/westfoxtrot/cypher/rev5/info.json
@@ -1,5 +1,11 @@
{
- "keyboard_name": "Cypher",
+ "keyboard_name": "cypher",
+ "manufacturer": "westfoxtrot",
+ "usb": {
+ "vid": "0x21FF",
+ "pid": "0xAA98",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/westfoxtrot/cypher/rev5/keymaps/max/keymap.c b/keyboards/westfoxtrot/cypher/rev5/keymaps/max/keymap.c
index e23b83e142..6d6da28ee7 100644
--- a/keyboards/westfoxtrot/cypher/rev5/keymaps/max/keymap.c
+++ b/keyboards/westfoxtrot/cypher/rev5/keymaps/max/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS, KC_LGUI,KC_LALT, KC_NO,KC_SPC,KC_NO, 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, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, 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/westfoxtrot/prophet/config.h b/keyboards/westfoxtrot/prophet/config.h
index 0f2ddc1dc1..1e5e7859ba 100644
--- a/keyboards/westfoxtrot/prophet/config.h
+++ b/keyboards/westfoxtrot/prophet/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFF21
-#define PRODUCT_ID 0xAA03
-#define DEVICE_VER 0x0001
-#define MANUFACTURER westfoxtrot
-#define PRODUCT prophet
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -18,7 +11,6 @@
*/
#define MATRIX_ROW_PINS { C13, B2, B1, A4, A3 }
#define MATRIX_COL_PINS { A6, A7, B0, A9, A8, A14, A15, B3, B4, B5, B8, B7, B6, B9 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL, or CUSTOM_MATRIX */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/westfoxtrot/prophet/info.json b/keyboards/westfoxtrot/prophet/info.json
index a4a16e7d2e..2708c6e260 100644
--- a/keyboards/westfoxtrot/prophet/info.json
+++ b/keyboards/westfoxtrot/prophet/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Prophet",
+ "keyboard_name": "prophet",
+ "manufacturer": "westfoxtrot",
"url": "",
"maintainer": "westfoxtrot",
+ "usb": {
+ "vid": "0xFF21",
+ "pid": "0xAA03",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/westm/westm68/config.h b/keyboards/westm/westm68/config.h
index d1063583d3..3909c3e5e2 100644
--- a/keyboards/westm/westm68/config.h
+++ b/keyboards/westm/westm68/config.h
@@ -18,16 +18,9 @@
#include "config_common.h"
-/* Ensure we jump to bootloader if the RESET keycode was pressed */
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x574D // WM
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER WestM
-#define PRODUCT WestM68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -43,3 +36,7 @@
#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/info.json b/keyboards/westm/westm68/info.json
index 58378c1b43..f7f67d45a0 100644
--- a/keyboards/westm/westm68/info.json
+++ b/keyboards/westm/westm68/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "WestM68",
+ "manufacturer": "WestM",
"url": "https://github.com/WestMProducts",
"maintainer": "WestM",
+ "usb": {
+ "vid": "0x574D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/westm/westm68/keymaps/default/keymap.c b/keyboards/westm/westm68/keymaps/default/keymap.c
index d49c8f81ea..0ed64abebd 100755
--- a/keyboards/westm/westm68/keymaps/default/keymap.c
+++ b/keyboards/westm/westm68/keymaps/default/keymap.c
@@ -20,15 +20,15 @@ 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,
+ 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_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_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_HOME,
+ KC_CAPS_LOCK, _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, 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
index a4818ea81a..604213140d 100644
--- a/keyboards/westm/westm68/keymaps/via/keymap.c
+++ b/keyboards/westm/westm68/keymaps/via/keymap.c
@@ -18,31 +18,31 @@
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_ESC, KC_1, KC_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_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_HOME,
+ KC_CAPS_LOCK, _______, 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, _______, _______, _______, _______, _______, _______,
+ _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, 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, _______, _______, _______, _______, _______, _______,
+ 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_HOME,
+ KC_CAPS_LOCK, _______, 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_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, 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, _______, _______, _______, _______, _______, _______,
+ 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_HOME,
+ KC_CAPS_LOCK, _______, 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_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, RGB_SAI, RGB_SAD, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/westm/westm68/rev1/info.json b/keyboards/westm/westm68/rev1/info.json
new file mode 100644
index 0000000000..a4736b30a4
--- /dev/null
+++ b/keyboards/westm/westm68/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "pid": "0x0101"
+ }
+}
diff --git a/keyboards/westm/westm68/rev1/rules.mk b/keyboards/westm/westm68/rev1/rules.mk
index 1e3cebb145..e69de29bb2 100644
--- a/keyboards/westm/westm68/rev1/rules.mk
+++ b/keyboards/westm/westm68/rev1/rules.mk
@@ -1 +0,0 @@
-RGBLIGHT_ENABLE = yes
diff --git a/keyboards/westm/westm68/rev2/config.h b/keyboards/westm/westm68/rev2/config.h
new file mode 100644
index 0000000000..054b47cca2
--- /dev/null
+++ b/keyboards/westm/westm68/rev2/config.h
@@ -0,0 +1,31 @@
+/* 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
+
+// The pin connected to the data pin of the LEDs
+#define RGB_DI_PIN A8
+#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
diff --git a/keyboards/westm/westm68/rev2/info.json b/keyboards/westm/westm68/rev2/info.json
new file mode 100644
index 0000000000..0b36e6dd58
--- /dev/null
+++ b/keyboards/westm/westm68/rev2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "pid": "0x0102"
+ }
+}
diff --git a/keyboards/westm/westm68/rev2/rev2.c b/keyboards/westm/westm68/rev2/rev2.c
new file mode 100644
index 0000000000..ca7efe7860
--- /dev/null
+++ b/keyboards/westm/westm68/rev2/rev2.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 "rev2.h" \ No newline at end of file
diff --git a/keyboards/westm/westm68/rev2/rev2.h b/keyboards/westm/westm68/rev2/rev2.h
new file mode 100644
index 0000000000..e30df949a9
--- /dev/null
+++ b/keyboards/westm/westm68/rev2/rev2.h
@@ -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 "westm68.h" \ No newline at end of file
diff --git a/keyboards/westm/westm68/rev2/rules.mk b/keyboards/westm/westm68/rev2/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/westm/westm68/rev2/rules.mk
diff --git a/keyboards/westm/westm68/rules.mk b/keyboards/westm/westm68/rules.mk
index a54cc39924..d92a34591f 100644
--- a/keyboards/westm/westm68/rules.mk
+++ b/keyboards/westm/westm68/rules.mk
@@ -17,5 +17,7 @@ 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
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+
+DEFAULT_FOLDER = westm/westm68/rev2
diff --git a/keyboards/westm/westm9/chconf.h b/keyboards/westm/westm9/chconf.h
new file mode 100644
index 0000000000..d79a01d36b
--- /dev/null
+++ b/keyboards/westm/westm9/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> \ No newline at end of file
diff --git a/keyboards/westm/westm9/config.h b/keyboards/westm/westm9/config.h
new file mode 100644
index 0000000000..51ccf743a0
--- /dev/null
+++ b/keyboards/westm/westm9/config.h
@@ -0,0 +1,42 @@
+/* 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 "config_common.h"
+
+/* Ensure we jump to bootloader if the QK_BOOT keycode was pressed */
+#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+/* key matrix size */
+#define MATRIX_ROWS 3
+#define MATRIX_COLS 3
+
+#define MATRIX_ROW_PINS { A14, A15, B3 }
+#define MATRIX_COL_PINS { B8, B5, B4 }
+#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
+
+/* 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/westm9/halconf.h b/keyboards/westm/westm9/halconf.h
new file mode 100644
index 0000000000..285215f1b9
--- /dev/null
+++ b/keyboards/westm/westm9/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_I2C TRUE
+
+#include_next <halconf.h>
+
diff --git a/keyboards/westm/westm9/info.json b/keyboards/westm/westm9/info.json
new file mode 100644
index 0000000000..3beb8b232f
--- /dev/null
+++ b/keyboards/westm/westm9/info.json
@@ -0,0 +1,25 @@
+{
+ "keyboard_name": "WestM9",
+ "manufacturer": "WestM",
+ "url": "https://github.com/WestMProducts",
+ "maintainer": "WestM",
+ "usb": {
+ "vid": "0x574D",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_macropad": {
+ "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":2},
+ {"x":1, "y":2},
+ {"x":2, "y":2}
+ ]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/westm/westm9/keymaps/default/keymap.c b/keyboards/westm/westm9/keymaps/default/keymap.c
new file mode 100755
index 0000000000..181f5af6c1
--- /dev/null
+++ b/keyboards/westm/westm9/keymaps/default/keymap.c
@@ -0,0 +1,30 @@
+/* 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_macropad(
+ KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK,
+ KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE,
+ KC_NO, KC_NO, MO(1)
+ ),
+ [1] = LAYOUT_macropad(
+ RGB_TOG, RGB_RMOD, RGB_SAI,
+ RGB_VAD, RGB_VAI, RGB_SAD,
+ RGB_HUD, RGB_HUI, KC_NO
+ )
+}; \ No newline at end of file
diff --git a/keyboards/westm/westm9/keymaps/via/keymap.c b/keyboards/westm/westm9/keymaps/via/keymap.c
new file mode 100644
index 0000000000..9b9166ce8b
--- /dev/null
+++ b/keyboards/westm/westm9/keymaps/via/keymap.c
@@ -0,0 +1,41 @@
+/* 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_macropad(
+ KC_MEDIA_PREV_TRACK, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK,
+ KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE,
+ KC_NO, KC_NO, MO(1)
+ ),
+ [1] = LAYOUT_macropad(
+ RGB_TOG, RGB_RMOD, RGB_MOD,
+ RGB_VAD, RGB_VAI, KC_NO,
+ RGB_HUD, RGB_HUI, KC_NO
+ ),
+ [2] = LAYOUT_macropad(
+ KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO
+ ),
+ [3] = LAYOUT_macropad(
+ KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO
+ )
+};
diff --git a/keyboards/westm/westm9/keymaps/via/rules.mk b/keyboards/westm/westm9/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/westm/westm9/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/westm/westm9/mcuconf.h b/keyboards/westm/westm9/mcuconf.h
new file mode 100644
index 0000000000..328b5d45a9
--- /dev/null
+++ b/keyboards/westm/westm9/mcuconf.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
+
+#include_next <mcuconf.h>
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE \ No newline at end of file
diff --git a/keyboards/westm/westm9/readme.md b/keyboards/westm/westm9/readme.md
new file mode 100644
index 0000000000..883aab3c35
--- /dev/null
+++ b/keyboards/westm/westm9/readme.md
@@ -0,0 +1,16 @@
+# WestM
+
+A 9 key Macropad
+
+## 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: WM9
+
+Make example for this keyboard (after setting up your build environment):
+
+ make westm/westm9/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). \ No newline at end of file
diff --git a/keyboards/westm/westm9/rev1/config.h b/keyboards/westm/westm9/rev1/config.h
new file mode 100644
index 0000000000..fcc9ddb99d
--- /dev/null
+++ b/keyboards/westm/westm9/rev1/config.h
@@ -0,0 +1,54 @@
+/* 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
+
+// The pin connected to the data pin of the LEDs
+#define RGB_DI_PIN F1
+#define RGBLED_NUM 14
+#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
+
+/* Default Oled init */
+#define OLED_DISPLAY_128X64
+#define OLED_BRIGHTNESS 255
+
+/* I2C for Oled */
+#define I2C_DRIVER I2CD1
+#define I2C1_SCL_PIN B6
+#define I2C1_SDA_PIN B7
+#define I2C1_SCL_PAL_MODE 1
+#define I2C1_SDA_PAL_MODE 1
+
+/* Required for SH1106 Oled Driver */
+#define OLED_IC OLED_IC_SH1106
+#define OLED_COLUMN_OFFSET 2 // SH1106 screen is a little off to the left
+
+#define I2C1_TIMINGR_PRESC 0x00U
+#define I2C1_TIMINGR_SCLDEL 0x03U
+#define I2C1_TIMINGR_SDADEL 0x01U
+#define I2C1_TIMINGR_SCLH 0x03U
+#define I2C1_TIMINGR_SCLL 0x09U
+
+#define OLED_UPDATE_INTERVAL 66 \ No newline at end of file
diff --git a/keyboards/westm/westm9/rev1/info.json b/keyboards/westm/westm9/rev1/info.json
new file mode 100644
index 0000000000..9934337227
--- /dev/null
+++ b/keyboards/westm/westm9/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "pid": "0x0301"
+ }
+}
diff --git a/keyboards/westm/westm9/rev1/rev1.c b/keyboards/westm/westm9/rev1/rev1.c
new file mode 100644
index 0000000000..666dcaa218
--- /dev/null
+++ b/keyboards/westm/westm9/rev1/rev1.c
@@ -0,0 +1,116 @@
+/* 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 "rev1.h"
+
+void board_init(void) {
+ // Purely for fixing problem on prototype board
+ rgblight_toggle(); // Fixes if LEDs were off in the first place buggy LED turns on
+ rgblight_set(); // Need this to fix buggy first LED upon plugging in PCB
+
+ SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP; // DMA re-map, you may not need this depending on your
+}
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ return OLED_ROTATION_0;
+}
+
+static void render_logo(void) {
+ static const char PROGMEM my_logo[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 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, 0xfc, 0x0c, 0x0c, 0x0c, 0x18, 0x30,
+ 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, 0x80, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x70, 0xe0,
+ 0xc0, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0x70, 0x30, 0xb8, 0x98, 0x18, 0x18, 0xf8, 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, 0x10, 0xff, 0xc7, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x03, 0x0f, 0x3c, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0,
+ 0x70, 0x30, 0x10, 0x18, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x80, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0x8f, 0xc3, 0xc1, 0xc0, 0xe0, 0xe0, 0x70, 0x38, 0x1f,
+ 0x0f, 0x07, 0xe3, 0xf1, 0xf9, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0xfc, 0x07, 0x07, 0x07, 0x07, 0x06, 0x0e,
+ 0x0c, 0x0c, 0x18, 0x18, 0x80, 0xe0, 0xff, 0xfe, 0x7c, 0x38, 0x04, 0x06, 0x03, 0xc1, 0xc1, 0xe0,
+ 0x70, 0x18, 0x0e, 0x07, 0x01, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0x78, 0x1c, 0x0e, 0x07, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x07, 0x0f, 0x1f, 0x3f, 0xff, 0xff, 0xbf, 0x1f, 0x07, 0x00, 0x1f, 0x1f, 0x1c, 0x1c,
+ 0x0c, 0x0c, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x0c, 0x0c,
+ 0x0e, 0x0c, 0x0c, 0x1c, 0x38, 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, 0x01, 0x07, 0x0e, 0x1c, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x18, 0x0c, 0x0f, 0x1f, 0xff, 0xff, 0x07, 0x00, 0x80, 0xc0, 0xe0, 0x38, 0x0f, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xfe, 0x7f, 0x07, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0xc0,
+ 0x80, 0xc0, 0xc0, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf8, 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, 0x01, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x18, 0x18, 0x38, 0x30,
+ 0x30, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0e, 0x1c, 0x38, 0x70, 0x60, 0x60,
+ 0x60, 0x60, 0x60, 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, 0x01, 0x07, 0x0f, 0x1c, 0x38, 0x30, 0x70, 0x70, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x60, 0x70, 0x7c, 0x7f, 0x6f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x71, 0x7f, 0x7f, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x67, 0x7f, 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, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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(my_logo, sizeof(my_logo));
+}
+
+
+bool oled_task_kb(void) {
+ // Defer to the keymap if they want to override
+ if(!oled_task_user()) {
+ return false;
+ }
+
+ // default keyboard drawing code
+ render_logo();
+ return false;
+}
+
+#endif \ No newline at end of file
diff --git a/keyboards/westm/westm9/rev1/rev1.h b/keyboards/westm/westm9/rev1/rev1.h
new file mode 100644
index 0000000000..45420db2e3
--- /dev/null
+++ b/keyboards/westm/westm9/rev1/rev1.h
@@ -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 "westm9.h" \ No newline at end of file
diff --git a/keyboards/westm/westm9/rev1/rules.mk b/keyboards/westm/westm9/rev1/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/westm/westm9/rev1/rules.mk
diff --git a/keyboards/westm/westm9/rev2/config.h b/keyboards/westm/westm9/rev2/config.h
new file mode 100644
index 0000000000..fcc9ddb99d
--- /dev/null
+++ b/keyboards/westm/westm9/rev2/config.h
@@ -0,0 +1,54 @@
+/* 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
+
+// The pin connected to the data pin of the LEDs
+#define RGB_DI_PIN F1
+#define RGBLED_NUM 14
+#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
+
+/* Default Oled init */
+#define OLED_DISPLAY_128X64
+#define OLED_BRIGHTNESS 255
+
+/* I2C for Oled */
+#define I2C_DRIVER I2CD1
+#define I2C1_SCL_PIN B6
+#define I2C1_SDA_PIN B7
+#define I2C1_SCL_PAL_MODE 1
+#define I2C1_SDA_PAL_MODE 1
+
+/* Required for SH1106 Oled Driver */
+#define OLED_IC OLED_IC_SH1106
+#define OLED_COLUMN_OFFSET 2 // SH1106 screen is a little off to the left
+
+#define I2C1_TIMINGR_PRESC 0x00U
+#define I2C1_TIMINGR_SCLDEL 0x03U
+#define I2C1_TIMINGR_SDADEL 0x01U
+#define I2C1_TIMINGR_SCLH 0x03U
+#define I2C1_TIMINGR_SCLL 0x09U
+
+#define OLED_UPDATE_INTERVAL 66 \ No newline at end of file
diff --git a/keyboards/westm/westm9/rev2/info.json b/keyboards/westm/westm9/rev2/info.json
new file mode 100644
index 0000000000..3b2f219948
--- /dev/null
+++ b/keyboards/westm/westm9/rev2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "pid": "0x0302"
+ }
+}
diff --git a/keyboards/westm/westm9/rev2/rev2.c b/keyboards/westm/westm9/rev2/rev2.c
new file mode 100644
index 0000000000..31c80c3606
--- /dev/null
+++ b/keyboards/westm/westm9/rev2/rev2.c
@@ -0,0 +1,112 @@
+/* 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 "rev2.h"
+
+void board_init(void) {
+ SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP; // DMA re-map, you may not need this depending on your
+}
+
+#ifdef OLED_ENABLE
+
+oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
+ return OLED_ROTATION_0;
+}
+
+static void render_logo(void) {
+ static const char PROGMEM my_logo[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 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, 0xfc, 0x0c, 0x0c, 0x0c, 0x18, 0x30,
+ 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, 0x80, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x70, 0xe0,
+ 0xc0, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0x70, 0x30, 0xb8, 0x98, 0x18, 0x18, 0xf8, 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, 0x10, 0xff, 0xc7, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x03, 0x0f, 0x3c, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0,
+ 0x70, 0x30, 0x10, 0x18, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x80, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0x8f, 0xc3, 0xc1, 0xc0, 0xe0, 0xe0, 0x70, 0x38, 0x1f,
+ 0x0f, 0x07, 0xe3, 0xf1, 0xf9, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 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, 0xfc, 0x07, 0x07, 0x07, 0x07, 0x06, 0x0e,
+ 0x0c, 0x0c, 0x18, 0x18, 0x80, 0xe0, 0xff, 0xfe, 0x7c, 0x38, 0x04, 0x06, 0x03, 0xc1, 0xc1, 0xe0,
+ 0x70, 0x18, 0x0e, 0x07, 0x01, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0x78, 0x1c, 0x0e, 0x07, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x07, 0x0f, 0x1f, 0x3f, 0xff, 0xff, 0xbf, 0x1f, 0x07, 0x00, 0x1f, 0x1f, 0x1c, 0x1c,
+ 0x0c, 0x0c, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x0c, 0x0c,
+ 0x0e, 0x0c, 0x0c, 0x1c, 0x38, 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, 0x01, 0x07, 0x0e, 0x1c, 0x30, 0x30, 0x30, 0x30,
+ 0x30, 0x18, 0x0c, 0x0f, 0x1f, 0xff, 0xff, 0x07, 0x00, 0x80, 0xc0, 0xe0, 0x38, 0x0f, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xfe, 0x7f, 0x07, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0xc0,
+ 0x80, 0xc0, 0xc0, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf8, 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, 0x01, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x18, 0x18, 0x38, 0x30,
+ 0x30, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x0e, 0x1c, 0x38, 0x70, 0x60, 0x60,
+ 0x60, 0x60, 0x60, 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, 0x01, 0x07, 0x0f, 0x1c, 0x38, 0x30, 0x70, 0x70, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x60, 0x70, 0x7c, 0x7f, 0x6f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x71, 0x7f, 0x7f, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x67, 0x7f, 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, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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(my_logo, sizeof(my_logo));
+}
+
+
+bool oled_task_kb(void) {
+ // Defer to the keymap if they want to override
+ if(!oled_task_user()) {
+ return false;
+ }
+
+ // default keyboard drawing code
+ render_logo();
+ return false;
+}
+
+#endif \ No newline at end of file
diff --git a/keyboards/westm/westm9/rev2/rev2.h b/keyboards/westm/westm9/rev2/rev2.h
new file mode 100644
index 0000000000..45420db2e3
--- /dev/null
+++ b/keyboards/westm/westm9/rev2/rev2.h
@@ -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 "westm9.h" \ No newline at end of file
diff --git a/keyboards/westm/westm9/rev2/rules.mk b/keyboards/westm/westm9/rev2/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/westm/westm9/rev2/rules.mk
diff --git a/keyboards/westm/westm9/rules.mk b/keyboards/westm/westm9/rules.mk
new file mode 100644
index 0000000000..b8be7c4530
--- /dev/null
+++ b/keyboards/westm/westm9/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
+
+# 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
+
+OLED_ENABLE = yes # Enable the OLED feature
+OLED_DRIVER = SSD1306 # OLED driver
+
+DEFAULT_FOLDER = westm/westm9/rev2
diff --git a/keyboards/westm/westm9/westm9.c b/keyboards/westm/westm9/westm9.c
new file mode 100644
index 0000000000..45420db2e3
--- /dev/null
+++ b/keyboards/westm/westm9/westm9.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 "westm9.h" \ No newline at end of file
diff --git a/keyboards/westm/westm9/westm9.h b/keyboards/westm/westm9/westm9.h
new file mode 100644
index 0000000000..a88aeb8573
--- /dev/null
+++ b/keyboards/westm/westm9/westm9.h
@@ -0,0 +1,30 @@
+/* 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 LAYOUT_macropad( \
+ K00, K01, K02, \
+ K10, K11, K12, \
+ K20, K21, K22 \
+) \
+{ \
+ { K00, K01, K02 }, \
+ { K10, K11, K12 }, \
+ { K20, K21, K22 }, \
+}
diff --git a/keyboards/westm/westmergo/config.h b/keyboards/westm/westmergo/config.h
index 1f90dc82b8..e3f06ab222 100644
--- a/keyboards/westm/westmergo/config.h
+++ b/keyboards/westm/westmergo/config.h
@@ -16,13 +16,6 @@
#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
@@ -43,7 +36,7 @@
#define RGBLIGHT_EFFECT_TWINKLE
// The pin connected to the data pin of the LEDs
#define RGB_DI_PIN A8
-#define RGBLED_NUM 19
+#define RGBLED_NUM 16
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
diff --git a/keyboards/westm/westmergo/info.json b/keyboards/westm/westmergo/info.json
index c31a65a2ec..316034146d 100644
--- a/keyboards/westm/westmergo/info.json
+++ b/keyboards/westm/westmergo/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "WestMErgo",
+ "manufacturer": "WestM",
"url": "https://github.com/WestMProducts",
"maintainer": "WestM",
+ "usb": {
+ "vid": "0x574D",
+ "pid": "0x0201",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice": {
"layout": [
diff --git a/keyboards/westm/westmergo/keymaps/default/keymap.c b/keyboards/westm/westmergo/keymaps/default/keymap.c
index ba24687860..4302717ec4 100755
--- a/keyboards/westm/westmergo/keymaps/default/keymap.c
+++ b/keyboards/westm/westmergo/keymaps/default/keymap.c
@@ -19,16 +19,16 @@
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_MPLY, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQUAL, KC_BSPC,
+ KC_MNXT, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_MPRV, 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_LALT, 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 */
- QK_BOOT, _______, KC_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_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_CAPS_LOCK, _______, KC_UP, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, 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/keymap.c b/keyboards/westm/westmergo/keymaps/via/keymap.c
index 8389331a09..962efbbffc 100644
--- a/keyboards/westm/westmergo/keymaps/via/keymap.c
+++ b/keyboards/westm/westmergo/keymaps/via/keymap.c
@@ -19,30 +19,30 @@
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
+ 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_MINS, KC_EQL, KC_BSPC,
+ KC_MPRV, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
+ KC_MNXT, 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_LALT, 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_LGUI, KC_RCTL
),
[1] = LAYOUT_alice( /* FN */
- QK_BOOT, _______, KC_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_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_CAPS_LOCK, _______, KC_UP, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, 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 */
- QK_BOOT, _______, KC_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_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_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, 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 */
- QK_BOOT, _______, KC_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_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_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
+ _______, _______, 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/westmergo.h b/keyboards/westm/westmergo/westmergo.h
index 2ed5a1ab2c..550773b5ac 100644
--- a/keyboards/westm/westmergo/westmergo.h
+++ b/keyboards/westm/westmergo/westmergo.h
@@ -20,19 +20,17 @@
#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, \
+ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0d, k0e, 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 }, \
+ { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, XXX, k0d, k0e, 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 }, \
+ { XXX, k41, XXX, k43, XXX, k45, k46, XXX, XXX, k49, XXX, k4b, XXX, XXX, XXX, k4f }, \
}
diff --git a/keyboards/whale/sk/config.h b/keyboards/whale/sk/config.h
index a3989df890..4c2b9c23ff 100644
--- a/keyboards/whale/sk/config.h
+++ b/keyboards/whale/sk/config.h
@@ -17,7 +17,3 @@
#pragma once
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0495
diff --git a/keyboards/whale/sk/v3/config.h b/keyboards/whale/sk/v3/config.h
index fc1e4ffeff..64fc622203 100644
--- a/keyboards/whale/sk/v3/config.h
+++ b/keyboards/whale/sk/v3/config.h
@@ -19,11 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define DEVICE_VER 0x0003
-#define MANUFACTURER Whale Mo
-#define PRODUCT Splite Keyboard v3
-
/* key matrix size */
/* Notice: HALF of row on the slave side */
#define MATRIX_ROWS 12
diff --git a/keyboards/whale/sk/v3/info.json b/keyboards/whale/sk/v3/info.json
index b0a07088b1..8ba2a34311 100644
--- a/keyboards/whale/sk/v3/info.json
+++ b/keyboards/whale/sk/v3/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Splite Keyboard v3",
+ "manufacturer": "Whale Mo",
"url": "https://github.com/ncwhale/Keyboard_Design/tree/master/Splite-Keyboard-v3",
"maintainer": "ncwhale",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0495",
+ "device_version": "0.0.3"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/wilba_tech/rama_works_kara/config.h b/keyboards/wilba_tech/rama_works_kara/config.h
index 1191c0991f..3ce58330ed 100644
--- a/keyboards/wilba_tech/rama_works_kara/config.h
+++ b/keyboards/wilba_tech/rama_works_kara/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-// USB Device descriptor parameter
-#define VENDOR_ID 0x5241 // "RA"
-#define PRODUCT_ID 0x4B52 // "KR"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA WORKS
-#define PRODUCT RAMA WORKS KARA
-
// key matrix size
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -31,7 +24,6 @@
// M60-A PCB default pin-out
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 }
-#define UNUSED_PINS
// IS31FL3731 driver
#define DRIVER_COUNT 2
diff --git a/keyboards/wilba_tech/rama_works_kara/info.json b/keyboards/wilba_tech/rama_works_kara/info.json
index 876e3b1287..2be81f0866 100644
--- a/keyboards/wilba_tech/rama_works_kara/info.json
+++ b/keyboards/wilba_tech/rama_works_kara/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "RAMA WORKS KARA",
+ "keyboard_name": "KARA",
+ "manufacturer": "RAMA WORKS",
"url": "http://rama.works",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x5241",
+ "pid": "0x4B52",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_hhkb": {
"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":"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":13.5, "y":1, "w":1.5}, {"label":"Control", "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":"Os", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Os", "x":12.5, "y":4}]
diff --git a/keyboards/wilba_tech/rama_works_koyu/config.h b/keyboards/wilba_tech/rama_works_koyu/config.h
index 334070472f..8a02f0bd98 100644
--- a/keyboards/wilba_tech/rama_works_koyu/config.h
+++ b/keyboards/wilba_tech/rama_works_koyu/config.h
@@ -17,15 +17,6 @@
#include "config_common.h"
-// USB Device descriptor parameter
-#define VENDOR_ID 0x5241 // "RA"
-#define PRODUCT_ID 0x4B59 // "KY"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA WORKS
-#define PRODUCT RAMA WORKS KOYU
-
-
-
// key matrix size
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -33,7 +24,6 @@
// KOYU PCB pin-out
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
// IS31FL3731 driver
#define DRIVER_COUNT 2
diff --git a/keyboards/wilba_tech/rama_works_koyu/info.json b/keyboards/wilba_tech/rama_works_koyu/info.json
index 089d19c857..ca94b8267f 100644
--- a/keyboards/wilba_tech/rama_works_koyu/info.json
+++ b/keyboards/wilba_tech/rama_works_koyu/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "RAMA WORKS KOYU",
+ "keyboard_name": "KOYU",
+ "manufacturer": "RAMA WORKS",
"url": "http://rama.works",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x5241",
+ "pid": "0x4B59",
+ "device_version": "0.0.1"
+ },
"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":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Num Lock", "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":"Insert", "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":"Home", "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":"/", "x":15, "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}, {"x":4, "y":4, "w":7}, {"label":"Ctrl", "x":11, "y":4, "w":1.5}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
diff --git a/keyboards/wilba_tech/rama_works_m10_b/config.h b/keyboards/wilba_tech/rama_works_m10_b/config.h
index 9f3326caba..d7fe10a965 100644
--- a/keyboards/wilba_tech/rama_works_m10_b/config.h
+++ b/keyboards/wilba_tech/rama_works_m10_b/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5241 // "RA"
-#define PRODUCT_ID 0x00AB // 10-B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA WORKS
-#define PRODUCT RAMA WORKS M10-B
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 10
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6 }
#define MATRIX_COL_PINS { D7, B6, F0, D6, B5, F1, D4, B4, F4, F5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/rama_works_m10_b/info.json b/keyboards/wilba_tech/rama_works_m10_b/info.json
index cd27112022..0dad0cffd7 100644
--- a/keyboards/wilba_tech/rama_works_m10_b/info.json
+++ b/keyboards/wilba_tech/rama_works_m10_b/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "RAMA WORKS M10-B",
+ "keyboard_name": "M10-B",
+ "manufacturer": "RAMA WORKS",
"url": "http://rama.works",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x5241",
+ "pid": "0x00AB",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/wilba_tech/rama_works_m10_c/config.h b/keyboards/wilba_tech/rama_works_m10_c/config.h
index 7b515736f7..d42c329b96 100644
--- a/keyboards/wilba_tech/rama_works_m10_c/config.h
+++ b/keyboards/wilba_tech/rama_works_m10_c/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5241 // "RA"
-#define PRODUCT_ID 0x00AC // 10-C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA WORKS
-#define PRODUCT RAMA WORKS M10-C
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 10
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { E6 }
#define MATRIX_COL_PINS { D7, B6, F0, D6, B5, F1, D4, B4, F4, F5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/rama_works_m10_c/info.json b/keyboards/wilba_tech/rama_works_m10_c/info.json
index c41f5720c3..c6016c19a3 100644
--- a/keyboards/wilba_tech/rama_works_m10_c/info.json
+++ b/keyboards/wilba_tech/rama_works_m10_c/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "RAMA WORKS M10-C",
+ "keyboard_name": "M10-C",
+ "manufacturer": "RAMA WORKS",
"url": "http://rama.works",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x5241",
+ "pid": "0x00AC",
+ "device_version": "0.0.1"
+ },
"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":0, "y":1}, {"label":"0,4", "x":1, "y":1}, {"label":"0,5", "x":2, "y":1}, {"label":"0,6", "x":0, "y":2}, {"label":"0,7", "x":1, "y":2}, {"label":"0,8", "x":2, "y":2}, {"label":"0,9", "x":1, "y":3, "w":2}]
diff --git a/keyboards/wilba_tech/rama_works_m50_a/config.h b/keyboards/wilba_tech/rama_works_m50_a/config.h
index 70b35dbb90..fb6ffd8aba 100644
--- a/keyboards/wilba_tech/rama_works_m50_a/config.h
+++ b/keyboards/wilba_tech/rama_works_m50_a/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5241 // "RA"
-#define PRODUCT_ID 0x050A // 50-A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA WORKS
-#define PRODUCT RAMA WORKS M50-A
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F5, F6 }
#define MATRIX_COL_PINS { F4, B5, C7, C6, B6, B2, B3, B1, B4, D7, D6, D4, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/rama_works_m50_a/info.json b/keyboards/wilba_tech/rama_works_m50_a/info.json
index 52a0ae7ca8..2d9851c19c 100644
--- a/keyboards/wilba_tech/rama_works_m50_a/info.json
+++ b/keyboards/wilba_tech/rama_works_m50_a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "RAMA WORKS M50-A",
+ "keyboard_name": "M50-A",
+ "manufacturer": "RAMA WORKS",
"url": "http://rama.works",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x5241",
+ "pid": "0x050A",
+ "device_version": "0.0.1"
+ },
"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":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":0, "y":1}, {"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}, {"x":12.25, "y":1}, {"x":0, "y":2}, {"x":1.25, "y":2}, {"x":2.25, "y":2}, {"x":3.25, "y":2}, {"x":4.25, "y":2}, {"x":5.25, "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}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"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, "w":2}, {"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}]
diff --git a/keyboards/wilba_tech/rama_works_m50_ax/config.h b/keyboards/wilba_tech/rama_works_m50_ax/config.h
index 3b2a23033d..6910e7a7b0 100644
--- a/keyboards/wilba_tech/rama_works_m50_ax/config.h
+++ b/keyboards/wilba_tech/rama_works_m50_ax/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5241 // "RA"
-#define PRODUCT_ID 0x150A // 50-AX
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA WORKS
-#define PRODUCT RAMA WORKS M50-AX
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F5, F6 }
#define MATRIX_COL_PINS { F4, B5, C7, C6, B6, B2, B3, B1, B4, D7, D6, D4, D3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/rama_works_m50_ax/info.json b/keyboards/wilba_tech/rama_works_m50_ax/info.json
index 4574ad8d98..2a93f56b15 100644
--- a/keyboards/wilba_tech/rama_works_m50_ax/info.json
+++ b/keyboards/wilba_tech/rama_works_m50_ax/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "RAMA WORKS M50-AX",
+ "keyboard_name": "M50-AX",
+ "manufacturer": "RAMA WORKS",
"url": "http://rama.works",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x5241",
+ "pid": "0x150A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"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.25, "y":0}, {"label":"0,6", "x":6.25, "y":0}, {"label":"0,7", "x":7.25, "y":0}, {"label":"0,8", "x":8.25, "y":0}, {"label":"0,9", "x":9.25, "y":0}, {"label":"0,10", "x":10.25, "y":0}, {"label":"0,11", "x":11.25, "y":0}, {"label":"0,12", "x":12.25, "y":0}, {"label":"1,0", "x":0, "y":1}, {"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}, {"label":"1,12", "x":12.25, "y":1}, {"label":"2,0", "x":0, "y":2}, {"label":"2,1", "x":1.25, "y":2}, {"label":"2,2", "x":2.25, "y":2}, {"label":"2,3", "x":3.25, "y":2}, {"label":"2,4", "x":4.25, "y":2}, {"label":"2,5", "x":5.25, "y":2}, {"label":"2,6", "x":6.25, "y":2}, {"label":"2,7", "x":7.25, "y":2}, {"label":"2,8", "x":8.25, "y":2}, {"label":"2,9", "x":9.25, "y":2}, {"label":"2,10", "x":10.25, "y":2}, {"label":"2,11", "x":11.25, "y":2}, {"label":"2,12", "x":12.25, "y":2}, {"label":"3,0", "x":0, "y":3}, {"label":"3,1", "x":1.25, "y":3}, {"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}]
diff --git a/keyboards/wilba_tech/rama_works_m60_a/config.h b/keyboards/wilba_tech/rama_works_m60_a/config.h
index 4bb0ebefc6..55fa484716 100644
--- a/keyboards/wilba_tech/rama_works_m60_a/config.h
+++ b/keyboards/wilba_tech/rama_works_m60_a/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-// USB Device descriptor parameter
-#define VENDOR_ID 0x5241 // "RA"
-#define PRODUCT_ID 0x060A // 60-A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA WORKS
-#define PRODUCT RAMA WORKS M60-A
-
// key matrix size
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -31,7 +24,6 @@
// M60-A PCB default pin-out
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 }
-#define UNUSED_PINS
// IS31FL3731 driver
#define DRIVER_COUNT 2
diff --git a/keyboards/wilba_tech/rama_works_m60_a/info.json b/keyboards/wilba_tech/rama_works_m60_a/info.json
index 733ffac791..f88041bbe6 100644
--- a/keyboards/wilba_tech/rama_works_m60_a/info.json
+++ b/keyboards/wilba_tech/rama_works_m60_a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "RAMA WORKS M60-A",
+ "keyboard_name": "M60-A",
+ "manufacturer": "RAMA WORKS",
"url": "http://rama.works",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x5241",
+ "pid": "0x060A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_hhkb": {
"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":"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":13.5, "y":1, "w":1.5}, {"label":"Control", "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":"Os", "x":1.5, "y":4}, {"label":"Alt", "x":2.5, "y":4, "w":1.5}, {"x":4, "y":4, "w":7}, {"label":"Alt", "x":11, "y":4, "w":1.5}, {"label":"Os", "x":12.5, "y":4}]
diff --git a/keyboards/wilba_tech/rama_works_m60_a/keymaps/mguterl/keymap.c b/keyboards/wilba_tech/rama_works_m60_a/keymaps/mguterl/keymap.c
index fc81220e41..b1ed28b001 100644
--- a/keyboards/wilba_tech/rama_works_m60_a/keymaps/mguterl/keymap.c
+++ b/keyboards/wilba_tech/rama_works_m60_a/keymaps/mguterl/keymap.c
@@ -73,7 +73,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______),
[LIGHTING] = LAYOUT_60_hhkb(
- RESET, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, _______, _______, _______, _______, BR_DEC, BR_INC, _______, _______,
+ QK_BOOT, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, _______, _______, _______, _______, BR_DEC, BR_INC, _______, _______,
TG_GAME, _______, _______, S1_DEC, S1_INC, S2_DEC, S2_INC, _______, _______, _______, _______, ES_DEC, ES_INC, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/wilba_tech/rama_works_m65_b/config.h b/keyboards/wilba_tech/rama_works_m65_b/config.h
index 550617e587..c753a93841 100644
--- a/keyboards/wilba_tech/rama_works_m65_b/config.h
+++ b/keyboards/wilba_tech/rama_works_m65_b/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5241 // "RA"
-#define PRODUCT_ID 0x065B // 65-B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA WORKS
-#define PRODUCT RAMA WORKS M65-B
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/rama_works_m65_b/info.json b/keyboards/wilba_tech/rama_works_m65_b/info.json
index 15955c8622..9934c1bf18 100644
--- a/keyboards/wilba_tech/rama_works_m65_b/info.json
+++ b/keyboards/wilba_tech/rama_works_m65_b/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "RAMA WORKS M65-B",
+ "keyboard_name": "M65-B",
+ "manufacturer": "RAMA WORKS",
"url": "http://rama.works",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x5241",
+ "pid": "0x065B",
+ "device_version": "0.0.1"
+ },
"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":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Num Lock", "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":"Insert", "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":"Home", "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":"/", "x":15, "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}, {"x":4, "y":4, "w":7}, {"label":"Ctrl", "x":11, "y":4, "w":1.5}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
diff --git a/keyboards/wilba_tech/rama_works_m65_bx/config.h b/keyboards/wilba_tech/rama_works_m65_bx/config.h
index f840f42436..f0eb52940c 100644
--- a/keyboards/wilba_tech/rama_works_m65_bx/config.h
+++ b/keyboards/wilba_tech/rama_works_m65_bx/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5241 // "RA"
-#define PRODUCT_ID 0x165B // 65-BX
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA WORKS
-#define PRODUCT RAMA WORKS M65-BX
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/rama_works_m65_bx/info.json b/keyboards/wilba_tech/rama_works_m65_bx/info.json
index 8d4a78d6b6..d821dec422 100644
--- a/keyboards/wilba_tech/rama_works_m65_bx/info.json
+++ b/keyboards/wilba_tech/rama_works_m65_bx/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "RAMA WORKS M65-BX",
+ "keyboard_name": "M65-BX",
+ "manufacturer": "RAMA WORKS",
"url": "http://rama.works",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x5241",
+ "pid": "0x165B",
+ "device_version": "0.0.1"
+ },
"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":"PrtSc", "x":13, "y":0}, {"label":"Pause", "x":14, "y":0}, {"label":"Num Lock", "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":"Insert", "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":"Home", "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":"/", "x":15, "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}, {"x":4, "y":4, "w":7}, {"label":"Ctrl", "x":11, "y":4, "w":1.5}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
diff --git a/keyboards/wilba_tech/rama_works_m6_a/config.h b/keyboards/wilba_tech/rama_works_m6_a/config.h
index 60e4aa01bb..d77613628e 100644
--- a/keyboards/wilba_tech/rama_works_m6_a/config.h
+++ b/keyboards/wilba_tech/rama_works_m6_a/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5241 // "RA"
-#define PRODUCT_ID 0x006A // 6-A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA WORKS
-#define PRODUCT RAMA WORKS M6-A
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 6
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { E6 }
#define MATRIX_COL_PINS { D4, B5, F4, D7, C6, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/rama_works_m6_a/info.json b/keyboards/wilba_tech/rama_works_m6_a/info.json
index aa68318729..5506e2e1af 100644
--- a/keyboards/wilba_tech/rama_works_m6_a/info.json
+++ b/keyboards/wilba_tech/rama_works_m6_a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "RAMA WORKS M6-A",
+ "keyboard_name": "M6-A",
+ "manufacturer": "RAMA WORKS",
"url": "http://rama.works",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x5241",
+ "pid": "0x006A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/wilba_tech/rama_works_m6_b/config.h b/keyboards/wilba_tech/rama_works_m6_b/config.h
index b466e63b8f..d6978c8a16 100644
--- a/keyboards/wilba_tech/rama_works_m6_b/config.h
+++ b/keyboards/wilba_tech/rama_works_m6_b/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5241 // "RA"
-#define PRODUCT_ID 0x006B // 6-B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA WORKS
-#define PRODUCT RAMA WORKS M6-B
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 6
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { E6 }
#define MATRIX_COL_PINS { D4, B5, F4, D7, C6, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/rama_works_m6_b/info.json b/keyboards/wilba_tech/rama_works_m6_b/info.json
index 62b8f6d282..24a24e6add 100644
--- a/keyboards/wilba_tech/rama_works_m6_b/info.json
+++ b/keyboards/wilba_tech/rama_works_m6_b/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "RAMA WORKS M6-B",
+ "keyboard_name": "M6-B",
+ "manufacturer": "RAMA WORKS",
"url": "http://rama.works",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x5241",
+ "pid": "0x006B",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/wilba_tech/rama_works_u80_a/config.h b/keyboards/wilba_tech/rama_works_u80_a/config.h
index 0cb3e211ba..44582ada4f 100644
--- a/keyboards/wilba_tech/rama_works_u80_a/config.h
+++ b/keyboards/wilba_tech/rama_works_u80_a/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5241 // "RA"
-#define PRODUCT_ID 0x080A // 80-A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER RAMA WORKS
-#define PRODUCT RAMA WORKS U80-A
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F1, F0, E6, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4, B7, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/rama_works_u80_a/info.json b/keyboards/wilba_tech/rama_works_u80_a/info.json
index 41d0a46be5..55e017d69d 100644
--- a/keyboards/wilba_tech/rama_works_u80_a/info.json
+++ b/keyboards/wilba_tech/rama_works_u80_a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "RAMA WORKS U80-A",
+ "keyboard_name": "U80-A",
+ "manufacturer": "RAMA WORKS",
"url": "http://rama.works",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x5241",
+ "pid": "0x080A",
+ "device_version": "0.0.1"
+ },
"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":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.5}, {"label":"Win", "x":1.5, "y":5.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Win", "x":12.5, "y":5.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"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/wilba_tech/wt60_a/config.h b/keyboards/wilba_tech/wt60_a/config.h
index 029b228e2c..c2b85fee76 100644
--- a/keyboards/wilba_tech/wt60_a/config.h
+++ b/keyboards/wilba_tech/wt60_a/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x060A // 60-A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT60-A
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, E6, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
@@ -108,8 +100,8 @@
// enable the mono backlight
#define MONO_BACKLIGHT_ENABLED 1
-// enable the RGB indicator for WT75-A
-#define MONO_BACKLIGHT_WT75_A
+// enable the specific indicators
+#define MONO_BACKLIGHT_WT60_A
// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
#define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
diff --git a/keyboards/wilba_tech/wt60_a/info.json b/keyboards/wilba_tech/wt60_a/info.json
index 236bb3007c..ecadcbfb5a 100644
--- a/keyboards/wilba_tech/wt60_a/info.json
+++ b/keyboards/wilba_tech/wt60_a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT60-A",
+ "keyboard_name": "WT60-A",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x060A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"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, "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}, {"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":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/wilba_tech/wt60_b/config.h b/keyboards/wilba_tech/wt60_b/config.h
index b97b44e35a..a68cfa5ec2 100644
--- a/keyboards/wilba_tech/wt60_b/config.h
+++ b/keyboards/wilba_tech/wt60_b/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x60B0 // 60-B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT60-B
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt60_b/info.json b/keyboards/wilba_tech/wt60_b/info.json
index ef827d982e..12b4edc8c1 100644
--- a/keyboards/wilba_tech/wt60_b/info.json
+++ b/keyboards/wilba_tech/wt60_b/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT60-B",
+ "keyboard_name": "WT60-B",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x60B0",
+ "device_version": "0.0.1"
+ },
"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.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_bx/config.h b/keyboards/wilba_tech/wt60_bx/config.h
index 8aca36e3fa..cab8276545 100644
--- a/keyboards/wilba_tech/wt60_bx/config.h
+++ b/keyboards/wilba_tech/wt60_bx/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x60B1 // 60-BX
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT60-BX
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt60_bx/info.json b/keyboards/wilba_tech/wt60_bx/info.json
index 474d4920a3..858ecb46cc 100644
--- a/keyboards/wilba_tech/wt60_bx/info.json
+++ b/keyboards/wilba_tech/wt60_bx/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT60-BX",
+ "keyboard_name": "WT60-BX",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x60B1",
+ "device_version": "0.0.1"
+ },
"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.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_c/config.h b/keyboards/wilba_tech/wt60_c/config.h
index ac8c1ad6be..47636eef4b 100644
--- a/keyboards/wilba_tech/wt60_c/config.h
+++ b/keyboards/wilba_tech/wt60_c/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x60C0 // 60-C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT60-C
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt60_c/info.json b/keyboards/wilba_tech/wt60_c/info.json
index 1bff919466..87c68bf8a9 100644
--- a/keyboards/wilba_tech/wt60_c/info.json
+++ b/keyboards/wilba_tech/wt60_c/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT60-C",
+ "keyboard_name": "WT60-C",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x60C0",
+ "device_version": "0.0.1"
+ },
"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.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_d/config.h b/keyboards/wilba_tech/wt60_d/config.h
index c3c0a0c7a6..0286015ca0 100644
--- a/keyboards/wilba_tech/wt60_d/config.h
+++ b/keyboards/wilba_tech/wt60_d/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x060D // 60-D
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT60-D
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { E6, F0, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, D3, D2, B7, B0, B3, C7, C6, B6, B5, B4, D7, D6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt60_d/info.json b/keyboards/wilba_tech/wt60_d/info.json
index 0f7a2723f8..42b52b8b1f 100644
--- a/keyboards/wilba_tech/wt60_d/info.json
+++ b/keyboards/wilba_tech/wt60_d/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT60-D",
+ "keyboard_name": "WT60-D",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x060D",
+ "device_version": "0.0.1"
+ },
"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}, {"x":13, "y":0}, {"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":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}, {"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":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/wilba_tech/wt60_d/keymaps/madhatter/keymap.c b/keyboards/wilba_tech/wt60_d/keymaps/madhatter/keymap.c
index b97474f23d..ae1dadf15c 100644
--- a/keyboards/wilba_tech/wt60_d/keymaps/madhatter/keymap.c
+++ b/keyboards/wilba_tech/wt60_d/keymaps/madhatter/keymap.c
@@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Fn1 Layer
[_FNMS] = 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_BSLS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, RESET,
+ KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, QK_BOOT,
AG_TOGG, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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_TRNS, KC_DOWN, 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_g/config.h b/keyboards/wilba_tech/wt60_g/config.h
index ca3242ca41..d0087e9d88 100644
--- a/keyboards/wilba_tech/wt60_g/config.h
+++ b/keyboards/wilba_tech/wt60_g/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x0021 // PCB #33
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT60-G
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 } // D4, B7, B0
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt60_g/info.json b/keyboards/wilba_tech/wt60_g/info.json
index f4cb1ea8e3..43b7f4d4ef 100644
--- a/keyboards/wilba_tech/wt60_g/info.json
+++ b/keyboards/wilba_tech/wt60_g/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT60-G",
+ "keyboard_name": "WT60-G",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x0021",
+ "device_version": "0.0.1"
+ },
"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":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/wilba_tech/wt60_g2/config.h b/keyboards/wilba_tech/wt60_g2/config.h
index d26e0a7138..f28767c441 100644
--- a/keyboards/wilba_tech/wt60_g2/config.h
+++ b/keyboards/wilba_tech/wt60_g2/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x002f // PCB #47
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT60-G2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 } // D4, B7, B0
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt60_g2/info.json b/keyboards/wilba_tech/wt60_g2/info.json
index faae3c49dc..3fc67039e7 100644
--- a/keyboards/wilba_tech/wt60_g2/info.json
+++ b/keyboards/wilba_tech/wt60_g2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT60-G2",
+ "keyboard_name": "WT60-G2",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x002F",
+ "device_version": "0.0.1"
+ },
"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.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_h1/config.h b/keyboards/wilba_tech/wt60_h1/config.h
index 005ad42c71..d0087e9d88 100644
--- a/keyboards/wilba_tech/wt60_h1/config.h
+++ b/keyboards/wilba_tech/wt60_h1/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x0024 // PCB #36
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT60-H1
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 } // D4, B7, B0
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt60_h1/info.json b/keyboards/wilba_tech/wt60_h1/info.json
index 324dc84fb7..5260f448ff 100644
--- a/keyboards/wilba_tech/wt60_h1/info.json
+++ b/keyboards/wilba_tech/wt60_h1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT60-H1",
+ "keyboard_name": "WT60-H1",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x0024",
+ "device_version": "0.0.1"
+ },
"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/wilba_tech/wt60_h2/config.h b/keyboards/wilba_tech/wt60_h2/config.h
index 382e8993c8..d0087e9d88 100644
--- a/keyboards/wilba_tech/wt60_h2/config.h
+++ b/keyboards/wilba_tech/wt60_h2/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x002B // PCB #43
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT60-H2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 } // D4, B7, B0
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt60_h2/info.json b/keyboards/wilba_tech/wt60_h2/info.json
index ce5a708626..30a2fb65f6 100644
--- a/keyboards/wilba_tech/wt60_h2/info.json
+++ b/keyboards/wilba_tech/wt60_h2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT60-H2",
+ "keyboard_name": "WT60-H2",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x002B",
+ "device_version": "0.0.1"
+ },
"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.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/wilba_tech/wt60_h3/config.h b/keyboards/wilba_tech/wt60_h3/config.h
index 7121d00086..d0087e9d88 100644
--- a/keyboards/wilba_tech/wt60_h3/config.h
+++ b/keyboards/wilba_tech/wt60_h3/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x002C // PCB #44
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT60-H3
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 } // D4, B7, B0
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt60_h3/info.json b/keyboards/wilba_tech/wt60_h3/info.json
index 2a255f6017..b4d071c441 100644
--- a/keyboards/wilba_tech/wt60_h3/info.json
+++ b/keyboards/wilba_tech/wt60_h3/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT60-H3",
+ "keyboard_name": "WT60-H3",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x002C",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_all": "LAYOUT_60_iso_tsangan_split_rshift"
},
diff --git a/keyboards/wilba_tech/wt60_xt/config.h b/keyboards/wilba_tech/wt60_xt/config.h
index f08d3179ef..df174cddd1 100644
--- a/keyboards/wilba_tech/wt60_xt/config.h
+++ b/keyboards/wilba_tech/wt60_xt/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x001C // PCB #28
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT60-XT
-
#define AUDIO_PIN C6
#define AUDIO_CLICKY
@@ -44,7 +37,6 @@
*/
#define MATRIX_ROW_PINS { F0, E6, F4, F6, F7 }
#define MATRIX_COL_PINS { B7, B0, F5, D5, B1, B2, B3, D3, D2, C7, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt60_xt/info.json b/keyboards/wilba_tech/wt60_xt/info.json
index ee08d4c6c3..50f64f9d6f 100644
--- a/keyboards/wilba_tech/wt60_xt/info.json
+++ b/keyboards/wilba_tech/wt60_xt/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT60-XT",
+ "keyboard_name": "WT60-XT",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x001C",
+ "device_version": "0.0.1"
+ },
"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":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":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":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":0, "y":4}, {"x":1, "y":4}, {"x":2.25, "y":4, "w":1.25}, {"x":3.5, "y":4, "w":1.25}, {"x":4.75, "y":4, "w":1.25}, {"x":6, "y":4, "w":6.25}, {"x":12.25, "y":4, "w":1.25}, {"x":13.5, "y":4, "w":1.25}, {"x":14.75, "y":4, "w":1.25}, {"x":16, "y":4, "w":1.25}]
diff --git a/keyboards/wilba_tech/wt65_a/config.h b/keyboards/wilba_tech/wt65_a/config.h
index 46df641ae4..062e2d8564 100644
--- a/keyboards/wilba_tech/wt65_a/config.h
+++ b/keyboards/wilba_tech/wt65_a/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x065A // 65-A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT65-A
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, E6, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
@@ -108,6 +100,9 @@
// enable the mono backlight
#define MONO_BACKLIGHT_ENABLED 1
+// enable the specific indicators
+#define MONO_BACKLIGHT_WT65_A
+
// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
#define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
diff --git a/keyboards/wilba_tech/wt65_a/info.json b/keyboards/wilba_tech/wt65_a/info.json
index ee2c95e1df..88aa9b21dd 100644
--- a/keyboards/wilba_tech/wt65_a/info.json
+++ b/keyboards/wilba_tech/wt65_a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT65-A",
+ "keyboard_name": "WT65-A",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x065A",
+ "device_version": "0.0.1"
+ },
"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":"Del", "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":"PgUp", "x":15, "y":1}, {"label":"Control", "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":"End", "x":15, "y":3}, {"label":"Fn", "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/wilba_tech/wt65_b/config.h b/keyboards/wilba_tech/wt65_b/config.h
index bc81515c19..8320daef0a 100644
--- a/keyboards/wilba_tech/wt65_b/config.h
+++ b/keyboards/wilba_tech/wt65_b/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x065B // 65-B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT65-B
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, E6, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
@@ -108,6 +100,9 @@
// enable the mono backlight
#define MONO_BACKLIGHT_ENABLED 1
+// enable the specific indicators
+#define MONO_BACKLIGHT_WT65_B
+
// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
#define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
diff --git a/keyboards/wilba_tech/wt65_b/info.json b/keyboards/wilba_tech/wt65_b/info.json
index 5a8ddab113..c9c0ec3f35 100644
--- a/keyboards/wilba_tech/wt65_b/info.json
+++ b/keyboards/wilba_tech/wt65_b/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT65-B",
+ "keyboard_name": "WT65-B",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x065B",
+ "device_version": "0.0.1"
+ },
"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":"Del", "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":"End", "x":15, "y":1}, {"label":"Control", "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":"Up", "x":14, "y":3}, {"label":"PgDn", "x":15, "y":3}, {"label":"Win", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":2.25, "y":4, "w":1.5}, {"x":3.75, "y":4, "w":7}, {"label":"Fn", "x":10.75, "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/wilba_tech/wt65_d/config.h b/keyboards/wilba_tech/wt65_d/config.h
new file mode 100644
index 0000000000..f0cf1acd52
--- /dev/null
+++ b/keyboards/wilba_tech/wt65_d/config.h
@@ -0,0 +1,25 @@
+// Copyright 2022 Jason Williams (@wilba)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+#include "config_common.h"
+
+// key matrix size
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+// Keyboard Matrix Assignments
+#define MATRIX_ROW_PINS { E6, F0, F4, F6, F7 }
+#define MATRIX_COL_PINS { F5, D5, D3, D2, B7, B0, B3, C7, C6, B6, B5, B4, D7, D6, D4 }
+#define DIODE_DIRECTION COL2ROW
+
+// Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed
+#define DEBOUNCE 5
+
+#define LED_CAPS_LOCK_PIN F1
+
+// 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 \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_d/info.json b/keyboards/wilba_tech/wt65_d/info.json
new file mode 100644
index 0000000000..761aefe8be
--- /dev/null
+++ b/keyboards/wilba_tech/wt65_d/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "WT65-D",
+ "manufacturer": "wilba.tech",
+ "url": "https://wilba.tech",
+ "maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x0031",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [{"label":"0,0", "x":0, "y":0}, {"label":"0,3", "x":1, "y":0}, {"label":"0,2", "x":2, "y":0}, {"label":"0,1", "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,12", "x":10, "y":0}, {"label":"0,11", "x":11, "y":0}, {"label":"0,10", "x":12, "y":0}, {"label":"0,13", "x":13, "y":0}, {"label":"2,13", "x":14, "y":0}, {"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,12", "x":12.75, "y":2, "w":2.25}, {"label":"2,14", "x":15, "y":2}, {"label":"3,0", "x":0, "y":3, "w":1.25}, {"label":"3,1", "x":1.25, "y":3}, {"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}, {"label":"4,2", "x":2.25, "y":4, "w":1.25}, {"label":"4,3", "x":3.5, "y":4, "w":6}, {"label":"4,9", "x":9.5, "y":4, "w":1.25}, {"label":"4,10", "x":10.75, "y":4}, {"label":"4,11", "x":11.75, "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}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_d/keymaps/default/keymap.c b/keyboards/wilba_tech/wt65_d/keymaps/default/keymap.c
new file mode 100644
index 0000000000..3572bf9032
--- /dev/null
+++ b/keyboards/wilba_tech/wt65_d/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+// Copyright 2022 Jason Williams (@wilba)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+// Default layout for WT65-D
+#include QMK_KEYBOARD_H
+
+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_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_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_END,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), 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_DEL, 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_TRNS, KC_TRNS, KC_TRNS, 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, 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),
+
+ // 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),
+}; \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_d/keymaps/via/keymap.c b/keyboards/wilba_tech/wt65_d/keymaps/via/keymap.c
new file mode 100644
index 0000000000..1f9d213f05
--- /dev/null
+++ b/keyboards/wilba_tech/wt65_d/keymaps/via/keymap.c
@@ -0,0 +1 @@
+#include "../default/keymap.c" \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_d/keymaps/via/rules.mk b/keyboards/wilba_tech/wt65_d/keymaps/via/rules.mk
new file mode 100644
index 0000000000..036bd6d1c3
--- /dev/null
+++ b/keyboards/wilba_tech/wt65_d/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_d/readme.md b/keyboards/wilba_tech/wt65_d/readme.md
new file mode 100644
index 0000000000..bbd3bbff81
--- /dev/null
+++ b/keyboards/wilba_tech/wt65_d/readme.md
@@ -0,0 +1,25 @@
+# wilba.tech WT65-D
+
+WT65-D is a keyboard PCB supporting 65% layout. [More info at wilba.tech](https://wilba.tech/)
+
+* Keyboard Maintainer: [wilba](https://github.com/wilba)
+* Hardware Supported: wilba.tech WT65-D
+* Hardware Availability: [wilba.tech](https://wilba.tech/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wilba_tech/wt65_d:default
+
+Flashing example for this keyboard:
+
+ make wilba_tech/wt65_d: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 `QK_BOOT` if it is available
diff --git a/keyboards/wilba_tech/wt65_d/rules.mk b/keyboards/wilba_tech/wt65_d/rules.mk
new file mode 100644
index 0000000000..51570559c0
--- /dev/null
+++ b/keyboards/wilba_tech/wt65_d/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 = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_d/wt65_d.c b/keyboards/wilba_tech/wt65_d/wt65_d.c
new file mode 100644
index 0000000000..b734652c78
--- /dev/null
+++ b/keyboards/wilba_tech/wt65_d/wt65_d.c
@@ -0,0 +1,4 @@
+// Copyright 2022 Jason Williams (@wilba)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "wt65_d.h" \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_d/wt65_d.h b/keyboards/wilba_tech/wt65_d/wt65_d.h
new file mode 100644
index 0000000000..4f0b36d075
--- /dev/null
+++ b/keyboards/wilba_tech/wt65_d/wt65_d.h
@@ -0,0 +1,23 @@
+// Copyright 2022 Jason Williams (@wilba)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+#define ____ KC_NO
+
+#define LAYOUT_all( \
+ K000, K003, K002, K001, K004, K005, K006, K007, K008, K009, K012, K011, K010, 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, K403, K409, 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, K403, ____, ____, ____, ____, ____, K409, K410, K411, K412, K413, K414 } \
+}
+
diff --git a/keyboards/wilba_tech/wt65_f/config.h b/keyboards/wilba_tech/wt65_f/config.h
index 04c19489f8..0380f44d28 100644
--- a/keyboards/wilba_tech/wt65_f/config.h
+++ b/keyboards/wilba_tech/wt65_f/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x002D // PCB #45
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT65-F
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 } // B7, B0
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt65_f/info.json b/keyboards/wilba_tech/wt65_f/info.json
index b808962887..2e7ba6c3a0 100644
--- a/keyboards/wilba_tech/wt65_f/info.json
+++ b/keyboards/wilba_tech/wt65_f/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT65-F",
+ "keyboard_name": "WT65-F",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x002D",
+ "device_version": "0.0.1"
+ },
"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":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}]
diff --git a/keyboards/wilba_tech/wt65_fx/config.h b/keyboards/wilba_tech/wt65_fx/config.h
index a84deb0689..0380f44d28 100644
--- a/keyboards/wilba_tech/wt65_fx/config.h
+++ b/keyboards/wilba_tech/wt65_fx/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x002E // PCB #46
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT65-FX
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 } // B7, B0
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt65_fx/info.json b/keyboards/wilba_tech/wt65_fx/info.json
index 90bd79fe76..1e12d4e53b 100644
--- a/keyboards/wilba_tech/wt65_fx/info.json
+++ b/keyboards/wilba_tech/wt65_fx/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT65-FX",
+ "keyboard_name": "WT65-FX",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x002E",
+ "device_version": "0.0.1"
+ },
"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":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/wilba_tech/wt65_g/config.h b/keyboards/wilba_tech/wt65_g/config.h
index 8529d89990..b0f9fc2b54 100644
--- a/keyboards/wilba_tech/wt65_g/config.h
+++ b/keyboards/wilba_tech/wt65_g/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x0022 // PCB #34
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT65-G
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 } // B7, B0
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt65_g/info.json b/keyboards/wilba_tech/wt65_g/info.json
index 423512dba1..c7713e58fd 100644
--- a/keyboards/wilba_tech/wt65_g/info.json
+++ b/keyboards/wilba_tech/wt65_g/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT65-G",
+ "keyboard_name": "WT65-G",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x0022",
+ "device_version": "0.0.1"
+ },
"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":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}]
diff --git a/keyboards/wilba_tech/wt65_g2/config.h b/keyboards/wilba_tech/wt65_g2/config.h
index 1492f689c9..b0f9fc2b54 100644
--- a/keyboards/wilba_tech/wt65_g2/config.h
+++ b/keyboards/wilba_tech/wt65_g2/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x002A // PCB #42
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT65-G2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 } // B7, B0
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt65_g2/info.json b/keyboards/wilba_tech/wt65_g2/info.json
index 44661ba66c..7e76598d71 100644
--- a/keyboards/wilba_tech/wt65_g2/info.json
+++ b/keyboards/wilba_tech/wt65_g2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT65-G2",
+ "keyboard_name": "WT65-G2",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x002A",
+ "device_version": "0.0.1"
+ },
"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":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":2.25, "y":4, "w":1.5}, {"x":3.75, "y":4, "w":7}, {"x":10.75, "y":4, "w":1.5}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
diff --git a/keyboards/wilba_tech/wt65_h1/config.h b/keyboards/wilba_tech/wt65_h1/config.h
index d7626af3e3..b0f9fc2b54 100644
--- a/keyboards/wilba_tech/wt65_h1/config.h
+++ b/keyboards/wilba_tech/wt65_h1/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x0025 // PCB #37
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT65-H1
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 } // B7, B0
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt65_h1/info.json b/keyboards/wilba_tech/wt65_h1/info.json
index f7be0ab158..9799a06de2 100644
--- a/keyboards/wilba_tech/wt65_h1/info.json
+++ b/keyboards/wilba_tech/wt65_h1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT65-H1",
+ "keyboard_name": "WT65-H1",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x0025",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi_blocker_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":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.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":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
diff --git a/keyboards/wilba_tech/wt65_xt/config.h b/keyboards/wilba_tech/wt65_xt/config.h
index 8dbc8559de..9cf5524d75 100644
--- a/keyboards/wilba_tech/wt65_xt/config.h
+++ b/keyboards/wilba_tech/wt65_xt/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x001D // PCB #29
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT65-XT
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { B7, B0, F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt65_xt/info.json b/keyboards/wilba_tech/wt65_xt/info.json
index e0cad3da71..26fc69fa0e 100644
--- a/keyboards/wilba_tech/wt65_xt/info.json
+++ b/keyboards/wilba_tech/wt65_xt/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT65-XT",
+ "keyboard_name": "WT65-XT",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x001D",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"x":0, "y":0}, {"x":1, "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.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"x":14.5, "y":0}, {"x":15.5, "y":0, "w":2}, {"x":17.5, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2.5, "y":1, "w":1.5}, {"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":16, "y":1, "w":1.5}, {"x":17.5, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2.5, "y":2, "w":1.25}, {"x":4.25, "y":2}, {"x":5.25, "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}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":13.25, "y":2}, {"x":14.25, "y":2}, {"x":15.25, "y":2, "w":2.25}, {"x":17.5, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.5, "y":3, "w":2.25}, {"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}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.75}, {"x":16.5, "y":3}, {"x":17.5, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2.5, "y":4, "w":1.5}, {"x":4, "y":4}, {"x":5, "y":4, "w":1.5}, {"x":6.5, "y":4, "w":7}, {"x":13.5, "y":4, "w":1.5}, {"x":15.5, "y":4}, {"x":16.5, "y":4}, {"x":17.5, "y":4}]
diff --git a/keyboards/wilba_tech/wt65_xtx/config.h b/keyboards/wilba_tech/wt65_xtx/config.h
index 3ee2d44429..612b273b95 100644
--- a/keyboards/wilba_tech/wt65_xtx/config.h
+++ b/keyboards/wilba_tech/wt65_xtx/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x001E // PCB #30
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT65-XTX
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { B7, B0, F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt65_xtx/info.json b/keyboards/wilba_tech/wt65_xtx/info.json
index 8a1d4f68d2..96d1068873 100644
--- a/keyboards/wilba_tech/wt65_xtx/info.json
+++ b/keyboards/wilba_tech/wt65_xtx/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT65-XTX",
+ "keyboard_name": "WT65-XTX",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x001E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"x":0, "y":0}, {"x":1, "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.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"x":14.5, "y":0}, {"x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":17.5, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2.5, "y":1, "w":1.5}, {"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":16, "y":1, "w":1.5}, {"x":17.5, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2.5, "y":2, "w":1.25}, {"x":4.25, "y":2}, {"x":5.25, "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}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":13.25, "y":2}, {"x":14.25, "y":2}, {"x":15.25, "y":2, "w":2.25}, {"x":17.5, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.5, "y":3, "w":2.25}, {"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}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.75}, {"x":16.5, "y":3}, {"x":17.5, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":1.25}, {"x":6.25, "y":4, "w":6.25}, {"x":12.5, "y":4, "w":1.25}, {"x":13.75, "y":4, "w":1.25}, {"x":15.5, "y":4}, {"x":16.5, "y":4}, {"x":17.5, "y":4}]
diff --git a/keyboards/wilba_tech/wt69_a/config.h b/keyboards/wilba_tech/wt69_a/config.h
index 7db475ba60..ff67b45038 100644
--- a/keyboards/wilba_tech/wt69_a/config.h
+++ b/keyboards/wilba_tech/wt69_a/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x069A // 69-A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT69-A
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F0, E6, F4, F6, F7 }
#define MATRIX_COL_PINS { B7, B0, F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/wilba_tech/wt69_a/info.json b/keyboards/wilba_tech/wt69_a/info.json
index 0ed3bbdbb6..0f82c92d8f 100644
--- a/keyboards/wilba_tech/wt69_a/info.json
+++ b/keyboards/wilba_tech/wt69_a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT69-A",
+ "keyboard_name": "WT69-A",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x069A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"F1", "x":0, "y":0}, {"label":"F2", "x":1, "y":0}, {"label":"Esc", "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":8.25, "y":0}, {"label":"&", "x":9.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":"BkSp", "x":15.25, "y":0}, {"label":"BkSp", "x":16.25, "y":0}, {"label":"Home", "x":17.25, "y":0}, {"label":"F3", "x":0, "y":1}, {"label":"F4", "x":1, "y":1}, {"label":"Tab", "x":2.25, "y":1, "w":1.5}, {"label":"Q", "x":3.75, "y":1}, {"label":"W", "x":4.75, "y":1}, {"label":"E", "x":5.75, "y":1}, {"label":"R", "x":6.75, "y":1}, {"label":"T", "x":7.75, "y":1}, {"label":"Y", "x":8.75, "y":1}, {"label":"U", "x":9.75, "y":1}, {"label":"I", "x":10.75, "y":1}, {"label":"O", "x":11.75, "y":1}, {"label":"P", "x":12.75, "y":1}, {"label":"{", "x":13.75, "y":1}, {"label":"}", "x":14.75, "y":1}, {"label":"|", "x":15.75, "y":1, "w":1.5}, {"label":"PgUp", "x":17.25, "y":1}, {"label":"F5", "x":0, "y":2}, {"label":"F6", "x":1, "y":2}, {"label":"Caps Lock", "x":2.25, "y":2, "w":1.75}, {"label":"A", "x":4, "y":2}, {"label":"S", "x":5, "y":2}, {"label":"D", "x":6, "y":2}, {"label":"F", "x":7, "y":2}, {"label":"G", "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":"Enter", "x":15, "y":2, "w":2.25}, {"label":"PgDn", "x":17.25, "y":2}, {"label":"F7", "x":0, "y":3}, {"label":"F8", "x":1, "y":3}, {"label":"Shift", "x":2.25, "y":3, "w":2.25}, {"label":"Z", "x":4.5, "y":3}, {"label":"X", "x":5.5, "y":3}, {"label":"C", "x":6.5, "y":3}, {"label":"V", "x":7.5, "y":3}, {"label":"B", "x":8.5, "y":3}, {"label":"N", "x":9.5, "y":3}, {"label":"M", "x":10.5, "y":3}, {"label":"<", "x":11.5, "y":3}, {"label":">", "x":12.5, "y":3}, {"label":"?", "x":13.5, "y":3}, {"label":"Shift", "x":14.5, "y":3, "w":1.75}, {"label":"\u2191", "x":16.25, "y":3}, {"label":"End", "x":17.25, "y":3}, {"label":"F9", "x":0, "y":4}, {"label":"F10", "x":1, "y":4}, {"label":"Control", "x":2.25, "y":4, "w":1.5}, {"label":"Win", "x":3.75, "y":4}, {"label":"Alt", "x":4.75, "y":4, "w":1.5}, {"x":6.25, "y":4, "w":7}, {"label":"Fn", "x":13.25, "y":4, "w":1.5}, {"label":"\u2190", "x":15.25, "y":4}, {"label":"\u2193", "x":16.25, "y":4}, {"label":"\u2192", "x":17.25, "y":4}]
diff --git a/keyboards/wilba_tech/wt70_jb/config.h b/keyboards/wilba_tech/wt70_jb/config.h
index 67bf6b0843..fbcfdc77ba 100644
--- a/keyboards/wilba_tech/wt70_jb/config.h
+++ b/keyboards/wilba_tech/wt70_jb/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x001F // PCB #31
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT70-JB
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
@@ -40,7 +33,6 @@
*/
#define MATRIX_ROW_PINS { E6, F0, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, D3, D2, D1, D0, B7, C7, C6, B6, B5, B4, D7, D6, D4, B0, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt70_jb/info.json b/keyboards/wilba_tech/wt70_jb/info.json
index 24769f1043..da6ad38d59 100644
--- a/keyboards/wilba_tech/wt70_jb/info.json
+++ b/keyboards/wilba_tech/wt70_jb/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT70-JB",
+ "keyboard_name": "WT70-JB",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x001F",
+ "device_version": "0.0.1"
+ },
"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.5, "y":0}, {"x":16.5, "y":0}, {"x":17.5, "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.5, "y":1}, {"x":16.5, "y":1}, {"x":17.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, "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":16.5, "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":15.5, "y":4}, {"x":16.5, "y":4}, {"x":17.5, "y":4}]
diff --git a/keyboards/wilba_tech/wt70_jb/wt70_jb.c b/keyboards/wilba_tech/wt70_jb/wt70_jb.c
index 0bb9aca092..d4f2c5c8da 100644
--- a/keyboards/wilba_tech/wt70_jb/wt70_jb.c
+++ b/keyboards/wilba_tech/wt70_jb/wt70_jb.c
@@ -38,9 +38,9 @@ bool led_update_kb(led_t led_state) {
// Called from matrix_init_kb() if not VIA_ENABLE
void via_init_kb(void)
{
- // If the EEPROM has the magic, the data is good.
- // OK to load from EEPROM
- if (via_eeprom_is_valid()) {
+ // This checks both an EEPROM reset (from bootmagic lite, keycodes)
+ // and also firmware build date (from via_eeprom_is_valid())
+ if (eeconfig_is_enabled()) {
} else {
// Cache "first execution" state so we can do something
// specific after QMK initialization has done its thing.
diff --git a/keyboards/wilba_tech/wt75_a/config.h b/keyboards/wilba_tech/wt75_a/config.h
index 6562e65fcc..415774aa17 100644
--- a/keyboards/wilba_tech/wt75_a/config.h
+++ b/keyboards/wilba_tech/wt75_a/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x075A // 75-A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT75-A
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F1, F0, E6, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/wilba_tech/wt75_a/info.json b/keyboards/wilba_tech/wt75_a/info.json
index c54371256a..b9420ea27e 100644
--- a/keyboards/wilba_tech/wt75_a/info.json
+++ b/keyboards/wilba_tech/wt75_a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT75-A",
+ "keyboard_name": "WT75-A",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x075A",
+ "device_version": "0.0.1"
+ },
"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":5.75, "y":0}, {"label":"F6", "x":6.75, "y":0}, {"label":"F7", "x":7.75, "y":0}, {"label":"F8", "x":8.75, "y":0}, {"label":"F9", "x":10, "y":0}, {"label":"F10", "x":11, "y":0}, {"label":"F11", "x":12, "y":0}, {"label":"F12", "x":13, "y":0}, {"label":"Del", "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":"Bksp", "x":13, "y":1.25}, {"label":"Bksp", "x":14, "y":1.25}, {"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":"PgDn", "x":15, "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, "y":4.25}, {"label":"End", "x":15, "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":"6.25U", "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":"\u2190", "x":13, "y":5.25}, {"label":"\u2193", "x":14, "y":5.25}, {"label":"\u2192", "x":15, "y":5.25}]
diff --git a/keyboards/wilba_tech/wt75_b/config.h b/keyboards/wilba_tech/wt75_b/config.h
index a8905fc2cc..98b3d937f9 100644
--- a/keyboards/wilba_tech/wt75_b/config.h
+++ b/keyboards/wilba_tech/wt75_b/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x075B // 75-B
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT75-B
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F1, F0, E6, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B7, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, B2, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
@@ -108,6 +100,9 @@
// enable the mono backlight
#define MONO_BACKLIGHT_ENABLED 1
+// enable the specific indicators
+#define MONO_BACKLIGHT_WT75_B
+
// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
#define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
diff --git a/keyboards/wilba_tech/wt75_b/info.json b/keyboards/wilba_tech/wt75_b/info.json
index 85b6bbe11e..2f0f784108 100644
--- a/keyboards/wilba_tech/wt75_b/info.json
+++ b/keyboards/wilba_tech/wt75_b/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT75-B",
+ "keyboard_name": "WT75-B",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x075B",
+ "device_version": "0.0.1"
+ },
"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}, {"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, "w":1.5}, {"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}, {"x":13.5, "y":2, "w":1.5}, {"x":15, "y":2}, {"x":0, "y":3, "w":1.75}, {"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":2.25}, {"x":15, "y":3}, {"x":0, "y":4, "w":2.25}, {"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}, {"x":12.25, "y":4, "w":1.75}, {"x":14, "y":4}, {"x":15, "y":4}, {"x":0, "y":5, "w":1.25}, {"x":1.25, "y":5, "w":1.25}, {"x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"x":10, "y":5, "w":1.25}, {"x":11.25, "y":5, "w":1.25}, {"x":13, "y":5}, {"x":14, "y":5}, {"x":15, "y":5}]
diff --git a/keyboards/wilba_tech/wt75_b/keymaps/madhatter/keymap.c b/keyboards/wilba_tech/wt75_b/keymaps/madhatter/keymap.c
index 8b650dee35..32062982bf 100644
--- a/keyboards/wilba_tech/wt75_b/keymaps/madhatter/keymap.c
+++ b/keyboards/wilba_tech/wt75_b/keymaps/madhatter/keymap.c
@@ -20,7 +20,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FNMS] = 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_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, RESET, 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, QK_BOOT, KC_VOLU,
AG_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_VOLD,
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_MS_U, KC_BTN2,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R),
diff --git a/keyboards/wilba_tech/wt75_c/config.h b/keyboards/wilba_tech/wt75_c/config.h
index 8e65c1a149..d8cf5a1a95 100644
--- a/keyboards/wilba_tech/wt75_c/config.h
+++ b/keyboards/wilba_tech/wt75_c/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x075C // 75-C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT75-C
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F1, F0, E6, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, B7, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL
@@ -108,6 +100,9 @@
// enable the mono backlight
#define MONO_BACKLIGHT_ENABLED 1
+// enable the specific indicators
+#define MONO_BACKLIGHT_WT75_C
+
// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
#define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
diff --git a/keyboards/wilba_tech/wt75_c/info.json b/keyboards/wilba_tech/wt75_c/info.json
index 4cada976d3..c124bd0d99 100644
--- a/keyboards/wilba_tech/wt75_c/info.json
+++ b/keyboards/wilba_tech/wt75_c/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT75-A",
+ "keyboard_name": "WT75-C",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x075C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"0", "x":0, "y":0}, {"label":"1", "x":1.25, "y":0}, {"label":"2", "x":2.25, "y":0}, {"label":"3", "x":3.25, "y":0}, {"label":"4", "x":4.25, "y":0}, {"label":"5", "x":5.5, "y":0}, {"label":"6", "x":6.5, "y":0}, {"label":"7", "x":7.5, "y":0}, {"label":"8", "x":8.5, "y":0}, {"label":"9", "x":9.75, "y":0}, {"label":"10", "x":10.75, "y":0}, {"label":"11", "x":11.75, "y":0}, {"label":"12", "x":12.75, "y":0}, {"label":"13", "x":14, "y":0}, {"label":"14", "x":0, "y":1.25}, {"label":"15", "x":1, "y":1.25}, {"label":"16", "x":2, "y":1.25}, {"label":"17", "x":3, "y":1.25}, {"label":"18", "x":4, "y":1.25}, {"label":"19", "x":5, "y":1.25}, {"label":"20", "x":6, "y":1.25}, {"label":"21", "x":7, "y":1.25}, {"label":"22", "x":8, "y":1.25}, {"label":"23", "x":9, "y":1.25}, {"label":"24", "x":10, "y":1.25}, {"label":"25", "x":11, "y":1.25}, {"label":"26", "x":12, "y":1.25}, {"label":"27", "x":13, "y":1.25}, {"label":"28", "x":14, "y":1.25}, {"label":"29", "x":15.25, "y":1.25}, {"label":"30", "x":0, "y":2.25, "w":1.5}, {"label":"31", "x":1.5, "y":2.25}, {"label":"32", "x":2.5, "y":2.25}, {"label":"33", "x":3.5, "y":2.25}, {"label":"34", "x":4.5, "y":2.25}, {"label":"35", "x":5.5, "y":2.25}, {"label":"36", "x":6.5, "y":2.25}, {"label":"37", "x":7.5, "y":2.25}, {"label":"38", "x":8.5, "y":2.25}, {"label":"39", "x":9.5, "y":2.25}, {"label":"40", "x":10.5, "y":2.25}, {"label":"41", "x":11.5, "y":2.25}, {"label":"42", "x":12.5, "y":2.25}, {"label":"43", "x":13.5, "y":2.25, "w":1.5}, {"label":"44", "x":15.25, "y":2.25}, {"label":"45", "x":0, "y":3.25, "w":1.75}, {"label":"46", "x":1.75, "y":3.25}, {"label":"47", "x":2.75, "y":3.25}, {"label":"48", "x":3.75, "y":3.25}, {"label":"49", "x":4.75, "y":3.25}, {"label":"50", "x":5.75, "y":3.25}, {"label":"51", "x":6.75, "y":3.25}, {"label":"52", "x":7.75, "y":3.25}, {"label":"53", "x":8.75, "y":3.25}, {"label":"54", "x":9.75, "y":3.25}, {"label":"55", "x":10.75, "y":3.25}, {"label":"56", "x":11.75, "y":3.25}, {"label":"57", "x":12.75, "y":3.25, "w":2.25}, {"label":"58", "x":15.25, "y":3.25}, {"label":"59", "x":0, "y":4.25, "w":2.25}, {"label":"60", "x":2.25, "y":4.25}, {"label":"61", "x":3.25, "y":4.25}, {"label":"62", "x":4.25, "y":4.25}, {"label":"63", "x":5.25, "y":4.25}, {"label":"64", "x":6.25, "y":4.25}, {"label":"65", "x":7.25, "y":4.25}, {"label":"66", "x":8.25, "y":4.25}, {"label":"67", "x":9.25, "y":4.25}, {"label":"68", "x":10.25, "y":4.25}, {"label":"69", "x":11.25, "y":4.25}, {"label":"70", "x":12.25, "y":4.25, "w":1.75}, {"label":"71", "x":14.25, "y":4.5}, {"label":"72", "x":0, "y":5.25, "w":1.5}, {"label":"73", "x":1.5, "y":5.25}, {"label":"74", "x":2.5, "y":5.25, "w":1.5}, {"label":"75", "x":4, "y":5.25, "w":6}, {"label":"76", "x":10, "y":5.25, "w":1.5}, {"label":"77", "x":11.5, "y":5.25, "w":1.5}, {"label":"78", "x":13.25, "y":5.5}, {"label":"79", "x":14.25, "y":5.5}, {"label":"80", "x":15.25, "y":5.5}]
diff --git a/keyboards/wilba_tech/wt80_a/config.h b/keyboards/wilba_tech/wt80_a/config.h
index de4de0af2b..2bc81b2fa5 100644
--- a/keyboards/wilba_tech/wt80_a/config.h
+++ b/keyboards/wilba_tech/wt80_a/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x080A // 80-A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT80-A
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F1, F0, E6, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4, B7, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
@@ -108,6 +100,9 @@
// enable the mono backlight
#define MONO_BACKLIGHT_ENABLED 1
+// enable the specific indicators
+#define MONO_BACKLIGHT_WT80_A
+
// disable backlight when USB suspended (PC sleep/hibernate/shutdown)
#define MONO_BACKLIGHT_DISABLE_WHEN_USB_SUSPENDED 0
diff --git a/keyboards/wilba_tech/wt80_a/info.json b/keyboards/wilba_tech/wt80_a/info.json
index f568dd5d17..ee08cc460b 100644
--- a/keyboards/wilba_tech/wt80_a/info.json
+++ b/keyboards/wilba_tech/wt80_a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT80-A",
+ "keyboard_name": "WT80-A",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x080A",
+ "device_version": "0.0.1"
+ },
"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}, {"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":"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":1.75}, {"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":"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/wilba_tech/wt80_bc/config.h b/keyboards/wilba_tech/wt80_bc/config.h
index 5a512c646e..b82cbda0d0 100644
--- a/keyboards/wilba_tech/wt80_bc/config.h
+++ b/keyboards/wilba_tech/wt80_bc/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x80B0 // 80-BC
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT80-BC
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F1, F0, E6, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4, B7, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt80_bc/info.json b/keyboards/wilba_tech/wt80_bc/info.json
index 79fe198ad1..bc8c4924ca 100644
--- a/keyboards/wilba_tech/wt80_bc/info.json
+++ b/keyboards/wilba_tech/wt80_bc/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT80-BC",
+ "keyboard_name": "WT80-BC",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x80B0",
+ "device_version": "0.0.1"
+ },
"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.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/wilba_tech/wt80_g/config.h b/keyboards/wilba_tech/wt80_g/config.h
index 4c636c200a..b82cbda0d0 100644
--- a/keyboards/wilba_tech/wt80_g/config.h
+++ b/keyboards/wilba_tech/wt80_g/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x0023 // PCB #35
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT80-G
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { F1, F0, E6, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4, B7, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt80_g/info.json b/keyboards/wilba_tech/wt80_g/info.json
index 36ac36d9ab..ee516282b4 100644
--- a/keyboards/wilba_tech/wt80_g/info.json
+++ b/keyboards/wilba_tech/wt80_g/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT80-G",
+ "keyboard_name": "WT80-G",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x0023",
+ "device_version": "0.0.1"
+ },
"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.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}]
diff --git a/keyboards/wilba_tech/wt8_a/config.h b/keyboards/wilba_tech/wt8_a/config.h
index 43c6a18837..4e7f58bd77 100644
--- a/keyboards/wilba_tech/wt8_a/config.h
+++ b/keyboards/wilba_tech/wt8_a/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x6582 // wilba.tech
-#define PRODUCT_ID 0x008A // 8-A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wilba.tech
-#define PRODUCT wilba.tech WT8-A
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 8
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { E6 }
#define MATRIX_COL_PINS { F4, F1, B2, B6, F6, F7, D5, B4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wilba_tech/wt8_a/info.json b/keyboards/wilba_tech/wt8_a/info.json
index 5358a5869f..73806e0760 100644
--- a/keyboards/wilba_tech/wt8_a/info.json
+++ b/keyboards/wilba_tech/wt8_a/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "wilba.tech WT8-A",
+ "keyboard_name": "WT8-A",
+ "manufacturer": "wilba.tech",
"url": "https://wilba.tech",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x6582",
+ "pid": "0x008A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"x", "x":0, "y":0}, {"label":"x", "x":1, "y":0}, {"label":"x", "x":2, "y":0}, {"label":"x", "x":3, "y":0}, {"label":"x", "x":0, "y":1}, {"label":"x", "x":1, "y":1}, {"label":"x", "x":2, "y":1}, {"label":"x", "x":3, "y":1}]
diff --git a/keyboards/wilba_tech/wt8_a/keymaps/rys/keymap.c b/keyboards/wilba_tech/wt8_a/keymaps/rys/keymap.c
index f0a6edc0b8..d4f7e3448a 100644
--- a/keyboards/wilba_tech/wt8_a/keymaps/rys/keymap.c
+++ b/keyboards/wilba_tech/wt8_a/keymaps/rys/keymap.c
@@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FL1] = LAYOUT(
_______, _______, _______, _______,
- _______, STOKEN5, KC_NUBS, RESET),
+ _______, STOKEN5, KC_NUBS, QK_BOOT),
/* Keymap base layer (_FL2) - function layer 2
* ,---------------------------.
* | | | | |
diff --git a/keyboards/wilba_tech/wt_main.c b/keyboards/wilba_tech/wt_main.c
index a8ad795446..a7afeb5907 100644
--- a/keyboards/wilba_tech/wt_main.c
+++ b/keyboards/wilba_tech/wt_main.c
@@ -35,9 +35,9 @@
// Called from matrix_init_kb() if not VIA_ENABLE
void via_init_kb(void)
{
- // If the EEPROM has the magic, the data is good.
- // OK to load from EEPROM
- if (via_eeprom_is_valid()) {
+ // This checks both an EEPROM reset (from bootmagic lite, keycodes)
+ // and also firmware build date (from via_eeprom_is_valid())
+ if (eeconfig_is_enabled()) {
#if RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
backlight_config_load();
#endif // RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED
diff --git a/keyboards/wilba_tech/wt_mono_backlight.c b/keyboards/wilba_tech/wt_mono_backlight.c
index 5e2fde810c..71bf8e0284 100644
--- a/keyboards/wilba_tech/wt_mono_backlight.c
+++ b/keyboards/wilba_tech/wt_mono_backlight.c
@@ -173,6 +173,33 @@ void backlight_effect_indicators(void)
IS31FL3736_mono_set_brightness(63, rgb.g);
IS31FL3736_mono_set_brightness(71, rgb.b);
#endif // MONO_BACKLIGHT_WT75_A
+
+// This pairs with "All Off" already setting zero brightness,
+// and "All On" already setting non-zero brightness.
+#if defined(MONO_BACKLIGHT_WT60_A) || \
+defined(MONO_BACKLIGHT_WT65_A) || \
+defined(MONO_BACKLIGHT_WT65_B) || \
+defined(MONO_BACKLIGHT_WT75_A) || \
+defined(MONO_BACKLIGHT_WT75_B) || \
+defined(MONO_BACKLIGHT_WT75_C) || \
+defined(MONO_BACKLIGHT_WT80_A)
+ if ( g_indicator_state & (1<<USB_LED_CAPS_LOCK) ) {
+ // Caps Lock: D1 -> (4*8+0)
+ IS31FL3736_mono_set_brightness(32, 255);
+ }
+#endif
+#if defined(MONO_BACKLIGHT_WT80_A)
+ if ( g_indicator_state & (1<<USB_LED_SCROLL_LOCK) ) {
+ // Scroll Lock: G7 -> (6*8+6)
+ IS31FL3736_mono_set_brightness(54, 255);
+ }
+#endif
+#if defined(MONO_BACKLIGHT_WT75_C)
+ if ( g_indicator_state & (1<<USB_LED_SCROLL_LOCK) ) {
+ // Scroll Lock: G8 -> (6*8+7)
+ IS31FL3736_mono_set_brightness(55, 255);
+ }
+#endif
}
ISR(TIMER3_COMPA_vect)
diff --git a/keyboards/wilba_tech/zeal60/config.h b/keyboards/wilba_tech/zeal60/config.h
index 12093be63a..b3c0477342 100644
--- a/keyboards/wilba_tech/zeal60/config.h
+++ b/keyboards/wilba_tech/zeal60/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-// USB Device descriptor parameter
-#define VENDOR_ID 0x5A45 // ZealPC ("ZE")
-#define PRODUCT_ID 0x0060 // Zeal60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ZealPC
-#define PRODUCT Zeal60
-
// key matrix size
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -31,7 +24,6 @@
// Zeal60 PCB default pin-out
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6 }
-#define UNUSED_PINS
// IS31FL3731 driver
#define DRIVER_COUNT 2
diff --git a/keyboards/wilba_tech/zeal60/info.json b/keyboards/wilba_tech/zeal60/info.json
index 1ce2a2d9ac..e78c268f48 100644
--- a/keyboards/wilba_tech/zeal60/info.json
+++ b/keyboards/wilba_tech/zeal60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Zeal60",
+ "manufacturer": "ZealPC",
"url": "https://zealpc.net",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x5A45",
+ "pid": "0x0060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_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}, {"x":13, "y":0}, {"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":1.25}, {"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}, {"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":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/wilba_tech/zeal60/keymaps/crd/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/crd/keymap.c
index 971782561c..d612582d84 100644
--- a/keyboards/wilba_tech/zeal60/keymaps/crd/keymap.c
+++ b/keyboards/wilba_tech/zeal60/keymaps/crd/keymap.c
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_CL] = LAYOUT_60_ansi_split_bs_rshift(
_______, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, _______, _______, _______, _______, BR_DEC, BR_INC, _______, _______,
- _______, _______, _______, S1_DEC, S1_INC, S2_DEC, S2_INC, _______, _______, _______, _______, ES_DEC, ES_INC, RESET,
+ _______, _______, _______, S1_DEC, S1_INC, S2_DEC, S2_INC, _______, _______, _______, _______, ES_DEC, ES_INC, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/wilba_tech/zeal60/keymaps/tusing/keymap.c b/keyboards/wilba_tech/zeal60/keymaps/tusing/keymap.c
index 755ace8618..e9f5056343 100644
--- a/keyboards/wilba_tech/zeal60/keymaps/tusing/keymap.c
+++ b/keyboards/wilba_tech/zeal60/keymaps/tusing/keymap.c
@@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Layer 2: Zeal60 and backlight configuration. (Get here quickly by pressing Caps+Enter from Layer 1.)
// This is a persistent layer. Get back to the default layer by pressing enter.
[2] = {
- {RESET, EF_DEC, EF_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, _______, _______, _______, _______, _______, _______, _______},
+ {QK_BOOT, EF_DEC, EF_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, _______, _______, _______, _______, _______, _______, _______},
{_______, H1_DEC, H1_INC, S1_DEC, S1_INC, _______, _______, _______, _______, _______, _______, _______, _______, _______},
{_______, H2_DEC, H2_INC, S2_DEC, S2_INC, _______, _______, _______, _______, _______, _______, _______, TO(0) , _x_ },
{RGB_MOD, _x_ , RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _x_ },
diff --git a/keyboards/wilba_tech/zeal65/config.h b/keyboards/wilba_tech/zeal65/config.h
index eff5502ebc..27f4fd4b44 100644
--- a/keyboards/wilba_tech/zeal65/config.h
+++ b/keyboards/wilba_tech/zeal65/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-// USB Device descriptor parameter
-#define VENDOR_ID 0x5A45 // ZealPC ("ZE")
-#define PRODUCT_ID 0x0065 // Zeal65
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ZealPC
-#define PRODUCT Zeal65
-
// key matrix size
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -31,7 +24,6 @@
// Zeal60 PCB default pin-out
#define MATRIX_ROW_PINS { F0, F1, F4, F6, F7 }
#define MATRIX_COL_PINS { F5, D5, B1, B2, B3, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
// IS31FL3731 driver
#define DRIVER_COUNT 2
diff --git a/keyboards/wilba_tech/zeal65/info.json b/keyboards/wilba_tech/zeal65/info.json
index 3028c6e31b..57f5f6c5eb 100644
--- a/keyboards/wilba_tech/zeal65/info.json
+++ b/keyboards/wilba_tech/zeal65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Zeal65",
+ "manufacturer": "ZealPC",
"url": "https://zealpc.net",
"maintainer": "Wilba",
+ "usb": {
+ "vid": "0x5A45",
+ "pid": "0x0065",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_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":"Del", "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":"PgUp", "x":15, "y":1}, {"label":"Control", "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":"End", "x":15, "y":3}, {"label":"Win", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":1.5, "y":4, "w":1.5}, {"x":3, "y":4, "w":7}, {"label":"Fn2", "x":10, "y":4, "w":1.5}, {"label":"Fn1", "x":11.5, "y":4, "w":1.5}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
diff --git a/keyboards/winkeyless/b87/config.h b/keyboards/winkeyless/b87/config.h
index 0598ee700b..b9d8a3ff90 100644
--- a/keyboards/winkeyless/b87/config.h
+++ b/keyboards/winkeyless/b87/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor paramater */
-#define VENDOR_ID 0x20A0 //
-#define PRODUCT_ID 0x0B87 // B87
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Winkeyless
-#define PRODUCT B87 // QMK PORT
-
/* Define Matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 15
diff --git a/keyboards/winkeyless/b87/info.json b/keyboards/winkeyless/b87/info.json
index 93721d7078..f1379bb612 100644
--- a/keyboards/winkeyless/b87/info.json
+++ b/keyboards/winkeyless/b87/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "B87",
+ "manufacturer": "Winkeyless",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x0B87",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/winkeyless/bface/config.h b/keyboards/winkeyless/bface/config.h
index 83fcfa0276..71c86f0534 100644
--- a/keyboards/winkeyless/bface/config.h
+++ b/keyboards/winkeyless/bface/config.h
@@ -18,12 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x4246 // BF
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Winkeyless
-#define PRODUCT B.face
-
/* matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 15
@@ -31,7 +25,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 0 1 2 3 4 5 6 7 8 9 A B C D E
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7}
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/winkeyless/bface/info.json b/keyboards/winkeyless/bface/info.json
index 3d48c55f6b..b375c5121e 100644
--- a/keyboards/winkeyless/bface/info.json
+++ b/keyboards/winkeyless/bface/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "b.face",
+ "keyboard_name": "B.face",
+ "manufacturer": "Winkeyless",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x4246",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT_60_ansi": {
"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, "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}, {"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":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/winkeyless/bmini/config.h b/keyboards/winkeyless/bmini/config.h
index 1f7759faf9..8c514fb8a2 100644
--- a/keyboards/winkeyless/bmini/config.h
+++ b/keyboards/winkeyless/bmini/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x424D // BM
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Winkeyless
-#define PRODUCT B.mini
-
#define RGBLED_NUM 16
/* matrix size */
diff --git a/keyboards/winkeyless/bmini/info.json b/keyboards/winkeyless/bmini/info.json
index f4ff17f9e1..a4cee455a6 100644
--- a/keyboards/winkeyless/bmini/info.json
+++ b/keyboards/winkeyless/bmini/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "B.mini",
+ "manufacturer": "Winkeyless",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x424D",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"K05", "x":0, "y":0}, {"label":"K25", "x":1, "y":0}, {"label":"K35", "x":2, "y":0}, {"label":"K45", "x":3, "y":0}, {"label":"K55", "x":4, "y":0}, {"label":"K06", "x":5, "y":0}, {"label":"KA6", "x":6, "y":0}, {"label":"KA7", "x":7, "y":0}, {"label":"K07", "x":8, "y":0}, {"label":"KB5", "x":9, "y":0}, {"label":"KC5", "x":10, "y":0}, {"label":"KD5", "x":11, "y":0}, {"label":"KE5", "x":12, "y":0}, {"label":"KD1", "x":13, "y":0}, {"label":"KE1", "x":14, "y":0}, {"label":"KE2", "x":15, "y":0}, {"label":"K04", "x":0, "y":1}, {"label":"K14", "x":1, "y":1}, {"label":"K24", "x":2, "y":1}, {"label":"K34", "x":3, "y":1}, {"label":"K44", "x":4, "y":1}, {"label":"K54", "x":5, "y":1}, {"label":"K16", "x":6, "y":1}, {"label":"KB6", "x":7, "y":1}, {"label":"KB7", "x":8, "y":1}, {"label":"K17", "x":9, "y":1}, {"label":"KA4", "x":10, "y":1}, {"label":"KB4", "x":11, "y":1}, {"label":"KC4", "x":12, "y":1}, {"label":"KE4", "x":13, "y":1, "w":2}, {"label":"KD0", "x":15, "y":1}, {"label":"K03", "x":0, "y":2, "w":1.5}, {"label":"K13", "x":1.5, "y":2}, {"label":"K23", "x":2.5, "y":2}, {"label":"K33", "x":3.5, "y":2}, {"label":"K43", "x":4.5, "y":2}, {"label":"K53", "x":5.5, "y":2}, {"label":"K26", "x":6.5, "y":2}, {"label":"KC6", "x":7.5, "y":2}, {"label":"KC7", "x":8.5, "y":2}, {"label":"K27", "x":9.5, "y":2}, {"label":"KA3", "x":10.5, "y":2}, {"label":"KB3", "x":11.5, "y":2}, {"label":"KC3", "x":12.5, "y":2}, {"label":"KD3", "x":13.5, "y":2, "w":1.5}, {"label":"K67", "x":15, "y":2}, {"label":"K02", "x":0, "y":3, "w":1.75}, {"label":"K12", "x":1.75, "y":3}, {"label":"K22", "x":2.75, "y":3}, {"label":"K32", "x":3.75, "y":3}, {"label":"K42", "x":4.75, "y":3}, {"label":"K52", "x":5.75, "y":3}, {"label":"K36", "x":6.75, "y":3}, {"label":"KD6", "x":7.75, "y":3}, {"label":"KD7", "x":8.75, "y":3}, {"label":"K37", "x":9.75, "y":3}, {"label":"KA2", "x":10.75, "y":3}, {"label":"KB2", "x":11.75, "y":3}, {"label":"KD2", "x":12.75, "y":3, "w":2.25}, {"label":"KE0", "x":15, "y":3}, {"label":"K01", "x":0, "y":4, "w":2.25}, {"label":"K11", "x":2.25, "y":4}, {"label":"K21", "x":3.25, "y":4}, {"label":"K31", "x":4.25, "y":4}, {"label":"K41", "x":5.25, "y":4}, {"label":"K51", "x":6.25, "y":4}, {"label":"K46", "x":7.25, "y":4}, {"label":"KE6", "x":8.25, "y":4}, {"label":"KE7", "x":9.25, "y":4}, {"label":"K47", "x":10.25, "y":4}, {"label":"KA1", "x":11.25, "y":4}, {"label":"KB1", "x":12.25, "y":4, "w":1.75}, {"label":"K86", "x":14, "y":4}, {"label":"K77", "x":15, "y":4}, {"label":"K00", "x":0, "y":5, "w":1.25}, {"label":"K10", "x":1.25, "y":5, "w":1.25}, {"label":"K20", "x":2.5, "y":5, "w":1.25}, {"label":"K56", "x":3.75, "y":5, "w":6.25}, {"label":"K57", "x":10, "y":5}, {"label":"KB0", "x":11, "y":5}, {"label":"KC0", "x":12, "y":5}, {"label":"K66", "x":13, "y":5}, {"label":"K76", "x":14, "y":5}, {"label":"K96", "x":15, "y":5}]
diff --git a/keyboards/winkeyless/bminiex/config.h b/keyboards/winkeyless/bminiex/config.h
index 412d10a2aa..221aaa2bc7 100644
--- a/keyboards/winkeyless/bminiex/config.h
+++ b/keyboards/winkeyless/bminiex/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x4258 // BX
-#define DEVICE_VER 0x0200
-#define MANUFACTURER Winkeyless
-#define PRODUCT B.mini EX
-
#define RGBLED_NUM 20
/* matrix size */
diff --git a/keyboards/winkeyless/bminiex/info.json b/keyboards/winkeyless/bminiex/info.json
index 57f9cce278..f51ac4613a 100644
--- a/keyboards/winkeyless/bminiex/info.json
+++ b/keyboards/winkeyless/bminiex/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "winkeyless.kr B.mini EX",
+ "keyboard_name": "B.mini EX",
+ "manufacturer": "Winkeyless",
"url": "https://winkeyless.kr/product/b-mini-ex-x2-pcb/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x4258",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/winkeys/mini_winni/config.h b/keyboards/winkeys/mini_winni/config.h
index fcf700b0b3..7f8a0d6b4c 100644
--- a/keyboards/winkeys/mini_winni/config.h
+++ b/keyboards/winkeys/mini_winni/config.h
@@ -20,21 +20,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x574B
-#define PRODUCT_ID 0x7770
-#define DEVICE_VER 0x0001
-#define MANUFACTURER WinKeys
-#define PRODUCT Mini Winni
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
/* key matrix pins */
#define DIRECT_PINS { { F4, F5, B4, D7 }, { F6, F7, B6, B5 } }
-#define UNUSED_PINS
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
diff --git a/keyboards/winkeys/mini_winni/info.json b/keyboards/winkeys/mini_winni/info.json
index 2545073551..2f73cbf7f4 100644
--- a/keyboards/winkeys/mini_winni/info.json
+++ b/keyboards/winkeys/mini_winni/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Mini Winni",
+ "manufacturer": "WinKeys",
"maintainer": "Matthew Dias",
+ "usb": {
+ "vid": "0x574B",
+ "pid": "0x7770",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"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/winry/winry25tc/config.h b/keyboards/winry/winry25tc/config.h
index 1e7ff4c63b..4b6364f58b 100644
--- a/keyboards/winry/winry25tc/config.h
+++ b/keyboards/winry/winry25tc/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0000
-#define DEVICE_VER 0x0001
-#define MANUFACTURER SpiderIsland
-#define PRODUCT Winry 25tc
-
#define MATRIX_ROWS 5
#define MATRIX_COLS 5
diff --git a/keyboards/winry/winry25tc/info.json b/keyboards/winry/winry25tc/info.json
index 8e503bc74a..6adc2dbba7 100644
--- a/keyboards/winry/winry25tc/info.json
+++ b/keyboards/winry/winry25tc/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Winry 25tc",
+ "manufacturer": "SpiderIsland",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/winry/winry315/readme.md b/keyboards/winry/winry315/readme.md
index 099e6b42b4..48b311e12a 100644
--- a/keyboards/winry/winry315/readme.md
+++ b/keyboards/winry/winry315/readme.md
@@ -29,7 +29,7 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the top left key (not the encoder) and plug in the keyboard. This apparently also works with the vendor VIA firmware.
* Note that the bootmagic key does not change with the board orientation configured using `WINRY315_DEFAULT_ORIENTATION` — the “top left†key position in the default orientation (encoders on the top side) is always used.
* **Physical reset button**: Briefly press the button on the back of the PCB (the acrylic bottom cover should have a hole to access that button).
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available (the default keymap does not have that keycode assigned to any key, but you can use that keycode in your custom keymap if you want to have easier access to the bootloader).
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available (the default keymap does not have that keycode assigned to any key, but you can use that keycode in your custom keymap if you want to have easier access to the bootloader).
## Orientation
diff --git a/keyboards/wolf/kuku65/config.h b/keyboards/wolf/kuku65/config.h
index c67224a522..3bca2424b9 100644
--- a/keyboards/wolf/kuku65/config.h
+++ b/keyboards/wolf/kuku65/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5453 // TS - ToastyStoemp
-#define PRODUCT_ID 0x0052 // kuku65
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER ToastyStoemp
-#define PRODUCT kuku65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { B3, B2, B1, B0, B7 }
#define MATRIX_COL_PINS { D0, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wolf/kuku65/info.json b/keyboards/wolf/kuku65/info.json
index 1cd162aa32..fb2ca28956 100644
--- a/keyboards/wolf/kuku65/info.json
+++ b/keyboards/wolf/kuku65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "kuku65",
+ "manufacturer": "ToastyStoemp",
"url": "",
"maintainer": "ToastyStoemp",
+ "usb": {
+ "vid": "0x5453",
+ "pid": "0x0052",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/wolf/kuku65/readme.md b/keyboards/wolf/kuku65/readme.md
index 34c4f33422..6cb263a118 100644
--- a/keyboards/wolf/kuku65/readme.md
+++ b/keyboards/wolf/kuku65/readme.md
@@ -19,4 +19,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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`
+* **Keycode in layout**: Press the B key on layer 1 which is mapped to `QK_BOOT`
diff --git a/keyboards/wolf/ryujin/config.h b/keyboards/wolf/ryujin/config.h
new file mode 100644
index 0000000000..40ca7cb746
--- /dev/null
+++ b/keyboards/wolf/ryujin/config.h
@@ -0,0 +1,35 @@
+/*
+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"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+
+// Checked with Eagle Schematic
+#define MATRIX_ROW_PINS { D5, D3, D2, D1, D0 }
+#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4 }
+
+/* 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/wolf/ryujin/info.json b/keyboards/wolf/ryujin/info.json
new file mode 100644
index 0000000000..26a9984205
--- /dev/null
+++ b/keyboards/wolf/ryujin/info.json
@@ -0,0 +1,16 @@
+{
+ "keyboard_name": "Ryujin",
+ "manufacturer": "Miroticaps",
+ "url": "",
+ "maintainer": "ToastyStoemp",
+ "usb": {
+ "vid": "0x5453",
+ "pid": "0x0200",
+ "device_version": "0.0.1"
+ },
+ "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":"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}, {"label":"0,14", "x":14, "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":"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":"2,13", "x":13.75, "y":2, "w":1.25}, {"label":"2,14", "x":15, "y":2}, {"label":"3,0", "x":0, "y":3, "w":1.25}, {"label":"3,1", "x":1.25, "y":3}, {"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,5", "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}]
+ }
+ }
+} \ No newline at end of file
diff --git a/keyboards/wolf/ryujin/keymaps/default/keymap.c b/keyboards/wolf/ryujin/keymaps/default/keymap.c
new file mode 100644
index 0000000000..6e8d4a970c
--- /dev/null
+++ b/keyboards/wolf/ryujin/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/*
+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_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_CLCK, 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_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = 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_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK
+ )
+};
diff --git a/keyboards/wolf/ryujin/keymaps/via/keymap.c b/keyboards/wolf/ryujin/keymaps/via/keymap.c
new file mode 100644
index 0000000000..79b16f8f71
--- /dev/null
+++ b/keyboards/wolf/ryujin/keymaps/via/keymap.c
@@ -0,0 +1,57 @@
+/*
+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_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_CLCK, 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_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = 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_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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_AUDIO_VOL_UP, KC_AUDIO_MUTE,
+ 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
+ ),
+
+ [_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
+ )
+};
diff --git a/keyboards/wolf/ryujin/keymaps/via/rules.mk b/keyboards/wolf/ryujin/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/wolf/ryujin/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/wolf/ryujin/readme.md b/keyboards/wolf/ryujin/readme.md
new file mode 100644
index 0000000000..3f0e0a35e9
--- /dev/null
+++ b/keyboards/wolf/ryujin/readme.md
@@ -0,0 +1,21 @@
+# Ryujin
+
+The following is the QMK Firmware for the Ryujin 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/ryujin: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 `QK_BOOT`
diff --git a/keyboards/wolf/ryujin/rules.mk b/keyboards/wolf/ryujin/rules.mk
new file mode 100644
index 0000000000..f4ad147581
--- /dev/null
+++ b/keyboards/wolf/ryujin/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 = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/wolf/ryujin/ryujin.c b/keyboards/wolf/ryujin/ryujin.c
new file mode 100644
index 0000000000..a2298a546d
--- /dev/null
+++ b/keyboards/wolf/ryujin/ryujin.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 "ryujin.h"
diff --git a/keyboards/wolf/ryujin/ryujin.h b/keyboards/wolf/ryujin/ryujin.h
new file mode 100644
index 0000000000..bd7a3ecddd
--- /dev/null
+++ b/keyboards/wolf/ryujin/ryujin.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"
+
+/* Keymap Definitions */
+#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, \
+ 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, K45, 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, 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, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, KC_NO, K4A, K4B, K4C, K4D, K4E } \
+}
diff --git a/keyboards/wolf/sabre/config.h b/keyboards/wolf/sabre/config.h
index 76ec7d6332..57319a134d 100644
--- a/keyboards/wolf/sabre/config.h
+++ b/keyboards/wolf/sabre/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 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
diff --git a/keyboards/wolf/sabre/info.json b/keyboards/wolf/sabre/info.json
index 2e1197de8c..2b8bce97b4 100644
--- a/keyboards/wolf/sabre/info.json
+++ b/keyboards/wolf/sabre/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Sabre",
+ "manufacturer": "ToastyStoemp",
"url": "",
"maintainer": "ToastyStoemp",
+ "usb": {
+ "vid": "0x5453",
+ "pid": "0x0055",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/wolf/sabre/readme.md b/keyboards/wolf/sabre/readme.md
index b06217d0ee..694b3e584a 100644
--- a/keyboards/wolf/sabre/readme.md
+++ b/keyboards/wolf/sabre/readme.md
@@ -18,4 +18,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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`
+* **Keycode in layout**: Press the B key on layer 1 which is mapped to `QK_BOOT`
diff --git a/keyboards/wolf/ts60/config.h b/keyboards/wolf/ts60/config.h
index 4e15ab4cd5..b4d4459bda 100644
--- a/keyboards/wolf/ts60/config.h
+++ b/keyboards/wolf/ts60/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5453 // TS - ToastyStoemp
-#define PRODUCT_ID 0x0050 // TS60
-#define DEVICE_VER 0x0001 // Version 1
-#define MANUFACTURER ToastyStoemp
-#define PRODUCT TS60
-
/* key matrix size */
#define MATRIX_ROWS 10
#define MATRIX_COLS 8
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// Checked with Eagle Schematic
#define MATRIX_ROW_PINS { D2, D3, D6, D4, F6, F7, F5, F0, F4, F1 }
#define MATRIX_COL_PINS { D1, D5, C7, C6, B6, B5, B4, D7}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wolf/ts60/info.json b/keyboards/wolf/ts60/info.json
index d7d3bfe497..d8de822a71 100644
--- a/keyboards/wolf/ts60/info.json
+++ b/keyboards/wolf/ts60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "TS60",
+ "manufacturer": "ToastyStoemp",
"url": "https://www.vwolf.be/",
"maintainer": "ToastyStoemp",
+ "usb": {
+ "vid": "0x5453",
+ "pid": "0x0050",
+ "device_version": "0.0.1"
+ },
"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":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}, {"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, "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}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}]
diff --git a/keyboards/wolf/ts60/readme.md b/keyboards/wolf/ts60/readme.md
index 6883617cb1..5f1d64937b 100644
--- a/keyboards/wolf/ts60/readme.md
+++ b/keyboards/wolf/ts60/readme.md
@@ -22,4 +22,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## 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 Enter key on layer 1 which is mapped to `RESET` \ No newline at end of file
+* **Keycode in layout**: Press the Enter key on layer 1 which is mapped to `QK_BOOT` \ No newline at end of file
diff --git a/keyboards/wolfmarkclub/wm1/config.h b/keyboards/wolfmarkclub/wm1/config.h
index ecbdc61eb3..fe338a87ca 100644
--- a/keyboards/wolfmarkclub/wm1/config.h
+++ b/keyboards/wolfmarkclub/wm1/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x2B29
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Wolfmark Club
-#define PRODUCT WM1
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/wolfmarkclub/wm1/info.json b/keyboards/wolfmarkclub/wm1/info.json
index 85befd1ec4..3eef787a74 100644
--- a/keyboards/wolfmarkclub/wm1/info.json
+++ b/keyboards/wolfmarkclub/wm1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Wolfmark Club WM1",
+ "keyboard_name": "WM1",
+ "manufacturer": "Wolfmark Club",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x2B29",
+ "device_version": "0.0.1"
+ },
"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":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}, {"x":15.75, "y":0}, {"x":17, "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.25, "y":1}, {"x":9.25, "y":1}, {"x":10.25, "y":1}, {"x":11.25, "y":1}, {"x":12.25, "y":1}, {"x":13.25, "y":1}, {"x":14.25, "y":1}, {"x":15.25, "y":1, "w":1.5}, {"x":17, "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.5, "y":2}, {"x":9.5, "y":2}, {"x":10.5, "y":2}, {"x":11.5, "y":2}, {"x":12.5, "y":2}, {"x":13.5, "y":2}, {"x":14.5, "y":2, "w":2.25}, {"x":17, "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, "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, "w":1.75}, {"x":16.25, "y":3.25}, {"x":0, "y":4, "w":1.5}, {"x":3, "y":4, "w":1.5}, {"x":4.5, "y":4, "w":2}, {"x":6.5, "y":4}, {"x":8, "y":4, "w":2.75}, {"x":10.75, "y":4, "w":1.5}, {"x":13.25, "y":4, "w":1.5}, {"x":15.25, "y":4.25}, {"x":16.25, "y":4.25}, {"x":17.25, "y":4.25}]
diff --git a/keyboards/woodkeys/bigseries/1key/config.h b/keyboards/woodkeys/bigseries/1key/config.h
index f31a7fc057..edb6b318b6 100755
--- a/keyboards/woodkeys/bigseries/1key/config.h
+++ b/keyboards/woodkeys/bigseries/1key/config.h
@@ -19,13 +19,6 @@ 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 0x6071
-#define DEVICE_VER 0x0002
-#define MANUFACTURER WoodKeys.click
-#define PRODUCT BigSeries Single Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 1
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B0 }
#define MATRIX_COL_PINS { B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/woodkeys/bigseries/1key/info.json b/keyboards/woodkeys/bigseries/1key/info.json
index 4355191d2c..ea99bd3919 100644
--- a/keyboards/woodkeys/bigseries/1key/info.json
+++ b/keyboards/woodkeys/bigseries/1key/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Big Series 1-Key",
+ "keyboard_name": "BigSeries 1-Key",
+ "manufacturer": "WoodKeys.click",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6071",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/woodkeys/bigseries/1key/keymaps/dudeofawesome/config.h b/keyboards/woodkeys/bigseries/1key/keymaps/dudeofawesome/config.h
index 30b86224c6..131c755d4a 100644
--- a/keyboards/woodkeys/bigseries/1key/keymaps/dudeofawesome/config.h
+++ b/keyboards/woodkeys/bigseries/1key/keymaps/dudeofawesome/config.h
@@ -19,5 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define CONFIG_USER_H
#define TAPPING_TERM 1000
+#define PERMISSIVE_HOLD
#endif
diff --git a/keyboards/woodkeys/bigseries/2key/config.h b/keyboards/woodkeys/bigseries/2key/config.h
index 53866a15d1..6cbad09abf 100755
--- a/keyboards/woodkeys/bigseries/2key/config.h
+++ b/keyboards/woodkeys/bigseries/2key/config.h
@@ -19,13 +19,6 @@ 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 0x6071
-#define DEVICE_VER 0x0002
-#define MANUFACTURER WoodKeys.click
-#define PRODUCT BigSeries Single Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 2
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B0 }
#define MATRIX_COL_PINS { B4, B3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/woodkeys/bigseries/2key/info.json b/keyboards/woodkeys/bigseries/2key/info.json
index df3237defc..794e955ef0 100644
--- a/keyboards/woodkeys/bigseries/2key/info.json
+++ b/keyboards/woodkeys/bigseries/2key/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Big Series 2-Key",
+ "keyboard_name": "BigSeries 2-Key",
+ "manufacturer": "WoodKeys.click",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6071",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/woodkeys/bigseries/3key/config.h b/keyboards/woodkeys/bigseries/3key/config.h
index 4a474cc3d1..b6d6997a96 100755
--- a/keyboards/woodkeys/bigseries/3key/config.h
+++ b/keyboards/woodkeys/bigseries/3key/config.h
@@ -19,13 +19,6 @@ 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 0x6073
-#define DEVICE_VER 0x0001
-#define MANUFACTURER WoodKeys.click
-#define PRODUCT BigSeries Triple Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 3
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B0 }
#define MATRIX_COL_PINS { B4, B3, B5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/woodkeys/bigseries/3key/info.json b/keyboards/woodkeys/bigseries/3key/info.json
index 17f7621480..539f780105 100644
--- a/keyboards/woodkeys/bigseries/3key/info.json
+++ b/keyboards/woodkeys/bigseries/3key/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Big Series 3-Key",
+ "keyboard_name": "BigSeries 3-Key",
+ "manufacturer": "WoodKeys.click",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6073",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/woodkeys/bigseries/4key/config.h b/keyboards/woodkeys/bigseries/4key/config.h
index c1635022de..fa8ff3ff4a 100755
--- a/keyboards/woodkeys/bigseries/4key/config.h
+++ b/keyboards/woodkeys/bigseries/4key/config.h
@@ -19,13 +19,6 @@ 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 0x6074
-#define DEVICE_VER 0x0002
-#define MANUFACTURER WoodKeys.click
-#define PRODUCT BigSeries Quad Keyboard
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 2
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, B5 }
#define MATRIX_COL_PINS { B4, B3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/woodkeys/bigseries/4key/info.json b/keyboards/woodkeys/bigseries/4key/info.json
index 4429159a6b..62fa027854 100644
--- a/keyboards/woodkeys/bigseries/4key/info.json
+++ b/keyboards/woodkeys/bigseries/4key/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Big Series 4-Key",
+ "keyboard_name": "BigSeries 4-Key",
+ "manufacturer": "WoodKeys.click",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6074",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/woodkeys/meira/config.h b/keyboards/woodkeys/meira/config.h
index 999ab1bf8a..557cf1f3ed 100644
--- a/keyboards/woodkeys/meira/config.h
+++ b/keyboards/woodkeys/meira/config.h
@@ -19,13 +19,6 @@ 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 0x6061
-#define DEVICE_VER 0x0001
-#define MANUFACTURER WoodKeys.click
-#define PRODUCT Meira
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/woodkeys/meira/featherble/config.h b/keyboards/woodkeys/meira/featherble/config.h
index 44f294a06a..fea16a1308 100644
--- a/keyboards/woodkeys/meira/featherble/config.h
+++ b/keyboards/woodkeys/meira/featherble/config.h
@@ -34,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { C7, B7, B6, C6, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
#define MATRIX_COL_PINS_SCANNED { C7, B7, B6, C6 }
#define LED_EN_PIN D2
-#define UNUSED_PINS
#define QMK_SPEAKER B5
#define AUDIO_PIN B5
diff --git a/keyboards/woodkeys/meira/info.json b/keyboards/woodkeys/meira/info.json
index de9ce42f8e..a8da0c1342 100644
--- a/keyboards/woodkeys/meira/info.json
+++ b/keyboards/woodkeys/meira/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Meira",
+ "manufacturer": "WoodKeys.click",
"url": "",
"maintainer": "colemarkham",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6061",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_ortho_4x12"
},
diff --git a/keyboards/woodkeys/meira/keymaps/cole/keymap.c b/keyboards/woodkeys/meira/keymaps/cole/keymap.c
index 94806c5da2..a4c6fbfc10 100644
--- a/keyboards/woodkeys/meira/keymaps/cole/keymap.c
+++ b/keyboards/woodkeys/meira/keymaps/cole/keymap.c
@@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- RESET, _______, _______, KC_MRWD, KC_MPLY, KC_MFFD, KC_PSCR, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, \
+ QK_BOOT, _______, _______, KC_MRWD, KC_MPLY, KC_MFFD, KC_PSCR, _______, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, \
BL_STEP, RGB_MOD, _______, AU_ON, AU_OFF, _______, _______, _______, _______, _______, _______, _______, \
BL_TOGG, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, OUT_AUTO, OUT_USB, OUT_BT \
diff --git a/keyboards/woodkeys/meira/keymaps/grahampheath/keymap.c b/keyboards/woodkeys/meira/keymaps/grahampheath/keymap.c
index 35fa31b8b8..bd6a7d3434 100644
--- a/keyboards/woodkeys/meira/keymaps/grahampheath/keymap.c
+++ b/keyboards/woodkeys/meira/keymaps/grahampheath/keymap.c
@@ -197,7 +197,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT( \
- _______, RESET, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, _______, _______, _______, _______, KC_PSCR, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/woodkeys/meira/keymaps/takmiya/keymap.c b/keyboards/woodkeys/meira/keymaps/takmiya/keymap.c
index 25f50abc49..00ca6a9db9 100644
--- a/keyboards/woodkeys/meira/keymaps/takmiya/keymap.c
+++ b/keyboards/woodkeys/meira/keymaps/takmiya/keymap.c
@@ -105,7 +105,7 @@ 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_TOGG, QK_BOOT, _______, 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, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, KC_PSCR, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/keyboards/woodkeys/meira/meira.c b/keyboards/woodkeys/meira/meira.c
index e900fd0dd6..87a6d11b4e 100644
--- a/keyboards/woodkeys/meira/meira.c
+++ b/keyboards/woodkeys/meira/meira.c
@@ -79,7 +79,7 @@ void matrix_scan_kb(void)
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
// Test code that turns on the switch led for the key that is pressed
// set_backlight_by_keymap(record->event.key.col, record->event.key.row);
- if (keycode == RESET) {
+ if (keycode == QK_BOOT) {
reset_keyboard_kb();
} else {
}
diff --git a/keyboards/woodkeys/meira/promicro/config.h b/keyboards/woodkeys/meira/promicro/config.h
index 1b9b099d1a..c6d79acccc 100644
--- a/keyboards/woodkeys/meira/promicro/config.h
+++ b/keyboards/woodkeys/meira/promicro/config.h
@@ -35,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS_SCANNED { B1, B3, B2, B6 }
#define LED_EN_PIN D2
-#define UNUSED_PINS
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/woodkeys/scarletbandana/config.h b/keyboards/woodkeys/scarletbandana/config.h
index 3afbfeae84..51b096d361 100644
--- a/keyboards/woodkeys/scarletbandana/config.h
+++ b/keyboards/woodkeys/scarletbandana/config.h
@@ -19,13 +19,6 @@ 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 0x6969
-#define DEVICE_VER 0x0001
-#define MANUFACTURER WoodKeys.click
-#define PRODUCT Scarlet Bandana Version IV mark.2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
diff --git a/keyboards/woodkeys/scarletbandana/info.json b/keyboards/woodkeys/scarletbandana/info.json
index c700093194..c13df307dd 100644
--- a/keyboards/woodkeys/scarletbandana/info.json
+++ b/keyboards/woodkeys/scarletbandana/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Scarlet Bandana Version IV Mark 2",
+ "manufacturer": "WoodKeys.click",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6969",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"x":0, "y":0}, {"x":1, "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.5, "y":0}, {"x":12.5, "y":0}, {"x":13.5, "y":0}, {"x":14.5, "y":0}, {"x":15.5, "y":0}, {"x":16.5, "y":0}, {"x":17.5, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2.5, "y":1, "w":1.5}, {"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":16, "y":1, "w":1.5}, {"x":17.5, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2.5, "y":2, "w":1.75}, {"x":4.25, "y":2}, {"x":5.25, "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}, {"x":11.25, "y":2}, {"x":12.25, "y":2}, {"x":13.25, "y":2}, {"x":14.25, "y":2}, {"x":15.25, "y":2, "w":2.25}, {"x":17.5, "y":2}, {"x":0, "y":3}, {"x":1, "y":3}, {"x":2.5, "y":3, "w":2.25}, {"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}, {"x":13.75, "y":3}, {"x":14.75, "y":3, "w":1.75}, {"x":16.5, "y":3}, {"x":17.5, "y":3}, {"x":0, "y":4}, {"x":1, "y":4}, {"x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":1.25}, {"x":5, "y":4, "w":1.25}, {"x":6.25, "y":4, "w":2.25}, {"x":8.5, "y":4, "w":1.75}, {"x":10.25, "y":4, "w":2.25}, {"x":12.5, "y":4}, {"x":13.5, "y":4}, {"x":14.5, "y":4}, {"x":15.5, "y":4}, {"x":16.5, "y":4}, {"x":17.5, "y":4}]
diff --git a/keyboards/woodkeys/scarletbandana/keymaps/default/keymap.c b/keyboards/woodkeys/scarletbandana/keymaps/default/keymap.c
index 707e9fa132..b9cf12cd7e 100644
--- a/keyboards/woodkeys/scarletbandana/keymaps/default/keymap.c
+++ b/keyboards/woodkeys/scarletbandana/keymaps/default/keymap.c
@@ -20,12 +20,14 @@
extern rgblight_config_t rgblight_config;
#endif
-#define _QWERTY 0
-#define _COLEMAK 1
-#define _DVORAK 2
-#define _LOWER 3
-#define _RAISE 4
-#define _ADJUST 16
+enum layer_names {
+ _QWERTY,
+ _COLEMAK,
+ _DVORAK,
+ _LOWER,
+ _RAISE,
+ _ADJUST
+};
enum custom_keycodes {
QWERTY = SAFE_RANGE,
diff --git a/keyboards/work_louder/encoder_actions.c b/keyboards/work_louder/encoder_actions.c
deleted file mode 100644
index b41a248a83..0000000000
--- a/keyboards/work_louder/encoder_actions.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* 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/work_louder/encoder_actions.h b/keyboards/work_louder/encoder_actions.h
deleted file mode 100644
index 2484af52ae..0000000000
--- a/keyboards/work_louder/encoder_actions.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* 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/work_louder/loop/config.h b/keyboards/work_louder/loop/config.h
index b397ec2c1d..32856ecebf 100644
--- a/keyboards/work_louder/loop/config.h
+++ b/keyboards/work_louder/loop/config.h
@@ -19,15 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x574C
-#define PRODUCT_ID 0x1DF8
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Work Louder
-#define PRODUCT Loop Pad
-
/* key matrix size */
-#define MATRIX_ROWS 2
+#define MATRIX_ROWS 1
#define MATRIX_COLS 12
/*
@@ -41,9 +34,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#define MATRIX_ROW_PINS \
- { F5, NO_PIN }
+ { F5 }
#define MATRIX_COL_PINS { B3, B2, B1, D6, D7, B4, B5, B6, C6, C7, F7, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
@@ -60,7 +52,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
//#define BACKLIGHT_BREATHING
#define RGBLIGHT_DI_PIN E6
-# define RGBLED_NUM 24
//# define RGBLIGHT_HUE_STEP 8
//# define RGBLIGHT_SAT_STEP 8
//# define RGBLIGHT_VAL_STEP 8
@@ -202,8 +193,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENCODERS_PAD_A { D0, D2, D5 }
#define ENCODERS_PAD_B { D1, D3, D4 }
-
-#define ENCODERS 3
-
-#define ENCODERS_CW_KEY { { 0, 1 }, { 2, 1 }, { 4, 1 } }
-#define ENCODERS_CCW_KEY { { 1, 1 }, { 3, 1 }, { 5, 1 } }
diff --git a/keyboards/work_louder/loop/info.json b/keyboards/work_louder/loop/info.json
index 2190f53512..67b9d1f06d 100644
--- a/keyboards/work_louder/loop/info.json
+++ b/keyboards/work_louder/loop/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "loop",
- "url": "",
+ "keyboard_name": "Loop Pad",
+ "manufacturer": "Work Louder",
+ "url": "https://worklouder.cc/",
"maintainer": "Work Louder",
+ "usb": {
+ "vid": "0x574C",
+ "pid": "0x1DF9"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/work_louder/loop/keymaps/via/keymap.c b/keyboards/work_louder/loop/keymaps/via/keymap.c
index 286c651361..5b35be9cf3 100644
--- a/keyboards/work_louder/loop/keymaps/via/keymap.c
+++ b/keyboards/work_louder/loop/keymaps/via/keymap.c
@@ -15,30 +15,28 @@
*/
#include QMK_KEYBOARD_H
-#define LAYOUT_via( \
- k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
- k00_a, k00_b, k01_a, k01_b, k02_a, k02_b \
-) { \
- { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
- { k00_a, k00_b, k01_a, k01_b, k02_a, k02_b } \
-}
-
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT_via(
- KC_MUTE, KC_MPLY, R_M_TOG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, MO(1),
- KC_VOLU, KC_VOLD, KC_MNXT, KC_MPRV, R_M_MOD, R_M_RMOD
+ [0] = LAYOUT(
+ KC_MUTE, KC_MPLY, R_M_TOG, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, MO(1)
),
- [1] = LAYOUT_via(
- QK_BOOT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, MO(2), _______,
- _______, _______, _______, _______, RGB_MOD, RGB_RMOD
+ [1] = LAYOUT(
+ QK_BOOT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, MO(2), _______
),
- [2] = LAYOUT_via(
- QK_BOOT, _______, R_M_TOG, R_M_MOD, R_M_HUI, R_M_HUD, R_M_SAI, R_M_SAD, R_M_VAI, R_M_VAD, _______, _______,
- _______, _______, _______, _______, R_M_MOD, R_M_RMOD
+ [2] = LAYOUT(
+ QK_BOOT, _______, R_M_TOG, R_M_MOD, R_M_HUI, R_M_HUD, R_M_SAI, R_M_SAD, R_M_VAI, R_M_VAD, _______, _______
),
- [3] = LAYOUT_via(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______
+ [3] = LAYOUT(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
+// clang-format on
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(R_M_RMOD, R_M_MOD) },
+ [1] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
+ [2] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
+ [3] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
+};
+#endif
diff --git a/keyboards/work_louder/loop/keymaps/via/rules.mk b/keyboards/work_louder/loop/keymaps/via/rules.mk
index 6098ef3ad8..1189f4ad19 100644
--- a/keyboards/work_louder/loop/keymaps/via/rules.mk
+++ b/keyboards/work_louder/loop/keymaps/via/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
-
-SRC += encoder_actions.c
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/work_louder/loop/loop.c b/keyboards/work_louder/loop/loop.c
index 5c0d108d19..6b4af7fcb6 100644
--- a/keyboards/work_louder/loop/loop.c
+++ b/keyboards/work_louder/loop/loop.c
@@ -16,7 +16,7 @@
#include "loop.h"
-#if !defined(VIA_ENABLE) && defined(ENCODER_ENABLE)
+#if defined(ENCODER_ENABLE)
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }
if (index == 0) {
diff --git a/keyboards/work_louder/loop/loop.h b/keyboards/work_louder/loop/loop.h
index cfc58146d1..a7376881b3 100644
--- a/keyboards/work_louder/loop/loop.h
+++ b/keyboards/work_louder/loop/loop.h
@@ -17,7 +17,6 @@
#pragma once
#include "quantum.h"
-#include "encoder_actions.h"
#include "rgb_functions.h"
/* This is a shortcut to help you visually see your layout.
diff --git a/keyboards/work_louder/loop/rev1/config.h b/keyboards/work_louder/loop/rev1/config.h
new file mode 100644
index 0000000000..1bc02d08a6
--- /dev/null
+++ b/keyboards/work_louder/loop/rev1/config.h
@@ -0,0 +1,6 @@
+// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+# define RGBLED_NUM 24
diff --git a/keyboards/work_louder/loop/rev1/info.json b/keyboards/work_louder/loop/rev1/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/work_louder/loop/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/work_louder/loop/rev1/rules.mk b/keyboards/work_louder/loop/rev1/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/work_louder/loop/rev1/rules.mk
diff --git a/keyboards/work_louder/loop/rev3/config.h b/keyboards/work_louder/loop/rev3/config.h
new file mode 100644
index 0000000000..5451d4466e
--- /dev/null
+++ b/keyboards/work_louder/loop/rev3/config.h
@@ -0,0 +1,6 @@
+// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define RGBLED_NUM 11
diff --git a/keyboards/work_louder/loop/rev3/info.json b/keyboards/work_louder/loop/rev3/info.json
new file mode 100644
index 0000000000..b377cdff00
--- /dev/null
+++ b/keyboards/work_louder/loop/rev3/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/work_louder/loop/rev3/rules.mk b/keyboards/work_louder/loop/rev3/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/work_louder/loop/rev3/rules.mk
diff --git a/keyboards/work_louder/loop/rules.mk b/keyboards/work_louder/loop/rules.mk
index 6414533ce0..ac0a513785 100644
--- a/keyboards/work_louder/loop/rules.mk
+++ b/keyboards/work_louder/loop/rules.mk
@@ -24,3 +24,5 @@ RGB_MATRIX_DRIVER = WS2812
LTO_ENABLE = yes
SRC += rgb_functions.c
+
+DEFAULT_FOLDER = work_louder/loop/rev3
diff --git a/keyboards/work_louder/micro/config.h b/keyboards/work_louder/micro/config.h
new file mode 100644
index 0000000000..a4d5ca2c93
--- /dev/null
+++ b/keyboards/work_louder/micro/config.h
@@ -0,0 +1,89 @@
+// Copyright 2022 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+#define RGB_DI_PIN D1
+#define DRIVER_LED_TOTAL 12
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 255
+#define RGB_MATRIX_DISABLE_KEYCODES
+#define RGB_DISABLE_WHEN_USB_SUSPENDED
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+
+#define RGBLIGHT_DI_PIN D2
+#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_GRADIENT + 9
+#define RGBLIGHT_DEFAULT_HUE 213
+
+#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
+
+/* 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 ENCODERS_PAD_A \
+ { D4, B0 }
+#define ENCODERS_PAD_B \
+ { D6, B1 }
+
+#define WORK_LOUDER_LED_PIN_1 B7
+#define WORK_LOUDER_LED_PIN_2 B6
+#define WORK_LOUDER_LED_PIN_3 B5
diff --git a/keyboards/work_louder/micro/info.json b/keyboards/work_louder/micro/info.json
new file mode 100644
index 0000000000..3905f226f8
--- /dev/null
+++ b/keyboards/work_louder/micro/info.json
@@ -0,0 +1,64 @@
+{
+ "keyboard_name": "Micro Pad",
+ "manufacturer": "Work Louder",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": false,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true,
+ "encoder": true,
+ "rgblight": true,
+ "rgb_matrix": true
+ },
+ "matrix_pins": {
+ "custom_lite": true,
+ "cols": ["B4", "C6", "C7", "E6"],
+ "rows": ["F1", "F4", "F5", "F6"]
+ },
+ "processor": "atmega32u4",
+ "rgblight": {
+ "animations": {
+ "all": true
+ },
+ "brightness_steps": 8,
+ "hue_steps": 8,
+ "led_count": 8,
+ "max_brightness": 255,
+ "saturation_steps": 8
+ },
+ "url": "https://worklouder.cc/",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0xE6E3",
+ "vid": "0x574C"
+ },
+ "build": {
+ "lto": true
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "matrix": [0, 0], "x": 0, "y": 0 },
+ { "matrix": [0, 1], "x": 1.25, "y": 0.25 },
+ { "matrix": [0, 2], "x": 2.25, "y": 0.25 },
+ { "matrix": [0, 3], "x": 3.5, "y": 0 },
+ { "matrix": [1, 0], "x": 0.25, "y": 1.25 },
+ { "matrix": [1, 1], "x": 1.25, "y": 1.25 },
+ { "matrix": [1, 2], "x": 2.25, "y": 1.25 },
+ { "matrix": [1, 3], "x": 3.25, "y": 1.25 },
+ { "matrix": [2, 0], "x": 0.25, "y": 2.25 },
+ { "matrix": [2, 1], "x": 1.25, "y": 2.25 },
+ { "matrix": [2, 2], "x": 2.25, "y": 2.25 },
+ { "matrix": [2, 3], "x": 3.25, "y": 2.25 },
+ { "matrix": [3, 0], "x": 0, "y": 3.5 },
+ { "matrix": [3, 1], "x": 1.25, "y": 3.25 },
+ { "matrix": [3, 2], "x": 2.25, "y": 3.25 },
+ { "matrix": [3, 3], "x": 3.5, "y": 3.5 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/work_louder/micro/keymaps/default/keymap.c b/keyboards/work_louder/micro/keymaps/default/keymap.c
new file mode 100644
index 0000000000..6b5541e017
--- /dev/null
+++ b/keyboards/work_louder/micro/keymaps/default/keymap.c
@@ -0,0 +1,91 @@
+// Copyright 2022 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum custom_keycodes {
+ LED_LEVEL = SAFE_RANGE,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ LAYOUT(
+ KC_MPLY, KC_9, KC_0, KC_NO,
+ KC_5, KC_6, KC_7, KC_8,
+ KC_1, KC_2, KC_3, KC_4,
+ TO(1), KC_DOT, KC_COMM, LED_LEVEL
+ ),
+ 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,
+ TO(2), KC_C, KC_D, KC_E
+ ),
+ 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,
+ TO(3), KC_C, KC_D, KC_E
+ ),
+ 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,
+ TO(0), KC_C, LED_LEVEL,KC_E
+ ),
+
+};
+
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t led_level : 3;
+ };
+} work_louder_config_t;
+
+work_louder_config_t work_louder_config;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LED_LEVEL:
+ if (record->event.pressed) {
+ work_louder_config.led_level++;
+ if (work_louder_config.led_level > 4) {
+ work_louder_config.led_level = 0;
+ }
+ work_louder_micro_led_all_set((uint8_t)(work_louder_config.led_level * 255 / 4));
+ eeconfig_update_user(work_louder_config.raw);
+ layer_state_set_kb(layer_state);
+ }
+ break;
+ }
+ return true;
+}
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(C(KC_Z), C(KC_Y)) },
+ { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
+ { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
+ { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
+};
+#endif
+
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ layer_state_cmp(state, 1) ? work_louder_micro_led_1_on(): work_louder_micro_led_1_off();
+ layer_state_cmp(state, 2) ? work_louder_micro_led_2_on(): work_louder_micro_led_2_off();
+ layer_state_cmp(state, 3) ? work_louder_micro_led_3_on(): work_louder_micro_led_3_off();
+
+ return state;
+}
+
+void eeconfig_init_user(void) {
+ work_louder_config.raw = 0;
+ work_louder_config.led_level = 1;
+ eeconfig_update_user(work_louder_config.raw);
+}
+
+void matrix_init_user(void) {
+ work_louder_config.raw = eeconfig_read_user();
+ work_louder_micro_led_all_set((uint8_t)(work_louder_config.led_level * 255 / 4));
+}
diff --git a/keyboards/work_louder/micro/keymaps/default/rules.mk b/keyboards/work_louder/micro/keymaps/default/rules.mk
new file mode 100644
index 0000000000..ee32568148
--- /dev/null
+++ b/keyboards/work_louder/micro/keymaps/default/rules.mk
@@ -0,0 +1 @@
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/work_louder/micro/keymaps/via/keymap.c b/keyboards/work_louder/micro/keymaps/via/keymap.c
new file mode 100644
index 0000000000..da910af6b2
--- /dev/null
+++ b/keyboards/work_louder/micro/keymaps/via/keymap.c
@@ -0,0 +1,92 @@
+// Copyright 2022 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ LAYOUT(
+ KC_MPLY, KC_9, KC_0, KC_NO,
+ KC_5, KC_6, KC_7, KC_8,
+ KC_1, KC_2, KC_3, KC_4,
+ TO(1), KC_DOT, KC_COMM, USER09
+ ),
+ LAYOUT(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ TO(2), _______, _______, _______
+
+ ),
+ LAYOUT(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ TO(3), _______, _______, _______
+ ),
+ LAYOUT(
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ _______, _______, _______, _______,
+ TO(0), _______, _______, _______
+ )
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(C(KC_Z), C(KC_Y)) },
+ { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
+ { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
+ { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) }
+};
+#endif
+
+
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t led_level : 3;
+ };
+} work_louder_config_t;
+
+work_louder_config_t work_louder_config;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+#ifdef CONSOLE_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
+
+ switch (keycode) {
+ case USER09:
+ if (record->event.pressed) {
+ work_louder_config.led_level++;
+ if (work_louder_config.led_level > 4) {
+ work_louder_config.led_level = 0;
+ }
+ work_louder_micro_led_all_set((uint8_t)(work_louder_config.led_level * 255 / 4));
+ eeconfig_update_user(work_louder_config.raw);
+ layer_state_set_kb(layer_state);
+ }
+ break;
+ }
+ return true;
+}
+
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ layer_state_cmp(state, 1) ? work_louder_micro_led_1_on(): work_louder_micro_led_1_off();
+ layer_state_cmp(state, 2) ? work_louder_micro_led_2_on(): work_louder_micro_led_2_off();
+ layer_state_cmp(state, 3) ? work_louder_micro_led_3_on(): work_louder_micro_led_3_off();
+
+ return state;
+}
+
+void eeconfig_init_user(void) {
+ work_louder_config.raw = 0;
+ work_louder_config.led_level = 1;
+ eeconfig_update_user(work_louder_config.raw);
+}
+
+void matrix_init_user(void) {
+ work_louder_config.raw = eeconfig_read_user();
+ work_louder_micro_led_all_set((uint8_t)(work_louder_config.led_level * 255 / 4));
+}
diff --git a/keyboards/work_louder/micro/keymaps/via/rules.mk b/keyboards/work_louder/micro/keymaps/via/rules.mk
new file mode 100644
index 0000000000..70cf4224c0
--- /dev/null
+++ b/keyboards/work_louder/micro/keymaps/via/rules.mk
@@ -0,0 +1,3 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+LTO_ENABLE = yes
diff --git a/keyboards/work_louder/micro/matrix.c b/keyboards/work_louder/micro/matrix.c
new file mode 100644
index 0000000000..d2ae16ad9c
--- /dev/null
+++ b/keyboards/work_louder/micro/matrix.c
@@ -0,0 +1,131 @@
+// Copyright 2022 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+/*
+ * scan matrix
+ */
+#include <stdint.h>
+#include <stdbool.h>
+#include <avr/io.h>
+#include "wait.h"
+#include "print.h"
+#include "debug.h"
+#include "util.h"
+#include "matrix.h"
+#include "debounce.h"
+#include QMK_KEYBOARD_H
+
+/* matrix state(1:on, 0:off) */
+extern matrix_row_t matrix[MATRIX_ROWS]; // debounced values
+extern matrix_row_t raw_matrix[MATRIX_ROWS]; // raw values
+
+static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
+static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
+#define MATRIX_ROW_SHIFTER ((matrix_row_t)1)
+
+static inline void setPinOutput_writeLow(pin_t pin) {
+ ATOMIC_BLOCK_FORCEON {
+ setPinOutput(pin);
+ writePinLow(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);
+ }
+}
+
+static inline uint8_t readMatrixPin(pin_t pin) {
+ if (pin != NO_PIN) {
+ return readPin(pin);
+ } else {
+ return 1;
+ }
+}
+
+static bool select_row(uint8_t row) {
+ pin_t pin = row_pins[row];
+ if (pin != NO_PIN) {
+ setPinOutput_writeLow(pin);
+ return true;
+ }
+ return false;
+}
+
+static void unselect_row(uint8_t row) {
+ pin_t pin = row_pins[row];
+ if (pin != NO_PIN) {
+ setPinInputHigh_atomic(pin);
+ }
+}
+
+static void unselect_rows(void) {
+ for (uint8_t x = 0; x < MATRIX_ROWS; x++) {
+ unselect_row(x);
+ }
+}
+
+__attribute__((weak)) void matrix_init_custom(void) {
+ unselect_rows();
+ for (uint8_t x = 0; x < MATRIX_COLS; x++) {
+ if (col_pins[x] != NO_PIN) {
+ setPinInputHigh_atomic(col_pins[x]);
+ }
+ }
+ setPinInputHigh_atomic(F7);
+ setPinInputHigh_atomic(F0);
+}
+
+void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) {
+ // Start with a clear matrix row
+ matrix_row_t current_row_value = 0;
+
+ if (!select_row(current_row)) { // Select row
+ return; // skip NO_PIN row
+ }
+ matrix_output_select_delay();
+
+ // For each col...
+ matrix_row_t row_shifter = MATRIX_ROW_SHIFTER;
+ for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++, row_shifter <<= 1) {
+ uint8_t pin_state = 0;
+ if (current_row == 3 && col_index == 0) {
+ pin_state = !readMatrixPin(F7);
+ } else if (current_row == 3 && col_index == 3) {
+ pin_state = !readMatrixPin(F0);
+ } else {
+ pin_state = readMatrixPin(col_pins[col_index]);
+ }
+ // Populate the matrix row with the state of the col pin
+ current_row_value |= pin_state ? 0 : row_shifter;
+ }
+
+ // Unselect row
+ unselect_row(current_row);
+ matrix_output_unselect_delay(current_row, current_row_value != 0); // wait for all Col signals to go HIGH
+
+ // Update the matrix
+ current_matrix[current_row] = current_row_value;
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ static matrix_row_t temp_matrix[MATRIX_ROWS] = {0};
+
+ for (uint8_t current_row = 0; current_row < MATRIX_ROWS; current_row++) {
+ matrix_read_cols_on_row(temp_matrix, current_row);
+ }
+
+ bool changed = memcmp(current_matrix, temp_matrix, sizeof(temp_matrix)) != 0;
+ if (changed) {
+ memcpy(current_matrix, temp_matrix, sizeof(temp_matrix));
+ }
+ return changed;
+}
diff --git a/keyboards/work_louder/micro/micro.c b/keyboards/work_louder/micro/micro.c
new file mode 100644
index 0000000000..80d3927417
--- /dev/null
+++ b/keyboards/work_louder/micro/micro.c
@@ -0,0 +1,170 @@
+// Copyright 2022 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+#if defined(RGB_MATRIX_ENABLE)
+// clang-format off
+led_config_t g_led_config = { {
+ { NO_LED, 10, 11, NO_LED },
+ { 9 , 8, 7, 6 },
+ { 2, 3, 4, 5 },
+ { NO_LED, 1, 0, NO_LED }
+ }, {
+ { 122, 64 }, { 103, 64 },
+ { 84, 45 }, { 103, 45 }, { 133, 45 }, { 152, 45 },
+ { 152, 26 }, { 122, 26 }, { 103, 26 }, { 84, 26 },
+ { 103, 7 }, { 122, 7 }
+ },
+ {
+ 4, 4,
+ 4, 4, 4, 4,
+ 4, 4, 4, 4,
+ 4, 4
+ }
+};
+// clang-format on
+#endif
+
+#if defined(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);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code_delay(KC_WH_U, 10);
+ } else {
+ tap_code_delay(KC_WH_D, 10);
+ }
+ }
+ return true;
+}
+#endif
+
+void work_louder_micro_led_1_on(void) {
+ writePin(WORK_LOUDER_LED_PIN_1, true);
+}
+void work_louder_micro_led_2_on(void) {
+ writePin(WORK_LOUDER_LED_PIN_2, true);
+}
+void work_louder_micro_led_3_on(void) {
+ writePin(WORK_LOUDER_LED_PIN_3, true);
+}
+
+void work_louder_micro_led_1_off(void) {
+ writePin(WORK_LOUDER_LED_PIN_1, false);
+}
+void work_louder_micro_led_2_off(void) {
+ writePin(WORK_LOUDER_LED_PIN_2, false);
+}
+void work_louder_micro_led_3_off(void) {
+ writePin(WORK_LOUDER_LED_PIN_3, false);
+}
+
+void work_louder_micro_led_all_on(void) {
+ work_louder_micro_led_1_on();
+ work_louder_micro_led_2_on();
+ work_louder_micro_led_3_on();
+}
+
+void work_louder_micro_led_all_off(void) {
+ work_louder_micro_led_1_off();
+ work_louder_micro_led_2_off();
+ work_louder_micro_led_3_off();
+}
+
+void work_louder_micro_led_1_set(uint8_t n) {
+#if WORK_LOUDER_LED_PIN_1 == B7
+ OCR1C = n;
+#else
+ n ? work_louder_micro_led_1_on() : work_louder_micro_led_1_off();
+#endif
+}
+void work_louder_micro_led_2_set(uint8_t n) {
+#if WORK_LOUDER_LED_PIN_2 == B6
+ OCR1B = n;
+#else
+ n ? work_louder_micro_led_2_on() : work_louder_micro_led_2_off();
+#endif
+}
+void work_louder_micro_led_3_set(uint8_t n) {
+#if WORK_LOUDER_LED_PIN_3 == B5
+ OCR1A = n;
+#else
+ n ? work_louder_micro_led_3_on() : work_louder_micro_led_3_off();
+#endif
+}
+
+void work_louder_micro_led_all_set(uint8_t n) {
+ work_louder_micro_led_1_set(n);
+ work_louder_micro_led_2_set(n);
+ work_louder_micro_led_3_set(n);
+}
+
+#ifdef DEFER_EXEC_ENABLE
+uint32_t startup_animation(uint32_t trigger_time, void *cb_arg) {
+ static uint8_t index = 0;
+
+ switch (index) {
+ case 0:
+ work_louder_micro_led_1_on();
+ break;
+ case 1:
+ work_louder_micro_led_2_on();
+ break;
+ case 2:
+ work_louder_micro_led_3_on();
+ break;
+ case 3:
+ work_louder_micro_led_1_off();
+ break;
+ case 4:
+ work_louder_micro_led_2_off();
+ break;
+ case 5:
+ work_louder_micro_led_3_off();
+ break;
+ default:
+ return 0;
+ }
+ index++;
+ return 100;
+}
+#endif
+
+void matrix_init_kb(void) {
+
+ setPinOutput(WORK_LOUDER_LED_PIN_1); // left led
+ writePin(WORK_LOUDER_LED_PIN_1, false);
+ setPinOutput(WORK_LOUDER_LED_PIN_2); // middle led
+ writePin(WORK_LOUDER_LED_PIN_2, false);
+ setPinOutput(WORK_LOUDER_LED_PIN_3); // right led
+ writePin(WORK_LOUDER_LED_PIN_3, false);
+
+#ifdef DEFER_EXEC_ENABLE
+ defer_exec(500, startup_animation, NULL);
+#else
+ wait_ms(500);
+ work_louder_micro_led_1_on();
+ wait_ms(100);
+ work_louder_micro_led_2_on();
+ wait_ms(100);
+ work_louder_micro_led_3_on();
+ wait_ms(100);
+ work_louder_micro_led_1_off();
+ wait_ms(100);
+ work_louder_micro_led_2_off();
+ wait_ms(100);
+ work_louder_micro_led_3_off();
+ wait_ms(200);
+#endif
+ matrix_init_user();
+
+}
diff --git a/keyboards/work_louder/micro/micro.h b/keyboards/work_louder/micro/micro.h
new file mode 100644
index 0000000000..715b09eb33
--- /dev/null
+++ b/keyboards/work_louder/micro/micro.h
@@ -0,0 +1,22 @@
+// Copyright 2022 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+
+extern void work_louder_micro_led_1_on(void);
+extern void work_louder_micro_led_2_on(void);
+extern void work_louder_micro_led_3_on(void);
+
+extern void work_louder_micro_led_1_off(void);
+extern void work_louder_micro_led_2_off(void);
+extern void work_louder_micro_led_3_off(void);
+
+extern void work_louder_micro_led_all_on(void);
+
+extern void work_louder_micro_led_all_off(void);
+
+extern void work_louder_micro_led_1_set(uint8_t n);
+extern void work_louder_micro_led_2_set(uint8_t n);
+extern void work_louder_micro_led_3_set(uint8_t n);
+
+extern void work_louder_micro_led_all_set(uint8_t n);
diff --git a/keyboards/work_louder/micro/readme.md b/keyboards/work_louder/micro/readme.md
new file mode 100644
index 0000000000..568980e57b
--- /dev/null
+++ b/keyboards/work_louder/micro/readme.md
@@ -0,0 +1,26 @@
+# work_louder/micro
+
+![work_louder/micro](https://i.imgur.com/4Hdt41Gh.jpg)
+
+A 16 "key" macro pad, with dual encoders, per key RGB, RGB underglow and more
+
+* Keyboard Maintainer: [Drashna Jael're](https://github.com/Drashna Jael're)
+* Hardware Supported: atmega32u4 based PCB
+* Hardware Availability: [Work Louder shop](https://worklouder.cc/creator-micro/)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make work_louder/micro:default
+
+Flashing example for this keyboard:
+
+ make work_louder/micro: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:
+
+* **Bootmagic reset**: Hold down the horizontal encoder (top left) 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
diff --git a/keyboards/work_louder/micro/rules.mk b/keyboards/work_louder/micro/rules.mk
new file mode 100644
index 0000000000..757b87cfe4
--- /dev/null
+++ b/keyboards/work_louder/micro/rules.mk
@@ -0,0 +1,6 @@
+RGB_MATRIX_DRIVER = WS2812
+
+SRC += rgb_functions.c \
+ matrix.c
+
+DEFERRED_EXEC_ENABLE = yes
diff --git a/keyboards/work_louder/nano/config.h b/keyboards/work_louder/nano/config.h
index 4e03f0a897..7a7d03b8a3 100644
--- a/keyboards/work_louder/nano/config.h
+++ b/keyboards/work_louder/nano/config.h
@@ -19,16 +19,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x574C
-#define PRODUCT_ID 0xE6EF
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Work Louder
-#define PRODUCT Nano Pad
-
/* key matrix size */
#define MATRIX_ROWS 1
-#define MATRIX_COLS 5
+#define MATRIX_COLS 3
/*
* Keyboard Matrix Assignments
@@ -43,7 +36,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS \
{ F7 }
#define MATRIX_COL_PINS \
- { B5, B6, C6, NO_PIN, NO_PIN }
+ { B5, B6, C6 }
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
@@ -202,14 +195,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ D7 }
#define ENCODERS_PAD_B \
{ B4 }
-
-#define ENCODERS 1
-
-#define ENCODERS_CW_KEY \
- { \
- { 3, 0 } \
- }
-#define ENCODERS_CCW_KEY \
- { \
- { 4, 0 } \
- }
diff --git a/keyboards/work_louder/nano/info.json b/keyboards/work_louder/nano/info.json
index a80ef21d63..46b083d0ef 100644
--- a/keyboards/work_louder/nano/info.json
+++ b/keyboards/work_louder/nano/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "nano",
- "url": "",
+ "keyboard_name": "Nano Pad",
+ "manufacturer": "Work Louder",
+ "url": "https://worklouder.cc/",
"maintainer": "Work Louder",
+ "usb": {
+ "vid": "0x574C",
+ "pid": "0xE6F0",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/work_louder/nano/keymaps/via/keymap.c b/keyboards/work_louder/nano/keymaps/via/keymap.c
index 07451f52b2..84c5895d5e 100644
--- a/keyboards/work_louder/nano/keymaps/via/keymap.c
+++ b/keyboards/work_louder/nano/keymaps/via/keymap.c
@@ -15,31 +15,28 @@
*/
#include QMK_KEYBOARD_H
-
-#define LAYOUT_via( \
- k00, k01, k02, \
- k00_a, k00_b \
-) { \
- { k00, k01, k02, k00_a, k00_b } \
-}
-
-
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
- [0] = LAYOUT_via(
- KC_PSCR, MACRO00, MO(1),
- KC_PGDN, KC_PGUP
+ [0] = LAYOUT(
+ TG(1), C(KC_C), C(KC_V)
),
- [1] = LAYOUT_via(
- QK_BOOT, MACRO01, _______,
- _______, _______
+ [1] = LAYOUT(
+ TG(1) , G(KC_C), G(KC_V)
),
- [2] = LAYOUT_via(
- _______, _______, _______,
- _______, _______
+ [2] = LAYOUT(
+ _______, _______, _______
),
- [3] = LAYOUT_via(
- _______, _______, _______,
- _______, _______
+ [3] = LAYOUT(
+ _______, _______, _______
)
};
+
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [0] = { ENCODER_CCW_CW(C(KC_Z), C(KC_Y)) },
+ [1] = { ENCODER_CCW_CW(G(KC_Z), G(S(KC_Z))) },
+ [2] = { ENCODER_CCW_CW(_______, _______) },
+ [3] = { ENCODER_CCW_CW(_______, _______) }
+};
+#endif
diff --git a/keyboards/work_louder/nano/keymaps/via/rules.mk b/keyboards/work_louder/nano/keymaps/via/rules.mk
index 6098ef3ad8..1189f4ad19 100644
--- a/keyboards/work_louder/nano/keymaps/via/rules.mk
+++ b/keyboards/work_louder/nano/keymaps/via/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
-
-SRC += encoder_actions.c
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/work_louder/nano/nano.c b/keyboards/work_louder/nano/nano.c
index 62d44ef133..96b633aa79 100644
--- a/keyboards/work_louder/nano/nano.c
+++ b/keyboards/work_louder/nano/nano.c
@@ -16,7 +16,7 @@
#include "nano.h"
-#if !defined(VIA_ENABLE) && defined(ENCODER_ENABLE)
+#if defined(ENCODER_ENABLE)
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }
if (clockwise) {
diff --git a/keyboards/work_louder/nano/nano.h b/keyboards/work_louder/nano/nano.h
index 6230d75ab7..cc152b8ccc 100644
--- a/keyboards/work_louder/nano/nano.h
+++ b/keyboards/work_louder/nano/nano.h
@@ -17,7 +17,6 @@
#pragma once
#include "quantum.h"
-#include "encoder_actions.h"
#include "rgb_functions.h"
/* This is a shortcut to help you visually see your layout.
diff --git a/keyboards/work_louder/rgb_functions.c b/keyboards/work_louder/rgb_functions.c
index c9106b3976..d0cb93ccbc 100644
--- a/keyboards/work_louder/rgb_functions.c
+++ b/keyboards/work_louder/rgb_functions.c
@@ -18,159 +18,15 @@
#include "rgb_functions.h"
#ifdef RGBLIGHT_ENABLE
-# include "ws2812.h"
-# include <avr/interrupt.h>
-# include <avr/io.h>
-# include <util/delay.h>
+#undef RGB_DI_PIN
+#define RGB_DI_PIN RGBLIGHT_DI_PIN
-# define pinmask(pin) (_BV((pin)&0xF))
+#define ws2812_setleds ws2812_rgb_setleds
-/*
- * Forward declare internal functions
- *
- * The functions take a byte-array and send to the data output as WS2812 bitstream.
- * The length is the number of bytes to send - three per LED.
- */
-
-static inline void ws2812_sendarray_mask(uint8_t *data, uint16_t datlen, uint8_t masklo, uint8_t maskhi);
-
-/*
- This routine writes an array of bytes with RGB values to the Dataout pin
- using the fast 800kHz clockless WS2811/2812 protocol.
-*/
-
-// Timing in ns
-# define w_zeropulse 350
-# define w_onepulse 900
-# define w_totalperiod 1250
-
-// Fixed cycles used by the inner loop
-# define w_fixedlow 2
-# define w_fixedhigh 4
-# define w_fixedtotal 8
-
-// Insert NOPs to match the timing, if possible
-# define w_zerocycles (((F_CPU / 1000) * w_zeropulse) / 1000000)
-# define w_onecycles (((F_CPU / 1000) * w_onepulse + 500000) / 1000000)
-# define w_totalcycles (((F_CPU / 1000) * w_totalperiod + 500000) / 1000000)
-
-// w1_nops - nops between rising edge and falling edge - low
-# if w_zerocycles >= w_fixedlow
-# define w1_nops (w_zerocycles - w_fixedlow)
-# else
-# define w1_nops 0
-# endif
-
-// w2_nops - nops between fe low and fe high
-# if w_onecycles >= (w_fixedhigh + w1_nops)
-# define w2_nops (w_onecycles - w_fixedhigh - w1_nops)
-# else
-# define w2_nops 0
-# endif
-
-// w3_nops - nops to complete loop
-# if w_totalcycles >= (w_fixedtotal + w1_nops + w2_nops)
-# define w3_nops (w_totalcycles - w_fixedtotal - w1_nops - w2_nops)
-# else
-# define w3_nops 0
-# endif
-
-// The only critical timing parameter is the minimum pulse length of the "0"
-// Warn or throw error if this timing can not be met with current F_CPU settings.
-# define w_lowtime ((w1_nops + w_fixedlow) * 1000000) / (F_CPU / 1000)
-# if w_lowtime > 550
-# error "Light_ws2812: Sorry, the clock speed is too low. Did you set F_CPU correctly?"
-# elif w_lowtime > 450
-# warning "Light_ws2812: The timing is critical and may only work on WS2812B, not on WS2812(S)."
-# warning "Please consider a higher clockspeed, if possible"
-# endif
-
-# define w_nop1 "nop \n\t"
-# define w_nop2 "rjmp .+0 \n\t"
-# define w_nop4 w_nop2 w_nop2
-# define w_nop8 w_nop4 w_nop4
-# define w_nop16 w_nop8 w_nop8
-
-static inline void ws2812_sendarray_mask(uint8_t *data, uint16_t datlen, uint8_t masklo, uint8_t maskhi) {
- uint8_t curbyte, ctr, sreg_prev;
-
- sreg_prev = SREG;
- cli();
-
- while (datlen--) {
- curbyte = (*data++);
-
- asm volatile(" ldi %0,8 \n\t"
- "loop%=: \n\t"
- " out %2,%3 \n\t" // '1' [01] '0' [01] - re
-# if (w1_nops & 1)
- w_nop1
-# endif
-# if (w1_nops & 2)
- w_nop2
-# endif
-# if (w1_nops & 4)
- w_nop4
-# endif
-# if (w1_nops & 8)
- w_nop8
-# endif
-# if (w1_nops & 16)
- w_nop16
-# endif
- " sbrs %1,7 \n\t" // '1' [03] '0' [02]
- " out %2,%4 \n\t" // '1' [--] '0' [03] - fe-low
- " lsl %1 \n\t" // '1' [04] '0' [04]
-# if (w2_nops & 1)
- w_nop1
-# endif
-# if (w2_nops & 2)
- w_nop2
-# endif
-# if (w2_nops & 4)
- w_nop4
-# endif
-# if (w2_nops & 8)
- w_nop8
-# endif
-# if (w2_nops & 16)
- w_nop16
-# endif
- " out %2,%4 \n\t" // '1' [+1] '0' [+1] - fe-high
-# if (w3_nops & 1)
- w_nop1
-# endif
-# if (w3_nops & 2)
- w_nop2
-# endif
-# if (w3_nops & 4)
- w_nop4
-# endif
-# if (w3_nops & 8)
- w_nop8
-# endif
-# if (w3_nops & 16)
- w_nop16
-# endif
-
- " dec %0 \n\t" // '1' [+2] '0' [+2]
- " brne loop%=\n\t" // '1' [+3] '0' [+4]
- : "=&d"(ctr)
- : "r"(curbyte), "I"(_SFR_IO_ADDR(PORTx_ADDRESS(RGBLIGHT_DI_PIN))), "r"(maskhi), "r"(masklo));
- }
-
- SREG = sreg_prev;
-}
+#include "ws2812.c"
void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) {
- DDRx_ADDRESS(RGBLIGHT_DI_PIN) |= pinmask(RGBLIGHT_DI_PIN);
-
- uint8_t masklo = ~(pinmask(RGBLIGHT_DI_PIN)) & PORTx_ADDRESS(RGBLIGHT_DI_PIN);
- uint8_t maskhi = pinmask(RGBLIGHT_DI_PIN) | PORTx_ADDRESS(RGBLIGHT_DI_PIN);
-
- ws2812_sendarray_mask((uint8_t *)start_led, num_leds * sizeof(LED_TYPE), masklo, maskhi);
-
- _delay_us(WS2812_TRST_US);
+ ws2812_setleds(start_led, num_leds);
}
#endif
diff --git a/keyboards/work_louder/work_board/config.h b/keyboards/work_louder/work_board/config.h
index 106184b7de..b22fba4693 100644
--- a/keyboards/work_louder/work_board/config.h
+++ b/keyboards/work_louder/work_board/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x574C
-#define PRODUCT_ID 0xDCD0
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Work Louder
-#define PRODUCT Work Board
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 13
@@ -44,13 +37,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ F0, F1, F4, F5 }
#define MATRIX_COL_PINS \
{ D3, D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, E6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
#define RGBLIGHT_DI_PIN D2
-#define RGBLED_NUM 26
//# define RGBLIGHT_HUE_STEP 8
//# define RGBLIGHT_SAT_STEP 8
//# define RGBLIGHT_VAL_STEP 8
@@ -132,6 +123,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR // Sets the default mode, if none has been set
+#define RGB_MATRIX_STARTUP_HUE 191 // Sets the default hue value, if none has been set
+
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
@@ -190,17 +185,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENCODERS_PAD_B \
{ B1 }
-#define ENCODERS 1
-
-#define ENCODERS_CW_KEY \
- { \
- { 12, 1 } \
- }
-#define ENCODERS_CCW_KEY \
- { \
- { 12, 2 } \
- }
-
/* Bootmagic Lite key configuration */
//#define BOOTMAGIC_LITE_ROW 0
//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/work_louder/work_board/info.json b/keyboards/work_louder/work_board/info.json
index 7ee3f576e7..570e5c21db 100644
--- a/keyboards/work_louder/work_board/info.json
+++ b/keyboards/work_louder/work_board/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "work board",
- "url": "",
+ "keyboard_name": "Work Board",
+ "manufacturer": "Work Louder",
+ "url": "https://worklouder.cc/",
"maintainer": "Work Louder",
+ "usb": {
+ "vid": "0x574C",
+ "pid": "0xDCD1"
+ },
"layouts": {
"LAYOUT_2u_space": {
"layout": [
diff --git a/keyboards/work_louder/work_board/keymaps/default/keymap.c b/keyboards/work_louder/work_board/keymaps/default/keymap.c
index 59bb437d9d..3489274fea 100644
--- a/keyboards/work_louder/work_board/keymaps/default/keymap.c
+++ b/keyboards/work_louder/work_board/keymaps/default/keymap.c
@@ -18,19 +18,11 @@
enum planck_layers {
_QWERTY,
- _COLEMAK,
- _DVORAK,
_LOWER,
_RAISE,
_ADJUST
};
-enum planck_keycodes {
- QWERTY = SAFE_RANGE,
- COLEMAK,
- DVORAK,
-};
-
enum tap_dances {
ENC_TAP,
};
@@ -39,117 +31,33 @@ enum tap_dances {
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-/* Qwerty
- * ,-----------------------------------------------------------------------------------.
- * | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab | A | S | D | F | G | H | J | K | L | ; | " |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Lower | 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, TD(ENC_TAP),
- 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_LSFT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
-),
-
-/* Colemak
- * ,-----------------------------------------------------------------------------------.
- * | Esc | Q | W | F | P | G | J | L | U | Y | ; | Bksp |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab | A | R | S | T | D | H | N | E | I | O | " |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_COLEMAK] = LAYOUT(
- 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_ENT ,
- KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
-),
-
-/* Dvorak
- * ,-----------------------------------------------------------------------------------.
- * | Esc | " | , | . | P | Y | F | G | C | R | L | Bksp |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Tab | A | O | E | U | I | D | H | T | N | S | / |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | Brite| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
- * `-----------------------------------------------------------------------------------'
- */
-[_DVORAK] = LAYOUT(
- KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, _______,
- KC_TAB, 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_LSFT, 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 |
- * `-----------------------------------------------------------------------------------'
- */
-[_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_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(
- 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|Qwerty|Colemk|Dvorak|Plover| |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | |Voice-|Voice+|Mus on|Musoff|MIDIon|MIDIof|TermOn|TermOf| | | |
- * |------+------+------+------+------+------+------+------+------+------+------+------|
- * | | | | | | | | | | | |
- * `-----------------------------------------------------------------------------------'
- */
-[_ADJUST] = LAYOUT(
- _______, QK_BOOT, 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, _______, _______,
- _______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
-)
-
+ [_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, TD(ENC_TAP),
+ 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_UP, KC_ENT,
+ MO(3), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_SLSH, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_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_HOME, KC_END, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, 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_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] = LAYOUT(
+ _______, QK_BOOT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL , R_M_TOG,
+ _______, _______, MU_MOD, R_M_TOG, R_M_MOD, R_M_HUI, R_M_HUD, R_M_SAI, R_M_SAD, R_M_VAI, R_M_VAD, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ )
};
@@ -181,27 +89,3 @@ qk_tap_dance_action_t tap_dance_actions[] = {
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;
- }
- return true;
-}
diff --git a/keyboards/work_louder/work_board/keymaps/via/keymap.c b/keyboards/work_louder/work_board/keymaps/via/keymap.c
index fff7248afa..d39c5f405d 100644
--- a/keyboards/work_louder/work_board/keymaps/via/keymap.c
+++ b/keyboards/work_louder/work_board/keymaps/via/keymap.c
@@ -30,50 +30,34 @@ enum tap_dances {
#define LOWER FN_MO13
#define RAISE FN_MO23
-#define LAYOUT_via( \
- 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, k0c_a, \
- k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k0c_b, \
- k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b \
-) \
-{ \
- { 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, k0c_a }, \
- { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k0c_b }, \
- { k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, ___ } \
-}
-
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_QWERTY] = LAYOUT_via(
+ [_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, USER09,
- 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_VOLU,
- 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_VOLD,
- KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+ 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,
+ MO(3), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
-
- [_LOWER] = LAYOUT_via(
- 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_PGDN,
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______, KC_PGUP,
- _______, _______, _______, _______, _______, _______, _______, _______, 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_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, _______,
+ _______, _______, _______, MACRO_1, _______, MACRO_0, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
-
- [_RAISE] = LAYOUT_via(
+ [_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_DOWN,
- _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______, KC_UP,
+ 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] = LAYOUT_via(
- _______, QK_BOOT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL , R_M_TOG,
- _______, _______, MU_MOD, R_M_TOG, R_M_MOD, R_M_HUI, R_M_HUD, R_M_SAI, R_M_SAD, R_M_VAI, R_M_VAD, _______, R_M_HUI,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, R_M_HUD,
+ [_ADJUST] = LAYOUT(
+ _______, QK_BOOT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL, R_M_TOG,
+ _______, _______, MU_MOD, R_M_TOG, R_M_MOD, _______, _______, _______, _______, R_M_SAI, R_M_HUI, R_M_MOD,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, R_M_SAD, R_M_HUD, R_M_RMOD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
-// clang-format on
+
void dance_enc_finished(qk_tap_dance_state_t *state, void *user_data) {
if (state->count == 1) {
@@ -127,3 +111,12 @@ layer_state_t layer_state_set_user(layer_state_t state) {
return state;
}
+
+#ifdef ENCODER_MAP_ENABLE
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+ [_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+ [_LOWER] = { ENCODER_CCW_CW(KC_PGDN, KC_PGUP) },
+ [_RAISE] = { ENCODER_CCW_CW(R_M_RMOD, R_M_MOD) },
+ [_ADJUST] = { ENCODER_CCW_CW(R_M_HUI, R_M_HUD) },
+};
+#endif
diff --git a/keyboards/work_louder/work_board/keymaps/via/rules.mk b/keyboards/work_louder/work_board/keymaps/via/rules.mk
index 7964f4279c..bdad0201e1 100644
--- a/keyboards/work_louder/work_board/keymaps/via/rules.mk
+++ b/keyboards/work_louder/work_board/keymaps/via/rules.mk
@@ -1,4 +1,3 @@
VIA_ENABLE = yes
TAP_DANCE_ENABLE = yes
-
-SRC += encoder_actions.c
+ENCODER_MAP_ENABLE = yes
diff --git a/keyboards/work_louder/work_board/rev1/config.h b/keyboards/work_louder/work_board/rev1/config.h
new file mode 100644
index 0000000000..b7d85d490d
--- /dev/null
+++ b/keyboards/work_louder/work_board/rev1/config.h
@@ -0,0 +1,6 @@
+// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+# define RGBLED_NUM 26
diff --git a/keyboards/work_louder/work_board/rev1/info.json b/keyboards/work_louder/work_board/rev1/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/work_louder/work_board/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/work_louder/work_board/rev1/rules.mk b/keyboards/work_louder/work_board/rev1/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/work_louder/work_board/rev1/rules.mk
diff --git a/keyboards/work_louder/work_board/rev3/config.h b/keyboards/work_louder/work_board/rev3/config.h
new file mode 100644
index 0000000000..8e3cd8bce8
--- /dev/null
+++ b/keyboards/work_louder/work_board/rev3/config.h
@@ -0,0 +1,6 @@
+// Copyright 2021 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define RGBLED_NUM 19
diff --git a/keyboards/work_louder/work_board/rev3/info.json b/keyboards/work_louder/work_board/rev3/info.json
new file mode 100644
index 0000000000..b377cdff00
--- /dev/null
+++ b/keyboards/work_louder/work_board/rev3/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/work_louder/work_board/rev3/rules.mk b/keyboards/work_louder/work_board/rev3/rules.mk
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/work_louder/work_board/rev3/rules.mk
diff --git a/keyboards/work_louder/work_board/rules.mk b/keyboards/work_louder/work_board/rules.mk
index ddbd9618d0..b89d0adf1e 100644
--- a/keyboards/work_louder/work_board/rules.mk
+++ b/keyboards/work_louder/work_board/rules.mk
@@ -23,3 +23,5 @@ RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
SRC += rgb_functions.c
+
+DEFAULT_FOLDER = work_louder/work_board/rev3
diff --git a/keyboards/work_louder/work_board/work_board.c b/keyboards/work_louder/work_board/work_board.c
index d25ea0cdba..bd969f3009 100644
--- a/keyboards/work_louder/work_board/work_board.c
+++ b/keyboards/work_louder/work_board/work_board.c
@@ -16,7 +16,7 @@
#include "work_board.h"
-#if !defined(VIA_ENABLE) && defined(ENCODER_ENABLE)
+#if defined(ENCODER_ENABLE)
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) {
return false;
diff --git a/keyboards/work_louder/work_board/work_board.h b/keyboards/work_louder/work_board/work_board.h
index f1bc74b704..284eecc430 100644
--- a/keyboards/work_louder/work_board/work_board.h
+++ b/keyboards/work_louder/work_board/work_board.h
@@ -17,7 +17,6 @@
#pragma once
#include "quantum.h"
-#include "encoder_actions.h"
#include "rgb_functions.h"
#define ___ KC_NO
diff --git a/keyboards/wren/config.h b/keyboards/wren/config.h
index 13e69804bc..119233ad9f 100644
--- a/keyboards/wren/config.h
+++ b/keyboards/wren/config.h
@@ -19,13 +19,6 @@ 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 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
@@ -43,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#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 \
diff --git a/keyboards/wren/info.json b/keyboards/wren/info.json
index 8aaddc65b3..c551ce6179 100644
--- a/keyboards/wren/info.json
+++ b/keyboards/wren/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "wren",
+ "manufacturer": "Walter Hanley",
"maintainer": "walterhanley",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/wren/readme.md b/keyboards/wren/readme.md
index 8de95734d6..233a74d489 100644
--- a/keyboards/wren/readme.md
+++ b/keyboards/wren/readme.md
@@ -24,4 +24,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/wsk/alpha9/config.h b/keyboards/wsk/alpha9/config.h
index 0b09ba92a7..8957b1e6b3 100644
--- a/keyboards/wsk/alpha9/config.h
+++ b/keyboards/wsk/alpha9/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5753 // "WS" - Worldspawn00
-#define PRODUCT_ID 0x692A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Worldspawn00
-#define PRODUCT Alpha9
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 13
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D4, B4, B5 }
#define MATRIX_COL_PINS { D7, E6, C6, B6, B2, B3, B1, F7, F6, F5, D1, D0, D2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wsk/alpha9/info.json b/keyboards/wsk/alpha9/info.json
index 7ee04515e1..d335959b32 100644
--- a/keyboards/wsk/alpha9/info.json
+++ b/keyboards/wsk/alpha9/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Alpha9",
+ "manufacturer": "Worldspawn00",
"url": "",
"maintainer": "Worldspawn00",
+ "usb": {
+ "vid": "0x5753",
+ "pid": "0x692A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"7", "x":0, "y":0}, {"label":"8", "x":1, "y":0}, {"label":"9", "x":2, "y":0}, {"label":"Q", "x":3.5, "y":0}, {"label":"W", "x":4.5, "y":0}, {"label":"E", "x":5.5, "y":0}, {"label":"R", "x":6.5, "y":0}, {"label":"T", "x":7.5, "y":0}, {"label":"Y", "x":8.5, "y":0}, {"label":"U", "x":9.5, "y":0}, {"label":"I", "x":10.5, "y":0}, {"label":"O", "x":11.5, "y":0}, {"label":"P", "x":12.5, "y":0}, {"label":"4", "x":0, "y":1}, {"label":"5", "x":1, "y":1}, {"label":"6", "x":2, "y":1}, {"label":"A", "x":3.5, "y":1}, {"label":"S", "x":4.5, "y":1}, {"label":"D", "x":5.5, "y":1}, {"label":"F", "x":6.5, "y":1}, {"label":"G", "x":7.5, "y":1}, {"label":"H", "x":8.5, "y":1}, {"label":"J", "x":9.5, "y":1}, {"label":"K", "x":10.5, "y":1}, {"label":"L", "x":11.5, "y":1}, {"label":"Enter", "x":12.5, "y":1}, {"label":"1", "x":0, "y":2}, {"label":"2", "x":1, "y":2}, {"label":"3", "x":2, "y":2}, {"label":"Z", "x":4, "y":2}, {"label":"X", "x":5, "y":2}, {"label":"C", "x":6, "y":2}, {"label":"V", "x":7, "y":2}, {"x":8, "y":2, "w":2}, {"label":"B", "x":10, "y":2}, {"label":"N", "x":11, "y":2}, {"label":"M", "x":12, "y":2}]
diff --git a/keyboards/wsk/g4m3ralpha/config.h b/keyboards/wsk/g4m3ralpha/config.h
index 071b6ac04f..993ddde53d 100644
--- a/keyboards/wsk/g4m3ralpha/config.h
+++ b/keyboards/wsk/g4m3ralpha/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5753 // "WS" - Worldspawn00
-#define PRODUCT_ID 0x56D9
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Worldspawn00
-#define PRODUCT G4M3Ralpha
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 10
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D4, B4, B5, D1 }
#define MATRIX_COL_PINS { D7, E6, C6, B6, B2, B3, B1, F7, F6, F5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wsk/g4m3ralpha/info.json b/keyboards/wsk/g4m3ralpha/info.json
index 532bbf37b0..109da40b52 100644
--- a/keyboards/wsk/g4m3ralpha/info.json
+++ b/keyboards/wsk/g4m3ralpha/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "G4M3R Alpha",
+ "keyboard_name": "G4M3Ralpha",
+ "manufacturer": "Worldspawn00",
"url": "",
"maintainer": "Worldspawn00",
+ "usb": {
+ "vid": "0x5753",
+ "pid": "0x56D9",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"!", "x":0.5, "y":0}, {"label":"@", "x":1.5, "y":0}, {"label":"#", "x":2.5, "y":0}, {"label":"$", "x":3.5, "y":0}, {"label":"%", "x":4.5, "y":0}, {"label":"Q", "x":0, "y":1}, {"label":"W", "x":1, "y":1}, {"label":"E", "x":2, "y":1}, {"label":"R", "x":3, "y":1}, {"label":"T", "x":4, "y":1}, {"label":"Y", "x":5, "y":1}, {"label":"U", "x":6, "y":1}, {"label":"I", "x":7, "y":1}, {"label":"O", "x":8, "y":1}, {"label":"P", "x":9, "y":1}, {"label":"A", "x":0, "y":2}, {"label":"S", "x":1, "y":2}, {"label":"D", "x":2, "y":2}, {"label":"F", "x":3, "y":2}, {"label":"G", "x":4, "y":2}, {"label":"H", "x":5, "y":2}, {"label":"J", "x":6, "y":2}, {"label":"K", "x":7, "y":2}, {"label":"L", "x":8, "y":2}, {"label":"Enter", "x":9, "y":2}, {"label":"Z", "x":0.5, "y":3}, {"label":"X", "x":1.5, "y":3}, {"label":"C", "x":2.5, "y":3}, {"label":"V", "x":3.5, "y":3}, {"x":4.5, "y":3, "w":2}, {"label":"B", "x":6.5, "y":3}, {"label":"N", "x":7.5, "y":3}, {"label":"M", "x":8.5, "y":3}]
diff --git a/keyboards/wsk/gothic50/config.h b/keyboards/wsk/gothic50/config.h
index 1a40a71dc9..61d2c33f79 100644
--- a/keyboards/wsk/gothic50/config.h
+++ b/keyboards/wsk/gothic50/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x04EF
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Worldspawn00
-#define PRODUCT Gothic50
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
@@ -17,7 +10,6 @@
#define MATRIX_ROW_PINS { B5, B4, D7, D6 }
#define MATRIX_COL_PINS { E6, F0, F1, C7, C6, B6, D4, D5, D3, D2, D1, D0, B7, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wsk/gothic50/info.json b/keyboards/wsk/gothic50/info.json
index f30c860c5c..04e4ac501f 100644
--- a/keyboards/wsk/gothic50/info.json
+++ b/keyboards/wsk/gothic50/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Gothic50",
+ "manufacturer": "Worldspawn00",
"url": "https://qmk.fm/keyboards",
"maintainer": "worldspawn00",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x04EF",
+ "device_version": "0.0.1"
+ },
"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":8.25, "y":0}, {"label":"U", "x":9.25, "y":0}, {"label":"I", "x":10.25, "y":0}, {"label":"O", "x":11.25, "y":0}, {"label":"P", "x":12.25, "y":0}, {"label":"{", "x":13.25, "y":0}, {"label":"}", "x":14.25, "y":0}, {"x":15.5, "y":0}, {"label":"Caps Lock", "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":8.5, "y":1}, {"label":"J", "x":9.5, "y":1}, {"label":"K", "x":10.5, "y":1}, {"label":"L", "x":11.5, "y":1}, {"label":":", "x":12.5, "y":1}, {"label":"Enter", "x":13.5, "y":1, "w":1.75}, {"x":15.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}, {"x":8, "y":2}, {"label":"N", "x":9, "y":2}, {"label":"M", "x":10, "y":2}, {"label":"<", "x":11, "y":2}, {"label":">", "x":12, "y":2}, {"label":"?", "x":13, "y":2}, {"x":15.5, "y":2}, {"x":14.25, "y":2.25}, {"label":"Ctrl", "x":0, "y":3, "w":1.25}, {"label":"Win", "x":1.25, "y":3, "w":1.25}, {"label":"Alt", "x":3.25, "y":3, "w":1.25}, {"x":4.5, "y":3}, {"x":5.5, "y":3, "w":1.25}, {"x":8, "y":3, "w":1.75}, {"label":"Alt", "x":9.75, "y":3}, {"label":"Win", "x":10.75, "y":3, "w":1.25}, {"x":13.25, "y":3.25}, {"x":14.25, "y":3.25}, {"x":15.25, "y":3.25}]
diff --git a/keyboards/wsk/gothic70/config.h b/keyboards/wsk/gothic70/config.h
index d4a8e0374c..fec6e57d03 100644
--- a/keyboards/wsk/gothic70/config.h
+++ b/keyboards/wsk/gothic70/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5753 // "WS"
-#define PRODUCT_ID 0x63CC
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Worldspawn00
-#define PRODUCT Gothic70
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -17,7 +10,6 @@
#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
diff --git a/keyboards/wsk/gothic70/info.json b/keyboards/wsk/gothic70/info.json
index 2a38432225..fd28aba662 100644
--- a/keyboards/wsk/gothic70/info.json
+++ b/keyboards/wsk/gothic70/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Gothic70",
+ "manufacturer": "Worldspawn00",
"url": "https://qmk.fm/keyboards",
"maintainer": "worldspawn00",
+ "usb": {
+ "vid": "0x5753",
+ "pid": "0x63CC",
+ "device_version": "0.0.1"
+ },
"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.75, "y":0}, {"label":"*", "x":9.75, "y":0}, {"label":"(", "x":10.75, "y":0}, {"label":")", "x":11.75, "y":0}, {"label":"_", "x":12.75, "y":0}, {"label":"+", "x":13.75, "y":0}, {"label":"BS", "x":14.75, "y":0}, {"x":15.75, "y":0}, {"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.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":"|", "x":15.25, "y":1, "w":1.5}, {"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.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", "x":14.5, "y":2, "w":2.25}, {"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}, {"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":"Shift", "x":14, "y":3, "w":1.75}, {"x":16, "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":3, "y":4, "w":1.5}, {"x":4.5, "y":4, "w":2.25}, {"x":6.75, "y":4}, {"x":8.5, "y":4, "w":2.75}, {"label":"Alt", "x":11.25, "y":4, "w":1.5}, {"label":"Win", "x":13.5, "y":4, "w":1.25}, {"x":15, "y":4.25}, {"x":16, "y":4.25}, {"x":17, "y":4.25}]
diff --git a/keyboards/wsk/houndstooth/config.h b/keyboards/wsk/houndstooth/config.h
index 10fa3c51ef..5935d38845 100644
--- a/keyboards/wsk/houndstooth/config.h
+++ b/keyboards/wsk/houndstooth/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xFA9C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Worldspawn00
-#define PRODUCT Houndstooth
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { C6, F7, D7, B1, B4, B2, B5, B6 }
#define MATRIX_COL_PINS { D1, F4, D0, F5, D4, F6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wsk/houndstooth/info.json b/keyboards/wsk/houndstooth/info.json
index 7ea46e5f55..43bcc1bf5b 100644
--- a/keyboards/wsk/houndstooth/info.json
+++ b/keyboards/wsk/houndstooth/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Houndstooth",
+ "manufacturer": "Worldspawn00",
"url": "https://qmk.fm/keyboards",
"maintainer": "worldspawn00",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xFA9C",
+ "device_version": "0.0.1"
+ },
"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.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":"Back Space", "x":11.5, "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.5, "y":1}, {"label":"J", "x":7.5, "y":1}, {"label":"K", "x":8.5, "y":1}, {"label":"L", "x":9.5, "y":1}, {"label":";", "x":10.5, "y":1}, {"label":"'", "x":11.5, "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.5, "y":2}, {"label":"M", "x":7.5, "y":2}, {"label":",", "x":8.5, "y":2}, {"label":".", "x":9.5, "y":2}, {"label":"/", "x":10.5, "y":2}, {"label":"Return", "x":11.5, "y":2}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"&dArr;", "x":4, "y":3}, {"x":5, "y":3}, {"x":6.5, "y":3}, {"label":"&uArr;", "x":7.5, "y":3}, {"label":"&larr;", "x":8.5, "y":3}, {"label":"&darr;", "x":9.5, "y":3}, {"label":"&uarr;", "x":10.5, "y":3}, {"label":"&rarr;", "x":11.5, "y":3}]
diff --git a/keyboards/wsk/jerkin/config.h b/keyboards/wsk/jerkin/config.h
index 8a53acedee..52f5f57dd2 100644
--- a/keyboards/wsk/jerkin/config.h
+++ b/keyboards/wsk/jerkin/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x79AE
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Worldspawn00
-#define PRODUCT Jerkin
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 13
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B3, B4, B5 }
#define MATRIX_COL_PINS { D3, D2, D1, D0, D4, C6, B1, F7, F6, F5, F4, E6, D7 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wsk/jerkin/info.json b/keyboards/wsk/jerkin/info.json
index 0e5b433068..96536bc9f8 100644
--- a/keyboards/wsk/jerkin/info.json
+++ b/keyboards/wsk/jerkin/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Jerkin",
+ "manufacturer": "Worldspawn00",
"url": "https://qmk.fm/keyboards",
"maintainer": "worldspawn00",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x79AE",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"Esc", "x":0.5, "y":0}, {"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":7.75, "y":0}, {"label":"U", "x":8.75, "y":0}, {"label":"I", "x":9.75, "y":0}, {"label":"O", "x":10.75, "y":0}, {"label":"P", "x":11.75, "y":0}, {"label":"{", "x":12.75, "y":0}, {"label":"Back<br>Space", "x":13.75, "y":0}, {"label":"Tab", "x":0.25, "y":1, "w":1.25}, {"label":"A", "x":1.5, "y":1}, {"label":"S", "x":2.5, "y":1}, {"label":"D", "x":3.5, "y":1}, {"label":"F", "x":4.5, "y":1}, {"label":"G", "x":5.5, "y":1}, {"label":"H", "x":8.25, "y":1}, {"label":"J", "x":9.25, "y":1}, {"label":"K", "x":10.25, "y":1}, {"label":"L", "x":11.25, "y":1}, {"label":"\"", "x":12.25, "y":1}, {"label":"Enter", "x":13.25, "y":1, "w":1.75}, {"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}, {"x":8, "y":2}, {"label":"N", "x":9, "y":2}, {"label":"M", "x":10, "y":2}, {"label":"<", "x":11, "y":2}, {"label":">", "x":12, "y":2}, {"label":"?", "x":13, "y":2}, {"label":"Shift", "x":14, "y":2, "w":1.25}]
diff --git a/keyboards/wsk/kodachi50/config.h b/keyboards/wsk/kodachi50/config.h
index af548095fb..c67c3424f9 100644
--- a/keyboards/wsk/kodachi50/config.h
+++ b/keyboards/wsk/kodachi50/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x72D4
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Worldspawn00
-#define PRODUCT Kodachi50
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 7
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D2, B5, B6, B2, B3, B1, F7, F6 }
#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wsk/kodachi50/info.json b/keyboards/wsk/kodachi50/info.json
index 423098c5cc..9ed93f9168 100644
--- a/keyboards/wsk/kodachi50/info.json
+++ b/keyboards/wsk/kodachi50/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Kodachi50",
+ "manufacturer": "Worldspawn00",
"url": "https://qmk.fm/keyboards",
"maintainer": "worldspawn00",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x72D4",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"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":"{", "x":6.5, "y":0}, {"label":"}", "x":7.5, "y":0}, {"label":"Y", "x":8.5, "y":0}, {"label":"U", "x":9.5, "y":0}, {"label":"I", "x":10.5, "y":0}, {"label":"O", "x":11.5, "y":0}, {"label":"P", "x":12.5, "y":0}, {"label":"Backspace", "x":13.5, "y":0, "w":1.5}, {"label":"Caps Lock", "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":"|", "x":6.25, "y":1, "w":1.25}, {"label":"Alt", "x":7.5, "y":1, "w":1.25}, {"label":"H", "x":8.75, "y":1}, {"label":"J", "x":9.75, "y":1}, {"label":"K", "x":10.75, "y":1}, {"label":"L", "x":11.75, "y":1}, {"label":"\"", "x":12.75, "y":1}, {"label":"Enter", "x":13.75, "y":1, "w":1.25}, {"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":"~", "x":6, "y":2}, {"label":"_", "x":7, "y":2}, {"label":"+", "x":8, "y":2}, {"label":"N", "x":9, "y":2}, {"label":"M", "x":10, "y":2}, {"label":"<", "x":11, "y":2}, {"label":">", "x":12, "y":2}, {"label":"?", "x":13, "y":2}, {"label":":", "x":14, "y":2}, {"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}, {"x":3.75, "y":3, "w":2.75}, {"x":6.5, "y":3}, {"x":7.5, "y":3, "w":2.25}, {"label":"Win", "x":9.75, "y":3, "w":1.25}, {"label":"Left", "x":11, "y":3}, {"label":"Down", "x":12, "y":3}, {"label":"Up", "x":13, "y":3}, {"label":"Right", "x":14, "y":3}]
diff --git a/keyboards/wsk/pain27/config.h b/keyboards/wsk/pain27/config.h
index b0ddad521a..be0f58a7dc 100644
--- a/keyboards/wsk/pain27/config.h
+++ b/keyboards/wsk/pain27/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x9E8C
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Worldspawn00
-#define PRODUCT PAIN27
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 10
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F4, F5, D0 }
#define MATRIX_COL_PINS { D2, B3, F6, B1, B2, B6, D4, C6, D7, E6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wsk/pain27/info.json b/keyboards/wsk/pain27/info.json
index f8bc4f46f1..5675330098 100644
--- a/keyboards/wsk/pain27/info.json
+++ b/keyboards/wsk/pain27/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Pain27v2",
+ "keyboard_name": "PAIN27",
+ "manufacturer": "Worldspawn00",
"url": "https://qmk.fm/keyboards",
"maintainer": "worldspawn00",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x9E8C",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"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":"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":"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}, {"x":3.25, "y":3, "w":6.25}]
diff --git a/keyboards/wsk/sl40/config.h b/keyboards/wsk/sl40/config.h
index 113a5be3a2..6377ebb3f7 100644
--- a/keyboards/wsk/sl40/config.h
+++ b/keyboards/wsk/sl40/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0xC456
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Worldspawn00
-#define PRODUCT SL40
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 14
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F4, F5, D2, D0 }
#define MATRIX_COL_PINS { D3, D1, F6, F7, B6, B2, B3, B1, D4, C6, D7, E6, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wsk/sl40/info.json b/keyboards/wsk/sl40/info.json
index f70b3f8d51..6333b32cd1 100644
--- a/keyboards/wsk/sl40/info.json
+++ b/keyboards/wsk/sl40/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "SL40",
+ "manufacturer": "Worldspawn00",
"url": "https://qmk.fm/keyboards",
"maintainer": "worldspawn00",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0xC456",
+ "device_version": "0.0.1"
+ },
"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":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}, {"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, "w":1.25}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3, "w":1.25}, {"x":2.5, "y":3, "w":1.25}, {"x":3.75, "y":3, "w":6.25}, {"x":10, "y":3}, {"x":11, "y":3}, {"x":12, "y":3}, {"x":13, "y":3}]
diff --git a/keyboards/wsk/sl40/keymaps/prototype/keymap.c b/keyboards/wsk/sl40/keymaps/prototype/keymap.c
index cc5a2eb8a1..4d03604441 100644
--- a/keyboards/wsk/sl40/keymaps/prototype/keymap.c
+++ b/keyboards/wsk/sl40/keymaps/prototype/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, KC_EQL, KC_DEL,
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, RESET, KC_VOLU, KC_VOLD, KC_MPRV, KC_MNXT, KC_TRNS,
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, QK_BOOT, KC_VOLU, KC_VOLD, KC_MPRV, KC_MNXT, KC_TRNS,
KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, KC_MSTP, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END
)
diff --git a/keyboards/wsk/tkl30/config.h b/keyboards/wsk/tkl30/config.h
index 081a1ee767..e75b49ce4d 100644
--- a/keyboards/wsk/tkl30/config.h
+++ b/keyboards/wsk/tkl30/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0B7F
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Worldspawn00
-#define PRODUCT TKL30
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 15
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D2, B5, F4 }
#define MATRIX_COL_PINS { D3, D1, D0, D4, F7, C6, B1, D7, B3, E6, B2, B4, B6, F6, E5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/wsk/tkl30/info.json b/keyboards/wsk/tkl30/info.json
index 7d68783514..1e8eba68e7 100644
--- a/keyboards/wsk/tkl30/info.json
+++ b/keyboards/wsk/tkl30/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "TKL30",
+ "manufacturer": "Worldspawn00",
"url": "https://qmk.fm/keyboards",
"maintainer": "worldspawn00",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0B7F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"Tab", "x":0, "y":0.25, "w":1.5}, {"label":"Q", "x":1.5, "y":0.25}, {"label":"W", "x":2.5, "y":0.25}, {"label":"E", "x":3.5, "y":0.25}, {"label":"R", "x":4.5, "y":0.25}, {"label":"T", "x":5.5, "y":0.25}, {"label":"Y", "x":6.5, "y":0.25}, {"label":"U", "x":7.5, "y":0.25}, {"label":"I", "x":8.5, "y":0.25}, {"label":"O", "x":9.5, "y":0.25}, {"label":"P", "x":10.5, "y":0.25}, {"label":"{", "x":11.5, "y":0.25}, {"label":"}", "x":12.5, "y":0.25}, {"label":"|", "x":13.5, "y":0.25, "w":1.5}, {"label":"Ctrl", "x":0, "y":1.25, "w":1.75}, {"label":"A", "x":1.75, "y":1.25}, {"label":"S", "x":2.75, "y":1.25}, {"label":"D", "x":3.75, "y":1.25}, {"label":"F", "x":4.75, "y":1.25}, {"label":"G", "x":5.75, "y":1.25}, {"label":"H", "x":6.75, "y":1.25}, {"label":"J", "x":7.75, "y":1.25}, {"label":"K", "x":8.75, "y":1.25}, {"label":"L", "x":9.75, "y":1.25}, {"label":":", "x":10.75, "y":1.25}, {"label":"\"", "x":11.75, "y":1.25}, {"label":"Enter", "x":12.75, "y":1.25, "w":2.25}, {"label":"\u2191", "x":16.25, "y":1.25}, {"label":"Shift", "x":0, "y":2.25, "w":1.25}, {"label":"Alt", "x":1.25, "y":2.25}, {"label":"Z", "x":2.25, "y":2.25}, {"label":"X", "x":3.25, "y":2.25}, {"label":"C", "x":4.25, "y":2.25}, {"label":"V", "x":5.25, "y":2.25}, {"x":6.25, "y":2.25, "w":2}, {"label":"B", "x":8.25, "y":2.25}, {"label":"N", "x":9.25, "y":2.25}, {"label":"M", "x":10.25, "y":2.25}, {"label":"<", "x":11.25, "y":2.25}, {"label":">", "x":12.25, "y":2.25}, {"label":"Fn", "x":13.25, "y":2.25, "w":1.75}, {"label":"\u2190", "x":15.25, "y":2.25}, {"label":"\u2193", "x":16.25, "y":2.25}, {"label":"\u2192", "x":17.25, "y":2.25}]
diff --git a/keyboards/wuque/ikki68/config.h b/keyboards/wuque/ikki68/config.h
index af66b21c7f..13ce461b04 100644
--- a/keyboards/wuque/ikki68/config.h
+++ b/keyboards/wuque/ikki68/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x696B
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wuque studio
-#define PRODUCT ikki68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 17
diff --git a/keyboards/wuque/ikki68/info.json b/keyboards/wuque/ikki68/info.json
index 05507cd454..d4e54b6f24 100644
--- a/keyboards/wuque/ikki68/info.json
+++ b/keyboards/wuque/ikki68/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "ikki68",
+ "manufacturer": "wuque studio",
"url": "https://ikki68.com/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x696B",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_68_ansi": {
"layout": [
diff --git a/keyboards/wuque/ikki68_aurora/config.h b/keyboards/wuque/ikki68_aurora/config.h
index 1981ac22e7..fccd5bd8ef 100644
--- a/keyboards/wuque/ikki68_aurora/config.h
+++ b/keyboards/wuque/ikki68_aurora/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x706B
-#define PRODUCT_ID 0x0011
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wuque studio
-#define PRODUCT ikki68 Aurora
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
diff --git a/keyboards/wuque/ikki68_aurora/info.json b/keyboards/wuque/ikki68_aurora/info.json
index d29ab48433..92c7da0eeb 100644
--- a/keyboards/wuque/ikki68_aurora/info.json
+++ b/keyboards/wuque/ikki68_aurora/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ikki68_aurora",
+ "keyboard_name": "ikki68 Aurora",
+ "manufacturer": "wuque studio",
"url": "https://ikki68.com/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x706B",
+ "pid": "0x0011",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_68_ansi": {
"layout": [
diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_ansi/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/68_ansi/keymap.c
index cf20b434f0..c99c316f6e 100644
--- a/keyboards/wuque/ikki68_aurora/keymaps/68_ansi/keymap.c
+++ b/keyboards/wuque/ikki68_aurora/keymaps/68_ansi/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[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, _______, _______, 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, _______, _______, QK_BOOT,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_iso/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/68_iso/keymap.c
index 46e0caff96..50bb044490 100644
--- a/keyboards/wuque/ikki68_aurora/keymaps/68_iso/keymap.c
+++ b/keyboards/wuque/ikki68_aurora/keymaps/68_iso/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_68_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, _______, _______, 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, _______, _______, QK_BOOT,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/keymap.c
index d32851fc82..54b85d5d80 100644
--- a/keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/keymap.c
+++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_bs/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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(
- 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, _______, _______, _______, 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, _______, _______, _______, QK_BOOT,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/keymap.c
index 671f262c2e..9d55d76c35 100644
--- a/keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/keymap.c
+++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_lshift/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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, _______, _______, 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, _______, _______, QK_BOOT,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/keymap.c
index ae575674b7..f616956bb1 100644
--- a/keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/keymap.c
+++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_rshift/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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, _______, _______, 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, _______, _______, QK_BOOT,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/wuque/ikki68_aurora/keymaps/68_split_space/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/68_split_space/keymap.c
index cafcfde315..33a6c83272 100644
--- a/keyboards/wuque/ikki68_aurora/keymaps/68_split_space/keymap.c
+++ b/keyboards/wuque/ikki68_aurora/keymaps/68_split_space/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_68_ansi_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, _______, _______, 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, _______, _______, QK_BOOT,
_______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/wuque/ikki68_aurora/keymaps/ewersp/keymap.c b/keyboards/wuque/ikki68_aurora/keymaps/ewersp/keymap.c
index 5983625adc..5d8fd4a0a9 100644
--- a/keyboards/wuque/ikki68_aurora/keymaps/ewersp/keymap.c
+++ b/keyboards/wuque/ikki68_aurora/keymaps/ewersp/keymap.c
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, RGB_TOG, LED_TOG, _______, EEP_RST, QK_BOOT, _______, _______, TG(MAC), TG(ALT), _______, _______, _______, KC_PGUP,
_______, _______, KC_LALT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END
),
[SUPR] = LAYOUT_all(
@@ -191,7 +191,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
eeconfig_update_user(user_config.raw);
}
return false;
- case RESET:
+ case QK_BOOT:
if (record->event.pressed) {
key_timer = timer_read32();
} else {
diff --git a/keyboards/wuque/mammoth20x/config.h b/keyboards/wuque/mammoth20x/config.h
index 8fcfc03195..edd471296d 100644
--- a/keyboards/wuque/mammoth20x/config.h
+++ b/keyboards/wuque/mammoth20x/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xB06B
-#define PRODUCT_ID 0x0005
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wuque studio
-#define PRODUCT mammoth20x
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
diff --git a/keyboards/wuque/mammoth20x/info.json b/keyboards/wuque/mammoth20x/info.json
index 4b53405c19..003bf12c6e 100644
--- a/keyboards/wuque/mammoth20x/info.json
+++ b/keyboards/wuque/mammoth20x/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "mammoth20x",
+ "manufacturer": "wuque studio",
"url": "https://shop.wuquestudio.com/",
"maintainer": "spbgzh",
+ "usb": {
+ "vid": "0xB06B",
+ "pid": "0x0005",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_default": "LAYOUT"
},
diff --git a/keyboards/wuque/mammoth75x/config.h b/keyboards/wuque/mammoth75x/config.h
index 88ef0e5477..0cf52f07aa 100644
--- a/keyboards/wuque/mammoth75x/config.h
+++ b/keyboards/wuque/mammoth75x/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xA06B
-#define PRODUCT_ID 0x0004
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wuque studio
-#define PRODUCT mammoth75x
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
diff --git a/keyboards/wuque/mammoth75x/info.json b/keyboards/wuque/mammoth75x/info.json
index 877d03dec9..6e3bd8a46b 100644
--- a/keyboards/wuque/mammoth75x/info.json
+++ b/keyboards/wuque/mammoth75x/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "mammoth75x",
+ "manufacturer": "wuque studio",
"url": "https://shop.wuquestudio.com/",
"maintainer": "spbgzh",
+ "usb": {
+ "vid": "0xA06B",
+ "pid": "0x0004",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_ansi/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_ansi/keymap.c
index a35038348e..c4003245a6 100644
--- a/keyboards/wuque/mammoth75x/keymaps/75_ansi/keymap.c
+++ b/keyboards/wuque/mammoth75x/keymaps/75_ansi/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_75_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_bs/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_split_bs/keymap.c
index c1717e6d22..4d0677fcc5 100644
--- a/keyboards/wuque/mammoth75x/keymaps/75_split_bs/keymap.c
+++ b/keyboards/wuque/mammoth75x/keymaps/75_split_bs/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_75_ansi_split_bs(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/keymap.c
index 611e1a2642..0fed0c86c1 100644
--- a/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/keymap.c
+++ b/keyboards/wuque/mammoth75x/keymaps/75_split_lshift/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_75_ansi_split_lshift(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/keymap.c
index 1debfe81b7..a25b86c5a8 100644
--- a/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/keymap.c
+++ b/keyboards/wuque/mammoth75x/keymaps/75_split_rshift/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_75_ansi_split_rshift(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/wuque/mammoth75x/keymaps/75_split_space/keymap.c b/keyboards/wuque/mammoth75x/keymaps/75_split_space/keymap.c
index 2182216060..2ff5bb2ccb 100644
--- a/keyboards/wuque/mammoth75x/keymaps/75_split_space/keymap.c
+++ b/keyboards/wuque/mammoth75x/keymaps/75_split_space/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_75_ansi_split_space(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/wuque/promise87/ansi/ansi.c b/keyboards/wuque/promise87/ansi/ansi.c
new file mode 100644
index 0000000000..8e20dfb751
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/ansi.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ansi.h"
diff --git a/keyboards/wuque/promise87/ansi/ansi.h b/keyboards/wuque/promise87/ansi/ansi.h
new file mode 100644
index 0000000000..513c3a8d2a
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/ansi.h
@@ -0,0 +1,218 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 ││0e │0f │0g │
+ * └───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┘└───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”┌───┬───┬───â”
+ * │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │1d │3d ││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 │3c │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │4d │ │4f │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤┌───┼───┼───â”
+ * │50 │51 │52 │56 │5a │5b │5c │5d ││5e │5f │5g │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+ */
+
+#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, 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, 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, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13_ansi
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 ││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 │3c │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ │4f │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───â”
+ * │50 │51 │52 │56 │5a │5b │5c │5d ││5e │5f │5g │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+ */
+#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, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, \
+ 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, 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, KC_NO, 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, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13_ansi_split_bs
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤
+ * │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 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ │4f │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴───┴───┼───┴┬────┬────┤┌───┼───┼───â”
+ * │50 │51 │52 │56 │5a │5b │5c │5d ││5e │5f │5g │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+ */
+#define LAYOUT_tkl_f13_ansi_split_bs( \
+ 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, 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, 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, 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, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13_ansi_split_lshift
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 ││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 │3c │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ │4f │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤┌───┼───┼───â”
+ * │50 │51 │52 │56 │5a │5b │5c │5d ││5e │5f │5g │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+ */
+#define LAYOUT_tkl_f13_ansi_split_lshift( \
+ 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, 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, 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, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, KC_NO, K4F, KC_NO }, \
+ { K50, K51, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13_ansi_split_rshift
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 ││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 │3c │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │4d │ │4f │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤┌───┼───┼───â”
+ * │50 │51 │52 │56 │5a │5b │5c │5d ││5e │5f │5g │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+ */
+#define LAYOUT_tkl_f13_ansi_split_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, 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, 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, KC_NO, 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, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13_ansi_split_bs_rshift
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤
+ * │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 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │4d │ │4f │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤┌───┼───┼───â”
+ * │50 │51 │52 │56 │5a │5b │5c │5d ││5e │5f │5g │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘└───┴───┴───┘
+ */
+#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, 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, 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, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, K5A, K5B, K5C, K5D, K5E, K5F, K5G }, \
+}
diff --git a/keyboards/wuque/promise87/ansi/config.h b/keyboards/wuque/promise87/ansi/config.h
new file mode 100644
index 0000000000..c7a9eda1ef
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/config.h
@@ -0,0 +1,48 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 6
+#define MATRIX_COLS 17
+
+#define MATRIX_ROW_PINS { B3, B7, B2, F0, D3, D0 }
+#define MATRIX_COL_PINS { D6, D7, D1, D5, F7, D4, F5, F4, F1, C7, C6, B6, B5, B4, E6, B1, B0 }
+
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#define LED_CAPS_LOCK_PIN F6
+#define LED_PIN_ON_STATE 0
+
+#define RGB_DI_PIN D2
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 1
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*======= RGB function=======*/
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#endif
diff --git a/keyboards/wuque/promise87/ansi/info.json b/keyboards/wuque/promise87/ansi/info.json
new file mode 100644
index 0000000000..acd4d7d6d9
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/info.json
@@ -0,0 +1,609 @@
+{
+ "keyboard_name": "promise87",
+ "manufacturer": "wuque",
+ "url": "https://shop.wuquestudio.com/",
+ "maintainer": "spbgzh",
+ "usb": {
+ "vid": "0x906D",
+ "pid": "0x0005",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT_87_ansi": "LAYOUT_tkl_f13_ansi",
+ "LAYOUT_87_ansi_split_bs": "LAYOUT_tkl_f13_ansi_split_bs",
+ "LAYOUT_87_ansi_split_lshift": "LAYOUT_tkl_f13_ansi_split_lshift",
+ "LAYOUT_87_ansi_split_rshift": "LAYOUT_tkl_f13_ansi_split_rshift"
+ },
+ "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": "F13", "x": 14, "y": 0 },
+ { "label": "Print", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "Backspace1", "x": 14, "y": 1.25 },
+ { "label": "Insert", "x": 15.25, "y": 1.25 },
+ { "label": "Home", "x": 16.25, "y": 1.25 },
+ { "label": "PageUp", "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": "PageDown", "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": "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": 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": "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 }
+ ]
+ },
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "PageUp", "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": "PageDown", "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": "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 }
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_split_bs": {
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "Backspace1", "x": 14, "y": 1.25 },
+ { "label": "Insert", "x": 15.25, "y": 1.25 },
+ { "label": "Home", "x": 16.25, "y": 1.25 },
+ { "label": "PageUp", "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": "PageDown", "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": "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 }
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_split_lshift": {
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "PageUp", "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": "PageDown", "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": "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": 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": "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 }
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_split_rshift": {
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "PageUp", "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": "PageDown", "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": "Shift1", "x": 12.25, "y": 4.25, "w": 1.75 },
+ { "label": "Shift2", "x": 14, "y": 4.25 },
+ { "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": "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 }
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_split_bs_rshift": {
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "Backspace1", "x": 14, "y": 1.25 },
+ { "label": "Insert", "x": 15.25, "y": 1.25 },
+ { "label": "Home", "x": 16.25, "y": 1.25 },
+ { "label": "PageUp", "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": "PageDown", "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": "Shift1", "x": 12.25, "y": 4.25, "w": 1.75 },
+ { "label": "Shift2", "x": 14, "y": 4.25 },
+ { "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": "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/wuque/promise87/ansi/keymaps/default/keymap.c b/keyboards/wuque/promise87/ansi/keymaps/default/keymap.c
new file mode 100644
index 0000000000..1ba2583670
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/promise87/ansi/keymaps/default/readme.md b/keyboards/wuque/promise87/ansi/keymaps/default/readme.md
new file mode 100644
index 0000000000..f3a77c93fd
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for promise87
diff --git a/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi/keymap.c b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi/keymap.c
new file mode 100644
index 0000000000..a27c3c5969
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_tkl_f13_ansi(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi/readme.md b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi/readme.md
new file mode 100644
index 0000000000..63cbbfc568
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi/readme.md
@@ -0,0 +1 @@
+# The tkl_f13_ansi keymap for promise87
diff --git a/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs/keymap.c b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs/keymap.c
new file mode 100644
index 0000000000..31055a6a0a
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_f13_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_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_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_tkl_f13_ansi_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs/readme.md b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs/readme.md
new file mode 100644
index 0000000000..e61fd5af62
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs/readme.md
@@ -0,0 +1 @@
+# The default_tkl_f13_ansi_split_bs keymap for promise87
diff --git a/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs_rshift/keymap.c b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs_rshift/keymap.c
new file mode 100644
index 0000000000..36b48cebb8
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs_rshift/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_tkl_f13_ansi_split_bs_rshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs_rshift/readme.md b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs_rshift/readme.md
new file mode 100644
index 0000000000..f7f7ee4eed
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_bs_rshift/readme.md
@@ -0,0 +1 @@
+# The default_tkl_f13_ansi_split_bs_rshift keymap for promise87
diff --git a/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_lshift/keymap.c b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_lshift/keymap.c
new file mode 100644
index 0000000000..181ee17c64
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_lshift/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_f13_ansi_split_lshift(
+ KC_ESC, KC_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_LSFT, KC_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_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_tkl_f13_ansi_split_lshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_lshift/readme.md b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_lshift/readme.md
new file mode 100644
index 0000000000..17ed054145
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_lshift/readme.md
@@ -0,0 +1 @@
+# The default_tkl_f13_ansi_split_lshift keymap for promise87
diff --git a/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_rshift/keymap.c b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_rshift/keymap.c
new file mode 100644
index 0000000000..91ddaa8d0e
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_rshift/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_f13_ansi_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_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_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_tkl_f13_ansi_split_rshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_rshift/readme.md b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_rshift/readme.md
new file mode 100644
index 0000000000..d0f6cbe57a
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/default_tkl_f13_ansi_split_rshift/readme.md
@@ -0,0 +1 @@
+# The tkl_f13_ansi_split_rshift keymap for promise87
diff --git a/keyboards/wuque/promise87/ansi/keymaps/via/keymap.c b/keyboards/wuque/promise87/ansi/keymaps/via/keymap.c
new file mode 100644
index 0000000000..110e3f4639
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_LGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/promise87/ansi/keymaps/via/readme.md b/keyboards/wuque/promise87/ansi/keymaps/via/readme.md
new file mode 100644
index 0000000000..a500dfdb15
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The via keymap for promise87
diff --git a/keyboards/wuque/promise87/ansi/keymaps/via/rules.mk b/keyboards/wuque/promise87/ansi/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/wuque/promise87/ansi/readme.md b/keyboards/wuque/promise87/ansi/readme.md
new file mode 100644
index 0000000000..a5c5591de9
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/readme.md
@@ -0,0 +1,27 @@
+# promise87
+
+More Info at [promise87](https://shop.wuquestudio.com/)
+​
+
+* Keyboard Maintainer: [spbgzh](https://github.com/spbgzh)
+* Hardware Supported: promise 87
+* Hardware Availability: [promise87](https://shop.wuquestudio.com/)
+​
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wuque/promise87/ansi:default
+
+Flashing example for this keyboard:
+
+ make wuque/promise87/ansi:default:flash
+
+## Bootloader
+
+Enter the bootloader using one of the following methods:
+
+* Tap the Reset switch mounted on the PCB
+* In the case of the default keymap, use the key combination Fn + PageUp
+* 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/wuque/promise87/ansi/rules.mk b/keyboards/wuque/promise87/ansi/rules.mk
new file mode 100644
index 0000000000..ffe655b21f
--- /dev/null
+++ b/keyboards/wuque/promise87/ansi/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 = 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
+
+LAYOUTS = tkl_f13_ansi tkl_f13_ansi_split_bs_rshift
diff --git a/keyboards/wuque/promise87/wkl/config.h b/keyboards/wuque/promise87/wkl/config.h
new file mode 100644
index 0000000000..c7a9eda1ef
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/config.h
@@ -0,0 +1,48 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 6
+#define MATRIX_COLS 17
+
+#define MATRIX_ROW_PINS { B3, B7, B2, F0, D3, D0 }
+#define MATRIX_COL_PINS { D6, D7, D1, D5, F7, D4, F5, F4, F1, C7, C6, B6, B5, B4, E6, B1, B0 }
+
+#define DIODE_DIRECTION COL2ROW
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#define LED_CAPS_LOCK_PIN F6
+#define LED_PIN_ON_STATE 0
+
+#define RGB_DI_PIN D2
+#ifdef RGB_DI_PIN
+ #define RGBLED_NUM 1
+ #define RGBLIGHT_HUE_STEP 8
+ #define RGBLIGHT_SAT_STEP 8
+ #define RGBLIGHT_VAL_STEP 8
+ #define RGBLIGHT_LIMIT_VAL 200 /* The maximum brightness level */
+ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+/*======= RGB function=======*/
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#endif
diff --git a/keyboards/wuque/promise87/wkl/info.json b/keyboards/wuque/promise87/wkl/info.json
new file mode 100644
index 0000000000..5445f2eb36
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/info.json
@@ -0,0 +1,592 @@
+{
+ "keyboard_name": "promise87",
+ "manufacturer": "wuque",
+ "url": "https://shop.wuquestudio.com/",
+ "maintainer": "spbgzh",
+ "usb": {
+ "vid": "0x906D",
+ "pid": "0x0006",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT_all_wkl": "LAYOUT_all",
+ "LAYOUT_87_wkl": "LAYOUT_tkl_f13_ansi_wkl",
+ "LAYOUT_87_wkl_split_bs": "LAYOUT_tkl_f13_ansi_wkl_split_bs",
+ "LAYOUT_87_wkl_split_lshift": "LAYOUT_tkl_f13_ansi_wkl_split_lshift",
+ "LAYOUT_87_wkl_split_rshift": "LAYOUT_tkl_f13_ansi_wkl_split_rshift"
+ },
+ "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": "F13", "x": 14, "y": 0 },
+ { "label": "Print", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "Backspace1", "x": 14, "y": 1.25 },
+ { "label": "Insert", "x": 15.25, "y": 1.25 },
+ { "label": "Home", "x": 16.25, "y": 1.25 },
+ { "label": "PageUp", "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": "PageDown", "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": "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": 16.25, "y": 4.25 },
+
+ { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.5 },
+ { "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": "Menu", "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 }
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_wkl": {
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "PageUp", "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": "PageDown", "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": "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": "Menu", "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 }
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_wkl_split_bs": {
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "Backspace1", "x": 14, "y": 1.25 },
+ { "label": "Insert", "x": 15.25, "y": 1.25 },
+ { "label": "Home", "x": 16.25, "y": 1.25 },
+ { "label": "PageUp", "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": "PageDown", "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": "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": "Menu", "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 }
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_wkl_split_lshift": {
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "PageUp", "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": "PageDown", "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": "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": 16.25, "y": 4.25 },
+
+ { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.5 },
+ { "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": "Menu", "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 }
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_wkl_split_rshift": {
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "PageUp", "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": "PageDown", "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": "Shift1", "x": 12.25, "y": 4.25, "w": 1.75 },
+ { "label": "Shift2", "x": 14, "y": 4.25 },
+ { "label": "\u2191", "x": 16.25, "y": 4.25 },
+
+ { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.5 },
+ { "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": "Menu", "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 }
+ ]
+ },
+ "LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift": {
+ "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", "x": 15.25, "y": 0 },
+ { "label": "Scroll", "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": "Backspace1", "x": 14, "y": 1.25 },
+ { "label": "Insert", "x": 15.25, "y": 1.25 },
+ { "label": "Home", "x": 16.25, "y": 1.25 },
+ { "label": "PageUp", "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": "PageDown", "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": "Shift1", "x": 12.25, "y": 4.25, "w": 1.75 },
+ { "label": "Shift2", "x": 14, "y": 4.25 },
+ { "label": "\u2191", "x": 16.25, "y": 4.25 },
+
+ { "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.5 },
+ { "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": "Menu", "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/wuque/promise87/wkl/keymaps/default/keymap.c b/keyboards/wuque/promise87/wkl/keymaps/default/keymap.c
new file mode 100644
index 0000000000..d56749b9cb
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/promise87/wkl/keymaps/default/readme.md b/keyboards/wuque/promise87/wkl/keymaps/default/readme.md
new file mode 100644
index 0000000000..f3a77c93fd
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/default/readme.md
@@ -0,0 +1 @@
+# The default keymap for promise87
diff --git a/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl/keymap.c b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl/keymap.c
new file mode 100644
index 0000000000..842da351e5
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_f13_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_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_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_tkl_f13_ansi_wkl(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl/readme.md b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl/readme.md
new file mode 100644
index 0000000000..b009ab3ef2
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl/readme.md
@@ -0,0 +1 @@
+# The default_tkl_f13_ansi_wkl keymap for promise87
diff --git a/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs/keymap.c b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs/keymap.c
new file mode 100644
index 0000000000..ccd8e35487
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_f13_ansi_wkl_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_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_UP,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_tkl_f13_ansi_wkl_split_bs(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs/readme.md b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs/readme.md
new file mode 100644
index 0000000000..22921ef2e7
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs/readme.md
@@ -0,0 +1 @@
+# The default_tkl_f13_ansi_wkl_split_bs keymap for promise87
diff --git a/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs_rshift/keymap.c b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs_rshift/keymap.c
new file mode 100644
index 0000000000..a751bdea30
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs_rshift/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_f13_ansi_wkl_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_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs_rshift/readme.md b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs_rshift/readme.md
new file mode 100644
index 0000000000..a0baa328e6
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_bs_rshift/readme.md
@@ -0,0 +1 @@
+# The default_tkl_f13_ansi_wkl_split_bs_rshift keymap for promise87
diff --git a/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_lshift/keymap.c b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_lshift/keymap.c
new file mode 100644
index 0000000000..1b5806b2cf
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_lshift/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_f13_ansi_wkl_split_lshift(
+ KC_ESC, KC_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_LSFT, KC_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, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_tkl_f13_ansi_wkl_split_lshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_lshift/readme.md b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_lshift/readme.md
new file mode 100644
index 0000000000..4b39705074
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_lshift/readme.md
@@ -0,0 +1 @@
+# The default_tkl_f13_ansi_wkl_split_lshift keymap for promise87
diff --git a/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_rshift/keymap.c b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_rshift/keymap.c
new file mode 100644
index 0000000000..28834dcb03
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_rshift/keymap.c
@@ -0,0 +1,36 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_f13_ansi_wkl_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_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_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_tkl_f13_ansi_wkl_split_rshift(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_rshift/readme.md b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_rshift/readme.md
new file mode 100644
index 0000000000..a7df0be109
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/default_tkl_f13_ansi_wkl_split_rshift/readme.md
@@ -0,0 +1 @@
+# The default_tkl_f13_ansi_wkl_split_rshift keymap for promise87
diff --git a/keyboards/wuque/promise87/wkl/keymaps/via/keymap.c b/keyboards/wuque/promise87/wkl/keymaps/via/keymap.c
new file mode 100644
index 0000000000..6ae4f5398b
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/via/keymap.c
@@ -0,0 +1,52 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [2] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [3] = LAYOUT_all(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+};
diff --git a/keyboards/wuque/promise87/wkl/keymaps/via/readme.md b/keyboards/wuque/promise87/wkl/keymaps/via/readme.md
new file mode 100644
index 0000000000..a500dfdb15
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/via/readme.md
@@ -0,0 +1 @@
+# The via keymap for promise87
diff --git a/keyboards/wuque/promise87/wkl/keymaps/via/rules.mk b/keyboards/wuque/promise87/wkl/keymaps/via/rules.mk
new file mode 100644
index 0000000000..43061db1dd
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/keymaps/via/rules.mk
@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+LTO_ENABLE = yes \ No newline at end of file
diff --git a/keyboards/wuque/promise87/wkl/readme.md b/keyboards/wuque/promise87/wkl/readme.md
new file mode 100644
index 0000000000..f4562164bd
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/readme.md
@@ -0,0 +1,27 @@
+# promise87
+
+More Info at [promise87](https://shop.wuquestudio.com/)
+​
+
+* Keyboard Maintainer: [spbgzh](https://github.com/spbgzh)
+* Hardware Supported: promise 87
+* Hardware Availability: [promise87](https://shop.wuquestudio.com/)
+​
+
+Make example for this keyboard (after setting up your build environment):
+
+ make wuque/promise87/wkl:default
+
+Flashing example for this keyboard:
+
+ make wuque/promise87/wkl:default:flash
+
+## Bootloader
+
+Enter the bootloader using one of the following methods:
+
+* Tap the Reset switch mounted on the PCB
+* In the case of the default keymap, use the key combination Fn + PageUp
+* 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/wuque/promise87/wkl/rules.mk b/keyboards/wuque/promise87/wkl/rules.mk
new file mode 100644
index 0000000000..85a4a905a5
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/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 = 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/wuque/promise87/wkl/wkl.c b/keyboards/wuque/promise87/wkl/wkl.c
new file mode 100644
index 0000000000..6264f7b1d6
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/wkl.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "wkl.h"
diff --git a/keyboards/wuque/promise87/wkl/wkl.h b/keyboards/wuque/promise87/wkl/wkl.h
new file mode 100644
index 0000000000..913ed9f881
--- /dev/null
+++ b/keyboards/wuque/promise87/wkl/wkl.h
@@ -0,0 +1,217 @@
+/* Copyright 2022 wuque
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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"
+
+
+/* LAYOUT_all
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤
+ * │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 │4c │4d │ │4f │
+ * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤┌───┼───┼───â”
+ * │50 │ │52 │56 │5b │ │5d ││5e │5f │5g │
+ * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘└───┴───┴───┘
+ */
+#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, K4C, K4D, K4F, \
+ K50, K52, K56, K5B, 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, KC_NO, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, KC_NO, K5B, KC_NO, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13_ansi_wkl
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 ││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 │3c │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ │4f │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤┌───┼───┼───â”
+ * │50 │ │52 │56 │5b │ │5d ││5e │5f │5g │
+ * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘└───┴───┴───┘
+ */
+#define LAYOUT_tkl_f13_ansi_wkl( \
+ 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, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \
+ K50, K52, K56, K5B, 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, KC_NO, 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, KC_NO, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, KC_NO, K5B, KC_NO, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13_ansi_wkl_split_bs
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤
+ * │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 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ │4f │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤┌───┼───┼───â”
+ * │50 │ │52 │56 │5b │ │5d ││5e │5f │5g │
+ * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘└───┴───┴───┘
+ */
+#define LAYOUT_tkl_f13_ansi_wkl_split_bs( \
+ 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, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4F, \
+ K50, K52, K56, K5B, 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, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, KC_NO, K4F, KC_NO }, \
+ { K50, KC_NO, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, KC_NO, K5B, KC_NO, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13_ansi_wkl_split_lshift
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 ││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 │3c │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │40 │41 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │ │4f │
+ * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤┌───┼───┼───â”
+ * │50 │ │52 │56 │5b │ │5d ││5e │5f │5g │
+ * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘└───┴───┴───┘
+ */
+#define LAYOUT_tkl_f13_ansi_wkl_split_lshift( \
+ 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, K4C, K4F, \
+ K50, K52, K56, K5B, 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, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, KC_NO, KC_NO, K4F, KC_NO }, \
+ { K50, KC_NO, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, KC_NO, K5B, KC_NO, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13_ansi_wkl_split_rshift
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 ││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 │3c │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+ * │40 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │4d │ │4f │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤┌───┼───┼───â”
+ * │50 │ │52 │56 │5b │ │5d ││5e │5f │5g │
+ * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘└───┴───┴───┘
+ */
+#define LAYOUT_tkl_f13_ansi_wkl_split_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, 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, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \
+ K50, K52, K56, K5B, 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, KC_NO, 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, KC_NO, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, KC_NO, K5B, KC_NO, K5D, K5E, K5F, K5G }, \
+}
+
+
+/* LAYOUT_tkl_f13_ansi_wkl_split_bs_rshift
+ * ┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───â”┌───┬───┬───â”
+ * │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 │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤├───┼───┼───┤
+ * │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 │42 │43 │44 │45 │46 │47 │48 │49 │4a │4b │4c │4d │ │4f │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤┌───┼───┼───â”
+ * │50 │ │52 │56 │5b │ │5d ││5e │5f │5g │
+ * └─────┘ └─────┴───────────────────────────┴─────┘ └─────┘└───┴───┴───┘
+ */
+#define LAYOUT_tkl_f13_ansi_wkl_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, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4F, \
+ K50, K52, K56, K5B, 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, KC_NO, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, KC_NO, K4F, KC_NO }, \
+ { K50, KC_NO, K52, KC_NO, KC_NO, KC_NO, K56, KC_NO, KC_NO, KC_NO, KC_NO, K5B, KC_NO, K5D, K5E, K5F, K5G }, \
+}
diff --git a/keyboards/wuque/serneity65/config.h b/keyboards/wuque/serneity65/config.h
index e13aa89504..9fe29aa093 100644
--- a/keyboards/wuque/serneity65/config.h
+++ b/keyboards/wuque/serneity65/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x906B
-#define PRODUCT_ID 0x0003
-#define DEVICE_VER 0x0001
-#define MANUFACTURER wuque
-#define PRODUCT serneity65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/wuque/serneity65/info.json b/keyboards/wuque/serneity65/info.json
index 211ad12278..18f7062397 100644
--- a/keyboards/wuque/serneity65/info.json
+++ b/keyboards/wuque/serneity65/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "serneity65",
+ "manufacturer": "wuque",
"url": "https://wuque.com/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x906B",
+ "pid": "0x0003",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/wuque/serneity65/keymaps/65_ansi/keymap.c b/keyboards/wuque/serneity65/keymaps/65_ansi/keymap.c
index 3d2393e145..7d82eb5f08 100644
--- a/keyboards/wuque/serneity65/keymaps/65_ansi/keymap.c
+++ b/keyboards/wuque/serneity65/keymaps/65_ansi/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/wuque/serneity65/keymaps/65_split_bs/keymap.c b/keyboards/wuque/serneity65/keymaps/65_split_bs/keymap.c
index e204574319..6a6008d55b 100644
--- a/keyboards/wuque/serneity65/keymaps/65_split_bs/keymap.c
+++ b/keyboards/wuque/serneity65/keymaps/65_split_bs/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/keyboards/wuque/serneity65/keymaps/65_split_lshift/keymap.c b/keyboards/wuque/serneity65/keymaps/65_split_lshift/keymap.c
index ef99b56fce..ec5b528fae 100644
--- a/keyboards/wuque/serneity65/keymaps/65_split_lshift/keymap.c
+++ b/keyboards/wuque/serneity65/keymaps/65_split_lshift/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/wuque/serneity65/keymaps/65_split_space/keymap.c b/keyboards/wuque/serneity65/keymaps/65_split_space/keymap.c
index fbbfd244c0..9a3d9ba606 100644
--- a/keyboards/wuque/serneity65/keymaps/65_split_space/keymap.c
+++ b/keyboards/wuque/serneity65/keymaps/65_split_space/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
};
diff --git a/keyboards/x16/config.h b/keyboards/x16/config.h
index 8378880d08..d1545ced61 100644
--- a/keyboards/x16/config.h
+++ b/keyboards/x16/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x4B50
-#define PRODUCT_ID 0x016A
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yinxianwei
-#define PRODUCT x16
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 4
@@ -41,7 +34,6 @@
*/
#define MATRIX_ROW_PINS { E6, F7, D6, B6 }
#define MATRIX_COL_PINS { C7, C6, B4, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/x16/info.json b/keyboards/x16/info.json
index 742777648d..a006269af0 100644
--- a/keyboards/x16/info.json
+++ b/keyboards/x16/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "x16",
+ "manufacturer": "yinxianwei",
"url": "",
"maintainer": "yinxianwei",
+ "usb": {
+ "vid": "0x4B50",
+ "pid": "0x016A",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x4": {
"layout": [
diff --git a/keyboards/xbows/knight/config.h b/keyboards/xbows/knight/config.h
index 013bb4e7d4..f0fc0f712a 100644
--- a/keyboards/xbows/knight/config.h
+++ b/keyboards/xbows/knight/config.h
@@ -17,12 +17,6 @@
#include "config_common.h"
-#define VENDOR_ID 0x5842
-#define PRODUCT_ID 0x4B6E
-#define DEVICE_VER 0x0001
-#define MANUFACTURER X-BOWS
-#define PRODUCT KNIGHT
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { F7, F6, F5, F4, F1, F0 }
diff --git a/keyboards/xbows/knight/info.json b/keyboards/xbows/knight/info.json
index dca3ea1ed1..d4ce054f0b 100644
--- a/keyboards/xbows/knight/info.json
+++ b/keyboards/xbows/knight/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "KNIGHT",
+ "manufacturer": "X-BOWS",
"url": "",
"maintainer": "xbows-qmk",
+ "usb": {
+ "vid": "0x5842",
+ "pid": "0x4B6E",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/xbows/knight_plus/config.h b/keyboards/xbows/knight_plus/config.h
index 414b5a86b7..91c6dcebd4 100644
--- a/keyboards/xbows/knight_plus/config.h
+++ b/keyboards/xbows/knight_plus/config.h
@@ -17,12 +17,6 @@
#include "config_common.h"
-#define VENDOR_ID 0x5842
-#define PRODUCT_ID 0x4B50
-#define DEVICE_VER 0x0001
-#define MANUFACTURER X-BOWS
-#define PRODUCT KNIGHT_PLUS
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { F7, F6, F5, F4, F1, F0 }
diff --git a/keyboards/xbows/knight_plus/info.json b/keyboards/xbows/knight_plus/info.json
index 7b6521510f..8311f0026e 100644
--- a/keyboards/xbows/knight_plus/info.json
+++ b/keyboards/xbows/knight_plus/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "KNIGHT_PLUS",
+ "manufacturer": "X-BOWS",
"url": "",
"maintainer": "xbows-qmk",
+ "usb": {
+ "vid": "0x5842",
+ "pid": "0x4B50",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/xbows/nature/config.h b/keyboards/xbows/nature/config.h
index d9d6a2753e..a248fa37bb 100644
--- a/keyboards/xbows/nature/config.h
+++ b/keyboards/xbows/nature/config.h
@@ -17,12 +17,6 @@
#include "config_common.h"
-#define VENDOR_ID 0x5842
-#define PRODUCT_ID 0x4E61
-#define DEVICE_VER 0x0001
-#define MANUFACTURER X-BOWS
-#define PRODUCT NATURE
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { F7, F6, F5, F4, F1, F0 }
diff --git a/keyboards/xbows/nature/info.json b/keyboards/xbows/nature/info.json
index 62e2c1f6d9..69da3dec9c 100644
--- a/keyboards/xbows/nature/info.json
+++ b/keyboards/xbows/nature/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NATURE",
+ "manufacturer": "X-BOWS",
"url": "",
"maintainer": "xbows-qmk",
+ "usb": {
+ "vid": "0x5842",
+ "pid": "0x4E61",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/xbows/numpad/config.h b/keyboards/xbows/numpad/config.h
index c36ee1a52c..7eb56caea7 100644
--- a/keyboards/xbows/numpad/config.h
+++ b/keyboards/xbows/numpad/config.h
@@ -17,12 +17,6 @@
#include "config_common.h"
-#define VENDOR_ID 0x5842
-#define PRODUCT_ID 0x4E75
-#define DEVICE_VER 0x0001
-#define MANUFACTURER X-BOWS
-#define PRODUCT NUMPAD
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
#define MATRIX_ROW_PINS { B5, B4, C6, B6, D7, B3 }
diff --git a/keyboards/xbows/numpad/info.json b/keyboards/xbows/numpad/info.json
index f4be5f56d1..543a4f876f 100644
--- a/keyboards/xbows/numpad/info.json
+++ b/keyboards/xbows/numpad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "NUMPAD",
+ "manufacturer": "X-BOWS",
"url": "",
"maintainer": "xbows-qmk",
+ "usb": {
+ "vid": "0x5842",
+ "pid": "0x4E75",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/xbows/ranger/config.h b/keyboards/xbows/ranger/config.h
index 73a1bc3a74..6c557bf341 100644
--- a/keyboards/xbows/ranger/config.h
+++ b/keyboards/xbows/ranger/config.h
@@ -17,12 +17,6 @@
#include "config_common.h"
-#define VENDOR_ID 0x5842
-#define PRODUCT_ID 0x5261
-#define DEVICE_VER 0x0001
-#define MANUFACTURER X-BOWS
-#define PRODUCT Ranger
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 16
#define MATRIX_ROW_PINS { C7, B6, B4, C6, B5, D6 }
diff --git a/keyboards/xbows/ranger/info.json b/keyboards/xbows/ranger/info.json
index 8f0e3d1135..29919193c3 100644
--- a/keyboards/xbows/ranger/info.json
+++ b/keyboards/xbows/ranger/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ranger",
+ "manufacturer": "X-BOWS",
"url": "",
"maintainer": "xbows-qmk",
+ "usb": {
+ "vid": "0x5842",
+ "pid": "0x5261",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_tkl_ansi"
},
diff --git a/keyboards/xbows/woody/config.h b/keyboards/xbows/woody/config.h
index 9d04eb84c4..d6b7f32c68 100644
--- a/keyboards/xbows/woody/config.h
+++ b/keyboards/xbows/woody/config.h
@@ -1,10 +1,5 @@
#pragma once
#include "config_common.h"
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x1224
-#define DEVICE_VER 0x0001
-#define MANUFACTURER X-BOWS
-#define PRODUCT WOO-DY
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/xbows/woody/info.json b/keyboards/xbows/woody/info.json
index 4e4e77a4ba..5b984811df 100644
--- a/keyboards/xbows/woody/info.json
+++ b/keyboards/xbows/woody/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "WOO-DY",
+ "manufacturer": "X-BOWS",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1224",
+ "device_version": "0.0.1"
+ },
"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.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.5}, {"x":4, "y":4, "w":6.25}, {"x":10.25, "y":4, "w":1.5}, {"x":11.75, "y":4, "w":1.25}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
diff --git a/keyboards/xelus/akis/config.h b/keyboards/xelus/akis/config.h
index 2cbdb8bb00..9a1eddcd28 100644
--- a/keyboards/xelus/akis/config.h
+++ b/keyboards/xelus/akis/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-// USB Device descriptor parameter
-#define VENDOR_ID 0x5845 // XE
-#define PRODUCT_ID 0xA04B // A-K
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT AkiS
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { F5, F4, F1, F0, E6 }
#define MATRIX_COL_PINS { B4, D7, D6, D4, D5, D3, D2, D1, D0, F6, F7, C7, C6, B6, B5 }
-#define UNUSED_PINS
/* RGB Lighting */
#define RGB_DI_PIN B0
diff --git a/keyboards/xelus/akis/info.json b/keyboards/xelus/akis/info.json
index 29dec68aee..36a6d78277 100644
--- a/keyboards/xelus/akis/info.json
+++ b/keyboards/xelus/akis/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "akiS",
+ "keyboard_name": "AkiS",
+ "manufacturer": "Xelus",
"url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/xelus/akis",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0xA04B",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_65_all": "LAYOUT_all"
},
diff --git a/keyboards/xelus/dawn60/info.json b/keyboards/xelus/dawn60/info.json
index 346422b92a..24eba75384 100644
--- a/keyboards/xelus/dawn60/info.json
+++ b/keyboards/xelus/dawn60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dawn60",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x0060",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_60_all": "LAYOUT_all"
},
diff --git a/keyboards/xelus/dawn60/rev1/config.h b/keyboards/xelus/dawn60/rev1/config.h
index 52dab44f48..4b3a1641b9 100644
--- a/keyboards/xelus/dawn60/rev1/config.h
+++ b/keyboards/xelus/dawn60/rev1/config.h
@@ -17,12 +17,6 @@
#include "config_common.h"
-// USB Device descriptor parameter
-#define VENDOR_ID 0x5845 // XE
-#define PRODUCT_ID 0x0060 // Dawn60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT Dawn60
// key matrix size
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -30,12 +24,10 @@
//no underglow - prototype
//#define MATRIX_ROW_PINS { B1, B3, B7, F6, F7 }
//#define MATRIX_COL_PINS { B0, D5, B2, F5, D2, D3, D4, D6, D7, B4, B5, B6, C6, C7 }
-//#define UNUSED_PINS
//underglow
#define MATRIX_ROW_PINS { B1, B3, F1, F6, F7 }
#define MATRIX_COL_PINS { B0, D5, B2, F5, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
// IS31FL3731 driver
#define DRIVER_COUNT 2
diff --git a/keyboards/xelus/dawn60/rev1_qmk/config.h b/keyboards/xelus/dawn60/rev1_qmk/config.h
index 67c88efb4c..11c59f8847 100644
--- a/keyboards/xelus/dawn60/rev1_qmk/config.h
+++ b/keyboards/xelus/dawn60/rev1_qmk/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-// USB Device descriptor parameter
-#define VENDOR_ID 0x5845 // XE
-#define PRODUCT_ID 0x0060 // Dawn60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT Dawn60
-
// key matrix size
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -31,7 +24,6 @@
//underglow
#define MATRIX_ROW_PINS { B1, B3, F1, F6, F7 }
#define MATRIX_COL_PINS { B0, D5, B2, F5, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 }
-#define UNUSED_PINS
// COL2ROW or ROW2COL
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xelus/dharma/config.h b/keyboards/xelus/dharma/config.h
index eab2c224c2..08fd8fb8f8 100644
--- a/keyboards/xelus/dharma/config.h
+++ b/keyboards/xelus/dharma/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5845 // XE
-#define PRODUCT_ID 0xDAAA // Dharma
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT Dharma
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
@@ -30,7 +23,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3, B0 }
#define MATRIX_COL_PINS { B3, B2, B1, D5, D4, E6, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xelus/dharma/info.json b/keyboards/xelus/dharma/info.json
index 661df2afbb..174cf2a1f0 100644
--- a/keyboards/xelus/dharma/info.json
+++ b/keyboards/xelus/dharma/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Xelus Dharma",
+ "keyboard_name": "Dharma",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0xDAAA",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/xelus/dharma/keymaps/default/config.h b/keyboards/xelus/dharma/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/dharma/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/dharma/keymaps/via/config.h b/keyboards/xelus/dharma/keymaps/via/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/dharma/keymaps/via/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/kangaroo/chconf.h b/keyboards/xelus/kangaroo/chconf.h
deleted file mode 100644
index 71b34b0591..0000000000
--- a/keyboards/xelus/kangaroo/chconf.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/xelus/kangaroo/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/xelus/kangaroo/config.h b/keyboards/xelus/kangaroo/config.h
deleted file mode 100644
index 1d746b342e..0000000000
--- a/keyboards/xelus/kangaroo/config.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* Copyright 2020 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 0x524F // RO
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT Kangaroo
-
-/* key matrix size */
-#define MATRIX_ROWS 12
-#define MATRIX_COLS 11
-
-#define MATRIX_COL_PINS { B10, B2, B11, A10, B7, B6, B5, B4, B3, A15, A14 }
-#define MATRIX_ROW_PINS { A9, A8, B15, B14, B13, B12, A4, A5, A6, A7, B0, B1 }
-#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
-
-// I2C OLED defines
-#define I2C1_SCL_PIN B8
-#define I2C1_SDA_PIN B9
-
-#define I2C1_SCL_PAL_MODE 1
-#define I2C1_SDA_PAL_MODE 1
-
-#define I2C1_TIMINGR_SCLDEL 3U
-#define I2C1_TIMINGR_SDADEL 1U
-#define I2C1_TIMINGR_SCLH 3U
-#define I2C1_TIMINGR_SCLL 9U
-
-// I2C EEPROM
-#define EEPROM_I2C_CAT24C512
-
-// Dynamic EEPROM
-#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 65535
diff --git a/keyboards/xelus/kangaroo/info.json b/keyboards/xelus/kangaroo/info.json
index c7b45eb946..adb6450826 100644
--- a/keyboards/xelus/kangaroo/info.json
+++ b/keyboards/xelus/kangaroo/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Kangaroo",
- "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/xelus/kangaroo",
- "maintainer": "qmk",
+ "manufacturer": "Xelus",
+ "url": "https://github.com/qmk/qmk_firmware/tree/master/keyboards/xelus/kangaroo",
+ "maintainer": "qmk",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x524F"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"label":"PrtSc", "x":4.25, "y":0}, {"label":"Scroll Lock", "x":5.25, "y":0}, {"label":"Pause", "x":6.25, "y":0}, {"label":"Esc", "x":7.5, "y":0}, {"label":"F1", "x":9.5, "y":0}, {"label":"F2", "x":10.5, "y":0}, {"label":"F3", "x":11.5, "y":0}, {"label":"F4", "x":12.5, "y":0}, {"label":"F5", "x":14, "y":0}, {"label":"F6", "x":15, "y":0}, {"label":"F7", "x":16, "y":0}, {"label":"F8", "x":17, "y":0}, {"label":"F9", "x":18.5, "y":0}, {"label":"F10", "x":19.5, "y":0}, {"label":"F11", "x":20.5, "y":0}, {"label":"F12", "x":21.5, "y":0}, {"x":0, "y":1.25}, {"x":1, "y":1.25}, {"x":2, "y":1.25}, {"x":3, "y":1.25}, {"label":"Insert", "x":4.25, "y":1.25}, {"label":"Home", "x":5.25, "y":1.25}, {"label":"PgUp", "x":6.25, "y":1.25}, {"label":"~", "x":7.5, "y":1.25}, {"label":"!", "x":8.5, "y":1.25}, {"label":"@", "x":9.5, "y":1.25}, {"label":"#", "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}, {"label":"&", "x":14.5, "y":1.25}, {"label":"*", "x":15.5, "y":1.25}, {"label":"(", "x":16.5, "y":1.25}, {"label":")", "x":17.5, "y":1.25}, {"label":"_", "x":18.5, "y":1.25}, {"label":"+", "x":19.5, "y":1.25}, {"x":20.5, "y":1.25}, {"x":21.5, "y":1.25}, {"x":0, "y":2.25}, {"x":1, "y":2.25}, {"x":2, "y":2.25}, {"x":3, "y":2.25}, {"label":"Delete", "x":4.25, "y":2.25}, {"label":"End", "x":5.25, "y":2.25}, {"label":"PgDn", "x":6.25, "y":2.25}, {"label":"Tab", "x":7.5, "y":2.25, "w":1.5}, {"label":"Q", "x":9, "y":2.25}, {"label":"W", "x":10, "y":2.25}, {"label":"E", "x":11, "y":2.25}, {"label":"R", "x":12, "y":2.25}, {"label":"T", "x":13, "y":2.25}, {"label":"Y", "x":14, "y":2.25}, {"label":"U", "x":15, "y":2.25}, {"label":"I", "x":16, "y":2.25}, {"label":"O", "x":17, "y":2.25}, {"label":"P", "x":18, "y":2.25}, {"label":"{", "x":19, "y":2.25}, {"label":"}", "x":20, "y":2.25}, {"label":"|", "x":21, "y":2.25, "w":1.5}, {"x":0, "y":3.25}, {"x":1, "y":3.25}, {"x":2, "y":3.25}, {"x":3, "y":3.25}, {"label":"Caps Lock", "x":7.5, "y":3.25, "w":1.75}, {"label":"A", "x":9.25, "y":3.25}, {"label":"S", "x":10.25, "y":3.25}, {"label":"D", "x":11.25, "y":3.25}, {"label":"F", "x":12.25, "y":3.25}, {"label":"G", "x":13.25, "y":3.25}, {"label":"H", "x":14.25, "y":3.25}, {"label":"J", "x":15.25, "y":3.25}, {"label":"K", "x":16.25, "y":3.25}, {"label":"L", "x":17.25, "y":3.25}, {"label":":", "x":18.25, "y":3.25}, {"label":"\"", "x":19.25, "y":3.25}, {"label":"Enter", "x":20.25, "y":3.25, "w":2.25}, {"x":0, "y":4.25}, {"x":1, "y":4.25}, {"x":2, "y":4.25}, {"x":3, "y":4.25}, {"label":"\u2191", "x":5.25, "y":4.25}, {"label":"Shift", "x":7.5, "y":4.25, "w":2.25}, {"label":"Z", "x":9.75, "y":4.25}, {"label":"X", "x":10.75, "y":4.25}, {"label":"C", "x":11.75, "y":4.25}, {"label":"V", "x":12.75, "y":4.25}, {"label":"B", "x":13.75, "y":4.25}, {"label":"N", "x":14.75, "y":4.25}, {"label":"M", "x":15.75, "y":4.25}, {"label":"<", "x":16.75, "y":4.25}, {"label":">", "x":17.75, "y":4.25}, {"label":"?", "x":18.75, "y":4.25}, {"x":19.75, "y":4.25, "w":1.75}, {"x":21.5, "y":4.25}, {"x":0, "y":5.25}, {"x":1, "y":5.25}, {"x":2, "y":5.25}, {"x":3, "y":5.25}, {"label":"\u2190", "x":4.25, "y":5.25}, {"label":"\u2193", "x":5.25, "y":5.25}, {"label":"\u2192", "x":6.25, "y":5.25}, {"label":"Ctrl", "x":7.5, "y":5.25, "w":1.25}, {"label":"Win", "x":8.75, "y":5.25, "w":1.25}, {"label":"Alt", "x":10, "y":5.25, "w":1.25}, {"x":11.25, "y":5.25, "w":6.25}, {"label":"Alt", "x":17.5, "y":5.25, "w":1.25}, {"label":"Win", "x":18.75, "y":5.25, "w":1.25}, {"label":"Menu", "x":20, "y":5.25, "w":1.25}, {"label":"Ctrl", "x":21.25, "y":5.25, "w":1.25}]
diff --git a/keyboards/xelus/kangaroo/kangaroo.c b/keyboards/xelus/kangaroo/kangaroo.c
index a7a3d24800..585d33d498 100644
--- a/keyboards/xelus/kangaroo/kangaroo.c
+++ b/keyboards/xelus/kangaroo/kangaroo.c
@@ -1,4 +1,4 @@
-/* Copyright 2020 Harrison Chan (Xelus)
+/* Copyright 2022 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
@@ -16,9 +16,4 @@
#include "kangaroo.h"
-void board_init(void) {
- SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
- SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP);
-}
-
void matrix_io_delay(void) { __asm__ volatile("nop\nnop\nnop\n"); }
diff --git a/keyboards/xelus/kangaroo/keymaps/default/config.h b/keyboards/xelus/kangaroo/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/kangaroo/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/kangaroo/keymaps/via/config.h b/keyboards/xelus/kangaroo/keymaps/via/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/kangaroo/keymaps/via/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/kangaroo/readme.md b/keyboards/xelus/kangaroo/readme.md
deleted file mode 100644
index e91f32f96a..0000000000
--- a/keyboards/xelus/kangaroo/readme.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Kangaroo
-
-Left Hand Fullsized Keyboard designed by Jono.
-
-* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
-* Hardware Supported: Kangaroo
-* Hardware Availability: Custom keyboard group buys
-
-Make example for this keyboard (after setting up your build environment):
-
- make xelus/kangaroo: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/xelus/kangaroo/rev1/config.h b/keyboards/xelus/kangaroo/rev1/config.h
new file mode 100644
index 0000000000..a57d22a7f8
--- /dev/null
+++ b/keyboards/xelus/kangaroo/rev1/config.h
@@ -0,0 +1,54 @@
+/* Copyright 2020 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
+
+/* key matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 11
+
+#define MATRIX_COL_PINS { B10, B2, B11, A10, B7, B6, B5, B4, B3, A15, A14 }
+#define MATRIX_ROW_PINS { A9, A8, B15, B14, B13, B12, A4, A5, A6, A7, B0, B1 }
+#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
+
+// I2C OLED defines
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
+
+#define I2C1_SCL_PAL_MODE 1
+#define I2C1_SDA_PAL_MODE 1
+
+#define I2C1_TIMINGR_SCLDEL 3U
+#define I2C1_TIMINGR_SDADEL 1U
+#define I2C1_TIMINGR_SCLH 3U
+#define I2C1_TIMINGR_SCLL 9U
+
+// I2C EEPROM
+#define EEPROM_I2C_CAT24C512
+
+// Dynamic EEPROM
+#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 65535
diff --git a/keyboards/xelus/kangaroo/halconf.h b/keyboards/xelus/kangaroo/rev1/halconf.h
index 633d94a880..633d94a880 100644
--- a/keyboards/xelus/kangaroo/halconf.h
+++ b/keyboards/xelus/kangaroo/rev1/halconf.h
diff --git a/keyboards/xelus/kangaroo/rev1/info.json b/keyboards/xelus/kangaroo/rev1/info.json
new file mode 100644
index 0000000000..523aef4aaa
--- /dev/null
+++ b/keyboards/xelus/kangaroo/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Kangaroo Rev 1.0",
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/xelus/kangaroo/mcuconf.h b/keyboards/xelus/kangaroo/rev1/mcuconf.h
index 20db196d29..20db196d29 100644
--- a/keyboards/xelus/kangaroo/mcuconf.h
+++ b/keyboards/xelus/kangaroo/rev1/mcuconf.h
diff --git a/keyboards/xelus/kangaroo/rev1/readme.md b/keyboards/xelus/kangaroo/rev1/readme.md
new file mode 100644
index 0000000000..800497b698
--- /dev/null
+++ b/keyboards/xelus/kangaroo/rev1/readme.md
@@ -0,0 +1,14 @@
+# Kangaroo Rev 1
+
+Left Hand Fullsized Keyboard designed by Jono.
+
+* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
+* Hardware Supported: Kangaroo
+* Hardware Availability: Custom keyboard group buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make xelus/kangaroo/rev1:default
+ make xelus/kangaroo/rev1: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).
diff --git a/keyboards/xelus/kangaroo/rev1/rev1.c b/keyboards/xelus/kangaroo/rev1/rev1.c
new file mode 100644
index 0000000000..a71f476498
--- /dev/null
+++ b/keyboards/xelus/kangaroo/rev1/rev1.c
@@ -0,0 +1,22 @@
+/* Copyright 2022 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 "rev1.h"
+
+void board_init(void) {
+ SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
+ SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP);
+}
diff --git a/keyboards/xelus/kangaroo/rev1/rev1.h b/keyboards/xelus/kangaroo/rev1/rev1.h
new file mode 100644
index 0000000000..f146b4f964
--- /dev/null
+++ b/keyboards/xelus/kangaroo/rev1/rev1.h
@@ -0,0 +1,17 @@
+/* Copyright 2022 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 "quantum.h"
diff --git a/keyboards/xelus/kangaroo/rules.mk b/keyboards/xelus/kangaroo/rev1/rules.mk
index 80826fae5f..80826fae5f 100644
--- a/keyboards/xelus/kangaroo/rules.mk
+++ b/keyboards/xelus/kangaroo/rev1/rules.mk
diff --git a/keyboards/xelus/kangaroo/rev2/config.h b/keyboards/xelus/kangaroo/rev2/config.h
new file mode 100644
index 0000000000..a2f89a0ab1
--- /dev/null
+++ b/keyboards/xelus/kangaroo/rev2/config.h
@@ -0,0 +1,38 @@
+/* Copyright 2020 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
+
+/* key matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 11
+
+#define MATRIX_COL_PINS { B10, B2, B11, A10, B7, B6, B5, B4, B3, A15, A14 }
+#define MATRIX_ROW_PINS { A9, A8, B15, B14, B13, B12, A4, A5, A6, A7, B0, B1 }
+
+/* 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 WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE WEAR_LEVELING_LOGICAL_SIZE*2
diff --git a/keyboards/xelus/kangaroo/rev2/info.json b/keyboards/xelus/kangaroo/rev2/info.json
new file mode 100644
index 0000000000..8f7a2c6ce9
--- /dev/null
+++ b/keyboards/xelus/kangaroo/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Kangaroo Rev 2.0",
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/xelus/kangaroo/rev2/readme.md b/keyboards/xelus/kangaroo/rev2/readme.md
new file mode 100644
index 0000000000..b94bd43cd1
--- /dev/null
+++ b/keyboards/xelus/kangaroo/rev2/readme.md
@@ -0,0 +1,14 @@
+# Kangaroo Rev 2
+
+Left Hand Fullsized Keyboard designed by Jono.
+
+* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
+* Hardware Supported: Kangaroo
+* Hardware Availability: Custom keyboard group buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make xelus/kangaroo/rev2:default
+ make xelus/kangaroo/rev2: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).
diff --git a/keyboards/xelus/kangaroo/rev2/rules.mk b/keyboards/xelus/kangaroo/rev2/rules.mk
new file mode 100644
index 0000000000..44ac92bb81
--- /dev/null
+++ b/keyboards/xelus/kangaroo/rev2/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = STM32L412
+
+# 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 = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+EEPROM_DRIVER = i2c
+
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = embedded_flash
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/xelus/la_plus/config.h b/keyboards/xelus/la_plus/config.h
index 14cad0fa87..40d53adb06 100755
--- a/keyboards/xelus/la_plus/config.h
+++ b/keyboards/xelus/la_plus/config.h
@@ -18,13 +18,6 @@
#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
@@ -32,7 +25,6 @@
/* 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
diff --git a/keyboards/xelus/la_plus/info.json b/keyboards/xelus/la_plus/info.json
index bfa3a4dc20..ced81e6f3d 100644
--- a/keyboards/xelus/la_plus/info.json
+++ b/keyboards/xelus/la_plus/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "La+",
+ "keyboard_name": "MechaMaker La+",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x4C50",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/xelus/la_plus/keymaps/default/config.h b/keyboards/xelus/la_plus/keymaps/default/config.h
deleted file mode 100644
index e559a15426..0000000000
--- a/keyboards/xelus/la_plus/keymaps/default/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/la_plus/keymaps/via/config.h b/keyboards/xelus/la_plus/keymaps/via/config.h
index 58c086282c..43760bd281 100644
--- a/keyboards/xelus/la_plus/keymaps/via/config.h
+++ b/keyboards/xelus/la_plus/keymaps/via/config.h
@@ -18,5 +18,3 @@
// Enable RGB Matrix
#define VIA_QMK_RGBLIGHT_ENABLE
-
-#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/ninjin/config.h b/keyboards/xelus/ninjin/config.h
index 4dd40210a6..7f49c299af 100644
--- a/keyboards/xelus/ninjin/config.h
+++ b/keyboards/xelus/ninjin/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5845 // XE
-#define PRODUCT_ID 0x4E4A // NJ
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT Ninjin
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/xelus/ninjin/info.json b/keyboards/xelus/ninjin/info.json
index 8b44ea9ded..f85a6a54c4 100644
--- a/keyboards/xelus/ninjin/info.json
+++ b/keyboards/xelus/ninjin/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Ninjin",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x4E4A",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_all": "LAYOUT_tkl_ansi_tsangan"
},
diff --git a/keyboards/xelus/pachi/mini_32u4/config.h b/keyboards/xelus/pachi/mini_32u4/config.h
index cf15d57cfc..f2abc3619f 100644
--- a/keyboards/xelus/pachi/mini_32u4/config.h
+++ b/keyboards/xelus/pachi/mini_32u4/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5845 // XE
-#define PRODUCT_ID 0x5041 // PA
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT Xelus Pachi Mini
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/xelus/pachi/mini_32u4/info.json b/keyboards/xelus/pachi/mini_32u4/info.json
index 3b0128ee82..ca78bdbffe 100644
--- a/keyboards/xelus/pachi/mini_32u4/info.json
+++ b/keyboards/xelus/pachi/mini_32u4/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Xelus Pachi Mini",
+ "keyboard_name": "Pachi Mini",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x5041",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/xelus/pachi/mini_32u4/keymaps/default/config.h b/keyboards/xelus/pachi/mini_32u4/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/pachi/mini_32u4/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/pachi/mini_32u4/keymaps/via/config.h b/keyboards/xelus/pachi/mini_32u4/keymaps/via/config.h
index fc3a2bd0b2..47bbf2bf81 100644
--- a/keyboards/xelus/pachi/mini_32u4/keymaps/via/config.h
+++ b/keyboards/xelus/pachi/mini_32u4/keymaps/via/config.h
@@ -18,5 +18,3 @@
// 3 layers or else it will not fit in EEPROM
#define DYNAMIC_KEYMAP_LAYER_COUNT 3
-
-#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/pachi/rev1/config.h b/keyboards/xelus/pachi/rev1/config.h
index 2379700138..8a8c51779f 100644
--- a/keyboards/xelus/pachi/rev1/config.h
+++ b/keyboards/xelus/pachi/rev1/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5845 // XE
-#define PRODUCT_ID 0x5041 // PA
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT Xelus Pachi
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/xelus/pachi/rev1/info.json b/keyboards/xelus/pachi/rev1/info.json
index 2fb0c55479..1b14340edd 100644
--- a/keyboards/xelus/pachi/rev1/info.json
+++ b/keyboards/xelus/pachi/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Xelus Pachi Rev 1",
+ "keyboard_name": "Pachi Rev 1",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x5041",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/xelus/pachi/rev1/keymaps/default/config.h b/keyboards/xelus/pachi/rev1/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/pachi/rev1/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/pachi/rev1/keymaps/via/config.h b/keyboards/xelus/pachi/rev1/keymaps/via/config.h
index fc3a2bd0b2..47bbf2bf81 100644
--- a/keyboards/xelus/pachi/rev1/keymaps/via/config.h
+++ b/keyboards/xelus/pachi/rev1/keymaps/via/config.h
@@ -18,5 +18,3 @@
// 3 layers or else it will not fit in EEPROM
#define DYNAMIC_KEYMAP_LAYER_COUNT 3
-
-#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/pachi/rgb/keymaps/default/config.h b/keyboards/xelus/pachi/rgb/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/pachi/rgb/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/pachi/rgb/keymaps/via/config.h b/keyboards/xelus/pachi/rgb/keymaps/via/config.h
index 1213e7a8f2..0e34ad2c1a 100644
--- a/keyboards/xelus/pachi/rgb/keymaps/via/config.h
+++ b/keyboards/xelus/pachi/rgb/keymaps/via/config.h
@@ -21,5 +21,3 @@
// Enable RGB Matrix
#define VIA_QMK_RGBLIGHT_ENABLE
-
-#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/pachi/rgb/rev1/config.h b/keyboards/xelus/pachi/rgb/rev1/config.h
index 2711b5c7a8..9eda99ed32 100644
--- a/keyboards/xelus/pachi/rgb/rev1/config.h
+++ b/keyboards/xelus/pachi/rgb/rev1/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5845 // "XE"
-#define PRODUCT_ID 0x5052 // "PR"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT Xelus Pachi RGB Rev1
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -30,7 +23,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B14, B13, B12, B2, A8, B15 }
#define MATRIX_COL_PINS { C13, C14, C15, H0, A0, A1, A2, A3, A4, A5, A6, A7, B0, B1, H1, B10, B11 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xelus/pachi/rgb/rev1/info.json b/keyboards/xelus/pachi/rgb/rev1/info.json
index 7448e755f0..24b6c4834a 100644
--- a/keyboards/xelus/pachi/rgb/rev1/info.json
+++ b/keyboards/xelus/pachi/rgb/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Xelus Pachi RGB Rev 1",
+ "keyboard_name": "Pachi RGB Rev 1",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x5052",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT_ansi_tsangan": "LAYOUT_tkl_ansi_tsangan"
},
diff --git a/keyboards/xelus/pachi/rgb/rev2/config.h b/keyboards/xelus/pachi/rgb/rev2/config.h
index 35a4cf238f..6295228c31 100644
--- a/keyboards/xelus/pachi/rgb/rev2/config.h
+++ b/keyboards/xelus/pachi/rgb/rev2/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5845 // "XE"
-#define PRODUCT_ID 0x5053 // "PR" + 1
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Xelus
-#define PRODUCT Xelus Pachi RGB Rev 2
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -30,7 +23,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { A5, A6, B0, A7, A8, B1, B4, B5, A15, B3, A13, A14 }
#define MATRIX_COL_PINS { C14, C15, A0, A1, A2, A3, A4, A10, A9}
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xelus/pachi/rgb/rev2/info.json b/keyboards/xelus/pachi/rgb/rev2/info.json
index 7448e755f0..46a4de5920 100644
--- a/keyboards/xelus/pachi/rgb/rev2/info.json
+++ b/keyboards/xelus/pachi/rgb/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Xelus Pachi RGB Rev 1",
+ "keyboard_name": "Pachi RGB Rev 2",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x5053",
+ "device_version": "0.0.2"
+ },
"layout_aliases": {
"LAYOUT_ansi_tsangan": "LAYOUT_tkl_ansi_tsangan"
},
diff --git a/keyboards/xelus/rs108/config.h b/keyboards/xelus/rs108/config.h
new file mode 100644
index 0000000000..990c0aca55
--- /dev/null
+++ b/keyboards/xelus/rs108/config.h
@@ -0,0 +1,67 @@
+/* Copyright 2022 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
+
+/* key matrix size */
+#define MATRIX_ROWS 12
+#define MATRIX_COLS 11
+
+#define MATRIX_ROW_PINS { B5, B6, B7, A1, A0, C13, B0, A7, A5, A4, A3, A2 }
+#define MATRIX_COL_PINS { A10, A8, B15, B14, B13, B12, B1, B10, B4, B3, A15 }
+
+// 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
+
+//Indicator
+#define LED_CAPS_LOCK_PIN A6
+#define LED_SCROLL_LOCK_PIN A13
+#define LED_NUM_LOCK_PIN A14
+
+// I2C config
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
+#define I2C1_SCL_PAL_MODE 4
+#define I2C1_SDA_PAL_MODE 4
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+// EEPROM config
+// 24LC32
+#define EXTERNAL_EEPROM_BYTE_COUNT 4096
+#define EXTERNAL_EEPROM_PAGE_SIZE 32
+#define EXTERNAL_EEPROM_ADDRESS_SIZE 2
+#define EXTERNAL_EEPROM_WRITE_TIME 5
+
+// More EEPROM for layers
+#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095
+
+// Hardware Defines
+#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+// HSE CLK
+#define STM32_HSECLK 16000000
+
+//Force NKRO
+#define FORCE_NKRO
diff --git a/keyboards/xelus/rs60/rev2/halconf.h b/keyboards/xelus/rs108/halconf.h
index b3e848852b..b3e848852b 100644
--- a/keyboards/xelus/rs60/rev2/halconf.h
+++ b/keyboards/xelus/rs108/halconf.h
diff --git a/keyboards/xelus/rs108/info.json b/keyboards/xelus/rs108/info.json
new file mode 100644
index 0000000000..c266a5193b
--- /dev/null
+++ b/keyboards/xelus/rs108/info.json
@@ -0,0 +1,125 @@
+{
+ "keyboard_name": "RS108",
+ "manufacturer": "Xelus",
+ "url": "",
+ "maintainer": "xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x5208",
+ "device_version": "0.0.2"
+ },
+ "layouts": {
+ "LAYOUT_108_fullsize_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": "PrtSc", "x": 15.25, "y": 0 },
+ { "label": "Scroll Lock", "x": 16.25, "y": 0 },
+ { "label": "Pause", "x": 17.25, "y": 0 },
+ { "label": "Num Lock", "x": 18.5, "y": 0 },
+ { "label": "MUTE", "x": 19.5, "y": 0 },
+ { "label": "VOLD", "x": 20.5, "y": 0 },
+ { "label": "VOLU", "x": 21.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": "Insert", "x": 15.25, "y": 1.25 },
+ { "label": "Home", "x": 16.25, "y": 1.25 },
+ { "label": "PgUp", "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": "PgDn", "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": 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": "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": "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": "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 },
+ { "label": "0", "x": 18.5, "y": 5.25, "w": 2 },
+ { "label": ".", "x": 20.5, "y": 5.25 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/xelus/rs108/keymaps/default/keymap.c b/keyboards/xelus/rs108/keymaps/default/keymap.c
new file mode 100644
index 0000000000..24f2ae7668
--- /dev/null
+++ b/keyboards/xelus/rs108/keymaps/default/keymap.c
@@ -0,0 +1,36 @@
+/* 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] = {
+ [0] = LAYOUT_108_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_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_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_CAPS, KC_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, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ [1] = LAYOUT_108_fullsize_ansi(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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, 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_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, 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/rs108/keymaps/via/keymap.c b/keyboards/xelus/rs108/keymaps/via/keymap.c
new file mode 100644
index 0000000000..359c9aef3f
--- /dev/null
+++ b/keyboards/xelus/rs108/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
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_108_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_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_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_CAPS, KC_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, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ ),
+
+ [1] = LAYOUT_108_fullsize_ansi(
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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, 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_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, 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_108_fullsize_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_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_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_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, 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_108_fullsize_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_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_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_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, 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/rs108/keymaps/via/rules.mk b/keyboards/xelus/rs108/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/xelus/rs108/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/xelus/rs60/rev2/mcuconf.h b/keyboards/xelus/rs108/mcuconf.h
index 2ef15d0720..2ef15d0720 100644
--- a/keyboards/xelus/rs60/rev2/mcuconf.h
+++ b/keyboards/xelus/rs108/mcuconf.h
diff --git a/keyboards/xelus/rs108/readme.md b/keyboards/xelus/rs108/readme.md
new file mode 100644
index 0000000000..d287387190
--- /dev/null
+++ b/keyboards/xelus/rs108/readme.md
@@ -0,0 +1,19 @@
+# RS108
+
+Full-size PCB in collaboration with Bisoromi and Mekibo
+
+* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
+* Hardware Supported: RS108
+* Hardware Availability: Custom Keyboard Group Buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make xelus/rs108:default
+
+Reset your keyboard in 3 ways:
+
+* Software reset on Fn [MO(1)] + Backspace
+* Bootmagic reset: hold down the top left key (usually escape) 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/rs108/rs108.c b/keyboards/xelus/rs108/rs108.c
new file mode 100644
index 0000000000..7c23446466
--- /dev/null
+++ b/keyboards/xelus/rs108/rs108.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 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 "rs108.h"
diff --git a/keyboards/xelus/rs108/rs108.h b/keyboards/xelus/rs108/rs108.h
new file mode 100644
index 0000000000..5ba9d70ce8
--- /dev/null
+++ b/keyboards/xelus/rs108/rs108.h
@@ -0,0 +1,42 @@
+/* Copyright 2022 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 XXXXX KC_NO
+
+#define LAYOUT_108_fullsize_ansi( \
+ K0000, K0001, K0101, K0002, K0102, K0003, K0103, K0004, K0104, K0005, K0105, K0006, K0106, K0007, K0107, K0008, K0108, K0009, K0109, K0010, \
+ K0200, K0300, K0201, K0301, K0202, K0302, K0203, K0303, K0204, K0304, K0205, K0305, K0206, K0306, K0207, K0307, K0208, K0308, K0209, K0309, K0210, \
+ K0400, K0500, K0401, K0501, K0402, K0502, K0403, K0503, K0404, K0504, K0405, K0505, K0406, K0506, K0407, K0507, K0408, K0508, K0409, K0509, \
+ K0600, K0700, K0601, K0701, K0602, K0702, K0603, K0703, K0604, K0704, K0605, K0705, K0706, K0708, K0609, K0709, K0610, \
+ K0800, K0900, K0801, K0901, K0802, K0902, K0803, K0903, K0804, K0904, K0805, K0906, K0907, K0908, K0809, K0909, \
+ K1000, K1100, K1001, K1102, K1104, K1005, K1006, K1106, K1007, K1107, K1008, K1009, K1109, K1010 \
+) { \
+ { K0000, K0001, K0002, K0003, K0004, K0005, K0006, K0007, K0008, K0009, K0010 }, \
+ { XXXXX, K0101, K0102, K0103, K0104, K0105, K0106, K0107, K0108, K0109, XXXXX }, \
+ { K0200, K0201, K0202, K0203, K0204, K0205, K0206, K0207, K0208, K0209, K0210 }, \
+ { K0300, K0301, K0302, K0303, K0304, K0305, K0306, K0307, K0308, K0309, XXXXX }, \
+ { K0400, K0401, K0402, K0403, K0404, K0405, K0406, K0407, K0408, K0409, XXXXX }, \
+ { K0500, K0501, K0502, K0503, K0504, K0505, K0506, K0507, K0508, K0509, XXXXX }, \
+ { K0600, K0601, K0602, K0603, K0604, K0605, XXXXX, XXXXX, XXXXX, K0609, K0610 }, \
+ { K0700, K0701, K0702, K0703, K0704, K0705, K0706, XXXXX, K0708, K0709, XXXXX }, \
+ { K0800, K0801, K0802, K0803, K0804, K0805, XXXXX, XXXXX, XXXXX, K0809, XXXXX }, \
+ { K0900, K0901, K0902, K0903, K0904, XXXXX, K0906, K0907, K0908, K0909, XXXXX }, \
+ { K1000, K1001, XXXXX, XXXXX, XXXXX, K1005, K1006, K1007, K1008, K1009, K1010 }, \
+ { K1100, XXXXX, K1102, XXXXX, K1104, XXXXX, K1106, K1107, XXXXX, K1109, XXXXX }, \
+}
diff --git a/keyboards/xelus/rs108/rules.mk b/keyboards/xelus/rs108/rules.mk
new file mode 100644
index 0000000000..46df2e4e8e
--- /dev/null
+++ b/keyboards/xelus/rs108/rules.mk
@@ -0,0 +1,27 @@
+# MCU name
+MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
+
+# 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
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+EEPROM_DRIVER = i2c
+
+# Save hid interface
+KEYBOARD_SHARED_EP = yes
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/xelus/rs60/info.json b/keyboards/xelus/rs60/info.json
index 3a0582fc7f..241f1cbe44 100644
--- a/keyboards/xelus/rs60/info.json
+++ b/keyboards/xelus/rs60/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "RS60",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x5253"
+ },
"layouts": {
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
diff --git a/keyboards/xelus/rs60/keymaps/default/config.h b/keyboards/xelus/rs60/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/rs60/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/rs60/keymaps/via/config.h b/keyboards/xelus/rs60/keymaps/via/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/rs60/keymaps/via/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/rs60/rev1/config.h b/keyboards/xelus/rs60/rev1/config.h
index ce0c2e1d02..00fbf6712b 100644
--- a/keyboards/xelus/rs60/rev1/config.h
+++ b/keyboards/xelus/rs60/rev1/config.h
@@ -15,20 +15,12 @@
*/
#pragma once
-// USB Device descriptor parameter
-#define VENDOR_ID 0x5845 // XE
-#define PRODUCT_ID 0x5253 // RS60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT RS60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { B3, B7, F0, F4, F1 }
#define MATRIX_COL_PINS { E6, D5, D3, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4}
-#define UNUSED_PINS
// COL2ROW or ROW2COL
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xelus/rs60/rev1/info.json b/keyboards/xelus/rs60/rev1/info.json
new file mode 100644
index 0000000000..cf78bc4ec7
--- /dev/null
+++ b/keyboards/xelus/rs60/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.1.0"
+ }
+}
diff --git a/keyboards/xelus/rs60/rev2/chconf.h b/keyboards/xelus/rs60/rev2/chconf.h
deleted file mode 100644
index a9608a4c75..0000000000
--- a/keyboards/xelus/rs60/rev2/chconf.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright 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/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/xelus/rs60/rev2/config.h b/keyboards/xelus/rs60/rev2/config.h
deleted file mode 100644
index 74258b1289..0000000000
--- a/keyboards/xelus/rs60/rev2/config.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Copyright 2022 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 0x5253 // RS60
-#define DEVICE_VER 0x0002
-#define MANUFACTURER Xelus
-#define PRODUCT RS60
-
-/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 14
-
-#define MATRIX_ROW_PINS { B15, B14, B12, B1, B0 }
-#define MATRIX_COL_PINS { B13, A7, A6, A5, A4, A3, A2, B7, B6, B5, B4, B3, A15, A14 }
-#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
-
-//Indicator
-#define LED_CAPS_LOCK_PIN A1
-
-// I2C config
-#define I2C1_SCL_PIN B8
-#define I2C1_SDA_PIN B9
-#define I2C1_SCL_PAL_MODE 4
-#define I2C1_SDA_PAL_MODE 4
-#define I2C1_CLOCK_SPEED 400000
-#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
-
-// EEPROM config
-// 24LC32
-#define EXTERNAL_EEPROM_BYTE_COUNT 4096
-#define EXTERNAL_EEPROM_PAGE_SIZE 32
-#define EXTERNAL_EEPROM_ADDRESS_SIZE 2
-#define EXTERNAL_EEPROM_WRITE_TIME 5
-
-// More EEPROM for layers
-#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095
-
-// Hardware Defines
-#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
-
-// HSE CLK
-#define STM32_HSECLK 16000000
-
-//Force NKRO
-#define FORCE_NKRO
diff --git a/keyboards/xelus/rs60/rev2/rev2.c b/keyboards/xelus/rs60/rev2/rev2.c
deleted file mode 100644
index f51e262ea0..0000000000
--- a/keyboards/xelus/rs60/rev2/rev2.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* 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 "rev2.h"
diff --git a/keyboards/xelus/rs60/rev2/rev2.h b/keyboards/xelus/rs60/rev2/rev2.h
deleted file mode 100644
index 9b8e841de5..0000000000
--- a/keyboards/xelus/rs60/rev2/rev2.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* 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, K3B, K3C, K3D, \
- K40, K41, K42, K45, K49, 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, XXX, K3B, K3C, K3D }, \
- { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D } \
-}
diff --git a/keyboards/xelus/rs60/rev2/rules.mk b/keyboards/xelus/rs60/rev2/rules.mk
deleted file mode 100644
index 95c0f0bc60..0000000000
--- a/keyboards/xelus/rs60/rev2/rules.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-# 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 = 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
-
-EEPROM_DRIVER = i2c
-
-# Save hid interface
-KEYBOARD_SHARED_EP = yes
-
-# Enter lower-power sleep mode when on the ChibiOS idle thread
-OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
-
-LAYOUTS = 60_ansi_split_bs_rshift
diff --git a/keyboards/xelus/rs60/rev2_0/config.h b/keyboards/xelus/rs60/rev2_0/config.h
new file mode 100644
index 0000000000..71eb5fb262
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2_0/config.h
@@ -0,0 +1,65 @@
+/* Copyright 2022 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
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+#define MATRIX_ROW_PINS { B15, B14, B12, B1, B0 }
+#define MATRIX_COL_PINS { B13, A7, A6, A5, A4, A3, A2, B7, B6, B5, B4, B3, A15, A14 }
+
+// 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
+
+//Indicator
+#define LED_CAPS_LOCK_PIN A1
+
+// I2C config
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
+#define I2C1_SCL_PAL_MODE 4
+#define I2C1_SDA_PAL_MODE 4
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+// EEPROM config
+// 24LC32
+#define EXTERNAL_EEPROM_BYTE_COUNT 4096
+#define EXTERNAL_EEPROM_PAGE_SIZE 32
+#define EXTERNAL_EEPROM_ADDRESS_SIZE 2
+#define EXTERNAL_EEPROM_WRITE_TIME 5
+
+// More EEPROM for layers
+#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095
+
+// Hardware Defines
+#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+// HSE CLK
+#define STM32_HSECLK 16000000
+
+//Force NKRO
+#define FORCE_NKRO
diff --git a/keyboards/xelus/rs60/rev2_0/halconf.h b/keyboards/xelus/rs60/rev2_0/halconf.h
new file mode 100644
index 0000000000..b3e848852b
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2_0/halconf.h
@@ -0,0 +1,26 @@
+/* Copyright 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/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/xelus/rs60/rev2_0/info.json b/keyboards/xelus/rs60/rev2_0/info.json
new file mode 100644
index 0000000000..f9f8400732
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2_0/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.2.0"
+ }
+}
diff --git a/keyboards/xelus/rs60/rev2_0/mcuconf.h b/keyboards/xelus/rs60/rev2_0/mcuconf.h
new file mode 100644
index 0000000000..2ef15d0720
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2_0/mcuconf.h
@@ -0,0 +1,42 @@
+/* Copyright 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/xelus/kangaroo/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
+
+// 64MHz core
+#define STM32_PLLM_VALUE 8
+#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_PPRE1_DIV1
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/xelus/rs60/rev2_0/readme.md b/keyboards/xelus/rs60/rev2_0/readme.md
new file mode 100644
index 0000000000..692e4a9f0d
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2_0/readme.md
@@ -0,0 +1,20 @@
+# RS60 Rev2 Prototype Version
+
+60% PCB with daughterboard in collaboration with Bisoromi and Mekibo
+
+* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
+* Hardware Supported: RS60
+* Hardware Availability: Custom Keyboard Group Buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make xelus/rs60/rev2_0:default
+ make xelus/rs60/rev2_0:via
+
+Reset your keyboard in 3 ways:
+
+* Software reset on Fn [MO(1)] + Backspace
+* Bootmagic reset: hold down the top left key (usually escape) 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/rs60/rev2_0/rev2_0.c b/keyboards/xelus/rs60/rev2_0/rev2_0.c
new file mode 100644
index 0000000000..d2abbda521
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2_0/rev2_0.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 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 "rev2_0.h"
diff --git a/keyboards/xelus/rs60/rev2_0/rev2_0.h b/keyboards/xelus/rs60/rev2_0/rev2_0.h
new file mode 100644
index 0000000000..dd43418964
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2_0/rev2_0.h
@@ -0,0 +1,34 @@
+/* Copyright 2022 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, K3B, K3C, K3D, \
+ K40, K41, K42, K45, K49, 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, XXX, K3B, K3C, K3D }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D } \
+}
diff --git a/keyboards/xelus/rs60/rev2_0/rules.mk b/keyboards/xelus/rs60/rev2_0/rules.mk
new file mode 100644
index 0000000000..df66f7dd37
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2_0/rules.mk
@@ -0,0 +1,28 @@
+# MCU name
+MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
+
+# 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
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+EEPROM_DRIVER = i2c
+
+# Save hid interface
+KEYBOARD_SHARED_EP = yes
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+
+LAYOUTS = 60_ansi_split_bs_rshift
diff --git a/keyboards/xelus/rs60/rev2_1/config.h b/keyboards/xelus/rs60/rev2_1/config.h
new file mode 100644
index 0000000000..9f5925f784
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2_1/config.h
@@ -0,0 +1,45 @@
+/* Copyright 2022 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
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+#define MATRIX_ROW_PINS { B15, B14, B12, B1, B0 }
+#define MATRIX_COL_PINS { B13, A7, A6, A5, A4, A3, A2, B7, B6, B5, B4, B3, A15, A14 }
+
+// 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
+
+//Indicator
+#define LED_CAPS_LOCK_PIN A1
+
+// Emulated EEPROM
+#define WEAR_LEVELING_LOGICAL_SIZE 2048
+#define WEAR_LEVELING_BACKING_SIZE WEAR_LEVELING_LOGICAL_SIZE*2
+
+//Force NKRO
+#define FORCE_NKRO
diff --git a/keyboards/xelus/rs60/rev2_1/info.json b/keyboards/xelus/rs60/rev2_1/info.json
new file mode 100644
index 0000000000..79768e0009
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2_1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.2.1"
+ }
+}
diff --git a/keyboards/xelus/rs60/rev2_1/readme.md b/keyboards/xelus/rs60/rev2_1/readme.md
new file mode 100644
index 0000000000..2454fec271
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2_1/readme.md
@@ -0,0 +1,20 @@
+# RS60 Rev2 Production Version
+
+60% PCB with daughterboard in collaboration with Bisoromi and Mekibo
+
+* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
+* Hardware Supported: RS60
+* Hardware Availability: Custom Keyboard Group Buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make xelus/rs60/rev2_1:default
+ make xelus/rs60/rev2_1:via
+
+Reset your keyboard in 3 ways:
+
+* Software reset on Fn [MO(1)] + Backspace
+* Bootmagic reset: hold down the top left key (usually escape) 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/rs60/rev2_1/rev2_1.c b/keyboards/xelus/rs60/rev2_1/rev2_1.c
new file mode 100644
index 0000000000..dc234542b5
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2_1/rev2_1.c
@@ -0,0 +1,16 @@
+/* Copyright 2022 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 "rev2_1.h"
diff --git a/keyboards/xelus/rs60/rev2_1/rev2_1.h b/keyboards/xelus/rs60/rev2_1/rev2_1.h
new file mode 100644
index 0000000000..dd43418964
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2_1/rev2_1.h
@@ -0,0 +1,34 @@
+/* Copyright 2022 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, K3B, K3C, K3D, \
+ K40, K41, K42, K45, K49, 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, XXX, K3B, K3C, K3D }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D } \
+}
diff --git a/keyboards/xelus/rs60/rev2_1/rules.mk b/keyboards/xelus/rs60/rev2_1/rules.mk
new file mode 100644
index 0000000000..da1f821141
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2_1/rules.mk
@@ -0,0 +1,29 @@
+# MCU name
+MCU = STM32L412
+
+# 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
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+EEPROM_DRIVER = wear_leveling
+WEAR_LEVELING_DRIVER = embedded_flash
+
+# Save hid interface
+KEYBOARD_SHARED_EP = yes
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+
+LAYOUTS = 60_ansi_split_bs_rshift
diff --git a/keyboards/xelus/rs60/rs60.h b/keyboards/xelus/rs60/rs60.h
index 81e4470db5..5a52d37a7f 100644
--- a/keyboards/xelus/rs60/rs60.h
+++ b/keyboards/xelus/rs60/rs60.h
@@ -19,6 +19,8 @@
#if defined(KEYBOARD_xelus_rs60_rev1)
#include "rev1.h"
-#elif defined(KEYBOARD_xelus_rs60_rev2)
- #include "rev2.h"
+#elif defined(KEYBOARD_xelus_rs60_rev2_0)
+ #include "rev2_0.h"
+#elif defined(KEYBOARD_xelus_rs60_rev2_1)
+ #include "rev2_1.h"
#endif
diff --git a/keyboards/xelus/snap96/config.h b/keyboards/xelus/snap96/config.h
index 96c5d24723..a42ecb1931 100644
--- a/keyboards/xelus/snap96/config.h
+++ b/keyboards/xelus/snap96/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-// USB Device descriptor parameter
-#define VENDOR_ID 0x5845 // XE
-#define PRODUCT_ID 0x5396 // Snap96
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT Snap96
-
// key matrix size
#define MATRIX_ROWS 12
#define MATRIX_COLS 10
@@ -16,7 +9,6 @@
// key matrix pins
#define MATRIX_ROW_PINS { B2, B1, B0, C7, F6, F7, B3, D1, D2, D7, B6, C6 }
#define MATRIX_COL_PINS { E6, D5, B7, D0, F5, D3, B4, B5, D4, D6 }
-#define UNUSED_PINS
// COL2ROW or ROW2COL
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xelus/snap96/info.json b/keyboards/xelus/snap96/info.json
index 5130c5db6e..74c7d6225a 100644
--- a/keyboards/xelus/snap96/info.json
+++ b/keyboards/xelus/snap96/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Snap96",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x5396",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/xelus/trinityxttkl/config.h b/keyboards/xelus/trinityxttkl/config.h
index 12745c54dc..d480a57ff8 100644
--- a/keyboards/xelus/trinityxttkl/config.h
+++ b/keyboards/xelus/trinityxttkl/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5845 // XE
-#define PRODUCT_ID 0x5854 // XT
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT TrinityXTtkl
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 19
diff --git a/keyboards/xelus/trinityxttkl/info.json b/keyboards/xelus/trinityxttkl/info.json
index de113f2193..724eaef114 100644
--- a/keyboards/xelus/trinityxttkl/info.json
+++ b/keyboards/xelus/trinityxttkl/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Trinity XT TKL",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x5854",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/xelus/valor/rev1/config.h b/keyboards/xelus/valor/rev1/config.h
index a45ecbc079..96e4835996 100644
--- a/keyboards/xelus/valor/rev1/config.h
+++ b/keyboards/xelus/valor/rev1/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5845 // "XE"
-#define PRODUCT_ID 0x5652 // Valor "VR"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT Xelus Valor
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B1, B2, C7, C6, B6 }
#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, B5, B4, D7, D6, D4, D5, D3, D2 }
-#define UNUSED_PINS
/* RGB Underglow */
#define RGB_DI_PIN B0
diff --git a/keyboards/xelus/valor/rev1/info.json b/keyboards/xelus/valor/rev1/info.json
index 33e367059c..7e8f874d2c 100644
--- a/keyboards/xelus/valor/rev1/info.json
+++ b/keyboards/xelus/valor/rev1/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Xelus Valor rev1",
+ "keyboard_name": "Valor Rev1",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x5652",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/xelus/valor/rev2/config.h b/keyboards/xelus/valor/rev2/config.h
index 8201373d23..44a16e9b7e 100644
--- a/keyboards/xelus/valor/rev2/config.h
+++ b/keyboards/xelus/valor/rev2/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5845 // "XE"
-#define PRODUCT_ID 0x5653 // Valor "VR" + 1
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT Xelus Valor Rev2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B11, B10, A3, A1, A2 }
#define MATRIX_COL_PINS { B2, B1, B0, A7, A6, A5, A4, A13, B7, B6, B5, B4, B3, A15, A14 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xelus/valor/rev2/info.json b/keyboards/xelus/valor/rev2/info.json
index 47fd2c3e2b..1d19fbad2d 100644
--- a/keyboards/xelus/valor/rev2/info.json
+++ b/keyboards/xelus/valor/rev2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Xelus Valor Rev2",
+ "keyboard_name": "Valor Rev2",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x5653",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/xelus/valor/rev2/keymaps/default/config.h b/keyboards/xelus/valor/rev2/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/valor/rev2/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/valor/rev2/keymaps/via/config.h b/keyboards/xelus/valor/rev2/keymaps/via/config.h
index 490964f272..e7fb31cb23 100644
--- a/keyboards/xelus/valor/rev2/keymaps/via/config.h
+++ b/keyboards/xelus/valor/rev2/keymaps/via/config.h
@@ -20,5 +20,3 @@
// More layers
#define DYNAMIC_KEYMAP_LAYER_COUNT 8
-
-#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/valor_frl_tkl/config.h b/keyboards/xelus/valor_frl_tkl/config.h
deleted file mode 100644
index c1c08878c0..0000000000
--- a/keyboards/xelus/valor_frl_tkl/config.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* Copyright 2020 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 0x4654 // "FT"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT Xelus Valor FRL TKL
-
-/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 17
-
-/* key matrix pins */
-#define MATRIX_ROW_PINS { A15, A14, A1, B3, B4 }
-#define MATRIX_COL_PINS { A9, A8, B15, B14, B13, B12, A0, B11, B10, B2, B1, B0, A7, A6, A5, A4, A3 }
-#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 OLED defines
-#define I2C1_SCL_PIN B8
-#define I2C1_SDA_PIN B9
-
-#define I2C1_SCL_PAL_MODE 1
-#define I2C1_SDA_PAL_MODE 1
-
-#define I2C1_TIMINGR_SCLDEL 3U
-#define I2C1_TIMINGR_SDADEL 1U
-#define I2C1_TIMINGR_SCLH 3U
-#define I2C1_TIMINGR_SCLL 9U
-
-// I2C EEPROM
-// 24LC64
-#define EEPROM_I2C_24LC64
-
-// Dynamic EEPROM
-// Something sensible or else VIA may crash
-// Users may enable more if they wish
-#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095
diff --git a/keyboards/xelus/valor_frl_tkl/info.json b/keyboards/xelus/valor_frl_tkl/info.json
index 36c95032fb..dbd017dc5c 100644
--- a/keyboards/xelus/valor_frl_tkl/info.json
+++ b/keyboards/xelus/valor_frl_tkl/info.json
@@ -1,7 +1,11 @@
{
- "keyboard_name": "Xelus Valor FRL TKL",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x4654"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/xelus/valor_frl_tkl/keymaps/default/config.h b/keyboards/xelus/valor_frl_tkl/keymaps/default/config.h
deleted file mode 100644
index 7b8de5510e..0000000000
--- a/keyboards/xelus/valor_frl_tkl/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2020 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/valor_frl_tkl/keymaps/default/keymap.c b/keyboards/xelus/valor_frl_tkl/keymaps/default/keymap.c
index 24c1571995..c7b3a1818f 100644
--- a/keyboards/xelus/valor_frl_tkl/keymaps/default/keymap.c
+++ b/keyboards/xelus/valor_frl_tkl/keymaps/default/keymap.c
@@ -17,7 +17,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
- 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_DEL, KC_BSPC, KC_INS, KC_HOME, 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_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_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_RGUI, KC_UP,
diff --git a/keyboards/xelus/valor_frl_tkl/keymaps/via/config.h b/keyboards/xelus/valor_frl_tkl/keymaps/via/config.h
deleted file mode 100644
index 7b8de5510e..0000000000
--- a/keyboards/xelus/valor_frl_tkl/keymaps/via/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2020 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/valor_frl_tkl/keymaps/via/keymap.c b/keyboards/xelus/valor_frl_tkl/keymaps/via/keymap.c
index 24d2627272..d73d3c646f 100644
--- a/keyboards/xelus/valor_frl_tkl/keymaps/via/keymap.c
+++ b/keyboards/xelus/valor_frl_tkl/keymaps/via/keymap.c
@@ -17,7 +17,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
- 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_DEL, KC_BSPC, KC_INS, KC_HOME, 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_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_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_RGUI, KC_UP,
diff --git a/keyboards/xelus/valor_frl_tkl/readme.md b/keyboards/xelus/valor_frl_tkl/readme.md
deleted file mode 100644
index da85ebbd47..0000000000
--- a/keyboards/xelus/valor_frl_tkl/readme.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Valor FRL TKL
-
-An Alice-esque FRL TKL keyboard PCB.
-
-* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
-* Hardware Supported: Valor FRL TKL
-* Hardware Availability: Custom keyboard group buys
-
-Make example for this keyboard (after setting up your build environment):
-
- make xelus/valor_frl_tkl: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/xelus/valor_frl_tkl/chconf.h b/keyboards/xelus/valor_frl_tkl/rev1/chconf.h
index 5b1d65cb74..5b1d65cb74 100644
--- a/keyboards/xelus/valor_frl_tkl/chconf.h
+++ b/keyboards/xelus/valor_frl_tkl/rev1/chconf.h
diff --git a/keyboards/xelus/valor_frl_tkl/rev1/config.h b/keyboards/xelus/valor_frl_tkl/rev1/config.h
new file mode 100644
index 0000000000..46c598c637
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev1/config.h
@@ -0,0 +1,60 @@
+/* Copyright 2020 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"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 17
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { A15, A14, A1, B3, B4 }
+#define MATRIX_COL_PINS { A9, A8, B15, B14, B13, B12, A0, B11, B10, B2, B1, B0, A7, A6, A5, A4, A3 }
+
+/* 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 OLED defines
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
+
+#define I2C1_SCL_PAL_MODE 1
+#define I2C1_SDA_PAL_MODE 1
+
+#define I2C1_TIMINGR_SCLDEL 3U
+#define I2C1_TIMINGR_SDADEL 1U
+#define I2C1_TIMINGR_SCLH 3U
+#define I2C1_TIMINGR_SCLL 9U
+
+// I2C EEPROM
+// 24LC64
+#define EEPROM_I2C_24LC64
+
+// Dynamic EEPROM
+// Something sensible or else VIA may crash
+// Users may enable more if they wish
+#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095
diff --git a/keyboards/xelus/valor_frl_tkl/halconf.h b/keyboards/xelus/valor_frl_tkl/rev1/halconf.h
index 1dbf1a4fe0..1dbf1a4fe0 100644
--- a/keyboards/xelus/valor_frl_tkl/halconf.h
+++ b/keyboards/xelus/valor_frl_tkl/rev1/halconf.h
diff --git a/keyboards/xelus/valor_frl_tkl/rev1/info.json b/keyboards/xelus/valor_frl_tkl/rev1/info.json
new file mode 100644
index 0000000000..694c988376
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Valor FRL TKL Rev1",
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/xelus/valor_frl_tkl/mcuconf.h b/keyboards/xelus/valor_frl_tkl/rev1/mcuconf.h
index 6013ff13fb..6013ff13fb 100644
--- a/keyboards/xelus/valor_frl_tkl/mcuconf.h
+++ b/keyboards/xelus/valor_frl_tkl/rev1/mcuconf.h
diff --git a/keyboards/xelus/valor_frl_tkl/rev1/readme.md b/keyboards/xelus/valor_frl_tkl/rev1/readme.md
new file mode 100644
index 0000000000..7069a57f06
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev1/readme.md
@@ -0,0 +1,13 @@
+# Valor FRL TKL
+
+An Alice-esque FRL TKL keyboard PCB.
+
+* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
+* Hardware Supported: Valor FRL TKL
+* Hardware Availability: Custom keyboard group buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make xelus/valor_frl_tkl/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/xelus/valor_frl_tkl/rev1/rev1.c b/keyboards/xelus/valor_frl_tkl/rev1/rev1.c
new file mode 100644
index 0000000000..d26d2021f9
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev1/rev1.c
@@ -0,0 +1,24 @@
+/* Copyright 2020 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/>.
+ */
+
+// Nothing to see here, move along... ;-)
+
+#include "rev1.h"
+
+void board_init(void) {
+ SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
+ SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP);
+}
diff --git a/keyboards/xelus/valor_frl_tkl/rev1/rev1.h b/keyboards/xelus/valor_frl_tkl/rev1/rev1.h
new file mode 100644
index 0000000000..94ae0fcbab
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev1/rev1.h
@@ -0,0 +1,35 @@
+/* Copyright 2020 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, 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, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K315, \
+ K400, K402, K404, K405, K407, K409, K412, K414, K415, K416 \
+) { \
+ { 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, ____, ____, ____ }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, ____, K315, ____ }, \
+ { K400, ____, K402, ____, K404, K405, ____, K407, ____, K409, ____, ____, K412, ____, K414, K415, K416 } \
+}
diff --git a/keyboards/xelus/valor_frl_tkl/rules.mk b/keyboards/xelus/valor_frl_tkl/rev1/rules.mk
index 1c71897c3e..1c71897c3e 100644
--- a/keyboards/xelus/valor_frl_tkl/rules.mk
+++ b/keyboards/xelus/valor_frl_tkl/rev1/rules.mk
diff --git a/keyboards/xelus/valor_frl_tkl/rev2_0/.noci b/keyboards/xelus/valor_frl_tkl/rev2_0/.noci
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev2_0/.noci
diff --git a/keyboards/xelus/valor_frl_tkl/rev2_0/config.h b/keyboards/xelus/valor_frl_tkl/rev2_0/config.h
new file mode 100644
index 0000000000..4f42348b56
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev2_0/config.h
@@ -0,0 +1,40 @@
+/* Copyright 2022 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
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 17
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { A15, A14, A10, B3, B4 }
+#define MATRIX_COL_PINS { A9, A8, B15, B14, B13, B12, B9, B1, B0, A7, A6, A5, A4, A3, A2, A1, A0 }
+#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
+
+#define STM32_HSECLK 16000000
diff --git a/keyboards/xelus/valor_frl_tkl/rev2_0/info.json b/keyboards/xelus/valor_frl_tkl/rev2_0/info.json
new file mode 100644
index 0000000000..1764cc45eb
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev2_0/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Valor FRL TKL Rev2.0",
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/xelus/valor_frl_tkl/rev2_0/mcuconf.h b/keyboards/xelus/valor_frl_tkl/rev2_0/mcuconf.h
new file mode 100644
index 0000000000..d7550e5c76
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev2_0/mcuconf.h
@@ -0,0 +1,34 @@
+/* Copyright 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/>.
+ */
+
+#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
+
+// 96MHz core
+#define STM32_PLLM_VALUE 8
+#define STM32_PLLN_VALUE 96
+#define STM32_PLLP_VALUE 2
+#define STM32_PLLQ_VALUE 4
+#define STM32_PPRE1 STM32_PPRE1_DIV2
+#define STM32_PPRE2 STM32_PPRE1_DIV1
diff --git a/keyboards/xelus/valor_frl_tkl/rev2_0/readme.md b/keyboards/xelus/valor_frl_tkl/rev2_0/readme.md
new file mode 100644
index 0000000000..3a1b4d53b5
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev2_0/readme.md
@@ -0,0 +1,79 @@
+# Valor FRL TKL Rev2.0
+
+An Alice-esque FRL TKL keyboard PCB.
+
+* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
+* Hardware Supported: Valor FRL TKL
+* Hardware Availability: Custom keyboard group buys
+
+### Important Note
+This version uses the pin PA9 which is un-usable with the current ChibiOS. The first column will be disabled if this firmware is compiled normally.
+A patch is required locally to use this version.
+Please use this patch:
+```diff --git a/os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.c b/os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.c
+index 0f48d1fd0..38aff8554 100644
+--- a/os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.c
++++ b/os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.c
+@@ -40,18 +40,18 @@
+
+ #if STM32_OTG_STEPPING == 1
+ #if defined(BOARD_OTG_NOVBUSSENS)
+-#define GCCFG_INIT_VALUE (GCCFG_NOVBUSSENS | GCCFG_VBUSASEN | \
+- GCCFG_VBUSBSEN | GCCFG_PWRDWN)
++#define GCCFG_INIT_VALUE (GCCFG_NOVBUSSENS | \
++ GCCFG_PWRDWN)
+ #else
+-#define GCCFG_INIT_VALUE (GCCFG_VBUSASEN | GCCFG_VBUSBSEN | \
++#define GCCFG_INIT_VALUE (GCCFG_NOVBUSSENS | \
+ GCCFG_PWRDWN)
+ #endif
+
+ #elif STM32_OTG_STEPPING == 2
+ #if defined(BOARD_OTG_NOVBUSSENS)
+-#define GCCFG_INIT_VALUE GCCFG_PWRDWN
++#define GCCFG_INIT_VALUE (GCCFG_NOVBUSSENS | GCCFG_PWRDWN)
+ #else
+-#define GCCFG_INIT_VALUE (GCCFG_VBDEN | GCCFG_PWRDWN)
++#define GCCFG_INIT_VALUE (GCCFG_NOVBUSSENS | GCCFG_VBDEN | GCCFG_PWRDWN)
+ #endif
+
+ #endif
+@@ -815,7 +815,7 @@ void usb_lld_start(USBDriver *usbp) {
+ otgp->PCGCCTL = 0;
+
+ /* VBUS sensing and transceiver enabled.*/
+- otgp->GOTGCTL = GOTGCTL_BVALOEN | GOTGCTL_BVALOVAL;
++ // otgp->GOTGCTL = GOTGCTL_BVALOEN | GOTGCTL_BVALOVAL;
+
+ #if defined(BOARD_OTG2_USES_ULPI)
+ #if STM32_USB_USE_OTG1
+diff --git a/os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.h b/os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.h
+index 69a5ab603..200b4b91a 100644
+--- a/os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.h
++++ b/os/hal/ports/STM32/LLD/OTGv1/hal_usb_lld.h
+@@ -534,7 +534,7 @@ struct USBDriver {
+ * @notapi
+ */
+ #if (STM32_OTG_STEPPING == 1) || defined(__DOXYGEN__)
+-#define usb_lld_connect_bus(usbp) ((usbp)->otg->GCCFG |= GCCFG_VBUSBSEN)
++#define usb_lld_connect_bus(usbp)
+ #else
+ #define usb_lld_connect_bus(usbp) ((usbp)->otg->DCTL &= ~DCTL_SDIS)
+ #endif
+@@ -545,7 +545,7 @@ struct USBDriver {
+ * @notapi
+ */
+ #if (STM32_OTG_STEPPING == 1) || defined(__DOXYGEN__)
+-#define usb_lld_disconnect_bus(usbp) ((usbp)->otg->GCCFG &= ~GCCFG_VBUSBSEN)
++#define usb_lld_disconnect_bus(usbp)
+ #else
+ #define usb_lld_disconnect_bus(usbp) ((usbp)->otg->DCTL |= DCTL_SDIS)
+ #endif
+```
+
+Make example for this keyboard (after setting up your build environment):
+
+ make xelus/valor_frl_tkl/rev2_0:default
+ make xelus/valor_frl_tkl/rev2_0: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).
diff --git a/keyboards/xelus/valor_frl_tkl/rev2_0/rules.mk b/keyboards/xelus/valor_frl_tkl/rev2_0/rules.mk
new file mode 100644
index 0000000000..0adbc4f383
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev2_0/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = STM32F411
+BOARD = GENERIC_STM32_F411XE
+
+# 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
+
+KEYBOARD_SHARED_EP = yes
diff --git a/keyboards/xelus/valor_frl_tkl/rev2_1/config.h b/keyboards/xelus/valor_frl_tkl/rev2_1/config.h
new file mode 100644
index 0000000000..2ab1350753
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev2_1/config.h
@@ -0,0 +1,40 @@
+/* Copyright 2022 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
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 17
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { A15, A14, A13, B3, B4 }
+#define MATRIX_COL_PINS { A10, A8, B15, B14, B13, B12, B9, B1, B0, A7, A6, A5, A4, A3, A2, A1, A0 }
+#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
+
+#define STM32_HSECLK 16000000
diff --git a/keyboards/xelus/valor_frl_tkl/rev2_1/info.json b/keyboards/xelus/valor_frl_tkl/rev2_1/info.json
new file mode 100644
index 0000000000..1c7fb1dd6b
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev2_1/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "Valor FRL TKL Rev2.2",
+ "usb": {
+ "device_version": "0.0.3"
+ }
+}
diff --git a/keyboards/xelus/valor_frl_tkl/rev2_1/mcuconf.h b/keyboards/xelus/valor_frl_tkl/rev2_1/mcuconf.h
new file mode 100644
index 0000000000..f25665e06e
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev2_1/mcuconf.h
@@ -0,0 +1,34 @@
+/* Copyright 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/>.
+ */
+
+#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
+
+// 84MHz core
+#define STM32_PLLM_VALUE 8
+#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_PPRE1_DIV1
diff --git a/keyboards/xelus/valor_frl_tkl/rev2_1/readme.md b/keyboards/xelus/valor_frl_tkl/rev2_1/readme.md
new file mode 100644
index 0000000000..c0f409b3ae
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev2_1/readme.md
@@ -0,0 +1,14 @@
+# Valor FRL TKL Rev2.1
+
+An Alice-esque FRL TKL keyboard PCB.
+
+* Keyboard Maintainer: [Xelus22](https://github.com/Xelus22)
+* Hardware Supported: Valor FRL TKL
+* Hardware Availability: Custom keyboard group buys
+
+Make example for this keyboard (after setting up your build environment):
+
+ make xelus/valor_frl_tkl/rev2_1:default
+ make xelus/valor_frl_tkl/rev2_1: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).
diff --git a/keyboards/xelus/valor_frl_tkl/rev2_1/rules.mk b/keyboards/xelus/valor_frl_tkl/rev2_1/rules.mk
new file mode 100644
index 0000000000..6b2ee6520d
--- /dev/null
+++ b/keyboards/xelus/valor_frl_tkl/rev2_1/rules.mk
@@ -0,0 +1,24 @@
+# MCU name
+MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
+
+# 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
+
+KEYBOARD_SHARED_EP = yes
diff --git a/keyboards/xelus/valor_frl_tkl/valor_frl_tkl.c b/keyboards/xelus/valor_frl_tkl/valor_frl_tkl.c
index 08e08068b9..b5eca9abde 100644
--- a/keyboards/xelus/valor_frl_tkl/valor_frl_tkl.c
+++ b/keyboards/xelus/valor_frl_tkl/valor_frl_tkl.c
@@ -17,8 +17,3 @@
// Nothing to see here, move along... ;-)
#include "valor_frl_tkl.h"
-
-void board_init(void) {
- SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
- SYSCFG->CFGR1 &= ~(SYSCFG_CFGR1_SPI2_DMA_RMP);
-}
diff --git a/keyboards/xelus/valor_frl_tkl/valor_frl_tkl.h b/keyboards/xelus/valor_frl_tkl/valor_frl_tkl.h
index 757f64adf9..94ae0fcbab 100644
--- a/keyboards/xelus/valor_frl_tkl/valor_frl_tkl.h
+++ b/keyboards/xelus/valor_frl_tkl/valor_frl_tkl.h
@@ -17,7 +17,7 @@
#pragma once
#include "quantum.h"
-
+
#define ____ KC_NO
#define LAYOUT_all( \
diff --git a/keyboards/xelus/xs60/config.h b/keyboards/xelus/xs60/config.h
index 3a72af86ad..a61cd22e53 100644
--- a/keyboards/xelus/xs60/config.h
+++ b/keyboards/xelus/xs60/config.h
@@ -16,13 +16,6 @@
#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
@@ -30,7 +23,6 @@
/* 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
diff --git a/keyboards/xelus/xs60/info.json b/keyboards/xelus/xs60/info.json
index 55665b0399..089d728b01 100644
--- a/keyboards/xelus/xs60/info.json
+++ b/keyboards/xelus/xs60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "XS60",
+ "manufacturer": "Xelus",
"url": "",
"maintainer": "Xelus22",
+ "usb": {
+ "vid": "0x5845",
+ "pid": "0x5860",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
diff --git a/keyboards/xelus/xs60/keymaps/default/config.h b/keyboards/xelus/xs60/keymaps/default/config.h
deleted file mode 100644
index 5d972dd48c..0000000000
--- a/keyboards/xelus/xs60/keymaps/default/config.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* 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 QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xelus/xs60/keymaps/via/config.h b/keyboards/xelus/xs60/keymaps/via/config.h
index b608adcfc4..8c0ed0c6e3 100644
--- a/keyboards/xelus/xs60/keymaps/via/config.h
+++ b/keyboards/xelus/xs60/keymaps/via/config.h
@@ -17,5 +17,3 @@
// More layers
#define DYNAMIC_KEYMAP_LAYER_COUNT 8
-
-#define QMK_KEYS_PER_SCAN 4
diff --git a/keyboards/xenon/config.h b/keyboards/xenon/config.h
index b14861140c..c648ca66d5 100644
--- a/keyboards/xenon/config.h
+++ b/keyboards/xenon/config.h
@@ -19,12 +19,6 @@ 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 0x3404
-#define DEVICE_VER 0x0001
-#define PRODUCT Xenon
-
/* key matrix size */
/* Rows are doubled up */
#define MATRIX_ROWS 10
diff --git a/keyboards/xenon/info.json b/keyboards/xenon/info.json
index fd1146a1d4..9caa493f86 100644
--- a/keyboards/xenon/info.json
+++ b/keyboards/xenon/info.json
@@ -1,8 +1,13 @@
{
"keyboard_name": "Xenon",
+ "manufacturer": "narinari",
"url": "https://github.com/narinari/xenon-keyboard",
"maintainer": "Kyrremann",
- "manufacturer": "narinari",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x3404",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/xiaomi/mk02/config.h b/keyboards/xiaomi/mk02/config.h
index 1b029d6b49..93e4b89291 100644
--- a/keyboards/xiaomi/mk02/config.h
+++ b/keyboards/xiaomi/mk02/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP FALSE
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0B91
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xiaomi
-#define PRODUCT MK02
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
diff --git a/keyboards/xiaomi/mk02/info.json b/keyboards/xiaomi/mk02/info.json
index 6f216802f6..58c3f3cbc3 100644
--- a/keyboards/xiaomi/mk02/info.json
+++ b/keyboards/xiaomi/mk02/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "Xiaomi MK02",
+ "keyboard_name": "MK02",
+ "manufacturer": "Xiaomi",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0B91",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
diff --git a/keyboards/xiudi/xd002/config.h b/keyboards/xiudi/xd002/config.h
index c17d816cfc..46896531a9 100644
--- a/keyboards/xiudi/xd002/config.h
+++ b/keyboards/xiudi/xd002/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7844 // "XD"
-#define PRODUCT_ID 0x0202
-#define DEVICE_VER 0x0001
-#define MANUFACTURER XIUDI
-#define PRODUCT XD002
-
/* matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 2
diff --git a/keyboards/xiudi/xd002/info.json b/keyboards/xiudi/xd002/info.json
index 0ef0e8f21a..f06e823a88 100644
--- a/keyboards/xiudi/xd002/info.json
+++ b/keyboards/xiudi/xd002/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "xd002",
+ "keyboard_name": "XD002",
+ "manufacturer": "XIUDI",
"url": "https://kprepublic.com/products/xd002-xiudi-2-custom-mechanical-keyboard-2-keys-underglow-and-switch-rgb-pcb-programmed-hot-swappable-macro-key-aluminum-case",
"maintainer": "zvecr",
+ "usb": {
+ "vid": "0x7844",
+ "pid": "0x0202",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/xiudi/xd002/keymaps/tap_dance/config.h b/keyboards/xiudi/xd002/keymaps/tap_dance/config.h
index b86e862d30..1fd93f875f 100644
--- a/keyboards/xiudi/xd002/keymaps/tap_dance/config.h
+++ b/keyboards/xiudi/xd002/keymaps/tap_dance/config.h
@@ -1,3 +1,4 @@
#pragma once
#define TAPPING_TERM 500
+#define PERMISSIVE_HOLD
diff --git a/keyboards/xiudi/xd004/info.json b/keyboards/xiudi/xd004/info.json
index 26e418943f..e9876f8c64 100644
--- a/keyboards/xiudi/xd004/info.json
+++ b/keyboards/xiudi/xd004/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "XD004",
+ "manufacturer": "XIUDI",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7844",
+ "pid": "0x0404",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"L", "x":0, "y":0}, {"label":"O", "x":1, "y":0}, {"label":"V", "x":2, "y":0}, {"label":"E", "x":3, "y":0}]
diff --git a/keyboards/xiudi/xd004/v1/config.h b/keyboards/xiudi/xd004/v1/config.h
index 826540de4c..b2e36f4704 100644
--- a/keyboards/xiudi/xd004/v1/config.h
+++ b/keyboards/xiudi/xd004/v1/config.h
@@ -25,14 +25,6 @@ where some things are disabled to save space as well.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7844 // "XD"
-#define PRODUCT_ID 0x0404
-#define DEVICE_VER 0x0001
-// Note: unsure about manufacturer
-#define MANUFACTURER XIUDI
-#define PRODUCT XD004 v1
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 4
@@ -46,7 +38,6 @@ where some things are disabled to save space as well.
{ \
{ D3, D0, C4, B4 } \
}
-#define UNUSED_PINS
/* Backlight Setup */
// Looks like each backlight LED is connected to a single output, D5 is the one furtherst away from USB port
diff --git a/keyboards/xiudi/xd60/info.json b/keyboards/xiudi/xd60/info.json
index 8ea3d6a4ff..04e863a3bc 100644
--- a/keyboards/xiudi/xd60/info.json
+++ b/keyboards/xiudi/xd60/info.json
@@ -1,6 +1,10 @@
{
- "keyboard_name": "XD60",
+ "manufacturer": "XIUDI",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7844",
+ "device_version": "0.0.1"
+ },
"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}, {"x":13, "y":0}, {"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}, {"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"label":"Shift", "x":0, "y":3}, {"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":"Shift", "x":12, "y":3}, {"x":13, "y":3}, {"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}, {"label":"Win", "x":11, "y":4}, {"label":"Menu", "x":12, "y":4}, {"label":"Ctrl", "x":13, "y":4}, {"x":14, "y":4}]
diff --git a/keyboards/xiudi/xd60/keymaps/Jos/keymap.c b/keyboards/xiudi/xd60/keymaps/Jos/keymap.c
index c57f634f2b..8e28156aa5 100644
--- a/keyboards/xiudi/xd60/keymaps/Jos/keymap.c
+++ b/keyboards/xiudi/xd60/keymaps/Jos/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 1: Function 1 Layers
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_PAUS, KC_PSCR, \
+ QK_BOOT, KC_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_PSCR, \
KC_TRNS, KC_BTN1, KC_MS_U, 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_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MPRV, KC_MNXT, KC_MSTP, KC_TRNS, KC_NO, KC_TRNS, \
KC_TRNS, TG(3), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_PGUP, KC_TRNS, \
diff --git a/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c b/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c
index e630851db5..1dfda06f2f 100644
--- a/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c
+++ b/keyboards/xiudi/xd60/keymaps/ansi_split_bs_rshift_space/keymap.c
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_LSFT, KC_SPC, KC_ESC, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT
),
[1] = LAYOUT_60_ansi_split_bs_rshift_space(
- 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,
+ QK_BOOT, KC_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,
diff --git a/keyboards/xiudi/xd60/keymaps/birkir/keymap.c b/keyboards/xiudi/xd60/keymaps/birkir/keymap.c
index fe7cd60662..1e0dcacc22 100644
--- a/keyboards/xiudi/xd60/keymaps/birkir/keymap.c
+++ b/keyboards/xiudi/xd60/keymaps/birkir/keymap.c
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 2: Cool Layer
LAYOUT_all(
- RESET, BL_DEC, BL_INC, BL_ON, BL_OFF, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_MODE_PLAIN, KC_TRNS, \
+ QK_BOOT, BL_DEC, BL_INC, BL_ON, BL_OFF, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_MODE_PLAIN, KC_TRNS, \
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, TG(2), \
@@ -47,7 +47,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
edit = false;
}
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case 1:
rgblight_mode(1);
rgblight_setrgb(0xD3, 0x7F, 0xED);
diff --git a/keyboards/xiudi/xd60/keymaps/crd_ansi/keymap.c b/keyboards/xiudi/xd60/keymaps/crd_ansi/keymap.c
index 6964ca3158..584611c53c 100644
--- a/keyboards/xiudi/xd60/keymaps/crd_ansi/keymap.c
+++ b/keyboards/xiudi/xd60/keymaps/crd_ansi/keymap.c
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_FL] = LAYOUT_60_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_HOME, KC_UP, KC_END, _______, _______, _______, _______, KC_MUTE, _______, _______, KC_PGDN, KC_PGUP, RESET,
+ _______, KC_HOME, KC_UP, KC_END, _______, _______, _______, _______, KC_MUTE, _______, _______, KC_PGDN, KC_PGUP, QK_BOOT,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_SLCK, KC_VOLD, KC_VOLU, KC_PAUS, _______, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, RGB_VAI, RGB_MOD, _______,
_______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/xiudi/xd60/keymaps/finnish/keymap.c b/keyboards/xiudi/xd60/keymaps/finnish/keymap.c
index 84a4a63afe..38dfd2ca35 100644
--- a/keyboards/xiudi/xd60/keymaps/finnish/keymap.c
+++ b/keyboards/xiudi/xd60/keymaps/finnish/keymap.c
@@ -16,7 +16,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 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,
+ QK_BOOT, KC_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,
diff --git a/keyboards/xiudi/xd60/keymaps/fvolpe83/keymap.c b/keyboards/xiudi/xd60/keymaps/fvolpe83/keymap.c
index 0a18678dcc..5817e61dbf 100755
--- a/keyboards/xiudi/xd60/keymaps/fvolpe83/keymap.c
+++ b/keyboards/xiudi/xd60/keymaps/fvolpe83/keymap.c
@@ -16,7 +16,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_NO, KC_TRNS, KC_RCTL),
[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, 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, QK_BOOT,
KC_NO, BL_TOGG, BL_STEP, BL_ON, BL_OFF, BL_INC, BL_DEC, BL_BRTG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, RGB_SPI, RGB_SPD, KC_NO, KC_NO,
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, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
diff --git a/keyboards/xiudi/xd60/keymaps/kmontag42/keymap.c b/keyboards/xiudi/xd60/keymaps/kmontag42/keymap.c
index 8e081c6731..30e6e688e8 100644
--- a/keyboards/xiudi/xd60/keymaps/kmontag42/keymap.c
+++ b/keyboards/xiudi/xd60/keymaps/kmontag42/keymap.c
@@ -14,7 +14,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 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, \
+ QK_BOOT, KC_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_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, \
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Loop
void matrix_scan_user(void) {
static uint8_t old_layer = 255;
- uint8_t new_layer = biton32(layer_state);
+ uint8_t new_layer = get_highest_layer(layer_state);
if (old_layer != new_layer) {
switch (new_layer) {
diff --git a/keyboards/xiudi/xd60/keymaps/krusli/keymap.c b/keyboards/xiudi/xd60/keymaps/krusli/keymap.c
index 697d6d7f1f..92591567d3 100644
--- a/keyboards/xiudi/xd60/keymaps/krusli/keymap.c
+++ b/keyboards/xiudi/xd60/keymaps/krusli/keymap.c
@@ -15,7 +15,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_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_DEL, _______, \
- RESET, RGB_TOG, RGB_MOD, RGB_HUI, RGB_VAD, RGB_VAI, RGB_SAD, RGB_SAI, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_INS, \
+ QK_BOOT, RGB_TOG, RGB_MOD, RGB_HUI, RGB_VAD, RGB_VAI, RGB_SAD, RGB_SAI, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, KC_INS, \
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_NO, _______, \
_______, KC_NO, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/keyboards/xiudi/xd60/keymaps/melka/keymap.c b/keyboards/xiudi/xd60/keymaps/melka/keymap.c
index bb3159981f..b80a8da5ae 100644
--- a/keyboards/xiudi/xd60/keymaps/melka/keymap.c
+++ b/keyboards/xiudi/xd60/keymaps/melka/keymap.c
@@ -46,7 +46,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 2: RGB Layer
LAYOUT_melka(
- RGB_TOG, RGB_M_P, RGB_RMOD, RGB_MOD, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, _______, _______, RESET,
+ RGB_TOG, RGB_M_P, RGB_RMOD, RGB_MOD, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, RGB_M_T, _______, _______, QK_BOOT,
_______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
TO(0), _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, PASS_A, PASS_B, _______, _______,
diff --git a/keyboards/xiudi/xd60/keymaps/petesmom/keymap.c b/keyboards/xiudi/xd60/keymaps/petesmom/keymap.c
index d6c9035c28..b48d997ecf 100644
--- a/keyboards/xiudi/xd60/keymaps/petesmom/keymap.c
+++ b/keyboards/xiudi/xd60/keymaps/petesmom/keymap.c
@@ -21,7 +21,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_TRNS, RGB_MOD, RGB_VAI, KC_TRNS, KC_TRNS, KC_HOME, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MRWD, KC_MFFD, KC_MSTP, \
KC_TRNS, RGB_TOG, RGB_VAD, KC_MUTE, KC_VOLU, KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_TRNS, KC_TRNS, KC_NO, KC_ENT, \
- KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_CIRC, KC_AMPR, KC_TRNS, KC_TRNS, KC_TRNS,KC__VOLDOWN,KC__VOLUP,KC_NO, KC__MUTE,KC_PGUP, RESET, \
+ KC_TRNS, KC_NO, KC_TRNS, KC_TRNS, KC_CIRC, KC_AMPR, KC_TRNS, KC_TRNS, KC_TRNS,KC__VOLDOWN,KC__VOLUP,KC_NO, KC__MUTE,KC_PGUP, QK_BOOT, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_SPC, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDOWN,KC_END
),
diff --git a/keyboards/xiudi/xd60/keymaps/rooski/keymap.c b/keyboards/xiudi/xd60/keymaps/rooski/keymap.c
index 71d5451dc4..9eb68ca368 100644
--- a/keyboards/xiudi/xd60/keymaps/rooski/keymap.c
+++ b/keyboards/xiudi/xd60/keymaps/rooski/keymap.c
@@ -48,9 +48,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 2: Lighting Keys
[_LK] = LAYOUT_all(
- TO(_BL), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, \
+ TO(_BL), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, QK_BOOT, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, \
- RESET , KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ QK_BOOT, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, RGB_SAD, RGB_SAI, RGB_HUD, RGB_HUI, XXXXXXX, XXXXXXX, RGB_VAI, BL_STEP, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TO(_BL), XXXXXXX, RGB_TOG, RGB_VAD, RGB_MOD),
diff --git a/keyboards/xiudi/xd60/keymaps/stanleylai/keymap.c b/keyboards/xiudi/xd60/keymaps/stanleylai/keymap.c
index a827744c14..d1417281ee 100644
--- a/keyboards/xiudi/xd60/keymaps/stanleylai/keymap.c
+++ b/keyboards/xiudi/xd60/keymaps/stanleylai/keymap.c
@@ -13,7 +13,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// 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, \
+ QK_BOOT, KC_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_CAPS, KC_MPRV, KC_UP, KC_MNXT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, \
MO(1), KC_LEFT, KC_DOWN, KC_RIGHT,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ENT, \
KC_LSFT, KC_NO, KC_VOLD, KC_MUTE, KC_VOLU,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_INS, \
diff --git a/keyboards/xiudi/xd60/keymaps/suryanisaac/keymap.c b/keyboards/xiudi/xd60/keymaps/suryanisaac/keymap.c
index fa0be3d9d3..46e9b5aae6 100644
--- a/keyboards/xiudi/xd60/keymaps/suryanisaac/keymap.c
+++ b/keyboards/xiudi/xd60/keymaps/suryanisaac/keymap.c
@@ -24,6 +24,6 @@
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, 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_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_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, TG(1)),
- [1] = 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_HOME, KC_PGUP, KC_UP, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_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)
+ [1] = LAYOUT_60_ansi(QK_BOOT, KC_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_HOME, KC_PGUP, KC_UP, KC_PGDN, KC_END, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_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)
};
diff --git a/keyboards/xiudi/xd60/rev2/config.h b/keyboards/xiudi/xd60/rev2/config.h
index 38cfa415ff..d5e8642e59 100644
--- a/keyboards/xiudi/xd60/rev2/config.h
+++ b/keyboards/xiudi/xd60/rev2/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7844 // "XD"
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER XIUDI
-#define PRODUCT XD60v2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 }
-#define UNUSED_PINS
/* Backlight Setup */
#define BACKLIGHT_PIN F5
diff --git a/keyboards/xiudi/xd60/rev2/info.json b/keyboards/xiudi/xd60/rev2/info.json
new file mode 100644
index 0000000000..bceb5bc6cb
--- /dev/null
+++ b/keyboards/xiudi/xd60/rev2/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "XD60 Rev 2",
+ "usb": {
+ "pid": "0x6060"
+ }
+}
diff --git a/keyboards/xiudi/xd60/rev3/config.h b/keyboards/xiudi/xd60/rev3/config.h
index 8af56851ff..243630c76b 100644
--- a/keyboards/xiudi/xd60/rev3/config.h
+++ b/keyboards/xiudi/xd60/rev3/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7844 // "XD"
-#define PRODUCT_ID 0x6363
-#define DEVICE_VER 0x0001
-#define MANUFACTURER XIUDI
-#define PRODUCT XD60rev3
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 }
-#define UNUSED_PINS
/* Backlight Setup */
#define BACKLIGHT_PIN F5
diff --git a/keyboards/xiudi/xd60/rev3/info.json b/keyboards/xiudi/xd60/rev3/info.json
new file mode 100644
index 0000000000..a03a344a28
--- /dev/null
+++ b/keyboards/xiudi/xd60/rev3/info.json
@@ -0,0 +1,6 @@
+{
+ "keyboard_name": "XD60 Rev 3",
+ "usb": {
+ "pid": "0x6363"
+ }
+}
diff --git a/keyboards/xiudi/xd68/config.h b/keyboards/xiudi/xd68/config.h
index af8e8b7dab..ef3cae310b 100644
--- a/keyboards/xiudi/xd68/config.h
+++ b/keyboards/xiudi/xd68/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7844 // "XD"
-#define PRODUCT_ID 0x6868
-#define DEVICE_VER 0x0001
-#define MANUFACTURER xiudi
-#define PRODUCT XD68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3, F7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xiudi/xd68/info.json b/keyboards/xiudi/xd68/info.json
index 276bd72941..36d72134c1 100644
--- a/keyboards/xiudi/xd68/info.json
+++ b/keyboards/xiudi/xd68/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "xd68",
+ "keyboard_name": "XD68",
+ "manufacturer": "xiudi",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7844",
+ "pid": "0x6868",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_65_ansi": {
"layout": [
diff --git a/keyboards/xiudi/xd75/config.h b/keyboards/xiudi/xd75/config.h
index 9cceea3467..7080a2ca8b 100644
--- a/keyboards/xiudi/xd75/config.h
+++ b/keyboards/xiudi/xd75/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7844 // "XD"
-#define PRODUCT_ID 0x7575
-#define DEVICE_VER 0x0001
-#define MANUFACTURER xiudi
-#define PRODUCT XD75
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3, B0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xiudi/xd75/info.json b/keyboards/xiudi/xd75/info.json
index bb15a7faef..7329722495 100644
--- a/keyboards/xiudi/xd75/info.json
+++ b/keyboards/xiudi/xd75/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "XD75",
+ "manufacturer": "xiudi",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7844",
+ "pid": "0x7575",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_5x15": {
"layout": [
diff --git a/keyboards/xiudi/xd75/keymaps/4sstylz/keymap.c b/keyboards/xiudi/xd75/keymaps/4sstylz/keymap.c
index 497ca40a98..b37e25500b 100644
--- a/keyboards/xiudi/xd75/keymaps/4sstylz/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/4sstylz/keymap.c
@@ -88,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN] = LAYOUT_ortho_5x15( /* FUNCTION */
LALT(KC_F4), KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , BL_TOGG, KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_NLCK,
_______ , _______, SLC_ALL , SLC_ROW , SLC_WRD , KC_BRIU, BL_STEP, _______, _______, LSFT(KC_7) , LSFT(KC_8) , LSFT(KC_9), KC_8 , _______, _______,
- _______ , _______, LSFT(KC_DEL), LCTL(KC_INS), LSFT(KC_INS), KC_BRID, BL_BRTG, _______, _______, LSFT(KC_4) , LSFT(KC_5) , LSFT(KC_6), KC_7 , _______, RESET ,
+ _______ , _______, LSFT(KC_DEL), LCTL(KC_INS), LSFT(KC_INS), KC_BRID, BL_BRTG, _______, _______, LSFT(KC_4) , LSFT(KC_5) , LSFT(KC_6), KC_7 , _______, QK_BOOT,
_______ , _______, KC_MUTE , KC_VOLD , KC_VOLU , KC_MPLY, RGB_TOG, _______, _______, LSFT(KC_1) , LSFT(KC_2) , LSFT(KC_3), KC_ENT , _______, _______,
_______ , _______, _______ , _______ , _______ , _______, RGB_MOD, _______, _______, LSFT(KC_0) , KC_00 , KC_V , _______ , _______, _______
)
diff --git a/keyboards/xiudi/xd75/keymaps/adi/keymap.c b/keyboards/xiudi/xd75/keymaps/adi/keymap.c
index aa45d598e3..93bc5a2ccd 100644
--- a/keyboards/xiudi/xd75/keymaps/adi/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/adi/keymap.c
@@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_FN] = LAYOUT_ortho_5x15( /* FUNCTION */
- 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,
+ QK_BOOT, KC_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_SLCK, 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_PAUS, KC_PSCR,
KC_CAPS, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_INC, BL_DEC, ___T___, ___T___, KC_PGUP, KC_WH_D,
diff --git a/keyboards/xiudi/xd75/keymaps/arpinfidel/keymap.c b/keyboards/xiudi/xd75/keymaps/arpinfidel/keymap.c
index 5f7337d68b..0705cff938 100644
--- a/keyboards/xiudi/xd75/keymaps/arpinfidel/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/arpinfidel/keymap.c
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | | | | | | | RGB VD | BL TG | RGB VI | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | FN | RGB TG | | MS W L | MS W R | | RESET | | MS 1 | MS 2 | RGB RMD| RGB MD | FN | |
+ * | | FN | RGB TG | | MS W L | MS W R | | QK_BOOT | | MS 1 | MS 2 | RGB RMD| RGB MD | FN | |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
@@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_WH_U, _______, KC_BTN2, KC_MS_U, KC_BTN1, KC_BTN3, RGB_SAD, _______, RGB_SAI, KC_LBRC, KC_RBRC, KC_UP , _______ , KC_EQL , KC_BSLS,
KC_WH_D, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, RGB_VAD, _______, RGB_VAI, KC_MINS, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,
_______, _______, _______, _______, _______, _______, RGB_RMOD,A_BL_TG, RGB_MOD, _______, _______, _______, _______ , _______, _______,
- _______, TT(_FN), RGB_TOG, _______, KC_WH_L, KC_WH_R, TT(_FN), RESET , TT(_FN), KC_BTN1, KC_BTN2, _______, _______ , TT(_FN), _______
+ _______, TT(_FN), RGB_TOG, _______, KC_WH_L, KC_WH_R, TT(_FN), QK_BOOT, TT(_FN), KC_BTN1, KC_BTN2, _______, _______ , TT(_FN), _______
)
};
@@ -100,7 +100,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// Runs whenever there is a layer state change.
layer_state_t layer_state_set_user(layer_state_t state) {
- uint8_t layer = biton32(state);
+ uint8_t layer = get_highest_layer(state);
gp100_led_off();
gp103_led_off();
diff --git a/keyboards/xiudi/xd75/keymaps/atomic_style/keymap.c b/keyboards/xiudi/xd75/keymaps/atomic_style/keymap.c
index 9bd1e58a05..004bd12da9 100644
--- a/keyboards/xiudi/xd75/keymaps/atomic_style/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/atomic_style/keymap.c
@@ -148,7 +148,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
* | RGB TG | RGB MD | RGB HI | RGB HD | RGB SI | RGB SD | RGB VI | RGB VD | BL TOG | BL INC | BL DEC | XXXXXX . | MOUS U | WHEEL- |
* |--------+--------+--------+--------+--------+-- 2u -----------+--------+--------+--------+--------+-----------------+--------+--------|
- * | RESET | | QWERTY | COLEMK | DVORAK | XXXXXX . MS BT1 | | | | | | MOUS L | MOUS D | MOUS R |
+ * | QK_BOOT | | QWERTY | COLEMK | DVORAK | XXXXXX . MS BT1 | | | | | | MOUS L | MOUS D | MOUS R |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
@@ -157,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_SLCK, 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_PAUS, KC_PSCR,
KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_INC, BL_DEC, ___T___, ___T___, KC_MS_U, KC_WH_D,
- RESET , _______, DF(_QW), DF(_CM), DF(_DV), KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
+ QK_BOOT, _______, DF(_QW), DF(_CM), DF(_DV), KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
)
};
diff --git a/keyboards/xiudi/xd75/keymaps/atomic_style_jp/keymap.c b/keyboards/xiudi/xd75/keymaps/atomic_style_jp/keymap.c
index 6084a1cbe6..b7d2272b02 100644
--- a/keyboards/xiudi/xd75/keymaps/atomic_style_jp/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/atomic_style_jp/keymap.c
@@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_SLCK, 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_PAUS, KC_PSCR,
KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_INC, BL_DEC, _______,KC_WH_U, KC_MS_U, KC_WH_D,
- RESET , DF(_QW), DF(_EASY_QW), _______, _______, KC_BTN1, KC_BTN2, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
+ QK_BOOT, DF(_QW), DF(_EASY_QW), _______, _______, KC_BTN1, KC_BTN2, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
),
[_CURSOR] = 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_JYEN, KC_BSPC,
diff --git a/keyboards/xiudi/xd75/keymaps/bbaserdem/config.h b/keyboards/xiudi/xd75/keymaps/bbaserdem/config.h
deleted file mode 100644
index 271f48d001..0000000000
--- a/keyboards/xiudi/xd75/keymaps/bbaserdem/config.h
+++ /dev/null
@@ -1,3 +0,0 @@
-#pragma once
-
-// place overrides here
diff --git a/keyboards/xiudi/xd75/keymaps/bbaserdem/keymap.c b/keyboards/xiudi/xd75/keymaps/bbaserdem/keymap.c
deleted file mode 100644
index 6f8576b09b..0000000000
--- a/keyboards/xiudi/xd75/keymaps/bbaserdem/keymap.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include QMK_KEYBOARD_H
-#include "bbaserdem.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Layout
- * ,-----------------------------------------------------------.
- * |Blt|Lck| ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |
- * |---+---+-----------------------------------------------+---|
- * |Int|Trm| |Cps|
- * |---+---| |---|
- * |Clc|Psw| | \ |
- * |---+---| PLANCK |---|
- * |Rev|Ffw| | [ |
- * |---+---| |---|
- * |Tog|Mut| | ] |
- * `-----------------------------------------------------------'
- */
-[0] = KM( FKLAVYE ),
-[1] = KM( AYARLAR ),
-};
-
diff --git a/keyboards/xiudi/xd75/keymaps/bbaserdem/readme.md b/keyboards/xiudi/xd75/keymaps/bbaserdem/readme.md
deleted file mode 100644
index a0ade691aa..0000000000
--- a/keyboards/xiudi/xd75/keymaps/bbaserdem/readme.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# XD75RE Setup
-
-(WIP) F keyboard for turkish, using unicode.
-
-* Write down keymap in userspace
-* Figure out LED indicators
-
-# Make
-
-Take the board into reset mode, then
-```
-make xiudi/xd75:bbaserdem:dfu
-```
-Either sudo it or set permissions in udev.
diff --git a/keyboards/xiudi/xd75/keymaps/bbaserdem/rules.mk b/keyboards/xiudi/xd75/keymaps/bbaserdem/rules.mk
deleted file mode 100644
index 3e501cd00e..0000000000
--- a/keyboards/xiudi/xd75/keymaps/bbaserdem/rules.mk
+++ /dev/null
@@ -1,7 +0,0 @@
-# Build options
-BACKLIGHT_ENABLE = yes # Switch LEDs
-MOUSEKEY_ENABLE = yes # Emulates mouse key using keypresses
-RGBLIGHT_ENABLE = no # LED strips
-TAP_DANCE_ENABLE = no # Use multi-tap features
-AUDIO_ENABLE = no # Audio stuff
-
diff --git a/keyboards/xiudi/xd75/keymaps/boy_314/keymap.c b/keyboards/xiudi/xd75/keymaps/boy_314/keymap.c
index 89d6569ddc..595d7cb936 100644
--- a/keyboards/xiudi/xd75/keymaps/boy_314/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/boy_314/keymap.c
@@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* .--------------------------------------------------------------------------------------------------------------------------------------.
* | ` | ! | @ | # | $ | % | | | | ^ | & | * | ( | ) | BACKSP |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | ~ | ! | @ | # | $ | % | RESET |RGB HUE-|RGB HUE+| ^ | & | * | ( | ) | DEL |
+ * | ~ | ! | @ | # | $ | % | QK_BOOT |RGB HUE-|RGB HUE+| ^ | & | * | ( | ) | DEL |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | DEL | F1 | F2 | F3 | F4 | F5 | F6 |RGB SAT-|RGB SAT+| DVORAK | _ | + | { | } | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
@@ -95,7 +95,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN1] = LAYOUT_ortho_5x15( /* FUNCTION1 */
KC_GRV , 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, RESET, RGB_HUD, RGB_HUI, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, QK_BOOT, RGB_HUD, RGB_HUI, 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, RGB_SAD, RGB_SAI, TO(_DV), KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, RGB_VAD, RGB_VAI, TO(_QW), _______, _______, KC_HOME, KC_END, _______,
_______, _______, _______, _______, _______, _______, _______,RGB_RMOD, RGB_MOD, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
@@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* .--------------------------------------------------------------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | | | | 6 | 7 | 8 | 9 | 0 | BACKSP |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | ` | | | UP | | | RESET |RGB HUE-|RGB HUE+| NUMPAD | | | | | |
+ * | ` | | | UP | | | QK_BOOT |RGB HUE-|RGB HUE+| NUMPAD | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | DEL | | LEFT | DOWN | RIGHT | | |RGB SAT-|RGB SAT+| DVORAK | - | = | [ | ] | \ |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
@@ -118,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN2] = LAYOUT_ortho_5x15( /* FUNCTION2 */
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_UP, _______, _______, RESET, RGB_HUD, RGB_HUI, TG(_NP), _______, _______, _______, _______, KC_DEL,
+ KC_GRV, _______, _______, KC_UP, _______, _______, QK_BOOT, RGB_HUD, RGB_HUI, TG(_NP), _______, _______, _______, _______, KC_DEL,
KC_DEL, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, RGB_SAD, RGB_SAI, TG(_DV), KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, _______, _______, _______, _______, _______, _______, RGB_VAD, RGB_VAI, TG(_QW), _______, _______, KC_PGDN, KC_PGUP, _______,
_______, _______, _______, _______, _______, _______, _______,RGB_RMOD, RGB_MOD, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
diff --git a/keyboards/xiudi/xd75/keymaps/bramver/keymap.c b/keyboards/xiudi/xd75/keymaps/bramver/keymap.c
index 7cbb0bae82..77ebfe6a03 100644
--- a/keyboards/xiudi/xd75/keymaps/bramver/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/bramver/keymap.c
@@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_EMOJIFY] = LAYOUT_ortho_5x15(
- TO(0) , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , RESET ,
+ TO(0) , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , QK_BOOT,
_______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
_______ , X(CELE) , X(PRAY) , X(NAIL) , X(OK) , X(THNK) , _______ , _______ , _______ , X(UNAM) , X(HEYE) , X(COOL) , X(EYES) , X(SMIR) , _______,
_______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______ , _______,
diff --git a/keyboards/xiudi/xd75/keymaps/bulbizarre/keymap.c b/keyboards/xiudi/xd75/keymaps/bulbizarre/keymap.c
index f35eea73c4..c263d569da 100644
--- a/keyboards/xiudi/xd75/keymaps/bulbizarre/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/bulbizarre/keymap.c
@@ -81,7 +81,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
* | RGB_H+ | RGB- | BL- | E | R | T | Y | U | I | O | 7 | 8 | 9 | ENTER | DEL |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
- * | RGB_H- | RGB_M+ | BL+ | VOL+ | F | G | H | J | K | L | 4 | 5 | 6 | ENTER | RESET |
+ * | RGB_H- | RGB_M+ | BL+ | VOL+ | F | G | H | J | K | L | 4 | 5 | 6 | ENTER | QK_BOOT |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
* | RGB_S+ | RGB_M- | BL_S | VOL- | V | B | B | N | M | , | 1 | 2 | 3 | UP | END |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------|
@@ -92,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FS] = LAYOUT_ortho_5x15( /* FUNCTION */
_______, RGB_VAI, BL_BRTG, _______, _______, _______, _______, _______, _______, _______, KC_PSLS, KC_PAST, KC_PMNS, KC_PPLS, _______,
RGB_HUI, RGB_VAD, BL_INC, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______,
- RGB_HUD, RGB_RMOD,BL_DEC, KC_VOLU, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, RESET,
+ RGB_HUD, RGB_RMOD,BL_DEC, KC_VOLU, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, QK_BOOT,
RGB_SAI, RGB_MOD, BL_STEP, KC_VOLD, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______,
RGB_SAD, RGB_TOG, BL_TOGG, KC_MUTE, _______, _______, _______, _______, _______, TO(_FN), TO(_QW), KC_P0, KC_PDOT, KC_DOT, _______
)
diff --git a/keyboards/xiudi/xd75/keymaps/buzzlighter1/keymap.c b/keyboards/xiudi/xd75/keymaps/buzzlighter1/keymap.c
index 09eea933e1..25040fe342 100644
--- a/keyboards/xiudi/xd75/keymaps/buzzlighter1/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/buzzlighter1/keymap.c
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | _______| P7 | P8 | P9 | + | P* | XXXXXXX| PR SCR | SCR LK | PAUSE | XXXXXXX| BL_DEC | BL_INC | RGB HD | RGB HI |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | _______| P4 | P5 | P6 | NumLk | CALC | XXXXXXX| POWER | XXXXXXX| RESET | XXXXXXX| BL_BRTG| BL_STEP| RGB SD | RGB SI |
+ * | _______| P4 | P5 | P6 | NumLk | CALC | XXXXXXX| POWER | XXXXXXX| QK_BOOT | XXXXXXX| BL_BRTG| BL_STEP| RGB SD | RGB SI |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | _______| P1 | P2 | P3 | - | P/ | XXXXXXX| OS | PLAY | PREV | NXT | BL_OFF | BL_ON | RGB VD | RGB VI |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN] = LAYOUT_ortho_5x15( /* FUNCTION */
XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
_______, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_PAST, XXXXXXX, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX, BL_DEC, BL_INC, RGB_HUD, RGB_HUI,
- _______, KC_P4, KC_P5, KC_P6, KC_NLCK, KC_CALC, XXXXXXX, KC_PWR, XXXXXXX, RESET, XXXXXXX, BL_BRTG, BL_STEP, RGB_SAD, RGB_SAI,
+ _______, KC_P4, KC_P5, KC_P6, KC_NLCK, KC_CALC, XXXXXXX, KC_PWR, XXXXXXX, QK_BOOT, XXXXXXX, BL_BRTG, BL_STEP, RGB_SAD, RGB_SAI,
_______, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_PSLS, XXXXXXX, KC_LWIN, KC_MPLY, KC_MPRV, KC_MNXT, BL_OFF, BL_ON, RGB_VAD, RGB_VAI,
_______, KC_P0, KC_PDOT, KC_PENT, XXXXXXX, XXXXXXX, XXXXXXX, KC_SPC, XXXXXXX, XXXXXXX, XXXXXXX, BL_TOGG, RGB_TOG, RGB_RMOD,RGB_MOD
)
diff --git a/keyboards/xiudi/xd75/keymaps/c4software_bepo/keymap.c b/keyboards/xiudi/xd75/keymaps/c4software_bepo/keymap.c
index fdfe3be16d..991cb31b55 100644
--- a/keyboards/xiudi/xd75/keymaps/c4software_bepo/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/c4software_bepo/keymap.c
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | | VOL- | MUTE | VOL+ | | | | | P1 | P2 | P3 | ENT | RGB_VAD| Home | RGB_HUD|
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | RESET | | FN | | | | | | P0 | P0 | . | FN | | End | |
+ * | QK_BOOT | | FN | | | | | | P0 | P0 | . | FN | | End | |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
@@ -63,6 +63,6 @@ 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_P7, KC_P8, KC_P9, KC_MINS, RGB_TOG, RGB_MOD, RGB_HUI,
KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, KC_TRNS, KC_TRNS, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PLUS, RGB_SAI, RGB_SAD, RGB_VAI,
KC_TRNS, KC_VOLD, KC_MUTE, KC_VOLU, KC_APP, KC_TRNS, KC_TRNS, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_ENT, RGB_VAD, KC_HOME, RGB_HUD,
- RESET, KC_TRNS, MO(_FN), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_KP_0, KC_PDOT, MO(_FN), KC_TRNS, KC_END, KC_TRNS
+ QK_BOOT, KC_TRNS, MO(_FN), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_KP_0, KC_KP_0, KC_PDOT, MO(_FN), KC_TRNS, KC_END, KC_TRNS
)
};
diff --git a/keyboards/xiudi/xd75/keymaps/cbbrowne/keymap.c b/keyboards/xiudi/xd75/keymaps/cbbrowne/keymap.c
index 1b29686cff..de90a83484 100644
--- a/keyboards/xiudi/xd75/keymaps/cbbrowne/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/cbbrowne/keymap.c
@@ -172,16 +172,16 @@ keys needing to be assigned:
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
* | RGB TG | RGB MD | RGB HI | RGB HD | RGB SI | RGB SD | RGB VI | RGB VD | BL TOG | BL INC | BL DEC | XXXXXX | | MOUS U | WHEEL- |
* |--------+--------+--------+--------+--------+-- 2u -----------+--------+--------+--------+--------+-----------------+--------+--------|
- * | RESET | | QWERTY | COLEMK | DVORAK | XXXXXX . MS BT1 | | | | | | MOUS L | MOUS D | MOUS R |
+ * | QK_BOOT | | QWERTY | COLEMK | DVORAK | XXXXXX . MS BT1 | | | | | | MOUS L | MOUS D | MOUS R |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[_FUNCTION] = LAYOUT_ortho_5x15( /* FUNCTION */
- KC_NLCK, 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, RESET,
+ KC_NLCK, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QK_BOOT, QK_BOOT,
KC_SLCK, 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_PAUS, KC_PSCR ,
KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U ,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_INC, BL_DEC, ___T___, ___T___, KC_MS_U, KC_WH_D ,
- RESET , _______, DF(_QWERTY), DF(_QWERTY), DF(_QWERTY), KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
+ QK_BOOT, _______, DF(_QWERTY), DF(_QWERTY), DF(_QWERTY), KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
)
};
@@ -286,7 +286,7 @@ void matrix_init_user(void) {
}
layer_state_t layer_state_set_user(layer_state_t state) {
- switch(biton32(state)) {
+ switch(get_highest_layer(state)) {
case _QWERTY:
rgblight_sethsv_white();
break;
diff --git a/keyboards/xiudi/xd75/keymaps/clanghans/keymap.c b/keyboards/xiudi/xd75/keymaps/clanghans/keymap.c
index 09a2bec55c..62f420d264 100755
--- a/keyboards/xiudi/xd75/keymaps/clanghans/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/clanghans/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN] = LAYOUT(
LALT(KC_F4), KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NLCK,
_______, _______, _______, _______, RGB_HUI, RGB_TOG, _______, KC_P7, KC_P8, KC_P9, KC_PSLS, _______, _______, _______, _______,
- _______, _______, _______, _______, RGB_SAI, RGB_MOD, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, _______, _______, RESET,
+ _______, _______, _______, _______, RGB_SAI, RGB_MOD, _______, KC_P4, KC_P5, KC_P6, KC_PAST, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, RGB_VAI, _______, _______, KC_P1, KC_P2, KC_P3, KC_PMNS, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_P0, _______, KC_PDOT, KC_PPLS, _______, _______, _______, _______
)
diff --git a/keyboards/xiudi/xd75/keymaps/colinta/keymap.c b/keyboards/xiudi/xd75/keymaps/colinta/keymap.c
index 257caad339..4d7c2d2007 100644
--- a/keyboards/xiudi/xd75/keymaps/colinta/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/colinta/keymap.c
@@ -153,7 +153,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
* | | | | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------|
- * | | | | | RESET | DM_CLEAR | | | RESET | | | | |
+ * | | | | | QK_BOOT | DM_CLEAR | | | QK_BOOT | | | | |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
@@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, 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, DM_CLEAR, KC_NO, KC_NO, KC_NO, RESET, KC_NO, KC_NO, KC_NO, KC_NO
+ KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO, DM_CLEAR, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO
)
};
diff --git a/keyboards/xiudi/xd75/keymaps/daniel/keymap.c b/keyboards/xiudi/xd75/keymaps/daniel/keymap.c
index e9f2740b15..c2e49d87e5 100644
--- a/keyboards/xiudi/xd75/keymaps/daniel/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/daniel/keymap.c
@@ -24,6 +24,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/xiudi/xd75/keymaps/davidrambo/keymap.c b/keyboards/xiudi/xd75/keymaps/davidrambo/keymap.c
index f380ebdb11..97010c39e1 100644
--- a/keyboards/xiudi/xd75/keymaps/davidrambo/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/davidrambo/keymap.c
@@ -139,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, CTAB , ALEFT , KC_UP , ARGHT , KC_DEL , _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, CTLPGUP, KC_LEFT, KC_DOWN, KC_RGHT, CTLPGDN, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, GTAB , ABSPC , KC_HOME, KC_END , GGRV , _______,
- RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_NAVPC] = LAYOUT_ortho_5x15( /* NAVIGATION FOR PC: replaces Alt with Control, GUI with Alt, and browser tab shortcuts*/
@@ -147,7 +147,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, CTAB , CLEFT , KC_UP , CRGHT , KC_DEL , _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, CTLPGUP, KC_LEFT, KC_DOWN, KC_RGHT, CTLPGDN, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, ATAB , CBSPC , KC_HOME, KC_END , _______, _______,
- RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_NAVQUD] = LAYOUT_ortho_5x15( /* NAVIGATION for Mac */
diff --git a/keyboards/xiudi/xd75/keymaps/developper_bepo/keymap.c b/keyboards/xiudi/xd75/keymaps/developper_bepo/keymap.c
index 121b18438e..d07e1f48a3 100644
--- a/keyboards/xiudi/xd75/keymaps/developper_bepo/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/developper_bepo/keymap.c
@@ -56,7 +56,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | | | | | | | | | | | < | > | @ | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | | | | _ | MO(_FN)| | | | | MO(_FN)| _ | | | | RESET |
+ * | | | | _ | MO(_FN)| | | | | MO(_FN)| _ | | | | QK_BOOT |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
@@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, S(BP_DQUO), S(BP_LDAQ), S(BP_RDAQ), S(BP_LPRN), S(BP_RPRN), _______, _______, _______, S(BP_AT), S(BP_PLUS), S(BP_MINS), S(BP_SLSH), S(BP_ASTR), S(BP_EQL),
_______, RALT(BP_B), BP_BSLS, BP_LBRC, BP_RBRC, RALT(BP_P), _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______,
_______, BP_BSLS, _______, _______, _______, _______, _______, _______, _______, _______, BP_LABK, BP_RABK, BP_AT , _______, _______,
- _______, _______, _______, _______, _______, LT(_FN,KC_ENT), _______, _______, _______, LT(_FN,KC_SPC), _______, _______, _______, _______, RESET
+ _______, _______, _______, _______, _______, LT(_FN,KC_ENT), _______, _______, _______, LT(_FN,KC_SPC), _______, _______, _______, _______, QK_BOOT
)
};
diff --git a/keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/keymap.c b/keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/keymap.c
index 679684976b..705efb1b8b 100644
--- a/keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/dyn_macro_tap_dance/keymap.c
@@ -97,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | SELECT | CALC | MYCOMP | MAIL | RGB HD | RGB HI | P7 | P8 | P9 | - | | | PR SCR | SCR LK | PAUSE |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | PREV | PLAY | NEXT | STOP | RGB SD | RGB SI | P4 | P5 | P6 | + | | RESET | | | |
+ * | PREV | PLAY | NEXT | STOP | RGB SD | RGB SI | P4 | P5 | P6 | + | | QK_BOOT | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | VOL- | MUTE | VOL+ | APP | RGB VD | RGB VI | P1 | P2 | P3 | PENT | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
@@ -108,7 +108,7 @@ 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_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, RGB_SAD, RGB_SAI, KC_P4, KC_P5, KC_P6, KC_PLUS, _______, QK_BOOT, _______, _______, _______,
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/xiudi/xd75/keymaps/emilyh/keymap.c b/keyboards/xiudi/xd75/keymaps/emilyh/keymap.c
index 3197b6bde9..e325dbd664 100644
--- a/keyboards/xiudi/xd75/keymaps/emilyh/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/emilyh/keymap.c
@@ -112,7 +112,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LW] = LAYOUT_ortho_5x15( /* LOWERED */
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, ___T___, ___T___,
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______, _______, KC_INS,
- RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, ___T___, ___T___, _______,
+ QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, ___T___, ___T___, _______,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, ___T___, ___T___, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
@@ -149,7 +149,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
* | RGB TG | RGB MD | RGB HI | RGB HD | RGB SI | RGB SD | RGB VI | RGB VD | BL TOG | BL INC | BL DEC | XXXXXX . | MOUS U | WHEEL- |
* |--------+--------+--------+--------+--------+-- 2u -----------+--------+--------+--------+--------+-----------------+--------+--------|
- * | RESET | | QWERTY | COLEMK | DVORAK | XXXXXX . MS BT1 | | | | | | MOUS L | MOUS D | MOUS R |
+ * | QK_BOOT | | QWERTY | COLEMK | DVORAK | XXXXXX . MS BT1 | | | | | | MOUS L | MOUS D | MOUS R |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
@@ -158,7 +158,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_SLCK, 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_PAUS, KC_PSCR,
KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_INC, BL_DEC, ___T___, ___T___, KC_MS_U, KC_WH_D,
- RESET , _______, DF(_QW), DF(_CM), DF(_DV), KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
+ QK_BOOT, _______, DF(_QW), DF(_CM), DF(_DV), KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R
)
};
diff --git a/keyboards/xiudi/xd75/keymaps/fabian/keymap.c b/keyboards/xiudi/xd75/keymaps/fabian/keymap.c
index 0d59e4ce8f..a88790048f 100644
--- a/keyboards/xiudi/xd75/keymaps/fabian/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/fabian/keymap.c
@@ -194,7 +194,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_ortho_5x15(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_DEL,
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, 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, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/xiudi/xd75/keymaps/french/keymap.c b/keyboards/xiudi/xd75/keymaps/french/keymap.c
index 8d5d2b634f..42dfa076dc 100644
--- a/keyboards/xiudi/xd75/keymaps/french/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/french/keymap.c
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | | | | | | | | | | 1 | 2 | 3 | + | | LEDMAX |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | RESET | | | FN | | | | | | | 0 | . | PENT | | LEDLVL |
+ * | QK_BOOT | | | FN | | | | | | | 0 | . | PENT | | LEDLVL |
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
@@ -51,6 +51,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
FR_EMPT, FR_MPRV, FR_MPLY, FR_MNXT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_NUML, FR_7, FR_8, FR_9, FR_MULT, FR_EMPT, BL_INC,
FR_EMPT, FR_MVDN, FR_MUTE, FR_MVUP, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_4, FR_5, FR_6, FR_MOIN, FR_EMPT, BL_DEC,
FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_1, FR_2, FR_3, FR_PLUS, FR_EMPT, BL_ON,
- RESET, FR_EMPT, FR_EMPT, FR_TRANS, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_0, FR_DOT, FR_ENTK, FR_EMPT, BL_STEP
+ QK_BOOT, FR_EMPT, FR_EMPT, FR_TRANS, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_EMPT, FR_0, FR_DOT, FR_ENTK, FR_EMPT, BL_STEP
)
};
diff --git a/keyboards/xiudi/xd75/keymaps/germanized/keymap.c b/keyboards/xiudi/xd75/keymaps/germanized/keymap.c
index 3b00a4b670..a525c5a585 100644
--- a/keyboards/xiudi/xd75/keymaps/germanized/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/germanized/keymap.c
@@ -75,7 +75,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* °-----------------------------------------------------------------------------------------------------------------------°
*/
[_FNC] = LAYOUT_ortho_5x15(
- 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,
+ QK_BOOT, KC_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, RGB_VAI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS,
KC_CAPS, KC_TRNS, KC_TRNS, RGB_VAD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,
diff --git a/keyboards/xiudi/xd75/keymaps/hybrid/keymap.c b/keyboards/xiudi/xd75/keymaps/hybrid/keymap.c
index e8b5a3536b..337b75c190 100644
--- a/keyboards/xiudi/xd75/keymaps/hybrid/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/hybrid/keymap.c
@@ -264,7 +264,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_LY1] = LAYOUT_ortho_5x15(
KC_ESC, RGB_TOG, RGB_RMOD, RGB_M_P, RGB_M_B, RGB_M_SW, RGB_M_K, RGB_M_G, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_LY2), DF(_MAIN),
DEBUG, KC_PSCR, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
- RESET, KC_NO, KC_S, KC_D, KC_F, KC_G, KC_Z, KC_J, KC_K, KC_L, KC_M, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_LSFT,
+ QK_BOOT, KC_NO, KC_S, KC_D, KC_F, KC_G, KC_Z, KC_J, KC_K, KC_L, KC_M, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_LSFT,
KC_NO, KC_X, KC_C, KC_V, KC_B, KC_N, KC_COMM, KC_SCLN, KC_NO, KC_NO, KC_P4, KC_P5, KC_P6, KC_PEQL, KC_LCBR,
KC_NO, KC_NO, KC_NO, KC_SPC, KC_SPC, KC_SPC, KC_TRNS, KC_NO, KC_TRNS, KC_P0, KC_P1, KC_P2, KC_P3, KC_TRNS
),
diff --git a/keyboards/xiudi/xd75/keymaps/jarred/keymap.c b/keyboards/xiudi/xd75/keymaps/jarred/keymap.c
index a875165078..ff45939ba9 100644
--- a/keyboards/xiudi/xd75/keymaps/jarred/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/jarred/keymap.c
@@ -32,6 +32,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______,
- RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/xiudi/xd75/keymaps/kim-kim-xd73/keymap.c b/keyboards/xiudi/xd75/keymaps/kim-kim-xd73/keymap.c
index fdcc47cabe..d14cd084e1 100644
--- a/keyboards/xiudi/xd75/keymaps/kim-kim-xd73/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/kim-kim-xd73/keymap.c
@@ -92,13 +92,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MO(_RT), MO(_RT), _______
),
-/* RESET
+/* QK_BOOT
* .--------------------------------------------------------------------------------------------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
* | | | | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
- * | | | | | | | | RESET | | | | | | | |
+ * | | | | | | | | QK_BOOT | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
* | | | | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------|
@@ -106,10 +106,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
- [_RT] = LAYOUT_ortho_5x15( /* RESET */
+ [_RT] = LAYOUT_ortho_5x15( /* QK_BOOT */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/xiudi/xd75/keymaps/kim-kim/keymap.c b/keyboards/xiudi/xd75/keymaps/kim-kim/keymap.c
index 486a3743a4..7b73348f39 100644
--- a/keyboards/xiudi/xd75/keymaps/kim-kim/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/kim-kim/keymap.c
@@ -92,13 +92,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MO(_RT), MO(_RT), _______
),
-/* RESET
+/* QK_BOOT
* .--------------------------------------------------------------------------------------------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
* | | | | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
- * | | | | | | | | RESET | | | | | | | |
+ * | | | | | | | | QK_BOOT | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
* | | | | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------|
@@ -106,10 +106,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
- [_RT] = LAYOUT_ortho_5x15( /* RESET */
+ [_RT] = LAYOUT_ortho_5x15( /* QK_BOOT */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/xiudi/xd75/keymaps/kloki/keymap.c b/keyboards/xiudi/xd75/keymaps/kloki/keymap.c
index a630019347..2a8fde5f35 100644
--- a/keyboards/xiudi/xd75/keymaps/kloki/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/kloki/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______,_______,_______, _______, _______, _______,_______,_______, _______, _______, _______
),
[_FUN] = LAYOUT_ortho_5x15( /* FUN */
- _______, RGB_RMOD,RGB_MOD, RGB_TOG, _______,_______,_______, _______, _______, _______,_______,_______, _______, _______, RESET,
+ _______, RGB_RMOD,RGB_MOD, RGB_TOG, _______,_______,_______, _______, _______, _______,_______,_______, _______, _______, QK_BOOT,
_______, RGB_HUD, RGB_HUI, RGB_MODE_PLAIN, _______,_______,_______, _______, _______, _______,_______,_______, _______, _______, _______,
_______, RGB_SAD, RGB_SAI, _______, _______,_______,_______, _______, _______, _______,_______,_______, _______, _______, _______,
_______, RGB_VAD, RGB_VAI, _______, _______,_______,_______, _______, _______, _______,_______,_______, _______, _______, _______,
@@ -70,7 +70,7 @@ bool WINDOWN = false;
bool SHIFTDOWN = false;
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
case 0:
diff --git a/keyboards/xiudi/xd75/keymaps/markus/keymap.c b/keyboards/xiudi/xd75/keymaps/markus/keymap.c
index 4a7efad11b..dc1590749b 100644
--- a/keyboards/xiudi/xd75/keymaps/markus/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/markus/keymap.c
@@ -163,7 +163,7 @@ KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_BRID, ___xx___,
________, QWERTZ, UC_M_LN, ___xx___, ___xx___, KC_PWR, RGB_TOG, RGB_M_P, RGB_MOD, ___xx___, KC_PGUP, KC_UP, KC_PGDN, ___xx___, ___xx___,
________, QWERTY, UC_M_WC, UC(L'›'), UC(L'‹'), KC_SLEP, RGB_HUI, RGB_SAI, RGB_VAI, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, ________,
________, GAMING, UC_M_MA, UC(L'»'), UC(L'«'), KC_WAKE, RGB_HUD, RGB_SAD, RGB_VAD, UC(L' '), UC(L' '), UC(L' '), UC(L' '), UC(L'‑'), ________,
-________, ________, ________, ________, ________, ________, ________, RESET, ________, ________, ________, ________, ________, ________, ________
+________, ________, ________, ________, ________, ________, ________, QK_BOOT, ________, ________, ________, ________, ________, ________, ________
)
};
diff --git a/keyboards/xiudi/xd75/keymaps/minna/keymap.c b/keyboards/xiudi/xd75/keymaps/minna/keymap.c
index ef3f400bc1..615762fa75 100644
--- a/keyboards/xiudi/xd75/keymaps/minna/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/minna/keymap.c
@@ -72,7 +72,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_ortho_5x15(
KC_MUTE, QMKBEST, KC_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_MSEL, KC_NO, KC_MYCM, KC_MAIL, RGB_HUD, RGB_HUI, KC_CALC, KC_P7, KC_P8, KC_P9, KC_MINS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS,
- KC_MPRV, KC_NO, KC_MNXT, KC_MSTP, RGB_SAD, RGB_SAI, KC_MPLY, KC_P4, KC_P5, KC_P6, KC_PLUS, RESET, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_MPRV, KC_NO, KC_MNXT, KC_MSTP, RGB_SAD, RGB_SAI, KC_MPLY, KC_P4, KC_P5, KC_P6, KC_PLUS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS,
KC_VOLD, KC_MUTE, KC_VOLU, KC_APP, RGB_VAD, RGB_VAI, KC_NO, KC_P1, KC_P2, KC_P3, KC_PENT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, MO(1), RGB_TOG, KC_NO, RGB_RMOD,RGB_MOD, KC_NO, KC_P0, KC_NO, KC_PDOT, KC_PENT, KC_PENT, MO(1), UC_RMOD, UC_MOD)
};
diff --git a/keyboards/xiudi/xd75/keymaps/msiu/keymap.c b/keyboards/xiudi/xd75/keymaps/msiu/keymap.c
index d1a4154ec1..62931ba088 100644
--- a/keyboards/xiudi/xd75/keymaps/msiu/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/msiu/keymap.c
@@ -113,7 +113,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP , _______, KC_PSCR, _______,
_______, _______, _______, TO(_DV), TO(_QW), _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- RESET , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};
diff --git a/keyboards/xiudi/xd75/keymaps/neothefox/keymap.c b/keyboards/xiudi/xd75/keymaps/neothefox/keymap.c
index 7fa04b2c63..a08449c605 100644
--- a/keyboards/xiudi/xd75/keymaps/neothefox/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/neothefox/keymap.c
@@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* SYSTEM
* .--------------------------------------------------------------------------------------------------------------------------------------.
- * | RESET | DEBUG | | | | | | | | | | | | | |
+ * | QK_BOOT | DEBUG | | | | | | | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | | | | | | |RGB_TOG |RGB_VAI |RGB VAD | | | PASTE | PR SCR | SCR LK | PAUSE |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
@@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_SYSTEM] = LAYOUT_ortho_5x15( /* FUNCTION */
- RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, RGB_VAD, _______, _______, MPASTE, KC_PSCR, KC_SLCK, KC_PAUSE,
_______, _______, _______, _______, _______, _______, RGB_MOD, RGB_SAI, RGB_HUI, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/xiudi/xd75/keymaps/odyssey/keymap.c b/keyboards/xiudi/xd75/keymaps/odyssey/keymap.c
index 35510379c7..651a80a585 100644
--- a/keyboards/xiudi/xd75/keymaps/odyssey/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/odyssey/keymap.c
@@ -136,7 +136,7 @@ _______, _______, _______, _______, _______, _______, _______, _______, _______,
),
[_FN] = LAYOUT_ortho_5x15( /* FUNCTION */
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_P7, KC_P8, KC_P9, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
-RESET, KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, KC_WH_U, KC_P4, KC_P5, KC_P6, _______, _______, _______, RSFT(KC_MINS), LSFT(KC_MINS), _______,
+QK_BOOT, KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, KC_WH_U, KC_P4, KC_P5, KC_P6, _______, _______, _______, RSFT(KC_MINS), LSFT(KC_MINS), _______,
_______, KC_MS_L, KC_MS_D, KC_MS_R, KC_MINS, KC_WH_D, KC_P1, KC_P2, KC_P3, _______, KC_PPLS, KC_ACL0, KC_ACL1, KC_ACL2, _______,
_______, KC_ACL0, KC_ACL1, KC_ACL2, KC_WH_L, KC_WH_R, KC_NLCK, KC_PGUP, KC_P0, _______, _______, _______, _______, _______, _______,
RGB_TOG, _______, _______, _______, KC_BSPC, KC_BSPC, KC_HOME, KC_PGDN, KC_END, KC_BSPC, KC_BSPC, _______, _______, _______, _______
diff --git a/keyboards/xiudi/xd75/keymaps/raoeus/keymap.c b/keyboards/xiudi/xd75/keymaps/raoeus/keymap.c
new file mode 100644
index 0000000000..6d1c9d812e
--- /dev/null
+++ b/keyboards/xiudi/xd75/keymaps/raoeus/keymap.c
@@ -0,0 +1,173 @@
+/* Copyright 2017 WunderaaaaaAa
+ * Modified by RAOEUS
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_steno.h"
+
+void matrix_init_user(void) {
+ steno_set_mode(STENO_MODE_GEMINI);
+}
+
+enum layer_names { _QWERTY, _LOWER, _RAISE, _BOTH, _STENO };
+
+enum keycodes { QWERTY = SAFE_RANGE, LOWER, RAISE, STENO, EXT_STN };
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /* QWERTY
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | NUM | / | * |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | TAB | Q | W | E | R | T | Y | U | I | O | P | Del | 7 | 8 | 9 |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | " | 4 | 5 | 6 |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
+ * | LShift | Z | X | C | V | B | N | M | , | . | / | Enter | 1 | 2 | 3 |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | LCtl | LAlt | LGUI | Steno | Lower | Space | Space | Raise | Left | Down | Up | Right | 0 | . | Enter |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [_QWERTY] = LAYOUT_ortho_5x15(
+ 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_NUM, 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_DEL, KC_P7, KC_P8, KC_P9,
+ 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_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_LCTRL, KC_LALT, KC_LGUI, STENO, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
+
+ /* STENO
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | # | # | # | # | # | # | # | # | # | # | # | # | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | FN | S | T | P | H | * | * | F | P | L | T | D | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
+ * | | S | K | W | R | * | * | R | B | G | S | Z | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
+ * | | | | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | EXIT | | | # | A | O | E | U | # | PWR | RES1 | RES2 | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [_STENO] = LAYOUT_ortho_5x15(
+ STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC, XXXXXXX, XXXXXXX, XXXXXXX,
+ STN_FN, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ EXT_STN, XXXXXXX, XXXXXXX, STN_N1, STN_A, STN_O, STN_E, STN_U, STN_N2, STN_PWR, STN_RE1, STN_RE2, XXXXXXX, XXXXXXX, XXXXXXX),
+
+ /* LOWER
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | CAPS | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | ISO ~ | ISO | | Home | End | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | Next | Vol- | Vol+ | Play | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [_LOWER] = LAYOUT_ortho_5x15(
+ 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_CAPS, 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 | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | CAPS | 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_5x15(
+ 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_CAPS, 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, _______, _______, _______),
+
+ /* BOTH (LOWER + RAISE)
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | Reset | Debug | | | | | TermOf | TermOn | | | Del | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | AGNorm | AGSwap | QWERTY | STENO | | | PLAIN | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | RGB+ | | | | | | | RGBTOG | HUE+ | SAT+ | BRITE+ | SPEED+ | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | RGB- | | | | | | | | HUE- | SAT- | BRITE- | SPEED- | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+ [_BOTH] = LAYOUT_ortho_5x15(
+ KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, TERM_ON, TERM_OFF, _______, _______, KC_DEL, _______, _______, _______,
+ _______, _______, _______, _______, _______, AG_NORM, AG_SWAP, QWERTY, STENO, _______, _______, RGB_M_P, _______, _______, _______,
+ RGB_MOD, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______,
+ RGB_RMOD, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______)
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QWERTY:
+ if (record->event.pressed) {
+ layer_move(_QWERTY);
+ };
+ return false;
+ break;
+ case STENO:
+ if (record->event.pressed) {
+ layer_move(_STENO);
+ }
+ return false;
+ break;
+ case EXT_STN:
+ if (record->event.pressed) {
+ layer_off(_STENO);
+ }
+ return false;
+ break;
+ case LOWER:
+ if (record->event.pressed) {
+ layer_on(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _BOTH);
+ } else {
+ layer_off(_LOWER);
+ update_tri_layer(_LOWER, _RAISE, _BOTH);
+ }
+ return false;
+ break;
+ case RAISE:
+ if (record->event.pressed) {
+ layer_on(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _BOTH);
+ } else {
+ layer_off(_RAISE);
+ update_tri_layer(_LOWER, _RAISE, _BOTH);
+ }
+ return false;
+ break;
+ }
+ return true;
+}
diff --git a/keyboards/xiudi/xd75/keymaps/raoeus/readme.md b/keyboards/xiudi/xd75/keymaps/raoeus/readme.md
new file mode 100644
index 0000000000..40da8596e5
--- /dev/null
+++ b/keyboards/xiudi/xd75/keymaps/raoeus/readme.md
@@ -0,0 +1,77 @@
+# RAOEUS Layout for the XD75
+
+This layout is based on the Preonic layout, but with an additional numpad on the right. I have also added a stenography layer for use with Plover.
+
+To compile this XD75 keymapping, please run `make xiudi/xd75:raoeus`
+
+To compile _and_ flash, please run `make xiudi/xd75:raoeus:flash`
+
+ /* QWERTY
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | NUM | / | * |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | TAB | Q | W | E | R | T | Y | U | I | O | P | Del | 7 | 8 | 9 |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
+ * | Esc | A | S | D | F | G | H | J | K | L | ; | " | 4 | 5 | 6 |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
+ * | LShift | Z | X | C | V | B | N | M | , | . | / | Enter | 1 | 2 | 3 |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | LCtl | LAlt | LGUI | Steno | Lower | Space | Space | Raise | Left | Down | Up | Right | 0 | . | Enter |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ /* STENO
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | # | # | # | # | # | # | # | # | # | # | # | # | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
+ * | FN | S | T | P | H | * | * | F | P | L | T | D | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
+ * | | S | K | W | R | * | * | R | B | G | S | Z | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
+ * | | | | | | | | | | | | | | | |
+ * |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+-----------------+--------+--------|
+ * | EXIT | | | # | A | O | E | U | # | PWR | RES1 | RES2 | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ /* LOWER
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | CAPS | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | ISO ~ | ISO | | Home | End | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | Next | Vol- | Vol+ | Play | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ /* RAISE
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | CAPS | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | F7 | F8 | F9 | F10 | F11 | F12 | ISO # | ISO / | Pg Up | Pg Dn | | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | | | | Next | Vol- | Vol+ | Play | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
+
+ /* BOTH (LOWER + RAISE)
+ * .--------------------------------------------------------------------------------------------------------------------------------------.
+ * | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | Reset | Debug | | | | | TermOf | TermOn | | | Del | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | | | | | | AGNorm | AGSwap | QWERTY | STENO | | | PLAIN | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | RGB+ | | | | | | | RGBTOG | HUE+ | SAT+ | BRITE+ | SPEED+ | | | |
+ * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
+ * | RGB- | | | | | | | | HUE- | SAT- | BRITE- | SPEED- | | | |
+ * '--------------------------------------------------------------------------------------------------------------------------------------'
+ */
diff --git a/keyboards/xiudi/xd75/keymaps/raoeus/rules.mk b/keyboards/xiudi/xd75/keymaps/raoeus/rules.mk
new file mode 100644
index 0000000000..0694ab5b65
--- /dev/null
+++ b/keyboards/xiudi/xd75/keymaps/raoeus/rules.mk
@@ -0,0 +1,3 @@
+MOUSEKEY_ENABLE = no # Mouse keys
+STENO_ENABLE = yes # Additional protocols for Stenography requires VIRTSER
+AUTO_SHIFT_ENABLE = yes # When you hold down a character in QWERTY, shift is automatically applied
diff --git a/keyboards/xiudi/xd75/keymaps/replicajunction/keymap.c b/keyboards/xiudi/xd75/keymaps/replicajunction/keymap.c
index 71ef2a6683..41a7da189a 100644
--- a/keyboards/xiudi/xd75/keymaps/replicajunction/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/replicajunction/keymap.c
@@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[L_FN] = LAYOUT_ortho_5x15(
DF_TYPE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, MS_JIGL, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
DF_GAME, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, _______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______, KC_F12,
- _______, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_CAPS, RESET, _______, KC_MUTE, _______, _______, _______, _______, _______,
+ _______, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, KC_CAPS, QK_BOOT, _______, KC_MUTE, _______, _______, _______, _______, _______,
_______, RGB_M_P, RGB_M_B, _______, _______, _______, _______, _______, _______, KC_VOLD, K_SECR1, K_SECR2, K_SECR3, K_SECR4, _______,
_______, _______, _______, ooooooo, _______, _______, _______, _______, _______, _______, _______, ooooooo, _______, _______, _______
),
@@ -118,7 +118,7 @@ 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_NLCK, KC_SLSH, KC_ASTR, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
// 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_F12,
- // KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, RGB_SAD, RGB_SAI, KC_P4, KC_P5, KC_P6, KC_PLUS, _______, RESET, _______, _______, _______,
+ // KC_MPRV, KC_MPLY, KC_MNXT, KC_MSTP, RGB_SAD, RGB_SAI, KC_P4, KC_P5, KC_P6, KC_PLUS, _______, QK_BOOT, _______, _______, _______,
// KC_VOLD, KC_MUTE, KC_VOLU, KC_APP, RGB_VAD, RGB_VAI, KC_P1, KC_P2, KC_P3, KC_PENT, _______, _______, _______, _______, _______,
// _______, _______, RGB_TOG, ooooooo, RGB_RMOD,RGB_MOD, KC_P0, _______, KC_PDOT, KC_PENT, KC_PENT, ooooooo, _______, _______, _______
// )
diff --git a/keyboards/xiudi/xd75/keymaps/revok75/keymap.c b/keyboards/xiudi/xd75/keymaps/revok75/keymap.c
index 44e2c52033..4e8b821ca7 100644
--- a/keyboards/xiudi/xd75/keymaps/revok75/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/revok75/keymap.c
@@ -70,7 +70,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* .--------------------------------------------------------------------------------------------------------------------------------------.
* | ESC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | VOLDN | VOLUP | MUTE | DEL |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
-* | TAB | - | WIN | - | - | RGB_TOG| - | - | OPTION | RESET | - | [ | ] | - | - |
+* | TAB | - | WIN | - | - | RGB_TOG| - | - | OPTION | QK_BOOT | - | [ | ] | - | - |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------+--------|
* | CAP LK | MAC | RAINBOW| PLAIN | - | - | - | - | - | - | ; | ' | ENTER | ENTER | REF |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------------------------+--------|
@@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN] = LAYOUT_ortho_5x15( /* OSLAYOUT + NUMPAD + MEDIA + LIGHTING */
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_VOLD, KC_VOLU, KC_MUTE, KC_DEL, \
- KC_TRNS, KC_NO, DF(_QW_W), KC_NO, KC_NO, RGB_TOG, KC_NO, KC_NO, KC_RALT, RESET, KC_NO, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, \
+ KC_TRNS, KC_NO, DF(_QW_W), KC_NO, KC_NO, RGB_TOG, KC_NO, KC_NO, KC_RALT, QK_BOOT, KC_NO, KC_LBRC, KC_RBRC, KC_TRNS, KC_TRNS, \
KC_TRNS, DF(_QW_M), RGB_MODE_RAINBOW, RGB_MODE_PLAIN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, \
KC_TRNS, RGB_VAI, RGB_VAD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_NO, KC_NO, KC_DOT, KC_TRNS, KC_TRNS, KC_TRNS, 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_TRNS, KC_TRNS, KC_PGUP, KC_END, KC_PGDN \
diff --git a/keyboards/xiudi/xd75/keymaps/scheiklb/keymap.c b/keyboards/xiudi/xd75/keymaps/scheiklb/keymap.c
index 3dc011a2cb..d54699ada4 100644
--- a/keyboards/xiudi/xd75/keymaps/scheiklb/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/scheiklb/keymap.c
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
},
[_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},
+ { QK_BOOT, 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 },
diff --git a/keyboards/xiudi/xd75/keymaps/scheiklp/keymap.c b/keyboards/xiudi/xd75/keymaps/scheiklp/keymap.c
index 594d34ce33..dcd1ac563f 100644
--- a/keyboards/xiudi/xd75/keymaps/scheiklp/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/scheiklp/keymap.c
@@ -78,7 +78,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Layer 7
* .--------------------------------------------------------------------------------------------------------------------------------------------------------------.
- * | ESC | | | Button 3 | | | | | | | | | | | RESET |
+ * | ESC | | | Button 3 | | | | | | | | | | | QK_BOOT |
* |---------+----------+----------+----------+----------+------------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
* | TAB | Wheel up | Button 2 | Up | Button 1 | Wheel down | | | | | | | | | |
* |---------+----------+----------+----------+----------+------------+-----------+-----------+--------+---------+--------+--------+--------+-----------+---------|
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* '--------------------------------------------------------------------------------------------------------------------------------------------------------------'
*/
[_7] = LAYOUT_ortho_5x15( /* Layer 7 */
- KC_ESC, KC_TRNS, KC_TRNS, KC_MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET,
+ KC_ESC, KC_TRNS, KC_TRNS, KC_MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
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_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_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_TRNS, KC_TRNS,
diff --git a/keyboards/xiudi/xd75/keymaps/skewwhiffy/keymap.c b/keyboards/xiudi/xd75/keymaps/skewwhiffy/keymap.c
index 3db29a3636..b668f23a57 100644
--- a/keyboards/xiudi/xd75/keymaps/skewwhiffy/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/skewwhiffy/keymap.c
@@ -194,7 +194,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* Navigation _NA
* .--------------------------------------------------------------------------------------------------------------------------------------.
- * | RESET | COLEMA | DVORAK | QWERTY | | RGB_TG | | | | | | | | | |
+ * | QK_BOOT | COLEMA | DVORAK | QWERTY | | RGB_TG | | | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | Esc | Ctrl L | Up | Ctrl R | | RGB HD | RGB HI | | | | | PtSn | ScLk | Pause | |
* +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
@@ -206,14 +206,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* '--------------------------------------------------------------------------------------------------------------------------------------'
*/
[nal] = LAYOUT_ortho_5x15( \
- RESET, DF(cm), DF(dv), DF(qw), _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ QK_BOOT, DF(cm), DF(dv), DF(qw), _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
KC_ESC, _C_LEFT, KC_UP , _C_RGHT, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, \
KC_TAB, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _TERM , \
_S_TAB, _A_LEFT, IJ_OMN, __NAL, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, KC_SLCK, KC_END, KC_PGDN, _______, \
_______, _______, _______, _______, _______, RGB_RMOD,RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______ \
),
[nar] = LAYOUT_ortho_5x15( \
- RESET, DF(cm), DF(dv), DF(qw), _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ QK_BOOT, DF(cm), DF(dv), DF(qw), _______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
KC_ESC, _C_LEFT, KC_UP , _C_RGHT, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______, \
KC_TAB, KC_LEFT, KC_DOWN, KC_RGHT, _______, RGB_SAD, RGB_SAI, _______, _______, _______, _______, KC_INS, KC_HOME, KC_PGUP, _TERM , \
_S_TAB, _A_LEFT, IJ_OMN, _A_RGHT, _______, RGB_VAD, RGB_VAI, _______, _______, _______, _______, __NAR, KC_END, KC_PGDN, _______, \
diff --git a/keyboards/xiudi/xd75/keymaps/tdl-jturner/config.h b/keyboards/xiudi/xd75/keymaps/tdl-jturner/config.h
index 596aaff665..210c4441c3 100644
--- a/keyboards/xiudi/xd75/keymaps/tdl-jturner/config.h
+++ b/keyboards/xiudi/xd75/keymaps/tdl-jturner/config.h
@@ -24,7 +24,6 @@
//#define TAPPING_TERM 200
#define TAPPING_TOGGLE 2
//#define PERMISSIVE_HOLD
-//#define QMK_KEYS_PER_SCAN 4
#define FORCE_NKRO
#define MOUSEKEY_INTERVAL 16
diff --git a/keyboards/xiudi/xd75/keymaps/tdl-jturner/keymap.c b/keyboards/xiudi/xd75/keymaps/tdl-jturner/keymap.c
index b7b98cd4c5..e0cc76a2bb 100644
--- a/keyboards/xiudi/xd75/keymaps/tdl-jturner/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/tdl-jturner/keymap.c
@@ -144,7 +144,7 @@ LT(_LYMD,KC_ESC), KC_A , KC_R , KC_S , KC_T , KC_D ,________ ,_______
LAYOUT_ortho_5x15(
________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,
KC_LYDEF,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,________,
- ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,QWERTY ,COLEMAK ,___XX___,RESET,
+ ________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,QWERTY ,COLEMAK ,___XX___,QK_BOOT,
________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,___XX___,
________,________,________,________,________,________,________,________,________,________,___XX___,___XX___,___XX___,___XX___,___XX___
),
@@ -180,7 +180,7 @@ void matrix_init_user(void) {
//Set a color based on the layer
layer_state_t layer_state_set_user(layer_state_t state) {
- switch(biton32(state)) {
+ switch(get_highest_layer(state)) {
case _LYFK:
rgblight_setrgb_user_LYFK();
break;
diff --git a/keyboards/xiudi/xd75/keymaps/tomswartz07/keymap.c b/keyboards/xiudi/xd75/keymaps/tomswartz07/keymap.c
index 175ddb53b2..54913b29b4 100644
--- a/keyboards/xiudi/xd75/keymaps/tomswartz07/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/tomswartz07/keymap.c
@@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | | | | | RGB HD | RGB HI | | | | | | | PR SCR | SCR LK | INSERT |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
- * | PREV | PLAY | NEXT | | RGB SD | RGB SI | LEFT | DOWN | UP | RIGHT | | RESET | | | |
+ * | PREV | PLAY | NEXT | | RGB SD | RGB SI | LEFT | DOWN | UP | RIGHT | | QK_BOOT | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | VOL- | MUTE | VOL+ |RGB RMD | RGB VD | RGB VI | | | | | | | | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
@@ -113,8 +113,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_ADJUST] = LAYOUT_ortho_5x15( /* ADJUST */
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NLCK, KC_SLSH,
- _______, RESET, _______, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_INS,
- KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_SAD, RGB_SAI, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,_______, RESET, _______, _______, _______,
+ _______, QK_BOOT, _______, _______, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_INS,
+ KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_SAD, RGB_SAI, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,_______, QK_BOOT, _______, _______, _______,
KC_VOLD, KC_MUTE, KC_VOLU, RGB_RMOD,RGB_VAD, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
diff --git a/keyboards/xiudi/xd75/keymaps/xo/keymap.c b/keyboards/xiudi/xd75/keymaps/xo/keymap.c
index 6fe547e87a..58dd1a616a 100644
--- a/keyboards/xiudi/xd75/keymaps/xo/keymap.c
+++ b/keyboards/xiudi/xd75/keymaps/xo/keymap.c
@@ -27,11 +27,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_ortho_5x15(
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_P7, KC_P8, KC_P9, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
LCTL(KC_GRV), KC_CALC, KC_MYCM, KC_MAIL, RGB_HUD, RGB_HUI, KC_P4, KC_P5, KC_P6, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18,
- KC_CAPSLOCK, KC_TRNS, KC_TRNS, KC_MSTP, RGB_SAD, RGB_SAI, KC_P1, KC_P2, KC_P3, KC_PLUS, KC_TRNS, RESET, KC_MUTE, KC_VOLD, KC_VOLU,
+ KC_CAPSLOCK, KC_TRNS, KC_TRNS, KC_MSTP, RGB_SAD, RGB_SAI, KC_P1, KC_P2, KC_P3, KC_PLUS, KC_TRNS, QK_BOOT, KC_MUTE, KC_VOLD, KC_VOLU,
MO(2), KC_PSCR, KC_PAUS, KC_APP, RGB_VAD, RGB_VAI, KC_P0, KC_SLSH, KC_PDOT, KC_PENT, KC_TRNS, KC_TRNS, KC_MPRV, KC_MPLY, KC_MNXT,
TG(1), KC_TRNS, RGB_TOG, KC_SLCK, RGB_RMOD, RGB_MOD, KC_NLCK, KC_TRNS, KC_ASTR, KC_PENT, KC_PENT, MO(1), KC_TRNS, KC_TRNS, TG(1)),
[2] = LAYOUT_ortho_5x15(
- 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,
+ QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, BL_DEC, BL_INC, BL_TOGG,
diff --git a/keyboards/xiudi/xd84/config.h b/keyboards/xiudi/xd84/config.h
index a96793cd75..0131e0dfa3 100644
--- a/keyboards/xiudi/xd84/config.h
+++ b/keyboards/xiudi/xd84/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7844 // "XD"
-#define PRODUCT_ID 0x8484
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KPrepublic
-#define PRODUCT XD84
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
@@ -41,7 +34,6 @@
*/
//#define MATRIX_ROW_PINS { D0, D5 }
//#define MATRIX_COL_PINS { F1, F0, B0 }
-//#define UNUSED_PINS
/* COL2ROW, ROW2COL */
//#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xiudi/xd84/info.json b/keyboards/xiudi/xd84/info.json
index e24a5a92a1..7c02fdeeef 100644
--- a/keyboards/xiudi/xd84/info.json
+++ b/keyboards/xiudi/xd84/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "XD84",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7844",
+ "pid": "0x8484",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_75_ansi": {
"layout": [
diff --git a/keyboards/xiudi/xd84pro/config.h b/keyboards/xiudi/xd84pro/config.h
index 797d209db3..3c43fb79ff 100644
--- a/keyboards/xiudi/xd84pro/config.h
+++ b/keyboards/xiudi/xd84pro/config.h
@@ -18,20 +18,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7844 // "xD"
-#define PRODUCT_ID 0x8450 // 84 "P"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KPrepublic
-#define PRODUCT XD84 Pro
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
#define MATRIX_ROW_PINS { F4, D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3, F7 }
-#define UNUSED_PINS { B0, E2 }
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xiudi/xd84pro/info.json b/keyboards/xiudi/xd84pro/info.json
index b8e92158b8..36d52e5f72 100644
--- a/keyboards/xiudi/xd84pro/info.json
+++ b/keyboards/xiudi/xd84pro/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "XD84 Pro",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7844",
+ "pid": "0x8450",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/xiudi/xd87/config.h b/keyboards/xiudi/xd87/config.h
index 5f5b704f36..c6b4a0a682 100644
--- a/keyboards/xiudi/xd87/config.h
+++ b/keyboards/xiudi/xd87/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7844 // "XD"
-#define PRODUCT_ID 0x8787
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KP Republic
-#define PRODUCT XD87 TKL
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -44,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_ROW_PINS { D1, B0, B1, C7, D3, D5 }
#define MATRIX_COL_PINS { E6, F0, F1, F4, F5, F6, F7, B5, B6, C6, D4, D6, D7, B4, B2, B3, D2 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xiudi/xd87/info.json b/keyboards/xiudi/xd87/info.json
index 4f4f82fdaf..922d0641f2 100644
--- a/keyboards/xiudi/xd87/info.json
+++ b/keyboards/xiudi/xd87/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "XD87",
+ "manufacturer": "KPrepublic",
"url": "https://kprepublic.com/products/hot-swappable-xd87-hs-xd87-custom-mechanical-keyboard-kit80-supports-tkg-tools-support-underglow-rgb-pcb-programmed-gh80-kle",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7844",
+ "pid": "0x8787",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/xiudi/xd87/keymaps/mac_underglow/keymap.c b/keyboards/xiudi/xd87/keymaps/mac_underglow/keymap.c
index db27e5ea3b..5ea4bb5a9a 100755
--- a/keyboards/xiudi/xd87/keymaps/mac_underglow/keymap.c
+++ b/keyboards/xiudi/xd87/keymaps/mac_underglow/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_tkl_ansi(
- RESET, EEP_RST, DEBUG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, EEP_RST, DEBUG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, 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,
KC_TRNS, RGB_TOG, RGB_VAI, RGB_MOD, RGB_HUI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, BL_BRTG, BL_DEC,
KC_TRNS, KC_TRNS, RGB_VAD, RGB_RMOD,RGB_HUD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/keyboards/xiudi/xd96/config.h b/keyboards/xiudi/xd96/config.h
index ddf97f9d00..8665cc5776 100644
--- a/keyboards/xiudi/xd96/config.h
+++ b/keyboards/xiudi/xd96/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7844 // "XD"
-#define PRODUCT_ID 0x9696
-#define DEVICE_VER 0x0001
-#define MANUFACTURER KPrepublic
-#define PRODUCT XD96
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 18
@@ -41,7 +34,6 @@
*/
//#define MATRIX_ROW_PINS { D0, D5 }
//#define MATRIX_COL_PINS { F1, F0, B0 }
-//#define UNUSED_PINS
/* COL2ROW, ROW2COL */
//#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xiudi/xd96/info.json b/keyboards/xiudi/xd96/info.json
index 4b01ab9ed7..aa9f2a7522 100644
--- a/keyboards/xiudi/xd96/info.json
+++ b/keyboards/xiudi/xd96/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "xd96",
+ "keyboard_name": "XD96",
+ "manufacturer": "KPrepublic",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7844",
+ "pid": "0x9696",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_96_ansi": {
"layout": [
diff --git a/keyboards/xiudi/xd96/keymaps/uuupah/keymap.c b/keyboards/xiudi/xd96/keymaps/uuupah/keymap.c
index a3a3da91db..39ca291a8d 100644
--- a/keyboards/xiudi/xd96/keymaps/uuupah/keymap.c
+++ b/keyboards/xiudi/xd96/keymaps/uuupah/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT_all(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RESET, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, QK_BOOT, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_MPLY, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, KC_PSCR, _______, _______, _______, _______, _______,
_______, KC_MPRV, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RGHT, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/xmmx/config.h b/keyboards/xmmx/config.h
index 773f612089..1e9f2c9398 100644
--- a/keyboards/xmmx/config.h
+++ b/keyboards/xmmx/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6776
-#define DEVICE_VER 0x0001
-#define MANUFACTURER farmakon
-#define PRODUCT "XMMX"
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, F6, F5, F4, F1, F0 }
#define MATRIX_COL_PINS { B3, B2, B1, E6, B7, C7, C6, D4, D6, D7, B4, D0, D1, F7, D2, D3, D5 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xmmx/info.json b/keyboards/xmmx/info.json
index b96b4e1352..30b6cee59d 100644
--- a/keyboards/xmmx/info.json
+++ b/keyboards/xmmx/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "XMMX",
+ "manufacturer": "farmakon",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6776",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/xw60/config.h b/keyboards/xw60/config.h
index 2bea6db399..4dd64632f3 100644
--- a/keyboards/xw60/config.h
+++ b/keyboards/xw60/config.h
@@ -2,20 +2,12 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Drclick
-#define PRODUCT XW60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, B7, B5, B4, D7, D6, B3 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/xw60/info.json b/keyboards/xw60/info.json
index e3284a6905..40f3f44760 100644
--- a/keyboards/xw60/info.json
+++ b/keyboards/xw60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "XW60",
+ "manufacturer": "Drclick",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"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}, {"label":"K49", "x":14, "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":"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":"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":"K3C", "x":14, "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":2}, {"label":"K45", "x":5.75, "y":4, "w":2.25}, {"label":"K46", "x":8, "y":4, "w":2}, {"label":"K4A", "x":10, "y":4, "w":1.25}, {"label":"K4B", "x":11.25, "y":4, "w":1.25}, {"label":"K4C", "x":12.5, "y":4, "w":1.25}, {"label":"K4D", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/yampad/config.h b/keyboards/yampad/config.h
index 2e03580060..4ba5d76c53 100644
--- a/keyboards/yampad/config.h
+++ b/keyboards/yampad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5950 // YP
-#define PRODUCT_ID 0x8369
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Mattia Dal Ben
-#define PRODUCT Yampad
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 4
diff --git a/keyboards/yampad/info.json b/keyboards/yampad/info.json
index 3b3a1fe15f..7ef19ecee0 100644
--- a/keyboards/yampad/info.json
+++ b/keyboards/yampad/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Yampad",
+ "manufacturer": "Mattia Dal Ben",
"url": "",
"maintainer": "mattdibi",
+ "usb": {
+ "vid": "0x5950",
+ "pid": "0x8369",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/yampad/keymaps/traditional/keymap.c b/keyboards/yampad/keymaps/traditional/keymap.c
index 78778cc34b..155a9e36a3 100644
--- a/keyboards/yampad/keymaps/traditional/keymap.c
+++ b/keyboards/yampad/keymaps/traditional/keymap.c
@@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
RGB_HUD, RGB_HUI, XXXXXXX,
RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX,
RGB_VAD, RGB_VAI, XXXXXXX,
- RESET, XXXXXXX, XXXXXXX, XXXXXXX
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX
),
};
diff --git a/keyboards/yandrstudio/nz64/config.h b/keyboards/yandrstudio/nz64/config.h
index 2abdae1d31..665cc96275 100644
--- a/keyboards/yandrstudio/nz64/config.h
+++ b/keyboards/yandrstudio/nz64/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xAA96
-#define PRODUCT_ID 0xAAAF
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Y&R
-#define PRODUCT nz64
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
diff --git a/keyboards/yandrstudio/nz64/readme.md b/keyboards/yandrstudio/nz64/readme.md
index ca52d65ee9..f495839aa3 100644
--- a/keyboards/yandrstudio/nz64/readme.md
+++ b/keyboards/yandrstudio/nz64/readme.md
@@ -19,4 +19,4 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key which is Escape in this keyboard) and plug in the keyboard
* **Physical reset pins**: Short circuit the `bt0` and `vcc` pins on the back of the PCB and plug in the keyboard
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
diff --git a/keyboards/yandrstudio/nz64/rules.mk b/keyboards/yandrstudio/nz64/rules.mk
index 298305d3f9..8debea0e66 100644
--- a/keyboards/yandrstudio/nz64/rules.mk
+++ b/keyboards/yandrstudio/nz64/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/yandrstudio/nz67v2/board.h b/keyboards/yandrstudio/nz67v2/board.h
new file mode 100644
index 0000000000..a667bee461
--- /dev/null
+++ b/keyboards/yandrstudio/nz67v2/board.h
@@ -0,0 +1,22 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 STM32_HSECLK
+#define STM32_HSECLK 16000000
diff --git a/keyboards/yandrstudio/nz67v2/config.h b/keyboards/yandrstudio/nz67v2/config.h
new file mode 100644
index 0000000000..5d0aa382de
--- /dev/null
+++ b/keyboards/yandrstudio/nz67v2/config.h
@@ -0,0 +1,109 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 5
+#define MATRIX_COLS 15
+
+/* key matrix pins */
+#define MATRIX_COL_PINS { B9, A3, A4, A5, A6, A7, B0, B2, B10, B11, B12, B13, B14, B15, A8 }
+#define MATRIX_ROW_PINS { B3, B4, B6, B7, B8 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define TAP_CODE_DELAY 15
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+#ifdef ENCODER_ENABLE
+
+# define ENCODERS_PAD_A { A9 }
+# define ENCODERS_PAD_B { A10 }
+
+#endif
+
+/* RGB Matrix */
+#ifdef RGB_MATRIX_ENABLE
+
+# define RGB_DI_PIN B5
+# define RGBLED_NUM 86
+# define DRIVER_LED_TOTAL RGBLED_NUM
+
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180
+# define RGBLIGHT_VAL_STEP 5
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_CENTER { 112, 32 }
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_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 WS2812_PWM_DRIVER PWMD3 // default: PWMD2
+# define WS2812_PWM_CHANNEL 2 // default: 2
+# define WS2812_DMA_STREAM STM32_DMA1_STREAM3 // 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.
+
+#endif
diff --git a/keyboards/yandrstudio/nz67v2/halconf.h b/keyboards/yandrstudio/nz67v2/halconf.h
new file mode 100644
index 0000000000..93a0f05126
--- /dev/null
+++ b/keyboards/yandrstudio/nz67v2/halconf.h
@@ -0,0 +1,22 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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>
+
+#undef HAL_USE_PWM
+#define HAL_USE_PWM TRUE
+
diff --git a/keyboards/yandrstudio/nz67v2/info.json b/keyboards/yandrstudio/nz67v2/info.json
new file mode 100644
index 0000000000..3e5e2b4afa
--- /dev/null
+++ b/keyboards/yandrstudio/nz67v2/info.json
@@ -0,0 +1,382 @@
+{
+ "keyboard_name": "nz67v2",
+ "processor": "STM32F103",
+ "bootloader": "stm32duino",
+ "usb": {
+ "pid": "0xAA83",
+ "device_version": "1.0.0"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {
+ "label": "EC",
+ "x": 16,
+ "y": 0
+ },
+ {
+ "label": "~",
+ "x": 0,
+ "y": 0.5
+ },
+ {
+ "label": "!",
+ "x": 1,
+ "y": 0.5
+ },
+ {
+ "label": "@",
+ "x": 2,
+ "y": 0.5
+ },
+ {
+ "label": "#",
+ "x": 3,
+ "y": 0.5
+ },
+ {
+ "label": "$",
+ "x": 4,
+ "y": 0.5
+ },
+ {
+ "label": "%",
+ "x": 5,
+ "y": 0.5
+ },
+ {
+ "label": "^",
+ "x": 6,
+ "y": 0.5
+ },
+ {
+ "label": "&",
+ "x": 7,
+ "y": 0.5
+ },
+ {
+ "label": "*",
+ "x": 8,
+ "y": 0.5
+ },
+ {
+ "label": "(",
+ "x": 9,
+ "y": 0.5
+ },
+ {
+ "label": ")",
+ "x": 10,
+ "y": 0.5
+ },
+ {
+ "label": "_",
+ "x": 11,
+ "y": 0.5
+ },
+ {
+ "label": "+",
+ "x": 12,
+ "y": 0.5
+ },
+ {
+ "label": "Backspace",
+ "x": 13,
+ "y": 0.5,
+ "w": 2
+ },
+ {
+ "label": "Insert",
+ "x": 15,
+ "y": 0.5
+ },
+ {
+ "label": "EC",
+ "x": 16,
+ "y": 1
+ },
+ {
+ "label": "Tab",
+ "x": 0,
+ "y": 1.5,
+ "w": 1.5
+ },
+ {
+ "label": "Q",
+ "x": 1.5,
+ "y": 1.5
+ },
+ {
+ "label": "W",
+ "x": 2.5,
+ "y": 1.5
+ },
+ {
+ "label": "E",
+ "x": 3.5,
+ "y": 1.5
+ },
+ {
+ "label": "R",
+ "x": 4.5,
+ "y": 1.5
+ },
+ {
+ "label": "T",
+ "x": 5.5,
+ "y": 1.5
+ },
+ {
+ "label": "Y",
+ "x": 6.5,
+ "y": 1.5
+ },
+ {
+ "label": "U",
+ "x": 7.5,
+ "y": 1.5
+ },
+ {
+ "label": "I",
+ "x": 8.5,
+ "y": 1.5
+ },
+ {
+ "label": "O",
+ "x": 9.5,
+ "y": 1.5
+ },
+ {
+ "label": "P",
+ "x": 10.5,
+ "y": 1.5
+ },
+ {
+ "label": "{",
+ "x": 11.5,
+ "y": 1.5
+ },
+ {
+ "label": "}",
+ "x": 12.5,
+ "y": 1.5
+ },
+ {
+ "label": "|",
+ "x": 13.5,
+ "y": 1.5,
+ "w": 1.5
+ },
+ {
+ "label": "PgUp",
+ "x": 15,
+ "y": 1.5
+ },
+ {
+ "label": "Caps Lock",
+ "x": 0,
+ "y": 2.5,
+ "w": 1.75
+ },
+ {
+ "label": "A",
+ "x": 1.75,
+ "y": 2.5
+ },
+ {
+ "label": "S",
+ "x": 2.75,
+ "y": 2.5
+ },
+ {
+ "label": "D",
+ "x": 3.75,
+ "y": 2.5
+ },
+ {
+ "label": "F",
+ "x": 4.75,
+ "y": 2.5
+ },
+ {
+ "label": "G",
+ "x": 5.75,
+ "y": 2.5
+ },
+ {
+ "label": "H",
+ "x": 6.75,
+ "y": 2.5
+ },
+ {
+ "label": "J",
+ "x": 7.75,
+ "y": 2.5
+ },
+ {
+ "label": "K",
+ "x": 8.75,
+ "y": 2.5
+ },
+ {
+ "label": "L",
+ "x": 9.75,
+ "y": 2.5
+ },
+ {
+ "label": ":",
+ "x": 10.75,
+ "y": 2.5
+ },
+ {
+ "label": "\"",
+ "x": 11.75,
+ "y": 2.5
+ },
+ {
+ "label": "Enter",
+ "x": 12.75,
+ "y": 2.5,
+ "w": 2.25
+ },
+ {
+ "label": "PgDn",
+ "x": 15,
+ "y": 2.5
+ },
+ {
+ "label": "Shift",
+ "x": 0,
+ "y": 3.5,
+ "w": 2.25
+ },
+ {
+ "label": "Z",
+ "x": 2.25,
+ "y": 3.5
+ },
+ {
+ "label": "X",
+ "x": 3.25,
+ "y": 3.5
+ },
+ {
+ "label": "C",
+ "x": 4.25,
+ "y": 3.5
+ },
+ {
+ "label": "V",
+ "x": 5.25,
+ "y": 3.5
+ },
+ {
+ "label": "B",
+ "x": 6.25,
+ "y": 3.5
+ },
+ {
+ "label": "N",
+ "x": 7.25,
+ "y": 3.5
+ },
+ {
+ "label": "M",
+ "x": 8.25,
+ "y": 3.5
+ },
+ {
+ "label": "<",
+ "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.75
+ },
+ {
+ "label": "\u2191",
+ "x": 14,
+ "y": 3.5
+ },
+ {
+ "label": "Delete",
+ "x": 15,
+ "y": 3.5
+ },
+ {
+ "label": "Ctrl",
+ "x": 0,
+ "y": 4.5,
+ "w": 1.25
+ },
+ {
+ "label": "Win",
+ "x": 1.25,
+ "y": 4.5,
+ "w": 1.25
+ },
+ {
+ "label": "Alt",
+ "x": 2.5,
+ "y": 4.5,
+ "w": 1.25
+ },
+ {
+ "x": 3.75,
+ "y": 4.5,
+ "w": 2.25
+ },
+ {
+ "x": 6,
+ "y": 4.5,
+ "w": 1.75
+ },
+ {
+ "x": 7.75,
+ "y": 4.5,
+ "w": 2.25
+ },
+ {
+ "label": "Alt",
+ "x": 10,
+ "y": 4.5,
+ "w": 1.25
+ },
+ {
+ "label": "Fn",
+ "x": 11.25,
+ "y": 4.5,
+ "w": 1.25
+ },
+ {
+ "label": "\u2190",
+ "x": 13,
+ "y": 4.5
+ },
+ {
+ "label": "\u2193",
+ "x": 14,
+ "y": 4.5
+ },
+ {
+ "label": "\u2192",
+ "x": 15,
+ "y": 4.5
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/yandrstudio/nz67v2/keymaps/default/keymap.c b/keyboards/yandrstudio/nz67v2/keymaps/default/keymap.c
new file mode 100644
index 0000000000..7416296d5d
--- /dev/null
+++ b/keyboards/yandrstudio/nz67v2/keymaps/default/keymap.c
@@ -0,0 +1,33 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_VOLD,KC_SPC, KC_VOLU, 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_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, URGB_K, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS, KC_TRNS, LOCK_GUI,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,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)
+};
+
diff --git a/keyboards/yandrstudio/nz67v2/keymaps/via/keymap.c b/keyboards/yandrstudio/nz67v2/keymaps/via/keymap.c
new file mode 100644
index 0000000000..c93b321727
--- /dev/null
+++ b/keyboards/yandrstudio/nz67v2/keymaps/via/keymap.c
@@ -0,0 +1,76 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_VOLD,KC_SPC, KC_VOLU, 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_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, URGB_K, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_TRNS, KC_TRNS, KC_TRNS, LOCK_GUI,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_RMOD,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),
+ [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),
+ [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)
+};
+#ifdef ENCODER_ENABLE
+keyevent_t encoder1_ccw = {.key = (keypos_t){.row = 4, .col = 4}, .pressed = false};
+
+keyevent_t encoder1_cw = {.key = (keypos_t){.row = 4, .col = 6}, .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);
+ }
+}
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ 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);
+ }
+ return true;
+}
+#endif
diff --git a/keyboards/yandrstudio/nz67v2/keymaps/via/rules.mk b/keyboards/yandrstudio/nz67v2/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/yandrstudio/nz67v2/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/yandrstudio/nz67v2/mcuconf.h b/keyboards/yandrstudio/nz67v2/mcuconf.h
new file mode 100644
index 0000000000..3ec9c20128
--- /dev/null
+++ b/keyboards/yandrstudio/nz67v2/mcuconf.h
@@ -0,0 +1,25 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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_PLLXTPRE
+#define STM32_PLLXTPRE STM32_PLLXTPRE_DIV2
diff --git a/keyboards/yandrstudio/nz67v2/nz67v2.c b/keyboards/yandrstudio/nz67v2/nz67v2.c
new file mode 100644
index 0000000000..b8caa96bc0
--- /dev/null
+++ b/keyboards/yandrstudio/nz67v2/nz67v2.c
@@ -0,0 +1,118 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "nz67v2.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+/* globol var store in eeprom for key and underground rgb switch */
+typedef union {
+ uint32_t raw;
+ uint8_t underground_rgb_sw :8;
+} kb_cums_t;
+kb_cums_t kb_cums;
+
+led_config_t g_led_config = {
+ {
+ {54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68},
+ {53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39},
+ {25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, NO_LED, 37, 38},
+ {24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, NO_LED, 13, 12, 11},
+ {0, 1, 2, 3, NO_LED, 4, NO_LED, 5, NO_LED, 6, 7, NO_LED, 8, 9, 10}
+ },
+ {
+ {0,64},{16,64},{32,64},{48,64}, {80,64}, {112,64}, {144,64},{160,64}, {192,64},{208,64},{224,64},
+ {224,48},{208,48},{192,48}, {160,48},{144,48},{128,48},{112,48},{96,48},{80,48},{64,48},{48,48},{32,48},{16,48},{0,48},
+ {0,32},{16,32},{32,32},{48,32},{64,32},{80,32},{96,32},{112,32},{128,32},{144,32},{160,32},{176,32}, {208,32},{224,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},
+ {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},{208,0},{224,0},
+ {224,0},{196,0},{168,0},{140,0},{112,0},{84,0},{56,0},{28,0},{0,0},
+ {224,64},{196,64},{168,64},{140,64},{112,64},{84,64},{56,64},{28,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,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2
+ }
+};
+
+void rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
+ if (rgb_matrix_is_enabled()) {
+ if (kb_cums.underground_rgb_sw == 1) {
+ for (uint8_t i = led_min; i < led_max; ++i) {
+ if ((g_led_config.flags[i] == 4)) {
+ rgb_matrix_set_color(i, 0, 0, 0);
+ }
+ }
+ } else if (kb_cums.underground_rgb_sw == 2) {
+ for (uint8_t i = led_min; i < led_max; ++i) {
+ if ((g_led_config.flags[i] == 2)) {
+ rgb_matrix_set_color(i, 0, 0, 0);
+ }
+ }
+ }
+ } else {
+ rgb_matrix_set_color_all(0,0,0);
+ }
+ if (host_keyboard_led_state().caps_lock) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(25, rgblight_get_val(), rgblight_get_val(), rgblight_get_val());
+ }
+}
+
+
+void eeconfig_init_kb(void) {
+ kb_cums.raw = 0;
+ eeconfig_update_kb(kb_cums.raw);
+}
+
+void keyboard_post_init_kb(void) {
+ kb_cums.underground_rgb_sw = eeconfig_read_kb();
+}
+
+#endif
+
+
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_user(keycode, record)) { return false; }
+
+ switch(keycode) {
+#ifdef RGB_MATRIX_ENABLE
+ case URGB_K:
+ if (rgb_matrix_config.enable && record->event.pressed) {
+ kb_cums.underground_rgb_sw += 1;
+ kb_cums.underground_rgb_sw %= 3;
+ }
+ eeconfig_update_kb(kb_cums.raw);
+ return false;
+#endif
+ case LOCK_GUI:
+ process_magic(GUI_TOG, record);
+ return false;
+ default:
+ break;
+ }
+ return true;
+}
+
+void board_init(void) {
+ AFIO->MAPR |= AFIO_MAPR_TIM3_REMAP_PARTIALREMAP;
+}
diff --git a/keyboards/yandrstudio/nz67v2/nz67v2.h b/keyboards/yandrstudio/nz67v2/nz67v2.h
new file mode 100644
index 0000000000..d60abef4f1
--- /dev/null
+++ b/keyboards/yandrstudio/nz67v2/nz67v2.h
@@ -0,0 +1,42 @@
+/* Copyright 2020 zvecr <git@zvecr.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K312, K313, K314, \
+ K400, K401, K402, K403, K404, K405, K406, K407, 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, K403, K404, K405, K406, K407, KC_NO, K409, K410, KC_NO, K412, K413, K414 } \
+}
+
+
+
+#ifdef RGB_MATRIX_ENABLE
+# define URGB_K KC_F24
+#else
+# define URGB_K KC_TRNS
+#endif
+
+#define LOCK_GUI KC_F23
diff --git a/keyboards/yandrstudio/nz67v2/readme.md b/keyboards/yandrstudio/nz67v2/readme.md
new file mode 100644
index 0000000000..1e75395fde
--- /dev/null
+++ b/keyboards/yandrstudio/nz67v2/readme.md
@@ -0,0 +1,23 @@
+# nz67v2
+
+![nz67v2](https://i.imgur.com/AHmBuAqh.png)
+
+A 67 keys keyboard with rgb (key and underground).
+This keyboard use 16mhz HSE and APM32F103 as MCU.
+
+- Keyboard Maintainer: https://github.com/jiaxin96
+- Hardware Supported: nz67v2
+- Hardware Availability: [Y&R Works](https://shop417111022.taobao.com/?spm=2013.1.1000126.2.6aea6fa3Uxufe5), [5162](https://shop294487007.taobao.com/?spm=a230r.7195193.1997079397.2.763853eeeaoRl4)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make yandrstudio/nz67v2: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.
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+- **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key which is Escape in this keyboard) and plug in the keyboard
+- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
diff --git a/keyboards/yandrstudio/nz67v2/rules.mk b/keyboards/yandrstudio/nz67v2/rules.mk
new file mode 100644
index 0000000000..a5923514e3
--- /dev/null
+++ b/keyboards/yandrstudio/nz67v2/rules.mk
@@ -0,0 +1,19 @@
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -p FFFF -v 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 = 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 keyboard RGB matrix functionality
+RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
+WS2812_DRIVER = pwm # WS2812 RGB Driver
+ENCODER_ENABLE = yes # Rotary encoder support
diff --git a/keyboards/yandrstudio/tg67/board.h b/keyboards/yandrstudio/tg67/board.h
new file mode 100644
index 0000000000..d83804babd
--- /dev/null
+++ b/keyboards/yandrstudio/tg67/board.h
@@ -0,0 +1,21 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 STM32_HSECLK
+#define STM32_HSECLK 16000000
diff --git a/keyboards/yandrstudio/tg67/config.h b/keyboards/yandrstudio/tg67/config.h
new file mode 100644
index 0000000000..729375f987
--- /dev/null
+++ b/keyboards/yandrstudio/tg67/config.h
@@ -0,0 +1,101 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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 5
+#define MATRIX_COLS 15
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+#define MATRIX_COL_PINS { B2, B10, B11, A8, A9, A10, B5, A15, B3, A2, A3, B4, A4, A5, A6 }
+#define MATRIX_ROW_PINS { B0, B6, B1, B7, A1 }
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* RGB Matrix */
+#ifdef RGB_MATRIX_ENABLE
+
+# define RGB_DI_PIN A7
+# define RGBLED_NUM 69
+# define DRIVER_LED_TOTAL RGBLED_NUM
+
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 250
+# define RGBLIGHT_VAL_STEP 5
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define RGB_MATRIX_CENTER { 112, 32 }
+# define RGB_MATRIX_KEYPRESSES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+# define RGBLIGHT_ANIMATIONS
+
+# 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
+
+# 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 WS2812_PWM_DRIVER PWMD3
+# define WS2812_PWM_CHANNEL 2
+# define WS2812_PWM_PAL_MODE 2
+# define WS2812_DMA_STREAM STM32_DMA1_STREAM3
+# define WS2812_DMA_CHANNEL 3
+
+#endif
diff --git a/keyboards/yandrstudio/tg67/halconf.h b/keyboards/yandrstudio/tg67/halconf.h
new file mode 100644
index 0000000000..1f5f3e7009
--- /dev/null
+++ b/keyboards/yandrstudio/tg67/halconf.h
@@ -0,0 +1,23 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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>
+
+#undef HAL_USE_PWM
+#define HAL_USE_PWM TRUE
+
diff --git a/keyboards/yandrstudio/tg67/info.json b/keyboards/yandrstudio/tg67/info.json
new file mode 100644
index 0000000000..d48809128f
--- /dev/null
+++ b/keyboards/yandrstudio/tg67/info.json
@@ -0,0 +1,362 @@
+{
+ "keyboard_name": "tg67",
+ "processor": "STM32F103",
+ "bootloader": "stm32duino",
+ "usb": {
+ "pid": "0xAA8D",
+ "device_version": "1.0.0"
+ },
+ "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": 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": "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": "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": "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
+ },
+ {
+ "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/yandrstudio/tg67/keymaps/default/keymap.c b/keyboards/yandrstudio/tg67/keymaps/default/keymap.c
new file mode 100644
index 0000000000..17e31d90c5
--- /dev/null
+++ b/keyboards/yandrstudio/tg67/keymaps/default/keymap.c
@@ -0,0 +1,31 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_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_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_HUD, RGB_SAI, RGB_SAD, 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_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)
+};
diff --git a/keyboards/yandrstudio/tg67/keymaps/via/keymap.c b/keyboards/yandrstudio/tg67/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d955a72114
--- /dev/null
+++ b/keyboards/yandrstudio/tg67/keymaps/via/keymap.c
@@ -0,0 +1,43 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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_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_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_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_HUD, RGB_SAI, RGB_SAD, 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_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),
+ [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/yandrstudio/tg67/keymaps/via/rules.mk b/keyboards/yandrstudio/tg67/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/yandrstudio/tg67/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/yandrstudio/tg67/mcuconf.h b/keyboards/yandrstudio/tg67/mcuconf.h
new file mode 100644
index 0000000000..3ec9c20128
--- /dev/null
+++ b/keyboards/yandrstudio/tg67/mcuconf.h
@@ -0,0 +1,25 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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_PLLXTPRE
+#define STM32_PLLXTPRE STM32_PLLXTPRE_DIV2
diff --git a/keyboards/yandrstudio/tg67/readme.md b/keyboards/yandrstudio/tg67/readme.md
new file mode 100644
index 0000000000..7dabbc13d4
--- /dev/null
+++ b/keyboards/yandrstudio/tg67/readme.md
@@ -0,0 +1,22 @@
+# tg67
+
+![tg67](https://imgur.com/gKRrQLkh.png)
+A 65% keyboard with RGBs.
+This keyboard use 16mhz HSE and APM32F103 as MCU.
+
+- Keyboard Maintainer: https://github.com/jiaxin96
+- Hardware Supported: tg67
+- Hardware Availability: https://kineticlabs.com/
+
+Make example for this keyboard (after setting up your build environment):
+
+ make yandrstudio/tg67: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.
+
+## Bootloader
+
+Enter the bootloader in 2 ways:
+
+- **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key which is Escape in this keyboard) and plug in the keyboard
+- **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
diff --git a/keyboards/yandrstudio/tg67/rules.mk b/keyboards/yandrstudio/tg67/rules.mk
new file mode 100644
index 0000000000..4f60885efd
--- /dev/null
+++ b/keyboards/yandrstudio/tg67/rules.mk
@@ -0,0 +1,18 @@
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -p FFFF -v 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 = 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 keyboard RGB Matrix
+RGB_MATRIX_DRIVER = WS2812 # RGB matrix driver support
+WS2812_DRIVER = pwm # WS2812 RGB Driver
diff --git a/keyboards/yandrstudio/tg67/tg67.c b/keyboards/yandrstudio/tg67/tg67.c
new file mode 100644
index 0000000000..b1f3907a22
--- /dev/null
+++ b/keyboards/yandrstudio/tg67/tg67.c
@@ -0,0 +1,46 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "tg67.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+led_config_t g_led_config = {
+ {
+ {54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68},
+ {53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39},
+ {25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, NO_LED, 37, 38},
+ {24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, NO_LED, 13, 12, 11},
+ {0, 1, 2, NO_LED, NO_LED, 4, NO_LED, NO_LED, NO_LED, 6, 7, NO_LED, 8, 9, 10}
+ },
+ {
+ {0,64},{16,64},{32,64},{48,64}, {80,64}, {112,64}, {144,64},{160,64}, {192,64},{208,64},{224,64},
+ {224,48},{208,48},{192,48}, {160,48},{144,48},{128,48},{112,48},{96,48},{80,48},{64,48},{48,48},{32,48},{16,48},{0,48},
+ {0,32},{16,32},{32,32},{48,32},{64,32},{80,32},{96,32},{112,32},{128,32},{144,32},{160,32},{176,32}, {208,32},{224,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},
+ {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},{208,0},{224,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, 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/yandrstudio/tg67/tg67.h b/keyboards/yandrstudio/tg67/tg67.h
new file mode 100644
index 0000000000..efb7d68059
--- /dev/null
+++ b/keyboards/yandrstudio/tg67/tg67.h
@@ -0,0 +1,33 @@
+/* Copyright 2022 JasonRen(biu)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have 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, 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/yandrstudio/zhou65/config.h b/keyboards/yandrstudio/zhou65/config.h
index 3dbfd3b436..23638206f7 100644
--- a/keyboards/yandrstudio/zhou65/config.h
+++ b/keyboards/yandrstudio/zhou65/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xAA96
-#define PRODUCT_ID 0xAAAD
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ZHOU_Y&R
-#define PRODUCT zhou65
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/yandrstudio/zhou65/readme.md b/keyboards/yandrstudio/zhou65/readme.md
index 31f57f2f96..802943ae39 100644
--- a/keyboards/yandrstudio/zhou65/readme.md
+++ b/keyboards/yandrstudio/zhou65/readme.md
@@ -19,4 +19,4 @@ Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key which is Escape in this keyboard) and plug in the keyboard
* **Physical reset pins**: Short circuit the `bt0` and `vcc` pins on the back of the PCB and plug in the keyboard
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available.
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
diff --git a/keyboards/yandrstudio/zhou65/rules.mk b/keyboards/yandrstudio/zhou65/rules.mk
index 35a39a549a..0a84b0a1fe 100644
--- a/keyboards/yandrstudio/zhou65/rules.mk
+++ b/keyboards/yandrstudio/zhou65/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = GENERIC_STM32_F401XC
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/yanghu/unicorne/config.h b/keyboards/yanghu/unicorne/config.h
index 27d21c7906..749f7f69e4 100644
--- a/keyboards/yanghu/unicorne/config.h
+++ b/keyboards/yanghu/unicorne/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x0204
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yanghu
-#define PRODUCT unicorne
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/yanghu/unicorne/f411/rules.mk b/keyboards/yanghu/unicorne/f411/rules.mk
index b32a8b7f5b..c25a64f4b3 100644
--- a/keyboards/yanghu/unicorne/f411/rules.mk
+++ b/keyboards/yanghu/unicorne/f411/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/yanghu/unicorne/info.json b/keyboards/yanghu/unicorne/info.json
index 995bed8a03..67bb7f657d 100644
--- a/keyboards/yanghu/unicorne/info.json
+++ b/keyboards/yanghu/unicorne/info.json
@@ -1,9 +1,18 @@
{
"keyboard_name": "Unicorne",
+ "manufacturer": "yanghu",
"url": "https://github.com/yanghu/unicorne",
"maintainer": "yanghu",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0204",
+ "device_version": "0.0.1"
+ },
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_split_3x6_4"
+ },
"layouts": {
- "LAYOUT_unicorne": {
+ "LAYOUT_split_3x6_4": {
"layout": [
{"label":"Tab", "x":0, "y":0.8},
{"label":"Q", "x":1, "y":0.8},
@@ -59,4 +68,4 @@
]
}
}
-}
+}
diff --git a/keyboards/yanghu/unicorne/keymaps/bcat/keymap.c b/keyboards/yanghu/unicorne/keymaps/bcat/keymap.c
index 3da9f880ae..af1e92a984 100644
--- a/keyboards/yanghu/unicorne/keymaps/bcat/keymap.c
+++ b/keyboards/yanghu/unicorne/keymaps/bcat/keymap.c
@@ -47,7 +47,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* 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_TOG, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______,
_______, 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, _______, _______, _______
diff --git a/keyboards/yatara/drink_me/config.h b/keyboards/yatara/drink_me/config.h
index 10573092c9..51d03c58e2 100644
--- a/keyboards/yatara/drink_me/config.h
+++ b/keyboards/yatara/drink_me/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5961 // "Ya" - Yatara
-#define PRODUCT_ID 0x1470
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yatara
-#define PRODUCT Drink Me
-
/* Key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 4
@@ -33,4 +26,3 @@
#define DIRECT_PINS { \
{B4, B5, B6, B7} \
}
-#define UNUSED_PINS
diff --git a/keyboards/yatara/drink_me/info.json b/keyboards/yatara/drink_me/info.json
index 00327243d5..bb6f3de695 100644
--- a/keyboards/yatara/drink_me/info.json
+++ b/keyboards/yatara/drink_me/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Drink Me",
+ "manufacturer": "Yatara",
"url": "https://github.com/yatara-cc",
"maintainer": "yatara-cc",
+ "usb": {
+ "vid": "0x5961",
+ "pid": "0x1470",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ydkb/chili/config.h b/keyboards/ydkb/chili/config.h
index e3a4e004b8..bb54f28e6e 100644
--- a/keyboards/ydkb/chili/config.h
+++ b/keyboards/ydkb/chili/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5945 // "YE"
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER YDKB
-#define PRODUCT Chili
-
/* key matrix size */
#define MATRIX_ROWS 11
#define MATRIX_COLS 10
@@ -37,7 +30,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Column pin configuration
*/
#define MATRIX_COL_PINS { D4, F6, F7, C7, C6, B6, B5, B4, D7, D6 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ydkb/chili/info.json b/keyboards/ydkb/chili/info.json
index 8e92d83de0..a23d8bc0d7 100644
--- a/keyboards/ydkb/chili/info.json
+++ b/keyboards/ydkb/chili/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "YDKB Chili",
+ "keyboard_name": "Chili",
+ "manufacturer": "YDKB",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5945",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"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":"Backsp", "x":13, "y":1.5}, {"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":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.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":"|", "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":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.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}, {"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":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"x":21.5, "y":3.5}, {"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":1.75}, {"x":14, "y":4.5}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"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":3}, {"x":6.75, "y":5.5, "w":3}, {"label":"Alt", "x":9.75, "y":5.5, "w":1.5}, {"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}, {"label":"0", "x":18.5, "y":5.5}, {"x":19.5, "y":5.5}, {"label":".", "x":20.5, "y":5.5}]
diff --git a/keyboards/ydkb/grape/config.h b/keyboards/ydkb/grape/config.h
index 3396f18d61..c4531a9abd 100644
--- a/keyboards/ydkb/grape/config.h
+++ b/keyboards/ydkb/grape/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5945 // "YE"
-#define PRODUCT_ID 0x6772 // "GR"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER YDKB
-#define PRODUCT Grape
-
/* key matrix size */
#define MATRIX_ROWS 7
#define MATRIX_COLS 18
diff --git a/keyboards/ydkb/grape/info.json b/keyboards/ydkb/grape/info.json
index 9024ca4d0b..80cad94330 100644
--- a/keyboards/ydkb/grape/info.json
+++ b/keyboards/ydkb/grape/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Grape",
+ "manufacturer": "YDKB",
"url": "https://item.taobao.com/item.htm?id=642205244150",
"maintainer": "Gacathon",
+ "usb": {
+ "vid": "0x5945",
+ "pid": "0x6772",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ydkb/just60/config.h b/keyboards/ydkb/just60/config.h
index 82272ffffa..16b205105d 100644
--- a/keyboards/ydkb/just60/config.h
+++ b/keyboards/ydkb/just60/config.h
@@ -19,20 +19,12 @@ 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 0x1960
-#define DEVICE_VER 0x0001
-#define MANUFACTURER YDKB
-#define PRODUCT Just60
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
#define MATRIX_ROW_PINS { E2, C7, B3, B2, B1 }
#define MATRIX_COL_PINS { D6, D7, B4, B6, B5, B7, F7, F6, F5, F4, F1, F0, E6, B0 }
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
#define QMK_ESC_OUTPUT D6 // usually COL
diff --git a/keyboards/ydkb/just60/info.json b/keyboards/ydkb/just60/info.json
index 5f42033845..8d297d51ad 100644
--- a/keyboards/ydkb/just60/info.json
+++ b/keyboards/ydkb/just60/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Just60",
+ "manufacturer": "YDKB",
"url": "",
"maintainer": "thinxer",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x1960",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ydkb/just60/keymaps/thinxer/keymap.c b/keyboards/ydkb/just60/keymaps/thinxer/keymap.c
index da034e0e44..b23cb57ce9 100644
--- a/keyboards/ydkb/just60/keymaps/thinxer/keymap.c
+++ b/keyboards/ydkb/just60/keymaps/thinxer/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
[_COMMAND] = LAYOUT(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/ydkb/just60/readme.md b/keyboards/ydkb/just60/readme.md
index 1fe05bd3ea..76eee5dced 100644
--- a/keyboards/ydkb/just60/readme.md
+++ b/keyboards/ydkb/just60/readme.md
@@ -2,7 +2,7 @@
Just60 keyboard produced by Yang. The keyboard comes with a custom Mass Storage Device bootloader and a TMK based firmware from ydkb.io.
-To use a QMK based firmware, you might want to install a QMK bootloader. The PCB exposes 6 pins for ISP(In-System Programming), and they are located just under the ATMega32U4 chip. From left to right, the pins are `VCC`, `SCLK`, `MOSI`, `MISO`, `RESET`, `GND`. The `GND` is the square one. You could program the flash with any AVR programmer, or a Raspberry Pi with `avrdude`.
+To use a QMK based firmware, you might want to install a QMK bootloader. The PCB exposes 6 pins for ISP(In-System Programming), and they are located just under the ATMega32U4 chip. From left to right, the pins are `VCC`, `SCLK`, `MOSI`, `MISO`, `QK_BOOT`, `GND`. The `GND` is the square one. You could program the flash with any AVR programmer, or a Raspberry Pi with `avrdude`.
Backlight LEDs and Bluetooth are not working yet.
diff --git a/keyboards/ydkb/yd68/config.h b/keyboards/ydkb/yd68/config.h
index 40a0609347..d1bd8bb1ca 100644
--- a/keyboards/ydkb/yd68/config.h
+++ b/keyboards/ydkb/yd68/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0002
-#define MANUFACTURER YANG
-#define PRODUCT YD68v2
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B5, C6, C7, D7, B4 }
#define MATRIX_COL_PINS { B6, F7, F6, F5, F4, F1, F0, E6, B0, B7, D0, D1, D2, D3, D5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ydkb/yd68/info.json b/keyboards/ydkb/yd68/info.json
index 8797620557..08124d0902 100644
--- a/keyboards/ydkb/yd68/info.json
+++ b/keyboards/ydkb/yd68/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "YD68",
+ "keyboard_name": "YD68v2",
+ "manufacturer": "YANG",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.2"
+ },
"layouts": {
"LAYOUT_ansi": {
"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, "w":2}, {"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}, {"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}, {"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}, {"x":14, "y":3}, {"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}, {"label":"Win", "x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}, {"x":15, "y":4}]
diff --git a/keyboards/yeehaw/config.h b/keyboards/yeehaw/config.h
index c13c70eae9..08dd91c12c 100644
--- a/keyboards/yeehaw/config.h
+++ b/keyboards/yeehaw/config.h
@@ -17,14 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5351
-#define PRODUCT_ID 0x5458
-#define DEVICE_VER 0x0100
-#define MANUFACTURER squashkb
-#define PRODUCT Yeehaw
-
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 14
diff --git a/keyboards/yeehaw/info.json b/keyboards/yeehaw/info.json
index 4fe5d4438c..b0358618a0 100644
--- a/keyboards/yeehaw/info.json
+++ b/keyboards/yeehaw/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Yeehaw",
+ "manufacturer": "squashkb",
"url": "https://squashkb.com/product/yeehaw",
"maintainer": "Tsquash",
+ "usb": {
+ "vid": "0x5351",
+ "pid": "0x5458",
+ "device_version": "1.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [{"label":"VOLU", "x":1, "y":0}, {"label":"VOLD", "x":1, "y":1}, {"label":"M1", "x":2, "y":1.5}, {"label":"UP", "x":3, "y":1.5}, {"label":"MNXT", "x":1, "y":2}, {"label":"M2", "x":4, "y":2}, {"label":"LEFT", "x":2, "y":2.5}, {"label":"DOWN", "x":3, "y":2.5}, {"label":"MO(1)", "x":0, "y":2.75}, {"label":"MPRV", "x":1, "y":3}, {"label":"RIGHT", "x":4, "y":3}, {"label":"MPLY", "x":2, "y":3.5}, {"label":"CTL S", "x":3, "y":3.5}, {"label":"RGB TOG", "x":2.5, "y":4.5}]
diff --git a/keyboards/yiancardesigns/barleycorn/config.h b/keyboards/yiancardesigns/barleycorn/config.h
index 71c6076d46..2780cfccda 100644
--- a/keyboards/yiancardesigns/barleycorn/config.h
+++ b/keyboards/yiancardesigns/barleycorn/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4749
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT Barleycorn
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
@@ -43,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* A Custom matrix.c is used to poll the port expander C6 shows that the pins are hardwired there */
#define MATRIX_ROW_PINS { B4, B3, B2, B1, C1 }
#define MATRIX_COL_PINS { B0, D7, D6, D4, D1, D0, C3, C2, D5, D5, D5, D5, D5, D5, D5, D5, D5, D5 }
-#define UNUSED_PINS
#define PORT_EXPANDER_ADDRESS 0x20
/* COL2ROW, ROW2COL*/
diff --git a/keyboards/yiancardesigns/barleycorn/info.json b/keyboards/yiancardesigns/barleycorn/info.json
index 293f321b2c..3fb2f06a80 100644
--- a/keyboards/yiancardesigns/barleycorn/info.json
+++ b/keyboards/yiancardesigns/barleycorn/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "Barleycorn",
+ "manufacturer": "Yiancar-Designs",
"maintainer": "Yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4749",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/yiancardesigns/gingham/config.h b/keyboards/yiancardesigns/gingham/config.h
index 5dcc1efa19..34f8cb600e 100644
--- a/keyboards/yiancardesigns/gingham/config.h
+++ b/keyboards/yiancardesigns/gingham/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4748
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT Gingham
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14
@@ -43,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* A Custom matrix.c is used to poll the port expander C6 shows that the pins are hardwired there */
#define MATRIX_ROW_PINS { D0, C3, D1, C1, C2 }
#define MATRIX_COL_PINS { D4, D4, C0, B5, D5, B4, D6, B1, B0, B2, D7, B3, D4, D4 }
-#define UNUSED_PINS
#define PORT_EXPANDER_ADDRESS 0x20
/* COL2ROW, ROW2COL*/
diff --git a/keyboards/yiancardesigns/gingham/info.json b/keyboards/yiancardesigns/gingham/info.json
index 0f9e81decc..fb2abb51ef 100644
--- a/keyboards/yiancardesigns/gingham/info.json
+++ b/keyboards/yiancardesigns/gingham/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Gingham",
+ "manufacturer": "Yiancar-Designs",
"url": "https://yiancar-designs.com/product/gingham/",
"maintainer": "Yiancar",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4748",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_60_ansi_split_bs_rshift": {
"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", "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":"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}, {"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":"App", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25}]
diff --git a/keyboards/yiancardesigns/gingham/keymaps/codecoffeecode/keymap.c b/keyboards/yiancardesigns/gingham/keymaps/codecoffeecode/keymap.c
index 5c3891845d..062cc26bfe 100644
--- a/keyboards/yiancardesigns/gingham/keymaps/codecoffeecode/keymap.c
+++ b/keyboards/yiancardesigns/gingham/keymaps/codecoffeecode/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_60_ansi_split_bs_rshift( /* 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_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_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, 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_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
diff --git a/keyboards/yiancardesigns/seigaiha/config.h b/keyboards/yiancardesigns/seigaiha/config.h
index fdb957f783..3a5f5fe390 100644
--- a/keyboards/yiancardesigns/seigaiha/config.h
+++ b/keyboards/yiancardesigns/seigaiha/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x8968
-#define PRODUCT_ID 0x4750
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yiancar-Designs
-#define PRODUCT Seigaiha
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -43,7 +37,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* A Custom matrix.c is used to poll the port expander D5 shows that the pins are hardwired there */
#define MATRIX_ROW_PINS { C0, B4, B3, B2, B5 }
#define MATRIX_COL_PINS { B0, D7, D6, D4, B1, C1, C2, D1, C3, D0, D5, D5, D5, D5, D5 }
-#define UNUSED_PINS
#define PORT_EXPANDER_ADDRESS 0x20
/* COL2ROW, ROW2COL*/
diff --git a/keyboards/yiancardesigns/seigaiha/info.json b/keyboards/yiancardesigns/seigaiha/info.json
index 09bc2d09d0..ca34286cea 100644
--- a/keyboards/yiancardesigns/seigaiha/info.json
+++ b/keyboards/yiancardesigns/seigaiha/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Seigaiha",
+ "manufacturer": "Yiancar-Designs",
"url": "www.yiancar-designs.com",
"maintainer": "Yiancar-Designs",
+ "usb": {
+ "vid": "0x8968",
+ "pid": "0x4750",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/ymdk/bface/config.h b/keyboards/ymdk/bface/config.h
index 6be1c86623..f43f5b5dc1 100644
--- a/keyboards/ymdk/bface/config.h
+++ b/keyboards/ymdk/bface/config.h
@@ -17,12 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define VENDOR_ID 0x594D // "YM"
-#define PRODUCT_ID 0x4266 // "Bf"
-#define DEVICE_VER 0x0200
-#define MANUFACTURER YMDK
-#define PRODUCT B.face
-
/* matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -30,7 +24,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 0 1 2 3 4 5 6 7 8 9 A B C D E
#define MATRIX_ROW_PINS { B7, B6, B5, B4, B3}
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7}
-#define UNUSED_PINS
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ymdk/bface/info.json b/keyboards/ymdk/bface/info.json
index 4c2f5d7560..78281d892e 100644
--- a/keyboards/ymdk/bface/info.json
+++ b/keyboards/ymdk/bface/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "YMDK Bface",
+ "keyboard_name": "B.face",
+ "manufacturer": "YMDK",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x594D",
+ "pid": "0x4266",
+ "device_version": "2.0.0"
+ },
"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},{"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},{"x":12.75, "y":2}, {"label":"Enter", "x":13.75, "y":2, "w":1.25}, {"x":0, "y":3},{"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}, {"x":12, "y":3},{"x":13, "y":3}, {"x":14, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.75}, {"x":1.75, "y":4, "w":1.25}, {"x":3, "y":4, "w":1.25}, {"x":4.25, "y":4, "w":1.25},{"x":5.5, "y":4, "w":3}, {"x":8.5, "y":4, "w":1.25}, {"x":9.75, "y":4, "w":1.25}, {"x":11, "y":4}, {"x":12, "y":4}, {"x":13, "y":4}, {"x":14, "y":4}]
diff --git a/keyboards/ymdk/bface/keymaps/minila/keymap.c b/keyboards/ymdk/bface/keymaps/minila/keymap.c
index 4038e8f762..5505dfcff7 100644
--- a/keyboards/ymdk/bface/keymaps/minila/keymap.c
+++ b/keyboards/ymdk/bface/keymaps/minila/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
//FN Layer
[_FL] = 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, _______, RESET,
+ 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, _______, QK_BOOT,
_______, _______, KC_HOME, KC_UP, KC_END, KC_PGUP, _______, NK_TOGG, KC_PSCR, KC_SLCK, KC_PAUS, _______, BL_STEP, BL_TOGG,
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, KC_INS, KC_HOME, KC_PGUP, KC_BSPC, _______, _______, _______,
_______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_VAD, RGB_VAI, _______, KC_DEL, KC_END, KC_PGDN, _______, _______, _______, _______,
diff --git a/keyboards/ymdk/melody96/config.h b/keyboards/ymdk/melody96/config.h
index 45e7e680c1..627a4850eb 100644
--- a/keyboards/ymdk/melody96/config.h
+++ b/keyboards/ymdk/melody96/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x594d // "YM"
-#define PRODUCT_ID 0x4D96 // "M" + 96
-#define DEVICE_VER 0x0001
-#define MANUFACTURER YMDK
-#define PRODUCT Melody96
-
/* key matrix size */
#define MATRIX_ROWS 12
#define MATRIX_COLS 9
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B7, B3, B2, B1, B0, E6, F0, F1, F4, F5, F6, F7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/ymdk/melody96/info.json b/keyboards/ymdk/melody96/info.json
index 211d50b378..ab6c4385c3 100644
--- a/keyboards/ymdk/melody96/info.json
+++ b/keyboards/ymdk/melody96/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "melody96",
+ "keyboard_name": "Melody96",
+ "manufacturer": "YMDK",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x594D",
+ "pid": "0x4D96",
+ "device_version": "0.0.1"
+ },
"layout_aliases": {
"LAYOUT": "LAYOUT_all",
"LAYOUT_hotswap": "LAYOUT_96_ansi"
diff --git a/keyboards/ymdk/melody96/keymaps/crilith/keymap.c b/keyboards/ymdk/melody96/keymaps/crilith/keymap.c
index 40ae691435..d11be1679b 100644
--- a/keyboards/ymdk/melody96/keymaps/crilith/keymap.c
+++ b/keyboards/ymdk/melody96/keymaps/crilith/keymap.c
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, TT(1), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
LAYOUT(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_CALC, _______, _______, _______,
_______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, KC_TAB,
BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_TAB,
diff --git a/keyboards/ymdk/melody96/keymaps/dvz/keymap.c b/keyboards/ymdk/melody96/keymaps/dvz/keymap.c
index cea3970e18..9a6994ae72 100644
--- a/keyboards/ymdk/melody96/keymaps/dvz/keymap.c
+++ b/keyboards/ymdk/melody96/keymaps/dvz/keymap.c
@@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
[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,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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, RGB_TOG, KC_TRNS, 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_VOLD,
BL_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_VOLU,
diff --git a/keyboards/ymdk/melody96/keymaps/zunger/keymap.c b/keyboards/ymdk/melody96/keymaps/zunger/keymap.c
index d0d2698b7a..624797c5c3 100644
--- a/keyboards/ymdk/melody96/keymaps/zunger/keymap.c
+++ b/keyboards/ymdk/melody96/keymaps/zunger/keymap.c
@@ -236,7 +236,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Function layer is mostly for keyboard meta-control operations, but also contains the combining
// accent marks. These are deliberately placed to match where the analogous controls go on Mac OS.
[_FUNCTION] = LAYOUT_hotswap(
- KC_CGRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RESET,
+ KC_CGRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, QK_BOOT,
KC_CGRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_CAGU, _______, _______, _______, KC_CDIA, KC_CCIR, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, UC_M_OS, UC_M_LN, UC_M_WI, UC_M_BS, UC_M_WC, _______, _______, _______, _______, _______, _______, _______, _______, _______,
diff --git a/keyboards/ymdk/np21/config.h b/keyboards/ymdk/np21/config.h
index 762ac2b4bf..619ec1ce60 100644
--- a/keyboards/ymdk/np21/config.h
+++ b/keyboards/ymdk/np21/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x594D // "YM"
-#define PRODUCT_ID 0x5021 // "P" 21
-#define DEVICE_VER 0x0200
-#define MANUFACTURER YMDK
-#define PRODUCT NP21
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 6
diff --git a/keyboards/ymdk/np21/info.json b/keyboards/ymdk/np21/info.json
index 6a611d7a38..6d8347ec32 100644
--- a/keyboards/ymdk/np21/info.json
+++ b/keyboards/ymdk/np21/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "YMDK NP21",
+ "keyboard_name": "NP21",
+ "manufacturer": "YMDK",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x594D",
+ "pid": "0x5021",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT_ortho_6x4": {
"layout": [
diff --git a/keyboards/ymdk/np24/u4rgb6/config.h b/keyboards/ymdk/np24/u4rgb6/config.h
index dc86ae344b..862f8822ce 100644
--- a/keyboards/ymdk/np24/u4rgb6/config.h
+++ b/keyboards/ymdk/np24/u4rgb6/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x594D
-#define PRODUCT_ID 0x5024
-#define DEVICE_VER 0x0406
-#define MANUFACTURER YMDK
-#define PRODUCT NP24 U4 RGB6
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
diff --git a/keyboards/ymdk/np24/u4rgb6/info.json b/keyboards/ymdk/np24/u4rgb6/info.json
index fe5a940c08..c6965cd568 100644
--- a/keyboards/ymdk/np24/u4rgb6/info.json
+++ b/keyboards/ymdk/np24/u4rgb6/info.json
@@ -1,6 +1,12 @@
{
- "keyboard_name": "YMDK NP24 U4 RGB6",
+ "keyboard_name": "NP24 U4 RGB6",
+ "manufacturer": "YMDK",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x594D",
+ "pid": "0x5024",
+ "device_version": "4.0.6"
+ },
"layouts": {
"LAYOUT_ortho_6x4": {
"layout": [
diff --git a/keyboards/ymdk/sp64/config.h b/keyboards/ymdk/sp64/config.h
index f7b34575af..61772c6d04 100644
--- a/keyboards/ymdk/sp64/config.h
+++ b/keyboards/ymdk/sp64/config.h
@@ -19,12 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x594D
-#define PRODUCT_ID 0x5364
-#define DEVICE_VER 0x0200
-#define MANUFACTURER YMDK
-#define PRODUCT SP64
-
#define MATRIX_ROWS 6
#define MATRIX_COLS 15
diff --git a/keyboards/ymdk/sp64/info.json b/keyboards/ymdk/sp64/info.json
index 3804b8b99a..a59c46d2f2 100644
--- a/keyboards/ymdk/sp64/info.json
+++ b/keyboards/ymdk/sp64/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "YMDK_SP64",
+ "keyboard_name": "SP64",
+ "manufacturer": "YMDK",
"url": "",
"maintainer": "walston",
+ "usb": {
+ "vid": "0x594D",
+ "pid": "0x5364",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ymdk/sp64/keymaps/daed/keymap.c b/keyboards/ymdk/sp64/keymaps/daed/keymap.c
index 7174c108b3..8512ef799f 100644
--- a/keyboards/ymdk/sp64/keymaps/daed/keymap.c
+++ b/keyboards/ymdk/sp64/keymaps/daed/keymap.c
@@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_MODE] = 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, _______,
- RGB_TOG, RGB_RMOD, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ RGB_TOG, RGB_RMOD, RGB_VAI, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, RGB_SPD, RGB_VAD, RGB_SPI, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, TO(_GAMER), TO(_BASE), _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/ymdk/sp64/keymaps/minkezhang/config.h b/keyboards/ymdk/sp64/keymaps/minkezhang/config.h
new file mode 100644
index 0000000000..5bfa79eb21
--- /dev/null
+++ b/keyboards/ymdk/sp64/keymaps/minkezhang/config.h
@@ -0,0 +1,5 @@
+// Copyright 2022 Minke Zhang (@minkezhang)
+// SPDX-License-Identifier: GPL-3.0-only
+#pragma once
+
+#define RGBLIGHT_LAYERS
diff --git a/keyboards/ymdk/sp64/keymaps/minkezhang/keymap.c b/keyboards/ymdk/sp64/keymaps/minkezhang/keymap.c
new file mode 100644
index 0000000000..7481696fd6
--- /dev/null
+++ b/keyboards/ymdk/sp64/keymaps/minkezhang/keymap.c
@@ -0,0 +1,149 @@
+// Copyright 2022 Minke Zhang (@minkezhang)
+// SPDX-License-Identifier: GPL-3.0-only
+#include QMK_KEYBOARD_H
+
+/* Layer transitions diagram
+ *
+ * BASE <-> _FN [MO]
+ * BASE <-> _NUM [TG]
+ * _NUM <-> _MIRROR [MO]
+ *
+ * Direct transitions between layers not listed here are considered bugs.
+ */
+enum layer_names {
+ BASE, // default layer
+ _FN, // function layer
+ _NUM, // numpad
+ _MIRROR, // mirrorboard layer
+};
+
+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 │ < │ > │ ? │Shft │ Up │ Del │
+ * ├------┬---┴-┬---┴--┬--┴-----┴----┬┴----┬┘ ┌┴-----┴-----┴--┬--┴----┬┴-----┼-----┼-----┼-----┤
+ * │ Ctrl │ Win │ Alt │ Fn │ Sp │ │ │ Alt │ Fn │ Lft │ Dwn │ Rgt │
+ * └------┴-----┴------┴-------------┴-----┘ └---------------┴-------┴------┴-----┴-----┴-----┘
+ */
+[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_MINUS, KC_EQUAL, 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_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_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_SPACE, KC_SPACE, KC_RALT, TG(_NUM), KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+/* Function
+ *
+ * Cannot access the _NUM layer directly.
+ *
+ * ┌-----┬-----┬-----┬-----┬-----┬-----┬-----┠┌-----┬-----┬-----┬-----┬-----┬-----┬----------â”
+ * │ ` │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ │
+ * ├-----┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┘ ┌--┴-----┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬-------┤
+ * │ │ │ │ Up │ │ │ │ │ │ │ │ │ │ │ │
+ * ├--------┴┬----┴┬----┴┬----┴┬----┴┬----┴┠└┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴-------┤
+ * │ Enter │ │ Lft │ Dwn │ Rgt │ │ │ │ │ │ │ │ │ │
+ * ├---------┴┬----┴┬----┴┬----┴┬----┴┬----┴┠└┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬-----┬-----┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├------┬---┴-┬---┴--┬--┴-----┴----┬┴----┬┘ ┌┴-----┴-----┴--┬--┴----┬┴-----┼-----┼-----┼-----┤
+ * │ │ │ │ │ │ │ │ │ NO │ │ │ │
+ * └------┴-----┴------┴-------------┴-----┘ └---------------┴-------┴------┴-----┴-----┴-----┘
+ */
+[_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_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_ENT, _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_NO, _______, _______, _______
+ ),
+
+/* Numpad
+ *
+ * ┌-----┬-----┬-----┬-----┬-----┬-----┬-----┠┌-----┬-----┬-----┬-----┬-----┬-----┬----------â”
+ * │ ` │ │ │ │ │ │ │ │ Num │ / │ * │ - │ | │ |
+ * ├-----┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┘ ┌--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬-------┤
+ * │ │ │ │ │ │ │ │ │ 7 │ 8 │ 9 │ + │ │ │ │
+ * ├--------┴┬----┴┬----┴┬----┴┬----┴┬----┴┠└┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴-------┤
+ * │ │ │ │ │ │ │ │ │ 4 │ 5 │ 6 │ │ │ │
+ * ├---------┴┬----┴┬----┴┬----┴┬----┴┬----┴┠└┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬-----┬-----┤
+ * │ │ │ │ │ │ │ │ │ 1 │ 2 │ 3 │ Ent │ │ │ │
+ * ├------┬---┴-┬---┴--┬--┴-----┴----┬┴----┬┘ ┌┴-----┴-----┴--┬--┴----┬┴-----┼-----┼-----┼-----┤
+ * │ │ │ │ Fn │ │ │ 0 │ . │ Fn │ │ │ │
+ * └------┴-----┴------┴-------------┴-----┘ └---------------┴-------┴------┴-----┴-----┴-----┘
+ */
+[_NUM] = LAYOUT(
+ KC_GRV, _______, _______, _______, _______, _______, _______, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PENT, _______, _______, _______,
+ _______, _______, _______, MO(_MIRROR), _______, KC_P0, KC_PDOT, TG(_NUM), _______, _______, _______
+ ),
+
+/* Mirrorboard
+ *
+ * Useful in some niche situations per XKCD. Cannot pass directly to BASE layer
+ * without releasing the _MIRROR toggle key.
+ *
+ * ┌-----┬-----┬-----┬-----┬-----┬-----┬-----┠┌-----┬-----┬-----┬-----┬-----┬-----┬----------â”
+ * │ Bk │ = │ - │ 0 │ 9 │ 8 │ 7 │ │ │ │ │ │ | │ |
+ * ├-----┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┘ ┌--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬--┴--┬-------┤
+ * │ \ │ P │ O │ I │ U │ Y │ │ │ │ │ │ │ │ │ │
+ * ├--------┴┬----┴┬----┴┬----┴┬----┴┬----┴┠└┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴-------┤
+ * │ Enter │ ; │ L │ K │ J │ H │ │ │ │ │ │ │ │ │
+ * ├---------┴┬----┴┬----┴┬----┴┬----┴┬----┴┠└┬----┴┬----┴┬----┴┬----┴┬----┴┬----┴┬-----┬-----┤
+ * │ │ ? │ > │ < │ M │ N │ │ │ │ │ │ │ │ │ │
+ * ├------┬---┴-┬---┴--┬--┴-----┴----┬┴----┬┘ ┌┴-----┴-----┴--┬--┴----┬┴-----┼-----┼-----┼-----┤
+ * │ │ │ │ │ │ │ │ │ NO │ │ │ │
+ * └------┴-----┴------┴-------------┴-----┘ └---------------┴-------┴------┴-----┴-----┴-----┘
+ */
+[_MIRROR] = LAYOUT(
+ KC_BSPC, KC_EQUAL, KC_MINUS, KC_0, KC_9, KC_8, KC_7, _______, _______, _______, _______, _______, _______, _______,
+ KC_BSLS, KC_P, KC_O, KC_I, KC_U, KC_Y, _______, _______, _______, _______, _______, _______, _______, _______,
+ KC_ENT, KC_SCOLON, KC_L, KC_K, KC_J, KC_H, _______, _______, _______, _______, _______, _______, _______,
+ _______, KC_SLSH, KC_DOT, KC_COMM, KC_M, KC_N, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_NO, _______, _______, _______
+ ),
+};
+
+#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS)
+const rgblight_segment_t PROGMEM BASE_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 12, HSV_OFF});
+const rgblight_segment_t PROGMEM _FN_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 12, HSV_RED});
+const rgblight_segment_t PROGMEM _NUM_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 12, HSV_YELLOW});
+const rgblight_segment_t PROGMEM _MIRROR_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, 12, HSV_ORANGE});
+
+const rgblight_segment_t* const PROGMEM user_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ BASE_layer,
+ _FN_layer,
+ _NUM_layer,
+ _MIRROR_layer
+);
+
+void keyboard_post_init_user(void) {
+ rgblight_layers = user_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) {
+
+/* Add some indication for current function layer.
+ *
+ * N.B.: rgblight_set_layer_state calls rgblight_mode_noeeprom.
+ */
+ rgblight_set_layer_state(1, layer_state_cmp(state, _FN));
+ rgblight_set_layer_state(2, layer_state_cmp(state, _NUM));
+ rgblight_set_layer_state(3, layer_state_cmp(state, _MIRROR));
+
+ return state;
+}
+#endif
diff --git a/keyboards/ymdk/sp64/keymaps/minkezhang/readme.md b/keyboards/ymdk/sp64/keymaps/minkezhang/readme.md
new file mode 100644
index 0000000000..50d4eb8788
--- /dev/null
+++ b/keyboards/ymdk/sp64/keymaps/minkezhang/readme.md
@@ -0,0 +1,7 @@
+# YMDK Split 64
+Personal Keymap for [minkezhang](https://github.com/minkezhang)
+
+## Compile
+```bash
+qmk compile -kb ymdk/sp64 -km minkezhang
+```
diff --git a/keyboards/ymdk/sp64/keymaps/minkezhang/rules.mk b/keyboards/ymdk/sp64/keymaps/minkezhang/rules.mk
new file mode 100644
index 0000000000..1e3cebb145
--- /dev/null
+++ b/keyboards/ymdk/sp64/keymaps/minkezhang/rules.mk
@@ -0,0 +1 @@
+RGBLIGHT_ENABLE = yes
diff --git a/keyboards/ymdk/sp64/keymaps/walston/keymap.c b/keyboards/ymdk/sp64/keymaps/walston/keymap.c
index ada3073fb9..248cf5f445 100644
--- a/keyboards/ymdk/sp64/keymaps/walston/keymap.c
+++ b/keyboards/ymdk/sp64/keymaps/walston/keymap.c
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* └------┴-----┴------┴-------------┴-----┘ └---------------┴-------┴------┴-----┴-----┴-----┘
*/
[BASE] = LAYOUT(
- MT(RESET, 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,
+ MT(QK_BOOT, 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_BSLS,
KC_LCTL, 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, OSL(_MEDIA),
diff --git a/keyboards/ymdk/wings/config.h b/keyboards/ymdk/wings/config.h
index b661e539a9..8c959b062e 100644
--- a/keyboards/ymdk/wings/config.h
+++ b/keyboards/ymdk/wings/config.h
@@ -17,13 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x594D // "YM"
-#define PRODUCT_ID 0x2975 // "WING"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER YMDK
-#define PRODUCT WINGS
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -40,7 +33,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/ymdk/wings/info.json b/keyboards/ymdk/wings/info.json
index 09e80eb106..55c5a6798a 100644
--- a/keyboards/ymdk/wings/info.json
+++ b/keyboards/ymdk/wings/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "YMDK Wings",
+ "keyboard_name": "WINGS",
+ "manufacturer": "YMDK",
"url": "http://ymdkey.com/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x594D",
+ "pid": "0x2975",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ymdk/wings/keymaps/default/keymap.c b/keyboards/ymdk/wings/keymaps/default/keymap.c
index fb017650fe..17b3bb6a25 100644
--- a/keyboards/ymdk/wings/keymaps/default/keymap.c
+++ b/keyboards/ymdk/wings/keymaps/default/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, _______, _______, _______,
- _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/ymdk/wingshs/config.h b/keyboards/ymdk/wingshs/config.h
index d215637f35..d99f31a9f4 100644
--- a/keyboards/ymdk/wingshs/config.h
+++ b/keyboards/ymdk/wingshs/config.h
@@ -15,13 +15,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x594D // "YM"
-#define PRODUCT_ID 0x4975 // "WINGHS"
-#define DEVICE_VER 0x0001
-#define MANUFACTURER YMDK
-#define PRODUCT WINGS HOTSWAP
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -38,7 +31,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/ymdk/wingshs/info.json b/keyboards/ymdk/wingshs/info.json
index bc022fc173..6869282779 100644
--- a/keyboards/ymdk/wingshs/info.json
+++ b/keyboards/ymdk/wingshs/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "YMDK Wings Hotswap",
+ "keyboard_name": "WINGS HOTSWAP",
+ "manufacturer": "YMDK",
"url": "http://ymdkey.com/",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x594D",
+ "pid": "0x4975",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ymdk/wingshs/keymaps/default/keymap.c b/keyboards/ymdk/wingshs/keymaps/default/keymap.c
index 61366f75dd..31da48fa69 100644
--- a/keyboards/ymdk/wingshs/keymaps/default/keymap.c
+++ b/keyboards/ymdk/wingshs/keymaps/default/keymap.c
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[1] = LAYOUT_all(
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
- _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/ymdk/yd60mq/12led/config.h b/keyboards/ymdk/yd60mq/12led/config.h
index dde57aafec..edea795f78 100644
--- a/keyboards/ymdk/yd60mq/12led/config.h
+++ b/keyboards/ymdk/yd60mq/12led/config.h
@@ -1,5 +1,3 @@
#pragma once
-#define DEVICE_VER 0x0001
-
#define RGBLED_NUM 12
diff --git a/keyboards/ymdk/yd60mq/12led/info.json b/keyboards/ymdk/yd60mq/12led/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/ymdk/yd60mq/12led/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/ymdk/yd60mq/16led/config.h b/keyboards/ymdk/yd60mq/16led/config.h
index 11ce3aeb27..00d3fcfc8c 100644
--- a/keyboards/ymdk/yd60mq/16led/config.h
+++ b/keyboards/ymdk/yd60mq/16led/config.h
@@ -1,5 +1,3 @@
#pragma once
-#define DEVICE_VER 0x0002
-
#define RGBLED_NUM 16
diff --git a/keyboards/ymdk/yd60mq/16led/info.json b/keyboards/ymdk/yd60mq/16led/info.json
new file mode 100644
index 0000000000..e557e4d307
--- /dev/null
+++ b/keyboards/ymdk/yd60mq/16led/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.2"
+ }
+}
diff --git a/keyboards/ymdk/yd60mq/config.h b/keyboards/ymdk/yd60mq/config.h
index 0cff43c888..3aa5415bd2 100644
--- a/keyboards/ymdk/yd60mq/config.h
+++ b/keyboards/ymdk/yd60mq/config.h
@@ -2,12 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x594D // "YM"
-#define PRODUCT_ID 0x604D // 60 "M"
-#define MANUFACTURER YMDK
-#define PRODUCT YD60MQ
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -15,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, F7, B5, B4, D7, D6, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ymdk/yd60mq/info.json b/keyboards/ymdk/yd60mq/info.json
index 98db8ac3f6..f349d3dca2 100644
--- a/keyboards/ymdk/yd60mq/info.json
+++ b/keyboards/ymdk/yd60mq/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "YD60MQ",
+ "manufacturer": "YMDK",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x594D",
+ "pid": "0x604D"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ymdk/yd60mq/keymaps/64key/keymap.c b/keyboards/ymdk/yd60mq/keymaps/64key/keymap.c
index 3c27f14d11..effa594af2 100644
--- a/keyboards/ymdk/yd60mq/keymaps/64key/keymap.c
+++ b/keyboards/ymdk/yd60mq/keymaps/64key/keymap.c
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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,
+ QK_BOOT, KC_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_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, KC_PSCR, KC_SLCK, KC_PAUS, KC_GRV,
_______, BL_TOGG, BL_DEC, BL_INC, BL_BRTG, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, MO(2), _______, KC_PGUP, _______,
diff --git a/keyboards/ymdk/yd60mq/keymaps/krusli/keymap.c b/keyboards/ymdk/yd60mq/keymaps/krusli/keymap.c
index d9c2765659..ede3573384 100644
--- a/keyboards/ymdk/yd60mq/keymaps/krusli/keymap.c
+++ b/keyboards/ymdk/yd60mq/keymaps/krusli/keymap.c
@@ -11,7 +11,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_INS, KC_DEL,
- KC_CAPS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_VAD, RGB_VAI, RGB_SAD, RGB_SAI, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, RESET,
+ KC_CAPS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_VAD, RGB_VAI, RGB_SAD, RGB_SAI, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, _______, QK_BOOT,
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
_______, KC_NO, _______, _______, _______, _______, _______, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
diff --git a/keyboards/ymdk/ym68/config.h b/keyboards/ymdk/ym68/config.h
index 30d6b4c686..bf12e0d093 100644
--- a/keyboards/ymdk/ym68/config.h
+++ b/keyboards/ymdk/ym68/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x594D // "YM"
-#define PRODUCT_ID 0xD896
-#define DEVICE_VER 0x0001
-#define MANUFACTURER YMDK
-#define PRODUCT YM68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
diff --git a/keyboards/ymdk/ym68/info.json b/keyboards/ymdk/ym68/info.json
index 80f6df6973..ba97a0b76b 100644
--- a/keyboards/ymdk/ym68/info.json
+++ b/keyboards/ymdk/ym68/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "YM68",
+ "manufacturer": "YMDK",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x594D",
+ "pid": "0xD896",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ymdk/ymd09/config.h b/keyboards/ymdk/ymd09/config.h
index 0152fe1c2b..383a070c54 100644
--- a/keyboards/ymdk/ymd09/config.h
+++ b/keyboards/ymdk/ymd09/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x594D // "YM"
-#define PRODUCT_ID 0x4409 // "D" + 09
-#define DEVICE_VER 0x0001
-#define MANUFACTURER YMDK
-#define PRODUCT YMD09
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { F5, F4, F1 }
#define MATRIX_COL_PINS { D6, D2, D1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/ymdk/ymd09/info.json b/keyboards/ymdk/ymd09/info.json
index 7a1ec0f301..42aa8e0538 100644
--- a/keyboards/ymdk/ymd09/info.json
+++ b/keyboards/ymdk/ymd09/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "YMD09",
+ "manufacturer": "YMDK",
"url": "https://www.aliexpress.com/item/4000510880374.html",
"maintainer": "kaeltis",
+ "usb": {
+ "vid": "0x594D",
+ "pid": "0x4409",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ymdk/ymd21/v2/config.h b/keyboards/ymdk/ymd21/v2/config.h
index 81af6cab24..d98d6005c0 100644
--- a/keyboards/ymdk/ymd21/v2/config.h
+++ b/keyboards/ymdk/ymd21/v2/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x45D4
-#define PRODUCT_ID 0x0110
-#define DEVICE_VER 0x0001
-#define MANUFACTURER YMDK
-#define PRODUCT YMD21 v2
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 4
diff --git a/keyboards/ymdk/ymd21/v2/info.json b/keyboards/ymdk/ymd21/v2/info.json
index c28c2c3634..c2162f6a44 100644
--- a/keyboards/ymdk/ymd21/v2/info.json
+++ b/keyboards/ymdk/ymd21/v2/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "YMD21 v2",
+ "manufacturer": "YMDK",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x45D4",
+ "pid": "0x0110",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_6x4": {
"layout": [
diff --git a/keyboards/ymdk/ymd21/v2/readme.md b/keyboards/ymdk/ymd21/v2/readme.md
index 8a7968e346..9ca3b1390f 100644
--- a/keyboards/ymdk/ymd21/v2/readme.md
+++ b/keyboards/ymdk/ymd21/v2/readme.md
@@ -22,6 +22,6 @@ Enter the bootloader using one of the following methods:
* **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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` 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/ymdk/ymd40/v2/config.h b/keyboards/ymdk/ymd40/v2/config.h
index 0ad5a84718..ac7d5573e8 100644
--- a/keyboards/ymdk/ymd40/v2/config.h
+++ b/keyboards/ymdk/ymd40/v2/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x594D // "YM"
-#define PRODUCT_ID 0x4440 // "D" + 40
-#define DEVICE_VER 0x0001
-#define MANUFACTURER YMDK
-#define PRODUCT YMD40 v2
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
diff --git a/keyboards/ymdk/ymd40/v2/info.json b/keyboards/ymdk/ymd40/v2/info.json
index ef6b33a799..b343d2a351 100644
--- a/keyboards/ymdk/ymd40/v2/info.json
+++ b/keyboards/ymdk/ymd40/v2/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ymd40v2",
+ "keyboard_name": "YMD40 v2",
+ "manufacturer": "YMDK",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x594D",
+ "pid": "0x4440",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
diff --git a/keyboards/ymdk/ymd40/v2/keymaps/factory/keymap.c b/keyboards/ymdk/ymd40/v2/keymaps/factory/keymap.c
index 3c7de8bc6a..a63f572021 100644
--- a/keyboards/ymdk/ymd40/v2/keymaps/factory/keymap.c
+++ b/keyboards/ymdk/ymd40/v2/keymaps/factory/keymap.c
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_CAPS, KC_LCTL, KC_LALT, KC_LGUI, KC_DEL, KC_SPC, KC_SPC, RGB_MOD, KC_UP, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_ortho_4x12(
- RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/keyboards/ymdk/ymd67/config.h b/keyboards/ymdk/ymd67/config.h
index 3397812cb7..5b1aa59e27 100644
--- a/keyboards/ymdk/ymd67/config.h
+++ b/keyboards/ymdk/ymd67/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x594D
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER YMDK
-#define PRODUCT YMD67
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B6, D4, B1, F7, B5, B4, D7, D6, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ymdk/ymd67/info.json b/keyboards/ymdk/ymd67/info.json
index 9d04ee1272..e43da900f0 100644
--- a/keyboards/ymdk/ymd67/info.json
+++ b/keyboards/ymdk/ymd67/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ymd67",
+ "keyboard_name": "YMD67",
+ "manufacturer": "YMDK",
"url": "https://www.aliexpress.com/item/4000311811121.html",
"maintainer": "SwiftLawnGnome",
+ "usb": {
+ "vid": "0x594D",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ymdk/ymd75/config.h b/keyboards/ymdk/ymd75/config.h
index a828c4d64b..5539dd6dee 100644
--- a/keyboards/ymdk/ymd75/config.h
+++ b/keyboards/ymdk/ymd75/config.h
@@ -21,12 +21,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x422D
-
-#define MANUFACTURER YMDK
-#define PRODUCT YMD75 / MT84
-
#define BACKLIGHT_LEVELS 12
#define LED_CAPS_LOCK_PIN D1
diff --git a/keyboards/ymdk/ymd75/info.json b/keyboards/ymdk/ymd75/info.json
index 65a53e87cd..3ad8d07bdf 100644
--- a/keyboards/ymdk/ymd75/info.json
+++ b/keyboards/ymdk/ymd75/info.json
@@ -1,7 +1,12 @@
{
- "keyboard_name": "ymd75",
+ "keyboard_name": "YMD75 / MT84",
+ "manufacturer": "YMDK",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x422D"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ymdk/ymd75/rev1/config.h b/keyboards/ymdk/ymd75/rev1/config.h
index bd169471af..e538ba0609 100644
--- a/keyboards/ymdk/ymd75/rev1/config.h
+++ b/keyboards/ymdk/ymd75/rev1/config.h
@@ -26,4 +26,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
#define BACKLIGHT_PIN D4
#define DIODE_DIRECTION COL2ROW
-#define DEVICE_VER 0x0100
diff --git a/keyboards/ymdk/ymd75/rev1/info.json b/keyboards/ymdk/ymd75/rev1/info.json
new file mode 100644
index 0000000000..ad889c2304
--- /dev/null
+++ b/keyboards/ymdk/ymd75/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "1.0.0"
+ }
+}
diff --git a/keyboards/ymdk/ymd75/rev2/config.h b/keyboards/ymdk/ymd75/rev2/config.h
index 41a75e6271..201213c40e 100644
--- a/keyboards/ymdk/ymd75/rev2/config.h
+++ b/keyboards/ymdk/ymd75/rev2/config.h
@@ -7,4 +7,3 @@
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
#define BACKLIGHT_PIN D4
#define DIODE_DIRECTION COL2ROW
-#define DEVICE_VER 0x0200
diff --git a/keyboards/ymdk/ymd75/rev2/info.json b/keyboards/ymdk/ymd75/rev2/info.json
new file mode 100644
index 0000000000..3bdd63ee28
--- /dev/null
+++ b/keyboards/ymdk/ymd75/rev2/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "2.0.0"
+ }
+}
diff --git a/keyboards/ymdk/ymd75/rev3/config.h b/keyboards/ymdk/ymd75/rev3/config.h
index cbed2e00ee..41af337f4c 100644
--- a/keyboards/ymdk/ymd75/rev3/config.h
+++ b/keyboards/ymdk/ymd75/rev3/config.h
@@ -6,5 +6,4 @@
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4 }
#define BACKLIGHT_PIN B6 // change the backlight pin that has since changed in Rev 3
#define DIODE_DIRECTION ROW2COL
-#define DEVICE_VER 0x0300
#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 4
diff --git a/keyboards/ymdk/ymd75/rev3/info.json b/keyboards/ymdk/ymd75/rev3/info.json
new file mode 100644
index 0000000000..775a9740ca
--- /dev/null
+++ b/keyboards/ymdk/ymd75/rev3/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "3.0.0"
+ }
+}
diff --git a/keyboards/ymdk/ymd96/config.h b/keyboards/ymdk/ymd96/config.h
index 55c5beaf3e..ed692c63b4 100644
--- a/keyboards/ymdk/ymd96/config.h
+++ b/keyboards/ymdk/ymd96/config.h
@@ -20,12 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-#define VENDOR_ID 0x20A0
-#define PRODUCT_ID 0x422D
-#define DEVICE_VER 0x0200
-#define MANUFACTURER YMDK
-#define PRODUCT YMD96
-
/* matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 15
diff --git a/keyboards/ymdk/ymd96/info.json b/keyboards/ymdk/ymd96/info.json
index d83312015e..2fcefcbfbb 100644
--- a/keyboards/ymdk/ymd96/info.json
+++ b/keyboards/ymdk/ymd96/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ymd96",
+ "keyboard_name": "YMD96",
+ "manufacturer": "YMDK",
"url": "",
"maintainer": "sparkyman215",
+ "usb": {
+ "vid": "0x20A0",
+ "pid": "0x422D",
+ "device_version": "2.0.0"
+ },
"layouts": {
"LAYOUT_default": {
"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":"Print Screen", "x":13, "y":0}, {"label":"Home", "x":14, "y":0}, {"label":"End", "x":15, "y":0}, {"label":"Insert", "x":16, "y":0}, {"label":"Delete", "x":17, "y":0}, {"label":"Page Up", "x":18, "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", "x":13, "y":1, "w":2}, {"label":"Num Lock", "x":15, "y":1}, {"label":"/", "x":16, "y":1}, {"label":"*", "x":17, "y":1}, {"label":"PgDn", "x":18, "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":"7", "x":15, "y":2}, {"label":"8", "x":16, "y":2}, {"label":"9", "x":17, "y":2}, {"label":"+", "x":18, "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":"4", "x":15, "y":3}, {"label":"5", "x":16, "y":3}, {"label":"6", "x":17, "y":3}, {"label":"+", "x":18, "y":3},{"label":"Shift", "x":0, "y":4, "w":2.25}, {"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":2.75}, {"label":"1", "x":15, "y":4}, {"label":"2", "x":16, "y":4}, {"label":"3", "x":17, "y":4}, {"label":"Enter", "x":18, "y":4, "h":2}, {"label":"Ctrl", "x":0, "y":5, "w":1.25}, {"label":"Win", "x":1.25, "y":5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5, "w":1.25}, {"x":3.75, "y":5, "w":6.25}, {"label":"Fn", "x":10, "y":5}, {"label":"Win", "x":11, "y":5}, {"label":"\u2190", "x":12, "y":5}, {"label":"\u2193", "x":13, "y":5}, {"label":"\u2191", "x":14, "y":5}, {"label":"\u2192", "x":15, "y":5}, {"label":"0", "x":16, "y":5}, {"label":".", "x":17, "y":5}]
diff --git a/keyboards/ymdk/ymd96/keymaps/hgoel89/keymap.c b/keyboards/ymdk/ymd96/keymaps/hgoel89/keymap.c
index cb7a3eb1e7..fdd7ad253a 100644
--- a/keyboards/ymdk/ymd96/keymaps/hgoel89/keymap.c
+++ b/keyboards/ymdk/ymd96/keymaps/hgoel89/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | |MPrev | | | MNext| | | |
*/
[_RAISE] = LAYOUT(
- RESET,RGB_TOG, BL_TOGG, BL_STEP, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
+ QK_BOOT,RGB_TOG, BL_TOGG, BL_STEP, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, BL_INC, BL_DEC, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
______, ______, ______, ______, ______, ______, ______, ______, ______, ______, KC_F22, KC_F23, KC_F24, ______, ______, ______, ______, ______, \
______, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MODE_FORWARD , ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \
diff --git a/keyboards/yncognito/batpad/config.h b/keyboards/yncognito/batpad/config.h
index 50fec3d69a..a9cac6d816 100644
--- a/keyboards/yncognito/batpad/config.h
+++ b/keyboards/yncognito/batpad/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7979
-#define PRODUCT_ID 0x6602
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Yncognito
-#define PRODUCT Batpad
-
/* key matrix size */
#define MATRIX_ROWS 2
#define MATRIX_COLS 4
diff --git a/keyboards/yncognito/batpad/info.json b/keyboards/yncognito/batpad/info.json
index 393fff5947..e0358b44ac 100644
--- a/keyboards/yncognito/batpad/info.json
+++ b/keyboards/yncognito/batpad/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "batpad",
+ "keyboard_name": "Batpad",
+ "manufacturer": "Yncognito",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x7979",
+ "pid": "0x6602",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_2x4": {
"layout": [
diff --git a/keyboards/yoichiro/lunakey_macro/config.h b/keyboards/yoichiro/lunakey_macro/config.h
index 1b9449b822..070327773d 100644
--- a/keyboards/yoichiro/lunakey_macro/config.h
+++ b/keyboards/yoichiro/lunakey_macro/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5954 // "YT" - Yoichiro Tanaka
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yoichiro
-#define PRODUCT Lunakey Macro
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 4
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { E6, B4, B5 }
#define MATRIX_COL_PINS { B6, B2, B3, B1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/yoichiro/lunakey_macro/info.json b/keyboards/yoichiro/lunakey_macro/info.json
index 27996bdbbd..f25d0ba72a 100644
--- a/keyboards/yoichiro/lunakey_macro/info.json
+++ b/keyboards/yoichiro/lunakey_macro/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Lunakey Macro",
+ "manufacturer": "yoichiro",
"url": "",
"maintainer": "Yoichiro Tanaka",
+ "usb": {
+ "vid": "0x5954",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/yoichiro/lunakey_mini/config.h b/keyboards/yoichiro/lunakey_mini/config.h
index da75f3be5f..85217bdb2b 100644
--- a/keyboards/yoichiro/lunakey_mini/config.h
+++ b/keyboards/yoichiro/lunakey_mini/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5954 // "YT" - Yoichiro Tanaka
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yoichiro
-#define PRODUCT Lunakey Mini
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D4, D7, E6, B4 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/yoichiro/lunakey_mini/info.json b/keyboards/yoichiro/lunakey_mini/info.json
index a41c557ab4..cf458ad5f2 100644
--- a/keyboards/yoichiro/lunakey_mini/info.json
+++ b/keyboards/yoichiro/lunakey_mini/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Lunakey Mini",
+ "manufacturer": "yoichiro",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0x5954",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_split_3x6_4": {
"layout": [
diff --git a/keyboards/yoichiro/lunakey_pico/config.h b/keyboards/yoichiro/lunakey_pico/config.h
new file mode 100644
index 0000000000..be9b505794
--- /dev/null
+++ b/keyboards/yoichiro/lunakey_pico/config.h
@@ -0,0 +1,38 @@
+// Copyright 2022 Yoichiro Tanaka (@yoichiro)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP25
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
+
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP0
+#define SERIAL_USART_RX_PIN GP1
+
+//#define SERIAL_DEBUG
+
+#define WS2812_PIO_USE_PIO1
+
+#define RGBLIGHT_LED_MAP { 0, 1, 2, 3, 4, 5, \
+ 11, 10, 9, 8, 7, 6 }
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/*
+ * 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
diff --git a/keyboards/yoichiro/lunakey_pico/halconf.h b/keyboards/yoichiro/lunakey_pico/halconf.h
new file mode 100644
index 0000000000..21b3de7d6d
--- /dev/null
+++ b/keyboards/yoichiro/lunakey_pico/halconf.h
@@ -0,0 +1,8 @@
+// Copyright 2022 Yoichiro Tanaka (@yoichiro)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define HAL_USE_SIO TRUE
+
+#include_next <halconf.h>
diff --git a/keyboards/yoichiro/lunakey_pico/info.json b/keyboards/yoichiro/lunakey_pico/info.json
new file mode 100644
index 0000000000..d914f8687f
--- /dev/null
+++ b/keyboards/yoichiro/lunakey_pico/info.json
@@ -0,0 +1,106 @@
+{
+ "keyboard_name": "Lunakey Pico",
+ "manufacturer": "yoichiro",
+ "maintainer": "Yoichiro Tanaka",
+ "bootloader": "rp2040",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": false,
+ "mousekey": true,
+ "extrakey": true,
+ "console": false,
+ "command": false,
+ "nkro": false,
+ "rgblight": true,
+ "audio": false
+ },
+ "matrix_pins": {
+ "cols": ["GP21", "GP20", "GP19", "GP18", "GP17", "GP16"],
+ "rows": ["GP12", "GP13", "GP14", "GP15"]
+ },
+ "debounce": 5,
+ "processor": "RP2040",
+ "usb": {
+ "device_version": "3.0.0",
+ "pid": "0x0003",
+ "vid": "0x5954"
+ },
+ "rgblight": {
+ "led_count": 12,
+ "pin": "GP6",
+ "sleep": true,
+ "split": true,
+ "split_count": [6, 6],
+ "animations": {
+ "alternating": true,
+ "breathing": true,
+ "christmas": true,
+ "knight": true,
+ "rainbow_mood": true,
+ "rainbow_swirl": true,
+ "rgb_test": false,
+ "snake": true,
+ "static_gradient": true,
+ "twinkle": true
+ },
+ "hue_steps": 8,
+ "saturation_steps": 8,
+ "brightness_steps": 8,
+ "max_brightness": 255
+ },
+ "split": {
+ "enabled": true
+ },
+ "layout_aliases": {
+ "LAYOUT": "LAYOUT_split_3x6_4"
+ },
+ "layouts": {
+ "LAYOUT_split_3x6_4": {
+ "layout": [
+ {"label":"L00", "x":0, "y":1.5},
+ {"label":"L01", "x":1, "y":1.25},
+ {"label":"L02", "x":2, "y":0.5},
+ {"label":"L03", "x":3, "y":0},
+ {"label":"L04", "x":4, "y":0.25},
+ {"label":"L05", "x":5, "y":0.5},
+ {"label":"R00", "x":8.75, "y":0.5},
+ {"label":"R01", "x":9.75, "y":0.25},
+ {"label":"R02", "x":10.75, "y":0},
+ {"label":"R03", "x":11.75, "y":0.5},
+ {"label":"R04", "x":12.75, "y":1.25},
+ {"label":"R05", "x":13.75, "y":1.5},
+ {"label":"L10", "x":0, "y":2.5},
+ {"label":"L11", "x":1, "y":2.25},
+ {"label":"L12", "x":2, "y":1.5},
+ {"label":"L13", "x":3, "y":1},
+ {"label":"L14", "x":4, "y":1.25},
+ {"label":"L15", "x":5, "y":1.5},
+ {"label":"R10", "x":8.75, "y":1.5},
+ {"label":"R11", "x":9.75, "y":1.25},
+ {"label":"R12", "x":10.75, "y":1},
+ {"label":"R13", "x":11.75, "y":1.5},
+ {"label":"R14", "x":12.75, "y":2.25},
+ {"label":"R15", "x":13.75, "y":2.5},
+ {"label":"L20", "x":0, "y":3.5},
+ {"label":"L21", "x":1, "y":3.25},
+ {"label":"L22", "x":2, "y":2.5},
+ {"label":"L23", "x":3, "y":2},
+ {"label":"L24", "x":4, "y":2.25},
+ {"label":"L25", "x":5, "y":2.5},
+ {"label":"R20", "x":8.75, "y":2.5},
+ {"label":"R21", "x":9.75, "y":2.25},
+ {"label":"R22", "x":10.75, "y":2},
+ {"label":"R23", "x":11.75, "y":2.5},
+ {"label":"R24", "x":12.75, "y":3.25},
+ {"label":"R25", "x":13.75, "y":3.5},
+ {"label":"L30", "x":3, "y":4},
+ {"label":"L31", "x":4, "y":3.75},
+ {"label":"L32", "x":5, "y":3.75},
+ {"label":"L33", "x":6, "y":4},
+ {"label":"R30", "x":7.75, "y":4},
+ {"label":"R31", "x":8.75, "y":3.75},
+ {"label":"R32", "x":9.75, "y":3.75},
+ {"label":"R33", "x":10.75, "y":4}]
+ }
+ }
+}
diff --git a/keyboards/yoichiro/lunakey_pico/keymaps/default/keymap.c b/keyboards/yoichiro/lunakey_pico/keymaps/default/keymap.c
new file mode 100644
index 0000000000..83a326c33a
--- /dev/null
+++ b/keyboards/yoichiro/lunakey_pico/keymaps/default/keymap.c
@@ -0,0 +1,69 @@
+// Copyright 2022 Yoichiro Tanaka (@yoichiro)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layer_number {
+ _QWERTY = 0,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_split_3x6_4(
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ 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_RSFT,
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_RGUI
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ ),
+
+ [_LOWER] = LAYOUT_split_3x6_4(
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ 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_LCTL, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,_______, _______,
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_RGUI
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ ),
+
+ [_RAISE] = LAYOUT_split_3x6_4(
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ 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_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ KC_LSFT, KC_TILD, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_RGUI
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ ),
+
+ [_ADJUST] = LAYOUT_split_3x6_4(
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ QK_BOOT, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_RGUI
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ )
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
diff --git a/keyboards/yoichiro/lunakey_pico/keymaps/via/keymap.c b/keyboards/yoichiro/lunakey_pico/keymaps/via/keymap.c
new file mode 100644
index 0000000000..d664eb5a03
--- /dev/null
+++ b/keyboards/yoichiro/lunakey_pico/keymaps/via/keymap.c
@@ -0,0 +1,65 @@
+// Copyright 2022 Yoichiro Tanaka (@yoichiro)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+enum layer_number {
+ _QWERTY = 0,
+ _LOWER,
+ _RAISE,
+ _ADJUST,
+};
+
+#define LOWER FN_MO13
+#define RAISE FN_MO23
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_QWERTY] = LAYOUT_split_3x6_4(
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ 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_RSFT,
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_RGUI
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ ),
+
+ [_LOWER] = LAYOUT_split_3x6_4(
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ 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_LCTL, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT,_______, _______,
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_RGUI
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ ),
+
+ [_RAISE] = LAYOUT_split_3x6_4(
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ 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_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ KC_LSFT, KC_TILD, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_RGUI
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ ),
+
+ [_ADJUST] = LAYOUT_split_3x6_4(
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ QK_BOOT, _______, _______, _______, _______, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
+//+--------+--------+--------+--------+--------+--------+ +--------+--------+--------+--------+--------+--------+
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_ENT, RAISE, KC_RALT, KC_RGUI
+//+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
+ )
+};
diff --git a/keyboards/yoichiro/lunakey_pico/keymaps/via/rules.mk b/keyboards/yoichiro/lunakey_pico/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/yoichiro/lunakey_pico/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/yoichiro/lunakey_pico/lunakey_pico.c b/keyboards/yoichiro/lunakey_pico/lunakey_pico.c
new file mode 100644
index 0000000000..3e57edad68
--- /dev/null
+++ b/keyboards/yoichiro/lunakey_pico/lunakey_pico.c
@@ -0,0 +1,4 @@
+// Copyright 2022 Yoichiro Tanaka (@yoichiro)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "lunakey_pico.h"
diff --git a/keyboards/yoichiro/lunakey_pico/lunakey_pico.h b/keyboards/yoichiro/lunakey_pico/lunakey_pico.h
new file mode 100644
index 0000000000..0725054f0f
--- /dev/null
+++ b/keyboards/yoichiro/lunakey_pico/lunakey_pico.h
@@ -0,0 +1,23 @@
+// Copyright 2022 Yoichiro Tanaka (@yoichiro)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_split_3x6_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, R30, R31, R32, R33 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04, L05 }, \
+ { L10, L11, L12, L13, L14, L15 }, \
+ { L20, L21, L22, L23, L24, L25 }, \
+ { KC_NO, KC_NO, L30, L31, L32, L33 }, \
+ { R05, R04, R03, R02, R01, R00 }, \
+ { R15, R14, R13, R12, R11, R10 }, \
+ { R25, R24, R23, R22, R21, R20 }, \
+ { KC_NO, KC_NO, R33, R32, R31, R30 } \
+ }
diff --git a/keyboards/yoichiro/lunakey_pico/mcuconf.h b/keyboards/yoichiro/lunakey_pico/mcuconf.h
new file mode 100644
index 0000000000..482df316e9
--- /dev/null
+++ b/keyboards/yoichiro/lunakey_pico/mcuconf.h
@@ -0,0 +1,11 @@
+// Copyright 2022 Yoichiro Tanaka (@yoichiro)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef RP_SIO_USE_UART0
+#define RP_SIO_USE_UART0 TRUE
+#undef RP_SIO_USE_UART1
+#define RP_SIO_USE_UART1 FALSE
diff --git a/keyboards/yoichiro/lunakey_pico/readme.md b/keyboards/yoichiro/lunakey_pico/readme.md
new file mode 100644
index 0000000000..9017ad9d36
--- /dev/null
+++ b/keyboards/yoichiro/lunakey_pico/readme.md
@@ -0,0 +1,27 @@
+# Lunakey Pico
+
+![lunakey_pico](https://i.imgur.com/S5N8AFhh.jpg)
+
+This is a 40% split keyboard which has 3x6 vertically staggered keys and 4 thumbnail keys.
+
+* Keyboard Maintainer: [Yoichiro Tanaka](https://github.com/yoichiro)
+* Hardware Supported: Lunakey Pico PCB, Raspberry Pi Pico MCU.
+* Hardware Availability: https://booth.pm/ja/items/3324672
+
+Make example for this keyboard (after setting up your build environment):
+
+ qmk compile -kb yoichiro/lunakey_pico -km default
+
+Flashing example for this keyboard:
+
+ qmk flash -kb yoichiro/lunakey_pico -km default -bl avrdude
+
+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 `QK_BOOT` if it is available
diff --git a/keyboards/yoichiro/lunakey_pico/rules.mk b/keyboards/yoichiro/lunakey_pico/rules.mk
new file mode 100644
index 0000000000..26c3aca886
--- /dev/null
+++ b/keyboards/yoichiro/lunakey_pico/rules.mk
@@ -0,0 +1,2 @@
+WS2812_DRIVER = vendor
+SERIAL_DRIVER = vendor
diff --git a/keyboards/yosino58/config.h b/keyboards/yosino58/config.h
deleted file mode 100644
index 24831ee5b2..0000000000
--- a/keyboards/yosino58/config.h
+++ /dev/null
@@ -1,25 +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
-
-#include "config_common.h"
-#include "serial_config.h"
-
-#define USE_I2C
-#define USE_SERIAL
diff --git a/keyboards/yosino58/i2c.c b/keyboards/yosino58/i2c.c
deleted file mode 100644
index 4bee5c6398..0000000000
--- a/keyboards/yosino58/i2c.c
+++ /dev/null
@@ -1,162 +0,0 @@
-#include <util/twi.h>
-#include <avr/io.h>
-#include <stdlib.h>
-#include <avr/interrupt.h>
-#include <util/twi.h>
-#include <stdbool.h>
-#include "i2c.h"
-
-#ifdef USE_I2C
-
-// Limits the amount of we wait for any one i2c transaction.
-// Since were running SCL line 100kHz (=> 10μs/bit), and each transactions is
-// 9 bits, a single transaction will take around 90μs to complete.
-//
-// (F_CPU/SCL_CLOCK) => # of μC cycles to transfer a bit
-// poll loop takes at least 8 clock cycles to execute
-#define I2C_LOOP_TIMEOUT (9+1)*(F_CPU/SCL_CLOCK)/8
-
-#define BUFFER_POS_INC() (slave_buffer_pos = (slave_buffer_pos+1)%SLAVE_BUFFER_SIZE)
-
-volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-static volatile uint8_t slave_buffer_pos;
-static volatile bool slave_has_register_set = false;
-
-// Wait for an i2c operation to finish
-inline static
-void i2c_delay(void) {
- uint16_t lim = 0;
- while(!(TWCR & (1<<TWINT)) && lim < I2C_LOOP_TIMEOUT)
- lim++;
-
- // easier way, but will wait slightly longer
- // _delay_us(100);
-}
-
-// Setup twi to run at 100kHz or 400kHz (see ./i2c.h SCL_CLOCK)
-void i2c_master_init(void) {
- // no prescaler
- TWSR = 0;
- // Set TWI clock frequency to SCL_CLOCK. Need TWBR>10.
- // Check datasheets for more info.
- TWBR = ((F_CPU/SCL_CLOCK)-16)/2;
-}
-
-// Start a transaction with the given i2c slave address. The direction of the
-// transfer is set with I2C_READ and I2C_WRITE.
-// returns: 0 => success
-// 1 => error
-uint8_t i2c_master_start(uint8_t address) {
- TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTA);
-
- i2c_delay();
-
- // check that we started successfully
- if ( (TW_STATUS != TW_START) && (TW_STATUS != TW_REP_START))
- return 1;
-
- TWDR = address;
- TWCR = (1<<TWINT) | (1<<TWEN);
-
- i2c_delay();
-
- if ( (TW_STATUS != TW_MT_SLA_ACK) && (TW_STATUS != TW_MR_SLA_ACK) )
- return 1; // slave did not acknowledge
- else
- return 0; // success
-}
-
-
-// Finish the i2c transaction.
-void i2c_master_stop(void) {
- TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
-
- uint16_t lim = 0;
- while(!(TWCR & (1<<TWSTO)) && lim < I2C_LOOP_TIMEOUT)
- lim++;
-}
-
-// Write one byte to the i2c slave.
-// returns 0 => slave ACK
-// 1 => slave NACK
-uint8_t i2c_master_write(uint8_t data) {
- TWDR = data;
- TWCR = (1<<TWINT) | (1<<TWEN);
-
- i2c_delay();
-
- // check if the slave acknowledged us
- return (TW_STATUS == TW_MT_DATA_ACK) ? 0 : 1;
-}
-
-// Read one byte from the i2c slave. If ack=1 the slave is acknowledged,
-// if ack=0 the acknowledge bit is not set.
-// returns: byte read from i2c device
-uint8_t i2c_master_read(int ack) {
- TWCR = (1<<TWINT) | (1<<TWEN) | (ack<<TWEA);
-
- i2c_delay();
- return TWDR;
-}
-
-void i2c_reset_state(void) {
- TWCR = 0;
-}
-
-void i2c_slave_init(uint8_t address) {
- TWAR = address << 0; // slave i2c address
- // TWEN - twi enable
- // TWEA - enable address acknowledgement
- // TWINT - twi interrupt flag
- // TWIE - enable the twi interrupt
- TWCR = (1<<TWIE) | (1<<TWEA) | (1<<TWINT) | (1<<TWEN);
-}
-
-ISR(TWI_vect);
-
-ISR(TWI_vect) {
- uint8_t ack = 1;
- switch(TW_STATUS) {
- case TW_SR_SLA_ACK:
- // this device has been addressed as a slave receiver
- slave_has_register_set = false;
- break;
-
- case TW_SR_DATA_ACK:
- // this device has received data as a slave receiver
- // The first byte that we receive in this transaction sets the location
- // of the read/write location of the slaves memory that it exposes over
- // i2c. After that, bytes will be written at slave_buffer_pos, incrementing
- // slave_buffer_pos after each write.
- if(!slave_has_register_set) {
- slave_buffer_pos = TWDR;
- // don't acknowledge the master if this memory loctaion is out of bounds
- if ( slave_buffer_pos >= SLAVE_BUFFER_SIZE ) {
- ack = 0;
- slave_buffer_pos = 0;
- }
- slave_has_register_set = true;
- } else {
- i2c_slave_buffer[slave_buffer_pos] = TWDR;
- BUFFER_POS_INC();
- }
- break;
-
- case TW_ST_SLA_ACK:
- case TW_ST_DATA_ACK:
- // master has addressed this device as a slave transmitter and is
- // requesting data.
- TWDR = i2c_slave_buffer[slave_buffer_pos];
- BUFFER_POS_INC();
- break;
-
- case TW_BUS_ERROR: // something went wrong, reset twi state
- TWCR = 0;
- default:
- break;
- }
- // Reset everything, so we are ready for the next TWI interrupt
- TWCR |= (1<<TWIE) | (1<<TWINT) | (ack<<TWEA) | (1<<TWEN);
-}
-#endif
diff --git a/keyboards/yosino58/i2c.h b/keyboards/yosino58/i2c.h
deleted file mode 100644
index 710662c7ab..0000000000
--- a/keyboards/yosino58/i2c.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#pragma once
-
-#include <stdint.h>
-
-#ifndef F_CPU
-#define F_CPU 16000000UL
-#endif
-
-#define I2C_READ 1
-#define I2C_WRITE 0
-
-#define I2C_ACK 1
-#define I2C_NACK 0
-
-#define SLAVE_BUFFER_SIZE 0x10
-
-// i2c SCL clock frequency 400kHz
-#define SCL_CLOCK 400000L
-
-extern volatile uint8_t i2c_slave_buffer[SLAVE_BUFFER_SIZE];
-
-void i2c_master_init(void);
-uint8_t i2c_master_start(uint8_t address);
-void i2c_master_stop(void);
-uint8_t i2c_master_write(uint8_t data);
-uint8_t i2c_master_read(int);
-void i2c_reset_state(void);
-void i2c_slave_init(uint8_t address);
-
-
-static inline unsigned char i2c_start_read(unsigned char addr) {
- return i2c_master_start((addr << 1) | I2C_READ);
-}
-
-static inline unsigned char i2c_start_write(unsigned char addr) {
- return i2c_master_start((addr << 1) | I2C_WRITE);
-}
-
-// from SSD1306 scrips
-extern unsigned char i2c_rep_start(unsigned char addr);
-extern void i2c_start_wait(unsigned char addr);
-extern unsigned char i2c_readAck(void);
-extern unsigned char i2c_readNak(void);
-extern unsigned char i2c_read(unsigned char ack);
-
-#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak();
diff --git a/keyboards/yosino58/info.json b/keyboards/yosino58/info.json
deleted file mode 100644
index 5762f5ab89..0000000000
--- a/keyboards/yosino58/info.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "keyboard_name": "yosino58 rev. 1",
- "url": "https://github.com/sakurachari/yosino58",
- "maintainer": "sakuranbo0046",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":0.25}, {"x":3, "y":0}, {"x":4, "y":0.25}, {"x":5, "y":0.5}, {"x":10.75, "y":0.5}, {"x":11.75, "y":0.25}, {"x":12.75, "y":0}, {"x":13.75, "y":0.25}, {"x":14.75, "y":1}, {"x":15.75, "y":1},
- {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":1.25}, {"x":3, "y":1}, {"x":4, "y":1.25}, {"x":5, "y":1.5}, {"x":10.75, "y":1.5}, {"x":11.75, "y":1.25}, {"x":12.75, "y":1}, {"x":13.75, "y":1.25}, {"x":14.75, "y":2}, {"x":15.75, "y":2},
- {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":2.25}, {"x":3, "y":2}, {"x":4, "y":2.25}, {"x":5, "y":2.5}, {"x":10.75, "y":2.5}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2}, {"x":13.75, "y":2.25}, {"x":14.75, "y":3}, {"x":15.75, "y":3},
- {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":3.25}, {"x":3, "y":3}, {"x":4, "y":3.25}, {"x":5, "y":3.5}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25, "h":2}, {"x":8.5, "y":4.25, "h":2}, {"x":9.5, "y":4.25}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3}, {"x":13.75, "y":3.25}, {"x":14.75, "y":4}, {"x":15.75, "y":4},
- {"x":3.75, "y":4.25}, {"x":4.75, "y":4.5}, {"x":6.5, "y":5.25}, {"x":9.5, "y":5.25}, {"x":11, "y":4.5}, {"x":12, "y":4.25}
- ]
- }
- }
-}
diff --git a/keyboards/yosino58/keymaps/default/config.h b/keyboards/yosino58/keymaps/default/config.h
index 21fc2d3b54..aa3caa3d06 100644
--- a/keyboards/yosino58/keymaps/default/config.h
+++ b/keyboards/yosino58/keymaps/default/config.h
@@ -20,17 +20,12 @@ 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
-#define SSD1306OLED
-// #define SSD1306_128X64
-
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100
@@ -40,4 +35,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_LIMIT_VAL 120
#define RGBLIGHT_HUE_STEP 10
#define RGBLIGHT_SAT_STEP 17
-#define RGBLIGHT_VAL_STEP 17 \ No newline at end of file
+#define RGBLIGHT_VAL_STEP 17
diff --git a/keyboards/yosino58/keymaps/default/keymap.c b/keyboards/yosino58/keymaps/default/keymap.c
index 3200d14708..00a6c8e83f 100644
--- a/keyboards/yosino58/keymaps/default/keymap.c
+++ b/keyboards/yosino58/keymaps/default/keymap.c
@@ -1,20 +1,10 @@
#include QMK_KEYBOARD_H
-#ifdef PROTOCOL_LUFA
- #include "lufa.h"
- #include "split_util.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
@@ -25,8 +15,7 @@ extern uint8_t is_master;
#define _ADJUST 3
enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- LOWER,
+ LOWER = SAFE_RANGE,
RAISE,
ADJUST,
RGBRST
@@ -126,11 +115,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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)) {
@@ -144,18 +128,9 @@ 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
- #ifdef SSD1306_128X64
- iota_gfx_init(false); // turns on the display
- #else
- iota_gfx_init(!has_usb()); // turns on the display
- #endif
- #endif
}
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
+#ifdef OLED_ENABLE
//assign the right code to your layers for OLED display
#define L_QWERTY 0
@@ -166,12 +141,8 @@ void matrix_init_user(void) {
// When add source files to SRC in rules.mk, you can use functions.
const char *read_logo(void);
-void matrix_scan_user(void) {
- iota_gfx_task();
-}
-
-void matrix_render_user(struct CharacterMatrix *matrix) {
- if (is_master) {
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
static char indctr[2][20][5]=
{
// white icon
@@ -235,58 +206,40 @@ void matrix_render_user(struct CharacterMatrix *matrix) {
if (layer_state == L_RAISE) { rowr = 1; }
if (layer_state == L_ADJUST) { rowa = 1; }
- matrix_write(matrix, indctr[rowl] [0]);
- matrix_write(matrix, indctr[rowr] [1]);
- matrix_write(matrix, indctr[rowa] [2]);
- matrix_write(matrix, indctr[rowc] [3]);
- matrix_write(matrix, indctr[rown] [4]);
- matrix_write_char(matrix, 0x13);
- matrix_write(matrix, indctr[rowl] [5]);
- matrix_write(matrix, indctr[rowr] [6]);
- matrix_write(matrix, indctr[rowa] [7]);
- matrix_write(matrix, indctr[rowc] [8]);
- matrix_write(matrix, indctr[rown] [9]);
- matrix_write_char(matrix, 0x13);
- matrix_write(matrix, indctr[rowl] [10]);
- matrix_write(matrix, indctr[rowr] [11]);
- matrix_write(matrix, indctr[rowa] [12]);
- matrix_write(matrix, indctr[rowc] [13]);
- matrix_write(matrix, indctr[rown] [14]);
- matrix_write_char(matrix, 0x13);
- matrix_write(matrix, indctr[rowl] [15]);
- matrix_write(matrix, indctr[rowr] [16]);
- matrix_write(matrix, indctr[rowa] [17]);
- matrix_write(matrix, indctr[rowc] [18]);
- matrix_write(matrix, indctr[rown] [19]);
+ oled_write(indctr[rowl] [0], false);
+ oled_write(indctr[rowr] [1], false);
+ oled_write(indctr[rowa] [2], false);
+ oled_write(indctr[rowc] [3], false);
+ oled_write(indctr[rown] [4], false);
+ oled_write_char(0x13, false);
+ oled_write(indctr[rowl] [5], false);
+ oled_write(indctr[rowr] [6], false);
+ oled_write(indctr[rowa] [7], false);
+ oled_write(indctr[rowc] [8], false);
+ oled_write(indctr[rown] [9], false);
+ oled_write_char(0x13, false);
+ oled_write(indctr[rowl] [10], false);
+ oled_write(indctr[rowr] [11], false);
+ oled_write(indctr[rowa] [12], false);
+ oled_write(indctr[rowc] [13], false);
+ oled_write(indctr[rown] [14], false);
+ oled_write_char(0x13, false);
+ oled_write(indctr[rowl] [15], false);
+ oled_write(indctr[rowr] [16], false);
+ oled_write(indctr[rowa] [17], false);
+ oled_write(indctr[rowc] [18], false);
+ oled_write(indctr[rown] [19], false);
}else{
- matrix_write(matrix, read_logo());
+ oled_write(read_logo(), false);
}
+ return false;
}
-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;
- }
-}
-
-void iota_gfx_task_user(void) {
- struct CharacterMatrix matrix;
- matrix_clear(&matrix);
- matrix_render_user(&matrix);
- matrix_update(&display, &matrix);
-}
-#endif//SSD1306OLED
+#endif
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
- case QWERTY:
- if (record->event.pressed) {
- persistent_default_layer_set(1UL<<_QWERTY);
- }
- return false;
- break;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
diff --git a/keyboards/yosino58/keymaps/default/rules.mk b/keyboards/yosino58/keymaps/default/rules.mk
index 88c202edb0..191140d278 100644
--- a/keyboards/yosino58/keymaps/default/rules.mk
+++ b/keyboards/yosino58/keymaps/default/rules.mk
@@ -1,5 +1,6 @@
EXTRAKEY_ENABLE = yes
RGBLIGHT_ENABLE = yes
+OLED_ENABLE = yes
# If you want to change the display of OLED, you need to change here
SRC += ./lib/glcdfont.c \
diff --git a/keyboards/yosino58/keymaps/sakura/config.h b/keyboards/yosino58/keymaps/sakura/config.h
index 64962b0d20..b80d37d457 100644
--- a/keyboards/yosino58/keymaps/sakura/config.h
+++ b/keyboards/yosino58/keymaps/sakura/config.h
@@ -20,16 +20,13 @@ 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
-#define SSD1306OLED
-#define SSD1306_128X64
+#define OLED_DISPLAY_128X64
#define TAPPING_FORCE_HOLD
#define TAPPING_TERM 100
diff --git a/keyboards/yosino58/keymaps/sakura/keymap.c b/keyboards/yosino58/keymaps/sakura/keymap.c
index 0996f0e4e7..6979539d33 100644
--- a/keyboards/yosino58/keymaps/sakura/keymap.c
+++ b/keyboards/yosino58/keymaps/sakura/keymap.c
@@ -1,21 +1,10 @@
#include QMK_KEYBOARD_H
-#ifdef PROTOCOL_LUFA
- #include "lufa.h"
- #include "split_util.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.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
@@ -26,8 +15,7 @@ extern uint8_t is_master;
#define _ADJUST 3
enum custom_keycodes {
- QWERTY = SAFE_RANGE,
- LOWER,
+ LOWER = SAFE_RANGE,
RAISE,
ADJUST,
RGBRST
@@ -60,11 +48,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------. ,-----------------------------------------.
* | ESC | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * | Tab | / | - | 7 | 8 | 9 | | PSCR | SLCK | Pause| | ª | |
+ * | Tab | / | - | 7 | 8 | 9 | | PSCR | SLCK | Pause| | �� | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * |LShift| * | + | 4 | 5 | 6 | |Insert| Home |PageUP| | « | ¨ |
+ * |LShift| * | + | 4 | 5 | 6 | |Insert| Home |PageUP| | �� | �� |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
- * |LCTRL | . | 0 | 1 | 2 | 3 |-------.-------. ,---------------| Del | End |PageDN| © | Num | Caps |
+ * |LCTRL | . | 0 | 1 | 2 | 3 |-------.-------. ,---------------| Del | End |PageDN| �� | Num | Caps |
* `-----------------------------------------/ F11 / / \ \ F12 \----------------------------------------'
* | LAlt | LGUI | /-------/ Space / \ Enter \-------\ | | |
* | | |/ LOWER / / \ \ \ | | |
@@ -80,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* RAISE
* ,-----------------------------------------. ,-----------------------------------------.
- * |RESET | | | | | | | Mute | Vol+ | Play | | | |
+ * |QK_BOOT | | | | | | | Mute | Vol+ | Play | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | | | Prev | Vol- | Next | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
@@ -93,7 +81,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------' '------------------------------'
*/
[_RAISE] = LAYOUT( \
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLU, KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX, \
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLU, KC_MPLY, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_VOLD, KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_WH_L, XXXXXXX, XXXXXXX, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, \
XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_WH_R, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, RGBRST, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, \
@@ -102,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* ADJUST
* ,-----------------------------------------. ,-----------------------------------------.
- * |RESET | | | | | | | | | | | | |
+ * |QK_BOOT | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
@@ -115,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------' '------------------------------'
[_ADJUST] = LAYOUT( \
- RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
+ QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, \
@@ -127,11 +115,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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)) {
@@ -145,18 +128,9 @@ 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
- #ifdef SSD1306_128X64
- iota_gfx_init(false); // turns on the display
- #else
- iota_gfx_init(!has_usb()); // turns on the display
- #endif
- #endif
}
-//SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
-#ifdef SSD1306OLED
+#ifdef OLED_ENABLE
//assign the right code to your layers for OLED display
#define L_QWERTY 0
@@ -167,12 +141,8 @@ void matrix_init_user(void) {
// When add source files to SRC in rules.mk, you can use functions.
const char *read_logo(void);
-void matrix_scan_user(void) {
- iota_gfx_task();
-}
-
-void matrix_render_user(struct CharacterMatrix *matrix) {
- if (is_master) {
+bool oled_task_user(void) {
+ if (is_keyboard_master()) {
static char indctr[2][20][5]=
{
// white icon
@@ -236,58 +206,40 @@ void matrix_render_user(struct CharacterMatrix *matrix) {
if (layer_state == L_RAISE) { rowr = 1; }
if (layer_state == L_ADJUST) { rowa = 1; }
- matrix_write(matrix, indctr[rowl] [0]);
- matrix_write(matrix, indctr[rowr] [1]);
- matrix_write(matrix, indctr[rowa] [2]);
- matrix_write(matrix, indctr[rowc] [3]);
- matrix_write(matrix, indctr[rown] [4]);
- matrix_write_char(matrix, 0x13);
- matrix_write(matrix, indctr[rowl] [5]);
- matrix_write(matrix, indctr[rowr] [6]);
- matrix_write(matrix, indctr[rowa] [7]);
- matrix_write(matrix, indctr[rowc] [8]);
- matrix_write(matrix, indctr[rown] [9]);
- matrix_write_char(matrix, 0x13);
- matrix_write(matrix, indctr[rowl] [10]);
- matrix_write(matrix, indctr[rowr] [11]);
- matrix_write(matrix, indctr[rowa] [12]);
- matrix_write(matrix, indctr[rowc] [13]);
- matrix_write(matrix, indctr[rown] [14]);
- matrix_write_char(matrix, 0x13);
- matrix_write(matrix, indctr[rowl] [15]);
- matrix_write(matrix, indctr[rowr] [16]);
- matrix_write(matrix, indctr[rowa] [17]);
- matrix_write(matrix, indctr[rowc] [18]);
- matrix_write(matrix, indctr[rown] [19]);
+ oled_write(indctr[rowl] [0], false);
+ oled_write(indctr[rowr] [1], false);
+ oled_write(indctr[rowa] [2], false);
+ oled_write(indctr[rowc] [3], false);
+ oled_write(indctr[rown] [4], false);
+ oled_write_char(0x13, false);
+ oled_write(indctr[rowl] [5], false);
+ oled_write(indctr[rowr] [6], false);
+ oled_write(indctr[rowa] [7], false);
+ oled_write(indctr[rowc] [8], false);
+ oled_write(indctr[rown] [9], false);
+ oled_write_char(0x13, false);
+ oled_write(indctr[rowl] [10], false);
+ oled_write(indctr[rowr] [11], false);
+ oled_write(indctr[rowa] [12], false);
+ oled_write(indctr[rowc] [13], false);
+ oled_write(indctr[rown] [14], false);
+ oled_write_char(0x13, false);
+ oled_write(indctr[rowl] [15], false);
+ oled_write(indctr[rowr] [16], false);
+ oled_write(indctr[rowa] [17], false);
+ oled_write(indctr[rowc] [18], false);
+ oled_write(indctr[rown] [19], false);
}else{
- matrix_write(matrix, read_logo());
+ oled_write(read_logo(), false);
}
+ return false;
}
-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;
- }
-}
-
-void iota_gfx_task_user(void) {
- struct CharacterMatrix matrix;
- matrix_clear(&matrix);
- matrix_render_user(&matrix);
- matrix_update(&display, &matrix);
-}
-#endif//SSD1306OLED
+#endif
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
- case QWERTY:
- if (record->event.pressed) {
- persistent_default_layer_set(1UL<<_QWERTY);
- }
- return false;
- break;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
diff --git a/keyboards/yosino58/keymaps/sakura/rules.mk b/keyboards/yosino58/keymaps/sakura/rules.mk
index 0b2ca1ba59..679c8c155d 100644
--- a/keyboards/yosino58/keymaps/sakura/rules.mk
+++ b/keyboards/yosino58/keymaps/sakura/rules.mk
@@ -15,6 +15,7 @@ UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.
SWAP_HANDS_ENABLE = no # Enable one-hand typing
+OLED_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/yosino58/rev1/config.h b/keyboards/yosino58/rev1/config.h
index b7bbace5d9..13f69f18c9 100644
--- a/keyboards/yosino58/rev1/config.h
+++ b/keyboards/yosino58/rev1/config.h
@@ -18,12 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0F6A
-#define PRODUCT_ID 0x01B8
-#define DEVICE_VER 0x0001
-#define MANUFACTURER sakuranbo0046
-#define PRODUCT yosino58
+#include "config_common.h"
/* key matrix size */
// Rows are doubled-up
@@ -33,6 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// wiring of each half
#define MATRIX_ROW_PINS { D4, C6, D7, E6, B4 }
#define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3 }
+#define DIODE_DIRECTION COL2ROW
/* define if matrix has ghost */
//#define MATRIX_HAS_GHOST
@@ -43,6 +39,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Set 0 if debouncing isn't 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 // or D1, D2, D3, E6
+
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
//#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
diff --git a/keyboards/yosino58/rev1/info.json b/keyboards/yosino58/rev1/info.json
new file mode 100644
index 0000000000..aa2fe726ee
--- /dev/null
+++ b/keyboards/yosino58/rev1/info.json
@@ -0,0 +1,22 @@
+{
+ "keyboard_name": "yosino58",
+ "manufacturer": "sakuranbo0046",
+ "url": "https://github.com/sakurachari/yosino58",
+ "maintainer": "sakuranbo0046",
+ "usb": {
+ "vid": "0x0F6A",
+ "pid": "0x01B8",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":0.25}, {"x":3, "y":0}, {"x":4, "y":0.25}, {"x":5, "y":0.5}, {"x":10.75, "y":0.5}, {"x":11.75, "y":0.25}, {"x":12.75, "y":0}, {"x":13.75, "y":0.25}, {"x":14.75, "y":1}, {"x":15.75, "y":1},
+ {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":1.25}, {"x":3, "y":1}, {"x":4, "y":1.25}, {"x":5, "y":1.5}, {"x":10.75, "y":1.5}, {"x":11.75, "y":1.25}, {"x":12.75, "y":1}, {"x":13.75, "y":1.25}, {"x":14.75, "y":2}, {"x":15.75, "y":2},
+ {"x":0, "y":3}, {"x":1, "y":3}, {"x":2, "y":2.25}, {"x":3, "y":2}, {"x":4, "y":2.25}, {"x":5, "y":2.5}, {"x":10.75, "y":2.5}, {"x":11.75, "y":2.25}, {"x":12.75, "y":2}, {"x":13.75, "y":2.25}, {"x":14.75, "y":3}, {"x":15.75, "y":3},
+ {"x":0, "y":4}, {"x":1, "y":4}, {"x":2, "y":3.25}, {"x":3, "y":3}, {"x":4, "y":3.25}, {"x":5, "y":3.5}, {"x":6.5, "y":4.25}, {"x":7.5, "y":4.25, "h":2}, {"x":8.5, "y":4.25, "h":2}, {"x":9.5, "y":4.25}, {"x":10.75, "y":3.5}, {"x":11.75, "y":3.25}, {"x":12.75, "y":3}, {"x":13.75, "y":3.25}, {"x":14.75, "y":4}, {"x":15.75, "y":4},
+ {"x":3.75, "y":4.25}, {"x":4.75, "y":4.5}, {"x":6.5, "y":5.25}, {"x":9.5, "y":5.25}, {"x":11, "y":4.5}, {"x":12, "y":4.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/yosino58/rev1/matrix.c b/keyboards/yosino58/rev1/matrix.c
deleted file mode 100644
index 802ce00cc6..0000000000
--- a/keyboards/yosino58/rev1/matrix.c
+++ /dev/null
@@ -1,343 +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 <string.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 "split_scomm.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;
-uint8_t is_master = 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)
-{
- debug_enable = true;
- debug_matrix = true;
- debug_mouse = true;
- // initialize row and col
- unselect_rows();
- init_cols();
-
- setPinOutput(B0);
- setPinOutput(D5);
- writePinHigh(D5);
- writePinHigh(B0);
-
- // initialize matrix state: all keys off
- for (uint8_t i=0; i < MATRIX_ROWS; i++) {
- matrix[i] = 0;
- matrix_debouncing[i] = 0;
- }
-
- is_master = has_usb();
-
- 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(int master_changed) {
- int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0;
-#ifdef SERIAL_USE_MULTI_TRANSACTION
- int ret=serial_update_buffers(master_changed);
-#else
- int ret=serial_update_buffers();
-#endif
- if (ret ) {
- if(ret==2) writePinLow(B0);
- return 1;
- }
- writePinHigh(B0);
- memcpy(&matrix[slaveOffset],
- (void *)serial_slave_buffer, SERIAL_SLAVE_BUFFER_LENGTH);
- return 0;
-}
-#endif
-
-uint8_t matrix_scan(void)
-{
- if (is_master) {
- matrix_master_scan();
- }else{
- matrix_slave_scan();
- int offset = (isLeftHand) ? ROWS_PER_HAND : 0;
- memcpy(&matrix[offset],
- (void *)serial_master_buffer, SERIAL_MASTER_BUFFER_LENGTH);
- matrix_scan_quantum();
- }
- return 1;
-}
-
-
-uint8_t matrix_master_scan(void) {
-
- int ret = _matrix_scan();
- int mchanged = 1;
-
- 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
- #ifdef SERIAL_USE_MULTI_TRANSACTION
- mchanged = memcmp((void *)serial_master_buffer,
- &matrix[offset], SERIAL_MASTER_BUFFER_LENGTH);
- #endif
- memcpy((void *)serial_master_buffer,
- &matrix[offset], SERIAL_MASTER_BUFFER_LENGTH);
-#endif
-
-#ifdef USE_MATRIX_I2C
- if( i2c_transaction() ) {
-#else // USE_SERIAL
- if( serial_transaction(mchanged) ) {
-#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
- #ifdef SERIAL_USE_MULTI_TRANSACTION
- int change = 0;
- #endif
- for (int i = 0; i < ROWS_PER_HAND; ++i) {
- #ifdef SERIAL_USE_MULTI_TRANSACTION
- if( serial_slave_buffer[i] != matrix[offset+i] )
- change = 1;
- #endif
- serial_slave_buffer[i] = matrix[offset+i];
- }
- #ifdef SERIAL_USE_MULTI_TRANSACTION
- slave_buffer_change_count += change;
- #endif
-#endif
-}
-
-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");
- }
-}
-
-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/yosino58/rev1/rev1.h b/keyboards/yosino58/rev1/rev1.h
index bc68892e88..c643c9d729 100644
--- a/keyboards/yosino58/rev1/rev1.h
+++ b/keyboards/yosino58/rev1/rev1.h
@@ -1,22 +1,7 @@
#pragma once
-#include "../yosino58.h"
-
#include "quantum.h"
-#ifdef RGBLIGHT_ENABLE
-//rgb led driver
-#include "ws2812.h"
-#endif
-
-#ifdef USE_I2C
-#include <stddef.h>
-#ifdef __AVR__
- #include <avr/io.h>
- #include <avr/interrupt.h>
-#endif
-#endif
-
#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, \
diff --git a/keyboards/yosino58/rev1/rules.mk b/keyboards/yosino58/rev1/rules.mk
index 6028b5a5b9..cf39e83a4f 100644
--- a/keyboards/yosino58/rev1/rules.mk
+++ b/keyboards/yosino58/rev1/rules.mk
@@ -1,3 +1,20 @@
-SRC += rev1/matrix.c
-SRC += rev1/split_util.c
-SRC += rev1/split_scomm.c
+# 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 = 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
+RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
+SPLIT_KEYBOARD = yes
+OLED_DRIVER = SSD1306
diff --git a/keyboards/yosino58/rev1/serial_config.h b/keyboards/yosino58/rev1/serial_config.h
deleted file mode 100644
index 4fab8e8ddf..0000000000
--- a/keyboards/yosino58/rev1/serial_config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#ifndef SOFT_SERIAL_PIN
-#define SOFT_SERIAL_PIN D2
-#define SERIAL_USE_MULTI_TRANSACTION
-#endif
diff --git a/keyboards/yosino58/rev1/serial_config_simpleapi.h b/keyboards/yosino58/rev1/serial_config_simpleapi.h
deleted file mode 100644
index 0e1dd9e4ac..0000000000
--- a/keyboards/yosino58/rev1/serial_config_simpleapi.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#pragma once
-
-#undef SERIAL_USE_MULTI_TRANSACTION
-#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
-#define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2
diff --git a/keyboards/yosino58/rev1/split_scomm.c b/keyboards/yosino58/rev1/split_scomm.c
deleted file mode 100644
index 82b53d7e7f..0000000000
--- a/keyboards/yosino58/rev1/split_scomm.c
+++ /dev/null
@@ -1,91 +0,0 @@
-#ifdef USE_SERIAL
-#ifdef SERIAL_USE_MULTI_TRANSACTION
-/* --- USE flexible API (using multi-type transaction function) --- */
-
-#include <stdbool.h>
-#include <stdint.h>
-#include <stddef.h>
-#include "split_scomm.h"
-#include "serial.h"
-#ifdef CONSOLE_ENABLE
- #include "print.h"
-#endif
-
-uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0};
-uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0};
-uint8_t volatile status_com = 0;
-uint8_t volatile status1 = 0;
-uint8_t slave_buffer_change_count = 0;
-uint8_t s_change_old = 0xff;
-uint8_t s_change_new = 0xff;
-
-SSTD_t transactions[] = {
-#define GET_SLAVE_STATUS 0
- /* master buffer not changed, only recive slave_buffer_change_count */
- { (uint8_t *)&status_com,
- 0, NULL,
- sizeof(slave_buffer_change_count), &slave_buffer_change_count,
- },
-#define PUT_MASTER_GET_SLAVE_STATUS 1
- /* master buffer changed need send, and recive slave_buffer_change_count */
- { (uint8_t *)&status_com,
- sizeof(serial_master_buffer), (uint8_t *)serial_master_buffer,
- sizeof(slave_buffer_change_count), &slave_buffer_change_count,
- },
-#define GET_SLAVE_BUFFER 2
- /* recive serial_slave_buffer */
- { (uint8_t *)&status1,
- 0, NULL,
- sizeof(serial_slave_buffer), (uint8_t *)serial_slave_buffer
- }
-};
-
-void serial_master_init(void)
-{
- soft_serial_initiator_init(transactions, TID_LIMIT(transactions));
-}
-
-void serial_slave_init(void)
-{
- soft_serial_target_init(transactions, TID_LIMIT(transactions));
-}
-
-// 0 => no error
-// 1 => slave did not respond
-// 2 => checksum error
-int serial_update_buffers(int master_update)
-{
- int status, smatstatus;
- static int need_retry = 0;
-
- if( s_change_old != s_change_new ) {
- smatstatus = soft_serial_transaction(GET_SLAVE_BUFFER);
- if( smatstatus == TRANSACTION_END ) {
- s_change_old = s_change_new;
-#ifdef CONSOLE_ENABLE
- uprintf("slave matrix = %b %b %b %b\n",
- serial_slave_buffer[0], serial_slave_buffer[1],
- serial_slave_buffer[2], serial_slave_buffer[3]);
-#endif
- }
- } else {
- // serial_slave_buffer dosen't change
- smatstatus = TRANSACTION_END; // dummy status
- }
-
- if( !master_update && !need_retry) {
- status = soft_serial_transaction(GET_SLAVE_STATUS);
- } else {
- status = soft_serial_transaction(PUT_MASTER_GET_SLAVE_STATUS);
- }
- if( status == TRANSACTION_END ) {
- s_change_new = slave_buffer_change_count;
- need_retry = 0;
- } else {
- need_retry = 1;
- }
- return smatstatus;
-}
-
-#endif // SERIAL_USE_MULTI_TRANSACTION
-#endif /* USE_SERIAL */
diff --git a/keyboards/yosino58/rev1/split_scomm.h b/keyboards/yosino58/rev1/split_scomm.h
deleted file mode 100644
index 16887eb74f..0000000000
--- a/keyboards/yosino58/rev1/split_scomm.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#pragma once
-
-#ifndef SERIAL_USE_MULTI_TRANSACTION
-/* --- USE Simple API (OLD API, compatible with let's split serial.c) --- */
-#include "serial.h"
-
-#else
-/* --- USE flexible API (using multi-type transaction function) --- */
-// Buffers for master - slave communication
-#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
-#define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2
-
-extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];
-extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH];
-extern uint8_t slave_buffer_change_count;
-
-void serial_master_init(void);
-void serial_slave_init(void);
-int serial_update_buffers(int master_changed);
-
-#endif
diff --git a/keyboards/yosino58/rev1/split_util.c b/keyboards/yosino58/rev1/split_util.c
deleted file mode 100644
index e1ff8b4379..0000000000
--- a/keyboards/yosino58/rev1/split_util.c
+++ /dev/null
@@ -1,70 +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"
-
-#ifdef USE_MATRIX_I2C
-# include "i2c.h"
-#else
-# include "split_scomm.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_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();
-}
-
-// this code runs before the usb and keyboard is initialized
-void matrix_setup(void) {
- split_keyboard_setup();
-}
diff --git a/keyboards/yosino58/rev1/split_util.h b/keyboards/yosino58/rev1/split_util.h
deleted file mode 100644
index f593047560..0000000000
--- a/keyboards/yosino58/rev1/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 has_usb(void);
-
-void matrix_master_OLED_init (void);
diff --git a/keyboards/yosino58/rules.mk b/keyboards/yosino58/rules.mk
index 3d0f6b19e5..c700b6f5b5 100644
--- a/keyboards/yosino58/rules.mk
+++ b/keyboards/yosino58/rules.mk
@@ -1,28 +1 @@
-# 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 = 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
-RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
-SUBPROJECT_rev1 = no
-USE_I2C = yes
-
-CUSTOM_MATRIX = yes
-
DEFAULT_FOLDER = yosino58/rev1
-
-SRC += i2c.c
-SRC += serial.c
-SRC += ssd1306.c
diff --git a/keyboards/yosino58/serial.c b/keyboards/yosino58/serial.c
deleted file mode 100644
index f6293c3dc2..0000000000
--- a/keyboards/yosino58/serial.c
+++ /dev/null
@@ -1,589 +0,0 @@
-/*
- * WARNING: be careful changing this code, it is very timing dependent
- *
- * 2018-10-28 checked
- * avr-gcc 4.9.2
- * avr-gcc 5.4.0
- * avr-gcc 7.3.0
- */
-
-#ifndef F_CPU
-#define F_CPU 16000000
-#endif
-
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
-#include <stddef.h>
-#include <stdbool.h>
-#include "serial.h"
-
-#ifdef SOFT_SERIAL_PIN
-
-#ifdef __AVR_ATmega32U4__
- // if using ATmega32U4 I2C, can not use PD0 and PD1 in soft serial.
- #ifdef USE_I2C
- #if SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1
- #error Using ATmega32U4 I2C, so can not use PD0, PD1
- #endif
- #endif
-
- #if SOFT_SERIAL_PIN >= D0 && SOFT_SERIAL_PIN <= D3
- #define SERIAL_PIN_DDR DDRD
- #define SERIAL_PIN_PORT PORTD
- #define SERIAL_PIN_INPUT PIND
- #if SOFT_SERIAL_PIN == D0
- #define SERIAL_PIN_MASK _BV(PD0)
- #define EIMSK_BIT _BV(INT0)
- #define EICRx_BIT (~(_BV(ISC00) | _BV(ISC01)))
- #define SERIAL_PIN_INTERRUPT INT0_vect
- #elif SOFT_SERIAL_PIN == D1
- #define SERIAL_PIN_MASK _BV(PD1)
- #define EIMSK_BIT _BV(INT1)
- #define EICRx_BIT (~(_BV(ISC10) | _BV(ISC11)))
- #define SERIAL_PIN_INTERRUPT INT1_vect
- #elif SOFT_SERIAL_PIN == D2
- #define SERIAL_PIN_MASK _BV(PD2)
- #define EIMSK_BIT _BV(INT2)
- #define EICRx_BIT (~(_BV(ISC20) | _BV(ISC21)))
- #define SERIAL_PIN_INTERRUPT INT2_vect
- #elif SOFT_SERIAL_PIN == D3
- #define SERIAL_PIN_MASK _BV(PD3)
- #define EIMSK_BIT _BV(INT3)
- #define EICRx_BIT (~(_BV(ISC30) | _BV(ISC31)))
- #define SERIAL_PIN_INTERRUPT INT3_vect
- #endif
- #elif SOFT_SERIAL_PIN == E6
- #define SERIAL_PIN_DDR DDRE
- #define SERIAL_PIN_PORT PORTE
- #define SERIAL_PIN_INPUT PINE
- #define SERIAL_PIN_MASK _BV(PE6)
- #define EIMSK_BIT _BV(INT6)
- #define EICRx_BIT (~(_BV(ISC60) | _BV(ISC61)))
- #define SERIAL_PIN_INTERRUPT INT6_vect
- #else
- #error invalid SOFT_SERIAL_PIN value
- #endif
-
-#else
- #error serial.c now support ATmega32U4 only
-#endif
-
-//////////////// for backward compatibility ////////////////////////////////
-#ifndef SERIAL_USE_MULTI_TRANSACTION
-/* --- USE Simple API (OLD API, compatible with let's split serial.c) */
- #if SERIAL_SLAVE_BUFFER_LENGTH > 0
- uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0};
- #endif
- #if SERIAL_MASTER_BUFFER_LENGTH > 0
- uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0};
- #endif
- uint8_t volatile status0 = 0;
-
-SSTD_t transactions[] = {
- { (uint8_t *)&status0,
- #if SERIAL_MASTER_BUFFER_LENGTH > 0
- sizeof(serial_master_buffer), (uint8_t *)serial_master_buffer,
- #else
- 0, (uint8_t *)NULL,
- #endif
- #if SERIAL_SLAVE_BUFFER_LENGTH > 0
- sizeof(serial_slave_buffer), (uint8_t *)serial_slave_buffer
- #else
- 0, (uint8_t *)NULL,
- #endif
- }
-};
-
-void serial_master_init(void)
-{ soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); }
-
-void serial_slave_init(void)
-{ soft_serial_target_init(transactions, TID_LIMIT(transactions)); }
-
-// 0 => no error
-// 1 => slave did not respond
-// 2 => checksum error
-int serial_update_buffers()
-{
- int result;
- result = soft_serial_transaction();
- return result;
-}
-
-#endif // end of Simple API (OLD API, compatible with let's split serial.c)
-////////////////////////////////////////////////////////////////////////////
-
-#define ALWAYS_INLINE __attribute__((always_inline))
-#define NO_INLINE __attribute__((noinline))
-#define _delay_sub_us(x) __builtin_avr_delay_cycles(x)
-
-// parity check
-#define ODD_PARITY 1
-#define EVEN_PARITY 0
-#define PARITY EVEN_PARITY
-
-#ifdef SERIAL_DELAY
- // custom setup in config.h
- // #define TID_SEND_ADJUST 2
- // #define SERIAL_DELAY 6 // micro sec
- // #define READ_WRITE_START_ADJUST 30 // cycles
- // #define READ_WRITE_WIDTH_ADJUST 8 // cycles
-#else
-// ============ Standard setups ============
-
-#ifndef SELECT_SOFT_SERIAL_SPEED
-#define SELECT_SOFT_SERIAL_SPEED 1
-// 0: about 189kbps
-// 1: about 137kbps (default)
-// 2: about 75kbps
-// 3: about 39kbps
-// 4: about 26kbps
-// 5: about 20kbps
-#endif
-
-#if __GNUC__ < 6
- #define TID_SEND_ADJUST 14
-#else
- #define TID_SEND_ADJUST 2
-#endif
-
-#if SELECT_SOFT_SERIAL_SPEED == 0
- // Very High speed
- #define SERIAL_DELAY 4 // micro sec
- #if __GNUC__ < 6
- #define READ_WRITE_START_ADJUST 33 // cycles
- #define READ_WRITE_WIDTH_ADJUST 3 // cycles
- #else
- #define READ_WRITE_START_ADJUST 34 // cycles
- #define READ_WRITE_WIDTH_ADJUST 7 // cycles
- #endif
-#elif SELECT_SOFT_SERIAL_SPEED == 1
- // High speed
- #define SERIAL_DELAY 6 // micro sec
- #if __GNUC__ < 6
- #define READ_WRITE_START_ADJUST 30 // cycles
- #define READ_WRITE_WIDTH_ADJUST 3 // cycles
- #else
- #define READ_WRITE_START_ADJUST 33 // cycles
- #define READ_WRITE_WIDTH_ADJUST 7 // cycles
- #endif
-#elif SELECT_SOFT_SERIAL_SPEED == 2
- // Middle speed
- #define SERIAL_DELAY 12 // micro sec
- #define READ_WRITE_START_ADJUST 30 // cycles
- #if __GNUC__ < 6
- #define READ_WRITE_WIDTH_ADJUST 3 // cycles
- #else
- #define READ_WRITE_WIDTH_ADJUST 7 // cycles
- #endif
-#elif SELECT_SOFT_SERIAL_SPEED == 3
- // Low speed
- #define SERIAL_DELAY 24 // micro sec
- #define READ_WRITE_START_ADJUST 30 // cycles
- #if __GNUC__ < 6
- #define READ_WRITE_WIDTH_ADJUST 3 // cycles
- #else
- #define READ_WRITE_WIDTH_ADJUST 7 // cycles
- #endif
-#elif SELECT_SOFT_SERIAL_SPEED == 4
- // Very Low speed
- #define SERIAL_DELAY 36 // micro sec
- #define READ_WRITE_START_ADJUST 30 // cycles
- #if __GNUC__ < 6
- #define READ_WRITE_WIDTH_ADJUST 3 // cycles
- #else
- #define READ_WRITE_WIDTH_ADJUST 7 // cycles
- #endif
-#elif SELECT_SOFT_SERIAL_SPEED == 5
- // Ultra Low speed
- #define SERIAL_DELAY 48 // micro sec
- #define READ_WRITE_START_ADJUST 30 // cycles
- #if __GNUC__ < 6
- #define READ_WRITE_WIDTH_ADJUST 3 // cycles
- #else
- #define READ_WRITE_WIDTH_ADJUST 7 // cycles
- #endif
-#else
-#error invalid SELECT_SOFT_SERIAL_SPEED value
-#endif /* SELECT_SOFT_SERIAL_SPEED */
-#endif /* SERIAL_DELAY */
-
-#define SERIAL_DELAY_HALF1 (SERIAL_DELAY/2)
-#define SERIAL_DELAY_HALF2 (SERIAL_DELAY - SERIAL_DELAY/2)
-
-#define SLAVE_INT_WIDTH_US 1
-#ifndef SERIAL_USE_MULTI_TRANSACTION
- #define SLAVE_INT_RESPONSE_TIME SERIAL_DELAY
-#else
- #define SLAVE_INT_ACK_WIDTH_UNIT 2
- #define SLAVE_INT_ACK_WIDTH 4
-#endif
-
-static SSTD_t *Transaction_table = NULL;
-static uint8_t Transaction_table_size = 0;
-
-inline static void serial_delay(void) ALWAYS_INLINE;
-inline static
-void serial_delay(void) {
- _delay_us(SERIAL_DELAY);
-}
-
-inline static void serial_delay_half1(void) ALWAYS_INLINE;
-inline static
-void serial_delay_half1(void) {
- _delay_us(SERIAL_DELAY_HALF1);
-}
-
-inline static void serial_delay_half2(void) ALWAYS_INLINE;
-inline static
-void serial_delay_half2(void) {
- _delay_us(SERIAL_DELAY_HALF2);
-}
-
-inline static void serial_output(void) ALWAYS_INLINE;
-inline static
-void serial_output(void) {
- SERIAL_PIN_DDR |= SERIAL_PIN_MASK;
-}
-
-// make the serial pin an input with pull-up resistor
-inline static void serial_input_with_pullup(void) ALWAYS_INLINE;
-inline static
-void serial_input_with_pullup(void) {
- SERIAL_PIN_DDR &= ~SERIAL_PIN_MASK;
- SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
-}
-
-inline static uint8_t serial_read_pin(void) ALWAYS_INLINE;
-inline static
-uint8_t serial_read_pin(void) {
- return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK);
-}
-
-inline static void serial_low(void) ALWAYS_INLINE;
-inline static
-void serial_low(void) {
- SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK;
-}
-
-inline static void serial_high(void) ALWAYS_INLINE;
-inline static
-void serial_high(void) {
- SERIAL_PIN_PORT |= SERIAL_PIN_MASK;
-}
-
-void soft_serial_initiator_init(SSTD_t *sstd_table, int sstd_table_size)
-{
- Transaction_table = sstd_table;
- Transaction_table_size = (uint8_t)sstd_table_size;
- serial_output();
- serial_high();
-}
-
-void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size)
-{
- Transaction_table = sstd_table;
- Transaction_table_size = (uint8_t)sstd_table_size;
- serial_input_with_pullup();
-
- // Enable INT0-INT3,INT6
- EIMSK |= EIMSK_BIT;
-#if SERIAL_PIN_MASK == _BV(PE6)
- // Trigger on falling edge of INT6
- EICRB &= EICRx_BIT;
-#else
- // Trigger on falling edge of INT0-INT3
- EICRA &= EICRx_BIT;
-#endif
-}
-
-// Used by the sender to synchronize timing with the reciver.
-static void sync_recv(void) NO_INLINE;
-static
-void sync_recv(void) {
- for (uint8_t i = 0; i < SERIAL_DELAY*5 && serial_read_pin(); i++ ) {
- }
- // This shouldn't hang if the target disconnects because the
- // serial line will float to high if the target does disconnect.
- while (!serial_read_pin());
-}
-
-// Used by the reciver to send a synchronization signal to the sender.
-static void sync_send(void) NO_INLINE;
-static
-void sync_send(void) {
- serial_low();
- serial_delay();
- serial_high();
-}
-
-// Reads a byte from the serial line
-static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) NO_INLINE;
-static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) {
- uint8_t byte, i, p, pb;
-
- _delay_sub_us(READ_WRITE_START_ADJUST);
- for( i = 0, byte = 0, p = PARITY; i < bit; i++ ) {
- serial_delay_half1(); // read the middle of pulses
- if( serial_read_pin() ) {
- byte = (byte << 1) | 1; p ^= 1;
- } else {
- byte = (byte << 1) | 0; p ^= 0;
- }
- _delay_sub_us(READ_WRITE_WIDTH_ADJUST);
- serial_delay_half2();
- }
- /* recive parity bit */
- serial_delay_half1(); // read the middle of pulses
- pb = serial_read_pin();
- _delay_sub_us(READ_WRITE_WIDTH_ADJUST);
- serial_delay_half2();
-
- *pterrcount += (p != pb)? 1 : 0;
-
- return byte;
-}
-
-// Sends a byte with MSB ordering
-void serial_write_chunk(uint8_t data, uint8_t bit) NO_INLINE;
-void serial_write_chunk(uint8_t data, uint8_t bit) {
- uint8_t b, p;
- for( p = PARITY, b = 1<<(bit-1); b ; b >>= 1) {
- if(data & b) {
- serial_high(); p ^= 1;
- } else {
- serial_low(); p ^= 0;
- }
- serial_delay();
- }
- /* send parity bit */
- if(p & 1) { serial_high(); }
- else { serial_low(); }
- serial_delay();
-
- serial_low(); // sync_send() / senc_recv() need raise edge
-}
-
-static void serial_send_packet(uint8_t *buffer, uint8_t size) NO_INLINE;
-static
-void serial_send_packet(uint8_t *buffer, uint8_t size) {
- for (uint8_t i = 0; i < size; ++i) {
- uint8_t data;
- data = buffer[i];
- sync_send();
- serial_write_chunk(data,8);
- }
-}
-
-static uint8_t serial_recive_packet(uint8_t *buffer, uint8_t size) NO_INLINE;
-static
-uint8_t serial_recive_packet(uint8_t *buffer, uint8_t size) {
- uint8_t pecount = 0;
- for (uint8_t i = 0; i < size; ++i) {
- uint8_t data;
- sync_recv();
- data = serial_read_chunk(&pecount, 8);
- buffer[i] = data;
- }
- return pecount == 0;
-}
-
-inline static
-void change_sender2reciver(void) {
- sync_send(); //0
- serial_delay_half1(); //1
- serial_low(); //2
- serial_input_with_pullup(); //2
- serial_delay_half1(); //3
-}
-
-inline static
-void change_reciver2sender(void) {
- sync_recv(); //0
- serial_delay(); //1
- serial_low(); //3
- serial_output(); //3
- serial_delay_half1(); //4
-}
-
-static inline uint8_t nibble_bits_count(uint8_t bits)
-{
- bits = (bits & 0x5) + (bits >> 1 & 0x5);
- bits = (bits & 0x3) + (bits >> 2 & 0x3);
- return bits;
-}
-
-// interrupt handle to be used by the target device
-ISR(SERIAL_PIN_INTERRUPT) {
-
-#ifndef SERIAL_USE_MULTI_TRANSACTION
- serial_low();
- serial_output();
- SSTD_t *trans = Transaction_table;
-#else
- // recive transaction table index
- uint8_t tid, bits;
- uint8_t pecount = 0;
- sync_recv();
- bits = serial_read_chunk(&pecount,7);
- tid = bits>>3;
- bits = (bits&7) != nibble_bits_count(tid);
- if( bits || pecount> 0 || tid > Transaction_table_size ) {
- return;
- }
- serial_delay_half1();
-
- serial_high(); // response step1 low->high
- serial_output();
- _delay_sub_us(SLAVE_INT_ACK_WIDTH_UNIT*SLAVE_INT_ACK_WIDTH);
- SSTD_t *trans = &Transaction_table[tid];
- serial_low(); // response step2 ack high->low
-#endif
-
- // target send phase
- if( trans->target2initiator_buffer_size > 0 )
- serial_send_packet((uint8_t *)trans->target2initiator_buffer,
- trans->target2initiator_buffer_size);
- // target switch to input
- change_sender2reciver();
-
- // target recive phase
- if( trans->initiator2target_buffer_size > 0 ) {
- if (serial_recive_packet((uint8_t *)trans->initiator2target_buffer,
- trans->initiator2target_buffer_size) ) {
- *trans->status = TRANSACTION_ACCEPTED;
- } else {
- *trans->status = TRANSACTION_DATA_ERROR;
- }
- } else {
- *trans->status = TRANSACTION_ACCEPTED;
- }
-
- sync_recv(); //weit initiator output to high
-}
-
-/////////
-// start transaction by initiator
-//
-// int soft_serial_transaction(int sstd_index)
-//
-// Returns:
-// TRANSACTION_END
-// TRANSACTION_NO_RESPONSE
-// TRANSACTION_DATA_ERROR
-// this code is very time dependent, so we need to disable interrupts
-#ifndef SERIAL_USE_MULTI_TRANSACTION
-int soft_serial_transaction(void) {
- SSTD_t *trans = Transaction_table;
-#else
-int soft_serial_transaction(int sstd_index) {
- if( sstd_index > Transaction_table_size )
- return TRANSACTION_TYPE_ERROR;
- SSTD_t *trans = &Transaction_table[sstd_index];
-#endif
- cli();
-
- // signal to the target that we want to start a transaction
- serial_output();
- serial_low();
- _delay_us(SLAVE_INT_WIDTH_US);
-
-#ifndef SERIAL_USE_MULTI_TRANSACTION
- // wait for the target response
- serial_input_with_pullup();
- _delay_us(SLAVE_INT_RESPONSE_TIME);
-
- // check if the target is present
- if (serial_read_pin()) {
- // target failed to pull the line low, assume not present
- serial_output();
- serial_high();
- *trans->status = TRANSACTION_NO_RESPONSE;
- sei();
- return TRANSACTION_NO_RESPONSE;
- }
-
-#else
- // send transaction table index
- int tid = (sstd_index<<3) | (7 & nibble_bits_count(sstd_index));
- sync_send();
- _delay_sub_us(TID_SEND_ADJUST);
- serial_write_chunk(tid, 7);
- serial_delay_half1();
-
- // wait for the target response (step1 low->high)
- serial_input_with_pullup();
- while( !serial_read_pin() ) {
- _delay_sub_us(2);
- }
-
- // check if the target is present (step2 high->low)
- for( int i = 0; serial_read_pin(); i++ ) {
- if (i > SLAVE_INT_ACK_WIDTH + 1) {
- // slave failed to pull the line low, assume not present
- serial_output();
- serial_high();
- *trans->status = TRANSACTION_NO_RESPONSE;
- sei();
- return TRANSACTION_NO_RESPONSE;
- }
- _delay_sub_us(SLAVE_INT_ACK_WIDTH_UNIT);
- }
-#endif
-
- // initiator recive phase
- // if the target is present syncronize with it
- if( trans->target2initiator_buffer_size > 0 ) {
- if (!serial_recive_packet((uint8_t *)trans->target2initiator_buffer,
- trans->target2initiator_buffer_size) ) {
- serial_output();
- serial_high();
- *trans->status = TRANSACTION_DATA_ERROR;
- sei();
- return TRANSACTION_DATA_ERROR;
- }
- }
-
- // initiator switch to output
- change_reciver2sender();
-
- // initiator send phase
- if( trans->initiator2target_buffer_size > 0 ) {
- serial_send_packet((uint8_t *)trans->initiator2target_buffer,
- trans->initiator2target_buffer_size);
- }
-
- // always, release the line when not in use
- sync_send();
-
- *trans->status = TRANSACTION_END;
- sei();
- return TRANSACTION_END;
-}
-
-#ifdef SERIAL_USE_MULTI_TRANSACTION
-int soft_serial_get_and_clean_status(int sstd_index) {
- SSTD_t *trans = &Transaction_table[sstd_index];
- cli();
- int retval = *trans->status;
- *trans->status = 0;;
- sei();
- return retval;
-}
-#endif
-
-#endif
-
-// Helix serial.c history
-// 2018-1-29 fork from let's split and add PD2, modify sync_recv() (#2308, bceffdefc)
-// 2018-6-28 bug fix master to slave comm and speed up (#3255, 1038bbef4)
-// (adjusted with avr-gcc 4.9.2)
-// 2018-7-13 remove USE_SERIAL_PD2 macro (#3374, f30d6dd78)
-// (adjusted with avr-gcc 4.9.2)
-// 2018-8-11 add support multi-type transaction (#3608, feb5e4aae)
-// (adjusted with avr-gcc 4.9.2)
-// 2018-10-21 fix serial and RGB animation conflict (#4191, 4665e4fff)
-// (adjusted with avr-gcc 7.3.0)
-// 2018-10-28 re-adjust compiler depend value of delay (#4269, 8517f8a66)
-// (adjusted with avr-gcc 5.4.0, 7.3.0)
diff --git a/keyboards/yosino58/serial.h b/keyboards/yosino58/serial.h
deleted file mode 100644
index ac3459c876..0000000000
--- a/keyboards/yosino58/serial.h
+++ /dev/null
@@ -1,81 +0,0 @@
-#pragma once
-
-#include <stdbool.h>
-
-// /////////////////////////////////////////////////////////////////
-// Need Soft Serial defines in config.h
-// /////////////////////////////////////////////////////////////////
-// ex.
-// #define SOFT_SERIAL_PIN ?? // ?? = D0,D1,D2,D3,E6
-// OPTIONAL: #define SELECT_SOFT_SERIAL_SPEED ? // ? = 1,2,3,4,5
-// // 1: about 137kbps (default)
-// // 2: about 75kbps
-// // 3: about 39kbps
-// // 4: about 26kbps
-// // 5: about 20kbps
-//
-// //// USE Simple API (OLD API, compatible with let's split serial.c)
-// ex.
-// #define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
-// #define SERIAL_MASTER_BUFFER_LENGTH 1
-//
-// //// USE flexible API (using multi-type transaction function)
-// #define SERIAL_USE_MULTI_TRANSACTION
-//
-// /////////////////////////////////////////////////////////////////
-
-
-#ifndef SERIAL_USE_MULTI_TRANSACTION
-/* --- USE Simple API (OLD API, compatible with let's split serial.c) */
-#if SERIAL_SLAVE_BUFFER_LENGTH > 0
-extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];
-#endif
-#if SERIAL_MASTER_BUFFER_LENGTH > 0
-extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH];
-#endif
-
-void serial_master_init(void);
-void serial_slave_init(void);
-int serial_update_buffers(void);
-
-#endif // USE Simple API
-
-// Soft Serial Transaction Descriptor
-typedef struct _SSTD_t {
- uint8_t *status;
- uint8_t initiator2target_buffer_size;
- uint8_t *initiator2target_buffer;
- uint8_t target2initiator_buffer_size;
- uint8_t *target2initiator_buffer;
-} SSTD_t;
-#define TID_LIMIT( table ) (sizeof(table) / sizeof(SSTD_t))
-
-// initiator is transaction start side
-void soft_serial_initiator_init(SSTD_t *sstd_table, int sstd_table_size);
-// target is interrupt accept side
-void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size);
-
-// initiator resullt
-#define TRANSACTION_END 0
-#define TRANSACTION_NO_RESPONSE 0x1
-#define TRANSACTION_DATA_ERROR 0x2
-#define TRANSACTION_TYPE_ERROR 0x4
-#ifndef SERIAL_USE_MULTI_TRANSACTION
-int soft_serial_transaction(void);
-#else
-int soft_serial_transaction(int sstd_index);
-#endif
-
-// target status
-// *SSTD_t.status has
-// initiator:
-// TRANSACTION_END
-// or TRANSACTION_NO_RESPONSE
-// or TRANSACTION_DATA_ERROR
-// target:
-// TRANSACTION_DATA_ERROR
-// or TRANSACTION_ACCEPTED
-#define TRANSACTION_ACCEPTED 0x8
-#ifdef SERIAL_USE_MULTI_TRANSACTION
-int soft_serial_get_and_clean_status(int sstd_index);
-#endif
diff --git a/keyboards/yosino58/ssd1306.c b/keyboards/yosino58/ssd1306.c
deleted file mode 100644
index abd9de2f7a..0000000000
--- a/keyboards/yosino58/ssd1306.c
+++ /dev/null
@@ -1,347 +0,0 @@
-#ifdef SSD1306OLED
-
-#include "ssd1306.h"
-#include "i2c.h"
-#include <string.h>
-#include "print.h"
-#ifdef PROTOCOL_LUFA
-#include "lufa.h"
-#endif
-#include "sendchar.h"
-#include "timer.h"
-
-struct CharacterMatrix display;
-
-extern const unsigned char font[] PROGMEM;
-
-// Set this to 1 to help diagnose early startup problems
-// when testing power-on with ble. Turn it off otherwise,
-// as the latency of printing most of the debug info messes
-// with the matrix scan, causing keys to drop.
-#define DEBUG_TO_SCREEN 0
-
-//static uint16_t last_battery_update;
-//static uint32_t vbat;
-//#define BatteryUpdateInterval 10000 /* milliseconds */
-
-// 'last_flush' is declared as uint16_t,
-// so this must be less than 65535
-#define ScreenOffInterval 30000 /* milliseconds */
-#if DEBUG_TO_SCREEN
-static uint8_t displaying;
-#endif
-static uint16_t last_flush;
-
-static bool force_dirty = true;
-
-// Write command sequence.
-// Returns true on success.
-static inline bool _send_cmd1(uint8_t cmd) {
- bool res = false;
-
- if (i2c_start_write(SSD1306_ADDRESS)) {
- xprintf("failed to start write to %d\n", SSD1306_ADDRESS);
- goto done;
- }
-
- if (i2c_master_write(0x0 /* command byte follows */)) {
- print("failed to write control byte\n");
-
- goto done;
- }
-
- if (i2c_master_write(cmd)) {
- xprintf("failed to write command %d\n", cmd);
- goto done;
- }
- res = true;
-done:
- i2c_master_stop();
- return res;
-}
-
-// Write 2-byte command sequence.
-// Returns true on success
-static inline bool _send_cmd2(uint8_t cmd, uint8_t opr) {
- if (!_send_cmd1(cmd)) {
- return false;
- }
- return _send_cmd1(opr);
-}
-
-// Write 3-byte command sequence.
-// Returns true on success
-static inline bool _send_cmd3(uint8_t cmd, uint8_t opr1, uint8_t opr2) {
- if (!_send_cmd1(cmd)) {
- return false;
- }
- if (!_send_cmd1(opr1)) {
- return false;
- }
- return _send_cmd1(opr2);
-}
-
-#define send_cmd1(c) if (!_send_cmd1(c)) {goto done;}
-#define send_cmd2(c,o) if (!_send_cmd2(c,o)) {goto done;}
-#define send_cmd3(c,o1,o2) if (!_send_cmd3(c,o1,o2)) {goto done;}
-
-static void clear_display(void) {
- matrix_clear(&display);
-
- // Clear all of the display bits (there can be random noise
- // in the RAM on startup)
- send_cmd3(PageAddr, 0, (DisplayHeight / 8) - 1);
- send_cmd3(ColumnAddr, 0, DisplayWidth - 1);
-
- if (i2c_start_write(SSD1306_ADDRESS)) {
- goto done;
- }
- if (i2c_master_write(0x40)) {
- // Data mode
- goto done;
- }
- for (uint8_t row = 0; row < MatrixRows; ++row) {
- for (uint8_t col = 0; col < DisplayWidth; ++col) {
- i2c_master_write(0);
- }
- }
-
- display.dirty = false;
-
-done:
- i2c_master_stop();
-}
-
-#if DEBUG_TO_SCREEN
-#undef sendchar
-static int8_t capture_sendchar(uint8_t c) {
- sendchar(c);
- iota_gfx_write_char(c);
-
- if (!displaying) {
- iota_gfx_flush();
- }
- return 0;
-}
-#endif
-
-bool iota_gfx_init(bool rotate) {
- bool success = false;
-
- i2c_master_init();
- send_cmd1(DisplayOff);
- send_cmd2(SetDisplayClockDiv, 0x80);
- send_cmd2(SetMultiPlex, DisplayHeight - 1);
-
- send_cmd2(SetDisplayOffset, 0);
-
-
- send_cmd1(SetStartLine | 0x0);
- send_cmd2(SetChargePump, 0x14 /* Enable */);
- send_cmd2(SetMemoryMode, 0 /* horizontal addressing */);
-
- if(rotate){
- // the following Flip the display orientation 180 degrees
- send_cmd1(SegRemap);
- send_cmd1(ComScanInc);
- }else{
- // Flips the display orientation 0 degrees
- send_cmd1(SegRemap | 0x1);
- send_cmd1(ComScanDec);
- }
-
-#ifdef SSD1306_128X64
- send_cmd2(SetComPins, 0x12);
-#else
- send_cmd2(SetComPins, 0x2);
-#endif
- send_cmd2(SetContrast, 0x8f);
- send_cmd2(SetPreCharge, 0xf1);
- send_cmd2(SetVComDetect, 0x40);
- send_cmd1(DisplayAllOnResume);
- send_cmd1(NormalDisplay);
- send_cmd1(DeActivateScroll);
- send_cmd1(DisplayOn);
-
- send_cmd2(SetContrast, 0); // Dim
-
- clear_display();
-
- success = true;
-
- iota_gfx_flush();
-
-#if DEBUG_TO_SCREEN
- print_set_sendchar(capture_sendchar);
-#endif
-
-done:
- return success;
-}
-
-bool iota_gfx_off(void) {
- bool success = false;
-
- send_cmd1(DisplayOff);
- success = true;
-
-done:
- return success;
-}
-
-bool iota_gfx_on(void) {
- bool success = false;
-
- send_cmd1(DisplayOn);
- success = true;
-
-done:
- return success;
-}
-
-void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c) {
- *matrix->cursor = c;
- ++matrix->cursor;
-
- if (matrix->cursor - &matrix->display[0][0] == sizeof(matrix->display)) {
- // We went off the end; scroll the display upwards by one line
- memmove(&matrix->display[0], &matrix->display[1],
- MatrixCols * (MatrixRows - 1));
- matrix->cursor = &matrix->display[MatrixRows - 1][0];
- memset(matrix->cursor, ' ', MatrixCols);
- }
-}
-
-void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c) {
- matrix->dirty = true;
-
- if (c == '\n') {
- // Clear to end of line from the cursor and then move to the
- // start of the next line
- uint8_t cursor_col = (matrix->cursor - &matrix->display[0][0]) % MatrixCols;
-
- while (cursor_col++ < MatrixCols) {
- matrix_write_char_inner(matrix, ' ');
- }
- return;
- }
-
- matrix_write_char_inner(matrix, c);
-}
-
-void iota_gfx_write_char(uint8_t c) {
- matrix_write_char(&display, c);
-}
-
-void matrix_write(struct CharacterMatrix *matrix, const char *data) {
- const char *end = data + strlen(data);
- while (data < end) {
- matrix_write_char(matrix, *data);
- ++data;
- }
-}
-
-void matrix_write_ln(struct CharacterMatrix *matrix, const char *data) {
- char data_ln[strlen(data)+2];
- snprintf(data_ln, sizeof(data_ln), "%s\n", data);
- matrix_write(matrix, data_ln);
-}
-
-void iota_gfx_write(const char *data) {
- matrix_write(&display, data);
-}
-
-void matrix_write_P(struct CharacterMatrix *matrix, const char *data) {
- while (true) {
- uint8_t c = pgm_read_byte(data);
- if (c == 0) {
- return;
- }
- matrix_write_char(matrix, c);
- ++data;
- }
-}
-
-void iota_gfx_write_P(const char *data) {
- matrix_write_P(&display, data);
-}
-
-void matrix_clear(struct CharacterMatrix *matrix) {
- memset(matrix->display, ' ', sizeof(matrix->display));
- matrix->cursor = &matrix->display[0][0];
- matrix->dirty = true;
-}
-
-void iota_gfx_clear_screen(void) {
- matrix_clear(&display);
-}
-
-void matrix_render(struct CharacterMatrix *matrix) {
- last_flush = timer_read();
- iota_gfx_on();
-#if DEBUG_TO_SCREEN
- ++displaying;
-#endif
-
- // Move to the home position
- send_cmd3(PageAddr, 0, MatrixRows - 1);
- send_cmd3(ColumnAddr, 0, (MatrixCols * FontWidth) - 1);
-
- if (i2c_start_write(SSD1306_ADDRESS)) {
- goto done;
- }
- if (i2c_master_write(0x40)) {
- // Data mode
- goto done;
- }
-
- for (uint8_t row = 0; row < MatrixRows; ++row) {
- for (uint8_t col = 0; col < MatrixCols; ++col) {
- const uint8_t *glyph = font + (matrix->display[row][col] * FontWidth);
-
- for (uint8_t glyphCol = 0; glyphCol < FontWidth; ++glyphCol) {
- uint8_t colBits = pgm_read_byte(glyph + glyphCol);
- i2c_master_write(colBits);
- }
-
- // 1 column of space between chars (it's not included in the glyph)
- //i2c_master_write(0);
- }
- }
-
- matrix->dirty = false;
-
-done:
- i2c_master_stop();
-#if DEBUG_TO_SCREEN
- --displaying;
-#endif
-}
-
-void iota_gfx_flush(void) {
- matrix_render(&display);
-}
-
-__attribute__ ((weak))
-void iota_gfx_task_user(void) {
-}
-
-void iota_gfx_task(void) {
- iota_gfx_task_user();
-
- if (display.dirty|| force_dirty) {
- iota_gfx_flush();
- force_dirty = false;
- }
-
- if (timer_elapsed(last_flush) > ScreenOffInterval) {
- iota_gfx_off();
- }
-}
-
-bool process_record_gfx(uint16_t keycode, keyrecord_t *record) {
- force_dirty = true;
- return true;
-}
-
-#endif
diff --git a/keyboards/yosino58/ssd1306.h b/keyboards/yosino58/ssd1306.h
deleted file mode 100644
index 35e4c144cc..0000000000
--- a/keyboards/yosino58/ssd1306.h
+++ /dev/null
@@ -1,95 +0,0 @@
-#pragma once
-
-#include <stdbool.h>
-#include <stdio.h>
-#include "action.h"
-
-enum ssd1306_cmds {
- DisplayOff = 0xAE,
- DisplayOn = 0xAF,
-
- SetContrast = 0x81,
- DisplayAllOnResume = 0xA4,
-
- DisplayAllOn = 0xA5,
- NormalDisplay = 0xA6,
- InvertDisplay = 0xA7,
- SetDisplayOffset = 0xD3,
- SetComPins = 0xda,
- SetVComDetect = 0xdb,
- SetDisplayClockDiv = 0xD5,
- SetPreCharge = 0xd9,
- SetMultiPlex = 0xa8,
- SetLowColumn = 0x00,
- SetHighColumn = 0x10,
- SetStartLine = 0x40,
-
- SetMemoryMode = 0x20,
- ColumnAddr = 0x21,
- PageAddr = 0x22,
-
- ComScanInc = 0xc0,
- ComScanDec = 0xc8,
- SegRemap = 0xa0,
- SetChargePump = 0x8d,
- ExternalVcc = 0x01,
- SwitchCapVcc = 0x02,
-
- ActivateScroll = 0x2f,
- DeActivateScroll = 0x2e,
- SetVerticalScrollArea = 0xa3,
- RightHorizontalScroll = 0x26,
- LeftHorizontalScroll = 0x27,
- VerticalAndRightHorizontalScroll = 0x29,
- VerticalAndLeftHorizontalScroll = 0x2a,
-};
-
-// Controls the SSD1306 128x32 OLED display via i2c
-
-#ifndef SSD1306_ADDRESS
-#define SSD1306_ADDRESS 0x3C
-#endif
-
-#ifdef SSD1306_128X64
-#define DisplayHeight 64
-#else
-#define DisplayHeight 32
-#endif
-#define DisplayWidth 128
-
-
-#define FontHeight 8
-#define FontWidth 6
-
-#define MatrixRows (DisplayHeight / FontHeight)
-#define MatrixCols (DisplayWidth / FontWidth)
-
-struct CharacterMatrix {
- uint8_t display[MatrixRows][MatrixCols];
- uint8_t *cursor;
- bool dirty;
-};
-
-extern struct CharacterMatrix display;
-
-bool iota_gfx_init(bool rotate);
-void iota_gfx_task(void);
-bool iota_gfx_off(void);
-bool iota_gfx_on(void);
-void iota_gfx_flush(void);
-void iota_gfx_write_char(uint8_t c);
-void iota_gfx_write(const char *data);
-void iota_gfx_write_P(const char *data);
-void iota_gfx_clear_screen(void);
-
-void iota_gfx_task_user(void);
-
-void matrix_clear(struct CharacterMatrix *matrix);
-void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c);
-void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c);
-void matrix_write(struct CharacterMatrix *matrix, const char *data);
-void matrix_write_ln(struct CharacterMatrix *matrix, const char *data);
-void matrix_write_P(struct CharacterMatrix *matrix, const char *data);
-void matrix_render(struct CharacterMatrix *matrix);
-
-bool process_record_gfx(uint16_t keycode, keyrecord_t *record);
diff --git a/keyboards/yosino58/yosino58.c b/keyboards/yosino58/yosino58.c
index ff3ec10e5a..85545f3f44 100644
--- a/keyboards/yosino58/yosino58.c
+++ b/keyboards/yosino58/yosino58.c
@@ -1,10 +1 @@
-#include "yosino58.h"
-#include "ssd1306.h"
-
-bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
-#ifdef SSD1306OLED
- return process_record_gfx(keycode,record) && process_record_user(keycode, record);
-#else
- return process_record_user(keycode, record);
-#endif
-}
+#include "yosino58.h" \ No newline at end of file
diff --git a/keyboards/yugo_m/model_m_101/config.h b/keyboards/yugo_m/model_m_101/config.h
index e17f8310b8..c22bc610c3 100644
--- a/keyboards/yugo_m/model_m_101/config.h
+++ b/keyboards/yugo_m/model_m_101/config.h
@@ -20,12 +20,6 @@ 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 0x8E81 // Yugo-M
-#define DEVICE_VER 0x0001
-#define MANUFACTURER IBM
-#define PRODUCT Yugo-M (Model M replacement controller)
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 16
@@ -42,7 +36,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { B8, B7, B6, B5, B4, B3, A15, A14 }
#define MATRIX_COL_PINS { A9, A8, B15, B14, B13, B12, B11, B10, B2, B1, B0, A7, A6, A5, A4, A3 }
-#define UNUSED_PINS { A0, A1, A2, A10, A13, B9, C13, C14, C15 }
diff --git a/keyboards/yugo_m/model_m_101/info.json b/keyboards/yugo_m/model_m_101/info.json
index 399307c2d0..e6d786a740 100644
--- a/keyboards/yugo_m/model_m_101/info.json
+++ b/keyboards/yugo_m/model_m_101/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "IBM Enhanced Keyboard",
+ "keyboard_name": "Yugo-M (Model M replacment controller)",
+ "manufacturer": "IBM",
"url": "https://github.com/tomic1785/qmk_firmware/tree/stm32_model_m/keyboards/yugo_m/model_m_101",
"maintainer": "Nidzo Tomic",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x8E81",
+ "device_version": "0.0.1"
+ },
"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":"Print Screen", "x":15.5, "y":0}, {"label":"Scroll Lock", "x":16.5, "y":0}, {"label":"Pause", "x":17.5, "y":0}, {"label":"\u00ac", "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":"\uff0a", "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":"|", "x":13, "y":1.5}, {"label":"<i class='kb kb-Arrows-Left'></i>", "x":14, "y":1.5}, {"label":"Insert", "x":15.5, "y":1.5}, {"label":"Home", "x":16.5, "y":1.5}, {"label":"PgUp", "x":17.5, "y":1.5}, {"label":"Num Lock", "x":19, "y":1.5}, {"label":"/", "x":20, "y":1.5}, {"label":"\uff0a", "x":21, "y":1.5}, {"label":"\u2212", "x":22, "y":1.5}, {"label":"<i class='kb kb-Line-Start-End'></i>", "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.5, "y":2.5}, {"label":"End", "x":16.5, "y":2.5}, {"label":"PgDn", "x":17.5, "y":2.5}, {"label":"7", "x":19, "y":2.5}, {"label":"8", "x":20, "y":2.5}, {"label":"9", "x":21, "y":2.5}, {"label":"+", "x":22, "y":2.5}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.25}, {"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":"<i class='kb kb-Return-2'></i>", "x":13.75, "y":3.5, "w":1.25}, {"label":"4", "x":19, "y":3.5}, {"label":"5", "x":20, "y":3.5}, {"label":"6", "x":21, "y":3.5}, {"label":"=", "x":22, "y":3.5}, {"label":"\u21e7", "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":"_", "x":12.25, "y":4.5}, {"label":"\u21e7", "x":13.25, "y":4.5, "w":1.75}, {"label":"<i class='kb kb-Arrows-Up'></i>", "x":16.5, "y":4.5}, {"label":"1", "x":19, "y":4.5}, {"label":"2", "x":20, "y":4.5}, {"label":"3", "x":21, "y":4.5}, {"label":"Enter", "x":22, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt Gr", "x":11, "y":5.5, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"<i class='kb kb-Arrows-Left'></i>", "x":15.5, "y":5.5}, {"label":"<i class='kb kb-Arrows-Down'></i>", "x":16.5, "y":5.5}, {"label":"<i class='kb kb-Arrows-Right'></i>", "x":17.5, "y":5.5}, {"label":"0", "x":19, "y":5.5}, {"label":",", "x":20, "y":5.5}, {"label":".", "x":21, "y":5.5}, {"label":"GUI", "x":22, "y":5.5}]
diff --git a/keyboards/yushakobo/navpad/10/info.json b/keyboards/yushakobo/navpad/10/info.json
index 370b7623f2..095b6b39eb 100644
--- a/keyboards/yushakobo/navpad/10/info.json
+++ b/keyboards/yushakobo/navpad/10/info.json
@@ -1,7 +1,12 @@
{
"keyboard_name": "navpad 1.0",
+ "manufacturer": "yushakobo",
"url": "https://shop.yushakobo.jp/products/navpad-10",
"maintainer": "yushakobo",
+ "usb": {
+ "vid": "0x3265",
+ "pid": "0x0008"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/yushakobo/navpad/10/readme.md b/keyboards/yushakobo/navpad/10/readme.md
index a330003a55..231e449721 100644
--- a/keyboards/yushakobo/navpad/10/readme.md
+++ b/keyboards/yushakobo/navpad/10/readme.md
@@ -24,4 +24,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/yushakobo/navpad/10/rev0/config.h b/keyboards/yushakobo/navpad/10/rev0/config.h
index 5ebdda599a..9d2906fa30 100644
--- a/keyboards/yushakobo/navpad/10/rev0/config.h
+++ b/keyboards/yushakobo/navpad/10/rev0/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/yushakobo/navpad/10/rev0/info.json b/keyboards/yushakobo/navpad/10/rev0/info.json
new file mode 100644
index 0000000000..5baab67dba
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/rev0/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.0"
+ }
+}
diff --git a/keyboards/yushakobo/navpad/10/rev1/config.h b/keyboards/yushakobo/navpad/10/rev1/config.h
index 40bb31b156..65f9944db9 100644
--- a/keyboards/yushakobo/navpad/10/rev1/config.h
+++ b/keyboards/yushakobo/navpad/10/rev1/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/yushakobo/navpad/10/rev1/info.json b/keyboards/yushakobo/navpad/10/rev1/info.json
new file mode 100644
index 0000000000..90ac25f360
--- /dev/null
+++ b/keyboards/yushakobo/navpad/10/rev1/info.json
@@ -0,0 +1,5 @@
+{
+ "usb": {
+ "device_version": "0.0.1"
+ }
+}
diff --git a/keyboards/yushakobo/navpad/10_helix_r/config.h b/keyboards/yushakobo/navpad/10_helix_r/config.h
index 3d463549df..09809dada9 100644
--- a/keyboards/yushakobo/navpad/10_helix_r/config.h
+++ b/keyboards/yushakobo/navpad/10_helix_r/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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
diff --git a/keyboards/yushakobo/navpad/10_helix_r/info.json b/keyboards/yushakobo/navpad/10_helix_r/info.json
index 98e2314c91..e2c44de4da 100644
--- a/keyboards/yushakobo/navpad/10_helix_r/info.json
+++ b/keyboards/yushakobo/navpad/10_helix_r/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "navpad 1.0 w/ helix right hand side",
+ "keyboard_name": "navpad 1.0 with helix keyboard",
+ "manufacturer": "yushakobo",
"url": "",
"maintainer": "yushakobo",
+ "usb": {
+ "vid": "0x3265",
+ "pid": "0x0008",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/yushakobo/navpad/10_helix_r/readme.md b/keyboards/yushakobo/navpad/10_helix_r/readme.md
index 99fa83c62d..6d8a64c2bc 100644
--- a/keyboards/yushakobo/navpad/10_helix_r/readme.md
+++ b/keyboards/yushakobo/navpad/10_helix_r/readme.md
@@ -30,4 +30,4 @@ 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
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/yushakobo/quick17/config.h b/keyboards/yushakobo/quick17/config.h
index 7c845a2106..3595bf20c6 100644
--- a/keyboards/yushakobo/quick17/config.h
+++ b/keyboards/yushakobo/quick17/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3265
-#define PRODUCT_ID 0x0006
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yushakobo
-#define PRODUCT quick17
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 6
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4, B3, B6 }
#define MATRIX_COL_PINS { F5, D4, E6, F7, C6, D7 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/yushakobo/quick17/info.json b/keyboards/yushakobo/quick17/info.json
index eb971110c0..07798a2649 100644
--- a/keyboards/yushakobo/quick17/info.json
+++ b/keyboards/yushakobo/quick17/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "quick17",
+ "manufacturer": "yushakobo",
"url": "https://shop.yushakobo.jp/products/quick17",
"maintainer": "yushakobo",
+ "usb": {
+ "vid": "0x3265",
+ "pid": "0x0006",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/yushakobo/quick7/config.h b/keyboards/yushakobo/quick7/config.h
index f3afcd2df7..8b801b1cc4 100644
--- a/keyboards/yushakobo/quick7/config.h
+++ b/keyboards/yushakobo/quick7/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x3265
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yushakobo
-#define PRODUCT quick7
-
/* key matrix size */
#define MATRIX_ROWS 3
#define MATRIX_COLS 3
@@ -49,7 +42,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ENCODERS_PAD_A { D1, F5 }
#define ENCODERS_PAD_B { D0, F6 }
-#define UNUSED_PINS
diff --git a/keyboards/yushakobo/quick7/info.json b/keyboards/yushakobo/quick7/info.json
index 078dd70d22..58afeb97de 100644
--- a/keyboards/yushakobo/quick7/info.json
+++ b/keyboards/yushakobo/quick7/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "quick7",
+ "manufacturer": "yushakobo",
"url": "",
"maintainer": "yushakobo",
+ "usb": {
+ "vid": "0x3265",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/yynmt/acperience12/info.json b/keyboards/yynmt/acperience12/info.json
deleted file mode 100644
index c21faf109a..0000000000
--- a/keyboards/yynmt/acperience12/info.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "keyboard_name": "Acperience12",
- "url": "http://yynmt.com",
- "maintainer": "yynmt",
- "layouts": {
- "LAYOUT": {
- "layout": [
- {"x":0, "y":0}, {"x":1, "y":0},
- {"x":0, "y":1}, {"x":1, "y":1},
- {"x":0, "y":2}, {"x":1, "y":2},
- {"x":0, "y":3}, {"x":1, "y":3},
- {"x":0, "y":4}, {"x":1, "y":4},
- {"x":0, "y":5}, {"x":1, "y":5}
- ]
- }
- }
-}
diff --git a/keyboards/yynmt/acperience12/rev1/config.h b/keyboards/yynmt/acperience12/rev1/config.h
index d1adb8106c..73a8ef461b 100644
--- a/keyboards/yynmt/acperience12/rev1/config.h
+++ b/keyboards/yynmt/acperience12/rev1/config.h
@@ -16,13 +16,6 @@
#pragma once
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8 //Sublicense from Microchip Technology
-#define PRODUCT_ID 0xEA51 //Sublicense from Microchip Technology
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yynmt
-#define PRODUCT Acperience12
-
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 2
diff --git a/keyboards/yynmt/acperience12/rev1/info.json b/keyboards/yynmt/acperience12/rev1/info.json
new file mode 100644
index 0000000000..7d4dbb40ce
--- /dev/null
+++ b/keyboards/yynmt/acperience12/rev1/info.json
@@ -0,0 +1,23 @@
+{
+ "keyboard_name": "Acperience12",
+ "manufacturer": "yynmt",
+ "url": "http://yynmt.com",
+ "maintainer": "yynmt",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEA51",
+ "device_version": "0.0.1"
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ {"x":0, "y":0}, {"x":1, "y":0},
+ {"x":0, "y":1}, {"x":1, "y":1},
+ {"x":0, "y":2}, {"x":1, "y":2},
+ {"x":0, "y":3}, {"x":1, "y":3},
+ {"x":0, "y":4}, {"x":1, "y":4},
+ {"x":0, "y":5}, {"x":1, "y":5}
+ ]
+ }
+ }
+}
diff --git a/keyboards/yynmt/dozen0/config.h b/keyboards/yynmt/dozen0/config.h
index c63af586e6..5a72cf2a54 100644
--- a/keyboards/yynmt/dozen0/config.h
+++ b/keyboards/yynmt/dozen0/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x04D8
-#define PRODUCT_ID 0xEA4F
-#define DEVICE_VER 0x0001
-#define MANUFACTURER yynmt
-#define PRODUCT Dozen0
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { F4 }
#define MATRIX_COL_PINS { B6, B2, B3, B1, F7, F6, B5, B4, E6, D7, C6, D4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/yynmt/dozen0/info.json b/keyboards/yynmt/dozen0/info.json
index 38e0f38751..364b844246 100644
--- a/keyboards/yynmt/dozen0/info.json
+++ b/keyboards/yynmt/dozen0/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Dozen0",
+ "manufacturer": "yynmt",
"url": "http://yynmt.com",
"maintainer": "yynmt",
+ "usb": {
+ "vid": "0x04D8",
+ "pid": "0xEA4F",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/yynmt/kagamidget/config.h b/keyboards/yynmt/kagamidget/config.h
index 3a0ddeaf30..0aa38ad350 100644
--- a/keyboards/yynmt/kagamidget/config.h
+++ b/keyboards/yynmt/kagamidget/config.h
@@ -19,13 +19,6 @@ 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 DEVICE_VER 0x0001
-#define MANUFACTURER yynmt
-#define PRODUCT KagaMidget
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { D1, D0, F4, F5 }
#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5, B6, B2, B3, B1, F7, F6 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/yynmt/kagamidget/info.json b/keyboards/yynmt/kagamidget/info.json
index 8899b22054..eaca61afc8 100644
--- a/keyboards/yynmt/kagamidget/info.json
+++ b/keyboards/yynmt/kagamidget/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "KagaMidget",
+ "manufacturer": "yynmt",
"url": "http://yynmt.com",
"maintainer": "yynmt",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0000",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/z12/config.h b/keyboards/z12/config.h
index 68aff7acf7..57b31e7c8b 100644
--- a/keyboards/z12/config.h
+++ b/keyboards/z12/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7A74
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER zigotica
-#define PRODUCT z12
-
#define ENCODERS_PAD_A { B5, B6 }
#define ENCODERS_PAD_B { B4, B2 }
@@ -41,7 +34,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ F6, F5, F4, NO_PIN } \
}
-#define UNUSED_PINS
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/z12/info.json b/keyboards/z12/info.json
index 2395401e47..7aa53d9a5c 100644
--- a/keyboards/z12/info.json
+++ b/keyboards/z12/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "z12",
+ "manufacturer": "zigotica",
"url": "https://github.com/zigotica/mechanical-keyboards/tree/main/z12",
"maintainer": "@zigotica",
+ "usb": {
+ "vid": "0x7A74",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/z34/config.h b/keyboards/z34/config.h
index 71d6528ce8..f63b2771fc 100644
--- a/keyboards/z34/config.h
+++ b/keyboards/z34/config.h
@@ -18,13 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x7A74
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER zigotica
-#define PRODUCT z34
-
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 5
@@ -45,7 +38,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ B5, B4, NO_PIN, NO_PIN, NO_PIN } \
}
-#define UNUSED_PINS
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
diff --git a/keyboards/z34/info.json b/keyboards/z34/info.json
index 4a6dce7525..f28ddf0e1c 100644
--- a/keyboards/z34/info.json
+++ b/keyboards/z34/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "z34",
+ "manufacturer": "zigotica",
"url": "https://github.com/zigotica/mechanical-keyboards/tree/main/z34",
"maintainer": "@zigotica",
+ "usb": {
+ "vid": "0x7A74",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/zfrontier/big_switch/config.h b/keyboards/zfrontier/big_switch/config.h
index ddec2b2796..fc3e39664d 100644
--- a/keyboards/zfrontier/big_switch/config.h
+++ b/keyboards/zfrontier/big_switch/config.h
@@ -19,13 +19,6 @@ 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 0x0A01
-#define DEVICE_VER 0x0005
-#define MANUFACTURER zFrontier
-#define PRODUCT Red Comet Big Switch
-
/* key matrix size */
#define MATRIX_ROWS 1
#define MATRIX_COLS 1
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { F0 }
#define MATRIX_COL_PINS { F1 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
@@ -51,3 +43,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* long tapping config */
#define TAPPING_TERM 500
+#define PERMISSIVE_HOLD
diff --git a/keyboards/zfrontier/big_switch/info.json b/keyboards/zfrontier/big_switch/info.json
index c0d542ade1..6467f4c008 100644
--- a/keyboards/zfrontier/big_switch/info.json
+++ b/keyboards/zfrontier/big_switch/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Red Comet Big Switch",
+ "manufacturer": "zFrontier",
"url": "https://en.zfrontier.com/products/redcomet-bigswitch-combo",
"maintainer": "carlxia",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x0A01",
+ "device_version": "0.0.5"
+ },
"layouts": {
"LAYOUT": {
"layout": [
diff --git a/keyboards/ziggurat/config.h b/keyboards/ziggurat/config.h
index d2332a3e48..f814b53023 100644
--- a/keyboards/ziggurat/config.h
+++ b/keyboards/ziggurat/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x8F5D
-#define PRODUCT_ID 0x5258
-#define DEVICE_VER 0x0001
-#define MANUFACTURER LaminarWoob
-#define PRODUCT Ziggurat
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 18
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* Keyboard Matrix Assignments */
#define MATRIX_ROW_PINS { A2, A1, A0, F7, A3 }
#define MATRIX_COL_PINS { F6, F5, F4, F3, F2, F1, B5, B6, C2, C3, C4, C5, C6, C7, A7, A6, A5, A4 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ziggurat/info.json b/keyboards/ziggurat/info.json
index 77bb288dd6..e1af7f8d88 100644
--- a/keyboards/ziggurat/info.json
+++ b/keyboards/ziggurat/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ziggurat",
+ "keyboard_name": "Ziggurat",
+ "manufacturer": "LaminarWoob",
"url": "",
"maintainer": "kb-elmo",
+ "usb": {
+ "vid": "0x8F5D",
+ "pid": "0x5258",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/ziggurat/readme.md b/keyboards/ziggurat/readme.md
index 85f88b5361..0b1330fcd4 100644
--- a/keyboards/ziggurat/readme.md
+++ b/keyboards/ziggurat/readme.md
@@ -22,4 +22,4 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
* **Bootmagic reset**: Hold down the top left key and plug in the keyboard
* **Physical reset button**: Press the button labeled "SW1" on the back of the PCB
-* **Keycode in layout**: Press the key mapped to `RESET` if it is available
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
diff --git a/keyboards/zj68/config.h b/keyboards/zj68/config.h
index bca9bf72a0..91ffe6dfb4 100644
--- a/keyboards/zj68/config.h
+++ b/keyboards/zj68/config.h
@@ -19,13 +19,6 @@ 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 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Drop
-#define PRODUCT ZJ68
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -33,7 +26,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, F7, F6, F5, F4, F1, F0 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
diff --git a/keyboards/zj68/info.json b/keyboards/zj68/info.json
index 8495904dc4..ed903a6400 100644
--- a/keyboards/zj68/info.json
+++ b/keyboards/zj68/info.json
@@ -1,6 +1,12 @@
{
"keyboard_name": "ZJ68",
+ "manufacturer": "Drop",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [
diff --git a/keyboards/zj68/keymaps/splitbs/keymap.c b/keyboards/zj68/keymaps/splitbs/keymap.c
index 6403c0353f..260025b449 100644
--- a/keyboards/zj68/keymaps/splitbs/keymap.c
+++ b/keyboards/zj68/keymaps/splitbs/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
MO(1), KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
LAYOUT_65_ansi_split_bs(
- 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_PSCR, KC_SLCK, KC_PAUS,
+ QK_BOOT, KC_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_CAPS, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_END,
diff --git a/keyboards/zlant/config.h b/keyboards/zlant/config.h
index 922c446a01..3d581266b9 100755
--- a/keyboards/zlant/config.h
+++ b/keyboards/zlant/config.h
@@ -2,13 +2,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0xFEED
-#define PRODUCT_ID 0x6060
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Matthew Cordier
-#define PRODUCT Zlant
-
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
@@ -16,7 +9,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B0, B1, D4, D5 }
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, B7, D1, D2, D3, B3, B2 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/zlant/info.json b/keyboards/zlant/info.json
index 6c58a00def..69237bdad3 100644
--- a/keyboards/zlant/info.json
+++ b/keyboards/zlant/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "Zlant",
+ "manufacturer": "Matthew Cordier",
"url": "",
"maintainer": "qmk",
+ "usb": {
+ "vid": "0xFEED",
+ "pid": "0x6060",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [{"label":"K000", "x":0, "y":0}, {"label":"K001", "x":1, "y":0}, {"label":"K002", "x":2, "y":0}, {"label":"K003", "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":"K008", "x":8, "y":0}, {"label":"K009", "x":9, "y":0}, {"label":"K010", "x":10, "y":0}, {"label":"K011", "x":11, "y":0}, {"label":"K100", "x":0.25, "y":1}, {"label":"K101", "x":1.25, "y":1}, {"label":"K102", "x":2.25, "y":1}, {"label":"K103", "x":3.25, "y":1}, {"label":"K104", "x":4.25, "y":1}, {"label":"K105", "x":5.25, "y":1}, {"label":"K106", "x":6.25, "y":1}, {"label":"K107", "x":7.25, "y":1}, {"label":"K108", "x":8.25, "y":1}, {"label":"K109", "x":9.25, "y":1}, {"label":"K110", "x":10.25, "y":1}, {"label":"K111", "x":11.25, "y":1}, {"label":"K200", "x":0.5, "y":2}, {"label":"K201", "x":1.5, "y":2}, {"label":"K202", "x":2.5, "y":2}, {"label":"K203", "x":3.5, "y":2}, {"label":"K204", "x":4.5, "y":2}, {"label":"K205", "x":5.5, "y":2}, {"label":"K206", "x":6.5, "y":2}, {"label":"K207", "x":7.5, "y":2}, {"label":"K208", "x":8.5, "y":2}, {"label":"K209", "x":9.5, "y":2}, {"label":"K210", "x":10.5, "y":2}, {"label":"K211", "x":11.5, "y":2}, {"label":"K300", "x":0.75, "y":3}, {"label":"K301", "x":1.75, "y":3}, {"label":"K302", "x":2.75, "y":3}, {"label":"K303", "x":3.75, "y":3}, {"label":"K304", "x":4.75, "y":3}, {"label":"K305", "x":5.75, "y":3}, {"label":"K306", "x":6.75, "y":3}, {"label":"K307", "x":7.75, "y":3}, {"label":"K308", "x":8.75, "y":3}, {"label":"K309", "x":9.75, "y":3}, {"label":"K310", "x":10.75, "y":3}, {"label":"K311", "x":11.75, "y":3}]
diff --git a/keyboards/zoo/wampus/config.h b/keyboards/zoo/wampus/config.h
index 7da55184a0..fea1dbc212 100644
--- a/keyboards/zoo/wampus/config.h
+++ b/keyboards/zoo/wampus/config.h
@@ -19,13 +19,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0200
-#define PRODUCT_ID 0xE600
-#define DEVICE_VER 0x0001
-#define MANUFACTURER zoo.haus
-#define PRODUCT Wampus
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
@@ -42,7 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define MATRIX_ROW_PINS { C13, C14, A5, A4, A3 }
#define MATRIX_COL_PINS { A10, A9, A8, B12, A15, A13, A7, A2, A1, A0, F1, F0, B3, B4, B5 }
-#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/zoo/wampus/info.json b/keyboards/zoo/wampus/info.json
index 8125133b1d..bb74820d41 100644
--- a/keyboards/zoo/wampus/info.json
+++ b/keyboards/zoo/wampus/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "zoo.haus Wampus",
+ "keyboard_name": "Wampus",
+ "manufacturer": "zoo.haus",
"url": "https://zoo.haus",
"maintainer": "zoo",
+ "usb": {
+ "vid": "0x0200",
+ "pid": "0xE600",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_alice_split_bs": {
"layout": [
diff --git a/keyboards/ztboards/after/config.h b/keyboards/ztboards/after/config.h
index d5497dd6d0..c314752055 100644
--- a/keyboards/ztboards/after/config.h
+++ b/keyboards/ztboards/after/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0927 // ZT Boards
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ZTBoards
-#define PRODUCT After
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B3, F6, F5, D5, B2 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D7, D6, D4, C7, C6, B6, B5, B4, F7, F0, F4, F1 }
-#define UNUSED_PINS
#define ENCODERS_PAD_A { B1 }
#define ENCODERS_PAD_B { B0 }
diff --git a/keyboards/ztboards/after/info.json b/keyboards/ztboards/after/info.json
index 421450016a..6081f5c7cc 100644
--- a/keyboards/ztboards/after/info.json
+++ b/keyboards/ztboards/after/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ZTBoards After",
+ "keyboard_name": "After",
+ "manufacturer": "ZTBoards",
"url": "ztb.mx",
"maintainer": "phlopsuh",
+ "usb": {
+ "vid": "0x0927",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"layouts": {
"LAYOUT_all": {
"layout": [{"label":"Esc", "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":"|", "x":13, "y":1}, {"label":"`", "x":14, "y":1}, {"label":"Rotary", "x":15.5, "y":0.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":"{", "x":11.5, "y":2}, {"label":"}", "x":12.5, "y":2}, {"label":"|", "x":13.5, "y":2, "w":1.5}, {"label":"Del", "x":15.5, "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":"Pg Up", "x":15.5, "y":3}, {"label":"Shift", "x":0, "y":4, "w":2.25}, {"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":"Up", "x":14.25, "y":4.25}, {"label":"Pg Dn", "x":15.5, "y":4}, {"label":"Ctrl", "x":0, "y":5, "w":1.5}, {"label":"Alt", "x":2.25, "y":5, "w":1.5}, {"x":3.75, "y":5, "w":6.25}, {"label":"Alt", "x":10, "y":5, "w":1.5}, {"label":"Ctrl", "x":11.5, "y":5, "w":1.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}]
diff --git a/keyboards/ztboards/after/keymaps/ellicose/keymap.c b/keyboards/ztboards/after/keymaps/ellicose/keymap.c
index 88c1d5839a..e0ce04b8a9 100644
--- a/keyboards/ztboards/after/keymaps/ellicose/keymap.c
+++ b/keyboards/ztboards/after/keymaps/ellicose/keymap.c
@@ -11,8 +11,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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_INS, KC_DEL, 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,
+ QK_BOOT, KC_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_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/ztboards/after/keymaps/phlop/keymap.c b/keyboards/ztboards/after/keymaps/phlop/keymap.c
index 5d4fd97599..15f101fc34 100644
--- a/keyboards/ztboards/after/keymaps/phlop/keymap.c
+++ b/keyboards/ztboards/after/keymaps/phlop/keymap.c
@@ -11,8 +11,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[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_INS, KC_DEL, 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,
+ QK_BOOT, KC_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_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/ztboards/noon/config.h b/keyboards/ztboards/noon/config.h
index 0928665f40..4d9695aa11 100644
--- a/keyboards/ztboards/noon/config.h
+++ b/keyboards/ztboards/noon/config.h
@@ -18,13 +18,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x0927 //ZT Boards
-#define PRODUCT_ID 0x0002
-#define DEVICE_VER 0x0001
-#define MANUFACTURER ZTBoards
-#define PRODUCT Noon
-
/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
@@ -32,7 +25,6 @@
/* key matrix pins */
#define MATRIX_ROW_PINS { B5, D5, D3, B1, F0 }
#define MATRIX_COL_PINS { D2, D1, D0, D4, D6, B2, D7, B4, B6, C6, C7, F7, F6, F5, F4, F1 }
-#define UNUSED_PINS
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/ztboards/noon/info.json b/keyboards/ztboards/noon/info.json
index fd36892462..167b8e76ad 100644
--- a/keyboards/ztboards/noon/info.json
+++ b/keyboards/ztboards/noon/info.json
@@ -1,7 +1,13 @@
{
- "keyboard_name": "ZTBoards Noon",
+ "keyboard_name": "Noon",
+ "manufacturer": "ZTBoards",
"url": "ztb.mx",
"maintainer": "phlopsuh",
+ "usb": {
+ "vid": "0x0927",
+ "pid": "0x0002",
+ "device_version": "0.0.1"
+ },
"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":"~", "x":13, "y":0}, {"label":"|", "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":"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":"Up", "x":14, "y":3}, {"label":"Del", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.5}, {"label":"Alt", "x":2.25, "y":4, "w":1.5}, {"x":3.75, "y":4, "w":7}, {"label":"Alt", "x":10.75, "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/zvecr/split_blackpill/config.h b/keyboards/zvecr/split_blackpill/config.h
index 75a7ced350..ec2bbf0f58 100644
--- a/keyboards/zvecr/split_blackpill/config.h
+++ b/keyboards/zvecr/split_blackpill/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5A56
-#define PRODUCT_ID 0x0001
-#define DEVICE_VER 0x0001
-#define MANUFACTURER zvecr
-#define PRODUCT split_blackpill
-
/* key matrix size */
#define MATRIX_ROWS 8 // Rows are doubled-up
#define MATRIX_COLS 6
diff --git a/keyboards/zvecr/split_blackpill/info.json b/keyboards/zvecr/split_blackpill/info.json
index 0ee144f5f2..4274e29e08 100644
--- a/keyboards/zvecr/split_blackpill/info.json
+++ b/keyboards/zvecr/split_blackpill/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "split_blackpill",
+ "manufacturer": "zvecr",
"url": "",
"maintainer": "zvecr",
+ "usb": {
+ "vid": "0x5A56",
+ "pid": "0x0001",
+ "device_version": "0.0.1"
+ },
"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/zvecr/zv48/config.h b/keyboards/zvecr/zv48/config.h
index 56be1b27d2..2a993fcd44 100644
--- a/keyboards/zvecr/zv48/config.h
+++ b/keyboards/zvecr/zv48/config.h
@@ -17,13 +17,6 @@
#include "config_common.h"
-/* USB Device descriptor parameter */
-#define VENDOR_ID 0x5A56
-#define PRODUCT_ID 0x0048
-#define DEVICE_VER 0x0001
-#define MANUFACTURER zvecr
-#define PRODUCT zv48
-
/* key matrix size */
#define MATRIX_ROWS 8 // Rows are doubled-up
#define MATRIX_COLS 6
diff --git a/keyboards/zvecr/zv48/f401/rules.mk b/keyboards/zvecr/zv48/f401/rules.mk
index 94dd741994..37ee7172f8 100644
--- a/keyboards/zvecr/zv48/f401/rules.mk
+++ b/keyboards/zvecr/zv48/f401/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F401
+BOARD = BLACKPILL_STM32_F401
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/zvecr/zv48/f411/rules.mk b/keyboards/zvecr/zv48/f411/rules.mk
index b32a8b7f5b..c25a64f4b3 100644
--- a/keyboards/zvecr/zv48/f411/rules.mk
+++ b/keyboards/zvecr/zv48/f411/rules.mk
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F411
+BOARD = BLACKPILL_STM32_F411
# Bootloader selection
BOOTLOADER = stm32-dfu
diff --git a/keyboards/zvecr/zv48/info.json b/keyboards/zvecr/zv48/info.json
index 5e62a87086..94862b3aee 100644
--- a/keyboards/zvecr/zv48/info.json
+++ b/keyboards/zvecr/zv48/info.json
@@ -1,7 +1,13 @@
{
"keyboard_name": "zv48",
+ "manufacturer": "zvecr",
"url": "",
"maintainer": "zvecr",
+ "usb": {
+ "vid": "0x5A56",
+ "pid": "0x0048",
+ "device_version": "0.0.1"
+ },
"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/layouts/community/60_ansi/brandonschlack-ansi/keymap.c b/layouts/community/60_ansi/brandonschlack-ansi/keymap.c
index 5282ff98b0..82ddd37fd5 100644
--- a/layouts/community/60_ansi/brandonschlack-ansi/keymap.c
+++ b/layouts/community/60_ansi/brandonschlack-ansi/keymap.c
@@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DELT, \
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, KC_F13, KC_F14, KC_F15, KC_PGUP, MC_LHPD, MC_SLPD, \
RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_HOME, KC_END, KC_MPLY, \
- _______, RGB_LYR, RGB_THM, _______, _______, RESET, _______, QM_MAKE, KC_MPRV, KC_MNXT, KC_PGDN, _______, \
+ _______, RGB_LYR, RGB_THM, _______, _______, QK_BOOT, _______, QM_MAKE, KC_MPRV, KC_MNXT, KC_PGDN, _______, \
_______, _______, _______, _______, _______, _______, _______, _______ \
),
/* Layer
diff --git a/layouts/community/60_ansi/manna-harbour_miryoku/config.h b/layouts/community/60_ansi/manna-harbour_miryoku/config.h
index 81f1ceb42f..20af16623d 100644
--- a/layouts/community/60_ansi/manna-harbour_miryoku/config.h
+++ b/layouts/community/60_ansi/manna-harbour_miryoku/config.h
@@ -1,6 +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/layouts/community/60_ansi/manna-harbour_miryoku/keymap.c b/layouts/community/60_ansi/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/layouts/community/60_ansi/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/60_ansi/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/layouts/community/60_ansi/mechmerlin-ansi/keymap.c b/layouts/community/60_ansi/mechmerlin-ansi/keymap.c
index 97116462ac..f87c294c4c 100644
--- a/layouts/community/60_ansi/mechmerlin-ansi/keymap.c
+++ b/layouts/community/60_ansi/mechmerlin-ansi/keymap.c
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_CL] = LAYOUT_60_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/layouts/community/60_ansi/stanrc85-ansi/keymap.c b/layouts/community/60_ansi/stanrc85-ansi/keymap.c
index 6d4ceca40f..32542352ca 100644
--- a/layouts/community/60_ansi/stanrc85-ansi/keymap.c
+++ b/layouts/community/60_ansi/stanrc85-ansi/keymap.c
@@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN2_60] = LAYOUT_60_ansi(
_______, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, TG(_DEFAULT))
diff --git a/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/keymap.c b/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/keymap.c
index 8b285c9fbb..07cc46ac77 100644
--- a/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/keymap.c
+++ b/layouts/community/60_ansi_arrow_split_bs_7u_spc/mrsendyyk/keymap.c
@@ -85,7 +85,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_RESET] = LAYOUT_60_ansi_arrow_split_bs_7u_spc(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
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 b40148e995..acf16f41d9 100644
--- a/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c
+++ b/layouts/community/60_ansi_split_bs_rshift/bcat/keymap.c
@@ -41,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,
- _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, BL_BRTG, EEP_RST, RESET, _______, _______, _______, RGB_VAI, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, BL_BRTG, EEP_RST, QK_BOOT, _______, _______, _______, 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/brandonschlack-split/keymap.c b/layouts/community/60_ansi_split_bs_rshift/brandonschlack-split/keymap.c
index 906925ab96..237a0f8e38 100644
--- a/layouts/community/60_ansi_split_bs_rshift/brandonschlack-split/keymap.c
+++ b/layouts/community/60_ansi_split_bs_rshift/brandonschlack-split/keymap.c
@@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
QM_MAKE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MC_LHPD, MC_SLPD, \
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, KC_VOLU, KC_MPRV, KC_MNXT, KC_UP, MC_MSSN, KC_DELT, \
RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, KC_VOLD, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_MPLY, \
- _______, RGB_LYR, RGB_THM, _______, _______, RESET, _______, KC_MUTE, KC_END, KC_PGDN, KC_DOWN, PGU_SFT, _______, \
+ _______, RGB_LYR, RGB_THM, _______, _______, QK_BOOT, _______, KC_MUTE, KC_END, KC_PGDN, KC_DOWN, PGU_SFT, _______, \
_______, _______, _______, _______, _______, HOM_OPT, PGD_FN1, END_CTL \
)
/* Layer
diff --git a/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/keymap.c b/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/keymap.c
index 2cea4fd44f..f48b53e303 100644
--- a/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/keymap.c
+++ b/layouts/community/60_ansi_split_bs_rshift/mechmerlin-split/keymap.c
@@ -11,7 +11,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FL] = 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, KC_DEL, \
- BL_TOGG, BL_INC, BL_DEC, BL_STEP, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ BL_TOGG, BL_INC, BL_DEC, BL_STEP, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, \
VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, \
_______, _______, _______, MO(_CL), _______, _______, _______, _______),
@@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_CL] = LAYOUT_60_ansi_split_bs_rshift(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______)
diff --git a/layouts/community/60_ansi_split_bs_rshift/yanfali/keymap.c b/layouts/community/60_ansi_split_bs_rshift/yanfali/keymap.c
index 49a906c273..77921f9b1a 100644
--- a/layouts/community/60_ansi_split_bs_rshift/yanfali/keymap.c
+++ b/layouts/community/60_ansi_split_bs_rshift/yanfali/keymap.c
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[YFL] = LAYOUT_60_ansi_split_bs_rshift(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, RESET, \
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, QK_BOOT, \
KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/layouts/community/60_hhkb/yanfali/keymap.c b/layouts/community/60_hhkb/yanfali/keymap.c
index 798f581e96..7e56d5b5ac 100644
--- a/layouts/community/60_hhkb/yanfali/keymap.c
+++ b/layouts/community/60_hhkb/yanfali/keymap.c
@@ -42,7 +42,7 @@ 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, \
- _______, RGB_TOG, KC_UP, RGB_RMOD, BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, RESET, \
+ _______, RGB_TOG, KC_UP, RGB_RMOD, BL_TOGG, BL_STEP, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, KC_UP, KC_TRNS, QK_BOOT, \
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_EJCT, KC_TRNS, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_PENT, \
KC_TRNS, RGB_TOG, RGB_MOD, KC_TRNS, KC_TRNS, KC_TRNS, KC_PPLS, KC_PMNS, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, \
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
diff --git a/layouts/community/60_iso/bifbofii/keymap.c b/layouts/community/60_iso/bifbofii/keymap.c
index d22004c201..9c95384360 100755
--- a/layouts/community/60_iso/bifbofii/keymap.c
+++ b/layouts/community/60_iso/bifbofii/keymap.c
@@ -137,7 +137,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |-----------------------------------------------------------------------------------+ tog +
* | | | | | |Gamin| | | | Lnx | | | | |
* |-----------------------------------------------------------------------------------------+
- * | | | | | |RESET| | | | | | |
+ * | | | | | |QK_BOOT| | | | | | |
* |-----------------------------------------------------------------------------------------+
* | | | | | | | | Trans|
* `-----------------------------------------------------------------------------------------'
@@ -146,7 +146,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, XXXXXXX,
XXXXXXX, XXXXXXX, UC_M_WC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, UC_M_OS, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TG(GAMING), XXXXXXX, XXXXXXX, XXXXXXX, UC_M_LN, XXXXXXX, XXXXXXX, XXXXXXX, RGB_TOG,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_TRNS
),
diff --git a/layouts/community/60_iso/bifbofii/readme.md b/layouts/community/60_iso/bifbofii/readme.md
index 7a8a034196..030e03a117 100755
--- a/layouts/community/60_iso/bifbofii/readme.md
+++ b/layouts/community/60_iso/bifbofii/readme.md
@@ -85,7 +85,7 @@ By pressing Special and G you can toggle a layer for gaming that has normal keym
|-----------------------------------------------------------------------------------+ tog +
| | | | | |Gamin| | | | Lnx | | | | |
|-----------------------------------------------------------------------------------------+
-| | | | | |RESET| | | | | | |
+| | | | | |QK_BOOT| | | | | | |
|-----------------------------------------------------------------------------------------+
| | | | | | | | Trans|
`-----------------------------------------------------------------------------------------'
diff --git a/layouts/community/60_iso/unxmaal/keymap.c b/layouts/community/60_iso/unxmaal/keymap.c
index e1c0454fb6..52403745f1 100644
--- a/layouts/community/60_iso/unxmaal/keymap.c
+++ b/layouts/community/60_iso/unxmaal/keymap.c
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-------------------------------------------------------------'
*/
[_FL] = LAYOUT_60_iso(
- KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MPRV,KC_MPLY,KC_MNXT,KC_MUTE,KC_VOLD,KC_VOLU,RESET, \
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_MPRV,KC_MPLY,KC_MNXT,KC_MUTE,KC_VOLD,KC_VOLU,QK_BOOT, \
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_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, \
diff --git a/layouts/community/60_tsangan_hhkb/bcat/keymap.c b/layouts/community/60_tsangan_hhkb/bcat/keymap.c
index 9ec75f3c4d..ae35f947e8 100644
--- a/layouts/community/60_tsangan_hhkb/bcat/keymap.c
+++ b/layouts/community/60_tsangan_hhkb/bcat/keymap.c
@@ -39,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,
- _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, BL_BRTG, EEP_RST, RESET, _______, _______, _______, RGB_VAI, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, BL_BRTG, EEP_RST, QK_BOOT, _______, _______, _______, 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/brandonschlack-tsngn/keymap.c b/layouts/community/60_tsangan_hhkb/brandonschlack-tsngn/keymap.c
index b6db28ed9d..8fd0739d91 100644
--- a/layouts/community/60_tsangan_hhkb/brandonschlack-tsngn/keymap.c
+++ b/layouts/community/60_tsangan_hhkb/brandonschlack-tsngn/keymap.c
@@ -55,7 +55,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
QM_MAKE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MC_LHPD, MC_SLPD, \
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, BL_INC, _______, _______, _______, _______, _______, _______, KC_UP, MC_MSSN, KC_DELT, \
RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, BL_DEC, _______, _______, _______, KC_VOLD, KC_VOLU, KC_LEFT, KC_RGHT, KC_MPLY, \
- _______, RGB_LYR, RGB_THM, BL_TOGG, _______, RESET, _______, KC_MUTE, KC_MPRV, KC_MNXT, KC_DOWN, PGU_SFT, _______, \
+ _______, RGB_LYR, RGB_THM, BL_TOGG, _______, QK_BOOT, _______, KC_MUTE, KC_MPRV, KC_MNXT, KC_DOWN, PGU_SFT, _______, \
_______, _______, _______, _______, HOM_CMD, PGD_OPT, END_CTL \
)
/* Layer
diff --git a/layouts/community/60_tsangan_hhkb/dohmain/keymap.c b/layouts/community/60_tsangan_hhkb/dohmain/keymap.c
index 2d92fd9c4d..d6c0d9ec30 100644
--- a/layouts/community/60_tsangan_hhkb/dohmain/keymap.c
+++ b/layouts/community/60_tsangan_hhkb/dohmain/keymap.c
@@ -34,7 +34,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[ADJUST] = LAYOUT_60_tsangan_hhkb(
C(A(KC_DEL)), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BRID, KC_BRIU, XXXXXXX, XXXXXXX,
- C(S(KC_ESC)), TO(0), XXXXXXX, XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ C(S(KC_ESC)), TO(0), XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX, XXXXXXX, XXXXXXX, TO(1), XXXXXXX, XXXXXXX, NK_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX
diff --git a/layouts/community/60_tsangan_hhkb/yanfali/keymap.c b/layouts/community/60_tsangan_hhkb/yanfali/keymap.c
index 31f0a66f29..1af9eebf5b 100644
--- a/layouts/community/60_tsangan_hhkb/yanfali/keymap.c
+++ b/layouts/community/60_tsangan_hhkb/yanfali/keymap.c
@@ -16,7 +16,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, KC_INS, KC_DEL,
- _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, RESET,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, QK_BOOT,
KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/60_tsangan_hhkb/yanfali_wkl/keymap.c b/layouts/community/60_tsangan_hhkb/yanfali_wkl/keymap.c
index 697807bdab..19d14eb374 100644
--- a/layouts/community/60_tsangan_hhkb/yanfali_wkl/keymap.c
+++ b/layouts/community/60_tsangan_hhkb/yanfali_wkl/keymap.c
@@ -16,7 +16,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, KC_INS, KC_DEL,
- _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, RESET,
+ _______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, QK_BOOT,
KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/65_ansi/mechmerlin/keymap.c b/layouts/community/65_ansi/mechmerlin/keymap.c
index 4799083661..9e3e0752b5 100644
--- a/layouts/community/65_ansi/mechmerlin/keymap.c
+++ b/layouts/community/65_ansi/mechmerlin/keymap.c
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_CL] = LAYOUT_65_ansi(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/65_ansi/yanfali/keymap.c b/layouts/community/65_ansi/yanfali/keymap.c
index a0887da2bf..a4cda26469 100755
--- a/layouts/community/65_ansi/yanfali/keymap.c
+++ b/layouts/community/65_ansi/yanfali/keymap.c
@@ -33,7 +33,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[FN] = 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, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, 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)
diff --git a/layouts/community/65_ansi_blocker/brandonschlack/config.h b/layouts/community/65_ansi_blocker/brandonschlack/config.h
index ea8ca61901..d7687315ed 100644
--- a/layouts/community/65_ansi_blocker/brandonschlack/config.h
+++ b/layouts/community/65_ansi_blocker/brandonschlack/config.h
@@ -54,8 +54,6 @@
# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define QMK_KEYS_PER_SCAN 4
-
# define USB_LED_CAPS_LOCK_SCANCODE 30
#endif
diff --git a/layouts/community/65_ansi_blocker/brandonschlack/keymap.c b/layouts/community/65_ansi_blocker/brandonschlack/keymap.c
index 6b67cfdca5..ea39959d7e 100644
--- a/layouts/community/65_ansi_blocker/brandonschlack/keymap.c
+++ b/layouts/community/65_ansi_blocker/brandonschlack/keymap.c
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DELT, MC_SLPD, \
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, KC_F13, KC_F14, KC_F15, MC_LHPD, KC_VOLU, \
RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, \
- _______, RGB_LYR, RGB_THM, _______, _______, RESET, _______, QM_MAKE, KC_MPRV, KC_MNXT, KC_MPLY, _______, KC_PGUP, KC_MUTE, \
+ _______, RGB_LYR, RGB_THM, _______, _______, QK_BOOT, _______, QM_MAKE, KC_MPRV, KC_MNXT, KC_MPLY, _______, KC_PGUP, KC_MUTE, \
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
),
/* Blank Layout
diff --git a/layouts/community/65_ansi_blocker/mechmerlin/keymap.c b/layouts/community/65_ansi_blocker/mechmerlin/keymap.c
index d82a6327d1..6371153066 100644
--- a/layouts/community/65_ansi_blocker/mechmerlin/keymap.c
+++ b/layouts/community/65_ansi_blocker/mechmerlin/keymap.c
@@ -35,7 +35,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_CL] = LAYOUT_65_ansi_blocker(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/65_ansi_blocker/spidey3/config.h b/layouts/community/65_ansi_blocker/spidey3/config.h
new file mode 100644
index 0000000000..9439de45c9
--- /dev/null
+++ b/layouts/community/65_ansi_blocker/spidey3/config.h
@@ -0,0 +1,12 @@
+// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define NO_ACTION_ONESHOT
+#undef LOCKING_SUPPORT_ENABLE
+
+#define LAYER_STATE_8BIT
+#define MAX_LAYER 4
+
+#define SHIFT_BACKSPACE_DELETE
diff --git a/layouts/community/65_ansi_blocker/spidey3/keymap.c b/layouts/community/65_ansi_blocker/spidey3/keymap.c
new file mode 100644
index 0000000000..e682a281aa
--- /dev/null
+++ b/layouts/community/65_ansi_blocker/spidey3/keymap.c
@@ -0,0 +1,41 @@
+// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "spidey3.h"
+
+#define FN_MENU LT(_FN,KC_APP)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // Base
+ [_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_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, FN_MENU, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ // Numpad
+ [_NUMPAD] = LAYOUT_65_ansi_blocker(
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_NUMLOCK, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_0, KC_PMNS, KC_PEQL, _______, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_4, KC_KP_5, KC_KP_6, KC_PCMM, _______, _______, _______, _______,
+ KC_NUMLOCK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_PPLS, KC_PAST, KC_PENT, _______,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_KP_0, SPI_KP_00, KC_PDOT, KC_PSLS, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ // FN
+ [_FN] = 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_INS, KC_SLCK,
+ XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, SPI_GLO, VLK_TOG, CH_SUSP, KC_SLEP, KC_PWR, KC_BRIU,
+ MO(_GLYPH), RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_G, RGB_M_TW, UC_M_LN, XXXXXXX, XXXXXXX, CH_CPNL, KC_BRID,
+ _______, XXXXXXX, UC_M_EM, UC_M_WC, UC_MOD, NK_TOGG, TG(_NUMPAD),UC_M_MA, XXXXXXX, XXXXXXX, DEBUG, _______, KC_VOLU, KC_MUTE,
+ _______, _______, _______, KC_MPLY, CH_ASST, _______, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+ // Glyph Transformation
+ [_GLYPH] = LAYOUT_65_ansi_blocker(
+ QK_BOOT, X(SAD), X(MEH), X(HAPPY), X(ANGRY), X(THUMBDN), X(THUMBUP), X(SPIDER), X_BUL, X(LOL), X(SURPRISE),X_DASH, SPI_GFLOCK, XXXXXXX, XXXXXXX,
+ EEP_RST, SPI_NORMAL, SPI_WIDE, SPI_SCRIPT, SPI_BLOCKS, SPI_CIRCLE, SPI_SQUARE, SPI_PARENS, SPI_FRAKTR, SPI_BOLD, SPI_MATH, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, X(LARR), X(RARR), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX
+ )
+};
diff --git a/layouts/community/65_ansi_blocker/spidey3/readme.md b/layouts/community/65_ansi_blocker/spidey3/readme.md
new file mode 100644
index 0000000000..a51106f84d
--- /dev/null
+++ b/layouts/community/65_ansi_blocker/spidey3/readme.md
@@ -0,0 +1,14 @@
+Copyright 2022 Joshua Diamond josh@windowoffire.com @spidey3
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+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/layouts/community/65_ansi_blocker/spidey3/rules.mk b/layouts/community/65_ansi_blocker/spidey3/rules.mk
new file mode 100644
index 0000000000..2d16a86ac6
--- /dev/null
+++ b/layouts/community/65_ansi_blocker/spidey3/rules.mk
@@ -0,0 +1,10 @@
+# Build Options
+# comment out to disable the options.
+#
+MOUSEKEY_ENABLE = no # Mouse keys
+UNICODEMAP_ENABLE = yes
+VELOCIKEY_ENABLE = yes
+GRAVE_ESC_ENABLE = yes
+
+# The following disabled to save space
+SPACE_CADET_ENABLE = no
diff --git a/layouts/community/65_ansi_blocker/stanrc85/keymap.c b/layouts/community/65_ansi_blocker/stanrc85/keymap.c
index 46fa4025d9..ce6efb235e 100644
--- a/layouts/community/65_ansi_blocker/stanrc85/keymap.c
+++ b/layouts/community/65_ansi_blocker/stanrc85/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN2_60] = LAYOUT_65_ansi_blocker(
RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_SAD, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, BL_TOGG,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, BL_INC,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, BL_INC,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE, BL_DEC,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, TG(_DEFAULT), _______, _______, _______, _______
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 c099d36e25..37111c9508 100644
--- a/layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c
+++ b/layouts/community/65_ansi_blocker_split_bs/bcat/keymap.c
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Function layer: http://www.keyboard-layout-editor.com/#/gists/f29128427f674c43777f045e363d1b44 */
[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, _______, 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, QK_BOOT, 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/brandonschlack-split/config.h b/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/config.h
index fe3dcd41c2..38b827ba32 100644
--- a/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/config.h
+++ b/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/config.h
@@ -54,8 +54,6 @@
# undef ENABLE_RGB_MATRIX_SOLID_SPLASH
# undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
-# define QMK_KEYS_PER_SCAN 4
-
# define USB_LED_CAPS_LOCK_SCANCODE 30
#endif
diff --git a/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/keymap.c b/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/keymap.c
index 9482b12c44..2d76ce1d15 100644
--- a/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/keymap.c
+++ b/layouts/community/65_ansi_blocker_split_bs/brandonschlack-split/keymap.c
@@ -54,7 +54,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
QM_MAKE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MC_LHPD, MC_MSSN, MC_SLPD, \
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, KC_F13, KC_F14, KC_F15, KC_DELT, KC_VOLU, \
RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, \
- _______, RGB_LYR, RGB_THM, _______, _______, RESET, _______, _______, KC_MPRV, KC_MNXT, KC_MPLY, _______, KC_PGUP, KC_MUTE, \
+ _______, RGB_LYR, RGB_THM, _______, _______, QK_BOOT, _______, _______, KC_MPRV, KC_MNXT, KC_MPLY, _______, KC_PGUP, KC_MUTE, \
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
),
/* Blank Layout
diff --git a/layouts/community/66_ansi/mechmerlin/keymap.c b/layouts/community/66_ansi/mechmerlin/keymap.c
index 737b52e84c..050c93a57e 100644
--- a/layouts/community/66_ansi/mechmerlin/keymap.c
+++ b/layouts/community/66_ansi/mechmerlin/keymap.c
@@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_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_VAI, \
- _______,_______,_______,EEP_RST,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, \
+ _______,_______,_______,EEP_RST,QK_BOOT, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
VLK_TOG, _______,_______,_______,KC_VER,_______,_______,_______,_______,_______,_______, _______, RGB_SAI, \
CK_TOGG,_______,_______, _______, _______,_______,_______,RGB_HUD,RGB_SAD,RGB_HUI),
diff --git a/layouts/community/66_ansi/skully/keymap.c b/layouts/community/66_ansi/skully/keymap.c
index 9337cfe02b..fa138ce445 100644
--- a/layouts/community/66_ansi/skully/keymap.c
+++ b/layouts/community/66_ansi/skully/keymap.c
@@ -28,7 +28,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT_66_ansi(
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RGB_TOG, RGB_VAI,
- CK_TOGG, _______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD,
+ CK_TOGG, _______,_______,_______,QK_BOOT, _______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_VAD,
_______, _______,MO(_CL),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
MO(_FL), _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, RGB_SAI,
_______, _______, _______, RGB_MOD, _______, _______,_______, RGB_HUD,RGB_SAD,RGB_HUI),
diff --git a/layouts/community/66_ansi/xyverz/config.h b/layouts/community/66_ansi/xyverz/config.h
index 06e5830af8..37a57dbffd 100644
--- a/layouts/community/66_ansi/xyverz/config.h
+++ b/layouts/community/66_ansi/xyverz/config.h
@@ -1,5 +1,6 @@
#pragma once
#define TAPPING_TERM 600 // ms
+#define PERMISSIVE_HOLD
#undef RGBLIGHT_HUE_STEP
#define RGBLIGHT_HUE_STEP 8
diff --git a/layouts/community/66_ansi/xyverz/keymap.c b/layouts/community/66_ansi/xyverz/keymap.c
index d7231db5cb..3f9594f78a 100644
--- a/layouts/community/66_ansi/xyverz/keymap.c
+++ b/layouts/community/66_ansi/xyverz/keymap.c
@@ -97,7 +97,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_CL] = LAYOUT_66_ansi (
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_VAI, \
- _______, _______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, \
+ _______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, \
_______, _______, MO(_CL), _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, \
_______, _______, _______, RGB_MOD, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_HUI),
diff --git a/layouts/community/68_ansi/mechmerlin/keymap.c b/layouts/community/68_ansi/mechmerlin/keymap.c
index 19f30f8f00..63bdb6f69e 100644
--- a/layouts/community/68_ansi/mechmerlin/keymap.c
+++ b/layouts/community/68_ansi/mechmerlin/keymap.c
@@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_CL] = 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, EEP_RST, 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, EEP_RST, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VER, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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/layouts/community/75_ansi/brandonschlack/keymap.c b/layouts/community/75_ansi/brandonschlack/keymap.c
index 0f9d63c7c0..91c215ed80 100644
--- a/layouts/community/75_ansi/brandonschlack/keymap.c
+++ b/layouts/community/75_ansi/brandonschlack/keymap.c
@@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DELT, MC_SLPD, \
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, \
RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLD, \
- _______, RGB_LYR, RGB_THM, _______, _______, RESET, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_MUTE, \
+ _______, RGB_LYR, RGB_THM, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, KC_PGUP, KC_MUTE, \
_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
),
/* Blank Layer
diff --git a/layouts/community/75_ansi/mechmerlin-75_ansi/keymap.c b/layouts/community/75_ansi/mechmerlin-75_ansi/keymap.c
index 387f2d9edb..57d4517acf 100644
--- a/layouts/community/75_ansi/mechmerlin-75_ansi/keymap.c
+++ b/layouts/community/75_ansi/mechmerlin-75_ansi/keymap.c
@@ -22,7 +22,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_CL] = LAYOUT_75_ansi(\
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, EEP_RST, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, KC_VER, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
diff --git a/layouts/community/75_ansi/spidey3/config.h b/layouts/community/75_ansi/spidey3/config.h
index 89bd9422ae..93fc4faf71 100644
--- a/layouts/community/75_ansi/spidey3/config.h
+++ b/layouts/community/75_ansi/spidey3/config.h
@@ -1,7 +1,6 @@
#pragma once
-#define NO_ACTION_MACRO
-#define NO_ACTION_FUNCTION
+#define NO_ACTION_ONESHOT
#undef LOCKING_SUPPORT_ENABLE
#define LAYER_STATE_8BIT
diff --git a/layouts/community/75_ansi/spidey3/keymap.c b/layouts/community/75_ansi/spidey3/keymap.c
index d7ffd61a49..5ede802676 100644
--- a/layouts/community/75_ansi/spidey3/keymap.c
+++ b/layouts/community/75_ansi/spidey3/keymap.c
@@ -23,11 +23,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
// FN
[_FN] = LAYOUT_75_ansi(
- RESET, SPI_NORMAL, SPI_WIDE, SPI_SCRIPT, SPI_BLOCKS, SPI_CIRCLE, SPI_SQUARE, SPI_PARENS, SPI_FRAKTR, XXXXXXX, XXXXXXX, XXXXXXX, SPI_GFLOCK, KC_SLEP, CH_SUSP, KC_PWR,
+ QK_BOOT, SPI_NORMAL, SPI_WIDE, SPI_SCRIPT, SPI_BLOCKS, SPI_CIRCLE, SPI_SQUARE, SPI_PARENS, SPI_FRAKTR, SPI_BOLD, SPI_MATH, XXXXXXX, SPI_GFLOCK, KC_SLEP, CH_SUSP, KC_PWR,
EEP_RST, X(SAD), X(MEH), X(HAPPY), X(ANGRY), X(THUMBDN), X(THUMBUP), X(SPIDER), X_BUL, X(LOL), X(SURPRISE),X_DASH, XXXXXXX, KC_PAUS, KC_SLCK,
- XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, VLK_TOG, XXXXXXX, XXXXXXX, KC_BRIU,
- XXXXXXX, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_G, RGB_M_T, SPI_LNX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BRID,
- _______, SPI_GLO, XXXXXXX, SPI_WIN, UC_MOD, NK_TOGG, TG(_NUMPAD),SPI_OSX, X(LARR), X(RARR), DEBUG, _______, KC_VOLU, KC_MUTE,
+ XXXXXXX, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, SPI_GLO, VLK_TOG, XXXXXXX, XXXXXXX, XXXXXXX, KC_BRIU,
+ XXXXXXX, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_G, RGB_M_TW, UC_M_LN, XXXXXXX, XXXXXXX, XXXXXXX, KC_BRID,
+ _______, XXXXXXX, UC_M_EM, UC_M_WC, UC_MOD, NK_TOGG, TG(_NUMPAD),UC_M_MA, X(LARR), X(RARR), DEBUG, _______, KC_VOLU, KC_MUTE,
_______, _______, _______, KC_MPLY, CH_ASST, _______, CH_CPNL, KC_MPRV, KC_VOLD, KC_MNXT
)
};
diff --git a/layouts/community/75_ansi/yanfali/keymap.c b/layouts/community/75_ansi/yanfali/keymap.c
index f63da237c1..66ff76555c 100644
--- a/layouts/community/75_ansi/yanfali/keymap.c
+++ b/layouts/community/75_ansi/yanfali/keymap.c
@@ -18,7 +18,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[FN] = LAYOUT_75_ansi(\
_______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- BL_TOGG, BL_INC, BL_DEC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, RESET, _______,
+ BL_TOGG, BL_INC, BL_DEC, BL_STEP, _______, _______, _______, _______, _______, _______, _______, _______, EEP_RST, QK_BOOT, _______,
RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
VLK_TOG, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_PGUP, _______,
_______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END)
diff --git a/layouts/community/alice/manna-harbour_miryoku/config.h b/layouts/community/alice/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..61f31d228e
--- /dev/null
+++ b/layouts/community/alice/manna-harbour_miryoku/config.h
@@ -0,0 +1,23 @@
+// Copyright 2021 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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_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, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_LBRC, KC_RBRC, KC_BSLS, \
+KC_PGDN, KC_CAPS, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_SCLN, KC_ENT, \
+ KC_LSFT, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_SLSH, KC_RSFT, KC_RSFT, \
+ KC_LCTL, K32, K33, K34, K36, K37, KC_RCTL \
+)
diff --git a/layouts/community/alice/manna-harbour_miryoku/keymap.c b/layouts/community/alice/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..dbab7f9820
--- /dev/null
+++ b/layouts/community/alice/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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/layouts/community/alice/stanrc85-alice/keymap.c b/layouts/community/alice/stanrc85-alice/keymap.c
index d1ace8b8e5..dcbd570777 100644
--- a/layouts/community/alice/stanrc85-alice/keymap.c
+++ b/layouts/community/alice/stanrc85-alice/keymap.c
@@ -44,7 +44,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FN2_60] = LAYOUT_alice(
BL_TOGG, RGB_TOG, RGB_MOD, RGB_VAD, RGB_VAI, RGB_SAI, RGB_HUD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______,
- BL_INC, VLK_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET,
+ BL_INC, VLK_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
BL_DEC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, TG(_DEFAULT)
diff --git a/layouts/community/alice_split_bs/manna-harbour_miryoku/config.h b/layouts/community/alice_split_bs/manna-harbour_miryoku/config.h
new file mode 100644
index 0000000000..8d8ad00227
--- /dev/null
+++ b/layouts/community/alice_split_bs/manna-harbour_miryoku/config.h
@@ -0,0 +1,22 @@
+// Copyright 2021 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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_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_DEL, \
+KC_PGUP, KC_TAB, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_LBRC, KC_RBRC, KC_BSLS, \
+KC_PGDN, KC_CAPS, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_SCLN, KC_ENT, \
+ KC_LSFT, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_SLSH, KC_RSFT, KC_RSFT, \
+ KC_LCTL, K32, K33, K34, K36, K37, KC_RCTL \
+)
diff --git a/layouts/community/alice_split_bs/manna-harbour_miryoku/keymap.c b/layouts/community/alice_split_bs/manna-harbour_miryoku/keymap.c
new file mode 100644
index 0000000000..dbab7f9820
--- /dev/null
+++ b/layouts/community/alice_split_bs/manna-harbour_miryoku/keymap.c
@@ -0,0 +1,4 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 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/layouts/community/ergodox/ab/keymap.c b/layouts/community/ergodox/ab/keymap.c
index 001123e286..0046f5ed21 100644
--- a/layouts/community/ergodox/ab/keymap.c
+++ b/layouts/community/ergodox/ab/keymap.c
@@ -89,7 +89,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN3, KC_BTN2, KC_TRNS, KC_TRNS,
- RESET, KC_TRNS, ZM_NRM, ZM_OUT, ZM_IN,
+ QK_BOOT, KC_TRNS, ZM_NRM, ZM_OUT, ZM_IN,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
@@ -130,7 +130,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/absenth/keymap.c b/layouts/community/ergodox/absenth/keymap.c
index d84b68f0ef..884167aa31 100644
--- a/layouts/community/ergodox/absenth/keymap.c
+++ b/layouts/community/ergodox/absenth/keymap.c
@@ -157,7 +157,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/adam/config.h b/layouts/community/ergodox/adam/config.h
index 62e82d8b2b..1555ae11fd 100644
--- a/layouts/community/ergodox/adam/config.h
+++ b/layouts/community/ergodox/adam/config.h
@@ -1,5 +1,5 @@
#pragma once
#undef TAPPING_TERM
-#define TAPPING_TERM 300 //At 500 some bad logic takes hold
+#define TAPPING_TERM 300
#define IGNORE_MOD_TAP_INTERRUPT
diff --git a/layouts/community/ergodox/adam/keymap.c b/layouts/community/ergodox/adam/keymap.c
index 50270838aa..9dd611e03e 100644
--- a/layouts/community/ergodox/adam/keymap.c
+++ b/layouts/community/ergodox/adam/keymap.c
@@ -129,7 +129,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
// TODO: Make this relevant to the ErgoDox EZ.
diff --git a/layouts/community/ergodox/adnw_k_o_y/keymap.c b/layouts/community/ergodox/adnw_k_o_y/keymap.c
index 589a9ea873..6aa309c2cc 100644
--- a/layouts/community/ergodox/adnw_k_o_y/keymap.c
+++ b/layouts/community/ergodox/adnw_k_o_y/keymap.c
@@ -139,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/alexjj/keymap.c b/layouts/community/ergodox/alexjj/keymap.c
index 64e7c94433..77250e6ded 100644
--- a/layouts/community/ergodox/alexjj/keymap.c
+++ b/layouts/community/ergodox/alexjj/keymap.c
@@ -116,7 +116,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
// MEDIA AND MOUSE
[MDIA] = LAYOUT_ergodox(
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, 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_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -206,7 +206,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/andrew_osx/keymap.c b/layouts/community/ergodox/andrew_osx/keymap.c
index 990fea4f45..4f3f6ef0cb 100644
--- a/layouts/community/ergodox/andrew_osx/keymap.c
+++ b/layouts/community/ergodox/andrew_osx/keymap.c
@@ -141,7 +141,7 @@ LAYOUT_ergodox(
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/bepo_csa/keymap.c b/layouts/community/ergodox/bepo_csa/keymap.c
index d869c5bb9f..8345d820c1 100644
--- a/layouts/community/ergodox/bepo_csa/keymap.c
+++ b/layouts/community/ergodox/bepo_csa/keymap.c
@@ -323,7 +323,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | | | |VolUp | | | | | | | | Pause |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
- * | RESET | | | Calc | Mail |Browsr|------| |------| | | | | | |
+ * | QK_BOOT | | | Calc | Mail |Browsr|------| |------| | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | App | cut | copy |paste | Mute |VolDn | | | | | | | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
@@ -341,7 +341,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LR_FN] = LAYOUT_ergodox(
TG(LR_CSA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
- RESET, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_CALC, KC_MAIL, KC_WHOM,
KC_TRNS, KC_APP, S(KC_DEL), LCTL(KC_INS),S(KC_INS), KC_MUTE, KC_VOLD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
diff --git a/layouts/community/ergodox/berfarah/keymap.c b/layouts/community/ergodox/berfarah/keymap.c
index 164d026ef3..7dc09e7543 100644
--- a/layouts/community/ergodox/berfarah/keymap.c
+++ b/layouts/community/ergodox/berfarah/keymap.c
@@ -219,7 +219,7 @@ static inline void mod_layer_with_rgb(keyrecord_t *record, uint8_t layer) {
bf_set_led(layer);
} else {
layer_off(layer);
- uint8_t currentLayer = biton32(layer_state);
+ uint8_t currentLayer = get_highest_layer(layer_state);
bf_set_led(currentLayer);
};
};
@@ -266,7 +266,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_right_led_1_off();
ergodox_right_led_2_off();
diff --git a/layouts/community/ergodox/bryan/keymap.c b/layouts/community/ergodox/bryan/keymap.c
index acae77d5fc..ab301e8922 100644
--- a/layouts/community/ergodox/bryan/keymap.c
+++ b/layouts/community/ergodox/bryan/keymap.c
@@ -200,7 +200,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/choromanski/keymap.c b/layouts/community/ergodox/choromanski/keymap.c
index 8be3c7ea7e..01786aab3c 100644
--- a/layouts/community/ergodox/choromanski/keymap.c
+++ b/layouts/community/ergodox/choromanski/keymap.c
@@ -30,15 +30,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
OSL(3), TG(2), TO(5), TO(1), KC_CAPS,
KC_LCTL, KC_LALT,
KC_MUTE,
- KC_BSPC, KC_DEL, KC_LGUI,
+ KC_BSPC, KC_DEL, KC_LGUI,
- KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_RPRN, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSLS,
- KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
+ KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
KC_RBRC, KC_K, KC_M, KC_COMM, ALT_T(KC_DOT), CTL_T(KC_SLSH), KC_RSFT,
- KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, TG(4),
- KC_RALT, KC_RCTL,
- KC_WH_U,
+ KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, TG(4),
+ KC_RALT, KC_RCTL,
+ KC_WH_U,
KC_WH_D, KC_ENT, KC_SPC
),
@@ -106,22 +106,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[2] = LAYOUT_ergodox(
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
- KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, 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
),
/* Keymap 3: Symbols
@@ -147,9 +147,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[3] = LAYOUT_ergodox(
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
- KC_TRNS, KC_PIPE, KC_PLUS, KC_LABK, KC_RABK, KC_HASH, KC_TRNS,
- KC_TRNS, KC_EXLM, KC_MINS, KC_EQL, KC_PERC, KC_AT,
- KC_TRNS, KC_ASTR, KC_AMPR, KC_SLSH, KC_DLR, KC_CIRC, KC_TRNS,
+ KC_TRNS, KC_PIPE, KC_PLUS, KC_LABK, KC_RABK, KC_HASH, KC_TRNS,
+ KC_TRNS, KC_EXLM, KC_MINS, KC_EQL, KC_PERC, KC_AT,
+ KC_TRNS, KC_ASTR, KC_AMPR, KC_SLSH, KC_DLR, KC_CIRC, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
@@ -168,7 +168,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 4: Numlock
*
* ,--------------------------------------------------. ,--------------------------------------------------.
- * | POWER |SLEEP | |MOUSE3| | | RESET| |RESET |SCROL | NUML | / | * | - | |
+ * | POWER |SLEEP | |MOUSE3| | | QK_BOOT| |QK_BOOT |SCROL | NUML | / | * | - | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | |MOUSE1|MOUSEU|MOUSE2|SCROLU| | | | | 7 | 8 | 9 | + | ACCEL0 |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
@@ -187,7 +187,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------' `--------------------'
*/
[4] = LAYOUT_ergodox(
- KC_PWR, KC_SLEP, KC_TRNS, KC_BTN3, KC_TRNS, KC_TRNS, RESET,
+ KC_PWR, KC_SLEP, KC_TRNS, KC_BTN3, KC_TRNS, KC_TRNS, QK_BOOT,
KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
KC_TRNS, KC_TRNS, KC_ACL0, KC_ACL1, KC_ACL2, KC_TRNS, KC_TRNS,
@@ -196,7 +196,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MUTE,
KC_TRNS, KC_TRNS, KC_MYCM,
- RESET, KC_SLCK, KC_NLCK, KC_SLSH, KC_ASTR, KC_MINS, KC_TRNS,
+ QK_BOOT, KC_SLCK, KC_NLCK, KC_SLSH, KC_ASTR, KC_MINS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_PLUS, KC_ACL2,
KC_TRNS, KC_4, KC_5, KC_6, KC_PLUS, KC_ACL1,
KC_TRNS, KC_TRNS, KC_1, KC_2, KC_3, KC_ENT, KC_ACL0,
@@ -229,8 +229,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[5] = LAYOUT_ergodox(
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, KC_TRNS,
- 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_MPLY,
+ 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_MPLY,
KC_LCTL, LALT(KC_TAB), TO(0), KC_LALT, KC_SPC,
KC_MPRV, KC_MNXT,
KC_VOLU,
@@ -249,7 +249,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/colemak/keymap.c b/layouts/community/ergodox/colemak/keymap.c
index 54b0c5834a..db2addd6d9 100644
--- a/layouts/community/ergodox/colemak/keymap.c
+++ b/layouts/community/ergodox/colemak/keymap.c
@@ -138,7 +138,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/colemak_code_friendly/keymap.c b/layouts/community/ergodox/colemak_code_friendly/keymap.c
index 936ddbc2a5..6350bd9ee2 100644
--- a/layouts/community/ergodox/colemak_code_friendly/keymap.c
+++ b/layouts/community/ergodox/colemak_code_friendly/keymap.c
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D,
KC_LSFT, LCTL_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, RALT_T(KC_B), KC_LCBR,
KC_LCTL, KC_LGUI, KC_LALT, KC_LBRC, KC_RBRC,
-
+
KC_HOME, KC_END,
KC_PSCR,
MO(LAYER_LNUM), KC_ENT, KC_LGUI,
@@ -101,7 +101,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_F8, KC_F7, KC_F6, KC_F5, M_IN_PRN,
KC_TRNS, KC_F4, KC_F3, KC_F2, KC_F1, M_IN_BRC, KC_TRNS,
KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
-
+
KC_TRNS, KC_TRNS,
DYN_REC_START1,
KC_TRNS, KC_TRNS, DYN_MACRO_PLAY1,
@@ -126,8 +126,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |--------+------+------+------+------+------| | | } |------+------+------+------+------+--------|
* | | F4 | F3 | F2 | F1 | [] | | | |K/RAlt| M | , |./Supe|/ RCtl| RShift |
* '--------+------+------+------+------+-------------' '-------------+------+------+------+------+--------'
- * | MUTE | VOLD | VOLU | | | | Left | Down | Up |Right | Del |
- * '----------------------------------' '----------------------------------'
+ * | MUTE | VOLD | VOLU | | | | Left | Down | Up |Right | Del |
+ * '----------------------------------' '----------------------------------'
* .-------------. .-------------.
* | | | | Ins |ScrLck|
* .------+------+------| |------+------+------.
@@ -143,7 +143,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_F8, KC_F7, KC_F6, KC_F5, M_IN_PRN,
KC_TRNS, KC_F4, KC_F3, KC_F2, KC_F1, M_IN_BRC, KC_TRNS,
KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
-
+
KC_TRNS, KC_TRNS,
DYN_REC_START1,
KC_TRNS, KC_TRNS, DYN_MACRO_PLAY1,
@@ -185,7 +185,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
S(KC_ESC), S(KC_A), S(KC_R), S(KC_S), S(KC_T), S(KC_D),
KC_LSFT, S(KC_Z), S(KC_X), S(KC_C), S(KC_V), S(KC_B), KC_LCBR,
S(KC_LCTL), S(KC_LGUI), S(KC_LALT), S(KC_LBRC), S(KC_RBRC),
-
+
S(KC_HOME), S(KC_END),
S(KC_PSCR),
KC_CAPS, S(KC_ENT), S(KC_LGUI),
@@ -227,7 +227,7 @@ static bool process_record_dynamic_macro_wrapper(uint16_t keycode, keyrecord_t *
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-
+
/* the purpose of the ..._wrapper is to detect START/ST0P keys to
light the blue led during recording */
if (!process_record_dynamic_macro_wrapper(keycode, record)) {
@@ -308,19 +308,19 @@ void matrix_init_user(void) {
/* Runs constantly in the background, in a loop. */
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
//led 1, RED, Caps-Lock ON
//if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) ergodox_right_led_1_on();
//led 2, GREEN
- if (layer == LAYER_NUM)
+ if (layer == LAYER_NUM)
ergodox_right_led_2_on();
else
ergodox_right_led_2_off();
//led 3, BLUE
- if (recording_dynamic_macro)
+ if (recording_dynamic_macro)
ergodox_right_led_3_on();
else
ergodox_right_led_3_off();
diff --git a/layouts/community/ergodox/colemak_programmer/keymap.c b/layouts/community/ergodox/colemak_programmer/keymap.c
index 46cd28dc8c..aa60d8d11b 100644
--- a/layouts/community/ergodox/colemak_programmer/keymap.c
+++ b/layouts/community/ergodox/colemak_programmer/keymap.c
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |symbol|N-Lock| End | | PgDn | | |
* `---------------------' `---------------------'
*/
-[0] = LAYOUT_ergodox( // layer 0 : default
+[0] = 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_F, KC_P, KC_G, TG(3),
@@ -68,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | |
* `--------------------' `----------------------'
*/
-[1] = LAYOUT_ergodox( // layer 1: QWERTY layer (games)
+[1] = LAYOUT_ergodox( // layer 1: QWERTY layer (games)
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRNS,
KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G,
@@ -78,7 +78,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS,
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, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS,
@@ -183,7 +183,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 4: Numlock
*
* ,--------------------------------------------------. ,--------------------------------------------------.
- * | RESET | | | |P-SCRE|S-LOCK|PAUSE | |NLOCK | CALC | = | / | * | | |
+ * | QK_BOOT | | | |P-SCRE|S-LOCK|PAUSE | |NLOCK | CALC | = | / | * | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | | | | | | | Vol+ | 7 | 8 | 9 | - | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
@@ -202,7 +202,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------' `--------------------'
*/
[4] = LAYOUT_ergodox(
- RESET, KC_LSFT, KC_LSFT, KC_SYSREQ, KC_PSCR, KC_SLCK, KC_PAUSE,
+ QK_BOOT, KC_LSFT, KC_LSFT, KC_SYSREQ, KC_PSCR, KC_SLCK, KC_PAUSE,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HYPR,
@@ -243,7 +243,7 @@ void matrix_scan_user(void) {
//bit 1: default layer 1 - QWERTY
if (default_layer_state & (1UL << 1)) ergodox_right_led_1_on();
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
//layer 2 : Symbols (& Fs)
//if (layer == 2) ergodox_right_led_2_on();
diff --git a/layouts/community/ergodox/common_nighthawk/keymap.c b/layouts/community/ergodox/common_nighthawk/keymap.c
index cb13822e4e..976fb68982 100644
--- a/layouts/community/ergodox/common_nighthawk/keymap.c
+++ b/layouts/community/ergodox/common_nighthawk/keymap.c
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
M(1), KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN,
KC_LALT, KC_1, KC_1, KC_1, KC_LEFT,
- RESET, KC_VOLU,
+ QK_BOOT, KC_VOLU,
KC_VOLD,
LT(SYMB, KC_SPC), TG(MDIA), KC_MUTE,
// right hand
@@ -188,7 +188,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/csharp_dev/keymap.c b/layouts/community/ergodox/csharp_dev/keymap.c
index 221389ef24..f22938429d 100644
--- a/layouts/community/ergodox/csharp_dev/keymap.c
+++ b/layouts/community/ergodox/csharp_dev/keymap.c
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_RPRN, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BSPACE,
KC_LCBR, KC_A, KC_S, KC_D, KC_F, KC_G,
KC_RCBR, ALT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_SLASH,
- CTL_T(KC_TAB), LSFT(KC_COMMA),LSFT(KC_DOT),KC_PIPE,KC_AMPR,
+ CTL_T(KC_TAB), LSFT(KC_COMMA),LSFT(KC_DOT),KC_PIPE,KC_AMPR,
LT(1,KC_DOT), KC_COMM,
LCTL(KC_C),
GUI_T(KC_ENTER),SFT_T(KC_SPACE),LCTL(KC_V),
@@ -125,81 +125,81 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
case MACRO_PUBLIC:
if (record->event.pressed) {
return MACRO( T(P), T(U), T(B), T(L), T(I), T(C), T(SPACE),END);
- }
+ }
break;
case MACRO_PRIVATE:
if (record->event.pressed) {
return MACRO( T(P), T(R), T(I), T(V), T(A), T(T), T(E), T(SPACE),END);
- }
+ }
break;
case MACRO_STATIC:
if (record->event.pressed) {
return MACRO( T(S), T(T), T(A), T(T), T(I), T(C), T(SPACE), END);
- }
+ }
break;
case MACRO_CONST:
if (record->event.pressed) {
return MACRO( T(C), T(O), T(N), T(S), T(T), T(SPACE), END);
- }
+ }
break;
case MACRO_VOID:
if (record->event.pressed) {
return MACRO( T(V), T(O), T(I), T(D), T(SPACE), END);
- }
+ }
break;
case MACRO_VAR:
if (record->event.pressed) {
return MACRO( T(V), T(A), T(R), T(SPACE), END);
- }
+ }
break;
case MACRO_STRING:
if (record->event.pressed) {
return MACRO( T(S), T(T), T(R), T(I), T(N), T(G), T(SPACE), END);
- }
- break;
+ }
+ break;
case MACRO_BOOL:
if (record->event.pressed) {
return MACRO( T(B), T(O), T(O), T(L), T(SPACE), END);
- }
- break;
+ }
+ break;
case MACRO_INT:
if (record->event.pressed) {
return MACRO( T(I), T(N), T(T), T(SPACE), END);
- }
+ }
break;
case MACRO_FLOAT:
if (record->event.pressed) {
return MACRO( T(F), T(L), T(O), T(A),T(T),T(SPACE), END);
- }
+ }
break;
case MACRO_RETURN:
if (record->event.pressed) {
return MACRO( T(R), T(E), T(T), T(U),T(R),T(N), END);
- }
+ }
break;
case MACRO_NULL:
if (record->event.pressed) {
return MACRO( T(N), T(U), T(L), T(L), END);
- }
+ }
case MACRO_BREAK:
if (record->event.pressed) {
return MACRO( T(B), T(R), T(E), T(A), T(K), T(SCOLON), END);
- }
+ }
break;
case MACRO_TODO:
if (record->event.pressed) {
return MACRO( T(SLASH), T(SLASH), D(LSHIFT) ,T(T), T(O), T(D), T(O),U(LSHIFT), T(SPACE),END);
- }
+ }
break;
case MACRO_NEW:
if (record->event.pressed) {
return MACRO( T(N), T(E), T(W), T(SPACE), END);
- }
+ }
break;
case MACRO_PARENTHESE:
if (record->event.pressed) {
return MACRO( D(LSHIFT),T(9), T(0),U(LSHIFT), T(SCOLON), END);
- }
+ }
break;
}
return MACRO_NONE;
@@ -213,7 +213,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/dave/keymap.c b/layouts/community/ergodox/dave/keymap.c
index efa270c406..c54e50ba98 100644
--- a/layouts/community/ergodox/dave/keymap.c
+++ b/layouts/community/ergodox/dave/keymap.c
@@ -147,7 +147,7 @@ void matrix_scan_user(void) {
*/
static uint8_t leds[4];
uint8_t led;
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
diff --git a/layouts/community/ergodox/deadcyclo/keymap.c b/layouts/community/ergodox/deadcyclo/keymap.c
index 345e25e03e..76f5279257 100644
--- a/layouts/community/ergodox/deadcyclo/keymap.c
+++ b/layouts/community/ergodox/deadcyclo/keymap.c
@@ -90,10 +90,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_LALT, KC_RALT,KC_LEAD,LCTL(LSFT(KC_U)), LT(SYMB,KC_TILD),
KC_PGUP, KC_INS,
KC_PGDN,
- KC_RBRC,KC_BSPC, KC_ENT
+ KC_RBRC,KC_BSPC, KC_ENT
),
-/* Keymap 1: Symbol Layer LCTL(LSFT(KC_U))
- *
+/* Keymap 1: Symbol Layer LCTL(LSFT(KC_U))
+ *
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | F6 | | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
@@ -192,7 +192,7 @@ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, I3_RUN, KC_TRNS, KC_TRNS,
* ,-------------. ,-------------.
* | | | | â–’ | â–“ |
* ,------|------|------| |------+------+------.
- * | | | | | | | |
+ * | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
@@ -218,7 +218,7 @@ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, I3_RUN, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
-/* Keymap 4: Unicode 2
+/* Keymap 4: Unicode 2
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | ¹ | ² | ³ | ⴠ| ⵠ| ⶠ| | ⶠ| ⷠ| ⸠| ⹠| Ⱐ| ℃ | ™ |
@@ -234,12 +234,12 @@ KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, I3_RUN, KC_TRNS, KC_TRNS,
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
- * | | | | | | | |
+ * | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
-// Unicode 2
+// Unicode 2
[UNI2] = LAYOUT_ergodox(
KC_TRNS, UC(0x00b9), UC(0x00b2), UC(0x00b3), UC(0x2074), UC(0x2075), UC(0x2076),
KC_TRNS, UC(0x2081), UC(0x2082), UC(0x2083), UC(0x2084), UC(0x2085), UC(0x2086),
@@ -346,7 +346,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/dragon788/keymap.c b/layouts/community/ergodox/dragon788/keymap.c
index 956a592b6d..b41cf2c9b3 100644
--- a/layouts/community/ergodox/dragon788/keymap.c
+++ b/layouts/community/ergodox/dragon788/keymap.c
@@ -116,7 +116,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
// MEDIA AND MOUSE
LAYOUT_ergodox(
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN2, KC_BTN1, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_U, KC_MS_D, KC_MS_R,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -183,7 +183,7 @@ LAYOUT_ergodox(
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/dvorak/keymap.c b/layouts/community/ergodox/dvorak/keymap.c
index 68b575fd68..664d8055a4 100644
--- a/layouts/community/ergodox/dvorak/keymap.c
+++ b/layouts/community/ergodox/dvorak/keymap.c
@@ -138,7 +138,7 @@ LAYOUT_ergodox(
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/dvorak_emacs/keymap.c b/layouts/community/ergodox/dvorak_emacs/keymap.c
index 6055fd770d..14c592f27f 100644
--- a/layouts/community/ergodox/dvorak_emacs/keymap.c
+++ b/layouts/community/ergodox/dvorak_emacs/keymap.c
@@ -120,7 +120,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/dvorak_emacs_software/keymap.c b/layouts/community/ergodox/dvorak_emacs_software/keymap.c
index 4f90f193c6..c2bc1ef8f2 100644
--- a/layouts/community/ergodox/dvorak_emacs_software/keymap.c
+++ b/layouts/community/ergodox/dvorak_emacs_software/keymap.c
@@ -121,7 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/dvorak_intl_squisher/keymap.c b/layouts/community/ergodox/dvorak_intl_squisher/keymap.c
index 3ebbd2df09..2d3ec3806b 100644
--- a/layouts/community/ergodox/dvorak_intl_squisher/keymap.c
+++ b/layouts/community/ergodox/dvorak_intl_squisher/keymap.c
@@ -139,7 +139,7 @@ LAYOUT_ergodox( // layer 0 : default
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/dvorak_plover/keymap.c b/layouts/community/ergodox/dvorak_plover/keymap.c
index 989aafb90a..51f7e61203 100644
--- a/layouts/community/ergodox/dvorak_plover/keymap.c
+++ b/layouts/community/ergodox/dvorak_plover/keymap.c
@@ -181,7 +181,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/dvorak_programmer/keymap.c b/layouts/community/ergodox/dvorak_programmer/keymap.c
index 33115d21f3..a8acee119a 100644
--- a/layouts/community/ergodox/dvorak_programmer/keymap.c
+++ b/layouts/community/ergodox/dvorak_programmer/keymap.c
@@ -45,7 +45,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, MO(KEY_SEL),
MO(BRACKETS), KC_A, KC_O, KC_E, KC_U, KC_I,
MO(SHELL_NAV), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, MO(KEY_NAV),
- OSL(SHORTCUTS),OSM(MOD_LCTL), OSM(MOD_LALT),OSL(SYMBOL),MO(NUMBER),
+ OSL(SHORTCUTS),OSM(MOD_LCTL), OSM(MOD_LALT),OSL(SYMBOL),MO(NUMBER),
// thumb cluster
OSM(MOD_LSFT), RCTL(KC_S),
RCTL(KC_DEL),
@@ -62,10 +62,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_UP,
KC_DOWN,KC_ENT, KC_SPC
),
-
-
-
+
+
+
// shell navigation layer
[SHELL_NAV] = LAYOUT_ergodox(
// left hand
@@ -92,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS
),
-
+
// key navigation layer
[KEY_NAV] = LAYOUT_ergodox(
// left hand
@@ -177,7 +177,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,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,
KC_TRNS,
@@ -187,7 +187,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_PLUS, KC_AMPR, KC_ASTR, KC_GRAVE,KC_TILD, KC_TRNS,
KC_MINS, KC_DLR, KC_PERC, KC_CIRC, KC_PIPE, KC_TRNS,
KC_TRNS, KC_EQUAL,KC_EXLM, KC_AT, KC_HASH, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
M(SEMICOLON_NEWLINE), M(END_NEWLINE),
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
@@ -198,7 +198,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,M(OPEN_CLOSE_CURLY), M(OPEN_CLOSE_PAREN),M(OPEN_CLOSE_BRACKET), KC_TRNS,KC_TRNS,
KC_TRNS,KC_LPRN, KC_RPRN, KC_LBRC, KC_RBRC, KC_TRNS,
- KC_TRNS,KC_TRNS,KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS,
KC_TRNS,
@@ -207,8 +207,8 @@ 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, M(OPEN_CLOSE_BRACKET),M(OPEN_CLOSE_PAREN),M(OPEN_CLOSE_CURLY),KC_TRNS,KC_TRNS,
KC_TRNS, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LCBR, KC_RCBR, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
@@ -219,7 +219,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_NO, MEH(KC_F1), MEH(KC_F2), MEH(KC_F3), MEH(KC_F4), MEH(KC_F5), MEH(KC_F6),
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
- KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
MEH(KC_0),MEH(KC_1),
MEH(KC_2),
@@ -272,12 +272,12 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
case MC_CUT_LINE:
if (record->event.pressed) {
return MACRO( T(HOME), D(LSFT), T(END), U(LSFT), D(LCTL), T(X), U(LCTL), END);
- }
+ }
break;
case MC_PASTE_LINE:
if (record->event.pressed) {
return MACRO( T(END), T(ENTER), D(LCTL), T(V), U(LCTL), END);
- }
+ }
break;
case MC_NEW_SEARCH_TAB:
if (record->event.pressed) {
@@ -287,17 +287,17 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
case SCREEN_TAB_LEFT:
if (record->event.pressed) {
return MACRO( D(LCTL), T(A), U(LCTL), T(P), END);
- }
+ }
break;
case SCREEN_TAB_RIGHT:
if (record->event.pressed) {
return MACRO( D(LCTL), T(A), U(LCTL), T(N), END);
- }
+ }
break;
case SCREEN_NEW_TAB:
if (record->event.pressed) {
return MACRO( D(LCTL), T(A), U(LCTL), T(C), END);
- }
+ }
break;
case SCREEN_COPY_MODE:
if (record->event.pressed) {
@@ -306,14 +306,14 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
break;
case SCREEN_PASTE:
if (record->event.pressed) {
- return MACRO( D(LCTL), T(A), U(LCTL), T(RBRC), END);
+ return MACRO( D(LCTL), T(A), U(LCTL), T(RBRC), END);
}
- break;
+ break;
case SWITCH_NDS:
if (record->event.pressed) {
return MACRO( D(LSFT), T(F11), U(LSFT), W(255), D(LALT), T(TAB), U(LALT), END);
- }
- break;
+ }
+ break;
case OPEN_CLOSE_PAREN:
if (record->event.pressed) {
return MACRO( D(LSFT), T(9), T(0), U(LSFT), T(LEFT), END);
@@ -323,39 +323,39 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
if (record->event.pressed) {
return MACRO( T(LBRC), T(RBRC), T(LEFT), END);
}
- break;
+ break;
case OPEN_CLOSE_CURLY:
if (record->event.pressed) {
return MACRO( D(LSFT), T(LBRC), T(RBRC), U(LSFT), T(LEFT), END);
}
- break;
+ break;
case OPEN_CLOSE_SINGLE_QUOTE:
if (record->event.pressed) {
return MACRO( T(QUOT), T(QUOT), T(LEFT), END);
}
- break;
+ break;
case OPEN_CLOSE_DOUBLE_QUOTE:
if (record->event.pressed) {
return MACRO( D(LSFT), T(QUOT), T(QUOT), U(LSFT), T(LEFT), END);
}
- break;
+ break;
case SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND:
if (record->event.pressed) {
return MACRO( T(UP), T(HOME), D(LALT), T(D), U(LALT), END);
}
- break;
+ break;
case SEMICOLON_NEWLINE:
if (record->event.pressed) {
return MACRO( T(END), T(SCLN), T(ENTER), END);
- }
+ }
break;
case END_NEWLINE:
if (record->event.pressed) {
return MACRO( T(END), T(ENTER), END);
- }
- break;
-
-
+ }
+ break;
+
+
}
return MACRO_NONE;
};
@@ -378,7 +378,7 @@ void led_set_user(uint8_t usb_led) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_2_off();
@@ -387,13 +387,13 @@ void matrix_scan_user(void) {
case NUMBER:
case SYMBOL:
case BRACKETS:
- //case SHELL_LAYER:
+ //case SHELL_LAYER:
ergodox_right_led_2_on();
break;
case KEY_NAV:
case KEY_SEL:
ergodox_right_led_3_on();
- break;
+ break;
case SHORTCUTS:
ergodox_right_led_2_on();
ergodox_right_led_3_on();
@@ -401,6 +401,6 @@ void matrix_scan_user(void) {
default:
// none
break;
- }
+ }
return;
};
diff --git a/layouts/community/ergodox/dvorak_programmer_swe/keymap.c b/layouts/community/ergodox/dvorak_programmer_swe/keymap.c
index a8a428a04b..2578547f17 100644
--- a/layouts/community/ergodox/dvorak_programmer_swe/keymap.c
+++ b/layouts/community/ergodox/dvorak_programmer_swe/keymap.c
@@ -306,7 +306,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/dvorak_spanish/keymap.c b/layouts/community/ergodox/dvorak_spanish/keymap.c
index 98aa638a0f..805abb0b77 100644
--- a/layouts/community/ergodox/dvorak_spanish/keymap.c
+++ b/layouts/community/ergodox/dvorak_spanish/keymap.c
@@ -192,13 +192,13 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
if (record->event.pressed) {
key_timer = timer_read();
register_code(KC_RSFT);
- } else {
+ } else {
unregister_code(KC_RSFT);
- if (timer_elapsed(key_timer) < KEY_TAP_SLOW) {
- register_code(KC_RALT);
- register_code(KC_BSLS);
- unregister_code(KC_BSLS);
- unregister_code(KC_RALT);
+ if (timer_elapsed(key_timer) < KEY_TAP_SLOW) {
+ register_code(KC_RALT);
+ register_code(KC_BSLS);
+ unregister_code(KC_BSLS);
+ unregister_code(KC_RALT);
}
}
break;
@@ -207,13 +207,13 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
if (record->event.pressed) {
key_timer = timer_read();
register_code(KC_LALT);
- } else {
+ } else {
unregister_code(KC_LALT);
- if (timer_elapsed(key_timer) < KEY_TAP_SLOW) {
- register_code(KC_RALT);
- register_code(KC_LBRACKET);
- unregister_code(KC_LBRACKET);
- unregister_code(KC_RALT);
+ if (timer_elapsed(key_timer) < KEY_TAP_SLOW) {
+ register_code(KC_RALT);
+ register_code(KC_LBRACKET);
+ unregister_code(KC_LBRACKET);
+ unregister_code(KC_RALT);
}
}
break;
@@ -222,13 +222,13 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
if (record->event.pressed) {
key_timer = timer_read();
register_code(KC_LALT);
- } else {
+ } else {
unregister_code(KC_LALT);
- if (timer_elapsed(key_timer) < KEY_TAP_SLOW) {
- register_code(KC_RALT);
- register_code(KC_RBRACKET);
- unregister_code(KC_RBRACKET);
- unregister_code(KC_RALT);
+ if (timer_elapsed(key_timer) < KEY_TAP_SLOW) {
+ register_code(KC_RALT);
+ register_code(KC_RBRACKET);
+ unregister_code(KC_RBRACKET);
+ unregister_code(KC_RALT);
}
}
break;
@@ -236,7 +236,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
case CAPS: {
if (record->event.pressed) {
register_code(KC_CAPSLOCK);
- } else {
+ } else {
unregister_code(KC_CAPSLOCK);
}
break;
@@ -253,7 +253,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
@@ -270,11 +270,10 @@ void matrix_scan_user(void) {
// none
break;
}
-
+
// Turn the caps lock led on
if (host_keyboard_leds() & (1<<USB_LED_CAPS_LOCK)) {
ergodox_right_led_1_on();
}
}
-
diff --git a/layouts/community/ergodox/dvorak_svorak_a5/keymap.c b/layouts/community/ergodox/dvorak_svorak_a5/keymap.c
index 3ecef9d9b6..6729dbeeb6 100644
--- a/layouts/community/ergodox/dvorak_svorak_a5/keymap.c
+++ b/layouts/community/ergodox/dvorak_svorak_a5/keymap.c
@@ -186,7 +186,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/emacs_osx_dk/keymap.c b/layouts/community/ergodox/emacs_osx_dk/keymap.c
index 1de894616b..2c3430c236 100644
--- a/layouts/community/ergodox/emacs_osx_dk/keymap.c
+++ b/layouts/community/ergodox/emacs_osx_dk/keymap.c
@@ -138,7 +138,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/french_hacker/keymap.c b/layouts/community/ergodox/french_hacker/keymap.c
index 44b0c47860..73e3076475 100644
--- a/layouts/community/ergodox/french_hacker/keymap.c
+++ b/layouts/community/ergodox/french_hacker/keymap.c
@@ -147,7 +147,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/galson/keymap.c b/layouts/community/ergodox/galson/keymap.c
index 2b7994b11d..83c6638d57 100644
--- a/layouts/community/ergodox/galson/keymap.c
+++ b/layouts/community/ergodox/galson/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
/* Keymap 1: Symbol Layer
*
- * ,--------------------------------------------------.
+ * ,--------------------------------------------------.
* |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 |
@@ -157,7 +157,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/german-kinergo/keymap.c b/layouts/community/ergodox/german-kinergo/keymap.c
index 9f8b72596e..eae02d8925 100644
--- a/layouts/community/ergodox/german-kinergo/keymap.c
+++ b/layouts/community/ergodox/german-kinergo/keymap.c
@@ -165,7 +165,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/german-lukas/keymap.c b/layouts/community/ergodox/german-lukas/keymap.c
index 76a77acdb2..a63a13c12d 100644
--- a/layouts/community/ergodox/german-lukas/keymap.c
+++ b/layouts/community/ergodox/german-lukas/keymap.c
@@ -188,7 +188,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/german-manuneo/compile_keymap.py b/layouts/community/ergodox/german-manuneo/compile_keymap.py
index df5d429842..ae7ff50397 100644
--- a/layouts/community/ergodox/german-manuneo/compile_keymap.py
+++ b/layouts/community/ergodox/german-manuneo/compile_keymap.py
@@ -27,29 +27,34 @@ PY2 = sys.version_info.major == 2
if PY2:
chr = unichr
-
KEYBOARD_LAYOUTS = {
# These map positions in the parsed layout to
# positions in the LAYOUT_ergodox MATRIX
'ergodox_ez': [
- [ 0, 1, 2, 3, 4, 5, 6], [38, 39, 40, 41, 42, 43, 44],
- [ 7, 8, 9, 10, 11, 12, 13], [45, 46, 47, 48, 49, 50, 51],
- [14, 15, 16, 17, 18, 19 ], [ 52, 53, 54, 55, 56, 57],
- [20, 21, 22, 23, 24, 25, 26], [58, 59, 60, 61, 62, 63, 64],
- [27, 28, 29, 30, 31 ], [ 65, 66, 67, 68, 69],
- [ 32, 33], [70, 71 ],
- [ 34], [72 ],
- [ 35, 36, 37], [73, 74, 75 ],
+ [0, 1, 2, 3, 4, 5, 6],
+ [38, 39, 40, 41, 42, 43, 44],
+ [7, 8, 9, 10, 11, 12, 13],
+ [45, 46, 47, 48, 49, 50, 51],
+ [14, 15, 16, 17, 18, 19],
+ [52, 53, 54, 55, 56, 57],
+ [20, 21, 22, 23, 24, 25, 26],
+ [58, 59, 60, 61, 62, 63, 64],
+ [27, 28, 29, 30, 31],
+ [65, 66, 67, 68, 69],
+ [32, 33],
+ [70, 71],
+ [34],
+ [72],
+ [35, 36, 37],
+ [73, 74, 75],
]
}
-ROW_INDENTS = {
- 'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0]
-}
+ROW_INDENTS = {'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0]}
BLANK_LAYOUTS = [
-# Compact Layout
-"""
+ # Compact Layout
+ """
.------------------------------------.------------------------------------.
| | | | | | | | | | | | | | |
!-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
@@ -70,8 +75,8 @@ BLANK_LAYOUTS = [
'-----------------' '-----------------'
""",
-# Wide Layout
-"""
+ # Wide Layout
+ """
.---------------------------------------------. .---------------------------------------------.
| | | | | | | | ! | | | | | | |
!-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
@@ -93,26 +98,22 @@ BLANK_LAYOUTS = [
""",
]
-
DEFAULT_CONFIG = {
- "keymaps_includes": [
- "keymap_common.h",
- ],
+ "keymaps_includes": ["keymap_common.h",],
'filler': "-+.'!:x",
'separator': "|",
'default_key_prefix': ["KC_"],
}
-
SECTIONS = [
'layout_config',
'layers',
]
-
# Markdown Parsing
-ONELINE_COMMENT_RE = re.compile(r"""
+ONELINE_COMMENT_RE = re.compile(
+ r"""
^ # comment must be at the start of the line
\s* # arbitrary whitespace
// # start of the comment
@@ -121,22 +122,26 @@ ONELINE_COMMENT_RE = re.compile(r"""
""", re.MULTILINE | re.VERBOSE
)
-INLINE_COMMENT_RE = re.compile(r"""
+INLINE_COMMENT_RE = re.compile(
+ r"""
([\,\"\[\]\{\}\d]) # anythig that might end a expression
\s+ # comment must be preceded by whitespace
// # start of the comment
\s # and succeded by whitespace
(?:[^\"\]\}\{\[]*) # the comment (except things which might be json)
$ # until the end of line
-""", re.MULTILINE | re.VERBOSE)
+""", re.MULTILINE | re.VERBOSE
+)
-TRAILING_COMMA_RE = re.compile(r"""
+TRAILING_COMMA_RE = re.compile(
+ r"""
, # the comma
(?:\s*) # arbitrary whitespace
$ # only works if the trailing comma is followed by newline
(\s*) # arbitrary whitespace
([\]\}]) # end of an array or object
-""", re.MULTILINE | re.VERBOSE)
+""", re.MULTILINE | re.VERBOSE
+)
def loads(raw_data):
@@ -178,9 +183,7 @@ def parse_config(path):
def end_section():
if section['start_line'] >= 0:
if section['name'] == 'layout_config':
- config.update(loads("\n".join(
- section['code_lines']
- )))
+ config.update(loads("\n".join(section['code_lines'])))
elif section['sub_name'].startswith('layer'):
layer_name = section['sub_name']
config['layer_lines'][layer_name] = section['code_lines']
@@ -215,6 +218,7 @@ def parse_config(path):
assert 'layout' in config
return config
+
# header file parsing
IF0_RE = re.compile(r"""
@@ -224,7 +228,6 @@ IF0_RE = re.compile(r"""
#endif
""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
COMMENT_RE = re.compile(r"""
/\*
.*?
@@ -244,6 +247,7 @@ def regex_partial(re_str_fmt, flags):
def partial(*args, **kwargs):
re_str = re_str_fmt.format(*args, **kwargs)
return re.compile(re_str, flags)
+
return partial
@@ -256,7 +260,6 @@ KEYDEF_REP = regex_partial(r"""
) # capture group end
""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
ENUM_RE = re.compile(r"""
(
enum
@@ -268,7 +271,6 @@ ENUM_RE = re.compile(r"""
) # capture group end
""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
ENUM_KEY_REP = regex_partial(r"""
(
{} # the prefixes
@@ -309,14 +311,13 @@ def parse_valid_keys(config, out_path):
include_path = os.path.join(dirpath, include)
if os.path.exists(include_path):
header_data = read_header_file(include_path)
- valid_keycodes.update(
- parse_keydefs(config, header_data)
- )
+ valid_keycodes.update(parse_keydefs(config, header_data))
return valid_keycodes
# Keymap Parsing
+
def iter_raw_codes(layer_lines, filler, separator):
filler_re = re.compile("[" + filler + " ]")
for line in layer_lines:
@@ -346,28 +347,21 @@ LAYER_CHANGE_RE = re.compile(r"""
(DF|TG|MO)\(\d+\)
""", re.VERBOSE)
-
MACRO_RE = re.compile(r"""
M\(\w+\)
""", re.VERBOSE)
-
UNICODE_RE = re.compile(r"""
U[0-9A-F]{4}
""", re.VERBOSE)
-
NON_CODE = re.compile(r"""
^[^A-Z0-9_]$
""", re.VERBOSE)
def parse_uni_code(raw_code):
- macro_id = "UC_" + (
- unicodedata.name(raw_code)
- .replace(" ", "_")
- .replace("-", "_")
- )
+ macro_id = "UC_" + (unicodedata.name(raw_code).replace(" ", "_").replace("-", "_"))
code = "M({})".format(macro_id)
uc_hex = "{:04X}".format(ord(raw_code))
return code, macro_id, uc_hex
@@ -407,19 +401,13 @@ def parse_code(raw_code, key_prefixes, valid_keycodes):
def parse_keymap(config, key_indexes, layer_lines, valid_keycodes):
keymap = {}
- raw_codes = list(iter_raw_codes(
- layer_lines, config['filler'], config['separator']
- ))
+ raw_codes = list(iter_raw_codes(layer_lines, config['filler'], config['separator']))
indexed_codes = iter_indexed_codes(raw_codes, key_indexes)
key_prefixes = config['key_prefixes']
for raw_code, key_index, row_index in indexed_codes:
- code, macro_id, uc_hex = parse_code(
- raw_code, key_prefixes, valid_keycodes
- )
+ code, macro_id, uc_hex = parse_code(raw_code, key_prefixes, valid_keycodes)
# TODO: line numbers for invalid codes
- err_msg = "Could not parse key '{}' on row {}".format(
- raw_code, row_index
- )
+ err_msg = "Could not parse key '{}' on row {}".format(raw_code, row_index)
assert code is not None, err_msg
# print(repr(raw_code), repr(code), macro_id, uc_hex)
if macro_id:
@@ -432,17 +420,14 @@ def parse_keymap(config, key_indexes, layer_lines, valid_keycodes):
def parse_keymaps(config, valid_keycodes):
keymaps = collections.OrderedDict()
- key_indexes = config.get(
- 'key_indexes', KEYBOARD_LAYOUTS[config['layout']]
- )
+ key_indexes = config.get('key_indexes', KEYBOARD_LAYOUTS[config['layout']])
# TODO: maybe validate key_indexes
for layer_name, layer_lines, in config['layer_lines'].items():
- keymaps[layer_name] = parse_keymap(
- config, key_indexes, layer_lines, valid_keycodes
- )
+ keymaps[layer_name] = parse_keymap(config, key_indexes, layer_lines, valid_keycodes)
return keymaps
+
# keymap.c output
USERCODE = """
@@ -453,7 +438,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
@@ -572,7 +557,6 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{
}};
"""
-
UNICODE_MACRO_TEMPLATE = """
case {macro_id}:
unicode_action_function(0x{hi:02x}, 0x{lo:02x});
@@ -584,9 +568,7 @@ def unicode_macro_cases(config):
for macro_id, uc_hex in config['unicode_macros'].items():
hi = int(uc_hex, 16) >> 8
lo = int(uc_hex, 16) & 0xFF
- yield UNICODE_MACRO_TEMPLATE.format(
- macro_id=macro_id, hi=hi, lo=lo
- )
+ yield UNICODE_MACRO_TEMPLATE.format(macro_id=macro_id, hi=hi, lo=lo)
def iter_keymap_lines(keymap, row_indents=None):
diff --git a/layouts/community/ergodox/german-manuneo/keymap.c b/layouts/community/ergodox/german-manuneo/keymap.c
index 9b24df83db..b6217800c3 100644
--- a/layouts/community/ergodox/german-manuneo/keymap.c
+++ b/layouts/community/ergodox/german-manuneo/keymap.c
@@ -741,7 +741,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/german/keymap.c b/layouts/community/ergodox/german/keymap.c
index 99dda5185c..150aaf3a73 100644
--- a/layouts/community/ergodox/german/keymap.c
+++ b/layouts/community/ergodox/german/keymap.c
@@ -140,7 +140,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/guni/keymap.c b/layouts/community/ergodox/guni/keymap.c
index cc67fbdeaa..d39599a1b1 100644
--- a/layouts/community/ergodox/guni/keymap.c
+++ b/layouts/community/ergodox/guni/keymap.c
@@ -65,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
LAYOUT_ergodox( // layer 3 : teensy bootloader functions
// left hand
- RESET, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+ QK_BOOT, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,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/layouts/community/ergodox/haegin/keymap.c b/layouts/community/ergodox/haegin/keymap.c
index c3c2afecb8..cf5db6333b 100644
--- a/layouts/community/ergodox/haegin/keymap.c
+++ b/layouts/community/ergodox/haegin/keymap.c
@@ -226,7 +226,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/ishigoya-jp/keymap.c b/layouts/community/ergodox/ishigoya-jp/keymap.c
index e9d89d1bbc..8fe2b7e415 100644
--- a/layouts/community/ergodox/ishigoya-jp/keymap.c
+++ b/layouts/community/ergodox/ishigoya-jp/keymap.c
@@ -109,7 +109,7 @@ static uint16_t start;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
- *
+ *
* ,----------------------------------------------------. ,--------------------------------------------------.
* | En / 和 | | ^ | % | | |Selall| | Undo | | $ | @ | LT | UP | RT |
* |----------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
@@ -129,9 +129,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | Num | | Esc | | |
* `--------------------' `----------------------'
*
- *
+ *
* tmux prefix set to C-b
- *
+ *
*/
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
@@ -175,9 +175,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | shift| fn |------| |------| |kazari|
* | | | Num | | | | |
* `--------------------' `--------------------'
- *
- *
- *
+ *
+ *
+ *
*/
[JP] = LAYOUT_ergodox(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -218,14 +218,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
- *
- *
- *
+ *
+ *
+ *
*/
[JPXON] = LAYOUT_ergodox(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, M(JPXE), KC_NO, M(JPXKE), KC_NO, KC_NO,
- KC_NO, KC_NO, KC_NO, M(JPXKA), KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, M(JPXKA), 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,
@@ -261,14 +261,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
- *
- *
- *
+ *
+ *
+ *
*/
[JPKAZARI] = LAYOUT_ergodox(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, M(JPGO), M(JPZA), M(JPBE), M(JPGE), KC_NO,
- KC_NO, M(JPDO), M(JPJI), M(JPGA), M(JPGI), M(JPZU),
+ KC_NO, M(JPDO), M(JPJI), M(JPGA), M(JPGI), M(JPZU),
KC_NO, KC_NO, M(JPZO), M(JPBI), M(JPDI), KC_NO, KC_NO,
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO,
@@ -304,14 +304,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
- *
- *
- *
+ *
+ *
+ *
*/
[JPTOPROW] = LAYOUT_ergodox(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_E, KC_MINS, M(JPRE), KC_NO, KC_NO,
- KC_NO, M(JPRA), M(JPRI), M(JPNA), M(JPNO), M(JPMI),
+ KC_NO, M(JPRA), M(JPRI), M(JPNA), M(JPNO), M(JPMI),
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,
@@ -348,14 +348,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
- *
- *
- *
+ *
+ *
+ *
*/
[JPTRKZ] = LAYOUT_ergodox(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, M(JPPE),KC_NO, KC_NO,
- KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, M(JPPI), KC_NO, KC_NO, KC_NO,
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO,
@@ -397,7 +397,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// left hand
KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_NO,
KC_NO, KC_NO, KC_NO, JP_DQUO, KC_RBRACKET, KC_BSPC, KC_SCLN,
- KC_NO, KC_NO, KC_SLSH, JP_PLUS, LSFT(KC_RBRACKET), JP_RCBR,
+ KC_NO, KC_NO, KC_SLSH, JP_PLUS, LSFT(KC_RBRACKET), JP_RCBR,
KC_NO, KC_NO, JP_ASTR, KC_MINS, LSFT(KC_8), LSFT(KC_9), JP_COLN,
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_HASH,
KC_NO, KC_NO,
@@ -417,7 +417,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
-
+
// MACRO only works in this function
switch(id) {
case 0:
@@ -445,9 +445,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
}
}
break;
-
+
// kana macros start here
-
+
case JPVU:
if (record->event.pressed) {
return MACRO( I(1), T(V), T(U), END);
@@ -641,7 +641,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
case JPDI:
if (record->event.pressed) {
return MACRO( I(1), T(D), T(I), END);
- }
+ }
break;
case JPZE:
if (record->event.pressed) {
@@ -838,9 +838,9 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
return MACRO( I(1), T(B), T(U), END);
}
break;
-
+
// kana macros end here
-
+
break;
case SHIFT:
if (record->event.pressed) {
@@ -848,8 +848,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
if (layer_state == (1<<JPKAZARI)) {
layer_state = (1<<JPTOPROW)| (1<<JPTRKZ);
} else {
- layer_state = (1<<JPTOPROW);
- }
+ layer_state = (1<<JPTOPROW);
+ }
} else {
layer_state = (0<<JPTOPROW);
clear_keyboard_but_mods();
@@ -864,8 +864,8 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
if (layer_state == (1<<JPTOPROW)) {
layer_state = (1<<JPKAZARI)| (1<<JPTRKZ);
} else {
- layer_state = (1<<JPKAZARI);
- }
+ layer_state = (1<<JPKAZARI);
+ }
break;
} else {
layer_state = (0<<JPKAZARI);
@@ -874,7 +874,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
return MACRO( T(ENTER), END);
}
}
- break;
+ break;
case JPFN:
if (record->event.pressed) {
start = timer_read();
@@ -917,7 +917,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
break;
*/
}
- return MACRO_NONE;
+ return MACRO_NONE;
};
// Runs just one time when the keyboard initializes.
@@ -927,15 +927,15 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
- uint8_t deflayer = biton32(default_layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
+ uint8_t deflayer = get_highest_layer(default_layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
-
-
+
+
switch (layer) {
case 0:
//none
diff --git a/layouts/community/ergodox/issmirnov/keymap.c b/layouts/community/ergodox/issmirnov/keymap.c
index b129148b08..c5a7a29121 100644
--- a/layouts/community/ergodox/issmirnov/keymap.c
+++ b/layouts/community/ergodox/issmirnov/keymap.c
@@ -61,7 +61,7 @@ TO(0) , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
XXXXXXX ,
KC_SPACE , KC_BSPACE , KC_DEL ,
-KC_EQL , ___________________XXXXX___________________ , RESET ,
+KC_EQL , ___________________XXXXX___________________ , QK_BOOT ,
KC_PLUS , _________________NUMP_R1___________________ , XXXXXXX ,
_________________NUMP_R2___________________ , XXXXXXX ,
KC_MINS , _________________NUMP_R3___________________ , XXXXXXX ,
@@ -125,7 +125,7 @@ _______, _______, KC_LGUI
// called by QMK during key processing before the actual key event is handled. Useful for macros.
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (keycode) {
case TAP_TOG_LAYER:
process_tap_tog(_SYMB,record);
@@ -157,7 +157,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// Runs constantly in the background, in a loop every 100ms or so.
// Best used for LED status output triggered when user isn't actively typing.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
if (layer == 0) {
// Set up LED indicators for stuck modifier keys.
// https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/report.h#L118
@@ -202,7 +202,7 @@ void matrix_scan_user(void) {
// only runs when when the layer is changed, good for updating LED's and clearing sticky state
layer_state_t layer_state_set_user(layer_state_t state) {
- uint8_t layer = biton32(state);
+ uint8_t layer = get_highest_layer(state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/italian/keymap.c b/layouts/community/ergodox/italian/keymap.c
index 64dd51db67..3a81cc213b 100644
--- a/layouts/community/ergodox/italian/keymap.c
+++ b/layouts/community/ergodox/italian/keymap.c
@@ -43,7 +43,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_ESC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TT(SYMB),
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G,
- KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT,
MT(MOD_LGUI,KC_NONUS_BSLASH),KC_PPLS, KC_PMNS,KC_PAST,MT(MOD_LCTL,KC_PSLS),
KC_INS, KC_LGUI,
KC_HOME,
@@ -197,7 +197,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/j3rn/keymap.c b/layouts/community/ergodox/j3rn/keymap.c
index 5081ddf527..8ff8db2381 100644
--- a/layouts/community/ergodox/j3rn/keymap.c
+++ b/layouts/community/ergodox/j3rn/keymap.c
@@ -141,7 +141,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/jackhumbert/keymap.c b/layouts/community/ergodox/jackhumbert/keymap.c
index 9d357881e2..2e1678d8b2 100644
--- a/layouts/community/ergodox/jackhumbert/keymap.c
+++ b/layouts/community/ergodox/jackhumbert/keymap.c
@@ -19,11 +19,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_HOME,
KC_SPC,KC_SPC,KC_END,
// right hand
- KC_NO, M(1), RESET, KC_8, KC_9, KC_0, KC_NO,
+ KC_NO, M(1), QK_BOOT, KC_8, KC_9, KC_0, KC_NO,
KC_NO, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, KC_P, KC_BSPC,
RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_SCLN, KC_QUOT,
KC_NO, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, KC_ENT,
- MO(1), KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,
+ MO(1), KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,
RGB_TOG, RGB_HUI,
RGB_MOD,
M(2), KC_SPC,KC_SPC
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// left hand
KC_TRNS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS,
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,
@@ -42,8 +42,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
- KC_TRNS, KC_F12, KC_NO, KC_NO, KC_NO, RESET, KC_TRNS,
- KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
+ KC_TRNS, KC_F12, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_TRNS,
+ KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
@@ -51,9 +51,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MDIA] = LAYOUT_ergodox(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS,
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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,8 +61,8 @@ 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_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
- KC_TRNS, KC_F12, KC_NO, KC_NO, KC_NO, RESET, KC_TRNS,
- KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
+ KC_TRNS, KC_F12, KC_NO, KC_NO, KC_NO, QK_BOOT, KC_TRNS,
+ KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
@@ -97,7 +97,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/jacobono/keymap.c b/layouts/community/ergodox/jacobono/keymap.c
index e97209fc84..7c5b914872 100644
--- a/layouts/community/ergodox/jacobono/keymap.c
+++ b/layouts/community/ergodox/jacobono/keymap.c
@@ -227,7 +227,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/jafo/keymap.c b/layouts/community/ergodox/jafo/keymap.c
index b8b8e63517..28c95d6540 100644
--- a/layouts/community/ergodox/jafo/keymap.c
+++ b/layouts/community/ergodox/jafo/keymap.c
@@ -139,7 +139,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/jgarr/keymap.c b/layouts/community/ergodox/jgarr/keymap.c
index ac4e562263..38eaa5fca0 100644
--- a/layouts/community/ergodox/jgarr/keymap.c
+++ b/layouts/community/ergodox/jgarr/keymap.c
@@ -138,7 +138,7 @@ LAYOUT_ergodox(
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/josh/keymap.c b/layouts/community/ergodox/josh/keymap.c
index 07ee97ec82..d98b98b236 100644
--- a/layouts/community/ergodox/josh/keymap.c
+++ b/layouts/community/ergodox/josh/keymap.c
@@ -103,7 +103,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 2: Media and mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
- * | | | | | | |RESET | |RESET | | | | | | |
+ * | | | | | | |QK_BOOT | |QK_BOOT | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | MsUp | | | | | | | | | | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
@@ -123,7 +123,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
// MEDIA AND MOUSE
[MDIA] = LAYOUT_ergodox(
- 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, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -132,7 +132,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_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_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
@@ -188,7 +188,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/kastyle/keymap.c b/layouts/community/ergodox/kastyle/keymap.c
index c9789955b3..268080c7dc 100644
--- a/layouts/community/ergodox/kastyle/keymap.c
+++ b/layouts/community/ergodox/kastyle/keymap.c
@@ -1,5 +1,5 @@
/* Setup to approximate a Kinesis Advantage with an eye to use in a
- * Mac/OSX environment
+ * Mac/OSX environment
* This version adds a hand swap feature to flip the keyboard */
#include QMK_KEYBOARD_H
#include "debug.h"
@@ -143,7 +143,7 @@ LAYOUT_ergodox(
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/kejadlen/keymap.c b/layouts/community/ergodox/kejadlen/keymap.c
index 6ce209f806..86d42aa740 100644
--- a/layouts/community/ergodox/kejadlen/keymap.c
+++ b/layouts/community/ergodox/kejadlen/keymap.c
@@ -53,7 +53,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[ETC] = LAYOUT_ergodox(
- RESET, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
+ QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_TRNS,
KC_TRNS, LT(ETC,KC_A), KC_NO, KC_NO, KC_NO, KC_PGDN,
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_DEL, KC_TRNS,
@@ -74,7 +74,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/kines-ish/keymap.c b/layouts/community/ergodox/kines-ish/keymap.c
index 2d1513667f..718bf6cee1 100644
--- a/layouts/community/ergodox/kines-ish/keymap.c
+++ b/layouts/community/ergodox/kines-ish/keymap.c
@@ -138,7 +138,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/kristian/keymap.c b/layouts/community/ergodox/kristian/keymap.c
index 3fdccb790a..3f84823b99 100644
--- a/layouts/community/ergodox/kristian/keymap.c
+++ b/layouts/community/ergodox/kristian/keymap.c
@@ -35,7 +35,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/manna-harbour_miryoku/config.h b/layouts/community/ergodox/manna-harbour_miryoku/config.h
index 10c61fdfdc..566701bfc4 100644
--- a/layouts/community/ergodox/manna-harbour_miryoku/config.h
+++ b/layouts/community/ergodox/manna-harbour_miryoku/config.h
@@ -1,6 +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/>.
@@ -8,6 +7,58 @@
#define XXX KC_NO
+#if defined (MIRYOKU_MAPPING_SHIFTED_ROWS)
+#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_ergodox_pretty( \
+XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX, \
+XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX, \
+XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \
+XXX, XXX, XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX, XXX, XXX, \
+XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \
+ XXX, XXX, XXX, XXX, \
+ XXX, XXX, \
+ XXX, XXX, XXX, XXX, XXX, XXX \
+)
+#elif defined (MIRYOKU_MAPPING_SHIFTED_ROWS_EXTENDED_THUMBS)
+#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_ergodox_pretty( \
+XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX, \
+XXX, K10, K11, K12, K13, K14, XXX, XXX, 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, \
+XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \
+ XXX, XXX, XXX, XXX, \
+ XXX, XXX, \
+ XXX, XXX, XXX, XXX, XXX, XXX \
+)
+#elif defined (MIRYOKU_MAPPING_SHIFTED_ROWS_EXTENDED_THUMBS_PINKIE_STAGGER) || defined (MIRYOKU_MAPPING_PEAK_ERGODOX)
+#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_ergodox_pretty( \
+XXX, XXX, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, XXX, XXX, \
+XXX, K00, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K09, XXX, \
+XXX, K10, K21, K22, K23, K24, K25, K26, K27, K28, K19, XXX, \
+XXX, K20, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, K29, XXX, \
+XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \
+ XXX, XXX, XXX, XXX, \
+ XXX, XXX, \
+ XXX, XXX, XXX, XXX, XXX, XXX \
+)
+#else
#define LAYOUT_miryoku(\
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\
@@ -24,3 +75,4 @@ XXX, XXX, XXX, XXX, K32, K37, XXX, XXX, XXX, XXX,\
XXX, XXX,\
K33, K34, XXX, XXX, K35, K36\
)
+#endif
diff --git a/layouts/community/ergodox/manna-harbour_miryoku/keymap.c b/layouts/community/ergodox/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/layouts/community/ergodox/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/ergodox/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/layouts/community/ergodox/maz/keymap.c b/layouts/community/ergodox/maz/keymap.c
index 3244f2152d..4d313dee43 100644
--- a/layouts/community/ergodox/maz/keymap.c
+++ b/layouts/community/ergodox/maz/keymap.c
@@ -183,7 +183,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/mclennon_osx/keymap.c b/layouts/community/ergodox/mclennon_osx/keymap.c
index 72e9d505a1..ae67d8fb40 100644
--- a/layouts/community/ergodox/mclennon_osx/keymap.c
+++ b/layouts/community/ergodox/mclennon_osx/keymap.c
@@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/meagerfindings/keymap.c b/layouts/community/ergodox/meagerfindings/keymap.c
index f4340b8e1b..9d4eba205d 100644
--- a/layouts/community/ergodox/meagerfindings/keymap.c
+++ b/layouts/community/ergodox/meagerfindings/keymap.c
@@ -287,7 +287,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 5: Arrows
*
* ,--------------------------------------------------. ,--------------------------------------------------.
- * | RESET | | | | | | | | | | | | | | |
+ * | QK_BOOT | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | Opt+L| Up |Opt+R | | | | | | Opt+L| Up |Opt+R | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
@@ -312,7 +312,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[ARROWS] = LAYOUT_ergodox(
//left hand
- RESET, _______, _______, _______, _______, _______, _______,
+ QK_BOOT, _______, _______, _______, _______, _______, _______,
_______, _______, CHRM_L, KC_UP, CHRM_R, _______, _______,
_______,LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT),
_______, _______, _______, _______, _______, _______, _______,
@@ -538,7 +538,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
};
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/msc/keymap.c b/layouts/community/ergodox/msc/keymap.c
index 5d9de3239b..62d18798dd 100644
--- a/layouts/community/ergodox/msc/keymap.c
+++ b/layouts/community/ergodox/msc/keymap.c
@@ -138,7 +138,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/naps62/keymap.c b/layouts/community/ergodox/naps62/keymap.c
index 230b3376b2..e9697497a0 100644
--- a/layouts/community/ergodox/naps62/keymap.c
+++ b/layouts/community/ergodox/naps62/keymap.c
@@ -118,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
// MEDIA AND MOUSE
LAYOUT_ergodox(
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, LGUI(KC_W), LGUI(KC_E), KC_BTN1, LGUI(KC_T), KC_TRNS,
KC_TRNS, LGUI(KC_A), LGUI(KC_S), LGUI(KC_D), KC_MS_D, KC_MS_R,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -141,7 +141,7 @@ LAYOUT_ergodox(
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.c b/layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.c
index 7c91b3fbb0..7c57820c43 100644
--- a/layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.c
+++ b/layouts/community/ergodox/neo2_on_qwertz_hardware/keymap.c
@@ -5,7 +5,7 @@
#define UM 0
#define L0 0 // layer_0
-#define L1 1 // layer_1
+#define L1 1 // layer_1
#define L2 2 // layer_2
#define L3 3 // layer_3
#define L4 4 // layer_4
@@ -344,7 +344,7 @@ void unicode_action_function(uint16_t hi, uint16_t lo) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/osx_de/keymap.c b/layouts/community/ergodox/osx_de/keymap.c
index 5c3d7e49ea..cbbfc42280 100644
--- a/layouts/community/ergodox/osx_de/keymap.c
+++ b/layouts/community/ergodox/osx_de/keymap.c
@@ -31,117 +31,117 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[BASE]=LAYOUT_ergodox(
//left half
- KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, M(M_CTL_SFT_HASH),
- KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_LGUI,
- KC_LALT, DE_A, DE_S, DE_D, DE_F, DE_G,
- KC_LSFT, CTL_T(DE_Y), DE_X, DE_C, DE_V, DE_B, KC_LALT,
- LT(SYMB,DE_LABK), M(M_DE_CIRC_CTRLCMD), M(M_DE_PLUS_CTRLALT), KC_UP, KC_DOWN,
- M(M_MEH_SH_ACUT), TG(MDIA),
- KC_HOME,
- KC_BSPC, KC_DEL, LT(SMLY,KC_END),
+ KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, M(M_CTL_SFT_HASH),
+ KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_LGUI,
+ KC_LALT, DE_A, DE_S, DE_D, DE_F, DE_G,
+ KC_LSFT, CTL_T(DE_Y), DE_X, DE_C, DE_V, DE_B, KC_LALT,
+ LT(SYMB,DE_LABK), M(M_DE_CIRC_CTRLCMD), M(M_DE_PLUS_CTRLALT), KC_UP, KC_DOWN,
+ M(M_MEH_SH_ACUT), TG(MDIA),
+ KC_HOME,
+ KC_BSPC, KC_DEL, LT(SMLY,KC_END),
//right half
- M(M_CTL_SFT_HASH), DE_6, DE_7, DE_8, DE_9, DE_0, DE_SS,
- KC_RGUI, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UDIA,
- DE_H, DE_J, DE_K, DE_L, DE_ODIA, ALT_T(DE_ADIA),
- KC_RALT, DE_N, DE_M, DE_COMM, DE_DOT, CTL_T(DE_MINS), KC_RSFT,
- KC_LEFT, KC_RIGHT, LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_PLUS),
- TG(NUMB), ALL_T(DE_ACUT),
- KC_PGUP,
+ M(M_CTL_SFT_HASH), DE_6, DE_7, DE_8, DE_9, DE_0, DE_SS,
+ KC_RGUI, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UDIA,
+ DE_H, DE_J, DE_K, DE_L, DE_ODIA, ALT_T(DE_ADIA),
+ KC_RALT, DE_N, DE_M, DE_COMM, DE_DOT, CTL_T(DE_MINS), KC_RSFT,
+ KC_LEFT, KC_RIGHT, LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_PLUS),
+ TG(NUMB), ALL_T(DE_ACUT),
+ KC_PGUP,
KC_PGDN, KC_ENT, KC_SPC),
[SYMB]=LAYOUT_ergodox(
//left half
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
- KC_TRNS, DE_LABK, DE_RABK, DE_EXLM, DE_QUES, KC_TRNS, KC_TRNS,
- KC_TRNS, DE_HASH, DE_DLR, DE_BSLS, DE_SLSH, KC_DOT,
- KC_TRNS, KC_TRNS, DE_LABK, DE_PERC, DE_PIPE, DE_TILD, 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS, DE_LABK, DE_RABK, DE_EXLM, DE_QUES, KC_TRNS, KC_TRNS,
+ KC_TRNS, DE_HASH, DE_DLR, DE_BSLS, DE_SLSH, KC_DOT,
+ KC_TRNS, KC_TRNS, DE_LABK, DE_PERC, DE_PIPE, DE_TILD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_DEL, KC_TRNS,
//right half
- M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), DE_LABK, DE_RABK, DE_EXLM,
- DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), DE_HASH,
- KC_TRNS, DE_PIPE, DE_TILD, DE_CIRC, KC_UP, DE_MINS, LSFT(KC_4),
- DE_QUOT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS,
- KC_F13, KC_F12,
- KC_F14,
+ M(M_TOGGLE_5), KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), DE_LABK, DE_RABK, DE_EXLM,
+ DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), DE_HASH,
+ KC_TRNS, DE_PIPE, DE_TILD, DE_CIRC, KC_UP, DE_MINS, LSFT(KC_4),
+ DE_QUOT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS,
+ KC_F13, KC_F12,
+ KC_F14,
KC_F15, KC_TRNS, KC_TRNS),
[MDIA]=LAYOUT_ergodox(
//left half
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
- KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
+ KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, 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,
//right half
- KC_MUTE, 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_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_VOLD, KC_TRNS, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
+ KC_MUTE, 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_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_VOLD, KC_TRNS, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
KC_TRNS, KC_TRNS, KC_WBAK),
[SMLY]=LAYOUT_ergodox(
//left half
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
//right half
- M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS,
- M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
+ M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS,
+ M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS),
[NUMB]=LAYOUT_ergodox(
//left half
- 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_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_UP, 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,
//right half
- KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12,
- KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, DE_MINS,
- KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS,
- KC_0, KC_DOT, KC_COMM, DE_EQL, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12,
+ KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, DE_MINS,
+ KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS,
+ KC_0, KC_DOT, KC_COMM, DE_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS),
[EGOS]=LAYOUT_ergodox(
//left half
- KC_TRNS, KC_TRNS, KC_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_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_F1, KC_F2,
- KC_F3,
- KC_SPC, KC_LCTL, KC_F4,
+ KC_TRNS, KC_TRNS, KC_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_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F1, KC_F2,
+ KC_F3,
+ KC_SPC, KC_LCTL, KC_F4,
//right half
- M(M_TOGGLE_5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
+ M(M_TOGGLE_5), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS),
};
@@ -318,7 +318,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
-uint8_t layer = biton32(layer_state);
+uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
@@ -328,22 +328,22 @@ switch (layer) {
case SYMB:
ergodox_right_led_1_on();
-
-
+
+
break;
case MDIA:
-
+
ergodox_right_led_2_on();
-
+
break;
case SMLY:
-
-
+
+
ergodox_right_led_3_on();
break;
case NUMB:
ergodox_right_led_1_on();
-
+
ergodox_right_led_3_on();
break;
case EGOS:
@@ -357,4 +357,3 @@ break;
}
};
-
diff --git a/layouts/community/ergodox/osx_de_adnw_koy/keymap.c b/layouts/community/ergodox/osx_de_adnw_koy/keymap.c
index b8ffc2e51f..cd09d066a6 100644
--- a/layouts/community/ergodox/osx_de_adnw_koy/keymap.c
+++ b/layouts/community/ergodox/osx_de_adnw_koy/keymap.c
@@ -27,105 +27,105 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[BASE]=LAYOUT_ergodox(
//left half
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LCTL,
- KC_TAB, KC_K, KC_DOT, KC_O, KC_COMM, KC_Z, KC_LGUI,
- TG(QWERTZ), KC_H, KC_A, KC_E, KC_I, KC_U,
- KC_LSFT, CTL_T(KC_X), KC_Q, DE_ADIA, DE_UDIA, DE_ODIA, KC_LALT,
- LT(SYMB,KC_GRV), DE_LABK, LALT(KC_LSFT), KC_LEFT, KC_RGHT,
- TG(MDIA), MEH_T(LSFT(DE_ACUT)),
- KC_HOME,
- KC_BSPC, KC_DEL, KC_END,
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LCTL,
+ KC_TAB, KC_K, KC_DOT, KC_O, KC_COMM, KC_Z, KC_LGUI,
+ TG(QWERTZ), KC_H, KC_A, KC_E, KC_I, KC_U,
+ KC_LSFT, CTL_T(KC_X), KC_Q, DE_ADIA, DE_UDIA, DE_ODIA, KC_LALT,
+ LT(SYMB,KC_GRV), DE_LABK, LALT(KC_LSFT), KC_LEFT, KC_RGHT,
+ TG(MDIA), MEH_T(LSFT(DE_ACUT)),
+ KC_HOME,
+ KC_BSPC, KC_DEL, KC_END,
//right half
- KC_RCTL, KC_6, KC_7, KC_8, KC_9, KC_0, DE_MINS,
- KC_RGUI, KC_V, KC_G, KC_C, KC_L, KC_MINS, KC_Y,
- KC_D, KC_T, KC_R, KC_N, KC_S, LT(MDIA,KC_F),
- KC_RALT, KC_B, KC_P, KC_W, KC_M, CTL_T(KC_J), KC_RSFT,
- KC_UP, KC_DOWN, LGUI(KC_LSFT), KC_RBRC, LT(SYMB,KC_BSLS),
- ALL_T(DE_ACUT), TG(NUMB),
- KC_PGUP,
+ KC_RCTL, KC_6, KC_7, KC_8, KC_9, KC_0, DE_MINS,
+ KC_RGUI, KC_V, KC_G, KC_C, KC_L, KC_MINS, KC_Y,
+ KC_D, KC_T, KC_R, KC_N, KC_S, LT(MDIA,KC_F),
+ KC_RALT, KC_B, KC_P, KC_W, KC_M, CTL_T(KC_J), KC_RSFT,
+ KC_UP, KC_DOWN, LGUI(KC_LSFT), KC_RBRC, LT(SYMB,KC_BSLS),
+ ALL_T(DE_ACUT), TG(NUMB),
+ KC_PGUP,
KC_PGDN, KC_ENT, KC_SPC),
[SYMB]=LAYOUT_ergodox(
//left half
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
- KC_TRNS, KC_GRV, LSFT(KC_GRV), DE_EXLM, DE_QUES, KC_TRNS, KC_TRNS,
- KC_TRNS, DE_HASH, DE_DLR, LALT(LSFT(KC_7)), DE_SLSH, KC_DOT,
- KC_TRNS, KC_TRNS, DE_LABK, DE_PERC, LALT(KC_7), LALT(KC_N), 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS, KC_GRV, LSFT(KC_GRV), DE_EXLM, DE_QUES, KC_TRNS, KC_TRNS,
+ KC_TRNS, DE_HASH, DE_DLR, LALT(LSFT(KC_7)), DE_SLSH, KC_DOT,
+ KC_TRNS, KC_TRNS, DE_LABK, DE_PERC, LALT(KC_7), LALT(KC_N), KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_DEL, KC_TRNS,
//right half
- KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, KC_F12,
- DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), KC_TRNS,
- KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_DQUO, DE_QUOT, DE_QUES,
- KC_TRNS, KC_DOT, KC_EXLM, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, LALT(LSFT(KC_7)), LALT(KC_5), LALT(KC_6), LALT(KC_7), DE_HASH, KC_F12,
+ DE_SLSH, DE_LPRN, DE_RPRN, LALT(KC_8), LALT(KC_9), KC_TRNS,
+ KC_TRNS, DE_AMPR, KC_GRV, LSFT(KC_GRV), DE_DQUO, DE_QUOT, DE_QUES,
+ KC_TRNS, KC_DOT, KC_EXLM, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS),
[MDIA]=LAYOUT_ergodox(
//left half
- KC_TRNS, 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_TRNS,
- KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
- KC_TRNS, KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, 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_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
+ KC_TRNS, KC_WH_L, KC_WH_U, KC_WH_D, KC_WH_R, KC_BTN3, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
//right half
- 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, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_MUTE, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS,
- KC_VOLU, KC_VOLD, KC_LEFT, KC_DOWN, KC_RIGHT,
- 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, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MUTE, KC_MPRV, KC_MNXT, KC_UP, KC_TRNS,
+ KC_VOLU, KC_VOLD, KC_LEFT, KC_DOWN, KC_RIGHT,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
KC_TRNS, KC_TRNS, KC_WBAK),
[QWERTZ]=LAYOUT_ergodox(
//left half
- KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LGUI(KC_V),
- KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LGUI,
- KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G,
- KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LALT,
- LT(SYMB,KC_GRV), DE_LABK, LALT(KC_LSFT), KC_LEFT, KC_RGHT,
- KC_TRNS, MEH_T(LSFT(DE_ACUT)),
- KC_HOME,
- KC_BSPC, KC_DEL, KC_END,
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LGUI(KC_V),
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LGUI,
+ KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G,
+ KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_LALT,
+ LT(SYMB,KC_GRV), DE_LABK, LALT(KC_LSFT), KC_LEFT, KC_RGHT,
+ KC_TRNS, MEH_T(LSFT(DE_ACUT)),
+ KC_HOME,
+ KC_BSPC, KC_DEL, KC_END,
//right half
- LGUI(KC_C), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
- KC_RGUI, KC_Y, KC_U, KC_I, KC_O, KC_P, DE_UDIA,
- KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(MDIA,DE_ADIA),
- KC_RALT, KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
- KC_UP, KC_DOWN, LGUI(KC_LSFT), KC_RBRC, LT(SYMB,KC_BSLS),
- ALL_T(DE_ACUT), KC_TRNS,
- KC_PGUP,
+ LGUI(KC_C), KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
+ KC_RGUI, KC_Y, KC_U, KC_I, KC_O, KC_P, DE_UDIA,
+ KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(MDIA,DE_ADIA),
+ KC_RALT, KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT,
+ KC_UP, KC_DOWN, LGUI(KC_LSFT), KC_RBRC, LT(SYMB,KC_BSLS),
+ ALL_T(DE_ACUT), KC_TRNS,
+ KC_PGUP,
KC_PGDN, KC_ENT, KC_SPC),
[NUMB]=LAYOUT_ergodox(
//left half
- 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_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_UP, 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,
//right half
- KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12,
- KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, KC_TRNS,
- KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS,
- KC_0, KC_DOT, KC_0, KC_EQL, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, KC_UP, KC_7, KC_8, KC_9, LSFT(KC_RBRC), KC_F12,
+ KC_DOWN, KC_4, KC_5, KC_6, KC_RBRC, KC_TRNS,
+ KC_TRNS, LSFT(KC_6), KC_1, KC_2, KC_3, LSFT(KC_7), KC_TRNS,
+ KC_0, KC_DOT, KC_0, KC_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS),
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
-uint8_t layer = biton32(layer_state);
+uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
@@ -139,4 +139,3 @@ break;
}
};
-
diff --git a/layouts/community/ergodox/osx_de_experimental/keymap.c b/layouts/community/ergodox/osx_de_experimental/keymap.c
index 8228b5e371..faf238726f 100644
--- a/layouts/community/ergodox/osx_de_experimental/keymap.c
+++ b/layouts/community/ergodox/osx_de_experimental/keymap.c
@@ -66,315 +66,315 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/**
* Layer: BASE
-* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/
-* | ESC | 1 | 2 | 3 | 4 | 5 | Hold or toggle | | Hold or toggle | 6 | 7 | 8 | 9 | 0 | ß |
-* | | | | | | | Layer NUMB | | Layer MDIA | | | | | | |
-* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/
-* | TAB | Q | W | E | R | T | Cmd | | Cmd | Z | U | I | O | P | Ü |
-* | | | | | | | | | | | | | | | |
-* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/\-------------------\ \-------------------\/-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/
-* | Alt | A | S | D | F | G | | H | J | K | L | Ö | Ä |
-* | | | | | | | | | | | | | ALT |
-* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/
-* | Shift | Y | X | C | V | B | Alt | | Alt | N | M | , | . | - | Shift |
-* | | Ctrl | | | | | | | | | | | | Ctrl | |
-* \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\ \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\
-*
-*
-* /-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------/
-* | < | LongPress / Type | LongPress / Type | Shift+Ctrl | Type | | # | ACUT | CMD+Shift | ALT+Shift | + |
-* | SYMB | DE_CIRC_CTRLCMD | DE_PLUS_CTRAlt | | Toggle SMLY | | Meh | Hyper | | | SYMB |
-* \-------------------\\-------------------\\-------------------\\-------------------\/-------------------//-------------------/ /-------------------//-------------------/ \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\
-* | HOME | END | | LEFT | RIGHT |
-* | | | | | |
-* \-------------------\/-------------------/ /-------------------/\-------------------\
-* | PGUP | | UP |
-* | | | |
-* /-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------/
-* | BSPC | DEL | PGDN | | DOWN | ENT | SPC |
-* | | | | | | | |
-* \-------------------\\-------------------\\-------------------\ \-------------------\\-------------------\\-------------------\
-*
-*
+* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/
+* | ESC | 1 | 2 | 3 | 4 | 5 | Hold or toggle | | Hold or toggle | 6 | 7 | 8 | 9 | 0 | ß |
+* | | | | | | | Layer NUMB | | Layer MDIA | | | | | | |
+* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/
+* | TAB | Q | W | E | R | T | Cmd | | Cmd | Z | U | I | O | P | Ü |
+* | | | | | | | | | | | | | | | |
+* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/\-------------------\ \-------------------\/-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/
+* | Alt | A | S | D | F | G | | H | J | K | L | Ö | Ä |
+* | | | | | | | | | | | | | ALT |
+* /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------//-------------------//-------------------/
+* | Shift | Y | X | C | V | B | Alt | | Alt | N | M | , | . | - | Shift |
+* | | Ctrl | | | | | | | | | | | | Ctrl | |
+* \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\ \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\\-------------------\
+*
+*
+* /-------------------//-------------------//-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------//-------------------//-------------------/
+* | < | LongPress / Type | LongPress / Type | Shift+Ctrl | Type | | # | ACUT | CMD+Shift | ALT+Shift | + |
+* | SYMB | DE_CIRC_CTRLCMD | DE_PLUS_CTRAlt | | Toggle SMLY | | Meh | Hyper | | | SYMB |
+* \-------------------\\-------------------\\-------------------\\-------------------\/-------------------//-------------------/ /-------------------//-------------------/ \-------------------\\-------------------\\-------------------\\-------------------\\-------------------\
+* | HOME | END | | LEFT | RIGHT |
+* | | | | | |
+* \-------------------\/-------------------/ /-------------------/\-------------------\
+* | PGUP | | UP |
+* | | | |
+* /-------------------//-------------------//-------------------/ /-------------------//-------------------//-------------------/
+* | BSPC | DEL | PGDN | | DOWN | ENT | SPC |
+* | | | | | | | |
+* \-------------------\\-------------------\\-------------------\ \-------------------\\-------------------\\-------------------\
+*
+*
**/
[BASE]=LAYOUT_ergodox(
//left half
- KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, M(TGH_NUM),
- KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_LGUI,
- KC_LALT, DE_A, DE_S, DE_D, DE_F, DE_G,
- KC_LSFT, CTL_T(DE_Y), DE_X, DE_C, DE_V, DE_B, KC_LALT,
- LT(SYMB,DE_LABK), M(M_DE_CIRC_CTRLCMD), M(M_DE_PLUS_CTRLALT), LSFT(KC_LCTRL), M(SMLY_TOG_QUOT),
- KC_HOME, KC_END,
- KC_PGUP,
- KC_BSPC, KC_DEL, KC_PGDN,
+ KC_ESC, DE_1, DE_2, DE_3, DE_4, DE_5, M(TGH_NUM),
+ KC_TAB, DE_Q, DE_W, DE_E, DE_R, DE_T, KC_LGUI,
+ KC_LALT, DE_A, DE_S, DE_D, DE_F, DE_G,
+ KC_LSFT, CTL_T(DE_Y), DE_X, DE_C, DE_V, DE_B, KC_LALT,
+ LT(SYMB,DE_LABK), M(M_DE_CIRC_CTRLCMD), M(M_DE_PLUS_CTRLALT), LSFT(KC_LCTRL), M(SMLY_TOG_QUOT),
+ KC_HOME, KC_END,
+ KC_PGUP,
+ KC_BSPC, KC_DEL, KC_PGDN,
//right half
- M(TOG_HLD_MDIA), DE_6, DE_7, DE_8, DE_9, DE_0, DE_SS,
- KC_RGUI, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UDIA,
- DE_H, DE_J, DE_K, DE_L, DE_ODIA, ALT_T(DE_ADIA),
- KC_RALT, DE_N, DE_M, DE_COMM, DE_DOT, CTL_T(DE_MINS), KC_RSFT,
- MEH_T(DE_HASH), ALL_T(DE_ACUT), LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_PLUS),
- KC_LEFT, KC_RIGHT,
- KC_UP,
+ M(TOG_HLD_MDIA), DE_6, DE_7, DE_8, DE_9, DE_0, DE_SS,
+ KC_RGUI, DE_Z, DE_U, DE_I, DE_O, DE_P, DE_UDIA,
+ DE_H, DE_J, DE_K, DE_L, DE_ODIA, ALT_T(DE_ADIA),
+ KC_RALT, DE_N, DE_M, DE_COMM, DE_DOT, CTL_T(DE_MINS), KC_RSFT,
+ MEH_T(DE_HASH), ALL_T(DE_ACUT), LGUI(KC_LSFT), LALT(KC_LSFT), LT(SYMB,DE_PLUS),
+ KC_LEFT, KC_RIGHT,
+ KC_UP,
KC_DOWN, KC_ENT, KC_SPC),
/**
* Layer: SYMB
-* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------//-----------//-----------/
-* | APPLICATION| F1 | F2 | F3 | F4 | F5 | F5 | | F6 | F6 | F7 | F8 | F9 | F10 | F11 |
-* | | | | | | | | | | | | | | | |
-* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------//-----------//-----------/
-* | | < | > | ! | ? | | | | | \ | [ | ] | < | > | ! |
-* | | | | | | | | | | | | | | | |
-* /-----------//-----------//-----------//-----------//-----------//-----------/\-----------\ \-----------\/-----------//-----------//-----------//-----------//-----------//-----------/
-* | | # | $ | \ | / | . | | / | ( | ) | { | } | # |
-* | | | | | | | | | | | | | |
-* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------//-----------//-----------/
-* | | | < | % | | | ~ | | | | | | ~ | | | | |
-* | | | | | | | | | | | | | | | |
-* \-----------\\-----------\\-----------\\-----------\\-----------\\-----------\\-----------\ \-----------\\-----------\\-----------\\-----------\\-----------\\-----------\\-----------\
-*
-*
-* /-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------/
-* | | | | | | | ' | DQOT | | Toggle 5 | |
-* | | | | | | | | | | | |
-* \-----------\\-----------\\-----------\\-----------\/-----------//-----------/ /-----------//-----------/ \-----------\\-----------\\-----------\\-----------\\-----------\
-* | | | | F13 | F12 |
-* | | | | | |
-* \-----------\/-----------/ /-----------/\-----------\
-* | | | F14 |
-* | | | |
-* /-----------//-----------//-----------/ /-----------//-----------//-----------/
-* | | DEL | | | F15 | | |
-* | | | | | | | |
-* \-----------\\-----------\\-----------\ \-----------\\-----------\\-----------\
-*
-*
+* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------//-----------//-----------/
+* | APPLICATION| F1 | F2 | F3 | F4 | F5 | F5 | | F6 | F6 | F7 | F8 | F9 | F10 | F11 |
+* | | | | | | | | | | | | | | | |
+* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------//-----------//-----------/
+* | | < | > | ! | ? | | | | | \ | [ | ] | < | > | ! |
+* | | | | | | | | | | | | | | | |
+* /-----------//-----------//-----------//-----------//-----------//-----------/\-----------\ \-----------\/-----------//-----------//-----------//-----------//-----------//-----------/
+* | | # | $ | \ | / | . | | / | ( | ) | { | } | # |
+* | | | | | | | | | | | | | |
+* /-----------//-----------//-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------//-----------//-----------/
+* | | | < | % | | | ~ | | | | | | ~ | | | | |
+* | | | | | | | | | | | | | | | |
+* \-----------\\-----------\\-----------\\-----------\\-----------\\-----------\\-----------\ \-----------\\-----------\\-----------\\-----------\\-----------\\-----------\\-----------\
+*
+*
+* /-----------//-----------//-----------//-----------//-----------/ /-----------//-----------//-----------//-----------//-----------/
+* | | | | | | | ' | DQOT | | Toggle 5 | |
+* | | | | | | | | | | | |
+* \-----------\\-----------\\-----------\\-----------\/-----------//-----------/ /-----------//-----------/ \-----------\\-----------\\-----------\\-----------\\-----------\
+* | | | | F13 | F12 |
+* | | | | | |
+* \-----------\/-----------/ /-----------/\-----------\
+* | | | F14 |
+* | | | |
+* /-----------//-----------//-----------/ /-----------//-----------//-----------/
+* | | DEL | | | F15 | | |
+* | | | | | | | |
+* \-----------\\-----------\\-----------\ \-----------\\-----------\\-----------\
+*
+*
**/
[SYMB]=LAYOUT_ergodox(
//left half
- KC_APPLICATION, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F5,
- KC_TRNS, DE_LABK, DE_RABK, DE_EXLM, DE_QST, KC_TRNS, KC_TRNS,
- KC_TRNS, DE_HASH, DE_DLR, DE_BSLS, DE_SLSH, KC_DOT,
- KC_TRNS, KC_TRNS, DE_LABK, DE_PERC, DE_PIPE, DE_TILD, 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_APPLICATION, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F5,
+ KC_TRNS, DE_LABK, DE_RABK, DE_EXLM, DE_QST, KC_TRNS, KC_TRNS,
+ KC_TRNS, DE_HASH, DE_DLR, DE_BSLS, DE_SLSH, KC_DOT,
+ KC_TRNS, KC_TRNS, DE_LABK, DE_PERC, DE_PIPE, DE_TILD, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_DEL, KC_TRNS,
//right half
- KC_F6, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_TRNS, DE_BSLS, DE_LBRC, DE_RBRC, DE_LABK, DE_RABK, DE_EXLM,
- DE_SLSH, DE_LPRN, DE_RPRN, DE_LCBR, DE_RCBR, DE_HASH,
- KC_TRNS, DE_PIPE, DE_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- DE_QUOT, DE_DQUO, KC_TRNS, M(M_TOGGLE_5), KC_TRNS,
- KC_F13, KC_F12,
- KC_F14,
+ KC_F6, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, DE_BSLS, DE_LBRC, DE_RBRC, DE_LABK, DE_RABK, DE_EXLM,
+ DE_SLSH, DE_LPRN, DE_RPRN, DE_LCBR, DE_RCBR, DE_HASH,
+ KC_TRNS, DE_PIPE, DE_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ DE_QUOT, DE_DQUO, KC_TRNS, M(M_TOGGLE_5), KC_TRNS,
+ KC_F13, KC_F12,
+ KC_F14,
KC_F15, KC_TRNS, KC_TRNS),
/**
* Layer: MDIA
-* /-----//-----//-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----//-----//-----/
-* | | | | | | | | | | | | | | | |
-* | | | | | | | | | | | | | | | |
-* /-----//-----//-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----//-----//-----/
-* | | | BTN1 | U | BTN2 | U | | | | | | | | | |
-* | | | | | | | | | | | | | | | |
-* /-----//-----//-----//-----//-----//-----/\-----\ \-----\/-----//-----//-----//-----//-----//-----/
-* | | | L | D | R | D | | | | | | | |
-* | | | | | | | | | | | | | |
-* /-----//-----//-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----//-----//-----/
-* | | | L | D | R | BTN3 | | | | | | | | UP | |
-* | | | | | | | | | | | | | | | |
-* \-----\\-----\\-----\\-----\\-----\\-----\\-----\ \-----\\-----\\-----\\-----\\-----\\-----\\-----\
-*
-*
-* /-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----/
-* | | | | | | | | | LEFT | DOWN | RIGHT|
-* | | | | | | | | | | | |
-* \-----\\-----\\-----\\-----\/-----//-----/ /-----//-----/ \-----\\-----\\-----\\-----\\-----\
-* | | | | MPRV | MNXT |
-* | | | | | |
-* \-----\/-----/ /-----/\-----\
-* | | | VOLU |
-* | | | |
-* /-----//-----//-----/ /-----//-----//-----/
-* | | | | | VOLD | MUTE | MPLY |
-* | | | | | | | |
-* \-----\\-----\\-----\ \-----\\-----\\-----\
-*
-*
+* /-----//-----//-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----//-----//-----/
+* | | | | | | | | | | | | | | | |
+* | | | | | | | | | | | | | | | |
+* /-----//-----//-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----//-----//-----/
+* | | | BTN1 | U | BTN2 | U | | | | | | | | | |
+* | | | | | | | | | | | | | | | |
+* /-----//-----//-----//-----//-----//-----/\-----\ \-----\/-----//-----//-----//-----//-----//-----/
+* | | | L | D | R | D | | | | | | | |
+* | | | | | | | | | | | | | |
+* /-----//-----//-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----//-----//-----/
+* | | | L | D | R | BTN3 | | | | | | | | UP | |
+* | | | | | | | | | | | | | | | |
+* \-----\\-----\\-----\\-----\\-----\\-----\\-----\ \-----\\-----\\-----\\-----\\-----\\-----\\-----\
+*
+*
+* /-----//-----//-----//-----//-----/ /-----//-----//-----//-----//-----/
+* | | | | | | | | | LEFT | DOWN | RIGHT|
+* | | | | | | | | | | | |
+* \-----\\-----\\-----\\-----\/-----//-----/ /-----//-----/ \-----\\-----\\-----\\-----\\-----\
+* | | | | MPRV | MNXT |
+* | | | | | |
+* \-----\/-----/ /-----/\-----\
+* | | | VOLU |
+* | | | |
+* /-----//-----//-----/ /-----//-----//-----/
+* | | | | | VOLD | MUTE | MPLY |
+* | | | | | | | |
+* \-----\\-----\\-----\ \-----\\-----\\-----\
+*
+*
**/
[MDIA]=LAYOUT_ergodox(
//left half
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
- KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, 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_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
+ KC_TRNS, KC_TRNS, KC_WH_L, KC_WH_D, KC_WH_R, 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,
//right half
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_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_LEFT, KC_DOWN, KC_RIGHT,
- KC_MPRV, KC_MNXT,
- 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, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT,
+ KC_MPRV, KC_MNXT,
+ KC_VOLU,
KC_VOLD, KC_MUTE, KC_MPLY),
/**
* Layer: SMLY
-* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
-* | | | | | | | | | Typing | Typing | Typing | | | | |
-* | | | | | | | | | SM_SMILE| SM_SMIRK| SM_LAUGH| | | | |
-* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
-* | | | | | | | | | | Typing | Typing | Typing | | | |
-* | | | | | | | | | | SM_FROWN| SM_SAD | SM_CRY | | | |
-* /--------//--------//--------//--------//--------//--------/\--------\ \--------\/--------//--------//--------//--------//--------//--------/
-* | | | | | | | | Typing | Typing | | | | |
-* | | | | | | | | SM_HEART| SM_KISS | | | | |
-* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
-* | | | | | | | | | | | | | | | |
-* | | | | | | | | | | | | | | | |
-* \--------\\--------\\--------\\--------\\--------\\--------\\--------\ \--------\\--------\\--------\\--------\\--------\\--------\\--------\
-*
-*
-* /--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------/
-* | | | | | | | | | | | |
-* | | | | | | | | | | | |
-* \--------\\--------\\--------\\--------\/--------//--------/ /--------//--------/ \--------\\--------\\--------\\--------\\--------\
-* | | | | | |
-* | | | | | |
-* \--------\/--------/ /--------/\--------\
-* | | | |
-* | | | |
-* /--------//--------//--------/ /--------//--------//--------/
-* | | | | | | | |
-* | | | | | | | |
-* \--------\\--------\\--------\ \--------\\--------\\--------\
-*
-*
+* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
+* | | | | | | | | | Typing | Typing | Typing | | | | |
+* | | | | | | | | | SM_SMILE| SM_SMIRK| SM_LAUGH| | | | |
+* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
+* | | | | | | | | | | Typing | Typing | Typing | | | |
+* | | | | | | | | | | SM_FROWN| SM_SAD | SM_CRY | | | |
+* /--------//--------//--------//--------//--------//--------/\--------\ \--------\/--------//--------//--------//--------//--------//--------/
+* | | | | | | | | Typing | Typing | | | | |
+* | | | | | | | | SM_HEART| SM_KISS | | | | |
+* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
+* | | | | | | | | | | | | | | | |
+* | | | | | | | | | | | | | | | |
+* \--------\\--------\\--------\\--------\\--------\\--------\\--------\ \--------\\--------\\--------\\--------\\--------\\--------\\--------\
+*
+*
+* /--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------/
+* | | | | | | | | | | | |
+* | | | | | | | | | | | |
+* \--------\\--------\\--------\\--------\/--------//--------/ /--------//--------/ \--------\\--------\\--------\\--------\\--------\
+* | | | | | |
+* | | | | | |
+* \--------\/--------/ /--------/\--------\
+* | | | |
+* | | | |
+* /--------//--------//--------/ /--------//--------//--------/
+* | | | | | | | |
+* | | | | | | | |
+* \--------\\--------\\--------\ \--------\\--------\\--------\
+*
+*
**/
[SMLY]=LAYOUT_ergodox(
//left half
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
//right half
- M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS,
- M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
+ M(SM_SMILE), M(SM_SMIRK), M(SM_LAUGH), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, M(SM_FROWN), M(SM_SAD), M(SM_CRY), KC_TRNS, KC_TRNS, KC_TRNS,
+ M(SM_HEART), M(SM_KISS), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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: NUMB
-* /----//----//----//----//----//----//----/ /----//----//----//----//----//----//----/
-* | | | | | | | | | | F6 | F7 | F8 | F9 | F10 | F11 |
-* | | | | | | | | | | | | | | | |
-* /----//----//----//----//----//----//----/ /----//----//----//----//----//----//----/
-* | | | | UP | | | | | | / | 7 | 8 | 9 | * | F12 |
-* | | | | | | | | | | | | | | | |
-* /----//----//----//----//----//----/\----\ \----\/----//----//----//----//----//----/
-* | | | LEFT| DOWN| RGHT| | | / | 4 | 5 | 6 | + | - |
-* | | | | | | | | | | | | | |
-* /----//----//----//----//----//----//----/ /----//----//----//----//----//----//----/
-* | | | | | | | | | | % | 1 | 2 | 3 | | |
-* | | | | | | | | | | | | | | | |
-* \----\\----\\----\\----\\----\\----\\----\ \----\\----\\----\\----\\----\\----\\----\
-*
-*
-* /----//----//----//----//----/ /----//----//----//----//----/
-* | | | | | | | 0 | . | , | = | |
-* | | | | | | | | | | | |
-* \----\\----\\----\\----\/----//----/ /----//----/ \----\\----\\----\\----\\----\
-* | | | | | |
-* | | | | | |
-* \----\/----/ /----/\----\
-* | | | |
-* | | | |
-* /----//----//----/ /----//----//----/
-* | | | | | | | |
-* | | | | | | | |
-* \----\\----\\----\ \----\\----\\----\
-*
-*
+* /----//----//----//----//----//----//----/ /----//----//----//----//----//----//----/
+* | | | | | | | | | | F6 | F7 | F8 | F9 | F10 | F11 |
+* | | | | | | | | | | | | | | | |
+* /----//----//----//----//----//----//----/ /----//----//----//----//----//----//----/
+* | | | | UP | | | | | | / | 7 | 8 | 9 | * | F12 |
+* | | | | | | | | | | | | | | | |
+* /----//----//----//----//----//----/\----\ \----\/----//----//----//----//----//----/
+* | | | LEFT| DOWN| RGHT| | | / | 4 | 5 | 6 | + | - |
+* | | | | | | | | | | | | | |
+* /----//----//----//----//----//----//----/ /----//----//----//----//----//----//----/
+* | | | | | | | | | | % | 1 | 2 | 3 | | |
+* | | | | | | | | | | | | | | | |
+* \----\\----\\----\\----\\----\\----\\----\ \----\\----\\----\\----\\----\\----\\----\
+*
+*
+* /----//----//----//----//----/ /----//----//----//----//----/
+* | | | | | | | 0 | . | , | = | |
+* | | | | | | | | | | | |
+* \----\\----\\----\\----\/----//----/ /----//----/ \----\\----\\----\\----\\----\
+* | | | | | |
+* | | | | | |
+* \----\/----/ /----/\----\
+* | | | |
+* | | | |
+* /----//----//----/ /----//----//----/
+* | | | | | | | |
+* | | | | | | | |
+* \----\\----\\----\ \----\\----\\----\
+*
+*
**/
[NUMB]=LAYOUT_ergodox(
//left half
- 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_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_UP, 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,
//right half
- KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
- KC_TRNS, DE_SLSH, KC_7, KC_8, KC_9, DE_ASTR, KC_F12,
- DE_SLSH, KC_4, KC_5, KC_6, DE_PLUS, DE_MINS,
- KC_TRNS, DE_PERC, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS,
- KC_0, KC_DOT, KC_COMM, DE_EQL, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
+ KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
+ KC_TRNS, DE_SLSH, KC_7, KC_8, KC_9, DE_ASTR, KC_F12,
+ DE_SLSH, KC_4, KC_5, KC_6, DE_PLUS, DE_MINS,
+ KC_TRNS, DE_PERC, KC_1, KC_2, KC_3, KC_TRNS, KC_TRNS,
+ KC_0, KC_DOT, KC_COMM, DE_EQL, KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS),
/**
* Layer: EGOS
-* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
-* | | | | | | | | | | | | | | | |
-* | | | | | | | | | | | | | | | |
-* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
-* | | | | | | | | | | | | | | | |
-* | | | | | | | | | | | | | | | |
-* /--------//--------//--------//--------//--------//--------/\--------\ \--------\/--------//--------//--------//--------//--------//--------/
-* | Shift | | | | | | | | | | | | |
-* | | | | | | | | | | | | | |
-* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
-* | | | | | | | | | | | | | | | |
-* | | | | | | | | | | | | | | | |
-* \--------\\--------\\--------\\--------\\--------\\--------\\--------\ \--------\\--------\\--------\\--------\\--------\\--------\\--------\
-*
-*
-* /--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------/
-* | Ctrl | | | | | | | | | Toggle 5| |
-* | | | | | | | | | | | |
-* \--------\\--------\\--------\\--------\/--------//--------/ /--------//--------/ \--------\\--------\\--------\\--------\\--------\
-* | F1 | F2 | | | |
-* | | | | | |
-* \--------\/--------/ /--------/\--------\
-* | F3 | | |
-* | | | |
-* /--------//--------//--------/ /--------//--------//--------/
-* | SPC | Ctrl | F4 | | | | |
-* | | | | | | | |
-* \--------\\--------\\--------\ \--------\\--------\\--------\
-*
-*
+* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
+* | | | | | | | | | | | | | | | |
+* | | | | | | | | | | | | | | | |
+* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
+* | | | | | | | | | | | | | | | |
+* | | | | | | | | | | | | | | | |
+* /--------//--------//--------//--------//--------//--------/\--------\ \--------\/--------//--------//--------//--------//--------//--------/
+* | Shift | | | | | | | | | | | | |
+* | | | | | | | | | | | | | |
+* /--------//--------//--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------//--------//--------/
+* | | | | | | | | | | | | | | | |
+* | | | | | | | | | | | | | | | |
+* \--------\\--------\\--------\\--------\\--------\\--------\\--------\ \--------\\--------\\--------\\--------\\--------\\--------\\--------\
+*
+*
+* /--------//--------//--------//--------//--------/ /--------//--------//--------//--------//--------/
+* | Ctrl | | | | | | | | | Toggle 5| |
+* | | | | | | | | | | | |
+* \--------\\--------\\--------\\--------\/--------//--------/ /--------//--------/ \--------\\--------\\--------\\--------\\--------\
+* | F1 | F2 | | | |
+* | | | | | |
+* \--------\/--------/ /--------/\--------\
+* | F3 | | |
+* | | | |
+* /--------//--------//--------/ /--------//--------//--------/
+* | SPC | Ctrl | F4 | | | | |
+* | | | | | | | |
+* \--------\\--------\\--------\ \--------\\--------\\--------\
+*
+*
**/
[EGOS]=LAYOUT_ergodox(
//left half
- KC_TRNS, KC_TRNS, KC_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_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_F1, KC_F2,
- KC_F3,
- KC_SPC, KC_LCTL, KC_F4,
+ KC_TRNS, KC_TRNS, KC_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_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F1, KC_F2,
+ KC_F3,
+ KC_SPC, KC_LCTL, KC_F4,
//right half
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, M(M_TOGGLE_5), KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, M(M_TOGGLE_5), KC_TRNS,
+ KC_TRNS, KC_TRNS,
+ KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS),
};
@@ -556,7 +556,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
-uint8_t layer = biton32(layer_state);
+uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
@@ -566,17 +566,17 @@ switch (layer) {
case SYMB:
ergodox_right_led_1_on();
-
-
+
+
break;
case MDIA:
-
+
ergodox_right_led_2_on();
-
+
break;
case NUMB:
-
-
+
+
ergodox_right_led_3_on();
break;
case EGOS:
@@ -590,4 +590,3 @@ break;
}
};
-
diff --git a/layouts/community/ergodox/osx_fr/keymap.c b/layouts/community/ergodox/osx_fr/keymap.c
index 886e54208a..22451c1a30 100644
--- a/layouts/community/ergodox/osx_fr/keymap.c
+++ b/layouts/community/ergodox/osx_fr/keymap.c
@@ -141,7 +141,7 @@ LAYOUT_ergodox(
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/osx_kinesis_pnut/keymap.c b/layouts/community/ergodox/osx_kinesis_pnut/keymap.c
index ad6ea27364..fb50a3407e 100644
--- a/layouts/community/ergodox/osx_kinesis_pnut/keymap.c
+++ b/layouts/community/ergodox/osx_kinesis_pnut/keymap.c
@@ -145,7 +145,7 @@ LAYOUT_ergodox(
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/osx_neo2/keymap.c b/layouts/community/ergodox/osx_neo2/keymap.c
index 3dbfceabc4..125cc43a8f 100644
--- a/layouts/community/ergodox/osx_neo2/keymap.c
+++ b/layouts/community/ergodox/osx_neo2/keymap.c
@@ -704,7 +704,7 @@ void matrix_init_user(void){
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/phoenix/keymap.c b/layouts/community/ergodox/phoenix/keymap.c
index a66462e3a8..4371e5f2e7 100644
--- a/layouts/community/ergodox/phoenix/keymap.c
+++ b/layouts/community/ergodox/phoenix/keymap.c
@@ -138,7 +138,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/plover/keymap.c b/layouts/community/ergodox/plover/keymap.c
index ffb869309a..7b34dde2ed 100644
--- a/layouts/community/ergodox/plover/keymap.c
+++ b/layouts/community/ergodox/plover/keymap.c
@@ -182,7 +182,7 @@ LAYOUT_ergodox(
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/qwerty_code_friendly/keymap.c b/layouts/community/ergodox/qwerty_code_friendly/keymap.c
index 6e285d5613..ed06446907 100644
--- a/layouts/community/ergodox/qwerty_code_friendly/keymap.c
+++ b/layouts/community/ergodox/qwerty_code_friendly/keymap.c
@@ -662,7 +662,7 @@ void matrix_init_user(void) {
/* Runs constantly in the background, in a loop. */
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/replicaJunction/keymap.c b/layouts/community/ergodox/replicaJunction/keymap.c
index 0c36abcf74..8bd24a1233 100644
--- a/layouts/community/ergodox/replicaJunction/keymap.c
+++ b/layouts/community/ergodox/replicaJunction/keymap.c
@@ -159,7 +159,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_MUTE,KC_F5, KC_F6, KC_F7, KC_F8, _______,
_______,KC_VOLD,KC_F1, KC_F2, KC_F3, KC_F4, _______,
_______,ooooooo,_______,_______,_______,
- _______,RESET,
+ _______,QK_BOOT,
_______,
_______,_______,KC_LALT
),
diff --git a/layouts/community/ergodox/reset_eeprom/keymap.c b/layouts/community/ergodox/reset_eeprom/keymap.c
index 83c252a9a1..726447cbd0 100644
--- a/layouts/community/ergodox/reset_eeprom/keymap.c
+++ b/layouts/community/ergodox/reset_eeprom/keymap.c
@@ -96,7 +96,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/romanzolotarev-norman-plover-osx-hjkl/keymap.c b/layouts/community/ergodox/romanzolotarev-norman-plover-osx-hjkl/keymap.c
index 819944121e..6eb319ca63 100644
--- a/layouts/community/ergodox/romanzolotarev-norman-plover-osx-hjkl/keymap.c
+++ b/layouts/community/ergodox/romanzolotarev-norman-plover-osx-hjkl/keymap.c
@@ -88,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
diff --git a/layouts/community/ergodox/romanzolotarev-norman-plover-osx/keymap.c b/layouts/community/ergodox/romanzolotarev-norman-plover-osx/keymap.c
index a0964fac77..adf420daa0 100644
--- a/layouts/community/ergodox/romanzolotarev-norman-plover-osx/keymap.c
+++ b/layouts/community/ergodox/romanzolotarev-norman-plover-osx/keymap.c
@@ -88,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
diff --git a/layouts/community/ergodox/romanzolotarev-norman-qwerty-osx/keymap.c b/layouts/community/ergodox/romanzolotarev-norman-qwerty-osx/keymap.c
index 6aca3a6d5f..cf3941ee1d 100644
--- a/layouts/community/ergodox/romanzolotarev-norman-qwerty-osx/keymap.c
+++ b/layouts/community/ergodox/romanzolotarev-norman-qwerty-osx/keymap.c
@@ -48,7 +48,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
diff --git a/layouts/community/ergodox/sethbc/keymap.c b/layouts/community/ergodox/sethbc/keymap.c
index 26d3106ec4..ea6fc465ef 100644
--- a/layouts/community/ergodox/sethbc/keymap.c
+++ b/layouts/community/ergodox/sethbc/keymap.c
@@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
// FN2
[FN2] = LAYOUT_ergodox(
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -77,7 +77,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/siroken3/keymap.c b/layouts/community/ergodox/siroken3/keymap.c
index fed8b4a0c8..dd5125d20e 100644
--- a/layouts/community/ergodox/siroken3/keymap.c
+++ b/layouts/community/ergodox/siroken3/keymap.c
@@ -141,7 +141,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/sneako/keymap.c b/layouts/community/ergodox/sneako/keymap.c
index 9d3cdd5a11..dffe797ab0 100644
--- a/layouts/community/ergodox/sneako/keymap.c
+++ b/layouts/community/ergodox/sneako/keymap.c
@@ -141,7 +141,7 @@ LAYOUT_ergodox(
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/software_neo2/keymap.c b/layouts/community/ergodox/software_neo2/keymap.c
index 5f600a5ab5..c191a034f2 100644
--- a/layouts/community/ergodox/software_neo2/keymap.c
+++ b/layouts/community/ergodox/software_neo2/keymap.c
@@ -98,7 +98,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/swedish-lindhe/keymap.c b/layouts/community/ergodox/swedish-lindhe/keymap.c
index 368e216cdc..6b8ff9d9c8 100644
--- a/layouts/community/ergodox/swedish-lindhe/keymap.c
+++ b/layouts/community/ergodox/swedish-lindhe/keymap.c
@@ -105,7 +105,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS, KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_7, KC_8, KC_9, KC_PPLS, KC_TRNS,
KC_TRNS, KC_4, KC_5, KC_6, KC_PPLS, KC_TRNS,
- RESET, KC_TRNS, KC_1, KC_2, KC_3, KC_PENT, KC_TRNS,
+ QK_BOOT, KC_TRNS, KC_1, KC_2, KC_3, KC_PENT, KC_TRNS,
KC_0, KC_COMM, KC_DOT, KC_PENT, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
@@ -162,7 +162,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/swedish/keymap.c b/layouts/community/ergodox/swedish/keymap.c
index 90218aa886..5e2d47de57 100644
--- a/layouts/community/ergodox/swedish/keymap.c
+++ b/layouts/community/ergodox/swedish/keymap.c
@@ -203,7 +203,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/swissgerman/keymap.c b/layouts/community/ergodox/swissgerman/keymap.c
index 8ba9582934..9677be43b9 100644
--- a/layouts/community/ergodox/swissgerman/keymap.c
+++ b/layouts/community/ergodox/swissgerman/keymap.c
@@ -132,7 +132,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 2: Media and mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
- * | RESET | | | | | | | | | | | | | | RESET |
+ * | QK_BOOT | | | | | | | | | | | | | | QK_BOOT |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | | | MsUp | | | | | | |H_UL | |H_OL | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
@@ -152,7 +152,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
// MEDIA AND MOUSE
[MDIA] = LAYOUT_ergodox(
- RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ QK_BOOT, 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_TRNS,
KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, HTML_CODE, KC_TRNS, HTML_BR, KC_TRNS,
@@ -161,7 +161,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS,
KC_ENT, KC_TRNS, KC_TRNS,
// right hand
- 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, QK_BOOT,
KC_TRNS, KC_TRNS, HTML_UL, KC_TRNS, HTML_OL, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, HTML_LI, KC_TRNS, KC_MPLY,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS,
@@ -222,7 +222,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
switch (layer) {
// TODO: Make this relevant to the ErgoDox EZ.
diff --git a/layouts/community/ergodox/techtomas/keymap.c b/layouts/community/ergodox/techtomas/keymap.c
index 742eca03a4..bdbb50be42 100644
--- a/layouts/community/ergodox/techtomas/keymap.c
+++ b/layouts/community/ergodox/techtomas/keymap.c
@@ -180,7 +180,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/tkuichooseyou/keymap.c b/layouts/community/ergodox/tkuichooseyou/keymap.c
index ea6c8f259f..08f1cfc9ab 100644
--- a/layouts/community/ergodox/tkuichooseyou/keymap.c
+++ b/layouts/community/ergodox/tkuichooseyou/keymap.c
@@ -138,7 +138,7 @@ LAYOUT_ergodox(
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/tonyabra_osx/keymap.c b/layouts/community/ergodox/tonyabra_osx/keymap.c
index 741a6396e8..9b8048dda3 100644
--- a/layouts/community/ergodox/tonyabra_osx/keymap.c
+++ b/layouts/community/ergodox/tonyabra_osx/keymap.c
@@ -138,7 +138,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/townk_osx/keymap.c b/layouts/community/ergodox/townk_osx/keymap.c
index 6799ad7460..c79d74d6eb 100644
--- a/layouts/community/ergodox/townk_osx/keymap.c
+++ b/layouts/community/ergodox/townk_osx/keymap.c
@@ -229,7 +229,7 @@ uint8_t current_layer = BASE;
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_led_all_off();
ergodox_led_all_set(LED_BRIGHTNESS_LO);
diff --git a/layouts/community/ergodox/twentylives_dvorak_with_hebrew/keymap.c b/layouts/community/ergodox/twentylives_dvorak_with_hebrew/keymap.c
index 4b5181a70d..12548ae0ea 100644
--- a/layouts/community/ergodox/twentylives_dvorak_with_hebrew/keymap.c
+++ b/layouts/community/ergodox/twentylives_dvorak_with_hebrew/keymap.c
@@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_DELETE, KC_TRNS,
KC_LGUI,
KC_BSPACE,CTL_T(KC_NO),KC_LALT,
-
+
KC_TILD, KC_6, KC_7, KC_8, KC_9, KC_0, KC_EQUAL,
KC_TRNS, KC_F, KC_G, KC_C, KC_R, KC_L, KC_SLASH,
KC_D, KC_H, KC_T, KC_N, KC_S, KC_MINUS,
@@ -77,7 +77,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_Y, KC_U, KC_E, KC_O, KC_P, KC_TRNS,
KC_H, KC_J, KC_K, KC_L, KC_SCOLON, KC_TRNS,
@@ -110,9 +110,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `--------------------' `--------------------'
*/
[2] = LAYOUT_ergodox(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_UP, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_MS_LEFT, KC_MS_DOWN, KC_MS_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, KC_TRNS,
@@ -120,12 +120,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
- KC_F11, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_F11, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS,
KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_MS_BTN1, KC_MS_BTN2, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
- KC_TRNS,
+ KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
@@ -154,19 +154,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Left Hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS,
KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS,
// Right Hand
- KC_TRNS, KC_TRNS, KC_LOCKING_NUM, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LOCKING_NUM, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_TRNS,
- KC_TRNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, KC_TRNS,
+ KC_TRNS, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_KP_1, KC_KP_2, KC_KP_3, KC_ENTER, KC_TRNS,
KC_KP_0, KC_KP_0, KC_KP_DOT, KC_ENTER, KC_TRNS,
- KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
@@ -175,7 +175,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/win10_writers-block/keymap.c b/layouts/community/ergodox/win10_writers-block/keymap.c
index 05adaed759..443e403b18 100644
--- a/layouts/community/ergodox/win10_writers-block/keymap.c
+++ b/layouts/community/ergodox/win10_writers-block/keymap.c
@@ -4,8 +4,8 @@
#include "version.h"
#include "wait.h"
-#define BASE 0 // default layer - helpful for writing in Office-style word processors.
-#define SYMB 1 // symbol layer - NumPad, etc. - same as Ergodox EZ default but no EEPROM or Version key
+#define BASE 0 // default layer - helpful for writing in Office-style word processors.
+#define SYMB 1 // symbol layer - NumPad, etc. - same as Ergodox EZ default but no EEPROM or Version key
#define RIMW 2 // rimworld layer - made for the game RimWorld, by Tynan Sylvester | feel free to remap for your favorite game!
#define MDIA 3 // media layer - mouse and music - close to Ergodox EZ default media layer
@@ -27,19 +27,19 @@ enum {
};
void cake_count (qk_tap_dance_state_t *state, void *user_data) {
- if (state->count == 2) {
+ if (state->count == 2) {
layer_on (SYMB); //define double tap here
layer_off (MDIA);
- }
- else {
+ }
+ else {
layer_off (SYMB); //define single tap or hold here
layer_off (MDIA);
}
- if (state->count == 3) {
+ if (state->count == 3) {
layer_on (RIMW); //define triple tap here
layer_off (MDIA);
- }
- else {
+ }
+ else {
layer_off (RIMW); //define single tap or hold here
layer_off (MDIA);
reset_tap_dance (state);
@@ -83,7 +83,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,--------------------------------------------------. ,--------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 7 | 8 | 9 | 0 | - | = |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
- * | F12/L1 | Q | W | E | R | T | {/[ | |TD(L0 | Y | U | I | O | P | \ |
+ * | F12/L1 | Q | W | E | R | T | {/[ | |TD(L0 | Y | U | I | O | P | \ |
* |--------+------+------+------+------+------| | |L1 L2)|------+------+------+------+------+--------|
* |Caps/Win| A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
* |--------+------+------+------+------+------| }/] | TD(ctrl|------+------+------+------+------+--------|
@@ -163,8 +163,8 @@ LT(SYMB, KC_F12), KC_Q, KC_W, KC_E, KC_R, KC_T,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
-),
-
+),
+
/* Keymap 2: RimWorld Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
@@ -186,7 +186,7 @@ LT(SYMB, KC_F12), KC_Q, KC_W, KC_E, KC_R, KC_T,
* | | | Q | | | | |
* `--------------------' `--------------------'
*/
-// RIMWORLD
+// RIMWORLD
[RIMW] = LAYOUT_ergodox(
// left hand
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
@@ -300,7 +300,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
@@ -315,7 +315,7 @@ void matrix_scan_user(void) {
break;
case 3:
ergodox_right_led_3_on();
- break;
+ break;
default:
// none
break;
diff --git a/layouts/community/ergodox/xyverz/keymap.c b/layouts/community/ergodox/xyverz/keymap.c
index c77920bb13..cb23782330 100644
--- a/layouts/community/ergodox/xyverz/keymap.c
+++ b/layouts/community/ergodox/xyverz/keymap.c
@@ -1,6 +1,6 @@
/*
* About this keymap:
- *
+ *
* The Dvorak layout shown here stems from my early Kinesis years, using the Contour PS/2 with a Dvorak
* software layout. Because of this, the RBRC and LBRC were on opposite sides of the board in the corner
* keys. When I originally set up this keymap, I'd decided to continue using this layout with my ErgoDox.
@@ -14,7 +14,7 @@
* layouts.
*
* What's New:
- *
+ *
* I've overhauled this Dvorak layout a bit to more match what I've got on my other Ortho boards. For
* some keys, I'm moving away from my old Kinesis keymap and adding the brackets and braces to the
* inner column vertical keys. I figure this will help me have better ease of use. In this update, I
@@ -198,7 +198,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_MEDIA] = LAYOUT_ergodox(
// left hand
- KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, RESET,
+ KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, QK_BOOT,
_______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______,
KC_CAPS, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, KC_MSEL, _______,
@@ -246,7 +246,7 @@ void matrix_init_user(void) {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/ergodox/zweihander-macos/keymap.c b/layouts/community/ergodox/zweihander-macos/keymap.c
index b2ddeb0d6b..0aecc24e67 100644
--- a/layouts/community/ergodox/zweihander-macos/keymap.c
+++ b/layouts/community/ergodox/zweihander-macos/keymap.c
@@ -140,7 +140,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
+ uint8_t layer = get_highest_layer(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
diff --git a/layouts/community/numpad_5x6/bjohnson/keymap.c b/layouts/community/numpad_5x6/bjohnson/keymap.c
index 4b15ccdfb9..45b339f7ff 100644
--- a/layouts/community/numpad_5x6/bjohnson/keymap.c
+++ b/layouts/community/numpad_5x6/bjohnson/keymap.c
@@ -11,7 +11,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_F9, KC_F10, KC_P0, KC_PDOT, KC_PENT
),
[1] = LAYOUT_numpad_5x6(
- RGB_TOG, _______, _______, _______, _______, RESET,
+ RGB_TOG, _______, _______, _______, _______, QK_BOOT,
RGB_MOD, RGB_RMOD, _______, _______, _______,
RGB_HUI, RGB_HUD, _______, _______, _______, _______,
RGB_SAI, RGB_SAD, _______, _______, _______,
diff --git a/layouts/community/ortho_3x10/bbaserdem/config.h b/layouts/community/ortho_3x10/bbaserdem/config.h
new file mode 100644
index 0000000000..d781d34478
--- /dev/null
+++ b/layouts/community/ortho_3x10/bbaserdem/config.h
@@ -0,0 +1,21 @@
+/*
+Copyright 2019 Batuhan BaÅŸerdem <baserdem.batuhan@gmail.com> @bbaserdem
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#pragma once
+
+// Gherkin specific
+#ifdef KEYBOARD_40percentclub_gherkin
+ #define MUSIC_MAP
+ #define RGB_DI_PIN F6
+ #define DRIVER_LED_TOTAL 10
+#endif
diff --git a/layouts/community/ortho_3x10/bbaserdem/keymap.c b/layouts/community/ortho_3x10/bbaserdem/keymap.c
new file mode 100644
index 0000000000..4cc1a25caf
--- /dev/null
+++ b/layouts/community/ortho_3x10/bbaserdem/keymap.c
@@ -0,0 +1,98 @@
+/*
+Copyright 2019 Batuhan BaÅŸerdem <baserdem.batuhan@gmail.com> @bbaserdem
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received 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 "bbaserdem.h"
+
+#ifdef KEYBOARD_40percentclub_gherkin
+ // Flip it
+ #undef LAYOUT_ortho_3x10
+ #define LAYOUT_ortho_3x10( \
+ 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 \
+ ) { \
+ { K45, K44, K43, K42, K41, K40 }, \
+ { K35, K34, K33, K32, K31, K30 }, \
+ { K25, K24, K23, K22, K21, K20 }, \
+ { K15, K14, K13, K12, K11, K10 }, \
+ { K05, K04, K03, K02, K01, K00 } \
+ }
+#endif
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Game pad
+ * ,-----------------------------------------------------------.
+ * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | F1 | F2 | F3 |
+ * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
+ * |AdjsL| Q | W | E | R | Ent | Tab | Ctr | |^| | Alt |
+ * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
+ * |Music| A | S | D | F | Spc |Shift| <-- | |v| | --> |
+ * `-----------------------------------------------------------'
+ */
+ [_BASE] = LAYOUT_ortho_3x10(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F1, KC_F2, KC_F3,
+ MO(_MEDI), KC_Q, KC_W, KC_E, KC_R, KC_ENT, KC_TAB, KC_LCTL,KC_UP, KC_LALT,
+ MU_TOG, KC_A, KC_S, KC_D, KC_F, KC_SPC, KC_LSFT,KC_LEFT,KC_DOWN,KC_RGHT
+ ),
+/* Adjust
+ * ,-----------------------------------------------------------.
+ * | Esc |RGBTg|HueUp|HueDn|SatUp|SatDn|ValUp|ValDn|ModNx|ModPr|
+ * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
+ * | |BltTg|Breth|BriUp|BriDn| | |Veloc|SpdUp|SpdDn|
+ * |-----+-----+-----+-----+-----+-----+-----+-----+-----+-----|
+ * |Music| | | | | | | |EEprm|Reset|
+ * `-----------------------------------------------------------'
+ */
+ [_MEDI] = LAYOUT_ortho_3x10(
+ CK_TOGG,RGB_TOG,RGB_HUI,RGB_HUD,RGB_SAI,RGB_SAD,RGB_VAI,RGB_VAD,RGB_MOD,RGB_RMOD,
+ _______,BL_TOGG,BL_BRTG,BL_INC, BL_DEC, XXXXXXX,XXXXXXX,VLK_TOG,RGB_SPI,RGB_SPD,
+ AU_TOG, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,EEP_RST,QK_BOOT
+ ),
+ [_MUSI] = LAYOUT_ortho_3x10_wrapper(
+ MU_FAST,_MU_08_,MU_REC,
+ MU_SLOW,_MU_08_,MU_STOP,
+ MU_TOG, _MU_08_,MU_PLAY
+ ),
+};
+
+// Music map, guitar like.
+#ifdef AUDIO_ENABLE
+const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_ortho_3x10(
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
+);
+#endif
+
+// RGB matrix code
+#ifdef RGB_MATRIX_ENABLE
+// Gherkin
+#if defined(KEYBOARD_40percentclub_gherkin)
+led_config_t g_led_config = {
+ { // Key Matrix to LED Index
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED},
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED},
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED},
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED},
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED}
+}, { // LED Index to Physical Position
+ {224, 0}, {168, 0}, {112, 0}, { 56, 0}, { 0, 0},
+ { 0, 64}, { 56, 64}, {112, 64}, {168, 64}, {224, 64},
+}, { // LED Index to Flag
+ 2,2,2,2,2,2,2,2,2,2
+}};
+// Disable layer switching
+bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {return true;}
+#endif // Gherkin
+#endif // RGB Matrix
diff --git a/layouts/community/ortho_3x10/bbaserdem/readme.md b/layouts/community/ortho_3x10/bbaserdem/readme.md
new file mode 100644
index 0000000000..3681eb840a
--- /dev/null
+++ b/layouts/community/ortho_3x10/bbaserdem/readme.md
@@ -0,0 +1,19 @@
+This folder contains my [3x10\_ortho](../../../default/ortho_3x10) board layouts
+Check out the [user readme](../../../../users/bbaserdem/readme.md) for more info.
+
+# Gherkin
+
+I use [Gherkin](../../../../keyboards/40percentclub/gherkin/readme.md).
+
+It is used as a game pad, and key layout is inspired by spare keys I had lying around.
+The firmware is very simple, and only includes one layer keymap, and RGB effects.
+
+## Status
+
+* [x] Layout adapted
+* [x] Tested build
+* [x] Confirmed on board
+
+## Build
+
+Build command: `CFLAGS="-Wno-error=deprecated" <FILL-IN-LATER>`
diff --git a/layouts/community/ortho_3x10/bbaserdem/rules.mk b/layouts/community/ortho_3x10/bbaserdem/rules.mk
new file mode 100755
index 0000000000..7232f6969d
--- /dev/null
+++ b/layouts/community/ortho_3x10/bbaserdem/rules.mk
@@ -0,0 +1,23 @@
+# Copyright 2019 Batuhan BaÅŸerdem <baserdem.batuhan@gmail.com> @bbaserdem
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# 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 small layout is a macro-pad; does not need userspace
+
+# Gherkin has both RGB strip and LED lights
+ifneq (,$(findstring 40percentclub/gherkin,$(KEYBOARD)))
+ CONVERT_TO_PROTON_C = yes
+ RGB_MATRIX_ENABLE = yes
+ RGB_MATRIX_DRIVER = WS2812
+ AUDIO_ENABLE = yes
+ BACKLIGHT_ENABLE = yes
+ VELOCIKEY_ENABLE = yes
+endif
diff --git a/layouts/community/ortho_3x10/wanleg/readme.md b/layouts/community/ortho_3x10/wanleg/readme.md
index 255e19c2a4..17d2277f82 100644
--- a/layouts/community/ortho_3x10/wanleg/readme.md
+++ b/layouts/community/ortho_3x10/wanleg/readme.md
@@ -14,7 +14,7 @@ Q//Esc | KC_Q | escape | *null*
2. If you have never flashed your ProMicro with QMK before, you will need to short the RST pin to GND to put it into bootloader mode (you only have 7 seconds to flash once it enters bootloader mode). You may need to touch the RST pin to GND **TWICE** in quick succession if it doesn't flash with just one touch.
3. Once connected to your computer, you should be able to flash using
`make gherkin:wanleg:avrdude`
-4. Once you've been able to successfully flash the ProMicro, you should be able to use the `RESET` key for future flashes instead of shorting the RST pin.
+4. Once you've been able to successfully flash the ProMicro, you should be able to use the `QK_BOOT` key for future flashes instead of shorting the RST pin.
## Linux
### First Flash with QMK
@@ -34,8 +34,8 @@ If you miss the 7 second window, the ProMicro will leave bootloader mode and the
### Subsequent Flashes with QMK
1. Re-flashing is similar to the initial flash procedure. Plug in your keyboard, open a terminal and run
`ls /dev/tty*`
-2. Next, hit the `RESET` key on your keyboard and re-run the `ls /dev/tty*` command to find your keyboard's serial port.
-3. Flash your keyboard with the avrdude command you used for the initial flash within 7 seconds after hitting `RESET`.
+2. Next, hit the `QK_BOOT` key on your keyboard and re-run the `ls /dev/tty*` command to find your keyboard's serial port.
+3. Flash your keyboard with the avrdude command you used for the initial flash within 7 seconds after hitting `QK_BOOT`.
# ProMicro Bootloader Replacement (Caterina to QMK DFU)
If you have an Arduino (or clone), you can replace the bootloader for a few extra features (e.g. no more 7 second "flash window", simplified Linux flashing, blinking LED when the ProMicro is in bootloader mode, ability to exit bootloader mode without unplugging your keyboard, among others).
@@ -61,7 +61,7 @@ The instructions below have been adapted from https://www.reddit.com/r/olkb/comm
#define QMK_LED B0
```
The `QMK_ESC_` lines define where the bootloader escape key is. Refer to the `MATRIX_ROW_PINS` and `MATRIX_COL_PINS` lines in your keyboard's `config.h` to choose your preferred key.
-You hit the bootloader escape key to exit bootloader mode after you've hit the RESET key to enter bootloader mode (e.g. if you change your mind and don't want to flash just then).
+You hit the bootloader escape key to exit bootloader mode after you've hit the QK_BOOT key to enter bootloader mode (e.g. if you change your mind and don't want to flash just then).
On a Gherkin, B4/F7 corresponds to the top-left corner key.
`B0` is an indicator light on one of the ProMicro's onboard LEDs. With QMK DFU, it will flash to indicate the ProMicro is in bootloader mode.
You can add `#define QMK_SPEAKER C6` if you have a speaker hooked up to pin C6. The Gherkin PCB already uses pin C6 in its switch layout, so you cannot use a speaker on a standard Gherkin.
diff --git a/layouts/community/ortho_4x10/manna-harbour_miryoku/config.h b/layouts/community/ortho_4x10/manna-harbour_miryoku/config.h
index b1e9526f99..99f40f2dc8 100644
--- a/layouts/community/ortho_4x10/manna-harbour_miryoku/config.h
+++ b/layouts/community/ortho_4x10/manna-harbour_miryoku/config.h
@@ -1,6 +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/layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/layouts/community/ortho_4x12/ajp10304/keymap.c b/layouts/community/ortho_4x12/ajp10304/keymap.c
index 7f817e21c1..6652d003c2 100644
--- a/layouts/community/ortho_4x12/ajp10304/keymap.c
+++ b/layouts/community/ortho_4x12/ajp10304/keymap.c
@@ -121,7 +121,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `------------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- M_CUSTOM, RESET, QWERTY, BL_ON, BL_OFF, DYN_REC_START1, DYN_REC_START2, _______, _______, _______, _______, KC_DEL ,
+ M_CUSTOM, QK_BOOT, 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, _______, 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/bakingpy/keymap.c b/layouts/community/ortho_4x12/bakingpy/keymap.c
index eb3b420ee6..9638ee25b8 100644
--- a/layouts/community/ortho_4x12/bakingpy/keymap.c
+++ b/layouts/community/ortho_4x12/bakingpy/keymap.c
@@ -138,7 +138,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \
+ _______, QK_BOOT , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, MAC, WINDOWS, TESTMODE,_______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/layouts/community/ortho_4x12/bbaserdem/config.h b/layouts/community/ortho_4x12/bbaserdem/config.h
new file mode 100755
index 0000000000..fb3ec1371b
--- /dev/null
+++ b/layouts/community/ortho_4x12/bbaserdem/config.h
@@ -0,0 +1,26 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+// Code pertaining to planck rev6
+#ifdef KEYBOARD_planck_rev6
+ // Encoder I use;
+# ifdef ENCODER_RESOLUTION
+# undef ENCODER_RESOLUTION
+# endif
+# define ENCODER_RESOLUTION 2
+#endif
diff --git a/layouts/community/ortho_4x12/bbaserdem/keymap.c b/layouts/community/ortho_4x12/bbaserdem/keymap.c
new file mode 100755
index 0000000000..91ddc61764
--- /dev/null
+++ b/layouts/community/ortho_4x12/bbaserdem/keymap.c
@@ -0,0 +1,88 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "bbaserdem.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ // Base layer
+ [_BASE] = LAYOUT_ortho_4x12_wrapper(
+ _BL1_5_,_BL1_1_,_BR1_1_,_BR1_5_,
+ _BL2_5_,_BL2_1_,_BR2_1_,_BR2_5_,
+ _BL3_5_,_BL3_1_,_BR3_1_,_BR3_5_,
+ BB_ENC0,KC_DOWN,KC_UP, _BL4_3_,_BR4_3_,KC_LEFT,KC_RGHT,RGB_TOG
+ ),
+ // Extra characters overlay
+ [_CHAR] = LAYOUT_ortho_4x12_wrapper(
+ _CL1_5_,xxx2xxx,_CR1_5_,
+ _CL2_5_,xxx2xxx,_CR2_5_,
+ _CL3_5_,xxx2xxx,_CR3_5_,
+ ___3___,_CL4_3_,_CR4_3_,___3___
+ ),
+ // Game layer: left_half
+ [_GAME] = LAYOUT_ortho_4x12_wrapper(
+ _GA1_5_,_GA1_1_,___6___,
+ _GA2_5_,_GA2_1_,___6___,
+ _GA3_5_,_GA3_1_,___6___,
+ ___3___,_GA4_3_,___6___
+ ),
+ // Media layer: right_half
+ [_MEDI] = LAYOUT_ortho_4x12_wrapper(
+ ___6___,xxx1xxx,_ME1_5_,
+ ___6___,xxx1xxx,_ME2_5_,
+ ___6___,xxx1xxx,_ME3_5_,
+ ___6___,_ME4_3_,___3___
+ ),
+ // Navigation layer: right_half
+ [_NAVI] = LAYOUT_ortho_4x12_wrapper(
+ ___6___,xxx1xxx,_NA1_5_,
+ ___6___,xxx1xxx,_NA2_5_,
+ ___6___,xxx1xxx,_NA3_5_,
+ ___6___,_NA4_3_,___3___
+ ),
+ // Symbol layer: right_half
+ [_SYMB] = LAYOUT_ortho_4x12_wrapper(
+ ___6___,xxx1xxx,_SY1_5_,
+ ___6___,xxx1xxx,_SY2_5_,
+ ___6___,xxx1xxx,_SY3_5_,
+ ___6___,_SY4_3_,___3___
+ ),
+ // Number layer: left_half
+ [_NUMB] = LAYOUT_ortho_4x12_wrapper(
+ xxx1xxx,_NU1_5_,___6___,
+ xxx1xxx,_NU2_5_,___6___,
+ xxx1xxx,_NU3_5_,___6___,
+ ___3___,_NU4_3_,___6___
+ ),
+ // Function layer: left_half
+ [_FUNC] = LAYOUT_ortho_4x12_wrapper(
+ _FU1_5_,xxx1xxx,___6___,
+ _FU2_5_,xxx1xxx,___6___,
+ _FU3_5_,xxx1xxx,___6___,
+ ___3___,_FU4_3_,___6___
+ ),
+ // Mouse layer: left_half
+ [_MOUS] = LAYOUT_ortho_4x12_wrapper(
+ _MO1_5_,xxx1xxx,___6___,
+ _MO2_5_,xxx1xxx,___6___,
+ _MO3_5_,xxx1xxx,___6___,
+ ___3___,_MO4_3_,___6___
+ ),
+ // Music layer: everything
+ [_MUSI] = LAYOUT_ortho_4x12_wrapper(
+ _MU_12_,_MU_12_,_MU_12_,
+ ___1___,_MU_02_,_MUL_3_,_MUR_3_,_MU_02_,___1___)
+};
diff --git a/layouts/community/ortho_4x12/bbaserdem/readme.md b/layouts/community/ortho_4x12/bbaserdem/readme.md
new file mode 100644
index 0000000000..5eb6548574
--- /dev/null
+++ b/layouts/community/ortho_4x12/bbaserdem/readme.md
@@ -0,0 +1,12 @@
+This folder contains my [4x12\_ortho](../../../default/ortho_4x12) board layouts
+Check out the [user readme](../../../../users/bbaserdem/readme.md) for more info.
+
+# Planck Light
+
+I use a couple [planck](../../../../keyboards/planck/readme.md) keyboards.
+To sell soon; don't use them anymore, but will keep the light version.
+
+# JJ40
+
+A planck rev4 replacement; for my acrylic planck case which used to host a now
+defunct rev4.
diff --git a/layouts/community/ortho_4x12/bbaserdem/rules.mk b/layouts/community/ortho_4x12/bbaserdem/rules.mk
new file mode 100755
index 0000000000..b3ce684315
--- /dev/null
+++ b/layouts/community/ortho_4x12/bbaserdem/rules.mk
@@ -0,0 +1,26 @@
+
+# Copyright 2021 Batuhan BaÅŸerdem
+# <baserdem.batuhan@gmail.com> @bbaserdem
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Planck rev6 has both RGBLIGHT and RGB_MATRIX enabled
+ifneq (,$(findstring planck/rev6,$(KEYBOARD)))
+ RGB_MATRIX_ENABLE = yes
+ RGBLIGHT_ENABLE = no
+endif
+# JJ40 here
+ifneq (,$(findstring jj40,$(KEYBOARD)))
+ RGB_MATRIX_ENABLE = yes
+endif
diff --git a/layouts/community/ortho_4x12/bifbofii/keymap.c b/layouts/community/ortho_4x12/bifbofii/keymap.c
index 6ce39a4a38..6d24fc14cf 100644
--- a/layouts/community/ortho_4x12/bifbofii/keymap.c
+++ b/layouts/community/ortho_4x12/bifbofii/keymap.c
@@ -158,7 +158,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
* | 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 |QK_BOOT| XXX | XXX | XXX | XXX | XXX | XXX |
* +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
* | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX | XXX |
* +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
@@ -166,7 +166,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[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, QK_BOOT, 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
index e077ffba28..0d17f3a07e 100644
--- a/layouts/community/ortho_4x12/bifbofii/readme.md
+++ b/layouts/community/ortho_4x12/bifbofii/readme.md
@@ -82,7 +82,7 @@ Holding the Space Bar switches to the Function layer.
+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
| 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 |QK_BOOT| 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/brandonschlack/keymap.c b/layouts/community/ortho_4x12/brandonschlack/keymap.c
index 4877a0b446..07ba5e167c 100644
--- a/layouts/community/ortho_4x12/brandonschlack/keymap.c
+++ b/layouts/community/ortho_4x12/brandonschlack/keymap.c
@@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Adjust (Lower + Raise) */
[_ADJUST] = LAYOUT_ortho_4x12( \
// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────â”
- QM_MAKE, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, MC_SLPD, \
+ QM_MAKE, QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, MC_SLPD, \
// ├────────┼────────┼────────┼────────┼────────┼────────┴────────┼────────┼────────┼────────┼────────┼────────┤
QM_FLSH, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, \
// ├────────┼────────┼────────┼────────┼────────┼────────┴────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/layouts/community/ortho_4x12/bredfield/keymap.c b/layouts/community/ortho_4x12/bredfield/keymap.c
index 78fa8c89f1..af704ca398 100644
--- a/layouts/community/ortho_4x12/bredfield/keymap.c
+++ b/layouts/community/ortho_4x12/bredfield/keymap.c
@@ -157,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keyboard
* ,--------------------------------------------------------------------------------+--------+-----------------.
- * | | | | | | | | | | | | RESET |
+ * | | | | | | | | | | | | QK_BOOT |
* |--------+--------+--------+--------+--------+-----------------+--------+--------+--------+--------+--------|
* | | | | | | | | | | | | DEBUG |
* |--------+--------+--------+--------+--------+-----------------+--------+--------------------------+--------|
@@ -167,7 +167,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------------------------------'
*/
[_KEYBOARD_LAYER] = LAYOUT_ortho_4x12(
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RESET,
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DEBUG,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
_______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______
diff --git a/layouts/community/ortho_4x12/buswerks/keymap.c b/layouts/community/ortho_4x12/buswerks/keymap.c
index 455db2a8a5..df0f2c6a0f 100644
--- a/layouts/community/ortho_4x12/buswerks/keymap.c
+++ b/layouts/community/ortho_4x12/buswerks/keymap.c
@@ -82,7 +82,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = LAYOUT_ortho_4x12(
- _______, RESET, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL ,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, GAME, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/ortho_4x12/colemak_mod_dh_wide/keymap.c b/layouts/community/ortho_4x12/colemak_mod_dh_wide/keymap.c
index c8da7f589f..b4df69cf40 100644
--- a/layouts/community/ortho_4x12/colemak_mod_dh_wide/keymap.c
+++ b/layouts/community/ortho_4x12/colemak_mod_dh_wide/keymap.c
@@ -88,7 +88,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/layouts/community/ortho_4x12/crs/keymap.c b/layouts/community/ortho_4x12/crs/keymap.c
index 2ec2ffba9f..e0d553362c 100644
--- a/layouts/community/ortho_4x12/crs/keymap.c
+++ b/layouts/community/ortho_4x12/crs/keymap.c
@@ -158,7 +158,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
- LALT(LCTL(KC_INS)), QWERTY, _______, _______, RESET, M(0), _______, _______, _______, _______, PLOVER, LALT(LCTL(KC_DEL)), \
+ LALT(LCTL(KC_INS)), QWERTY, _______, _______, QK_BOOT, M(0), _______, _______, _______, _______, PLOVER, LALT(LCTL(KC_DEL)), \
KC_CAPS, ARROW, _______, AU_ON, AU_OFF, GAME, AG_SWAP, AG_NORM, KC_PSCR, KC_SLCK, KC_PAUS, _______, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, KC_MPRV, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, \
BACKLIT, _______, _______, _______, _______, KC_MPLY, KC_MPLY, _______, BL_TOGG, BL_DEC , BL_INC , BL_STEP \
diff --git a/layouts/community/ortho_4x12/ddeklerk/keymap.c b/layouts/community/ortho_4x12/ddeklerk/keymap.c
deleted file mode 100644
index ec36a50616..0000000000
--- a/layouts/community/ortho_4x12/ddeklerk/keymap.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* 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
-
-enum layers {
- _BASE,
- _GAME,
- _FN1,
- _FN2,
- _FN3,
- _ADJUST
-};
-
-#define BASE DF(_BASE)
-#define GAME DF(_GAME)
-#define FN1 LT(_FN1, KC_BSPC)
-#define FN2 LT(_FN2, KC_ENT)
-#define FN3SPC LT(_FN3, KC_SPC)
-
-#define CTRLESC MT(MOD_LCTL, KC_ESC)
-#define CTRLMIN MT(MOD_RCTL, KC_MINS)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = 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, XXXXXXX,
- CTRLESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, CTRLMIN,
- KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_RSFT,
- XXXXXXX, XXXXXXX, XXXXXXX, KC_LGUI, FN1, FN3SPC, FN3SPC, FN2, KC_RALT, XXXXXXX, XXXXXXX, XXXXXXX
- ),
- [_GAME] = LAYOUT_ortho_4x12(
- KC_3, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- KC_2, CTRLESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_BSPC,
- KC_1, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_UP, KC_ENT,
- XXXXXXX, KC_LALT, XXXXXXX, XXXXXXX, _______, KC_SPC, XXXXXXX, _______, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT
- ),
- [_FN1] = 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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PIPE,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
- [_FN2] = LAYOUT_ortho_4x12(
- KC_GRV, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_LCBR, KC_RCBR, KC_QUES, KC_PLUS, _______,
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_LBRC, KC_RBRC, KC_SLSH, KC_EQL, KC_BSLS,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
- [_FN3] = LAYOUT_ortho_4x12(
- _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_BSPC, _______,
- _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
- _______, KC_APP, _______, _______, _______, _______, KC_PGDN, KC_DEL, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
- ),
- [_ADJUST] = LAYOUT_ortho_4x12(
- XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, GAME, BASE, XXXXXXX, 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, _FN1, _FN2, _ADJUST);
-};
diff --git a/layouts/community/ortho_4x12/ergodoxish/keymap.c b/layouts/community/ortho_4x12/ergodoxish/keymap.c
index 7c844c6b3a..3e6dc1a42b 100644
--- a/layouts/community/ortho_4x12/ergodoxish/keymap.c
+++ b/layouts/community/ortho_4x12/ergodoxish/keymap.c
@@ -128,7 +128,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12( \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
diff --git a/layouts/community/ortho_4x12/greatwizard/keymap.c b/layouts/community/ortho_4x12/greatwizard/keymap.c
index a895aaf942..1796254c16 100644
--- a/layouts/community/ortho_4x12/greatwizard/keymap.c
+++ b/layouts/community/ortho_4x12/greatwizard/keymap.c
@@ -166,7 +166,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_ortho_4x12_wrapper(
KC_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, RESET, EEP_RST, _______, _______, _______, GAME, QWERTY, WORKMAN, COLEMAK, DVORAK, _______,
+ KC_CAPS, QK_BOOT, EEP_RST, _______, _______, _______, GAME, QWERTY, WORKMAN, COLEMAK, DVORAK, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
@@ -191,7 +191,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* GIT
* ,-----------------------------------------------------------------------------------.
- * | |CHRPCK| SHOW |REBASE|RESET | TAG | | PULL | INIT |REMOTE| PUSH | |
+ * | |CHRPCK| SHOW |REBASE|QK_BOOT | TAG | | PULL | INIT |REMOTE| PUSH | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | ADD |STATUS| DIFF |FETCH | GREP |STASH | |CHECKT| LOG | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
diff --git a/layouts/community/ortho_4x12/jackhumbert/keymap.c b/layouts/community/ortho_4x12/jackhumbert/keymap.c
index 08abf78d14..ed637b7c30 100644
--- a/layouts/community/ortho_4x12/jackhumbert/keymap.c
+++ b/layouts/community/ortho_4x12/jackhumbert/keymap.c
@@ -118,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______,
+ _______, QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______,
_______, XXXXXXX, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, XXXXXXX, XXXXXXX, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/ortho_4x12/jotix/config.h b/layouts/community/ortho_4x12/jotix/config.h
deleted file mode 100644
index 9b2f4fb64d..0000000000
--- a/layouts/community/ortho_4x12/jotix/config.h
+++ /dev/null
@@ -1,4 +0,0 @@
-// jotix ortho_4x12_layout config.h
-
-#define TAPPING_TOGGLE 2
-#define TAPPING_TERM 175 \ No newline at end of file
diff --git a/layouts/community/ortho_4x12/jotix/keymap.c b/layouts/community/ortho_4x12/jotix/keymap.c
index 9d208f0a7a..ffffbe75d2 100644
--- a/layouts/community/ortho_4x12/jotix/keymap.c
+++ b/layouts/community/ortho_4x12/jotix/keymap.c
@@ -2,16 +2,17 @@
enum layers {
_QWERTY,
+ _TCURSOR,
_LOWER,
_RAISE,
+ _NUMPAD,
+ _ADJUST,
};
+#define TCURSOR TG(_TCURSOR)
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
-
-static bool is_ctl_pressed;
-static bool is_esc_pressed;
-static bool is_bspc_pressed;
+#define NUMPAD MO(_NUMPAD)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@@ -23,10 +24,22 @@ 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_ENT,
// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
- KC_LCTL,KC_LGUI,KC_LALT,KC_RALT,LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT,KC_DOWN,KC_UP, KC_RGHT
+ KC_LCTL,KC_LGUI,KC_LALT,NUMPAD, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT,KC_DOWN,KC_UP, KC_RGHT
// └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘
),
+[_TCURSOR] = LAYOUT_ortho_4x12 (
+// ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────â”
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_UP, _______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+ _______,_______,_______,_______,_______,_______,_______,_______,KC_SLSH,KC_LEFT,KC_DOWN,KC_RGHT
+// └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘
+),
+
[_LOWER] = 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, _______,
@@ -50,12 +63,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______,_______,_______,_______,_______,_______,_______,_______,KC_HOME,KC_PGDN,KC_PGUP,KC_END
// └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘
),
+
+[_NUMPAD] = LAYOUT_ortho_4x12 (
+// ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────â”
+ _______,KC_BTN1,KC_MS_U,KC_BTN2,KC_WH_U,_______,_______,KC_P7, KC_P8, KC_P9, KC_PMNS,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+ _______,KC_MS_L,KC_MS_D,KC_MS_R,KC_WH_D,_______,_______,KC_P4, KC_P5, KC_P6, KC_PPLS,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+ _______,_______,_______,_______,_______,_______,KC_NLCK,KC_P1, KC_P2, KC_P3, KC_PSLS,KC_PENT,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+ _______,_______,_______,_______,_______,_______,_______,_______,KC_P0, KC_PDOT,KC_PAST,_______
+// └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘
+),
+
+[_ADJUST] = LAYOUT_ortho_4x12 (
+// ┌───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────┬───────â”
+ _______,QK_BOOT,_______,_______,RGB_TOG,RGB_M_P,RGB_M_B,RGB_M_R,RGB_M_SW,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+ _______,_______,RGB_SAI,RGB_SAD,_______,_______,RGB_HUI,RGB_HUD,_______,_______,_______,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+ _______,_______,_______,_______,_______,RGB_VAI,RGB_VAD,_______,RGB_MOD,RGB_RMOD,TCURSOR,_______,
+// ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______
+// └───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┴───────┘
+),
};
layer_state_t layer_state_set_user(layer_state_t state) {
+ state = update_tri_layer_state(state, _NUMPAD, _RAISE, _ADJUST);
#ifdef JOTANCK_LEDS
- writePin(JOTANCK_LED1, (get_highest_layer(state) == _LOWER));
- writePin(JOTANCK_LED2, (get_highest_layer(state) == _RAISE));
+ writePin(JOTANCK_LED2, (IS_LAYER_ON(_TCURSOR)));
#endif
return state;
}
@@ -65,26 +102,8 @@ bool led_update_user(led_t led_state) {
if (!led_state.num_lock) {
tap_code(KC_NUMLOCK);
}
+ #ifdef JOTANCK_LEDS
+ writePin(JOTANCK_LED1, led_state.caps_lock);
+ #endif
return true;
}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
- switch (keycode) {
- case KC_LCTL:
- is_ctl_pressed = record->event.pressed;
- break;
- case KC_ESC:
- is_esc_pressed = record->event.pressed;
- break;
- case KC_BSPC:
- is_bspc_pressed = record->event.pressed;
- break;
- };
- return true;
-}
-
-void matrix_scan_user(void) {
- if (is_ctl_pressed && is_esc_pressed && is_bspc_pressed) {
- reset_keyboard();
- }
-}
diff --git a/layouts/community/ortho_4x12/juno/keymap.c b/layouts/community/ortho_4x12/juno/keymap.c
index 344759ed19..1c9b4af891 100644
--- a/layouts/community/ortho_4x12/juno/keymap.c
+++ b/layouts/community/ortho_4x12/juno/keymap.c
@@ -155,7 +155,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- _______, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, QK_BOOT, 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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/ortho_4x12/junonum/keymap.c b/layouts/community/ortho_4x12/junonum/keymap.c
index cbfa8bdd21..b5ed159f6a 100644
--- a/layouts/community/ortho_4x12/junonum/keymap.c
+++ b/layouts/community/ortho_4x12/junonum/keymap.c
@@ -89,8 +89,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_ADJUST] = 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, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
+ _______, QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ _______, AG_NORM, MU_MOD, AU_ON, AU_OFF, CG_NORM, CG_SWAP, QWERTY, COLEMAK, DVORAK, PLOVER, _______,
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, TERM_ON, TERM_OFF, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
diff --git a/layouts/community/ortho_4x12/junonum/readme.md b/layouts/community/ortho_4x12/junonum/readme.md
index a0995e6e4c..39041e69f3 100644
--- a/layouts/community/ortho_4x12/junonum/readme.md
+++ b/layouts/community/ortho_4x12/junonum/readme.md
@@ -11,6 +11,7 @@ A universal ortholinear 4x12 keymap created by Juno Nguyen
* minimalism (not really).
* DPAD layer for gaming with inverted T-shaped direction keys.
* DPADNUM secondary layer tailored for StarCraft group control and FPS weapon switching.
-* New: homerow mods for even less movement
+* Homerow mods for even less movement
+* Toggle Control and GUI swap instead of default Alt and GUI to better accommodate switching between Windows/Linux and Mac
Refined since Oct 2019 \ No newline at end of file
diff --git a/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h b/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h
index 5d7ccd257f..0b218502ba 100644
--- a/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h
+++ b/layouts/community/ortho_4x12/manna-harbour_miryoku/config.h
@@ -1,6 +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/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/layouts/community/ortho_4x12/mguterl/keymap.c b/layouts/community/ortho_4x12/mguterl/keymap.c
index f18ae14d4a..e57fb0c47f 100644
--- a/layouts/community/ortho_4x12/mguterl/keymap.c
+++ b/layouts/community/ortho_4x12/mguterl/keymap.c
@@ -164,7 +164,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- TG_GAME, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
+ TG_GAME, QK_BOOT, 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, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/ortho_4x12/mindsound/keymap.c b/layouts/community/ortho_4x12/mindsound/keymap.c
index 336545502f..a4205fe92d 100644
--- a/layouts/community/ortho_4x12/mindsound/keymap.c
+++ b/layouts/community/ortho_4x12/mindsound/keymap.c
@@ -111,7 +111,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* `-----------------------------------------------------------------------------------'
*/
[_ADJUST] = LAYOUT_ortho_4x12(
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, \
_______, MUV_DE, MUV_IN, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, BL_TOGG, BL_DEC, BL_INC, BL_FLICKER, \
_______, _______, _______, _______, _______, _______, _______, _______, CLICKY_TOGGLE, CLICKY_DOWN, CLICKY_UP, CLICKY_RESET \
diff --git a/layouts/community/ortho_4x12/peej/keymap.c b/layouts/community/ortho_4x12/peej/keymap.c
index d78f03da41..1e2874ac99 100644
--- a/layouts/community/ortho_4x12/peej/keymap.c
+++ b/layouts/community/ortho_4x12/peej/keymap.c
@@ -56,7 +56,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
writePinLow(LED_RED);
writePinLow(LED_GREEN);
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _FUNCTION:
writePinHigh(LED_RED);
break;
diff --git a/layouts/community/ortho_4x12/symbolic/keymap.c b/layouts/community/ortho_4x12/symbolic/keymap.c
index c292373711..5aac13e8f7 100644
--- a/layouts/community/ortho_4x12/symbolic/keymap.c
+++ b/layouts/community/ortho_4x12/symbolic/keymap.c
@@ -106,7 +106,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_PPLS, KC_PMNS, KC_P1, KC_P2, KC_P3, _______, \
_______, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, KC_PAST, KC_PSLS, KC_P4, KC_P5, KC_P6, _______, \
_______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_PDOT, KC_COMM, KC_P7, KC_P8, KC_P9, _______, \
- _______, _______, _______, RESET, _______, _______, _______, _______, RESET, KC_P0, _______, _______ \
+ _______, _______, _______, QK_BOOT, _______, _______, _______, _______, QK_BOOT, KC_P0, _______, _______ \
)
diff --git a/layouts/community/ortho_4x12/xyverz/keymap.c b/layouts/community/ortho_4x12/xyverz/keymap.c
index 9872a43414..be9ac8e8de 100644
--- a/layouts/community/ortho_4x12/xyverz/keymap.c
+++ b/layouts/community/ortho_4x12/xyverz/keymap.c
@@ -118,7 +118,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_ortho_4x12 ( \
KC_F11, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F12 , \
- _______, RESET, RGB_M_P, RGB_M_B, RGB_M_R, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
+ _______, QK_BOOT, RGB_M_P, RGB_M_B, RGB_M_R, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
RGB_TOG, RGB_MOD, RGB_SWR, RGB_M_K, RGB_M_G, RGB_HUI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MACLOCK \
)
diff --git a/layouts/community/ortho_5x12/brandonschlack/keymap.c b/layouts/community/ortho_5x12/brandonschlack/keymap.c
index 1b423157bc..1b66886e6b 100644
--- a/layouts/community/ortho_5x12/brandonschlack/keymap.c
+++ b/layouts/community/ortho_5x12/brandonschlack/keymap.c
@@ -86,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────â”
KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MC_SLPD, \
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
- QM_MAKE, RESET, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, \
+ QM_MAKE, QK_BOOT, DEBUG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, \
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
QM_FLSH, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______, \
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
diff --git a/layouts/community/ortho_5x12/greatwizard/keymap.c b/layouts/community/ortho_5x12/greatwizard/keymap.c
index 77d758b0f0..30e7ca6676 100644
--- a/layouts/community/ortho_5x12/greatwizard/keymap.c
+++ b/layouts/community/ortho_5x12/greatwizard/keymap.c
@@ -292,7 +292,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_ortho_5x12_wrapper(
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, EEP_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, QK_BOOT, EEP_RST, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_CAPS, _______, _______, _______, _______, _______, GAME, QWERTY, WORKMAN, COLEMAK, DVORAK, _______,
_______, _______, _______, _______, _______, _______, _______, QWERTYP, WORKMNP, COLEMKP, DVORAKP, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
@@ -323,7 +323,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ,-----------------------------------------------------------------------------------.
* | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
- * | |CHRPCK| SHOW |REBASE|RESET | TAG | | PULL | INIT |REMOTE| PUSH | |
+ * | |CHRPCK| SHOW |REBASE|QK_BOOT | TAG | | PULL | INIT |REMOTE| PUSH | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
* | | ADD |STATUS| DIFF |FETCH | GREP |STASH | |CHECKT| LOG | | |
* |------+------+------+------+------+------+------+------+------+------+------+------|
diff --git a/layouts/community/ortho_5x12/manna-harbour_miryoku/config.h b/layouts/community/ortho_5x12/manna-harbour_miryoku/config.h
index 927567fe4b..f94af8118f 100644
--- a/layouts/community/ortho_5x12/manna-harbour_miryoku/config.h
+++ b/layouts/community/ortho_5x12/manna-harbour_miryoku/config.h
@@ -1,6 +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/layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/layouts/community/ortho_5x12/riblee/keymap.c b/layouts/community/ortho_5x12/riblee/keymap.c
index fd748b03d4..8ccdf41da6 100644
--- a/layouts/community/ortho_5x12/riblee/keymap.c
+++ b/layouts/community/ortho_5x12/riblee/keymap.c
@@ -196,7 +196,7 @@ 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_INS, KC_PSCR, KC_DEL,
+ _______, QK_BOOT, DEBUG, _______, _______, _______, _______, _______, _______, KC_INS, KC_PSCR, KC_DEL,
_______, _______, MU_MOD, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, HUNGARIAN, WORKMAN,
_______, _______, _______, _______, UC_MOD, UC_RMOD, NK_TOGG, CG_NORM, CG_SWAP, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
diff --git a/layouts/community/ortho_5x12/xyverz/keymap.c b/layouts/community/ortho_5x12/xyverz/keymap.c
index 22147c3a0a..fe2287918b 100644
--- a/layouts/community/ortho_5x12/xyverz/keymap.c
+++ b/layouts/community/ortho_5x12/xyverz/keymap.c
@@ -135,7 +135,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
*/
[_ADJUST] = LAYOUT_ortho_5x12 ( \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
+ _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, RGB_M_P, RGB_M_B, RGB_M_R, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \
RGB_TOG, RGB_MOD, RGB_SWR, RGB_M_K, RGB_M_G, RGB_HUI, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, MACLOCK \
diff --git a/layouts/community/ortho_5x14/peej/keymap.c b/layouts/community/ortho_5x14/peej/keymap.c
index 3abd418537..ac0b4d9631 100644
--- a/layouts/community/ortho_5x14/peej/keymap.c
+++ b/layouts/community/ortho_5x14/peej/keymap.c
@@ -66,7 +66,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ,----------------------------------------Backlight-------------------------RGB-----Bright---Sat------Hue----------------------.
- * | LOCK | RESET | | | STEP | TOGGLE | | | TOGGLE | UP | UP | UP | | LOCK |
+ * | LOCK | QK_BOOT | | | STEP | TOGGLE | | | TOGGLE | UP | UP | UP | | LOCK |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
* | | | | | | | | | MODE | DOWN | DOWN | DOWN | | |
* |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
diff --git a/layouts/community/ortho_5x15/manna-harbour_miryoku/config.h b/layouts/community/ortho_5x15/manna-harbour_miryoku/config.h
index 42e0385169..e0ac4b1493 100644
--- a/layouts/community/ortho_5x15/manna-harbour_miryoku/config.h
+++ b/layouts/community/ortho_5x15/manna-harbour_miryoku/config.h
@@ -1,6 +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/layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c b/layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/layouts/community/planck_mit/guidoism/guidoism.json b/layouts/community/planck_mit/guidoism/guidoism.json
index 6a4364c6be..123bd74182 100644
--- a/layouts/community/planck_mit/guidoism/guidoism.json
+++ b/layouts/community/planck_mit/guidoism/guidoism.json
@@ -1 +1 @@
-{"keyboard":"planck/rev4","keymap":"guidoism","layout":"LAYOUT_planck_mit","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_COLN","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_NO","MO(3)","KC_ESC","KC_LALT","KC_LGUI","MO(1)","LSFT_T(KC_SPC)","MO(2)","KC_RGUI","KC_RALT","KC_SCLN","MO(5)"],["KC_TILD","KC_EXLM","KC_AT","KC_HASH","KC_DLR","KC_PERC","KC_CIRC","KC_AMPR","KC_ASTR","KC_NO","KC_NO","KC_UNDO","KC_TRNS","KC_NO","KC_CUT","KC_COPY","KC_PSTE","KC_NO","KC_NO","KC_UNDS","KC_PLUS","KC_DQUO","KC_QUOT","KC_PIPE","KC_CAPS","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_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_MNXT","KC_VOLD","KC_VOLU","KC_MPLY"],["KC_GRV","KC_P1","KC_P2","KC_P3","KC_P4","KC_P5","KC_P6","KC_P7","KC_P8","KC_P9","KC_P0","KC_TRNS","KC_TRNS","KC_LBRC","KC_RBRC","KC_LPRN","KC_RPRN","KC_NO","KC_NO","KC_PMNS","KC_PEQL","KC_NO","KC_NO","KC_BSLS","KC_TRNS","KC_LT","KC_GT","KC_LCBR","KC_RCBR","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"],["RESET","DEBUG","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_PGUP","KC_UP","KC_PGDN","KC_NO","KC_TRNS","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_LEFT","KC_DOWN","KC_RGHT","KC_NO","KC_TRNS","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_HOME","KC_NO","KC_END","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_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_PERC","KC_P7","KC_P8","KC_P9","KC_P0","KC_TRNS","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_DLR","KC_P4","KC_P5","KC_P6","KC_PDOT","KC_TRNS","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_P0","KC_P1","KC_P2","KC_P3","KC_PCMM","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_NO","KC_P0","KC_NO","KC_NO","KC_TRNS"],["KC_NO","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_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"]]} \ No newline at end of file
+{"keyboard":"planck/rev4","keymap":"guidoism","layout":"LAYOUT_planck_mit","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_COLN","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_NO","MO(3)","KC_ESC","KC_LALT","KC_LGUI","MO(1)","LSFT_T(KC_SPC)","MO(2)","KC_RGUI","KC_RALT","KC_SCLN","MO(5)"],["KC_TILD","KC_EXLM","KC_AT","KC_HASH","KC_DLR","KC_PERC","KC_CIRC","KC_AMPR","KC_ASTR","KC_NO","KC_NO","KC_UNDO","KC_TRNS","KC_NO","KC_CUT","KC_COPY","KC_PSTE","KC_NO","KC_NO","KC_UNDS","KC_PLUS","KC_DQUO","KC_QUOT","KC_PIPE","KC_CAPS","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_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_MNXT","KC_VOLD","KC_VOLU","KC_MPLY"],["KC_GRV","KC_P1","KC_P2","KC_P3","KC_P4","KC_P5","KC_P6","KC_P7","KC_P8","KC_P9","KC_P0","KC_TRNS","KC_TRNS","KC_LBRC","KC_RBRC","KC_LPRN","KC_RPRN","KC_NO","KC_NO","KC_PMNS","KC_PEQL","KC_NO","KC_NO","KC_BSLS","KC_TRNS","KC_LT","KC_GT","KC_LCBR","KC_RCBR","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"],["QK_BOOT","DEBUG","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_PGUP","KC_UP","KC_PGDN","KC_NO","KC_TRNS","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_LEFT","KC_DOWN","KC_RGHT","KC_NO","KC_TRNS","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_HOME","KC_NO","KC_END","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_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_PERC","KC_P7","KC_P8","KC_P9","KC_P0","KC_TRNS","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_DLR","KC_P4","KC_P5","KC_P6","KC_PDOT","KC_TRNS","KC_TRNS","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_P0","KC_P1","KC_P2","KC_P3","KC_PCMM","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_NO","KC_P0","KC_NO","KC_NO","KC_TRNS"],["KC_NO","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_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"]]} \ No newline at end of file
diff --git a/layouts/community/planck_mit/guidoism/keymap.c b/layouts/community/planck_mit/guidoism/keymap.c
index 2027e2bfa4..57c1042dbe 100644
--- a/layouts/community/planck_mit/guidoism/keymap.c
+++ b/layouts/community/planck_mit/guidoism/keymap.c
@@ -90,7 +90,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
*/
[_MOVEMENT] = LAYOUT_planck_mit(
- RESET, DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_UP, KC_PGDN, KC_NO, KC_TRNS,
+ QK_BOOT, DEBUG, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_UP, KC_PGDN, KC_NO, KC_TRNS,
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_TRNS,
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_HOME, KC_NO, KC_END, 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)
diff --git a/layouts/community/planck_mit/manna-harbour_miryoku/config.h b/layouts/community/planck_mit/manna-harbour_miryoku/config.h
index df24fbba0f..b9dea9ede3 100644
--- a/layouts/community/planck_mit/manna-harbour_miryoku/config.h
+++ b/layouts/community/planck_mit/manna-harbour_miryoku/config.h
@@ -1,6 +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/layouts/community/planck_mit/manna-harbour_miryoku/keymap.c b/layouts/community/planck_mit/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/layouts/community/planck_mit/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/planck_mit/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/layouts/community/split_3x5_3/bbaserdem/config.h b/layouts/community/split_3x5_3/bbaserdem/config.h
new file mode 100644
index 0000000000..6bb3515b9e
--- /dev/null
+++ b/layouts/community/split_3x5_3/bbaserdem/config.h
@@ -0,0 +1,35 @@
+
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+// Split definition; use the following to flash;
+// pro-micro: avrdude-split-left/right
+// elite-c: dfu-split-left/right
+#define EE_HANDS
+
+#ifdef KEYBOARD_crkbd_rev1
+ // Corne overrides
+# ifdef RGBLED_NUM
+# undef RGBLED_NUM
+# endif
+# ifdef DRIVER_LED_TOTAL
+# undef DRIVER_LED_TOTAL
+# endif
+# define RGBLED_NUM 48
+# define DRIVER_LED_TOTAL RGBLED_NUM
+#endif // KEYBOARD_crkbd_rev1
diff --git a/layouts/community/split_3x5_3/bbaserdem/keymap.c b/layouts/community/split_3x5_3/bbaserdem/keymap.c
new file mode 100644
index 0000000000..f39a81082e
--- /dev/null
+++ b/layouts/community/split_3x5_3/bbaserdem/keymap.c
@@ -0,0 +1,117 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "bbaserdem.h"
+
+/* D layout
+ * ┌───┬───┬───┬───┬───â”        ┌───┬───┬───┬───┬───â”
+ * │' "│, <│. >│ P │ Y │        │ F │ G │ C │ R │ L │
+ * ├───┼───┼───┼───┼───┤        ├───┼───┼───┼───┼───┤
+ * │ A │ O │ E │ U │ I │        │ D │ H │ T │ N │ S │
+ * ├───┼───┼───┼───┼───┤        ├───┼───┼───┼───┼───┤
+ * │; :│ Q │ J │ K │ X │        │ B │ M │ W │ V │ Z │
+ * └───┴───┴───┼───┼───┼───â” ┌───┼───┼───┼───┴───┴───┘
+ *            │Del│Tab│Spc│ │Ent│Esc│Bsp│
+ *            └───┴───┴───┘ └───┴───┴───┘
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_split_3x5_3_wrapper(
+ _BL1_5_,_BR1_5_,
+ _BL2_5_,_BR2_5_,
+ _BL3_5_,_BR3_5_,
+ _BL4_3_,_BR4_3_
+ ),
+ [_CHAR] = LAYOUT_split_3x5_3_wrapper(
+ _CL1_5_,_CR1_5_,
+ _CL2_5_,_CR2_5_,
+ _CL3_5_,_CR3_5_,
+ _CL4_3_,_CR4_3_
+ ),
+ [_GAME] = LAYOUT_split_3x5_3_wrapper(
+ _GA1_5_,___5___,
+ _GA2_5_,___5___,
+ _GA3_5_,___5___,
+ _GA4_3_,___3___
+ ),
+ [_MEDI] = LAYOUT_split_3x5_3_wrapper(
+ ___5___,_ME1_5_,
+ ___5___,_ME2_5_,
+ ___5___,_ME3_5_,
+ ___3___,_ME4_3_
+ ),
+ [_NAVI] = LAYOUT_split_3x5_3_wrapper(
+ ___5___,_NA1_5_,
+ ___5___,_NA2_5_,
+ ___5___,_NA3_5_,
+ ___3___,_NA4_3_
+ ),
+ [_SYMB] = LAYOUT_split_3x5_3_wrapper(
+ ___5___,_SY1_5_,
+ ___5___,_SY2_5_,
+ ___5___,_SY3_5_,
+ ___3___,_SY4_3_
+ ),
+ [_NUMB] = LAYOUT_split_3x5_3_wrapper(
+ _NU1_5_,___5___,
+ _NU2_5_,___5___,
+ _NU3_5_,___5___,
+ _NU4_3_,___3___
+ ),
+ [_FUNC] = LAYOUT_split_3x5_3_wrapper(
+ _FU1_5_,___5___,
+ _FU2_5_,___5___,
+ _FU3_5_,___5___,
+ _FU4_3_,___3___
+ ),
+ [_MOUS] = LAYOUT_split_3x5_3_wrapper(
+ _MO1_5_,___5___,
+ _MO2_5_,___5___,
+ _MO3_5_,___5___,
+ _MO4_3_,___3___
+ ),
+ [_MUSI] = LAYOUT_split_3x5_3_wrapper(
+ _MU_10_,
+ _MU_10_,
+ _MU_10_,
+ _MUL_3_,_MUR_3_
+ )
+};
+
+// RGB Matrix configuration
+#ifdef RGB_MATRIX_ENABLE
+
+// crkbd
+#ifdef KEYBOARD_crkbd_rev1
+/* This is left-right for crkbd indicator light
+ * ┌──┬──┬──┬──┬──â”      ┌──┬──┬──┬──┬──â”
+ * │23│18│17│10│09│      │33│34│41│42│47│
+ * ├02┼──┼01┼──┼00┤      ├24┼──┼25┼──┼26┤
+ * │22│19│16│11│08│     │32│35│40│43│46│
+ * ├03┼──┼04┼──┼05┤      ├29┼──┼28┼──┼27┤
+ * │21│20│15│12│07│     │31│36│39│44│45│
+ * └──┴──┴──┼──┼──┼──â”┌──┼──┼──┼──┴──┴──┘
+ *          │14│13│06││30│37│38│
+ *          └──┴──┴──┘└──┴──┴──┘
+ */
+
+// End of differentiations
+#endif // KEYBOARD_crkbd_rev1
+
+// End of code for the RGB_MATRIX setup
+#endif // RGB_MATRIX_ENABLE
diff --git a/layouts/community/split_3x5_3/bbaserdem/readme.md b/layouts/community/split_3x5_3/bbaserdem/readme.md
new file mode 100644
index 0000000000..30cacd85ea
--- /dev/null
+++ b/layouts/community/split_3x5_3/bbaserdem/readme.md
@@ -0,0 +1,18 @@
+This folder contains my [split\_3x5\_3](../../../default/split_3x5_3) board layouts
+Check out the [user readme](../../../../users/bbaserdem/readme.md) for more info.
+
+# Crkbd
+
+Using a no 6th column crkbd (rev 2.1 choc) as a mobile keyboard.
+
+This version uses ProMicro as controllers; can't have OLED and RGB at the same time.
+
+## Build
+
+QMK cli commands no longer works with Archlinux (2021 Sep.) on my PC for flashing promicro.
+In the past; I used to flash Pro Micro explicitly using the following line, for referance.
+
+```
+sudo avrdude -p atmgea34u4 -P "$(ls /dev/ttyACM*)" -c avr109 -D -U flash:w:<hexfile>.hex
+```
+
diff --git a/layouts/community/split_3x5_3/bbaserdem/rules.mk b/layouts/community/split_3x5_3/bbaserdem/rules.mk
new file mode 100644
index 0000000000..047629b401
--- /dev/null
+++ b/layouts/community/split_3x5_3/bbaserdem/rules.mk
@@ -0,0 +1,22 @@
+# Copyright 2021 Batuhan BaÅŸerdem
+# <baserdem.batuhan@gmail.com> @bbaserdem
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Corne keyboard
+ifneq (,$(findstring crkbd/rev1,$(KEYBOARD)))
+ RGBLIGHT_ENABLE = no
+ RGB_MATRIX_ENABLE = yes
+ OLED_ENABLE = no
+endif
diff --git a/layouts/community/split_3x5_3/manna-harbour_miryoku/config.h b/layouts/community/split_3x5_3/manna-harbour_miryoku/config.h
index b34f6ad18d..3f55144b41 100644
--- a/layouts/community/split_3x5_3/manna-harbour_miryoku/config.h
+++ b/layouts/community/split_3x5_3/manna-harbour_miryoku/config.h
@@ -1,6 +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/layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c b/layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/layouts/community/split_3x6_3/bbaserdem/chconf.h b/layouts/community/split_3x6_3/bbaserdem/chconf.h
new file mode 100644
index 0000000000..4c6d15441f
--- /dev/null
+++ b/layouts/community/split_3x6_3/bbaserdem/chconf.h
@@ -0,0 +1,23 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+// Code pertaining the ARM crkbd version
+#ifdef KEYBOARD_crkbd_rev1
+# define CH_CFG_ST_RESOLUTION 16
+# define CH_CFG_ST_FREQUENCY 10000
+# include_next "chconf.h"
+#endif // KEYBOARD_crkbd_rev1
diff --git a/layouts/community/split_3x6_3/bbaserdem/config.h b/layouts/community/split_3x6_3/bbaserdem/config.h
new file mode 100644
index 0000000000..adf707d1ba
--- /dev/null
+++ b/layouts/community/split_3x6_3/bbaserdem/config.h
@@ -0,0 +1,77 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+// Split definition; use the following to flash;
+// pro-micro: avrdude-split-left/right
+// elite-c: dfu-split-left/right
+
+// Code pertaining to Corne ARM; from Waffle's keymap
+#ifdef KEYBOARD_crkbd_rev1
+ // Use EE_HANDS to determine handedness
+# define EE_HANDS
+
+ // Rebrand the PCB
+# undef PRODUCT
+# define PRODUCT Protorne Keyboard
+# undef MANUFACTURER
+# define MANUFACTURER Waffles
+
+ // Remove OLED definitions?
+# undef USE_I2C
+# undef SSD1306OLED
+
+ // Audio output on pin A5 (actualy will be output on B1 using keymap init)
+# ifdef AUDIO_ENABLE
+# define AUDIO_PIN A5
+# define MUSIC_MAP
+# endif
+
+ // Set serial pin as D3 for sure
+# undef SOFT_SERIAL_PIN
+# define SOFT_SERIAL_PIN D3
+# define SERIAL_USART_SPEED 921600
+# define SERIAL_USART_DRIVER SD1
+# define SERIAL_USART_TX_PAL_MODE 7
+
+ // Things to make RGB matrix work on the waffle board
+# undef RGBLED_NUM
+# define RGBLED_NUM 54
+# undef RGB_DI_PIN
+# define RGB_DI_PIN B5
+# ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 100
+# define RGB_MATRIX_SPLIT { 27, 27 }
+# endif
+# define WS2812_PWM_DRIVER PWMD3
+# define WS2812_PWM_CHANNEL 3
+# define WS2812_PWM_PAL_MODE 2
+# define WS2812_DMA_STREAM STM32_DMA1_STREAM3
+# define WS2812_DMA_CHANNEL 3
+
+ // OLED related code
+# ifdef OLED_ENABLE
+# define OLED_UPDATE_INTERVAL 100
+# endif
+
+ // Encoder definitons
+# define ENCODERS_PAD_A { B2 }
+# define ENCODERS_PAD_B { B6 }
+# define ENCODER_RESOLUTIONS { 4 }
+# define ENCODERS_PAD_A_RIGHT { B2 }
+# define ENCODERS_PAD_B_RIGHT { B6 }
+# define ENCODER_RESOLUTIONS_RIGHT { 2 }
+#endif
diff --git a/layouts/community/split_3x6_3/bbaserdem/halconf.h b/layouts/community/split_3x6_3/bbaserdem/halconf.h
new file mode 100644
index 0000000000..f3978c4175
--- /dev/null
+++ b/layouts/community/split_3x6_3/bbaserdem/halconf.h
@@ -0,0 +1,24 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 KEYBOARD_crkbd_rev1
+ // #define HAL_USE_DAC TRUE
+# define HAL_USE_PWM TRUE
+# define HAL_USE_SERIAL TRUE
+# include_next <halconf.h>
+#endif
diff --git a/layouts/community/split_3x6_3/bbaserdem/keymap.c b/layouts/community/split_3x6_3/bbaserdem/keymap.c
new file mode 100644
index 0000000000..589b8eda0c
--- /dev/null
+++ b/layouts/community/split_3x6_3/bbaserdem/keymap.c
@@ -0,0 +1,191 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "bbaserdem.h"
+
+#ifdef KEYBOARD_crkbd_rev1
+# include "bb-oled-extra.h"
+#endif // KEYBOARD_crkbd_rev1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_split_3x6_3_wrapper(
+ BB_ENC0,_BL1_5_,_BR1_5_,BB_ENC1,
+ _BL2_1_,_BL2_5_,_BR2_5_,_BR2_1_,
+ _BL3_1_,_BL3_5_,_BR3_5_,_BR3_1_,
+ _BL4_3_,_BR4_3_
+ ),
+ [_CHAR] = LAYOUT_split_3x6_3_wrapper(
+ _______,_CL1_5_,_CR1_5_,_______,
+ XXXXXXX,_CL2_5_,_CR2_5_,XXXXXXX,
+ XXXXXXX,_CL3_5_,_CR3_5_,XXXXXXX,
+ _CL4_3_,_CR4_3_
+ ),
+ [_GAME] = LAYOUT_split_3x6_3_wrapper(
+ _______,_GA1_5_,___6___,
+ _GA2_1_,_GA2_5_,___6___,
+ _GA3_1_,_GA3_5_,___6___,
+ _GA4_3_,___3___
+ ),
+ [_MEDI] = LAYOUT_split_3x6_3_wrapper(
+ ___6___,_ME1_5_,_______,
+ ___6___,_ME2_5_,xxx1xxx,
+ ___6___,_ME3_5_,xxx1xxx,
+ ___3___,_ME4_3_
+ ),
+ [_NAVI] = LAYOUT_split_3x6_3_wrapper(
+ ___6___,_NA1_5_,_______,
+ ___6___,_NA2_5_,xxx1xxx,
+ ___6___,_NA3_5_,xxx1xxx,
+ ___3___,_NA4_3_
+ ),
+ [_SYMB] = LAYOUT_split_3x6_3_wrapper(
+ ___6___,_SY1_5_,_______,
+ ___6___,_SY2_5_,xxx1xxx,
+ ___6___,_SY3_5_,xxx1xxx,
+ ___3___,_SY4_3_
+ ),
+ [_NUMB] = LAYOUT_split_3x6_3_wrapper(
+ _______,_NU1_5_,___6___,
+ xxx1xxx,_NU2_5_,___6___,
+ xxx1xxx,_NU3_5_,___6___,
+ _NU4_3_,___3___
+ ),
+ [_FUNC] = LAYOUT_split_3x6_3_wrapper(
+ _______,_FU1_5_,___6___,
+ xxx1xxx,_FU2_5_,___6___,
+ xxx1xxx,_FU3_5_,___6___,
+ _FU4_3_,___3___
+ ),
+ [_MOUS] = LAYOUT_split_3x6_3_wrapper(
+ _______,_MO1_5_,___6___,
+ xxx1xxx,_MO2_5_,___6___,
+ xxx1xxx,_MO3_5_,___6___,
+ _MO4_3_,___3___
+ ),
+ [_MUSI] = LAYOUT_split_3x6_3_wrapper(
+ _MU_12_,
+ _MU_12_,
+ _MU_12_,
+ _MUL_3_,_MUR_3_
+ )
+};
+
+// crkbd
+#ifdef KEYBOARD_crkbd_rev1
+#ifdef AUDIO_ENABLE
+const uint8_t music_map[MATRIX_ROWS][MATRIX_COLS] = LAYOUT_split_3x6_3(
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 0, 0, 0, 0, 0, 0
+);
+#endif // AUDIO_ENABLE
+void keyboard_pre_init_keymap(void) {
+# ifdef AUDIO_ENABLE
+ //thank you to @sigprof for this
+ // Set audio pins to analog mode
+ palSetLineMode(A5, PAL_MODE_INPUT_ANALOG);
+ palSetLineMode(B1, PAL_MODE_INPUT_ANALOG);
+# endif // AUDIO_ENABLE
+# ifdef RGB_MATRIX_ENABLE
+ // Led locations are different on protorne; need to be fixed
+ g_led_config = (led_config_t) { {
+ // Logical Layout
+ // 0 1 2 3 4 5 COLS
+ // -LEFT ROWS
+ // 16 17 18 19 20 21 0
+ // 15 14 13 12 11 10 1
+ // 04 05 06 07 08 09 2
+ // 03 02 01 3
+ // -Right
+ // 21 20 19 18 17 16 4
+ // 10 11 12 13 14 15 5
+ // 09 08 07 06 05 04 6
+ // 01 02 03 7
+ { 15, 16, 17, 18, 19, 20},
+ { 14, 13, 12, 11, 10, 9 },
+ { 3, 4, 5, 6, 7, 8 },
+ { NO_LED, NO_LED, NO_LED, 2, 1, 0 },
+ { 47, 46, 45, 44, 43, 42 },
+ { 36, 37, 38, 39, 40, 41 },
+ { 35, 34, 33, 32, 31, 30 },
+ { NO_LED, NO_LED, NO_LED, 27, 28, 29 }
+ }, {
+ // Physical Layout
+ // LEFT RIGHT
+ // 16 17 18 19 20 21 16 17 18 19 20 21
+ // 24 23 22 24 23 22
+ // 15 14 13 12 11 10 15 14 13 12 11 10
+ // 25 27
+ // 04 05 06 07 08 09 04 05 06 07 08 09
+ // 26 27 25 26
+ // 03 02 01 03 02 01
+ { 95, 63 }, { 80, 58 }, { 60, 55 },
+ { 0, 41 }, { 16, 42 }, { 33, 37 }, { 50, 35 }, { 68, 37 }, { 85, 39 },
+ { 85, 21 }, { 68, 19 }, { 50, 13 }, { 33, 20 }, { 16, 24 }, { 0, 24 },
+ { 0, 7 }, { 16, 7 }, { 33, 3 }, { 50, 0 }, { 68, 2 }, { 85, 4 },
+ { 85, 16 }, { 50, 13 }, { 16, 20 }, { 16, 38 }, { 50, 48 }, { 85, 52 },
+ { 164, 55 }, { 144, 58 }, { 129, 63 },
+ { 139, 39 }, { 156, 37 }, { 174, 35 }, { 191, 37 }, { 208, 42 }, { 224, 41 },
+ { 224, 24 }, { 208, 24 }, { 191, 20 }, { 174, 13 }, { 156, 19 }, { 139, 21 },
+ { 139, 4 }, { 156, 2 }, { 174, 0 }, { 191, 3 }, { 208, 7 }, { 224, 7 },
+ { 208, 20 }, { 174, 13 }, { 139, 16 }, { 139, 52 }, { 174, 48 }, { 208, 38 }
+ }, {
+ // (x---)8 stands for indicator
+ // (-x--)4 stands for per-key led
+ // (--x-)2 stands for underglow led
+ // (---1)1 stands for modifier key
+ 12, 12, 12,
+ 4, 4, 5, 4, 4, 4,
+ 4, 5, 5, 5, 5, 4,
+ 4, 4, 4, 4, 4, 4,
+ 10, 10, 10, 10, 10, 10,
+ 12, 12, 12,
+ 4, 4, 4, 5, 4, 4,
+ 4, 5, 5, 5, 5, 4,
+ 4, 4, 4, 4, 4, 4,
+ 10, 10, 10, 10, 10, 10
+ } };
+# endif // RGB_MATRIX_ENABLE
+}
+
+// Enable OPAMP1 as A5 → B1 follower
+#ifdef AUDIO_ENABLE
+void keyboard_post_init_keymap(void) {
+ OPAMP3->CSR = OPAMP3_CSR_VMSEL_1 | OPAMP3_CSR_VMSEL_0 | OPAMP3_CSR_VPSEL_0 | OPAMP3_CSR_OPAMP3EN;
+}
+#endif // AUDIO_ENABLE
+
+#ifdef OLED_ENABLE
+// Flip the display on the right half
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (!is_keyboard_left()) {
+ return OLED_ROTATION_180;
+ }
+ return rotation;
+}
+
+bool oled_task_keymap(void) {
+ if (is_keyboard_left()) {
+ render_status_left(0, 0);
+ } else {
+ render_status_right(0, 0);
+ }
+ return false;
+}
+#endif // OLED_ENABLE
+#endif // KEYBOARD_crkbd_rev1
diff --git a/layouts/community/split_3x6_3/bbaserdem/mcuconf.h b/layouts/community/split_3x6_3/bbaserdem/mcuconf.h
new file mode 100644
index 0000000000..bde80b316f
--- /dev/null
+++ b/layouts/community/split_3x6_3/bbaserdem/mcuconf.h
@@ -0,0 +1,25 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 KEYBOARD_crkbd_rev1
+# 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
+#endif
diff --git a/layouts/community/split_3x6_3/bbaserdem/readme.md b/layouts/community/split_3x6_3/bbaserdem/readme.md
new file mode 100644
index 0000000000..c3dea2882f
--- /dev/null
+++ b/layouts/community/split_3x6_3/bbaserdem/readme.md
@@ -0,0 +1,15 @@
+This folder contains my [split\_3x6\_3](../../../default/split_3x6_3) board layouts
+Check out the [user readme](../../../../users/bbaserdem/readme.md) for more info.
+
+# Crkbd
+
+Using [this](https://github.com/ItsWaffIe/waffle_corne) Proton-C compatible PCB.
+
+Applying the similar keymap to [@waffle](https://github.com/ItsWaffIe/waffle_corne);
+using their `crkbd:rev1:arm` build.
+
+## Build
+
+Build commands;
+
+* For ARM: `CFLAGS="-Wno-error=deprecated" qmk flash -kb crkdb/rev1 -km bbaserdem -bl dfu-util-split-{left,right}`
diff --git a/layouts/community/split_3x6_3/bbaserdem/rules.mk b/layouts/community/split_3x6_3/bbaserdem/rules.mk
new file mode 100644
index 0000000000..09619936da
--- /dev/null
+++ b/layouts/community/split_3x6_3/bbaserdem/rules.mk
@@ -0,0 +1,47 @@
+# Copyright 2021 Batuhan BaÅŸerdem
+# <baserdem.batuhan@gmail.com> @bbaserdem
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Corne keyboard; with ARM
+ifneq (,$(findstring crkbd/rev1,$(KEYBOARD)))
+ # Proton C conversion
+ MCU = STM32F303
+ CTPC = yes
+ # BOARD = QMK_PROTON_C
+ # BOOTLOADER = stm32-dfu
+ # My usual features
+ AUDIO_ENABLE = yes
+ BACKLIGHT_ENABLE = no
+ ENCODER_ENABLE = yes
+ RGB_MATRIX_ENABLE = yes
+ OLED_ENABLE = yes
+ # Features that take otherwise too much space
+ WPM_ENABLE = yes
+ NKRO_ENABLE = yes
+ # Config
+ SERIAL_DRIVER = usart
+ WS2812_DRIVER = pwm
+ AUDIO_DRIVER = dac_basic
+ SPLIT_KEYBOARD = yes
+ # These are from waffle
+ DEBUG_MATRIX_SCAN_RATE_ENABLE = no # output matrix scan rate in qmk console/qmk toolbox
+ QUANTUM_LIB_SRC += i2c_master.c #drivers/chibios/i2cmaster.h needs patch - see lines 27/28
+ VIA_ENABLE = no
+ # COMMAND_ENABLE = no
+ # CONSOLE_ENABLE = no
+ # BOOTMAGIC_ENABLE = lite
+ # LTO_ENABLE = yes
+ # PIMORONI_TRACKBALL = no
+endif
diff --git a/layouts/community/split_3x6_3/bbaserdem/ssd1306.c b/layouts/community/split_3x6_3/bbaserdem/ssd1306.c
new file mode 100644
index 0000000000..4983248555
--- /dev/null
+++ b/layouts/community/split_3x6_3/bbaserdem/ssd1306.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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/layouts/community/split_3x6_3/bcat/keymap.c b/layouts/community/split_3x6_3/bcat/keymap.c
index cfac93d1e3..b7cbfa1bfd 100644
--- a/layouts/community/split_3x6_3/bcat/keymap.c
+++ b/layouts/community/split_3x6_3/bcat/keymap.c
@@ -47,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(
- _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, _______, _______, _______, _______,
+ _______, _______, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, QK_BOOT, _______, _______, _______, _______,
_______, _______, 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, _______, _______
diff --git a/layouts/community/split_3x6_3/ddeklerk/keymap.c b/layouts/community/split_3x6_3/ddeklerk/keymap.c
deleted file mode 100644
index 6ffc5732cf..0000000000
--- a/layouts/community/split_3x6_3/ddeklerk/keymap.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* 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
-
-enum layers {
- _BASE,
- _GAME,
- _FN1,
- _FN2,
- _FN3,
- _ADJUST
-};
-
-#define BASE DF(_BASE)
-#define GAME DF(_GAME)
-#define FN1 LT(_FN1, KC_BSPC)
-#define FN2 LT(_FN2, KC_ENT)
-#define FN3SPC LT(_FN3, KC_SPC)
-
-#define CTRLESC MT(MOD_LCTL, KC_ESC)
-#define CTRLMIN MT(MOD_RCTL, KC_MINS)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [_BASE] = LAYOUT_split_3x6_3(
- KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, XXXXXXX,
- CTRLESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, CTRLMIN,
- 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_LGUI, FN1, FN3SPC, FN3SPC, FN2, KC_RALT
- ),
- [_GAME] = LAYOUT_split_3x6_3(
- KC_3, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_BSPC,
- KC_2, CTRLESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_UP, KC_ENT,
- KC_1, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_LEFT, KC_DOWN, KC_RGHT,
- KC_LALT, _______, KC_SPC, _______, _______, _______
- ),
- [_FN1] = 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_DEL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PIPE,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______
- ),
- [_FN2] = LAYOUT_split_3x6_3(
- KC_GRV, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_LCBR, KC_RCBR, KC_QUES, KC_PLUS, _______,
- KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_LBRC, KC_RBRC, KC_SLSH, KC_EQL, KC_BSLS,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______
- ),
- [_FN3] = LAYOUT_split_3x6_3(
- _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_INS, KC_HOME, KC_UP, KC_END, KC_BSPC, _______,
- _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, _______, KC_PGUP, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
- _______, KC_APP, _______, _______, _______, _______, KC_PGDN, KC_DEL, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______
- ),
- [_ADJUST] = LAYOUT_split_3x6_3(
- XXXXXXX, RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, GAME, BASE, 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, _FN1, _FN2, _ADJUST);
-};
diff --git a/layouts/community/split_3x6_3/ddeklerk/rules.mk b/layouts/community/split_3x6_3/ddeklerk/rules.mk
deleted file mode 100644
index a05fa26681..0000000000
--- a/layouts/community/split_3x6_3/ddeklerk/rules.mk
+++ /dev/null
@@ -1 +0,0 @@
-EXTRAKEY_ENABLE = yes # Audio control and System control
diff --git a/layouts/community/split_3x6_3/manna-harbour_miryoku/config.h b/layouts/community/split_3x6_3/manna-harbour_miryoku/config.h
index 4ce96c7600..7e0e13047f 100644
--- a/layouts/community/split_3x6_3/manna-harbour_miryoku/config.h
+++ b/layouts/community/split_3x6_3/manna-harbour_miryoku/config.h
@@ -1,6 +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/layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c b/layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c
index 7c5717a0fe..dbab7f9820 100644
--- a/layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c
+++ b/layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c
@@ -1,5 +1,4 @@
// 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/layouts/community/tkl_ansi/brandonschlack/keymap.c b/layouts/community/tkl_ansi/brandonschlack/keymap.c
index 6f13d33b4a..e4f6c53a32 100644
--- a/layouts/community/tkl_ansi/brandonschlack/keymap.c
+++ b/layouts/community/tkl_ansi/brandonschlack/keymap.c
@@ -62,7 +62,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DELT, KC_MPLY, MC_SLPD, KC_VOLU, \
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD, \
RGB_TOG, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, RGB_LYR, RGB_THM, _______, _______, RESET, _______, _______, _______, _______, _______, _______, KC_PGUP, \
+ _______, RGB_LYR, RGB_THM, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, KC_PGUP, \
_______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END \
)
/* Blank Template
diff --git a/layouts/community/tkl_ansi/xyverz/keymap.c b/layouts/community/tkl_ansi/xyverz/keymap.c
index 1f79f87d1b..aec179bc12 100644
--- a/layouts/community/tkl_ansi/xyverz/keymap.c
+++ b/layouts/community/tkl_ansi/xyverz/keymap.c
@@ -41,7 +41,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_FL] = LAYOUT_tkl_ansi( /* Layer 3: Functions */ \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, KC_MPRV, KC_MPLY, KC_MNXT, \
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, KC_MPRV, KC_MPLY, KC_MNXT, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
diff --git a/layouts/community/tkl_ansi/yanfali/keymap.c b/layouts/community/tkl_ansi/yanfali/keymap.c
index 06c9507aff..9cdc0c4149 100644
--- a/layouts/community/tkl_ansi/yanfali/keymap.c
+++ b/layouts/community/tkl_ansi/yanfali/keymap.c
@@ -17,7 +17,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[FN] = LAYOUT_tkl_ansi( \
_______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, KC_WAKE,KC_PWR, KC_SLEP, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,EEP_RST, _______,_______,KC_VOLU, \
- _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,RESET, _______,_______,KC_VOLD, \
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,QK_BOOT, _______,_______,KC_VOLD, \
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
_______,_______,_______,_______,_______,_______,_______,KC_MUTE,KC_VOLD,KC_VOLU,_______, _______, KC_MPLY, \
_______,_______,_______, _______, _______,_______,MO(FN) ,_______, KC_MPRV,KC_MSTP,KC_MNXT)
diff --git a/layouts/default/65_ansi/default_65_ansi/keymap.c b/layouts/default/65_ansi/default_65_ansi/keymap.c
index 3ef02da07d..e206bd7851 100644
--- a/layouts/default/65_ansi/default_65_ansi/keymap.c
+++ b/layouts/default/65_ansi/default_65_ansi/keymap.c
@@ -1,9 +1,13 @@
+// Copyright 2018-2022 QMK (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
- * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
@@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
- * │Ctrl│GUI │Alt │ │Alt│GUI│Ctl│ ↠│ ↓ │ → │
+ * │Ctrl│GUI │Alt │ │Alt│ Fn│Ctl│ ↠│ ↓ │ → │
* └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
*/
[0] = LAYOUT_65_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_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_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, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- )
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Delete│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+ [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_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
};
diff --git a/layouts/default/65_ansi_blocker/default_65_ansi_blocker/keymap.c b/layouts/default/65_ansi_blocker/default_65_ansi_blocker/keymap.c
index 7f39d19d95..7036e7295f 100644
--- a/layouts/default/65_ansi_blocker/default_65_ansi_blocker/keymap.c
+++ b/layouts/default/65_ansi_blocker/default_65_ansi_blocker/keymap.c
@@ -1,9 +1,13 @@
+// Copyright 2019-2022 QMK (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
- * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
@@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
- * │Ctrl│GUI │Alt │ │ Alt│Ctrl│ │ ↠│ ↓ │ → │
+ * │Ctrl│GUI │Alt │ │ Alt│ Fn│ │ ↠│ ↓ │ → │
* └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
*/
[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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- )
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Delete│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+ [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_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
};
diff --git a/layouts/default/65_ansi_blocker_split_bs/default_65_ansi_blocker_split_bs/keymap.c b/layouts/default/65_ansi_blocker_split_bs/default_65_ansi_blocker_split_bs/keymap.c
index 6fb5425b50..6bca761830 100644
--- a/layouts/default/65_ansi_blocker_split_bs/default_65_ansi_blocker_split_bs/keymap.c
+++ b/layouts/default/65_ansi_blocker_split_bs/default_65_ansi_blocker_split_bs/keymap.c
@@ -1,9 +1,13 @@
+// Copyright 2020-2022 QMK (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#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│
+ * │Esc│ 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│
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
@@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
- * │Ctrl│GUI │Alt │ │ Alt│Ctrl│ │ ↠│ ↓ │ → │
+ * │Ctrl│GUI │Alt │ │ Alt│ Fn│ │ ↠│ ↓ │ → │
* └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
*/
[0] = LAYOUT_65_ansi_blocker_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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- )
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+ [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_DEL, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, KC_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
};
diff --git a/layouts/default/65_ansi_blocker_tsangan/default_65_ansi_blocker_tsangan/keymap.c b/layouts/default/65_ansi_blocker_tsangan/default_65_ansi_blocker_tsangan/keymap.c
index 68b1f7b914..f899242ed4 100644
--- a/layouts/default/65_ansi_blocker_tsangan/default_65_ansi_blocker_tsangan/keymap.c
+++ b/layouts/default/65_ansi_blocker_tsangan/default_65_ansi_blocker_tsangan/keymap.c
@@ -1,9 +1,13 @@
+// Copyright 2020-2022 QMK (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
- * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
@@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
* ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤
- * │Ctrl │GUI│Alt │ │ Alt│ │ ↠│ ↓ │ → │
+ * │Ctrl │GUI│Alt │ │ Fn│ │ ↠│ ↓ │ → │
* └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘
*/
[0] = LAYOUT_65_ansi_blocker_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_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_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_LEFT, KC_DOWN, KC_RGHT
- )
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Delete│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │
+ * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘
+ */
+ [1] = LAYOUT_65_ansi_blocker_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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
};
diff --git a/layouts/default/65_ansi_blocker_tsangan/readme.md b/layouts/default/65_ansi_blocker_tsangan/readme.md
index 879742fee8..963914784e 100644
--- a/layouts/default/65_ansi_blocker_tsangan/readme.md
+++ b/layouts/default/65_ansi_blocker_tsangan/readme.md
@@ -1,6 +1,5 @@
# 65_ansi_blocker_tsangan
LAYOUT_65_ansi_blocker_tsangan
-
+
This is a Tsangan-inspired 65% ANSI layout with a blocker next to the arrows and 1.5u-1u-1.5u-7u-1.5u bottom row.
- \ No newline at end of file
diff --git a/layouts/default/65_ansi_blocker_tsangan_split_bs/default_65_ansi_blocker_tsangan_split_bs/keymap.c b/layouts/default/65_ansi_blocker_tsangan_split_bs/default_65_ansi_blocker_tsangan_split_bs/keymap.c
new file mode 100644
index 0000000000..446d2c72ab
--- /dev/null
+++ b/layouts/default/65_ansi_blocker_tsangan_split_bs/default_65_ansi_blocker_tsangan_split_bs/keymap.c
@@ -0,0 +1,50 @@
+// Copyright 2022 QMK (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#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│Bsp│Hom│
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │PgU│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │PgD│
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤
+ * │Ctrl │GUI│Alt │ │ Fn│ │ ↠│ ↓ │ → │
+ * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘
+ */
+ [0] = LAYOUT_65_ansi_blocker_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_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
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │
+ * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘
+ */
+ [1] = LAYOUT_65_ansi_blocker_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_DEL, _______,
+ _______, _______, _______, _______, _______, _______, KC_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/layouts/default/65_ansi_blocker_tsangan_split_bs/info.json b/layouts/default/65_ansi_blocker_tsangan_split_bs/info.json
new file mode 100644
index 0000000000..6826b1f6ea
--- /dev/null
+++ b/layouts/default/65_ansi_blocker_tsangan_split_bs/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "65% ANSI Tsangan layout with blocker and split Backspace",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_65_ansi_blocker_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":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.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":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/65_ansi_blocker_tsangan_split_bs/layout.json b/layouts/default/65_ansi_blocker_tsangan_split_bs/layout.json
new file mode 100644
index 0000000000..f2f92557e5
--- /dev/null
+++ b/layouts/default/65_ansi_blocker_tsangan_split_bs/layout.json
@@ -0,0 +1,5 @@
+[{a:7},"","","","","","","","","","","","","","","",""],
+[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",""],
+[{w:1.75},"","","","","","","","","","","","",{w:2.25},"",""],
+[{w:2.25},"","","","","","","","","","","",{w:1.75},"","",""],
+[{w:1.5},"","",{w:1.5},"",{w:7},"",{w:1.5},"",{x:0.5},"","",""]
diff --git a/layouts/default/65_ansi_blocker_tsangan_split_bs/readme.md b/layouts/default/65_ansi_blocker_tsangan_split_bs/readme.md
new file mode 100644
index 0000000000..3b43d0a7f1
--- /dev/null
+++ b/layouts/default/65_ansi_blocker_tsangan_split_bs/readme.md
@@ -0,0 +1,6 @@
+# 65_ansi_blocker_tsangan_split_bs
+
+ LAYOUT_65_ansi_blocker_tsangan_split_bs
+
+This is a Tsangan-inspired 65% ANSI layout with a blocker next to the arrows, a split Backspace, and 1.5u-1u-1.5u-7u-1.5u bottom row.
+
diff --git a/layouts/default/65_ansi_split_bs/default_65_ansi_split_bs/keymap.c b/layouts/default/65_ansi_split_bs/default_65_ansi_split_bs/keymap.c
index 15e374e0c6..be974060e7 100644
--- a/layouts/default/65_ansi_split_bs/default_65_ansi_split_bs/keymap.c
+++ b/layouts/default/65_ansi_split_bs/default_65_ansi_split_bs/keymap.c
@@ -1,9 +1,13 @@
+// Copyright 2020-2022 QMK (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#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│
+ * │Esc│ 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│
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
@@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
- * │Ctrl│GUI │Alt │ │Alt│GUI│Ctl│ ↠│ ↓ │ → │
+ * │Ctrl│GUI │Alt │ │Alt│ Fn│Ctl│ ↠│ ↓ │ → │
* └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
*/
[0] = LAYOUT_65_ansi_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_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_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, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- )
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│Pause│ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+ * │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+ [1] = LAYOUT_65_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_DEL, _______,
+ _______, _______, _______, _______, _______, _______, KC_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, KC_PAUS, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
};
diff --git a/layouts/default/65_iso/default_65_iso/keymap.c b/layouts/default/65_iso/default_65_iso/keymap.c
index 76a27df862..833945bebf 100644
--- a/layouts/default/65_iso/default_65_iso/keymap.c
+++ b/layouts/default/65_iso/default_65_iso/keymap.c
@@ -1,9 +1,13 @@
+// Copyright 2019-2022 QMK (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
- * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │PgU│
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠Ent├───┤
@@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
* │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
- * │Ctrl│GUI │Alt │ │Alt│GUI│Ctl│ ↠│ ↓ │ → │
+ * │Ctrl│GUI │Alt │ │Alt│ Fn│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_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_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
- )
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Delete│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠├───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │Pau│ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │ │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+ [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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
};
diff --git a/layouts/default/65_iso_blocker/default_65_iso_blocker/keymap.c b/layouts/default/65_iso_blocker/default_65_iso_blocker/keymap.c
index f1d5ac4686..9e1f99afaa 100644
--- a/layouts/default/65_iso_blocker/default_65_iso_blocker/keymap.c
+++ b/layouts/default/65_iso_blocker/default_65_iso_blocker/keymap.c
@@ -1,9 +1,13 @@
+// Copyright 2019-2022 QMK (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
- * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
+ * │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│Hom│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │PgU│
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠Ent├───┤
@@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
* │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
- * │Ctrl│GUI │Alt │ │ Alt│Ctrl│ │ ↠│ ↓ │ → │
+ * │Ctrl│GUI │Alt │ │ Alt│ Fn│ │ ↠│ ↓ │ → │
* └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
*/
[0] = LAYOUT_65_iso_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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- )
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Delete│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠├───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │Pau│ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │ │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+ [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_DEL, _______,
+ _______, _______, _______, _______, _______, _______, KC_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
};
diff --git a/layouts/default/65_iso_blocker_split_bs/default_65_iso_blocker_split_bs/keymap.c b/layouts/default/65_iso_blocker_split_bs/default_65_iso_blocker_split_bs/keymap.c
index f497553fe2..a816c3746a 100644
--- a/layouts/default/65_iso_blocker_split_bs/default_65_iso_blocker_split_bs/keymap.c
+++ b/layouts/default/65_iso_blocker_split_bs/default_65_iso_blocker_split_bs/keymap.c
@@ -1,9 +1,13 @@
+// Copyright 2020-2022 QMK (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#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│
+ * │Esc│ 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├───┤
@@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
* │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
- * │Ctrl│GUI │Alt │ │ Alt│Ctrl│ │ ↠│ ↓ │ → │
+ * │Ctrl│GUI │Alt │ │ Alt│ Fn│ │ ↠│ ↓ │ → │
* └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
*/
[0] = LAYOUT_65_iso_blocker_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_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_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_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
- )
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠├───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │Pau│ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │ │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
+ */
+ [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_DEL, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, KC_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
};
diff --git a/layouts/default/65_iso_blocker_tsangan/default_65_iso_blocker_tsangan/keymap.c b/layouts/default/65_iso_blocker_tsangan/default_65_iso_blocker_tsangan/keymap.c
new file mode 100644
index 0000000000..7a0197df19
--- /dev/null
+++ b/layouts/default/65_iso_blocker_tsangan/default_65_iso_blocker_tsangan/keymap.c
@@ -0,0 +1,50 @@
+// Copyright 2022 QMK (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#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│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 │ │ Fn│ │ ↠│ ↓ │ → │
+ * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘
+ */
+ [0] = LAYOUT_65_iso_blocker_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_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, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+ * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ Delete│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+ * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠├───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │Pau│ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │ │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │
+ * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │
+ * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘
+ */
+ [1] = LAYOUT_65_iso_blocker_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_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/layouts/default/65_iso_blocker_tsangan/info.json b/layouts/default/65_iso_blocker_tsangan/info.json
new file mode 100644
index 0000000000..bdeea87a1e
--- /dev/null
+++ b/layouts/default/65_iso_blocker_tsangan/info.json
@@ -0,0 +1,82 @@
+{
+ "keyboard_name": "65% ISO Tsangan layout with blocker",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_65_iso_blocker_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":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.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":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/65_iso_blocker_tsangan/layout.json b/layouts/default/65_iso_blocker_tsangan/layout.json
new file mode 100644
index 0000000000..8b43ffdcc5
--- /dev/null
+++ b/layouts/default/65_iso_blocker_tsangan/layout.json
@@ -0,0 +1,5 @@
+[{a:7},"","","","","","","","","","","","","",{w:2},"",""],
+[{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.5},"","",{w:1.5},"",{w:7},"",{w:1.5},"",{x:0.5},"","",""]
diff --git a/layouts/default/65_iso_blocker_tsangan/readme.md b/layouts/default/65_iso_blocker_tsangan/readme.md
new file mode 100644
index 0000000000..b38d346e94
--- /dev/null
+++ b/layouts/default/65_iso_blocker_tsangan/readme.md
@@ -0,0 +1,5 @@
+# 65_iso_blocker_tsangan
+
+ LAYOUT_65_iso_blocker_tsangan
+
+This is a Tsangan-inspired 65% ISO layout with a blocker next to the arrows and 1.5u-1u-1.5u-7u-1.5u bottom row.
diff --git a/layouts/default/65_iso_blocker_tsangan_split_bs/default_65_iso_blocker_tsangan_split_bs/keymap.c b/layouts/default/65_iso_blocker_tsangan_split_bs/default_65_iso_blocker_tsangan_split_bs/keymap.c
new file mode 100644
index 0000000000..c5b5dad8a1
--- /dev/null
+++ b/layouts/default/65_iso_blocker_tsangan_split_bs/default_65_iso_blocker_tsangan_split_bs/keymap.c
@@ -0,0 +1,50 @@
+// Copyright 2022 QMK (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#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│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 │ │ Fn│ │ ↠│ ↓ │ → │
+ * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘
+ */
+ [0] = LAYOUT_65_iso_blocker_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_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, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠├───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │Pau│ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │ │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │
+ * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │
+ * └─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘
+ */
+ [1] = LAYOUT_65_iso_blocker_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_DEL, _______,
+ _______, _______, _______, _______, _______, _______, KC_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
+};
diff --git a/layouts/default/65_iso_blocker_tsangan_split_bs/info.json b/layouts/default/65_iso_blocker_tsangan_split_bs/info.json
new file mode 100644
index 0000000000..8d51acd5fa
--- /dev/null
+++ b/layouts/default/65_iso_blocker_tsangan_split_bs/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "65% ISO Tsangan layout with blocker and split Backspace",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_65_iso_blocker_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":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.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":13, "y":4},
+ {"x":14, "y":4},
+ {"x":15, "y":4}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/65_iso_blocker_tsangan_split_bs/layout.json b/layouts/default/65_iso_blocker_tsangan_split_bs/layout.json
new file mode 100644
index 0000000000..2e7c05dc5a
--- /dev/null
+++ b/layouts/default/65_iso_blocker_tsangan_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.5},"","",{w:1.5},"",{w:7},"",{w:1.5},"",{x:0.5},"","",""]
diff --git a/layouts/default/65_iso_blocker_tsangan_split_bs/readme.md b/layouts/default/65_iso_blocker_tsangan_split_bs/readme.md
new file mode 100644
index 0000000000..c01c5a003e
--- /dev/null
+++ b/layouts/default/65_iso_blocker_tsangan_split_bs/readme.md
@@ -0,0 +1,5 @@
+# 65_iso_blocker_tsangan_split_bs
+
+ LAYOUT_65_iso_blocker_tsangan_split_bs
+
+This is a Tsangan-inspired 65% ISO layout with a blocker next to the arrows, a split Backspace, and 1.5u-1u-1.5u-7u-1.5u bottom row.
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
index 65293bd58f..70c91a43b2 100644
--- 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
@@ -1,9 +1,13 @@
+// Copyright 2019-2022 QMK (@qmk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#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│
+ * │Esc│ 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├───┤
@@ -11,14 +15,36 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
* │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ ↑ │End│
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
- * │Ctrl│GUI │Alt │ │Alt│GUI│Ctl│ ↠│ ↓ │ → │
+ * │Ctrl│GUI │Alt │ │Alt│ Fn│Ctl│ ↠│ ↓ │ → │
* └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
*/
[0] = LAYOUT_65_iso_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_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_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
- )
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ /*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│Del│Del│ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+ * │ │ │ │ │ │ │Ins│ │ │ │ │PSc│Scr│ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠├───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │Pau│ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+ * │ │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
+ */
+ [1] = LAYOUT_65_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_DEL, KC_DEL, _______,
+ _______, _______, _______, _______, _______, _______, KC_INS, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PAUS, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+
};
diff --git a/layouts/default/readme.md b/layouts/default/readme.md
index f414282e80..0d2182e671 100644
--- a/layouts/default/readme.md
+++ b/layouts/default/readme.md
@@ -262,6 +262,21 @@ LAYOUT_65_ansi_blocker_tsangan
```
```
+LAYOUT_65_ansi_blocker_tsangan_split_bs
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │
+└─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘
+```
+
+```
LAYOUT_65_ansi_split_bs
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
@@ -284,9 +299,9 @@ LAYOUT_65_iso
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠├───┤
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
-│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
│ │ │ │ │ │ │ │ │ │ │
└────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
```
@@ -299,9 +314,9 @@ LAYOUT_65_iso_blocker
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠├───┤
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
-│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
│ │ │ │ │ │ │ │ │ │ │
└────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
```
@@ -314,14 +329,44 @@ LAYOUT_65_iso_blocker_split_bs
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠├───┤
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
-│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
│ │ │ │ │ │ │ │ │ │ │
└────┴────┴────┴────────────────────────┴────┴────┘ └───┴───┴───┘
```
```
+LAYOUT_65_iso_blocker_tsangan
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠├───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │
+└─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘
+```
+
+```
+LAYOUT_65_iso_blocker_tsangan_split_bs
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠├───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬─┬───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │
+└─────┴───┴─────┴───────────────────────────┴─────┘ └───┴───┴───┘
+```
+
+```
LAYOUT_65_iso_split_bs
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
@@ -329,9 +374,9 @@ LAYOUT_65_iso_split_bs
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠├───┤
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
-│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
-├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
│ │ │ │ │ │ │ │ │ │ │
└────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
```
@@ -453,6 +498,60 @@ LAYOUT_tkl_ansi
```
```
+LAYOUT_tkl_ansi_split_bs_rshift
+┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┬───┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │
+└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+```
+
+```
+LAYOUT_tkl_ansi_tsangan
+┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───â”
+│ │ │ │ │ │ │ │ │ │ │ │
+└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+```
+
+```
+LAYOUT_tkl_ansi_tsangan_split_bs_rshift
+┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┬───┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘
+│ │ │ │ │ │ │ │ │ │ │ │ │ │
+├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ ┌───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+│ │ │ │ │ │ │ │ │ │ │ │
+└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+```
+
+```
LAYOUT_tkl_iso
┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
@@ -471,6 +570,60 @@ LAYOUT_tkl_iso
```
```
+LAYOUT_tkl_iso_split_bs_rshift
+┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┬───┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠│ └───┴───┴───┘
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │
+└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+```
+
+```
+LAYOUT_tkl_iso_tsangan
+┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┠┌───┬───┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠│ └───┴───┴───┘
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───â”
+│ │ │ │ │ │ │ │ │ │ │ │
+└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+```
+
+```
+LAYOUT_tkl_iso_tsangan_split_bs_rshift
+┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+└───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┬───┬───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ├───┼───┼───┤
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠│ └───┴───┴───┘
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤ ┌───â”
+│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+│ │ │ │ │ │ │ │ │ │ │ │
+└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+```
+
+```
LAYOUT_tkl_f13_ansi
┌───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┬───┬───┬───â”┌───┠┌───┬───┬───â”
│ ││ │ │ │ ││ │ │ │ ││ │ │ │ ││ │ │ │ │ │
diff --git a/layouts/default/tkl_ansi/readme.md b/layouts/default/tkl_ansi/readme.md
index cd4197ef4e..71844eacab 100644
--- a/layouts/default/tkl_ansi/readme.md
+++ b/layouts/default/tkl_ansi/readme.md
@@ -1,3 +1,5 @@
# tkl_ansi
LAYOUT_tkl_ansi
+
+A standard ANSI TKL layout.
diff --git a/layouts/default/tkl_ansi_split_bs_rshift/default_tkl_ansi_split_bs_rshift/keymap.c b/layouts/default/tkl_ansi_split_bs_rshift/default_tkl_ansi_split_bs_rshift/keymap.c
new file mode 100644
index 0000000000..17dae9adab
--- /dev/null
+++ b/layouts/default/tkl_ansi_split_bs_rshift/default_tkl_ansi_split_bs_rshift/keymap.c
@@ -0,0 +1,32 @@
+// 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] = {
+ /*
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │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 │ - │ = │Bsp│Bsp│ │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│Sft│ │ ↑ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───â”
+ * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ↠│ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
+ [0] = LAYOUT_tkl_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_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_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_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_ansi_split_bs_rshift/info.json b/layouts/default/tkl_ansi_split_bs_rshift/info.json
new file mode 100644
index 0000000000..90c0a7e53a
--- /dev/null
+++ b/layouts/default/tkl_ansi_split_bs_rshift/info.json
@@ -0,0 +1,105 @@
+{
+ "keyboard_name": "Tenkeyless ANSI layout with split Backspace and split Right Shift",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_tkl_ansi_split_bs_rshift": {
+ "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.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":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":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}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/tkl_ansi_split_bs_rshift/layout.json b/layouts/default/tkl_ansi_split_bs_rshift/layout.json
new file mode 100644
index 0000000000..41efd9789d
--- /dev/null
+++ b/layouts/default/tkl_ansi_split_bs_rshift/layout.json
@@ -0,0 +1,6 @@
+[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""],
+[{y:0.25},"","","","","","","","","","","","","","","",{x:0.25},"","",""],
+[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""],
+[{w:1.75},"","","","","","","","","","","","",{w:2.25},""],
+[{w:2.25},"","","","","","","","","","","",{w:1.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_ansi_split_bs_rshift/readme.md b/layouts/default/tkl_ansi_split_bs_rshift/readme.md
new file mode 100644
index 0000000000..0d5f126240
--- /dev/null
+++ b/layouts/default/tkl_ansi_split_bs_rshift/readme.md
@@ -0,0 +1,5 @@
+# tkl_ansi_split_bs_rshift
+
+ LAYOUT_tkl_ansi_split_bs_rshift
+
+A standard ANSI TKL layout with split Backspace and split Right Shift.
diff --git a/layouts/default/tkl_ansi_tsangan/default_tkl_ansi_tsangan/keymap.c b/layouts/default/tkl_ansi_tsangan/default_tkl_ansi_tsangan/keymap.c
new file mode 100644
index 0000000000..7e41360702
--- /dev/null
+++ b/layouts/default/tkl_ansi_tsangan/default_tkl_ansi_tsangan/keymap.c
@@ -0,0 +1,32 @@
+// 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] = {
+ /*
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │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 │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───â”
+ * │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─────┤ ┌───┼───┼───â”
+ * │Ctrl │GUI│Alt │ │ Alt│App│ Ctrl│ │ ↠│ ↓ │ → │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+ */
+ [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_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_ansi_tsangan/info.json b/layouts/default/tkl_ansi_tsangan/info.json
new file mode 100644
index 0000000000..7a1239c280
--- /dev/null
+++ b/layouts/default/tkl_ansi_tsangan/info.json
@@ -0,0 +1,102 @@
+{
+ "keyboard_name": "Tenkeyless ANSI layout with Tsangan Bottom Row",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_tkl_ansi_tsangan": {
+ "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.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_ansi_tsangan/layout.json b/layouts/default/tkl_ansi_tsangan/layout.json
new file mode 100644
index 0000000000..97f2d2fcba
--- /dev/null
+++ b/layouts/default/tkl_ansi_tsangan/layout.json
@@ -0,0 +1,6 @@
+[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{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_ansi_tsangan/readme.md b/layouts/default/tkl_ansi_tsangan/readme.md
new file mode 100644
index 0000000000..fcbc256972
--- /dev/null
+++ b/layouts/default/tkl_ansi_tsangan/readme.md
@@ -0,0 +1,5 @@
+# tkl_ansi_tsangan
+
+ LAYOUT_tkl_ansi_tsangan
+
+Tenkeyless ANSI layout with Tsangan Bottom Row.
diff --git a/layouts/default/tkl_ansi_tsangan_split_bs_rshift/default_tkl_ansi_tsangan_split_bs_rshift/keymap.c b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/default_tkl_ansi_tsangan_split_bs_rshift/keymap.c
new file mode 100644
index 0000000000..4f25530da7
--- /dev/null
+++ b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/default_tkl_ansi_tsangan_split_bs_rshift/keymap.c
@@ -0,0 +1,32 @@
+// 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] = {
+ /*
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │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 │ - │ = │Bsp│Bsp│ │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│Sft│ │ ↑ │
+ * ├─────┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+ * │Ctrl │GUI│Alt │ │ Alt│App│ Ctrl│ │ ↠│ ↓ │ → │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+ */
+ [0] = LAYOUT_tkl_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_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_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_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_ansi_tsangan_split_bs_rshift/info.json b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/info.json
new file mode 100644
index 0000000000..9068a4692c
--- /dev/null
+++ b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/info.json
@@ -0,0 +1,104 @@
+{
+ "keyboard_name": "Tenkeyless ANSI layout with split Backspace, split Right Shift, and Tsangan Bottom Row",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_tkl_ansi_tsangan_split_bs_rshift": {
+ "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.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":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":1.75},
+ {"x":14, "y":4.25},
+ {"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_ansi_tsangan_split_bs_rshift/layout.json b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/layout.json
new file mode 100644
index 0000000000..d29ae38fe2
--- /dev/null
+++ b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/layout.json
@@ -0,0 +1,6 @@
+[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""],
+[{y:0.25},"","","","","","","","","","","","","","","",{x:0.25},"","",""],
+[{w:1.5},"","","","","","","","","","","","","",{w:1.5},"",{x:0.25},"","",""],
+[{w:1.75},"","","","","","","","","","","","",{w:2.25},""],
+[{w:2.25},"","","","","","","","","","","",{w:1.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_ansi_tsangan_split_bs_rshift/readme.md b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/readme.md
new file mode 100644
index 0000000000..8194ac3829
--- /dev/null
+++ b/layouts/default/tkl_ansi_tsangan_split_bs_rshift/readme.md
@@ -0,0 +1,5 @@
+# tkl_ansi_tsangan_split_bs_rshift
+
+ LAYOUT_tkl_ansi_tsangan_split_bs_rshift
+
+Tenkeyless ANSI layout with split Backspace, split Right Shift, and Tsangan Bottom Row.
diff --git a/layouts/default/tkl_iso/readme.md b/layouts/default/tkl_iso/readme.md
index 27281687cd..b7d954a9fb 100644
--- a/layouts/default/tkl_iso/readme.md
+++ b/layouts/default/tkl_iso/readme.md
@@ -1,3 +1,5 @@
# tkl_iso
LAYOUT_tkl_iso
+
+A standard ISO TKL layout.
diff --git a/layouts/default/tkl_iso_split_bs_rshift/default_tkl_iso_split_bs_rshift/keymap.c b/layouts/default/tkl_iso_split_bs_rshift/default_tkl_iso_split_bs_rshift/keymap.c
new file mode 100644
index 0000000000..992f7d9a2e
--- /dev/null
+++ b/layouts/default/tkl_iso_split_bs_rshift/default_tkl_iso_split_bs_rshift/keymap.c
@@ -0,0 +1,32 @@
+// 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] = {
+ /*
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │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 │ - │ = │Bsp│Bsp│ │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│Sft│ │ ↑ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤ ┌───┼───┼───â”
+ * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ↠│ ↓ │ → │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘
+ */
+ [0] = LAYOUT_tkl_iso_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_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_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_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_iso_split_bs_rshift/info.json b/layouts/default/tkl_iso_split_bs_rshift/info.json
new file mode 100644
index 0000000000..4f0edaff2f
--- /dev/null
+++ b/layouts/default/tkl_iso_split_bs_rshift/info.json
@@ -0,0 +1,106 @@
+{
+ "keyboard_name": "Tenkeyless ISO layout with split Backspace and split Right Shift",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_tkl_iso_split_bs_rshift": {
+ "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.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":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":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}
+ ]
+ }
+ }
+}
diff --git a/layouts/default/tkl_iso_split_bs_rshift/layout.json b/layouts/default/tkl_iso_split_bs_rshift/layout.json
new file mode 100644
index 0000000000..dd96902f73
--- /dev/null
+++ b/layouts/default/tkl_iso_split_bs_rshift/layout.json
@@ -0,0 +1,6 @@
+[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""],
+[{y:0.25},"","","","","","","","","","","","","","","",{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:1.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_iso_split_bs_rshift/readme.md b/layouts/default/tkl_iso_split_bs_rshift/readme.md
new file mode 100644
index 0000000000..e8cae42a02
--- /dev/null
+++ b/layouts/default/tkl_iso_split_bs_rshift/readme.md
@@ -0,0 +1,5 @@
+# tkl_iso_split_bs_rshift
+
+ LAYOUT_tkl_iso_split_bs_rshift
+
+A standard ISO TKL layout with split Backspace and split Right Shift.
diff --git a/layouts/default/tkl_iso_tsangan/default_tkl_iso_tsangan/keymap.c b/layouts/default/tkl_iso_tsangan/default_tkl_iso_tsangan/keymap.c
new file mode 100644
index 0000000000..202110046a
--- /dev/null
+++ b/layouts/default/tkl_iso_tsangan/default_tkl_iso_tsangan/keymap.c
@@ -0,0 +1,32 @@
+// 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] = {
+ /*
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │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│
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠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_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_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_iso_tsangan/info.json b/layouts/default/tkl_iso_tsangan/info.json
new file mode 100644
index 0000000000..8dd5e9f71e
--- /dev/null
+++ b/layouts/default/tkl_iso_tsangan/info.json
@@ -0,0 +1,103 @@
+{
+ "keyboard_name": "Tenkeyless ISO layout with Tsangan Bottom Row",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_tkl_iso_tsangan": {
+ "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.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_iso_tsangan/layout.json b/layouts/default/tkl_iso_tsangan/layout.json
new file mode 100644
index 0000000000..4c69641ab9
--- /dev/null
+++ b/layouts/default/tkl_iso_tsangan/layout.json
@@ -0,0 +1,6 @@
+[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{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_iso_tsangan/readme.md b/layouts/default/tkl_iso_tsangan/readme.md
new file mode 100644
index 0000000000..a9f380dcef
--- /dev/null
+++ b/layouts/default/tkl_iso_tsangan/readme.md
@@ -0,0 +1,5 @@
+# tkl_iso_tsangan
+
+ LAYOUT_tkl_iso_tsangan
+
+Tenkeyless ISO layout with Tsangan Bottom Row.
diff --git a/layouts/default/tkl_iso_tsangan_split_bs_rshift/default_tkl_iso_tsangan_split_bs_rshift/keymap.c b/layouts/default/tkl_iso_tsangan_split_bs_rshift/default_tkl_iso_tsangan_split_bs_rshift/keymap.c
new file mode 100644
index 0000000000..b5635bc3b7
--- /dev/null
+++ b/layouts/default/tkl_iso_tsangan_split_bs_rshift/default_tkl_iso_tsangan_split_bs_rshift/keymap.c
@@ -0,0 +1,32 @@
+// 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] = {
+ /*
+ * ┌───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───┬───┠┌───┬───┬───â”
+ * │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 │ - │ = │Bsp│Bsp│ │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│Sft│ │ ↑ │
+ * ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤ ┌───┼───┼───â”
+ * │Ctrl │GUI│Alt │ │ Alt│App│ Ctrl│ │ ↠│ ↓ │ → │
+ * └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ └───┴───┴───┘
+ */
+ [0] = LAYOUT_tkl_iso_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_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_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_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_iso_tsangan_split_bs_rshift/info.json b/layouts/default/tkl_iso_tsangan_split_bs_rshift/info.json
new file mode 100644
index 0000000000..1a9abeb159
--- /dev/null
+++ b/layouts/default/tkl_iso_tsangan_split_bs_rshift/info.json
@@ -0,0 +1,105 @@
+{
+ "keyboard_name": "Tenkeyless ISO layout with split Backspace, split Right Shift, and Tsangan Bottom Row",
+ "url": "",
+ "maintainer": "qmk",
+ "layouts": {
+ "LAYOUT_tkl_iso_tsangan_split_bs_rshift": {
+ "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.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":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":1.75},
+ {"x":14, "y":4.25},
+ {"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_iso_tsangan_split_bs_rshift/layout.json b/layouts/default/tkl_iso_tsangan_split_bs_rshift/layout.json
new file mode 100644
index 0000000000..4ee61a45cc
--- /dev/null
+++ b/layouts/default/tkl_iso_tsangan_split_bs_rshift/layout.json
@@ -0,0 +1,6 @@
+[{a:7},"",{x:1},"","","","",{x:0.5},"","","","",{x:0.5},"","","","",{x:0.25},"","",""],
+[{y:0.25},"","","","","","","","","","","","","","","",{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:1.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_iso_tsangan_split_bs_rshift/readme.md b/layouts/default/tkl_iso_tsangan_split_bs_rshift/readme.md
new file mode 100644
index 0000000000..2c7f680ec1
--- /dev/null
+++ b/layouts/default/tkl_iso_tsangan_split_bs_rshift/readme.md
@@ -0,0 +1,5 @@
+# tkl_iso_tsangan_split_bs_rshift
+
+ LAYOUT_tkl_iso_tsangan_split_bs_rshift
+
+Tenkeyless ISO layout with split Backspace, split Right Shift, and Tsangan Bottom Row.
diff --git a/lib/chibios b/lib/chibios
-Subproject 257302333c31f1f710800c2b97acf3550de043e
+Subproject f836d24b06d7265696a33d1cea010bd6a931791
diff --git a/lib/chibios-contrib b/lib/chibios-contrib
-Subproject 2a6b73ff51baf89083a220b6692a04ca2cae875
+Subproject d03aa9cc2f76468e431c71421015102956dd6ad
diff --git a/lib/fnv/Makefile b/lib/fnv/Makefile
new file mode 100644
index 0000000000..c0673ded40
--- /dev/null
+++ b/lib/fnv/Makefile
@@ -0,0 +1,304 @@
+#!/bin/make
+#
+# hash - makefile for FNV hash tools
+#
+# @(#) $Revision: 5.2 $
+# @(#) $Id: Makefile,v 5.2 2012/03/21 01:42:15 chongo Exp $
+# @(#) $Source: /usr/local/src/cmd/fnv/RCS/Makefile,v $
+#
+# See:
+# http://www.isthe.com/chongo/tech/comp/fnv/index.html
+#
+# for the most up to date copy of this code and the FNV hash home page.
+#
+# Please do not copyright this code. This code is in the public domain.
+#
+# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+#
+# By:
+# chongo <Landon Curt Noll> /\oo/\
+# http://www.isthe.com/chongo/
+#
+# Share and Enjoy! :-)
+
+# make tools
+#
+SHELL= /bin/sh
+CFLAGS= -O3 -g3
+#CFLAGS= -O2 -g3
+#CC= cc
+AR= ar
+TAR= tar
+EGREP= egrep
+GZIP_BIN= gzip
+INSTALL= install
+
+# If your system needs ranlib use:
+# RANLIB= ranlib
+# otherwise use:
+# RANLIB= :
+#
+#RANLIB= ranlib
+RANLIB= :
+
+# where to install things
+#
+DESTBIN= /usr/local/bin
+DESTLIB= /usr/local/lib
+DESTINC= /usr/local/include
+
+# what to build
+#
+SRC= hash_32.c hash_32a.c hash_64.c hash_64a.c \
+ fnv32.c fnv64.c \
+ have_ulong64.c test_fnv.c
+NO64BIT_SRC= no64bit_fnv64.c no64bit_hash_64.c \
+ no64bit_hash_64a.c no64bit_test_fnv.c
+HSRC= fnv.h \
+ longlong.h
+ALL= ${SRC} ${HSRC} \
+ README Makefile
+PROGS= fnv032 fnv064 fnv132 fnv164 fnv1a32 fnv1a64
+OBSOLETE_PROGS= fnv0_32 fnv0_64 fnv1_32 fnv1_64 fnv1a_32 fnv1a_64
+NO64BIT_PROGS= no64bit_fnv064 no64bit_fnv164 no64bit_fnv1a64
+LIBS= libfnv.a
+LIBOBJ= hash_32.o hash_64.o hash_32a.o hash_64a.o test_fnv.o
+NO64BIT_OBJ= no64bit_fnv64.o no64bit_hash_64.o \
+ no64bit_hash_64a.o no64bit_test_fnv.o
+OTHEROBJ= fnv32.o fnv64.o
+TARGETS= ${LIBOBJ} ${LIBS} ${PROGS}
+
+# default rule
+#
+all: ${TARGETS}
+
+# things to build
+#
+hash_32.o: hash_32.c longlong.h fnv.h
+ ${CC} ${CFLAGS} hash_32.c -c
+
+hash_64.o: hash_64.c longlong.h fnv.h
+ ${CC} ${CFLAGS} hash_64.c -c
+
+hash_32a.o: hash_32a.c longlong.h fnv.h
+ ${CC} ${CFLAGS} hash_32a.c -c
+
+hash_64a.o: hash_64a.c longlong.h fnv.h
+ ${CC} ${CFLAGS} hash_64a.c -c
+
+test_fnv.o: test_fnv.c longlong.h fnv.h
+ ${CC} ${CFLAGS} test_fnv.c -c
+
+fnv32.o: fnv32.c longlong.h fnv.h
+ ${CC} ${CFLAGS} fnv32.c -c
+
+fnv032: fnv32.o libfnv.a
+ ${CC} fnv32.o libfnv.a -o fnv032
+
+fnv64.o: fnv64.c longlong.h fnv.h
+ ${CC} ${CFLAGS} fnv64.c -c
+
+fnv064: fnv64.o libfnv.a
+ ${CC} fnv64.o libfnv.a -o fnv064
+
+libfnv.a: ${LIBOBJ}
+ rm -f $@
+ ${AR} rv $@ ${LIBOBJ}
+ ${RANLIB} $@
+
+fnv132: fnv032
+ -rm -f $@
+ -cp -f $? $@
+
+fnv1a32: fnv032
+ -rm -f $@
+ -cp -f $? $@
+
+fnv164: fnv064
+ -rm -f $@
+ -cp -f $? $@
+
+fnv1a64: fnv064
+ -rm -f $@
+ -cp -f $? $@
+
+longlong.h: have_ulong64.c Makefile
+ -@rm -f have_ulong64 have_ulong64.o ll_tmp longlong.h
+ @echo 'forming longlong.h'
+ @echo '/*' > longlong.h
+ @echo ' * DO NOT EDIT -- generated by the Makefile' >> longlong.h
+ @echo ' */' >> longlong.h
+ @echo '' >> longlong.h
+ @echo '#if !defined(__LONGLONG_H__)' >> longlong.h
+ @echo '#define __LONGLONG_H__' >> longlong.h
+ @echo '' >> longlong.h
+ @echo '/* do we have/want to use a long long type? */' >> longlong.h
+ -@rm -f have_ulong64.o have_ulong64
+ -@${CC} ${CFLAGS} have_ulong64.c -c 2>/dev/null; true
+ -@${CC} ${CFLAGS} have_ulong64.o -o have_ulong64 2>/dev/null; true
+ -@${SHELL} -c "./have_ulong64 > ll_tmp 2>/dev/null" \
+ >/dev/null 2>&1; true
+ -@if [ -s ll_tmp ]; then \
+ cat ll_tmp >> longlong.h; \
+ else \
+ echo '#undef HAVE_64BIT_LONG_LONG /* no */' >> longlong.h; \
+ fi
+ @echo '' >> longlong.h
+ @echo '/*' >> longlong.h
+ @echo ' * NO64BIT_LONG_LONG undef HAVE_64BIT_LONG_LONG' >> longlong.h
+ @echo ' */' >> longlong.h
+ @echo '#if defined(NO64BIT_LONG_LONG)' >> longlong.h
+ @echo '#undef HAVE_64BIT_LONG_LONG' >> longlong.h
+ @echo '#endif /* NO64BIT_LONG_LONG */' >> longlong.h
+ @echo '' >> longlong.h
+ @echo '#endif /* !__LONGLONG_H__ */' >> longlong.h
+ -@rm -f have_ulong64 have_ulong64.o ll_tmp
+ @echo 'longlong.h formed'
+
+# utilities
+#
+install: all
+ -@if [ -d "${DESTBIN}" ]; then \
+ echo " mkdir -p ${DESTBIN}"; \
+ mkdir -p ${DESTBIN}; \
+ fi
+ -@if [ -d "${DESTLIB}" ]; then \
+ echo " mkdir -p ${DESTLIB}"; \
+ mkdir -p ${DESTLIB}; \
+ fi
+ -@if [ -d "${DESTINC}" ]; then \
+ echo " mkdir -p ${DESTINC}"; \
+ mkdir -p ${DESTINC}; \
+ fi
+ ${INSTALL} -m 0755 ${PROGS} ${DESTBIN}
+ ${INSTALL} -m 0644 ${LIBS} ${DESTLIB}
+ ${RANLIB} ${DESTLIB}/libfnv.a
+ ${INSTALL} -m 0644 ${HSRC} ${DESTINC}
+ @# remove osolete programs
+ for i in ${OBSOLETE_PROGS}; do \
+ if [ -f "${DESTBIN}/$$i" ]; then \
+ echo "rm -f ${DESTBIN}/$$i"; \
+ rm -f "${DESTBIN}/$$i"; \
+ fi; \
+ done
+
+clean:
+ -rm -f have_ulong64 have_ulong64.o ll_tmp ll_tmp2 longlong.h
+ -rm -f ${LIBOBJ}
+ -rm -f ${OTHEROBJ}
+
+clobber: clean
+ -rm -f ${TARGETS}
+ -rm -f ${OBSOLETE_PROGS} lltmp lltmp2 ll_tmp
+ -rm -f ${NO64BIT_SRC}
+ -rm -f ${NO64BIT_OBJ}
+ -rm -f ${NO64BIT_PROGS}
+ -rm -f vector.c
+
+check: ${PROGS}
+ @echo -n "FNV-0 32 bit tests: "
+ @./fnv032 -t 1 -v
+ @echo -n "FNV-1 32 bit tests: "
+ @./fnv132 -t 1 -v
+ @echo -n "FNV-1a 32 bit tests: "
+ @./fnv1a32 -t 1 -v
+ @echo -n "FNV-0 64 bit tests: "
+ @./fnv064 -t 1 -v
+ @echo -n "FNV-1 64 bit tests: "
+ @./fnv164 -t 1 -v
+ @echo -n "FNV-1a 64 bit tests: "
+ @./fnv1a64 -t 1 -v
+
+###############################
+# generate test vector source #
+###############################
+
+no64bit_fnv64.c: fnv64.c
+ -rm -f $@
+ -cp -f $? $@
+
+no64bit_hash_64.c: hash_64.c
+ -rm -f $@
+ -cp -f $? $@
+
+no64bit_hash_64a.c: hash_64a.c
+ -rm -f $@
+ -cp -f $? $@
+
+no64bit_test_fnv.c: test_fnv.c
+ -rm -f $@
+ -cp -f $? $@
+
+no64bit_fnv64.o: no64bit_fnv64.c longlong.h fnv.h
+ ${CC} ${CFLAGS} -DNO64BIT_LONG_LONG no64bit_fnv64.c -c
+
+no64bit_hash_64.o: no64bit_hash_64.c longlong.h fnv.h
+ ${CC} ${CFLAGS} -DNO64BIT_LONG_LONG no64bit_hash_64.c -c
+
+no64bit_hash_64a.o: no64bit_hash_64a.c longlong.h fnv.h
+ ${CC} ${CFLAGS} -DNO64BIT_LONG_LONG no64bit_hash_64a.c -c
+
+no64bit_test_fnv.o: no64bit_test_fnv.c longlong.h fnv.h
+ ${CC} ${CFLAGS} -DNO64BIT_LONG_LONG no64bit_test_fnv.c -c
+
+no64bit_fnv064: no64bit_fnv64.o no64bit_hash_64.o \
+ no64bit_hash_64a.o no64bit_test_fnv.o
+ ${CC} ${CFLAGS} no64bit_fnv64.o no64bit_hash_64.o \
+ no64bit_hash_64a.o no64bit_test_fnv.o -o $@
+
+no64bit_fnv164: no64bit_fnv064
+ -rm -f $@
+ -cp -f $? $@
+
+no64bit_fnv1a64: no64bit_fnv064
+ -rm -f $@
+ -cp -f $? $@
+
+vector.c: ${PROGS} ${NO64BIT_PROGS}
+ -rm -f $@
+ echo '/* start of output generated by make $@ */' >> $@
+ echo '' >> $@
+ #@
+ echo '/* FNV-0 32 bit test vectors */' >> $@
+ ./fnv032 -t 0 >> $@
+ echo '' >> $@
+ #@
+ echo '/* FNV-1 32 bit test vectors */' >> $@
+ ./fnv132 -t 0 >> $@
+ echo '' >> $@
+ #@
+ echo '/* FNV-1a 32 bit test vectors */' >> $@
+ ./fnv1a32 -t 0 >> $@
+ echo '' >> $@
+ #@
+ echo '/* FNV-0 64 bit test vectors */' >> $@
+ echo '#if defined(HAVE_64BIT_LONG_LONG)' >> $@
+ ./fnv064 -t 0 >> $@
+ echo '#else /* HAVE_64BIT_LONG_LONG */' >> $@
+ ./no64bit_fnv064 -t 0 >> $@
+ echo '#endif /* HAVE_64BIT_LONG_LONG */' >> $@
+ echo '' >> $@
+ #@
+ echo '/* FNV-1 64 bit test vectors */' >> $@
+ echo '#if defined(HAVE_64BIT_LONG_LONG)' >> $@
+ ./fnv164 -t 0 >> $@
+ echo '#else /* HAVE_64BIT_LONG_LONG */' >> $@
+ ./no64bit_fnv164 -t 0 >> $@
+ echo '#endif /* HAVE_64BIT_LONG_LONG */' >> $@
+ echo '' >> $@
+ #@
+ echo '/* FNV-1a 64 bit test vectors */' >> $@
+ echo '#if defined(HAVE_64BIT_LONG_LONG)' >> $@
+ ./fnv1a64 -t 0 >> $@
+ echo '#else /* HAVE_64BIT_LONG_LONG */' >> $@
+ ./no64bit_fnv1a64 -t 0 >> $@
+ echo '#endif /* HAVE_64BIT_LONG_LONG */' >> $@
+ echo '' >> $@
+ #@
+ echo '/* end of output generated by make $@ */' >> $@
diff --git a/lib/fnv/README b/lib/fnv/README
new file mode 100644
index 0000000000..60aa9aaf61
--- /dev/null
+++ b/lib/fnv/README
@@ -0,0 +1,158 @@
+#=====================#
+# Fowler/Noll/Vo hash #
+#=====================#
+
+The basis of this hash algorithm was taken from an idea sent
+as reviewer comments to the IEEE POSIX P1003.2 committee by:
+
+ Phong Vo (http://www.research.att.com/info/kpv)
+ Glenn Fowler (http://www.research.att.com/~gsf/)
+
+In a subsequent ballot round:
+
+ Landon Curt Noll (http://www.isthe.com/chongo)
+
+improved on their algorithm. Some people tried this hash
+and found that it worked rather well. In an EMail message
+to Landon, they named it the ``Fowler/Noll/Vo'' or FNV hash.
+
+FNV hashes are designed to be fast while maintaining a low
+collision rate. The FNV speed allows one to quickly hash lots
+of data while maintaining a reasonable collision rate. See:
+
+ http://www.isthe.com/chongo/tech/comp/fnv/index.html
+
+for more details as well as other forms of the FNV hash.
+Comments, questions, bug fixes and suggestions welcome at
+the address given in the above URL.
+
+
+#==================#
+# FNV hash utility #
+#==================#
+
+Two hash utilities (32 bit and 64 bit) are provided:
+
+ fnv032 [-b bcnt] [-m] [-s arg] [-t code] [-v] [arg ...]
+ fnv132 [-b bcnt] [-m] [-s arg] [-t code] [-v] [arg ...]
+ fnv1a32 [-b bcnt] [-m] [-s arg] [-t code] [-v] [arg ...]
+
+ fnv064 [-b bcnt] [-m] [-s arg] [-t code] [-v] [arg ...]
+ fnv164 [-b bcnt] [-m] [-s arg] [-t code] [-v] [arg ...]
+ fnv1a64 [-b bcnt] [-m] [-s arg] [-t code] [-v] [arg ...]
+
+ -b bcnt mask off all but the lower bcnt bits (default: 32)
+ -m multiple hashes, one per line for each arg
+ -s hash arg as a string (ignoring terminating NUL bytes)
+ -t code 0 ==> generate test vectors, 1 ==> test FNV hash
+ -v verbose mode, print arg after hash (implies -m)
+ arg string (if -s was given) or filename (default stdin)
+
+The fnv032, fnv064 implement the historic FNV-0 hash.
+The fnv132, fnv164 implement the recommended FNV-1 hash.
+The fnv1a32, fnv1a64 implement the recommended FNV-1a hash.
+
+This is the original historic FNV algorithm with a 0 offset basis.
+It is recommended that FNV-1, with a non-0 offset basis be used instead.
+
+To test FNV hashes, try:
+
+ fnv032 -t 1 -v
+ fnv132 -t 1 -v
+ fnv1a32 -t 1 -v
+
+ fnv064 -t 1 -v
+ fnv164 -t 1 -v
+ fnv1a64 -t 1 -v
+
+If you are compiling, try:
+
+ make check
+
+
+#==================#
+# FNV hash library #
+#==================#
+
+The libfnv.a library implements both a 32 bit and a 64 bit FNV hash
+on collections of bytes, a NUL terminated strings or on an open file
+descriptor.
+
+Here is the 32 bit FNV 1 hash:
+
+ Fnv32_t fnv_32_buf(void *buf, int len, Fnv32_t hval); /* byte buf */
+ Fnv32_t fnv_32_str(char *string, Fnv32_t hval); /* string */
+
+Here is the 32 bit FNV 1a hash:
+
+ Fnv32_t fnv_32a_buf(void *buf, int len, Fnv32_t hval); /* byte buf */
+ Fnv32_t fnv_32a_str(char *string, Fnv32_t hval); /* string */
+
+Here is the 64 bit FNV 1 hash:
+
+ Fnv64_t fnv_64_buf(void *buf, int len, Fnv64_t hval); /* byte buf */
+ Fnv64_t fnv_64_str(char *string, Fnv64_t hval); /* string */
+
+Here is the 64 bit FNV 1a hash:
+
+ Fnv64_t fnv_64a_buf(void *buf, int len, Fnv64_t hval); /* byte buf */
+ Fnv64_t fnv_64a_str(char *string, Fnv64_t hval); /* string */
+
+On the first call to a hash function, one must supply the initial basis
+that is appropriate for the hash in question:
+
+ FNV-0: (not recommended)
+
+ FNV0_32_INIT /* 32 bit FNV-0 initial basis */
+ FNV0_64_INIT /* 64 bit FNV-0 initial basis */
+
+ FNV-1:
+
+ FNV1_32_INIT /* 32 bit FNV-1 initial basis */
+ FNV1_64_INIT /* 64 bit FNV-1 initial basis */
+
+ FNV-1a:
+
+ FNV1A_32_INIT /* 32 bit FNV-1a initial basis */
+ FNV1A_64_INIT /* 64 bit FNV-1a initial basis */
+
+For example to perform a 64 bit FNV-1 hash:
+
+ #include "fnv.h"
+
+ Fnv64_t hash_val;
+
+ hash_val = fnv_64_str("a string", FNV1_64_INIT);
+ hash_val = fnv_64_str("more string", hash_val);
+
+produces the same final hash value as:
+
+ hash_val = fnv_64_str("a stringmore string", FNV1_64_INIT);
+
+NOTE: If one used 'FNV0_64_INIT' instead of 'FNV1_64_INIT' one would get the
+ historic FNV-0 hash instead recommended FNV-1 hash.
+
+To perform a 32 bit FNV-1 hash:
+
+ #include "fnv.h"
+
+ Fnv32_t hash_val;
+
+ hash_val = fnv_32_buf(buf, length_of_buf, FNV1_32_INIT);
+ hash_val = fnv_32_str("more data", hash_val);
+
+To perform a 64 bit FNV-1a hash:
+
+ #include "fnv.h"
+
+ Fnv64_t hash_val;
+
+ hash_val = fnv_64a_buf(buf, length_of_buf, FNV1_64_INIT);
+ hash_val = fnv_64a_str("more data", hash_val);
+
+=-=
+
+chongo <Landon Curt Noll> /\oo/\
+http://www.isthe.com/chongo
+
+Share and Enjoy!
diff --git a/lib/fnv/fnv.h b/lib/fnv/fnv.h
new file mode 100644
index 0000000000..5249366731
--- /dev/null
+++ b/lib/fnv/fnv.h
@@ -0,0 +1,250 @@
+/*
+ * fnv - Fowler/Noll/Vo- hash code
+ *
+ * @(#) $Revision: 5.4 $
+ * @(#) $Id: fnv.h,v 5.4 2009/07/30 22:49:13 chongo Exp $
+ * @(#) $Source: /usr/local/src/cmd/fnv/RCS/fnv.h,v $
+ *
+ ***
+ *
+ * Fowler/Noll/Vo- hash
+ *
+ * The basis of this hash algorithm was taken from an idea sent
+ * as reviewer comments to the IEEE POSIX P1003.2 committee by:
+ *
+ * Phong Vo (http://www.research.att.com/info/kpv/)
+ * Glenn Fowler (http://www.research.att.com/~gsf/)
+ *
+ * In a subsequent ballot round:
+ *
+ * Landon Curt Noll (http://www.isthe.com/chongo/)
+ *
+ * improved on their algorithm. Some people tried this hash
+ * and found that it worked rather well. In an EMail message
+ * to Landon, they named it the ``Fowler/Noll/Vo'' or FNV hash.
+ *
+ * FNV hashes are designed to be fast while maintaining a low
+ * collision rate. The FNV speed allows one to quickly hash lots
+ * of data while maintaining a reasonable collision rate. See:
+ *
+ * http://www.isthe.com/chongo/tech/comp/fnv/index.html
+ *
+ * for more details as well as other forms of the FNV hash.
+ *
+ ***
+ *
+ * NOTE: The FNV-0 historic hash is not recommended. One should use
+ * the FNV-1 hash instead.
+ *
+ * To use the 32 bit FNV-0 historic hash, pass FNV0_32_INIT as the
+ * Fnv32_t hashval argument to fnv_32_buf() or fnv_32_str().
+ *
+ * To use the 64 bit FNV-0 historic hash, pass FNV0_64_INIT as the
+ * Fnv64_t hashval argument to fnv_64_buf() or fnv_64_str().
+ *
+ * To use the recommended 32 bit FNV-1 hash, pass FNV1_32_INIT as the
+ * Fnv32_t hashval argument to fnv_32_buf() or fnv_32_str().
+ *
+ * To use the recommended 64 bit FNV-1 hash, pass FNV1_64_INIT as the
+ * Fnv64_t hashval argument to fnv_64_buf() or fnv_64_str().
+ *
+ * To use the recommended 32 bit FNV-1a hash, pass FNV1_32A_INIT as the
+ * Fnv32_t hashval argument to fnv_32a_buf() or fnv_32a_str().
+ *
+ * To use the recommended 64 bit FNV-1a hash, pass FNV1A_64_INIT as the
+ * Fnv64_t hashval argument to fnv_64a_buf() or fnv_64a_str().
+ *
+ ***
+ *
+ * Please do not copyright this code. This code is in the public domain.
+ *
+ * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+ * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+ * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * By:
+ * chongo <Landon Curt Noll> /\oo/\
+ * http://www.isthe.com/chongo/
+ *
+ * Share and Enjoy! :-)
+ */
+
+#if !defined(__FNV_H__)
+#define __FNV_H__
+
+#include <stdlib.h>
+#include <stdint.h>
+
+#define FNV_VERSION "5.0.2" /* @(#) FNV Version */
+
+
+/*
+ * 32 bit FNV-0 hash type
+ */
+typedef uint32_t Fnv32_t;
+
+
+/*
+ * 32 bit FNV-0 zero initial basis
+ *
+ * This historic hash is not recommended. One should use
+ * the FNV-1 hash and initial basis instead.
+ */
+#define FNV0_32_INIT ((Fnv32_t)0)
+
+
+/*
+ * 32 bit FNV-1 and FNV-1a non-zero initial basis
+ *
+ * The FNV-1 initial basis is the FNV-0 hash of the following 32 octets:
+ *
+ * chongo <Landon Curt Noll> /\../\
+ *
+ * NOTE: The \'s above are not back-slashing escape characters.
+ * They are literal ASCII backslash 0x5c characters.
+ *
+ * NOTE: The FNV-1a initial basis is the same value as FNV-1 by definition.
+ */
+#define FNV1_32_INIT ((Fnv32_t)0x811c9dc5)
+#define FNV1_32A_INIT FNV1_32_INIT
+
+
+/*
+ * determine how 64 bit unsigned values are represented
+ */
+#include "longlong.h"
+
+
+/*
+ * 64 bit FNV-0 hash
+ */
+#if defined(HAVE_64BIT_LONG_LONG)
+typedef uint64_t Fnv64_t;
+#else /* HAVE_64BIT_LONG_LONG */
+typedef struct {
+ uint32_t w32[2]; /* w32[0] is low order, w32[1] is high order word */
+} Fnv64_t;
+#endif /* HAVE_64BIT_LONG_LONG */
+
+
+/*
+ * 64 bit FNV-0 zero initial basis
+ *
+ * This historic hash is not recommended. One should use
+ * the FNV-1 hash and initial basis instead.
+ */
+#if defined(HAVE_64BIT_LONG_LONG)
+#define FNV0_64_INIT ((Fnv64_t)0)
+#else /* HAVE_64BIT_LONG_LONG */
+extern const Fnv64_t fnv0_64_init;
+#define FNV0_64_INIT (fnv0_64_init)
+#endif /* HAVE_64BIT_LONG_LONG */
+
+
+/*
+ * 64 bit FNV-1 non-zero initial basis
+ *
+ * The FNV-1 initial basis is the FNV-0 hash of the following 32 octets:
+ *
+ * chongo <Landon Curt Noll> /\../\
+ *
+ * NOTE: The \'s above are not back-slashing escape characters.
+ * They are literal ASCII backslash 0x5c characters.
+ *
+ * NOTE: The FNV-1a initial basis is the same value as FNV-1 by definition.
+ */
+#if defined(HAVE_64BIT_LONG_LONG)
+#define FNV1_64_INIT ((Fnv64_t)0xcbf29ce484222325ULL)
+#define FNV1A_64_INIT FNV1_64_INIT
+#else /* HAVE_64BIT_LONG_LONG */
+extern const fnv1_64_init;
+extern const Fnv64_t fnv1a_64_init;
+#define FNV1_64_INIT (fnv1_64_init)
+#define FNV1A_64_INIT (fnv1a_64_init)
+#endif /* HAVE_64BIT_LONG_LONG */
+
+
+/*
+ * hash types
+ */
+enum fnv_type {
+ FNV_NONE = 0, /* invalid FNV hash type */
+ FNV0_32 = 1, /* FNV-0 32 bit hash */
+ FNV1_32 = 2, /* FNV-1 32 bit hash */
+ FNV1a_32 = 3, /* FNV-1a 32 bit hash */
+ FNV0_64 = 4, /* FNV-0 64 bit hash */
+ FNV1_64 = 5, /* FNV-1 64 bit hash */
+ FNV1a_64 = 6, /* FNV-1a 64 bit hash */
+};
+
+
+/*
+ * these test vectors are used as part o the FNV test suite
+ */
+struct test_vector {
+ void *buf; /* start of test vector buffer */
+ int len; /* length of test vector */
+};
+struct fnv0_32_test_vector {
+ struct test_vector *test; /* test vector buffer to hash */
+ Fnv32_t fnv0_32; /* expected FNV-0 32 bit hash value */
+};
+struct fnv1_32_test_vector {
+ struct test_vector *test; /* test vector buffer to hash */
+ Fnv32_t fnv1_32; /* expected FNV-1 32 bit hash value */
+};
+struct fnv1a_32_test_vector {
+ struct test_vector *test; /* test vector buffer to hash */
+ Fnv32_t fnv1a_32; /* expected FNV-1a 32 bit hash value */
+};
+struct fnv0_64_test_vector {
+ struct test_vector *test; /* test vector buffer to hash */
+ Fnv64_t fnv0_64; /* expected FNV-0 64 bit hash value */
+};
+struct fnv1_64_test_vector {
+ struct test_vector *test; /* test vector buffer to hash */
+ Fnv64_t fnv1_64; /* expected FNV-1 64 bit hash value */
+};
+struct fnv1a_64_test_vector {
+ struct test_vector *test; /* test vector buffer to hash */
+ Fnv64_t fnv1a_64; /* expected FNV-1a 64 bit hash value */
+};
+
+
+/*
+ * external functions
+ */
+/* hash_32.c */
+extern Fnv32_t fnv_32_buf(void *buf, size_t len, Fnv32_t hashval);
+extern Fnv32_t fnv_32_str(char *buf, Fnv32_t hashval);
+
+/* hash_32a.c */
+extern Fnv32_t fnv_32a_buf(void *buf, size_t len, Fnv32_t hashval);
+extern Fnv32_t fnv_32a_str(char *buf, Fnv32_t hashval);
+
+/* hash_64.c */
+extern Fnv64_t fnv_64_buf(void *buf, size_t len, Fnv64_t hashval);
+extern Fnv64_t fnv_64_str(char *buf, Fnv64_t hashval);
+
+/* hash_64a.c */
+extern Fnv64_t fnv_64a_buf(void *buf, size_t len, Fnv64_t hashval);
+extern Fnv64_t fnv_64a_str(char *buf, Fnv64_t hashval);
+
+/* test_fnv.c */
+extern struct test_vector fnv_test_str[];
+extern struct fnv0_32_test_vector fnv0_32_vector[];
+extern struct fnv1_32_test_vector fnv1_32_vector[];
+extern struct fnv1a_32_test_vector fnv1a_32_vector[];
+extern struct fnv0_64_test_vector fnv0_64_vector[];
+extern struct fnv1_64_test_vector fnv1_64_vector[];
+extern struct fnv1a_64_test_vector fnv1a_64_vector[];
+extern void unknown_hash_type(char *prog, enum fnv_type type, int code);
+extern void print_fnv32(Fnv32_t hval, Fnv32_t mask, int verbose, char *arg);
+extern void print_fnv64(Fnv64_t hval, Fnv64_t mask, int verbose, char *arg);
+
+
+#endif /* __FNV_H__ */
diff --git a/lib/fnv/fnv32.c b/lib/fnv/fnv32.c
new file mode 100644
index 0000000000..58c61f03fc
--- /dev/null
+++ b/lib/fnv/fnv32.c
@@ -0,0 +1,467 @@
+/*
+ * fnv32 - 32 bit Fowler/Noll/Vo hash of a buffer or string
+ *
+ * @(#) $Revision: 5.5 $
+ * @(#) $Id: fnv32.c,v 5.5 2012/03/21 01:38:12 chongo Exp $
+ * @(#) $Source: /usr/local/src/cmd/fnv/RCS/fnv32.c,v $
+ *
+ ***
+ *
+ * Fowler/Noll/Vo hash
+ *
+ * The basis of this hash algorithm was taken from an idea sent
+ * as reviewer comments to the IEEE POSIX P1003.2 committee by:
+ *
+ * Phong Vo (http://www.research.att.com/info/kpv/)
+ * Glenn Fowler (http://www.research.att.com/~gsf/)
+ *
+ * In a subsequent ballot round:
+ *
+ * Landon Curt Noll (http://www.isthe.com/chongo/)
+ *
+ * improved on their algorithm. Some people tried this hash
+ * and found that it worked rather well. In an EMail message
+ * to Landon, they named it the ``Fowler/Noll/Vo'' or FNV hash.
+ *
+ * FNV hashes are designed to be fast while maintaining a low
+ * collision rate. The FNV speed allows one to quickly hash lots
+ * of data while maintaining a reasonable collision rate. See:
+ *
+ * http://www.isthe.com/chongo/tech/comp/fnv/index.html
+ *
+ * for more details as well as other forms of the FNV hash.
+ *
+ ***
+ *
+ * Please do not copyright this code. This code is in the public domain.
+ *
+ * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+ * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+ * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * By:
+ * chongo <Landon Curt Noll> /\oo/\
+ * http://www.isthe.com/chongo/
+ *
+ * Share and Enjoy! :-)
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <string.h>
+#include "longlong.h"
+#include "fnv.h"
+
+#define WIDTH 32 /* bit width of hash */
+
+#define BUF_SIZE (32*1024) /* number of bytes to hash at a time */
+
+static char *usage =
+"usage: %s [-b bcnt] [-m] [-s arg] [-t code] [-v] [arg ...]\n"
+"\n"
+"\t-b bcnt\tmask off all but the lower bcnt bits (default 32)\n"
+"\t-m\tmultiple hashes, one per line for each arg\n"
+"\t-s\thash arg as a string (ignoring terminating NUL bytes)\n"
+"\t-t code\t test hash code: (0 ==> generate test vectors\n"
+"\t\t\t\t 1 ==> validate against FNV test vectors)\n"
+"\t-v\tverbose mode, print arg after hash (implies -m)\n"
+"\targ\tstring (if -s was given) or filename (default stdin)\n"
+"\n"
+"\tNOTE: Programs that begin with fnv0 implement the FNV-0 hash.\n"
+"\t The FNV-0 hash is historic FNV algorithm that is now deprecated.\n"
+"\n"
+"\tSee http://www.isthe.com/chongo/tech/comp/fnv/index.html for more info.\n"
+"\n"
+"\t@(#) FNV Version: %s\n";
+static char *program; /* our name */
+
+
+/*
+ * test_fnv32 - test the FNV32 hash
+ *
+ * given:
+ * hash_type type of FNV hash to test
+ * init_hval initial hash value
+ * mask lower bit mask
+ * v_flag 1 => print test failure info on stderr
+ * code 0 ==> generate FNV test vectors
+ * 1 ==> validate against FNV test vectors
+ *
+ * returns: 0 ==> OK, else test vector failure number
+ */
+static int
+test_fnv32(enum fnv_type hash_type, Fnv32_t init_hval,
+ Fnv32_t mask, int v_flag, int code)
+{
+ struct test_vector *t; /* FNV test vestor */
+ Fnv32_t hval; /* current hash value */
+ int tstnum; /* test vector that failed, starting at 1 */
+
+ /*
+ * print preamble if generating test vectors
+ */
+ if (code == 0) {
+ switch (hash_type) {
+ case FNV0_32:
+ printf("struct fnv0_32_test_vector fnv0_32_vector[] = {\n");
+ break;
+ case FNV1_32:
+ printf("struct fnv1_32_test_vector fnv1_32_vector[] = {\n");
+ break;
+ case FNV1a_32:
+ printf("struct fnv1a_32_test_vector fnv1a_32_vector[] = {\n");
+ break;
+ default:
+ unknown_hash_type(program, hash_type, 12); /* exit(12) */
+ /*NOTREACHED*/
+ }
+ }
+
+ /*
+ * loop thru all test vectors
+ */
+ for (t = fnv_test_str, tstnum = 1; t->buf != NULL; ++t, ++tstnum) {
+
+ /*
+ * compute the FNV hash
+ */
+ hval = init_hval;
+ switch (hash_type) {
+ case FNV0_32:
+ case FNV1_32:
+ hval = fnv_32_buf(t->buf, t->len, hval);
+ break;
+ case FNV1a_32:
+ hval = fnv_32a_buf(t->buf, t->len, hval);
+ break;
+ default:
+ unknown_hash_type(program, hash_type, 13); /* exit(13) */
+ /*NOTREACHED*/
+ }
+
+ /*
+ * print the vector
+ */
+ switch (code) {
+ case 0: /* generate the test vector */
+ printf(" { &fnv_test_str[%d], (Fnv32_t) 0x%08lxUL },\n",
+ tstnum-1, hval & mask);
+ break;
+ case 1: /* validate against test vector */
+ switch (hash_type) {
+ case FNV0_32:
+ if ((hval&mask) != (fnv0_32_vector[tstnum-1].fnv0_32 & mask)) {
+ if (v_flag) {
+ fprintf(stderr, "%s: failed fnv0_32 test # %d\n",
+ program, tstnum);
+ fprintf(stderr, "%s: test # 1 is 1st test\n", program);
+ fprintf(stderr,
+ "%s: expected 0x%08lx != generated: 0x%08lx\n",
+ program, (hval&mask),
+ (fnv0_32_vector[tstnum-1].fnv0_32 & mask));
+ }
+ return tstnum;
+ }
+ break;
+ case FNV1_32:
+ if ((hval&mask) != (fnv1_32_vector[tstnum-1].fnv1_32 & mask)) {
+ if (v_flag) {
+ fprintf(stderr, "%s: failed fnv1_32 test # %d\n",
+ program, tstnum);
+ fprintf(stderr, "%s: test # 1 is 1st test\n", program);
+ fprintf(stderr,
+ "%s: expected 0x%08lx != generated: 0x%08lx\n",
+ program, (hval&mask),
+ (fnv1_32_vector[tstnum-1].fnv1_32 & mask));
+ }
+ return tstnum;
+ }
+ break;
+ case FNV1a_32:
+ if ((hval&mask) != (fnv1a_32_vector[tstnum-1].fnv1a_32 &mask)) {
+ if (v_flag) {
+ fprintf(stderr, "%s: failed fnv1a_32 test # %d\n",
+ program, tstnum);
+ fprintf(stderr, "%s: test # 1 is 1st test\n", program);
+ fprintf(stderr,
+ "%s: expected 0x%08lx != generated: 0x%08lx\n",
+ program, (hval&mask),
+ (fnv1a_32_vector[tstnum-1].fnv1a_32 & mask));
+ }
+ return tstnum;
+ }
+ break;
+ }
+ break;
+ default:
+ fprintf(stderr, "%s: -m %d not implemented yet\n", program, code);
+ exit(14);
+ }
+ }
+
+ /*
+ * print completion if generating test vectors
+ */
+ if (code == 0) {
+ printf(" { NULL, 0 }\n");
+ printf("};\n");
+ }
+
+ /*
+ * no failures, return code 0 ==> all OK
+ */
+ return 0;
+}
+
+
+/*
+ * main - the main function
+ *
+ * See the above usage for details.
+ */
+int
+main(int argc, char *argv[])
+{
+ char buf[BUF_SIZE+1]; /* read buffer */
+ int readcnt; /* number of characters written */
+ Fnv32_t hval; /* current hash value */
+ int s_flag = 0; /* 1 => -s was given, hash args as strings */
+ int m_flag = 0; /* 1 => print multiple hashes, one per arg */
+ int v_flag = 0; /* 1 => verbose hash print */
+ int b_flag = WIDTH; /* -b flag value */
+ int t_flag = -1; /* FNV test vector code (0=>print, 1=>test) */
+ enum fnv_type hash_type = FNV_NONE; /* type of FNV hash to perform */
+ Fnv32_t bmask; /* mask to apply to output */
+ extern char *optarg; /* option argument */
+ extern int optind; /* argv index of the next arg */
+ int fd; /* open file to process */
+ char *p;
+ int i;
+
+ /*
+ * parse args
+ */
+ program = argv[0];
+ while ((i = getopt(argc, argv, "b:mst:v")) != -1) {
+ switch (i) {
+ case 'b': /* bcnt bit mask count */
+ b_flag = atoi(optarg);
+ break;
+ case 'm': /* print multiple hashes, one per arg */
+ m_flag = 1;
+ break;
+ case 's': /* hash args as strings */
+ s_flag = 1;
+ break;
+ case 't': /* FNV test vector code */
+ t_flag = atoi(optarg);
+ if (t_flag < 0 || t_flag > 1) {
+ fprintf(stderr, "%s: -t code must be 0 or 1\n", program);
+ fprintf(stderr, usage, program, FNV_VERSION);
+ exit(1);
+ }
+ m_flag = 1;
+ break;
+ case 'v': /* verbose hash print */
+ m_flag = 1;
+ v_flag = 1;
+ break;
+ default:
+ fprintf(stderr, usage, program, FNV_VERSION);
+ exit(1);
+ }
+ }
+ /* -t code incompatible with -b, -m and args */
+ if (t_flag >= 0) {
+ if (b_flag != WIDTH) {
+ fprintf(stderr, "%s: -t code incompatible with -b\n", program);
+ exit(2);
+ }
+ if (s_flag != 0) {
+ fprintf(stderr, "%s: -t code incompatible with -s\n", program);
+ exit(3);
+ }
+ if (optind < argc) {
+ fprintf(stderr, "%s: -t code incompatible args\n", program);
+ exit(4);
+ }
+ }
+ /* -s requires at least 1 arg */
+ if (s_flag && optind >= argc) {
+ fprintf(stderr, usage, program, FNV_VERSION);
+ exit(5);
+ }
+ /* limit -b values */
+ if (b_flag < 0 || b_flag > WIDTH) {
+ fprintf(stderr, "%s: -b bcnt: %d must be >= 0 and < %d\n",
+ program, b_flag, WIDTH);
+ exit(6);
+ }
+ if (b_flag == WIDTH) {
+ bmask = (Fnv32_t)0xffffffff;
+ } else {
+ bmask = (Fnv32_t)((1 << b_flag) - 1);
+ }
+
+ /*
+ * start with the initial basis depending on the hash type
+ */
+ p = strrchr(program, '/');
+ if (p == NULL) {
+ p = program;
+ } else {
+ ++p;
+ }
+ if (strcmp(p, "fnv032") == 0) {
+ /* using non-recommended FNV-0 and zero initial basis */
+ hval = FNV0_32_INIT;
+ hash_type = FNV0_32;
+ } else if (strcmp(p, "fnv132") == 0) {
+ /* using FNV-1 and non-zero initial basis */
+ hval = FNV1_32_INIT;
+ hash_type = FNV1_32;
+ } else if (strcmp(p, "fnv1a32") == 0) {
+ /* start with the FNV-1a initial basis */
+ hval = FNV1_32A_INIT;
+ hash_type = FNV1a_32;
+ } else {
+ fprintf(stderr, "%s: unknown program name, unknown hash type\n",
+ program);
+ exit(7);
+ }
+
+ /*
+ * FNV test vector processing, if needed
+ */
+ if (t_flag >= 0) {
+ int code; /* test vector that failed, starting at 1 */
+
+ /*
+ * perform all tests
+ */
+ code = test_fnv32(hash_type, hval, bmask, v_flag, t_flag);
+
+ /*
+ * evaluate the tests
+ */
+ if (code == 0) {
+ if (v_flag) {
+ printf("passed\n");
+ }
+ exit(0);
+ } else {
+ printf("failed vector (1 is 1st test): %d\n", code);
+ exit(8);
+ }
+ }
+
+ /*
+ * string hashing
+ */
+ if (s_flag) {
+
+ /* hash any other strings */
+ for (i=optind; i < argc; ++i) {
+ switch (hash_type) {
+ case FNV0_32:
+ case FNV1_32:
+ hval = fnv_32_str(argv[i], hval);
+ break;
+ case FNV1a_32:
+ hval = fnv_32a_str(argv[i], hval);
+ break;
+ default:
+ unknown_hash_type(program, hash_type, 9); /* exit(9) */
+ /*NOTREACHED*/
+ }
+ if (m_flag) {
+ print_fnv32(hval, bmask, v_flag, argv[i]);
+ }
+ }
+
+
+ /*
+ * file hashing
+ */
+ } else {
+
+ /*
+ * case: process only stdin
+ */
+ if (optind >= argc) {
+
+ /* case: process only stdin */
+ while ((readcnt = read(0, buf, BUF_SIZE)) > 0) {
+ switch (hash_type) {
+ case FNV0_32:
+ case FNV1_32:
+ hval = fnv_32_buf(buf, readcnt, hval);
+ break;
+ case FNV1a_32:
+ hval = fnv_32a_buf(buf, readcnt, hval);
+ break;
+ default:
+ unknown_hash_type(program, hash_type, 10); /* exit(10) */
+ /*NOTREACHED*/
+ }
+ }
+ if (m_flag) {
+ print_fnv32(hval, bmask, v_flag, "(stdin)");
+ }
+
+ } else {
+
+ /*
+ * process any other files
+ */
+ for (i=optind; i < argc; ++i) {
+
+ /* open the file */
+ fd = open(argv[i], O_RDONLY);
+ if (fd < 0) {
+ fprintf(stderr, "%s: unable to open file: %s\n",
+ program, argv[i]);
+ exit(4);
+ }
+
+ /* hash the file */
+ while ((readcnt = read(fd, buf, BUF_SIZE)) > 0) {
+ switch (hash_type) {
+ case FNV0_32:
+ case FNV1_32:
+ hval = fnv_32_buf(buf, readcnt, hval);
+ break;
+ case FNV1a_32:
+ hval = fnv_32a_buf(buf, readcnt, hval);
+ break;
+ default:
+ unknown_hash_type(program, hash_type, 11);/* exit(11) */
+ /*NOTREACHED*/
+ }
+ }
+
+ /* finish processing the file */
+ if (m_flag) {
+ print_fnv32(hval, bmask, v_flag, argv[i]);
+ }
+ close(fd);
+ }
+ }
+ }
+
+ /*
+ * report hash and exit
+ */
+ if (!m_flag) {
+ print_fnv32(hval, bmask, v_flag, "");
+ }
+ return 0; /* exit(0); */
+}
diff --git a/lib/fnv/fnv64.c b/lib/fnv/fnv64.c
new file mode 100644
index 0000000000..0662d4d657
--- /dev/null
+++ b/lib/fnv/fnv64.c
@@ -0,0 +1,591 @@
+/*
+ * fnv_64 - 64 bit Fowler/Noll/Vo hash of a buffer or string
+ *
+ * @(#) $Revision: 5.5 $
+ * @(#) $Id: fnv64.c,v 5.5 2012/03/21 01:38:12 chongo Exp $
+ * @(#) $Source: /usr/local/src/cmd/fnv/RCS/fnv64.c,v $
+ *
+ ***
+ *
+ * Fowler/Noll/Vo hash
+ *
+ * The basis of this hash algorithm was taken from an idea sent
+ * as reviewer comments to the IEEE POSIX P1003.2 committee by:
+ *
+ * Phong Vo (http://www.research.att.com/info/kpv/)
+ * Glenn Fowler (http://www.research.att.com/~gsf/)
+ *
+ * In a subsequent ballot round:
+ *
+ * Landon Curt Noll (http://www.isthe.com/chongo/)
+ *
+ * improved on their algorithm. Some people tried this hash
+ * and found that it worked rather well. In an EMail message
+ * to Landon, they named it the ``Fowler/Noll/Vo'' or FNV hash.
+ *
+ * FNV hashes are designed to be fast while maintaining a low
+ * collision rate. The FNV speed allows one to quickly hash lots
+ * of data while maintaining a reasonable collision rate. See:
+ *
+ * http://www.isthe.com/chongo/tech/comp/fnv/index.html
+ *
+ * for more details as well as other forms of the FNV hash.
+ *
+ ***
+ *
+ * Please do not copyright this code. This code is in the public domain.
+ *
+ * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+ * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+ * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * By:
+ * chongo <Landon Curt Noll> /\oo/\
+ * http://www.isthe.com/chongo/
+ *
+ * Share and Enjoy! :-)
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <string.h>
+#include "longlong.h"
+#include "fnv.h"
+
+#define WIDTH 64 /* bit width of hash */
+
+#define BUF_SIZE (32*1024) /* number of bytes to hash at a time */
+
+static char *usage =
+"usage: %s [-b bcnt] [-m] [-s arg] [-t code] [-v] [arg ...]\n"
+"\n"
+"\t-b bcnt\tmask off all but the lower bcnt bits (default 64)\n"
+"\t-m\tmultiple hashes, one per line for each arg\n"
+"\t-s\thash arg as a string (ignoring terminating NUL bytes)\n"
+"\t-t code\t test hash code: (0 ==> generate test vectors\n"
+"\t\t\t\t 1 ==> validate against FNV test vectors)\n"
+"\t-v\tverbose mode, print arg after hash (implies -m)\n"
+"\targ\tstring (if -s was given) or filename (default stdin)\n"
+"\n"
+"\tNOTE: Programs that begin with fnv0 implement the FNV-0 hash.\n"
+"\t The FNV-0 hash is historic FNV algorithm that is now deprecated.\n"
+"\n"
+"\tSee http://www.isthe.com/chongo/tech/comp/fnv/index.html for more info.\n"
+"\n"
+"\t@(#) FNV Version: %s\n";
+static char *program; /* our name */
+
+
+/*
+ * test_fnv64 - test the FNV64 hash
+ *
+ * given:
+ * hash_type type of FNV hash to test
+ * init_hval initial hash value
+ * mask lower bit mask
+ * v_flag 1 => print test failure info on stderr
+ * code 0 ==> generate FNV test vectors
+ * 1 ==> validate against FNV test vectors
+ *
+ * returns: 0 ==> OK, else test vector failure number
+ */
+static int
+test_fnv64(enum fnv_type hash_type, Fnv64_t init_hval,
+ Fnv64_t mask, int v_flag, int code)
+{
+ struct test_vector *t; /* FNV test vestor */
+ Fnv64_t hval; /* current hash value */
+ int tstnum; /* test vector that failed, starting at 1 */
+
+ /*
+ * print preamble if generating test vectors
+ */
+ if (code == 0) {
+ switch (hash_type) {
+ case FNV0_64:
+ printf("struct fnv0_64_test_vector fnv0_64_vector[] = {\n");
+ break;
+ case FNV1_64:
+ printf("struct fnv1_64_test_vector fnv1_64_vector[] = {\n");
+ break;
+ case FNV1a_64:
+ printf("struct fnv1a_64_test_vector fnv1a_64_vector[] = {\n");
+ break;
+ default:
+ unknown_hash_type(program, hash_type, 12); /* exit(12) */
+ /*NOTREACHED*/
+ }
+ }
+
+ /*
+ * loop thru all test vectors
+ */
+ for (t = fnv_test_str, tstnum = 1; t->buf != NULL; ++t, ++tstnum) {
+
+ /*
+ * compute the FNV hash
+ */
+ hval = init_hval;
+ switch (hash_type) {
+ case FNV0_64:
+ case FNV1_64:
+ hval = fnv_64_buf(t->buf, t->len, hval);
+ break;
+ case FNV1a_64:
+ hval = fnv_64a_buf(t->buf, t->len, hval);
+ break;
+ default:
+ unknown_hash_type(program, hash_type, 13); /* exit(13) */
+ /*NOTREACHED*/
+ }
+
+ /*
+ * print the vector
+ */
+#if defined(HAVE_64BIT_LONG_LONG)
+ /*
+ * HAVE_64BIT_LONG_LONG testing
+ */
+ switch (code) {
+ case 0: /* generate the test vector */
+ printf(" { &fnv_test_str[%d], (Fnv64_t) 0x%016llxULL },\n",
+ tstnum-1, hval & mask);
+ break;
+
+ case 1: /* validate against test vector */
+ switch (hash_type) {
+ case FNV0_64:
+ if ((hval&mask) != (fnv0_64_vector[tstnum-1].fnv0_64 & mask)) {
+ if (v_flag) {
+ fprintf(stderr, "%s: failed fnv0_64 test # %d\n",
+ program, tstnum);
+ fprintf(stderr, "%s: test # 1 is 1st test\n", program);
+ fprintf(stderr,
+ "%s: expected 0x%016llx != generated: 0x%016llx\n",
+ program,
+ (hval&mask),
+ (fnv0_64_vector[tstnum-1].fnv0_64 & mask));
+ }
+ return tstnum;
+ }
+ break;
+ case FNV1_64:
+ if ((hval&mask) != (fnv1_64_vector[tstnum-1].fnv1_64 & mask)) {
+ if (v_flag) {
+ fprintf(stderr, "%s: failed fnv1_64 test # %d\n",
+ program, tstnum);
+ fprintf(stderr, "%s: test # 1 is 1st test\n", program);
+ fprintf(stderr,
+ "%s: expected 0x%016llx != generated: 0x%016llx\n",
+ program,
+ (hval&mask),
+ (fnv1_64_vector[tstnum-1].fnv1_64 & mask));
+ }
+ return tstnum;
+ }
+ break;
+ case FNV1a_64:
+ if ((hval&mask) != (fnv1a_64_vector[tstnum-1].fnv1a_64 &mask)) {
+ if (v_flag) {
+ fprintf(stderr, "%s: failed fnv1a_64 test # %d\n",
+ program, tstnum);
+ fprintf(stderr, "%s: test # 1 is 1st test\n", program);
+ fprintf(stderr,
+ "%s: expected 0x%016llx != generated: 0x%016llx\n",
+ program,
+ (hval&mask),
+ (fnv1a_64_vector[tstnum-1].fnv1a_64 & mask));
+ }
+ return tstnum;
+ }
+ break;
+ }
+ break;
+
+ default:
+ fprintf(stderr, "%s: -m %d not implemented yet\n", program, code);
+ exit(14);
+ }
+#else /* HAVE_64BIT_LONG_LONG */
+ /*
+ * non HAVE_64BIT_LONG_LONG testing
+ */
+ switch (code) {
+ case 0: /* generate the test vector */
+ printf(" { &fnv_test_str[%d], "
+ "(Fnv64_t) {0x%08lxUL, 0x%08lxUL} },\n",
+ tstnum-1,
+ (hval.w32[0] & mask.w32[0]),
+ (hval.w32[1] & mask.w32[1]));
+ break;
+
+ case 1: /* validate against test vector */
+ switch (hash_type) {
+ case FNV0_64:
+ if (((hval.w32[0] & mask.w32[0]) !=
+ (fnv0_64_vector[tstnum-1].fnv0_64.w32[0] &
+ mask.w32[0])) &&
+ ((hval.w32[1] & mask.w32[1]) !=
+ (fnv0_64_vector[tstnum-1].fnv0_64.w32[1] &
+ mask.w32[1]))) {
+ if (v_flag) {
+ fprintf(stderr, "%s: failed fnv0_64 test # %d\n",
+ program, tstnum);
+ fprintf(stderr, "%s: test # 1 is 1st test\n", program);
+ fprintf(stderr,
+ "%s: expected 0x%08llx%08llx != "
+ "generated: 0x%08llx%08llx\n",
+ program,
+ (hval.w32[0] & mask.w32[0]),
+ (hval.w32[1] & mask.w32[1]),
+ ((fnv0_64_vector[tstnum-1].fnv0_64.w32[0] &
+ mask.w32[0])),
+ ((fnv0_64_vector[tstnum-1].fnv0_64.w32[1] &
+ mask.w32[1])));
+ }
+ return tstnum;
+ }
+ break;
+ case FNV1_64:
+ if (((hval.w32[0] & mask.w32[0]) !=
+ (fnv1_64_vector[tstnum-1].fnv1_64.w32[0] &
+ mask.w32[0])) &&
+ ((hval.w32[1] & mask.w32[1]) !=
+ (fnv1_64_vector[tstnum-1].fnv1_64.w32[1] &
+ mask.w32[1]))) {
+ if (v_flag) {
+ fprintf(stderr, "%s: failed fnv1_64 test # %d\n",
+ program, tstnum);
+ fprintf(stderr, "%s: test # 1 is 1st test\n", program);
+ fprintf(stderr,
+ "%s: expected 0x%08llx%08llx != "
+ "generated: 0x%08llx%08llx\n",
+ program,
+ (hval.w32[0] & mask.w32[0]),
+ (hval.w32[1] & mask.w32[1]),
+ ((fnv1_64_vector[tstnum-1].fnv1_64.w32[0] &
+ mask.w32[0])),
+ ((fnv1_64_vector[tstnum-1].fnv1_64.w32[1] &
+ mask.w32[1])));
+ }
+ return tstnum;
+ }
+ break;
+ case FNV1a_64:
+ if (((hval.w32[0] & mask.w32[0]) !=
+ (fnv1a_64_vector[tstnum-1].fnv1a_64.w32[0] &
+ mask.w32[0])) &&
+ ((hval.w32[1] & mask.w32[1]) !=
+ (fnv1a_64_vector[tstnum-1].fnv1a_64.w32[1] &
+ mask.w32[1]))) {
+ if (v_flag) {
+ fprintf(stderr, "%s: failed fnv1a_64 test # %d\n",
+ program, tstnum);
+ fprintf(stderr, "%s: test # 1 is 1st test\n", program);
+ fprintf(stderr,
+ "%s: expected 0x%08llx%08llx != "
+ "generated: 0x%08llx%08llx\n",
+ program,
+ (hval.w32[0] & mask.w32[0]),
+ (hval.w32[1] & mask.w32[1]),
+ ((fnv1a_64_vector[tstnum-1].fnv1a_64.w32[0] &
+ mask.w32[0])),
+ ((fnv1a_64_vector[tstnum-1].fnv1a_64.w32[1] &
+ mask.w32[1])));
+ }
+ return tstnum;
+ }
+ break;
+ }
+ break;
+
+ default:
+ fprintf(stderr, "%s: -m %d not implemented yet\n", program, code);
+ exit(15);
+ }
+#endif /* HAVE_64BIT_LONG_LONG */
+ }
+
+ /*
+ * print completion if generating test vectors
+ */
+ if (code == 0) {
+#if defined(HAVE_64BIT_LONG_LONG)
+ printf(" { NULL, (Fnv64_t) 0 }\n");
+#else /* HAVE_64BIT_LONG_LONG */
+ printf(" { NULL, (Fnv64_t) {0,0} }\n");
+#endif /* HAVE_64BIT_LONG_LONG */
+ printf("};\n");
+ }
+
+ /*
+ * no failures, return code 0 ==> all OK
+ */
+ return 0;
+}
+
+
+/*
+ * main - the main function
+ *
+ * See the above usage for details.
+ */
+int
+main(int argc, char *argv[])
+{
+ char buf[BUF_SIZE+1]; /* read buffer */
+ int readcnt; /* number of characters written */
+ Fnv64_t hval; /* current hash value */
+ int s_flag = 0; /* 1 => -s was given, hash args as strings */
+ int m_flag = 0; /* 1 => print multiple hashes, one per arg */
+ int v_flag = 0; /* 1 => verbose hash print */
+ int b_flag = WIDTH; /* -b flag value */
+ int t_flag = -1; /* FNV test vector code (0=>print, 1=>test) */
+ enum fnv_type hash_type = FNV_NONE; /* type of FNV hash to perform */
+ Fnv64_t bmask; /* mask to apply to output */
+ extern char *optarg; /* option argument */
+ extern int optind; /* argv index of the next arg */
+ int fd; /* open file to process */
+ char *p;
+ int i;
+
+ /*
+ * parse args
+ */
+ program = argv[0];
+ while ((i = getopt(argc, argv, "b:mst:v")) != -1) {
+ switch (i) {
+ case 'b': /* bcnt bit mask count */
+ b_flag = atoi(optarg);
+ break;
+ case 'm': /* print multiple hashes, one per arg */
+ m_flag = 1;
+ break;
+ case 's': /* hash args as strings */
+ s_flag = 1;
+ break;
+ case 't': /* FNV test vector code */
+ t_flag = atoi(optarg);
+ if (t_flag < 0 || t_flag > 1) {
+ fprintf(stderr, "%s: -t code must be 0 or 1\n", program);
+ fprintf(stderr, usage, program, FNV_VERSION);
+ exit(1);
+ }
+ m_flag = 1;
+ break;
+ case 'v': /* verbose hash print */
+ m_flag = 1;
+ v_flag = 1;
+ break;
+ default:
+ fprintf(stderr, usage, program, FNV_VERSION);
+ exit(1);
+ }
+ }
+ /* -t code incompatible with -b, -m and args */
+ if (t_flag >= 0) {
+ if (b_flag != WIDTH) {
+ fprintf(stderr, "%s: -t code incompatible with -b\n", program);
+ exit(2);
+ }
+ if (s_flag != 0) {
+ fprintf(stderr, "%s: -t code incompatible with -s\n", program);
+ exit(3);
+ }
+ if (optind < argc) {
+ fprintf(stderr, "%s: -t code incompatible args\n", program);
+ exit(4);
+ }
+ }
+ /* -s requires at least 1 arg */
+ if (s_flag && optind >= argc) {
+ fprintf(stderr, usage, program, FNV_VERSION);
+ exit(5);
+ }
+ /* limit -b values */
+ if (b_flag < 0 || b_flag > WIDTH) {
+ fprintf(stderr, "%s: -b bcnt: %d must be >= 0 and < %d\n",
+ program, b_flag, WIDTH);
+ exit(6);
+ }
+#if defined(HAVE_64BIT_LONG_LONG)
+ if (b_flag == WIDTH) {
+ bmask = (Fnv64_t)0xffffffffffffffffULL;
+ } else {
+ bmask = (Fnv64_t)((1ULL << b_flag) - 1ULL);
+ }
+#else /* HAVE_64BIT_LONG_LONG */
+ if (b_flag == WIDTH) {
+ bmask.w32[0] = 0xffffffffUL;
+ bmask.w32[1] = 0xffffffffUL;
+ } else if (b_flag >= WIDTH/2) {
+ bmask.w32[0] = 0xffffffffUL;
+ bmask.w32[1] = ((1UL << (b_flag-(WIDTH/2))) - 1UL);
+ } else {
+ bmask.w32[0] = ((1UL << b_flag) - 1UL);
+ bmask.w32[1] = 0UL;
+ }
+#endif /* HAVE_64BIT_LONG_LONG */
+
+ /*
+ * start with the initial basis depending on the hash type
+ */
+ p = strrchr(program, '/');
+ if (p == NULL) {
+ p = program;
+ } else {
+ ++p;
+ }
+ if (strcmp(p, "fnv064") == 0 || strcmp(p, "no64bit_fnv064") == 0) {
+ /* using non-recommended FNV-0 and zero initial basis */
+ hval = FNV0_64_INIT;
+ hash_type = FNV0_64;
+ } else if (strcmp(p, "fnv164") == 0 || strcmp(p, "no64bit_fnv164") == 0) {
+ /* using FNV-1 and non-zero initial basis */
+ hval = FNV1_64_INIT;
+ hash_type = FNV1_64;
+ } else if (strcmp(p, "fnv1a64") == 0 || strcmp(p, "no64bit_fnv1a64") == 0) {
+ /* start with the FNV-1a initial basis */
+ hval = FNV1A_64_INIT;
+ hash_type = FNV1a_64;
+ } else {
+ fprintf(stderr, "%s: unknown program name, unknown hash type\n",
+ program);
+ exit(7);
+ }
+
+ /*
+ * FNV test vector processing, if needed
+ */
+ if (t_flag >= 0) {
+ int code; /* test vector that failed, starting at 1 */
+
+ /*
+ * perform all tests
+ */
+ code = test_fnv64(hash_type, hval, bmask, v_flag, t_flag);
+
+ /*
+ * evaluate the tests
+ */
+ if (code == 0) {
+ if (v_flag) {
+ printf("passed\n");
+ }
+ exit(0);
+ } else {
+ printf("failed vector (1 is 1st test): %d\n", code);
+ exit(8);
+ }
+ }
+
+ /*
+ * string hashing
+ */
+ if (s_flag) {
+
+ /* hash any other strings */
+ for (i=optind; i < argc; ++i) {
+ switch (hash_type) {
+ case FNV0_64:
+ case FNV1_64:
+ hval = fnv_64_str(argv[i], hval);
+ break;
+ case FNV1a_64:
+ hval = fnv_64a_str(argv[i], hval);
+ break;
+ default:
+ unknown_hash_type(program, hash_type, 9); /* exit(9) */
+ /*NOTREACHED*/
+ }
+ if (m_flag) {
+ print_fnv64(hval, bmask, v_flag, argv[i]);
+ }
+ }
+
+
+ /*
+ * file hashing
+ */
+ } else {
+
+ /*
+ * case: process only stdin
+ */
+ if (optind >= argc) {
+
+ /* case: process only stdin */
+ while ((readcnt = read(0, buf, BUF_SIZE)) > 0) {
+ switch (hash_type) {
+ case FNV0_64:
+ case FNV1_64:
+ hval = fnv_64_buf(buf, readcnt, hval);
+ break;
+ case FNV1a_64:
+ hval = fnv_64a_buf(buf, readcnt, hval);
+ break;
+ default:
+ unknown_hash_type(program, hash_type, 10); /* exit(10) */
+ /*NOTREACHED*/
+ }
+ }
+ if (m_flag) {
+ print_fnv64(hval, bmask, v_flag, "(stdin)");
+ }
+
+ } else {
+
+ /*
+ * process any other files
+ */
+ for (i=optind; i < argc; ++i) {
+
+ /* open the file */
+ fd = open(argv[i], O_RDONLY);
+ if (fd < 0) {
+ fprintf(stderr, "%s: unable to open file: %s\n",
+ program, argv[i]);
+ exit(4);
+ }
+
+ /* hash the file */
+ while ((readcnt = read(fd, buf, BUF_SIZE)) > 0) {
+ switch (hash_type) {
+ case FNV0_64:
+ case FNV1_64:
+ hval = fnv_64_buf(buf, readcnt, hval);
+ break;
+ case FNV1a_64:
+ hval = fnv_64a_buf(buf, readcnt, hval);
+ break;
+ default:
+ unknown_hash_type(program, hash_type, 11);/* exit(11) */
+ /*NOTREACHED*/
+ }
+ }
+
+ /* finish processing the file */
+ if (m_flag) {
+ print_fnv64(hval, bmask, v_flag, argv[i]);
+ }
+ close(fd);
+ }
+ }
+ }
+
+ /*
+ * report hash and exit
+ */
+ if (!m_flag) {
+ print_fnv64(hval, bmask, v_flag, "");
+ }
+ return 0; /* exit(0); */
+}
diff --git a/lib/fnv/hash_32.c b/lib/fnv/hash_32.c
new file mode 100644
index 0000000000..077170ff6d
--- /dev/null
+++ b/lib/fnv/hash_32.c
@@ -0,0 +1,156 @@
+/*
+ * hash_32 - 32 bit Fowler/Noll/Vo hash code
+ *
+ * @(#) $Revision: 5.1 $
+ * @(#) $Id: hash_32.c,v 5.1 2009/06/30 09:13:32 chongo Exp $
+ * @(#) $Source: /usr/local/src/cmd/fnv/RCS/hash_32.c,v $
+ *
+ ***
+ *
+ * Fowler/Noll/Vo hash
+ *
+ * The basis of this hash algorithm was taken from an idea sent
+ * as reviewer comments to the IEEE POSIX P1003.2 committee by:
+ *
+ * Phong Vo (http://www.research.att.com/info/kpv/)
+ * Glenn Fowler (http://www.research.att.com/~gsf/)
+ *
+ * In a subsequent ballot round:
+ *
+ * Landon Curt Noll (http://www.isthe.com/chongo/)
+ *
+ * improved on their algorithm. Some people tried this hash
+ * and found that it worked rather well. In an EMail message
+ * to Landon, they named it the ``Fowler/Noll/Vo'' or FNV hash.
+ *
+ * FNV hashes are designed to be fast while maintaining a low
+ * collision rate. The FNV speed allows one to quickly hash lots
+ * of data while maintaining a reasonable collision rate. See:
+ *
+ * http://www.isthe.com/chongo/tech/comp/fnv/index.html
+ *
+ * for more details as well as other forms of the FNV hash.
+ ***
+ *
+ * NOTE: The FNV-0 historic hash is not recommended. One should use
+ * the FNV-1 hash instead.
+ *
+ * To use the 32 bit FNV-0 historic hash, pass FNV0_32_INIT as the
+ * Fnv32_t hashval argument to fnv_32_buf() or fnv_32_str().
+ *
+ * To use the recommended 32 bit FNV-1 hash, pass FNV1_32_INIT as the
+ * Fnv32_t hashval argument to fnv_32_buf() or fnv_32_str().
+ *
+ ***
+ *
+ * Please do not copyright this code. This code is in the public domain.
+ *
+ * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+ * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+ * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * By:
+ * chongo <Landon Curt Noll> /\oo/\
+ * http://www.isthe.com/chongo/
+ *
+ * Share and Enjoy! :-)
+ */
+
+#include <stdlib.h>
+#include "fnv.h"
+
+
+/*
+ * 32 bit magic FNV-0 and FNV-1 prime
+ */
+#define FNV_32_PRIME ((Fnv32_t)0x01000193)
+
+
+/*
+ * fnv_32_buf - perform a 32 bit Fowler/Noll/Vo hash on a buffer
+ *
+ * input:
+ * buf - start of buffer to hash
+ * len - length of buffer in octets
+ * hval - previous hash value or 0 if first call
+ *
+ * returns:
+ * 32 bit hash as a static hash type
+ *
+ * NOTE: To use the 32 bit FNV-0 historic hash, use FNV0_32_INIT as the hval
+ * argument on the first call to either fnv_32_buf() or fnv_32_str().
+ *
+ * NOTE: To use the recommended 32 bit FNV-1 hash, use FNV1_32_INIT as the hval
+ * argument on the first call to either fnv_32_buf() or fnv_32_str().
+ */
+Fnv32_t
+fnv_32_buf(void *buf, size_t len, Fnv32_t hval)
+{
+ unsigned char *bp = (unsigned char *)buf; /* start of buffer */
+ unsigned char *be = bp + len; /* beyond end of buffer */
+
+ /*
+ * FNV-1 hash each octet in the buffer
+ */
+ while (bp < be) {
+
+ /* multiply by the 32 bit FNV magic prime mod 2^32 */
+#if defined(NO_FNV_GCC_OPTIMIZATION)
+ hval *= FNV_32_PRIME;
+#else
+ hval += (hval<<1) + (hval<<4) + (hval<<7) + (hval<<8) + (hval<<24);
+#endif
+
+ /* xor the bottom with the current octet */
+ hval ^= (Fnv32_t)*bp++;
+ }
+
+ /* return our new hash value */
+ return hval;
+}
+
+
+/*
+ * fnv_32_str - perform a 32 bit Fowler/Noll/Vo hash on a string
+ *
+ * input:
+ * str - string to hash
+ * hval - previous hash value or 0 if first call
+ *
+ * returns:
+ * 32 bit hash as a static hash type
+ *
+ * NOTE: To use the 32 bit FNV-0 historic hash, use FNV0_32_INIT as the hval
+ * argument on the first call to either fnv_32_buf() or fnv_32_str().
+ *
+ * NOTE: To use the recommended 32 bit FNV-1 hash, use FNV1_32_INIT as the hval
+ * argument on the first call to either fnv_32_buf() or fnv_32_str().
+ */
+Fnv32_t
+fnv_32_str(char *str, Fnv32_t hval)
+{
+ unsigned char *s = (unsigned char *)str; /* unsigned string */
+
+ /*
+ * FNV-1 hash each octet in the buffer
+ */
+ while (*s) {
+
+ /* multiply by the 32 bit FNV magic prime mod 2^32 */
+#if defined(NO_FNV_GCC_OPTIMIZATION)
+ hval *= FNV_32_PRIME;
+#else
+ hval += (hval<<1) + (hval<<4) + (hval<<7) + (hval<<8) + (hval<<24);
+#endif
+
+ /* xor the bottom with the current octet */
+ hval ^= (Fnv32_t)*s++;
+ }
+
+ /* return our new hash value */
+ return hval;
+}
diff --git a/lib/fnv/hash_32a.c b/lib/fnv/hash_32a.c
new file mode 100644
index 0000000000..8b10acf3e2
--- /dev/null
+++ b/lib/fnv/hash_32a.c
@@ -0,0 +1,144 @@
+/*
+ * hash_32 - 32 bit Fowler/Noll/Vo FNV-1a hash code
+ *
+ * @(#) $Revision: 5.1 $
+ * @(#) $Id: hash_32a.c,v 5.1 2009/06/30 09:13:32 chongo Exp $
+ * @(#) $Source: /usr/local/src/cmd/fnv/RCS/hash_32a.c,v $
+ *
+ ***
+ *
+ * Fowler/Noll/Vo hash
+ *
+ * The basis of this hash algorithm was taken from an idea sent
+ * as reviewer comments to the IEEE POSIX P1003.2 committee by:
+ *
+ * Phong Vo (http://www.research.att.com/info/kpv/)
+ * Glenn Fowler (http://www.research.att.com/~gsf/)
+ *
+ * In a subsequent ballot round:
+ *
+ * Landon Curt Noll (http://www.isthe.com/chongo/)
+ *
+ * improved on their algorithm. Some people tried this hash
+ * and found that it worked rather well. In an EMail message
+ * to Landon, they named it the ``Fowler/Noll/Vo'' or FNV hash.
+ *
+ * FNV hashes are designed to be fast while maintaining a low
+ * collision rate. The FNV speed allows one to quickly hash lots
+ * of data while maintaining a reasonable collision rate. See:
+ *
+ * http://www.isthe.com/chongo/tech/comp/fnv/index.html
+ *
+ * for more details as well as other forms of the FNV hash.
+ ***
+ *
+ * To use the recommended 32 bit FNV-1a hash, pass FNV1_32A_INIT as the
+ * Fnv32_t hashval argument to fnv_32a_buf() or fnv_32a_str().
+ *
+ ***
+ *
+ * Please do not copyright this code. This code is in the public domain.
+ *
+ * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+ * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+ * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * By:
+ * chongo <Landon Curt Noll> /\oo/\
+ * http://www.isthe.com/chongo/
+ *
+ * Share and Enjoy! :-)
+ */
+
+#include <stdlib.h>
+#include "fnv.h"
+
+
+/*
+ * 32 bit magic FNV-1a prime
+ */
+#define FNV_32_PRIME ((Fnv32_t)0x01000193)
+
+
+/*
+ * fnv_32a_buf - perform a 32 bit Fowler/Noll/Vo FNV-1a hash on a buffer
+ *
+ * input:
+ * buf - start of buffer to hash
+ * len - length of buffer in octets
+ * hval - previous hash value or 0 if first call
+ *
+ * returns:
+ * 32 bit hash as a static hash type
+ *
+ * NOTE: To use the recommended 32 bit FNV-1a hash, use FNV1_32A_INIT as the
+ * hval arg on the first call to either fnv_32a_buf() or fnv_32a_str().
+ */
+Fnv32_t
+fnv_32a_buf(void *buf, size_t len, Fnv32_t hval)
+{
+ unsigned char *bp = (unsigned char *)buf; /* start of buffer */
+ unsigned char *be = bp + len; /* beyond end of buffer */
+
+ /*
+ * FNV-1a hash each octet in the buffer
+ */
+ while (bp < be) {
+
+ /* xor the bottom with the current octet */
+ hval ^= (Fnv32_t)*bp++;
+
+ /* multiply by the 32 bit FNV magic prime mod 2^32 */
+#if defined(NO_FNV_GCC_OPTIMIZATION)
+ hval *= FNV_32_PRIME;
+#else
+ hval += (hval<<1) + (hval<<4) + (hval<<7) + (hval<<8) + (hval<<24);
+#endif
+ }
+
+ /* return our new hash value */
+ return hval;
+}
+
+
+/*
+ * fnv_32a_str - perform a 32 bit Fowler/Noll/Vo FNV-1a hash on a string
+ *
+ * input:
+ * str - string to hash
+ * hval - previous hash value or 0 if first call
+ *
+ * returns:
+ * 32 bit hash as a static hash type
+ *
+ * NOTE: To use the recommended 32 bit FNV-1a hash, use FNV1_32A_INIT as the
+ * hval arg on the first call to either fnv_32a_buf() or fnv_32a_str().
+ */
+Fnv32_t
+fnv_32a_str(char *str, Fnv32_t hval)
+{
+ unsigned char *s = (unsigned char *)str; /* unsigned string */
+
+ /*
+ * FNV-1a hash each octet in the buffer
+ */
+ while (*s) {
+
+ /* xor the bottom with the current octet */
+ hval ^= (Fnv32_t)*s++;
+
+ /* multiply by the 32 bit FNV magic prime mod 2^32 */
+#if defined(NO_FNV_GCC_OPTIMIZATION)
+ hval *= FNV_32_PRIME;
+#else
+ hval += (hval<<1) + (hval<<4) + (hval<<7) + (hval<<8) + (hval<<24);
+#endif
+ }
+
+ /* return our new hash value */
+ return hval;
+}
diff --git a/lib/fnv/hash_64.c b/lib/fnv/hash_64.c
new file mode 100644
index 0000000000..4338605dca
--- /dev/null
+++ b/lib/fnv/hash_64.c
@@ -0,0 +1,312 @@
+/*
+ * hash_64 - 64 bit Fowler/Noll/Vo-0 hash code
+ *
+ * @(#) $Revision: 5.1 $
+ * @(#) $Id: hash_64.c,v 5.1 2009/06/30 09:01:38 chongo Exp $
+ * @(#) $Source: /usr/local/src/cmd/fnv/RCS/hash_64.c,v $
+ *
+ ***
+ *
+ * Fowler/Noll/Vo hash
+ *
+ * The basis of this hash algorithm was taken from an idea sent
+ * as reviewer comments to the IEEE POSIX P1003.2 committee by:
+ *
+ * Phong Vo (http://www.research.att.com/info/kpv/)
+ * Glenn Fowler (http://www.research.att.com/~gsf/)
+ *
+ * In a subsequent ballot round:
+ *
+ * Landon Curt Noll (http://www.isthe.com/chongo/)
+ *
+ * improved on their algorithm. Some people tried this hash
+ * and found that it worked rather well. In an EMail message
+ * to Landon, they named it the ``Fowler/Noll/Vo'' or FNV hash.
+ *
+ * FNV hashes are designed to be fast while maintaining a low
+ * collision rate. The FNV speed allows one to quickly hash lots
+ * of data while maintaining a reasonable collision rate. See:
+ *
+ * http://www.isthe.com/chongo/tech/comp/fnv/index.html
+ *
+ * for more details as well as other forms of the FNV hash.
+ *
+ ***
+ *
+ * NOTE: The FNV-0 historic hash is not recommended. One should use
+ * the FNV-1 hash instead.
+ *
+ * To use the 64 bit FNV-0 historic hash, pass FNV0_64_INIT as the
+ * Fnv64_t hashval argument to fnv_64_buf() or fnv_64_str().
+ *
+ * To use the recommended 64 bit FNV-1 hash, pass FNV1_64_INIT as the
+ * Fnv64_t hashval argument to fnv_64_buf() or fnv_64_str().
+ *
+ ***
+ *
+ * Please do not copyright this code. This code is in the public domain.
+ *
+ * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+ * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+ * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * By:
+ * chongo <Landon Curt Noll> /\oo/\
+ * http://www.isthe.com/chongo/
+ *
+ * Share and Enjoy! :-)
+ */
+
+#include <stdlib.h>
+#include "fnv.h"
+
+
+/*
+ * FNV-0 defines the initial basis to be zero
+ */
+#if !defined(HAVE_64BIT_LONG_LONG)
+const Fnv64_t fnv0_64_init = { 0UL, 0UL };
+#endif /* ! HAVE_64BIT_LONG_LONG */
+
+
+/*
+ * FNV-1 defines the initial basis to be non-zero
+ */
+#if !defined(HAVE_64BIT_LONG_LONG)
+const Fnv64_t fnv1_64_init = { 0x84222325UL, 0xcbf29ce4UL };
+#endif /* ! HAVE_64BIT_LONG_LONG */
+
+
+/*
+ * 64 bit magic FNV-0 and FNV-1 prime
+ */
+#if defined(HAVE_64BIT_LONG_LONG)
+#define FNV_64_PRIME ((Fnv64_t)0x100000001b3ULL)
+#else /* HAVE_64BIT_LONG_LONG */
+#define FNV_64_PRIME_LOW ((unsigned long)0x1b3) /* lower bits of FNV prime */
+#define FNV_64_PRIME_SHIFT (8) /* top FNV prime shift above 2^32 */
+#endif /* HAVE_64BIT_LONG_LONG */
+
+
+/*
+ * fnv_64_buf - perform a 64 bit Fowler/Noll/Vo hash on a buffer
+ *
+ * input:
+ * buf - start of buffer to hash
+ * len - length of buffer in octets
+ * hval - previous hash value or 0 if first call
+ *
+ * returns:
+ * 64 bit hash as a static hash type
+ *
+ * NOTE: To use the 64 bit FNV-0 historic hash, use FNV0_64_INIT as the hval
+ * argument on the first call to either fnv_64_buf() or fnv_64_str().
+ *
+ * NOTE: To use the recommended 64 bit FNV-1 hash, use FNV1_64_INIT as the hval
+ * argument on the first call to either fnv_64_buf() or fnv_64_str().
+ */
+Fnv64_t
+fnv_64_buf(void *buf, size_t len, Fnv64_t hval)
+{
+ unsigned char *bp = (unsigned char *)buf; /* start of buffer */
+ unsigned char *be = bp + len; /* beyond end of buffer */
+
+#if defined(HAVE_64BIT_LONG_LONG)
+
+ /*
+ * FNV-1 hash each octet of the buffer
+ */
+ while (bp < be) {
+
+ /* multiply by the 64 bit FNV magic prime mod 2^64 */
+#if defined(NO_FNV_GCC_OPTIMIZATION)
+ hval *= FNV_64_PRIME;
+#else /* NO_FNV_GCC_OPTIMIZATION */
+ hval += (hval << 1) + (hval << 4) + (hval << 5) +
+ (hval << 7) + (hval << 8) + (hval << 40);
+#endif /* NO_FNV_GCC_OPTIMIZATION */
+
+ /* xor the bottom with the current octet */
+ hval ^= (Fnv64_t)*bp++;
+ }
+
+#else /* HAVE_64BIT_LONG_LONG */
+
+ unsigned long val[4]; /* hash value in base 2^16 */
+ unsigned long tmp[4]; /* tmp 64 bit value */
+
+ /*
+ * Convert Fnv64_t hval into a base 2^16 array
+ */
+ val[0] = hval.w32[0];
+ val[1] = (val[0] >> 16);
+ val[0] &= 0xffff;
+ val[2] = hval.w32[1];
+ val[3] = (val[2] >> 16);
+ val[2] &= 0xffff;
+
+ /*
+ * FNV-1 hash each octet of the buffer
+ */
+ while (bp < be) {
+
+ /*
+ * multiply by the 64 bit FNV magic prime mod 2^64
+ *
+ * Using 0x100000001b3 we have the following digits base 2^16:
+ *
+ * 0x0 0x100 0x0 0x1b3
+ *
+ * which is the same as:
+ *
+ * 0x0 1<<FNV_64_PRIME_SHIFT 0x0 FNV_64_PRIME_LOW
+ */
+ /* multiply by the lowest order digit base 2^16 */
+ tmp[0] = val[0] * FNV_64_PRIME_LOW;
+ tmp[1] = val[1] * FNV_64_PRIME_LOW;
+ tmp[2] = val[2] * FNV_64_PRIME_LOW;
+ tmp[3] = val[3] * FNV_64_PRIME_LOW;
+ /* multiply by the other non-zero digit */
+ tmp[2] += val[0] << FNV_64_PRIME_SHIFT; /* tmp[2] += val[0] * 0x100 */
+ tmp[3] += val[1] << FNV_64_PRIME_SHIFT; /* tmp[3] += val[1] * 0x100 */
+ /* propagate carries */
+ tmp[1] += (tmp[0] >> 16);
+ val[0] = tmp[0] & 0xffff;
+ tmp[2] += (tmp[1] >> 16);
+ val[1] = tmp[1] & 0xffff;
+ val[3] = tmp[3] + (tmp[2] >> 16);
+ val[2] = tmp[2] & 0xffff;
+ /*
+ * Doing a val[3] &= 0xffff; is not really needed since it simply
+ * removes multiples of 2^64. We can discard these excess bits
+ * outside of the loop when we convert to Fnv64_t.
+ */
+
+ /* xor the bottom with the current octet */
+ val[0] ^= (unsigned long)*bp++;
+ }
+
+ /*
+ * Convert base 2^16 array back into an Fnv64_t
+ */
+ hval.w32[1] = ((val[3]<<16) | val[2]);
+ hval.w32[0] = ((val[1]<<16) | val[0]);
+
+#endif /* HAVE_64BIT_LONG_LONG */
+
+ /* return our new hash value */
+ return hval;
+}
+
+
+/*
+ * fnv_64_str - perform a 64 bit Fowler/Noll/Vo hash on a buffer
+ *
+ * input:
+ * buf - start of buffer to hash
+ * hval - previous hash value or 0 if first call
+ *
+ * returns:
+ * 64 bit hash as a static hash type
+ *
+ * NOTE: To use the 64 bit FNV-0 historic hash, use FNV0_64_INIT as the hval
+ * argument on the first call to either fnv_64_buf() or fnv_64_str().
+ *
+ * NOTE: To use the recommended 64 bit FNV-1 hash, use FNV1_64_INIT as the hval
+ * argument on the first call to either fnv_64_buf() or fnv_64_str().
+ */
+Fnv64_t
+fnv_64_str(char *str, Fnv64_t hval)
+{
+ unsigned char *s = (unsigned char *)str; /* unsigned string */
+
+#if defined(HAVE_64BIT_LONG_LONG)
+
+ /*
+ * FNV-1 hash each octet of the string
+ */
+ while (*s) {
+
+ /* multiply by the 64 bit FNV magic prime mod 2^64 */
+#if defined(NO_FNV_GCC_OPTIMIZATION)
+ hval *= FNV_64_PRIME;
+#else /* NO_FNV_GCC_OPTIMIZATION */
+ hval += (hval << 1) + (hval << 4) + (hval << 5) +
+ (hval << 7) + (hval << 8) + (hval << 40);
+#endif /* NO_FNV_GCC_OPTIMIZATION */
+
+ /* xor the bottom with the current octet */
+ hval ^= (Fnv64_t)*s++;
+ }
+
+#else /* !HAVE_64BIT_LONG_LONG */
+
+ unsigned long val[4]; /* hash value in base 2^16 */
+ unsigned long tmp[4]; /* tmp 64 bit value */
+
+ /*
+ * Convert Fnv64_t hval into a base 2^16 array
+ */
+ val[0] = hval.w32[0];
+ val[1] = (val[0] >> 16);
+ val[0] &= 0xffff;
+ val[2] = hval.w32[1];
+ val[3] = (val[2] >> 16);
+ val[2] &= 0xffff;
+
+ /*
+ * FNV-1 hash each octet of the string
+ */
+ while (*s) {
+
+ /*
+ * multiply by the 64 bit FNV magic prime mod 2^64
+ *
+ * Using 1099511628211, we have the following digits base 2^16:
+ *
+ * 0x0 0x100 0x0 0x1b3
+ *
+ * which is the same as:
+ *
+ * 0x0 1<<FNV_64_PRIME_SHIFT 0x0 FNV_64_PRIME_LOW
+ */
+ /* multiply by the lowest order digit base 2^16 */
+ tmp[0] = val[0] * FNV_64_PRIME_LOW;
+ tmp[1] = val[1] * FNV_64_PRIME_LOW;
+ tmp[2] = val[2] * FNV_64_PRIME_LOW;
+ tmp[3] = val[3] * FNV_64_PRIME_LOW;
+ /* multiply by the other non-zero digit */
+ tmp[2] += val[0] << FNV_64_PRIME_SHIFT; /* tmp[2] += val[0] * 0x100 */
+ tmp[3] += val[1] << FNV_64_PRIME_SHIFT; /* tmp[3] += val[1] * 0x100 */
+ /* propagate carries */
+ tmp[1] += (tmp[0] >> 16);
+ val[0] = tmp[0] & 0xffff;
+ tmp[2] += (tmp[1] >> 16);
+ val[1] = tmp[1] & 0xffff;
+ val[3] = tmp[3] + (tmp[2] >> 16);
+ val[2] = tmp[2] & 0xffff;
+ /*
+ * Doing a val[3] &= 0xffff; is not really needed since it simply
+ * removes multiples of 2^64. We can discard these excess bits
+ * outside of the loop when we convert to Fnv64_t.
+ */
+
+ /* xor the bottom with the current octet */
+ val[0] ^= (unsigned long)(*s++);
+ }
+
+ /*
+ * Convert base 2^16 array back into an Fnv64_t
+ */
+ hval.w32[1] = ((val[3]<<16) | val[2]);
+ hval.w32[0] = ((val[1]<<16) | val[0]);
+
+#endif /* !HAVE_64BIT_LONG_LONG */
+
+ /* return our new hash value */
+ return hval;
+}
diff --git a/lib/fnv/hash_64a.c b/lib/fnv/hash_64a.c
new file mode 100644
index 0000000000..6660f92ddf
--- /dev/null
+++ b/lib/fnv/hash_64a.c
@@ -0,0 +1,291 @@
+/*
+ * hash_64 - 64 bit Fowler/Noll/Vo-0 FNV-1a hash code
+ *
+ * @(#) $Revision: 5.1 $
+ * @(#) $Id: hash_64a.c,v 5.1 2009/06/30 09:01:38 chongo Exp $
+ * @(#) $Source: /usr/local/src/cmd/fnv/RCS/hash_64a.c,v $
+ *
+ ***
+ *
+ * Fowler/Noll/Vo hash
+ *
+ * The basis of this hash algorithm was taken from an idea sent
+ * as reviewer comments to the IEEE POSIX P1003.2 committee by:
+ *
+ * Phong Vo (http://www.research.att.com/info/kpv/)
+ * Glenn Fowler (http://www.research.att.com/~gsf/)
+ *
+ * In a subsequent ballot round:
+ *
+ * Landon Curt Noll (http://www.isthe.com/chongo/)
+ *
+ * improved on their algorithm. Some people tried this hash
+ * and found that it worked rather well. In an EMail message
+ * to Landon, they named it the ``Fowler/Noll/Vo'' or FNV hash.
+ *
+ * FNV hashes are designed to be fast while maintaining a low
+ * collision rate. The FNV speed allows one to quickly hash lots
+ * of data while maintaining a reasonable collision rate. See:
+ *
+ * http://www.isthe.com/chongo/tech/comp/fnv/index.html
+ *
+ * for more details as well as other forms of the FNV hash.
+ *
+ ***
+ *
+ * To use the recommended 64 bit FNV-1a hash, pass FNV1A_64_INIT as the
+ * Fnv64_t hashval argument to fnv_64a_buf() or fnv_64a_str().
+ *
+ ***
+ *
+ * Please do not copyright this code. This code is in the public domain.
+ *
+ * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+ * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+ * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * By:
+ * chongo <Landon Curt Noll> /\oo/\
+ * http://www.isthe.com/chongo/
+ *
+ * Share and Enjoy! :-)
+ */
+
+#include <stdlib.h>
+#include "fnv.h"
+
+
+/*
+ * FNV-1a defines the initial basis to be non-zero
+ */
+#if !defined(HAVE_64BIT_LONG_LONG)
+const Fnv64_t fnv1a_64_init = { 0x84222325, 0xcbf29ce4 };
+#endif /* ! HAVE_64BIT_LONG_LONG */
+
+
+/*
+ * 64 bit magic FNV-1a prime
+ */
+#if defined(HAVE_64BIT_LONG_LONG)
+#define FNV_64_PRIME ((Fnv64_t)0x100000001b3ULL)
+#else /* HAVE_64BIT_LONG_LONG */
+#define FNV_64_PRIME_LOW ((unsigned long)0x1b3) /* lower bits of FNV prime */
+#define FNV_64_PRIME_SHIFT (8) /* top FNV prime shift above 2^32 */
+#endif /* HAVE_64BIT_LONG_LONG */
+
+
+/*
+ * fnv_64a_buf - perform a 64 bit Fowler/Noll/Vo FNV-1a hash on a buffer
+ *
+ * input:
+ * buf - start of buffer to hash
+ * len - length of buffer in octets
+ * hval - previous hash value or 0 if first call
+ *
+ * returns:
+ * 64 bit hash as a static hash type
+ *
+ * NOTE: To use the recommended 64 bit FNV-1a hash, use FNV1A_64_INIT as the
+ * hval arg on the first call to either fnv_64a_buf() or fnv_64a_str().
+ */
+Fnv64_t
+fnv_64a_buf(void *buf, size_t len, Fnv64_t hval)
+{
+ unsigned char *bp = (unsigned char *)buf; /* start of buffer */
+ unsigned char *be = bp + len; /* beyond end of buffer */
+
+#if defined(HAVE_64BIT_LONG_LONG)
+ /*
+ * FNV-1a hash each octet of the buffer
+ */
+ while (bp < be) {
+
+ /* xor the bottom with the current octet */
+ hval ^= (Fnv64_t)*bp++;
+
+ /* multiply by the 64 bit FNV magic prime mod 2^64 */
+#if defined(NO_FNV_GCC_OPTIMIZATION)
+ hval *= FNV_64_PRIME;
+#else /* NO_FNV_GCC_OPTIMIZATION */
+ hval += (hval << 1) + (hval << 4) + (hval << 5) +
+ (hval << 7) + (hval << 8) + (hval << 40);
+#endif /* NO_FNV_GCC_OPTIMIZATION */
+ }
+
+#else /* HAVE_64BIT_LONG_LONG */
+
+ unsigned long val[4]; /* hash value in base 2^16 */
+ unsigned long tmp[4]; /* tmp 64 bit value */
+
+ /*
+ * Convert Fnv64_t hval into a base 2^16 array
+ */
+ val[0] = hval.w32[0];
+ val[1] = (val[0] >> 16);
+ val[0] &= 0xffff;
+ val[2] = hval.w32[1];
+ val[3] = (val[2] >> 16);
+ val[2] &= 0xffff;
+
+ /*
+ * FNV-1a hash each octet of the buffer
+ */
+ while (bp < be) {
+
+ /* xor the bottom with the current octet */
+ val[0] ^= (unsigned long)*bp++;
+
+ /*
+ * multiply by the 64 bit FNV magic prime mod 2^64
+ *
+ * Using 0x100000001b3 we have the following digits base 2^16:
+ *
+ * 0x0 0x100 0x0 0x1b3
+ *
+ * which is the same as:
+ *
+ * 0x0 1<<FNV_64_PRIME_SHIFT 0x0 FNV_64_PRIME_LOW
+ */
+ /* multiply by the lowest order digit base 2^16 */
+ tmp[0] = val[0] * FNV_64_PRIME_LOW;
+ tmp[1] = val[1] * FNV_64_PRIME_LOW;
+ tmp[2] = val[2] * FNV_64_PRIME_LOW;
+ tmp[3] = val[3] * FNV_64_PRIME_LOW;
+ /* multiply by the other non-zero digit */
+ tmp[2] += val[0] << FNV_64_PRIME_SHIFT; /* tmp[2] += val[0] * 0x100 */
+ tmp[3] += val[1] << FNV_64_PRIME_SHIFT; /* tmp[3] += val[1] * 0x100 */
+ /* propagate carries */
+ tmp[1] += (tmp[0] >> 16);
+ val[0] = tmp[0] & 0xffff;
+ tmp[2] += (tmp[1] >> 16);
+ val[1] = tmp[1] & 0xffff;
+ val[3] = tmp[3] + (tmp[2] >> 16);
+ val[2] = tmp[2] & 0xffff;
+ /*
+ * Doing a val[3] &= 0xffff; is not really needed since it simply
+ * removes multiples of 2^64. We can discard these excess bits
+ * outside of the loop when we convert to Fnv64_t.
+ */
+ }
+
+ /*
+ * Convert base 2^16 array back into an Fnv64_t
+ */
+ hval.w32[1] = ((val[3]<<16) | val[2]);
+ hval.w32[0] = ((val[1]<<16) | val[0]);
+
+#endif /* HAVE_64BIT_LONG_LONG */
+
+ /* return our new hash value */
+ return hval;
+}
+
+
+/*
+ * fnv_64a_str - perform a 64 bit Fowler/Noll/Vo FNV-1a hash on a buffer
+ *
+ * input:
+ * buf - start of buffer to hash
+ * hval - previous hash value or 0 if first call
+ *
+ * returns:
+ * 64 bit hash as a static hash type
+ *
+ * NOTE: To use the recommended 64 bit FNV-1a hash, use FNV1A_64_INIT as the
+ * hval arg on the first call to either fnv_64a_buf() or fnv_64a_str().
+ */
+Fnv64_t
+fnv_64a_str(char *str, Fnv64_t hval)
+{
+ unsigned char *s = (unsigned char *)str; /* unsigned string */
+
+#if defined(HAVE_64BIT_LONG_LONG)
+
+ /*
+ * FNV-1a hash each octet of the string
+ */
+ while (*s) {
+
+ /* xor the bottom with the current octet */
+ hval ^= (Fnv64_t)*s++;
+
+ /* multiply by the 64 bit FNV magic prime mod 2^64 */
+#if defined(NO_FNV_GCC_OPTIMIZATION)
+ hval *= FNV_64_PRIME;
+#else /* NO_FNV_GCC_OPTIMIZATION */
+ hval += (hval << 1) + (hval << 4) + (hval << 5) +
+ (hval << 7) + (hval << 8) + (hval << 40);
+#endif /* NO_FNV_GCC_OPTIMIZATION */
+ }
+
+#else /* !HAVE_64BIT_LONG_LONG */
+
+ unsigned long val[4]; /* hash value in base 2^16 */
+ unsigned long tmp[4]; /* tmp 64 bit value */
+
+ /*
+ * Convert Fnv64_t hval into a base 2^16 array
+ */
+ val[0] = hval.w32[0];
+ val[1] = (val[0] >> 16);
+ val[0] &= 0xffff;
+ val[2] = hval.w32[1];
+ val[3] = (val[2] >> 16);
+ val[2] &= 0xffff;
+
+ /*
+ * FNV-1a hash each octet of the string
+ */
+ while (*s) {
+
+ /* xor the bottom with the current octet */
+
+ /*
+ * multiply by the 64 bit FNV magic prime mod 2^64
+ *
+ * Using 1099511628211, we have the following digits base 2^16:
+ *
+ * 0x0 0x100 0x0 0x1b3
+ *
+ * which is the same as:
+ *
+ * 0x0 1<<FNV_64_PRIME_SHIFT 0x0 FNV_64_PRIME_LOW
+ */
+ /* multiply by the lowest order digit base 2^16 */
+ tmp[0] = val[0] * FNV_64_PRIME_LOW;
+ tmp[1] = val[1] * FNV_64_PRIME_LOW;
+ tmp[2] = val[2] * FNV_64_PRIME_LOW;
+ tmp[3] = val[3] * FNV_64_PRIME_LOW;
+ /* multiply by the other non-zero digit */
+ tmp[2] += val[0] << FNV_64_PRIME_SHIFT; /* tmp[2] += val[0] * 0x100 */
+ tmp[3] += val[1] << FNV_64_PRIME_SHIFT; /* tmp[3] += val[1] * 0x100 */
+ /* propagate carries */
+ tmp[1] += (tmp[0] >> 16);
+ val[0] = tmp[0] & 0xffff;
+ tmp[2] += (tmp[1] >> 16);
+ val[1] = tmp[1] & 0xffff;
+ val[3] = tmp[3] + (tmp[2] >> 16);
+ val[2] = tmp[2] & 0xffff;
+ /*
+ * Doing a val[3] &= 0xffff; is not really needed since it simply
+ * removes multiples of 2^64. We can discard these excess bits
+ * outside of the loop when we convert to Fnv64_t.
+ */
+ val[0] ^= (unsigned long)(*s++);
+ }
+
+ /*
+ * Convert base 2^16 array back into an Fnv64_t
+ */
+ hval.w32[1] = ((val[3]<<16) | val[2]);
+ hval.w32[0] = ((val[1]<<16) | val[0]);
+
+#endif /* !HAVE_64BIT_LONG_LONG */
+
+ /* return our new hash value */
+ return hval;
+}
diff --git a/lib/fnv/have_ulong64.c b/lib/fnv/have_ulong64.c
new file mode 100644
index 0000000000..5c06262388
--- /dev/null
+++ b/lib/fnv/have_ulong64.c
@@ -0,0 +1,58 @@
+/*
+ * have_ulong64 - Determine if we have a 64 bit unsigned long long
+ *
+ * usage:
+ * have_ulong64 > longlong.h
+ *
+ * Not all systems have a 'long long type' so this may not compile on
+ * your system.
+ *
+ * This prog outputs the define:
+ *
+ * HAVE_64BIT_LONG_LONG
+ * defined ==> we have a 64 bit unsigned long long
+ * undefined ==> we must simulate a 64 bit unsigned long long
+ */
+/*
+ *
+ * Please do not copyright this code. This code is in the public domain.
+ *
+ * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+ * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+ * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * By:
+ * chongo <Landon Curt Noll> /\oo/\
+ * http://www.isthe.com/chongo/
+ *
+ * Share and Enjoy! :-)
+ */
+
+/*
+ * have the compiler try its hand with unsigned and signed long longs
+ */
+#if ! defined(NO64BIT_LONG_LONG)
+unsigned long long val = 1099511628211ULL;
+#endif /* NO64BIT_LONG_LONG */
+
+int
+main(void)
+{
+ /*
+ * ensure that the length of long long val is what we expect
+ */
+#if defined(NO64BIT_LONG_LONG)
+ printf("#undef HAVE_64BIT_LONG_LONG\t/* no */\n");
+#else /* NO64BIT_LONG_LONG */
+ if (val == 1099511628211ULL && sizeof(val) == 8) {
+ printf("#define HAVE_64BIT_LONG_LONG\t/* yes */\n");
+ }
+#endif /* NO64BIT_LONG_LONG */
+
+ /* exit(0); */
+ return 0;
+}
diff --git a/lib/fnv/longlong.h b/lib/fnv/longlong.h
new file mode 100644
index 0000000000..c8cfe48f29
--- /dev/null
+++ b/lib/fnv/longlong.h
@@ -0,0 +1,18 @@
+/*
+ * DO NOT EDIT -- generated by the Makefile
+ */
+
+#if !defined(__LONGLONG_H__)
+#define __LONGLONG_H__
+
+/* do we have/want to use a long long type? */
+#define HAVE_64BIT_LONG_LONG /* yes */
+
+/*
+ * NO64BIT_LONG_LONG undef HAVE_64BIT_LONG_LONG
+ */
+#if defined(NO64BIT_LONG_LONG)
+#undef HAVE_64BIT_LONG_LONG
+#endif /* NO64BIT_LONG_LONG */
+
+#endif /* !__LONGLONG_H__ */
diff --git a/lib/fnv/qmk_fnv_type_validation.c b/lib/fnv/qmk_fnv_type_validation.c
new file mode 100644
index 0000000000..e8576617ba
--- /dev/null
+++ b/lib/fnv/qmk_fnv_type_validation.c
@@ -0,0 +1,14 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "fnv.h"
+
+// This library was originally sourced from:
+// http://www.isthe.com/chongo/tech/comp/fnv/index.html
+//
+// Version at the time of retrieval on 2022-06-26: v5.0.3
+
+_Static_assert(sizeof(long long) == 8, "long long should be 64 bits");
+_Static_assert(sizeof(unsigned long long) == 8, "unsigned long long should be 64 bits");
+
+_Static_assert(sizeof(Fnv32_t) == 4, "Fnv32_t should be 32 bits");
+_Static_assert(sizeof(Fnv64_t) == 8, "Fnv64_t should be 64 bits");
diff --git a/lib/fnv/test_fnv.c b/lib/fnv/test_fnv.c
new file mode 100644
index 0000000000..efec3dec1d
--- /dev/null
+++ b/lib/fnv/test_fnv.c
@@ -0,0 +1,2237 @@
+/*
+ * test_fnv - FNV test suite
+ *
+ * @(#) $Revision: 5.3 $
+ * @(#) $Id: test_fnv.c,v 5.3 2009/06/30 11:50:41 chongo Exp $
+ * @(#) $Source: /usr/local/src/cmd/fnv/RCS/test_fnv.c,v $
+ *
+ ***
+ *
+ * Fowler/Noll/Vo hash
+ *
+ * The basis of this hash algorithm was taken from an idea sent
+ * as reviewer comments to the IEEE POSIX P1003.2 committee by:
+ *
+ * Phong Vo (http://www.research.att.com/info/kpv/)
+ * Glenn Fowler (http://www.research.att.com/~gsf/)
+ *
+ * In a subsequent ballot round:
+ *
+ * Landon Curt Noll (http://www.isthe.com/chongo/)
+ *
+ * improved on their algorithm. Some people tried this hash
+ * and found that it worked rather well. In an EMail message
+ * to Landon, they named it the ``Fowler/Noll/Vo'' or FNV hash.
+ *
+ * FNV hashes are designed to be fast while maintaining a low
+ * collision rate. The FNV speed allows one to quickly hash lots
+ * of data while maintaining a reasonable collision rate. See:
+ *
+ * http://www.isthe.com/chongo/tech/comp/fnv/index.html
+ *
+ * for more details as well as other forms of the FNV hash.
+ *
+ ***
+ *
+ * Please do not copyright this code. This code is in the public domain.
+ *
+ * LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+ * EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+ * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * By:
+ * chongo <Landon Curt Noll> /\oo/\
+ * http://www.isthe.com/chongo/
+ *
+ * Share and Enjoy! :-)
+ */
+
+#include <stdio.h>
+#include "longlong.h"
+#include "fnv.h"
+
+#define LEN(x) (sizeof(x)-1)
+/* TEST macro does not include trailing NUL byte in the test vector */
+#define TEST(x) {x, LEN(x)}
+/* TEST0 macro includes the trailing NUL byte in the test vector */
+#define TEST0(x) {x, sizeof(x)}
+/* REPEAT500 - repeat a string 500 times */
+#define R500(x) R100(x)R100(x)R100(x)R100(x)R100(x)
+#define R100(x) R10(x)R10(x)R10(x)R10(x)R10(x)R10(x)R10(x)R10(x)R10(x)R10(x)
+#define R10(x) x x x x x x x x x x
+
+/*
+ * FNV test vectors
+ *
+ * NOTE: A NULL pointer marks beyond the end of the test vectors.
+ *
+ * NOTE: The order of the fnv_test_str[] test vectors is 1-to-1 with:
+ *
+ * struct fnv0_32_test_vector fnv0_32_vector[];
+ * struct fnv1_32_test_vector fnv1_32_vector[];
+ * struct fnv1a_32_test_vector fnv1a_32_vector[];
+ * struct fnv0_64_test_vector fnv0_64_vector[];
+ * struct fnv1_64_test_vector fnv1_64_vector[];
+ * struct fnv1a_64_test_vector fnv1a_64_vector[];
+ *
+ * IMPORTANT NOTE:
+ *
+ * If you change the fnv_test_str[] array, you need
+ * to also change ALL of the above fnv*_vector arrays!!!
+ *
+ * To rebuild, try:
+ *
+ * make vector.c
+ *
+ * and then fold the results into the source file.
+ * Of course, you better make sure that the vaules
+ * produced by the above command are valid, otherwise
+ * you will be testing against invalid vectors!
+ */
+struct test_vector fnv_test_str[] = {
+ TEST(""),
+ TEST("a"),
+ TEST("b"),
+ TEST("c"),
+ TEST("d"),
+ TEST("e"),
+ TEST("f"),
+ TEST("fo"),
+ TEST("foo"),
+ TEST("foob"),
+ TEST("fooba"),
+ TEST("foobar"),
+ TEST0(""),
+ TEST0("a"),
+ TEST0("b"),
+ TEST0("c"),
+ TEST0("d"),
+ TEST0("e"),
+ TEST0("f"),
+ TEST0("fo"),
+ TEST0("foo"),
+ TEST0("foob"),
+ TEST0("fooba"),
+ TEST0("foobar"),
+ TEST("ch"),
+ TEST("cho"),
+ TEST("chon"),
+ TEST("chong"),
+ TEST("chongo"),
+ TEST("chongo "),
+ TEST("chongo w"),
+ TEST("chongo wa"),
+ TEST("chongo was"),
+ TEST("chongo was "),
+ TEST("chongo was h"),
+ TEST("chongo was he"),
+ TEST("chongo was her"),
+ TEST("chongo was here"),
+ TEST("chongo was here!"),
+ TEST("chongo was here!\n"),
+ TEST0("ch"),
+ TEST0("cho"),
+ TEST0("chon"),
+ TEST0("chong"),
+ TEST0("chongo"),
+ TEST0("chongo "),
+ TEST0("chongo w"),
+ TEST0("chongo wa"),
+ TEST0("chongo was"),
+ TEST0("chongo was "),
+ TEST0("chongo was h"),
+ TEST0("chongo was he"),
+ TEST0("chongo was her"),
+ TEST0("chongo was here"),
+ TEST0("chongo was here!"),
+ TEST0("chongo was here!\n"),
+ TEST("cu"),
+ TEST("cur"),
+ TEST("curd"),
+ TEST("curds"),
+ TEST("curds "),
+ TEST("curds a"),
+ TEST("curds an"),
+ TEST("curds and"),
+ TEST("curds and "),
+ TEST("curds and w"),
+ TEST("curds and wh"),
+ TEST("curds and whe"),
+ TEST("curds and whey"),
+ TEST("curds and whey\n"),
+ TEST0("cu"),
+ TEST0("cur"),
+ TEST0("curd"),
+ TEST0("curds"),
+ TEST0("curds "),
+ TEST0("curds a"),
+ TEST0("curds an"),
+ TEST0("curds and"),
+ TEST0("curds and "),
+ TEST0("curds and w"),
+ TEST0("curds and wh"),
+ TEST0("curds and whe"),
+ TEST0("curds and whey"),
+ TEST0("curds and whey\n"),
+ TEST("hi"), TEST0("hi"),
+ TEST("hello"), TEST0("hello"),
+ TEST("\xff\x00\x00\x01"), TEST("\x01\x00\x00\xff"),
+ TEST("\xff\x00\x00\x02"), TEST("\x02\x00\x00\xff"),
+ TEST("\xff\x00\x00\x03"), TEST("\x03\x00\x00\xff"),
+ TEST("\xff\x00\x00\x04"), TEST("\x04\x00\x00\xff"),
+ TEST("\x40\x51\x4e\x44"), TEST("\x44\x4e\x51\x40"),
+ TEST("\x40\x51\x4e\x4a"), TEST("\x4a\x4e\x51\x40"),
+ TEST("\x40\x51\x4e\x54"), TEST("\x54\x4e\x51\x40"),
+ TEST("127.0.0.1"), TEST0("127.0.0.1"),
+ TEST("127.0.0.2"), TEST0("127.0.0.2"),
+ TEST("127.0.0.3"), TEST0("127.0.0.3"),
+ TEST("64.81.78.68"), TEST0("64.81.78.68"),
+ TEST("64.81.78.74"), TEST0("64.81.78.74"),
+ TEST("64.81.78.84"), TEST0("64.81.78.84"),
+ TEST("feedface"), TEST0("feedface"),
+ TEST("feedfacedaffdeed"), TEST0("feedfacedaffdeed"),
+ TEST("feedfacedeadbeef"), TEST0("feedfacedeadbeef"),
+ TEST("line 1\nline 2\nline 3"),
+ TEST("chongo <Landon Curt Noll> /\\../\\"),
+ TEST0("chongo <Landon Curt Noll> /\\../\\"),
+ TEST("chongo (Landon Curt Noll) /\\../\\"),
+ TEST0("chongo (Landon Curt Noll) /\\../\\"),
+ TEST("http://antwrp.gsfc.nasa.gov/apod/astropix.html"),
+ TEST("http://en.wikipedia.org/wiki/Fowler_Noll_Vo_hash"),
+ TEST("http://epod.usra.edu/"),
+ TEST("http://exoplanet.eu/"),
+ TEST("http://hvo.wr.usgs.gov/cam3/"),
+ TEST("http://hvo.wr.usgs.gov/cams/HMcam/"),
+ TEST("http://hvo.wr.usgs.gov/kilauea/update/deformation.html"),
+ TEST("http://hvo.wr.usgs.gov/kilauea/update/images.html"),
+ TEST("http://hvo.wr.usgs.gov/kilauea/update/maps.html"),
+ TEST("http://hvo.wr.usgs.gov/volcanowatch/current_issue.html"),
+ TEST("http://neo.jpl.nasa.gov/risk/"),
+ TEST("http://norvig.com/21-days.html"),
+ TEST("http://primes.utm.edu/curios/home.php"),
+ TEST("http://slashdot.org/"),
+ TEST("http://tux.wr.usgs.gov/Maps/155.25-19.5.html"),
+ TEST("http://volcano.wr.usgs.gov/kilaueastatus.php"),
+ TEST("http://www.avo.alaska.edu/activity/Redoubt.php"),
+ TEST("http://www.dilbert.com/fast/"),
+ TEST("http://www.fourmilab.ch/gravitation/orbits/"),
+ TEST("http://www.fpoa.net/"),
+ TEST("http://www.ioccc.org/index.html"),
+ TEST("http://www.isthe.com/cgi-bin/number.cgi"),
+ TEST("http://www.isthe.com/chongo/bio.html"),
+ TEST("http://www.isthe.com/chongo/index.html"),
+ TEST("http://www.isthe.com/chongo/src/calc/lucas-calc"),
+ TEST("http://www.isthe.com/chongo/tech/astro/venus2004.html"),
+ TEST("http://www.isthe.com/chongo/tech/astro/vita.html"),
+ TEST("http://www.isthe.com/chongo/tech/comp/c/expert.html"),
+ TEST("http://www.isthe.com/chongo/tech/comp/calc/index.html"),
+ TEST("http://www.isthe.com/chongo/tech/comp/fnv/index.html"),
+ TEST("http://www.isthe.com/chongo/tech/math/number/howhigh.html"),
+ TEST("http://www.isthe.com/chongo/tech/math/number/number.html"),
+ TEST("http://www.isthe.com/chongo/tech/math/prime/mersenne.html"),
+ TEST("http://www.isthe.com/chongo/tech/math/prime/mersenne.html#largest"),
+ TEST("http://www.lavarnd.org/cgi-bin/corpspeak.cgi"),
+ TEST("http://www.lavarnd.org/cgi-bin/haiku.cgi"),
+ TEST("http://www.lavarnd.org/cgi-bin/rand-none.cgi"),
+ TEST("http://www.lavarnd.org/cgi-bin/randdist.cgi"),
+ TEST("http://www.lavarnd.org/index.html"),
+ TEST("http://www.lavarnd.org/what/nist-test.html"),
+ TEST("http://www.macosxhints.com/"),
+ TEST("http://www.mellis.com/"),
+ TEST("http://www.nature.nps.gov/air/webcams/parks/havoso2alert/havoalert.cfm"),
+ TEST("http://www.nature.nps.gov/air/webcams/parks/havoso2alert/timelines_24.cfm"),
+ TEST("http://www.paulnoll.com/"),
+ TEST("http://www.pepysdiary.com/"),
+ TEST("http://www.sciencenews.org/index/home/activity/view"),
+ TEST("http://www.skyandtelescope.com/"),
+ TEST("http://www.sput.nl/~rob/sirius.html"),
+ TEST("http://www.systemexperts.com/"),
+ TEST("http://www.tq-international.com/phpBB3/index.php"),
+ TEST("http://www.travelquesttours.com/index.htm"),
+ TEST("http://www.wunderground.com/global/stations/89606.html"),
+ TEST(R10("21701")),
+ TEST(R10("M21701")),
+ TEST(R10("2^21701-1")),
+ TEST(R10("\x54\xc5")),
+ TEST(R10("\xc5\x54")),
+ TEST(R10("23209")),
+ TEST(R10("M23209")),
+ TEST(R10("2^23209-1")),
+ TEST(R10("\x5a\xa9")),
+ TEST(R10("\xa9\x5a")),
+ TEST(R10("391581216093")),
+ TEST(R10("391581*2^216093-1")),
+ TEST(R10("\x05\xf9\x9d\x03\x4c\x81")),
+ TEST(R10("FEDCBA9876543210")),
+ TEST(R10("\xfe\xdc\xba\x98\x76\x54\x32\x10")),
+ TEST(R10("EFCDAB8967452301")),
+ TEST(R10("\xef\xcd\xab\x89\x67\x45\x23\x01")),
+ TEST(R10("0123456789ABCDEF")),
+ TEST(R10("\x01\x23\x45\x67\x89\xab\xcd\xef")),
+ TEST(R10("1032547698BADCFE")),
+ TEST(R10("\x10\x32\x54\x76\x98\xba\xdc\xfe")),
+ TEST(R500("\x00")),
+ TEST(R500("\x07")),
+ TEST(R500("~")),
+ TEST(R500("\x7f")),
+ {NULL, 0} /* MUST BE LAST */
+};
+
+
+/*
+ * insert the contents of vector.c below
+ *
+ * make vector.c
+ * :r vector.c
+ */
+/* start of output generated by make vector.c */
+
+/* FNV-0 32 bit test vectors */
+struct fnv0_32_test_vector fnv0_32_vector[] = {
+ { &fnv_test_str[0], (Fnv32_t) 0x00000000UL },
+ { &fnv_test_str[1], (Fnv32_t) 0x00000061UL },
+ { &fnv_test_str[2], (Fnv32_t) 0x00000062UL },
+ { &fnv_test_str[3], (Fnv32_t) 0x00000063UL },
+ { &fnv_test_str[4], (Fnv32_t) 0x00000064UL },
+ { &fnv_test_str[5], (Fnv32_t) 0x00000065UL },
+ { &fnv_test_str[6], (Fnv32_t) 0x00000066UL },
+ { &fnv_test_str[7], (Fnv32_t) 0x6600a0fdUL },
+ { &fnv_test_str[8], (Fnv32_t) 0x8ffd6e28UL },
+ { &fnv_test_str[9], (Fnv32_t) 0xd3f4689aUL },
+ { &fnv_test_str[10], (Fnv32_t) 0x43c0aa0fUL },
+ { &fnv_test_str[11], (Fnv32_t) 0xb74bb5efUL },
+ { &fnv_test_str[12], (Fnv32_t) 0x00000000UL },
+ { &fnv_test_str[13], (Fnv32_t) 0x610098b3UL },
+ { &fnv_test_str[14], (Fnv32_t) 0x62009a46UL },
+ { &fnv_test_str[15], (Fnv32_t) 0x63009bd9UL },
+ { &fnv_test_str[16], (Fnv32_t) 0x64009d6cUL },
+ { &fnv_test_str[17], (Fnv32_t) 0x65009effUL },
+ { &fnv_test_str[18], (Fnv32_t) 0x6600a092UL },
+ { &fnv_test_str[19], (Fnv32_t) 0x8ffd6e47UL },
+ { &fnv_test_str[20], (Fnv32_t) 0xd3f468f8UL },
+ { &fnv_test_str[21], (Fnv32_t) 0x43c0aa6eUL },
+ { &fnv_test_str[22], (Fnv32_t) 0xb74bb59dUL },
+ { &fnv_test_str[23], (Fnv32_t) 0x7b2f673dUL },
+ { &fnv_test_str[24], (Fnv32_t) 0x63009bb1UL },
+ { &fnv_test_str[25], (Fnv32_t) 0x8af517ccUL },
+ { &fnv_test_str[26], (Fnv32_t) 0x8bd4764aUL },
+ { &fnv_test_str[27], (Fnv32_t) 0x69763619UL },
+ { &fnv_test_str[28], (Fnv32_t) 0x1e172934UL },
+ { &fnv_test_str[29], (Fnv32_t) 0x9275dcfcUL },
+ { &fnv_test_str[30], (Fnv32_t) 0x8b8ae0c3UL },
+ { &fnv_test_str[31], (Fnv32_t) 0x6e9fd298UL },
+ { &fnv_test_str[32], (Fnv32_t) 0xbd98853bUL },
+ { &fnv_test_str[33], (Fnv32_t) 0xb219bbc1UL },
+ { &fnv_test_str[34], (Fnv32_t) 0x1f8290bbUL },
+ { &fnv_test_str[35], (Fnv32_t) 0x5589d604UL },
+ { &fnv_test_str[36], (Fnv32_t) 0xabfbe83eUL },
+ { &fnv_test_str[37], (Fnv32_t) 0xfb8e99ffUL },
+ { &fnv_test_str[38], (Fnv32_t) 0x007c6c4cUL },
+ { &fnv_test_str[39], (Fnv32_t) 0x0fde7baeUL },
+ { &fnv_test_str[40], (Fnv32_t) 0x8af517a3UL },
+ { &fnv_test_str[41], (Fnv32_t) 0x8bd47624UL },
+ { &fnv_test_str[42], (Fnv32_t) 0x6976367eUL },
+ { &fnv_test_str[43], (Fnv32_t) 0x1e17295bUL },
+ { &fnv_test_str[44], (Fnv32_t) 0x9275dcdcUL },
+ { &fnv_test_str[45], (Fnv32_t) 0x8b8ae0b4UL },
+ { &fnv_test_str[46], (Fnv32_t) 0x6e9fd2f9UL },
+ { &fnv_test_str[47], (Fnv32_t) 0xbd988548UL },
+ { &fnv_test_str[48], (Fnv32_t) 0xb219bbe1UL },
+ { &fnv_test_str[49], (Fnv32_t) 0x1f8290d3UL },
+ { &fnv_test_str[50], (Fnv32_t) 0x5589d661UL },
+ { &fnv_test_str[51], (Fnv32_t) 0xabfbe84cUL },
+ { &fnv_test_str[52], (Fnv32_t) 0xfb8e999aUL },
+ { &fnv_test_str[53], (Fnv32_t) 0x007c6c6dUL },
+ { &fnv_test_str[54], (Fnv32_t) 0x0fde7ba4UL },
+ { &fnv_test_str[55], (Fnv32_t) 0xa93cb2eaUL },
+ { &fnv_test_str[56], (Fnv32_t) 0x63009bacUL },
+ { &fnv_test_str[57], (Fnv32_t) 0x85f50fb6UL },
+ { &fnv_test_str[58], (Fnv32_t) 0x96c7bbe6UL },
+ { &fnv_test_str[59], (Fnv32_t) 0x426ccb61UL },
+ { &fnv_test_str[60], (Fnv32_t) 0xf2442993UL },
+ { &fnv_test_str[61], (Fnv32_t) 0xf44d7208UL },
+ { &fnv_test_str[62], (Fnv32_t) 0x9dea82f6UL },
+ { &fnv_test_str[63], (Fnv32_t) 0x8e2c2926UL },
+ { &fnv_test_str[64], (Fnv32_t) 0xf584c6f2UL },
+ { &fnv_test_str[65], (Fnv32_t) 0x72052e81UL },
+ { &fnv_test_str[66], (Fnv32_t) 0xff28357bUL },
+ { &fnv_test_str[67], (Fnv32_t) 0x274c30c4UL },
+ { &fnv_test_str[68], (Fnv32_t) 0xa0f0c4f5UL },
+ { &fnv_test_str[69], (Fnv32_t) 0x50060da5UL },
+ { &fnv_test_str[70], (Fnv32_t) 0x85f50fc4UL },
+ { &fnv_test_str[71], (Fnv32_t) 0x96c7bb82UL },
+ { &fnv_test_str[72], (Fnv32_t) 0x426ccb12UL },
+ { &fnv_test_str[73], (Fnv32_t) 0xf24429b3UL },
+ { &fnv_test_str[74], (Fnv32_t) 0xf44d7269UL },
+ { &fnv_test_str[75], (Fnv32_t) 0x9dea8298UL },
+ { &fnv_test_str[76], (Fnv32_t) 0x8e2c2942UL },
+ { &fnv_test_str[77], (Fnv32_t) 0xf584c6d2UL },
+ { &fnv_test_str[78], (Fnv32_t) 0x72052ef6UL },
+ { &fnv_test_str[79], (Fnv32_t) 0xff283513UL },
+ { &fnv_test_str[80], (Fnv32_t) 0x274c30a1UL },
+ { &fnv_test_str[81], (Fnv32_t) 0xa0f0c48cUL },
+ { &fnv_test_str[82], (Fnv32_t) 0x50060dafUL },
+ { &fnv_test_str[83], (Fnv32_t) 0x9e877abfUL },
+ { &fnv_test_str[84], (Fnv32_t) 0x6800a3d1UL },
+ { &fnv_test_str[85], (Fnv32_t) 0x8a01e203UL },
+ { &fnv_test_str[86], (Fnv32_t) 0xec6d6be8UL },
+ { &fnv_test_str[87], (Fnv32_t) 0x1840de38UL },
+ { &fnv_test_str[88], (Fnv32_t) 0xa7cc97b4UL },
+ { &fnv_test_str[89], (Fnv32_t) 0x3ee6b3b4UL },
+ { &fnv_test_str[90], (Fnv32_t) 0xa7cc97b7UL },
+ { &fnv_test_str[91], (Fnv32_t) 0x7dcd6669UL },
+ { &fnv_test_str[92], (Fnv32_t) 0xa7cc97b6UL },
+ { &fnv_test_str[93], (Fnv32_t) 0xbcb4191eUL },
+ { &fnv_test_str[94], (Fnv32_t) 0xa7cc97b1UL },
+ { &fnv_test_str[95], (Fnv32_t) 0xfb9acdd3UL },
+ { &fnv_test_str[96], (Fnv32_t) 0x89380433UL },
+ { &fnv_test_str[97], (Fnv32_t) 0x8acd2855UL },
+ { &fnv_test_str[98], (Fnv32_t) 0x8938043dUL },
+ { &fnv_test_str[99], (Fnv32_t) 0xcaeed493UL },
+ { &fnv_test_str[100], (Fnv32_t) 0x89380423UL },
+ { &fnv_test_str[101], (Fnv32_t) 0x59382a25UL },
+ { &fnv_test_str[102], (Fnv32_t) 0x567f75d7UL },
+ { &fnv_test_str[103], (Fnv32_t) 0x01a68175UL },
+ { &fnv_test_str[104], (Fnv32_t) 0x567f75d4UL },
+ { &fnv_test_str[105], (Fnv32_t) 0xfea67cbcUL },
+ { &fnv_test_str[106], (Fnv32_t) 0x567f75d5UL },
+ { &fnv_test_str[107], (Fnv32_t) 0xffa67e4fUL },
+ { &fnv_test_str[108], (Fnv32_t) 0xd131b668UL },
+ { &fnv_test_str[109], (Fnv32_t) 0xb94225b8UL },
+ { &fnv_test_str[110], (Fnv32_t) 0xd231b7d7UL },
+ { &fnv_test_str[111], (Fnv32_t) 0xbb446775UL },
+ { &fnv_test_str[112], (Fnv32_t) 0xdf31cc6eUL },
+ { &fnv_test_str[113], (Fnv32_t) 0xc964d12aUL },
+ { &fnv_test_str[114], (Fnv32_t) 0x23af8f9fUL },
+ { &fnv_test_str[115], (Fnv32_t) 0xcc5f174dUL },
+ { &fnv_test_str[116], (Fnv32_t) 0x96b29b8cUL },
+ { &fnv_test_str[117], (Fnv32_t) 0xc72add64UL },
+ { &fnv_test_str[118], (Fnv32_t) 0x528fb7efUL },
+ { &fnv_test_str[119], (Fnv32_t) 0xe73e8d3dUL },
+ { &fnv_test_str[120], (Fnv32_t) 0x876386feUL },
+ { &fnv_test_str[121], (Fnv32_t) 0x811c9dc5UL },
+ { &fnv_test_str[122], (Fnv32_t) 0x050c5d1fUL },
+ { &fnv_test_str[123], (Fnv32_t) 0x14bf7238UL },
+ { &fnv_test_str[124], (Fnv32_t) 0xe160ce28UL },
+ { &fnv_test_str[125], (Fnv32_t) 0x89dc5a75UL },
+ { &fnv_test_str[126], (Fnv32_t) 0xd89b69a0UL },
+ { &fnv_test_str[127], (Fnv32_t) 0x94471a88UL },
+ { &fnv_test_str[128], (Fnv32_t) 0xe78db65fUL },
+ { &fnv_test_str[129], (Fnv32_t) 0x0c3009a2UL },
+ { &fnv_test_str[130], (Fnv32_t) 0x122dff03UL },
+ { &fnv_test_str[131], (Fnv32_t) 0xb4cd8875UL },
+ { &fnv_test_str[132], (Fnv32_t) 0xf4dba725UL },
+ { &fnv_test_str[133], (Fnv32_t) 0x41a16560UL },
+ { &fnv_test_str[134], (Fnv32_t) 0x9c0f941fUL },
+ { &fnv_test_str[135], (Fnv32_t) 0x451a5348UL },
+ { &fnv_test_str[136], (Fnv32_t) 0x3f1d1d89UL },
+ { &fnv_test_str[137], (Fnv32_t) 0x1b91b57aUL },
+ { &fnv_test_str[138], (Fnv32_t) 0x3e99b577UL },
+ { &fnv_test_str[139], (Fnv32_t) 0x4c9de07aUL },
+ { &fnv_test_str[140], (Fnv32_t) 0x1ddf7572UL },
+ { &fnv_test_str[141], (Fnv32_t) 0x64e81976UL },
+ { &fnv_test_str[142], (Fnv32_t) 0x1106a888UL },
+ { &fnv_test_str[143], (Fnv32_t) 0xa498d8e5UL },
+ { &fnv_test_str[144], (Fnv32_t) 0x3c03d2e3UL },
+ { &fnv_test_str[145], (Fnv32_t) 0x26568b28UL },
+ { &fnv_test_str[146], (Fnv32_t) 0x70d7fb42UL },
+ { &fnv_test_str[147], (Fnv32_t) 0xd3ae1d22UL },
+ { &fnv_test_str[148], (Fnv32_t) 0xac8ea5f4UL },
+ { &fnv_test_str[149], (Fnv32_t) 0x4d0abd60UL },
+ { &fnv_test_str[150], (Fnv32_t) 0x48f5e086UL },
+ { &fnv_test_str[151], (Fnv32_t) 0xa8f6241bUL },
+ { &fnv_test_str[152], (Fnv32_t) 0x572f864fUL },
+ { &fnv_test_str[153], (Fnv32_t) 0xa5340803UL },
+ { &fnv_test_str[154], (Fnv32_t) 0x22881aa8UL },
+ { &fnv_test_str[155], (Fnv32_t) 0xc2e2f5a2UL },
+ { &fnv_test_str[156], (Fnv32_t) 0xebf5aec7UL },
+ { &fnv_test_str[157], (Fnv32_t) 0x3cdbfb85UL },
+ { &fnv_test_str[158], (Fnv32_t) 0xbb859704UL },
+ { &fnv_test_str[159], (Fnv32_t) 0xc956fe11UL },
+ { &fnv_test_str[160], (Fnv32_t) 0x8f11a7c9UL },
+ { &fnv_test_str[161], (Fnv32_t) 0x36c48ecfUL },
+ { &fnv_test_str[162], (Fnv32_t) 0x24bfa27eUL },
+ { &fnv_test_str[163], (Fnv32_t) 0xf2596ad1UL },
+ { &fnv_test_str[164], (Fnv32_t) 0xf14a9b45UL },
+ { &fnv_test_str[165], (Fnv32_t) 0x7d45835aUL },
+ { &fnv_test_str[166], (Fnv32_t) 0x6e49334dUL },
+ { &fnv_test_str[167], (Fnv32_t) 0x71767337UL },
+ { &fnv_test_str[168], (Fnv32_t) 0x858a1a8aUL },
+ { &fnv_test_str[169], (Fnv32_t) 0x16e75ac2UL },
+ { &fnv_test_str[170], (Fnv32_t) 0x409f99dfUL },
+ { &fnv_test_str[171], (Fnv32_t) 0x6d6652ddUL },
+ { &fnv_test_str[172], (Fnv32_t) 0x2761a9ffUL },
+ { &fnv_test_str[173], (Fnv32_t) 0x41f0d616UL },
+ { &fnv_test_str[174], (Fnv32_t) 0x0e2d0d0fUL },
+ { &fnv_test_str[175], (Fnv32_t) 0x06adc8fdUL },
+ { &fnv_test_str[176], (Fnv32_t) 0x60e0d4b9UL },
+ { &fnv_test_str[177], (Fnv32_t) 0x5ddc79d3UL },
+ { &fnv_test_str[178], (Fnv32_t) 0x1e6d0b46UL },
+ { &fnv_test_str[179], (Fnv32_t) 0x1d1514d8UL },
+ { &fnv_test_str[180], (Fnv32_t) 0xb1903a4eUL },
+ { &fnv_test_str[181], (Fnv32_t) 0x8200c318UL },
+ { &fnv_test_str[182], (Fnv32_t) 0x15e22888UL },
+ { &fnv_test_str[183], (Fnv32_t) 0x57591760UL },
+ { &fnv_test_str[184], (Fnv32_t) 0x02462efcUL },
+ { &fnv_test_str[185], (Fnv32_t) 0x7651ec44UL },
+ { &fnv_test_str[186], (Fnv32_t) 0x7c24e9d4UL },
+ { &fnv_test_str[187], (Fnv32_t) 0x1952a034UL },
+ { &fnv_test_str[188], (Fnv32_t) 0xd4c46864UL },
+ { &fnv_test_str[189], (Fnv32_t) 0xcb57cde0UL },
+ { &fnv_test_str[190], (Fnv32_t) 0x71136a70UL },
+ { &fnv_test_str[191], (Fnv32_t) 0x0618fb40UL },
+ { &fnv_test_str[192], (Fnv32_t) 0x69a24fc0UL },
+ { &fnv_test_str[193], (Fnv32_t) 0x6a9be510UL },
+ { &fnv_test_str[194], (Fnv32_t) 0xe0477040UL },
+ { &fnv_test_str[195], (Fnv32_t) 0x85aa94b0UL },
+ { &fnv_test_str[196], (Fnv32_t) 0xc6d76240UL },
+ { &fnv_test_str[197], (Fnv32_t) 0xa9f09e40UL },
+ { &fnv_test_str[198], (Fnv32_t) 0xa0291540UL },
+ { &fnv_test_str[199], (Fnv32_t) 0x00000000UL },
+ { &fnv_test_str[200], (Fnv32_t) 0x2e672aa4UL },
+ { &fnv_test_str[201], (Fnv32_t) 0x84b1aa48UL },
+ { &fnv_test_str[202], (Fnv32_t) 0xfc24ba24UL },
+ { NULL, 0 }
+};
+
+/* FNV-1 32 bit test vectors */
+struct fnv1_32_test_vector fnv1_32_vector[] = {
+ { &fnv_test_str[0], (Fnv32_t) 0x811c9dc5UL },
+ { &fnv_test_str[1], (Fnv32_t) 0x050c5d7eUL },
+ { &fnv_test_str[2], (Fnv32_t) 0x050c5d7dUL },
+ { &fnv_test_str[3], (Fnv32_t) 0x050c5d7cUL },
+ { &fnv_test_str[4], (Fnv32_t) 0x050c5d7bUL },
+ { &fnv_test_str[5], (Fnv32_t) 0x050c5d7aUL },
+ { &fnv_test_str[6], (Fnv32_t) 0x050c5d79UL },
+ { &fnv_test_str[7], (Fnv32_t) 0x6b772514UL },
+ { &fnv_test_str[8], (Fnv32_t) 0x408f5e13UL },
+ { &fnv_test_str[9], (Fnv32_t) 0xb4b1178bUL },
+ { &fnv_test_str[10], (Fnv32_t) 0xfdc80fb0UL },
+ { &fnv_test_str[11], (Fnv32_t) 0x31f0b262UL },
+ { &fnv_test_str[12], (Fnv32_t) 0x050c5d1fUL },
+ { &fnv_test_str[13], (Fnv32_t) 0x70772d5aUL },
+ { &fnv_test_str[14], (Fnv32_t) 0x6f772bc7UL },
+ { &fnv_test_str[15], (Fnv32_t) 0x6e772a34UL },
+ { &fnv_test_str[16], (Fnv32_t) 0x6d7728a1UL },
+ { &fnv_test_str[17], (Fnv32_t) 0x6c77270eUL },
+ { &fnv_test_str[18], (Fnv32_t) 0x6b77257bUL },
+ { &fnv_test_str[19], (Fnv32_t) 0x408f5e7cUL },
+ { &fnv_test_str[20], (Fnv32_t) 0xb4b117e9UL },
+ { &fnv_test_str[21], (Fnv32_t) 0xfdc80fd1UL },
+ { &fnv_test_str[22], (Fnv32_t) 0x31f0b210UL },
+ { &fnv_test_str[23], (Fnv32_t) 0xffe8d046UL },
+ { &fnv_test_str[24], (Fnv32_t) 0x6e772a5cUL },
+ { &fnv_test_str[25], (Fnv32_t) 0x4197aebbUL },
+ { &fnv_test_str[26], (Fnv32_t) 0xfcc8100fUL },
+ { &fnv_test_str[27], (Fnv32_t) 0xfdf147faUL },
+ { &fnv_test_str[28], (Fnv32_t) 0xbcd44ee1UL },
+ { &fnv_test_str[29], (Fnv32_t) 0x23382c13UL },
+ { &fnv_test_str[30], (Fnv32_t) 0x846d619eUL },
+ { &fnv_test_str[31], (Fnv32_t) 0x1630abdbUL },
+ { &fnv_test_str[32], (Fnv32_t) 0xc99e89b2UL },
+ { &fnv_test_str[33], (Fnv32_t) 0x1692c316UL },
+ { &fnv_test_str[34], (Fnv32_t) 0x9f091bcaUL },
+ { &fnv_test_str[35], (Fnv32_t) 0x2556be9bUL },
+ { &fnv_test_str[36], (Fnv32_t) 0x628e0e73UL },
+ { &fnv_test_str[37], (Fnv32_t) 0x98a0bf6cUL },
+ { &fnv_test_str[38], (Fnv32_t) 0xb10d5725UL },
+ { &fnv_test_str[39], (Fnv32_t) 0xdd002f35UL },
+ { &fnv_test_str[40], (Fnv32_t) 0x4197aed4UL },
+ { &fnv_test_str[41], (Fnv32_t) 0xfcc81061UL },
+ { &fnv_test_str[42], (Fnv32_t) 0xfdf1479dUL },
+ { &fnv_test_str[43], (Fnv32_t) 0xbcd44e8eUL },
+ { &fnv_test_str[44], (Fnv32_t) 0x23382c33UL },
+ { &fnv_test_str[45], (Fnv32_t) 0x846d61e9UL },
+ { &fnv_test_str[46], (Fnv32_t) 0x1630abbaUL },
+ { &fnv_test_str[47], (Fnv32_t) 0xc99e89c1UL },
+ { &fnv_test_str[48], (Fnv32_t) 0x1692c336UL },
+ { &fnv_test_str[49], (Fnv32_t) 0x9f091ba2UL },
+ { &fnv_test_str[50], (Fnv32_t) 0x2556befeUL },
+ { &fnv_test_str[51], (Fnv32_t) 0x628e0e01UL },
+ { &fnv_test_str[52], (Fnv32_t) 0x98a0bf09UL },
+ { &fnv_test_str[53], (Fnv32_t) 0xb10d5704UL },
+ { &fnv_test_str[54], (Fnv32_t) 0xdd002f3fUL },
+ { &fnv_test_str[55], (Fnv32_t) 0x1c4a506fUL },
+ { &fnv_test_str[56], (Fnv32_t) 0x6e772a41UL },
+ { &fnv_test_str[57], (Fnv32_t) 0x26978421UL },
+ { &fnv_test_str[58], (Fnv32_t) 0xe184ff97UL },
+ { &fnv_test_str[59], (Fnv32_t) 0x9b5e5ac6UL },
+ { &fnv_test_str[60], (Fnv32_t) 0x5b88e592UL },
+ { &fnv_test_str[61], (Fnv32_t) 0xaa8164b7UL },
+ { &fnv_test_str[62], (Fnv32_t) 0x20b18c7bUL },
+ { &fnv_test_str[63], (Fnv32_t) 0xf28025c5UL },
+ { &fnv_test_str[64], (Fnv32_t) 0x84bb753fUL },
+ { &fnv_test_str[65], (Fnv32_t) 0x3219925aUL },
+ { &fnv_test_str[66], (Fnv32_t) 0x384163c6UL },
+ { &fnv_test_str[67], (Fnv32_t) 0x54f010d7UL },
+ { &fnv_test_str[68], (Fnv32_t) 0x8cea820cUL },
+ { &fnv_test_str[69], (Fnv32_t) 0xe12ab8eeUL },
+ { &fnv_test_str[70], (Fnv32_t) 0x26978453UL },
+ { &fnv_test_str[71], (Fnv32_t) 0xe184fff3UL },
+ { &fnv_test_str[72], (Fnv32_t) 0x9b5e5ab5UL },
+ { &fnv_test_str[73], (Fnv32_t) 0x5b88e5b2UL },
+ { &fnv_test_str[74], (Fnv32_t) 0xaa8164d6UL },
+ { &fnv_test_str[75], (Fnv32_t) 0x20b18c15UL },
+ { &fnv_test_str[76], (Fnv32_t) 0xf28025a1UL },
+ { &fnv_test_str[77], (Fnv32_t) 0x84bb751fUL },
+ { &fnv_test_str[78], (Fnv32_t) 0x3219922dUL },
+ { &fnv_test_str[79], (Fnv32_t) 0x384163aeUL },
+ { &fnv_test_str[80], (Fnv32_t) 0x54f010b2UL },
+ { &fnv_test_str[81], (Fnv32_t) 0x8cea8275UL },
+ { &fnv_test_str[82], (Fnv32_t) 0xe12ab8e4UL },
+ { &fnv_test_str[83], (Fnv32_t) 0x64411eaaUL },
+ { &fnv_test_str[84], (Fnv32_t) 0x6977223cUL },
+ { &fnv_test_str[85], (Fnv32_t) 0x428ae474UL },
+ { &fnv_test_str[86], (Fnv32_t) 0xb6fa7167UL },
+ { &fnv_test_str[87], (Fnv32_t) 0x73408525UL },
+ { &fnv_test_str[88], (Fnv32_t) 0xb78320a1UL },
+ { &fnv_test_str[89], (Fnv32_t) 0x0caf4135UL },
+ { &fnv_test_str[90], (Fnv32_t) 0xb78320a2UL },
+ { &fnv_test_str[91], (Fnv32_t) 0xcdc88e80UL },
+ { &fnv_test_str[92], (Fnv32_t) 0xb78320a3UL },
+ { &fnv_test_str[93], (Fnv32_t) 0x8ee1dbcbUL },
+ { &fnv_test_str[94], (Fnv32_t) 0xb78320a4UL },
+ { &fnv_test_str[95], (Fnv32_t) 0x4ffb2716UL },
+ { &fnv_test_str[96], (Fnv32_t) 0x860632aaUL },
+ { &fnv_test_str[97], (Fnv32_t) 0xcc2c5c64UL },
+ { &fnv_test_str[98], (Fnv32_t) 0x860632a4UL },
+ { &fnv_test_str[99], (Fnv32_t) 0x2a7ec4a6UL },
+ { &fnv_test_str[100], (Fnv32_t) 0x860632baUL },
+ { &fnv_test_str[101], (Fnv32_t) 0xfefe8e14UL },
+ { &fnv_test_str[102], (Fnv32_t) 0x0a3cffd8UL },
+ { &fnv_test_str[103], (Fnv32_t) 0xf606c108UL },
+ { &fnv_test_str[104], (Fnv32_t) 0x0a3cffdbUL },
+ { &fnv_test_str[105], (Fnv32_t) 0xf906c5c1UL },
+ { &fnv_test_str[106], (Fnv32_t) 0x0a3cffdaUL },
+ { &fnv_test_str[107], (Fnv32_t) 0xf806c42eUL },
+ { &fnv_test_str[108], (Fnv32_t) 0xc07167d7UL },
+ { &fnv_test_str[109], (Fnv32_t) 0xc9867775UL },
+ { &fnv_test_str[110], (Fnv32_t) 0xbf716668UL },
+ { &fnv_test_str[111], (Fnv32_t) 0xc78435b8UL },
+ { &fnv_test_str[112], (Fnv32_t) 0xc6717155UL },
+ { &fnv_test_str[113], (Fnv32_t) 0xb99568cfUL },
+ { &fnv_test_str[114], (Fnv32_t) 0x7662e0d6UL },
+ { &fnv_test_str[115], (Fnv32_t) 0x33a7f0e2UL },
+ { &fnv_test_str[116], (Fnv32_t) 0xc2732f95UL },
+ { &fnv_test_str[117], (Fnv32_t) 0xb053e78fUL },
+ { &fnv_test_str[118], (Fnv32_t) 0x3a19c02aUL },
+ { &fnv_test_str[119], (Fnv32_t) 0xa089821eUL },
+ { &fnv_test_str[120], (Fnv32_t) 0x31ae8f83UL },
+ { &fnv_test_str[121], (Fnv32_t) 0x995fa9c4UL },
+ { &fnv_test_str[122], (Fnv32_t) 0x35983f8cUL },
+ { &fnv_test_str[123], (Fnv32_t) 0x5036a251UL },
+ { &fnv_test_str[124], (Fnv32_t) 0x97018583UL },
+ { &fnv_test_str[125], (Fnv32_t) 0xb4448d60UL },
+ { &fnv_test_str[126], (Fnv32_t) 0x025dfe59UL },
+ { &fnv_test_str[127], (Fnv32_t) 0xc5eab3afUL },
+ { &fnv_test_str[128], (Fnv32_t) 0x7d21ba1eUL },
+ { &fnv_test_str[129], (Fnv32_t) 0x7704cddbUL },
+ { &fnv_test_str[130], (Fnv32_t) 0xd0071bfeUL },
+ { &fnv_test_str[131], (Fnv32_t) 0x0ff3774cUL },
+ { &fnv_test_str[132], (Fnv32_t) 0xb0fea0eaUL },
+ { &fnv_test_str[133], (Fnv32_t) 0x58177303UL },
+ { &fnv_test_str[134], (Fnv32_t) 0x4f599cdaUL },
+ { &fnv_test_str[135], (Fnv32_t) 0x3e590a47UL },
+ { &fnv_test_str[136], (Fnv32_t) 0x965595f8UL },
+ { &fnv_test_str[137], (Fnv32_t) 0xc37f178dUL },
+ { &fnv_test_str[138], (Fnv32_t) 0x9711dd26UL },
+ { &fnv_test_str[139], (Fnv32_t) 0x23c99b7fUL },
+ { &fnv_test_str[140], (Fnv32_t) 0x6e568b17UL },
+ { &fnv_test_str[141], (Fnv32_t) 0x43f0245bUL },
+ { &fnv_test_str[142], (Fnv32_t) 0xbcb7a001UL },
+ { &fnv_test_str[143], (Fnv32_t) 0x12e6dffeUL },
+ { &fnv_test_str[144], (Fnv32_t) 0x0792f2d6UL },
+ { &fnv_test_str[145], (Fnv32_t) 0xb966936bUL },
+ { &fnv_test_str[146], (Fnv32_t) 0x46439ac5UL },
+ { &fnv_test_str[147], (Fnv32_t) 0x728d49afUL },
+ { &fnv_test_str[148], (Fnv32_t) 0xd33745c9UL },
+ { &fnv_test_str[149], (Fnv32_t) 0xbc382a57UL },
+ { &fnv_test_str[150], (Fnv32_t) 0x4bda1d31UL },
+ { &fnv_test_str[151], (Fnv32_t) 0xce35ccaeUL },
+ { &fnv_test_str[152], (Fnv32_t) 0x3b6eed94UL },
+ { &fnv_test_str[153], (Fnv32_t) 0x445c9c58UL },
+ { &fnv_test_str[154], (Fnv32_t) 0x3db8bf9dUL },
+ { &fnv_test_str[155], (Fnv32_t) 0x2dee116dUL },
+ { &fnv_test_str[156], (Fnv32_t) 0xc18738daUL },
+ { &fnv_test_str[157], (Fnv32_t) 0x5b156176UL },
+ { &fnv_test_str[158], (Fnv32_t) 0x2aa7d593UL },
+ { &fnv_test_str[159], (Fnv32_t) 0xb2409658UL },
+ { &fnv_test_str[160], (Fnv32_t) 0xe1489528UL },
+ { &fnv_test_str[161], (Fnv32_t) 0xfe1ee07eUL },
+ { &fnv_test_str[162], (Fnv32_t) 0xe8842315UL },
+ { &fnv_test_str[163], (Fnv32_t) 0x3a6a63a2UL },
+ { &fnv_test_str[164], (Fnv32_t) 0x06d2c18cUL },
+ { &fnv_test_str[165], (Fnv32_t) 0xf8ef7225UL },
+ { &fnv_test_str[166], (Fnv32_t) 0x843d3300UL },
+ { &fnv_test_str[167], (Fnv32_t) 0xbb24f7aeUL },
+ { &fnv_test_str[168], (Fnv32_t) 0x878c0ec9UL },
+ { &fnv_test_str[169], (Fnv32_t) 0xb557810fUL },
+ { &fnv_test_str[170], (Fnv32_t) 0x57423246UL },
+ { &fnv_test_str[171], (Fnv32_t) 0x87f7505eUL },
+ { &fnv_test_str[172], (Fnv32_t) 0xbb809f20UL },
+ { &fnv_test_str[173], (Fnv32_t) 0x8932abb5UL },
+ { &fnv_test_str[174], (Fnv32_t) 0x0a9b3aa0UL },
+ { &fnv_test_str[175], (Fnv32_t) 0xb8682a24UL },
+ { &fnv_test_str[176], (Fnv32_t) 0xa7ac1c56UL },
+ { &fnv_test_str[177], (Fnv32_t) 0x11409252UL },
+ { &fnv_test_str[178], (Fnv32_t) 0xa987f517UL },
+ { &fnv_test_str[179], (Fnv32_t) 0xf309e7edUL },
+ { &fnv_test_str[180], (Fnv32_t) 0xc9e8f417UL },
+ { &fnv_test_str[181], (Fnv32_t) 0x7f447bddUL },
+ { &fnv_test_str[182], (Fnv32_t) 0xb929adc5UL },
+ { &fnv_test_str[183], (Fnv32_t) 0x57022879UL },
+ { &fnv_test_str[184], (Fnv32_t) 0xdcfd2c49UL },
+ { &fnv_test_str[185], (Fnv32_t) 0x6edafff5UL },
+ { &fnv_test_str[186], (Fnv32_t) 0xf04fb1f1UL },
+ { &fnv_test_str[187], (Fnv32_t) 0xfb7de8b9UL },
+ { &fnv_test_str[188], (Fnv32_t) 0xc5f1d7e9UL },
+ { &fnv_test_str[189], (Fnv32_t) 0x32c1f439UL },
+ { &fnv_test_str[190], (Fnv32_t) 0x7fd3eb7dUL },
+ { &fnv_test_str[191], (Fnv32_t) 0x81597da5UL },
+ { &fnv_test_str[192], (Fnv32_t) 0x05eb7a25UL },
+ { &fnv_test_str[193], (Fnv32_t) 0x9c0fa1b5UL },
+ { &fnv_test_str[194], (Fnv32_t) 0x53ccb1c5UL },
+ { &fnv_test_str[195], (Fnv32_t) 0xfabece15UL },
+ { &fnv_test_str[196], (Fnv32_t) 0x4ad745a5UL },
+ { &fnv_test_str[197], (Fnv32_t) 0xe5bdc495UL },
+ { &fnv_test_str[198], (Fnv32_t) 0x23b3c0a5UL },
+ { &fnv_test_str[199], (Fnv32_t) 0xfa823dd5UL },
+ { &fnv_test_str[200], (Fnv32_t) 0x0c6c58b9UL },
+ { &fnv_test_str[201], (Fnv32_t) 0xe2dbccd5UL },
+ { &fnv_test_str[202], (Fnv32_t) 0xdb7f50f9UL },
+ { NULL, 0 }
+};
+
+/* FNV-1a 32 bit test vectors */
+struct fnv1a_32_test_vector fnv1a_32_vector[] = {
+ { &fnv_test_str[0], (Fnv32_t) 0x811c9dc5UL },
+ { &fnv_test_str[1], (Fnv32_t) 0xe40c292cUL },
+ { &fnv_test_str[2], (Fnv32_t) 0xe70c2de5UL },
+ { &fnv_test_str[3], (Fnv32_t) 0xe60c2c52UL },
+ { &fnv_test_str[4], (Fnv32_t) 0xe10c2473UL },
+ { &fnv_test_str[5], (Fnv32_t) 0xe00c22e0UL },
+ { &fnv_test_str[6], (Fnv32_t) 0xe30c2799UL },
+ { &fnv_test_str[7], (Fnv32_t) 0x6222e842UL },
+ { &fnv_test_str[8], (Fnv32_t) 0xa9f37ed7UL },
+ { &fnv_test_str[9], (Fnv32_t) 0x3f5076efUL },
+ { &fnv_test_str[10], (Fnv32_t) 0x39aaa18aUL },
+ { &fnv_test_str[11], (Fnv32_t) 0xbf9cf968UL },
+ { &fnv_test_str[12], (Fnv32_t) 0x050c5d1fUL },
+ { &fnv_test_str[13], (Fnv32_t) 0x2b24d044UL },
+ { &fnv_test_str[14], (Fnv32_t) 0x9d2c3f7fUL },
+ { &fnv_test_str[15], (Fnv32_t) 0x7729c516UL },
+ { &fnv_test_str[16], (Fnv32_t) 0xb91d6109UL },
+ { &fnv_test_str[17], (Fnv32_t) 0x931ae6a0UL },
+ { &fnv_test_str[18], (Fnv32_t) 0x052255dbUL },
+ { &fnv_test_str[19], (Fnv32_t) 0xbef39fe6UL },
+ { &fnv_test_str[20], (Fnv32_t) 0x6150ac75UL },
+ { &fnv_test_str[21], (Fnv32_t) 0x9aab3a3dUL },
+ { &fnv_test_str[22], (Fnv32_t) 0x519c4c3eUL },
+ { &fnv_test_str[23], (Fnv32_t) 0x0c1c9eb8UL },
+ { &fnv_test_str[24], (Fnv32_t) 0x5f299f4eUL },
+ { &fnv_test_str[25], (Fnv32_t) 0xef8580f3UL },
+ { &fnv_test_str[26], (Fnv32_t) 0xac297727UL },
+ { &fnv_test_str[27], (Fnv32_t) 0x4546b9c0UL },
+ { &fnv_test_str[28], (Fnv32_t) 0xbd564e7dUL },
+ { &fnv_test_str[29], (Fnv32_t) 0x6bdd5c67UL },
+ { &fnv_test_str[30], (Fnv32_t) 0xdd77ed30UL },
+ { &fnv_test_str[31], (Fnv32_t) 0xf4ca9683UL },
+ { &fnv_test_str[32], (Fnv32_t) 0x4aeb9bd0UL },
+ { &fnv_test_str[33], (Fnv32_t) 0xe0e67ad0UL },
+ { &fnv_test_str[34], (Fnv32_t) 0xc2d32fa8UL },
+ { &fnv_test_str[35], (Fnv32_t) 0x7f743fb7UL },
+ { &fnv_test_str[36], (Fnv32_t) 0x6900631fUL },
+ { &fnv_test_str[37], (Fnv32_t) 0xc59c990eUL },
+ { &fnv_test_str[38], (Fnv32_t) 0x448524fdUL },
+ { &fnv_test_str[39], (Fnv32_t) 0xd49930d5UL },
+ { &fnv_test_str[40], (Fnv32_t) 0x1c85c7caUL },
+ { &fnv_test_str[41], (Fnv32_t) 0x0229fe89UL },
+ { &fnv_test_str[42], (Fnv32_t) 0x2c469265UL },
+ { &fnv_test_str[43], (Fnv32_t) 0xce566940UL },
+ { &fnv_test_str[44], (Fnv32_t) 0x8bdd8ec7UL },
+ { &fnv_test_str[45], (Fnv32_t) 0x34787625UL },
+ { &fnv_test_str[46], (Fnv32_t) 0xd3ca6290UL },
+ { &fnv_test_str[47], (Fnv32_t) 0xddeaf039UL },
+ { &fnv_test_str[48], (Fnv32_t) 0xc0e64870UL },
+ { &fnv_test_str[49], (Fnv32_t) 0xdad35570UL },
+ { &fnv_test_str[50], (Fnv32_t) 0x5a740578UL },
+ { &fnv_test_str[51], (Fnv32_t) 0x5b004d15UL },
+ { &fnv_test_str[52], (Fnv32_t) 0x6a9c09cdUL },
+ { &fnv_test_str[53], (Fnv32_t) 0x2384f10aUL },
+ { &fnv_test_str[54], (Fnv32_t) 0xda993a47UL },
+ { &fnv_test_str[55], (Fnv32_t) 0x8227df4fUL },
+ { &fnv_test_str[56], (Fnv32_t) 0x4c298165UL },
+ { &fnv_test_str[57], (Fnv32_t) 0xfc563735UL },
+ { &fnv_test_str[58], (Fnv32_t) 0x8cb91483UL },
+ { &fnv_test_str[59], (Fnv32_t) 0x775bf5d0UL },
+ { &fnv_test_str[60], (Fnv32_t) 0xd5c428d0UL },
+ { &fnv_test_str[61], (Fnv32_t) 0x34cc0ea3UL },
+ { &fnv_test_str[62], (Fnv32_t) 0xea3b4cb7UL },
+ { &fnv_test_str[63], (Fnv32_t) 0x8e59f029UL },
+ { &fnv_test_str[64], (Fnv32_t) 0x2094de2bUL },
+ { &fnv_test_str[65], (Fnv32_t) 0xa65a0ad4UL },
+ { &fnv_test_str[66], (Fnv32_t) 0x9bbee5f4UL },
+ { &fnv_test_str[67], (Fnv32_t) 0xbe836343UL },
+ { &fnv_test_str[68], (Fnv32_t) 0x22d5344eUL },
+ { &fnv_test_str[69], (Fnv32_t) 0x19a1470cUL },
+ { &fnv_test_str[70], (Fnv32_t) 0x4a56b1ffUL },
+ { &fnv_test_str[71], (Fnv32_t) 0x70b8e86fUL },
+ { &fnv_test_str[72], (Fnv32_t) 0x0a5b4a39UL },
+ { &fnv_test_str[73], (Fnv32_t) 0xb5c3f670UL },
+ { &fnv_test_str[74], (Fnv32_t) 0x53cc3f70UL },
+ { &fnv_test_str[75], (Fnv32_t) 0xc03b0a99UL },
+ { &fnv_test_str[76], (Fnv32_t) 0x7259c415UL },
+ { &fnv_test_str[77], (Fnv32_t) 0x4095108bUL },
+ { &fnv_test_str[78], (Fnv32_t) 0x7559bdb1UL },
+ { &fnv_test_str[79], (Fnv32_t) 0xb3bf0bbcUL },
+ { &fnv_test_str[80], (Fnv32_t) 0x2183ff1cUL },
+ { &fnv_test_str[81], (Fnv32_t) 0x2bd54279UL },
+ { &fnv_test_str[82], (Fnv32_t) 0x23a156caUL },
+ { &fnv_test_str[83], (Fnv32_t) 0x64e2d7e4UL },
+ { &fnv_test_str[84], (Fnv32_t) 0x683af69aUL },
+ { &fnv_test_str[85], (Fnv32_t) 0xaed2346eUL },
+ { &fnv_test_str[86], (Fnv32_t) 0x4f9f2cabUL },
+ { &fnv_test_str[87], (Fnv32_t) 0x02935131UL },
+ { &fnv_test_str[88], (Fnv32_t) 0xc48fb86dUL },
+ { &fnv_test_str[89], (Fnv32_t) 0x2269f369UL },
+ { &fnv_test_str[90], (Fnv32_t) 0xc18fb3b4UL },
+ { &fnv_test_str[91], (Fnv32_t) 0x50ef1236UL },
+ { &fnv_test_str[92], (Fnv32_t) 0xc28fb547UL },
+ { &fnv_test_str[93], (Fnv32_t) 0x96c3bf47UL },
+ { &fnv_test_str[94], (Fnv32_t) 0xbf8fb08eUL },
+ { &fnv_test_str[95], (Fnv32_t) 0xf3e4d49cUL },
+ { &fnv_test_str[96], (Fnv32_t) 0x32179058UL },
+ { &fnv_test_str[97], (Fnv32_t) 0x280bfee6UL },
+ { &fnv_test_str[98], (Fnv32_t) 0x30178d32UL },
+ { &fnv_test_str[99], (Fnv32_t) 0x21addaf8UL },
+ { &fnv_test_str[100], (Fnv32_t) 0x4217a988UL },
+ { &fnv_test_str[101], (Fnv32_t) 0x772633d6UL },
+ { &fnv_test_str[102], (Fnv32_t) 0x08a3d11eUL },
+ { &fnv_test_str[103], (Fnv32_t) 0xb7e2323aUL },
+ { &fnv_test_str[104], (Fnv32_t) 0x07a3cf8bUL },
+ { &fnv_test_str[105], (Fnv32_t) 0x91dfb7d1UL },
+ { &fnv_test_str[106], (Fnv32_t) 0x06a3cdf8UL },
+ { &fnv_test_str[107], (Fnv32_t) 0x6bdd3d68UL },
+ { &fnv_test_str[108], (Fnv32_t) 0x1d5636a7UL },
+ { &fnv_test_str[109], (Fnv32_t) 0xd5b808e5UL },
+ { &fnv_test_str[110], (Fnv32_t) 0x1353e852UL },
+ { &fnv_test_str[111], (Fnv32_t) 0xbf16b916UL },
+ { &fnv_test_str[112], (Fnv32_t) 0xa55b89edUL },
+ { &fnv_test_str[113], (Fnv32_t) 0x3c1a2017UL },
+ { &fnv_test_str[114], (Fnv32_t) 0x0588b13cUL },
+ { &fnv_test_str[115], (Fnv32_t) 0xf22f0174UL },
+ { &fnv_test_str[116], (Fnv32_t) 0xe83641e1UL },
+ { &fnv_test_str[117], (Fnv32_t) 0x6e69b533UL },
+ { &fnv_test_str[118], (Fnv32_t) 0xf1760448UL },
+ { &fnv_test_str[119], (Fnv32_t) 0x64c8bd58UL },
+ { &fnv_test_str[120], (Fnv32_t) 0x97b4ea23UL },
+ { &fnv_test_str[121], (Fnv32_t) 0x9a4e92e6UL },
+ { &fnv_test_str[122], (Fnv32_t) 0xcfb14012UL },
+ { &fnv_test_str[123], (Fnv32_t) 0xf01b2511UL },
+ { &fnv_test_str[124], (Fnv32_t) 0x0bbb59c3UL },
+ { &fnv_test_str[125], (Fnv32_t) 0xce524afaUL },
+ { &fnv_test_str[126], (Fnv32_t) 0xdd16ef45UL },
+ { &fnv_test_str[127], (Fnv32_t) 0x60648bb3UL },
+ { &fnv_test_str[128], (Fnv32_t) 0x7fa4bcfcUL },
+ { &fnv_test_str[129], (Fnv32_t) 0x5053ae17UL },
+ { &fnv_test_str[130], (Fnv32_t) 0xc9302890UL },
+ { &fnv_test_str[131], (Fnv32_t) 0x956ded32UL },
+ { &fnv_test_str[132], (Fnv32_t) 0x9136db84UL },
+ { &fnv_test_str[133], (Fnv32_t) 0xdf9d3323UL },
+ { &fnv_test_str[134], (Fnv32_t) 0x32bb6cd0UL },
+ { &fnv_test_str[135], (Fnv32_t) 0xc8f8385bUL },
+ { &fnv_test_str[136], (Fnv32_t) 0xeb08bfbaUL },
+ { &fnv_test_str[137], (Fnv32_t) 0x62cc8e3dUL },
+ { &fnv_test_str[138], (Fnv32_t) 0xc3e20f5cUL },
+ { &fnv_test_str[139], (Fnv32_t) 0x39e97f17UL },
+ { &fnv_test_str[140], (Fnv32_t) 0x7837b203UL },
+ { &fnv_test_str[141], (Fnv32_t) 0x319e877bUL },
+ { &fnv_test_str[142], (Fnv32_t) 0xd3e63f89UL },
+ { &fnv_test_str[143], (Fnv32_t) 0x29b50b38UL },
+ { &fnv_test_str[144], (Fnv32_t) 0x5ed678b8UL },
+ { &fnv_test_str[145], (Fnv32_t) 0xb0d5b793UL },
+ { &fnv_test_str[146], (Fnv32_t) 0x52450be5UL },
+ { &fnv_test_str[147], (Fnv32_t) 0xfa72d767UL },
+ { &fnv_test_str[148], (Fnv32_t) 0x95066709UL },
+ { &fnv_test_str[149], (Fnv32_t) 0x7f52e123UL },
+ { &fnv_test_str[150], (Fnv32_t) 0x76966481UL },
+ { &fnv_test_str[151], (Fnv32_t) 0x063258b0UL },
+ { &fnv_test_str[152], (Fnv32_t) 0x2ded6e8aUL },
+ { &fnv_test_str[153], (Fnv32_t) 0xb07d7c52UL },
+ { &fnv_test_str[154], (Fnv32_t) 0xd0c71b71UL },
+ { &fnv_test_str[155], (Fnv32_t) 0xf684f1bdUL },
+ { &fnv_test_str[156], (Fnv32_t) 0x868ecfa8UL },
+ { &fnv_test_str[157], (Fnv32_t) 0xf794f684UL },
+ { &fnv_test_str[158], (Fnv32_t) 0xd19701c3UL },
+ { &fnv_test_str[159], (Fnv32_t) 0x346e171eUL },
+ { &fnv_test_str[160], (Fnv32_t) 0x91f8f676UL },
+ { &fnv_test_str[161], (Fnv32_t) 0x0bf58848UL },
+ { &fnv_test_str[162], (Fnv32_t) 0x6317b6d1UL },
+ { &fnv_test_str[163], (Fnv32_t) 0xafad4c54UL },
+ { &fnv_test_str[164], (Fnv32_t) 0x0f25681eUL },
+ { &fnv_test_str[165], (Fnv32_t) 0x91b18d49UL },
+ { &fnv_test_str[166], (Fnv32_t) 0x7d61c12eUL },
+ { &fnv_test_str[167], (Fnv32_t) 0x5147d25cUL },
+ { &fnv_test_str[168], (Fnv32_t) 0x9a8b6805UL },
+ { &fnv_test_str[169], (Fnv32_t) 0x4cd2a447UL },
+ { &fnv_test_str[170], (Fnv32_t) 0x1e549b14UL },
+ { &fnv_test_str[171], (Fnv32_t) 0x2fe1b574UL },
+ { &fnv_test_str[172], (Fnv32_t) 0xcf0cd31eUL },
+ { &fnv_test_str[173], (Fnv32_t) 0x6c471669UL },
+ { &fnv_test_str[174], (Fnv32_t) 0x0e5eef1eUL },
+ { &fnv_test_str[175], (Fnv32_t) 0x2bed3602UL },
+ { &fnv_test_str[176], (Fnv32_t) 0xb26249e0UL },
+ { &fnv_test_str[177], (Fnv32_t) 0x2c9b86a4UL },
+ { &fnv_test_str[178], (Fnv32_t) 0xe415e2bbUL },
+ { &fnv_test_str[179], (Fnv32_t) 0x18a98d1dUL },
+ { &fnv_test_str[180], (Fnv32_t) 0xb7df8b7bUL },
+ { &fnv_test_str[181], (Fnv32_t) 0x241e9075UL },
+ { &fnv_test_str[182], (Fnv32_t) 0x063f70ddUL },
+ { &fnv_test_str[183], (Fnv32_t) 0x0295aed9UL },
+ { &fnv_test_str[184], (Fnv32_t) 0x56a7f781UL },
+ { &fnv_test_str[185], (Fnv32_t) 0x253bc645UL },
+ { &fnv_test_str[186], (Fnv32_t) 0x46610921UL },
+ { &fnv_test_str[187], (Fnv32_t) 0x7c1577f9UL },
+ { &fnv_test_str[188], (Fnv32_t) 0x512b2851UL },
+ { &fnv_test_str[189], (Fnv32_t) 0x76823999UL },
+ { &fnv_test_str[190], (Fnv32_t) 0xc0586935UL },
+ { &fnv_test_str[191], (Fnv32_t) 0xf3415c85UL },
+ { &fnv_test_str[192], (Fnv32_t) 0x0ae4ff65UL },
+ { &fnv_test_str[193], (Fnv32_t) 0x58b79725UL },
+ { &fnv_test_str[194], (Fnv32_t) 0xdea43aa5UL },
+ { &fnv_test_str[195], (Fnv32_t) 0x2bb3be35UL },
+ { &fnv_test_str[196], (Fnv32_t) 0xea777a45UL },
+ { &fnv_test_str[197], (Fnv32_t) 0x8f21c305UL },
+ { &fnv_test_str[198], (Fnv32_t) 0x5c9d0865UL },
+ { &fnv_test_str[199], (Fnv32_t) 0xfa823dd5UL },
+ { &fnv_test_str[200], (Fnv32_t) 0x21a27271UL },
+ { &fnv_test_str[201], (Fnv32_t) 0x83c5c6d5UL },
+ { &fnv_test_str[202], (Fnv32_t) 0x813b0881UL },
+ { NULL, 0 }
+};
+
+/* FNV-0 64 bit test vectors */
+#if defined(HAVE_64BIT_LONG_LONG)
+struct fnv0_64_test_vector fnv0_64_vector[] = {
+ { &fnv_test_str[0], (Fnv64_t) 0x0000000000000000ULL },
+ { &fnv_test_str[1], (Fnv64_t) 0x0000000000000061ULL },
+ { &fnv_test_str[2], (Fnv64_t) 0x0000000000000062ULL },
+ { &fnv_test_str[3], (Fnv64_t) 0x0000000000000063ULL },
+ { &fnv_test_str[4], (Fnv64_t) 0x0000000000000064ULL },
+ { &fnv_test_str[5], (Fnv64_t) 0x0000000000000065ULL },
+ { &fnv_test_str[6], (Fnv64_t) 0x0000000000000066ULL },
+ { &fnv_test_str[7], (Fnv64_t) 0x000066000000ad3dULL },
+ { &fnv_test_str[8], (Fnv64_t) 0x015a8f0001265ec8ULL },
+ { &fnv_test_str[9], (Fnv64_t) 0x733fc501f4330dbaULL },
+ { &fnv_test_str[10], (Fnv64_t) 0x08697c51f2c0536fULL },
+ { &fnv_test_str[11], (Fnv64_t) 0x0b91ae3f7ccdc5efULL },
+ { &fnv_test_str[12], (Fnv64_t) 0x0000000000000000ULL },
+ { &fnv_test_str[13], (Fnv64_t) 0x000061000000a4d3ULL },
+ { &fnv_test_str[14], (Fnv64_t) 0x000062000000a686ULL },
+ { &fnv_test_str[15], (Fnv64_t) 0x000063000000a839ULL },
+ { &fnv_test_str[16], (Fnv64_t) 0x000064000000a9ecULL },
+ { &fnv_test_str[17], (Fnv64_t) 0x000065000000ab9fULL },
+ { &fnv_test_str[18], (Fnv64_t) 0x000066000000ad52ULL },
+ { &fnv_test_str[19], (Fnv64_t) 0x015a8f0001265ea7ULL },
+ { &fnv_test_str[20], (Fnv64_t) 0x733fc501f4330dd8ULL },
+ { &fnv_test_str[21], (Fnv64_t) 0x08697c51f2c0530eULL },
+ { &fnv_test_str[22], (Fnv64_t) 0x0b91ae3f7ccdc59dULL },
+ { &fnv_test_str[23], (Fnv64_t) 0x765104e111a7551dULL },
+ { &fnv_test_str[24], (Fnv64_t) 0x000063000000a851ULL },
+ { &fnv_test_str[25], (Fnv64_t) 0x01508a00011e01ccULL },
+ { &fnv_test_str[26], (Fnv64_t) 0x59dc4a01e5fd0dcaULL },
+ { &fnv_test_str[27], (Fnv64_t) 0xae5f8b39ccfe6e59ULL },
+ { &fnv_test_str[28], (Fnv64_t) 0x4ac7ec3754558154ULL },
+ { &fnv_test_str[29], (Fnv64_t) 0x6737b6044d4ac19cULL },
+ { &fnv_test_str[30], (Fnv64_t) 0xae6be54f5606fc63ULL },
+ { &fnv_test_str[31], (Fnv64_t) 0x685308cf2ddedc58ULL },
+ { &fnv_test_str[32], (Fnv64_t) 0x23f4500af1b069fbULL },
+ { &fnv_test_str[33], (Fnv64_t) 0xc88dfd98aec415a1ULL },
+ { &fnv_test_str[34], (Fnv64_t) 0x8d5b8b70f730c0fbULL },
+ { &fnv_test_str[35], (Fnv64_t) 0x634eebf407d7eae4ULL },
+ { &fnv_test_str[36], (Fnv64_t) 0x9705d3a953e4211eULL },
+ { &fnv_test_str[37], (Fnv64_t) 0x8307c6b98ca4459fULL },
+ { &fnv_test_str[38], (Fnv64_t) 0x4a7c4c49fb224d0cULL },
+ { &fnv_test_str[39], (Fnv64_t) 0xb382adb5bb48eb6eULL },
+ { &fnv_test_str[40], (Fnv64_t) 0x01508a00011e01a3ULL },
+ { &fnv_test_str[41], (Fnv64_t) 0x59dc4a01e5fd0da4ULL },
+ { &fnv_test_str[42], (Fnv64_t) 0xae5f8b39ccfe6e3eULL },
+ { &fnv_test_str[43], (Fnv64_t) 0x4ac7ec375455813bULL },
+ { &fnv_test_str[44], (Fnv64_t) 0x6737b6044d4ac1bcULL },
+ { &fnv_test_str[45], (Fnv64_t) 0xae6be54f5606fc14ULL },
+ { &fnv_test_str[46], (Fnv64_t) 0x685308cf2ddedc39ULL },
+ { &fnv_test_str[47], (Fnv64_t) 0x23f4500af1b06988ULL },
+ { &fnv_test_str[48], (Fnv64_t) 0xc88dfd98aec41581ULL },
+ { &fnv_test_str[49], (Fnv64_t) 0x8d5b8b70f730c093ULL },
+ { &fnv_test_str[50], (Fnv64_t) 0x634eebf407d7ea81ULL },
+ { &fnv_test_str[51], (Fnv64_t) 0x9705d3a953e4216cULL },
+ { &fnv_test_str[52], (Fnv64_t) 0x8307c6b98ca445faULL },
+ { &fnv_test_str[53], (Fnv64_t) 0x4a7c4c49fb224d2dULL },
+ { &fnv_test_str[54], (Fnv64_t) 0xb382adb5bb48eb64ULL },
+ { &fnv_test_str[55], (Fnv64_t) 0x4ff899cd3ce80beaULL },
+ { &fnv_test_str[56], (Fnv64_t) 0x000063000000a84cULL },
+ { &fnv_test_str[57], (Fnv64_t) 0x01508500011df956ULL },
+ { &fnv_test_str[58], (Fnv64_t) 0x59cb5501e5eead46ULL },
+ { &fnv_test_str[59], (Fnv64_t) 0x832eb839b4906d81ULL },
+ { &fnv_test_str[60], (Fnv64_t) 0x78d08b0dd16a1213ULL },
+ { &fnv_test_str[61], (Fnv64_t) 0xb46e5b7ad73cb628ULL },
+ { &fnv_test_str[62], (Fnv64_t) 0xd43b99bbbc298596ULL },
+ { &fnv_test_str[63], (Fnv64_t) 0xcacbd000ba8dfd86ULL },
+ { &fnv_test_str[64], (Fnv64_t) 0x264ff73cff45ca92ULL },
+ { &fnv_test_str[65], (Fnv64_t) 0x5fabaea5c3973661ULL },
+ { &fnv_test_str[66], (Fnv64_t) 0x27f024ab59f166bbULL },
+ { &fnv_test_str[67], (Fnv64_t) 0xce750a29d5318fa4ULL },
+ { &fnv_test_str[68], (Fnv64_t) 0x026fe915433713d5ULL },
+ { &fnv_test_str[69], (Fnv64_t) 0x5b3ce4213696b2e5ULL },
+ { &fnv_test_str[70], (Fnv64_t) 0x01508500011df924ULL },
+ { &fnv_test_str[71], (Fnv64_t) 0x59cb5501e5eead22ULL },
+ { &fnv_test_str[72], (Fnv64_t) 0x832eb839b4906df2ULL },
+ { &fnv_test_str[73], (Fnv64_t) 0x78d08b0dd16a1233ULL },
+ { &fnv_test_str[74], (Fnv64_t) 0xb46e5b7ad73cb649ULL },
+ { &fnv_test_str[75], (Fnv64_t) 0xd43b99bbbc2985f8ULL },
+ { &fnv_test_str[76], (Fnv64_t) 0xcacbd000ba8dfde2ULL },
+ { &fnv_test_str[77], (Fnv64_t) 0x264ff73cff45cab2ULL },
+ { &fnv_test_str[78], (Fnv64_t) 0x5fabaea5c3973616ULL },
+ { &fnv_test_str[79], (Fnv64_t) 0x27f024ab59f166d3ULL },
+ { &fnv_test_str[80], (Fnv64_t) 0xce750a29d5318fc1ULL },
+ { &fnv_test_str[81], (Fnv64_t) 0x026fe915433713acULL },
+ { &fnv_test_str[82], (Fnv64_t) 0x5b3ce4213696b2efULL },
+ { &fnv_test_str[83], (Fnv64_t) 0x9f2a896fc211fb1fULL },
+ { &fnv_test_str[84], (Fnv64_t) 0x000068000000b0d1ULL },
+ { &fnv_test_str[85], (Fnv64_t) 0x01618900012c7323ULL },
+ { &fnv_test_str[86], (Fnv64_t) 0x3fa86e63bc7d03c8ULL },
+ { &fnv_test_str[87], (Fnv64_t) 0xa8375b79486d6cd8ULL },
+ { &fnv_test_str[88], (Fnv64_t) 0xa0d18504e316ac54ULL },
+ { &fnv_test_str[89], (Fnv64_t) 0x08a97b0004e7fe54ULL },
+ { &fnv_test_str[90], (Fnv64_t) 0xa0d18504e316ac57ULL },
+ { &fnv_test_str[91], (Fnv64_t) 0x1152f60009cffda9ULL },
+ { &fnv_test_str[92], (Fnv64_t) 0xa0d18504e316ac56ULL },
+ { &fnv_test_str[93], (Fnv64_t) 0x19fc71000eb7fcfeULL },
+ { &fnv_test_str[94], (Fnv64_t) 0xa0d18504e316ac51ULL },
+ { &fnv_test_str[95], (Fnv64_t) 0x22a5ec00139ffa53ULL },
+ { &fnv_test_str[96], (Fnv64_t) 0x29bed00139779a33ULL },
+ { &fnv_test_str[97], (Fnv64_t) 0x4dbc81014e3c19f5ULL },
+ { &fnv_test_str[98], (Fnv64_t) 0x29bed00139779a3dULL },
+ { &fnv_test_str[99], (Fnv64_t) 0x81a72b016b9f7573ULL },
+ { &fnv_test_str[100], (Fnv64_t) 0x29bed00139779a23ULL },
+ { &fnv_test_str[101], (Fnv64_t) 0xd85411019cbbce45ULL },
+ { &fnv_test_str[102], (Fnv64_t) 0xf548616b8621d657ULL },
+ { &fnv_test_str[103], (Fnv64_t) 0xebd3e0b4eb7f35d5ULL },
+ { &fnv_test_str[104], (Fnv64_t) 0xf548616b8621d654ULL },
+ { &fnv_test_str[105], (Fnv64_t) 0xebd3ddb4eb7f30bcULL },
+ { &fnv_test_str[106], (Fnv64_t) 0xf548616b8621d655ULL },
+ { &fnv_test_str[107], (Fnv64_t) 0xebd3deb4eb7f326fULL },
+ { &fnv_test_str[108], (Fnv64_t) 0x581cb60340ab0968ULL },
+ { &fnv_test_str[109], (Fnv64_t) 0x63d2af86e2a0fbb8ULL },
+ { &fnv_test_str[110], (Fnv64_t) 0x581cb70340ab0b37ULL },
+ { &fnv_test_str[111], (Fnv64_t) 0x63d63186e2a40e75ULL },
+ { &fnv_test_str[112], (Fnv64_t) 0x581cc40340ab212eULL },
+ { &fnv_test_str[113], (Fnv64_t) 0x64023f86e2c9612aULL },
+ { &fnv_test_str[114], (Fnv64_t) 0xdbda6a26c33c909fULL },
+ { &fnv_test_str[115], (Fnv64_t) 0xd0b2feddbfe9be2dULL },
+ { &fnv_test_str[116], (Fnv64_t) 0x9c9eae3f5d037decULL },
+ { &fnv_test_str[117], (Fnv64_t) 0x252001ab0ceef804ULL },
+ { &fnv_test_str[118], (Fnv64_t) 0x4456a56f9e05cfefULL },
+ { &fnv_test_str[119], (Fnv64_t) 0x250b0ba983e0531dULL },
+ { &fnv_test_str[120], (Fnv64_t) 0x52b007213b27b33eULL },
+ { &fnv_test_str[121], (Fnv64_t) 0xcbf29ce484222325ULL },
+ { &fnv_test_str[122], (Fnv64_t) 0xaf63bd4c8601b7dfULL },
+ { &fnv_test_str[123], (Fnv64_t) 0x128599ccddae09f8ULL },
+ { &fnv_test_str[124], (Fnv64_t) 0x270e4f1caebaf068ULL },
+ { &fnv_test_str[125], (Fnv64_t) 0x01517d497446a395ULL },
+ { &fnv_test_str[126], (Fnv64_t) 0x9af5a29a89450b40ULL },
+ { &fnv_test_str[127], (Fnv64_t) 0xb502f6c063ba72e8ULL },
+ { &fnv_test_str[128], (Fnv64_t) 0xacf41561498ca7dfULL },
+ { &fnv_test_str[129], (Fnv64_t) 0x6be8c2423a351542ULL },
+ { &fnv_test_str[130], (Fnv64_t) 0xd04f1f6da96ce4a3ULL },
+ { &fnv_test_str[131], (Fnv64_t) 0x69eb9a8f282c7235ULL },
+ { &fnv_test_str[132], (Fnv64_t) 0x6a7e5a418f77cfc5ULL },
+ { &fnv_test_str[133], (Fnv64_t) 0xbcaf568ddc2ecba0ULL },
+ { &fnv_test_str[134], (Fnv64_t) 0xb03b5cc4c38f8b1fULL },
+ { &fnv_test_str[135], (Fnv64_t) 0xf89a9f51432db828ULL },
+ { &fnv_test_str[136], (Fnv64_t) 0x549e856be6103429ULL },
+ { &fnv_test_str[137], (Fnv64_t) 0x3cf50d224d29377aULL },
+ { &fnv_test_str[138], (Fnv64_t) 0xdb762df418c10c37ULL },
+ { &fnv_test_str[139], (Fnv64_t) 0xfeeb4226b0e9a6baULL },
+ { &fnv_test_str[140], (Fnv64_t) 0x7004a4cd9310c052ULL },
+ { &fnv_test_str[141], (Fnv64_t) 0xd1c727d7f5329276ULL },
+ { &fnv_test_str[142], (Fnv64_t) 0xbe313796596ce908ULL },
+ { &fnv_test_str[143], (Fnv64_t) 0x768f67ede090fcc5ULL },
+ { &fnv_test_str[144], (Fnv64_t) 0xa81563cc9db9bfc3ULL },
+ { &fnv_test_str[145], (Fnv64_t) 0x47194043c55197a8ULL },
+ { &fnv_test_str[146], (Fnv64_t) 0xc99d81864aebab02ULL },
+ { &fnv_test_str[147], (Fnv64_t) 0xcc1f161b235ea4a2ULL },
+ { &fnv_test_str[148], (Fnv64_t) 0xaadab0c420ecd434ULL },
+ { &fnv_test_str[149], (Fnv64_t) 0x6b3c034d6f44d740ULL },
+ { &fnv_test_str[150], (Fnv64_t) 0x73a45e850602cbc6ULL },
+ { &fnv_test_str[151], (Fnv64_t) 0x72360f04f0cd227bULL },
+ { &fnv_test_str[152], (Fnv64_t) 0xa9ca80be384a778fULL },
+ { &fnv_test_str[153], (Fnv64_t) 0xd4085e66906889e3ULL },
+ { &fnv_test_str[154], (Fnv64_t) 0x93aa8b2748efdbc8ULL },
+ { &fnv_test_str[155], (Fnv64_t) 0x6f8cd678407436a2ULL },
+ { &fnv_test_str[156], (Fnv64_t) 0xf39a43d4dc8be4c7ULL },
+ { &fnv_test_str[157], (Fnv64_t) 0xd7f5cec91125d245ULL },
+ { &fnv_test_str[158], (Fnv64_t) 0x691d7b73be18adc4ULL },
+ { &fnv_test_str[159], (Fnv64_t) 0xf4361e01caf6b691ULL },
+ { &fnv_test_str[160], (Fnv64_t) 0xde7d8264f64be089ULL },
+ { &fnv_test_str[161], (Fnv64_t) 0xa34ff43e5545c06fULL },
+ { &fnv_test_str[162], (Fnv64_t) 0x181f0b8e908a2bdeULL },
+ { &fnv_test_str[163], (Fnv64_t) 0x28a965b78ddbc071ULL },
+ { &fnv_test_str[164], (Fnv64_t) 0xead9cea0e3cc6ae5ULL },
+ { &fnv_test_str[165], (Fnv64_t) 0x0b6743153b43ebbaULL },
+ { &fnv_test_str[166], (Fnv64_t) 0xa7aa3f012c74528dULL },
+ { &fnv_test_str[167], (Fnv64_t) 0x2d5d8ad7f9dffeb7ULL },
+ { &fnv_test_str[168], (Fnv64_t) 0x00750fb6e19624eaULL },
+ { &fnv_test_str[169], (Fnv64_t) 0x01c125a4e6c76c82ULL },
+ { &fnv_test_str[170], (Fnv64_t) 0x3fde3afac0722f1fULL },
+ { &fnv_test_str[171], (Fnv64_t) 0xd7c3eaf4abaa379dULL },
+ { &fnv_test_str[172], (Fnv64_t) 0xd2217e1c923c9f3fULL },
+ { &fnv_test_str[173], (Fnv64_t) 0x82d0a2e3b725caf6ULL },
+ { &fnv_test_str[174], (Fnv64_t) 0x0a10bee8eeb72e4fULL },
+ { &fnv_test_str[175], (Fnv64_t) 0xc530e8723e72c6fdULL },
+ { &fnv_test_str[176], (Fnv64_t) 0xd8d34dcd2e7bad99ULL },
+ { &fnv_test_str[177], (Fnv64_t) 0xecf77466e9a2baf3ULL },
+ { &fnv_test_str[178], (Fnv64_t) 0xde3d2ddb043b9666ULL },
+ { &fnv_test_str[179], (Fnv64_t) 0xd1cc824e1a8157d8ULL },
+ { &fnv_test_str[180], (Fnv64_t) 0x7d5c68ecbc90512eULL },
+ { &fnv_test_str[181], (Fnv64_t) 0x2f7c691b1d7c76d8ULL },
+ { &fnv_test_str[182], (Fnv64_t) 0x5d88c2bad3a46bc8ULL },
+ { &fnv_test_str[183], (Fnv64_t) 0xdf107320276647a0ULL },
+ { &fnv_test_str[184], (Fnv64_t) 0x0f78f22e7e70e9bcULL },
+ { &fnv_test_str[185], (Fnv64_t) 0x8c67be5c80f67d04ULL },
+ { &fnv_test_str[186], (Fnv64_t) 0x07c1adfa4d019194ULL },
+ { &fnv_test_str[187], (Fnv64_t) 0xce1312420c5b1af4ULL },
+ { &fnv_test_str[188], (Fnv64_t) 0x043a41b2dc53ab24ULL },
+ { &fnv_test_str[189], (Fnv64_t) 0x0b038eebf7340860ULL },
+ { &fnv_test_str[190], (Fnv64_t) 0x1bcd837353fb69b0ULL },
+ { &fnv_test_str[191], (Fnv64_t) 0x46f992fc59eff180ULL },
+ { &fnv_test_str[192], (Fnv64_t) 0x497678ee29ae79c0ULL },
+ { &fnv_test_str[193], (Fnv64_t) 0xb10a62280ddd4450ULL },
+ { &fnv_test_str[194], (Fnv64_t) 0x35eb228db4d68140ULL },
+ { &fnv_test_str[195], (Fnv64_t) 0x8b350e86d9470870ULL },
+ { &fnv_test_str[196], (Fnv64_t) 0x4e1fbdb2812e9540ULL },
+ { &fnv_test_str[197], (Fnv64_t) 0x051e080df69a0600ULL },
+ { &fnv_test_str[198], (Fnv64_t) 0x45e1e8ae54dadb40ULL },
+ { &fnv_test_str[199], (Fnv64_t) 0x0000000000000000ULL },
+ { &fnv_test_str[200], (Fnv64_t) 0xcd73806290557064ULL },
+ { &fnv_test_str[201], (Fnv64_t) 0x2613a37bbe0317c8ULL },
+ { &fnv_test_str[202], (Fnv64_t) 0x1480e21fcf2ae5e4ULL },
+ { NULL, (Fnv64_t) 0 }
+};
+#else /* HAVE_64BIT_LONG_LONG */
+struct fnv0_64_test_vector fnv0_64_vector[] = {
+ { &fnv_test_str[0], (Fnv64_t) {0x00000000UL, 0x00000000UL} },
+ { &fnv_test_str[1], (Fnv64_t) {0x00000061UL, 0x00000000UL} },
+ { &fnv_test_str[2], (Fnv64_t) {0x00000062UL, 0x00000000UL} },
+ { &fnv_test_str[3], (Fnv64_t) {0x00000063UL, 0x00000000UL} },
+ { &fnv_test_str[4], (Fnv64_t) {0x00000064UL, 0x00000000UL} },
+ { &fnv_test_str[5], (Fnv64_t) {0x00000065UL, 0x00000000UL} },
+ { &fnv_test_str[6], (Fnv64_t) {0x00000066UL, 0x00000000UL} },
+ { &fnv_test_str[7], (Fnv64_t) {0x0000ad3dUL, 0x00006600UL} },
+ { &fnv_test_str[8], (Fnv64_t) {0x01265ec8UL, 0x015a8f00UL} },
+ { &fnv_test_str[9], (Fnv64_t) {0xf4330dbaUL, 0x733fc501UL} },
+ { &fnv_test_str[10], (Fnv64_t) {0xf2c0536fUL, 0x08697c51UL} },
+ { &fnv_test_str[11], (Fnv64_t) {0x7ccdc5efUL, 0x0b91ae3fUL} },
+ { &fnv_test_str[12], (Fnv64_t) {0x00000000UL, 0x00000000UL} },
+ { &fnv_test_str[13], (Fnv64_t) {0x0000a4d3UL, 0x00006100UL} },
+ { &fnv_test_str[14], (Fnv64_t) {0x0000a686UL, 0x00006200UL} },
+ { &fnv_test_str[15], (Fnv64_t) {0x0000a839UL, 0x00006300UL} },
+ { &fnv_test_str[16], (Fnv64_t) {0x0000a9ecUL, 0x00006400UL} },
+ { &fnv_test_str[17], (Fnv64_t) {0x0000ab9fUL, 0x00006500UL} },
+ { &fnv_test_str[18], (Fnv64_t) {0x0000ad52UL, 0x00006600UL} },
+ { &fnv_test_str[19], (Fnv64_t) {0x01265ea7UL, 0x015a8f00UL} },
+ { &fnv_test_str[20], (Fnv64_t) {0xf4330dd8UL, 0x733fc501UL} },
+ { &fnv_test_str[21], (Fnv64_t) {0xf2c0530eUL, 0x08697c51UL} },
+ { &fnv_test_str[22], (Fnv64_t) {0x7ccdc59dUL, 0x0b91ae3fUL} },
+ { &fnv_test_str[23], (Fnv64_t) {0x11a7551dUL, 0x765104e1UL} },
+ { &fnv_test_str[24], (Fnv64_t) {0x0000a851UL, 0x00006300UL} },
+ { &fnv_test_str[25], (Fnv64_t) {0x011e01ccUL, 0x01508a00UL} },
+ { &fnv_test_str[26], (Fnv64_t) {0xe5fd0dcaUL, 0x59dc4a01UL} },
+ { &fnv_test_str[27], (Fnv64_t) {0xccfe6e59UL, 0xae5f8b39UL} },
+ { &fnv_test_str[28], (Fnv64_t) {0x54558154UL, 0x4ac7ec37UL} },
+ { &fnv_test_str[29], (Fnv64_t) {0x4d4ac19cUL, 0x6737b604UL} },
+ { &fnv_test_str[30], (Fnv64_t) {0x5606fc63UL, 0xae6be54fUL} },
+ { &fnv_test_str[31], (Fnv64_t) {0x2ddedc58UL, 0x685308cfUL} },
+ { &fnv_test_str[32], (Fnv64_t) {0xf1b069fbUL, 0x23f4500aUL} },
+ { &fnv_test_str[33], (Fnv64_t) {0xaec415a1UL, 0xc88dfd98UL} },
+ { &fnv_test_str[34], (Fnv64_t) {0xf730c0fbUL, 0x8d5b8b70UL} },
+ { &fnv_test_str[35], (Fnv64_t) {0x07d7eae4UL, 0x634eebf4UL} },
+ { &fnv_test_str[36], (Fnv64_t) {0x53e4211eUL, 0x9705d3a9UL} },
+ { &fnv_test_str[37], (Fnv64_t) {0x8ca4459fUL, 0x8307c6b9UL} },
+ { &fnv_test_str[38], (Fnv64_t) {0xfb224d0cUL, 0x4a7c4c49UL} },
+ { &fnv_test_str[39], (Fnv64_t) {0xbb48eb6eUL, 0xb382adb5UL} },
+ { &fnv_test_str[40], (Fnv64_t) {0x011e01a3UL, 0x01508a00UL} },
+ { &fnv_test_str[41], (Fnv64_t) {0xe5fd0da4UL, 0x59dc4a01UL} },
+ { &fnv_test_str[42], (Fnv64_t) {0xccfe6e3eUL, 0xae5f8b39UL} },
+ { &fnv_test_str[43], (Fnv64_t) {0x5455813bUL, 0x4ac7ec37UL} },
+ { &fnv_test_str[44], (Fnv64_t) {0x4d4ac1bcUL, 0x6737b604UL} },
+ { &fnv_test_str[45], (Fnv64_t) {0x5606fc14UL, 0xae6be54fUL} },
+ { &fnv_test_str[46], (Fnv64_t) {0x2ddedc39UL, 0x685308cfUL} },
+ { &fnv_test_str[47], (Fnv64_t) {0xf1b06988UL, 0x23f4500aUL} },
+ { &fnv_test_str[48], (Fnv64_t) {0xaec41581UL, 0xc88dfd98UL} },
+ { &fnv_test_str[49], (Fnv64_t) {0xf730c093UL, 0x8d5b8b70UL} },
+ { &fnv_test_str[50], (Fnv64_t) {0x07d7ea81UL, 0x634eebf4UL} },
+ { &fnv_test_str[51], (Fnv64_t) {0x53e4216cUL, 0x9705d3a9UL} },
+ { &fnv_test_str[52], (Fnv64_t) {0x8ca445faUL, 0x8307c6b9UL} },
+ { &fnv_test_str[53], (Fnv64_t) {0xfb224d2dUL, 0x4a7c4c49UL} },
+ { &fnv_test_str[54], (Fnv64_t) {0xbb48eb64UL, 0xb382adb5UL} },
+ { &fnv_test_str[55], (Fnv64_t) {0x3ce80beaUL, 0x4ff899cdUL} },
+ { &fnv_test_str[56], (Fnv64_t) {0x0000a84cUL, 0x00006300UL} },
+ { &fnv_test_str[57], (Fnv64_t) {0x011df956UL, 0x01508500UL} },
+ { &fnv_test_str[58], (Fnv64_t) {0xe5eead46UL, 0x59cb5501UL} },
+ { &fnv_test_str[59], (Fnv64_t) {0xb4906d81UL, 0x832eb839UL} },
+ { &fnv_test_str[60], (Fnv64_t) {0xd16a1213UL, 0x78d08b0dUL} },
+ { &fnv_test_str[61], (Fnv64_t) {0xd73cb628UL, 0xb46e5b7aUL} },
+ { &fnv_test_str[62], (Fnv64_t) {0xbc298596UL, 0xd43b99bbUL} },
+ { &fnv_test_str[63], (Fnv64_t) {0xba8dfd86UL, 0xcacbd000UL} },
+ { &fnv_test_str[64], (Fnv64_t) {0xff45ca92UL, 0x264ff73cUL} },
+ { &fnv_test_str[65], (Fnv64_t) {0xc3973661UL, 0x5fabaea5UL} },
+ { &fnv_test_str[66], (Fnv64_t) {0x59f166bbUL, 0x27f024abUL} },
+ { &fnv_test_str[67], (Fnv64_t) {0xd5318fa4UL, 0xce750a29UL} },
+ { &fnv_test_str[68], (Fnv64_t) {0x433713d5UL, 0x026fe915UL} },
+ { &fnv_test_str[69], (Fnv64_t) {0x3696b2e5UL, 0x5b3ce421UL} },
+ { &fnv_test_str[70], (Fnv64_t) {0x011df924UL, 0x01508500UL} },
+ { &fnv_test_str[71], (Fnv64_t) {0xe5eead22UL, 0x59cb5501UL} },
+ { &fnv_test_str[72], (Fnv64_t) {0xb4906df2UL, 0x832eb839UL} },
+ { &fnv_test_str[73], (Fnv64_t) {0xd16a1233UL, 0x78d08b0dUL} },
+ { &fnv_test_str[74], (Fnv64_t) {0xd73cb649UL, 0xb46e5b7aUL} },
+ { &fnv_test_str[75], (Fnv64_t) {0xbc2985f8UL, 0xd43b99bbUL} },
+ { &fnv_test_str[76], (Fnv64_t) {0xba8dfde2UL, 0xcacbd000UL} },
+ { &fnv_test_str[77], (Fnv64_t) {0xff45cab2UL, 0x264ff73cUL} },
+ { &fnv_test_str[78], (Fnv64_t) {0xc3973616UL, 0x5fabaea5UL} },
+ { &fnv_test_str[79], (Fnv64_t) {0x59f166d3UL, 0x27f024abUL} },
+ { &fnv_test_str[80], (Fnv64_t) {0xd5318fc1UL, 0xce750a29UL} },
+ { &fnv_test_str[81], (Fnv64_t) {0x433713acUL, 0x026fe915UL} },
+ { &fnv_test_str[82], (Fnv64_t) {0x3696b2efUL, 0x5b3ce421UL} },
+ { &fnv_test_str[83], (Fnv64_t) {0xc211fb1fUL, 0x9f2a896fUL} },
+ { &fnv_test_str[84], (Fnv64_t) {0x0000b0d1UL, 0x00006800UL} },
+ { &fnv_test_str[85], (Fnv64_t) {0x012c7323UL, 0x01618900UL} },
+ { &fnv_test_str[86], (Fnv64_t) {0xbc7d03c8UL, 0x3fa86e63UL} },
+ { &fnv_test_str[87], (Fnv64_t) {0x486d6cd8UL, 0xa8375b79UL} },
+ { &fnv_test_str[88], (Fnv64_t) {0xe316ac54UL, 0xa0d18504UL} },
+ { &fnv_test_str[89], (Fnv64_t) {0x04e7fe54UL, 0x08a97b00UL} },
+ { &fnv_test_str[90], (Fnv64_t) {0xe316ac57UL, 0xa0d18504UL} },
+ { &fnv_test_str[91], (Fnv64_t) {0x09cffda9UL, 0x1152f600UL} },
+ { &fnv_test_str[92], (Fnv64_t) {0xe316ac56UL, 0xa0d18504UL} },
+ { &fnv_test_str[93], (Fnv64_t) {0x0eb7fcfeUL, 0x19fc7100UL} },
+ { &fnv_test_str[94], (Fnv64_t) {0xe316ac51UL, 0xa0d18504UL} },
+ { &fnv_test_str[95], (Fnv64_t) {0x139ffa53UL, 0x22a5ec00UL} },
+ { &fnv_test_str[96], (Fnv64_t) {0x39779a33UL, 0x29bed001UL} },
+ { &fnv_test_str[97], (Fnv64_t) {0x4e3c19f5UL, 0x4dbc8101UL} },
+ { &fnv_test_str[98], (Fnv64_t) {0x39779a3dUL, 0x29bed001UL} },
+ { &fnv_test_str[99], (Fnv64_t) {0x6b9f7573UL, 0x81a72b01UL} },
+ { &fnv_test_str[100], (Fnv64_t) {0x39779a23UL, 0x29bed001UL} },
+ { &fnv_test_str[101], (Fnv64_t) {0x9cbbce45UL, 0xd8541101UL} },
+ { &fnv_test_str[102], (Fnv64_t) {0x8621d657UL, 0xf548616bUL} },
+ { &fnv_test_str[103], (Fnv64_t) {0xeb7f35d5UL, 0xebd3e0b4UL} },
+ { &fnv_test_str[104], (Fnv64_t) {0x8621d654UL, 0xf548616bUL} },
+ { &fnv_test_str[105], (Fnv64_t) {0xeb7f30bcUL, 0xebd3ddb4UL} },
+ { &fnv_test_str[106], (Fnv64_t) {0x8621d655UL, 0xf548616bUL} },
+ { &fnv_test_str[107], (Fnv64_t) {0xeb7f326fUL, 0xebd3deb4UL} },
+ { &fnv_test_str[108], (Fnv64_t) {0x40ab0968UL, 0x581cb603UL} },
+ { &fnv_test_str[109], (Fnv64_t) {0xe2a0fbb8UL, 0x63d2af86UL} },
+ { &fnv_test_str[110], (Fnv64_t) {0x40ab0b37UL, 0x581cb703UL} },
+ { &fnv_test_str[111], (Fnv64_t) {0xe2a40e75UL, 0x63d63186UL} },
+ { &fnv_test_str[112], (Fnv64_t) {0x40ab212eUL, 0x581cc403UL} },
+ { &fnv_test_str[113], (Fnv64_t) {0xe2c9612aUL, 0x64023f86UL} },
+ { &fnv_test_str[114], (Fnv64_t) {0xc33c909fUL, 0xdbda6a26UL} },
+ { &fnv_test_str[115], (Fnv64_t) {0xbfe9be2dUL, 0xd0b2feddUL} },
+ { &fnv_test_str[116], (Fnv64_t) {0x5d037decUL, 0x9c9eae3fUL} },
+ { &fnv_test_str[117], (Fnv64_t) {0x0ceef804UL, 0x252001abUL} },
+ { &fnv_test_str[118], (Fnv64_t) {0x9e05cfefUL, 0x4456a56fUL} },
+ { &fnv_test_str[119], (Fnv64_t) {0x83e0531dUL, 0x250b0ba9UL} },
+ { &fnv_test_str[120], (Fnv64_t) {0x3b27b33eUL, 0x52b00721UL} },
+ { &fnv_test_str[121], (Fnv64_t) {0x84222325UL, 0xcbf29ce4UL} },
+ { &fnv_test_str[122], (Fnv64_t) {0x8601b7dfUL, 0xaf63bd4cUL} },
+ { &fnv_test_str[123], (Fnv64_t) {0xddae09f8UL, 0x128599ccUL} },
+ { &fnv_test_str[124], (Fnv64_t) {0xaebaf068UL, 0x270e4f1cUL} },
+ { &fnv_test_str[125], (Fnv64_t) {0x7446a395UL, 0x01517d49UL} },
+ { &fnv_test_str[126], (Fnv64_t) {0x89450b40UL, 0x9af5a29aUL} },
+ { &fnv_test_str[127], (Fnv64_t) {0x63ba72e8UL, 0xb502f6c0UL} },
+ { &fnv_test_str[128], (Fnv64_t) {0x498ca7dfUL, 0xacf41561UL} },
+ { &fnv_test_str[129], (Fnv64_t) {0x3a351542UL, 0x6be8c242UL} },
+ { &fnv_test_str[130], (Fnv64_t) {0xa96ce4a3UL, 0xd04f1f6dUL} },
+ { &fnv_test_str[131], (Fnv64_t) {0x282c7235UL, 0x69eb9a8fUL} },
+ { &fnv_test_str[132], (Fnv64_t) {0x8f77cfc5UL, 0x6a7e5a41UL} },
+ { &fnv_test_str[133], (Fnv64_t) {0xdc2ecba0UL, 0xbcaf568dUL} },
+ { &fnv_test_str[134], (Fnv64_t) {0xc38f8b1fUL, 0xb03b5cc4UL} },
+ { &fnv_test_str[135], (Fnv64_t) {0x432db828UL, 0xf89a9f51UL} },
+ { &fnv_test_str[136], (Fnv64_t) {0xe6103429UL, 0x549e856bUL} },
+ { &fnv_test_str[137], (Fnv64_t) {0x4d29377aUL, 0x3cf50d22UL} },
+ { &fnv_test_str[138], (Fnv64_t) {0x18c10c37UL, 0xdb762df4UL} },
+ { &fnv_test_str[139], (Fnv64_t) {0xb0e9a6baUL, 0xfeeb4226UL} },
+ { &fnv_test_str[140], (Fnv64_t) {0x9310c052UL, 0x7004a4cdUL} },
+ { &fnv_test_str[141], (Fnv64_t) {0xf5329276UL, 0xd1c727d7UL} },
+ { &fnv_test_str[142], (Fnv64_t) {0x596ce908UL, 0xbe313796UL} },
+ { &fnv_test_str[143], (Fnv64_t) {0xe090fcc5UL, 0x768f67edUL} },
+ { &fnv_test_str[144], (Fnv64_t) {0x9db9bfc3UL, 0xa81563ccUL} },
+ { &fnv_test_str[145], (Fnv64_t) {0xc55197a8UL, 0x47194043UL} },
+ { &fnv_test_str[146], (Fnv64_t) {0x4aebab02UL, 0xc99d8186UL} },
+ { &fnv_test_str[147], (Fnv64_t) {0x235ea4a2UL, 0xcc1f161bUL} },
+ { &fnv_test_str[148], (Fnv64_t) {0x20ecd434UL, 0xaadab0c4UL} },
+ { &fnv_test_str[149], (Fnv64_t) {0x6f44d740UL, 0x6b3c034dUL} },
+ { &fnv_test_str[150], (Fnv64_t) {0x0602cbc6UL, 0x73a45e85UL} },
+ { &fnv_test_str[151], (Fnv64_t) {0xf0cd227bUL, 0x72360f04UL} },
+ { &fnv_test_str[152], (Fnv64_t) {0x384a778fUL, 0xa9ca80beUL} },
+ { &fnv_test_str[153], (Fnv64_t) {0x906889e3UL, 0xd4085e66UL} },
+ { &fnv_test_str[154], (Fnv64_t) {0x48efdbc8UL, 0x93aa8b27UL} },
+ { &fnv_test_str[155], (Fnv64_t) {0x407436a2UL, 0x6f8cd678UL} },
+ { &fnv_test_str[156], (Fnv64_t) {0xdc8be4c7UL, 0xf39a43d4UL} },
+ { &fnv_test_str[157], (Fnv64_t) {0x1125d245UL, 0xd7f5cec9UL} },
+ { &fnv_test_str[158], (Fnv64_t) {0xbe18adc4UL, 0x691d7b73UL} },
+ { &fnv_test_str[159], (Fnv64_t) {0xcaf6b691UL, 0xf4361e01UL} },
+ { &fnv_test_str[160], (Fnv64_t) {0xf64be089UL, 0xde7d8264UL} },
+ { &fnv_test_str[161], (Fnv64_t) {0x5545c06fUL, 0xa34ff43eUL} },
+ { &fnv_test_str[162], (Fnv64_t) {0x908a2bdeUL, 0x181f0b8eUL} },
+ { &fnv_test_str[163], (Fnv64_t) {0x8ddbc071UL, 0x28a965b7UL} },
+ { &fnv_test_str[164], (Fnv64_t) {0xe3cc6ae5UL, 0xead9cea0UL} },
+ { &fnv_test_str[165], (Fnv64_t) {0x3b43ebbaUL, 0x0b674315UL} },
+ { &fnv_test_str[166], (Fnv64_t) {0x2c74528dUL, 0xa7aa3f01UL} },
+ { &fnv_test_str[167], (Fnv64_t) {0xf9dffeb7UL, 0x2d5d8ad7UL} },
+ { &fnv_test_str[168], (Fnv64_t) {0xe19624eaUL, 0x00750fb6UL} },
+ { &fnv_test_str[169], (Fnv64_t) {0xe6c76c82UL, 0x01c125a4UL} },
+ { &fnv_test_str[170], (Fnv64_t) {0xc0722f1fUL, 0x3fde3afaUL} },
+ { &fnv_test_str[171], (Fnv64_t) {0xabaa379dUL, 0xd7c3eaf4UL} },
+ { &fnv_test_str[172], (Fnv64_t) {0x923c9f3fUL, 0xd2217e1cUL} },
+ { &fnv_test_str[173], (Fnv64_t) {0xb725caf6UL, 0x82d0a2e3UL} },
+ { &fnv_test_str[174], (Fnv64_t) {0xeeb72e4fUL, 0x0a10bee8UL} },
+ { &fnv_test_str[175], (Fnv64_t) {0x3e72c6fdUL, 0xc530e872UL} },
+ { &fnv_test_str[176], (Fnv64_t) {0x2e7bad99UL, 0xd8d34dcdUL} },
+ { &fnv_test_str[177], (Fnv64_t) {0xe9a2baf3UL, 0xecf77466UL} },
+ { &fnv_test_str[178], (Fnv64_t) {0x043b9666UL, 0xde3d2ddbUL} },
+ { &fnv_test_str[179], (Fnv64_t) {0x1a8157d8UL, 0xd1cc824eUL} },
+ { &fnv_test_str[180], (Fnv64_t) {0xbc90512eUL, 0x7d5c68ecUL} },
+ { &fnv_test_str[181], (Fnv64_t) {0x1d7c76d8UL, 0x2f7c691bUL} },
+ { &fnv_test_str[182], (Fnv64_t) {0xd3a46bc8UL, 0x5d88c2baUL} },
+ { &fnv_test_str[183], (Fnv64_t) {0x276647a0UL, 0xdf107320UL} },
+ { &fnv_test_str[184], (Fnv64_t) {0x7e70e9bcUL, 0x0f78f22eUL} },
+ { &fnv_test_str[185], (Fnv64_t) {0x80f67d04UL, 0x8c67be5cUL} },
+ { &fnv_test_str[186], (Fnv64_t) {0x4d019194UL, 0x07c1adfaUL} },
+ { &fnv_test_str[187], (Fnv64_t) {0x0c5b1af4UL, 0xce131242UL} },
+ { &fnv_test_str[188], (Fnv64_t) {0xdc53ab24UL, 0x043a41b2UL} },
+ { &fnv_test_str[189], (Fnv64_t) {0xf7340860UL, 0x0b038eebUL} },
+ { &fnv_test_str[190], (Fnv64_t) {0x53fb69b0UL, 0x1bcd8373UL} },
+ { &fnv_test_str[191], (Fnv64_t) {0x59eff180UL, 0x46f992fcUL} },
+ { &fnv_test_str[192], (Fnv64_t) {0x29ae79c0UL, 0x497678eeUL} },
+ { &fnv_test_str[193], (Fnv64_t) {0x0ddd4450UL, 0xb10a6228UL} },
+ { &fnv_test_str[194], (Fnv64_t) {0xb4d68140UL, 0x35eb228dUL} },
+ { &fnv_test_str[195], (Fnv64_t) {0xd9470870UL, 0x8b350e86UL} },
+ { &fnv_test_str[196], (Fnv64_t) {0x812e9540UL, 0x4e1fbdb2UL} },
+ { &fnv_test_str[197], (Fnv64_t) {0xf69a0600UL, 0x051e080dUL} },
+ { &fnv_test_str[198], (Fnv64_t) {0x54dadb40UL, 0x45e1e8aeUL} },
+ { &fnv_test_str[199], (Fnv64_t) {0x00000000UL, 0x00000000UL} },
+ { &fnv_test_str[200], (Fnv64_t) {0x90557064UL, 0xcd738062UL} },
+ { &fnv_test_str[201], (Fnv64_t) {0xbe0317c8UL, 0x2613a37bUL} },
+ { &fnv_test_str[202], (Fnv64_t) {0xcf2ae5e4UL, 0x1480e21fUL} },
+ { NULL, (Fnv64_t) {0,0} }
+};
+#endif /* HAVE_64BIT_LONG_LONG */
+
+/* FNV-1 64 bit test vectors */
+#if defined(HAVE_64BIT_LONG_LONG)
+struct fnv1_64_test_vector fnv1_64_vector[] = {
+ { &fnv_test_str[0], (Fnv64_t) 0xcbf29ce484222325ULL },
+ { &fnv_test_str[1], (Fnv64_t) 0xaf63bd4c8601b7beULL },
+ { &fnv_test_str[2], (Fnv64_t) 0xaf63bd4c8601b7bdULL },
+ { &fnv_test_str[3], (Fnv64_t) 0xaf63bd4c8601b7bcULL },
+ { &fnv_test_str[4], (Fnv64_t) 0xaf63bd4c8601b7bbULL },
+ { &fnv_test_str[5], (Fnv64_t) 0xaf63bd4c8601b7baULL },
+ { &fnv_test_str[6], (Fnv64_t) 0xaf63bd4c8601b7b9ULL },
+ { &fnv_test_str[7], (Fnv64_t) 0x08326207b4eb2f34ULL },
+ { &fnv_test_str[8], (Fnv64_t) 0xd8cbc7186ba13533ULL },
+ { &fnv_test_str[9], (Fnv64_t) 0x0378817ee2ed65cbULL },
+ { &fnv_test_str[10], (Fnv64_t) 0xd329d59b9963f790ULL },
+ { &fnv_test_str[11], (Fnv64_t) 0x340d8765a4dda9c2ULL },
+ { &fnv_test_str[12], (Fnv64_t) 0xaf63bd4c8601b7dfULL },
+ { &fnv_test_str[13], (Fnv64_t) 0x08326707b4eb37daULL },
+ { &fnv_test_str[14], (Fnv64_t) 0x08326607b4eb3627ULL },
+ { &fnv_test_str[15], (Fnv64_t) 0x08326507b4eb3474ULL },
+ { &fnv_test_str[16], (Fnv64_t) 0x08326407b4eb32c1ULL },
+ { &fnv_test_str[17], (Fnv64_t) 0x08326307b4eb310eULL },
+ { &fnv_test_str[18], (Fnv64_t) 0x08326207b4eb2f5bULL },
+ { &fnv_test_str[19], (Fnv64_t) 0xd8cbc7186ba1355cULL },
+ { &fnv_test_str[20], (Fnv64_t) 0x0378817ee2ed65a9ULL },
+ { &fnv_test_str[21], (Fnv64_t) 0xd329d59b9963f7f1ULL },
+ { &fnv_test_str[22], (Fnv64_t) 0x340d8765a4dda9b0ULL },
+ { &fnv_test_str[23], (Fnv64_t) 0x50a6d3b724a774a6ULL },
+ { &fnv_test_str[24], (Fnv64_t) 0x08326507b4eb341cULL },
+ { &fnv_test_str[25], (Fnv64_t) 0xd8d5c8186ba98bfbULL },
+ { &fnv_test_str[26], (Fnv64_t) 0x1ccefc7ef118dbefULL },
+ { &fnv_test_str[27], (Fnv64_t) 0x0c92fab3ad3db77aULL },
+ { &fnv_test_str[28], (Fnv64_t) 0x9b77794f5fdec421ULL },
+ { &fnv_test_str[29], (Fnv64_t) 0x0ac742dfe7874433ULL },
+ { &fnv_test_str[30], (Fnv64_t) 0xd7dad5766ad8e2deULL },
+ { &fnv_test_str[31], (Fnv64_t) 0xa1bb96378e897f5bULL },
+ { &fnv_test_str[32], (Fnv64_t) 0x5b3f9b6733a367d2ULL },
+ { &fnv_test_str[33], (Fnv64_t) 0xb07ce25cbea969f6ULL },
+ { &fnv_test_str[34], (Fnv64_t) 0x8d9e9997f9df0d6aULL },
+ { &fnv_test_str[35], (Fnv64_t) 0x838c673d9603cb7bULL },
+ { &fnv_test_str[36], (Fnv64_t) 0x8b5ee8a5e872c273ULL },
+ { &fnv_test_str[37], (Fnv64_t) 0x4507c4e9fb00690cULL },
+ { &fnv_test_str[38], (Fnv64_t) 0x4c9ca59581b27f45ULL },
+ { &fnv_test_str[39], (Fnv64_t) 0xe0aca20b624e4235ULL },
+ { &fnv_test_str[40], (Fnv64_t) 0xd8d5c8186ba98b94ULL },
+ { &fnv_test_str[41], (Fnv64_t) 0x1ccefc7ef118db81ULL },
+ { &fnv_test_str[42], (Fnv64_t) 0x0c92fab3ad3db71dULL },
+ { &fnv_test_str[43], (Fnv64_t) 0x9b77794f5fdec44eULL },
+ { &fnv_test_str[44], (Fnv64_t) 0x0ac742dfe7874413ULL },
+ { &fnv_test_str[45], (Fnv64_t) 0xd7dad5766ad8e2a9ULL },
+ { &fnv_test_str[46], (Fnv64_t) 0xa1bb96378e897f3aULL },
+ { &fnv_test_str[47], (Fnv64_t) 0x5b3f9b6733a367a1ULL },
+ { &fnv_test_str[48], (Fnv64_t) 0xb07ce25cbea969d6ULL },
+ { &fnv_test_str[49], (Fnv64_t) 0x8d9e9997f9df0d02ULL },
+ { &fnv_test_str[50], (Fnv64_t) 0x838c673d9603cb1eULL },
+ { &fnv_test_str[51], (Fnv64_t) 0x8b5ee8a5e872c201ULL },
+ { &fnv_test_str[52], (Fnv64_t) 0x4507c4e9fb006969ULL },
+ { &fnv_test_str[53], (Fnv64_t) 0x4c9ca59581b27f64ULL },
+ { &fnv_test_str[54], (Fnv64_t) 0xe0aca20b624e423fULL },
+ { &fnv_test_str[55], (Fnv64_t) 0x13998e580afa800fULL },
+ { &fnv_test_str[56], (Fnv64_t) 0x08326507b4eb3401ULL },
+ { &fnv_test_str[57], (Fnv64_t) 0xd8d5ad186ba95dc1ULL },
+ { &fnv_test_str[58], (Fnv64_t) 0x1c72e17ef0ca4e97ULL },
+ { &fnv_test_str[59], (Fnv64_t) 0x2183c1b327c38ae6ULL },
+ { &fnv_test_str[60], (Fnv64_t) 0xb66d096c914504f2ULL },
+ { &fnv_test_str[61], (Fnv64_t) 0x404bf57ad8476757ULL },
+ { &fnv_test_str[62], (Fnv64_t) 0x887976bd815498bbULL },
+ { &fnv_test_str[63], (Fnv64_t) 0x3afd7f02c2bf85a5ULL },
+ { &fnv_test_str[64], (Fnv64_t) 0xfc4476b0eb70177fULL },
+ { &fnv_test_str[65], (Fnv64_t) 0x186d2da00f77ecbaULL },
+ { &fnv_test_str[66], (Fnv64_t) 0xf97140fa48c74066ULL },
+ { &fnv_test_str[67], (Fnv64_t) 0xa2b1cf49aa926d37ULL },
+ { &fnv_test_str[68], (Fnv64_t) 0x0690712cd6cf940cULL },
+ { &fnv_test_str[69], (Fnv64_t) 0xf7045b3102b8906eULL },
+ { &fnv_test_str[70], (Fnv64_t) 0xd8d5ad186ba95db3ULL },
+ { &fnv_test_str[71], (Fnv64_t) 0x1c72e17ef0ca4ef3ULL },
+ { &fnv_test_str[72], (Fnv64_t) 0x2183c1b327c38a95ULL },
+ { &fnv_test_str[73], (Fnv64_t) 0xb66d096c914504d2ULL },
+ { &fnv_test_str[74], (Fnv64_t) 0x404bf57ad8476736ULL },
+ { &fnv_test_str[75], (Fnv64_t) 0x887976bd815498d5ULL },
+ { &fnv_test_str[76], (Fnv64_t) 0x3afd7f02c2bf85c1ULL },
+ { &fnv_test_str[77], (Fnv64_t) 0xfc4476b0eb70175fULL },
+ { &fnv_test_str[78], (Fnv64_t) 0x186d2da00f77eccdULL },
+ { &fnv_test_str[79], (Fnv64_t) 0xf97140fa48c7400eULL },
+ { &fnv_test_str[80], (Fnv64_t) 0xa2b1cf49aa926d52ULL },
+ { &fnv_test_str[81], (Fnv64_t) 0x0690712cd6cf9475ULL },
+ { &fnv_test_str[82], (Fnv64_t) 0xf7045b3102b89064ULL },
+ { &fnv_test_str[83], (Fnv64_t) 0x74f762479f9d6aeaULL },
+ { &fnv_test_str[84], (Fnv64_t) 0x08326007b4eb2b9cULL },
+ { &fnv_test_str[85], (Fnv64_t) 0xd8c4c9186b9b1a14ULL },
+ { &fnv_test_str[86], (Fnv64_t) 0x7b495389bdbdd4c7ULL },
+ { &fnv_test_str[87], (Fnv64_t) 0x3b6dba0d69908e25ULL },
+ { &fnv_test_str[88], (Fnv64_t) 0xd6b2b17bf4b71261ULL },
+ { &fnv_test_str[89], (Fnv64_t) 0x447bfb7f98e615b5ULL },
+ { &fnv_test_str[90], (Fnv64_t) 0xd6b2b17bf4b71262ULL },
+ { &fnv_test_str[91], (Fnv64_t) 0x3bd2807f93fe1660ULL },
+ { &fnv_test_str[92], (Fnv64_t) 0xd6b2b17bf4b71263ULL },
+ { &fnv_test_str[93], (Fnv64_t) 0x3329057f8f16170bULL },
+ { &fnv_test_str[94], (Fnv64_t) 0xd6b2b17bf4b71264ULL },
+ { &fnv_test_str[95], (Fnv64_t) 0x2a7f8a7f8a2e19b6ULL },
+ { &fnv_test_str[96], (Fnv64_t) 0x23d3767e64b2f98aULL },
+ { &fnv_test_str[97], (Fnv64_t) 0xff768d7e4f9d86a4ULL },
+ { &fnv_test_str[98], (Fnv64_t) 0x23d3767e64b2f984ULL },
+ { &fnv_test_str[99], (Fnv64_t) 0xccd1837e334e4aa6ULL },
+ { &fnv_test_str[100], (Fnv64_t) 0x23d3767e64b2f99aULL },
+ { &fnv_test_str[101], (Fnv64_t) 0x7691fd7e028f6754ULL },
+ { &fnv_test_str[102], (Fnv64_t) 0x34ad3b1041204318ULL },
+ { &fnv_test_str[103], (Fnv64_t) 0xa29e749ea9d201c8ULL },
+ { &fnv_test_str[104], (Fnv64_t) 0x34ad3b104120431bULL },
+ { &fnv_test_str[105], (Fnv64_t) 0xa29e779ea9d206e1ULL },
+ { &fnv_test_str[106], (Fnv64_t) 0x34ad3b104120431aULL },
+ { &fnv_test_str[107], (Fnv64_t) 0xa29e769ea9d2052eULL },
+ { &fnv_test_str[108], (Fnv64_t) 0x02a17ebca4aa3497ULL },
+ { &fnv_test_str[109], (Fnv64_t) 0x229ef18bcd375c95ULL },
+ { &fnv_test_str[110], (Fnv64_t) 0x02a17dbca4aa32c8ULL },
+ { &fnv_test_str[111], (Fnv64_t) 0x229b6f8bcd3449d8ULL },
+ { &fnv_test_str[112], (Fnv64_t) 0x02a184bca4aa3ed5ULL },
+ { &fnv_test_str[113], (Fnv64_t) 0x22b3618bcd48c3efULL },
+ { &fnv_test_str[114], (Fnv64_t) 0x5c2c346706186f36ULL },
+ { &fnv_test_str[115], (Fnv64_t) 0xb78c410f5b84f8c2ULL },
+ { &fnv_test_str[116], (Fnv64_t) 0xed9478212b267395ULL },
+ { &fnv_test_str[117], (Fnv64_t) 0xd9bbb55c5256662fULL },
+ { &fnv_test_str[118], (Fnv64_t) 0x8c54f0203249438aULL },
+ { &fnv_test_str[119], (Fnv64_t) 0xbd9790b5727dc37eULL },
+ { &fnv_test_str[120], (Fnv64_t) 0xa64e5f36c9e2b0e3ULL },
+ { &fnv_test_str[121], (Fnv64_t) 0x8fd0680da3088a04ULL },
+ { &fnv_test_str[122], (Fnv64_t) 0x67aad32c078284ccULL },
+ { &fnv_test_str[123], (Fnv64_t) 0xb37d55d81c57b331ULL },
+ { &fnv_test_str[124], (Fnv64_t) 0x55ac0f3829057c43ULL },
+ { &fnv_test_str[125], (Fnv64_t) 0xcb27f4b8e1b6cc20ULL },
+ { &fnv_test_str[126], (Fnv64_t) 0x26caf88bcbef2d19ULL },
+ { &fnv_test_str[127], (Fnv64_t) 0x8e6e063b97e61b8fULL },
+ { &fnv_test_str[128], (Fnv64_t) 0xb42750f7f3b7c37eULL },
+ { &fnv_test_str[129], (Fnv64_t) 0xf3c6ba64cf7ca99bULL },
+ { &fnv_test_str[130], (Fnv64_t) 0xebfb69b427ea80feULL },
+ { &fnv_test_str[131], (Fnv64_t) 0x39b50c3ed970f46cULL },
+ { &fnv_test_str[132], (Fnv64_t) 0x5b9b177aa3eb3e8aULL },
+ { &fnv_test_str[133], (Fnv64_t) 0x6510063ecf4ec903ULL },
+ { &fnv_test_str[134], (Fnv64_t) 0x2b3bbd2c00797c7aULL },
+ { &fnv_test_str[135], (Fnv64_t) 0xf1d6204ff5cb4aa7ULL },
+ { &fnv_test_str[136], (Fnv64_t) 0x4836e27ccf099f38ULL },
+ { &fnv_test_str[137], (Fnv64_t) 0x82efbb0dd073b44dULL },
+ { &fnv_test_str[138], (Fnv64_t) 0x4a80c282ffd7d4c6ULL },
+ { &fnv_test_str[139], (Fnv64_t) 0x305d1a9c9ee43bdfULL },
+ { &fnv_test_str[140], (Fnv64_t) 0x15c366948ffc6997ULL },
+ { &fnv_test_str[141], (Fnv64_t) 0x80153ae218916e7bULL },
+ { &fnv_test_str[142], (Fnv64_t) 0xfa23e2bdf9e2a9e1ULL },
+ { &fnv_test_str[143], (Fnv64_t) 0xd47e8d8a2333c6deULL },
+ { &fnv_test_str[144], (Fnv64_t) 0x7e128095f688b056ULL },
+ { &fnv_test_str[145], (Fnv64_t) 0x2f5356890efcedabULL },
+ { &fnv_test_str[146], (Fnv64_t) 0x95c2b383014f55c5ULL },
+ { &fnv_test_str[147], (Fnv64_t) 0x4727a5339ce6070fULL },
+ { &fnv_test_str[148], (Fnv64_t) 0xb0555ecd575108e9ULL },
+ { &fnv_test_str[149], (Fnv64_t) 0x48d785770bb4af37ULL },
+ { &fnv_test_str[150], (Fnv64_t) 0x09d4701c12af02b1ULL },
+ { &fnv_test_str[151], (Fnv64_t) 0x79f031e78f3cf62eULL },
+ { &fnv_test_str[152], (Fnv64_t) 0x52a1ee85db1b5a94ULL },
+ { &fnv_test_str[153], (Fnv64_t) 0x6bd95b2eb37fa6b8ULL },
+ { &fnv_test_str[154], (Fnv64_t) 0x74971b7077aef85dULL },
+ { &fnv_test_str[155], (Fnv64_t) 0xb4e4fae2ffcc1aadULL },
+ { &fnv_test_str[156], (Fnv64_t) 0x2bd48bd898b8f63aULL },
+ { &fnv_test_str[157], (Fnv64_t) 0xe9966ac1556257f6ULL },
+ { &fnv_test_str[158], (Fnv64_t) 0x92a3d1cd078ba293ULL },
+ { &fnv_test_str[159], (Fnv64_t) 0xf81175a482e20ab8ULL },
+ { &fnv_test_str[160], (Fnv64_t) 0x5bbb3de722e73048ULL },
+ { &fnv_test_str[161], (Fnv64_t) 0x6b4f363492b9f2beULL },
+ { &fnv_test_str[162], (Fnv64_t) 0xc2d559df73d59875ULL },
+ { &fnv_test_str[163], (Fnv64_t) 0xf75f62284bc7a8c2ULL },
+ { &fnv_test_str[164], (Fnv64_t) 0xda8dd8e116a9f1ccULL },
+ { &fnv_test_str[165], (Fnv64_t) 0xbdc1e6ab76057885ULL },
+ { &fnv_test_str[166], (Fnv64_t) 0xfec6a4238a1224a0ULL },
+ { &fnv_test_str[167], (Fnv64_t) 0xc03f40f3223e290eULL },
+ { &fnv_test_str[168], (Fnv64_t) 0x1ed21673466ffda9ULL },
+ { &fnv_test_str[169], (Fnv64_t) 0xdf70f906bb0dd2afULL },
+ { &fnv_test_str[170], (Fnv64_t) 0xf3dcda369f2af666ULL },
+ { &fnv_test_str[171], (Fnv64_t) 0x9ebb11573cdcebdeULL },
+ { &fnv_test_str[172], (Fnv64_t) 0x81c72d9077fedca0ULL },
+ { &fnv_test_str[173], (Fnv64_t) 0x0ec074a31be5fb15ULL },
+ { &fnv_test_str[174], (Fnv64_t) 0x2a8b3280b6c48f20ULL },
+ { &fnv_test_str[175], (Fnv64_t) 0xfd31777513309344ULL },
+ { &fnv_test_str[176], (Fnv64_t) 0x194534a86ad006b6ULL },
+ { &fnv_test_str[177], (Fnv64_t) 0x3be6fdf46e0cfe12ULL },
+ { &fnv_test_str[178], (Fnv64_t) 0x017cc137a07eb057ULL },
+ { &fnv_test_str[179], (Fnv64_t) 0x9428fc6e7d26b54dULL },
+ { &fnv_test_str[180], (Fnv64_t) 0x9aaa2e3603ef8ad7ULL },
+ { &fnv_test_str[181], (Fnv64_t) 0x82c6d3f3a0ccdf7dULL },
+ { &fnv_test_str[182], (Fnv64_t) 0xc86eeea00cf09b65ULL },
+ { &fnv_test_str[183], (Fnv64_t) 0x705f8189dbb58299ULL },
+ { &fnv_test_str[184], (Fnv64_t) 0x415a7f554391ca69ULL },
+ { &fnv_test_str[185], (Fnv64_t) 0xcfe3d49fa2bdc555ULL },
+ { &fnv_test_str[186], (Fnv64_t) 0xf0f9c56039b25191ULL },
+ { &fnv_test_str[187], (Fnv64_t) 0x7075cb6abd1d32d9ULL },
+ { &fnv_test_str[188], (Fnv64_t) 0x43c94e2c8b277509ULL },
+ { &fnv_test_str[189], (Fnv64_t) 0x3cbfd4e4ea670359ULL },
+ { &fnv_test_str[190], (Fnv64_t) 0xc05887810f4d019dULL },
+ { &fnv_test_str[191], (Fnv64_t) 0x14468ff93ac22dc5ULL },
+ { &fnv_test_str[192], (Fnv64_t) 0xebed699589d99c05ULL },
+ { &fnv_test_str[193], (Fnv64_t) 0x6d99f6df321ca5d5ULL },
+ { &fnv_test_str[194], (Fnv64_t) 0x0cd410d08c36d625ULL },
+ { &fnv_test_str[195], (Fnv64_t) 0xef1b2a2c86831d35ULL },
+ { &fnv_test_str[196], (Fnv64_t) 0x3b349c4d69ee5f05ULL },
+ { &fnv_test_str[197], (Fnv64_t) 0x55248ce88f45f035ULL },
+ { &fnv_test_str[198], (Fnv64_t) 0xaa69ca6a18a4c885ULL },
+ { &fnv_test_str[199], (Fnv64_t) 0x1fe3fce62bd816b5ULL },
+ { &fnv_test_str[200], (Fnv64_t) 0x0289a488a8df69d9ULL },
+ { &fnv_test_str[201], (Fnv64_t) 0x15e96e1613df98b5ULL },
+ { &fnv_test_str[202], (Fnv64_t) 0xe6be57375ad89b99ULL },
+ { NULL, (Fnv64_t) 0 }
+};
+#else /* HAVE_64BIT_LONG_LONG */
+struct fnv1_64_test_vector fnv1_64_vector[] = {
+ { &fnv_test_str[0], (Fnv64_t) {0x84222325UL, 0xcbf29ce4UL} },
+ { &fnv_test_str[1], (Fnv64_t) {0x8601b7beUL, 0xaf63bd4cUL} },
+ { &fnv_test_str[2], (Fnv64_t) {0x8601b7bdUL, 0xaf63bd4cUL} },
+ { &fnv_test_str[3], (Fnv64_t) {0x8601b7bcUL, 0xaf63bd4cUL} },
+ { &fnv_test_str[4], (Fnv64_t) {0x8601b7bbUL, 0xaf63bd4cUL} },
+ { &fnv_test_str[5], (Fnv64_t) {0x8601b7baUL, 0xaf63bd4cUL} },
+ { &fnv_test_str[6], (Fnv64_t) {0x8601b7b9UL, 0xaf63bd4cUL} },
+ { &fnv_test_str[7], (Fnv64_t) {0xb4eb2f34UL, 0x08326207UL} },
+ { &fnv_test_str[8], (Fnv64_t) {0x6ba13533UL, 0xd8cbc718UL} },
+ { &fnv_test_str[9], (Fnv64_t) {0xe2ed65cbUL, 0x0378817eUL} },
+ { &fnv_test_str[10], (Fnv64_t) {0x9963f790UL, 0xd329d59bUL} },
+ { &fnv_test_str[11], (Fnv64_t) {0xa4dda9c2UL, 0x340d8765UL} },
+ { &fnv_test_str[12], (Fnv64_t) {0x8601b7dfUL, 0xaf63bd4cUL} },
+ { &fnv_test_str[13], (Fnv64_t) {0xb4eb37daUL, 0x08326707UL} },
+ { &fnv_test_str[14], (Fnv64_t) {0xb4eb3627UL, 0x08326607UL} },
+ { &fnv_test_str[15], (Fnv64_t) {0xb4eb3474UL, 0x08326507UL} },
+ { &fnv_test_str[16], (Fnv64_t) {0xb4eb32c1UL, 0x08326407UL} },
+ { &fnv_test_str[17], (Fnv64_t) {0xb4eb310eUL, 0x08326307UL} },
+ { &fnv_test_str[18], (Fnv64_t) {0xb4eb2f5bUL, 0x08326207UL} },
+ { &fnv_test_str[19], (Fnv64_t) {0x6ba1355cUL, 0xd8cbc718UL} },
+ { &fnv_test_str[20], (Fnv64_t) {0xe2ed65a9UL, 0x0378817eUL} },
+ { &fnv_test_str[21], (Fnv64_t) {0x9963f7f1UL, 0xd329d59bUL} },
+ { &fnv_test_str[22], (Fnv64_t) {0xa4dda9b0UL, 0x340d8765UL} },
+ { &fnv_test_str[23], (Fnv64_t) {0x24a774a6UL, 0x50a6d3b7UL} },
+ { &fnv_test_str[24], (Fnv64_t) {0xb4eb341cUL, 0x08326507UL} },
+ { &fnv_test_str[25], (Fnv64_t) {0x6ba98bfbUL, 0xd8d5c818UL} },
+ { &fnv_test_str[26], (Fnv64_t) {0xf118dbefUL, 0x1ccefc7eUL} },
+ { &fnv_test_str[27], (Fnv64_t) {0xad3db77aUL, 0x0c92fab3UL} },
+ { &fnv_test_str[28], (Fnv64_t) {0x5fdec421UL, 0x9b77794fUL} },
+ { &fnv_test_str[29], (Fnv64_t) {0xe7874433UL, 0x0ac742dfUL} },
+ { &fnv_test_str[30], (Fnv64_t) {0x6ad8e2deUL, 0xd7dad576UL} },
+ { &fnv_test_str[31], (Fnv64_t) {0x8e897f5bUL, 0xa1bb9637UL} },
+ { &fnv_test_str[32], (Fnv64_t) {0x33a367d2UL, 0x5b3f9b67UL} },
+ { &fnv_test_str[33], (Fnv64_t) {0xbea969f6UL, 0xb07ce25cUL} },
+ { &fnv_test_str[34], (Fnv64_t) {0xf9df0d6aUL, 0x8d9e9997UL} },
+ { &fnv_test_str[35], (Fnv64_t) {0x9603cb7bUL, 0x838c673dUL} },
+ { &fnv_test_str[36], (Fnv64_t) {0xe872c273UL, 0x8b5ee8a5UL} },
+ { &fnv_test_str[37], (Fnv64_t) {0xfb00690cUL, 0x4507c4e9UL} },
+ { &fnv_test_str[38], (Fnv64_t) {0x81b27f45UL, 0x4c9ca595UL} },
+ { &fnv_test_str[39], (Fnv64_t) {0x624e4235UL, 0xe0aca20bUL} },
+ { &fnv_test_str[40], (Fnv64_t) {0x6ba98b94UL, 0xd8d5c818UL} },
+ { &fnv_test_str[41], (Fnv64_t) {0xf118db81UL, 0x1ccefc7eUL} },
+ { &fnv_test_str[42], (Fnv64_t) {0xad3db71dUL, 0x0c92fab3UL} },
+ { &fnv_test_str[43], (Fnv64_t) {0x5fdec44eUL, 0x9b77794fUL} },
+ { &fnv_test_str[44], (Fnv64_t) {0xe7874413UL, 0x0ac742dfUL} },
+ { &fnv_test_str[45], (Fnv64_t) {0x6ad8e2a9UL, 0xd7dad576UL} },
+ { &fnv_test_str[46], (Fnv64_t) {0x8e897f3aUL, 0xa1bb9637UL} },
+ { &fnv_test_str[47], (Fnv64_t) {0x33a367a1UL, 0x5b3f9b67UL} },
+ { &fnv_test_str[48], (Fnv64_t) {0xbea969d6UL, 0xb07ce25cUL} },
+ { &fnv_test_str[49], (Fnv64_t) {0xf9df0d02UL, 0x8d9e9997UL} },
+ { &fnv_test_str[50], (Fnv64_t) {0x9603cb1eUL, 0x838c673dUL} },
+ { &fnv_test_str[51], (Fnv64_t) {0xe872c201UL, 0x8b5ee8a5UL} },
+ { &fnv_test_str[52], (Fnv64_t) {0xfb006969UL, 0x4507c4e9UL} },
+ { &fnv_test_str[53], (Fnv64_t) {0x81b27f64UL, 0x4c9ca595UL} },
+ { &fnv_test_str[54], (Fnv64_t) {0x624e423fUL, 0xe0aca20bUL} },
+ { &fnv_test_str[55], (Fnv64_t) {0x0afa800fUL, 0x13998e58UL} },
+ { &fnv_test_str[56], (Fnv64_t) {0xb4eb3401UL, 0x08326507UL} },
+ { &fnv_test_str[57], (Fnv64_t) {0x6ba95dc1UL, 0xd8d5ad18UL} },
+ { &fnv_test_str[58], (Fnv64_t) {0xf0ca4e97UL, 0x1c72e17eUL} },
+ { &fnv_test_str[59], (Fnv64_t) {0x27c38ae6UL, 0x2183c1b3UL} },
+ { &fnv_test_str[60], (Fnv64_t) {0x914504f2UL, 0xb66d096cUL} },
+ { &fnv_test_str[61], (Fnv64_t) {0xd8476757UL, 0x404bf57aUL} },
+ { &fnv_test_str[62], (Fnv64_t) {0x815498bbUL, 0x887976bdUL} },
+ { &fnv_test_str[63], (Fnv64_t) {0xc2bf85a5UL, 0x3afd7f02UL} },
+ { &fnv_test_str[64], (Fnv64_t) {0xeb70177fUL, 0xfc4476b0UL} },
+ { &fnv_test_str[65], (Fnv64_t) {0x0f77ecbaUL, 0x186d2da0UL} },
+ { &fnv_test_str[66], (Fnv64_t) {0x48c74066UL, 0xf97140faUL} },
+ { &fnv_test_str[67], (Fnv64_t) {0xaa926d37UL, 0xa2b1cf49UL} },
+ { &fnv_test_str[68], (Fnv64_t) {0xd6cf940cUL, 0x0690712cUL} },
+ { &fnv_test_str[69], (Fnv64_t) {0x02b8906eUL, 0xf7045b31UL} },
+ { &fnv_test_str[70], (Fnv64_t) {0x6ba95db3UL, 0xd8d5ad18UL} },
+ { &fnv_test_str[71], (Fnv64_t) {0xf0ca4ef3UL, 0x1c72e17eUL} },
+ { &fnv_test_str[72], (Fnv64_t) {0x27c38a95UL, 0x2183c1b3UL} },
+ { &fnv_test_str[73], (Fnv64_t) {0x914504d2UL, 0xb66d096cUL} },
+ { &fnv_test_str[74], (Fnv64_t) {0xd8476736UL, 0x404bf57aUL} },
+ { &fnv_test_str[75], (Fnv64_t) {0x815498d5UL, 0x887976bdUL} },
+ { &fnv_test_str[76], (Fnv64_t) {0xc2bf85c1UL, 0x3afd7f02UL} },
+ { &fnv_test_str[77], (Fnv64_t) {0xeb70175fUL, 0xfc4476b0UL} },
+ { &fnv_test_str[78], (Fnv64_t) {0x0f77eccdUL, 0x186d2da0UL} },
+ { &fnv_test_str[79], (Fnv64_t) {0x48c7400eUL, 0xf97140faUL} },
+ { &fnv_test_str[80], (Fnv64_t) {0xaa926d52UL, 0xa2b1cf49UL} },
+ { &fnv_test_str[81], (Fnv64_t) {0xd6cf9475UL, 0x0690712cUL} },
+ { &fnv_test_str[82], (Fnv64_t) {0x02b89064UL, 0xf7045b31UL} },
+ { &fnv_test_str[83], (Fnv64_t) {0x9f9d6aeaUL, 0x74f76247UL} },
+ { &fnv_test_str[84], (Fnv64_t) {0xb4eb2b9cUL, 0x08326007UL} },
+ { &fnv_test_str[85], (Fnv64_t) {0x6b9b1a14UL, 0xd8c4c918UL} },
+ { &fnv_test_str[86], (Fnv64_t) {0xbdbdd4c7UL, 0x7b495389UL} },
+ { &fnv_test_str[87], (Fnv64_t) {0x69908e25UL, 0x3b6dba0dUL} },
+ { &fnv_test_str[88], (Fnv64_t) {0xf4b71261UL, 0xd6b2b17bUL} },
+ { &fnv_test_str[89], (Fnv64_t) {0x98e615b5UL, 0x447bfb7fUL} },
+ { &fnv_test_str[90], (Fnv64_t) {0xf4b71262UL, 0xd6b2b17bUL} },
+ { &fnv_test_str[91], (Fnv64_t) {0x93fe1660UL, 0x3bd2807fUL} },
+ { &fnv_test_str[92], (Fnv64_t) {0xf4b71263UL, 0xd6b2b17bUL} },
+ { &fnv_test_str[93], (Fnv64_t) {0x8f16170bUL, 0x3329057fUL} },
+ { &fnv_test_str[94], (Fnv64_t) {0xf4b71264UL, 0xd6b2b17bUL} },
+ { &fnv_test_str[95], (Fnv64_t) {0x8a2e19b6UL, 0x2a7f8a7fUL} },
+ { &fnv_test_str[96], (Fnv64_t) {0x64b2f98aUL, 0x23d3767eUL} },
+ { &fnv_test_str[97], (Fnv64_t) {0x4f9d86a4UL, 0xff768d7eUL} },
+ { &fnv_test_str[98], (Fnv64_t) {0x64b2f984UL, 0x23d3767eUL} },
+ { &fnv_test_str[99], (Fnv64_t) {0x334e4aa6UL, 0xccd1837eUL} },
+ { &fnv_test_str[100], (Fnv64_t) {0x64b2f99aUL, 0x23d3767eUL} },
+ { &fnv_test_str[101], (Fnv64_t) {0x028f6754UL, 0x7691fd7eUL} },
+ { &fnv_test_str[102], (Fnv64_t) {0x41204318UL, 0x34ad3b10UL} },
+ { &fnv_test_str[103], (Fnv64_t) {0xa9d201c8UL, 0xa29e749eUL} },
+ { &fnv_test_str[104], (Fnv64_t) {0x4120431bUL, 0x34ad3b10UL} },
+ { &fnv_test_str[105], (Fnv64_t) {0xa9d206e1UL, 0xa29e779eUL} },
+ { &fnv_test_str[106], (Fnv64_t) {0x4120431aUL, 0x34ad3b10UL} },
+ { &fnv_test_str[107], (Fnv64_t) {0xa9d2052eUL, 0xa29e769eUL} },
+ { &fnv_test_str[108], (Fnv64_t) {0xa4aa3497UL, 0x02a17ebcUL} },
+ { &fnv_test_str[109], (Fnv64_t) {0xcd375c95UL, 0x229ef18bUL} },
+ { &fnv_test_str[110], (Fnv64_t) {0xa4aa32c8UL, 0x02a17dbcUL} },
+ { &fnv_test_str[111], (Fnv64_t) {0xcd3449d8UL, 0x229b6f8bUL} },
+ { &fnv_test_str[112], (Fnv64_t) {0xa4aa3ed5UL, 0x02a184bcUL} },
+ { &fnv_test_str[113], (Fnv64_t) {0xcd48c3efUL, 0x22b3618bUL} },
+ { &fnv_test_str[114], (Fnv64_t) {0x06186f36UL, 0x5c2c3467UL} },
+ { &fnv_test_str[115], (Fnv64_t) {0x5b84f8c2UL, 0xb78c410fUL} },
+ { &fnv_test_str[116], (Fnv64_t) {0x2b267395UL, 0xed947821UL} },
+ { &fnv_test_str[117], (Fnv64_t) {0x5256662fUL, 0xd9bbb55cUL} },
+ { &fnv_test_str[118], (Fnv64_t) {0x3249438aUL, 0x8c54f020UL} },
+ { &fnv_test_str[119], (Fnv64_t) {0x727dc37eUL, 0xbd9790b5UL} },
+ { &fnv_test_str[120], (Fnv64_t) {0xc9e2b0e3UL, 0xa64e5f36UL} },
+ { &fnv_test_str[121], (Fnv64_t) {0xa3088a04UL, 0x8fd0680dUL} },
+ { &fnv_test_str[122], (Fnv64_t) {0x078284ccUL, 0x67aad32cUL} },
+ { &fnv_test_str[123], (Fnv64_t) {0x1c57b331UL, 0xb37d55d8UL} },
+ { &fnv_test_str[124], (Fnv64_t) {0x29057c43UL, 0x55ac0f38UL} },
+ { &fnv_test_str[125], (Fnv64_t) {0xe1b6cc20UL, 0xcb27f4b8UL} },
+ { &fnv_test_str[126], (Fnv64_t) {0xcbef2d19UL, 0x26caf88bUL} },
+ { &fnv_test_str[127], (Fnv64_t) {0x97e61b8fUL, 0x8e6e063bUL} },
+ { &fnv_test_str[128], (Fnv64_t) {0xf3b7c37eUL, 0xb42750f7UL} },
+ { &fnv_test_str[129], (Fnv64_t) {0xcf7ca99bUL, 0xf3c6ba64UL} },
+ { &fnv_test_str[130], (Fnv64_t) {0x27ea80feUL, 0xebfb69b4UL} },
+ { &fnv_test_str[131], (Fnv64_t) {0xd970f46cUL, 0x39b50c3eUL} },
+ { &fnv_test_str[132], (Fnv64_t) {0xa3eb3e8aUL, 0x5b9b177aUL} },
+ { &fnv_test_str[133], (Fnv64_t) {0xcf4ec903UL, 0x6510063eUL} },
+ { &fnv_test_str[134], (Fnv64_t) {0x00797c7aUL, 0x2b3bbd2cUL} },
+ { &fnv_test_str[135], (Fnv64_t) {0xf5cb4aa7UL, 0xf1d6204fUL} },
+ { &fnv_test_str[136], (Fnv64_t) {0xcf099f38UL, 0x4836e27cUL} },
+ { &fnv_test_str[137], (Fnv64_t) {0xd073b44dUL, 0x82efbb0dUL} },
+ { &fnv_test_str[138], (Fnv64_t) {0xffd7d4c6UL, 0x4a80c282UL} },
+ { &fnv_test_str[139], (Fnv64_t) {0x9ee43bdfUL, 0x305d1a9cUL} },
+ { &fnv_test_str[140], (Fnv64_t) {0x8ffc6997UL, 0x15c36694UL} },
+ { &fnv_test_str[141], (Fnv64_t) {0x18916e7bUL, 0x80153ae2UL} },
+ { &fnv_test_str[142], (Fnv64_t) {0xf9e2a9e1UL, 0xfa23e2bdUL} },
+ { &fnv_test_str[143], (Fnv64_t) {0x2333c6deUL, 0xd47e8d8aUL} },
+ { &fnv_test_str[144], (Fnv64_t) {0xf688b056UL, 0x7e128095UL} },
+ { &fnv_test_str[145], (Fnv64_t) {0x0efcedabUL, 0x2f535689UL} },
+ { &fnv_test_str[146], (Fnv64_t) {0x014f55c5UL, 0x95c2b383UL} },
+ { &fnv_test_str[147], (Fnv64_t) {0x9ce6070fUL, 0x4727a533UL} },
+ { &fnv_test_str[148], (Fnv64_t) {0x575108e9UL, 0xb0555ecdUL} },
+ { &fnv_test_str[149], (Fnv64_t) {0x0bb4af37UL, 0x48d78577UL} },
+ { &fnv_test_str[150], (Fnv64_t) {0x12af02b1UL, 0x09d4701cUL} },
+ { &fnv_test_str[151], (Fnv64_t) {0x8f3cf62eUL, 0x79f031e7UL} },
+ { &fnv_test_str[152], (Fnv64_t) {0xdb1b5a94UL, 0x52a1ee85UL} },
+ { &fnv_test_str[153], (Fnv64_t) {0xb37fa6b8UL, 0x6bd95b2eUL} },
+ { &fnv_test_str[154], (Fnv64_t) {0x77aef85dUL, 0x74971b70UL} },
+ { &fnv_test_str[155], (Fnv64_t) {0xffcc1aadUL, 0xb4e4fae2UL} },
+ { &fnv_test_str[156], (Fnv64_t) {0x98b8f63aUL, 0x2bd48bd8UL} },
+ { &fnv_test_str[157], (Fnv64_t) {0x556257f6UL, 0xe9966ac1UL} },
+ { &fnv_test_str[158], (Fnv64_t) {0x078ba293UL, 0x92a3d1cdUL} },
+ { &fnv_test_str[159], (Fnv64_t) {0x82e20ab8UL, 0xf81175a4UL} },
+ { &fnv_test_str[160], (Fnv64_t) {0x22e73048UL, 0x5bbb3de7UL} },
+ { &fnv_test_str[161], (Fnv64_t) {0x92b9f2beUL, 0x6b4f3634UL} },
+ { &fnv_test_str[162], (Fnv64_t) {0x73d59875UL, 0xc2d559dfUL} },
+ { &fnv_test_str[163], (Fnv64_t) {0x4bc7a8c2UL, 0xf75f6228UL} },
+ { &fnv_test_str[164], (Fnv64_t) {0x16a9f1ccUL, 0xda8dd8e1UL} },
+ { &fnv_test_str[165], (Fnv64_t) {0x76057885UL, 0xbdc1e6abUL} },
+ { &fnv_test_str[166], (Fnv64_t) {0x8a1224a0UL, 0xfec6a423UL} },
+ { &fnv_test_str[167], (Fnv64_t) {0x223e290eUL, 0xc03f40f3UL} },
+ { &fnv_test_str[168], (Fnv64_t) {0x466ffda9UL, 0x1ed21673UL} },
+ { &fnv_test_str[169], (Fnv64_t) {0xbb0dd2afUL, 0xdf70f906UL} },
+ { &fnv_test_str[170], (Fnv64_t) {0x9f2af666UL, 0xf3dcda36UL} },
+ { &fnv_test_str[171], (Fnv64_t) {0x3cdcebdeUL, 0x9ebb1157UL} },
+ { &fnv_test_str[172], (Fnv64_t) {0x77fedca0UL, 0x81c72d90UL} },
+ { &fnv_test_str[173], (Fnv64_t) {0x1be5fb15UL, 0x0ec074a3UL} },
+ { &fnv_test_str[174], (Fnv64_t) {0xb6c48f20UL, 0x2a8b3280UL} },
+ { &fnv_test_str[175], (Fnv64_t) {0x13309344UL, 0xfd317775UL} },
+ { &fnv_test_str[176], (Fnv64_t) {0x6ad006b6UL, 0x194534a8UL} },
+ { &fnv_test_str[177], (Fnv64_t) {0x6e0cfe12UL, 0x3be6fdf4UL} },
+ { &fnv_test_str[178], (Fnv64_t) {0xa07eb057UL, 0x017cc137UL} },
+ { &fnv_test_str[179], (Fnv64_t) {0x7d26b54dUL, 0x9428fc6eUL} },
+ { &fnv_test_str[180], (Fnv64_t) {0x03ef8ad7UL, 0x9aaa2e36UL} },
+ { &fnv_test_str[181], (Fnv64_t) {0xa0ccdf7dUL, 0x82c6d3f3UL} },
+ { &fnv_test_str[182], (Fnv64_t) {0x0cf09b65UL, 0xc86eeea0UL} },
+ { &fnv_test_str[183], (Fnv64_t) {0xdbb58299UL, 0x705f8189UL} },
+ { &fnv_test_str[184], (Fnv64_t) {0x4391ca69UL, 0x415a7f55UL} },
+ { &fnv_test_str[185], (Fnv64_t) {0xa2bdc555UL, 0xcfe3d49fUL} },
+ { &fnv_test_str[186], (Fnv64_t) {0x39b25191UL, 0xf0f9c560UL} },
+ { &fnv_test_str[187], (Fnv64_t) {0xbd1d32d9UL, 0x7075cb6aUL} },
+ { &fnv_test_str[188], (Fnv64_t) {0x8b277509UL, 0x43c94e2cUL} },
+ { &fnv_test_str[189], (Fnv64_t) {0xea670359UL, 0x3cbfd4e4UL} },
+ { &fnv_test_str[190], (Fnv64_t) {0x0f4d019dUL, 0xc0588781UL} },
+ { &fnv_test_str[191], (Fnv64_t) {0x3ac22dc5UL, 0x14468ff9UL} },
+ { &fnv_test_str[192], (Fnv64_t) {0x89d99c05UL, 0xebed6995UL} },
+ { &fnv_test_str[193], (Fnv64_t) {0x321ca5d5UL, 0x6d99f6dfUL} },
+ { &fnv_test_str[194], (Fnv64_t) {0x8c36d625UL, 0x0cd410d0UL} },
+ { &fnv_test_str[195], (Fnv64_t) {0x86831d35UL, 0xef1b2a2cUL} },
+ { &fnv_test_str[196], (Fnv64_t) {0x69ee5f05UL, 0x3b349c4dUL} },
+ { &fnv_test_str[197], (Fnv64_t) {0x8f45f035UL, 0x55248ce8UL} },
+ { &fnv_test_str[198], (Fnv64_t) {0x18a4c885UL, 0xaa69ca6aUL} },
+ { &fnv_test_str[199], (Fnv64_t) {0x2bd816b5UL, 0x1fe3fce6UL} },
+ { &fnv_test_str[200], (Fnv64_t) {0xa8df69d9UL, 0x0289a488UL} },
+ { &fnv_test_str[201], (Fnv64_t) {0x13df98b5UL, 0x15e96e16UL} },
+ { &fnv_test_str[202], (Fnv64_t) {0x5ad89b99UL, 0xe6be5737UL} },
+ { NULL, (Fnv64_t) {0,0} }
+};
+#endif /* HAVE_64BIT_LONG_LONG */
+
+/* FNV-1a 64 bit test vectors */
+#if defined(HAVE_64BIT_LONG_LONG)
+struct fnv1a_64_test_vector fnv1a_64_vector[] = {
+ { &fnv_test_str[0], (Fnv64_t) 0xcbf29ce484222325ULL },
+ { &fnv_test_str[1], (Fnv64_t) 0xaf63dc4c8601ec8cULL },
+ { &fnv_test_str[2], (Fnv64_t) 0xaf63df4c8601f1a5ULL },
+ { &fnv_test_str[3], (Fnv64_t) 0xaf63de4c8601eff2ULL },
+ { &fnv_test_str[4], (Fnv64_t) 0xaf63d94c8601e773ULL },
+ { &fnv_test_str[5], (Fnv64_t) 0xaf63d84c8601e5c0ULL },
+ { &fnv_test_str[6], (Fnv64_t) 0xaf63db4c8601ead9ULL },
+ { &fnv_test_str[7], (Fnv64_t) 0x08985907b541d342ULL },
+ { &fnv_test_str[8], (Fnv64_t) 0xdcb27518fed9d577ULL },
+ { &fnv_test_str[9], (Fnv64_t) 0xdd120e790c2512afULL },
+ { &fnv_test_str[10], (Fnv64_t) 0xcac165afa2fef40aULL },
+ { &fnv_test_str[11], (Fnv64_t) 0x85944171f73967e8ULL },
+ { &fnv_test_str[12], (Fnv64_t) 0xaf63bd4c8601b7dfULL },
+ { &fnv_test_str[13], (Fnv64_t) 0x089be207b544f1e4ULL },
+ { &fnv_test_str[14], (Fnv64_t) 0x08a61407b54d9b5fULL },
+ { &fnv_test_str[15], (Fnv64_t) 0x08a2ae07b54ab836ULL },
+ { &fnv_test_str[16], (Fnv64_t) 0x0891b007b53c4869ULL },
+ { &fnv_test_str[17], (Fnv64_t) 0x088e4a07b5396540ULL },
+ { &fnv_test_str[18], (Fnv64_t) 0x08987c07b5420ebbULL },
+ { &fnv_test_str[19], (Fnv64_t) 0xdcb28a18fed9f926ULL },
+ { &fnv_test_str[20], (Fnv64_t) 0xdd1270790c25b935ULL },
+ { &fnv_test_str[21], (Fnv64_t) 0xcac146afa2febf5dULL },
+ { &fnv_test_str[22], (Fnv64_t) 0x8593d371f738acfeULL },
+ { &fnv_test_str[23], (Fnv64_t) 0x34531ca7168b8f38ULL },
+ { &fnv_test_str[24], (Fnv64_t) 0x08a25607b54a22aeULL },
+ { &fnv_test_str[25], (Fnv64_t) 0xf5faf0190cf90df3ULL },
+ { &fnv_test_str[26], (Fnv64_t) 0xf27397910b3221c7ULL },
+ { &fnv_test_str[27], (Fnv64_t) 0x2c8c2b76062f22e0ULL },
+ { &fnv_test_str[28], (Fnv64_t) 0xe150688c8217b8fdULL },
+ { &fnv_test_str[29], (Fnv64_t) 0xf35a83c10e4f1f87ULL },
+ { &fnv_test_str[30], (Fnv64_t) 0xd1edd10b507344d0ULL },
+ { &fnv_test_str[31], (Fnv64_t) 0x2a5ee739b3ddb8c3ULL },
+ { &fnv_test_str[32], (Fnv64_t) 0xdcfb970ca1c0d310ULL },
+ { &fnv_test_str[33], (Fnv64_t) 0x4054da76daa6da90ULL },
+ { &fnv_test_str[34], (Fnv64_t) 0xf70a2ff589861368ULL },
+ { &fnv_test_str[35], (Fnv64_t) 0x4c628b38aed25f17ULL },
+ { &fnv_test_str[36], (Fnv64_t) 0x9dd1f6510f78189fULL },
+ { &fnv_test_str[37], (Fnv64_t) 0xa3de85bd491270ceULL },
+ { &fnv_test_str[38], (Fnv64_t) 0x858e2fa32a55e61dULL },
+ { &fnv_test_str[39], (Fnv64_t) 0x46810940eff5f915ULL },
+ { &fnv_test_str[40], (Fnv64_t) 0xf5fadd190cf8edaaULL },
+ { &fnv_test_str[41], (Fnv64_t) 0xf273ed910b32b3e9ULL },
+ { &fnv_test_str[42], (Fnv64_t) 0x2c8c5276062f6525ULL },
+ { &fnv_test_str[43], (Fnv64_t) 0xe150b98c821842a0ULL },
+ { &fnv_test_str[44], (Fnv64_t) 0xf35aa3c10e4f55e7ULL },
+ { &fnv_test_str[45], (Fnv64_t) 0xd1ed680b50729265ULL },
+ { &fnv_test_str[46], (Fnv64_t) 0x2a5f0639b3dded70ULL },
+ { &fnv_test_str[47], (Fnv64_t) 0xdcfbaa0ca1c0f359ULL },
+ { &fnv_test_str[48], (Fnv64_t) 0x4054ba76daa6a430ULL },
+ { &fnv_test_str[49], (Fnv64_t) 0xf709c7f5898562b0ULL },
+ { &fnv_test_str[50], (Fnv64_t) 0x4c62e638aed2f9b8ULL },
+ { &fnv_test_str[51], (Fnv64_t) 0x9dd1a8510f779415ULL },
+ { &fnv_test_str[52], (Fnv64_t) 0xa3de2abd4911d62dULL },
+ { &fnv_test_str[53], (Fnv64_t) 0x858e0ea32a55ae0aULL },
+ { &fnv_test_str[54], (Fnv64_t) 0x46810f40eff60347ULL },
+ { &fnv_test_str[55], (Fnv64_t) 0xc33bce57bef63eafULL },
+ { &fnv_test_str[56], (Fnv64_t) 0x08a24307b54a0265ULL },
+ { &fnv_test_str[57], (Fnv64_t) 0xf5b9fd190cc18d15ULL },
+ { &fnv_test_str[58], (Fnv64_t) 0x4c968290ace35703ULL },
+ { &fnv_test_str[59], (Fnv64_t) 0x07174bd5c64d9350ULL },
+ { &fnv_test_str[60], (Fnv64_t) 0x5a294c3ff5d18750ULL },
+ { &fnv_test_str[61], (Fnv64_t) 0x05b3c1aeb308b843ULL },
+ { &fnv_test_str[62], (Fnv64_t) 0xb92a48da37d0f477ULL },
+ { &fnv_test_str[63], (Fnv64_t) 0x73cdddccd80ebc49ULL },
+ { &fnv_test_str[64], (Fnv64_t) 0xd58c4c13210a266bULL },
+ { &fnv_test_str[65], (Fnv64_t) 0xe78b6081243ec194ULL },
+ { &fnv_test_str[66], (Fnv64_t) 0xb096f77096a39f34ULL },
+ { &fnv_test_str[67], (Fnv64_t) 0xb425c54ff807b6a3ULL },
+ { &fnv_test_str[68], (Fnv64_t) 0x23e520e2751bb46eULL },
+ { &fnv_test_str[69], (Fnv64_t) 0x1a0b44ccfe1385ecULL },
+ { &fnv_test_str[70], (Fnv64_t) 0xf5ba4b190cc2119fULL },
+ { &fnv_test_str[71], (Fnv64_t) 0x4c962690ace2baafULL },
+ { &fnv_test_str[72], (Fnv64_t) 0x0716ded5c64cda19ULL },
+ { &fnv_test_str[73], (Fnv64_t) 0x5a292c3ff5d150f0ULL },
+ { &fnv_test_str[74], (Fnv64_t) 0x05b3e0aeb308ecf0ULL },
+ { &fnv_test_str[75], (Fnv64_t) 0xb92a5eda37d119d9ULL },
+ { &fnv_test_str[76], (Fnv64_t) 0x73ce41ccd80f6635ULL },
+ { &fnv_test_str[77], (Fnv64_t) 0xd58c2c132109f00bULL },
+ { &fnv_test_str[78], (Fnv64_t) 0xe78baf81243f47d1ULL },
+ { &fnv_test_str[79], (Fnv64_t) 0xb0968f7096a2ee7cULL },
+ { &fnv_test_str[80], (Fnv64_t) 0xb425a84ff807855cULL },
+ { &fnv_test_str[81], (Fnv64_t) 0x23e4e9e2751b56f9ULL },
+ { &fnv_test_str[82], (Fnv64_t) 0x1a0b4eccfe1396eaULL },
+ { &fnv_test_str[83], (Fnv64_t) 0x54abd453bb2c9004ULL },
+ { &fnv_test_str[84], (Fnv64_t) 0x08ba5f07b55ec3daULL },
+ { &fnv_test_str[85], (Fnv64_t) 0x337354193006cb6eULL },
+ { &fnv_test_str[86], (Fnv64_t) 0xa430d84680aabd0bULL },
+ { &fnv_test_str[87], (Fnv64_t) 0xa9bc8acca21f39b1ULL },
+ { &fnv_test_str[88], (Fnv64_t) 0x6961196491cc682dULL },
+ { &fnv_test_str[89], (Fnv64_t) 0xad2bb1774799dfe9ULL },
+ { &fnv_test_str[90], (Fnv64_t) 0x6961166491cc6314ULL },
+ { &fnv_test_str[91], (Fnv64_t) 0x8d1bb3904a3b1236ULL },
+ { &fnv_test_str[92], (Fnv64_t) 0x6961176491cc64c7ULL },
+ { &fnv_test_str[93], (Fnv64_t) 0xed205d87f40434c7ULL },
+ { &fnv_test_str[94], (Fnv64_t) 0x6961146491cc5faeULL },
+ { &fnv_test_str[95], (Fnv64_t) 0xcd3baf5e44f8ad9cULL },
+ { &fnv_test_str[96], (Fnv64_t) 0xe3b36596127cd6d8ULL },
+ { &fnv_test_str[97], (Fnv64_t) 0xf77f1072c8e8a646ULL },
+ { &fnv_test_str[98], (Fnv64_t) 0xe3b36396127cd372ULL },
+ { &fnv_test_str[99], (Fnv64_t) 0x6067dce9932ad458ULL },
+ { &fnv_test_str[100], (Fnv64_t) 0xe3b37596127cf208ULL },
+ { &fnv_test_str[101], (Fnv64_t) 0x4b7b10fa9fe83936ULL },
+ { &fnv_test_str[102], (Fnv64_t) 0xaabafe7104d914beULL },
+ { &fnv_test_str[103], (Fnv64_t) 0xf4d3180b3cde3edaULL },
+ { &fnv_test_str[104], (Fnv64_t) 0xaabafd7104d9130bULL },
+ { &fnv_test_str[105], (Fnv64_t) 0xf4cfb20b3cdb5bb1ULL },
+ { &fnv_test_str[106], (Fnv64_t) 0xaabafc7104d91158ULL },
+ { &fnv_test_str[107], (Fnv64_t) 0xf4cc4c0b3cd87888ULL },
+ { &fnv_test_str[108], (Fnv64_t) 0xe729bac5d2a8d3a7ULL },
+ { &fnv_test_str[109], (Fnv64_t) 0x74bc0524f4dfa4c5ULL },
+ { &fnv_test_str[110], (Fnv64_t) 0xe72630c5d2a5b352ULL },
+ { &fnv_test_str[111], (Fnv64_t) 0x6b983224ef8fb456ULL },
+ { &fnv_test_str[112], (Fnv64_t) 0xe73042c5d2ae266dULL },
+ { &fnv_test_str[113], (Fnv64_t) 0x8527e324fdeb4b37ULL },
+ { &fnv_test_str[114], (Fnv64_t) 0x0a83c86fee952abcULL },
+ { &fnv_test_str[115], (Fnv64_t) 0x7318523267779d74ULL },
+ { &fnv_test_str[116], (Fnv64_t) 0x3e66d3d56b8caca1ULL },
+ { &fnv_test_str[117], (Fnv64_t) 0x956694a5c0095593ULL },
+ { &fnv_test_str[118], (Fnv64_t) 0xcac54572bb1a6fc8ULL },
+ { &fnv_test_str[119], (Fnv64_t) 0xa7a4c9f3edebf0d8ULL },
+ { &fnv_test_str[120], (Fnv64_t) 0x7829851fac17b143ULL },
+ { &fnv_test_str[121], (Fnv64_t) 0x2c8f4c9af81bcf06ULL },
+ { &fnv_test_str[122], (Fnv64_t) 0xd34e31539740c732ULL },
+ { &fnv_test_str[123], (Fnv64_t) 0x3605a2ac253d2db1ULL },
+ { &fnv_test_str[124], (Fnv64_t) 0x08c11b8346f4a3c3ULL },
+ { &fnv_test_str[125], (Fnv64_t) 0x6be396289ce8a6daULL },
+ { &fnv_test_str[126], (Fnv64_t) 0xd9b957fb7fe794c5ULL },
+ { &fnv_test_str[127], (Fnv64_t) 0x05be33da04560a93ULL },
+ { &fnv_test_str[128], (Fnv64_t) 0x0957f1577ba9747cULL },
+ { &fnv_test_str[129], (Fnv64_t) 0xda2cc3acc24fba57ULL },
+ { &fnv_test_str[130], (Fnv64_t) 0x74136f185b29e7f0ULL },
+ { &fnv_test_str[131], (Fnv64_t) 0xb2f2b4590edb93b2ULL },
+ { &fnv_test_str[132], (Fnv64_t) 0xb3608fce8b86ae04ULL },
+ { &fnv_test_str[133], (Fnv64_t) 0x4a3a865079359063ULL },
+ { &fnv_test_str[134], (Fnv64_t) 0x5b3a7ef496880a50ULL },
+ { &fnv_test_str[135], (Fnv64_t) 0x48fae3163854c23bULL },
+ { &fnv_test_str[136], (Fnv64_t) 0x07aaa640476e0b9aULL },
+ { &fnv_test_str[137], (Fnv64_t) 0x2f653656383a687dULL },
+ { &fnv_test_str[138], (Fnv64_t) 0xa1031f8e7599d79cULL },
+ { &fnv_test_str[139], (Fnv64_t) 0xa31908178ff92477ULL },
+ { &fnv_test_str[140], (Fnv64_t) 0x097edf3c14c3fb83ULL },
+ { &fnv_test_str[141], (Fnv64_t) 0xb51ca83feaa0971bULL },
+ { &fnv_test_str[142], (Fnv64_t) 0xdd3c0d96d784f2e9ULL },
+ { &fnv_test_str[143], (Fnv64_t) 0x86cd26a9ea767d78ULL },
+ { &fnv_test_str[144], (Fnv64_t) 0xe6b215ff54a30c18ULL },
+ { &fnv_test_str[145], (Fnv64_t) 0xec5b06a1c5531093ULL },
+ { &fnv_test_str[146], (Fnv64_t) 0x45665a929f9ec5e5ULL },
+ { &fnv_test_str[147], (Fnv64_t) 0x8c7609b4a9f10907ULL },
+ { &fnv_test_str[148], (Fnv64_t) 0x89aac3a491f0d729ULL },
+ { &fnv_test_str[149], (Fnv64_t) 0x32ce6b26e0f4a403ULL },
+ { &fnv_test_str[150], (Fnv64_t) 0x614ab44e02b53e01ULL },
+ { &fnv_test_str[151], (Fnv64_t) 0xfa6472eb6eef3290ULL },
+ { &fnv_test_str[152], (Fnv64_t) 0x9e5d75eb1948eb6aULL },
+ { &fnv_test_str[153], (Fnv64_t) 0xb6d12ad4a8671852ULL },
+ { &fnv_test_str[154], (Fnv64_t) 0x88826f56eba07af1ULL },
+ { &fnv_test_str[155], (Fnv64_t) 0x44535bf2645bc0fdULL },
+ { &fnv_test_str[156], (Fnv64_t) 0x169388ffc21e3728ULL },
+ { &fnv_test_str[157], (Fnv64_t) 0xf68aac9e396d8224ULL },
+ { &fnv_test_str[158], (Fnv64_t) 0x8e87d7e7472b3883ULL },
+ { &fnv_test_str[159], (Fnv64_t) 0x295c26caa8b423deULL },
+ { &fnv_test_str[160], (Fnv64_t) 0x322c814292e72176ULL },
+ { &fnv_test_str[161], (Fnv64_t) 0x8a06550eb8af7268ULL },
+ { &fnv_test_str[162], (Fnv64_t) 0xef86d60e661bcf71ULL },
+ { &fnv_test_str[163], (Fnv64_t) 0x9e5426c87f30ee54ULL },
+ { &fnv_test_str[164], (Fnv64_t) 0xf1ea8aa826fd047eULL },
+ { &fnv_test_str[165], (Fnv64_t) 0x0babaf9a642cb769ULL },
+ { &fnv_test_str[166], (Fnv64_t) 0x4b3341d4068d012eULL },
+ { &fnv_test_str[167], (Fnv64_t) 0xd15605cbc30a335cULL },
+ { &fnv_test_str[168], (Fnv64_t) 0x5b21060aed8412e5ULL },
+ { &fnv_test_str[169], (Fnv64_t) 0x45e2cda1ce6f4227ULL },
+ { &fnv_test_str[170], (Fnv64_t) 0x50ae3745033ad7d4ULL },
+ { &fnv_test_str[171], (Fnv64_t) 0xaa4588ced46bf414ULL },
+ { &fnv_test_str[172], (Fnv64_t) 0xc1b0056c4a95467eULL },
+ { &fnv_test_str[173], (Fnv64_t) 0x56576a71de8b4089ULL },
+ { &fnv_test_str[174], (Fnv64_t) 0xbf20965fa6dc927eULL },
+ { &fnv_test_str[175], (Fnv64_t) 0x569f8383c2040882ULL },
+ { &fnv_test_str[176], (Fnv64_t) 0xe1e772fba08feca0ULL },
+ { &fnv_test_str[177], (Fnv64_t) 0x4ced94af97138ac4ULL },
+ { &fnv_test_str[178], (Fnv64_t) 0xc4112ffb337a82fbULL },
+ { &fnv_test_str[179], (Fnv64_t) 0xd64a4fd41de38b7dULL },
+ { &fnv_test_str[180], (Fnv64_t) 0x4cfc32329edebcbbULL },
+ { &fnv_test_str[181], (Fnv64_t) 0x0803564445050395ULL },
+ { &fnv_test_str[182], (Fnv64_t) 0xaa1574ecf4642ffdULL },
+ { &fnv_test_str[183], (Fnv64_t) 0x694bc4e54cc315f9ULL },
+ { &fnv_test_str[184], (Fnv64_t) 0xa3d7cb273b011721ULL },
+ { &fnv_test_str[185], (Fnv64_t) 0x577c2f8b6115bfa5ULL },
+ { &fnv_test_str[186], (Fnv64_t) 0xb7ec8c1a769fb4c1ULL },
+ { &fnv_test_str[187], (Fnv64_t) 0x5d5cfce63359ab19ULL },
+ { &fnv_test_str[188], (Fnv64_t) 0x33b96c3cd65b5f71ULL },
+ { &fnv_test_str[189], (Fnv64_t) 0xd845097780602bb9ULL },
+ { &fnv_test_str[190], (Fnv64_t) 0x84d47645d02da3d5ULL },
+ { &fnv_test_str[191], (Fnv64_t) 0x83544f33b58773a5ULL },
+ { &fnv_test_str[192], (Fnv64_t) 0x9175cbb2160836c5ULL },
+ { &fnv_test_str[193], (Fnv64_t) 0xc71b3bc175e72bc5ULL },
+ { &fnv_test_str[194], (Fnv64_t) 0x636806ac222ec985ULL },
+ { &fnv_test_str[195], (Fnv64_t) 0xb6ef0e6950f52ed5ULL },
+ { &fnv_test_str[196], (Fnv64_t) 0xead3d8a0f3dfdaa5ULL },
+ { &fnv_test_str[197], (Fnv64_t) 0x922908fe9a861ba5ULL },
+ { &fnv_test_str[198], (Fnv64_t) 0x6d4821de275fd5c5ULL },
+ { &fnv_test_str[199], (Fnv64_t) 0x1fe3fce62bd816b5ULL },
+ { &fnv_test_str[200], (Fnv64_t) 0xc23e9fccd6f70591ULL },
+ { &fnv_test_str[201], (Fnv64_t) 0xc1af12bdfe16b5b5ULL },
+ { &fnv_test_str[202], (Fnv64_t) 0x39e9f18f2f85e221ULL },
+ { NULL, (Fnv64_t) 0 }
+};
+#else /* HAVE_64BIT_LONG_LONG */
+struct fnv1a_64_test_vector fnv1a_64_vector[] = {
+ { &fnv_test_str[0], (Fnv64_t) {0x84222325UL, 0xcbf29ce4UL} },
+ { &fnv_test_str[1], (Fnv64_t) {0x8601ec8cUL, 0xaf63dc4cUL} },
+ { &fnv_test_str[2], (Fnv64_t) {0x8601f1a5UL, 0xaf63df4cUL} },
+ { &fnv_test_str[3], (Fnv64_t) {0x8601eff2UL, 0xaf63de4cUL} },
+ { &fnv_test_str[4], (Fnv64_t) {0x8601e773UL, 0xaf63d94cUL} },
+ { &fnv_test_str[5], (Fnv64_t) {0x8601e5c0UL, 0xaf63d84cUL} },
+ { &fnv_test_str[6], (Fnv64_t) {0x8601ead9UL, 0xaf63db4cUL} },
+ { &fnv_test_str[7], (Fnv64_t) {0xb541d342UL, 0x08985907UL} },
+ { &fnv_test_str[8], (Fnv64_t) {0xfed9d577UL, 0xdcb27518UL} },
+ { &fnv_test_str[9], (Fnv64_t) {0x0c2512afUL, 0xdd120e79UL} },
+ { &fnv_test_str[10], (Fnv64_t) {0xa2fef40aUL, 0xcac165afUL} },
+ { &fnv_test_str[11], (Fnv64_t) {0xf73967e8UL, 0x85944171UL} },
+ { &fnv_test_str[12], (Fnv64_t) {0x8601b7dfUL, 0xaf63bd4cUL} },
+ { &fnv_test_str[13], (Fnv64_t) {0xb544f1e4UL, 0x089be207UL} },
+ { &fnv_test_str[14], (Fnv64_t) {0xb54d9b5fUL, 0x08a61407UL} },
+ { &fnv_test_str[15], (Fnv64_t) {0xb54ab836UL, 0x08a2ae07UL} },
+ { &fnv_test_str[16], (Fnv64_t) {0xb53c4869UL, 0x0891b007UL} },
+ { &fnv_test_str[17], (Fnv64_t) {0xb5396540UL, 0x088e4a07UL} },
+ { &fnv_test_str[18], (Fnv64_t) {0xb5420ebbUL, 0x08987c07UL} },
+ { &fnv_test_str[19], (Fnv64_t) {0xfed9f926UL, 0xdcb28a18UL} },
+ { &fnv_test_str[20], (Fnv64_t) {0x0c25b935UL, 0xdd127079UL} },
+ { &fnv_test_str[21], (Fnv64_t) {0xa2febf5dUL, 0xcac146afUL} },
+ { &fnv_test_str[22], (Fnv64_t) {0xf738acfeUL, 0x8593d371UL} },
+ { &fnv_test_str[23], (Fnv64_t) {0x168b8f38UL, 0x34531ca7UL} },
+ { &fnv_test_str[24], (Fnv64_t) {0xb54a22aeUL, 0x08a25607UL} },
+ { &fnv_test_str[25], (Fnv64_t) {0x0cf90df3UL, 0xf5faf019UL} },
+ { &fnv_test_str[26], (Fnv64_t) {0x0b3221c7UL, 0xf2739791UL} },
+ { &fnv_test_str[27], (Fnv64_t) {0x062f22e0UL, 0x2c8c2b76UL} },
+ { &fnv_test_str[28], (Fnv64_t) {0x8217b8fdUL, 0xe150688cUL} },
+ { &fnv_test_str[29], (Fnv64_t) {0x0e4f1f87UL, 0xf35a83c1UL} },
+ { &fnv_test_str[30], (Fnv64_t) {0x507344d0UL, 0xd1edd10bUL} },
+ { &fnv_test_str[31], (Fnv64_t) {0xb3ddb8c3UL, 0x2a5ee739UL} },
+ { &fnv_test_str[32], (Fnv64_t) {0xa1c0d310UL, 0xdcfb970cUL} },
+ { &fnv_test_str[33], (Fnv64_t) {0xdaa6da90UL, 0x4054da76UL} },
+ { &fnv_test_str[34], (Fnv64_t) {0x89861368UL, 0xf70a2ff5UL} },
+ { &fnv_test_str[35], (Fnv64_t) {0xaed25f17UL, 0x4c628b38UL} },
+ { &fnv_test_str[36], (Fnv64_t) {0x0f78189fUL, 0x9dd1f651UL} },
+ { &fnv_test_str[37], (Fnv64_t) {0x491270ceUL, 0xa3de85bdUL} },
+ { &fnv_test_str[38], (Fnv64_t) {0x2a55e61dUL, 0x858e2fa3UL} },
+ { &fnv_test_str[39], (Fnv64_t) {0xeff5f915UL, 0x46810940UL} },
+ { &fnv_test_str[40], (Fnv64_t) {0x0cf8edaaUL, 0xf5fadd19UL} },
+ { &fnv_test_str[41], (Fnv64_t) {0x0b32b3e9UL, 0xf273ed91UL} },
+ { &fnv_test_str[42], (Fnv64_t) {0x062f6525UL, 0x2c8c5276UL} },
+ { &fnv_test_str[43], (Fnv64_t) {0x821842a0UL, 0xe150b98cUL} },
+ { &fnv_test_str[44], (Fnv64_t) {0x0e4f55e7UL, 0xf35aa3c1UL} },
+ { &fnv_test_str[45], (Fnv64_t) {0x50729265UL, 0xd1ed680bUL} },
+ { &fnv_test_str[46], (Fnv64_t) {0xb3dded70UL, 0x2a5f0639UL} },
+ { &fnv_test_str[47], (Fnv64_t) {0xa1c0f359UL, 0xdcfbaa0cUL} },
+ { &fnv_test_str[48], (Fnv64_t) {0xdaa6a430UL, 0x4054ba76UL} },
+ { &fnv_test_str[49], (Fnv64_t) {0x898562b0UL, 0xf709c7f5UL} },
+ { &fnv_test_str[50], (Fnv64_t) {0xaed2f9b8UL, 0x4c62e638UL} },
+ { &fnv_test_str[51], (Fnv64_t) {0x0f779415UL, 0x9dd1a851UL} },
+ { &fnv_test_str[52], (Fnv64_t) {0x4911d62dUL, 0xa3de2abdUL} },
+ { &fnv_test_str[53], (Fnv64_t) {0x2a55ae0aUL, 0x858e0ea3UL} },
+ { &fnv_test_str[54], (Fnv64_t) {0xeff60347UL, 0x46810f40UL} },
+ { &fnv_test_str[55], (Fnv64_t) {0xbef63eafUL, 0xc33bce57UL} },
+ { &fnv_test_str[56], (Fnv64_t) {0xb54a0265UL, 0x08a24307UL} },
+ { &fnv_test_str[57], (Fnv64_t) {0x0cc18d15UL, 0xf5b9fd19UL} },
+ { &fnv_test_str[58], (Fnv64_t) {0xace35703UL, 0x4c968290UL} },
+ { &fnv_test_str[59], (Fnv64_t) {0xc64d9350UL, 0x07174bd5UL} },
+ { &fnv_test_str[60], (Fnv64_t) {0xf5d18750UL, 0x5a294c3fUL} },
+ { &fnv_test_str[61], (Fnv64_t) {0xb308b843UL, 0x05b3c1aeUL} },
+ { &fnv_test_str[62], (Fnv64_t) {0x37d0f477UL, 0xb92a48daUL} },
+ { &fnv_test_str[63], (Fnv64_t) {0xd80ebc49UL, 0x73cdddccUL} },
+ { &fnv_test_str[64], (Fnv64_t) {0x210a266bUL, 0xd58c4c13UL} },
+ { &fnv_test_str[65], (Fnv64_t) {0x243ec194UL, 0xe78b6081UL} },
+ { &fnv_test_str[66], (Fnv64_t) {0x96a39f34UL, 0xb096f770UL} },
+ { &fnv_test_str[67], (Fnv64_t) {0xf807b6a3UL, 0xb425c54fUL} },
+ { &fnv_test_str[68], (Fnv64_t) {0x751bb46eUL, 0x23e520e2UL} },
+ { &fnv_test_str[69], (Fnv64_t) {0xfe1385ecUL, 0x1a0b44ccUL} },
+ { &fnv_test_str[70], (Fnv64_t) {0x0cc2119fUL, 0xf5ba4b19UL} },
+ { &fnv_test_str[71], (Fnv64_t) {0xace2baafUL, 0x4c962690UL} },
+ { &fnv_test_str[72], (Fnv64_t) {0xc64cda19UL, 0x0716ded5UL} },
+ { &fnv_test_str[73], (Fnv64_t) {0xf5d150f0UL, 0x5a292c3fUL} },
+ { &fnv_test_str[74], (Fnv64_t) {0xb308ecf0UL, 0x05b3e0aeUL} },
+ { &fnv_test_str[75], (Fnv64_t) {0x37d119d9UL, 0xb92a5edaUL} },
+ { &fnv_test_str[76], (Fnv64_t) {0xd80f6635UL, 0x73ce41ccUL} },
+ { &fnv_test_str[77], (Fnv64_t) {0x2109f00bUL, 0xd58c2c13UL} },
+ { &fnv_test_str[78], (Fnv64_t) {0x243f47d1UL, 0xe78baf81UL} },
+ { &fnv_test_str[79], (Fnv64_t) {0x96a2ee7cUL, 0xb0968f70UL} },
+ { &fnv_test_str[80], (Fnv64_t) {0xf807855cUL, 0xb425a84fUL} },
+ { &fnv_test_str[81], (Fnv64_t) {0x751b56f9UL, 0x23e4e9e2UL} },
+ { &fnv_test_str[82], (Fnv64_t) {0xfe1396eaUL, 0x1a0b4eccUL} },
+ { &fnv_test_str[83], (Fnv64_t) {0xbb2c9004UL, 0x54abd453UL} },
+ { &fnv_test_str[84], (Fnv64_t) {0xb55ec3daUL, 0x08ba5f07UL} },
+ { &fnv_test_str[85], (Fnv64_t) {0x3006cb6eUL, 0x33735419UL} },
+ { &fnv_test_str[86], (Fnv64_t) {0x80aabd0bUL, 0xa430d846UL} },
+ { &fnv_test_str[87], (Fnv64_t) {0xa21f39b1UL, 0xa9bc8accUL} },
+ { &fnv_test_str[88], (Fnv64_t) {0x91cc682dUL, 0x69611964UL} },
+ { &fnv_test_str[89], (Fnv64_t) {0x4799dfe9UL, 0xad2bb177UL} },
+ { &fnv_test_str[90], (Fnv64_t) {0x91cc6314UL, 0x69611664UL} },
+ { &fnv_test_str[91], (Fnv64_t) {0x4a3b1236UL, 0x8d1bb390UL} },
+ { &fnv_test_str[92], (Fnv64_t) {0x91cc64c7UL, 0x69611764UL} },
+ { &fnv_test_str[93], (Fnv64_t) {0xf40434c7UL, 0xed205d87UL} },
+ { &fnv_test_str[94], (Fnv64_t) {0x91cc5faeUL, 0x69611464UL} },
+ { &fnv_test_str[95], (Fnv64_t) {0x44f8ad9cUL, 0xcd3baf5eUL} },
+ { &fnv_test_str[96], (Fnv64_t) {0x127cd6d8UL, 0xe3b36596UL} },
+ { &fnv_test_str[97], (Fnv64_t) {0xc8e8a646UL, 0xf77f1072UL} },
+ { &fnv_test_str[98], (Fnv64_t) {0x127cd372UL, 0xe3b36396UL} },
+ { &fnv_test_str[99], (Fnv64_t) {0x932ad458UL, 0x6067dce9UL} },
+ { &fnv_test_str[100], (Fnv64_t) {0x127cf208UL, 0xe3b37596UL} },
+ { &fnv_test_str[101], (Fnv64_t) {0x9fe83936UL, 0x4b7b10faUL} },
+ { &fnv_test_str[102], (Fnv64_t) {0x04d914beUL, 0xaabafe71UL} },
+ { &fnv_test_str[103], (Fnv64_t) {0x3cde3edaUL, 0xf4d3180bUL} },
+ { &fnv_test_str[104], (Fnv64_t) {0x04d9130bUL, 0xaabafd71UL} },
+ { &fnv_test_str[105], (Fnv64_t) {0x3cdb5bb1UL, 0xf4cfb20bUL} },
+ { &fnv_test_str[106], (Fnv64_t) {0x04d91158UL, 0xaabafc71UL} },
+ { &fnv_test_str[107], (Fnv64_t) {0x3cd87888UL, 0xf4cc4c0bUL} },
+ { &fnv_test_str[108], (Fnv64_t) {0xd2a8d3a7UL, 0xe729bac5UL} },
+ { &fnv_test_str[109], (Fnv64_t) {0xf4dfa4c5UL, 0x74bc0524UL} },
+ { &fnv_test_str[110], (Fnv64_t) {0xd2a5b352UL, 0xe72630c5UL} },
+ { &fnv_test_str[111], (Fnv64_t) {0xef8fb456UL, 0x6b983224UL} },
+ { &fnv_test_str[112], (Fnv64_t) {0xd2ae266dUL, 0xe73042c5UL} },
+ { &fnv_test_str[113], (Fnv64_t) {0xfdeb4b37UL, 0x8527e324UL} },
+ { &fnv_test_str[114], (Fnv64_t) {0xee952abcUL, 0x0a83c86fUL} },
+ { &fnv_test_str[115], (Fnv64_t) {0x67779d74UL, 0x73185232UL} },
+ { &fnv_test_str[116], (Fnv64_t) {0x6b8caca1UL, 0x3e66d3d5UL} },
+ { &fnv_test_str[117], (Fnv64_t) {0xc0095593UL, 0x956694a5UL} },
+ { &fnv_test_str[118], (Fnv64_t) {0xbb1a6fc8UL, 0xcac54572UL} },
+ { &fnv_test_str[119], (Fnv64_t) {0xedebf0d8UL, 0xa7a4c9f3UL} },
+ { &fnv_test_str[120], (Fnv64_t) {0xac17b143UL, 0x7829851fUL} },
+ { &fnv_test_str[121], (Fnv64_t) {0xf81bcf06UL, 0x2c8f4c9aUL} },
+ { &fnv_test_str[122], (Fnv64_t) {0x9740c732UL, 0xd34e3153UL} },
+ { &fnv_test_str[123], (Fnv64_t) {0x253d2db1UL, 0x3605a2acUL} },
+ { &fnv_test_str[124], (Fnv64_t) {0x46f4a3c3UL, 0x08c11b83UL} },
+ { &fnv_test_str[125], (Fnv64_t) {0x9ce8a6daUL, 0x6be39628UL} },
+ { &fnv_test_str[126], (Fnv64_t) {0x7fe794c5UL, 0xd9b957fbUL} },
+ { &fnv_test_str[127], (Fnv64_t) {0x04560a93UL, 0x05be33daUL} },
+ { &fnv_test_str[128], (Fnv64_t) {0x7ba9747cUL, 0x0957f157UL} },
+ { &fnv_test_str[129], (Fnv64_t) {0xc24fba57UL, 0xda2cc3acUL} },
+ { &fnv_test_str[130], (Fnv64_t) {0x5b29e7f0UL, 0x74136f18UL} },
+ { &fnv_test_str[131], (Fnv64_t) {0x0edb93b2UL, 0xb2f2b459UL} },
+ { &fnv_test_str[132], (Fnv64_t) {0x8b86ae04UL, 0xb3608fceUL} },
+ { &fnv_test_str[133], (Fnv64_t) {0x79359063UL, 0x4a3a8650UL} },
+ { &fnv_test_str[134], (Fnv64_t) {0x96880a50UL, 0x5b3a7ef4UL} },
+ { &fnv_test_str[135], (Fnv64_t) {0x3854c23bUL, 0x48fae316UL} },
+ { &fnv_test_str[136], (Fnv64_t) {0x476e0b9aUL, 0x07aaa640UL} },
+ { &fnv_test_str[137], (Fnv64_t) {0x383a687dUL, 0x2f653656UL} },
+ { &fnv_test_str[138], (Fnv64_t) {0x7599d79cUL, 0xa1031f8eUL} },
+ { &fnv_test_str[139], (Fnv64_t) {0x8ff92477UL, 0xa3190817UL} },
+ { &fnv_test_str[140], (Fnv64_t) {0x14c3fb83UL, 0x097edf3cUL} },
+ { &fnv_test_str[141], (Fnv64_t) {0xeaa0971bUL, 0xb51ca83fUL} },
+ { &fnv_test_str[142], (Fnv64_t) {0xd784f2e9UL, 0xdd3c0d96UL} },
+ { &fnv_test_str[143], (Fnv64_t) {0xea767d78UL, 0x86cd26a9UL} },
+ { &fnv_test_str[144], (Fnv64_t) {0x54a30c18UL, 0xe6b215ffUL} },
+ { &fnv_test_str[145], (Fnv64_t) {0xc5531093UL, 0xec5b06a1UL} },
+ { &fnv_test_str[146], (Fnv64_t) {0x9f9ec5e5UL, 0x45665a92UL} },
+ { &fnv_test_str[147], (Fnv64_t) {0xa9f10907UL, 0x8c7609b4UL} },
+ { &fnv_test_str[148], (Fnv64_t) {0x91f0d729UL, 0x89aac3a4UL} },
+ { &fnv_test_str[149], (Fnv64_t) {0xe0f4a403UL, 0x32ce6b26UL} },
+ { &fnv_test_str[150], (Fnv64_t) {0x02b53e01UL, 0x614ab44eUL} },
+ { &fnv_test_str[151], (Fnv64_t) {0x6eef3290UL, 0xfa6472ebUL} },
+ { &fnv_test_str[152], (Fnv64_t) {0x1948eb6aUL, 0x9e5d75ebUL} },
+ { &fnv_test_str[153], (Fnv64_t) {0xa8671852UL, 0xb6d12ad4UL} },
+ { &fnv_test_str[154], (Fnv64_t) {0xeba07af1UL, 0x88826f56UL} },
+ { &fnv_test_str[155], (Fnv64_t) {0x645bc0fdUL, 0x44535bf2UL} },
+ { &fnv_test_str[156], (Fnv64_t) {0xc21e3728UL, 0x169388ffUL} },
+ { &fnv_test_str[157], (Fnv64_t) {0x396d8224UL, 0xf68aac9eUL} },
+ { &fnv_test_str[158], (Fnv64_t) {0x472b3883UL, 0x8e87d7e7UL} },
+ { &fnv_test_str[159], (Fnv64_t) {0xa8b423deUL, 0x295c26caUL} },
+ { &fnv_test_str[160], (Fnv64_t) {0x92e72176UL, 0x322c8142UL} },
+ { &fnv_test_str[161], (Fnv64_t) {0xb8af7268UL, 0x8a06550eUL} },
+ { &fnv_test_str[162], (Fnv64_t) {0x661bcf71UL, 0xef86d60eUL} },
+ { &fnv_test_str[163], (Fnv64_t) {0x7f30ee54UL, 0x9e5426c8UL} },
+ { &fnv_test_str[164], (Fnv64_t) {0x26fd047eUL, 0xf1ea8aa8UL} },
+ { &fnv_test_str[165], (Fnv64_t) {0x642cb769UL, 0x0babaf9aUL} },
+ { &fnv_test_str[166], (Fnv64_t) {0x068d012eUL, 0x4b3341d4UL} },
+ { &fnv_test_str[167], (Fnv64_t) {0xc30a335cUL, 0xd15605cbUL} },
+ { &fnv_test_str[168], (Fnv64_t) {0xed8412e5UL, 0x5b21060aUL} },
+ { &fnv_test_str[169], (Fnv64_t) {0xce6f4227UL, 0x45e2cda1UL} },
+ { &fnv_test_str[170], (Fnv64_t) {0x033ad7d4UL, 0x50ae3745UL} },
+ { &fnv_test_str[171], (Fnv64_t) {0xd46bf414UL, 0xaa4588ceUL} },
+ { &fnv_test_str[172], (Fnv64_t) {0x4a95467eUL, 0xc1b0056cUL} },
+ { &fnv_test_str[173], (Fnv64_t) {0xde8b4089UL, 0x56576a71UL} },
+ { &fnv_test_str[174], (Fnv64_t) {0xa6dc927eUL, 0xbf20965fUL} },
+ { &fnv_test_str[175], (Fnv64_t) {0xc2040882UL, 0x569f8383UL} },
+ { &fnv_test_str[176], (Fnv64_t) {0xa08feca0UL, 0xe1e772fbUL} },
+ { &fnv_test_str[177], (Fnv64_t) {0x97138ac4UL, 0x4ced94afUL} },
+ { &fnv_test_str[178], (Fnv64_t) {0x337a82fbUL, 0xc4112ffbUL} },
+ { &fnv_test_str[179], (Fnv64_t) {0x1de38b7dUL, 0xd64a4fd4UL} },
+ { &fnv_test_str[180], (Fnv64_t) {0x9edebcbbUL, 0x4cfc3232UL} },
+ { &fnv_test_str[181], (Fnv64_t) {0x45050395UL, 0x08035644UL} },
+ { &fnv_test_str[182], (Fnv64_t) {0xf4642ffdUL, 0xaa1574ecUL} },
+ { &fnv_test_str[183], (Fnv64_t) {0x4cc315f9UL, 0x694bc4e5UL} },
+ { &fnv_test_str[184], (Fnv64_t) {0x3b011721UL, 0xa3d7cb27UL} },
+ { &fnv_test_str[185], (Fnv64_t) {0x6115bfa5UL, 0x577c2f8bUL} },
+ { &fnv_test_str[186], (Fnv64_t) {0x769fb4c1UL, 0xb7ec8c1aUL} },
+ { &fnv_test_str[187], (Fnv64_t) {0x3359ab19UL, 0x5d5cfce6UL} },
+ { &fnv_test_str[188], (Fnv64_t) {0xd65b5f71UL, 0x33b96c3cUL} },
+ { &fnv_test_str[189], (Fnv64_t) {0x80602bb9UL, 0xd8450977UL} },
+ { &fnv_test_str[190], (Fnv64_t) {0xd02da3d5UL, 0x84d47645UL} },
+ { &fnv_test_str[191], (Fnv64_t) {0xb58773a5UL, 0x83544f33UL} },
+ { &fnv_test_str[192], (Fnv64_t) {0x160836c5UL, 0x9175cbb2UL} },
+ { &fnv_test_str[193], (Fnv64_t) {0x75e72bc5UL, 0xc71b3bc1UL} },
+ { &fnv_test_str[194], (Fnv64_t) {0x222ec985UL, 0x636806acUL} },
+ { &fnv_test_str[195], (Fnv64_t) {0x50f52ed5UL, 0xb6ef0e69UL} },
+ { &fnv_test_str[196], (Fnv64_t) {0xf3dfdaa5UL, 0xead3d8a0UL} },
+ { &fnv_test_str[197], (Fnv64_t) {0x9a861ba5UL, 0x922908feUL} },
+ { &fnv_test_str[198], (Fnv64_t) {0x275fd5c5UL, 0x6d4821deUL} },
+ { &fnv_test_str[199], (Fnv64_t) {0x2bd816b5UL, 0x1fe3fce6UL} },
+ { &fnv_test_str[200], (Fnv64_t) {0xd6f70591UL, 0xc23e9fccUL} },
+ { &fnv_test_str[201], (Fnv64_t) {0xfe16b5b5UL, 0xc1af12bdUL} },
+ { &fnv_test_str[202], (Fnv64_t) {0x2f85e221UL, 0x39e9f18fUL} },
+ { NULL, (Fnv64_t) {0,0} }
+};
+#endif /* HAVE_64BIT_LONG_LONG */
+
+/* end of output generated by make vector.c */
+/*
+ * insert the contents of vector.c above
+ */
+
+
+/*
+ * unknown_hash_type - report an unknown hash type error
+ *
+ * NOTE: Does not return.
+ */
+void
+unknown_hash_type(char *prog, enum fnv_type type, int code)
+{
+ fprintf(stderr, "%s: unknown or unexpexted hash type: %d\n", prog, type);
+ exit(code);
+}
+
+
+/*
+ * print_fnv32 - print an FNV hash
+ *
+ * given:
+ * hval the hash value to print
+ * mask lower bit mask
+ * verbose 1 => print arg with hash
+ * arg string or filename arg
+ */
+void
+print_fnv32(Fnv32_t hval, Fnv32_t mask, int verbose, char *arg)
+{
+ if (verbose) {
+ printf("0x%08lx %s\n", hval & mask, arg);
+ } else {
+ printf("0x%08lx\n", hval & mask);
+ }
+}
+
+
+/*
+ * print_fnv64 - print an FNV hash
+ *
+ * given:
+ * hval the hash value to print
+ * mask lower bit mask
+ * verbose 1 => print arg with hash
+ * arg string or filename arg
+ */
+void
+print_fnv64(Fnv64_t hval, Fnv64_t mask, int verbose, char *arg)
+{
+#if defined(HAVE_64BIT_LONG_LONG)
+ if (verbose) {
+ printf("0x%016llx %s\n", hval & mask, arg);
+ } else {
+ printf("0x%016llx\n", hval & mask);
+ }
+#else
+ if (verbose) {
+ printf("0x%08lx%08lx %s\n",
+ hval.w32[1] & mask.w32[1],
+ hval.w32[0] & mask.w32[0],
+ arg);
+ } else {
+ printf("0x%08lx%08lx\n",
+ hval.w32[1] & mask.w32[1],
+ hval.w32[0] & mask.w32[0]);
+ }
+#endif
+}
diff --git a/lib/lufa b/lib/lufa
-Subproject 19a5d533f02a7b46eeadca99cc9699659cef7a6
+Subproject 549b97320d515bfca2f95c145a67bd13be968fa
diff --git a/lib/pico-sdk b/lib/pico-sdk
new file mode 160000
+Subproject 07edde8e49890d2172bbc272aacc119f999df06
diff --git a/lib/printf b/lib/printf
-Subproject d3b984684bb8a8bdc48cc7a1abecb93ce59bbe3
+Subproject c2e3b4e10d281e7f0f694d3ecbd9f320977288c
diff --git a/lib/python/qmk/c_parse.py b/lib/python/qmk/c_parse.py
index 4b49b8d4e9..c14eb490fa 100644
--- a/lib/python/qmk/c_parse.py
+++ b/lib/python/qmk/c_parse.py
@@ -258,6 +258,9 @@ def _parse_led_config(file, matrix_cols, matrix_rows):
position_raw.append(_coerce_led_token(_type, value))
if section == 3 and bracket_count == 2:
flags.append(_coerce_led_token(_type, value))
+ elif _type in [Token.Comment.Preproc]:
+ # TODO: Promote to error
+ return None
# Slightly better intrim format
matrix = list(_get_chunks(matrix_raw, matrix_cols))
diff --git a/lib/python/qmk/cli/__init__.py b/lib/python/qmk/cli/__init__.py
index d7192631a3..98e212c47b 100644
--- a/lib/python/qmk/cli/__init__.py
+++ b/lib/python/qmk/cli/__init__.py
@@ -15,6 +15,7 @@ from milc.questions import yesno
import_names = {
# A mapping of package name to importable name
'pep8-naming': 'pep8ext_naming',
+ 'pyserial': 'serial',
'pyusb': 'usb.core',
'qmk-dotty-dict': 'dotty_dict',
'pillow': 'PIL'
@@ -59,6 +60,9 @@ subcommands = [
'qmk.cli.generate.rules_mk',
'qmk.cli.generate.version_h',
'qmk.cli.hello',
+ 'qmk.cli.import.kbfirmware',
+ 'qmk.cli.import.keyboard',
+ 'qmk.cli.import.keymap',
'qmk.cli.info',
'qmk.cli.json2c',
'qmk.cli.lint',
@@ -91,7 +95,7 @@ def _install_deps(requirements):
elif not os.access(sys.prefix, os.W_OK):
# We can't write to sys.prefix, attempt to install locally
- command.append('--local')
+ command.append('--user')
return _run_cmd(*command, '-r', requirements)
@@ -156,6 +160,18 @@ def _broken_module_imports(requirements):
return False
+def _yesno(*args):
+ """Wrapper to only prompt if interactive
+ """
+ return sys.stdout.isatty() and yesno(*args)
+
+
+def _eprint(errmsg):
+ """Wrapper to print to stderr
+ """
+ print(errmsg, file=sys.stderr)
+
+
# Make sure our python is new enough
#
# Supported version information
@@ -177,7 +193,7 @@ def _broken_module_imports(requirements):
# void: 3.9
if sys.version_info[0] != 3 or sys.version_info[1] < 7:
- print('Error: Your Python is too old! Please upgrade to Python 3.7 or later.')
+ _eprint('Error: Your Python is too old! Please upgrade to Python 3.7 or later.')
exit(127)
milc_version = __VERSION__.split('.')
@@ -185,7 +201,7 @@ milc_version = __VERSION__.split('.')
if int(milc_version[0]) < 2 and int(milc_version[1]) < 4:
requirements = Path('requirements.txt').resolve()
- print(f'Your MILC library is too old! Please upgrade: python3 -m pip install -U -r {str(requirements)}')
+ _eprint(f'Your MILC library is too old! Please upgrade: python3 -m pip install -U -r {str(requirements)}')
exit(127)
# Make sure we can run binaries in the same directory as our Python interpreter
@@ -195,7 +211,7 @@ if python_dir not in os.environ['PATH'].split(':'):
os.environ['PATH'] = ":".join((python_dir, os.environ['PATH']))
# Check to make sure we have all our dependencies
-msg_install = f'Please run `{sys.executable} -m pip install -r %s` to install required python dependencies.'
+msg_install = f'\nPlease run `{sys.executable} -m pip install -r %s` to install required python dependencies.'
args = sys.argv[1:]
while args and args[0][0] == '-':
del args[0]
@@ -204,24 +220,20 @@ safe_command = args and args[0] in safe_commands
if not safe_command:
if _broken_module_imports('requirements.txt'):
- if yesno('Would you like to install the required Python modules?'):
+ if _yesno('Would you like to install the required Python modules?'):
_install_deps('requirements.txt')
else:
- print()
- print(msg_install % (str(Path('requirements.txt').resolve()),))
- print()
+ _eprint(msg_install % (str(Path('requirements.txt').resolve()),))
exit(1)
if cli.config.user.developer and _broken_module_imports('requirements-dev.txt'):
- if yesno('Would you like to install the required developer Python modules?'):
+ if _yesno('Would you like to install the required developer Python modules?'):
_install_deps('requirements-dev.txt')
- elif yesno('Would you like to disable developer mode?'):
+ elif _yesno('Would you like to disable developer mode?'):
_run_cmd(sys.argv[0], 'config', 'user.developer=None')
else:
- print()
- print(msg_install % (str(Path('requirements-dev.txt').resolve()),))
- print('You can also turn off developer mode: qmk config user.developer=None')
- print()
+ _eprint(msg_install % (str(Path('requirements-dev.txt').resolve()),))
+ _eprint('You can also turn off developer mode: qmk config user.developer=None')
exit(1)
# Import our subcommands
@@ -231,6 +243,6 @@ for subcommand in subcommands:
except (ImportError, ModuleNotFoundError) as e:
if safe_command:
- print(f'Warning: Could not import {subcommand}: {e.__class__.__name__}, {e}')
+ _eprint(f'Warning: Could not import {subcommand}: {e.__class__.__name__}, {e}')
else:
raise
diff --git a/lib/python/qmk/cli/doctor/linux.py b/lib/python/qmk/cli/doctor/linux.py
index 94683d3307..a803305c0d 100644
--- a/lib/python/qmk/cli/doctor/linux.py
+++ b/lib/python/qmk/cli/doctor/linux.py
@@ -6,7 +6,7 @@ from pathlib import Path
from milc import cli
-from qmk.constants import QMK_FIRMWARE
+from qmk.constants import QMK_FIRMWARE, BOOTLOADER_VIDS_PIDS
from .check import CheckStatus
@@ -26,6 +26,18 @@ def _udev_rule(vid, pid=None, *args):
return rule
+def _generate_desired_rules(bootloader_vids_pids):
+ rules = dict()
+ for bl in bootloader_vids_pids.keys():
+ rules[bl] = set()
+ for vid_pid in bootloader_vids_pids[bl]:
+ if bl == 'caterina' or bl == 'md-boot':
+ rules[bl].add(_udev_rule(vid_pid[0], vid_pid[1], 'ENV{ID_MM_DEVICE_IGNORE}="1"'))
+ else:
+ rules[bl].add(_udev_rule(vid_pid[0], vid_pid[1]))
+ return rules
+
+
def _deprecated_udev_rule(vid, pid=None):
""" Helper function that return udev rules
@@ -47,47 +59,8 @@ def check_udev_rules():
Path("/run/udev/rules.d/"),
Path("/etc/udev/rules.d/"),
]
- desired_rules = {
- 'atmel-dfu': {
- _udev_rule("03eb", "2fef"), # ATmega16U2
- _udev_rule("03eb", "2ff0"), # ATmega32U2
- _udev_rule("03eb", "2ff3"), # ATmega16U4
- _udev_rule("03eb", "2ff4"), # ATmega32U4
- _udev_rule("03eb", "2ff9"), # AT90USB64
- _udev_rule("03eb", "2ffa"), # AT90USB162
- _udev_rule("03eb", "2ffb") # AT90USB128
- },
- 'kiibohd': {_udev_rule("1c11", "b007")},
- 'stm32': {
- _udev_rule("1eaf", "0003"), # STM32duino
- _udev_rule("0483", "df11") # STM32 DFU
- },
- 'bootloadhid': {_udev_rule("16c0", "05df")},
- 'usbasploader': {_udev_rule("16c0", "05dc")},
- 'massdrop': {_udev_rule("03eb", "6124", 'ENV{ID_MM_DEVICE_IGNORE}="1"')},
- 'caterina': {
- # Spark Fun Electronics
- _udev_rule("1b4f", "9203", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Pro Micro 3V3/8MHz
- _udev_rule("1b4f", "9205", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Pro Micro 5V/16MHz
- _udev_rule("1b4f", "9207", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # LilyPad 3V3/8MHz (and some Pro Micro clones)
- # Pololu Electronics
- _udev_rule("1ffb", "0101", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # A-Star 32U4
- # Arduino SA
- _udev_rule("2341", "0036", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Leonardo
- _udev_rule("2341", "0037", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Micro
- # Adafruit Industries LLC
- _udev_rule("239a", "000c", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Feather 32U4
- _udev_rule("239a", "000d", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # ItsyBitsy 32U4 3V3/8MHz
- _udev_rule("239a", "000e", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # ItsyBitsy 32U4 5V/16MHz
- # dog hunter AG
- _udev_rule("2a03", "0036", 'ENV{ID_MM_DEVICE_IGNORE}="1"'), # Leonardo
- _udev_rule("2a03", "0037", 'ENV{ID_MM_DEVICE_IGNORE}="1"') # Micro
- },
- 'hid-bootloader': {
- _udev_rule("03eb", "2067"), # QMK HID
- _udev_rule("16c0", "0478") # PJRC halfkay
- }
- }
+
+ desired_rules = _generate_desired_rules(BOOTLOADER_VIDS_PIDS)
# These rules are no longer recommended, only use them to check for their presence.
deprecated_rules = {
diff --git a/lib/python/qmk/cli/doctor/macos.py b/lib/python/qmk/cli/doctor/macos.py
index 00fb272858..5d088c9492 100644
--- a/lib/python/qmk/cli/doctor/macos.py
+++ b/lib/python/qmk/cli/doctor/macos.py
@@ -8,6 +8,6 @@ from .check import CheckStatus
def os_test_macos():
"""Run the Mac specific tests.
"""
- cli.log.info("Detected {fg_cyan}macOS %s{fg_reset}.", platform.mac_ver()[0])
+ cli.log.info("Detected {fg_cyan}macOS %s (%s){fg_reset}.", platform.mac_ver()[0], 'Apple Silicon' if platform.processor() == 'arm' else 'Intel')
return CheckStatus.OK
diff --git a/lib/python/qmk/cli/doctor/main.py b/lib/python/qmk/cli/doctor/main.py
index 2898a9894c..1600ab8dd4 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.git import git_check_repo, git_get_branch, git_get_tag, git_is_dirty, git_get_remotes, git_check_deviation
+from qmk.git import git_check_repo, git_get_branch, git_get_tag, git_get_last_log_entry, git_get_common_ancestor, git_is_dirty, git_get_remotes, git_check_deviation
from qmk.commands import in_virtualenv
@@ -66,10 +66,32 @@ def git_tests():
if git_branch in ['master', 'develop'] and git_deviation:
cli.log.warning('{fg_yellow}The local "%s" branch contains commits not found in the upstream branch.', git_branch)
status = CheckStatus.WARNING
+ for branch in [git_branch, 'upstream/master', 'upstream/develop']:
+ cli.log.info('- Latest %s: %s', branch, git_get_last_log_entry(branch))
+ for branch in ['upstream/master', 'upstream/develop']:
+ cli.log.info('- Common ancestor with %s: %s', branch, git_get_common_ancestor(branch, 'HEAD'))
return status
+def output_submodule_status():
+ """Prints out information related to the submodule status.
+ """
+ cli.log.info('Submodule status:')
+ sub_status = submodules.status()
+ for s in sub_status.keys():
+ sub_info = sub_status[s]
+ if 'name' in sub_info:
+ sub_name = sub_info['name']
+ sub_shorthash = sub_info['shorthash'] if 'shorthash' in sub_info else ''
+ sub_describe = sub_info['describe'] if 'describe' in sub_info else ''
+ sub_last_log_timestamp = sub_info['last_log_timestamp'] if 'last_log_timestamp' in sub_info else ''
+ if sub_last_log_timestamp != '':
+ cli.log.info(f'- {sub_name}: {sub_last_log_timestamp} -- {sub_describe} ({sub_shorthash})')
+ else:
+ cli.log.error(f'- {sub_name}: <<< missing or unknown >>>')
+
+
@cli.argument('-y', '--yes', action='store_true', arg_only=True, help='Answer yes to all questions.')
@cli.argument('-n', '--no', action='store_true', arg_only=True, help='Answer no to all questions.')
@cli.subcommand('Basic QMK environment checks')
@@ -129,6 +151,8 @@ def doctor(cli):
elif sub_ok == CheckStatus.WARNING and status == CheckStatus.OK:
status = CheckStatus.WARNING
+ output_submodule_status()
+
# Report a summary of our findings to the user
if status == CheckStatus.OK:
cli.log.info('{fg_green}QMK is ready to go')
diff --git a/lib/python/qmk/cli/flash.py b/lib/python/qmk/cli/flash.py
index 216896b974..c39f4b36d4 100644
--- a/lib/python/qmk/cli/flash.py
+++ b/lib/python/qmk/cli/flash.py
@@ -4,6 +4,7 @@ You can compile a keymap already in the repo or using a QMK Configurator export.
A bootloader must be specified.
"""
from subprocess import DEVNULL
+import sys
from argcomplete.completers import FilesCompleter
from milc import cli
@@ -12,6 +13,7 @@ import qmk.path
from qmk.decorators import automagic_keyboard, automagic_keymap
from qmk.commands import compile_configurator_json, create_make_command, parse_configurator_json
from qmk.keyboard import keyboard_completer, keyboard_folder
+from qmk.flashers import flasher
def print_bootloader_help():
@@ -33,12 +35,15 @@ def print_bootloader_help():
cli.echo('\tdfu-split-right')
cli.echo('\tdfu-util-split-left')
cli.echo('\tdfu-util-split-right')
+ cli.echo('\tuf2-split-left')
+ cli.echo('\tuf2-split-right')
cli.echo('For more info, visit https://docs.qmk.fm/#/flashing')
-@cli.argument('filename', nargs='?', arg_only=True, type=qmk.path.FileType('r'), completer=FilesCompleter('.json'), help='The configurator export JSON to compile.')
+@cli.argument('filename', nargs='?', arg_only=True, type=qmk.path.FileType('r'), completer=FilesCompleter('.json'), help='A configurator export JSON to be compiled and flashed or a pre-compiled binary firmware file (bin/hex) to be flashed.')
@cli.argument('-b', '--bootloaders', action='store_true', help='List the available bootloaders.')
@cli.argument('-bl', '--bootloader', default='flash', help='The flash command, corresponding to qmk\'s make options of bootloaders.')
+@cli.argument('-m', '--mcu', help='The MCU name. Required for HalfKay, HID, USBAspLoader and ISP flashing.')
@cli.argument('-km', '--keymap', help='The keymap to build a firmware for. Use this if you dont have a configurator file. Ignored when a configurator file is supplied.')
@cli.argument('-kb', '--keyboard', type=keyboard_folder, completer=keyboard_completer, help='The keyboard to build a firmware for. Use this if you dont have a configurator file. Ignored when a configurator file is supplied.')
@cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Don't actually build, just show the make command to be run.")
@@ -51,6 +56,8 @@ def print_bootloader_help():
def flash(cli):
"""Compile and or flash QMK Firmware or keyboard/layout
+ If a binary firmware is supplied, try to flash that.
+
If a Configurator JSON export is supplied this command will create a new keymap. Keymap and Keyboard arguments
will be ignored.
@@ -58,56 +65,69 @@ def flash(cli):
If bootloader is omitted the make system will use the configured bootloader for that keyboard.
"""
- if cli.args.clean and not cli.args.filename and not cli.args.dry_run:
- if cli.config.flash.keyboard and cli.config.flash.keymap:
- command = create_make_command(cli.config.flash.keyboard, cli.config.flash.keymap, 'clean')
- cli.run(command, capture_output=False, stdin=DEVNULL)
-
- # Build the environment vars
- envs = {}
- for env in cli.args.env:
- if '=' in env:
- key, value = env.split('=', 1)
- envs[key] = value
- else:
- cli.log.warning('Invalid environment variable: %s', env)
-
- # Determine the compile command
- command = ''
-
- if cli.args.bootloaders:
- # Provide usage and list bootloaders
- cli.echo('usage: qmk flash [-h] [-b] [-n] [-kb KEYBOARD] [-km KEYMAP] [-bl BOOTLOADER] [filename]')
- print_bootloader_help()
- return False
-
- if cli.args.filename:
- # Handle compiling a configurator JSON
- user_keymap = parse_configurator_json(cli.args.filename)
- keymap_path = qmk.path.keymap(user_keymap['keyboard'])
- command = compile_configurator_json(user_keymap, cli.args.bootloader, parallel=cli.config.flash.parallel, **envs)
-
- cli.log.info('Wrote keymap to {fg_cyan}%s/%s/keymap.c', keymap_path, user_keymap['keymap'])
+ if cli.args.filename and cli.args.filename.suffix in ['.bin', '.hex']:
+ # Try to flash binary firmware
+ cli.echo('Flashing binary firmware...\nPlease reset your keyboard into bootloader mode now!\nPress Ctrl-C to exit.\n')
+ try:
+ err, msg = flasher(cli.args.mcu, cli.args.filename)
+ if err:
+ cli.log.error(msg)
+ return False
+ except KeyboardInterrupt:
+ cli.log.info('Ctrl-C was pressed, exiting...')
+ sys.exit(0)
else:
- if cli.config.flash.keyboard and cli.config.flash.keymap:
- # Generate the make command for a specific keyboard/keymap.
- command = create_make_command(cli.config.flash.keyboard, cli.config.flash.keymap, cli.args.bootloader, parallel=cli.config.flash.parallel, **envs)
-
- elif not cli.config.flash.keyboard:
- cli.log.error('Could not determine keyboard!')
- elif not cli.config.flash.keymap:
- cli.log.error('Could not determine keymap!')
-
- # Compile the firmware, if we're able to
- if command:
- cli.log.info('Compiling keymap with {fg_cyan}%s', ' '.join(command))
- if not cli.args.dry_run:
- cli.echo('\n')
- compile = cli.run(command, capture_output=False, stdin=DEVNULL)
- return compile.returncode
+ if cli.args.clean and not cli.args.filename and not cli.args.dry_run:
+ if cli.config.flash.keyboard and cli.config.flash.keymap:
+ command = create_make_command(cli.config.flash.keyboard, cli.config.flash.keymap, 'clean')
+ cli.run(command, capture_output=False, stdin=DEVNULL)
+
+ # Build the environment vars
+ envs = {}
+ for env in cli.args.env:
+ if '=' in env:
+ key, value = env.split('=', 1)
+ envs[key] = value
+ else:
+ cli.log.warning('Invalid environment variable: %s', env)
+
+ # Determine the compile command
+ command = ''
+
+ if cli.args.bootloaders:
+ # Provide usage and list bootloaders
+ cli.echo('usage: qmk flash [-h] [-b] [-n] [-kb KEYBOARD] [-km KEYMAP] [-bl BOOTLOADER] [filename]')
+ print_bootloader_help()
+ return False
+
+ if cli.args.filename:
+ # Handle compiling a configurator JSON
+ user_keymap = parse_configurator_json(cli.args.filename)
+ keymap_path = qmk.path.keymap(user_keymap['keyboard'])
+ command = compile_configurator_json(user_keymap, cli.args.bootloader, parallel=cli.config.flash.parallel, **envs)
+
+ cli.log.info('Wrote keymap to {fg_cyan}%s/%s/keymap.c', keymap_path, user_keymap['keymap'])
- else:
- cli.log.error('You must supply a configurator export, both `--keyboard` and `--keymap`, or be in a directory for a keyboard or keymap.')
- cli.echo('usage: qmk flash [-h] [-b] [-n] [-kb KEYBOARD] [-km KEYMAP] [-bl BOOTLOADER] [filename]')
- return False
+ else:
+ if cli.config.flash.keyboard and cli.config.flash.keymap:
+ # Generate the make command for a specific keyboard/keymap.
+ command = create_make_command(cli.config.flash.keyboard, cli.config.flash.keymap, cli.args.bootloader, parallel=cli.config.flash.parallel, **envs)
+
+ elif not cli.config.flash.keyboard:
+ cli.log.error('Could not determine keyboard!')
+ elif not cli.config.flash.keymap:
+ cli.log.error('Could not determine keymap!')
+
+ # Compile the firmware, if we're able to
+ if command:
+ cli.log.info('Compiling keymap with {fg_cyan}%s', ' '.join(command))
+ if not cli.args.dry_run:
+ cli.echo('\n')
+ compile = cli.run(command, capture_output=False, stdin=DEVNULL)
+ return compile.returncode
+
+ else:
+ cli.log.error('You must supply a configurator export, both `--keyboard` and `--keymap`, or be in a directory for a keyboard or keymap.')
+ cli.echo('usage: qmk flash [-h] [-b] [-n] [-kb KEYBOARD] [-km KEYMAP] [-bl BOOTLOADER] [filename]')
+ return False
diff --git a/lib/python/qmk/cli/generate/api.py b/lib/python/qmk/cli/generate/api.py
index 0596b3f22b..8d8ca3cd41 100755
--- a/lib/python/qmk/cli/generate/api.py
+++ b/lib/python/qmk/cli/generate/api.py
@@ -12,21 +12,30 @@ from qmk.json_encoders import InfoJSONEncoder
from qmk.json_schema import json_load
from qmk.keyboard import find_readme, list_keyboards
-TEMPLATE_PATH = Path('data/templates/api/')
+DATA_PATH = Path('data')
+TEMPLATE_PATH = DATA_PATH / 'templates/api/'
BUILD_API_PATH = Path('.build/api_data/')
+def _filtered_keyboard_list():
+ """Perform basic filtering of list_keyboards
+ """
+ keyboard_list = list_keyboards()
+ if cli.args.filter:
+ kb_list = []
+ for keyboard_name in keyboard_list:
+ if any(i in keyboard_name for i in cli.args.filter):
+ kb_list.append(keyboard_name)
+ keyboard_list = kb_list
+ return keyboard_list
+
+
@cli.argument('-n', '--dry-run', arg_only=True, action='store_true', help="Don't write the data to disk.")
@cli.argument('-f', '--filter', arg_only=True, action='append', default=[], help="Filter the list of keyboards based on partial name matches the supplied value. May be passed multiple times.")
-@cli.subcommand('Creates a new keymap for the keyboard of your choosing', hidden=False if cli.config.user.developer else True)
+@cli.subcommand('Generate QMK API data', hidden=False if cli.config.user.developer else True)
def generate_api(cli):
"""Generates the QMK API data.
"""
- if BUILD_API_PATH.exists():
- shutil.rmtree(BUILD_API_PATH)
-
- shutil.copytree(TEMPLATE_PATH, BUILD_API_PATH)
-
v1_dir = BUILD_API_PATH / 'v1'
keyboard_all_file = v1_dir / 'keyboards.json' # A massive JSON containing everything
keyboard_list_file = v1_dir / 'keyboard_list.json' # A simple list of keyboard targets
@@ -34,14 +43,14 @@ def generate_api(cli):
keyboard_metadata_file = v1_dir / 'keyboard_metadata.json' # All the data configurator/via needs for initialization
usb_file = v1_dir / 'usb.json' # A mapping of USB VID/PID -> keyboard target
+ if BUILD_API_PATH.exists():
+ shutil.rmtree(BUILD_API_PATH)
+
+ shutil.copytree(TEMPLATE_PATH, BUILD_API_PATH)
+ shutil.copytree(DATA_PATH, v1_dir)
+
# Filter down when required
- keyboard_list = list_keyboards()
- if cli.args.filter:
- kb_list = []
- for keyboard_name in keyboard_list:
- if any(i in keyboard_name for i in cli.args.filter):
- kb_list.append(keyboard_name)
- keyboard_list = kb_list
+ keyboard_list = _filtered_keyboard_list()
kb_all = {}
usb_list = {}
diff --git a/lib/python/qmk/cli/generate/config_h.py b/lib/python/qmk/cli/generate/config_h.py
index 893892c479..a26dcdf7d7 100755
--- a/lib/python/qmk/cli/generate/config_h.py
+++ b/lib/python/qmk/cli/generate/config_h.py
@@ -134,6 +134,36 @@ def generate_config_items(kb_info_json, config_h_lines):
config_h_lines.append(f'#endif // {config_key}')
+def generate_encoder_config(encoder_json, config_h_lines, postfix=''):
+ """Generate the config.h lines for encoders."""
+ a_pads = []
+ b_pads = []
+ resolutions = []
+ for encoder in encoder_json.get("rotary", []):
+ a_pads.append(encoder["pin_a"])
+ b_pads.append(encoder["pin_b"])
+ resolutions.append(encoder.get("resolution", None))
+
+ config_h_lines.append(f'#ifndef ENCODERS_PAD_A{postfix}')
+ config_h_lines.append(f'# define ENCODERS_PAD_A{postfix} {{ { ", ".join(a_pads) } }}')
+ config_h_lines.append(f'#endif // ENCODERS_PAD_A{postfix}')
+
+ config_h_lines.append(f'#ifndef ENCODERS_PAD_B{postfix}')
+ config_h_lines.append(f'# define ENCODERS_PAD_B{postfix} {{ { ", ".join(b_pads) } }}')
+ config_h_lines.append(f'#endif // ENCODERS_PAD_B{postfix}')
+
+ if None in resolutions:
+ cli.log.debug("Unable to generate ENCODER_RESOLUTION configuration")
+ elif len(set(resolutions)) == 1:
+ config_h_lines.append(f'#ifndef ENCODER_RESOLUTION{postfix}')
+ config_h_lines.append(f'# define ENCODER_RESOLUTION{postfix} { resolutions[0] }')
+ config_h_lines.append(f'#endif // ENCODER_RESOLUTION{postfix}')
+ else:
+ config_h_lines.append(f'#ifndef ENCODER_RESOLUTIONS{postfix}')
+ config_h_lines.append(f'# define ENCODER_RESOLUTIONS{postfix} {{ { ", ".join(map(str,resolutions)) } }}')
+ config_h_lines.append(f'#endif // ENCODER_RESOLUTIONS{postfix}')
+
+
def generate_split_config(kb_info_json, config_h_lines):
"""Generate the config.h lines for split boards."""
if 'primary' in kb_info_json['split']:
@@ -173,6 +203,9 @@ def generate_split_config(kb_info_json, config_h_lines):
if 'right' in kb_info_json['split'].get('matrix_pins', {}):
config_h_lines.append(matrix_pins(kb_info_json['split']['matrix_pins']['right'], '_RIGHT'))
+ if 'right' in kb_info_json['split'].get('encoder', {}):
+ generate_encoder_config(kb_info_json['split']['encoder']['right'], config_h_lines, '_RIGHT')
+
@cli.argument('-o', '--output', arg_only=True, type=normpath, help='File to write to')
@cli.argument('-q', '--quiet', arg_only=True, action='store_true', help="Quiet mode, only output error messages")
@@ -198,6 +231,9 @@ def generate_config_h(cli):
if 'matrix_pins' in kb_info_json:
config_h_lines.append(matrix_pins(kb_info_json['matrix_pins']))
+ if 'encoder' in kb_info_json:
+ generate_encoder_config(kb_info_json['encoder'], config_h_lines)
+
if 'split' in kb_info_json:
generate_split_config(kb_info_json, config_h_lines)
diff --git a/lib/python/qmk/cli/generate/dfu_header.py b/lib/python/qmk/cli/generate/dfu_header.py
index e873117387..aa0252ca86 100644
--- a/lib/python/qmk/cli/generate/dfu_header.py
+++ b/lib/python/qmk/cli/generate/dfu_header.py
@@ -33,8 +33,8 @@ def generate_dfu_header(cli):
kb_info_json = dotty(info_json(cli.config.generate_dfu_header.keyboard))
keyboard_h_lines = [GPL2_HEADER_C_LIKE, GENERATED_HEADER_C_LIKE, '#pragma once']
- keyboard_h_lines.append(f'#define MANUFACTURER {kb_info_json["manufacturer"]}')
- keyboard_h_lines.append(f'#define PRODUCT {kb_info_json["keyboard_name"]} Bootloader')
+ keyboard_h_lines.append(f'#define MANUFACTURER "{kb_info_json["manufacturer"]}"')
+ keyboard_h_lines.append(f'#define PRODUCT "{kb_info_json["keyboard_name"]} Bootloader"')
# Optional
if 'qmk_lufa_bootloader.esc_output' in kb_info_json:
diff --git a/lib/python/qmk/cli/generate/info_json.py b/lib/python/qmk/cli/generate/info_json.py
index 284d1a8510..0dc80f10cc 100755
--- a/lib/python/qmk/cli/generate/info_json.py
+++ b/lib/python/qmk/cli/generate/info_json.py
@@ -5,7 +5,7 @@ Compile an info.json for a particular keyboard and pretty-print it.
import json
from argcomplete.completers import FilesCompleter
-from jsonschema import Draft7Validator, RefResolver, validators
+from jsonschema import Draft202012Validator, RefResolver, validators
from milc import cli
from pathlib import Path
@@ -18,7 +18,7 @@ from qmk.path import is_keyboard, normpath
def pruning_validator(validator_class):
- """Extends Draft7Validator to remove properties that aren't specified in the schema.
+ """Extends Draft202012Validator to remove properties that aren't specified in the schema.
"""
validate_properties = validator_class.VALIDATORS["properties"]
@@ -37,10 +37,10 @@ def strip_info_json(kb_info_json):
"""Remove the API-only properties from the info.json.
"""
schema_store = compile_schema_store()
- pruning_draft_7_validator = pruning_validator(Draft7Validator)
+ pruning_draft_validator = pruning_validator(Draft202012Validator)
schema = schema_store['qmk.keyboard.v1']
resolver = RefResolver.from_schema(schema_store['qmk.keyboard.v1'], store=schema_store)
- validator = pruning_draft_7_validator(schema, resolver=resolver).validate
+ validator = pruning_draft_validator(schema, resolver=resolver).validate
return validator(kb_info_json)
diff --git a/lib/python/qmk/cli/import/__init__.py b/lib/python/qmk/cli/import/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/lib/python/qmk/cli/import/__init__.py
diff --git a/lib/python/qmk/cli/import/kbfirmware.py b/lib/python/qmk/cli/import/kbfirmware.py
new file mode 100644
index 0000000000..9c03737378
--- /dev/null
+++ b/lib/python/qmk/cli/import/kbfirmware.py
@@ -0,0 +1,25 @@
+from milc import cli
+
+from qmk.importers import import_kbfirmware as _import_kbfirmware
+from qmk.path import FileType
+from qmk.json_schema import json_load
+
+
+@cli.argument('filename', type=FileType('r'), nargs='+', arg_only=True, help='file')
+@cli.subcommand('Import kbfirmware json export')
+def import_kbfirmware(cli):
+ filename = cli.args.filename[0]
+
+ data = json_load(filename)
+
+ cli.log.info(f'{{style_bright}}Importing {filename.name}.{{style_normal}}')
+ cli.echo('')
+
+ cli.log.warn("Support here is basic - Consider using 'qmk new-keyboard' instead")
+
+ kb_name = _import_kbfirmware(data)
+
+ cli.log.info(f'{{fg_green}}Imported a new keyboard named {{fg_cyan}}{kb_name}{{fg_green}}.{{fg_reset}}')
+ cli.log.info(f'To start working on things, `cd` into {{fg_cyan}}keyboards/{kb_name}{{fg_reset}},')
+ cli.log.info('or open the directory in your preferred text editor.')
+ cli.log.info(f"And build with {{fg_yellow}}qmk compile -kb {kb_name} -km default{{fg_reset}}.")
diff --git a/lib/python/qmk/cli/import/keyboard.py b/lib/python/qmk/cli/import/keyboard.py
new file mode 100644
index 0000000000..3a5ed37dee
--- /dev/null
+++ b/lib/python/qmk/cli/import/keyboard.py
@@ -0,0 +1,23 @@
+from milc import cli
+
+from qmk.importers import import_keyboard as _import_keyboard
+from qmk.path import FileType
+from qmk.json_schema import json_load
+
+
+@cli.argument('filename', type=FileType('r'), nargs='+', arg_only=True, help='file')
+@cli.subcommand('Import data-driven keyboard')
+def import_keyboard(cli):
+ filename = cli.args.filename[0]
+
+ data = json_load(filename)
+
+ cli.log.info(f'{{style_bright}}Importing {filename.name}.{{style_normal}}')
+ cli.echo('')
+
+ kb_name = _import_keyboard(data)
+
+ cli.log.info(f'{{fg_green}}Imported a new keyboard named {{fg_cyan}}{kb_name}{{fg_green}}.{{fg_reset}}')
+ cli.log.info(f'To start working on things, `cd` into {{fg_cyan}}keyboards/{kb_name}{{fg_reset}},')
+ cli.log.info('or open the directory in your preferred text editor.')
+ cli.log.info(f"And build with {{fg_yellow}}qmk compile -kb {kb_name} -km default{{fg_reset}}.")
diff --git a/lib/python/qmk/cli/import/keymap.py b/lib/python/qmk/cli/import/keymap.py
new file mode 100644
index 0000000000..a499c93480
--- /dev/null
+++ b/lib/python/qmk/cli/import/keymap.py
@@ -0,0 +1,23 @@
+from milc import cli
+
+from qmk.importers import import_keymap as _import_keymap
+from qmk.path import FileType
+from qmk.json_schema import json_load
+
+
+@cli.argument('filename', type=FileType('r'), nargs='+', arg_only=True, help='file')
+@cli.subcommand('Import data-driven keymap')
+def import_keymap(cli):
+ filename = cli.args.filename[0]
+
+ data = json_load(filename)
+
+ cli.log.info(f'{{style_bright}}Importing {filename.name}.{{style_normal}}')
+ cli.echo('')
+
+ kb_name, km_name = _import_keymap(data)
+
+ cli.log.info(f'{{fg_green}}Imported a new keymap named {{fg_cyan}}{km_name}{{fg_green}}.{{fg_reset}}')
+ cli.log.info(f'To start working on things, `cd` into {{fg_cyan}}keyboards/{kb_name}/keymaps/{km_name}{{fg_reset}},')
+ cli.log.info('or open the directory in your preferred text editor.')
+ cli.log.info(f"And build with {{fg_yellow}}qmk compile -kb {kb_name} -km {km_name}{{fg_reset}}.")
diff --git a/lib/python/qmk/cli/lint.py b/lib/python/qmk/cli/lint.py
index 38b6457c43..6b077c250f 100644
--- a/lib/python/qmk/cli/lint.py
+++ b/lib/python/qmk/cli/lint.py
@@ -87,7 +87,7 @@ def keymap_check(kb, km):
return ok
# Additional checks
- invalid_files = git_get_ignored_files(keymap_path.parent)
+ invalid_files = git_get_ignored_files(keymap_path.parent.as_posix())
for file in invalid_files:
cli.log.error(f'{kb}/{km}: The file "{file}" should not exist!')
ok = False
diff --git a/lib/python/qmk/cli/multibuild.py b/lib/python/qmk/cli/multibuild.py
index dff8c88422..5e0f0b5188 100755
--- a/lib/python/qmk/cli/multibuild.py
+++ b/lib/python/qmk/cli/multibuild.py
@@ -28,6 +28,7 @@ def _is_split(keyboard_name):
return True if 'SPLIT_KEYBOARD' in rules_mk and rules_mk['SPLIT_KEYBOARD'].lower() == 'yes' else False
+@cli.argument('-t', '--no-temp', arg_only=True, action='store_true', help="Remove temporary files during build.")
@cli.argument('-j', '--parallel', type=int, default=1, help="Set the number of parallel make jobs; 0 means unlimited.")
@cli.argument('-c', '--clean', arg_only=True, action='store_true', help="Remove object files before compiling.")
@cli.argument('-f', '--filter', arg_only=True, action='append', default=[], help="Filter the list of keyboards based on the supplied value in rules.mk. Supported format is 'SPLIT_KEYBOARD=yes'. May be passed multiple times.")
@@ -69,6 +70,7 @@ def multibuild(cli):
all: {keyboard_safe}_binary
{keyboard_safe}_binary:
@rm -f "{QMK_FIRMWARE}/.build/failed.log.{keyboard_safe}" || true
+ @echo "Compiling QMK Firmware for target: '{keyboard_name}:{cli.args.keymap}'..." >>"{QMK_FIRMWARE}/.build/build.log.{os.getpid()}.{keyboard_safe}"
+@$(MAKE) -C "{QMK_FIRMWARE}" -f "{QMK_FIRMWARE}/builddefs/build_keyboard.mk" KEYBOARD="{keyboard_name}" KEYMAP="{cli.args.keymap}" REQUIRE_PLATFORM_KEY= COLOR=true SILENT=false {' '.join(cli.args.env)} \\
>>"{QMK_FIRMWARE}/.build/build.log.{os.getpid()}.{keyboard_safe}" 2>&1 \\
|| cp "{QMK_FIRMWARE}/.build/build.log.{os.getpid()}.{keyboard_safe}" "{QMK_FIRMWARE}/.build/failed.log.{os.getpid()}.{keyboard_safe}"
@@ -76,11 +78,26 @@ all: {keyboard_safe}_binary
|| {{ grep '\[WARNINGS\]' "{QMK_FIRMWARE}/.build/build.log.{os.getpid()}.{keyboard_safe}" >/dev/null 2>&1 && printf "Build %-64s \e[1;33m[WARNINGS]\e[0m\\n" "{keyboard_name}:{cli.args.keymap}" ; }} \\
|| printf "Build %-64s \e[1;32m[OK]\e[0m\\n" "{keyboard_name}:{cli.args.keymap}"
@rm -f "{QMK_FIRMWARE}/.build/build.log.{os.getpid()}.{keyboard_safe}" || true
-
"""# noqa
)
# yapf: enable
+ if cli.args.no_temp:
+ # yapf: disable
+ f.write(
+ f"""\
+ @rm -rf "{QMK_FIRMWARE}/.build/{keyboard_safe}_{cli.args.keymap}.elf" 2>/dev/null || true
+ @rm -rf "{QMK_FIRMWARE}/.build/{keyboard_safe}_{cli.args.keymap}.map" 2>/dev/null || true
+ @rm -rf "{QMK_FIRMWARE}/.build/{keyboard_safe}_{cli.args.keymap}.hex" 2>/dev/null || true
+ @rm -rf "{QMK_FIRMWARE}/.build/{keyboard_safe}_{cli.args.keymap}.bin" 2>/dev/null || true
+ @rm -rf "{QMK_FIRMWARE}/.build/{keyboard_safe}_{cli.args.keymap}.uf2" 2>/dev/null || true
+ @rm -rf "{QMK_FIRMWARE}/.build/obj_{keyboard_safe}" || true
+ @rm -rf "{QMK_FIRMWARE}/.build/obj_{keyboard_safe}_{cli.args.keymap}" || true
+"""# noqa
+ )
+ # yapf: enable
+ f.write('\n')
+
cli.run([make_cmd, *get_make_parallel_args(cli.args.parallel), '-f', makefile.as_posix(), 'all'], capture_output=False, stdin=DEVNULL)
# Check for failures
diff --git a/lib/python/qmk/constants.py b/lib/python/qmk/constants.py
index a54d9058bc..622199e46e 100644
--- a/lib/python/qmk/constants.py
+++ b/lib/python/qmk/constants.py
@@ -14,12 +14,13 @@ 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', 'STM32F405', 'STM32F407', 'STM32F411', 'STM32F446', 'STM32G431', 'STM32G474', 'STM32L412', 'STM32L422', 'STM32L432', 'STM32L433', 'STM32L442', 'STM32L443', 'GD32VF103', 'WB32F3G71', 'WB32FQ95'
+CHIBIOS_PROCESSORS = 'cortex-m0', 'cortex-m0plus', 'cortex-m3', 'cortex-m4', 'MKL26Z64', 'MK20DX128', 'MK20DX256', 'MK64FX512', 'MK66FX1M0', 'RP2040', 'STM32F042', 'STM32F072', 'STM32F103', 'STM32F303', 'STM32F401', 'STM32F405', 'STM32F407', 'STM32F411', 'STM32F446', 'STM32G431', 'STM32G474', 'STM32L412', 'STM32L422', 'STM32L432', 'STM32L433', 'STM32L442', 'STM32L443', 'GD32VF103', 'WB32F3G71', 'WB32FQ95'
LUFA_PROCESSORS = 'at90usb162', 'atmega16u2', 'atmega32u2', 'atmega16u4', 'atmega32u4', 'at90usb646', 'at90usb647', 'at90usb1286', 'at90usb1287', None
VUSB_PROCESSORS = 'atmega32a', 'atmega328p', 'atmega328', 'attiny85'
# Bootloaders of the supported processors
MCU2BOOTLOADER = {
+ "RP2040": "rp2040",
"MKL26Z64": "halfkay",
"MK20DX128": "halfkay",
"MK20DX256": "halfkay",
@@ -58,6 +59,59 @@ MCU2BOOTLOADER = {
"atmega328": "usbasploader",
}
+# Map of legacy keycodes that can be automatically updated
+LEGACY_KEYCODES = { # Comment here is to force multiline formatting
+ 'RESET': 'QK_BOOT'
+}
+
+# Map VID:PID values to bootloaders
+BOOTLOADER_VIDS_PIDS = {
+ 'atmel-dfu': {
+ ("03eb", "2fef"), # ATmega16U2
+ ("03eb", "2ff0"), # ATmega32U2
+ ("03eb", "2ff3"), # ATmega16U4
+ ("03eb", "2ff4"), # ATmega32U4
+ ("03eb", "2ff9"), # AT90USB64
+ ("03eb", "2ffa"), # AT90USB162
+ ("03eb", "2ffb") # AT90USB128
+ },
+ 'kiibohd': {("1c11", "b007")},
+ 'stm32-dfu': {
+ ("1eaf", "0003"), # STM32duino
+ ("0483", "df11") # STM32 DFU
+ },
+ 'apm32-dfu': {("314b", "0106")},
+ 'gd32v-dfu': {("28e9", "0189")},
+ 'bootloadhid': {("16c0", "05df")},
+ 'usbasploader': {("16c0", "05dc")},
+ 'usbtinyisp': {("1782", "0c9f")},
+ 'md-boot': {("03eb", "6124")},
+ 'caterina': {
+ # pid.codes shared PID
+ ("1209", "2302"), # Keyboardio Atreus 2 Bootloader
+ # Spark Fun Electronics
+ ("1b4f", "9203"), # Pro Micro 3V3/8MHz
+ ("1b4f", "9205"), # Pro Micro 5V/16MHz
+ ("1b4f", "9207"), # LilyPad 3V3/8MHz (and some Pro Micro clones)
+ # Pololu Electronics
+ ("1ffb", "0101"), # A-Star 32U4
+ # Arduino SA
+ ("2341", "0036"), # Leonardo
+ ("2341", "0037"), # Micro
+ # Adafruit Industries LLC
+ ("239a", "000c"), # Feather 32U4
+ ("239a", "000d"), # ItsyBitsy 32U4 3V3/8MHz
+ ("239a", "000e"), # ItsyBitsy 32U4 5V/16MHz
+ # dog hunter AG
+ ("2a03", "0036"), # Leonardo
+ ("2a03", "0037") # Micro
+ },
+ 'hid-bootloader': {
+ ("03eb", "2067"), # QMK HID
+ ("16c0", "0478") # PJRC halfkay
+ }
+}
+
# Common format strings
DATE_FORMAT = '%Y-%m-%d'
DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S %Z'
diff --git a/lib/python/qmk/flashers.py b/lib/python/qmk/flashers.py
new file mode 100644
index 0000000000..a9cf726b44
--- /dev/null
+++ b/lib/python/qmk/flashers.py
@@ -0,0 +1,203 @@
+import shutil
+import time
+import os
+import signal
+
+import usb.core
+
+from qmk.constants import BOOTLOADER_VIDS_PIDS
+from milc import cli
+
+# yapf: disable
+_PID_TO_MCU = {
+ '2fef': 'atmega16u2',
+ '2ff0': 'atmega32u2',
+ '2ff3': 'atmega16u4',
+ '2ff4': 'atmega32u4',
+ '2ff9': 'at90usb64',
+ '2ffa': 'at90usb162',
+ '2ffb': 'at90usb128'
+}
+
+AVRDUDE_MCU = {
+ 'atmega32a': 'm32',
+ 'atmega328p': 'm328p',
+ 'atmega328': 'm328',
+}
+# yapf: enable
+
+
+class DelayedKeyboardInterrupt:
+ # Custom interrupt handler to delay the processing of Ctrl-C
+ # https://stackoverflow.com/a/21919644
+ def __enter__(self):
+ self.signal_received = False
+ self.old_handler = signal.signal(signal.SIGINT, self.handler)
+
+ def handler(self, sig, frame):
+ self.signal_received = (sig, frame)
+
+ def __exit__(self, type, value, traceback):
+ signal.signal(signal.SIGINT, self.old_handler)
+ if self.signal_received:
+ self.old_handler(*self.signal_received)
+
+
+# TODO: Make this more generic, so cli/doctor/check.py and flashers.py can share the code
+def _check_dfu_programmer_version():
+ # Return True if version is higher than 0.7.0: supports '--force'
+ check = cli.run(['dfu-programmer', '--version'], combined_output=True, timeout=5)
+ first_line = check.stdout.split('\n')[0]
+ version_number = first_line.split()[1]
+ maj, min_, bug = version_number.split('.')
+ if int(maj) >= 0 and int(min_) >= 7:
+ return True
+ else:
+ return False
+
+
+def _find_bootloader():
+ # To avoid running forever in the background, only look for bootloaders for 10min
+ start_time = time.time()
+ while time.time() - start_time < 600:
+ for bl in BOOTLOADER_VIDS_PIDS:
+ for vid, pid in BOOTLOADER_VIDS_PIDS[bl]:
+ vid_hex = int(f'0x{vid}', 0)
+ pid_hex = int(f'0x{pid}', 0)
+ with DelayedKeyboardInterrupt():
+ # PyUSB does not like to be interrupted by Ctrl-C
+ # therefore we catch the interrupt with a custom handler
+ # and only process it once pyusb finished
+ dev = usb.core.find(idVendor=vid_hex, idProduct=pid_hex)
+ if dev:
+ if bl == 'atmel-dfu':
+ details = _PID_TO_MCU[pid]
+ elif bl == 'caterina':
+ details = (vid_hex, pid_hex)
+ elif bl == 'hid-bootloader':
+ if vid == '16c0' and pid == '0478':
+ details = 'halfkay'
+ else:
+ details = 'qmk-hid'
+ elif bl == 'stm32-dfu' or bl == 'apm32-dfu' or bl == 'gd32v-dfu' or bl == 'kiibohd':
+ details = (vid, pid)
+ else:
+ details = None
+ return (bl, details)
+ time.sleep(0.1)
+ return (None, None)
+
+
+def _find_serial_port(vid, pid):
+ if 'windows' in cli.platform.lower():
+ from serial.tools.list_ports_windows import comports
+ platform = 'windows'
+ else:
+ from serial.tools.list_ports_posix import comports
+ platform = 'posix'
+
+ start_time = time.time()
+ # Caterina times out after 8 seconds
+ while time.time() - start_time < 8:
+ for port in comports():
+ port, desc, hwid = port
+ if f'{vid:04x}:{pid:04x}' in hwid.casefold():
+ if platform == 'windows':
+ time.sleep(1)
+ return port
+ else:
+ start_time = time.time()
+ # Wait until the port becomes writable before returning
+ while time.time() - start_time < 8:
+ if os.access(port, os.W_OK):
+ return port
+ else:
+ time.sleep(0.5)
+ return None
+ return None
+
+
+def _flash_caterina(details, file):
+ port = _find_serial_port(details[0], details[1])
+ if port:
+ cli.run(['avrdude', '-p', 'atmega32u4', '-c', 'avr109', '-U', f'flash:w:{file}:i', '-P', port], capture_output=False)
+ return False
+ else:
+ return True
+
+
+def _flash_atmel_dfu(mcu, file):
+ force = '--force' if _check_dfu_programmer_version() else ''
+ cli.run(['dfu-programmer', mcu, 'erase', force], capture_output=False)
+ cli.run(['dfu-programmer', mcu, 'flash', force, file], capture_output=False)
+ cli.run(['dfu-programmer', mcu, 'reset'], capture_output=False)
+
+
+def _flash_hid_bootloader(mcu, details, file):
+ if details == 'halfkay':
+ if shutil.which('teensy-loader-cli'):
+ cmd = 'teensy-loader-cli'
+ elif shutil.which('teensy_loader_cli'):
+ cmd = 'teensy_loader_cli'
+
+ # Use 'hid_bootloader_cli' for QMK HID and as a fallback for HalfKay
+ if not cmd:
+ if shutil.which('hid_bootloader_cli'):
+ cmd = 'hid_bootloader_cli'
+ else:
+ return True
+
+ cli.run([cmd, f'-mmcu={mcu}', '-w', '-v', file], capture_output=False)
+
+
+def _flash_dfu_util(details, file):
+ # STM32duino
+ if details[0] == '1eaf' and details[1] == '0003':
+ cli.run(['dfu-util', '-a', '2', '-d', f'{details[0]}:{details[1]}', '-R', '-D', file], capture_output=False)
+ # kiibohd
+ elif details[0] == '1c11' and details[1] == 'b007':
+ cli.run(['dfu-util', '-a', '0', '-d', f'{details[0]}:{details[1]}', '-D', file], capture_output=False)
+ # STM32, APM32, or GD32V DFU
+ else:
+ cli.run(['dfu-util', '-a', '0', '-d', f'{details[0]}:{details[1]}', '-s', '0x08000000:leave', '-D', file], capture_output=False)
+
+
+def _flash_isp(mcu, programmer, file):
+ programmer = 'usbasp' if programmer == 'usbasploader' else 'usbtiny'
+ # Check if the provide mcu has an avrdude-specific name, otherwise pass on what the user provided
+ mcu = AVRDUDE_MCU.get(mcu, mcu)
+ cli.run(['avrdude', '-p', mcu, '-c', programmer, '-U', f'flash:w:{file}:i'], capture_output=False)
+
+
+def _flash_mdloader(file):
+ cli.run(['mdloader', '--first', '--download', file, '--restart'], capture_output=False)
+
+
+def flasher(mcu, file):
+ bl, details = _find_bootloader()
+ # Add a small sleep to avoid race conditions
+ time.sleep(1)
+ if bl == 'atmel-dfu':
+ _flash_atmel_dfu(details, file.name)
+ elif bl == 'caterina':
+ if _flash_caterina(details, file.name):
+ return (True, "The Caterina bootloader was found but is not writable. Check 'qmk doctor' output for advice.")
+ elif bl == 'hid-bootloader':
+ if mcu:
+ if _flash_hid_bootloader(mcu, details, file.name):
+ return (True, "Please make sure 'teensy_loader_cli' or 'hid_bootloader_cli' is available on your system.")
+ else:
+ return (True, "Specifying the MCU with '-m' is necessary for HalfKay/HID bootloaders!")
+ elif bl == 'stm32-dfu' or bl == 'apm32-dfu' or bl == 'gd32v-dfu' or bl == 'kiibohd':
+ _flash_dfu_util(details, file.name)
+ elif bl == 'usbasploader' or bl == 'usbtinyisp':
+ if mcu:
+ _flash_isp(mcu, bl, file.name)
+ else:
+ return (True, "Specifying the MCU with '-m' is necessary for ISP flashing!")
+ elif bl == 'md-boot':
+ _flash_mdloader(file.name)
+ else:
+ return (True, "Known bootloader found but flashing not currently supported!")
+
+ return (False, None)
diff --git a/lib/python/qmk/git.py b/lib/python/qmk/git.py
index f493628492..7fa0306f5c 100644
--- a/lib/python/qmk/git.py
+++ b/lib/python/qmk/git.py
@@ -62,6 +62,25 @@ def git_get_tag():
return git_tag.stdout.strip()
+def git_get_last_log_entry(branch_name):
+ """Retrieves the last log entry for the branch being worked on.
+ """
+ git_lastlog = cli.run(['git', '--no-pager', 'log', '--pretty=format:%ad (%h) -- %s', '--date=iso', '-n1', branch_name])
+
+ if git_lastlog.returncode == 0 and git_lastlog.stdout:
+ return git_lastlog.stdout.strip()
+
+
+def git_get_common_ancestor(branch_a, branch_b):
+ """Retrieves the common ancestor between for the two supplied branches.
+ """
+ git_merge_base = cli.run(['git', 'merge-base', branch_a, branch_b])
+ git_branchpoint_log = cli.run(['git', '--no-pager', 'log', '--pretty=format:%ad (%h) -- %s', '--date=iso', '-n1', git_merge_base.stdout.strip()])
+
+ if git_branchpoint_log.returncode == 0 and git_branchpoint_log.stdout:
+ return git_branchpoint_log.stdout.strip()
+
+
def git_get_remotes():
"""Returns the current remotes for a repo.
"""
@@ -111,9 +130,9 @@ def git_check_deviation(active_branch):
def git_get_ignored_files(check_dir='.'):
- """Return a list of files that would be captured by the current .gitingore
+ """Return a list of files that would be captured by the current .gitignore
"""
- invalid = cli.run(['git', 'ls-files', '-c', '-o', '-i', '--exclude-standard', check_dir])
+ invalid = cli.run(['git', 'ls-files', '-c', '-o', '-i', '--exclude-from=.gitignore', check_dir])
if invalid.returncode != 0:
return []
return invalid.stdout.strip().splitlines()
diff --git a/lib/python/qmk/importers.py b/lib/python/qmk/importers.py
new file mode 100644
index 0000000000..307c66ee3c
--- /dev/null
+++ b/lib/python/qmk/importers.py
@@ -0,0 +1,193 @@
+from dotty_dict import dotty
+from datetime import date
+from pathlib import Path
+import json
+
+from qmk.git import git_get_username
+from qmk.json_schema import validate
+from qmk.path import keyboard, keymap
+from qmk.constants import MCU2BOOTLOADER, LEGACY_KEYCODES
+from qmk.json_encoders import InfoJSONEncoder, KeymapJSONEncoder
+from qmk.json_schema import deep_update, json_load
+
+TEMPLATE = Path('data/templates/keyboard/')
+
+
+def replace_placeholders(src, dest, tokens):
+ """Replaces the given placeholders in each template file.
+ """
+ content = src.read_text()
+ for key, value in tokens.items():
+ content = content.replace(f'%{key}%', value)
+
+ dest.write_text(content)
+
+
+def _gen_dummy_keymap(name, info_data):
+ # Pick the first layout macro and just dump in KC_NOs or something?
+ (layout_name, layout_data), *_ = info_data["layouts"].items()
+ layout_length = len(layout_data["layout"])
+
+ keymap_data = {
+ "keyboard": name,
+ "layout": layout_name,
+ "layers": [["KC_NO" for _ in range(0, layout_length)]],
+ }
+
+ return keymap_data
+
+
+def _extract_kbfirmware_layout(kbf_data):
+ layout = []
+ for key in kbf_data['keyboard.keys']:
+ item = {
+ 'matrix': [key['row'], key['col']],
+ 'x': key['state']['x'],
+ 'y': key['state']['y'],
+ }
+ if key['state']['w'] != 1:
+ item['w'] = key['state']['w']
+ if key['state']['h'] != 1:
+ item['h'] = key['state']['h']
+ layout.append(item)
+
+ return layout
+
+
+def _extract_kbfirmware_keymap(kbf_data):
+ keymap_data = {
+ 'keyboard': kbf_data['keyboard.settings.name'].lower(),
+ 'layout': 'LAYOUT',
+ 'layers': [],
+ }
+
+ for i in range(15):
+ layer = []
+ for key in kbf_data['keyboard.keys']:
+ keycode = key['keycodes'][i]['id']
+ keycode = LEGACY_KEYCODES.get(keycode, keycode)
+ if '()' in keycode:
+ fields = key['keycodes'][i]['fields']
+ keycode = f'{keycode.split(")")[0]}{",".join(map(str, fields))})'
+ layer.append(keycode)
+ if set(layer) == {'KC_TRNS'}:
+ break
+ keymap_data['layers'].append(layer)
+
+ return keymap_data
+
+
+def import_keymap(keymap_data):
+ # Validate to ensure we don't have to deal with bad data - handles stdin/file
+ validate(keymap_data, 'qmk.keymap.v1')
+
+ kb_name = keymap_data['keyboard']
+ km_name = keymap_data['keymap']
+
+ km_folder = keymap(kb_name) / km_name
+ keyboard_keymap = km_folder / 'keymap.json'
+
+ # This is the deepest folder in the expected tree
+ keyboard_keymap.parent.mkdir(parents=True, exist_ok=True)
+
+ # Dump out all those lovely files
+ keyboard_keymap.write_text(json.dumps(keymap_data, cls=KeymapJSONEncoder))
+
+ return (kb_name, km_name)
+
+
+def import_keyboard(info_data, keymap_data=None):
+ # Validate to ensure we don't have to deal with bad data - handles stdin/file
+ validate(info_data, 'qmk.api.keyboard.v1')
+
+ # And validate some more as everything is optional
+ if not all(key in info_data for key in ['keyboard_name', 'layouts']):
+ raise ValueError('invalid info.json')
+
+ kb_name = info_data['keyboard_name']
+
+ # bail
+ kb_folder = keyboard(kb_name)
+ if kb_folder.exists():
+ raise ValueError(f'Keyboard {{fg_cyan}}{kb_name}{{fg_reset}} already exists! Please choose a different name.')
+
+ if not keymap_data:
+ # TODO: if supports community then grab that instead
+ keymap_data = _gen_dummy_keymap(kb_name, info_data)
+
+ keyboard_info = kb_folder / 'info.json'
+ keyboard_keymap = kb_folder / 'keymaps' / 'default' / 'keymap.json'
+
+ # begin with making the deepest folder in the tree
+ keyboard_keymap.parent.mkdir(parents=True, exist_ok=True)
+
+ user_name = git_get_username()
+ if not user_name:
+ user_name = 'TODO'
+
+ tokens = { # Comment here is to force multiline formatting
+ 'YEAR': str(date.today().year),
+ 'KEYBOARD': kb_name,
+ 'USER_NAME': user_name,
+ 'REAL_NAME': user_name,
+ }
+
+ # Dump out all those lovely files
+ for file in list(TEMPLATE.iterdir()):
+ replace_placeholders(file, kb_folder / file.name, tokens)
+
+ temp = json_load(keyboard_info)
+ deep_update(temp, info_data)
+
+ keyboard_info.write_text(json.dumps(temp, cls=InfoJSONEncoder))
+ keyboard_keymap.write_text(json.dumps(keymap_data, cls=KeymapJSONEncoder))
+
+ return kb_name
+
+
+def import_kbfirmware(kbfirmware_data):
+ kbf_data = dotty(kbfirmware_data)
+
+ diode_direction = ["COL2ROW", "ROW2COL"][kbf_data['keyboard.settings.diodeDirection']]
+ mcu = ["atmega32u2", "atmega32u4", "at90usb1286"][kbf_data['keyboard.controller']]
+ bootloader = MCU2BOOTLOADER.get(mcu, "custom")
+
+ layout = _extract_kbfirmware_layout(kbf_data)
+ keymap_data = _extract_kbfirmware_keymap(kbf_data)
+
+ # convert to d/d info.json
+ info_data = dotty({
+ "keyboard_name": kbf_data['keyboard.settings.name'].lower(),
+ "processor": mcu,
+ "bootloader": bootloader,
+ "diode_direction": diode_direction,
+ "matrix_pins": {
+ "cols": kbf_data['keyboard.pins.col'],
+ "rows": kbf_data['keyboard.pins.row'],
+ },
+ "layouts": {
+ "LAYOUT": {
+ "layout": layout,
+ }
+ }
+ })
+
+ if kbf_data['keyboard.pins.num'] or kbf_data['keyboard.pins.caps'] or kbf_data['keyboard.pins.scroll']:
+ if kbf_data['keyboard.pins.num']:
+ info_data['indicators.num_lock'] = kbf_data['keyboard.pins.num']
+ if kbf_data['keyboard.pins.caps']:
+ info_data['indicators.caps_lock'] = kbf_data['keyboard.pins.caps']
+ if kbf_data['keyboard.pins.scroll']:
+ info_data['indicators.scroll_lock'] = kbf_data['keyboard.pins.scroll']
+
+ if kbf_data['keyboard.pins.rgb']:
+ info_data['rgblight.animations.all'] = True
+ info_data['rgblight.led_count'] = kbf_data['keyboard.settings.rgbNum']
+ info_data['rgblight.pin'] = kbf_data['keyboard.pins.rgb']
+
+ if kbf_data['keyboard.pins.led']:
+ info_data['backlight.levels'] = kbf_data['keyboard.settings.backlightLevels']
+ info_data['backlight.pin'] = kbf_data['keyboard.pins.led']
+
+ # delegate as if it were a regular keyboard import
+ return import_keyboard(info_data.to_dict(), keymap_data)
diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py
index 23761d71b7..7460d84ad3 100644
--- a/lib/python/qmk/info.py
+++ b/lib/python/qmk/info.py
@@ -110,14 +110,7 @@ def info_json(keyboard):
def _extract_features(info_data, rules):
"""Find all the features enabled in rules.mk.
"""
- # Special handling for bootmagic which also supports a "lite" mode.
- if rules.get('BOOTMAGIC_ENABLE') == 'lite':
- rules['BOOTMAGIC_LITE_ENABLE'] = 'on'
- del rules['BOOTMAGIC_ENABLE']
- if rules.get('BOOTMAGIC_ENABLE') == 'full':
- rules['BOOTMAGIC_ENABLE'] = 'on'
-
- # Process the rest of the rules as booleans
+ # Process booleans rules
for key, value in rules.items():
if key.endswith('_ENABLE'):
key = '_'.join(key.split('_')[:-1]).lower()
@@ -218,6 +211,66 @@ def _extract_audio(info_data, config_c):
info_data['audio'] = {'pins': audio_pins}
+def _extract_encoders_values(config_c, postfix=''):
+ """Common encoder extraction logic
+ """
+ a_pad = config_c.get(f'ENCODERS_PAD_A{postfix}', '').replace(' ', '')[1:-1]
+ b_pad = config_c.get(f'ENCODERS_PAD_B{postfix}', '').replace(' ', '')[1:-1]
+ resolutions = config_c.get(f'ENCODER_RESOLUTIONS{postfix}', '').replace(' ', '')[1:-1]
+
+ default_resolution = config_c.get('ENCODER_RESOLUTION', None)
+
+ if a_pad and b_pad:
+ a_pad = list(filter(None, a_pad.split(',')))
+ b_pad = list(filter(None, b_pad.split(',')))
+ resolutions = list(filter(None, resolutions.split(',')))
+ if default_resolution:
+ resolutions += [default_resolution] * (len(a_pad) - len(resolutions))
+
+ encoders = []
+ for index in range(len(a_pad)):
+ encoder = {'pin_a': a_pad[index], 'pin_b': b_pad[index]}
+ if index < len(resolutions):
+ encoder['resolution'] = int(resolutions[index])
+ encoders.append(encoder)
+
+ return encoders
+
+
+def _extract_encoders(info_data, config_c):
+ """Populate data about encoder pins
+ """
+ encoders = _extract_encoders_values(config_c)
+ if encoders:
+ if 'encoder' not in info_data:
+ info_data['encoder'] = {}
+
+ if 'rotary' in info_data['encoder']:
+ _log_warning(info_data, 'Encoder config is specified in both config.h and info.json (encoder.rotary) (Value: %s), the config.h value wins.' % info_data['encoder']['rotary'])
+
+ info_data['encoder']['rotary'] = encoders
+
+
+def _extract_split_encoders(info_data, config_c):
+ """Populate data about split encoder pins
+ """
+ encoders = _extract_encoders_values(config_c, '_RIGHT')
+ if encoders:
+ if 'split' not in info_data:
+ info_data['split'] = {}
+
+ if 'encoder' not in info_data['split']:
+ info_data['split']['encoder'] = {}
+
+ if 'right' not in info_data['split']['encoder']:
+ info_data['split']['encoder']['right'] = {}
+
+ if 'rotary' in info_data['split']['encoder']['right']:
+ _log_warning(info_data, 'Encoder config is specified in both config.h and info.json (encoder.rotary) (Value: %s), the config.h value wins.' % info_data['split']['encoder']['right']['rotary'])
+
+ info_data['split']['encoder']['right']['rotary'] = encoders
+
+
def _extract_secure_unlock(info_data, config_c):
"""Populate data about the secure unlock sequence
"""
@@ -314,30 +367,10 @@ def _extract_split_right_pins(info_data, config_c):
# Figure out the right half matrix pins
row_pins = config_c.get('MATRIX_ROW_PINS_RIGHT', '').replace('{', '').replace('}', '').strip()
col_pins = config_c.get('MATRIX_COL_PINS_RIGHT', '').replace('{', '').replace('}', '').strip()
- unused_pin_text = config_c.get('UNUSED_PINS_RIGHT')
- unused_pins = unused_pin_text.replace('{', '').replace('}', '').strip() if isinstance(unused_pin_text, str) else None
direct_pins = config_c.get('DIRECT_PINS_RIGHT', '').replace(' ', '')[1:-1]
- if row_pins and col_pins:
- if info_data.get('split', {}).get('matrix_pins', {}).get('right') in info_data:
- _log_warning(info_data, 'Right hand matrix data is specified in both info.json and config.h, the config.h values win.')
-
- if 'split' not in info_data:
- info_data['split'] = {}
-
- if 'matrix_pins' not in info_data['split']:
- info_data['split']['matrix_pins'] = {}
-
- if 'right' not in info_data['split']['matrix_pins']:
- info_data['split']['matrix_pins']['right'] = {}
-
- info_data['split']['matrix_pins']['right'] = {
- 'cols': _extract_pins(col_pins),
- 'rows': _extract_pins(row_pins),
- }
-
- if direct_pins:
- if info_data.get('split', {}).get('matrix_pins', {}).get('right', {}):
+ if row_pins or col_pins or direct_pins:
+ if info_data.get('split', {}).get('matrix_pins', {}).get('right', None):
_log_warning(info_data, 'Right hand matrix data is specified in both info.json and config.h, the config.h values win.')
if 'split' not in info_data:
@@ -349,19 +382,14 @@ def _extract_split_right_pins(info_data, config_c):
if 'right' not in info_data['split']['matrix_pins']:
info_data['split']['matrix_pins']['right'] = {}
- info_data['split']['matrix_pins']['right']['direct'] = _extract_direct_matrix(direct_pins)
+ if col_pins:
+ info_data['split']['matrix_pins']['right']['cols'] = _extract_pins(col_pins)
- if unused_pins:
- if 'split' not in info_data:
- info_data['split'] = {}
+ if row_pins:
+ info_data['split']['matrix_pins']['right']['rows'] = _extract_pins(row_pins)
- if 'matrix_pins' not in info_data['split']:
- info_data['split']['matrix_pins'] = {}
-
- if 'right' not in info_data['split']['matrix_pins']:
- info_data['split']['matrix_pins']['right'] = {}
-
- info_data['split']['matrix_pins']['right']['unused'] = _extract_pins(unused_pins)
+ if direct_pins:
+ info_data['split']['matrix_pins']['right']['direct'] = _extract_direct_matrix(direct_pins)
def _extract_matrix_info(info_data, config_c):
@@ -369,8 +397,6 @@ def _extract_matrix_info(info_data, config_c):
"""
row_pins = config_c.get('MATRIX_ROW_PINS', '').replace('{', '').replace('}', '').strip()
col_pins = config_c.get('MATRIX_COL_PINS', '').replace('{', '').replace('}', '').strip()
- unused_pin_text = config_c.get('UNUSED_PINS')
- unused_pins = unused_pin_text.replace('{', '').replace('}', '').strip() if isinstance(unused_pin_text, str) else None
direct_pins = config_c.get('DIRECT_PINS', '').replace(' ', '')[1:-1]
info_snippet = {}
@@ -396,12 +422,6 @@ def _extract_matrix_info(info_data, config_c):
info_snippet['direct'] = _extract_direct_matrix(direct_pins)
- if unused_pins:
- if 'matrix_pins' not in info_data:
- info_data['matrix_pins'] = {}
-
- info_snippet['unused'] = _extract_pins(unused_pins)
-
if config_c.get('CUSTOM_MATRIX', 'no') != 'no':
if 'matrix_pins' in info_data and 'custom' in info_data['matrix_pins']:
_log_warning(info_data, 'Custom Matrix is specified in both info.json and config.h, the config.h values win.')
@@ -483,10 +503,17 @@ def _extract_config_h(info_data, config_c):
key_type = info_dict.get('value_type', 'raw')
try:
+ replace_with = info_dict.get('replace_with')
if config_key in config_c and info_dict.get('invalid', False):
- _log_error(info_data, '%s in config.h is no longer a valid option' % config_key)
+ if replace_with:
+ _log_error(info_data, '%s in config.h is no longer a valid option and should be replaced with %s' % (config_key, replace_with))
+ else:
+ _log_error(info_data, '%s in config.h is no longer a valid option and should be removed' % config_key)
elif config_key in config_c and info_dict.get('deprecated', False):
- _log_warning(info_data, '%s in config.h is deprecated and will be removed at a later date' % config_key)
+ if replace_with:
+ _log_warning(info_data, '%s in config.h is deprecated in favor of %s and will be removed at a later date' % (config_key, replace_with))
+ else:
+ _log_warning(info_data, '%s in config.h is deprecated and will be removed at a later date' % config_key)
if config_key in config_c and info_dict.get('to_json', True):
if dotty_info.get(info_key) and info_dict.get('warn_duplicate', True):
@@ -506,6 +533,8 @@ def _extract_config_h(info_data, config_c):
_extract_split_main(info_data, config_c)
_extract_split_transport(info_data, config_c)
_extract_split_right_pins(info_data, config_c)
+ _extract_encoders(info_data, config_c)
+ _extract_split_encoders(info_data, config_c)
_extract_device_version(info_data)
return info_data
@@ -547,10 +576,17 @@ def _extract_rules_mk(info_data, rules):
key_type = info_dict.get('value_type', 'raw')
try:
+ replace_with = info_dict.get('replace_with')
if rules_key in rules and info_dict.get('invalid', False):
- _log_error(info_data, '%s in rules.mk is no longer a valid option' % rules_key)
+ if replace_with:
+ _log_error(info_data, '%s in rules.mk is no longer a valid option and should be replaced with %s' % (rules_key, replace_with))
+ else:
+ _log_error(info_data, '%s in rules.mk is no longer a valid option and should be removed' % rules_key)
elif rules_key in rules and info_dict.get('deprecated', False):
- _log_warning(info_data, '%s in rules.mk is deprecated and will be removed at a later date' % rules_key)
+ if replace_with:
+ _log_warning(info_data, '%s in rules.mk is deprecated in favor of %s and will be removed at a later date' % (rules_key, replace_with))
+ else:
+ _log_warning(info_data, '%s in rules.mk is deprecated and will be removed at a later date' % rules_key)
if rules_key in rules and info_dict.get('to_json', True):
if dotty_info.get(info_key) and info_dict.get('warn_duplicate', True):
diff --git a/lib/python/qmk/json_schema.py b/lib/python/qmk/json_schema.py
index 682346113e..01175146b5 100644
--- a/lib/python/qmk/json_schema.py
+++ b/lib/python/qmk/json_schema.py
@@ -68,11 +68,7 @@ def create_validator(schema):
schema_store = compile_schema_store()
resolver = jsonschema.RefResolver.from_schema(schema_store[schema], store=schema_store)
- # TODO: Remove this after the jsonschema>=4 requirement had time to reach users
- try:
- return jsonschema.Draft202012Validator(schema_store[schema], resolver=resolver).validate
- except AttributeError:
- return jsonschema.Draft7Validator(schema_store[schema], resolver=resolver).validate
+ return jsonschema.Draft202012Validator(schema_store[schema], resolver=resolver).validate
def validate(data, schema):
diff --git a/lib/python/qmk/keymap.py b/lib/python/qmk/keymap.py
index ca5be0959b..f317f4d11e 100644
--- a/lib/python/qmk/keymap.py
+++ b/lib/python/qmk/keymap.py
@@ -12,7 +12,7 @@ from pygments.token import Token
from pygments import lex
import qmk.path
-from qmk.keyboard import find_keyboard_from_dir, rules_mk
+from qmk.keyboard import find_keyboard_from_dir, rules_mk, keyboard_folder
from qmk.errors import CppError
# The `keymap.c` template to use when a keyboard doesn't have its own
@@ -357,7 +357,7 @@ def locate_keymap(keyboard, keymap):
checked_dirs = ''
keymap_path = ''
- for dir in keyboard.split('/'):
+ for dir in keyboard_folder(keyboard).split('/'):
if checked_dirs:
checked_dirs = '/'.join((checked_dirs, dir))
else:
diff --git a/lib/python/qmk/submodules.py b/lib/python/qmk/submodules.py
index 6a272dae50..52efa602a0 100644
--- a/lib/python/qmk/submodules.py
+++ b/lib/python/qmk/submodules.py
@@ -11,7 +11,11 @@ def status():
{
'name': 'submodule_name',
'status': None/False/True,
- 'githash': '<sha-1 hash for the submodule>
+ 'githash': '<sha-1 hash for the submodule>'
+ 'shorthash': '<short hash for the submodule>'
+ 'describe': '<output of `git describe --tags`>'
+ 'last_log_message': 'log message'
+ 'last_log_timestamp': 'timestamp'
}
status is None when the submodule doesn't exist, False when it's out of date, and True when it's current
@@ -36,6 +40,26 @@ def status():
else:
raise ValueError('Unknown `git submodule status` sha-1 prefix character: "%s"' % status)
+ submodule_logs = cli.run(['git', 'submodule', '-q', 'foreach', 'git --no-pager log --pretty=format:"$sm_path%x01%h%x01%ad%x01%s%x0A" --date=iso -n1'])
+ for log_line in submodule_logs.stdout.split('\n'):
+ if not log_line:
+ continue
+
+ r = log_line.split('\x01')
+ submodule = r[0]
+ submodules[submodule]['shorthash'] = r[1] if len(r) > 1 else ''
+ submodules[submodule]['last_log_timestamp'] = r[2] if len(r) > 2 else ''
+ submodules[submodule]['last_log_message'] = r[3] if len(r) > 3 else ''
+
+ submodule_tags = cli.run(['git', 'submodule', '-q', 'foreach', '\'echo $sm_path `git describe --tags`\''])
+ for log_line in submodule_tags.stdout.split('\n'):
+ if not log_line:
+ continue
+
+ r = log_line.split()
+ submodule = r[0]
+ submodules[submodule]['describe'] = r[1] if len(r) > 1 else ''
+
return submodules
diff --git a/lib/python/qmk/tests/test_cli_commands.py b/lib/python/qmk/tests/test_cli_commands.py
index 2463543ef1..fde8b079a3 100644
--- a/lib/python/qmk/tests/test_cli_commands.py
+++ b/lib/python/qmk/tests/test_cli_commands.py
@@ -97,13 +97,15 @@ def test_list_keyboards():
def test_list_keymaps():
result = check_subcommand('list-keymaps', '-kb', 'handwired/pytest/basic')
check_returncode(result)
- assert 'default' and 'default_json' in result.stdout
+ assert 'default' in result.stdout
+ assert 'default_json' in result.stdout
def test_list_keymaps_long():
result = check_subcommand('list-keymaps', '--keyboard', 'handwired/pytest/basic')
check_returncode(result)
- assert 'default' and 'default_json' in result.stdout
+ assert 'default' in result.stdout
+ assert 'default_json' in result.stdout
def test_list_keymaps_community():
@@ -115,19 +117,22 @@ def test_list_keymaps_community():
def test_list_keymaps_kb_only():
result = check_subcommand('list-keymaps', '-kb', 'contra')
check_returncode(result)
- assert 'default' and 'via' in result.stdout
+ assert 'default' in result.stdout
+ assert 'via' in result.stdout
def test_list_keymaps_vendor_kb():
result = check_subcommand('list-keymaps', '-kb', 'ai03/lunar')
check_returncode(result)
- assert 'default' and 'via' in result.stdout
+ assert 'default' in result.stdout
+ assert 'via' in result.stdout
def test_list_keymaps_vendor_kb_rev():
result = check_subcommand('list-keymaps', '-kb', 'kbdfans/kbd67/mkiirgb/v2')
check_returncode(result)
- assert 'default' and 'via' in result.stdout
+ assert 'default' in result.stdout
+ assert 'via' in result.stdout
def test_list_keymaps_no_keyboard_found():
diff --git a/lib/vusb b/lib/vusb
-Subproject bdb53e4c043d089279d9891b68bea77614cb97e
+Subproject 819dbc1e5d5926b17e27e00ca6d3d2988adae04
diff --git a/platforms/arm_atsam/platform.mk b/platforms/arm_atsam/platform.mk
index b49bf764d7..9462f517ae 100644
--- a/platforms/arm_atsam/platform.mk
+++ b/platforms/arm_atsam/platform.mk
@@ -24,13 +24,14 @@ COMPILEFLAGS += -fno-strict-aliasing
COMPILEFLAGS += -mfloat-abi=hard
COMPILEFLAGS += -mfpu=fpv4-sp-d16
COMPILEFLAGS += -mthumb
+COMPILEFLAGS += -fno-builtin-printf
#ALLOW_WARNINGS = yes
CFLAGS += $(COMPILEFLAGS)
CXXFLAGS += $(COMPILEFLAGS)
-CXXFLAGS += -fno-exceptions -std=c++11
+CXXFLAGS += -fno-exceptions $(CXXSTANDARD)
LDFLAGS +=-Wl,--gc-sections
LDFLAGS += -Wl,-Map="%OUT%%PROJ_NAME%.map"
diff --git a/platforms/avr/_wait.h b/platforms/avr/_wait.h
index 683db6ae57..c1a598a428 100644
--- a/platforms/avr/_wait.h
+++ b/platforms/avr/_wait.h
@@ -17,6 +17,26 @@
#include <util/delay.h>
+// http://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf
+// page 22: Table 4-2. Arithmetic and Logic Instructions
+/*
+ for (uint16_t i = times; i > 0; i--) {
+ __builtin_avr_delay_cycles(1);
+ }
+
+ .L3: sbiw r24,0 // loop step 1
+ brne .L4 // loop step 2
+ ret
+ .L4: nop // __builtin_avr_delay_cycles(1);
+ sbiw r24,1 // loop step 3
+ rjmp .L3 // loop step 4
+*/
+
+#define AVR_sbiw_clocks 2
+#define AVR_rjmp_clocks 2
+#define AVR_brne_clocks 2
+#define AVR_WAIT_LOOP_OVERHEAD (AVR_sbiw_clocks + AVR_brne_clocks + AVR_sbiw_clocks + AVR_rjmp_clocks)
+
#define wait_ms(ms) \
do { \
if (__builtin_constant_p(ms)) { \
@@ -27,15 +47,15 @@
} \
} \
} while (0)
-#define wait_us(us) \
- do { \
- if (__builtin_constant_p(us)) { \
- _delay_us(us); \
- } else { \
- for (uint16_t i = us; i > 0; i--) { \
- _delay_us(1); \
- } \
- } \
+#define wait_us(us) \
+ do { \
+ if (__builtin_constant_p(us)) { \
+ _delay_us(us); \
+ } else { \
+ for (uint16_t i = us; i > 0; i--) { \
+ __builtin_avr_delay_cycles((F_CPU / 1000000) - AVR_WAIT_LOOP_OVERHEAD); \
+ } \
+ } \
} while (0)
#define wait_cpuclock(n) __builtin_avr_delay_cycles(n)
#define CPU_CLOCK F_CPU
diff --git a/platforms/avr/drivers/i2c_master.c b/platforms/avr/drivers/i2c_master.c
index c1a7b5f72d..524494c99d 100644
--- a/platforms/avr/drivers/i2c_master.c
+++ b/platforms/avr/drivers/i2c_master.c
@@ -64,7 +64,7 @@ static i2c_status_t i2c_start_impl(uint8_t address, uint16_t timeout) {
uint16_t timeout_timer = timer_read();
while (!(TWCR & (1 << TWINT))) {
- if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) {
+ if ((timeout != I2C_TIMEOUT_INFINITE) && (timer_elapsed(timeout_timer) > timeout)) {
return I2C_STATUS_TIMEOUT;
}
}
@@ -81,7 +81,7 @@ static i2c_status_t i2c_start_impl(uint8_t address, uint16_t timeout) {
timeout_timer = timer_read();
while (!(TWCR & (1 << TWINT))) {
- if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) {
+ if ((timeout != I2C_TIMEOUT_INFINITE) && (timer_elapsed(timeout_timer) > timeout)) {
return I2C_STATUS_TIMEOUT;
}
}
@@ -102,7 +102,7 @@ i2c_status_t i2c_start(uint8_t address, uint16_t timeout) {
i2c_status_t status;
do {
status = i2c_start_impl(address, time_slice);
- } while ((status < 0) && ((timeout == I2C_TIMEOUT_INFINITE) || (timer_elapsed(timeout_timer) < timeout)));
+ } while ((status < 0) && ((timeout == I2C_TIMEOUT_INFINITE) || (timer_elapsed(timeout_timer) <= timeout)));
return status;
}
@@ -114,7 +114,7 @@ i2c_status_t i2c_write(uint8_t data, uint16_t timeout) {
uint16_t timeout_timer = timer_read();
while (!(TWCR & (1 << TWINT))) {
- if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) {
+ if ((timeout != I2C_TIMEOUT_INFINITE) && (timer_elapsed(timeout_timer) > timeout)) {
return I2C_STATUS_TIMEOUT;
}
}
@@ -132,7 +132,7 @@ int16_t i2c_read_ack(uint16_t timeout) {
uint16_t timeout_timer = timer_read();
while (!(TWCR & (1 << TWINT))) {
- if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) {
+ if ((timeout != I2C_TIMEOUT_INFINITE) && (timer_elapsed(timeout_timer) > timeout)) {
return I2C_STATUS_TIMEOUT;
}
}
@@ -147,7 +147,7 @@ int16_t i2c_read_nack(uint16_t timeout) {
uint16_t timeout_timer = timer_read();
while (!(TWCR & (1 << TWINT))) {
- if ((timeout != I2C_TIMEOUT_INFINITE) && ((timer_read() - timeout_timer) >= timeout)) {
+ if ((timeout != I2C_TIMEOUT_INFINITE) && (timer_elapsed(timeout_timer) > timeout)) {
return I2C_STATUS_TIMEOUT;
}
}
diff --git a/platforms/avr/drivers/i2c_master.h b/platforms/avr/drivers/i2c_master.h
index 2d95846db5..04ef126c80 100644
--- a/platforms/avr/drivers/i2c_master.h
+++ b/platforms/avr/drivers/i2c_master.h
@@ -19,6 +19,8 @@
#pragma once
+#include <stdint.h>
+
#define I2C_READ 0x01
#define I2C_WRITE 0x00
diff --git a/platforms/avr/drivers/ps2/ps2_usart.c b/platforms/avr/drivers/ps2/ps2_usart.c
index 39ec930d4a..581badac64 100644
--- a/platforms/avr/drivers/ps2/ps2_usart.c
+++ b/platforms/avr/drivers/ps2/ps2_usart.c
@@ -72,8 +72,8 @@ uint8_t ps2_error = PS2_ERR_NONE;
static inline uint8_t pbuf_dequeue(void);
static inline void pbuf_enqueue(uint8_t data);
-static inline bool pbuf_has_data(void);
static inline void pbuf_clear(void);
+bool pbuf_has_data(void);
void ps2_host_init(void) {
idle(); // without this many USART errors occur when cable is disconnected
@@ -212,7 +212,7 @@ static inline uint8_t pbuf_dequeue(void) {
return val;
}
-static inline bool pbuf_has_data(void) {
+bool pbuf_has_data(void) {
uint8_t sreg = SREG;
cli();
bool has_data = (pbuf_head != pbuf_tail);
diff --git a/platforms/avr/drivers/ssd1306.c b/platforms/avr/drivers/ssd1306.c
deleted file mode 100644
index 7afbc09f00..0000000000
--- a/platforms/avr/drivers/ssd1306.c
+++ /dev/null
@@ -1,329 +0,0 @@
-#ifdef SSD1306OLED
-
-# include "ssd1306.h"
-# include "i2c.h"
-# include <string.h>
-# include "print.h"
-# include "glcdfont.c"
-# ifdef PROTOCOL_LUFA
-# include "lufa.h"
-# endif
-# include "sendchar.h"
-# include "timer.h"
-
-struct CharacterMatrix display;
-
-// Set this to 1 to help diagnose early startup problems
-// when testing power-on with ble. Turn it off otherwise,
-// as the latency of printing most of the debug info messes
-// with the matrix scan, causing keys to drop.
-# define DEBUG_TO_SCREEN 0
-
-// static uint16_t last_battery_update;
-// static uint32_t vbat;
-//#define BatteryUpdateInterval 10000 /* milliseconds */
-# define ScreenOffInterval 300000 /* milliseconds */
-# if DEBUG_TO_SCREEN
-static uint8_t displaying;
-# endif
-static uint16_t last_flush;
-
-// Write command sequence.
-// Returns true on success.
-static inline bool _send_cmd1(uint8_t cmd) {
- bool res = false;
-
- if (i2c_start_write(SSD1306_ADDRESS)) {
- xprintf("failed to start write to %d\n", SSD1306_ADDRESS);
- goto done;
- }
-
- if (i2c_master_write(0x0 /* command byte follows */)) {
- print("failed to write control byte\n");
-
- goto done;
- }
-
- if (i2c_master_write(cmd)) {
- xprintf("failed to write command %d\n", cmd);
- goto done;
- }
- res = true;
-done:
- i2c_master_stop();
- return res;
-}
-
-// Write 2-byte command sequence.
-// Returns true on success
-static inline bool _send_cmd2(uint8_t cmd, uint8_t opr) {
- if (!_send_cmd1(cmd)) {
- return false;
- }
- return _send_cmd1(opr);
-}
-
-// Write 3-byte command sequence.
-// Returns true on success
-static inline bool _send_cmd3(uint8_t cmd, uint8_t opr1, uint8_t opr2) {
- if (!_send_cmd1(cmd)) {
- return false;
- }
- if (!_send_cmd1(opr1)) {
- return false;
- }
- return _send_cmd1(opr2);
-}
-
-# define send_cmd1(c) \
- if (!_send_cmd1(c)) { \
- goto done; \
- }
-# define send_cmd2(c, o) \
- if (!_send_cmd2(c, o)) { \
- goto done; \
- }
-# define send_cmd3(c, o1, o2) \
- if (!_send_cmd3(c, o1, o2)) { \
- goto done; \
- }
-
-static void clear_display(void) {
- matrix_clear(&display);
-
- // Clear all of the display bits (there can be random noise
- // in the RAM on startup)
- send_cmd3(PageAddr, 0, (DisplayHeight / 8) - 1);
- send_cmd3(ColumnAddr, 0, DisplayWidth - 1);
-
- if (i2c_start_write(SSD1306_ADDRESS)) {
- goto done;
- }
- if (i2c_master_write(0x40)) {
- // Data mode
- goto done;
- }
- for (uint8_t row = 0; row < MatrixRows; ++row) {
- for (uint8_t col = 0; col < DisplayWidth; ++col) {
- i2c_master_write(0);
- }
- }
-
- display.dirty = false;
-
-done:
- i2c_master_stop();
-}
-
-# if DEBUG_TO_SCREEN
-# undef sendchar
-static int8_t capture_sendchar(uint8_t c) {
- sendchar(c);
- iota_gfx_write_char(c);
-
- if (!displaying) {
- iota_gfx_flush();
- }
- return 0;
-}
-# endif
-
-bool iota_gfx_init(void) {
- bool success = false;
-
- send_cmd1(DisplayOff);
- send_cmd2(SetDisplayClockDiv, 0x80);
- send_cmd2(SetMultiPlex, DisplayHeight - 1);
-
- send_cmd2(SetDisplayOffset, 0);
-
- send_cmd1(SetStartLine | 0x0);
- send_cmd2(SetChargePump, 0x14 /* Enable */);
- send_cmd2(SetMemoryMode, 0 /* horizontal addressing */);
-
-# ifdef OLED_ROTATE180
- // the following Flip the display orientation 180 degrees
- send_cmd1(SegRemap);
- send_cmd1(ComScanInc);
-# endif
-# ifndef OLED_ROTATE180
- // Flips the display orientation 0 degrees
- send_cmd1(SegRemap | 0x1);
- send_cmd1(ComScanDec);
-# endif
-
- send_cmd2(SetComPins, 0x2);
- send_cmd2(SetContrast, 0x8f);
- send_cmd2(SetPreCharge, 0xf1);
- send_cmd2(SetVComDetect, 0x40);
- send_cmd1(DisplayAllOnResume);
- send_cmd1(NormalDisplay);
- send_cmd1(DeActivateScroll);
- send_cmd1(DisplayOn);
-
- send_cmd2(SetContrast, 0); // Dim
-
- clear_display();
-
- success = true;
-
- iota_gfx_flush();
-
-# if DEBUG_TO_SCREEN
- print_set_sendchar(capture_sendchar);
-# endif
-
-done:
- return success;
-}
-
-bool iota_gfx_off(void) {
- bool success = false;
-
- send_cmd1(DisplayOff);
- success = true;
-
-done:
- return success;
-}
-
-bool iota_gfx_on(void) {
- bool success = false;
-
- send_cmd1(DisplayOn);
- success = true;
-
-done:
- return success;
-}
-
-void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c) {
- *matrix->cursor = c;
- ++matrix->cursor;
-
- if (matrix->cursor - &matrix->display[0][0] == sizeof(matrix->display)) {
- // We went off the end; scroll the display upwards by one line
- memmove(&matrix->display[0], &matrix->display[1], MatrixCols * (MatrixRows - 1));
- matrix->cursor = &matrix->display[MatrixRows - 1][0];
- memset(matrix->cursor, ' ', MatrixCols);
- }
-}
-
-void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c) {
- matrix->dirty = true;
-
- if (c == '\n') {
- // Clear to end of line from the cursor and then move to the
- // start of the next line
- uint8_t cursor_col = (matrix->cursor - &matrix->display[0][0]) % MatrixCols;
-
- while (cursor_col++ < MatrixCols) {
- matrix_write_char_inner(matrix, ' ');
- }
- return;
- }
-
- matrix_write_char_inner(matrix, c);
-}
-
-void iota_gfx_write_char(uint8_t c) {
- matrix_write_char(&display, c);
-}
-
-void matrix_write(struct CharacterMatrix *matrix, const char *data) {
- const char *end = data + strlen(data);
- while (data < end) {
- matrix_write_char(matrix, *data);
- ++data;
- }
-}
-
-void iota_gfx_write(const char *data) {
- matrix_write(&display, data);
-}
-
-void matrix_write_P(struct CharacterMatrix *matrix, const char *data) {
- while (true) {
- uint8_t c = pgm_read_byte(data);
- if (c == 0) {
- return;
- }
- matrix_write_char(matrix, c);
- ++data;
- }
-}
-
-void iota_gfx_write_P(const char *data) {
- matrix_write_P(&display, data);
-}
-
-void matrix_clear(struct CharacterMatrix *matrix) {
- memset(matrix->display, ' ', sizeof(matrix->display));
- matrix->cursor = &matrix->display[0][0];
- matrix->dirty = true;
-}
-
-void iota_gfx_clear_screen(void) {
- matrix_clear(&display);
-}
-
-void matrix_render(struct CharacterMatrix *matrix) {
- last_flush = timer_read();
- iota_gfx_on();
-# if DEBUG_TO_SCREEN
- ++displaying;
-# endif
-
- // Move to the home position
- send_cmd3(PageAddr, 0, MatrixRows - 1);
- send_cmd3(ColumnAddr, 0, (MatrixCols * FontWidth) - 1);
-
- if (i2c_start_write(SSD1306_ADDRESS)) {
- goto done;
- }
- if (i2c_master_write(0x40)) {
- // Data mode
- goto done;
- }
-
- for (uint8_t row = 0; row < MatrixRows; ++row) {
- for (uint8_t col = 0; col < MatrixCols; ++col) {
- const uint8_t *glyph = font + (matrix->display[row][col] * (FontWidth - 1));
-
- for (uint8_t glyphCol = 0; glyphCol < FontWidth - 1; ++glyphCol) {
- uint8_t colBits = pgm_read_byte(glyph + glyphCol);
- i2c_master_write(colBits);
- }
-
- // 1 column of space between chars (it's not included in the glyph)
- i2c_master_write(0);
- }
- }
-
- matrix->dirty = false;
-
-done:
- i2c_master_stop();
-# if DEBUG_TO_SCREEN
- --displaying;
-# endif
-}
-
-void iota_gfx_flush(void) {
- matrix_render(&display);
-}
-
-__attribute__((weak)) void iota_gfx_task_user(void) {}
-
-void iota_gfx_task(void) {
- iota_gfx_task_user();
-
- if (display.dirty) {
- iota_gfx_flush();
- }
-
- if (timer_elapsed(last_flush) > ScreenOffInterval) {
- iota_gfx_off();
- }
-}
-#endif
diff --git a/platforms/avr/drivers/ssd1306.h b/platforms/avr/drivers/ssd1306.h
deleted file mode 100644
index 6eecdcfaa4..0000000000
--- a/platforms/avr/drivers/ssd1306.h
+++ /dev/null
@@ -1,87 +0,0 @@
-#pragma once
-
-#include <stdbool.h>
-#include <stdio.h>
-#include "config.h"
-
-enum ssd1306_cmds {
- DisplayOff = 0xAE,
- DisplayOn = 0xAF,
-
- SetContrast = 0x81,
- DisplayAllOnResume = 0xA4,
-
- DisplayAllOn = 0xA5,
- NormalDisplay = 0xA6,
- InvertDisplay = 0xA7,
- SetDisplayOffset = 0xD3,
- SetComPins = 0xda,
- SetVComDetect = 0xdb,
- SetDisplayClockDiv = 0xD5,
- SetPreCharge = 0xd9,
- SetMultiPlex = 0xa8,
- SetLowColumn = 0x00,
- SetHighColumn = 0x10,
- SetStartLine = 0x40,
-
- SetMemoryMode = 0x20,
- ColumnAddr = 0x21,
- PageAddr = 0x22,
-
- ComScanInc = 0xc0,
- ComScanDec = 0xc8,
- SegRemap = 0xa0,
- SetChargePump = 0x8d,
- ExternalVcc = 0x01,
- SwitchCapVcc = 0x02,
-
- ActivateScroll = 0x2f,
- DeActivateScroll = 0x2e,
- SetVerticalScrollArea = 0xa3,
- RightHorizontalScroll = 0x26,
- LeftHorizontalScroll = 0x27,
- VerticalAndRightHorizontalScroll = 0x29,
- VerticalAndLeftHorizontalScroll = 0x2a,
-};
-
-// Controls the SSD1306 128x32 OLED display via i2c
-
-#ifndef SSD1306_ADDRESS
-# define SSD1306_ADDRESS 0x3C
-#endif
-
-#define DisplayHeight 32
-#define DisplayWidth 128
-
-#define FontHeight 8
-#define FontWidth 6
-
-#define MatrixRows (DisplayHeight / FontHeight)
-#define MatrixCols (DisplayWidth / FontWidth)
-
-struct CharacterMatrix {
- uint8_t display[MatrixRows][MatrixCols];
- uint8_t *cursor;
- bool dirty;
-};
-
-extern struct CharacterMatrix display;
-
-bool iota_gfx_init(void);
-void iota_gfx_task(void);
-bool iota_gfx_off(void);
-bool iota_gfx_on(void);
-void iota_gfx_flush(void);
-void iota_gfx_write_char(uint8_t c);
-void iota_gfx_write(const char *data);
-void iota_gfx_write_P(const char *data);
-void iota_gfx_clear_screen(void);
-
-void iota_gfx_task_user(void);
-
-void matrix_clear(struct CharacterMatrix *matrix);
-void matrix_write_char_inner(struct CharacterMatrix *matrix, uint8_t c);
-void matrix_write_char(struct CharacterMatrix *matrix, uint8_t c);
-void matrix_write(struct CharacterMatrix *matrix, const char *data);
-void matrix_write_P(struct CharacterMatrix *matrix, const char *data);
-void matrix_render(struct CharacterMatrix *matrix);
diff --git a/platforms/avr/platform.mk b/platforms/avr/platform.mk
index 978199b385..39a11b28e4 100644
--- a/platforms/avr/platform.mk
+++ b/platforms/avr/platform.mk
@@ -24,6 +24,7 @@ COMPILEFLAGS += -fdata-sections
COMPILEFLAGS += -fpack-struct
COMPILEFLAGS += -fshort-enums
COMPILEFLAGS += -mcall-prologues
+COMPILEFLAGS += -fno-builtin-printf
# Linker relaxation is only possible if
# link time optimizations are not enabled.
@@ -38,7 +39,7 @@ CFLAGS += -fno-inline-small-functions
CFLAGS += -fno-strict-aliasing
CXXFLAGS += $(COMPILEFLAGS)
-CXXFLAGS += -fno-exceptions -std=c++11
+CXXFLAGS += -fno-exceptions $(CXXSTANDARD)
LDFLAGS += -Wl,--gc-sections
diff --git a/platforms/chibios/_pin_defs.h b/platforms/chibios/_pin_defs.h
index 0d96e2fc3b..414c9e3d11 100644
--- a/platforms/chibios/_pin_defs.h
+++ b/platforms/chibios/_pin_defs.h
@@ -21,6 +21,11 @@
# include <hal.h>
#endif
+/* Include the vendor specific pin defs */
+#if __has_include_next("_pin_defs.h")
+# include_next "_pin_defs.h"
+#endif
+
#define A0 PAL_LINE(GPIOA, 0)
#define A1 PAL_LINE(GPIOA, 1)
#define A2 PAL_LINE(GPIOA, 2)
diff --git a/platforms/chibios/_wait.h b/platforms/chibios/_wait.h
index 2f36c64a2e..c0ccbc5569 100644
--- a/platforms/chibios/_wait.h
+++ b/platforms/chibios/_wait.h
@@ -17,6 +17,7 @@
#include <ch.h>
#include <hal.h>
+#include "chibios_config.h"
/* chThdSleepX of zero maps to infinite - so we map to a tiny delay to still yield */
#define wait_ms(ms) \
@@ -30,6 +31,11 @@
#ifdef WAIT_US_TIMER
void wait_us(uint16_t duration);
+#elif PORT_SUPPORTS_RT == TRUE
+# define wait_us(us) \
+ do { \
+ chSysPolledDelayX(US2RTC(REALTIME_COUNTER_CLOCK, us)); \
+ } while (0)
#else
# define wait_us(us) \
do { \
diff --git a/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/board/board.mk b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/board/board.mk
new file mode 100644
index 0000000000..911cc5a058
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/board/board.mk
@@ -0,0 +1,9 @@
+# List of all the board related files.
+BOARDSRC = $(CHIBIOS)/os/hal/boards/RP_PICO_RP2040/board.c
+
+# Required include directories
+BOARDINC = $(CHIBIOS)/os/hal/boards/RP_PICO_RP2040
+
+# Shared variables
+ALLCSRC += $(BOARDSRC)
+ALLINC += $(BOARDINC)
diff --git a/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/board.h b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/board.h
new file mode 100644
index 0000000000..b4363595d0
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/board.h
@@ -0,0 +1,12 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next "board.h"
+
+#undef BOARD_RP_PICO_RP2040
+#define BOARD_GENERIC_PROMICRO_RP2040
+
+#undef BOARD_NAME
+#define BOARD_NAME "Pro Micro RP2040"
diff --git a/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/chconf.h b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/chconf.h
new file mode 100644
index 0000000000..d53f57edd9
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/chconf.h
@@ -0,0 +1,13 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define CH_CFG_SMP_MODE TRUE
+#define CH_CFG_ST_RESOLUTION 32
+#define CH_CFG_ST_FREQUENCY 1000000
+#define CH_CFG_INTERVALS_SIZE 32
+#define CH_CFG_TIME_TYPES_SIZE 32
+#define CH_CFG_ST_TIMEDELTA 20
+
+#include_next <chconf.h>
diff --git a/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/config.h b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/config.h
new file mode 100644
index 0000000000..7fe9b654e1
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/config.h
@@ -0,0 +1,62 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/**======================
+ ** I2C Driver
+ *========================**/
+
+#if !defined(I2C_DRIVER)
+# define I2C_DRIVER I2CD2
+#endif
+
+#if !defined(I2C1_SDA_PIN)
+# define I2C1_SDA_PIN GP2
+#endif
+
+#if !defined(I2C1_SCL_PIN)
+# define I2C1_SCL_PIN GP3
+#endif
+
+/**======================
+ ** SPI Driver
+ *========================**/
+
+#if !defined(SPI_DRIVER)
+# define SPI_DRIVER SPID0
+#endif
+
+#if !defined(SPI_SCK_PIN)
+# define SPI_SCK_PIN GP18
+#endif
+
+#if !defined(SPI_MISO_PIN)
+# define SPI_MISO_PIN GP20
+#endif
+
+#if !defined(SPI_MOSI_PIN)
+# define SPI_MOSI_PIN GP19
+#endif
+
+/**======================
+ ** SERIAL Driver
+ *========================**/
+
+#if !defined(SERIAL_USART_DRIVER)
+# define SERIAL_USART_DRIVER SIOD0
+#endif
+
+#if !defined(SERIAL_USART_TX_PIN) && !defined(SOFT_SERIAL_PIN)
+# define SERIAL_USART_TX_PIN GP0
+#endif
+
+#if !defined(SERIAL_USART_RX_PIN)
+# define SERIAL_USART_RX_PIN GP1
+#endif
+
+/**======================
+ ** Double-tap
+ *========================**/
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
diff --git a/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/mcuconf.h
new file mode 100644
index 0000000000..8348e5312f
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/mcuconf.h
@@ -0,0 +1,98 @@
+/*
+ ChibiOS - Copyright (C) 2006..2021 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 MCUCONF_H
+#define MCUCONF_H
+
+/*
+ * RP2040_MCUCONF drivers configuration.
+ *
+ * IRQ priorities:
+ * 3...0 Lowest...Highest.
+ *
+ * DMA priorities:
+ * 0...1 Lowest...Highest.
+ */
+
+#define RP2040_MCUCONF
+
+/*
+ * HAL driver system settings.
+ */
+#define RP_NO_INIT FALSE
+#define RP_CORE1_START FALSE
+#define RP_CORE1_VECTORS_TABLE _vectors
+#define RP_CORE1_ENTRY_POINT _crt0_c1_entry
+#define RP_CORE1_STACK_END __c1_main_stack_end__
+
+/*
+ * IRQ system settings.
+ */
+#define RP_IRQ_SYSTICK_PRIORITY 2
+#define RP_IRQ_TIMER_ALARM0_PRIORITY 2
+#define RP_IRQ_TIMER_ALARM1_PRIORITY 2
+#define RP_IRQ_TIMER_ALARM2_PRIORITY 2
+#define RP_IRQ_TIMER_ALARM3_PRIORITY 2
+#define RP_IRQ_UART0_PRIORITY 3
+#define RP_IRQ_UART1_PRIORITY 3
+#define RP_IRQ_SPI0_PRIORITY 2
+#define RP_IRQ_SPI1_PRIORITY 2
+#define RP_IRQ_USB0_PRIORITY 3
+#define RP_IRQ_I2C0_PRIORITY 2
+#define RP_IRQ_I2C1_PRIORITY 2
+
+/*
+ * ADC driver system settings.
+ */
+#define RP_ADC_USE_ADC1 FALSE
+
+/*
+ * SIO driver system settings.
+ */
+#define RP_SIO_USE_UART0 TRUE
+#define RP_SIO_USE_UART1 FALSE
+
+/*
+ * SPI driver system settings.
+ */
+#define RP_SPI_USE_SPI0 TRUE
+#define RP_SPI_USE_SPI1 FALSE
+#define RP_SPI_SPI0_RX_DMA_CHANNEL RP_DMA_CHANNEL_ID_ANY
+#define RP_SPI_SPI0_TX_DMA_CHANNEL RP_DMA_CHANNEL_ID_ANY
+#define RP_SPI_SPI1_RX_DMA_CHANNEL RP_DMA_CHANNEL_ID_ANY
+#define RP_SPI_SPI1_TX_DMA_CHANNEL RP_DMA_CHANNEL_ID_ANY
+#define RP_SPI_SPI0_DMA_PRIORITY 1
+#define RP_SPI_SPI1_DMA_PRIORITY 1
+#define RP_SPI_DMA_ERROR_HOOK(spip)
+
+/*
+ * I2C driver system settings.
+ */
+#define RP_I2C_USE_I2C0 FALSE
+#define RP_I2C_USE_I2C1 TRUE
+#define RP_I2C_BUSY_TIMEOUT 50
+#define RP_I2C_ADDRESS_MODE_10BIT FALSE
+
+/*
+ * USB driver system settings.
+ */
+#define RP_USB_USE_USBD0 TRUE
+#define RP_USB_FORCE_VBUS_DETECT TRUE
+#define RP_USE_EXTERNAL_VBUS_DETECT FALSE
+#define RP_USB_USE_SOF_INTR TRUE
+#define RP_USB_USE_ERROR_DATA_SEQ_INTR FALSE
+
+#endif /* MCUCONF_H */
diff --git a/platforms/chibios/boards/GENERIC_RP_RP2040/board/board.mk b/platforms/chibios/boards/GENERIC_RP_RP2040/board/board.mk
new file mode 100644
index 0000000000..911cc5a058
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_RP_RP2040/board/board.mk
@@ -0,0 +1,9 @@
+# List of all the board related files.
+BOARDSRC = $(CHIBIOS)/os/hal/boards/RP_PICO_RP2040/board.c
+
+# Required include directories
+BOARDINC = $(CHIBIOS)/os/hal/boards/RP_PICO_RP2040
+
+# Shared variables
+ALLCSRC += $(BOARDSRC)
+ALLINC += $(BOARDINC)
diff --git a/platforms/chibios/boards/GENERIC_RP_RP2040/configs/board.h b/platforms/chibios/boards/GENERIC_RP_RP2040/configs/board.h
new file mode 100644
index 0000000000..052050c944
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_RP_RP2040/configs/board.h
@@ -0,0 +1,12 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next "board.h"
+
+#undef BOARD_RP_PICO_RP2040
+#define BOARD_GENERIC_RP2040
+
+#undef BOARD_NAME
+#define BOARD_NAME "Generic Raspberry Pi RP2040"
diff --git a/platforms/chibios/boards/GENERIC_RP_RP2040/configs/chconf.h b/platforms/chibios/boards/GENERIC_RP_RP2040/configs/chconf.h
new file mode 100644
index 0000000000..d53f57edd9
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_RP_RP2040/configs/chconf.h
@@ -0,0 +1,13 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define CH_CFG_SMP_MODE TRUE
+#define CH_CFG_ST_RESOLUTION 32
+#define CH_CFG_ST_FREQUENCY 1000000
+#define CH_CFG_INTERVALS_SIZE 32
+#define CH_CFG_TIME_TYPES_SIZE 32
+#define CH_CFG_ST_TIMEDELTA 20
+
+#include_next <chconf.h>
diff --git a/platforms/chibios/boards/GENERIC_RP_RP2040/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_RP_RP2040/configs/mcuconf.h
new file mode 100644
index 0000000000..9d8dc61aac
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_RP_RP2040/configs/mcuconf.h
@@ -0,0 +1,98 @@
+/*
+ ChibiOS - Copyright (C) 2006..2021 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 MCUCONF_H
+#define MCUCONF_H
+
+/*
+ * RP2040_MCUCONF drivers configuration.
+ *
+ * IRQ priorities:
+ * 3...0 Lowest...Highest.
+ *
+ * DMA priorities:
+ * 0...1 Lowest...Highest.
+ */
+
+#define RP2040_MCUCONF
+
+/*
+ * HAL driver system settings.
+ */
+#define RP_NO_INIT FALSE
+#define RP_CORE1_START FALSE
+#define RP_CORE1_VECTORS_TABLE _vectors
+#define RP_CORE1_ENTRY_POINT _crt0_c1_entry
+#define RP_CORE1_STACK_END __c1_main_stack_end__
+
+/*
+ * IRQ system settings.
+ */
+#define RP_IRQ_SYSTICK_PRIORITY 2
+#define RP_IRQ_TIMER_ALARM0_PRIORITY 2
+#define RP_IRQ_TIMER_ALARM1_PRIORITY 2
+#define RP_IRQ_TIMER_ALARM2_PRIORITY 2
+#define RP_IRQ_TIMER_ALARM3_PRIORITY 2
+#define RP_IRQ_UART0_PRIORITY 3
+#define RP_IRQ_UART1_PRIORITY 3
+#define RP_IRQ_SPI0_PRIORITY 2
+#define RP_IRQ_SPI1_PRIORITY 2
+#define RP_IRQ_USB0_PRIORITY 3
+#define RP_IRQ_I2C0_PRIORITY 2
+#define RP_IRQ_I2C1_PRIORITY 2
+
+/*
+ * ADC driver system settings.
+ */
+#define RP_ADC_USE_ADC1 FALSE
+
+/*
+ * SIO driver system settings.
+ */
+#define RP_SIO_USE_UART0 FALSE
+#define RP_SIO_USE_UART1 FALSE
+
+/*
+ * SPI driver system settings.
+ */
+#define RP_SPI_USE_SPI0 FALSE
+#define RP_SPI_USE_SPI1 FALSE
+#define RP_SPI_SPI0_RX_DMA_CHANNEL RP_DMA_CHANNEL_ID_ANY
+#define RP_SPI_SPI0_TX_DMA_CHANNEL RP_DMA_CHANNEL_ID_ANY
+#define RP_SPI_SPI1_RX_DMA_CHANNEL RP_DMA_CHANNEL_ID_ANY
+#define RP_SPI_SPI1_TX_DMA_CHANNEL RP_DMA_CHANNEL_ID_ANY
+#define RP_SPI_SPI0_DMA_PRIORITY 1
+#define RP_SPI_SPI1_DMA_PRIORITY 1
+#define RP_SPI_DMA_ERROR_HOOK(spip)
+
+/*
+ * I2C driver system settings.
+ */
+#define RP_I2C_USE_I2C0 FALSE
+#define RP_I2C_USE_I2C1 FALSE
+#define RP_I2C_BUSY_TIMEOUT 50
+#define RP_I2C_ADDRESS_MODE_10BIT FALSE
+
+/*
+ * USB driver system settings.
+ */
+#define RP_USB_USE_USBD0 TRUE
+#define RP_USB_FORCE_VBUS_DETECT TRUE
+#define RP_USE_EXTERNAL_VBUS_DETECT FALSE
+#define RP_USB_USE_SOF_INTR TRUE
+#define RP_USB_USE_ERROR_DATA_SEQ_INTR FALSE
+
+#endif /* MCUCONF_H */
diff --git a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/config.h b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/config.h
index 9fdc825669..437a8e4df2 100644
--- a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/config.h
+++ b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/config.h
@@ -18,3 +18,5 @@
#ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP
# define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
#endif
+
+#define USB_ENDPOINTS_ARE_REORDERABLE
diff --git a/platforms/chibios/boards/QMK_PM2040/board/board.mk b/platforms/chibios/boards/QMK_PM2040/board/board.mk
new file mode 100644
index 0000000000..911cc5a058
--- /dev/null
+++ b/platforms/chibios/boards/QMK_PM2040/board/board.mk
@@ -0,0 +1,9 @@
+# List of all the board related files.
+BOARDSRC = $(CHIBIOS)/os/hal/boards/RP_PICO_RP2040/board.c
+
+# Required include directories
+BOARDINC = $(CHIBIOS)/os/hal/boards/RP_PICO_RP2040
+
+# Shared variables
+ALLCSRC += $(BOARDSRC)
+ALLINC += $(BOARDINC)
diff --git a/platforms/chibios/boards/QMK_PM2040/configs/board.h b/platforms/chibios/boards/QMK_PM2040/configs/board.h
new file mode 100644
index 0000000000..433e1c527f
--- /dev/null
+++ b/platforms/chibios/boards/QMK_PM2040/configs/board.h
@@ -0,0 +1,12 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next "board.h"
+
+#undef BOARD_RP_PICO_RP2040
+#define BOARD_PM2040
+
+#undef BOARD_NAME
+#define BOARD_NAME "Pro Micro RP2040"
diff --git a/platforms/chibios/boards/QMK_PM2040/configs/chconf.h b/platforms/chibios/boards/QMK_PM2040/configs/chconf.h
new file mode 100644
index 0000000000..d53f57edd9
--- /dev/null
+++ b/platforms/chibios/boards/QMK_PM2040/configs/chconf.h
@@ -0,0 +1,13 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define CH_CFG_SMP_MODE TRUE
+#define CH_CFG_ST_RESOLUTION 32
+#define CH_CFG_ST_FREQUENCY 1000000
+#define CH_CFG_INTERVALS_SIZE 32
+#define CH_CFG_TIME_TYPES_SIZE 32
+#define CH_CFG_ST_TIMEDELTA 20
+
+#include_next <chconf.h>
diff --git a/platforms/chibios/boards/QMK_PM2040/configs/config.h b/platforms/chibios/boards/QMK_PM2040/configs/config.h
new file mode 100644
index 0000000000..8c773f8b19
--- /dev/null
+++ b/platforms/chibios/boards/QMK_PM2040/configs/config.h
@@ -0,0 +1,21 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#ifndef I2C_DRIVER
+# define I2C_DRIVER I2CD2
+#endif
+#ifndef I2C1_SDA_PIN
+# define I2C1_SDA_PIN D1
+#endif
+#ifndef I2C1_SCL_PIN
+# define I2C1_SCL_PIN D0
+#endif
+
+#ifndef RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+# define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#endif
+#ifndef RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT
+# define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
+#endif
diff --git a/platforms/chibios/boards/QMK_PM2040/configs/halconf.h b/platforms/chibios/boards/QMK_PM2040/configs/halconf.h
new file mode 100644
index 0000000000..d7a58f0ea6
--- /dev/null
+++ b/platforms/chibios/boards/QMK_PM2040/configs/halconf.h
@@ -0,0 +1,9 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+#define HAL_USE_SPI TRUE
+
+#include_next <halconf.h>
diff --git a/platforms/chibios/boards/QMK_PM2040/configs/mcuconf.h b/platforms/chibios/boards/QMK_PM2040/configs/mcuconf.h
new file mode 100644
index 0000000000..a737b36c1c
--- /dev/null
+++ b/platforms/chibios/boards/QMK_PM2040/configs/mcuconf.h
@@ -0,0 +1,98 @@
+/*
+ ChibiOS - Copyright (C) 2006..2021 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 MCUCONF_H
+#define MCUCONF_H
+
+/*
+ * RP2040_MCUCONF drivers configuration.
+ *
+ * IRQ priorities:
+ * 3...0 Lowest...Highest.
+ *
+ * DMA priorities:
+ * 0...1 Lowest...Highest.
+ */
+
+#define RP2040_MCUCONF
+
+/*
+ * HAL driver system settings.
+ */
+#define RP_NO_INIT FALSE
+#define RP_CORE1_START FALSE
+#define RP_CORE1_VECTORS_TABLE _vectors
+#define RP_CORE1_ENTRY_POINT _crt0_c1_entry
+#define RP_CORE1_STACK_END __c1_main_stack_end__
+
+/*
+ * IRQ system settings.
+ */
+#define RP_IRQ_SYSTICK_PRIORITY 2
+#define RP_IRQ_TIMER_ALARM0_PRIORITY 2
+#define RP_IRQ_TIMER_ALARM1_PRIORITY 2
+#define RP_IRQ_TIMER_ALARM2_PRIORITY 2
+#define RP_IRQ_TIMER_ALARM3_PRIORITY 2
+#define RP_IRQ_UART0_PRIORITY 3
+#define RP_IRQ_UART1_PRIORITY 3
+#define RP_IRQ_SPI0_PRIORITY 2
+#define RP_IRQ_SPI1_PRIORITY 2
+#define RP_IRQ_USB0_PRIORITY 3
+#define RP_IRQ_I2C0_PRIORITY 2
+#define RP_IRQ_I2C1_PRIORITY 2
+
+/*
+ * ADC driver system settings.
+ */
+#define RP_ADC_USE_ADC1 FALSE
+
+/*
+ * SIO driver system settings.
+ */
+#define RP_SIO_USE_UART0 FALSE
+#define RP_SIO_USE_UART1 FALSE
+
+/*
+ * SPI driver system settings.
+ */
+#define RP_SPI_USE_SPI0 TRUE
+#define RP_SPI_USE_SPI1 FALSE
+#define RP_SPI_SPI0_RX_DMA_CHANNEL RP_DMA_CHANNEL_ID_ANY
+#define RP_SPI_SPI0_TX_DMA_CHANNEL RP_DMA_CHANNEL_ID_ANY
+#define RP_SPI_SPI1_RX_DMA_CHANNEL RP_DMA_CHANNEL_ID_ANY
+#define RP_SPI_SPI1_TX_DMA_CHANNEL RP_DMA_CHANNEL_ID_ANY
+#define RP_SPI_SPI0_DMA_PRIORITY 1
+#define RP_SPI_SPI1_DMA_PRIORITY 1
+#define RP_SPI_DMA_ERROR_HOOK(spip)
+
+/*
+ * I2C driver system settings.
+ */
+#define RP_I2C_USE_I2C0 FALSE
+#define RP_I2C_USE_I2C1 TRUE
+#define RP_I2C_BUSY_TIMEOUT 50
+#define RP_I2C_ADDRESS_MODE_10BIT FALSE
+
+/*
+ * USB driver system settings.
+ */
+#define RP_USB_USE_USBD0 TRUE
+#define RP_USB_FORCE_VBUS_DETECT TRUE
+#define RP_USE_EXTERNAL_VBUS_DETECT FALSE
+#define RP_USB_USE_SOF_INTR TRUE
+#define RP_USB_USE_ERROR_DATA_SEQ_INTR FALSE
+
+#endif /* MCUCONF_H */
diff --git a/platforms/chibios/boards/STEMCELL/board/board.mk b/platforms/chibios/boards/STEMCELL/board/board.mk
new file mode 100644
index 0000000000..b0d1c3c404
--- /dev/null
+++ b/platforms/chibios/boards/STEMCELL/board/board.mk
@@ -0,0 +1,15 @@
+# Copyright 2022 Mega Mind (@megamind4089)
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+# Default pin config of nucleo64_411re has most pins in input pull up mode
+
+# List of all the board related files.
+BOARDSRC = $(CHIBIOS)/os/hal/boards/ST_NUCLEO64_F411RE/board.c
+
+# Required include directories
+BOARDINC = $(CHIBIOS)/os/hal/boards/ST_NUCLEO64_F411RE
+
+
+# Shared variables
+ALLCSRC += $(BOARDSRC)
+ALLINC += $(BOARDINC)
diff --git a/platforms/chibios/boards/STEMCELL/configs/board.h b/platforms/chibios/boards/STEMCELL/configs/board.h
new file mode 100644
index 0000000000..39cf79ab09
--- /dev/null
+++ b/platforms/chibios/boards/STEMCELL/configs/board.h
@@ -0,0 +1,8 @@
+// Copyright 2022 Mega Mind (@megamind4089)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include_next "board.h"
+
+#undef STM32_HSE_BYPASS
diff --git a/platforms/chibios/boards/STEMCELL/configs/chconf.h b/platforms/chibios/boards/STEMCELL/configs/chconf.h
new file mode 100644
index 0000000000..d25bea0d17
--- /dev/null
+++ b/platforms/chibios/boards/STEMCELL/configs/chconf.h
@@ -0,0 +1,9 @@
+// Copyright 2022 Mega Mind (@megamind4089)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define CH_CFG_ST_RESOLUTION 16
+#define CH_CFG_ST_FREQUENCY 10000
+
+#include_next <chconf.h>
diff --git a/platforms/chibios/boards/STEMCELL/configs/config.h b/platforms/chibios/boards/STEMCELL/configs/config.h
new file mode 100644
index 0000000000..82f6c63636
--- /dev/null
+++ b/platforms/chibios/boards/STEMCELL/configs/config.h
@@ -0,0 +1,29 @@
+// Copyright 2022 Mega Mind(@megamind4089)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP
+# define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+#endif
+
+/**======================
+ ** I2C Driver
+ *========================**/
+
+#if !defined(I2C1_SDA_PIN)
+# define I2C1_SDA_PIN D0
+#endif
+
+#if !defined(I2C1_SCL_PIN)
+# define I2C1_SCL_PIN D1
+#endif
+
+/**======================
+ ** SERIAL Driver
+ *========================**/
+
+#if !defined(SERIAL_USART_DRIVER)
+# define SERIAL_USART_DRIVER SD2
+#endif
+
diff --git a/platforms/chibios/boards/STEMCELL/configs/halconf.h b/platforms/chibios/boards/STEMCELL/configs/halconf.h
new file mode 100644
index 0000000000..f38949e626
--- /dev/null
+++ b/platforms/chibios/boards/STEMCELL/configs/halconf.h
@@ -0,0 +1,11 @@
+// Copyright 2022 Mega Mind (@megamind4089)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define PAL_USE_WAIT TRUE
+#define PAL_USE_CALLBACKS TRUE
+#define HAL_USE_I2C TRUE
+#define HAL_USE_SERIAL TRUE
+
+#include_next <halconf.h>
diff --git a/platforms/chibios/boards/STEMCELL/configs/mcuconf.h b/platforms/chibios/boards/STEMCELL/configs/mcuconf.h
new file mode 100644
index 0000000000..621d3fcace
--- /dev/null
+++ b/platforms/chibios/boards/STEMCELL/configs/mcuconf.h
@@ -0,0 +1,231 @@
+// Copyright 2022 Mega Mind (@megamind4089)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#ifndef MCUCONF_H
+#define MCUCONF_H
+
+/*
+ * STM32F4xx drivers configuration.
+ * The following settings override the default settings present in
+ * the various device driver implementation headers.
+ * Note that the settings for each driver only have effect if the whole
+ * driver is enabled in halconf.h.
+ *
+ * IRQ priorities:
+ * 15...0 Lowest...Highest.
+ *
+ * DMA priorities:
+ * 0...3 Lowest...Highest.
+ */
+
+#define STM32F4xx_MCUCONF
+#define STM32F411_MCUCONF
+
+/*
+ * HAL driver system settings.
+ */
+#define STM32_NO_INIT FALSE
+#define STM32_PVD_ENABLE FALSE
+#define STM32_PLS STM32_PLS_LEV0
+#define STM32_BKPRAM_ENABLE FALSE
+#define STM32_HSI_ENABLED TRUE
+#define STM32_LSI_ENABLED TRUE
+#define STM32_HSE_ENABLED TRUE
+#define STM32_LSE_ENABLED FALSE
+#define STM32_CLOCK48_REQUIRED TRUE
+#define STM32_SW STM32_SW_PLL
+#define STM32_PLLSRC STM32_PLLSRC_HSE
+#define STM32_PLLM_VALUE 8
+#define STM32_PLLN_VALUE 336
+#define STM32_PLLP_VALUE 4
+#define STM32_PLLQ_VALUE 7
+#define STM32_HPRE STM32_HPRE_DIV1
+#define STM32_PPRE1 STM32_PPRE1_DIV2
+#define STM32_PPRE2 STM32_PPRE2_DIV1
+#define STM32_RTCSEL STM32_RTCSEL_LSI
+#define STM32_RTCPRE_VALUE 8
+#define STM32_MCO1SEL STM32_MCO1SEL_HSI
+#define STM32_MCO1PRE STM32_MCO1PRE_DIV1
+#define STM32_MCO2SEL STM32_MCO2SEL_SYSCLK
+#define STM32_MCO2PRE STM32_MCO2PRE_DIV5
+#define STM32_I2SSRC STM32_I2SSRC_CKIN
+#define STM32_PLLI2SN_VALUE 192
+#define STM32_PLLI2SR_VALUE 5
+
+/*
+ * IRQ system settings.
+ */
+#define STM32_IRQ_EXTI0_PRIORITY 6
+#define STM32_IRQ_EXTI1_PRIORITY 6
+#define STM32_IRQ_EXTI2_PRIORITY 6
+#define STM32_IRQ_EXTI3_PRIORITY 6
+#define STM32_IRQ_EXTI4_PRIORITY 6
+#define STM32_IRQ_EXTI5_9_PRIORITY 6
+#define STM32_IRQ_EXTI10_15_PRIORITY 6
+#define STM32_IRQ_EXTI16_PRIORITY 6
+#define STM32_IRQ_EXTI17_PRIORITY 15
+#define STM32_IRQ_EXTI18_PRIORITY 6
+#define STM32_IRQ_EXTI19_PRIORITY 6
+#define STM32_IRQ_EXTI20_PRIORITY 6
+#define STM32_IRQ_EXTI21_PRIORITY 15
+#define STM32_IRQ_EXTI22_PRIORITY 15
+
+#define STM32_IRQ_TIM1_BRK_TIM9_PRIORITY 7
+#define STM32_IRQ_TIM1_UP_TIM10_PRIORITY 7
+#define STM32_IRQ_TIM1_TRGCO_TIM11_PRIORITY 7
+#define STM32_IRQ_TIM1_CC_PRIORITY 7
+#define STM32_IRQ_TIM2_PRIORITY 7
+#define STM32_IRQ_TIM3_PRIORITY 7
+#define STM32_IRQ_TIM4_PRIORITY 7
+#define STM32_IRQ_TIM5_PRIORITY 7
+
+#define STM32_IRQ_USART1_PRIORITY 12
+#define STM32_IRQ_USART2_PRIORITY 12
+#define STM32_IRQ_USART6_PRIORITY 12
+
+/*
+ * ADC driver system settings.
+ */
+#define STM32_ADC_ADCPRE ADC_CCR_ADCPRE_DIV4
+#define STM32_ADC_USE_ADC1 FALSE
+#define STM32_ADC_ADC1_DMA_STREAM STM32_DMA_STREAM_ID(2, 4)
+#define STM32_ADC_ADC1_DMA_PRIORITY 2
+#define STM32_ADC_IRQ_PRIORITY 6
+#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 6
+
+/*
+ * GPT driver system settings.
+ */
+#define STM32_GPT_USE_TIM1 FALSE
+#define STM32_GPT_USE_TIM2 FALSE
+#define STM32_GPT_USE_TIM3 FALSE
+#define STM32_GPT_USE_TIM4 FALSE
+#define STM32_GPT_USE_TIM5 FALSE
+#define STM32_GPT_USE_TIM9 FALSE
+#define STM32_GPT_USE_TIM10 FALSE
+#define STM32_GPT_USE_TIM11 FALSE
+
+/*
+ * I2C driver system settings.
+ */
+#define STM32_I2C_USE_I2C1 TRUE
+#define STM32_I2C_USE_I2C2 FALSE
+#define STM32_I2C_USE_I2C3 FALSE
+#define STM32_I2C_BUSY_TIMEOUT 50
+#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
+#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
+#define STM32_I2C_I2C2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
+#define STM32_I2C_I2C2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
+#define STM32_I2C_I2C3_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2)
+#define STM32_I2C_I2C3_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
+#define STM32_I2C_I2C1_IRQ_PRIORITY 5
+#define STM32_I2C_I2C2_IRQ_PRIORITY 5
+#define STM32_I2C_I2C3_IRQ_PRIORITY 5
+#define STM32_I2C_I2C1_DMA_PRIORITY 3
+#define STM32_I2C_I2C2_DMA_PRIORITY 3
+#define STM32_I2C_I2C3_DMA_PRIORITY 3
+#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
+
+/*
+ * I2S driver system settings.
+ */
+#define STM32_I2S_USE_SPI2 FALSE
+#define STM32_I2S_USE_SPI3 FALSE
+#define STM32_I2S_SPI2_IRQ_PRIORITY 10
+#define STM32_I2S_SPI3_IRQ_PRIORITY 10
+#define STM32_I2S_SPI2_DMA_PRIORITY 1
+#define STM32_I2S_SPI3_DMA_PRIORITY 1
+#define STM32_I2S_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
+#define STM32_I2S_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
+#define STM32_I2S_SPI3_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
+#define STM32_I2S_SPI3_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
+#define STM32_I2S_DMA_ERROR_HOOK(i2sp) osalSysHalt("DMA failure")
+
+/*
+ * ICU driver system settings.
+ */
+#define STM32_ICU_USE_TIM1 FALSE
+#define STM32_ICU_USE_TIM2 FALSE
+#define STM32_ICU_USE_TIM3 FALSE
+#define STM32_ICU_USE_TIM4 FALSE
+#define STM32_ICU_USE_TIM5 FALSE
+#define STM32_ICU_USE_TIM9 FALSE
+#define STM32_ICU_USE_TIM10 FALSE
+#define STM32_ICU_USE_TIM11 FALSE
+
+/*
+ * PWM driver system settings.
+ */
+#define STM32_PWM_USE_TIM1 FALSE
+#define STM32_PWM_USE_TIM2 FALSE
+#define STM32_PWM_USE_TIM3 FALSE
+#define STM32_PWM_USE_TIM4 FALSE
+#define STM32_PWM_USE_TIM5 FALSE
+#define STM32_PWM_USE_TIM9 FALSE
+#define STM32_PWM_USE_TIM10 FALSE
+#define STM32_PWM_USE_TIM11 FALSE
+
+/*
+ * SERIAL driver system settings.
+ */
+#define STM32_SERIAL_USE_USART1 TRUE
+#define STM32_SERIAL_USE_USART2 TRUE
+#define STM32_SERIAL_USE_USART6 FALSE
+
+/*
+ * SPI driver system settings.
+ */
+#define STM32_SPI_USE_SPI1 FALSE
+#define STM32_SPI_USE_SPI2 FALSE
+#define STM32_SPI_USE_SPI3 FALSE
+#define STM32_SPI_SPI1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 0)
+#define STM32_SPI_SPI1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 3)
+#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3)
+#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
+#define STM32_SPI_SPI3_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 0)
+#define STM32_SPI_SPI3_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
+#define STM32_SPI_SPI1_DMA_PRIORITY 1
+#define STM32_SPI_SPI2_DMA_PRIORITY 1
+#define STM32_SPI_SPI3_DMA_PRIORITY 1
+#define STM32_SPI_SPI1_IRQ_PRIORITY 10
+#define STM32_SPI_SPI2_IRQ_PRIORITY 10
+#define STM32_SPI_SPI3_IRQ_PRIORITY 10
+#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
+
+/*
+ * ST driver system settings.
+ */
+#define STM32_ST_IRQ_PRIORITY 8
+#define STM32_ST_USE_TIMER 2
+
+/*
+ * UART driver system settings.
+ */
+#define STM32_UART_USE_USART1 FALSE
+#define STM32_UART_USE_USART2 FALSE
+#define STM32_UART_USE_USART6 FALSE
+#define STM32_UART_USART1_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 5)
+#define STM32_UART_USART1_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 7)
+#define STM32_UART_USART2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
+#define STM32_UART_USART2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
+#define STM32_UART_USART6_RX_DMA_STREAM STM32_DMA_STREAM_ID(2, 2)
+#define STM32_UART_USART6_TX_DMA_STREAM STM32_DMA_STREAM_ID(2, 7)
+#define STM32_UART_USART1_DMA_PRIORITY 0
+#define STM32_UART_USART2_DMA_PRIORITY 0
+#define STM32_UART_USART6_DMA_PRIORITY 0
+#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
+
+/*
+ * USB driver system settings.
+ */
+#define STM32_USB_USE_OTG1 TRUE
+#define STM32_USB_OTG1_IRQ_PRIORITY 14
+#define STM32_USB_OTG1_RX_FIFO_SIZE 512
+#define STM32_USB_HOST_WAKEUP_DURATION 2
+
+/*
+ * WDG driver system settings.
+ */
+#define STM32_WDG_USE_IWDG FALSE
+
+#endif /* MCUCONF_H */
diff --git a/platforms/chibios/boards/STM32_F103_STM32DUINO/board/board.c b/platforms/chibios/boards/STM32_F103_STM32DUINO/board/board.c
index cba977da77..e82e1d37ce 100644
--- a/platforms/chibios/boards/STM32_F103_STM32DUINO/board/board.c
+++ b/platforms/chibios/boards/STM32_F103_STM32DUINO/board/board.c
@@ -28,7 +28,9 @@ const PALConfig pal_default_config =
{VAL_GPIOBODR, VAL_GPIOBCRL, VAL_GPIOBCRH},
{VAL_GPIOCODR, VAL_GPIOCCRL, VAL_GPIOCCRH},
{VAL_GPIODODR, VAL_GPIODCRL, VAL_GPIODCRH},
+# if STM32_HAS_GPIOE
{VAL_GPIOEODR, VAL_GPIOECRL, VAL_GPIOECRH},
+# endif
};
#endif
diff --git a/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103x6_stm32duino_bootloader.ld b/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103x6_stm32duino_bootloader.ld
new file mode 100644
index 0000000000..18aaff2a23
--- /dev/null
+++ b/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103x6_stm32duino_bootloader.ld
@@ -0,0 +1,23 @@
+/*
+ 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.
+*/
+
+/*
+ * STM32F103x6 memory setup for use with the STM32Duino bootloader.
+ */
+f103_flash_size = 32k;
+f103_ram_size = 10k;
+
+INCLUDE stm32duino_bootloader_common.ld
diff --git a/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103x8_stm32duino_bootloader.ld b/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103x8_stm32duino_bootloader.ld
index a4bd566b59..465af12cab 100644
--- a/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103x8_stm32duino_bootloader.ld
+++ b/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103x8_stm32duino_bootloader.ld
@@ -18,5 +18,6 @@
* STM32F103x8 memory setup for use with the STM32Duino bootloader.
*/
f103_flash_size = 64k;
+f103_ram_size = 20k;
INCLUDE stm32duino_bootloader_common.ld
diff --git a/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103xB_stm32duino_bootloader.ld b/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103xB_stm32duino_bootloader.ld
index dc47400dc5..3a47a33156 100644
--- a/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103xB_stm32duino_bootloader.ld
+++ b/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/STM32F103xB_stm32duino_bootloader.ld
@@ -18,5 +18,6 @@
* STM32F103xB memory setup for use with the STM32Duino bootloader.
*/
f103_flash_size = 128k;
+f103_ram_size = 20k;
INCLUDE stm32duino_bootloader_common.ld
diff --git a/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/stm32duino_bootloader_common.ld b/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/stm32duino_bootloader_common.ld
index 76cd3153be..1466ae7ed2 100644
--- a/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/stm32duino_bootloader_common.ld
+++ b/platforms/chibios/boards/STM32_F103_STM32DUINO/ld/stm32duino_bootloader_common.ld
@@ -27,7 +27,7 @@ MEMORY
flash5 : org = 0x00000000, len = 0
flash6 : org = 0x00000000, len = 0
flash7 : org = 0x00000000, len = 0
- ram0 : org = 0x20000000, len = 20k
+ ram0 : org = 0x20000000, len = f103_ram_size
ram1 : org = 0x00000000, len = 0
ram2 : org = 0x00000000, len = 0
ram3 : org = 0x00000000, len = 0
diff --git a/platforms/chibios/boards/common/ld/RP2040_FLASH_TIMECRIT.ld b/platforms/chibios/boards/common/ld/RP2040_FLASH_TIMECRIT.ld
new file mode 100644
index 0000000000..66ed4ce086
--- /dev/null
+++ b/platforms/chibios/boards/common/ld/RP2040_FLASH_TIMECRIT.ld
@@ -0,0 +1,117 @@
+/*
+ ChibiOS - Copyright (C) 2006..2021 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.
+*/
+
+/*
+ * RP2040 memory setup.
+ */
+MEMORY
+{
+ flash0 (rx) : org = 0x00000000, len = 16k /* ROM */
+ flash1 (rx) : org = 0x10000000, len = DEFINED(FLASH_LEN) ? FLASH_LEN : 2048k /* XIP */
+ flash2 (rx) : org = 0x00000000, len = 0
+ flash3 (rx) : org = 0x00000000, len = 0
+ flash4 (rx) : org = 0x00000000, len = 0
+ flash5 (rx) : org = 0x00000000, len = 0
+ flash6 (rx) : org = 0x00000000, len = 0
+ flash7 (rx) : org = 0x00000000, len = 0
+ ram0 (wx) : org = 0x20000000, len = 256k /* SRAM0 striped */
+ ram1 (wx) : org = 0x00000000, len = 256k /* SRAM0 non striped */
+ ram2 (wx) : org = 0x00000000, len = 0
+ ram3 (wx) : org = 0x00000000, len = 0
+ ram4 (wx) : org = 0x20040000, len = 4k /* SRAM4 */
+ ram5 (wx) : org = 0x20041000, len = 4k /* SRAM5 */
+ ram6 (wx) : org = 0x00000000, len = 0
+ ram7 (wx) : org = 0x20041f00, len = 256 /* SRAM5 boot */
+}
+
+/* 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", flash1);
+REGION_ALIAS("VECTORS_FLASH_LMA", flash1);
+
+/* Flash region to be used for constructors and destructors.*/
+REGION_ALIAS("XTORS_FLASH", flash1);
+REGION_ALIAS("XTORS_FLASH_LMA", flash1);
+
+/* Flash region to be used for code text.*/
+REGION_ALIAS("TEXT_FLASH", flash1);
+REGION_ALIAS("TEXT_FLASH_LMA", flash1);
+
+/* Flash region to be used for read only data.*/
+REGION_ALIAS("RODATA_FLASH", flash1);
+REGION_ALIAS("RODATA_FLASH_LMA", flash1);
+
+/* Flash region to be used for various.*/
+REGION_ALIAS("VARIOUS_FLASH", flash1);
+REGION_ALIAS("VARIOUS_FLASH_LMA", flash1);
+
+/* Flash region to be used for RAM(n) initialization data.*/
+REGION_ALIAS("RAM_INIT_FLASH_LMA", flash1);
+
+/* RAM region to be used for Main stack. This stack accommodates the processing
+ of all exceptions and interrupts.*/
+REGION_ALIAS("MAIN_STACK_RAM", ram4);
+
+/* RAM region to be used for the process stack. This is the stack used by
+ the main() function.*/
+REGION_ALIAS("PROCESS_STACK_RAM", ram4);
+
+/* RAM region to be used for Main stack. This stack accommodates the processing
+ of all exceptions and interrupts.*/
+REGION_ALIAS("C1_MAIN_STACK_RAM", ram5);
+
+/* RAM region to be used for the process stack. This is the stack used by
+ the main() function.*/
+REGION_ALIAS("C1_PROCESS_STACK_RAM", ram5);
+
+/* RAM region to be used for data segment.*/
+REGION_ALIAS("DATA_RAM", ram0);
+REGION_ALIAS("DATA_RAM_LMA", flash1);
+
+/* 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);
+
+SECTIONS
+{
+ .flash_begin : {
+ __flash_binary_start = .;
+ } > flash1
+
+ .boot2 : {
+ __boot2_start__ = .;
+ KEEP (*(.boot2))
+ __boot2_end__ = .;
+ } > flash1
+}
+
+/* Generic rules inclusion.*/
+INCLUDE rules_stacks.ld
+INCLUDE rules_stacks_c1.ld
+INCLUDE RP2040_rules_code_with_boot2.ld
+INCLUDE RP2040_rules_data_with_timecrit.ld
+INCLUDE rules_memory.ld
+
+SECTIONS
+{
+ .flash_end : {
+ __flash_binary_end = .;
+ } > flash1
+}
diff --git a/platforms/chibios/boards/common/ld/RP2040_rules_data_with_timecrit.ld b/platforms/chibios/boards/common/ld/RP2040_rules_data_with_timecrit.ld
new file mode 100644
index 0000000000..a9a47be983
--- /dev/null
+++ b/platforms/chibios/boards/common/ld/RP2040_rules_data_with_timecrit.ld
@@ -0,0 +1,46 @@
+/*
+ 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.
+*/
+
+SECTIONS
+{
+ .data : ALIGN(4)
+ {
+ PROVIDE(_textdata = LOADADDR(.data));
+ PROVIDE(_data = .);
+ __textdata_base__ = LOADADDR(.data);
+ __data_base__ = .;
+ *(vtable)
+ *(.time_critical*)
+ . = ALIGN(4);
+ *(.data)
+ *(.data.*)
+ *(.ramtext)
+ . = ALIGN(4);
+ PROVIDE(_edata = .);
+ __data_end__ = .;
+ } > DATA_RAM AT > DATA_RAM_LMA
+
+ .bss (NOLOAD) : ALIGN(4)
+ {
+ __bss_base__ = .;
+ *(.bss)
+ *(.bss.*)
+ *(COMMON)
+ . = ALIGN(4);
+ __bss_end__ = .;
+ PROVIDE(end = .);
+ } > BSS_RAM
+}
diff --git a/platforms/chibios/bootloaders/rp2040.c b/platforms/chibios/bootloaders/rp2040.c
new file mode 100644
index 0000000000..bedc00f32e
--- /dev/null
+++ b/platforms/chibios/bootloaders/rp2040.c
@@ -0,0 +1,56 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+#include "hal.h"
+#include "bootloader.h"
+#include "pico/bootrom.h"
+
+#if !defined(RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED)
+# define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK 0U
+#else
+# define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK (1U << RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED)
+#endif
+
+__attribute__((weak)) void mcu_reset(void) {
+ NVIC_SystemReset();
+}
+void bootloader_jump(void) {
+ reset_usb_boot(RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK, 0U);
+}
+
+void enter_bootloader_mode_if_requested(void) {}
+
+#if defined(RP2040_BOOTLOADER_DOUBLE_TAP_RESET)
+# if !defined(RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT)
+# define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+# endif
+
+// Needs to be located in a RAM section that is never initialized on boot to
+// preserve its value on reset
+static volatile uint32_t __attribute__((section(".ram0.bootloader_magic"))) magic_location;
+const uint32_t magic_token = 0xCAFEB0BA;
+
+// We can not use the __early_init / enter_bootloader_mode_if_requested hook as
+// we depend on an already initialized system with usable memory regions and
+// populated function pointer tables to the optimized math functions in the
+// bootrom. This function is called just prior to main.
+void __late_init(void) {
+ // All clocks have to be enabled before jumping to the bootloader function,
+ // otherwise the bootrom will be stuck infinitely.
+ clocks_init();
+
+ if (magic_location != magic_token) {
+ magic_location = magic_token;
+ // ChibiOS is not initialized at this point, so sleeping is only
+ // possible via busy waiting.
+ wait_us(RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT * 1000U);
+ magic_location = 0;
+ return;
+ }
+
+ magic_location = 0;
+ reset_usb_boot(RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED_MASK, 0U);
+}
+
+#endif
diff --git a/platforms/chibios/bootloaders/stm32_dfu.c b/platforms/chibios/bootloaders/stm32_dfu.c
index ff866bd2bc..7b4ab86033 100644
--- a/platforms/chibios/bootloaders/stm32_dfu.c
+++ b/platforms/chibios/bootloaders/stm32_dfu.c
@@ -38,7 +38,7 @@ extern uint32_t __ram0_end__;
# endif
# ifndef STM32_BOOTLOADER_DUAL_BANK_DELAY
-# define STM32_BOOTLOADER_DUAL_BANK_DELAY 100000
+# define STM32_BOOTLOADER_DUAL_BANK_DELAY 100
# endif
__attribute__((weak)) void bootloader_jump(void) {
@@ -55,7 +55,7 @@ __attribute__((weak)) void bootloader_jump(void) {
# endif
// Wait for a while for the capacitor to charge
- wait_ms(100);
+ wait_ms(STM32_BOOTLOADER_DUAL_BANK_DELAY);
// Issue a system reset to get the ROM bootloader to execute, with BOOT0 high
NVIC_SystemReset();
diff --git a/platforms/chibios/chibios_config.h b/platforms/chibios/chibios_config.h
index a7098f2713..8dcc23727f 100644
--- a/platforms/chibios/chibios_config.h
+++ b/platforms/chibios/chibios_config.h
@@ -19,6 +19,30 @@
# define SPLIT_USB_DETECT // Force this on when dedicated pin is not used
#endif
+#if defined(MCU_RP)
+# define CPU_CLOCK RP_CORE_CLK
+// ChibiOS uses the RP2040 timer peripheral as its real time counter, this timer
+// is monotonic and running at 1MHz.
+# define REALTIME_COUNTER_CLOCK 1000000
+
+# define USE_GPIOV1
+# define PAL_OUTPUT_TYPE_OPENDRAIN _Static_assert(0, "RP2040 has no Open Drain GPIO configuration, setting this is not possible");
+
+# define usb_lld_endpoint_fields
+
+# define I2C1_SCL_PAL_MODE (PAL_MODE_ALTERNATE_I2C | PAL_RP_PAD_SLEWFAST | PAL_RP_PAD_PUE | PAL_RP_PAD_DRIVE4)
+# define I2C1_SDA_PAL_MODE I2C1_SCL_PAL_MODE
+
+# define USE_I2CV1_CONTRIB
+# if !defined(I2C1_CLOCK_SPEED)
+# define I2C1_CLOCK_SPEED 400000
+# endif
+
+# define SPI_SCK_PAL_MODE (PAL_MODE_ALTERNATE_SPI | PAL_RP_PAD_SLEWFAST | PAL_RP_PAD_DRIVE4)
+# define SPI_MOSI_PAL_MODE SPI_SCK_PAL_MODE
+# define SPI_MISO_PAL_MODE SPI_SCK_PAL_MODE
+#endif
+
// STM32 compatibility
#if defined(MCU_STM32)
# define CPU_CLOCK STM32_SYSCLK
@@ -60,6 +84,8 @@
# define PAL_OUTPUT_TYPE_PUSHPULL PAL_WB32_OTYPE_PUSHPULL
# define PAL_OUTPUT_SPEED_HIGHEST PAL_WB32_OSPEED_HIGH
# define PAL_PUPDR_FLOATING PAL_WB32_PUPDR_FLOATING
+
+# define SPI_SCK_FLAGS PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST | PAL_WB32_CURRENT_LEVEL3
# endif
#endif
@@ -74,13 +100,18 @@
#if defined(MCU_KINETIS)
# define CPU_CLOCK KINETIS_SYSCLK_FREQUENCY
-# if defined(K20x) || defined(KL2x)
+# if defined(K20x) || defined(K60x) || defined(KL2x)
# define USE_I2CV1
# define USE_I2CV1_CONTRIB // for some reason a bunch of ChibiOS-Contrib boards only have clock_speed
# define USE_GPIOV1
# endif
#endif
+#if defined(MCU_MIMXRT1062)
+# include "clock_config.h"
+# define CPU_CLOCK BOARD_BOOTCLOCKRUN_CORE_CLOCK
+#endif
+
#if defined(HT32)
# define CPU_CLOCK HT32_CK_SYS_FREQUENCY
# define PAL_MODE_ALTERNATE PAL_HT32_MODE_AF
@@ -88,3 +119,20 @@
# define PAL_OUTPUT_TYPE_PUSHPULL PAL_HT32_MODE_DIR
# define PAL_OUTPUT_SPEED_HIGHEST 0
#endif
+
+#if !defined(REALTIME_COUNTER_CLOCK)
+# define REALTIME_COUNTER_CLOCK CPU_CLOCK
+#endif
+
+// SPI Fallbacks
+#ifndef SPI_SCK_FLAGS
+# define SPI_SCK_FLAGS PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST
+#endif
+
+#ifndef SPI_MOSI_FLAGS
+# define SPI_MOSI_FLAGS PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST
+#endif
+
+#ifndef SPI_MISO_FLAGS
+# define SPI_MISO_FLAGS PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST
+#endif
diff --git a/platforms/chibios/converters/promicro_to_bit_c_pro/_pin_defs.h b/platforms/chibios/converters/promicro_to_bit_c_pro/_pin_defs.h
new file mode 100644
index 0000000000..a693e33011
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_bit_c_pro/_pin_defs.h
@@ -0,0 +1,36 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Left side (front)
+#define D3 0U
+#define D2 1U
+// GND
+// GND
+#define D1 2U
+#define D0 3U
+#define D4 4U
+#define C6 5U
+#define D7 6U
+#define E6 7U
+#define B4 8U
+#define B5 9U
+
+// Right side (front)
+// RAW
+// GND
+// RESET
+// VCC
+#define F4 29U
+#define F5 28U
+#define F6 27U
+#define F7 26U
+#define B1 22U
+#define B3 20U
+#define B2 23U
+#define B6 21U
+
+// LEDs (Mapped to R and G channel of the Bit-C PRO's RGB led)
+#define D5 16U
+#define B0 17U
diff --git a/platforms/chibios/converters/promicro_to_bit_c_pro/converter.mk b/platforms/chibios/converters/promicro_to_bit_c_pro/converter.mk
new file mode 100644
index 0000000000..c0eaee8593
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_bit_c_pro/converter.mk
@@ -0,0 +1,12 @@
+# nullbits Bit-C PRO MCU settings for converting AVR projects
+MCU := RP2040
+BOARD := QMK_PM2040
+BOOTLOADER := rp2040
+
+# These are defaults based on what has been implemented for RP2040 boards
+SERIAL_DRIVER ?= vendor
+WS2812_DRIVER ?= vendor
+BACKLIGHT_DRIVER ?= software
+
+# Tell QMK to use the correct 2nd stage bootloader
+OPT_DEFS += -DRP2040_FLASH_W25X10CL
diff --git a/platforms/chibios/converters/promicro_to_blok/_pin_defs.h b/platforms/chibios/converters/promicro_to_blok/_pin_defs.h
new file mode 100644
index 0000000000..957b84e1a6
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_blok/_pin_defs.h
@@ -0,0 +1,36 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Left side (front)
+#define D3 0U
+#define D2 1U
+// GND
+// GND
+#define D1 16U
+#define D0 17U
+#define D4 4U
+#define C6 5U
+#define D7 6U
+#define E6 7U
+#define B4 8U
+#define B5 9U
+
+// Right side (front)
+// RAW
+// GND
+// RESET
+// VCC
+#define F4 29U
+#define F5 28U
+#define F6 27U
+#define F7 26U
+#define B1 22U
+#define B3 20U
+#define B2 23U
+#define B6 21U
+
+// LEDs (Mapped to unused pins to avoid collisions)
+#define D5 12U
+#define B0 13U
diff --git a/platforms/chibios/converters/promicro_to_blok/converter.mk b/platforms/chibios/converters/promicro_to_blok/converter.mk
new file mode 100644
index 0000000000..5106e411f4
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_blok/converter.mk
@@ -0,0 +1,9 @@
+# Boardsource Blok MCU settings for converting AVR projects
+MCU := RP2040
+BOARD := QMK_PM2040
+BOOTLOADER := rp2040
+
+# These are defaults based on what has been implemented for RP2040 boards
+SERIAL_DRIVER ?= vendor
+WS2812_DRIVER ?= vendor
+BACKLIGHT_DRIVER ?= software
diff --git a/platforms/chibios/converters/promicro_to_bonsai_c4/_pin_defs.h b/platforms/chibios/converters/promicro_to_bonsai_c4/_pin_defs.h
new file mode 100644
index 0000000000..7e6b8ddaf2
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_bonsai_c4/_pin_defs.h
@@ -0,0 +1,40 @@
+// Copyright 2022 customMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Left side (front)
+#define D3 PAL_LINE(GPIOB, 7)
+#define D2 PAL_LINE(GPIOA, 15)
+// GND
+// GND
+#define D1 PAL_LINE(GPIOB, 9)
+#define D0 PAL_LINE(GPIOB, 6)
+#define D4 PAL_LINE(GPIOA, 4)
+#define C6 PAL_LINE(GPIOB, 8)
+#define D7 PAL_LINE(GPIOA, 3)
+#define E6 PAL_LINE(GPIOB, 10)
+#define B4 PAL_LINE(GPIOA, 8)
+#define B5 PAL_LINE(GPIOB, 0)
+
+// Right side (front)
+// RAW
+// GND
+// RESET
+// VCC
+#define F4 PAL_LINE(GPIOA, 7)
+#define F5 PAL_LINE(GPIOA, 6)
+#define F6 PAL_LINE(GPIOA, 5)
+#define F7 PAL_LINE(GPIOA, 1)
+#define B1 PAL_LINE(GPIOB, 13)
+#define B3 PAL_LINE(GPIOB, 14)
+#define B2 PAL_LINE(GPIOB, 15)
+#define B6 PAL_LINE(GPIOB, 1)
+
+// LEDs (only D5/B2 uses an actual LED)
+// Setting both RX and TX LEDs to the same pin as there
+// is only one LED availble
+// If this is undesirable, either B0 or B5 can be redefined by
+// using #undef and #define to change its assignment
+#define B0 PAL_LINE(GPIOB, 2)
+#define D5 PAL_LINE(GPIOB, 2) \ No newline at end of file
diff --git a/platforms/chibios/converters/promicro_to_bonsai_c4/converter.mk b/platforms/chibios/converters/promicro_to_bonsai_c4/converter.mk
new file mode 100644
index 0000000000..7410209b67
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_bonsai_c4/converter.mk
@@ -0,0 +1,4 @@
+# Proton C MCU settings for converting AVR projects
+MCU := STM32F411
+BOARD := GENERIC_STM32_F411XE
+BOOTLOADER := stm32-dfu \ No newline at end of file
diff --git a/platforms/chibios/converters/promicro_to_kb2040/_pin_defs.h b/platforms/chibios/converters/promicro_to_kb2040/_pin_defs.h
new file mode 100644
index 0000000000..0a3110890b
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_kb2040/_pin_defs.h
@@ -0,0 +1,36 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Left side (front)
+#define D3 0U
+#define D2 1U
+// GND
+// GND
+#define D1 2U
+#define D0 3U
+#define D4 4U
+#define C6 5U
+#define D7 6U
+#define E6 7U
+#define B4 8U
+#define B5 9U
+
+// Right side (front)
+// RAW
+// GND
+// RESET
+// VCC
+#define F4 29U
+#define F5 28U
+#define F6 27U
+#define F7 26U
+#define B1 18U
+#define B3 20U
+#define B2 19U
+#define B6 10U
+
+// LEDs (Mapped to QT connector to avoid collisions with button/neopixel)
+#define D5 12U
+#define B0 13U
diff --git a/platforms/chibios/converters/promicro_to_kb2040/converter.mk b/platforms/chibios/converters/promicro_to_kb2040/converter.mk
new file mode 100644
index 0000000000..6ffee357b3
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_kb2040/converter.mk
@@ -0,0 +1,9 @@
+# Adafruit KB2040 MCU settings for converting AVR projects
+MCU := RP2040
+BOARD := QMK_PM2040
+BOOTLOADER := rp2040
+
+# These are defaults based on what has been implemented for RP2040 boards
+SERIAL_DRIVER ?= vendor
+WS2812_DRIVER ?= vendor
+BACKLIGHT_DRIVER ?= software
diff --git a/platforms/chibios/converters/promicro_to_promicro_rp2040/_pin_defs.h b/platforms/chibios/converters/promicro_to_promicro_rp2040/_pin_defs.h
new file mode 100644
index 0000000000..0a1f4112a3
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_promicro_rp2040/_pin_defs.h
@@ -0,0 +1,36 @@
+// Copyright 2022 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Left side (front)
+#define D3 0U
+#define D2 1U
+// GND
+// GND
+#define D1 2U
+#define D0 3U
+#define D4 4U
+#define C6 5U
+#define D7 6U
+#define E6 7U
+#define B4 8U
+#define B5 9U
+
+// Right side (front)
+// RAW
+// GND
+// RESET
+// VCC
+#define F4 29U
+#define F5 28U
+#define F6 27U
+#define F7 26U
+#define B1 22U
+#define B3 20U
+#define B2 23U
+#define B6 21U
+
+// LEDs (Mapped to QT connector to avoid collisions with button/neopixel)
+#define D5 17U
+#define B0 16U
diff --git a/platforms/chibios/converters/promicro_to_promicro_rp2040/converter.mk b/platforms/chibios/converters/promicro_to_promicro_rp2040/converter.mk
new file mode 100644
index 0000000000..03863eeb02
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_promicro_rp2040/converter.mk
@@ -0,0 +1,9 @@
+# Sparkfun Pro Micro RP2040 MCU settings for converting AVR projects
+MCU := RP2040
+BOARD := QMK_PM2040
+BOOTLOADER := rp2040
+
+# These are defaults based on what has been implemented for RP2040 boards
+SERIAL_DRIVER ?= vendor
+WS2812_DRIVER ?= vendor
+BACKLIGHT_DRIVER ?= software
diff --git a/platforms/chibios/converters/promicro_to_stemcell/_pin_defs.h b/platforms/chibios/converters/promicro_to_stemcell/_pin_defs.h
new file mode 100644
index 0000000000..a7b709f837
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_stemcell/_pin_defs.h
@@ -0,0 +1,51 @@
+// Copyright 2022 Mega Mind (@megamind4089)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// Pindefs for v2.0.0
+// https://megamind4089.github.io/STeMCell/pinout/
+
+// Left side (front)
+#ifdef STEMCELL_UART_SWAP
+# define D3 PAL_LINE(GPIOA, 3)
+# define D2 PAL_LINE(GPIOA, 2)
+#else
+# define D3 PAL_LINE(GPIOA, 2)
+# define D2 PAL_LINE(GPIOA, 3)
+#endif
+// GND
+// GND
+#ifdef STEMCELL_I2C_SWAP
+# define D1 PAL_LINE(GPIOB, 6)
+# define D0 PAL_LINE(GPIOB, 7)
+#else
+# define D1 PAL_LINE(GPIOB, 7)
+# define D0 PAL_LINE(GPIOB, 6)
+#endif
+
+#define D4 PAL_LINE(GPIOA, 15)
+#define C6 PAL_LINE(GPIOB, 3)
+#define D7 PAL_LINE(GPIOB, 4)
+#define E6 PAL_LINE(GPIOB, 5)
+#define B4 PAL_LINE(GPIOB, 8)
+#define B5 PAL_LINE(GPIOB, 9)
+
+// Right side (front)
+// RAW
+// GND
+// RESET
+// VCC
+#define F4 PAL_LINE(GPIOB, 10)
+#define F5 PAL_LINE(GPIOB, 2)
+#define F6 PAL_LINE(GPIOB, 1)
+#define F7 PAL_LINE(GPIOB, 0)
+
+#define B1 PAL_LINE(GPIOA, 5)
+#define B3 PAL_LINE(GPIOA, 6)
+#define B2 PAL_LINE(GPIOA, 7)
+#define B6 PAL_LINE(GPIOA, 4)
+
+// LEDs
+#define D5 PAL_LINE(GPIOA, 8) // User LED
+#define B0 PAL_LINE(GPIOA, 9) // unconnected pin
diff --git a/platforms/chibios/converters/promicro_to_stemcell/converter.mk b/platforms/chibios/converters/promicro_to_stemcell/converter.mk
new file mode 100644
index 0000000000..1bbe9bf09e
--- /dev/null
+++ b/platforms/chibios/converters/promicro_to_stemcell/converter.mk
@@ -0,0 +1,18 @@
+# Copyright 2022 Mega Mind (@megamind4089)
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+MCU := STM32F411
+BOARD := STEMCELL
+BOOTLOADER := tinyuf2
+
+SERIAL_DRIVER ?= usart
+WS2812_DRIVER ?= bitbang
+
+ifeq ($(strip $(STMC_US)), yes)
+ OPT_DEFS += -DSTEMCELL_UART_SWAP
+endif
+
+ifeq ($(strip $(STMC_IS)), yes)
+ OPT_DEFS += -DSTEMCELL_I2C_SWAP
+endif
+
diff --git a/platforms/chibios/drivers/eeprom/eeprom_stm32.c b/platforms/chibios/drivers/eeprom/eeprom_stm32.c
new file mode 100644
index 0000000000..1a354dc213
--- /dev/null
+++ b/platforms/chibios/drivers/eeprom/eeprom_stm32.c
@@ -0,0 +1,629 @@
+/*
+ * This software is experimental and a work in progress.
+ * Under no circumstances should these files be used in relation to any critical system(s).
+ * Use of these files is at your own risk.
+ *
+ * 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.
+ *
+ * This files are free to use from http://engsta.com/stm32-flash-memory-eeprom-emulator/ by
+ * Artur F.
+ *
+ * Modifications for QMK and STM32F303 by Yiancar
+ * Modifications to add flash wear leveling by Ilya Zhuravlev
+ * Modifications to increase flash density by Don Kjer
+ */
+
+#include <stdio.h>
+#include <stdbool.h>
+#include "util.h"
+#include "debug.h"
+#include "eeprom_stm32.h"
+#include "flash_stm32.h"
+
+/*
+ * We emulate eeprom by writing a snapshot compacted view of eeprom contents,
+ * followed by a write log of any change since that snapshot:
+ *
+ * === SIMULATED EEPROM CONTENTS ===
+ *
+ * ┌─ Compacted ┬ Write Log ─â”
+ * │............│[BYTE][BYTE]│
+ * │FFFF....FFFF│[WRD0][WRD1]│
+ * │FFFFFFFFFFFF│[WORD][NEXT]│
+ * │....FFFFFFFF│[BYTE][WRD0]│
+ * ├────────────┼────────────┤
+ * └──PAGE_BASE │ │
+ * PAGE_LAST─┴─WRITE_BASE │
+ * WRITE_LAST ┘
+ *
+ * Compacted contents are the 1's complement of the actual EEPROM contents.
+ * e.g. An 'FFFF' represents a '0000' value.
+ *
+ * The size of the 'compacted' area is equal to the size of the 'emulated' eeprom.
+ * The size of the compacted-area and write log are configurable, and the combined
+ * size of Compacted + WriteLog is a multiple FEE_PAGE_SIZE, which is MCU dependent.
+ * Simulated Eeprom contents are located at the end of available flash space.
+ *
+ * The following configuration defines can be set:
+ *
+ * FEE_PAGE_COUNT # Total number of pages to use for eeprom simulation (Compact + Write log)
+ * FEE_DENSITY_BYTES # Size of simulated eeprom. (Defaults to half the space allocated by FEE_PAGE_COUNT)
+ * NOTE: The current implementation does not include page swapping,
+ * and FEE_DENSITY_BYTES will consume that amount of RAM as a cached view of actual EEPROM contents.
+ *
+ * The maximum size of FEE_DENSITY_BYTES is currently 16384. The write log size equals
+ * FEE_PAGE_COUNT * FEE_PAGE_SIZE - FEE_DENSITY_BYTES.
+ * The larger the write log, the less frequently the compacted area needs to be rewritten.
+ *
+ *
+ * *** General Algorithm ***
+ *
+ * During initialization:
+ * The contents of the Compacted-flash area are loaded and the 1's complement value
+ * is cached into memory (e.g. 0xFFFF in Flash represents 0x0000 in cache).
+ * Write log entries are processed until a 0xFFFF is reached.
+ * Each log entry updates a byte or word in the cache.
+ *
+ * During reads:
+ * EEPROM contents are given back directly from the cache in memory.
+ *
+ * During writes:
+ * The contents of the cache is updated first.
+ * If the Compacted-flash area corresponding to the write address is unprogrammed, the 1's complement of the value is written directly into Compacted-flash
+ * Otherwise:
+ * If the write log is full, erase both the Compacted-flash area and the Write log, then write cached contents to the Compacted-flash area.
+ * Otherwise a Write log entry is constructed and appended to the next free position in the Write log.
+ *
+ *
+ * *** Write Log Structure ***
+ *
+ * Write log entries allow for optimized byte writes to addresses below 128. Writing 0 or 1 words are also optimized when word-aligned.
+ *
+ * === WRITE LOG ENTRY FORMATS ===
+ *
+ * â•”â•â•â• Byte-Entry â•â•â•—
+ * â•‘0XXXXXXXâ•‘YYYYYYYYâ•‘
+ * ║ └──┬──┘║└──┬───┘║
+ * â•‘ Addressâ•‘ Value â•‘
+ * â•šâ•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•
+ * 0 <= Address < 0x80 (128)
+ *
+ * â•” Word-Encoded 0 â•—
+ * â•‘100XXXXXXXXXXXXXâ•‘
+ * ║ │└─────┬─────┘║
+ * ║ │Address >> 1 ║
+ * ║ └── Value: 0 ║
+ * â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ * 0 <= Address <= 0x3FFE (16382)
+ *
+ * â•” Word-Encoded 1 â•—
+ * â•‘101XXXXXXXXXXXXXâ•‘
+ * ║ │└─────┬─────┘║
+ * ║ │Address >> 1 ║
+ * ║ └── Value: 1 ║
+ * â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ * 0 <= Address <= 0x3FFE (16382)
+ *
+ * â•”â•â•â• Reserved â•â•â•â•—
+ * â•‘110XXXXXXXXXXXXXâ•‘
+ * â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ *
+ * â•”â•â•â•â•â•â•â•â•â•â•â• Word-Next â•â•â•â•â•â•â•â•â•â•â•â•—
+ * â•‘111XXXXXXXXXXXXXâ•‘YYYYYYYYYYYYYYYYâ•‘
+ * ║ └─────┬─────┘║└───────┬──────┘║
+ * â•‘(Address-128)>>1â•‘ ~Value â•‘
+ * â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ * ( 0 <= Address < 0x0080 (128): Reserved)
+ * 0x80 <= Address <= 0x3FFE (16382)
+ *
+ * Write Log entry ranges:
+ * 0x0000 ... 0x7FFF - Byte-Entry; address is (Entry & 0x7F00) >> 4; value is (Entry & 0xFF)
+ * 0x8000 ... 0x9FFF - Word-Encoded 0; address is (Entry & 0x1FFF) << 1; value is 0
+ * 0xA000 ... 0xBFFF - Word-Encoded 1; address is (Entry & 0x1FFF) << 1; value is 1
+ * 0xC000 ... 0xDFFF - Reserved
+ * 0xE000 ... 0xFFBF - Word-Next; address is (Entry & 0x1FFF) << 1 + 0x80; value is ~(Next_Entry)
+ * 0xFFC0 ... 0xFFFE - Reserved
+ * 0xFFFF - Unprogrammed
+ *
+ */
+
+#include "eeprom_stm32_defs.h"
+/* These bits are used for optimizing encoding of bytes, 0 and 1 */
+#define FEE_WORD_ENCODING 0x8000
+#define FEE_VALUE_NEXT 0x6000
+#define FEE_VALUE_RESERVED 0x4000
+#define FEE_VALUE_ENCODED 0x2000
+#define FEE_BYTE_RANGE 0x80
+
+/* Flash word value after erase */
+#define FEE_EMPTY_WORD ((uint16_t)0xFFFF)
+
+#if !defined(FEE_PAGE_SIZE) || !defined(FEE_PAGE_COUNT) || !defined(FEE_MCU_FLASH_SIZE) || !defined(FEE_PAGE_BASE_ADDRESS)
+# error "not implemented."
+#endif
+
+/* In-memory contents of emulated eeprom for faster access */
+/* *TODO: Implement page swapping */
+static uint16_t WordBuf[FEE_DENSITY_BYTES / 2];
+static uint8_t *DataBuf = (uint8_t *)WordBuf;
+
+/* Pointer to the first available slot within the write log */
+static uint16_t *empty_slot;
+
+// #define DEBUG_EEPROM_OUTPUT
+
+/*
+ * Debug print utils
+ */
+
+#if defined(DEBUG_EEPROM_OUTPUT)
+
+# define debug_eeprom debug_enable
+# define eeprom_println(s) println(s)
+# define eeprom_printf(fmt, ...) xprintf(fmt, ##__VA_ARGS__);
+
+#else /* NO_DEBUG */
+
+# define debug_eeprom false
+# define eeprom_println(s)
+# define eeprom_printf(fmt, ...)
+
+#endif /* NO_DEBUG */
+
+void print_eeprom(void) {
+#ifndef NO_DEBUG
+ int empty_rows = 0;
+ for (uint16_t i = 0; i < FEE_DENSITY_BYTES; i++) {
+ if (i % 16 == 0) {
+ if (i >= FEE_DENSITY_BYTES - 16) {
+ /* Make sure we display the last row */
+ empty_rows = 0;
+ }
+ /* Check if this row is uninitialized */
+ ++empty_rows;
+ for (uint16_t j = 0; j < 16; j++) {
+ if (DataBuf[i + j]) {
+ empty_rows = 0;
+ break;
+ }
+ }
+ if (empty_rows > 1) {
+ /* Repeat empty row */
+ if (empty_rows == 2) {
+ /* Only display the first repeat empty row */
+ println("*");
+ }
+ i += 15;
+ continue;
+ }
+ xprintf("%04x", i);
+ }
+ if (i % 8 == 0) print(" ");
+
+ xprintf(" %02x", DataBuf[i]);
+ if ((i + 1) % 16 == 0) {
+ println("");
+ }
+ }
+#endif
+}
+
+uint16_t EEPROM_Init(void) {
+ /* Load emulated eeprom contents from compacted flash into memory */
+ uint16_t *src = (uint16_t *)FEE_COMPACTED_BASE_ADDRESS;
+ uint16_t *dest = (uint16_t *)DataBuf;
+ for (; src < (uint16_t *)FEE_COMPACTED_LAST_ADDRESS; ++src, ++dest) {
+ *dest = ~*src;
+ }
+
+ if (debug_eeprom) {
+ println("EEPROM_Init Compacted Pages:");
+ print_eeprom();
+ println("EEPROM_Init Write Log:");
+ }
+
+ /* Replay write log */
+ uint16_t *log_addr;
+ for (log_addr = (uint16_t *)FEE_WRITE_LOG_BASE_ADDRESS; log_addr < (uint16_t *)FEE_WRITE_LOG_LAST_ADDRESS; ++log_addr) {
+ uint16_t address = *log_addr;
+ if (address == FEE_EMPTY_WORD) {
+ break;
+ }
+ /* Check for lowest 128-bytes optimization */
+ if (!(address & FEE_WORD_ENCODING)) {
+ uint8_t bvalue = (uint8_t)address;
+ address >>= 8;
+ DataBuf[address] = bvalue;
+ eeprom_printf("DataBuf[0x%02x] = 0x%02x;\n", address, bvalue);
+ } else {
+ uint16_t wvalue;
+ /* Check if value is in next word */
+ if ((address & FEE_VALUE_NEXT) == FEE_VALUE_NEXT) {
+ /* Read value from next word */
+ if (++log_addr >= (uint16_t *)FEE_WRITE_LOG_LAST_ADDRESS) {
+ break;
+ }
+ wvalue = ~*log_addr;
+ if (!wvalue) {
+ eeprom_printf("Incomplete write at log_addr: 0x%04lx;\n", (uint32_t)log_addr);
+ /* Possibly incomplete write. Ignore and continue */
+ continue;
+ }
+ address &= 0x1FFF;
+ address <<= 1;
+ /* Writes to addresses less than 128 are byte log entries */
+ address += FEE_BYTE_RANGE;
+ } else {
+ /* Reserved for future use */
+ if (address & FEE_VALUE_RESERVED) {
+ eeprom_printf("Reserved encoded value at log_addr: 0x%04lx;\n", (uint32_t)log_addr);
+ continue;
+ }
+ /* Optimization for 0 or 1 values. */
+ wvalue = (address & FEE_VALUE_ENCODED) >> 13;
+ address &= 0x1FFF;
+ address <<= 1;
+ }
+ if (address < FEE_DENSITY_BYTES) {
+ eeprom_printf("DataBuf[0x%04x] = 0x%04x;\n", address, wvalue);
+ *(uint16_t *)(&DataBuf[address]) = wvalue;
+ } else {
+ eeprom_printf("DataBuf[0x%04x] cannot be set to 0x%04x [BAD ADDRESS]\n", address, wvalue);
+ }
+ }
+ }
+
+ empty_slot = log_addr;
+
+ if (debug_eeprom) {
+ println("EEPROM_Init Final DataBuf:");
+ print_eeprom();
+ }
+
+ return FEE_DENSITY_BYTES;
+}
+
+/* Clear flash contents (doesn't touch in-memory DataBuf) */
+static void eeprom_clear(void) {
+ FLASH_Unlock();
+
+ for (uint16_t page_num = 0; page_num < FEE_PAGE_COUNT; ++page_num) {
+ eeprom_printf("FLASH_ErasePage(0x%04lx)\n", (uint32_t)(FEE_PAGE_BASE_ADDRESS + (page_num * FEE_PAGE_SIZE)));
+ FLASH_ErasePage(FEE_PAGE_BASE_ADDRESS + (page_num * FEE_PAGE_SIZE));
+ }
+
+ FLASH_Lock();
+
+ empty_slot = (uint16_t *)FEE_WRITE_LOG_BASE_ADDRESS;
+ eeprom_printf("eeprom_clear empty_slot: 0x%08lx\n", (uint32_t)empty_slot);
+}
+
+/* Erase emulated eeprom */
+void EEPROM_Erase(void) {
+ eeprom_println("EEPROM_Erase");
+ /* Erase compacted pages and write log */
+ eeprom_clear();
+ /* re-initialize to reset DataBuf */
+ EEPROM_Init();
+}
+
+/* Compact write log */
+static uint8_t eeprom_compact(void) {
+ /* Erase compacted pages and write log */
+ eeprom_clear();
+
+ FLASH_Unlock();
+
+ FLASH_Status final_status = FLASH_COMPLETE;
+
+ /* Write emulated eeprom contents from memory to compacted flash */
+ uint16_t *src = (uint16_t *)DataBuf;
+ uintptr_t dest = FEE_COMPACTED_BASE_ADDRESS;
+ uint16_t value;
+ for (; dest < FEE_COMPACTED_LAST_ADDRESS; ++src, dest += 2) {
+ value = *src;
+ if (value) {
+ eeprom_printf("FLASH_ProgramHalfWord(0x%04lx, 0x%04x)\n", (uint32_t)dest, ~value);
+ FLASH_Status status = FLASH_ProgramHalfWord(dest, ~value);
+ if (status != FLASH_COMPLETE) final_status = status;
+ }
+ }
+
+ FLASH_Lock();
+
+ if (debug_eeprom) {
+ println("eeprom_compacted:");
+ print_eeprom();
+ }
+
+ return final_status;
+}
+
+static uint8_t eeprom_write_direct_entry(uint16_t Address) {
+ /* Check if we can just write this directly to the compacted flash area */
+ uintptr_t directAddress = FEE_COMPACTED_BASE_ADDRESS + (Address & 0xFFFE);
+ if (*(uint16_t *)directAddress == FEE_EMPTY_WORD) {
+ /* Write the value directly to the compacted area without a log entry */
+ uint16_t value = ~*(uint16_t *)(&DataBuf[Address & 0xFFFE]);
+ /* Early exit if a write isn't needed */
+ if (value == FEE_EMPTY_WORD) return FLASH_COMPLETE;
+
+ FLASH_Unlock();
+
+ eeprom_printf("FLASH_ProgramHalfWord(0x%08lx, 0x%04x) [DIRECT]\n", (uint32_t)directAddress, value);
+ FLASH_Status status = FLASH_ProgramHalfWord(directAddress, value);
+
+ FLASH_Lock();
+ return status;
+ }
+ return 0;
+}
+
+static uint8_t eeprom_write_log_word_entry(uint16_t Address) {
+ FLASH_Status final_status = FLASH_COMPLETE;
+
+ uint16_t value = *(uint16_t *)(&DataBuf[Address]);
+ eeprom_printf("eeprom_write_log_word_entry(0x%04x): 0x%04x\n", Address, value);
+
+ /* MSB signifies the lowest 128-byte optimization is not in effect */
+ uint16_t encoding = FEE_WORD_ENCODING;
+ uint8_t entry_size;
+ if (value <= 1) {
+ encoding |= value << 13;
+ entry_size = 2;
+ } else {
+ encoding |= FEE_VALUE_NEXT;
+ entry_size = 4;
+ /* Writes to addresses less than 128 are byte log entries */
+ Address -= FEE_BYTE_RANGE;
+ }
+
+ /* if we can't find an empty spot, we must compact emulated eeprom */
+ if (empty_slot > (uint16_t *)(FEE_WRITE_LOG_LAST_ADDRESS - entry_size)) {
+ /* compact the write log into the compacted flash area */
+ return eeprom_compact();
+ }
+
+ /* Word log writes should be word-aligned. Take back a bit */
+ Address >>= 1;
+ Address |= encoding;
+
+ /* ok we found a place let's write our data */
+ FLASH_Unlock();
+
+ /* address */
+ eeprom_printf("FLASH_ProgramHalfWord(0x%08lx, 0x%04x)\n", (uint32_t)empty_slot, Address);
+ final_status = FLASH_ProgramHalfWord((uintptr_t)empty_slot++, Address);
+
+ /* value */
+ if (encoding == (FEE_WORD_ENCODING | FEE_VALUE_NEXT)) {
+ eeprom_printf("FLASH_ProgramHalfWord(0x%08lx, 0x%04x)\n", (uint32_t)empty_slot, ~value);
+ FLASH_Status status = FLASH_ProgramHalfWord((uintptr_t)empty_slot++, ~value);
+ if (status != FLASH_COMPLETE) final_status = status;
+ }
+
+ FLASH_Lock();
+
+ return final_status;
+}
+
+static uint8_t eeprom_write_log_byte_entry(uint16_t Address) {
+ eeprom_printf("eeprom_write_log_byte_entry(0x%04x): 0x%02x\n", Address, DataBuf[Address]);
+
+ /* if couldn't find an empty spot, we must compact emulated eeprom */
+ if (empty_slot >= (uint16_t *)FEE_WRITE_LOG_LAST_ADDRESS) {
+ /* compact the write log into the compacted flash area */
+ return eeprom_compact();
+ }
+
+ /* ok we found a place let's write our data */
+ FLASH_Unlock();
+
+ /* Pack address and value into the same word */
+ uint16_t value = (Address << 8) | DataBuf[Address];
+
+ /* write to flash */
+ eeprom_printf("FLASH_ProgramHalfWord(0x%08lx, 0x%04x)\n", (uint32_t)empty_slot, value);
+ FLASH_Status status = FLASH_ProgramHalfWord((uintptr_t)empty_slot++, value);
+
+ FLASH_Lock();
+
+ return status;
+}
+
+uint8_t EEPROM_WriteDataByte(uint16_t Address, uint8_t DataByte) {
+ /* if the address is out-of-bounds, do nothing */
+ if (Address >= FEE_DENSITY_BYTES) {
+ eeprom_printf("EEPROM_WriteDataByte(0x%04x, 0x%02x) [BAD ADDRESS]\n", Address, DataByte);
+ return FLASH_BAD_ADDRESS;
+ }
+
+ /* if the value is the same, don't bother writing it */
+ if (DataBuf[Address] == DataByte) {
+ eeprom_printf("EEPROM_WriteDataByte(0x%04x, 0x%02x) [SKIP SAME]\n", Address, DataByte);
+ return 0;
+ }
+
+ /* keep DataBuf cache in sync */
+ DataBuf[Address] = DataByte;
+ eeprom_printf("EEPROM_WriteDataByte DataBuf[0x%04x] = 0x%02x\n", Address, DataBuf[Address]);
+
+ /* perform the write into flash memory */
+ /* First, attempt to write directly into the compacted flash area */
+ FLASH_Status status = eeprom_write_direct_entry(Address);
+ if (!status) {
+ /* Otherwise append to the write log */
+ if (Address < FEE_BYTE_RANGE) {
+ status = eeprom_write_log_byte_entry(Address);
+ } else {
+ status = eeprom_write_log_word_entry(Address & 0xFFFE);
+ }
+ }
+ if (status != 0 && status != FLASH_COMPLETE) {
+ eeprom_printf("EEPROM_WriteDataByte [STATUS == %d]\n", status);
+ }
+ return status;
+}
+
+uint8_t EEPROM_WriteDataWord(uint16_t Address, uint16_t DataWord) {
+ /* if the address is out-of-bounds, do nothing */
+ if (Address >= FEE_DENSITY_BYTES) {
+ eeprom_printf("EEPROM_WriteDataWord(0x%04x, 0x%04x) [BAD ADDRESS]\n", Address, DataWord);
+ return FLASH_BAD_ADDRESS;
+ }
+
+ /* Check for word alignment */
+ FLASH_Status final_status = FLASH_COMPLETE;
+ if (Address % 2) {
+ final_status = EEPROM_WriteDataByte(Address, DataWord);
+ FLASH_Status status = EEPROM_WriteDataByte(Address + 1, DataWord >> 8);
+ if (status != FLASH_COMPLETE) final_status = status;
+ if (final_status != 0 && final_status != FLASH_COMPLETE) {
+ eeprom_printf("EEPROM_WriteDataWord [STATUS == %d]\n", final_status);
+ }
+ return final_status;
+ }
+
+ /* if the value is the same, don't bother writing it */
+ uint16_t oldValue = *(uint16_t *)(&DataBuf[Address]);
+ if (oldValue == DataWord) {
+ eeprom_printf("EEPROM_WriteDataWord(0x%04x, 0x%04x) [SKIP SAME]\n", Address, DataWord);
+ return 0;
+ }
+
+ /* keep DataBuf cache in sync */
+ *(uint16_t *)(&DataBuf[Address]) = DataWord;
+ eeprom_printf("EEPROM_WriteDataWord DataBuf[0x%04x] = 0x%04x\n", Address, *(uint16_t *)(&DataBuf[Address]));
+
+ /* perform the write into flash memory */
+ /* First, attempt to write directly into the compacted flash area */
+ final_status = eeprom_write_direct_entry(Address);
+ if (!final_status) {
+ /* Otherwise append to the write log */
+ /* Check if we need to fall back to byte write */
+ if (Address < FEE_BYTE_RANGE) {
+ final_status = FLASH_COMPLETE;
+ /* Only write a byte if it has changed */
+ if ((uint8_t)oldValue != (uint8_t)DataWord) {
+ final_status = eeprom_write_log_byte_entry(Address);
+ }
+ FLASH_Status status = FLASH_COMPLETE;
+ /* Only write a byte if it has changed */
+ if ((oldValue >> 8) != (DataWord >> 8)) {
+ status = eeprom_write_log_byte_entry(Address + 1);
+ }
+ if (status != FLASH_COMPLETE) final_status = status;
+ } else {
+ final_status = eeprom_write_log_word_entry(Address);
+ }
+ }
+ if (final_status != 0 && final_status != FLASH_COMPLETE) {
+ eeprom_printf("EEPROM_WriteDataWord [STATUS == %d]\n", final_status);
+ }
+ return final_status;
+}
+
+uint8_t EEPROM_ReadDataByte(uint16_t Address) {
+ uint8_t DataByte = 0xFF;
+
+ if (Address < FEE_DENSITY_BYTES) {
+ DataByte = DataBuf[Address];
+ }
+
+ eeprom_printf("EEPROM_ReadDataByte(0x%04x): 0x%02x\n", Address, DataByte);
+
+ return DataByte;
+}
+
+uint16_t EEPROM_ReadDataWord(uint16_t Address) {
+ uint16_t DataWord = 0xFFFF;
+
+ if (Address < FEE_DENSITY_BYTES - 1) {
+ /* Check word alignment */
+ if (Address % 2) {
+ DataWord = DataBuf[Address] | (DataBuf[Address + 1] << 8);
+ } else {
+ DataWord = *(uint16_t *)(&DataBuf[Address]);
+ }
+ }
+
+ eeprom_printf("EEPROM_ReadDataWord(0x%04x): 0x%04x\n", Address, DataWord);
+
+ return DataWord;
+}
+
+/*****************************************************************************
+ * Bind to eeprom_driver.c
+ *******************************************************************************/
+void eeprom_driver_init(void) {
+ EEPROM_Init();
+}
+
+void eeprom_driver_erase(void) {
+ EEPROM_Erase();
+}
+
+void eeprom_read_block(void *buf, const void *addr, size_t len) {
+ const uint8_t *src = (const uint8_t *)addr;
+ uint8_t * dest = (uint8_t *)buf;
+
+ /* Check word alignment */
+ if (len && (uintptr_t)src % 2) {
+ /* Read the unaligned first byte */
+ *dest++ = EEPROM_ReadDataByte((const uintptr_t)src++);
+ --len;
+ }
+
+ uint16_t value;
+ bool aligned = ((uintptr_t)dest % 2 == 0);
+ while (len > 1) {
+ value = EEPROM_ReadDataWord((const uintptr_t)((uint16_t *)src));
+ if (aligned) {
+ *(uint16_t *)dest = value;
+ dest += 2;
+ } else {
+ *dest++ = value;
+ *dest++ = value >> 8;
+ }
+ src += 2;
+ len -= 2;
+ }
+ if (len) {
+ *dest = EEPROM_ReadDataByte((const uintptr_t)src);
+ }
+}
+
+void eeprom_write_block(const void *buf, void *addr, size_t len) {
+ uint8_t * dest = (uint8_t *)addr;
+ const uint8_t *src = (const uint8_t *)buf;
+
+ /* Check word alignment */
+ if (len && (uintptr_t)dest % 2) {
+ /* Write the unaligned first byte */
+ EEPROM_WriteDataByte((uintptr_t)dest++, *src++);
+ --len;
+ }
+
+ uint16_t value;
+ bool aligned = ((uintptr_t)src % 2 == 0);
+ while (len > 1) {
+ if (aligned) {
+ value = *(uint16_t *)src;
+ } else {
+ value = *(uint8_t *)src | (*(uint8_t *)(src + 1) << 8);
+ }
+ EEPROM_WriteDataWord((uintptr_t)((uint16_t *)dest), value);
+ dest += 2;
+ src += 2;
+ len -= 2;
+ }
+
+ if (len) {
+ EEPROM_WriteDataByte((uintptr_t)dest, *src);
+ }
+}
diff --git a/platforms/chibios/eeprom_stm32.h b/platforms/chibios/drivers/eeprom/eeprom_stm32.h
index 8fcfb556b8..8fcfb556b8 100644
--- a/platforms/chibios/eeprom_stm32.h
+++ b/platforms/chibios/drivers/eeprom/eeprom_stm32.h
diff --git a/platforms/chibios/eeprom_stm32_defs.h b/platforms/chibios/drivers/eeprom/eeprom_stm32_defs.h
index 57d0440330..57d0440330 100644
--- a/platforms/chibios/eeprom_stm32_defs.h
+++ b/platforms/chibios/drivers/eeprom/eeprom_stm32_defs.h
diff --git a/platforms/chibios/eeprom_teensy.c b/platforms/chibios/drivers/eeprom/eeprom_teensy.c
index c8777febde..c8777febde 100644
--- a/platforms/chibios/eeprom_teensy.c
+++ b/platforms/chibios/drivers/eeprom/eeprom_teensy.c
diff --git a/platforms/chibios/eeprom_teensy.h b/platforms/chibios/drivers/eeprom/eeprom_teensy.h
index 9a14a1fa79..9a14a1fa79 100755
--- a/platforms/chibios/eeprom_teensy.h
+++ b/platforms/chibios/drivers/eeprom/eeprom_teensy.h
diff --git a/platforms/chibios/flash_stm32.c b/platforms/chibios/drivers/flash/flash_stm32.c
index 72c41b8b78..72c41b8b78 100644
--- a/platforms/chibios/flash_stm32.c
+++ b/platforms/chibios/drivers/flash/flash_stm32.c
diff --git a/platforms/chibios/flash_stm32.h b/platforms/chibios/drivers/flash/flash_stm32.h
index 6c66642ec5..6c66642ec5 100644
--- a/platforms/chibios/flash_stm32.h
+++ b/platforms/chibios/drivers/flash/flash_stm32.h
diff --git a/platforms/chibios/drivers/i2c_master.c b/platforms/chibios/drivers/i2c_master.c
index 21e064b1dc..4c7a5daa17 100644
--- a/platforms/chibios/drivers/i2c_master.c
+++ b/platforms/chibios/drivers/i2c_master.c
@@ -107,16 +107,25 @@ static const I2CConfig i2cconfig = {
#endif
};
-static i2c_status_t chibios_to_qmk(const msg_t* status) {
- switch (*status) {
- case I2C_NO_ERROR:
- return I2C_STATUS_SUCCESS;
- case I2C_TIMEOUT:
- return I2C_STATUS_TIMEOUT;
- // I2C_BUS_ERROR, I2C_ARBITRATION_LOST, I2C_ACK_FAILURE, I2C_OVERRUN, I2C_PEC_ERROR, I2C_SMB_ALERT
- default:
- return I2C_STATUS_ERROR;
+/**
+ * @brief Handles any I2C error condition by stopping the I2C peripheral and
+ * aborting any ongoing transactions. Furthermore ChibiOS status codes are
+ * converted into QMK codes.
+ *
+ * @param status ChibiOS specific I2C status code
+ * @return i2c_status_t QMK specific I2C status code
+ */
+static i2c_status_t i2c_epilogue(const msg_t status) {
+ if (status == MSG_OK) {
+ return I2C_STATUS_SUCCESS;
}
+
+ // From ChibiOS HAL: "After a timeout the driver must be stopped and
+ // restarted because the bus is in an uncertain state." We also issue that
+ // hard stop in case of any error.
+ i2c_stop();
+
+ return status == MSG_TIMEOUT ? I2C_STATUS_TIMEOUT : I2C_STATUS_ERROR;
}
__attribute__((weak)) void i2c_init(void) {
@@ -149,14 +158,14 @@ i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length,
i2c_address = address;
i2cStart(&I2C_DRIVER, &i2cconfig);
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, 0, 0, TIME_MS2I(timeout));
- return chibios_to_qmk(&status);
+ return i2c_epilogue(status);
}
i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout) {
i2c_address = address;
i2cStart(&I2C_DRIVER, &i2cconfig);
msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, TIME_MS2I(timeout));
- return chibios_to_qmk(&status);
+ return i2c_epilogue(status);
}
i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) {
@@ -170,7 +179,7 @@ i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data,
complete_packet[0] = regaddr;
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 1, 0, 0, TIME_MS2I(timeout));
- return chibios_to_qmk(&status);
+ return i2c_epilogue(status);
}
i2c_status_t i2c_writeReg16(uint8_t devaddr, uint16_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout) {
@@ -185,14 +194,14 @@ i2c_status_t i2c_writeReg16(uint8_t devaddr, uint16_t regaddr, const uint8_t* da
complete_packet[1] = regaddr & 0xFF;
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 2, 0, 0, TIME_MS2I(timeout));
- return chibios_to_qmk(&status);
+ return i2c_epilogue(status);
}
i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
i2c_address = devaddr;
i2cStart(&I2C_DRIVER, &i2cconfig);
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), &regaddr, 1, data, length, TIME_MS2I(timeout));
- return chibios_to_qmk(&status);
+ return i2c_epilogue(status);
}
i2c_status_t i2c_readReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout) {
@@ -200,7 +209,7 @@ i2c_status_t i2c_readReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uin
i2cStart(&I2C_DRIVER, &i2cconfig);
uint8_t register_packet[2] = {regaddr >> 8, regaddr & 0xFF};
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), register_packet, 2, data, length, TIME_MS2I(timeout));
- return chibios_to_qmk(&status);
+ return i2c_epilogue(status);
}
void i2c_stop(void) {
diff --git a/platforms/chibios/drivers/serial.c b/platforms/chibios/drivers/serial.c
index 0cff057d1d..0dd8e71ae8 100644
--- a/platforms/chibios/drivers/serial.c
+++ b/platforms/chibios/drivers/serial.c
@@ -20,7 +20,8 @@
# error "chSysPolledDelayX method not supported on this platform"
#else
# undef wait_us
-# define wait_us(x) chSysPolledDelayX(US2RTC(CPU_CLOCK, x))
+// Force usage of polled waiting - in case WAIT_US_TIMER is activated
+# define wait_us(us) chSysPolledDelayX(US2RTC(REALTIME_COUNTER_CLOCK, us))
#endif
#ifndef SELECT_SOFT_SERIAL_SPEED
@@ -87,10 +88,7 @@ static THD_FUNCTION(Thread1, arg) {
chRegSetThreadName("blinker");
while (true) {
palWaitLineTimeout(SOFT_SERIAL_PIN, TIME_INFINITE);
-
- split_shared_memory_lock();
interrupt_handler(NULL);
- split_shared_memory_unlock();
}
}
@@ -155,6 +153,7 @@ static void __attribute__((noinline)) serial_write_byte(uint8_t data) {
// interrupt handle to be used by the slave device
void interrupt_handler(void *arg) {
+ split_shared_memory_lock_autounlock();
chSysLockFromISR();
sync_send();
@@ -212,6 +211,8 @@ void interrupt_handler(void *arg) {
static inline bool initiate_transaction(uint8_t sstd_index) {
if (sstd_index > NUM_TOTAL_TRANSACTIONS) return false;
+ split_shared_memory_lock_autounlock();
+
split_transaction_desc_t *trans = &split_transaction_table[sstd_index];
// TODO: remove extra delay between transactions
@@ -233,7 +234,7 @@ static inline bool initiate_transaction(uint8_t sstd_index) {
// check if the slave is present
if (serial_read_pin()) {
// slave failed to pull the line low, assume not present
- dprintf("serial::NO_RESPONSE\n");
+ serial_dprintf("serial::NO_RESPONSE\n");
chSysUnlock();
return false;
}
@@ -269,7 +270,7 @@ static inline bool initiate_transaction(uint8_t sstd_index) {
serial_delay();
if ((checksum_computed) != (checksum_received)) {
- dprintf("serial::FAIL[%u,%u,%u]\n", checksum_computed, checksum_received, sstd_index);
+ serial_dprintf("serial::FAIL[%u,%u,%u]\n", checksum_computed, checksum_received, sstd_index);
serial_output();
serial_high();
@@ -292,8 +293,5 @@ static inline bool initiate_transaction(uint8_t sstd_index) {
//
// this code is very time dependent, so we need to disable interrupts
bool soft_serial_transaction(int sstd_index) {
- split_shared_memory_lock();
- bool result = initiate_transaction((uint8_t)sstd_index);
- split_shared_memory_unlock();
- return result;
+ return initiate_transaction((uint8_t)sstd_index);
}
diff --git a/platforms/chibios/drivers/serial_protocol.c b/platforms/chibios/drivers/serial_protocol.c
new file mode 100644
index 0000000000..c95aed9885
--- /dev/null
+++ b/platforms/chibios/drivers/serial_protocol.c
@@ -0,0 +1,164 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include <ch.h>
+
+#include "quantum.h"
+#include "serial.h"
+#include "serial_protocol.h"
+#include "printf.h"
+#include "synchronization_util.h"
+
+static inline bool initiate_transaction(uint8_t transaction_id);
+static inline bool react_to_transaction(void);
+
+/**
+ * @brief This thread runs on the slave and responds to transactions initiated
+ * by the master.
+ */
+static THD_WORKING_AREA(waSlaveThread, 1024);
+static THD_FUNCTION(SlaveThread, arg) {
+ (void)arg;
+ chRegSetThreadName("split_protocol_tx_rx");
+
+ while (true) {
+ if (unlikely(!react_to_transaction())) {
+ /* Clear the receive queue, to start with a clean slate.
+ * Parts of failed transactions or spurious bytes could still be in it. */
+ serial_transport_driver_clear();
+ }
+ }
+}
+
+/**
+ * @brief Slave specific initializations.
+ */
+void soft_serial_target_init(void) {
+ serial_transport_driver_slave_init();
+
+ /* Start transport thread. */
+ chThdCreateStatic(waSlaveThread, sizeof(waSlaveThread), HIGHPRIO, SlaveThread, NULL);
+}
+
+/**
+ * @brief Master specific initializations.
+ */
+void soft_serial_initiator_init(void) {
+ serial_transport_driver_master_init();
+}
+
+/**
+ * @brief React to transactions started by the master.
+ */
+static inline bool react_to_transaction(void) {
+ uint8_t transaction_id = 0;
+ /* Wait until there is a transaction for us. */
+ if (unlikely(!serial_transport_receive_blocking(&transaction_id, sizeof(transaction_id)))) {
+ return false;
+ }
+
+ /* Sanity check that we are actually responding to a valid transaction. */
+ if (unlikely(transaction_id >= NUM_TOTAL_TRANSACTIONS)) {
+ return false;
+ }
+
+ split_shared_memory_lock_autounlock();
+
+ split_transaction_desc_t* transaction = &split_transaction_table[transaction_id];
+
+ /* Send back the handshake which is XORed as a simple checksum,
+ to signal that the slave is ready to receive possible transaction buffers */
+ transaction_id ^= NUM_TOTAL_TRANSACTIONS;
+ if (unlikely(!serial_transport_send(&transaction_id, sizeof(transaction_id)))) {
+ return false;
+ }
+
+ /* Receive transaction buffer from the master. If this transaction requires it.*/
+ if (transaction->initiator2target_buffer_size) {
+ if (unlikely(!serial_transport_receive(split_trans_initiator2target_buffer(transaction), transaction->initiator2target_buffer_size))) {
+ return false;
+ }
+ }
+
+ /* Allow any slave processing to occur. */
+ if (transaction->slave_callback) {
+ transaction->slave_callback(transaction->initiator2target_buffer_size, split_trans_initiator2target_buffer(transaction), transaction->initiator2target_buffer_size, split_trans_target2initiator_buffer(transaction));
+ }
+
+ /* Send transaction buffer to the master. If this transaction requires it. */
+ if (transaction->target2initiator_buffer_size) {
+ if (unlikely(!serial_transport_send(split_trans_target2initiator_buffer(transaction), transaction->target2initiator_buffer_size))) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+/**
+ * @brief Start transaction from the master half to the slave half.
+ *
+ * @param index Transaction Table index of the transaction to start.
+ * @return bool Indicates success of transaction.
+ */
+bool soft_serial_transaction(int index) {
+ bool result = initiate_transaction((uint8_t)index);
+
+ if (unlikely(!result)) {
+ /* Clear the receive queue, to start with a clean slate.
+ * Parts of failed transactions or spurious bytes could still be in it. */
+ serial_transport_driver_clear();
+ }
+
+ return result;
+}
+
+/**
+ * @brief Initiate transaction to slave half.
+ */
+static inline bool initiate_transaction(uint8_t transaction_id) {
+ /* Sanity check that we are actually starting a valid transaction. */
+ if (unlikely(transaction_id >= NUM_TOTAL_TRANSACTIONS)) {
+ serial_dprintf("SPLIT: illegal transaction id\n");
+ return false;
+ }
+
+ split_shared_memory_lock_autounlock();
+
+ split_transaction_desc_t* transaction = &split_transaction_table[transaction_id];
+
+ /* Send transaction table index to the slave, which doubles as basic handshake token. */
+ if (unlikely(!serial_transport_send(&transaction_id, sizeof(transaction_id)))) {
+ serial_dprintf("SPLIT: sending handshake failed\n");
+ return false;
+ }
+
+ uint8_t transaction_id_shake = 0xFF;
+
+ /* Which we always read back first so that we can error out correctly.
+ * - due to the half duplex limitations on return codes, we always have to read *something*.
+ * - without the read, write only transactions *always* succeed, even during the boot process where the slave is not ready.
+ */
+ if (unlikely(!serial_transport_receive(&transaction_id_shake, sizeof(transaction_id_shake)) || (transaction_id_shake != (transaction_id ^ NUM_TOTAL_TRANSACTIONS)))) {
+ serial_dprintf("SPLIT: receiving handshake failed\n");
+ return false;
+ }
+
+ /* Send transaction buffer to the slave. If this transaction requires it. */
+ if (transaction->initiator2target_buffer_size) {
+ if (unlikely(!serial_transport_send(split_trans_initiator2target_buffer(transaction), transaction->initiator2target_buffer_size))) {
+ serial_dprintf("SPLIT: sending buffer failed\n");
+ return false;
+ }
+ }
+
+ /* Receive transaction buffer from the slave. If this transaction requires it. */
+ if (transaction->target2initiator_buffer_size) {
+ if (unlikely(!serial_transport_receive(split_trans_target2initiator_buffer(transaction), transaction->target2initiator_buffer_size))) {
+ serial_dprintf("SPLIT: receiving buffer failed\n");
+ return false;
+ }
+ }
+
+ return true;
+}
diff --git a/platforms/chibios/drivers/serial_protocol.h b/platforms/chibios/drivers/serial_protocol.h
new file mode 100644
index 0000000000..4275a7f8d8
--- /dev/null
+++ b/platforms/chibios/drivers/serial_protocol.h
@@ -0,0 +1,49 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include <stddef.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+#pragma once
+
+/**
+ * @brief Clears any intermediate sending or receiving state of the driver to a known good
+ * state. This happens after errors in the middle of transactions, to start with
+ * a clean slate.
+ */
+void serial_transport_driver_clear(void);
+
+/**
+ * @brief Driver specific initialization on the slave half.
+ */
+void serial_transport_driver_slave_init(void);
+
+/**
+ * @brief Driver specific specific initialization on the master half.
+ */
+void serial_transport_driver_master_init(void);
+
+/**
+ * @brief Blocking receive of size * bytes.
+ *
+ * @return true Receive success.
+ * @return false Receive failed, e.g. by bit errors.
+ */
+bool __attribute__((nonnull, hot)) serial_transport_receive(uint8_t* destination, const size_t size);
+
+/**
+ * @brief Blocking receive of size * bytes with an implicitly defined timeout.
+ *
+ * @return true Receive success.
+ * @return false Receive failed, e.g. by timeout or bit errors.
+ */
+bool __attribute__((nonnull, hot)) serial_transport_receive_blocking(uint8_t* destination, const size_t size);
+
+/**
+ * @brief Blocking send of buffer with timeout.
+ *
+ * @return true Send success.
+ * @return false Send failed, e.g. by timeout or bit errors.
+ */
+bool __attribute__((nonnull, hot)) serial_transport_send(const uint8_t* source, const size_t size);
diff --git a/platforms/chibios/drivers/serial_usart.c b/platforms/chibios/drivers/serial_usart.c
index e9fa4af7a3..6581a5b6e9 100644
--- a/platforms/chibios/drivers/serial_usart.c
+++ b/platforms/chibios/drivers/serial_usart.c
@@ -1,49 +1,55 @@
-/* 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 <http://www.gnu.org/licenses/>.
- */
+// Copyright 2021 QMK
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
#include "serial_usart.h"
+#include "serial_protocol.h"
#include "synchronization_util.h"
#if defined(SERIAL_USART_CONFIG)
-static SerialConfig serial_config = SERIAL_USART_CONFIG;
-#else
-static SerialConfig serial_config = {
- .speed = (SERIAL_USART_SPEED), /* speed - mandatory */
+static QMKSerialConfig serial_config = SERIAL_USART_CONFIG;
+#elif defined(MCU_STM32) /* STM32 MCUs */
+static QMKSerialConfig serial_config = {
+# if HAL_USE_SERIAL
+ .speed = (SERIAL_USART_SPEED),
+# else
+ .baud = (SERIAL_USART_SPEED),
+# endif
.cr1 = (SERIAL_USART_CR1),
.cr2 = (SERIAL_USART_CR2),
# if !defined(SERIAL_USART_FULL_DUPLEX)
.cr3 = ((SERIAL_USART_CR3) | USART_CR3_HDSEL) /* activate half-duplex mode */
# else
- .cr3 = (SERIAL_USART_CR3)
+ .cr3 = (SERIAL_USART_CR3)
# endif
};
+#elif defined(MCU_RP) /* Raspberry Pi MCUs */
+/* USART in 8E2 config with RX and TX FIFOs enabled. */
+// clang-format off
+static QMKSerialConfig serial_config = {
+ .baud = (SERIAL_USART_SPEED),
+ .UARTLCR_H = UART_UARTLCR_H_WLEN_8BITS | UART_UARTLCR_H_PEN | UART_UARTLCR_H_STP2 | UART_UARTLCR_H_FEN,
+ .UARTCR = 0U,
+ .UARTIFLS = UART_UARTIFLS_RXIFLSEL_1_8F | UART_UARTIFLS_TXIFLSEL_1_8E,
+ .UARTDMACR = 0U
+};
+// clang-format on
+#else
+# error MCU Familiy not supported by default, supply your own serial_config by defining SERIAL_USART_CONFIG in your keyboard files.
#endif
-static SerialDriver* serial_driver = &SERIAL_USART_DRIVER;
+static QMKSerialDriver* serial_driver = (QMKSerialDriver*)&SERIAL_USART_DRIVER;
-static inline bool react_to_transactions(void);
-static inline bool __attribute__((nonnull)) receive(uint8_t* destination, const size_t size);
-static inline bool __attribute__((nonnull)) send(const uint8_t* source, const size_t size);
-static inline bool initiate_transaction(uint8_t sstd_index);
-static inline void usart_clear(void);
+#if HAL_USE_SERIAL
/**
- * @brief Clear the receive input queue.
+ * @brief SERIAL Driver startup routine.
*/
-static inline void usart_clear(void) {
+static inline void usart_driver_start(void) {
+ sdStart(serial_driver, &serial_config);
+}
+
+inline void serial_transport_driver_clear(void) {
osalSysLock();
bool volatile queue_not_empty = !iqIsEmptyI(&serial_driver->iqueue);
osalSysUnlock();
@@ -64,36 +70,96 @@ static inline void usart_clear(void) {
}
}
+#elif HAL_USE_SIO
+
+void clear_rx_evt_cb(SIODriver* siop) {
+ osalSysLockFromISR();
+ /* If errors occured during transactions this callback is invoked. We just
+ * clear the error sources and move on. We rely on the fact that we check
+ * for the success of the transaction by comparing the received/send bytes
+ * with the actual received/send bytes in the send/receive functions. */
+ sioGetAndClearEventsI(serial_driver);
+ osalSysUnlockFromISR();
+}
+
+static const SIOOperation serial_usart_operation = {.rx_cb = NULL, .rx_idle_cb = NULL, .tx_cb = NULL, .tx_end_cb = NULL, .rx_evt_cb = &clear_rx_evt_cb};
+
/**
- * @brief Blocking send of buffer with timeout.
- *
- * @return true Send success.
- * @return false Send failed.
+ * @brief SIO Driver startup routine.
*/
-static inline bool send(const uint8_t* source, const size_t size) {
- bool success = (size_t)sdWriteTimeout(serial_driver, source, size, TIME_MS2I(SERIAL_USART_TIMEOUT)) == size;
+static inline void usart_driver_start(void) {
+ sioStart(serial_driver, &serial_config);
+ sioStartOperation(serial_driver, &serial_usart_operation);
+}
+
+inline void serial_transport_driver_clear(void) {
+ osalSysLock();
+ while (!sioIsRXEmptyX(serial_driver)) {
+ (void)sioGetX(serial_driver);
+ }
+ osalSysUnlock();
+}
+
+#else
+
+# error Either the SERIAL or SIO driver has to be activated to use the usart driver for split keyboards.
+
+#endif
+
+inline bool serial_transport_send(const uint8_t* source, const size_t size) {
+ bool success = (size_t)chnWriteTimeout(serial_driver, source, size, TIME_MS2I(SERIAL_USART_TIMEOUT)) == size;
#if !defined(SERIAL_USART_FULL_DUPLEX)
- if (success) {
- /* Half duplex fills the input queue with the data we wrote - just throw it away.
- Under the right circumstances (e.g. bad cables paired with high baud rates)
- less bytes can be present in the input queue, therefore a timeout is needed. */
- uint8_t dump[size];
- return receive(dump, size);
+ /* Half duplex fills the input queue with the data we wrote - just throw it away. */
+ if (likely(success)) {
+ size_t bytes_left = size;
+# if HAL_USE_SERIAL
+ /* The SERIAL driver uses large soft FIFOs that are filled from an IRQ
+ * context, so there is a delay between receiving the data and it
+ * becoming actually available, therefore we have to apply a timeout
+ * mechanism. Under the right circumstances (e.g. bad cables paired with
+ * high baud rates) less bytes can be present in the input queue as
+ * well. */
+ uint8_t dump[64];
+
+ while (unlikely(bytes_left >= 64)) {
+ if (unlikely(!serial_transport_receive(dump, 64))) {
+ return false;
+ }
+ bytes_left -= 64;
+ }
+
+ return serial_transport_receive(dump, bytes_left);
+# else
+ /* The SIO driver directly accesses the hardware FIFOs of the USART
+ * peripheral. As these are limited in depth, the RX FIFO might have been
+ * overflowed by a large that we just send. Therefore we attempt to read
+ * back all the data we send or until the FIFO runs empty in case it
+ * overflowed and data was truncated. */
+ if (unlikely(sioSynchronizeTXEnd(serial_driver, TIME_MS2I(SERIAL_USART_TIMEOUT)) < MSG_OK)) {
+ return false;
+ }
+
+ osalSysLock();
+ while (bytes_left > 0 && !sioIsRXEmptyX(serial_driver)) {
+ (void)sioGetX(serial_driver);
+ bytes_left--;
+ }
+ osalSysUnlock();
+# endif
}
#endif
return success;
}
-/**
- * @brief Blocking receive of size * bytes with timeout.
- *
- * @return true Receive success.
- * @return false Receive failed.
- */
-static inline bool receive(uint8_t* destination, const size_t size) {
- bool success = (size_t)sdReadTimeout(serial_driver, destination, size, TIME_MS2I(SERIAL_USART_TIMEOUT)) == size;
+inline bool serial_transport_receive(uint8_t* destination, const size_t size) {
+ bool success = (size_t)chnReadTimeout(serial_driver, destination, size, TIME_MS2I(SERIAL_USART_TIMEOUT)) == size;
+ return success;
+}
+
+inline bool serial_transport_receive_blocking(uint8_t* destination, const size_t size) {
+ bool success = (size_t)chnRead(serial_driver, destination, size) == size;
return success;
}
@@ -103,7 +169,7 @@ static inline bool receive(uint8_t* destination, const size_t size) {
* @brief Initiate pins for USART peripheral. Half-duplex configuration.
*/
__attribute__((weak)) void usart_init(void) {
-# if defined(MCU_STM32)
+# if defined(MCU_STM32) /* STM32 MCUs */
# if defined(USE_GPIOV1)
palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_ALTERNATE_OPENDRAIN);
# else
@@ -113,6 +179,8 @@ __attribute__((weak)) void usart_init(void) {
# if defined(USART_REMAP)
USART_REMAP;
# endif
+# elif defined(MCU_RP) /* Raspberry Pi MCUs */
+# error Half-duplex with the SIO driver is not supported due to hardware limitations on the RP2040, switch to the PIO driver which has half-duplex support.
# else
# pragma message "usart_init: MCU Familiy not supported by default, please supply your own init code by implementing usart_init() in your keyboard files."
# endif
@@ -124,7 +192,7 @@ __attribute__((weak)) void usart_init(void) {
* @brief Initiate pins for USART peripheral. Full-duplex configuration.
*/
__attribute__((weak)) void usart_init(void) {
-# if defined(MCU_STM32)
+# if defined(MCU_STM32) /* STM32 MCUs */
# if defined(USE_GPIOV1)
palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_ALTERNATE_PUSHPULL);
palSetLineMode(SERIAL_USART_RX_PIN, PAL_MODE_INPUT);
@@ -136,6 +204,9 @@ __attribute__((weak)) void usart_init(void) {
# if defined(USART_REMAP)
USART_REMAP;
# endif
+# elif defined(MCU_RP) /* Raspberry Pi MCUs */
+ palSetLineMode(SERIAL_USART_TX_PIN, PAL_MODE_ALTERNATE_UART);
+ palSetLineMode(SERIAL_USART_RX_PIN, PAL_MODE_ALTERNATE_UART);
# else
# pragma message "usart_init: MCU Familiy not supported by default, please supply your own init code by implementing usart_init() in your keyboard files."
# endif
@@ -146,7 +217,7 @@ __attribute__((weak)) void usart_init(void) {
/**
* @brief Overridable master specific initializations.
*/
-__attribute__((weak, nonnull)) void usart_master_init(SerialDriver** driver) {
+__attribute__((weak, nonnull)) void usart_master_init(QMKSerialDriver** driver) {
(void)driver;
usart_init();
}
@@ -154,161 +225,22 @@ __attribute__((weak, nonnull)) void usart_master_init(SerialDriver** driver) {
/**
* @brief Overridable slave specific initializations.
*/
-__attribute__((weak, nonnull)) void usart_slave_init(SerialDriver** driver) {
+__attribute__((weak, nonnull)) void usart_slave_init(QMKSerialDriver** driver) {
(void)driver;
usart_init();
}
-/**
- * @brief This thread runs on the slave and responds to transactions initiated
- * by the master.
- */
-static THD_WORKING_AREA(waSlaveThread, 1024);
-static THD_FUNCTION(SlaveThread, arg) {
- (void)arg;
- chRegSetThreadName("usart_tx_rx");
-
- while (true) {
- if (!react_to_transactions()) {
- /* Clear the receive queue, to start with a clean slate.
- * Parts of failed transactions or spurious bytes could still be in it. */
- usart_clear();
- }
- split_shared_memory_unlock();
- }
-}
-
-/**
- * @brief Slave specific initializations.
- */
-void soft_serial_target_init(void) {
+void serial_transport_driver_slave_init(void) {
usart_slave_init(&serial_driver);
-
- sdStart(serial_driver, &serial_config);
-
- /* Start transport thread. */
- chThdCreateStatic(waSlaveThread, sizeof(waSlaveThread), HIGHPRIO, SlaveThread, NULL);
+ usart_driver_start();
}
-/**
- * @brief React to transactions started by the master.
- */
-static inline bool react_to_transactions(void) {
- /* Wait until there is a transaction for us. */
- uint8_t sstd_index = (uint8_t)sdGet(serial_driver);
-
- /* Sanity check that we are actually responding to a valid transaction. */
- if (sstd_index >= NUM_TOTAL_TRANSACTIONS) {
- return false;
- }
-
- split_shared_memory_lock();
- split_transaction_desc_t* trans = &split_transaction_table[sstd_index];
-
- /* Send back the handshake which is XORed as a simple checksum,
- to signal that the slave is ready to receive possible transaction buffers */
- sstd_index ^= HANDSHAKE_MAGIC;
- if (!send(&sstd_index, sizeof(sstd_index))) {
- return false;
- }
-
- /* Receive transaction buffer from the master. If this transaction requires it.*/
- if (trans->initiator2target_buffer_size) {
- if (!receive(split_trans_initiator2target_buffer(trans), trans->initiator2target_buffer_size)) {
- return false;
- }
- }
-
- /* Allow any slave processing to occur. */
- if (trans->slave_callback) {
- trans->slave_callback(trans->initiator2target_buffer_size, split_trans_initiator2target_buffer(trans), trans->initiator2target_buffer_size, split_trans_target2initiator_buffer(trans));
- }
-
- /* Send transaction buffer to the master. If this transaction requires it. */
- if (trans->target2initiator_buffer_size) {
- if (!send(split_trans_target2initiator_buffer(trans), trans->target2initiator_buffer_size)) {
- return false;
- }
- }
-
- return true;
-}
-
-/**
- * @brief Master specific initializations.
- */
-void soft_serial_initiator_init(void) {
+void serial_transport_driver_master_init(void) {
usart_master_init(&serial_driver);
#if defined(MCU_STM32) && defined(SERIAL_USART_PIN_SWAP)
serial_config.cr2 |= USART_CR2_SWAP; // master has swapped TX/RX pins
#endif
- sdStart(serial_driver, &serial_config);
-}
-
-/**
- * @brief Start transaction from the master half to the slave half.
- *
- * @param index Transaction Table index of the transaction to start.
- * @return bool Indicates success of transaction.
- */
-bool soft_serial_transaction(int index) {
- /* Clear the receive queue, to start with a clean slate.
- * Parts of failed transactions or spurious bytes could still be in it. */
- usart_clear();
-
- split_shared_memory_lock();
- bool result = initiate_transaction((uint8_t)index);
- split_shared_memory_unlock();
-
- return result;
-}
-
-/**
- * @brief Initiate transaction to slave half.
- */
-static inline bool initiate_transaction(uint8_t sstd_index) {
- /* Sanity check that we are actually starting a valid transaction. */
- if (sstd_index >= NUM_TOTAL_TRANSACTIONS) {
- dprintln("USART: Illegal transaction Id.");
- return false;
- }
-
- split_transaction_desc_t* trans = &split_transaction_table[sstd_index];
-
- /* Send transaction table index to the slave, which doubles as basic handshake token. */
- if (!send(&sstd_index, sizeof(sstd_index))) {
- dprintln("USART: Send Handshake failed.");
- return false;
- }
-
- uint8_t sstd_index_shake = 0xFF;
-
- /* Which we always read back first so that we can error out correctly.
- * - due to the half duplex limitations on return codes, we always have to read *something*.
- * - without the read, write only transactions *always* succeed, even during the boot process where the slave is not ready.
- */
- if (!receive(&sstd_index_shake, sizeof(sstd_index_shake)) || (sstd_index_shake != (sstd_index ^ HANDSHAKE_MAGIC))) {
- dprintln("USART: Handshake failed.");
- return false;
- }
-
- /* Send transaction buffer to the slave. If this transaction requires it. */
- if (trans->initiator2target_buffer_size) {
- if (!send(split_trans_initiator2target_buffer(trans), trans->initiator2target_buffer_size)) {
- dprintln("USART: Send failed.");
- return false;
- }
- }
-
- /* Receive transaction buffer from the slave. If this transaction requires it. */
- if (trans->target2initiator_buffer_size) {
- if (!receive(split_trans_target2initiator_buffer(trans), trans->target2initiator_buffer_size)) {
- dprintln("USART: Receive failed.");
- return false;
- }
- }
-
- return true;
+ usart_driver_start();
}
diff --git a/platforms/chibios/drivers/serial_usart.h b/platforms/chibios/drivers/serial_usart.h
index 81fe9e0113..fa062cd736 100644
--- a/platforms/chibios/drivers/serial_usart.h
+++ b/platforms/chibios/drivers/serial_usart.h
@@ -1,42 +1,12 @@
-/* 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 <http://www.gnu.org/licenses/>.
- */
+// Copyright 2021 QMK
+// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "quantum.h"
#include "serial.h"
-#include "printf.h"
-
-#include <ch.h>
#include <hal.h>
-#if !defined(SERIAL_USART_DRIVER)
-# define SERIAL_USART_DRIVER SD1
-#endif
-
-#if !defined(USE_GPIOV1)
-/* The default PAL alternate modes are used to signal that the pins are used for USART. */
-# if !defined(SERIAL_USART_TX_PAL_MODE)
-# define SERIAL_USART_TX_PAL_MODE 7
-# endif
-# if !defined(SERIAL_USART_RX_PAL_MODE)
-# define SERIAL_USART_RX_PAL_MODE 7
-# endif
-#endif
-
#if defined(SOFT_SERIAL_PIN)
# define SERIAL_USART_TX_PIN SOFT_SERIAL_PIN
#endif
@@ -49,6 +19,62 @@
# define SERIAL_USART_RX_PIN A10
#endif
+#if !defined(SELECT_SOFT_SERIAL_SPEED)
+# define SELECT_SOFT_SERIAL_SPEED 1
+#endif
+
+#if defined(SERIAL_USART_SPEED)
+// Allow advanced users to directly set SERIAL_USART_SPEED
+#elif SELECT_SOFT_SERIAL_SPEED == 0
+# define SERIAL_USART_SPEED 460800
+#elif SELECT_SOFT_SERIAL_SPEED == 1
+# define SERIAL_USART_SPEED 230400
+#elif SELECT_SOFT_SERIAL_SPEED == 2
+# define SERIAL_USART_SPEED 115200
+#elif SELECT_SOFT_SERIAL_SPEED == 3
+# define SERIAL_USART_SPEED 57600
+#elif SELECT_SOFT_SERIAL_SPEED == 4
+# define SERIAL_USART_SPEED 38400
+#elif SELECT_SOFT_SERIAL_SPEED == 5
+# define SERIAL_USART_SPEED 19200
+#else
+# error invalid SELECT_SOFT_SERIAL_SPEED value
+#endif
+
+#if !defined(SERIAL_USART_TIMEOUT)
+# define SERIAL_USART_TIMEOUT 20
+#endif
+
+#if HAL_USE_SERIAL
+
+typedef SerialDriver QMKSerialDriver;
+typedef SerialConfig QMKSerialConfig;
+
+# if !defined(SERIAL_USART_DRIVER)
+# define SERIAL_USART_DRIVER SD1
+# endif
+
+#elif HAL_USE_SIO
+
+typedef SIODriver QMKSerialDriver;
+typedef SIOConfig QMKSerialConfig;
+
+# if !defined(SERIAL_USART_DRIVER)
+# define SERIAL_USART_DRIVER SIOD1
+# endif
+
+#endif
+
+#if !defined(USE_GPIOV1)
+/* The default PAL alternate modes are used to signal that the pins are used for USART. */
+# if !defined(SERIAL_USART_TX_PAL_MODE)
+# define SERIAL_USART_TX_PAL_MODE 7
+# endif
+# if !defined(SERIAL_USART_RX_PAL_MODE)
+# define SERIAL_USART_RX_PAL_MODE 7
+# endif
+#endif
+
#if !defined(USART_CR1_M0)
# define USART_CR1_M0 USART_CR1_M // some platforms (f1xx) dont have this so
#endif
@@ -86,31 +112,3 @@
(AFIO->MAPR |= AFIO_MAPR_USART3_REMAP_FULLREMAP); \
} while (0)
#endif
-
-#if !defined(SELECT_SOFT_SERIAL_SPEED)
-# define SELECT_SOFT_SERIAL_SPEED 1
-#endif
-
-#if defined(SERIAL_USART_SPEED)
-// Allow advanced users to directly set SERIAL_USART_SPEED
-#elif SELECT_SOFT_SERIAL_SPEED == 0
-# define SERIAL_USART_SPEED 460800
-#elif SELECT_SOFT_SERIAL_SPEED == 1
-# define SERIAL_USART_SPEED 230400
-#elif SELECT_SOFT_SERIAL_SPEED == 2
-# define SERIAL_USART_SPEED 115200
-#elif SELECT_SOFT_SERIAL_SPEED == 3
-# define SERIAL_USART_SPEED 57600
-#elif SELECT_SOFT_SERIAL_SPEED == 4
-# define SERIAL_USART_SPEED 38400
-#elif SELECT_SOFT_SERIAL_SPEED == 5
-# define SERIAL_USART_SPEED 19200
-#else
-# error invalid SELECT_SOFT_SERIAL_SPEED value
-#endif
-
-#if !defined(SERIAL_USART_TIMEOUT)
-# define SERIAL_USART_TIMEOUT 20
-#endif
-
-#define HANDSHAKE_MAGIC 7
diff --git a/platforms/chibios/drivers/spi_master.c b/platforms/chibios/drivers/spi_master.c
index ce69e7f0ac..c3ab0623f0 100644
--- a/platforms/chibios/drivers/spi_master.c
+++ b/platforms/chibios/drivers/spi_master.c
@@ -20,7 +20,7 @@
static pin_t currentSlavePin = NO_PIN;
-#if defined(K20x) || defined(KL2x)
+#if defined(K20x) || defined(KL2x) || defined(RP2040)
static SPIConfig spiConfig = {NULL, 0, 0, 0};
#else
static SPIConfig spiConfig = {false, NULL, 0, 0, 0, 0};
@@ -42,10 +42,12 @@ __attribute__((weak)) void spi_init(void) {
palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), SPI_MOSI_PAL_MODE);
palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), SPI_MISO_PAL_MODE);
#else
- palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
- palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
- palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
+ palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), SPI_SCK_FLAGS);
+ palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), SPI_MOSI_FLAGS);
+ palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), SPI_MISO_FLAGS);
#endif
+ spiStop(&SPI_DRIVER);
+ currentSlavePin = NO_PIN;
}
}
@@ -167,7 +169,36 @@ bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) {
spiConfig.SPI_CPOL = SPI_CPOL_High;
break;
}
+#elif defined(MCU_RP)
+ if (lsbFirst) {
+ osalDbgAssert(lsbFirst == false, "RP2040s PrimeCell SPI implementation does not support sending LSB first.");
+ }
+
+ // Motorola frame format and 8bit transfer data size.
+ spiConfig.SSPCR0 = SPI_SSPCR0_FRF_MOTOROLA | SPI_SSPCR0_DSS_8BIT;
+ // Serial output clock = (ck_sys or ck_peri) / (SSPCPSR->CPSDVSR * (1 +
+ // SSPCR0->SCR)). SCR is always set to zero, as QMK SPI API expects the
+ // passed divisor to be the only value to divide the input clock by.
+ spiConfig.SSPCPSR = roundedDivisor; // Even number from 2 to 254
+ switch (mode) {
+ case 0:
+ spiConfig.SSPCR0 &= ~SPI_SSPCR0_SPO; // Clock polarity: low
+ spiConfig.SSPCR0 &= ~SPI_SSPCR0_SPH; // Clock phase: sample on first edge
+ break;
+ case 1:
+ spiConfig.SSPCR0 &= ~SPI_SSPCR0_SPO; // Clock polarity: low
+ spiConfig.SSPCR0 |= SPI_SSPCR0_SPH; // Clock phase: sample on second edge transition
+ break;
+ case 2:
+ spiConfig.SSPCR0 |= SPI_SSPCR0_SPO; // Clock polarity: high
+ spiConfig.SSPCR0 &= ~SPI_SSPCR0_SPH; // Clock phase: sample on first edge
+ break;
+ case 3:
+ spiConfig.SSPCR0 |= SPI_SSPCR0_SPO; // Clock polarity: high
+ spiConfig.SSPCR0 |= SPI_SSPCR0_SPH; // Clock phase: sample on second edge transition
+ break;
+ }
#else
spiConfig.cr1 = 0;
diff --git a/platforms/chibios/drivers/vendor/RP/RP2040/serial_vendor.c b/platforms/chibios/drivers/vendor/RP/RP2040/serial_vendor.c
new file mode 100644
index 0000000000..764764b3f9
--- /dev/null
+++ b/platforms/chibios/drivers/vendor/RP/RP2040/serial_vendor.c
@@ -0,0 +1,473 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+#include "serial_usart.h"
+#include "serial_protocol.h"
+#include "hardware/pio.h"
+#include "hardware/clocks.h"
+
+#if !defined(MCU_RP)
+# error PIO Driver is only available for Raspberry Pi 2040 MCUs!
+#endif
+
+static inline bool receive_impl(uint8_t* destination, const size_t size, sysinterval_t timeout);
+static inline bool send_impl(const uint8_t* source, const size_t size);
+static inline void pio_serve_interrupt(void);
+
+#define MSG_PIO_ERROR ((msg_t)(-3))
+
+#if defined(SERIAL_PIO_USE_PIO1)
+static const PIO pio = pio1;
+
+OSAL_IRQ_HANDLER(RP_PIO1_IRQ_0_HANDLER) {
+ OSAL_IRQ_PROLOGUE();
+ pio_serve_interrupt();
+ OSAL_IRQ_EPILOGUE();
+}
+#else
+static const PIO pio = pio0;
+
+OSAL_IRQ_HANDLER(RP_PIO0_IRQ_0_HANDLER) {
+ OSAL_IRQ_PROLOGUE();
+ pio_serve_interrupt();
+ OSAL_IRQ_EPILOGUE();
+}
+#endif
+
+#define UART_TX_WRAP_TARGET 0
+#define UART_TX_WRAP 3
+
+// clang-format off
+#if defined(SERIAL_USART_FULL_DUPLEX)
+static const uint16_t uart_tx_program_instructions[] = {
+ // .wrap_target
+ 0x9fa0, // 0: pull block side 1 [7]
+ 0xf727, // 1: set x, 7 side 0 [7]
+ 0x6001, // 2: out pins, 1
+ 0x0642, // 3: jmp x--, 2 [6]
+ // .wrap
+};
+#else
+static const uint16_t uart_tx_program_instructions[] = {
+ // .wrap_target
+ 0x9fa0, // 0: pull block side 1 [7]
+ 0xf727, // 1: set x, 7 side 0 [7]
+ 0x6081, // 2: out pindirs, 1
+ 0x0642, // 3: jmp x--, 2 [6]
+ // .wrap
+};
+#endif
+// clang-format on
+
+static const pio_program_t uart_tx_program = {
+ .instructions = uart_tx_program_instructions,
+ .length = 4,
+ .origin = -1,
+};
+
+#define UART_RX_WRAP_TARGET 0
+#define UART_RX_WRAP 8
+
+// clang-format off
+static const uint16_t uart_rx_program_instructions[] = {
+ // .wrap_target
+ 0x2020, // 0: wait 0 pin, 0
+ 0xea27, // 1: set x, 7 [10]
+ 0x4001, // 2: in pins, 1
+ 0x0642, // 3: jmp x--, 2 [6]
+ 0x00c8, // 4: jmp pin, 8
+ 0xc020, // 5: irq wait 0
+ 0x20a0, // 6: wait 1 pin, 0
+ 0x0000, // 7: jmp 0
+ 0x8020, // 8: push block
+ // .wrap
+};
+// clang-format on
+
+static const pio_program_t uart_rx_program = {
+ .instructions = uart_rx_program_instructions,
+ .length = 9,
+ .origin = -1,
+};
+
+thread_reference_t rx_thread = NULL;
+static int rx_state_machine = -1;
+
+thread_reference_t tx_thread = NULL;
+static int tx_state_machine = -1;
+
+void pio_serve_interrupt(void) {
+ uint32_t irqs = pio->ints0;
+
+ // The RX FIFO is not empty any more, therefore wake any sleeping rx thread
+ if (irqs & (PIO_IRQ0_INTF_SM0_RXNEMPTY_BITS << rx_state_machine)) {
+ // Disable rx not empty interrupt
+ pio_set_irq0_source_enabled(pio, pis_sm0_rx_fifo_not_empty + rx_state_machine, false);
+
+ osalSysLockFromISR();
+ osalThreadResumeI(&rx_thread, MSG_OK);
+ osalSysUnlockFromISR();
+ }
+
+ // The TX FIFO is not full any more, therefore wake any sleeping tx thread
+ if (irqs & (PIO_IRQ0_INTF_SM0_TXNFULL_BITS << tx_state_machine)) {
+ // Disable tx not full interrupt
+ pio_set_irq0_source_enabled(pio, pis_sm0_tx_fifo_not_full + tx_state_machine, false);
+ osalSysLockFromISR();
+ osalThreadResumeI(&tx_thread, MSG_OK);
+ osalSysUnlockFromISR();
+ }
+
+ // IRQ 0 is set on framing or break errors by the rx state machine
+ if (pio_interrupt_get(pio, 0UL)) {
+ pio_interrupt_clear(pio, 0UL);
+
+ osalSysLockFromISR();
+ osalThreadResumeI(&rx_thread, MSG_PIO_ERROR);
+ osalSysUnlockFromISR();
+ }
+}
+
+#if !defined(SERIAL_USART_FULL_DUPLEX)
+// The internal pull-ups of the RP2040 are rather weakish with a range of 50k to
+// 80k, which in turn do not provide enough current to guarantee fast signal rise
+// times with a parasitic capacitance of greater than 100pf. In real world
+// applications, like split keyboards which might have vias in the signal path
+// or long PCB traces, this prevents a successful communication. The solution
+// is to temporarily augment the weak pull ups from the receiving side by
+// driving the tx pin high. On the receiving side the lowest possible drive
+// strength is chosen because the transmitting side must still be able to drive
+// the signal low. With this configuration the rise times are fast enough and
+// the generated low level with 360mV will generate a logical zero.
+static inline void enter_rx_state(void) {
+ osalSysLock();
+ nvicEnableVector(RP_USBCTRL_IRQ_NUMBER, RP_IRQ_USB0_PRIORITY);
+ // Wait for the transmitting state machines FIFO to run empty. At this point
+ // the last byte has been pulled from the transmitting state machines FIFO
+ // into the output shift register. We have to wait a tiny bit more until
+ // this byte is transmitted, before we can turn on the receiving state
+ // machine again.
+ while (!pio_sm_is_tx_fifo_empty(pio, tx_state_machine)) {
+ }
+ // Wait for ~11 bits, 1 start bit + 8 data bits + 1 stop bit + 1 bit
+ // headroom.
+ wait_us(1000000U * 11U / SERIAL_USART_SPEED);
+ // Disable tx state machine to not interfere with our tx pin manipulation
+ pio_sm_set_enabled(pio, tx_state_machine, false);
+ gpio_set_drive_strength(SERIAL_USART_TX_PIN, GPIO_DRIVE_STRENGTH_2MA);
+ pio_sm_set_pins_with_mask(pio, tx_state_machine, 1U << SERIAL_USART_TX_PIN, 1U << SERIAL_USART_TX_PIN);
+ pio_sm_set_consecutive_pindirs(pio, tx_state_machine, SERIAL_USART_TX_PIN, 1U, false);
+ pio_sm_set_enabled(pio, rx_state_machine, true);
+ osalSysUnlock();
+}
+
+static inline void leave_rx_state(void) {
+ osalSysLock();
+ // We don't want to be interrupted by frequent (1KHz) USB interrupts while
+ // doing our timing critical sending operation.
+ nvicDisableVector(RP_USBCTRL_IRQ_NUMBER);
+ // In Half-duplex operation the tx pin dual-functions as sender and
+ // receiver. To not receive the data we will send, we disable the receiving
+ // state machine.
+ pio_sm_set_enabled(pio, rx_state_machine, false);
+ pio_sm_set_consecutive_pindirs(pio, tx_state_machine, SERIAL_USART_TX_PIN, 1U, true);
+ pio_sm_set_pins_with_mask(pio, tx_state_machine, 0U, 1U << SERIAL_USART_TX_PIN);
+ gpio_set_drive_strength(SERIAL_USART_TX_PIN, GPIO_DRIVE_STRENGTH_12MA);
+ pio_sm_restart(pio, tx_state_machine);
+ pio_sm_set_enabled(pio, tx_state_machine, true);
+ osalSysUnlock();
+}
+#else
+// All this trickery is gladly not necessary for full-duplex.
+static inline void enter_rx_state(void) {}
+static inline void leave_rx_state(void) {}
+#endif
+
+/**
+ * @brief Clear the RX and TX hardware FIFOs of the state machines.
+ */
+inline void serial_transport_driver_clear(void) {
+ osalSysLock();
+ pio_sm_clear_fifos(pio, rx_state_machine);
+ pio_sm_clear_fifos(pio, tx_state_machine);
+ osalSysUnlock();
+}
+
+static inline msg_t sync_tx(sysinterval_t timeout) {
+ msg_t msg = MSG_OK;
+ osalSysLock();
+ while (pio_sm_is_tx_fifo_full(pio, tx_state_machine)) {
+#if !defined(SERIAL_USART_FULL_DUPLEX)
+ // Enable USB interrupts again, because we might sleep for a long time
+ // here and don't want to be disconnected from the host.
+ nvicEnableVector(RP_USBCTRL_IRQ_NUMBER, RP_IRQ_USB0_PRIORITY);
+#endif
+ pio_set_irq0_source_enabled(pio, pis_sm0_tx_fifo_not_full + tx_state_machine, true);
+ msg = osalThreadSuspendTimeoutS(&tx_thread, timeout);
+ if (msg < MSG_OK) {
+ pio_set_irq0_source_enabled(pio, pis_sm0_tx_fifo_not_full + tx_state_machine, false);
+ break;
+ }
+ }
+#if !defined(SERIAL_USART_FULL_DUPLEX)
+ // Entering timing critical territory again.
+ nvicDisableVector(RP_USBCTRL_IRQ_NUMBER);
+#endif
+ osalSysUnlock();
+ return msg;
+}
+
+static inline bool send_impl(const uint8_t* source, const size_t size) {
+ size_t send = 0;
+ msg_t msg;
+ while (send < size) {
+ msg = sync_tx(TIME_MS2I(SERIAL_USART_TIMEOUT));
+ if (msg < MSG_OK) {
+ return false;
+ }
+
+ osalSysLock();
+ while (send < size) {
+ if (pio_sm_is_tx_fifo_full(pio, tx_state_machine)) {
+ break;
+ }
+ if (send >= size) {
+ break;
+ }
+ pio_sm_put(pio, tx_state_machine, (uint32_t)(*source));
+ source++;
+ send++;
+ }
+ osalSysUnlock();
+ }
+
+ return send == size;
+}
+
+/**
+ * @brief Blocking send of buffer with timeout.
+ *
+ * @return true Send success.
+ * @return false Send failed.
+ */
+inline bool serial_transport_send(const uint8_t* source, const size_t size) {
+ leave_rx_state();
+ bool result = send_impl(source, size);
+ enter_rx_state();
+
+ return result;
+}
+
+static inline msg_t sync_rx(sysinterval_t timeout) {
+ msg_t msg = MSG_OK;
+ osalSysLock();
+ while (pio_sm_is_rx_fifo_empty(pio, rx_state_machine)) {
+ pio_set_irq0_source_enabled(pio, pis_sm0_rx_fifo_not_empty + rx_state_machine, true);
+ msg = osalThreadSuspendTimeoutS(&rx_thread, timeout);
+ if (msg < MSG_OK) {
+ pio_set_irq0_source_enabled(pio, pis_sm0_rx_fifo_not_empty + rx_state_machine, false);
+ break;
+ }
+ }
+ osalSysUnlock();
+ return msg;
+}
+
+static inline bool receive_impl(uint8_t* destination, const size_t size, sysinterval_t timeout) {
+ size_t read = 0U;
+
+ while (read < size) {
+ msg_t msg = sync_rx(timeout);
+ if (msg < MSG_OK) {
+ return false;
+ }
+ osalSysLock();
+ while (true) {
+ if (pio_sm_is_rx_fifo_empty(pio, rx_state_machine)) {
+ break;
+ }
+ if (read >= size) {
+ break;
+ }
+ *destination++ = *((uint8_t*)&pio->rxf[rx_state_machine] + 3U);
+ read++;
+ }
+ osalSysUnlock();
+ }
+
+ return read == size;
+}
+
+/**
+ * @brief Blocking receive of size * bytes with timeout.
+ *
+ * @return true Receive success.
+ * @return false Receive failed, e.g. by timeout.
+ */
+inline bool serial_transport_receive(uint8_t* destination, const size_t size) {
+ return receive_impl(destination, size, TIME_MS2I(SERIAL_USART_TIMEOUT));
+}
+
+/**
+ * @brief Blocking receive of size * bytes.
+ *
+ * @return true Receive success.
+ * @return false Receive failed.
+ */
+inline bool serial_transport_receive_blocking(uint8_t* destination, const size_t size) {
+ return receive_impl(destination, size, TIME_INFINITE);
+}
+
+static inline void pio_tx_init(pin_t tx_pin) {
+ uint pio_idx = pio_get_index(pio);
+ uint offset = pio_add_program(pio, &uart_tx_program);
+
+#if defined(SERIAL_USART_FULL_DUPLEX)
+ // clang-format off
+ iomode_t tx_pin_mode = PAL_RP_GPIO_OE |
+ PAL_RP_PAD_SLEWFAST |
+ PAL_RP_PAD_DRIVE4 |
+ (pio_idx == 0 ? PAL_MODE_ALTERNATE_PIO0 : PAL_MODE_ALTERNATE_PIO1);
+ // clang-format on
+ pio_sm_set_pins_with_mask(pio, tx_state_machine, 1U << tx_pin, 1U << tx_pin);
+ pio_sm_set_consecutive_pindirs(pio, tx_state_machine, tx_pin, 1U, true);
+#else
+ // clang-format off
+ iomode_t tx_pin_mode = PAL_RP_PAD_IE |
+ PAL_RP_GPIO_OE |
+ PAL_RP_PAD_SCHMITT |
+ PAL_RP_PAD_PUE |
+ PAL_RP_PAD_SLEWFAST |
+ PAL_RP_PAD_DRIVE12 |
+ PAL_RP_IOCTRL_OEOVER_DRVINVPERI |
+ (pio_idx == 0 ? PAL_MODE_ALTERNATE_PIO0 : PAL_MODE_ALTERNATE_PIO1);
+ // clang-format on
+ pio_sm_set_pins_with_mask(pio, tx_state_machine, 0U << tx_pin, 1U << tx_pin);
+ pio_sm_set_consecutive_pindirs(pio, tx_state_machine, tx_pin, 1U, true);
+#endif
+
+ palSetLineMode(tx_pin, tx_pin_mode);
+
+ pio_sm_config config = pio_get_default_sm_config();
+ sm_config_set_wrap(&config, offset + UART_TX_WRAP_TARGET, offset + UART_TX_WRAP);
+#if defined(SERIAL_USART_FULL_DUPLEX)
+ sm_config_set_sideset(&config, 2, true, false);
+#else
+ sm_config_set_sideset(&config, 2, true, true);
+#endif
+ // OUT shifts to right, no autopull
+ sm_config_set_out_shift(&config, true, false, 32);
+ // We are mapping both OUT and side-set to the same pin, because sometimes
+ // we need to assert user data onto the pin (with OUT) and sometimes
+ // assert constant values (start/stop bit)
+ sm_config_set_out_pins(&config, tx_pin, 1);
+ sm_config_set_sideset_pins(&config, tx_pin);
+ // We only need TX, so get an 8-deep FIFO!
+ sm_config_set_fifo_join(&config, PIO_FIFO_JOIN_TX);
+ // SM transmits 1 bit per 8 execution cycles.
+ float div = (float)clock_get_hz(clk_sys) / (8 * SERIAL_USART_SPEED);
+ sm_config_set_clkdiv(&config, div);
+ pio_sm_init(pio, tx_state_machine, offset, &config);
+ pio_sm_set_enabled(pio, tx_state_machine, true);
+}
+
+static inline void pio_rx_init(pin_t rx_pin) {
+ uint offset = pio_add_program(pio, &uart_rx_program);
+
+#if defined(SERIAL_USART_FULL_DUPLEX)
+ uint pio_idx = pio_get_index(pio);
+ pio_sm_set_consecutive_pindirs(pio, rx_state_machine, rx_pin, 1, false);
+ // clang-format off
+ iomode_t rx_pin_mode = PAL_RP_PAD_IE |
+ PAL_RP_PAD_SCHMITT |
+ PAL_RP_PAD_PUE |
+ (pio_idx == 0 ? PAL_MODE_ALTERNATE_PIO0 : PAL_MODE_ALTERNATE_PIO1);
+ // clang-format on
+ palSetLineMode(rx_pin, rx_pin_mode);
+#endif
+
+ pio_sm_config config = pio_get_default_sm_config();
+ sm_config_set_wrap(&config, offset + UART_RX_WRAP_TARGET, offset + UART_RX_WRAP);
+ sm_config_set_in_pins(&config, rx_pin); // for WAIT, IN
+ sm_config_set_jmp_pin(&config, rx_pin); // for JMP
+ // Shift to right, autopush disabled
+ sm_config_set_in_shift(&config, true, false, 32);
+ // Deeper FIFO as we're not doing any TX
+ sm_config_set_fifo_join(&config, PIO_FIFO_JOIN_RX);
+ // SM transmits 1 bit per 8 execution cycles.
+ float div = (float)clock_get_hz(clk_sys) / (8 * SERIAL_USART_SPEED);
+ sm_config_set_clkdiv(&config, div);
+ pio_sm_init(pio, rx_state_machine, offset, &config);
+ pio_sm_set_enabled(pio, rx_state_machine, true);
+}
+
+static inline void pio_init(pin_t tx_pin, pin_t rx_pin) {
+ uint pio_idx = pio_get_index(pio);
+
+ /* Get PIOx peripheral out of reset state. */
+ hal_lld_peripheral_unreset(pio_idx == 0 ? RESETS_ALLREG_PIO0 : RESETS_ALLREG_PIO1);
+
+ tx_state_machine = pio_claim_unused_sm(pio, true);
+ if (tx_state_machine < 0) {
+ dprintln("ERROR: Failed to acquire state machine for serial transmission!");
+ return;
+ }
+ pio_tx_init(tx_pin);
+
+ rx_state_machine = pio_claim_unused_sm(pio, true);
+ if (rx_state_machine < 0) {
+ dprintln("ERROR: Failed to acquire state machine for serial reception!");
+ return;
+ }
+ pio_rx_init(rx_pin);
+
+ // Enable error flag IRQ source for rx state machine
+ pio_set_irq0_source_enabled(pio, pis_sm0_rx_fifo_not_empty + rx_state_machine, true);
+ pio_set_irq0_source_enabled(pio, pis_sm0_tx_fifo_not_full + tx_state_machine, true);
+ pio_set_irq0_source_enabled(pio, pis_interrupt0, true);
+
+ // Enable PIO specific interrupt vector, as the pio implementation is timing
+ // critical we use the highest possible priority.
+#if defined(SERIAL_PIO_USE_PIO1)
+ nvicEnableVector(RP_PIO1_IRQ_0_NUMBER, CORTEX_MAX_KERNEL_PRIORITY);
+#else
+ nvicEnableVector(RP_PIO0_IRQ_0_NUMBER, CORTEX_MAX_KERNEL_PRIORITY);
+#endif
+
+ enter_rx_state();
+}
+
+/**
+ * @brief PIO driver specific initialization function for the master side.
+ */
+void serial_transport_driver_master_init(void) {
+#if defined(SERIAL_USART_FULL_DUPLEX)
+ pin_t tx_pin = SERIAL_USART_TX_PIN;
+ pin_t rx_pin = SERIAL_USART_RX_PIN;
+#else
+ pin_t tx_pin = SERIAL_USART_TX_PIN;
+ pin_t rx_pin = SERIAL_USART_TX_PIN;
+#endif
+
+#if defined(SERIAL_USART_PIN_SWAP)
+ pio_init(rx_pin, tx_pin);
+#else
+ pio_init(tx_pin, rx_pin);
+#endif
+}
+
+/**
+ * @brief PIO driver specific initialization function for the slave side.
+ */
+void serial_transport_driver_slave_init(void) {
+#if defined(SERIAL_USART_FULL_DUPLEX)
+ pin_t tx_pin = SERIAL_USART_TX_PIN;
+ pin_t rx_pin = SERIAL_USART_RX_PIN;
+#else
+ pin_t tx_pin = SERIAL_USART_TX_PIN;
+ pin_t rx_pin = SERIAL_USART_TX_PIN;
+#endif
+
+ pio_init(tx_pin, rx_pin);
+}
diff --git a/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c b/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c
new file mode 100644
index 0000000000..bc34eded14
--- /dev/null
+++ b/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c
@@ -0,0 +1,189 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "quantum.h"
+#include "ws2812.h"
+#include "hardware/pio.h"
+#include "hardware/clocks.h"
+
+#if !defined(MCU_RP)
+# error PIO Driver is only available for Raspberry Pi 2040 MCUs!
+#endif
+
+#if defined(WS2812_PIO_USE_PIO1)
+static const PIO pio = pio1;
+#else
+static const PIO pio = pio0;
+#endif
+
+#if !defined(RP_DMA_PRIORITY_WS2812)
+# define RP_DMA_PRIORITY_WS2812 12
+#endif
+
+static int state_machine = -1;
+
+#define WS2812_WRAP_TARGET 0
+#define WS2812_WRAP 3
+
+#define WS2812_T1 2
+#define WS2812_T2 5
+#define WS2812_T3 3
+
+#if defined(WS2812_EXTERNAL_PULLUP)
+
+# pragma message "The GPIOs of the RP2040 are NOT 5V tolerant! Make sure to NOT apply any voltage over 3.3V to the RGB data pin."
+
+// clang-format off
+static const uint16_t ws2812_program_instructions[] = {
+ // .wrap_target
+ 0x7221, // 0: out x, 1 side 1 [2]
+ 0x0123, // 1: jmp !x, 3 side 0 [1]
+ 0x0400, // 2: jmp 0 side 0 [4]
+ 0xb442, // 3: nop side 1 [4]
+ // .wrap
+};
+
+#else
+
+static const uint16_t ws2812_program_instructions[] = {
+ // .wrap_target
+ 0x6221, // 0: out x, 1 side 0 [2]
+ 0x1123, // 1: jmp !x, 3 side 1 [1]
+ 0x1400, // 2: jmp 0 side 1 [4]
+ 0xa442, // 3: nop side 0 [4]
+ // .wrap
+};
+// clang-format on
+#endif
+
+static const pio_program_t ws2812_program = {
+ .instructions = ws2812_program_instructions,
+ .length = 4,
+ .origin = -1,
+};
+
+static uint32_t WS2812_BUFFER[RGBLED_NUM];
+static const rp_dma_channel_t* WS2812_DMA_CHANNEL;
+
+bool ws2812_init(void) {
+ uint pio_idx = pio_get_index(pio);
+ /* Get PIOx peripheral out of reset state. */
+ hal_lld_peripheral_unreset(pio_idx == 0 ? RESETS_ALLREG_PIO0 : RESETS_ALLREG_PIO1);
+
+ // clang-format off
+ iomode_t rgb_pin_mode = PAL_RP_PAD_SLEWFAST |
+ PAL_RP_GPIO_OE |
+ (pio_idx == 0 ? PAL_MODE_ALTERNATE_PIO0 : PAL_MODE_ALTERNATE_PIO1);
+ // clang-format on
+
+ palSetLineMode(RGB_DI_PIN, rgb_pin_mode);
+
+ state_machine = pio_claim_unused_sm(pio, true);
+ if (state_machine < 0) {
+ dprintln("ERROR: Failed to acquire state machine for WS2812 output!");
+ return false;
+ }
+
+ uint offset = pio_add_program(pio, &ws2812_program);
+
+ pio_sm_set_consecutive_pindirs(pio, state_machine, RGB_DI_PIN, 1, true);
+
+ pio_sm_config config = pio_get_default_sm_config();
+ sm_config_set_wrap(&config, offset + WS2812_WRAP_TARGET, offset + WS2812_WRAP);
+ sm_config_set_sideset_pins(&config, RGB_DI_PIN);
+ sm_config_set_fifo_join(&config, PIO_FIFO_JOIN_TX);
+
+#if defined(WS2812_EXTERNAL_PULLUP)
+ /* Instruct side-set to change the pin-directions instead of outputting
+ * a logic level. We generate our levels the following way:
+ *
+ * 1: Set RGB data pin to high impedance input and let the pull-up drive the
+ * signal high.
+ *
+ * 0: Set RGB data pin to low impedance output and drive the pin low.
+ */
+ sm_config_set_sideset(&config, 1, false, true);
+#else
+ sm_config_set_sideset(&config, 1, false, false);
+#endif
+
+#if defined(RGBW)
+ sm_config_set_out_shift(&config, false, true, 32);
+#else
+ sm_config_set_out_shift(&config, false, true, 24);
+#endif
+
+ int cycles_per_bit = WS2812_T1 + WS2812_T2 + WS2812_T3;
+ float div = clock_get_hz(clk_sys) / (800.0f * KHZ * cycles_per_bit);
+ sm_config_set_clkdiv(&config, div);
+
+ pio_sm_init(pio, state_machine, offset, &config);
+ pio_sm_set_enabled(pio, state_machine, true);
+
+ WS2812_DMA_CHANNEL = dmaChannelAlloc(RP_DMA_CHANNEL_ID_ANY, RP_DMA_PRIORITY_WS2812, NULL, NULL);
+
+ // clang-format off
+ uint32_t mode = DMA_CTRL_TRIG_INCR_READ |
+ DMA_CTRL_TRIG_DATA_SIZE_WORD |
+ DMA_CTRL_TRIG_IRQ_QUIET |
+ DMA_CTRL_TRIG_TREQ_SEL(pio_idx == 0 ? state_machine : state_machine + 8);
+ // clang-format on
+
+ dmaChannelSetModeX(WS2812_DMA_CHANNEL, mode);
+ dmaChannelSetDestinationX(WS2812_DMA_CHANNEL, (uint32_t)&pio->txf[state_machine]);
+ return true;
+}
+
+/**
+ * @brief Convert RGBW value into WS2812 compatible 32-bit data word.
+ */
+__always_inline static uint32_t rgbw8888_to_u32(uint8_t red, uint8_t green, uint8_t blue, uint8_t white) {
+#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB)
+ return ((uint32_t)green << 24) | ((uint32_t)red << 16) | ((uint32_t)blue << 8) | ((uint32_t)white);
+#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB)
+ return ((uint32_t)red << 24) | ((uint32_t)green << 16) | ((uint32_t)blue << 8) | ((uint32_t)white);
+#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_BGR)
+ return ((uint32_t)blue << 24) | ((uint32_t)green << 16) | ((uint32_t)red << 8) | ((uint32_t)white);
+#endif
+}
+
+static inline void sync_ws2812_transfer(void) {
+ if (unlikely(dmaChannelIsBusyX(WS2812_DMA_CHANNEL) || !pio_sm_is_tx_fifo_empty(pio, state_machine))) {
+ fast_timer_t start = timer_read_fast();
+ do {
+ // Abort the synchronization if we have to wait longer than the total
+ // count of LEDs in millisecounds. This is safely much longer than it
+ // would take to push all the data out.
+ if (unlikely(timer_elapsed_fast(start) > RGBLED_NUM)) {
+ dprintln("ERROR: WS2812 DMA transfer has stalled, aborting!");
+ dmaChannelDisableX(WS2812_DMA_CHANNEL);
+ return;
+ }
+
+ } while (dmaChannelIsBusyX(WS2812_DMA_CHANNEL) || !pio_sm_is_tx_fifo_empty(pio, state_machine));
+ // We wait for the WS2812 chain to reset after all data has been pushed
+ // out.
+ wait_us(WS2812_TRST_US);
+ }
+}
+
+void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) {
+ static bool is_initialized = false;
+ if (unlikely(!is_initialized)) {
+ is_initialized = ws2812_init();
+ }
+
+ sync_ws2812_transfer();
+
+ for (int i = 0; i < leds; i++) {
+#if defined(RGBW)
+ WS2812_BUFFER[i] = rgbw8888_to_u32(ledarray[i].r, ledarray[i].g, ledarray[i].b, ledarray[i].w);
+#else
+ WS2812_BUFFER[i] = rgbw8888_to_u32(ledarray[i].r, ledarray[i].g, ledarray[i].b, 0);
+#endif
+ }
+
+ dmaChannelSetSourceX(WS2812_DMA_CHANNEL, (uint32_t)WS2812_BUFFER);
+ dmaChannelSetCounterX(WS2812_DMA_CHANNEL, leds);
+ dmaChannelEnableX(WS2812_DMA_CHANNEL);
+}
diff --git a/platforms/chibios/drivers/wear_leveling/wear_leveling_efl.c b/platforms/chibios/drivers/wear_leveling/wear_leveling_efl.c
new file mode 100644
index 0000000000..cdd1e26a7d
--- /dev/null
+++ b/platforms/chibios/drivers/wear_leveling/wear_leveling_efl.c
@@ -0,0 +1,143 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include <stdbool.h>
+#include <hal.h>
+#include "timer.h"
+#include "wear_leveling.h"
+#include "wear_leveling_internal.h"
+
+static flash_offset_t base_offset = UINT32_MAX;
+
+#if defined(WEAR_LEVELING_EFL_FIRST_SECTOR)
+static flash_sector_t first_sector = WEAR_LEVELING_EFL_FIRST_SECTOR;
+#else // defined(WEAR_LEVELING_EFL_FIRST_SECTOR)
+static flash_sector_t first_sector = UINT16_MAX;
+#endif // defined(WEAR_LEVELING_EFL_FIRST_SECTOR)
+
+static flash_sector_t sector_count = UINT16_MAX;
+static BaseFlash * flash;
+
+#ifndef WEAR_LEVELING_EFL_FIRST_SECTOR
+// "Automatic" detection of the flash size -- ideally ChibiOS would have this already, but alas, it doesn't.
+static inline uint32_t detect_flash_size(void) {
+# if defined(WEAR_LEVELING_EFL_FLASH_SIZE)
+ return WEAR_LEVELING_EFL_FLASH_SIZE;
+# elif defined(FLASH_BANK_SIZE)
+ return FLASH_BANK_SIZE;
+# elif defined(FLASH_SIZE)
+ return FLASH_SIZE;
+# elif defined(FLASHSIZE_BASE)
+# if defined(QMK_MCU_SERIES_STM32F0XX) || defined(QMK_MCU_SERIES_STM32F1XX) || defined(QMK_MCU_SERIES_STM32F3XX) || defined(QMK_MCU_SERIES_STM32F4XX) || defined(QMK_MCU_SERIES_STM32G4XX) || defined(QMK_MCU_SERIES_STM32L0XX) || defined(QMK_MCU_SERIES_STM32L4XX) || defined(QMK_MCU_SERIES_GD32VF103)
+ return ((*(uint32_t *)FLASHSIZE_BASE) & 0xFFFFU) << 10U; // this register has the flash size in kB, so we convert it to bytes
+# elif defined(QMK_MCU_SERIES_STM32L1XX)
+# error This MCU family has an uncommon flash size register definition and has not been implemented. Perhaps try using the true EEPROM on the MCU instead?
+# endif
+# else
+# error Unknown flash size definition.
+ return 0;
+# endif
+}
+#endif // WEAR_LEVELING_EFL_FIRST_SECTOR
+
+bool backing_store_init(void) {
+ bs_dprintf("Init\n");
+ flash = (BaseFlash *)&EFLD1;
+
+ // Need to re-lock the EFL, as if we've just had the bootloader executing it'll already be unlocked.
+ backing_store_lock();
+
+ const flash_descriptor_t *desc = flashGetDescriptor(flash);
+ uint32_t counter = 0;
+
+#if defined(WEAR_LEVELING_EFL_FIRST_SECTOR)
+
+ // Work out how many sectors we want to use, working forwards from the first sector specified
+ for (flash_sector_t i = 0; i < desc->sectors_count - first_sector; ++i) {
+ counter += flashGetSectorSize(flash, first_sector + i);
+ if (counter >= (WEAR_LEVELING_BACKING_SIZE)) {
+ sector_count = i + 1;
+ base_offset = flashGetSectorOffset(flash, first_sector);
+ break;
+ }
+ }
+ if (sector_count == UINT16_MAX || base_offset >= flash_size) {
+ // We didn't get the required number of sectors. Can't do anything here. Fault.
+ chSysHalt("Invalid sector count intended to be used with wear_leveling");
+ }
+
+#else // defined(WEAR_LEVELING_EFL_FIRST_SECTOR)
+
+ // Work out how many sectors we want to use, working backwards from the end of the flash
+ uint32_t flash_size = detect_flash_size();
+ flash_sector_t last_sector = desc->sectors_count;
+ for (flash_sector_t i = 0; i < desc->sectors_count; ++i) {
+ first_sector = desc->sectors_count - i - 1;
+ if (flashGetSectorOffset(flash, first_sector) >= flash_size) {
+ last_sector = first_sector;
+ continue;
+ }
+ counter += flashGetSectorSize(flash, first_sector);
+ if (counter >= (WEAR_LEVELING_BACKING_SIZE)) {
+ sector_count = last_sector - first_sector;
+ base_offset = flashGetSectorOffset(flash, first_sector);
+ break;
+ }
+ }
+
+#endif // defined(WEAR_LEVELING_EFL_FIRST_SECTOR)
+
+ return true;
+}
+
+bool backing_store_unlock(void) {
+ bs_dprintf("Unlock\n");
+ return eflStart(&EFLD1, NULL) == HAL_RET_SUCCESS;
+}
+
+bool backing_store_erase(void) {
+#ifdef WEAR_LEVELING_DEBUG_OUTPUT
+ uint32_t start = timer_read32();
+#endif
+
+ bool ret = true;
+ flash_error_t status;
+ for (int i = 0; i < sector_count; ++i) {
+ // Kick off the sector erase
+ status = flashStartEraseSector(flash, first_sector + i);
+ if (status != FLASH_NO_ERROR && status != FLASH_BUSY_ERASING) {
+ ret = false;
+ }
+
+ // Wait for the erase to complete
+ status = flashWaitErase(flash);
+ if (status != FLASH_NO_ERROR && status != FLASH_BUSY_ERASING) {
+ ret = false;
+ }
+ }
+
+ bs_dprintf("Backing store erase took %ldms to complete\n", ((long)(timer_read32() - start)));
+ return ret;
+}
+
+bool backing_store_write(uint32_t address, backing_store_int_t value) {
+ uint32_t offset = (base_offset + address);
+ bs_dprintf("Write ");
+ wl_dump(offset, &value, sizeof(value));
+ value = ~value;
+ return flashProgram(flash, offset, sizeof(value), (const uint8_t *)&value) == FLASH_NO_ERROR;
+}
+
+bool backing_store_lock(void) {
+ bs_dprintf("Lock \n");
+ eflStop(&EFLD1);
+ return true;
+}
+
+bool backing_store_read(uint32_t address, backing_store_int_t *value) {
+ uint32_t offset = (base_offset + address);
+ backing_store_int_t *loc = (backing_store_int_t *)flashGetOffsetAddress(flash, offset);
+ *value = ~(*loc);
+ bs_dprintf("Read ");
+ wl_dump(offset, value, sizeof(backing_store_int_t));
+ return true;
+}
diff --git a/platforms/chibios/drivers/wear_leveling/wear_leveling_efl_config.h b/platforms/chibios/drivers/wear_leveling/wear_leveling_efl_config.h
new file mode 100644
index 0000000000..244c87cb7f
--- /dev/null
+++ b/platforms/chibios/drivers/wear_leveling/wear_leveling_efl_config.h
@@ -0,0 +1,52 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#ifndef __ASSEMBLER__
+# include <hal.h>
+#endif
+
+// Work out how many bytes per write to internal flash
+#ifndef BACKING_STORE_WRITE_SIZE
+// These need to match EFL's XXXXXX_FLASH_LINE_SIZE, see associated code in `lib/chibios/os/hal/ports/**/hal_efl_lld.c`,
+// or associated `stm32_registry.h` for the MCU in question (or equivalent for the family).
+# if defined(QMK_MCU_SERIES_GD32VF103)
+# define BACKING_STORE_WRITE_SIZE 2 // from hal_efl_lld.c
+# elif defined(QMK_MCU_FAMILY_NUC123)
+# define BACKING_STORE_WRITE_SIZE 4 // from hal_efl_lld.c
+# elif defined(QMK_MCU_FAMILY_WB32)
+# define BACKING_STORE_WRITE_SIZE 8 // from hal_efl_lld.c
+# elif defined(QMK_MCU_FAMILY_STM32)
+# if defined(STM32_FLASH_LINE_SIZE) // from some family's stm32_registry.h file
+# define BACKING_STORE_WRITE_SIZE (STM32_FLASH_LINE_SIZE)
+# else
+# if defined(QMK_MCU_SERIES_STM32F1XX)
+# define BACKING_STORE_WRITE_SIZE 2 // from hal_efl_lld.c
+# elif defined(QMK_MCU_SERIES_STM32F3XX)
+# define BACKING_STORE_WRITE_SIZE 2 // from hal_efl_lld.c
+# elif defined(QMK_MCU_SERIES_STM32F4XX)
+# define BACKING_STORE_WRITE_SIZE (1 << STM32_FLASH_PSIZE) // from hal_efl_lld.c
+# elif defined(QMK_MCU_SERIES_STM32L4XX)
+# define BACKING_STORE_WRITE_SIZE 8 // from hal_efl_lld.c
+# elif defined(QMK_MCU_SERIES_STM32G0XX)
+# define BACKING_STORE_WRITE_SIZE 8 // from hal_efl_lld.c
+# elif defined(QMK_MCU_SERIES_STM32G4XX)
+# define BACKING_STORE_WRITE_SIZE 8 // from hal_efl_lld.c
+# else
+# error "ChibiOS hasn't defined STM32_FLASH_LINE_SIZE, and could not automatically determine BACKING_STORE_WRITE_SIZE" // normally defined in stm32_registry.h, should be set by STM32_FLASH_LINE_SIZE
+# endif
+# endif
+# else
+# error "Could not automatically determine BACKING_STORE_WRITE_SIZE"
+# endif
+#endif
+
+// 2kB backing space allocated
+#ifndef WEAR_LEVELING_BACKING_SIZE
+# define WEAR_LEVELING_BACKING_SIZE 2048
+#endif // WEAR_LEVELING_BACKING_SIZE
+
+// 1kB logical EEPROM
+#ifndef WEAR_LEVELING_LOGICAL_SIZE
+# define WEAR_LEVELING_LOGICAL_SIZE 1024
+#endif // WEAR_LEVELING_LOGICAL_SIZE
diff --git a/platforms/chibios/drivers/wear_leveling/wear_leveling_legacy.c b/platforms/chibios/drivers/wear_leveling/wear_leveling_legacy.c
new file mode 100644
index 0000000000..87126c4467
--- /dev/null
+++ b/platforms/chibios/drivers/wear_leveling/wear_leveling_legacy.c
@@ -0,0 +1,59 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include <stdbool.h>
+#include <hal.h>
+#include "timer.h"
+#include "wear_leveling.h"
+#include "wear_leveling_internal.h"
+#include "flash_stm32.h"
+
+bool backing_store_init(void) {
+ bs_dprintf("Init\n");
+ return true;
+}
+
+bool backing_store_unlock(void) {
+ bs_dprintf("Unlock\n");
+ FLASH_Unlock();
+ return true;
+}
+
+bool backing_store_erase(void) {
+#ifdef WEAR_LEVELING_DEBUG_OUTPUT
+ uint32_t start = timer_read32();
+#endif
+
+ bool ret = true;
+ FLASH_Status status;
+ for (int i = 0; i < (WEAR_LEVELING_LEGACY_EMULATION_PAGE_COUNT); ++i) {
+ status = FLASH_ErasePage(WEAR_LEVELING_LEGACY_EMULATION_BASE_PAGE_ADDRESS + (i * (WEAR_LEVELING_LEGACY_EMULATION_PAGE_SIZE)));
+ if (status != FLASH_COMPLETE) {
+ ret = false;
+ }
+ }
+
+ bs_dprintf("Backing store erase took %ldms to complete\n", ((long)(timer_read32() - start)));
+ return ret;
+}
+
+bool backing_store_write(uint32_t address, backing_store_int_t value) {
+ uint32_t offset = ((WEAR_LEVELING_LEGACY_EMULATION_BASE_PAGE_ADDRESS) + address);
+ bs_dprintf("Write ");
+ wl_dump(offset, &value, sizeof(backing_store_int_t));
+ return FLASH_ProgramHalfWord(offset, ~value) == FLASH_COMPLETE;
+}
+
+bool backing_store_lock(void) {
+ bs_dprintf("Lock \n");
+ FLASH_Lock();
+ return true;
+}
+
+bool backing_store_read(uint32_t address, backing_store_int_t* value) {
+ uint32_t offset = ((WEAR_LEVELING_LEGACY_EMULATION_BASE_PAGE_ADDRESS) + address);
+ backing_store_int_t* loc = (backing_store_int_t*)offset;
+ *value = ~(*loc);
+ bs_dprintf("Read ");
+ wl_dump(offset, loc, sizeof(backing_store_int_t));
+ return true;
+}
diff --git a/platforms/chibios/drivers/wear_leveling/wear_leveling_legacy_config.h b/platforms/chibios/drivers/wear_leveling/wear_leveling_legacy_config.h
new file mode 100644
index 0000000000..e64cab87d1
--- /dev/null
+++ b/platforms/chibios/drivers/wear_leveling/wear_leveling_legacy_config.h
@@ -0,0 +1,67 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+// Work out the page size to use
+#ifndef WEAR_LEVELING_LEGACY_EMULATION_PAGE_SIZE
+# if defined(QMK_MCU_STM32F042)
+# define WEAR_LEVELING_LEGACY_EMULATION_PAGE_SIZE 1024
+# elif defined(QMK_MCU_STM32F070) || defined(QMK_MCU_STM32F072)
+# define WEAR_LEVELING_LEGACY_EMULATION_PAGE_SIZE 2048
+# elif defined(QMK_MCU_STM32F401) || defined(QMK_MCU_STM32F411)
+# define WEAR_LEVELING_LEGACY_EMULATION_PAGE_SIZE 16384
+# endif
+#endif
+
+// Work out how much flash space we have
+#ifndef WEAR_LEVELING_LEGACY_EMULATION_FLASH_SIZE
+# define WEAR_LEVELING_LEGACY_EMULATION_FLASH_SIZE ((*(uint32_t *)FLASHSIZE_BASE) & 0xFFFFU) // in kB
+#endif
+
+// The base location of program memory
+#ifndef WEAR_LEVELING_LEGACY_EMULATION_FLASH_BASE
+# define WEAR_LEVELING_LEGACY_EMULATION_FLASH_BASE 0x08000000
+#endif
+
+// The number of pages to use
+#ifndef WEAR_LEVELING_LEGACY_EMULATION_PAGE_COUNT
+# if defined(QMK_MCU_STM32F042)
+# define WEAR_LEVELING_LEGACY_EMULATION_PAGE_COUNT 2
+# elif defined(QMK_MCU_STM32F070) || defined(QMK_MCU_STM32F072)
+# define WEAR_LEVELING_LEGACY_EMULATION_PAGE_COUNT 1
+# elif defined(QMK_MCU_STM32F401) || defined(QMK_MCU_STM32F411)
+# define WEAR_LEVELING_LEGACY_EMULATION_PAGE_COUNT 1
+# endif
+#endif
+
+// The origin of the emulated eeprom
+#ifndef WEAR_LEVELING_LEGACY_EMULATION_BASE_PAGE_ADDRESS
+# if defined(QMK_MCU_STM32F042) || defined(QMK_MCU_STM32F070) || defined(QMK_MCU_STM32F072)
+# define WEAR_LEVELING_LEGACY_EMULATION_BASE_PAGE_ADDRESS ((uintptr_t)(WEAR_LEVELING_LEGACY_EMULATION_FLASH_BASE) + WEAR_LEVELING_LEGACY_EMULATION_FLASH_SIZE * 1024 - (WEAR_LEVELING_LEGACY_EMULATION_PAGE_COUNT * WEAR_LEVELING_LEGACY_EMULATION_PAGE_SIZE))
+# elif defined(QMK_MCU_STM32F401) || defined(QMK_MCU_STM32F411)
+# if defined(BOOTLOADER_STM32_DFU)
+# define WEAR_LEVELING_LEGACY_EMULATION_BASE_PAGE_ADDRESS (WEAR_LEVELING_LEGACY_EMULATION_FLASH_BASE + (1 * (WEAR_LEVELING_LEGACY_EMULATION_PAGE_SIZE))) // +16k
+# elif defined(BOOTLOADER_TINYUF2)
+# define WEAR_LEVELING_LEGACY_EMULATION_BASE_PAGE_ADDRESS (WEAR_LEVELING_LEGACY_EMULATION_FLASH_BASE + (3 * (WEAR_LEVELING_LEGACY_EMULATION_PAGE_SIZE))) // +48k
+# endif
+# endif
+#endif
+
+// 2-byte writes
+#ifndef BACKING_STORE_WRITE_SIZE
+# define BACKING_STORE_WRITE_SIZE 2
+#endif
+
+// The amount of space to use for the entire set of emulation
+#ifndef WEAR_LEVELING_BACKING_SIZE
+# if defined(QMK_MCU_STM32F042) || defined(QMK_MCU_STM32F070) || defined(QMK_MCU_STM32F072)
+# define WEAR_LEVELING_BACKING_SIZE 2048
+# elif defined(QMK_MCU_STM32F401) || defined(QMK_MCU_STM32F411)
+# define WEAR_LEVELING_BACKING_SIZE 16384
+# endif
+#endif
+
+// The logical amount of eeprom available
+#ifndef WEAR_LEVELING_LOGICAL_SIZE
+# define WEAR_LEVELING_LOGICAL_SIZE 1024
+#endif
diff --git a/platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash.c b/platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash.c
new file mode 100644
index 0000000000..640628e1e9
--- /dev/null
+++ b/platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash.c
@@ -0,0 +1,221 @@
+/**
+ * Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
+ * Copyright (c) 2022 Nick Brassel (@tzarc)
+ * Copyright (c) 2022 Stefan Kerkmann (@KarlK90)
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include "pico/bootrom.h"
+#include "hardware/flash.h"
+#include "hardware/sync.h"
+#include "hardware/structs/ssi.h"
+#include "hardware/structs/ioqspi.h"
+
+#include <stdbool.h>
+#include "timer.h"
+#include "wear_leveling.h"
+#include "wear_leveling_internal.h"
+
+#ifndef WEAR_LEVELING_RP2040_FLASH_BULK_COUNT
+# define WEAR_LEVELING_RP2040_FLASH_BULK_COUNT 64
+#endif // WEAR_LEVELING_RP2040_FLASH_BULK_COUNT
+
+#define FLASHCMD_PAGE_PROGRAM 0x02
+#define FLASHCMD_READ_STATUS 0x05
+#define FLASHCMD_WRITE_ENABLE 0x06
+
+extern uint8_t BOOT2_ROM[256];
+static uint32_t BOOT2_ROM_RAM[64];
+
+static ssi_hw_t *const ssi = (ssi_hw_t *)XIP_SSI_BASE;
+
+// Sanity check
+check_hw_layout(ssi_hw_t, ssienr, SSI_SSIENR_OFFSET);
+check_hw_layout(ssi_hw_t, spi_ctrlr0, SSI_SPI_CTRLR0_OFFSET);
+
+static void __no_inline_not_in_flash_func(flash_enable_xip_via_boot2)(void) {
+ ((void (*)(void))BOOT2_ROM_RAM + 1)();
+}
+
+// Bitbanging the chip select using IO overrides, in case RAM-resident IRQs
+// are still running, and the FIFO bottoms out. (the bootrom does the same)
+static void __no_inline_not_in_flash_func(flash_cs_force)(bool high) {
+ uint32_t field_val = high ? IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_VALUE_HIGH : IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_VALUE_LOW;
+ hw_write_masked(&ioqspi_hw->io[1].ctrl, field_val << IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_LSB, IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_BITS);
+}
+
+// Also allow any unbounded loops to check whether the above abort condition
+// was asserted, and terminate early
+static int __no_inline_not_in_flash_func(flash_was_aborted)(void) {
+ return *(io_rw_32 *)(IO_QSPI_BASE + IO_QSPI_GPIO_QSPI_SD1_CTRL_OFFSET) & IO_QSPI_GPIO_QSPI_SD1_CTRL_INOVER_BITS;
+}
+
+// Put bytes from one buffer, and get bytes into another buffer.
+// These can be the same buffer.
+// If tx is NULL then send zeroes.
+// If rx is NULL then all read data will be dropped.
+//
+// If rx_skip is nonzero, this many bytes will first be consumed from the FIFO,
+// before reading a further count bytes into *rx.
+// E.g. if you have written a command+address just before calling this function.
+static void __no_inline_not_in_flash_func(flash_put_get)(const uint8_t *tx, uint8_t *rx, size_t count, size_t rx_skip) {
+ // Make sure there is never more data in flight than the depth of the RX
+ // FIFO. Otherwise, when we are interrupted for long periods, hardware
+ // will overflow the RX FIFO.
+ const uint max_in_flight = 16 - 2; // account for data internal to SSI
+ size_t tx_count = count;
+ size_t rx_count = count;
+ while (tx_count || rx_skip || rx_count) {
+ // NB order of reads, for pessimism rather than optimism
+ uint32_t tx_level = ssi_hw->txflr;
+ uint32_t rx_level = ssi_hw->rxflr;
+ bool did_something = false; // Expect this to be folded into control flow, not register
+ if (tx_count && tx_level + rx_level < max_in_flight) {
+ ssi->dr0 = (uint32_t)(tx ? *tx++ : 0);
+ --tx_count;
+ did_something = true;
+ }
+ if (rx_level) {
+ uint8_t rxbyte = ssi->dr0;
+ did_something = true;
+ if (rx_skip) {
+ --rx_skip;
+ } else {
+ if (rx) *rx++ = rxbyte;
+ --rx_count;
+ }
+ }
+ // APB load costs 4 cycles, so only do it on idle loops (our budget is
+ // 48 cyc/byte)
+ if (!did_something && __builtin_expect(flash_was_aborted(), 0)) break;
+ }
+ flash_cs_force(1);
+}
+
+// Convenience wrapper for above
+// (And it's hard for the debug host to get the tight timing between
+// cmd DR0 write and the remaining data)
+static void __no_inline_not_in_flash_func(_flash_do_cmd)(uint8_t cmd, const uint8_t *tx, uint8_t *rx, size_t count) {
+ flash_cs_force(0);
+ ssi->dr0 = cmd;
+ flash_put_get(tx, rx, count, 1);
+}
+
+// Timing of this one is critical, so do not expose the symbol to debugger etc
+static void __no_inline_not_in_flash_func(flash_put_cmd_addr)(uint8_t cmd, uint32_t addr) {
+ flash_cs_force(0);
+ addr |= cmd << 24;
+ for (int i = 0; i < 4; ++i) {
+ ssi->dr0 = addr >> 24;
+ addr <<= 8;
+ }
+}
+
+// Poll the flash status register until the busy bit (LSB) clears
+static void __no_inline_not_in_flash_func(flash_wait_ready)(void) {
+ uint8_t stat;
+ do {
+ _flash_do_cmd(FLASHCMD_READ_STATUS, NULL, &stat, 1);
+ } while (stat & 0x1 && !flash_was_aborted());
+}
+
+// Set the WEL bit (needed before any program/erase operation)
+static void __no_inline_not_in_flash_func(flash_enable_write)(void) {
+ _flash_do_cmd(FLASHCMD_WRITE_ENABLE, NULL, NULL, 0);
+}
+
+static void __no_inline_not_in_flash_func(pico_program_bulk)(uint32_t flash_address, backing_store_int_t *values, size_t item_count) {
+ rom_connect_internal_flash_fn connect_internal_flash = (rom_connect_internal_flash_fn)rom_func_lookup_inline(ROM_FUNC_CONNECT_INTERNAL_FLASH);
+ rom_flash_exit_xip_fn flash_exit_xip = (rom_flash_exit_xip_fn)rom_func_lookup_inline(ROM_FUNC_FLASH_EXIT_XIP);
+ rom_flash_flush_cache_fn flash_flush_cache = (rom_flash_flush_cache_fn)rom_func_lookup_inline(ROM_FUNC_FLASH_FLUSH_CACHE);
+ assert(connect_internal_flash && flash_exit_xip && flash_flush_cache);
+
+ static backing_store_int_t bulk_write_buffer[WEAR_LEVELING_RP2040_FLASH_BULK_COUNT];
+
+ while (item_count) {
+ size_t batch_size = MIN(item_count, WEAR_LEVELING_RP2040_FLASH_BULK_COUNT);
+ for (size_t i = 0; i < batch_size; i++, values++, item_count--) {
+ bulk_write_buffer[i] = ~(*values);
+ }
+ __compiler_memory_barrier();
+
+ connect_internal_flash();
+ flash_exit_xip();
+ flash_enable_write();
+
+ flash_put_cmd_addr(FLASHCMD_PAGE_PROGRAM, flash_address);
+ flash_put_get((uint8_t *)bulk_write_buffer, NULL, batch_size * sizeof(backing_store_int_t), 4);
+ flash_wait_ready();
+ flash_address += batch_size * sizeof(backing_store_int_t);
+
+ flash_flush_cache();
+ flash_enable_xip_via_boot2();
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// QMK Wear-Leveling Backing Store implementation
+
+static int interrupts;
+
+bool backing_store_init(void) {
+ bs_dprintf("Init\n");
+ memcpy(BOOT2_ROM_RAM, BOOT2_ROM, sizeof(BOOT2_ROM));
+ __compiler_memory_barrier();
+ return true;
+}
+
+bool backing_store_unlock(void) {
+ bs_dprintf("Unlock\n");
+ return true;
+}
+
+bool backing_store_erase(void) {
+#ifdef WEAR_LEVELING_DEBUG_OUTPUT
+ uint32_t start = timer_read32();
+#endif
+
+ // Ensure the backing size can be cleanly subtracted from the flash size without alignment issues.
+ _Static_assert((WEAR_LEVELING_BACKING_SIZE) % (FLASH_SECTOR_SIZE) == 0, "Backing size must be a multiple of FLASH_SECTOR_SIZE");
+
+ interrupts = save_and_disable_interrupts();
+ flash_range_erase((WEAR_LEVELING_RP2040_FLASH_BASE), (WEAR_LEVELING_BACKING_SIZE));
+ restore_interrupts(interrupts);
+
+ bs_dprintf("Backing store erase took %ldms to complete\n", ((long)(timer_read32() - start)));
+ return true;
+}
+
+bool backing_store_write(uint32_t address, backing_store_int_t value) {
+ return backing_store_write_bulk(address, &value, 1);
+}
+
+bool backing_store_write_bulk(uint32_t address, backing_store_int_t *values, size_t item_count) {
+ uint32_t offset = (WEAR_LEVELING_RP2040_FLASH_BASE) + address;
+ bs_dprintf("Write ");
+ wl_dump(offset, values, sizeof(backing_store_int_t) * item_count);
+ interrupts = save_and_disable_interrupts();
+ pico_program_bulk(offset, values, item_count);
+ restore_interrupts(interrupts);
+ return true;
+}
+
+bool backing_store_lock(void) {
+ return true;
+}
+
+bool backing_store_read(uint32_t address, backing_store_int_t *value) {
+ return backing_store_read_bulk(address, value, 1);
+}
+
+bool backing_store_read_bulk(uint32_t address, backing_store_int_t *values, size_t item_count) {
+ uint32_t offset = (WEAR_LEVELING_RP2040_FLASH_BASE) + address;
+ backing_store_int_t *loc = (backing_store_int_t *)((XIP_BASE) + offset);
+ for (size_t i = 0; i < item_count; ++i) {
+ values[i] = ~loc[i];
+ }
+ bs_dprintf("Read ");
+ wl_dump(offset, values, item_count * sizeof(backing_store_int_t));
+ return true;
+}
diff --git a/platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash_config.h b/platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash_config.h
new file mode 100644
index 0000000000..93a9aa0372
--- /dev/null
+++ b/platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash_config.h
@@ -0,0 +1,32 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#ifndef __ASSEMBLER__
+# include "hardware/flash.h"
+#endif
+
+// 2-byte writes
+#ifndef BACKING_STORE_WRITE_SIZE
+# define BACKING_STORE_WRITE_SIZE 2
+#endif
+
+// 64kB backing space allocated
+#ifndef WEAR_LEVELING_BACKING_SIZE
+# define WEAR_LEVELING_BACKING_SIZE 8192
+#endif // WEAR_LEVELING_BACKING_SIZE
+
+// 32kB logical EEPROM
+#ifndef WEAR_LEVELING_LOGICAL_SIZE
+# define WEAR_LEVELING_LOGICAL_SIZE 4096
+#endif // WEAR_LEVELING_LOGICAL_SIZE
+
+// Define how much flash space we have (defaults to lib/pico-sdk/src/boards/include/boards/***)
+#ifndef WEAR_LEVELING_RP2040_FLASH_SIZE
+# define WEAR_LEVELING_RP2040_FLASH_SIZE (PICO_FLASH_SIZE_BYTES)
+#endif
+
+// Define the location of emulated EEPROM
+#ifndef WEAR_LEVELING_RP2040_FLASH_BASE
+# define WEAR_LEVELING_RP2040_FLASH_BASE ((WEAR_LEVELING_RP2040_FLASH_SIZE) - (WEAR_LEVELING_BACKING_SIZE))
+#endif
diff --git a/platforms/chibios/drivers/ws2812.c b/platforms/chibios/drivers/ws2812.c
index 1b3bb59842..55ac333b1e 100644
--- a/platforms/chibios/drivers/ws2812.c
+++ b/platforms/chibios/drivers/ws2812.c
@@ -6,7 +6,7 @@
/* Adapted from https://github.com/bigjosh/SimpleNeoPixelDemo/ */
#ifndef NOP_FUDGE
-# if defined(STM32F0XX) || defined(STM32F1XX) || defined(GD32VF103) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX)
+# if defined(STM32F0XX) || defined(STM32F1XX) || defined(GD32VF103) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX) || defined(WB32F3G71xx) || defined(WB32FQ95xx)
# define NOP_FUDGE 0.4
# else
# error("NOP_FUDGE configuration required")
diff --git a/platforms/chibios/drivers/ws2812_pwm.c b/platforms/chibios/drivers/ws2812_pwm.c
index 57187676d7..792de85ce9 100644
--- a/platforms/chibios/drivers/ws2812_pwm.c
+++ b/platforms/chibios/drivers/ws2812_pwm.c
@@ -29,6 +29,22 @@
# error "please consult your MCU's datasheet and specify in your config.h: #define WS2812_DMAMUX_ID STM32_DMAMUX1_TIM?_UP"
#endif
+/* Summarize https://www.st.com/resource/en/application_note/an4013-stm32-crossseries-timer-overview-stmicroelectronics.pdf to
+ * figure out if we are using a 32bit timer. This is needed to setup the DMA controller correctly.
+ * Ignore STM32H7XX and STM32U5XX as they are not supported by ChibiOS.
+ */
+#if !defined(STM32F1XX) && !defined(STM32L0XX) && !defined(STM32L1XX)
+# define WS2812_PWM_TIMER_32BIT_PWMD2 1
+#endif
+#if !defined(STM32F1XX)
+# define WS2812_PWM_TIMER_32BIT_PWMD5 1
+#endif
+#define WS2812_CONCAT1(a, b) a##b
+#define WS2812_CONCAT(a, b) WS2812_CONCAT1(a, b)
+#if WS2812_CONCAT(WS2812_PWM_TIMER_32BIT_, WS2812_PWM_DRIVER)
+# define WS2812_PWM_TIMER_32BIT
+#endif
+
#ifndef WS2812_PWM_COMPLEMENTARY_OUTPUT
# define WS2812_PWM_OUTPUT_MODE PWM_OUTPUT_ACTIVE_HIGH
#else
@@ -89,6 +105,9 @@
* The duty cycle is calculated for a high period of 350 nS.
*/
#define WS2812_DUTYCYCLE_0 (WS2812_PWM_FREQUENCY / (1000000000 / 350))
+#if (WS2812_DUTYCYCLE_0 > 255)
+# error WS2812 PWM driver: High period for a 0 is more than a byte
+#endif
/**
* @brief High period for a one, in ticks
@@ -105,6 +124,9 @@
* This is in the middle of the specifications of the WS2812 and WS2812B.
*/
#define WS2812_DUTYCYCLE_1 (WS2812_PWM_FREQUENCY / (1000000000 / 800))
+#if (WS2812_DUTYCYCLE_1 > 255)
+# error WS2812 PWM driver: High period for a 1 is more than a byte
+#endif
/* --- PRIVATE MACROS ------------------------------------------------------- */
@@ -247,13 +269,35 @@
/* --- PRIVATE VARIABLES ---------------------------------------------------- */
-static uint32_t ws2812_frame_buffer[WS2812_BIT_N + 1]; /**< Buffer for a frame */
+// STM32F2XX, STM32F4XX and STM32F7XX do NOT zero pad DMA transfers of unequal data width. Buffer width must match TIMx CCR.
+// For all other STM32 DMA transfer will automatically zero pad. We only need to set the right peripheral width.
+#if defined(STM32F2XX) || defined(STM32F4XX) || defined(STM32F7XX)
+# if defined(WS2812_PWM_TIMER_32BIT)
+# define WS2812_DMA_MEMORY_WIDTH STM32_DMA_CR_MSIZE_WORD
+# define WS2812_DMA_PERIPHERAL_WIDTH STM32_DMA_CR_PSIZE_WORD
+typedef uint32_t ws2812_buffer_t;
+# else
+# define WS2812_DMA_MEMORY_WIDTH STM32_DMA_CR_MSIZE_HWORD
+# define WS2812_DMA_PERIPHERAL_WIDTH STM32_DMA_CR_PSIZE_HWORD
+typedef uint16_t ws2812_buffer_t;
+# endif
+#else
+# define WS2812_DMA_MEMORY_WIDTH STM32_DMA_CR_MSIZE_BYTE
+# if defined(WS2812_PWM_TIMER_32BIT)
+# define WS2812_DMA_PERIPHERAL_WIDTH STM32_DMA_CR_PSIZE_WORD
+# else
+# define WS2812_DMA_PERIPHERAL_WIDTH STM32_DMA_CR_PSIZE_HWORD
+# endif
+typedef uint8_t ws2812_buffer_t;
+#endif
+
+static ws2812_buffer_t ws2812_frame_buffer[WS2812_BIT_N + 1]; /**< Buffer for a frame */
/* --- PUBLIC FUNCTIONS ----------------------------------------------------- */
/*
* Gedanke: Double-buffer type transactions: double buffer transfers using two memory pointers for
-the memory (while the DMA is reading/writing from/to a buffer, the application can
-write/read to/from the other buffer).
+ * the memory (while the DMA is reading/writing from/to a buffer, the application can
+ * write/read to/from the other buffer).
*/
void ws2812_init(void) {
@@ -284,11 +328,18 @@ void ws2812_init(void) {
// Configure DMA
// dmaInit(); // Joe added this
+#if defined(WB32F3G71xx) || defined(WB32FQ95xx)
+ dmaStreamAlloc(WS2812_DMA_STREAM - WB32_DMA_STREAM(0), 10, NULL, NULL);
+ dmaStreamSetSource(WS2812_DMA_STREAM, ws2812_frame_buffer);
+ dmaStreamSetDestination(WS2812_DMA_STREAM, &(WS2812_PWM_DRIVER.tim->CCR[WS2812_PWM_CHANNEL - 1])); // Ziel ist der An-Zeit im Cap-Comp-Register
+ dmaStreamSetMode(WS2812_DMA_STREAM, WB32_DMA_CHCFG_HWHIF(WS2812_DMA_CHANNEL) | WB32_DMA_CHCFG_DIR_M2P | WB32_DMA_CHCFG_PSIZE_WORD | WB32_DMA_CHCFG_MSIZE_WORD | WB32_DMA_CHCFG_MINC | WB32_DMA_CHCFG_CIRC | WB32_DMA_CHCFG_TCIE | WB32_DMA_CHCFG_PL(3));
+#else
dmaStreamAlloc(WS2812_DMA_STREAM - STM32_DMA_STREAM(0), 10, NULL, NULL);
dmaStreamSetPeripheral(WS2812_DMA_STREAM, &(WS2812_PWM_DRIVER.tim->CCR[WS2812_PWM_CHANNEL - 1])); // Ziel ist der An-Zeit im Cap-Comp-Register
dmaStreamSetMemory0(WS2812_DMA_STREAM, ws2812_frame_buffer);
+ dmaStreamSetMode(WS2812_DMA_STREAM, STM32_DMA_CR_CHSEL(WS2812_DMA_CHANNEL) | STM32_DMA_CR_DIR_M2P | WS2812_DMA_PERIPHERAL_WIDTH | WS2812_DMA_MEMORY_WIDTH | STM32_DMA_CR_MINC | STM32_DMA_CR_CIRC | STM32_DMA_CR_PL(3));
+#endif
dmaStreamSetTransactionSize(WS2812_DMA_STREAM, WS2812_BIT_N);
- dmaStreamSetMode(WS2812_DMA_STREAM, STM32_DMA_CR_CHSEL(WS2812_DMA_CHANNEL) | STM32_DMA_CR_DIR_M2P | STM32_DMA_CR_PSIZE_WORD | STM32_DMA_CR_MSIZE_WORD | STM32_DMA_CR_MINC | STM32_DMA_CR_CIRC | STM32_DMA_CR_PL(3));
// M2P: Memory 2 Periph; PL: Priority Level
#if (STM32_DMA_SUPPORTS_DMAMUX == TRUE)
diff --git a/platforms/chibios/drivers/ws2812_spi.c b/platforms/chibios/drivers/ws2812_spi.c
index 01d8148875..a73eb69720 100644
--- a/platforms/chibios/drivers/ws2812_spi.c
+++ b/platforms/chibios/drivers/ws2812_spi.c
@@ -16,6 +16,10 @@
# define WS2812_SPI_SCK_PAL_MODE 5
#endif
+#ifndef WS2812_SPI_DIVISOR
+# define WS2812_SPI_DIVISOR 16
+#endif
+
// Push Pull or Open Drain Configuration
// Default Push Pull
#ifndef WS2812_EXTERNAL_PULLUP
@@ -42,7 +46,7 @@
# define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_0)
#elif WS2812_SPI_DIVISOR == 8
# define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_1)
-#elif WS2812_SPI_DIVISOR == 16 // same as default
+#elif WS2812_SPI_DIVISOR == 16 // default
# define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_1 | SPI_CR1_BR_0)
#elif WS2812_SPI_DIVISOR == 32
# define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_2)
@@ -53,7 +57,7 @@
#elif WS2812_SPI_DIVISOR == 256
# define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0)
#else
-# define WS2812_SPI_DIVISOR_CR1_BR_X (SPI_CR1_BR_1 | SPI_CR1_BR_0) // default
+# error "Configured WS2812_SPI_DIVISOR value is not supported at this time."
#endif
// Use SPI circular buffer
@@ -148,8 +152,14 @@ void ws2812_init(void) {
NULL, // end_cb
PAL_PORT(RGB_DI_PIN),
PAL_PAD(RGB_DI_PIN),
+# if defined(WB32F3G71xx) || defined(WB32FQ95xx)
+ 0,
+ 0,
+ WS2812_SPI_DIVISOR
+# else
WS2812_SPI_DIVISOR_CR1_BR_X,
0
+# endif
#else
// HAL_SPI_V2
# if SPI_SUPPORTS_CIRCULAR == TRUE
diff --git a/platforms/chibios/eeprom_stm32.c b/platforms/chibios/eeprom_stm32.c
deleted file mode 100644
index a15bfe09ed..0000000000
--- a/platforms/chibios/eeprom_stm32.c
+++ /dev/null
@@ -1,629 +0,0 @@
-/*
- * This software is experimental and a work in progress.
- * Under no circumstances should these files be used in relation to any critical system(s).
- * Use of these files is at your own risk.
- *
- * 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.
- *
- * This files are free to use from http://engsta.com/stm32-flash-memory-eeprom-emulator/ by
- * Artur F.
- *
- * Modifications for QMK and STM32F303 by Yiancar
- * Modifications to add flash wear leveling by Ilya Zhuravlev
- * Modifications to increase flash density by Don Kjer
- */
-
-#include <stdio.h>
-#include <stdbool.h>
-#include "util.h"
-#include "debug.h"
-#include "eeprom_stm32.h"
-#include "flash_stm32.h"
-
-/*
- * We emulate eeprom by writing a snapshot compacted view of eeprom contents,
- * followed by a write log of any change since that snapshot:
- *
- * === SIMULATED EEPROM CONTENTS ===
- *
- * ┌─ Compacted ┬ Write Log ─â”
- * │............│[BYTE][BYTE]│
- * │FFFF....FFFF│[WRD0][WRD1]│
- * │FFFFFFFFFFFF│[WORD][NEXT]│
- * │....FFFFFFFF│[BYTE][WRD0]│
- * ├────────────┼────────────┤
- * └──PAGE_BASE │ │
- * PAGE_LAST─┴─WRITE_BASE │
- * WRITE_LAST ┘
- *
- * Compacted contents are the 1's complement of the actual EEPROM contents.
- * e.g. An 'FFFF' represents a '0000' value.
- *
- * The size of the 'compacted' area is equal to the size of the 'emulated' eeprom.
- * The size of the compacted-area and write log are configurable, and the combined
- * size of Compacted + WriteLog is a multiple FEE_PAGE_SIZE, which is MCU dependent.
- * Simulated Eeprom contents are located at the end of available flash space.
- *
- * The following configuration defines can be set:
- *
- * FEE_PAGE_COUNT # Total number of pages to use for eeprom simulation (Compact + Write log)
- * FEE_DENSITY_BYTES # Size of simulated eeprom. (Defaults to half the space allocated by FEE_PAGE_COUNT)
- * NOTE: The current implementation does not include page swapping,
- * and FEE_DENSITY_BYTES will consume that amount of RAM as a cached view of actual EEPROM contents.
- *
- * The maximum size of FEE_DENSITY_BYTES is currently 16384. The write log size equals
- * FEE_PAGE_COUNT * FEE_PAGE_SIZE - FEE_DENSITY_BYTES.
- * The larger the write log, the less frequently the compacted area needs to be rewritten.
- *
- *
- * *** General Algorithm ***
- *
- * During initialization:
- * The contents of the Compacted-flash area are loaded and the 1's complement value
- * is cached into memory (e.g. 0xFFFF in Flash represents 0x0000 in cache).
- * Write log entries are processed until a 0xFFFF is reached.
- * Each log entry updates a byte or word in the cache.
- *
- * During reads:
- * EEPROM contents are given back directly from the cache in memory.
- *
- * During writes:
- * The contents of the cache is updated first.
- * If the Compacted-flash area corresponding to the write address is unprogrammed, the 1's complement of the value is written directly into Compacted-flash
- * Otherwise:
- * If the write log is full, erase both the Compacted-flash area and the Write log, then write cached contents to the Compacted-flash area.
- * Otherwise a Write log entry is constructed and appended to the next free position in the Write log.
- *
- *
- * *** Write Log Structure ***
- *
- * Write log entries allow for optimized byte writes to addresses below 128. Writing 0 or 1 words are also optimized when word-aligned.
- *
- * === WRITE LOG ENTRY FORMATS ===
- *
- * â•”â•â•â• Byte-Entry â•â•â•—
- * â•‘0XXXXXXXâ•‘YYYYYYYYâ•‘
- * ║ └──┬──┘║└──┬───┘║
- * â•‘ Addressâ•‘ Value â•‘
- * â•šâ•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•
- * 0 <= Address < 0x80 (128)
- *
- * â•” Word-Encoded 0 â•—
- * â•‘100XXXXXXXXXXXXXâ•‘
- * ║ │└─────┬─────┘║
- * ║ │Address >> 1 ║
- * ║ └── Value: 0 ║
- * â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
- * 0 <= Address <= 0x3FFE (16382)
- *
- * â•” Word-Encoded 1 â•—
- * â•‘101XXXXXXXXXXXXXâ•‘
- * ║ │└─────┬─────┘║
- * ║ │Address >> 1 ║
- * ║ └── Value: 1 ║
- * â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
- * 0 <= Address <= 0x3FFE (16382)
- *
- * â•”â•â•â• Reserved â•â•â•â•—
- * â•‘110XXXXXXXXXXXXXâ•‘
- * â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
- *
- * â•”â•â•â•â•â•â•â•â•â•â•â• Word-Next â•â•â•â•â•â•â•â•â•â•â•â•—
- * â•‘111XXXXXXXXXXXXXâ•‘YYYYYYYYYYYYYYYYâ•‘
- * ║ └─────┬─────┘║└───────┬──────┘║
- * â•‘(Address-128)>>1â•‘ ~Value â•‘
- * â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
- * ( 0 <= Address < 0x0080 (128): Reserved)
- * 0x80 <= Address <= 0x3FFE (16382)
- *
- * Write Log entry ranges:
- * 0x0000 ... 0x7FFF - Byte-Entry; address is (Entry & 0x7F00) >> 4; value is (Entry & 0xFF)
- * 0x8000 ... 0x9FFF - Word-Encoded 0; address is (Entry & 0x1FFF) << 1; value is 0
- * 0xA000 ... 0xBFFF - Word-Encoded 1; address is (Entry & 0x1FFF) << 1; value is 1
- * 0xC000 ... 0xDFFF - Reserved
- * 0xE000 ... 0xFFBF - Word-Next; address is (Entry & 0x1FFF) << 1 + 0x80; value is ~(Next_Entry)
- * 0xFFC0 ... 0xFFFE - Reserved
- * 0xFFFF - Unprogrammed
- *
- */
-
-#include "eeprom_stm32_defs.h"
-/* These bits are used for optimizing encoding of bytes, 0 and 1 */
-#define FEE_WORD_ENCODING 0x8000
-#define FEE_VALUE_NEXT 0x6000
-#define FEE_VALUE_RESERVED 0x4000
-#define FEE_VALUE_ENCODED 0x2000
-#define FEE_BYTE_RANGE 0x80
-
-/* Flash word value after erase */
-#define FEE_EMPTY_WORD ((uint16_t)0xFFFF)
-
-#if !defined(FEE_PAGE_SIZE) || !defined(FEE_PAGE_COUNT) || !defined(FEE_MCU_FLASH_SIZE) || !defined(FEE_PAGE_BASE_ADDRESS)
-# error "not implemented."
-#endif
-
-/* In-memory contents of emulated eeprom for faster access */
-/* *TODO: Implement page swapping */
-static uint16_t WordBuf[FEE_DENSITY_BYTES / 2];
-static uint8_t *DataBuf = (uint8_t *)WordBuf;
-
-/* Pointer to the first available slot within the write log */
-static uint16_t *empty_slot;
-
-// #define DEBUG_EEPROM_OUTPUT
-
-/*
- * Debug print utils
- */
-
-#if defined(DEBUG_EEPROM_OUTPUT)
-
-# define debug_eeprom debug_enable
-# define eeprom_println(s) println(s)
-# define eeprom_printf(fmt, ...) xprintf(fmt, ##__VA_ARGS__);
-
-#else /* NO_DEBUG */
-
-# define debug_eeprom false
-# define eeprom_println(s)
-# define eeprom_printf(fmt, ...)
-
-#endif /* NO_DEBUG */
-
-void print_eeprom(void) {
-#ifndef NO_DEBUG
- int empty_rows = 0;
- for (uint16_t i = 0; i < FEE_DENSITY_BYTES; i++) {
- if (i % 16 == 0) {
- if (i >= FEE_DENSITY_BYTES - 16) {
- /* Make sure we display the last row */
- empty_rows = 0;
- }
- /* Check if this row is uninitialized */
- ++empty_rows;
- for (uint16_t j = 0; j < 16; j++) {
- if (DataBuf[i + j]) {
- empty_rows = 0;
- break;
- }
- }
- if (empty_rows > 1) {
- /* Repeat empty row */
- if (empty_rows == 2) {
- /* Only display the first repeat empty row */
- println("*");
- }
- i += 15;
- continue;
- }
- xprintf("%04x", i);
- }
- if (i % 8 == 0) print(" ");
-
- xprintf(" %02x", DataBuf[i]);
- if ((i + 1) % 16 == 0) {
- println("");
- }
- }
-#endif
-}
-
-uint16_t EEPROM_Init(void) {
- /* Load emulated eeprom contents from compacted flash into memory */
- uint16_t *src = (uint16_t *)FEE_COMPACTED_BASE_ADDRESS;
- uint16_t *dest = (uint16_t *)DataBuf;
- for (; src < (uint16_t *)FEE_COMPACTED_LAST_ADDRESS; ++src, ++dest) {
- *dest = ~*src;
- }
-
- if (debug_eeprom) {
- println("EEPROM_Init Compacted Pages:");
- print_eeprom();
- println("EEPROM_Init Write Log:");
- }
-
- /* Replay write log */
- uint16_t *log_addr;
- for (log_addr = (uint16_t *)FEE_WRITE_LOG_BASE_ADDRESS; log_addr < (uint16_t *)FEE_WRITE_LOG_LAST_ADDRESS; ++log_addr) {
- uint16_t address = *log_addr;
- if (address == FEE_EMPTY_WORD) {
- break;
- }
- /* Check for lowest 128-bytes optimization */
- if (!(address & FEE_WORD_ENCODING)) {
- uint8_t bvalue = (uint8_t)address;
- address >>= 8;
- DataBuf[address] = bvalue;
- eeprom_printf("DataBuf[0x%02x] = 0x%02x;\n", address, bvalue);
- } else {
- uint16_t wvalue;
- /* Check if value is in next word */
- if ((address & FEE_VALUE_NEXT) == FEE_VALUE_NEXT) {
- /* Read value from next word */
- if (++log_addr >= (uint16_t *)FEE_WRITE_LOG_LAST_ADDRESS) {
- break;
- }
- wvalue = ~*log_addr;
- if (!wvalue) {
- eeprom_printf("Incomplete write at log_addr: 0x%04x;\n", (uint32_t)log_addr);
- /* Possibly incomplete write. Ignore and continue */
- continue;
- }
- address &= 0x1FFF;
- address <<= 1;
- /* Writes to addresses less than 128 are byte log entries */
- address += FEE_BYTE_RANGE;
- } else {
- /* Reserved for future use */
- if (address & FEE_VALUE_RESERVED) {
- eeprom_printf("Reserved encoded value at log_addr: 0x%04x;\n", (uint32_t)log_addr);
- continue;
- }
- /* Optimization for 0 or 1 values. */
- wvalue = (address & FEE_VALUE_ENCODED) >> 13;
- address &= 0x1FFF;
- address <<= 1;
- }
- if (address < FEE_DENSITY_BYTES) {
- eeprom_printf("DataBuf[0x%04x] = 0x%04x;\n", address, wvalue);
- *(uint16_t *)(&DataBuf[address]) = wvalue;
- } else {
- eeprom_printf("DataBuf[0x%04x] cannot be set to 0x%04x [BAD ADDRESS]\n", address, wvalue);
- }
- }
- }
-
- empty_slot = log_addr;
-
- if (debug_eeprom) {
- println("EEPROM_Init Final DataBuf:");
- print_eeprom();
- }
-
- return FEE_DENSITY_BYTES;
-}
-
-/* Clear flash contents (doesn't touch in-memory DataBuf) */
-static void eeprom_clear(void) {
- FLASH_Unlock();
-
- for (uint16_t page_num = 0; page_num < FEE_PAGE_COUNT; ++page_num) {
- eeprom_printf("FLASH_ErasePage(0x%04x)\n", (uint32_t)(FEE_PAGE_BASE_ADDRESS + (page_num * FEE_PAGE_SIZE)));
- FLASH_ErasePage(FEE_PAGE_BASE_ADDRESS + (page_num * FEE_PAGE_SIZE));
- }
-
- FLASH_Lock();
-
- empty_slot = (uint16_t *)FEE_WRITE_LOG_BASE_ADDRESS;
- eeprom_printf("eeprom_clear empty_slot: 0x%08x\n", (uint32_t)empty_slot);
-}
-
-/* Erase emulated eeprom */
-void EEPROM_Erase(void) {
- eeprom_println("EEPROM_Erase");
- /* Erase compacted pages and write log */
- eeprom_clear();
- /* re-initialize to reset DataBuf */
- EEPROM_Init();
-}
-
-/* Compact write log */
-static uint8_t eeprom_compact(void) {
- /* Erase compacted pages and write log */
- eeprom_clear();
-
- FLASH_Unlock();
-
- FLASH_Status final_status = FLASH_COMPLETE;
-
- /* Write emulated eeprom contents from memory to compacted flash */
- uint16_t *src = (uint16_t *)DataBuf;
- uintptr_t dest = FEE_COMPACTED_BASE_ADDRESS;
- uint16_t value;
- for (; dest < FEE_COMPACTED_LAST_ADDRESS; ++src, dest += 2) {
- value = *src;
- if (value) {
- eeprom_printf("FLASH_ProgramHalfWord(0x%04x, 0x%04x)\n", (uint32_t)dest, ~value);
- FLASH_Status status = FLASH_ProgramHalfWord(dest, ~value);
- if (status != FLASH_COMPLETE) final_status = status;
- }
- }
-
- FLASH_Lock();
-
- if (debug_eeprom) {
- println("eeprom_compacted:");
- print_eeprom();
- }
-
- return final_status;
-}
-
-static uint8_t eeprom_write_direct_entry(uint16_t Address) {
- /* Check if we can just write this directly to the compacted flash area */
- uintptr_t directAddress = FEE_COMPACTED_BASE_ADDRESS + (Address & 0xFFFE);
- if (*(uint16_t *)directAddress == FEE_EMPTY_WORD) {
- /* Write the value directly to the compacted area without a log entry */
- uint16_t value = ~*(uint16_t *)(&DataBuf[Address & 0xFFFE]);
- /* Early exit if a write isn't needed */
- if (value == FEE_EMPTY_WORD) return FLASH_COMPLETE;
-
- FLASH_Unlock();
-
- eeprom_printf("FLASH_ProgramHalfWord(0x%08x, 0x%04x) [DIRECT]\n", (uint32_t)directAddress, value);
- FLASH_Status status = FLASH_ProgramHalfWord(directAddress, value);
-
- FLASH_Lock();
- return status;
- }
- return 0;
-}
-
-static uint8_t eeprom_write_log_word_entry(uint16_t Address) {
- FLASH_Status final_status = FLASH_COMPLETE;
-
- uint16_t value = *(uint16_t *)(&DataBuf[Address]);
- eeprom_printf("eeprom_write_log_word_entry(0x%04x): 0x%04x\n", Address, value);
-
- /* MSB signifies the lowest 128-byte optimization is not in effect */
- uint16_t encoding = FEE_WORD_ENCODING;
- uint8_t entry_size;
- if (value <= 1) {
- encoding |= value << 13;
- entry_size = 2;
- } else {
- encoding |= FEE_VALUE_NEXT;
- entry_size = 4;
- /* Writes to addresses less than 128 are byte log entries */
- Address -= FEE_BYTE_RANGE;
- }
-
- /* if we can't find an empty spot, we must compact emulated eeprom */
- if (empty_slot > (uint16_t *)(FEE_WRITE_LOG_LAST_ADDRESS - entry_size)) {
- /* compact the write log into the compacted flash area */
- return eeprom_compact();
- }
-
- /* Word log writes should be word-aligned. Take back a bit */
- Address >>= 1;
- Address |= encoding;
-
- /* ok we found a place let's write our data */
- FLASH_Unlock();
-
- /* address */
- eeprom_printf("FLASH_ProgramHalfWord(0x%08x, 0x%04x)\n", (uint32_t)empty_slot, Address);
- final_status = FLASH_ProgramHalfWord((uintptr_t)empty_slot++, Address);
-
- /* value */
- if (encoding == (FEE_WORD_ENCODING | FEE_VALUE_NEXT)) {
- eeprom_printf("FLASH_ProgramHalfWord(0x%08x, 0x%04x)\n", (uint32_t)empty_slot, ~value);
- FLASH_Status status = FLASH_ProgramHalfWord((uintptr_t)empty_slot++, ~value);
- if (status != FLASH_COMPLETE) final_status = status;
- }
-
- FLASH_Lock();
-
- return final_status;
-}
-
-static uint8_t eeprom_write_log_byte_entry(uint16_t Address) {
- eeprom_printf("eeprom_write_log_byte_entry(0x%04x): 0x%02x\n", Address, DataBuf[Address]);
-
- /* if couldn't find an empty spot, we must compact emulated eeprom */
- if (empty_slot >= (uint16_t *)FEE_WRITE_LOG_LAST_ADDRESS) {
- /* compact the write log into the compacted flash area */
- return eeprom_compact();
- }
-
- /* ok we found a place let's write our data */
- FLASH_Unlock();
-
- /* Pack address and value into the same word */
- uint16_t value = (Address << 8) | DataBuf[Address];
-
- /* write to flash */
- eeprom_printf("FLASH_ProgramHalfWord(0x%08x, 0x%04x)\n", (uint32_t)empty_slot, value);
- FLASH_Status status = FLASH_ProgramHalfWord((uintptr_t)empty_slot++, value);
-
- FLASH_Lock();
-
- return status;
-}
-
-uint8_t EEPROM_WriteDataByte(uint16_t Address, uint8_t DataByte) {
- /* if the address is out-of-bounds, do nothing */
- if (Address >= FEE_DENSITY_BYTES) {
- eeprom_printf("EEPROM_WriteDataByte(0x%04x, 0x%02x) [BAD ADDRESS]\n", Address, DataByte);
- return FLASH_BAD_ADDRESS;
- }
-
- /* if the value is the same, don't bother writing it */
- if (DataBuf[Address] == DataByte) {
- eeprom_printf("EEPROM_WriteDataByte(0x%04x, 0x%02x) [SKIP SAME]\n", Address, DataByte);
- return 0;
- }
-
- /* keep DataBuf cache in sync */
- DataBuf[Address] = DataByte;
- eeprom_printf("EEPROM_WriteDataByte DataBuf[0x%04x] = 0x%02x\n", Address, DataBuf[Address]);
-
- /* perform the write into flash memory */
- /* First, attempt to write directly into the compacted flash area */
- FLASH_Status status = eeprom_write_direct_entry(Address);
- if (!status) {
- /* Otherwise append to the write log */
- if (Address < FEE_BYTE_RANGE) {
- status = eeprom_write_log_byte_entry(Address);
- } else {
- status = eeprom_write_log_word_entry(Address & 0xFFFE);
- }
- }
- if (status != 0 && status != FLASH_COMPLETE) {
- eeprom_printf("EEPROM_WriteDataByte [STATUS == %d]\n", status);
- }
- return status;
-}
-
-uint8_t EEPROM_WriteDataWord(uint16_t Address, uint16_t DataWord) {
- /* if the address is out-of-bounds, do nothing */
- if (Address >= FEE_DENSITY_BYTES) {
- eeprom_printf("EEPROM_WriteDataWord(0x%04x, 0x%04x) [BAD ADDRESS]\n", Address, DataWord);
- return FLASH_BAD_ADDRESS;
- }
-
- /* Check for word alignment */
- FLASH_Status final_status = FLASH_COMPLETE;
- if (Address % 2) {
- final_status = EEPROM_WriteDataByte(Address, DataWord);
- FLASH_Status status = EEPROM_WriteDataByte(Address + 1, DataWord >> 8);
- if (status != FLASH_COMPLETE) final_status = status;
- if (final_status != 0 && final_status != FLASH_COMPLETE) {
- eeprom_printf("EEPROM_WriteDataWord [STATUS == %d]\n", final_status);
- }
- return final_status;
- }
-
- /* if the value is the same, don't bother writing it */
- uint16_t oldValue = *(uint16_t *)(&DataBuf[Address]);
- if (oldValue == DataWord) {
- eeprom_printf("EEPROM_WriteDataWord(0x%04x, 0x%04x) [SKIP SAME]\n", Address, DataWord);
- return 0;
- }
-
- /* keep DataBuf cache in sync */
- *(uint16_t *)(&DataBuf[Address]) = DataWord;
- eeprom_printf("EEPROM_WriteDataWord DataBuf[0x%04x] = 0x%04x\n", Address, *(uint16_t *)(&DataBuf[Address]));
-
- /* perform the write into flash memory */
- /* First, attempt to write directly into the compacted flash area */
- final_status = eeprom_write_direct_entry(Address);
- if (!final_status) {
- /* Otherwise append to the write log */
- /* Check if we need to fall back to byte write */
- if (Address < FEE_BYTE_RANGE) {
- final_status = FLASH_COMPLETE;
- /* Only write a byte if it has changed */
- if ((uint8_t)oldValue != (uint8_t)DataWord) {
- final_status = eeprom_write_log_byte_entry(Address);
- }
- FLASH_Status status = FLASH_COMPLETE;
- /* Only write a byte if it has changed */
- if ((oldValue >> 8) != (DataWord >> 8)) {
- status = eeprom_write_log_byte_entry(Address + 1);
- }
- if (status != FLASH_COMPLETE) final_status = status;
- } else {
- final_status = eeprom_write_log_word_entry(Address);
- }
- }
- if (final_status != 0 && final_status != FLASH_COMPLETE) {
- eeprom_printf("EEPROM_WriteDataWord [STATUS == %d]\n", final_status);
- }
- return final_status;
-}
-
-uint8_t EEPROM_ReadDataByte(uint16_t Address) {
- uint8_t DataByte = 0xFF;
-
- if (Address < FEE_DENSITY_BYTES) {
- DataByte = DataBuf[Address];
- }
-
- eeprom_printf("EEPROM_ReadDataByte(0x%04x): 0x%02x\n", Address, DataByte);
-
- return DataByte;
-}
-
-uint16_t EEPROM_ReadDataWord(uint16_t Address) {
- uint16_t DataWord = 0xFFFF;
-
- if (Address < FEE_DENSITY_BYTES - 1) {
- /* Check word alignment */
- if (Address % 2) {
- DataWord = DataBuf[Address] | (DataBuf[Address + 1] << 8);
- } else {
- DataWord = *(uint16_t *)(&DataBuf[Address]);
- }
- }
-
- eeprom_printf("EEPROM_ReadDataWord(0x%04x): 0x%04x\n", Address, DataWord);
-
- return DataWord;
-}
-
-/*****************************************************************************
- * Bind to eeprom_driver.c
- *******************************************************************************/
-void eeprom_driver_init(void) {
- EEPROM_Init();
-}
-
-void eeprom_driver_erase(void) {
- EEPROM_Erase();
-}
-
-void eeprom_read_block(void *buf, const void *addr, size_t len) {
- const uint8_t *src = (const uint8_t *)addr;
- uint8_t * dest = (uint8_t *)buf;
-
- /* Check word alignment */
- if (len && (uintptr_t)src % 2) {
- /* Read the unaligned first byte */
- *dest++ = EEPROM_ReadDataByte((const uintptr_t)src++);
- --len;
- }
-
- uint16_t value;
- bool aligned = ((uintptr_t)dest % 2 == 0);
- while (len > 1) {
- value = EEPROM_ReadDataWord((const uintptr_t)((uint16_t *)src));
- if (aligned) {
- *(uint16_t *)dest = value;
- dest += 2;
- } else {
- *dest++ = value;
- *dest++ = value >> 8;
- }
- src += 2;
- len -= 2;
- }
- if (len) {
- *dest = EEPROM_ReadDataByte((const uintptr_t)src);
- }
-}
-
-void eeprom_write_block(const void *buf, void *addr, size_t len) {
- uint8_t * dest = (uint8_t *)addr;
- const uint8_t *src = (const uint8_t *)buf;
-
- /* Check word alignment */
- if (len && (uintptr_t)dest % 2) {
- /* Write the unaligned first byte */
- EEPROM_WriteDataByte((uintptr_t)dest++, *src++);
- --len;
- }
-
- uint16_t value;
- bool aligned = ((uintptr_t)src % 2 == 0);
- while (len > 1) {
- if (aligned) {
- value = *(uint16_t *)src;
- } else {
- value = *(uint8_t *)src | (*(uint8_t *)(src + 1) << 8);
- }
- EEPROM_WriteDataWord((uintptr_t)((uint16_t *)dest), value);
- dest += 2;
- src += 2;
- len -= 2;
- }
-
- if (len) {
- EEPROM_WriteDataByte((uintptr_t)dest, *src);
- }
-}
diff --git a/platforms/chibios/flash.mk b/platforms/chibios/flash.mk
index a91ef2cf35..790c4f3316 100644
--- a/platforms/chibios/flash.mk
+++ b/platforms/chibios/flash.mk
@@ -54,11 +54,11 @@ endef
# TODO: Remove once ARM has a way to configure EECONFIG_HANDEDNESS
# within the emulated eeprom via dfu-util or another tool
-ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-left))
+ifneq (,$(filter $(MAKECMDGOALS), dfu-util-split-left uf2-split-left))
OPT_DEFS += -DINIT_EE_HANDS_LEFT
endif
-ifneq (,$(filter $(MAKECMDGOALS),dfu-util-split-right))
+ifneq (,$(filter $(MAKECMDGOALS), dfu-util-split-right uf2-split-right))
OPT_DEFS += -DINIT_EE_HANDS_RIGHT
endif
@@ -66,6 +66,10 @@ dfu-util-split-left: dfu-util
dfu-util-split-right: dfu-util
+uf2-split-left: flash
+
+uf2-split-right: flash
+
ST_LINK_CLI ?= st-link_cli
ST_LINK_ARGS ?=
@@ -104,6 +108,8 @@ else ifeq ($(strip $(BOOTLOADER)),kiibohd)
$(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL)
else ifeq ($(strip $(BOOTLOADER)),tinyuf2)
$(UNSYNC_OUTPUT_CMD) && $(call EXEC_UF2_UTIL_DEPLOY)
+else ifeq ($(strip $(BOOTLOADER)),rp2040)
+ $(UNSYNC_OUTPUT_CMD) && $(call EXEC_UF2_UTIL_DEPLOY)
else ifeq ($(strip $(MCU_FAMILY)),KINETIS)
$(UNSYNC_OUTPUT_CMD) && $(call EXEC_TEENSY)
else ifeq ($(strip $(MCU_FAMILY)),MIMXRT1062)
diff --git a/platforms/chibios/gd32v_compatibility.h b/platforms/chibios/gd32v_compatibility.h
index a3148fb6d2..d01c3d00a2 100644
--- a/platforms/chibios/gd32v_compatibility.h
+++ b/platforms/chibios/gd32v_compatibility.h
@@ -35,7 +35,9 @@
#define STM32_DMA_STREAM_ID(peripheral, channel) GD32_DMA_STREAM_ID(peripheral - 1, channel - 1)
#define STM32_DMA_CR_DIR_M2P GD32_DMA_CTL_DIR_M2P
#define STM32_DMA_CR_PSIZE_WORD GD32_DMA_CTL_PWIDTH_WORD
+#define STM32_DMA_CR_PSIZE_HWORD GD32_DMA_CTL_PWIDTH_HWORD
#define STM32_DMA_CR_MSIZE_WORD GD32_DMA_CTL_MWIDTH_WORD
+#define STM32_DMA_CR_MSIZE_BYTE GD32_DMA_CTL_MWIDTH_BYTE
#define STM32_DMA_CR_MINC GD32_DMA_CTL_MNAGA
#define STM32_DMA_CR_CIRC GD32_DMA_CTL_CMEN
#define STM32_DMA_CR_PL GD32_DMA_CTL_PRIO
diff --git a/platforms/chibios/platform.mk b/platforms/chibios/platform.mk
index 21751f23fd..b2a8ec89e1 100644
--- a/platforms/chibios/platform.mk
+++ b/platforms/chibios/platform.mk
@@ -36,6 +36,7 @@ ifeq ($(strip $(MCU)), risc-v)
# RISC-V Support
# As of 7.4.2021 there is only one supported RISC-V platform in Chibios-Contrib,
# therefore all required settings are hard-coded
+ USE_CHIBIOS_CONTRIB = yes
STARTUP_MK = $(CHIBIOS_CONTRIB)/os/common/startup/RISCV-ECLIC/compilers/GCC/mk/startup_$(MCU_STARTUP).mk
PORT_V = $(CHIBIOS_CONTRIB)/os/common/ports/RISCV-ECLIC/compilers/GCC/mk/port.mk
RULESPATH = $(CHIBIOS_CONTRIB)/os/common/startup/RISCV-ECLIC/compilers/GCC
@@ -87,12 +88,17 @@ ifeq ("$(MCU_PORT_NAME)","")
endif
ifeq ("$(wildcard $(PLATFORM_MK))","")
- PLATFORM_MK = $(CHIBIOS)/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)/$(PLATFORM_NAME).mk
+ PLATFORM_MK = $(CHIBIOS_CONTRIB)/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)/$(PLATFORM_NAME).mk
ifeq ("$(wildcard $(PLATFORM_MK))","")
- PLATFORM_MK = $(CHIBIOS_CONTRIB)/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)/$(PLATFORM_NAME).mk
+ PLATFORM_MK = $(CHIBIOS)/os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES)/$(PLATFORM_NAME).mk
endif
endif
+# If no MCU architecture specified, use the MCU instead (allows for mcu_selection.mk to swap to cortex-m0 etc.)
+ifeq ("$(MCU_ARCH)","")
+ MCU_ARCH = $(MCU)
+endif
+
include $(STARTUP_MK)
include $(PORT_V)
include $(PLATFORM_MK)
@@ -282,6 +288,17 @@ EXTRAINCDIRS += $(CHIBIOS)/os/license $(CHIBIOS)/os/oslib/include \
$(STREAMSINC) $(CHIBIOS)/os/various $(COMMON_VPATH)
#
+# QMK specific MCU family support selection.
+##############################################################################
+ifneq ("$(wildcard $(PLATFORM_PATH)/$(PLATFORM_KEY)/vendors/$(MCU_FAMILY)/$(MCU_SERIES).mk)","")
+ # Either by MCU series e.g. STM32/STM32F1xx.mk or...
+ include $(PLATFORM_PATH)/$(PLATFORM_KEY)/vendors/$(MCU_FAMILY)/$(MCU_SERIES).mk
+else ifneq ("$(wildcard $(PLATFORM_PATH)/$(PLATFORM_KEY)/vendors/$(MCU_FAMILY)/$(MCU_FAMILY).mk)","")
+ # By MCU family e.g. STM32/STM32.mk
+ include $(PLATFORM_PATH)/$(PLATFORM_KEY)/vendors/$(MCU_FAMILY)/$(MCU_FAMILY).mk
+endif
+
+#
# ChibiOS-Contrib
##############################################################################
@@ -332,10 +349,14 @@ SHARED_CFLAGS = -fomit-frame-pointer \
-ffunction-sections \
-fdata-sections \
-fno-common \
- -fshort-wchar
+ -fshort-wchar \
+ -fno-builtin-printf
+
+LDSCRIPT_PATH := $(shell dirname "$(LDSCRIPT)")
# Shared Linker flags for all toolchains
SHARED_LDFLAGS = -T $(LDSCRIPT) \
+ -L $(LDSCRIPT_PATH) \
-Wl,--gc-sections \
-nostartfiles
diff --git a/platforms/chibios/vendors/RP/RP2040.mk b/platforms/chibios/vendors/RP/RP2040.mk
new file mode 100644
index 0000000000..de426c9c40
--- /dev/null
+++ b/platforms/chibios/vendors/RP/RP2040.mk
@@ -0,0 +1,287 @@
+#
+# Raspberry Pi RP2040 specific drivers
+##############################################################################
+COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/vendor/$(MCU_FAMILY)/$(MCU_SERIES)
+
+ifeq ($(strip $(WS2812_DRIVER)), vendor)
+ OPT_DEFS += -DRP_DMA_REQUIRED=TRUE
+endif
+
+#
+# Raspberry Pi Pico SDK Support
+##############################################################################
+ADEFS += -DCRT0_VTOR_INIT=1 \
+ -DCRT0_EXTRA_CORES_NUMBER=0
+
+CFLAGS += -DPICO_NO_FPGA_CHECK \
+ -DNDEBUG
+
+#
+# Pico SDK source and header files needed by QMK and ChibiOS
+##############################################################################
+PICOSDKROOT := $(TOP_DIR)/lib/pico-sdk
+
+PICOSDKSRC = $(PICOSDKROOT)/src/rp2_common/hardware_clocks/clocks.c \
+ $(PICOSDKROOT)/src/rp2_common/hardware_pll/pll.c \
+ $(PICOSDKROOT)/src/rp2_common/hardware_pio/pio.c \
+ $(PICOSDKROOT)/src/rp2_common/hardware_flash/flash.c \
+ $(PICOSDKROOT)/src/rp2_common/hardware_gpio/gpio.c \
+ $(PICOSDKROOT)/src/rp2_common/hardware_claim/claim.c \
+ $(PICOSDKROOT)/src/rp2_common/hardware_watchdog/watchdog.c \
+ $(PICOSDKROOT)/src/rp2_common/hardware_xosc/xosc.c \
+ $(PICOSDKROOT)/src/rp2_common/pico_bootrom/bootrom.c
+
+PICOSDKINC = $(CHIBIOS)//os/various/pico_bindings/dumb/include \
+ $(PICOSDKROOT)/src/common/pico_base/include \
+ $(PICOSDKROOT)/src/rp2_common/pico_platform/include \
+ $(PICOSDKROOT)/src/rp2_common/hardware_base/include \
+ $(PICOSDKROOT)/src/rp2_common/hardware_clocks/include \
+ $(PICOSDKROOT)/src/rp2_common/hardware_claim/include \
+ $(PICOSDKROOT)/src/rp2_common/hardware_flash/include \
+ $(PICOSDKROOT)/src/rp2_common/hardware_gpio/include \
+ $(PICOSDKROOT)/src/rp2_common/hardware_irq/include \
+ $(PICOSDKROOT)/src/rp2_common/hardware_pll/include \
+ $(PICOSDKROOT)/src/rp2_common/hardware_pio/include \
+ $(PICOSDKROOT)/src/rp2_common/hardware_sync/include \
+ $(PICOSDKROOT)/src/rp2_common/hardware_resets/include \
+ $(PICOSDKROOT)/src/rp2_common/hardware_watchdog/include \
+ $(PICOSDKROOT)/src/rp2_common/hardware_xosc/include \
+ $(PICOSDKROOT)/src/rp2040/hardware_regs/include \
+ $(PICOSDKROOT)/src/rp2040/hardware_structs/include \
+ $(PICOSDKROOT)/src/boards/include \
+ $(PICOSDKROOT)/src/rp2_common/pico_bootrom/include
+
+PLATFORM_SRC += $(PICOSDKSRC)
+EXTRAINCDIRS += $(PICOSDKINC)
+
+PLATFORM_RP2040_PATH := $(PLATFORM_PATH)/$(PLATFORM_KEY)/vendors/$(MCU_FAMILY)
+
+PLATFORM_SRC += $(PLATFORM_RP2040_PATH)/stage2_bootloaders.c \
+ $(PLATFORM_RP2040_PATH)/pico_sdk_shims.c
+
+EXTRAINCDIRS += $(PLATFORM_RP2040_PATH)
+
+#
+# RP2040 optimized compiler intrinsics
+##############################################################################
+
+# Enables optimized Compiler intrinsics which are located in the RP2040
+# bootrom. This needs startup code and linker script support from ChibiOS,
+# which is WIP. Therefore disabled by default for now.
+RP2040_INTRINSICS_ENABLED ?= no
+ifeq ($(strip $(RP2040_INTRINSICS_ENABLED)), yes)
+ PICOSDKINTRINSICSSRC = $(PICOSDKROOT)/src/rp2_common/pico_float/float_aeabi.S \
+ $(PICOSDKROOT)/src/rp2_common/pico_float/float_math.c \
+ $(PICOSDKROOT)/src/rp2_common/pico_float/float_init_rom.c \
+ $(PICOSDKROOT)/src/rp2_common/pico_float/float_v1_rom_shim.S \
+ $(PICOSDKROOT)/src/rp2_common/pico_double/double_aeabi.S \
+ $(PICOSDKROOT)/src/rp2_common/pico_double/double_math.c \
+ $(PICOSDKROOT)/src/rp2_common/pico_double/double_init_rom.c \
+ $(PICOSDKROOT)/src/rp2_common/pico_double/double_v1_rom_shim.S \
+ $(PICOSDKROOT)/src/rp2_common/pico_divider/divider.S \
+ $(PICOSDKROOT)/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.S \
+ $(PICOSDKROOT)/src/rp2_common/pico_mem_ops/mem_ops_aeabi.S \
+ $(PICOSDKROOT)/src/rp2_common/pico_malloc/pico_malloc.c \
+ $(PICOSDKROOT)/src/rp2_common/pico_bit_ops/bit_ops_aeabi.S
+
+ PICOSDKINTRINSICSINC = $(PICOSDKROOT)/src/common/pico_base/include \
+ $(PICOSDKROOT)/src/rp2_common/pico_platfrom/include \
+ $(PICOSDKROOT)/src/rp2_common/pico_bootrom/include \
+ $(PICOSDKROOT)/src/rp2_common/hardware_divider/include \
+ $(PICOSDKROOT)/src/rp2_common/pico_float/include \
+ $(PICOSDKROOT)/src/rp2_common/pico_double/include \
+ $(PICOSDKROOT)/src/rp2_common/pico_malloc/include
+
+ OPT_DEFS += -DPICO_FLOAT_SUPPORT_ROM_V1=0 -DPICO_DOUBLE_SUPPORT_ROM_V1=0
+
+ CFLAGS += -Wl,--defsym=__StackLimit=__heap_end__
+ CFLAGS += -Wl,--defsym=__unhandled_user_irq=_unhandled_exception
+ CFLAGS += -Wl,--build-id=none
+
+ # single precision floating point intrinsics
+ OPT_DEFS += -DPICO_FLOAT_IN_RAM=1
+ OPT_DEFS += -DPICO_FLOAT_PROPAGATE_NANS=0
+
+ CFLAGS += -Wl,--wrap=__aeabi_fdiv
+ CFLAGS += -Wl,--wrap=__aeabi_fmul
+ CFLAGS += -Wl,--wrap=__aeabi_frsub
+ CFLAGS += -Wl,--wrap=__aeabi_fsub
+ CFLAGS += -Wl,--wrap=__aeabi_cfcmpeq
+ CFLAGS += -Wl,--wrap=__aeabi_cfrcmple
+ CFLAGS += -Wl,--wrap=__aeabi_cfcmple
+ CFLAGS += -Wl,--wrap=__aeabi_fcmpeq
+ CFLAGS += -Wl,--wrap=__aeabi_fcmplt
+ CFLAGS += -Wl,--wrap=__aeabi_fcmple
+ CFLAGS += -Wl,--wrap=__aeabi_fcmpge
+ CFLAGS += -Wl,--wrap=__aeabi_fcmpgt
+ CFLAGS += -Wl,--wrap=__aeabi_fcmpun
+ CFLAGS += -Wl,--wrap=__aeabi_i2f
+ CFLAGS += -Wl,--wrap=__aeabi_l2f
+ CFLAGS += -Wl,--wrap=__aeabi_ui2f
+ CFLAGS += -Wl,--wrap=__aeabi_ul2f
+ CFLAGS += -Wl,--wrap=__aeabi_i2f
+ CFLAGS += -Wl,--wrap=__aeabi_f2iz
+ CFLAGS += -Wl,--wrap=__aeabi_f2lz
+ CFLAGS += -Wl,--wrap=__aeabi_f2uiz
+ CFLAGS += -Wl,--wrap=__aeabi_f2ulz
+ CFLAGS += -Wl,--wrap=__aeabi_f2d
+ CFLAGS += -Wl,--wrap=sqrtf
+ CFLAGS += -Wl,--wrap=cosf
+ CFLAGS += -Wl,--wrap=sinf
+ CFLAGS += -Wl,--wrap=tanf
+ CFLAGS += -Wl,--wrap=atan2f
+ CFLAGS += -Wl,--wrap=expf
+ CFLAGS += -Wl,--wrap=logf
+ CFLAGS += -Wl,--wrap=ldexpf
+ CFLAGS += -Wl,--wrap=copysignf
+ CFLAGS += -Wl,--wrap=truncf
+ CFLAGS += -Wl,--wrap=floorf
+ CFLAGS += -Wl,--wrap=ceilf
+ CFLAGS += -Wl,--wrap=roundf
+ CFLAGS += -Wl,--wrap=sincosf
+ CFLAGS += -Wl,--wrap=asinf
+ CFLAGS += -Wl,--wrap=acosf
+ CFLAGS += -Wl,--wrap=atanf
+ CFLAGS += -Wl,--wrap=sinhf
+ CFLAGS += -Wl,--wrap=coshf
+ CFLAGS += -Wl,--wrap=tanhf
+ CFLAGS += -Wl,--wrap=asinhf
+ CFLAGS += -Wl,--wrap=acoshf
+ CFLAGS += -Wl,--wrap=atanhf
+ CFLAGS += -Wl,--wrap=exp2f
+ CFLAGS += -Wl,--wrap=log2f
+ CFLAGS += -Wl,--wrap=exp10f
+ CFLAGS += -Wl,--wrap=log10f
+ CFLAGS += -Wl,--wrap=powf
+ CFLAGS += -Wl,--wrap=powintf
+ CFLAGS += -Wl,--wrap=hypotf
+ CFLAGS += -Wl,--wrap=cbrtf
+ CFLAGS += -Wl,--wrap=fmodf
+ CFLAGS += -Wl,--wrap=dremf
+ CFLAGS += -Wl,--wrap=remainderf
+ CFLAGS += -Wl,--wrap=remquof
+ CFLAGS += -Wl,--wrap=expm1f
+ CFLAGS += -Wl,--wrap=log1pf
+ CFLAGS += -Wl,--wrap=fmaf
+
+ # double precision floating point intrinsics
+ OPT_DEFS += -DPICO_DOUBLE_IN_RAM=1
+ OPT_DEFS += -DPICO_DOUBLE_PROPAGATE_NANS=0
+
+ CFLAGS += -Wl,--wrap=__aeabi_dadd
+ CFLAGS += -Wl,--wrap=__aeabi_ddiv
+ CFLAGS += -Wl,--wrap=__aeabi_dmul
+ CFLAGS += -Wl,--wrap=__aeabi_drsub
+ CFLAGS += -Wl,--wrap=__aeabi_dsub
+ CFLAGS += -Wl,--wrap=__aeabi_cdcmpeq
+ CFLAGS += -Wl,--wrap=__aeabi_cdrcmple
+ CFLAGS += -Wl,--wrap=__aeabi_cdcmple
+ CFLAGS += -Wl,--wrap=__aeabi_dcmpeq
+ CFLAGS += -Wl,--wrap=__aeabi_dcmplt
+ CFLAGS += -Wl,--wrap=__aeabi_dcmple
+ CFLAGS += -Wl,--wrap=__aeabi_dcmpge
+ CFLAGS += -Wl,--wrap=__aeabi_dcmpgt
+ CFLAGS += -Wl,--wrap=__aeabi_dcmpun
+ CFLAGS += -Wl,--wrap=__aeabi_i2d
+ CFLAGS += -Wl,--wrap=__aeabi_l2d
+ CFLAGS += -Wl,--wrap=__aeabi_ui2d
+ CFLAGS += -Wl,--wrap=__aeabi_ul2d
+ CFLAGS += -Wl,--wrap=__aeabi_d2iz
+ CFLAGS += -Wl,--wrap=__aeabi_d2lz
+ CFLAGS += -Wl,--wrap=__aeabi_d2uiz
+ CFLAGS += -Wl,--wrap=__aeabi_d2ulz
+ CFLAGS += -Wl,--wrap=__aeabi_d2f
+ CFLAGS += -Wl,--wrap=sqrt
+ CFLAGS += -Wl,--wrap=cos
+ CFLAGS += -Wl,--wrap=sin
+ CFLAGS += -Wl,--wrap=tan
+ CFLAGS += -Wl,--wrap=atan2
+ CFLAGS += -Wl,--wrap=exp
+ CFLAGS += -Wl,--wrap=log
+ CFLAGS += -Wl,--wrap=ldexp
+ CFLAGS += -Wl,--wrap=copysign
+ CFLAGS += -Wl,--wrap=trunc
+ CFLAGS += -Wl,--wrap=floor
+ CFLAGS += -Wl,--wrap=ceil
+ CFLAGS += -Wl,--wrap=round
+ CFLAGS += -Wl,--wrap=sincos
+ CFLAGS += -Wl,--wrap=asin
+ CFLAGS += -Wl,--wrap=acos
+ CFLAGS += -Wl,--wrap=atan
+ CFLAGS += -Wl,--wrap=sinh
+ CFLAGS += -Wl,--wrap=cosh
+ CFLAGS += -Wl,--wrap=tanh
+ CFLAGS += -Wl,--wrap=asinh
+ CFLAGS += -Wl,--wrap=acosh
+ CFLAGS += -Wl,--wrap=atanh
+ CFLAGS += -Wl,--wrap=exp2
+ CFLAGS += -Wl,--wrap=log2
+ CFLAGS += -Wl,--wrap=exp10
+ CFLAGS += -Wl,--wrap=log10
+ CFLAGS += -Wl,--wrap=pow
+ CFLAGS += -Wl,--wrap=powint
+ CFLAGS += -Wl,--wrap=hypot
+ CFLAGS += -Wl,--wrap=cbrt
+ CFLAGS += -Wl,--wrap=fmod
+ CFLAGS += -Wl,--wrap=drem
+ CFLAGS += -Wl,--wrap=remainder
+ CFLAGS += -Wl,--wrap=remquo
+ CFLAGS += -Wl,--wrap=expm1
+ CFLAGS += -Wl,--wrap=log1p
+ CFLAGS += -Wl,--wrap=fma
+
+ # bit operation intrinsics
+ OPT_DEFS += -DPICO_BITS_IN_RAM=1
+
+ CFLAGS += -Wl,--wrap=__clzsi2
+ CFLAGS += -Wl,--wrap=__clzsi2
+ CFLAGS += -Wl,--wrap=__clzdi2
+ CFLAGS += -Wl,--wrap=__ctzsi2
+ CFLAGS += -Wl,--wrap=__ctzdi2
+ CFLAGS += -Wl,--wrap=__popcountsi2
+ CFLAGS += -Wl,--wrap=__popcountdi2
+ CFLAGS += -Wl,--wrap=__clz
+ CFLAGS += -Wl,--wrap=__clzl
+ CFLAGS += -Wl,--wrap=__clzsi2
+ CFLAGS += -Wl,--wrap=__clzll
+
+ # integer division intrinsics
+ OPT_DEFS += -DPICO_DIVIDER_IN_RAM=1
+ OPT_DEFS += -DPICO_DIVIDER_DISABLE_INTERRUPTS=1
+
+ CFLAGS += -Wl,--wrap=__aeabi_idiv
+ CFLAGS += -Wl,--wrap=__aeabi_idivmod
+ CFLAGS += -Wl,--wrap=__aeabi_ldivmod
+ CFLAGS += -Wl,--wrap=__aeabi_uidiv
+ CFLAGS += -Wl,--wrap=__aeabi_uidivmod
+ CFLAGS += -Wl,--wrap=__aeabi_uldivmod
+
+ # 64bit integer intrinsics
+ OPT_DEFS += -DPICO_INT64_OPS_IN_RAM=1
+
+ CFLAGS += -Wl,--wrap=__aeabi_lmul
+
+ # malloc and friends functions
+ OPT_DEFS += -DPICO_USE_MALLOC_MUTEX=0
+ OPT_DEFS += -DPICO_DEBUG_MALLOC=0
+ OPT_DEFS ?= -DPICO_MALLOC_PANIC=0
+
+ CFLAGS += -Wl,--wrap=malloc
+ CFLAGS += -Wl,--wrap=calloc
+ CFLAGS += -Wl,--wrap=free
+
+ # memory operation intrinsics
+ OPT_DEFS += -DPICO_MEM_IN_RAM=1
+
+ CFLAGS += -Wl,--wrap=memcpy
+ CFLAGS += -Wl,--wrap=memset
+ CFLAGS += -Wl,--wrap=__aeabi_memcpy
+ CFLAGS += -Wl,--wrap=__aeabi_memset
+ CFLAGS += -Wl,--wrap=__aeabi_memcpy4
+ CFLAGS += -Wl,--wrap=__aeabi_memset4
+ CFLAGS += -Wl,--wrap=__aeabi_memcpy8
+ CFLAGS += -Wl,--wrap=__aeabi_memset8
+
+ PLATFORM_SRC += $(PICOSDKINTRINSICSSRC)
+ EXTRAINCDIRS += $(PICOSDKINTRINSICSINC)
+endif
diff --git a/platforms/chibios/vendors/RP/_pin_defs.h b/platforms/chibios/vendors/RP/_pin_defs.h
new file mode 100644
index 0000000000..4241845369
--- /dev/null
+++ b/platforms/chibios/vendors/RP/_pin_defs.h
@@ -0,0 +1,37 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/* RP2040 GPIO Numbering */
+#define GP0 0U
+#define GP1 1U
+#define GP2 2U
+#define GP3 3U
+#define GP4 4U
+#define GP5 5U
+#define GP6 6U
+#define GP7 7U
+#define GP8 8U
+#define GP9 9U
+#define GP10 10U
+#define GP11 11U
+#define GP12 12U
+#define GP13 13U
+#define GP14 14U
+#define GP15 15U
+#define GP16 16U
+#define GP17 17U
+#define GP18 18U
+#define GP19 19U
+#define GP20 20U
+#define GP21 21U
+#define GP22 22U
+#define GP23 23U
+#define GP24 24U
+#define GP25 25U
+#define GP26 26U
+#define GP27 27U
+#define GP28 28U
+#define GP29 29U
+#define GP30 30U
diff --git a/platforms/chibios/vendors/RP/pico_sdk_shims.c b/platforms/chibios/vendors/RP/pico_sdk_shims.c
new file mode 100644
index 0000000000..239155c086
--- /dev/null
+++ b/platforms/chibios/vendors/RP/pico_sdk_shims.c
@@ -0,0 +1,13 @@
+// Copyright 2022 Stefan Kerkmann
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include <stdbool.h>
+#include <ch.h>
+
+void panic(const char *fmt, ...) {
+ chSysHalt(fmt);
+}
+
+void hard_assertion_failure(void) {
+ panic("hard assert");
+}
diff --git a/platforms/chibios/vendors/RP/stage2_bootloaders.c b/platforms/chibios/vendors/RP/stage2_bootloaders.c
new file mode 100644
index 0000000000..e65b0a5802
--- /dev/null
+++ b/platforms/chibios/vendors/RP/stage2_bootloaders.c
@@ -0,0 +1,178 @@
+// ----------------------------------------------------------------------------
+// Pre-compiled second stage boot code for RP2040.
+//
+// Copyright (c) 2019-2021 Raspberry Pi (Trading) Ltd.
+// SPDX-License-Identifier: BSD-3-Clause
+// ----------------------------------------------------------------------------
+
+#include <stdint.h>
+
+#define BOOTLOADER_SECTION __attribute__((used, section(".boot2")))
+
+// clang-format off
+
+#if defined(RP2040_FLASH_AT25SF128A)
+
+uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = {
+ 0x00, 0xb5, 0x31, 0x4b, 0x21, 0x20, 0x58, 0x60, 0x98, 0x68, 0x02, 0x21,
+ 0x88, 0x43, 0x98, 0x60, 0xd8, 0x60, 0x18, 0x61, 0x58, 0x61, 0x2d, 0x4b,
+ 0x00, 0x21, 0x99, 0x60, 0x04, 0x21, 0x59, 0x61, 0x01, 0x21, 0xf0, 0x22,
+ 0x99, 0x50, 0x2a, 0x49, 0x19, 0x60, 0x01, 0x21, 0x99, 0x60, 0x35, 0x20,
+ 0x00, 0xf0, 0x42, 0xf8, 0x02, 0x22, 0x90, 0x42, 0x12, 0xd0, 0x06, 0x21,
+ 0x19, 0x66, 0x00, 0xf0, 0x32, 0xf8, 0x19, 0x6e, 0x31, 0x21, 0x19, 0x66,
+ 0x1a, 0x66, 0x00, 0xf0, 0x2c, 0xf8, 0x19, 0x6e, 0x19, 0x6e, 0x19, 0x6e,
+ 0x05, 0x20, 0x00, 0xf0, 0x2f, 0xf8, 0x01, 0x21, 0x08, 0x42, 0xf9, 0xd1,
+ 0x00, 0x21, 0x99, 0x60, 0x1b, 0x49, 0x19, 0x60, 0x00, 0x21, 0x59, 0x60,
+ 0x1a, 0x49, 0x1b, 0x48, 0x01, 0x60, 0x01, 0x21, 0x99, 0x60, 0xeb, 0x21,
+ 0x19, 0x66, 0x20, 0x21, 0x19, 0x66, 0x00, 0xf0, 0x12, 0xf8, 0x00, 0x21,
+ 0x99, 0x60, 0x16, 0x49, 0x14, 0x48, 0x01, 0x60, 0x01, 0x21, 0x99, 0x60,
+ 0x01, 0xbc, 0x00, 0x28, 0x00, 0xd0, 0x00, 0x47, 0x12, 0x48, 0x13, 0x49,
+ 0x08, 0x60, 0x03, 0xc8, 0x80, 0xf3, 0x08, 0x88, 0x08, 0x47, 0x03, 0xb5,
+ 0x99, 0x6a, 0x04, 0x20, 0x01, 0x42, 0xfb, 0xd0, 0x01, 0x20, 0x01, 0x42,
+ 0xf8, 0xd1, 0x03, 0xbd, 0x02, 0xb5, 0x18, 0x66, 0x18, 0x66, 0xff, 0xf7,
+ 0xf2, 0xff, 0x18, 0x6e, 0x18, 0x6e, 0x02, 0xbd, 0x00, 0x00, 0x02, 0x40,
+ 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0x5f, 0x00,
+ 0x21, 0x22, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x18, 0x22, 0x20, 0x00, 0x20,
+ 0x00, 0x01, 0x00, 0x10, 0x08, 0xed, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xc0, 0xdd, 0xc0, 0xb5
+};
+
+#elif defined(RP2040_FLASH_GD25Q64CS)
+
+uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = {
+ 0x00, 0xb5, 0x31, 0x4b, 0x21, 0x20, 0x58, 0x60, 0x98, 0x68, 0x02, 0x21,
+ 0x88, 0x43, 0x98, 0x60, 0xd8, 0x60, 0x18, 0x61, 0x58, 0x61, 0x2d, 0x4b,
+ 0x00, 0x21, 0x99, 0x60, 0x04, 0x21, 0x59, 0x61, 0x01, 0x21, 0xf0, 0x22,
+ 0x99, 0x50, 0x2a, 0x49, 0x19, 0x60, 0x01, 0x21, 0x99, 0x60, 0x35, 0x20,
+ 0x00, 0xf0, 0x42, 0xf8, 0x02, 0x22, 0x90, 0x42, 0x12, 0xd0, 0x06, 0x21,
+ 0x19, 0x66, 0x00, 0xf0, 0x32, 0xf8, 0x19, 0x6e, 0x31, 0x21, 0x19, 0x66,
+ 0x1a, 0x66, 0x00, 0xf0, 0x2c, 0xf8, 0x19, 0x6e, 0x19, 0x6e, 0x19, 0x6e,
+ 0x05, 0x20, 0x00, 0xf0, 0x2f, 0xf8, 0x01, 0x21, 0x08, 0x42, 0xf9, 0xd1,
+ 0x00, 0x21, 0x99, 0x60, 0x1b, 0x49, 0x19, 0x60, 0x00, 0x21, 0x59, 0x60,
+ 0x1a, 0x49, 0x1b, 0x48, 0x01, 0x60, 0x01, 0x21, 0x99, 0x60, 0xe7, 0x21,
+ 0x19, 0x66, 0xa0, 0x21, 0x19, 0x66, 0x00, 0xf0, 0x12, 0xf8, 0x00, 0x21,
+ 0x99, 0x60, 0x16, 0x49, 0x14, 0x48, 0x01, 0x60, 0x01, 0x21, 0x99, 0x60,
+ 0x01, 0xbc, 0x00, 0x28, 0x00, 0xd0, 0x00, 0x47, 0x12, 0x48, 0x13, 0x49,
+ 0x08, 0x60, 0x03, 0xc8, 0x80, 0xf3, 0x08, 0x88, 0x08, 0x47, 0x03, 0xb5,
+ 0x99, 0x6a, 0x04, 0x20, 0x01, 0x42, 0xfb, 0xd0, 0x01, 0x20, 0x01, 0x42,
+ 0xf8, 0xd1, 0x03, 0xbd, 0x02, 0xb5, 0x18, 0x66, 0x18, 0x66, 0xff, 0xf7,
+ 0xf2, 0xff, 0x18, 0x6e, 0x18, 0x6e, 0x02, 0xbd, 0x00, 0x00, 0x02, 0x40,
+ 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0x5f, 0x00,
+ 0x21, 0x12, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x18, 0x22, 0x10, 0x00, 0xa0,
+ 0x00, 0x01, 0x00, 0x10, 0x08, 0xed, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xe2, 0xd9, 0xa2, 0xb5
+};
+
+#elif defined(RP2040_FLASH_W25X10CL)
+
+uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = {
+ 0x00, 0xb5, 0x14, 0x4b, 0x00, 0x21, 0x99, 0x60, 0x04, 0x21, 0x59, 0x61,
+ 0x12, 0x49, 0x19, 0x60, 0x00, 0x21, 0x59, 0x60, 0x11, 0x49, 0x12, 0x48,
+ 0x01, 0x60, 0x01, 0x21, 0x99, 0x60, 0xbb, 0x21, 0x19, 0x66, 0x02, 0x21,
+ 0x19, 0x66, 0x08, 0x21, 0x98, 0x6a, 0x08, 0x42, 0xfc, 0xd0, 0x00, 0x21,
+ 0x99, 0x60, 0x0c, 0x49, 0x0a, 0x48, 0x01, 0x60, 0x01, 0x21, 0x99, 0x60,
+ 0x01, 0xbc, 0x00, 0x28, 0x00, 0xd0, 0x00, 0x47, 0x08, 0x48, 0x09, 0x49,
+ 0x08, 0x60, 0x03, 0xc8, 0x80, 0xf3, 0x08, 0x88, 0x08, 0x47, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0x3f, 0x00, 0x1d, 0x12, 0x00, 0x00,
+ 0xf4, 0x00, 0x00, 0x18, 0x1e, 0x10, 0x00, 0x20, 0x00, 0x01, 0x00, 0x10,
+ 0x08, 0xed, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x7c, 0x81, 0x53, 0x9a
+};
+
+#elif defined(RP2040_FLASH_IS25LP080)
+
+uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = {
+ 0x00, 0xb5, 0x2b, 0x4b, 0x00, 0x21, 0x99, 0x60, 0x04, 0x21, 0x59, 0x61,
+ 0x29, 0x49, 0x19, 0x60, 0x01, 0x21, 0x99, 0x60, 0x28, 0x48, 0x00, 0xf0,
+ 0x42, 0xf8, 0x28, 0x4a, 0x90, 0x42, 0x12, 0xd0, 0x06, 0x21, 0x19, 0x66,
+ 0x00, 0xf0, 0x32, 0xf8, 0x19, 0x6e, 0x01, 0x21, 0x19, 0x66, 0x00, 0x20,
+ 0x1a, 0x66, 0x00, 0xf0, 0x2b, 0xf8, 0x19, 0x6e, 0x19, 0x6e, 0x1f, 0x48,
+ 0x00, 0xf0, 0x2f, 0xf8, 0x01, 0x21, 0x08, 0x42, 0xf9, 0xd1, 0x00, 0x21,
+ 0x99, 0x60, 0x1d, 0x49, 0x19, 0x60, 0x00, 0x21, 0x59, 0x60, 0x1c, 0x49,
+ 0x1c, 0x48, 0x01, 0x60, 0x01, 0x21, 0x99, 0x60, 0xeb, 0x21, 0x19, 0x66,
+ 0xa0, 0x21, 0x19, 0x66, 0x00, 0xf0, 0x12, 0xf8, 0x00, 0x21, 0x99, 0x60,
+ 0x17, 0x49, 0x16, 0x48, 0x01, 0x60, 0x01, 0x21, 0x99, 0x60, 0x01, 0xbc,
+ 0x00, 0x28, 0x00, 0xd0, 0x00, 0x47, 0x14, 0x48, 0x14, 0x49, 0x08, 0x60,
+ 0x03, 0xc8, 0x80, 0xf3, 0x08, 0x88, 0x08, 0x47, 0x03, 0xb5, 0x99, 0x6a,
+ 0x04, 0x20, 0x01, 0x42, 0xfb, 0xd0, 0x01, 0x20, 0x01, 0x42, 0xf8, 0xd1,
+ 0x03, 0xbd, 0x02, 0xb5, 0x18, 0x66, 0x18, 0x66, 0xff, 0xf7, 0xf2, 0xff,
+ 0x18, 0x6e, 0x18, 0x6e, 0x02, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+ 0x00, 0x00, 0x07, 0x00, 0x05, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x5f, 0x00, 0x21, 0x22, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x18,
+ 0x22, 0x20, 0x00, 0xa0, 0x00, 0x01, 0x00, 0x10, 0x08, 0xed, 0x00, 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,
+ 0x28, 0x33, 0x43, 0xb2
+};
+
+#elif defined(RP2040_FLASH_GENERIC_03H)
+
+uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = {
+ 0x00, 0xb5, 0x0c, 0x4b, 0x00, 0x21, 0x99, 0x60, 0x04, 0x21, 0x59, 0x61,
+ 0x0a, 0x49, 0x19, 0x60, 0x0a, 0x49, 0x0b, 0x48, 0x01, 0x60, 0x00, 0x21,
+ 0x59, 0x60, 0x01, 0x21, 0x99, 0x60, 0x01, 0xbc, 0x00, 0x28, 0x00, 0xd0,
+ 0x00, 0x47, 0x07, 0x48, 0x07, 0x49, 0x08, 0x60, 0x03, 0xc8, 0x80, 0xf3,
+ 0x08, 0x88, 0x08, 0x47, 0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0x1f, 0x00,
+ 0x18, 0x02, 0x00, 0x03, 0xf4, 0x00, 0x00, 0x18, 0x00, 0x01, 0x00, 0x10,
+ 0x08, 0xed, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x2c, 0xec, 0x21, 0x0d
+};
+
+#else
+
+uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = {
+ 0x00, 0xb5, 0x32, 0x4b, 0x21, 0x20, 0x58, 0x60, 0x98, 0x68, 0x02, 0x21,
+ 0x88, 0x43, 0x98, 0x60, 0xd8, 0x60, 0x18, 0x61, 0x58, 0x61, 0x2e, 0x4b,
+ 0x00, 0x21, 0x99, 0x60, 0x04, 0x21, 0x59, 0x61, 0x01, 0x21, 0xf0, 0x22,
+ 0x99, 0x50, 0x2b, 0x49, 0x19, 0x60, 0x01, 0x21, 0x99, 0x60, 0x35, 0x20,
+ 0x00, 0xf0, 0x44, 0xf8, 0x02, 0x22, 0x90, 0x42, 0x14, 0xd0, 0x06, 0x21,
+ 0x19, 0x66, 0x00, 0xf0, 0x34, 0xf8, 0x19, 0x6e, 0x01, 0x21, 0x19, 0x66,
+ 0x00, 0x20, 0x18, 0x66, 0x1a, 0x66, 0x00, 0xf0, 0x2c, 0xf8, 0x19, 0x6e,
+ 0x19, 0x6e, 0x19, 0x6e, 0x05, 0x20, 0x00, 0xf0, 0x2f, 0xf8, 0x01, 0x21,
+ 0x08, 0x42, 0xf9, 0xd1, 0x00, 0x21, 0x99, 0x60, 0x1b, 0x49, 0x19, 0x60,
+ 0x00, 0x21, 0x59, 0x60, 0x1a, 0x49, 0x1b, 0x48, 0x01, 0x60, 0x01, 0x21,
+ 0x99, 0x60, 0xeb, 0x21, 0x19, 0x66, 0xa0, 0x21, 0x19, 0x66, 0x00, 0xf0,
+ 0x12, 0xf8, 0x00, 0x21, 0x99, 0x60, 0x16, 0x49, 0x14, 0x48, 0x01, 0x60,
+ 0x01, 0x21, 0x99, 0x60, 0x01, 0xbc, 0x00, 0x28, 0x00, 0xd0, 0x00, 0x47,
+ 0x12, 0x48, 0x13, 0x49, 0x08, 0x60, 0x03, 0xc8, 0x80, 0xf3, 0x08, 0x88,
+ 0x08, 0x47, 0x03, 0xb5, 0x99, 0x6a, 0x04, 0x20, 0x01, 0x42, 0xfb, 0xd0,
+ 0x01, 0x20, 0x01, 0x42, 0xf8, 0xd1, 0x03, 0xbd, 0x02, 0xb5, 0x18, 0x66,
+ 0x18, 0x66, 0xff, 0xf7, 0xf2, 0xff, 0x18, 0x6e, 0x18, 0x6e, 0x02, 0xbd,
+ 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00,
+ 0x00, 0x03, 0x5f, 0x00, 0x21, 0x22, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x18,
+ 0x22, 0x20, 0x00, 0xa0, 0x00, 0x01, 0x00, 0x10, 0x08, 0xed, 0x00, 0xe0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x0b, 0x8f, 0xd5
+};
+
+#endif
+
+// clang-format on
diff --git a/platforms/eeprom.h b/platforms/eeprom.h
index 091e6e4400..8cb7e342dc 100644
--- a/platforms/eeprom.h
+++ b/platforms/eeprom.h
@@ -27,6 +27,8 @@ void eeprom_update_block(const void *__src, void *__dst, size_t __n);
# error EEPROM_SIZE has not been defined for custom driver.
# endif
# define TOTAL_EEPROM_BYTE_COUNT (EEPROM_SIZE)
+#elif defined(EEPROM_WEAR_LEVELING)
+# define TOTAL_EEPROM_BYTE_COUNT (WEAR_LEVELING_LOGICAL_SIZE)
#elif defined(EEPROM_TRANSIENT)
# include "eeprom_transient.h"
# define TOTAL_EEPROM_BYTE_COUNT (TRANSIENT_EEPROM_SIZE)
diff --git a/platforms/synchronization_util.h b/platforms/synchronization_util.h
index 3730f271db..59933945c3 100644
--- a/platforms/synchronization_util.h
+++ b/platforms/synchronization_util.h
@@ -9,6 +9,40 @@ void split_shared_memory_lock(void);
void split_shared_memory_unlock(void);
# endif
#else
+# if defined(SPLIT_KEYBOARD)
inline void split_shared_memory_lock(void){};
inline void split_shared_memory_unlock(void){};
+# endif
+#endif
+
+/* GCCs cleanup attribute expects a function with one parameter, which is a
+ * pointer to a type compatible with the variable. As we don't want to expose
+ * the platforms internal mutex type this workaround with auto generated adapter
+ * function is defined */
+#define QMK_DECLARE_AUTOUNLOCK_HELPERS(prefix) \
+ inline unsigned prefix##_autounlock_lock_helper(void) { \
+ prefix##_lock(); \
+ return 0; \
+ } \
+ \
+ inline void prefix##_autounlock_unlock_helper(unsigned* unused_guard) { \
+ prefix##_unlock(); \
+ }
+
+/* Convinience macro the automatically generate the correct RAII-style
+ * lock_autounlock function macro */
+#define QMK_DECLARE_AUTOUNLOCK_CALL(prefix) unsigned prefix##_guard __attribute__((unused, cleanup(prefix##_autounlock_unlock_helper))) = prefix##_autounlock_lock_helper
+
+#if defined(SPLIT_KEYBOARD)
+QMK_DECLARE_AUTOUNLOCK_HELPERS(split_shared_memory)
+
+/**
+ * @brief Acquire exclusive access to the split keyboard shared memory, by
+ * calling the platforms `split_shared_memory_lock()` function. The lock is
+ * automatically released by calling the platforms `split_shared_memory_unlock()`
+ * function. This happens when the block where
+ * `split_shared_memory_lock_autounlock()` is called in goes out of scope i.e.
+ * when the enclosing function returns.
+ */
+# define split_shared_memory_lock_autounlock QMK_DECLARE_AUTOUNLOCK_CALL(split_shared_memory)
#endif
diff --git a/platforms/test/platform.mk b/platforms/test/platform.mk
index eb2424ec5c..f07c863e69 100644
--- a/platforms/test/platform.mk
+++ b/platforms/test/platform.mk
@@ -31,4 +31,4 @@ CFLAGS += -fno-strict-aliasing
CXXFLAGS += $(COMPILEFLAGS)
CXXFLAGS += -fno-exceptions
-CXXFLAGS += -std=gnu++11
+CXXFLAGS += $(CXXSTANDARD)
diff --git a/platforms/test/rules.mk b/platforms/test/rules.mk
index 55512c7392..a2baa283d0 100644
--- a/platforms/test/rules.mk
+++ b/platforms/test/rules.mk
@@ -11,7 +11,8 @@ eeprom_stm32_large_DEFS := $(eeprom_stm32_DEFS) \
-DFEE_PAGE_COUNT=16
eeprom_stm32_INC := \
- $(PLATFORM_PATH)/chibios/
+ $(PLATFORM_PATH)/chibios/drivers/eeprom/ \
+ $(PLATFORM_PATH)/chibios/drivers/flash/
eeprom_stm32_tiny_INC := $(eeprom_stm32_INC)
eeprom_stm32_large_INC := $(eeprom_stm32_INC)
@@ -19,6 +20,6 @@ eeprom_stm32_SRC := \
$(TOP_DIR)/drivers/eeprom/eeprom_driver.c \
$(PLATFORM_PATH)/$(PLATFORM_KEY)/eeprom_stm32_tests.cpp \
$(PLATFORM_PATH)/$(PLATFORM_KEY)/flash_stm32_mock.c \
- $(PLATFORM_PATH)/chibios/eeprom_stm32.c
+ $(PLATFORM_PATH)/chibios/drivers/eeprom/eeprom_stm32.c
eeprom_stm32_tiny_SRC := $(eeprom_stm32_SRC)
eeprom_stm32_large_SRC := $(eeprom_stm32_SRC)
diff --git a/quantum/action.c b/quantum/action.c
index 4e81a5466f..6b2e9104e0 100644
--- a/quantum/action.c
+++ b/quantum/action.c
@@ -844,7 +844,7 @@ __attribute__((weak)) void register_code(uint8_t code) {
# endif
add_key(KC_CAPS_LOCK);
send_keyboard_report();
- wait_ms(100);
+ wait_ms(TAP_HOLD_CAPS_DELAY);
del_key(KC_CAPS_LOCK);
send_keyboard_report();
}
@@ -1089,16 +1089,11 @@ void clear_keyboard_but_mods_and_keys() {
*
* FIXME: Needs documentation.
*/
-bool is_tap_key(keypos_t key) {
- action_t action = layer_switch_get_action(key);
- return is_tap_action(action);
-}
-
-/** \brief Utilities for actions. (FIXME: Needs better description)
- *
- * FIXME: Needs documentation.
- */
bool is_tap_record(keyrecord_t *record) {
+ if (IS_NOEVENT(record->event)) {
+ return false;
+ }
+
#ifdef COMBO_ENABLE
action_t action;
if (record->keycode) {
diff --git a/quantum/action.h b/quantum/action.h
index 08e1f6ac29..2bc46429b2 100644
--- a/quantum/action.h
+++ b/quantum/action.h
@@ -105,7 +105,6 @@ void clear_keyboard(void);
void clear_keyboard_but_mods(void);
void clear_keyboard_but_mods_and_keys(void);
void layer_switch(uint8_t new_layer);
-bool is_tap_key(keypos_t key);
bool is_tap_record(keyrecord_t *record);
bool is_tap_action(action_t action);
diff --git a/quantum/action_code.h b/quantum/action_code.h
index 20b3e459d2..e107f0a740 100644
--- a/quantum/action_code.h
+++ b/quantum/action_code.h
@@ -234,6 +234,7 @@ enum layer_param_tap_op {
#define ACTION_LAYER_INVERT(layer, on) ACTION_LAYER_BIT_XOR((layer) / 4, 1 << ((layer) % 4), (on))
#define ACTION_LAYER_ON(layer, on) ACTION_LAYER_BIT_OR((layer) / 4, 1 << ((layer) % 4), (on))
#define ACTION_LAYER_OFF(layer, on) ACTION_LAYER_BIT_AND((layer) / 4, ~(1 << ((layer) % 4)), (on))
+#define ACTION_LAYER_GOTO(layer) ACTION_LAYER_SET(layer, ON_PRESS)
#define ACTION_LAYER_SET(layer, on) ACTION_LAYER_BIT_SET((layer) / 4, 1 << ((layer) % 4), (on))
#define ACTION_LAYER_ON_OFF(layer) ACTION_LAYER_TAP((layer), OP_ON_OFF)
#define ACTION_LAYER_OFF_ON(layer) ACTION_LAYER_TAP((layer), OP_OFF_ON)
diff --git a/quantum/action_layer.h b/quantum/action_layer.h
index b87d096eed..bd1085a70f 100644
--- a/quantum/action_layer.h
+++ b/quantum/action_layer.h
@@ -41,7 +41,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#endif
#if !defined(LAYER_STATE_8BIT) && !defined(LAYER_STATE_16BIT) && !defined(LAYER_STATE_32BIT)
-# define LAYER_STATE_32BIT
+# define LAYER_STATE_16BIT
#endif
#if defined(LAYER_STATE_8BIT)
diff --git a/quantum/action_tapping.c b/quantum/action_tapping.c
index 3c8b5678b7..df3317ac05 100644
--- a/quantum/action_tapping.c
+++ b/quantum/action_tapping.c
@@ -125,7 +125,7 @@ void action_tapping_process(keyrecord_t record) {
/* return true when key event is processed or consumed. */
bool process_tapping(keyrecord_t *keyp) {
keyevent_t event = keyp->event;
-# if (defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT)) || defined(TAPPING_TERM_PER_KEY) || defined(PERMISSIVE_HOLD_PER_KEY) || defined(TAPPING_FORCE_HOLD_PER_KEY) || defined(HOLD_ON_OTHER_KEY_PRESS_PER_KEY)
+# if (defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT)) || defined(PERMISSIVE_HOLD_PER_KEY) || defined(TAPPING_FORCE_HOLD_PER_KEY) || defined(HOLD_ON_OTHER_KEY_PRESS_PER_KEY)
uint16_t tapping_keycode = get_record_keycode(&tapping_key, false);
# endif
@@ -164,17 +164,15 @@ bool process_tapping(keyrecord_t *keyp) {
* useful for long TAPPING_TERM but may prevent fast typing.
*/
// clang-format off
-# if defined(TAPPING_TERM_PER_KEY) || (TAPPING_TERM >= 500) || defined(PERMISSIVE_HOLD) || defined(PERMISSIVE_HOLD_PER_KEY) || (defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT))
+# if defined(PERMISSIVE_HOLD) || defined(PERMISSIVE_HOLD_PER_KEY) || (defined(AUTO_SHIFT_ENABLE) && defined(RETRO_SHIFT))
else if (
(
- (
- GET_TAPPING_TERM(tapping_keycode, &tapping_key) >= 500
+ IS_RELEASED(event) && waiting_buffer_typed(event)
# ifdef PERMISSIVE_HOLD_PER_KEY
- || get_permissive_hold(tapping_keycode, &tapping_key)
+ && get_permissive_hold(tapping_keycode, &tapping_key)
# elif defined(PERMISSIVE_HOLD)
- || true
+ && true
# endif
- ) && IS_RELEASED(event) && waiting_buffer_typed(event)
)
// Causes nested taps to not wait past TAPPING_TERM/RETRO_SHIFT
// unnecessarily and fixes them for Layer Taps.
diff --git a/quantum/audio/song_list.h b/quantum/audio/song_list.h
index 3e425abb47..ff22e6fe95 100644
--- a/quantum/audio/song_list.h
+++ b/quantum/audio/song_list.h
@@ -144,6 +144,12 @@
*/
#define USSR_ANTHEM B__NOTE(_G6), B__NOTE(_C7), W__NOTE(_G6), H__NOTE(_A6), B__NOTE(_B6), W__NOTE(_E6), W__NOTE(_E6), B__NOTE(_A6), W__NOTE(_G6), H__NOTE(_F6), B__NOTE(_G6), W__NOTE(_C6), W__NOTE(_C6), B__NOTE(_D6), W__NOTE(_D6), W__NOTE(_E6), B__NOTE(_D6), W__NOTE(_D6), W__NOTE(_G6), B__NOTE(_F6), W__NOTE(_G6), W__NOTE(_A6), B__NOTE(_B6),
+/* Title: Hymn Risen
+ * Author/Composer: Terrance Andrew Davis
+ * License: Public Domain
+ */
+#define TOS_HYMN_RISEN H__NOTE(_D5), H__NOTE(_E5), HD_NOTE(_F5), HD_NOTE(_F5), H__NOTE(_F5), HD_NOTE(_D5), E__NOTE(_E5), E__NOTE(_E5), H__NOTE(_C5), Q__NOTE(_D5), Q__NOTE(_D5), H__NOTE(_E5), H__NOTE(_C5), Q__NOTE(_G5), Q__NOTE(_F5), H__NOTE(_D5), H__NOTE(_E5), HD_NOTE(_F5), HD_NOTE(_F5), H__NOTE(_F5), HD_NOTE(_D5), E__NOTE(_E5), E__NOTE(_E5), H__NOTE(_C5), Q__NOTE(_D5), Q__NOTE(_D5), H__NOTE(_E5), H__NOTE(_C5), Q__NOTE(_G5), Q__NOTE(_F5), H__NOTE(_D5), H__NOTE(_C5), W__NOTE(_D5), W__NOTE(_E5), Q__NOTE(_A4), H__NOTE(_A4), Q__NOTE(_E5), Q__NOTE(_E5), Q__NOTE(_F5), Q__NOTE(_E5), Q__NOTE(_D5), Q__NOTE(_G5), Q__NOTE(_B4), Q__NOTE(_D5), Q__NOTE(_C5), M__NOTE(_F5, 80), H__NOTE(_D5), H__NOTE(_C5), W__NOTE(_D5), W__NOTE(_E5), Q__NOTE(_A4), H__NOTE(_A4), Q__NOTE(_E5), Q__NOTE(_E5), Q__NOTE(_F5), Q__NOTE(_E5), Q__NOTE(_D5), Q__NOTE(_G5), Q__NOTE(_B4), Q__NOTE(_D5), Q__NOTE(_C5), M__NOTE(_F5, 80)
+
/* Removed sounds
+ This list is here solely for compatibility, so that removed songs don't just break things
* If you think that any of these songs were wrongfully removed, let us know and provide
diff --git a/quantum/command.c b/quantum/command.c
index f90d73207c..84757b9b01 100644
--- a/quantum/command.c
+++ b/quantum/command.c
@@ -161,7 +161,7 @@ static void command_common_help(void) {
}
static void print_version(void) {
- print(/* clang-format off */
+ xprintf("%s", /* clang-format off */
"\n\t- Version -\n"
"VID: " STR(VENDOR_ID) "(" STR(MANUFACTURER) ") "
"PID: " STR(PRODUCT_ID) "(" STR(PRODUCT) ") "
@@ -282,6 +282,7 @@ static void print_eeconfig(void) {
".swap_grave_esc: %u\n"
".swap_backslash_backspace: %u\n"
".nkro: %u\n"
+ ".swap_escape_capslock: %u\n"
, kc.raw
, kc.swap_control_capslock
@@ -294,6 +295,7 @@ static void print_eeconfig(void) {
, kc.swap_grave_esc
, kc.swap_backslash_backspace
, kc.nkro
+ , kc.swap_escape_capslock
); /* clang-format on */
# ifdef BACKLIGHT_ENABLE
diff --git a/quantum/command.h b/quantum/command.h
index 676507d3bd..a63f9ec7a7 100644
--- a/quantum/command.h
+++ b/quantum/command.h
@@ -146,7 +146,7 @@ bool command_proc(uint8_t code);
#endif
#ifndef MAGIC_KEY_EEPROM_CLEAR
-# define MAGIC_KEY_EEPROM_CLEAR BSPACE
+# define MAGIC_KEY_EEPROM_CLEAR BACKSPACE
#endif
#ifndef MAGIC_KEY_NKRO
diff --git a/quantum/debounce.h b/quantum/debounce.h
index 3532d9cd7b..a8629654c2 100644
--- a/quantum/debounce.h
+++ b/quantum/debounce.h
@@ -1,10 +1,16 @@
#pragma once
-// raw is the current key state
-// on entry cooked is the previous debounced state
-// on exit cooked is the current debounced state
-// changed is true if raw has changed since the last call
-void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed);
+/**
+ * @brief Debounce raw matrix events according to the choosen debounce algorithm.
+ *
+ * @param raw The current key state
+ * @param cooked The debounced key state
+ * @param num_rows Number of rows to debounce
+ * @param changed True if raw has changed since the last call
+ * @return true Cooked has new keychanges after debouncing
+ * @return false Cooked is the same as before
+ */
+bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed);
void debounce_init(uint8_t num_rows);
diff --git a/quantum/debounce/asym_eager_defer_pk.c b/quantum/debounce/asym_eager_defer_pk.c
index b1eb4a2b7b..4745c6f465 100644
--- a/quantum/debounce/asym_eager_defer_pk.c
+++ b/quantum/debounce/asym_eager_defer_pk.c
@@ -55,6 +55,7 @@ static debounce_counter_t *debounce_counters;
static fast_timer_t last_time;
static bool counters_need_update;
static bool matrix_need_update;
+static bool cooked_changed;
# define DEBOUNCE_ELAPSED 0
@@ -77,8 +78,9 @@ void debounce_free(void) {
debounce_counters = NULL;
}
-void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
+bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
bool updated_last = false;
+ cooked_changed = false;
if (counters_need_update) {
fast_timer_t now = timer_read_fast();
@@ -102,6 +104,8 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool
transfer_matrix_values(raw, cooked, num_rows);
}
+
+ return cooked_changed;
}
static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t elapsed_time) {
@@ -123,7 +127,9 @@ static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[],
matrix_need_update = true;
} else {
// key-up: defer
- cooked[row] = (cooked[row] & ~col_mask) | (raw[row] & col_mask);
+ matrix_row_t cooked_next = (cooked[row] & ~col_mask) | (raw[row] & col_mask);
+ cooked_changed |= cooked_next ^ cooked[row];
+ cooked[row] = cooked_next;
}
} else {
debounce_pointer->time -= elapsed_time;
@@ -152,6 +158,7 @@ static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], ui
if (debounce_pointer->pressed) {
// key-down: eager
cooked[row] ^= col_mask;
+ cooked_changed = true;
}
}
} else if (debounce_pointer->time != DEBOUNCE_ELAPSED) {
diff --git a/quantum/debounce/none.c b/quantum/debounce/none.c
index 8a85cc04a8..4cff5e05e2 100644
--- a/quantum/debounce/none.c
+++ b/quantum/debounce/none.c
@@ -17,13 +17,16 @@
#include "matrix.h"
#include "quantum.h"
#include <stdlib.h>
+#include <string.h>
void debounce_init(uint8_t num_rows) {}
-void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
- for (int i = 0; i < num_rows; i++) {
- cooked[i] = raw[i];
- }
+bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
+ bool cooked_changed = memcmp(raw, cooked, sizeof(matrix_row_t) * num_rows) != 0;
+
+ memcpy(cooked, raw, sizeof(matrix_row_t) * num_rows);
+
+ return cooked_changed;
}
void debounce_free(void) {}
diff --git a/quantum/debounce/sym_defer_g.c b/quantum/debounce/sym_defer_g.c
index 47450992a4..d04310a761 100644
--- a/quantum/debounce/sym_defer_g.c
+++ b/quantum/debounce/sym_defer_g.c
@@ -20,6 +20,7 @@ When no state changes have occured for DEBOUNCE milliseconds, we push the state.
#include "matrix.h"
#include "timer.h"
#include "quantum.h"
+#include <string.h>
#ifndef DEBOUNCE
# define DEBOUNCE 5
#endif
@@ -30,18 +31,23 @@ static fast_timer_t debouncing_time;
void debounce_init(uint8_t num_rows) {}
-void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
+bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
+ bool cooked_changed = false;
+
if (changed) {
debouncing = true;
debouncing_time = timer_read_fast();
}
if (debouncing && timer_elapsed_fast(debouncing_time) >= DEBOUNCE) {
- for (int i = 0; i < num_rows; i++) {
- cooked[i] = raw[i];
+ if (memcmp(cooked, raw, sizeof(matrix_row_t) * num_rows) != 0) {
+ memcpy(cooked, raw, sizeof(matrix_row_t) * num_rows);
+ cooked_changed = true;
}
debouncing = false;
}
+
+ return cooked_changed;
}
void debounce_free(void) {}
diff --git a/quantum/debounce/sym_defer_pk.c b/quantum/debounce/sym_defer_pk.c
index 9dee29e28e..7b59b5e100 100644
--- a/quantum/debounce/sym_defer_pk.c
+++ b/quantum/debounce/sym_defer_pk.c
@@ -48,6 +48,7 @@ typedef uint8_t debounce_counter_t;
static debounce_counter_t *debounce_counters;
static fast_timer_t last_time;
static bool counters_need_update;
+static bool cooked_changed;
# define DEBOUNCE_ELAPSED 0
@@ -70,8 +71,9 @@ void debounce_free(void) {
debounce_counters = NULL;
}
-void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
+bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
bool updated_last = false;
+ cooked_changed = false;
if (counters_need_update) {
fast_timer_t now = timer_read_fast();
@@ -95,6 +97,8 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool
start_debounce_counters(raw, cooked, num_rows);
}
+
+ return cooked_changed;
}
static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t elapsed_time) {
@@ -104,8 +108,10 @@ static void update_debounce_counters_and_transfer_if_expired(matrix_row_t raw[],
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
if (*debounce_pointer != DEBOUNCE_ELAPSED) {
if (*debounce_pointer <= elapsed_time) {
- *debounce_pointer = DEBOUNCE_ELAPSED;
- cooked[row] = (cooked[row] & ~(ROW_SHIFTER << col)) | (raw[row] & (ROW_SHIFTER << col));
+ *debounce_pointer = DEBOUNCE_ELAPSED;
+ matrix_row_t cooked_next = (cooked[row] & ~(ROW_SHIFTER << col)) | (raw[row] & (ROW_SHIFTER << col));
+ cooked_changed |= cooked[row] ^ cooked_next;
+ cooked[row] = cooked_next;
} else {
*debounce_pointer -= elapsed_time;
counters_need_update = true;
diff --git a/quantum/debounce/sym_defer_pr.c b/quantum/debounce/sym_defer_pr.c
index ce24f0922f..452c4599d0 100644
--- a/quantum/debounce/sym_defer_pr.c
+++ b/quantum/debounce/sym_defer_pr.c
@@ -46,11 +46,12 @@ void debounce_free(void) {
last_raw = NULL;
}
-void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
- uint16_t now = timer_read();
- uint16_t elapsed16 = TIMER_DIFF_16(now, last_time);
- last_time = now;
- uint8_t elapsed = (elapsed16 > 255) ? 255 : elapsed16;
+bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
+ uint16_t now = timer_read();
+ uint16_t elapsed16 = TIMER_DIFF_16(now, last_time);
+ last_time = now;
+ uint8_t elapsed = (elapsed16 > 255) ? 255 : elapsed16;
+ bool cooked_changed = false;
uint8_t* countdown = countdowns;
@@ -63,10 +64,13 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool
} else if (*countdown > elapsed) {
*countdown -= elapsed;
} else if (*countdown) {
+ cooked_changed |= cooked[row] ^ raw_row;
cooked[row] = raw_row;
*countdown = 0;
}
}
+
+ return cooked_changed;
}
bool debounce_active(void) {
diff --git a/quantum/debounce/sym_eager_pk.c b/quantum/debounce/sym_eager_pk.c
index fe3e88bb06..f736d1645c 100644
--- a/quantum/debounce/sym_eager_pk.c
+++ b/quantum/debounce/sym_eager_pk.c
@@ -49,6 +49,7 @@ static debounce_counter_t *debounce_counters;
static fast_timer_t last_time;
static bool counters_need_update;
static bool matrix_need_update;
+static bool cooked_changed;
# define DEBOUNCE_ELAPSED 0
@@ -71,8 +72,9 @@ void debounce_free(void) {
debounce_counters = NULL;
}
-void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
+bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
bool updated_last = false;
+ cooked_changed = false;
if (counters_need_update) {
fast_timer_t now = timer_read_fast();
@@ -96,6 +98,8 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool
transfer_matrix_values(raw, cooked, num_rows);
}
+
+ return cooked_changed;
}
// If the current time is > debounce counter, set the counter to enable input.
@@ -132,6 +136,7 @@ static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], ui
*debounce_pointer = DEBOUNCE;
counters_need_update = true;
existing_row ^= col_mask; // flip the bit.
+ cooked_changed = true;
}
}
debounce_pointer++;
diff --git a/quantum/debounce/sym_eager_pr.c b/quantum/debounce/sym_eager_pr.c
index 29b0cabefb..aad5ca351b 100644
--- a/quantum/debounce/sym_eager_pr.c
+++ b/quantum/debounce/sym_eager_pr.c
@@ -48,6 +48,7 @@ static bool matrix_need_update;
static debounce_counter_t *debounce_counters;
static fast_timer_t last_time;
static bool counters_need_update;
+static bool cooked_changed;
# define DEBOUNCE_ELAPSED 0
@@ -67,8 +68,9 @@ void debounce_free(void) {
debounce_counters = NULL;
}
-void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
+bool debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {
bool updated_last = false;
+ cooked_changed = false;
if (counters_need_update) {
fast_timer_t now = timer_read_fast();
@@ -92,6 +94,8 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool
transfer_matrix_values(raw, cooked, num_rows);
}
+
+ return cooked_changed;
}
// If the current time is > debounce counter, set the counter to enable input.
@@ -123,8 +127,9 @@ static void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], ui
// determine new value basd on debounce pointer + raw value
if (existing_row != raw_row) {
if (*debounce_pointer == DEBOUNCE_ELAPSED) {
- *debounce_pointer = DEBOUNCE;
- cooked[row] = raw_row;
+ *debounce_pointer = DEBOUNCE;
+ cooked[row] = raw_row;
+ cooked_changed |= cooked[row] ^ raw[row];
counters_need_update = true;
}
}
diff --git a/quantum/debounce/tests/debounce_test_common.cpp b/quantum/debounce/tests/debounce_test_common.cpp
index 0d5a7bb766..bd98e32955 100644
--- a/quantum/debounce/tests/debounce_test_common.cpp
+++ b/quantum/debounce/tests/debounce_test_common.cpp
@@ -125,11 +125,15 @@ void DebounceTest::runDebounce(bool changed) {
std::copy(std::begin(input_matrix_), std::end(input_matrix_), std::begin(raw_matrix_));
std::copy(std::begin(output_matrix_), std::end(output_matrix_), std::begin(cooked_matrix_));
- debounce(raw_matrix_, cooked_matrix_, MATRIX_ROWS, changed);
+ bool cooked_changed = debounce(raw_matrix_, cooked_matrix_, MATRIX_ROWS, changed);
if (!std::equal(std::begin(input_matrix_), std::end(input_matrix_), std::begin(raw_matrix_))) {
FAIL() << "Fatal error: debounce() modified raw matrix at " << strTime() << "\ninput_matrix: changed=" << changed << "\n" << strMatrix(input_matrix_) << "\nraw_matrix:\n" << strMatrix(raw_matrix_);
}
+
+ if (std::equal(std::begin(output_matrix_), std::end(output_matrix_), std::begin(cooked_matrix_)) && cooked_changed) {
+ FAIL() << "Fatal error: debounce() did detect a wrong cooked matrix change at " << strTime() << "\noutput_matrix: cooked_changed=" << cooked_changed << "\n" << strMatrix(output_matrix_) << "\ncooked_matrix:\n" << strMatrix(cooked_matrix_);
+ }
}
void DebounceTest::checkCookedMatrix(bool changed, const std::string &error_message) {
diff --git a/quantum/dynamic_keymap.c b/quantum/dynamic_keymap.c
index fc1c55784d..01be9806e4 100644
--- a/quantum/dynamic_keymap.c
+++ b/quantum/dynamic_keymap.c
@@ -19,7 +19,13 @@
#include "progmem.h" // to read default from flash
#include "quantum.h" // for send_string()
#include "dynamic_keymap.h"
-#include "via.h" // for default VIA_EEPROM_ADDR_END
+
+#ifdef VIA_ENABLE
+# include "via.h" // for VIA_EEPROM_CONFIG_END
+# define DYNAMIC_KEYMAP_EEPROM_START (VIA_EEPROM_CONFIG_END)
+#else
+# define DYNAMIC_KEYMAP_EEPROM_START (EECONFIG_SIZE)
+#endif
#ifdef ENCODER_ENABLE
# include "encoder.h"
@@ -55,13 +61,8 @@
#endif
// If DYNAMIC_KEYMAP_EEPROM_ADDR not explicitly defined in config.h,
-// default it start after VIA_EEPROM_CUSTOM_ADDR+VIA_EEPROM_CUSTOM_SIZE
#ifndef DYNAMIC_KEYMAP_EEPROM_ADDR
-# ifdef VIA_EEPROM_CUSTOM_CONFIG_ADDR
-# define DYNAMIC_KEYMAP_EEPROM_ADDR (VIA_EEPROM_CUSTOM_CONFIG_ADDR + VIA_EEPROM_CUSTOM_CONFIG_SIZE)
-# else
-# error DYNAMIC_KEYMAP_EEPROM_ADDR not defined
-# endif
+# define DYNAMIC_KEYMAP_EEPROM_ADDR DYNAMIC_KEYMAP_EEPROM_START
#endif
// Dynamic encoders starts after dynamic keymaps
@@ -93,6 +94,10 @@ _Static_assert((DYNAMIC_KEYMAP_EEPROM_MAX_ADDR) - (DYNAMIC_KEYMAP_MACRO_EEPROM_A
# define DYNAMIC_KEYMAP_MACRO_EEPROM_SIZE (DYNAMIC_KEYMAP_EEPROM_MAX_ADDR - DYNAMIC_KEYMAP_MACRO_EEPROM_ADDR + 1)
#endif
+#ifndef DYNAMIC_KEYMAP_MACRO_DELAY
+# define DYNAMIC_KEYMAP_MACRO_DELAY TAP_CODE_DELAY
+#endif
+
uint8_t dynamic_keymap_get_layer_count(void) {
return DYNAMIC_KEYMAP_LAYER_COUNT;
}
@@ -144,18 +149,25 @@ void dynamic_keymap_set_encoder(uint8_t layer, uint8_t encoder_id, bool clockwis
void dynamic_keymap_reset(void) {
// Reset the keymaps in EEPROM to what is in flash.
- // All keyboards using dynamic keymaps should define a layout
- // for the same number of layers as DYNAMIC_KEYMAP_LAYER_COUNT.
for (int layer = 0; layer < DYNAMIC_KEYMAP_LAYER_COUNT; layer++) {
for (int row = 0; row < MATRIX_ROWS; row++) {
for (int column = 0; column < MATRIX_COLS; column++) {
- dynamic_keymap_set_keycode(layer, row, column, pgm_read_word(&keymaps[layer][row][column]));
+ if (layer < keymap_layer_count()) {
+ dynamic_keymap_set_keycode(layer, row, column, pgm_read_word(&keymaps[layer][row][column]));
+ } else {
+ dynamic_keymap_set_keycode(layer, row, column, KC_TRANSPARENT);
+ }
}
}
#ifdef ENCODER_MAP_ENABLE
for (int encoder = 0; encoder < NUM_ENCODERS; encoder++) {
- dynamic_keymap_set_encoder(layer, encoder, true, pgm_read_word(&encoder_map[layer][encoder][0]));
- dynamic_keymap_set_encoder(layer, encoder, false, pgm_read_word(&encoder_map[layer][encoder][1]));
+ if (layer < encodermap_layer_count()) {
+ dynamic_keymap_set_encoder(layer, encoder, true, pgm_read_word(&encoder_map[layer][encoder][0]));
+ dynamic_keymap_set_encoder(layer, encoder, false, pgm_read_word(&encoder_map[layer][encoder][1]));
+ } else {
+ dynamic_keymap_set_encoder(layer, encoder, true, KC_TRANSPARENT);
+ dynamic_keymap_set_encoder(layer, encoder, false, KC_TRANSPARENT);
+ }
}
#endif // ENCODER_MAP_ENABLE
}
@@ -300,6 +312,6 @@ void dynamic_keymap_macro_send(uint8_t id) {
break;
}
}
- send_string(data);
+ send_string_with_delay(data, DYNAMIC_KEYMAP_MACRO_DELAY);
}
}
diff --git a/quantum/encoder.c b/quantum/encoder.c
index 105bed0147..5f8a7ce080 100644
--- a/quantum/encoder.c
+++ b/quantum/encoder.c
@@ -163,27 +163,38 @@ static bool encoder_update(uint8_t index, uint8_t state) {
index += thisHand;
#endif
encoder_pulses[i] += encoder_LUT[state & 0xF];
+
+#ifdef ENCODER_DEFAULT_POS
+ if ((encoder_pulses[i] >= resolution) || (encoder_pulses[i] <= -resolution) || ((state & 0x3) == ENCODER_DEFAULT_POS)) {
+ if (encoder_pulses[i] >= 1) {
+#else
if (encoder_pulses[i] >= resolution) {
- encoder_value[index]++;
- changed = true;
+#endif
+
+ encoder_value[index]++;
+ changed = true;
#ifdef ENCODER_MAP_ENABLE
- encoder_exec_mapping(index, ENCODER_COUNTER_CLOCKWISE);
+ encoder_exec_mapping(index, ENCODER_COUNTER_CLOCKWISE);
#else // ENCODER_MAP_ENABLE
encoder_update_kb(index, ENCODER_COUNTER_CLOCKWISE);
#endif // ENCODER_MAP_ENABLE
- }
+ }
+
+#ifdef ENCODER_DEFAULT_POS
+ if (encoder_pulses[i] <= -1) {
+#else
if (encoder_pulses[i] <= -resolution) { // direction is arbitrary here, but this clockwise
- encoder_value[index]--;
- changed = true;
+#endif
+ encoder_value[index]--;
+ changed = true;
#ifdef ENCODER_MAP_ENABLE
- encoder_exec_mapping(index, ENCODER_CLOCKWISE);
+ encoder_exec_mapping(index, ENCODER_CLOCKWISE);
#else // ENCODER_MAP_ENABLE
encoder_update_kb(index, ENCODER_CLOCKWISE);
#endif // ENCODER_MAP_ENABLE
- }
- encoder_pulses[i] %= resolution;
+ }
+ encoder_pulses[i] %= resolution;
#ifdef ENCODER_DEFAULT_POS
- if ((state & 0x3) == ENCODER_DEFAULT_POS) {
encoder_pulses[i] = 0;
}
#endif
diff --git a/quantum/keyboard.c b/quantum/keyboard.c
index a65f9d6d18..1c62a43d9d 100644
--- a/quantum/keyboard.c
+++ b/quantum/keyboard.c
@@ -212,6 +212,12 @@ static inline bool has_ghost_in_row(uint8_t row, matrix_row_t rowdata) {
return false;
}
+#else
+
+static inline bool has_ghost_in_row(uint8_t row, matrix_row_t rowdata) {
+ return false;
+}
+
#endif
/** \brief matrix_setup
@@ -381,12 +387,9 @@ void keyboard_init(void) {
#ifdef ENCODER_ENABLE
encoder_init();
#endif
-#ifdef STENO_ENABLE
+#ifdef STENO_ENABLE_ALL
steno_init();
#endif
-#ifdef POINTING_DEVICE_ENABLE
- pointing_device_init();
-#endif
#if defined(NKRO_ENABLE) && defined(FORCE_NKRO)
keymap_config.nkro = 1;
eeconfig_update_keymap(keymap_config.raw);
@@ -403,6 +406,10 @@ void keyboard_init(void) {
#ifdef SPLIT_KEYBOARD
split_post_init();
#endif
+#ifdef POINTING_DEVICE_ENABLE
+ // init after split init
+ pointing_device_init();
+#endif
#if defined(DEBUG_MATRIX_SCAN_RATE) && defined(CONSOLE_ENABLE)
debug_enable = true;
@@ -425,64 +432,74 @@ void switch_events(uint8_t row, uint8_t col, bool pressed) {
#endif
}
-/** \brief Perform scan of keyboard matrix
+/**
+ * @brief Generates a tick event at a maximum rate of 1KHz that drives the
+ * internal QMK state machine.
+ */
+static inline void generate_tick_event(void) {
+ static uint16_t last_tick = 0;
+ const uint16_t now = timer_read();
+ if (TIMER_DIFF_16(now, last_tick) != 0) {
+ action_exec(TICK_EVENT);
+ last_tick = now;
+ }
+}
+
+/**
+ * @brief This task scans the keyboards matrix and processes any key presses
+ * that occur.
*
- * Any detected changes in state are sent out as part of the processing
+ * @return true Matrix did change
+ * @return false Matrix didn't change
*/
-bool matrix_scan_task(void) {
- static matrix_row_t matrix_prev[MATRIX_ROWS];
- matrix_row_t matrix_row = 0;
- matrix_row_t matrix_change = 0;
-#ifdef QMK_KEYS_PER_SCAN
- uint8_t keys_processed = 0;
-#endif
+static bool matrix_task(void) {
+ static matrix_row_t matrix_previous[MATRIX_ROWS];
- uint8_t matrix_changed = matrix_scan();
- if (matrix_changed) last_matrix_activity_trigger();
+ matrix_scan();
- for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
- matrix_row = matrix_get_row(r);
- matrix_change = matrix_row ^ matrix_prev[r];
- if (matrix_change) {
-#ifdef MATRIX_HAS_GHOST
- if (has_ghost_in_row(r, matrix_row)) {
- continue;
- }
-#endif
- if (debug_matrix) matrix_print();
- matrix_row_t col_mask = 1;
- for (uint8_t c = 0; c < MATRIX_COLS; c++, col_mask <<= 1) {
- if (matrix_change & col_mask) {
- if (should_process_keypress()) {
- action_exec((keyevent_t){
- .key = (keypos_t){.row = r, .col = c}, .pressed = (matrix_row & col_mask), .time = (timer_read() | 1) /* time should not be 0 */
- });
- }
- // record a processed key
- matrix_prev[r] ^= col_mask;
-
- switch_events(r, c, (matrix_row & col_mask));
-
-#ifdef QMK_KEYS_PER_SCAN
- // only jump out if we have processed "enough" keys.
- if (++keys_processed >= QMK_KEYS_PER_SCAN)
-#endif
- // process a key per task call
- goto MATRIX_LOOP_END;
+ bool matrix_changed = false;
+ for (uint8_t row = 0; row < MATRIX_ROWS && !matrix_changed; row++) {
+ matrix_changed |= matrix_previous[row] ^ matrix_get_row(row);
+ }
+
+ matrix_scan_perf_task();
+
+ // Short-circuit the complete matrix processing if it is not necessary
+ if (!matrix_changed) {
+ generate_tick_event();
+ return matrix_changed;
+ }
+
+ if (debug_config.matrix) {
+ matrix_print();
+ }
+
+ const bool process_keypress = should_process_keypress();
+
+ for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+ const matrix_row_t current_row = matrix_get_row(row);
+ const matrix_row_t row_changes = current_row ^ matrix_previous[row];
+
+ if (!row_changes || has_ghost_in_row(row, current_row)) {
+ continue;
+ }
+
+ matrix_row_t col_mask = 1;
+ for (uint8_t col = 0; col < MATRIX_COLS; col++, col_mask <<= 1) {
+ if (row_changes & col_mask) {
+ const bool key_pressed = current_row & col_mask;
+
+ if (process_keypress) {
+ action_exec(MAKE_KEYEVENT(row, col, key_pressed));
}
+
+ switch_events(row, col, key_pressed);
}
}
- }
- // call with pseudo tick event when no real key event.
-#ifdef QMK_KEYS_PER_SCAN
- // we can get here with some keys processed now.
- if (!keys_processed)
-#endif
- action_exec(TICK_EVENT);
-MATRIX_LOOP_END:
+ matrix_previous[row] = current_row;
+ }
- matrix_scan_perf_task();
return matrix_changed;
}
@@ -561,20 +578,12 @@ void quantum_task(void) {
#endif
}
-/** \brief Keyboard task: Do keyboard routine jobs
- *
- * Do routine keyboard jobs:
- *
- * * scan matrix
- * * handle mouse movements
- * * handle midi commands
- * * light LEDs
- *
- * This is repeatedly called as fast as possible.
- */
+/** \brief Main task that is repeatedly called as fast as possible. */
void keyboard_task(void) {
- bool matrix_changed = matrix_scan_task();
- (void)matrix_changed;
+ const bool matrix_changed = matrix_task();
+ if (matrix_changed) {
+ last_matrix_activity_trigger();
+ }
quantum_task();
@@ -596,8 +605,10 @@ void keyboard_task(void) {
#endif
#ifdef ENCODER_ENABLE
- bool encoders_changed = encoder_read();
- if (encoders_changed) last_encoder_activity_trigger();
+ const bool encoders_changed = encoder_read();
+ if (encoders_changed) {
+ last_encoder_activity_trigger();
+ }
#endif
#ifdef OLED_ENABLE
diff --git a/quantum/keyboard.h b/quantum/keyboard.h
index fe0736a515..86ce65aac1 100644
--- a/quantum/keyboard.h
+++ b/quantum/keyboard.h
@@ -71,9 +71,15 @@ static inline bool IS_RELEASED(keyevent_t event) {
/* Common keyevent object factory */
#define MAKE_KEYPOS(row_num, col_num) ((keypos_t){.row = (row_num), .col = (col_num)})
+
+/**
+ * @brief Constructs a key event for a pressed or released key.
+ */
#define MAKE_KEYEVENT(row_num, col_num, press) ((keyevent_t){.key = MAKE_KEYPOS((row_num), (col_num)), .pressed = (press), .time = (timer_read() | 1)})
-/* Tick event */
+/**
+ * @brief Constructs a internal tick event that is used to drive the internal QMK state machine.
+ */
#define TICK_EVENT MAKE_KEYEVENT(KEYLOC_TICK, KEYLOC_TICK, false)
#ifdef ENCODER_MAP_ENABLE
diff --git a/quantum/keycode_config.c b/quantum/keycode_config.c
index dd2a17e242..5b5cc5d28e 100644
--- a/quantum/keycode_config.c
+++ b/quantum/keycode_config.c
@@ -29,6 +29,8 @@ uint16_t keycode_config(uint16_t keycode) {
case KC_LOCKING_CAPS_LOCK:
if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) {
return KC_LEFT_CTRL;
+ } else if (keymap_config.swap_escape_capslock) {
+ return KC_ESCAPE;
}
return keycode;
case KC_LEFT_CTRL:
@@ -96,6 +98,8 @@ uint16_t keycode_config(uint16_t keycode) {
case KC_ESCAPE:
if (keymap_config.swap_grave_esc) {
return KC_GRAVE;
+ } else if (keymap_config.swap_escape_capslock) {
+ return KC_CAPS_LOCK;
}
return KC_ESCAPE;
case KC_BACKSLASH:
diff --git a/quantum/keycode_config.h b/quantum/keycode_config.h
index a2cb025ed2..81a8e61471 100644
--- a/quantum/keycode_config.h
+++ b/quantum/keycode_config.h
@@ -38,6 +38,7 @@ typedef union {
bool swap_lctl_lgui : 1;
bool swap_rctl_rgui : 1;
bool oneshot_enable : 1;
+ bool swap_escape_capslock : 1;
};
} keymap_config_t;
diff --git a/quantum/keymap.h b/quantum/keymap.h
index d64b271efb..edff484129 100644
--- a/quantum/keymap.h
+++ b/quantum/keymap.h
@@ -46,6 +46,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quantum_keycodes.h"
+// Gross hack, remove me and change RESET keycode to QK_BOOT
+#if defined(MCU_RP)
+# undef RESET
+#endif
+
// translates key to keycode
uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key);
@@ -55,3 +60,5 @@ extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
// Ensure we have a forward declaration for the encoder map
# include "encoder.h"
#endif
+
+#include "keymap_introspection.h"
diff --git a/quantum/keymap_common.c b/quantum/keymap_common.c
index c1940f0fd3..8d7a8bda9a 100644
--- a/quantum/keymap_common.c
+++ b/quantum/keymap_common.c
@@ -47,10 +47,9 @@ action_t action_for_keycode(uint16_t keycode) {
keycode = keycode_config(keycode);
action_t action = {};
- uint8_t action_layer, when, mod;
+ uint8_t action_layer, mod;
(void)action_layer;
- (void)when;
(void)mod;
switch (keycode) {
@@ -85,9 +84,8 @@ action_t action_for_keycode(uint16_t keycode) {
break;
case QK_TO ... QK_TO_MAX:;
// Layer set "GOTO"
- when = (keycode >> 0x4) & 0x3;
- action_layer = keycode & 0xF;
- action.code = ACTION_LAYER_SET(action_layer, when);
+ action_layer = keycode & 0xFF;
+ action.code = ACTION_LAYER_GOTO(action_layer);
break;
case QK_MOMENTARY ... QK_MOMENTARY_MAX:;
// Momentary action_layer
diff --git a/quantum/keymap_extras/keymap_bepo.h b/quantum/keymap_extras/keymap_bepo.h
index 72d5b81f32..6361823242 100644
--- a/quantum/keymap_extras/keymap_bepo.h
+++ b/quantum/keymap_extras/keymap_bepo.h
@@ -237,4 +237,4 @@
#define BP_DDAG S(ALGR(BP_H)) // ‡
#define BP_FORD S(ALGR(BP_F)) // ª
// Row 5
-#define BP_NNBS S(ALGR(BP_)) //   (narrow non-breaking space)
+#define BP_NNBS S(ALGR(KC_SPC)) //   (narrow non-breaking space)
diff --git a/quantum/keymap_extras/keymap_czech.h b/quantum/keymap_extras/keymap_czech.h
index 2b1fb5da29..a8f522d31c 100644
--- a/quantum/keymap_extras/keymap_czech.h
+++ b/quantum/keymap_extras/keymap_czech.h
@@ -111,7 +111,7 @@
#define CZ_8 S(CZ_AACU) // 8
#define CZ_9 S(CZ_IACU) // 9
#define CZ_0 S(CZ_EACU) // 0
-#define CZ_PERC S(CZ_PLUS) // %
+#define CZ_PERC S(CZ_EQL) // %
#define CZ_CARN S(CZ_ACUT) // ˇ (dead)
// Row 2
#define CZ_SLSH S(CZ_UACU) // /
diff --git a/quantum/keymap_extras/keymap_japanese.h b/quantum/keymap_extras/keymap_japanese.h
index d10feb5856..df78af8399 100644
--- a/quantum/keymap_extras/keymap_japanese.h
+++ b/quantum/keymap_extras/keymap_japanese.h
@@ -28,7 +28,7 @@
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
- * │Z↔︎H│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ^ │ ¥ │ │
+ * │Z↔H│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ ^ │ ¥ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
* │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ @ │ [ │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠│
@@ -40,7 +40,7 @@
* └─────┴───┴─────┴─────┴─────────┴─────┴───┴───┴───┴───┴─────┘
*/
// Row 1
-#define JP_ZKHK KC_GRV // Zenkaku ↔︎ Hankaku ↔ Kanji (åŠè§’ ↔ 全角 ↔ 漢字)
+#define JP_ZKHK KC_GRV // Zenkaku ↔ Hankaku ↔ Kanji (åŠè§’ ↔ 全角 ↔ 漢字)
#define JP_1 KC_1 // 1
#define JP_2 KC_2 // 2
#define JP_3 KC_3 // 3
diff --git a/quantum/keymap_extras/keymap_korean.h b/quantum/keymap_extras/keymap_korean.h
index 74be122dad..3d41a98b88 100644
--- a/quantum/keymap_extras/keymap_korean.h
+++ b/quantum/keymap_extras/keymap_korean.h
@@ -121,7 +121,7 @@
#define KR_PIPE S(KR_WON) // |
// Row 3
#define KR_COLN S(KR_SCLN) // :
-#define KR_DQUO S(KR_COLN) // "
+#define KR_DQUO S(KR_QUOT) // "
// Row 4
#define KR_LABK S(KR_COMM) // <
#define KR_RABK S(KR_DOT) // >
diff --git a/quantum/keymap_extras/keymap_latvian.h b/quantum/keymap_extras/keymap_latvian.h
index 3eaa2df274..087138cb72 100644
--- a/quantum/keymap_extras/keymap_latvian.h
+++ b/quantum/keymap_extras/keymap_latvian.h
@@ -161,8 +161,8 @@
#define LV_ACUT ALGR(LV_QUOT) // ´ (dead)
// Row 4
#define LV_ZCAR ALGR(LV_Z) // Ž
-#define LV_CCAR ALGR(LV_Z) // Č
-#define LV_NCED ALGR(LV_Z) // Å…
+#define LV_CCAR ALGR(LV_C) // Č
+#define LV_NCED ALGR(LV_N) // Å…
/* Shift+AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”
diff --git a/quantum/keymap_extras/keymap_lithuanian_qwerty.h b/quantum/keymap_extras/keymap_lithuanian_qwerty.h
index 2dbb3649f7..afca2dc750 100644
--- a/quantum/keymap_extras/keymap_lithuanian_qwerty.h
+++ b/quantum/keymap_extras/keymap_lithuanian_qwerty.h
@@ -24,10 +24,10 @@
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”
* │ ` │ Ą │ Č │ Ę │ Ė │ Į │ Š │ Ų │ Ū │ 9 │ 0 │ - │ Ž │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠│
- * │ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ 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 │ , │ . │ / │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
@@ -72,7 +72,7 @@
#define LT_L KC_L // L
#define LT_SCLN KC_SCLN // ;
#define LT_QUOT KC_QUOT // '
-#define LT_BSLS KC_NUHS // (backslash)
+#define LT_BSLS KC_BSLS // (backslash)
// Row 4
#define LT_Z KC_Z // Z
#define LT_X KC_X // X
@@ -89,10 +89,10 @@
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”
* │ ~ │ │ │ │ │ │ │ │ │ ( │ ) │ _ │ │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠│
- * │ │ │ │ │ │ │ │ │ │ │ : │ " │ | │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ { │ } │ | │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ : │ " │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ │ │ │ │ │ │ │ < │ > │ ? │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
@@ -102,12 +102,12 @@
#define LT_TILD S(LT_GRV) // ~
#define LT_LPRN S(LT_9) // (
#define LT_RPRN S(LT_0) // )
-#define LT_UNDS S(LT_MINS) // *
+#define LT_UNDS S(LT_MINS) // _
// Row 2
#define LT_LCBR S(LT_LBRC) // {
#define LT_RCBR S(LT_RBRC) // }
// Row 3
-#define LT_COLN S(LT_SCLN) // ;
+#define LT_COLN S(LT_SCLN) // :
#define LT_DQUO S(LT_QUOT) // "
#define LT_PIPE S(LT_BSLS) // |
// Row 4
@@ -120,9 +120,9 @@
* │ │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ │ │ │ = │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ € │ │ │ │ │ │ │ │ │ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠│
- * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
@@ -137,7 +137,7 @@
#define LT_6 ALGR(LT_SCAR) // 6
#define LT_7 ALGR(LT_UOGO) // 7
#define LT_8 ALGR(LT_UMAC) // 8
-#define LT_EQL ALGR(LT_PLUS) // =
+#define LT_EQL ALGR(LT_ZCAR) // =
// Row 2
#define LT_EURO ALGR(LT_E) // €
@@ -146,9 +146,9 @@
* │ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ │ │ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
- * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┠│
- * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
- * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
* │ │ │ │ │ │ │ │ │ │ │ │ │
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
* │ │ │ │ │ │ │ │ │
@@ -163,4 +163,4 @@
#define LT_CIRC S(ALGR(LT_SCAR)) // ^
#define LT_AMPR S(ALGR(LT_UOGO)) // &
#define LT_ASTR S(ALGR(LT_UMAC)) // *
-#define LT_PLUS S(ALGR(LT_PLUS)) // +
+#define LT_PLUS S(ALGR(LT_ZCAR)) // +
diff --git a/quantum/keymap_extras/keymap_norman.h b/quantum/keymap_extras/keymap_norman.h
index 7a5c1cbeb2..9f20f66873 100644
--- a/quantum/keymap_extras/keymap_norman.h
+++ b/quantum/keymap_extras/keymap_norman.h
@@ -89,7 +89,7 @@
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────â”
* │ ~ │ ! │ @ │ # │ $ │ % │ ^ │ & │ * │ ( │ ) │ _ │ + │ │
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
- * │ │ │ │ │ │ │ │ │ │ │ ; │ { │ } │ | │
+ * │ │ │ │ │ │ │ │ │ │ │ : │ { │ } │ | │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
* │ │ │ │ │ │ │ │ │ │ │ │ " │ │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
diff --git a/quantum/keymap_extras/keymap_spanish_dvorak.h b/quantum/keymap_extras/keymap_spanish_dvorak.h
index 29c4f1c44a..ea0c93f86a 100644
--- a/quantum/keymap_extras/keymap_spanish_dvorak.h
+++ b/quantum/keymap_extras/keymap_spanish_dvorak.h
@@ -114,8 +114,8 @@
#define DV_QUES S(DV_QUOT) // ?
#define DV_IQUE S(DV_IEXL) // ¿
// Row 2
-#define DV_COLN S(KC_DOT) // :
-#define DV_SCLN S(KC_COMM) // ;
+#define DV_COLN S(DV_DOT) // :
+#define DV_SCLN S(DV_COMM) // ;
#define DV_CIRC S(DV_GRV) // ^ (dead)
#define DV_ASTR S(DV_PLUS) // *
// Row 3
diff --git a/quantum/keymap_extras/keymap_steno.h b/quantum/keymap_extras/keymap_steno.h
index e888ccd643..07d96b7465 100644
--- a/quantum/keymap_extras/keymap_steno.h
+++ b/quantum/keymap_extras/keymap_steno.h
@@ -89,3 +89,31 @@ enum steno_combined_keycodes {
STN_COMB_MAX = STN_EU,
};
#endif
+
+#ifdef STENO_ENABLE_BOLT
+// TxBolt Codes
+# define TXB_NUL 0
+# define TXB_S_L 0b00000001
+# define TXB_T_L 0b00000010
+# define TXB_K_L 0b00000100
+# define TXB_P_L 0b00001000
+# define TXB_W_L 0b00010000
+# define TXB_H_L 0b00100000
+# define TXB_R_L 0b01000001
+# define TXB_A_L 0b01000010
+# define TXB_O_L 0b01000100
+# define TXB_STR 0b01001000
+# define TXB_E_R 0b01010000
+# define TXB_U_R 0b01100000
+# define TXB_F_R 0b10000001
+# define TXB_R_R 0b10000010
+# define TXB_P_R 0b10000100
+# define TXB_B_R 0b10001000
+# define TXB_L_R 0b10010000
+# define TXB_G_R 0b10100000
+# define TXB_T_R 0b11000001
+# define TXB_S_R 0b11000010
+# define TXB_D_R 0b11000100
+# define TXB_Z_R 0b11001000
+# define TXB_NUM 0b11010000
+#endif // STENO_ENABLE_BOLT
diff --git a/quantum/keymap_extras/keymap_turkish_f.h b/quantum/keymap_extras/keymap_turkish_f.h
index f86ef21546..aaee2aa480 100644
--- a/quantum/keymap_extras/keymap_turkish_f.h
+++ b/quantum/keymap_extras/keymap_turkish_f.h
@@ -187,7 +187,7 @@
#define TR_CURR S(ALGR(TR_4)) // ¤
#define TR_IQUE S(ALGR(TR_SLSH)) // ¿
// Row 2
-#define TR_REGD S(ALGR(TR_I) // ®
+#define TR_REGD S(ALGR(TR_I)) // ®
// Row 3
#define TR_SECT S(ALGR(TR_IDOT)) // §
#define TR_FORD S(ALGR(TR_A)) // ª
diff --git a/quantum/keymap_extras/keymap_us_extended.h b/quantum/keymap_extras/keymap_us_extended.h
index fb3e9c7d36..8e71a8de25 100644
--- a/quantum/keymap_extras/keymap_us_extended.h
+++ b/quantum/keymap_extras/keymap_us_extended.h
@@ -145,7 +145,7 @@
#define US_CURR ALGR(US_4) // ¤
#define US_EURO ALGR(US_5) // €
#define US_DCIR ALGR(US_6) // ^ (dead)
-#define US_HORN ALGR(US_7) // ̛̛ (dead)
+#define US_HORN ALGR(US_7) // Ì› (dead)
#define US_OGON ALGR(US_8) // Ë› (dead)
#define US_LSQU ALGR(US_9) // ‘
#define US_RSQU ALGR(US_0) // ’
diff --git a/quantum/keymap_introspection.c b/quantum/keymap_introspection.c
new file mode 100644
index 0000000000..179b5eb037
--- /dev/null
+++ b/quantum/keymap_introspection.c
@@ -0,0 +1,32 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+// Pull the actual keymap code so that we can inspect stuff from it
+#include KEYMAP_C
+
+// Allow for keymap or userspace rules.mk to specify an alternate location for the keymap array
+#ifdef INTROSPECTION_KEYMAP_C
+# include INTROSPECTION_KEYMAP_C
+#endif // INTROSPECTION_KEYMAP_C
+
+#include "keymap_introspection.h"
+
+#define NUM_KEYMAP_LAYERS ((uint8_t)(sizeof(keymaps) / ((MATRIX_ROWS) * (MATRIX_COLS) * sizeof(uint16_t))))
+
+uint8_t keymap_layer_count(void) {
+ return NUM_KEYMAP_LAYERS;
+}
+
+_Static_assert(NUM_KEYMAP_LAYERS <= MAX_LAYER, "Number of keymap layers exceeds maximum set by LAYER_STATE_(8|16|32)BIT");
+
+#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
+
+# define NUM_ENCODERMAP_LAYERS ((uint8_t)(sizeof(encoder_map) / ((NUM_ENCODERS) * (2) * sizeof(uint16_t))))
+
+uint8_t encodermap_layer_count(void) {
+ return NUM_ENCODERMAP_LAYERS;
+}
+
+_Static_assert(NUM_KEYMAP_LAYERS == NUM_ENCODERMAP_LAYERS, "Number of encoder_map layers doesn't match the number of keymap layers");
+
+#endif // defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
diff --git a/quantum/keymap_introspection.h b/quantum/keymap_introspection.h
new file mode 100644
index 0000000000..23f6f2016f
--- /dev/null
+++ b/quantum/keymap_introspection.h
@@ -0,0 +1,15 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#include <stdint.h>
+
+// Get the number of layers defined in the keymap
+uint8_t keymap_layer_count(void);
+
+#if defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
+
+// Get the number of layers defined in the encoder map
+uint8_t encodermap_layer_count(void);
+
+#endif // defined(ENCODER_ENABLE) && defined(ENCODER_MAP_ENABLE)
diff --git a/quantum/led.c b/quantum/led.c
index c5ddbc22c5..444d38f751 100644
--- a/quantum/led.c
+++ b/quantum/led.c
@@ -15,6 +15,7 @@
*/
#include "led.h"
#include "host.h"
+#include "timer.h"
#include "debug.h"
#include "gpio.h"
@@ -54,6 +55,14 @@ static void handle_backlight_caps_lock(led_t led_state) {
}
#endif
+static uint32_t last_led_modification_time = 0;
+uint32_t last_led_activity_time(void) {
+ return last_led_modification_time;
+}
+uint32_t last_led_activity_elapsed(void) {
+ return timer_elapsed32(last_led_modification_time);
+}
+
/** \brief Lock LED set callback - keymap/user level
*
* \deprecated Use led_update_user() instead.
@@ -174,7 +183,8 @@ void led_task(void) {
// update LED
uint8_t led_status = host_keyboard_leds();
if (last_led_status != led_status) {
- last_led_status = led_status;
+ last_led_status = led_status;
+ last_led_modification_time = timer_read32();
if (debug_keyboard) {
debug("led_task: ");
diff --git a/quantum/led.h b/quantum/led.h
index 934d25312c..b8262cbd8e 100644
--- a/quantum/led.h
+++ b/quantum/led.h
@@ -61,6 +61,9 @@ void led_set_kb(uint8_t usb_led);
bool led_update_user(led_t led_state);
bool led_update_kb(led_t led_state);
+uint32_t last_led_activity_time(void); // Timestamp of the LED activity
+uint32_t last_led_activity_elapsed(void); // Number of milliseconds since the last LED activity
+
#ifdef __cplusplus
}
#endif
diff --git a/quantum/led_matrix/led_matrix.c b/quantum/led_matrix/led_matrix.c
index 38ed79bed0..14dd0dd48a 100644
--- a/quantum/led_matrix/led_matrix.c
+++ b/quantum/led_matrix/led_matrix.c
@@ -618,10 +618,20 @@ void led_matrix_decrease_speed(void) {
led_matrix_decrease_speed_helper(true);
}
+void led_matrix_set_flags_eeprom_helper(led_flags_t flags, bool write_to_eeprom) {
+ led_matrix_eeconfig.flags = flags;
+ eeconfig_flag_led_matrix(write_to_eeprom);
+ dprintf("led matrix set speed [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", led_matrix_eeconfig.flags);
+}
+
led_flags_t led_matrix_get_flags(void) {
return led_matrix_eeconfig.flags;
}
void led_matrix_set_flags(led_flags_t flags) {
- led_matrix_eeconfig.flags = flags;
+ led_matrix_set_flags_eeprom_helper(flags, true);
+}
+
+void led_matrix_set_flags_noeeprom(led_flags_t flags) {
+ led_matrix_set_flags_eeprom_helper(flags, false);
}
diff --git a/quantum/led_matrix/led_matrix.h b/quantum/led_matrix/led_matrix.h
index d21f36e295..446f293c78 100644
--- a/quantum/led_matrix/led_matrix.h
+++ b/quantum/led_matrix/led_matrix.h
@@ -33,6 +33,9 @@
#ifdef IS31FL3733
# include "is31fl3733-simple.h"
#endif
+#ifdef CKLED2001
+# include "ckled2001-simple.h"
+#endif
#ifndef LED_MATRIX_LED_FLUSH_LIMIT
# define LED_MATRIX_LED_FLUSH_LIMIT 16
@@ -158,6 +161,7 @@ void led_matrix_decrease_speed(void);
void led_matrix_decrease_speed_noeeprom(void);
led_flags_t led_matrix_get_flags(void);
void led_matrix_set_flags(led_flags_t flags);
+void led_matrix_set_flags_noeeprom(led_flags_t flags);
typedef struct {
/* Perform any initialisation required for the other driver functions to work. */
diff --git a/quantum/led_matrix/led_matrix_drivers.c b/quantum/led_matrix/led_matrix_drivers.c
index 847ca1c310..f01b395c15 100644
--- a/quantum/led_matrix/led_matrix_drivers.c
+++ b/quantum/led_matrix/led_matrix_drivers.c
@@ -25,7 +25,7 @@
* in their own files.
*/
-#if defined(IS31FL3731) || defined(IS31FL3733) || defined(IS31FLCOMMON)
+#if defined(IS31FL3731) || defined(IS31FL3733) || defined(IS31FLCOMMON) || defined(CKLED2001)
# include "i2c_master.h"
static void init(void) {
@@ -78,6 +78,22 @@ static void init(void) {
# endif
# endif
# endif
+# elif defined(CKLED2001)
+# if defined(LED_DRIVER_SHUTDOWN_PIN)
+ setPinOutput(LED_DRIVER_SHUTDOWN_PIN);
+ writePinHigh(LED_DRIVER_SHUTDOWN_PIN);
+# endif
+
+ CKLED2001_init(DRIVER_ADDR_1);
+# if defined(DRIVER_ADDR_2)
+ CKLED2001_init(DRIVER_ADDR_2);
+# if defined(DRIVER_ADDR_3)
+ CKLED2001_init(DRIVER_ADDR_3);
+# if defined(DRIVER_ADDR_4)
+ CKLED2001_init(DRIVER_ADDR_4);
+# endif
+# endif
+# endif
# endif
for (int index = 0; index < DRIVER_LED_TOTAL; index++) {
@@ -87,6 +103,8 @@ static void init(void) {
IS31FL3733_set_led_control_register(index, true);
# elif defined(IS31FLCOMMON)
IS31FL_simple_set_scaling_buffer(index, true);
+# elif defined(CKLED2001)
+ CKLED2001_set_led_control_register(index, true);
# endif
}
@@ -129,6 +147,17 @@ static void init(void) {
# endif
# endif
# endif
+# elif defined(CKLED2001)
+ CKLED2001_update_led_control_registers(DRIVER_ADDR_1, 0);
+# if defined(DRIVER_ADDR_2)
+ CKLED2001_update_led_control_registers(DRIVER_ADDR_2, 1);
+# if defined(DRIVER_ADDR_3)
+ CKLED2001_update_led_control_registers(DRIVER_ADDR_3, 2);
+# if defined(DRIVER_ADDR_4)
+ CKLED2001_update_led_control_registers(DRIVER_ADDR_4, 3);
+# endif
+# endif
+# endif
# endif
}
@@ -194,5 +223,25 @@ const led_matrix_driver_t led_matrix_driver = {
.set_value = IS31FL_simple_set_brightness,
.set_value_all = IS31FL_simple_set_brigntness_all,
};
+# elif defined(CKLED2001)
+static void flush(void) {
+ CKLED2001_update_pwm_buffers(DRIVER_ADDR_1, 0);
+# if defined(DRIVER_ADDR_2)
+ CKLED2001_update_pwm_buffers(DRIVER_ADDR_2, 1);
+# if defined(DRIVER_ADDR_3)
+ CKLED2001_update_pwm_buffers(DRIVER_ADDR_3, 2);
+# if defined(DRIVER_ADDR_4)
+ CKLED2001_update_pwm_buffers(DRIVER_ADDR_4, 3);
+# endif
+# endif
+# endif
+}
+
+const led_matrix_driver_t led_matrix_driver = {
+ .init = init,
+ .flush = flush,
+ .set_value = CKLED2001_set_value,
+ .set_value_all = CKLED2001_set_value_all,
+};
# endif
#endif
diff --git a/quantum/logging/print.c b/quantum/logging/print.c
index 50a6b826ee..17e6737ac4 100644
--- a/quantum/logging/print.c
+++ b/quantum/logging/print.c
@@ -28,6 +28,6 @@ void print_set_sendchar(sendchar_func_t send) {
func = send;
}
-void _putchar(char character) {
+void putchar_(char character) {
func(character);
}
diff --git a/quantum/logging/print.h b/quantum/logging/print.h
index aa72fc7074..4c4195de50 100644
--- a/quantum/logging/print.h
+++ b/quantum/logging/print.h
@@ -32,6 +32,22 @@
void print_set_sendchar(sendchar_func_t func);
+/**
+ * @brief This macro suppress format warnings for the function that is passed
+ * in. The main use-case is that `b` format specifier for printing binary
+ * numbers is not in the official C standard. Inclusion is planned for the
+ * upcoming C2X C standard, but until then GCC will always output a warning for
+ * a unknown format specifier.
+ */
+#define IGNORE_FORMAT_WARNING(func) \
+ do { \
+ _Pragma("GCC diagnostic push"); \
+ _Pragma("GCC diagnostic ignored \"-Wformat\""); \
+ _Pragma("GCC diagnostic ignored \"-Wformat-extra-args\""); \
+ func; \
+ _Pragma("GCC diagnostic pop"); \
+ } while (0)
+
#ifndef NO_PRINT
# if __has_include_next("_print.h")
# include_next "_print.h" /* Include the platforms print.h */
@@ -78,25 +94,25 @@ void print_set_sendchar(sendchar_func_t func);
#define print_hex16(i) xprintf("%04X", i)
#define print_hex32(i) xprintf("%08lX", i)
/* binary */
-#define print_bin4(i) xprintf("%04b", i)
-#define print_bin8(i) xprintf("%08b", i)
-#define print_bin16(i) xprintf("%016b", i)
-#define print_bin32(i) xprintf("%032lb", i)
-#define print_bin_reverse8(i) xprintf("%08b", bitrev(i))
-#define print_bin_reverse16(i) xprintf("%016b", bitrev16(i))
-#define print_bin_reverse32(i) xprintf("%032lb", bitrev32(i))
+#define print_bin4(i) IGNORE_FORMAT_WARNING(xprintf("%04b", i))
+#define print_bin8(i) IGNORE_FORMAT_WARNING(xprintf("%08b", i))
+#define print_bin16(i) IGNORE_FORMAT_WARNING(xprintf("%016b", i))
+#define print_bin32(i) IGNORE_FORMAT_WARNING(xprintf("%032lb", i))
+#define print_bin_reverse8(i) IGNORE_FORMAT_WARNING(xprintf("%08b", bitrev(i)))
+#define print_bin_reverse16(i) IGNORE_FORMAT_WARNING(xprintf("%016b", bitrev16(i)))
+#define print_bin_reverse32(i) IGNORE_FORMAT_WARNING(xprintf("%032lb", bitrev32(i)))
/* print value utility */
#define print_val_dec(v) xprintf(#v ": %u\n", v)
#define print_val_decs(v) xprintf(#v ": %d\n", v)
#define print_val_hex8(v) xprintf(#v ": %X\n", v)
#define print_val_hex16(v) xprintf(#v ": %02X\n", v)
#define print_val_hex32(v) xprintf(#v ": %04lX\n", v)
-#define print_val_bin8(v) xprintf(#v ": %08b\n", v)
-#define print_val_bin16(v) xprintf(#v ": %016b\n", v)
-#define print_val_bin32(v) xprintf(#v ": %032lb\n", v)
-#define print_val_bin_reverse8(v) xprintf(#v ": %08b\n", bitrev(v))
-#define print_val_bin_reverse16(v) xprintf(#v ": %016b\n", bitrev16(v))
-#define print_val_bin_reverse32(v) xprintf(#v ": %032lb\n", bitrev32(v))
+#define print_val_bin8(v) IGNORE_FORMAT_WARNING(xprintf(#v ": %08b\n", v))
+#define print_val_bin16(v) IGNORE_FORMAT_WARNING(xprintf(#v ": %016b\n", v))
+#define print_val_bin32(v) IGNORE_FORMAT_WARNING(xprintf(#v ": %032lb\n", v))
+#define print_val_bin_reverse8(v) IGNORE_FORMAT_WARNING(xprintf(#v ": %08b\n", bitrev(v)))
+#define print_val_bin_reverse16(v) IGNORE_FORMAT_WARNING(xprintf(#v ": %016b\n", bitrev16(v)))
+#define print_val_bin_reverse32(v) IGNORE_FORMAT_WARNING(xprintf(#v ": %032lb\n", bitrev32(v)))
// User print disables the normal print messages in the body of QMK/TMK code and
// is meant as a lightweight alternative to NOPRINT. Use it when you only want to do
@@ -114,22 +130,22 @@ void print_set_sendchar(sendchar_func_t func);
#define uprint_hex16(i) uprintf("%04X", i)
#define uprint_hex32(i) uprintf("%08lX", i)
/* binary */
-#define uprint_bin4(i) uprintf("%04b", i)
-#define uprint_bin8(i) uprintf("%08b", i)
-#define uprint_bin16(i) uprintf("%016b", i)
-#define uprint_bin32(i) uprintf("%032lb", i)
-#define uprint_bin_reverse8(i) uprintf("%08b", bitrev(i))
-#define uprint_bin_reverse16(i) uprintf("%016b", bitrev16(i))
-#define uprint_bin_reverse32(i) uprintf("%032lb", bitrev32(i))
+#define uprint_bin4(i) IGNORE_FORMAT_WARNING(uprintf("%04b", i))
+#define uprint_bin8(i) IGNORE_FORMAT_WARNING(uprintf("%08b", i))
+#define uprint_bin16(i) IGNORE_FORMAT_WARNING(uprintf("%016b", i))
+#define uprint_bin32(i) IGNORE_FORMAT_WARNING(uprintf("%032lb", i))
+#define uprint_bin_reverse8(i) IGNORE_FORMAT_WARNING(uprintf("%08b", bitrev(i)))
+#define uprint_bin_reverse16(i) IGNORE_FORMAT_WARNING(uprintf("%016b", bitrev16(i)))
+#define uprint_bin_reverse32(i) IGNORE_FORMAT_WARNING(uprintf("%032lb", bitrev32(i)))
/* print value utility */
#define uprint_val_dec(v) uprintf(#v ": %u\n", v)
#define uprint_val_decs(v) uprintf(#v ": %d\n", v)
#define uprint_val_hex8(v) uprintf(#v ": %X\n", v)
#define uprint_val_hex16(v) uprintf(#v ": %02X\n", v)
#define uprint_val_hex32(v) uprintf(#v ": %04lX\n", v)
-#define uprint_val_bin8(v) uprintf(#v ": %08b\n", v)
-#define uprint_val_bin16(v) uprintf(#v ": %016b\n", v)
-#define uprint_val_bin32(v) uprintf(#v ": %032lb\n", v)
-#define uprint_val_bin_reverse8(v) uprintf(#v ": %08b\n", bitrev(v))
-#define uprint_val_bin_reverse16(v) uprintf(#v ": %016b\n", bitrev16(v))
-#define uprint_val_bin_reverse32(v) uprintf(#v ": %032lb\n", bitrev32(v))
+#define uprint_val_bin8(v) IGNORE_FORMAT_WARNING(uprintf(#v ": %08b\n", v))
+#define uprint_val_bin16(v) IGNORE_FORMAT_WARNING(uprintf(#v ": %016b\n", v))
+#define uprint_val_bin32(v) IGNORE_FORMAT_WARNING(uprintf(#v ": %032lb\n", v))
+#define uprint_val_bin_reverse8(v) IGNORE_FORMAT_WARNING(uprintf(#v ": %08b\n", bitrev(v)))
+#define uprint_val_bin_reverse16(v) IGNORE_FORMAT_WARNING(uprintf(#v ": %016b\n", bitrev16(v)))
+#define uprint_val_bin_reverse32(v) IGNORE_FORMAT_WARNING(uprintf(#v ": %032lb\n", bitrev32(v)))
diff --git a/quantum/logging/print.mk b/quantum/logging/print.mk
index 67c004192d..658c533dad 100644
--- a/quantum/logging/print.mk
+++ b/quantum/logging/print.mk
@@ -1,9 +1,12 @@
-PRINTF_PATH = $(LIB_PATH)/printf
+PRINTF_PATH = $(LIB_PATH)/printf/src
-VPATH += $(PRINTF_PATH)
-SRC += $(PRINTF_PATH)/printf.c
+VPATH += $(PRINTF_PATH) $(PRINTF_PATH)/printf
+SRC += printf.c
QUANTUM_SRC +=$(QUANTUM_DIR)/logging/print.c
-OPT_DEFS += -DPRINTF_DISABLE_SUPPORT_FLOAT
-OPT_DEFS += -DPRINTF_DISABLE_SUPPORT_EXPONENTIAL
-OPT_DEFS += -DPRINTF_DISABLE_SUPPORT_LONG_LONG
-OPT_DEFS += -DPRINTF_DISABLE_SUPPORT_PTRDIFF_T
+
+OPT_DEFS += -DPRINTF_SUPPORT_DECIMAL_SPECIFIERS=0
+OPT_DEFS += -DPRINTF_SUPPORT_EXPONENTIAL_SPECIFIERS=0
+OPT_DEFS += -DPRINTF_SUPPORT_LONG_LONG=0
+OPT_DEFS += -DPRINTF_SUPPORT_WRITEBACK_SPECIFIER=0
+OPT_DEFS += -DSUPPORT_MSVC_STYLE_INTEGER_SPECIFIERS=0
+OPT_DEFS += -DPRINTF_ALIAS_STANDARD_FUNCTION_NAMES=1
diff --git a/quantum/matrix.c b/quantum/matrix.c
index db59b73754..db683104ed 100644
--- a/quantum/matrix.c
+++ b/quantum/matrix.c
@@ -337,10 +337,9 @@ uint8_t matrix_scan(void) {
if (changed) memcpy(raw_matrix, curr_matrix, sizeof(curr_matrix));
#ifdef SPLIT_KEYBOARD
- debounce(raw_matrix, matrix + thisHand, ROWS_PER_HAND, changed);
- changed = (changed || matrix_post_scan());
+ changed = debounce(raw_matrix, matrix + thisHand, ROWS_PER_HAND, changed) | matrix_post_scan();
#else
- debounce(raw_matrix, matrix, ROWS_PER_HAND, changed);
+ changed = debounce(raw_matrix, matrix, ROWS_PER_HAND, changed);
matrix_scan_quantum();
#endif
return (uint8_t)changed;
diff --git a/quantum/matrix_common.c b/quantum/matrix_common.c
index 2cf8484347..f2b9d58937 100644
--- a/quantum/matrix_common.c
+++ b/quantum/matrix_common.c
@@ -122,7 +122,7 @@ bool matrix_post_scan(void) {
}
#endif
-/* `matrix_io_delay ()` exists for backwards compatibility. From now on, use matrix_output_unselect_delay(). */
+/* `matrix_io_delay ()` exists for backwards compatibility. From now on, use matrix_output_unselect_delay(). */
__attribute__((weak)) void matrix_io_delay(void) {
wait_us(MATRIX_IO_DELAY);
}
@@ -169,10 +169,9 @@ __attribute__((weak)) uint8_t matrix_scan(void) {
bool changed = matrix_scan_custom(raw_matrix);
#ifdef SPLIT_KEYBOARD
- debounce(raw_matrix, matrix + thisHand, ROWS_PER_HAND, changed);
- changed = (changed || matrix_post_scan());
+ changed = debounce(raw_matrix, matrix + thisHand, ROWS_PER_HAND, changed) | matrix_post_scan();
#else
- debounce(raw_matrix, matrix, ROWS_PER_HAND, changed);
+ changed = debounce(raw_matrix, matrix, ROWS_PER_HAND, changed);
matrix_scan_quantum();
#endif
diff --git a/quantum/mousekey.c b/quantum/mousekey.c
index 64d0e66682..25a89bdba7 100644
--- a/quantum/mousekey.c
+++ b/quantum/mousekey.c
@@ -66,11 +66,18 @@ uint8_t mk_time_to_max = MOUSEKEY_TIME_TO_MAX;
/* milliseconds between the initial key press and first repeated motion event (0-2550) */
uint8_t mk_wheel_delay = MOUSEKEY_WHEEL_DELAY / 10;
/* milliseconds between repeated motion events (0-255) */
-uint8_t mk_wheel_interval = MOUSEKEY_WHEEL_INTERVAL;
+# ifdef MK_KINETIC_SPEED
+float mk_wheel_interval = 1000.0f / MOUSEKEY_WHEEL_INITIAL_MOVEMENTS;
+# else
+uint8_t mk_wheel_interval = MOUSEKEY_WHEEL_INTERVAL;
+# endif
uint8_t mk_wheel_max_speed = MOUSEKEY_WHEEL_MAX_SPEED;
uint8_t mk_wheel_time_to_max = MOUSEKEY_WHEEL_TIME_TO_MAX;
# ifndef MK_COMBINED
+# ifndef MK_KINETIC_SPEED
+
+/* Default accelerated mode */
static uint8_t move_unit(void) {
uint16_t unit;
@@ -108,8 +115,7 @@ static uint8_t wheel_unit(void) {
return (unit > MOUSEKEY_WHEEL_MAX ? MOUSEKEY_WHEEL_MAX : (unit == 0 ? 1 : unit));
}
-# else /* #ifndef MK_COMBINED */
-# ifdef MK_KINETIC_SPEED
+# else /* #ifndef MK_KINETIC_SPEED */
/*
* Kinetic movement acceleration algorithm
@@ -147,27 +153,27 @@ static uint8_t move_unit(void) {
return speed > MOUSEKEY_MOVE_MAX ? MOUSEKEY_MOVE_MAX : speed;
}
-float mk_wheel_interval = 1000.0f / MOUSEKEY_WHEEL_INITIAL_MOVEMENTS;
-
static uint8_t wheel_unit(void) {
float speed = MOUSEKEY_WHEEL_INITIAL_MOVEMENTS;
if (mousekey_accel & ((1 << 0) | (1 << 2))) {
speed = mousekey_accel & (1 << 2) ? MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS : MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS;
- } else if (mousekey_repeat && mouse_timer) {
+ } else if (mousekey_wheel_repeat && mouse_timer) {
if (mk_wheel_interval != MOUSEKEY_WHEEL_BASE_MOVEMENTS) {
const float time_elapsed = timer_elapsed(mouse_timer) / 50;
speed = MOUSEKEY_WHEEL_INITIAL_MOVEMENTS + 1 * time_elapsed + 1 * 0.5 * time_elapsed * time_elapsed;
}
speed = speed > MOUSEKEY_WHEEL_BASE_MOVEMENTS ? MOUSEKEY_WHEEL_BASE_MOVEMENTS : speed;
}
-
mk_wheel_interval = 1000.0f / speed;
- return 1;
+ return (uint8_t)speed > MOUSEKEY_WHEEL_INITIAL_MOVEMENTS ? 2 : 1;
}
-# else /* #ifndef MK_KINETIC_SPEED */
+# endif /* #ifndef MK_KINETIC_SPEED */
+# else /* #ifndef MK_COMBINED */
+
+/* Combined mode */
static uint8_t move_unit(void) {
uint16_t unit;
@@ -205,8 +211,7 @@ static uint8_t wheel_unit(void) {
return (unit > MOUSEKEY_WHEEL_MAX ? MOUSEKEY_WHEEL_MAX : (unit == 0 ? 1 : unit));
}
-# endif /* #ifndef MK_KINETIC_SPEED */
-# endif /* #ifndef MK_COMBINED */
+# endif /* #ifndef MK_COMBINED */
void mousekey_task(void) {
// report cursor and scroll movement independently
@@ -252,7 +257,7 @@ void mousekey_task(void) {
}
}
- if (has_mouse_report_changed(&mouse_report, &tmpmr)) {
+ if (has_mouse_report_changed(&mouse_report, &tmpmr) || should_mousekey_report_send(&mouse_report)) {
mousekey_send();
}
memcpy(&mouse_report, &tmpmr, sizeof(tmpmr));
@@ -358,7 +363,7 @@ void mousekey_task(void) {
mouse_report.h = tmpmr.h;
}
- if (has_mouse_report_changed(&mouse_report, &tmpmr)) {
+ if (has_mouse_report_changed(&mouse_report, &tmpmr) || should_mousekey_report_send(&mouse_report)) {
mousekey_send();
}
memcpy(&mouse_report, &tmpmr, sizeof(tmpmr));
@@ -495,3 +500,7 @@ static void mousekey_debug(void) {
report_mouse_t mousekey_get_report(void) {
return mouse_report;
}
+
+bool should_mousekey_report_send(report_mouse_t *mouse_report) {
+ return mouse_report->x || mouse_report->y || mouse_report->v || mouse_report->h;
+}
diff --git a/quantum/mousekey.h b/quantum/mousekey.h
index 03da5f282a..da2edb481a 100644
--- a/quantum/mousekey.h
+++ b/quantum/mousekey.h
@@ -39,7 +39,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# ifndef MK_KINETIC_SPEED
# define MOUSEKEY_MOVE_DELTA 8
# else
-# define MOUSEKEY_MOVE_DELTA 5
+# define MOUSEKEY_MOVE_DELTA 16
# endif
# endif
# ifndef MOUSEKEY_WHEEL_DELTA
@@ -82,7 +82,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
# define MOUSEKEY_INITIAL_SPEED 100
# endif
# ifndef MOUSEKEY_BASE_SPEED
-# define MOUSEKEY_BASE_SPEED 1000
+# define MOUSEKEY_BASE_SPEED 5000
# endif
# ifndef MOUSEKEY_DECELERATED_SPEED
# define MOUSEKEY_DECELERATED_SPEED 400
@@ -174,6 +174,7 @@ void mousekey_off(uint8_t code);
void mousekey_clear(void);
void mousekey_send(void);
report_mouse_t mousekey_get_report(void);
+bool should_mousekey_report_send(report_mouse_t *mouse_report);
#ifdef __cplusplus
}
diff --git a/quantum/painter/qp.h b/quantum/painter/qp.h
index e1c14d156c..fb6904de22 100644
--- a/quantum/painter/qp.h
+++ b/quantum/painter/qp.h
@@ -440,10 +440,18 @@ int16_t qp_drawtext_recolor(painter_device_t device, uint16_t x, uint16_t y, pai
# include "qp_ili9341.h"
#endif // QUANTUM_PAINTER_ILI9341_ENABLE
+#ifdef QUANTUM_PAINTER_ILI9488_ENABLE
+# include "qp_ili9488.h"
+#endif // QUANTUM_PAINTER_ILI9488_ENABLE
+
#ifdef QUANTUM_PAINTER_ST7789_ENABLE
# include "qp_st7789.h"
#endif // QUANTUM_PAINTER_ST7789_ENABLE
+#ifdef QUANTUM_PAINTER_ST7735_ENABLE
+# include "qp_st7735.h"
+#endif // QUANTUM_PAINTER_ST7735_ENABLE
+
#ifdef QUANTUM_PAINTER_GC9A01_ENABLE
# include "qp_gc9a01.h"
#endif // QUANTUM_PAINTER_GC9A01_ENABLE
diff --git a/quantum/painter/qp_draw_core.c b/quantum/painter/qp_draw_core.c
index c31c734132..309ef93dd0 100644
--- a/quantum/painter/qp_draw_core.c
+++ b/quantum/painter/qp_draw_core.c
@@ -20,17 +20,17 @@ _Static_assert((QUANTUM_PAINTER_PIXDATA_BUFFER_SIZE > 0) && (QUANTUM_PAINTER_PIX
//
// Buffer used for transmitting native pixel data to the downstream device.
-uint8_t qp_internal_global_pixdata_buffer[QUANTUM_PAINTER_PIXDATA_BUFFER_SIZE];
+__attribute__((__aligned__(4))) uint8_t qp_internal_global_pixdata_buffer[QUANTUM_PAINTER_PIXDATA_BUFFER_SIZE];
// Static buffer to contain a generated color palette
-static bool generated_palette = false;
-static int16_t generated_steps = -1;
-static qp_pixel_t interpolated_fg_hsv888;
-static qp_pixel_t interpolated_bg_hsv888;
+static bool generated_palette = false;
+static int16_t generated_steps = -1;
+__attribute__((__aligned__(4))) static qp_pixel_t interpolated_fg_hsv888;
+__attribute__((__aligned__(4))) static qp_pixel_t interpolated_bg_hsv888;
#if QUANTUM_PAINTER_SUPPORTS_256_PALETTE
-qp_pixel_t qp_internal_global_pixel_lookup_table[256];
+__attribute__((__aligned__(4))) qp_pixel_t qp_internal_global_pixel_lookup_table[256];
#else
-qp_pixel_t qp_internal_global_pixel_lookup_table[16];
+__attribute__((__aligned__(4))) qp_pixel_t qp_internal_global_pixel_lookup_table[16];
#endif
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/quantum/painter/rules.mk b/quantum/painter/rules.mk
index 9115d3d406..91787dfe0e 100644
--- a/quantum/painter/rules.mk
+++ b/quantum/painter/rules.mk
@@ -3,7 +3,7 @@ QUANTUM_PAINTER_DRIVERS ?=
QUANTUM_PAINTER_ANIMATIONS_ENABLE ?= yes
# The list of permissible drivers that can be listed in QUANTUM_PAINTER_DRIVERS
-VALID_QUANTUM_PAINTER_DRIVERS := ili9163_spi ili9341_spi st7789_spi gc9a01_spi ssd1351_spi
+VALID_QUANTUM_PAINTER_DRIVERS := ili9163_spi ili9341_spi ili9488_spi st7789_spi st7735_spi gc9a01_spi ssd1351_spi
#-------------------------------------------------------------------------------
@@ -61,6 +61,17 @@ define handle_quantum_painter_driver
$(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
$(DRIVER_PATH)/painter/ili9xxx/qp_ili9341.c \
+ else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),ili9488_spi)
+ QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
+ QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
+ OPT_DEFS += -DQUANTUM_PAINTER_ILI9488_ENABLE -DQUANTUM_PAINTER_ILI9488_SPI_ENABLE
+ COMMON_VPATH += \
+ $(DRIVER_PATH)/painter/tft_panel \
+ $(DRIVER_PATH)/painter/ili9xxx
+ SRC += \
+ $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
+ $(DRIVER_PATH)/painter/ili9xxx/qp_ili9488.c \
+
else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),st7789_spi)
QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
@@ -72,6 +83,17 @@ define handle_quantum_painter_driver
$(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
$(DRIVER_PATH)/painter/st77xx/qp_st7789.c
+ else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),st7735_spi)
+ QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
+ QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
+ OPT_DEFS += -DQUANTUM_PAINTER_ST7735_ENABLE -DQUANTUM_PAINTER_ST7735_SPI_ENABLE
+ COMMON_VPATH += \
+ $(DRIVER_PATH)/painter/tft_panel \
+ $(DRIVER_PATH)/painter/st77xx
+ SRC += \
+ $(DRIVER_PATH)/painter/tft_panel/qp_tft_panel.c \
+ $(DRIVER_PATH)/painter/st77xx/qp_st7735.c
+
else ifeq ($$(strip $$(CURRENT_PAINTER_DRIVER)),gc9a01_spi)
QUANTUM_PAINTER_NEEDS_COMMS_SPI := yes
QUANTUM_PAINTER_NEEDS_COMMS_SPI_DC_RESET := yes
diff --git a/quantum/pointing_device.c b/quantum/pointing_device.c
deleted file mode 100644
index a160647890..0000000000
--- a/quantum/pointing_device.c
+++ /dev/null
@@ -1,446 +0,0 @@
-/* Copyright 2017 Joshua Broekhuijsen <snipeye+qmk@gmail.com>
- * 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
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "pointing_device.h"
-#include <string.h>
-#include "timer.h"
-#ifdef MOUSEKEY_ENABLE
-# include "mousekey.h"
-#endif
-#if (defined(POINTING_DEVICE_ROTATION_90) + defined(POINTING_DEVICE_ROTATION_180) + defined(POINTING_DEVICE_ROTATION_270)) > 1
-# error More than one rotation selected. This is not supported.
-#endif
-#if defined(SPLIT_POINTING_ENABLE)
-# include "transactions.h"
-# include "keyboard.h"
-
-report_mouse_t shared_mouse_report = {};
-uint16_t shared_cpi = 0;
-
-/**
- * @brief Sets the shared mouse report used be pointing device task
- *
- * NOTE : Only available when using SPLIT_POINTING_ENABLE
- *
- * @param[in] new_mouse_report report_mouse_t
- */
-void pointing_device_set_shared_report(report_mouse_t new_mouse_report) {
- shared_mouse_report = new_mouse_report;
-}
-
-/**
- * @brief Gets current pointing device CPI if supported
- *
- * Gets current cpi of the shared report and returns it as uint16_t
- *
- * NOTE : Only available when using SPLIT_POINTING_ENABLE
- *
- * @return cpi value as uint16_t
- */
-uint16_t pointing_device_get_shared_cpi(void) {
- return shared_cpi;
-}
-
-# if defined(POINTING_DEVICE_LEFT)
-# define POINTING_DEVICE_THIS_SIDE is_keyboard_left()
-# elif defined(POINTING_DEVICE_RIGHT)
-# define POINTING_DEVICE_THIS_SIDE !is_keyboard_left()
-# elif defined(POINTING_DEVICE_COMBINED)
-# define POINTING_DEVICE_THIS_SIDE true
-# endif
-
-#endif // defined(SPLIT_POINTING_ENABLE)
-
-static report_mouse_t local_mouse_report = {};
-
-extern const pointing_device_driver_t pointing_device_driver;
-
-/**
- * @brief Keyboard level code pointing device initialisation
- *
- */
-__attribute__((weak)) void pointing_device_init_kb(void) {}
-
-/**
- * @brief User level code pointing device initialisation
- *
- */
-__attribute__((weak)) void pointing_device_init_user(void) {}
-
-/**
- * @brief Weak function allowing for keyboard level mouse report modification
- *
- * Takes report_mouse_t struct allowing modification at keyboard level then returns report_mouse_t.
- *
- * @param[in] mouse_report report_mouse_t
- * @return report_mouse_t
- */
-__attribute__((weak)) report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
- return pointing_device_task_user(mouse_report);
-}
-
-/**
- * @brief Weak function allowing for user level mouse report modification
- *
- * Takes report_mouse_t struct allowing modification at user level then returns report_mouse_t.
- *
- * @param[in] mouse_report report_mouse_t
- * @return report_mouse_t
- */
-__attribute__((weak)) report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
- return mouse_report;
-}
-
-/**
- * @brief Handles pointing device buttons
- *
- * Returns modified button bitmask using bool pressed and selected pointing_device_buttons_t button in uint8_t buttons bitmask.
- *
- * @param buttons[in] uint8_t bitmask
- * @param pressed[in] bool
- * @param button[in] pointing_device_buttons_t value
- * @return Modified uint8_t bitmask buttons
- */
-__attribute__((weak)) uint8_t pointing_device_handle_buttons(uint8_t buttons, bool pressed, pointing_device_buttons_t button) {
- if (pressed) {
- buttons |= 1 << (button);
- } else {
- buttons &= ~(1 << (button));
- }
- return buttons;
-}
-
-/**
- * @brief Initialises pointing device
- *
- * Initialises pointing device, perform driver init and optional keyboard/user level code.
- */
-__attribute__((weak)) void pointing_device_init(void) {
-#if defined(SPLIT_POINTING_ENABLE)
- if (!(POINTING_DEVICE_THIS_SIDE)) {
- return;
- }
-#endif
- pointing_device_driver.init();
-#ifdef POINTING_DEVICE_MOTION_PIN
- setPinInputHigh(POINTING_DEVICE_MOTION_PIN);
-#endif
- pointing_device_init_kb();
- pointing_device_init_user();
-}
-
-/**
- * @brief Sends processed mouse report to host
- *
- * This sends the mouse report generated by pointing_device_task if changed since the last report. Once send zeros mouse report except buttons.
- *
- */
-__attribute__((weak)) void pointing_device_send(void) {
- static report_mouse_t old_report = {};
-
- // If you need to do other things, like debugging, this is the place to do it.
- if (has_mouse_report_changed(&local_mouse_report, &old_report)) {
- host_mouse_send(&local_mouse_report);
- }
- // send it and 0 it out except for buttons, so those stay until they are explicity over-ridden using update_pointing_device
- local_mouse_report.x = 0;
- local_mouse_report.y = 0;
- local_mouse_report.v = 0;
- local_mouse_report.h = 0;
-
- memcpy(&old_report, &local_mouse_report, sizeof(local_mouse_report));
-}
-
-/**
- * @brief Adjust mouse report by any optional common pointing configuration defines
- *
- * This applies rotation or inversion to the mouse report as selected by the pointing device common configuration defines.
- *
- * @param mouse_report[in] takes a report_mouse_t to be adjusted
- * @return report_mouse_t with adjusted values
- */
-report_mouse_t pointing_device_adjust_by_defines(report_mouse_t mouse_report) {
- // 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 = mouse_report.x, y = mouse_report.y;
-# if defined(POINTING_DEVICE_ROTATION_90)
- mouse_report.x = y;
- mouse_report.y = -x;
-# elif defined(POINTING_DEVICE_ROTATION_180)
- mouse_report.x = -x;
- mouse_report.y = -y;
-# elif defined(POINTING_DEVICE_ROTATION_270)
- mouse_report.x = -y;
- mouse_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)
- mouse_report.x = -mouse_report.x;
-#endif
-#if defined(POINTING_DEVICE_INVERT_Y)
- mouse_report.y = -mouse_report.y;
-#endif
- return mouse_report;
-}
-
-/**
- * @brief Retrieves and processes pointing device data.
- *
- * This function is part of the keyboard loop and retrieves the mouse report from the pointing device driver.
- * It applies any optional configuration e.g. rotation or axis inversion and then initiates a send.
- *
- */
-__attribute__((weak)) void pointing_device_task(void) {
-#if defined(SPLIT_POINTING_ENABLE)
- // Don't poll the target side pointing device.
- if (!is_keyboard_master()) {
- return;
- };
-#endif
-
-#if (POINTING_DEVICE_TASK_THROTTLE_MS > 0)
- static uint32_t last_exec = 0;
- if (timer_elapsed32(last_exec) < POINTING_DEVICE_TASK_THROTTLE_MS) {
- return;
- }
- last_exec = timer_read32();
-#endif
-
- // Gather report info
-#ifdef POINTING_DEVICE_MOTION_PIN
-# if defined(SPLIT_POINTING_ENABLE)
-# error POINTING_DEVICE_MOTION_PIN not supported when sharing the pointing device report between sides.
-# endif
- if (!readPin(POINTING_DEVICE_MOTION_PIN))
-#endif
-
-#if defined(SPLIT_POINTING_ENABLE)
-# if defined(POINTING_DEVICE_COMBINED)
- static uint8_t old_buttons = 0;
- local_mouse_report.buttons = old_buttons;
- local_mouse_report = pointing_device_driver.get_report(local_mouse_report);
- old_buttons = local_mouse_report.buttons;
-# elif defined(POINTING_DEVICE_LEFT) || defined(POINTING_DEVICE_RIGHT)
- local_mouse_report = POINTING_DEVICE_THIS_SIDE ? pointing_device_driver.get_report(local_mouse_report) : shared_mouse_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
-#else
- local_mouse_report = pointing_device_driver.get_report(local_mouse_report);
-#endif // defined(SPLIT_POINTING_ENABLE)
-
- // allow kb to intercept and modify report
-#if defined(SPLIT_POINTING_ENABLE) && defined(POINTING_DEVICE_COMBINED)
- if (is_keyboard_left()) {
- local_mouse_report = pointing_device_adjust_by_defines(local_mouse_report);
- shared_mouse_report = pointing_device_adjust_by_defines_right(shared_mouse_report);
- } else {
- local_mouse_report = pointing_device_adjust_by_defines_right(local_mouse_report);
- shared_mouse_report = pointing_device_adjust_by_defines(shared_mouse_report);
- }
- local_mouse_report = is_keyboard_left() ? pointing_device_task_combined_kb(local_mouse_report, shared_mouse_report) : pointing_device_task_combined_kb(shared_mouse_report, local_mouse_report);
-#else
- local_mouse_report = pointing_device_adjust_by_defines(local_mouse_report);
- local_mouse_report = pointing_device_task_kb(local_mouse_report);
-#endif
- // combine with mouse report to ensure that the combined is sent correctly
-#ifdef MOUSEKEY_ENABLE
- report_mouse_t mousekey_report = mousekey_get_report();
- local_mouse_report.buttons = local_mouse_report.buttons | mousekey_report.buttons;
-#endif
- pointing_device_send();
-}
-
-/**
- * @brief Gets current mouse report used by pointing device task
- *
- * @return report_mouse_t
- */
-report_mouse_t pointing_device_get_report(void) {
- return local_mouse_report;
-}
-
-/**
- * @brief Sets mouse report used be pointing device task
- *
- * @param[in] mouse_report
- */
-void pointing_device_set_report(report_mouse_t mouse_report) {
- local_mouse_report = mouse_report;
-}
-
-/**
- * @brief Gets current pointing device CPI if supported
- *
- * Gets current cpi from pointing device driver if supported and returns it as uint16_t
- *
- * @return cpi value as uint16_t
- */
-uint16_t pointing_device_get_cpi(void) {
-#if defined(SPLIT_POINTING_ENABLE)
- return POINTING_DEVICE_THIS_SIDE ? pointing_device_driver.get_cpi() : shared_cpi;
-#else
- return pointing_device_driver.get_cpi();
-#endif
-}
-
-/**
- * @brief Set pointing device CPI if supported
- *
- * Takes a uint16_t value to set pointing device cpi if supported by driver.
- *
- * @param[in] cpi uint16_t value.
- */
-void pointing_device_set_cpi(uint16_t cpi) {
-#if defined(SPLIT_POINTING_ENABLE)
- if (POINTING_DEVICE_THIS_SIDE) {
- pointing_device_driver.set_cpi(cpi);
- } else {
- shared_cpi = cpi;
- }
-#else
- pointing_device_driver.set_cpi(cpi);
-#endif
-}
-
-#if defined(SPLIT_POINTING_ENABLE) && defined(POINTING_DEVICE_COMBINED)
-/**
- * @brief Set pointing device CPI if supported
- *
- * Takes a bool and uint16_t and allows setting cpi for a single side when using 2 pointing devices with a split keyboard.
- *
- * NOTE: Only available when using SPLIT_POINTING_ENABLE and POINTING_DEVICE_COMBINED
- *
- * @param[in] left true = left, false = right.
- * @param[in] cpi uint16_t value.
- */
-void pointing_device_set_cpi_on_side(bool left, uint16_t cpi) {
- bool local = (is_keyboard_left() & left) ? true : false;
- if (local) {
- pointing_device_driver.set_cpi(cpi);
- } else {
- shared_cpi = cpi;
- }
-}
-
-/**
- * @brief clamps int16_t to int8_t
- *
- * @param[in] int16_t value
- * @return int8_t clamped value
- */
-static inline int8_t pointing_device_movement_clamp(int16_t value) {
- if (value < INT8_MIN) {
- return INT8_MIN;
- } else if (value > INT8_MAX) {
- return INT8_MAX;
- } else {
- return value;
- }
-}
-
-/**
- * @brief combines 2 mouse reports and returns 2
- *
- * Combines 2 report_mouse_t structs, clamping movement values to int8_t and ignores report_id then returns the resulting report_mouse_t struct.
- *
- * NOTE: Only available when using SPLIT_POINTING_ENABLE and POINTING_DEVICE_COMBINED
- *
- * @param[in] left_report left report_mouse_t
- * @param[in] right_report right report_mouse_t
- * @return combined report_mouse_t of left_report and right_report
- */
-report_mouse_t pointing_device_combine_reports(report_mouse_t left_report, report_mouse_t right_report) {
- left_report.x = pointing_device_movement_clamp((int16_t)left_report.x + right_report.x);
- left_report.y = pointing_device_movement_clamp((int16_t)left_report.y + right_report.y);
- left_report.h = pointing_device_movement_clamp((int16_t)left_report.h + right_report.h);
- left_report.v = pointing_device_movement_clamp((int16_t)left_report.v + right_report.v);
- left_report.buttons |= right_report.buttons;
- return left_report;
-}
-
-/**
- * @brief Adjust mouse report by any optional right pointing configuration defines
- *
- * This applies rotation or inversion to the mouse report as selected by the pointing device common configuration defines.
- *
- * NOTE: Only available when using SPLIT_POINTING_ENABLE and POINTING_DEVICE_COMBINED
- *
- * @param[in] mouse_report report_mouse_t to be adjusted
- * @return report_mouse_t with adjusted values
- */
-report_mouse_t pointing_device_adjust_by_defines_right(report_mouse_t mouse_report) {
- // Support rotation of the sensor data
-# if defined(POINTING_DEVICE_ROTATION_90_RIGHT) || defined(POINTING_DEVICE_ROTATION_RIGHT) || defined(POINTING_DEVICE_ROTATION_RIGHT)
- int8_t x = mouse_report.x, y = mouse_report.y;
-# if defined(POINTING_DEVICE_ROTATION_90_RIGHT)
- mouse_report.x = y;
- mouse_report.y = -x;
-# elif defined(POINTING_DEVICE_ROTATION_180_RIGHT)
- mouse_report.x = -x;
- mouse_report.y = -y;
-# elif defined(POINTING_DEVICE_ROTATION_270_RIGHT)
- mouse_report.x = -y;
- mouse_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_RIGHT)
- mouse_report.x = -mouse_report.x;
-# endif
-# if defined(POINTING_DEVICE_INVERT_Y_RIGHT)
- mouse_report.y = -mouse_report.y;
-# endif
- return mouse_report;
-}
-
-/**
- * @brief Weak function allowing for keyboard level mouse report modification
- *
- * Takes 2 report_mouse_t structs allowing individual modification of sides at keyboard level then returns pointing_device_task_combined_user.
- *
- * NOTE: Only available when using SPLIT_POINTING_ENABLE and POINTING_DEVICE_COMBINED
- *
- * @param[in] left_report report_mouse_t
- * @param[in] right_report report_mouse_t
- * @return pointing_device_task_combined_user(left_report, right_report) by default
- */
-__attribute__((weak)) report_mouse_t pointing_device_task_combined_kb(report_mouse_t left_report, report_mouse_t right_report) {
- return pointing_device_task_combined_user(left_report, right_report);
-}
-
-/**
- * @brief Weak function allowing for user level mouse report modification
- *
- * Takes 2 report_mouse_t structs allowing individual modification of sides at user level then returns pointing_device_combine_reports.
- *
- * NOTE: Only available when using SPLIT_POINTING_ENABLE and POINTING_DEVICE_COMBINED
- *
- * @param[in] left_report report_mouse_t
- * @param[in] right_report report_mouse_t
- * @return pointing_device_combine_reports(left_report, right_report) by default
- */
-__attribute__((weak)) report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
- return pointing_device_combine_reports(left_report, right_report);
-}
-#endif
diff --git a/quantum/pointing_device.h b/quantum/pointing_device.h
deleted file mode 100644
index 5c0eaeaf34..0000000000
--- a/quantum/pointing_device.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
-Copyright 2017 Joshua Broekhuijsen <snipeye+qmk@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 <stdint.h>
-#include "host.h"
-#include "report.h"
-
-#if defined(POINTING_DEVICE_DRIVER_adns5050)
-# include "drivers/sensors/adns5050.h"
-#elif defined(POINTING_DEVICE_DRIVER_adns9800)
-# include "spi_master.h"
-# include "drivers/sensors/adns9800.h"
-#elif defined(POINTING_DEVICE_DRIVER_analog_joystick)
-# include "analog.h"
-# include "drivers/sensors/analog_joystick.h"
-#elif defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_i2c) || defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi)
-# include "drivers/sensors/cirque_pinnacle.h"
-#elif defined(POINTING_DEVICE_DRIVER_pimoroni_trackball)
-# include "i2c_master.h"
-# include "drivers/sensors/pimoroni_trackball.h"
-// support for legacy pimoroni defines
-# ifdef PIMORONI_TRACKBALL_INVERT_X
-# define POINTING_DEVICE_INVERT_X
-# endif
-# ifdef PIMORONI_TRACKBALL_INVERT_Y
-# define POINTING_DEVICE_INVERT_Y
-# endif
-# ifdef PIMORONI_TRACKBALL_ROTATE
-# define POINTING_DEVICE_ROTATION_90
-# endif
-#elif defined(POINTING_DEVICE_DRIVER_pmw3360)
-# include "spi_master.h"
-# include "drivers/sensors/pmw3360.h"
-#elif defined(POINTING_DEVICE_DRIVER_pmw3389)
-# include "spi_master.h"
-# include "drivers/sensors/pmw3389.h"
-#else
-void pointing_device_driver_init(void);
-report_mouse_t pointing_device_driver_get_report(report_mouse_t mouse_report);
-uint16_t pointing_device_driver_get_cpi(void);
-void pointing_device_driver_set_cpi(uint16_t cpi);
-#endif
-
-typedef struct {
- void (*init)(void);
- report_mouse_t (*get_report)(report_mouse_t mouse_report);
- void (*set_cpi)(uint16_t);
- uint16_t (*get_cpi)(void);
-} pointing_device_driver_t;
-
-typedef enum {
- POINTING_DEVICE_BUTTON1,
- POINTING_DEVICE_BUTTON2,
- POINTING_DEVICE_BUTTON3,
- POINTING_DEVICE_BUTTON4,
- POINTING_DEVICE_BUTTON5,
- POINTING_DEVICE_BUTTON6,
- POINTING_DEVICE_BUTTON7,
- POINTING_DEVICE_BUTTON8,
-} pointing_device_buttons_t;
-
-void pointing_device_init(void);
-void pointing_device_task(void);
-void pointing_device_send(void);
-report_mouse_t pointing_device_get_report(void);
-void pointing_device_set_report(report_mouse_t mouse_report);
-uint16_t pointing_device_get_cpi(void);
-void pointing_device_set_cpi(uint16_t cpi);
-
-void pointing_device_init_kb(void);
-void pointing_device_init_user(void);
-report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report);
-report_mouse_t pointing_device_task_user(report_mouse_t mouse_report);
-uint8_t pointing_device_handle_buttons(uint8_t buttons, bool pressed, pointing_device_buttons_t button);
-report_mouse_t pointing_device_adjust_by_defines(report_mouse_t mouse_report);
-
-#if defined(SPLIT_POINTING_ENABLE)
-void pointing_device_set_shared_report(report_mouse_t report);
-uint16_t pointing_device_get_shared_cpi(void);
-# if !defined(POINTING_DEVICE_TASK_THROTTLE_MS)
-# define POINTING_DEVICE_TASK_THROTTLE_MS 1
-# endif
-# if defined(POINTING_DEVICE_COMBINED)
-void pointing_device_set_cpi_on_side(bool left, uint16_t cpi);
-report_mouse_t pointing_device_combine_reports(report_mouse_t left_report, report_mouse_t right_report);
-report_mouse_t pointing_device_task_combined_kb(report_mouse_t left_report, report_mouse_t right_report);
-report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report);
-report_mouse_t pointing_device_adjust_by_defines_right(report_mouse_t mouse_report);
-# endif // defined(POINTING_DEVICE_COMBINED)
-#endif // defined(SPLIT_POINTING_ENABLE)
diff --git a/quantum/pointing_device/pointing_device.c b/quantum/pointing_device/pointing_device.c
new file mode 100644
index 0000000000..505a7a6ffd
--- /dev/null
+++ b/quantum/pointing_device/pointing_device.c
@@ -0,0 +1,471 @@
+/* Copyright 2017 Joshua Broekhuijsen <snipeye+qmk@gmail.com>
+ * 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
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "pointing_device.h"
+#include <string.h>
+#include "timer.h"
+#ifdef MOUSEKEY_ENABLE
+# include "mousekey.h"
+#endif
+#if (defined(POINTING_DEVICE_ROTATION_90) + defined(POINTING_DEVICE_ROTATION_180) + defined(POINTING_DEVICE_ROTATION_270)) > 1
+# error More than one rotation selected. This is not supported.
+#endif
+
+#if defined(POINTING_DEVICE_LEFT) || defined(POINTING_DEVICE_RIGHT) || defined(POINTING_DEVICE_COMBINED)
+# ifndef SPLIT_POINTING_ENABLE
+# error "Using POINTING_DEVICE_LEFT or POINTING_DEVICE_RIGHT or POINTING_DEVICE_COMBINED, then SPLIT_POINTING_ENABLE is required but has not been defined"
+# endif
+#endif
+
+#if defined(SPLIT_POINTING_ENABLE)
+# include "transactions.h"
+# include "keyboard.h"
+
+report_mouse_t shared_mouse_report = {};
+uint16_t shared_cpi = 0;
+
+/**
+ * @brief Sets the shared mouse report used be pointing device task
+ *
+ * NOTE : Only available when using SPLIT_POINTING_ENABLE
+ *
+ * @param[in] new_mouse_report report_mouse_t
+ */
+void pointing_device_set_shared_report(report_mouse_t new_mouse_report) {
+ shared_mouse_report = new_mouse_report;
+}
+
+/**
+ * @brief Gets current pointing device CPI if supported
+ *
+ * Gets current cpi of the shared report and returns it as uint16_t
+ *
+ * NOTE : Only available when using SPLIT_POINTING_ENABLE
+ *
+ * @return cpi value as uint16_t
+ */
+uint16_t pointing_device_get_shared_cpi(void) {
+ return shared_cpi;
+}
+
+# if defined(POINTING_DEVICE_LEFT)
+# define POINTING_DEVICE_THIS_SIDE is_keyboard_left()
+# elif defined(POINTING_DEVICE_RIGHT)
+# define POINTING_DEVICE_THIS_SIDE !is_keyboard_left()
+# elif defined(POINTING_DEVICE_COMBINED)
+# define POINTING_DEVICE_THIS_SIDE true
+# endif
+
+#endif // defined(SPLIT_POINTING_ENABLE)
+
+static report_mouse_t local_mouse_report = {};
+
+extern const pointing_device_driver_t pointing_device_driver;
+
+/**
+ * @brief Keyboard level code pointing device initialisation
+ *
+ */
+__attribute__((weak)) void pointing_device_init_kb(void) {}
+
+/**
+ * @brief User level code pointing device initialisation
+ *
+ */
+__attribute__((weak)) void pointing_device_init_user(void) {}
+
+/**
+ * @brief Weak function allowing for keyboard level mouse report modification
+ *
+ * Takes report_mouse_t struct allowing modification at keyboard level then returns report_mouse_t.
+ *
+ * @param[in] mouse_report report_mouse_t
+ * @return report_mouse_t
+ */
+__attribute__((weak)) report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report) {
+ return pointing_device_task_user(mouse_report);
+}
+
+/**
+ * @brief Weak function allowing for user level mouse report modification
+ *
+ * Takes report_mouse_t struct allowing modification at user level then returns report_mouse_t.
+ *
+ * @param[in] mouse_report report_mouse_t
+ * @return report_mouse_t
+ */
+__attribute__((weak)) report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
+ return mouse_report;
+}
+
+/**
+ * @brief Handles pointing device buttons
+ *
+ * Returns modified button bitmask using bool pressed and selected pointing_device_buttons_t button in uint8_t buttons bitmask.
+ *
+ * @param buttons[in] uint8_t bitmask
+ * @param pressed[in] bool
+ * @param button[in] pointing_device_buttons_t value
+ * @return Modified uint8_t bitmask buttons
+ */
+__attribute__((weak)) uint8_t pointing_device_handle_buttons(uint8_t buttons, bool pressed, pointing_device_buttons_t button) {
+ if (pressed) {
+ buttons |= 1 << (button);
+ } else {
+ buttons &= ~(1 << (button));
+ }
+ return buttons;
+}
+
+/**
+ * @brief Initialises pointing device
+ *
+ * Initialises pointing device, perform driver init and optional keyboard/user level code.
+ */
+__attribute__((weak)) void pointing_device_init(void) {
+#if defined(SPLIT_POINTING_ENABLE)
+ if ((POINTING_DEVICE_THIS_SIDE))
+#endif
+ {
+ pointing_device_driver.init();
+#ifdef POINTING_DEVICE_MOTION_PIN
+ setPinInputHigh(POINTING_DEVICE_MOTION_PIN);
+#endif
+ }
+
+ pointing_device_init_kb();
+ pointing_device_init_user();
+}
+
+/**
+ * @brief Sends processed mouse report to host
+ *
+ * This sends the mouse report generated by pointing_device_task if changed since the last report. Once send zeros mouse report except buttons.
+ *
+ */
+__attribute__((weak)) void pointing_device_send(void) {
+ static report_mouse_t old_report = {};
+
+ // If you need to do other things, like debugging, this is the place to do it.
+ if (has_mouse_report_changed(&local_mouse_report, &old_report)) {
+ host_mouse_send(&local_mouse_report);
+ }
+ // send it and 0 it out except for buttons, so those stay until they are explicity over-ridden using update_pointing_device
+ local_mouse_report.x = 0;
+ local_mouse_report.y = 0;
+ local_mouse_report.v = 0;
+ local_mouse_report.h = 0;
+
+ memcpy(&old_report, &local_mouse_report, sizeof(local_mouse_report));
+}
+
+/**
+ * @brief Adjust mouse report by any optional common pointing configuration defines
+ *
+ * This applies rotation or inversion to the mouse report as selected by the pointing device common configuration defines.
+ *
+ * @param mouse_report[in] takes a report_mouse_t to be adjusted
+ * @return report_mouse_t with adjusted values
+ */
+report_mouse_t pointing_device_adjust_by_defines(report_mouse_t mouse_report) {
+ // Support rotation of the sensor data
+#if defined(POINTING_DEVICE_ROTATION_90) || defined(POINTING_DEVICE_ROTATION_180) || defined(POINTING_DEVICE_ROTATION_270)
+ mouse_xy_report_t x = mouse_report.x;
+ mouse_xy_report_t y = mouse_report.y;
+# if defined(POINTING_DEVICE_ROTATION_90)
+ mouse_report.x = y;
+ mouse_report.y = -x;
+# elif defined(POINTING_DEVICE_ROTATION_180)
+ mouse_report.x = -x;
+ mouse_report.y = -y;
+# elif defined(POINTING_DEVICE_ROTATION_270)
+ mouse_report.x = -y;
+ mouse_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)
+ mouse_report.x = -mouse_report.x;
+#endif
+#if defined(POINTING_DEVICE_INVERT_Y)
+ mouse_report.y = -mouse_report.y;
+#endif
+ return mouse_report;
+}
+
+/**
+ * @brief Retrieves and processes pointing device data.
+ *
+ * This function is part of the keyboard loop and retrieves the mouse report from the pointing device driver.
+ * It applies any optional configuration e.g. rotation or axis inversion and then initiates a send.
+ *
+ */
+__attribute__((weak)) void pointing_device_task(void) {
+#if defined(SPLIT_POINTING_ENABLE)
+ // Don't poll the target side pointing device.
+ if (!is_keyboard_master()) {
+ return;
+ };
+#endif
+
+#if (POINTING_DEVICE_TASK_THROTTLE_MS > 0)
+ static uint32_t last_exec = 0;
+ if (timer_elapsed32(last_exec) < POINTING_DEVICE_TASK_THROTTLE_MS) {
+ return;
+ }
+ last_exec = timer_read32();
+#endif
+
+ // Gather report info
+#ifdef POINTING_DEVICE_MOTION_PIN
+# if defined(SPLIT_POINTING_ENABLE)
+# error POINTING_DEVICE_MOTION_PIN not supported when sharing the pointing device report between sides.
+# endif
+ if (!readPin(POINTING_DEVICE_MOTION_PIN))
+#endif
+
+#if defined(SPLIT_POINTING_ENABLE)
+# if defined(POINTING_DEVICE_COMBINED)
+ static uint8_t old_buttons = 0;
+ local_mouse_report.buttons = old_buttons;
+ local_mouse_report = pointing_device_driver.get_report(local_mouse_report);
+ old_buttons = local_mouse_report.buttons;
+# elif defined(POINTING_DEVICE_LEFT) || defined(POINTING_DEVICE_RIGHT)
+ local_mouse_report = POINTING_DEVICE_THIS_SIDE ? pointing_device_driver.get_report(local_mouse_report) : shared_mouse_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
+#else
+ local_mouse_report = pointing_device_driver.get_report(local_mouse_report);
+#endif // defined(SPLIT_POINTING_ENABLE)
+
+ // allow kb to intercept and modify report
+#if defined(SPLIT_POINTING_ENABLE) && defined(POINTING_DEVICE_COMBINED)
+ if (is_keyboard_left()) {
+ local_mouse_report = pointing_device_adjust_by_defines(local_mouse_report);
+ shared_mouse_report = pointing_device_adjust_by_defines_right(shared_mouse_report);
+ } else {
+ local_mouse_report = pointing_device_adjust_by_defines_right(local_mouse_report);
+ shared_mouse_report = pointing_device_adjust_by_defines(shared_mouse_report);
+ }
+ local_mouse_report = is_keyboard_left() ? pointing_device_task_combined_kb(local_mouse_report, shared_mouse_report) : pointing_device_task_combined_kb(shared_mouse_report, local_mouse_report);
+#else
+ local_mouse_report = pointing_device_adjust_by_defines(local_mouse_report);
+ local_mouse_report = pointing_device_task_kb(local_mouse_report);
+#endif
+ // combine with mouse report to ensure that the combined is sent correctly
+#ifdef MOUSEKEY_ENABLE
+ report_mouse_t mousekey_report = mousekey_get_report();
+ local_mouse_report.buttons = local_mouse_report.buttons | mousekey_report.buttons;
+#endif
+ pointing_device_send();
+}
+
+/**
+ * @brief Gets current mouse report used by pointing device task
+ *
+ * @return report_mouse_t
+ */
+report_mouse_t pointing_device_get_report(void) {
+ return local_mouse_report;
+}
+
+/**
+ * @brief Sets mouse report used be pointing device task
+ *
+ * @param[in] mouse_report
+ */
+void pointing_device_set_report(report_mouse_t mouse_report) {
+ local_mouse_report = mouse_report;
+}
+
+/**
+ * @brief Gets current pointing device CPI if supported
+ *
+ * Gets current cpi from pointing device driver if supported and returns it as uint16_t
+ *
+ * @return cpi value as uint16_t
+ */
+uint16_t pointing_device_get_cpi(void) {
+#if defined(SPLIT_POINTING_ENABLE)
+ return POINTING_DEVICE_THIS_SIDE ? pointing_device_driver.get_cpi() : shared_cpi;
+#else
+ return pointing_device_driver.get_cpi();
+#endif
+}
+
+/**
+ * @brief Set pointing device CPI if supported
+ *
+ * Takes a uint16_t value to set pointing device cpi if supported by driver.
+ *
+ * @param[in] cpi uint16_t value.
+ */
+void pointing_device_set_cpi(uint16_t cpi) {
+#if defined(SPLIT_POINTING_ENABLE)
+ if (POINTING_DEVICE_THIS_SIDE) {
+ pointing_device_driver.set_cpi(cpi);
+ } else {
+ shared_cpi = cpi;
+ }
+#else
+ pointing_device_driver.set_cpi(cpi);
+#endif
+}
+
+#if defined(SPLIT_POINTING_ENABLE) && defined(POINTING_DEVICE_COMBINED)
+/**
+ * @brief Set pointing device CPI if supported
+ *
+ * Takes a bool and uint16_t and allows setting cpi for a single side when using 2 pointing devices with a split keyboard.
+ *
+ * NOTE: Only available when using SPLIT_POINTING_ENABLE and POINTING_DEVICE_COMBINED
+ *
+ * @param[in] left true = left, false = right.
+ * @param[in] cpi uint16_t value.
+ */
+void pointing_device_set_cpi_on_side(bool left, uint16_t cpi) {
+ bool local = (is_keyboard_left() & left) ? true : false;
+ if (local) {
+ pointing_device_driver.set_cpi(cpi);
+ } else {
+ shared_cpi = cpi;
+ }
+}
+
+/**
+ * @brief clamps int16_t to int8_t
+ *
+ * @param[in] int16_t value
+ * @return int8_t clamped value
+ */
+static inline int8_t pointing_device_hv_clamp(int16_t value) {
+ if (value < INT8_MIN) {
+ return INT8_MIN;
+ } else if (value > INT8_MAX) {
+ return INT8_MAX;
+ } else {
+ return value;
+ }
+}
+
+/**
+ * @brief clamps int16_t to int8_t
+ *
+ * @param[in] clamp_range_t value
+ * @return mouse_xy_report_t clamped value
+ */
+static inline mouse_xy_report_t pointing_device_xy_clamp(clamp_range_t value) {
+ if (value < XY_REPORT_MIN) {
+ return XY_REPORT_MIN;
+ } else if (value > XY_REPORT_MAX) {
+ return XY_REPORT_MAX;
+ } else {
+ return value;
+ }
+}
+/**
+ * @brief combines 2 mouse reports and returns 2
+ *
+ * Combines 2 report_mouse_t structs, clamping movement values to int8_t and ignores report_id then returns the resulting report_mouse_t struct.
+ *
+ * NOTE: Only available when using SPLIT_POINTING_ENABLE and POINTING_DEVICE_COMBINED
+ *
+ * @param[in] left_report left report_mouse_t
+ * @param[in] right_report right report_mouse_t
+ * @return combined report_mouse_t of left_report and right_report
+ */
+report_mouse_t pointing_device_combine_reports(report_mouse_t left_report, report_mouse_t right_report) {
+ left_report.x = pointing_device_xy_clamp((clamp_range_t)left_report.x + right_report.x);
+ left_report.y = pointing_device_xy_clamp((clamp_range_t)left_report.y + right_report.y);
+ left_report.h = pointing_device_hv_clamp((int16_t)left_report.h + right_report.h);
+ left_report.v = pointing_device_hv_clamp((int16_t)left_report.v + right_report.v);
+ left_report.buttons |= right_report.buttons;
+ return left_report;
+}
+
+/**
+ * @brief Adjust mouse report by any optional right pointing configuration defines
+ *
+ * This applies rotation or inversion to the mouse report as selected by the pointing device common configuration defines.
+ *
+ * NOTE: Only available when using SPLIT_POINTING_ENABLE and POINTING_DEVICE_COMBINED
+ *
+ * @param[in] mouse_report report_mouse_t to be adjusted
+ * @return report_mouse_t with adjusted values
+ */
+report_mouse_t pointing_device_adjust_by_defines_right(report_mouse_t mouse_report) {
+ // Support rotation of the sensor data
+# if defined(POINTING_DEVICE_ROTATION_90_RIGHT) || defined(POINTING_DEVICE_ROTATION_180_RIGHT) || defined(POINTING_DEVICE_ROTATION_270_RIGHT)
+ mouse_xy_report_t x = mouse_report.x;
+ mouse_xy_report_t y = mouse_report.y;
+# if defined(POINTING_DEVICE_ROTATION_90_RIGHT)
+ mouse_report.x = y;
+ mouse_report.y = -x;
+# elif defined(POINTING_DEVICE_ROTATION_180_RIGHT)
+ mouse_report.x = -x;
+ mouse_report.y = -y;
+# elif defined(POINTING_DEVICE_ROTATION_270_RIGHT)
+ mouse_report.x = -y;
+ mouse_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_RIGHT)
+ mouse_report.x = -mouse_report.x;
+# endif
+# if defined(POINTING_DEVICE_INVERT_Y_RIGHT)
+ mouse_report.y = -mouse_report.y;
+# endif
+ return mouse_report;
+}
+
+/**
+ * @brief Weak function allowing for keyboard level mouse report modification
+ *
+ * Takes 2 report_mouse_t structs allowing individual modification of sides at keyboard level then returns pointing_device_task_combined_user.
+ *
+ * NOTE: Only available when using SPLIT_POINTING_ENABLE and POINTING_DEVICE_COMBINED
+ *
+ * @param[in] left_report report_mouse_t
+ * @param[in] right_report report_mouse_t
+ * @return pointing_device_task_combined_user(left_report, right_report) by default
+ */
+__attribute__((weak)) report_mouse_t pointing_device_task_combined_kb(report_mouse_t left_report, report_mouse_t right_report) {
+ return pointing_device_task_combined_user(left_report, right_report);
+}
+
+/**
+ * @brief Weak function allowing for user level mouse report modification
+ *
+ * Takes 2 report_mouse_t structs allowing individual modification of sides at user level then returns pointing_device_combine_reports.
+ *
+ * NOTE: Only available when using SPLIT_POINTING_ENABLE and POINTING_DEVICE_COMBINED
+ *
+ * @param[in] left_report report_mouse_t
+ * @param[in] right_report report_mouse_t
+ * @return pointing_device_combine_reports(left_report, right_report) by default
+ */
+__attribute__((weak)) report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
+ return pointing_device_combine_reports(left_report, right_report);
+}
+#endif
diff --git a/quantum/pointing_device/pointing_device.h b/quantum/pointing_device/pointing_device.h
new file mode 100644
index 0000000000..77db5471ea
--- /dev/null
+++ b/quantum/pointing_device/pointing_device.h
@@ -0,0 +1,117 @@
+/*
+Copyright 2017 Joshua Broekhuijsen <snipeye+qmk@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 <stdint.h>
+#include "host.h"
+#include "report.h"
+
+#if defined(POINTING_DEVICE_DRIVER_adns5050)
+# include "drivers/sensors/adns5050.h"
+#elif defined(POINTING_DEVICE_DRIVER_adns9800)
+# include "spi_master.h"
+# include "drivers/sensors/adns9800.h"
+#elif defined(POINTING_DEVICE_DRIVER_analog_joystick)
+# include "analog.h"
+# include "drivers/sensors/analog_joystick.h"
+#elif defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_i2c) || defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi)
+# include "drivers/sensors/cirque_pinnacle.h"
+# include "drivers/sensors/cirque_pinnacle_gestures.h"
+# include "pointing_device_gestures.h"
+#elif defined(POINTING_DEVICE_DRIVER_paw3204)
+# include "drivers/sensors/paw3204.h"
+#elif defined(POINTING_DEVICE_DRIVER_pimoroni_trackball)
+# include "i2c_master.h"
+# include "drivers/sensors/pimoroni_trackball.h"
+// support for legacy pimoroni defines
+# ifdef PIMORONI_TRACKBALL_INVERT_X
+# define POINTING_DEVICE_INVERT_X
+# endif
+# ifdef PIMORONI_TRACKBALL_INVERT_Y
+# define POINTING_DEVICE_INVERT_Y
+# endif
+# ifdef PIMORONI_TRACKBALL_ROTATE
+# define POINTING_DEVICE_ROTATION_90
+# endif
+#elif defined(POINTING_DEVICE_DRIVER_pmw3360) || defined(POINTING_DEVICE_DRIVER_pmw3389)
+# include "spi_master.h"
+# include "drivers/sensors/pmw33xx_common.h"
+#else
+void pointing_device_driver_init(void);
+report_mouse_t pointing_device_driver_get_report(report_mouse_t mouse_report);
+uint16_t pointing_device_driver_get_cpi(void);
+void pointing_device_driver_set_cpi(uint16_t cpi);
+#endif
+
+typedef struct {
+ void (*init)(void);
+ report_mouse_t (*get_report)(report_mouse_t mouse_report);
+ void (*set_cpi)(uint16_t);
+ uint16_t (*get_cpi)(void);
+} pointing_device_driver_t;
+
+typedef enum {
+ POINTING_DEVICE_BUTTON1,
+ POINTING_DEVICE_BUTTON2,
+ POINTING_DEVICE_BUTTON3,
+ POINTING_DEVICE_BUTTON4,
+ POINTING_DEVICE_BUTTON5,
+ POINTING_DEVICE_BUTTON6,
+ POINTING_DEVICE_BUTTON7,
+ POINTING_DEVICE_BUTTON8,
+} pointing_device_buttons_t;
+
+#ifdef MOUSE_EXTENDED_REPORT
+# define XY_REPORT_MIN INT16_MIN
+# define XY_REPORT_MAX INT16_MAX
+typedef int32_t clamp_range_t;
+#else
+# define XY_REPORT_MIN INT8_MIN
+# define XY_REPORT_MAX INT8_MAX
+typedef int16_t clamp_range_t;
+#endif
+
+void pointing_device_init(void);
+void pointing_device_task(void);
+void pointing_device_send(void);
+report_mouse_t pointing_device_get_report(void);
+void pointing_device_set_report(report_mouse_t mouse_report);
+uint16_t pointing_device_get_cpi(void);
+void pointing_device_set_cpi(uint16_t cpi);
+
+void pointing_device_init_kb(void);
+void pointing_device_init_user(void);
+report_mouse_t pointing_device_task_kb(report_mouse_t mouse_report);
+report_mouse_t pointing_device_task_user(report_mouse_t mouse_report);
+uint8_t pointing_device_handle_buttons(uint8_t buttons, bool pressed, pointing_device_buttons_t button);
+report_mouse_t pointing_device_adjust_by_defines(report_mouse_t mouse_report);
+
+#if defined(SPLIT_POINTING_ENABLE)
+void pointing_device_set_shared_report(report_mouse_t report);
+uint16_t pointing_device_get_shared_cpi(void);
+# if !defined(POINTING_DEVICE_TASK_THROTTLE_MS)
+# define POINTING_DEVICE_TASK_THROTTLE_MS 1
+# endif
+# if defined(POINTING_DEVICE_COMBINED)
+void pointing_device_set_cpi_on_side(bool left, uint16_t cpi);
+report_mouse_t pointing_device_combine_reports(report_mouse_t left_report, report_mouse_t right_report);
+report_mouse_t pointing_device_task_combined_kb(report_mouse_t left_report, report_mouse_t right_report);
+report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report);
+report_mouse_t pointing_device_adjust_by_defines_right(report_mouse_t mouse_report);
+# endif // defined(POINTING_DEVICE_COMBINED)
+#endif // defined(SPLIT_POINTING_ENABLE)
diff --git a/quantum/pointing_device/pointing_device_drivers.c b/quantum/pointing_device/pointing_device_drivers.c
new file mode 100644
index 0000000000..b96f8ff4b3
--- /dev/null
+++ b/quantum/pointing_device/pointing_device_drivers.c
@@ -0,0 +1,368 @@
+/* Copyright 2017 Joshua Broekhuijsen <snipeye+qmk@gmail.com>
+ * 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
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "pointing_device.h"
+#include "debug.h"
+#include "wait.h"
+#include "timer.h"
+#include <stddef.h>
+
+#define CONSTRAIN_HID(amt) ((amt) < INT8_MIN ? INT8_MIN : ((amt) > INT8_MAX ? INT8_MAX : (amt)))
+#define CONSTRAIN_HID_XY(amt) ((amt) < XY_REPORT_MIN ? XY_REPORT_MIN : ((amt) > XY_REPORT_MAX ? XY_REPORT_MAX : (amt)))
+
+// get_report functions should probably be moved to their respective drivers.
+
+#if defined(POINTING_DEVICE_DRIVER_adns5050)
+report_mouse_t adns5050_get_report(report_mouse_t mouse_report) {
+ report_adns5050_t data = adns5050_read_burst();
+
+ if (data.dx != 0 || data.dy != 0) {
+# ifdef CONSOLE_ENABLE
+ if (debug_mouse) dprintf("Raw ] X: %d, Y: %d\n", data.dx, data.dy);
+# endif
+
+ mouse_report.x = (mouse_xy_report_t)data.dx;
+ mouse_report.y = (mouse_xy_report_t)data.dy;
+ }
+
+ return mouse_report;
+}
+
+// clang-format off
+const pointing_device_driver_t pointing_device_driver = {
+ .init = adns5050_init,
+ .get_report = adns5050_get_report,
+ .set_cpi = adns5050_set_cpi,
+ .get_cpi = adns5050_get_cpi,
+};
+// clang-format on
+
+#elif defined(POINTING_DEVICE_DRIVER_adns9800)
+
+report_mouse_t adns9800_get_report_driver(report_mouse_t mouse_report) {
+ report_adns9800_t sensor_report = adns9800_get_report();
+
+ mouse_report.x = CONSTRAIN_HID_XY(sensor_report.x);
+ mouse_report.y = CONSTRAIN_HID_XY(sensor_report.y);
+
+ return mouse_report;
+}
+
+// clang-format off
+const pointing_device_driver_t pointing_device_driver = {
+ .init = adns9800_init,
+ .get_report = adns9800_get_report_driver,
+ .set_cpi = adns9800_set_cpi,
+ .get_cpi = adns9800_get_cpi
+};
+// clang-format on
+
+#elif defined(POINTING_DEVICE_DRIVER_analog_joystick)
+report_mouse_t analog_joystick_get_report(report_mouse_t mouse_report) {
+ report_analog_joystick_t data = analog_joystick_read();
+
+# ifdef CONSOLE_ENABLE
+ if (debug_mouse) dprintf("Raw ] X: %d, Y: %d\n", data.x, data.y);
+# endif
+
+ mouse_report.x = data.x;
+ mouse_report.y = data.y;
+
+ mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, data.button, POINTING_DEVICE_BUTTON1);
+
+ return mouse_report;
+}
+
+// clang-format off
+const pointing_device_driver_t pointing_device_driver = {
+ .init = analog_joystick_init,
+ .get_report = analog_joystick_get_report,
+ .set_cpi = NULL,
+ .get_cpi = NULL
+};
+// clang-format on
+
+#elif defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_i2c) || defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi)
+# ifdef POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE
+static bool cursor_glide_enable = true;
+
+static cursor_glide_context_t glide = {.config = {
+ .coef = 102, /* Good default friction coef */
+ .interval = 10, /* 100sps */
+ .trigger_px = 10, /* Default threshold in case of hover, set to 0 if you'd like */
+ }};
+
+void cirque_pinnacle_enable_cursor_glide(bool enable) {
+ cursor_glide_enable = enable;
+}
+
+void cirque_pinnacle_configure_cursor_glide(float trigger_px) {
+ glide.config.trigger_px = trigger_px;
+}
+# endif
+
+# if CIRQUE_PINNACLE_POSITION_MODE
+report_mouse_t cirque_pinnacle_get_report(report_mouse_t mouse_report) {
+ pinnacle_data_t touchData = cirque_pinnacle_read_data();
+ mouse_xy_report_t report_x = 0, report_y = 0;
+ static uint16_t x = 0, y = 0;
+# ifdef POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE
+ cursor_glide_t glide_report = {0};
+
+ if (cursor_glide_enable) {
+ glide_report = cursor_glide_check(&glide);
+ }
+# endif
+
+ if (!touchData.valid) {
+# ifdef POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE
+ if (cursor_glide_enable && glide_report.valid) {
+ report_x = glide_report.dx;
+ report_y = glide_report.dy;
+ goto mouse_report_update;
+ }
+# endif
+ return mouse_report;
+ }
+
+# if CONSOLE_ENABLE
+ if (debug_mouse && touchData.touchDown) {
+ dprintf("cirque_pinnacle touchData x=%4d y=%4d z=%2d\n", touchData.xValue, touchData.yValue, touchData.zValue);
+ }
+# endif
+
+ // Scale coordinates to arbitrary X, Y resolution
+ cirque_pinnacle_scale_data(&touchData, cirque_pinnacle_get_scale(), cirque_pinnacle_get_scale());
+
+ if (!cirque_pinnacle_gestures(&mouse_report, touchData)) {
+ if (x && y && touchData.xValue && touchData.yValue) {
+ report_x = CONSTRAIN_HID_XY((int16_t)(touchData.xValue - x));
+ report_y = CONSTRAIN_HID_XY((int16_t)(touchData.yValue - y));
+ }
+ x = touchData.xValue;
+ y = touchData.yValue;
+
+# ifdef POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE
+ if (cursor_glide_enable) {
+ if (touchData.touchDown) {
+ cursor_glide_update(&glide, report_x, report_y, touchData.zValue);
+ } else if (!glide_report.valid) {
+ glide_report = cursor_glide_start(&glide);
+ if (glide_report.valid) {
+ report_x = glide_report.dx;
+ report_y = glide_report.dy;
+ }
+ }
+ }
+# endif
+ }
+
+# ifdef POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE
+mouse_report_update:
+# endif
+ mouse_report.x = report_x;
+ mouse_report.y = report_y;
+
+ return mouse_report;
+}
+
+uint16_t cirque_pinnacle_get_cpi(void) {
+ return CIRQUE_PINNACLE_PX_TO_INCH(cirque_pinnacle_get_scale());
+}
+void cirque_pinnacle_set_cpi(uint16_t cpi) {
+ cirque_pinnacle_set_scale(CIRQUE_PINNACLE_INCH_TO_PX(cpi));
+}
+
+// clang-format off
+const pointing_device_driver_t pointing_device_driver = {
+ .init = cirque_pinnacle_init,
+ .get_report = cirque_pinnacle_get_report,
+ .set_cpi = cirque_pinnacle_set_cpi,
+ .get_cpi = cirque_pinnacle_get_cpi
+};
+// clang-format on
+# else
+report_mouse_t cirque_pinnacle_get_report(report_mouse_t mouse_report) {
+ pinnacle_data_t touchData = cirque_pinnacle_read_data();
+
+ // Scale coordinates to arbitrary X, Y resolution
+ cirque_pinnacle_scale_data(&touchData, cirque_pinnacle_get_scale(), cirque_pinnacle_get_scale());
+
+ if (touchData.valid) {
+ mouse_report.buttons = touchData.buttons;
+ mouse_report.x = CONSTRAIN_HID_XY(touchData.xDelta);
+ mouse_report.y = CONSTRAIN_HID_XY(touchData.yDelta);
+ mouse_report.v = touchData.wheelCount;
+ }
+ return mouse_report;
+}
+
+// clang-format off
+const pointing_device_driver_t pointing_device_driver = {
+ .init = cirque_pinnacle_init,
+ .get_report = cirque_pinnacle_get_report,
+ .set_cpi = cirque_pinnacle_set_scale,
+ .get_cpi = cirque_pinnacle_get_scale
+};
+// clang-format on
+# endif
+
+#elif defined(POINTING_DEVICE_DRIVER_paw3204)
+
+report_mouse_t paw3204_get_report(report_mouse_t mouse_report) {
+ report_paw3204_t data = paw3204_read();
+ if (data.isMotion) {
+# ifdef CONSOLE_ENABLE
+ dprintf("Raw ] X: %d, Y: %d\n", data.x, data.y);
+# endif
+
+ mouse_report.x = data.x;
+ mouse_report.y = data.y;
+ }
+
+ return mouse_report;
+}
+const pointing_device_driver_t pointing_device_driver = {
+ .init = paw3204_init,
+ .get_report = paw3204_get_report,
+ .set_cpi = paw3204_set_cpi,
+ .get_cpi = paw3204_get_cpi,
+};
+#elif defined(POINTING_DEVICE_DRIVER_pimoroni_trackball)
+
+mouse_xy_report_t pimoroni_trackball_adapt_values(clamp_range_t* offset) {
+ if (*offset > XY_REPORT_MAX) {
+ *offset -= XY_REPORT_MAX;
+ return (mouse_xy_report_t)XY_REPORT_MAX;
+ } else if (*offset < XY_REPORT_MIN) {
+ *offset += XY_REPORT_MAX;
+ return (mouse_xy_report_t)XY_REPORT_MIN;
+ } else {
+ mouse_xy_report_t temp_return = *offset;
+ *offset = 0;
+ return temp_return;
+ }
+}
+
+report_mouse_t pimoroni_trackball_get_report(report_mouse_t mouse_report) {
+ static uint16_t debounce = 0;
+ static uint8_t error_count = 0;
+ pimoroni_data_t pimoroni_data = {0};
+ static clamp_range_t x_offset = 0, y_offset = 0;
+
+ if (error_count < PIMORONI_TRACKBALL_ERROR_COUNT) {
+ i2c_status_t status = read_pimoroni_trackball(&pimoroni_data);
+
+ if (status == I2C_STATUS_SUCCESS) {
+ error_count = 0;
+
+ if (!(pimoroni_data.click & 128)) {
+ mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, false, POINTING_DEVICE_BUTTON1);
+ if (!debounce) {
+ x_offset += pimoroni_trackball_get_offsets(pimoroni_data.right, pimoroni_data.left, PIMORONI_TRACKBALL_SCALE);
+ y_offset += pimoroni_trackball_get_offsets(pimoroni_data.down, pimoroni_data.up, PIMORONI_TRACKBALL_SCALE);
+ mouse_report.x = pimoroni_trackball_adapt_values(&x_offset);
+ mouse_report.y = pimoroni_trackball_adapt_values(&y_offset);
+ } else {
+ debounce--;
+ }
+ } else {
+ mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, true, POINTING_DEVICE_BUTTON1);
+ debounce = PIMORONI_TRACKBALL_DEBOUNCE_CYCLES;
+ }
+ } else {
+ error_count++;
+ }
+ }
+ return mouse_report;
+}
+
+// clang-format off
+const pointing_device_driver_t pointing_device_driver = {
+ .init = pimoroni_trackball_device_init,
+ .get_report = pimoroni_trackball_get_report,
+ .set_cpi = pimoroni_trackball_set_cpi,
+ .get_cpi = pimoroni_trackball_get_cpi
+};
+// clang-format on
+
+#elif defined(POINTING_DEVICE_DRIVER_pmw3360) || defined(POINTING_DEVICE_DRIVER_pmw3389)
+static void pmw33xx_init_wrapper(void) {
+ pmw33xx_init(0);
+}
+
+static void pmw33xx_set_cpi_wrapper(uint16_t cpi) {
+ pmw33xx_set_cpi(0, cpi);
+}
+
+static uint16_t pmw33xx_get_cpi_wrapper(void) {
+ return pmw33xx_get_cpi(0);
+}
+
+report_mouse_t pmw33xx_get_report(report_mouse_t mouse_report) {
+ pmw33xx_report_t report = pmw33xx_read_burst(0);
+ static bool in_motion = false;
+
+ if (report.motion.b.is_lifted) {
+ return mouse_report;
+ }
+
+ if (!report.motion.b.is_motion) {
+ in_motion = false;
+ return mouse_report;
+ }
+
+ if (!in_motion) {
+ in_motion = true;
+ dprintf("PWM3360 (0): starting motion\n");
+ }
+
+ mouse_report.x = CONSTRAIN_HID_XY(report.delta_x);
+ mouse_report.y = CONSTRAIN_HID_XY(report.delta_y);
+ return mouse_report;
+}
+
+// clang-format off
+const pointing_device_driver_t pointing_device_driver = {
+ .init = pmw33xx_init_wrapper,
+ .get_report = pmw33xx_get_report,
+ .set_cpi = pmw33xx_set_cpi_wrapper,
+ .get_cpi = pmw33xx_get_cpi_wrapper
+};
+// clang-format on
+
+#else
+__attribute__((weak)) void pointing_device_driver_init(void) {}
+__attribute__((weak)) report_mouse_t pointing_device_driver_get_report(report_mouse_t mouse_report) {
+ return mouse_report;
+}
+__attribute__((weak)) uint16_t pointing_device_driver_get_cpi(void) {
+ return 0;
+}
+__attribute__((weak)) void pointing_device_driver_set_cpi(uint16_t cpi) {}
+
+// clang-format off
+const pointing_device_driver_t pointing_device_driver = {
+ .init = pointing_device_driver_init,
+ .get_report = pointing_device_driver_get_report,
+ .get_cpi = pointing_device_driver_get_cpi,
+ .set_cpi = pointing_device_driver_set_cpi
+};
+// clang-format on
+
+#endif
diff --git a/quantum/pointing_device/pointing_device_gestures.c b/quantum/pointing_device/pointing_device_gestures.c
new file mode 100644
index 0000000000..02b11ebe3f
--- /dev/null
+++ b/quantum/pointing_device/pointing_device_gestures.c
@@ -0,0 +1,133 @@
+/* Copyright 2022 Daniel Kao <daniel.m.kao@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 <string.h>
+#include "pointing_device_gestures.h"
+#include "timer.h"
+
+#ifdef POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE
+# ifdef POINTING_DEVICE_MOTION_PIN
+# error POINTING_DEVICE_MOTION_PIN not supported when using inertial cursor. Need repeated calls to get_report() to generate glide events.
+# endif
+
+static void cursor_glide_stop(cursor_glide_context_t* glide) {
+ memset(&glide->status, 0, sizeof(glide->status));
+}
+
+static cursor_glide_t cursor_glide(cursor_glide_context_t* glide) {
+ cursor_glide_status_t* status = &glide->status;
+ cursor_glide_t report;
+ int32_t p;
+ int32_t x, y;
+
+ if (status->v0 == 0) {
+ report.dx = 0;
+ report.dy = 0;
+ report.valid = false;
+ cursor_glide_stop(glide);
+ goto exit;
+ }
+
+ status->counter++;
+ /* Calculate current 1D position */
+ p = status->v0 * status->counter - (int32_t)glide->config.coef * status->counter * status->counter / 2;
+ /*
+ * Translate to x & y axes
+ * Done this way instead of applying friction to each axis separately, so we don't end up with the shorter axis stuck at 0 towards the end of diagonal movements.
+ */
+ x = (int32_t)(p * status->dx0 / status->v0);
+ y = (int32_t)(p * status->dy0 / status->v0);
+ report.dx = (mouse_xy_report_t)(x - status->x);
+ report.dy = (mouse_xy_report_t)(y - status->y);
+ report.valid = true;
+ if (report.dx <= 1 && report.dx >= -1 && report.dy <= 1 && report.dy >= -1) {
+ /* Stop gliding once speed is low enough */
+ cursor_glide_stop(glide);
+ goto exit;
+ }
+ status->x = x;
+ status->y = y;
+ status->timer = timer_read();
+
+exit:
+ return report;
+}
+
+cursor_glide_t cursor_glide_check(cursor_glide_context_t* glide) {
+ cursor_glide_t invalid_report = {0, 0, false};
+ cursor_glide_status_t* status = &glide->status;
+
+ if (status->z || (status->dx0 == 0 && status->dy0 == 0) || timer_elapsed(status->timer) < glide->config.interval) {
+ return invalid_report;
+ } else {
+ return cursor_glide(glide);
+ }
+}
+
+static inline uint16_t sqrt32(uint32_t x) {
+ uint32_t l, m, h;
+
+ if (x == 0) {
+ return 0;
+ } else if (x > (UINT16_MAX >> 2)) {
+ /* Safe upper bound to avoid integer overflow with m * m */
+ h = UINT16_MAX;
+ } else {
+ /* Upper bound based on closest log2 */
+ h = (1 << (((__builtin_clzl(1) - __builtin_clzl(x) + 1) + 1) >> 1));
+ }
+ /* Lower bound based on closest log2 */
+ l = (1 << ((__builtin_clzl(1) - __builtin_clzl(x)) >> 1));
+
+ /* Binary search to find integer square root */
+ while (l != h - 1) {
+ m = (l + h) / 2;
+ if (m * m <= x) {
+ l = m;
+ } else {
+ h = m;
+ }
+ }
+ return l;
+}
+
+cursor_glide_t cursor_glide_start(cursor_glide_context_t* glide) {
+ cursor_glide_t invalid_report = {0, 0, false};
+ cursor_glide_status_t* status = &glide->status;
+
+ status->timer = timer_read();
+ status->counter = 0;
+ status->v0 = (status->dx0 == 0 && status->dy0 == 0) ? 0.0 : sqrt32(((int32_t)status->dx0 * 256 * status->dx0 * 256) + ((int32_t)status->dy0 * 256 * status->dy0 * 256)); // skip trigonometry if not needed, calculate distance in Q8
+ status->x = 0;
+ status->y = 0;
+ status->z = 0;
+
+ if (status->v0 < ((uint32_t)glide->config.trigger_px * 256)) { /* Q8 comparison */
+ /* Not enough velocity to be worth gliding, abort */
+ cursor_glide_stop(glide);
+ return invalid_report;
+ }
+
+ return cursor_glide(glide);
+}
+
+void cursor_glide_update(cursor_glide_context_t* glide, mouse_xy_report_t dx, mouse_xy_report_t dy, uint16_t z) {
+ cursor_glide_status_t* status = &glide->status;
+
+ status->dx0 = dx;
+ status->dy0 = dy;
+ status->z = z;
+}
+#endif
diff --git a/quantum/pointing_device/pointing_device_gestures.h b/quantum/pointing_device/pointing_device_gestures.h
new file mode 100644
index 0000000000..d2ea44971b
--- /dev/null
+++ b/quantum/pointing_device/pointing_device_gestures.h
@@ -0,0 +1,58 @@
+/* Copyright 2022 Daniel Kao <daniel.m.kao@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 <stdint.h>
+#include "report.h"
+
+#ifdef POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE
+typedef struct {
+ mouse_xy_report_t dx;
+ mouse_xy_report_t dy;
+ bool valid;
+} cursor_glide_t;
+
+typedef struct {
+ uint16_t trigger_px; /* Pixels of movement needed to trigger cursor glide */
+ uint16_t coef; /* Coefficient of friction */
+ uint16_t interval; /* Glide report interval, in milliseconds */
+} cursor_glide_config_t;
+
+typedef struct {
+ int32_t v0;
+ int32_t x;
+ int32_t y;
+ uint16_t z;
+ uint16_t timer;
+ uint16_t counter;
+ mouse_xy_report_t dx0;
+ mouse_xy_report_t dy0;
+} cursor_glide_status_t;
+
+typedef struct {
+ cursor_glide_config_t config;
+ cursor_glide_status_t status;
+} cursor_glide_context_t;
+
+/* Check glide report conditions, calculates glide coordinates */
+cursor_glide_t cursor_glide_check(cursor_glide_context_t* glide);
+
+/* Start glide reporting, gives first set of glide coordinates */
+cursor_glide_t cursor_glide_start(cursor_glide_context_t* glide);
+
+/* Update glide engine on the latest cursor movement, cursor glide is based on the final movement */
+void cursor_glide_update(cursor_glide_context_t* glide, mouse_xy_report_t dx, mouse_xy_report_t dy, uint16_t z);
+#endif
diff --git a/quantum/pointing_device_drivers.c b/quantum/pointing_device_drivers.c
deleted file mode 100644
index 56363c7ac6..0000000000
--- a/quantum/pointing_device_drivers.c
+++ /dev/null
@@ -1,295 +0,0 @@
-/* Copyright 2017 Joshua Broekhuijsen <snipeye+qmk@gmail.com>
- * 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
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "pointing_device.h"
-#include "debug.h"
-#include "wait.h"
-#include "timer.h"
-#include <stddef.h>
-
-// hid mouse reports cannot exceed -127 to 127, so constrain to that value
-#define constrain_hid(amt) ((amt) < -127 ? -127 : ((amt) > 127 ? 127 : (amt)))
-
-// get_report functions should probably be moved to their respective drivers.
-#if defined(POINTING_DEVICE_DRIVER_adns5050)
-report_mouse_t adns5050_get_report(report_mouse_t mouse_report) {
- report_adns5050_t data = adns5050_read_burst();
-
- if (data.dx != 0 || data.dy != 0) {
-# ifdef CONSOLE_ENABLE
- if (debug_mouse) dprintf("Raw ] X: %d, Y: %d\n", data.dx, data.dy);
-# endif
-
- mouse_report.x = data.dx;
- mouse_report.y = data.dy;
- }
-
- return mouse_report;
-}
-
-// clang-format off
-const pointing_device_driver_t pointing_device_driver = {
- .init = adns5050_init,
- .get_report = adns5050_get_report,
- .set_cpi = adns5050_set_cpi,
- .get_cpi = adns5050_get_cpi,
-};
-// clang-format on
-#elif defined(POINTING_DEVICE_DRIVER_adns9800)
-
-report_mouse_t adns9800_get_report_driver(report_mouse_t mouse_report) {
- report_adns9800_t sensor_report = adns9800_get_report();
-
- int8_t clamped_x = constrain_hid(sensor_report.x);
- int8_t clamped_y = constrain_hid(sensor_report.y);
-
- mouse_report.x = clamped_x;
- mouse_report.y = clamped_y;
-
- return mouse_report;
-}
-
-// clang-format off
-const pointing_device_driver_t pointing_device_driver = {
- .init = adns9800_init,
- .get_report = adns9800_get_report_driver,
- .set_cpi = adns9800_set_cpi,
- .get_cpi = adns9800_get_cpi
-};
-// clang-format on
-#elif defined(POINTING_DEVICE_DRIVER_analog_joystick)
-report_mouse_t analog_joystick_get_report(report_mouse_t mouse_report) {
- report_analog_joystick_t data = analog_joystick_read();
-
-# ifdef CONSOLE_ENABLE
- if (debug_mouse) dprintf("Raw ] X: %d, Y: %d\n", data.x, data.y);
-# endif
-
- mouse_report.x = data.x;
- mouse_report.y = data.y;
-
- mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, data.button, POINTING_DEVICE_BUTTON1);
-
- return mouse_report;
-}
-
-// clang-format off
-const pointing_device_driver_t pointing_device_driver = {
- .init = analog_joystick_init,
- .get_report = analog_joystick_get_report,
- .set_cpi = NULL,
- .get_cpi = NULL
-};
-// clang-format on
-#elif defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_i2c) || defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi)
-# ifndef CIRQUE_PINNACLE_TAPPING_TERM
-# include "action.h"
-# include "action_tapping.h"
-# define CIRQUE_PINNACLE_TAPPING_TERM GET_TAPPING_TERM(KC_BTN1, &(keyrecord_t){})
-# endif
-# ifndef CIRQUE_PINNACLE_TOUCH_DEBOUNCE
-# define CIRQUE_PINNACLE_TOUCH_DEBOUNCE (CIRQUE_PINNACLE_TAPPING_TERM * 8)
-# endif
-
-report_mouse_t cirque_pinnacle_get_report(report_mouse_t mouse_report) {
- pinnacle_data_t touchData = cirque_pinnacle_read_data();
- static uint16_t x = 0, y = 0, mouse_timer = 0;
- int8_t report_x = 0, report_y = 0;
- static bool is_z_down = false;
-
- cirque_pinnacle_scale_data(&touchData, cirque_pinnacle_get_scale(), cirque_pinnacle_get_scale()); // Scale coordinates to arbitrary X, Y resolution
-
- if (x && y && touchData.xValue && touchData.yValue) {
- report_x = (int8_t)(touchData.xValue - x);
- report_y = (int8_t)(touchData.yValue - y);
- }
- x = touchData.xValue;
- y = touchData.yValue;
-
- if ((bool)touchData.zValue != is_z_down) {
- is_z_down = (bool)touchData.zValue;
- if (!touchData.zValue) {
- if (timer_elapsed(mouse_timer) < CIRQUE_PINNACLE_TAPPING_TERM && mouse_timer != 0) {
- mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, true, POINTING_DEVICE_BUTTON1);
- pointing_device_set_report(mouse_report);
- pointing_device_send();
-# if TAP_CODE_DELAY > 0
- wait_ms(TAP_CODE_DELAY);
-# endif
- mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, false, POINTING_DEVICE_BUTTON1);
- pointing_device_set_report(mouse_report);
- pointing_device_send();
- }
- }
- mouse_timer = timer_read();
- }
- if (timer_elapsed(mouse_timer) > (CIRQUE_PINNACLE_TOUCH_DEBOUNCE)) {
- mouse_timer = 0;
- }
- mouse_report.x = report_x;
- mouse_report.y = report_y;
-
- return mouse_report;
-}
-
-// clang-format off
-const pointing_device_driver_t pointing_device_driver = {
- .init = cirque_pinnacle_init,
- .get_report = cirque_pinnacle_get_report,
- .set_cpi = cirque_pinnacle_set_scale,
- .get_cpi = cirque_pinnacle_get_scale
-};
-// clang-format on
-
-#elif defined(POINTING_DEVICE_DRIVER_pimoroni_trackball)
-report_mouse_t pimoroni_trackball_get_report(report_mouse_t mouse_report) {
- static uint16_t debounce = 0;
- static uint8_t error_count = 0;
- pimoroni_data_t pimoroni_data = {0};
- static int16_t x_offset = 0, y_offset = 0;
-
- if (error_count < PIMORONI_TRACKBALL_ERROR_COUNT) {
- i2c_status_t status = read_pimoroni_trackball(&pimoroni_data);
-
- if (status == I2C_STATUS_SUCCESS) {
- error_count = 0;
-
- if (!(pimoroni_data.click & 128)) {
- mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, false, POINTING_DEVICE_BUTTON1);
- if (!debounce) {
- x_offset += pimoroni_trackball_get_offsets(pimoroni_data.right, pimoroni_data.left, PIMORONI_TRACKBALL_SCALE);
- y_offset += pimoroni_trackball_get_offsets(pimoroni_data.down, pimoroni_data.up, PIMORONI_TRACKBALL_SCALE);
- pimoroni_trackball_adapt_values(&mouse_report.x, &x_offset);
- pimoroni_trackball_adapt_values(&mouse_report.y, &y_offset);
- } else {
- debounce--;
- }
- } else {
- mouse_report.buttons = pointing_device_handle_buttons(mouse_report.buttons, true, POINTING_DEVICE_BUTTON1);
- debounce = PIMORONI_TRACKBALL_DEBOUNCE_CYCLES;
- }
- } else {
- error_count++;
- }
- }
- return mouse_report;
-}
-
-// clang-format off
-const pointing_device_driver_t pointing_device_driver = {
- .init = pimoroni_trackball_device_init,
- .get_report = pimoroni_trackball_get_report,
- .set_cpi = pimoroni_trackball_set_cpi,
- .get_cpi = pimoroni_trackball_get_cpi
-};
-// clang-format on
-#elif defined(POINTING_DEVICE_DRIVER_pmw3360)
-static void pmw3360_device_init(void) {
- pmw3360_init(0);
-}
-
-report_mouse_t pmw3360_get_report(report_mouse_t mouse_report) {
- report_pmw3360_t data = pmw3360_read_burst(0);
- static uint16_t MotionStart = 0; // Timer for accel, 0 is resting state
-
- if (data.isOnSurface && data.isMotion) {
- // Reset timer if stopped moving
- if (!data.isMotion) {
- if (MotionStart != 0) MotionStart = 0;
- return mouse_report;
- }
-
- // Set timer if new motion
- if ((MotionStart == 0) && data.isMotion) {
-# ifdef CONSOLE_ENABLE
- if (debug_mouse) dprintf("Starting motion.\n");
-# endif
- MotionStart = timer_read();
- }
- mouse_report.x = constrain_hid(data.dx);
- mouse_report.y = constrain_hid(data.dy);
- }
-
- return mouse_report;
-}
-
-// clang-format off
-const pointing_device_driver_t pointing_device_driver = {
- .init = pmw3360_device_init,
- .get_report = pmw3360_get_report,
- .set_cpi = pmw3360_set_cpi,
- .get_cpi = pmw3360_get_cpi
-};
-// clang-format on
-#elif defined(POINTING_DEVICE_DRIVER_pmw3389)
-static void pmw3389_device_init(void) {
- pmw3389_init();
-}
-
-report_mouse_t pmw3389_get_report(report_mouse_t mouse_report) {
- report_pmw3389_t data = pmw3389_read_burst();
- static uint16_t MotionStart = 0; // Timer for accel, 0 is resting state
-
- if (data.isOnSurface && data.isMotion) {
- // Reset timer if stopped moving
- if (!data.isMotion) {
- if (MotionStart != 0) MotionStart = 0;
- return mouse_report;
- }
-
- // Set timer if new motion
- if ((MotionStart == 0) && data.isMotion) {
-# ifdef CONSOLE_ENABLE
- if (debug_mouse) dprintf("Starting motion.\n");
-# endif
- MotionStart = timer_read();
- }
- mouse_report.x = constrain_hid(data.dx);
- mouse_report.y = constrain_hid(data.dy);
- }
-
- return mouse_report;
-}
-
-// clang-format off
-const pointing_device_driver_t pointing_device_driver = {
- .init = pmw3389_device_init,
- .get_report = pmw3389_get_report,
- .set_cpi = pmw3389_set_cpi,
- .get_cpi = pmw3389_get_cpi
-};
-// clang-format on
-#else
-__attribute__((weak)) void pointing_device_driver_init(void) {}
-__attribute__((weak)) report_mouse_t pointing_device_driver_get_report(report_mouse_t mouse_report) {
- return mouse_report;
-}
-__attribute__((weak)) uint16_t pointing_device_driver_get_cpi(void) {
- return 0;
-}
-__attribute__((weak)) void pointing_device_driver_set_cpi(uint16_t cpi) {}
-
-// clang-format off
-const pointing_device_driver_t pointing_device_driver = {
- .init = pointing_device_driver_init,
- .get_report = pointing_device_driver_get_report,
- .get_cpi = pointing_device_driver_get_cpi,
- .set_cpi = pointing_device_driver_set_cpi
-};
-// clang-format on
-#endif
diff --git a/quantum/process_keycode/process_auto_shift.c b/quantum/process_keycode/process_auto_shift.c
index e6a7c01f2a..3ff188ba7e 100644
--- a/quantum/process_keycode/process_auto_shift.c
+++ b/quantum/process_keycode/process_auto_shift.c
@@ -123,7 +123,12 @@ bool get_autoshift_shift_state(uint16_t keycode) {
/** \brief Restores the shift key if it was cancelled by Auto Shift */
static void autoshift_flush_shift(void) {
autoshift_flags.holding_shift = false;
- del_weak_mods(MOD_BIT(KC_LSFT));
+# ifdef CAPS_WORD_ENABLE
+ if (!is_caps_word_on())
+# endif // CAPS_WORD_ENABLE
+ {
+ del_weak_mods(MOD_BIT(KC_LSFT));
+ }
if (autoshift_flags.cancelling_lshift) {
autoshift_flags.cancelling_lshift = false;
add_mods(MOD_BIT(KC_LSFT));
@@ -325,11 +330,13 @@ void autoshift_disable(void) {
# ifndef AUTO_SHIFT_NO_SETUP
void autoshift_timer_report(void) {
+# ifdef SEND_STRING_ENABLE
char display[8];
snprintf(display, 8, "\n%d\n", autoshift_timeout);
send_string((const char *)display);
+# endif
}
# endif
diff --git a/quantum/process_keycode/process_auto_shift.h b/quantum/process_keycode/process_auto_shift.h
index ac6a143746..86adb04985 100644
--- a/quantum/process_keycode/process_auto_shift.h
+++ b/quantum/process_keycode/process_auto_shift.h
@@ -32,7 +32,7 @@
#define AUTO_SHIFT_SPECIAL \
KC_TAB: \
case KC_MINUS ... KC_SLASH: \
- case KC_NONUS_BSLASH
+ case KC_NONUS_BACKSLASH
// clang-format on
bool process_auto_shift(uint16_t keycode, keyrecord_t *record);
diff --git a/quantum/process_keycode/process_caps_word.c b/quantum/process_keycode/process_caps_word.c
index ffd509a914..1b9583196d 100644
--- a/quantum/process_keycode/process_caps_word.c
+++ b/quantum/process_keycode/process_caps_word.c
@@ -101,14 +101,34 @@ bool process_caps_word(uint16_t keycode, keyrecord_t* record) {
return true;
#ifndef NO_ACTION_TAPPING
+ // Corresponding to mod keys above, a held mod-tap is handled as:
+ // * For shift mods, pass KC_LSFT or KC_RSFT to
+ // caps_word_press_user() to determine whether to continue.
+ // * For Shift + AltGr (MOD_RSFT | MOD_RALT), pass RSFT(KC_RALT).
+ // * AltGr (MOD_RALT) is ignored.
+ // * Otherwise stop Caps Word.
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_off();
- return true;
+ if (record->tap.count == 0) { // Mod-tap key is held.
+ const uint8_t mods = (keycode >> 8) & 0x1f;
+ switch (mods) {
+ case MOD_LSFT:
+ keycode = KC_LSFT;
+ break;
+ case MOD_RSFT:
+ keycode = KC_RSFT;
+ break;
+ case MOD_RSFT | MOD_RALT:
+ keycode = RSFT(KC_RALT);
+ break;
+ case MOD_RALT:
+ return true;
+ default:
+ caps_word_off();
+ return true;
+ }
+ } else {
+ keycode &= 0xff;
}
- keycode &= 0xff;
break;
# ifndef NO_ACTION_LAYER
@@ -131,7 +151,11 @@ bool process_caps_word(uint16_t keycode, keyrecord_t* record) {
#endif // SWAP_HANDS_ENABLE
}
+#ifdef AUTO_SHIFT_ENABLE
+ del_weak_mods(get_autoshift_state() ? ~MOD_BIT(KC_LSFT) : 0xff);
+#else
clear_weak_mods();
+#endif // AUTO_SHIFT_ENABLE
if (caps_word_press_user(keycode)) {
send_keyboard_report();
return true;
diff --git a/quantum/process_keycode/process_combo.c b/quantum/process_keycode/process_combo.c
index d5a649adb3..e5135e5a64 100644
--- a/quantum/process_keycode/process_combo.c
+++ b/quantum/process_keycode/process_combo.c
@@ -227,7 +227,16 @@ static inline void dump_key_buffer(void) {
#endif
}
record->event.time = 0;
+
+#if defined(CAPS_WORD_ENABLE) && defined(AUTO_SHIFT_ENABLE)
+ // Edge case: preserve the weak Left Shift mod if both Caps Word and
+ // Auto Shift are on. Caps Word capitalizes by setting the weak Left
+ // Shift mod during the press event, but Auto Shift doesn't send the
+ // key until it receives the release event.
+ del_weak_mods((is_caps_word_on() && get_autoshift_state()) ? ~MOD_BIT(KC_LSFT) : 0xff);
+#else
clear_weak_mods();
+#endif // defined(CAPS_WORD_ENABLE) && defined(AUTO_SHIFT_ENABLE)
#if TAP_CODE_DELAY > 0
// only delay once and for a non-tapping key
diff --git a/quantum/process_keycode/process_dynamic_macro.c b/quantum/process_keycode/process_dynamic_macro.c
index a1ada2d5a2..a7555fdd40 100644
--- a/quantum/process_keycode/process_dynamic_macro.c
+++ b/quantum/process_keycode/process_dynamic_macro.c
@@ -86,6 +86,9 @@ void dynamic_macro_play(keyrecord_t *macro_buffer, keyrecord_t *macro_end, int8_
while (macro_buffer != macro_end) {
process_record(macro_buffer);
macro_buffer += direction;
+#ifdef DYNAMIC_MACRO_DELAY
+ wait_ms(DYNAMIC_MACRO_DELAY);
+#endif
}
clear_keyboard();
diff --git a/quantum/process_keycode/process_dynamic_tapping_term.c b/quantum/process_keycode/process_dynamic_tapping_term.c
index bdc5529e33..b682f34da6 100644
--- a/quantum/process_keycode/process_dynamic_tapping_term.c
+++ b/quantum/process_keycode/process_dynamic_tapping_term.c
@@ -22,12 +22,14 @@
#endif
static void tapping_term_report(void) {
+#ifdef SEND_STRING_ENABLE
const char *tapping_term_str = get_u16_str(g_tapping_term, ' ');
// Skip padding spaces
while (*tapping_term_str == ' ') {
tapping_term_str++;
}
send_string(tapping_term_str);
+#endif
}
bool process_dynamic_tapping_term(uint16_t keycode, keyrecord_t *record) {
diff --git a/quantum/process_keycode/process_joystick.c b/quantum/process_keycode/process_joystick.c
index 8c3e71616f..e867606074 100644
--- a/quantum/process_keycode/process_joystick.c
+++ b/quantum/process_keycode/process_joystick.c
@@ -106,7 +106,7 @@ bool process_joystick_analogread_quantum() {
wait_us(10);
-# if defined(__AVR__) || defined(PROTOCOL_CHIBIOS)
+# if defined(ANALOG_JOYSTICK_ENABLE) && (defined(__AVR__) || defined(PROTOCOL_CHIBIOS))
int16_t axis_val = analogReadPin(joystick_axes[axis_index].input_pin);
# else
// default to resting position
diff --git a/quantum/process_keycode/process_leader.c b/quantum/process_keycode/process_leader.c
index c2fd02e5c7..ae00b3227a 100644
--- a/quantum/process_keycode/process_leader.c
+++ b/quantum/process_keycode/process_leader.c
@@ -64,6 +64,7 @@ bool process_leader(uint16_t keycode, keyrecord_t *record) {
} else {
leading = false;
leader_end();
+ return true;
}
# ifdef LEADER_PER_KEY_TIMING
leader_time = timer_read();
diff --git a/quantum/process_keycode/process_magic.c b/quantum/process_keycode/process_magic.c
index 10161adda3..ae60f29bf5 100644
--- a/quantum/process_keycode/process_magic.c
+++ b/quantum/process_keycode/process_magic.c
@@ -45,12 +45,16 @@ bool process_magic(uint16_t keycode, keyrecord_t *record) {
case MAGIC_SWAP_LCTL_LGUI ... MAGIC_EE_HANDS_RIGHT:
case MAGIC_TOGGLE_GUI:
case MAGIC_TOGGLE_CONTROL_CAPSLOCK:
+ case MAGIC_SWAP_ESCAPE_CAPSLOCK ... MAGIC_TOGGLE_ESCAPE_CAPSLOCK:
/* keymap config */
keymap_config.raw = eeconfig_read_keymap();
switch (keycode) {
case MAGIC_SWAP_CONTROL_CAPSLOCK:
keymap_config.swap_control_capslock = true;
break;
+ case MAGIC_SWAP_ESCAPE_CAPSLOCK:
+ keymap_config.swap_escape_capslock = true;
+ break;
case MAGIC_CAPSLOCK_TO_CONTROL:
keymap_config.capslock_to_control = true;
break;
@@ -94,6 +98,9 @@ bool process_magic(uint16_t keycode, keyrecord_t *record) {
case MAGIC_UNSWAP_CONTROL_CAPSLOCK:
keymap_config.swap_control_capslock = false;
break;
+ case MAGIC_UNSWAP_ESCAPE_CAPSLOCK:
+ keymap_config.swap_escape_capslock = false;
+ break;
case MAGIC_UNCAPSLOCK_TO_CONTROL:
keymap_config.capslock_to_control = false;
break;
@@ -172,6 +179,9 @@ bool process_magic(uint16_t keycode, keyrecord_t *record) {
case MAGIC_TOGGLE_CONTROL_CAPSLOCK:
keymap_config.swap_control_capslock = !keymap_config.swap_control_capslock;
break;
+ case MAGIC_TOGGLE_ESCAPE_CAPSLOCK:
+ keymap_config.swap_escape_capslock = !keymap_config.swap_escape_capslock;
+ break;
}
eeconfig_update_keymap(keymap_config.raw);
diff --git a/quantum/process_keycode/process_rgb.c b/quantum/process_keycode/process_rgb.c
index c805bd615d..dae129786e 100644
--- a/quantum/process_keycode/process_rgb.c
+++ b/quantum/process_keycode/process_rgb.c
@@ -52,7 +52,11 @@ static void __attribute__((noinline, unused)) handleKeycodeRGBMode(const uint8_t
*/
bool process_rgb(const uint16_t keycode, const keyrecord_t *record) {
// need to trigger on key-up for edge-case issue
+#ifndef RGB_TRIGGER_ON_KEYDOWN
if (!record->event.pressed) {
+#else
+ if (record->event.pressed) {
+#endif
#if (defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)) || (defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES))
uint8_t shifted = get_mods() & MOD_MASK_SHIFT;
#endif
diff --git a/quantum/process_keycode/process_steno.c b/quantum/process_keycode/process_steno.c
index 12ee898212..30a0d4056f 100644
--- a/quantum/process_keycode/process_steno.c
+++ b/quantum/process_keycode/process_steno.c
@@ -1,4 +1,4 @@
-/* Copyright 2017 Joseph Wasson
+/* Copyright 2017, 2022 Joseph Wasson, Vladislav Kucheriavykh
*
* This 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,77 +15,118 @@
*/
#include "process_steno.h"
#include "quantum_keycodes.h"
-#include "eeprom.h"
#include "keymap_steno.h"
-#include "virtser.h"
#include <string.h>
+#ifdef VIRTSER_ENABLE
+# include "virtser.h"
+#endif
+#ifdef STENO_ENABLE_ALL
+# include "eeprom.h"
+#endif
-// TxBolt Codes
-#define TXB_NUL 0
-#define TXB_S_L 0b00000001
-#define TXB_T_L 0b00000010
-#define TXB_K_L 0b00000100
-#define TXB_P_L 0b00001000
-#define TXB_W_L 0b00010000
-#define TXB_H_L 0b00100000
-#define TXB_R_L 0b01000001
-#define TXB_A_L 0b01000010
-#define TXB_O_L 0b01000100
-#define TXB_STR 0b01001000
-#define TXB_E_R 0b01010000
-#define TXB_U_R 0b01100000
-#define TXB_F_R 0b10000001
-#define TXB_R_R 0b10000010
-#define TXB_P_R 0b10000100
-#define TXB_B_R 0b10001000
-#define TXB_L_R 0b10010000
-#define TXB_G_R 0b10100000
-#define TXB_T_R 0b11000001
-#define TXB_S_R 0b11000010
-#define TXB_D_R 0b11000100
-#define TXB_Z_R 0b11001000
-#define TXB_NUM 0b11010000
-
-#define TXB_GRP0 0b00000000
-#define TXB_GRP1 0b01000000
-#define TXB_GRP2 0b10000000
-#define TXB_GRP3 0b11000000
-#define TXB_GRPMASK 0b11000000
-
-#define TXB_GET_GROUP(code) ((code & TXB_GRPMASK) >> 6)
-
-#define BOLT_STATE_SIZE 4
-#define GEMINI_STATE_SIZE 6
-#define MAX_STATE_SIZE GEMINI_STATE_SIZE
-
-static uint8_t state[MAX_STATE_SIZE] = {0};
-static uint8_t chord[MAX_STATE_SIZE] = {0};
-static int8_t pressed = 0;
+// All steno keys that have been pressed to form this chord,
+// stored in MAX_STROKE_SIZE groups of 8-bit arrays.
+static uint8_t chord[MAX_STROKE_SIZE] = {0};
+// The number of physical keys actually being held down.
+// This is not always equal to the number of 1 bits in `chord` because it is possible to
+// simultaneously press down four keys, then release three of those four keys and then press yet
+// another key while the fourth finger is still holding down its key.
+// At the end of this scenario given as an example, `chord` would have five bits set to 1 but
+// `n_pressed_keys` would be set to 2 because there are only two keys currently being pressed down.
+static int8_t n_pressed_keys = 0;
+
+#ifdef STENO_ENABLE_ALL
static steno_mode_t mode;
-
-static const uint8_t boltmap[64] PROGMEM = {TXB_NUL, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_S_L, TXB_S_L, TXB_T_L, TXB_K_L, TXB_P_L, TXB_W_L, TXB_H_L, TXB_R_L, TXB_A_L, TXB_O_L, TXB_STR, TXB_STR, TXB_NUL, TXB_NUL, TXB_NUL, TXB_STR, TXB_STR, TXB_E_R, TXB_U_R, TXB_F_R, TXB_R_R, TXB_P_R, TXB_B_R, TXB_L_R, TXB_G_R, TXB_T_R, TXB_S_R, TXB_D_R, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_Z_R};
-
-#ifdef STENO_COMBINEDMAP
-/* Used to look up when pressing the middle row key to combine two consonant or vowel keys */
-static const uint16_t combinedmap_first[] PROGMEM = {STN_S1, STN_TL, STN_PL, STN_HL, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR, STN_A, STN_E};
-static const uint16_t combinedmap_second[] PROGMEM = {STN_S2, STN_KL, STN_WL, STN_RL, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR, STN_O, STN_U};
+#elif defined(STENO_ENABLE_GEMINI)
+static const steno_mode_t mode = STENO_MODE_GEMINI;
+#elif defined(STENO_ENABLE_BOLT)
+static const steno_mode_t mode = STENO_MODE_BOLT;
#endif
-static void steno_clear_state(void) {
- memset(state, 0, sizeof(state));
+static inline void steno_clear_chord(void) {
memset(chord, 0, sizeof(chord));
}
-static void send_steno_state(uint8_t size, bool send_empty) {
- for (uint8_t i = 0; i < size; ++i) {
- if (chord[i] || send_empty) {
-#ifdef VIRTSER_ENABLE
+#ifdef STENO_ENABLE_GEMINI
+
+# ifdef VIRTSER_ENABLE
+void send_steno_chord_gemini(void) {
+ // Set MSB to 1 to indicate the start of packet
+ chord[0] |= 0x80;
+ for (uint8_t i = 0; i < GEMINI_STROKE_SIZE; ++i) {
+ virtser_send(chord[i]);
+ }
+}
+# else
+# pragma message "VIRTSER_ENABLE = yes is required for Gemini PR to work properly out of the box!"
+# endif // VIRTSER_ENABLE
+
+/**
+ * @precondition: `key` is pressed
+ */
+bool add_gemini_key_to_chord(uint8_t key) {
+ // Although each group of the packet is 8 bits long, the MSB is reserved
+ // to indicate whether that byte is the first byte of the packet (MSB=1)
+ // or one of the remaining five bytes of the packet (MSB=0).
+ // As a consequence, only 7 out of the 8 bits are left to be used as a bit array
+ // for the steno keys of that group.
+ const int group_idx = key / 7;
+ const int intra_group_idx = key - group_idx * 7;
+ // The 0th steno key of the group has bit=0b01000000, the 1st has bit=0b00100000, etc.
+ const uint8_t bit = 1 << (6 - intra_group_idx);
+ chord[group_idx] |= bit;
+ return false;
+}
+#endif // STENO_ENABLE_GEMINI
+
+#ifdef STENO_ENABLE_BOLT
+
+# define TXB_GRP0 0b00000000
+# define TXB_GRP1 0b01000000
+# define TXB_GRP2 0b10000000
+# define TXB_GRP3 0b11000000
+# define TXB_GRPMASK 0b11000000
+
+# define TXB_GET_GROUP(code) ((code & TXB_GRPMASK) >> 6)
+
+static const uint8_t boltmap[64] PROGMEM = {TXB_NUL, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_S_L, TXB_S_L, TXB_T_L, TXB_K_L, TXB_P_L, TXB_W_L, TXB_H_L, TXB_R_L, TXB_A_L, TXB_O_L, TXB_STR, TXB_STR, TXB_NUL, TXB_NUL, TXB_NUL, TXB_STR, TXB_STR, TXB_E_R, TXB_U_R, TXB_F_R, TXB_R_R, TXB_P_R, TXB_B_R, TXB_L_R, TXB_G_R, TXB_T_R, TXB_S_R, TXB_D_R, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_NUM, TXB_Z_R};
+
+# ifdef VIRTSER_ENABLE
+static void send_steno_chord_bolt(void) {
+ for (uint8_t i = 0; i < BOLT_STROKE_SIZE; ++i) {
+ // TX Bolt uses variable length packets where each byte corresponds to a bit array of certain keys.
+ // If a user chorded the keys of the first group with keys of the last group, for example, there
+ // would be bytes of 0x00 in `chord` for the middle groups which we mustn't send.
+ if (chord[i]) {
virtser_send(chord[i]);
-#endif
}
}
+ // Sending a null packet is not always necessary, but it is simpler and more reliable
+ // to unconditionally send it every time instead of keeping track of more states and
+ // creating more branches in the execution of the program.
+ virtser_send(0);
}
+# else
+# pragma message "VIRTSER_ENABLE = yes is required for TX Bolt to work properly out of the box!"
+# endif // VIRTSER_ENABLE
+
+/**
+ * @precondition: `key` is pressed
+ */
+static bool add_bolt_key_to_chord(uint8_t key) {
+ uint8_t boltcode = pgm_read_byte(boltmap + key);
+ chord[TXB_GET_GROUP(boltcode)] |= boltcode;
+ return false;
+}
+#endif // STENO_ENABLE_BOLT
+
+#ifdef STENO_COMBINEDMAP
+/* Used to look up when pressing the middle row key to combine two consonant or vowel keys */
+static const uint16_t combinedmap_first[] PROGMEM = {STN_S1, STN_TL, STN_PL, STN_HL, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR, STN_A, STN_E};
+static const uint16_t combinedmap_second[] PROGMEM = {STN_S2, STN_KL, STN_WL, STN_RL, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR, STN_O, STN_U};
+#endif
+#ifdef STENO_ENABLE_ALL
void steno_init() {
if (!eeconfig_is_enabled()) {
eeconfig_init();
@@ -94,19 +135,20 @@ void steno_init() {
}
void steno_set_mode(steno_mode_t new_mode) {
- steno_clear_state();
+ steno_clear_chord();
mode = new_mode;
eeprom_update_byte(EECONFIG_STENOMODE, mode);
}
+#endif // STENO_ENABLE_ALL
/* override to intercept chords right before they get sent.
* return zero to suppress normal sending behavior.
*/
-__attribute__((weak)) bool send_steno_chord_user(steno_mode_t mode, uint8_t chord[6]) {
+__attribute__((weak)) bool send_steno_chord_user(steno_mode_t mode, uint8_t chord[MAX_STROKE_SIZE]) {
return true;
}
-__attribute__((weak)) bool postprocess_steno_user(uint16_t keycode, keyrecord_t *record, steno_mode_t mode, uint8_t chord[6], int8_t pressed) {
+__attribute__((weak)) bool post_process_steno_user(uint16_t keycode, keyrecord_t *record, steno_mode_t mode, uint8_t chord[MAX_STROKE_SIZE], int8_t n_pressed_keys) {
return true;
}
@@ -114,108 +156,94 @@ __attribute__((weak)) bool process_steno_user(uint16_t keycode, keyrecord_t *rec
return true;
}
-static void send_steno_chord(void) {
- if (send_steno_chord_user(mode, chord)) {
- switch (mode) {
- case STENO_MODE_BOLT:
- send_steno_state(BOLT_STATE_SIZE, false);
-#ifdef VIRTSER_ENABLE
- virtser_send(0); // terminating byte
-#endif
- break;
- case STENO_MODE_GEMINI:
- chord[0] |= 0x80; // Indicate start of packet
- send_steno_state(GEMINI_STATE_SIZE, true);
- break;
- }
+bool process_steno(uint16_t keycode, keyrecord_t *record) {
+ if (keycode < QK_STENO || keycode > QK_STENO_MAX) {
+ return true; // Not a steno key, pass it further along the chain
+ /*
+ * Clearing or sending the chord state is not necessary as we intentionally ignore whatever
+ * normal keyboard keys the user may have tapped while chording steno keys.
+ */
}
- steno_clear_state();
-}
-
-uint8_t *steno_get_state(void) {
- return &state[0];
-}
-
-uint8_t *steno_get_chord(void) {
- return &chord[0];
-}
-
-static bool update_state_bolt(uint8_t key, bool press) {
- uint8_t boltcode = pgm_read_byte(boltmap + key);
- if (press) {
- state[TXB_GET_GROUP(boltcode)] |= boltcode;
- chord[TXB_GET_GROUP(boltcode)] |= boltcode;
- } else {
- state[TXB_GET_GROUP(boltcode)] &= ~boltcode;
+ if (IS_NOEVENT(record->event)) {
+ return true;
}
- return false;
-}
-
-static bool update_state_gemini(uint8_t key, bool press) {
- int idx = key / 7;
- uint8_t bit = 1 << (6 - (key % 7));
- if (press) {
- state[idx] |= bit;
- chord[idx] |= bit;
- } else {
- state[idx] &= ~bit;
+ if (!process_steno_user(keycode, record)) {
+ return false; // User fully processed the steno key themselves
}
- return false;
-}
-
-bool process_steno(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
+#ifdef STENO_ENABLE_ALL
case QK_STENO_BOLT:
- if (!process_steno_user(keycode, record)) {
- return false;
- }
if (IS_PRESSED(record->event)) {
steno_set_mode(STENO_MODE_BOLT);
}
return false;
case QK_STENO_GEMINI:
- if (!process_steno_user(keycode, record)) {
- return false;
- }
if (IS_PRESSED(record->event)) {
steno_set_mode(STENO_MODE_GEMINI);
}
return false;
+#endif // STENO_ENABLE_ALL
#ifdef STENO_COMBINEDMAP
case QK_STENO_COMB ... QK_STENO_COMB_MAX: {
- uint8_t result;
- result = process_steno(combinedmap_first[keycode - QK_STENO_COMB], record);
- result &= process_steno(combinedmap_second[keycode - QK_STENO_COMB], record);
- return result;
+ bool first_result = process_steno(combinedmap_first[keycode - QK_STENO_COMB], record);
+ bool second_result = process_steno(combinedmap_second[keycode - QK_STENO_COMB], record);
+ return first_result && second_result;
}
-#endif
+#endif // STENO_COMBINEDMAP
case STN__MIN ... STN__MAX:
- if (!process_steno_user(keycode, record)) {
- return false;
- }
- switch (mode) {
- case STENO_MODE_BOLT:
- update_state_bolt(keycode - QK_STENO, IS_PRESSED(record->event));
- break;
- case STENO_MODE_GEMINI:
- update_state_gemini(keycode - QK_STENO, IS_PRESSED(record->event));
- break;
- }
- // allow postprocessing hooks
- if (postprocess_steno_user(keycode, record, mode, chord, pressed)) {
- if (IS_PRESSED(record->event)) {
- ++pressed;
- } else {
- --pressed;
- if (pressed <= 0) {
- pressed = 0;
- send_steno_chord();
- }
+ if (IS_PRESSED(record->event)) {
+ n_pressed_keys++;
+ switch (mode) {
+#ifdef STENO_ENABLE_BOLT
+ case STENO_MODE_BOLT:
+ add_bolt_key_to_chord(keycode - QK_STENO);
+ break;
+#endif // STENO_ENABLE_BOLT
+#ifdef STENO_ENABLE_GEMINI
+ case STENO_MODE_GEMINI:
+ add_gemini_key_to_chord(keycode - QK_STENO);
+ break;
+#endif // STENO_ENABLE_GEMINI
+ default:
+ return false;
}
+ if (!post_process_steno_user(keycode, record, mode, chord, n_pressed_keys)) {
+ return false;
+ }
+ } else { // is released
+ n_pressed_keys--;
+ if (!post_process_steno_user(keycode, record, mode, chord, n_pressed_keys)) {
+ return false;
+ }
+ if (n_pressed_keys > 0) {
+ // User hasn't released all keys yet,
+ // so the chord cannot be sent
+ return false;
+ }
+ n_pressed_keys = 0;
+ if (!send_steno_chord_user(mode, chord)) {
+ steno_clear_chord();
+ return false;
+ }
+ switch (mode) {
+#if defined(STENO_ENABLE_BOLT) && defined(VIRTSER_ENABLE)
+ case STENO_MODE_BOLT:
+ send_steno_chord_bolt();
+ break;
+#endif // STENO_ENABLE_BOLT && VIRTSER_ENABLE
+#if defined(STENO_ENABLE_GEMINI) && defined(VIRTSER_ENABLE)
+ case STENO_MODE_GEMINI:
+ send_steno_chord_gemini();
+ break;
+#endif // STENO_ENABLE_GEMINI && VIRTSER_ENABLE
+ default:
+ break;
+ }
+ steno_clear_chord();
}
- return false;
+ break;
}
- return true;
+ return false;
}
diff --git a/quantum/process_keycode/process_steno.h b/quantum/process_keycode/process_steno.h
index d11fd40af0..68d6097b9b 100644
--- a/quantum/process_keycode/process_steno.h
+++ b/quantum/process_keycode/process_steno.h
@@ -18,10 +18,22 @@
#include "quantum.h"
-typedef enum { STENO_MODE_BOLT, STENO_MODE_GEMINI } steno_mode_t;
+#define BOLT_STROKE_SIZE 4
+#define GEMINI_STROKE_SIZE 6
-bool process_steno(uint16_t keycode, keyrecord_t *record);
-void steno_init(void);
-void steno_set_mode(steno_mode_t mode);
-uint8_t *steno_get_state(void);
-uint8_t *steno_get_chord(void);
+#ifdef STENO_ENABLE_GEMINI
+# define MAX_STROKE_SIZE GEMINI_STROKE_SIZE
+#else
+# define MAX_STROKE_SIZE BOLT_STROKE_SIZE
+#endif
+
+typedef enum {
+ STENO_MODE_GEMINI,
+ STENO_MODE_BOLT,
+} steno_mode_t;
+
+bool process_steno(uint16_t keycode, keyrecord_t *record);
+#ifdef STENO_ENABLE_ALL
+void steno_init(void);
+void steno_set_mode(steno_mode_t mode);
+#endif // STENO_ENABLE_ALL
diff --git a/quantum/process_keycode/process_tap_dance.c b/quantum/process_keycode/process_tap_dance.c
index db8df5f870..3270a1b000 100644
--- a/quantum/process_keycode/process_tap_dance.c
+++ b/quantum/process_keycode/process_tap_dance.c
@@ -15,12 +15,8 @@
*/
#include "quantum.h"
-#ifndef NO_ACTION_ONESHOT
-uint8_t get_oneshot_mods(void);
-#endif
-
-static uint16_t last_td;
-static int16_t highest_td = -1;
+static uint16_t active_td;
+static uint16_t last_tap_time;
void qk_tap_dance_pair_on_each_tap(qk_tap_dance_state_t *state, void *user_data) {
qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data;
@@ -34,18 +30,14 @@ void qk_tap_dance_pair_on_each_tap(qk_tap_dance_state_t *state, void *user_data)
void qk_tap_dance_pair_finished(qk_tap_dance_state_t *state, void *user_data) {
qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data;
- if (state->count == 1) {
- register_code16(pair->kc1);
- } else if (state->count == 2) {
- register_code16(pair->kc2);
- }
+ register_code16(pair->kc1);
}
void qk_tap_dance_pair_reset(qk_tap_dance_state_t *state, void *user_data) {
qk_tap_dance_pair_t *pair = (qk_tap_dance_pair_t *)user_data;
- wait_ms(TAP_CODE_DELAY);
if (state->count == 1) {
+ wait_ms(TAP_CODE_DELAY);
unregister_code16(pair->kc1);
} else if (state->count == 2) {
unregister_code16(pair->kc2);
@@ -87,23 +79,40 @@ static inline void _process_tap_dance_action_fn(qk_tap_dance_state_t *state, voi
}
static inline void process_tap_dance_action_on_each_tap(qk_tap_dance_action_t *action) {
+ action->state.count++;
+ action->state.weak_mods = get_mods();
+ action->state.weak_mods |= get_weak_mods();
+#ifndef NO_ACTION_ONESHOT
+ action->state.oneshot_mods = get_oneshot_mods();
+#endif
_process_tap_dance_action_fn(&action->state, action->user_data, action->fn.on_each_tap);
}
-static inline void process_tap_dance_action_on_dance_finished(qk_tap_dance_action_t *action) {
- if (action->state.finished) return;
- action->state.finished = true;
- add_mods(action->state.oneshot_mods);
- add_weak_mods(action->state.weak_mods);
- send_keyboard_report();
- _process_tap_dance_action_fn(&action->state, action->user_data, action->fn.on_dance_finished);
-}
-
static inline void process_tap_dance_action_on_reset(qk_tap_dance_action_t *action) {
_process_tap_dance_action_fn(&action->state, action->user_data, action->fn.on_reset);
- del_mods(action->state.oneshot_mods);
del_weak_mods(action->state.weak_mods);
+#ifndef NO_ACTION_ONESHOT
+ del_mods(action->state.oneshot_mods);
+#endif
send_keyboard_report();
+ action->state = (const qk_tap_dance_state_t){0};
+}
+
+static inline void process_tap_dance_action_on_dance_finished(qk_tap_dance_action_t *action) {
+ if (!action->state.finished) {
+ action->state.finished = true;
+ add_weak_mods(action->state.weak_mods);
+#ifndef NO_ACTION_ONESHOT
+ add_mods(action->state.oneshot_mods);
+#endif
+ send_keyboard_report();
+ _process_tap_dance_action_fn(&action->state, action->user_data, action->fn.on_dance_finished);
+ }
+ active_td = 0;
+ if (!action->state.pressed) {
+ // There will not be a key release event, so reset now.
+ process_tap_dance_action_on_reset(action);
+ }
}
void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record) {
@@ -111,51 +120,33 @@ void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record) {
if (!record->event.pressed) return;
- if (highest_td == -1) return;
-
- for (int i = 0; i <= highest_td; i++) {
- action = &tap_dance_actions[i];
- if (action->state.count) {
- if (keycode == action->state.keycode && keycode == last_td) continue;
- action->state.interrupted = true;
- action->state.interrupting_keycode = keycode;
- process_tap_dance_action_on_dance_finished(action);
- reset_tap_dance(&action->state);
-
- // Tap dance actions can leave some weak mods active (e.g., if the tap dance is mapped to a keycode with
- // modifiers), but these weak mods should not affect the keypress which interrupted the tap dance.
- clear_weak_mods();
- }
- }
+ if (!active_td || keycode == active_td) return;
+
+ action = &tap_dance_actions[TD_INDEX(active_td)];
+ action->state.interrupted = true;
+ action->state.interrupting_keycode = keycode;
+ process_tap_dance_action_on_dance_finished(action);
+
+ // Tap dance actions can leave some weak mods active (e.g., if the tap dance is mapped to a keycode with
+ // modifiers), but these weak mods should not affect the keypress which interrupted the tap dance.
+ clear_weak_mods();
}
bool process_tap_dance(uint16_t keycode, keyrecord_t *record) {
- uint16_t idx = keycode - QK_TAP_DANCE;
qk_tap_dance_action_t *action;
switch (keycode) {
case QK_TAP_DANCE ... QK_TAP_DANCE_MAX:
- if ((int16_t)idx > highest_td) highest_td = idx;
- action = &tap_dance_actions[idx];
+ action = &tap_dance_actions[TD_INDEX(keycode)];
action->state.pressed = record->event.pressed;
if (record->event.pressed) {
- action->state.keycode = keycode;
- action->state.count++;
- action->state.timer = timer_read();
-#ifndef NO_ACTION_ONESHOT
- action->state.oneshot_mods = get_oneshot_mods();
-#else
- action->state.oneshot_mods = 0;
-#endif
- action->state.weak_mods = get_mods();
- action->state.weak_mods |= get_weak_mods();
+ last_tap_time = timer_read();
process_tap_dance_action_on_each_tap(action);
-
- last_td = keycode;
+ active_td = action->state.finished ? 0 : keycode;
} else {
- if (action->state.count && action->state.finished) {
- reset_tap_dance(&action->state);
+ if (action->state.finished) {
+ process_tap_dance_action_on_reset(action);
}
}
@@ -166,35 +157,17 @@ bool process_tap_dance(uint16_t keycode, keyrecord_t *record) {
}
void tap_dance_task() {
- if (highest_td == -1) return;
- uint16_t tap_user_defined;
-
- for (uint8_t i = 0; i <= highest_td; i++) {
- qk_tap_dance_action_t *action = &tap_dance_actions[i];
- if (action->custom_tapping_term > 0) {
- tap_user_defined = action->custom_tapping_term;
- } else {
- tap_user_defined = GET_TAPPING_TERM(action->state.keycode, &(keyrecord_t){});
- }
- if (action->state.count && timer_elapsed(action->state.timer) > tap_user_defined) {
- process_tap_dance_action_on_dance_finished(action);
- reset_tap_dance(&action->state);
- }
- }
-}
-
-void reset_tap_dance(qk_tap_dance_state_t *state) {
qk_tap_dance_action_t *action;
- if (state->pressed) return;
+ if (!active_td || timer_elapsed(last_tap_time) <= GET_TAPPING_TERM(active_td, &(keyrecord_t){})) return;
- action = &tap_dance_actions[state->keycode - QK_TAP_DANCE];
-
- process_tap_dance_action_on_reset(action);
+ action = &tap_dance_actions[TD_INDEX(active_td)];
+ if (!action->state.interrupted) {
+ process_tap_dance_action_on_dance_finished(action);
+ }
+}
- state->count = 0;
- state->interrupted = false;
- state->finished = false;
- state->interrupting_keycode = 0;
- last_td = 0;
+void reset_tap_dance(qk_tap_dance_state_t *state) {
+ active_td = 0;
+ process_tap_dance_action_on_reset((qk_tap_dance_action_t *)state);
}
diff --git a/quantum/process_keycode/process_tap_dance.h b/quantum/process_keycode/process_tap_dance.h
index d9ffb1e73d..d97900d96b 100644
--- a/quantum/process_keycode/process_tap_dance.h
+++ b/quantum/process_keycode/process_tap_dance.h
@@ -22,30 +22,27 @@
# include <inttypes.h>
typedef struct {
+ uint16_t interrupting_keycode;
uint8_t count;
- uint8_t oneshot_mods;
uint8_t weak_mods;
- uint16_t keycode;
- uint16_t interrupting_keycode;
- uint16_t timer;
- bool interrupted;
- bool pressed;
- bool finished;
+# ifndef NO_ACTION_ONESHOT
+ uint8_t oneshot_mods;
+# endif
+ bool pressed : 1;
+ bool finished : 1;
+ bool interrupted : 1;
} qk_tap_dance_state_t;
-# define TD(n) (QK_TAP_DANCE | ((n)&0xFF))
-
typedef void (*qk_tap_dance_user_fn_t)(qk_tap_dance_state_t *state, void *user_data);
typedef struct {
+ qk_tap_dance_state_t state;
struct {
qk_tap_dance_user_fn_t on_each_tap;
qk_tap_dance_user_fn_t on_dance_finished;
qk_tap_dance_user_fn_t on_reset;
} fn;
- qk_tap_dance_state_t state;
- uint16_t custom_tapping_term;
- void * user_data;
+ void *user_data;
} qk_tap_dance_action_t;
typedef struct {
@@ -62,31 +59,31 @@ typedef struct {
# define ACTION_TAP_DANCE_DOUBLE(kc1, kc2) \
{ .fn = {qk_tap_dance_pair_on_each_tap, qk_tap_dance_pair_finished, qk_tap_dance_pair_reset}, .user_data = (void *)&((qk_tap_dance_pair_t){kc1, kc2}), }
-# define ACTION_TAP_DANCE_DUAL_ROLE(kc, layer) \
+# define ACTION_TAP_DANCE_LAYER_MOVE(kc, layer) \
{ .fn = {qk_tap_dance_dual_role_on_each_tap, qk_tap_dance_dual_role_finished, qk_tap_dance_dual_role_reset}, .user_data = (void *)&((qk_tap_dance_dual_role_t){kc, layer, layer_move}), }
# define ACTION_TAP_DANCE_LAYER_TOGGLE(kc, layer) \
{ .fn = {NULL, qk_tap_dance_dual_role_finished, qk_tap_dance_dual_role_reset}, .user_data = (void *)&((qk_tap_dance_dual_role_t){kc, layer, layer_invert}), }
-# define ACTION_TAP_DANCE_LAYER_MOVE(kc, layer) ACTION_TAP_DANCE_DUAL_ROLE(kc, layer)
-
# define ACTION_TAP_DANCE_FN(user_fn) \
{ .fn = {NULL, user_fn, NULL}, .user_data = NULL, }
# define ACTION_TAP_DANCE_FN_ADVANCED(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset) \
{ .fn = {user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset}, .user_data = NULL, }
-# define ACTION_TAP_DANCE_FN_ADVANCED_TIME(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset, tap_specific_tapping_term) \
- { .fn = {user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset}, .user_data = NULL, .custom_tapping_term = tap_specific_tapping_term, }
+# define TD(n) (QK_TAP_DANCE | TD_INDEX(n))
+# define TD_INDEX(code) ((code)&0xFF)
+# define TAP_DANCE_KEYCODE(state) TD(((qk_tap_dance_action_t *)state) - tap_dance_actions)
extern qk_tap_dance_action_t tap_dance_actions[];
+void reset_tap_dance(qk_tap_dance_state_t *state);
+
/* To be used internally */
void preprocess_tap_dance(uint16_t keycode, keyrecord_t *record);
bool process_tap_dance(uint16_t keycode, keyrecord_t *record);
void tap_dance_task(void);
-void reset_tap_dance(qk_tap_dance_state_t *state);
void qk_tap_dance_pair_on_each_tap(qk_tap_dance_state_t *state, void *user_data);
void qk_tap_dance_pair_finished(qk_tap_dance_state_t *state, void *user_data);
diff --git a/quantum/process_keycode/process_terminal.c b/quantum/process_keycode/process_terminal.c
deleted file mode 100644
index da1c4d506f..0000000000
--- a/quantum/process_keycode/process_terminal.c
+++ /dev/null
@@ -1,330 +0,0 @@
-/* Copyright 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 "process_terminal.h"
-#include <string.h>
-#include "version.h"
-#include <stdio.h>
-#include <math.h>
-
-#ifndef CMD_BUFF_SIZE
-# define CMD_BUFF_SIZE 5
-#endif
-
-bool terminal_enabled = false;
-char buffer[80] = "";
-char cmd_buffer[CMD_BUFF_SIZE][80];
-bool cmd_buffer_enabled = true; // replace with ifdef?
-char newline[2] = "\n";
-char arguments[6][20];
-bool firstTime = true;
-
-short int current_cmd_buffer_pos = 0; // used for up/down arrows - keeps track of where you are in the command buffer
-
-__attribute__((weak)) const char terminal_prompt[8] = "> ";
-
-#ifdef AUDIO_ENABLE
-# ifndef TERMINAL_SONG
-# define TERMINAL_SONG SONG(TERMINAL_SOUND)
-# endif
-float terminal_song[][2] = TERMINAL_SONG;
-# define TERMINAL_BELL() PLAY_SONG(terminal_song)
-#else
-# define TERMINAL_BELL()
-#endif
-
-__attribute__((weak)) const char keycode_to_ascii_lut[58] = {0, 0, 0, 0, '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', 0, 0, 0, '\t', ' ', '-', '=', '[', ']', '\\', 0, ';', '\'', '`', ',', '.', '/'};
-
-__attribute__((weak)) const char shifted_keycode_to_ascii_lut[58] = {0, 0, 0, 0, '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', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', 0, 0, 0, '\t', ' ', '_', '+', '{', '}', '|', 0, ':', '\'', '~', '<', '>', '?'};
-
-struct stringcase {
- char *string;
- void (*func)(void);
-} typedef stringcase;
-
-void enable_terminal(void) {
- terminal_enabled = true;
- strcpy(buffer, "");
- memset(cmd_buffer, 0, CMD_BUFF_SIZE * 80);
- for (int i = 0; i < 6; i++)
- strcpy(arguments[i], "");
- // select all text to start over
- // SEND_STRING(SS_LCTL("a"));
- send_string(terminal_prompt);
-}
-
-void disable_terminal(void) {
- terminal_enabled = false;
- SEND_STRING("\n");
-}
-
-void push_to_cmd_buffer(void) {
- if (cmd_buffer_enabled) {
- if (cmd_buffer == NULL) {
- return;
- } else {
- if (firstTime) {
- firstTime = false;
- strcpy(cmd_buffer[0], buffer);
- return;
- }
-
- for (int i = CMD_BUFF_SIZE - 1; i > 0; --i) {
- strncpy(cmd_buffer[i], cmd_buffer[i - 1], 80);
- }
-
- strcpy(cmd_buffer[0], buffer);
-
- return;
- }
- }
-}
-
-void terminal_about(void) {
- SEND_STRING("QMK Firmware\n");
- SEND_STRING(" v");
- SEND_STRING(QMK_VERSION);
- SEND_STRING("\n" SS_TAP(X_HOME) " Built: ");
- SEND_STRING(QMK_BUILDDATE);
- send_string(newline);
-#ifdef TERMINAL_HELP
- if (strlen(arguments[1]) != 0) {
- SEND_STRING("You entered: ");
- send_string(arguments[1]);
- send_string(newline);
- }
-#endif
-}
-
-void terminal_help(void);
-
-extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
-
-void terminal_keycode(void) {
- if (strlen(arguments[1]) != 0 && strlen(arguments[2]) != 0 && strlen(arguments[3]) != 0) {
- char keycode_dec[5];
- char keycode_hex[5];
- uint16_t layer = strtol(arguments[1], (char **)NULL, 10);
- uint16_t row = strtol(arguments[2], (char **)NULL, 10);
- uint16_t col = strtol(arguments[3], (char **)NULL, 10);
- uint16_t keycode = pgm_read_word(&keymaps[layer][row][col]);
- itoa(keycode, keycode_dec, 10);
- itoa(keycode, keycode_hex, 16);
- SEND_STRING("0x");
- send_string(keycode_hex);
- SEND_STRING(" (");
- send_string(keycode_dec);
- SEND_STRING(")\n");
- } else {
-#ifdef TERMINAL_HELP
- SEND_STRING("usage: keycode <layer> <row> <col>\n");
-#endif
- }
-}
-
-void terminal_keymap(void) {
- if (strlen(arguments[1]) != 0) {
- uint16_t layer = strtol(arguments[1], (char **)NULL, 10);
- for (int r = 0; r < MATRIX_ROWS; r++) {
- for (int c = 0; c < MATRIX_COLS; c++) {
- uint16_t keycode = pgm_read_word(&keymaps[layer][r][c]);
- char keycode_s[8];
- sprintf(keycode_s, "0x%04x,", keycode);
- send_string(keycode_s);
- }
- send_string(newline);
- }
- } else {
-#ifdef TERMINAL_HELP
- SEND_STRING("usage: keymap <layer>\n");
-#endif
- }
-}
-
-void print_cmd_buff(void) {
- /* without the below wait, a race condition can occur wherein the
- buffer can be printed before it has been fully moved */
- wait_ms(250);
- for (int i = 0; i < CMD_BUFF_SIZE; i++) {
- char tmpChar = ' ';
- itoa(i, &tmpChar, 10);
- const char *tmpCnstCharStr = &tmpChar; // because sned_string wont take a normal char *
- send_string(tmpCnstCharStr);
- SEND_STRING(". ");
- send_string(cmd_buffer[i]);
- SEND_STRING("\n");
- }
-}
-
-void flush_cmd_buffer(void) {
- memset(cmd_buffer, 0, CMD_BUFF_SIZE * 80);
- SEND_STRING("Buffer Cleared!\n");
-}
-
-stringcase terminal_cases[] = {{"about", terminal_about}, {"help", terminal_help}, {"keycode", terminal_keycode}, {"keymap", terminal_keymap}, {"flush-buffer", flush_cmd_buffer}, {"print-buffer", print_cmd_buff}, {"exit", disable_terminal}};
-
-void terminal_help(void) {
- SEND_STRING("commands available:\n ");
- for (stringcase *case_p = terminal_cases; case_p != terminal_cases + sizeof(terminal_cases) / sizeof(terminal_cases[0]); case_p++) {
- send_string(case_p->string);
- SEND_STRING(" ");
- }
- send_string(newline);
-}
-
-void command_not_found(void) {
- wait_ms(50); // sometimes buffer isnt grabbed quick enough
- SEND_STRING("command \"");
- send_string(buffer);
- SEND_STRING("\" not found\n");
-}
-
-void process_terminal_command(void) {
- // we capture return bc of the order of events, so we need to manually send a newline
- send_string(newline);
-
- char * pch;
- uint8_t i = 0;
- pch = strtok(buffer, " ");
- while (pch != NULL) {
- strcpy(arguments[i], pch);
- pch = strtok(NULL, " ");
- i++;
- }
-
- bool command_found = false;
- for (stringcase *case_p = terminal_cases; case_p != terminal_cases + sizeof(terminal_cases) / sizeof(terminal_cases[0]); case_p++) {
- if (0 == strcmp(case_p->string, buffer)) {
- command_found = true;
- (*case_p->func)();
- break;
- }
- }
-
- if (!command_found) command_not_found();
-
- if (terminal_enabled) {
- strcpy(buffer, "");
- for (int i = 0; i < 6; i++)
- strcpy(arguments[i], "");
- SEND_STRING(SS_TAP(X_HOME));
- send_string(terminal_prompt);
- }
-}
-void check_pos(void) {
- if (current_cmd_buffer_pos >= CMD_BUFF_SIZE) { // if over the top, move it back down to the top of the buffer so you can climb back down...
- current_cmd_buffer_pos = CMD_BUFF_SIZE - 1;
- } else if (current_cmd_buffer_pos < 0) { //...and if you fall under the bottom of the buffer, reset back to 0 so you can climb back up
- current_cmd_buffer_pos = 0;
- }
-}
-
-bool process_terminal(uint16_t keycode, keyrecord_t *record) {
- if (keycode == TERM_ON && record->event.pressed) {
- enable_terminal();
- return false;
- }
-
- if (terminal_enabled && record->event.pressed) {
- if (keycode == TERM_OFF && record->event.pressed) {
- disable_terminal();
- return false;
- }
-
- if ((keycode >= QK_MOD_TAP && keycode <= QK_MOD_TAP_MAX) || (keycode >= QK_LAYER_TAP && keycode <= QK_LAYER_TAP_MAX)) {
- keycode = keycode & 0xFF;
- }
-
- if (keycode < 256) {
- uint8_t str_len;
- char char_to_add;
- switch (keycode) {
- case KC_ENTER:
- case KC_KP_ENTER:
- push_to_cmd_buffer();
- current_cmd_buffer_pos = 0;
- process_terminal_command();
- return false;
- break;
- case KC_ESCAPE:
- SEND_STRING("\n");
- enable_terminal();
- return false;
- break;
- case KC_BACKSPACE:
- str_len = strlen(buffer);
- if (str_len > 0) {
- buffer[str_len - 1] = 0;
- return true;
- } else {
- TERMINAL_BELL();
- return false;
- }
- break;
- case KC_LEFT:
- return false;
- break;
- case KC_RIGHT:
- return false;
- break;
- case KC_UP: // 0 = recent
- check_pos(); // check our current buffer position is valid
- if (current_cmd_buffer_pos <= CMD_BUFF_SIZE - 1) { // once we get to the top, dont do anything
- str_len = strlen(buffer);
- for (int i = 0; i < str_len; ++i) {
- send_string(SS_TAP(X_BSPACE)); // clear w/e is on the line already
- // process_terminal(KC_BACKSPACE,record);
- }
- strncpy(buffer, cmd_buffer[current_cmd_buffer_pos], 80);
-
- send_string(buffer);
- ++current_cmd_buffer_pos; // get ready to access the above cmd if up/down is pressed again
- }
- return false;
- break;
- case KC_DOWN:
- check_pos();
- if (current_cmd_buffer_pos >= 0) { // once we get to the bottom, dont do anything
- str_len = strlen(buffer);
- for (int i = 0; i < str_len; ++i) {
- send_string(SS_TAP(X_BSPACE)); // clear w/e is on the line already
- // process_terminal(KC_BACKSPACE,record);
- }
- strncpy(buffer, cmd_buffer[current_cmd_buffer_pos], 79);
-
- send_string(buffer);
- --current_cmd_buffer_pos; // get ready to access the above cmd if down/up is pressed again
- }
- return false;
- break;
- default:
- if (keycode <= 58) {
- char_to_add = 0;
- if (get_mods() & (MOD_BIT(KC_LEFT_SHIFT) | MOD_BIT(KC_RIGHT_SHIFT))) {
- char_to_add = shifted_keycode_to_ascii_lut[keycode];
- } else if (get_mods() == 0) {
- char_to_add = keycode_to_ascii_lut[keycode];
- }
- if (char_to_add != 0) {
- strncat(buffer, &char_to_add, 1);
- }
- }
- break;
- }
- }
- }
- return true;
-}
diff --git a/quantum/process_keycode/process_terminal.h b/quantum/process_keycode/process_terminal.h
deleted file mode 100644
index 0159131e5b..0000000000
--- a/quantum/process_keycode/process_terminal.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 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/>.
- */
-
-#pragma once
-
-#include "quantum.h"
-
-extern const char keycode_to_ascii_lut[58];
-extern const char shifted_keycode_to_ascii_lut[58];
-extern const char terminal_prompt[8];
-bool process_terminal(uint16_t keycode, keyrecord_t *record);
diff --git a/quantum/process_keycode/process_terminal_nop.h b/quantum/process_keycode/process_terminal_nop.h
deleted file mode 100644
index 36e25320c5..0000000000
--- a/quantum/process_keycode/process_terminal_nop.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Copyright 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/>.
- */
-
-#pragma once
-
-#include "quantum.h"
-
-#define TERM_ON KC_NO
-#define TERM_OFF KC_NO
diff --git a/quantum/process_keycode/process_unicode_common.c b/quantum/process_keycode/process_unicode_common.c
index 6cb2ba8dbb..8de31c055c 100644
--- a/quantum/process_keycode/process_unicode_common.c
+++ b/quantum/process_keycode/process_unicode_common.c
@@ -117,6 +117,12 @@ __attribute__((weak)) void unicode_input_start(void) {
tap_code(UNICODE_KEY_WINC);
tap_code(KC_U);
break;
+ case UC_EMACS:
+ // The usual way to type unicode in emacs is C-x-8 <RET> then the unicode number in hex
+ tap_code16(LCTL(KC_X));
+ tap_code16(KC_8);
+ tap_code16(KC_ENTER);
+ break;
}
wait_ms(UNICODE_TYPE_DELAY);
@@ -142,6 +148,9 @@ __attribute__((weak)) void unicode_input_finish(void) {
case UC_WINC:
tap_code(KC_ENTER);
break;
+ case UC_EMACS:
+ tap_code16(KC_ENTER);
+ break;
}
set_mods(unicode_saved_mods); // Reregister previously set mods
@@ -167,6 +176,9 @@ __attribute__((weak)) void unicode_input_cancel(void) {
tap_code(KC_NUM_LOCK);
}
break;
+ case UC_EMACS:
+ tap_code16(LCTL(KC_G)); // C-g cancels
+ break;
}
set_mods(unicode_saved_mods); // Reregister previously set mods
@@ -299,14 +311,30 @@ bool process_unicode_common(uint16_t keycode, keyrecord_t *record) {
cycle_unicode_input_mode(shifted ? +1 : -1);
audio_helper();
break;
-
- case UNICODE_MODE_MAC ... UNICODE_MODE_WINC: {
- // Keycodes and input modes follow the same ordering
- uint8_t delta = keycode - UNICODE_MODE_MAC;
- set_unicode_input_mode(UC_MAC + delta);
+ case UNICODE_MODE_MAC:
+ set_unicode_input_mode(UC_MAC);
+ audio_helper();
+ break;
+ case UNICODE_MODE_LNX:
+ set_unicode_input_mode(UC_LNX);
+ audio_helper();
+ break;
+ case UNICODE_MODE_WIN:
+ set_unicode_input_mode(UC_WIN);
+ audio_helper();
+ break;
+ case UNICODE_MODE_BSD:
+ set_unicode_input_mode(UC_BSD);
+ audio_helper();
+ break;
+ case UNICODE_MODE_WINC:
+ set_unicode_input_mode(UC_WINC);
+ audio_helper();
+ break;
+ case UNICODE_MODE_EMACS:
+ set_unicode_input_mode(UC_EMACS);
audio_helper();
break;
- }
}
}
diff --git a/quantum/process_keycode/process_unicode_common.h b/quantum/process_keycode/process_unicode_common.h
index 8a4494c939..15e798dbb3 100644
--- a/quantum/process_keycode/process_unicode_common.h
+++ b/quantum/process_keycode/process_unicode_common.h
@@ -64,6 +64,7 @@ enum unicode_input_modes {
UC_WIN, // Windows using EnableHexNumpad
UC_BSD, // BSD (not implemented)
UC_WINC, // Windows using WinCompose (https://github.com/samhocevar/wincompose)
+ UC_EMACS, // Emacs is an operating system in search of a good text editor
UC__COUNT // Number of available input modes (always leave at the end)
};
diff --git a/quantum/quantum.c b/quantum/quantum.c
index 33121f6b95..9a0016b150 100644
--- a/quantum/quantum.c
+++ b/quantum/quantum.c
@@ -93,16 +93,27 @@ __attribute__((weak)) void unregister_code16(uint16_t code) {
}
}
-__attribute__((weak)) void tap_code16(uint16_t code) {
+/** \brief Tap a keycode with a delay.
+ *
+ * \param code The modded keycode to tap.
+ * \param delay The amount of time in milliseconds to leave the keycode registered, before unregistering it.
+ */
+__attribute__((weak)) void tap_code16_delay(uint16_t code, uint16_t delay) {
register_code16(code);
- if (code == KC_CAPS_LOCK) {
- wait_ms(TAP_HOLD_CAPS_DELAY);
- } else if (TAP_CODE_DELAY > 0) {
- wait_ms(TAP_CODE_DELAY);
+ for (uint16_t i = delay; i > 0; i--) {
+ wait_ms(1);
}
unregister_code16(code);
}
+/** \brief Tap a keycode with the default delay.
+ *
+ * \param code The modded keycode to tap. If `code` is `KC_CAPS_LOCK`, the delay will be `TAP_HOLD_CAPS_DELAY`, otherwise `TAP_CODE_DELAY`, if defined.
+ */
+__attribute__((weak)) void tap_code16(uint16_t code) {
+ tap_code16_delay(code, code == KC_CAPS_LOCK ? TAP_HOLD_CAPS_DELAY : TAP_CODE_DELAY);
+}
+
__attribute__((weak)) bool process_action_kb(keyrecord_t *record) {
return true;
}
@@ -307,9 +318,6 @@ bool process_record_quantum(keyrecord_t *record) {
#ifdef DYNAMIC_TAPPING_TERM_ENABLE
process_dynamic_tapping_term(keycode, record) &&
#endif
-#ifdef TERMINAL_ENABLE
- process_terminal(keycode, record) &&
-#endif
#ifdef SPACE_CADET_ENABLE
process_space_cadet(keycode, record) &&
#endif
@@ -403,6 +411,9 @@ bool process_record_quantum(keyrecord_t *record) {
SEND_STRING_DELAY(" compile ", TAP_CODE_DELAY);
}
SEND_STRING_DELAY("-kb " QMK_KEYBOARD " -km " QMK_KEYMAP SS_TAP(X_ENTER), TAP_CODE_DELAY);
+ if (temp_mod & MOD_MASK_SHIFT && temp_mod & MOD_MASK_CTRL) {
+ reset_keyboard();
+ }
}
#endif
}
diff --git a/quantum/quantum.h b/quantum/quantum.h
index 92e1af1c40..8d74f2be38 100644
--- a/quantum/quantum.h
+++ b/quantum/quantum.h
@@ -49,7 +49,6 @@
#include "action_util.h"
#include "action_tapping.h"
#include "print.h"
-#include "send_string.h"
#include "suspend.h"
#include <stddef.h>
#include <stdlib.h>
@@ -141,12 +140,6 @@ extern layer_state_t layer_state;
# include "process_key_lock.h"
#endif
-#ifdef TERMINAL_ENABLE
-# include "process_terminal.h"
-#else
-# include "process_terminal_nop.h"
-#endif
-
#ifdef SPACE_CADET_ENABLE
# include "process_space_cadet.h"
#endif
@@ -175,6 +168,10 @@ extern layer_state_t layer_state;
# include "hd44780.h"
#endif
+#ifdef SEND_STRING_ENABLE
+# include "send_string.h"
+#endif
+
#ifdef HAPTIC_ENABLE
# include "haptic.h"
# include "process_haptic.h"
@@ -267,6 +264,7 @@ void shutdown_user(void);
void register_code16(uint16_t code);
void unregister_code16(uint16_t code);
void tap_code16(uint16_t code);
+void tap_code16_delay(uint16_t code, uint16_t delay);
const char *get_numeric_str(char *buf, size_t buf_len, uint32_t curr_num, char curr_pad);
const char *get_u8_str(uint8_t curr_num, char curr_pad);
diff --git a/quantum/quantum_keycodes.h b/quantum/quantum_keycodes.h
index 40355d799a..c8f03fa1ce 100644
--- a/quantum/quantum_keycodes.h
+++ b/quantum/quantum_keycodes.h
@@ -473,9 +473,9 @@ enum quantum_keycodes {
// Lock Key
KC_LOCK, // 5D2B
- // Terminal
- TERM_ON, // 5D2C
- TERM_OFF, // 5D2D
+ // Unused slots
+ UNUSED_000, // 5D2C
+ UNUSED_001, // 5D2D
// Sequencer
SQ_ON, // 5D2E
@@ -605,6 +605,12 @@ enum quantum_keycodes {
CAPS_WORD,
+ MAGIC_SWAP_ESCAPE_CAPSLOCK,
+ MAGIC_UNSWAP_ESCAPE_CAPSLOCK,
+ MAGIC_TOGGLE_ESCAPE_CAPSLOCK,
+
+ UNICODE_MODE_EMACS,
+
// Start of custom keycode range for keyboards and keymaps - always leave at the end
SAFE_RANGE
};
@@ -756,6 +762,10 @@ enum quantum_keycodes {
#define CL_CAPS MAGIC_UNCAPSLOCK_TO_CONTROL
#define CL_TOGG MAGIC_TOGGLE_CONTROL_CAPSLOCK
+#define EC_SWAP MAGIC_SWAP_ESCAPE_CAPSLOCK
+#define EC_NORM MAGIC_UNSWAP_ESCAPE_CAPSLOCK
+#define EC_TOGG MAGIC_TOGGLE_ESCAPE_CAPSLOCK
+
#define LCG_SWP MAGIC_SWAP_LCTL_LGUI
#define LCG_NRM MAGIC_UNSWAP_LCTL_LGUI
#define RCG_SWP MAGIC_SWAP_RCTL_RGUI
@@ -789,15 +799,8 @@ enum quantum_keycodes {
#define EH_LEFT MAGIC_EE_HANDS_LEFT
#define EH_RGHT MAGIC_EE_HANDS_RIGHT
-// GOTO layer - 16 layers max
-// when:
-// ON_PRESS = 1
-// ON_RELEASE = 2
-// Unless you have a good reason not to do so, prefer ON_PRESS (1) as your default.
-// In fact, we changed it to assume ON_PRESS for sanity/simplicity. If needed, you can add your own
-// keycode modeled after the old version, kept below for this.
-/* #define TO(layer, when) (QK_TO | (when << 0x4) | (layer & 0xFF)) */
-#define TO(layer) (QK_TO | (ON_PRESS << 0x4) | ((layer)&0xFF))
+// GOTO layer - 256 layer max
+#define TO(layer) (QK_TO | ((layer)&0xFF))
// Momentary switch layer - 256 layer max
#define MO(layer) (QK_MOMENTARY | ((layer)&0xFF))
@@ -893,6 +896,7 @@ enum quantum_keycodes {
#define UC_M_WI UNICODE_MODE_WIN
#define UC_M_BS UNICODE_MODE_BSD
#define UC_M_WC UNICODE_MODE_WINC
+#define UC_M_EM UNICODE_MODE_EMACS
// Swap Hands
#define SH_T(kc) (QK_SWAP_HANDS | (kc))
diff --git a/quantum/quantum_keycodes_legacy.h b/quantum/quantum_keycodes_legacy.h
index ed9455ee74..51380d9c50 100644
--- a/quantum/quantum_keycodes_legacy.h
+++ b/quantum/quantum_keycodes_legacy.h
@@ -11,3 +11,6 @@
#define KC_GESC QK_GRAVE_ESCAPE
#define EEP_RST QK_CLEAR_EEPROM
+
+#define TERM_ON _Static_assert(false, "The Terminal feature has been removed from QMK. Please remove use of TERM_ON/TERM_OFF from your keymap.")
+#define TERM_OFF _Static_assert(false, "The Terminal feature has been removed from QMK.. Please remove use of TERM_ON/TERM_OFF from your keymap.") \ No newline at end of file
diff --git a/quantum/rgb_matrix/animations/pixel_fractal_anim.h b/quantum/rgb_matrix/animations/pixel_fractal_anim.h
index 906da1a48e..b26d5c4100 100644
--- a/quantum/rgb_matrix/animations/pixel_fractal_anim.h
+++ b/quantum/rgb_matrix/animations/pixel_fractal_anim.h
@@ -1,19 +1,5 @@
-/* Copyright (C) 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/>.
- */
-
+// Copyright (C) 2022 @filterpaper
+// SPDX-License-Identifier: GPL-2.0-or-later
// Inspired from 4x12 fractal created by @schwarzgrau
#ifdef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
@@ -22,12 +8,8 @@ RGB_MATRIX_EFFECT(PIXEL_FRACTAL)
static bool PIXEL_FRACTAL(effect_params_t* params) {
# define MID_COL MATRIX_COLS / 2
- static bool led[MATRIX_ROWS][MATRIX_COLS];
-
+ static bool led[MATRIX_ROWS][MID_COL];
static uint32_t wait_timer = 0;
- if (wait_timer > g_rgb_timer) {
- return false;
- }
inline uint32_t interval(void) {
return 3000 / scale16by8(qadd8(rgb_matrix_config.speed, 16), 16);
@@ -37,44 +19,40 @@ static bool PIXEL_FRACTAL(effect_params_t* params) {
rgb_matrix_set_color_all(0, 0, 0);
}
- RGB rgb = rgb_matrix_hsv_to_rgb(rgb_matrix_config.hsv);
- for (uint8_t h = 0; h < MATRIX_ROWS; ++h) {
- for (uint8_t l = 0; l < MID_COL - 1; ++l) { // Light and move left columns outwards
- if (led[h][l]) {
- rgb_matrix_set_color(g_led_config.matrix_co[h][l], rgb.r, rgb.g, rgb.b);
- } else {
- rgb_matrix_set_color(g_led_config.matrix_co[h][l], 0, 0, 0);
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+ if (g_rgb_timer > wait_timer) {
+ RGB rgb = rgb_matrix_hsv_to_rgb(rgb_matrix_config.hsv);
+ for (uint8_t h = 0; h < MATRIX_ROWS; ++h) {
+ // Light and copy columns outward
+ for (uint8_t l = 0; l < MID_COL - 1; ++l) {
+ if (led[h][l]) {
+ rgb_matrix_set_color(g_led_config.matrix_co[h][l], rgb.r, rgb.g, rgb.b);
+ rgb_matrix_set_color(g_led_config.matrix_co[h][MATRIX_COLS - 1 - l], rgb.r, rgb.g, rgb.b);
+ } else {
+ rgb_matrix_set_color(g_led_config.matrix_co[h][l], 0, 0, 0);
+ rgb_matrix_set_color(g_led_config.matrix_co[h][MATRIX_COLS - 1 - l], 0, 0, 0);
+ }
+ led[h][l] = led[h][l + 1];
}
- led[h][l] = led[h][l + 1];
- }
- for (uint8_t r = MATRIX_COLS - 1; r > MID_COL; --r) { // Light and move right columns outwards
- if (led[h][r]) {
- rgb_matrix_set_color(g_led_config.matrix_co[h][r], rgb.r, rgb.g, rgb.b);
+ // Light both middle columns
+ if (led[h][MID_COL - 1]) {
+ rgb_matrix_set_color(g_led_config.matrix_co[h][MID_COL - 1], rgb.r, rgb.g, rgb.b);
+ rgb_matrix_set_color(g_led_config.matrix_co[h][MATRIX_COLS - MID_COL], rgb.r, rgb.g, rgb.b);
} else {
- rgb_matrix_set_color(g_led_config.matrix_co[h][r], 0, 0, 0);
+ rgb_matrix_set_color(g_led_config.matrix_co[h][MID_COL - 1], 0, 0, 0);
+ rgb_matrix_set_color(g_led_config.matrix_co[h][MATRIX_COLS - MID_COL], 0, 0, 0);
}
- led[h][r] = led[h][r - 1];
- }
- // Light both middle columns
- if (led[h][MID_COL]) {
- rgb_matrix_set_color(g_led_config.matrix_co[h][MID_COL], rgb.r, rgb.g, rgb.b);
- } else {
- rgb_matrix_set_color(g_led_config.matrix_co[h][MID_COL], 0, 0, 0);
- }
- if (led[h][MID_COL - 1]) {
- rgb_matrix_set_color(g_led_config.matrix_co[h][MID_COL - 1], rgb.r, rgb.g, rgb.b);
- } else {
- rgb_matrix_set_color(g_led_config.matrix_co[h][MID_COL - 1], 0, 0, 0);
+ // Generate new random fractal column
+ led[h][MID_COL - 1] = (random8() & 3) ? false : true;
}
- // Generate new random fractal columns
- led[h][MID_COL] = led[h][MID_COL - 1] = (random8() & 3) ? false : true;
+ wait_timer = g_rgb_timer + interval();
}
- wait_timer = g_rgb_timer + interval();
- return false;
+ return rgb_matrix_check_finished_leds(led_max);
}
# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
#endif // ENABLE_RGB_MATRIX_PIXEL_FRACTAL
diff --git a/quantum/rgb_matrix/animations/pixel_rain_anim.h b/quantum/rgb_matrix/animations/pixel_rain_anim.h
index 03488b43df..ce2528a26d 100644
--- a/quantum/rgb_matrix/animations/pixel_rain_anim.h
+++ b/quantum/rgb_matrix/animations/pixel_rain_anim.h
@@ -20,17 +20,14 @@ RGB_MATRIX_EFFECT(PIXEL_RAIN)
static bool PIXEL_RAIN(effect_params_t* params) {
static uint32_t wait_timer = 0;
- if (wait_timer > g_rgb_timer) {
- return false;
- }
inline uint32_t interval(void) {
return 500 / scale16by8(qadd8(rgb_matrix_config.speed, 16), 16);
}
- bool rain_pixel(uint8_t i, effect_params_t * params, bool off) {
+ void rain_pixel(uint8_t i, effect_params_t * params, bool off) {
if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) {
- return true;
+ return;
}
if (off) {
rgb_matrix_set_color(i, 0, 0, 0);
@@ -40,10 +37,13 @@ static bool PIXEL_RAIN(effect_params_t* params) {
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
}
wait_timer = g_rgb_timer + interval();
- return false;
}
- return rain_pixel(mod8(random8(), DRIVER_LED_TOTAL), params, random8() & 2);
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
+ if (g_rgb_timer > wait_timer) {
+ rain_pixel(mod8(random8(), DRIVER_LED_TOTAL), params, random8() & 2);
+ }
+ return rgb_matrix_check_finished_leds(led_max);
}
# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
diff --git a/quantum/rgb_matrix/animations/raindrops_anim.h b/quantum/rgb_matrix/animations/raindrops_anim.h
index 2d4b53b7b0..a508e51183 100644
--- a/quantum/rgb_matrix/animations/raindrops_anim.h
+++ b/quantum/rgb_matrix/animations/raindrops_anim.h
@@ -14,23 +14,22 @@ static void raindrops_set_color(int i, effect_params_t* params) {
deltaH += 256;
}
- hsv.h = rgb_matrix_config.hsv.h + (deltaH * (rand() & 0x03));
+ hsv.h = rgb_matrix_config.hsv.h + (deltaH * (random8() & 0x03));
RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
}
bool RAINDROPS(effect_params_t* params) {
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
if (!params->init) {
// Change one LED every tick, make sure speed is not 0
if (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 16)) % 10 == 0) {
- raindrops_set_color(rand() % DRIVER_LED_TOTAL, params);
+ raindrops_set_color(random8() % DRIVER_LED_TOTAL, params);
+ }
+ } else {
+ for (int i = led_min; i < led_max; i++) {
+ raindrops_set_color(i, params);
}
- return false;
- }
-
- RGB_MATRIX_USE_LIMITS(led_min, led_max);
- for (int i = led_min; i < led_max; i++) {
- raindrops_set_color(i, params);
}
return rgb_matrix_check_finished_leds(led_max);
}
diff --git a/quantum/rgb_matrix/animations/solid_reactive_anim.h b/quantum/rgb_matrix/animations/solid_reactive_anim.h
index d3a7ebbdf7..052bfb22fd 100644
--- a/quantum/rgb_matrix/animations/solid_reactive_anim.h
+++ b/quantum/rgb_matrix/animations/solid_reactive_anim.h
@@ -4,6 +4,9 @@ RGB_MATRIX_EFFECT(SOLID_REACTIVE)
# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
static HSV SOLID_REACTIVE_math(HSV hsv, uint16_t offset) {
+# ifdef RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE
+ hsv.h = scale16by8(g_rgb_timer, add8(rgb_matrix_config.speed, 1) >> 6);
+# endif
hsv.h += qsub8(130, offset);
return hsv;
}
diff --git a/quantum/rgb_matrix/animations/solid_reactive_cross.h b/quantum/rgb_matrix/animations/solid_reactive_cross.h
index 043a369b73..9e5703a0ea 100644
--- a/quantum/rgb_matrix/animations/solid_reactive_cross.h
+++ b/quantum/rgb_matrix/animations/solid_reactive_cross.h
@@ -19,6 +19,9 @@ static HSV SOLID_REACTIVE_CROSS_math(HSV hsv, int16_t dx, int16_t dy, uint8_t di
dy = dy * 16 > 255 ? 255 : dy * 16;
effect += dx > dy ? dy : dx;
if (effect > 255) effect = 255;
+# ifdef RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE
+ hsv.h = scale16by8(g_rgb_timer, add8(rgb_matrix_config.speed, 1) >> 6);
+# endif
hsv.v = qadd8(hsv.v, 255 - effect);
return hsv;
}
diff --git a/quantum/rgb_matrix/animations/solid_reactive_nexus.h b/quantum/rgb_matrix/animations/solid_reactive_nexus.h
index 8d62a49fea..64f5064cf9 100644
--- a/quantum/rgb_matrix/animations/solid_reactive_nexus.h
+++ b/quantum/rgb_matrix/animations/solid_reactive_nexus.h
@@ -16,6 +16,9 @@ static HSV SOLID_REACTIVE_NEXUS_math(HSV hsv, int16_t dx, int16_t dy, uint8_t di
if (effect > 255) effect = 255;
if (dist > 72) effect = 255;
if ((dx > 8 || dx < -8) && (dy > 8 || dy < -8)) effect = 255;
+# ifdef RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE
+ hsv.h = scale16by8(g_rgb_timer, add8(rgb_matrix_config.speed, 1) >> 6);
+# endif
hsv.v = qadd8(hsv.v, 255 - effect);
hsv.h = rgb_matrix_config.hsv.h + dy / 4;
return hsv;
diff --git a/quantum/rgb_matrix/animations/solid_reactive_simple_anim.h b/quantum/rgb_matrix/animations/solid_reactive_simple_anim.h
index 0d0a424cf3..bd3ce0817d 100644
--- a/quantum/rgb_matrix/animations/solid_reactive_simple_anim.h
+++ b/quantum/rgb_matrix/animations/solid_reactive_simple_anim.h
@@ -4,6 +4,9 @@ RGB_MATRIX_EFFECT(SOLID_REACTIVE_SIMPLE)
# ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
static HSV SOLID_REACTIVE_SIMPLE_math(HSV hsv, uint16_t offset) {
+# ifdef RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE
+ hsv.h = scale16by8(g_rgb_timer, add8(rgb_matrix_config.speed, 1) >> 6);
+# endif
hsv.v = scale8(255 - offset, hsv.v);
return hsv;
}
diff --git a/quantum/rgb_matrix/animations/solid_reactive_wide.h b/quantum/rgb_matrix/animations/solid_reactive_wide.h
index 7598796316..24fedc2020 100644
--- a/quantum/rgb_matrix/animations/solid_reactive_wide.h
+++ b/quantum/rgb_matrix/animations/solid_reactive_wide.h
@@ -14,6 +14,9 @@ RGB_MATRIX_EFFECT(SOLID_REACTIVE_MULTIWIDE)
static HSV SOLID_REACTIVE_WIDE_math(HSV hsv, int16_t dx, int16_t dy, uint8_t dist, uint16_t tick) {
uint16_t effect = tick + dist * 5;
if (effect > 255) effect = 255;
+# ifdef RGB_MATRIX_SOLID_REACTIVE_GRADIENT_MODE
+ hsv.h = scale16by8(g_rgb_timer, add8(rgb_matrix_config.speed, 1) >> 6);
+# endif
hsv.v = qadd8(hsv.v, 255 - effect);
return hsv;
}
diff --git a/quantum/rgb_matrix/animations/typing_heatmap_anim.h b/quantum/rgb_matrix/animations/typing_heatmap_anim.h
index 4b17c4c3ed..00d137f1a6 100644
--- a/quantum/rgb_matrix/animations/typing_heatmap_anim.h
+++ b/quantum/rgb_matrix/animations/typing_heatmap_anim.h
@@ -6,30 +6,41 @@ RGB_MATRIX_EFFECT(TYPING_HEATMAP)
# define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 25
# endif
+# ifndef RGB_MATRIX_TYPING_HEATMAP_SPREAD
+# define RGB_MATRIX_TYPING_HEATMAP_SPREAD 40
+# endif
+
+# ifndef RGB_MATRIX_TYPING_HEATMAP_AREA_LIMIT
+# define RGB_MATRIX_TYPING_HEATMAP_AREA_LIMIT 16
+# endif
void process_rgb_matrix_typing_heatmap(uint8_t row, uint8_t col) {
# ifdef RGB_MATRIX_TYPING_HEATMAP_SLIM
// Limit effect to pressed keys
g_rgb_frame_buffer[row][col] = qadd8(g_rgb_frame_buffer[row][col], 32);
# else
- uint8_t m_row = row - 1;
- uint8_t p_row = row + 1;
- uint8_t m_col = col - 1;
- uint8_t p_col = col + 1;
-
- if (m_col < col) g_rgb_frame_buffer[row][m_col] = qadd8(g_rgb_frame_buffer[row][m_col], 16);
- g_rgb_frame_buffer[row][col] = qadd8(g_rgb_frame_buffer[row][col], 32);
- if (p_col < MATRIX_COLS) g_rgb_frame_buffer[row][p_col] = qadd8(g_rgb_frame_buffer[row][p_col], 16);
-
- if (p_row < MATRIX_ROWS) {
- if (m_col < col) g_rgb_frame_buffer[p_row][m_col] = qadd8(g_rgb_frame_buffer[p_row][m_col], 13);
- g_rgb_frame_buffer[p_row][col] = qadd8(g_rgb_frame_buffer[p_row][col], 16);
- if (p_col < MATRIX_COLS) g_rgb_frame_buffer[p_row][p_col] = qadd8(g_rgb_frame_buffer[p_row][p_col], 13);
+ if (g_led_config.matrix_co[row][col] == NO_LED) { // skip as pressed key doesn't have an led position
+ return;
}
-
- if (m_row < row) {
- if (m_col < col) g_rgb_frame_buffer[m_row][m_col] = qadd8(g_rgb_frame_buffer[m_row][m_col], 13);
- g_rgb_frame_buffer[m_row][col] = qadd8(g_rgb_frame_buffer[m_row][col], 16);
- if (p_col < MATRIX_COLS) g_rgb_frame_buffer[m_row][p_col] = qadd8(g_rgb_frame_buffer[m_row][p_col], 13);
+ for (uint8_t i_row = 0; i_row < MATRIX_ROWS; i_row++) {
+ for (uint8_t i_col = 0; i_col < MATRIX_COLS; i_col++) {
+ if (g_led_config.matrix_co[i_row][i_col] == NO_LED) { // skip as target key doesn't have an led position
+ continue;
+ }
+ if (i_row == row && i_col == col) {
+ g_rgb_frame_buffer[row][col] = qadd8(g_rgb_frame_buffer[row][col], 32);
+ } else {
+# define LED_DISTANCE(led_a, led_b) sqrt16(((int16_t)(led_a.x - led_b.x) * (int16_t)(led_a.x - led_b.x)) + ((int16_t)(led_a.y - led_b.y) * (int16_t)(led_a.y - led_b.y)))
+ uint8_t distance = LED_DISTANCE(g_led_config.point[g_led_config.matrix_co[row][col]], g_led_config.point[g_led_config.matrix_co[i_row][i_col]]);
+# undef LED_DISTANCE
+ if (distance <= RGB_MATRIX_TYPING_HEATMAP_SPREAD) {
+ uint8_t amount = qsub8(RGB_MATRIX_TYPING_HEATMAP_SPREAD, distance);
+ if (amount > RGB_MATRIX_TYPING_HEATMAP_AREA_LIMIT) {
+ amount = RGB_MATRIX_TYPING_HEATMAP_AREA_LIMIT;
+ }
+ g_rgb_frame_buffer[i_row][i_col] = qadd8(g_rgb_frame_buffer[i_row][i_col], amount);
+ }
+ }
+ }
}
# endif
}
@@ -40,10 +51,7 @@ static uint16_t heatmap_decrease_timer;
static bool decrease_heatmap_values;
bool TYPING_HEATMAP(effect_params_t* params) {
- // Modified version of RGB_MATRIX_USE_LIMITS to work off of matrix row / col size
- uint8_t led_min = RGB_MATRIX_LED_PROCESS_LIMIT * params->iter;
- uint8_t led_max = led_min + RGB_MATRIX_LED_PROCESS_LIMIT;
- if (led_max > sizeof(g_rgb_frame_buffer)) led_max = sizeof(g_rgb_frame_buffer);
+ RGB_MATRIX_USE_LIMITS(led_min, led_max);
if (params->init) {
rgb_matrix_set_color_all(0, 0, 0);
@@ -63,28 +71,26 @@ bool TYPING_HEATMAP(effect_params_t* params) {
}
// Render heatmap & decrease
- for (int i = led_min; i < led_max; i++) {
- uint8_t row = i % MATRIX_ROWS;
- uint8_t col = i / MATRIX_ROWS;
- uint8_t val = g_rgb_frame_buffer[row][col];
-
- // set the pixel colour
- uint8_t led[LED_HITS_TO_REMEMBER];
- uint8_t led_count = rgb_matrix_map_row_column_to_led(row, col, led);
- for (uint8_t j = 0; j < led_count; ++j) {
- if (!HAS_ANY_FLAGS(g_led_config.flags[led[j]], params->flags)) continue;
-
- HSV hsv = {170 - qsub8(val, 85), rgb_matrix_config.hsv.s, scale8((qadd8(170, val) - 170) * 3, rgb_matrix_config.hsv.v)};
- RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
- rgb_matrix_set_color(led[j], rgb.r, rgb.g, rgb.b);
- }
-
- if (decrease_heatmap_values) {
- g_rgb_frame_buffer[row][col] = qsub8(val, 1);
+ uint8_t count = 0;
+ for (uint8_t row = 0; row < MATRIX_ROWS && count < RGB_MATRIX_LED_PROCESS_LIMIT; row++) {
+ for (uint8_t col = 0; col < MATRIX_COLS && RGB_MATRIX_LED_PROCESS_LIMIT; col++) {
+ if (g_led_config.matrix_co[row][col] >= led_min && g_led_config.matrix_co[row][col] < led_max) {
+ count++;
+ uint8_t val = g_rgb_frame_buffer[row][col];
+ if (!HAS_ANY_FLAGS(g_led_config.flags[g_led_config.matrix_co[row][col]], params->flags)) continue;
+
+ HSV hsv = {170 - qsub8(val, 85), rgb_matrix_config.hsv.s, scale8((qadd8(170, val) - 170) * 3, rgb_matrix_config.hsv.v)};
+ RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
+ rgb_matrix_set_color(g_led_config.matrix_co[row][col], rgb.r, rgb.g, rgb.b);
+
+ if (decrease_heatmap_values) {
+ g_rgb_frame_buffer[row][col] = qsub8(val, 1);
+ }
+ }
}
}
- return led_max < sizeof(g_rgb_frame_buffer);
+ return rgb_matrix_check_finished_leds(led_max);
}
# endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
diff --git a/quantum/rgb_matrix/rgb_matrix.c b/quantum/rgb_matrix/rgb_matrix.c
index f721dfc7f2..2730686839 100644
--- a/quantum/rgb_matrix/rgb_matrix.c
+++ b/quantum/rgb_matrix/rgb_matrix.c
@@ -249,8 +249,15 @@ void process_rgb_matrix(uint8_t row, uint8_t col, bool pressed) {
#endif // RGB_MATRIX_KEYREACTIVE_ENABLED
#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && defined(ENABLE_RGB_MATRIX_TYPING_HEATMAP)
- if (rgb_matrix_config.mode == RGB_MATRIX_TYPING_HEATMAP) {
- process_rgb_matrix_typing_heatmap(row, col);
+# if defined(RGB_MATRIX_KEYRELEASES)
+ if (!pressed)
+# else
+ if (pressed)
+# endif // defined(RGB_MATRIX_KEYRELEASES)
+ {
+ if (rgb_matrix_config.mode == RGB_MATRIX_TYPING_HEATMAP) {
+ process_rgb_matrix_typing_heatmap(row, col);
+ }
}
#endif // defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && defined(ENABLE_RGB_MATRIX_TYPING_HEATMAP)
}
@@ -724,10 +731,20 @@ void rgb_matrix_decrease_speed(void) {
rgb_matrix_decrease_speed_helper(true);
}
+void rgb_matrix_set_flags_eeprom_helper(led_flags_t flags, bool write_to_eeprom) {
+ rgb_matrix_config.flags = flags;
+ eeconfig_flag_rgb_matrix(write_to_eeprom);
+ dprintf("rgb matrix set speed [%s]: %u\n", (write_to_eeprom) ? "EEPROM" : "NOEEPROM", rgb_matrix_config.flags);
+}
+
led_flags_t rgb_matrix_get_flags(void) {
return rgb_matrix_config.flags;
}
void rgb_matrix_set_flags(led_flags_t flags) {
- rgb_matrix_config.flags = flags;
+ rgb_matrix_set_flags_eeprom_helper(flags, true);
+}
+
+void rgb_matrix_set_flags_noeeprom(led_flags_t flags) {
+ rgb_matrix_set_flags_eeprom_helper(flags, false);
}
diff --git a/quantum/rgb_matrix/rgb_matrix.h b/quantum/rgb_matrix/rgb_matrix.h
index 359d507a4d..fc9fc3e020 100644
--- a/quantum/rgb_matrix/rgb_matrix.h
+++ b/quantum/rgb_matrix/rgb_matrix.h
@@ -182,6 +182,7 @@ void rgb_matrix_increase_speed_noeeprom(void);
void rgb_matrix_decrease_speed(void);
void rgb_matrix_decrease_speed_noeeprom(void);
led_flags_t rgb_matrix_get_flags(void);
+led_flags_t rgb_matrix_get_flags_noeeprom(void);
void rgb_matrix_set_flags(led_flags_t flags);
#ifndef RGBLIGHT_ENABLE
diff --git a/quantum/send_string.c b/quantum/send_string.c
deleted file mode 100644
index 0de12ba12d..0000000000
--- a/quantum/send_string.c
+++ /dev/null
@@ -1,322 +0,0 @@
-/* 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 <ctype.h>
-
-#include "quantum.h"
-
-#include "send_string.h"
-
-#if defined(AUDIO_ENABLE) && defined(SENDSTRING_BELL)
-# include "audio.h"
-# ifndef BELL_SOUND
-# define BELL_SOUND TERMINAL_SOUND
-# endif
-float bell_song[][2] = SONG(BELL_SOUND);
-#endif
-
-// clang-format off
-
-/* Bit-Packed look-up table to convert an ASCII character to whether
- * [Shift] needs to be sent with the keycode.
- */
-__attribute__((weak)) const uint8_t ascii_to_shift_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 0),
- KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 1, 0, 1, 0, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
- KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 1, 1),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
-};
-
-/* Bit-Packed look-up table to convert an ASCII character to whether
- * [AltGr] needs to be sent with the keycode.
- */
-__attribute__((weak)) const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
-};
-
-/* Bit-Packed look-up table to convert an ASCII character to whether
- * [Space] needs to be sent after the keycode
- */
-__attribute__((weak)) const uint8_t ascii_to_dead_lut[16] PROGMEM = {
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
-
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
- KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
-};
-
-/* Look-up table to convert an ASCII character to a keycode.
- */
-__attribute__((weak)) const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
- // NUL SOH STX ETX EOT ENQ ACK BEL
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // BS TAB LF VT FF CR SO SI
- KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
- XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
- // CAN EM SUB ESC FS GS RS US
- XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
-
- // ! " # $ % & '
- KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
- // ( ) * + , - . /
- KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
- // 0 1 2 3 4 5 6 7
- KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
- // 8 9 : ; < = > ?
- KC_8, KC_9, KC_SCLN, KC_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
- // @ A B C D E F G
- KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
- // H I J K L M N O
- KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
- // P Q R S T U V W
- KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
- // X Y Z [ \ ] ^ _
- KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
- // ` a b c d e f g
- KC_GRV, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
- // h i j k l m n o
- KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
- // p q r s t u v w
- KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
- // x y z { | } ~ DEL
- KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
-};
-
-// clang-format on
-
-// Note: we bit-pack in "reverse" order to optimize loading
-#define PGM_LOADBIT(mem, pos) ((pgm_read_byte(&((mem)[(pos) / 8])) >> ((pos) % 8)) & 0x01)
-
-void send_string(const char *str) {
- send_string_with_delay(str, 0);
-}
-
-void send_string_P(const char *str) {
- send_string_with_delay_P(str, 0);
-}
-
-void send_string_with_delay(const char *str, uint8_t interval) {
- while (1) {
- char ascii_code = *str;
- if (!ascii_code) break;
- if (ascii_code == SS_QMK_PREFIX) {
- ascii_code = *(++str);
- if (ascii_code == SS_TAP_CODE) {
- // tap
- uint8_t keycode = *(++str);
- tap_code(keycode);
- } else if (ascii_code == SS_DOWN_CODE) {
- // down
- uint8_t keycode = *(++str);
- register_code(keycode);
- } else if (ascii_code == SS_UP_CODE) {
- // up
- uint8_t keycode = *(++str);
- unregister_code(keycode);
- } else if (ascii_code == SS_DELAY_CODE) {
- // delay
- int ms = 0;
- uint8_t keycode = *(++str);
- while (isdigit(keycode)) {
- ms *= 10;
- ms += keycode - '0';
- keycode = *(++str);
- }
- while (ms--)
- wait_ms(1);
- }
- } else {
- send_char(ascii_code);
- }
- ++str;
- // interval
- {
- uint8_t ms = interval;
- while (ms--)
- wait_ms(1);
- }
- }
-}
-
-void send_string_with_delay_P(const char *str, uint8_t interval) {
- while (1) {
- char ascii_code = pgm_read_byte(str);
- if (!ascii_code) break;
- if (ascii_code == SS_QMK_PREFIX) {
- ascii_code = pgm_read_byte(++str);
- if (ascii_code == SS_TAP_CODE) {
- // tap
- uint8_t keycode = pgm_read_byte(++str);
- tap_code(keycode);
- } else if (ascii_code == SS_DOWN_CODE) {
- // down
- uint8_t keycode = pgm_read_byte(++str);
- register_code(keycode);
- } else if (ascii_code == SS_UP_CODE) {
- // up
- uint8_t keycode = pgm_read_byte(++str);
- unregister_code(keycode);
- } else if (ascii_code == SS_DELAY_CODE) {
- // delay
- int ms = 0;
- uint8_t keycode = pgm_read_byte(++str);
- while (isdigit(keycode)) {
- ms *= 10;
- ms += keycode - '0';
- keycode = pgm_read_byte(++str);
- }
- while (ms--)
- wait_ms(1);
- }
- } else {
- send_char(ascii_code);
- }
- ++str;
- // interval
- {
- uint8_t ms = interval;
- while (ms--)
- wait_ms(1);
- }
- }
-}
-
-void send_char(char ascii_code) {
-#if defined(AUDIO_ENABLE) && defined(SENDSTRING_BELL)
- if (ascii_code == '\a') { // BEL
- PLAY_SONG(bell_song);
- return;
- }
-#endif
-
- uint8_t keycode = pgm_read_byte(&ascii_to_keycode_lut[(uint8_t)ascii_code]);
- bool is_shifted = PGM_LOADBIT(ascii_to_shift_lut, (uint8_t)ascii_code);
- bool is_altgred = PGM_LOADBIT(ascii_to_altgr_lut, (uint8_t)ascii_code);
- bool is_dead = PGM_LOADBIT(ascii_to_dead_lut, (uint8_t)ascii_code);
-
- if (is_shifted) {
- register_code(KC_LSFT);
- }
- if (is_altgred) {
- register_code(KC_RALT);
- }
- tap_code(keycode);
- if (is_altgred) {
- unregister_code(KC_RALT);
- }
- if (is_shifted) {
- unregister_code(KC_LSFT);
- }
- if (is_dead) {
- tap_code(KC_SPACE);
- }
-}
-
-void send_dword(uint32_t number) {
- send_word(number >> 16);
- send_word(number & 0xFFFFUL);
-}
-
-void send_word(uint16_t number) {
- send_byte(number >> 8);
- send_byte(number & 0xFF);
-}
-
-void send_byte(uint8_t number) {
- send_nibble(number >> 4);
- send_nibble(number & 0xF);
-}
-
-void send_nibble(uint8_t number) {
- switch (number & 0xF) {
- case 0 ... 9:
- send_char(number + '0');
- break;
- case 10 ... 15:
- send_char(number - 10 + 'a');
- break;
- }
-}
-
-void tap_random_base64(void) {
-#if defined(__AVR_ATmega32U4__)
- uint8_t key = (TCNT0 + TCNT1 + TCNT3 + TCNT4) % 64;
-#else
- uint8_t key = rand() % 64;
-#endif
- switch (key) {
- case 0 ... 25:
- send_char(key + 'A');
- break;
- case 26 ... 51:
- send_char(key - 26 + 'a');
- break;
- case 52:
- send_char('0');
- break;
- case 53 ... 61:
- send_char(key - 53 + '1');
- break;
- case 62:
- send_char('+');
- break;
- case 63:
- send_char('/');
- break;
- }
-}
diff --git a/quantum/send_string.h b/quantum/send_string.h
deleted file mode 100644
index b90e6f6890..0000000000
--- a/quantum/send_string.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* 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 <stdint.h>
-
-#include "progmem.h"
-#include "send_string_keycodes.h"
-
-#define SEND_STRING(string) send_string_P(PSTR(string))
-#define SEND_STRING_DELAY(string, interval) send_string_with_delay_P(PSTR(string), interval)
-
-// Look-Up Tables (LUTs) to convert ASCII character to keycode sequence.
-extern const uint8_t ascii_to_shift_lut[16];
-extern const uint8_t ascii_to_altgr_lut[16];
-extern const uint8_t ascii_to_dead_lut[16];
-extern const uint8_t ascii_to_keycode_lut[128];
-
-// clang-format off
-#define KCLUT_ENTRY(a, b, c, d, e, f, g, h) \
- ( ((a) ? 1 : 0) << 0 \
- | ((b) ? 1 : 0) << 1 \
- | ((c) ? 1 : 0) << 2 \
- | ((d) ? 1 : 0) << 3 \
- | ((e) ? 1 : 0) << 4 \
- | ((f) ? 1 : 0) << 5 \
- | ((g) ? 1 : 0) << 6 \
- | ((h) ? 1 : 0) << 7 )
-// clang-format on
-
-void send_string(const char *str);
-void send_string_with_delay(const char *str, uint8_t interval);
-void send_string_P(const char *str);
-void send_string_with_delay_P(const char *str, uint8_t interval);
-void send_char(char ascii_code);
-
-void send_dword(uint32_t number);
-void send_word(uint16_t number);
-void send_byte(uint8_t number);
-void send_nibble(uint8_t number);
-
-void tap_random_base64(void);
diff --git a/quantum/send_string/send_string.c b/quantum/send_string/send_string.c
new file mode 100644
index 0000000000..818a52f6dc
--- /dev/null
+++ b/quantum/send_string/send_string.c
@@ -0,0 +1,324 @@
+/* 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 <ctype.h>
+
+#include "quantum.h"
+
+#include "send_string.h"
+
+#if defined(AUDIO_ENABLE) && defined(SENDSTRING_BELL)
+# include "audio.h"
+# ifndef BELL_SOUND
+# define BELL_SOUND TERMINAL_SOUND
+# endif
+float bell_song[][2] = SONG(BELL_SOUND);
+#endif
+
+// clang-format off
+
+/* Bit-Packed look-up table to convert an ASCII character to whether
+ * [Shift] needs to be sent with the keycode.
+ */
+__attribute__((weak)) const uint8_t ascii_to_shift_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 1, 1, 1, 1, 1, 1, 0),
+ KCLUT_ENTRY(1, 1, 1, 1, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 1, 0, 1, 0, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 1, 1, 1, 1, 1),
+ KCLUT_ENTRY(1, 1, 1, 0, 0, 0, 1, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
+};
+
+/* Bit-Packed look-up table to convert an ASCII character to whether
+ * [AltGr] needs to be sent with the keycode.
+ */
+__attribute__((weak)) const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
+/* Bit-Packed look-up table to convert an ASCII character to whether
+ * [Space] needs to be sent after the keycode
+ */
+__attribute__((weak)) const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
+/* Look-up table to convert an ASCII character to a keycode.
+ */
+__attribute__((weak)) const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // BS TAB LF VT FF CR SO SI
+ KC_BSPC, KC_TAB, KC_ENT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB
+ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ // CAN EM SUB ESC FS GS RS US
+ XXXXXXX, XXXXXXX, XXXXXXX, KC_ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+
+ // ! " # $ % & '
+ KC_SPC, KC_1, KC_QUOT, KC_3, KC_4, KC_5, KC_7, KC_QUOT,
+ // ( ) * + , - . /
+ KC_9, KC_0, KC_8, KC_EQL, KC_COMM, KC_MINS, KC_DOT, KC_SLSH,
+ // 0 1 2 3 4 5 6 7
+ KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7,
+ // 8 9 : ; < = > ?
+ KC_8, KC_9, KC_SCLN, KC_SCLN, KC_COMM, KC_EQL, KC_DOT, KC_SLSH,
+ // @ A B C D E F G
+ KC_2, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
+ // H I J K L M N O
+ KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
+ // P Q R S T U V W
+ KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
+ // X Y Z [ \ ] ^ _
+ KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_6, KC_MINS,
+ // ` a b c d e f g
+ KC_GRV, KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G,
+ // h i j k l m n o
+ KC_H, KC_I, KC_J, KC_K, KC_L, KC_M, KC_N, KC_O,
+ // p q r s t u v w
+ KC_P, KC_Q, KC_R, KC_S, KC_T, KC_U, KC_V, KC_W,
+ // x y z { | } ~ DEL
+ KC_X, KC_Y, KC_Z, KC_LBRC, KC_BSLS, KC_RBRC, KC_GRV, KC_DEL
+};
+
+// clang-format on
+
+// Note: we bit-pack in "reverse" order to optimize loading
+#define PGM_LOADBIT(mem, pos) ((pgm_read_byte(&((mem)[(pos) / 8])) >> ((pos) % 8)) & 0x01)
+
+void send_string(const char *string) {
+ send_string_with_delay(string, 0);
+}
+
+void send_string_with_delay(const char *string, uint8_t interval) {
+ while (1) {
+ char ascii_code = *string;
+ if (!ascii_code) break;
+ if (ascii_code == SS_QMK_PREFIX) {
+ ascii_code = *(++string);
+ if (ascii_code == SS_TAP_CODE) {
+ // tap
+ uint8_t keycode = *(++string);
+ tap_code(keycode);
+ } else if (ascii_code == SS_DOWN_CODE) {
+ // down
+ uint8_t keycode = *(++string);
+ register_code(keycode);
+ } else if (ascii_code == SS_UP_CODE) {
+ // up
+ uint8_t keycode = *(++string);
+ unregister_code(keycode);
+ } else if (ascii_code == SS_DELAY_CODE) {
+ // delay
+ int ms = 0;
+ uint8_t keycode = *(++string);
+ while (isdigit(keycode)) {
+ ms *= 10;
+ ms += keycode - '0';
+ keycode = *(++string);
+ }
+ while (ms--)
+ wait_ms(1);
+ }
+ } else {
+ send_char(ascii_code);
+ }
+ ++string;
+ // interval
+ {
+ uint8_t ms = interval;
+ while (ms--)
+ wait_ms(1);
+ }
+ }
+}
+
+void send_char(char ascii_code) {
+#if defined(AUDIO_ENABLE) && defined(SENDSTRING_BELL)
+ if (ascii_code == '\a') { // BEL
+ PLAY_SONG(bell_song);
+ return;
+ }
+#endif
+
+ uint8_t keycode = pgm_read_byte(&ascii_to_keycode_lut[(uint8_t)ascii_code]);
+ bool is_shifted = PGM_LOADBIT(ascii_to_shift_lut, (uint8_t)ascii_code);
+ bool is_altgred = PGM_LOADBIT(ascii_to_altgr_lut, (uint8_t)ascii_code);
+ bool is_dead = PGM_LOADBIT(ascii_to_dead_lut, (uint8_t)ascii_code);
+
+ if (is_shifted) {
+ register_code(KC_LEFT_SHIFT);
+ }
+ if (is_altgred) {
+ register_code(KC_RIGHT_ALT);
+ }
+ tap_code(keycode);
+ if (is_altgred) {
+ unregister_code(KC_RIGHT_ALT);
+ }
+ if (is_shifted) {
+ unregister_code(KC_LEFT_SHIFT);
+ }
+ if (is_dead) {
+ tap_code(KC_SPACE);
+ }
+}
+
+void send_dword(uint32_t number) {
+ send_word(number >> 16);
+ send_word(number & 0xFFFFUL);
+}
+
+void send_word(uint16_t number) {
+ send_byte(number >> 8);
+ send_byte(number & 0xFF);
+}
+
+void send_byte(uint8_t number) {
+ send_nibble(number >> 4);
+ send_nibble(number & 0xF);
+}
+
+void send_nibble(uint8_t number) {
+ switch (number & 0xF) {
+ case 0 ... 9:
+ send_char(number + '0');
+ break;
+ case 10 ... 15:
+ send_char(number - 10 + 'a');
+ break;
+ }
+}
+
+void tap_random_base64(void) {
+#if defined(__AVR_ATmega32U4__)
+ uint8_t key = (TCNT0 + TCNT1 + TCNT3 + TCNT4) % 64;
+#else
+ uint8_t key = rand() % 64;
+#endif
+ switch (key) {
+ case 0 ... 25:
+ send_char(key + 'A');
+ break;
+ case 26 ... 51:
+ send_char(key - 26 + 'a');
+ break;
+ case 52:
+ send_char('0');
+ break;
+ case 53 ... 61:
+ send_char(key - 53 + '1');
+ break;
+ case 62:
+ send_char('+');
+ break;
+ case 63:
+ send_char('/');
+ break;
+ }
+}
+
+#if defined(__AVR__)
+void send_string_P(const char *string) {
+ send_string_with_delay_P(string, 0);
+}
+
+void send_string_with_delay_P(const char *string, uint8_t interval) {
+ while (1) {
+ char ascii_code = pgm_read_byte(string);
+ if (!ascii_code) break;
+ if (ascii_code == SS_QMK_PREFIX) {
+ ascii_code = pgm_read_byte(++string);
+ if (ascii_code == SS_TAP_CODE) {
+ // tap
+ uint8_t keycode = pgm_read_byte(++string);
+ tap_code(keycode);
+ } else if (ascii_code == SS_DOWN_CODE) {
+ // down
+ uint8_t keycode = pgm_read_byte(++string);
+ register_code(keycode);
+ } else if (ascii_code == SS_UP_CODE) {
+ // up
+ uint8_t keycode = pgm_read_byte(++string);
+ unregister_code(keycode);
+ } else if (ascii_code == SS_DELAY_CODE) {
+ // delay
+ int ms = 0;
+ uint8_t keycode = pgm_read_byte(++string);
+ while (isdigit(keycode)) {
+ ms *= 10;
+ ms += keycode - '0';
+ keycode = pgm_read_byte(++string);
+ }
+ while (ms--)
+ wait_ms(1);
+ }
+ } else {
+ send_char(ascii_code);
+ }
+ ++string;
+ // interval
+ {
+ uint8_t ms = interval;
+ while (ms--)
+ wait_ms(1);
+ }
+ }
+}
+#endif
diff --git a/quantum/send_string/send_string.h b/quantum/send_string/send_string.h
new file mode 100644
index 0000000000..4eb55b88dc
--- /dev/null
+++ b/quantum/send_string/send_string.h
@@ -0,0 +1,152 @@
+/* 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/>.
+ */
+
+/**
+ * \defgroup send_string
+ *
+ * Send String API. These functions allow you to create macros by typing out sequences of keystrokes.
+ * \{
+ */
+
+#include <stdint.h>
+
+#include "progmem.h"
+#include "send_string_keycodes.h"
+
+// Look-Up Tables (LUTs) to convert ASCII character to keycode sequence.
+extern const uint8_t ascii_to_shift_lut[16];
+extern const uint8_t ascii_to_altgr_lut[16];
+extern const uint8_t ascii_to_dead_lut[16];
+extern const uint8_t ascii_to_keycode_lut[128];
+
+// clang-format off
+#define KCLUT_ENTRY(a, b, c, d, e, f, g, h) \
+ ( ((a) ? 1 : 0) << 0 \
+ | ((b) ? 1 : 0) << 1 \
+ | ((c) ? 1 : 0) << 2 \
+ | ((d) ? 1 : 0) << 3 \
+ | ((e) ? 1 : 0) << 4 \
+ | ((f) ? 1 : 0) << 5 \
+ | ((g) ? 1 : 0) << 6 \
+ | ((h) ? 1 : 0) << 7 )
+// clang-format on
+
+/**
+ * \brief Type out a string of ASCII characters.
+ *
+ * This function simply calls `send_string_with_delay(string, 0)`.
+ *
+ * Most keycodes from the basic keycode range are also supported by way of a special sequence - see `send_string_keycodes.h`.
+ *
+ * \param string The string to type out.
+ */
+void send_string(const char *string);
+
+/**
+ * \brief Type out a string of ASCII characters, with a delay between each character.
+ *
+ * \param string The string to type out.
+ * \param interval The amount of time, in milliseconds, to wait before typing the next character.
+ */
+void send_string_with_delay(const char *string, uint8_t interval);
+
+/**
+ * \brief Type out an ASCII character.
+ *
+ * \param ascii_code The character to type.
+ */
+void send_char(char ascii_code);
+
+/**
+ * \brief Type out an eight digit (unsigned 32-bit) hexadecimal value.
+ *
+ * The format is `[0-9a-f]{8}`, eg. `00000000` through `ffffffff`.
+ *
+ * \param number The value to type, from 0 to 4,294,967,295.
+ */
+void send_dword(uint32_t number);
+
+/**
+ * \brief Type out a four digit (unsigned 16-bit) hexadecimal value.
+ *
+ * The format is `[0-9a-f]{4}`, eg. `0000` through `ffff`.
+ *
+ * \param number The value to type, from 0 to 65,535.
+ */
+void send_word(uint16_t number);
+
+/**
+ * \brief Type out a two digit (8-bit) hexadecimal value.
+ *
+ * The format is `[0-9a-f]{2}`, eg. `00` through `ff`.
+ *
+ * \param number The value to type, from 0 to 255.
+ */
+void send_byte(uint8_t number);
+
+/**
+ * \brief Type out a single hexadecimal digit.
+ *
+ * The format is `[0-9a-f]{1}`, eg. `0` through `f`.
+ *
+ * \param number The value to type, from 0 to 15.
+ */
+void send_nibble(uint8_t number);
+
+/**
+ * \brief Type a pseudorandom character from the set `A-Z`, `a-z`, `0-9`, `+` and `/`.
+ */
+void tap_random_base64(void);
+
+#if defined(__AVR__) || defined(__DOXYGEN__)
+/**
+ * \brief Type out a PROGMEM string of ASCII characters.
+ *
+ * On ARM devices, this function is simply an alias for send_string_with_delay(string, 0).
+ *
+ * \param string The string to type out.
+ */
+void send_string_P(const char *string);
+
+/**
+ * \brief Type out a PROGMEM string of ASCII characters, with a delay between each character.
+ *
+ * On ARM devices, this function is simply an alias for send_string_with_delay(string, interval).
+ *
+ * \param string The string to type out.
+ * \param interval The amount of time, in milliseconds, to wait before typing the next character.
+ */
+void send_string_with_delay_P(const char *string, uint8_t interval);
+#else
+# define send_string_P(string) send_string_with_delay(string, 0)
+# define send_string_with_delay_P(string, interval) send_string_with_delay(string, interval)
+#endif
+
+/**
+ * \brief Shortcut macro for send_string_with_delay_P(PSTR(string), 0).
+ *
+ * On ARM devices, this define evaluates to send_string_with_delay(string, 0).
+ */
+#define SEND_STRING(string) send_string_with_delay_P(PSTR(string), 0)
+
+/**
+ * \brief Shortcut macro for send_string_with_delay_P(PSTR(string), interval).
+ *
+ * On ARM devices, this define evaluates to send_string_with_delay(string, interval).
+ */
+#define SEND_STRING_DELAY(string, interval) send_string_with_delay_P(PSTR(string), interval)
+
+/** \} */
diff --git a/quantum/send_string/send_string_keycodes.h b/quantum/send_string/send_string_keycodes.h
new file mode 100644
index 0000000000..802d9a8240
--- /dev/null
+++ b/quantum/send_string/send_string_keycodes.h
@@ -0,0 +1,436 @@
+/* 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
+
+// clang-format off
+
+/* Punctuation */
+#define X_ENT X_ENTER
+#define X_ESC X_ESCAPE
+#define X_BSPC X_BSPACE
+#define X_SPC X_SPACE
+#define X_MINS X_MINUS
+#define X_EQL X_EQUAL
+#define X_LBRC X_LBRACKET
+#define X_RBRC X_RBRACKET
+#define X_BSLS X_BSLASH
+#define X_NUHS X_NONUS_HASH
+#define X_SCLN X_SCOLON
+#define X_QUOT X_QUOTE
+#define X_GRV X_GRAVE
+#define X_COMM X_COMMA
+#define X_SLSH X_SLASH
+#define X_NUBS X_NONUS_BSLASH
+
+/* Lock Keys */
+#define X_CLCK X_CAPSLOCK
+#define X_CAPS X_CAPSLOCK
+#define X_SLCK X_SCROLLLOCK
+#define X_NLCK X_NUMLOCK
+#define X_LCAP X_LOCKING_CAPS
+#define X_LNUM X_LOCKING_NUM
+#define X_LSCR X_LOCKING_SCROLL
+
+/* Commands */
+#define X_PSCR X_PSCREEN
+#define X_PAUS X_PAUSE
+#define X_BRK X_PAUSE
+#define X_INS X_INSERT
+#define X_DEL X_DELETE
+#define X_PGDN X_PGDOWN
+#define X_RGHT X_RIGHT
+#define X_APP X_APPLICATION
+#define X_EXEC X_EXECUTE
+#define X_SLCT X_SELECT
+#define X_AGIN X_AGAIN
+#define X_PSTE X_PASTE
+#define X_ERAS X_ALT_ERASE
+#define X_CLR X_CLEAR
+
+/* Keypad */
+#define X_PSLS X_KP_SLASH
+#define X_PAST X_KP_ASTERISK
+#define X_PMNS X_KP_MINUS
+#define X_PPLS X_KP_PLUS
+#define X_PENT X_KP_ENTER
+#define X_P1 X_KP_1
+#define X_P2 X_KP_2
+#define X_P3 X_KP_3
+#define X_P4 X_KP_4
+#define X_P5 X_KP_5
+#define X_P6 X_KP_6
+#define X_P7 X_KP_7
+#define X_P8 X_KP_8
+#define X_P9 X_KP_9
+#define X_P0 X_KP_0
+#define X_PDOT X_KP_DOT
+#define X_PEQL X_KP_EQUAL
+#define X_PCMM X_KP_COMMA
+
+/* Japanese specific */
+#define X_ZKHK X_GRAVE
+#define X_RO X_INT1
+#define X_KANA X_INT2
+#define X_JYEN X_INT3
+#define X_HENK X_INT4
+#define X_MHEN X_INT5
+
+/* Korean specific */
+#define X_HAEN X_LANG1
+#define X_HANJ X_LANG2
+
+/* Modifiers */
+#define X_LCTL X_LCTRL
+#define X_LSFT X_LSHIFT
+#define X_LOPT X_LALT
+#define X_LCMD X_LGUI
+#define X_LWIN X_LGUI
+#define X_RCTL X_RCTRL
+#define X_RSFT X_RSHIFT
+#define X_ALGR X_RALT
+#define X_ROPT X_RALT
+#define X_RCMD X_RGUI
+#define X_RWIN X_RGUI
+
+/* Generic Desktop Page (0x01) */
+#define X_PWR X_SYSTEM_POWER
+#define X_SLEP X_SYSTEM_SLEEP
+#define X_WAKE X_SYSTEM_WAKE
+
+/* Consumer Page (0x0C) */
+#define X_MUTE X_AUDIO_MUTE
+#define X_VOLU X_AUDIO_VOL_UP
+#define X_VOLD X_AUDIO_VOL_DOWN
+#define X_MNXT X_MEDIA_NEXT_TRACK
+#define X_MPRV X_MEDIA_PREV_TRACK
+#define X_MSTP X_MEDIA_STOP
+#define X_MPLY X_MEDIA_PLAY_PAUSE
+#define X_MSEL X_MEDIA_SELECT
+#define X_EJCT X_MEDIA_EJECT
+#define X_CALC X_CALCULATOR
+#define X_MYCM X_MY_COMPUTER
+#define X_WSCH X_WWW_SEARCH
+#define X_WHOM X_WWW_HOME
+#define X_WBAK X_WWW_BACK
+#define X_WFWD X_WWW_FORWARD
+#define X_WSTP X_WWW_STOP
+#define X_WREF X_WWW_REFRESH
+#define X_WFAV X_WWW_FAVORITES
+#define X_MFFD X_MEDIA_FAST_FORWARD
+#define X_MRWD X_MEDIA_REWIND
+#define X_BRIU X_BRIGHTNESS_UP
+#define X_BRID X_BRIGHTNESS_DOWN
+
+/* System Specific */
+#define X_BRMU X_PAUSE
+#define X_BRMD X_SCROLLLOCK
+
+/* Mouse Keys */
+#define X_MS_U X_MS_UP
+#define X_MS_D X_MS_DOWN
+#define X_MS_L X_MS_LEFT
+#define X_MS_R X_MS_RIGHT
+#define X_BTN1 X_MS_BTN1
+#define X_BTN2 X_MS_BTN2
+#define X_BTN3 X_MS_BTN3
+#define X_BTN4 X_MS_BTN4
+#define X_BTN5 X_MS_BTN5
+#define X_WH_U X_MS_WH_UP
+#define X_WH_D X_MS_WH_DOWN
+#define X_WH_L X_MS_WH_LEFT
+#define X_WH_R X_MS_WH_RIGHT
+#define X_ACL0 X_MS_ACCEL0
+#define X_ACL1 X_MS_ACCEL1
+#define X_ACL2 X_MS_ACCEL2
+
+/* Keyboard/Keypad Page (0x07) */
+#define X_A 04
+#define X_B 05
+#define X_C 06
+#define X_D 07
+#define X_E 08
+#define X_F 09
+#define X_G 0a
+#define X_H 0b
+#define X_I 0c
+#define X_J 0d
+#define X_K 0e
+#define X_L 0f
+#define X_M 10
+#define X_N 11
+#define X_O 12
+#define X_P 13
+#define X_Q 14
+#define X_R 15
+#define X_S 16
+#define X_T 17
+#define X_U 18
+#define X_V 19
+#define X_W 1a
+#define X_X 1b
+#define X_Y 1c
+#define X_Z 1d
+#define X_1 1e
+#define X_2 1f
+#define X_3 20
+#define X_4 21
+#define X_5 22
+#define X_6 23
+#define X_7 24
+#define X_8 25
+#define X_9 26
+#define X_0 27
+#define X_ENTER 28
+#define X_ESCAPE 29
+#define X_BSPACE 2a
+#define X_TAB 2b
+#define X_SPACE 2c
+#define X_MINUS 2d
+#define X_EQUAL 2e
+#define X_LBRACKET 2f
+#define X_RBRACKET 30
+#define X_BSLASH 31
+#define X_NONUS_HASH 32
+#define X_SCOLON 33
+#define X_QUOTE 34
+#define X_GRAVE 35
+#define X_COMMA 36
+#define X_DOT 37
+#define X_SLASH 38
+#define X_CAPSLOCK 39
+#define X_F1 3a
+#define X_F2 3b
+#define X_F3 3c
+#define X_F4 3d
+#define X_F5 3e
+#define X_F6 3f
+#define X_F7 40
+#define X_F8 41
+#define X_F9 42
+#define X_F10 43
+#define X_F11 44
+#define X_F12 45
+#define X_PSCREEN 46
+#define X_SCROLLLOCK 47
+#define X_PAUSE 48
+#define X_INSERT 49
+#define X_HOME 4a
+#define X_PGUP 4b
+#define X_DELETE 4c
+#define X_END 4d
+#define X_PGDOWN 4e
+#define X_RIGHT 4f
+#define X_LEFT 50
+#define X_DOWN 51
+#define X_UP 52
+#define X_NUMLOCK 53
+#define X_KP_SLASH 54
+#define X_KP_ASTERISK 55
+#define X_KP_MINUS 56
+#define X_KP_PLUS 57
+#define X_KP_ENTER 58
+#define X_KP_1 59
+#define X_KP_2 5a
+#define X_KP_3 5b
+#define X_KP_4 5c
+#define X_KP_5 5d
+#define X_KP_6 5e
+#define X_KP_7 5f
+#define X_KP_8 60
+#define X_KP_9 61
+#define X_KP_0 62
+#define X_KP_DOT 63
+#define X_NONUS_BSLASH 64
+#define X_APPLICATION 65
+#define X_POWER 66
+#define X_KP_EQUAL 67
+#define X_F13 68
+#define X_F14 69
+#define X_F15 6a
+#define X_F16 6b
+#define X_F17 6c
+#define X_F18 6d
+#define X_F19 6e
+#define X_F20 6f
+#define X_F21 70
+#define X_F22 71
+#define X_F23 72
+#define X_F24 73
+#define X_EXECUTE 74
+#define X_HELP 75
+#define X_MENU 76
+#define X_SELECT 77
+#define X_STOP 78
+#define X_AGAIN 79
+#define X_UNDO 7a
+#define X_CUT 7b
+#define X_COPY 7c
+#define X_PASTE 7d
+#define X_FIND 7e
+#define X__MUTE 7f
+#define X__VOLUP 80
+#define X__VOLDOWN 81
+#define X_LOCKING_CAPS 82
+#define X_LOCKING_NUM 83
+#define X_LOCKING_SCROLL 84
+#define X_KP_COMMA 85
+#define X_KP_EQUAL_AS400 86
+#define X_INT1 87
+#define X_INT2 88
+#define X_INT3 89
+#define X_INT4 8a
+#define X_INT5 8b
+#define X_INT6 8c
+#define X_INT7 8d
+#define X_INT8 8e
+#define X_INT9 8f
+#define X_LANG1 90
+#define X_LANG2 91
+#define X_LANG3 92
+#define X_LANG4 93
+#define X_LANG5 94
+#define X_LANG6 95
+#define X_LANG7 96
+#define X_LANG8 97
+#define X_LANG9 98
+#define X_ALT_ERASE 99
+#define X_SYSREQ 9a
+#define X_CANCEL 9b
+#define X_CLEAR 9c
+#define X_PRIOR 9d
+#define X_RETURN 9e
+#define X_SEPARATOR 9f
+#define X_OUT a0
+#define X_OPER a1
+#define X_CLEAR_AGAIN a2
+#define X_CRSEL a3
+#define X_EXSEL a4
+
+/* Modifiers */
+#define X_LCTRL e0
+#define X_LSHIFT e1
+#define X_LALT e2
+#define X_LGUI e3
+#define X_RCTRL e4
+#define X_RSHIFT e5
+#define X_RALT e6
+#define X_RGUI e7
+
+/* Media and Function keys */
+/* Generic Desktop Page (0x01) */
+#define X_SYSTEM_POWER a5
+#define X_SYSTEM_SLEEP a6
+#define X_SYSTEM_WAKE a7
+
+/* Consumer Page (0x0C) */
+#define X_AUDIO_MUTE a8
+#define X_AUDIO_VOL_UP a9
+#define X_AUDIO_VOL_DOWN aa
+#define X_MEDIA_NEXT_TRACK ab
+#define X_MEDIA_PREV_TRACK ac
+#define X_MEDIA_STOP ad
+#define X_MEDIA_PLAY_PAUSE ae
+#define X_MEDIA_SELECT af
+#define X_MEDIA_EJECT b0
+#define X_MAIL b1
+#define X_CALCULATOR b2
+#define X_MY_COMPUTER b3
+#define X_WWW_SEARCH b4
+#define X_WWW_HOME b5
+#define X_WWW_BACK b6
+#define X_WWW_FORWARD b7
+#define X_WWW_STOP b8
+#define X_WWW_REFRESH b9
+#define X_WWW_FAVORITES ba
+#define X_MEDIA_FAST_FORWARD bb
+#define X_MEDIA_REWIND bc
+#define X_BRIGHTNESS_UP bd
+#define X_BRIGHTNESS_DOWN be
+
+/* Mouse Buttons (unallocated range in HID spec) */
+#ifdef VIA_ENABLE
+#define X_MS_UP f0
+#define X_MS_DOWN f1
+#define X_MS_LEFT f2
+#define X_MS_RIGHT f3
+#define X_MS_BTN1 f4
+#define X_MS_BTN2 f5
+#define X_MS_BTN3 f6
+#define X_MS_BTN4 f7
+#define X_MS_BTN5 f8
+#define X_MS_BTN6 f8
+#define X_MS_BTN7 f8
+#define X_MS_BTN8 f8
+#else
+#define X_MS_UP ed
+#define X_MS_DOWN ee
+#define X_MS_LEFT ef
+#define X_MS_RIGHT f0
+#define X_MS_BTN1 f1
+#define X_MS_BTN2 f2
+#define X_MS_BTN3 f3
+#define X_MS_BTN4 f4
+#define X_MS_BTN5 f5
+#define X_MS_BTN6 f6
+#define X_MS_BTN7 f7
+#define X_MS_BTN8 f8
+#endif
+#define X_MS_WH_UP f9
+#define X_MS_WH_DOWN fa
+#define X_MS_WH_LEFT fb
+#define X_MS_WH_RIGHT fc
+#define X_MS_ACCEL0 fd
+#define X_MS_ACCEL1 fe
+#define X_MS_ACCEL2 ff
+
+// Send string macros
+#define STRINGIZE(z) #z
+#define ADD_SLASH_X(y) STRINGIZE(\x##y)
+#define SYMBOL_STR(x) ADD_SLASH_X(x)
+
+#define SS_QMK_PREFIX 1
+
+#define SS_TAP_CODE 1
+#define SS_DOWN_CODE 2
+#define SS_UP_CODE 3
+#define SS_DELAY_CODE 4
+
+#define SS_TAP(keycode) "\1\1" SYMBOL_STR(keycode)
+#define SS_DOWN(keycode) "\1\2" SYMBOL_STR(keycode)
+#define SS_UP(keycode) "\1\3" SYMBOL_STR(keycode)
+#define SS_DELAY(msecs) "\1\4" STRINGIZE(msecs) "|"
+
+// `string` arguments must not be parenthesized
+#define SS_LCTL(string) SS_DOWN(X_LCTL) string SS_UP(X_LCTL)
+#define SS_LSFT(string) SS_DOWN(X_LSFT) string SS_UP(X_LSFT)
+#define SS_LALT(string) SS_DOWN(X_LALT) string SS_UP(X_LALT)
+#define SS_LGUI(string) SS_DOWN(X_LGUI) string SS_UP(X_LGUI)
+#define SS_LOPT(string) SS_LALT(string)
+#define SS_LCMD(string) SS_LGUI(string)
+#define SS_LWIN(string) SS_LGUI(string)
+
+#define SS_RCTL(string) SS_DOWN(X_RCTL) string SS_UP(X_RCTL)
+#define SS_RSFT(string) SS_DOWN(X_RSFT) string SS_UP(X_RSFT)
+#define SS_RALT(string) SS_DOWN(X_RALT) string SS_UP(X_RALT)
+#define SS_RGUI(string) SS_DOWN(X_RGUI) string SS_UP(X_RGUI)
+#define SS_ALGR(string) SS_RALT(string)
+#define SS_ROPT(string) SS_RALT(string)
+#define SS_RCMD(string) SS_RGUI(string)
+#define SS_RWIN(string) SS_RGUI(string)
+
+// DEPRECATED
+#define SS_LCTRL(string) SS_LCTL(string)
diff --git a/quantum/send_string_keycodes.h b/quantum/send_string_keycodes.h
deleted file mode 100644
index b35bf66b7b..0000000000
--- a/quantum/send_string_keycodes.h
+++ /dev/null
@@ -1,505 +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
-
-// clang-format off
-
-/* Punctuation */
-#define X_ENT X_ENTER
-#define X_ESC X_ESCAPE
-#define X_BSPC X_BACKSPACE
-#define X_SPC X_SPACE
-#define X_MINS X_MINUS
-#define X_EQL X_EQUAL
-#define X_LBRC X_LEFT_BRACKET
-#define X_RBRC X_RIGHT_BRACKET
-#define X_BSLS X_BACKSLASH
-#define X_NUHS X_NONUS_HASH
-#define X_SCLN X_SEMICOLON
-#define X_QUOT X_QUOTE
-#define X_GRV X_GRAVE
-#define X_COMM X_COMMA
-#define X_SLSH X_SLASH
-#define X_NUBS X_NONUS_BACKSLASH
-
-/* Lock Keys */
-#define X_CAPS X_CAPS_LOCK
-#define X_SCRL X_SCROLL_LOCK
-#define X_NUM X_NUM_LOCK
-#define X_LCAP X_LOCKING_CAPS_LOCK
-#define X_LNUM X_LOCKING_NUM_LOCK
-#define X_LSCR X_LOCKING_SCROLL_LOCK
-
-/* Commands */
-#define X_PSCR X_PRINT_SCREEN
-#define X_PAUS X_PAUSE
-#define X_BRK X_PAUSE
-#define X_INS X_INSERT
-#define X_PGUP X_PAGE_UP
-#define X_DEL X_DELETE
-#define X_PGDN X_PAGE_DOWN
-#define X_RGHT X_RIGHT
-#define X_APP X_APPLICATION
-#define X_EXEC X_EXECUTE
-#define X_SLCT X_SELECT
-#define X_AGIN X_AGAIN
-#define X_PSTE X_PASTE
-#define X_ERAS X_ALTERNATE_ERASE
-#define X_SYRQ X_SYSTEM_REQUEST
-#define X_CNCL X_CANCEL
-#define X_CLR X_CLEAR
-#define X_PRIR X_PRIOR
-#define X_RETN X_RETURN
-#define X_SEPR X_SEPARATOR
-#define X_CLAG X_CLEAR_AGAIN
-#define X_CRSL X_CRSEL
-#define X_EXSL X_EXSEL
-
-/* Keypad */
-#define X_PSLS X_KP_SLASH
-#define X_PAST X_KP_ASTERISK
-#define X_PMNS X_KP_MINUS
-#define X_PPLS X_KP_PLUS
-#define X_PENT X_KP_ENTER
-#define X_P1 X_KP_1
-#define X_P2 X_KP_2
-#define X_P3 X_KP_3
-#define X_P4 X_KP_4
-#define X_P5 X_KP_5
-#define X_P6 X_KP_6
-#define X_P7 X_KP_7
-#define X_P8 X_KP_8
-#define X_P9 X_KP_9
-#define X_P0 X_KP_0
-#define X_PDOT X_KP_DOT
-#define X_PEQL X_KP_EQUAL
-#define X_PCMM X_KP_COMMA
-
-/* Language Specific */
-#define X_INT1 X_INTERNATIONAL_1
-#define X_INT2 X_INTERNATIONAL_2
-#define X_INT3 X_INTERNATIONAL_3
-#define X_INT4 X_INTERNATIONAL_4
-#define X_INT5 X_INTERNATIONAL_5
-#define X_INT6 X_INTERNATIONAL_6
-#define X_INT7 X_INTERNATIONAL_7
-#define X_INT8 X_INTERNATIONAL_8
-#define X_INT9 X_INTERNATIONAL_9
-#define X_LNG1 X_LANGUAGE_1
-#define X_LNG2 X_LANGUAGE_2
-#define X_LNG3 X_LANGUAGE_3
-#define X_LNG4 X_LANGUAGE_4
-#define X_LNG5 X_LANGUAGE_5
-#define X_LNG6 X_LANGUAGE_6
-#define X_LNG7 X_LANGUAGE_7
-#define X_LNG8 X_LANGUAGE_8
-#define X_LNG9 X_LANGUAGE_9
-
-/* Modifiers */
-#define X_LCTL X_LEFT_CTRL
-#define X_LSFT X_LEFT_SHIFT
-#define X_LALT X_LEFT_ALT
-#define X_LOPT X_LEFT_ALT
-#define X_LGUI X_LEFT_GUI
-#define X_LCMD X_LEFT_GUI
-#define X_LWIN X_LEFT_GUI
-#define X_RCTL X_RIGHT_CTRL
-#define X_RSFT X_RIGHT_SHIFT
-#define X_RALT X_RIGHT_ALT
-#define X_ALGR X_RIGHT_ALT
-#define X_ROPT X_RIGHT_ALT
-#define X_RGUI X_RIGHT_GUI
-#define X_RCMD X_RIGHT_GUI
-#define X_RWIN X_RIGHT_GUI
-
-/* Generic Desktop Page (0x01) */
-#define X_PWR X_SYSTEM_POWER
-#define X_SLEP X_SYSTEM_SLEEP
-#define X_WAKE X_SYSTEM_WAKE
-
-/* Consumer Page (0x0C) */
-#define X_MUTE X_AUDIO_MUTE
-#define X_VOLU X_AUDIO_VOL_UP
-#define X_VOLD X_AUDIO_VOL_DOWN
-#define X_MNXT X_MEDIA_NEXT_TRACK
-#define X_MPRV X_MEDIA_PREV_TRACK
-#define X_MSTP X_MEDIA_STOP
-#define X_MPLY X_MEDIA_PLAY_PAUSE
-#define X_MSEL X_MEDIA_SELECT
-#define X_EJCT X_MEDIA_EJECT
-#define X_CALC X_CALCULATOR
-#define X_MYCM X_MY_COMPUTER
-#define X_WSCH X_WWW_SEARCH
-#define X_WHOM X_WWW_HOME
-#define X_WBAK X_WWW_BACK
-#define X_WFWD X_WWW_FORWARD
-#define X_WSTP X_WWW_STOP
-#define X_WREF X_WWW_REFRESH
-#define X_WFAV X_WWW_FAVORITES
-#define X_MFFD X_MEDIA_FAST_FORWARD
-#define X_MRWD X_MEDIA_REWIND
-#define X_BRIU X_BRIGHTNESS_UP
-#define X_BRID X_BRIGHTNESS_DOWN
-
-/* System Specific */
-#define X_BRMU X_PAUSE
-#define X_BRMD X_SCROLL_LOCK
-
-/* Mouse Keys */
-#define X_MS_U X_MS_UP
-#define X_MS_D X_MS_DOWN
-#define X_MS_L X_MS_LEFT
-#define X_MS_R X_MS_RIGHT
-#define X_BTN1 X_MS_BTN1
-#define X_BTN2 X_MS_BTN2
-#define X_BTN3 X_MS_BTN3
-#define X_BTN4 X_MS_BTN4
-#define X_BTN5 X_MS_BTN5
-#define X_BTN6 X_MS_BTN6
-#define X_BTN7 X_MS_BTN7
-#define X_BTN8 X_MS_BTN8
-#define X_WH_U X_MS_WH_UP
-#define X_WH_D X_MS_WH_DOWN
-#define X_WH_L X_MS_WH_LEFT
-#define X_WH_R X_MS_WH_RIGHT
-#define X_ACL0 X_MS_ACCEL0
-#define X_ACL1 X_MS_ACCEL1
-#define X_ACL2 X_MS_ACCEL2
-
-/* Keyboard/Keypad Page (0x07) */
-#define X_A 04
-#define X_B 05
-#define X_C 06
-#define X_D 07
-#define X_E 08
-#define X_F 09
-#define X_G 0a
-#define X_H 0b
-#define X_I 0c
-#define X_J 0d
-#define X_K 0e
-#define X_L 0f
-#define X_M 10
-#define X_N 11
-#define X_O 12
-#define X_P 13
-#define X_Q 14
-#define X_R 15
-#define X_S 16
-#define X_T 17
-#define X_U 18
-#define X_V 19
-#define X_W 1a
-#define X_X 1b
-#define X_Y 1c
-#define X_Z 1d
-#define X_1 1e
-#define X_2 1f
-#define X_3 20
-#define X_4 21
-#define X_5 22
-#define X_6 23
-#define X_7 24
-#define X_8 25
-#define X_9 26
-#define X_0 27
-#define X_ENTER 28
-#define X_ESCAPE 29
-#define X_BACKSPACE 2a
-#define X_TAB 2b
-#define X_SPACE 2c
-#define X_MINUS 2d
-#define X_EQUAL 2e
-#define X_LEFT_BRACKET 2f
-#define X_RIGHT_BRACKET 30
-#define X_BACKSLASH 31
-#define X_NONUS_HASH 32
-#define X_SEMICOLON 33
-#define X_QUOTE 34
-#define X_GRAVE 35
-#define X_COMMA 36
-#define X_DOT 37
-#define X_SLASH 38
-#define X_CAPS_LOCK 39
-#define X_F1 3a
-#define X_F2 3b
-#define X_F3 3c
-#define X_F4 3d
-#define X_F5 3e
-#define X_F6 3f
-#define X_F7 40
-#define X_F8 41
-#define X_F9 42
-#define X_F10 43
-#define X_F11 44
-#define X_F12 45
-#define X_PRINT_SCREEN 46
-#define X_SCROLL_LOCK 47
-#define X_PAUSE 48
-#define X_INSERT 49
-#define X_HOME 4a
-#define X_PAGE_UP 4b
-#define X_DELETE 4c
-#define X_END 4d
-#define X_PAGE_DOWN 4e
-#define X_RIGHT 4f
-#define X_LEFT 50
-#define X_DOWN 51
-#define X_UP 52
-#define X_NUM_LOCK 53
-#define X_KP_SLASH 54
-#define X_KP_ASTERISK 55
-#define X_KP_MINUS 56
-#define X_KP_PLUS 57
-#define X_KP_ENTER 58
-#define X_KP_1 59
-#define X_KP_2 5a
-#define X_KP_3 5b
-#define X_KP_4 5c
-#define X_KP_5 5d
-#define X_KP_6 5e
-#define X_KP_7 5f
-#define X_KP_8 60
-#define X_KP_9 61
-#define X_KP_0 62
-#define X_KP_DOT 63
-#define X_NONUS_BACKSLASH 64
-#define X_APPLICATION 65
-#define X_KB_POWER 66
-#define X_KP_EQUAL 67
-#define X_F13 68
-#define X_F14 69
-#define X_F15 6a
-#define X_F16 6b
-#define X_F17 6c
-#define X_F18 6d
-#define X_F19 6e
-#define X_F20 6f
-#define X_F21 70
-#define X_F22 71
-#define X_F23 72
-#define X_F24 73
-#define X_EXECUTE 74
-#define X_HELP 75
-#define X_MENU 76
-#define X_SELECT 77
-#define X_STOP 78
-#define X_AGAIN 79
-#define X_UNDO 7a
-#define X_CUT 7b
-#define X_COPY 7c
-#define X_PASTE 7d
-#define X_FIND 7e
-#define X_KB_MUTE 7f
-#define X_KB_VOLUME_UP 80
-#define X_KB_VOLUME_DOWN 81
-#define X_LOCKING_CAPS_LOCK 82
-#define X_LOCKING_NUM_LOCK 83
-#define X_LOCKING_SCROLL_LOCK 84
-#define X_KP_COMMA 85
-#define X_KP_EQUAL_AS400 86
-#define X_INTERNATIONAL_1 87
-#define X_INTERNATIONAL_2 88
-#define X_INTERNATIONAL_3 89
-#define X_INTERNATIONAL_4 8a
-#define X_INTERNATIONAL_5 8b
-#define X_INTERNATIONAL_6 8c
-#define X_INTERNATIONAL_7 8d
-#define X_INTERNATIONAL_8 8e
-#define X_INTERNATIONAL_9 8f
-#define X_LANGUAGE_1 90
-#define X_LANGUAGE_2 91
-#define X_LANGUAGE_3 92
-#define X_LANGUAGE_4 93
-#define X_LANGUAGE_5 94
-#define X_LANGUAGE_6 95
-#define X_LANGUAGE_7 96
-#define X_LANGUAGE_8 97
-#define X_LANGUAGE_9 98
-#define X_ALTERNATE_ERASE 99
-#define X_SYSTEM_REQUEST 9a
-#define X_CANCEL 9b
-#define X_CLEAR 9c
-#define X_PRIOR 9d
-#define X_RETURN 9e
-#define X_SEPARATOR 9f
-#define X_OUT a0
-#define X_OPER a1
-#define X_CLEAR_AGAIN a2
-#define X_CRSEL a3
-#define X_EXSEL a4
-
-/* Modifiers */
-#define X_LEFT_CTRL e0
-#define X_LEFT_SHIFT e1
-#define X_LEFT_ALT e2
-#define X_LEFT_GUI e3
-#define X_RIGHT_CTRL e4
-#define X_RIGHT_SHIFT e5
-#define X_RIGHT_ALT e6
-#define X_RIGHT_GUI e7
-
-/* Media and Function keys */
-/* Generic Desktop Page (0x01) */
-#define X_SYSTEM_POWER a5
-#define X_SYSTEM_SLEEP a6
-#define X_SYSTEM_WAKE a7
-
-/* Consumer Page (0x0C) */
-#define X_AUDIO_MUTE a8
-#define X_AUDIO_VOL_UP a9
-#define X_AUDIO_VOL_DOWN aa
-#define X_MEDIA_NEXT_TRACK ab
-#define X_MEDIA_PREV_TRACK ac
-#define X_MEDIA_STOP ad
-#define X_MEDIA_PLAY_PAUSE ae
-#define X_MEDIA_SELECT af
-#define X_MEDIA_EJECT b0
-#define X_MAIL b1
-#define X_CALCULATOR b2
-#define X_MY_COMPUTER b3
-#define X_WWW_SEARCH b4
-#define X_WWW_HOME b5
-#define X_WWW_BACK b6
-#define X_WWW_FORWARD b7
-#define X_WWW_STOP b8
-#define X_WWW_REFRESH b9
-#define X_WWW_FAVORITES ba
-#define X_MEDIA_FAST_FORWARD bb
-#define X_MEDIA_REWIND bc
-#define X_BRIGHTNESS_UP bd
-#define X_BRIGHTNESS_DOWN be
-
-/* Mouse Buttons (unallocated range in HID spec) */
-#ifdef VIA_ENABLE
-#define X_MS_UP f0
-#define X_MS_DOWN f1
-#define X_MS_LEFT f2
-#define X_MS_RIGHT f3
-#define X_MS_BTN1 f4
-#define X_MS_BTN2 f5
-#define X_MS_BTN3 f6
-#define X_MS_BTN4 f7
-#define X_MS_BTN5 f8
-#define X_MS_BTN6 f8
-#define X_MS_BTN7 f8
-#define X_MS_BTN8 f8
-#else
-#define X_MS_UP ed
-#define X_MS_DOWN ee
-#define X_MS_LEFT ef
-#define X_MS_RIGHT f0
-#define X_MS_BTN1 f1
-#define X_MS_BTN2 f2
-#define X_MS_BTN3 f3
-#define X_MS_BTN4 f4
-#define X_MS_BTN5 f5
-#define X_MS_BTN6 f6
-#define X_MS_BTN7 f7
-#define X_MS_BTN8 f8
-#endif
-#define X_MS_WH_UP f9
-#define X_MS_WH_DOWN fa
-#define X_MS_WH_LEFT fb
-#define X_MS_WH_RIGHT fc
-#define X_MS_ACCEL0 fd
-#define X_MS_ACCEL1 fe
-#define X_MS_ACCEL2 ff
-
-// Send string macros
-#define STRINGIZE(z) #z
-#define ADD_SLASH_X(y) STRINGIZE(\x##y)
-#define SYMBOL_STR(x) ADD_SLASH_X(x)
-
-#define SS_QMK_PREFIX 1
-
-#define SS_TAP_CODE 1
-#define SS_DOWN_CODE 2
-#define SS_UP_CODE 3
-#define SS_DELAY_CODE 4
-
-#define SS_TAP(keycode) "\1\1" SYMBOL_STR(keycode)
-#define SS_DOWN(keycode) "\1\2" SYMBOL_STR(keycode)
-#define SS_UP(keycode) "\1\3" SYMBOL_STR(keycode)
-#define SS_DELAY(msecs) "\1\4" STRINGIZE(msecs) "|"
-
-// `string` arguments must not be parenthesized
-#define SS_LCTL(string) SS_DOWN(X_LCTL) string SS_UP(X_LCTL)
-#define SS_LSFT(string) SS_DOWN(X_LSFT) string SS_UP(X_LSFT)
-#define SS_LALT(string) SS_DOWN(X_LALT) string SS_UP(X_LALT)
-#define SS_LGUI(string) SS_DOWN(X_LGUI) string SS_UP(X_LGUI)
-#define SS_LCMD(string) SS_LGUI(string)
-#define SS_LWIN(string) SS_LGUI(string)
-
-#define SS_RCTL(string) SS_DOWN(X_RCTL) string SS_UP(X_RCTL)
-#define SS_RSFT(string) SS_DOWN(X_RSFT) string SS_UP(X_RSFT)
-#define SS_RALT(string) SS_DOWN(X_RALT) string SS_UP(X_RALT)
-#define SS_RGUI(string) SS_DOWN(X_RGUI) string SS_UP(X_RGUI)
-#define SS_ALGR(string) SS_RALT(string)
-#define SS_RCMD(string) SS_RGUI(string)
-#define SS_RWIN(string) SS_RGUI(string)
-
-// DEPRECATED
-#define X_BSPACE X_BACKSPACE
-#define X_LBRACKET X_LEFT_BRACKET
-#define X_RBRACKET X_RIGHT_BRACKET
-#define X_BSLASH X_BACKSLASH
-#define X_SCOLON X_SEMICOLON
-#define X_CAPSLOCK X_CAPS_LOCK
-#define X_PSCREEN X_PRINT_SCREEN
-#define X_SCROLLLOCK X_SCROLL_LOCK
-#define X_PGDOWN X_PAGE_DOWN
-#define X_NUMLOCK X_NUM_LOCK
-#define X_NONUS_BSLASH X_NONUS_BACKSLASH
-#define X_POWER X_KB_POWER
-#define X__MUTE X_KB_MUTE
-#define X__VOLUP X_KB_VOLUME_UP
-#define X__VOLDOWN X_KB_VOLUME_DOWN
-#define X_LOCKING_CAPS X_LOCKING_CAPS_LOCK
-#define X_LOCKING_NUM X_LOCKING_NUM_LOCK
-#define X_LOCKING_SCROLL X_LOCKING_SCROLL_LOCK
-#define X_LANG1 X_LANGUAGE_1
-#define X_LANG2 X_LANGUAGE_2
-#define X_LANG3 X_LANGUAGE_3
-#define X_LANG4 X_LANGUAGE_4
-#define X_LANG5 X_LANGUAGE_5
-#define X_LANG6 X_LANGUAGE_6
-#define X_LANG7 X_LANGUAGE_7
-#define X_LANG8 X_LANGUAGE_8
-#define X_LANG9 X_LANGUAGE_9
-#define X_ALT_ERASE X_ALTERNATE_ERASE
-#define X_SYSREQ X_SYSTEM_REQUEST
-
-#define X_LCTRL X_LEFT_CTRL
-#define X_LSHIFT X_LEFT_SHIFT
-#define X_RCTRL X_RIGHT_CTRL
-#define X_RSHIFT X_RIGHT_SHIFT
-
-#define X_ZKHK X_GRAVE
-#define X_RO X_INTERNATIONAL_1
-#define X_KANA X_INTERNATIONAL_2
-#define X_JYEN X_INTERNATIONAL_3
-#define X_HENK X_INTERNATIONAL_4
-#define X_MHEN X_INTERNATIONAL_5
-#define X_HAEN X_LANGUAGE_1
-#define X_HANJ X_LANGUAGE_2
-
-#define X_CLCK X_CAPS_LOCK
-#define X_SLCK X_SCROLL_LOCK
-#define X_NLCK X_NUM_LOCK
-
-#define SS_LCTRL(string) SS_LCTL(string)
diff --git a/quantum/split_common/split_util.c b/quantum/split_common/split_util.c
index 7d50adf758..4892b7f8d8 100644
--- a/quantum/split_common/split_util.c
+++ b/quantum/split_common/split_util.c
@@ -57,8 +57,9 @@ static uint8_t connection_errors = 0;
volatile bool isLeftHand = true;
#if defined(SPLIT_USB_DETECT)
+_Static_assert((SPLIT_USB_TIMEOUT / SPLIT_USB_TIMEOUT_POLL) <= UINT16_MAX, "Please lower SPLIT_USB_TIMEOUT and/or increase SPLIT_USB_TIMEOUT_POLL.");
static bool usbIsActive(void) {
- for (uint8_t i = 0; i < (SPLIT_USB_TIMEOUT / SPLIT_USB_TIMEOUT_POLL); i++) {
+ for (uint16_t i = 0; i < (SPLIT_USB_TIMEOUT / SPLIT_USB_TIMEOUT_POLL); i++) {
// This will return true if a USB connection has been established
if (usb_connected_state()) {
return true;
@@ -93,7 +94,6 @@ static uint8_t peek_matrix_intersection(pin_t out_pin, pin_t in_pin) {
__attribute__((weak)) 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);
# ifdef SPLIT_HAND_PIN_LOW_IS_LEFT
return !readPin(SPLIT_HAND_PIN);
# else
@@ -132,6 +132,14 @@ __attribute__((weak)) bool is_keyboard_master(void) {
// this code runs before the keyboard is fully initialized
void split_pre_init(void) {
+#if defined(SPLIT_HAND_PIN)
+ setPinInput(SPLIT_HAND_PIN);
+ wait_us(100);
+#elif defined(EE_HANDS)
+ if (!eeconfig_is_enabled()) {
+ eeconfig_init();
+ }
+#endif
isLeftHand = is_keyboard_left();
#if defined(RGBLIGHT_ENABLE) && defined(RGBLED_SPLIT)
diff --git a/quantum/split_common/transactions.c b/quantum/split_common/transactions.c
index 9e3df534e3..719068908f 100644
--- a/quantum/split_common/transactions.c
+++ b/quantum/split_common/transactions.c
@@ -694,7 +694,7 @@ split_transaction_desc_t split_transaction_table[NUM_TOTAL_TRANSACTIONS] = {
#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER)
[PUT_RPC_INFO] = trans_initiator2target_initializer_cb(rpc_info, slave_rpc_info_callback),
[PUT_RPC_REQ_DATA] = trans_initiator2target_initializer(rpc_m2s_buffer),
- [EXECUTE_RPC] = trans_initiator2target_initializer_cb(rpc_info.transaction_id, slave_rpc_exec_callback),
+ [EXECUTE_RPC] = trans_initiator2target_initializer_cb(rpc_info.payload.transaction_id, slave_rpc_exec_callback),
[GET_RPC_RESP_DATA] = trans_target2initiator_initializer(rpc_s2m_buffer),
#endif // defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER)
};
@@ -760,7 +760,8 @@ bool transaction_rpc_exec(int8_t transaction_id, uint8_t initiator2target_buffer
if (target2initiator_buffer_size > RPC_S2M_BUFFER_SIZE) return false;
// Prepare the metadata block
- rpc_sync_info_t info = {.transaction_id = transaction_id, .m2s_length = initiator2target_buffer_size, .s2m_length = target2initiator_buffer_size};
+ rpc_sync_info_t info = {.payload = {.transaction_id = transaction_id, .m2s_length = initiator2target_buffer_size, .s2m_length = target2initiator_buffer_size}};
+ info.checksum = crc8(&info.payload, sizeof(info.payload));
// Make sure the local side knows that we're not sending the full block of data
split_transaction_table[PUT_RPC_REQ_DATA].initiator2target_buffer_size = initiator2target_buffer_size;
@@ -791,18 +792,23 @@ void slave_rpc_info_callback(uint8_t initiator2target_buffer_size, const void *i
// Ignore the args -- the `split_shmem` already has the info, we just need to act upon it.
// We must keep the `split_transaction_table` non-const, so that it is able to be modified at runtime.
- split_transaction_table[PUT_RPC_REQ_DATA].initiator2target_buffer_size = split_shmem->rpc_info.m2s_length;
- split_transaction_table[GET_RPC_RESP_DATA].target2initiator_buffer_size = split_shmem->rpc_info.s2m_length;
+ split_transaction_table[PUT_RPC_REQ_DATA].initiator2target_buffer_size = split_shmem->rpc_info.payload.m2s_length;
+ split_transaction_table[GET_RPC_RESP_DATA].target2initiator_buffer_size = split_shmem->rpc_info.payload.s2m_length;
}
void slave_rpc_exec_callback(uint8_t initiator2target_buffer_size, const void *initiator2target_buffer, uint8_t target2initiator_buffer_size, void *target2initiator_buffer) {
// We can assume that the buffer lengths are correctly set, now, given that sequentially the rpc_info callback was already executed.
// Go through the rpc_info and execute _that_ transaction's callback, with the scratch buffers as inputs.
- int8_t transaction_id = split_shmem->rpc_info.transaction_id;
+ // As a safety precaution we check that the received payload matches its checksum first.
+ if (crc8(&split_shmem->rpc_info.payload, sizeof(split_shmem->rpc_info.payload)) != split_shmem->rpc_info.checksum) {
+ return;
+ }
+
+ int8_t transaction_id = split_shmem->rpc_info.payload.transaction_id;
if (transaction_id < NUM_TOTAL_TRANSACTIONS) {
split_transaction_desc_t *trans = &split_transaction_table[transaction_id];
if (trans->slave_callback) {
- trans->slave_callback(split_shmem->rpc_info.m2s_length, split_shmem->rpc_m2s_buffer, split_shmem->rpc_info.s2m_length, split_shmem->rpc_s2m_buffer);
+ trans->slave_callback(split_shmem->rpc_info.payload.m2s_length, split_shmem->rpc_m2s_buffer, split_shmem->rpc_info.payload.s2m_length, split_shmem->rpc_s2m_buffer);
}
}
}
diff --git a/quantum/split_common/transport.h b/quantum/split_common/transport.h
index e62679990a..06778ad14a 100644
--- a/quantum/split_common/transport.h
+++ b/quantum/split_common/transport.h
@@ -116,9 +116,12 @@ typedef struct _split_slave_pointing_sync_t {
#if defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER)
typedef struct _rpc_sync_info_t {
- int8_t transaction_id;
- uint8_t m2s_length;
- uint8_t s2m_length;
+ uint8_t checksum;
+ struct {
+ int8_t transaction_id;
+ uint8_t m2s_length;
+ uint8_t s2m_length;
+ } payload;
} rpc_sync_info_t;
#endif // defined(SPLIT_TRANSACTION_IDS_KB) || defined(SPLIT_TRANSACTION_IDS_USER)
diff --git a/quantum/via.c b/quantum/via.c
index 320bd5546d..37e2046a10 100644
--- a/quantum/via.c
+++ b/quantum/via.c
@@ -64,6 +64,7 @@ void via_qmk_rgblight_get_value(uint8_t *data);
#endif
#if defined(VIA_QMK_RGB_MATRIX_ENABLE)
+# include <lib/lib8tion/lib8tion.h>
void via_qmk_rgb_matrix_set_value(uint8_t *data);
void via_qmk_rgb_matrix_get_value(uint8_t *data);
void eeconfig_update_rgb_matrix(void);
@@ -396,6 +397,18 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {
dynamic_keymap_set_buffer(offset, size, &command_data[3]);
break;
}
+#ifdef ENCODER_MAP_ENABLE
+ case id_dynamic_keymap_get_encoder: {
+ uint16_t keycode = dynamic_keymap_get_encoder(command_data[0], command_data[1], command_data[2] != 0);
+ command_data[3] = keycode >> 8;
+ command_data[4] = keycode & 0xFF;
+ break;
+ }
+ case id_dynamic_keymap_set_encoder: {
+ dynamic_keymap_set_encoder(command_data[0], command_data[1], command_data[2] != 0, (command_data[3] << 8) | command_data[4]);
+ break;
+ }
+#endif
default: {
// The command ID is not known
// Return the unhandled state
@@ -421,7 +434,7 @@ void via_qmk_backlight_get_value(uint8_t *data) {
switch (*value_id) {
case id_qmk_backlight_brightness: {
// level / BACKLIGHT_LEVELS * 255
- value_data[0] = ((uint16_t)get_backlight_level()) * 255 / BACKLIGHT_LEVELS;
+ value_data[0] = ((uint16_t)get_backlight_level() * UINT8_MAX) / BACKLIGHT_LEVELS;
break;
}
case id_qmk_backlight_effect: {
@@ -441,7 +454,7 @@ void via_qmk_backlight_set_value(uint8_t *data) {
switch (*value_id) {
case id_qmk_backlight_brightness: {
// level / 255 * BACKLIGHT_LEVELS
- backlight_level_noeeprom(((uint16_t)value_data[0]) * BACKLIGHT_LEVELS / 255);
+ backlight_level_noeeprom(((uint16_t)value_data[0] * BACKLIGHT_LEVELS) / UINT8_MAX);
break;
}
case id_qmk_backlight_effect: {
@@ -460,13 +473,16 @@ void via_qmk_backlight_set_value(uint8_t *data) {
#endif // #if defined(VIA_QMK_BACKLIGHT_ENABLE)
#if defined(VIA_QMK_RGBLIGHT_ENABLE)
+# ifndef RGBLIGHT_LIMIT_VAL
+# define RGBLIGHT_LIMIT_VAL 255
+# endif
void via_qmk_rgblight_get_value(uint8_t *data) {
uint8_t *value_id = &(data[0]);
uint8_t *value_data = &(data[1]);
switch (*value_id) {
case id_qmk_rgblight_brightness: {
- value_data[0] = rgblight_get_val();
+ value_data[0] = ((uint16_t)rgblight_get_val() * UINT8_MAX) / RGBLIGHT_LIMIT_VAL;
break;
}
case id_qmk_rgblight_effect: {
@@ -490,7 +506,7 @@ void via_qmk_rgblight_set_value(uint8_t *data) {
uint8_t *value_data = &(data[1]);
switch (*value_id) {
case id_qmk_rgblight_brightness: {
- rgblight_sethsv_noeeprom(rgblight_get_hue(), rgblight_get_sat(), value_data[0]);
+ rgblight_sethsv_noeeprom(rgblight_get_hue(), rgblight_get_sat(), ((uint16_t)value_data[0] * RGBLIGHT_LIMIT_VAL) / UINT8_MAX);
break;
}
case id_qmk_rgblight_effect: {
@@ -517,6 +533,11 @@ void via_qmk_rgblight_set_value(uint8_t *data) {
#if defined(VIA_QMK_RGB_MATRIX_ENABLE)
+# if !defined(RGB_MATRIX_MAXIMUM_BRIGHTNESS) || RGB_MATRIX_MAXIMUM_BRIGHTNESS > UINT8_MAX
+# undef RGB_MATRIX_MAXIMUM_BRIGHTNESS
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS UINT8_MAX
+# endif
+
// VIA supports only 4 discrete values for effect speed; map these to some
// useful speed values for RGB Matrix.
enum speed_values {
@@ -557,7 +578,7 @@ void via_qmk_rgb_matrix_get_value(uint8_t *data) {
uint8_t *value_data = &(data[1]);
switch (*value_id) {
case id_qmk_rgblight_brightness:
- value_data[0] = rgb_matrix_get_val();
+ value_data[0] = ((uint16_t)rgb_matrix_get_val() * UINT8_MAX) / RGB_MATRIX_MAXIMUM_BRIGHTNESS;
break;
case id_qmk_rgblight_effect:
value_data[0] = rgb_matrix_get_mode();
@@ -577,7 +598,7 @@ void via_qmk_rgb_matrix_set_value(uint8_t *data) {
uint8_t *value_data = &(data[1]);
switch (*value_id) {
case id_qmk_rgblight_brightness:
- rgb_matrix_sethsv_noeeprom(rgb_matrix_get_hue(), rgb_matrix_get_sat(), value_data[0]);
+ 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]);
diff --git a/quantum/via.h b/quantum/via.h
index ac29a58902..558ae95de4 100644
--- a/quantum/via.h
+++ b/quantum/via.h
@@ -54,9 +54,11 @@
# define VIA_EEPROM_CUSTOM_CONFIG_SIZE 0
#endif
+#define VIA_EEPROM_CONFIG_END (VIA_EEPROM_CUSTOM_CONFIG_ADDR + VIA_EEPROM_CUSTOM_CONFIG_SIZE)
+
// This is changed only when the command IDs change,
// so VIA Configurator can detect compatible firmware.
-#define VIA_PROTOCOL_VERSION 0x0009
+#define VIA_PROTOCOL_VERSION 0x000A
enum via_command_id {
id_get_protocol_version = 0x01, // always 0x01
@@ -78,6 +80,8 @@ enum via_command_id {
id_dynamic_keymap_get_layer_count = 0x11,
id_dynamic_keymap_get_buffer = 0x12,
id_dynamic_keymap_set_buffer = 0x13,
+ id_dynamic_keymap_get_encoder = 0x14,
+ id_dynamic_keymap_set_encoder = 0x15,
id_unhandled = 0xFF,
};
diff --git a/quantum/wear_leveling/tests/backing_mocks.cpp b/quantum/wear_leveling/tests/backing_mocks.cpp
new file mode 100644
index 0000000000..1dbb26f8e7
--- /dev/null
+++ b/quantum/wear_leveling/tests/backing_mocks.cpp
@@ -0,0 +1,154 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include "gtest/gtest.h"
+#include "gmock/gmock.h"
+#include "backing_mocks.hpp"
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Backing Store Mock implementation
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+void MockBackingStore::reset_instance() {
+ for (auto&& e : backing_storage)
+ e.reset();
+
+ locked = true;
+
+ backing_erasure_count = 0;
+ backing_max_write_count = 0;
+ backing_total_write_count = 0;
+
+ backing_init_invoke_count = 0;
+ backing_unlock_invoke_count = 0;
+ backing_erase_invoke_count = 0;
+ backing_write_invoke_count = 0;
+ backing_lock_invoke_count = 0;
+
+ init_success_callback = [](std::uint64_t) { return true; };
+ erase_success_callback = [](std::uint64_t) { return true; };
+ unlock_success_callback = [](std::uint64_t) { return true; };
+ write_success_callback = [](std::uint64_t, std::uint32_t) { return true; };
+ lock_success_callback = [](std::uint64_t) { return true; };
+
+ write_log.clear();
+}
+
+bool MockBackingStore::init(void) {
+ ++backing_init_invoke_count;
+
+ if (init_success_callback) {
+ return init_success_callback(backing_init_invoke_count);
+ }
+ return true;
+}
+
+bool MockBackingStore::unlock(void) {
+ ++backing_unlock_invoke_count;
+
+ EXPECT_TRUE(is_locked()) << "Attempted to unlock but was not locked";
+ locked = false;
+
+ if (unlock_success_callback) {
+ return unlock_success_callback(backing_unlock_invoke_count);
+ }
+ return true;
+}
+
+bool MockBackingStore::erase(void) {
+ ++backing_erase_invoke_count;
+
+ // Erase each slot
+ for (std::size_t i = 0; i < backing_storage.size(); ++i) {
+ // Drop out of erase early with failure if we need to
+ if (erase_success_callback && !erase_success_callback(backing_erase_invoke_count)) {
+ append_log(true);
+ return false;
+ }
+
+ backing_storage[i].erase();
+ }
+
+ // Keep track of the erase in the write log so that we can verify during tests
+ append_log(true);
+
+ ++backing_erasure_count;
+ return true;
+}
+
+bool MockBackingStore::write(uint32_t address, backing_store_int_t value) {
+ ++backing_write_invoke_count;
+
+ // precondition: value's buffer size already matches BACKING_STORE_WRITE_SIZE
+ EXPECT_TRUE(address % BACKING_STORE_WRITE_SIZE == 0) << "Supplied address was not aligned with the backing store integral size";
+ EXPECT_TRUE(address + BACKING_STORE_WRITE_SIZE <= WEAR_LEVELING_BACKING_SIZE) << "Address would result of out-of-bounds access";
+ EXPECT_FALSE(is_locked()) << "Write was attempted without being unlocked first";
+
+ // Drop out of write early with failure if we need to
+ if (write_success_callback && !write_success_callback(backing_write_invoke_count, address)) {
+ return false;
+ }
+
+ // Write the complement as we're simulating flash memory -- 0xFF means 0x00
+ std::size_t index = address / BACKING_STORE_WRITE_SIZE;
+ backing_storage[index].set(~value);
+
+ // Keep track of the write log so that we can verify during tests
+ append_log(address, value);
+
+ // Keep track of the total number of writes into the backing store
+ ++backing_total_write_count;
+
+ return true;
+}
+
+bool MockBackingStore::lock(void) {
+ ++backing_lock_invoke_count;
+
+ EXPECT_FALSE(is_locked()) << "Attempted to lock but was not unlocked";
+ locked = true;
+
+ if (lock_success_callback) {
+ return lock_success_callback(backing_lock_invoke_count);
+ }
+ return true;
+}
+
+bool MockBackingStore::read(uint32_t address, backing_store_int_t& value) const {
+ // precondition: value's buffer size already matches BACKING_STORE_WRITE_SIZE
+ EXPECT_TRUE(address % BACKING_STORE_WRITE_SIZE == 0) << "Supplied address was not aligned with the backing store integral size";
+ EXPECT_TRUE(address + BACKING_STORE_WRITE_SIZE <= WEAR_LEVELING_BACKING_SIZE) << "Address would result of out-of-bounds access";
+
+ // Read and take the complement as we're simulating flash memory -- 0xFF means 0x00
+ std::size_t index = address / BACKING_STORE_WRITE_SIZE;
+ value = ~backing_storage[index].get();
+
+ return true;
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Backing Implementation
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+extern "C" bool backing_store_init(void) {
+ return MockBackingStore::Instance().init();
+}
+
+extern "C" bool backing_store_unlock(void) {
+ return MockBackingStore::Instance().unlock();
+}
+
+extern "C" bool backing_store_erase(void) {
+ return MockBackingStore::Instance().erase();
+}
+
+extern "C" bool backing_store_write(uint32_t address, backing_store_int_t value) {
+ return MockBackingStore::Instance().write(address, value);
+}
+
+extern "C" bool backing_store_lock(void) {
+ return MockBackingStore::Instance().lock();
+}
+
+extern "C" bool backing_store_read(uint32_t address, backing_store_int_t* value) {
+ return MockBackingStore::Instance().read(address, *value);
+}
diff --git a/quantum/wear_leveling/tests/backing_mocks.hpp b/quantum/wear_leveling/tests/backing_mocks.hpp
new file mode 100644
index 0000000000..e7af7895f3
--- /dev/null
+++ b/quantum/wear_leveling/tests/backing_mocks.hpp
@@ -0,0 +1,210 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+#include <algorithm>
+#include <array>
+#include <cstdint>
+#include <cstdlib>
+#include <functional>
+#include <type_traits>
+#include <vector>
+
+extern "C" {
+#include "fnv.h"
+#include "wear_leveling.h"
+#include "wear_leveling_internal.h"
+};
+
+// Maximum number of mock write log entries to keep
+using MOCK_WRITE_LOG_MAX_ENTRIES = std::integral_constant<std::size_t, 1024>;
+// Complement to the backing store integral, for emulating flash erases of all bytes=0xFF
+using BACKING_STORE_INTEGRAL_COMPLEMENT = std::integral_constant<backing_store_int_t, ((backing_store_int_t)(~(backing_store_int_t)0))>;
+// Total number of elements stored in the backing arrays
+using BACKING_STORE_ELEMENT_COUNT = std::integral_constant<std::size_t, (WEAR_LEVELING_BACKING_SIZE / sizeof(backing_store_int_t))>;
+
+class MockBackingStoreElement {
+ private:
+ backing_store_int_t value;
+ std::size_t writes;
+ std::size_t erases;
+
+ public:
+ MockBackingStoreElement() : value(BACKING_STORE_INTEGRAL_COMPLEMENT::value), writes(0), erases(0) {}
+ void reset() {
+ erase();
+ writes = 0;
+ erases = 0;
+ }
+ void erase() {
+ if (!is_erased()) {
+ ++erases;
+ }
+ value = BACKING_STORE_INTEGRAL_COMPLEMENT::value;
+ }
+ backing_store_int_t get() const {
+ return value;
+ }
+ void set(const backing_store_int_t& v) {
+ EXPECT_TRUE(is_erased()) << "Attempted write at index which isn't empty.";
+ value = v;
+ ++writes;
+ }
+ std::size_t num_writes() const {
+ return writes;
+ }
+ std::size_t num_erases() const {
+ return erases;
+ }
+ bool is_erased() const {
+ return value == BACKING_STORE_INTEGRAL_COMPLEMENT::value;
+ }
+};
+
+struct MockBackingStoreLogEntry {
+ MockBackingStoreLogEntry(uint32_t address, backing_store_int_t value) : address(address), value(value), erased(false) {}
+ MockBackingStoreLogEntry(bool erased) : address(0), value(0), erased(erased) {}
+ uint32_t address = 0; // The address of the operation
+ backing_store_int_t value = 0; // The value of the operation
+ bool erased = false; // Whether the entire backing store was erased
+};
+
+class MockBackingStore {
+ private:
+ MockBackingStore() {
+ reset_instance();
+ }
+
+ // Type containing each of the entries and the write counts
+ using storage_t = std::array<MockBackingStoreElement, BACKING_STORE_ELEMENT_COUNT::value>;
+
+ // Whether the backing store is locked
+ bool locked;
+ // The actual data stored in the emulated flash
+ storage_t backing_storage;
+ // The number of erase cycles that have occurred
+ std::uint64_t backing_erasure_count;
+ // The max number of writes to an element of the backing store
+ std::uint64_t backing_max_write_count;
+ // The total number of writes to all elements of the backing store
+ std::uint64_t backing_total_write_count;
+ // The write log for the backing store
+ std::vector<MockBackingStoreLogEntry> write_log;
+
+ // The number of times each API was invoked
+ std::uint64_t backing_init_invoke_count;
+ std::uint64_t backing_unlock_invoke_count;
+ std::uint64_t backing_erase_invoke_count;
+ std::uint64_t backing_write_invoke_count;
+ std::uint64_t backing_lock_invoke_count;
+
+ // Whether init should succeed
+ std::function<bool(std::uint64_t)> init_success_callback;
+ // Whether erase should succeed
+ std::function<bool(std::uint64_t)> erase_success_callback;
+ // Whether unlocks should succeed
+ std::function<bool(std::uint64_t)> unlock_success_callback;
+ // Whether writes should succeed
+ std::function<bool(std::uint64_t, std::uint32_t)> write_success_callback;
+ // Whether locks should succeed
+ std::function<bool(std::uint64_t)> lock_success_callback;
+
+ template <typename... Args>
+ void append_log(Args&&... args) {
+ if (write_log.size() < MOCK_WRITE_LOG_MAX_ENTRIES::value) {
+ write_log.emplace_back(std::forward<Args>(args)...);
+ }
+ }
+
+ public:
+ static MockBackingStore& Instance() {
+ static MockBackingStore instance;
+ return instance;
+ }
+
+ std::uint64_t erasure_count() const {
+ return backing_erasure_count;
+ }
+ std::uint64_t max_write_count() const {
+ return backing_max_write_count;
+ }
+ std::uint64_t total_write_count() const {
+ return backing_total_write_count;
+ }
+
+ // The number of times each API was invoked
+ std::uint64_t init_invoke_count() const {
+ return backing_init_invoke_count;
+ }
+ std::uint64_t unlock_invoke_count() const {
+ return backing_unlock_invoke_count;
+ }
+ std::uint64_t erase_invoke_count() const {
+ return backing_erase_invoke_count;
+ }
+ std::uint64_t write_invoke_count() const {
+ return backing_write_invoke_count;
+ }
+ std::uint64_t lock_invoke_count() const {
+ return backing_lock_invoke_count;
+ }
+
+ // Clear out the internal data for the next run
+ void reset_instance();
+
+ bool is_locked() const {
+ return locked;
+ }
+
+ // APIs for the backing store
+ bool init();
+ bool unlock();
+ bool erase();
+ bool write(std::uint32_t address, backing_store_int_t value);
+ bool lock();
+ bool read(std::uint32_t address, backing_store_int_t& value) const;
+
+ // Control over when init/writes/erases should succeed
+ void set_init_callback(std::function<bool(std::uint64_t)> callback) {
+ init_success_callback = callback;
+ }
+ void set_erase_callback(std::function<bool(std::uint64_t)> callback) {
+ erase_success_callback = callback;
+ }
+ void set_unlock_callback(std::function<bool(std::uint64_t)> callback) {
+ unlock_success_callback = callback;
+ }
+ void set_write_callback(std::function<bool(std::uint64_t, std::uint32_t)> callback) {
+ write_success_callback = callback;
+ }
+ void set_lock_callback(std::function<bool(std::uint64_t)> callback) {
+ lock_success_callback = callback;
+ }
+
+ auto storage_begin() const -> decltype(backing_storage.begin()) {
+ return backing_storage.begin();
+ }
+ auto storage_end() const -> decltype(backing_storage.end()) {
+ return backing_storage.end();
+ }
+
+ auto storage_begin() -> decltype(backing_storage.begin()) {
+ return backing_storage.begin();
+ }
+ auto storage_end() -> decltype(backing_storage.end()) {
+ return backing_storage.end();
+ }
+
+ auto log_begin() -> decltype(write_log.begin()) {
+ return write_log.begin();
+ }
+ auto log_end() -> decltype(write_log.end()) {
+ return write_log.end();
+ }
+
+ auto log_begin() const -> decltype(write_log.begin()) {
+ return write_log.begin();
+ }
+ auto log_end() const -> decltype(write_log.end()) {
+ return write_log.end();
+ }
+};
diff --git a/quantum/wear_leveling/tests/rules.mk b/quantum/wear_leveling/tests/rules.mk
new file mode 100644
index 0000000000..4d7a964049
--- /dev/null
+++ b/quantum/wear_leveling/tests/rules.mk
@@ -0,0 +1,66 @@
+wear_leveling_common_DEFS := \
+ -DWEAR_LEVELING_TESTS
+wear_leveling_common_SRC := \
+ $(LIB_PATH)/fnv/qmk_fnv_type_validation.c \
+ $(LIB_PATH)/fnv/hash_32a.c \
+ $(LIB_PATH)/fnv/hash_64a.c \
+ $(QUANTUM_PATH)/wear_leveling/wear_leveling.c \
+ $(QUANTUM_PATH)/wear_leveling/tests/backing_mocks.cpp
+wear_leveling_common_INC := \
+ $(LIB_PATH)/fnv \
+ $(QUANTUM_PATH)/wear_leveling
+
+wear_leveling_general_DEFS := \
+ $(wear_leveling_common_DEFS) \
+ -DBACKING_STORE_WRITE_SIZE=2 \
+ -DWEAR_LEVELING_BACKING_SIZE=48 \
+ -DWEAR_LEVELING_LOGICAL_SIZE=16
+wear_leveling_general_SRC := \
+ $(wear_leveling_common_SRC) \
+ $(QUANTUM_PATH)/wear_leveling/tests/wear_leveling_general.cpp
+wear_leveling_general_INC := \
+ $(wear_leveling_common_INC)
+
+wear_leveling_2byte_optimized_writes_DEFS := \
+ $(wear_leveling_common_DEFS) \
+ -DBACKING_STORE_WRITE_SIZE=2 \
+ -DWEAR_LEVELING_BACKING_SIZE=65536 \
+ -DWEAR_LEVELING_LOGICAL_SIZE=32768
+wear_leveling_2byte_optimized_writes_SRC := \
+ $(wear_leveling_common_SRC) \
+ $(QUANTUM_PATH)/wear_leveling/tests/wear_leveling_2byte_optimized_writes.cpp
+wear_leveling_2byte_optimized_writes_INC := \
+ $(wear_leveling_common_INC)
+
+wear_leveling_2byte_DEFS := \
+ $(wear_leveling_common_DEFS) \
+ -DBACKING_STORE_WRITE_SIZE=2 \
+ -DWEAR_LEVELING_BACKING_SIZE=48 \
+ -DWEAR_LEVELING_LOGICAL_SIZE=16
+wear_leveling_2byte_SRC := \
+ $(wear_leveling_common_SRC) \
+ $(QUANTUM_PATH)/wear_leveling/tests/wear_leveling_2byte.cpp
+wear_leveling_2byte_INC := \
+ $(wear_leveling_common_INC)
+
+wear_leveling_4byte_DEFS := \
+ $(wear_leveling_common_DEFS) \
+ -DBACKING_STORE_WRITE_SIZE=4 \
+ -DWEAR_LEVELING_BACKING_SIZE=48 \
+ -DWEAR_LEVELING_LOGICAL_SIZE=16
+wear_leveling_4byte_SRC := \
+ $(wear_leveling_common_SRC) \
+ $(QUANTUM_PATH)/wear_leveling/tests/wear_leveling_4byte.cpp
+wear_leveling_4byte_INC := \
+ $(wear_leveling_common_INC)
+
+wear_leveling_8byte_DEFS := \
+ $(wear_leveling_common_DEFS) \
+ -DBACKING_STORE_WRITE_SIZE=8 \
+ -DWEAR_LEVELING_BACKING_SIZE=48 \
+ -DWEAR_LEVELING_LOGICAL_SIZE=16
+wear_leveling_8byte_SRC := \
+ $(wear_leveling_common_SRC) \
+ $(QUANTUM_PATH)/wear_leveling/tests/wear_leveling_8byte.cpp
+wear_leveling_8byte_INC := \
+ $(wear_leveling_common_INC) \ No newline at end of file
diff --git a/quantum/wear_leveling/tests/testlist.mk b/quantum/wear_leveling/tests/testlist.mk
new file mode 100644
index 0000000000..32cfc178b4
--- /dev/null
+++ b/quantum/wear_leveling/tests/testlist.mk
@@ -0,0 +1,6 @@
+TEST_LIST += \
+ wear_leveling_general \
+ wear_leveling_2byte_optimized_writes \
+ wear_leveling_2byte \
+ wear_leveling_4byte \
+ wear_leveling_8byte
diff --git a/quantum/wear_leveling/tests/wear_leveling_2byte.cpp b/quantum/wear_leveling/tests/wear_leveling_2byte.cpp
new file mode 100644
index 0000000000..b749c32b04
--- /dev/null
+++ b/quantum/wear_leveling/tests/wear_leveling_2byte.cpp
@@ -0,0 +1,228 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include <numeric>
+#include "gtest/gtest.h"
+#include "gmock/gmock.h"
+#include "backing_mocks.hpp"
+
+class WearLeveling2Byte : public ::testing::Test {
+ protected:
+ void SetUp() override {
+ MockBackingStore::Instance().reset_instance();
+ wear_leveling_init();
+ }
+};
+
+static std::array<std::uint8_t, WEAR_LEVELING_LOGICAL_SIZE> verify_data;
+
+static wear_leveling_status_t test_write(const uint32_t address, const void* value, size_t length) {
+ memcpy(&verify_data[address], value, length);
+ return wear_leveling_write(address, value, length);
+}
+
+/**
+ * This test verifies that the first write after initialisation occurs after the FNV1a_64 hash location.
+ */
+TEST_F(WearLeveling2Byte, FirstWriteOccursAfterHash) {
+ auto& inst = MockBackingStore::Instance();
+ uint8_t test_value = 0x15;
+ test_write(0x02, &test_value, sizeof(test_value));
+ EXPECT_EQ(inst.log_begin()->address, WEAR_LEVELING_LOGICAL_SIZE + 8) << "Invalid first write address.";
+}
+
+/**
+ * This test verifies that the first write after initialisation occurs after the FNV1a_64 hash location, after an erase has occurred.
+ */
+TEST_F(WearLeveling2Byte, FirstWriteOccursAfterHash_AfterErase) {
+ auto& inst = MockBackingStore::Instance();
+ uint8_t test_value = 0x15;
+ wear_leveling_erase();
+ test_write(0x02, &test_value, sizeof(test_value));
+ EXPECT_EQ((inst.log_begin() + 1)->address, WEAR_LEVELING_LOGICAL_SIZE + 8) << "Invalid first write address.";
+}
+
+/**
+ * This test forces consolidation by writing enough to the write log that it overflows, consolidating the data into the
+ * base logical area.
+ */
+TEST_F(WearLeveling2Byte, ConsolidationOverflow) {
+ auto& inst = MockBackingStore::Instance();
+
+ // Generate a test block of data which forces OPTIMIZED_64 writes
+ std::array<std::uint8_t, WEAR_LEVELING_LOGICAL_SIZE> testvalue;
+
+ // Write the data
+ std::iota(testvalue.begin(), testvalue.end(), 0x20);
+ EXPECT_EQ(test_write(0, testvalue.data(), testvalue.size()), WEAR_LEVELING_CONSOLIDATED) << "Write returned incorrect status";
+ uint8_t dummy = 0x40;
+ EXPECT_EQ(test_write(0x04, &dummy, sizeof(dummy)), WEAR_LEVELING_SUCCESS) << "Write returned incorrect status";
+
+ // All writes are at address<64, so each logical byte written will generate 1 write log entry, thus 1 backing store write.
+ // Expected log:
+ // [0..11]: optimised64, backing address 0x18, logical address 0x00
+ // [12]: erase
+ // [13..20]: consolidated data, backing address 0x00, logical address 0x00
+ // [21..24]: FNV1a_64 result, backing address 0x10
+ // [25]: optimised64, backing address 0x18, logical address 0x04
+ EXPECT_EQ(std::distance(inst.log_begin(), inst.log_end()), 26);
+
+ // Verify the backing store writes for the write log
+ std::size_t index;
+ write_log_entry_t e;
+ for (index = 0; index < 12; ++index) {
+ auto write_iter = inst.log_begin() + index;
+ EXPECT_EQ(write_iter->address, WEAR_LEVELING_LOGICAL_SIZE + 8 + (index * BACKING_STORE_WRITE_SIZE)) << "Invalid write log address";
+ e.raw16[0] = write_iter->value;
+ EXPECT_EQ(LOG_ENTRY_GET_TYPE(e), LOG_ENTRY_TYPE_OPTIMIZED_64) << "Invalid write log entry type";
+ }
+
+ // Verify the backing store erase
+ {
+ index = 12;
+ auto write_iter = inst.log_begin() + index;
+ e.raw16[0] = write_iter->value;
+ EXPECT_TRUE(write_iter->erased) << "Backing store erase did not occur as required";
+ }
+
+ // Verify the backing store writes for consolidation
+ for (index = 13; index < 21; ++index) {
+ auto write_iter = inst.log_begin() + index;
+ EXPECT_EQ(write_iter->address, (index - 13) * BACKING_STORE_WRITE_SIZE) << "Invalid write log entry address";
+ }
+
+ // Verify the FNV1a_64 write
+ {
+ EXPECT_EQ((inst.log_begin() + 21)->address, WEAR_LEVELING_LOGICAL_SIZE) << "Invalid write log address";
+ e.raw16[0] = (inst.log_begin() + 21)->value;
+ e.raw16[1] = (inst.log_begin() + 22)->value;
+ e.raw16[2] = (inst.log_begin() + 23)->value;
+ e.raw16[3] = (inst.log_begin() + 24)->value;
+ EXPECT_EQ(e.raw64, fnv_64a_buf(testvalue.data(), testvalue.size(), FNV1A_64_INIT)) << "Invalid checksum"; // Note that checksum is based on testvalue, as we overwrote one byte and need to consult the consolidated data, not the current
+ }
+
+ // Verify the final write
+ EXPECT_EQ((inst.log_begin() + 25)->address, WEAR_LEVELING_LOGICAL_SIZE + 8) << "Invalid write log address";
+
+ // Verify the data is what we expected
+ std::array<std::uint8_t, WEAR_LEVELING_LOGICAL_SIZE> readback;
+ EXPECT_EQ(wear_leveling_read(0, readback.data(), WEAR_LEVELING_LOGICAL_SIZE), WEAR_LEVELING_SUCCESS) << "Failed to read back the saved data";
+ EXPECT_TRUE(memcmp(readback.data(), verify_data.data(), WEAR_LEVELING_LOGICAL_SIZE) == 0) << "Readback did not match";
+
+ // Re-init and re-read, verifying the reload capability
+ EXPECT_NE(wear_leveling_init(), WEAR_LEVELING_FAILED) << "Re-initialisation failed";
+ EXPECT_EQ(wear_leveling_read(0, readback.data(), WEAR_LEVELING_LOGICAL_SIZE), WEAR_LEVELING_SUCCESS) << "Failed to read back the saved data";
+ EXPECT_TRUE(memcmp(readback.data(), verify_data.data(), WEAR_LEVELING_LOGICAL_SIZE) == 0) << "Readback did not match";
+}
+
+/**
+ * This test verifies multibyte readback gets canceled with an out-of-bounds address.
+ */
+TEST_F(WearLeveling2Byte, PlaybackReadbackMultibyte_OOB) {
+ auto& inst = MockBackingStore::Instance();
+ auto logstart = inst.storage_begin() + (WEAR_LEVELING_LOGICAL_SIZE / sizeof(backing_store_int_t));
+
+ // Invalid FNV1a_64 hash
+ (logstart + 0)->set(0);
+ (logstart + 1)->set(0);
+ (logstart + 2)->set(0);
+ (logstart + 3)->set(0);
+
+ // Set up a 2-byte logical write of [0x11,0x12] at logical offset 0x01
+ auto entry0 = LOG_ENTRY_MAKE_MULTIBYTE(0x01, 2);
+ entry0.raw8[3] = 0x11;
+ entry0.raw8[4] = 0x12;
+ (logstart + 4)->set(~entry0.raw16[0]);
+ (logstart + 5)->set(~entry0.raw16[1]);
+ (logstart + 6)->set(~entry0.raw16[2]);
+
+ // Set up a 2-byte logical write of [0x13,0x14] at logical offset 0x1000 (out of bounds)
+ auto entry1 = LOG_ENTRY_MAKE_MULTIBYTE(0x1000, 2);
+ entry1.raw8[3] = 0x13;
+ entry1.raw8[4] = 0x14;
+ (logstart + 7)->set(~entry1.raw16[0]);
+ (logstart + 8)->set(~entry1.raw16[1]);
+ (logstart + 9)->set(~entry1.raw16[2]);
+
+ // Set up a 2-byte logical write of [0x15,0x16] at logical offset 0x01
+ auto entry2 = LOG_ENTRY_MAKE_MULTIBYTE(0x01, 2);
+ entry2.raw8[3] = 0x15;
+ entry2.raw8[4] = 0x16;
+ (logstart + 10)->set(~entry2.raw16[0]);
+ (logstart + 11)->set(~entry2.raw16[1]);
+ (logstart + 12)->set(~entry2.raw16[2]);
+
+ EXPECT_EQ(inst.erasure_count(), 0) << "Invalid initial erase count";
+ EXPECT_EQ(wear_leveling_init(), WEAR_LEVELING_CONSOLIDATED) << "Readback should have failed and triggered consolidation";
+ EXPECT_EQ(inst.erasure_count(), 1) << "Invalid final erase count";
+
+ uint8_t buf[2];
+ wear_leveling_read(0x01, buf, sizeof(buf));
+ EXPECT_EQ(buf[0], 0x11) << "Readback should have maintained the previous pre-failure value from the write log";
+ EXPECT_EQ(buf[1], 0x12) << "Readback should have maintained the previous pre-failure value from the write log";
+}
+
+/**
+ * This test verifies optimized 64 readback gets canceled with an out-of-bounds address.
+ */
+TEST_F(WearLeveling2Byte, PlaybackReadbackOptimized64_OOB) {
+ auto& inst = MockBackingStore::Instance();
+ auto logstart = inst.storage_begin() + (WEAR_LEVELING_LOGICAL_SIZE / sizeof(backing_store_int_t));
+
+ // Invalid FNV1a_64 hash
+ (logstart + 0)->set(0);
+ (logstart + 1)->set(0);
+ (logstart + 2)->set(0);
+ (logstart + 3)->set(0);
+
+ // Set up a 1-byte logical write of 0x11 at logical offset 0x01
+ auto entry0 = LOG_ENTRY_MAKE_OPTIMIZED_64(0x01, 0x11);
+ (logstart + 4)->set(~entry0.raw16[0]);
+
+ // Set up a 1-byte logical write of 0x11 at logical offset 0x30 (out of bounds)
+ auto entry1 = LOG_ENTRY_MAKE_OPTIMIZED_64(0x30, 0x11);
+ (logstart + 5)->set(~entry1.raw16[0]);
+
+ // Set up a 1-byte logical write of 0x12 at logical offset 0x01
+ auto entry2 = LOG_ENTRY_MAKE_OPTIMIZED_64(0x01, 0x12);
+ (logstart + 6)->set(~entry2.raw16[0]);
+
+ EXPECT_EQ(inst.erasure_count(), 0) << "Invalid initial erase count";
+ EXPECT_EQ(wear_leveling_init(), WEAR_LEVELING_CONSOLIDATED) << "Readback should have failed and triggered consolidation";
+ EXPECT_EQ(inst.erasure_count(), 1) << "Invalid final erase count";
+ uint8_t tmp;
+ wear_leveling_read(0x01, &tmp, sizeof(tmp));
+ EXPECT_EQ(tmp, 0x11) << "Readback should have maintained the previous pre-failure value from the write log";
+}
+
+/**
+ * This test verifies word 0/1 readback gets canceled with an out-of-bounds address.
+ */
+TEST_F(WearLeveling2Byte, PlaybackReadbackWord01_OOB) {
+ auto& inst = MockBackingStore::Instance();
+ auto logstart = inst.storage_begin() + (WEAR_LEVELING_LOGICAL_SIZE / sizeof(backing_store_int_t));
+
+ // Invalid FNV1a_64 hash
+ (logstart + 0)->set(0);
+ (logstart + 1)->set(0);
+ (logstart + 2)->set(0);
+ (logstart + 3)->set(0);
+
+ // Set up a 1-byte logical write of 1 at logical offset 0x02
+ auto entry0 = LOG_ENTRY_MAKE_WORD_01(0x02, 1);
+ (logstart + 4)->set(~entry0.raw16[0]);
+
+ // Set up a 1-byte logical write of 1 at logical offset 0x1000 (out of bounds)
+ auto entry1 = LOG_ENTRY_MAKE_WORD_01(0x1000, 1);
+ (logstart + 5)->set(~entry1.raw16[0]);
+
+ // Set up a 1-byte logical write of 0 at logical offset 0x02
+ auto entry2 = LOG_ENTRY_MAKE_WORD_01(0x02, 0);
+ (logstart + 6)->set(~entry2.raw16[0]);
+
+ EXPECT_EQ(inst.erasure_count(), 0) << "Invalid initial erase count";
+ EXPECT_EQ(wear_leveling_init(), WEAR_LEVELING_CONSOLIDATED) << "Readback should have failed and triggered consolidation";
+ EXPECT_EQ(inst.erasure_count(), 1) << "Invalid final erase count";
+ uint8_t tmp;
+ wear_leveling_read(0x02, &tmp, sizeof(tmp));
+ EXPECT_EQ(tmp, 1) << "Readback should have maintained the previous pre-failure value from the write log";
+}
diff --git a/quantum/wear_leveling/tests/wear_leveling_2byte_optimized_writes.cpp b/quantum/wear_leveling/tests/wear_leveling_2byte_optimized_writes.cpp
new file mode 100644
index 0000000000..0b03113c89
--- /dev/null
+++ b/quantum/wear_leveling/tests/wear_leveling_2byte_optimized_writes.cpp
@@ -0,0 +1,295 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include <numeric>
+#include "gtest/gtest.h"
+#include "gmock/gmock.h"
+#include "backing_mocks.hpp"
+
+class WearLeveling2ByteOptimizedWrites : public ::testing::Test {
+ protected:
+ void SetUp() override {
+ MockBackingStore::Instance().reset_instance();
+ wear_leveling_init();
+ }
+};
+
+static std::array<std::uint8_t, WEAR_LEVELING_LOGICAL_SIZE> verify_data;
+
+static wear_leveling_status_t test_write(const uint32_t address, const void* value, size_t length) {
+ memcpy(&verify_data[address], value, length);
+ return wear_leveling_write(address, value, length);
+}
+
+/**
+ * This test ensures the correct number of backing store writes occurs with a multibyte write, given the input buffer size.
+ */
+TEST_F(WearLeveling2ByteOptimizedWrites, MultibyteBackingStoreWriteCounts) {
+ auto& inst = MockBackingStore::Instance();
+
+ for (std::size_t length = 1; length <= 5; ++length) {
+ // Clear things out
+ std::fill(verify_data.begin(), verify_data.end(), 0);
+ inst.reset_instance();
+ wear_leveling_init();
+
+ // Generate a test block of data
+ std::vector<std::uint8_t> testvalue(length);
+ std::iota(testvalue.begin(), testvalue.end(), 0x20);
+
+ // Write the data
+ EXPECT_EQ(test_write(2000, testvalue.data(), testvalue.size()), WEAR_LEVELING_SUCCESS) << "Write failed with incorrect status";
+
+ std::size_t expected;
+ if (length > 3) {
+ expected = 4;
+ } else if (length > 1) {
+ expected = 3;
+ } else {
+ expected = 2;
+ }
+
+ // Check that we got the expected number of write log entries
+ EXPECT_EQ(std::distance(inst.log_begin(), inst.log_end()), expected);
+ }
+}
+
+/**
+ * This test runs through writing U16 values of `0` or `1` over the entire logical address range, to even addresses only.
+ * - Addresses <16384 will result in a single optimised backing write
+ * - Higher addresses will result in a multibyte write of 3 backing writes
+ */
+TEST_F(WearLeveling2ByteOptimizedWrites, WriteOneThenZeroToEvenAddresses) {
+ auto& inst = MockBackingStore::Instance();
+
+ // Only attempt writes for each address up to a limit that would NOT force a consolidated data write.
+ std::size_t writes_per_loop = (MOCK_WRITE_LOG_MAX_ENTRIES::value / 6) - 1; // Worst case is 6 writes for each pair of writes of 0/1
+ std::size_t final_address;
+ for (uint32_t address = 0; address < WEAR_LEVELING_LOGICAL_SIZE; address += (writes_per_loop * 2)) {
+ // Clear things out
+ std::fill(verify_data.begin(), verify_data.end(), 0);
+ inst.reset_instance();
+ wear_leveling_init();
+
+ // Loop through all the addresses in this range
+ std::size_t expected = 0;
+ for (uint32_t offset = 0; offset < (writes_per_loop * 2); offset += 2) {
+ // If we're about to exceed the limit of the logical store, skip the writes
+ if (address + offset + 2 > WEAR_LEVELING_LOGICAL_SIZE) {
+ break;
+ }
+
+ // The default erased value of the wear-leveling cache is zero, so we write a one first, then a zero, to ensure a backing store write occurs.
+ uint16_t val = 1;
+ EXPECT_EQ(test_write(address + offset, &val, sizeof(val)), WEAR_LEVELING_SUCCESS) << "Write failed with incorrect status";
+ val = 0;
+ EXPECT_EQ(test_write(address + offset, &val, sizeof(val)), WEAR_LEVELING_SUCCESS) << "Write failed with incorrect status";
+
+ std::size_t backing_store_writes_expected = 0;
+ if (address + offset < 16384) {
+ // A U16 value of 0/1 at an even address <16384 will result in 1 backing write each, so we need 2 backing writes for 2 logical writes
+ backing_store_writes_expected = 2;
+ } else {
+ // All other addresses result in a multibyte write (3 backing store writes) to write two local bytes of data
+ backing_store_writes_expected = 6;
+ }
+
+ // Keep track of the total number of expected writes to the backing store
+ expected += backing_store_writes_expected;
+
+ // Verify we're at the correct number of writes
+ EXPECT_EQ(std::distance(inst.log_begin(), inst.log_end()), expected) << "Write log doesn't match required number of backing store writes for address " << (address + offset);
+
+ // Verify that the write log entries we expect are actually present
+ std::size_t write_index = expected - backing_store_writes_expected;
+ auto write_iter = inst.log_begin() + write_index;
+ write_log_entry_t e;
+ if (address + offset < 16384) {
+ // A U16 value of 0/1 at an even address <16384 will result in 1 backing write each, so we need 2 backing writes for 2 logical writes
+ for (std::size_t i = 0; i < 2; ++i) {
+ e.raw16[0] = write_iter->value;
+ EXPECT_EQ(LOG_ENTRY_GET_TYPE(e), LOG_ENTRY_TYPE_WORD_01) << "Invalid write log entry type at " << (address + offset);
+ ++write_iter;
+ }
+ } else {
+ // Multibyte write
+ e.raw16[0] = write_iter->value;
+ EXPECT_EQ(LOG_ENTRY_GET_TYPE(e), LOG_ENTRY_TYPE_MULTIBYTE) << "Invalid write log entry type at " << (address + offset);
+ EXPECT_EQ(LOG_ENTRY_MULTIBYTE_GET_LENGTH(e), 2) << "Invalid write log entry length at " << (address + offset);
+ ++write_iter;
+ }
+
+ // Keep track of the final address written, so we can verify the entire logical range was handled
+ final_address = address + offset;
+ }
+
+ // Verify the number of writes that occurred to the backing store
+ size_t backing_write_count = std::distance(inst.log_begin(), inst.log_end());
+ EXPECT_EQ(backing_write_count, expected) << "Invalid write count at address " << address;
+
+ // Verify the data is what we expected
+ std::array<std::uint8_t, WEAR_LEVELING_LOGICAL_SIZE> readback;
+ EXPECT_EQ(wear_leveling_read(0, readback.data(), WEAR_LEVELING_LOGICAL_SIZE), WEAR_LEVELING_SUCCESS) << "Failed to read back the saved data";
+ EXPECT_TRUE(memcmp(readback.data(), verify_data.data(), WEAR_LEVELING_LOGICAL_SIZE) == 0) << "Readback for address " << address << " did not match";
+
+ // Re-init and re-read, testing the reload capability
+ EXPECT_NE(wear_leveling_init(), WEAR_LEVELING_FAILED) << "Re-initialisation failed";
+ EXPECT_EQ(wear_leveling_read(0, readback.data(), WEAR_LEVELING_LOGICAL_SIZE), WEAR_LEVELING_SUCCESS) << "Failed to read back the saved data";
+ EXPECT_TRUE(memcmp(readback.data(), verify_data.data(), WEAR_LEVELING_LOGICAL_SIZE) == 0) << "Readback for address " << address << " did not match";
+ }
+
+ // Verify the full range of the logical area got written
+ EXPECT_EQ(final_address, WEAR_LEVELING_LOGICAL_SIZE - 2) << "Invalid final write address";
+}
+
+/**
+ * This test runs through writing U16 values of `0` or `1` over the entire logical address range, to odd addresses only.
+ * - Addresses <63 will result in 2 optimised backing writes
+ * - Address 63 results in a single optimised backing write for the first logical byte, and a multibyte write of 2 backing writes for the second logical byte
+ * - Higher addresses will result in a multibyte write of 3 backing writes
+ */
+TEST_F(WearLeveling2ByteOptimizedWrites, WriteOneThenZeroToOddAddresses) {
+ auto& inst = MockBackingStore::Instance();
+
+ // Only attempt writes for each address up to a limit that would NOT force a consolidated data write.
+ std::size_t writes_per_loop = (MOCK_WRITE_LOG_MAX_ENTRIES::value / 6) - 1; // Worst case is 6 writes for each pair of writes of 0/1
+ std::size_t final_address;
+ for (uint32_t address = 1; address < WEAR_LEVELING_LOGICAL_SIZE; address += (writes_per_loop * 2)) {
+ // Clear things out
+ std::fill(verify_data.begin(), verify_data.end(), 0);
+ inst.reset_instance();
+ wear_leveling_init();
+
+ // Loop through all the addresses in this range
+ std::size_t expected = 0;
+ for (uint32_t offset = 0; offset < (writes_per_loop * 2); offset += 2) {
+ // If we're about to exceed the limit of the logical store, skip the writes
+ if (address + offset + 2 > WEAR_LEVELING_LOGICAL_SIZE) {
+ break;
+ }
+
+ // The default erased value of the wear-leveling cache is zero, so we write a one first, then a zero, to ensure a backing store write occurs.
+ uint16_t val = 1;
+ EXPECT_EQ(test_write(address + offset, &val, sizeof(val)), WEAR_LEVELING_SUCCESS) << "Write failed with incorrect status";
+ val = 0;
+ EXPECT_EQ(test_write(address + offset, &val, sizeof(val)), WEAR_LEVELING_SUCCESS) << "Write failed with incorrect status";
+
+ std::size_t backing_store_writes_expected = 0;
+ if (address + offset < 63) {
+ // A U16 value of 0/1 at an odd address <64 will result in 2 backing writes each, so we need 4 backing writes for 2 logical writes
+ backing_store_writes_expected = 4;
+ } else if (address + offset == 63) {
+ // If we're straddling the boundary for optimised bytes (addr==64), then the first logical byte is written using the optimised write (1 backing
+ // store write), and the second logical byte uses a multibyte write (2 backing store writes)
+ backing_store_writes_expected = 2 // First logical bytes written using optimised log entries
+ + 4; // Second logical bytes written using multibyte log entries
+ } else {
+ // All other addresses result in a multibyte write (3 backing store writes) to write two local bytes of data
+ backing_store_writes_expected = 6;
+ }
+
+ // Keep track of the total number of expected writes to the backing store
+ expected += backing_store_writes_expected;
+
+ // Verify we're at the correct number of writes
+ EXPECT_EQ(std::distance(inst.log_begin(), inst.log_end()), expected) << "Write log doesn't match required number of backing store writes for address " << (address + offset);
+
+ // Verify that the write log entries we expect are actually present
+ std::size_t write_index = expected - backing_store_writes_expected;
+ auto write_iter = inst.log_begin() + write_index;
+ write_log_entry_t e;
+ if (address + offset < 63) {
+ // A U16 value of 0/1 at an odd address <64 will result in 2 backing writes each, so we need 4 backing writes for 2 logical writes
+ for (std::size_t i = 0; i < 4; ++i) {
+ e.raw16[0] = write_iter->value;
+ EXPECT_EQ(LOG_ENTRY_GET_TYPE(e), LOG_ENTRY_TYPE_OPTIMIZED_64) << "Invalid write log entry type";
+ ++write_iter;
+ }
+ } else if (address + offset == 63) {
+ // First log entry is the 64-addr optimised one
+ e.raw16[0] = write_iter->value;
+ EXPECT_EQ(LOG_ENTRY_GET_TYPE(e), LOG_ENTRY_TYPE_OPTIMIZED_64) << "Invalid write log entry type";
+ ++write_iter;
+
+ // Second log entry is the multibyte entry for the second logical byte
+ e.raw16[0] = write_iter->value;
+ EXPECT_EQ(LOG_ENTRY_GET_TYPE(e), LOG_ENTRY_TYPE_MULTIBYTE) << "Invalid write log entry type";
+ EXPECT_EQ(LOG_ENTRY_MULTIBYTE_GET_LENGTH(e), 1) << "Invalid write log entry length";
+ ++write_iter;
+ } else {
+ // Multibyte write
+ e.raw16[0] = write_iter->value;
+ EXPECT_EQ(LOG_ENTRY_GET_TYPE(e), LOG_ENTRY_TYPE_MULTIBYTE) << "Invalid write log entry type";
+ EXPECT_EQ(LOG_ENTRY_MULTIBYTE_GET_LENGTH(e), 2) << "Invalid write log entry length";
+ ++write_iter;
+ }
+
+ // Keep track of the final address written, so we can verify the entire logical range was handled
+ final_address = address + offset;
+ }
+
+ // Verify the number of writes that occurred to the backing store
+ size_t backing_write_count = std::distance(inst.log_begin(), inst.log_end());
+ EXPECT_EQ(backing_write_count, expected) << "Invalid write count at address " << address;
+
+ // Verify the data is what we expected
+ std::array<std::uint8_t, WEAR_LEVELING_LOGICAL_SIZE> readback;
+ EXPECT_EQ(wear_leveling_read(0, readback.data(), WEAR_LEVELING_LOGICAL_SIZE), WEAR_LEVELING_SUCCESS) << "Failed to read back the saved data";
+ EXPECT_TRUE(memcmp(readback.data(), verify_data.data(), WEAR_LEVELING_LOGICAL_SIZE) == 0) << "Readback for address " << address << " did not match";
+
+ // Re-init and re-read, testing the reload capability
+ EXPECT_NE(wear_leveling_init(), WEAR_LEVELING_FAILED) << "Re-initialisation failed";
+ EXPECT_EQ(wear_leveling_read(0, readback.data(), WEAR_LEVELING_LOGICAL_SIZE), WEAR_LEVELING_SUCCESS) << "Failed to read back the saved data";
+ EXPECT_TRUE(memcmp(readback.data(), verify_data.data(), WEAR_LEVELING_LOGICAL_SIZE) == 0) << "Readback for address " << address << " did not match";
+ }
+
+ // Verify the full range of the logical area got written
+ EXPECT_EQ(final_address, WEAR_LEVELING_LOGICAL_SIZE - 3) << "Invalid final write address";
+}
+
+/**
+ * This test verifies readback after playback of the write log, simulating power loss and reboot.
+ */
+TEST_F(WearLeveling2ByteOptimizedWrites, PlaybackReadbackOptimized64_Success) {
+ auto& inst = MockBackingStore::Instance();
+ auto logstart = inst.storage_begin() + (WEAR_LEVELING_LOGICAL_SIZE / sizeof(backing_store_int_t));
+
+ // Invalid FNV1a_64 hash
+ (logstart + 0)->set(0);
+ (logstart + 1)->set(0);
+ (logstart + 2)->set(0);
+ (logstart + 3)->set(0);
+
+ // Set up a 1-byte logical write of 0x11 at logical offset 0x01
+ auto entry0 = LOG_ENTRY_MAKE_OPTIMIZED_64(0x01, 0x11);
+ (logstart + 4)->set(~entry0.raw16[0]); // start at offset 4 to skip FNV1a_64 result
+
+ wear_leveling_init();
+ uint8_t tmp;
+
+ wear_leveling_read(0x01, &tmp, sizeof(tmp));
+ EXPECT_EQ(tmp, 0x11) << "Failed to read back the seeded data";
+}
+
+/**
+ * This test verifies readback after playback of the write log, simulating power loss and reboot.
+ */
+TEST_F(WearLeveling2ByteOptimizedWrites, PlaybackReadbackWord01_Success) {
+ auto& inst = MockBackingStore::Instance();
+ auto logstart = inst.storage_begin() + (WEAR_LEVELING_LOGICAL_SIZE / sizeof(backing_store_int_t));
+
+ // Invalid FNV1a_64 hash
+ (logstart + 0)->set(0);
+ (logstart + 1)->set(0);
+ (logstart + 2)->set(0);
+ (logstart + 3)->set(0);
+
+ // Set up a 1-byte logical write of 1 at logical offset 0x02
+ auto entry0 = LOG_ENTRY_MAKE_WORD_01(0x02, 1);
+ (logstart + 4)->set(~entry0.raw16[0]); // start at offset 4 to skip FNV1a_64 result
+
+ wear_leveling_init();
+ uint8_t tmp;
+
+ wear_leveling_read(0x02, &tmp, sizeof(tmp));
+ EXPECT_EQ(tmp, 1) << "Failed to read back the seeded data";
+}
diff --git a/quantum/wear_leveling/tests/wear_leveling_4byte.cpp b/quantum/wear_leveling/tests/wear_leveling_4byte.cpp
new file mode 100644
index 0000000000..54482c5fe7
--- /dev/null
+++ b/quantum/wear_leveling/tests/wear_leveling_4byte.cpp
@@ -0,0 +1,193 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include <numeric>
+#include "gtest/gtest.h"
+#include "gmock/gmock.h"
+#include "backing_mocks.hpp"
+
+class WearLeveling4Byte : public ::testing::Test {
+ protected:
+ void SetUp() override {
+ MockBackingStore::Instance().reset_instance();
+ wear_leveling_init();
+ }
+};
+
+static std::array<std::uint8_t, WEAR_LEVELING_LOGICAL_SIZE> verify_data;
+
+static wear_leveling_status_t test_write(const uint32_t address, const void* value, size_t length) {
+ memcpy(&verify_data[address], value, length);
+ return wear_leveling_write(address, value, length);
+}
+
+/**
+ * This test verifies that the first write after initialisation occurs after the FNV1a_64 hash location.
+ */
+TEST_F(WearLeveling4Byte, FirstWriteOccursAfterHash) {
+ auto& inst = MockBackingStore::Instance();
+ uint8_t test_value = 0x15;
+ test_write(0x02, &test_value, sizeof(test_value));
+ EXPECT_EQ(inst.log_begin()->address, WEAR_LEVELING_LOGICAL_SIZE + 8) << "Invalid first write address.";
+}
+
+/**
+ * This test verifies that the first write after initialisation occurs after the FNV1a_64 hash location, after an erase has occurred.
+ */
+TEST_F(WearLeveling4Byte, FirstWriteOccursAfterHash_AfterErase) {
+ auto& inst = MockBackingStore::Instance();
+ uint8_t test_value = 0x15;
+ wear_leveling_erase();
+ test_write(0x02, &test_value, sizeof(test_value));
+ EXPECT_EQ((inst.log_begin() + 1)->address, WEAR_LEVELING_LOGICAL_SIZE + 8) << "Invalid first write address.";
+}
+
+/**
+ * This test ensures the correct number of backing store writes occurs with a multibyte write, given the input buffer size.
+ */
+TEST_F(WearLeveling4Byte, MultibyteBackingStoreWriteCounts) {
+ auto& inst = MockBackingStore::Instance();
+
+ for (std::size_t length = 1; length <= 5; ++length) {
+ // Clear things out
+ std::fill(verify_data.begin(), verify_data.end(), 0);
+ inst.reset_instance();
+ wear_leveling_init();
+
+ // Generate a test block of data
+ std::vector<std::uint8_t> testvalue(length);
+ std::iota(testvalue.begin(), testvalue.end(), 0x20);
+
+ // Write the data
+ EXPECT_EQ(test_write(0, testvalue.data(), testvalue.size()), WEAR_LEVELING_SUCCESS) << "Write failed with incorrect status";
+
+ std::size_t expected;
+ if (length > 1) {
+ expected = 2;
+ } else {
+ expected = 1;
+ }
+
+ // Check that we got the expected number of write log entries
+ EXPECT_EQ(std::distance(inst.log_begin(), inst.log_end()), expected);
+ }
+}
+
+/**
+ * This test forces consolidation by writing enough to the write log that it overflows, consolidating the data into the
+ * base logical area.
+ */
+TEST_F(WearLeveling4Byte, ConsolidationOverflow) {
+ auto& inst = MockBackingStore::Instance();
+
+ // Generate a test block of data
+ std::array<std::uint8_t, WEAR_LEVELING_LOGICAL_SIZE> testvalue;
+
+ // Write the data
+ std::iota(testvalue.begin(), testvalue.end(), 0x20);
+ EXPECT_EQ(test_write(0, testvalue.data(), testvalue.size()), WEAR_LEVELING_CONSOLIDATED) << "Write returned incorrect status";
+ uint8_t dummy = 0x40;
+ EXPECT_EQ(test_write(0x04, &dummy, sizeof(dummy)), WEAR_LEVELING_SUCCESS) << "Write returned incorrect status";
+
+ // Expected log:
+ // [0,1]: multibyte, 5 bytes, backing address 0x18, logical address 0x00
+ // [2,3]: multibyte, 5 bytes, backing address 0x20, logical address 0x05
+ // [4,5]: multibyte, 5 bytes, backing address 0x28, logical address 0x0A, triggers consolidation
+ // [6]: erase
+ // [7,8]: consolidated data, backing address 0x00, logical address 0x00
+ // [9,10]: consolidated data, backing address 0x08, logical address 0x08
+ // [11,12]: FNV1a_64 result, backing address 0x10
+ // [13]: multibyte, 1 byte, backing address 0x18, logical address 0x04
+ EXPECT_EQ(std::distance(inst.log_begin(), inst.log_end()), 14);
+
+ // Verify the backing store writes for the write log
+ std::size_t index;
+ write_log_entry_t e;
+ for (index = 0; index < 6; ++index) {
+ auto write_iter = inst.log_begin() + index;
+ EXPECT_EQ(write_iter->address, WEAR_LEVELING_LOGICAL_SIZE + 8 + (index * BACKING_STORE_WRITE_SIZE)) << "Invalid write log address";
+
+ // If this is the backing store write that contains the metadata, verify it
+ if (index % 2 == 0) {
+ write_log_entry_t e;
+ e.raw64 = write_iter->value;
+ EXPECT_EQ(LOG_ENTRY_GET_TYPE(e), LOG_ENTRY_TYPE_MULTIBYTE) << "Invalid write log entry type";
+ }
+ }
+
+ // Verify the backing store erase
+ {
+ index = 6;
+ auto write_iter = inst.log_begin() + index;
+ e.raw64 = write_iter->value;
+ EXPECT_TRUE(write_iter->erased) << "Backing store erase did not occur as required";
+ }
+
+ // Verify the backing store writes for consolidation
+ for (index = 7; index < 11; ++index) {
+ auto write_iter = inst.log_begin() + index;
+ EXPECT_EQ(write_iter->address, (index - 7) * BACKING_STORE_WRITE_SIZE) << "Invalid write log entry address";
+ }
+
+ // Verify the FNV1a_64 write
+ {
+ EXPECT_EQ((inst.log_begin() + 11)->address, WEAR_LEVELING_LOGICAL_SIZE) << "Invalid write log address";
+ e.raw32[0] = (inst.log_begin() + 11)->value;
+ e.raw32[1] = (inst.log_begin() + 12)->value;
+ EXPECT_EQ(e.raw64, fnv_64a_buf(testvalue.data(), testvalue.size(), FNV1A_64_INIT)) << "Invalid checksum"; // Note that checksum is based on testvalue, as we overwrote one byte and need to consult the consolidated data, not the current
+ }
+
+ // Verify the final write
+ EXPECT_EQ((inst.log_begin() + 13)->address, WEAR_LEVELING_LOGICAL_SIZE + 8) << "Invalid write log address";
+
+ // Verify the data is what we expected
+ std::array<std::uint8_t, WEAR_LEVELING_LOGICAL_SIZE> readback;
+ EXPECT_EQ(wear_leveling_read(0, readback.data(), WEAR_LEVELING_LOGICAL_SIZE), WEAR_LEVELING_SUCCESS) << "Failed to read back the saved data";
+ EXPECT_TRUE(memcmp(readback.data(), verify_data.data(), WEAR_LEVELING_LOGICAL_SIZE) == 0) << "Readback did not match";
+
+ // Re-init and re-read, verifying the reload capability
+ EXPECT_NE(wear_leveling_init(), WEAR_LEVELING_FAILED) << "Re-initialisation failed";
+ EXPECT_EQ(wear_leveling_read(0, readback.data(), WEAR_LEVELING_LOGICAL_SIZE), WEAR_LEVELING_SUCCESS) << "Failed to read back the saved data";
+ EXPECT_TRUE(memcmp(readback.data(), verify_data.data(), WEAR_LEVELING_LOGICAL_SIZE) == 0) << "Readback did not match";
+}
+
+/**
+ * This test verifies multibyte readback gets canceled with an out-of-bounds address.
+ */
+TEST_F(WearLeveling4Byte, PlaybackReadbackMultibyte_OOB) {
+ auto& inst = MockBackingStore::Instance();
+ auto logstart = inst.storage_begin() + (WEAR_LEVELING_LOGICAL_SIZE / sizeof(backing_store_int_t));
+
+ // Invalid FNV1a_64 hash
+ (logstart + 0)->set(0);
+ (logstart + 1)->set(0);
+
+ // Set up a 2-byte logical write of [0x11,0x12] at logical offset 0x01
+ auto entry0 = LOG_ENTRY_MAKE_MULTIBYTE(0x01, 2);
+ entry0.raw8[3] = 0x11;
+ entry0.raw8[4] = 0x12;
+ (logstart + 2)->set(~entry0.raw32[0]);
+ (logstart + 3)->set(~entry0.raw32[1]);
+
+ // Set up a 2-byte logical write of [0x13,0x14] at logical offset 0x1000 (out of bounds)
+ auto entry1 = LOG_ENTRY_MAKE_MULTIBYTE(0x1000, 2);
+ entry1.raw8[3] = 0x13;
+ entry1.raw8[4] = 0x14;
+ (logstart + 4)->set(~entry1.raw32[0]);
+ (logstart + 5)->set(~entry1.raw32[1]);
+
+ // Set up a 2-byte logical write of [0x15,0x16] at logical offset 0x10
+ auto entry2 = LOG_ENTRY_MAKE_MULTIBYTE(0x01, 2);
+ entry2.raw8[3] = 0x15;
+ entry2.raw8[4] = 0x16;
+ (logstart + 6)->set(~entry2.raw32[0]);
+ (logstart + 7)->set(~entry2.raw32[1]);
+
+ EXPECT_EQ(inst.erasure_count(), 0) << "Invalid initial erase count";
+ EXPECT_EQ(wear_leveling_init(), WEAR_LEVELING_CONSOLIDATED) << "Readback should have failed and triggered consolidation";
+ EXPECT_EQ(inst.erasure_count(), 1) << "Invalid final erase count";
+
+ uint8_t buf[2];
+ wear_leveling_read(0x01, buf, sizeof(buf));
+ EXPECT_EQ(buf[0], 0x11) << "Readback should have maintained the previous pre-failure value from the write log";
+ EXPECT_EQ(buf[1], 0x12) << "Readback should have maintained the previous pre-failure value from the write log";
+}
diff --git a/quantum/wear_leveling/tests/wear_leveling_8byte.cpp b/quantum/wear_leveling/tests/wear_leveling_8byte.cpp
new file mode 100644
index 0000000000..c27c21d034
--- /dev/null
+++ b/quantum/wear_leveling/tests/wear_leveling_8byte.cpp
@@ -0,0 +1,178 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include <numeric>
+#include "gtest/gtest.h"
+#include "gmock/gmock.h"
+#include "backing_mocks.hpp"
+
+class WearLeveling8Byte : public ::testing::Test {
+ protected:
+ void SetUp() override {
+ MockBackingStore::Instance().reset_instance();
+ wear_leveling_init();
+ }
+};
+
+static std::array<std::uint8_t, WEAR_LEVELING_LOGICAL_SIZE> verify_data;
+
+static wear_leveling_status_t test_write(const uint32_t address, const void* value, size_t length) {
+ memcpy(&verify_data[address], value, length);
+ return wear_leveling_write(address, value, length);
+}
+
+/**
+ * This test verifies that the first write after initialisation occurs after the FNV1a_64 hash location.
+ */
+TEST_F(WearLeveling8Byte, FirstWriteOccursAfterHash) {
+ auto& inst = MockBackingStore::Instance();
+ uint8_t test_value = 0x15;
+ test_write(0x02, &test_value, sizeof(test_value));
+ EXPECT_EQ(inst.log_begin()->address, WEAR_LEVELING_LOGICAL_SIZE + 8) << "Invalid first write address.";
+}
+
+/**
+ * This test verifies that the first write after initialisation occurs after the FNV1a_64 hash location, after an erase has occurred.
+ */
+TEST_F(WearLeveling8Byte, FirstWriteOccursAfterHash_AfterErase) {
+ auto& inst = MockBackingStore::Instance();
+ uint8_t test_value = 0x15;
+ wear_leveling_erase();
+ test_write(0x02, &test_value, sizeof(test_value));
+ EXPECT_EQ((inst.log_begin() + 1)->address, WEAR_LEVELING_LOGICAL_SIZE + 8) << "Invalid first write address.";
+}
+
+/**
+ * This test ensures the correct number of backing store writes occurs with a multibyte write, given the input buffer size.
+ */
+TEST_F(WearLeveling8Byte, MultibyteBackingStoreWriteCounts) {
+ auto& inst = MockBackingStore::Instance();
+
+ for (std::size_t length = 1; length <= 5; ++length) {
+ // Clear things out
+ std::fill(verify_data.begin(), verify_data.end(), 0);
+ inst.reset_instance();
+ wear_leveling_init();
+
+ // Generate a test block of data
+ std::vector<std::uint8_t> testvalue(length);
+ std::iota(testvalue.begin(), testvalue.end(), 0x20);
+
+ // Write the data
+ EXPECT_EQ(test_write(0, testvalue.data(), testvalue.size()), WEAR_LEVELING_SUCCESS) << "Write failed with incorrect status";
+
+ // Check that we got the expected number of write log entries
+ EXPECT_EQ(std::distance(inst.log_begin(), inst.log_end()), 1);
+ }
+}
+
+/**
+ * This test forces consolidation by writing enough to the write log that it overflows, consolidating the data into the
+ * base logical area.
+ */
+TEST_F(WearLeveling8Byte, ConsolidationOverflow) {
+ auto& inst = MockBackingStore::Instance();
+
+ // Generate a test block of data
+ std::array<std::uint8_t, WEAR_LEVELING_LOGICAL_SIZE> testvalue;
+
+ // Write the data
+ std::iota(testvalue.begin(), testvalue.end(), 0x20);
+ EXPECT_EQ(test_write(0, testvalue.data(), testvalue.size()), WEAR_LEVELING_CONSOLIDATED) << "Write returned incorrect status";
+ uint8_t dummy = 0x40;
+ EXPECT_EQ(test_write(0x04, &dummy, sizeof(dummy)), WEAR_LEVELING_SUCCESS) << "Write returned incorrect status";
+
+ // Expected log:
+ // [0]: multibyte, 5 bytes, backing address 0x18, logical address 0x00
+ // [1]: multibyte, 5 bytes, backing address 0x20, logical address 0x05
+ // [2]: multibyte, 5 bytes, backing address 0x28, logical address 0x0A, triggers consolidation
+ // [3]: erase
+ // [4]: consolidated data, backing address 0x00, logical address 0x00
+ // [5]: consolidated data, backing address 0x08, logical address 0x08
+ // [6]: FNV1a_64 result, backing address 0x10
+ // [7]: multibyte, 1 byte, backing address 0x18, logical address 0x04
+ EXPECT_EQ(std::distance(inst.log_begin(), inst.log_end()), 8);
+
+ // Verify the backing store writes for the write log
+ std::size_t index;
+ write_log_entry_t e;
+ for (index = 0; index < 3; ++index) {
+ auto write_iter = inst.log_begin() + index;
+ EXPECT_EQ(write_iter->address, WEAR_LEVELING_LOGICAL_SIZE + 8 + (index * BACKING_STORE_WRITE_SIZE)) << "Invalid write log address";
+
+ write_log_entry_t e;
+ e.raw64 = write_iter->value;
+ EXPECT_EQ(LOG_ENTRY_GET_TYPE(e), LOG_ENTRY_TYPE_MULTIBYTE) << "Invalid write log entry type";
+ }
+
+ // Verify the backing store erase
+ {
+ index = 3;
+ auto write_iter = inst.log_begin() + index;
+ e.raw64 = write_iter->value;
+ EXPECT_TRUE(write_iter->erased) << "Backing store erase did not occur as required";
+ }
+
+ // Verify the backing store writes for consolidation
+ for (index = 4; index < 6; ++index) {
+ auto write_iter = inst.log_begin() + index;
+ EXPECT_EQ(write_iter->address, (index - 4) * BACKING_STORE_WRITE_SIZE) << "Invalid write log entry address";
+ }
+
+ // Verify the FNV1a_64 write
+ {
+ EXPECT_EQ((inst.log_begin() + 6)->address, WEAR_LEVELING_LOGICAL_SIZE) << "Invalid write log address";
+ e.raw64 = (inst.log_begin() + 6)->value;
+ EXPECT_EQ(e.raw64, fnv_64a_buf(testvalue.data(), testvalue.size(), FNV1A_64_INIT)) << "Invalid checksum"; // Note that checksum is based on testvalue, as we overwrote one byte and need to consult the consolidated data, not the current
+ }
+
+ // Verify the final write
+ EXPECT_EQ((inst.log_begin() + 7)->address, WEAR_LEVELING_LOGICAL_SIZE + 8) << "Invalid write log address";
+
+ // Verify the data is what we expected
+ std::array<std::uint8_t, WEAR_LEVELING_LOGICAL_SIZE> readback;
+ EXPECT_EQ(wear_leveling_read(0, readback.data(), WEAR_LEVELING_LOGICAL_SIZE), WEAR_LEVELING_SUCCESS) << "Failed to read back the saved data";
+ EXPECT_TRUE(memcmp(readback.data(), verify_data.data(), WEAR_LEVELING_LOGICAL_SIZE) == 0) << "Readback did not match";
+
+ // Re-init and re-read, verifying the reload capability
+ EXPECT_NE(wear_leveling_init(), WEAR_LEVELING_FAILED) << "Re-initialisation failed";
+ EXPECT_EQ(wear_leveling_read(0, readback.data(), WEAR_LEVELING_LOGICAL_SIZE), WEAR_LEVELING_SUCCESS) << "Failed to read back the saved data";
+ EXPECT_TRUE(memcmp(readback.data(), verify_data.data(), WEAR_LEVELING_LOGICAL_SIZE) == 0) << "Readback did not match";
+}
+
+/**
+ * This test verifies multibyte readback gets canceled with an out-of-bounds address.
+ */
+TEST_F(WearLeveling8Byte, PlaybackReadbackMultibyte_OOB) {
+ auto& inst = MockBackingStore::Instance();
+ auto logstart = inst.storage_begin() + (WEAR_LEVELING_LOGICAL_SIZE / sizeof(backing_store_int_t));
+
+ // Invalid FNV1a_64 hash
+ (logstart + 0)->set(0);
+
+ // Set up a 2-byte logical write of [0x11,0x12] at logical offset 0x01
+ auto entry0 = LOG_ENTRY_MAKE_MULTIBYTE(0x01, 2);
+ entry0.raw8[3] = 0x11;
+ entry0.raw8[4] = 0x12;
+ (logstart + 1)->set(~entry0.raw64);
+
+ // Set up a 2-byte logical write of [0x13,0x14] at logical offset 0x1000 (out of bounds)
+ auto entry1 = LOG_ENTRY_MAKE_MULTIBYTE(0x1000, 2);
+ entry1.raw8[3] = 0x13;
+ entry1.raw8[4] = 0x14;
+ (logstart + 2)->set(~entry1.raw64);
+
+ // Set up a 2-byte logical write of [0x15,0x16] at logical offset 0x10
+ auto entry2 = LOG_ENTRY_MAKE_MULTIBYTE(0x01, 2);
+ entry2.raw8[3] = 0x15;
+ entry2.raw8[4] = 0x16;
+ (logstart + 3)->set(~entry2.raw64);
+
+ EXPECT_EQ(inst.erasure_count(), 0) << "Invalid initial erase count";
+ EXPECT_EQ(wear_leveling_init(), WEAR_LEVELING_CONSOLIDATED) << "Readback should have failed and triggered consolidation";
+ EXPECT_EQ(inst.erasure_count(), 1) << "Invalid final erase count";
+
+ uint8_t buf[2];
+ wear_leveling_read(0x01, buf, sizeof(buf));
+ EXPECT_EQ(buf[0], 0x11) << "Readback should have maintained the previous pre-failure value from the write log";
+ EXPECT_EQ(buf[1], 0x12) << "Readback should have maintained the previous pre-failure value from the write log";
+}
diff --git a/quantum/wear_leveling/tests/wear_leveling_general.cpp b/quantum/wear_leveling/tests/wear_leveling_general.cpp
new file mode 100644
index 0000000000..76a4bf7bf3
--- /dev/null
+++ b/quantum/wear_leveling/tests/wear_leveling_general.cpp
@@ -0,0 +1,204 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include <numeric>
+#include "gtest/gtest.h"
+#include "gmock/gmock.h"
+#include "backing_mocks.hpp"
+
+class WearLevelingGeneral : public ::testing::Test {
+ protected:
+ void SetUp() override {
+ MockBackingStore::Instance().reset_instance();
+ wear_leveling_init();
+ }
+};
+
+/**
+ * This test verifies that even if there is consolidated data present, if the checksum doesn't match then the cache is zero'd after reading the consolidated area, but before write log is played back.
+ */
+TEST_F(WearLevelingGeneral, InvalidChecksum_ConsolidatedDataIgnored) {
+ auto& inst = MockBackingStore::Instance();
+ auto logstart = inst.storage_begin() + (WEAR_LEVELING_LOGICAL_SIZE / sizeof(backing_store_int_t));
+
+ // Generate a test block of data
+ std::array<std::uint8_t, WEAR_LEVELING_LOGICAL_SIZE> testvalue;
+ std::iota(testvalue.begin(), testvalue.end(), 0x20);
+
+ // Write the data
+ EXPECT_EQ(wear_leveling_write(0, testvalue.data(), testvalue.size()), WEAR_LEVELING_CONSOLIDATED) << "Write returned incorrect status";
+
+ // Invalidate the checksum
+ (logstart + 0)->erase();
+ (logstart + 1)->erase();
+ (logstart + 2)->erase();
+ (logstart + 3)->erase();
+
+ // Set up a 1-byte logical write of [0x11] at logical offset 0x01
+ auto entry0 = LOG_ENTRY_MAKE_OPTIMIZED_64(0x01, 0x11);
+ (logstart + 4)->set(~entry0.raw16[0]);
+
+ // Re-init
+ EXPECT_EQ(wear_leveling_init(), WEAR_LEVELING_SUCCESS) << "Init returned incorrect status";
+ EXPECT_EQ(wear_leveling_read(0, testvalue.data(), testvalue.size()), WEAR_LEVELING_SUCCESS) << "Failed to read";
+ for (int i = 0; i < WEAR_LEVELING_LOGICAL_SIZE; ++i) {
+ EXPECT_EQ(testvalue[i], i == 0x01 ? 0x11 : 0x00) << "Invalid readback";
+ }
+}
+
+/**
+ * This test verifies that writing the same data multiple times does not result in subsequent writes to the backing store.
+ */
+TEST_F(WearLevelingGeneral, SameValue_SingleBackingWrite) {
+ auto& inst = MockBackingStore::Instance();
+
+ uint8_t test_val = 0x14;
+ EXPECT_EQ(wear_leveling_write(0x02, &test_val, sizeof(test_val)), WEAR_LEVELING_SUCCESS) << "First overall write operation should have succeeded";
+
+ uint64_t invoke_count = inst.unlock_invoke_count();
+ uint64_t erase_count = inst.erase_invoke_count();
+ uint64_t write_count = inst.write_invoke_count();
+ uint64_t lock_count = inst.lock_invoke_count();
+
+ for (int i = 0; i < 10; ++i) {
+ EXPECT_EQ(wear_leveling_write(0x02, &test_val, sizeof(test_val)), WEAR_LEVELING_SUCCESS) << "Subsequent overall write operation should have succeeded";
+
+ EXPECT_EQ(inst.unlock_invoke_count(), invoke_count) << "Unlock count should match";
+ EXPECT_EQ(inst.erase_invoke_count(), erase_count) << "Erase count should match";
+ EXPECT_EQ(inst.write_invoke_count(), write_count) << "Write count should match";
+ EXPECT_EQ(inst.lock_invoke_count(), lock_count) << "Lock count should match";
+ }
+}
+
+/**
+ * This test verifies that no other invocations occur if `backing_store_init()` fails.
+ */
+TEST_F(WearLevelingGeneral, InitFailure) {
+ auto& inst = MockBackingStore::Instance();
+ inst.reset_instance(); // make sure the counters are all zero
+ inst.set_init_callback([](std::uint64_t count) { return false; });
+
+ EXPECT_EQ(inst.erasure_count(), 0) << "Invalid initial erase count";
+ EXPECT_EQ(wear_leveling_init(), WEAR_LEVELING_FAILED) << "Init should have failed";
+ EXPECT_EQ(inst.erasure_count(), 0) << "Invalid final erase count";
+
+ EXPECT_EQ(inst.init_invoke_count(), 1) << "Init should have been invoked once";
+ EXPECT_EQ(inst.unlock_invoke_count(), 0) << "Unlock should not have been invoked";
+ EXPECT_EQ(inst.erase_invoke_count(), 0) << "Erase should not have been invoked";
+ EXPECT_EQ(inst.write_invoke_count(), 0) << "Write should not have been invoked";
+ EXPECT_EQ(inst.lock_invoke_count(), 0) << "Lock should not have been invoked";
+}
+
+/**
+ * This test verifies that no invocations occur if the supplied address is out of range while writing.
+ */
+TEST_F(WearLevelingGeneral, WriteFailure_OOB) {
+ auto& inst = MockBackingStore::Instance();
+
+ uint8_t test_val = 0x14;
+ EXPECT_EQ(wear_leveling_write(0x21349830, &test_val, sizeof(test_val)), WEAR_LEVELING_FAILED) << "Overall write operation should have failed";
+
+ EXPECT_EQ(inst.unlock_invoke_count(), 0) << "Unlock should not have been invoked";
+ EXPECT_EQ(inst.erase_invoke_count(), 0) << "Erase should not have been invoked";
+ EXPECT_EQ(inst.write_invoke_count(), 0) << "Write should not have been invoked";
+ EXPECT_EQ(inst.lock_invoke_count(), 0) << "Lock should not have been invoked";
+}
+
+/**
+ * This test verifies that a single write occurs if the supplied address and data length hits the edge of the logical area.
+ */
+TEST_F(WearLevelingGeneral, WriteSuccess_BoundaryOK) {
+ auto& inst = MockBackingStore::Instance();
+
+ uint16_t test_val = 0x14;
+ EXPECT_EQ(wear_leveling_write(WEAR_LEVELING_LOGICAL_SIZE - sizeof(test_val), &test_val, sizeof(test_val)), WEAR_LEVELING_SUCCESS) << "Overall write operation should have succeeded";
+
+ EXPECT_EQ(inst.unlock_invoke_count(), 1) << "Unlock should have been invoked once";
+ EXPECT_EQ(inst.erase_invoke_count(), 0) << "Erase should not have been invoked";
+ EXPECT_EQ(inst.write_invoke_count(), 2) << "Write should have been invoked twice";
+ EXPECT_EQ(inst.lock_invoke_count(), 1) << "Lock should have been invoked once";
+}
+
+/**
+ * This test verifies that no invocations occur if the supplied address and length would generate writes outside the logical range.
+ */
+TEST_F(WearLevelingGeneral, WriteFailure_BoundaryOverflow) {
+ auto& inst = MockBackingStore::Instance();
+
+ uint16_t test_val = 0x14;
+ EXPECT_EQ(wear_leveling_write(WEAR_LEVELING_LOGICAL_SIZE - sizeof(test_val) + 1, &test_val, sizeof(test_val)), WEAR_LEVELING_FAILED) << "Overall write operation should have failed";
+
+ EXPECT_EQ(inst.unlock_invoke_count(), 0) << "Unlock should not have been invoked";
+ EXPECT_EQ(inst.erase_invoke_count(), 0) << "Erase should not have been invoked";
+ EXPECT_EQ(inst.write_invoke_count(), 0) << "Write should not have been invoked";
+ EXPECT_EQ(inst.lock_invoke_count(), 0) << "Lock should not have been invoked";
+}
+
+/**
+ * This test verifies that no invocations occur if the supplied address is out of range while reading.
+ */
+TEST_F(WearLevelingGeneral, ReadFailure_OOB) {
+ auto& inst = MockBackingStore::Instance();
+
+ uint8_t test_val = 0;
+ EXPECT_EQ(wear_leveling_read(0x21349830, &test_val, sizeof(test_val)), WEAR_LEVELING_FAILED) << "Overall read operation should have failed";
+
+ EXPECT_EQ(inst.unlock_invoke_count(), 0) << "Unlock should not have been invoked";
+ EXPECT_EQ(inst.erase_invoke_count(), 0) << "Erase should not have been invoked";
+ EXPECT_EQ(inst.write_invoke_count(), 0) << "Write should not have been invoked";
+ EXPECT_EQ(inst.lock_invoke_count(), 0) << "Lock should not have been invoked";
+}
+
+/**
+ * This test verifies that no write invocations occur if `backing_store_unlock()` fails.
+ */
+TEST_F(WearLevelingGeneral, UnlockFailure_NoWrite) {
+ auto& inst = MockBackingStore::Instance();
+ inst.set_unlock_callback([](std::uint64_t count) { return false; });
+
+ uint8_t test_val = 0x14;
+ EXPECT_EQ(wear_leveling_write(0x04, &test_val, sizeof(test_val)), WEAR_LEVELING_FAILED) << "Overall write operation should have failed";
+
+ EXPECT_EQ(inst.unlock_invoke_count(), 1) << "Unlock should have been invoked once";
+ EXPECT_EQ(inst.erase_invoke_count(), 0) << "Erase should not have been invoked";
+ EXPECT_EQ(inst.write_invoke_count(), 0) << "Write should not have been invoked";
+ EXPECT_EQ(inst.lock_invoke_count(), 0) << "Lock should not have been invoked";
+
+ test_val = 0;
+ wear_leveling_read(0x04, &test_val, sizeof(test_val));
+ EXPECT_EQ(test_val, 0x14) << "Readback should come from cache regardless of unlock failure";
+}
+
+/**
+ * This test verifies that no erase invocations occur if `backing_store_unlock()` fails.
+ */
+TEST_F(WearLevelingGeneral, UnlockFailure_NoErase) {
+ auto& inst = MockBackingStore::Instance();
+ inst.set_unlock_callback([](std::uint64_t count) { return false; });
+
+ EXPECT_EQ(wear_leveling_erase(), WEAR_LEVELING_FAILED) << "Overall erase operation should have failed";
+
+ EXPECT_EQ(inst.unlock_invoke_count(), 1) << "Unlock should have been invoked once";
+ EXPECT_EQ(inst.erase_invoke_count(), 0) << "Erase should not have been invoked";
+ EXPECT_EQ(inst.write_invoke_count(), 0) << "Write should not have been invoked";
+ EXPECT_EQ(inst.lock_invoke_count(), 0) << "Lock should not have been invoked";
+}
+
+/**
+ * This test verifies that only one write invocation occurs if `backing_store_write()` fails.
+ */
+TEST_F(WearLevelingGeneral, WriteFailure_NoSubsequentWrites) {
+ auto& inst = MockBackingStore::Instance();
+ inst.set_write_callback([](std::uint64_t count, std::uint32_t address) { return false; });
+
+ uint8_t test_val = 0x14;
+ EXPECT_EQ(wear_leveling_write(0x04, &test_val, sizeof(test_val)), WEAR_LEVELING_FAILED) << "Overall write operation should have failed";
+
+ EXPECT_EQ(inst.unlock_invoke_count(), 1) << "Unlock should have been invoked once";
+ EXPECT_EQ(inst.erase_invoke_count(), 0) << "Erase should not have been invoked";
+ EXPECT_EQ(inst.write_invoke_count(), 1) << "Write should have been invoked once";
+ EXPECT_EQ(inst.lock_invoke_count(), 1) << "Lock should have been invoked once";
+
+ test_val = 0;
+ wear_leveling_read(0x04, &test_val, sizeof(test_val));
+ EXPECT_EQ(test_val, 0x14) << "Readback should come from cache regardless of unlock failure";
+}
diff --git a/quantum/wear_leveling/wear_leveling.c b/quantum/wear_leveling/wear_leveling.c
new file mode 100644
index 0000000000..429df45df5
--- /dev/null
+++ b/quantum/wear_leveling/wear_leveling.c
@@ -0,0 +1,768 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#include <stdbool.h>
+#include "fnv.h"
+#include "wear_leveling.h"
+#include "wear_leveling_internal.h"
+
+/*
+ This wear leveling algorithm is adapted from algorithms from previous
+ implementations in QMK, namely:
+ - Artur F. (http://engsta.com/stm32-flash-memory-eeprom-emulator/)
+ - Yiancar -- QMK's base implementation for STM32F303
+ - Ilya Zhuravlev -- initial wear leveling algorithm
+ - Don Kjer -- increased flash density algorithm
+ - Nick Brassel (@tzarc) -- decoupled for use on other peripherals
+
+ At this layer, it is assumed that any reads/writes from the backing store
+ have a "reset state" after erasure of zero.
+ It is up to the backing store to perform translation of values, such as
+ taking the complement in order to deal with flash memory's reset value.
+
+ Terminology:
+
+ - Backing store: this is the storage area used by the wear leveling
+ algorithm.
+
+ - Backing size: this is the amount of storage provided by the backing
+ store for use by the wear leveling algorithm.
+
+ - Backing write size: this is the minimum number of bytes the backing
+ store can write in a single operation.
+
+ - Logical data: this is the externally-visible "emulated EEPROM" that
+ external subsystems "see" when performing reads/writes.
+
+ - Logical size: this is the amount of storage available for use
+ externally. Effectively, the "size of the EEPROM".
+
+ - Write log: this is a section of the backing store used to keep track
+ of modifications without overwriting existing data. This log is
+ "played back" on startup such that any subsequent reads are capable
+ of returning the latest data.
+
+ - Consolidated data: this is a section of the backing store reserved for
+ use for the latest copy of logical data. This is only ever written
+ when the write log is full -- the latest values for the logical data
+ are written here and the write log is cleared.
+
+ Configurables:
+
+ - BACKING_STORE_WRITE_SIZE: The number of bytes requires for a write
+ operation. This is defined by the capabilities of the backing store.
+
+ - WEAR_LEVELING_BACKING_SIZE: The number of bytes provided by the
+ backing store for use by the wear leveling algorithm. This is
+ defined by the capabilities of the backing store. This value must
+ also be at least twice the size of the logical size, as well as a
+ multiple of the logical size.
+
+ - WEAR_LEVELING_LOGICAL_SIZE: The number of bytes externally visible
+ to other subsystems performing reads/writes. This must be a multiple
+ of the write size.
+
+ General algorithm:
+
+ During initialization:
+ * The contents of the consolidated data section are read into cache.
+ * The contents of the write log are "played back" and update the
+ cache accordingly.
+
+ During reads:
+ * Logical data is served from the cache.
+
+ During writes:
+ * The cache is updated with the new data.
+ * A new write log entry is appended to the log.
+ * If the log's full, data is consolidated and the write log cleared.
+
+ Write log structure:
+
+ The first 8 bytes of the write log are a FNV1a_64 hash of the contents
+ of the consolidated data area, in an attempt to detect and guard against
+ any data corruption.
+
+ The write log follows the hash:
+
+ Given that the algorithm needs to cater for 2-, 4-, and 8-byte writes,
+ a variable-length write log entry is used such that the minimal amount
+ of storage is used based off the backing store write size.
+
+ Firstly, an empty log entry is expected to be all zeros. If the backing
+ store uses 0xFF for cleared bytes, it should return the complement, such
+ that this wear-leveling algorithm "receives" zeros.
+
+ For multi-byte writes, up to 8 bytes will be used for each log entry,
+ depending on the size of backing store writes:
+
+ â•” Multi-byte Log Entry (2, 4-byte) â•â•—
+ â•‘00XXXYYYâ•‘YYYYYYYYâ•‘YYYYYYYYâ•‘AAAAAAAAâ•‘
+ ║ └┬┘└┬┘║└──┬───┘║└──┬───┘║└──┬───┘║
+ â•‘ LenAddâ•‘ Addressâ•‘ Addressâ•‘Value[0]â•‘
+ â•šâ•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•
+ â•” Multi-byte Log Entry (2-byte) â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—
+ â•‘00XXXYYYâ•‘YYYYYYYYâ•‘YYYYYYYYâ•‘AAAAAAAAâ•‘BBBBBBBBâ•‘CCCCCCCCâ•‘
+ ║ └┬┘└┬┘║└──┬───┘║└──┬───┘║└──┬───┘║└──┬───┘║└──┬───┘║
+ â•‘ LenAddâ•‘ Addressâ•‘ Addressâ•‘Value[0]â•‘Value[1]â•‘Value[2]â•‘
+ â•šâ•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•
+ â•” Multi-byte Log Entry (2, 4, 8-byte) â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—
+ â•‘00XXXYYYâ•‘YYYYYYYYâ•‘YYYYYYYYâ•‘AAAAAAAAâ•‘BBBBBBBBâ•‘CCCCCCCCâ•‘DDDDDDDDâ•‘EEEEEEEEâ•‘
+ ║ └┬┘└┬┘║└──┬───┘║└──┬───┘║└──┬───┘║└──┬───┘║└──┬───┘║└──┬───┘║└──┬───┘║
+ â•‘ LenAddâ•‘ Addressâ•‘ Addressâ•‘Value[0]â•‘Value[1]â•‘Value[2]â•‘Value[3]â•‘Value[4]â•‘
+ â•šâ•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•
+
+ 19 bits are used for the address, which allows for a max logical size of
+ 512kB. Up to 5 bytes can be included in a single log entry.
+
+ For 2-byte backing store writes, the last two bytes are optional
+ depending on the length of data to be written. Accordingly, either 3
+ or 4 backing store write operations will occur.
+ For 4-byte backing store writes, either one or two write operations
+ occur, depending on the length.
+ For 8-byte backing store writes, one write operation occur.
+
+ 2-byte backing store optimizations:
+
+ For single byte writes, addresses between 0...63 are encoded in a single
+ backing store write operation. 4- and 8-byte backing stores do not have
+ this optimization as it does not minimize the number of bytes written.
+
+ â•” Byte-Entry â•â•â•â•â•—
+ â•‘01XXXXXXYYYYYYYYâ•‘
+ ║ └─┬──┘└──┬───┘║
+ â•‘ Address Value â•‘
+ â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ 0 <= Address < 0x40 (64)
+
+ A second optimization takes into account uint16_t writes of 0 or 1,
+ specifically catering for KC_NO and KC_TRANSPARENT in the dynamic keymap
+ subsystem. This is valid only for the first 16kB of logical data --
+ addresses outside this range will use the multi-byte encoding above.
+
+ â•” U16-Encoded 0 â•â•—
+ â•‘100XXXXXXXXXXXXXâ•‘
+ ║ │└─────┬─────┘║
+ ║ │Address >> 1 ║
+ ║ └── Value: 0 ║
+ â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ 0 <= Address <= 0x3FFE (16382)
+
+ â•” U16-Encoded 1 â•â•—
+ â•‘101XXXXXXXXXXXXXâ•‘
+ ║ │└─────┬─────┘║
+ ║ │Address >> 1 ║
+ ║ └── Value: 1 ║
+ â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ 0 <= Address <= 0x3FFE (16382) */
+
+/**
+ * Storage area for the wear-leveling cache.
+ */
+static struct __attribute__((__aligned__(BACKING_STORE_WRITE_SIZE))) {
+ __attribute__((__aligned__(BACKING_STORE_WRITE_SIZE))) uint8_t cache[(WEAR_LEVELING_LOGICAL_SIZE)];
+ uint32_t write_address;
+ bool unlocked;
+} wear_leveling;
+
+/**
+ * Locking helper: status
+ */
+typedef enum backing_store_lock_status_t { STATUS_FAILURE = 0, STATUS_SUCCESS, STATUS_UNCHANGED } backing_store_lock_status_t;
+
+/**
+ * Locking helper: unlock
+ */
+static inline backing_store_lock_status_t wear_leveling_unlock(void) {
+ if (wear_leveling.unlocked) {
+ return STATUS_UNCHANGED;
+ }
+ if (!backing_store_unlock()) {
+ return STATUS_FAILURE;
+ }
+ wear_leveling.unlocked = true;
+ return STATUS_SUCCESS;
+}
+
+/**
+ * Locking helper: lock
+ */
+static inline backing_store_lock_status_t wear_leveling_lock(void) {
+ if (!wear_leveling.unlocked) {
+ return STATUS_UNCHANGED;
+ }
+ if (!backing_store_lock()) {
+ return STATUS_FAILURE;
+ }
+ wear_leveling.unlocked = false;
+ return STATUS_SUCCESS;
+}
+
+/**
+ * Resets the cache, ensuring the write address is correctly initialised.
+ */
+static void wear_leveling_clear_cache(void) {
+ memset(wear_leveling.cache, 0, (WEAR_LEVELING_LOGICAL_SIZE));
+ wear_leveling.write_address = (WEAR_LEVELING_LOGICAL_SIZE) + 8; // +8 is due to the FNV1a_64 of the consolidated buffer
+}
+
+/**
+ * Reads the consolidated data from the backing store into the cache.
+ * Does not consider the write log.
+ */
+static wear_leveling_status_t wear_leveling_read_consolidated(void) {
+ wl_dprintf("Reading consolidated data\n");
+
+ wear_leveling_status_t status = WEAR_LEVELING_SUCCESS;
+ if (!backing_store_read_bulk(0, (backing_store_int_t *)wear_leveling.cache, sizeof(wear_leveling.cache) / sizeof(backing_store_int_t))) {
+ wl_dprintf("Failed to read from backing store\n");
+ status = WEAR_LEVELING_FAILED;
+ }
+
+ // Verify the FNV1a_64 result
+ if (status != WEAR_LEVELING_FAILED) {
+ uint64_t expected = fnv_64a_buf(wear_leveling.cache, (WEAR_LEVELING_LOGICAL_SIZE), FNV1A_64_INIT);
+ write_log_entry_t entry;
+ wl_dprintf("Reading checksum\n");
+#if BACKING_STORE_WRITE_SIZE == 2
+ backing_store_read_bulk((WEAR_LEVELING_LOGICAL_SIZE), entry.raw16, 4);
+#elif BACKING_STORE_WRITE_SIZE == 4
+ backing_store_read_bulk((WEAR_LEVELING_LOGICAL_SIZE), entry.raw32, 2);
+#elif BACKING_STORE_WRITE_SIZE == 8
+ backing_store_read((WEAR_LEVELING_LOGICAL_SIZE) + 0, &entry.raw64);
+#endif
+ // If we have a mismatch, clear the cache but do not flag a failure,
+ // which will cater for the completely clean MCU case.
+ if (entry.raw64 == expected) {
+ wl_dprintf("Checksum matches, consolidated data is correct\n");
+ } else {
+ wl_dprintf("Checksum mismatch, clearing cache\n");
+ wear_leveling_clear_cache();
+ }
+ }
+
+ // If we failed for any reason, then clear the cache
+ if (status == WEAR_LEVELING_FAILED) {
+ wear_leveling_clear_cache();
+ }
+
+ return status;
+}
+
+/**
+ * Writes the current cache to consolidated data at the beginning of the backing store.
+ * Does not clear the write log.
+ * Pre-condition: this is just after an erase, so we can write directly without reading.
+ */
+static wear_leveling_status_t wear_leveling_write_consolidated(void) {
+ wl_dprintf("Writing consolidated data\n");
+
+ backing_store_lock_status_t lock_status = wear_leveling_unlock();
+ wear_leveling_status_t status = WEAR_LEVELING_CONSOLIDATED;
+ if (!backing_store_write_bulk(0, (backing_store_int_t *)wear_leveling.cache, sizeof(wear_leveling.cache) / sizeof(backing_store_int_t))) {
+ wl_dprintf("Failed to write to backing store\n");
+ status = WEAR_LEVELING_FAILED;
+ }
+
+ if (status != WEAR_LEVELING_FAILED) {
+ // Write out the FNV1a_64 result of the consolidated data
+ write_log_entry_t entry;
+ entry.raw64 = fnv_64a_buf(wear_leveling.cache, (WEAR_LEVELING_LOGICAL_SIZE), FNV1A_64_INIT);
+ wl_dprintf("Writing checksum\n");
+ do {
+#if BACKING_STORE_WRITE_SIZE == 2
+ if (!backing_store_write_bulk((WEAR_LEVELING_LOGICAL_SIZE), entry.raw16, 4)) {
+ status = WEAR_LEVELING_FAILED;
+ break;
+ }
+#elif BACKING_STORE_WRITE_SIZE == 4
+ if (!backing_store_write_bulk((WEAR_LEVELING_LOGICAL_SIZE), entry.raw32, 2)) {
+ status = WEAR_LEVELING_FAILED;
+ break;
+ }
+#elif BACKING_STORE_WRITE_SIZE == 8
+ if (!backing_store_write((WEAR_LEVELING_LOGICAL_SIZE), entry.raw64)) {
+ status = WEAR_LEVELING_FAILED;
+ break;
+ }
+#endif
+ } while (0);
+ }
+
+ if (lock_status == STATUS_SUCCESS) {
+ wear_leveling_lock();
+ }
+ return status;
+}
+
+/**
+ * Forces a write of the current cache.
+ * Erases the backing store, including the write log.
+ * During this operation, there is the potential for data loss if a power loss occurs.
+ */
+static wear_leveling_status_t wear_leveling_consolidate_force(void) {
+ wl_dprintf("Erasing backing store\n");
+
+ // Erase the backing store. Expectation is that any un-written values that are read back after this call come back as zero.
+ bool ok = backing_store_erase();
+ if (!ok) {
+ wl_dprintf("Failed to erase backing store\n");
+ return WEAR_LEVELING_FAILED;
+ }
+
+ // Write the cache to the first section of the backing store.
+ wear_leveling_status_t status = wear_leveling_write_consolidated();
+ if (status == WEAR_LEVELING_FAILED) {
+ wl_dprintf("Failed to write consolidated data\n");
+ }
+
+ // Next write of the log occurs after the consolidated values at the start of the backing store.
+ wear_leveling.write_address = (WEAR_LEVELING_LOGICAL_SIZE) + 8; // +8 due to the FNV1a_64 of the consolidated area
+
+ return status;
+}
+
+/**
+ * Potential write of the current cache to the backing store.
+ * Skipped if the current write log position is not at the end of the backing store.
+ * During this operation, there is the potential for data loss if a power loss occurs.
+ *
+ * @return true if consolidation occurred
+ */
+static wear_leveling_status_t wear_leveling_consolidate_if_needed(void) {
+ if (wear_leveling.write_address >= (WEAR_LEVELING_BACKING_SIZE)) {
+ return wear_leveling_consolidate_force();
+ }
+
+ return WEAR_LEVELING_SUCCESS;
+}
+
+/**
+ * Appends the supplied fixed-width entry to the write log, optionally consolidating if the log is full.
+ *
+ * @return true if consolidation occurred
+ */
+static wear_leveling_status_t wear_leveling_append_raw(backing_store_int_t value) {
+ bool ok = backing_store_write(wear_leveling.write_address, value);
+ if (!ok) {
+ wl_dprintf("Failed to write to backing store\n");
+ return WEAR_LEVELING_FAILED;
+ }
+ wear_leveling.write_address += (BACKING_STORE_WRITE_SIZE);
+ return wear_leveling_consolidate_if_needed();
+}
+
+/**
+ * Handles writing multi_byte-encoded data to the backing store.
+ *
+ * @return true if consolidation occurred
+ */
+static wear_leveling_status_t wear_leveling_write_raw_multibyte(uint32_t address, const void *value, size_t length) {
+ const uint8_t * p = value;
+ write_log_entry_t log = LOG_ENTRY_MAKE_MULTIBYTE(address, length);
+ for (size_t i = 0; i < length; ++i) {
+ log.raw8[3 + i] = p[i];
+ }
+
+ // Write to the backing store. See the multi-byte log format in the documentation header at the top of the file.
+ wear_leveling_status_t status;
+#if BACKING_STORE_WRITE_SIZE == 2
+ status = wear_leveling_append_raw(log.raw16[0]);
+ if (status != WEAR_LEVELING_SUCCESS) {
+ return status;
+ }
+
+ status = wear_leveling_append_raw(log.raw16[1]);
+ if (status != WEAR_LEVELING_SUCCESS) {
+ return status;
+ }
+
+ if (length > 1) {
+ status = wear_leveling_append_raw(log.raw16[2]);
+ if (status != WEAR_LEVELING_SUCCESS) {
+ return status;
+ }
+ }
+
+ if (length > 3) {
+ status = wear_leveling_append_raw(log.raw16[3]);
+ if (status != WEAR_LEVELING_SUCCESS) {
+ return status;
+ }
+ }
+#elif BACKING_STORE_WRITE_SIZE == 4
+ status = wear_leveling_append_raw(log.raw32[0]);
+ if (status != WEAR_LEVELING_SUCCESS) {
+ return status;
+ }
+
+ if (length > 1) {
+ status = wear_leveling_append_raw(log.raw32[1]);
+ if (status != WEAR_LEVELING_SUCCESS) {
+ return status;
+ }
+ }
+#elif BACKING_STORE_WRITE_SIZE == 8
+ status = wear_leveling_append_raw(log.raw64);
+ if (status != WEAR_LEVELING_SUCCESS) {
+ return status;
+ }
+#endif
+ return status;
+}
+
+/**
+ * Handles the actual writing of logical data into the write log section of the backing store.
+ */
+static wear_leveling_status_t wear_leveling_write_raw(uint32_t address, const void *value, size_t length) {
+ const uint8_t * p = value;
+ size_t remaining = length;
+ wear_leveling_status_t status = WEAR_LEVELING_SUCCESS;
+ while (remaining > 0) {
+#if BACKING_STORE_WRITE_SIZE == 2
+ // Small-write optimizations - uint16_t, 0 or 1, address is even, address <16384:
+ if (remaining >= 2 && address % 2 == 0 && address < 16384) {
+ const uint16_t v = ((uint16_t)p[1]) << 8 | p[0]; // don't just dereference a uint16_t here -- if unaligned it generates faults on some MCUs
+ if (v == 0 || v == 1) {
+ const write_log_entry_t log = LOG_ENTRY_MAKE_WORD_01(address, v);
+ status = wear_leveling_append_raw(log.raw16[0]);
+ if (status != WEAR_LEVELING_SUCCESS) {
+ // If consolidation occurred, then the cache has already been written to the consolidated area. No need to continue.
+ // If a failure occurred, pass it on.
+ return status;
+ }
+
+ remaining -= 2;
+ address += 2;
+ p += 2;
+ continue;
+ }
+ }
+
+ // Small-write optimizations - address<64:
+ if (address < 64) {
+ const write_log_entry_t log = LOG_ENTRY_MAKE_OPTIMIZED_64(address, *p);
+ status = wear_leveling_append_raw(log.raw16[0]);
+ if (status != WEAR_LEVELING_SUCCESS) {
+ // If consolidation occurred, then the cache has already been written to the consolidated area. No need to continue.
+ // If a failure occurred, pass it on.
+ return status;
+ }
+
+ remaining--;
+ address++;
+ p++;
+ continue;
+ }
+#endif // BACKING_STORE_WRITE_SIZE == 2
+ const size_t this_length = remaining >= LOG_ENTRY_MULTIBYTE_MAX_BYTES ? LOG_ENTRY_MULTIBYTE_MAX_BYTES : remaining;
+ status = wear_leveling_write_raw_multibyte(address, p, this_length);
+ if (status != WEAR_LEVELING_SUCCESS) {
+ // If consolidation occurred, then the cache has already been written to the consolidated area. No need to continue.
+ // If a failure occurred, pass it on.
+ return status;
+ }
+ remaining -= this_length;
+ address += (uint32_t)this_length;
+ p += this_length;
+ }
+
+ return status;
+}
+
+/**
+ * "Replays" the write log from the backing store, updating the local cache with updated values.
+ */
+static wear_leveling_status_t wear_leveling_playback_log(void) {
+ wl_dprintf("Playback write log\n");
+
+ wear_leveling_status_t status = WEAR_LEVELING_SUCCESS;
+ bool cancel_playback = false;
+ uint32_t address = (WEAR_LEVELING_LOGICAL_SIZE) + 8; // +8 due to the FNV1a_64 of the consolidated area
+ while (!cancel_playback && address < (WEAR_LEVELING_BACKING_SIZE)) {
+ backing_store_int_t value;
+ bool ok = backing_store_read(address, &value);
+ if (!ok) {
+ wl_dprintf("Failed to load from backing store, skipping playback of write log\n");
+ cancel_playback = true;
+ status = WEAR_LEVELING_FAILED;
+ break;
+ }
+ if (value == 0) {
+ wl_dprintf("Found empty slot, no more log entries\n");
+ cancel_playback = true;
+ break;
+ }
+
+ // If we got a nonzero value, then we need to increment the address to ensure next write occurs at next location
+ address += (BACKING_STORE_WRITE_SIZE);
+
+ // Read from the write log
+ write_log_entry_t log;
+#if BACKING_STORE_WRITE_SIZE == 2
+ log.raw16[0] = value;
+#elif BACKING_STORE_WRITE_SIZE == 4
+ log.raw32[0] = value;
+#elif BACKING_STORE_WRITE_SIZE == 8
+ log.raw64 = value;
+#endif
+
+ switch (LOG_ENTRY_GET_TYPE(log)) {
+ case LOG_ENTRY_TYPE_MULTIBYTE: {
+#if BACKING_STORE_WRITE_SIZE == 2
+ ok = backing_store_read(address, &log.raw16[1]);
+ if (!ok) {
+ wl_dprintf("Failed to load from backing store, skipping playback of write log\n");
+ cancel_playback = true;
+ status = WEAR_LEVELING_FAILED;
+ break;
+ }
+ address += (BACKING_STORE_WRITE_SIZE);
+#endif // BACKING_STORE_WRITE_SIZE == 2
+ const uint32_t a = LOG_ENTRY_MULTIBYTE_GET_ADDRESS(log);
+ const uint8_t l = LOG_ENTRY_MULTIBYTE_GET_LENGTH(log);
+
+ if (a + l > (WEAR_LEVELING_LOGICAL_SIZE)) {
+ cancel_playback = true;
+ status = WEAR_LEVELING_FAILED;
+ break;
+ }
+
+#if BACKING_STORE_WRITE_SIZE == 2
+ if (l > 1) {
+ ok = backing_store_read(address, &log.raw16[2]);
+ if (!ok) {
+ wl_dprintf("Failed to load from backing store, skipping playback of write log\n");
+ cancel_playback = true;
+ status = WEAR_LEVELING_FAILED;
+ break;
+ }
+ address += (BACKING_STORE_WRITE_SIZE);
+ }
+ if (l > 3) {
+ ok = backing_store_read(address, &log.raw16[3]);
+ if (!ok) {
+ wl_dprintf("Failed to load from backing store, skipping playback of write log\n");
+ cancel_playback = true;
+ status = WEAR_LEVELING_FAILED;
+ break;
+ }
+ address += (BACKING_STORE_WRITE_SIZE);
+ }
+#elif BACKING_STORE_WRITE_SIZE == 4
+ if (l > 1) {
+ ok = backing_store_read(address, &log.raw32[1]);
+ if (!ok) {
+ wl_dprintf("Failed to load from backing store, skipping playback of write log\n");
+ cancel_playback = true;
+ status = WEAR_LEVELING_FAILED;
+ break;
+ }
+ address += (BACKING_STORE_WRITE_SIZE);
+ }
+#endif
+
+ memcpy(&wear_leveling.cache[a], &log.raw8[3], l);
+ } break;
+#if BACKING_STORE_WRITE_SIZE == 2
+ case LOG_ENTRY_TYPE_OPTIMIZED_64: {
+ const uint32_t a = LOG_ENTRY_OPTIMIZED_64_GET_ADDRESS(log);
+ const uint8_t v = LOG_ENTRY_OPTIMIZED_64_GET_VALUE(log);
+
+ if (a >= (WEAR_LEVELING_LOGICAL_SIZE)) {
+ cancel_playback = true;
+ status = WEAR_LEVELING_FAILED;
+ break;
+ }
+
+ wear_leveling.cache[a] = v;
+ } break;
+ case LOG_ENTRY_TYPE_WORD_01: {
+ const uint32_t a = LOG_ENTRY_WORD_01_GET_ADDRESS(log);
+ const uint8_t v = LOG_ENTRY_WORD_01_GET_VALUE(log);
+
+ if (a + 1 >= (WEAR_LEVELING_LOGICAL_SIZE)) {
+ cancel_playback = true;
+ status = WEAR_LEVELING_FAILED;
+ break;
+ }
+
+ wear_leveling.cache[a + 0] = v;
+ wear_leveling.cache[a + 1] = 0;
+ } break;
+#endif // BACKING_STORE_WRITE_SIZE == 2
+ default: {
+ cancel_playback = true;
+ status = WEAR_LEVELING_FAILED;
+ } break;
+ }
+ }
+
+ // We've reached the end of the log, so we're at the new write location
+ wear_leveling.write_address = address;
+
+ if (status == WEAR_LEVELING_FAILED) {
+ // If we had a failure during readback, assume we're corrupted -- force a consolidation with the data we already have
+ status = wear_leveling_consolidate_force();
+ } else {
+ // Consolidate the cache + write log if required
+ status = wear_leveling_consolidate_if_needed();
+ }
+
+ return status;
+}
+
+/**
+ * Wear-leveling initialization
+ */
+wear_leveling_status_t wear_leveling_init(void) {
+ wl_dprintf("Init\n");
+
+ // Reset the cache
+ wear_leveling_clear_cache();
+
+ // Initialise the backing store
+ if (!backing_store_init()) {
+ // If it failed, clear the cache and return with failure
+ wear_leveling_clear_cache();
+ return WEAR_LEVELING_FAILED;
+ }
+
+ // Read the previous consolidated values, then replay the existing write log so that the cache has the "live" values
+ wear_leveling_status_t status = wear_leveling_read_consolidated();
+ if (status == WEAR_LEVELING_FAILED) {
+ // If it failed, clear the cache and return with failure
+ wear_leveling_clear_cache();
+ return status;
+ }
+
+ status = wear_leveling_playback_log();
+ if (status == WEAR_LEVELING_FAILED) {
+ // If it failed, clear the cache and return with failure
+ wear_leveling_clear_cache();
+ return status;
+ }
+
+ return status;
+}
+
+/**
+ * Wear-leveling erase.
+ * Post-condition: any reads from the backing store directly after an erase operation must come back as zero.
+ */
+wear_leveling_status_t wear_leveling_erase(void) {
+ wl_dprintf("Erase\n");
+
+ // Unlock the backing store
+ backing_store_lock_status_t lock_status = wear_leveling_unlock();
+ if (lock_status == STATUS_FAILURE) {
+ wear_leveling_lock();
+ return WEAR_LEVELING_FAILED;
+ }
+
+ // Perform the erase
+ bool ret = backing_store_erase();
+ wear_leveling_clear_cache();
+
+ // Lock the backing store if we acquired the lock successfully
+ if (lock_status == STATUS_SUCCESS) {
+ ret &= (wear_leveling_lock() != STATUS_FAILURE);
+ }
+
+ return ret ? WEAR_LEVELING_SUCCESS : WEAR_LEVELING_FAILED;
+}
+
+/**
+ * Writes logical data into the backing store. Skips writes if there are no changes to values.
+ */
+wear_leveling_status_t wear_leveling_write(const uint32_t address, const void *value, size_t length) {
+ wl_assert(address + length <= (WEAR_LEVELING_LOGICAL_SIZE));
+ if (address + length > (WEAR_LEVELING_LOGICAL_SIZE)) {
+ return WEAR_LEVELING_FAILED;
+ }
+
+ wl_dprintf("Write ");
+ wl_dump(address, value, length);
+
+ // Skip write if there's no change compared to the current cached value
+ if (memcmp(value, &wear_leveling.cache[address], length) == 0) {
+ return true;
+ }
+
+ // Update the cache before writing to the backing store -- if we hit the end of the backing store during writes to the log then we'll force a consolidation in-line
+ memcpy(&wear_leveling.cache[address], value, length);
+
+ // Unlock the backing store
+ backing_store_lock_status_t lock_status = wear_leveling_unlock();
+ if (lock_status == STATUS_FAILURE) {
+ wear_leveling_lock();
+ return WEAR_LEVELING_FAILED;
+ }
+
+ // Perform the actual write
+ wear_leveling_status_t status = wear_leveling_write_raw(address, value, length);
+ switch (status) {
+ case WEAR_LEVELING_CONSOLIDATED:
+ case WEAR_LEVELING_FAILED:
+ // If the write triggered consolidation, or the write failed, then nothing else needs to occur.
+ break;
+
+ case WEAR_LEVELING_SUCCESS:
+ // Consolidate the cache + write log if required
+ status = wear_leveling_consolidate_if_needed();
+ break;
+
+ default:
+ // Unsure how we'd get here...
+ status = WEAR_LEVELING_FAILED;
+ break;
+ }
+
+ if (lock_status == STATUS_SUCCESS) {
+ if (wear_leveling_lock() == STATUS_FAILURE) {
+ status = WEAR_LEVELING_FAILED;
+ }
+ }
+
+ return status;
+}
+
+/**
+ * Reads logical data from the cache.
+ */
+wear_leveling_status_t wear_leveling_read(const uint32_t address, void *value, size_t length) {
+ wl_assert(address + length <= (WEAR_LEVELING_LOGICAL_SIZE));
+ if (address + length > (WEAR_LEVELING_LOGICAL_SIZE)) {
+ return WEAR_LEVELING_FAILED;
+ }
+
+ // Only need to copy from the cache
+ memcpy(value, &wear_leveling.cache[address], length);
+
+ wl_dprintf("Read ");
+ wl_dump(address, value, length);
+ return WEAR_LEVELING_SUCCESS;
+}
+
+/**
+ * Weak implementation of bulk read, drivers can implement more optimised implementations.
+ */
+__attribute__((weak)) bool backing_store_read_bulk(uint32_t address, backing_store_int_t *values, size_t item_count) {
+ for (size_t i = 0; i < item_count; ++i) {
+ if (!backing_store_read(address + (i * BACKING_STORE_WRITE_SIZE), &values[i])) {
+ return false;
+ }
+ }
+ return true;
+}
+
+/**
+ * Weak implementation of bulk write, drivers can implement more optimised implementations.
+ */
+__attribute__((weak)) bool backing_store_write_bulk(uint32_t address, backing_store_int_t *values, size_t item_count) {
+ for (size_t i = 0; i < item_count; ++i) {
+ if (!backing_store_write(address + (i * BACKING_STORE_WRITE_SIZE), values[i])) {
+ return false;
+ }
+ }
+ return true;
+}
diff --git a/quantum/wear_leveling/wear_leveling.h b/quantum/wear_leveling/wear_leveling.h
new file mode 100644
index 0000000000..6641bc49b3
--- /dev/null
+++ b/quantum/wear_leveling/wear_leveling.h
@@ -0,0 +1,54 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+#include <stdint.h>
+#include <stdlib.h>
+
+/**
+ * @typedef Status returned from any wear-leveling API.
+ */
+typedef enum wear_leveling_status_t {
+ WEAR_LEVELING_FAILED, //< Invocation failed
+ WEAR_LEVELING_SUCCESS, //< Invocation succeeded
+ WEAR_LEVELING_CONSOLIDATED //< Invocation succeeded, consolidation occurred
+} wear_leveling_status_t;
+
+/**
+ * Wear-leveling initialization
+ *
+ * @return Status of the request
+ */
+wear_leveling_status_t wear_leveling_init(void);
+
+/**
+ * Wear-leveling erasure.
+ *
+ * Clears the wear-leveling area, with the definition that the "reset state" of all data is zero.
+ *
+ * @return Status of the request
+ */
+wear_leveling_status_t wear_leveling_erase(void);
+
+/**
+ * Writes logical data into the backing store.
+ *
+ * Skips writes if there are no changes to written values. The entire written block is considered when attempting to
+ * determine if an overwrite should occur -- if there is any data mismatch the entire block will be written to the log,
+ * not just the changed bytes.
+ *
+ * @param address[in] the logical address to write data
+ * @param value[in] pointer to the source buffer
+ * @param length[in] length of the data
+ * @return Status of the request
+ */
+wear_leveling_status_t wear_leveling_write(uint32_t address, const void* value, size_t length);
+
+/**
+ * Reads logical data from the cache.
+ *
+ * @param address[in] the logical address to read data
+ * @param value[out] pointer to the destination buffer
+ * @param length[in] length of the data
+ * @return Status of the request
+ */
+wear_leveling_status_t wear_leveling_read(uint32_t address, void* value, size_t length);
diff --git a/quantum/wear_leveling/wear_leveling_internal.h b/quantum/wear_leveling/wear_leveling_internal.h
new file mode 100644
index 0000000000..e83f9b22ea
--- /dev/null
+++ b/quantum/wear_leveling/wear_leveling_internal.h
@@ -0,0 +1,151 @@
+// Copyright 2022 Nick Brassel (@tzarc)
+// SPDX-License-Identifier: GPL-2.0-or-later
+#pragma once
+
+#ifdef __cplusplus
+# define _Static_assert static_assert
+#endif
+
+#include <stdint.h>
+#include <string.h>
+
+#if BACKING_STORE_WRITE_SIZE == 2
+typedef uint16_t backing_store_int_t;
+#elif BACKING_STORE_WRITE_SIZE == 4
+typedef uint32_t backing_store_int_t;
+#elif BACKING_STORE_WRITE_SIZE == 8
+typedef uint64_t backing_store_int_t;
+#else
+# error Invalid BACKING_STORE_WRITE_SIZE, needs to be 2/4/8.
+#endif
+
+#ifndef WEAR_LEVELING_BACKING_SIZE
+# error WEAR_LEVELING_BACKING_SIZE was not set.
+#endif
+
+#ifndef WEAR_LEVELING_LOGICAL_SIZE
+# error WEAR_LEVELING_LOGICAL_SIZE was not set.
+#endif
+
+#ifdef WEAR_LEVELING_DEBUG_OUTPUT
+# include <debug.h>
+# define bs_dprintf(...) dprintf("Backing store: " __VA_ARGS__)
+# define wl_dprintf(...) dprintf("Wear leveling: " __VA_ARGS__)
+# define wl_dump(address, value, length) \
+ do { \
+ dprintf("[0x%04X]: ", (int)(address)); \
+ const uint8_t* p = (const uint8_t*)(value); \
+ for (int i = 0; i < (length); ++i) { \
+ dprintf(" %02X", (int)p[i]); \
+ } \
+ dprintf("\n"); \
+ } while (0)
+#else
+# define wl_dprintf(...) \
+ do { \
+ } while (0)
+# define bs_dprintf(...) \
+ do { \
+ } while (0)
+# define wl_dump(...) \
+ do { \
+ } while (0)
+#endif // WEAR_LEVELING_DEBUG_OUTPUT
+
+#ifdef WEAR_LEVELING_ASSERTS
+# include <assert.h>
+# define wl_assert(...) assert(__VA_ARGS__)
+#else
+# define wl_assert(...) \
+ do { \
+ } while (0)
+#endif // WEAR_LEVELING_ASSERTS
+
+// Compile-time validation of configurable options
+_Static_assert(WEAR_LEVELING_BACKING_SIZE >= (WEAR_LEVELING_LOGICAL_SIZE * 2), "Total backing size must be at least twice the size of the logical size");
+_Static_assert(WEAR_LEVELING_LOGICAL_SIZE % BACKING_STORE_WRITE_SIZE == 0, "Logical size must be a multiple of write size");
+_Static_assert(WEAR_LEVELING_BACKING_SIZE % WEAR_LEVELING_LOGICAL_SIZE == 0, "Backing size must be a multiple of logical size");
+
+// Backing Store API, to be implemented elsewhere by flash driver etc.
+bool backing_store_init(void);
+bool backing_store_unlock(void);
+bool backing_store_erase(void);
+bool backing_store_write(uint32_t address, backing_store_int_t value);
+bool backing_store_write_bulk(uint32_t address, backing_store_int_t* values, size_t item_count); // weak implementation already provided, optimized implementation can be implemented by driver
+bool backing_store_lock(void);
+bool backing_store_read(uint32_t address, backing_store_int_t* value);
+bool backing_store_read_bulk(uint32_t address, backing_store_int_t* values, size_t item_count); // weak implementation already provided, optimized implementation can be implemented by driver
+
+/**
+ * Helper type used to contain a write log entry.
+ */
+typedef union write_log_entry_t {
+ uint64_t raw64;
+ uint32_t raw32[2];
+ uint16_t raw16[4];
+ uint8_t raw8[8];
+} write_log_entry_t;
+
+_Static_assert(sizeof(write_log_entry_t) == 8, "Wear leveling write log entry size was not 8");
+
+/**
+ * Log entry type discriminator.
+ */
+enum {
+ // 0x00 -- Multi-byte storage type
+ LOG_ENTRY_TYPE_MULTIBYTE,
+
+ // 0x01 -- 2-byte backing store write optimization: address < 64
+ LOG_ENTRY_TYPE_OPTIMIZED_64,
+
+ // 0x02 -- 2-byte backing store write optimization: word-encoded 0/1 values
+ LOG_ENTRY_TYPE_WORD_01,
+
+ LOG_ENTRY_TYPES
+};
+
+_Static_assert(LOG_ENTRY_TYPES <= (1 << 2), "Too many log entry types to fit into 2 bits of storage");
+
+#define BITMASK_FOR_BITCOUNT(n) ((1 << (n)) - 1)
+
+#define LOG_ENTRY_GET_TYPE(entry) (((entry).raw8[0] >> 6) & BITMASK_FOR_BITCOUNT(2))
+
+#define LOG_ENTRY_MULTIBYTE_MAX_BYTES 5
+#define LOG_ENTRY_MULTIBYTE_GET_ADDRESS(entry) (((((uint32_t)((entry).raw8[0])) & BITMASK_FOR_BITCOUNT(3)) << 16) | (((uint32_t)((entry).raw8[1])) << 8) | (entry).raw8[2])
+#define LOG_ENTRY_MULTIBYTE_GET_LENGTH(entry) ((uint8_t)(((entry).raw8[0] >> 3) & BITMASK_FOR_BITCOUNT(3)))
+#define LOG_ENTRY_MAKE_MULTIBYTE(address, length) \
+ (write_log_entry_t) { \
+ .raw8 = { \
+ [0] = (((((uint8_t)LOG_ENTRY_TYPE_MULTIBYTE) & BITMASK_FOR_BITCOUNT(2)) << 6) /* type */ \
+ | ((((uint8_t)(length)) & BITMASK_FOR_BITCOUNT(3)) << 3) /* length */ \
+ | ((((uint8_t)((address) >> 16))) & BITMASK_FOR_BITCOUNT(3)) /* address */ \
+ ), \
+ [1] = (((uint8_t)((address) >> 8)) & BITMASK_FOR_BITCOUNT(8)), /* address */ \
+ [2] = (((uint8_t)(address)) & BITMASK_FOR_BITCOUNT(8)), /* address */ \
+ } \
+ }
+
+#define LOG_ENTRY_OPTIMIZED_64_GET_ADDRESS(entry) ((uint32_t)((entry).raw8[0] & BITMASK_FOR_BITCOUNT(6)))
+#define LOG_ENTRY_OPTIMIZED_64_GET_VALUE(entry) ((entry).raw8[1])
+#define LOG_ENTRY_MAKE_OPTIMIZED_64(address, value) \
+ (write_log_entry_t) { \
+ .raw8 = { \
+ [0] = (((((uint8_t)LOG_ENTRY_TYPE_OPTIMIZED_64) & BITMASK_FOR_BITCOUNT(2)) << 6) /* type */ \
+ | ((((uint8_t)(address))) & BITMASK_FOR_BITCOUNT(6)) /* address */ \
+ ), \
+ [1] = ((uint8_t)(value)), /* value */ \
+ } \
+ }
+
+#define LOG_ENTRY_WORD_01_GET_ADDRESS(entry) ((((uint32_t)(((entry).raw8[0]) & BITMASK_FOR_BITCOUNT(5))) << 9) | (((uint32_t)((entry).raw8[1])) << 1))
+#define LOG_ENTRY_WORD_01_GET_VALUE(entry) ((uint8_t)((entry).raw8[0] >> 5) & BITMASK_FOR_BITCOUNT(1))
+#define LOG_ENTRY_MAKE_WORD_01(address, value) \
+ (write_log_entry_t) { \
+ .raw8 = { \
+ [0] = (((((uint8_t)LOG_ENTRY_TYPE_WORD_01) & BITMASK_FOR_BITCOUNT(2)) << 6) /* type */ \
+ | (((((uint8_t)((value) ? 1 : 0))) & BITMASK_FOR_BITCOUNT(1)) << 5) /* value */ \
+ | ((((uint8_t)((address) >> 9))) & BITMASK_FOR_BITCOUNT(5)) /* address */ \
+ ), \
+ [1] = (uint8_t)((address) >> 1), /* address */ \
+ } \
+ }
diff --git a/requirements.txt b/requirements.txt
index e09d58d829..6bee746324 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,11 +2,12 @@
appdirs
argcomplete
colorama
+dotty-dict
hid
hjson
jsonschema>=4
milc>=1.4.2
pygments
+pyserial
pyusb
-qmk-dotty-dict
pillow
diff --git a/shell.nix b/shell.nix
index a96aa840de..63e5af0525 100644
--- a/shell.nix
+++ b/shell.nix
@@ -1,9 +1,29 @@
let
# We specify sources via Niv: use "niv update nixpkgs" to update nixpkgs, for example.
sources = import ./util/nix/sources.nix { };
+
+ # `tomlkit` >= 0.8.0 is required to build `jsonschema` >= 4.11.0 (older
+ # version do not support some valid TOML syntax: sdispater/tomlkit#148). The
+ # updated `tomlkit` must be used by `makeRemoveSpecialDependenciesHook`
+ # inside `poetry2nix`, therefore just providing the updated version through
+ # our `nix/pyproject.toml` does not work, and using an overlay is required.
+ pythonOverlay = final: prev: {
+ python3 = prev.python3.override {
+ packageOverrides = self: super: {
+ tomlkit = super.tomlkit.overridePythonAttrs(old: rec {
+ version = "0.11.4";
+ src = super.fetchPypi {
+ inherit (old) pname;
+ inherit version;
+ sha256 = "sha256-MjWpAQ+uVDI+cnw6wG+3IHUv5mNbNCbjedrsYPvUSoM=";
+ };
+ });
+ };
+ };
+ };
in
# However, if you want to override Niv's inputs, this will let you do that.
-{ pkgs ? import sources.nixpkgs { }
+{ pkgs ? import sources.nixpkgs { overlays = [ pythonOverlay ]; }
, poetry2nix ? pkgs.callPackage (import sources.poetry2nix) { }
, avr ? true
, arm ? true
@@ -48,7 +68,7 @@ in
mkShell {
name = "qmk-firmware";
- buildInputs = [ clang-tools dfu-programmer dfu-util diffutils git pythonEnv poetry niv ]
+ buildInputs = [ clang-tools dfu-programmer dfu-util diffutils git pythonEnv niv ]
++ lib.optional avr [
pkgsCross.avr.buildPackages.binutils
pkgsCross.avr.buildPackages.gcc8
diff --git a/tests/basic/test_keypress.cpp b/tests/basic/test_keypress.cpp
index bb68ced557..6d5b502a00 100644
--- a/tests/basic/test_keypress.cpp
+++ b/tests/basic/test_keypress.cpp
@@ -64,11 +64,7 @@ TEST_F(KeyPress, CorrectKeysAreReportedWhenTwoKeysArePressed) {
key_b.press();
key_c.press();
- // Note that QMK only processes one key at a time
- // See issue #1476 for more information
EXPECT_REPORT(driver, (key_b.report_code));
- keyboard_task();
-
EXPECT_REPORT(driver, (key_b.report_code, key_c.report_code));
keyboard_task();
@@ -76,8 +72,6 @@ TEST_F(KeyPress, CorrectKeysAreReportedWhenTwoKeysArePressed) {
key_c.release();
// Note that the first key released is the first one in the matrix order
EXPECT_REPORT(driver, (key_c.report_code));
- keyboard_task();
-
EXPECT_EMPTY_REPORT(driver);
keyboard_task();
}
@@ -92,10 +86,7 @@ TEST_F(KeyPress, LeftShiftIsReportedCorrectly) {
key_lsft.press();
key_a.press();
- // Unfortunately modifiers are also processed in the wrong order
- // See issue #1476 for more information
EXPECT_REPORT(driver, (key_a.report_code));
- keyboard_task();
EXPECT_REPORT(driver, (key_a.report_code, key_lsft.report_code));
keyboard_task();
@@ -118,11 +109,7 @@ TEST_F(KeyPress, PressLeftShiftAndControl) {
key_lsft.press();
key_lctrl.press();
- // Unfortunately modifiers are also processed in the wrong order
- // See issue #1476 for more information
EXPECT_REPORT(driver, (key_lsft.report_code));
- keyboard_task();
-
EXPECT_REPORT(driver, (key_lsft.report_code, key_lctrl.report_code));
keyboard_task();
@@ -130,8 +117,6 @@ TEST_F(KeyPress, PressLeftShiftAndControl) {
key_lctrl.release();
EXPECT_REPORT(driver, (key_lctrl.report_code));
- keyboard_task();
-
EXPECT_EMPTY_REPORT(driver);
keyboard_task();
}
@@ -145,20 +130,13 @@ TEST_F(KeyPress, LeftAndRightShiftCanBePressedAtTheSameTime) {
key_lsft.press();
key_rsft.press();
- // Unfortunately modifiers are also processed in the wrong order
- // See issue #1476 for more information
EXPECT_REPORT(driver, (key_lsft.report_code));
- keyboard_task();
-
EXPECT_REPORT(driver, (key_lsft.report_code, key_rsft.report_code));
keyboard_task();
key_lsft.release();
key_rsft.release();
-
EXPECT_REPORT(driver, (key_rsft.report_code));
- keyboard_task();
-
EXPECT_EMPTY_REPORT(driver);
keyboard_task();
}
diff --git a/tests/caps_word/caps_word_autoshift/test_caps_word_autoshift.cpp b/tests/caps_word/caps_word_autoshift/test_caps_word_autoshift.cpp
index deb4d95766..ba21c527a6 100644
--- a/tests/caps_word/caps_word_autoshift/test_caps_word_autoshift.cpp
+++ b/tests/caps_word/caps_word_autoshift/test_caps_word_autoshift.cpp
@@ -19,6 +19,14 @@
#include "test_fixture.hpp"
#include "test_keymap_key.hpp"
+// Allow reports with no keys or only KC_LSFT.
+// clang-format off
+#define EXPECT_EMPTY_OR_LSFT(driver) \
+ EXPECT_CALL(driver, send_keyboard_mock(AnyOf( \
+ KeyboardReport(), \
+ KeyboardReport(KC_LSFT))))
+// clang-format on
+
using ::testing::_;
using ::testing::AnyNumber;
using ::testing::AnyOf;
@@ -39,13 +47,7 @@ TEST_F(CapsWord, AutoShiftKeys) {
KeymapKey key_spc(0, 1, 0, KC_SPC);
set_keymap({key_a, key_spc});
- // Allow any number of reports with no keys or only KC_LSFT.
- // clang-format off
- EXPECT_CALL(driver, send_keyboard_mock(AnyOf(
- KeyboardReport(),
- KeyboardReport(KC_LSFT))))
- .Times(AnyNumber());
- // clang-format on
+ EXPECT_EMPTY_OR_LSFT(driver).Times(AnyNumber());
{ // Expect: "A, A, space, a".
InSequence s;
EXPECT_REPORT(driver, (KC_LSFT, KC_A));
@@ -65,6 +67,46 @@ TEST_F(CapsWord, AutoShiftKeys) {
testing::Mock::VerifyAndClearExpectations(&driver);
}
+// Test Caps Word + Auto Shift where keys A and B are rolled.
+TEST_F(CapsWord, AutoShiftRolledShiftedKeys) {
+ TestDriver driver;
+ KeymapKey key_a(0, 0, 0, KC_A);
+ KeymapKey key_b(0, 0, 1, KC_B);
+ set_keymap({key_a, key_b});
+
+ EXPECT_EMPTY_OR_LSFT(driver).Times(AnyNumber());
+ { // Expect: "A, B, A, B".
+ InSequence s;
+ EXPECT_REPORT(driver, (KC_LSFT, KC_A));
+ EXPECT_REPORT(driver, (KC_LSFT, KC_B));
+ EXPECT_REPORT(driver, (KC_LSFT, KC_A));
+ EXPECT_REPORT(driver, (KC_LSFT, KC_B));
+ }
+
+ caps_word_on();
+
+ key_a.press(); // Overlapping taps: A down, B down, A up, B up.
+ run_one_scan_loop();
+ key_b.press();
+ run_one_scan_loop();
+ key_a.release();
+ run_one_scan_loop();
+ key_b.release();
+ run_one_scan_loop();
+
+ key_a.press(); // Nested taps: A down, B down, B up, A up.
+ run_one_scan_loop();
+ key_b.press();
+ run_one_scan_loop();
+ key_b.release();
+ run_one_scan_loop();
+ key_a.release();
+ run_one_scan_loop();
+
+ caps_word_off();
+ testing::Mock::VerifyAndClearExpectations(&driver);
+}
+
// Tests that with tap-hold keys with Retro Shift, letter keys are shifted by
// Caps Word regardless of whether they are retroshifted.
TEST_F(CapsWord, RetroShiftKeys) {
@@ -73,13 +115,7 @@ TEST_F(CapsWord, RetroShiftKeys) {
KeymapKey key_layertap_b(0, 1, 0, LT(1, KC_B));
set_keymap({key_modtap_a, key_layertap_b});
- // Allow any number of reports with no keys or only KC_LSFT.
- // clang-format off
- EXPECT_CALL(driver, send_keyboard_mock(AnyOf(
- KeyboardReport(),
- KeyboardReport(KC_LSFT))))
- .Times(AnyNumber());
- // clang-format on
+ EXPECT_EMPTY_OR_LSFT(driver).Times(AnyNumber());
{ // Expect: "B, A, B, A".
InSequence s;
EXPECT_REPORT(driver, (KC_LSFT, KC_B));
diff --git a/tests/caps_word/caps_word_combo/config.h b/tests/caps_word/caps_word_combo/config.h
new file mode 100644
index 0000000000..92dbe045b2
--- /dev/null
+++ b/tests/caps_word/caps_word_combo/config.h
@@ -0,0 +1,20 @@
+// Copyright 2022 Google 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 "test_common.h"
+
+#define TAPPING_TERM 200
diff --git a/tests/caps_word/caps_word_combo/test.mk b/tests/caps_word/caps_word_combo/test.mk
new file mode 100644
index 0000000000..9f2e157189
--- /dev/null
+++ b/tests/caps_word/caps_word_combo/test.mk
@@ -0,0 +1,19 @@
+# Copyright 2022 Google 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/>.
+
+CAPS_WORD_ENABLE = yes
+COMBO_ENABLE = yes
+AUTO_SHIFT_ENABLE = yes
+
diff --git a/tests/caps_word/caps_word_combo/test_caps_word_combo.cpp b/tests/caps_word/caps_word_combo/test_caps_word_combo.cpp
new file mode 100644
index 0000000000..3a0530b854
--- /dev/null
+++ b/tests/caps_word/caps_word_combo/test_caps_word_combo.cpp
@@ -0,0 +1,212 @@
+// Copyright 2022 Google 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/>.
+
+// Test Caps Word + Combos, with and without Auto Shift.
+
+#include <algorithm>
+#include <numeric>
+#include <vector>
+
+#include "keyboard_report_util.hpp"
+#include "keycode.h"
+#include "test_common.hpp"
+#include "test_fixture.hpp"
+#include "test_keymap_key.hpp"
+
+// Allow reports with no keys or only KC_LSFT.
+// clang-format off
+#define EXPECT_EMPTY_OR_LSFT(driver) \
+ EXPECT_CALL(driver, send_keyboard_mock(AnyOf( \
+ KeyboardReport(), \
+ KeyboardReport(KC_LSFT))))
+// clang-format on
+
+using ::testing::AnyNumber;
+using ::testing::AnyOf;
+using ::testing::InSequence;
+using ::testing::TestParamInfo;
+
+extern "C" {
+// Define some combos to use for the test, including overlapping combos and
+// combos that chord tap-hold keys.
+enum combo_events { AB_COMBO, BC_COMBO, AD_COMBO, DE_COMBO, FGHI_COMBO, COMBO_LENGTH };
+uint16_t COMBO_LEN = COMBO_LENGTH;
+
+const uint16_t ab_combo[] PROGMEM = {KC_A, KC_B, COMBO_END};
+const uint16_t bc_combo[] PROGMEM = {KC_B, KC_C, COMBO_END};
+const uint16_t ad_combo[] PROGMEM = {KC_A, LCTL_T(KC_D), COMBO_END};
+const uint16_t de_combo[] PROGMEM = {LCTL_T(KC_D), LT(1, KC_E), COMBO_END};
+const uint16_t fghi_combo[] PROGMEM = {KC_F, KC_G, KC_H, KC_I, COMBO_END};
+
+// clang-format off
+combo_t key_combos[] = {
+ [AB_COMBO] = COMBO(ab_combo, KC_SPC), // KC_A + KC_B = KC_SPC
+ [BC_COMBO] = COMBO(bc_combo, KC_X), // KC_B + KC_C = KC_X
+ [AD_COMBO] = COMBO(ad_combo, KC_Y), // KC_A + LCTL_T(KC_D) = KC_Y
+ [DE_COMBO] = COMBO(de_combo, KC_Z), // LCTL_T(KC_D) + LT(1, KC_E) = KC_Z
+ [FGHI_COMBO] = COMBO(fghi_combo, KC_W) // KC_F + KC_G + KC_H + KC_I = KC_W
+};
+// clang-format on
+} // extern "C"
+
+namespace {
+
+// To test combos thorougly, we test them with pressing the chord keys with
+// a few different orders and timings.
+struct TestParams {
+ std::string name;
+ bool autoshift_on;
+
+ static const std::string& GetName(const TestParamInfo<TestParams>& info) {
+ return info.param.name;
+ }
+};
+
+class CapsWord : public ::testing::WithParamInterface<TestParams>, public TestFixture {
+ public:
+ void SetUp() override {
+ caps_word_off();
+ if (GetParam().autoshift_on) {
+ autoshift_enable();
+ } else {
+ autoshift_disable();
+ }
+ }
+};
+
+// Test pressing the keys in a combo with different orders and timings.
+TEST_P(CapsWord, SingleCombo) {
+ TestDriver driver;
+ KeymapKey key_b(0, 0, 1, KC_B);
+ KeymapKey key_c(0, 0, 2, KC_C);
+ set_keymap({key_b, key_c});
+
+ EXPECT_EMPTY_OR_LSFT(driver).Times(AnyNumber());
+ EXPECT_REPORT(driver, (KC_LSFT, KC_X));
+
+ caps_word_on();
+ tap_combo({key_b, key_c});
+
+ EXPECT_TRUE(is_caps_word_on());
+ caps_word_off();
+
+ testing::Mock::VerifyAndClearExpectations(&driver);
+}
+
+// Test a longer 4-key combo.
+TEST_P(CapsWord, LongerCombo) {
+ TestDriver driver;
+ KeymapKey key_f(0, 0, 0, KC_F);
+ KeymapKey key_g(0, 0, 1, KC_G);
+ KeymapKey key_h(0, 0, 2, KC_H);
+ KeymapKey key_i(0, 0, 3, KC_I);
+ set_keymap({key_f, key_g, key_h, key_i});
+
+ EXPECT_EMPTY_OR_LSFT(driver).Times(AnyNumber());
+ EXPECT_REPORT(driver, (KC_LSFT, KC_W));
+
+ caps_word_on();
+ tap_combo({key_f, key_g, key_h, key_i});
+
+ EXPECT_TRUE(is_caps_word_on());
+ caps_word_off();
+
+ testing::Mock::VerifyAndClearExpectations(&driver);
+}
+
+// Test with two overlapping combos on regular keys:
+// KC_A + KC_B = KC_SPC,
+// KC_B + KC_C = KC_X.
+TEST_P(CapsWord, ComboRegularKeys) {
+ TestDriver driver;
+ KeymapKey key_a(0, 0, 0, KC_A);
+ KeymapKey key_b(0, 0, 1, KC_B);
+ KeymapKey key_c(0, 0, 2, KC_C);
+ KeymapKey key_1(0, 0, 3, KC_1);
+ set_keymap({key_a, key_b, key_c, key_1});
+
+ EXPECT_EMPTY_OR_LSFT(driver).Times(AnyNumber());
+ { // Expect: "A, B, 1, X, 1, C, space, a".
+ InSequence s;
+ EXPECT_REPORT(driver, (KC_LSFT, KC_A));
+ EXPECT_REPORT(driver, (KC_LSFT, KC_B));
+ EXPECT_REPORT(driver, (KC_1));
+ EXPECT_REPORT(driver, (KC_LSFT, KC_X));
+ EXPECT_REPORT(driver, (KC_1));
+ EXPECT_REPORT(driver, (KC_LSFT, KC_C));
+ EXPECT_REPORT(driver, (KC_SPC));
+ EXPECT_REPORT(driver, (KC_A));
+ }
+
+ caps_word_on();
+ tap_key(key_a);
+ tap_key(key_b);
+ tap_key(key_1);
+ tap_combo({key_b, key_c}); // BC combo types "x".
+ tap_key(key_1);
+ tap_key(key_c);
+ tap_combo({key_a, key_b}); // AB combo types space.
+ tap_key(key_a);
+
+ EXPECT_FALSE(is_caps_word_on());
+ testing::Mock::VerifyAndClearExpectations(&driver);
+}
+
+// Test where combo chords involve tap-hold keys:
+// KC_A + LCTL_T(KC_D) = KC_Y,
+// LCTL_T(KC_D) + LT(1, KC_E) = KC_Z,
+TEST_P(CapsWord, ComboModTapKey) {
+ TestDriver driver;
+ KeymapKey key_a(0, 0, 0, KC_A);
+ KeymapKey key_modtap_d(0, 0, 1, LCTL_T(KC_D));
+ KeymapKey key_layertap_e(0, 0, 2, LT(1, KC_E));
+ set_keymap({key_a, key_modtap_d, key_layertap_e});
+
+ EXPECT_EMPTY_OR_LSFT(driver).Times(AnyNumber());
+ { // Expect: "A, D, E, Y, Z".
+ InSequence s;
+ EXPECT_REPORT(driver, (KC_LSFT, KC_A));
+ EXPECT_REPORT(driver, (KC_LSFT, KC_D));
+ EXPECT_REPORT(driver, (KC_LSFT, KC_E));
+ EXPECT_REPORT(driver, (KC_LSFT, KC_Y));
+ EXPECT_REPORT(driver, (KC_LSFT, KC_Z));
+ }
+
+ caps_word_on();
+ tap_key(key_a);
+ tap_key(key_modtap_d);
+ tap_key(key_layertap_e);
+ tap_combo({key_a, key_modtap_d}); // AD combo types "y".
+ tap_combo({key_modtap_d, key_layertap_e}); // DE combo types "z".
+
+ EXPECT_TRUE(is_caps_word_on());
+ caps_word_off();
+
+ testing::Mock::VerifyAndClearExpectations(&driver);
+}
+
+// clang-format off
+INSTANTIATE_TEST_CASE_P(
+ Combos,
+ CapsWord,
+ ::testing::Values(
+ TestParams{"AutoshiftDisabled", false},
+ TestParams{"AutoshiftEnabled", true}
+ ),
+ TestParams::GetName
+ );
+// clang-format on
+
+} // namespace
diff --git a/tests/caps_word/test_caps_word.cpp b/tests/caps_word/test_caps_word.cpp
index 0af4b0175d..3f59ed3744 100644
--- a/tests/caps_word/test_caps_word.cpp
+++ b/tests/caps_word/test_caps_word.cpp
@@ -25,10 +25,47 @@ using ::testing::AnyOf;
using ::testing::InSequence;
using ::testing::TestParamInfo;
+namespace {
+
+bool press_user_default(uint16_t keycode) {
+ switch (keycode) {
+ // Keycodes that continue Caps Word, with shift applied.
+ case KC_A ... KC_Z:
+ case KC_MINS:
+ add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to next key.
+ return true;
+
+ // Keycodes that continue Caps Word, without shifting.
+ case KC_1 ... KC_0:
+ case KC_BSPC:
+ case KC_DEL:
+ case KC_UNDS:
+ return true;
+
+ default:
+ return false; // Deactivate Caps Word.
+ }
+}
+
+uint16_t passed_keycode;
+bool press_user_save_passed_keycode(uint16_t keycode) {
+ passed_keycode = keycode;
+ return true;
+}
+
+bool (*press_user_fun)(uint16_t) = press_user_default;
+
+extern "C" {
+bool caps_word_press_user(uint16_t keycode) {
+ return press_user_fun(keycode);
+}
+} // extern "C"
+
class CapsWord : public TestFixture {
public:
void SetUp() override {
caps_word_off();
+ press_user_fun = press_user_default;
}
};
@@ -226,6 +263,126 @@ TEST_F(CapsWord, ShiftsAltGrSymbols) {
testing::Mock::VerifyAndClearExpectations(&driver);
}
+// Tests typing "AltGr + A" using a mod-tap key.
+TEST_F(CapsWord, ShiftsModTapAltGrSymbols) {
+ TestDriver driver;
+ KeymapKey key_a(0, 0, 0, KC_A);
+ KeymapKey key_altgr_t(0, 1, 0, RALT_T(KC_B));
+ set_keymap({key_a, key_altgr_t});
+
+ // Allow any number of reports with no keys or only modifiers.
+ // clang-format off
+ EXPECT_CALL(driver, send_keyboard_mock(AnyOf(
+ KeyboardReport(),
+ KeyboardReport(KC_RALT),
+ KeyboardReport(KC_LSFT, KC_RALT))))
+ .Times(AnyNumber());
+ // Expect "Shift + AltGr + A".
+ EXPECT_REPORT(driver, (KC_LSFT, KC_RALT, KC_A));
+ // clang-format on
+
+ // Turn on Caps Word and type "AltGr + A".
+ caps_word_on();
+
+ key_altgr_t.press();
+ idle_for(TAPPING_TERM + 1);
+ tap_key(key_a);
+ run_one_scan_loop();
+ key_altgr_t.release();
+
+ EXPECT_TRUE(is_caps_word_on());
+ testing::Mock::VerifyAndClearExpectations(&driver);
+}
+
+struct CapsWordPressUserParams {
+ std::string name;
+ uint16_t keycode;
+ uint16_t delay_ms;
+ uint16_t expected_passed_keycode;
+ bool continues_caps_word;
+
+ static const std::string& GetName(const TestParamInfo<CapsWordPressUserParams>& info) {
+ return info.param.name;
+ }
+};
+
+class CapsWordPressUser : public ::testing::WithParamInterface<CapsWordPressUserParams>, public CapsWord {
+ void SetUp() override {
+ caps_word_on();
+ passed_keycode = KC_NO;
+ press_user_fun = press_user_save_passed_keycode;
+ }
+};
+
+// Tests keycodes passed to caps_word_press_user() function for various keys.
+TEST_P(CapsWordPressUser, KeyCode) {
+ TestDriver driver;
+ KeymapKey key(0, 0, 0, GetParam().keycode);
+ set_keymap({key});
+
+ EXPECT_ANY_REPORT(driver).Times(AnyNumber());
+ tap_key(key, GetParam().delay_ms);
+
+ EXPECT_EQ(passed_keycode, GetParam().expected_passed_keycode);
+ EXPECT_EQ(is_caps_word_on(), GetParam().continues_caps_word);
+ clear_oneshot_mods();
+ testing::Mock::VerifyAndClearExpectations(&driver);
+}
+
+const uint16_t LT_1_KC_A = LT(1, KC_A);
+// clang-format off
+INSTANTIATE_TEST_CASE_P(
+ PressUser,
+ CapsWordPressUser,
+ ::testing::Values(
+ CapsWordPressUserParams{
+ "KC_A", KC_A, 1, KC_A, true},
+ CapsWordPressUserParams{
+ "KC_HASH", KC_HASH, 1, KC_HASH, true},
+ CapsWordPressUserParams{
+ "KC_LSFT", KC_LSFT, 1, KC_LSFT, true},
+ CapsWordPressUserParams{
+ "KC_RSFT", KC_RSFT, 1, KC_RSFT, true},
+ CapsWordPressUserParams{
+ "LSFT_T_tapped", LSFT_T(KC_A), 1, KC_A, true},
+ CapsWordPressUserParams{
+ "LSFT_T_held", LSFT_T(KC_A), TAPPING_TERM + 1, KC_LSFT, true},
+ CapsWordPressUserParams{
+ "RSFT_T_held", RSFT_T(KC_A), TAPPING_TERM + 1, KC_RSFT, true},
+ CapsWordPressUserParams{
+ "RSA_T_held", RSA_T(KC_A), TAPPING_TERM + 1, RSFT(KC_RALT), true},
+ // Holding a mod-tap other than Shift or AltGr stops Caps Word.
+ CapsWordPressUserParams{
+ "LCTL_T_held", LCTL_T(KC_A), TAPPING_TERM + 1, KC_NO, false},
+ CapsWordPressUserParams{
+ "LALT_T_held", LALT_T(KC_A), TAPPING_TERM + 1, KC_NO, false},
+ CapsWordPressUserParams{
+ "LGUI_T_held", LGUI_T(KC_A), TAPPING_TERM + 1, KC_NO, false},
+ // Layer keys are ignored and continue Caps Word.
+ CapsWordPressUserParams{
+ "MO", MO(1), 1, KC_NO, true},
+ CapsWordPressUserParams{
+ "TO", TO(1), 1, KC_NO, true},
+ CapsWordPressUserParams{
+ "TG", TG(1), 1, KC_NO, true},
+ CapsWordPressUserParams{
+ "TT", TT(1), 1, KC_NO, true},
+ CapsWordPressUserParams{
+ "OSL", OSL(1), 1, KC_NO, true},
+ CapsWordPressUserParams{
+ "LT_held", LT_1_KC_A, TAPPING_TERM + 1, KC_NO, true},
+ // AltGr keys are ignored and continue Caps Word.
+ CapsWordPressUserParams{
+ "KC_RALT", KC_RALT, 1, KC_NO, true},
+ CapsWordPressUserParams{
+ "OSM_MOD_RALT", OSM(MOD_RALT), 1, KC_NO, true},
+ CapsWordPressUserParams{
+ "RALT_T_held", RALT_T(KC_A), TAPPING_TERM + 1, KC_NO, true}
+ ),
+ CapsWordPressUserParams::GetName
+ );
+// clang-format on
+
struct CapsWordBothShiftsParams {
std::string name;
uint16_t left_shift_keycode;
@@ -435,3 +592,5 @@ INSTANTIATE_TEST_CASE_P(
CapsWordDoubleTapShiftParams::GetName
);
// clang-format on
+
+} // namespace
diff --git a/tests/tap_dance/config.h b/tests/tap_dance/config.h
new file mode 100644
index 0000000000..6aada3efd3
--- /dev/null
+++ b/tests/tap_dance/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2022 Jouke Witteveen
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "test_common.h"
diff --git a/tests/tap_dance/examples.c b/tests/tap_dance/examples.c
new file mode 100644
index 0000000000..4a5be41b08
--- /dev/null
+++ b/tests/tap_dance/examples.c
@@ -0,0 +1,199 @@
+/* Copyright 2022 Jouke Witteveen
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You 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 "examples.h"
+
+// Example code from the tap dance documentation, adapted for testing
+
+// clang-format off
+
+// Example 1
+
+void dance_egg(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count >= 100) {
+ // SEND_STRING("Safety dance!");
+ tap_code(KC_C);
+ reset_tap_dance(state);
+ }
+}
+
+
+// Example 2
+
+void dance_flsh_each(qk_tap_dance_state_t *state, void *user_data) {
+ switch (state->count) {
+ case 1:
+ register_code(KC_3);
+ break;
+ case 2:
+ register_code(KC_2);
+ break;
+ case 3:
+ register_code(KC_1);
+ break;
+ case 4:
+ unregister_code(KC_3);
+ // wait_ms(50);
+ unregister_code(KC_2);
+ // wait_ms(50);
+ unregister_code(KC_1);
+ }
+}
+
+void dance_flsh_finished(qk_tap_dance_state_t *state, void *user_data) {
+ if (state->count >= 4) {
+ // reset_keyboard();
+ tap_code(KC_R);
+ }
+}
+
+void dance_flsh_reset(qk_tap_dance_state_t *state, void *user_data) {
+ unregister_code(KC_1);
+ // wait_ms(50);
+ unregister_code(KC_2);
+ // wait_ms(50);
+ unregister_code(KC_3);
+}
+
+
+// Example 3
+
+typedef struct {
+ uint16_t tap;
+ uint16_t hold;
+ uint16_t held;
+} tap_dance_tap_hold_t;
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ qk_tap_dance_action_t *action;
+
+ switch (keycode) {
+ case TD(CT_CLN):
+ action = &tap_dance_actions[TD_INDEX(keycode)];
+ if (!record->event.pressed && action->state.count && !action->state.finished) {
+ tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
+ tap_code16(tap_hold->tap);
+ }
+ }
+ return true;
+}
+
+void tap_dance_tap_hold_finished(qk_tap_dance_state_t *state, void *user_data) {
+ tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data;
+
+ if (state->pressed) {
+ if (state->count == 1
+#ifndef PERMISSIVE_HOLD
+ && !state->interrupted
+#endif
+ ) {
+ register_code16(tap_hold->hold);
+ tap_hold->held = tap_hold->hold;
+ } else {
+ register_code16(tap_hold->tap);
+ tap_hold->held = tap_hold->tap;
+ }
+ }
+}
+
+void tap_dance_tap_hold_reset(qk_tap_dance_state_t *state, void *user_data) {
+ tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data;
+
+ if (tap_hold->held) {
+ unregister_code16(tap_hold->held);
+ tap_hold->held = 0;
+ }
+}
+
+#define ACTION_TAP_DANCE_TAP_HOLD(tap, hold) \
+ { .fn = {NULL, tap_dance_tap_hold_finished, tap_dance_tap_hold_reset}, .user_data = (void *)&((tap_dance_tap_hold_t){tap, hold, 0}), }
+
+
+// Example 4
+
+typedef enum {
+ TD_NONE,
+ TD_UNKNOWN,
+ TD_SINGLE_TAP,
+ TD_SINGLE_HOLD,
+ TD_DOUBLE_TAP,
+ TD_DOUBLE_HOLD,
+ TD_DOUBLE_SINGLE_TAP,
+ TD_TRIPLE_TAP,
+ TD_TRIPLE_HOLD
+} td_state_t;
+
+typedef struct {
+ bool is_press_action;
+ td_state_t state;
+} td_tap_t;
+
+td_state_t cur_dance(qk_tap_dance_state_t *state) {
+ if (state->count == 1) {
+ if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;
+ else return TD_SINGLE_HOLD;
+ } else if (state->count == 2) {
+ if (state->interrupted) return TD_DOUBLE_SINGLE_TAP;
+ else if (state->pressed) return TD_DOUBLE_HOLD;
+ else return TD_DOUBLE_TAP;
+ }
+
+ if (state->count == 3) {
+ if (state->interrupted || !state->pressed) return TD_TRIPLE_TAP;
+ else return TD_TRIPLE_HOLD;
+ } else return TD_UNKNOWN;
+}
+
+static td_tap_t xtap_state = {
+ .is_press_action = true,
+ .state = TD_NONE
+};
+
+void x_finished(qk_tap_dance_state_t *state, void *user_data) {
+ xtap_state.state = cur_dance(state);
+ switch (xtap_state.state) {
+ case TD_SINGLE_TAP: register_code(KC_X); break;
+ case TD_SINGLE_HOLD: register_code(KC_LCTL); break;
+ case TD_DOUBLE_TAP: register_code(KC_ESC); break;
+ case TD_DOUBLE_HOLD: register_code(KC_LALT); break;
+ case TD_DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X);
+ default: break; // Not present in documentation
+ }
+}
+
+void x_reset(qk_tap_dance_state_t *state, void *user_data) {
+ switch (xtap_state.state) {
+ case TD_SINGLE_TAP: unregister_code(KC_X); break;
+ case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break;
+ case TD_DOUBLE_TAP: unregister_code(KC_ESC); break;
+ case TD_DOUBLE_HOLD: unregister_code(KC_LALT);
+ case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_X);
+ default: break; // Not present in documentation
+ }
+ xtap_state.state = TD_NONE;
+}
+
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
+ [CT_EGG] = ACTION_TAP_DANCE_FN(dance_egg),
+ [CT_FLSH] = ACTION_TAP_DANCE_FN_ADVANCED(dance_flsh_each, dance_flsh_finished, dance_flsh_reset),
+ [CT_CLN] = ACTION_TAP_DANCE_TAP_HOLD(KC_COLN, KC_SCLN),
+ [X_CTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, x_finished, x_reset)
+};
+
+// clang-format on
diff --git a/tests/tap_dance/examples.h b/tests/tap_dance/examples.h
new file mode 100644
index 0000000000..2622af6b2f
--- /dev/null
+++ b/tests/tap_dance/examples.h
@@ -0,0 +1,33 @@
+/* Copyright 2022 Jouke Witteveen
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 __cplusplus
+extern "C" {
+#endif
+
+enum {
+ TD_ESC_CAPS,
+ CT_EGG,
+ CT_FLSH,
+ CT_CLN,
+ X_CTL,
+};
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/tests/tap_dance/test.mk b/tests/tap_dance/test.mk
new file mode 100644
index 0000000000..041d9b4dc9
--- /dev/null
+++ b/tests/tap_dance/test.mk
@@ -0,0 +1,22 @@
+# Copyright 2022 Jouke Witteveen
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# --------------------------------------------------------------------------------
+# Keep this file, even if it is empty, as a marker that this folder contains tests
+# --------------------------------------------------------------------------------
+
+TAP_DANCE_ENABLE = yes
+
+SRC += examples.c
diff --git a/tests/tap_dance/test_examples.cpp b/tests/tap_dance/test_examples.cpp
new file mode 100644
index 0000000000..6dabc45513
--- /dev/null
+++ b/tests/tap_dance/test_examples.cpp
@@ -0,0 +1,318 @@
+/* Copyright 2022 Jouke Witteveen
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "keyboard_report_util.hpp"
+#include "keycode.h"
+#include "test_common.hpp"
+#include "action_tapping.h"
+#include "test_keymap_key.hpp"
+#include "examples.h"
+
+using testing::_;
+using testing::InSequence;
+
+class TapDance : public TestFixture {};
+
+TEST_F(TapDance, DoubleTap) {
+ TestDriver driver;
+ InSequence s;
+ auto key_esc_caps = KeymapKey{0, 1, 0, TD(TD_ESC_CAPS)};
+
+ set_keymap({key_esc_caps});
+
+ /* The tap dance key does nothing on the first press */
+ key_esc_caps.press();
+ run_one_scan_loop();
+ key_esc_caps.release();
+ EXPECT_NO_REPORT(driver);
+
+ /* We get the key press and the release on timeout */
+ idle_for(TAPPING_TERM);
+ EXPECT_REPORT(driver, (KC_ESC));
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+
+ /* Double tap gets us the second key */
+ tap_key(key_esc_caps);
+ EXPECT_NO_REPORT(driver);
+ key_esc_caps.press();
+ EXPECT_REPORT(driver, (KC_CAPS));
+ run_one_scan_loop();
+ key_esc_caps.release();
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+}
+
+TEST_F(TapDance, DoubleTapWithMod) {
+ TestDriver driver;
+ InSequence s;
+ auto key_esc_caps = KeymapKey{0, 1, 0, TD(TD_ESC_CAPS)};
+ auto key_shift = KeymapKey{0, 2, 0, KC_LSFT};
+
+ set_keymap({key_esc_caps, key_shift});
+
+ /* The tap dance key does nothing on the first press */
+ key_shift.press();
+ EXPECT_REPORT(driver, (KC_LSFT));
+ run_one_scan_loop();
+ key_esc_caps.press();
+ run_one_scan_loop();
+
+ key_esc_caps.release();
+ key_shift.release();
+ EXPECT_EMPTY_REPORT(driver);
+
+ /* We get the key press and the release */
+ idle_for(TAPPING_TERM);
+ EXPECT_REPORT(driver, (KC_LSFT));
+ EXPECT_REPORT(driver, (KC_LSFT, KC_ESC));
+ EXPECT_REPORT(driver, (KC_LSFT));
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+
+ /* Double tap gets us the second key */
+ key_shift.press();
+ EXPECT_REPORT(driver, (KC_LSFT));
+ run_one_scan_loop();
+ tap_key(key_esc_caps);
+ EXPECT_NO_REPORT(driver);
+ key_shift.release();
+ key_esc_caps.press();
+ EXPECT_REPORT(driver, (KC_LSFT, KC_CAPS));
+ EXPECT_REPORT(driver, (KC_CAPS));
+ run_one_scan_loop();
+ key_esc_caps.release();
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+}
+
+TEST_F(TapDance, DoubleTapInterrupted) {
+ TestDriver driver;
+ InSequence s;
+ auto key_esc_caps = KeymapKey{0, 1, 0, TD(TD_ESC_CAPS)};
+ auto regular_key = KeymapKey(0, 2, 0, KC_A);
+
+ set_keymap({key_esc_caps, regular_key});
+
+ /* Interrupted double tap */
+ tap_key(key_esc_caps);
+ regular_key.press();
+ /* Immediate tap of the first key */
+ EXPECT_REPORT(driver, (KC_ESC));
+ EXPECT_EMPTY_REPORT(driver);
+ /* Followed by the interrupting key */
+ EXPECT_REPORT(driver, (KC_A));
+ run_one_scan_loop();
+ regular_key.release();
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+
+ /* Second tap after being interrupted acts as a single tap */
+ key_esc_caps.press();
+ run_one_scan_loop();
+ key_esc_caps.release();
+ idle_for(TAPPING_TERM);
+ EXPECT_REPORT(driver, (KC_ESC));
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+}
+
+TEST_F(TapDance, DanceFn) {
+ TestDriver driver;
+ InSequence s;
+ auto key_egg = KeymapKey(0, 1, 0, TD(CT_EGG));
+
+ set_keymap({key_egg});
+
+ /* 99 taps do nothing */
+ for (int i = 0; i < 99; i++) {
+ run_one_scan_loop();
+ key_egg.press();
+ run_one_scan_loop();
+ key_egg.release();
+ }
+ idle_for(TAPPING_TERM);
+ EXPECT_NO_REPORT(driver);
+ run_one_scan_loop();
+
+ /* 100 taps trigger the action */
+ for (int i = 0; i < 100; i++) {
+ run_one_scan_loop();
+ key_egg.press();
+ run_one_scan_loop();
+ key_egg.release();
+ }
+ idle_for(TAPPING_TERM);
+ EXPECT_REPORT(driver, (KC_C));
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+
+ /* 250 taps act the same as 100 taps */
+ /* Taps are counted in an uint8_t, so the count overflows after 255 taps */
+ for (int i = 0; i < 250; i++) {
+ run_one_scan_loop();
+ key_egg.press();
+ run_one_scan_loop();
+ key_egg.release();
+ }
+ idle_for(TAPPING_TERM);
+ EXPECT_REPORT(driver, (KC_C));
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+}
+
+TEST_F(TapDance, DanceFnAdvanced) {
+ TestDriver driver;
+ InSequence s;
+ auto key_flsh = KeymapKey(0, 1, 0, TD(CT_FLSH));
+
+ set_keymap({key_flsh});
+
+ /* Three taps don't trigger a reset */
+ EXPECT_REPORT(driver, (KC_3));
+ EXPECT_REPORT(driver, (KC_3, KC_2));
+ EXPECT_REPORT(driver, (KC_3, KC_2, KC_1));
+ for (int i = 0; i < 3; i++) {
+ run_one_scan_loop();
+ key_flsh.press();
+ run_one_scan_loop();
+ key_flsh.release();
+ }
+ idle_for(TAPPING_TERM);
+ EXPECT_REPORT(driver, (KC_3, KC_2));
+ EXPECT_REPORT(driver, (KC_3));
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+
+ /* Four taps trigger a reset */
+ EXPECT_REPORT(driver, (KC_3));
+ EXPECT_REPORT(driver, (KC_3, KC_2));
+ EXPECT_REPORT(driver, (KC_3, KC_2, KC_1));
+ EXPECT_REPORT(driver, (KC_2, KC_1));
+ EXPECT_REPORT(driver, (KC_1));
+ EXPECT_EMPTY_REPORT(driver);
+ for (int i = 0; i < 4; i++) {
+ run_one_scan_loop();
+ key_flsh.press();
+ run_one_scan_loop();
+ key_flsh.release();
+ }
+ idle_for(TAPPING_TERM);
+ EXPECT_REPORT(driver, (KC_R));
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+}
+
+TEST_F(TapDance, TapHold) {
+ TestDriver driver;
+ InSequence s;
+ auto key_cln = KeymapKey{0, 1, 0, TD(CT_CLN)};
+
+ set_keymap({key_cln});
+
+ /* Short taps fire on release */
+ key_cln.press();
+ run_one_scan_loop();
+ key_cln.release();
+ EXPECT_REPORT(driver, (KC_LSFT));
+ EXPECT_REPORT(driver, (KC_LSFT, KC_SCLN));
+ EXPECT_REPORT(driver, (KC_LSFT));
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+
+ /* Holds immediate following a tap apply to the tap key */
+ key_cln.press();
+ EXPECT_REPORT(driver, (KC_LSFT));
+ EXPECT_REPORT(driver, (KC_LSFT, KC_SCLN));
+ idle_for(TAPPING_TERM * 2);
+ key_cln.release();
+ EXPECT_REPORT(driver, (KC_LSFT));
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+
+ /* Holds trigger the hold key */
+ key_cln.press();
+ idle_for(TAPPING_TERM);
+ run_one_scan_loop();
+ EXPECT_REPORT(driver, (KC_SCLN));
+ run_one_scan_loop();
+ key_cln.release();
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+}
+
+TEST_F(TapDance, QuadFunction) {
+ TestDriver driver;
+ InSequence s;
+ auto key_quad = KeymapKey{0, 1, 0, TD(X_CTL)};
+ auto regular_key = KeymapKey(0, 2, 0, KC_A);
+
+ set_keymap({key_quad, regular_key});
+
+ /* Single tap */
+ key_quad.press();
+ run_one_scan_loop();
+ key_quad.release();
+ idle_for(TAPPING_TERM);
+ EXPECT_REPORT(driver, (KC_X));
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+
+ /* Single hold */
+ key_quad.press();
+ run_one_scan_loop();
+ idle_for(TAPPING_TERM);
+ EXPECT_REPORT(driver, (KC_LCTL));
+ run_one_scan_loop();
+ key_quad.release();
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+
+ /* Double tap */
+ tap_key(key_quad);
+ key_quad.press();
+ run_one_scan_loop();
+ key_quad.release();
+ idle_for(TAPPING_TERM);
+ EXPECT_REPORT(driver, (KC_ESC));
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+
+ /* Double tap and hold */
+ tap_key(key_quad);
+ key_quad.press();
+ run_one_scan_loop();
+ idle_for(TAPPING_TERM);
+ EXPECT_REPORT(driver, (KC_LALT));
+ run_one_scan_loop();
+ key_quad.release();
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+
+ /* Double single tap */
+ tap_key(key_quad);
+ tap_key(key_quad);
+ regular_key.press();
+ EXPECT_REPORT(driver, (KC_X));
+ EXPECT_EMPTY_REPORT(driver);
+ EXPECT_REPORT(driver, (KC_X));
+ EXPECT_EMPTY_REPORT(driver);
+ EXPECT_REPORT(driver, (KC_A));
+ run_one_scan_loop();
+ regular_key.release();
+ EXPECT_EMPTY_REPORT(driver);
+ run_one_scan_loop();
+}
diff --git a/tests/tap_hold_configurations/default_mod_tap/test_tap_hold.cpp b/tests/tap_hold_configurations/default_mod_tap/test_tap_hold.cpp
index 687a4e0318..b70efe4aed 100644
--- a/tests/tap_hold_configurations/default_mod_tap/test_tap_hold.cpp
+++ b/tests/tap_hold_configurations/default_mod_tap/test_tap_hold.cpp
@@ -140,8 +140,6 @@ TEST_F(DefaultTapHold, tap_regular_key_while_layer_tap_key_is_held) {
}
TEST_F(DefaultTapHold, tap_mod_tap_hold_key_two_times) {
- GTEST_SKIP() << "TODO:Holding a modtap key results in out of bounds access to the keymap, this is a bug in QMK.";
-
TestDriver driver;
InSequence s;
auto mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P));
@@ -175,8 +173,6 @@ TEST_F(DefaultTapHold, tap_mod_tap_hold_key_two_times) {
}
TEST_F(DefaultTapHold, tap_mod_tap_hold_key_twice_and_hold_on_second_time) {
- GTEST_SKIP() << "TODO:Holding a modtap key results in out of bounds access to the keymap, this is a bug in QMK.";
-
TestDriver driver;
InSequence s;
auto mod_tap_hold_key = KeymapKey(0, 1, 0, SFT_T(KC_P));
@@ -217,7 +213,7 @@ TEST_F(DefaultTapHold, tap_and_hold_mod_tap_hold_key) {
set_keymap({mod_tap_hold_key});
/* Press mod-tap-hold key. */
- EXPECT_REPORT(driver, (KC_LSHIFT));
+ EXPECT_REPORT(driver, (KC_LEFT_SHIFT));
mod_tap_hold_key.press();
idle_for(TAPPING_TERM + 1);
testing::Mock::VerifyAndClearExpectations(&driver);
diff --git a/tests/tap_hold_configurations/permissive_hold/test_tap_hold.cpp b/tests/tap_hold_configurations/permissive_hold/test_tap_hold.cpp
index ef8d9a9c7f..74e81f347f 100644
--- a/tests/tap_hold_configurations/permissive_hold/test_tap_hold.cpp
+++ b/tests/tap_hold_configurations/permissive_hold/test_tap_hold.cpp
@@ -46,9 +46,9 @@ TEST_F(PermissiveHold, tap_regular_key_while_mod_tap_key_is_held) {
testing::Mock::VerifyAndClearExpectations(&driver);
/* Release regular key */
- EXPECT_REPORT(driver, (KC_LSHIFT));
- EXPECT_REPORT(driver, (KC_LSHIFT, regular_key.report_code));
- EXPECT_REPORT(driver, (KC_LSHIFT));
+ EXPECT_REPORT(driver, (KC_LEFT_SHIFT));
+ EXPECT_REPORT(driver, (KC_LEFT_SHIFT, regular_key.report_code));
+ EXPECT_REPORT(driver, (KC_LEFT_SHIFT));
regular_key.release();
run_one_scan_loop();
testing::Mock::VerifyAndClearExpectations(&driver);
@@ -81,9 +81,9 @@ TEST_F(PermissiveHold, tap_mod_tap_key_while_mod_tap_key_is_held) {
testing::Mock::VerifyAndClearExpectations(&driver);
/* Release second mod-tap-hold key */
- EXPECT_REPORT(driver, (KC_LSHIFT));
- EXPECT_REPORT(driver, (KC_LSHIFT, second_mod_tap_hold_key.report_code));
- EXPECT_REPORT(driver, (KC_LSHIFT));
+ EXPECT_REPORT(driver, (KC_LEFT_SHIFT));
+ EXPECT_REPORT(driver, (KC_LEFT_SHIFT, second_mod_tap_hold_key.report_code));
+ EXPECT_REPORT(driver, (KC_LEFT_SHIFT));
second_mod_tap_hold_key.release();
run_one_scan_loop();
testing::Mock::VerifyAndClearExpectations(&driver);
diff --git a/tests/tap_hold_configurations/retro_tapping/test_tap_hold.cpp b/tests/tap_hold_configurations/retro_tapping/test_tap_hold.cpp
index dc0de0e44d..e08c600dbd 100644
--- a/tests/tap_hold_configurations/retro_tapping/test_tap_hold.cpp
+++ b/tests/tap_hold_configurations/retro_tapping/test_tap_hold.cpp
@@ -42,7 +42,7 @@ TEST_F(RetroTapping, tap_and_hold_mod_tap_hold_key) {
/* Release mod-tap-hold key. */
/* TODO: Why is LSHIFT send at all? */
- EXPECT_REPORT(driver, (KC_LSHIFT));
+ EXPECT_REPORT(driver, (KC_LEFT_SHIFT));
EXPECT_EMPTY_REPORT(driver);
EXPECT_REPORT(driver, (KC_P));
EXPECT_EMPTY_REPORT(driver);
diff --git a/tests/tap_hold_configurations/tapping_force_hold/test_tap_hold.cpp b/tests/tap_hold_configurations/tapping_force_hold/test_tap_hold.cpp
index 2671862f2d..604f9a4a54 100644
--- a/tests/tap_hold_configurations/tapping_force_hold/test_tap_hold.cpp
+++ b/tests/tap_hold_configurations/tapping_force_hold/test_tap_hold.cpp
@@ -205,7 +205,7 @@ TEST_F(TappingForceHold, tap_mod_tap_hold_key_twice_and_hold_on_second_time) {
testing::Mock::VerifyAndClearExpectations(&driver);
/* Release mod-tap-hold key. */
- EXPECT_REPORT(driver, (KC_LSHIFT));
+ EXPECT_REPORT(driver, (KC_LEFT_SHIFT));
EXPECT_EMPTY_REPORT(driver);
mod_tap_hold_key.release();
run_one_scan_loop();
diff --git a/tests/test_common/test_fixture.cpp b/tests/test_common/test_fixture.cpp
index 5fc6964054..44694cd390 100644
--- a/tests/test_common/test_fixture.cpp
+++ b/tests/test_common/test_fixture.cpp
@@ -108,6 +108,22 @@ void TestFixture::tap_key(KeymapKey key, unsigned delay_ms) {
run_one_scan_loop();
}
+void TestFixture::tap_combo(const std::vector<KeymapKey>& chord_keys, unsigned delay_ms) {
+ for (KeymapKey key : chord_keys) { // Press each key.
+ key.press();
+ run_one_scan_loop();
+ }
+
+ if (delay_ms > 1) {
+ idle_for(delay_ms - 1);
+ }
+
+ for (KeymapKey key : chord_keys) { // Release each key.
+ key.release();
+ run_one_scan_loop();
+ }
+}
+
void TestFixture::set_keymap(std::initializer_list<KeymapKey> keys) {
this->keymap.clear();
for (auto& key : keys) {
diff --git a/tests/test_common/test_fixture.hpp b/tests/test_common/test_fixture.hpp
index 81906f76c7..2590acd006 100644
--- a/tests/test_common/test_fixture.hpp
+++ b/tests/test_common/test_fixture.hpp
@@ -53,6 +53,13 @@ class TestFixture : public testing::Test {
}
}
+ /**
+ * @brief Taps a combo with `delay_ms` delay between press and release.
+ *
+ * Example: `tap_combo({key_a, key_b})` to tap the chord A + B.
+ */
+ void tap_combo(const std::vector<KeymapKey>& chord_keys, unsigned delay_ms = 1);
+
void run_one_scan_loop();
void idle_for(unsigned ms);
diff --git a/tmk_core/protocol/arm_atsam/md_rgb_matrix.c b/tmk_core/protocol/arm_atsam/md_rgb_matrix.c
index 3ed83a44a6..52fe86d297 100644
--- a/tmk_core/protocol/arm_atsam/md_rgb_matrix.c
+++ b/tmk_core/protocol/arm_atsam/md_rgb_matrix.c
@@ -450,7 +450,7 @@ static void md_rgb_matrix_config_override(int i) {
float bo = 0;
float po;
- uint8_t highest_active_layer = biton32(layer_state);
+ uint8_t highest_active_layer = get_highest_layer(layer_state);
if (led_animation_circular) {
// TODO: should use min/max values from LED configuration instead of
diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c
index 19e2e858fc..eb9ef82554 100644
--- a/tmk_core/protocol/chibios/usb_main.c
+++ b/tmk_core/protocol/chibios/usb_main.c
@@ -32,6 +32,7 @@
#include "usb_main.h"
#include "host.h"
+#include "chibios_config.h"
#include "debug.h"
#include "suspend.h"
#ifdef SLEEP_LED_ENABLE
@@ -91,6 +92,13 @@ uint8_t extra_report_blank[3] = {0};
* ---------------------------------------------------------
*/
+/* USB Low Level driver specific endpoint fields */
+#if !defined(usb_lld_endpoint_fields)
+# define usb_lld_endpoint_fields \
+ 2, /* IN multiplier */ \
+ NULL, /* SETUP buffer (not a SETUP endpoint) */
+#endif
+
/* HID specific constants */
#define HID_GET_REPORT 0x01
#define HID_GET_IDLE 0x02
@@ -121,16 +129,15 @@ static const USBDescriptor *usb_get_descriptor_cb(USBDriver *usbp, uint8_t dtype
static USBInEndpointState kbd_ep_state;
/* keyboard endpoint initialization structure (IN) - see USBEndpointConfig comment at top of file */
static const USBEndpointConfig kbd_ep_config = {
- USB_EP_MODE_TYPE_INTR, /* Interrupt EP */
- NULL, /* SETUP packet notification callback */
- kbd_in_cb, /* IN notification callback */
- NULL, /* OUT notification callback */
- KEYBOARD_EPSIZE, /* IN maximum packet size */
- 0, /* OUT maximum packet size */
- &kbd_ep_state, /* IN Endpoint state */
- NULL, /* OUT endpoint state */
- 2, /* IN multiplier */
- NULL /* SETUP buffer (not a SETUP endpoint) */
+ USB_EP_MODE_TYPE_INTR, /* Interrupt EP */
+ NULL, /* SETUP packet notification callback */
+ kbd_in_cb, /* IN notification callback */
+ NULL, /* OUT notification callback */
+ KEYBOARD_EPSIZE, /* IN maximum packet size */
+ 0, /* OUT maximum packet size */
+ &kbd_ep_state, /* IN Endpoint state */
+ NULL, /* OUT endpoint state */
+ usb_lld_endpoint_fields /* USB driver specific endpoint fields */
};
#endif
@@ -140,16 +147,15 @@ static USBInEndpointState mouse_ep_state;
/* mouse endpoint initialization structure (IN) - see USBEndpointConfig comment at top of file */
static const USBEndpointConfig mouse_ep_config = {
- USB_EP_MODE_TYPE_INTR, /* Interrupt EP */
- NULL, /* SETUP packet notification callback */
- mouse_in_cb, /* IN notification callback */
- NULL, /* OUT notification callback */
- MOUSE_EPSIZE, /* IN maximum packet size */
- 0, /* OUT maximum packet size */
- &mouse_ep_state, /* IN Endpoint state */
- NULL, /* OUT endpoint state */
- 2, /* IN multiplier */
- NULL /* SETUP buffer (not a SETUP endpoint) */
+ USB_EP_MODE_TYPE_INTR, /* Interrupt EP */
+ NULL, /* SETUP packet notification callback */
+ mouse_in_cb, /* IN notification callback */
+ NULL, /* OUT notification callback */
+ MOUSE_EPSIZE, /* IN maximum packet size */
+ 0, /* OUT maximum packet size */
+ &mouse_ep_state, /* IN Endpoint state */
+ NULL, /* OUT endpoint state */
+ usb_lld_endpoint_fields /* USB driver specific endpoint fields */
};
#endif
@@ -159,20 +165,19 @@ static USBInEndpointState shared_ep_state;
/* shared endpoint initialization structure (IN) - see USBEndpointConfig comment at top of file */
static const USBEndpointConfig shared_ep_config = {
- USB_EP_MODE_TYPE_INTR, /* Interrupt EP */
- NULL, /* SETUP packet notification callback */
- shared_in_cb, /* IN notification callback */
- NULL, /* OUT notification callback */
- SHARED_EPSIZE, /* IN maximum packet size */
- 0, /* OUT maximum packet size */
- &shared_ep_state, /* IN Endpoint state */
- NULL, /* OUT endpoint state */
- 2, /* IN multiplier */
- NULL /* SETUP buffer (not a SETUP endpoint) */
+ USB_EP_MODE_TYPE_INTR, /* Interrupt EP */
+ NULL, /* SETUP packet notification callback */
+ shared_in_cb, /* IN notification callback */
+ NULL, /* OUT notification callback */
+ SHARED_EPSIZE, /* IN maximum packet size */
+ 0, /* OUT maximum packet size */
+ &shared_ep_state, /* IN Endpoint state */
+ NULL, /* OUT endpoint state */
+ usb_lld_endpoint_fields /* USB driver specific endpoint fields */
};
#endif
-#if STM32_USB_USE_OTG1
+#ifdef USB_ENDPOINTS_ARE_REORDERABLE
typedef struct {
size_t queue_capacity_in;
size_t queue_capacity_out;
@@ -199,23 +204,22 @@ typedef struct {
} usb_driver_config_t;
#endif
-#if STM32_USB_USE_OTG1
+#ifdef USB_ENDPOINTS_ARE_REORDERABLE
/* Reusable initialization structure - see USBEndpointConfig comment at top of file */
# define QMK_USB_DRIVER_CONFIG(stream, notification, fixedsize) \
{ \
.queue_capacity_in = stream##_IN_CAPACITY, .queue_capacity_out = stream##_OUT_CAPACITY, \
.inout_ep_config = \
{ \
- stream##_IN_MODE, /* Interrupt EP */ \
- NULL, /* SETUP packet notification callback */ \
- qmkusbDataTransmitted, /* IN notification callback */ \
- qmkusbDataReceived, /* OUT notification callback */ \
- stream##_EPSIZE, /* IN maximum packet size */ \
- stream##_EPSIZE, /* OUT maximum packet size */ \
- NULL, /* IN Endpoint state */ \
- NULL, /* OUT endpoint state */ \
- 2, /* IN multiplier */ \
- NULL /* SETUP buffer (not a SETUP endpoint) */ \
+ stream##_IN_MODE, /* Interrupt EP */ \
+ NULL, /* SETUP packet notification callback */ \
+ qmkusbDataTransmitted, /* IN notification callback */ \
+ qmkusbDataReceived, /* OUT notification callback */ \
+ stream##_EPSIZE, /* IN maximum packet size */ \
+ stream##_EPSIZE, /* OUT maximum packet size */ \
+ NULL, /* IN Endpoint state */ \
+ NULL, /* OUT endpoint state */ \
+ usb_lld_endpoint_fields /* USB driver specific endpoint fields */ \
}, \
.int_ep_config = \
{ \
@@ -227,8 +231,7 @@ typedef struct {
0, /* OUT maximum packet size */ \
NULL, /* IN Endpoint state */ \
NULL, /* OUT endpoint state */ \
- 2, /* IN multiplier */ \
- NULL, /* SETUP buffer (not a SETUP endpoint) */ \
+ usb_lld_endpoint_fields /* USB driver specific endpoint fields */ \
}, \
.config = { \
.usbp = &USB_DRIVER, \
@@ -251,29 +254,27 @@ typedef struct {
.queue_capacity_in = stream##_IN_CAPACITY, .queue_capacity_out = stream##_OUT_CAPACITY, \
.in_ep_config = \
{ \
- stream##_IN_MODE, /* Interrupt EP */ \
- NULL, /* SETUP packet notification callback */ \
- qmkusbDataTransmitted, /* IN notification callback */ \
- NULL, /* OUT notification callback */ \
- stream##_EPSIZE, /* IN maximum packet size */ \
- 0, /* OUT maximum packet size */ \
- NULL, /* IN Endpoint state */ \
- NULL, /* OUT endpoint state */ \
- 2, /* IN multiplier */ \
- NULL /* SETUP buffer (not a SETUP endpoint) */ \
+ stream##_IN_MODE, /* Interrupt EP */ \
+ NULL, /* SETUP packet notification callback */ \
+ qmkusbDataTransmitted, /* IN notification callback */ \
+ NULL, /* OUT notification callback */ \
+ stream##_EPSIZE, /* IN maximum packet size */ \
+ 0, /* OUT maximum packet size */ \
+ NULL, /* IN Endpoint state */ \
+ NULL, /* OUT endpoint state */ \
+ usb_lld_endpoint_fields /* USB driver specific endpoint fields */ \
}, \
.out_ep_config = \
{ \
- stream##_OUT_MODE, /* Interrupt EP */ \
- NULL, /* SETUP packet notification callback */ \
- NULL, /* IN notification callback */ \
- qmkusbDataReceived, /* OUT notification callback */ \
- 0, /* IN maximum packet size */ \
- stream##_EPSIZE, /* OUT maximum packet size */ \
- NULL, /* IN Endpoint state */ \
- NULL, /* OUT endpoint state */ \
- 2, /* IN multiplier */ \
- NULL, /* SETUP buffer (not a SETUP endpoint) */ \
+ stream##_OUT_MODE, /* Interrupt EP */ \
+ NULL, /* SETUP packet notification callback */ \
+ NULL, /* IN notification callback */ \
+ qmkusbDataReceived, /* OUT notification callback */ \
+ 0, /* IN maximum packet size */ \
+ stream##_EPSIZE, /* OUT maximum packet size */ \
+ NULL, /* IN Endpoint state */ \
+ NULL, /* OUT endpoint state */ \
+ usb_lld_endpoint_fields /* USB driver specific endpoint fields */ \
}, \
.int_ep_config = \
{ \
@@ -285,8 +286,7 @@ typedef struct {
0, /* OUT maximum packet size */ \
NULL, /* IN Endpoint state */ \
NULL, /* OUT endpoint state */ \
- 2, /* IN multiplier */ \
- NULL, /* SETUP buffer (not a SETUP endpoint) */ \
+ usb_lld_endpoint_fields /* USB driver specific endpoint fields */ \
}, \
.config = { \
.usbp = &USB_DRIVER, \
@@ -488,7 +488,7 @@ static void usb_event_cb(USBDriver *usbp, usbevent_t event) {
usbInitEndpointI(usbp, SHARED_IN_EPNUM, &shared_ep_config);
#endif
for (int i = 0; i < NUM_USB_DRIVERS; i++) {
-#if STM32_USB_USE_OTG1
+#ifdef USB_ENDPOINTS_ARE_REORDERABLE
usbInitEndpointI(usbp, drivers.array[i].config.bulk_in, &drivers.array[i].inout_ep_config);
#else
usbInitEndpointI(usbp, drivers.array[i].config.bulk_in, &drivers.array[i].in_ep_config);
@@ -715,7 +715,7 @@ static const USBConfig usbcfg = {
*/
void init_usb_driver(USBDriver *usbp) {
for (int i = 0; i < NUM_USB_DRIVERS; i++) {
-#if STM32_USB_USE_OTG1
+#ifdef USB_ENDPOINTS_ARE_REORDERABLE
QMKUSBDriver *driver = &drivers.array[i].driver;
drivers.array[i].inout_ep_config.in_state = &drivers.array[i].in_ep_state;
drivers.array[i].inout_ep_config.out_state = &drivers.array[i].out_ep_state;
diff --git a/tmk_core/protocol/host.c b/tmk_core/protocol/host.c
index 053d2b79e3..3d8604d541 100644
--- a/tmk_core/protocol/host.c
+++ b/tmk_core/protocol/host.c
@@ -94,6 +94,11 @@ void host_mouse_send(report_mouse_t *report) {
#ifdef MOUSE_SHARED_EP
report->report_id = REPORT_ID_MOUSE;
#endif
+#ifdef MOUSE_EXTENDED_REPORT
+ // clip and copy to Boot protocol XY
+ report->boot_x = (report->x > 127) ? 127 : ((report->x < -127) ? -127 : report->x);
+ report->boot_y = (report->y > 127) ? 127 : ((report->y < -127) ? -127 : report->y);
+#endif
(*driver->send_mouse)(report);
}
diff --git a/tmk_core/protocol/midi/midi.c b/tmk_core/protocol/midi/midi.c
index f3792552f4..1ba3e73a40 100644
--- a/tmk_core/protocol/midi/midi.c
+++ b/tmk_core/protocol/midi/midi.c
@@ -19,7 +19,9 @@
#include "midi.h"
#include <string.h> //for memcpy
-#define MIN(x, y) (((x) < (y)) ? (x) : (y))
+#ifndef MIN
+# define MIN(x, y) (((x) < (y)) ? (x) : (y))
+#endif
#ifndef NULL
# define NULL 0
diff --git a/tmk_core/protocol/report.h b/tmk_core/protocol/report.h
index 7bbeb78af7..735ccdb4a1 100644
--- a/tmk_core/protocol/report.h
+++ b/tmk_core/protocol/report.h
@@ -201,15 +201,25 @@ typedef struct {
uint32_t usage;
} __attribute__((packed)) report_programmable_button_t;
+#ifdef MOUSE_EXTENDED_REPORT
+typedef int16_t mouse_xy_report_t;
+#else
+typedef int8_t mouse_xy_report_t;
+#endif
+
typedef struct {
#ifdef MOUSE_SHARED_EP
uint8_t report_id;
#endif
uint8_t buttons;
- int8_t x;
- int8_t y;
- int8_t v;
- int8_t h;
+#ifdef MOUSE_EXTENDED_REPORT
+ int8_t boot_x;
+ int8_t boot_y;
+#endif
+ mouse_xy_report_t x;
+ mouse_xy_report_t y;
+ int8_t v;
+ int8_t h;
} __attribute__((packed)) report_mouse_t;
typedef struct {
diff --git a/tmk_core/protocol/serial_soft.c b/tmk_core/protocol/serial_soft.c
deleted file mode 100644
index 8624ef733c..0000000000
--- a/tmk_core/protocol/serial_soft.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
-Copyright 2012 Jun WAKO <wakojun@gmail.com>
-
-This software is licensed with a Modified BSD License.
-All of this is supposed to be Free Software, Open Source, DFSG-free,
-GPL-compatible, and OK to use in both free and proprietary applications.
-Additions and corrections to this file are welcome.
-
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
-* Neither the name of the copyright holders nor the names of
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <stdbool.h>
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <util/delay.h>
-#include "serial.h"
-
-/*
- * Stupid Inefficient Busy-wait Software Serial
- * which is still useful for negative logic signal like Sun protocol
- * if it is not supported by hardware UART.
- *
- * TODO: delay is not accurate enough. Instruction cycle should be counted and inline assemby is needed.
- */
-
-#define WAIT_US (1000000L / SERIAL_SOFT_BAUD)
-
-#ifdef SERIAL_SOFT_LOGIC_NEGATIVE
-# define SERIAL_SOFT_RXD_IN() !(SERIAL_SOFT_RXD_READ())
-# define SERIAL_SOFT_TXD_ON() SERIAL_SOFT_TXD_LO()
-# define SERIAL_SOFT_TXD_OFF() SERIAL_SOFT_TXD_HI()
-#else
-# define SERIAL_SOFT_RXD_IN() !!(SERIAL_SOFT_RXD_READ())
-# define SERIAL_SOFT_TXD_ON() SERIAL_SOFT_TXD_HI()
-# define SERIAL_SOFT_TXD_OFF() SERIAL_SOFT_TXD_LO()
-#endif
-
-#ifdef SERIAL_SOFT_PARITY_EVEN
-# define SERIAL_SOFT_PARITY_VAL 0
-#elif defined(SERIAL_SOFT_PARITY_ODD)
-# define SERIAL_SOFT_PARITY_VAL 1
-#endif
-
-/* debug for signal timing, see debug pin with oscilloscope */
-#ifdef SERIAL_SOFT_DEBUG
-# define SERIAL_SOFT_DEBUG_INIT() (DDRD |= 1 << 7)
-# define SERIAL_SOFT_DEBUG_TGL() (PORTD ^= 1 << 7)
-#else
-# define SERIAL_SOFT_DEBUG_INIT()
-# define SERIAL_SOFT_DEBUG_TGL()
-#endif
-
-void serial_init(void) {
- SERIAL_SOFT_DEBUG_INIT();
-
- SERIAL_SOFT_RXD_INIT();
- SERIAL_SOFT_TXD_INIT();
-}
-
-/* RX ring buffer */
-#define RBUF_SIZE 8
-static uint8_t rbuf[RBUF_SIZE];
-static uint8_t rbuf_head = 0;
-static uint8_t rbuf_tail = 0;
-
-uint8_t serial_recv(void) {
- uint8_t data = 0;
- if (rbuf_head == rbuf_tail) {
- return 0;
- }
-
- data = rbuf[rbuf_tail];
- rbuf_tail = (rbuf_tail + 1) % RBUF_SIZE;
- return data;
-}
-
-int16_t serial_recv2(void) {
- uint8_t data = 0;
- if (rbuf_head == rbuf_tail) {
- return -1;
- }
-
- data = rbuf[rbuf_tail];
- rbuf_tail = (rbuf_tail + 1) % RBUF_SIZE;
- return data;
-}
-
-void serial_send(uint8_t data) {
- /* signal state: IDLE: ON, START: OFF, STOP: ON, DATA0: OFF, DATA1: ON */
-
-#ifdef SERIAL_SOFT_BIT_ORDER_MSB
-# ifdef SERIAL_SOFT_DATA_7BIT
- uint8_t mask = 0x40;
-# else
- uint8_t mask = 0x80;
-# endif
-#else
- uint8_t mask = 0x01;
-#endif
-
- uint8_t parity = 0;
-
- /* start bit */
- SERIAL_SOFT_TXD_OFF();
- _delay_us(WAIT_US);
-
-#ifdef SERIAL_SOFT_DATA_7BIT
- while (mask & 0x7F) {
-#else
- while (mask & 0xFF) {
-#endif
- if (data & mask) {
- SERIAL_SOFT_TXD_ON();
- parity ^= 1;
- } else {
- SERIAL_SOFT_TXD_OFF();
- }
- _delay_us(WAIT_US);
-
-#ifdef SERIAL_SOFT_BIT_ORDER_MSB
- mask >>= 1;
-#else
- mask <<= 1;
-#endif
- }
-
-#if defined(SERIAL_SOFT_PARITY_EVEN) || defined(SERIAL_SOFT_PARITY_ODD)
- /* to center of parity bit */
- if (parity != SERIAL_SOFT_PARITY_VAL) {
- SERIAL_SOFT_TXD_ON();
- } else {
- SERIAL_SOFT_TXD_OFF();
- }
- _delay_us(WAIT_US);
-#endif
-
- /* stop bit */
- SERIAL_SOFT_TXD_ON();
- _delay_us(WAIT_US);
-}
-
-/* detect edge of start bit */
-ISR(SERIAL_SOFT_RXD_VECT) {
- SERIAL_SOFT_DEBUG_TGL();
- SERIAL_SOFT_RXD_INT_ENTER();
-
- uint8_t data = 0;
-
-#ifdef SERIAL_SOFT_BIT_ORDER_MSB
-# ifdef SERIAL_SOFT_DATA_7BIT
- uint8_t mask = 0x40;
-# else
- uint8_t mask = 0x80;
-# endif
-#else
- uint8_t mask = 0x01;
-#endif
-
- uint8_t parity = 0;
-
- /* to center of start bit */
- _delay_us(WAIT_US / 2);
- SERIAL_SOFT_DEBUG_TGL();
- do {
- /* to center of next bit */
- _delay_us(WAIT_US);
-
- SERIAL_SOFT_DEBUG_TGL();
- if (SERIAL_SOFT_RXD_IN()) {
- data |= mask;
- parity ^= 1;
- }
-#ifdef SERIAL_SOFT_BIT_ORDER_MSB
- mask >>= 1;
-#else
- mask <<= 1;
-#endif
-#ifdef SERIAL_SOFT_DATA_7BIT
- } while (mask & 0x7F);
-#else
- } while (mask & 0xFF);
-#endif
-
-#if defined(SERIAL_SOFT_PARITY_EVEN) || defined(SERIAL_SOFT_PARITY_ODD)
- /* to center of parity bit */
- _delay_us(WAIT_US);
- if (SERIAL_SOFT_RXD_IN()) {
- parity ^= 1;
- }
- SERIAL_SOFT_DEBUG_TGL();
-#endif
-
- /* to center of stop bit */
- _delay_us(WAIT_US);
-
- uint8_t next = (rbuf_head + 1) % RBUF_SIZE;
-#if defined(SERIAL_SOFT_PARITY_EVEN) || defined(SERIAL_SOFT_PARITY_ODD)
- if ((parity == SERIAL_SOFT_PARITY_VAL) && next != rbuf_tail) {
-#else
- if (next != rbuf_tail) {
-#endif
- rbuf[rbuf_head] = data;
- rbuf_head = next;
- }
-
- SERIAL_SOFT_RXD_INT_EXIT();
- SERIAL_SOFT_DEBUG_TGL();
-}
diff --git a/tmk_core/protocol/usb_descriptor.c b/tmk_core/protocol/usb_descriptor.c
index 063bd2c3f1..21795cef60 100644
--- a/tmk_core/protocol/usb_descriptor.c
+++ b/tmk_core/protocol/usb_descriptor.c
@@ -45,6 +45,9 @@
# include "joystick.h"
#endif
+// TODO: wb32 support defines ISO macro which breaks PRODUCT stringification
+#undef ISO
+
// clang-format off
/*
@@ -126,14 +129,27 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM SharedReport[] = {
HID_RI_REPORT_SIZE(8, 0x01),
HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE),
- // X/Y position (2 bytes)
+# ifdef MOUSE_EXTENDED_REPORT
+ // Boot protocol XY ignored in Report protocol
+ HID_RI_REPORT_COUNT(8, 0x02),
+ HID_RI_REPORT_SIZE(8, 0x08),
+ HID_RI_INPUT(8, HID_IOF_CONSTANT),
+# endif
+ // X/Y position (2 or 4 bytes)
HID_RI_USAGE_PAGE(8, 0x01), // Generic Desktop
HID_RI_USAGE(8, 0x30), // X
HID_RI_USAGE(8, 0x31), // Y
+# ifndef MOUSE_EXTENDED_REPORT
HID_RI_LOGICAL_MINIMUM(8, -127),
HID_RI_LOGICAL_MAXIMUM(8, 127),
HID_RI_REPORT_COUNT(8, 0x02),
HID_RI_REPORT_SIZE(8, 0x08),
+# else
+ HID_RI_LOGICAL_MINIMUM(16, -32767),
+ HID_RI_LOGICAL_MAXIMUM(16, 32767),
+ HID_RI_REPORT_COUNT(8, 0x02),
+ HID_RI_REPORT_SIZE(8, 0x10),
+# endif
HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_RELATIVE),
// Vertical wheel (1 byte)
diff --git a/tmk_core/protocol/usb_descriptor.h b/tmk_core/protocol/usb_descriptor.h
index 6c3424145c..f8b7a863aa 100644
--- a/tmk_core/protocol/usb_descriptor.h
+++ b/tmk_core/protocol/usb_descriptor.h
@@ -47,6 +47,9 @@
#ifdef PROTOCOL_CHIBIOS
# include <hal.h>
+# if STM32_USB_USE_OTG1 == TRUE
+# define USB_ENDPOINTS_ARE_REORDERABLE
+# endif
#endif
/*
@@ -216,7 +219,7 @@ enum usb_endpoints {
#ifdef RAW_ENABLE
RAW_IN_EPNUM = NEXT_EPNUM,
-# if STM32_USB_USE_OTG1
+# ifdef USB_ENDPOINTS_ARE_REORDERABLE
# define RAW_OUT_EPNUM RAW_IN_EPNUM
# else
RAW_OUT_EPNUM = NEXT_EPNUM,
@@ -234,7 +237,7 @@ enum usb_endpoints {
// ChibiOS has enough memory and descriptor to actually enable the endpoint
// It could use the same endpoint numbers, as that's supported by ChibiOS
// But the QMK code currently assumes that the endpoint numbers are different
-# if STM32_USB_USE_OTG1
+# ifdef USB_ENDPOINTS_ARE_REORDERABLE
# define CONSOLE_OUT_EPNUM CONSOLE_IN_EPNUM
# else
CONSOLE_OUT_EPNUM = NEXT_EPNUM,
@@ -246,7 +249,7 @@ enum usb_endpoints {
#ifdef MIDI_ENABLE
MIDI_STREAM_IN_EPNUM = NEXT_EPNUM,
-# if STM32_USB_USE_OTG1
+# ifdef USB_ENDPOINTS_ARE_REORDERABLE
# define MIDI_STREAM_OUT_EPNUM MIDI_STREAM_IN_EPNUM
# else
MIDI_STREAM_OUT_EPNUM = NEXT_EPNUM,
@@ -256,7 +259,7 @@ enum usb_endpoints {
#ifdef VIRTSER_ENABLE
CDC_NOTIFICATION_EPNUM = NEXT_EPNUM,
CDC_IN_EPNUM = NEXT_EPNUM,
-# if STM32_USB_USE_OTG1
+# ifdef USB_ENDPOINTS_ARE_REORDERABLE
# define CDC_OUT_EPNUM CDC_IN_EPNUM
# else
CDC_OUT_EPNUM = NEXT_EPNUM,
@@ -264,7 +267,7 @@ enum usb_endpoints {
#endif
#ifdef JOYSTICK_ENABLE
JOYSTICK_IN_EPNUM = NEXT_EPNUM,
-# if STM32_USB_USE_OTG1
+# ifdef USB_ENDPOINTS_ARE_REORDERABLE
JOYSTICK_OUT_EPNUM = JOYSTICK_IN_EPNUM,
# else
JOYSTICK_OUT_EPNUM = NEXT_EPNUM,
@@ -274,7 +277,7 @@ enum usb_endpoints {
#ifdef DIGITIZER_ENABLE
# if !defined(DIGITIZER_SHARED_EP)
DIGITIZER_IN_EPNUM = NEXT_EPNUM,
-# if STM32_USB_USE_OTG1
+# ifdef USB_ENDPOINTS_ARE_REORDERABLE
DIGITIZER_OUT_EPNUM = DIGITIZER_IN_EPNUM,
# else
DIGITIZER_OUT_EPNUM = NEXT_EPNUM,
diff --git a/tmk_core/protocol/vusb/vusb.c b/tmk_core/protocol/vusb/vusb.c
index ebde955d3b..d07cc0d27e 100644
--- a/tmk_core/protocol/vusb/vusb.c
+++ b/tmk_core/protocol/vusb/vusb.c
@@ -482,14 +482,28 @@ const PROGMEM uchar shared_hid_report[] = {
0x75, 0x01, // Report Size (1)
0x81, 0x02, // Input (Data, Variable, Absolute)
- // X/Y position (2 bytes)
+# ifdef MOUSE_EXTENDED_REPORT
+ // Boot protocol XY ignored in Report protocol
+ 0x95, 0x02, // Report Count (2)
+ 0x75, 0x08, // Report Size (8)
+ 0x81, 0x03, // Input (Constant)
+# endif
+
+ // X/Y position (2 or 4 bytes)
0x05, 0x01, // Usage Page (Generic Desktop)
0x09, 0x30, // Usage (X)
0x09, 0x31, // Usage (Y)
+# ifndef MOUSE_EXTENDED_REPORT
0x15, 0x81, // Logical Minimum (-127)
0x25, 0x7F, // Logical Maximum (127)
0x95, 0x02, // Report Count (2)
0x75, 0x08, // Report Size (8)
+# else
+ 0x16, 0x01, 0x80, // Logical Minimum (-32767)
+ 0x26, 0xFF, 0x7F, // Logical Maximum (32767)
+ 0x95, 0x02, // Report Count (2)
+ 0x75, 0x10, // Report Size (16)
+# endif
0x81, 0x06, // Input (Data, Variable, Relative)
// Vertical wheel (1 byte)
diff --git a/users/333fred/333fred.c b/users/333fred/333fred.c
index 99f4e01685..ea7b904403 100644
--- a/users/333fred/333fred.c
+++ b/users/333fred/333fred.c
@@ -115,7 +115,7 @@ void tap_dance_process_keycode(uint16_t keycode) {
}
__attribute__ ((weak))
-void layer_state_set_rgb(uint32_t state) {}
+void layer_state_set_rgb(layer_state_t state) {}
layer_state_t layer_state_set_user(layer_state_t state) {
layer_state_set_rgb(state);
diff --git a/users/333fred/rgb.c b/users/333fred/rgb.c
index d287143302..ae21702030 100644
--- a/users/333fred/rgb.c
+++ b/users/333fred/rgb.c
@@ -23,8 +23,8 @@
#include "quantum.h"
#include "333fred.h"
-void layer_state_set_rgb(uint32_t state) {
- switch (biton32(state)) {
+void layer_state_set_rgb(layer_state_t state) {
+ switch (get_highest_layer(state)) {
case BASE:
// purple
rgblight_sethsv_noeeprom(210, 255, 20);
diff --git a/users/bbaserdem/.gitignore b/users/bbaserdem/.gitignore
new file mode 100644
index 0000000000..57bd0e43b4
--- /dev/null
+++ b/users/bbaserdem/.gitignore
@@ -0,0 +1,2 @@
+/secrets.h
+/secrets.c
diff --git a/users/bbaserdem/README.md b/users/bbaserdem/README.md
deleted file mode 100644
index eb8f33d422..0000000000
--- a/users/bbaserdem/README.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# Overview
-
-I have mostly ortholinear keyboards, which share a lot of functions.
-For this purpose, I collected them here.
-
-I have the following keymaps:
-
-* Gherkin (Does not use the user space)
-* XD75RE (Uses different keymap)
-* Let's Split
-* Let's Split It Up
-* Planck
-
-# Layout
-
-I use DVORAK with an unorthodox Turkish layout.
-If you wanna grab my code, and you used a layout with a persistent base
-layer change, change it to layer 0 before proceeding.
-
-# Layers
-
-* **Dvorak**: Base layer,with dvorak layout.
-* **Alternative**: Has alternate characters.
-* **Game**: Toggled from *Function*, comfortable for gaming use.
-* **Numeric**: Has numericals and symbols. Can be locked.
-* **Function**: Layer has media and function keys.
-* **Mouse**: Manipulates mouse. Can be locked.
-* **Music** Allows playing sounds.
-
-# Functionality
-
-* **RGB Backlight**: With layer indication, and ability to change base layer lighting mode.
-* **Secrets**: By placing a secrets.h, and not tracking it, passwords can be stored.
-* **Mouse**: Mouse emulation, complete with diagonal keys.
-* **Turkish**: An AltGr-like overlay that allows some non-common letters, in unicode.
-
-I suggest checking out how I enabled Turkish keys,
-how I planned out RGB lighting,
-and my mouse implementation;
-they might offer some insight into fringe user cases.
-
-# Issues
-
-All features are too big for the 32kB bootloader.
-Offenders are audio and rgb lights; it comes down to one or the other.
-
-~The Proton board, and rev 6 might fix that.~
-
-# Credits
-
-I have previously written my keymap by myself before, but I rewrote it here,
diff --git a/users/bbaserdem/bb-audio.c b/users/bbaserdem/bb-audio.c
new file mode 100644
index 0000000000..eef0cdf2f6
--- /dev/null
+++ b/users/bbaserdem/bb-audio.c
@@ -0,0 +1,82 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "bb-audio.h"
+/* AUDIO
+ * This contains some audio related stuff.
+ * There is no need to wrap this up with preprocessor commands;
+ * This is only called if audio is enabled
+ */
+
+float tone_game_intro[][2] = GAME_ON_SONG;
+float tone_game_outro[][2] = GAME_OFF_SONG;
+
+// Audio playing when layer changes
+layer_state_t layer_state_set_audio(layer_state_t state) {
+ // Get this layer
+ static bool prev_game = false;
+
+ // If entering the game layer; play the intro sound
+ if (layer_state_cmp(state, _GAME) && (!prev_game)) {
+ stop_all_notes();
+ PLAY_SONG(tone_game_intro);
+ prev_game = true;
+ }
+ // If exiting the game layer; play the outro sound
+ if ((!layer_state_cmp(state, _GAME)) && prev_game) {
+ stop_all_notes();
+ PLAY_SONG(tone_game_outro);
+ prev_game = false;
+ }
+ return state;
+}
+
+// Audio layer switch; add the music layer on top of this
+bool process_record_audio(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case MU_TOG:
+ if (!record->event.pressed) {
+ // On release, exit music mode if enabled
+ if (layer_state_is(_MUSI)) {
+ layer_off(_MUSI);
+ // If not enabled; turn off all layers and load music layer
+ } else {
+ layer_clear();
+ layer_on(_MUSI);
+ }
+ }
+ return true;
+ break;
+ case MU_ON:
+ if (!record->event.pressed) {
+ // On release, enter music mode
+ layer_clear();
+ layer_on(_MUSI);
+ }
+ return true;
+ break;
+ case MU_OFF:
+ if (!record->event.pressed) {
+ // On release, exit music mode
+ layer_off(_MUSI);
+ }
+ return true;
+ break;
+ }
+ return true;
+}
diff --git a/users/bbaserdem/bb-audio.h b/users/bbaserdem/bb-audio.h
new file mode 100644
index 0000000000..351061ab9a
--- /dev/null
+++ b/users/bbaserdem/bb-audio.h
@@ -0,0 +1,28 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+#include "bbaserdem.h"
+
+/* AUDIO
+ * Some functions to hook to some modes
+ */
+
+// Hook to layer change effects
+layer_state_t layer_state_set_audio(layer_state_t state);
+
+// Hook to audio keycodes
+bool process_record_audio(uint16_t keycode, keyrecord_t *record);
diff --git a/users/bbaserdem/bb-backlight.c b/users/bbaserdem/bb-backlight.c
new file mode 100644
index 0000000000..5eca1f2c11
--- /dev/null
+++ b/users/bbaserdem/bb-backlight.c
@@ -0,0 +1,30 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "bb-backlight.h"
+/* Replaced functions with noeeprom varieties; I don't need retention across
+ * booting.
+ */
+
+// Backlight LEDs
+void keyboard_post_init_backlight(void) {
+ backlight_enable();
+ backlight_level(2);
+# ifdef BACKLIGHT_BREATHING
+ breathing_enable();
+# endif // BACKLIGHT_BREATHING
+}
diff --git a/users/bbaserdem/bb-backlight.h b/users/bbaserdem/bb-backlight.h
new file mode 100644
index 0000000000..3af3137d9a
--- /dev/null
+++ b/users/bbaserdem/bb-backlight.h
@@ -0,0 +1,23 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+#include "bbaserdem.h"
+
+/* Hooks for backlight definitions
+ */
+
+void keyboard_post_init_backlight(void);
diff --git a/users/bbaserdem/bb-encoder.c b/users/bbaserdem/bb-encoder.c
new file mode 100644
index 0000000000..eea9751051
--- /dev/null
+++ b/users/bbaserdem/bb-encoder.c
@@ -0,0 +1,514 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "bb-encoder.h"
+
+// Need this to call velocikey activation
+#ifdef VELOCIKEY_ENABLE
+# include "velocikey.h"
+#endif // VELOCIKEY_ENABLE
+// Need memcpy and memcmp from string.h along with transfer stuff
+#ifdef OLED_ENABLE
+# include <string.h>
+#endif // OLED_ENABLE
+
+/* ROTARY ENCODER
+ * This contains my general rotary encoder code
+ * Encoders each have a list of different modes they can be in.
+ * Each mode also have an on click action as well.
+ * Modes can be cycled using either shift-click or ctrl-click
+ * Modes can be reset using OS click
+ * Some modes are only accessible through some keymap layers
+ */
+
+// Default state for the encoders
+void reset_encoder_state(void) {
+ userspace_config.e0base = 0;
+ userspace_config.e0point = 0;
+ userspace_config.e0rgb = 0;
+ userspace_config.e1base = 1;
+ userspace_config.e1point = 1;
+ userspace_config.e1rgb = 1;
+}
+
+// Encoder scroll functionality
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ uint8_t this_number;
+ // Differentiate layer roles
+ switch (get_highest_layer(layer_state)) {
+# ifdef RGB_MATRIX_ENABLE
+ case _MEDI:
+ // Get correct index
+ if (index == 0) {
+ this_number = userspace_config.e0rgb;
+ } else if (index == 1) {
+ this_number = userspace_config.e1rgb;
+ } else {
+ this_number = 128;
+ }
+ switch(this_number) {
+ case 0: // Effect the RGB mode
+ if (clockwise) {
+ rgb_matrix_step_noeeprom();
+ } else {
+ rgb_matrix_step_reverse_noeeprom();
+ }
+ break;
+ case 1: // Effect the RGB hue
+ if (clockwise) {
+ rgb_matrix_increase_hue_noeeprom();
+ } else {
+ rgb_matrix_decrease_hue_noeeprom();
+ }
+ break;
+ case 2: // Effect the RGB saturation
+ if (clockwise) {
+ rgb_matrix_increase_sat_noeeprom();
+ } else {
+ rgb_matrix_decrease_sat_noeeprom();
+ }
+ break;
+ case 3: // Effect the RGB brightness
+ if (clockwise) {
+ rgb_matrix_increase_val_noeeprom();
+ } else {
+ rgb_matrix_decrease_val_noeeprom();
+ }
+ break;
+ case 4: // Effect the RGB effect speed
+ if (clockwise) {
+ rgb_matrix_increase_speed_noeeprom();
+ } else {
+ rgb_matrix_decrease_speed_noeeprom();
+ }
+ break;
+ }
+ break;
+# endif // RGB_MATRIX_ENABLE
+# ifdef MOUSEKEY_ENABLE
+ case _MOUS:
+ // Get correct index
+ if (index == 0) {
+ this_number = userspace_config.e0point;
+ } else if (index == 1) {
+ this_number = userspace_config.e1point;
+ } else {
+ this_number = 128;
+ }
+ switch(this_number) {
+ case 0: // Move mouse on horizontal axis
+ if (clockwise) {
+ tap_code(KC_MS_R);
+ } else {
+ tap_code(KC_MS_L);
+ }
+ break;
+ case 1: // Move mouse on vertical axis
+ if (clockwise) {
+ tap_code(KC_MS_D);
+ } else {
+ tap_code(KC_MS_U);
+ }
+ break;
+ case 2: // Move mouse wheel on vertical axis
+ if (clockwise) {
+ tap_code(KC_WH_D);
+ } else {
+ tap_code(KC_WH_U);
+ }
+ break;
+ case 3: // Move mouse on horizontal axis
+ if (clockwise) {
+ tap_code(KC_WH_R);
+ } else {
+ tap_code(KC_WH_L);
+ }
+ break;
+ }
+ break;
+# endif // MOUSEKEY_ENABLE
+ default:
+ // Get correct index
+ if (index == 0) {
+ this_number = userspace_config.e0base;
+ } else if (index == 1) {
+ this_number = userspace_config.e1base;
+ } else {
+ this_number = 128;
+ }
+ switch(this_number) {
+ case 0: // Volume
+ if (clockwise) {
+ tap_code16(KC_VOLU);
+ } else {
+ tap_code16(KC_VOLD);
+ }
+ break;
+ case 1: // Song change
+ if (clockwise) {
+ tap_code16(KC_MNXT);
+ } else {
+ tap_code16(KC_MPRV);
+ }
+ break;
+ case 2: // Move to audio sink
+ if (clockwise) {
+ tap_code16(KC_F13);
+ } else {
+ tap_code16(S(KC_F13));
+ }
+ break;
+ case 3: // Volume of source
+ if (clockwise) {
+ tap_code16(S(KC_VOLU));
+ } else {
+ tap_code16(C(KC_VOLD));
+ }
+ break;
+ case 4: // Move to audio source
+ if (clockwise) {
+ tap_code16(C(KC_F13));
+ } else {
+ tap_code16(C(S(KC_F13)));
+ }
+ break;
+ case 5: // Left-right
+ if (clockwise) {
+ tap_code16(KC_RGHT);
+ } else {
+ tap_code16(KC_LEFT);
+ }
+ break;
+ case 6: // Up-down
+ if (clockwise) {
+ tap_code16(KC_DOWN);
+ } else {
+ tap_code16(KC_UP);
+ }
+ break;
+ case 7: // Page Up-down
+ if (clockwise) {
+ tap_code16(KC_PGDN);
+ } else {
+ tap_code16(KC_PGUP);
+ }
+ break;
+ case 8: // Delete
+ if (clockwise) {
+ tap_code16(KC_DEL);
+ } else {
+ tap_code16(KC_BSPC);
+ }
+ break;
+ }
+ break;
+ }
+ return false;
+}
+
+void encoder_click_action(uint8_t index) {
+ uint8_t this_number;
+ // Differentiate layer roles
+ switch (get_highest_layer(layer_state)) {
+# ifdef RGB_MATRIX_ENABLE
+ case _MEDI:
+ // Get correct index
+ if (index == 0) {
+ this_number = userspace_config.e0rgb;
+ } else if (index == 1) {
+ this_number = userspace_config.e1rgb;
+ } else {
+ this_number = 128;
+ }
+ switch(this_number) {
+ case 0: // Return to no animation
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+ break;
+ case 1:
+ case 2:
+ case 3: // Toggle
+ rgb_matrix_increase_val_noeeprom();
+ break;
+ case 4: // Toggle velocikey
+# ifdef VELOCIKEY_ENABLE
+ velocikey_toggle();
+# endif // VELOCIKEY_ENABLE
+ break;
+ }
+ break;
+# endif // RGB_MATRIX_ENABLE
+# ifdef MOUSEKEY_ENABLE
+ case _MOUS:
+ // Get correct index
+ if (index == 0) {
+ this_number = userspace_config.e0point;
+ } else if (index == 1) {
+ this_number = userspace_config.e1point;
+ } else {
+ this_number = 128;
+ }
+ switch(this_number) {
+ case 0: // Left click
+ tap_code16(KC_BTN1);
+ break;
+ case 1: // Right click
+ tap_code16(KC_BTN2);
+ break;
+ case 2:
+ case 3: // Middle click
+ tap_code16(KC_BTN2);
+ break;
+ }
+ break;
+# endif // MOUSEKEY_ENABLE
+ default:
+ // Get correct index
+ if (index == 0) {
+ this_number = userspace_config.e0base;
+ } else if (index == 1) {
+ this_number = userspace_config.e1base;
+ } else {
+ this_number = 128;
+ }
+ switch(this_number) {
+ case 0: // Toggle mute
+ case 2:
+ tap_code16(KC_MUTE);
+ break;
+ case 1: // Pause
+ tap_code16(KC_MPLY);
+ break;
+ case 3: // Mute source
+ case 4:
+ tap_code16(A(KC_MUTE));
+ break;
+ case 5: // Insert
+ tap_code16(KC_INS);
+ break;
+ case 6: // Capslock
+ tap_code16(KC_CAPS);
+ break;
+ case 7: // Redo
+ tap_code16(BB_REDO);
+ break;
+ case 8: // Undo
+ tap_code16(BB_UNDO);
+ break;
+ }
+ break;
+ }
+}
+
+bool process_record_encoder(uint16_t keycode, keyrecord_t *record) {
+ // Check if and which encoder
+ int encoder_index = -1;
+
+ // Get the pressed encoder
+ switch (keycode) {
+ case BB_ENC0:
+ encoder_index = 0;
+ break;
+ case BB_ENC1:
+ encoder_index = 1;
+ break;
+ }
+
+ // Activate encoder function of button
+ if ((encoder_index >= 0) & (!record->event.pressed)) {
+ // If shifted, move mode one point forward
+ if (get_mods() & MOD_MASK_SHIFT) {
+ switch (get_highest_layer(layer_state)) {
+# ifdef RGB_MATRIX_ENABLE
+ case _MEDI:
+ if (encoder_index == 0) {
+ userspace_config.e0rgb = (userspace_config.e0rgb + 1) % 5;
+ } else {
+ userspace_config.e1rgb = (userspace_config.e1rgb + 1) % 5;
+ }
+ break;
+# endif // RGB_MATRIX_ENABLE
+# ifdef MOUSEKEY_ENABLE
+ case _MOUS:
+ if (encoder_index == 0) {
+ userspace_config.e0point = (userspace_config.e0point + 1) % 4;
+ } else {
+ userspace_config.e1point = (userspace_config.e1point + 1) % 4;
+ }
+ break;
+# endif // MOUSEKEY_ENABLE
+ default:
+ if (encoder_index == 0) {
+ userspace_config.e0base = (userspace_config.e0base + 1) % 9;
+ } else {
+ userspace_config.e1base = (userspace_config.e1base + 1) % 9;
+ }
+ break;
+ }
+ // If ctrl is active, move mode one point backwards
+ } else if (get_mods() & MOD_MASK_CTRL) {
+ switch (get_highest_layer(layer_state)) {
+# ifdef RGB_MATRIX_ENABLE
+ case _MEDI:
+ if (encoder_index == 0) {
+ userspace_config.e0rgb = (userspace_config.e0rgb + 5 - 1) % 5;
+ } else {
+ userspace_config.e1rgb = (userspace_config.e1rgb + 5 - 1) % 5;
+ }
+ break;
+# endif // RGB_MATRIX_ENABLE
+# ifdef MOUSEKEY_ENABLE
+ case _MOUS:
+ if (encoder_index == 0) {
+ userspace_config.e0point = (userspace_config.e0point + 4 - 1) % 4;
+ } else {
+ userspace_config.e1point = (userspace_config.e1point + 4 - 1) % 4;
+ }
+ break;
+# endif // MOUSEKEY_ENABLE
+ default:
+ if (encoder_index == 0) {
+ userspace_config.e0base = (userspace_config.e0base + 9 - 1) % 9;
+ } else {
+ userspace_config.e1base = (userspace_config.e1base + 9 - 1) % 9;
+ }
+ break;
+ }
+ // If meta is active, reset the encoder states
+ } else if (get_mods() & MOD_MASK_GUI) {
+ reset_encoder_state();
+ eeconfig_update_user(userspace_config.raw);
+ // If nothing else; just perform the click action
+ } else {
+ encoder_click_action(encoder_index);
+ }
+ }
+ return true;
+}
+
+// For printing status to OLED
+#ifdef OLED_ENABLE
+void encoder_state_string(uint8_t index, uint8_t layer, char* buffer) {
+ uint8_t this_number;
+ // Get the layer straight from the main function
+ switch (layer) {
+ // If RGB control mode is enabled
+# ifdef RGB_MATRIX_ENABLE
+ case _MEDI:
+ // Get correct index
+ if (index == 0) {
+ this_number = userspace_config.e0rgb;
+ } else if (index == 1) {
+ this_number = userspace_config.e1rgb;
+ } else {
+ this_number = 128;
+ }
+ switch (this_number) {
+ case 0:
+ strcpy(buffer, "ani mode");
+ break;
+ case 1:
+ strcpy(buffer, "hue ");
+ break;
+ case 2:
+ strcpy(buffer, "saturat.");
+ break;
+ case 3:
+ strcpy(buffer, "bright. ");
+ break;
+ case 4:
+ strcpy(buffer, "ani. spd");
+ break;
+ default:
+ strcpy(buffer, " -N/A- ");
+ break;
+ }
+ break;
+# endif // RGB_MATRIX_ENABLE
+ // If pointer control is enabled
+# ifdef MOUSEKEY_ENABLE
+ case _MOUS:
+ // Get correct index
+ if (index == 0) {
+ this_number = userspace_config.e0point;
+ } else if (index == 1) {
+ this_number = userspace_config.e1point;
+ } else {
+ this_number = 128;
+ }
+ switch (this_number) {
+ case 0:
+ strcpy(buffer, "Lateral ");
+ break;
+ case 1:
+ strcpy(buffer, "Vertical");
+ break;
+ case 2:
+ strcpy(buffer, "Scr. Ver");
+ break;
+ case 3:
+ strcpy(buffer, "Scr. Lat");
+ break;
+ default:
+ strcpy(buffer, " -N/A- ");
+ break;
+ }
+ break;
+# endif // MOUSEKEY_ENABLE
+ default:
+ // Get correct index
+ if (index == 0) {
+ this_number = userspace_config.e0base;
+ } else if (index == 1) {
+ this_number = userspace_config.e1base;
+ } else {
+ this_number = 128;
+ }
+ switch (this_number) {
+ case 0:
+ strcpy(buffer, "Volume ");
+ break;
+ case 1:
+ strcpy(buffer, "Song ");
+ break;
+ case 2:
+ strcpy(buffer, "Sink ");
+ break;
+ case 3:
+ strcpy(buffer, "Src. Vol");
+ break;
+ case 4:
+ strcpy(buffer, "Source ");
+ break;
+ case 5:
+ strcpy(buffer, "Arrow LR");
+ break;
+ case 6:
+ strcpy(buffer, "Arrow UD");
+ break;
+ case 7:
+ strcpy(buffer, "Page U/D");
+ break;
+ case 8:
+ strcpy(buffer, "Erase ");
+ break;
+ default:
+ strcpy(buffer, " -N/A- ");
+ break;
+ }
+ break;
+ }
+}
+#endif // OLED_ENABLE
diff --git a/users/bbaserdem/bb-encoder.h b/users/bbaserdem/bb-encoder.h
new file mode 100644
index 0000000000..dce08cd3d5
--- /dev/null
+++ b/users/bbaserdem/bb-encoder.h
@@ -0,0 +1,29 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+#include "bbaserdem.h"
+
+// Hook to encoder stuff
+bool encoder_update_user(uint8_t index, bool clockwise);
+// Complicated code for what the encoder keys do when pressed
+bool process_record_encoder(uint16_t keycode, keyrecord_t *record);
+// Clear the encoder settings
+void reset_encoder_state(void);
+// This is so that encoder state is synched between two halves
+void housekeeping_task_encoder(void);
+// This is purely for oled; should it want to use it
+void encoder_state_string(uint8_t index, uint8_t layer, char* buffer);
diff --git a/users/bbaserdem/bb-macro.c b/users/bbaserdem/bb-macro.c
new file mode 100644
index 0000000000..a84a7bbc21
--- /dev/null
+++ b/users/bbaserdem/bb-macro.c
@@ -0,0 +1,156 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "bb-macro.h"
+
+/* MACRO Definitions
+ * This file has my macros/unicodes
+ * Hooks for other functionality to inject itself into the process_record
+ */
+
+// Tap dance definitons
+#ifdef AUDIO_ENABLE
+#ifdef TAP_DANCE_ENABLE
+qk_tap_dance_action_t tap_dance_actions[] = {
+ // Music playback speed modulator
+ [TD_AUDIO_TEMPO] = ACTION_TAP_DANCE_DOUBLE(MU_SLOW, MU_FAST),
+};
+#endif // AUDIO_ENABLE
+#endif // TAP_DANCE_ENABLE
+
+// Unicode definitions; for single character keys
+// We mask their definitions if unicode is not enabled
+#ifdef UNICODEMAP_ENABLE
+const uint32_t PROGMEM unicode_map[] = {
+ [UPC_A_CIRC] = 0x00C2, [LOW_A_CIRC] = 0x00E2, // Â â
+ [UPC_C_CEDI] = 0x00C7, [LOW_C_CEDI] = 0x00E7, // Ç ç
+ [UPC_G_BREV] = 0x011E, [LOW_G_BREV] = 0x001F, // Äž ÄŸ
+ [UPC_I_CIRC] = 0x00CE, [LOW_I_CIRC] = 0x00EE, // Î î
+ [UPC_I_DOTL] = 0x0049, [LOW_I_DOTL] = 0x0131, // I ı
+ [UPC_I_DOTT] = 0x0130, [LOW_I_DOTT] = 0x0069, // Ä° i
+ [UPC_O_DIAE] = 0x00D6, [LOW_O_DIAE] = 0x00F6, // Ö ö
+ [UPC_S_CEDI] = 0x015E, [LOW_S_CEDI] = 0x015F, // Åž ÅŸ
+ [UPC_U_CIRC] = 0x00DB, [LOW_U_CIRC] = 0x00FB, // Û û
+ [UPC_U_DIAE] = 0x00DC, [LOW_U_DIAE] = 0x00FC, // Ü ü
+ [UPC_ALPHA] = 0x0391, [LOW_ALPHA] = 0x03B1, // Α α
+ [UPC_BETA] = 0x0392, [LOW_BETA] = 0x03B2, // Β β
+ [UPC_GAMMA] = 0x0393, [LOW_GAMMA] = 0x03B3, // Γ γ
+ [UPC_DELTA] = 0x0394, [LOW_DELTA] = 0x03B4, // Δ δ
+ [UPC_EPSILON] = 0x0395, [LOW_EPSILON] = 0x03B5, // Ε ε
+ [UPC_ZETA] = 0x0396, [LOW_ZETA] = 0x03B6, // Ζ ζ
+ [UPC_ETA] = 0x0397, [LOW_ETA] = 0x03B7, // Η η
+ [UPC_THETA] = 0x0398, [LOW_THETA] = 0x03B8, // Θ θ
+ [UPC_IOTA] = 0x0399, [LOW_IOTA] = 0x03B9, // Ι ι
+ [UPC_KAPPA] = 0x039A, [LOW_KAPPA] = 0x03BA, // Κ κ
+ [UPC_LAMBDA] = 0x039B, [LOW_LAMBDA] = 0x03BB, // Λ λ
+ [UPC_MU] = 0x039C, [LOW_MU] = 0x03BC, // Μ μ
+ [UPC_NU] = 0x039D, [LOW_NU] = 0x03BD, // Πν
+ [UPC_XI] = 0x039E, [LOW_XI] = 0x03BE, // Ξ ξ
+ [UPC_OMICRON] = 0x039F, [LOW_OMICRON] = 0x03BF, // Ο ο
+ [UPC_PI] = 0x03A0, [LOW_PI] = 0x03C0, // Π π
+ [UPC_RHO] = 0x03A1, [LOW_RHO] = 0x03C1, // Ρ Ï
+ [UPC_SIGMA] = 0x03A3, [LOW_SIGMA] = 0x03C3, // Σ σ
+ [UPC_TAU] = 0x03A4, [LOW_TAU] = 0x03C4, // Τ τ
+ [UPC_UPSILON] = 0x03A5, [LOW_UPSILON] = 0x03C5, // Υ υ
+ [UPC_PHI] = 0x03A6, [LOW_PHI] = 0x03C6, // Φ φ
+ [UPC_CHI] = 0x03A7, [LOW_CHI] = 0x03C7, // Χ χ
+ [UPC_PSI] = 0x03A8, [LOW_PSI] = 0x03C8, // Ψ ψ
+ [UPC_OMEGA] = 0x03A9, [LOW_OMEGA] = 0x03C9, // Ω ω
+ [ELLIPSIS] = 0x2026, // …
+ [PLANCK_CON] = 0x210F, // â„
+ [ANGSTROM] = 0x212B, // â„«
+ [BITCOIN] = 0x20BF // â‚¿
+};
+#endif // UNICODEMAP_ENABLE
+
+// Keycodes
+bool process_record_macro(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ // AltGr + Caps should change the oled layout variable
+ case KC_CAPSLOCK:
+ if (record->event.pressed) {
+ if (get_mods() & MOD_BIT(KC_RALT)) {
+ userspace_config.layout = (userspace_config.layout + 1) % 3;
+ }
+ }
+ return true;
+ break;
+ case BB_OLED:
+ if (record->event.pressed) {
+ if (get_mods() & MOD_MASK_SHIFT) {
+ // Scroll in opposite direction
+ userspace_config.layout = (userspace_config.layout + 4) % 3;
+ } else {
+ userspace_config.layout = (userspace_config.layout + 1) % 3;
+ }
+ }
+ return false;
+ break;
+ // Plain macros
+ case BB_PGPK:
+ // My public PGP key
+ if (record->event.pressed) {
+ SEND_STRING("0B7151C823559DD8A7A04CE36426139E2F4C6CCE");
+ }
+ return false; break;
+ case DBL_ANG:
+ // Double angular bracket
+ if (record->event.pressed) {
+ SEND_STRING("<>"SS_TAP(X_LEFT));
+ }
+ return false; break;
+ case DBL_PAR:
+ // Double paranthesis
+ if (record->event.pressed) {
+ SEND_STRING("()"SS_TAP(X_LEFT));
+ }
+ return false; break;
+ case DBL_BRC:
+ // Double square brackets
+ if (record->event.pressed) {
+ SEND_STRING("[]"SS_TAP(X_LEFT));
+ }
+ return false; break;
+ case DBL_CBR:
+ // Double curly brackets
+ if (record->event.pressed) {
+ SEND_STRING("{}"SS_TAP(X_LEFT));
+ }
+ return false; break;
+ // Unicode macros
+# ifdef UNICODEMAP_ENABLE
+ case TR_FLAG:
+ // Turkish flag
+ if (record->event.pressed) {
+ send_unicode_string("🇹🇷");
+ }
+ return false; break;
+ case BB_LENY:
+ // Lenny face: ( ͡° ͜ʖ ͡°)
+ if (record->event.pressed) {
+ send_unicode_string("( ͡° ͜ʖ ͡°)");
+ }
+ return false; break;
+ case BB_TABL:
+ // Table flip: â”»â”┻︵ \(°□°)/ ︵ â”»â”â”»
+ if (record->event.pressed) {
+ send_unicode_string("â”»â”┻︵ \\(°□°)/ ︵ â”»â”â”»");
+ }
+ return false; break;
+# endif // UNICODEMAP_ENABLE
+ }
+ return true;
+}
diff --git a/users/bbaserdem/bb-macro.h b/users/bbaserdem/bb-macro.h
new file mode 100644
index 0000000000..3dc14e7a8a
--- /dev/null
+++ b/users/bbaserdem/bb-macro.h
@@ -0,0 +1,113 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+#include "bbaserdem.h"
+
+/* This header file contains definitons regarding custom keycodes.
+ * - Both regular and unicode macros are dealt with in this file
+ */
+
+// These will be delegated to keymap specific stuff (weak definition)
+bool process_record_macro(uint16_t keycode, keyrecord_t *record);
+
+// Unicodemap implementation
+#ifdef UNICODEMAP_ENABLE
+enum userspace_unicodemap {
+ UPC_A_CIRC,
+ UPC_C_CEDI,
+ UPC_G_BREV,
+ UPC_I_CIRC,
+ UPC_I_DOTL,
+ UPC_I_DOTT,
+ UPC_O_DIAE,
+ UPC_S_CEDI,
+ UPC_U_CIRC,
+ UPC_U_DIAE,
+ LOW_A_CIRC,
+ LOW_C_CEDI,
+ LOW_G_BREV,
+ LOW_I_CIRC,
+ LOW_I_DOTL,
+ LOW_I_DOTT,
+ LOW_O_DIAE,
+ LOW_S_CEDI,
+ LOW_U_CIRC,
+ LOW_U_DIAE,
+ ELLIPSIS,
+ PLANCK_CON,
+ ANGSTROM,
+ MATHPI,
+ BITCOIN,
+ UPC_ALPHA,
+ UPC_BETA,
+ UPC_GAMMA,
+ UPC_DELTA,
+ UPC_EPSILON,
+ UPC_ZETA,
+ UPC_ETA,
+ UPC_THETA,
+ UPC_IOTA,
+ UPC_KAPPA,
+ UPC_LAMBDA,
+ UPC_MU,
+ UPC_NU,
+ UPC_XI,
+ UPC_OMICRON,
+ UPC_PI,
+ UPC_RHO,
+ UPC_SIGMA,
+ UPC_TAU,
+ UPC_UPSILON,
+ UPC_PHI,
+ UPC_CHI,
+ UPC_PSI,
+ UPC_OMEGA,
+ LOW_ALPHA,
+ LOW_BETA,
+ LOW_GAMMA,
+ LOW_DELTA,
+ LOW_EPSILON,
+ LOW_ZETA,
+ LOW_ETA,
+ LOW_THETA,
+ LOW_IOTA,
+ LOW_KAPPA,
+ LOW_LAMBDA,
+ LOW_MU,
+ LOW_NU,
+ LOW_XI,
+ LOW_OMICRON,
+ LOW_PI,
+ LOW_RHO,
+ LOW_SIGMA,
+ LOW_TAU,
+ LOW_UPSILON,
+ LOW_PHI,
+ LOW_CHI,
+ LOW_PSI,
+ LOW_OMEGA,
+};
+#endif // UNICODEMAP_ENABLE
+
+// Tap dance stuff
+#ifdef AUDIO_ENABLE
+#ifdef TAP_DANCE_ENABLE
+enum {
+ TD_AUDIO_TEMPO,
+};
+#endif // AUDIO_ENABLE
+#endif // TAP_DANCE_ENABLE
diff --git a/users/bbaserdem/bb-oled-extra.c b/users/bbaserdem/bb-oled-extra.c
new file mode 100644
index 0000000000..b52c4b335a
--- /dev/null
+++ b/users/bbaserdem/bb-oled-extra.c
@@ -0,0 +1,796 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "bb-oled.h"
+#include "bb-oled-extra.h"
+
+// Helper function that draws images
+void draw_image(uint8_t row, uint8_t col, const char image[4][42]) {
+ // Draw this image iteratively
+ for (int i = 0; i < 4; i++) {
+ oled_set_cursor(col, row + i);
+ oled_write_raw_P(image[i], 42);
+ }
+}
+
+// Write modifiers to the screen
+void render_modifiers(uint8_t row, uint8_t col, uint8_t mods) {
+ static const char PROGMEM mod_meta[12] = {0x00,0x01,0x01,0x01,0x01,0x06,0x18,0x60,0x81,0x81,0x81,0x81};
+ static const char PROGMEM mod_altL[12] = {0x00,0x80,0x80,0x80,0x40,0x20,0x10,0x08,0x84,0x95,0x8e,0x84};
+ static const char PROGMEM mod_altR[12] = {0x00,0x86,0x8f,0x8f,0x46,0x20,0x10,0x08,0x84,0x95,0x8e,0x84};
+ static const char PROGMEM mod_ctrl[12] = {0x00,0x00,0xbd,0x42,0xa5,0x99,0x99,0xa5,0x42,0xbd,0x00,0x00};
+ static const char PROGMEM mod_shft[12] = {0x00,0x20,0x30,0x28,0xe4,0x02,0x01,0x02,0xe4,0x28,0x30,0x20};
+ // Looks like Mods: <OS> <Alt/Gr> <Ctrl> <Shift>
+ oled_set_cursor(col, row);
+ oled_write("Mods: ", false);
+ // Meta
+ if (mods & MOD_MASK_GUI) {
+ oled_write_raw_P(mod_meta, 12);
+ oled_set_cursor(col + 8, row);
+ } else {
+ oled_write(" ", false);
+ }
+ // Alt(Gr)
+ if (mods & MOD_BIT(KC_RALT)) {
+ oled_write_raw_P(mod_altR, 12);
+ oled_set_cursor(col + 10, row);
+ } else if (mods & MOD_MASK_ALT) {
+ oled_write_raw_P(mod_altL, 12);
+ oled_set_cursor(col + 10, row);
+ } else {
+ oled_write(" ", false);
+ }
+ // Ctrl
+ if (mods & MOD_MASK_CTRL) {
+ oled_write_raw_P(mod_ctrl, 12);
+ oled_set_cursor(col + 12, row);
+ } else {
+ oled_write(" ", false);
+ }
+ // Shift
+ if (mods & MOD_MASK_SHIFT) {
+ oled_write_raw_P(mod_shft, 12);
+ oled_set_cursor(col + 14, row);
+ } else {
+ oled_write(" ", false);
+ }
+}
+
+// Draws the image of the currently used layout
+void render_layout(uint8_t row, uint8_t col, uint8_t mods, bool isLeft) {
+ // DVORAK
+ static const char PROGMEM base0_L_dvor_nomod[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x00,0x04,0x08,0x10,0x00,0x00,0x00,
+ 0x00,0x0e,0x00,0x00,0x00,0x00,0x60,0xe0,0x00,0x00,0x00,0x00,0xc0,0xc0,
+ 0x00,0x00,0x00,0xf8,0x90,0x88,0x88,0x70,0x00,0x78,0x80,0x80,0x40,0xf8
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x00,0x00,
+ 0x40,0x40,0x40,0x80,0x00,0x80,0x41,0x40,0x40,0x80,0x00,0x80,0x40,0x40,
+ 0x40,0x80,0x00,0xc3,0x00,0x00,0x00,0xc0,0x00,0x00,0x42,0xd2,0x02,0x01
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0xd8,0x06,0x01,0x00,0x00,0x00,0x02,
+ 0x05,0x05,0x05,0x07,0x00,0x03,0x04,0x04,0x04,0x03,0x00,0x03,0x05,0x05,
+ 0x85,0x05,0x00,0xc3,0x04,0x04,0x02,0x07,0x00,0x00,0x00,0x07,0x04,0x00
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x00,0x03,0x0c,0x30,0xc0,0x00,0x00,
+ 0xb6,0x76,0x00,0x00,0x00,0x1c,0x22,0x22,0x12,0xfe,0x00,0x00,0x80,0x82,
+ 0x7e,0x00,0x00,0x3f,0x08,0x0c,0x12,0x20,0x00,0x22,0x14,0x08,0x14,0x22}};
+ static const char PROGMEM base0_L_dvor_shift[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x20,0x10,0x20,0x40,0x20,0x00,0x00,
+ 0x07,0x00,0x07,0x00,0x00,0x10,0x28,0x44,0x82,0x00,0x00,0x82,0x44,0x28,
+ 0x10,0x00,0x00,0xfe,0x12,0x12,0x12,0x0c,0x00,0x06,0x08,0xf0,0x08,0x06
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0xe0,
+ 0x90,0x90,0x90,0xe0,0x00,0xe0,0x10,0x10,0x10,0xe0,0x00,0xf0,0x90,0x90,
+ 0x90,0x10,0x00,0xf0,0x00,0x00,0x00,0xf0,0x00,0x00,0x10,0xf0,0x10,0x00
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x00,0x80,0x87,0x80,0x00,0x00,0x07,
+ 0x00,0x00,0x00,0x07,0x00,0x03,0x84,0x84,0x84,0x03,0x00,0x07,0x04,0x04,
+ 0x04,0x84,0x00,0x83,0x04,0x04,0x04,0x83,0x00,0x80,0x04,0x07,0x04,0x80
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x01,0x00,0x28,0x04,0x03,0x00,0x00,
+ 0x36,0x36,0x00,0x00,0x00,0x1f,0x20,0x28,0x10,0x6f,0x00,0x18,0x20,0x20,
+ 0x20,0x1f,0x00,0x3f,0x04,0x0a,0x11,0x20,0x00,0x31,0x0a,0x04,0x0a,0x31}};
+ static const char PROGMEM base0_R_dvor_nomod[4][42] = {
+ { 0x00,0xfc,0x12,0x12,0x00,0x00,0x70,0x88,0x88,0x48,0xf8,0x00,0x70,0x88,
+ 0x88,0x88,0x88,0x00,0xf8,0x10,0x08,0x08,0x10,0x00,0x00,0x02,0x7e,0x80,
+ 0x80,0x00,0x10,0x28,0x44,0x82,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0x00,0x80,0x80,0x80,0xf0,0x00,0xf0,0x02,0x82,0x82,0x01,0x00,0x00,0x80,
+ 0xf0,0x80,0x80,0x00,0xc0,0x40,0x40,0x40,0x80,0x00,0x80,0x40,0x40,0x40,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x83,0x04,0x04,0x02,0x07,0x00,0x07,0x01,0x00,0x00,0x07,0x00,0x00,0x00,
+ 0x03,0x04,0x04,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x04,0x05,0x05,0x05,
+ 0x02,0x00,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x73,0x39,0x00,0x00
+ },{ 0x3f,0x24,0x22,0x22,0x1c,0x00,0x3e,0x02,0x3e,0x02,0x3c,0x00,0x1e,0x20,
+ 0x1c,0x20,0x1e,0x00,0x06,0x18,0x20,0x18,0x06,0x00,0x22,0x32,0x2a,0x26,
+ 0x22,0x00,0x14,0x14,0x14,0x14,0x14,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM base0_R_dvor_shift[4][42] = {
+ { 0xfe,0x12,0x12,0x12,0x02,0x00,0xfc,0x02,0x12,0x12,0xf4,0x00,0xfc,0x02,
+ 0x02,0x02,0x84,0x00,0xfe,0x12,0x12,0x32,0xcc,0x00,0xfe,0x00,0x00,0x00,
+ 0x00,0x00,0x04,0x88,0x50,0x20,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0xf1,0x10,0x10,0x10,0xe0,0x00,0xf0,0x81,0x81,0x81,0xf0,0x00,0x10,0x11,
+ 0xf1,0x11,0x10,0x00,0xf1,0x60,0x80,0x00,0xf1,0x00,0x61,0x91,0x91,0x91,
+ 0x21,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x8f,0x88,0x88,0x88,0x07,0x00,0x8f,0x00,0x00,0x00,0x8f,0x00,0x80,0x00,
+ 0x0f,0x00,0x80,0x00,0x8f,0x00,0x01,0x06,0x8f,0x00,0x84,0x88,0x88,0x88,
+ 0x87,0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x73,0x39,0x00,0x00
+ },{ 0x7f,0x44,0x44,0x44,0x3b,0x00,0x7f,0x01,0x06,0x01,0x7f,0x00,0x1f,0x60,
+ 0x1c,0x60,0x1f,0x00,0x07,0x18,0x60,0x18,0x07,0x00,0x70,0x48,0x44,0x42,
+ 0x41,0x00,0x08,0x08,0x3e,0x08,0x08,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM symb5_R_dvor[4][42] = {
+ { 0x00,0x02,0x04,0x08,0x00,0x00,0x20,0x20,0xdc,0x02,0x02,0x00,0x02,0x02,
+ 0xdc,0x20,0x20,0x00,0x00,0xc0,0x30,0x0c,0x03,0x00,0x50,0x50,0x50,0x50,
+ 0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0xf0,0x11,0x12,0x02,0x00,0x02,0x12,
+ 0x11,0xf0,0x00,0x00,0x43,0x20,0x20,0x20,0xc0,0x00,0x00,0x00,0xc0,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x01,0x80,0x41,0x82,0x01,0x00,0x00,0x1f,0x10,0x90,0x00,0x00,0x00,0x90,
+ 0x10,0x1f,0x00,0x00,0xc0,0x00,0x14,0x03,0x00,0x00,0x01,0x01,0x87,0x01,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x39,0x00,0x00
+ },{ 0x22,0xf3,0x0a,0xf3,0x22,0x00,0x00,0x1c,0x63,0x80,0x00,0x00,0x00,0x80,
+ 0x63,0x1c,0x00,0x00,0x00,0x03,0x0c,0x30,0xc0,0x00,0x00,0x00,0x7f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM numb6_L_dvor_nomod[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
+ 0x50,0x88,0x04,0x00,0x00,0x04,0x04,0xc4,0x34,0x0c,0x00,0xd8,0x24,0x24,
+ 0x24,0xd8,0x00,0x18,0x24,0x24,0x24,0xf8,0x00,0xf8,0x44,0x24,0x14,0xf8
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x80,0x41,0xe0,0x00,0x00,0xe0,0xa1,0xa1,
+ 0xa1,0x20,0x00,0xc0,0xa1,0xa1,0xa1,0x00,0x00,0x00,0x01,0x01,0x01,0x00
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
+ 0x08,0x08,0x08,0x08,0x00,0x03,0x02,0x02,0x0f,0x02,0x00,0x04,0x08,0x08,
+ 0x08,0x07,0x00,0x07,0x08,0x08,0x08,0x07,0x00,0x01,0x01,0x01,0x01,0x00
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,
+ 0x22,0x14,0x08,0x00,0x00,0x00,0x04,0x02,0x7f,0x00,0x00,0x42,0x61,0x51,
+ 0x49,0x46,0x00,0x22,0x41,0x49,0x49,0x36,0x00,0x5e,0x61,0x01,0x61,0x5e}};
+ static const char PROGMEM numb6_L_dvor_shift[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xd8,0x24,0x54,0x88,0x40,0x00,0x50,0x20,0xf8,
+ 0x20,0x50,0x00,0x00,0x38,0xc6,0x01,0x00,0x00,0x00,0x01,0xc6,0x38,0x00
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x60,0x91,0xf9,0x90,0x21,0x00,0x20,0x50,0x20,
+ 0x80,0x60,0x00,0x40,0x20,0x10,0x21,0x40,0x00,0x00,0x01,0x00,0x00,0x00
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x8f,0x04,0x03,0x00,0x0c,0x02,0x09,
+ 0x14,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x00,0x3e,0x41,0x5d,
+ 0x55,0x5e,0x00,0x14,0x7f,0x14,0x7f,0x14,0x00,0x00,0x00,0x00,0x00,0x00}};
+ // Turkish F
+ static const char PROGMEM base0_L_turf_nomod[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x10,0x10,0x7c,0x10,0x10,0x00,0x00,
+ 0xfe,0x09,0x09,0x00,0x00,0x70,0x88,0x88,0x48,0xf8,0x00,0x51,0xaa,0xaa,
+ 0x92,0x09,0x00,0x00,0x88,0xf8,0x80,0x00,0x00,0x70,0x88,0x88,0x88,0x70
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x40,0x80,0x00,0x80,0x40,0x00,0xc0,
+ 0x00,0x00,0x00,0xc0,0x00,0x00,0x42,0xd2,0x02,0x01,0x00,0x81,0x42,0x42,
+ 0x42,0x81,0x00,0x00,0x40,0x40,0x40,0x80,0x00,0xc0,0x10,0x00,0x10,0xc0
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x04,0x02,0x01,0x02,0x04,0x00,0x03,
+ 0x04,0x04,0x82,0x07,0x00,0x00,0x80,0x07,0x84,0x00,0x00,0x03,0x05,0x05,
+ 0x05,0x05,0x00,0x02,0x05,0x05,0x05,0x07,0x00,0x03,0x04,0x04,0x02,0x07
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x1c,0x22,0x22,0x12,0xfe,0x00,0x00,
+ 0x80,0x82,0x7e,0x00,0x00,0x1c,0x22,0x22,0x22,0x1c,0x00,0x06,0x18,0x20,
+ 0x18,0x06,0x00,0x1c,0x22,0x22,0x22,0x22,0x00,0x1c,0xa2,0x62,0x22,0x22}};
+ static const char PROGMEM base0_L_turf_shift[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x28,0x10,0x7c,0x10,0x28,0x00,0xfe,
+ 0x12,0x12,0x12,0x02,0x00,0xfc,0x02,0x12,0x12,0xf4,0x00,0xf1,0x0a,0x4a,
+ 0x4a,0xd1,0x00,0x00,0x02,0xfe,0x02,0x00,0x00,0xfc,0x02,0x02,0x02,0xfc
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x30,0x40,0x80,0x40,0x30,0x00,0xf1,
+ 0x00,0x00,0x00,0xf0,0x00,0x00,0x21,0xe9,0x21,0x00,0x00,0xf1,0x92,0x92,
+ 0x92,0x11,0x00,0xe0,0x91,0x91,0x91,0xe0,0x00,0xe0,0x09,0x01,0x09,0xe0
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x0e,0x81,0x80,0x81,0x0e,0x00,0x07,
+ 0x08,0x08,0x08,0x87,0x00,0x00,0x50,0x1f,0x50,0x00,0x00,0x8f,0x08,0x08,
+ 0x08,0x88,0x00,0x0f,0x80,0x80,0x80,0x0f,0x00,0x8f,0x50,0x50,0x50,0x8f
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x3f,0x40,0x50,0x20,0xdf,0x00,0x30,
+ 0x40,0x40,0x40,0x3f,0x00,0x7e,0x81,0x81,0x81,0x7e,0x00,0x07,0x18,0x60,
+ 0x18,0x07,0x00,0x3f,0x40,0x40,0x40,0x21,0x00,0x1f,0xa0,0x60,0x20,0x10}};
+ static const char PROGMEM base0_L_turf_altgr[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x10,0x10,0x10,0x30,0x00,0x00,0xf0,
+ 0x08,0xe8,0xa8,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x0c,0x1e,0xfe,0x02,0xfe,0x00,0x70,0x8a,0x89,0x8a,0x70
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x00,0x10,0x20,0x40,0x00,0x00,0xc1,
+ 0x12,0x0a,0x12,0xc2,0x00,0x00,0x10,0xc8,0x10,0x00,0x00,0x40,0xe0,0x50,
+ 0x10,0x20,0x00,0x00,0x50,0x48,0x50,0x80,0x00,0xc0,0x10,0x08,0x10,0xc0
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x03,
+ 0x04,0x04,0x02,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x01,0x83,0x05,
+ 0x04,0x82,0x00,0x02,0x05,0x05,0x05,0x07,0x00,0x83,0x84,0x04,0x82,0x87
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x00,0x3e,0x3e,0x3e,0x00,0x08,0x14,
+ 0x22,0x08,0x14,0x22,0x00,0x22,0x14,0x08,0x22,0x14,0x08,0x03,0x02,0x00,
+ 0x03,0x02,0x00,0x1c,0x22,0x7f,0x22,0x22,0x00,0x02,0x01,0x00,0x02,0x01}};
+ static const char PROGMEM base0_L_turf_shfgr[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x90,0x90,0xfc,0x90,0x90,0x00,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,0x0a,0x09,0x0a,0xf0
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x00,0x88,0x90,0xa0,0x00,0x00,0xc0,
+ 0x10,0x08,0x10,0xc0,0x00,0x00,0x50,0xc8,0x50,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x80,0x50,0x48,0x50,0x80,0x00,0xc1,0x12,0x0a,0x12,0xc1
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x00,0x8f,0x4f,0x8f,0x00,0x00,0x0f,
+ 0x10,0x10,0x90,0x0f,0x00,0x80,0x10,0x1f,0x10,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x1f,0x82,0x82,0x82,0x1f,0x00,0x0f,0x10,0x10,0x10,0x0f
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x00,0x7c,0x7d,0x7c,0x00,0x00,0x04,
+ 0x0a,0x11,0x20,0x00,0x00,0x20,0x11,0x0a,0x04,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x1f,0x24,0x2a,0x20,0x1f,0x00,0x00,0x00,0x00,0x00,0x00}};
+ static const char PROGMEM base0_R_turf_nomod[4][42] = {
+ { 0x70,0x88,0x88,0x48,0xff,0x00,0xf8,0x10,0x08,0x08,0x10,0x00,0xf8,0x08,
+ 0x08,0x08,0xf0,0x00,0xff,0x10,0x08,0x08,0xf0,0x00,0xf8,0x90,0x88,0x88,
+ 0x70,0x00,0x10,0x28,0x44,0x82,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0x40,0xf8,0x40,0x40,0x00,0x00,0xf8,0x00,0x80,0x40,0x00,0x00,0xc0,0x40,
+ 0xc0,0x40,0x80,0x00,0x08,0xf8,0x00,0x00,0x00,0x00,0xc3,0x00,0x00,0x00,
+ 0xc0,0x00,0x80,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x00,0x03,0x04,0x04,0x00,0x00,0x07,0x01,0x01,0x02,0x04,0x00,0xc7,0x00,
+ 0x07,0x00,0x07,0x00,0x00,0x03,0x04,0x04,0x00,0x00,0x03,0x14,0x14,0x12,
+ 0x0f,0x00,0x04,0x15,0x0d,0x05,0x02,0x00,0x00,0x00,0x73,0x39,0x00,0x00
+ },{ 0x22,0x32,0x2a,0x26,0x22,0x00,0x24,0x2a,0x2a,0x2a,0x10,0x00,0x3f,0x24,
+ 0x22,0x22,0x1c,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0xb0,0x70,0x00,
+ 0x00,0x00,0x1e,0x20,0x1c,0x20,0x1e,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM base0_R_turf_shift[4][42] = {
+ { 0xfe,0x02,0x02,0x02,0xfc,0x00,0xfe,0x12,0x12,0x32,0xcc,0x00,0xfe,0x0c,
+ 0x30,0xc0,0xfe,0x00,0xfe,0x10,0x10,0x10,0xfe,0x00,0xfe,0x12,0x12,0x12,
+ 0x0c,0x00,0x82,0x44,0x28,0x10,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0x11,0x11,0xf1,0x11,0x10,0x00,0xf1,0x80,0x40,0x20,0x11,0x00,0xf1,0x20,
+ 0xc0,0x20,0xf1,0x00,0xf1,0x00,0x00,0x00,0x01,0x00,0x31,0x40,0x80,0x40,
+ 0x30,0x00,0x30,0x48,0x48,0x48,0x90,0x00,0x00,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x80,0x80,0x8f,0x80,0x80,0x00,0x0f,0x80,0x81,0x82,0x0c,0x00,0x8f,0x80,
+ 0x80,0x80,0x0f,0x00,0x0f,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x0f,0x00,
+ 0x00,0x00,0x82,0x14,0x0c,0x04,0x83,0x00,0x00,0x00,0x73,0x39,0x00,0x00
+ },{ 0x70,0x48,0x44,0x42,0x41,0x00,0x23,0x44,0x44,0x44,0x39,0x00,0x7f,0x44,
+ 0x44,0x44,0x3b,0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0xb6,0x76,0x00,
+ 0x00,0x00,0x1f,0x60,0x1c,0x60,0x1f,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM base0_R_turf_altgr[4][42] = {
+ { 0x53,0x54,0xf8,0x54,0x53,0x00,0x7c,0xba,0x8a,0x8a,0x7c,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x0c,0x12,0x12,0x0c,0x00,0x00,0x20,0xfc,0x22,0x02,
+ 0x84,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0x80,0x80,0xf1,0xa0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
+ 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x20,0x11,0x01,
+ 0x00,0x00,0x40,0xf0,0x41,0xf0,0x40,0x00,0x00,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x02,0x01,0x0f,0x08,0x08,0x06,0x83,0x40,0x40,0x40,0x00,0x00,0x0f,0x02,
+ 0x04,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x07,0x01,0x07,0x01,0x00,0x00,0x00,0x73,0x39,0x00,0x00
+ },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x4a,0x4a,0x3c,0x00,0x00,0x11,0x0a,
+ 0x04,0x0a,0x11,0x00,0x04,0x04,0x15,0x04,0x04,0x00,0x00,0x00,0x04,0x00,
+ 0x00,0x00,0x04,0x02,0x04,0x08,0x04,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM base0_R_turf_shfgr[4][42] = {
+ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xef,0x00,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x90,0x88,
+ 0x00,0x00,0x00,0x90,0xa1,0x90,0x00,0x00,0x00,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x00,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,
+ 0x00,0x00,0x00,0x0f,0x0f,0x0f,0x00,0x00,0x00,0x00,0x73,0x39,0x00,0x00
+ },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x7d,0x7c,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM symb5_R_turf_nomod[4][42] = {
+ { 0x20,0x20,0xf8,0x20,0x20,0x00,0x00,0xc0,0x30,0x0c,0x03,0x00,0x20,0x20,
+ 0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0x80,0x00,0xc0,0x00,0x80,0x00,0x43,0x20,0x20,0x20,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,0x9c,0xce,0x00,0x00
+ },{ 0x02,0x81,0x47,0x81,0x02,0x00,0x00,0x00,0x0a,0x01,0x00,0x00,0x04,0x04,
+ 0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x39,0x00,0x00
+ },{ 0x22,0xf3,0x0a,0xf3,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM symb5_R_turf_altgr[4][42] = {
+ { 0x10,0x10,0x10,0x30,0x00,0x00,0x03,0x0c,0x30,0xc0,0x00,0x00,0x00,0x00,
+ 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0x80,0x80,0xe0,0x80,0x80,0x00,0x00,0x00,0xa0,0x00,0x03,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,0x9c,0xce,0x00,0x00
+ },{ 0x04,0x84,0x47,0x84,0x04,0x00,0x06,0x09,0x08,0x08,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,0x73,0x39,0x00,0x00
+ },{ 0x22,0xf3,0x0a,0xf3,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM numb6_L_turf_nomod[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
+ 0x50,0x88,0x04,0x00,0x00,0x04,0x04,0xc4,0x34,0x0c,0x00,0xd8,0x24,0x24,
+ 0x24,0xd8,0x00,0x18,0x24,0x24,0x24,0xf8,0x00,0xf8,0x44,0x24,0x14,0xf8
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x01,0x00,0x00,0x00,0x80,0x41,0xe0,0x00,0x00,0xe0,0xa1,0xa1,
+ 0xa1,0x20,0x00,0xc0,0xa1,0xa1,0xa1,0x00,0x00,0x00,0x01,0x01,0x01,0x00
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x0f,0x02,0x00,0x04,0x08,0x08,
+ 0x08,0x07,0x00,0x07,0x08,0x08,0x08,0x07,0x00,0x00,0x00,0x00,0x00,0x00
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,
+ 0x22,0x14,0x08,0x00,0x00,0x00,0x04,0x02,0x7f,0x00,0x00,0x42,0x61,0x51,
+ 0x49,0x46,0x00,0x22,0x41,0x49,0x49,0x36,0x00,0x5e,0x61,0x01,0x61,0x5e}};
+ static const char PROGMEM numb6_L_turf_shift[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
+ 0x88,0x50,0x20,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x00,0x38,0xc6,
+ 0x01,0x00,0x00,0x00,0x01,0xc6,0x38,0x00,0x00,0x50,0x50,0x50,0x50,0x50
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
+ 0x00,0x00,0x00,0x00,0x00,0x60,0x90,0xf8,0x90,0x20,0x00,0x20,0x50,0x20,
+ 0x81,0x60,0x00,0x70,0x89,0x48,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x8f,0x04,0x03,0x00,0x0c,0x82,0x09,
+ 0x94,0x08,0x00,0x07,0x08,0x89,0x06,0x09,0x00,0x00,0x00,0x00,0x00,0x00
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,
+ 0x22,0x14,0x08,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x00,0x00,0x03,0x00,
+ 0x03,0x00,0x00,0x02,0x01,0x00,0x01,0x02,0x00,0x5e,0x61,0x01,0x61,0x5e}};
+ static const char PROGMEM numb6_L_turf_altgr[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xff,0x00,0x00,0x00,0x10,0x10,0xee,0x01,0x01,0x00,0x00,0xff,0x01,
+ 0x01,0x00,0x00,0x00,0x01,0x01,0xff,0x00,0x00,0x01,0x01,0xee,0x10,0x10
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0x10,0xf8,0x00,0x01,0x01,0x00,0x10,0xf9,0x01,
+ 0x01,0x00,0x00,0x88,0xa9,0x51,0x01,0x00,0x00,0x01,0x01,0x00,0x00,0x00
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xc0,0x00,0x00,0x00,0x00,0x08,0x8c,0x0a,0x1f,0x00,0x00,0x00,0x90,
+ 0x90,0x10,0x00,0x00,0x08,0x0c,0x0a,0x1f,0x00,0x00,0x00,0x00,0x00,0x00
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x7b,0x00,0x00,0x00,0x00,0x09,0x0f,0x08,0x00,0x00,0x00,0x09,0x0c,
+ 0x0a,0x09,0x00,0x14,0x7f,0x14,0x7f,0x14,0x00,0x5e,0x61,0x01,0x61,0x5e}};
+ static const char PROGMEM numb6_L_turf_shfgr[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xef,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x90,0xfc,
+ 0x90,0x90,0x00,0x06,0x09,0x09,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0xa8,0x50,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x0a,
+ 0x15,0x0a,0x00,0x40,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x7b,0x00,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x04,0x05,0x05,0x02,0x00,0x00,0x5e,0x61,0x01,0x61,0x5e}};
+ // QWERTY
+ static const char PROGMEM base0_L_qwer_nomod[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x00,0x04,0x08,0x10,0x00,0x00,0x70,
+ 0x88,0x88,0x48,0xf8,0x00,0x78,0x80,0x70,0x80,0x78,0x00,0x70,0xa8,0xa8,
+ 0xa8,0xb0,0x00,0xf8,0x10,0x08,0x08,0x10,0x00,0x08,0x7f,0x88,0x88,0x00
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x18,0x60,0x80,0x00,0x00,0x00,0x00,
+ 0x40,0x40,0x40,0x83,0x00,0x80,0x40,0x40,0x40,0x00,0x00,0x80,0x40,0x40,
+ 0x40,0xf8,0x00,0x00,0xf0,0x48,0x48,0x00,0x00,0x80,0x40,0x40,0x40,0xc0
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x00,0xc0,0x41,0x46,0x18,0x00,0x02,
+ 0x05,0x05,0x05,0x07,0x00,0x04,0x05,0x05,0x05,0x02,0x00,0x03,0x04,0x04,
+ 0x02,0x07,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0xc3,0x14,0x14,0x12,0x0f
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x00,0xff,0x80,0x80,0x00,0x00,0x22,
+ 0x32,0x2a,0x26,0x22,0x00,0x22,0x14,0x08,0x14,0x22,0x00,0x1c,0x22,0x22,
+ 0x22,0x22,0x00,0x06,0x18,0x20,0x18,0x06,0x00,0x3f,0x24,0x22,0x22,0x1c}};
+ static const char PROGMEM base0_L_qwer_shift[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x20,0x10,0x20,0x40,0x20,0x00,0xfc,
+ 0x02,0x42,0x82,0x7c,0x00,0x7e,0x80,0x70,0x80,0x7e,0x00,0xfe,0x12,0x12,
+ 0x12,0x02,0x00,0xfe,0x12,0x12,0x32,0xcc,0x00,0x02,0x02,0xfe,0x02,0x02
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0xe0,
+ 0x91,0x91,0x90,0xe3,0x00,0x60,0x91,0x90,0x91,0x20,0x00,0xf1,0x11,0x11,
+ 0x11,0xe1,0x00,0xf1,0x90,0x90,0x90,0x11,0x00,0xe0,0x10,0x91,0x90,0xa0
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x00,0x00,0x9f,0x40,0x40,0x00,0x8f,
+ 0x80,0x80,0x80,0x8f,0x00,0x84,0x08,0x08,0x08,0x87,0x00,0x0f,0x88,0x88,
+ 0x88,0x07,0x00,0x8f,0x00,0x00,0x00,0x80,0x00,0x87,0x88,0x88,0x88,0x07
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x04,0x04,0x7b,0x80,0x80,0x00,0x70,
+ 0x48,0x44,0x42,0x41,0x00,0x71,0x0a,0x04,0x0a,0x71,0x00,0x3f,0x40,0x40,
+ 0x40,0x21,0x00,0x07,0x18,0x60,0x18,0x07,0x00,0x7f,0x44,0x44,0x44,0x3b}};
+ static const char PROGMEM base0_R_qwer_nomod[4][42] = {
+ { 0x78,0x80,0x80,0x40,0xf8,0x00,0x78,0x80,0x80,0x40,0xf8,0x00,0x00,0x08,
+ 0xfa,0x80,0x00,0x00,0x70,0x88,0x88,0x88,0x70,0x00,0xf8,0x90,0x88,0x88,
+ 0x70,0x00,0x10,0x28,0x44,0x82,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0xf8,0x82,0x42,0x42,0x81,0x00,0x00,0x00,0x40,0xd0,0x00,0x00,0xf8,0x00,
+ 0x80,0x40,0x00,0x00,0x08,0xf8,0x00,0x00,0x00,0x00,0x03,0xc0,0xc0,0x00,
+ 0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x10,0x10,0x0f,0x00,0x00,0x07,0x01,
+ 0x01,0x02,0x04,0x00,0x00,0x03,0x04,0x04,0x00,0x00,0x00,0x16,0x0e,0x00,
+ 0xc0,0x00,0x00,0x40,0x40,0xc0,0x00,0x00,0x00,0x00,0x73,0x39,0x00,0x00
+ },{ 0x3e,0x02,0x02,0x02,0x3c,0x00,0x3e,0x02,0x3e,0x02,0x3c,0x00,0x00,0xb0,
+ 0x70,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0xc0,0x30,0x0c,0x03,
+ 0x00,0x00,0x00,0x80,0x80,0xff,0x00,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM base0_R_qwer_shift[4][42] = {
+ { 0x06,0x08,0xf0,0x08,0x06,0x00,0xfe,0x00,0x00,0x00,0xfe,0x00,0x00,0x02,
+ 0xfe,0x02,0x00,0x00,0xfc,0x02,0x02,0x02,0xfc,0x00,0xfe,0x12,0x12,0x12,
+ 0x0c,0x00,0x82,0x44,0x28,0x10,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0xf0,0x80,0x81,0x80,0xf0,0x00,0x00,0x01,0x01,0x01,0xf0,0x00,0xf0,0x81,
+ 0x41,0x21,0x10,0x00,0xf0,0x01,0x01,0x01,0x00,0x00,0x01,0xc0,0xc0,0x00,
+ 0x00,0x00,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x8f,0x00,0x00,0x00,0x8f,0x00,0x86,0x08,0x08,0x08,0x87,0x00,0x0f,0x00,
+ 0x01,0x82,0x0c,0x00,0x8f,0x08,0x08,0x08,0x08,0x00,0x00,0x86,0x86,0x80,
+ 0x00,0x00,0x00,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x73,0x39,0x00,0x00
+ },{ 0x7f,0x03,0x0c,0x30,0x7f,0x00,0x7f,0x01,0x06,0x01,0x7f,0x00,0x04,0x0a,
+ 0x11,0x20,0x00,0x00,0x20,0x11,0x0a,0x04,0x00,0x00,0x01,0x00,0x28,0x04,
+ 0x03,0x00,0x00,0x80,0x80,0x7b,0x04,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM symb5_R_qwer[4][42] = {
+ { 0x00,0x04,0x08,0x10,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x00,0x50,0x50,
+ 0x50,0x50,0x50,0x00,0x10,0x10,0xee,0x01,0x01,0x00,0x01,0x01,0xee,0x10,
+ 0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xc0,0x00,0x00,0x00,0x00,0xf8,0x09,0x0a,0x02,0x00,0x02,0x0a,0x09,0xf8,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x01,0x80,0x41,0x82,0x01,0x00,0x04,0x04,0x84,0x44,0x04,0x00,0x01,0x41,
+ 0x87,0x01,0x01,0x00,0xc0,0x1f,0x10,0x10,0x00,0x00,0x00,0x10,0xd0,0x1f,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x39,0x00,0x00
+ },{ 0x22,0xf3,0x0a,0xf3,0x22,0x00,0x00,0x1e,0x61,0x80,0x00,0x00,0x00,0x80,
+ 0x61,0x1e,0x00,0x00,0x00,0x03,0x0c,0x30,0xc0,0x00,0x00,0x00,0xff,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM numb6_L_qwer_nomod[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,
+ 0x50,0x88,0x04,0x00,0x00,0x04,0x04,0xc4,0x34,0x0c,0x00,0xd8,0x24,0x24,
+ 0x24,0xd8,0x00,0x18,0x24,0x24,0x24,0xf8,0x00,0xf8,0x44,0x24,0x14,0xf8
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x70,0x00,0x71,0x00,0x00,0x00,0x80,0x41,0xe0,0x00,0x00,0xe0,0xa1,0xa1,
+ 0xa1,0x20,0x00,0xc0,0xa1,0xa1,0xa1,0x00,0x00,0x00,0x01,0x71,0x01,0x00
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x0f,0x02,0x00,0x04,0x08,0x08,
+ 0x08,0x07,0x00,0x07,0x08,0x08,0x08,0x07,0x00,0x00,0x00,0x00,0x00,0x00
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x41,
+ 0x22,0x14,0x08,0x00,0x00,0x00,0x04,0x02,0x7f,0x00,0x00,0x42,0x61,0x51,
+ 0x49,0x46,0x00,0x22,0x41,0x49,0x49,0x36,0x00,0x5e,0x61,0x01,0x61,0x5e}};
+ static const char PROGMEM numb6_L_qwer_shift[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0xd8,0x24,0x54,0x88,0x40,0x00,0x50,0x20,0xf8,
+ 0x20,0x50,0x00,0x00,0x38,0xc6,0x01,0x00,0x00,0x00,0x01,0xc6,0x38,0x00
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x70,0x00,0x70,0x00,0x00,0x60,0x91,0xf9,0x90,0x21,0x00,0x20,0x50,0x20,
+ 0x80,0x60,0x00,0x40,0x20,0x10,0x21,0x40,0x00,0x00,0x71,0x00,0x70,0x00
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x8f,0x04,0x03,0x00,0x0c,0x02,0x09,
+ 0x14,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x00,0x00,0x00,0x3e,0x41,0x5d,
+ 0x55,0x5e,0x00,0x14,0x7f,0x14,0x7f,0x14,0x00,0x00,0x00,0x00,0x00,0x00}};
+
+ // UNIVERSAL
+ static const char PROGMEM char1_L[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0xe2,0xae,0x42,0x00,0x00,0x20,0x44,0x40,0x4c,0x20,0x00,0x12,0xa4,0x88,
+ 0xa4,0x12,0x00,0x08,0xf8,0x08,0xf8,0x08,0x00,0x78,0x80,0x80,0x80,0x78
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
+ 0x41,0x40,0x41,0x80,0x00,0x80,0x40,0x40,0x40,0x80,0x00,0x81,0x40,0x40,
+ 0x40,0x81,0x00,0xc0,0x00,0xc0,0x00,0xc0,0x00,0x00,0xc0,0x00,0x00,0x00
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,
+ 0xc4,0x84,0xc2,0x07,0x00,0x03,0x04,0x04,0x04,0x03,0x00,0x02,0x85,0x05,
+ 0x04,0x82,0x00,0x03,0x04,0x1f,0x04,0x03,0x00,0x80,0x83,0x84,0x82,0x80
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,
+ 0xc4,0x44,0xef,0x3b,0x00,0x3e,0x49,0x49,0x49,0x3e,0x00,0x02,0x7f,0x09,
+ 0x09,0x78,0x00,0x3e,0x08,0x08,0x14,0x22,0x00,0x20,0x24,0x24,0x24,0x20}};
+ static const char PROGMEM char1_R[4][42] = {
+ { 0x70,0x88,0xf0,0x88,0x70,0x00,0xfe,0x02,0x02,0x02,0x06,0x00,0x88,0x48,
+ 0x70,0x90,0x88,0x00,0xf0,0x88,0x88,0x88,0x70,0x00,0xc0,0x30,0x0c,0x30,
+ 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0xa0,0x50,0x53,0x90,0x20,0x00,0xc0,0x80,0x40,0x40,0x80,0x00,0x40,0x40,
+ 0xc0,0x40,0x40,0x00,0xc3,0x00,0x00,0x00,0xc0,0x00,0x80,0x40,0xc0,0x40,
+ 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x03,0x84,0x84,0x04,0x03,0x00,0x07,0x00,0x00,0x00,0x1f,0x00,0x00,0x80,
+ 0x83,0x84,0x00,0x00,0x00,0x83,0x54,0x8b,0x00,0x00,0x83,0x84,0x84,0x83,
+ 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x39,0x00,0x00
+ },{ 0xff,0x24,0x24,0x27,0x18,0x00,0x7e,0x10,0x20,0x20,0x1e,0x00,0x2f,0x30,
+ 0x00,0x30,0x2f,0x00,0xe0,0x38,0x25,0x38,0xe0,0x00,0x18,0x26,0xa1,0xa0,
+ 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM game2_L[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,
+ 0x82,0xa2,0x42,0xbc,0x00,0x3e,0xc0,0x30,0xc0,0x3e,0x00,0xfe,0x92,0x92,
+ 0x92,0x82,0x00,0xfe,0x12,0x12,0x32,0xcc,0x00,0x02,0x02,0xfe,0x02,0x02
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0xe0,0x00,0xe0,
+ 0x90,0x90,0x90,0xe1,0x00,0x60,0x90,0x90,0x90,0x20,0x00,0xf0,0x10,0x10,
+ 0x10,0xe0,0x00,0xf0,0x90,0x90,0x90,0x10,0x00,0xe0,0x10,0x90,0x90,0xa0
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x00,0x07,0x02,0x02,0x02,0x02,0x00,0x87,
+ 0x80,0x80,0x80,0x87,0x00,0x82,0x04,0x04,0x04,0x83,0x00,0x07,0x84,0x84,
+ 0x84,0x03,0x00,0x87,0x00,0x00,0x00,0x80,0x00,0x83,0x84,0x84,0x84,0x03
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x08,0x3c,0x02,0x3c,0x08,0x00,0x30,
+ 0x28,0x24,0x22,0x21,0x00,0x31,0x0a,0x04,0x0a,0x31,0x00,0x1f,0x20,0x20,
+ 0x20,0x11,0x00,0x03,0x0c,0x30,0x0c,0x03,0x00,0x3f,0x24,0x24,0x24,0x1b}};
+ static const char PROGMEM medi3_R_nomod[4][42] = {
+ { 0x03,0x0c,0xb0,0x0c,0x03,0x00,0x3f,0x02,0x9c,0x02,0x3f,0x00,0x3f,0x04,
+ 0x84,0x04,0x3f,0x00,0x22,0x25,0xa5,0x25,0x18,0x00,0x3f,0x25,0xa5,0x25,
+ 0x1a,0x00,0x00,0xe0,0x8f,0x02,0x31,0x49,0xfa,0x00,0xe7,0x73,0x00,0x00
+ },{ 0xc0,0x01,0x73,0x01,0xc0,0x00,0xf0,0x81,0xc3,0xe1,0xf0,0x00,0x00,0x71,
+ 0x03,0x71,0x00,0x00,0x00,0xc1,0xc3,0xc1,0x00,0x00,0xf0,0xe1,0xc3,0x81,
+ 0xf0,0x00,0x00,0x03,0xe2,0x21,0xe0,0x21,0xc0,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x01,0x02,0x02,0x02,0x01,0x00,0x07,0x00,0x01,0x03,0x87,0x00,0x00,0x1f,
+ 0x0e,0x04,0x80,0x00,0x00,0x03,0x03,0x03,0x00,0x00,0x07,0x03,0x01,0x00,
+ 0x87,0x00,0x00,0x40,0xa6,0xa8,0x08,0x04,0x8e,0x00,0x73,0x39,0x00,0x00
+ },{ 0x3e,0x31,0x01,0x31,0x3e,0x00,0x00,0x46,0x46,0x4f,0x1f,0x00,0x00,0xa6,
+ 0x46,0xaf,0x1f,0x00,0x28,0x2c,0x2e,0x2c,0x28,0x00,0x00,0x46,0xe6,0x4f,
+ 0x1f,0x00,0x00,0x02,0x72,0x8a,0x89,0x00,0x1e,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM medi3_R_shift[4][42] = {
+ { 0x03,0x0c,0x30,0x0c,0x03,0x00,0x3f,0x02,0x1c,0x02,0x3f,0x00,0x3f,0x04,
+ 0x04,0x04,0x3f,0x00,0x22,0x25,0x25,0x25,0x18,0x00,0x3f,0x25,0x25,0x25,
+ 0x1a,0x00,0x00,0xe0,0x8f,0x02,0x31,0x49,0xfa,0x00,0xe7,0x73,0x00,0x00
+ },{ 0xc0,0x01,0x71,0x01,0xc0,0x00,0xf0,0x81,0xc1,0xe1,0xf0,0x00,0x00,0x71,
+ 0x01,0x71,0x00,0x00,0x00,0xc1,0xc1,0xc1,0x00,0x00,0xf0,0xe1,0xc1,0x81,
+ 0xf0,0x00,0x00,0x03,0xe2,0x21,0xe0,0x21,0xc0,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x01,0x02,0x02,0x02,0x01,0x00,0x07,0x00,0x01,0x03,0x87,0x00,0x00,0x1f,
+ 0x0e,0x04,0x80,0x00,0x00,0x03,0x03,0x03,0x00,0x00,0x07,0x03,0x01,0x00,
+ 0x87,0x00,0x00,0x40,0xa6,0xa8,0x08,0x04,0x8e,0x00,0x73,0x39,0x00,0x00
+ },{ 0x3e,0x31,0x01,0x31,0x3e,0x00,0x00,0x46,0x46,0x4f,0x1f,0x00,0x00,0xa6,
+ 0x46,0xaf,0x1f,0x00,0x28,0x2c,0x2e,0x2c,0x28,0x00,0x00,0x46,0xe6,0x4f,
+ 0x1f,0x00,0x00,0x02,0x72,0x8a,0x89,0x00,0x1e,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM navi4_R[4][42] = {
+ { 0xe0,0x10,0x54,0x38,0x10,0x00,0xfc,0x24,0x24,0x24,0x18,0x00,0x0c,0x10,
+ 0xe0,0x10,0x0c,0x00,0x8c,0x50,0x20,0x50,0x8c,0x00,0xc0,0xbe,0xa2,0xbe,
+ 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0x80,0xc1,0xa1,0x81,0x00,0x00,0x01,0x80,0x40,0x20,0x00,0x00,0x00,0x00,
+ 0xf1,0x00,0x00,0x00,0x41,0x20,0xd0,0x20,0x41,0x00,0x01,0x21,0x41,0x81,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x00,0x49,0x4a,0x48,0x87,0x00,0x81,0x82,0x85,0x89,0x01,0x00,0x01,0x02,
+ 0x85,0x02,0x01,0x00,0x40,0x40,0x47,0x40,0x40,0x00,0x81,0x09,0x05,0x02,
+ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x39,0x00,0x00
+ },{ 0x12,0x65,0x85,0x65,0x17,0x00,0x07,0x01,0x06,0x18,0x60,0x00,0x88,0x90,
+ 0xaf,0x90,0x88,0x00,0x04,0x02,0x7d,0x02,0x04,0x00,0x01,0x46,0x58,0x60,
+ 0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ static const char PROGMEM func7_L[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0xff,0x09,0xe9,0xc9,0x01,0x00,0xe0,0x00,
+ 0x10,0x08,0xfc,0x00,0x00,0x08,0x84,0x44,0x24,0x18,0x00,0x88,0x04,0x24,
+ 0x24,0xd8,0x00,0x60,0x50,0x48,0xfc,0x40,0x00,0x70,0x80,0x9c,0x80,0x70
+ },{ 0x00,0x00,0xce,0x9c,0x00,0xf0,0x00,0x00,0x9f,0x00,0x03,0x0c,0x1f,0x00,
+ 0xe0,0xa0,0xa1,0x20,0x00,0xc1,0xa1,0xa1,0xa1,0x01,0x00,0x20,0x21,0x21,
+ 0xa1,0x60,0x00,0xc0,0x20,0x20,0x21,0xc0,0x00,0x40,0xe0,0x50,0x40,0x80
+ },{ 0x00,0x00,0x39,0x73,0x00,0xef,0x02,0x83,0xe4,0x00,0x0e,0x15,0x16,0x00,
+ 0x04,0x08,0x08,0x07,0x00,0x07,0x48,0xc8,0x08,0x07,0x00,0x00,0x40,0xce,
+ 0x01,0x00,0x00,0x06,0x49,0xc9,0x09,0x06,0x00,0x06,0x08,0x49,0x08,0x07
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x05,0x04,0x03,0x90,0xa8,0xa8,0x40,0x06,
+ 0x49,0x49,0x49,0x3e,0x00,0x7c,0xa2,0x93,0x8a,0x7c,0x00,0x00,0x08,0x07,
+ 0xfe,0x00,0x00,0x84,0xc2,0xa3,0x92,0x8c,0x00,0x70,0x38,0x0d,0x38,0x70}};
+ static const char PROGMEM mous8_L[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x3c,0x84,0xbc,0x84,0x38,0x00,0x00,0x00,0x10,
+ 0x28,0x92,0xc5,0x82,0x00,0xfe,0x1f,0x1f,0x01,0xfe,0x00,0xfe,0x01,0x19,
+ 0x01,0xfe,0x00,0xfe,0x01,0x1f,0x1f,0xfe,0x00,0x10,0x38,0x92,0xc7,0x82
+ },{ 0x00,0x00,0xce,0x9c,0x00,0xe7,0x08,0x08,0x08,0xe7,0x00,0x00,0x00,0x00,
+ 0x00,0x80,0x01,0x00,0x00,0x01,0x01,0x81,0x01,0x01,0x00,0x01,0x01,0x81,
+ 0x01,0x01,0x00,0x01,0x01,0x81,0x01,0x01,0x00,0x60,0x50,0xf8,0x41,0x00
+ },{ 0x00,0x00,0x39,0x73,0x00,0x91,0xaa,0xaa,0xa9,0x43,0x00,0x00,0x00,0x02,
+ 0x07,0xca,0x02,0x02,0x00,0x02,0x01,0xcf,0x01,0x02,0x00,0x02,0x04,0x0f,
+ 0x04,0x02,0x00,0x02,0x02,0xca,0x07,0x02,0x00,0xdc,0x58,0x5c,0x18,0x1f
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x1c,0x2a,0x2a,0x2a,0x2c,0x00,0x00,0x00,0x0c,
+ 0x33,0xc0,0x00,0x00,0x00,0x0c,0x03,0x00,0x03,0x0c,0x00,0x0c,0x30,0xc0,
+ 0x30,0x0c,0x00,0x00,0x00,0xc0,0x33,0x0c,0x00,0xe5,0xc9,0xe6,0xc0,0xf8}};
+ static const char PROGMEM musi9_L[4][42] = {
+ { 0x00,0x00,0x73,0xe7,0x00,0x00,0x00,0x00,0x00,0xfe,0x04,0x18,0x04,0xfe,
+ 0x00,0x00,0xfe,0x00,0x00,0x00,0xfe,0x00,0x8c,0x12,0x12,0x12,0xe4,0x00,
+ 0x00,0x02,0xfe,0x02,0x00,0x00,0xfc,0x02,0x02,0x02,0x84,0x00,0x00,0x00
+ },{ 0x00,0x00,0xce,0x9c,0x00,0x00,0xc0,0xe0,0xf0,0xf9,0xf8,0xf8,0xf8,0xf9,
+ 0xf0,0xe0,0xc0,0x01,0x01,0x01,0x00,0xf0,0xf0,0x01,0x01,0xf1,0xf0,0x00,
+ 0x00,0x01,0x01,0x01,0x00,0x00,0xf8,0xf1,0xe1,0xc1,0x80,0x00,0x00,0x00
+ },{ 0x00,0x00,0x39,0x73,0x00,0x00,0x07,0x0f,0x1f,0x3f,0x3f,0x3f,0x3f,0x3f,
+ 0x1f,0x0f,0x07,0x00,0x00,0x00,0x00,0x1f,0x1f,0x00,0x00,0x1f,0x1f,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,0x00
+ },{ 0x00,0x00,0xe7,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x08,
+ 0xf8,0x08,0xf0,0x00,0x70,0x88,0x88,0x88,0x70,0x00,0x70,0x88,0x88,0x48,
+ 0xff,0x00,0x70,0xa8,0xa8,0xa8,0xb0,0x00,0x00,0x00,0x00,0x00,0x00,0x00}};
+ static const char PROGMEM musi9_R[4][42] = {
+ { 0x00,0x00,0x00,0xfe,0x04,0x18,0x04,0xfe,0x00,0x00,0xfe,0x00,0x00,0x00,
+ 0xfe,0x00,0x8c,0x12,0x12,0x12,0xe4,0x00,0x00,0x02,0xfe,0x02,0x00,0x00,
+ 0xfc,0x02,0x02,0x02,0x84,0x00,0x00,0x00,0x00,0x00,0xe7,0x73,0x00,0x00
+ },{ 0x00,0x00,0x00,0x81,0x60,0x10,0x60,0x81,0x60,0x10,0x00,0x01,0x01,0x01,
+ 0xe0,0xe0,0x60,0x61,0x61,0x61,0x60,0xf8,0x70,0x21,0x01,0x01,0xc0,0xe0,
+ 0x60,0x01,0xf9,0xf9,0x00,0x60,0xe0,0xc0,0x00,0x00,0x9c,0xce,0x00,0x00
+ },{ 0x18,0x24,0x4b,0x48,0x48,0x4c,0x4b,0x48,0x4b,0x2c,0x18,0x00,0x00,0x00,
+ 0x4f,0xe7,0xf0,0x60,0x60,0x60,0x60,0x60,0x7e,0x7f,0x00,0x0f,0x3f,0x70,
+ 0x60,0xc0,0xc1,0xc1,0xc0,0x60,0x70,0x3f,0x0f,0x00,0x73,0x39,0x00,0x00
+ },{ 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x08,0xf8,0x08,0xf0,0x00,0x70,0x88,
+ 0x88,0x88,0x71,0x00,0x70,0x88,0x88,0x48,0xff,0x00,0x70,0xa8,0xa8,0xa8,
+ 0xb0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xce,0xe7,0x00,0x00}};
+ uint8_t this_layout = userspace_config.layout % 3;
+
+ // Render the requested image on the given column and row
+ // Don't grab highest layer; instead compare from top to bottom.
+ // Highest layer might be on the other side
+ if (isLeft) {
+ if (layer_state_cmp(layer_state, _MUSI)) {
+ draw_image(row, col, musi9_L);
+ } else if (layer_state_cmp(layer_state, _MOUS)) {
+ draw_image(row, col, mous8_L);
+ } else if (layer_state_cmp(layer_state, _FUNC)) {
+ draw_image(row, col, func7_L);
+ } else if (layer_state_cmp(layer_state, _NUMB)) {
+ switch (this_layout) {
+ case 0: // Dvorak
+ if (mods & MOD_MASK_SHIFT) {
+ draw_image(row, col, numb6_L_dvor_shift);
+ } else {
+ draw_image(row, col, numb6_L_dvor_nomod);
+ }
+ break;
+ case 1: // Turkish F
+ if ((mods & MOD_MASK_SHIFT) && (mods & MOD_BIT(KC_RALT))) {
+ // Shift + AltGr
+ draw_image(row, col, numb6_L_turf_shfgr);
+ } else if (mods & MOD_MASK_SHIFT) {
+ // Shift
+ draw_image(row, col, numb6_L_turf_shift);
+ } else if (mods & MOD_BIT(KC_RALT)) {
+ // AltGr
+ draw_image(row, col, numb6_L_turf_altgr);
+ } else {
+ // Normal
+ draw_image(row, col, numb6_L_turf_nomod);
+ }
+ break;
+ case 2: // Qwerty
+ if (mods & MOD_MASK_SHIFT) {
+ draw_image(row, col, numb6_L_qwer_shift);
+ } else {
+ draw_image(row, col, numb6_L_qwer_nomod);
+ }
+ break;
+ }
+ } else if (layer_state_cmp(layer_state, _GAME)) {
+ draw_image(row, col, game2_L);
+ } else if (layer_state_cmp(layer_state, _CHAR)) {
+ draw_image(row, col, char1_L);
+ } else {
+ switch (this_layout) {
+ case 0: // Dvorak
+ if (mods & MOD_MASK_SHIFT) {
+ draw_image(row, col, base0_L_dvor_shift);
+ } else {
+ draw_image(row, col, base0_L_dvor_nomod);
+ }
+ break;
+ case 1: // Turkish F
+ if ((mods & MOD_MASK_SHIFT) && (mods & MOD_BIT(KC_RALT))) {
+ // Shift + AltGr
+ draw_image(row, col, base0_L_turf_shfgr);
+ } else if (mods & MOD_MASK_SHIFT) {
+ // Shift
+ draw_image(row, col, base0_L_turf_shift);
+ } else if (mods & MOD_BIT(KC_RALT)) {
+ // AltGr
+ draw_image(row, col, base0_L_turf_altgr);
+ } else {
+ // Normal
+ draw_image(row, col, base0_L_turf_nomod);
+ }
+ break;
+ case 2: // Qwerty
+ if (mods & MOD_MASK_SHIFT) {
+ draw_image(row, col, base0_L_qwer_shift);
+ } else {
+ draw_image(row, col, base0_L_qwer_nomod);
+ }
+ break;
+ }
+ }
+ } else {
+ if (layer_state_cmp(layer_state, _MUSI)) {
+ draw_image(row, col, musi9_R);
+ } else if (layer_state_cmp(layer_state, _SYMB)) {
+ switch (this_layout) {
+ case 0: // Dvorak
+ draw_image(row, col, symb5_R_dvor);
+ break;
+ case 1: // Turkish f
+ if (mods & MOD_BIT(KC_RALT)) {
+ // AltGr
+ draw_image(row, col, symb5_R_turf_altgr);
+ } else {
+ // Normal
+ draw_image(row, col, symb5_R_turf_nomod);
+ }
+ break;
+ case 2: // Qwerty
+ draw_image(row, col, symb5_R_qwer);
+ break;
+ }
+ } else if (layer_state_cmp(layer_state, _NAVI)) {
+ draw_image(row, col, navi4_R);
+ } else if (layer_state_cmp(layer_state, _MEDI)) {
+ if (mods & MOD_MASK_SHIFT) {
+ draw_image(row, col, medi3_R_shift);
+ } else {
+ draw_image(row, col, medi3_R_nomod);
+ }
+ } else if (layer_state_cmp(layer_state, _CHAR)) {
+ draw_image(row, col, char1_R);
+ } else {
+ switch (this_layout) {
+ case 0: // Dvorak
+ if (mods & MOD_MASK_SHIFT) {
+ draw_image(row, col, base0_R_dvor_shift);
+ } else {
+ draw_image(row, col, base0_R_dvor_nomod);
+ }
+ break;
+ case 1: // Turkish F
+ if ((mods & MOD_MASK_SHIFT) && (mods & MOD_BIT(KC_RALT))) {
+ // Shift + AltGr
+ draw_image(row, col, base0_R_turf_shfgr);
+ } else if (mods & MOD_MASK_SHIFT) {
+ // Shift
+ draw_image(row, col, base0_R_turf_shift);
+ } else if (mods & MOD_BIT(KC_RALT)) {
+ // AltGr
+ draw_image(row, col, base0_R_turf_altgr);
+ } else {
+ // Normal
+ draw_image(row, col, base0_R_turf_nomod);
+ }
+ break;
+ case 2: // Qwerty
+ if (mods & MOD_MASK_SHIFT) {
+ draw_image(row, col, base0_R_qwer_shift);
+ } else {
+ draw_image(row, col, base0_R_qwer_nomod);
+ }
+ break;
+ }
+ }
+ }
+}
+
+// Render the RGB state on the given column and row
+void render_rgb(uint8_t row, uint8_t col) {
+ static const char PROGMEM rgb_enab[12] = {0x08,0x81,0x3c,0x42,0x99,0xbd,0xbd,0x99,0x42,0x3c,0x81,0x10};
+ static const char PROGMEM rgb_disa[12] = {0x08,0x81,0x3c,0x42,0x81,0x81,0x81,0x81,0x42,0x3c,0x81,0x10};
+ static char rgb_temp4[4] = {0};
+ static char rgb_temp3[3] = {0};
+
+ oled_set_cursor(col, row);
+# ifdef RGB_MATRIX_ENABLE
+ if (rgb_matrix_is_enabled()) {
+ oled_write_raw_P(rgb_enab, 12);
+ } else {
+ oled_write_raw_P(rgb_disa, 12);
+ }
+ oled_set_cursor(col + 2, row);
+ oled_write(" hue sat val", false);
+ oled_set_cursor(col, row + 1);
+ itoa(rgb_matrix_get_mode(), rgb_temp3, 10);
+ oled_write(rgb_temp3, false);
+ oled_write(" ", false);
+ itoa(rgb_matrix_get_hue(), rgb_temp4, 10);
+ oled_write(rgb_temp4, false);
+ oled_write(" ", false);
+ itoa(rgb_matrix_get_sat(), rgb_temp4, 10);
+ oled_write(rgb_temp4, false);
+ oled_write(" ", false);
+ itoa(rgb_matrix_get_val(), rgb_temp4, 10);
+ oled_write(rgb_temp4, false);
+# else // RGB_MATRIX_ENABLE
+ oled_write("-RGB disabled-", false);
+# endif // RGB_MATRIX_ENABLE
+}
+
+void render_status_left(uint8_t row, uint8_t col) {
+ // Left side looks like this on the left half
+ // (Should be 14 characters per line)
+ // Mods: <OS> <Alt/Gr> <Ctrl> <Shift>
+ // Enc: <8 len str>
+ // Wpm: <wpm here>
+ // Layout: <dvorak/qwerty/tur. f>
+ // Right half is whatever layer image needs be
+ uint8_t this_mod = get_mods();
+ uint8_t this_layer = get_highest_layer(layer_state);
+
+ // MODIFIERS
+ render_modifiers(row + 0, col + 0, this_mod);
+ // Encoders
+ render_encoder(row + 1, col + 0, 0, this_layer);
+ // WPM text
+ render_wpm(row + 2, col + 0);
+ // Visual layout
+ render_keymap(row + 3, col + 0, false);
+ // Draw the image after 14'th character
+ render_layout(row + 0, col + 14, this_mod, true);
+}
+
+void render_status_right(uint8_t row, uint8_t col) {
+ // Right half is whatever layer image needs be on the left
+ // Right side looks like this on the right half
+ // (Should be after the 12'th character; max 14 characters per line)
+ // Mods: <OS> <Alt/Gr> <Ctrl> <Shift>
+ // Enc: <8 len str>
+ // Wpm: <wpm here>
+ // Layout: <dvorak/qwerty/tur. f>
+ uint8_t this_mod = get_mods();
+ uint8_t this_layer = get_highest_layer(layer_state);
+
+ // Draw the image
+ render_layout(row + 0, col + 0, this_mod, false);
+ // Modifiers
+ render_modifiers(row + 0, col + 7, this_mod);
+ // Encoder
+ render_encoder(row + 1, col + 7, 1, this_layer);
+ // RGB State (2 rows)
+ render_rgb(row + 2, col + 7);
+}
diff --git a/users/bbaserdem/bb-oled-extra.h b/users/bbaserdem/bb-oled-extra.h
new file mode 100644
index 0000000000..c051e6226c
--- /dev/null
+++ b/users/bbaserdem/bb-oled-extra.h
@@ -0,0 +1,25 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+#include "bbaserdem.h"
+
+// OLED layout images writer function
+void render_modifiers(uint8_t row, uint8_t col, uint8_t mods);
+void render_layout(uint8_t row, uint8_t col, uint8_t mods, bool isLeft);
+void render_rgb(uint8_t row, uint8_t col);
+void render_status_left(uint8_t row, uint8_t col);
+void render_status_right(uint8_t row, uint8_t col);
diff --git a/users/bbaserdem/bb-oled.c b/users/bbaserdem/bb-oled.c
new file mode 100644
index 0000000000..cf00193c03
--- /dev/null
+++ b/users/bbaserdem/bb-oled.c
@@ -0,0 +1,216 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "bb-oled.h"
+
+#include <string.h>
+// Grab the print function
+#ifdef ENCODER_ENABLE
+# include "bb-encoder.h"
+#endif // ENCODER_ENABLE
+
+/* OLED
+ * This contains general purpose oled code
+ */
+
+// Allow default to be overwritten by keymap if they return false
+__attribute__ ((weak)) bool oled_task_keymap(void) {return true;}
+
+// Do sane defaults for regular oled rendering
+void oled_task_user(void) {
+ if (is_oled_on()) {
+ if (oled_task_keymap()) {
+ render_status_lite(0, 0);
+ }
+ }
+}
+
+/*-------------------------*\
+|*---RENDERING FUNCTIONS---*|
+\*-------------------------*/
+void render_qmk_logo(uint8_t row, uint8_t col) {
+ 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_set_cursor(col, row);
+ oled_write_P(qmk_logo, false);
+}
+
+void render_layer(uint8_t row, uint8_t col, uint8_t top_layer) {
+ // Write the layer state; 17 chars
+ oled_set_cursor(col, row);
+ oled_write("Layer: ", false);
+ switch (top_layer) {
+ case _BASE:
+ oled_write("Default ", false);
+ break;
+ case _CHAR:
+ oled_write("Sp. Chars ", false);
+ break;
+ case _GAME:
+ oled_write("Gaming ", false);
+ break;
+ case _MEDI:
+ oled_write("Media Ctr ", false);
+ break;
+ case _NAVI:
+ oled_write("Navigation", false);
+ break;
+ case _SYMB:
+ oled_write("Symbols ", false);
+ break;
+ case _NUMB:
+ oled_write("Numpad ", false);
+ break;
+ case _FUNC:
+ oled_write("Funct Keys", false);
+ break;
+ case _MOUS:
+ oled_write("Mouse Keys", false);
+ break;
+ case _MUSI:
+ oled_write("Music Mode", false);
+ break;
+ default:
+ oled_write("?? N/A ?? ", false);
+ }
+}
+
+void render_modifiers_lite(uint8_t row, uint8_t col, uint8_t mods) {
+ // Write the modifier state, 16 characters
+ oled_set_cursor(col, row);
+ oled_write((mods & MOD_MASK_SHIFT ) ? "Shft " : " ", false);
+ oled_write((mods & MOD_MASK_CTRL ) ? "Ctrl " : " ", false);
+ oled_write((mods & MOD_MASK_ALT ) ? "Alt" : " ", false);
+ oled_write((mods & MOD_BIT(KC_RALT)) ? "G " : " ", false);
+ oled_write((mods & MOD_MASK_GUI ) ? "Meta " : " ", false);
+}
+
+void render_encoder(uint8_t row, uint8_t col, uint8_t index, uint8_t layer) {
+ // Renders the encoder state, 14 characters
+ oled_set_cursor(col, row);
+
+# ifdef ENCODER_ENABLE
+ static char encoder_temp9[9] = {0};
+ oled_write("Enc: ", false);
+ encoder_state_string(index, layer, encoder_temp9);
+ oled_write(encoder_temp9, false);
+# else // ENCODER_ENABLE
+ oled_write("No enc. avail.", false);
+# endif // ENCODER_ENABLE
+}
+
+void render_wpm(uint8_t row, uint8_t col) {
+ // Renders the WPM, 8 characters
+ oled_set_cursor(col, row);
+# ifdef WPM_ENABLE
+ static char wpm_temp4[4] = {0};
+ oled_write("WPM: ", false);
+ itoa(get_current_wpm(), wpm_temp4, 10);
+ oled_write(wpm_temp4, false);
+ oled_write(" ", false);
+# else // WPM_ENABLE
+ oled_write("WPM: N/A", false);
+# endif // WPM_ENABLE
+}
+
+// Writes the currently used OLED display layout
+void render_keymap(uint8_t row, uint8_t col, bool isLite) {
+ // Render the oled layout; lite is 11, regular is 14 characters
+ oled_set_cursor(col, row);
+ if (isLite) {
+ oled_write("KM: ", false);
+ } else {
+ oled_write("Layout: ", false);
+ }
+ switch (userspace_config.layout % 3) {
+ case 0:
+ oled_write("Dvorak", false);
+ break;
+ case 1:
+ oled_write("Tur. F", false);
+ break;
+ case 2:
+ oled_write("Qwerty", false);
+ break;
+ }
+ if (isLite) {
+ oled_write(" ", false);
+ }
+}
+
+// Writes the currently used OLED display layout
+#ifdef RGB_MATRIX_ENABLE
+void render_rgb_lite(uint8_t row, uint8_t col) {
+ // Writes the currently used OLED display layout, 19 characters
+ static char rgb_temp4[4] = {0};
+ // Render the oled layout
+ oled_set_cursor(col, row);
+ oled_write("m", false);
+ itoa(rgb_matrix_get_mode(), rgb_temp4, 10);
+ oled_write(rgb_temp4, false);
+ oled_write(" h", false);
+ itoa(rgb_matrix_get_hue(), rgb_temp4, 10);
+ oled_write(rgb_temp4, false);
+ oled_write(" s", false);
+ itoa(rgb_matrix_get_sat(), rgb_temp4, 10);
+ oled_write(rgb_temp4, false);
+ oled_write(" v", false);
+ itoa(rgb_matrix_get_val(), rgb_temp4, 10);
+ oled_write(rgb_temp4, false);
+}
+#endif // RGB_MATRIX_ENABLE
+
+void render_status_lite(uint8_t row, uint8_t col) {
+ // Function to print state information; for low flash memory
+ uint8_t this_layer = get_highest_layer(layer_state);
+ uint8_t this_mod = get_mods();
+
+ // Line 1: Layer State
+ render_layer(row + 0, col + 0, this_layer);
+
+ // Line 2: Mod or info
+ switch (this_layer) {
+ // Show RGB mode as an overlay in media mode.
+# ifdef RGB_MATRIX_ENABLE
+ case _MEDI:
+ render_rgb_lite(row + 1, col + 0);
+ break;
+# endif // RGB_MATRIX_ENABLE
+ // Show the modifier if nothing else is doing anything
+ default:
+ render_modifiers_lite(row + 1, col + 0, this_mod);
+ break;
+ }
+
+ // Line 3: WPM and layout
+ render_keymap(row + 2, col + 0, true);
+ render_wpm(row + 2, col + 11);
+
+ // Line 4: Encoder states
+# ifdef SPLIT_KEYBOARD
+ if (is_keyboard_left()) {
+ render_encoder(row + 3, col + 0, 0, this_layer);
+ } else {
+ render_encoder(row + 3, col + 0, 1, this_layer);
+ }
+# else // SPLIT_KEYBOARD
+ render_encoder(row + 3, col + 0, 0, this_layer);
+# endif // SPLIT_KEYBOARD
+}
diff --git a/users/bbaserdem/bb-oled.h b/users/bbaserdem/bb-oled.h
new file mode 100644
index 0000000000..a355c88ca9
--- /dev/null
+++ b/users/bbaserdem/bb-oled.h
@@ -0,0 +1,32 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+#include "bbaserdem.h"
+
+// Contain the main oled writer here
+void oled_task_user(void);
+// Some generic rendering functions
+void render_qmk_logo(uint8_t row, uint8_t col);
+void render_layer(uint8_t row, uint8_t col, uint8_t top_layer);
+void render_modifiers_lite(uint8_t row, uint8_t col, uint8_t mods);
+void render_encoder(uint8_t row, uint8_t col, uint8_t index, uint8_t layer);
+void render_wpm(uint8_t row, uint8_t col);
+void render_keymap(uint8_t row, uint8_t col, bool isLite);
+#ifdef RGB_MATRIX_ENABLE
+void render_rgb_lite(uint8_t row, uint8_t col);
+#endif // RGB_MATRIX_ENABLE
+void render_status_lite(uint8_t row, uint8_t col);
diff --git a/users/bbaserdem/bb-rgb.c b/users/bbaserdem/bb-rgb.c
new file mode 100644
index 0000000000..bdb7f12bbd
--- /dev/null
+++ b/users/bbaserdem/bb-rgb.c
@@ -0,0 +1,130 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "bb-rgb.h"
+#include "color.h"
+
+#define X_DIV 224/2
+/* Code relating to per-key RGB LED stuff
+ */
+
+// Allow hooking into the RGB matrix indications using keymap code
+
+// Modulates the brightness of indicator
+RGB helper_dimmer(uint8_t r, uint8_t g, uint8_t b) {
+ RGB output;
+ output.r = r / 2;
+ output.g = g / 2;
+ output.b = b / 2;
+ return output;
+}
+// x range from 0-left to 224-right
+// y range from 0-top to 64-bottom
+void helper_painter(uint8_t led_min, uint8_t led_max, RGB col, uint8_t side) {
+ if (side == 1) {
+ // Left
+ for(uint8_t i = led_min; i <= led_max; i++) {
+ if((g_led_config.point[i].x < X_DIV) && (g_led_config.flags[i] & LED_FLAG_INDICATOR)) {
+ rgb_matrix_set_color(i, col.r, col.g, col.b);
+ }
+ }
+ } else if (side == 2) {
+ // Right
+ for(uint8_t i = led_min; i <= led_max; i++) {
+ if((g_led_config.point[i].x > X_DIV) && (g_led_config.flags[i] & LED_FLAG_INDICATOR)) {
+ rgb_matrix_set_color(i, col.r, col.g, col.b);
+ }
+ }
+ } else if (side == 0) {
+ // Both
+ for(uint8_t i = led_min; i <= led_max; i++) {
+ if(g_led_config.flags[i] & LED_FLAG_INDICATOR) {
+ rgb_matrix_set_color(i, col.r, col.g, col.b);
+ }
+ }
+ }
+}
+
+// Allow to turn off global handling
+__attribute__ ((weak)) bool rgb_matrix_indicators_advanced_keymap(uint8_t led_min, uint8_t led_max) {
+ return false;
+}
+// Set RGB state depending on layer
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ uint8_t thisInd = 3;
+ RGB thisCol;
+ // Load keymap hooks
+ if(rgb_matrix_indicators_advanced_keymap(led_min, led_max)) {
+ return;
+ }
+ // Grab color info
+ switch (get_highest_layer(layer_state)) {
+ case _GAME: // Set left side as purple
+ thisCol = helper_dimmer(RGB_PURPLE);
+ thisInd = 1;
+ break;
+ case _CHAR: // Set full board as gold
+ thisCol = helper_dimmer(RGB_GOLD);
+ thisInd = 0;
+ break;
+ case _MEDI: // Set right side as pink
+ thisCol = helper_dimmer(RGB_MAGENTA);
+ thisInd = 2;
+ break;
+ case _NAVI: // Set right side as green
+ thisCol = helper_dimmer(RGB_GREEN);
+ thisInd = 2;
+ break;
+ case _SYMB: // Set right side as yellow
+ thisCol = helper_dimmer(RGB_YELLOW);
+ thisInd = 2;
+ break;
+ case _NUMB: // Set left side as blue
+ thisCol = helper_dimmer(RGB_BLUE);
+ thisInd = 1;
+ break;
+ case _FUNC: // Set left side as red
+ thisCol = helper_dimmer(RGB_RED);
+ thisInd = 1;
+ break;
+ case _MOUS: // Set left side as blue-green
+ thisCol = helper_dimmer(RGB_SPRINGGREEN);
+ thisInd = 1;
+ break;
+ case _MUSI: // Set full board as orange
+ thisCol = helper_dimmer(RGB_ORANGE);
+ thisInd = 0;
+ break;
+ }
+ helper_painter(led_min, led_max, thisCol, thisInd);
+}
+
+// Hook into shutdown code to make all perkey LED's red on hitting reset
+void shutdown_rgb(void) {
+ // Flash all the key LED's red on shutdown
+ uint16_t timer_start = timer_read();
+ rgb_matrix_set_color_all(RGB_CORAL);
+ // Delay until this registers
+ while(timer_elapsed(timer_start) < 250) {wait_ms(1);}
+}
+
+// Hook into suspend code
+void suspend_power_down_rgb(void) {
+ rgb_matrix_set_suspend_state(true);
+}
+void suspend_wakeup_init_rgb(void) {
+ rgb_matrix_set_suspend_state(false);
+}
diff --git a/users/bbaserdem/bb-rgb.h b/users/bbaserdem/bb-rgb.h
new file mode 100644
index 0000000000..62b6da9f2f
--- /dev/null
+++ b/users/bbaserdem/bb-rgb.h
@@ -0,0 +1,28 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+#include "bbaserdem.h"
+
+/* Hooks involving perkey RGB LEDs
+ */
+
+// For custom indicators
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max);
+// Hook into shutdown code
+void shutdown_rgb(void);
+void suspend_wakeup_init_rgb(void);
+void suspend_power_down_rgb(void);
diff --git a/users/bbaserdem/bb-underglow.c b/users/bbaserdem/bb-underglow.c
new file mode 100644
index 0000000000..69aae439f4
--- /dev/null
+++ b/users/bbaserdem/bb-underglow.c
@@ -0,0 +1,116 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "bb-underglow.h"
+
+/* UNDERGLOW IMPLEMENTATION
+ */
+
+// Define the layer switching code
+
+// An empty layer on the base
+const rgblight_segment_t PROGMEM bb_base_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, 0, HSV_WHITE}
+);
+// Gaming layer is turquoise
+const rgblight_segment_t PROGMEM bb_game_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {RGBLIGHT_LEFT_BEG, RGBLIGHT_LEFT_NUM, HSV_PURPLE}
+);
+// Character overlay is chartereuse
+const rgblight_segment_t PROGMEM bb_char_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, RGBLED_NUM, HSV_GOLD}
+);
+
+// Right-hand layers
+
+// Media layer is orange
+const rgblight_segment_t PROGMEM bb_medi_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {RGBLIGHT_RIGHT_BEG, RGBLIGHT_RIGHT_NUM, HSV_MAGENTA}
+);
+// Navigation layer is green
+const rgblight_segment_t PROGMEM bb_navi_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {RGBLIGHT_RIGHT_BEG, RGBLIGHT_RIGHT_NUM, HSV_GREEN}
+);
+// Symbol layer is purple
+const rgblight_segment_t PROGMEM bb_symb_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {RGBLIGHT_RIGHT_BEG, RGBLIGHT_RIGHT_NUM, HSV_YELLOW}
+);
+
+// Left-hand layers
+
+// Number layer is blue
+const rgblight_segment_t PROGMEM bb_numb_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {RGBLIGHT_LEFT_BEG, RGBLIGHT_LEFT_NUM, HSV_BLUE}
+);
+// Function layer is red
+const rgblight_segment_t PROGMEM bb_func_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {RGBLIGHT_LEFT_BEG, RGBLIGHT_LEFT_NUM, HSV_RED}
+);
+// Pointer layer is yellow
+const rgblight_segment_t PROGMEM bb_mous_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {RGBLIGHT_LEFT_BEG, RGBLIGHT_LEFT_NUM, HSV_SPRINGGREEN}
+);
+
+// Music playback layer is magenta
+const rgblight_segment_t PROGMEM bb_musi_layer[] = RGBLIGHT_LAYER_SEGMENTS(
+ {0, RGBLED_NUM, HSV_ORANGE}
+);
+
+const rgblight_segment_t* const PROGMEM bb_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
+ bb_base_layer,
+ bb_char_layer,
+ bb_game_layer,
+ bb_medi_layer,
+ bb_navi_layer,
+ bb_symb_layer,
+ bb_numb_layer,
+ bb_func_layer,
+ bb_mous_layer,
+ bb_musi_layer
+);
+
+// Enable the LED switching layers
+void keyboard_post_init_underglow(void) {
+ rgblight_layers = bb_rgb_layers;
+ // Default rgb mode is rainbow swirl; set this
+ rgblight_sethsv_noeeprom(100, 255, 255);
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL + 0);
+}
+
+// Set RGBLIGHT state depending on layer
+layer_state_t layer_state_set_underglow(layer_state_t state) {
+ // Activate layers if on that region
+ rgblight_set_layer_state(_BASE, layer_state_cmp(state, _BASE));
+ rgblight_set_layer_state(_GAME, layer_state_cmp(state, _GAME));
+ rgblight_set_layer_state(_CHAR, layer_state_cmp(state, _CHAR));
+ rgblight_set_layer_state(_MEDI, layer_state_cmp(state, _MEDI));
+ rgblight_set_layer_state(_NAVI, layer_state_cmp(state, _NAVI));
+ rgblight_set_layer_state(_SYMB, layer_state_cmp(state, _SYMB));
+ rgblight_set_layer_state(_NUMB, layer_state_cmp(state, _NUMB));
+ rgblight_set_layer_state(_FUNC, layer_state_cmp(state, _FUNC));
+ rgblight_set_layer_state(_MOUS, layer_state_cmp(state, _MOUS));
+ rgblight_set_layer_state(_MUSI, layer_state_cmp(state, _MUSI));
+ // Return so other stuff can be done
+ return state;
+}
+
+// Hook into shutdown code
+void shutdown_underglow(void) {
+ // Make the LED's red on shutdown
+ rgblight_enable_noeeprom();
+ rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
+ rgblight_sethsv(HSV_WHITE);
+}
diff --git a/users/bbaserdem/bb-underglow.h b/users/bbaserdem/bb-underglow.h
new file mode 100644
index 0000000000..9cc1db3757
--- /dev/null
+++ b/users/bbaserdem/bb-underglow.h
@@ -0,0 +1,28 @@
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+#include "bbaserdem.h"
+
+/* UNDERGLOW IMPLEMENTATION
+ */
+
+// Used to initialize layer switching overlay
+void keyboard_post_init_underglow(void);
+// Used to change RGB underglow layers on keymap layer change
+layer_state_t layer_state_set_underglow(layer_state_t state);
+// Hook into shutdown to show effect on shutdown
+void shutdown_underglow(void);
diff --git a/users/bbaserdem/bbaserdem.c b/users/bbaserdem/bbaserdem.c
index cdacda12ee..e0e204c302 100644
--- a/users/bbaserdem/bbaserdem.c
+++ b/users/bbaserdem/bbaserdem.c
@@ -1,633 +1,376 @@
-#include "bbaserdem.h"
-
-/*---------------*\
-|*-----MOUSE-----*|
-\*---------------*/
-#ifdef MOUSEKEY_ENABLE
-#include "mousekey.h"
-#endif
-
-/*-------------*\
-|*-----RGB-----*|
-\*-------------*/
-#ifdef RGBLIGHT_ENABLE
-#include "rgblight.h"
-#endif
-
-/*-------------*\
-|*---UNICODE---*|
-\*-------------*/
-#ifdef UNICODE_ENABLE
-#endif
-
-/*-----------------*\
-|*-----SECRETS-----*|
-\*-----------------*/
-// Enabled by adding a non-tracked secrets.h to this dir.
-#if (__has_include("secrets.h"))
-#include "secrets.h"
-#endif
-
-/*---------------*\
-|*-----MUSIC-----*|
-\*---------------*/
-#ifdef AUDIO_ENABLE
-float tone_game[][2] = SONG(ZELDA_PUZZLE);
-float tone_return[][2] = SONG(ZELDA_TREASURE);
-float tone_linux[][2] = SONG(UNICODE_LINUX);
-float tone_windows[][2] = SONG(UNICODE_WINDOWS);
-#endif
-
-/*-------------------*\
-|*-----TAP-DANCE-----*|
-\*-------------------*/
-#ifdef TAP_DANCE_ENABLE
-qk_tap_dance_action_t tap_dance_actions[] = {
- // Shift on double tap of semicolon
- [SCL] = ACTION_TAP_DANCE_DOUBLE( KC_SCLN, KC_COLN )
-};
-#endif
-
-/* In keymaps, instead of writing _user functions, write _keymap functions
- * The __attribute__((weak)) allows for empty definitions here, and during
- * compilation, if these functions are defined elsewhere, they are written
- * over. This allows to include custom code from keymaps in the generic code
- * in this file.
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-__attribute__ ((weak)) void matrix_init_keymap(void) { }
-__attribute__ ((weak)) void matrix_scan_keymap(void) { }
-__attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
- return true;
+
+#include "bbaserdem.h"
+// Language imports
+#include <sendstring_dvorak.h>
+// Need memcpy and memcmp from string.h along with transfer stuff
+#ifdef SPLIT_KEYBOARD
+#include "transactions.h"
+#include <string.h>
+#endif // SPLIT_KEYBOARD
+
+/*-------------------------*\
+|*-----KEYBOARD CONFIG-----*|
+\*-------------------------*/
+userspace_config_t userspace_config;
+userspace_runtime_t userspace_runtime;
+
+/*---------------------------------*\
+|*----SPLIT KEYBOARD TRANSPORT-----*|
+\*---------------------------------*/
+#ifdef SPLIT_KEYBOARD
+userspace_config_t transport_userspace_config;
+userspace_runtime_t transport_userspace_runtime;
+
+// Translate the RPC data to the local variable
+void userspace_config_sync(uint8_t in_buflen, const void* in_data, uint8_t out_buflen, void* out_data) {
+ // Copy incoming data to local variable
+ if (in_buflen == sizeof(transport_userspace_config)) {
+ memcpy(&transport_userspace_config, in_data, in_buflen);
+ }
+ // There is no data to send back; so no output handling
}
-__attribute__ ((weak)) uint32_t layer_state_set_keymap (uint32_t state) {
- return state;
+void userspace_runtime_sync(uint8_t in_buflen, const void* in_data, uint8_t out_buflen, void* out_data) {
+ // Copy incoming data to local variable
+ if (in_buflen == sizeof(transport_userspace_runtime)) {
+ memcpy(&transport_userspace_runtime, in_data, in_buflen);
+ }
+ // There is no data to send back; so no output handling
}
-__attribute__ ((weak)) void led_set_keymap(uint8_t usb_led) { }
-/* ----------------------- *\
- * -----RGB Functions----- *
-\* ----------------------- */
-#ifdef RGBLIGHT_ENABLE
-// Storage variables
-extern rgblight_config_t rgblight_config;
-bool base_sta; // Keeps track if in saveable state
-bool base_tog; // Whether base state is active or not
-int base_hue; // Hue value of base state
-int base_sat; // Saturation value of base state
-int base_val; // Brightness value of base state
-uint8_t base_mod; // Animation mode of the base state
-
-// Save the current state of the rgb mode
-void rgblight_saveBase(void) {
- base_hue = rgblight_config.hue;
- base_sat = rgblight_config.sat;
- base_val = rgblight_config.val;
- base_mod = rgblight_config.mode;
- base_tog = rgblight_config.enable;
- base_sta = false; // If saving, that means base layer is being left
+// Either send or receive the correct data
+void userspace_transport_update(void) {
+ if (is_keyboard_master()) {
+ // If we are the main device; we want to send info.
+ transport_userspace_config.raw = userspace_config.raw;
+ transport_userspace_runtime.raw = userspace_runtime.raw;
+ } else {
+ // If we are the secondary device; we want to receive info, and save to eeprom.
+ userspace_config.raw = transport_userspace_config.raw;
+ userspace_runtime.raw = transport_userspace_runtime.raw;
+ }
}
-// Load the base state back
-void rgblight_loadBase(void) {
- // Don't do anything if not enabled
- if ( !base_sta ) {
- if ( base_tog ) {
- rgblight_enable();
- rgblight_mode( base_mod );
- rgblight_sethsv( base_hue, base_sat, base_val );
- } else {
- rgblight_disable();
+// Initiate the protocol on sync
+void userspace_transport_sync(bool force_sync) {
+ if (is_keyboard_master()) {
+ // Keep track of the last state
+ static userspace_config_t last_userspace_config;
+ static userspace_runtime_t last_userspace_runtime;
+ bool needs_sync = false;
+
+ // Check if the config values are different
+ if (memcmp(&transport_userspace_config, &last_userspace_config, sizeof(transport_userspace_config))) {
+ needs_sync = true;
+ memcpy(&last_userspace_config, &transport_userspace_config, sizeof(transport_userspace_config));
+ }
+ // Perform the sync if requested
+ if (needs_sync || force_sync) {
+ transaction_rpc_send(RPC_ID_CONFIG_SYNC, sizeof(transport_userspace_config), &transport_userspace_config);
+ needs_sync = false;
}
- }
- // Mark that base is loaded, and to be saved before leaving
- base_sta = true;
-}
-// Set to plain HSV color
-void rgblight_colorStatic( int hu, int sa, int va ) {
- // First, it must be enabled or color change is not written
- rgblight_enable();
- rgblight_mode(1);
- rgblight_sethsv(hu,sa,va);
-}
-/* HSV values
- * white ( 0, 0, 255)
- * red ( 0, 255, 255)
- * coral ( 16, 176, 255)
- * orange ( 39, 255, 255)
- * goldenrod ( 43, 218, 218)
- * gold ( 51, 255, 255)
- * yellow ( 60, 255, 255)
- * chartreuse ( 90, 255, 255)
- * green (120, 255, 255)
- * springgreen (150, 255, 255)
- * turquoise (174, 90, 112)
- * teal (180, 255, 128)
- * cyan (180, 255, 255)
- * azure (186, 102, 255)
- * blue (240, 255, 255)
- * purple (270, 255, 255)
- * magenta (300, 255, 255)
- * pink (330, 128, 255)
- */
+ // Check if the runtime values are different
+ if (memcmp(&transport_userspace_runtime, &last_userspace_runtime, sizeof(transport_userspace_runtime))) {
+ needs_sync = true;
+ memcpy(&last_userspace_runtime, &transport_userspace_runtime, sizeof(transport_userspace_runtime));
+ }
-// Set RGBLIGHT state depending on layer
-void rgblight_change( uint8_t this_layer ) {
- // Save state, if saving is requested
- if ( base_sta ) {
- rgblight_saveBase();
- }
- // Change RGB light
- switch ( this_layer ) {
- case _DV:
- // Load base layer
- rgblight_loadBase();
- break;
- case _AL:
- // Do yellow for alternate
- rgblight_colorStatic( 60,255,255);
- break;
- case _GA:
- // Do purple for game
- rgblight_colorStatic(285,255,255);
- break;
- case _NU:
- // Do azure for number
- rgblight_colorStatic(186,200,255);
- break;
- case _SE:
- // Do red for settings
- rgblight_colorStatic( 16,255,255);
- break;
- case _MO:
- // Do green for mouse
- rgblight_colorStatic(120,255,255);
- break;
- case _MU:
- // Do orange for music
- rgblight_colorStatic( 39,255,255);
- break;
- default:
- // Something went wrong
- rgblight_colorStatic( 0,255,255);
- break;
+ // Perform the sync if requested
+ if (needs_sync || force_sync) {
+ transaction_rpc_send(RPC_ID_RUNTIME_SYNC, sizeof(transport_userspace_runtime), &transport_userspace_runtime);
+ needs_sync = false;
+ }
}
}
+#endif // SPLIT_KEYBOARD
-#endif
+/*---------------------------*\
+|*-----KEYBOARD PRE INIT-----*|
+\*---------------------------*/
+/* This code runs before anything is started.
+ * Good for early hardware setup
+ */
+__attribute__ ((weak)) void keyboard_pre_init_keymap(void) {}
+__attribute__ ((weak)) void keyboard_pre_init_user(void) {
+ // Keymap specific stuff
+ keyboard_pre_init_keymap();
+}
/*---------------------*\
|*-----MATRIX INIT-----*|
\*---------------------*/
+/* This code runs once midway thru the firmware process.
+ * So far, sets the base layer and fixes unicode mode
+ */
+__attribute__ ((weak)) void matrix_init_keymap(void) {}
void matrix_init_user (void) {
-
- // Keymap specific things, do it first thing to allow for delays etc
+ // Keymap specific things
matrix_init_keymap();
+}
+
+/*----------------------------*\
+|*-----KEYBOARD POST INIT-----*|
+\*----------------------------*/
+/* This code runs after anything is started.
+ * Good for late hardware setup, like setting up layer specifications
+ */
+__attribute__ ((weak)) void keyboard_post_init_keymap(void) {}
+__attribute__ ((weak)) void keyboard_post_init_user(void) {
+ // Fix beginning base layer, in case some other firmware was flashed
+ // set_single_persistent_default_layer(_BASE);
- // Correct unicode
-#ifdef UNICODE_ENABLE
+ // Unicode mode
+# ifdef UNICODEMAP_ENABLE
set_unicode_input_mode(UC_LNX);
-#endif
+# endif // UNICODEMAP_ENABLE
+
+ // Split keyboard halves communication
+# ifdef SPLIT_KEYBOARD
+ // Register the transactions
+ transaction_register_rpc( RPC_ID_CONFIG_SYNC, userspace_config_sync );
+ transaction_register_rpc(RPC_ID_RUNTIME_SYNC, userspace_runtime_sync);
+ // Load default config values
+ if (is_keyboard_master()) {
+ // If we are main; load from eeconfig
+ userspace_config.raw = eeconfig_read_user();
+ // And update the transport variable
+ userspace_transport_update();
+ // Do one forced transfer to sync halves
+ userspace_transport_sync(true);
+ } else {
+ // Just sync the data received
+ userspace_transport_update();
+ }
+# else // SPLIT_KEYBOARD
+ // If we are not split; just load from eeprom
+ userspace_config.raw = eeconfig_read_user();
+# endif // SPLIT_KEYBOARD
+
+ // Backlight LED
+# ifdef BACKLIGHT_ENABLE
+ keyboard_post_init_backlight();
+# endif // BACKLIGHT_ENABLE
+
+ // RGB underglow
+# ifdef RGBLIGHT_ENABLE
+ keyboard_post_init_underglow();
+# endif // RGBLIGHT_ENABLE
+
+ // Keymap specific stuff
+ keyboard_post_init_keymap();
+}
- // Make beginning layer DVORAK
- set_single_persistent_default_layer(_DV);
+/*---------------------------*\
+|*-----HOUSEKEEPING TASK-----*|
+\*---------------------------*/
+/* I have no idea what this does
+ */
+__attribute__ ((weak)) void housekeeping_task_keymap(void) {}
+void housekeeping_task_user(void) {
+ // Check eeprom every now and then
+ static userspace_config_t prev_userspace_config;
+ static fast_timer_t throttle_timer = 0;
+ static bool init_flag = true;
+
+ // Read this if we never read it before
+ if (init_flag) {
+ init_flag = false;
+ prev_userspace_config.raw = eeconfig_read_user();
+ }
-//--RGB light initialize base layer
-#ifdef RGBLIGHT_ENABLE
- // Base hue is white, and RGB disabled
- base_hue = 100;
- base_sat = 0;
- base_val = 255;
- base_mod = 2;
- base_tog = false;
- rgblight_enable();
- rgblight_mode(base_mod);
- rgblight_sethsv(base_hue,base_sat,base_val);
- rgblight_disable();
- rgblight_loadBase();
-#endif
+ // Throttled tasks here
+ if (timer_elapsed_fast(throttle_timer) >= HOUSEKEEPING_THROTTLE_INTERVAL_MS) {
+ // Refresh timer
+ throttle_timer = timer_read_fast();
+ // Check userspace config for eeprom updates
+ if (memcmp(&prev_userspace_config, &userspace_config, sizeof(userspace_config))) {
+ memcpy(&prev_userspace_config, &userspace_config, sizeof(userspace_config));
+ eeconfig_update_user(userspace_config.raw);
+ }
+ }
+
+ // Do transport stuff
+# ifdef SPLIT_KEYBOARD
+ userspace_transport_update();
+ userspace_transport_sync(false);
+# endif // SPLIT_KEYBOARD
+
+ // Hook to keymap code
+ housekeeping_task_keymap();
+}
+
+/*-----------------------*\
+|*-----EECONFIG INIT-----*|
+\*-----------------------*/
+/* Default values to send to the eeprom
+ */
+void eeconfig_init_user(void) {
+ // Set everything to default
+ userspace_config.raw = 0;
+ // Set encoder states to sane defaults if enabled
+# ifdef ENCODER_ENABLE
+ reset_encoder_state();
+# endif // ENCODER_ENABLE
+}
+/*------------------------*\
+|*-----PROCESS RECORD-----*|
+\*------------------------*/
+/* Process record: custom keycodes to process here
+ * Allow also the following codes to hook here as well;
+ * Macro definitions
+ * Audio hooks
+ */
+__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 after running through all individual hooks
+ return
+ process_record_keymap(keycode, record) &&
+# ifdef AUDIO_ENABLE
+ process_record_audio(keycode, record) &&
+# endif // AUDIO_ENABLE
+# ifdef ENCODER_ENABLE
+ process_record_encoder(keycode, record) &&
+# endif // ENCODER_ENABLE
+ process_record_macro(keycode, record);
}
/*---------------------*\
|*-----MATRIX SCAN-----*|
\*---------------------*/
+/* This code runs every frame
+ * I used to check for layer switching here, but layer state is better used.
+ * Try to not put anything here; as it runs hundreds time per second-ish
+ */
+__attribute__ ((weak)) void matrix_scan_keymap(void) { }
void matrix_scan_user (void) {
- // Keymap specific, do it first
+ // Keymap specific scan function
matrix_scan_keymap();
}
-/*------------------*\
-|*-----KEYCODES-----*|
-\*------------------*/
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-
- // Shift check
- bool is_capital = ( keyboard_report->mods & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)) );
- static bool lock_flag = false;
- uint8_t layer = biton32 (layer_state);
-
- switch (keycode) {
- // Secrets implementation
-#if (__has_include("secrets.h"))
- case SECRET1:
- if( !record->event.pressed ) {
- send_string_P( secret[ keycode - SECRET1 ] );
- }
- return false;
- break;
- case SECRET2:
- if( !record->event.pressed ) {
- send_string_P( secret[ keycode - SECRET2 ] );
- }
- return false;
- break;
- case SECRET3:
- if( !record->event.pressed ) {
- send_string_P( secret[ keycode - SECRET3 ] );
- }
- return false;
- break;
-#endif
-
- // If these keys are pressed, load base layer config, and mark saving
-#ifdef RGBLIGHT_ENABLE
- case RGB_TOG:
- case RGB_MOD:
- case RGB_VAI:
- case RGB_VAD:
- case RGB_SAI:
- case RGB_SAD:
- case RGB_HUI:
- case RGB_HUD:
- if ( !base_sta ) {
- rgblight_loadBase();
- }
- return true;
- break;
-#endif
-
- // Lock functionality: These layers are locked if the LOCKED buttons are
- // pressed. Otherwise, they are momentary toggles
- case K_LOCK:
- if (record->event.pressed) {
- lock_flag = !lock_flag;
- }
- return false;
- break;
- case K_MOUSE:
- if (record->event.pressed) {
- layer_on(_MO);
- lock_flag = false;
- } else {
- if ( lock_flag ) {
- lock_flag = false;
- } else {
- layer_off(_MO);
- }
- }
- return false;
- break;
- case K_NUMBR:
- if (record->event.pressed) {
- layer_on(_NU);
- lock_flag = false;
- } else {
- if ( lock_flag ) {
- lock_flag = false;
- } else {
- layer_off(_NU);
- }
- }
- return false;
- break;
-
- // Layer switches with sound
- case K_GAMES:
- if (record->event.pressed) {
- // On press, turn off layer if active
- if ( layer == _GA ) {
-#ifdef AUDIO_ENABLE
- stop_all_notes();
- PLAY_SONG(tone_return);
-#endif
- layer_off(_GA);
- }
- } else {
- // After click, turn on layer if accessed from setting
- if ( layer == _SE ) {
-#ifdef AUDIO_ENABLE
- stop_all_notes();
- PLAY_SONG(tone_game);
-#endif
- layer_on(_GA);
- layer_off(_SE);
- }
- }
- return false;
- break;
- case MU_TOG:
- if (record->event.pressed) {
- // On press, turn off layer if active
- if ( layer == _SE ) {
- layer_off(_SE);
- layer_on(_MU);
- } else {
- layer_off(_MU);
- }
- }
- return true;
- break;
-
-//------UNICODE
- // Unicode switches with sound
-#ifdef UNICODE_ENABLE
- case UNI_LI:
- if (record->event.pressed) {
-#ifdef AUDIO_ENABLE
- stop_all_notes();
- PLAY_SONG(tone_linux);
-#endif
- set_unicode_input_mode(UC_LNX);
- }
- return false;
- break;
- case UNI_WN:
- if (record->event.pressed) {
-#ifdef AUDIO_ENABLE
- stop_all_notes();
- PLAY_SONG(tone_windows);
-#endif
- set_unicode_input_mode(UC_WIN);
- }
- return false;
- break;
-
- // Turkish letters, with capital functionality
- case TUR_A:
- if (record->event.pressed) {
- if ( is_capital ) {
- unicode_input_start();
- register_hex(0x00c2);
- unicode_input_finish();
- } else {
- unicode_input_start();
- register_hex(0x00e2);
- unicode_input_finish();
- }
- }
- return false;
- break;
- case TUR_O:
- if (record->event.pressed) {
- if ( is_capital ) {
- unicode_input_start();
- register_hex(0x00d6);
- unicode_input_finish();
- } else {
- unicode_input_start();
- register_hex(0x00f6);
- unicode_input_finish();
- }
- }
- return false;
- break;
- case TUR_U:
- if (record->event.pressed) {
- if ( is_capital ) {
- unicode_input_start();
- register_hex(0x00dc);
- unicode_input_finish();
- } else {
- unicode_input_start();
- register_hex(0x00fc);
- unicode_input_finish();
- }
- }
- return false;
- break;
- case TUR_I:
- if (record->event.pressed) {
- if ( is_capital ) {
- unicode_input_start();
- register_hex(0x0130);
- unicode_input_finish();
- } else {
- unicode_input_start();
- register_hex(0x0131);
- unicode_input_finish();
- }
- }
- return false;
- break;
- case TUR_G:
- if (record->event.pressed) {
- if ( is_capital ) {
- unicode_input_start();
- register_hex(0x011e);
- unicode_input_finish();
- } else {
- unicode_input_start();
- register_hex(0x011f);
- unicode_input_finish();
- }
- }
- return false;
- break;
- case TUR_C:
- if (record->event.pressed) {
- if ( is_capital ) {
- unicode_input_start();
- register_hex(0x00c7);
- unicode_input_finish();
- } else {
- unicode_input_start();
- register_hex(0x00e7);
- unicode_input_finish();
- }
- }
- return false;
- break;
- case TUR_S:
- if (record->event.pressed) {
- if ( is_capital ) {
- unicode_input_start();
- register_hex(0x015e);
- unicode_input_finish();
- } else {
- unicode_input_start();
- register_hex(0x015f);
- unicode_input_finish();
- }
- }
- return false;
- break;
-#endif
+/*---------------------*\
+|*-----LAYER STATE-----*|
+\*---------------------*/
+/* This code runs after every layer change
+ * State represents the new layer state.
+ */
+__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) {
+ // Keymap layer state setting
+ state = layer_state_set_keymap(state);
+ // For underglow stuff
+# ifdef RGBLIGHT_ENABLE
+ state = layer_state_set_underglow(state);
+# endif // RGBLIGHT_ENABLE
+ // Audio playback
+# ifdef AUDIO_ENABLE
+ state = layer_state_set_audio(state);
+# endif // AUDIO_ENABLE
-//-------Diagonal mouse movements
-#ifdef MOUSEKEY_ENABLE
- case MO_NE:
- if( record->event.pressed ) {
- mousekey_on(MO_N);
- mousekey_on(MO_E);
- mousekey_send();
- } else {
- mousekey_off(MO_N);
- mousekey_off(MO_E);
- mousekey_send();
- }
- return false;
- break;
- case MO_NW:
- if( record->event.pressed ) {
- mousekey_on(MO_N);
- mousekey_on(MO_W);
- mousekey_send();
- } else {
- mousekey_off(MO_N);
- mousekey_off(MO_W);
- mousekey_send();
- }
- return false;
- break;
- case MO_SE:
- if( record->event.pressed ) {
- mousekey_on(MO_S);
- mousekey_on(MO_E);
- mousekey_send();
- } else {
- mousekey_off(MO_S);
- mousekey_off(MO_E);
- mousekey_send();
- }
- return false;
- break;
- case MO_SW:
- if( record->event.pressed ) {
- mousekey_on(MO_S);
- mousekey_on(MO_W);
- mousekey_send();
- } else {
- mousekey_off(MO_S);
- mousekey_off(MO_W);
- mousekey_send();
- }
- return false;
- break;
- case MO_S_NE:
- if( record->event.pressed ) {
- mousekey_on(MO_S_N);
- mousekey_on(MO_S_E);
- mousekey_send();
- } else {
- mousekey_off(MO_S_N);
- mousekey_off(MO_S_E);
- mousekey_send();
- }
- return false;
- break;
- case MO_S_NW:
- if( record->event.pressed ) {
- mousekey_on(MO_S_N);
- mousekey_on(MO_S_W);
- mousekey_send();
- } else {
- mousekey_off(MO_S_N);
- mousekey_off(MO_S_W);
- mousekey_send();
- }
- return false;
- break;
- case MO_S_SE:
- if( record->event.pressed ) {
- mousekey_on(MO_S_S);
- mousekey_on(MO_S_E);
- mousekey_send();
- } else {
- mousekey_off(MO_S_S);
- mousekey_off(MO_S_E);
- mousekey_send();
- }
- return false;
- break;
- case MO_S_SW:
- if( record->event.pressed ) {
- mousekey_on(MO_S_S);
- mousekey_on(MO_S_W);
- mousekey_send();
- } else {
- mousekey_off(MO_S_S);
- mousekey_off(MO_S_W);
- mousekey_send();
- }
- return false;
- break;
-#endif
+ return state;
+}
-//------DOUBLE PRESS, with added left navigation
- case DBL_SPC:
- if( record->event.pressed ) {
- SEND_STRING(" "SS_TAP(X_LEFT));
- }
- return false;
- break;
- case DBL_ANG:
- if( record->event.pressed ) {
- SEND_STRING("<>"SS_TAP(X_LEFT));
- }
- return false;
- break;
- case DBL_PAR:
- if( record->event.pressed ) {
- SEND_STRING("()"SS_TAP(X_LEFT));
- }
- return false;
- break;
- case DBL_SQR:
- if( record->event.pressed ) {
- SEND_STRING("[]"SS_TAP(X_LEFT));
- }
- return false;
- break;
- case DBL_BRC:
- if( record->event.pressed ) {
- SEND_STRING("{}"SS_TAP(X_LEFT));
- }
- return false;
- break;
- case DBL_QUO:
- if( record->event.pressed ) {
- SEND_STRING("\'\'"SS_TAP(X_LEFT));
- }
- return false;
- break;
- case DBL_DQT:
- if( record->event.pressed ) {
- SEND_STRING("\"\""SS_TAP(X_LEFT));
- }
- return false;
- break;
- case DBL_GRV:
- if( record->event.pressed ) {
- SEND_STRING("``"SS_TAP(X_LEFT));
- }
- return false;
- break;
-// END OF KEYCODES
- }
- return process_record_keymap(keycode, record);
+/*-----------------------------*\
+|*-----DEFAULT LAYER STATE-----*|
+\*-----------------------------*/
+/* This code runs after every time default base layer is changed
+ */
+__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) {
+ // Keymap level code
+ state = default_layer_state_set_keymap(state);
+ return state;
}
-/*----------------------*\
-|*-----LAYER CHANGE-----*|
-\*----------------------*/
+/*------------------------*\
+|*-----LED SET KEYMAP-----*|
+\*------------------------*/
+/* Code for LED indicators
+ * I'm not sure when exactly does this code run
+ */
+__attribute__ ((weak)) void led_set_keymap(uint8_t usb_led) {}
+void led_set_user(uint8_t usb_led) {
+ led_set_keymap(usb_led);
+}
-layer_state_t layer_state_set_user(layer_state_t state) {
+/*-----------------*\
+|*-----SUSPEND-----*|
+\*-----------------*/
+/* Suspend stuff here, mostly for the rgb lighting.
+ */
+__attribute__ ((weak)) void suspend_power_down_keymap (void) { }
+void suspend_power_down_user(void) {
+ suspend_power_down_keymap();
+ // RGB matrix sleep hook
+# ifdef RGB_MATRIX_ENABLE
+ suspend_power_down_rgb();
+# endif // RGB_MATRIX_ENABLE
+}
+__attribute__ ((weak)) void suspend_wakeup_init_keymap (void) { }
+void suspend_wakeup_init_user(void) {
+ suspend_wakeup_init_keymap();
+ // RGB matrix sleep hook
+# ifdef RGB_MATRIX_ENABLE
+ suspend_wakeup_init_rgb();
+# endif // RGB_MATRIX_ENABLE
+}
+<<<<<<< HEAD
+ state = layer_state_set_keymap (state);
+#ifdef RGBLIGHT_ENABLE
+ // Change RGB lighting depending on the last layer activated
+ rgblight_change( get_highest_layer(state) );
+#endif
+ return state;
+||||||| f439fe6055
state = layer_state_set_keymap (state);
#ifdef RGBLIGHT_ENABLE
// Change RGB lighting depending on the last layer activated
rgblight_change( biton32(state) );
#endif
return state;
+=======
+/*------------------*\
+|*-----SHUTDOWN-----*|
+\*------------------*/
+/* Shutdown stuff here; for when entering bootmode.
+ */
+__attribute__ ((weak)) void shutdown_keymap (void) { }
+void shutdown_user(void) {
+ // Underglow LED hook on boot
+# ifdef RGBLIGHT_ENABLE
+ shutdown_underglow();
+# endif // RGBLIGHT_ENABLE
+ // Perkey led hook on boot
+# ifdef RGB_MATRIX_ENABLE
+ shutdown_rgb();
+# endif // RGB_MATRIX_ENABLE
+ // Keymap hooks
+ shutdown_keymap();
+>>>>>>> upstream/master
}
diff --git a/users/bbaserdem/bbaserdem.h b/users/bbaserdem/bbaserdem.h
index 3a405f2a47..4792d5c2d7 100644
--- a/users/bbaserdem/bbaserdem.h
+++ b/users/bbaserdem/bbaserdem.h
@@ -1,268 +1,573 @@
-#ifndef USERSPACE
-#define USERSPACE
-
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+#include QMK_KEYBOARD_H
#include "quantum.h"
+#include "keymap_dvorak.h"
+
+/* Besides loading libraries and definitions, this file has my layout defs
+ * LAYOUTS:
+ * This file has a couple layouts I use; so that the general changes can be
+ * propagated by only editing this file.
+ */
+
+// Macros to use, this has base level code so not affected by enabled features
+#include "bb-macro.h"
+// Audio from onboard speakers
+#ifdef AUDIO_ENABLE
+#include "bb-audio.h"
+#endif // AUDIO_ENABLE
+// Keycap backlight using non-rgb LEDs
+#ifdef BACKLIGHT_ENABLE
+#include "bb-backlight.h"
+#endif // BACKLIGHT_ENABLE
+// Underglow light using rgb LEDs
+#ifdef RGBLIGHT_ENABLE
+#include "bb-underglow.h"
+#endif // RGBLIGHT_ENABLE
+// Keycap backlight using rgb LEDs
+#ifdef RGB_MATRIX_ENABLE
+#include "bb-rgb.h"
+#endif // RGB_MATRIX_ENABLE
+// Rotary encoder
+#ifdef ENCODER_ENABLE
+#include "bb-encoder.h"
+#endif // ENCODER_ENABLE
+// Oled screen
+#ifdef OLED_ENABLE
+#include "bb-oled.h"
+#endif // OLED_ENABLE
+
+// Structure to keep runtime info on encoder state
+typedef union {
+ uint32_t raw;
+ struct {
+ bool rgb_sleep;
+ };
+} userspace_runtime_t;
-#define XXX KC_NO
+typedef union {
+ uint32_t raw;
+ struct {
+ uint8_t e0base :4; // ( 4:0) The encoder state on most layers; regular function
+ uint8_t e1base :4; // ( 8:1) 9 states for this; 4 bits
+ uint8_t e0point :2; // (10:1) The encoder state on mouse layer; moves pointer
+ uint8_t e1point :2; // (12:1) 4 states for this; 2 bits
+ uint8_t e0rgb :4; // (16:2) The encoder state on media layer; controls light
+ uint8_t e1rgb :4; // (20:2) 5 states for this; 3 bits but 4 is better
+ uint8_t layout :2; // (22:2) Stores keymap layout; 3 states is good on 2 bits
+ uint16_t :10; // (32:3) Padding here, free space for 10 more bits
+ };
+} userspace_config_t;
-// Layers
-#define _DV 0 // Base layer
-#define _AL 1 // Alt char overlay
-#define _GA 2 // Game layer
-#define _NU 3 // Numbers layer
-#define _SE 4 // Settings layer
-#define _MO 5 // Mouse emulation
-#define _MU 6 // Music mode
+// Broadcast us to everyone else
+extern userspace_runtime_t userspace_runtime;
+extern userspace_config_t userspace_config;
-// Define short macros
-#define UNDO LCTL(KC_Z)
-#define REDO LCTL(KC_Y)
-#define COPY LCTL(KC_C)
-#define CUT LCTL(KC_X)
-#define PASTE LCTL(KC_V)
+// Function definitions that can be accessed through specific keymaps
+// Runs before all initialization
+void keyboard_pre_init_keymap(void);
+// For code that launches once midway through initialization
+void matrix_init_keymap(void);
+// For code that launches after initialization is finished.
+void keyboard_post_init_keymap(void);
+// These will be delegated to keymap specific stuff (weak definition)
+bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
+// This code runs on every tick
+void matrix_scan_keymap(void);
+// This code runs after every layer change
+layer_state_t layer_state_set_keymap(layer_state_t state);
+// This code runs when the default layer changes
+layer_state_t default_layer_state_set_keymap (layer_state_t state);
+// Some code
+void housekeeping_task_user(void);
+// This code runs to set LED states
+void led_set_keymap(uint8_t usb_led);
+// For code that runs on suspend
+void suspend_power_down_keymap(void);
+void suspend_wakeup_init_keymap(void);
+// For code that runs on powerdown
+void shutdown_keymap(void);
-// Rename mouse keys with 7 letters
-#ifdef MOUSEKEY_ENABLE
-#define MO_S_N KC_MS_WH_UP
-#define MO_S_S KC_MS_WH_DOWN
-#define MO_S_E KC_MS_WH_RIGHT
-#define MO_S_W KC_MS_WH_LEFT
-#define MO_N KC_MS_UP
-#define MO_S KC_MS_DOWN
-#define MO_E KC_MS_RIGHT
-#define MO_W KC_MS_LEFT
-#define MO_CL_L KC_MS_BTN1
-#define MO_CL_R KC_MS_BTN2
-#define MO_CL_M KC_MS_BTN3
-#define MO_CL_4 KC_MS_BTN4
-#define MO_CL_5 KC_MS_BTN5
-#define MO_AC_0 KC_MS_ACCEL0
-#define MO_AC_1 KC_MS_ACCEL1
-#define MO_AC_2 KC_MS_ACCEL2
+// Make it so that keymaps can use KEYMAP_SAFE_RANGE for custom keycodes
+#ifdef KEYMAP_SAFE_RANGE
+#define PLACEHOLDER_SAFE_RANGE KEYMAP_SAFE_RANGE
#else
-#define MO_S_N KC_NO
-#define MO_S_S KC_NO
-#define MO_S_E KC_NO
-#define MO_S_W KC_NO
-#define MO_N KC_NO
-#define MO_S KC_NO
-#define MO_E KC_NO
-#define MO_W KC_NO
-#define MO_CL_L KC_NO
-#define MO_CL_R KC_NO
-#define MO_CL_M KC_NO
-#define MO_CL_1 KC_NO
-#define MO_CL_2 KC_NO
-#define MO_AC_0 KC_NO
-#define MO_AC_1 KC_NO
-#define MO_AC_2 KC_NO
+#define PLACEHOLDER_SAFE_RANGE SAFE_RANGE
#endif
-// Rename music keys with <8 letters
+// Custom macro keycode ranges
+enum userspace_custom_keycodes {
+ // Safe stuff
+ BB_SAFE = PLACEHOLDER_SAFE_RANGE,
+ // Double entry macros
+ DBL_ANG,
+ DBL_PAR,
+ DBL_CBR,
+ DBL_BRC,
+ // Macro key
+ BB_PGPK,
+ // Unicode strings
+# ifdef UNICODEMAP_ENABLE
+ BB_LENY,
+ BB_TABL,
+ TR_FLAG,
+# endif // UNICODEMAP_ENABLE
+ // Encoder buttons
+# ifdef ENCODER_ENABLE
+ BB_ENC0,
+ BB_ENC1,
+# endif // ENCODER_ENABLE
+ // Oled editor
+# ifdef OLED_ENABLE
+ BB_OLED,
+# endif // OLED_ENABLE
+ //use for keymap specific codes
+ KEYMAP_SAFE_RANGE
+};
+// Mask these keycodes if required features are not enabled
+#ifndef UNICODEMAP_ENABLE
+#define BB_LENY KC_NO
+#define BB_TABL KC_NO
+#define TR_FLAG KC_NO
+#endif // UNICODEMAP_ENABLE
+#ifndef ENCODER_ENABLE
+#define BB_ENC0 KC_NO
+#define BB_ENC1 KC_NO
+#endif // ENCODER_ENABLE
+
+/// Enumerate of layers
+enum userspace_layers {
+ _BASE = 0, // Base layer
+ _CHAR, // Characters layer
+ _GAME, // Game layer
+ _MEDI, // R3: Media layer
+ _NAVI, // R3: Navigation layer
+ _SYMB, // R1: Symbols layer
+ _NUMB, // L1: Numbers layer
+ _FUNC, // L2: Function keys layer
+ _MOUS, // L3: Mouse keys layer
+ _MUSI // Music overlay
+};
+
+// Use 7 wide characters for keymaps, to keep things aligned with 4 tabs
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+// These defines allow multiple multi-parameter definitions to expand
+// for these boards
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+#define LAYOUT_ortho_4x12_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
+#define LAYOUT_ortho_5x15_wrapper(...) LAYOUT_ortho_5x15(__VA_ARGS__)
+#define LAYOUT_ortho_3x10_wrapper(...) LAYOUT_ortho_3x10(__VA_ARGS__)
+#define LAYOUT_split_3x6_3_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__)
+#define LAYOUT_split_3x5_3_wrapper(...) LAYOUT_split_3x5_3(__VA_ARGS__)
+
+// Masks
+#define ___1___ _______
+#define ___2___ _______,_______
+#define ___3___ _______,_______,_______
+#define ___4___ _______,_______,_______,_______
+#define ___5___ _______,_______,_______,_______,_______
+#define ___6___ _______,_______,_______,_______,_______,_______
+#define xxx1xxx KC_NO
+#define xxx2xxx KC_NO, KC_NO
+#define xxx3xxx KC_NO, KC_NO, KC_NO
+#define xxx4xxx KC_NO, KC_NO, KC_NO, KC_NO
+#define xxx5xxx KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+#define xxx6xxx KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+#define xxx1xxx KC_NO
+#define xxx3xxx KC_NO, KC_NO, KC_NO
+#define xxx5xxx KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+#define xxx6xxx KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
+
+// Quick macros: in dvorak
+#define BB_UNDO LCTL(KC_SLSH) // Ctrl + Z
+#define BB_REDO LCTL(KC_T) // Ctrl + Y
+#define BB_YANK LCTL(KC_I) // Ctrl + C
+#define BB_CUT LCTL(KC_B) // Ctrl + X
+#define BB_PSTE LCTL(KC_DOT) // Ctrl + V
+
+// Audio keys
#ifdef AUDIO_ENABLE
#define MU_REC KC_LCTL
#define MU_STOP KC_LALT
#define MU_PLAY KC_LGUI
-#define MU_PLAY KC_LGUI
#define MU_FAST KC_UP
#define MU_SLOW KC_DOWN
#define MU_MASK KC_A
-#else
+#define BB_SND MU_ON
+#ifdef TAP_DANCE_ENABLE
+#define MU_TEMP TD(TD_AUDIO_TEMPO)
+#else // TAP_DANCE_ENABLE
+#define MU_TEMP KC_DOWN
+#endif // TAP_DANCE_ENABLE
+#else // AUDIO_ENABLE
#define MU_REC KC_NO
#define MU_STOP KC_NO
#define MU_PLAY KC_NO
-#define MU_PLAY KC_NO
#define MU_FAST KC_NO
+#define MU_TEMP KC_NO
#define MU_SLOW KC_NO
#define MU_MASK KC_NO
-#endif
+#define BB_SND KC_MUTE
+#endif // AUDIO_ENABLE
-// Define non-capitalized UTF shortcuts here
-#ifdef UNICODE_ENABLE
-#define PHY_HBR UC(0x0127)
-#define PHY_DEG UC(0x00b0)
-#define CUR_LIR UC(0x20ba)
-#define CUR_BIT UC(0x20bf)
-#define CUR_EUR UC(0x20ac)
-#define CUR_BPN UC(0x00a3)
-#define CUR_YEN UC(0x00a5)
-#else
-#define PHY_HBR KC_NO
-#define PHY_DEG KC_NO
-#define CUR_LIR KC_NO
-#define CUR_BIT KC_NO
-#define CUR_EUR KC_NO
-#define CUR_BPN KC_NO
-#define CUR_YEN KC_NO
-#endif
+// Unicode keys
+#ifdef UNICODEMAP_ENABLE
+#define TR_ACIR XP(LOW_A_CIRC, UPC_A_CIRC )
+#define TR_CCED XP(LOW_C_CEDI, UPC_C_CEDI )
+#define TR_GBRE XP(LOW_G_BREV, LOW_G_BREV )
+#define TR_ICIR XP(LOW_I_CIRC, LOW_I_CIRC )
+#define TR_I_NO XP(LOW_I_DOTL, LOW_I_DOTL )
+#define TR_IDOT XP(LOW_I_DOTT, LOW_I_DOTT )
+#define TR_ODIA XP(LOW_O_DIAE, LOW_O_DIAE )
+#define TR_SCED XP(LOW_S_CEDI, LOW_S_CEDI )
+#define TR_UCIR XP(LOW_U_CIRC, LOW_U_CIRC )
+#define TR_UDIA XP(LOW_U_DIAE, LOW_U_DIAE )
+#define GR_ALP XP(LOW_ALPHA, UPC_ALPHA )
+#define GR_BET XP(LOW_BETA, UPC_BETA )
+#define GR_GAM XP(LOW_GAMMA, UPC_GAMMA )
+#define GR_DEL XP(LOW_DELTA, UPC_DELTA )
+#define GR_EPS XP(LOW_EPSILON,UPC_EPSILON)
+#define GR_ZET XP(LOW_ZETA, UPC_ZETA )
+#define GR_ETA XP(LOW_ETA, UPC_ETA )
+#define GR_THE XP(LOW_THETA, UPC_THETA )
+#define GR_IOT XP(LOW_IOTA, UPC_IOTA )
+#define GR_KAP XP(LOW_KAPPA, UPC_KAPPA )
+#define GR_LAM XP(LOW_LAMBDA, UPC_LAMBDA )
+#define GR_MU XP(LOW_MU, UPC_MU )
+#define GR_NU XP(LOW_NU, UPC_NU )
+#define GR_XI XP(LOW_XI, UPC_XI )
+#define GR_OMI XP(LOW_OMICRON,UPC_OMICRON)
+#define GR_PI XP(LOW_PI, UPC_PI )
+#define GR_RHO XP(LOW_RHO, UPC_RHO )
+#define GR_SIG XP(LOW_SIGMA, UPC_SIGMA )
+#define GR_TAU XP(LOW_TAU, UPC_TAU )
+#define GR_UPS XP(LOW_UPSILON,UPC_UPSILON)
+#define GR_PHI XP(LOW_PHI, UPC_PHI )
+#define GR_CHI XP(LOW_CHI, UPC_CHI )
+#define GR_PSI XP(LOW_PSI, UPC_PSI )
+#define GR_OME XP(LOW_OMEGA, UPC_OMEGA )
+#define BB_ELLI X(ELLIPSIS)
+#define BB_PLNK X(PLANCK_CON)
+#define BB_ANGS X(ANGSTROM)
+#define BB_BITC X(BITCOIN)
+#else // UNICODEMAP_ENABLE
+#define TR_ACIR KC_A
+#define TR_CCED KC_C
+#define TR_GBRE KC_G
+#define TR_ICIR KC_I
+#define TR_I_NO KC_I
+#define TR_IDOT KC_I
+#define TR_ODIA KC_O
+#define TR_SCED KC_S
+#define TR_UCIR KC_U
+#define TR_UDIA KC_U
+#define GR_ALP KC_NO
+#define GR_BET KC_NO
+#define GR_GAM KC_NO
+#define GR_DEL KC_NO
+#define GR_EPS KC_NO
+#define GR_ZET KC_NO
+#define GR_ETA KC_NO
+#define GR_THE KC_NO
+#define GR_IOT KC_NO
+#define GR_KAP KC_NO
+#define GR_LAM KC_NO
+#define GR_MU KC_NO
+#define GR_NU KC_NO
+#define GR_XI KC_NO
+#define GR_OMI KC_NO
+#define GR_PI KC_NO
+#define GR_RHO KC_NO
+#define GR_SIG KC_NO
+#define GR_TAU KC_NO
+#define GR_UPS KC_NO
+#define GR_PHI KC_NO
+#define GR_CHI KC_NO
+#define GR_PSI KC_NO
+#define GR_OME KC_NO
+#define BB_ELLI KC_NO
+#define BB_PLNK KC_NO
+#define BB_ANGS KC_NO
+#define BB_BITC KC_NO
+#endif // UNICODEMAP_ENABLE
-// Custom keycodes
-enum userspace_custom_keycodes {
- // Turkish letters, with shifting
- TUR_A = SAFE_RANGE,
- TUR_C,
- TUR_G,
- TUR_I,
- TUR_O,
- TUR_S,
- TUR_U,
- // Unicode mode switch
- UNI_LI,
- UNI_WN,
- // Double keys
- DBL_SPC,
- DBL_ANG,
- DBL_PAR,
- DBL_SQR,
- DBL_BRC,
- DBL_QUO,
- DBL_DQT,
- DBL_GRV,
- // Diagonal mouse movements
- MO_NE,
- MO_NW,
- MO_SE,
- MO_SW,
- MO_S_NE,
- MO_S_NW,
- MO_S_SE,
- MO_S_SW,
- // Layer switches and lock functionality
- K_MOUSE,
- K_NUMBR,
- K_LOCK,
- K_GAMES,
- // Secret macros
- SECRET1,
- SECRET2,
- SECRET3
-};
+// MOD-tap definitions
+#define GUI_A MT(MOD_LGUI, DV_A)
+#define ALT_O MT(MOD_LALT, DV_O)
+#define CTRL_E MT(MOD_LCTL, DV_E)
+#define SHIFT_U MT(MOD_LSFT, DV_U)
+#define ALTGR_Q MT(MOD_RALT, DV_Q)
+#define GUI_S MT(MOD_RGUI, DV_S)
+#define ALT_N MT(MOD_LALT, DV_N)
+#define CTRL_T MT(MOD_LCTL, DV_T)
+#define SHIFT_H MT(MOD_LSFT, DV_H)
+#define ALTGR_V MT(MOD_RALT, DV_V)
-// Do tap dancable semicolon key if available
-#ifdef TAP_DANCE_ENABLE
-enum {
- SCL = 0
-};
-#define MY_SCL TD(SCL)
-#else
-#define MY_SCL KC_SCLN
-#endif
+// Layer switches
+#define MED_DEL LT(_MEDI, KC_DEL )
+#define NAV_TAB LT(_NAVI, KC_TAB )
+#define SYM_SPC LT(_SYMB, KC_SPC )
+#define NUM_ENT LT(_NUMB, KC_ENT )
+#define FUN_ESC LT(_FUNC, KC_ESC )
+#define MOU_BSP LT(_MOUS, KC_BSPC)
+
+// Layer switches
+#define BB_CHAR OSL(_CHAR)
+#define BB_GAME TG(_GAME)
-// Shared keymaps
-#define LAYOUT_planck_wrapper(...) LAYOUT_planck_grid(__VA_ARGS__)
-#define LAYOUT_letssplit_wrapper(...) LAYOUT_ortho_4x12(__VA_ARGS__)
+/* Depending on how the layouts change with language; the keys are shown as;
+ * ┌────────────────────────────────────────────────â”
+ * │AltGr -none- Shift Shift+AltGr │
+ * └────────────────────────────────────────────────┘
+ * If there is an exclamation mark; it indicates a dead key on this map.
+ */
-/* Dvorak
- * ,------------------------------------------------------------------------.
- * | Esc | ' " | , | . | P | Y || F | G | C | R | L | Bkp |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | Tab | A | O | E | U | I || D | H | T | N | S | / ? |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | SYM | ; : | Q | J | K | X || B | M | W | V | Z | SET |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | TUR | OS | Ctrl| Alt | Shf | Spc || Ent | Lft | Dwn | Up | Rght| MSE |
- * `------------------------------------------------------------------------' */
-#define DVORAK \
- KC_ESC, KC_QUOT,KC_COMM,KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \
- KC_TAB, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
- K_NUMBR,MY_SCL, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, MO(_SE), \
- MO(_AL),KC_LGUI,KC_LCTL,KC_LALT,KC_LSFT,KC_SPC, KC_ENT, KC_LEFT,KC_DOWN,KC_UP, KC_RGHT,K_MOUSE
+/* Base layout
+ * DVORAK
+ * ┌─────┬─────┬─────┬─────┬─────┠┌─────┬─────┬─────┬─────┬─────â”
+ * ` ~ │ ' " │ , < │ . > │ p P │ y Y │ │ f F │ g G │ c C │ r R │ l L │ < >
+ * ├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┤
+ * \ | │ a A │ o O │ e E │ u U │ i I │ │ d D │ h H │ t T │ n N │ s S │ - _
+ * ├─Gui─┼─Alt─┼─Ctr─┼─Sft─┼─────┤ ├─────┼─Sft─┼─Ctr─┼─Alt─┼─Gui─┤
+ * / ? │ ; : │ q Q │ j J │ k K │ x X │ │ b B │ m M │ w W │ v V │ z Z │ = +
+ * └─────┴AltGr┴─────┼─────┼─────┼─────┠┌─────┼─────┼─────┼─────┴AltGr┴─────┘
+ * │ Del │ Tab │Space│ │Enter│ Esc │BkSpc│
+ * └─Med─┴─Nav─┴─Sym─┘ └─Num─┴─Fun─┴─Mou─┘
+ * TURKISH F
+ * ┌─────┬─────┬─────┬─────┬─────┠┌─────┬─────┬─────┬─────┬─────â”
+ * ¬+ *±│@f F │ g G │ ğ Ğ │¶ı I │ôo OÔ│ │¥d D │®r R │ n N │°h H │£p P │|< >¦
+ * !├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼────!┤ !
+ * `x Xà│ûu UÛ│îi İÎ│€e E │âa AÂ│ûü ÜÛ│ │₺t T │ k K │µm M │ l L │´y Yá│#ş Şǎ
+ * ! !├─Gui─┼─Alt─┼─Ctr─┼─Sft─┼─────┤ ├─────┼─Sft─┼─Ctr─┼─Alt!┼─Gui─┤
+ * äq Qå│«j J<│»ö Ö>│“v V │¢c C©│â€Ã§ Ç │ │ z Z │§s S │×b B │÷. :ȧ│·, ; │~w W
+ * └─────┴AltGr┴─────┼─────┼─────┼─────┠┌─────┼─────┼─────┼─────┴AltGr┴─────┘
+ * │ Del │ Tab │Space│ │Enter│ Esc │BkSpc│
+ * └─Med─┴─Nav─┴─Sym─┘ └─Num─┴─Fun─┴─Mou─┘
+ * The thing about this layout is that these will fit most boards I have.
+ */
+#define _BL1_5_ DV_QUOT,DV_COMM,DV_DOT, DV_P, DV_Y
+#define _BR1_5_ DV_F, DV_G, DV_C, DV_R, DV_L
+#define _BL2_5_ GUI_A, ALT_O, CTRL_E, SHIFT_U,DV_I
+#define _BR2_5_ DV_D, SHIFT_H,CTRL_T, ALT_N, GUI_S
+#define _BL3_5_ DV_SCLN,ALTGR_Q,DV_J, DV_K, DV_X
+#define _BR3_5_ DV_B, DV_M, DV_W, ALTGR_V,DV_Z
+#define _BL4_3_ MED_DEL,NAV_TAB,SYM_SPC
+#define _BR4_3_ NUM_ENT,FUN_ESC,MOU_BSP
+// The extra line for the 6th (or 0th) row
+#define _BL1_1_ DV_GRV
+#define _BR1_1_ KC_NUBS
+#define _BL2_1_ DV_BSLS
+#define _BR2_1_ DV_MINS
+#define _BL3_1_ DV_SLSH
+#define _BR3_1_ DV_EQL
-/* Alternative character overlay
- * ,------------------------------------------------------------------------.
- * | | ' ' | Undo| Redo|Pound| Yen || | G | C | |TLira| Del |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | A | O | Euro| U | I ||Degre|Plank| | | S | Ins |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | " " | Cut | Copy|Paste| || BTC | < > | ( ) | [ ] | { } | PgUp|
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | | | | | || | Home|PgDwn| PgUp| End | |
- * `------------------------------------------------------------------------' */
-#define ALTCHAR \
- _______,DBL_QUO,UNDO, REDO, CUR_BPN,CUR_YEN,_______,TUR_G, TUR_C, _______,CUR_LIR,KC_DEL , \
- _______,TUR_A, TUR_O, CUR_EUR,TUR_U, TUR_I, PHY_DEG,PHY_HBR,_______,_______,TUR_S, KC_INS , \
- _______,DBL_DQT,CUT, COPY, PASTE, DBL_GRV,CUR_BIT,DBL_ANG,DBL_PAR,DBL_SQR,DBL_BRC,_______, \
- _______,_______,_______,_______,_______,DBL_SPC,_______,KC_HOME,KC_PGDN,KC_PGUP,KC_END, _______
+/* Extra characters layer
+ * This is accessed using unicode; so IBus compatible apps only.
+ * ┌─────┬─────┬─────┬─────┬─────┠┌─────┬─────┬─────┬─────┬─────â”
+ * │TrFlg│Lenny│Table│ Ï€ │ Ï… │ │ φ │ γ │ χ │ Ï â”‚ λ │
+ * ├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┤
+ * │ α │ ο │ ε │ ψ │ ι │ │ δ │ η │ τ │ ν │ σ │
+ * ├─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┤
+ * │ ₿ │ θ │ ℠│ κ │ ξ │ │ β │ μ │ ω │ Å │ ζ │
+ * └─────┴─────┴─────┼─────┼─────┼─────┠┌─────┼─────┼─────┼─────┴─────┴─────┘
+ * │ Shf │ ... │ GPG │ │ │ │ Shf │
+ * └─────┴─────┴─────┘ └─────┴─────┴─────┘
+ *
+ */
+#define _CL1_5_ TR_FLAG,BB_LENY,BB_TABL,GR_PI, GR_UPS
+#define _CR1_5_ GR_PHI, GR_GAM, GR_CHI, GR_RHO, GR_LAM
+#define _CL2_5_ GR_ALP, GR_OMI, GR_EPS, GR_PSI, GR_IOT
+#define _CR2_5_ GR_DEL, GR_ETA, GR_TAU, GR_NU, GR_SIG
+#define _CL3_5_ BB_BITC,GR_THE, BB_PLNK,GR_KAP, GR_XI
+#define _CR3_5_ GR_BET, GR_MU, GR_OME, BB_ANGS,GR_ZET
+#define _CL4_3_ KC_RSFT,BB_ELLI,BB_PGPK
+#define _CR4_3_ XXXXXXX,XXXXXXX,KC_LSFT
/* Game layer
- * ,------------------------------------------------------------------------.
- * | OFF | Q | W | E | R | T || Esc | 7 | 8 | 9 |NumLk|Bkspc|
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | Tab | A | S | D | F | G || F1 | 4 | 5 | 6 | \ | Ent |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | Z | X | C | V | B || F2 | 1 | 2 | 3 | ^ | |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | / | ` | | | | Spc || Spc | Ent | 0 | < | v | > |
- * `------------------------------------------------------------------------' */
-#define GAME \
- K_GAMES,KC_Q, KC_W, KC_E, KC_R, KC_T, KC_ESC, KC_P7, KC_P8, KC_P9, KC_NLCK,KC_BSPC, \
- KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_F1, KC_P4, KC_P5, KC_P6, KC_BSLS,KC_ENT , \
- _______,KC_Z, KC_X, KC_C, KC_V, KC_B, KC_F2, KC_P1, KC_P2, KC_P3, KC_UP, _______, \
- KC_SLSH,KC_GRV, _______,_______,_______,KC_SPC, KC_SPC, KC_ENT, KC_P0, KC_LEFT,KC_DOWN,KC_RGHT
+ * This layer turns off the tap-hold keys for the left half.
+ * ┌─────┬─────┬─────┬─────┬─────â”
+ * │ Q │ W │ E │ R │ T │
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * Tab │ A │ S │ D │ F │ G │
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * Shift│ Z │ X │ C │ V │ B │
+ * └─────┴─────┴─────┼─────┼─────┼─────â”
+ * │ Esc │Enter│Space│
+ * └─────┴─────┴─────┘
+ */
+#define _GA1_5_ KC_Q, KC_W, KC_E, KC_R, KC_T
+#define _GA1_1_ _______
+#define _GA2_5_ KC_A, KC_S, KC_D, KC_F, KC_G
+#define _GA2_1_ KC_TAB
+#define _GA3_5_ KC_Z, KC_X, KC_C, KC_V, KC_B
+#define _GA3_1_ KC_LSFT
+#define _GA4_3_ KC_ESC, KC_ENT, KC_SPC
+
+/* Media layer
+ * ┌─────┬─────┬─────┬─────┬─────â”
+ * │Speed│ Mod │ Hue │ Sat │ Bri │ RGB light control
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │Togg.│Prev.│MuTog│MuStp│Next │ Media control
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │Sink │Vol -│ Mut │Eject│Vol +│ Volume control
+ * ┌─────┼─────┼─────┼─────┴─────┴─────┘
+ * │OledL│Veloc│Music│ Feature control on keyboard
+ * └─────┴─────┴─────┘
+ */
+#define _ME1_5_ RGB_SPI,RGB_MOD,RGB_HUI,RGB_SAI,RGB_VAI
+#define _ME2_5_ RGB_TOG,KC_MPRV,KC_MPLY,KC_MSTP,KC_MNXT
+#define _ME3_5_ KC_F13, KC_VOLD,KC_MUTE,KC_EJCT,KC_VOLU
+#define _ME4_3_ BB_OLED,VLK_TOG,MU_TOG
+
+/* Navigation layer
+ * ┌─────┬─────┬─────┬─────┬─────â”
+ * │Redo │Paste│Yank │ Cut │PrScr│
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │Undo │ < │ v │ ^ │ > │
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │ Ins │Home │PgDwn│PgUp │ End │
+ * ┌─────┼─────┼─────┼─────┴─────┴─────┘
+ * │Enter│ Esc │BkSpc│
+ * └─────┴─────┴─────┘
+ */
+#define _NA1_5_ BB_REDO,BB_PSTE,BB_YANK,BB_CUT, KC_PSCR
+#define _NA2_5_ BB_UNDO,KC_LEFT,KC_DOWN,KC_UP, KC_RGHT
+#define _NA3_5_ KC_INS, KC_HOME,KC_PGDN,KC_PGUP,KC_END
+#define _NA4_3_ KC_ENT, KC_ESC, KC_BSPC
/* Symbols layer
- * ,------------------------------------------------------------------------.
- * | OFF | ` | ~ | [ | ] | { || } | - | _ | = | + | |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | 1 | 2 | 3 | 4 | 5 || 6 | 7 | 8 | 9 | 0 | \ |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | ! | @ | # | $ | % || ^ | & | * | ( | ) | LCK |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | | | | | | || | | | | | |
- * `------------------------------------------------------------------------' */
-#define NUMBERS \
- K_NUMBR,KC_GRV, KC_TILD,KC_LBRC,KC_RBRC,KC_LCBR,KC_RCBR,KC_MINS,KC_UNDS,KC_EQL, KC_PLUS,_______, \
- _______,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \
- _______,KC_EXLM,KC_AT, KC_HASH,KC_DLR, KC_PERC,KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN,K_LOCK , \
- KC_PIPE,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______
+ * This layer has the central columns shifted for convenience
+ * DVORAK
+ * ┌─────┬─────┬─────┬─────┬─────â”
+ * │ ` │ { │ } │ / │ = │
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │ ~ │ [ │ ] │ ? │ + │
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │CapsL│ ( │ ) │ \ │ | │
+ * ┌─────┼─────┼─────┼─────┴─────┴─────┘
+ * │Enter│ Esc │BkSpc│
+ * └─────┴─────┴─────┘
+ * Turkish F
+ * (AltGr is right on the central column, red. keys on main layer are omitted)
+ * ┌─────┬─────┬─────┬─────┬─────â”
+ * │ + ¬ │ / \ │ - | │ │ │
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │ * ± │ ? ¿ │ _ │ │ │
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │CapsL│ │ │ │ │
+ * ┌─────┼─────┼─────┼─────┴─────┴─────┘
+ * │Enter│ Esc │BkSpc│
+ * └─────┴─────┴─────┘
+ * QWERTY
+ * ┌─────┬─────┬─────┬─────┬─────â”
+ * │ ` │ - │ = │ { │ } │
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │ ~ │ _ │ + │ [ │ ] │
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │CapsL│ ( │ ) │ \ │ | │
+ * ┌─────┼─────┼─────┼─────┴─────┴─────┘
+ * │Enter│ Esc │BkSpc│
+ * └─────┴─────┴─────┘
+ */
+#define _SY1_5_ DV_GRV, DV_LCBR,DV_RCBR,DV_SLSH,DV_EQL
+#define _SY2_5_ DV_TILD,DV_LBRC,DV_RBRC,DV_QUES,DV_PLUS
+#define _SY3_5_ KC_CAPS,DV_LPRN,DV_RPRN,DV_BSLS,DV_PIPE
+#define _SY4_3_ KC_ENT, KC_ESC, KC_BSPC
-/* Settings layer
- * ,------------------------------------------------------------------------.
- * |BLLed| F1 | F2 | F3 | F4 | Lin || Win | Wake| |Hue -|Hue +|Reset|
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | F5 | F6 | F7 | F8 | || | |RGBto|Sat -|Sat +| |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | Game| F9 | F10 | F11 | F12 |Vol 0||PrtSc| |RGBan|Bri -|Bri +| |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * |Musir| | | | |Vol -||Vol +| Prev| Stop|TogMu| Next| |
- * `------------------------------------------------------------------------' */
-#define SETTINGS \
- BL_STEP,KC_F1, KC_F2, KC_F3, KC_F4, UNI_LI, UNI_WN, KC_WAKE,_______,RGB_HUD,RGB_HUI,RESET , \
- _______,KC_F5, KC_F6, KC_F7, KC_F8, _______,_______,_______,RGB_TOG,RGB_SAD,RGB_SAI,_______, \
- K_GAMES,KC_F9, KC_F10, KC_F11, KC_F12, KC_MUTE,KC_PSCR,_______,RGB_MOD,RGB_VAD,RGB_VAI,_______, \
- MU_TOG, _______,_______,_______,_______,KC_VOLD,KC_VOLU,KC_MPRV,KC_MSTP,KC_MPLY,KC_MNXT,_______
+/* Numbers layer
+ * This layer contains numbers and the associated symbols.
+ * DVORAK
+ * ┌─────┬─────┬─────┬─────┬─────â”
+ * │ < │ 7 & │ 8 * │ 9 ( │ 0 ) │
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │ _ │ 4 $ │ 5 % │ 6 ^ │ - │
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │ > │ 1 ! │ 2 @ │ 3 # │Char.│
+ * └─────┴─────┴─────┼─────┼─────┼─────â”
+ * │ Del │ Tab │Space│
+ * └─────┴─────┴─────┘
+ * Turkish F
+ * ┌─────┬─────┬─────┬─────┬─────â”
+ * │ < | │{7 ' │[8 ( │]9 )±│}0 =°│
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │ │¼4 $ │½5 %⅜│¾6 & │ │
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │ > ¦ │¹1 !¡│²2 " │#3 ^³│Char.│
+ * └─────┴─────┴─────┼─────┼─────┼─────â”
+ * │ Del │ Tab │Space│
+ * └─────┴─────┴─────┘
+ */
+#define _NU1_5_ KC_NUBS,KC_7, KC_8, KC_9, KC_0
+#define _NU2_5_ DV_UNDS,KC_4, KC_5, KC_6, DV_MINS
+#define _NU3_5_ LSFT(KC_NUBS), KC_1, KC_2, KC_3, BB_CHAR
+#define _NU4_3_ KC_DEL, KC_TAB, KC_SPC
+
+/* Function layer
+ * ┌─────┬─────┬─────┬─────┬─────â”
+ * │ F01 │ F02 │ F03 │ F04 │EEPRM│
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │ F05 │ F06 │ F07 │ F08 │EEPRM│
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │ F09 │ F10 │ F11 │ F12 │GameL│
+ * └─────┴─────┴─────┼─────┼─────┼─────â”
+ * │ Del │ Tab │Space│
+ * └─────┴─────┴─────┘
+ */
+#define _FU1_5_ KC_F1, KC_F2, KC_F3, KC_F4, RESET
+#define _FU2_5_ KC_F5, KC_F6, KC_F7, KC_F8, EEP_RST
+#define _FU3_5_ KC_F9, KC_F10, KC_F11, KC_F12, BB_GAME
+#define _FU4_3_ KC_DEL, KC_TAB, KC_SPC
/* Mouse layer
- * ,------------------------------------------------------------------------.
- * |Ulock| \ | ^ | / |.....|.....||.....|.....| |\|.| |^| | |/|.| |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | < | Mid | > |Btn 4|.....||.....|Btn 5| <-- | Mid | --> | |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | / | v | \ |.....|.....||.....|.....| |/| | |v| | |\| | LCK |
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | | | | | | Left||Right| | |Accl0|Accl1|Accl2|
- * `------------------------------------------------------------------------' */
-#define MOUSE \
- K_MOUSE,MO_NW, MO_N, MO_NE, XXX, XXX ,XXX, XXX, MO_S_NW,MO_S_N, MO_S_NE,_______, \
- _______,MO_W, MO_CL_M,MO_E, MO_CL_4,XXX ,XXX, MO_CL_5,MO_S_W, MO_CL_M,MO_S_E, _______, \
- _______,MO_SW, MO_S, MO_SE, XXX, XXX ,XXX, XXX, MO_S_SW,MO_S_S, MO_S_SE,K_LOCK , \
- _______,_______,_______,_______,_______,MO_CL_L,MO_CL_R,_______,MO_AC_0,MO_AC_1,MO_AC_2,_______
+ * ┌─────┬─────┬─────┬─────┬─────â”
+ * │Slow │Right│ Mid │ Lft │Fast │
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │ |<| │ |v| │ |^| │ |>| │ Bt4 │
+ * ├─────┼─────┼─────┼─────┼─────┤
+ * │ <<< │ vvv │ ^^^ │ >>> │ Bt5 │
+ * └─────┴─────┴─────┼─────┼─────┼─────â”
+ * │ Del │ Tab │Space│
+ * └─────┴─────┴─────┘
+ */
+#define _MO1_5_ KC_ACL0,KC_BTN1,KC_BTN2,KC_BTN3,KC_ACL2
+#define _MO2_5_ KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R,KC_BTN4
+#define _MO3_5_ KC_WH_L,KC_WH_D,KC_WH_U,KC_WH_R,KC_BTN5
+#define _MO4_3_ KC_DEL, KC_TAB, KC_SPC
/* Music layer
- * ,------------------------------------------------------------------------.
- * |.....|.....|.....|.....|.....|.....||.....|.....|.....|.....|.....|.....|
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * |.....|.....|.....|.....|.....|.....||.....|.....|.....|.....|.....|.....|
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * |.....|.....|.....|.....|.....|.....||.....|.....|.....|.....|.....|.....|
- * |-----+-----+-----+-----+-----+-----++-----+-----+-----+-----+-----+-----|
- * | togg| rec | stop| play| slow| fast||modes|.....|.....|.....|.....|.....|
- * `------------------------------------------------------------------------'
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+ * │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │
+ * └───┴───┴───┼───┼───┼───┼───┼───┼───┼───┴───┴───┘
+ * │Rec│Stp│Ply│Tmp│Mod│Off│
+ * └───┴───┴───┴───┴───┴───┘
*/
-#define MUSIC \
- MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK, \
- MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK, \
- MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK, \
- MU_TOG, MU_REC, MU_STOP,MU_PLAY,MU_SLOW,MU_FAST,MU_MOD, MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK
-
-#endif
+#define _MUL_3_ MU_REC, MU_STOP,MU_PLAY
+#define _MUR_3_ MU_TEMP,MU_MOD, MU_TOG
+#define _MU_01_ MU_MASK
+#define _MU_02_ MU_MASK,MU_MASK
+#define _MU_03_ MU_MASK,MU_MASK,MU_MASK
+#define _MU_06_ MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK
+#define _MU_08_ MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK
+#define _MU_10_ MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK
+#define _MU_12_ MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK,MU_MASK
diff --git a/users/bbaserdem/config.h b/users/bbaserdem/config.h
index 3dde5772cc..477378102b 100644
--- a/users/bbaserdem/config.h
+++ b/users/bbaserdem/config.h
@@ -1,9 +1,134 @@
-#ifndef USERSPACE_CONFIG_H
-#define USERSPACE_CONFIG_H
+/* Copyright 2021 Batuhan BaÅŸerdem
+ * <baserdem.batuhan@gmail.com> @bbaserdem
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 TAP_DANCE_ENABLE
- #define TAPPING_TERM 300
- #define TAPPING_TOGGLE 1
+/* CONFIG
+ * Common hardware configuration accross my boards
+ */
+// Space saving
+#ifdef LOCKING_SUPPORT_ENABLE
+# undef LOCKING_SUPPORT_ENABLE
#endif
+#ifdef LOCKING_RESYNC_ENABLE
+# undef LOCKING_RESYNC_ENABLE
+#endif
+#ifndef NO_DEBUG
+# define NO_DEBUG
+#endif
+
+#if !defined(NO_PRINT) && !defined(CONSOLE_ENABLE)
+# define NO_PRINT
+#endif
+
+// Some of my own settings
+# define HOUSEKEEPING_THROTTLE_INTERVAL_MS 250
+
+// Split transport settings
+#ifdef SPLIT_KEYBOARD
+# define SPLIT_TRANSPORT_MIRROR
+# define SPLIT_LAYER_STATE_ENABLE
+# define SPLIT_MODS_ENABLE
+# define SPLIT_TRANSACTION_IDS_USER RPC_ID_CONFIG_SYNC, RPC_ID_RUNTIME_SYNC, RPC_ID_KEYMAP_SYNC
+# define SPLIT_LED_STATE_ENABLE
+# ifdef WPM_ENABLE
+# define SPLIT_WPM_ENABLE
+# endif // WPM_ENABLE
+# ifdef OLED_ENABLE
+# define SPLIT_OLED_ENABLE
+# endif // OLED_ENABLE
+#endif // SPLIT_KEYBOARD
+
+// Unicode entry mode
+#ifdef UNICODEMAP_ENABLE
+# define UNICODE_SELECTED_MODES UC_LNX
+ // Adapt the unicode entry mode to dvorak
+# ifdef UNICODE_KEY_LNX
+# undef UNICODE_KEY_LNX
+# endif
+# define UNICODE_KEY_LNX LCTL(LSFT(KC_F))
+#endif // UNICODEMAP_ENABLE
+
+// Mousekey mode
+#ifdef MOUSEKEY_ENABLE
+# define MK_COMBINED
+#endif // MOUSEKEY_ENABLE
+
+// Tap-hold settings
+#define TAPPING_TERM 200
+#define TAP_CODE_DELAY 20
+#define IGNORE_MOD_TAP_INTERRUPT
+#define PERMISSIVE_HOLD
+#define TAPPING_FORCE_HOLD
+
+// Backlight settings
+#ifdef BACKLIGHT_ENABLE
+# define BACKLIGHT_BREATHING
+# define BREATHING_PERIOD 5
+#endif // BACKLIGHT_ENABLE
+
+// Audio definitions
+#ifdef AUDIO_ENABLE
+//# define AUDIO_ENABLE_TONE_MULTIPLEXING
+ // Make findable songs as defaults
+# ifdef HOROLOGY
+# define STARTUP_SONG SONG(HOROLOGY)
+# endif
+# ifdef PEOPLE_VULTURES
+# define GOODBYE_SONG SONG(PEOPLE_VULTURES)
+# endif
+# ifdef NONAGON_INFINITY
+# define MUSIC_ON_SONG SONG(NONAGON_INFINITY)
+# endif
+# ifdef WAH_WAH
+# define MUSIC_OFF_SONG SONG(WAH_WAH)
+# endif
+ // Audio code expects these to be defined
+# ifdef BIG_FIG_WASP
+# define GAME_ON_SONG SONG(BIG_FIG_WASP)
+# else
+# define GAME_ON_SONG SONG(USSR_ANTHEM)
+# endif
+# ifdef POLYGONDWANALAND
+# define GAME_OFF_SONG SONG(POLYGONDWANALAND)
+# else
+# define GAME_OFF_SONG SONG(NOCTURNE_OP_9_NO_1)
+# endif
+#endif // AUDIO_ENABLE
+
+// OLED definitions
+#ifdef OLED_ENABLE
+ // Timeout does not work for split secondary board; i implemented it myself
+# define OLED_TIMEOUT 30000
+ // Fade out the screen when timing out
+# define OLED_FADE_OUT
+# define OLED_FADE_OUT_INTERVAL 15
+#endif // OLED_ENABLE
-#endif // !USERSPACE_CONFIG_H
+// For perkey leds
+#ifdef RGB_MATRIX_ENABLE
+// This is not working
+//# define RGB_DISABLE_TIMEOUT 1800000
+# define RGB_DISABLE_WHEN_USB_SUSPENDED true
+ // Start using this mode
+# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_RAINBOW_BEACON
+# define RGB_MATRIX_STARTUP_HUE 100
+# define RGB_MATRIX_STARTUP_SAT 255
+# define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+ // Some config options
+# define RGB_MATRIX_KEYRELEASES
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Enable framebuffer effects
+#endif // RGB_MATRIX_ENABLE
diff --git a/users/bbaserdem/keymap-bitmaps/.gitignore b/users/bbaserdem/keymap-bitmaps/.gitignore
new file mode 100644
index 0000000000..6448f593d6
--- /dev/null
+++ b/users/bbaserdem/keymap-bitmaps/.gitignore
@@ -0,0 +1,4 @@
+*.bmp
+splitImages
+templates
+!.gitignore
diff --git a/users/bbaserdem/keymap-bitmaps/cropBmp b/users/bbaserdem/keymap-bitmaps/cropBmp
new file mode 100755
index 0000000000..4a322b4175
--- /dev/null
+++ b/users/bbaserdem/keymap-bitmaps/cropBmp
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+# Copyright 2021 Batuhan BaÅŸerdem
+# <baserdem.batuhan@gmail.com> @bbaserdem
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Goes through all the files and turns them into strips in their respective folder
+if [ -z "${1}" ] ; then
+ echo 'No argument; defaulting to script directory.'
+ target_dir="$(dirname "${0}")"
+elif [ -d "${1}" ] ; then
+ echo "Targeting files in '${1}'."
+ target_dir="${1}"
+else
+ echo 'Argument is not directory.'
+ exit 1
+fi
+
+output_dir="${target_dir}/splitImages"
+mkdir -p "${output_dir}"
+
+for this_image in "${target_dir}/"*.bmp ; do
+ echo "Found '${this_image}'."
+ this_name="$(basename "${this_image%%.bmp}")"
+ convert "${this_image}" -crop 'x8' "${output_dir}/${this_name}"_%d.bmp
+done
diff --git a/users/bbaserdem/readme.md b/users/bbaserdem/readme.md
new file mode 100644
index 0000000000..0a1b80cc74
--- /dev/null
+++ b/users/bbaserdem/readme.md
@@ -0,0 +1,131 @@
+# BBASERDEM userspace code for qmk
+
+My userspace code for my various keyboards; available here.
+
+## Builds
+
+These are my keyboard builds and info, it allows me to plan out my builds.
+
+### Planck SERVER
+
+* Board: `kprepublic/jj40`
+* Microcontroller: Embedded
+* Layout: `ortho_4x12`
+* Functionality: Underglow RGB Lighting, LED diode lighting.
+* Case: Clear Acrylic Top and Bottow, with Frosted Acrylic Diffuser (Smashing Acrylics)
+* Switches: BOX Navy
+* Keycaps: Datamancer Tall Deco Typewriter Keycaps
+
+Just a decorative planck replacement (for my rev4 PCB that died.)
+
+### Planck Light
+
+* Board: `planck/light`
+* Microcontroller: Embedded
+* Layout: `ortho_4x12`
+* Functionality: Per-key RGB Lighting, Audio.
+* Case: Clear Acrylic Top and Bottow, with Frosted Acrylic Diffuser (Smashing Acrylics)
+* Switches: BOX Navy
+* Keycaps: Datamancer Tall Deco Typewriter Keycaps
+
+Just a decorative planck replacement (for my rev4 PCB that died.)
+
+### Corne ARM
+
+* Board: `crkbd/rev1`
+* Microcontroller: Proton C (x2)
+* Layout: `split_3x6_3`
+* Functionality: OLED, Audio, Per-key RGB Lighting, Rotary Encoder (x2)
+* Case: IMK Corne Case v2 Polycarbonate
+* Switches: Healios V2
+* Keycaps: POM Jelly
+
+PCB is actually [Proton-C Compatible crkbd PCB](https://github.com/ItsWaffIe/waffle_corne).
+
+### Corne Lite
+
+* Board: `crkbd/rev1`
+* Microcontroller: Pro Micro (x2)
+* Layout: `split_3x5_3`
+* Functionality: Per-key RGB Lighting, OLED (No firmware space)
+* Case: Custom
+* Switches: Choc Low Burnt Orange
+* Keycaps: [Scooped Choc Keycaps](https://mkultra.click/collections/keycaps/products/scooped-choc-keycaps?variant=31223543365730)
+
+Maybe try adding a trackpad for this, as detailed
+[here](https://github.com/manna-harbour/crkbd/blob/master/trackpoint/readme.org).
+
+### Kyria
+
+* Board: `splitkb/kyria/rev1`
+* Microcontroller: Pro Micro (x2)
+* Layout: `split_3x6_6`
+* Functionality: OLED, Underglow RGB Lighting (No firmware space), Rotary Encoder (x2)
+* Case: Matte Black Acrylic High-Profile case
+* Switches: Gateron Ink Silent Black
+* Keycaps: Oblotzky SA Oblivion
+
+Main driver at work currently; love the switches and the board layout.
+
+# Firmware building
+
+## Archlinux
+
+On archlinux, the package *arm-none-eabi-gcc* is too new.
+To fix; add to the environment `CFLAGS="-Wno-error=deprecated"` to compilation commands.
+Also; says to run `avr-gcc` version `8.4.0` for smaller firmware,
+but I find that it only saves a few bytes.
+
+## Bootloader
+
+Needed to type this out from the QMK website.
+If I want to flash a new bootloader for a machine; here are steps;
+
+1. Flash the util/pro_micro_ISP_B6_10.hex to a spare promicro using;
+`avrdude -p atmega32u4 -P "$(ls /dev/ttyACM*)" -c avr109 -D -U flash:w:pro_micro_ISP_B6_10.hex`
+2. Wire the pins; (first is the ISP pro micro; second is the target)
+```
+Pro Micro 10 (B6) <-> Keyboard RESET
+Pro Micro 15 (B1) <-> Keyboard B1 (SCLK)
+Pro Micro 16 (B2) <-> Keyboard B2 (MOSI)
+Pro Micro 14 (B3) <-> Keyboard B3 (MISO)
+Pro Micro VCC <-> Keyboard VCC
+Pro Micro GND <-> Keyboard GND
+```
+I do have this on hand I believe; from massdrop's planck light firmware updater.
+3. Connect the flashed pro micro to my computer and run
+`avrdude -c avrisp -P "$(ls /dev/ttyACM*)" -p atmega32u4 -U flash:w:bootloader_atmega32u4_1.0.0.hex:i -U lfuse:w:0x5E:m -U hfuse:w:0xD9:m -U efuse:w:0xC3:m`
+
+The avrisp here refers to the firmware on the ISP flasher pro micro.
+The `atmega32u4` refers to the CPU used in the respective breakout boards.
+The `avrdude` command interacts with catalina bootloader.
+The shell call after the `-P` flag auto finds the port that the pro micro connects to.
+The last few arguments are some jumpers apparently.
+
+# Features
+
+My userspace has a lot of shared code between different keyboards.
+These files are prefixed with `sbp-` to remove any naming clash.
+
+* [bb-audio](bb-audio.c): Code dealing with audio playback using onboard sound.
+* [bb-encoder](bb-encoder.c): Rotary encoder sutff.
+* [bb-macro](bb-macro.c): My custom keycodes; macros, tap dances, etc.
+* [bb-oled](bb-oled.c): Controls OLED displays. For higher memory; there is also [bb-oled-extra](bb-oled-extra.c).
+* [bb-rgb](bb-rgb.c): Controls per-key RGB LED matrix stuff, and layer indication. Uses `RGB_MATRIX`.
+* [bb-underglaw](bb-underglow.c): Controls RGB LED strip, and layer indication. Uses `RGBLIGHT`.
+
+# Layout
+
+My personal layout is mostly inspired by the
+[Miryoku layout](../manna-harbour_miryoku/miryoku.org).
+There are some changes to make it friendlier to international keyboards.
+My board is compatible with software implementation of Dvorak and Turkish F.
+
+## Base
+
+Base layer uses tap-hold functionality to have access to modifiers.
+The modifiers are mirrored on each half of the layout;
+as to make those modifiers accessible to the keys that overlap them.
+Besides the Alt key; each side has the proper L/R version of the modifier.
+Since Right Alt key functions as AltGr key;
+both the L and R versions are available on each side.
diff --git a/users/bbaserdem/rules.mk b/users/bbaserdem/rules.mk
index 9c7e78e2f8..58f72bb110 100644
--- a/users/bbaserdem/rules.mk
+++ b/users/bbaserdem/rules.mk
@@ -1,21 +1,87 @@
+# Copyright 2021 Batuhan BaÅŸerdem
+# <baserdem.batuhan@gmail.com> @bbaserdem
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# 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 compilation flags
+LTO_ENABLE = yes
+
+# These should be enabled in all boards
+MOUSEKEY_ENABLE = yes # Mouse emulation keys
+EXTRAKEY_ENABLE = yes # OS signals like volume control
+UNICODEMAP_ENABLE = yes # Used for unicode character emulation
+
+# These should be disabled in all boards
+BOOTMAGIC_ENABLE = no # Access to EEPROM settings, not needed
+CONSOLE_ENABLE = no # Allows console output with a command
+COMMAND_ENABLE = no # Some bootmagic thing i dont use
+SLEEP_LED_ENABLE = no # Breathes LED's when computer is asleep. Untested.
+MIDI_ENABLE = no # Midi driver (untested)
+UNICODE_ENABLE = no # We use unicodemap, not unicode
+UCIS_ENABLE = no # We use unicodemap, not ucis
+VARIABLE_TRACE = no # Allows debugging variables
+KEY_LOCK_ENABLE = no # Allows locking any key. Not used in general
+RGBLIGHT_ENABLE = no # LED strip, but there is RGB_MATRIX instead
+TAP_DANCE_ENABLE = no # Tap dance keys; i don't use tap dance
+
+# These features can be disabled at whim
+NKRO_ENABLE ?= yes # Default is 6KRO
+VELOCIKEY_ENABLE ?= yes # Speed effects change with typing speed
+WPM_ENABLE ?= yes # Get WPM reports as you type
+
+# Manually configure these on each keyboard individually
+# AUDIO_ENABLE # Audio stuff
+# BACKLIGHT_ENABLE # Switch LEDs
+# ENCODER_ENABLE # Rotary encoder
+# RGB_MATRIX_ENABLE # RGB LEDs
+# OLED_ENABLE # For OLED
+
+# Userspace code
SRC += bbaserdem.c
-EXTRAFLAGS += -flto # Used to make code smaller
-# ENABLE
-UNICODE_ENABLE = yes # Used for unicode character emulation
-EXTRAKEY_ENABLE = yes # OS signals like volume control
+# Macros
+SRC += bb-macro.c
+
+# Audio code
+ifeq ($(strip $(AUDIO_ENABLE)), yes)
+SRC += bb-audio.c
+endif
+
+# Rotary encoder stuff
+ifeq ($(strip $(ENCODER_ENABLE)), yes)
+SRC += bb-encoder.c
+endif
+
+# RGB LED (Underglow) code
+ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
+SRC += bb-underglow.c
+endif
+
+# RGB LED (Perkey) code
+ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
+SRC += bb-rgb.c
+endif
+
+# Backlight code
+ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
+SRC += bb-backlight.c
+endif
-# DISABLE
-ifndef BLUETOOTH_ENABLE
- BLUETOOTH_ENABLE = no # No bluetooth
+# OLED code
+ifeq ($(strip $(OLED_ENABLE)), yes)
+ SRC += bb-oled.c
+ ifeq ($(strip $(CTPC)), yes)
+ SRC += bb-oled-extra.c
+ endif
endif
-COMMAND_ENABLE = no # Some bootmagic thing i dont use
-BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
-CONSOLE_ENABLE = no # Allows console output with a command
-SLEEP_LED_ENABLE = no # Breathes LED's when computer is asleep. Untested.
-NKRO_ENABLE = no # Default is 6KRO which is plenty
-MIDI_ENABLE = no # Untested feature
-KEY_LOCK_ENABLE = no # Allows locking any key. Not used
-
-# Disabling this makes it compile, i dont know why
-# VARIABLE_TRACE = no # Allows debugging variables
diff --git a/users/bcat/rules.mk b/users/bcat/rules.mk
index 1ad2ee0aa8..090f7474eb 100644
--- a/users/bcat/rules.mk
+++ b/users/bcat/rules.mk
@@ -47,7 +47,6 @@ endif
COMMAND_ENABLE = no
CONSOLE_ENABLE = no
MOUSEKEY_ENABLE = no
-TERMINAL_ENABLE = no
# Disable unwanted hardware options on all keyboards. (Some keyboards turn
# these features on by default even though they aren't actually required.)
diff --git a/users/billypython/billypython.c b/users/billypython/billypython.c
index 180b478d7a..f165d2e260 100644
--- a/users/billypython/billypython.c
+++ b/users/billypython/billypython.c
@@ -23,7 +23,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
__attribute__((weak))
-uint32_t layer_state_set_keymap(uint32_t state) {
+layer_state_t layer_state_set_keymap(layer_state_t state) {
return state;
}
diff --git a/users/billypython/billypython.h b/users/billypython/billypython.h
index 4a444e9787..cdf5121f2f 100644
--- a/users/billypython/billypython.h
+++ b/users/billypython/billypython.h
@@ -31,4 +31,4 @@ enum layers_user {
};
bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
-uint32_t layer_state_set_keymap(uint32_t state);
+layer_state_t layer_state_set_keymap(layer_state_t state);
diff --git a/users/charlesrocket/apl.c b/users/charlesrocket/apl.c
new file mode 100644
index 0000000000..63d835c909
--- /dev/null
+++ b/users/charlesrocket/apl.c
@@ -0,0 +1,183 @@
+/* Copyright 2022 charlesrocket
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 unicode_names {
+ DIAMOND,
+ QUAD_DIAMOND,
+ DIAERESIS,
+ IBEAM,
+ MACRON,
+ DEL_TILDE,
+ LESS,
+ DEL_STILE,
+ LESS_EQUAL,
+ DELTA_STILE,
+ EQUALS,
+ CIRCLE_STILE,
+ GREATER_EQUAL,
+ CIRCLE_BACKSLASH,
+ GREATER,
+ CIRCLED_MINUS,
+ NOT_EQUAL,
+ CIRCLE_STAR,
+ OR,
+ DOWN_CARET_TILDE,
+ AND,
+ UP_CARET_TILDE,
+ MULT,
+ EXCL,
+ DIVISION,
+ QUAD_DIVIDE,
+ QUESTION_MARK,
+ OMEGA,
+ OMEGA_UNDERBAR,
+ EPSILON,
+ SMALL_ELEMENT,
+ EPSILON_UNDERBAR,
+ RHO,
+ TILDE,
+ TILDE_DIAERESIS,
+ UPWARDS_ARROW,
+ DOWNWARDS_ARROW,
+ IOTA,
+ IOTA_UNDERBAR,
+ WHITE_CIRCLE,
+ CIRCLE_DIAERESIS,
+ STAR_OPERATOR,
+ STAR_DIAERESIS,
+ LEFT_ARROW,
+ QUOTE_QUAD,
+ RIGHT_ARROW,
+ ZILDE,
+ ALPHA,
+ ALPHA_UNDERBAR,
+ LEFT_CEILING,
+ LEFT_FLOOR,
+ LOW_LINE,
+ NABLA,
+ INCREMENT,
+ DELTA_UNDERBAR,
+ RING_OPERATOR,
+ JOT_DIAERESIS,
+ APOSTROPHE,
+ QUAD_EQUAL,
+ QUAD,
+ SQUISH_QUAD,
+ DOWN_TACK_JOT,
+ IDENTICAL,
+ UP_TACK_JOT,
+ NOT_IDENTICAL,
+ RIGHT_TACK,
+ LEFT_TACK,
+ SUBSET,
+ SUPERSET,
+ CHI,
+ INTERSECTION,
+ UNION,
+ UP_TACK,
+ DOWN_TACK,
+ VERTICAL_LINE,
+ UP_SHOE_JOT,
+ COMMA_BAR,
+ BACKSLASH_BAR,
+ SLASH_BAR,
+ QUAD_COLON
+};
+
+const uint32_t PROGMEM unicode_map[] = {
+ [DIAMOND] = 0x25CA, // â—Š 0
+ [QUAD_DIAMOND] = 0x233A, // ⌺
+ [DIAERESIS] = 0x00A8, // ¨
+ [IBEAM] = 0x2336, // ⌶
+ [MACRON] = 0x00AF, // ¯
+ [DEL_TILDE] = 0x236B, // â« 5
+ [LESS] = 0x003C, // <
+ [DEL_STILE] = 0x2352, // â’
+ [LESS_EQUAL] = 0x2264, // ≤
+ [DELTA_STILE] = 0x234B, // â‹
+ [EQUALS] = 0x003D, // = 10
+ [CIRCLE_STILE] = 0x233D, // ⌽
+ [GREATER_EQUAL] = 0x2265, // ≥
+ [CIRCLE_BACKSLASH] = 0x2349, // â‰
+ [GREATER] = 0x003E, // >
+ [CIRCLED_MINUS] = 0x2296, // ⊖ 15
+ [NOT_EQUAL] = 0x2260, // ≠
+ [CIRCLE_STAR] = 0x235F, // âŸ
+ [OR] = 0x2228, // ∨
+ [DOWN_CARET_TILDE] = 0x2371, // â±
+ [AND] = 0x2227, // ∧ 20
+ [UP_CARET_TILDE] = 0x2372, // â²
+ [MULT] = 0x00D7, // ×
+ [EXCL] = 0x0021, // !
+ [DIVISION] = 0x00F7, // ÷
+ [QUAD_DIVIDE] = 0x2339, // ⌹ 25
+ [QUESTION_MARK] = 0x003F, // ?
+ [OMEGA] = 0x2375, // âµ
+ [OMEGA_UNDERBAR] = 0x2379, // â¹
+ [EPSILON] = 0x03B5, // ε
+ [SMALL_ELEMENT] = 0x220A, // ∊ 30
+ [EPSILON_UNDERBAR] = 0x2377, // â·
+ [RHO] = 0x2374, // â´
+ [TILDE] = 0x007E, // ~
+ [TILDE_DIAERESIS] = 0x2368, // â¨
+ [UPWARDS_ARROW] = 0x2191, // ↑ 35
+ [DOWNWARDS_ARROW] = 0x2193, // ↓
+ [IOTA] = 0x2373, // â³
+ [IOTA_UNDERBAR] = 0x2378, // â¸
+ [WHITE_CIRCLE] = 0x25CB, // â—‹
+ [CIRCLE_DIAERESIS] = 0x2365, // ⥠40
+ [STAR_OPERATOR] = 0x22C6, // ⋆
+ [STAR_DIAERESIS] = 0x2363, // â£
+ [LEFT_ARROW] = 0x2190, // â†
+ [QUOTE_QUAD] = 0x235E, // âž
+ [RIGHT_ARROW] = 0x2192, // → 45
+ [ZILDE] = 0x236C, // â¬
+ [ALPHA] = 0x237A, // âº
+ [ALPHA_UNDERBAR] = 0x2376, // â¶
+ [LEFT_CEILING] = 0x2308, // ⌈
+ [LEFT_FLOOR] = 0x230A, // ⌊ 50
+ [LOW_LINE] = 0x005F, // _
+ [NABLA] = 0x2207, // ∇
+ [INCREMENT] = 0x2206, // ∆
+ [DELTA_UNDERBAR] = 0x2359, // â™
+ [RING_OPERATOR] = 0x2218, // ∘ 55
+ [JOT_DIAERESIS] = 0x2364, // â¤
+ [APOSTROPHE] = 0x0027, // '
+ [QUAD_EQUAL] = 0x2338, // ⌸
+ [QUAD] = 0x2395, // ⎕
+ [SQUISH_QUAD] = 0x2337, // ⌷ 60
+ [DOWN_TACK_JOT] = 0x234E, // âŽ
+ [IDENTICAL] = 0x2261, // ≡
+ [UP_TACK_JOT] = 0x2355, // â•
+ [NOT_IDENTICAL] = 0x2262, // ≢
+ [RIGHT_TACK] = 0x22A2, // ⊢ 65
+ [LEFT_TACK] = 0x22A3, // ⊣
+ [SUBSET] = 0x2282, // ⊂
+ [SUPERSET] = 0x2283, // ⊃
+ [CHI] = 0x03C7, // χ
+ [INTERSECTION] = 0x2229, // ∩ 70
+ [UNION] = 0x222A, // ∪
+ [UP_TACK] = 0x22A5, // ⊥
+ [DOWN_TACK] = 0x22A4, // ⊤
+ [VERTICAL_LINE] = 0x007C, // |
+ [UP_SHOE_JOT] = 0x235D, // â 75
+ [COMMA_BAR] = 0x236A, // âª
+ [BACKSLASH_BAR] = 0x2340, // â€
+ [SLASH_BAR] = 0x233F, // ⌿
+ [QUAD_COLON] = 0x2360, // â  79
+};
diff --git a/users/charlesrocket/rules.mk b/users/charlesrocket/rules.mk
new file mode 100644
index 0000000000..ec5aa5585d
--- /dev/null
+++ b/users/charlesrocket/rules.mk
@@ -0,0 +1,3 @@
+ifeq ($(strip $(APL_ENABLE)), yes)
+ SRC += apl.c
+endif
diff --git a/users/csc027/custom_rgb.c b/users/csc027/custom_rgb.c
index 1d3232d72c..657d40d7af 100644
--- a/users/csc027/custom_rgb.c
+++ b/users/csc027/custom_rgb.c
@@ -28,15 +28,15 @@ void keyboard_post_init_user(void) {
rgblight_sethsv_noeeprom((i + user_hue) % 256, 255, 255);
wait_ms(5);
}
- rgblight_sethsv_noeeprom(0, 0, 0);
+ rgblight_sethsv_noeeprom(HSV_BLACK);
}
void on_usb_led_off(void) {
- rgblight_sethsv_noeeprom(0, 0, rgblight_get_val() - 85);
+ rgblight_sethsv_noeeprom(HS_GRAY, rgblight_get_val() - 85);
}
void on_usb_led_on(void) {
- rgblight_sethsv_noeeprom(0, 0, rgblight_get_val() + 85);
+ rgblight_sethsv_noeeprom(HS_GRAY, rgblight_get_val() + 85);
}
#endif
diff --git a/users/csc027/defines.h b/users/csc027/defines.h
index 9654cd9f02..85d7d065b7 100644
--- a/users/csc027/defines.h
+++ b/users/csc027/defines.h
@@ -183,7 +183,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
* |-----------------------------------| |-----------------------------------|
* | | | App | LCAD|MRDCC|NmLck| |MVTDL|MVTDC|MVTDN|MVTDR| | |
* |-----------------------------------| |-----------------------------------|
- * | | | | | | | | | | | | | |
+ * | | |MStop|MPrev|MPlay|MNext| |MMute|MVolD|MVolD| | | |
* |-----------------------------------| |-----------------------------------|
* | | | | | | | | | | | | | |
* `-----------------------------------' `-----------------------------------'
@@ -191,12 +191,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define ___________________CONVENIENCE_L1__________________ XXXXXXX, XXXXXXX, KC_INS, KC_SLCK, KC_PSCR, XXXXXXX
#define ___________________CONVENIENCE_L2__________________ _______, XXXXXXX, KC_APP, MC_lcad, MC_rdcc, KC_NLCK
-#define ___________________CONVENIENCE_L3__________________ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+#define ___________________CONVENIENCE_L3__________________ _______, XXXXXXX, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT
#define ___________________CONVENIENCE_L4__________________ _______, _______, _______, _______, _______, _______
#define ___________________CONVENIENCE_R1__________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC
#define ___________________CONVENIENCE_R2__________________ MC_vtdl, MC_vtdc, MC_vtdn, MC_vtdr, XXXXXXX, XXXXXXX
-#define ___________________CONVENIENCE_R3__________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______
+#define ___________________CONVENIENCE_R3__________________ KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, _______
#define ___________________CONVENIENCE_R4__________________ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
/* Windows Terminal Layer
@@ -321,3 +321,25 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
CUSTOM_NAME(vtdc) CUSTOM_STRING(SS_LCTL(SS_LGUI(SS_TAP(X_F4)))) CUSTOM_DELIM() \
CUSTOM_NAME(vtdn) CUSTOM_STRING(SS_LCTL(SS_LGUI("d"))) CUSTOM_DELIM() \
CUSTOM_NAME(vtdr) CUSTOM_STRING(SS_LCTL(SS_LGUI(SS_TAP(X_RIGHT))))
+
+// Additional color definitions for simplicity
+#define HS_AZURE 132, 102
+#define HS_BLACK 0, 0
+#define HS_BLUE 170, 255
+#define HS_CHARTREUSE 64, 255
+#define HS_CORAL 11, 176
+#define HS_CYAN 128, 255
+#define HS_GOLD 36, 255
+#define HS_GOLDENROD 30, 218
+#define HS_GRAY 0, 0
+#define HS_GREEN 85, 255
+#define HS_MAGENTA 213, 255
+#define HS_ORANGE 28, 255
+#define HS_PINK 234, 128
+#define HS_PURPLE 191, 255
+#define HS_RED 0, 255
+#define HS_SPRINGGREEN 106, 255
+#define HS_TEAL 128, 255
+#define HS_TURQUOISE 123, 90
+#define HS_WHITE 0, 0
+#define HS_YELLOW 43, 255
diff --git a/users/curry/config.h b/users/curry/config.h
index 3301ebe533..0c96293bd5 100644
--- a/users/curry/config.h
+++ b/users/curry/config.h
@@ -65,10 +65,6 @@
# define ONESHOT_TIMEOUT 3000
#endif // !ONESHOT_TIMEOUT
-#if !defined(QMK_KEYS_PER_SCAN)
-# define QMK_KEYS_PER_SCAN 4
-#endif // !QMK_KEYS_PER_SCAN
-
#define IGNORE_MOD_TAP_INTERRUPT
#undef PERMISSIVE_HOLD
diff --git a/users/davidkristoffersen/davidkristoffersen.h b/users/davidkristoffersen/davidkristoffersen.h
new file mode 100644
index 0000000000..0485e00013
--- /dev/null
+++ b/users/davidkristoffersen/davidkristoffersen.h
@@ -0,0 +1,18 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include QMK_KEYBOARD_H
+
+#include "src/enums.h"
+
+#ifdef LAYER_NO
+# include "macros/norwegian.h"
+#endif
+
+#include "util/functions.h"
+
+#include "hardware/split_space.h"
+
+#include "macros/macros.h"
diff --git a/users/davidkristoffersen/hardware/readme.md b/users/davidkristoffersen/hardware/readme.md
new file mode 100644
index 0000000000..f31601812b
--- /dev/null
+++ b/users/davidkristoffersen/hardware/readme.md
@@ -0,0 +1,3 @@
+# Hardware
+
+This directory contains hardware related macros.
diff --git a/users/davidkristoffersen/hardware/split_space.c b/users/davidkristoffersen/hardware/split_space.c
new file mode 100644
index 0000000000..da25343f3d
--- /dev/null
+++ b/users/davidkristoffersen/hardware/split_space.c
@@ -0,0 +1,23 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "split_space.h"
+
+#ifdef SPLIT_SPACE
+void handle_split_space(uint16_t keycode) {
+ // Disable modifiers when numpad is active
+ if (IS_LAYER_ON(NUMPAD)) clear_oneshot_mods();
+
+ if (keycode == KC_LSPC) {
+ // 2ng tap: Activate ctrl if shift is active
+ if (get_oneshot_mods() & MOD_MASK_SHIFT) {
+ clear_oneshot_mods();
+ set_oneshot_mods(MOD_LCTL);
+ }
+ // 1st. tap: Activate shift if no modifier is active
+ else {
+ set_oneshot_mods(MOD_LSFT);
+ }
+ }
+}
+#endif
diff --git a/users/davidkristoffersen/hardware/split_space.h b/users/davidkristoffersen/hardware/split_space.h
new file mode 100644
index 0000000000..a9736b5ca1
--- /dev/null
+++ b/users/davidkristoffersen/hardware/split_space.h
@@ -0,0 +1,16 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include "davidkristoffersen.h"
+
+#define KC_RSPC KC_SPACE
+
+#ifdef SPLIT_SPACE
+# define KC_LSPC LT(NUMPAD, KC_NO)
+#else
+# define KC_LSPC KC_SPACE
+#endif
+
+void handle_split_space(uint16_t keycode);
diff --git a/users/davidkristoffersen/macros/debug.c b/users/davidkristoffersen/macros/debug.c
new file mode 100644
index 0000000000..64fdc4a702
--- /dev/null
+++ b/users/davidkristoffersen/macros/debug.c
@@ -0,0 +1,36 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "macros.h"
+
+// Replace key records with macros
+bool handle_test(uint16_t keycode) {
+ switch (keycode) {
+ case KC_T0: {
+ // Test QK_MAKE command
+ SEND_STRING("qmk compile -kb " QMK_KEYBOARD " -km " QMK_KEYMAP);
+ break;
+ }
+ case KC_T1:
+ // Test ascii characters
+ SEND_STRING(" !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~");
+ break;
+ case KC_T2:
+#ifdef LAYER_NO
+ // Test other characters
+ tap_code16(NO_AE);
+ tap_code16(NO_OE);
+ tap_code16(NO_AA);
+ tap_code16(S(NO_AE));
+ tap_code16(S(NO_OE));
+ tap_code16(S(NO_AA));
+#endif
+ return false;
+ }
+ return true;
+};
+
+bool process_debug(uint16_t keycode, keyrecord_t* record) {
+ HANDLE_FALSE(handle_test(keycode));
+ return true;
+}
diff --git a/users/davidkristoffersen/macros/language.c b/users/davidkristoffersen/macros/language.c
new file mode 100644
index 0000000000..9b6dca79ca
--- /dev/null
+++ b/users/davidkristoffersen/macros/language.c
@@ -0,0 +1,40 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "macros.h"
+
+bool handle_language(uint16_t keycode) {
+#ifdef LAYER_NO
+ // Handle conversion of English to Norwegian codes
+ uint16_t org_keycode = keycode;
+ keycode = get_norwegian_code(keycode);
+#endif
+
+#ifndef NO_SPECIAL_SHIFT
+ // Handle conversion of special shift codes
+ if (get_mods() & MOD_MASK_SHIFT) {
+ uint16_t shifted_key = get_special_shifted_code(keycode);
+ if (shifted_key != keycode) {
+ // Tap shifted key while shift is disabled
+ unregister_code(KC_LSFT);
+ tap_code16(shifted_key);
+ register_code(KC_LSFT);
+ return false;
+ }
+ }
+#endif
+
+#ifdef LAYER_NO
+ // Tap new language key
+ if (keycode != org_keycode) {
+ tap_code16(keycode);
+ return false;
+ }
+#endif
+ return true;
+}
+
+bool process_language(uint16_t keycode, keyrecord_t* record) {
+ HANDLE_FALSE(handle_language(keycode));
+ return true;
+}
diff --git a/users/davidkristoffersen/macros/macros.c b/users/davidkristoffersen/macros/macros.c
new file mode 100644
index 0000000000..6d8c0b6f57
--- /dev/null
+++ b/users/davidkristoffersen/macros/macros.c
@@ -0,0 +1,16 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "macros.h"
+
+// Prepend key records with macros
+bool process_record_user(uint16_t keycode, keyrecord_t* record) {
+ if (record->event.pressed) {
+#ifdef SPLIT_SPACE
+ handle_split_space(keycode, record);
+#endif
+ HANDLE_FALSE(process_debug(keycode, record));
+ HANDLE_FALSE(process_language(keycode, record));
+ }
+ return true;
+}
diff --git a/users/davidkristoffersen/macros/macros.h b/users/davidkristoffersen/macros/macros.h
new file mode 100644
index 0000000000..fb1e5c862c
--- /dev/null
+++ b/users/davidkristoffersen/macros/macros.h
@@ -0,0 +1,23 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include "davidkristoffersen.h"
+
+enum keycodes {
+ // Test keys
+ KC_T0 = SAFE_RANGE,
+ KC_T1,
+ KC_T2,
+ // Norwegian Æ, Ø, Å
+ KC_AE,
+ KC_OE,
+ KC_AA
+};
+
+bool process_debug(uint16_t keycode, keyrecord_t* record);
+bool process_language(uint16_t keycode, keyrecord_t* record);
+
+// Prepend key records with macros
+bool process_record_user(uint16_t keycode, keyrecord_t* record);
diff --git a/users/davidkristoffersen/macros/norwegian.h b/users/davidkristoffersen/macros/norwegian.h
new file mode 100644
index 0000000000..575d1e9f2f
--- /dev/null
+++ b/users/davidkristoffersen/macros/norwegian.h
@@ -0,0 +1,19 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include "keymap_extras/keymap_norwegian.h"
+#include "davidkristoffersen.h"
+
+// Better norwegian defines
+#undef NO_LESS
+#define NO_LESS KC_NUBS // <
+#undef NO_GRTR
+#define NO_GRTR S(NO_LESS) // >
+#undef NO_AE
+#define NO_AE KC_QUOT // Æ
+#undef NO_OE
+#define NO_OE KC_SCLN // Ø
+#undef NO_AA
+#define NO_AA KC_LBRC // Ã…
diff --git a/users/davidkristoffersen/macros/readme.md b/users/davidkristoffersen/macros/readme.md
new file mode 100644
index 0000000000..7c074b2bb5
--- /dev/null
+++ b/users/davidkristoffersen/macros/readme.md
@@ -0,0 +1,3 @@
+# Macros
+
+This directory contains any type of dynamic and static macros.
diff --git a/users/davidkristoffersen/post_config.h b/users/davidkristoffersen/post_config.h
new file mode 100644
index 0000000000..3d1f5a93f4
--- /dev/null
+++ b/users/davidkristoffersen/post_config.h
@@ -0,0 +1,8 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#ifndef LAYER_EN
+# define LAYER_EN LAYER_DEFAULT
+#endif
diff --git a/users/davidkristoffersen/readme.md b/users/davidkristoffersen/readme.md
new file mode 100644
index 0000000000..20ff58003e
--- /dev/null
+++ b/users/davidkristoffersen/readme.md
@@ -0,0 +1,3 @@
+# Overview
+
+This userspace contains all the utility functions and macros related to my keymaps.
diff --git a/users/davidkristoffersen/rules.mk b/users/davidkristoffersen/rules.mk
new file mode 100644
index 0000000000..5901b68540
--- /dev/null
+++ b/users/davidkristoffersen/rules.mk
@@ -0,0 +1,12 @@
+SRC += $(USER_PATH)/util/functions.c \
+ $(USER_PATH)/hardware/split_space.c \
+ $(USER_PATH)/macros/macros.c \
+ $(USER_PATH)/macros/debug.c \
+ $(USER_PATH)/macros/language.c
+
+# Firmware size optimizations
+ifeq ($(strip $(SIZE_OPTIMIZE)), yes)
+ CONSOLE_ENABLE := no # 1646: Console for debug
+ AUDIO_ENABLE := no # 8682: Audio output on port C6
+ LTO_ENABLE := yes # 2772: Link time optimization
+endif
diff --git a/users/davidkristoffersen/util/functions.c b/users/davidkristoffersen/util/functions.c
new file mode 100644
index 0000000000..781d8f214d
--- /dev/null
+++ b/users/davidkristoffersen/util/functions.c
@@ -0,0 +1,111 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "functions.h"
+
+#ifndef NO_SPECIAL_SHIFT
+// Code set to swap struct
+typedef struct code_set {
+ uint16_t pre;
+ uint16_t post;
+} code_set_t;
+
+// Shift codes conversion struct
+typedef struct shift_code {
+ int lang;
+ int size;
+ code_set_t* codes;
+} shift_code_t;
+
+#ifdef LAYER_NO
+code_set_t NO_SHIFT_CODES [] = {
+ {NO_QUOT, NO_DQUO},
+ {NO_BSLS, NO_PIPE},
+};
+#endif
+
+code_set_t EN_SHIFT_CODES [] = {
+ {KC_COMM, KC_SCLN},
+ {KC_DOT, KC_COLN},
+};
+
+// Array of shift code conversions
+const shift_code_t SHIFT_CODES [] = {
+#ifdef LAYER_NO
+ {.lang = LAYER_NO,
+ .size = ARR_LEN(NO_SHIFT_CODES),
+ .codes = NO_SHIFT_CODES},
+#endif
+ {.lang = LAYER_EN,
+ .size = ARR_LEN(EN_SHIFT_CODES),
+ .codes = EN_SHIFT_CODES},
+};
+const int SHIFT_CODES_SIZE = ARR_LEN(SHIFT_CODES);
+#endif
+
+#ifdef LAYER_NO
+// Array of English to Norwegian code translations
+const code_set_t EN2NO_CODES [] = {
+ {KC_QUOT, NO_QUOT},
+ {KC_MINS, NO_MINS},
+ {KC_BSLS, NO_BSLS},
+ {KC_LBRC, NO_LBRC},
+ {KC_LCBR, NO_LCBR},
+ {KC_LPRN, NO_LPRN},
+ {KC_LT, NO_LESS},
+ {KC_GT, NO_GRTR},
+ {KC_RPRN, NO_RPRN},
+ {KC_RCBR, NO_RCBR},
+ {KC_RBRC, NO_RBRC},
+ {KC_AMPR, NO_AMPR},
+ {KC_EQL, NO_EQL},
+ {KC_PLUS, NO_PLUS},
+ {KC_ASTR, NO_ASTR},
+ {KC_SLSH, NO_SLSH},
+ {KC_TILD, NO_TILD},
+ {KC_AE, NO_AE},
+ {KC_OE, NO_OE},
+ {KC_AA, NO_AA},
+ {KC_QUES, NO_QUES},
+ {KC_AT, NO_AT},
+ {KC_CIRC, NO_CIRC},
+ {KC_DLR, NO_DLR},
+ {KC_GRV, NO_GRV}
+};
+const int EN2NO_CODES_SIZE = ARR_LEN(EN2NO_CODES);
+#endif
+
+// Check if layer is an active default layer
+bool is_default_on(int layer) {
+ return layer == LAYER_DEFAULT
+ ? true
+ : layer_state_cmp(default_layer_state, layer);
+}
+
+#ifndef NO_SPECIAL_SHIFT
+// Get special shifted code
+uint16_t get_special_shifted_code(uint16_t keycode) {
+ for (int i = 0; i < SHIFT_CODES_SIZE; i++) {
+ if (IS_DEFAULT_OFF(SHIFT_CODES[i].lang)) continue;
+ for (int j = 0; j < SHIFT_CODES[i].size; j++) {
+ if (keycode == SHIFT_CODES[i].codes[j].pre)
+ return SHIFT_CODES[i].codes[j].post;
+ }
+ }
+ return keycode;
+}
+#endif
+
+#ifdef LAYER_NO
+// Get language specific code
+uint16_t get_norwegian_code(uint16_t keycode) {
+ if (IS_DEFAULT_ON(LAYER_NO)) {
+ for (int i = 0; i < EN2NO_CODES_SIZE; i++) {
+ if (keycode == EN2NO_CODES[i].pre) {
+ return EN2NO_CODES[i].post;
+ }
+ }
+ }
+ return keycode;
+}
+#endif
diff --git a/users/davidkristoffersen/util/functions.h b/users/davidkristoffersen/util/functions.h
new file mode 100644
index 0000000000..eee1dadc57
--- /dev/null
+++ b/users/davidkristoffersen/util/functions.h
@@ -0,0 +1,32 @@
+// Copyright 2022 David Kristoffersen (@davidkristoffersen)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#pragma once
+
+#include "davidkristoffersen.h"
+
+// Default layer if none is specified
+#define LAYER_DEFAULT -1
+
+// Check if layer is an active default layer
+#define IS_DEFAULT_ON(layer) is_default_on(layer)
+// Check if layer is an inactive default layer
+#define IS_DEFAULT_OFF(layer) !is_default_on(layer)
+
+// Return false if test equal false
+#define HANDLE_FALSE(bool) if (!bool) return false;
+// Generic array lenght define
+#define ARR_LEN(arr) (sizeof(arr) / sizeof(arr)[0])
+// Printf-like functionality for send_string
+#define SEND_VAR(str, ...) \
+ do { \
+ char var[128]; \
+ sprintf(var, str, __VA_ARGS__); \
+ send_string(var); \
+ } while(0)
+
+// Get special shifted code
+uint16_t get_special_shifted_code(uint16_t keycode);
+
+// Get language specific code
+uint16_t get_norwegian_code(uint16_t keycode);
diff --git a/users/davidkristoffersen/util/readme.md b/users/davidkristoffersen/util/readme.md
new file mode 100644
index 0000000000..90635f30e5
--- /dev/null
+++ b/users/davidkristoffersen/util/readme.md
@@ -0,0 +1,3 @@
+# Utility
+
+This directory contains utility functions meant to assist the other files of the userspace.
diff --git a/users/dhertz/dhertz.c b/users/dhertz/dhertz.c
index 163b1cb644..1a2b6e38f1 100644
--- a/users/dhertz/dhertz.c
+++ b/users/dhertz/dhertz.c
@@ -18,7 +18,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
return true;
}
__attribute__ ((weak))
-uint32_t layer_state_set_keymap (uint32_t state) {
+layer_state_t layer_state_set_keymap (layer_state_t state) {
return state;
}
__attribute__ ((weak))
@@ -107,4 +107,3 @@ layer_state_t layer_state_set_user (layer_state_t state) {
void led_set_user(uint8_t usb_led) {
led_set_keymap(usb_led);
}
-
diff --git a/users/doogle999/doogle999.c b/users/doogle999/doogle999.c
index 320de7cff8..c9ee125741 100644
--- a/users/doogle999/doogle999.c
+++ b/users/doogle999/doogle999.c
@@ -382,7 +382,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record)
static char text[CALC_BUFFER_SIZE + 1]; // Used to store input and then output when ready to print
static char backspaceText[CALC_BUFFER_SIZE + 1]; // Pretty dumb waste of memory because only backspace characters, used with send_string to backspace and remove input
- if((biton32(layer_state) == CALC_LAYER && CALC_FORCE_NUM_LOCK_INSIDE_CALC) || (biton32(layer_state) != CALC_LAYER && CALC_FORCE_NUM_LOCK_OUTSIDE_CALC))
+ if((get_highest_layer(layer_state) == CALC_LAYER && CALC_FORCE_NUM_LOCK_INSIDE_CALC) || (get_highest_layer(layer_state) != CALC_LAYER && CALC_FORCE_NUM_LOCK_OUTSIDE_CALC))
{
bool numpadKeyPressed = record->event.pressed &&
!(get_mods() & MODS_SHIFT_MASK) &&
@@ -397,7 +397,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record)
}
}
- if(biton32(layer_state) != CALC_LAYER) { return true; }
+ if(get_highest_layer(layer_state) != CALC_LAYER) { return true; }
int action = process_input(keycode, get_mods(), record->event);
switch(action)
@@ -457,4 +457,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t* record)
send_string(characterToSend);
}
return false;
-} \ No newline at end of file
+}
diff --git a/users/drashna/autocorrect_data.h b/users/drashna/autocorrect_data.h
index bcb5858aa8..52ed7fa9a7 100644
--- a/users/drashna/autocorrect_data.h
+++ b/users/drashna/autocorrect_data.h
@@ -1,5 +1,93 @@
#if __has_include("../qmk_secrets/autocorrection_data.h")
+# pragma message "Loading custom library"
# include "../qmk_secrets/autocorrection_data.h"
+# define AUTOCORRECTION_MIN_LENGTH AUTOCORRECT_MIN_LENGTH
+# define AUTOCORRECTION_MAX_LENGTH AUTOCORRECT_MAX_LENGTH
+
#else
-# include "autocorrect_data_default.h"
+// Generated code.
+
+// Autocorrection dictionary (70 entries):
+// :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
+// retrun -> return
+// retun -> return
+// reuslt -> result
+// reutrn -> return
+// saftey -> safety
+// seperate -> separate
+// singed -> signed
+// stirng -> string
+// strign -> string
+// swithc -> switch
+// swtich -> switch
+// thresold -> threshold
+// udpate -> update
+// widht -> width
+
+#define AUTOCORRECT_MIN_LENGTH 5 // ":ture"
+#define AUTOCORRECT_MAX_LENGTH 10 // "accomodate"
+
+#define DICTIONARY_SIZE 1104
+
+static const uint8_t autocorrect_data[DICTIONARY_SIZE] 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};
#endif
diff --git a/users/drashna/bootmagic_better.c b/users/drashna/bootmagic_better.c
new file mode 100644
index 0000000000..4932e25f1d
--- /dev/null
+++ b/users/drashna/bootmagic_better.c
@@ -0,0 +1,56 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "drashna.h"
+#include "bootmagic_lite.h"
+
+void bootmagic_lite(void) {
+ bool perform_reset = false;
+ // 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();
+
+ // If the configured key (commonly Esc) is held down on power up,
+ // reset the EEPROM valid state and jump to bootloader.
+ // This isn't very generalized, but we need something that doesn't
+ // rely on user's keymaps in firmware or EEPROM.
+ uint8_t row = BOOTMAGIC_LITE_ROW, col = BOOTMAGIC_LITE_COLUMN;
+#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN)
+ uint8_t row_e = BOOTMAGIC_LITE_EEPROM_ROW, col_e = BOOTMAGIC_LITE_EEPROM_COLUMN;
+#endif
+
+#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;
+#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN) && defined(BOOTMAGIC_LITE_EEPROM_ROW_RIGHT) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT)
+ row_e = BOOTMAGIC_LITE_EEPROM_ROW_RIGHT;
+ col_e = BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT;
+# endif
+ }
+#endif
+
+#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN)
+ if (matrix_get_row(row_e) & (1 << col_e)) {
+ eeconfig_disable();
+ perform_reset = true;
+ }
+#endif
+ if (matrix_get_row(row) & (1 << col)) {
+ perform_reset = true;
+ }
+#ifdef STM32F411xE
+ if (!readPin(A0)) {
+ perform_reset = true;
+ }
+#endif
+
+ if (perform_reset) {
+ bootloader_jump();
+ }
+}
diff --git a/users/drashna/callbacks.c b/users/drashna/callbacks.c
index 0ceb1aebe5..111b5f79d7 100644
--- a/users/drashna/callbacks.c
+++ b/users/drashna/callbacks.c
@@ -3,6 +3,12 @@
#include "drashna.h"
+
+#ifdef I2C_SCANNER_ENABLE
+void matrix_scan_i2c(void);
+void keyboard_post_init_i2c(void);
+#endif
+
__attribute__((weak)) void keyboard_pre_init_keymap(void) {}
void keyboard_pre_init_user(void) {
userspace_config.raw = eeconfig_read_user();
@@ -42,6 +48,10 @@ void keyboard_post_init_user(void) {
#if defined(SPLIT_KEYBOARD) && defined(SPLIT_TRANSACTION_IDS_USER)
keyboard_post_init_transport_sync();
#endif
+#ifdef I2C_SCANNER_ENABLE
+ matrix_scan_i2c();
+#endif
+
keyboard_post_init_keymap();
}
@@ -54,12 +64,12 @@ void shutdown_user(void) {
#ifdef RGBLIGHT_ENABLE
rgblight_enable_noeeprom();
rgblight_mode_noeeprom(1);
- rgblight_setrgb_red();
-#endif // RGBLIGHT_ENABLE
+ rgblight_setrgb(rgblight_get_val(), 0x00, 0x00);
+#endif // RGBLIGHT_ENABLE
#ifdef RGB_MATRIX_ENABLE
- rgb_matrix_set_color_all(0xFF, 0x00, 0x00);
+ rgb_matrix_set_color_all(rgb_matrix_get_val(), 0x00, 0x00);
rgb_matrix_update_pwm_buffers();
-#endif // RGB_MATRIX_ENABLE
+#endif // RGB_MATRIX_ENABLE
#ifdef OLED_ENABLE
oled_off();
#endif
@@ -88,7 +98,7 @@ void suspend_power_down_user(void) {
__attribute__((weak)) void suspend_wakeup_init_keymap(void) {}
void suspend_wakeup_init_user(void) {
#ifdef OLED_ENABLE
- oled_timer_reset();
+ oled_timer_reset();
#endif
suspend_wakeup_init_keymap();
}
@@ -104,15 +114,21 @@ void matrix_scan_user(void) {
startup_user();
}
-#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
+#ifdef TAP_DANCE_ENABLE // Run Diablo 3 macro checking code.
run_diablo_macro_check();
-#endif // TAP_DANCE_ENABLE
+#endif // TAP_DANCE_ENABLE
#ifdef CAPS_WORD_ENABLE
caps_word_task();
#endif
#if defined(CUSTOM_RGB_MATRIX)
matrix_scan_rgb_matrix();
#endif
+#ifdef I2C_SCANNER_ENABLE
+ matrix_scan_i2c();
+#endif
+#ifdef CUSTOM_OLED_DRIVER
+ matrix_scan_oled();
+#endif
matrix_scan_secret();
matrix_scan_keymap();
@@ -124,8 +140,10 @@ float doom_song[][2] = SONG(E1M1_DOOM);
// 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) {
+__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;
}
@@ -136,7 +154,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
#endif
#if defined(CUSTOM_RGBLIGHT)
state = layer_state_set_rgb_light(state);
-#endif // CUSTOM_RGBLIGHT
+#endif // CUSTOM_RGBLIGHT
#if defined(AUDIO_ENABLE) && !defined(__arm__)
static bool is_gamepad_on = false;
if (layer_state_cmp(state, _GAMEPAD) != is_gamepad_on) {
@@ -153,28 +171,31 @@ layer_state_t layer_state_set_user(layer_state_t 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) {
+__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(CUSTOM_RGBLIGHT) || defined(RGB_MATRIX_ENABLE)
- state = default_layer_state_set_rgb(state);
-# endif
+#if defined(CUSTOM_RGBLIGHT)
+ state = default_layer_state_set_rgb_light(state);
#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); }
+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;
+ userspace_config.autocorrection = true;
eeconfig_update_user(userspace_config.raw);
eeconfig_init_keymap();
}
@@ -187,8 +208,8 @@ void matrix_slave_scan_user(void) {
music_task();
# endif
# ifdef AUDIO_INIT_DELAY
- if (!is_keyboard_master()) {
- static bool delayed_tasks_run = false;
+ 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) {
@@ -214,3 +235,11 @@ void matrix_slave_scan_user(void) {
matrix_slave_scan_keymap();
}
#endif
+
+__attribute__((weak)) void housekeeping_task_keymap(void) {}
+void housekeeping_task_user(void) {
+#if defined(SPLIT_KEYBOARD) && defined(SPLIT_TRANSACTION_IDS_USER)
+ housekeeping_task_transport_sync();
+#endif
+ housekeeping_task_keymap();
+}
diff --git a/users/drashna/callbacks.h b/users/drashna/callbacks.h
index f6ac6b88de..15f8997619 100644
--- a/users/drashna/callbacks.h
+++ b/users/drashna/callbacks.h
@@ -16,6 +16,7 @@ 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);
+void housekeeping_task_keymap(void);
#ifdef CUSTOM_UNICODE_ENABLE
void matrix_init_unicode(void);
diff --git a/users/drashna/config.h b/users/drashna/config.h
index 4a34f5d66a..57b26786b3 100644
--- a/users/drashna/config.h
+++ b/users/drashna/config.h
@@ -4,41 +4,35 @@
#pragma once
// Use custom magic number so that when switching branches, EEPROM always gets reset
-#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1339
+#define EECONFIG_MAGIC_NUMBER (uint16_t)0x1339
#ifdef IS_COMMAND
-#undef 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
#if defined(SPLIT_KEYBOARD)
-// # define SPLIT_TRANSPORT_MIRROR
-# define SPLIT_LAYER_STATE_ENABLE
-# define SPLIT_LED_STATE_ENABLE
-# define SPLIT_MODS_ENABLE
-# ifdef WPM_ENABLE
-# define SPLIT_WPM_ENABLE
-# endif
-# ifdef OLED_ENABLE
-# define SPLIT_OLED_ENABLE
-# endif
-# if defined(__AVR__) && !defined(SELECT_SOFT_SERIAL_SPEED)
-# 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, RPC_ID_USER_WATCHDOG_SYNC, RPC_ID_USER_KEYLOG_STR
-# endif
+# include "split/split_config.h"
+#endif
+#ifdef RGBLIGHT_ENABLE
+# include "rgb/rgblight_config.h"
+#endif // RGBLIGHT_ENABLE
+
+#ifdef RGB_MATRIX_ENABLE
+# include "rgb/rgb_matrix_config.h"
+#endif // RGB_MATRIX_ENABLE
+
+#ifdef OLED_ENABLE
+# include "oled/oled_config.h"
#endif
#if defined(WPM_ENABLE)
// # define WPM_LAUNCH_CONTROL
// # define WPM_ALLOW_COUNT_REGRESSOIN
// # define WPM_UNFILTERED
-# define WPM_SAMPLE_SECONDS 10
-# define WPM_SAMPLE_PERIODS 50
+# define WPM_SAMPLE_SECONDS 10
+# define WPM_SAMPLE_PERIODS 50
# define WPM_ESTIMATED_WORD_SIZE 5
#endif
@@ -51,171 +45,26 @@
# define GOODBYE_SONG SONG(SONIC_RING)
# define DEFAULT_LAYER_SONGS \
{ SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(OVERWATCH_THEME) }
-# define UNICODE_SONG_MAC SONG(MARIO_THEME)
-# define UNICODE_SONG_LNX SONG(MARIO_POWERUP)
-# define UNICODE_SONG_WIN SONG(MARIO_ONEUP)
-# define UNICODE_SONG_BSD SONG(RICK_ROLL)
+# define UNICODE_SONG_MAC SONG(MARIO_THEME)
+# define UNICODE_SONG_LNX SONG(MARIO_POWERUP)
+# define UNICODE_SONG_WIN SONG(MARIO_ONEUP)
+# define UNICODE_SONG_BSD SONG(RICK_ROLL)
# define UNICODE_SONG_WINC SONG(RICK_ROLL)
# else
# define STARTUP_SONG SONG(STARTUP_SOUND)
# define GOODBYE_SONG SONG(GOODBYE_SOUND)
# define DEFAULT_LAYER_SONGS \
{ SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND), SONG(WORKMAN_SOUND) }
-# define UNICODE_SONG_MAC SONG(QWERTY_SOUND)
-# define UNICODE_SONG_LNX SONG(COLEMAK_SOUND)
-# define UNICODE_SONG_WIN SONG(DVORAK_SOUND)
-# define UNICODE_SONG_BSD SONG(WORKMAN_SOUND)
+# define UNICODE_SONG_MAC SONG(QWERTY_SOUND)
+# define UNICODE_SONG_LNX SONG(COLEMAK_SOUND)
+# define UNICODE_SONG_WIN SONG(DVORAK_SOUND)
+# define UNICODE_SONG_BSD SONG(WORKMAN_SOUND)
# define UNICODE_SONG_WINC SONG(PLOVER_GOODBYE_SOUND)
# endif
-#endif // !AUDIO_ENABLE
+#endif // !AUDIO_ENABLE
#define UNICODE_SELECTED_MODES UC_WINC, UC_MAC
-#ifdef RGBLIGHT_ENABLE
-# define RGBLIGHT_SLEEP
-# define RGBLIGHT_EFFECT_TWINKLE_LIFE 250
-# define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1 / 24
-#endif // RGBLIGHT_ENABLE
-
-#ifdef RGB_MATRIX_ENABLE
-# define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
-// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
-# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
-// # 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
-
-# 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_RAIN
-# undef ENABLE_RGB_MATRIX_PIXEL_FLOW
-# undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
-# undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
-// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
-# 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
-
-# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
-# if !defined(SPLIT_KEYBOARD) && !defined(KEYBOARD_ergodox_ez) && !defined(KEYBOARD_moonlander)
-# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
-# endif
-# if defined(__arm__) || defined(__AVR_AT90USB1286__) || defined(KEYBOARD_launchpad)
-// 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_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_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_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 // AVR
-#endif // RGB_MATRIX_ENABLE
-
-#ifdef OLED_ENABLE
-# ifdef SPLIT_KEYBOARD
-# define OLED_UPDATE_INTERVAL 60
-# else
-# define OLED_UPDATE_INTERVAL 15
-# endif
-# define OLED_DISABLE_TIMEOUT
-# ifdef OLED_FONT_H
-# undef OLED_FONT_H
-# endif
-# define OLED_FONT_H "oled/drashna_font.h"
-# define OLED_FONT_END 255
-// # define OLED_FONT_5X5
-// # define OLED_FONT_AZTECH
-// # define OLED_FONT_BMPLAIN
-// # define OLED_FONT_CRACKERS
-# define OLED_FONT_DEAD_MEAL
-// # define OLED_FONT_EIN
-// # define OLED_FONT_HISKYF21
-// # define OLED_FONT_SQUASH
-// # define OLED_FONT_ZXPIX
-// # define OLED_FONT_SUPER_DIGG
-
-// # define OLED_LOGO_BEBOP
-// # 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_SCIFI
-// # define OLED_LOGO_SETS3N
-// # define OLED_LOGO_SKEEB
-#endif
-
// #define WPM_ESTIMATED_WORD_SIZE 5
#define WPM_ALLOW_COUNT_REGRESSION
// #define WPM_UNFILTERED
@@ -223,21 +72,26 @@
// #define WPM_SAMPLE_PERIODS 50
// #define WPM_LAUNCH_CONTROL
-
#ifndef ONESHOT_TAP_TOGGLE
# define ONESHOT_TAP_TOGGLE 2
-#endif // !ONESHOT_TAP_TOGGLE
+#endif // !ONESHOT_TAP_TOGGLE
#ifndef ONESHOT_TIMEOUT
# define ONESHOT_TIMEOUT 3000
-#endif // !ONESHOT_TIMEOUT
-
-#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
-#define PERMISSIVE_HOLD_PER_KEY
-#define TAPPING_FORCE_HOLD_PER_KEY
-#define RETRO_TAPPING_PER_KEY
-#define TAPPING_TERM_PER_KEY
-
+#endif // !ONESHOT_TIMEOUT
+
+#if defined(PER_KEY_TAPPING)
+# define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
+# define PERMISSIVE_HOLD_PER_KEY
+# define TAPPING_FORCE_HOLD_PER_KEY
+# define HOLD_ON_OTHER_KEY
+# define RETRO_TAPPING_PER_KEY
+# define HOLD_ON_OTHER_KEY_PRESS_PER_KEY
+# define TAPPING_TERM_PER_KEY
+#else
+# define IGNORE_MOD_TAP_INTERRUPT
+# undef PERMISSIVE_HOLD
+#endif
#ifndef TAPPING_TOGGLE
# define TAPPING_TOGGLE 1
@@ -255,12 +109,12 @@
#ifdef CONVERT_TO_PROTON_C
// pins that are available but not present on Pro Micro
-# define A3 PAL_LINE(GPIOA, 3)
-# define A4 PAL_LINE(GPIOA, 4)
-# define A5 PAL_LINE(GPIOA, 5)
-# define A6 PAL_LINE(GPIOA, 6)
-# define A7 PAL_LINE(GPIOA, 7)
-# define A8 PAL_LINE(GPIOA, 8)
+# define A3 PAL_LINE(GPIOA, 3)
+# define A4 PAL_LINE(GPIOA, 4)
+# define A5 PAL_LINE(GPIOA, 5)
+# define A6 PAL_LINE(GPIOA, 6)
+# define A7 PAL_LINE(GPIOA, 7)
+# define A8 PAL_LINE(GPIOA, 8)
# define A13 PAL_LINE(GPIOA, 13)
# define A14 PAL_LINE(GPIOA, 14)
# define A15 PAL_LINE(GPIOA, 15)
@@ -272,30 +126,6 @@
# 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
-# if !defined(STM32F4XX)
-# undef OLED_UPDATE_INTERVAL
-# define OLED_UPDATE_INTERVAL 75
-# endif
-#endif
#define ENABLE_COMPILE_KEYCODE
diff --git a/users/drashna/drashna.c b/users/drashna/drashna.c
index 6e8d4ac9bd..91f3a06b7c 100644
--- a/users/drashna/drashna.c
+++ b/users/drashna/drashna.c
@@ -2,9 +2,6 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#include "drashna.h"
-#ifdef __AVR__
-# include <avr/wdt.h>
-#endif
userspace_config_t userspace_config;
@@ -76,49 +73,59 @@ void tap_code16_nomods(uint16_t kc) {
set_mods(temp_mod);
}
-/**
- * @brief Run shutdown routine and soft reboot firmware.
- *
- */
-
-#ifdef HAPTIC_ENABLE
-# include "haptic.h"
-#endif
+#ifdef I2C_SCANNER_ENABLE
+# include "i2c_master.h"
+# include "debug.h"
-#ifdef AUDIO_ENABLE
-# ifndef GOODBYE_SONG
-# define GOODBYE_SONG SONG(GOODBYE_SOUND)
+# ifndef I2C_SCANNER_TIMEOUT
+# define I2C_SCANNER_TIMEOUT 50
# endif
-float reset_song[][2] = GOODBYE_SONG;
-#endif
-void software_reset(void) {
- clear_keyboard();
-#if defined(MIDI_ENABLE) && defined(MIDI_BASIC)
- process_midi_all_notes_off();
-#endif
-#ifdef AUDIO_ENABLE
-# 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
-#ifdef HAPTIC_ENABLE
- haptic_shutdown();
-#endif
+i2c_status_t i2c_start_bodge(uint8_t address, uint16_t timeout) {
+ i2c_start(address);
-#if defined(PROTOCOL_LUFA)
- wdt_enable(WDTO_250MS);
-#elif defined(PROTOCOL_CHIBIOS)
-# if defined(MCU_STM32) || defined(MCU_KINETIS)
- NVIC_SystemReset();
-# endif
-#endif
+ // except on ChibiOS where the only way is do do "something"
+ uint8_t data = 0;
+ return i2c_readReg(address, 0, &data, sizeof(data), I2C_SCANNER_TIMEOUT);
}
+
+# define i2c_start i2c_start_bodge
+
+void do_scan(void) {
+ uint8_t nDevices = 0;
+
+ dprintf("Scanning...\n");
+
+ for (uint8_t address = 1; address < 127; address++) {
+ // The i2c_scanner uses the return value of
+ // i2c_start to see if a device did acknowledge to the address.
+ i2c_status_t error = i2c_start(address << 1, I2C_SCANNER_TIMEOUT);
+ if (error == I2C_STATUS_SUCCESS) {
+ i2c_stop();
+ xprintf(" I2C device found at address 0x%02X\n", I2C_SCANNER_TIMEOUT);
+ nDevices++;
+ } else {
+ // dprintf(" Unknown error (%u) at address 0x%02X\n", error, address);
+ }
+ }
+
+ if (nDevices == 0)
+ xprintf("No I2C devices found\n");
+ else
+ xprintf("done\n");
+}
+
+uint16_t scan_timer = 0;
+
+void matrix_scan_i2c(void) {
+ if (timer_elapsed(scan_timer) > 5000) {
+ do_scan();
+ scan_timer = timer_read();
+ }
+}
+
+void keyboard_post_init_i2c(void) {
+ i2c_init();
+ scan_timer = timer_read();
+}
+#endif
diff --git a/users/drashna/drashna.h b/users/drashna/drashna.h
index 0bf1de84cf..16d7cda638 100644
--- a/users/drashna/drashna.h
+++ b/users/drashna/drashna.h
@@ -79,7 +79,6 @@ 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 {
diff --git a/users/drashna/keyrecords/autocorrection/autocorrection.c b/users/drashna/keyrecords/autocorrection/autocorrection.c
index 682d6fd49c..90fdba8f5e 100644
--- a/users/drashna/keyrecords/autocorrection/autocorrection.c
+++ b/users/drashna/keyrecords/autocorrection/autocorrection.c
@@ -52,7 +52,7 @@ void autocorrect_enable(void) {
*/
void autocorrect_disable(void) {
userspace_config.autocorrection = false;
- typo_buffer_size = 0;
+ typo_buffer_size = 0;
eeconfig_update_user(userspace_config.raw);
}
@@ -62,7 +62,7 @@ void autocorrect_disable(void) {
*/
void autocorrect_toggle(void) {
userspace_config.autocorrection = !userspace_config.autocorrection;
- typo_buffer_size = 0;
+ typo_buffer_size = 0;
eeconfig_update_user(userspace_config.raw);
}
@@ -98,15 +98,15 @@ __attribute__((weak)) bool process_autocorrect_user(uint16_t *keycode, keyrecord
}
*keycode &= 0xFF; // Get the basic keycode.
return true;
-#ifndef NO_ACTION_TAPPING
+# ifndef NO_ACTION_TAPPING
// Exclude tap-hold keys when they are held down
// and mask for base keycode when they are tapped.
case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
-# ifdef NO_ACTION_LAYER
+# ifdef NO_ACTION_LAYER
// Exclude Layer Tap, if layers are disabled
// but action tapping is still enabled.
return false;
-# endif
+# endif
case QK_MOD_TAP ... QK_MOD_TAP_MAX:
// Exclude hold keycode
if (!record->tap.count) {
@@ -114,25 +114,25 @@ __attribute__((weak)) bool process_autocorrect_user(uint16_t *keycode, keyrecord
}
*keycode &= 0xFF;
break;
-#else
+# else
case QK_MOD_TAP ... QK_MOD_TAP_MAX:
case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
// Exclude if disabled
return false;
-#endif
+# endif
// Exclude swap hands keys when they are held down
// and mask for base keycode when they are tapped.
case QK_SWAP_HANDS ... QK_SWAP_HANDS_MAX:
-#ifdef SWAP_HANDS_ENABLE
+# ifdef SWAP_HANDS_ENABLE
if (*keycode >= 0x56F0 || !record->tap.count) {
return false;
}
*keycode &= 0xFF;
break;
-#else
+# else
// Exclude if disabled
return false;
-#endif
+# endif
}
// Disable autocorrect while a mod other than shift is active.
@@ -166,9 +166,9 @@ __attribute__((weak)) bool apply_autocorrect(uint8_t backspaces, const char *str
*/
bool process_autocorrection(uint16_t keycode, keyrecord_t *record) {
uint8_t mods = get_mods();
-#ifndef NO_ACTION_ONESHOT
+# ifndef NO_ACTION_ONESHOT
mods |= get_oneshot_mods();
-#endif
+# endif
if ((keycode >= AUTOCORRECT_ON && keycode <= AUTOCORRECT_TOGGLE) && record->event.pressed) {
if (keycode == AUTOCORRECT_ON) {
diff --git a/users/drashna/keyrecords/autocorrection/autocorrection_data.h b/users/drashna/keyrecords/autocorrection/autocorrection_data.h
new file mode 100644
index 0000000000..90484d3b12
--- /dev/null
+++ b/users/drashna/keyrecords/autocorrection/autocorrection_data.h
@@ -0,0 +1 @@
+#include "autocorrect_data.h"
diff --git a/users/drashna/keyrecords/process_records.c b/users/drashna/keyrecords/process_records.c
index 240156e816..197fd94171 100644
--- a/users/drashna/keyrecords/process_records.c
+++ b/users/drashna/keyrecords/process_records.c
@@ -6,9 +6,6 @@
#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;
@@ -20,8 +17,12 @@ bool host_driver_disabled = false;
*
* 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; }
+__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
@@ -45,11 +46,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
#endif
// 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
+ uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %1d, time: %5u, int: %1d, 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
#if defined(OLED_ENABLE) && defined(CUSTOM_OLED_DRIVER)
process_record_user_oled(keycode, record);
-#endif // OLED
+#endif // OLED
if (!(process_record_keymap(keycode, record) && process_record_secrets(keycode, record)
#ifdef CUSTOM_RGB_MATRIX
@@ -90,34 +91,34 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
break;
- case VRSN: // Prints firmware version
+ 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
+ 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
+#endif // TAP_DANCE_ENABLE
break;
- case KC_CCCV: // One key copy/paste
+ 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
+ if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
tap_code16(LCTL(KC_C));
- } else { // Tap, paste
+ } 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
+ case KC_RGB_T: // This allows me to use underglow as layer indication, or as normal
#if defined(CUSTOM_RGBLIGHT) || defined(CUSTOM_RGB_MATRIX)
if (record->event.pressed) {
userspace_config.rgb_layer_change ^= 1;
@@ -140,7 +141,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
# endif
}
}
-#endif // CUSTOM_RGBLIGHT
+#endif // CUSTOM_RGBLIGHT
break;
#if defined(CUSTOM_RGBLIGHT) || defined(CUSTOM_RGB_MATRIX)
@@ -160,7 +161,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
return false;
break;
- case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
+ case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // quantum_keycodes.h L400 for definitions
if (record->event.pressed) {
bool is_eeprom_updated;
# if defined(CUSTOM_RGBLIGHT) && !defined(RGBLIGHT_DISABLE_KEYCODES)
@@ -200,9 +201,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
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); }
+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
index e83e4ce308..be31f992cb 100644
--- a/users/drashna/keyrecords/process_records.h
+++ b/users/drashna/keyrecords/process_records.h
@@ -13,30 +13,30 @@
#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_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, // ಠ_ಠ
+ 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_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
+ KEYLOCK, // Locks keyboard by unmounting driver
KC_NOMODE,
KC_WIDE,
KC_SCRIPT,
@@ -44,11 +44,12 @@ enum userspace_custom_keycodes {
KC_REGIONAL,
KC_AUSSIE,
KC_ZALGO,
+ KC_SUPER,
KC_ACCEL,
AUTOCORRECT_ON,
AUTOCORRECT_OFF,
AUTOCORRECT_TOGGLE,
- NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes
+ NEW_SAFE_RANGE // use "NEWPLACEHOLDER for keymap specific codes
};
bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
@@ -58,37 +59,37 @@ void post_process_record_keymap(uint16_t keycode, keyrecord_t *record);
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 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 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 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)
+#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 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)
@@ -99,9 +100,9 @@ bool process_record_unicode(uint16_t keycode, keyrecord_t *record);
# define KC_C1R3 SH_T(KC_TAB)
#elif defined(DRASHNA_LP)
# define KC_C1R3 TG(_GAMEPAD)
-#else // SWAP_HANDS_ENABLE
+#else // SWAP_HANDS_ENABLE
# define KC_C1R3 KC_TAB
-#endif // SWAP_HANDS_ENABLE
+#endif // SWAP_HANDS_ENABLE
#define BK_LWER LT(_LOWER, KC_BSPC)
#define SP_LWER LT(_LOWER, KC_SPC)
@@ -120,7 +121,7 @@ bool process_record_unicode(uint16_t keycode, keyrecord_t *record);
#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_MEH OSM(MOD_MEH)
#define OS_HYPR OSM(MOD_HYPR)
#define ALT_APP ALT_T(KC_APP)
@@ -138,9 +139,9 @@ We use custom codes here, so we can substitute the right stuff
# 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
+#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
+#endif // TAP_DANCE_ENABLE
diff --git a/users/drashna/keyrecords/tap_dances.c b/users/drashna/keyrecords/tap_dances.c
index a1a7439164..6caf6b6b3e 100644
--- a/users/drashna/keyrecords/tap_dances.c
+++ b/users/drashna/keyrecords/tap_dances.c
@@ -26,7 +26,7 @@ void diablo_tapdance_master(qk_tap_dance_state_t *state, void *user_data) {
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)
+ } 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];
}
}
diff --git a/users/drashna/keyrecords/tap_dances.h b/users/drashna/keyrecords/tap_dances.h
index d9baedc867..81d1f07fe0 100644
--- a/users/drashna/keyrecords/tap_dances.h
+++ b/users/drashna/keyrecords/tap_dances.h
@@ -28,4 +28,4 @@ enum {
TD_D3_3,
TD_D3_4,
};
-#endif // TAP_DANCE_ENABLE
+#endif // TAP_DANCE_ENABLE
diff --git a/users/drashna/keyrecords/tapping.c b/users/drashna/keyrecords/tapping.c
index 9c4892b33d..7496610c2f 100644
--- a/users/drashna/keyrecords/tapping.c
+++ b/users/drashna/keyrecords/tapping.c
@@ -3,6 +3,7 @@
#include "drashna.h"
+#ifdef TAPPING_TERM_PER_KEY
__attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case BK_LWER:
@@ -11,7 +12,9 @@ __attribute__((weak)) uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *r
return TAPPING_TERM;
}
}
+#endif // TAPPING_TERM_PER_KEY
+#ifdef PERMISSIVE_HOLD_PER_KEY
__attribute__((weak)) bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
// Immediately select the hold action when another key is tapped:
// return true;
@@ -22,20 +25,24 @@ __attribute__((weak)) bool get_permissive_hold(uint16_t keycode, keyrecord_t *re
return false;
}
}
+#endif // PERMISSIVE_HOLD_PER_KEY
+#ifdef HOLD_ON_OTHER_KEY_PRESS_PER_KEY
__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;
+// case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
+// return true;
default:
return false;
}
}
+#endif // HOLD_ON_OTHER_KEY_PRESS_PER_KEY
+#ifdef IGNORE_MOD_TAP_INTERRUPT_PER_KEY
__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.
@@ -48,17 +55,22 @@ __attribute__((weak)) bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrec
return true;
}
}
+#endif // IGNORE_MOD_TAP_INTERRUPT_PER_KEY
+#ifdef TAPPING_FORCE_HOLD_PER_KEY
__attribute__((weak)) bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
default:
return false;
}
}
+#endif // TAPPING_FORCE_HOLD_PER_KEY
+#ifdef RETRO_TAPPING_PER_KEY
__attribute__((weak)) bool get_retro_tapping(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
default:
return false;
}
}
+#endif // RETRO_TAPPING_PER_KEY
diff --git a/users/drashna/keyrecords/unicode.c b/users/drashna/keyrecords/unicode.c
index c1fe8df2c3..b3fc71cb09 100644
--- a/users/drashna/keyrecords/unicode.c
+++ b/users/drashna/keyrecords/unicode.c
@@ -69,7 +69,7 @@ bool process_record_glyph_replacement(uint16_t keycode, keyrecord_t *record, tra
}
return false;
} else if (KC_1 <= keycode && keycode <= KC_0) {
- if (is_shifted) { // skip shifted numbers, so that we can still use symbols etc.
+ if (is_shifted) { // skip shifted numbers, so that we can still use symbols etc.
return process_record_keymap(keycode, record);
}
if (record->event.pressed) {
@@ -92,42 +92,81 @@ DEFINE_UNICODE_RANGE_TRANSLATOR(unicode_range_translator_boxes, 0x1F170, 0x1F170
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
+ 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
+);
+
+DEFINE_UNICODE_LUT_TRANSLATOR(unicode_lut_translator_super,
+ 0x1D43, // a
+ 0x1D47, // b
+ 0x1D9C, // c
+ 0x1D48, // d
+ 0x1D49, // e
+ 0x1DA0, // f
+ 0x1D4D, // g
+ 0x02B0, // h
+ 0x2071, // i
+ 0x02B2, // j
+ 0x1D4F, // k
+ 0x02E1, // l
+ 0x1D50, // m
+ 0x207F, // n
+ 0x1D52, // o
+ 0x1D56, // p
+ 0x06F9, // q
+ 0x02B3, // r
+ 0x02E2, // s
+ 0x1D57, // t
+ 0x1D58, // u
+ 0x1D5B, // v
+ 0x02B7, // w
+ 0x02E3, // x
+ 0x02B8, // y
+ 0x1DBB, // z
+ 0x00B9, // 1
+ 0x00B2, // 2
+ 0x00B3, // 3
+ 0x2074, // 4
+ 0x2075, // 5
+ 0x2076, // 6
+ 0x2077, // 7
+ 0x2078, // 8
+ 0x2079, // 9
+ 0x2070 // 0
);
bool process_record_aussie(uint16_t keycode, keyrecord_t *record) {
@@ -207,41 +246,41 @@ bool process_record_zalgo(uint16_t keycode, keyrecord_t *record) {
bool process_record_unicode(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
- case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻â”â”»
+ case UC_FLIP: // (ノಠ痊ಠ)ノ彡┻â”â”»
if (record->event.pressed) {
send_unicode_string("(ノಠ痊ಠ)ノ彡┻â”â”»");
}
break;
- case UC_TABL: // ┬─┬ノ( º _ ºノ)
+ case UC_TABL: // ┬─┬ノ( º _ ºノ)
if (record->event.pressed) {
send_unicode_string("┬─┬ノ( º _ ºノ)");
}
break;
- case UC_SHRG: // ¯\_(ツ)_/¯
+ case UC_SHRG: // ¯\_(ツ)_/¯
if (record->event.pressed) {
send_unicode_string("¯\\_(ツ)_/¯");
}
break;
- case UC_DISA: // ಠ_ಠ
+ case UC_DISA: // ಠ_ಠ
if (record->event.pressed) {
send_unicode_string("ಠ_ಠ");
}
break;
- case UC_IRNY: // ⸮
+ case UC_IRNY: // ⸮
if (record->event.pressed) {
register_unicode(0x2E2E);
}
break;
- case UC_CLUE: // ‽
+ case UC_CLUE: // ‽
if (record->event.pressed) {
register_unicode(0x203D);
}
break;
- case KC_NOMODE ... KC_ZALGO:
+ case KC_NOMODE ... KC_SUPER:
if (record->event.pressed) {
if (typing_mode != keycode - KC_NOMODE) {
typing_mode = keycode - KC_NOMODE;
@@ -280,6 +319,10 @@ bool process_record_unicode(uint16_t keycode, keyrecord_t *record) {
return false;
}
}
+ } else if (typing_mode == UCTM_SUPER) {
+ if (((KC_A <= keycode) && (keycode <= KC_0))) {
+ return process_record_glyph_replacement(keycode, record, unicode_lut_translator_super);
+ }
} else if (typing_mode == UCTM_AUSSIE) {
return process_record_aussie(keycode, record);
} else if (typing_mode == UCTM_ZALGO) {
@@ -292,4 +335,6 @@ bool process_record_unicode(uint16_t keycode, keyrecord_t *record) {
* @brief Initialize the default unicode mode on firmware startu
*
*/
-void matrix_init_unicode(void) { unicode_input_mode_init(); }
+void matrix_init_unicode(void) {
+ unicode_input_mode_init();
+}
diff --git a/users/drashna/keyrecords/unicode.h b/users/drashna/keyrecords/unicode.h
index dd261d3406..6885d4dd7f 100644
--- a/users/drashna/keyrecords/unicode.h
+++ b/users/drashna/keyrecords/unicode.h
@@ -11,6 +11,7 @@ enum unicode_typing_mode {
UCTM_REGIONAL,
UCTM_AUSSIE,
UCTM_ZALGO,
+ UCTM_SUPER,
};
extern uint8_t typing_mode;
diff --git a/users/drashna/oled/oled_config.h b/users/drashna/oled/oled_config.h
new file mode 100644
index 0000000000..c46c0c39ce
--- /dev/null
+++ b/users/drashna/oled/oled_config.h
@@ -0,0 +1,63 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#ifndef OLED_UPDATE_INTERVAL
+# ifdef OLED_DRIVER_SH1107
+# define OLED_UPDATE_INTERVAL 75
+# else
+# ifdef SPLIT_KEYBOARD
+# define OLED_UPDATE_INTERVAL 60
+# else
+# define OLED_UPDATE_INTERVAL 15
+# endif
+# endif
+#endif
+#define OLED_DISABLE_TIMEOUT
+#ifdef OLED_FONT_H
+# undef OLED_FONT_H
+#endif
+#define OLED_FONT_H "oled/drashna_font.h"
+#define OLED_FONT_END 255
+// # define OLED_FONT_5X5
+// # define OLED_FONT_AZTECH
+// # define OLED_FONT_BMPLAIN
+// # define OLED_FONT_CRACKERS
+#define OLED_FONT_DEAD_MEAL
+// # define OLED_FONT_EIN
+// # define OLED_FONT_HISKYF21
+// # define OLED_FONT_SQUASH
+// # define OLED_FONT_ZXPIX
+// # define OLED_FONT_SUPER_DIGG
+
+// # define OLED_LOGO_BEBOP
+// # 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_SCIFI
+// # define OLED_LOGO_SETS3N
+// # define OLED_LOGO_SKEEB
+
+#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/oled/oled_stuff.c b/users/drashna/oled/oled_stuff.c
index 8c76897fba..e082f8ab3e 100644
--- a/users/drashna/oled/oled_stuff.c
+++ b/users/drashna/oled/oled_stuff.c
@@ -28,13 +28,15 @@
#endif
#include <string.h>
+bool is_oled_enabled = true;
+
extern bool host_driver_disabled;
uint32_t oled_timer = 0;
char keylog_str[OLED_KEYLOGGER_LENGTH] = {0};
static uint16_t log_timer = 0;
#ifdef OLED_DISPLAY_VERBOSE
-static const char PROGMEM display_border[3] = {0x0, 0xFF, 0x0};
+const char PROGMEM display_border[3] = {0x0, 0xFF, 0x0};
#endif
deferred_token kittoken;
@@ -117,9 +119,9 @@ void oled_timer_reset(void) {
* @brief Renders keylogger buffer to oled
*
*/
-void render_keylogger_status(void) {
+void render_keylogger_status(uint8_t col, uint8_t line) {
#ifdef OLED_DISPLAY_VERBOSE
- oled_set_cursor(1, 6);
+ oled_set_cursor(col, line);
#endif
oled_write_P(PSTR(OLED_RENDER_KEYLOGGER), false);
oled_write(keylog_str, false);
@@ -132,9 +134,9 @@ void render_keylogger_status(void) {
* @brief Renders default layer state (aka layout) to oled
*
*/
-void render_default_layer_state(void) {
+void render_default_layer_state(uint8_t col, uint8_t line) {
#ifdef OLED_DISPLAY_VERBOSE
- oled_set_cursor(1, 1);
+ oled_set_cursor(col, line);
#endif
oled_write_P(PSTR(OLED_RENDER_LAYOUT_NAME), false);
switch (get_highest_layer(default_layer_state)) {
@@ -160,7 +162,7 @@ void render_default_layer_state(void) {
* @brief Renders the active layers to the OLED
*
*/
-void render_layer_state(void) {
+void render_layer_state(uint8_t col, uint8_t line) {
#ifdef OLED_DISPLAY_VERBOSE
// clang-format off
static const char PROGMEM tri_layer_image[][3][24] = {
@@ -286,33 +288,33 @@ void render_layer_state(void) {
layer_is[2] = 5;
}
- oled_set_cursor(1, 2);
+ oled_set_cursor(col, line);
oled_write_raw_P(tri_layer_image[layer_is[0]][0], sizeof(tri_layer_image[0][0]));
- oled_set_cursor(5, 2);
+ oled_set_cursor(col + 4, line);
oled_write_raw_P(tri_layer_image[layer_is[1]][0], sizeof(tri_layer_image[0][0]));
- oled_set_cursor(9, 2);
+ oled_set_cursor(col + 8, line);
oled_write_raw_P(tri_layer_image[layer_is[2]][0], sizeof(tri_layer_image[0][0]));
- oled_set_cursor(14, 2);
+ oled_set_cursor(col + 13, line);
oled_write_P(PSTR("Diablo2"), layer_state_is(_DIABLOII));
oled_advance_page(true);
- oled_set_cursor(1, 3);
+ oled_set_cursor(col, line + 1);
oled_write_raw_P(tri_layer_image[layer_is[0]][1], sizeof(tri_layer_image[0][0]));
- oled_set_cursor(5, 3);
+ oled_set_cursor(col + 4, line + 1);
oled_write_raw_P(tri_layer_image[layer_is[1]][1], sizeof(tri_layer_image[0][0]));
- oled_set_cursor(9, 3);
+ oled_set_cursor(col + 8, line + 1);
oled_write_raw_P(tri_layer_image[layer_is[2]][1], sizeof(tri_layer_image[0][0]));
- oled_set_cursor(14, 3);
+ oled_set_cursor(col + 13, line + 1);
oled_write_P(PSTR("Diablo3"), layer_state_is(_DIABLO));
oled_advance_page(true);
- oled_set_cursor(1, 4);
+ oled_set_cursor(col, line + 2);
oled_write_raw_P(tri_layer_image[layer_is[0]][2], sizeof(tri_layer_image[0][0]));
- oled_set_cursor(5, 4);
+ oled_set_cursor(col + 4, line + 2);
oled_write_raw_P(tri_layer_image[layer_is[1]][2], sizeof(tri_layer_image[0][0]));
- oled_set_cursor(9, 4);
+ oled_set_cursor(col + 8, line + 2);
oled_write_raw_P(tri_layer_image[layer_is[2]][2], sizeof(tri_layer_image[0][0]));
- oled_set_cursor(14, 4);
+ oled_set_cursor(col + 13, line + 2);
oled_write_P(PSTR("Media"), layer_state_is(_MEDIA));
#else
oled_write_P(PSTR(OLED_RENDER_LAYER_NAME), false);
@@ -327,9 +329,12 @@ void render_layer_state(void) {
*
* @param led_usb_state Current keyboard led state
*/
-void render_keylock_status(led_t led_usb_state) {
+void render_keylock_status(led_t led_usb_state, uint8_t col, uint8_t line) {
#if defined(OLED_DISPLAY_VERBOSE)
- oled_set_cursor(1, 6);
+ oled_set_cursor(col, line);
+#endif
+#ifdef CAPS_WORD_ENABLE
+ led_usb_state.caps_lock |= is_caps_word_on();
#endif
oled_write_P(PSTR(OLED_RENDER_LOCK_NAME), false);
#if !defined(OLED_DISPLAY_VERBOSE)
@@ -348,8 +353,9 @@ void render_keylock_status(led_t led_usb_state) {
* @brief Renders the matrix scan rate to the host system
*
*/
-void render_matrix_scan_rate(uint8_t padding) {
+void render_matrix_scan_rate(uint8_t padding, uint8_t col, uint8_t line) {
#ifdef DEBUG_MATRIX_SCAN_RATE
+ oled_set_cursor(col, line);
oled_write_P(PSTR("MS:"), false);
if (padding) {
for (uint8_t n = padding; n > 0; n--) {
@@ -365,10 +371,10 @@ void render_matrix_scan_rate(uint8_t padding) {
*
* @param modifiers Modifiers to check against (real, weak, onesheot, etc;)
*/
-void render_mod_status(uint8_t modifiers) {
+void render_mod_status(uint8_t modifiers, uint8_t col, uint8_t line) {
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);
+ oled_set_cursor(col, line);
#endif
oled_write_P(PSTR(OLED_RENDER_MODS_NAME), false);
#if defined(OLED_DISPLAY_VERBOSE)
@@ -393,7 +399,7 @@ void render_mod_status(uint8_t modifiers) {
extern bool swap_hands;
#endif
-void render_bootmagic_status(void) {
+void render_bootmagic_status(uint8_t col, uint8_t line) {
/* Show Ctrl-Gui Swap options */
static const char PROGMEM logo[][2][3] = {
{{0x97, 0x98, 0}, {0xb7, 0xb8, 0}},
@@ -402,7 +408,8 @@ void render_bootmagic_status(void) {
bool is_bootmagic_on;
#ifdef OLED_DISPLAY_VERBOSE
- oled_set_cursor(7, 3);
+ oled_set_cursor(col, line);
+ // oled_set_cursor(7, 3);
is_bootmagic_on = !keymap_config.swap_lctl_lgui;
#else
is_bootmagic_on = keymap_config.swap_lctl_lgui;
@@ -435,7 +442,7 @@ void render_bootmagic_status(void) {
oled_write_P(PSTR(OLED_RENDER_BOOTMAGIC_NOGUI), keymap_config.no_gui);
#endif
#ifdef OLED_DISPLAY_VERBOSE
- oled_set_cursor(7, 4);
+ oled_set_cursor(col, line + 1);
if (keymap_config.swap_lctl_lgui) {
oled_write_P(logo[1][1], is_bootmagic_on);
} else {
@@ -455,7 +462,7 @@ void render_bootmagic_status(void) {
extern bool tap_toggling;
#endif
-void render_user_status(void) {
+void render_user_status(uint8_t col, uint8_t line) {
#ifdef AUDIO_ENABLE
bool is_audio_on = false, l_is_clicky_on = false;
# ifdef SPLIT_KEYBOARD
@@ -472,7 +479,7 @@ void render_user_status(void) {
# endif
#endif
#if defined(OLED_DISPLAY_VERBOSE)
- oled_set_cursor(1, 5);
+ oled_set_cursor(col, line);
#endif
oled_write_P(PSTR(OLED_RENDER_USER_NAME), false);
#if !defined(OLED_DISPLAY_VERBOSE)
@@ -523,9 +530,27 @@ void render_user_status(void) {
#endif
}
-void render_wpm(uint8_t padding) {
-#ifdef WPM_ENABLE
+void render_rgb_hsv(uint8_t col, uint8_t line) {
+ oled_set_cursor(col, line);
+ oled_write_P(PSTR("HSV: "), false);
+#ifdef RGB_MATRIX_ENABLE
+ oled_write(get_u8_str(rgb_matrix_get_hue(), ' '), false);
+ oled_write_P(PSTR(", "), false);
+ oled_write(get_u8_str(rgb_matrix_get_sat(), ' '), false);
+ oled_write_P(PSTR(", "), false);
+ oled_write(get_u8_str(rgb_matrix_get_val(), ' '), false);
+#elif RGBLIGHT_ENABLE
+ oled_write(get_u8_str(rgblight_get_hue(), ' '), false);
+ oled_write_P(PSTR(", "), false);
+ oled_write(get_u8_str(rgblight_get_sat(), ' '), false);
+ oled_write_P(PSTR(", "), false);
+ oled_write(get_u8_str(rgblight_get_val(), ' '), false);
+#endif
+}
+void render_wpm(uint8_t padding, uint8_t col, uint8_t line) {
+#ifdef WPM_ENABLE
+ oled_set_cursor(col, line);
oled_write_P(PSTR(OLED_RENDER_WPM_COUNTER), false);
if (padding) {
for (uint8_t n = padding; n > 0; n--) {
@@ -591,7 +616,8 @@ void render_wpm_graph(uint8_t max_lines_graph, uint8_t vertical_offset) {
}
#if defined(POINTING_DEVICE_ENABLE)
-void render_pointing_dpi_status(uint16_t cpi, uint8_t padding) {
+void render_pointing_dpi_status(uint16_t cpi, uint8_t padding, uint8_t col, uint8_t line) {
+ oled_set_cursor(col, line);
oled_write_P(PSTR("CPI:"), false);
if (padding) {
for (uint8_t n = padding - 1; n > 0; n--) {
@@ -603,13 +629,6 @@ void render_pointing_dpi_status(uint16_t cpi, uint8_t padding) {
}
#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
@@ -635,7 +654,7 @@ __attribute__((weak)) void oled_driver_render_logo_right(void) {
static uint8_t animation_frame = 0;
static uint8_t animation_type = 0;
-void render_kitty(void) {
+void render_kitty(uint8_t col, uint8_t line) {
// 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
@@ -712,11 +731,44 @@ void render_kitty(void) {
// clang-format on
for (uint8_t i = 0; i < 4; i++) {
- oled_set_cursor(1, i + 1);
+ oled_set_cursor(col, line + i);
oled_write_raw_P(animation[animation_type][animation_frame][i], OLED_ANIM_SIZE);
}
}
+void render_unicode_mode(uint8_t col, uint8_t line) {
+#ifdef CUSTOM_UNICODE_ENABLE
+ oled_set_cursor(col, line);
+ oled_write_ln_P(PSTR("Unicode:"), false);
+ switch (typing_mode) {
+ case UCTM_WIDE:
+ oled_write_P(PSTR(" Wide"), false);
+ break;
+ case UCTM_SCRIPT:
+ oled_write_P(PSTR(" Script"), false);
+ break;
+ case UCTM_BLOCKS:
+ oled_write_P(PSTR(" Blocks"), false);
+ break;
+ case UCTM_REGIONAL:
+ oled_write_P(PSTR(" Regional"), false);
+ break;
+ case UCTM_AUSSIE:
+ oled_write_P(PSTR(" Aussie"), false);
+ break;
+ case UCTM_ZALGO:
+ oled_write_P(PSTR(" Zalgo"), false);
+ break;
+ case UCTM_NO_MODE:
+ oled_write_P(PSTR(" Normal"), false);
+ break;
+ default:
+ oled_write_P(PSTR(" Unknown"), false);
+ break;
+ }
+#endif
+}
+
uint32_t kitty_animation_phases(uint32_t triger_time, void *cb_arg) {
static uint32_t anim_frame_duration = 500;
#ifdef CUSTOM_POINTING_DEVICE
@@ -748,34 +800,8 @@ uint32_t kitty_animation_phases(uint32_t triger_time, void *cb_arg) {
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) || defined(KEYBOARD_handwired_tractyl_manuform)) && defined(POINTING_DEVICE_ENABLE)
- render_pointing_dpi_status(charybdis_get_pointer_sniping_enabled() ? charybdis_get_pointer_sniping_dpi() : charybdis_get_pointer_default_dpi(), 1);
-
+void render_mouse_mode(uint8_t col, uint8_t line) {
+#if (defined(KEYBOARD_bastardkb_charybdis) || defined(KEYBOARD_handwired_tractyl_manuform)) && defined(POINTING_DEVICE_ENABLE)
// 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}},
@@ -785,27 +811,20 @@ void oled_driver_render_logo_left(void) {
{{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
+# ifdef OLED_DISPLAY_TEST
image_index = animation_frame;
-# else
+# else
if (charybdis_get_pointer_sniping_enabled()) {
image_index = 1;
} else if (charybdis_get_pointer_dragscroll_enabled()) {
image_index = 2;
}
-# endif
+# endif
- oled_set_cursor(17, 1);
+ oled_set_cursor(col, line);
oled_write_raw_P(mouse_logo[image_index][0], 16);
- oled_set_cursor(17, 2);
+ oled_set_cursor(col, line + 1);
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
}
@@ -823,27 +842,73 @@ void render_status_right(void) {
oled_set_cursor(8, 0);
oled_write_P(PSTR("Right"), true);
#endif
- oled_driver_render_logo_right();
+#if defined(OLED_DISPLAY_VERBOSE)
+ render_default_layer_state(1, 1);
+#else
+ render_default_layer_state(0, 0);
+#endif
+
/* 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);
+ render_layer_state(1, 2);
+ render_mod_status(get_mods() | get_oneshot_mods(), 1, 5);
+#if !defined(OLED_DISPLAY_VERBOSE) && defined(WPM_ENABLE) && !defined(STM32F303xC)
+ render_wpm(2, 7, 1);
#endif
- render_keylock_status(host_keyboard_led_state());
+ render_keylock_status(host_keyboard_led_state(), 1, 6);
}
void render_status_left(void) {
- oled_driver_render_logo_left();
+#if defined(OLED_DISPLAY_VERBOSE)
+ render_kitty(0, 1);
+# 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);
+# elif defined(KEYBOARD_handwired_fingerpunch_rockon)
+ oled_set_cursor(7, 0);
+ oled_write_P(PSTR("Rock On"), true);
+# else
+ oled_set_cursor(8, 0);
+ oled_write_P(PSTR("Left"), true);
+# endif
+
+# if defined(WPM_ENABLE)
+ render_wpm(1, 7, 1);
+# elif defined(DEBUG_MATRIX_SCAN_RATE)
+ render_matrix_scan_rate(1, 7, 1);
+# endif
+# if (defined(KEYBOARD_bastardkb_charybdis) || defined(KEYBOARD_handwired_tractyl_manuform)) && defined(POINTING_DEVICE_ENABLE)
+ render_pointing_dpi_status(charybdis_get_pointer_sniping_enabled() ? charybdis_get_pointer_sniping_dpi() : charybdis_get_pointer_default_dpi(), 1, 7, 2);
+ render_mouse_mode(17, 1);
+# elif defined(WPM_ENABLE) && defined(DEBUG_MATRIX_SCAN_RATE)
+ render_matrix_scan_rate(1, 7, 2);
+# endif
/* Show Keyboard Layout */
- render_bootmagic_status();
- render_user_status();
+ render_bootmagic_status(7, 3);
+ render_user_status(1, 5);
- render_keylogger_status();
+ render_keylogger_status(1, 6);
+#else
+ render_default_layer_state(0, 0);
+ /* Show Keyboard Layout */
+ render_bootmagic_status(7, 3);
+ render_user_status(1, 5);
+
+ render_keylogger_status(1, 6);
+#endif
}
-__attribute__((weak)) void oled_render_large_display(bool side) {}
+__attribute__((weak)) void oled_render_large_display(bool side) {
+ if (!side) {
+ render_unicode_mode(1, 14);
+ }
+}
__attribute__((weak)) oled_rotation_t oled_init_keymap(oled_rotation_t rotation) {
return rotation;
@@ -866,16 +931,14 @@ __attribute__((weak)) bool oled_task_keymap(void) {
}
bool oled_task_user(void) {
- if (is_keyboard_master()) {
#ifndef OLED_DISPLAY_TEST
- if (timer_elapsed32(oled_timer) > 60000) {
- oled_off();
- return false;
- } else
+ if (!is_oled_enabled) {
+ oled_off();
+ return false;
+ } else
#endif
- {
- oled_on();
- }
+ {
+ oled_on();
}
if (!oled_task_keymap()) {
@@ -895,14 +958,12 @@ bool oled_task_user(void) {
#endif
render_status_left();
#if defined(OLED_DISPLAY_128X128)
- oled_set_cursor(0, 7);
oled_render_large_display(true);
#endif
#ifndef OLED_DISPLAY_TEST
} else {
render_status_right();
# if defined(OLED_DISPLAY_128X128)
- oled_set_cursor(0, 7);
oled_render_large_display(false);
# endif
}
@@ -929,3 +990,9 @@ bool oled_task_user(void) {
return false;
}
+
+extern bool oled_initialized;
+
+__attribute__((weak)) void matrix_scan_oled(void) {
+ is_oled_enabled = !(timer_elapsed32(oled_timer) > 60000);
+}
diff --git a/users/drashna/oled/oled_stuff.h b/users/drashna/oled/oled_stuff.h
index 4dea4b7be4..df1a6d1805 100644
--- a/users/drashna/oled/oled_stuff.h
+++ b/users/drashna/oled/oled_stuff.h
@@ -18,132 +18,137 @@
#include "quantum.h"
#include "oled_driver.h"
+#ifdef DEFFERED_EXEC_ENABLE
extern deferred_token kittoken;
+#endif
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);
void oled_timer_reset(void);
-void render_keylogger_status(void);
-void render_default_layer_state(void);
-void render_layer_state(void);
-void render_keylock_status(led_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 render_keylogger_status(uint8_t col, uint8_t line);
+void render_default_layer_state(uint8_t col, uint8_t line);
+void render_layer_state(uint8_t col, uint8_t line);
+void render_keylock_status(led_t led_usb_state, uint8_t col, uint8_t line);
+void render_matrix_scan_rate(uint8_t padding, uint8_t col, uint8_t line);
+void render_mod_status(uint8_t modifiers, uint8_t col, uint8_t line);
+void render_bootmagic_status(uint8_t col, uint8_t line);
+void render_user_status(uint8_t col, uint8_t line);
void oled_driver_render_logo(void);
-void render_wpm(uint8_t padding);
-void render_pointing_dpi_status(uint16_t cpi, uint8_t padding);
+void render_wpm(uint8_t padding, uint8_t col, uint8_t line);
+void render_pointing_dpi_status(uint16_t cpi, uint8_t padding, uint8_t col, uint8_t line);
void oled_driver_render_logo_left(void);
void oled_driver_render_logo_right(void);
void oled_render_large_display(bool side);
-void render_wpm_graph(uint8_t max_lines_graph, uint8_t vertical_offset);
+void render_wpm_graph(uint8_t max_lines_graph, uint8_t vertical_offset);
+void render_kitty(uint8_t col, uint8_t line);
+void render_unicode_mode(uint8_t col, uint8_t line);
+void render_rgb_hsv(uint8_t col, uint8_t line);
+void render_mouse_mode(uint8_t col, uint8_t line);
+void matrix_scan_oled(void);
void oled_pan_section(bool left, uint16_t y_start, uint16_t y_end, uint16_t x_start, uint16_t x_end);
-
#if defined(OLED_DISPLAY_128X128) || defined(OLED_DISPLAY_128X64)
# define OLED_DISPLAY_VERBOSE
-# define OLED_RENDER_KEYLOGGER "Keylogger: "
+# define OLED_RENDER_KEYLOGGER "Keylogger: "
# ifndef OLED_KEYLOGGER_LENGTH
-# define OLED_KEYLOGGER_LENGTH 9
+# define OLED_KEYLOGGER_LENGTH 9
# endif
-# define OLED_RENDER_LAYOUT_NAME "Layout: "
-# define OLED_RENDER_LAYOUT_QWERTY "Qwerty"
+# 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_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_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_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: "
+# define OLED_RENDER_WPM_COUNTER "WPM: "
#else
-# define OLED_RENDER_KEYLOGGER "KLogr"
+# define OLED_RENDER_KEYLOGGER "KLogr"
# ifndef OLED_KEYLOGGER_LENGTH
-# define OLED_KEYLOGGER_LENGTH 5
+# define OLED_KEYLOGGER_LENGTH 5
# endif
-# define OLED_RENDER_LAYOUT_NAME "Lyout"
-# define OLED_RENDER_LAYOUT_QWERTY " QRTY"
+# 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_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_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_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: "
+# define OLED_RENDER_WPM_COUNTER "WPM: "
#endif
-
-extern char keylog_str[OLED_KEYLOGGER_LENGTH];
+extern char keylog_str[OLED_KEYLOGGER_LENGTH];
#ifndef OLED_WPM_GRAPH_MAX_WPM
# define OLED_WPM_GRAPH_MAX_WPM 120
diff --git a/users/drashna/oled/sh110x.c b/users/drashna/oled/sh110x.c
index aa081ca732..9fed5a9d1a 100644
--- a/users/drashna/oled/sh110x.c
+++ b/users/drashna/oled/sh110x.c
@@ -52,7 +52,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define PAGE_ADDR 0x22
#define PAM_SETCOLUMN_LSB 0x00
#define PAM_SETCOLUMN_MSB 0x10
-#define PAM_PAGE_ADDR 0xB0 // 0xb0 -- 0xb7
+#define PAM_PAGE_ADDR 0xB0 // 0xb0 -- 0xb7
// Hardware Configuration Commands
#define DISPLAY_START_LINE 0x40
@@ -109,9 +109,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#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__)
+#else // defined(__AVR__)
# define I2C_TRANSMIT_P(data) i2c_transmit((OLED_DISPLAY_ADDRESS << 1), &data[0], sizeof(data), OLED_I2C_TIMEOUT)
-#endif // defined(__AVR__)
+#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)
@@ -122,7 +122,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// 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;
+uint8_t *oled_cursor;
OLED_BLOCK_TYPE oled_dirty = 0;
bool oled_initialized = false;
bool oled_active = false;
@@ -131,7 +131,7 @@ 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_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
@@ -261,8 +261,12 @@ bool oled_init(oled_rotation_t rotation) {
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; }
+__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));
@@ -299,9 +303,9 @@ static void calc_bounds_90(uint8_t update_start, uint8_t *cmd_array) {
// 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);
+ 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);
}
uint8_t crot(uint8_t a, int8_t n) {
@@ -339,9 +343,9 @@ void oled_render(void) {
// Set column & page position
static uint8_t display_start[] = {I2C_CMD, PAM_PAGE_ADDR, PAM_SETCOLUMN_LSB, PAM_SETCOLUMN_MSB};
if (!HAS_FLAGS(oled_rotation, OLED_ROTATION_90)) {
- calc_bounds(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start
+ 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
+ calc_bounds_90(update_start, &display_start[1]); // Offset from I2C_CMD byte at the start
}
// Send column & page position
@@ -369,7 +373,7 @@ void oled_render(void) {
// 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;
+ 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) {
@@ -414,7 +418,8 @@ void oled_advance_page(bool clearPageRemainder) {
remaining = remaining / OLED_FONT_WIDTH;
// Write empty character until next line
- while (remaining--) oled_write_char(' ', false);
+ while (remaining--)
+ oled_write_char(' ', false);
} else {
// Next page index out of bounds?
if (index + remaining >= OLED_MATRIX_SIZE) {
@@ -465,7 +470,7 @@ void oled_write_char(const char data, bool invert) {
_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
+ 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 {
@@ -610,7 +615,7 @@ void oled_write_raw_P(const char *data, uint16_t size) {
oled_dirty |= ((OLED_BLOCK_TYPE)1 << (i / OLED_BLOCK_SIZE));
}
}
-#endif // defined(__AVR__)
+#endif // defined(__AVR__)
bool oled_on(void) {
if (!oled_initialized) {
@@ -660,7 +665,9 @@ bool oled_off(void) {
return !oled_active;
}
-bool is_oled_on(void) { return oled_active; }
+bool is_oled_on(void) {
+ return oled_active;
+}
uint8_t oled_set_brightness(uint8_t level) {
if (!oled_initialized) {
@@ -678,7 +685,9 @@ uint8_t oled_set_brightness(uint8_t level) {
return oled_brightness;
}
-uint8_t oled_get_brightness(void) { 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
@@ -758,7 +767,9 @@ bool oled_scroll_off(void) {
return !oled_scrolling;
}
-bool is_oled_scrolling(void) { return oled_scrolling; }
+bool is_oled_scrolling(void) {
+ return oled_scrolling;
+}
bool oled_invert(bool invert) {
if (!oled_initialized) {
@@ -842,6 +853,9 @@ void oled_task(void) {
#endif
}
-
-__attribute__((weak)) bool oled_task_kb(void) { return oled_task_user(); }
-__attribute__((weak)) bool oled_task_user(void) { return true; }
+__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/pointing/pointing.c b/users/drashna/pointing/pointing.c
index 551034ff45..c9a7945a84 100644
--- a/users/drashna/pointing/pointing.c
+++ b/users/drashna/pointing/pointing.c
@@ -22,7 +22,7 @@ __attribute__((weak)) report_mouse_t pointing_device_task_keymap(report_mouse_t
}
report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
- int8_t x = mouse_report.x, y = mouse_report.y;
+ mouse_xy_report_t x = mouse_report.x, y = mouse_report.y;
mouse_report.x = 0;
mouse_report.y = 0;
@@ -33,8 +33,8 @@ report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
#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);
+ x = (mouse_xy_report_t)(x > 0 ? x * x / 16 + x : -x * x / 16 + x);
+ y = (mouse_xy_report_t)(y > 0 ? y * y / 16 + y : -y * y / 16 + y);
}
mouse_report.x = x;
mouse_report.y = y;
diff --git a/users/drashna/post_config.h b/users/drashna/post_config.h
index 2d5e6438d6..ec9aa49462 100644
--- a/users/drashna/post_config.h
+++ b/users/drashna/post_config.h
@@ -37,10 +37,6 @@
# define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_REST_MODE
#endif
-#ifndef QMK_KEYS_PER_SCAN
-# define QMK_KEYS_PER_SCAN 8
-#endif
-
#ifdef MOUSEKEY_ENABLE
// mouse movement config
# ifdef MK_3_SPEED
@@ -117,13 +113,17 @@
# endif
#endif // MOUSEKEY_ENABLE
-#if !defined(LAYER_STATE_16BIT) && !defined(LAYER_STATE_8BIT) && !defined(LAYER_STATE_32BIT)
-# define LAYER_STATE_16BIT
-#endif
-#ifndef DYNAMIC_KEYMAP_LAYER_COUNT
-# define DYNAMIC_KEYMAP_LAYER_COUNT 11
-#endif
+#define MOUSE_EXTENDED_REPORT
#ifndef TAPPING_TERM
# define TAPPING_TERM 175
#endif
+
+#ifndef SECURE_UNLOCK_SEQUENCE
+# define SECURE_UNLOCK_SEQUENCE \
+ { \
+ {2, 1}, {2, 2}, {2, 3}, { \
+ 2, 4 \
+ } \
+ }
+#endif
diff --git a/users/drashna/rgb/rgb_matrix_config.h b/users/drashna/rgb/rgb_matrix_config.h
new file mode 100644
index 0000000000..33979a198e
--- /dev/null
+++ b/users/drashna/rgb/rgb_matrix_config.h
@@ -0,0 +1,107 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#define RGB_MATRIX_KEYPRESSES // reacts to keypresses (will slow down matrix scan by a lot)
+// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (not recommened)
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+// # 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
+
+#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_RAIN
+#undef ENABLE_RGB_MATRIX_PIXEL_FLOW
+#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+#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
+
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#if !defined(SPLIT_KEYBOARD) && !defined(KEYBOARD_ergodox_ez) && !defined(KEYBOARD_moonlander)
+# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#endif
+#if defined(__arm__) || defined(__AVR_AT90USB1286__) || defined(KEYBOARD_launchpad)
+// 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_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_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_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 // AVR
diff --git a/users/drashna/rgb/rgb_matrix_stuff.c b/users/drashna/rgb/rgb_matrix_stuff.c
index 36a7502733..2c23c29784 100644
--- a/users/drashna/rgb/rgb_matrix_stuff.c
+++ b/users/drashna/rgb/rgb_matrix_stuff.c
@@ -15,7 +15,7 @@ void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode
}
switch (mode) {
- case 1: // breathing
+ case 1: // breathing
{
uint16_t time = scale16by8(g_rgb_timer, speed / 8);
hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
@@ -27,7 +27,7 @@ void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode
}
break;
}
- default: // Solid Color
+ default: // Solid Color
{
RGB rgb = hsv_to_rgb(hsv);
for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
@@ -59,6 +59,8 @@ void keyboard_post_init_rgb_matrix(void) {
#endif
if (userspace_config.rgb_layer_change) {
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW | LED_FLAG_KEYLIGHT | LED_FLAG_INDICATOR);
+ } else {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
}
}
@@ -70,7 +72,7 @@ bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) {
}
#endif
switch (keycode) {
- case RGB_IDL: // This allows me to use underglow as layer indication, or as normal
+ 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;
@@ -86,9 +88,13 @@ bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) {
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; }
+__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)
@@ -96,19 +102,7 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min,
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;
+ switch (get_highest_layer(layer_state & ~((layer_state_t)1 << _MOUSE))) {
case _GAMEPAD:
rgb_matrix_layer_helper(HSV_ORANGE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
break;
@@ -124,9 +118,33 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min,
case _ADJUST:
rgb_matrix_layer_helper(HSV_RED, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
break;
+ default:
+ if (layer_state_is(_MOUSE)) {
+ rgb_matrix_layer_helper(HSV_PURPLE, 1, rgb_matrix_config.speed, LED_FLAG_MODIFIER, led_min, led_max);
+ } else {
+ 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;
}
}
}
-__attribute__((weak)) bool rgb_matrix_indicators_keymap(void) { return true; }
-void rgb_matrix_indicators_user(void) { rgb_matrix_indicators_keymap(); }
+__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_stuff.c b/users/drashna/rgb/rgb_stuff.c
index 7d2cf0c73d..c283e58d26 100644
--- a/users/drashna/rgb/rgb_stuff.c
+++ b/users/drashna/rgb/rgb_stuff.c
@@ -1,28 +1,30 @@
// 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"
+#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_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; }
+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;
+#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;
uint32_t rgb_startup_animation(uint32_t triger_time, void *cb_arg) {
@@ -44,10 +46,10 @@ uint32_t rgb_startup_animation(uint32_t triger_time, void *cb_arg) {
}
return is_rgblight_startup ? 10 : 0;
}
-# endif
+#endif
void keyboard_post_init_rgb_light(void) {
-# if defined(RGBLIGHT_STARTUP_ANIMATION)
+#if defined(RGBLIGHT_STARTUP_ANIMATION)
is_enabled = rgblight_is_enabled();
if (userspace_config.rgb_layer_change) {
layer_state_set_rgb_light(layer_state);
@@ -56,27 +58,17 @@ void keyboard_post_init_rgb_light(void) {
old_mode = rgblight_get_mode();
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
is_rgblight_startup = true;
- rgb_startup_token = defer_exec(300, rgb_startup_animation, NULL);
-# endif
+ rgb_startup_token = defer_exec(300, rgb_startup_animation, NULL);
+#endif
if (userspace_config.rgb_layer_change) {
layer_state_set_rgb_light(layer_state);
}
-
}
layer_state_t layer_state_set_rgb_light(layer_state_t state) {
-# ifdef RGBLIGHT_ENABLE
+#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;
+ switch (get_highest_layer(state & ~((layer_state_t)1 << _MOUSE))) {
case _MEDIA:
rgblight_set_hsv_and_mode(HSV_CHARTREUSE, RGBLIGHT_MODE_KNIGHT + 1);
break;
@@ -84,6 +76,7 @@ layer_state_t layer_state_set_rgb_light(layer_state_t state) {
rgblight_set_hsv_and_mode(HSV_ORANGE, RGBLIGHT_MODE_SNAKE + 2);
break;
case _DIABLO:
+ case _DIABLOII:
rgblight_set_hsv_and_mode(HSV_RED, RGBLIGHT_MODE_BREATHING + 3);
break;
case _RAISE:
@@ -95,23 +88,36 @@ layer_state_t layer_state_set_rgb_light(layer_state_t state) {
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;
+ default:
+ if (layer_state_cmp(state, _MOUSE)) {
+# 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
+ } else {
+ default_layer_state_set_rgb_light(default_layer_state);
+ }
}
+#endif // RGBLIGHT_ENABLE
}
-# endif // RGBLIGHT_ENABLE
-
return state;
}
-#endif
+layer_state_t default_layer_state_set_rgb_light(layer_state_t state) {
+ switch (get_highest_layer(state)) {
+ 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;
+ }
+ return state;
+}
diff --git a/users/drashna/rgb/rgblight_config.h b/users/drashna/rgb/rgblight_config.h
new file mode 100644
index 0000000000..bb2bc3b3ef
--- /dev/null
+++ b/users/drashna/rgb/rgblight_config.h
@@ -0,0 +1,8 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+# define RGBLIGHT_SLEEP
+# define RGBLIGHT_EFFECT_TWINKLE_LIFE 250
+# define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1 / 24
diff --git a/users/drashna/rules.mk b/users/drashna/rules.mk
index b96e8a532b..5644aad2c4 100644
--- a/users/drashna/rules.mk
+++ b/users/drashna/rules.mk
@@ -3,6 +3,8 @@ SRC += $(USER_PATH)/drashna.c \
$(USER_PATH)/keyrecords/process_records.c \
$(USER_PATH)/keyrecords/tapping.c
+# TOP_SYMBOLS = yes
+
ifneq ($(PLATFORM),CHIBIOS)
ifneq ($(strip $(LTO_SUPPORTED)), no)
LTO_ENABLE = yes
@@ -15,6 +17,7 @@ GRAVE_ESC_ENABLE = no
ifneq ($(strip $(NO_SECRETS)), yes)
ifneq ("$(wildcard $(USER_PATH)/../../../qmk_secrets/secrets.c)","")
SRC += $(USER_PATH)/../../../qmk_secrets/secrets.c
+ $(shell touch $(USER_PATH)/../../../qmk_secrets/secrets.c)
SECURE_ENABLE = yes
endif
ifeq ($(strip $(NO_SECRETS)), lite)
@@ -33,6 +36,10 @@ ifeq ($(strip $(PROTOCOL)), VUSB)
NKRO_ENABLE := no
endif
+ifeq ($(strip $(PER_KEY_TAPPING)), yes)
+ OPT_DEFS += -DPER_KEY_TAPPING
+endif
+
CUSTOM_UNICODE_ENABLE ?= yes
ifeq ($(strip $(CUSTOM_UNICODE_ENABLE)), yes)
UNICODE_ENABLE := no
@@ -80,6 +87,11 @@ ifdef CONSOLE_ENABLE
endif
endif
+ifeq ($(strip $(I2C_SCANNER_ENABLE)), yes)
+ OPT_DEFS += -DI2C_SCANNER_ENABLE
+ CONSOLE_ENABLE := yes
+endif
+
CUSTOM_OLED_DRIVER ?= yes
ifeq ($(strip $(OLED_ENABLE)), yes)
ifeq ($(strip $(OLED_DRIVER)), custom)
@@ -103,7 +115,6 @@ ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
ifeq ($(strip $(CUSTOM_POINTING_DEVICE)), yes)
SRC += $(USER_PATH)/pointing/pointing.c
OPT_DEFS += -DCUSTOM_POINTING_DEVICE
- OPT_DEFS += -DMOUSE_EXT_REPORT
endif
endif
@@ -119,5 +130,10 @@ endif
AUTOCORRECTION_ENABLE ?= no
ifeq ($(strip $(AUTOCORRECTION_ENABLE)), yes)
SRC += $(USER_PATH)/keyrecords/autocorrection/autocorrection.c
+ $(shell touch $(USER_PATH)/keyrecords/autocorrection/autocorrection.c)
OPT_DEFS += -DAUTOCORRECTION_ENABLE
endif
+
+ifeq ($(strip $(BOOTMAGIC_ENABLE)), yes)
+ SRC += bootmagic_better.c
+endif
diff --git a/users/drashna/split/split_config.h b/users/drashna/split/split_config.h
new file mode 100644
index 0000000000..66c12392d9
--- /dev/null
+++ b/users/drashna/split/split_config.h
@@ -0,0 +1,21 @@
+// Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.com>
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+// # define SPLIT_TRANSPORT_MIRROR
+#define SPLIT_LAYER_STATE_ENABLE
+#define SPLIT_LED_STATE_ENABLE
+#define SPLIT_MODS_ENABLE
+#ifdef WPM_ENABLE
+# define SPLIT_WPM_ENABLE
+#endif
+#ifdef OLED_ENABLE
+# undef SPLIT_OLED_ENABLE
+#endif
+#if defined(__AVR__) && !defined(SELECT_SOFT_SERIAL_SPEED)
+# 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, RPC_ID_USER_WATCHDOG_SYNC, RPC_ID_USER_KEYLOG_STR
+#endif
diff --git a/users/drashna/split/transport_sync.c b/users/drashna/split/transport_sync.c
index 38df8fda3f..6b5c384480 100644
--- a/users/drashna/split/transport_sync.c
+++ b/users/drashna/split/transport_sync.c
@@ -4,9 +4,6 @@
#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"
@@ -18,6 +15,9 @@ extern unicode_config_t unicode_config;
extern audio_config_t audio_config;
extern bool delayed_tasks_run;
#endif
+#if defined(OLED_ENABLE) && !defined(SPLIT_OLED_ENABLE) && defined(CUSTOM_OLED_DRIVER)
+extern bool is_oled_enabled;
+#endif
#if defined(POINTING_DEVICE_ENABLE) && defined(KEYBOARD_handwired_tractyl_manuform)
extern bool tap_toggling;
#endif
@@ -55,7 +55,9 @@ void user_config_sync(uint8_t initiator2target_buffer_size, const void* initiato
}
#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; }
+void watchdog_handler(uint8_t in_buflen, const void* in_data, uint8_t out_buflen, void* out_data) {
+ watchdog_ping_done = true;
+}
#endif
#ifdef CUSTOM_OLED_DRIVER
@@ -93,11 +95,14 @@ void user_transport_update(void) {
user_state.audio_enable = is_audio_on();
user_state.audio_clicky_enable = is_clicky_on();
#endif
+#if defined(OLED_ENABLE) && !defined(SPLIT_OLED_ENABLE) && defined(CUSTOM_OLED_DRIVER)
+ user_state.is_oled_enabled = is_oled_enabled;
+#endif
#if defined(CUSTOM_POINTING_DEVICE)
user_state.tap_toggling = tap_toggling;
#endif
#ifdef UNICODE_COMMON_ENABLE
- user_state.unicode_mode = unicode_config.input_mode;
+ user_state.unicode_mode = unicode_config.input_mode;
user_state.unicode_typing_mode = typing_mode;
#endif
#ifdef SWAP_HANDS_ENABLE
@@ -112,7 +117,10 @@ void user_transport_update(void) {
user_state.raw = transport_user_state;
#ifdef UNICODE_COMMON_ENABLE
unicode_config.input_mode = user_state.unicode_mode;
- typing_mode = user_state.unicode_typing_mode;
+ typing_mode = user_state.unicode_typing_mode;
+#endif
+#if defined(OLED_ENABLE) && !defined(SPLIT_OLED_ENABLE) && defined(CUSTOM_OLED_DRIVER)
+ is_oled_enabled = user_state.is_oled_enabled;
#endif
#if defined(CUSTOM_POINTING_DEVICE)
tap_toggling = user_state.tap_toggling;
@@ -216,7 +224,7 @@ void user_transport_sync(void) {
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
+ watchdog_ping_done = true; // successful ping
} else {
dprint("Watchdog ping failed!\n");
}
@@ -224,7 +232,7 @@ void user_transport_sync(void) {
}
} else {
if (timer_elapsed32(watchdog_timer) > 3500) {
- software_reset();
+ mcu_reset();
while (1) {
}
}
@@ -233,7 +241,7 @@ void user_transport_sync(void) {
#endif
}
-void housekeeping_task_user(void) {
+void housekeeping_task_transport_sync(void) {
// Update kb_state so we can send to slave
user_transport_update();
diff --git a/users/drashna/split/transport_sync.h b/users/drashna/split/transport_sync.h
index 77e5140eda..8bfb49bf63 100644
--- a/users/drashna/split/transport_sync.h
+++ b/users/drashna/split/transport_sync.h
@@ -12,16 +12,18 @@ extern char keylog_str[OLED_KEYLOGGER_LENGTH];
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;
- uint8_t unicode_typing_mode :3;
+ 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;
+ uint8_t unicode_typing_mode :3;
+ bool is_oled_enabled :1;
};
} user_runtime_config_t;
extern user_runtime_config_t user_state;
void keyboard_post_init_transport_sync(void);
+void housekeeping_task_transport_sync(void);
diff --git a/users/dshields/dshields.h b/users/dshields/dshields.h
index 54268210c9..34544b0260 100644
--- a/users/dshields/dshields.h
+++ b/users/dshields/dshields.h
@@ -17,6 +17,14 @@
#define MT_SPC SFT_T(KC_SPC)
#define MT_BSPC SFT_T(KC_BSPC)
#define MT_ESC LGUI_T(KC_ESC)
+#define MT_A LGUI_T(KC_A)
+#define MT_S LALT_T(KC_S)
+#define MT_D LSFT_T(KC_D)
+#define MT_F LCTL_T(KC_F)
+#define MT_J RCTL_T(KC_J)
+#define MT_K RSFT_T(KC_K)
+#define MT_L RALT_T(KC_L)
+#define MT_SCLN RGUI_T(KC_SCLN)
// LED/RGB controls
#ifdef KEYBOARD_planck_light
diff --git a/users/edvorakjp/edvorakjp.c b/users/edvorakjp/edvorakjp.c
index c44d8bb440..c95b03d981 100644
--- a/users/edvorakjp/edvorakjp.c
+++ b/users/edvorakjp/edvorakjp.c
@@ -12,7 +12,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
return layer_state_set_keymap(state);
}
-__attribute__((weak)) uint32_t layer_state_set_keymap(uint32_t state) { return state; }
+__attribute__((weak)) layer_state_t layer_state_set_keymap(layer_state_t state) { return state; }
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
bool process_record_user_result = process_record_keymap(keycode, record) && process_record_edvorakjp_swap_scln(keycode, record) && process_record_edvorakjp_config(keycode, record) && process_record_layer(keycode, record) && process_record_ime(keycode, record);
diff --git a/users/edvorakjp/edvorakjp.h b/users/edvorakjp/edvorakjp.h
index 93cd9851b7..a878f71ca8 100644
--- a/users/edvorakjp/edvorakjp.h
+++ b/users/edvorakjp/edvorakjp.h
@@ -68,7 +68,7 @@ enum tap_dance_code {
void matrix_init_user(void);
void matrix_init_keymap(void);
layer_state_t layer_state_set_user(layer_state_t state);
-uint32_t layer_state_set_keymap(uint32_t state);
+layer_state_t layer_state_set_keymap(layer_state_t state);
bool process_record_user(uint16_t keycode, keyrecord_t *record);
bool process_record_keymap(uint16_t keycode, keyrecord_t *record);
diff --git a/users/edvorakjp/edvorakjp_tap_dance.c b/users/edvorakjp/edvorakjp_tap_dance.c
index cee10de693..69fcbac1ca 100644
--- a/users/edvorakjp/edvorakjp_tap_dance.c
+++ b/users/edvorakjp/edvorakjp_tap_dance.c
@@ -64,6 +64,15 @@ void td_raise_reset(qk_tap_dance_state_t *state, void *user_data) {
}
qk_tap_dance_action_t tap_dance_actions[] = {
- [TD_EDVORAKJP_LOWER] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_lower_finished, td_lower_reset, 150),
- [TD_EDVORAKJP_RAISE] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_raise_finished, td_raise_reset, 150),
+ [TD_EDVORAKJP_LOWER] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lower_finished, td_lower_reset),
+ [TD_EDVORAKJP_RAISE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_raise_finished, td_raise_reset),
};
+
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case QK_TAP_DANCE ... QK_TAP_DANCE_MAX:
+ return 150;
+ default:
+ return TAPPING_TERM;
+ }
+}
diff --git a/users/ericgebhart/ericgebhart.c b/users/ericgebhart/ericgebhart.c
index 2a34110ae2..a071fb8c2e 100755
--- a/users/ericgebhart/ericgebhart.c
+++ b/users/ericgebhart/ericgebhart.c
@@ -40,7 +40,7 @@ __attribute__ ((weak))
void matrix_scan_keymap(void) {}
__attribute__ ((weak))
-uint32_t layer_state_set_keymap (uint32_t state) {
+layer_state_t layer_state_set_keymap (layer_state_t state) {
return state;
}
diff --git a/users/ericgebhart/tap_dances.c b/users/ericgebhart/tap_dances.c
index 9f344986aa..8f9503a261 100755
--- a/users/ericgebhart/tap_dances.c
+++ b/users/ericgebhart/tap_dances.c
@@ -47,7 +47,7 @@ void tap_dance_mouse_btns (qk_tap_dance_state_t *state, void *user_data) {
// counting on all the qwerty layers to be less than dvorak_on_bepo
int on_qwerty(){
- uint8_t deflayer = (biton32(default_layer_state));
+ uint8_t deflayer = (get_highest_layer(default_layer_state));
return (deflayer < _DVORAK_BP);
}
@@ -58,7 +58,7 @@ static void switch_default_layer(uint8_t layer) {
// so the keyboard remembers which layer it's in after power disconnect.
/*
- uint32_t default_layer_state_set_kb(uint32_t state) {
+ layer_state_t default_layer_state_set_kb(layer_state_t state) {
eeconfig_update_default_layer(state);
return state;
}
diff --git a/users/gourdo1/autocorrect/autocorrection.c b/users/gourdo1/autocorrect/autocorrection.c
new file mode 100644
index 0000000000..bc711016d9
--- /dev/null
+++ b/users/gourdo1/autocorrect/autocorrection.c
@@ -0,0 +1,182 @@
+// 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/autocorrection
+
+#include "autocorrection.h"
+
+#include <string.h>
+#include "autocorrection_data.h"
+
+#if AUTOCORRECTION_MIN_LENGTH < 4
+// Odd output or hard locks on the board have been observed when the min typo
+// length is 3 or lower (https://github.com/getreuer/qmk-keymap/issues/2).
+// Additionally, autocorrection entries for short typos are more likely to false
+// trigger, so it is suggested that typos be at least 5 characters.
+#error "Min typo length is less than 4. Autocorrection may behave poorly."
+#endif
+
+bool process_autocorrection(uint16_t keycode, keyrecord_t* record) {
+ if (user_config.autocorrect) {
+ static uint8_t typo_buffer[AUTOCORRECTION_MAX_LENGTH] = {0};
+ static uint8_t typo_buffer_size = 0;
+
+ // Ignore key release; we only process key presses.
+ if (!record->event.pressed) { return true; }
+
+ #ifndef NO_ACTION_ONESHOT
+ const uint8_t mods = get_mods() | get_oneshot_mods();
+ #else
+ const uint8_t mods = get_mods();
+ #endif // NO_ACTION_ONESHOT
+ // Disable autocorrection while a mod other than shift is active.
+ if ((mods & ~MOD_MASK_SHIFT) != 0) {
+ typo_buffer_size = 0;
+ return true;
+ }
+
+ // The following switch cases address various kinds of keycodes. This logic is
+ // split over two switches rather than merged into one. The first switch may
+ // extract a basic keycode which is then further handled by the second switch,
+ // e.g. a layer-tap key with Caps Lock `LT(layer, KC_CAPS)`.
+ switch (keycode) {
+ #ifndef NO_ACTION_TAPPING
+ case QK_MOD_TAP ... QK_MOD_TAP_MAX: // Tap-hold keys.
+ #ifndef NO_ACTION_LAYER
+ case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
+ #endif // NO_ACTION_LAYER
+ // Ignore when tap-hold keys are held.
+ if (record->tap.count == 0) { return true; }
+ // Otherwise when tapped, get the basic keycode.
+ // Fallthrough intended.
+ #endif // NO_ACTION_TAPPING
+
+ // Handle shifted keys, e.g. symbols like KC_EXLM = S(KC_1).
+ case QK_LSFT ... QK_LSFT + 255:
+ case QK_RSFT ... QK_RSFT + 255:
+ keycode &= 0xff; // Get the basic keycode.
+ break;
+
+ // NOTE: Space Cadet keys expose no info to check whether they are being
+ // tapped vs. held. This makes autocorrection ambiguous, e.g. KC_LCPO might
+ // be '(', which we would treat as a word break, or it might be shift, which
+ // we would treat as having no effect. To behave cautiously, we allow Space
+ // Cadet keycodes to fall to the logic below and clear autocorrection state.
+ }
+
+ switch (keycode) {
+ // Ignore shifts, Caps Lock, one-shot mods, and layer switch keys.
+ case KC_NO:
+ case KC_LSFT:
+ case KC_RSFT:
+ case KC_CAPS:
+ case QK_ONE_SHOT_MOD ... QK_ONE_SHOT_MOD_MAX:
+ case QK_TO ... QK_TO_MAX:
+ case QK_MOMENTARY ... QK_MOMENTARY_MAX:
+ case QK_DEF_LAYER ... QK_DEF_LAYER_MAX:
+ case QK_TOGGLE_LAYER ... QK_TOGGLE_LAYER_MAX:
+ case QK_ONE_SHOT_LAYER ... QK_ONE_SHOT_LAYER_MAX:
+ case QK_LAYER_TAP_TOGGLE ... QK_LAYER_TAP_TOGGLE_MAX:
+ case QK_LAYER_MOD ... QK_LAYER_MOD_MAX:
+ return true; // Ignore these keys.
+ }
+
+ if (keycode == KC_QUOT) {
+ // Treat " (shifted ') as a word boundary.
+ if ((mods & MOD_MASK_SHIFT) != 0) { keycode = KC_SPC; }
+ } else 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) { typo_buffer_size = 0; }
+ keycode = KC_SPC;
+ } else {
+ // Clear state if some other non-alpha key is pressed.
+ typo_buffer_size = 0;
+ return true;
+ }
+ }
+
+ // If the buffer is full, rotate it to discard the oldest character.
+ 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 the buffer.
+ // NOTE: `keycode` must be a basic keycode (0-255) by this point.
+ typo_buffer[typo_buffer_size++] = (uint8_t) keycode;
+ // Early return if not many characters have been buffered so far.
+ if (typo_buffer_size < AUTOCORRECTION_MIN_LENGTH) { return true; }
+
+ // Check whether the buffer ends in a typo. This is done using a trie
+ // stored in `autocorrection_data`.
+ uint16_t state = 0;
+ uint8_t code = pgm_read_byte(autocorrection_data + state);
+ for (int i = typo_buffer_size - 1; i >= 0; --i) {
+ const uint8_t 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 = (uint16_t)(
+ (uint_fast16_t)pgm_read_byte(autocorrection_data + state + 1)
+ | (uint_fast16_t)pgm_read_byte(autocorrection_data + state + 2) << 8);
+ // Otherwise check for match in node with a single child.
+ } else if (code != key_i) {
+ return true;
+ } else if (!(code = pgm_read_byte(autocorrection_data + (++state)))) {
+ ++state;
+ }
+
+ // Stop if `state` becomes an invalid index. This should not normally
+ // happen, it is a safeguard in case of a bug, data corruption, etc.
+ if (state >= sizeof(autocorrection_data)) {
+ return true;
+ }
+
+ // Read first byte of the next node.
+ code = pgm_read_byte(autocorrection_data + state);
+
+ if (code & 128) { // A typo was found! Apply autocorrection.
+ const int backspaces = code & 63;
+ for (int 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;
+ }
+ return true;
+}
diff --git a/users/gourdo1/autocorrect/autocorrection.h b/users/gourdo1/autocorrect/autocorrection.h
new file mode 100644
index 0000000000..d344a815f7
--- /dev/null
+++ b/users/gourdo1/autocorrect/autocorrection.h
@@ -0,0 +1,40 @@
+// 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.
+//
+//
+// Autocorrection on your keyboard.
+//
+// This library implements rudimentary autocorrection, automatically detecting
+// and fixing some misspellings. Beware that the autocorrection logic is
+// unaware of hotkey or mouse-based cursor movement.
+//
+// For full documentation, see
+// https://getreuer.info/posts/keyboards/autocorrection
+
+#pragma once
+
+#include "quantum.h"
+
+#include "gourdo1.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+bool process_autocorrection(uint16_t keycode, keyrecord_t* record);
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/users/gourdo1/autocorrect/autocorrection_data.h b/users/gourdo1/autocorrect/autocorrection_data.h
new file mode 100644
index 0000000000..66518201e2
--- /dev/null
+++ b/users/gourdo1/autocorrect/autocorrection_data.h
@@ -0,0 +1,722 @@
+// Generated code.
+
+// Autocorrection dictionary (400 entries):
+// :acheiv -> achiev
+// :agian -> again
+// :agred -> agreed
+// :ajust -> adjust
+// :alot: -> a lot
+// :andteh -> and the
+// :andthe -> and the
+// :anual -> annual
+// :asign -> assign
+// :aslo: -> also
+// :asthe -> as the
+// :atthe -> at the
+// :casue -> cause
+// :choses -> chooses
+// :eveyr -> every
+// :foudn -> found
+// :gaurd -> guard
+// :goign -> going
+// :gonig -> going
+// :graet -> great
+// :grammer -> grammar
+// :guage -> gauge
+// :haev -> have
+// :hapen -> happen
+// :htere -> there
+// :htikn -> think
+// :htink -> think
+// :hwihc -> which
+// :hwile -> while
+// :idaes -> ideas
+// :jstu: -> just
+// :jsut: -> just
+// :knwo -> know
+// :konw -> know
+// :kwno -> know
+// :moeny -> money
+// :ocuntry -> country
+// :ocur -> occur
+// :olther -> other
+// :otehr -> other
+// :owudl -> would
+// :rference -> reference
+// :sicne -> since
+// :socre -> score
+// :szie -> size
+// :the:the: -> the
+// :theri -> their
+// :thier -> their
+// :thsoe -> those
+// :tothe -> to the
+// :ture -> true
+// :turth -> truth
+// :uesd: -> used
+// :usally -> usually
+// :yaers -> years
+// :yeasr -> years
+// abbout -> about
+// aberation -> aberration
+// abilties -> abilities
+// abilty -> ability
+// abotu -> about
+// abouta -> about a
+// aboutit -> about it
+// aboutthe -> about the
+// abvove -> above
+// accesories -> accessories
+// accomodate -> accommodate
+// accross -> across
+// acommodate -> accommodate
+// acomplish -> accomplish
+// actualy -> actually
+// acurate -> accurate
+// acutally -> actually
+// addtion -> addition
+// adviced -> advised
+// againnst -> against
+// aganist -> against
+// aggreed -> agreed
+// agianst -> against
+// ahppn -> happen
+// aledge -> allege
+// alledge -> allege
+// allign -> align
+// almsot -> almost
+// alomst -> almost
+// alwasy -> always
+// alwyas -> always
+// amature -> amateur
+// anohter -> another
+// anomolous -> anomalous
+// anomoly -> anomaly
+// anytying -> anything
+// aparent -> apparent
+// aparrent -> apparent
+// apparant -> apparent
+// apparrent -> apparent
+// aquire -> acquire
+// aroud -> around
+// arround -> around
+// arund -> around
+// asthetic -> aesthetic
+// auxilary -> auxiliary
+// auxillary -> auxiliary
+// auxilliary -> auxiliary
+// availabe -> available
+// availaible -> available
+// availalbe -> available
+// availble -> available
+// availiable -> available
+// avalable -> available
+// avaliable -> available
+// avilable -> available
+// baceause -> because
+// bandwith -> bandwidth
+// bankrupcy -> bankruptcy
+// baout -> about
+// beacuse -> because
+// becasue -> because
+// beccause -> because
+// becouse -> because
+// becuase -> because
+// bedore -> before
+// beeing -> being
+// befoer -> before
+// begginer -> beginner
+// beleif -> belief
+// beleive -> believe
+// belive -> believe
+// beteen -> between
+// beween -> between
+// bewteen -> between
+// breif -> brief
+// burried -> buried
+// busness -> business
+// bussiness -> business
+// cacheing -> caching
+// calander -> calendar
+// caluclate -> calculate
+// caluculate -> calculate
+// calulate -> calculate
+// catagory -> category
+// cauhgt -> caught
+// ceratin -> certain
+// certian -> certain
+// cheif -> chief
+// chekc -> check
+// childen -> children
+// chnage -> change
+// choosen -> chosen
+// cieling -> ceiling
+// circut -> circuit
+// claer -> clear
+// clasic -> classic
+// cmoputer -> computer
+// coform -> conform
+// cognizent -> cognizant
+// collegue -> colleague
+// comapny -> company
+// comittee -> committee
+// comming: -> coming
+// commitee -> committee
+// competance -> competence
+// competant -> competent
+// complier -> compiler
+// concensus -> consensus
+// considerd -> considered
+// contian -> contain
+// copywrite: -> copyright
+// cosnt -> const
+// coudl -> could
+// dervied -> derived
+// desicion -> decision
+// didnot -> did not
+// diferent -> different
+// diferrent -> different
+// differnt -> different
+// diffrent -> different
+// divison -> division
+// doulbe -> double
+// dyanmic -> dynamic
+// effecient -> efficient
+// elasped -> elapsed
+// eligable -> eligible
+// elpased -> elapsed
+// embarass -> embarrass
+// embeded -> embedded
+// encypt -> encrypt
+// excecut -> execut
+// excercise -> exercise
+// failse -> false
+// fales -> false
+// fasle -> false
+// feild -> field
+// finaly -> finally
+// firend -> friend
+// firts -> first
+// fitler -> filter
+// flase -> false
+// follwo -> follow
+// foriegn -> foreign
+// foward -> forward
+// fraciton -> fraction
+// freind -> friend
+// frequecy -> frequency
+// fromthe -> from the
+// fucntion -> function
+// fufill -> fulfill
+// fullfill -> fulfill
+// futher -> further
+// ganerate -> generate
+// garantee -> guarantee
+// gaurantee -> guarantee
+// generaly -> generally
+// govement -> government
+// govenment -> government
+// goverment -> government
+// governmnet -> government
+// govorment -> government
+// govornment -> government
+// greatful -> grateful
+// guaratee -> guarantee
+// heigher -> higher
+// heigth -> height
+// heirarchy -> hierarchy
+// higest -> highest
+// howver -> however
+// hydogen -> hydrogen
+// hygeine -> hygiene
+// hypocracy -> hypocrisy
+// hypocrasy -> hypocrisy
+// hypocricy -> hypocrisy
+// hypocrit: -> hypocrite
+// iamge -> image
+// importamt -> important
+// inclued -> include
+// indeces -> indices
+// indecies -> indices
+// indicies -> indices
+// inital -> initial
+// insted -> instead
+// interator -> iterator
+// intput -> input
+// intrest -> interest
+// invliad -> invalid
+// laguage -> language
+// largst -> largest
+// learnign -> learning
+// lenght -> length
+// levle -> level
+// liasion -> liaison
+// libary -> library
+// likly -> likely
+// lisense -> license
+// listner -> listener
+// littel -> little
+// looses: -> loses
+// looup -> lookup
+// macthing -> matching
+// maintence -> maintenance
+// manefist -> manifest
+// mesage -> message
+// morgage -> mortgage
+// mysefl -> myself
+// namesapce -> namespace
+// namespcae -> namespace
+// naturual -> natural
+// neccesary -> necessary
+// necesary -> necessary
+// nulltpr -> nullptr
+// occassion -> occasion
+// occured -> occurred
+// operaotr -> operator
+// ouptut -> output
+// ouput -> output
+// overide -> override
+// ovveride -> override
+// pallete -> palette
+// paralel -> parallel
+// parralel -> parallel
+// parrallel -> parallel
+// particualr -> particular
+// paticular -> particular
+// peaple -> people
+// peice -> piece
+// peolpe -> people
+// peopel -> people
+// perhasp -> perhaps
+// perheaps -> perhaps
+// perhpas -> perhaps
+// perphas -> perhaps
+// persue -> pursue
+// poeople -> people
+// poeple -> people
+// poitner -> pointer
+// posess -> possess
+// postion -> position
+// preiod -> period
+// primarly -> primarily
+// priviledge -> privilege
+// privte -> private
+// probablly -> probably
+// probaly -> probably
+// probelm -> problem
+// proccess -> process
+// proeprty -> property
+// prominant -> prominent
+// proove -> prove
+// propery -> property
+// propogate -> propagate
+// psuedo -> pseudo
+// raelly -> really
+// realtion -> relation
+// realy -> really
+// reasearch -> research
+// receiev -> receiv
+// recepient -> recipient
+// reciept -> receipt
+// reciev -> receiv
+// recipiant -> recipient
+// recrod -> record
+// recuring -> recurring
+// referece -> reference
+// refered -> referred
+// regluar -> regular
+// relaly -> really
+// releated -> related
+// relevent -> relevant
+// repitition -> repetition
+// reponse -> response
+// reprot -> report
+// resutl -> result
+// retrun -> return
+// retun -> return
+// reuslt -> result
+// reutrn -> return
+// reveiw -> review
+// saftey -> safety
+// safty -> safety
+// satisifed -> satisfied
+// scheduel -> schedule
+// seperat -> separat
+// sequnce -> sequence
+// shoudl -> should
+// similiar -> similar
+// simmilar -> similar
+// singed -> signed
+// singel -> single
+// slighly -> slightly
+// somehwat -> somewhat
+// spectogram -> spectrogram
+// statment -> statement
+// stirng -> string
+// stregth -> strength
+// strengh -> strength
+// strign -> string
+// succsess -> success
+// sucess -> success
+// sugest -> suggest
+// sumary -> summary
+// supress -> suppress
+// surpress -> suppress
+// swithc -> switch
+// swtich -> switch
+// symetric -> symmetric
+// teamplate -> template
+// tempalte -> template
+// theese -> these
+// therfore -> therefore
+// thign -> thing
+// thigsn -> things
+// thikn -> think
+// thiunk -> think
+// thnigs -> things
+// thresold -> threshold
+// throught -> thought
+// tihkn -> think
+// tkaes -> takes
+// todya -> today
+// toghether -> together
+// tolerence -> tolerance
+// tongiht -> tonight
+// tranpose -> transpose
+// typcial -> typical
+// udpate -> update
+// unkown -> unknown
+// unqiue -> unique
+// ususally -> usually
+// verticies -> vertices
+// virutal -> virtual
+// vitual -> virtual
+// whcih -> which
+// whereever -> wherever
+// wherre -> where
+// whihc -> which
+// whlch -> which
+// widht -> width
+// wierd -> weird
+// wihch -> which
+// woudl -> would
+// yeild -> yield
+
+#define AUTOCORRECTION_MIN_LENGTH 5 // "abotu"
+#define AUTOCORRECTION_MAX_LENGTH 10 // "auxilliary"
+
+static const uint8_t autocorrection_data[5967] PROGMEM = {108, 67, 0, 4, 212, 0,
+ 6, 236, 0, 7, 100, 1, 8, 15, 3, 9, 169, 8, 10, 204, 8, 11, 68, 9, 12, 246, 9,
+ 14, 0, 10, 15, 28, 10, 16, 79, 11, 17, 129, 11, 18, 175, 13, 19, 227, 13, 21,
+ 253, 13, 22, 194, 15, 23, 121, 17, 24, 201, 20, 25, 210, 20, 26, 8, 21, 28,
+ 34, 21, 0, 71, 89, 0, 8, 99, 0, 10, 130, 0, 18, 142, 0, 22, 152, 0, 23, 163,
+ 0, 24, 202, 0, 0, 22, 8, 24, 44, 0, 131, 115, 101, 100, 0, 75, 106, 0, 23,
+ 115, 0, 0, 23, 44, 8, 11, 23, 44, 0, 132, 0, 12, 21, 26, 28, 19, 18, 6, 0,
+ 133, 114, 105, 103, 104, 116, 0, 17, 12, 16, 16, 18, 6, 0, 132, 105, 110, 103,
+ 0, 15, 22, 4, 44, 0, 131, 108, 115, 111, 0, 8, 22, 18, 18, 15, 0, 132, 115,
+ 101, 115, 0, 76, 173, 0, 18, 183, 0, 24, 193, 0, 0, 21, 6, 18, 19, 28, 11, 0,
+ 128, 101, 0, 15, 4, 44, 0, 131, 32, 108, 111, 116, 0, 22, 13, 44, 0, 131, 117,
+ 115, 116, 0, 23, 22, 13, 44, 0, 131, 117, 115, 116, 0, 87, 219, 0, 28, 228, 0,
+ 0, 24, 18, 5, 4, 0, 128, 32, 97, 0, 7, 18, 23, 0, 129, 97, 121, 0, 75, 246, 0,
+ 12, 28, 1, 14, 92, 1, 0, 76, 253, 0, 23, 20, 1, 0, 75, 4, 1, 26, 10, 1, 0, 26,
+ 0, 129, 99, 104, 0, 11, 44, 0, 132, 119, 104, 105, 99, 104, 0, 12, 26, 22, 0,
+ 129, 99, 104, 0, 80, 41, 1, 21, 53, 1, 22, 67, 1, 23, 76, 1, 0, 17, 4, 28, 7,
+ 0, 132, 110, 97, 109, 105, 99, 0, 23, 8, 16, 28, 22, 0, 132, 109, 101, 116,
+ 114, 105, 99, 0, 4, 15, 6, 0, 129, 115, 105, 99, 0, 8, 11, 23, 22, 4, 0, 134,
+ 101, 115, 116, 104, 101, 116, 105, 99, 0, 8, 11, 6, 0, 129, 99, 107, 0, 68,
+ 122, 1, 8, 134, 1, 15, 84, 2, 17, 124, 2, 18, 180, 2, 21, 207, 2, 24, 7, 3, 0,
+ 12, 15, 25, 17, 12, 0, 131, 97, 108, 105, 100, 0, 70, 168, 1, 7, 178, 1, 8,
+ 188, 1, 9, 199, 1, 10, 212, 1, 12, 222, 1, 19, 248, 1, 21, 3, 2, 22, 38, 2,
+ 23, 50, 2, 24, 75, 2, 0, 12, 25, 7, 4, 0, 130, 115, 101, 100, 0, 8, 5, 16, 8,
+ 0, 129, 100, 101, 100, 0, 21, 10, 10, 4, 0, 132, 114, 101, 101, 100, 0, 12,
+ 22, 12, 23, 4, 22, 0, 131, 102, 105, 101, 100, 0, 17, 12, 22, 0, 131, 103,
+ 110, 101, 100, 0, 85, 229, 1, 25, 238, 1, 0, 21, 24, 5, 0, 131, 105, 101, 100,
+ 0, 21, 8, 7, 0, 131, 105, 118, 101, 100, 0, 22, 4, 15, 8, 0, 131, 112, 115,
+ 101, 100, 0, 72, 13, 2, 10, 22, 2, 24, 29, 2, 0, 9, 8, 21, 0, 129, 114, 101,
+ 100, 0, 4, 44, 0, 128, 101, 100, 0, 6, 6, 18, 0, 129, 114, 101, 100, 0, 4, 19,
+ 15, 8, 0, 132, 97, 112, 115, 101, 100, 0, 68, 57, 2, 22, 68, 2, 0, 8, 15, 8,
+ 21, 0, 132, 97, 116, 101, 100, 0, 17, 12, 0, 128, 97, 100, 0, 15, 6, 17, 12,
+ 0, 129, 100, 101, 0, 76, 91, 2, 18, 112, 2, 0, 8, 0, 73, 100, 2, 28, 106, 2,
+ 0, 131, 105, 101, 108, 100, 0, 131, 105, 101, 108, 100, 0, 22, 8, 21, 11, 23,
+ 0, 130, 104, 111, 108, 100, 0, 72, 134, 2, 12, 145, 2, 24, 155, 2, 0, 21, 12,
+ 9, 0, 132, 114, 105, 101, 110, 100, 0, 8, 21, 9, 0, 131, 105, 101, 110, 100,
+ 0, 82, 162, 2, 21, 172, 2, 0, 21, 21, 4, 0, 132, 111, 117, 110, 100, 0, 4, 0,
+ 130, 111, 117, 110, 100, 0, 76, 187, 2, 21, 198, 2, 0, 8, 21, 19, 0, 132, 101,
+ 114, 105, 111, 100, 0, 6, 8, 21, 0, 130, 111, 114, 100, 0, 68, 217, 2, 8, 228,
+ 2, 24, 253, 2, 0, 26, 18, 9, 0, 131, 114, 119, 97, 114, 100, 0, 71, 235, 2,
+ 12, 245, 2, 0, 12, 22, 17, 18, 6, 0, 128, 101, 100, 0, 26, 0, 131, 101, 105,
+ 114, 100, 0, 4, 10, 44, 0, 131, 117, 97, 114, 100, 0, 18, 21, 4, 0, 128, 110,
+ 100, 0, 68, 67, 3, 5, 80, 3, 6, 123, 3, 7, 251, 3, 8, 23, 4, 10, 107, 4, 11,
+ 227, 4, 12, 52, 5, 15, 61, 5, 17, 0, 6, 18, 27, 6, 19, 37, 6, 21, 47, 6, 22,
+ 156, 6, 23, 82, 7, 24, 45, 8, 25, 115, 8, 0, 6, 19, 22, 8, 16, 4, 17, 0, 130,
+ 97, 99, 101, 0, 68, 87, 3, 15, 97, 3, 0, 15, 12, 4, 25, 4, 0, 128, 108, 101,
+ 0, 68, 104, 3, 24, 115, 3, 0, 15, 12, 4, 25, 4, 0, 130, 98, 108, 101, 0, 18,
+ 7, 0, 130, 98, 108, 101, 0, 72, 136, 3, 12, 147, 3, 17, 156, 3, 19, 238, 3, 0,
+ 21, 8, 9, 8, 21, 0, 129, 110, 99, 101, 0, 8, 19, 0, 131, 105, 101, 99, 101, 0,
+ 68, 166, 3, 8, 179, 3, 24, 228, 3, 0, 23, 8, 19, 16, 18, 6, 0, 131, 101, 110,
+ 99, 101, 0, 85, 186, 3, 23, 217, 3, 0, 8, 0, 73, 195, 3, 15, 208, 3, 0, 21,
+ 44, 0, 134, 101, 102, 101, 114, 101, 110, 99, 101, 0, 18, 23, 0, 131, 97, 110,
+ 99, 101, 0, 17, 12, 4, 16, 0, 129, 97, 110, 99, 101, 0, 20, 8, 22, 0, 130,
+ 101, 110, 99, 101, 0, 4, 22, 8, 16, 4, 17, 0, 131, 112, 97, 99, 101, 0, 12,
+ 21, 8, 25, 0, 82, 7, 4, 25, 13, 4, 0, 130, 114, 105, 100, 101, 0, 18, 0, 133,
+ 101, 114, 114, 105, 100, 101, 0, 23, 0, 68, 38, 4, 12, 49, 4, 17, 59, 4, 23,
+ 94, 4, 0, 21, 4, 24, 10, 0, 130, 110, 116, 101, 101, 0, 16, 16, 18, 6, 0, 129,
+ 116, 101, 101, 0, 4, 21, 0, 68, 69, 4, 24, 81, 4, 0, 10, 0, 134, 117, 97, 114,
+ 97, 110, 116, 101, 101, 0, 4, 10, 0, 135, 117, 97, 114, 97, 110, 116, 101,
+ 101, 0, 12, 16, 18, 6, 0, 132, 109, 105, 116, 116, 101, 101, 0, 68, 117, 4, 7,
+ 184, 4, 16, 218, 4, 0, 74, 130, 4, 17, 141, 4, 22, 150, 4, 24, 159, 4, 0, 21,
+ 18, 16, 0, 131, 116, 103, 97, 103, 101, 0, 11, 6, 0, 131, 97, 110, 103, 101,
+ 0, 8, 16, 0, 130, 115, 97, 103, 101, 0, 10, 0, 108, 168, 4, 4, 174, 4, 0, 131,
+ 97, 117, 103, 101, 0, 15, 0, 132, 110, 103, 117, 97, 103, 101, 0, 8, 15, 0,
+ 68, 197, 4, 12, 203, 4, 15, 212, 4, 0, 131, 108, 101, 103, 101, 0, 25, 12, 21,
+ 19, 0, 130, 103, 101, 0, 4, 0, 130, 103, 101, 0, 4, 12, 0, 131, 109, 97, 103,
+ 101, 0, 23, 0, 71, 245, 4, 16, 255, 4, 18, 9, 5, 22, 18, 5, 23, 27, 5, 0, 17,
+ 4, 44, 0, 130, 32, 116, 104, 101, 0, 18, 21, 9, 0, 130, 32, 116, 104, 101, 0,
+ 23, 44, 0, 130, 32, 116, 104, 101, 0, 4, 44, 0, 130, 32, 116, 104, 101, 0, 68,
+ 34, 5, 24, 42, 5, 0, 44, 0, 130, 32, 116, 104, 101, 0, 18, 5, 4, 0, 130, 32,
+ 116, 104, 101, 0, 29, 22, 44, 0, 130, 105, 122, 101, 0, 69, 77, 5, 12, 190, 5,
+ 19, 201, 5, 22, 241, 5, 25, 249, 5, 0, 68, 87, 5, 12, 167, 5, 15, 179, 5, 0,
+ 74, 97, 5, 12, 107, 5, 15, 137, 5, 0, 12, 15, 8, 0, 131, 105, 98, 108, 101, 0,
+ 15, 0, 68, 116, 5, 12, 127, 5, 0, 25, 4, 0, 133, 105, 108, 97, 98, 108, 101,
+ 0, 4, 25, 4, 0, 132, 97, 98, 108, 101, 0, 68, 144, 5, 12, 155, 5, 0, 25, 4, 0,
+ 132, 105, 108, 97, 98, 108, 101, 0, 25, 4, 0, 133, 97, 105, 108, 97, 98, 108,
+ 101, 0, 4, 15, 12, 4, 25, 4, 0, 131, 98, 108, 101, 0, 12, 4, 25, 4, 0, 130,
+ 97, 98, 108, 101, 0, 26, 11, 44, 0, 132, 119, 104, 105, 108, 101, 0, 68, 211,
+ 5, 8, 220, 5, 18, 230, 5, 0, 8, 19, 0, 131, 111, 112, 108, 101, 0, 18, 19, 0,
+ 132, 101, 111, 112, 108, 101, 0, 8, 18, 19, 0, 133, 101, 111, 112, 108, 101,
+ 0, 4, 9, 0, 130, 108, 115, 101, 0, 8, 15, 0, 129, 101, 108, 0, 70, 7, 6, 12,
+ 16, 6, 0, 12, 22, 44, 0, 130, 110, 99, 101, 0, 8, 10, 28, 11, 0, 131, 105,
+ 101, 110, 101, 0, 22, 11, 23, 44, 0, 130, 111, 115, 101, 0, 15, 18, 8, 19, 0,
+ 130, 112, 108, 101, 0, 70, 66, 6, 8, 76, 6, 12, 87, 6, 18, 99, 6, 21, 127, 6,
+ 24, 134, 6, 0, 18, 22, 44, 0, 131, 99, 111, 114, 101, 0, 23, 11, 44, 0, 132,
+ 116, 104, 101, 114, 101, 0, 24, 20, 4, 0, 132, 99, 113, 117, 105, 114, 101, 0,
+ 71, 106, 6, 9, 115, 6, 0, 8, 5, 0, 131, 102, 111, 114, 101, 0, 21, 8, 11, 23,
+ 0, 131, 101, 102, 111, 114, 101, 0, 8, 11, 26, 0, 129, 101, 0, 23, 0, 108,
+ 143, 6, 4, 148, 6, 0, 130, 114, 117, 101, 0, 16, 4, 0, 130, 101, 117, 114, 0,
+ 68, 178, 6, 8, 203, 6, 12, 211, 6, 15, 226, 6, 17, 235, 6, 18, 9, 7, 24, 22,
+ 7, 0, 79, 185, 6, 24, 193, 6, 0, 9, 0, 131, 97, 108, 115, 101, 0, 6, 8, 5, 0,
+ 131, 97, 117, 115, 101, 0, 8, 11, 23, 0, 130, 115, 101, 0, 6, 21, 8, 6, 27, 8,
+ 0, 134, 101, 114, 99, 105, 115, 101, 0, 12, 4, 9, 0, 131, 108, 115, 101, 0,
+ 72, 242, 6, 18, 253, 6, 0, 22, 12, 15, 0, 132, 99, 101, 110, 115, 101, 0, 19,
+ 8, 21, 0, 132, 115, 112, 111, 110, 115, 101, 0, 19, 17, 4, 21, 23, 0, 131,
+ 115, 112, 111, 115, 101, 0, 68, 32, 7, 6, 61, 7, 18, 72, 7, 0, 70, 39, 7, 8,
+ 49, 7, 0, 6, 8, 5, 0, 132, 97, 117, 115, 101, 0, 6, 4, 5, 0, 134, 101, 99, 97,
+ 117, 115, 101, 0, 4, 8, 5, 0, 132, 99, 97, 117, 115, 101, 0, 6, 8, 5, 0, 131,
+ 97, 117, 115, 101, 0, 68, 95, 7, 8, 13, 8, 15, 24, 8, 25, 36, 8, 0, 71, 111,
+ 7, 10, 148, 7, 15, 161, 7, 19, 228, 7, 21, 238, 7, 0, 18, 16, 0, 80, 121, 7,
+ 18, 136, 7, 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, 18, 19, 18, 21, 19, 0, 132,
+ 97, 103, 97, 116, 101, 0, 70, 171, 7, 19, 184, 7, 24, 197, 7, 0, 24, 15, 4, 6,
+ 0, 133, 99, 117, 108, 97, 116, 101, 0, 16, 4, 8, 23, 0, 134, 109, 112, 108,
+ 97, 116, 101, 0, 70, 204, 7, 15, 217, 7, 0, 24, 15, 4, 6, 0, 134, 99, 117,
+ 108, 97, 116, 101, 0, 4, 6, 0, 132, 99, 117, 108, 97, 116, 101, 0, 7, 24, 0,
+ 132, 112, 100, 97, 116, 101, 0, 72, 245, 7, 24, 2, 8, 0, 17, 4, 10, 0, 134,
+ 101, 110, 101, 114, 97, 116, 101, 0, 6, 4, 0, 132, 99, 117, 114, 97, 116, 101,
+ 0, 15, 15, 4, 19, 0, 131, 101, 116, 116, 101, 0, 4, 19, 16, 8, 23, 0, 131,
+ 108, 97, 116, 101, 0, 12, 21, 19, 0, 129, 97, 116, 101, 0, 74, 55, 8, 12, 67,
+ 8, 22, 77, 8, 0, 8, 15, 15, 18, 6, 0, 130, 97, 103, 117, 101, 0, 20, 17, 24,
+ 0, 131, 105, 113, 117, 101, 0, 68, 84, 8, 21, 105, 8, 0, 6, 0, 108, 93, 8, 8,
+ 98, 8, 0, 130, 117, 115, 101, 0, 5, 0, 130, 117, 115, 101, 0, 8, 19, 0, 132,
+ 117, 114, 115, 117, 101, 0, 76, 122, 8, 18, 147, 8, 0, 72, 129, 8, 15, 139, 8,
+ 0, 15, 8, 5, 0, 131, 105, 101, 118, 101, 0, 8, 5, 0, 129, 101, 118, 101, 0,
+ 82, 154, 8, 25, 161, 8, 0, 21, 19, 0, 130, 118, 101, 0, 5, 4, 0, 131, 111,
+ 118, 101, 0, 12, 8, 0, 75, 182, 8, 15, 189, 8, 21, 197, 8, 0, 6, 0, 130, 105,
+ 101, 102, 0, 8, 5, 0, 130, 105, 101, 102, 0, 5, 0, 130, 105, 101, 102, 0, 76,
+ 211, 8, 17, 221, 8, 0, 17, 18, 10, 44, 0, 130, 105, 110, 103, 0, 76, 228, 8,
+ 21, 58, 9, 0, 72, 244, 8, 11, 11, 9, 15, 24, 9, 21, 36, 9, 28, 47, 9, 0, 72,
+ 251, 8, 11, 2, 9, 0, 5, 0, 131, 105, 110, 103, 0, 6, 4, 6, 0, 131, 105, 110,
+ 103, 0, 23, 6, 4, 16, 0, 133, 116, 99, 104, 105, 110, 103, 0, 8, 12, 6, 0,
+ 133, 101, 105, 108, 105, 110, 103, 0, 24, 6, 8, 21, 0, 130, 114, 105, 110,
+ 103, 0, 23, 28, 17, 4, 0, 131, 104, 105, 110, 103, 0, 12, 23, 22, 0, 131, 114,
+ 105, 110, 103, 0, 70, 87, 9, 8, 142, 9, 10, 154, 9, 12, 164, 9, 22, 173, 9,
+ 23, 191, 9, 0, 75, 100, 9, 12, 109, 9, 15, 119, 9, 21, 127, 9, 0, 12, 26, 0,
+ 131, 104, 105, 99, 104, 0, 23, 26, 22, 0, 131, 105, 116, 99, 104, 0, 11, 26,
+ 0, 130, 105, 99, 104, 0, 4, 8, 22, 4, 8, 21, 0, 134, 115, 101, 97, 114, 99,
+ 104, 0, 23, 7, 17, 4, 44, 0, 130, 32, 116, 104, 101, 0, 17, 8, 21, 23, 22, 0,
+ 128, 116, 104, 0, 6, 11, 26, 0, 130, 105, 99, 104, 0, 12, 15, 19, 16, 18, 6,
+ 4, 0, 134, 99, 111, 109, 112, 108, 105, 115, 104, 0, 74, 201, 9, 12, 225, 9,
+ 21, 236, 9, 0, 72, 208, 9, 12, 218, 9, 0, 21, 23, 22, 0, 130, 110, 103, 116,
+ 104, 0, 8, 11, 0, 129, 104, 116, 0, 26, 7, 17, 4, 5, 0, 129, 100, 116, 104, 0,
+ 24, 23, 44, 0, 131, 114, 117, 116, 104, 0, 21, 8, 11, 23, 44, 0, 129, 105,
+ 114, 0, 17, 0, 76, 9, 10, 24, 20, 10, 0, 23, 11, 44, 0, 132, 116, 104, 105,
+ 110, 107, 0, 12, 11, 23, 0, 130, 110, 107, 0, 68, 50, 10, 7, 134, 10, 8, 177,
+ 10, 9, 17, 11, 15, 26, 11, 23, 55, 11, 24, 64, 11, 0, 76, 60, 10, 23, 71, 10,
+ 24, 96, 10, 0, 6, 19, 28, 23, 0, 131, 105, 99, 97, 108, 0, 76, 78, 10, 24, 86,
+ 10, 0, 17, 12, 0, 129, 105, 97, 108, 0, 21, 12, 25, 0, 131, 116, 117, 97, 108,
+ 0, 81, 106, 10, 21, 115, 10, 23, 124, 10, 0, 4, 44, 0, 130, 110, 117, 97, 108,
+ 0, 24, 23, 4, 17, 0, 130, 97, 108, 0, 12, 25, 0, 131, 114, 116, 117, 97, 108,
+ 0, 24, 0, 82, 143, 10, 26, 167, 10, 0, 70, 153, 10, 11, 157, 10, 26, 163, 10,
+ 0, 129, 108, 100, 0, 22, 0, 129, 108, 100, 0, 129, 108, 100, 0, 18, 44, 0,
+ 132, 119, 111, 117, 108, 100, 0, 74, 193, 10, 15, 201, 10, 19, 247, 10, 23,
+ 255, 10, 24, 7, 11, 0, 17, 12, 22, 0, 129, 108, 101, 0, 68, 208, 10, 15, 234,
+ 10, 0, 21, 0, 68, 217, 10, 21, 224, 10, 0, 19, 0, 129, 108, 101, 108, 0, 4,
+ 19, 0, 132, 97, 108, 108, 101, 108, 0, 4, 21, 21, 4, 19, 0, 133, 97, 108, 108,
+ 101, 108, 0, 18, 8, 19, 0, 129, 108, 101, 0, 23, 12, 15, 0, 129, 108, 101, 0,
+ 7, 8, 11, 6, 22, 0, 129, 108, 101, 0, 8, 22, 28, 16, 0, 129, 108, 102, 0, 12,
+ 9, 0, 79, 36, 11, 24, 46, 11, 0, 15, 24, 9, 0, 132, 102, 105, 108, 108, 0, 9,
+ 0, 131, 108, 102, 105, 108, 108, 0, 24, 22, 8, 21, 0, 129, 108, 116, 0, 9, 23,
+ 4, 8, 21, 10, 0, 133, 97, 116, 101, 102, 117, 108, 0, 68, 89, 11, 15, 106, 11,
+ 21, 117, 11, 0, 21, 10, 18, 23, 6, 8, 19, 22, 0, 132, 114, 111, 103, 114, 97,
+ 109, 0, 8, 5, 18, 21, 19, 0, 130, 108, 101, 109, 0, 18, 9, 18, 6, 0, 131, 110,
+ 102, 111, 114, 109, 0, 68, 166, 11, 7, 206, 11, 8, 215, 11, 10, 58, 12, 12,
+ 141, 12, 14, 153, 12, 18, 192, 12, 19, 108, 13, 21, 120, 13, 22, 131, 13, 24,
+ 141, 13, 26, 164, 13, 0, 12, 0, 74, 175, 11, 23, 183, 11, 0, 4, 44, 0, 130,
+ 97, 105, 110, 0, 81, 190, 11, 21, 198, 11, 0, 18, 6, 0, 130, 97, 105, 110, 0,
+ 8, 6, 0, 130, 97, 105, 110, 0, 24, 18, 9, 44, 0, 129, 110, 100, 0, 71, 231,
+ 11, 8, 241, 11, 10, 27, 12, 19, 39, 12, 22, 48, 12, 0, 15, 12, 11, 6, 0, 129,
+ 114, 101, 110, 0, 87, 248, 11, 26, 17, 12, 0, 72, 255, 11, 26, 7, 12, 0, 5, 0,
+ 130, 119, 101, 101, 110, 0, 8, 5, 0, 132, 116, 119, 101, 101, 110, 0, 8, 5, 0,
+ 131, 116, 119, 101, 101, 110, 0, 18, 7, 28, 11, 0, 131, 114, 111, 103, 101,
+ 110, 0, 4, 11, 44, 0, 129, 112, 101, 110, 0, 18, 18, 11, 6, 0, 131, 115, 101,
+ 110, 0, 72, 65, 12, 12, 76, 12, 0, 12, 21, 18, 9, 0, 131, 101, 105, 103, 110,
+ 0, 75, 95, 12, 15, 101, 12, 17, 109, 12, 18, 118, 12, 21, 125, 12, 22, 132,
+ 12, 0, 23, 0, 129, 110, 103, 0, 15, 4, 0, 131, 105, 103, 110, 0, 21, 4, 8, 15,
+ 0, 129, 110, 103, 0, 10, 44, 0, 129, 110, 103, 0, 23, 22, 0, 129, 110, 103, 0,
+ 4, 44, 0, 130, 115, 105, 103, 110, 0, 23, 4, 21, 8, 6, 0, 131, 116, 97, 105,
+ 110, 0, 75, 160, 12, 12, 169, 12, 0, 12, 23, 0, 131, 104, 105, 110, 107, 0,
+ 75, 176, 12, 23, 182, 12, 0, 23, 0, 129, 110, 107, 0, 11, 44, 0, 132, 116,
+ 104, 105, 110, 107, 0, 76, 202, 12, 22, 86, 13, 23, 96, 13, 0, 70, 212, 12,
+ 22, 225, 12, 23, 251, 12, 0, 12, 22, 8, 7, 0, 133, 99, 105, 115, 105, 111,
+ 110, 0, 68, 232, 12, 22, 241, 12, 0, 12, 15, 0, 131, 105, 115, 111, 110, 0, 4,
+ 6, 6, 18, 0, 131, 105, 111, 110, 0, 68, 14, 13, 7, 27, 13, 12, 37, 13, 15, 52,
+ 13, 17, 64, 13, 22, 76, 13, 0, 21, 8, 5, 4, 0, 132, 114, 97, 116, 105, 111,
+ 110, 0, 7, 4, 0, 131, 105, 116, 105, 111, 110, 0, 23, 12, 19, 8, 21, 0, 134,
+ 101, 116, 105, 116, 105, 111, 110, 0, 4, 8, 21, 0, 133, 108, 97, 116, 105,
+ 111, 110, 0, 6, 24, 9, 0, 133, 110, 99, 116, 105, 111, 110, 0, 18, 19, 0, 131,
+ 105, 116, 105, 111, 110, 0, 12, 25, 12, 7, 0, 129, 105, 111, 110, 0, 12, 6, 4,
+ 21, 9, 0, 131, 116, 105, 111, 110, 0, 19, 11, 4, 0, 132, 104, 97, 112, 112,
+ 101, 110, 0, 23, 24, 8, 21, 0, 131, 116, 117, 114, 110, 0, 10, 12, 11, 23, 0,
+ 130, 110, 103, 115, 0, 85, 148, 13, 23, 157, 13, 0, 23, 8, 21, 0, 130, 117,
+ 114, 110, 0, 8, 21, 0, 128, 114, 110, 0, 18, 14, 17, 24, 0, 130, 110, 111,
+ 119, 110, 0, 71, 185, 13, 17, 196, 13, 26, 205, 13, 0, 8, 24, 22, 19, 0, 131,
+ 101, 117, 100, 111, 0, 26, 14, 44, 0, 130, 110, 111, 119, 0, 79, 212, 13, 17,
+ 220, 13, 0, 15, 18, 9, 0, 129, 111, 119, 0, 14, 44, 0, 129, 111, 119, 0, 86,
+ 234, 13, 24, 244, 13, 0, 4, 11, 21, 8, 19, 0, 129, 112, 115, 0, 18, 18, 15, 0,
+ 129, 107, 117, 112, 0, 68, 28, 14, 8, 93, 14, 11, 103, 15, 15, 113, 15, 18,
+ 127, 15, 19, 144, 15, 22, 155, 15, 23, 164, 15, 24, 176, 15, 28, 185, 15, 0,
+ 76, 38, 14, 15, 48, 14, 24, 82, 14, 0, 15, 12, 16, 12, 22, 0, 130, 97, 114, 0,
+ 76, 55, 14, 24, 66, 14, 0, 16, 16, 12, 22, 0, 132, 105, 108, 97, 114, 0, 6,
+ 12, 23, 4, 19, 0, 134, 114, 116, 105, 99, 117, 108, 97, 114, 0, 15, 10, 8, 21,
+ 0, 131, 117, 108, 97, 114, 0, 68, 124, 14, 7, 132, 14, 11, 145, 14, 12, 203,
+ 14, 15, 229, 14, 16, 239, 14, 17, 249, 14, 18, 37, 15, 23, 45, 15, 25, 76, 15,
+ 0, 15, 6, 0, 130, 101, 97, 114, 0, 17, 4, 15, 4, 6, 0, 132, 101, 110, 100, 97,
+ 114, 0, 74, 152, 14, 23, 163, 14, 0, 12, 8, 11, 0, 133, 105, 103, 104, 101,
+ 114, 0, 72, 173, 14, 15, 185, 14, 24, 194, 14, 0, 11, 10, 18, 23, 0, 133, 101,
+ 116, 104, 101, 114, 0, 18, 44, 0, 132, 116, 104, 101, 114, 0, 9, 0, 131, 114,
+ 116, 104, 101, 114, 0, 75, 210, 14, 15, 218, 14, 0, 23, 44, 0, 130, 101, 105,
+ 114, 0, 19, 16, 18, 6, 0, 131, 105, 108, 101, 114, 0, 23, 12, 9, 0, 131, 108,
+ 116, 101, 114, 0, 16, 4, 21, 10, 44, 0, 129, 97, 114, 0, 76, 0, 15, 23, 12,
+ 15, 0, 10, 10, 8, 5, 0, 132, 105, 110, 110, 101, 114, 0, 76, 19, 15, 22, 28,
+ 15, 0, 18, 19, 0, 131, 110, 116, 101, 114, 0, 12, 15, 0, 130, 101, 110, 101,
+ 114, 0, 9, 8, 5, 0, 129, 114, 101, 0, 75, 52, 15, 24, 62, 15, 0, 18, 17, 4, 0,
+ 131, 116, 104, 101, 114, 0, 19, 18, 16, 6, 0, 134, 111, 109, 112, 117, 116,
+ 101, 114, 0, 72, 83, 15, 26, 94, 15, 0, 8, 21, 8, 11, 26, 0, 131, 118, 101,
+ 114, 0, 18, 11, 0, 130, 101, 118, 101, 114, 0, 8, 23, 18, 44, 0, 130, 104,
+ 101, 114, 0, 4, 24, 6, 12, 23, 21, 4, 19, 0, 130, 108, 97, 114, 0, 23, 4, 21,
+ 8, 23, 17, 12, 0, 135, 116, 101, 114, 97, 116, 111, 114, 0, 23, 15, 15, 24,
+ 17, 0, 130, 112, 116, 114, 0, 4, 8, 28, 44, 0, 129, 114, 115, 0, 18, 4, 21, 8,
+ 19, 18, 0, 130, 116, 111, 114, 0, 6, 18, 44, 0, 129, 99, 117, 114, 0, 8, 25,
+ 8, 44, 0, 129, 114, 121, 0, 68, 219, 15, 8, 3, 16, 10, 147, 16, 19, 158, 16,
+ 21, 170, 16, 22, 181, 16, 23, 77, 17, 24, 85, 17, 0, 75, 229, 15, 19, 240, 15,
+ 28, 250, 15, 0, 19, 21, 8, 19, 0, 131, 104, 97, 112, 115, 0, 11, 21, 8, 19, 0,
+ 130, 97, 112, 115, 0, 26, 15, 4, 0, 130, 97, 121, 115, 0, 68, 19, 16, 6, 42,
+ 16, 12, 53, 16, 15, 129, 16, 22, 136, 16, 0, 71, 26, 16, 14, 34, 16, 0, 12,
+ 44, 0, 130, 101, 97, 115, 0, 23, 0, 131, 97, 107, 101, 115, 0, 8, 7, 17, 12,
+ 0, 131, 105, 99, 101, 115, 0, 70, 63, 16, 21, 102, 16, 23, 117, 16, 0, 72, 70,
+ 16, 12, 80, 16, 0, 7, 17, 12, 0, 132, 105, 99, 101, 115, 0, 71, 87, 16, 23,
+ 94, 16, 0, 17, 12, 0, 130, 101, 115, 0, 21, 8, 25, 0, 130, 101, 115, 0, 18,
+ 22, 8, 6, 6, 4, 0, 132, 115, 111, 114, 105, 101, 115, 0, 15, 12, 5, 4, 0, 131,
+ 105, 116, 105, 101, 115, 0, 4, 9, 0, 129, 115, 101, 0, 18, 11, 6, 44, 0, 130,
+ 111, 115, 101, 115, 0, 12, 17, 11, 23, 0, 131, 105, 110, 103, 115, 0, 4, 8,
+ 11, 21, 8, 19, 0, 131, 97, 112, 115, 0, 8, 4, 28, 44, 0, 131, 101, 97, 114,
+ 115, 0, 68, 191, 16, 8, 203, 16, 18, 66, 17, 0, 21, 4, 5, 16, 8, 0, 130, 114,
+ 97, 115, 115, 0, 70, 216, 16, 17, 240, 16, 21, 13, 17, 22, 42, 17, 0, 70, 223,
+ 16, 24, 232, 16, 0, 18, 21, 19, 0, 131, 101, 115, 115, 0, 22, 0, 130, 99, 101,
+ 115, 115, 0, 76, 247, 16, 22, 3, 17, 0, 22, 22, 24, 5, 0, 133, 105, 110, 101,
+ 115, 115, 0, 24, 5, 0, 131, 105, 110, 101, 115, 115, 0, 19, 0, 85, 22, 17, 24,
+ 33, 17, 0, 24, 22, 0, 133, 112, 112, 114, 101, 115, 115, 0, 22, 0, 131, 112,
+ 114, 101, 115, 115, 0, 70, 49, 17, 18, 58, 17, 0, 6, 24, 22, 0, 131, 101, 115,
+ 115, 0, 19, 0, 130, 115, 101, 115, 115, 0, 21, 6, 6, 4, 0, 132, 114, 111, 115,
+ 115, 0, 21, 12, 9, 0, 129, 115, 116, 0, 82, 92, 17, 22, 106, 17, 0, 15, 18,
+ 16, 18, 17, 4, 0, 132, 97, 108, 111, 117, 115, 0, 17, 8, 6, 17, 18, 6, 0, 133,
+ 115, 101, 110, 115, 117, 115, 0, 68, 158, 17, 8, 188, 17, 10, 217, 17, 11,
+ 227, 17, 12, 25, 18, 15, 36, 18, 16, 47, 18, 17, 59, 18, 18, 151, 19, 19, 189,
+ 19, 22, 217, 19, 24, 107, 20, 0, 85, 165, 17, 26, 176, 17, 0, 8, 19, 8, 22, 0,
+ 131, 97, 114, 97, 116, 0, 11, 8, 16, 18, 22, 0, 131, 119, 104, 97, 116, 0, 68,
+ 195, 17, 17, 204, 17, 0, 21, 10, 44, 0, 130, 101, 97, 116, 0, 16, 17, 21, 8,
+ 25, 18, 10, 0, 130, 101, 110, 116, 0, 11, 24, 4, 6, 0, 130, 103, 104, 116, 0,
+ 71, 237, 17, 10, 244, 17, 12, 14, 18, 0, 12, 26, 0, 129, 116, 104, 0, 81, 251,
+ 17, 24, 2, 18, 0, 8, 15, 0, 129, 116, 104, 0, 18, 21, 11, 23, 0, 133, 111,
+ 117, 103, 104, 116, 0, 10, 17, 18, 23, 0, 131, 105, 103, 104, 116, 0, 23, 24,
+ 18, 5, 4, 0, 129, 32, 105, 116, 0, 22, 24, 8, 21, 0, 131, 115, 117, 108, 116,
+ 0, 4, 23, 21, 18, 19, 16, 12, 0, 129, 110, 116, 0, 68, 72, 18, 8, 128, 18, 21,
+ 132, 19, 22, 143, 19, 0, 76, 85, 18, 17, 96, 18, 21, 107, 18, 23, 117, 18, 0,
+ 19, 12, 6, 8, 21, 0, 130, 101, 110, 116, 0, 12, 16, 18, 21, 19, 0, 130, 101,
+ 110, 116, 0, 4, 19, 19, 4, 0, 130, 101, 110, 116, 0, 8, 19, 16, 18, 6, 0, 130,
+ 101, 110, 116, 0, 76, 144, 18, 16, 177, 18, 21, 21, 19, 25, 111, 19, 29, 121,
+ 19, 0, 70, 151, 18, 19, 164, 18, 0, 8, 9, 9, 8, 0, 133, 105, 99, 105, 101,
+ 110, 116, 0, 8, 6, 8, 21, 0, 133, 105, 112, 105, 101, 110, 116, 0, 72, 190,
+ 18, 17, 202, 18, 21, 235, 18, 23, 10, 19, 0, 25, 18, 10, 0, 131, 114, 110,
+ 109, 101, 110, 116, 0, 72, 209, 18, 21, 221, 18, 0, 25, 18, 10, 0, 132, 114,
+ 110, 109, 101, 110, 116, 0, 18, 25, 18, 10, 0, 134, 101, 114, 110, 109, 101,
+ 110, 116, 0, 72, 242, 18, 18, 253, 18, 0, 25, 18, 10, 0, 131, 110, 109, 101,
+ 110, 116, 0, 25, 18, 10, 0, 133, 101, 114, 110, 109, 101, 110, 116, 0, 4, 23,
+ 22, 0, 131, 101, 109, 101, 110, 116, 0, 68, 34, 19, 8, 45, 19, 9, 57, 19, 21,
+ 68, 19, 0, 19, 4, 0, 132, 112, 97, 114, 101, 110, 116, 0, 9, 12, 7, 0, 132,
+ 102, 101, 114, 101, 110, 116, 0, 9, 12, 7, 0, 131, 101, 114, 101, 110, 116, 0,
+ 68, 75, 19, 8, 99, 19, 0, 19, 0, 68, 84, 19, 19, 92, 19, 0, 133, 112, 97, 114,
+ 101, 110, 116, 0, 4, 0, 131, 101, 110, 116, 0, 9, 12, 7, 0, 133, 102, 101,
+ 114, 101, 110, 116, 0, 8, 15, 8, 21, 0, 130, 97, 110, 116, 0, 12, 17, 10, 18,
+ 6, 0, 130, 97, 110, 116, 0, 8, 9, 9, 12, 7, 0, 129, 101, 110, 116, 0, 18, 6,
+ 0, 130, 110, 115, 116, 0, 81, 161, 19, 21, 171, 19, 22, 180, 19, 0, 7, 12, 7,
+ 0, 130, 32, 110, 111, 116, 0, 19, 8, 21, 0, 130, 111, 114, 116, 0, 16, 15, 4,
+ 0, 130, 111, 115, 116, 0, 72, 196, 19, 28, 207, 19, 0, 12, 6, 8, 21, 0, 131,
+ 101, 105, 112, 116, 0, 6, 17, 8, 0, 130, 114, 121, 112, 116, 0, 72, 236, 19,
+ 10, 21, 20, 12, 30, 20, 16, 59, 20, 17, 69, 20, 24, 96, 20, 0, 74, 243, 19,
+ 21, 10, 20, 0, 76, 250, 19, 24, 2, 20, 0, 11, 0, 130, 104, 101, 115, 116, 0,
+ 22, 0, 130, 103, 101, 115, 116, 0, 23, 17, 12, 0, 131, 101, 114, 101, 115,
+ 116, 0, 21, 4, 15, 0, 129, 101, 115, 116, 0, 73, 37, 20, 17, 49, 20, 0, 8, 17,
+ 4, 16, 0, 132, 105, 102, 101, 115, 116, 0, 4, 10, 4, 0, 131, 105, 110, 115,
+ 116, 0, 18, 15, 4, 0, 131, 109, 111, 115, 116, 0, 68, 76, 20, 17, 87, 20, 0,
+ 12, 10, 4, 0, 132, 97, 105, 110, 115, 116, 0, 12, 4, 10, 4, 0, 130, 115, 116,
+ 0, 13, 4, 44, 0, 131, 100, 106, 117, 115, 116, 0, 70, 120, 20, 18, 144, 20,
+ 19, 168, 20, 23, 191, 20, 0, 72, 127, 20, 21, 137, 20, 0, 6, 27, 8, 0, 132,
+ 101, 99, 117, 116, 0, 12, 6, 0, 128, 105, 116, 0, 68, 151, 20, 5, 160, 20, 0,
+ 5, 0, 132, 97, 98, 111, 117, 116, 0, 5, 4, 0, 131, 111, 117, 116, 0, 87, 175,
+ 20, 24, 183, 20, 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, 23, 18, 5, 4, 0, 129,
+ 117, 116, 0, 72, 217, 20, 12, 253, 20, 0, 68, 224, 20, 12, 231, 20, 0, 11, 44,
+ 0, 129, 118, 101, 0, 70, 238, 20, 8, 246, 20, 0, 8, 21, 0, 130, 101, 105, 118,
+ 0, 6, 8, 21, 0, 129, 118, 0, 8, 11, 6, 4, 44, 0, 130, 105, 101, 118, 0, 76,
+ 15, 21, 17, 25, 21, 0, 8, 25, 8, 21, 0, 130, 105, 101, 119, 0, 18, 14, 44, 0,
+ 130, 110, 111, 119, 0, 70, 59, 21, 8, 118, 21, 11, 128, 21, 15, 146, 21, 17,
+ 87, 22, 21, 114, 22, 22, 12, 23, 23, 39, 23, 0, 68, 72, 21, 8, 84, 21, 12, 95,
+ 21, 19, 106, 21, 0, 21, 6, 18, 19, 28, 11, 0, 130, 105, 115, 121, 0, 24, 20,
+ 8, 21, 9, 0, 129, 110, 99, 121, 0, 21, 6, 18, 19, 28, 11, 0, 129, 115, 121, 0,
+ 24, 21, 14, 17, 4, 5, 0, 129, 116, 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, 68, 165, 21, 11, 232, 21, 14, 242, 21, 15, 250, 21, 18, 66, 22, 21, 76, 22,
+ 0, 69, 184, 21, 8, 193, 21, 15, 199, 21, 17, 208, 21, 21, 215, 21, 24, 224,
+ 21, 0, 18, 21, 19, 0, 129, 98, 108, 121, 0, 21, 0, 128, 108, 121, 0, 8, 21, 0,
+ 131, 97, 108, 108, 121, 0, 12, 9, 0, 128, 108, 121, 0, 8, 17, 8, 10, 0, 128,
+ 108, 121, 0, 23, 6, 4, 0, 128, 108, 121, 0, 10, 12, 15, 22, 0, 129, 116, 108,
+ 121, 0, 12, 15, 0, 129, 101, 108, 121, 0, 68, 4, 22, 5, 47, 22, 8, 56, 22, 0,
+ 86, 11, 22, 23, 35, 22, 0, 24, 0, 108, 20, 22, 22, 27, 22, 0, 131, 117, 97,
+ 108, 108, 121, 0, 24, 0, 132, 97, 108, 108, 121, 0, 24, 6, 4, 0, 133, 116,
+ 117, 97, 108, 108, 121, 0, 4, 5, 18, 21, 19, 0, 129, 121, 0, 4, 21, 0, 132,
+ 101, 97, 108, 108, 121, 0, 16, 18, 17, 4, 0, 130, 97, 108, 121, 0, 4, 16, 12,
+ 21, 19, 0, 129, 105, 108, 121, 0, 72, 94, 22, 19, 103, 22, 0, 18, 16, 44, 0,
+ 130, 110, 101, 121, 0, 4, 16, 18, 6, 0, 131, 112, 97, 110, 121, 0, 68, 127,
+ 22, 8, 231, 22, 18, 240, 22, 23, 253, 22, 0, 69, 143, 22, 12, 152, 22, 15,
+ 165, 22, 16, 193, 22, 22, 202, 22, 0, 12, 15, 0, 130, 114, 97, 114, 121, 0,
+ 15, 15, 12, 27, 24, 4, 0, 132, 105, 97, 114, 121, 0, 76, 172, 22, 15, 182, 22,
+ 0, 27, 24, 4, 0, 130, 105, 97, 114, 121, 0, 12, 27, 24, 4, 0, 131, 105, 97,
+ 114, 121, 0, 24, 22, 0, 130, 109, 97, 114, 121, 0, 8, 6, 0, 70, 212, 22, 8,
+ 223, 22, 0, 8, 17, 0, 133, 101, 115, 115, 97, 114, 121, 0, 17, 0, 130, 115,
+ 97, 114, 121, 0, 19, 18, 21, 19, 0, 128, 116, 121, 0, 10, 4, 23, 4, 6, 0, 132,
+ 101, 103, 111, 114, 121, 0, 17, 24, 6, 18, 44, 0, 134, 99, 111, 117, 110, 116,
+ 114, 121, 0, 4, 0, 85, 21, 23, 26, 32, 23, 0, 6, 18, 19, 28, 11, 0, 130, 105,
+ 115, 121, 0, 15, 4, 0, 129, 121, 115, 0, 73, 49, 23, 15, 57, 23, 21, 66, 23,
+ 0, 4, 22, 0, 129, 101, 116, 121, 0, 12, 5, 4, 0, 129, 105, 116, 121, 0, 19, 8,
+ 18, 21, 19, 0, 132, 112, 101, 114, 116, 121, 0};
+
diff --git a/users/gourdo1/autocorrect/autocorrection_data.h (large) b/users/gourdo1/autocorrect/autocorrection_data.h (large)
new file mode 100644
index 0000000000..66518201e2
--- /dev/null
+++ b/users/gourdo1/autocorrect/autocorrection_data.h (large)
@@ -0,0 +1,722 @@
+// Generated code.
+
+// Autocorrection dictionary (400 entries):
+// :acheiv -> achiev
+// :agian -> again
+// :agred -> agreed
+// :ajust -> adjust
+// :alot: -> a lot
+// :andteh -> and the
+// :andthe -> and the
+// :anual -> annual
+// :asign -> assign
+// :aslo: -> also
+// :asthe -> as the
+// :atthe -> at the
+// :casue -> cause
+// :choses -> chooses
+// :eveyr -> every
+// :foudn -> found
+// :gaurd -> guard
+// :goign -> going
+// :gonig -> going
+// :graet -> great
+// :grammer -> grammar
+// :guage -> gauge
+// :haev -> have
+// :hapen -> happen
+// :htere -> there
+// :htikn -> think
+// :htink -> think
+// :hwihc -> which
+// :hwile -> while
+// :idaes -> ideas
+// :jstu: -> just
+// :jsut: -> just
+// :knwo -> know
+// :konw -> know
+// :kwno -> know
+// :moeny -> money
+// :ocuntry -> country
+// :ocur -> occur
+// :olther -> other
+// :otehr -> other
+// :owudl -> would
+// :rference -> reference
+// :sicne -> since
+// :socre -> score
+// :szie -> size
+// :the:the: -> the
+// :theri -> their
+// :thier -> their
+// :thsoe -> those
+// :tothe -> to the
+// :ture -> true
+// :turth -> truth
+// :uesd: -> used
+// :usally -> usually
+// :yaers -> years
+// :yeasr -> years
+// abbout -> about
+// aberation -> aberration
+// abilties -> abilities
+// abilty -> ability
+// abotu -> about
+// abouta -> about a
+// aboutit -> about it
+// aboutthe -> about the
+// abvove -> above
+// accesories -> accessories
+// accomodate -> accommodate
+// accross -> across
+// acommodate -> accommodate
+// acomplish -> accomplish
+// actualy -> actually
+// acurate -> accurate
+// acutally -> actually
+// addtion -> addition
+// adviced -> advised
+// againnst -> against
+// aganist -> against
+// aggreed -> agreed
+// agianst -> against
+// ahppn -> happen
+// aledge -> allege
+// alledge -> allege
+// allign -> align
+// almsot -> almost
+// alomst -> almost
+// alwasy -> always
+// alwyas -> always
+// amature -> amateur
+// anohter -> another
+// anomolous -> anomalous
+// anomoly -> anomaly
+// anytying -> anything
+// aparent -> apparent
+// aparrent -> apparent
+// apparant -> apparent
+// apparrent -> apparent
+// aquire -> acquire
+// aroud -> around
+// arround -> around
+// arund -> around
+// asthetic -> aesthetic
+// auxilary -> auxiliary
+// auxillary -> auxiliary
+// auxilliary -> auxiliary
+// availabe -> available
+// availaible -> available
+// availalbe -> available
+// availble -> available
+// availiable -> available
+// avalable -> available
+// avaliable -> available
+// avilable -> available
+// baceause -> because
+// bandwith -> bandwidth
+// bankrupcy -> bankruptcy
+// baout -> about
+// beacuse -> because
+// becasue -> because
+// beccause -> because
+// becouse -> because
+// becuase -> because
+// bedore -> before
+// beeing -> being
+// befoer -> before
+// begginer -> beginner
+// beleif -> belief
+// beleive -> believe
+// belive -> believe
+// beteen -> between
+// beween -> between
+// bewteen -> between
+// breif -> brief
+// burried -> buried
+// busness -> business
+// bussiness -> business
+// cacheing -> caching
+// calander -> calendar
+// caluclate -> calculate
+// caluculate -> calculate
+// calulate -> calculate
+// catagory -> category
+// cauhgt -> caught
+// ceratin -> certain
+// certian -> certain
+// cheif -> chief
+// chekc -> check
+// childen -> children
+// chnage -> change
+// choosen -> chosen
+// cieling -> ceiling
+// circut -> circuit
+// claer -> clear
+// clasic -> classic
+// cmoputer -> computer
+// coform -> conform
+// cognizent -> cognizant
+// collegue -> colleague
+// comapny -> company
+// comittee -> committee
+// comming: -> coming
+// commitee -> committee
+// competance -> competence
+// competant -> competent
+// complier -> compiler
+// concensus -> consensus
+// considerd -> considered
+// contian -> contain
+// copywrite: -> copyright
+// cosnt -> const
+// coudl -> could
+// dervied -> derived
+// desicion -> decision
+// didnot -> did not
+// diferent -> different
+// diferrent -> different
+// differnt -> different
+// diffrent -> different
+// divison -> division
+// doulbe -> double
+// dyanmic -> dynamic
+// effecient -> efficient
+// elasped -> elapsed
+// eligable -> eligible
+// elpased -> elapsed
+// embarass -> embarrass
+// embeded -> embedded
+// encypt -> encrypt
+// excecut -> execut
+// excercise -> exercise
+// failse -> false
+// fales -> false
+// fasle -> false
+// feild -> field
+// finaly -> finally
+// firend -> friend
+// firts -> first
+// fitler -> filter
+// flase -> false
+// follwo -> follow
+// foriegn -> foreign
+// foward -> forward
+// fraciton -> fraction
+// freind -> friend
+// frequecy -> frequency
+// fromthe -> from the
+// fucntion -> function
+// fufill -> fulfill
+// fullfill -> fulfill
+// futher -> further
+// ganerate -> generate
+// garantee -> guarantee
+// gaurantee -> guarantee
+// generaly -> generally
+// govement -> government
+// govenment -> government
+// goverment -> government
+// governmnet -> government
+// govorment -> government
+// govornment -> government
+// greatful -> grateful
+// guaratee -> guarantee
+// heigher -> higher
+// heigth -> height
+// heirarchy -> hierarchy
+// higest -> highest
+// howver -> however
+// hydogen -> hydrogen
+// hygeine -> hygiene
+// hypocracy -> hypocrisy
+// hypocrasy -> hypocrisy
+// hypocricy -> hypocrisy
+// hypocrit: -> hypocrite
+// iamge -> image
+// importamt -> important
+// inclued -> include
+// indeces -> indices
+// indecies -> indices
+// indicies -> indices
+// inital -> initial
+// insted -> instead
+// interator -> iterator
+// intput -> input
+// intrest -> interest
+// invliad -> invalid
+// laguage -> language
+// largst -> largest
+// learnign -> learning
+// lenght -> length
+// levle -> level
+// liasion -> liaison
+// libary -> library
+// likly -> likely
+// lisense -> license
+// listner -> listener
+// littel -> little
+// looses: -> loses
+// looup -> lookup
+// macthing -> matching
+// maintence -> maintenance
+// manefist -> manifest
+// mesage -> message
+// morgage -> mortgage
+// mysefl -> myself
+// namesapce -> namespace
+// namespcae -> namespace
+// naturual -> natural
+// neccesary -> necessary
+// necesary -> necessary
+// nulltpr -> nullptr
+// occassion -> occasion
+// occured -> occurred
+// operaotr -> operator
+// ouptut -> output
+// ouput -> output
+// overide -> override
+// ovveride -> override
+// pallete -> palette
+// paralel -> parallel
+// parralel -> parallel
+// parrallel -> parallel
+// particualr -> particular
+// paticular -> particular
+// peaple -> people
+// peice -> piece
+// peolpe -> people
+// peopel -> people
+// perhasp -> perhaps
+// perheaps -> perhaps
+// perhpas -> perhaps
+// perphas -> perhaps
+// persue -> pursue
+// poeople -> people
+// poeple -> people
+// poitner -> pointer
+// posess -> possess
+// postion -> position
+// preiod -> period
+// primarly -> primarily
+// priviledge -> privilege
+// privte -> private
+// probablly -> probably
+// probaly -> probably
+// probelm -> problem
+// proccess -> process
+// proeprty -> property
+// prominant -> prominent
+// proove -> prove
+// propery -> property
+// propogate -> propagate
+// psuedo -> pseudo
+// raelly -> really
+// realtion -> relation
+// realy -> really
+// reasearch -> research
+// receiev -> receiv
+// recepient -> recipient
+// reciept -> receipt
+// reciev -> receiv
+// recipiant -> recipient
+// recrod -> record
+// recuring -> recurring
+// referece -> reference
+// refered -> referred
+// regluar -> regular
+// relaly -> really
+// releated -> related
+// relevent -> relevant
+// repitition -> repetition
+// reponse -> response
+// reprot -> report
+// resutl -> result
+// retrun -> return
+// retun -> return
+// reuslt -> result
+// reutrn -> return
+// reveiw -> review
+// saftey -> safety
+// safty -> safety
+// satisifed -> satisfied
+// scheduel -> schedule
+// seperat -> separat
+// sequnce -> sequence
+// shoudl -> should
+// similiar -> similar
+// simmilar -> similar
+// singed -> signed
+// singel -> single
+// slighly -> slightly
+// somehwat -> somewhat
+// spectogram -> spectrogram
+// statment -> statement
+// stirng -> string
+// stregth -> strength
+// strengh -> strength
+// strign -> string
+// succsess -> success
+// sucess -> success
+// sugest -> suggest
+// sumary -> summary
+// supress -> suppress
+// surpress -> suppress
+// swithc -> switch
+// swtich -> switch
+// symetric -> symmetric
+// teamplate -> template
+// tempalte -> template
+// theese -> these
+// therfore -> therefore
+// thign -> thing
+// thigsn -> things
+// thikn -> think
+// thiunk -> think
+// thnigs -> things
+// thresold -> threshold
+// throught -> thought
+// tihkn -> think
+// tkaes -> takes
+// todya -> today
+// toghether -> together
+// tolerence -> tolerance
+// tongiht -> tonight
+// tranpose -> transpose
+// typcial -> typical
+// udpate -> update
+// unkown -> unknown
+// unqiue -> unique
+// ususally -> usually
+// verticies -> vertices
+// virutal -> virtual
+// vitual -> virtual
+// whcih -> which
+// whereever -> wherever
+// wherre -> where
+// whihc -> which
+// whlch -> which
+// widht -> width
+// wierd -> weird
+// wihch -> which
+// woudl -> would
+// yeild -> yield
+
+#define AUTOCORRECTION_MIN_LENGTH 5 // "abotu"
+#define AUTOCORRECTION_MAX_LENGTH 10 // "auxilliary"
+
+static const uint8_t autocorrection_data[5967] PROGMEM = {108, 67, 0, 4, 212, 0,
+ 6, 236, 0, 7, 100, 1, 8, 15, 3, 9, 169, 8, 10, 204, 8, 11, 68, 9, 12, 246, 9,
+ 14, 0, 10, 15, 28, 10, 16, 79, 11, 17, 129, 11, 18, 175, 13, 19, 227, 13, 21,
+ 253, 13, 22, 194, 15, 23, 121, 17, 24, 201, 20, 25, 210, 20, 26, 8, 21, 28,
+ 34, 21, 0, 71, 89, 0, 8, 99, 0, 10, 130, 0, 18, 142, 0, 22, 152, 0, 23, 163,
+ 0, 24, 202, 0, 0, 22, 8, 24, 44, 0, 131, 115, 101, 100, 0, 75, 106, 0, 23,
+ 115, 0, 0, 23, 44, 8, 11, 23, 44, 0, 132, 0, 12, 21, 26, 28, 19, 18, 6, 0,
+ 133, 114, 105, 103, 104, 116, 0, 17, 12, 16, 16, 18, 6, 0, 132, 105, 110, 103,
+ 0, 15, 22, 4, 44, 0, 131, 108, 115, 111, 0, 8, 22, 18, 18, 15, 0, 132, 115,
+ 101, 115, 0, 76, 173, 0, 18, 183, 0, 24, 193, 0, 0, 21, 6, 18, 19, 28, 11, 0,
+ 128, 101, 0, 15, 4, 44, 0, 131, 32, 108, 111, 116, 0, 22, 13, 44, 0, 131, 117,
+ 115, 116, 0, 23, 22, 13, 44, 0, 131, 117, 115, 116, 0, 87, 219, 0, 28, 228, 0,
+ 0, 24, 18, 5, 4, 0, 128, 32, 97, 0, 7, 18, 23, 0, 129, 97, 121, 0, 75, 246, 0,
+ 12, 28, 1, 14, 92, 1, 0, 76, 253, 0, 23, 20, 1, 0, 75, 4, 1, 26, 10, 1, 0, 26,
+ 0, 129, 99, 104, 0, 11, 44, 0, 132, 119, 104, 105, 99, 104, 0, 12, 26, 22, 0,
+ 129, 99, 104, 0, 80, 41, 1, 21, 53, 1, 22, 67, 1, 23, 76, 1, 0, 17, 4, 28, 7,
+ 0, 132, 110, 97, 109, 105, 99, 0, 23, 8, 16, 28, 22, 0, 132, 109, 101, 116,
+ 114, 105, 99, 0, 4, 15, 6, 0, 129, 115, 105, 99, 0, 8, 11, 23, 22, 4, 0, 134,
+ 101, 115, 116, 104, 101, 116, 105, 99, 0, 8, 11, 6, 0, 129, 99, 107, 0, 68,
+ 122, 1, 8, 134, 1, 15, 84, 2, 17, 124, 2, 18, 180, 2, 21, 207, 2, 24, 7, 3, 0,
+ 12, 15, 25, 17, 12, 0, 131, 97, 108, 105, 100, 0, 70, 168, 1, 7, 178, 1, 8,
+ 188, 1, 9, 199, 1, 10, 212, 1, 12, 222, 1, 19, 248, 1, 21, 3, 2, 22, 38, 2,
+ 23, 50, 2, 24, 75, 2, 0, 12, 25, 7, 4, 0, 130, 115, 101, 100, 0, 8, 5, 16, 8,
+ 0, 129, 100, 101, 100, 0, 21, 10, 10, 4, 0, 132, 114, 101, 101, 100, 0, 12,
+ 22, 12, 23, 4, 22, 0, 131, 102, 105, 101, 100, 0, 17, 12, 22, 0, 131, 103,
+ 110, 101, 100, 0, 85, 229, 1, 25, 238, 1, 0, 21, 24, 5, 0, 131, 105, 101, 100,
+ 0, 21, 8, 7, 0, 131, 105, 118, 101, 100, 0, 22, 4, 15, 8, 0, 131, 112, 115,
+ 101, 100, 0, 72, 13, 2, 10, 22, 2, 24, 29, 2, 0, 9, 8, 21, 0, 129, 114, 101,
+ 100, 0, 4, 44, 0, 128, 101, 100, 0, 6, 6, 18, 0, 129, 114, 101, 100, 0, 4, 19,
+ 15, 8, 0, 132, 97, 112, 115, 101, 100, 0, 68, 57, 2, 22, 68, 2, 0, 8, 15, 8,
+ 21, 0, 132, 97, 116, 101, 100, 0, 17, 12, 0, 128, 97, 100, 0, 15, 6, 17, 12,
+ 0, 129, 100, 101, 0, 76, 91, 2, 18, 112, 2, 0, 8, 0, 73, 100, 2, 28, 106, 2,
+ 0, 131, 105, 101, 108, 100, 0, 131, 105, 101, 108, 100, 0, 22, 8, 21, 11, 23,
+ 0, 130, 104, 111, 108, 100, 0, 72, 134, 2, 12, 145, 2, 24, 155, 2, 0, 21, 12,
+ 9, 0, 132, 114, 105, 101, 110, 100, 0, 8, 21, 9, 0, 131, 105, 101, 110, 100,
+ 0, 82, 162, 2, 21, 172, 2, 0, 21, 21, 4, 0, 132, 111, 117, 110, 100, 0, 4, 0,
+ 130, 111, 117, 110, 100, 0, 76, 187, 2, 21, 198, 2, 0, 8, 21, 19, 0, 132, 101,
+ 114, 105, 111, 100, 0, 6, 8, 21, 0, 130, 111, 114, 100, 0, 68, 217, 2, 8, 228,
+ 2, 24, 253, 2, 0, 26, 18, 9, 0, 131, 114, 119, 97, 114, 100, 0, 71, 235, 2,
+ 12, 245, 2, 0, 12, 22, 17, 18, 6, 0, 128, 101, 100, 0, 26, 0, 131, 101, 105,
+ 114, 100, 0, 4, 10, 44, 0, 131, 117, 97, 114, 100, 0, 18, 21, 4, 0, 128, 110,
+ 100, 0, 68, 67, 3, 5, 80, 3, 6, 123, 3, 7, 251, 3, 8, 23, 4, 10, 107, 4, 11,
+ 227, 4, 12, 52, 5, 15, 61, 5, 17, 0, 6, 18, 27, 6, 19, 37, 6, 21, 47, 6, 22,
+ 156, 6, 23, 82, 7, 24, 45, 8, 25, 115, 8, 0, 6, 19, 22, 8, 16, 4, 17, 0, 130,
+ 97, 99, 101, 0, 68, 87, 3, 15, 97, 3, 0, 15, 12, 4, 25, 4, 0, 128, 108, 101,
+ 0, 68, 104, 3, 24, 115, 3, 0, 15, 12, 4, 25, 4, 0, 130, 98, 108, 101, 0, 18,
+ 7, 0, 130, 98, 108, 101, 0, 72, 136, 3, 12, 147, 3, 17, 156, 3, 19, 238, 3, 0,
+ 21, 8, 9, 8, 21, 0, 129, 110, 99, 101, 0, 8, 19, 0, 131, 105, 101, 99, 101, 0,
+ 68, 166, 3, 8, 179, 3, 24, 228, 3, 0, 23, 8, 19, 16, 18, 6, 0, 131, 101, 110,
+ 99, 101, 0, 85, 186, 3, 23, 217, 3, 0, 8, 0, 73, 195, 3, 15, 208, 3, 0, 21,
+ 44, 0, 134, 101, 102, 101, 114, 101, 110, 99, 101, 0, 18, 23, 0, 131, 97, 110,
+ 99, 101, 0, 17, 12, 4, 16, 0, 129, 97, 110, 99, 101, 0, 20, 8, 22, 0, 130,
+ 101, 110, 99, 101, 0, 4, 22, 8, 16, 4, 17, 0, 131, 112, 97, 99, 101, 0, 12,
+ 21, 8, 25, 0, 82, 7, 4, 25, 13, 4, 0, 130, 114, 105, 100, 101, 0, 18, 0, 133,
+ 101, 114, 114, 105, 100, 101, 0, 23, 0, 68, 38, 4, 12, 49, 4, 17, 59, 4, 23,
+ 94, 4, 0, 21, 4, 24, 10, 0, 130, 110, 116, 101, 101, 0, 16, 16, 18, 6, 0, 129,
+ 116, 101, 101, 0, 4, 21, 0, 68, 69, 4, 24, 81, 4, 0, 10, 0, 134, 117, 97, 114,
+ 97, 110, 116, 101, 101, 0, 4, 10, 0, 135, 117, 97, 114, 97, 110, 116, 101,
+ 101, 0, 12, 16, 18, 6, 0, 132, 109, 105, 116, 116, 101, 101, 0, 68, 117, 4, 7,
+ 184, 4, 16, 218, 4, 0, 74, 130, 4, 17, 141, 4, 22, 150, 4, 24, 159, 4, 0, 21,
+ 18, 16, 0, 131, 116, 103, 97, 103, 101, 0, 11, 6, 0, 131, 97, 110, 103, 101,
+ 0, 8, 16, 0, 130, 115, 97, 103, 101, 0, 10, 0, 108, 168, 4, 4, 174, 4, 0, 131,
+ 97, 117, 103, 101, 0, 15, 0, 132, 110, 103, 117, 97, 103, 101, 0, 8, 15, 0,
+ 68, 197, 4, 12, 203, 4, 15, 212, 4, 0, 131, 108, 101, 103, 101, 0, 25, 12, 21,
+ 19, 0, 130, 103, 101, 0, 4, 0, 130, 103, 101, 0, 4, 12, 0, 131, 109, 97, 103,
+ 101, 0, 23, 0, 71, 245, 4, 16, 255, 4, 18, 9, 5, 22, 18, 5, 23, 27, 5, 0, 17,
+ 4, 44, 0, 130, 32, 116, 104, 101, 0, 18, 21, 9, 0, 130, 32, 116, 104, 101, 0,
+ 23, 44, 0, 130, 32, 116, 104, 101, 0, 4, 44, 0, 130, 32, 116, 104, 101, 0, 68,
+ 34, 5, 24, 42, 5, 0, 44, 0, 130, 32, 116, 104, 101, 0, 18, 5, 4, 0, 130, 32,
+ 116, 104, 101, 0, 29, 22, 44, 0, 130, 105, 122, 101, 0, 69, 77, 5, 12, 190, 5,
+ 19, 201, 5, 22, 241, 5, 25, 249, 5, 0, 68, 87, 5, 12, 167, 5, 15, 179, 5, 0,
+ 74, 97, 5, 12, 107, 5, 15, 137, 5, 0, 12, 15, 8, 0, 131, 105, 98, 108, 101, 0,
+ 15, 0, 68, 116, 5, 12, 127, 5, 0, 25, 4, 0, 133, 105, 108, 97, 98, 108, 101,
+ 0, 4, 25, 4, 0, 132, 97, 98, 108, 101, 0, 68, 144, 5, 12, 155, 5, 0, 25, 4, 0,
+ 132, 105, 108, 97, 98, 108, 101, 0, 25, 4, 0, 133, 97, 105, 108, 97, 98, 108,
+ 101, 0, 4, 15, 12, 4, 25, 4, 0, 131, 98, 108, 101, 0, 12, 4, 25, 4, 0, 130,
+ 97, 98, 108, 101, 0, 26, 11, 44, 0, 132, 119, 104, 105, 108, 101, 0, 68, 211,
+ 5, 8, 220, 5, 18, 230, 5, 0, 8, 19, 0, 131, 111, 112, 108, 101, 0, 18, 19, 0,
+ 132, 101, 111, 112, 108, 101, 0, 8, 18, 19, 0, 133, 101, 111, 112, 108, 101,
+ 0, 4, 9, 0, 130, 108, 115, 101, 0, 8, 15, 0, 129, 101, 108, 0, 70, 7, 6, 12,
+ 16, 6, 0, 12, 22, 44, 0, 130, 110, 99, 101, 0, 8, 10, 28, 11, 0, 131, 105,
+ 101, 110, 101, 0, 22, 11, 23, 44, 0, 130, 111, 115, 101, 0, 15, 18, 8, 19, 0,
+ 130, 112, 108, 101, 0, 70, 66, 6, 8, 76, 6, 12, 87, 6, 18, 99, 6, 21, 127, 6,
+ 24, 134, 6, 0, 18, 22, 44, 0, 131, 99, 111, 114, 101, 0, 23, 11, 44, 0, 132,
+ 116, 104, 101, 114, 101, 0, 24, 20, 4, 0, 132, 99, 113, 117, 105, 114, 101, 0,
+ 71, 106, 6, 9, 115, 6, 0, 8, 5, 0, 131, 102, 111, 114, 101, 0, 21, 8, 11, 23,
+ 0, 131, 101, 102, 111, 114, 101, 0, 8, 11, 26, 0, 129, 101, 0, 23, 0, 108,
+ 143, 6, 4, 148, 6, 0, 130, 114, 117, 101, 0, 16, 4, 0, 130, 101, 117, 114, 0,
+ 68, 178, 6, 8, 203, 6, 12, 211, 6, 15, 226, 6, 17, 235, 6, 18, 9, 7, 24, 22,
+ 7, 0, 79, 185, 6, 24, 193, 6, 0, 9, 0, 131, 97, 108, 115, 101, 0, 6, 8, 5, 0,
+ 131, 97, 117, 115, 101, 0, 8, 11, 23, 0, 130, 115, 101, 0, 6, 21, 8, 6, 27, 8,
+ 0, 134, 101, 114, 99, 105, 115, 101, 0, 12, 4, 9, 0, 131, 108, 115, 101, 0,
+ 72, 242, 6, 18, 253, 6, 0, 22, 12, 15, 0, 132, 99, 101, 110, 115, 101, 0, 19,
+ 8, 21, 0, 132, 115, 112, 111, 110, 115, 101, 0, 19, 17, 4, 21, 23, 0, 131,
+ 115, 112, 111, 115, 101, 0, 68, 32, 7, 6, 61, 7, 18, 72, 7, 0, 70, 39, 7, 8,
+ 49, 7, 0, 6, 8, 5, 0, 132, 97, 117, 115, 101, 0, 6, 4, 5, 0, 134, 101, 99, 97,
+ 117, 115, 101, 0, 4, 8, 5, 0, 132, 99, 97, 117, 115, 101, 0, 6, 8, 5, 0, 131,
+ 97, 117, 115, 101, 0, 68, 95, 7, 8, 13, 8, 15, 24, 8, 25, 36, 8, 0, 71, 111,
+ 7, 10, 148, 7, 15, 161, 7, 19, 228, 7, 21, 238, 7, 0, 18, 16, 0, 80, 121, 7,
+ 18, 136, 7, 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, 18, 19, 18, 21, 19, 0, 132,
+ 97, 103, 97, 116, 101, 0, 70, 171, 7, 19, 184, 7, 24, 197, 7, 0, 24, 15, 4, 6,
+ 0, 133, 99, 117, 108, 97, 116, 101, 0, 16, 4, 8, 23, 0, 134, 109, 112, 108,
+ 97, 116, 101, 0, 70, 204, 7, 15, 217, 7, 0, 24, 15, 4, 6, 0, 134, 99, 117,
+ 108, 97, 116, 101, 0, 4, 6, 0, 132, 99, 117, 108, 97, 116, 101, 0, 7, 24, 0,
+ 132, 112, 100, 97, 116, 101, 0, 72, 245, 7, 24, 2, 8, 0, 17, 4, 10, 0, 134,
+ 101, 110, 101, 114, 97, 116, 101, 0, 6, 4, 0, 132, 99, 117, 114, 97, 116, 101,
+ 0, 15, 15, 4, 19, 0, 131, 101, 116, 116, 101, 0, 4, 19, 16, 8, 23, 0, 131,
+ 108, 97, 116, 101, 0, 12, 21, 19, 0, 129, 97, 116, 101, 0, 74, 55, 8, 12, 67,
+ 8, 22, 77, 8, 0, 8, 15, 15, 18, 6, 0, 130, 97, 103, 117, 101, 0, 20, 17, 24,
+ 0, 131, 105, 113, 117, 101, 0, 68, 84, 8, 21, 105, 8, 0, 6, 0, 108, 93, 8, 8,
+ 98, 8, 0, 130, 117, 115, 101, 0, 5, 0, 130, 117, 115, 101, 0, 8, 19, 0, 132,
+ 117, 114, 115, 117, 101, 0, 76, 122, 8, 18, 147, 8, 0, 72, 129, 8, 15, 139, 8,
+ 0, 15, 8, 5, 0, 131, 105, 101, 118, 101, 0, 8, 5, 0, 129, 101, 118, 101, 0,
+ 82, 154, 8, 25, 161, 8, 0, 21, 19, 0, 130, 118, 101, 0, 5, 4, 0, 131, 111,
+ 118, 101, 0, 12, 8, 0, 75, 182, 8, 15, 189, 8, 21, 197, 8, 0, 6, 0, 130, 105,
+ 101, 102, 0, 8, 5, 0, 130, 105, 101, 102, 0, 5, 0, 130, 105, 101, 102, 0, 76,
+ 211, 8, 17, 221, 8, 0, 17, 18, 10, 44, 0, 130, 105, 110, 103, 0, 76, 228, 8,
+ 21, 58, 9, 0, 72, 244, 8, 11, 11, 9, 15, 24, 9, 21, 36, 9, 28, 47, 9, 0, 72,
+ 251, 8, 11, 2, 9, 0, 5, 0, 131, 105, 110, 103, 0, 6, 4, 6, 0, 131, 105, 110,
+ 103, 0, 23, 6, 4, 16, 0, 133, 116, 99, 104, 105, 110, 103, 0, 8, 12, 6, 0,
+ 133, 101, 105, 108, 105, 110, 103, 0, 24, 6, 8, 21, 0, 130, 114, 105, 110,
+ 103, 0, 23, 28, 17, 4, 0, 131, 104, 105, 110, 103, 0, 12, 23, 22, 0, 131, 114,
+ 105, 110, 103, 0, 70, 87, 9, 8, 142, 9, 10, 154, 9, 12, 164, 9, 22, 173, 9,
+ 23, 191, 9, 0, 75, 100, 9, 12, 109, 9, 15, 119, 9, 21, 127, 9, 0, 12, 26, 0,
+ 131, 104, 105, 99, 104, 0, 23, 26, 22, 0, 131, 105, 116, 99, 104, 0, 11, 26,
+ 0, 130, 105, 99, 104, 0, 4, 8, 22, 4, 8, 21, 0, 134, 115, 101, 97, 114, 99,
+ 104, 0, 23, 7, 17, 4, 44, 0, 130, 32, 116, 104, 101, 0, 17, 8, 21, 23, 22, 0,
+ 128, 116, 104, 0, 6, 11, 26, 0, 130, 105, 99, 104, 0, 12, 15, 19, 16, 18, 6,
+ 4, 0, 134, 99, 111, 109, 112, 108, 105, 115, 104, 0, 74, 201, 9, 12, 225, 9,
+ 21, 236, 9, 0, 72, 208, 9, 12, 218, 9, 0, 21, 23, 22, 0, 130, 110, 103, 116,
+ 104, 0, 8, 11, 0, 129, 104, 116, 0, 26, 7, 17, 4, 5, 0, 129, 100, 116, 104, 0,
+ 24, 23, 44, 0, 131, 114, 117, 116, 104, 0, 21, 8, 11, 23, 44, 0, 129, 105,
+ 114, 0, 17, 0, 76, 9, 10, 24, 20, 10, 0, 23, 11, 44, 0, 132, 116, 104, 105,
+ 110, 107, 0, 12, 11, 23, 0, 130, 110, 107, 0, 68, 50, 10, 7, 134, 10, 8, 177,
+ 10, 9, 17, 11, 15, 26, 11, 23, 55, 11, 24, 64, 11, 0, 76, 60, 10, 23, 71, 10,
+ 24, 96, 10, 0, 6, 19, 28, 23, 0, 131, 105, 99, 97, 108, 0, 76, 78, 10, 24, 86,
+ 10, 0, 17, 12, 0, 129, 105, 97, 108, 0, 21, 12, 25, 0, 131, 116, 117, 97, 108,
+ 0, 81, 106, 10, 21, 115, 10, 23, 124, 10, 0, 4, 44, 0, 130, 110, 117, 97, 108,
+ 0, 24, 23, 4, 17, 0, 130, 97, 108, 0, 12, 25, 0, 131, 114, 116, 117, 97, 108,
+ 0, 24, 0, 82, 143, 10, 26, 167, 10, 0, 70, 153, 10, 11, 157, 10, 26, 163, 10,
+ 0, 129, 108, 100, 0, 22, 0, 129, 108, 100, 0, 129, 108, 100, 0, 18, 44, 0,
+ 132, 119, 111, 117, 108, 100, 0, 74, 193, 10, 15, 201, 10, 19, 247, 10, 23,
+ 255, 10, 24, 7, 11, 0, 17, 12, 22, 0, 129, 108, 101, 0, 68, 208, 10, 15, 234,
+ 10, 0, 21, 0, 68, 217, 10, 21, 224, 10, 0, 19, 0, 129, 108, 101, 108, 0, 4,
+ 19, 0, 132, 97, 108, 108, 101, 108, 0, 4, 21, 21, 4, 19, 0, 133, 97, 108, 108,
+ 101, 108, 0, 18, 8, 19, 0, 129, 108, 101, 0, 23, 12, 15, 0, 129, 108, 101, 0,
+ 7, 8, 11, 6, 22, 0, 129, 108, 101, 0, 8, 22, 28, 16, 0, 129, 108, 102, 0, 12,
+ 9, 0, 79, 36, 11, 24, 46, 11, 0, 15, 24, 9, 0, 132, 102, 105, 108, 108, 0, 9,
+ 0, 131, 108, 102, 105, 108, 108, 0, 24, 22, 8, 21, 0, 129, 108, 116, 0, 9, 23,
+ 4, 8, 21, 10, 0, 133, 97, 116, 101, 102, 117, 108, 0, 68, 89, 11, 15, 106, 11,
+ 21, 117, 11, 0, 21, 10, 18, 23, 6, 8, 19, 22, 0, 132, 114, 111, 103, 114, 97,
+ 109, 0, 8, 5, 18, 21, 19, 0, 130, 108, 101, 109, 0, 18, 9, 18, 6, 0, 131, 110,
+ 102, 111, 114, 109, 0, 68, 166, 11, 7, 206, 11, 8, 215, 11, 10, 58, 12, 12,
+ 141, 12, 14, 153, 12, 18, 192, 12, 19, 108, 13, 21, 120, 13, 22, 131, 13, 24,
+ 141, 13, 26, 164, 13, 0, 12, 0, 74, 175, 11, 23, 183, 11, 0, 4, 44, 0, 130,
+ 97, 105, 110, 0, 81, 190, 11, 21, 198, 11, 0, 18, 6, 0, 130, 97, 105, 110, 0,
+ 8, 6, 0, 130, 97, 105, 110, 0, 24, 18, 9, 44, 0, 129, 110, 100, 0, 71, 231,
+ 11, 8, 241, 11, 10, 27, 12, 19, 39, 12, 22, 48, 12, 0, 15, 12, 11, 6, 0, 129,
+ 114, 101, 110, 0, 87, 248, 11, 26, 17, 12, 0, 72, 255, 11, 26, 7, 12, 0, 5, 0,
+ 130, 119, 101, 101, 110, 0, 8, 5, 0, 132, 116, 119, 101, 101, 110, 0, 8, 5, 0,
+ 131, 116, 119, 101, 101, 110, 0, 18, 7, 28, 11, 0, 131, 114, 111, 103, 101,
+ 110, 0, 4, 11, 44, 0, 129, 112, 101, 110, 0, 18, 18, 11, 6, 0, 131, 115, 101,
+ 110, 0, 72, 65, 12, 12, 76, 12, 0, 12, 21, 18, 9, 0, 131, 101, 105, 103, 110,
+ 0, 75, 95, 12, 15, 101, 12, 17, 109, 12, 18, 118, 12, 21, 125, 12, 22, 132,
+ 12, 0, 23, 0, 129, 110, 103, 0, 15, 4, 0, 131, 105, 103, 110, 0, 21, 4, 8, 15,
+ 0, 129, 110, 103, 0, 10, 44, 0, 129, 110, 103, 0, 23, 22, 0, 129, 110, 103, 0,
+ 4, 44, 0, 130, 115, 105, 103, 110, 0, 23, 4, 21, 8, 6, 0, 131, 116, 97, 105,
+ 110, 0, 75, 160, 12, 12, 169, 12, 0, 12, 23, 0, 131, 104, 105, 110, 107, 0,
+ 75, 176, 12, 23, 182, 12, 0, 23, 0, 129, 110, 107, 0, 11, 44, 0, 132, 116,
+ 104, 105, 110, 107, 0, 76, 202, 12, 22, 86, 13, 23, 96, 13, 0, 70, 212, 12,
+ 22, 225, 12, 23, 251, 12, 0, 12, 22, 8, 7, 0, 133, 99, 105, 115, 105, 111,
+ 110, 0, 68, 232, 12, 22, 241, 12, 0, 12, 15, 0, 131, 105, 115, 111, 110, 0, 4,
+ 6, 6, 18, 0, 131, 105, 111, 110, 0, 68, 14, 13, 7, 27, 13, 12, 37, 13, 15, 52,
+ 13, 17, 64, 13, 22, 76, 13, 0, 21, 8, 5, 4, 0, 132, 114, 97, 116, 105, 111,
+ 110, 0, 7, 4, 0, 131, 105, 116, 105, 111, 110, 0, 23, 12, 19, 8, 21, 0, 134,
+ 101, 116, 105, 116, 105, 111, 110, 0, 4, 8, 21, 0, 133, 108, 97, 116, 105,
+ 111, 110, 0, 6, 24, 9, 0, 133, 110, 99, 116, 105, 111, 110, 0, 18, 19, 0, 131,
+ 105, 116, 105, 111, 110, 0, 12, 25, 12, 7, 0, 129, 105, 111, 110, 0, 12, 6, 4,
+ 21, 9, 0, 131, 116, 105, 111, 110, 0, 19, 11, 4, 0, 132, 104, 97, 112, 112,
+ 101, 110, 0, 23, 24, 8, 21, 0, 131, 116, 117, 114, 110, 0, 10, 12, 11, 23, 0,
+ 130, 110, 103, 115, 0, 85, 148, 13, 23, 157, 13, 0, 23, 8, 21, 0, 130, 117,
+ 114, 110, 0, 8, 21, 0, 128, 114, 110, 0, 18, 14, 17, 24, 0, 130, 110, 111,
+ 119, 110, 0, 71, 185, 13, 17, 196, 13, 26, 205, 13, 0, 8, 24, 22, 19, 0, 131,
+ 101, 117, 100, 111, 0, 26, 14, 44, 0, 130, 110, 111, 119, 0, 79, 212, 13, 17,
+ 220, 13, 0, 15, 18, 9, 0, 129, 111, 119, 0, 14, 44, 0, 129, 111, 119, 0, 86,
+ 234, 13, 24, 244, 13, 0, 4, 11, 21, 8, 19, 0, 129, 112, 115, 0, 18, 18, 15, 0,
+ 129, 107, 117, 112, 0, 68, 28, 14, 8, 93, 14, 11, 103, 15, 15, 113, 15, 18,
+ 127, 15, 19, 144, 15, 22, 155, 15, 23, 164, 15, 24, 176, 15, 28, 185, 15, 0,
+ 76, 38, 14, 15, 48, 14, 24, 82, 14, 0, 15, 12, 16, 12, 22, 0, 130, 97, 114, 0,
+ 76, 55, 14, 24, 66, 14, 0, 16, 16, 12, 22, 0, 132, 105, 108, 97, 114, 0, 6,
+ 12, 23, 4, 19, 0, 134, 114, 116, 105, 99, 117, 108, 97, 114, 0, 15, 10, 8, 21,
+ 0, 131, 117, 108, 97, 114, 0, 68, 124, 14, 7, 132, 14, 11, 145, 14, 12, 203,
+ 14, 15, 229, 14, 16, 239, 14, 17, 249, 14, 18, 37, 15, 23, 45, 15, 25, 76, 15,
+ 0, 15, 6, 0, 130, 101, 97, 114, 0, 17, 4, 15, 4, 6, 0, 132, 101, 110, 100, 97,
+ 114, 0, 74, 152, 14, 23, 163, 14, 0, 12, 8, 11, 0, 133, 105, 103, 104, 101,
+ 114, 0, 72, 173, 14, 15, 185, 14, 24, 194, 14, 0, 11, 10, 18, 23, 0, 133, 101,
+ 116, 104, 101, 114, 0, 18, 44, 0, 132, 116, 104, 101, 114, 0, 9, 0, 131, 114,
+ 116, 104, 101, 114, 0, 75, 210, 14, 15, 218, 14, 0, 23, 44, 0, 130, 101, 105,
+ 114, 0, 19, 16, 18, 6, 0, 131, 105, 108, 101, 114, 0, 23, 12, 9, 0, 131, 108,
+ 116, 101, 114, 0, 16, 4, 21, 10, 44, 0, 129, 97, 114, 0, 76, 0, 15, 23, 12,
+ 15, 0, 10, 10, 8, 5, 0, 132, 105, 110, 110, 101, 114, 0, 76, 19, 15, 22, 28,
+ 15, 0, 18, 19, 0, 131, 110, 116, 101, 114, 0, 12, 15, 0, 130, 101, 110, 101,
+ 114, 0, 9, 8, 5, 0, 129, 114, 101, 0, 75, 52, 15, 24, 62, 15, 0, 18, 17, 4, 0,
+ 131, 116, 104, 101, 114, 0, 19, 18, 16, 6, 0, 134, 111, 109, 112, 117, 116,
+ 101, 114, 0, 72, 83, 15, 26, 94, 15, 0, 8, 21, 8, 11, 26, 0, 131, 118, 101,
+ 114, 0, 18, 11, 0, 130, 101, 118, 101, 114, 0, 8, 23, 18, 44, 0, 130, 104,
+ 101, 114, 0, 4, 24, 6, 12, 23, 21, 4, 19, 0, 130, 108, 97, 114, 0, 23, 4, 21,
+ 8, 23, 17, 12, 0, 135, 116, 101, 114, 97, 116, 111, 114, 0, 23, 15, 15, 24,
+ 17, 0, 130, 112, 116, 114, 0, 4, 8, 28, 44, 0, 129, 114, 115, 0, 18, 4, 21, 8,
+ 19, 18, 0, 130, 116, 111, 114, 0, 6, 18, 44, 0, 129, 99, 117, 114, 0, 8, 25,
+ 8, 44, 0, 129, 114, 121, 0, 68, 219, 15, 8, 3, 16, 10, 147, 16, 19, 158, 16,
+ 21, 170, 16, 22, 181, 16, 23, 77, 17, 24, 85, 17, 0, 75, 229, 15, 19, 240, 15,
+ 28, 250, 15, 0, 19, 21, 8, 19, 0, 131, 104, 97, 112, 115, 0, 11, 21, 8, 19, 0,
+ 130, 97, 112, 115, 0, 26, 15, 4, 0, 130, 97, 121, 115, 0, 68, 19, 16, 6, 42,
+ 16, 12, 53, 16, 15, 129, 16, 22, 136, 16, 0, 71, 26, 16, 14, 34, 16, 0, 12,
+ 44, 0, 130, 101, 97, 115, 0, 23, 0, 131, 97, 107, 101, 115, 0, 8, 7, 17, 12,
+ 0, 131, 105, 99, 101, 115, 0, 70, 63, 16, 21, 102, 16, 23, 117, 16, 0, 72, 70,
+ 16, 12, 80, 16, 0, 7, 17, 12, 0, 132, 105, 99, 101, 115, 0, 71, 87, 16, 23,
+ 94, 16, 0, 17, 12, 0, 130, 101, 115, 0, 21, 8, 25, 0, 130, 101, 115, 0, 18,
+ 22, 8, 6, 6, 4, 0, 132, 115, 111, 114, 105, 101, 115, 0, 15, 12, 5, 4, 0, 131,
+ 105, 116, 105, 101, 115, 0, 4, 9, 0, 129, 115, 101, 0, 18, 11, 6, 44, 0, 130,
+ 111, 115, 101, 115, 0, 12, 17, 11, 23, 0, 131, 105, 110, 103, 115, 0, 4, 8,
+ 11, 21, 8, 19, 0, 131, 97, 112, 115, 0, 8, 4, 28, 44, 0, 131, 101, 97, 114,
+ 115, 0, 68, 191, 16, 8, 203, 16, 18, 66, 17, 0, 21, 4, 5, 16, 8, 0, 130, 114,
+ 97, 115, 115, 0, 70, 216, 16, 17, 240, 16, 21, 13, 17, 22, 42, 17, 0, 70, 223,
+ 16, 24, 232, 16, 0, 18, 21, 19, 0, 131, 101, 115, 115, 0, 22, 0, 130, 99, 101,
+ 115, 115, 0, 76, 247, 16, 22, 3, 17, 0, 22, 22, 24, 5, 0, 133, 105, 110, 101,
+ 115, 115, 0, 24, 5, 0, 131, 105, 110, 101, 115, 115, 0, 19, 0, 85, 22, 17, 24,
+ 33, 17, 0, 24, 22, 0, 133, 112, 112, 114, 101, 115, 115, 0, 22, 0, 131, 112,
+ 114, 101, 115, 115, 0, 70, 49, 17, 18, 58, 17, 0, 6, 24, 22, 0, 131, 101, 115,
+ 115, 0, 19, 0, 130, 115, 101, 115, 115, 0, 21, 6, 6, 4, 0, 132, 114, 111, 115,
+ 115, 0, 21, 12, 9, 0, 129, 115, 116, 0, 82, 92, 17, 22, 106, 17, 0, 15, 18,
+ 16, 18, 17, 4, 0, 132, 97, 108, 111, 117, 115, 0, 17, 8, 6, 17, 18, 6, 0, 133,
+ 115, 101, 110, 115, 117, 115, 0, 68, 158, 17, 8, 188, 17, 10, 217, 17, 11,
+ 227, 17, 12, 25, 18, 15, 36, 18, 16, 47, 18, 17, 59, 18, 18, 151, 19, 19, 189,
+ 19, 22, 217, 19, 24, 107, 20, 0, 85, 165, 17, 26, 176, 17, 0, 8, 19, 8, 22, 0,
+ 131, 97, 114, 97, 116, 0, 11, 8, 16, 18, 22, 0, 131, 119, 104, 97, 116, 0, 68,
+ 195, 17, 17, 204, 17, 0, 21, 10, 44, 0, 130, 101, 97, 116, 0, 16, 17, 21, 8,
+ 25, 18, 10, 0, 130, 101, 110, 116, 0, 11, 24, 4, 6, 0, 130, 103, 104, 116, 0,
+ 71, 237, 17, 10, 244, 17, 12, 14, 18, 0, 12, 26, 0, 129, 116, 104, 0, 81, 251,
+ 17, 24, 2, 18, 0, 8, 15, 0, 129, 116, 104, 0, 18, 21, 11, 23, 0, 133, 111,
+ 117, 103, 104, 116, 0, 10, 17, 18, 23, 0, 131, 105, 103, 104, 116, 0, 23, 24,
+ 18, 5, 4, 0, 129, 32, 105, 116, 0, 22, 24, 8, 21, 0, 131, 115, 117, 108, 116,
+ 0, 4, 23, 21, 18, 19, 16, 12, 0, 129, 110, 116, 0, 68, 72, 18, 8, 128, 18, 21,
+ 132, 19, 22, 143, 19, 0, 76, 85, 18, 17, 96, 18, 21, 107, 18, 23, 117, 18, 0,
+ 19, 12, 6, 8, 21, 0, 130, 101, 110, 116, 0, 12, 16, 18, 21, 19, 0, 130, 101,
+ 110, 116, 0, 4, 19, 19, 4, 0, 130, 101, 110, 116, 0, 8, 19, 16, 18, 6, 0, 130,
+ 101, 110, 116, 0, 76, 144, 18, 16, 177, 18, 21, 21, 19, 25, 111, 19, 29, 121,
+ 19, 0, 70, 151, 18, 19, 164, 18, 0, 8, 9, 9, 8, 0, 133, 105, 99, 105, 101,
+ 110, 116, 0, 8, 6, 8, 21, 0, 133, 105, 112, 105, 101, 110, 116, 0, 72, 190,
+ 18, 17, 202, 18, 21, 235, 18, 23, 10, 19, 0, 25, 18, 10, 0, 131, 114, 110,
+ 109, 101, 110, 116, 0, 72, 209, 18, 21, 221, 18, 0, 25, 18, 10, 0, 132, 114,
+ 110, 109, 101, 110, 116, 0, 18, 25, 18, 10, 0, 134, 101, 114, 110, 109, 101,
+ 110, 116, 0, 72, 242, 18, 18, 253, 18, 0, 25, 18, 10, 0, 131, 110, 109, 101,
+ 110, 116, 0, 25, 18, 10, 0, 133, 101, 114, 110, 109, 101, 110, 116, 0, 4, 23,
+ 22, 0, 131, 101, 109, 101, 110, 116, 0, 68, 34, 19, 8, 45, 19, 9, 57, 19, 21,
+ 68, 19, 0, 19, 4, 0, 132, 112, 97, 114, 101, 110, 116, 0, 9, 12, 7, 0, 132,
+ 102, 101, 114, 101, 110, 116, 0, 9, 12, 7, 0, 131, 101, 114, 101, 110, 116, 0,
+ 68, 75, 19, 8, 99, 19, 0, 19, 0, 68, 84, 19, 19, 92, 19, 0, 133, 112, 97, 114,
+ 101, 110, 116, 0, 4, 0, 131, 101, 110, 116, 0, 9, 12, 7, 0, 133, 102, 101,
+ 114, 101, 110, 116, 0, 8, 15, 8, 21, 0, 130, 97, 110, 116, 0, 12, 17, 10, 18,
+ 6, 0, 130, 97, 110, 116, 0, 8, 9, 9, 12, 7, 0, 129, 101, 110, 116, 0, 18, 6,
+ 0, 130, 110, 115, 116, 0, 81, 161, 19, 21, 171, 19, 22, 180, 19, 0, 7, 12, 7,
+ 0, 130, 32, 110, 111, 116, 0, 19, 8, 21, 0, 130, 111, 114, 116, 0, 16, 15, 4,
+ 0, 130, 111, 115, 116, 0, 72, 196, 19, 28, 207, 19, 0, 12, 6, 8, 21, 0, 131,
+ 101, 105, 112, 116, 0, 6, 17, 8, 0, 130, 114, 121, 112, 116, 0, 72, 236, 19,
+ 10, 21, 20, 12, 30, 20, 16, 59, 20, 17, 69, 20, 24, 96, 20, 0, 74, 243, 19,
+ 21, 10, 20, 0, 76, 250, 19, 24, 2, 20, 0, 11, 0, 130, 104, 101, 115, 116, 0,
+ 22, 0, 130, 103, 101, 115, 116, 0, 23, 17, 12, 0, 131, 101, 114, 101, 115,
+ 116, 0, 21, 4, 15, 0, 129, 101, 115, 116, 0, 73, 37, 20, 17, 49, 20, 0, 8, 17,
+ 4, 16, 0, 132, 105, 102, 101, 115, 116, 0, 4, 10, 4, 0, 131, 105, 110, 115,
+ 116, 0, 18, 15, 4, 0, 131, 109, 111, 115, 116, 0, 68, 76, 20, 17, 87, 20, 0,
+ 12, 10, 4, 0, 132, 97, 105, 110, 115, 116, 0, 12, 4, 10, 4, 0, 130, 115, 116,
+ 0, 13, 4, 44, 0, 131, 100, 106, 117, 115, 116, 0, 70, 120, 20, 18, 144, 20,
+ 19, 168, 20, 23, 191, 20, 0, 72, 127, 20, 21, 137, 20, 0, 6, 27, 8, 0, 132,
+ 101, 99, 117, 116, 0, 12, 6, 0, 128, 105, 116, 0, 68, 151, 20, 5, 160, 20, 0,
+ 5, 0, 132, 97, 98, 111, 117, 116, 0, 5, 4, 0, 131, 111, 117, 116, 0, 87, 175,
+ 20, 24, 183, 20, 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, 23, 18, 5, 4, 0, 129,
+ 117, 116, 0, 72, 217, 20, 12, 253, 20, 0, 68, 224, 20, 12, 231, 20, 0, 11, 44,
+ 0, 129, 118, 101, 0, 70, 238, 20, 8, 246, 20, 0, 8, 21, 0, 130, 101, 105, 118,
+ 0, 6, 8, 21, 0, 129, 118, 0, 8, 11, 6, 4, 44, 0, 130, 105, 101, 118, 0, 76,
+ 15, 21, 17, 25, 21, 0, 8, 25, 8, 21, 0, 130, 105, 101, 119, 0, 18, 14, 44, 0,
+ 130, 110, 111, 119, 0, 70, 59, 21, 8, 118, 21, 11, 128, 21, 15, 146, 21, 17,
+ 87, 22, 21, 114, 22, 22, 12, 23, 23, 39, 23, 0, 68, 72, 21, 8, 84, 21, 12, 95,
+ 21, 19, 106, 21, 0, 21, 6, 18, 19, 28, 11, 0, 130, 105, 115, 121, 0, 24, 20,
+ 8, 21, 9, 0, 129, 110, 99, 121, 0, 21, 6, 18, 19, 28, 11, 0, 129, 115, 121, 0,
+ 24, 21, 14, 17, 4, 5, 0, 129, 116, 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, 68, 165, 21, 11, 232, 21, 14, 242, 21, 15, 250, 21, 18, 66, 22, 21, 76, 22,
+ 0, 69, 184, 21, 8, 193, 21, 15, 199, 21, 17, 208, 21, 21, 215, 21, 24, 224,
+ 21, 0, 18, 21, 19, 0, 129, 98, 108, 121, 0, 21, 0, 128, 108, 121, 0, 8, 21, 0,
+ 131, 97, 108, 108, 121, 0, 12, 9, 0, 128, 108, 121, 0, 8, 17, 8, 10, 0, 128,
+ 108, 121, 0, 23, 6, 4, 0, 128, 108, 121, 0, 10, 12, 15, 22, 0, 129, 116, 108,
+ 121, 0, 12, 15, 0, 129, 101, 108, 121, 0, 68, 4, 22, 5, 47, 22, 8, 56, 22, 0,
+ 86, 11, 22, 23, 35, 22, 0, 24, 0, 108, 20, 22, 22, 27, 22, 0, 131, 117, 97,
+ 108, 108, 121, 0, 24, 0, 132, 97, 108, 108, 121, 0, 24, 6, 4, 0, 133, 116,
+ 117, 97, 108, 108, 121, 0, 4, 5, 18, 21, 19, 0, 129, 121, 0, 4, 21, 0, 132,
+ 101, 97, 108, 108, 121, 0, 16, 18, 17, 4, 0, 130, 97, 108, 121, 0, 4, 16, 12,
+ 21, 19, 0, 129, 105, 108, 121, 0, 72, 94, 22, 19, 103, 22, 0, 18, 16, 44, 0,
+ 130, 110, 101, 121, 0, 4, 16, 18, 6, 0, 131, 112, 97, 110, 121, 0, 68, 127,
+ 22, 8, 231, 22, 18, 240, 22, 23, 253, 22, 0, 69, 143, 22, 12, 152, 22, 15,
+ 165, 22, 16, 193, 22, 22, 202, 22, 0, 12, 15, 0, 130, 114, 97, 114, 121, 0,
+ 15, 15, 12, 27, 24, 4, 0, 132, 105, 97, 114, 121, 0, 76, 172, 22, 15, 182, 22,
+ 0, 27, 24, 4, 0, 130, 105, 97, 114, 121, 0, 12, 27, 24, 4, 0, 131, 105, 97,
+ 114, 121, 0, 24, 22, 0, 130, 109, 97, 114, 121, 0, 8, 6, 0, 70, 212, 22, 8,
+ 223, 22, 0, 8, 17, 0, 133, 101, 115, 115, 97, 114, 121, 0, 17, 0, 130, 115,
+ 97, 114, 121, 0, 19, 18, 21, 19, 0, 128, 116, 121, 0, 10, 4, 23, 4, 6, 0, 132,
+ 101, 103, 111, 114, 121, 0, 17, 24, 6, 18, 44, 0, 134, 99, 111, 117, 110, 116,
+ 114, 121, 0, 4, 0, 85, 21, 23, 26, 32, 23, 0, 6, 18, 19, 28, 11, 0, 130, 105,
+ 115, 121, 0, 15, 4, 0, 129, 121, 115, 0, 73, 49, 23, 15, 57, 23, 21, 66, 23,
+ 0, 4, 22, 0, 129, 101, 116, 121, 0, 12, 5, 4, 0, 129, 105, 116, 121, 0, 19, 8,
+ 18, 21, 19, 0, 132, 112, 101, 114, 116, 121, 0};
+
diff --git a/users/gourdo1/autocorrect/autocorrection_data.h (small) b/users/gourdo1/autocorrect/autocorrection_data.h (small)
new file mode 100644
index 0000000000..f98471bb08
--- /dev/null
+++ b/users/gourdo1/autocorrect/autocorrection_data.h (small)
@@ -0,0 +1,152 @@
+// 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.
+
+// Generated code.
+
+// Autocorrection dictionary (71 entries):
+// :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
+// dosen't -> doesn't
+// 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
+// retrun -> return
+// retun -> return
+// reuslt -> result
+// reutrn -> return
+// saftey -> safety
+// seperate -> separate
+// singed -> signed
+// stirng -> string
+// strign -> string
+// swithc -> switch
+// swtich -> switch
+// thresold -> threshold
+// udpate -> update
+// widht -> width
+
+#define AUTOCORRECTION_MIN_LENGTH 5 // ":ture"
+#define AUTOCORRECTION_MAX_LENGTH 10 // "accomodate"
+
+static const uint8_t autocorrection_data[1120] 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, 32, 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, 116, 89, 3, 10, 102, 3, 11, 112,
+ 3, 15, 134, 3, 17, 145, 3, 22, 234, 3, 24, 248, 3, 0, 17, 8, 22, 18, 7, 0,
+ 132, 101, 115, 110, 39, 116, 0, 11, 24, 4, 6, 0, 130, 103, 104, 116, 0, 71,
+ 119, 3, 10, 126, 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, 155, 3, 8, 166, 3,
+ 22, 226, 3, 0, 21, 4, 19, 19, 4, 0, 130, 101, 110, 116, 0, 85, 173, 3, 25,
+ 216, 3, 0, 68, 180, 3, 21, 191, 3, 0, 19, 4, 0, 132, 112, 97, 114, 101, 110,
+ 116, 0, 4, 19, 0, 68, 201, 3, 19, 209, 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, 255, 3, 23, 22, 4, 0, 87, 6, 4, 24, 14, 4, 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, 45, 4, 8, 57, 4, 11, 67, 4, 21, 85, 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};
+
diff --git a/users/gourdo1/autocorrect/autocorrection_dict.txt b/users/gourdo1/autocorrect/autocorrection_dict.txt
new file mode 100644
index 0000000000..b5f293d96c
--- /dev/null
+++ b/users/gourdo1/autocorrect/autocorrection_dict.txt
@@ -0,0 +1,473 @@
+# 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.
+#
+#
+# This is a larger example typo dictionary containing 400 entries. It builds to
+# a table of about 6000 bytes, so you'll need a keyboard with a generous
+# amount of free firmware space to use the full dictionary. Alternatively, pick
+# out a subset of entries to a separate file, then build a table from that.
+#
+# Dictionary syntax:
+# Each line of this file defines one typo correction entry with the syntax
+# "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.
+#
+# For documentation about how to use this dictionary, see
+# https://getreuer.info/posts/keyboards/autocorrection
+#
+# Further resources:
+# * Wikipedia has a large list of common typos at
+# https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines
+#
+# * EmacsWiki has another list of typos at
+# https://www.emacswiki.org/emacs/autocorrection_abbrev_defs
+#
+# * You can find data on English word frequencies at
+# https://www.wordfrequency.info/samples.asp
+
+
+## 10 most common words.
+# The words "there", "about", "their", "would", "people", "which", "could",
+# "think", "other", and "because" are among the most common words in English
+# that are 5 letters or longer. (We don't include entries for words shorter than
+# that to avoid false triggering.)
+:htere -> there
+abbout -> about
+abotu -> about
+baout -> about
+:theri -> their
+:thier -> their
+:owudl -> would
+woudl -> would
+peaple -> people
+peolpe -> people
+peopel -> people
+poeple -> people
+poeople -> people
+:hwihc -> which
+whcih -> which
+whihc -> which
+whlch -> which
+wihch -> which
+coudl -> could
+:htikn -> think
+:htink -> think
+thikn -> think
+thiunk -> think
+tihkn -> think
+:olther -> other
+:otehr -> other
+baceause -> because
+beacuse -> because
+becasue -> because
+beccause -> because
+becouse -> because
+becuase -> because
+
+## Common words, 11-20.
+theese -> these
+:goign -> going
+:gonig -> going
+:yaers -> years
+:yeasr -> years
+:thsoe -> those
+shoudl -> should
+raelly -> really
+realy -> really
+relaly -> really
+bedore -> before
+befoer -> before
+littel -> little
+beeing -> being
+:hwile -> while
+
+## Common words, 21-30.
+aroud -> around
+arround -> around
+arund -> around
+thign -> thing
+thigsn -> things
+thnigs -> things
+anohter -> another
+beteen -> between
+beween -> between
+bewteen -> between
+:eveyr -> every
+:graet -> great
+:agian -> again
+:sicne -> since
+alwasy -> always
+alwyas -> always
+throught -> thought
+
+
+## Words especially susceptible to skipping or transposing a letter.
+# These entries are for words that are easy enough to spell, but not necessarily
+# easy to press the keys in the right order.
+# Catch misspellings of "achieves", "achieving", etc.
+:acheiv -> achiev
+almsot -> almost
+alomst -> almost
+chnage -> change
+chekc -> check
+childen -> children
+claer -> clear
+comapny -> company
+contian -> contain
+elasped -> elapsed
+feild -> field
+fitler -> filter
+firts -> first
+follwo -> follow
+:foudn -> found
+frequecy -> frequency
+firend -> friend
+freind -> friend
+heigth -> height
+iamge -> image
+inital -> initial
+intput -> input
+laguage -> language
+lenght -> length
+levle -> level
+libary -> library
+:moeny -> money
+mysefl -> myself
+ouptut -> output
+ouput -> output
+probaly -> probably
+probelm -> problem
+recrod -> record
+reponse -> response
+reprot -> report
+singel -> single
+stregth -> strength
+strengh -> strength
+tkaes -> takes
+therfore -> therefore
+todya -> today
+toghether -> together
+unkown -> unknown
+unqiue -> unique
+widht -> width
+
+
+## Words with tricky spelling.
+# If you are a good speller, you could drop this section.
+aberation -> aberration
+accross -> across
+adviced -> advised
+aledge -> allege
+alledge -> allege
+amature -> amateur
+anomolous -> anomalous
+anomoly -> anomaly
+aparent -> apparent
+aparrent -> apparent
+apparant -> apparent
+apparrent -> apparent
+asthetic -> aesthetic
+auxilary -> auxiliary
+auxillary -> auxiliary
+auxilliary -> auxiliary
+bankrupcy -> bankruptcy
+busness -> business
+bussiness -> business
+calander -> calendar
+commitee -> committee
+comittee -> committee
+competance -> competence
+competant -> competent
+concensus -> consensus
+cognizent -> cognizant
+copywrite: -> copyright
+choosen -> chosen
+collegue -> colleague
+excercise -> exercise
+:grammer -> grammar
+:guage -> gauge
+govement -> government
+govenment -> government
+goverment -> government
+governmnet -> government
+govorment -> government
+govornment -> government
+guaratee -> guarantee
+garantee -> guarantee
+gaurantee -> guarantee
+heirarchy -> hierarchy
+hygeine -> hygiene
+hypocracy -> hypocrisy
+hypocrasy -> hypocrisy
+hypocricy -> hypocrisy
+hypocrit: -> hypocrite
+looses: -> loses
+maintence -> maintenance
+morgage -> mortgage
+neccesary -> necessary
+necesary -> necessary
+pallete -> palette
+paralel -> parallel
+parralel -> parallel
+parrallel -> parallel
+priviledge -> privilege
+probablly -> probably
+prominant -> prominent
+propogate -> propagate
+proove -> prove
+psuedo -> pseudo
+reciept -> receipt
+# Catch misspellings of "receives", "receiving", etc.
+receiev -> receiv
+reciev -> receiv
+recepient -> recipient
+recipiant -> recipient
+relevent -> relevant
+repitition -> repetition
+safty -> safety
+saftey -> safety
+# Catch misspellings of "separate", "separating", etc.
+seperat -> separat
+spectogram -> spectrogram
+symetric -> symmetric
+tolerence -> tolerance
+
+
+## Words particularly for coding.
+# Entries for common code keywords ("const") and terminology ("lookup").
+cacheing -> caching
+complier -> compiler
+doulbe -> double
+dyanmic -> dynamic
+# As in "execute", "executable", "executing", ...
+excecut -> execut
+failse -> false
+fales -> false
+fasle -> false
+flase -> false
+indeces -> indices
+indecies -> indices
+indicies -> indices
+interator -> iterator
+looup -> lookup
+namesapce -> namespace
+namespcae -> namespace
+nulltpr -> nullptr
+operaotr -> operator
+overide -> override
+ovveride -> override
+poitner -> pointer
+:rference -> reference
+referece -> reference
+singed -> signed
+stirng -> string
+strign -> string
+swithc -> switch
+swtich -> switch
+teamplate -> template
+tempalte -> template
+:ture -> true
+retrun -> return
+retun -> return
+reutrn -> return
+cosnt -> const
+virutal -> virtual
+vitual -> virtual
+yeild -> yield
+
+
+## Catch skipped spaces between common words.
+:alot: -> a lot
+:andteh -> and the
+:andthe -> and the
+:asthe -> as the
+:atthe -> at the
+abouta -> about a
+aboutit -> about it
+aboutthe -> about the
+:tothe -> to the
+didnot -> did not
+fromthe -> from the
+
+
+## Various additional entries.
+:agred -> agreed
+:ajust -> adjust
+:anual -> annual
+:asign -> assign
+:aslo: -> also
+:casue -> cause
+:choses -> chooses
+:gaurd -> guard
+:haev -> have
+:hapen -> happen
+:idaes -> ideas
+:jsut: -> just
+:jstu: -> just
+:knwo -> know
+:konw -> know
+:kwno -> know
+:ocuntry -> country
+:ocur -> occur
+:socre -> score
+:szie -> size
+:the:the: -> the
+:turth -> truth
+:uesd: -> used
+:usally -> usually
+abilties -> abilities
+abilty -> ability
+abvove -> above
+accesories -> accessories
+accomodate -> accommodate
+acommodate -> accommodate
+acomplish -> accomplish
+actualy -> actually
+acurate -> accurate
+acutally -> actually
+addtion -> addition
+againnst -> against
+aganist -> against
+aggreed -> agreed
+agianst -> against
+ahppn -> happen
+allign -> align
+anytying -> anything
+aquire -> acquire
+availabe -> available
+availaible -> available
+availalbe -> available
+availble -> available
+availiable -> available
+avalable -> available
+avaliable -> available
+avilable -> available
+bandwith -> bandwidth
+begginer -> beginner
+beleif -> belief
+beleive -> believe
+belive -> believe
+breif -> brief
+burried -> buried
+caluclate -> calculate
+caluculate -> calculate
+calulate -> calculate
+catagory -> category
+cauhgt -> caught
+ceratin -> certain
+certian -> certain
+cheif -> chief
+cieling -> ceiling
+circut -> circuit
+clasic -> classic
+cmoputer -> computer
+coform -> conform
+comming: -> coming
+considerd -> considered
+dervied -> derived
+desicion -> decision
+diferent -> different
+diferrent -> different
+differnt -> different
+diffrent -> different
+divison -> division
+effecient -> efficient
+eligable -> eligible
+elpased -> elapsed
+embarass -> embarrass
+embeded -> embedded
+encypt -> encrypt
+finaly -> finally
+foriegn -> foreign
+foward -> forward
+fraciton -> fraction
+fucntion -> function
+fufill -> fulfill
+fullfill -> fulfill
+futher -> further
+ganerate -> generate
+generaly -> generally
+greatful -> grateful
+heigher -> higher
+higest -> highest
+howver -> however
+hydogen -> hydrogen
+importamt -> important
+inclued -> include
+insted -> instead
+intrest -> interest
+invliad -> invalid
+largst -> largest
+learnign -> learning
+liasion -> liaison
+likly -> likely
+lisense -> license
+listner -> listener
+macthing -> matching
+manefist -> manifest
+mesage -> message
+naturual -> natural
+occassion -> occasion
+occured -> occurred
+particualr -> particular
+paticular -> particular
+peice -> piece
+perhasp -> perhaps
+perheaps -> perhaps
+perhpas -> perhaps
+perphas -> perhaps
+persue -> pursue
+posess -> possess
+postion -> position
+preiod -> period
+primarly -> primarily
+privte -> private
+proccess -> process
+proeprty -> property
+propery -> property
+realtion -> relation
+reasearch -> research
+recuring -> recurring
+refered -> referred
+regluar -> regular
+releated -> related
+resutl -> result
+reuslt -> result
+reveiw -> review
+satisifed -> satisfied
+scheduel -> schedule
+sequnce -> sequence
+similiar -> similar
+simmilar -> similar
+slighly -> slightly
+somehwat -> somewhat
+statment -> statement
+sucess -> success
+succsess -> success
+sugest -> suggest
+sumary -> summary
+supress -> suppress
+surpress -> suppress
+thresold -> threshold
+tongiht -> tonight
+tranpose -> transpose
+typcial -> typical
+udpate -> update
+ususally -> usually
+verticies -> vertices
+whereever -> wherever
+wherre -> where
+wierd -> weird
+
diff --git a/users/gourdo1/autocorrect/make_autocorrection_data.py b/users/gourdo1/autocorrect/make_autocorrection_data.py
new file mode 100644
index 0000000000..8e0bcf9e8e
--- /dev/null
+++ b/users/gourdo1/autocorrect/make_autocorrection_data.py
@@ -0,0 +1,303 @@
+# 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.
+
+"""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
+ dosen't -> doesn't
+ 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, Iterator, 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 = ('apparent', 'association', 'available', 'classification',
+ 'effect', 'entertainment', 'fantastic', 'information',
+ 'integrate', 'international', 'language', 'loosest',
+ 'manual', 'nothing', 'provides', 'reference', 'statehood',
+ 'technology', 'virtually', 'wealthier', 'wonderful')
+
+KC_A = 4
+KC_SPC = 0x2c
+KC_QUOT = 0x34
+
+TYPO_CHARS = dict(
+ [
+ ("'", KC_QUOT),
+ (':', KC_SPC), # "Word break" character.
+ ] +
+ # Characters a-z.
+ [(chr(c), c + KC_A - ord('a')) for c in range(ord('a'), ord('z') + 1)]
+)
+
+
+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 in TYPO_CHARS, that
+ typos are not substrings of other typos, and checking that typos don't trigger
+ on CORRECT_WORDS.
+
+ Args:
+ file_name: String, path of the autocorrections dictionary.
+ Returns:
+ List of (typo, correction) tuples.
+ """
+
+ autocorrections = []
+ typos = set()
+ for line_number, typo, correction in parse_file_lines(file_name):
+ if typo in typos:
+ print(f'Warning:{line_number}: Ignoring duplicate typo: "{typo}"')
+ continue
+
+ # Check that `typo` is valid.
+ if not(all([c in TYPO_CHARS for c in typo])):
+ print(f'Error:{line_number}: Typo "{typo}" has '
+ 'characters other than ' + ''.join(TYPO_CHARS.keys()))
+ 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}"')
+
+ check_typo_against_dictionary(line_number, typo)
+
+ 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 parse_file_lines(file_name: str) -> Iterator[Tuple[int, str, str]]:
+ """Parses lines read from `file_name` into typo-correction pairs."""
+
+ 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(' ', ':')
+
+ yield line_number, typo, correction
+
+
+def check_typo_against_dictionary(line_number: int, typo: str) -> None:
+ """Checks `typo` against English dictionary words."""
+
+ 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}".')
+
+
+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: Dict[str, Any]) -> Dict[str, Any]:
+ 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: Dict[str, Any]) -> List[int]:
+ if not e['links']: # Handle a leaf table entry.
+ return e['data']
+ elif len(e['links']) == 1: # Handle a chain table entry.
+ return [TYPO_CHARS[c] for c in e['chars']] + [0]
+ else: # Handle a branch table entry.
+ data = []
+ for c, link in zip(e['chars'], e['links']):
+ data += [TYPO_CHARS[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))
+
+ return [b for e in table for b in serialize(e)] # Serialize final table.
+
+
+def encode_link(link: Dict[str, Any]) -> List[int]:
+ """Encodes a node link as two bytes."""
+ byte_offset = link['byte_offset']
+ if not (0 <= byte_offset <= 0xffff):
+ print('Error: The autocorrection table is too large, a node link exceeds '
+ '64KB limit. Try reducing the autocorrection dict to fewer entries.')
+ sys.exit(1)
+ return [byte_offset & 255, byte_offset >> 8]
+
+
+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)
+
+ def typo_len(e: Tuple[str, str]) -> int:
+ return 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',
+ textwrap.fill('static const uint8_t autocorrection_data[%d] PROGMEM = {%s};' % (
+ len(data), ', '.join(map(str, data))), width=80, 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/gourdo1/custom_double_taps.h b/users/gourdo1/custom_double_taps.h
new file mode 100644
index 0000000000..fe97b8cd1f
--- /dev/null
+++ b/users/gourdo1/custom_double_taps.h
@@ -0,0 +1,101 @@
+// Copyright 2022 Google LLC
+// SPDX-License-Identifier: Apache-2.0
+
+#pragma once
+
+#include "gourdo1.h"
+
+static bool process_capsnum(uint16_t keycode, keyrecord_t * record) {
+ static bool toggled = false;
+ static bool tapped = false;
+ static uint16_t tap_timer = 0;
+
+ if (keycode == CAPSNUM) {
+ if (user_config.double_tap_shift_for_capslock) {
+ // Act as TT(_NUMPADMOUSE)
+ if (record -> event.pressed) { // CAPSNUM key was pressed
+ // Check whether the key was recently tapped
+ if (tapped && !timer_expired(record -> event.time, tap_timer)) {
+ // This is a double tap (or possibly a triple tap or more)
+ // Toggle the layer on.
+ toggled = true;
+ } else if (toggled) {
+ // Otherwise if currently toggled, turn it off
+ toggled = false;
+ tapped = false;
+ layer_off(_NUMPADMOUSE);
+ }
+ // Set that the first tap occurred in a potential double tap
+ tapped = true;
+ tap_timer = record -> event.time + TAPPING_TERM;
+ layer_on(_NUMPADMOUSE);
+ } else if (!toggled) {
+ // If not currently toggled, turn off on key release
+ layer_off(_NUMPADMOUSE);
+ return false;
+ }
+ } else { // When double_tap_shift_for_capslock == false
+ // Act as KC_CAPS
+ if (record -> event.pressed) {
+ register_code(KC_CAPS);
+ } else {
+ unregister_code(KC_CAPS);
+ }
+ }
+ return false;
+ } else {
+ // On an event with any other key, reset the double tap state
+ tapped = false;
+ }
+ return true;
+}
+
+static bool process_esc_to_base(uint16_t keycode, keyrecord_t * record) {
+ static bool tapped = false;
+ static uint16_t tap_timer = 0;
+
+ if (keycode == KC_ESC) {
+ if (user_config.esc_double_tap_to_baselyr) {
+ if (record -> event.pressed) {
+ if (tapped && !timer_expired(record -> event.time, tap_timer)) {
+ // The key was double tapped.
+ layer_clear();
+ }
+ tapped = true;
+ tap_timer = record -> event.time + TAPPING_TERM;
+ }
+ }
+ } else {
+ // On an event with any other key, reset the double tap state.
+ tapped = false;
+ }
+ return true;
+}
+
+static bool process_lsft_for_caps(uint16_t keycode, keyrecord_t * record) {
+ static bool tapped = false;
+ static uint16_t tap_timer = 0;
+
+ if (keycode == KC_LSFT) {
+ if (user_config.double_tap_shift_for_capslock) {
+ if (!keymap_config.no_gui) {
+ if (record->event.pressed) {
+ if (tapped && !timer_expired(record->event.time, tap_timer)) {
+ // The key was double tapped.
+ //clear_mods(); // If needed, clear the mods.
+ // Do something interesting...
+ register_code(KC_CAPS);
+ }
+ tapped = true;
+ tap_timer = record->event.time + TAPPING_TERM;
+ } else {
+ unregister_code(KC_CAPS);
+ }
+ }
+ }
+ } else {
+ // On an event with any other key, reset the double tap state.
+ tapped = false;
+ }
+ return true;
+}
diff --git a/users/gourdo1/gourdo1.c b/users/gourdo1/gourdo1.c
index b964729be9..26ecd8c1c0 100644
--- a/users/gourdo1/gourdo1.c
+++ b/users/gourdo1/gourdo1.c
@@ -1,6 +1,6 @@
/* Copyright 2021 Jonavin Eng @Jonavin
- Copyright 2022 gourdo1 <jcblake@outlook.com>
-
+ Copyright 2022 gourdo1 <gourdo1@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 2 of the License, or
@@ -19,35 +19,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "gourdo1.h"
-#include "caps_word.h"
-
-#ifdef TD_LSFT_CAPSLOCK_ENABLE
-// Tap once for shift, twice for Caps Lock but only if Win Key in not disabled
-void dance_LSFT_each_tap(qk_tap_dance_state_t * state, void * user_data) {
- if (state -> count == 1 || keymap_config.no_gui) {
- register_code16(KC_LSFT);
- } else {
- register_code(KC_CAPS);
- }
-}
+#include "custom_double_taps.h"
-void dance_LSFT_reset(qk_tap_dance_state_t * state, void * user_data) {
- if (state -> count == 1 || keymap_config.no_gui) {
- unregister_code16(KC_LSFT);
- } else {
- unregister_code(KC_CAPS);
- unregister_code16(KC_LSFT);
- }
-}
-// Tap Dance definitions
-qk_tap_dance_action_t tap_dance_actions[] = {
- // Tap once for shift, twice for Caps Lock
- [TD_LSFT_CAPSLOCK] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS),
- [TD_LSFT_CAPS_WIN] = ACTION_TAP_DANCE_FN_ADVANCED(dance_LSFT_each_tap, NULL, dance_LSFT_reset),
- // Tap once for Escape, twice to reset to base layer
- [TD_ESC_BASELYR] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _BASE),
-};
-#endif // TD_LSFT_CAPSLOCK_ENABLE
+#include "autocorrect/autocorrection.h"
// RGB NIGHT MODE
#ifdef RGB_MATRIX_ENABLE
@@ -126,209 +100,398 @@ __attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *
bool process_record_user(uint16_t keycode, keyrecord_t * record) {
mod_state = get_mods();
- if (!process_record_keymap(keycode, record)) {
- return false;
- }
+ if (!process_record_keymap(keycode, record)) { return false; }
+ if (!process_capsnum(keycode, record)) { return false; }
+ if (!process_esc_to_base(keycode, record)) { return false; }
+ if (!process_lsft_for_caps(keycode, record)) { return false; }
+ if (!process_autocorrection(keycode, record)) { return false; }
- if (!process_caps_word(keycode, record)) {
- return false;
- }
-
- // Your macros ...
+ // Key macros ...
switch (keycode) {
- // DotCom domain macros
+ // User configuration toggles
+ case PRNCONF: // Print verbose status of all user_config toggles (open a text editor before engaging!!)
+ if (record->event.pressed) {
+ send_string("\n"SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)"#########");
+ send_string(" gourdo1" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_3)SS_TAP(X_KP_9))"s GMMK Pro User Settings ");
+ send_string("#########"SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)"\n");
+ send_string("Hold "SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"Fn"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))" and the number corresponding to a setting below to toggle.\n");
+ send_string("Re"SS_TAP(X_KP_MINUS)"print this screen with "SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"Fn" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3)) SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"`" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))" to see your changes reflected.\n");
+ send_string("Config also visible as RGB under number keys by holding "SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"Fn" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))".\n");
+ send_string(SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS));
+ send_string(SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS));
+ send_string(SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS));
+ send_string(SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)SS_TAP(X_KP_MINUS)"\n");
+ send_string("1. CapsLock RGB highlight alpha keys................ ");
+ if (user_config.rgb_hilite_caps) {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"ON" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ } else {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"OFF" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ }
+ send_string("2. Numpad RGB highlight layer keys.................. ");
+ if (user_config.rgb_hilite_numpad) {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"ON" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ } else {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"OFF" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ }
+ send_string("3. Double tap ESC to revert to BASE layer........... ");
+ if (user_config.esc_double_tap_to_baselyr) {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"ON" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ } else {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"OFF" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ }
+ send_string("4. DEL "SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_3)SS_TAP(X_KP_8))" HOME key locations......................... ");
+ if (user_config.del_right_home_top) {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"HOME on F13"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_5)SS_TAP(X_KP_9))" DEL right of BKSPC" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ } else {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"DEL on F13"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_5)SS_TAP(X_KP_9))" HOME right of BKSPC" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ }
+ send_string("5. Numpad on CapsLock"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_5)SS_TAP(X_KP_9))" double tap LSHIFT for Caps... ");
+ if (user_config.double_tap_shift_for_capslock) {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"ON" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ } else {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"OFF" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ }
+ send_string("6. Encoder button function.......................... ");
+ if (user_config.encoder_press_mute_or_media) {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"MUTE" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ } else {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"MEDIA PLAY"SS_TAP(X_KP_SLASH) "PAUSE" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ }
+ send_string("7. Insert function accessed with.................... ");
+ if (user_config.ins_on_shft_bkspc_or_del) {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"SHIFT"SS_TAP(X_KP_MINUS)"BKSPC"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ } else {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"SHIFT"SS_TAP(X_KP_MINUS)"DEL"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ }
+ send_string("8. Force SHIFT "SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_3)SS_TAP(X_KP_8))" CTRL"SS_TAP(X_KP_MINUS)"SPACE to function like SPACE.. ");
+ if (user_config.disable_space_mods) {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"ON"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ } else {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"OFF"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ }
+ send_string("9. AutoCorrect...................................... ");
+ if (user_config.autocorrect) {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"ON"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ } else {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"OFF"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ }
+ send_string("0. CapsLock highlights extended alphas "SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_4)SS_TAP(X_KP_0))"ISO"SS_TAP(X_KP_MINUS)"only"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_4)SS_TAP(X_KP_1))"... ");
+ if (user_config.rgb_english_caps) {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"OFF"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ } else {
+ send_string(SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_1))"ON"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_9)SS_TAP(X_KP_3))"\n");
+ }
+ send_string("\nThe latest firmware updates are always here"SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_5)SS_TAP(X_KP_8))" https" SS_LALT(SS_TAP(X_KP_0)SS_TAP(X_KP_0)SS_TAP(X_KP_5)SS_TAP(X_KP_8))SS_TAP(X_KP_SLASH)SS_TAP(X_KP_SLASH) "github.com"SS_TAP(X_KP_SLASH) "gourdo1"SS_TAP(X_KP_SLASH)"gmmkpro"SS_TAP(X_KP_MINUS)"media\n");
+ }
+ break;
+
+ case TG_CAPS: // Toggle RGB highlighting of Capslock state
+ if (record->event.pressed) {
+ user_config.rgb_hilite_caps ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ }
+ break;
+ case TG_PAD: // Toggle RGB highlighting of Numpad state
+ if (record->event.pressed) {
+ user_config.rgb_hilite_numpad ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ }
+ break;
+ case TG_ESC: // Toggle alternate ESC functionality
+ if (record->event.pressed) {
+ user_config.esc_double_tap_to_baselyr ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ }
+ break;
+ case TG_DEL: // Toggle alternate placement of DEL and HOME keys
+ if (record->event.pressed) {
+ user_config.del_right_home_top ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ }
+ break;
+ case TG_TDCAP: // Toggle alternate Capslock/Numpad functionality
+ if (record->event.pressed) {
+ user_config.double_tap_shift_for_capslock ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ }
+ break;
+ case TG_ENC: // Toggle Encoder function
+ if (record->event.pressed) {
+ user_config.encoder_press_mute_or_media ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ }
+ break;
+ case TG_INS: // Toggle Encoder function
+ if (record->event.pressed) {
+ user_config.ins_on_shft_bkspc_or_del ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ }
+ break;
+ case TG_SPCMOD: // Toggle forcing SHIFT&CTRL-SPACE to function like SPACE
+ if (record->event.pressed) {
+ user_config.disable_space_mods ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ }
+ break;
+ case TG_AUTOCR: // Toggle AutoCorrect
+ if (record->event.pressed) {
+ user_config.autocorrect ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ }
+ break;
+ case TG_ENGCAP: // Toggle highlighting Non-English letters during CAPSLOCK
+ if (record->event.pressed) {
+ user_config.rgb_english_caps ^= 1; // Toggles the status
+ eeconfig_update_user(user_config.raw); // Writes the new status to EEPROM
+ }
+ break;
+ //return false;
+
+ // Key to the left of encoder function (default HOME)
+ case LEFTOFENC:
+ if (!(user_config.del_right_home_top)) {
+ if (!(user_config.ins_on_shft_bkspc_or_del)) {
+ static bool inskey_registered;
+ if (record -> event.pressed) {
+ // 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_INS keycode
+ del_mods(MOD_MASK_SHIFT);
+ register_code(KC_INS);
+ // Update the boolean variable to reflect the status of KC_INS
+ inskey_registered = true;
+ // Reapplying modifier state so that the held shift key(s)
+ // still work even after having tapped the key.
+ set_mods(mod_state);
+ return false;
+ } else {
+ register_code(KC_DEL);
+ return false;
+ }
+ } else { // on release of KC_DEL
+ // In case KC_INS is still being sent even after the release of KC_DEL
+ if (inskey_registered) {
+ unregister_code(KC_INS);
+ inskey_registered = false;
+ return false;
+ } else {
+ unregister_code(KC_DEL);
+ return false;
+ }
+ }
+ } else {
+ if (record -> event.pressed) {
+ register_code(KC_DEL);
+ return false;
+ } else {
+ unregister_code(KC_DEL);
+ return false;
+ }
+ }
+ } else {
+ if (record -> event.pressed) {
+ register_code(KC_HOME);
+ return false;
+ } else {
+ unregister_code(KC_HOME);
+ return false;
+ }
+ }
+ break;
+
+ // Key below encoder function (default DEL)
+ case BELOWENC:
+ if (user_config.del_right_home_top) {
+ if (!(user_config.ins_on_shft_bkspc_or_del)) {
+ static bool inskey_registered;
+ if (record -> event.pressed) {
+ // 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_INS keycode
+ del_mods(MOD_MASK_SHIFT);
+ register_code(KC_INS);
+ // Update the boolean variable to reflect the status of KC_INS
+ inskey_registered = true;
+ // Reapplying modifier state so that the held shift key(s)
+ // still work even after having tapped the key.
+ set_mods(mod_state);
+ return false;
+ } else {
+ register_code(KC_DEL);
+ return false;
+ }
+ } else { // on release of KC_DEL
+ // In case KC_INS is still being sent even after the release of KC_DEL
+ if (inskey_registered) {
+ unregister_code(KC_INS);
+ inskey_registered = false;
+ return false;
+ } else {
+ unregister_code(KC_DEL);
+ return false;
+ }
+ }
+ } else {
+ if (record -> event.pressed) {
+ register_code(KC_DEL);
+ return false;
+ } else {
+ unregister_code(KC_DEL);
+ return false;
+ }
+ }
+ } else {
+ if (record -> event.pressed) {
+ register_code(KC_HOME);
+ return false;
+ } else {
+ unregister_code(KC_HOME);
+ return false;
+ }
+ }
+ break;
+
+ // Encoder button function
+ case ENCFUNC:
+ if (user_config.encoder_press_mute_or_media) {
+ if (record -> event.pressed) {
+ register_code(KC_MUTE);
+ } else unregister_code16(keycode);
+ }
+ else {
+ if (record -> event.pressed) {
+ register_code(KC_MPLY);
+ } else unregister_code16(keycode);
+ }
+ break;
+
+ // DotCom domain macros
case DOTCOM:
if (record -> event.pressed) {
- SEND_STRING(".com");
+ send_string(".com");
} else {
// when keycode is released
}
break;
case YAHOO:
if (record -> event.pressed) {
- SEND_STRING("yahoo.com");
+ send_string("yahoo.com");
} else {
// when keycode is released
}
break;
case OUTLOOK:
if (record -> event.pressed) {
- SEND_STRING("outlook.com");
+ send_string("outlook.com");
} else {
// when keycode is released
}
break;
case GMAIL:
if (record -> event.pressed) {
- SEND_STRING("gmail.com");
+ send_string("gmail.com");
} else {
// when keycode is released
}
break;
case HOTMAIL:
if (record -> event.pressed) {
- SEND_STRING("hotmail.com");
+ send_string("hotmail.com");
} else {
// when keycode is released
}
break;
-
-/*
- case YAHOO:
- if (record -> event.pressed) SEND_STRING("yahoo.com");
- else unregister_code16(keycode);
- break;
- case OUTLOOK:
- if (record -> event.pressed) SEND_STRING("outlook.com");
- else unregister_code16(keycode);
- break;
- case GMAIL:
- if (record -> event.pressed) SEND_STRING("gmail.com");
- else unregister_code16(keycode);
- break;
- case HOTMAIL:
- if (record -> event.pressed) {
- SEND_STRING("hotmail.com");
- } else unregister_code16(keycode);
- break;
- case DOTCOM:
- if (record -> event.pressed) SEND_STRING(".com");
- else unregister_code16(keycode);
- break;
-*/
- // Windows key lock
- case KC_WINLCK:
+ // Windows Key lockout
+ case WINLOCK:
if (record -> event.pressed) {
keymap_config.no_gui = !keymap_config.no_gui; //toggle status
} else unregister_code16(keycode);
break;
- // Double Zero
+ // Double Zero
case KC_00:
if (record -> event.pressed) {
// when keycode KC_00 is pressed
- SEND_STRING("00");
+ send_string(SS_TAP(X_KP_0)SS_TAP(X_KP_0));
} else unregister_code16(keycode);
break;
- // Treat Control+Space as if regular Space
- case KC_SPC: {
- // Initialize a boolean variable that keeps track of the space key status: registered or not?
- static bool spckey_registered;
- if (record -> event.pressed) {
- // Detect the activation of either ctrl keys
- if (mod_state & MOD_MASK_CTRL) {
- // First temporarily canceling both ctrls so that
- // ctrl isn't applied to the KC_SPC keycode
- del_mods(MOD_MASK_CTRL);
- register_code(KC_SPC);
- // Update the boolean variable to reflect the status of KC_SPC
- spckey_registered = true;
- // Reapplying modifier state so that the held ctrl key(s)
- // still work even after having tapped the Space key.
- set_mods(mod_state);
- return false;
- }
- } else { // on release of KC_SPC
- // In case KC_SPC is still being sent even after the release of KC_SPC
- if (spckey_registered) {
- unregister_code(KC_SPC);
- spckey_registered = false;
- return false;
+ // Treat Control & Shift-Space as if regular Space
+ case KC_SPC:
+ if (user_config.disable_space_mods) {
+ // Initialize a boolean variable that keeps track of the space key status: registered or not?
+ static bool spckey_registered;
+ if (record -> event.pressed) {
+ // Detect the activation of either ctrl keys
+ if (mod_state & MOD_MASK_CTRL) {
+ // First temporarily canceling both ctrls so that
+ // ctrl isn't applied to the KC_SPC keycode
+ del_mods(MOD_MASK_CTRL);
+ register_code(KC_SPC);
+ // Update the boolean variable to reflect the status of KC_SPC
+ spckey_registered = true;
+ // Reapplying modifier state so that the held ctrl key(s)
+ // still work even after having tapped the Space key.
+ set_mods(mod_state);
+ return false;
+ }
+ else if (mod_state & MOD_MASK_SHIFT) {
+ // First temporarily canceling both shifts so that
+ // shift isn't applied to the KC_SPC keycode
+ del_mods(MOD_MASK_SHIFT);
+ register_code(KC_SPC);
+ // Update the boolean variable to reflect the status of KC_SPC
+ spckey_registered = true;
+ // Reapplying modifier state so that the held shift key(s)
+ // still work even after having tapped the Space key.
+ set_mods(mod_state);
+ return false;
+ }
+ } else { // on release of KC_SPC
+ // In case KC_SPC is still being sent even after the release of KC_SPC
+ if (spckey_registered) {
+ unregister_code(KC_SPC);
+ spckey_registered = false;
+ return false;
+ }
}
}
- }
break;
- // Treat Shift+Space as if regular Space
- case KC_SHIFTSPC: {
- // Initialize a boolean variable that keeps track of the space key status: registered or not?
- static bool spc2key_registered;
- if (record -> event.pressed) {
- // 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_SPC keycode
- del_mods(MOD_MASK_SHIFT);
- register_code(KC_SPC);
- // Update the boolean variable to reflect the status of KC_SPC
- spc2key_registered = true;
- // Reapplying modifier state so that the held shift key(s)
- // still work even after having tapped the Space key.
- set_mods(mod_state);
- return false;
- }
- } else { // on release of KC_SPC
- // In case KC_SPC is still being sent even after the release of KC_SPC
- if (spc2key_registered) {
- unregister_code(KC_SPC);
- spc2key_registered = false;
- return false;
- }
- }
- }
- break;
-
- // Add INS as SHIFT-modified BackSpace key
+ // INS as SHIFT-modified BackSpace key
case KC_BSPC: {
- // Initialize a boolean variable that keeps track of the delete key status: registered or not?
- static bool inskey_registered;
- if (record -> event.pressed) {
- // 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_INS keycode
- del_mods(MOD_MASK_SHIFT);
- register_code(KC_INS);
- // Update the boolean variable to reflect the status of KC_INS
- inskey_registered = true;
- // Reapplying modifier state so that the held shift key(s)
- // still work even after having tapped the Delete/Insert key.
- set_mods(mod_state);
- return false;
- }
- } else { // on release of KC_BSPC
- // In case KC_INS is still being sent even after the release of KC_BSPC
- if (inskey_registered) {
- unregister_code(KC_INS);
- inskey_registered = false;
- return false;
+ if (user_config.ins_on_shft_bkspc_or_del) {
+ // Initialize a boolean variable that keeps track of the ins key status: registered or not?
+ static bool inskey_registered;
+ if (record -> event.pressed) {
+ // 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_INS keycode
+ del_mods(MOD_MASK_SHIFT);
+ register_code(KC_INS);
+ // Update the boolean variable to reflect the status of KC_INS
+ inskey_registered = true;
+ // Reapplying modifier state so that the held shift key(s)
+ // still work even after having tapped the key.
+ set_mods(mod_state);
+ return false;
+ }
+ } else { // on release of KC_BSPC
+ // In case KC_INS is still being sent even after the release of KC_BSPC
+ if (inskey_registered) {
+ unregister_code(KC_INS);
+ inskey_registered = false;
+ return false;
+ }
}
}
- }
- break;
-
- /* Add INS as SHIFT-modified DEL key
- case KC_DEL: {
- // Initialize a boolean variable that keeps track of the delete key status: registered or not?
- static bool inskey_registered;
- if (record->event.pressed) {
- // 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_INS keycode
- del_mods(MOD_MASK_SHIFT);
- register_code(KC_INS);
- // Update the boolean variable to reflect the status of KC_INS
- inskey_registered = true;
- // Reapplying modifier state so that the held shift key(s)
- // still work even after having tapped the Delete/Insert key.
- set_mods(mod_state);
- return false;
- }
- } else { // on release of KC_DEL
- // In case KC_INS is still being sent even after the release of KC_DEL
- if (inskey_registered) {
- unregister_code(KC_INS);
- inskey_registered = false;
- return false;
- }
- }
- }
- break;
- */
+ }
+ break;
#ifdef IDLE_TIMEOUT_ENABLE
case RGB_TOI:
@@ -352,27 +515,27 @@ bool process_record_user(uint16_t keycode, keyrecord_t * record) {
#ifdef EMOTICON_ENABLE
case EMO_SHRUG:
- if (record -> event.pressed) SEND_STRING("`\\_(\"/)_/`");
+ if (record -> event.pressed) send_string("`\\_(\"/)_/`");
else unregister_code16(keycode);
break;
case EMO_CONFUSE:
- if (record -> event.pressed) SEND_STRING("(*_*)");
+ if (record -> event.pressed) send_string("(*_*)");
else unregister_code16(keycode);
break;
case EMO_TEARS:
- if (record -> event.pressed) SEND_STRING("(T_T)");
+ if (record -> event.pressed) send_string("(T_T)");
else unregister_code16(keycode);
break;
case EMO_NERVOUS:
- if (record -> event.pressed) SEND_STRING("(~_~;)");
+ if (record -> event.pressed) send_string("(~_~;)");
else unregister_code16(keycode);
break;
case EMO_JOY:
- if (record -> event.pressed) SEND_STRING("(^o^)");
+ if (record -> event.pressed) send_string("(^o^)");
else unregister_code16(keycode);
break;
case EMO_SAD:
- if (record -> event.pressed) SEND_STRING(":'-(");
+ if (record -> event.pressed) send_string(":'-(");
else unregister_code16(keycode);
break;
#endif // EMOTICON_ENABLE
@@ -398,15 +561,32 @@ bool process_record_user(uint16_t keycode, keyrecord_t * record) {
return true;
};
-uint16_t get_tapping_term(uint16_t keycode, keyrecord_t * record) {
+// Define custom Caps Word continuity characters
+bool caps_word_press_user(uint16_t keycode) {
switch (keycode) {
- case KC_SFTUP:
- return 300;
- case KC_RAISESPC:
- case KC_LOWERSPC:
- return 450;
- default:
- return TAPPING_TERM;
+ // Keycodes that continue Caps Word, with shift applied.
+ case KC_A ... KC_Z:
+ case KC_TILD:
+ case KC_UNDS:
+ case KC_DQT:
+ case KC_COLN:
+ case KC_RSFT:
+ case KC_LSFT:
+ add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to next key.
+ return true;
+
+ // Keycodes that continue Caps Word, without shifting.
+ case KC_1 ... KC_0:
+ case KC_GRV:
+ case KC_MINS:
+ case KC_QUOT:
+ case KC_SCLN:
+ case KC_BSPC:
+ case KC_DEL:
+ return true;
+
+ default:
+ return false; // Deactivate Caps Word.
}
}
@@ -418,15 +598,34 @@ void activate_numlock(bool turn_on) {
}
// INITIAL STARTUP
-
-__attribute__((weak)) void keyboard_post_init_keymap(void) {}
+__attribute__((weak)) void keyboard_post_init_keymap(void) {
+}
void keyboard_post_init_user(void) {
+ // Read the user config from EEPROM
+ user_config.raw = eeconfig_read_user();
keyboard_post_init_keymap();
#ifdef STARTUP_NUMLOCK_ON
activate_numlock(true); // turn on Num lock by default so that the numpad layer always has predictable results
- #endif // STARTUP_NUMLOC_ON
+ #endif // STARTUP_NUMLOCK_ON
#ifdef IDLE_TIMEOUT_ENABLE
- timeout_timer = timer_read(); // set inital time for ide timeout
+ timeout_timer = timer_read(); // set initial time for idle timeout
#endif
-} \ No newline at end of file
+}
+
+/* Set defaults for EEPROM user configuration variables */
+void eeconfig_init_user(void) {
+ user_config.raw = 0;
+ user_config.rgb_hilite_caps = true;
+ user_config.rgb_hilite_numpad = true;
+ user_config.double_tap_shift_for_capslock = true;
+ user_config.del_right_home_top = true;
+ user_config.encoder_press_mute_or_media = true;
+ user_config.esc_double_tap_to_baselyr = true;
+ user_config.ins_on_shft_bkspc_or_del = true;
+ user_config.disable_space_mods = true;
+ user_config.autocorrect = true;
+ user_config.rgb_english_caps = true;
+
+ eeconfig_update_user(user_config.raw);
+}
diff --git a/users/gourdo1/gourdo1.h b/users/gourdo1/gourdo1.h
index c6861ca0ca..ecf6eaf25d 100644
--- a/users/gourdo1/gourdo1.h
+++ b/users/gourdo1/gourdo1.h
@@ -1,5 +1,5 @@
/* Copyright 2021 Jonavin Eng @Jonavin
- Copyright 2022 gourdo1 <jcblake@outlook.com>
+ Copyright 2022 gourdo1 <gourdo1@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
@@ -20,36 +20,51 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
// DEFINE MACROS
#define ARRAYSIZE(arr) sizeof(arr) / sizeof(arr[0])
-// LAYERS
+// LAYERS -- Note: to avoid compile problems, make sure total layers matches DYNAMIC_KEYMAP_LAYER_COUNT defined in config.h (where _COLEMAK layer is defined)
enum custom_user_layers {
_BASE,
_FN1,
_NUMPADMOUSE,
_MOUSEKEY,
+ #ifdef GAME_ENABLE
+ _GAME
+ #endif //GAME_ENABLE
};
#define KC_CAD LALT(LCTL(KC_DEL))
+#define LOCKPC LGUI(KC_L)
#define KC_AF4 LALT(KC_F4)
#define KC_TASK LCTL(LSFT(KC_ESC))
#define CT_PGUP RCTL(KC_PGUP)
#define CT_PGDN RCTL(KC_PGDN)
#define CT_HOME RCTL(KC_HOME)
#define CT_END RCTL(KC_END)
-#define KC_SFTUP RSFT_T(KC_UP) // Shift when held, Up arrow when tapped
-#define KC_RAISESPC LT(_MOUSEKEY, KC_SPC) // _MOUSEKEY layer mod when held, space when tapped
-#define KC_LOWERSPC LT(_NUMPADMOUSE, KC_SPC) // _NUMPAD-MOUSE layer mod when held, space when tapped
-#define KC_SHIFTSPC LSFT(KC_SPC)
-#define SWAP_L SGUI(KC_LEFT) // Swap application to left display
-#define SWAP_R SGUI(KC_RGHT) // Swap application to right display
+#define SWAP_L SGUI(KC_LEFT) // Swap application to left display
+#define SWAP_R SGUI(KC_RGHT) // Swap application to right display
// KEYCODES
enum custom_user_keycodes {
KC_00 = SAFE_RANGE,
- ENCFUNC,
- KC_WINLCK, // Toggles Win key on and off
+ ENCFUNC, // Encoder function
+ CAPSNUM, // Capslock key function
+ LEFTOFENC, // Key to the left of the encoder (i.e. F13)
+ BELOWENC, // Key below encoder
+ PRNCONF, // Print verbose statuses of all user_config toggles
+ WINLOCK, // Toggles Windows key on and off
RGB_TOI, // Timeout idle time up
RGB_TOD, // Timeout idle time down
- RGB_NITE, // Turns off all rgb but allow rgb indicators to work
+ RGB_NITE, // Disables RGB backlighting effects but allows RGB indicators to still work
+
+ TG_CAPS, // Toggles RGB highlighting of alphas during capslock
+ TG_PAD, // Toggles RGB highlighting of keys on numpad+mousekeys layer
+ TG_TDCAP, // Toggles double tap shift for CapsLock
+ TG_DEL, // Swaps DEL and HOME key locations
+ TG_ENC, // Toggle Encoder button functionality
+ TG_ESC, // Toggle ESC double tap for _BASE layer
+ TG_INS, // Toggle location of INS
+ TG_SPCMOD, // Toggle disabling of modded-SPACE functions
+ TG_AUTOCR, // Toggle AutoCorrect
+ TG_ENGCAP, // Toggle highlighting Non-English letters during CAPSLOCK on ISO boards
YAHOO, // yahoo.com
OUTLOOK, // outlook.com
@@ -66,24 +81,29 @@ enum custom_user_keycodes {
KC_TSTOG, // Tab Scroll Toggle
- NEW_SAFE_RANGE // new safe range for keymap level custom keycodes
+ NEW_SAFE_RANGE // New safe range for keymap level custom keycodes
};
-#ifdef TD_LSFT_CAPSLOCK_ENABLE
-// Tap Dance Definitions
-enum custom_tapdance {
- TD_LSFT_CAPSLOCK,
- TD_LSFT_CAPS_WIN,
- TD_ESC_BASELYR
-};
-#define KC_LSFTCAPS TD(TD_LSFT_CAPSLOCK)
-#define KC_LSFTCAPSWIN TD(TD_LSFT_CAPS_WIN)
-#define KC_ESCLYR TD(TD_ESC_BASELYR)
-#else // regular Shift
-#define KC_LSFTCAPS KC_LSFT
-// regular Escape
-#define KC_ESCLYR KC_ESC
-#endif // TD_LSFT_CAPSLOCK_ENABLE
+// Set up boolean variables to track user customizable configuration options
+typedef union {
+ uint32_t raw;
+ struct {
+ bool rgb_hilite_caps :1;
+ bool rgb_hilite_numpad :1;
+ bool esc_double_tap_to_baselyr :1;
+ bool del_right_home_top :1;
+ bool double_tap_shift_for_capslock :1;
+ bool encoder_press_mute_or_media :1;
+ bool ins_on_shft_bkspc_or_del :1;
+ bool disable_space_mods :1;
+ bool autocorrect :1;
+ bool rgb_english_caps :1;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+//#define LSFTCAPSWIN TD(TD_LSFT_CAPS_WIN)
// ENCODER ACTIONS
#ifdef ENCODER_ENABLE
diff --git a/users/gourdo1/gourdo1_encoder.c b/users/gourdo1/gourdo1_encoder.c
index 72f8c3c354..5a19b63c6e 100644
--- a/users/gourdo1/gourdo1_encoder.c
+++ b/users/gourdo1/gourdo1_encoder.c
@@ -1,5 +1,5 @@
/* Copyright 2021 Jonavin Eng @Jonavin
- Copyright 2022 gourdo1 <jcblake@outlook.com>
+ Copyright 2022 gourdo1 <gourdo1@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
@@ -15,8 +15,8 @@ You should have received 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 "gourdo1.h"
#ifdef ENCODER_ENABLE
diff --git a/users/gourdo1/rules.mk b/users/gourdo1/rules.mk
index e02f9e8e08..0a3a9ba426 100644
--- a/users/gourdo1/rules.mk
+++ b/users/gourdo1/rules.mk
@@ -1,4 +1,6 @@
SRC += gourdo1.c
+SRC += autocorrect/autocorrection.c
+
ifdef ENCODER_ENABLE
# include encoder related code when enabled
ifeq ($(strip $(ENCODER_DEFAULTACTIONS_ENABLE)), yes)
diff --git a/users/hvp/config.h b/users/hvp/config.h
index 68dd8b4828..b7d0443bbc 100644
--- a/users/hvp/config.h
+++ b/users/hvp/config.h
@@ -15,4 +15,5 @@
*/
#pragma once
-#define LONG_TAPPING_TERM 1000 \ No newline at end of file
+#define LONG_TAPPING_TERM 1000
+#define PERMISSIVE_HOLD
diff --git a/users/ishtob/config.h b/users/ishtob/config.h
index 6c07d2f2fd..695077528c 100755
--- a/users/ishtob/config.h
+++ b/users/ishtob/config.h
@@ -16,7 +16,6 @@
//#define LEADER_TIMEOUT 300
//#define BACKLIGHT_BREATHING
//#define PERMISSIVE_HOLD
-// #define QMK_KEYS_PER_SCAN 4
//audio clicky
//#define AUDIO_CLICKY
diff --git a/users/issmirnov/config.h b/users/issmirnov/config.h
index 664ebfe8a3..5fe78f7a53 100644
--- a/users/issmirnov/config.h
+++ b/users/issmirnov/config.h
@@ -1,8 +1,5 @@
#pragma once
-// Allows sending more than one key per scan. Useful for chords.
-#define QMK_KEYS_PER_SCAN 4
-
// how long before a tap becomes a hold
#undef TAPPING_TERM
#define TAPPING_TERM 100
diff --git a/users/jonavin/jonavin.h b/users/jonavin/jonavin.h
index ab2ce0dff2..3ebd3fe9f2 100644
--- a/users/jonavin/jonavin.h
+++ b/users/jonavin/jonavin.h
@@ -18,7 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
// DEFINE MACROS
+#ifndef ARRAYSIZE
#define ARRAYSIZE(arr) sizeof(arr)/sizeof(arr[0])
+#endif // !ARRAYSIZE
// LAYERS
diff --git a/users/kuchosauronad0/config.h b/users/kuchosauronad0/config.h
index 58542dc184..8502031f02 100644
--- a/users/kuchosauronad0/config.h
+++ b/users/kuchosauronad0/config.h
@@ -41,10 +41,6 @@
# define ONESHOT_TIMEOUT 3000
#endif// !ONESHOT_TIMEOUT
-#ifndef QMK_KEYS_PER_SCAN
-# define QMK_KEYS_PER_SCAN 4
-#endif // !QMK_KEYS_PER_SCAN
-
#if defined(LEADER_ENABLE)
# define LEADER_PER_KEY_TIMING
# define LEADER_TIMEOUT 250
diff --git a/users/kuchosauronad0/kuchosauronad0.c b/users/kuchosauronad0/kuchosauronad0.c
index a8f17b08ee..820d84daad 100644
--- a/users/kuchosauronad0/kuchosauronad0.c
+++ b/users/kuchosauronad0/kuchosauronad0.c
@@ -117,7 +117,7 @@ void matrix_scan_user(void){
}
__attribute__ ((weak))
-uint32_t layer_state_set_keymap (uint32_t state) {
+layer_state_t layer_state_set_keymap (layer_state_t state) {
return state;
}
@@ -133,12 +133,12 @@ layer_state_t layer_state_set_user(layer_state_t state) {
__attribute__ ((weak))
-uint32_t default_layer_state_set_keymap (uint32_t state) {
+layer_state_t default_layer_state_set_keymap (layer_state_t state) {
return state;
}
// Runs state check and changes underglow color and animation
-uint32_t default_layer_state_set_user(uint32_t state) {
+layer_state_t default_layer_state_set_user(layer_state_t state) {
state = default_layer_state_set_keymap(state);
#if 0
#ifdef RGBLIGHT_ENABLE
diff --git a/users/kuchosauronad0/kuchosauronad0.h b/users/kuchosauronad0/kuchosauronad0.h
index da996457c6..5cbd517d67 100644
--- a/users/kuchosauronad0/kuchosauronad0.h
+++ b/users/kuchosauronad0/kuchosauronad0.h
@@ -65,8 +65,8 @@ void shutdown_keymap(void);
void suspend_power_down_keymap(void);
void suspend_wakeup_init_keymap(void);
void matrix_scan_keymap(void);
-uint32_t layer_state_set_keymap (uint32_t state);
-uint32_t default_layer_state_set_keymap (uint32_t state);
+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);
diff --git a/users/kuchosauronad0/rgblight_user.c b/users/kuchosauronad0/rgblight_user.c
index 63e412c557..feea0c412f 100644
--- a/users/kuchosauronad0/rgblight_user.c
+++ b/users/kuchosauronad0/rgblight_user.c
@@ -84,7 +84,7 @@ void matrix_scan_rgb(void) {
layer_state_t layer_state_set_rgb(layer_state_t state) {
# ifdef RGBLIGHT_ENABLE
if (userspace_config.rgb_layer_change) {
- switch (biton32(state)) { // _RAISE, _LOWER and _ADJUST use a custom color and the breathing effect
+ switch (get_highest_layer(state)) { // _RAISE, _LOWER and _ADJUST use a custom color and the breathing effect
case _RAISE:
rgblight_sethsv_noeeprom_green();
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
@@ -98,7 +98,7 @@ layer_state_t layer_state_set_rgb(layer_state_t state) {
rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 2);
break;
default: // Use a solid color for normal layers
- switch (biton32(default_layer_state)) {
+ switch (get_highest_layer(default_layer_state)) {
case _QWERTY:
rgblight_sethsv_noeeprom_magenta();
break;
@@ -118,7 +118,7 @@ layer_state_t layer_state_set_rgb(layer_state_t state) {
rgblight_sethsv_noeeprom_white();
break;
}
- biton32(state) == _MODS ? rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING) : rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); // if _MODS layer is on, then breath to denote it
+ get_highest_layer(state) == _MODS ? rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING) : rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT); // if _MODS layer is on, then breath to denote it
break;
}
}
@@ -135,7 +135,7 @@ void matrix_scan_indicator(void) {
#endif // !INDICATOR_LIGHTS
void rgblight_fade_helper(bool direction){
- // true: increase val = fade in
+ // true: increase val = fade in
// false: decrease val = fade out
for (uint8_t index = 0; index < RGBLIGHT_VAL_STEP ; index++) {
direction ? rgblight_increase_val() : rgblight_decrease_val();
@@ -147,10 +147,10 @@ void fadeflash_leds(uint8_t hue, uint8_t sat, uint8_t val){
// fade out, set new hue and saturation, fade in, fade out, set old color, fade in
// this is used in leader.c
// TODO: come up with a better name maybe
- rgblight_fade_helper(false);
- rgblight_sethsv_noeeprom(hue, sat, 0);
- rgblight_fade_helper(true);
- rgblight_fade_helper(false);
- rgblight_sethsv_noeeprom(base_hue, base_sat, 0);
- rgblight_fade_helper(true);
+ rgblight_fade_helper(false);
+ rgblight_sethsv_noeeprom(hue, sat, 0);
+ rgblight_fade_helper(true);
+ rgblight_fade_helper(false);
+ rgblight_sethsv_noeeprom(base_hue, base_sat, 0);
+ rgblight_fade_helper(true);
}
diff --git a/users/kuchosauronad0/template.c b/users/kuchosauronad0/template.c
index 475e45d391..76cc572be3 100644
--- a/users/kuchosauronad0/template.c
+++ b/users/kuchosauronad0/template.c
@@ -63,11 +63,11 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
__attribute__ ((weak))
-uint32_t layer_state_set_keymap (uint32_t state) {
+layer_state_t layer_state_set_keymap (layer_state_t state) {
return state;
}
-uint32_t layer_state_set_user (uint32_t state) {
+layer_state_t layer_state_set_user (layer_state_t state) {
return layer_state_set_keymap (state);
}
diff --git a/users/manna-harbour_miryoku/config.h b/users/manna-harbour_miryoku/config.h
index d24f52edae..c4538ee304 100644
--- a/users/manna-harbour_miryoku/config.h
+++ b/users/manna-harbour_miryoku/config.h
@@ -1,6 +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/>.
@@ -21,9 +20,6 @@
#define AUTO_SHIFT_TIMEOUT TAPPING_TERM
#define AUTO_SHIFT_NO_SETUP
-// Recommended for heavy chording.
-#define QMK_KEYS_PER_SCAN 4
-
// Mouse key speed and acceleration.
#undef MOUSEKEY_DELAY
#define MOUSEKEY_DELAY 0
@@ -35,3 +31,13 @@
#define MOUSEKEY_MAX_SPEED 6
#undef MOUSEKEY_TIME_TO_MAX
#define MOUSEKEY_TIME_TO_MAX 64
+
+// Thumb Combos
+#if defined (MIRYOKU_KLUDGE_THUMBCOMBOS)
+ #define COMBO_COUNT 8
+ #define COMBO_TERM 200
+ #define EXTRA_SHORT_COMBOS
+#endif
+
+#include "custom_config.h"
+
diff --git a/users/manna-harbour_miryoku/custom_config.h b/users/manna-harbour_miryoku/custom_config.h
new file mode 100644
index 0000000000..f5ba5ab1b1
--- /dev/null
+++ b/users/manna-harbour_miryoku/custom_config.h
@@ -0,0 +1,7 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+
+// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should 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/users/manna-harbour_miryoku/custom_rules.mk b/users/manna-harbour_miryoku/custom_rules.mk
new file mode 100644
index 0000000000..6e222bb11c
--- /dev/null
+++ b/users/manna-harbour_miryoku/custom_rules.mk
@@ -0,0 +1,3 @@
+# Copyright 2019 Manna Harbour
+# https://github.com/manna-harbour/miryoku
+
diff --git a/users/manna-harbour_miryoku/manna-harbour_miryoku.c b/users/manna-harbour_miryoku/manna-harbour_miryoku.c
index 6347183417..28ad18d1aa 100644
--- a/users/manna-harbour_miryoku/manna-harbour_miryoku.c
+++ b/users/manna-harbour_miryoku/manna-harbour_miryoku.c
@@ -1,229 +1,50 @@
// 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/>.
+#include QMK_KEYBOARD_H
+
#include "manna-harbour_miryoku.h"
+enum layers { MIRYOKU_LAYER_NAMES };
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-#if defined MIRYOKU_LAYERS_FLIP
- [BASE] = LAYOUT_miryoku(
- #if defined MIRYOKU_ALPHAS_AZERTY
- KC_A, KC_Z, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- LGUI_T(KC_Q), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_M),
- LT(BUTTON, KC_W), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_COMM, KC_DOT, ALGR_T(KC_SLSH), LT(BUTTON, KC_QUOT),
- U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
- #elif defined MIRYOKU_ALPHAS_COLEMAK
- KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
- LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_D, KC_H, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O),
- LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
- U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
- #elif defined MIRYOKU_ALPHAS_COLEMAKDHK
- KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
- LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_K, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O),
- LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
- U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
- #elif defined MIRYOKU_ALPHAS_DVORAK
- KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L,
- LGUI_T(KC_A), LALT_T(KC_O), LCTL_T(KC_E), LSFT_T(KC_U), KC_I, KC_D, LSFT_T(KC_H), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_S),
- LT(BUTTON, KC_SLSH), ALGR_T(KC_Q), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, ALGR_T(KC_V), LT(BUTTON, KC_Z),
- U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
- #elif defined MIRYOKU_ALPHAS_HALMAK
- KC_W, KC_L, KC_R, KC_B, KC_Z, KC_QUOT, KC_Q, KC_U, KC_D, KC_J,
- LGUI_T(KC_S), LALT_T(KC_H), LCTL_T(KC_N), LSFT_T(KC_T), KC_COMM, KC_DOT, LSFT_T(KC_A), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I),
- LT(BUTTON, KC_F), ALGR_T(KC_M), KC_V, KC_C, KC_SLSH, KC_G, KC_P, KC_X, ALGR_T(KC_K), LT(BUTTON, KC_Y),
- U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
- #elif defined MIRYOKU_ALPHAS_WORKMAN
- KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT,
- LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_H), LSFT_T(KC_T), KC_G, KC_Y, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I),
- LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
- U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
- #elif defined MIRYOKU_ALPHAS_QWERTY
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT),
- LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
- U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
- #elif defined MIRYOKU_ALPHAS_QWERTZ
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P,
- LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT),
- LT(BUTTON, KC_Y), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
- U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
- #else
- KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
- LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O),
- LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
- U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
- #endif
- ),
- #if defined MIRYOKU_NAV_INVERTEDT
- [NAV] = LAYOUT_miryoku(
- KC_PGUP, KC_HOME, KC_UP, KC_END, KC_INS, U_NA, U_NA, U_NA, U_NA, RESET,
- KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
- U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_NA, U_NA, KC_ALGR, U_NA,
- U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, U_NA, U_NA, U_NA, U_NP, U_NP
- ),
- [MOUSE] = LAYOUT_miryoku(
- KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, U_NU, U_NA, U_NA, U_NA, U_NA, RESET,
- KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, U_NU, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
- U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_NA, U_NA, KC_ALGR, U_NA,
- U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, U_NA, U_NA, U_NA, U_NP, U_NP
- ),
- [MEDIA] = LAYOUT_miryoku(
- U_NU, U_NU, KC_VOLU, U_NU, U_NU, U_NA, U_NA, U_NA, U_NA, RESET,
- U_NU, KC_MPRV, KC_VOLD, KC_MNXT, U_NU, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
- RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, U_NA, U_NA, U_NA, KC_ALGR, U_NA,
- U_NP, U_NP, KC_MUTE, KC_MPLY, KC_MSTP, U_NA, U_NA, U_NA, U_NP, U_NP
- ),
- #else
- [NAV] = LAYOUT_miryoku(
- KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, U_NA, U_NA, U_NA, U_NA, RESET,
- KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
- U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_NA, U_NA, KC_ALGR, U_NA,
- U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, U_NA, U_NA, U_NA, U_NP, U_NP
- ),
- [MOUSE] = LAYOUT_miryoku(
- KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, U_NU, U_NA, U_NA, U_NA, U_NA, RESET,
- KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, U_NU, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
- U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_NA, U_NA, KC_ALGR, U_NA,
- U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, U_NA, U_NA, U_NA, U_NP, U_NP
- ),
- [MEDIA] = LAYOUT_miryoku(
- RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, U_NA, U_NA, U_NA, U_NA, RESET,
- KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, U_NU, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
- U_NU, U_NU, U_NU, U_NU, U_NU, U_NA, U_NA, U_NA, KC_ALGR, U_NA,
- U_NP, U_NP, KC_MUTE, KC_MPLY, KC_MSTP, U_NA, U_NA, U_NA, U_NP, U_NP
- ),
- #endif
- [NUM] = LAYOUT_miryoku(
- RESET, U_NA, U_NA, U_NA, U_NA, KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC,
- KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_EQL, KC_4, KC_5, KC_6, KC_SCLN,
- U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_BSLS, KC_1, KC_2, KC_3, KC_GRV,
- U_NP, U_NP, U_NA, U_NA, U_NA, KC_MINS, KC_0, KC_DOT, U_NP, U_NP
- ),
- [SYM] = LAYOUT_miryoku(
- RESET, U_NA, U_NA, U_NA, U_NA, KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR,
- KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_PLUS, KC_DLR, KC_PERC, KC_CIRC, KC_COLN,
- U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_PIPE, KC_EXLM, KC_AT, KC_HASH, KC_TILD,
- U_NP, U_NP, U_NA, U_NA, U_NA, KC_UNDS, KC_LPRN, KC_RPRN, U_NP, U_NP
- ),
- [FUN] = LAYOUT_miryoku(
- RESET, U_NA, U_NA, U_NA, U_NA, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F12,
- KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_SLCK, KC_F4, KC_F5, KC_F6, KC_F11,
- U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F10,
- U_NP, U_NP, U_NA, U_NA, U_NA, KC_TAB, KC_SPC, KC_APP, U_NP, U_NP
- ),
-#else
- [BASE] = LAYOUT_miryoku(
- #if defined MIRYOKU_ALPHAS_AZERTY
- KC_A, KC_Z, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- LGUI_T(KC_Q), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_M),
- LT(BUTTON, KC_W), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_COMM, KC_DOT, ALGR_T(KC_SLSH), LT(BUTTON, KC_QUOT),
- U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
- #elif defined MIRYOKU_ALPHAS_COLEMAK
- KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
- LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_D, KC_H, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O),
- LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
- U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
- #elif defined MIRYOKU_ALPHAS_COLEMAKDHK
- KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
- LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_K, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O),
- LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
- U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
- #elif defined MIRYOKU_ALPHAS_DVORAK
- KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L,
- LGUI_T(KC_A), LALT_T(KC_O), LCTL_T(KC_E), LSFT_T(KC_U), KC_I, KC_D, LSFT_T(KC_H), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_S),
- LT(BUTTON, KC_SLSH), ALGR_T(KC_Q), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, ALGR_T(KC_V), LT(BUTTON, KC_Z),
- U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
- #elif defined MIRYOKU_ALPHAS_HALMAK
- KC_W, KC_L, KC_R, KC_B, KC_Z, KC_QUOT, KC_Q, KC_U, KC_D, KC_J,
- LGUI_T(KC_S), LALT_T(KC_H), LCTL_T(KC_N), LSFT_T(KC_T), KC_COMM, KC_DOT, LSFT_T(KC_A), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I),
- LT(BUTTON, KC_F), ALGR_T(KC_M), KC_V, KC_C, KC_SLSH, KC_G, KC_P, KC_X, ALGR_T(KC_K), LT(BUTTON, KC_Y),
- U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
- #elif defined MIRYOKU_ALPHAS_WORKMAN
- KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT,
- LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_H), LSFT_T(KC_T), KC_G, KC_Y, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I),
- LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
- U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
- #elif defined MIRYOKU_ALPHAS_QWERTY
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT),
- LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
- U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
- #elif defined MIRYOKU_ALPHAS_QWERTZ
- KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P,
- LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT),
- LT(BUTTON, KC_Y), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
- U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
+ [BASE] = U_MACRO_VA_ARGS(LAYOUT_miryoku, MIRYOKU_LAYER_BASE),
+ [NAV] = U_MACRO_VA_ARGS(LAYOUT_miryoku, MIRYOKU_LAYER_NAV),
+ [MOUSE] = U_MACRO_VA_ARGS(LAYOUT_miryoku, MIRYOKU_LAYER_MOUSE),
+ [MEDIA] = U_MACRO_VA_ARGS(LAYOUT_miryoku, MIRYOKU_LAYER_MEDIA),
+ [NUM] = U_MACRO_VA_ARGS(LAYOUT_miryoku, MIRYOKU_LAYER_NUM),
+ [SYM] = U_MACRO_VA_ARGS(LAYOUT_miryoku, MIRYOKU_LAYER_SYM),
+ [FUN] = U_MACRO_VA_ARGS(LAYOUT_miryoku, MIRYOKU_LAYER_FUN),
+ [BUTTON] = U_MACRO_VA_ARGS(LAYOUT_miryoku, MIRYOKU_LAYER_BUTTON)
+};
+
+#if defined (MIRYOKU_KLUDGE_THUMBCOMBOS)
+const uint16_t PROGMEM thumbcombos_base_right[] = {LT(SYM, KC_ENT), LT(NUM, KC_BSPC), COMBO_END};
+const uint16_t PROGMEM thumbcombos_base_left[] = {LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), COMBO_END};
+const uint16_t PROGMEM thumbcombos_nav[] = {KC_ENT, KC_BSPC, COMBO_END};
+const uint16_t PROGMEM thumbcombos_mouse[] = {KC_BTN1, KC_BTN3, COMBO_END};
+const uint16_t PROGMEM thumbcombos_media[] = {KC_MSTP, KC_MPLY, COMBO_END};
+const uint16_t PROGMEM thumbcombos_num[] = {KC_0, KC_MINS, COMBO_END};
+ #if defined (MIRYOKU_LAYERS_FLIP)
+const uint16_t PROGMEM thumbcombos_sym[] = {KC_UNDS, KC_LPRN, COMBO_END};
#else
- KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
- LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O),
- LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH),
- U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
+const uint16_t PROGMEM thumbcombos_sym[] = {KC_RPRN, KC_UNDS, COMBO_END};
#endif
- ),
- #if defined MIRYOKU_NAV_VI
- [NAV] = LAYOUT_miryoku(
- RESET, U_NA, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
- KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS,
- U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS,
- U_NP, U_NP, U_NA, U_NA, U_NA, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP
- ),
- [MOUSE] = LAYOUT_miryoku(
- RESET, U_NA, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
- KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, U_NU,
- U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, U_NU,
- U_NP, U_NP, U_NA, U_NA, U_NA, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP
- ),
- [MEDIA] = LAYOUT_miryoku(
- RESET, U_NA, U_NA, U_NA, U_NA, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
- KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, U_NU,
- U_NA, KC_ALGR, U_NA, U_NA, U_NA, U_NU, U_NU, U_NU, U_NU, U_NU,
- U_NP, U_NP, U_NA, U_NA, U_NA, KC_MSTP, KC_MPLY, KC_MUTE, U_NP, U_NP
- ),
+const uint16_t PROGMEM thumbcombos_fun[] = {KC_SPC, KC_TAB, COMBO_END};
+combo_t key_combos[COMBO_COUNT] = {
+ COMBO(thumbcombos_base_right, LT(FUN, KC_DEL)),
+ COMBO(thumbcombos_base_left, LT(MEDIA, KC_ESC)),
+ COMBO(thumbcombos_nav, KC_DEL),
+ COMBO(thumbcombos_mouse, KC_BTN2),
+ COMBO(thumbcombos_media, KC_MUTE),
+ COMBO(thumbcombos_num, KC_DOT),
+ #if defined (MIRYOKU_LAYERS_FLIP)
+ COMBO(thumbcombos_sym, KC_RPRN),
#else
- [NAV] = LAYOUT_miryoku(
- RESET, U_NA, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
- KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
- U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END,
- U_NP, U_NP, U_NA, U_NA, U_NA, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP
- ),
- [MOUSE] = LAYOUT_miryoku(
- RESET, U_NA, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
- KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, U_NU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R,
- U_NA, KC_ALGR, U_NA, U_NA, U_NA, U_NU, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R,
- U_NP, U_NP, U_NA, U_NA, U_NA, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP
- ),
- [MEDIA] = LAYOUT_miryoku(
- RESET, U_NA, U_NA, U_NA, U_NA, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
- KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, U_NU, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT,
- U_NA, KC_ALGR, U_NA, U_NA, U_NA, U_NU, U_NU, U_NU, U_NU, U_NU,
- U_NP, U_NP, U_NA, U_NA, U_NA, KC_MSTP, KC_MPLY, KC_MUTE, U_NP, U_NP
- ),
+ COMBO(thumbcombos_sym, KC_LPRN),
#endif
- [NUM] = LAYOUT_miryoku(
- KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, U_NA, U_NA, U_NA, U_NA, RESET,
- KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
- KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, U_NA, U_NA, U_NA, KC_ALGR, U_NA,
- U_NP, U_NP, KC_DOT, KC_0, KC_MINS, U_NA, U_NA, U_NA, U_NP, U_NP
- ),
- [SYM] = LAYOUT_miryoku(
- KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, U_NA, U_NA, U_NA, U_NA, RESET,
- KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
- KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, U_NA, U_NA, U_NA, KC_ALGR, U_NA,
- U_NP, U_NP, KC_LPRN, KC_RPRN, KC_UNDS, U_NA, U_NA, U_NA, U_NP, U_NP
- ),
- [FUN] = LAYOUT_miryoku(
- KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, U_NA, U_NA, U_NA, U_NA, RESET,
- KC_F11, KC_F4, KC_F5, KC_F6, KC_SLCK, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
- KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, U_NA, U_NA, U_NA, KC_ALGR, U_NA,
- U_NP, U_NP, KC_APP, KC_SPC, KC_TAB, U_NA, U_NA, U_NA, U_NP, U_NP
- ),
-#endif
- [BUTTON] = LAYOUT_miryoku(
- U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
- KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_TRNS, KC_TRNS, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
- U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
- U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP
- )
+ COMBO(thumbcombos_fun, KC_APP)
};
+#endif
diff --git a/users/manna-harbour_miryoku/manna-harbour_miryoku.h b/users/manna-harbour_miryoku/manna-harbour_miryoku.h
index 1d14f61710..f6ef63c360 100644
--- a/users/manna-harbour_miryoku/manna-harbour_miryoku.h
+++ b/users/manna-harbour_miryoku/manna-harbour_miryoku.h
@@ -1,41 +1,41 @@
// 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
-#include QMK_KEYBOARD_H
+#include "miryoku_babel/miryoku_layer_names.h"
+#include "miryoku_babel/miryoku_layer.h"
+
+#define U_MACRO_VA_ARGS(macro, ...) macro(__VA_ARGS__)
#define U_NP KC_NO // key is not present
#define U_NA KC_NO // present but not available for use
#define U_NU KC_NO // available but not used
-enum layers { BASE, BUTTON, MEDIA, NAV, MOUSE, SYM, NUM, FUN };
-
-#if defined MIRYOKU_CLIPBOARD_FUN
-#define U_RDO KC_AGIN
-#define U_PST KC_PSTE
-#define U_CPY KC_COPY
-#define U_CUT KC_CUT
-#define U_UND KC_UNDO
-#elif defined MIRYOKU_CLIPBOARD_MAC
-#define U_RDO SCMD(KC_Z)
-#define U_PST LCMD(KC_V)
-#define U_CPY LCMD(KC_C)
-#define U_CUT LCMD(KC_X)
-#define U_UND LCMD(KC_Z)
-#elif defined MIRYOKU_CLIPBOARD_WIN
-#define U_RDO C(KC_Y)
-#define U_PST C(KC_V)
-#define U_CPY C(KC_C)
-#define U_CUT C(KC_X)
-#define U_UND C(KC_Z)
+#if defined (MIRYOKU_CLIPBOARD_FUN)
+ #define U_RDO KC_AGIN
+ #define U_PST KC_PSTE
+ #define U_CPY KC_COPY
+ #define U_CUT KC_CUT
+ #define U_UND KC_UNDO
+#elif defined (MIRYOKU_CLIPBOARD_MAC)
+ #define U_RDO SCMD(KC_Z)
+ #define U_PST LCMD(KC_V)
+ #define U_CPY LCMD(KC_C)
+ #define U_CUT LCMD(KC_X)
+ #define U_UND LCMD(KC_Z)
+#elif defined (MIRYOKU_CLIPBOARD_WIN)
+ #define U_RDO C(KC_Y)
+ #define U_PST C(KC_V)
+ #define U_CPY C(KC_C)
+ #define U_CUT C(KC_X)
+ #define U_UND C(KC_Z)
#else
-#define U_RDO KC_AGIN
-#define U_PST S(KC_INS)
-#define U_CPY C(KC_INS)
-#define U_CUT S(KC_DEL)
-#define U_UND KC_UNDO
+ #define U_RDO KC_AGIN
+ #define U_PST S(KC_INS)
+ #define U_CPY C(KC_INS)
+ #define U_CUT S(KC_DEL)
+ #define U_UND KC_UNDO
#endif
diff --git a/users/manna-harbour_miryoku/miryoku_babel/miryoku_alternatives.h b/users/manna-harbour_miryoku/miryoku_babel/miryoku_alternatives.h
new file mode 100644
index 0000000000..8a0e70a6b5
--- /dev/null
+++ b/users/manna-harbour_miryoku/miryoku_babel/miryoku_alternatives.h
@@ -0,0 +1,267 @@
+// Copyright 2019 Manna Harbour
+// https://github.com/manna-harbour/miryoku
+// generated -*- buffer-read-only: t -*-
+// target: 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 MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP \
+KC_A, KC_Z, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
+LGUI_T(KC_Q), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_M), \
+LT(BUTTON, KC_W), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_COMM, KC_DOT, ALGR_T(KC_SLSH), LT(BUTTON, KC_QUOT), \
+U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP \
+KC_Q, KC_H, KC_O, KC_U, KC_X, KC_G, KC_C, KC_R, KC_F, KC_Z, \
+LGUI_T(KC_Y), LALT_T(KC_I), LCTL_T(KC_E), LSFT_T(KC_A), KC_DOT, KC_D, LSFT_T(KC_S), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_B), \
+LT(BUTTON, KC_J), ALGR_T(KC_SLSH), KC_COMM, KC_K, KC_QUOT, KC_W, KC_M, KC_L, ALGR_T(KC_P), LT(BUTTON, KC_V), \
+U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP \
+KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \
+LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_D, KC_H, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), \
+LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), \
+U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP \
+KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \
+LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), \
+LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), \
+U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP \
+KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \
+LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_K, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), \
+LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), \
+U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP \
+KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, \
+LGUI_T(KC_A), LALT_T(KC_O), LCTL_T(KC_E), LSFT_T(KC_U), KC_I, KC_D, LSFT_T(KC_H), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_S), \
+LT(BUTTON, KC_SLSH), ALGR_T(KC_Q), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, ALGR_T(KC_V), LT(BUTTON, KC_Z), \
+U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP \
+KC_W, KC_L, KC_R, KC_B, KC_Z, KC_QUOT, KC_Q, KC_U, KC_D, KC_J, \
+LGUI_T(KC_S), LALT_T(KC_H), LCTL_T(KC_N), LSFT_T(KC_T), KC_COMM, KC_DOT, LSFT_T(KC_A), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I), \
+LT(BUTTON, KC_F), ALGR_T(KC_M), KC_V, KC_C, KC_SLSH, KC_G, KC_P, KC_X, ALGR_T(KC_K), LT(BUTTON, KC_Y), \
+U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP \
+KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, \
+LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_H), LSFT_T(KC_T), KC_G, KC_Y, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I), \
+LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), \
+U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP \
+KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
+LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), \
+LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), \
+U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP \
+KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, \
+LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), \
+LT(BUTTON, KC_Y), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), \
+U_NP, U_NP, LT(FUN, KC_DEL), LT(NUM, KC_BSPC), LT(SYM, KC_ENT), LT(MOUSE, KC_TAB), LT(NAV, KC_SPC), LT(MEDIA, KC_ESC), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_AZERTY \
+KC_A, KC_Z, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
+LGUI_T(KC_Q), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_M), \
+LT(BUTTON, KC_W), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_COMM, KC_DOT, ALGR_T(KC_SLSH), LT(BUTTON, KC_QUOT), \
+U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_BEAKL15 \
+KC_Q, KC_H, KC_O, KC_U, KC_X, KC_G, KC_C, KC_R, KC_F, KC_Z, \
+LGUI_T(KC_Y), LALT_T(KC_I), LCTL_T(KC_E), LSFT_T(KC_A), KC_DOT, KC_D, LSFT_T(KC_S), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_B), \
+LT(BUTTON, KC_J), ALGR_T(KC_SLSH), KC_COMM, KC_K, KC_QUOT, KC_W, KC_M, KC_L, ALGR_T(KC_P), LT(BUTTON, KC_V), \
+U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_COLEMAK \
+KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \
+LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_D, KC_H, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), \
+LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), \
+U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH \
+KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \
+LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), \
+LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), \
+U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK \
+KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT, \
+LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_K, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O), \
+LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_M, KC_H, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), \
+U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_DVORAK \
+KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, \
+LGUI_T(KC_A), LALT_T(KC_O), LCTL_T(KC_E), LSFT_T(KC_U), KC_I, KC_D, LSFT_T(KC_H), LCTL_T(KC_T), LALT_T(KC_N), LGUI_T(KC_S), \
+LT(BUTTON, KC_SLSH), ALGR_T(KC_Q), KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, ALGR_T(KC_V), LT(BUTTON, KC_Z), \
+U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_HALMAK \
+KC_W, KC_L, KC_R, KC_B, KC_Z, KC_QUOT, KC_Q, KC_U, KC_D, KC_J, \
+LGUI_T(KC_S), LALT_T(KC_H), LCTL_T(KC_N), LSFT_T(KC_T), KC_COMM, KC_DOT, LSFT_T(KC_A), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I), \
+LT(BUTTON, KC_F), ALGR_T(KC_M), KC_V, KC_C, KC_SLSH, KC_G, KC_P, KC_X, ALGR_T(KC_K), LT(BUTTON, KC_Y), \
+U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_WORKMAN \
+KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_QUOT, \
+LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_H), LSFT_T(KC_T), KC_G, KC_Y, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_O), LGUI_T(KC_I), \
+LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), \
+U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_QWERTY \
+KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, \
+LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), \
+LT(BUTTON, KC_Z), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), \
+U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_BASE_QWERTZ \
+KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Z, KC_U, KC_I, KC_O, KC_P, \
+LGUI_T(KC_A), LALT_T(KC_S), LCTL_T(KC_D), LSFT_T(KC_F), KC_G, KC_H, LSFT_T(KC_J), LCTL_T(KC_K), LALT_T(KC_L), LGUI_T(KC_QUOT), \
+LT(BUTTON, KC_Y), ALGR_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, ALGR_T(KC_DOT), LT(BUTTON, KC_SLSH), \
+U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
+
+
+#define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT_FLIP \
+KC_PGUP, KC_HOME, KC_UP, KC_END, KC_INS, U_NA, U_NA, U_NA, U_NA, RESET, \
+KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_CAPS, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \
+U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_NA, U_NA, KC_ALGR, U_NA, \
+U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, U_NA, U_NA, U_NA, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_NAV_FLIP \
+KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, U_NA, U_NA, U_NA, U_NA, RESET, \
+KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \
+U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_NA, U_NA, KC_ALGR, U_NA, \
+U_NP, U_NP, KC_DEL, KC_BSPC, KC_ENT, U_NA, U_NA, U_NA, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_NAV_INVERTEDT \
+RESET, U_NA, U_NA, U_NA, U_NA, KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, \
+KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, \
+U_NA, KC_ALGR, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \
+U_NP, U_NP, U_NA, U_NA, U_NA, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_NAV_VI \
+RESET, U_NA, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \
+KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS, \
+U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, \
+U_NP, U_NP, U_NA, U_NA, U_NA, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_NAV \
+RESET, U_NA, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \
+KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, \
+U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END, \
+U_NP, U_NP, U_NA, U_NA, U_NA, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP
+
+
+#define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT_FLIP \
+KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, U_NU, U_NA, U_NA, U_NA, U_NA, RESET, \
+KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, U_NU, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \
+U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_NA, U_NA, KC_ALGR, U_NA, \
+U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, U_NA, U_NA, U_NA, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_MOUSE_FLIP \
+KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, U_NU, U_NA, U_NA, U_NA, U_NA, RESET, \
+KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, U_NU, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \
+U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_NA, U_NA, U_NA, KC_ALGR, U_NA, \
+U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, U_NA, U_NA, U_NA, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT \
+RESET, U_NA, U_NA, U_NA, U_NA, U_NU, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, \
+KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, U_NU, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, \
+U_NA, KC_ALGR, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \
+U_NP, U_NP, U_NA, U_NA, U_NA, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_MOUSE_VI \
+RESET, U_NA, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \
+KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, U_NU, \
+U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, U_NU, \
+U_NP, U_NP, U_NA, U_NA, U_NA, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_MOUSE \
+RESET, U_NA, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \
+KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, U_NU, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, \
+U_NA, KC_ALGR, U_NA, U_NA, U_NA, U_NU, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, \
+U_NP, U_NP, U_NA, U_NA, U_NA, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP
+
+
+#define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT_FLIP \
+RGB_SAI, RGB_HUI, KC_VOLU, RGB_MOD, RGB_TOG, U_NA, U_NA, U_NA, U_NA, RESET, \
+RGB_VAI, KC_MPRV, KC_VOLD, KC_MNXT, OUT_AUTO, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \
+U_NU, U_NU, U_NU, U_NU, U_NU, U_NA, U_NA, U_NA, KC_ALGR, U_NA, \
+U_NP, U_NP, KC_MUTE, KC_MPLY, KC_MSTP, U_NA, U_NA, U_NA, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_MEDIA_FLIP \
+RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, U_NA, U_NA, U_NA, U_NA, RESET, \
+KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, OUT_AUTO, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \
+U_NU, U_NU, U_NU, U_NU, U_NU, U_NA, U_NA, U_NA, KC_ALGR, U_NA, \
+U_NP, U_NP, KC_MUTE, KC_MPLY, KC_MSTP, U_NA, U_NA, U_NA, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT \
+RESET, U_NA, U_NA, U_NA, U_NA, RGB_TOG, RGB_MOD, KC_VOLU, RGB_HUI, RGB_SAI, \
+KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, OUT_AUTO, KC_MPRV, KC_VOLD, KC_MNXT, RGB_VAI, \
+U_NA, KC_ALGR, U_NA, U_NA, U_NA, U_NU, U_NU, U_NU, U_NU, U_NU, \
+U_NP, U_NP, U_NA, U_NA, U_NA, KC_MSTP, KC_MPLY, KC_MUTE, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_MEDIA_VI \
+RESET, U_NA, U_NA, U_NA, U_NA, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, \
+KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, OUT_AUTO, \
+U_NA, KC_ALGR, U_NA, U_NA, U_NA, U_NU, U_NU, U_NU, U_NU, U_NU, \
+U_NP, U_NP, U_NA, U_NA, U_NA, KC_MSTP, KC_MPLY, KC_MUTE, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_MEDIA \
+RESET, U_NA, U_NA, U_NA, U_NA, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, \
+KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, OUT_AUTO, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, \
+U_NA, KC_ALGR, U_NA, U_NA, U_NA, U_NU, U_NU, U_NU, U_NU, U_NU, \
+U_NP, U_NP, U_NA, U_NA, U_NA, KC_MSTP, KC_MPLY, KC_MUTE, U_NP, U_NP
+
+
+#define MIRYOKU_ALTERNATIVES_NUM_FLIP \
+RESET, U_NA, U_NA, U_NA, U_NA, KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, \
+KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_EQL, KC_4, KC_5, KC_6, KC_SCLN, \
+U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_BSLS, KC_1, KC_2, KC_3, KC_GRV, \
+U_NP, U_NP, U_NA, U_NA, U_NA, KC_MINS, KC_0, KC_DOT, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_NUM \
+KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, U_NA, U_NA, U_NA, U_NA, RESET, \
+KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \
+KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, U_NA, U_NA, U_NA, KC_ALGR, U_NA, \
+U_NP, U_NP, KC_DOT, KC_0, KC_MINS, U_NA, U_NA, U_NA, U_NP, U_NP
+
+
+#define MIRYOKU_ALTERNATIVES_SYM_FLIP \
+RESET, U_NA, U_NA, U_NA, U_NA, KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, \
+KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_PLUS, KC_DLR, KC_PERC, KC_CIRC, KC_COLN, \
+U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_PIPE, KC_EXLM, KC_AT, KC_HASH, KC_TILD, \
+U_NP, U_NP, U_NA, U_NA, U_NA, KC_UNDS, KC_LPRN, KC_RPRN, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_SYM \
+KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, U_NA, U_NA, U_NA, U_NA, RESET, \
+KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \
+KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, U_NA, U_NA, U_NA, KC_ALGR, U_NA, \
+U_NP, U_NP, KC_LPRN, KC_RPRN, KC_UNDS, U_NA, U_NA, U_NA, U_NP, U_NP
+
+
+#define MIRYOKU_ALTERNATIVES_FUN_FLIP \
+RESET, U_NA, U_NA, U_NA, U_NA, KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F12, \
+KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_SLCK, KC_F4, KC_F5, KC_F6, KC_F11, \
+U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F10, \
+U_NP, U_NP, U_NA, U_NA, U_NA, KC_TAB, KC_SPC, KC_APP, U_NP, U_NP
+
+#define MIRYOKU_ALTERNATIVES_FUN \
+KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, U_NA, U_NA, U_NA, U_NA, RESET, \
+KC_F11, KC_F4, KC_F5, KC_F6, KC_SLCK, U_NA, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \
+KC_F10, KC_F1, KC_F2, KC_F3, KC_PAUS, U_NA, U_NA, U_NA, KC_ALGR, U_NA, \
+U_NP, U_NP, KC_APP, KC_SPC, KC_TAB, U_NA, U_NA, U_NA, U_NP, U_NP
+
+
+#define MIRYOKU_ALTERNATIVES_BUTTON \
+U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \
+KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_NO, KC_NO, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, \
+U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND, \
+U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP
diff --git a/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer.h b/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer.h
new file mode 100644
index 0000000000..025bf3914c
--- /dev/null
+++ b/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer.h
@@ -0,0 +1,139 @@
+// 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
+
+#include "miryoku_alternatives.h"
+
+#if !defined(MIRYOKU_LAYER_BASE)
+ #if defined (MIRYOKU_LAYERS_FLIP)
+ #if defined (MIRYOKU_ALPHAS_AZERTY)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_AZERTY_FLIP
+ #elif defined (MIRYOKU_ALPHAS_BEAKL15)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_BEAKL15_FLIP
+ #elif defined (MIRYOKU_ALPHAS_COLEMAK)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAK_FLIP
+ #elif defined (MIRYOKU_ALPHAS_COLEMAKDHK)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK_FLIP
+ #elif defined (MIRYOKU_ALPHAS_DVORAK)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_DVORAK_FLIP
+ #elif defined (MIRYOKU_ALPHAS_HALMAK)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_HALMAK_FLIP
+ #elif defined (MIRYOKU_ALPHAS_WORKMAN)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_WORKMAN_FLIP
+ #elif defined (MIRYOKU_ALPHAS_QWERTY)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTY_FLIP
+ #elif defined (MIRYOKU_ALPHAS_QWERTZ)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTZ_FLIP
+ #else
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH_FLIP
+ #endif
+ #else
+ #if defined (MIRYOKU_ALPHAS_AZERTY)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_AZERTY
+ #elif defined (MIRYOKU_ALPHAS_BEAKL15)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_BEAKL15
+ #elif defined (MIRYOKU_ALPHAS_COLEMAK)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAK
+ #elif defined (MIRYOKU_ALPHAS_COLEMAKDHK)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDHK
+ #elif defined (MIRYOKU_ALPHAS_DVORAK)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_DVORAK
+ #elif defined (MIRYOKU_ALPHAS_HALMAK)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_HALMAK
+ #elif defined (MIRYOKU_ALPHAS_WORKMAN)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_WORKMAN
+ #elif defined (MIRYOKU_ALPHAS_QWERTY)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTY
+ #elif defined (MIRYOKU_ALPHAS_QWERTZ)
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_QWERTZ
+ #else
+ #define MIRYOKU_LAYER_BASE MIRYOKU_ALTERNATIVES_BASE_COLEMAKDH
+ #endif
+ #endif
+#endif
+
+#if !defined(MIRYOKU_LAYER_NAV)
+ #if defined (MIRYOKU_LAYERS_FLIP)
+ #if defined (MIRYOKU_NAV_INVERTEDT)
+ #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_INVERTEDT_FLIP
+ #else
+ #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_FLIP
+ #endif
+ #else
+ #if defined (MIRYOKU_NAV_INVERTEDT)
+ #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_INVERTEDT
+ #elif defined (MIRYOKU_NAV_VI)
+ #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV_VI
+ #else
+ #define MIRYOKU_LAYER_NAV MIRYOKU_ALTERNATIVES_NAV
+ #endif
+ #endif
+#endif
+
+#if !defined(MIRYOKU_LAYER_MOUSE)
+ #if defined (MIRYOKU_LAYERS_FLIP)
+ #if defined (MIRYOKU_NAV_INVERTEDT)
+ #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT_FLIP
+ #else
+ #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_FLIP
+ #endif
+ #else
+ #if defined (MIRYOKU_NAV_INVERTEDT)
+ #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_INVERTEDT
+ #elif defined (MIRYOKU_NAV_VI)
+ #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE_VI
+ #else
+ #define MIRYOKU_LAYER_MOUSE MIRYOKU_ALTERNATIVES_MOUSE
+ #endif
+ #endif
+#endif
+
+#if !defined(MIRYOKU_LAYER_MEDIA)
+ #if defined (MIRYOKU_LAYERS_FLIP)
+ #if defined (MIRYOKU_NAV_INVERTEDT)
+ #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT_FLIP
+ #else
+ #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_FLIP
+ #endif
+ #else
+ #if defined (MIRYOKU_NAV_INVERTEDT)
+ #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_INVERTEDT
+ #elif defined (MIRYOKU_NAV_VI)
+ #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA_VI
+ #else
+ #define MIRYOKU_LAYER_MEDIA MIRYOKU_ALTERNATIVES_MEDIA
+ #endif
+ #endif
+#endif
+
+#if !defined(MIRYOKU_LAYER_NUM)
+ #if defined (MIRYOKU_LAYERS_FLIP)
+ #define MIRYOKU_LAYER_NUM MIRYOKU_ALTERNATIVES_NUM_FLIP
+ #else
+ #define MIRYOKU_LAYER_NUM MIRYOKU_ALTERNATIVES_NUM
+ #endif
+#endif
+
+#if !defined(MIRYOKU_LAYER_SYM)
+ #if defined (MIRYOKU_LAYERS_FLIP)
+ #define MIRYOKU_LAYER_SYM MIRYOKU_ALTERNATIVES_SYM_FLIP
+ #else
+ #define MIRYOKU_LAYER_SYM MIRYOKU_ALTERNATIVES_SYM
+ #endif
+#endif
+
+#if !defined(MIRYOKU_LAYER_FUN)
+ #if defined (MIRYOKU_LAYERS_FLIP)
+ #define MIRYOKU_LAYER_FUN MIRYOKU_ALTERNATIVES_FUN_FLIP
+ #else
+ #define MIRYOKU_LAYER_FUN MIRYOKU_ALTERNATIVES_FUN
+ #endif
+#endif
+
+#if !defined(MIRYOKU_LAYER_BUTTON)
+ #define MIRYOKU_LAYER_BUTTON MIRYOKU_ALTERNATIVES_BUTTON
+#endif
diff --git a/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_names.h b/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_names.h
new file mode 100644
index 0000000000..87e1f18d8c
--- /dev/null
+++ b/users/manna-harbour_miryoku/miryoku_babel/miryoku_layer_names.h
@@ -0,0 +1,9 @@
+// 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/>.
+
+#if !defined (MIRYOKU_LAYER_NAMES)
+ #define MIRYOKU_LAYER_NAMES BASE, BUTTON, NAV, MOUSE, MEDIA, NUM, SYM, FUN
+#endif
diff --git a/users/manna-harbour_miryoku/post_rules.mk b/users/manna-harbour_miryoku/post_rules.mk
new file mode 100644
index 0000000000..8fece85e66
--- /dev/null
+++ b/users/manna-harbour_miryoku/post_rules.mk
@@ -0,0 +1,37 @@
+# Copyright 2019 Manna Harbour
+# https://github.com/manna-harbour/miryoku
+
+# alternative layouts:
+
+# alphas
+ifneq ($(strip $(MIRYOKU_ALPHAS)),)
+ OPT_DEFS += -DMIRYOKU_ALPHAS_$(MIRYOKU_ALPHAS)
+endif
+
+# nav
+ifneq ($(strip $(MIRYOKU_NAV)),)
+ OPT_DEFS += -DMIRYOKU_NAV_$(MIRYOKU_NAV)
+endif
+
+# clipboard
+ifneq ($(strip $(MIRYOKU_CLIPBOARD)),)
+ OPT_DEFS += -DMIRYOKU_CLIPBOARD_$(MIRYOKU_CLIPBOARD)
+endif
+
+# layers
+ifneq ($(strip $(MIRYOKU_LAYERS)),)
+ OPT_DEFS += -DMIRYOKU_LAYERS_$(MIRYOKU_LAYERS)
+endif
+
+# subset mappings
+ifneq ($(strip $(MIRYOKU_MAPPING)),)
+ OPT_DEFS += -DMIRYOKU_MAPPING_$(MIRYOKU_MAPPING)
+endif
+
+# kludges:
+
+# thumb combos
+ifeq ($(strip $(MIRYOKU_KLUDGE_THUMBCOMBOS)),yes)
+ COMBO_ENABLE = yes
+ OPT_DEFS += -DMIRYOKU_KLUDGE_THUMBCOMBOS
+endif
diff --git a/users/manna-harbour_miryoku/readme.org b/users/manna-harbour_miryoku/readme.org
index b904738a67..9e3e587240 100644
--- a/users/manna-harbour_miryoku/readme.org
+++ b/users/manna-harbour_miryoku/readme.org
@@ -1,10 +1,11 @@
-# After making changes to code or tables call org-babel-tangle (C-c C-v t).
+# Copyright 2022 Manna Harbour
+# https://github.com/manna-harbour/miryoku
* Miryoku QMK [[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/miryoku-roa-32.png]]
[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/cover/miryoku-kle-cover.png]]
-[[https://github.com/manna-harbour/miryoku/][Miryoku]] is an ergonomic, minimal, orthogonal, and universal keyboard layout. This is the Miryoku implementation for [[https://qmk.fm][QMK]].
+[[https://github.com/manna-harbour/miryoku/][Miryoku]] is an ergonomic, minimal, orthogonal, and universal keyboard layout. [[https://github.com/manna-harbour/miryoku_qmk/tree/miryoku/users/manna-harbour_miryoku][Miryoku QMK]] is the Miryoku implementation for [[https://qmk.fm][QMK]].
** Branches
@@ -33,833 +34,77 @@ git checkout --track miryoku_qmk/miryoku
#+END_SRC
-** Layout
+** Building
-*** General Principles
-- Use layers instead of reaching.
-- Use both hands instead of contortions.
-- Use the home positions as much as possible.
-- Make full use of the thumbs.
-- Avoid unnecessary complication.
+*** Local Builds
+First [[https://docs.qmk.fm/#/newbs_getting_started][set up the QMK build environment and build the default keymap for your keyboard]].
-*** Details
+Build with ~manna-harbour_miryoku~ as the keymap name. Customised defaults for [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#alternative-layouts][alternative layout]] options can be set in [[#userspace][custom_rules.mk]]. Options can also be set or overridden at build time.
-- 5 columns, 3 rows, 3 thumb keys, 2 hands.
-- Can be used on almost any split or non-split ergo or ortho keyboard.
-- Includes all keys found on a US layout TKL keyboard, plus media keys and mouse
- emulation.
-- Home row is the middle row, home thumb key is the middle thumb key.
-- Maximum 1-u movement from home position for fingers and thumbs, and only along
- one axis (except for the inner index finger column which is deprioritised
- compared with the home columns).
-- Dual-function modifiers on home row, mirrored on both hands.
-- Dual-function layer change on thumbs.
-- Layers are designed orthogonally with a single purpose per hand and are
- accessed by holding a thumb key on the opposite hand.
-- All layers on the same hand are based on the same basic key arrangement.
-- Holding layer change and modifiers on one hand combined with a single key
- press on the other hand can produce any combination of modifiers and single
- keys without any finger contortions.
-- Single function mods are also defined on layers on the same hand as the layer
- change thumb key so layer change and mods can be held in any order or
- simultaneously without race conditions.
-- As mods are only enabled on the opposite hand, auto-repeat is available on the
- home row on layers for use with cursor and mouse keys.
-- Tap-hold auto-repeat is disabled to permit faster tap-hold switching on
- thumbs, but thumb tap keys are mirrored onto some layers for use with
- auto-repeat. On other layers thumb keys are redefined with important
- functions for that layer.
-- Auto Shift for numbers and symbols.
+**** qmk
-*** Layers
+Build with the ~qmk~ command. E.g.
-[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-reference.png]]
-
-The layers are maintained in tables. ~U_NP~ indicates the key is not present
-and is used to fill in the table around the thumb keys. The grid arrangement of
-the tables does not imply a particular physical layout.
-
-Basic keycodes are entered without the ~KC_~ prefix. Symbols can be entered
-as-is, except for '-' (~MINS~), '.' (~DOT~), '|' (~PIPE~), and '"' (~DQUO~).
-Empty cells are unused.
-
-The base layer is maintained as separate tables for tap alphas, tap thumbs, and
-hold. Other layers are specified as a single hand including thumbs. Tables are
-combined to produce the keymap for each layer.
-
-Mods (and reset) will be available on sub layers on the same hand as the layer
-change thumb key. Unknown names are considered to be layer names.
-
-
-**** Base
-
-[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-base.png]]
-
-The base layer alphas are Colemak Mod-DH. Dot, comma, slash, and apostrophe are
-included with the alphas. The primary, secondary, and tertiary thumb keys are
-backspace, enter, delete on the right and space, tab, escape on the left.
-
-Alternative alpha arrangements are also available.
-
-
-***** Tap
-
-
-****** Alphas
-
-#+NAME: colemakdh
-| Q | W | F | P | B | J | L | U | Y | ' |
-| A | R | S | T | G | M | N | E | I | O |
-| Z | X | C | D | V | K | H | , | DOT | / |
-
-
-****** Thumbs
-
-#+NAME: thumbs
-| U_NP | U_NP | ESC | SPC | TAB | ENT | BSPC | DEL | U_NP | U_NP |
-
-
-***** Hold
-
-#+NAME: hold
-| RESET | | | | | | | | | RESET |
-| LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI |
-| BUTTON | ALGR | | | | | | | ALGR | BUTTON |
-| U_NP | U_NP | MEDIA | NAV | MOUSE | SYM | NUM | FUN | U_NP | U_NP |
-
-
-**** Nav
-
-[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-nav.png]]
-
-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.
-
-Alternative clipboard key mappings and navigation key arrangements are
-available.
-
-#+NAME: nav-r
-| U_RDO | U_PST | U_CPY | U_CUT | U_UND |
-| CAPS | LEFT | DOWN | UP | RGHT |
-| INS | HOME | PGDN | PGUP | END |
-| ENT | BSPC | DEL | U_NP | U_NP |
-
-
-**** Mouse
-
-[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-mouse.png]]
-
-Secondary right-hand layer is mouse emulation. Mouse movement mirrors cursor
-navigation on home and wheel mirrors line / page movement below. Buttons are on
-the thumbs (L, M, R). Mouse movement, click, and drag, with modifiers, can be
-performed from the home position. Clipboard keys are duplicated from the Nav
-layer.
-
-#+NAME: mouse-r
-| U_RDO | U_PST | U_CPY | U_CUT | U_UND |
-| | MS_L | MS_D | MS_U | MS_R |
-| | WH_L | WH_D | WH_U | WH_R |
-| BTN1 | BTN3 | BTN2 | U_NP | U_NP |
-
-
-**** Button
-
-[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-button.png]]
-
-Provides mouse buttons, mods, and clipboard keys for use with integrated or
-external pointing devices, used with either hand. The layer is available for
-automatic activation depending on hardware and configuration. It can also be
-activated manually by holding a bottom row pinkie key (however GUI and Undo will
-be unavailable).
-
-#+NAME: button
-| U_UND | U_CUT | U_CPY | U_PST | U_RDO | U_RDO | U_PST | U_CPY | U_CUT | U_UND |
-| LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI |
-| U_UND | U_CUT | U_CPY | U_PST | U_RDO | U_RDO | U_PST | U_CPY | U_CUT | U_UND |
-| U_NP | U_NP | BTN2 | BTN3 | BTN1 | BTN1 | BTN3 | BTN2 | U_NP | U_NP |
-
-
-**** Media
-
-[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-media.png]]
-
-Tertiary right-hand layer is media control, with volume up / down and next /
-prev mirroring the navigation keys. Pause, stop and mute are on thumbs. RGB
-control is on the top row (combine with shift to invert). Unused keys are
-available for other related functions.
-
-#+NAME: media-r
-| RGB_TOG | RGB_MOD | RGB_HUI | RGB_SAI | RGB_VAI |
-| | MPRV | VOLD | VOLU | MNXT |
-| | | | | |
-| MSTP | MPLY | MUTE | U_NP | U_NP |
-
-
-**** Num
-
-[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-num.png]]
-
-Primary left-hand layer (right home thumb) is numerals and symbols. Numerals
-are in the standard numpad locations with symbols in the remaining positions.
-Dot is duplicated from the base layer.
-
-#+NAME: num-l
-| [ | 7 | 8 | 9 | ] |
-| ; | 4 | 5 | 6 | = |
-| ` | 1 | 2 | 3 | \ |
-| U_NP | U_NP | DOT | 0 | MINS |
-
-
-**** Sym
-
-[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-sym.png]]
-
-Secondary left-hand layer has shifted symbols in the same locations to reduce
-chording when using mods with shifted symbols. Open parenthesis is duplicated
-next to close parenthesis.
-
-#+NAME: sym-l
-| { | & | * | ( | } |
-| : | $ | % | ^ | + |
-| ~ | ! | @ | # | PIPE |
-| U_NP | U_NP | ( | ) | _ |
-
-
-**** Fun
-
-[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-fun.png]]
-
-Tertiary left-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 (menu) is on the tertiary thumb key and other thumb keys are duplicated from
-the base layer to enable auto-repeat.
-
-
-#+NAME: fun-l
-| F12 | F7 | F8 | F9 | PSCR |
-| F11 | F4 | F5 | F6 | SLCK |
-| F10 | F1 | F2 | F3 | PAUS |
-| U_NP | U_NP | APP | SPC | TAB |
-
-
-**** Alternative Layouts
-
-The defaults are recommended, but alternative layouts are provided to
-accommodate existing muscle memory and platform differences.
-
-
-***** Alphas
-
-To select, append the corresponding option to the ~make~ command line when
-building, e.g. ~MIRYOKU_ALPHAS=QWERTY~.
-
-
-****** AZERTY
-
-~MIRYOKU_ALPHAS=AZERTY~
-
-#+NAME: azerty
-| A | Z | E | R | T | Y | U | I | O | P |
-| Q | S | D | F | G | H | J | K | L | M |
-| W | X | C | V | B | N | , | DOT | / | ' |
-
-
-****** Colemak
-
-~MIRYOKU_ALPHAS=COLEMAK~
-
-#+NAME: colemak
-| Q | W | F | P | G | J | L | U | Y | ' |
-| A | R | S | T | D | H | N | E | I | O |
-| Z | X | C | V | B | K | M | , | DOT | / |
-
-
-****** Colemak Mod-DHk
-
-~MIRYOKU_ALPHAS=COLEMAKDHK~
-
-#+NAME: colemakdhk
-| Q | W | F | P | B | J | L | U | Y | ' |
-| A | R | S | T | G | K | N | E | I | O |
-| Z | X | C | D | V | M | H | , | DOT | / |
-
-
-****** Dvorak
-
-~MIRYOKU_ALPHAS=DVORAK~
-
-#+NAME: dvorak
-| ' | , | DOT | P | Y | F | G | C | R | L |
-| A | O | E | U | I | D | H | T | N | S |
-| / | Q | J | K | X | B | M | W | V | Z |
-
-
-****** Halmak
-
-~MIRYOKU_ALPHAS=HALMAK~
-
-#+NAME: halmak
-| W | L | R | B | Z | ' | Q | U | D | J |
-| S | H | N | T | , | DOT | A | E | O | I |
-| F | M | V | C | / | G | P | X | K | Y |
-
-
-****** Workman
-
-~MIRYOKU_ALPHAS=WORKMAN~
-
-#+NAME: workman
-| Q | D | R | W | B | J | F | U | P | ' |
-| A | S | H | T | G | Y | N | E | O | I |
-| Z | X | M | C | V | K | L | , | DOT | / |
-
-
-****** QWERTY
-
-~MIRYOKU_ALPHAS=QWERTY~
-
-#+NAME: 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 | , | DOT | / |
-
-
-****** QWERTZ
-
-~MIRYOKU_ALPHAS=QWERTZ~
-
-#+NAME: qwertz
-| Q | W | E | R | T | Z | U | I | O | P |
-| A | S | D | F | G | H | J | K | L | ' |
-| Y | X | C | V | B | N | M | , | DOT | / |
-
-
-***** Nav
-
-
-****** vi-Style
-
-To select, append ~MIRYOKU_NAV=VI~ to the ~make~ command line when building.
-Not available with ~MIRYOKU_LAYERS=FLIP~.
-
-
-******* Nav
-
-#+NAME: nav-r-vi
-| U_RDO | U_PST | U_CPY | U_CUT | U_UND |
-| LEFT | DOWN | UP | RGHT | CAPS |
-| HOME | PGDN | PGUP | END | INS |
-| ENT | BSPC | DEL | U_NP | U_NP |
-
-
-******* Mouse
-
-#+NAME: mouse-r-vi
-| U_RDO | U_PST | U_CPY | U_CUT | U_UND |
-| MS_L | MS_D | MS_U | MS_R | |
-| WH_L | WH_D | WH_U | WH_R | |
-| BTN1 | BTN3 | BTN2 | U_NP | U_NP |
-
-
-******* Media
-
-#+NAME: media-r-vi
-| RGB_TOG | RGB_MOD | RGB_HUI | RGB_SAI | RGB_VAI |
-| MPRV | VOLD | VOLU | MNXT | |
-| | | | | |
-| MSTP | MPLY | MUTE | U_NP | U_NP |
-
-
-****** Inverted-T
-
-[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/layers/miryoku-kle-reference-flip-invertedt.png]]
-
-To select, append ~MIRYOKU_NAV=INVERTEDT~ to the ~make~ command line when
-building. Only available with ~MIRYOKU_LAYERS=FLIP~.
-
-
-******* Nav
-
-#+NAME: nav-l-invertedt
-| PGUP | HOME | UP | END | INS |
-| PGDN | LEFT | DOWN | RGHT | CAPS |
-| U_UND | U_CUT | U_CPY | U_PST | U_RDO |
-| U_NP | U_NP | DEL | BSPC | ENT |
-
-
-******* Mouse
-
-#+NAME: mouse-l-invertedt
-| WH_U | WH_L | MS_U | WH_R | |
-| WH_D | MS_L | MS_D | MS_R | |
-| U_UND | U_CUT | U_CPY | U_PST | U_RDO |
-| U_NP | U_NP | BTN2 | BTN3 | BTN1 |
-
-
-******* Media
-
-#+NAME: media-l-invertedt
-| | | VOLU | | |
-| | MPRV | VOLD | MNXT | |
-| RGB_MOD | RGB_HUI | RGB_SAI | RGB_VAI | RGB_TOG |
-| U_NP | U_NP | MUTE | MPLY | MSTP |
-
-
-***** Clipboard
-
-Keycodes are translated according to the following tables.
-
-By default, the main clipboard keys (cut, copy, and paste) use the CUA bindings
-and should work in general unix and windows applications, emacs, and terminal
-emulators. The additional keys (undo, redo) usually require rebinding in the
-application.
-
-To select, append the corresponding option to the ~make~ command line when
-building, e.g. ~MIRYOKU_CLIPBOARD=WIN~.
-
-
-****** Default
-
-#+NAME: clipboard
-| U_RDO | AGIN |
-| U_PST | S(KC_INS) |
-| U_CPY | C(KC_INS) |
-| U_CUT | S(KC_DEL) |
-| U_UND | UNDO |
-
-
-****** Fun Cluster
-
-~MIRYOKU_CLIPBOARD=FUN~
-
-#+NAME: clipboard-fun
-| U_RDO | AGIN |
-| U_PST | PSTE |
-| U_CPY | COPY |
-| U_CUT | CUT |
-| U_UND | UNDO |
-
-
-****** Mac
-
-~MIRYOKU_CLIPBOARD=MAC~
-
-#+NAME: clipboard-mac
-| U_RDO | SCMD(KC_Z) |
-| U_PST | LCMD(KC_V) |
-| U_CPY | LCMD(KC_C) |
-| U_CUT | LCMD(KC_X) |
-| U_UND | LCMD(KC_Z) |
-
-
-****** Windows
-
-~MIRYOKU_CLIPBOARD=WIN~
-
-#+NAME: clipboard-win
-| U_RDO | C(KC_Y) |
-| U_PST | C(KC_V) |
-| U_CPY | C(KC_C) |
-| U_CUT | C(KC_X) |
-| U_UND | C(KC_Z) |
-
-
-***** Layers
-
-
-****** Flip
-
-Flip base layer thumb keys and sub layers between right and left hands.
-
-To select, append ~MIRYOKU_LAYERS=FLIP~ to the ~make~ command line when building.
-
-
-******* Thumbs
-
-#+NAME: thumbs-flip
-| U_NP | U_NP | DEL | BSPC | ENT | TAB | SPC | ESC | U_NP | U_NP |
-
-
-******* Hold
-
-#+NAME: hold-flip
-| RESET | | | | | | | | | RESET |
-| LGUI | LALT | LCTL | LSFT | | | LSFT | LCTL | LALT | LGUI |
-| BUTTON | ALGR | | | | | | | ALGR | BUTTON |
-| U_NP | U_NP | FUN | NUM | SYM | MOUSE | NAV | MEDIA | U_NP | U_NP |
-
-
-******* Nav
-
-#+NAME: nav-l
-| HOME | PGDN | PGUP | END | INS |
-| LEFT | DOWN | UP | RGHT | CAPS |
-| U_UND | U_CUT | U_CPY | U_PST | U_RDO |
-| U_NP | U_NP | DEL | BSPC | ENT |
-
-
-******* Mouse
-
-#+NAME: mouse-l
-| WH_L | WH_D | WH_U | WH_R | |
-| MS_L | MS_D | MS_U | MS_R | |
-| U_UND | U_CUT | U_CPY | U_PST | U_RDO |
-| U_NP | U_NP | BTN2 | BTN3 | BTN1 |
-
-
-******* Media
-
-#+NAME: media-l
-| RGB_MOD | RGB_HUI | RGB_SAI | RGB_VAI | RGB_TOG |
-| MPRV | VOLD | VOLU | MNXT | |
-| | | | | |
-| U_NP | U_NP | MUTE | MPLY | MSTP |
-
-
-******* Num
-
-#+NAME: num-r
-| [ | 7 | 8 | 9 | ] |
-| = | 4 | 5 | 6 | ; |
-| \ | 1 | 2 | 3 | ` |
-| MINS | 0 | DOT | U_NP | U_NP |
-
-
-******* Sym
-
-#+NAME: sym-r
-| { | & | * | ( | } |
-| + | $ | % | ^ | : |
-| PIPE | ! | @ | # | ~ |
-| _ | ( | ) | U_NP | U_NP |
-
-
-******* Fun
-
-#+NAME: fun-r
-| PSCR | F7 | F8 | F9 | F12 |
-| SLCK | F4 | F5 | F6 | F11 |
-| PAUS | F1 | F2 | F3 | F10 |
-| TAB | SPC | APP | U_NP | U_NP |
-
-
-**** COMMENT Templates
-
-#+NAME: tem
-| <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> | <l4> |
-|------+------+------+------+------+------+------+------+------+------|
-| | | | | | | | | | |
-| | | | | | | | | | |
-| | | | | | | | | | |
-| U_NP | U_NP | | | | | | | U_NP | U_NP |
-
-
-Duplicate base layer tap keys on thumbs rather than trans to enable auto-repeat.
-
-#+NAME: tem-r
-| <l4> | <l4> | <l4> | <l4> | <l4> |
-|------+------+------+------+------|
-| | | | | |
-| | | | | |
-| | | | | |
-| ENT | BSPC | DEL | U_NP | U_NP |
-
-#+NAME: tem-l
-| <l4> | <l4> | <l4> | <l4> | <l4> |
-|------+------+------+------+------|
-| | | | | |
-| | | | | |
-| | | | | |
-| U_NP | U_NP | ESC | SPC | TAB |
-
-
-** Code Generation
-
-The layout is maintained in emacs org-mode tables and converted to QMK keymap
-data structures using embedded python scripts.
-
-
-*** Table Conversion Scripts
-
-
-**** table-layout-taphold
-
-Produce base layer from separate tap and hold tables.
-
-#+NAME: table-layout-taphold
-#+BEGIN_SRC python :var alphas_table=colemakdh :var thumbs_table=thumbs :var hold_table=hold :var symbol_names_table=symbol-names :var mods_table=mods :var nonkc_table=nonkc :tangle no :results verbatim
-width = 19
-mods_dict = dict.fromkeys(mods_table[0])
-nonkc_tuple = tuple(nonkc_table[0])
-symbol_names_dict = {}
-for symbol, name, shifted_symbol, shifted_name in symbol_names_table:
- symbol_names_dict[symbol] = name
- symbol_names_dict[shifted_symbol] = shifted_name
-results = ''
-for tap_row, hold_row in zip(alphas_table + thumbs_table, hold_table):
- results += ' '
- for tap, hold in zip(tap_row, hold_row):
- if tap == '':
- code = 'U_NU'
- elif tap in symbol_names_dict:
- code = symbol_names_dict[tap]
- else:
- code = tap
- if not str(code).startswith(nonkc_tuple):
- code = 'KC_' + str(code)
- if hold in mods_dict:
- code = str(hold) + '_T(' + code + ')'
- elif hold != '' and hold != 'U_NP' and hold != 'RESET':
- code = 'LT(' + str(hold) + ', ' + code + ')'
- results += (code + ', ').ljust(width)
- results = results.rstrip(' ') + '\n'
-results = results.rstrip('\n, ')
-return results
-#+END_SRC
-
-#+RESULTS: table-layout-taphold
-: KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_QUOT,
-: LGUI_T(KC_A), LALT_T(KC_R), LCTL_T(KC_S), LSFT_T(KC_T), KC_G, KC_M, LSFT_T(KC_N), LCTL_T(KC_E), LALT_T(KC_I), LGUI_T(KC_O),
-: KC_Z, ALGR_T(KC_X), KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, ALGR_T(KC_DOT), KC_SLSH,
-: U_NP, U_NP, LT(MEDIA, KC_ESC), LT(NAV, KC_SPC), LT(MOUSE, KC_TAB), LT(SYM, KC_ENT), LT(NUM, KC_BSPC), LT(FUN, KC_DEL), U_NP, U_NP
-
-
-**** table-layout-half
-
-Produce sub layers given layer name and corresponding table for single hand and
-incorporating mods and reset from base layer. Layer names must end with 'R' or
-'L'. A layer with shifted symbols can also be generated.
-
-#+NAME: table-layout-half
-#+BEGIN_SRC python :var hold_table=hold :var mode="r" :var half_table=nav-r :var symbol_names_table=symbol-names :var mods_table=mods :var nonkc_table=nonkc :var shift="false" :tangle no :results verbatim
-width = 9
-mods_dict = dict.fromkeys(mods_table[0])
-nonkc_tuple = tuple(nonkc_table[0])
-symbol_names_dict = {}
-shifted_symbol_names_dict = {}
-for symbol, name, shifted_symbol, shifted_name in symbol_names_table:
- symbol_names_dict[symbol] = name
- symbol_names_dict[shifted_symbol] = shifted_name
- shifted_symbol_names_dict[symbol] = shifted_name
-length = len(half_table[0])
-results = ''
-for half_row, hold_row in zip(half_table, hold_table):
- results += ' '
- hold_row_l, hold_row_r = hold_row[:length], hold_row[length:]
- for lr, hold_row_lr in ('l', hold_row_l), ('r', hold_row_r):
- if lr == mode:
- for half in half_row:
- if half == '':
- code = 'U_NU'
- elif shift == "true" and half in shifted_symbol_names_dict:
- code = shifted_symbol_names_dict[half]
- elif half in symbol_names_dict:
- code = symbol_names_dict[half]
- else:
- code = half
- if not str(code).startswith(nonkc_tuple):
- code = 'KC_' + str(code)
- results += (str(code) + ', ').ljust(width)
- else:
- for hold in hold_row_lr:
- if hold == '' or hold != 'U_NP' and hold != 'RESET' and hold not in mods_dict:
- code = 'U_NA'
- else:
- code = hold
- if not str(code).startswith(nonkc_tuple):
- code = 'KC_' + str(code)
- results += (str(code) + ', ').ljust(width)
- results = results.rstrip(' ') + '\n'
-results = results.rstrip('\n, ')
-return results
-#+END_SRC
-
-#+RESULTS: table-layout-half
-: RESET, U_NA, U_NA, U_NA, U_NA, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
-: KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, U_NA, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
-: U_NA, KC_ALGR, U_NA, U_NA, U_NA, KC_INS, KC_HOME, KC_PGDN, KC_PGUP, KC_END,
-: U_NP, U_NP, U_NA, U_NA, U_NA, KC_ENT, KC_BSPC, KC_DEL, U_NP, U_NP
-
-
-**** table-layout-full
-
-Produce full layer from single table. Fill for unused keys is configurable.
-
-#+NAME: table-layout-full
-#+BEGIN_SRC python :var table=button :var fill="TRNS" :var symbol_names_table=symbol-names :var nonkc_table=nonkc :tangle no :results verbatim
-width = 9
-symbol_names_dict = {}
-nonkc_tuple = tuple(nonkc_table[0])
-for symbol, name, shifted_symbol, shifted_name in symbol_names_table:
- symbol_names_dict[symbol] = name
- symbol_names_dict[shifted_symbol] = shifted_name
-results = ''
-for row in table:
- results += ' '
- for key in row:
- if key == '':
- code = fill
- elif key in symbol_names_dict:
- code = symbol_names_dict[key]
- else:
- code = key
- if not str(code).startswith(nonkc_tuple):
- code = 'KC_' + str(code)
- results += (code + ', ').ljust(width)
- results = results.rstrip(' ') + '\n'
-results = results.rstrip('\n, ')
-return results
-#+END_SRC
-
-#+RESULTS: table-layout-full
-: U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
-: KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_TRNS, KC_TRNS, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI,
-: U_UND, U_CUT, U_CPY, U_PST, U_RDO, U_RDO, U_PST, U_CPY, U_CUT, U_UND,
-: U_NP, U_NP, KC_BTN2, KC_BTN3, KC_BTN1, KC_BTN1, KC_BTN3, KC_BTN2, U_NP, U_NP
-
-
-**** table-enums
-
-Produce layer enums from layer names in hold table.
-
-#+NAME: table-enums
-#+BEGIN_SRC python :var hold_table=hold :var mods_table=mods :tangle no
-mods_dict = dict.fromkeys(mods_table[0])
-layers = [ 'BASE', 'BUTTON' ]
-for hold_row in hold_table:
- for hold in hold_row:
- if hold not in mods_dict and hold != '' and hold != 'U_NP' and hold != 'RESET' and hold not in layers:
- layers.append(hold)
-results = 'enum layers { ' + ', '.join(layers) + ' };'
-return results
-#+END_SRC
-
-#+RESULTS: table-enums
-: enum layers { BASE, BUTTON, MEDIA, NAV, MOUSE, SYM, NUM, FUN };
-
-
-**** table-keycode-mappings
-
-Produce keycode mappings according to the provided table.
-
-#+NAME: table-keycode-mappings
-#+BEGIN_SRC python :var table=clipboard :var symbol_names_table=symbol-names :var nonkc_table=nonkc :tangle no
-nonkc_tuple = tuple(nonkc_table[0])
-symbol_names_dict = {}
-for symbol, name, shifted_symbol, shifted_name in symbol_names_table:
- symbol_names_dict[symbol] = name
- symbol_names_dict[shifted_symbol] = shifted_name
-results = ''
-for f,t in table:
- if t == '':
- code = 'U_NU'
- elif t in symbol_names_dict:
- code = symbol_names_dict[t]
- else:
- code = t
- if not str(code).startswith(nonkc_tuple):
- code = 'KC_' + str(code)
- results += '#define ' + f + ' ' + code + '\n'
-return results
+#+BEGIN_SRC sh :tangle no
+qmk compile -c -kb crkbd -km manna-harbour_miryoku # build for crkbd
+qmk flash -c -kb crkbd -km manna-harbour_miryoku # build for crkbd and flash
+qmk compile -c -kb crkbd -km manna-harbour_miryoku -e MIRYOKU_ALPHAS=QWERTY -e MIRYOKU_NAV=INVERTEDT -e MIRYOKU_CLIPBOARD=WIN -e MIRYOKU_LAYERS=FLIP # build for crkbd with alternative layouts
#+END_SRC
-#+RESULTS: table-keycode-mappings
-: #define U_RDO KC_AGIN
-: #define U_PST S(KC_INS)
-: #define U_CPY C(KC_INS)
-: #define U_CUT S(KC_DEL)
-: #define U_UND KC_UNDO
+**** make
-**** COMMENT python-version
+First ~cd~ to the repository root. Then build with ~make~. E.g.
-C-c C-c in code block to update
-
-#+NAME: python-version
-#+BEGIN_SRC python :tangle no
-import sys
-return sys.version
+#+BEGIN_SRC sh :tangle no
+make clean crkbd:manna-harbour_miryoku # build for crkbd
+make clean crkbd:manna-harbour_miryoku:flash # build for crkbd and flash
+make clean crkbd:manna-harbour_miryoku MIRYOKU_ALPHAS=QWERTY MIRYOKU_NAV=INVERTEDT MIRYOKU_CLIPBOARD=WIN MIRYOKU_LAYERS=FLIP # build for crkbd with alternative layouts
#+END_SRC
-#+RESULTS: python-version
-: 3.9.4 (default, Apr 9 2021, 01:15:05)
-: [GCC 5.4.0 20160609]
-
-
-*** Data
+*** Workflow Builds
-**** symbol-names
+Firmware can be built via GitHub Actions workflows without use of a local build environment. Local tools are still required for [[https://docs.qmk.fm/#/newbs_flashing][flashing]].
-Symbol, name, and shifted symbol mappings for use in tables.
+First log in to GitHub, fork the [[#miryoku-qmk-development-branch][Miryoku QMK development branch]] repository, and enable workflows.
-#+NAME: symbol-names
-| ` | GRV | ~ | TILD |
-| "-" | MINS | _ | UNDS |
-| = | EQL | + | PLUS |
-| [ | LBRC | { | LCBR |
-| ] | RBRC | } | RCBR |
-| \ | BSLS | PIPE | PIPE |
-| ; | SCLN | : | COLN |
-| ' | QUOT | DQUO | DQUO |
-| , | COMM | < | LT |
-| "." | DOT | > | GT |
-| / | SLSH | ? | QUES |
-| 1 | 1 | ! | EXLM |
-| 2 | 2 | @ | AT |
-| 3 | 3 | # | HASH |
-| 4 | 4 | $ | DLR |
-| 5 | 5 | % | PERC |
-| 6 | 6 | ^ | CIRC |
-| 7 | 7 | & | AMPR |
-| 8 | 8 | * | ASTR |
-| 9 | 9 | ( | LPRN |
-| 0 | 0 | ) | RPRN |
+To access a workflow, visit the Actions tab and select the workflow. To download the firmware from a workflow run, select the workflow, select the workflow run, select the desired Artifacts, and unzip the downloaded zip file.
+Workflow files are in [[../../.github/workflows]].
-**** mods
-Modifiers usable in hold table. Need to have the same name for ~KC_~ and ~_T~
-versions.
+**** Build Examples
-#+NAME: mods
-| LSFT | LCTL | LALT | LGUI | ALGR |
+Copy one of the included Build Example workflow files, edit the ~name~ value, and edit and add options and values as desired. Select Run workflow, select the Branch if desired, and activate Run workflow.
+Options are specified in the ~with~ section and are of the following form.
+: option: '["value"]'
-**** nonkc
+For multiple values per option use the following form, and a matrix build will be performed for each combination of values across all options.
+: option: '["value1","value2"]'
-Keycodes that match any of these prefixes will not have ~KC_~ automatically
-prepended.
+The ~keyboard~ option specifies the keyboard and is required. All other options are optional.
-#+NAME: nonkc
-| U_ | RGB_ | RESET | S( | C( | SCMD( | LCMD( |
+The ~alphas~, ~nav~, ~clipboard~, and ~layers~ options correspond to the [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#alternative-layouts][alternative layout]] options. The ~mapping~ option corresponds to the alternative [[#subset-mapping][mapping]] options. Alternative layout and mapping options are given in the documentation in the form ~MIRYOKU_OPTION=VALUE~. To use here, convert to the form specified above. Use ~default~ to represent the default value. Values for these five options are case-insensitive. See the [[../../.github/workflows/test-all-configs.yml][Test All Configs workflow file]] for all supported values.
+The ~rules~ and ~config~ options can be used to specify values to be appended to ~custom_rules.mk~ and ~custom_config.h~, respectively. Separate multiple lines with ~\n~.
-**** header
-Header for tangled files.
+**** Build Inputs
-#+NAME: header
-#+BEGIN_SRC C :main no :tangle no
-Copyright 2019 Manna Harbour
-https://github.com/manna-harbour/miryoku
-generated -*- buffer-read-only: t -*-
-#+END_SRC
+The Build Inputs workflow can be used without editing workflow files. Select Run workflow, select the Branch and fill out the form as desired, and activate Run workflow.
+Options are specified by entering values directly in the corresponding field. Multiple comma separated values can be entered per option and a matrix build will be performed for each combination of values across all options.
-**** license-qmk
+The ~Keyboard~ option specifies the keyboard and is required. All other options are optional.
-License for tangled QMK C source files.
+The ~Miryoku Alphas~, ~Miryoku Nav~, ~Miryoku Clipboard~, and ~Miryoku Layers~ options correspond to the [[https://github.com/manna-harbour/miryoku/tree/master/docs/reference#alternative-layouts][alternative layout]] options. The ~Miryoku Mapping~ option corresponds to the alternative [[#subset-mapping][mapping]] options. Alternative layout and mapping options are given in the documentation in the form ~MIRYOKU_OPTION=VALUE~. To use here, enter the ~value~ in the corresponding ~Miryoku Option~ field. Use ~default~ to represent the default value. Values for these five options are case-insensitive.
-#+NAME: license-qmk
-#+BEGIN_SRC C :main no :tangle no
-// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
-#+END_SRC
+The ~custom_rules.mk~ and ~custom_config.h~ options can be used to specify values to be appended to the corresponding files. Join multiple lines with ~\n~.
** Subset Mapping
@@ -875,255 +120,26 @@ The keymap is defined for ~LAYOUT_miryoku~ which is 10x4, with the outer 2
positions on the bottom row unused and the rest of the bottom row being the
thumb keys.
+- [[./rules.mk]] :: Build options. Automatically included.
-**** [[./rules.mk][users/manna-harbour_miryoku/rules.mk]]
-
-Build options. Automatically included.
-
-#+BEGIN_SRC makefile :noweb yes :padline no :tangle rules.mk
-# <<header>>
+- [[./custom_rules.mk]] :: Custom ~make~ options including customised defaults for alternative layout options, for local builds. Included from ~rules.mk~.
-MOUSEKEY_ENABLE = yes # Mouse keys
-EXTRAKEY_ENABLE = yes # Audio control and System control
-AUTO_SHIFT_ENABLE = yes # Auto Shift
+- [[./post_rules.mk]] :: Handles Miryoku ~make~ options. Included from ~rules.mk~.
-SRC += manna-harbour_miryoku.c # keymap
+- [[./config.h]] :: Config options. Automatically included.
-# alternative layouts:
+- [[./custom_config.h]] :: Custom config options for local builds. Included from ~config.h~.
-# alphas
-ifneq ($(strip $(MIRYOKU_ALPHAS)),)
- OPT_DEFS += -DMIRYOKU_ALPHAS_$(MIRYOKU_ALPHAS)
-endif
+- [[./manna-harbour_miryoku.h]] :: Keymap-related definitions. Included from ~manna-harbour_miryoku.c~. Layer data is generated by [[https://github.com/manna-harbour/miryoku_babel][Miryoku Babel]] and is included from files in the [[miryoku_babel]] directory.
-# nav
-ifneq ($(strip $(MIRYOKU_NAV)),)
- OPT_DEFS += -DMIRYOKU_NAV_$(MIRYOKU_NAV)
-endif
+- [[./manna-harbour_miryoku.c]] :: Contains the keymap. Added from ~rules.mk~.
-# clipboard
-ifneq ($(strip $(MIRYOKU_CLIPBOARD)),)
- OPT_DEFS += -DMIRYOKU_CLIPBOARD_$(MIRYOKU_CLIPBOARD)
-endif
-# layers
-ifneq ($(strip $(MIRYOKU_LAYERS)),)
- OPT_DEFS += -DMIRYOKU_LAYERS_$(MIRYOKU_LAYERS)
-endif
+*** Community Layouts
-# subset mappings
-ifneq ($(strip $(MIRYOKU_MAPPING)),)
- OPT_DEFS += -DMIRYOKU_MAPPING_$(MIRYOKU_MAPPING)
-endif
-#+END_SRC
-
-
-**** [[./config.h][users/manna-harbour_miryoku/config.h]]
-
-Config options. Automatically included.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle config.h
-// <<header>>
-
-<<license-qmk>>
-
-#pragma once
-
-// default but used in macros
-#undef TAPPING_TERM
-#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
-
-// Auto Shift
-#define NO_AUTO_SHIFT_ALPHA
-#define AUTO_SHIFT_TIMEOUT TAPPING_TERM
-#define AUTO_SHIFT_NO_SETUP
-
-// Recommended for heavy chording.
-#define QMK_KEYS_PER_SCAN 4
-
-// Mouse key speed and acceleration.
-#undef MOUSEKEY_DELAY
-#define MOUSEKEY_DELAY 0
-#undef MOUSEKEY_INTERVAL
-#define MOUSEKEY_INTERVAL 16
-#undef MOUSEKEY_WHEEL_DELAY
-#define MOUSEKEY_WHEEL_DELAY 0
-#undef MOUSEKEY_MAX_SPEED
-#define MOUSEKEY_MAX_SPEED 6
-#undef MOUSEKEY_TIME_TO_MAX
-#define MOUSEKEY_TIME_TO_MAX 64
-#+END_SRC
-
-
-**** [[./manna-harbour_miryoku.h][users/manna-harbour_miryoku/manna-harbour_miryoku.h]]
-
-Keymap-related definitions. Included from ~manna-harbour_miryoku.c~. Can be
-included from keymap or layout ~keymap.c~ if needed.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle manna-harbour_miryoku.h
-// <<header>>
-
-<<license-qmk>>
-
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-#define U_NP KC_NO // key is not present
-#define U_NA KC_NO // present but not available for use
-#define U_NU KC_NO // available but not used
-
-<<table-enums()>>
-
-#if defined MIRYOKU_CLIPBOARD_FUN
-<<table-keycode-mappings(table=clipboard-fun)>>
-#elif defined MIRYOKU_CLIPBOARD_MAC
-<<table-keycode-mappings(table=clipboard-mac)>>
-#elif defined MIRYOKU_CLIPBOARD_WIN
-<<table-keycode-mappings(table=clipboard-win)>>
-#else
-<<table-keycode-mappings(table=clipboard)>>
-#endif
-
-
-#+END_SRC
-
-
-**** [[./manna-harbour_miryoku.c][users/manna-harbour_miryoku/manna-harbour_miryoku.c]]
-
-Contains the keymap. Added from ~rules.mk~.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle manna-harbour_miryoku.c
-// <<header>>
-
-<<license-qmk>>
-
-#include "manna-harbour_miryoku.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-#if defined MIRYOKU_LAYERS_FLIP
- [BASE] = LAYOUT_miryoku(
- #if defined MIRYOKU_ALPHAS_AZERTY
-<<table-layout-taphold(alphas_table=azerty, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
- #elif defined MIRYOKU_ALPHAS_COLEMAK
-<<table-layout-taphold(alphas_table=colemak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
- #elif defined MIRYOKU_ALPHAS_COLEMAKDHK
-<<table-layout-taphold(alphas_table=colemakdhk, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
- #elif defined MIRYOKU_ALPHAS_DVORAK
-<<table-layout-taphold(alphas_table=dvorak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
- #elif defined MIRYOKU_ALPHAS_HALMAK
-<<table-layout-taphold(alphas_table=halmak, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
- #elif defined MIRYOKU_ALPHAS_WORKMAN
-<<table-layout-taphold(alphas_table=workman, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
- #elif defined MIRYOKU_ALPHAS_QWERTY
-<<table-layout-taphold(alphas_table=qwerty, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
- #elif defined MIRYOKU_ALPHAS_QWERTZ
-<<table-layout-taphold(alphas_table=qwertz, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
- #else
-<<table-layout-taphold(alphas_table=colemakdh, thumbs_table=thumbs-flip, hold_table=hold-flip)>>
- #endif
- ),
- #if defined MIRYOKU_NAV_INVERTEDT
- [NAV] = LAYOUT_miryoku(
-<<table-layout-half(half_table=nav-l-invertedt, mode="l", hold_table=hold-flip)>>
- ),
- [MOUSE] = LAYOUT_miryoku(
-<<table-layout-half(half_table=mouse-l-invertedt, mode="l", hold_table=hold-flip)>>
- ),
- [MEDIA] = LAYOUT_miryoku(
-<<table-layout-half(half_table=media-l-invertedt, mode="l", hold_table=hold-flip)>>
- ),
- #else
- [NAV] = LAYOUT_miryoku(
-<<table-layout-half(half_table=nav-l, mode="l", hold_table=hold-flip)>>
- ),
- [MOUSE] = LAYOUT_miryoku(
-<<table-layout-half(half_table=mouse-l, mode="l", hold_table=hold-flip)>>
- ),
- [MEDIA] = LAYOUT_miryoku(
-<<table-layout-half(half_table=media-l, mode="l", hold_table=hold-flip)>>
- ),
- #endif
- [NUM] = LAYOUT_miryoku(
-<<table-layout-half(half_table=num-r, mode="r", hold_table=hold-flip)>>
- ),
- [SYM] = LAYOUT_miryoku(
-<<table-layout-half(half_table=sym-r, mode="r", hold_table=hold-flip)>>
- ),
- [FUN] = LAYOUT_miryoku(
-<<table-layout-half(half_table=fun-r, mode="r", hold_table=hold-flip)>>
- ),
-#else
- [BASE] = LAYOUT_miryoku(
- #if defined MIRYOKU_ALPHAS_AZERTY
-<<table-layout-taphold(alphas_table=azerty)>>
- #elif defined MIRYOKU_ALPHAS_COLEMAK
-<<table-layout-taphold(alphas_table=colemak)>>
- #elif defined MIRYOKU_ALPHAS_COLEMAKDHK
-<<table-layout-taphold(alphas_table=colemakdhk)>>
- #elif defined MIRYOKU_ALPHAS_DVORAK
-<<table-layout-taphold(alphas_table=dvorak)>>
- #elif defined MIRYOKU_ALPHAS_HALMAK
-<<table-layout-taphold(alphas_table=halmak)>>
- #elif defined MIRYOKU_ALPHAS_WORKMAN
-<<table-layout-taphold(alphas_table=workman)>>
- #elif defined MIRYOKU_ALPHAS_QWERTY
-<<table-layout-taphold(alphas_table=qwerty)>>
- #elif defined MIRYOKU_ALPHAS_QWERTZ
-<<table-layout-taphold(alphas_table=qwertz)>>
- #else
-<<table-layout-taphold(alphas_table=colemakdh)>>
- #endif
- ),
- #if defined MIRYOKU_NAV_VI
- [NAV] = LAYOUT_miryoku(
-<<table-layout-half(half_table=nav-r-vi, mode="r")>>
- ),
- [MOUSE] = LAYOUT_miryoku(
-<<table-layout-half(half_table=mouse-r-vi, mode="r")>>
- ),
- [MEDIA] = LAYOUT_miryoku(
-<<table-layout-half(half_table=media-r-vi, mode="r")>>
- ),
- #else
- [NAV] = LAYOUT_miryoku(
-<<table-layout-half(half_table=nav-r, mode="r")>>
- ),
- [MOUSE] = LAYOUT_miryoku(
-<<table-layout-half(half_table=mouse-r, mode="r")>>
- ),
- [MEDIA] = LAYOUT_miryoku(
-<<table-layout-half(half_table=media-r, mode="r")>>
- ),
- #endif
- [NUM] = LAYOUT_miryoku(
-<<table-layout-half(half_table=num-l, mode="l")>>
- ),
- [SYM] = LAYOUT_miryoku(
-<<table-layout-half(half_table=sym-l, mode="l")>>
- ),
- [FUN] = LAYOUT_miryoku(
-<<table-layout-half(half_table=fun-l, mode="l")>>
- ),
-#endif
- [BUTTON] = LAYOUT_miryoku(
-<<table-layout-full(table=button)>>
- )
-};
-#+END_SRC
-
-
-*** Layouts
-
-To use the keymap on a keyboard supporting the layouts feature, ~LAYOUT_miryoku~
-is defined as a macro mapping onto the layout's own ~LAYOUT~ macro, leaving the
-unused keys as ~KC_NO~.
+To use the keymap on a keyboard supporting the community layouts feature,
+~LAYOUT_miryoku~ is defined as a macro mapping onto the layout's own ~LAYOUT~
+macro, leaving the unused keys as ~KC_NO~.
For keyboards supporting multiple layouts for which subset mappings are
available, select the layout with ~FORCE_LAYOUT~ in the ~make~ command line when
@@ -1166,90 +182,18 @@ make dz60:manna-harbour_miryoku:flash MIRYOKU_MAPPING=LITE # dz60, with lite ma
#+END_SRC
-***** [[../../layouts/community/60_ansi/manna-harbour_miryoku/config.h][layouts/community/60_ansi/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/60_ansi/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#pragma once
-
-#define XXX KC_NO
-
-#if defined MIRYOKU_MAPPING_NOREVERSEANGLE
- #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_60_ansi(\
-K00, K01, K02, K03, K04, XXX, XXX, XXX, K05, K06, K07, K08, K09, XXX,\
- K10, K11, K12, K13, K14, XXX, XXX, XXX, K15, K16, K17, K18, K19, XXX,\
- K20, K21, K22, K23, K24, XXX, XXX, XXX, K25, K26, K27, K28, K29,\
- XXX, K32, K33, K34, XXX, XXX, XXX, XXX, K35, K36, K37, XXX,\
- XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX\
-)
-#elif defined MIRYOKU_MAPPING_LITE
- #if defined MIRYOKU_LAYERS_FLIP
- #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_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, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_LBRC, KC_RBRC, KC_BSLS, \
-KC_CAPS, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_SCLN, KC_ENT, \
-KC_LSFT, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_RSFT, \
-KC_LCTL, KC_LGUI, KC_LALT, K36, KC_RALT, KC_RGUI, KC_APP, KC_RCTL \
-)
- #else
- #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_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, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_LBRC, KC_RBRC, KC_BSLS, \
-KC_CAPS, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_SCLN, KC_ENT, \
-KC_LSFT, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_RSFT, \
-KC_LCTL, KC_LGUI, KC_LALT, K33, KC_RALT, KC_RGUI, KC_APP, KC_RCTL \
-)
- #endif
-#else
- #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_60_ansi(\
-XXX, XXX, K00, K01, K02, K03, K04, XXX, K05, K06, K07, K08, K09, XXX,\
- XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX,\
- K20, K21, K22, K23, K24, XXX, XXX, XXX, K25, K26, K27, K28, K29,\
- XXX, XXX, K32, K33, K34, XXX, XXX, XXX, K35, K36, K37, XXX,\
- XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX\
-)
-#endif
-#+END_SRC
+**** alice
+This is a hybrid mapping. Only the 3x10 alphas plus spacebars as primary thumb keys are mapped. The remaining keys are the same as the default keymap but with semicolon in place of quote. The keys adjacent to the spacebars are also mapped as corresponding thumb keys but may not be usable as such.
-***** [[../../layouts/community/60_ansi/manna-harbour_miryoku/keymap.c][layouts/community/60_ansi/manna-harbour_miryoku/keymap.c]]
+Keyboards supporting this layout: cheshire/curiosity, handwired/owlet60, mechlovin/adelais, projectkb/alice, sck/osa, axolstudio/yeti, coarse/cordillera, edda, evyd13/wonderland, fallacy, kb_elmo/sesame, keebsforall/coarse60, ramonimbao/aelith, sneakbox/aliceclone, tkc/osav2, zoo/wampus.
-Required by the build system.
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/60_ansi/manna-harbour_miryoku/keymap.c
-// <<header>>
+**** alice_split_bs
-<<license-qmk>>
-#+END_SRC
+This is a hybrid mapping. Only the 3x10 alphas plus spacebars as primary thumb keys are mapped. The remaining keys are the same as the default keymap but with semicolon in place of quote. The keys adjacent to the spacebars are also mapped as corresponding thumb keys but may not be usable as such.
+
+Keyboards supporting this layout: cheshire/curiosity, ergosaurus, handwired/colorlice, handwired/owlet60, mechlovin/adelais, projectkb/alice, sck/osa, tgr/alice, xelus/valor/rev1, xelus/valor/rev2, axolstudio/yeti, coarse/cordillera, edda, evyd13/wonderland, fallacy, kb_elmo/sesame, keebsforall/coarse60, nightly_boards/alter/rev1, ramonimbao/aelith, seigaiha, sneakbox/aliceclone, tkc/osav2, zoo/wampus.
**** ergodox
@@ -1261,56 +205,29 @@ are unused.
[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ergodox.png]]
-Keyboards supporting this layout: ergodone, ergodox_ez, ergodox_infinity, hotdox.
-
-Example build command lines:
+An alternative subset mapping is provided with all keys shifted up one row creating thumb keys in the original alpha area. To select this mapping, append ~MIRYOKU_MAPPING=SHIFTED_ROWS~ to the ~make~ command line when building.
-#+BEGIN_SRC sh :tangle no
-make ergodox_infinity:manna-harbour_miryoku:flash # ergodox_infinity
-make ergodox_ez:manna-harbour_miryoku:flash # ergodox_ez
-#+END_SRC
+[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ergodox-shifted_rows.png]]
+Another alternative subset mapping is provided as for ~MIRYOKU_MAPPING=SHIFTED_ROWS~ but with the thumb keys shifted one position in the direction of thumb extension. To select this mapping, append ~MIRYOKU_MAPPING=SHIFTED_ROWS_EXTENDED_THUMBS~ to the ~make~ command line when building.
-***** [[../../layouts/community/ergodox/manna-harbour_miryoku/config.h][layouts/community/ergodox/manna-harbour_miryoku/config.h]]
+[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ergodox-shifted_rows-extended_thumbs.png]]
-Contains subset mapping.
+Another alternative subset mapping is provided as for ~MIRYOKU_MAPPING=SHIFTED_ROWS_EXTENDED_THUMBS~ but with the pinkie column moved down one row. To select this mapping, append ~MIRYOKU_MAPPING=SHIFTED_ROWS_EXTENDED_THUMBS_PINKIE_STAGGER~ to the ~make~ command line when building.
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ergodox/manna-harbour_miryoku/config.h
-// <<header>>
+[[https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/mapping/miryoku-kle-mapping-ergodox-shifted_rows-extended_thumbs-pinkie_stagger.png]]
-<<license-qmk>>
-
-#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_ergodox_pretty(\
-XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\
-XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX,\
-XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX,\
-XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX,\
-XXX, XXX, XXX, XXX, K32, K37, XXX, XXX, XXX, XXX,\
- XXX, XXX, XXX, XXX,\
- XXX, XXX,\
- K33, K34, XXX, XXX, K35, K36\
-)
-#+END_SRC
-
-
-***** [[../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c][layouts/community/ergodox/manna-harbour_miryoku/keymap.c]]
+Keyboards supporting this layout: ergodone, ergodox_ez, ergodox_infinity, hotdox.
-Required by the build system.
+Example build command lines:
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ergodox/manna-harbour_miryoku/keymap.c
-// <<header>>
+#+BEGIN_SRC sh :tangle no
+make ergodox_infinity:manna-harbour_miryoku:flash # ergodox_infinity
+make ergodox_ez:manna-harbour_miryoku:flash # ergodox_ez
+make ergodox_ez:manna-harbour_miryoku:flash MIRYOKU_MAPPING=SHIFTED_ROWS # ergodox_ez, shifted rows
+make ergodox_ez:manna-harbour_miryoku:flash MIRYOKU_MAPPING=SHIFTED_ROWS_EXTENDED_THUMBS # ergodox_ez, shifted rows, extended thumbs
+make ergodox_ez:manna-harbour_miryoku:flash MIRYOKU_MAPPING=SHIFTED_ROWS_EXTENDED_THUMBS_PINKIE_STAGGER # ergodox_ez, shifted rows, extended thumbs, pinkie stagger
-<<license-qmk>>
#+END_SRC
@@ -1328,60 +245,6 @@ make pabile/p40:manna-harbour_miryoku:flash MIRYOKU_MAPPING=ROTATE # pabile/p40,
#+END_SRC
-***** [[../../layouts/community/ortho_4x10/manna-harbour_miryoku/config.h][layouts/community/ortho_4x10/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_4x10/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#pragma once
-
-#define XXX KC_NO
-
-#if defined MIRYOKU_MAPPING_ROTATE
-#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_ortho_4x10( \
-XXX, XXX, K37, K36, K35, K34, K33, K32, XXX, XXX, \
-K29, K28, K27, K26, K25, K24, K23, K22, K21, K20, \
-K19, K18, K17, K16, K15, K14, K13, K12, K11, K10, \
-K09, K08, K07, K06, K05, K04, K03, K02, K01, K00 \
-)
-#else
-#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_ortho_4x10( \
-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, \
-XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \
-)
-#endif
-#+END_SRC
-
-
-***** [[../../layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c][layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_4x10/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
-
**** ortho_4x12
For the ortho_4x12 layout, the middle two columns, and the 2 keys on each end of
@@ -1419,71 +282,6 @@ make keebio/levinson:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS
#+END_SRC
-***** [[../../layouts/community/ortho_4x12/manna-harbour_miryoku/config.h][layouts/community/ortho_4x12/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_4x12/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#pragma once
-
-#if defined MIRYOKU_MAPPING_SPLIT
-#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_ortho_4x12(\
-KC_NO, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, KC_NO,\
-K00, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K09,\
-K10, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K19,\
-K20, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, K29\
-)
-#elif defined MIRYOKU_MAPPING_EXTENDED_THUMBS
-#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_ortho_4x12(\
-K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\
-K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\
-K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\
-KC_NO, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, KC_NO\
-)
-#else
-#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_ortho_4x12(\
-K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\
-K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\
-K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\
-KC_NO, KC_NO, K32, K33, K34, KC_NO, KC_NO, K35, K36, K37, KC_NO, KC_NO\
-)
-#endif
-#+END_SRC
-
-
-***** [[../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c][layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_4x12/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
-
**** ortho_5x12
As per ortho_4x12 but the top row is unused.
@@ -1501,74 +299,6 @@ make keebio/nyquist/rev3:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_TH
#+END_SRC
-***** [[../../layouts/community/ortho_5x12/manna-harbour_miryoku/config.h][layouts/community/ortho_5x12/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_5x12/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#pragma once
-
-#if defined MIRYOKU_MAPPING_SPLIT
-#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_ortho_5x12(\
-KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
-KC_NO, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, KC_NO,\
-K00, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K09,\
-K10, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K19,\
-K20, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, K29\
-)
-#elif defined MIRYOKU_MAPPING_EXTENDED_THUMBS
-#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_ortho_5x12(\
-KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
-K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\
-K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\
-K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\
-KC_NO, KC_NO, KC_NO, K32, K33, K34, K35, K36, K37, KC_NO, KC_NO, KC_NO\
-)
-#else
-#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_ortho_5x12(\
-KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,\
-K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\
-K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\
-K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\
-KC_NO, KC_NO, K32, K33, K34, KC_NO, KC_NO, K35, K36, K37, KC_NO, KC_NO\
-)
-#endif
-#+END_SRC
-
-
-***** [[../../layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c][layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_5x12/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
-
**** ortho_5x15
For the ortho_5x15 layout, the top row, middle 5 columns, and the 2 keys on each
@@ -1595,64 +325,6 @@ make idobo:manna-harbour_miryoku:flash # idobo
#+END_SRC
-***** [[../../layouts/community/ortho_5x15/manna-harbour_miryoku/config.h][layouts/community/ortho_5x15/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_5x15/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#pragma once
-
-#define XXX KC_NO
-
-#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS
-#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_ortho_5x15(\
-XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\
-K00, K01, K02, K03, K04, XXX, XXX, XXX, XXX, XXX, K05, K06, K07, K08, K09,\
-K10, K11, K12, K13, K14, XXX, XXX, XXX, XXX, XXX, K15, K16, K17, K18, K19,\
-K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29,\
-XXX, XXX, XXX, K32, K33, K34, XXX, XXX, XXX, K35, K36, K37, XXX, XXX, XXX\
-)
-#else
-#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_ortho_5x15(\
-XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\
-K00, K01, K02, K03, K04, XXX, XXX, XXX, XXX, XXX, K05, K06, K07, K08, K09,\
-K10, K11, K12, K13, K14, XXX, XXX, XXX, XXX, XXX, K15, K16, K17, K18, K19,\
-K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29,\
-XXX, XXX, K32, K33, K34, XXX, XXX, XXX, XXX, XXX, K35, K36, K37, XXX, XXX\
-)
-#endif
-#+END_SRC
-
-#+RESULTS:
-
-
-***** [[../../layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c][layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/ortho_5x15/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
-
**** planck_mit
The middle two columns including the middle 2u key, and the 2 keys on each end
@@ -1668,42 +340,6 @@ make planck/rev6:manna-harbour_miryoku:flash FORCE_LAYOUT=planck_mit # planck re
#+END_SRC
-***** [[../../layouts/community/planck_mit/manna-harbour_miryoku/config.h][layouts/community/planck_mit/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/planck_mit/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#pragma once
-
-#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_planck_mit(\
-K00, K01, K02, K03, K04, KC_NO, KC_NO, K05, K06, K07, K08, K09,\
-K10, K11, K12, K13, K14, KC_NO, KC_NO, K15, K16, K17, K18, K19,\
-K20, K21, K22, K23, K24, KC_NO, KC_NO, K25, K26, K27, K28, K29,\
-KC_NO, KC_NO, K32, K33, K34, KC_NO, K35, K36, K37, KC_NO, KC_NO\
-)
-#+END_SRC
-
-
-***** [[../../layouts/community/planck_mit/manna-harbour_miryoku/keymap.c][layouts/community/planck_mit/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/planck_mit/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
**** split_3x5_3
@@ -1717,43 +353,6 @@ make minidox:manna-harbour_miryoku:flash # minidox
#+END_SRC
-***** [[../../layouts/community/split_3x5_3/manna-harbour_miryoku/config.h][layouts/community/split_3x5_3/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/split_3x5_3/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#pragma once
-
-#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_split_3x5_3(\
-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,\
- K32, K33, K34, K35, K36, K37\
-)
-#+END_SRC
-
-
-***** [[../../layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c][layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/split_3x5_3/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
-
**** split_3x6_3
The outer columns are unused.
@@ -1768,50 +367,25 @@ make crkbd:manna-harbour_miryoku:flash # crkbd
#+END_SRC
-***** [[../../layouts/community/split_3x6_3/manna-harbour_miryoku/config.h][layouts/community/split_3x6_3/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/split_3x6_3/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-#pragma once
+*** Keyboards
-#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_split_3x6_3(\
-KC_NO, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_NO,\
-KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO,\
-KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO,\
- K32, K33, K34, K35, K36, K37\
-)
-#+END_SRC
+To use the keymap on a keyboard which does not support the layouts feature,
+~LAYOUT_miryoku~ is defined as a macro mapping onto the keyboard's own ~LAYOUT~
+macro, leaving the unused keys as ~KC_NO~.
-***** [[../../layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c][layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c]]
+**** a_dux
-Required by the build system.
+[[#thumb-combos][Thumb combos]] are enabled automatically for this keyboard.
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../layouts/community/split_3x6_3/manna-harbour_miryoku/keymap.c
-// <<header>>
+To build for this keyboard,
-<<license-qmk>>
+#+BEGIN_SRC sh :tangle no
+make a_dux:manna-harbour_miryoku:flash
#+END_SRC
-*** Keyboards
-
-To use the keymap on a keyboard which does not support the layouts feature,
-~LAYOUT_miryoku~ is defined as a macro mapping onto the keyboard's own ~LAYOUT~
-macro, leaving the unused keys as ~KC_NO~.
-
-
**** atreus
Only the main 5x3 alphas and the inner 3 thumb keys are used.
@@ -1823,42 +397,25 @@ make atreus:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/atreus/keymaps/manna-harbour_miryoku/config.h][keyboards/atreus/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/atreus/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
+**** bastardkb/charybdis/3x5
-#pragma once
+[[#thumb-combos][Thumb combos]] are enabled automatically for this keyboard.
-#define XXX KC_NO
+To build for this keyboard,
-#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(\
-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,\
-XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX\
-)
+#+BEGIN_SRC sh :tangle no
+make bastardkb/charybdis/3x5:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c][keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c]]
+**** bastardkb/charybdis/4x6
-Required by the build system.
+On the trackball side the bottom row thumb key is used as the tertiary thumb key. Additionally, [[#thumb-combos][thumb combos]] are enabled automatically for this keyboard.
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/atreus/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
+To build for this keyboard,
-<<license-qmk>>
+#+BEGIN_SRC sh :tangle no
+make bastardkb/charybdis/4x6:manna-harbour_miryoku:flash
#+END_SRC
@@ -1871,44 +428,12 @@ make bastardkb/scylla:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h][keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#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_split_4x6_5( \
-XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \
-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, \
- K32, K33, K34, K35, K36, K37, \
- XXX, XXX, XXX, XXX \
-)
-#+END_SRC
-
-
-***** [[../../keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c][keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
+**** draculad
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/bastardkb/scylla/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
+To build for this keyboard,
-<<license-qmk>>
+#+BEGIN_SRC sh :tangle no
+make draculad:manna-harbour_miryoku:flash
#+END_SRC
@@ -1921,42 +446,15 @@ make ergotravel:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h][keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/ergotravel/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
+**** ferris
-<<license-qmk>>
+[[#thumb-combos][Thumb combos]] are enabled automatically for this keyboard.
-#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, XXX, XXX, K05, K06, K07, K08, K09, XXX, \
-XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX, \
-XXX, K20, K21, K22, K23, K24, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
-XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX \
-)
-#+END_SRC
-
-
-***** [[../../keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c][keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/ergotravel/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
+To build for this keyboard,
-<<license-qmk>>
+#+BEGIN_SRC sh :tangle no
+make ferris/0_2:manna-harbour_miryoku:flash # 0_2
+make ferris/sweep:manna-harbour_miryoku:flash # sweep
#+END_SRC
@@ -1971,43 +469,12 @@ make for_science:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/for_science/keymaps/manna-harbour_miryoku/config.h][keyboards/for_science/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/for_science/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#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, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\
-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,\
- K32, K33, K34, K35, K36, K37\
-)
-#+END_SRC
-
+**** fortitude60
-***** [[../../keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c][keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/for_science/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
+To build for this keyboard,
-<<license-qmk>>
+#+BEGIN_SRC sh :tangle no
+make fortitude60:manna-harbour_miryoku:flash
#+END_SRC
@@ -2022,45 +489,6 @@ make gergo:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/gergo/keymaps/manna-harbour_miryoku/config.h][keyboards/gergo/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/gergo/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#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_gergo(\
-XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX,\
-XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX,\
-XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX,\
- K32, K33, K34, XXX, XXX, K35, K36, K37\
-)
-#+END_SRC
-
-
-***** [[../../keyboards/gergo/keymaps/manna-harbour_miryoku/keymap.c][keyboards/gergo/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/gergo/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
-
**** handwired/dactyl_manuform/4x5
Only the main 5x3 alphas and the main 3 thumb keys are used.
@@ -2072,48 +500,6 @@ make handwired/dactyl_manuform/4x5:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h][keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#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( \
-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,\
- XXX, XXX, XXX, XXX, \
- K32, K33, K36, K37, \
- K34, XXX, XXX, K35, \
- XXX, XXX, XXX, XXX \
-)
-#+END_SRC
-
-
-***** [[../../keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c][keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/handwired/dactyl_manuform/4x5/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
-
**** handwired/dactyl_manuform/5x6
Only the main 5x3 alphas and the main 3 thumb keys are used.
@@ -2125,46 +511,12 @@ make handwired/dactyl_manuform/5x6:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h][keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h]]
+**** jorne
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#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_5x6( \
-XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \
-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, K36, K37, \
- K34, XXX, XXX, K35, \
- XXX, XXX, XXX, XXX \
-)
-#+END_SRC
-
-
-***** [[../../keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c][keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/handwired/dactyl_manuform/5x6/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
+To build for this keyboard,
-<<license-qmk>>
+#+BEGIN_SRC sh :tangle no
+make jorne:manna-harbour_miryoku:flash
#+END_SRC
@@ -2179,46 +531,6 @@ make keebio/iris/rev4:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h][keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/keebio/iris/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#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, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\
-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, XXX, XXX, K25, K26, K27, K28, K29, XXX,\
- K32, K33, K34, K35, K36, K37\
-)
-#+END_SRC
-
-
-***** [[../../keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c][keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/keebio/iris/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
-
**** keyboardio/atreus
Only the main 5x3 alphas and the inner 3 thumb keys are used.
@@ -2230,45 +542,6 @@ make keyboardio/atreus:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h][keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#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( \
-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, XXX, XXX, K25, K26, K27, K28, K29, \
-XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX \
-)
-#+END_SRC
-
-
-***** [[../../keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c][keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/keyboardio/atreus/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
-
**** lily58
Only the main 5x3 alphas and the inner 3 thumb keys are used.
@@ -2280,46 +553,6 @@ make lily58:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/lily58/keymaps/manna-harbour_miryoku/config.h][keyboards/lily58/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/lily58/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#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, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\
-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, XXX, XXX, K25, K26, K27, K28, K29, XXX,\
- XXX, K32, K33, K34, K35, K36, K37, XXX\
-)
-#+END_SRC
-
-
-***** [[../../keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c][keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/lily58/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
-
**** moonlander
The main 5x3 alphas are used as usual. The primary, secondary, and tertiary
@@ -2333,44 +566,14 @@ make moonlander:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h][keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/moonlander/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#pragma once
+**** pluckey
-#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_moonlander(\
-XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\
-XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX,\
-XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX,\
-XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX,\
-XXX, XXX, XXX, XXX, K32, XXX, XXX, K37, XXX, XXX, XXX, XXX,\
- K33, K34, XXX, XXX, K35, K36\
-)
-#+END_SRC
-
-
-***** [[../../keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c][keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
+Only the main 5x3 alphas and the main 3 thumb keys are used.
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/moonlander/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
+To build for this keyboard,
-<<license-qmk>>
+#+BEGIN_SRC sh :tangle no
+make pluckey:manna-harbour_miryoku:flash
#+END_SRC
@@ -2385,48 +588,6 @@ make redox_w:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h][keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/redox_w/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#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, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\
-XXX, K00, K01, K02, K03, K04, XXX, XXX, K05, K06, K07, K08, K09, XXX,\
-XXX, K10, K11, K12, K13, K14, XXX, XXX, K15, K16, K17, K18, K19, XXX,\
-XXX, K20, K21, K22, K23, K24, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX,\
-XXX, XXX, XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX, XXX\
-)
-#+END_SRC
-
-#+RESULTS:
-
-
-***** [[../../keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c][keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/redox_w/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
-
**** sofle
To build for this keyboard,
@@ -2436,46 +597,6 @@ make sofle:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/sofle/keymaps/manna-harbour_miryoku/config.h][keyboards/sofle/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/sofle/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#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, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX,\
-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, XXX, XXX, K25, K26, K27, K28, K29, XXX,\
- XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX\
-)
-#+END_SRC
-
-
-***** [[../../keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c][keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/sofle/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
-
**** splitkb/kyria
Only the main 5x3 alphas and the middle 3 lower thumb keys are used.
@@ -2497,60 +618,6 @@ make splitkb/kyria:manna-harbour_miryoku:flash MIRYOKU_MAPPING=EXTENDED_THUMBS #
#+END_SRC
-***** [[../../keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h][keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#pragma once
-
-#define XXX KC_NO
-
-#if defined MIRYOKU_MAPPING_EXTENDED_THUMBS
-#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, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
- XXX, XXX, K32, K33, K34, K35, K36, K37, XXX, XXX \
-)
-#else
-#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, XXX, XXX, XXX, XXX, K25, K26, K27, K28, K29, XXX, \
- XXX, K32, K33, K34, XXX, XXX, K35, K36, K37, XXX \
-)
-#endif
-#+END_SRC
-
-
-***** [[../../keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c][keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/splitkb/kyria/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
-
**** torn
To build for this keyboard,
@@ -2560,73 +627,14 @@ make torn:manna-harbour_miryoku:flash
#+END_SRC
-***** [[../../keyboards/torn/keymaps/manna-harbour_miryoku/config.h][keyboards/torn/keymaps/manna-harbour_miryoku/config.h]]
-
-Contains subset mapping.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/torn/keymaps/manna-harbour_miryoku/config.h
-// <<header>>
-
-<<license-qmk>>
-
-#pragma once
-
-#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_split_3x6_4( \
-KC_NO, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, KC_NO, \
-KC_NO, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KC_NO, \
-KC_NO, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, KC_NO, \
- KC_NO, K32, K33, K34, K35, K36, K37, KC_NO \
-)
-#+END_SRC
-
-#+RESULTS:
-
-
-***** [[../../keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c][keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c]]
-
-Required by the build system.
-
-#+BEGIN_SRC C :main no :noweb yes :padline no :tangle ../../keyboards/torn/keymaps/manna-harbour_miryoku/keymap.c
-// <<header>>
-
-<<license-qmk>>
-#+END_SRC
-
-
-*** Customisation
-
-To add customisations to a keyboard or layout while importing the miryoku
-keymap, copy ~config.h~ and ~keymap.c~ from the keyboard or layout's
-~manna-harbour_miryoku/~ directory to a new directory, and create ~rules.mk~
-containing ~USER_NAME := manna-harbour_miryoku~. The miryoku keymap will be
-imported and customisations can be added to those files as usual. Keycodes can
-be added to unused keys by editing ~LAYOUT_miryoku~ in ~config.h~.
-
-For an unsupported keyboard or layout, do as above with a similar keyboard or
-layout and modify ~LAYOUT_miryoku~ in ~config.h~ referring to the keyboard or
-layout's ~LAYOUT~ macro.
-
-
-**** Examples
-
-To use any of the examples, create a new branch from the miryoku development
-branch and follow the same steps as seen in the commit messages and code changes
-in the examples, making the appropriate changes for your keyboard and desired
-customisations.
-
+** Additional and Experimental Features
-***** Add Layers
-- https://github.com/manna-harbour/qmk_firmware/commits/miryoku-examples-add-layers/keyboards/crkbd/keymaps/miryoku-examples-add-layers
+*** Thumb Combos
+~MIRYOKU_KLUDGE_THUMBCOMBOS=yes~
-** Experimental Features
+Combo the primary and secondary thumb keys to emulate the tertiary thumb key. Can be used on keyboards with missing or hard to reach tertiary thumb keys or for compatibility with same. Requires suitable keycaps to enable the thumb to press both keys simultaneously.
*** Bilateral Combinations
@@ -2639,33 +647,6 @@ customisations.
- [[https://github.com/manna-harbour/qmk_firmware/issues/33][Retro Shift]]
-** Documentation
-
-
-*** QMK
-
-- https://docs.qmk.fm/
-- https://docs.qmk.fm/#/config_options
-- https://docs.qmk.fm/#/feature_advanced_keycodes
-- https://docs.qmk.fm/#/feature_auto_shift
-- https://docs.qmk.fm/#/feature_layers
-- https://docs.qmk.fm/#/feature_layouts
-- https://docs.qmk.fm/#/feature_mouse_keys
-- https://docs.qmk.fm/#/feature_userspace
-- https://docs.qmk.fm/#/getting_started_introduction
-- https://docs.qmk.fm/#/getting_started_make_guide
-- https://docs.qmk.fm/#/keycodes
-- https://docs.qmk.fm/#/mod_tap
-- https://docs.qmk.fm/#/tap_hold
-
-
-*** Org Mode
-
-- https://orgmode.org/
-- https://orgmode.org/manual/Tables.html
-- https://orgmode.org/manual/Working-with-Source-Code.html
-
-
**
[[https://github.com/manna-harbour][https://raw.githubusercontent.com/manna-harbour/miryoku/master/data/logos/manna-harbour-boa-32.png]]
diff --git a/users/manna-harbour_miryoku/rules.mk b/users/manna-harbour_miryoku/rules.mk
index 085f0b5019..ea226c4a3d 100644
--- a/users/manna-harbour_miryoku/rules.mk
+++ b/users/manna-harbour_miryoku/rules.mk
@@ -1,36 +1,12 @@
# Copyright 2019 Manna Harbour
# https://github.com/manna-harbour/miryoku
-# generated -*- buffer-read-only: t -*-
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
AUTO_SHIFT_ENABLE = yes # Auto Shift
-SRC += manna-harbour_miryoku.c # keymap
+INTROSPECTION_KEYMAP_C = manna-harbour_miryoku.c # keymaps
-# alternative layouts:
+include users/manna-harbour_miryoku/custom_rules.mk
-# alphas
-ifneq ($(strip $(MIRYOKU_ALPHAS)),)
- OPT_DEFS += -DMIRYOKU_ALPHAS_$(MIRYOKU_ALPHAS)
-endif
-
-# nav
-ifneq ($(strip $(MIRYOKU_NAV)),)
- OPT_DEFS += -DMIRYOKU_NAV_$(MIRYOKU_NAV)
-endif
-
-# clipboard
-ifneq ($(strip $(MIRYOKU_CLIPBOARD)),)
- OPT_DEFS += -DMIRYOKU_CLIPBOARD_$(MIRYOKU_CLIPBOARD)
-endif
-
-# layers
-ifneq ($(strip $(MIRYOKU_LAYERS)),)
- OPT_DEFS += -DMIRYOKU_LAYERS_$(MIRYOKU_LAYERS)
-endif
-
-# subset mappings
-ifneq ($(strip $(MIRYOKU_MAPPING)),)
- OPT_DEFS += -DMIRYOKU_MAPPING_$(MIRYOKU_MAPPING)
-endif
+include users/manna-harbour_miryoku/post_rules.mk
diff --git a/users/miles2go/config.h b/users/miles2go/config.h
index a704df4b55..2a1d6504d6 100644
--- a/users/miles2go/config.h
+++ b/users/miles2go/config.h
@@ -6,10 +6,6 @@
#define RGBLIGHT_EFFECT_BREATHING
#endif // RGBLIGHT_ENABLE
-#ifndef QMK_KEYS_PER_SCAN
-#define QMK_KEYS_PER_SCAN 4
-#endif // !QMK_KEYS_PER_SCAN
-
#undef FORCE_NKRO
#ifndef TAPPING_TOGGLE
diff --git a/users/mnil/config.h b/users/mnil/config.h
index 3547785ff7..b471b9a818 100644
--- a/users/mnil/config.h
+++ b/users/mnil/config.h
@@ -19,3 +19,4 @@
#define MK_3_SPEED
#define MK_MOMENTARY_ACCEL
#define PERMISSIVE_HOLD
+#define TAPPING_TERM 250
diff --git a/users/mnil/mnil.c b/users/mnil/mnil.c
index d5bd0ef0bb..00da6086ef 100644
--- a/users/mnil/mnil.c
+++ b/users/mnil/mnil.c
@@ -140,7 +140,7 @@ void aa_reset(qk_tap_dance_state_t *state, void *user_data) {
// clang-format off
qk_tap_dance_action_t tap_dance_actions[] = {
- [AAE] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ae_finished, ae_reset, 250),
- [OAA] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, aa_finished, aa_reset, 250)
+ [AAE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ae_finished, ae_reset),
+ [OAA] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, aa_finished, aa_reset)
};
// clang-format on
diff --git a/users/mtdjr/mtdjr.c b/users/mtdjr/mtdjr.c
index 9c6c26bc86..cd67bf3b5f 100644
--- a/users/mtdjr/mtdjr.c
+++ b/users/mtdjr/mtdjr.c
@@ -137,7 +137,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
};
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _RAISE:
#ifdef RGBLIGHT_ENABLE
rgblight_sethsv_noeeprom (240, 255, 255);
diff --git a/users/muppetjones/.clang-format b/users/muppetjones/.clang-format
new file mode 100644
index 0000000000..df3dbd17b4
--- /dev/null
+++ b/users/muppetjones/.clang-format
@@ -0,0 +1,26 @@
+---
+BasedOnStyle: Google
+AlignAfterOpenBracket: Align
+AlignConsecutiveAssignments: 'true'
+AlignConsecutiveDeclarations: 'true'
+AlignOperands: 'true'
+AllowAllParametersOfDeclarationOnNextLine: 'false'
+AlwaysBreakAfterDefinitionReturnType: None
+AlwaysBreakAfterReturnType: None
+AlwaysBreakBeforeMultilineStrings: 'false'
+BinPackArguments: 'true'
+BinPackParameters: 'true'
+ColumnLimit: '160'
+IndentCaseLabels: 'true'
+IndentPPDirectives: AfterHash
+IndentWidth: '4'
+MaxEmptyLinesToKeep: '1'
+PointerAlignment: Right
+SortIncludes: 'false'
+SpaceBeforeAssignmentOperators: 'true'
+SpaceBeforeParens: ControlStatements
+SpaceInEmptyParentheses: 'false'
+TabWidth: '4'
+UseTab: Never
+
+...
diff --git a/users/muppetjones/config.h b/users/muppetjones/config.h
new file mode 100644
index 0000000000..e8afa9d8c5
--- /dev/null
+++ b/users/muppetjones/config.h
@@ -0,0 +1,44 @@
+/* Copyright 2020 Stephen J. Bush @muppetjones
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 RGBLIGHT_ENABLE
+// # define RGBLIGHT_ANIMATIONS
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 16
+# define RGBLIGHT_VAL_STEP 16
+# define RGBLIGHT_LIMIT_VAL 150
+# define RGBLIGHT_SLEEP
+// # define RGBLIGHT_LAYERS
+#endif
+
+#ifdef TAP_DANCE_ENABLE
+// Change "hold" time (default is 200 ms)
+// -- used for tap dance and other tap mods
+# define TAPPING_TERM 175
+
+// 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
+
+#endif
+
+
+#define COMBO_COUNT 3
+#define COMBO_TERM 40
diff --git a/users/muppetjones/features/casemodes.c b/users/muppetjones/features/casemodes.c
new file mode 100644
index 0000000000..da7c5e8fa9
--- /dev/null
+++ b/users/muppetjones/features/casemodes.c
@@ -0,0 +1,247 @@
+/* Copyright 2021 Andrew Rae ajrae.nv@gmail.com @andrewjrae
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "casemodes.h"
+
+/* The caps word concept started with me @iaap on splitkb.com discord.
+ * However it has been implemented and extended by many splitkb.com users:
+ * - @theol0403 made many improvements to initial implementation
+ * - @precondition used caps lock rather than shifting
+ * - @dnaq his own implementation which also used caps lock
+ * - @sevanteri added underscores on spaces
+ * - @metheon extended on @sevanteri's work and added specific modes for
+ * snake_case and SCREAMING_SNAKE_CASE
+ * - @baffalop came up with the idea for xcase, which he implements in his own
+ * repo, however this is implemented by @iaap with support also for one-shot-shift.
+ * - @sevanteri
+ * - fixed xcase waiting mode to allow more modified keys and keys from other layers.
+ * - Added @baffalop's separator defaulting on first keypress, with a
+ * configurable default separator and overrideable function to determine
+ * if the default should be used.
+ */
+
+#ifndef DEFAULT_XCASE_SEPARATOR
+# define DEFAULT_XCASE_SEPARATOR KC_UNDS
+#endif
+
+#define IS_OSM(keycode) (keycode >= QK_ONE_SHOT_MOD && keycode <= QK_ONE_SHOT_MOD_MAX)
+
+// bool to keep track of the caps word state
+static bool caps_word_on = false;
+
+// enum to keep track of the xcase state
+static enum xcase_state xcase_state = XCASE_OFF;
+// the keycode of the xcase delimiter
+static uint16_t xcase_delimiter;
+// the number of keys to the last delimiter
+static int8_t distance_to_last_delim = -1;
+
+// Check whether caps word is on
+bool caps_word_enabled(void) { return caps_word_on; }
+
+// Enable caps word
+void enable_caps_word(void) {
+ caps_word_on = true;
+#ifndef CAPSWORD_USE_SHIFT
+ if (!host_keyboard_led_state().caps_lock) {
+ tap_code(KC_CAPS);
+ }
+#endif
+}
+
+// Disable caps word
+void disable_caps_word(void) {
+ caps_word_on = false;
+#ifndef CAPSWORD_USE_SHIFT
+ if (host_keyboard_led_state().caps_lock) {
+ tap_code(KC_CAPS);
+ }
+#else
+ unregister_mods(MOD_LSFT);
+#endif
+}
+
+// Toggle caps word
+void toggle_caps_word(void) {
+ if (caps_word_on) {
+ disable_caps_word();
+ } else {
+ enable_caps_word();
+ }
+}
+
+// Get xcase state
+enum xcase_state get_xcase_state(void) { return xcase_state; }
+
+// Enable xcase and pickup the next keystroke as the delimiter
+void enable_xcase(void) { xcase_state = XCASE_WAIT; }
+
+// Enable xcase with the specified delimiter
+void enable_xcase_with(uint16_t delimiter) {
+ xcase_state = XCASE_ON;
+ xcase_delimiter = delimiter;
+ distance_to_last_delim = -1;
+}
+
+// Disable xcase
+void disable_xcase(void) { xcase_state = XCASE_OFF; }
+
+// Place the current xcase delimiter
+static void place_delimiter(void) {
+ if (IS_OSM(xcase_delimiter)) {
+ // apparently set_oneshot_mods() is dumb and doesn't deal with handedness for you
+ uint8_t mods = xcase_delimiter & 0x10 ? (xcase_delimiter & 0x0F) << 4 : xcase_delimiter & 0xFF;
+ set_oneshot_mods(mods);
+ } else {
+ tap_code16(xcase_delimiter);
+ }
+}
+
+// Removes a delimiter, used for double tap space exit
+static void remove_delimiter(void) {
+ if (IS_OSM(xcase_delimiter)) {
+ clear_oneshot_mods();
+ } else {
+ tap_code(KC_BSPC);
+ }
+}
+
+// overrideable function to determine whether the case mode should stop
+__attribute__((weak)) bool terminate_case_modes(uint16_t keycode, const keyrecord_t *record) {
+ switch (keycode) {
+ // Keycodes to ignore (don't disable caps word)
+ case KC_A ... KC_Z:
+ case KC_1 ... KC_0:
+ case KC_MINS:
+ case KC_BSPC:
+ // If mod chording disable the mods
+ if (record->event.pressed && (get_mods() != 0)) {
+ return true;
+ }
+ break;
+ case KC_UNDS:
+ // Allow to be pressed with or without a modifier (prob w/ shift)
+ break;
+ default:
+ if (record->event.pressed) {
+ return true;
+ }
+ break;
+ }
+ return false;
+}
+
+/* overrideable function to determine whether to use the default separator on
+ * first keypress when waiting for the separator. */
+__attribute__((weak)) bool use_default_xcase_separator(uint16_t keycode, const keyrecord_t *record) {
+ // for example:
+ /* switch (keycode) { */
+ /* case KC_A ... KC_Z: */
+ /* case KC_1 ... KC_0: */
+ /* return true; */
+ /* } */
+ return false;
+}
+
+bool process_case_modes(uint16_t keycode, const keyrecord_t *record) {
+ if (caps_word_on || xcase_state) {
+ if ((QK_MOD_TAP <= keycode && keycode <= QK_MOD_TAP_MAX) || (QK_LAYER_TAP <= keycode && keycode <= QK_LAYER_TAP_MAX)) {
+ // Earlier return if this has not been considered tapped yet
+ if (record->tap.count == 0) return true;
+ keycode = keycode & 0xFF;
+ }
+
+ if (keycode >= QK_LAYER_TAP && keycode <= QK_ONE_SHOT_LAYER_MAX) {
+ // let special keys and normal modifiers go through
+ return true;
+ }
+
+ if (xcase_state == XCASE_WAIT) {
+ // grab the next input to be the delimiter
+ if (use_default_xcase_separator(keycode, record)) {
+ enable_xcase_with(DEFAULT_XCASE_SEPARATOR);
+ } else if (record->event.pressed) {
+ // factor in mods
+ if (get_mods() & MOD_MASK_SHIFT) {
+ keycode = LSFT(keycode);
+ } else if (get_mods() & MOD_BIT(KC_RALT)) {
+ keycode = RALT(keycode);
+ }
+ enable_xcase_with(keycode);
+ return false;
+ } else {
+ if (IS_OSM(keycode)) {
+ // this catches the OSM release if no other key was pressed
+ set_oneshot_mods(0);
+ enable_xcase_with(keycode);
+ return false;
+ }
+ // let other special keys go through
+ return true;
+ }
+ }
+
+ if (record->event.pressed) {
+ // handle xcase mode
+ if (xcase_state == XCASE_ON) {
+ // place the delimiter if space is tapped
+ if (keycode == KC_SPACE) {
+ if (distance_to_last_delim != 0) {
+ place_delimiter();
+ distance_to_last_delim = 0;
+ return false;
+ }
+ // remove the delimiter and disable modes
+ else {
+ remove_delimiter();
+ disable_xcase();
+ disable_caps_word();
+ return true;
+ }
+ }
+ // decrement distance to delimiter on back space
+ else if (keycode == KC_BSPC) {
+ --distance_to_last_delim;
+ }
+ // don't increment distance to last delim if negative
+ else if (distance_to_last_delim >= 0) {
+ // puts back a one shot delimiter if you we're back to the delimiter pos
+ if (distance_to_last_delim == 0 && (IS_OSM(xcase_delimiter))) {
+ place_delimiter();
+ }
+ ++distance_to_last_delim;
+ }
+
+ } // end XCASE_ON
+
+ // check if the case modes have been terminated
+ if (terminate_case_modes(keycode, record)) {
+ disable_caps_word();
+ disable_xcase();
+ }
+#ifdef CAPSWORD_USE_SHIFT
+ else if (keycode >= KC_A && keycode <= KC_Z) {
+ tap_code16(LSFT(keycode));
+ return false;
+ }
+#endif
+
+ } // end if event.pressed
+
+ return true;
+ }
+ return true;
+}
diff --git a/users/muppetjones/features/casemodes.h b/users/muppetjones/features/casemodes.h
new file mode 100644
index 0000000000..4a8c00b3d2
--- /dev/null
+++ b/users/muppetjones/features/casemodes.h
@@ -0,0 +1,47 @@
+/* Copyright 2021 Andrew Rae ajrae.nv@gmail.com @andrewjrae
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include QMK_KEYBOARD_H
+
+// Check whether caps word is on
+bool caps_word_enabled(void);
+// Enable caps word
+void enable_caps_word(void);
+// Disable caps word
+void disable_caps_word(void);
+// Toggle caps word
+void toggle_caps_word(void);
+
+// enum for the xcase states
+enum xcase_state {
+ XCASE_OFF = 0, // xcase is off
+ XCASE_ON, // xcase is actively on
+ XCASE_WAIT, // xcase is waiting for the delimiter input
+};
+
+// Get xcase state
+enum xcase_state get_xcase_state(void);
+// Enable xcase and pickup the next keystroke as the delimiter
+void enable_xcase(void);
+// Enable xcase with the specified delimiter
+void enable_xcase_with(uint16_t delimiter);
+// Disable xcase
+void disable_xcase(void);
+
+// Function to be put in process user
+bool process_case_modes(uint16_t keycode, const keyrecord_t *record);
diff --git a/users/muppetjones/features/combos.c b/users/muppetjones/features/combos.c
new file mode 100644
index 0000000000..a6d14bb25c
--- /dev/null
+++ b/users/muppetjones/features/combos.c
@@ -0,0 +1,36 @@
+/* Copyright 2020 Stephen J. Bush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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 COMBO_ENABLE
+# include QMK_KEYBOARD_H
+
+enum combos {
+ H_COMM_TAB,
+ L_U_SCLN,
+ J_M_CAPS,
+};
+
+const uint16_t PROGMEM h_comm_tab[] = {KC_H, KC_COMM, COMBO_END};
+const uint16_t PROGMEM l_u_scln[] = {KC_L, KC_U, COMBO_END};
+const uint16_t PROGMEM j_m_caps[] = {KC_J, KC_M, COMBO_END};
+
+// COMBO_COUNT defined in config.h
+combo_t key_combos[COMBO_COUNT] = {
+ [H_COMM_TAB] = COMBO(h_comm_tab, KC_TAB),
+ [L_U_SCLN] = COMBO(l_u_scln, KC_SCLN),
+ [J_M_CAPS] = COMBO(j_m_caps, KC_CAPS),
+};
+#endif
diff --git a/users/muppetjones/features/combos.h b/users/muppetjones/features/combos.h
new file mode 100644
index 0000000000..af092904e4
--- /dev/null
+++ b/users/muppetjones/features/combos.h
@@ -0,0 +1,17 @@
+/* Copyright 2020 Stephen J. Bush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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/users/muppetjones/features/dancelayers.c b/users/muppetjones/features/dancelayers.c
new file mode 100644
index 0000000000..e7e5f2a6f2
--- /dev/null
+++ b/users/muppetjones/features/dancelayers.c
@@ -0,0 +1,98 @@
+/* Copyright 2020 Stephen J. Bush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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_DANCE_ENABLE
+
+# include QMK_KEYBOARD_H
+# include "muppetjones.h"
+# include "dancelayers.h"
+
+// Initialize tap structure associated with example tap dance key
+static td_tap_t lyr_tap_state = {.is_press_action = true, .state = TD_NONE};
+
+/* @brief Determine the current tap dance state
+ * @param A tap dance state struct.
+ * @return A struct.
+ */
+td_state_t cur_dance(qk_tap_dance_state_t *state) {
+ switch (state->count) {
+ case 1:
+ if (!state->pressed)
+ return TD_1X_TAP;
+ else
+ return TD_1X_HOLD;
+ case 2:
+ return TD_2X_TAP;
+ break;
+ case 3:
+ return TD_3X_TAP;
+ break;
+ case 4:
+ return TD_4X_TAP;
+ break;
+ default:
+ return TD_UNKNOWN;
+ }
+}
+
+// Functions that control what our tap dance key does
+__attribute__((weak)) void td_layer_finished(qk_tap_dance_state_t *state, void *user_data) {
+ lyr_tap_state.state = cur_dance(state);
+ switch (lyr_tap_state.state) {
+ case TD_1X_TAP:
+ if (layer_state_is(_MOUSE))
+ layer_off(_MOUSE);
+ else
+ layer_on(_MOUSE);
+ break;
+ case TD_1X_HOLD:
+ layer_on(_ADJUST);
+ break;
+ case TD_2X_TAP:
+ // Toggle lower layer
+ if (layer_state_is(_LOWER))
+ layer_off(_LOWER);
+ else
+ layer_on(_LOWER);
+ break;
+ case TD_3X_TAP:
+ // Toggle lower layer
+ if (layer_state_is(_RAISE))
+ layer_off(_RAISE);
+ else
+ layer_on(_RAISE);
+ break;
+ case TD_4X_TAP:
+ // Toggle lower layer
+ if (layer_state_is(_ADJUST))
+ layer_off(_ADJUST);
+ else
+ layer_on(_ADJUST);
+ break;
+ default:
+ break;
+ }
+}
+
+__attribute__((weak)) void td_layer_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 (lyr_tap_state.state == TD_1X_HOLD) {
+ layer_off(_ADJUST);
+ }
+ lyr_tap_state.state = TD_NONE;
+}
+
+#endif
diff --git a/users/muppetjones/features/dancelayers.h b/users/muppetjones/features/dancelayers.h
new file mode 100644
index 0000000000..23defcca92
--- /dev/null
+++ b/users/muppetjones/features/dancelayers.h
@@ -0,0 +1,82 @@
+/* Copyright 2020 Stephen J. Bush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 TAP_DANCE_ENABLE
+# include QMK_KEYBOARD_H
+
+/*
+ * TAP DANCE
+ * https://docs.qmk.fm/#/feature_tap_dance
+ */
+
+// Define a type for as many tap dance states as you need
+typedef enum {
+ TD_NONE = 0,
+ TD_UNKNOWN,
+ TD_1X_TAP,
+ TD_1X_HOLD,
+ TD_2X_TAP,
+ TD_3X_TAP,
+ TD_4X_TAP,
+} td_state_t;
+
+// Our custom tap dance key; add any other tap dance keys to this enum
+enum {
+ TD_LAYERS = 0, // NOTE: Start at 0 as this is also an array index
+};
+# define TD_LAYR TD(TD_LAYERS)
+
+typedef struct {
+ bool is_press_action;
+ td_state_t state;
+} td_tap_t;
+
+// Declare the functions to be used with your tap dance key(s)
+
+/* @brief Determine the current tap dance state
+ * @param A tap dance state struct.
+ * @return A struct.
+ */
+td_state_t cur_dance(qk_tap_dance_state_t *state);
+
+// Functions associated with individual tap dances
+
+/* @brief Associate tap actions with layers.
+ *
+ * NOTE: Weak attribute. Can (and should) be defined in keymap.c
+ *
+ * @param state Pointer to a tap dance state object.
+ * @param user_data Pointer to user data.
+ * @return None.
+ */
+void td_layer_finished(qk_tap_dance_state_t *state, void *user_data);
+
+/* @brief Reset tap dance actions.
+ *
+ * NOTE: Weak attribute. Can (and should) be defined in keymap.c
+ *
+ * @param state Pointer to a tap dance state object.
+ * @param user_data Pointer to user data.
+ * @return None.
+ */
+void td_layer_reset(qk_tap_dance_state_t *state, void *user_data);
+
+/* Define tap dance actions.
+ */
+__attribute__((weak))
+qk_tap_dance_action_t tap_dance_actions[1] = {[TD_LAYERS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, td_layer_finished, td_layer_reset, 275)};
+#endif
diff --git a/users/muppetjones/features/etchamouse.c b/users/muppetjones/features/etchamouse.c
new file mode 100644
index 0000000000..e1d4c38e81
--- /dev/null
+++ b/users/muppetjones/features/etchamouse.c
@@ -0,0 +1,101 @@
+/* Copyright 2020 Stephen J. Bush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "etchamouse.h"
+#include "pointing_device.h"
+
+#if defined(POINTING_DEVICE_ENABLE) && defined(ENCODER_ENABLE)
+
+/** Track movement separately in both directions. This will allow us to
+ * smooth out the movement along diagonals
+ */
+typedef struct {
+ bool clockwise : 1;
+ uint8_t count : 7;
+ uint16_t timer : 16;
+ uint16_t elapsed : 16;
+} key_tracker_t;
+
+static key_tracker_t tracker_x = {false, 0, 0, 0};
+static key_tracker_t tracker_y = {false, 0, 0, 0};
+
+/**
+ * @brief Calculate the mouse move units for the given tracker.
+ *
+ * By using a key tracker rederence, we can minimize the amount of space
+ * required on the stack. As we will have the tracker object, we will also
+ * take the clockwise direction into account, which completely internalizes
+ * the movement unit logic within this single function.
+ *
+ * @param tracker: Pointer to a key tracker object.
+ * @return A integer from -127 to 127
+ */
+static int8_t move_unit(key_tracker_t *tracker) {
+ if (0 == tracker->count) return 0;
+
+ const uint16_t modifier = TAPPING_TERM_MOUSE_ENCODER < tracker->elapsed ? 1 : (TAPPING_TERM_MOUSE_ENCODER - tracker->elapsed) >> 1;
+ uint16_t speed = MOUSEKEY_INITIAL_SPEED + MOUSEKEY_MOVE_DELTA * modifier * (tracker->count >> 1);
+
+ /* convert speed to USB mouse speed 1 to 127 */
+ speed = (uint8_t)(speed / (1000.0f / MOUSEKEY_INTERVAL));
+ speed = speed < 1 ? 1 : speed;
+
+ return (tracker->clockwise ? 1 : -1) * (speed > MOUSEKEY_MOVE_MAX ? MOUSEKEY_MOVE_MAX : speed);
+}
+
+/**
+ * @brief Update key press tracker
+ *
+ * Update the time elapsed since the last keypress.
+ * If the key has not been pressed since the tapping term, then reset the count to zero.
+ * If the key was pressed, update the timer and increment the count.
+ * Number of keypresses will degrade based on tapping term and zero out based
+ * on the persistenc term.
+ *
+ * @param tracker: The object to update
+ * @param pressed: A boolean indicating whether or not the key was pressed
+ * @return None.
+ */
+static void update_tracker(key_tracker_t *tracker, bool pressed, bool clockwise) {
+ tracker->elapsed = timer_elapsed(tracker->timer);
+ if (pressed) {
+ tracker->timer = timer_read();
+ tracker->count += 1;
+ tracker->clockwise = clockwise;
+ } else if (TAPPING_TERM_PERSISTENCE < tracker->elapsed) {
+ tracker->count = 0;
+ } else if (TAPPING_TERM_MOUSE_ENCODER < tracker->elapsed) {
+ tracker->count >>= 1;
+ }
+}
+
+bool encoder_update_mouse(uint8_t index, bool clockwise) {
+ report_mouse_t curr_report = pointing_device_get_report();
+
+ update_tracker(&tracker_x, 0 == index, clockwise);
+ update_tracker(&tracker_y, 1 == index, clockwise);
+
+ curr_report.x += move_unit(&tracker_x);
+ curr_report.y += move_unit(&tracker_y);
+
+ pointing_device_set_report(curr_report);
+ pointing_device_send();
+
+ return true;
+}
+
+#endif
diff --git a/users/muppetjones/features/etchamouse.h b/users/muppetjones/features/etchamouse.h
new file mode 100644
index 0000000000..86b0d03c6e
--- /dev/null
+++ b/users/muppetjones/features/etchamouse.h
@@ -0,0 +1,59 @@
+/* Copyright 2020 Stephen J. Bush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#if defined(POINTING_DEVICE_ENABLE) && defined(ENCODER_ENABLE)
+
+/* max value on report descriptor */
+# ifndef MOUSEKEY_MOVE_MAX
+# define MOUSEKEY_MOVE_MAX 127
+# elif MOUSEKEY_MOVE_MAX > 127
+# error MOUSEKEY_MOVE_MAX needs to be smaller than 127
+# endif
+# ifndef MOUSEKEY_MOVE_DELTA
+# define MOUSEKEY_MOVE_DELTA 25
+# endif
+# ifndef MOUSEKEY_INITIAL_SPEED
+# define MOUSEKEY_INITIAL_SPEED 100
+# endif
+# ifndef MOUSEKEY_INTERVAL
+# define MOUSEKEY_INTERVAL 75
+# endif
+
+/** Amount of time (ms) before zeroing out the count.
+ * A higher value will result in smoother curves but may lower accuracy
+ */
+# ifndef TAPPING_TERM_PERSISTENCE
+# define TAPPING_TERM_PERSISTENCE 150
+# endif
+
+/** Amount of time (ms) to register consecutive key presses
+ * A higher value will smooth out mouse movement and increase speed for
+ * consecutive presses.
+ */
+# ifndef TAPPING_TERM_MOUSE_ENCODER
+# define TAPPING_TERM_MOUSE_ENCODER 50
+# endif
+
+/** @brief Update mouse position based on encoder movement.
+ * @param index The encoder index. 0 controls x-axis; 1 controls y-axis.
+ * @param clockwise Indicates direction encoder was turned.
+ * @returns None.
+ */
+bool encoder_update_mouse(uint8_t index, bool clockwise);
+
+#endif
diff --git a/users/muppetjones/features/rgblayers.c b/users/muppetjones/features/rgblayers.c
new file mode 100644
index 0000000000..46858ae671
--- /dev/null
+++ b/users/muppetjones/features/rgblayers.c
@@ -0,0 +1,69 @@
+/* Copyright 2020 Stephen J. Bush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * 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 QMK_KEYBOARD_H
+# include "rgblayers.h"
+
+static rgblight_config_t home_rgb;
+
+__attribute__((weak)) void set_layer_hsv(layer_state_t state, HSV* offset) {}
+
+/* Placeholder function
+ * If defined in a keymap.c, this will be ignored.
+ */
+__attribute__((weak)) void post_process_record_keymap(uint16_t keycode, keyrecord_t* record) { return; }
+
+void post_process_record_user(uint16_t keycode, keyrecord_t* record) {
+ // Regular user keycode case statement
+ switch (keycode) {
+# ifdef RGBLIGHT_ENABLE
+ case RGB_HUD:
+ case RGB_HUI:
+ case RGB_SAD:
+ case RGB_SAI:
+ case RGB_VAD:
+ case RGB_VAI:
+ set_rgb_home();
+ break;
+# endif
+ default:
+ break;
+ }
+}
+
+void set_rgb_home(void) {
+ home_rgb.raw = eeconfig_read_rgblight();
+ // these get the current -- not eeprom
+ // home_rgb.hue = rgblight_get_hue();
+ // home_rgb.sat = rgblight_get_sat();
+ // home_rgb.val = rgblight_get_val();
+}
+
+void set_rgb_by_layer(layer_state_t state) {
+ if (!rgblight_is_enabled()) {
+ return; // lighting not enabled
+ }
+
+ HSV layer_color = {home_rgb.hue, home_rgb.sat, home_rgb.val};
+ set_layer_hsv(state, &layer_color);
+ rgblight_sethsv_noeeprom( //
+ layer_color.h, // all 3 MUST be btwn 0 and 255
+ layer_color.s, //
+ layer_color.v //
+ );
+}
+#endif
diff --git a/users/muppetjones/features/rgblayers.h b/users/muppetjones/features/rgblayers.h
new file mode 100644
index 0000000000..35be7d7fe4
--- /dev/null
+++ b/users/muppetjones/features/rgblayers.h
@@ -0,0 +1,22 @@
+/* Copyright 2020 Stephen J. Bush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 RGBLIGHT_ENABLE
+
+void set_rgb_by_layer(layer_state_t);
+void set_rgb_home(void);
+#endif
diff --git a/users/muppetjones/muppetjones.c b/users/muppetjones/muppetjones.c
new file mode 100644
index 0000000000..55051bdbcd
--- /dev/null
+++ b/users/muppetjones/muppetjones.c
@@ -0,0 +1,57 @@
+/* Copyright 2020 Stephen J. Bush @muppetjones
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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 "muppetjones.h"
+#include "tapmods.h"
+#include "features/casemodes.h"
+
+/* Placeholder function
+ * If defined in a keymap.c, this will be ignored.
+ */
+__attribute__((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { return true; }
+
+/* Handle keypresses
+ */
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_case_modes(keycode, record)) {
+ return false;
+ }
+ // Regular user keycode case statement
+ switch (keycode) {
+ case CLMK_DH:
+ if (record->event.pressed) {
+ set_single_persistent_default_layer(_CLMK_DH);
+ }
+ return false;
+ break;
+ case QWERTY:
+ if (record->event.pressed) {
+ // print("mode just switched to qwerty and this is a huge string\n");
+ set_single_persistent_default_layer(_QWERTY);
+ }
+ return false;
+ break;
+ case CAPSWRD:
+ if (record->event.pressed) {
+ toggle_caps_word();
+ }
+ return false;
+ default:
+ break;
+ }
+ return process_record_keymap(keycode, record);
+}
diff --git a/users/muppetjones/muppetjones.h b/users/muppetjones/muppetjones.h
new file mode 100644
index 0000000000..f5b2a3a465
--- /dev/null
+++ b/users/muppetjones/muppetjones.h
@@ -0,0 +1,56 @@
+/* Copyright 2020 Stephen J. Bush @muppetjones
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#include QMK_KEYBOARD_H
+
+#include "tapmods.h"
+#include "wrappers.h"
+#include "features/casemodes.h"
+
+#ifdef COMBO_ENABLE
+# include "features/combos.h"
+#endif
+
+#ifdef ENCODER_ENABLE
+# include "features/etchamouse.h"
+#endif
+
+#ifdef RGBLIGHT_ENABLE
+# include "features/rgblayers.h"
+#endif
+
+#ifdef TAP_DANCE_ENABLE
+# include "features/dancelayers.h"
+#endif
+
+/* Define layer names */
+enum userspace_layers {
+ _CLMK_DH = 0,
+ _QWERTY,
+ _MOUSE, // Intended for encoders. Mostly pass through.
+ _LOWER,
+ _RAISE,
+ _NAV,
+ _ADJUST,
+};
+
+// for casemodes
+enum custom_keycodes {
+ CLMK_DH = SAFE_RANGE,
+ QWERTY,
+ CAPSWRD,
+};
diff --git a/users/muppetjones/readme.md b/users/muppetjones/readme.md
new file mode 100644
index 0000000000..6569c01d95
--- /dev/null
+++ b/users/muppetjones/readme.md
@@ -0,0 +1,23 @@
+# License
+
+Copyright 2020 Stephen J. Bush @muppetjones
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# FEATURES
+
+- [Etch-a-sketch Encoders](readme/etchamouse.md)
+- [RGB Layers](readme/rgblayers.md)
+- [Tap Dance Layers](readme/dancelayers.md)
+- [Tap Mods](readme/tapmods.md)
diff --git a/users/muppetjones/readme/dancelayers.md b/users/muppetjones/readme/dancelayers.md
new file mode 100644
index 0000000000..85c4b7cad9
--- /dev/null
+++ b/users/muppetjones/readme/dancelayers.md
@@ -0,0 +1,73 @@
+# Tap Dance Layers
+
+This feature creates a key that changes the current layer via tap dance. By
+default, this assumes that you have the following layers defined:
+
+- `_ADJUST`
+- `_LOWER`
+- `_RAISE`
+- `_MOUSE`
+
+And sets up the following tap dance:
+
+| Count | Action | Layer |
+| ----- | ------ | --------- |
+| 1x | hold | `_ADJUST` |
+| 1x | tap | `_MOUSE` |
+| 2x | tap | `_LOWER` |
+| 3x | tap | `_RAISE` |
+| 4x | tap | `_ADJUST` |
+
+## Usage
+
+> NOTE: If you use other tap-dance functions, you may require additonal setup.
+
+1. Copy `features/dancelayers.{c,h}` into your keymap or userspace directory.
+2. Add the following to your `rules.mk`
+
+ ```
+ TAP_DANCE_ENABLE = yes
+
+ SRC += ./features/dancelayers.c
+ ```
+
+3. Add the following to your `keymap.c`:
+
+ ```
+ #ifdef TAP_DANCE_ENABLE
+ # include "features/dancelayers.h"
+ # define TD_LAYR TD(TD_LAYERS)
+ #else
+ # define TD_LAYR XXXXXXX
+ #endif
+ ```
+
+4. Add `TD_LYR` to your keymap.
+
+## Functions and Enumerations
+
+The following functions are available for use:
+
+- `cur_dance`
+
+The following tap dance enumerations are defined:
+
+- `TD_1X_HOLD`
+- `TD_1X_TAP`
+- `TD_2X_TAP`
+- `TD_3X_TAP`
+- `TD_4X_TAP`
+
+## Overriding the Defaults
+
+If you want to define different layers to tap dance actions, you'll need to
+define two additional functions in your `keymap.c`:
+
+- `td_lyr_finished`
+- `td_lyr_reset`
+
+Both of these functions are necessary and require a certain pattern for each
+layer. "Tap" actions are handled in `*_finished` while "hold" actions are
+resolved in `*_finished` and `*_reset`.
+
+See the implementation in `dancelayers.c` for an example.
diff --git a/users/muppetjones/readme/etchamouse.md b/users/muppetjones/readme/etchamouse.md
new file mode 100644
index 0000000000..efcf718b22
--- /dev/null
+++ b/users/muppetjones/readme/etchamouse.md
@@ -0,0 +1,69 @@
+# Etch-a-Mouse
+
+Encoder-based mouse movement with acceleration!
+
+## Usage
+
+- Add the following to your rules.mk
+
+ ```
+ ENCODER_ENABLE = yes
+ POINTING_DEVICE_ENABLE = yes
+ ```
+
+- Add the following block to your keymap.c
+
+ ```
+ #ifdef ENCODER_ENABLE
+ void encoder_update_user(uint8_t index, bool clockwise) {
+ # ifdef POINTING_DEVICE_ENABLE
+ encoder_update_mouse(index, clockwise);
+ # endif
+ return;
+ #endif
+ ```
+
+> NOTE: I use the mousekey keycodes to add button one and two into my keymap.
+
+## How It Works
+
+> This implementation uses the pointing device library, but it reuses several
+> of the same parameters from the mouse key acceleration.
+
+> The PD library is very light weight, but it does not animate cursor movement.
+> tl;dr: The mouse movement will not be smooth!
+
+The acceleration has four parts:
+
+```
+initial speed + (delta * time * count)
+```
+
+1. **Initial Speed**. Uses the `MOUSEKEY_INITIAL_SPEED` parameter.
+2. **Delta**. Uses the `MOUSEKEY_MOVE_DELTA` parameter.
+3. **Time**. The faster you turn, the faster you move.
+
+ Subtract the time elapsed since the last actuation from a tapping term,
+ defined by `TAPPING_TERM_MOUSE_ENCODER`†, with a minimum value of 1.
+
+4. **Count**. The more you turn, the faster you move.
+
+ Count of the total number of actuations. This value will decay over time.
+
+† _I probably could and will eventually use `TAPPING_TERM`, but I did not want
+to mess up my tap mods while experimenting with acceleration._
+
+## Diagonal Movement
+
+Counting the number of actuations for a given axis allows us to persist movement
+along a given axis to give us some diagonal movement when moving both axes,
+which also helps with the acceleration a bit and makes the movement less blocky.
+
+## Time-based Decay (a.k.a., Deceleration)
+
+Originally, the actuation count zeroed out once the tapping term elapsed, but
+this made the movement very choppy. Instead, the count will degrade on every
+refresh after the tapping term has been exceeded; unfortunately, a refresh only
+occurs on an actuation on either axis, so once the time elapsed exceeds the
+persistence term, the count is cleared, which also removes any movement in that
+axis.
diff --git a/users/muppetjones/readme/rgblayers.md b/users/muppetjones/readme/rgblayers.md
new file mode 100644
index 0000000000..fb69800177
--- /dev/null
+++ b/users/muppetjones/readme/rgblayers.md
@@ -0,0 +1,60 @@
+# Dynamic Underglow Lighting Per-Layer
+
+This bit of code allows you to define layer lighting that respects your current eeprom settings, e.g., brightness. It does this by storing the base state rgb
+
+## Setup
+
+1. Enable RGB underglow in your `rules.mk`
+
+ ```
+ RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+ ```
+
+2. (Optional) Add RGB configuration to your `config.h`
+
+ ```
+ #ifdef RGBLIGHT_ENABLE
+ // # define RGBLIGHT_ANIMATIONS
+ # define RGBLIGHT_HUE_STEP 8
+ # define RGBLIGHT_SAT_STEP 16
+ # define RGBLIGHT_VAL_STEP 16
+ # define RGBLIGHT_LIMIT_VAL 150
+ # define RGBLIGHT_SLEEP
+ // # define RGBLIGHT_LAYERS
+ #endif
+ ```
+
+3. Add `set_layer_hsv` function. This is where you define your layer-specific colors by setting the HSV properties on the `layer_color` pointer. This example uses the QMK RGB configuration parameters to keep the layer colors offset based on the current EEPROM HSV.
+
+ > NOTE: The HSV values should be between 0 and 255, but setting the modulus on saturation causes the lights to go white on my board. I _think_ this is due to overflow, but I haven't had the chance to try and resolve it yet.
+
+
+ ```
+ #ifdef RGBLIGHT_ENABLE
+ void set_layer_hsv(layer_state_t state, HSV* layer_color) {
+ int32_t h = layer_color->h, s = layer_color->s, v = layer_color->v;
+ switch (get_highest_layer(state)) {
+ case _RAISE:
+ h += 2 * RGBLIGHT_HUE_STEP;
+ break;
+ case _LOWER:
+ h += -2 * RGBLIGHT_HUE_STEP;
+ break;
+ case _NAV:
+ h += 1 * RGBLIGHT_HUE_STEP;
+ break;
+ case _MOUSE:
+ h += -7 * RGBLIGHT_HUE_STEP;
+ break;
+ default:
+ break;
+ }
+ layer_color->h = h % 255;
+ layer_color->s = s;
+ layer_color->v = v % 255;
+ return;
+ }
+ #endif
+ ```
+
+4. (Optional) If you're using `post_process_record_user`, you'll need to change the name in your keymap to `post_process_record_keymap`. We use the user function to update the HSV state after one of the RGB keycodes is pressed.
diff --git a/users/muppetjones/readme/tapmods.md b/users/muppetjones/readme/tapmods.md
new file mode 100644
index 0000000000..eb707e05d9
--- /dev/null
+++ b/users/muppetjones/readme/tapmods.md
@@ -0,0 +1,25 @@
+# Tap Mods
+
+## Standard Keys
+
+| Keycode | Tap | Hold | Description |
+| -------- | ------- | ----- | ---------------------------------------------------- |
+| `HY_ESC` | Esc | Hyper | Esc on tap; hyper when held |
+| `HR_*` | A, O | LGUI | Home-row for Colemak mod-DH and right-handed numpad. |
+| \'\' | R, I, 6 | LALT | Home-row for Colemak mod-DH and right-handed numpad. |
+| \'\' | S, E, 5 | LCTL | Home-row for Colemak mod-DH and right-handed numpad. |
+| \'\' | T, N, 4 | LSFT | Home-row for Colemak mod-DH and right-handed numpad. |
+
+## Layers
+
+| Keycode | Tap | Hold | Description |
+| ------- | ----- | ----- | --------------------------- |
+| LOWER | -- | Lower | Temporarily activate layer. |
+| RAISE | -- | Raise | Temporarily activate layer. |
+| NAV | -- | Nav | Temporarily activate layer. |
+| LOW_ENT | Enter | Lower | |
+| LOW_SPC | Space | Lower | |
+| NAV_SPC | Space | Nav | |
+| RAI_ENT | Enter | Raise | |
+| RAI_SPC | Space | Raise | |
+| RAI_TAB | Tab | Raise | |
diff --git a/users/muppetjones/readme/wrappers.md b/users/muppetjones/readme/wrappers.md
new file mode 100644
index 0000000000..e8365ab7ad
--- /dev/null
+++ b/users/muppetjones/readme/wrappers.md
@@ -0,0 +1,153 @@
+# Keymap Wrappers
+
+> Pattern adapted from users/drashna/wrapper.h
+
+Defines several object macros for common keycode sets. Each macro typically
+covers 5 keycodes with a left- or right-hand orientation, and macros are
+generally grouped into rows of three or four.
+
+> TODO: Use keymap builder to generate images.
+
+## Example
+
+```
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+// clang-format off
+[_MODS] = LAYOUT_wrapper(
+ _______, ___________________BLANK___________________, ...
+ ...
+),
+//clang-format on
+}
+```
+
+Substitute the appropriate `LAYOUT` function, e.g., `LAYOUT_planck_grid` for your board.
+
+## Wrappers
+
+> **How to Read the Tables**
+>
+> - Headers are numbered when wrapper is not hand-specific
+> - Headers use `L` and `R` to indicate handedness
+> - Headers use `P`, `R`, `M`, and `I` to indicate pinky, ring, middle, and index, respectively
+> - Wrappers define a maximum of **five** keycodes -- hands are shown on the same row for readability
+
+### Alpha: Colemak mod-DH
+
+| # | LP | LR | LM | LI | LI+ | RI+ | RI | RM | RR | RP |
+| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| 1 | Q | W | F | P | B | J | L | U | Y | ;ˆ |
+| 2 | A° | R° | S° | T° | G | M | N° | E° | I° | O° |
+| 3 | Z | X | C | D | V˜ | K | H | , | . | / |
+
+- **ˆ:** (Optional) Replace `;` with `'` (top-right)
+- **°:** (Optional) Home row modifiers on tap-hold (GACS, SCAG)
+- **˜:** (Optional) Tap-hold `shift` on `v`
+
+### Alpha: QWERTY
+
+| # | LP | LR | LM | LI | LI+ | RI+ | RI | RM | RR | RP |
+| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| 1 | Q | W | E | R | T | Y | U | I | O | P |
+| 2 | A | S | D | F | G | H | J | K | L | ; |
+| 3 | Z | X | C | V | B | N | M | , | . | / |
+
+### Blank(-ish)
+
+Defines macros for common filler.
+
+| 1 | 2 | 3 | 4 | 5 |
+| ---- | ---- | ---- | ---- | ---- |
+| TRNS | TRNS | TRNS | TRNS | TRNS |
+| xxxx | xxxx | xxxx | xxxx | xxxx |
+
+| LP | LR | LM | LI | LI+ | RI+ | RI | RM | RR | RP |
+| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
+| LGUI | LALT | LCTL | LSFT | TRNS | TRNS | RSFT | RCTL | LALT | RGUI |
+
+### Adjust
+
+| # | LP | LR | LM | LI | LI+ | RI+ | RI | RM | RR | RP |
+| --- | ------ | ----- | ---- | ----- | ------ | ---- | ------ | ------ | ---- | ---- |
+| 1 | Reset | Debug | xxxx | Term+ | Term- | xxxx | AGNORM | AGSWAP | xxxx | xxxx |
+| 2 | RgbTog | Hue+ | Sat+ | Val+ | RgbMod | xxxx | CLMKDH | QWERTY | xxxx | xxxx |
+| 3 | xxxx | Hue- | Sat- | Val- | xxxx | xxxx | xxxx | xxxx | xxxx | xxxx |
+
+> Recommend: Define Right side per-board
+
+### Function
+
+| # | 1 | 2 | 3 | 4 |
+| --- | --- | --- | --- | --- |
+| 1 | F1 | F2 | F3 | F4 |
+| 2 | F5 | F6 | F7 | F8 |
+| 3 | F9 | F10 | F11 | F12 |
+
+### Media
+
+| # | 1 | 2 | 3 | 4 | 5 |
+| --- | ----- | ----- | ----- | ---- | ---- |
+| 1 | AuOn | MiOn | MuOn | Brm+ | Vol+ |
+| 2 | AuOff | MiOff | MuOff | Brm- | Vol- |
+| 3 | Play | Stop | Next | Prev | Mute |
+
+### Nav
+
+| # | RI+ | RI | RM | RR | RP |
+| --- | ----- | ---- | ----- | ----- | ----- |
+| 1 | Pg Up | Home | Wh Dn | Wh Up | End |
+| 2 | Pg Dn | Left | Down | Up | Right |
+| 3 | xxxx | xxxx | xxxx | xxxx | xxxx |
+
+### Numpad
+
+- `X Y` indicates the character `X` on keypress and character `Y` on `shift` keypress
+- Second table shows characters with `alt` keypress
+
+| # | RI+ | RI | RM | RR | RP |
+| --- | ----- | ----- | ----- | ----- | ----- |
+| 1 | Del | `7 &` | `8 _` | `9 (` | |
+| 2 | `- _` | `4 $` | `5 %` | `6 ^` | `*` |
+| 3 | `= +` | `1 !` | `2 @` | `3 #` | `, <` |
+| 4 | | `0 )` | `. >` | | |
+
+| # | RI+ | RI | RM | RR | RP |
+| --- | ----- | ----- | ----- | ----- | ----- |
+| 1 | | `¶ ‡` | `• °` | `ª ·` | `« »` |
+| 2 | `– —` | `¢ ›` | `∞ ï¬` | `§ fl` | `° °` |
+| 3 | `≠ ±` | `¡ â„` | `â„¢ €` | `£ ‹` | `≤ ¯` |
+| 4 | | | `º ‚` | | |
+
+### Symbols
+
+| # | LP | LR | LM | LI | LI+ |
+| --- | ---- | ---- | ---- | ---- | ---- |
+| 1 | ~ | \` | ( | ) | |
+| 2 | LGUI | LALT | \[ ° | \] ° | \_ - |
+| 3 | xxxx | xxxx | { | } | LSFT |
+
+- **°:** Home row modifiers on tap-hold (GACS, SCAG)
+
+### VIM
+
+| # | LP | LR | LM | LI | LI+ |
+| --- | --- | --- | --- | --- | --- |
+| 1 | Q° | W° | : | | |
+
+- **°:** Via transparency
+
+## Typical Layers
+
+My keymaps typically use the following layers.
+
+| # | Name | Via | Left | Right |
+| --- | ---------- | ------------- | --------- | ------ |
+| 0 | Colemak DH | Adjust | | |
+| 1 | QWERTY | Adjust | | |
+| 2 | Mouse | tap-dance | n/a | n/a |
+| 3 | Lower | L home thumb | symbols | numpad |
+| 4 | Raise | L outer thumb | | |
+| 5 | Nav | R home thumb | home mods | nav |
+| 6 | Adjust | tap-dance | RGB | MEDIA |
diff --git a/users/muppetjones/rules.mk b/users/muppetjones/rules.mk
new file mode 100644
index 0000000000..1decc2ed98
--- /dev/null
+++ b/users/muppetjones/rules.mk
@@ -0,0 +1,25 @@
+# Reduce firmware size
+# https://thomasbaart.nl/2018/12/01/reducing-firmware-size-in-qmk/
+# also requires in config.h
+# NO_ACTION_MACRO
+# NO_ACTION_FUNCTION
+LTO_ENABLE = yes
+
+SRC += muppetjones.c
+SRC += features/casemodes.c
+
+ifdef COMBO_ENABLE
+ SRC += ./features/combos.c
+endif
+
+ifdef ENCODER_ENABLE
+ SRC += ./features/etchamouse.c
+endif
+
+ifdef RGBLIGHT_ENABLE
+ SRC += ./features/rgblayers.c
+endif
+
+ifdef TAP_DANCE_ENABLE
+ SRC += ./features/dancelayers.c
+endif
diff --git a/users/muppetjones/tapmods.h b/users/muppetjones/tapmods.h
new file mode 100644
index 0000000000..af3d160c5b
--- /dev/null
+++ b/users/muppetjones/tapmods.h
@@ -0,0 +1,77 @@
+/* Copyright 2020 Stephen Bush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#include QMK_KEYBOARD_H
+
+/* Define a stand-in from dancelayers.h in case tap-dance isn't enabled */
+#ifndef TAP_DANCE_ENABLE
+# define TD_LAYR XXXXXXX
+#endif
+
+/* Misc */
+
+#define HY_ESC HYPR_T(KC_ESC)
+#define HY_BSPC HYPR_T(KC_BSPC)
+
+/* Tap Mod Layers */
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define NAV MO(_NAV)
+
+#define ADJ_DEL LT(_ADJUST, KC_DEL)
+#define LOW_ENT LT(_LOWER, KC_ENT)
+#define LOW_SPC LT(_LOWER, KC_SPC)
+#define LOW_BSP LT(_LOWER, KC_BSPC)
+#define NAV_SPC LT(_NAV, KC_SPC)
+#define RAI_BSP LT(_RAISE, KC_BSPC)
+#define RAI_ENT LT(_RAISE, KC_ENT)
+#define RAI_SPC LT(_RAISE, KC_SPC)
+#define RAI_TAB LT(_RAISE, KC_TAB)
+
+/* Miryoku Home-row Mods
+
+NOTE: Uses GACS.
+*/
+
+// Left-hand home row mods (colemak)
+#define HR_A LGUI_T(KC_A)
+#define HR_R LALT_T(KC_R)
+#define HR_S LCTL_T(KC_S)
+#define HR_T LSFT_T(KC_T)
+
+// Right-hand home row mods (colemak)
+#define HR_N RSFT_T(KC_N)
+#define HR_E RCTL_T(KC_E)
+#define HR_I LALT_T(KC_I)
+#define HR_O RGUI_T(KC_O)
+
+// Right-hand Numpad
+#define HR_4 RSFT_T(KC_4)
+#define HR_5 RCTL_T(KC_5)
+#define HR_6 LALT_T(KC_6)
+
+// Layout-specific mods
+#define TM_VSFT LSFT_T(KC_V) // For Using V in layer combos (e.g., planck)
+
+// GACS (Lower)
+#define HR_LBRC LCTL_T(KC_LBRC)
+#define HR_RBRC LSFT_T(KC_RBRC)
+
+// Left-hand home row mods (lower)---
+// #define HOME_UND LCTL_T(KC_UNDS) // NOTE: Mod-tap restricted to basic keycodes
+#define HOME_MIN LSFT_T(KC_MINS)
diff --git a/users/muppetjones/wrappers.h b/users/muppetjones/wrappers.h
new file mode 100644
index 0000000000..301554f5d5
--- /dev/null
+++ b/users/muppetjones/wrappers.h
@@ -0,0 +1,249 @@
+/* Copyright 2020 Stephen Bush
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+#include "muppetjones.h"
+#include "tapmods.h"
+
+/* Pattern adapted from users/drashna/wrapper.h
+ Define per-layout keymap sections. Also requires a wrapper.
+
+ Example:
+
+ #define LAYOUT_:name_wrapper(...) LAYOUT_:name(__VA_ARGS__)
+
+ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_MODS] = LAYOUT_:name _wrapper(
+ _______, ___________________BLANK___________________, ...
+ ...
+ ),
+ }
+*/
+
+#ifdef MOUSEKEY_ENABLE
+# define MK_WH_D KC_WH_D
+# define MK_WH_U KC_WH_U
+#else
+# define MK_WH_D XXXXXXX
+# define MK_WH_U XXXXXXX
+#endif
+
+// clang-format off
+/* Blank-ish
+ * ,----------------------------------. * ,----------------------------------.
+ * | TRNS | TRNS | TRNS | TRNS | TRNS | * | xxxx | xxxx | xxxx | xxxx | xxxx |
+ * `----------------------------------' * `----------------------------------'
+ * ,----------------------------------. * ,----------------------------------.
+ * | LGUI | LALT | LCTL | LSFT | TRNS | * | TRNS | RSFT | RCTL | LALT | RGUI |
+ * `----------------------------------' * `----------------------------------'
+*/
+#define __BLANK____________________________________ _______, _______, _______, _______, _______
+#define __BLANK_NOOP_______________________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+#define __BLANK_W_GACS_____________________________ KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, _______
+#define __BLANK_W_SCAG_____________________________ _______, KC_RSFT, KC_RCTL, KC_LALT, KC_RGUI
+
+/* Adjust LH
+ * ,----------------------------------. ,----------------------------------.
+ * |Reset |Debug | xxxx |Term+ |Term- | | xxxx |AGNORM|AGSWAP| xxxx | xxxx |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * |RgbTog| Hue+ | Sat+ | Val+ |RgbMod| | xxxx |CLMKDH|QWERTY| xxxx | xxxx |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | xxxx | Hue- | Sat- | Val- | xxxx | | xxxx | xxxx | xxxx | xxxx | xxxx |
+ * `----------------------------------' `----------------------------------'
+ */
+ // NOTE: The "BACKLIT" keycode is planck specific
+#define __ADJUST_L1________________________________ RESET, DEBUG, XXXXXXX, TERM_ON, TERM_OFF
+#define __ADJUST_L2________________________________ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, RGB_MOD
+#define __ADJUST_L3________________________________ XXXXXXX, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX
+
+#define __ADJUST_R1________________________________ XXXXXXX, AG_NORM, AG_SWAP, XXXXXXX, XXXXXXX
+#define __ADJUST_R2________________________________ XXXXXXX, CLMK_DH, QWERTY, XXXXXXX, XXXXXXX
+#define __ADJUST_R3________________________________ __BLANK_NOOP_______________________________
+
+/* Colemak mod-DH
+ * ,----------------------------------. ,----------------------------------.
+ * | Q | W | F | P | B | | J | L | U | Y | ;ˆ |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | A | R | S | T | G | | M | N | E | I | O |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Z | X | C | D | V˜ | | K | H | , | . | / |
+ * `----------------------------------' `----------------------------------'
+ * ˆ Alternate: KC_QUOT
+ * ° Alternate: Home row mods (GASC, SCAG)
+ * ˜ Alternate: Hold for shift
+ *
+ * Colemak mod-DH (alt and alt+shift)
+ * ,----------------------------------. ,----------------------------------.
+ * | œ Œ | ∑ „ | | π ∠| ı | | ∆ Ô | | | ¥ à | æ Æ |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Ã¥ Ã… | ® ‰ | ß à | † ˇ | © Ë | | µ  | Ëœ Ëœ | ´ ´ | ˆ ˆ | Ø |
+ * |------+------+------+------+------| |------+------+------+------+------|
+ * | Ω ¸ | ≈ ˛ | ç Ç | Î | √ ◊ | | ˚  | Ó | ≤ ¯ | ≥ ˘ | ÷ ¿ |
+ * `----------------------------------' `----------------------------------'
+ */
+#define __COLEMAK_MOD_DH_L1________________________ KC_Q, KC_W, KC_F, KC_P, KC_B
+#define __COLEMAK_MOD_DH_L2_W_GACS_________________ HR_A, HR_R, HR_S, HR_T, KC_G
+#define __COLEMAK_MOD_DH_L3________________________ KC_Z, KC_X, KC_C, KC_D, KC_V
+#define __COLEMAK_MOD_DH_L3_W_SFTV_________________ KC_Z, KC_X, KC_C, KC_D, TM_VSFT
+
+#define __COLEMAK_MOD_DH_R1_W_QUOT_________________ KC_J, KC_L, KC_U, KC_Y, KC_QUOT
+#define __COLEMAK_MOD_DH_R1________________________ KC_J, KC_L, KC_U, KC_Y, KC_SCLN
+#define __COLEMAK_MOD_DH_R2_W_SCAG_________________ KC_M, HR_N, HR_E, HR_I, HR_O
+#define __COLEMAK_MOD_DH_R3________________________ KC_K, KC_H, KC_COMM, KC_DOT, KC_SLASH
+
+/* Function (4 columns)
+ * ,---------------------------.
+ * | F1 | F2 | F3 | F4 |
+ * |------+------+------+------|
+ * | F5 | F6 | F7 | F8 |
+ * |------+------+------+------|
+ * | F9 | F10 | F11 | F12 |
+ * `---------------------------'
+ */
+#define __FUNC_X1_________________________ KC_F1, KC_F2, KC_F3, KC_F4
+#define __FUNC_X2_________________________ KC_F5, KC_F6, KC_F7, KC_F8
+#define __FUNC_X3_________________________ KC_F9, KC_F10, KC_F11, KC_F12
+
+/* Game
+ */
+#define __GAME_L1__________________________________ KC_BTN3, KC_BTN2, KC_UP, KC_BTN1, KC_BTN5
+#define __GAME_L2__________________________________ KC_BTN4, KC_LEFT, KC_DOWN, KC_RIGHT,XXXXXXX
+#define __GAME_L3__________________________________ XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+
+#define __GAME_R1__________________________________ KC_Q, KC_1, KC_2, KC_3, XXXXXXX
+#define __GAME_R2__________________________________ XXXXXXX, KC_4, KC_5, KC_6, XXXXXXX
+#define __GAME_R3__________________________________ XXXXXXX, KC_7, KC_8, KC_9, XXXXXXX
+
+
+/* Guitar
+ * ,----------------------------------. ,----------------------------------.
+ * | E | F |• F♯ | G |• G♯ | | A |• A♯ | B |• C | C♯ |
+ * | A | A♯ |• B | C |• C♯ | | D |• D♯ | E |• F | F♯ |
+ * | D | D♯ |• E | F |• F♯ | | G |• G♯ | A |• A♯ | B |
+ * | G | G♯ |• A | A♯ |• B | | C |• C♯ | D |• D♯ | E |
+ * | B | C |• C♯ | D |• D♯ | | E |• F | F♯ |• G | G♯ |
+ * | E | F |• F♯ | G |• G♯ | | A |• A♯ | B |• C | C♯ |
+ * `----------------------------------' `----------------------------------'
+ */
+// Not sure why, but this does not work (possibly due to the lowercase 's'?)
+// #ifdef MIDI_ADVANCED
+// #define __GUITAR_1E_L______________________________ MI_E_1, MI_F_1, MI_Fs_1, MI_G_1, MI_Gs_1
+// #define __GUITAR_2A_L______________________________ MI_A_1, MI_As_1, MI_B_1, MI_C_2, MI_Cs_2
+// #define __GUITAR_3D_L______________________________ MI_D_2, MI_Ds_2, MI_E_2, MI_F_2, MI_Fs_2
+// #define __GUITAR_4G_L______________________________ MI_G_2, MI_Gs_2, MI_A_2, MI_As_2, MI_B_2
+// #define __GUITAR_5B_L______________________________ MI_B_2, MI_C_3, MI_Cs_3, MI_D_3, MI_Ds_3
+// #define __GUITAR_6E_L______________________________ MI_E_3, MI_F_3, MI_Fs_3, MI_G_3, MI_Gs_3
+//
+// #define __GUITAR_1E_R______________________________ MI_A_1, MI_As_1, MI_B_1, MI_C_2, MI_Cs_2
+// #define __GUITAR_2A_R______________________________ MI_D_2, MI_Ds_2, MI_E_2, MI_F_2, MI_Fs_2
+// #define __GUITAR_3D_R______________________________ MI_G_2, MI_Gs_2, MI_A_2, MI_As_2, MI_B_2
+// #define __GUITAR_4G_R______________________________ MI_C_3, MI_Cs_3, MI_D_3, MI_Ds_3, MI_E_3
+// #define __GUITAR_5B_R______________________________ MI_E_3, MI_F_3, MI_Fs_3, MI_G_3, MI_Gs_3
+// #define __GUITAR_6E_R______________________________ MI_A_3, MI_As_3, MI_B_3, MI_C_4, MI_Cs_4
+// #endif
+
+
+/* MEDIA
+ * ,----------------------------------.
+ * | AuOn | MiOn | MuOn | Brm+ | Vol+ |
+ * |------+------+------+------+------|
+ * | AuOff| MiOff| MuOff| Brm- | Vol- |
+ * |------+------+------+------+------|
+ * | Play | Stop | Next | Prev | Mute |
+ * `----------------------------------'
+ */
+// What it MUV_IN and MUV_DE (5C2A and B)?
+// https://github.com/qmk/qmk_firmware/blob/7e832e46de26989b81f2fbf58a0f391b2b0c1aaf/quantum/quantum_keycodes.h#L135
+#define __MEDIA_R1_________________________________ AU_ON, MI_ON, MU_ON, KC_BRMU, KC_VOLU
+#define __MEDIA_R2_________________________________ AU_OFF, MI_OFF, MU_OFF, KC_BRMD, KC_VOLD
+#define __MEDIA_R3_________________________________ KC_MPLY, KC_MSTP, KC_MNXT, KC_MPRV, KC_MUTE
+
+
+/* NAV
+ * ,----------------------------------.
+ * | Pg Up| Home | Wh Dn| Wh Up| End |
+ * |------+------+------+------+------|
+ * | Pg Dn| Left | Down | Up | Right|
+ * |------+------+------+------+------|
+ * | xxxx | xxxx | xxxx | xxxx | xxxx |
+ * `----------------------------------'
+ */
+#define __NAV_R1___________________________________ KC_PGUP, KC_HOME, KC_WH_D, KC_WH_U, KC_END
+#define __NAV_R2___________________________________ KC_PGDN, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
+#define __NAV_R3___________________________________ __BLANK_NOOP_______________________________
+
+/* NUMPAD * (alt, alt+shift)
+ * ,----------------------------------. * ,----------------------------------.
+ * | Del | 7 & | 8 * | 9 ( | \ | | * | | ¶ ‡ | • ° | ª · | « » |
+ * |------+------+------+------+------| * |------+------+------+------+------|
+ * | - _ | 4 $ | 5 % | 6 ^ | * | * | – — | ¢ › | ∞ ï¬ | § fl | ° ° |
+ * |------+------+------+------+------| * |------+------+------+------+------|
+ * | = + | 1 ! | 2 @ | 3 # | , | * | ≠ ± | ¡ ℠| ™ € | £ ‹ | ≤ ¯ |
+ * |------+------+------+------+------| * |------+------+------+------+------|
+ * | | 0 ) | . > | | | * | | | º ‚ | | |
+ * `----------------------------------' * `----------------------------------'
+ */
+#define __NUMPAD_R1________________________________ KC_GRV, KC_7, KC_8, KC_9, KC_BSLS
+#define __NUMPAD_R2________________________________ KC_MINS, HR_4, HR_5, HR_6, KC_COMM
+#define __NUMPAD_R3________________________________ KC_EQL, KC_1, KC_2, KC_3, KC_DOT
+#define __NUMPAD_R4________________________________ _______, KC_0, KC_DOT, _______, _______
+
+#define __NUMPAD_R3_ALT____________________________ KC_0, KC_1, KC_2, KC_3, KC_EQ
+
+/* 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 | , | . | / |
+ * `----------------------------------' `----------------------------------'
+ */
+#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
+#define __QWERTY_R3________________________________ KC_N, KC_M, KC_COMM, KC_DOT, KC_SLASH
+
+/* SYMBOLS
+ * ,----------------------------------.
+ * | ~ | ` | ( | ) | |
+ * |------+------+------+------+------|
+ * | LGUI | LALT |LCTL [|LSFT ]| _ - |
+ * |------+------+------+------+------|
+ * | xxxx | xxxx | { | } | LSFT |
+ * `----------------------------------'
+ */
+#define __SYMBOLS_L1_______________________________ KC_TILD, KC_GRV, KC_LPRN, KC_RPRN, XXXXXXX
+#define __SYMBOLS_L2_______________________________ KC_LGUI, KC_LALT, HR_LBRC, HR_RBRC, KC_UNDS
+#define __SYMBOLS_L3_______________________________ XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_LSFT
+
+#define __SYMBOLS_R1_______________________________ KC_TILD, KC_LPRN, KC_RPRN, XXXXXXX, XXXXXXX
+#define __SYMBOLS_R2_______________________________ KC_UNDS, HR_LBRC, HR_RBRC, XXXXXXX, XXXXXXX
+#define __SYMBOLS_R3_______________________________ KC_PLUS, KC_LCBR, KC_RCBR, XXXXXXX, XXXXXXX
+
+/* VIM
+ * -- Roll through ":wq" via transparency
+ * ,----------------------------------.
+ * | Q | W | : | | |
+ * `----------------------------------'
+ */
+#define __VIM_L1___________________________________ _______, _______, KC_COLN, _______, _______
+
+// clang-format on
+// __END__
diff --git a/users/ninjonas/config.h b/users/ninjonas/config.h
index 025dbb541a..565e40e841 100644
--- a/users/ninjonas/config.h
+++ b/users/ninjonas/config.h
@@ -2,6 +2,7 @@
#undef TAPPING_TERM
#define TAPPING_TERM 200
#endif
+#define TAPPING_TERM_PER_KEY
// Mouse Settings: Smoothing out mouse movement on keypress
#ifndef MOUSEKEY_INTERVAL
@@ -18,4 +19,4 @@
#undef COMBO_TERM
#define COMBO_COUNT 5
#define COMBO_TERM 60
-#endif \ No newline at end of file
+#endif
diff --git a/users/ninjonas/oled.c b/users/ninjonas/oled.c
index 55eaf88ccb..73cd50fb8c 100644
--- a/users/ninjonas/oled.c
+++ b/users/ninjonas/oled.c
@@ -23,7 +23,7 @@ bool process_record_oled(uint16_t keycode, keyrecord_t *record) {
void render_layout_state(void) {
oled_write_P(PSTR("Layout: "), false);
- switch (biton32(default_layer_state)) {
+ switch (get_highest_layer(default_layer_state)) {
case _COLEMAK:
oled_write_P(PSTR("Colemak"), false);
break;
@@ -93,7 +93,7 @@ static void render_logo(void) {
bool oled_task_user(void) {
if (timer_elapsed32(oled_timer) > 15000) {
oled_off();
- return;
+ return false;
}
#ifndef SPLIT_KEYBOARD
else { oled_on(); }
diff --git a/users/ninjonas/tap_dances.c b/users/ninjonas/tap_dances.c
index 63e4d3ba47..3e4cec9133 100644
--- a/users/ninjonas/tap_dances.c
+++ b/users/ninjonas/tap_dances.c
@@ -107,6 +107,16 @@ qk_tap_dance_action_t tap_dance_actions[] = {
[TD_GUI_GUISPC] = ACTION_TAP_DANCE_DOUBLE(KC_LGUI, LGUI(KC_SPC)),
// Advanced Tap Dances
- [TD_COPY_PASTE_APP] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, copy_paste_app_finished, copy_paste_app_reset, 300),
- [TD_Y_NUMPAD] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, y_numpad_finished, y_numpad_reset, 300),
-}; \ No newline at end of file
+ [TD_COPY_PASTE_APP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, copy_paste_app_finished, copy_paste_app_reset),
+ [TD_Y_NUMPAD] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, y_numpad_finished, y_numpad_reset),
+};
+
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case TD(TD_COPY_PASTE_APP):
+ case TD(TD_Y_NUMPAD):
+ return 300;
+ default:
+ return TAPPING_TERM;
+ }
+}
diff --git a/users/noroadsleft/noroadsleft.c b/users/noroadsleft/noroadsleft.c
index 28bfa9e6c6..80d18f4026 100644
--- a/users/noroadsleft/noroadsleft.c
+++ b/users/noroadsleft/noroadsleft.c
@@ -1,4 +1,4 @@
-/* Copyright 2020-2021 James Young (@noroadsleft)
+/* Copyright 2020-2022 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
@@ -66,6 +66,12 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
};
return false;
+ case G_PWD:
+ if (record->event.pressed) {
+ clear_mods();
+ SEND_STRING("$( pwd | sed -e 's;^.*/keyboards/;;' -e 's;/;_;g')");
+ };
+ return false;
case M_SALL:
if (record->event.pressed) {
tap_code16(C(KC_A));
diff --git a/users/noroadsleft/noroadsleft.h b/users/noroadsleft/noroadsleft.h
index 12bb5b465a..1d1a547562 100644
--- a/users/noroadsleft/noroadsleft.h
+++ b/users/noroadsleft/noroadsleft.h
@@ -1,4 +1,4 @@
-/* Copyright 2020-2021 James Young (@noroadsleft)
+/* Copyright 2020-2022 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
@@ -25,6 +25,7 @@ enum userspace_keycodes {
G_PUSH,
G_FTCH,
G_BRCH,
+ G_PWD,
M_SALL,
M_UNDO,
M_CUT,
diff --git a/users/noroadsleft/readme.md b/users/noroadsleft/readme.md
index e8279c0333..d32e66917f 100644
--- a/users/noroadsleft/readme.md
+++ b/users/noroadsleft/readme.md
@@ -19,25 +19,28 @@ Outputs a string that tells me the Git commit from which my flashed firmware was
Some frequently used Git commands.
-| Keycode | Output | Output with <kbd>Shift</kbd> |
-| :---------------------------------- | :--------------------- | :--------------------------- |
-| [`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)` |
+| Keycode | Output | Output with <kbd>Shift</kbd> |
+| :---------------------------------- | :---------------------------------------------------- | :---------------------------------------------------- |
+| [`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)` |
+| [`G_PWD`](./noroadsleft.c#L69-L74) | `$( pwd \| sed -e 's;^.*/keyboards/;;' -e 's;/;_;g')` | `$( pwd \| sed -e 's;^.*/keyboards/;;' -e 's;/;_;g')` |
`$(git branch-name)` is an alias for `git rev-parse --abbrev-ref HEAD`, which normally returns the name of the current branch.
+The `G_PWD` macro outputs a shell expansion that returns the current working directory in relation to `qmk_firmware/keyboards/`, and with the slashes replaced with underscores. I do a lot of keyboard refactoring in QMK, and this is a string I use regularly.
+
### Customized Keycodes
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 | 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` |
+| [`M_SALL`](./noroadsleft.c#L75-L79) | `Ctrl+A` |
+| [`M_UNDO`](./noroadsleft.c#L80-L88) | `Ctrl+Z` |
+| [`M_CUT`](./noroadsleft.c#L89-L93) | `Ctrl+X` |
+| [`M_COPY`](./noroadsleft.c#L94-L98) | `Ctrl+C` |
+| [`M_PASTE`](./noroadsleft.c#L99-L107) | `Ctrl+V` |
### [Emulated Non-US Backslash](./noroadsleft.c#L27-L37)
@@ -47,18 +50,18 @@ This macro simulates the Non-US Backslash key if I hold Right Alt and tap the ke
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#L102-L116)
+### [Emulated Numeric Keypad](./noroadsleft.c#L108-L122)
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#L117-L131)
+### [Emulated Extended Function Keys](./noroadsleft.c#L123-L137)
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`.
## License
-Copyright 2020-2021 James Young (@noroadsleft)
+Copyright 2020-2022 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
diff --git a/users/ollyhayes/ollyhayes.c b/users/ollyhayes/ollyhayes.c
new file mode 100644
index 0000000000..6dfd61b263
--- /dev/null
+++ b/users/ollyhayes/ollyhayes.c
@@ -0,0 +1,153 @@
+/* Copyright 2022 Olly Hayes (@ollyhayes)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "ollyhayes.h"
+
+#ifdef VIRTSER_ENABLE
+# include "virtser.h"
+#endif
+
+layer_state_t default_layer_state_set_kb(layer_state_t state) {
+ if (layer_state_cmp(state, BASE)) {
+ rgb_matrix_mode(3);
+ } else if (layer_state_cmp(state, GAMES)) {
+ rgb_matrix_mode(1);
+ }
+ return state;
+}
+
+uint16_t key_presses = 0;
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ // for tab/number layer switch
+ static bool key_pressed_since_switch = false;
+ static uint16_t switch_down_time = 0;
+
+ // for alt-tab on punc layer
+ static bool alt_tab_used = false;
+
+ // for capital umlauts
+ static bool shift_held = false;
+
+#ifdef VIRTSER_ENABLE
+ if (record->event.pressed) {
+ uint8_t key_index = 40 + record->event.key.col + record->event.key.row * 6;
+ virtser_send(key_index);
+ } else {
+ uint8_t key_index = 90 + record->event.key.col + record->event.key.row * 6;
+ virtser_send(key_index);
+ }
+#endif
+
+ if (record->event.pressed) {
+ key_pressed_since_switch = true;
+ key_presses++;
+ }
+
+ switch (keycode) {
+ case UP4:
+ if (record->event.pressed) {
+ tap_code(KC_UP);
+ tap_code(KC_UP);
+ tap_code(KC_UP);
+ tap_code(KC_UP);
+ return false;
+ }
+ break;
+
+ case DOWN4:
+ if (record->event.pressed) {
+ tap_code(KC_DOWN);
+ tap_code(KC_DOWN);
+ tap_code(KC_DOWN);
+ tap_code(KC_DOWN);
+ return false;
+ }
+ break;
+
+ case NUM_SWITCH:
+ if (record->event.pressed) {
+ layer_on(NUM);
+ key_pressed_since_switch = false;
+ switch_down_time = timer_read();
+ } else {
+ layer_off(NUM);
+
+ if (!key_pressed_since_switch && timer_elapsed(switch_down_time) < 200) {
+ tap_code(KC_TAB);
+ }
+ }
+ return false;
+
+ case MO(PUNC):
+ if (!record->event.pressed) {
+ if (alt_tab_used) {
+ unregister_code(KC_LALT);
+ alt_tab_used = false;
+ }
+ }
+ return true;
+
+ case MO(FUNCTIONS):
+ if (!record->event.pressed) {
+ // if NUM_SWITCH has been lifted first, toggle to that layer
+ // (4 = 2^NUM)
+ if ((layer_state & 4) != 0) {
+ layer_on(FUNCTIONS);
+ return false;
+ }
+ }
+ return true;
+
+ case ALTTAB:
+ if (record->event.pressed) {
+ alt_tab_used = true;
+ register_code(KC_LALT);
+ tap_code(KC_TAB);
+ }
+ return false;
+
+ case KC_LSFT:
+ case KC_RSFT:
+ shift_held = record->event.pressed;
+ break;
+
+ case A_UMLAUT:
+ if (record->event.pressed) {
+ if (shift_held)
+ register_unicode(0x00c4);
+ else
+ register_unicode(0x00e4);
+ }
+ break;
+ case O_UMLAUT:
+ if (record->event.pressed) {
+ if (shift_held)
+ register_unicode(0x00d6);
+ else
+ register_unicode(0x00f6);
+ }
+ break;
+ case U_UMLAUT:
+ if (record->event.pressed) {
+ if (shift_held)
+ register_unicode(0x00dc);
+ else
+ register_unicode(0x00fc);
+ }
+ break;
+ }
+ return true;
+}
diff --git a/users/ollyhayes/ollyhayes.h b/users/ollyhayes/ollyhayes.h
new file mode 100644
index 0000000000..c65422937c
--- /dev/null
+++ b/users/ollyhayes/ollyhayes.h
@@ -0,0 +1,41 @@
+/* Copyright 2022 Olly Hayes (@ollyhayes)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received 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,
+ QWERTY,
+ GAMES,
+ NUM,
+ FUNCTIONS,
+ ARR,
+ PUNC,
+ DUBPUNC,
+ MEDIA,
+};
+
+enum custom_keycodes {
+ DOWN4 = SAFE_RANGE,
+ UP4,
+ NUM_SWITCH,
+ ALTTAB,
+ A_UMLAUT,
+ O_UMLAUT,
+ U_UMLAUT,
+};
+
+extern uint16_t key_presses;
diff --git a/users/ollyhayes/rules.mk b/users/ollyhayes/rules.mk
new file mode 100644
index 0000000000..27752a5dee
--- /dev/null
+++ b/users/ollyhayes/rules.mk
@@ -0,0 +1 @@
+SRC += ollyhayes.c
diff --git a/users/pcewing/README.md b/users/pcewing/README.md
new file mode 100644
index 0000000000..0073b4f492
--- /dev/null
+++ b/users/pcewing/README.md
@@ -0,0 +1,85 @@
+# User Space Code for Paul Ewing
+
+This folder contains my user space code.
+
+## Key Repeater
+
+I've implemented a key repeater utility in [./key_repeater.h](./key_repeater.h)
+and [./key_repeater.c](./key_repeater.c) that is similar in concept to the
+"rapid fire" feature many game controllers come with. The intent behind this is
+that the user can hold down a key and while it is pressed, a keycode will be
+repeatedly sent. I have found this useful in certain games and during game
+development.
+
+The duration of the key press as well as the time between key presses is
+slightly randomized by design. This is to simulate more realistic human
+behavior. By setting the minimum and maximum duration fields to the same value
+in the configuration, this randomization can be disabled.
+
+**Note:** Please be aware that this might be against the terms of service in
+certain games so use your own discretion before using this feature.
+
+### How to Use
+
+Define the repeater and then configure and allocate it in your keymap's
+initialization process:
+
+```c
+static struct key_repeater_t* click_repeater = NULL;
+
+void keyboard_post_init_user(void) {
+ // Seed the random number generator which is used by the key repeater
+ srand(timer_read32());
+
+ // Configure and instantiate a key repeater for mouse button 1 "rapid fire"
+ struct key_repeater_config_t cfg = {
+ .key = KC_BTN1, // Press mouse button 1 (Left click)
+ .key_duration_min = 20, // Press key for 20 to 50 milliseconds
+ .key_duration_max = 50,
+ .wait_duration_min = 90, // Wait for 90 to 140 milliseconds before pressing again
+ .wait_duration_max = 140,
+ };
+
+ click_repeater = kr_new(&cfg);
+}
+```
+
+Make sure the key repeater is polled during matrix scanning:
+
+```c
+void matrix_scan_user(void) {
+ kr_poll(click_repeater);
+}
+```
+
+Define a custom keycode that will enable/disable the repeater:
+
+```c
+enum {
+ RP_BTN1 = SAFE_RANGE, // Click repeatedly while key is held
+};
+```
+
+Assign the keycode to a key in your `LAYOUT(...)` macro.
+
+Define the logic to enable/disable the repeater when the custom keycode is
+pressed or released:
+
+```c
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case RP_BTN1:
+ if (record->event.pressed) {
+ kr_enable(click_repeater);
+ } else {
+ kr_disable(click_repeater);
+ }
+ return false;
+ default:
+ return true;
+ }
+}
+```
+
+For a full working example in own of my own keymaps, see:
+[keyboards/cozykeys/speedo/v3/keymaps/pcewing/keymap.c](../../keyboards/cozykeys/speedo/v3/keymaps/pcewing/keymap.c)
diff --git a/users/pcewing/key_repeater.c b/users/pcewing/key_repeater.c
new file mode 100644
index 0000000000..6c77d45b5f
--- /dev/null
+++ b/users/pcewing/key_repeater.c
@@ -0,0 +1,168 @@
+/*
+ * Copyright 2022 Paul Ewing
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "key_repeater.h"
+#include <stdlib.h>
+#include QMK_KEYBOARD_H
+
+enum key_repeater_state {
+ KR_DISABLED,
+ KR_WAITING,
+ KR_BUTTON_DOWN,
+
+ __KR_STATE_COUNT
+};
+
+struct key_repeater_t {
+ int key;
+ uint32_t key_duration_min;
+ uint32_t key_duration_max;
+ uint32_t wait_duration_min;
+ uint32_t wait_duration_max;
+
+ enum key_repeater_state state;
+ uint32_t previous_button_down;
+ uint32_t previous_button_up;
+ uint32_t key_duration;
+ uint32_t wait_duration;
+};
+
+// Utility functions
+uint32_t get_rand(uint32_t min, uint32_t max);
+
+// State handler function table
+void kr_waiting(struct key_repeater_t *kr);
+void kr_button_down(struct key_repeater_t *kr);
+
+typedef void (*kr_state_handler)(struct key_repeater_t *kr);
+static kr_state_handler kr_state_handlers[] = {
+ [KR_DISABLED] = NULL,
+ [KR_WAITING] = kr_waiting,
+ [KR_BUTTON_DOWN] = kr_button_down,
+};
+
+struct key_repeater_t* kr_new(struct key_repeater_config_t* cfg) {
+ struct key_repeater_t* kr = (struct key_repeater_t*)malloc(sizeof(struct key_repeater_t));
+
+ if (cfg) {
+ kr->key = cfg->key;
+ kr->key_duration_min = cfg->key_duration_min;
+ kr->key_duration_max = cfg->key_duration_max;
+ kr->wait_duration_min = cfg->wait_duration_min;
+ kr->wait_duration_max = cfg->wait_duration_max;
+ } else {
+ kr->key = KC_NO;
+ kr->key_duration_min = 0;
+ kr->key_duration_max = 0;
+ kr->wait_duration_min = 0;
+ kr->wait_duration_max = 0;
+ }
+
+ kr->state = KR_DISABLED;
+ kr->previous_button_down = 0;
+ kr->previous_button_up = 0;
+ kr->key_duration = 0;
+ kr->wait_duration = 0;
+
+ return kr;
+}
+
+void kr_free(struct key_repeater_t **kr) {
+ if (kr && *kr) {
+ free(*kr);
+ *kr = NULL;
+ }
+}
+
+void kr_enable(struct key_repeater_t *kr) {
+ if (!kr || kr->key == KC_NO) {
+ return;
+ }
+
+ if (kr->state != KR_DISABLED) {
+ return;
+ }
+ kr->state = KR_WAITING;
+ kr->previous_button_down = 0;
+ kr->previous_button_up = 0;
+ kr->key_duration = 0;
+ kr->wait_duration = 0;
+}
+
+void kr_disable(struct key_repeater_t *kr) {
+ if (!kr || kr->key == KC_NO) {
+ return;
+ }
+
+ if (kr->state == KR_BUTTON_DOWN) {
+ unregister_code(kr->key);
+ }
+ kr->state = KR_DISABLED;
+}
+
+void kr_poll(struct key_repeater_t *kr) {
+ if (!kr || kr->key == KC_NO) {
+ return;
+ }
+
+ kr_state_handler handler = kr_state_handlers[kr->state];
+ if (handler) {
+ (handler)(kr);
+ }
+}
+
+void kr_waiting(struct key_repeater_t *kr) {
+ if (!kr || kr->key == KC_NO) {
+ return;
+ }
+
+ uint32_t now = timer_read32();
+ if (now > (kr->previous_button_up + kr->wait_duration)) {
+ kr->state = KR_BUTTON_DOWN;
+ kr->previous_button_down = now;
+ if (kr->key_duration_min == kr->key_duration_max) {
+ kr->key_duration = kr->key_duration_min;
+ } else {
+ kr->key_duration = get_rand(kr->key_duration_min, kr->key_duration_max);
+ }
+ register_code(kr->key);
+ }
+}
+
+void kr_button_down(struct key_repeater_t *kr) {
+ if (!kr || kr->key == KC_NO) {
+ return;
+ }
+
+ uint32_t now = timer_read32();
+ if (now > (kr->previous_button_down + kr->key_duration)) {
+ kr->state = KR_WAITING;
+ kr->previous_button_up = now;
+ if (kr->wait_duration_min == kr->wait_duration_max) {
+ kr->wait_duration = kr->wait_duration_min;
+ } else {
+ kr->wait_duration = get_rand(kr->wait_duration_min, kr->wait_duration_max);
+ }
+ unregister_code(kr->key);
+ }
+}
+
+// Return a random number between min and max; assumes that the random number
+// generator has already been seeded
+uint32_t get_rand(uint32_t min, uint32_t max) {
+ return (rand() % (max - min)) + min;
+}
diff --git a/users/pcewing/key_repeater.h b/users/pcewing/key_repeater.h
new file mode 100644
index 0000000000..30b7f748ff
--- /dev/null
+++ b/users/pcewing/key_repeater.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2022 Paul Ewing
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should 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 key_repeater_config_t type holds user configurable options set when
+// allocating a new key repeater.
+struct key_repeater_config_t {
+ // The key code that will be repeatedly registered
+ int key;
+
+ // The minimum amount of time to press down the key when registered
+ const uint32_t key_duration_min;
+
+ // The maximum amount of time to press down the key when registered
+ const uint32_t key_duration_max;
+
+ // The minimum amount of time to wait between registering key presses
+ const uint32_t wait_duration_min;
+
+ // The maximum amount of time to wait between registering key presses
+ const uint32_t wait_duration_max;
+};
+
+// The key_repeater_t type represents a key repeater. This is similar to the
+// "Rapid fire" feature on many game controllers. The intention behind this is
+// to periodically send a key code while the user is pressing a key.
+//
+// The duration of the key press as well as the time between key presses is
+// slightly randomized by design. This is to simulate more realistic human
+// behavior. By setting the minimum and maximum duration fields to the same
+// value in the configuration, this randomization can be disabled.
+//
+// This type is intentionally opaque to avoid the user setting internal fields
+// directly. It must be allocated and destroyed using the kr_new() and
+// kr_free() functions respectively.
+struct key_repeater_t;
+
+// Allocate a new key repeater.
+struct key_repeater_t* kr_new(struct key_repeater_config_t* cfg);
+
+// Release an allocated key repeater.
+void kr_free(struct key_repeater_t** kr);
+
+// Enable the key repeater such that it will start periodically registering the
+// configured key code.
+void kr_enable(struct key_repeater_t* kr);
+
+// Disable the key repeater such that it will stop periodically registering the
+// configured key code.
+void kr_disable(struct key_repeater_t* kr);
+
+// Poll the key repeater to execute, tyically called from matrix_scan_user().
+void kr_poll(struct key_repeater_t* kr);
diff --git a/users/pcewing/rules.mk b/users/pcewing/rules.mk
new file mode 100644
index 0000000000..35d0bc3ab7
--- /dev/null
+++ b/users/pcewing/rules.mk
@@ -0,0 +1 @@
+SRC += key_repeater.c
diff --git a/users/pvinis/pvinis.c b/users/pvinis/pvinis.c
index 71f9210aec..96b01bb461 100644
--- a/users/pvinis/pvinis.c
+++ b/users/pvinis/pvinis.c
@@ -95,4 +95,4 @@ void keyboard_post_init_user(void) {
// Default functions.
__attribute__((weak)) void keyboard_post_init_user_keymap(void) {}
-__attribute__((weak)) uint32_t layer_state_set_user_keymap(uint32_t state) { return state; }
+__attribute__((weak)) layer_state_t layer_state_set_user_keymap(layer_state_t state) { return state; }
diff --git a/users/pvinis/pvinis.h b/users/pvinis/pvinis.h
index c50033a440..5a11a6cb6f 100644
--- a/users/pvinis/pvinis.h
+++ b/users/pvinis/pvinis.h
@@ -169,4 +169,4 @@ enum {
// Extra stuff that might be needed.
void keyboard_post_init_user_keymap(void);
-uint32_t layer_state_set_user_keymap(uint32_t state);
+layer_state_t layer_state_set_user_keymap(layer_state_t state);
diff --git a/users/romus/romus.c b/users/romus/romus.c
index f707bb8843..a41a6df578 100644
--- a/users/romus/romus.c
+++ b/users/romus/romus.c
@@ -59,7 +59,7 @@ __attribute__ ((weak)) void matrix_scan_keymap(void) { }
__attribute__ ((weak)) bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
return true;
}
-__attribute__ ((weak)) uint32_t layer_state_set_keymap (uint32_t state) {
+__attribute__ ((weak)) layer_state_t layer_state_set_keymap (layer_state_t state) {
return state;
}
__attribute__ ((weak)) void led_set_keymap(uint8_t usb_led) { }
@@ -551,7 +551,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
state = layer_state_set_keymap (state);
#ifdef RGBLIGHT_ENABLE
// Change RGB lighting depending on the last layer activated
- rgblight_change( biton32(state) );
+ rgblight_change( get_highest_layer(state) );
#endif
return state;
}
diff --git a/users/sigma/sigma.c b/users/sigma/sigma.c
index 527925a63f..8470060a53 100644
--- a/users/sigma/sigma.c
+++ b/users/sigma/sigma.c
@@ -49,12 +49,12 @@ bool process_record_secrets(uint16_t keycode, keyrecord_t *record) {
__attribute__ ((weak))
-uint32_t layer_state_set_keymap (uint32_t state) {
+layer_state_t layer_state_set_keymap (layer_state_t state) {
return state;
}
__attribute__ ((weak))
-uint32_t default_layer_state_set_keymap (uint32_t state) {
+layer_state_t default_layer_state_set_keymap (layer_state_t state) {
return state;
}
diff --git a/users/spidey3/config.h b/users/spidey3/config.h
index f5f5e07f0f..91bcf910ee 100644
--- a/users/spidey3/config.h
+++ b/users/spidey3/config.h
@@ -1,26 +1,51 @@
+// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#pragma once
#define LED_DISABLE_WHEN_USB_SUSPENDED
#define RGB_DISABLE_WHEN_USB_SUSPENDED
-#define RGBLIGHT_LAYERS
-#define RGBLIGHT_MAX_LAYERS 17
-#define RGBLIGHT_LAYER_BLINK
-#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
-#define RGBLIGHT_STARTUP_ANIMATION
-
-#undef RGBLIGHT_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_STATIC_GRADIENT
-#define RGBLIGHT_EFFECT_ALTERNATING
-#define RGBLIGHT_EFFECT_TWINKLE
-
-#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX, UC_WINC
+
+#ifdef RGBLIGHT_ENABLE
+
+# define RGBLIGHT_LAYERS
+# define RGBLIGHT_MAX_LAYERS 18
+# define RGBLIGHT_LAYER_BLINK
+# define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
+# define RGBLIGHT_STARTUP_ANIMATION
+
+# undef RGBLIGHT_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_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_TWINKLE
+
+# define RGBLIGHT_DEFAULT_HUE 213
+# define RGBLIGHT_DEFAULT_SAT UINT8_MAX
+# define RGBLIGHT_DEFAULT_VAL RGBLIGHT_LIMIT_VAL / 2
+
+# if defined(RGBLIGHT_EFFECT_TWINKLE)
+# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_TWINKLE
+# elif defined(RGBLIGHT_EFFECT_RAINBOW_MOOD)
+# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_MOOD
+# else
+# define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_STATIC_LIGHT
+# endif
+
+#endif
+
+#define UNICODE_SELECTED_MODES UC_MAC, UC_LNX, UC_WINC, UC_EMACS
#define SPI_DEBUG_SCAN_RATE
#undef MANUFACTURER
#define MANUFACTURER Window of Fire
+
+// Some keyboards enable BACKLIGHT_CAPS_LOCK without checking if backlight is enabled.
+// Undef as appropriate to avoid compiler warnings in that case.
+#ifndef BACKLIGHT_ENABLE
+#undef BACKLIGHT_CAPS_LOCK
+#endif
diff --git a/users/spidey3/init.c b/users/spidey3/init.c
index 8db41a5f4c..bd6ea5cac9 100644
--- a/users/spidey3/init.c
+++ b/users/spidey3/init.c
@@ -1,3 +1,6 @@
+// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include "spidey3.h"
void keyboard_post_init_user(void) {
@@ -7,15 +10,10 @@ void keyboard_post_init_user(void) {
}
void eeconfig_init_user(void) {
- print("eeconfig_init_user\n");
set_single_persistent_default_layer(_BASE);
#ifdef UNICODEMAP_ENABLE
eeconfig_init_user_unicode();
#endif
-
-#ifdef RGBLIGHT_ENABLE
- eeconfig_init_user_rgb();
-#endif
}
#ifdef RGBLIGHT_ENABLE
diff --git a/users/spidey3/layer_rgb.c b/users/spidey3/layer_rgb.c
index 37e59579cf..c867468194 100644
--- a/users/spidey3/layer_rgb.c
+++ b/users/spidey3/layer_rgb.c
@@ -1,3 +1,6 @@
+// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
#include "spidey3.h"
@@ -13,21 +16,15 @@ bool rgb_saved = 0;
extern bool spi_gflock;
extern uint16_t spi_replace_mode;
-void spidey_glow(void) {
+static void set_rgb_default(void) {
rgblight_enable();
- rgblight_sethsv(213, 255, 128);
- if ((RGBLIGHT_MODE_TWINKLE <= rgblight_get_mode()) && (rgblight_get_mode() < RGBLIGHT_MODE_TWINKLE_end)) {
- rgblight_step();
- } else {
- rgblight_mode(RGBLIGHT_MODE_TWINKLE);
- }
+ rgblight_sethsv(RGBLIGHT_DEFAULT_HUE, RGBLIGHT_DEFAULT_SAT, RGBLIGHT_DEFAULT_VAL);
+ rgblight_mode(RGBLIGHT_DEFAULT_MODE);
#ifdef VELOCIKEY_ENABLE
if (velocikey_enabled()) velocikey_toggle();
#endif
}
-void eeconfig_init_user_rgb(void) { spidey_glow(); }
-
// clang-format off
// Convenience macros
@@ -68,6 +65,7 @@ const rgblight_segment_t PROGMEM _uc_mac_layer[] = RGBLIGHT_LAYER_SEGMENTS(CORN
// UC_WIN disabled in config.h
// UC_BSD not implemented
const rgblight_segment_t PROGMEM _uc_winc_layer[] = RGBLIGHT_LAYER_SEGMENTS(CORNER_BR(HSV_CYAN));
+const rgblight_segment_t PROGMEM _uc_emacs_layer[] = RGBLIGHT_LAYER_SEGMENTS(CORNER_BR(HSV_GREEN));
// Now define the array of layers. Higher numbered layers take precedence.
const rgblight_segment_t *const PROGMEM _rgb_layers[] = {
@@ -92,6 +90,7 @@ const rgblight_segment_t *const PROGMEM _rgb_layers[] = {
[UNICODE_OFFSET + UC_WIN] = _none,
[UNICODE_OFFSET + UC_BSD] = _none,
[UNICODE_OFFSET + UC_WINC] = _uc_winc_layer,
+ [UNICODE_OFFSET + UC_EMACS] = _uc_emacs_layer,
[UNICODE_OFFSET + UC__COUNT] = NULL
};
@@ -101,7 +100,6 @@ const rgblight_segment_t *const PROGMEM _rgb_layers[] = {
const uint8_t PROGMEM _n_rgb_layers = sizeof(_rgb_layers) / sizeof(_rgb_layers[0]) - 1;
void clear_rgb_layers() {
- dprint("clear_rgb_layers()\n");
for (uint8_t i = 0; i < _n_rgb_layers; i++) {
rgblight_set_layer_state(i, false);
}
@@ -110,7 +108,6 @@ void clear_rgb_layers() {
void do_rgb_layers(layer_state_t state, uint8_t start, uint8_t end) {
for (uint8_t i = start; i < end; i++) {
bool is_on = layer_state_cmp(state, i);
- dprintf("layer[%u]=rl[%u]=%u\n", i, LAYER_OFFSET + i, is_on);
rgblight_set_layer_state(LAYER_OFFSET + i, is_on);
}
}
@@ -119,7 +116,6 @@ void do_rgb_unicode(void) {
uint8_t uc_mode = get_unicode_input_mode();
for (uint8_t i = 0; i < UC__COUNT; i++) {
bool is_on = i == uc_mode;
- dprintf("unicode[%u]=rl[%u]=%u\n", i, UNICODE_OFFSET + i, is_on);
rgblight_set_layer_state(UNICODE_OFFSET + i, is_on);
}
}
@@ -138,7 +134,7 @@ int8_t change_sat = 0;
int8_t change_val = 0;
// timer to control color change speed
-uint16_t change_timer = 0;
+uint16_t change_timer = 0;
const uint16_t change_tick = 15;
extern rgblight_config_t rgblight_config;
@@ -146,14 +142,15 @@ extern rgblight_status_t rgblight_status;
#if defined(RGBLIGHT_STARTUP_ANIMATION)
-#define STARTUP_ANIMATION_SATURATION 200
-#define STARTUP_ANIMATION_VALUE 255
-#define STARTUP_ANIMATION_FADE_STEP 5
-#define STARTUP_ANIMATION_CYCLE_STEP 2
-#define STARTUP_ANIMATION_RAMP_TO_STEPS 70
-#define STARTUP_ANIMATION_STEP_TIME 10
-#define STARTUP_ANIMATION_INITIAL_DELAY 0 // milliseconds, must be < 255 * STEP_TIME
+# define STARTUP_ANIMATION_SATURATION 200
+# define STARTUP_ANIMATION_VALUE 255
+# define STARTUP_ANIMATION_FADE_STEP 5
+# define STARTUP_ANIMATION_CYCLE_STEP 2
+# define STARTUP_ANIMATION_RAMP_TO_STEPS 70
+# define STARTUP_ANIMATION_STEP_TIME 10
+# define STARTUP_ANIMATION_INITIAL_DELAY 0 // milliseconds, must be < 255 * STEP_TIME
+// clang-format off
typedef enum {
DISABLED,
WAITING,
@@ -167,18 +164,18 @@ typedef enum {
CLEAN_UP,
DONE
} startup_animation_state_t;
+// clang-format on
-static rgblight_config_t old_config;
-static uint8_t old_base_mode;
+static rgblight_config_t old_config;
+static uint8_t old_base_mode;
static startup_animation_state_t startup_animation_state = DISABLED;
-static uint16_t rgblight_startup_loop_timer;
+static uint16_t rgblight_startup_loop_timer;
void startup_animation_init(void) {
old_config.raw = rgblight_config.raw;
old_base_mode = rgblight_status.base_mode;
- if (!old_config.enable)
- rgblight_enable_noeeprom();
+ if (!old_config.enable) rgblight_enable_noeeprom();
}
#endif
@@ -202,9 +199,9 @@ void matrix_scan_user_rgb(void) {
switch (startup_animation_state) {
case WAITING:
-#ifdef STARTUP_ANIMATION_DEBUG
+# ifdef STARTUP_ANIMATION_DEBUG
dprintf("sua WAITING counter=%u\n", counter);
-#endif
+# endif
if (counter < STARTUP_ANIMATION_INITIAL_DELAY / STARTUP_ANIMATION_STEP_TIME) {
counter++;
} else {
@@ -213,83 +210,87 @@ void matrix_scan_user_rgb(void) {
break;
case RESTART:
+# ifdef STARTUP_ANIMATION_DEBUG
dprintln("sua RESTART");
+# endif
startup_animation_init();
case START:
+# ifdef STARTUP_ANIMATION_DEBUG
dprintln("sua START");
+# endif
startup_animation_state = FADE_OLD;
- counter = old_config.val;
+ counter = old_config.val;
// No break! Just roll into FADE_OLD in the same iteration...
case FADE_OLD:
-#ifdef STARTUP_ANIMATION_DEBUG
+# ifdef STARTUP_ANIMATION_DEBUG
dprintf("sua FADE_OLD counter=%u\n", counter);
-#endif
+# endif
if (counter >= STARTUP_ANIMATION_FADE_STEP) {
rgblight_sethsv_noeeprom(old_config.hue, old_config.sat, counter);
counter -= STARTUP_ANIMATION_FADE_STEP;
} else {
- counter = 0;
+ counter = 0;
startup_animation_state = FADE_IN;
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
}
break;
case FADE_IN:
-#ifdef STARTUP_ANIMATION_DEBUG
+# ifdef STARTUP_ANIMATION_DEBUG
dprintf("sua FADE_IN counter=%u\n", counter);
-#endif
+# endif
if (counter < STARTUP_ANIMATION_VALUE) {
rgblight_sethsv_noeeprom(old_config.hue, STARTUP_ANIMATION_SATURATION, counter);
counter += STARTUP_ANIMATION_FADE_STEP;
} else {
- counter = 255;
+ counter = 255;
startup_animation_state = CYCLE;
}
break;
case CYCLE:
-#ifdef STARTUP_ANIMATION_DEBUG
+# ifdef STARTUP_ANIMATION_DEBUG
dprintf("sua CYCLE counter=%u\n", counter);
-#endif
+# endif
if (counter >= STARTUP_ANIMATION_CYCLE_STEP) {
rgblight_sethsv_noeeprom((counter + old_config.hue) % 255, STARTUP_ANIMATION_SATURATION, STARTUP_ANIMATION_VALUE);
counter -= STARTUP_ANIMATION_CYCLE_STEP;
} else {
if (
-#ifdef RGBLIGHT_EFFECT_BREATHING
+# ifdef RGBLIGHT_EFFECT_BREATHING
(old_base_mode == RGBLIGHT_MODE_BREATHING) ||
-#endif
-#ifdef RGBLIGHT_EFFECT_SNAKE
+# endif
+# ifdef RGBLIGHT_EFFECT_SNAKE
(old_base_mode == RGBLIGHT_MODE_SNAKE) ||
-#endif
-#ifdef RGBLIGHT_EFFECT_KNIGHT
+# endif
+# ifdef RGBLIGHT_EFFECT_KNIGHT
(old_base_mode == RGBLIGHT_MODE_KNIGHT) ||
-#endif
-#ifdef RGBLIGHT_EFFECT_TWINKLE
+# endif
+# ifdef RGBLIGHT_EFFECT_TWINKLE
(old_base_mode == RGBLIGHT_MODE_TWINKLE) ||
-#endif
+# endif
!old_config.enable) {
- counter = STARTUP_ANIMATION_VALUE;
+ counter = STARTUP_ANIMATION_VALUE;
startup_animation_state = RAMP_DOWN;
} else if (
-#ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT
+# ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT
(old_base_mode == RGBLIGHT_MODE_STATIC_GRADIENT) ||
-#endif
-#ifdef RGBLIGHT_EFFECT_RAINBOW_MOOD
+# endif
+# ifdef RGBLIGHT_EFFECT_RAINBOW_MOOD
(old_base_mode == RGBLIGHT_MODE_RAINBOW_MOOD) ||
-#endif
-#ifdef RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# endif
+# ifdef RGBLIGHT_EFFECT_RAINBOW_SWIRL
(old_base_mode == RGBLIGHT_MODE_RAINBOW_SWIRL) ||
-#endif
-#ifdef RGBLIGHT_EFFECT_RAINBOW_CHRISTMAS
+# endif
+# ifdef RGBLIGHT_EFFECT_RAINBOW_CHRISTMAS
(old_base_mode == RGBLIGHT_MODE_CHRISTMAS) ||
-#endif
-#ifdef RGBLIGHT_EFFECT_RAINBOW_RGB_TEST_
+# endif
+# ifdef RGBLIGHT_EFFECT_RAINBOW_RGB_TEST
(old_base_mode == RGBLIGHT_MODE_RGB_TEST) ||
-#endif
+# endif
(old_base_mode == RGBLIGHT_MODE_STATIC_LIGHT)) {
- counter = 0;
+ counter = 0;
startup_animation_state = RAMP_TO;
} else {
startup_animation_state = CLEAN_UP;
@@ -298,39 +299,41 @@ void matrix_scan_user_rgb(void) {
break;
case RAMP_DOWN:
-#ifdef STARTUP_ANIMATION_DEBUG
+# ifdef STARTUP_ANIMATION_DEBUG
dprintf("sua RAMP_DOWN counter=%u\n", counter);
-#endif
+# endif
+ rgblight_sethsv_noeeprom(old_config.hue, STARTUP_ANIMATION_SATURATION, counter);
if (counter >= STARTUP_ANIMATION_FADE_STEP) {
- rgblight_sethsv_noeeprom(old_config.hue, STARTUP_ANIMATION_SATURATION, counter);
counter -= STARTUP_ANIMATION_FADE_STEP;
} else {
startup_animation_state = CLEAN_UP;
}
break;
- case RAMP_TO:
- {
-#ifdef STARTUP_ANIMATION_DEBUG
- dprintf("sua RAMP_TO s=%u, v=%u, counter=%u\n", old_config.sat, old_config.val, counter);
-#endif
- uint8_t steps = STARTUP_ANIMATION_RAMP_TO_STEPS;
- if (counter < steps) {
- uint8_t s = STARTUP_ANIMATION_SATURATION + counter * (((float)old_config.sat - STARTUP_ANIMATION_SATURATION) / (float)steps);
- uint8_t v = STARTUP_ANIMATION_VALUE + counter * (((float)old_config.val - STARTUP_ANIMATION_VALUE) / (float)steps);
- rgblight_sethsv_noeeprom(old_config.hue, s, v);
- counter++;
- } else {
- startup_animation_state = CLEAN_UP;
- }
+ case RAMP_TO: {
+# ifdef STARTUP_ANIMATION_DEBUG
+ dprintf("sua RAMP_TO s=%u, v=%u, counter=%u\n", old_config.sat, old_config.val, counter);
+# endif
+ uint8_t steps = STARTUP_ANIMATION_RAMP_TO_STEPS;
+ if (counter < steps) {
+ uint8_t s = STARTUP_ANIMATION_SATURATION + counter * (((float)old_config.sat - STARTUP_ANIMATION_SATURATION) / (float)steps);
+ uint8_t v = STARTUP_ANIMATION_VALUE + counter * (((float)old_config.val - STARTUP_ANIMATION_VALUE) / (float)steps);
+ rgblight_sethsv_noeeprom(old_config.hue, s, v);
+ counter++;
+ } else {
+ startup_animation_state = CLEAN_UP;
}
- break;
+ } break;
case CLEAN_UP:
+# ifdef STARTUP_ANIMATION_DEBUG
dprintln("sua CLEAN_UP");
+# endif
rgblight_reload_from_eeprom();
startup_animation_state = DONE;
+# ifdef STARTUP_ANIMATION_DEBUG
dprintln("sua DONE");
+# endif
break;
default:
@@ -344,8 +347,8 @@ void matrix_scan_user_rgb(void) {
if (timer_elapsed(change_timer) > change_tick) {
HSV hsv = rgblight_get_hsv();
hsv.h += change_hue;
- hsv.s = change_sat > 0 ? qadd8(hsv.s, (uint8_t) change_sat) : qsub8(hsv.s, (uint8_t) -change_sat);
- hsv.v = change_val > 0 ? qadd8(hsv.v, (uint8_t) change_val) : qsub8(hsv.v, (uint8_t) -change_val);
+ hsv.s = change_sat > 0 ? qadd8(hsv.s, (uint8_t)change_sat) : qsub8(hsv.s, (uint8_t)-change_sat);
+ hsv.v = change_val > 0 ? qadd8(hsv.v, (uint8_t)change_val) : qsub8(hsv.v, (uint8_t)-change_val);
rgblight_sethsv_noeeprom(hsv.h, hsv.s, hsv.v);
change_timer = timer_read();
}
@@ -372,8 +375,6 @@ layer_state_t layer_state_set_user_rgb(layer_state_t state) {
}
bool led_update_user_rgb(led_t led_state) {
- dprintf("num=%u, cap=%u, scl=%u, cmp=%u, kan=%u\n", led_state.num_lock, led_state.caps_lock, led_state.scroll_lock, led_state.compose, led_state.kana);
-
rgblight_set_layer_state(LOCK_OFFSET + USB_LED_NUM_LOCK, led_state.num_lock);
rgblight_set_layer_state(LOCK_OFFSET + USB_LED_CAPS_LOCK, led_state.caps_lock);
rgblight_set_layer_state(LOCK_OFFSET + USB_LED_SCROLL_LOCK, led_state.scroll_lock);
@@ -385,7 +386,6 @@ void rgb_layer_ack_yn(bool yn) { rgb_layer_ack(yn ? ACK_YES : ACK_NO); }
void rgb_layer_ack(layer_ack_t n) {
uint8_t layer = ACK_OFFSET + n;
- dprintf("rgb_layer_ack(%u) ==> %u\n", n, layer);
rgblight_blink_layer(layer, RGB_LAYER_ACK_DURATION);
}
@@ -395,11 +395,9 @@ extern rgblight_config_t rgblight_config;
bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch (keycode) {
- case SPI_GLO:
- spidey_glow();
- return false;
-
// clang-format off
+ case SPI_GLO: set_rgb_default(); return false;
+
case RGB_HUI: change_timer = timer_read(); change_hue = 1; return false;
case RGB_HUD: change_timer = timer_read(); change_hue = -1; return false;
case RGB_SAI: change_timer = timer_read(); change_sat = 1; return false;
@@ -460,7 +458,9 @@ void post_process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
break;
case RGB_TOG:
- rgb_layer_ack_yn(rgblight_config.enable);
+ // Hack - we only get called on the press for RGB_TOG,
+ // but the flag is only flipped on the release...
+ rgb_layer_ack_yn(!rgblight_config.enable);
break;
#ifdef VELOCIKEY_ENABLE
@@ -477,10 +477,14 @@ void post_process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
break;
#endif
-#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE)
- case SPI_LNX:
- case SPI_OSX:
- case SPI_WIN:
+#if defined(UNICODE_COMMON_ENABLE)
+ case UC_M_MA:
+ case UC_M_LN:
+ case UC_M_WI:
+ case UC_M_BS:
+ case UC_M_WC:
+ case UC_M_EM:
+
case UC_MOD:
case UC_RMOD:
rgb_layer_ack(ACK_MEH);
diff --git a/users/spidey3/rules.mk b/users/spidey3/rules.mk
index de8ed113e7..c95582e176 100644
--- a/users/spidey3/rules.mk
+++ b/users/spidey3/rules.mk
@@ -1,6 +1,7 @@
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
CONSOLE_ENABLE = yes # Console for debug
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+NKRO_ENABLE = yes
LTO_ENABLE = yes
SRC += init.c
diff --git a/users/spidey3/spidey3.c b/users/spidey3/spidey3.c
index df73c903d0..842bb465f7 100644
--- a/users/spidey3/spidey3.c
+++ b/users/spidey3/spidey3.c
@@ -1,3 +1,6 @@
+// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
#include "spidey3.h"
@@ -18,7 +21,7 @@ static uint32_t matrix_timer = 0;
# endif
void report_version(void) {
- uprintln(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE);
+ uprintln(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION " - " QMK_BUILDDATE);
reported_version = true;
}
#endif
@@ -51,8 +54,42 @@ void matrix_scan_user(void) {
#endif
}
-bool process_record_glyph_replacement(uint16_t keycode, keyrecord_t *record, uint32_t baseAlphaLower, uint32_t baseAlphaUpper, uint32_t zeroGlyph, uint32_t baseNumberOne, uint32_t spaceGlyph, uint8_t temp_mod, uint8_t temp_osm) {
+static uint32_t math_glyph_exceptions(const uint16_t keycode, const bool shifted) {
+ bool caps = host_keyboard_led_state().caps_lock;
+ if (shifted != caps) {
+ switch (keycode) {
+ // clang-format off
+ case KC_C: return 0x2102;
+ case KC_H: return 0x210D;
+ case KC_N: return 0x2115;
+ case KC_P: return 0x2119;
+ case KC_Q: return 0x211A;
+ case KC_R: return 0x211D;
+ case KC_Z: return 0x2124;
+ // clang-format on
+ }
+ }
+ return 0;
+}
+
+bool process_record_glyph_replacement(uint16_t keycode, keyrecord_t *record, uint32_t baseAlphaLower, uint32_t baseAlphaUpper, uint32_t zeroGlyph, uint32_t baseNumberOne, uint32_t spaceGlyph, uint32_t (*exceptions)(const uint16_t keycode, const bool shifted), uint8_t temp_mod, uint8_t temp_osm) {
+ void _register(uint32_t codepoint) {
+ unicode_input_start();
+ register_hex32(codepoint);
+ unicode_input_finish();
+ }
+
if ((((temp_mod | temp_osm) & (MOD_MASK_CTRL | MOD_MASK_ALT | MOD_MASK_GUI))) == 0) {
+ bool shifted = ((temp_mod | temp_osm) & MOD_MASK_SHIFT);
+ if (exceptions) {
+ uint32_t res = exceptions(keycode, shifted);
+ if (res) {
+ if (record->event.pressed) {
+ _register(res);
+ }
+ return false;
+ }
+ }
switch (keycode) {
case KC_A ... KC_Z:
if (record->event.pressed) {
@@ -61,39 +98,31 @@ bool process_record_glyph_replacement(uint16_t keycode, keyrecord_t *record, uin
clear_oneshot_mods();
#endif
- unicode_input_start();
- uint32_t base = ((temp_mod | temp_osm) & MOD_MASK_SHIFT) ? baseAlphaUpper : baseAlphaLower;
- register_hex32(base + (keycode - KC_A));
- unicode_input_finish();
-
+ bool caps = host_keyboard_led_state().caps_lock;
+ uint32_t base = ((shifted == caps) ? baseAlphaLower : baseAlphaUpper);
+ _register(base + (keycode - KC_A));
set_mods(temp_mod);
}
return false;
case KC_0:
- if ((temp_mod | temp_osm) & MOD_MASK_SHIFT) { // skip shifted numbers, so that we can still use symbols etc.
+ if (shifted) { // skip shifted numbers, so that we can still use symbols etc.
return true;
}
if (record->event.pressed) {
- unicode_input_start();
- register_hex32(zeroGlyph);
- unicode_input_finish();
+ _register(zeroGlyph);
}
return false;
case KC_1 ... KC_9:
- if ((temp_mod | temp_osm) & MOD_MASK_SHIFT) { // skip shifted numbers, so that we can still use symbols etc.
+ if (shifted) { // skip shifted numbers, so that we can still use symbols etc.
return true;
}
if (record->event.pressed) {
- unicode_input_start();
- register_hex32(baseNumberOne + (keycode - KC_1));
- unicode_input_finish();
+ _register(baseNumberOne + (keycode - KC_1));
}
return false;
case KC_SPACE:
if (record->event.pressed) {
- unicode_input_start();
- register_hex32(spaceGlyph); // em space
- unicode_input_finish();
+ _register(spaceGlyph); // em space
}
return false;
}
@@ -163,7 +192,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
debug_keyboard = 0;
debug_matrix = 0;
}
- uprintf("DEBUG: enable=%u, keyboard=%u, matrix=%u\n", debug_enable, debug_keyboard, debug_matrix);
+ uprintf("DEBUG: enable=%u, kb=%u, matrix=%u\n", debug_enable, debug_keyboard, debug_matrix);
eeconfig_update_debug(debug_config.raw);
return false;
#endif
@@ -174,21 +203,14 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case CH_ASST: host_consumer_send(AL_ASSISTANT); return false;
case CH_SUSP: tap_code16(LGUI(LSFT(KC_L))); return true;
-#if defined(UNICODE_ENABLE) || defined(UNICODEMAP_ENABLE) || defined(UCIS_ENABLE)
- case SPI_LNX: set_unicode_input_mode(UC_LNX); break;
- case SPI_OSX: set_unicode_input_mode(UC_OSX); break;
- case SPI_WIN: set_unicode_input_mode(UC_WINC); break;
-#endif
// clang-format on
- case SPI_NORMAL ... SPI_FRAKTR:
+ case SPI_NORMAL ... SPI_MATH:
spi_replace_mode = (spi_replace_mode == keycode) ? SPI_NORMAL : keycode;
- dprintf("spi_replace_mode = %u\n", spi_replace_mode);
break;
case SPI_GFLOCK:
spi_gflock = !spi_gflock;
- dprintf("spi_gflock = %u\n", spi_gflock);
break;
case SPI_KP_00:
@@ -279,19 +301,23 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case KC_SPACE:
switch (spi_replace_mode) {
case SPI_WIDE:
- return process_record_glyph_replacement(keycode, record, 0xFF41, 0xFF21, 0xFF10, 0xFF11, 0x2003, mods, osm);
+ return process_record_glyph_replacement(keycode, record, 0xFF41, 0xFF21, 0xFF10, 0xFF11, 0x2003, NULL, mods, osm);
case SPI_SCRIPT:
- return process_record_glyph_replacement(keycode, record, 0x1D4EA, 0x1D4D0, 0x1D7CE, 0x1D7CF, 0x2002, mods, osm);
+ return process_record_glyph_replacement(keycode, record, 0x1D4EA, 0x1D4D0, 0x1D7CE, 0x1D7CF, 0x2002, NULL, mods, osm);
case SPI_BLOCKS:
- return process_record_glyph_replacement(keycode, record, 0x1F170, 0x1F170, '0', '1', 0x2002, mods, osm);
+ return process_record_glyph_replacement(keycode, record, 0x1F170, 0x1F170, '0', '1', 0x2002, NULL, mods, osm);
case SPI_CIRCLE:
- return process_record_glyph_replacement(keycode, record, 0x1F150, 0x1F150, '0', '1', 0x2002, mods, osm);
+ return process_record_glyph_replacement(keycode, record, 0x1F150, 0x1F150, '0', '1', 0x2002, NULL, mods, osm);
case SPI_SQUARE:
- return process_record_glyph_replacement(keycode, record, 0x1F130, 0x1F130, '0', '1', 0x2002, mods, osm);
+ return process_record_glyph_replacement(keycode, record, 0x1F130, 0x1F130, '0', '1', 0x2002, NULL, mods, osm);
case SPI_PARENS:
- return process_record_glyph_replacement(keycode, record, 0x1F110, 0x1F110, '0', '1', 0x2002, mods, osm);
+ return process_record_glyph_replacement(keycode, record, 0x1F110, 0x1F110, '0', '1', 0x2002, NULL, mods, osm);
case SPI_FRAKTR:
- return process_record_glyph_replacement(keycode, record, 0x1D586, 0x1D56C, '0', '1', 0x2002, mods, osm);
+ return process_record_glyph_replacement(keycode, record, 0x1D586, 0x1D56C, '0', '1', 0x2002, NULL, mods, osm);
+ case SPI_BOLD:
+ return process_record_glyph_replacement(keycode, record, 0x1D41A, 0x1D400, '0', '1', 0x2002, NULL, mods, osm);
+ case SPI_MATH:
+ return process_record_glyph_replacement(keycode, record, 0x1D552, 0x1D538, '0', '1', 0x2002, &math_glyph_exceptions, mods, osm);
}
break;
@@ -304,9 +330,9 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
if ((mods | osm) & MOD_MASK_SHIFT) {
del_mods(MOD_MASK_SHIFT);
-#ifndef NO_ACTION_ONESHOT
+# ifndef NO_ACTION_ONESHOT
clear_oneshot_mods();
-#endif
+# endif
register_code(KC_DEL);
delkey_registered = true;
set_mods(mods);
diff --git a/users/spidey3/spidey3.h b/users/spidey3/spidey3.h
index d018e5defb..e91b299e55 100644
--- a/users/spidey3/spidey3.h
+++ b/users/spidey3/spidey3.h
@@ -1,3 +1,6 @@
+// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#pragma once
#include QMK_KEYBOARD_H
@@ -10,16 +13,13 @@ enum userspace_layers {
_BASE = 0,
_NUMPAD,
_FN,
+ _GLYPH,
};
enum custom_keycodes {
- SPI_GLO = SAFE_RANGE,
- SPI_LNX, // Mode: Linux
- SPI_OSX, // Mode: Mac
- SPI_WIN, // Mode: Windows
- CH_CPNL, // AL Control Panel
- CH_ASST, // AL Context-aware Desktop Assistant
- CH_SUSP, // Suspend
+ CH_CPNL = SAFE_RANGE, // AL Control Panel
+ CH_ASST, // AL Context-aware Desktop Assistant
+ CH_SUSP, // Suspend
SPI_NORMAL,
SPI_WIDE,
@@ -29,8 +29,11 @@ enum custom_keycodes {
SPI_SQUARE,
SPI_PARENS,
SPI_FRAKTR,
+ SPI_BOLD,
+ SPI_MATH,
SPI_GFLOCK,
SPI_KP_00,
+ SPI_GLO,
};
#ifdef RGBLIGHT_ENABLE
@@ -50,7 +53,6 @@ typedef enum layer_ack {
# define RGB_LAYER_ACK_DURATION 500
-void eeconfig_init_user_rgb(void);
void matrix_init_user_rgb(void);
void matrix_scan_user_rgb(void);
void keyboard_post_init_user_rgb(void);
diff --git a/users/spidey3/unicode.c b/users/spidey3/unicode.c
index 39a990674c..5292b0809b 100644
--- a/users/spidey3/unicode.c
+++ b/users/spidey3/unicode.c
@@ -1,3 +1,6 @@
+// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include "unicode.h"
diff --git a/users/spidey3/unicode.h b/users/spidey3/unicode.h
index 6182669fb0..ee8e00056c 100644
--- a/users/spidey3/unicode.h
+++ b/users/spidey3/unicode.h
@@ -1,3 +1,6 @@
+// Copyright 2022 Joshua Diamond josh@windowoffire.com (@spidey3)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#pragma once
#include QMK_KEYBOARD_H
diff --git a/users/stanrc85/config.h b/users/stanrc85/config.h
index e12beedb90..d9600b8b3c 100644
--- a/users/stanrc85/config.h
+++ b/users/stanrc85/config.h
@@ -15,7 +15,7 @@
#define INDICATOR_PIN_2 D4
#endif
-#ifdef KEYBOARD_mechlovin_adelais_standard_led_arm_rev4_stm32f303
+#if defined(KEYBOARD_mechlovin_adelais_standard_led_arm_rev4_stm32f303) || defined(KEYBOARD_mechlovin_adelais_standard_led_arm_rev4_apm32f103)
#define INDICATOR_PIN_0 B2
#define INDICATOR_PIN_1 C15
#define INDICATOR_PIN_2 B9
@@ -30,3 +30,9 @@
#define ENABLE_RGB_MATRIX_MULTISPLASH
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#endif
+
+#ifdef KEYBOARD_nasu
+ #define INDICATOR_PIN_0 B1
+ #define INDICATOR_PIN_1 B0
+ #define INDICATOR_PIN_2 A7
+#endif
diff --git a/users/stanrc85/layer_rgb.c b/users/stanrc85/layer_rgb.c
index 6d57198f3b..ad30c2ee65 100644
--- a/users/stanrc85/layer_rgb.c
+++ b/users/stanrc85/layer_rgb.c
@@ -5,7 +5,7 @@ void matrix_init_user(void) {
};
layer_state_t layer_state_set_user(layer_state_t state) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case 0:
rgblight_setrgb (0xFF, 0x00, 0x00);
break;
diff --git a/users/stanrc85/rules.mk b/users/stanrc85/rules.mk
index 94f4027b96..141b4581a4 100644
--- a/users/stanrc85/rules.mk
+++ b/users/stanrc85/rules.mk
@@ -43,3 +43,13 @@ ifeq ($(strip $(KEYBOARD)), mechlovin/adelais/standard_led/arm/rev4/stm32f303)
SRC += rgb_timeout.c
SRC += indicator_layers_sneakbox.c
endif
+ifeq ($(strip $(KEYBOARD)), nasu)
+ SRC += indicator_layers_sneakbox.c
+ SRC += startup_fanfare.c
+ OPT_DEFS += -DHAS_INDICATORS
+endif
+ifeq ($(strip $(KEYBOARD)), mechlovin/adelais/standard_led/arm/rev4/apm32f103)
+ OPT_DEFS += -DHAS_INDICATORS
+ SRC += rgb_timeout.c
+ SRC += indicator_layers_sneakbox.c
+endif
diff --git a/users/talljoe/config.h b/users/talljoe/config.h
index 8a5fd50cb7..dcdbbd89f4 100644
--- a/users/talljoe/config.h
+++ b/users/talljoe/config.h
@@ -19,9 +19,5 @@
#define RESET_LAYER 15
-#define BOOTMAGIC_KEY_SALT KC_ESC
-#define BOOTMAGIC_KEY_SKIP KC_I
-#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_E
-
#define COMBO_COUNT 2
#define COMBO_TERM 250
diff --git a/users/talljoe/talljoe.c b/users/talljoe/talljoe.c
index 517f712ec8..6655170d4a 100644
--- a/users/talljoe/talljoe.c
+++ b/users/talljoe/talljoe.c
@@ -138,7 +138,7 @@ void matrix_init_user(void) {
}
}
-uint32_t default_layer_state_set_kb(uint32_t state) {
+layer_state_t default_layer_state_set_kb(layer_state_t state) {
// persist changes to default layers
eeconfig_update_default_layer(state);
return state;
diff --git a/users/tominabox1/config.h b/users/tominabox1/config.h
index 4a2433eb0b..f853e18605 100644
--- a/users/tominabox1/config.h
+++ b/users/tominabox1/config.h
@@ -3,8 +3,6 @@
// Tapping term settings
#define TAPPING_TERM_PER_KEY
#define TAP_HOLD_CAPS_DELAY 350
-#define BOOTMAGIC_KEY_SALT KC_BSPACE
-#define BOOTMAGIC_KEY_EEPROM_CLEAR KC_Q
// OLED settings
#define OLED_FONT_H "users/tominabox1/doug.c"
diff --git a/users/tominabox1/tominabox1.c b/users/tominabox1/tominabox1.c
index 7322ead0dc..b4ec224d07 100644
--- a/users/tominabox1/tominabox1.c
+++ b/users/tominabox1/tominabox1.c
@@ -128,7 +128,7 @@ layer_state_t layer_state_set_keymap (layer_state_t state) {
layer_state_t layer_state_set_user(layer_state_t state) {
state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _LOWER:
break;
case _RAISE:
@@ -231,7 +231,7 @@ void render_status_main(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
- switch (biton32(layer_state)) {
+ switch (get_highest_layer(layer_state)) {
case _BASE:
oled_write_P(PSTR("Colemak\n"), false);
break;
diff --git a/users/turbomech/backupturbomech.c b/users/turbomech/backupturbomech.c
index aaea05df96..3671d27ab4 100644
--- a/users/turbomech/backupturbomech.c
+++ b/users/turbomech/backupturbomech.c
@@ -31,7 +31,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
return true;
}
__attribute__ ((weak))
-uint32_t layer_state_set_keymap (uint32_t state) {
+layer_state_t layer_state_set_keymap (layer_state_t state) {
return state;
}
__attribute__ ((weak))
@@ -300,7 +300,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
#ifdef RGBLIGHT_ENABLE
uint8_t default_layer = eeconfig_read_default_layer();
if (rgb_layer_change) {
- switch (biton32(state)) {
+ switch (get_highest_layer(state)) {
case _FUNCTION:
rgblight_set_blue;
rgblight_mode(1);
@@ -377,7 +377,7 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
return true;
}
__attribute__ ((weak))
-uint32_t layer_state_set_keymap (uint32_t state) {
+layer_state_t layer_state_set_keymap (layer_state_t state) {
return state;
}
__attribute__ ((weak))
diff --git a/users/xulkal/custom_oled.c b/users/xulkal/custom_oled.c
index 7fe8040927..fd03033ad6 100644
--- a/users/xulkal/custom_oled.c
+++ b/users/xulkal/custom_oled.c
@@ -37,7 +37,7 @@ static void render_icon(void)
static void render_layer(void)
{
- uint8_t layer = layer_state ? biton(layer_state) : biton32(default_layer_state);
+ uint8_t layer = layer_state ? get_highest_layer(layer_state) : get_highest_layer(default_layer_state);
#ifdef OLED_90ROTATION
oled_write_P(PSTR("Layer"), false);
#else
diff --git a/users/yet-another-developer/config.h b/users/yet-another-developer/config.h
index d46d487fe3..6d1bf83f0b 100644
--- a/users/yet-another-developer/config.h
+++ b/users/yet-another-developer/config.h
@@ -11,10 +11,6 @@
#define ONESHOT_TIMEOUT 2000
#endif // !ONESHOT_TIMEOUT
-#ifndef QMK_KEYS_PER_SCAN
- #define QMK_KEYS_PER_SCAN 4
-#endif // !QMK_KEYS_PER_SCAN
-
#if defined(LEADER_ENABLE)
#define LEADER_PER_KEY_TIMING
#define LEADER_TIMEOUT 250
diff --git a/users/zer09/config.h b/users/zer09/config.h
index c5ab32f8d4..0324aaa7d3 100644
--- a/users/zer09/config.h
+++ b/users/zer09/config.h
@@ -1,10 +1,6 @@
#ifndef USERSPACE_CONFIG_H
#define USERSPACE_CONFIG_H
-#ifndef QMK_KEYS_PER_SCAN
-#define QMK_KEYS_PER_SCAN 4
-#endif // !QMK_KEYS_PER_SCAN
-
// this makes it possible to do rolling combos (zx) with keys that
// convert to other keys on hold (z becomes ctrl when you hold it,
// and when this option isn't enabled, z rapidly followed by x
diff --git a/users/zer09/zer09.c b/users/zer09/zer09.c
index a6768f0a1a..78433b4c20 100644
--- a/users/zer09/zer09.c
+++ b/users/zer09/zer09.c
@@ -43,7 +43,7 @@ void matrix_init_user(void) {
void matrix_scan_user(void) {
static uint8_t is_leds_changes = 1;
- c_lyr = biton32(layer_state);
+ c_lyr = get_highest_layer(layer_state);
is_leds_changes = is_leds_changes << set_layer_led(c_lyr);
is_leds_changes = is_leds_changes << shifted_layer();
diff --git a/util/install/fedora.sh b/util/install/fedora.sh
index b140438b42..4227906ad9 100755
--- a/util/install/fedora.sh
+++ b/util/install/fedora.sh
@@ -8,7 +8,7 @@ _qmk_install() {
clang diffutils git gcc glibc-headers kernel-devel kernel-headers \
make unzip wget zip python3 avr-binutils avr-gcc avr-libc \
arm-none-eabi-binutils-cs arm-none-eabi-gcc-cs arm-none-eabi-newlib \
- avrdude dfu-programmer dfu-util hidapi libusb1-devel
+ avrdude dfu-programmer dfu-util hidapi libusb-devel
python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt
}
diff --git a/util/install/msys2.sh b/util/install/msys2.sh
index c57c455eb4..fa422023ab 100755
--- a/util/install/msys2.sh
+++ b/util/install/msys2.sh
@@ -7,17 +7,14 @@ _qmk_install_prepare() {
_qmk_install() {
echo "Installing dependencies"
- pacman --needed --noconfirm --disable-download-timeout -S pactoys-git
+ pacman --needed --noconfirm --disable-download-timeout -S pactoys
pacboy sync --needed --noconfirm --disable-download-timeout \
- base-devel: toolchain:x clang:x git: unzip: python3-pip:x \
- avr-binutils:x avr-gcc:x avr-libc:x arm-none-eabi-binutils:x \
- arm-none-eabi-gcc:x arm-none-eabi-newlib:x avrdude:x bootloadhid:x \
- dfu-programmer:x dfu-util:x teensy-loader-cli:x hidapi:x \
- python-appdirs:x python-colorama:x python-jsonschema:x python-pillow:x python-pygments:x
+ base-devel: toolchain:x clang:x python-qmk:x hidapi:x \
+ avr-binutils:x avr-gcc:x avr-libc:x \
+ arm-none-eabi-binutils:x arm-none-eabi-gcc:x arm-none-eabi-newlib:x \
+ avrdude:x bootloadhid:x dfu-programmer:x dfu-util:x hid-bootloader-cli:x mdloader:x teensy-loader-cli:x wb32-dfu-updater:x
_qmk_install_drivers
-
- python3 -m pip install -r "$QMK_FIRMWARE_DIR/requirements.txt"
}
_qmk_install_drivers() {
diff --git a/util/nix/poetry.lock b/util/nix/poetry.lock
index e87672f193..dc1b38be84 100644
--- a/util/nix/poetry.lock
+++ b/util/nix/poetry.lock
@@ -15,64 +15,74 @@ optional = false
python-versions = ">=3.6"
[package.extras]
-test = ["coverage", "flake8", "pexpect", "wheel"]
+test = ["wheel", "pexpect", "flake8", "coverage"]
+
+[[package]]
+name = "atomicwrites"
+version = "1.4.1"
+description = "Atomic file writes."
+category = "dev"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "attrs"
-version = "21.4.0"
+version = "22.1.0"
description = "Classes Without Boilerplate"
category = "main"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+python-versions = ">=3.5"
[package.extras]
-dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"]
-docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
-tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"]
-tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"]
+tests_no_zope = ["cloudpickle", "pytest-mypy-plugins", "mypy (>=0.900,!=0.940)", "pytest (>=4.3.0)", "pympler", "hypothesis", "coverage[toml] (>=5.0.2)"]
+tests = ["cloudpickle", "zope.interface", "pytest-mypy-plugins", "mypy (>=0.900,!=0.940)", "pytest (>=4.3.0)", "pympler", "hypothesis", "coverage[toml] (>=5.0.2)"]
+docs = ["sphinx-notfound-page", "zope.interface", "sphinx", "furo"]
+dev = ["cloudpickle", "pre-commit", "sphinx-notfound-page", "sphinx", "furo", "zope.interface", "pytest-mypy-plugins", "mypy (>=0.900,!=0.940)", "pytest (>=4.3.0)", "pympler", "hypothesis", "coverage[toml] (>=5.0.2)"]
[[package]]
name = "colorama"
-version = "0.4.4"
+version = "0.4.5"
description = "Cross-platform colored terminal text."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]]
-name = "coverage"
-version = "6.4"
-description = "Code coverage measurement for Python"
+name = "dotty-dict"
+version = "1.3.1"
+description = "Dictionary wrapper for quick access to deeply nested keys."
+category = "main"
+optional = false
+python-versions = ">=3.5,<4.0"
+
+[[package]]
+name = "editables"
+version = "0.3"
+description = "Editable installations"
category = "dev"
optional = false
python-versions = ">=3.7"
-[package.extras]
-toml = ["tomli"]
-
[[package]]
name = "flake8"
-version = "4.0.1"
+version = "5.0.4"
description = "the modular source code checker: pep8 pyflakes and co"
category = "dev"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.6.1"
[package.dependencies]
-mccabe = ">=0.6.0,<0.7.0"
-pycodestyle = ">=2.8.0,<2.9.0"
-pyflakes = ">=2.4.0,<2.5.0"
+mccabe = ">=0.7.0,<0.8.0"
+pycodestyle = ">=2.9.0,<2.10.0"
+pyflakes = ">=2.5.0,<2.6.0"
[[package]]
-name = "flake8-polyfill"
-version = "1.0.2"
-description = "Polyfill package for Flake8 plugins"
+name = "flit-core"
+version = "3.7.1"
+description = "Distribution-building parts of Flit. See flit package for more information"
category = "dev"
optional = false
-python-versions = "*"
-
-[package.dependencies]
-flake8 = "*"
+python-versions = ">=3.6"
[[package]]
name = "halo"
@@ -90,7 +100,50 @@ spinners = ">=0.0.24"
termcolor = ">=1.1.0"
[package.extras]
-ipython = ["IPython (==5.7.0)", "ipywidgets (==7.1.0)"]
+ipython = ["ipywidgets (==7.1.0)", "IPython (==5.7.0)"]
+
+[[package]]
+name = "hatch-fancy-pypi-readme"
+version = "22.3.0"
+description = "Fancy PyPI READMEs with Hatch"
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+
+[package.dependencies]
+hatchling = "*"
+tomli = {version = "*", markers = "python_version < \"3.11\""}
+
+[package.extras]
+tests = ["wheel", "pytest-icdiff", "pytest", "coverage", "build"]
+dev = ["mypy", "hatch-fancy-pypi-readme"]
+
+[[package]]
+name = "hatch-vcs"
+version = "0.2.0"
+description = "Hatch plugin for versioning with your preferred VCS"
+category = "dev"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+hatchling = ">=0.21.0"
+setuptools-scm = {version = ">=6.4.0", markers = "python_version > \"3\""}
+
+[[package]]
+name = "hatchling"
+version = "1.8.0"
+description = "Modern, extensible Python build backend"
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+
+[package.dependencies]
+editables = ">=0.3"
+packaging = ">=21.3"
+pathspec = ">=0.9"
+pluggy = ">=1.0.0"
+tomli = {version = ">=1.2.2", markers = "python_version < \"3.11\""}
[[package]]
name = "hid"
@@ -102,7 +155,7 @@ python-versions = "*"
[[package]]
name = "hjson"
-version = "3.0.2"
+version = "3.1.0"
description = "Hjson, a user interface for JSON."
category = "main"
optional = false
@@ -110,7 +163,7 @@ python-versions = "*"
[[package]]
name = "importlib-resources"
-version = "5.7.1"
+version = "5.9.0"
description = "Read resources from Python packages"
category = "main"
optional = false
@@ -120,12 +173,20 @@ python-versions = ">=3.7"
zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
[package.extras]
-docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"]
-testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"]
+testing = ["pytest-mypy (>=0.9.1)", "pytest-black (>=0.3.7)", "pytest-enabler (>=1.3)", "pytest-cov", "pytest-flake8", "pytest-checkdocs (>=2.4)", "pytest (>=6)"]
+docs = ["jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "jaraco.packaging (>=9)", "sphinx"]
+
+[[package]]
+name = "iniconfig"
+version = "1.1.1"
+description = "iniconfig: brain-dead simple config-ini parsing"
+category = "dev"
+optional = false
+python-versions = "*"
[[package]]
name = "jsonschema"
-version = "4.5.1"
+version = "4.14.0"
description = "An implementation of JSON Schema validation for Python"
category = "main"
optional = false
@@ -134,11 +195,12 @@ python-versions = ">=3.7"
[package.dependencies]
attrs = ">=17.4.0"
importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
+pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""}
pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2"
[package.extras]
-format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
-format_nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"]
+format-nongpl = ["webcolors (>=1.11)", "uri-template", "rfc3986-validator (>0.1.0)", "rfc3339-validator", "jsonpointer (>1.13)", "isoduration", "idna", "fqdn"]
+format = ["webcolors (>=1.11)", "uri-template", "rfc3987", "rfc3339-validator", "jsonpointer (>1.13)", "isoduration", "idna", "fqdn"]
[[package]]
name = "log-symbols"
@@ -153,11 +215,11 @@ colorama = ">=0.3.9"
[[package]]
name = "mccabe"
-version = "0.6.1"
+version = "0.7.0"
description = "McCabe checker, plugin for flake8"
category = "dev"
optional = false
-python-versions = "*"
+python-versions = ">=3.6"
[[package]]
name = "milc"
@@ -176,68 +238,132 @@ spinners = "*"
[[package]]
name = "nose2"
-version = "0.11.0"
-description = "unittest2 with plugins, the succesor to nose"
+version = "0.12.0"
+description = "unittest2 with plugins, the successor to nose"
category = "dev"
optional = false
python-versions = "*"
+[package.extras]
+dev = ["sphinx-issues", "mock", "sphinx-rtd-theme", "sphinx"]
+coverage_plugin = ["coverage"]
+
+[[package]]
+name = "packaging"
+version = "21.3"
+description = "Core utilities for Python packages"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
[package.dependencies]
-coverage = ">=4.4.1"
-six = ">=1.7"
+pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
-[package.extras]
-coverage_plugin = ["coverage (>=4.4.1)"]
-dev = ["Sphinx (>=1.6.5)", "sphinx-rtd-theme", "mock", "coverage", "sphinx-issues"]
+[[package]]
+name = "pathspec"
+version = "0.9.0"
+description = "Utility library for gitignore style pattern matching of file paths."
+category = "dev"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
[[package]]
name = "pep8-naming"
-version = "0.12.1"
+version = "0.13.2"
description = "Check PEP-8 naming conventions, plugin for flake8"
category = "dev"
optional = false
-python-versions = "*"
+python-versions = ">=3.7"
[package.dependencies]
flake8 = ">=3.9.1"
-flake8-polyfill = ">=1.0.2,<2"
[[package]]
name = "pillow"
-version = "9.1.1"
+version = "9.2.0"
description = "Python Imaging Library (Fork)"
category = "main"
optional = false
python-versions = ">=3.7"
[package.extras]
-docs = ["olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinx-rtd-theme (>=1.0)", "sphinxext-opengraph"]
-tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"]
+tests = ["pytest-timeout", "pytest-cov", "pytest", "pyroma", "packaging", "olefile", "markdown2", "defusedxml", "coverage", "check-manifest"]
+docs = ["sphinxext-opengraph", "sphinx-removed-in", "sphinx-issues (>=3.0.1)", "sphinx-copybutton", "sphinx (>=2.4)", "olefile", "furo"]
+
+[[package]]
+name = "pkgutil-resolve-name"
+version = "1.3.10"
+description = "Resolve a name to an object."
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[[package]]
+name = "pluggy"
+version = "1.0.0"
+description = "plugin and hook calling mechanisms for python"
+category = "dev"
+optional = false
+python-versions = ">=3.6"
+
+[package.extras]
+testing = ["pytest-benchmark", "pytest"]
+dev = ["tox", "pre-commit"]
+
+[[package]]
+name = "poetry-core"
+version = "1.0.8"
+description = "Poetry PEP 517 Build Backend"
+category = "dev"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+
+[[package]]
+name = "py"
+version = "1.11.0"
+description = "library with cross-python path, ini-parsing, io, code, log facilities"
+category = "dev"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]]
name = "pycodestyle"
-version = "2.8.0"
+version = "2.9.1"
description = "Python style guide checker"
category = "dev"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+python-versions = ">=3.6"
[[package]]
name = "pyflakes"
-version = "2.4.0"
+version = "2.5.0"
description = "passive checker of Python programs"
category = "dev"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+python-versions = ">=3.6"
[[package]]
name = "pygments"
-version = "2.12.0"
+version = "2.13.0"
description = "Pygments is a syntax highlighting package written in Python."
category = "main"
optional = false
python-versions = ">=3.6"
+[package.extras]
+plugins = ["importlib-metadata"]
+
+[[package]]
+name = "pyparsing"
+version = "3.0.9"
+description = "pyparsing module - Classes and methods to define and execute parsing grammars"
+category = "dev"
+optional = false
+python-versions = ">=3.6.8"
+
+[package.extras]
+diagrams = ["jinja2", "railroad-diagrams"]
+
[[package]]
name = "pyrsistent"
version = "0.18.1"
@@ -247,6 +373,38 @@ optional = false
python-versions = ">=3.7"
[[package]]
+name = "pyserial"
+version = "3.5"
+description = "Python Serial Port Extension"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.extras]
+cp2110 = ["hidapi"]
+
+[[package]]
+name = "pytest"
+version = "7.1.2"
+description = "pytest: simple powerful testing with Python"
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+
+[package.dependencies]
+atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
+attrs = ">=19.2.0"
+colorama = {version = "*", markers = "sys_platform == \"win32\""}
+iniconfig = "*"
+packaging = "*"
+pluggy = ">=0.12,<2.0"
+py = ">=1.8.2"
+tomli = ">=1.0.0"
+
+[package.extras]
+testing = ["xmlschema", "requests", "pygments (>=2.7.2)", "nose", "mock", "hypothesis (>=3.56)", "argcomplete"]
+
+[[package]]
name = "pyusb"
version = "1.2.1"
description = "Python USB access module"
@@ -256,29 +414,39 @@ python-versions = ">=3.6.0"
[[package]]
name = "qmk"
-version = "1.1.0"
+version = "1.1.1"
description = "A program to help users work with QMK Firmware."
category = "main"
optional = false
python-versions = ">=3.7"
[package.dependencies]
+dotty-dict = "*"
hid = "*"
hjson = "*"
jsonschema = ">=4"
milc = ">=1.4.2"
pillow = "*"
pygments = "*"
+pyserial = "*"
pyusb = "*"
-qmk-dotty-dict = "*"
[[package]]
-name = "qmk-dotty-dict"
-version = "1.3.0.post1"
-description = "Dictionary wrapper for quick access to deeply nested keys."
-category = "main"
+name = "setuptools-scm"
+version = "7.0.5"
+description = "the blessed package to manage your versions by scm tags"
+category = "dev"
optional = false
-python-versions = "*"
+python-versions = ">=3.7"
+
+[package.dependencies]
+packaging = ">=20.0"
+tomli = ">=1.0.0"
+typing-extensions = "*"
+
+[package.extras]
+toml = ["setuptools (>=42)"]
+test = ["virtualenv (>20)", "pytest (>=6.2)"]
[[package]]
name = "six"
@@ -305,6 +473,22 @@ optional = false
python-versions = "*"
[[package]]
+name = "tomli"
+version = "2.0.1"
+description = "A lil' TOML parser"
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+
+[[package]]
+name = "typing-extensions"
+version = "4.3.0"
+description = "Backported and Experimental Type Hints for Python 3.7+"
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+
+[[package]]
name = "yapf"
version = "0.32.0"
description = "A formatter for Python code."
@@ -314,20 +498,20 @@ python-versions = "*"
[[package]]
name = "zipp"
-version = "3.8.0"
+version = "3.8.1"
description = "Backport of pathlib-compatible object wrapper for zip files"
category = "main"
optional = false
python-versions = ">=3.7"
[package.extras]
-docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"]
-testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"]
+testing = ["pytest-mypy (>=0.9.1)", "pytest-black (>=0.3.7)", "func-timeout", "jaraco.itertools", "pytest-enabler (>=1.3)", "pytest-cov", "pytest-flake8", "pytest-checkdocs (>=2.4)", "pytest (>=6)"]
+docs = ["jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "jaraco.packaging (>=9)", "sphinx"]
[metadata]
lock-version = "1.1"
python-versions = "^3.8"
-content-hash = "81755c384679b0cb4ef4b58ff575468d833dc79c7e6e1a9ccdea7be37ad65c7e"
+content-hash = "71855d16c0f315ff383322272ddfca2b4917dbba9fa5ca1863b3bd537e35fee1"
[metadata.files]
appdirs = [
@@ -338,156 +522,188 @@ argcomplete = [
{file = "argcomplete-2.0.0-py2.py3-none-any.whl", hash = "sha256:cffa11ea77999bb0dd27bb25ff6dc142a6796142f68d45b1a26b11f58724561e"},
{file = "argcomplete-2.0.0.tar.gz", hash = "sha256:6372ad78c89d662035101418ae253668445b391755cfe94ea52f1b9d22425b20"},
]
+atomicwrites = [
+ {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"},
+]
attrs = [
- {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"},
- {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"},
+ {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"},
+ {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"},
]
colorama = [
- {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
- {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
-]
-coverage = [
- {file = "coverage-6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:50ed480b798febce113709846b11f5d5ed1e529c88d8ae92f707806c50297abf"},
- {file = "coverage-6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:26f8f92699756cb7af2b30720de0c5bb8d028e923a95b6d0c891088025a1ac8f"},
- {file = "coverage-6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60c2147921da7f4d2d04f570e1838db32b95c5509d248f3fe6417e91437eaf41"},
- {file = "coverage-6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:750e13834b597eeb8ae6e72aa58d1d831b96beec5ad1d04479ae3772373a8088"},
- {file = "coverage-6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af5b9ee0fc146e907aa0f5fb858c3b3da9199d78b7bb2c9973d95550bd40f701"},
- {file = "coverage-6.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a022394996419142b33a0cf7274cb444c01d2bb123727c4bb0b9acabcb515dea"},
- {file = "coverage-6.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5a78cf2c43b13aa6b56003707c5203f28585944c277c1f3f109c7b041b16bd39"},
- {file = "coverage-6.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9229d074e097f21dfe0643d9d0140ee7433814b3f0fc3706b4abffd1e3038632"},
- {file = "coverage-6.4-cp310-cp310-win32.whl", hash = "sha256:fb45fe08e1abc64eb836d187b20a59172053999823f7f6ef4f18a819c44ba16f"},
- {file = "coverage-6.4-cp310-cp310-win_amd64.whl", hash = "sha256:3cfd07c5889ddb96a401449109a8b97a165be9d67077df6802f59708bfb07720"},
- {file = "coverage-6.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:03014a74023abaf5a591eeeaf1ac66a73d54eba178ff4cb1fa0c0a44aae70383"},
- {file = "coverage-6.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c82f2cd69c71698152e943f4a5a6b83a3ab1db73b88f6e769fabc86074c3b08"},
- {file = "coverage-6.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b546cf2b1974ddc2cb222a109b37c6ed1778b9be7e6b0c0bc0cf0438d9e45a6"},
- {file = "coverage-6.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc173f1ce9ffb16b299f51c9ce53f66a62f4d975abe5640e976904066f3c835d"},
- {file = "coverage-6.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c53ad261dfc8695062fc8811ac7c162bd6096a05a19f26097f411bdf5747aee7"},
- {file = "coverage-6.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:eef5292b60b6de753d6e7f2d128d5841c7915fb1e3321c3a1fe6acfe76c38052"},
- {file = "coverage-6.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:543e172ce4c0de533fa892034cce260467b213c0ea8e39da2f65f9a477425211"},
- {file = "coverage-6.4-cp37-cp37m-win32.whl", hash = "sha256:00c8544510f3c98476bbd58201ac2b150ffbcce46a8c3e4fb89ebf01998f806a"},
- {file = "coverage-6.4-cp37-cp37m-win_amd64.whl", hash = "sha256:b84ab65444dcc68d761e95d4d70f3cfd347ceca5a029f2ffec37d4f124f61311"},
- {file = "coverage-6.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d548edacbf16a8276af13063a2b0669d58bbcfca7c55a255f84aac2870786a61"},
- {file = "coverage-6.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:033ebec282793bd9eb988d0271c211e58442c31077976c19c442e24d827d356f"},
- {file = "coverage-6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:742fb8b43835078dd7496c3c25a1ec8d15351df49fb0037bffb4754291ef30ce"},
- {file = "coverage-6.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d55fae115ef9f67934e9f1103c9ba826b4c690e4c5bcf94482b8b2398311bf9c"},
- {file = "coverage-6.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cd698341626f3c77784858427bad0cdd54a713115b423d22ac83a28303d1d95"},
- {file = "coverage-6.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:62d382f7d77eeeaff14b30516b17bcbe80f645f5cf02bb755baac376591c653c"},
- {file = "coverage-6.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:016d7f5cf1c8c84f533a3c1f8f36126fbe00b2ec0ccca47cc5731c3723d327c6"},
- {file = "coverage-6.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:69432946f154c6add0e9ede03cc43b96e2ef2733110a77444823c053b1ff5166"},
- {file = "coverage-6.4-cp38-cp38-win32.whl", hash = "sha256:83bd142cdec5e4a5c4ca1d4ff6fa807d28460f9db919f9f6a31babaaa8b88426"},
- {file = "coverage-6.4-cp38-cp38-win_amd64.whl", hash = "sha256:4002f9e8c1f286e986fe96ec58742b93484195defc01d5cc7809b8f7acb5ece3"},
- {file = "coverage-6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e4f52c272fdc82e7c65ff3f17a7179bc5f710ebc8ce8a5cadac81215e8326740"},
- {file = "coverage-6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b5578efe4038be02d76c344007b13119b2b20acd009a88dde8adec2de4f630b5"},
- {file = "coverage-6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8099ea680201c2221f8468c372198ceba9338a5fec0e940111962b03b3f716a"},
- {file = "coverage-6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a00441f5ea4504f5abbc047589d09e0dc33eb447dc45a1a527c8b74bfdd32c65"},
- {file = "coverage-6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e76bd16f0e31bc2b07e0fb1379551fcd40daf8cdf7e24f31a29e442878a827c"},
- {file = "coverage-6.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8d2e80dd3438e93b19e1223a9850fa65425e77f2607a364b6fd134fcd52dc9df"},
- {file = "coverage-6.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:341e9c2008c481c5c72d0e0dbf64980a4b2238631a7f9780b0fe2e95755fb018"},
- {file = "coverage-6.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:21e6686a95025927775ac501e74f5940cdf6fe052292f3a3f7349b0abae6d00f"},
- {file = "coverage-6.4-cp39-cp39-win32.whl", hash = "sha256:968ed5407f9460bd5a591cefd1388cc00a8f5099de9e76234655ae48cfdbe2c3"},
- {file = "coverage-6.4-cp39-cp39-win_amd64.whl", hash = "sha256:e35217031e4b534b09f9b9a5841b9344a30a6357627761d4218818b865d45055"},
- {file = "coverage-6.4-pp36.pp37.pp38-none-any.whl", hash = "sha256:e637ae0b7b481905358624ef2e81d7fb0b1af55f5ff99f9ba05442a444b11e45"},
- {file = "coverage-6.4.tar.gz", hash = "sha256:727dafd7f67a6e1cad808dc884bd9c5a2f6ef1f8f6d2f22b37b96cb0080d4f49"},
+ {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"},
+ {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"},
+]
+dotty-dict = [
+ {file = "dotty_dict-1.3.1-py3-none-any.whl", hash = "sha256:5022d234d9922f13aa711b4950372a06a6d64cb6d6db9ba43d0ba133ebfce31f"},
+ {file = "dotty_dict-1.3.1.tar.gz", hash = "sha256:4b016e03b8ae265539757a53eba24b9bfda506fb94fbce0bee843c6f05541a15"},
+]
+editables = [
+ {file = "editables-0.3-py3-none-any.whl", hash = "sha256:ee686a8db9f5d91da39849f175ffeef094dd0e9c36d6a59a2e8c7f92a3b80020"},
+ {file = "editables-0.3.tar.gz", hash = "sha256:167524e377358ed1f1374e61c268f0d7a4bf7dbd046c656f7b410cde16161b1a"},
]
flake8 = [
- {file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"},
- {file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"},
+ {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"},
+ {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"},
]
-flake8-polyfill = [
- {file = "flake8-polyfill-1.0.2.tar.gz", hash = "sha256:e44b087597f6da52ec6393a709e7108b2905317d0c0b744cdca6208e670d8eda"},
- {file = "flake8_polyfill-1.0.2-py2.py3-none-any.whl", hash = "sha256:12be6a34ee3ab795b19ca73505e7b55826d5f6ad7230d31b18e106400169b9e9"},
+flit-core = [
+ {file = "flit_core-3.7.1-py3-none-any.whl", hash = "sha256:e454fdbf68c7036e1c7435ec7479383f9d9a1650ca5b304feb184eba1efcdcef"},
+ {file = "flit_core-3.7.1.tar.gz", hash = "sha256:14955af340c43035dbfa96b5ee47407e377ee337f69e70f73064940d27d0a44f"},
]
halo = [
{file = "halo-0.0.31-py2-none-any.whl", hash = "sha256:5350488fb7d2aa7c31a1344120cee67a872901ce8858f60da7946cef96c208ab"},
{file = "halo-0.0.31.tar.gz", hash = "sha256:7b67a3521ee91d53b7152d4ee3452811e1d2a6321975137762eb3d70063cc9d6"},
]
+hatch-fancy-pypi-readme = [
+ {file = "hatch_fancy_pypi_readme-22.3.0-py3-none-any.whl", hash = "sha256:97c7ea026fe0d305163f5380c5df1dde51051e63d0dd4a47811214a5cd4e39b4"},
+ {file = "hatch_fancy_pypi_readme-22.3.0.tar.gz", hash = "sha256:7d4651f8f07825931c92873cb51137214a938badb7a759b85c1d95bf74f86efa"},
+]
+hatch-vcs = [
+ {file = "hatch_vcs-0.2.0-py2.py3-none-any.whl", hash = "sha256:86432a0dd49acae0e69e14f285667693fcd31d9869ca21634520acc30d482f07"},
+ {file = "hatch_vcs-0.2.0.tar.gz", hash = "sha256:9913d733b34eec9bb0345d0626ca32165a4ad2de15d1ce643c36d09ca908abff"},
+]
+hatchling = [
+ {file = "hatchling-1.8.0-py3-none-any.whl", hash = "sha256:1f7d920b1478221c8709841eb2aa6069856038463816d3a27b84ca5e99000e06"},
+ {file = "hatchling-1.8.0.tar.gz", hash = "sha256:a4f982fdca0717d8c46bfe7b501302f90aaf2a5302845d550b49c8739681feb2"},
+]
hid = [
{file = "hid-1.0.5-py2-none-any.whl", hash = "sha256:11836b877e81ab68cdd3abc44f2e230f0e6146c7e17ac45c185b72e0159fc9c7"},
{file = "hid-1.0.5.tar.gz", hash = "sha256:1e954e7f7ab9b7c9dfc78db59504692c17db3b71249492b976b1525b97dbb0e8"},
]
hjson = [
- {file = "hjson-3.0.2-py3-none-any.whl", hash = "sha256:5546438bf4e1b52bc964c6a47c4ed10fa5fba8a1b264e22efa893e333baad2db"},
- {file = "hjson-3.0.2.tar.gz", hash = "sha256:2838fd7200e5839ea4516ece953f3a19892c41089f0d933ba3f68e596aacfcd5"},
+ {file = "hjson-3.1.0-py3-none-any.whl", hash = "sha256:65713cdcf13214fb554eb8b4ef803419733f4f5e551047c9b711098ab7186b89"},
+ {file = "hjson-3.1.0.tar.gz", hash = "sha256:55af475a27cf83a7969c808399d7bccdec8fb836a07ddbd574587593b9cdcf75"},
]
importlib-resources = [
- {file = "importlib_resources-5.7.1-py3-none-any.whl", hash = "sha256:e447dc01619b1e951286f3929be820029d48c75eb25d265c28b92a16548212b8"},
- {file = "importlib_resources-5.7.1.tar.gz", hash = "sha256:b6062987dfc51f0fcb809187cffbd60f35df7acb4589091f154214af6d0d49d3"},
+ {file = "importlib_resources-5.9.0-py3-none-any.whl", hash = "sha256:f78a8df21a79bcc30cfd400bdc38f314333de7c0fb619763f6b9dabab8268bb7"},
+ {file = "importlib_resources-5.9.0.tar.gz", hash = "sha256:5481e97fb45af8dcf2f798952625591c58fe599d0735d86b10f54de086a61681"},
+]
+iniconfig = [
+ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
+ {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
]
jsonschema = [
- {file = "jsonschema-4.5.1-py3-none-any.whl", hash = "sha256:71b5e39324422543546572954ce71c67728922c104902cb7ce252e522235b33f"},
- {file = "jsonschema-4.5.1.tar.gz", hash = "sha256:7c6d882619340c3347a1bf7315e147e6d3dae439033ae6383d6acb908c101dfc"},
+ {file = "jsonschema-4.14.0-py3-none-any.whl", hash = "sha256:9892b8d630a82990521a9ca630d3446bd316b5ad54dbe981338802787f3e0d2d"},
+ {file = "jsonschema-4.14.0.tar.gz", hash = "sha256:15062f4cc6f591400cd528d2c355f2cfa6a57e44c820dc783aee5e23d36a831f"},
]
log-symbols = [
{file = "log_symbols-0.0.14-py3-none-any.whl", hash = "sha256:4952106ff8b605ab7d5081dd2c7e6ca7374584eff7086f499c06edd1ce56dcca"},
{file = "log_symbols-0.0.14.tar.gz", hash = "sha256:cf0bbc6fe1a8e53f0d174a716bc625c4f87043cc21eb55dd8a740cfe22680556"},
]
mccabe = [
- {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
- {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
+ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
+ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
]
milc = [
{file = "milc-1.6.6-py2.py3-none-any.whl", hash = "sha256:5735022d25bc7aa259139ae680efa2867ce91bab769aa3b2482c63a3158120a5"},
{file = "milc-1.6.6.tar.gz", hash = "sha256:a4a1673718aaceefeb62c1799e48825bc6f4e56bfd8ad4a8e341a7622e6ff000"},
]
nose2 = [
- {file = "nose2-0.11.0-py2.py3-none-any.whl", hash = "sha256:d37e75e3010bb4739fe6045a29d4c633ac3146cb5704ee4e4a9e4abeceb2dee3"},
- {file = "nose2-0.11.0.tar.gz", hash = "sha256:6d208d7d6ec9f9d55c74dac81c9394bc3906dbef81a8ca5420b2b9b7f8e69de9"},
+ {file = "nose2-0.12.0-py2.py3-none-any.whl", hash = "sha256:da7eb5e3cbe2abb693a053e17b4fbefca98ea9ea79fc729b0b0f41e8b4196304"},
+ {file = "nose2-0.12.0.tar.gz", hash = "sha256:956e79b9bd558ee08b6200c05ad2c76465b7e3860c0c0537686089285c320113"},
+]
+packaging = [
+ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
+ {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
+]
+pathspec = [
+ {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"},
+ {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"},
]
pep8-naming = [
- {file = "pep8-naming-0.12.1.tar.gz", hash = "sha256:bb2455947757d162aa4cad55dba4ce029005cd1692f2899a21d51d8630ca7841"},
- {file = "pep8_naming-0.12.1-py2.py3-none-any.whl", hash = "sha256:4a8daeaeb33cfcde779309fc0c9c0a68a3bbe2ad8a8308b763c5068f86eb9f37"},
+ {file = "pep8-naming-0.13.2.tar.gz", hash = "sha256:93eef62f525fd12a6f8c98f4dcc17fa70baae2f37fa1f73bec00e3e44392fa48"},
+ {file = "pep8_naming-0.13.2-py3-none-any.whl", hash = "sha256:59e29e55c478db69cffbe14ab24b5bd2cd615c0413edf790d47d3fb7ba9a4e23"},
]
pillow = [
- {file = "Pillow-9.1.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:42dfefbef90eb67c10c45a73a9bc1599d4dac920f7dfcbf4ec6b80cb620757fe"},
- {file = "Pillow-9.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ffde4c6fabb52891d81606411cbfaf77756e3b561b566efd270b3ed3791fde4e"},
- {file = "Pillow-9.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c857532c719fb30fafabd2371ce9b7031812ff3889d75273827633bca0c4602"},
- {file = "Pillow-9.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:59789a7d06c742e9d13b883d5e3569188c16acb02eeed2510fd3bfdbc1bd1530"},
- {file = "Pillow-9.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d45dbe4b21a9679c3e8b3f7f4f42a45a7d3ddff8a4a16109dff0e1da30a35b2"},
- {file = "Pillow-9.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e9ed59d1b6ee837f4515b9584f3d26cf0388b742a11ecdae0d9237a94505d03a"},
- {file = "Pillow-9.1.1-cp310-cp310-win32.whl", hash = "sha256:b3fe2ff1e1715d4475d7e2c3e8dabd7c025f4410f79513b4ff2de3d51ce0fa9c"},
- {file = "Pillow-9.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:5b650dbbc0969a4e226d98a0b440c2f07a850896aed9266b6fedc0f7e7834108"},
- {file = "Pillow-9.1.1-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:0b4d5ad2cd3a1f0d1df882d926b37dbb2ab6c823ae21d041b46910c8f8cd844b"},
- {file = "Pillow-9.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9370d6744d379f2de5d7fa95cdbd3a4d92f0b0ef29609b4b1687f16bc197063d"},
- {file = "Pillow-9.1.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b761727ed7d593e49671d1827044b942dd2f4caae6e51bab144d4accf8244a84"},
- {file = "Pillow-9.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a66fe50386162df2da701b3722781cbe90ce043e7d53c1fd6bd801bca6b48d4"},
- {file = "Pillow-9.1.1-cp37-cp37m-win32.whl", hash = "sha256:2b291cab8a888658d72b575a03e340509b6b050b62db1f5539dd5cd18fd50578"},
- {file = "Pillow-9.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:1d4331aeb12f6b3791911a6da82de72257a99ad99726ed6b63f481c0184b6fb9"},
- {file = "Pillow-9.1.1-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8844217cdf66eabe39567118f229e275f0727e9195635a15e0e4b9227458daaf"},
- {file = "Pillow-9.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b6617221ff08fbd3b7a811950b5c3f9367f6e941b86259843eab77c8e3d2b56b"},
- {file = "Pillow-9.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20d514c989fa28e73a5adbddd7a171afa5824710d0ab06d4e1234195d2a2e546"},
- {file = "Pillow-9.1.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:088df396b047477dd1bbc7de6e22f58400dae2f21310d9e2ec2933b2ef7dfa4f"},
- {file = "Pillow-9.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53c27bd452e0f1bc4bfed07ceb235663a1df7c74df08e37fd6b03eb89454946a"},
- {file = "Pillow-9.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3f6c1716c473ebd1649663bf3b42702d0d53e27af8b64642be0dd3598c761fb1"},
- {file = "Pillow-9.1.1-cp38-cp38-win32.whl", hash = "sha256:c67db410508b9de9c4694c57ed754b65a460e4812126e87f5052ecf23a011a54"},
- {file = "Pillow-9.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:f054b020c4d7e9786ae0404278ea318768eb123403b18453e28e47cdb7a0a4bf"},
- {file = "Pillow-9.1.1-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:c17770a62a71718a74b7548098a74cd6880be16bcfff5f937f900ead90ca8e92"},
- {file = "Pillow-9.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3f6a6034140e9e17e9abc175fc7a266a6e63652028e157750bd98e804a8ed9a"},
- {file = "Pillow-9.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f372d0f08eff1475ef426344efe42493f71f377ec52237bf153c5713de987251"},
- {file = "Pillow-9.1.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09e67ef6e430f90caa093528bd758b0616f8165e57ed8d8ce014ae32df6a831d"},
- {file = "Pillow-9.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66daa16952d5bf0c9d5389c5e9df562922a59bd16d77e2a276e575d32e38afd1"},
- {file = "Pillow-9.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d78ca526a559fb84faaaf84da2dd4addef5edb109db8b81677c0bb1aad342601"},
- {file = "Pillow-9.1.1-cp39-cp39-win32.whl", hash = "sha256:55e74faf8359ddda43fee01bffbc5bd99d96ea508d8a08c527099e84eb708f45"},
- {file = "Pillow-9.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:7c150dbbb4a94ea4825d1e5f2c5501af7141ea95825fadd7829f9b11c97aaf6c"},
- {file = "Pillow-9.1.1-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:769a7f131a2f43752455cc72f9f7a093c3ff3856bf976c5fb53a59d0ccc704f6"},
- {file = "Pillow-9.1.1-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:488f3383cf5159907d48d32957ac6f9ea85ccdcc296c14eca1a4e396ecc32098"},
- {file = "Pillow-9.1.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b525a356680022b0af53385944026d3486fc8c013638cf9900eb87c866afb4c"},
- {file = "Pillow-9.1.1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6e760cf01259a1c0a50f3c845f9cad1af30577fd8b670339b1659c6d0e7a41dd"},
- {file = "Pillow-9.1.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4165205a13b16a29e1ac57efeee6be2dfd5b5408122d59ef2145bc3239fa340"},
- {file = "Pillow-9.1.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:937a54e5694684f74dcbf6e24cc453bfc5b33940216ddd8f4cd8f0f79167f765"},
- {file = "Pillow-9.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:baf3be0b9446a4083cc0c5bb9f9c964034be5374b5bc09757be89f5d2fa247b8"},
- {file = "Pillow-9.1.1.tar.gz", hash = "sha256:7502539939b53d7565f3d11d87c78e7ec900d3c72945d4ee0e2f250d598309a0"},
+ {file = "Pillow-9.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a9c9bc489f8ab30906d7a85afac4b4944a572a7432e00698a7239f44a44e6efb"},
+ {file = "Pillow-9.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:510cef4a3f401c246cfd8227b300828715dd055463cdca6176c2e4036df8bd4f"},
+ {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7888310f6214f19ab2b6df90f3f06afa3df7ef7355fc025e78a3044737fab1f5"},
+ {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831e648102c82f152e14c1a0938689dbb22480c548c8d4b8b248b3e50967b88c"},
+ {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cc1d2451e8a3b4bfdb9caf745b58e6c7a77d2e469159b0d527a4554d73694d1"},
+ {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:136659638f61a251e8ed3b331fc6ccd124590eeff539de57c5f80ef3a9594e58"},
+ {file = "Pillow-9.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:6e8c66f70fb539301e064f6478d7453e820d8a2c631da948a23384865cd95544"},
+ {file = "Pillow-9.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:37ff6b522a26d0538b753f0b4e8e164fdada12db6c6f00f62145d732d8a3152e"},
+ {file = "Pillow-9.2.0-cp310-cp310-win32.whl", hash = "sha256:c79698d4cd9318d9481d89a77e2d3fcaeff5486be641e60a4b49f3d2ecca4e28"},
+ {file = "Pillow-9.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:254164c57bab4b459f14c64e93df11eff5ded575192c294a0c49270f22c5d93d"},
+ {file = "Pillow-9.2.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:408673ed75594933714482501fe97e055a42996087eeca7e5d06e33218d05aa8"},
+ {file = "Pillow-9.2.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:727dd1389bc5cb9827cbd1f9d40d2c2a1a0c9b32dd2261db522d22a604a6eec9"},
+ {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50dff9cc21826d2977ef2d2a205504034e3a4563ca6f5db739b0d1026658e004"},
+ {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb6259196a589123d755380b65127ddc60f4c64b21fc3bb46ce3a6ea663659b0"},
+ {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b0554af24df2bf96618dac71ddada02420f946be943b181108cac55a7a2dcd4"},
+ {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:15928f824870535c85dbf949c09d6ae7d3d6ac2d6efec80f3227f73eefba741c"},
+ {file = "Pillow-9.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:bdd0de2d64688ecae88dd8935012c4a72681e5df632af903a1dca8c5e7aa871a"},
+ {file = "Pillow-9.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5b87da55a08acb586bad5c3aa3b86505f559b84f39035b233d5bf844b0834b1"},
+ {file = "Pillow-9.2.0-cp311-cp311-win32.whl", hash = "sha256:b6d5e92df2b77665e07ddb2e4dbd6d644b78e4c0d2e9272a852627cdba0d75cf"},
+ {file = "Pillow-9.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:6bf088c1ce160f50ea40764f825ec9b72ed9da25346216b91361eef8ad1b8f8c"},
+ {file = "Pillow-9.2.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:2c58b24e3a63efd22554c676d81b0e57f80e0a7d3a5874a7e14ce90ec40d3069"},
+ {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eef7592281f7c174d3d6cbfbb7ee5984a671fcd77e3fc78e973d492e9bf0eb3f"},
+ {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dcd7b9c7139dc8258d164b55696ecd16c04607f1cc33ba7af86613881ffe4ac8"},
+ {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a138441e95562b3c078746a22f8fca8ff1c22c014f856278bdbdd89ca36cff1b"},
+ {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:93689632949aff41199090eff5474f3990b6823404e45d66a5d44304e9cdc467"},
+ {file = "Pillow-9.2.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:f3fac744f9b540148fa7715a435d2283b71f68bfb6d4aae24482a890aed18b59"},
+ {file = "Pillow-9.2.0-cp37-cp37m-win32.whl", hash = "sha256:fa768eff5f9f958270b081bb33581b4b569faabf8774726b283edb06617101dc"},
+ {file = "Pillow-9.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:69bd1a15d7ba3694631e00df8de65a8cb031911ca11f44929c97fe05eb9b6c1d"},
+ {file = "Pillow-9.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:030e3460861488e249731c3e7ab59b07c7853838ff3b8e16aac9561bb345da14"},
+ {file = "Pillow-9.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:74a04183e6e64930b667d321524e3c5361094bb4af9083db5c301db64cd341f3"},
+ {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d33a11f601213dcd5718109c09a52c2a1c893e7461f0be2d6febc2879ec2402"},
+ {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fd6f5e3c0e4697fa7eb45b6e93996299f3feee73a3175fa451f49a74d092b9f"},
+ {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a647c0d4478b995c5e54615a2e5360ccedd2f85e70ab57fbe817ca613d5e63b8"},
+ {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:4134d3f1ba5f15027ff5c04296f13328fecd46921424084516bdb1b2548e66ff"},
+ {file = "Pillow-9.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:bc431b065722a5ad1dfb4df354fb9333b7a582a5ee39a90e6ffff688d72f27a1"},
+ {file = "Pillow-9.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1536ad017a9f789430fb6b8be8bf99d2f214c76502becc196c6f2d9a75b01b76"},
+ {file = "Pillow-9.2.0-cp38-cp38-win32.whl", hash = "sha256:2ad0d4df0f5ef2247e27fc790d5c9b5a0af8ade9ba340db4a73bb1a4a3e5fb4f"},
+ {file = "Pillow-9.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:ec52c351b35ca269cb1f8069d610fc45c5bd38c3e91f9ab4cbbf0aebc136d9c8"},
+ {file = "Pillow-9.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ed2c4ef2451de908c90436d6e8092e13a43992f1860275b4d8082667fbb2ffc"},
+ {file = "Pillow-9.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ad2f835e0ad81d1689f1b7e3fbac7b01bb8777d5a985c8962bedee0cc6d43da"},
+ {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea98f633d45f7e815db648fd7ff0f19e328302ac36427343e4432c84432e7ff4"},
+ {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7761afe0126d046974a01e030ae7529ed0ca6a196de3ec6937c11df0df1bc91c"},
+ {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a54614049a18a2d6fe156e68e188da02a046a4a93cf24f373bffd977e943421"},
+ {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:5aed7dde98403cd91d86a1115c78d8145c83078e864c1de1064f52e6feb61b20"},
+ {file = "Pillow-9.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:13b725463f32df1bfeacbf3dd197fb358ae8ebcd8c5548faa75126ea425ccb60"},
+ {file = "Pillow-9.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:808add66ea764ed97d44dda1ac4f2cfec4c1867d9efb16a33d158be79f32b8a4"},
+ {file = "Pillow-9.2.0-cp39-cp39-win32.whl", hash = "sha256:337a74fd2f291c607d220c793a8135273c4c2ab001b03e601c36766005f36885"},
+ {file = "Pillow-9.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:fac2d65901fb0fdf20363fbd345c01958a742f2dc62a8dd4495af66e3ff502a4"},
+ {file = "Pillow-9.2.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ad2277b185ebce47a63f4dc6302e30f05762b688f8dc3de55dbae4651872cdf3"},
+ {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c7b502bc34f6e32ba022b4a209638f9e097d7a9098104ae420eb8186217ebbb"},
+ {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d1f14f5f691f55e1b47f824ca4fdcb4b19b4323fe43cc7bb105988cad7496be"},
+ {file = "Pillow-9.2.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:dfe4c1fedfde4e2fbc009d5ad420647f7730d719786388b7de0999bf32c0d9fd"},
+ {file = "Pillow-9.2.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:f07f1f00e22b231dd3d9b9208692042e29792d6bd4f6639415d2f23158a80013"},
+ {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1802f34298f5ba11d55e5bb09c31997dc0c6aed919658dfdf0198a2fe75d5490"},
+ {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17d4cafe22f050b46d983b71c707162d63d796a1235cdf8b9d7a112e97b15bac"},
+ {file = "Pillow-9.2.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96b5e6874431df16aee0c1ba237574cb6dff1dcb173798faa6a9d8b399a05d0e"},
+ {file = "Pillow-9.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:0030fdbd926fb85844b8b92e2f9449ba89607231d3dd597a21ae72dc7fe26927"},
+ {file = "Pillow-9.2.0.tar.gz", hash = "sha256:75e636fd3e0fb872693f23ccb8a5ff2cd578801251f3a4f6854c6a5d437d3c04"},
+]
+pkgutil-resolve-name = [
+ {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"},
+ {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"},
+]
+pluggy = [
+ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
+ {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
+]
+poetry-core = [
+ {file = "poetry-core-1.0.8.tar.gz", hash = "sha256:951fc7c1f8d710a94cb49019ee3742125039fc659675912ea614ac2aa405b118"},
+ {file = "poetry_core-1.0.8-py2.py3-none-any.whl", hash = "sha256:54b0fab6f7b313886e547a52f8bf52b8cf43e65b2633c65117f8755289061924"},
+]
+py = [
+ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
+ {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
]
pycodestyle = [
- {file = "pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"},
- {file = "pycodestyle-2.8.0.tar.gz", hash = "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f"},
+ {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"},
+ {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"},
]
pyflakes = [
- {file = "pyflakes-2.4.0-py2.py3-none-any.whl", hash = "sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e"},
- {file = "pyflakes-2.4.0.tar.gz", hash = "sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c"},
+ {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"},
+ {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"},
]
pygments = [
- {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"},
- {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"},
+ {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"},
+ {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"},
+]
+pyparsing = [
+ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"},
+ {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
]
pyrsistent = [
{file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"},
@@ -512,17 +728,25 @@ pyrsistent = [
{file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"},
{file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"},
]
+pyserial = [
+ {file = "pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0"},
+ {file = "pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb"},
+]
+pytest = [
+ {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"},
+ {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"},
+]
pyusb = [
{file = "pyusb-1.2.1-py3-none-any.whl", hash = "sha256:2b4c7cb86dbadf044dfb9d3a4ff69fd217013dbe78a792177a3feb172449ea36"},
{file = "pyusb-1.2.1.tar.gz", hash = "sha256:a4cc7404a203144754164b8b40994e2849fde1cfff06b08492f12fff9d9de7b9"},
]
qmk = [
- {file = "qmk-1.1.0-py2.py3-none-any.whl", hash = "sha256:af74c508d2113389781f2c3d83115acdccd85590bc12e31eb66a4cbd4eb8a166"},
- {file = "qmk-1.1.0.tar.gz", hash = "sha256:771577c9e68eb7fe08969bab36aeb420713a525062dce52a06eda40da8cda5e1"},
+ {file = "qmk-1.1.1-py2.py3-none-any.whl", hash = "sha256:8694300678d9be1e594a500e82bfc9fb08a8ac0983b25fcb663ddd72b4861d97"},
+ {file = "qmk-1.1.1.tar.gz", hash = "sha256:dd028e09ebcd61f8bdf8cb82929dfafc0e007d97a5a3803b45819b4641773269"},
]
-qmk-dotty-dict = [
- {file = "qmk_dotty_dict-1.3.0.post1-py3-none-any.whl", hash = "sha256:a9cb7fc3ff9631190fee0ecac14986a0ac7b4b6892347dc9d7486a4c4ea24492"},
- {file = "qmk_dotty_dict-1.3.0.post1.tar.gz", hash = "sha256:3b611e393660bfaa6835c68e94784bae80fe07b8490978b5ecab03a0d2fc7ea2"},
+setuptools-scm = [
+ {file = "setuptools_scm-7.0.5-py3-none-any.whl", hash = "sha256:7930f720905e03ccd1e1d821db521bff7ec2ac9cf0ceb6552dd73d24a45d3b02"},
+ {file = "setuptools_scm-7.0.5.tar.gz", hash = "sha256:031e13af771d6f892b941adb6ea04545bbf91ebc5ce68c78aaf3fff6e1fb4844"},
]
six = [
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
@@ -535,11 +759,19 @@ spinners = [
termcolor = [
{file = "termcolor-1.1.0.tar.gz", hash = "sha256:1d6d69ce66211143803fbc56652b41d73b4a400a2891d7bf7a1cdf4c02de613b"},
]
+tomli = [
+ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
+ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
+]
+typing-extensions = [
+ {file = "typing_extensions-4.3.0-py3-none-any.whl", hash = "sha256:25642c956049920a5aa49edcdd6ab1e06d7e5d467fc00e0506c44ac86fbfca02"},
+ {file = "typing_extensions-4.3.0.tar.gz", hash = "sha256:e6d2677a32f47fc7eb2795db1dd15c1f34eff616bcaf2cfb5e997f854fa1c4a6"},
+]
yapf = [
{file = "yapf-0.32.0-py2.py3-none-any.whl", hash = "sha256:8fea849025584e486fd06d6ba2bed717f396080fd3cc236ba10cb97c4c51cf32"},
{file = "yapf-0.32.0.tar.gz", hash = "sha256:a3f5085d37ef7e3e004c4ba9f9b3e40c54ff1901cd111f05145ae313a7c67d1b"},
]
zipp = [
- {file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"},
- {file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"},
+ {file = "zipp-3.8.1-py3-none-any.whl", hash = "sha256:47c40d7fe183a6f21403a199b3e4192cca5774656965b0a4988ad2f8feb5f009"},
+ {file = "zipp-3.8.1.tar.gz", hash = "sha256:05b45f1ee8f807d0cc928485ca40a07cb491cf092ff587c0df9cb1fd154848d2"},
]
diff --git a/util/nix/pyproject.toml b/util/nix/pyproject.toml
index f06b977999..ff484dbe79 100644
--- a/util/nix/pyproject.toml
+++ b/util/nix/pyproject.toml
@@ -12,13 +12,14 @@ python = "^3.8"
appdirs = "*"
argcomplete = "*"
colorama = "*"
+dotty-dict = "*"
hid = "*"
hjson = "*"
jsonschema = ">=4"
milc = ">=1.4.2"
Pygments = "*"
+pyserial = "*"
pyusb = "*"
-qmk-dotty-dict = "*"
pillow = "*"
# This dependency is not mentioned in requirements.txt (QMK CLI is not a
@@ -33,6 +34,28 @@ pep8-naming = "*"
pyflakes = "*"
yapf = "*"
+# These dependencies are required by the jsonschema >= 4.11.0 build system, but
+# are not detected automatically; they are also not present in the used Nixpkgs
+# snapshot, so need to be obtained through Poetry.
+hatchling = "*"
+hatch-vcs = "*"
+hatch-fancy-pypi-readme = "*"
+
+# The `pytest` module in the used Nixpkgs snapshot has an upper bound on the
+# `pluggy` dependency, which conflicts with the dependency of the `hatchling`
+# module; upgrading the `pytest` module fixes the conflict.
+pytest = "*"
+
+# Building the `tomli` module, which is in the dependency tree of `hatchling`,
+# requires a newer `flit-core` module than found in the used Nixpkgs snapshot.
+flit-core = "*"
+
+# Building `dotty-dict` >= 1.3.1 requires the `poetry-core` module, and the
+# version of that module provided by the used Nixpkgs snapshot cannot be built
+# on Darwin due to the regex compatibility issue in the old Nixpkgs code
+# (https://github.com/NixOS/nix/issues/4758).
+poetry-core = "*"
+
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
diff --git a/util/nix/sources.json b/util/nix/sources.json
index ee4bd270e8..8cdb9e4996 100644
--- a/util/nix/sources.json
+++ b/util/nix/sources.json
@@ -29,10 +29,10 @@
"homepage": "",
"owner": "nix-community",
"repo": "poetry2nix",
- "rev": "88ffae91c605aaafc2797f4096ca9f065152796a",
- "sha256": "0iq9jlzz92r3ax1ymg00cn4s8c1wi3jgh1693abyyn0baq7gixrb",
+ "rev": "11c0df8e348c0f169cd73a2e3d63f65c92baf666",
+ "sha256": "0i3wbp2p0x6bpj07sqpvkbx4lvjm0irvpmv2bjqx8k02mpjm7dg2",
"type": "tarball",
- "url": "https://github.com/nix-community/poetry2nix/archive/88ffae91c605aaafc2797f4096ca9f065152796a.tar.gz",
+ "url": "https://github.com/nix-community/poetry2nix/archive/11c0df8e348c0f169cd73a2e3d63f65c92baf666.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
}
}
diff --git a/util/size_regression.sh b/util/size_regression.sh
index 41ad5b68a3..6da2d360bb 100755
--- a/util/size_regression.sh
+++ b/util/size_regression.sh
@@ -59,6 +59,14 @@ done
shift $((OPTIND-1))
keyboard_target=$1
+# Helper for resetting submodule existence
+fixup_submodules() {
+ [ -e lib/ugfx ] && rm -rf lib/ugfx
+ [ -e lib/pico-sdk ] && rm -rf lib/pico-sdk
+ [ -e lib/chibios-contrib/ext/mcux-sdk ] && rm -rf lib/chibios-contrib/ext/mcux-sdk
+ make git-submodule
+}
+
last_size=0
last_line=""
function build_executor() {
@@ -68,6 +76,7 @@ function build_executor() {
make distclean >/dev/null 2>&1
git checkout -f $revision >/dev/null 2>&1 || { echo "Failed to check out revision ${revision}" >&2 ; exit 1 ; }
+ fixup_submodules >/dev/null 2>&1
make -j${job_count} $keyboard_target >/dev/null 2>&1 || true
file_size=$(arm-none-eabi-size .build/*.elf 2>/dev/null | awk '/elf/ {print $1}' 2>/dev/null || true)
diff --git a/util/udev/50-qmk.rules b/util/udev/50-qmk.rules
index 57806f9df0..86f1dc9004 100644
--- a/util/udev/50-qmk.rules
+++ b/util/udev/50-qmk.rules
@@ -28,6 +28,9 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", TAG+="uacc
# USBAspLoader
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", TAG+="uaccess"
+# USBtinyISP
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="1782", ATTRS{idProduct}=="0c9f", TAG+="uaccess"
+
# ModemManager should ignore the following devices
# Atmel SAM-BA (Massdrop)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
@@ -72,3 +75,9 @@ KERNEL=="hidraw*", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl"
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2067", TAG+="uaccess"
## PJRC's HalfKay
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="0478", TAG+="uaccess"
+
+# APM32 DFU
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="314b", ATTRS{idProduct}=="0106", TAG+="uaccess"
+
+# GD32V DFU
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="28e9", ATTRS{idProduct}=="0189", TAG+="uaccess"
diff --git a/util/uf2conv.py b/util/uf2conv.py
index df94b5ac99..7f5645414a 100755
--- a/util/uf2conv.py
+++ b/util/uf2conv.py
@@ -219,6 +219,9 @@ def get_drives():
tmp = rootpath + "/" + os.environ["USER"]
if os.path.isdir(tmp):
rootpath = tmp
+ tmp = "/run" + rootpath + "/" + os.environ["USER"]
+ if os.path.isdir(tmp):
+ rootpath = tmp
for d in os.listdir(rootpath):
drives.append(os.path.join(rootpath, d))
diff --git a/util/update_chibios_mirror.sh b/util/update_chibios_mirror.sh
index e6666c55c9..bd4c5c1529 100755
--- a/util/update_chibios_mirror.sh
+++ b/util/update_chibios_mirror.sh
@@ -7,7 +7,7 @@
chibios_branches="trunk stable_20.3.x stable_21.11.x"
# The ChibiOS tags to mirror
-chibios_tags="ver20.3.1 ver20.3.2 ver20.3.3 ver20.3.4 ver21.11.1"
+chibios_tags="ver20.3.1 ver20.3.2 ver20.3.3 ver20.3.4 ver21.11.1 ver21.11.2"
# The ChibiOS-Contrib branches to mirror
contrib_branches="chibios-20.3.x chibios-21.11.x"